*SDT (MAKE SYSTEM DISTRIBUTION TAPE) COMMAND            HEADER  FUPSDT  0001.000
         M.PGM     FUP.SDT,MPX-32,3.6.1,00                              0002.000
         SPACE                                                          0003.000
*                                                                       0004.000
************************************************************************0005.000
*                                                                      *0006.000
*                    PROPRIETARY INFORMATION                           *0007.000
*                    -----------------------                           *0008.000
*   THE INFORMATION CONTAINED HEREIN IS PROPRIETARY TO ENCORE          *0009.000
*   COMPUTER CORPORATION AND/OR ITS VENDORS, AND ITS USE, DISCLOSURE,  *0010.000
*   OR DUPLICATION IS SUBJECT TO THE RESTRICTIONS STATED IN THE        *0011.000
*   STANDARD ENCORE COMPUTER CORPORATION LICENSE TERMS AND CONDITIONS  *0012.000
*   OR THE APPROPRIATE THIRD-PARTY SUBLICENSE AGREEMENT.               *0013.000
*                                                                      *0014.000
*                       RESTRICTED RIGHTS                              *0015.000
*                       -----------------                              *0016.000
*   USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT       *0017.000
*   TO RESTRICTIONS AS SET FOURTH IN SUBDIVISION (c) (1) (ii) OF       *0018.000
*   THE RIGHTS IN TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT       *0019.000
*   252.227.7013                                                       *0020.000
************************************************************************0021.000
* (C) COPYRIGHT 1989 ENCORE COMPUTER CORPORATION                       *0022.000
*     ALL RIGHTS RESERVED                                              *0023.000
************************************************************************0024.000
*                                                                       0025.000
*                                                                       0026.000
*    FUNCTIONAL DESCRIPTION:                                            0027.000
*                                                                       0028.000
*        THIS MODULE CONTAINS ONE OF THE COMMAND PROCESSING ROUTINES    0029.000
*        FOR THE FILE UTILITY PROGRAM FOR THE NEW FILE SYSTEM. THIS     0030.000
*        THIS MODULE HANDLES THE COMMAND:                               0031.000
*                                                                       0032.000
*                  'SDT'                                                0033.000
*                                                                       0034.000
         SPACE                                                          0035.000
************************************************************************0036.000
*                                                                      *0037.000
**                                                                    **0038.000
***                                                                  ***0039.000
****   NOTE:  MEMORY ONLY SYSTEMS ARE NOT APPLICABLE FOR            ****0040.000
****          MPX-32  RELEASE 3.X                                   ****0041.000
***                                                                  ***0042.000
**                                                                    **0043.000
*                                                                      *0044.000
************************************************************************0045.000
         SPACE                                                          0046.000
         SPACE     5                                                    0047.000
*                                                                       0048.000
*  NOTE(S):                                                             0049.000
*        1).  SOME BOOTSTRAP PARAMETERS GET INITIALIZED IN THIS MODULE  0050.000
*        ---> THIS COULD BE CHANGED IF OVERLAYS ARE USED                0051.000
*        2).  NEED TO CHECK FILE TO BE SURE IT'S A LOAD MODULE          0052.000
*        ---> CHECKING ONLY FOR FILE NAME CURRENTLY.  FILE NAME IN      0053.000
*             MPX-2.0 LOAD MODULES USES ONLY 1ST 8 CHARACTERS OF ACTUAL 0054.000
*             FILE NAME IN ORDER TO REMAIN COMPATIBLE.                  0055.000
*        ---> SINCE THERE IS NO RESTRICTIONS ON USERS SPECIFYING FILE   0056.000
*             TYPE, THIS IS AN UNRELIABLE WAY TO DETECT A LOAD MODULE.  0057.000
*        ---> PRE MPX-2.0 LOAD MODULES MAY NOT HAVE THE EXECUTABLE      0058.000
*             FLAG SET IN THE RESOURCE DESCRIPTOR -- SO THIS TOO IS AN  0059.000
*             UNRELIABLE METHOD TO DETERMINE A LOAD MODULE.             0060.000
*        3).  "BOOTFILE" OPTION NOT IMPLEMENTED.                        0061.000
*        ---> THIS GETS BOOTSTRAP LOADER CODE FROM A LOAD MODULE        0062.000
*             IN ABSOLUTE FORMAT.                                       0063.000
*                                                                       0064.000
         SPACE                                                          0065.000
*                                                                       0066.000
*    EXTERNAL REFERENCES:                                               0067.000
*                                                                       0068.000
*                                                                       0069.000
         EXT       DIV.RND         DIVIDE W/ROUND ROUTINE               0070.000
         EXT       RSEQ            READ ROUTINE                         0071.000
         EXT       WSEQ            WRITE ROUTINE                        0072.000
         EXT       X.DALC          DEALLOCATE ROUTINE                   0073.000
         EXT       X.RINQ          RESOURCE INQUIRY ROUTINE             0074.000
         EXT       FUPABORT        ABORT ROUTINE                        0075.000
         EXT       FUPABRT2        ABORTING -- I/O RELATED              0076.000
         EXT       FUPABRT3        PRINT ERROR MESSAGE & ABORT          0077.000
         EXT       FUPABRT4        PRINT ERROR MESSAGE & ABORT          0078.000
         EXT       X.OPEN          OPEN RESOURCE ROUTINE                0079.000
         EXT       X.CLOSE         CLOSE RESOURCE ROUTINE               0080.000
         EXT       X.ALOC2         ALLOCATE & OPEN TEMP FILE            0081.000
         EXT       ERROR           PRINT ERROR MESSAGE ON AUDIT TRAIL   0082.000
         EXT       GETPROT2        GET NEXT PROTOTYPE BLOCK             0083.000
         EXT       AUDIT0          AUDIT CREATE COMMON LINE             0084.000
         EXT       BUILDPNB        BUILD PNB ROUTINE                    0085.000
         EXT       BUILDCNP        BUILDS A CNP                         0086.000
         EXT       BUILDRR1        BUILD AN RRS ENTRY OF TYPE 1         0087.000
         EXT       X.ALOC          FUP - GENERAL ALLOCATE ROUTINE       0088.000
         EXT       M.WRIT          FUP - LOW LEVEL I/O (WRITE) ROUTINE  0089.000
         EXT       M.WEOF          FUP - WRITE END-OF-FILE MARK ROUTINE 0090.000
         EXT       FORMATOT        FORMAT AND OUTPUT MESSAGE            0091.000
         SPACE                                                          0092.000
*        DATA TABLES  ( .GT. 2W )                                       0093.000
         SPACE                                                          0094.000
         EXT       CNP.BUF         CNP BUFFER                           0095.000
         EXT       TAPFCB          FCB W/LFC "OUT"                      0096.000
         EXT       INQ.BUF         RESOURCE INQUIRY BUFFER              0097.000
         EXT       TAPBUFF         DATA BUFFER FOR TAPE I/O             0098.000
         EXT       RRS.BUF         RRS BUFFER                           0099.000
         EXT       PNB.BUF         HOLDS A PNB                          0100.000
         EXT       RD1.BUF         HOLDS AN RD                          0101.000
         SPACE                                                          0102.000
*        DATA VARIABLES ( .LE. 2W )                                     0103.000
         SPACE                                                          0104.000
         EXT       FLAGBITS        PROGRAM GLOBAL BOOLEAN FLAG BITS     0105.000
         EXT       STACKPTR        FOR SAVING R1                        0106.000
         EXT       ADR.MASK        MASK CC'S LEAVING ADDRESS            0107.000
         EXT       DISCFCB         FCB W/LFC DSC                        0108.000
         EXT       DSCZ            LFC  G-STRING                        0109.000
         EXT       RRS.ACC3        RRS ACCESS FIELD VALUE               0110.000
         EXT       CNP.ACCD        CNP OPTION FIELD VALUE               0111.000
         EXT       PRONUM          # PROTOTYPES USER SPECIFIED          0112.000
         EXT       F.SDTM          FUNCTION MESSAGE FOR MASTER SDT      0113.000
         EXT       F.SDT           FUNCTION MESSAGE FOR AUDIT           0114.000
         EXT       FUN.SAVE        ADDRESS OF FUNCTION STRING           0115.000
         EXT       TAPZ            G-STRING LFC                         0116.000
         EXT       CNP.ACC4        CNP OPTION VALUE                     0117.000
*                                                                       0118.000
*        ERROR MESSAGES                                                 0119.000
*                                                                       0120.000
         EXT       GEN.M013                                             0121.000
*        EXT       GEN.M014                                    ! 32B01  0122.000
         EXT       GEN.M015                                             0123.000
         EXT       GEN.M016                                             0124.000
         EXT       GEN.M017                                             0125.000
         EXT       GEN.M004                                             0126.000
         EXT       GEN.M006                                             0127.000
         EXT       GEN.M007                                             0128.000
         EXT       GEN.M022                                             0129.000
         EXT       INTERR4                                              0130.000
*                                                                       0131.000
*  ROUTINES & DATA USED BY THE PARSING ROUTINES                         0132.000
*                                                                       0133.000
         EXT       BITPTR          BIT # TO SET/CLEAR                   0134.000
         EXT       COBADDR         ADDRESS OF CURRENT OPTION BLOCK      0135.000
         EXT       ADDRPTR         ADDRESS OF DESIRED WORD OF A TABLE   0136.000
         EXT       SS.BOOL         PARSE A BOOLEAN VALUE                0137.000
         EXT       SS.LIST         PROCESS GLOBAL OPTION INVOLVING A    0138.000
