home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
archives
/
ibm370.tar.gz
/
ibm370.tar
/
ikcboo.asm
< prev
next >
Wrap
Assembly Source File
|
1992-09-30
|
11KB
|
131 lines
KBCM TITLE 'KERMBOOT - BOOTSTRAP FOR LOADING KERMIT-CMS' 00000010
*********************************************************************** 00000020
* KERMBOOT VERSION 2 - J.F.CHANDLER, 1987 SEPTEMBER * 00000030
* * 00000040
* KERMBOOT SHOULD BE GENMOD'ED AS A SMALL USER-AREA MODULE * 00000050
* NAMED 'KERMIT'. IT WILL STEAL FREE STORAGE AND LOAD FROM * 00000060
* 'KERMIT TEXT' INTO THAT AREA AND ALSO COPY A STUB FROM THE * 00000070
* BOOT ROUTINE. THE STUB WILL CALL KERMIT AND, UPON RETURN, * 00000080
* RELEASE THE FREE STORAGE AND RETURN TO THE SYSTEM. * 00000090
* * 00000100
* REGISTERS USED: * 00000110
* 3 = SAVED FREELOWE ON ENTRY * 00000120
* 4 = FREELOWE SET AFTER LOADING * 00000130
* 5 = SAVED MAINHIGH * 00000140
* 6 -> START OF STORAGE * 00000150
* 7 = SAVED SYSTEM RETURN ADR * 00000160
* 8 -> START OF BOOT PROGRAM (X'20000') * 00000170
* 9 = SAVED LOCCNT * 00000180
* 10 = SAVED REGISTER 1 ON ENTRY * 00000190
* 12 = START OF KERMIT PROGRAM * 00000200
* 13 -> SYSTEM SAVE AREA * 00000210
*********************************************************************** 00000220
SPACE 00000230
PRINT NOGEN 00000240
NUCON 00000250
USING NUCON,0 00000260
KERMBOOT START X'20000' 00000270
LR 8,15 00000280
USING KERMBOOT,8 00000290
LR 10,1 SAVE REGS 00000300
LR 7,14 00000310
XC EPL,EPL CLEAR PTR TO EXT. PLIST 00000320
CLM 10,8,=X'01' 00000330
BL NOEPL 00000340
CLM 10,8,=X'0B' 00000350
BH NOEPL 00000360
LR 1,0 00000370
MVC EPL(16),0(1) COPY EPL PTRS 00000380
NOEPL MVC SVLBS,TXTLIBS SAVE LIBRARY NAMES 00000390
ICM 0,15,TXTDIRC LOADED INTO MEMORY? 00000400
BNZ SAVPTRS YES, DON'T MESS WITH THEM 00000410
DMSKEY NUCLEUS 00000420
MVI TXTLIBS,X'FF' CLEAR ALL NAMES 00000430
MVC TXTLIBS+1(63),TXTLIBS 00000440
DMSKEY RESET 00000450
SAVPTRS L 9,LOCCNT 00000460
L 5,MAINHIGH 00000470
L 3,FREELOWE SAVE THIS PTR FOR RESTORING 00000480
LR 12,3 END OF STORAGE 00000490
S 12,EXTRA ROOM FOR LOADER 00000500
S 12,KSIZ LENGTH OF PROGRAM 00000510
LR 4,12 SAVE 00000520
SH 4,=H'4096' 00000530
CR 4,5 ROOM ENOUGH? 00000540
BL NOSTOR TOO BAD 00000550
LR 6,4 SAVE START OF STUB 00000560
ICM 1,15,EPL GET START OF COMMAND TEXT 00000570
BZ NOEPLCOP NONE 00000580
LA 15,BLENGTH(6) START OF AREA FOR COMMAND TEXT 00000590
MVC 0(256,15),0(1) COPY TEXT 00000600
SR 15,1 GET OFFSET BETWEEN AREAS 00000610
LM 0,2,EPL 00000620
AR 0,15 APPLY OFFSET 00000630
AR 1,15 00000640
AR 2,15 00000650
STM 0,2,EPL 00000660
NOEPLCOP ST 12,ORG START OF KERMIT 00000670
UNPK LOADORG(7),ORG+1(4) 00000680
TR LOADORG(6),HEXTAB 00000690
MVI LOADORG+6,C' ' 00000700
* WRTERM KNAME,LLOAD 00000710
LA 1,LOAD 00000720
SVC 202 GET KERMIT INTO MEMORY 00000730
DC AL4(LDRFAIL) 00000740
STM 1,12,SAVREG SAVE FOR CLEANUP 00000750
DMSKEY NUCLEUS 00000760
MVC TXTLIBS(64),SVLBS RESTORE TXTLIB NAMES 00000770
ST 4,FREELOWE USE THIS PTR FOR DURATION 00000780
ST 9,LOCCNT RESET LOADER ADR TO ORIGINAL 00000790
ST 5,MAINHIGH RESET PROGRAM AREA LIMIT 00000800
ST 8,STRTADDR RESET PROGRAM ENTRY POINT 00000810
DMSKEY RESET 00000820
MVC 0(BLENGTH,6),STUB COPY CODE INTO STUB 00000830
LR 15,12 SET UP TO CALL PROGRAM 00000840
LR 1,10 RECOVER ORIGINAL PARM LIST 00000850
LA 0,EPL 00000860
BR 6 BRANCH INTO COPY OF STUB 00000870
* 00000880
NOSTOR LINEDIT TEXT='NOT ENOUGH FREE STORAGE',DOT=NO 00000890
LA 15,1 GIVE UP 00000900
B RETSYS 00000910
* 00000920
LDRFAIL DMSEXS MVC,TXTLIBS(64),SVLBS RESTORE TXTLIB NAMES 00000930
B RETSYS AND RETURN WITH ERROR CODE 00000940
* 00000950
* CODE COPIED INTO FREE STORAGE 00000960
USING STUB,6 00000970
DS 0D 00000980
STUB BALR 14,15 CALL PROGRAM 00000990
USING *,14 00001000
LM 1,12,SAVREG JUST IN CASE 00001010
DROP 14 00001020
* 00001030
* NOW WE OUGHT TO RE-LOAD THE BOOTSTRAP MODULE AND BRANCH BACK TO 00001040
* IT, EXCEPT THAT WE ARE EXECUTING IN STOLEN STORAGE ANYWAY. 00001050
* ALL THAT'S REALLY NEEDED IS TO RESET FREELOWE AND RETURN. 00001060
* 00001070
CLEANUP C 4,FREELOWE HOPE THIS IS BACK TO WHERE WE LEFT IT 00001080
BNE RETSYS 00001090
DMSEXS ST,3,FREELOWE GOOD, DESTROY EVIDENCE 00001100
RETSYS LR 14,7 00001110
BR 14 RETURN TO SYSTEM 00001120
SAVREG DS 12F SAVE AREA FOR STUB 00001130
EPL DS 4F EXTENDED PARAMETER LIST 00001140
DS 0D 00001150
BLENGTH EQU *-STUB 00001160
* 00001170
SVLBS DS CL64 SAVED TXTLIB NAMES 00001180
ORG DS F SAVED START OF KERMIT 00001190
KSIZ DC XL4'7000' ROOM ALLOWED FOR KERMIT 00001200
EXTRA DC XL4'3000' EXTRA FOR SYSTEM 00001210
LOAD DC CL8'LOAD' 00001220
KNAME DC CL8'KERMIT',CL8'(',CL8'ORIGIN' 00001230
LOADORG DC CL8' ' 00001240
LLOAD EQU *-KNAME 00001250
DC CL8'CLEAR',CL8'NOMAP',8X'FF' 00001260
* 00001270
HEXTAB EQU *-240 00001280
DC C'0123456789ABCDEF' 00001290
END KERMBOOT 00001300