home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / ibm370 / ikcboo.asm < prev    next >
Assembly Source File  |  2020-01-01  |  11KB  |  131 lines

  1. KBCM     TITLE 'KERMBOOT - BOOTSTRAP FOR LOADING KERMIT-CMS'            00000010
  2. *********************************************************************** 00000020
  3. *    KERMBOOT VERSION 2 - J.F.CHANDLER, 1987 SEPTEMBER                * 00000030
  4. *                                                                     * 00000040
  5. *    KERMBOOT SHOULD BE GENMOD'ED AS A SMALL USER-AREA MODULE         * 00000050
  6. *    NAMED 'KERMIT'.  IT WILL STEAL FREE STORAGE AND LOAD FROM        * 00000060
  7. *    'KERMIT TEXT' INTO THAT AREA AND ALSO COPY A STUB FROM THE       * 00000070
  8. *    BOOT ROUTINE.  THE STUB WILL CALL KERMIT AND, UPON RETURN,       * 00000080
  9. *    RELEASE THE FREE STORAGE AND RETURN TO THE SYSTEM.               * 00000090
  10. *                                                                     * 00000100
  11. *  REGISTERS USED:                                                    * 00000110
  12. *    3 =  SAVED FREELOWE ON ENTRY                                     * 00000120
  13. *    4 =  FREELOWE SET AFTER LOADING                                  * 00000130
  14. *    5 =  SAVED MAINHIGH                                              * 00000140
  15. *    6 -> START OF STORAGE                                            * 00000150
  16. *    7 =  SAVED SYSTEM RETURN ADR                                     * 00000160
  17. *    8 -> START OF BOOT PROGRAM (X'20000')                            * 00000170
  18. *    9 =  SAVED LOCCNT                                                * 00000180
  19. *   10 =  SAVED REGISTER 1 ON ENTRY                                   * 00000190
  20. *   12 =  START OF KERMIT PROGRAM                                     * 00000200
  21. *   13 -> SYSTEM SAVE AREA                                            * 00000210
  22. *********************************************************************** 00000220
  23.          SPACE                                                          00000230
  24.          PRINT NOGEN                                                    00000240
  25.          NUCON                                                          00000250
  26.          USING NUCON,0                                                  00000260
  27. KERMBOOT START X'20000'                                                 00000270
  28.          LR    8,15                                                     00000280
  29.          USING KERMBOOT,8                                               00000290
  30.          LR    10,1          SAVE REGS                                  00000300
  31.          LR    7,14                                                     00000310
  32.          XC    EPL,EPL       CLEAR PTR TO EXT. PLIST                    00000320
  33.          CLM   10,8,=X'01'                                              00000330
  34.          BL    NOEPL                                                    00000340
  35.          CLM   10,8,=X'0B'                                              00000350
  36.          BH    NOEPL                                                    00000360
  37.          LR    1,0                                                      00000370
  38.          MVC   EPL(16),0(1)  COPY EPL PTRS                              00000380
  39. NOEPL    MVC   SVLBS,TXTLIBS SAVE LIBRARY NAMES                         00000390
  40.          ICM   0,15,TXTDIRC  LOADED INTO MEMORY?                        00000400
  41.          BNZ   SAVPTRS       YES, DON'T MESS WITH THEM                  00000410
  42.          DMSKEY NUCLEUS                                                 00000420
  43.          MVI   TXTLIBS,X'FF' CLEAR ALL NAMES                            00000430
  44.          MVC   TXTLIBS+1(63),TXTLIBS                                    00000440
  45.          DMSKEY RESET                                                   00000450
  46. SAVPTRS  L     9,LOCCNT                                                 00000460
  47.          L     5,MAINHIGH                                               00000470
  48.          L     3,FREELOWE    SAVE THIS PTR FOR RESTORING                00000480
  49.          LR    12,3          END OF STORAGE                             00000490
  50.          S     12,EXTRA      ROOM FOR LOADER                            00000500
  51.          S     12,KSIZ       LENGTH OF PROGRAM                          00000510
  52.          LR    4,12          SAVE                                       00000520
  53.          SH    4,=H'4096'                                               00000530
  54.          CR    4,5           ROOM ENOUGH?                               00000540
  55.          BL    NOSTOR        TOO BAD                                    00000550
  56.          LR    6,4           SAVE START OF STUB                         00000560
  57.          ICM   1,15,EPL      GET START OF COMMAND TEXT                  00000570
  58.          BZ    NOEPLCOP      NONE                                       00000580
  59.          LA    15,BLENGTH(6) START OF AREA FOR COMMAND TEXT             00000590
  60.          MVC   0(256,15),0(1) COPY TEXT                                 00000600
  61.          SR    15,1          GET OFFSET BETWEEN AREAS                   00000610
  62.          LM    0,2,EPL                                                  00000620
  63.          AR    0,15          APPLY OFFSET                               00000630
  64.          AR    1,15                                                     00000640
  65.          AR    2,15                                                     00000650
  66.          STM   0,2,EPL                                                  00000660
  67. NOEPLCOP ST    12,ORG        START OF KERMIT                            00000670
  68.          UNPK  LOADORG(7),ORG+1(4)                                      00000680
  69.          TR    LOADORG(6),HEXTAB                                        00000690
  70.          MVI   LOADORG+6,C' '                                           00000700
  71. *        WRTERM KNAME,LLOAD                                             00000710
  72.          LA    1,LOAD                                                   00000720
  73.          SVC   202           GET KERMIT INTO MEMORY                     00000730
  74.          DC    AL4(LDRFAIL)                                             00000740
  75.          STM   1,12,SAVREG   SAVE FOR CLEANUP                           00000750
  76.          DMSKEY NUCLEUS                                                 00000760
  77.          MVC   TXTLIBS(64),SVLBS RESTORE TXTLIB NAMES                   00000770
  78.          ST    4,FREELOWE    USE THIS PTR FOR DURATION                  00000780
  79.          ST    9,LOCCNT      RESET LOADER ADR TO ORIGINAL               00000790
  80.          ST    5,MAINHIGH    RESET PROGRAM AREA LIMIT                   00000800
  81.          ST    8,STRTADDR    RESET PROGRAM ENTRY POINT                  00000810
  82.          DMSKEY RESET                                                   00000820
  83.          MVC   0(BLENGTH,6),STUB  COPY CODE INTO STUB                   00000830
  84.          LR    15,12         SET UP TO CALL PROGRAM                     00000840
  85.          LR    1,10          RECOVER ORIGINAL PARM LIST                 00000850
  86.          LA    0,EPL                                                    00000860
  87.          BR    6             BRANCH INTO COPY OF STUB                   00000870
  88. *                                                                       00000880
  89. NOSTOR   LINEDIT TEXT='NOT ENOUGH FREE STORAGE',DOT=NO                  00000890
  90.          LA    15,1          GIVE UP                                    00000900
  91.          B     RETSYS                                                   00000910
  92. *                                                                       00000920
  93. LDRFAIL  DMSEXS MVC,TXTLIBS(64),SVLBS RESTORE TXTLIB NAMES              00000930
  94.          B     RETSYS        AND RETURN WITH ERROR CODE                 00000940
  95. *                                                                       00000950
  96. *          CODE COPIED INTO FREE STORAGE                                00000960
  97.          USING STUB,6                                                   00000970
  98.          DS    0D                                                       00000980
  99. STUB     BALR  14,15         CALL PROGRAM                               00000990
  100.          USING *,14                                                     00001000
  101.          LM    1,12,SAVREG   JUST IN CASE                               00001010
  102.          DROP  14                                                       00001020
  103. *                                                                       00001030
  104. *   NOW WE OUGHT TO RE-LOAD THE BOOTSTRAP MODULE AND BRANCH BACK TO     00001040
  105. *   IT, EXCEPT THAT WE ARE EXECUTING IN STOLEN STORAGE ANYWAY.          00001050
  106. *   ALL THAT'S REALLY NEEDED IS TO RESET FREELOWE AND RETURN.           00001060
  107. *                                                                       00001070
  108. CLEANUP  C     4,FREELOWE    HOPE THIS IS BACK TO WHERE WE LEFT IT      00001080
  109.          BNE   RETSYS                                                   00001090
  110.          DMSEXS ST,3,FREELOWE    GOOD, DESTROY EVIDENCE                 00001100
  111. RETSYS   LR    14,7                                                     00001110
  112.          BR    14            RETURN TO SYSTEM                           00001120
  113. SAVREG   DS    12F           SAVE AREA FOR STUB                         00001130
  114. EPL      DS    4F            EXTENDED PARAMETER LIST                    00001140
  115.          DS    0D                                                       00001150
  116. BLENGTH  EQU   *-STUB                                                   00001160
  117. *                                                                       00001170
  118. SVLBS    DS    CL64          SAVED TXTLIB NAMES                         00001180
  119. ORG      DS    F             SAVED START OF KERMIT                      00001190
  120. KSIZ     DC    XL4'7000'     ROOM ALLOWED FOR KERMIT                    00001200
  121. EXTRA    DC    XL4'3000'     EXTRA FOR SYSTEM                           00001210
  122. LOAD     DC    CL8'LOAD'                                                00001220
  123. KNAME    DC    CL8'KERMIT',CL8'(',CL8'ORIGIN'                           00001230
  124. LOADORG  DC    CL8' '                                                   00001240
  125. LLOAD    EQU   *-KNAME                                                  00001250
  126.          DC    CL8'CLEAR',CL8'NOMAP',8X'FF'                             00001260
  127. *                                                                       00001270
  128. HEXTAB   EQU   *-240                                                    00001280
  129.          DC    C'0123456789ABCDEF'                                      00001290
  130.          END   KERMBOOT                                                 00001300
  131.