*                                  PATHNAME                             0139.000
         EXT       COMDADDR        ADDRESS FOR COMMAND DISPATCH         0140.000
         EXT       SS.PATNM        PARSE TABLE FOR PATHNAME             0141.000
         EXT       SS.KWSYN        PARSE TABLE TO CK KEYWD SYNTAX       0142.000
         EXT       A.GLOBAL        POSTION POINTER TO GLOBAL OPTION AREA0143.000
         EXT       A.LOCAL         POSTION TO A LOCAL OPTION AREA       0144.000
         EXT       INVKEY          ERROR MESSAGE                        0145.000
         EXT       SS.BRIE         BRIEF SYNTAX GRAPH                   0146.000
         EXT       PERR006         ERRVAL STATE   -- NO PATHNAME GIVEN  0147.000
         EXT       SS.INP          PARSE TABLE FOR PATHNAME= KEYWORD    0148.000
*                                                                       0149.000
*        (EXTERNAL) REFERENCES TO BOOTSTRAP LOADER CODE                 0150.000
*                                                                       0151.000
         EXT       BOOTL           # BYTES IN BOOTSTRAP                 0152.000
         EXT       MTB             STARTING ADDRESS OF BOOTSTRAP LOADER 0153.000
         EXT       SDTFLG          SDT LOAD FLAGS                       0154.000
         EXT       MAXSECT         MAXIMUM STARTING SECTOR FOR FLOPPY   0155.000
         EXT       IOCD.ZR         REZERO COMMAND CODE                  0156.000
         EXT       IOCD1           IOCD #1 FOR IPL                      0157.000
         EXT       IOCD.BKR        BACKSPACE RECORD COMMAND CODE        0158.000
*                                                                       0159.000
*    EXTERNAL DEFINITIONS                                               0160.000
*                                                                       0161.000
*                                                                       0162.000
         DEF       S.SDT           STATE TABLE FOR THE COMMAND          0163.000
         DEF       S.SDTM          STATE TABLE FOR MASTER SDT COMMAND   0164.000
         DEF       C.SDTM          ENTRY POINT FOR MASTER SDT ACTION    0165.000
         DEF       C.SDT           ENTRY POINT FOR ACTION !!!           0166.000
         SPACE                                                          0167.000
*                                                                       0168.000
*    SYSTEM MACRO CALLS FOR DEFINITIONS AND EQUATES:                    0169.000
*                                                                       0170.000
         LIST      NOMAC                                                0170.100
         M.REQS                    REGISTER EQUATES                     0171.000
         STINIT                    TPARSE DEFINITIONS AND INIT          0172.000
         M.DFT.                    FAT EQUATES                          0173.000
         M.FCB.                    FCB EQUATES                          0174.000
         M.UDT.                    UDT EQUATES                          0175.000
         M.PR.                     LOAD MODULE EQUATES                  0176.000
         M.RR.TEQ                  RRS OFFSETS                          0177.000
*                                                                       0178.000
*    LOCAL DEFINITIONS:                                                 0179.000
*                                                                       0180.000
         SPACE                                                          0181.000
FL       EQU       X'E'            DEVICE TYPE CODE FOR FLOPPY DISC     0182.000
M9       EQU       X'5'            DEVICE TYPE CODE FOR 9-TRACK MAG TAPE0183.000
M7       EQU       X'6'            DEVICE TYPE CODE FOR 7-TRACK MAG TAPE0184.000
FLP      EQU       1               IPL FROM FLOPPY                      0185.000
         SPACE                                                          0186.000
*                                                                       0187.000
*    LOCAL STORAGE:                                                     0188.000
*                                                                       0189.000
         SPACE                                                          0190.000
*                                                                       0191.000
*  PROTOTYPE ENTRIES CORRESPONDING TO PNBS THAT FOLLOW                  0192.000
*                                                                       0193.000
         SPACE                                                          0194.000
J.VFMTP  DATAD     C'J.VFMT',C' '  FILE NAME                            0195.000
         DATAD     C'SYSTEM',C' '  DIRECTORY NAME                       0196.000
         DATAD     C'SYSTEM',C' '  VOLUME NAME                          0197.000
         DATAW     X'06060600'     FIL,DIR,VOL SIGNIFICANT LENGTHS      0198.000
         SPACE                                                          0199.000
J.MOUNTP DATAD     C'J.MOUNT',C' ' FILE NAME                            0200.000
         DATAD     C'SYSTEM',C' '  DIRECTORY NAME                       0201.000
         DATAD     C'SYSTEM',C' '  VOLUME NAME                          0202.000
         DATAW     X'07060600'     FIL,DIR,VOL SIGNIFICANT LENGTHS      0203.000
         SPACE                                                          0204.000
J.SWAPRP DATAD     C'J.SWAPR',C' ' FILENAME                        32B030205.000
         DATAD     C'SYSTEM',C' '  DIRECTORY NAME                  32B030206.000
         DATAD     C'SYSTEM',C' '  VOLUME NAME                     32B030207.000
         DATAW     X'07060600'     FIL,DIR,VOL SIGNIFICANT LENGTHS 32B030208.000
         SPACE                                                          0209.000
VOLMGRP  DATAD     C'VOLMGR',C' '  FILE NAME                            0210.000
         DATAD     C'SYSTEM',C' '  DIRECTORY NAME                       0211.000
         DATAD     C'SYSTEM',C' '  VOLUME NAME                          0212.000
         DATAW     X'06060600'     FIL,DIR,VOL SIGNIFICANT LENGTHS      0213.000
         SPACE                                                          0214.000
*MSTR.27P DATAD     C'MSTR.27',C' ' FILE NAME                   EMST-35 0215.000
MSTRALLP DATAD     C'MSTRALL',C' ' FILE NAME                    EMST-35 0216.000
         DATAD     C'SYSTEM',C' '  DIRECTORY NAME                       0217.000
         DATAD     C'SYSTEM',C' '  VOLUME NAME                          0218.000
         DATAW     X'07060600'     FIL,DIR,VOL SIGNIFICANT LENGTHS      0219.000
         SPACE                                                          0220.000
*MSTR.75P DATAD     C'MSTR.75',C' ' FILE NAME                   EMST-35 0221.000
MSTREXTP DATAD     C'MSTREXT',C' ' FILE NAME                    EMST-35 0222.000
         DATAD     C'SYSTEM',C' '  DIRECTORY NAME                       0223.000
         DATAD     C'SYSTEM',C' '  VOLUME NAME                          0224.000
         DATAW     X'07060600'     FIL,DIR,VOL SIGNIFICANT LENGTHS      0225.000
         SPACE                                                          0226.000
*MSTR.87P DATAD     C'MSTR.87',C' ' FILE NAME                   EMST-35 0227.000
MSTROUTP DATAD     C'MSTROUT',C' ' FILE NAME                    EMST-35 0228.000
         DATAD     C'SYSTEM',C' '  DIRECTORY NAME                       0229.000
         DATAD     C'SYSTEM',C' '  VOLUME NAME                          0230.000
         DATAW     X'07060600'     FIL,DIR,VOL SIGNIFICANT LENGTHS      0231.000
*                                                                       0232.000
*  PATHNAME BLOCKS FOR LOAD MODULES PUT ON SDT BY DEFAULT               0233.000
*                                                                       0234.000
         SPACE                                                          0235.000
         BOUND     1D                                                   0236.000
         SPACE                                                          0237.000
J.VFMT   DATAW     C'!VOL'                                              0238.000
         DATAW     C'SYST'                                              0239.000
         DATAW     C'!DIR'                                              0240.000
         DATAW     C'SYST'                                              0241.000
         DATAW     C'!FIL'                                              0242.000
         DATAW     C'    '                                              0243.000
         DATAW     C'J.VF'                                              0244.000
         DATAW     C'MT  '                                              0245.000
         DATAW     C'    '                                              0246.000
         DATAW     C'    '                                              0247.000
         SPACE                                                          0248.000
J.MOUNT  DATAW     C'!VOL'                                              0249.000
         DATAW     C'SYST'                                              0250.000
         DATAW     C'!DIR'                                              0251.000
         DATAW     C'SYST'                                              0252.000
         DATAW     C'!FIL'                                              0253.000
         DATAW     C'    '                                              0254.000
         DATAW     C'J.MO'                                              0255.000
         DATAW     C'UNT '                                              0256.000
         DATAW     C'    '                                              0257.000
         DATAW     C'    '                                              0258.000
         SPACE                                                          0259.000
J.SWAPR  DATAW     C'!VOL'                                     ! 32B03  0260.000
         DATAW     C'SYST'                                     ! 32B03  0261.000
         DATAW     C'!DIR'                                     ! 32B03  0262.000
         DATAW     C'SYST'                                     ! 32B03  0263.000
         DATAW     C'!FIL'                                     ! 32B03  0264.000
         DATAW     C'    '                                     ! 32B03  0265.000
         DATAW     C'J.SW'                                     ! 32B03  0266.000
         DATAW     C'APR '                                     ! 32B03  0267.000
         DATAW     C'    '                                     ! 32B03  0268.000
         DATAW     C'    '                                     ! 32B03  0269.000
         SPACE                                                 ! 32B03  0270.000
VOLMGR   DATAW     C'!VOL'                                              0271.000
         DATAW     C'SYST'                                              0272.000
         DATAW     C'!DIR'                                              0273.000
         DATAW     C'SYST'                                              0274.000
         DATAW     C'!FIL'                                              0275.000
         DATAW     C'    '                                              0276.000
         DATAW     C'VOLM'                                              0277.000
         DATAW     C'GR  '                                              0278.000
         DATAW     C'    '                                              0279.000
         DATAW     C'    '                                              0280.000
         SPACE                                                          0281.000
*MSTR.27  DATAW     C'!VOL'                                     EMST-35 0282.000
MSTRALL  DATAW     C'!VOL'                                      EMST-35 0283.000
         DATAW     C'SYST'                                              0284.000
         DATAW     C'!DIR'                                              0285.000
         DATAW     C'SYST'                                              0286.000
         DATAW     C'!FIL'                                              0287.000
         DATAW     C'    '                                              0288.000
         DATAW     C'MSTR'                                              0289.000
*         DATAW     C'.27 '                                     EMST-35 0290.000
         DATAW     C'ALL '                                      EMST-35 0291.000
         DATAW     C'    '                                              0292.000
         DATAW     C'    '                                              0293.000
         SPACE                                                          0294.000
*MSTR.75  DATAW     C'!VOL'                                     EMST-35 0295.000
MSTREXT  DATAW     C'!VOL'                                      EMST-35 0296.000
         DATAW     C'SYST'                                              0297.000
         DATAW     C'!DIR'                                              0298.000
         DATAW     C'SYST'                                              0299.000
         DATAW     C'!FIL'                                              0300.000
         DATAW     C'    '                                              0301.000
         DATAW     C'MSTR'                                              0302.000
*         DATAW     C'.75 '                                     EMST-35 0303.000
         DATAW     C'EXT '                                      EMST-35 0304.000
         DATAW     C'    '                                              0305.000
         DATAW     C'    '                                              0306.000
         SPACE                                                          0307.000
*MSTR.87  DATAW     C'!VOL'                                     EMST-35 0308.000
MSTROUT  DATAW     C'!VOL'                                      EMST-35 0309.000
         DATAW     C'SYST'                                              0310.000
         DATAW     C'!DIR'                                              0311.000
         DATAW     C'SYST'                                              0312.000
         DATAW     C'!FIL'                                              0313.000
         DATAW     C'    '                                              0314.000
         DATAW     C'MSTR'                                              0315.000
*         DATAW     C'.87 '                                     EMST-35 0316.000
         DATAW     C'OUT '                                      EMST-35 0317.000
         DATAW     C'    '                                              0318.000
         DATAW     C'    '                                              0319.000
*                                                                       0320.000
*  AUDIT TRAIL RELATED DATA                                             0321.000
*                                                                       0322.000
PBLOCK   RES       5W              FORMATTING PARAMETER BLOCK           0323.000
         SPACE     2                                                    0324.000
SDTFLAGS RES       1B              BOOLEAN FLAG BITS                    0325.000
         SPACE                                                          0326.000
MASTRSDT EQU       0               MASTER SDT FLAG                      0327.000
F.USDEF  EQU       1               USER DEFINED SDT                     0328.000
         SPACE     2                                                    0329.000
*  BOOTSTRAP LOADER AUDIT TRAIL MESSAGE:                                0330.000
SDT.FST1 DATAB     C'0%Z  BOOTSTRAP LOADER  %L4X (HEX) BYTES',0         0331.000
*  LOAD MODULE FILE MESSAGE:                                            0332.000
SDT.FST2 DATAB     C' %Z @%C (%C) %C  %L7N (DEC) BLOCKS',0              0333.000
SDT.FST3 DATAB     C' %Z FILE: @%C (%C) %C  IS NOT A LOAD MODULE',0     0334.000
SDT.FST4 DATAB     C' %Z COMMAND TERMINATED ',0                         0335.000
SDT.FST5 DATAB     C' SDT       *** EOF ***',0                          0336.000
         BOUND     1W                                                   0337.000
         TITLE     'SDT' COMMAND -- MAKE SYSTEM DISTRIBUTION TAPE       0338.000
         SPACE                                                          0339.000
         CSECT                                                          0340.000
         SPACE                                                          0341.000
C.SDTM   EQU       $               MASTER SDT                           0342.000
         PUSH                      SAVE REGS                            0343.000
         LA        R7,F.SDTM       FUNCTION Z-STRING ADDRESS            0344.000
         STW       R7,FUN.SAVE     SAVE IT FOR AUDIT TRAIL & ERROR MESS.0345.000
         SBM       MASTRSDT,SDTFLAGS    INDICATE MASTER SDT             0346.000
         ZMB       SDTFLG          INITIALIZE FLAGS                     0347.000
         SBM       2,SDTFLG        SET MASTER SDT INDICATOR BIT         0348.000
         BU        SDT.005         JOIN COMMON CODE                     0349.000
         SPACE     5                                                    0350.000
C.SDT    EQU       $                                                    0351.000
         PUSH                      SAVE REGS                            0352.000
         LA        R7,F.SDT        FUNCTION STRING ADDRESS              0353.000
         STW       R7,FUN.SAVE     SAVE IT FOR AUDIT TRAIL & ERROR MESS.0354.000
         ZBM       MASTRSDT,SDTFLAGS    NOT MASTER SDT                  0355.000
         ZBM       F.USDEF,SDTFLAGS     INITIALIZE USER DEFINITION FLAG 0356.000
         ZMB       SDTFLG          ZERO BOOTSTRAP FLAG BYTE             0357.000
*                                                                       0358.000
*  INITIALIZE PARAMETERS FOR (DEFAULT) TAPE BOOTSTRAP LOADER            0359.000
*                                                                       0360.000
         SPACE                                                          0361.000
SDT.005  EQU       $                                                    0362.000
         SPACE                                                          0363.000
*                                                                       0364.000
* SEE IF ANY COMMAND WAS PREMATURLY TERMINATED, IF SO, THEN FORCE A     0365.000
* DEALLOCATION ON LFC "DSC" IN CASE A USER'S PERMANENT FILE IS STILL    0366.000
* ALLOCATED                                                             0367.000
*                                                                       0368.000
         TBM       ABORT.F,FLAGBITS                                     0369.000
         BNS       SDT.007         GO FOR NO COMMAND TERMINATED         0370.000
         LA        R5,DISCFCB      FCB ADDRESS LFC "DSC"                0371.000
         BL        X.DALC          FORCE A DEALLOCATE                   0372.000
*** IGNORE ANY ERROR STATUS FROM DEALLOCATION                           0373.000
SDT.007  EQU       $                                                    0374.000
         SPACE                                                          0375.000
         ZMH       MAXSECT         INITIALIZE (FLOPPY)                  0376.000
         LB        R0,IOCD.BKR     BACKSPACE RECORD COMMAND CODE        0377.000
         STB       R0,IOCD1        PLANT IT IN THE IOCD                 0378.000
         SPACE     2                                                    0379.000
*                                                                       0380.000
*  SEE IF DEVICE (TAPE OR FLOPPY) IS ASSIGNED AND UNBLOCKED MODE WAS    0381.000
*  SPECIFIED; ALSO GET DEVICE CHARACTERISTICS FOR THE SDT LOADER TO     0382.000
*  USE DURING BOOT.                                                     0383.000
*                                                                       0384.000
*                                                                       0385.000
         LW        R7,TAPZ         LFC G-STRING                         0386.000
         BL        X.RINQ          RESOURCE INQUIRY SET-UP ROUTINE      0387.000
*                                                                       0388.000
*  R5 = 0 FOR UNASSIGNED ELSE ALLOCATION INDEX                          0389.000
*  R7 = CNP STATUS                                                      0390.000
*  "INQ.BUF" = BUFFER HOLDING RETURNED INQUIRY INFORMATION              0391.000
*                                                                       0392.000
         BNS       SDT.010         GO FOR INQUIRY ACCEPTED & COMPLETE   0393.000
*                                                                       0394.000
*  LOGICAL FILE CODE "TAP" MUST NOT BE ASSIGNED -- HAVE TO ABORT        0395.000
*                                                                       0396.000
         LA        R6,GEN.M013     ERROR MESSAGE                        0397.000
*        R7 ALREADY CONTAINS MODULE #/ERROR #  --  AS                   0398.000
*        RETURNED FROM SERVICE ROUTINE                                  0399.000
         BL        FUPABORT        ENTRY POINT IN ABORT ROUTINE         0400.000
         SPACE     2                                                    0401.000
SDT.010  EQU       $               LFC ASSINGED, NOW CHECK FOR UNBLOCKED0402.000
         SPACE                                                          0403.000
*                                                                       0404.000
*  CHECK FAT TO SEE IF TAPE WAS ASSIGNED AS UNBLOCKED                   0405.000
*                                                                       0406.000
         LA        R2,INQ.BUF      BUFFER FILLED BY INQUIRY SERVICE     0407.000
         LW        R3,1W,X2        FAT ADDRESS FOR LFC "TAP"            0408.000
**       TBM       0,DFT.FLGS,X3   BLOCKING BUFFER PRESENT BIT ! 32B01  0409.000
**       BNS       SDT.020         BRANCH FOR UNBLOCKED        ! 32B01  0410.000
*                                                                       0411.000
*  TAPE WAS ASSIGNED AS BLOCKED (SYSTEM DEFAULT) -- MUST ABORT          0412.000
*                                                                       0413.000
**       LA        R7,GEN.M014     ERROR MESSAGE               ! 32B01  0414.000
**       BL        FUPABRT3        ENTRY POINT IN ABORT ROUTINE! 32B01  0415.000
         SPACE     2                                                    0416.000
SDT.020  EQU       $                                                    0417.000
         SPACE                                                          0418.000
*                                                                       0419.000
*  CHECK FOR LEGAL DEVICE TYPE (MAG TAPE OR FLOPPY)                     0420.000
*                                                                       0421.000
         LW        R3,2W,X2        UDT ADDRESS FROM RES. INQ. BUFFER    0422.000
         LB        R4,UDT.DTC,X3   DEVICE TYPE CODE                     0423.000
         CI        R4,FL           IS DTC FOR FLOPPY ???                0424.000
         BEQ       SDT.030         GO FOR FLOPPY                        0425.000
         CI        R4,M9           IS DTC FOR 9-TRACK MAG TAPE ???      0426.000
         BEQ       SDT.040         GO FOR 9-TRACK MAG TAPE              0427.000
         CI        R4,M7           IS DTC FOR 7-TRACK MAG TAPE ???      0428.000
         BEQ       SDT.040         GO FOR 7-TRACK MAG TAPE              0429.000
*  ERROR  -- ASSIGNED DEVICE IS NOT TAPE OR FLOPPY                      0430.000
         LA        R7,GEN.M015     ERROR MESSAGE                        0431.000
         BL        FUPABRT3        ABORT ROUTINE ENTRY POINT            0432.000
         SPACE                                                          0433.000
SDT.030  EQU       $               PROCESS FLOPPY                       0434.000
         SBM       FLP,SDTFLG      SET FLOPPY FLAG FOR SDT LOADER       0435.000
*  CALCULATE # SECTORS                                                  0436.000
         LW        R5,UDT.TAU,X3   TOTAL ALLOCATION UNITS               0437.000
         MPMB      R4,UDT.SPAU,X3  TIMES SECTORS PER ALLOCATION UNIT    0438.000
*                                  GIVES TOTAL # SECTORS                0439.000
*  BACK OFF BY ONE BLOCK                                                0440.000
         SUMB      R5,UDT.SPB,X3   MINUS # SECTORS PER BLOCK            0441.000
         STH       R5,MAXSECT      STORE VALUE IN SDT LOADER            0442.000
         LB        R6,IOCD.ZR      GET REZERO COMMAND CODE              0443.000
         STB       R6,IOCD1        SET IN IOCD FOR IPL                  0444.000
         SPACE                                                          0445.000
SDT.040  EQU       $                                                    0446.000
         LW        R3,1W,X2        FAT ADDRESS FOR LFC "TAP"            0447.000
         TBM       0,DFT.STB,X3    IS DEVICE OPEN ???                   0448.000
         BNS       SDT.045         GO FOR NOT OPEN                      0449.000
*                                                                       0450.000
*  FILE IS OPEN -- NOW SEE IF CURRENT ACCESS MODE ALLOWS WRITE ACCESS   0451.000
*                                                                       0452.000
         LB        R4,DFT.CACM,X3  CURRENT ACCESS MODE FROM FAT         0453.000
         CI        R4,WRITE.M      IS IT WRITE ACCESS ???               0454.000
         BEQ       SDT.050         GO FOR WRITE ACCESS                  0455.000
         CI        R4,UPDATE.M     IS IT UPDATE ACCESS ???              0456.000
         BEQ       SDT.050         GO FOR UPDATE ACCESS                 0457.000
*                                                                       0458.000
*  DON'T HAVE DESIRED (WRITE) ACCESS, SO CLOSE & RE-OPEN                0459.000
*                                                                       0460.000
         LH        R7,CNP.ACCD     CNP OPTION FIELD VALUE               0461.000
         LA        R5,TAPFCB       FCB ADDRESS                          0462.000
         BL        X.CLOSE         CLOSE THE DEVICE                     0463.000
         BNS       SDT.045         GO FOR NO ERRORS                     0464.000
*  CLOSE FAILED -- SO ABORT                                             0465.000
         LA        R6,GEN.M022     ERROR MESSAGE                        0466.000
*  R7 CONTAINS MODULE #/ERROR # COMBO RETURN FROM SERVICE               0467.000
         BL        FUPABORT        ABORT MODULE -- ENTRY POINT          0468.000
         SPACE     2                                                    0469.000
SDT.045  EQU       $                                                    0470.000
*                                                                       0471.000
*        OPEN THE TAPE (OR FLOPPY)                                      0472.000
*                                                                       0473.000
         LA        R5,TAPFCB       FCB ADDRESS                          0474.000
         LH        R7,CNP.ACC4     CNP - WRITE ACCESS, IMPLICIT SHARED  0475.000
         BL        X.OPEN          BUILD CNP & ISSUE "OPEN" SERVICE CALL0476.000
         BNS       SDT.050         GO     FOR SUCCESSFUL OPEN           0477.000
*                                                                       0478.000
*        OPEN FAILED  --  ISSUE ERROR MESSAGE & TERMINATE THIS COMMAND  0479.000
*                                                                       0480.000
         LA        R6,GEN.M016     ERROR MESSAGE                        0481.000
*        R7 ALREADY CONTAINS MODULE #/ERROR #  --  AS                   0482.000
*        RETURNED FROM SERVICE ROUTINE                                  0483.000
         BL        FUPABORT        ABORT ROUTINE                        0484.000
         SPACE     2                                                    0485.000
SDT.050  EQU       $                                                    0486.000
         SPACE                                                          0487.000
*                                                                       0488.000
*  WRITE BOOTSTRAP LOADER TO TAPE ... AS ONE BIG RECORD                 0489.000
*  CAN'T USE FUP INTERMEDIATE I/O ROUTINE SINCE IT REQUIRES I/O         0490.000
*  TRANSFERS TO BE A MULTIPLE OF 192W, SO CALL LOW LEVEL I/O            0491.000
*  ROUTINE DIRECTLY                                                     0492.000
*                                                                       0493.000
*  PREPARE FCB                                                          0494.000
*                                                                       0495.000
         LA        R2,TAPFCB       FCB ADDRESS                          0496.000
         LA        R4,MTB          BOOTSTRAP LOADER CODE STARTING ADDR. 0497.000
         STW       R4,FCB.ERWA,X2  PLANT IN FCB                         0498.000
         SBM       6,FCB.GCFG,X2   INDICATE EXPANDED FCB                0499.000
         LW        R4,BOOTL        # BYTES IN BOOTSTRAP CODE            0500.000
         STW       R4,FCB.EQTY,X2  PLANT VALUE IN FCB                   0501.000
         LA        R3,M.WRIT       FUP LOW LEVEL I/O (WRITE) ROUTINE    0502.000
         BL        CON.IO          PROCESS VIA INTERMEDIATE ROUTINE     0503.000
*                                  SO CAN PROCESS I/O RELATED ERRORS    0504.000
         SPACE                                                          0505.000
*                                                                       0506.000
*  OUTPUT SIZE OF BOOTSTRAP LOADER TO AUDIT TRAIL                       0507.000
*                                                                       0508.000
         STW       R4,PBLOCK+1W    BOOTSTRAP LOADER -- SIZE IN BYTES    0509.000
         LW        R0,FUN.SAVE     FUNCTION NAME (SDT) IN Z-STRING FORM 0510.000
         STW       R0,PBLOCK       PLANT IN PARAMETER BLOCK             0511.000
         LA        R3,PBLOCK       PARAMETER BLOCK                      0512.000
         LA        R2,SDT.FST1     FORMATING STRING                     0513.000
         BL        FORMATOT        FORMAT & PRINT THE MESSAGE           0514.000
         SPACE     2                                                    0515.000
         TBM       MASTRSDT,SDTFLAGS    MASTER SDT ???                  0516.000
         BNS       SDT.055         GO FOR NOT MASTER SDT                0517.000
*                                                                       0518.000
*  PROCESS FOR MASTER SDT                                               0519.000
*  WRITE SYSTEM IMAGE FOR ALL CONCEPT-32/XX MACHINES            EMST-35 0520.000
*                                                                       0521.000
*        LA        R2,MSTR.27P PROT. ENTRY FOR MSTR.27 IMG FILE EMST-35 0522.000
         LA        R2,MSTRALLP PROT. ENTRY FOR MSTRALL IMG FILE EMST-35 0523.000
*        LA        R6,MSTR.27  ADDR OF PNB FOR MSTR.27 IMG FILE EMST-35 0524.000
         LA        R6,MSTRALL  ADDR OF PNB FOR MSTRALL IMG FILE EMST-35 0525.000
         LI        R5,10W          LENGTH OF PNB                        0526.000
         BL        SDT1D           OUTPUT TO TAPE                       0527.000
*  WRITE AN EOF MARK                                                    0528.000
         BL        SDT.WEOF                                             0529.000
*  WRITE SYSTEM IMAGE FOR EXTENDED MPX                          EMST-35 0530.000
*        LA        R2,MSTR.75P PROT. ENTRY FOR MSTR.75 IMG FILE EMST-35 0531.000
         LA        R2,MSTREXTP PROT. ENTRY FOR MSTREXT IMG FILE EMST-35 0532.000
*        LA        R6,MSTR.75  ADDR OF PNB FOR MSTR.75 IMG FILE EMST-35 0533.000
         LA        R6,MSTREXT  ADDR OF PNB FOR MSTREXT IMG FILE EMST-35 0534.000
         LI        R5,10W          LENGTH OF PNB                        0535.000
         BL        SDT1D           OUTPUT TO TAPE                       0536.000
*  WRITE AN EOF MARK                                                    0537.000
         BL        SDT.WEOF                                             0538.000
*  WRITE SYSTEM IMAGE FOR 32/2000 MAPPED OUT                    EMST-35 0539.000
*        LA        R2,MSTR.87P PROT. ENTRY FOR MSTR.87 IMG FILE EMST-35 0540.000
         LA        R2,MSTROUTP PROT. ENTRY FOR MSTROUT IMG FILE EMST-35 0541.000
*        LA        R6,MSTR.87  ADDR OF PNB FOR MSTR.87 IMG FILE EMST-35 0542.000
         LA        R6,MSTROUT  ADDR OF PNB FOR MSTROUT IMG FILE EMST-35 0543.000
         LI        R5,10W          LENGTH OF PNB                        0544.000
         BL        SDT1D           OUTPUT TO TAPE                       0545.000
*  WRITE AN EOF MARK                                                    0546.000
         BL        SDT.WEOF                                             0547.000
*                                                                       0548.000
*  JOIN COMMON CODE TO OUTPUT THE REMAINDER OF THE SDT PROCESS          0549.000
*                                                                       0550.000
         BU        SDT.065                                              0551.000
         SPACE     2                                                    0552.000
SDT.055  EQU       $                                                    0553.000
         SPACE     2                                                    0554.000
*                                                                       0555.000
*  GET PROTOTYPE ENTRY FOR SYSTEM IMAGE PATHNAME -- 1ST PATHNAME ON     0556.000
*  COMMAND LINE IS THE SYSTEM IMAGE PATHNAME & IS A REQUIRED ARGUMENT !!0557.000
*                                                                       0558.000
         BL        GETPROT2        R2 RETURN AS ADDR. PROT. ENTRY IF OK 0559.000
         BNS       SDT.060         GO FOR ENTRY PRESENT                 0560.000
*  (INTERNAL) ERROR  --  ENTRY FOR SYSTEM IMAGE SHOULD HAVE BEEN        0561.000
*  PRESENT, ELSE SHOULDN'T HAVE GOTTEN THIS FAR !!!                     0562.000
         LA        R7,INTERR4      ERROR MESSAGE                        0563.000
         BL        FUPABRT4        ABORT ROUTINE ENTRY POINT            0564.000
         SPACE                                                          0565.000
SDT.060  EQU       $                                                    0566.000
         BL        SDT1            PROCESS THE SYSTEM IMAGE FILE        0567.000
         BS        SDT.110         GO FOR FILE NOT A LOAD MODULE        0568.000
*                                                                       0569.000
*  IF ONLY THE SYSTEM IMAGE PATHNAME WAS SPECIFIED ON THE COMMAND       0570.000
*  LINE, THEN OUTPUT THE DEFAULT MODULES J.VFMT, J.MOUNT AND VOLMGR     0571.000
*  WITH THE APPROPRIATE EOF MARKS                                       0572.000
*                                                                       0573.000
*  CHECK FOR ONLY ONE PATHNAME USER SPECIFIED                           0574.000
*                                                                       0575.000
         LW        R0,PRONUM       # PROTOTYPE(S) USER SPECIFIED        0576.000
         SUI       R0,1            KNOCK OFF ONE FOR SYSTEM IMAGE       0577.000
         BLE       SDT.065         GO FOR NO USER SPECIFIED MODULES     0578.000
         SBM       F.USDEF,SDTFLAGS INDICATE USER SPECIFIED MODULES     0579.000
         BU        SDT.080         GO FOR USER SPECIFIED MODULES        0580.000
         SPACE     2                                                    0581.000
SDT.065  EQU       $               MASTER SDT JOINS USER SDT CODE       0582.000
*                                  AT THIS POINT                        0583.000
         SPACE     2                                                    0584.000
*  USE DEFALT MODULES                                                   0585.000
*  GET J.VFMT  --  THE VOLUME FORMATTER                                 0586.000
         LA        R2,J.VFMTP      PROTOTYPE ENTRY FOR J.VFMT           0587.000
         LA        R6,J.VFMT       ADDRESS OF PNB FOR J.VFMT            0588.000
         LI        R5,10W          LENGTH OF PNB                        0589.000
         BL        SDT1D           OUTPUT TO TAPE                       0590.000
*  WRITE AN EOF MARK                                                    0591.000
         BL        SDT.WEOF                                             0592.000
*  GET J.MOUNT  --  DOES VOLUME INITIALIZATION & MOUNTING               0593.000
         LA        R2,J.MOUNTP     PROTOTYPE ENTRY FOR J.MOUNT          0594.000
         LA        R6,J.MOUNT      ADDRESS OF PNB FOR J.MOUNT           0595.000
         LI        R5,10W          LENGTH OF PNB                        0596.000
         BL        SDT1D           OUTPUT TO TAPE                       0597.000
* GET SWAPR AND MOVE TO TAPE                                            0598.000
         LA        R2,J.SWAPRP     GET SWAPR PROTOTYPE ENTRY   ! 32B03  0599.000
         LA        R6,J.SWAPR      GET PNB FOR J.SWAPR         ! 32B03  0600.000
         LI        R5,10W          LENGTH OF PNB               ! 32B03  0601.000
         BL        SDT1D           OUTPUT TO TAPE              ! 32B03  0602.000
*  GET VOLMGR (IE., LOAD MODULE FOR THIS PROGRAM "FUP")                 0603.000
         LA        R2,VOLMGRP      PROTOTYPE ENTRY FOR VOLMGR           0604.000
         LA        R6,VOLMGR       ADDRESS OF PNB FOR VOLMGR            0605.000
         LI        R5,10W          LENGTH OF PNB                        0606.000
         BL        SDT1D           OUTPUT TO TAPE                       0607.000
*  WRITE 2 EOF MARKS -- SO SAVED FILES CAN BE RESTORED                  0608.000
*  IE., MUST LOOK LIKE A SAVE IMAGE (TERMINATED WITH 2 EOFS)            0609.000
         BL        SDT.WEOF                                             0610.000
         BL        SDT.WEOF                                             0611.000
         BU        SDT.090         DONE -                               0612.000
*                                                                       0613.000
*        USER SPECIFIED HIS OWN FORMAT & MODULES                        0614.000
*                                                                       0615.000
SDT.070  EQU       $                                                    0616.000
         SPACE                                                          0617.000
         BL        GETPROT2        GET NEXT PROTOTYPE                   0618.000
         BS        SDT.090         GO FOR NO MORE PROTOTYPES            0619.000
         BL        SDT1            WRITE FILE TO TAPE                   0620.000
         BS        SDT.110         GO FOR FILE NOT A LOAD MODULE        0621.000
SDT.080  LW        R3,PROFOA.O,X2  OPTION BLOCK ASSOCIATED WITH CURRENT 0622.000
*                                  PROTOTYPE                            0623.000
         TBM       OPT.B.WE,OPT.FLGS,X3      WRITE EOF ???              0624.000
         BNS       SDT.070         GO FOR NO EOF WANTED                 0625.000
*  WRITE AN EOF MARK                                                    0626.000
         BL        SDT.WEOF                                             0627.000
         BU        SDT.070         GO GET MORE PROTOTYPES               0628.000
         SPACE     2                                                    0629.000
SDT.090  EQU       $                                                    0630.000
         ZBM       F.USDEF,SDTFLAGS    USER DEFINED FORMAT?             0631.000
         BNS       SDT.091         IF NOT, DONT WRITE EOF               0632.000
         BL        SDT.WEOF        USER DEFINED FORMAT, SO WRITE EOF    0633.000
SDT.091  POP                       RESTORE REGS                         0634.000
         TRSW      R0              RETURN                               0635.000
         SPACE     5                                                    0636.000
*                                                                       0637.000
*  FILE WAS DISCOVERED THAT WAS NOT A LOAD MODULE                       0638.000
*  PRINT A MESSAGE & TERMINATE PROCESSING OF THIS COMMAND               0639.000
*                                                                       0640.000
SDT.110  EQU       $                                                    0641.000
         SPACE                                                          0642.000
         LA        R2,SDT.FST4     FORMATTING STRING                    0643.000
         LA        R3,PBLOCK       PARAMETER BLOCK                      0644.000
         BL        FORMATOT        FORMAT & PRINT THE MESSAGE           0645.000
         BU        SDT.090                                              0646.000
         TITLE     SUBROUTINE SDT1  --  OUTPUT LOAD MODULES TO TAPE     0647.000
*                                                                       0648.000
*  INPUT:          R2 = PROTOTYPE TABLE ENTRY ADDRESS                   0649.000
*  OUTPUT:         CC1 = 1 IF FILE NOT A LOAD MODULE                    0650.000
*                  CC1 = 0 IF FILE IS A LOAD MODULE                     0651.000
*                                                                       0652.000
         SPACE                                                          0653.000
SDT1D    EQU       $                                                    0654.000
         ANMW      R0,ADR.MASK     INITIALIZE CC'S FOR RETURN           0655.000
         PUSH                      SAVE REGS                            0656.000
         BU        SDT1.000        JOIN COMMON CODE                     0657.000
         SPACE     2                                                    0658.000
*                                                                       0659.000
*  INPUT:          R2 = PROTOTYPE TABLE ENTRY ADDRESS                   0660.000
*                  R7 = LENGTH (IN BYTES) OF PATHNAME BLOCK             0661.000
*  OUTPUT:         CC1 = 1 IF FILE NOT A LOAD MODULE                    0662.000
*                  CC1 = 0 IF FILE IS A LOAD MODULE                     0663.000
*                                                                       0664.000
         SPACE                                                          0665.000
SDT1     EQU       $                                                    0666.000
         SPACE                                                          0667.000
         ANMW      R0,ADR.MASK     INITIALIZE CC'S FOR RETURN           0668.000
         PUSH                      SAVE REGS                            0669.000
*                                                                       0670.000
*  ALLOCATE AND OPEN THE SYSTEM IMAGE                                   0671.000
*  BUILD A PATHNAME BLOCK FOR THE SYSTEM IMAGE                          0672.000
*                                                                       0673.000
         BL        BUILDPNB        BUILD PATHNAME BLOCK                 0674.000
*  R7 RETURNED AS LENGTH (IN BYTES) OF PNB                              0675.000
*  BUILD RRS TYPE 1 ENTRY -- ALLOCATE BY PATHNAME                       0676.000
         SRL       R7,24           POSITION BYTE COUNT                  0677.000
         TRR       R7,R5           LENGTH OF PNB IN BYTES               0678.000
         LA        R6,PNB.BUF      ADDRESS OF PATHNAME BLOCK            0679.000
SDT1.000 EQU       $               COMMON CODE JOIN POINT               0680.000
         LW        R7,DSCZ         G-STRING LOGICAL FILE CODE           0681.000
         BL        BUILDRR1        BUILD THE RRS ENTRY                  0682.000
         LA        R3,RRS.BUF      BUFFER CONTAINING RRS ENTRY          0683.000
         LW        R0,RRS.ACC3     READ ACCESS, EXCLUSIVE USE           0684.000
         STW       R0,RR.ACCS,X3   PLANT IN RRS BUFFER                  0685.000
*                                                                       0686.000
*  RRS ENTRY IN 'RRS.BUF'  --  NOW DO THE ALLOCATE & OPEN               0687.000
*                                                                       0688.000
         LA        R5,DISCFCB      FCB ADDRESS FOR AUTOMATIC OPEN       0689.000
*                                                                       0690.000
* ALLOW (EXPLICIT OR IMPLICIT) SHARED ALLOCATION OF (USER'S) FILE       0691.000
* IF EXCLUSIVE ALLOCATION IS DENIED                                     0692.000
*                                                                       0693.000
         SBM       NONEXCL,FLAGBITS                                     0694.000
         SPACE                                                          0695.000
         BL        X.ALOC          FUP - GENERAL ALLOCATE ROUTINE       0696.000
         BNS       SDT1.010        GO FOR SUCCESSFUL ALLOCATION         0697.000
         LA        R6,GEN.M017     ADDRESS OF ERROR MESSAGE             0698.000
*        R7 ALREADY CONTAINS MODULE #/ERROR #  --  AS                   0699.000
*        RETURNED FROM SERVICE ROUTINE                                  0700.000
         BL        FUPABORT        ABORT ROUTINE ENTRY POINT            0701.000
         SPACE                                                          0702.000
SDT1.010 EQU       $                                                    0703.000
*                                                                       0704.000
*  SYSTEM IMAGE FILE SIZE (IE., # BLOCKS) MAY HAVE BEEN ROUNDED UP TO   0705.000
*  MULTIPLE OF ALLOCATION UNIT, THEREFORE, NEED TO CALCULATE THE EXACT  0706.000
*  FILE SIZE VIA INFORMATION CONTAINED IN THE LOAD MODULE PREAMBLE.     0707.000
*  THE LENGTH OF THE LOAD MODULE FILE MUST BE AS IT IS RECORDED IN      0708.000
*  THE LOAD MODULE PREAMBLE SINCE THE SYSINIT CODE RELYS ON THIS        0709.000
*  INFORMATION TO KNOW HOW MANY 192W TAPE RECORDS TO READ, SKIP, ETC.   0710.000
*                                                                       0711.000
*  READ THE LOAD MODULE PREAMBLE (LMIT)                                 0712.000
*                                                                       0713.000
         BL        READDSC         READ THE FILE                        0714.000
         LA        R3,TAPBUFF      BUFFER CONTAINING THE DATA JUST READ 0715.000
*                                                                       0716.000
*  CHECK TO INSURE FILE IS A LOAD MODULE                                0717.000
*                                                                       0718.000
         LD        R6,PR.NAME,X3   GET FILE NAME FROM LOAD MODULE       0719.000
         CAMD      R6,PROFFN.O,X2  COMPARE TO ACTUAL FILE NAME IN       0720.000
*                                  PROTOTYPE ENTRY                      0721.000
         BNE       SDT1.100        GO FOR NOT A LOAD MODULE             0722.000
*                                                                       0723.000
*  CALCULATE THE SIZE OF THE FILE                                       0724.000
*  THE DSECT RELOCATION MATRIX IS THE LAST STRUCTURE CONTAINED IN THE   0725.000
*  LOAD MODULE -- USE ITS KNOWN FILE RELATIVE POSITION TO CALCULATE     0726.000
*  THE EXACT SIZE OF THE LOAD MODULE                                    0727.000
*  SYSTEM IMAGES ARE "PSEUDO LOAD MODULES" AND DON'T CONTAIN A DSECT    0728.000
*  RELOCATION MATRIX, THEREFORE, THAT LEAVES THE DSECT CODE AS THE      0729.000
*  LAST STRUCTURE IN THE LOAD MODULE.  USE THE DSECT'S KNOWN FILE       0730.000
*  RELATIVE POSITION TO CALCULATE THE EXACT SIZE OF THE FILE.           0731.000
*                                                                       0732.000
         LW        R5,PR.BYTDR,X3  # BYTES IN DSECT RELOCATION MATRIX   0733.000
         LW        R7,PR.SFADR,X3  RELATIVE FILE ADDRESS OF THE DSECT   0734.000
*                                  RELOCATION MATRIX                    0735.000
         BNZ       SDT1.020        GO FOR ADDRESS (MATRIX) PRESENT      0736.000
*  THIS CASE FOR SYSTEM IMAGE PSEUDO LOAD MODULE                        0737.000
         LW        R5,PR.BYTED,X3  # BYTES IN DSECT                     0738.000
         LW        R7,PR.SFAD,X3   RELATIVE FILE ADDRESS OF THE DSECT   0739.000
*                                                                       0740.000
*  ADD ONE BLOCK FOR THE SYSTEM DEBUG BLOCK; IE., THE LAST BLOCK OF THE 0741.000
*  SYSTEM IMAGE PSEDO LOAD MODULE.                                      0742.000
*                                                                       0743.000
         ABR       R7,31                                                0744.000
SDT1.020 EQU       $                                                    0745.000
         LI        R6,192*4        # BYTES PER 192W BLOCK               0746.000
         BL        DIV.RND         GIVES # 192W BLOCKS                  0747.000
         ADR       R7,R5           ADD IN STARTING FILE RELATIVE        0748.000
*                                  ADDRESS OF DSECT (OR DSECT MATRIX)   0749.000
         STW       R5,PBLOCK+4W    SAVE TRUE FILE SIZE FOR AUDIT TRAIL  0750.000
         BU        SDT1.040                                             0751.000
         SPACE                                                          0752.000
*                                                                       0753.000
*  NOW HAVE EXACT SIZE OF FILE IN # 192W BLOCKS                         0754.000
*  OUTPUT FILE TO TAPE, WRITE 192W TAPE RECORDS                         0755.000
*                                                                       0756.000
SDT1.030 BL        READDSC         READ BUFFER FULL                     0757.000
SDT1.040 LA        R2,DISCFCB      FCB ADDRESS                          0758.000
         LW        R7,FCB.RECL,X2  # BYTES TRANSFERED                   0759.000
         ZR        R6              INITIALIZE FOR DIVIDE                0760.000
         DVI       R6,X'300'       GET # BLOCKS TRANSFERED              0761.000
*  R7 CONTAINS # BLOCKS TRANSFERED                                      0762.000
         TRR       R5,R6           DITTO (RETAIN R5)                    0763.000
         SUR       R7,R6           REMAINING AMOUNT NEEDED MINUS        0764.000
*                                  AMOUNT TRANSFERED                    0765.000
         BGE       SDT1.050        GO FOR WRITE # BYTES READ (+ OR ZERO)0766.000
         TRR       R5,R7           WRITE REMAINING AMOUNT NEEDED (-)    0767.000
SDT1.050 BL        WRITEOUT        WRITE TO TAPE                        0768.000
         SUR       R7,R5           ANY MORE TO READ ???                 0769.000
         BGT       SDT1.030        GO FOR MORE TO READ                  0770.000
         SPACE                                                          0771.000
*                                                                       0772.000
*  OUTPUT LOAD MODULE'S (PATH)NAME AND SIZE TO AUDIT TRAIL              0773.000
*                                                                       0774.000
         LA        R2,SDT.FST2     FORMATTING STRING ADDRESS            0775.000
         BL        SDT11           FORMAT & PRINT THE MESSAGE           0776.000
*                                                                       0777.000
*        DEALLOCATE THE FILE                                            0778.000
*                                                                       0779.000
SDT1.055 LA        R5,DISCFCB      FCB ADDRESS                          0780.000
         BL        X.DALC          BUILD CNP & CALL DEALLOCATE SYS. SER.0781.000
         BNS       SDT1.060                                             0782.000
*                                                                       0783.000
*        PROCESS DEALLOCATION ERRORS                                    0784.000
*                                                                       0785.000
         LA        R6,GEN.M006     ERROR MESSAGE                        0786.000
*        R7 HAS MODULE #/ERROR #  RETURNED FROM SYSTEM SERVICE          0787.000
         BL        FUPABORT        ABORT ROUTINE                        0788.000
         SPACE     2                                                    0789.000
SDT1.060 EQU       $                                                    0790.000
         POP                       RESTORE REGS                         0791.000
         TRSW      R0              RETURN                               0792.000
         SPACE     5                                                    0793.000
*                                                                       0794.000
*  PRINT MESSAGE SAYING FILE IS NOT A LOAD MODULE                       0795.000
*                                                                       0796.000
SDT1.100 EQU       $                                                    0797.000
         LA        R2,SDT.FST3     FORMATTING STRING ADDRESS            0798.000
         BL        SDT11           FORMAT & PRINT THE MESSAGE           0799.000
         SBM       CC1,0W,X1       INDICATE FILE NOT A LOAD MODULE      0800.000
         BU        SDT1.055        JOIN COMMON CODE                     0801.000
         TITLE     SUBROUTINE SDT11  --  OUTPUT MESSAGE TO AUDIT TRAIL  0802.000
*                                                                       0803.000
*  FORMAT & PRINT THE MESSAGE                                           0804.000
*                                                                       0805.000
*  INPUT:                                                               0806.000
*        R2 = ADDRESS OF THE FORMATTING STRING                          0807.000
*                                                                       0808.000
SDT11    EQU       $                                                    0809.000
         SPACE                                                          0810.000
         PUSH                      SAVE REGS                            0811.000
*  FUNCTION Z-STRING ADDRESS ALREADY IN PBLOCK                          0812.000
*                                                                       0813.000
         LW        R2,1F+2W,X1     GET R2 BACK FROM STACK (PREV. FRAME) 0814.000
         LA        R0,PROFVN.O,X2  VOLUME NAME IN PROTOTYPE ENTRY       0815.000
         STW       R0,PBLOCK+1W    PLANT ADDRESS IN PARAMETER BLOCK     0816.000
         LB        R0,PROFVL.O,X2  SIGNIFICANT LENGTH                   0817.000
         STB       R0,PBLOCK+1W    PRODUCES A COUNTED STRING            0818.000
         LA        R0,PROFDN.O,X2  DIRECTORY NAME IN PROTOTYPE ENTRY    0819.000
         STW       R0,PBLOCK+2W    PLANT ADDRESS IN PARAMETER BLOCK     0820.000
         LB        R0,PROFDL.O,X2  SIGNIFICANT LENGTH                   0821.000
         STB       R0,PBLOCK+2W    PRODUCES A COUNTED STRING            0822.000
         LA        R0,PROFFN.O,X2  FILE NAME IN PROTOTYPE ENTRY         0823.000
         STW       R0,PBLOCK+3W    PLANT ADDRESS IN PARAMETER BLOCK     0824.000
         LB        R0,PROFFL.O,X2  SIGNIFICANT LENGTH                   0825.000
         STB       R0,PBLOCK+3W    PRODUCES A COUNTED STRING            0826.000
         LW        R2,2W,X1        FORMATTING STRING ADDRESS            0827.000
         LA        R3,PBLOCK       PARAMETER BLOCK                      0828.000
         BL        FORMATOT        FORMAT & PRINT THE LINE              0829.000
         POP                       RESTORE REGS                         0830.000
         TRSW      R0              RETURN                               0831.000
*                                                                       0832.000
         TITLE     SUBROUTINE SDT.WEOF  --  WRITE END-OF-FILE MARK      0833.000
*                                                                       0834.000
*  WRITE END-OF-FILE MARK TO TAPE & NOTE SAME ON AUDIT TRAIL            0835.000
*                                                                       0836.000
SDT.WEOF EQU       $                                                    0837.000
         PUSH                      SAVE REGS                            0838.000
*  WRITE AN EOF MARK                                                    0839.000
         LA        R2,TAPFCB       FCB ADDRESS                          0840.000
         LI        R4,1            WRITE ONE EOF MARK                   0841.000
         LA        R3,M.WEOF       FUP - WRITE EOF MARK ROUTINE         0842.000
         BL        CON.IO          PROCESS VIA INTERMEDIATE ROUTINE     0843.000
*                                  SO CAN CATCH I/O ERRORS              0844.000
         LA        R2,SDT.FST5     FORMATTING STRING                    0845.000
         BL        FORMATOT        FORMAT AND PRINT THE MESSAGE         0846.000
         POP                       RESTORE REGS                         0847.000
         TRSW      R0              RETURN                               0848.000
         TITLE     LOCAL I/O SET-UP ROUTINES                            0849.000
*++                                                                     0850.000
*                                                                       0851.000
* READDSC  --  READ DATA FROM FILE INTO BUFFER                          0852.000
*              TRANSFER COUNT IS BUFFER SIZE.                           0853.000
*                                                                       0854.000
*        INPUT:    NONE                                                 0855.000
*        OUTPUT:   "TAPBUFF" REFRESHED WITH NEW DATA                    0856.000
*                                                                       0857.000
*--                                                                     0858.000
         SPACE                                                          0859.000
READDSC  EQU       $                                                    0860.000
         PUSH                      SAVE REGS                            0861.000
         LA        R3,RSEQ         READ ROUTINE                         0862.000
         LI        R7,IOBUFFSZ     # BLOCKS TO TRANSFER                 0863.000
         LA        R6,TAPBUFF      BUFFER ADDRESS                       0864.000
         LA        R2,DISCFCB      FCB ADDRESS                          0865.000
         BL        CON.IO                                               0866.000
         POP                       RESTORE REGS                         0867.000
         TRSW      R0              RETURN                               0868.000
         SPACE     5                                                    0869.000
*++                                                                     0870.000
*                                                                       0871.000
* WRITEOUT  --  WRITE DATA FROM BUFFER TO TAPE                          0872.000
*             TRANSFER COUNT IS ONE 192W BLOCK                          0873.000
*                                                                       0874.000
*        INPUT:    R7 = # 192W TAPE RECORDS TO WRITE                    0875.000
*        OUTPUT:   DATA FROM "TAPBUFF" BUFFER IS WRITTEN TO TAPE        0876.000
*                                                                       0877.000
*--                                                                     0878.000
         SPACE                                                          0879.000
WRITEOUT EQU       $                                                    0880.000
         PUSH                      SAVE REGS                            0881.000
         TRN       R7,R5           # 192W TAPE RECORDS TO WRITE         0882.000
         LA        R3,WSEQ         WRITE ROUTINE                        0883.000
         LI        R7,1            # BLOCKS TO TRANSFER                 0884.000
         LA        R2,TAPFCB       FCB ADDRESS                          0885.000
         LA        R6,TAPBUFF      BUFFER ADDRESS                       0886.000
WRIT.010 BL        CON.IO          PROCESS VIA INTERMEDIATE ROUTINE     0887.000
*                                  SO CAN CATCH & PROCESS I/O ERRORS    0888.000
         ADI       R6,X'300'       # BYTES PER 192W RECORD              0889.000
         BIB       R5,WRIT.010     LOOP TIL DONE                        0890.000
         POP                       RESTORE REGS                         0891.000
         TRSW      R0              RETURN                               0892.000
         SPACE     5                                                    0893.000
*++                                                                     0894.000
*                                                                       0895.000
* CON.IO  --  CALL A FUP I/O ROUTINE (ANOTHER ROUTINE IN THE I/O        0896.000
*             SEQUENCE) TO PREPARE THE FCB.  INTERCEPT ANY ABNORMAL     0897.000
*             CONDITIONS & TAKE APPROPRIATE ACTION.                     0898.000
*                                                                       0899.000
*        INPUT:    R2 = FCB ADDRESS                                     0900.000
*                  R3 = FUP I/O ROUTINE ADDRESS                         0901.000
*                  R6 = DATA BUFFER ADDRESS                             0902.000
*                  R7 = # BLOCKS TO TRANSFER                            0903.000
*                                                                       0904.000
*        OUTPUT:   NO EXPLICIT OUTPUT                                   0905.000
*                                                                       0906.000
*        NOTE:  R4 IS RESERVED ... DO NOT MODIFY ITS VALUE IN THIS      0907.000
*               ROUTINE                                                 0908.000
*                                                                       0909.000
*                                                                       0910.000
*--                                                                     0911.000
         SPACE                                                          0912.000
CON.IO   EQU       $                                                    0913.000
         PUSH                      SAVE REGS                            0914.000
         BL        0W,X3           GO TO PRE-DETERMINED I/O ROUTINE     0915.000
         BCF       CC1,IO.10       BRANCH IF NOT EOF/EOM                0916.000
         LA        R6,GEN.M004     ERROR MESSAGE                        0917.000
         BU        IO.15                                                0918.000
IO.10    BCF       CC2,IO.20       BRANCH IF NOT OTHER I/O ERROR(S)     0919.000
         LA        R6,GEN.M007     ERROR MESSAGE                        0920.000
IO.15    BL        FUPABRT2        ABORT ROUTINE -- ENTRY POINT FOR     0921.000
*                                  I/O RELATED PROBLEMS                 0922.000
IO.20    POP                                                            0923.000
         TRSW      R0              RETURN                               0924.000
         TITLE     SDT COMMAND STATE TABLES & ACTION ROUTINES           0925.000
*                                                                       0926.000
* A.CMD    - ACTION WHEN VALID SDT COMMAND IS PARSED                    0927.000
*                                                                       0928.000
         SPACE                                                          0929.000
A.CMD    LA        R7,C.SDT        GET ADDRESS OF COMMAND PROCESSOR     0930.000
         STW       R7,COMDADDR     SAVE FOR DISPATCHER                  0931.000
         TRSW      R0              RETURN TO PARSER                     0932.000
         SPACE                                                          0933.000
A.CMSDTM LA        R7,C.SDTM       GET ADDRESS OF COMMAND PROCESSOR     0934.000
         STW       R7,COMDADDR     SAVE FOR DISPATCHER                  0935.000
         TRSW      R0              RETURN TO PARSER                     0936.000
         SPACE     5                                                    0937.000
*                                                                       0938.000
*   SET INDICATOR IN OPTION BLOCK TO SAY END-OF-FILE SHOULD BE WRITTEN  0939.000
*   AFTER THE ASSOCAITED FILE                                           0940.000
*                                                                       0941.000
AS.WEOF  EQU       $                                                    0942.000
         LI        R4,OPT.B.WE     BIT # IN OPTION WORD                 0943.000
         STW       R4,BITPTR                                            0944.000
         LI        R4,OPT.FLGS     WORD CONTAINING BIT OF INTEREST      0945.000
         ADMW      R4,COBADDR      ABSOLUTE ADDR OF WORD IN OPTION BLOCK0946.000
         STW       R4,ADDRPTR      SAVE ADDR SO CAN SET BIT BASED ON    0947.000
*                                  SPECIFIED BOOLEAN VALUE              0948.000
         TRSW      R0              RETURN                               0949.000
         SPACE                                                          0950.000
         BOUND     1W              ALIGN                                0951.000
         SPACE                                                          0952.000
*++                                                                     0953.000
* S.SDT - STATE TABLES FOR SDT COMMAND                                  0954.000
*                                                                       0955.000
* COMMAND SYNTAX:                                                       0956.000
*                                                                       0957.000
* SDT [ [BOOT=] FILE_NAME ]  [PATH=] IMAGE_NAME                         0958.000
*                  -->  OR  <--                                         0959.000
* SDT [ [BOOT=] FILE_NAME ]  [PATH=] IMAGE_NAME [WEOF=BOOL], [PATH=]    0960.000
*                                             FILE_NAME [WEOF=BOOL], ...0961.000
*                                                                       0962.000
*                  -->  OR  <--                                         0963.000
* SDT MASTER                                                            0964.000
*                                                                       0965.000
*                                                                       0966.000
* OPTIONS:                                                              0967.000
*                                                                       0968.000
*        GLOBAL ONLY --> BOOT=PATH_NAME                                 0969.000
*        WHERE PATH_NAME IS THE NAME OF THE FILE CONTAINING             0970.000
*        BOOTSTRAP LOADER CODE IN ABSOLUTE LOAD MODULE FORMAT           0971.000
*                                                                       0972.000
*        LOCAL ONLY --> WEOF=BOOL                                       0973.000
*        THIS SAYS TO WRITE AN END-OF-FILE MARK ON THE SDT TAPE         0974.000
*        AFTER THE FILE THIS LOCAL OPTION IS ASSOCIATED WITH            0975.000
*                                                                       0976.000
*        BRIEF=BOOL                                                     0977.000
*                                                                       0978.000
*  NOTES:                                                               0979.000
*        "SDT MASTER" COMMAND ACCEPTS NO PARAMETERS AND HAS NO OPTIONS !0980.000
*                                                                       0981.000
*        LOGICAL FILE CODE "TAP" IS ASSUMED TO BE EXTERNALLY            0982.000
*        ASSIGNED BEFORE ACTIVATION OF VOLMGR !!!                       0983.000
*                                                                       0984.000
*--                                                                     0985.000
         SPACE                                                          0986.000
S.SDTM   STATE                     MASTER SDT                           0987.000
           TRAN    LAMBDA,A.CMSDTM,EXIT                                 0988.000
         STATE                                                          0989.000
         SPACE     5                                                    0990.000
S.SDT    STATE                     STATE TABLE NON-MASTER SDT           0991.000
           TRAN    NOBLNK,A.GLOBAL      POSITION OPTION BLOCK FOR       0992.000
*                                       GLOBAL OPTIONS                  0993.000
S.10     STATE                                                          0994.000
           TRAN    EOS,,PERR006         ERROR -- MUST HAVE AT LEAST ONE 0995.000
*                                       PATHNAME                        0996.000
           TRAN    TSTEXP,,S.20,SS.KWSYN    IS IT A KEYWORD ???         0997.000
           TRAN    NOBLNK,,S.30              NOT A KEYWORD -- MUST BE AN0998.000
*                                            ACTUAL PATHNAME            0999.000
S.20     STATE                                                          1000.000
           TRAN    SUBEXP,,S.30,SS.INP,NOB.M      IS IT "PATH=" KEYWORD 1001.000
           TRAN    SUBEXP,,S.10,SS.OPTG,NOB.M     CHECK FOR LEGAL GLOBAL1002.000
*                                                 OPTION; IE., 'BOOT='  1003.000
*                                                 KEYWORDS              1004.000
           ERRVAL  INVKEY                         INVALID KEYWORD       1005.000
S.30     STATE                                                          1006.000
           TRAN    EOS,,PERR006              ERROR -- MUST HAVE AT LEAST1007.000
*                                            ONE PATHNAME               1008.000
           TRAN    NOBLNK,A.LOCAL            POSITION TO 1ST LOCAL      1009.000
*                                            OPTION BLOCK               1010.000
         STATE                                                          1011.000
           TRAN    SUBEXP,A.LOCAL,S.40,SS.SL00   GET PATHNAME & LOCAL OP1012.000
S.40       TRAN    EOS,A.CMD,EXIT            EXIT PARSE -- SUCCESSFUL   1013.000
*                                            ALSO PLUG ENTRY ADDRESS    1014.000
*                                            SYNTAX VIOLATION           1015.000
         STATE                                                          1016.000
         SPACE     3                                                    1017.000
SS.SL00  STATE                               INPUT FILE LIST            1018.000
           TRAN    SUBEXP,,,SS.PATNM,NOB.M                              1019.000
SS.SL10  STATE                                                          1020.000
           TRAN    TSTEXP,,,SS.KWSYN         LOOK FOR AN OPTION KEYWORD 1021.000
           TRAN    LAMBDA,,SS.SL20           MUST NOT BE ANY            1022.000
         STATE                                                          1023.000
           TRAN    SUBEXP,,SS.SL10,SS.OPTL,NOB.M GET A LOCAL OPTION     1024.000
SS.SL20  STATE                                                          1025.000
           TRAN    COMMA,A.LOCAL,SS.SL30,,NOB.M   GET MORE IF IN LIST   1026.000
           TRAN    NOBLNK,,EXIT              EXIT THIS SUBEXPRESSION    1027.000
SS.SL30  STATE                                                          1028.000
           TRAN    SUBEXP,,SS.SL00,SS.INP,NOB.M+LMB.M   "PATH=" KEYWORD 1029.000
         STATE                                                          1030.000
         SPACE     3                                                    1031.000
SS.OPTL  STATE                     OPTIONS APPLICABLE FOR THIS COMMAND  1032.000
           TRAN    KEYWD,,,K.OPTSL,NOB.M                                1033.000
         STATE                                                          1034.000
         SPACE     3                                                    1035.000
SS.OPTG  STATE                     OPTIONS APPLICABLE FOR THIS COMMAND  1036.000
           TRAN    KEYWD,,,K.OPTSG,NOB.M                                1037.000
         STATE                                                          1038.000
         SPACE     5                                                    1039.000
SS.WEOF  STATE                     WRITE END-OF-FILE BOOLEAN OPTION     1040.000
           TRAN    G'=',AS.WEOF,,,NOB.M      MAKE SURE IT'S KEYWORD     1041.000
*          ERRVAL  INVTERM                                              1042.000
         STATE                                                          1043.000
           TRAN    SUBEXP,,EXIT,SS.BOOL SET/CLEAR BIT FOR TRUE/FALSE    1044.000
*          ERRVAL  ???                                                  1045.000
         STATE                                                          1046.000
         SPACE     4                                                    1047.000
K.OPTSL  EQU       $                         SDT LOCAL OPTIONS          1048.000
         KEYWRD    WEOF,,SS.WEOF,3           WEOF=BOOL         ECKW-34  1049.000
         KEYWRD    BRIEF,,SS.BRIE,3          BRIEF=BOOL !32B01 ECKW-34  1050.000
         DATAW     0                         END OF LIST                1051.000
         SPACE     4                                                    1052.000
K.OPTSG  EQU       $                         SDT GLOBAL OPTIONS         1053.000
         KEYWRD    BOOT,,SS.LIST,3      BOOTFIL=PATH-NAM !32B01 ECKW-34 1054.000
         DATAW     0                         END OF LIST                1055.000
         SPACE     2                                                    1056.000
END      END                                                            1057.000
