STL 
          IDENT  STL,STL
          PERIPH
          BASE   MIXED
          SST    .EST 
          SYSCOM
*COMMENT  STL - SYSTEM TAPE LOADER. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  STL - SYSTEM TAPE LOADER.
          SPACE  4
***       STL - SYSTEM TAPE LOADER. 
* 
*         G. R. MANSFIELD.   72/02/02.
*         R. J. THIELEN.     75/12/20.
*         W. E. GOEBEL.      76/07/12.
*         P. D. HAAS.        78/06/05.
          SPACE  4
***              STL IS LOADED INTO PP 2 BY THE SYSTEM INITIALIZATION 
*         PROGRAM.  STL LOADS THE REMAINDER OF THE SYSTEM TAPE TO 
*         CENTRAL MEMORY AND MASS STORAGE DEVICES.  IT ALSO LOADS 
*         THE PP RESIDENT, THE SYSTEM MONITOR, THE SYSTEM DISPLAY 
*         PROGRAM, AND INITIALIZES RECOVERY RELOAD. 
          SPACE  4
***       OPERATOR MESSAGES.
* 
*         REFER TO OPERATORS GUIDE FOR INFORMATION AS TO CAUSE
*         OF ERROR AND RECOMMENDED CORRECTIVE ACTION. 
* 
*         *LOADING CXX, RCDNAME.* 
*         *TO CENTRAL MEMORY.*
* 
*         *LOADING CXX, RCDNAME.* 
*         *TO CONTROL MODULE.*
* 
*         *LOADING CXX, RCDNAME.* 
*         *TO CONTROLLER.*
* 
*         *LOADING CXX, RCDNAME.* 
*         *TO FLPP.*
* 
*         *AUTOLOAD FAILURE, STXXXX.* 
* 
*         *EQXXX, 2X PPS REQUIRED.* 
* 
*         *EQXXX, NO FT CONTROLLER.*
* 
*         *MAINTENANCE REGISTER ERROR.* 
          SPACE  4
***       ENTRY CONDITIONS. 
* 
* 
*         (T1) = DEADSTART CHANNEL. 
*         (T2) = RECOVERY STATUS. 
*         (CM) = DEADSTART OPTIONS = 8/,2/RA,1/A,1/G. 
*                A = 0 TO ENABLE AUTOLOADING. 
*                  = 1 TO DISABLE AUTOLOADING.
*                G = 0 TO DISABLE GRENADE OPERATION AFTER AUTOLOAD. 
*                  = 1 TO ENABLE GRENADE OPERATION AFTER AUTOLOAD.
*                RA = 0, ALLOW RECOVERY.
*                RA = 1, CHECKPOINT ALL DEVICES, ABORT LEVEL 3. 
*                RA = 2 OR 3, CHECKPOINT NON-BUFFERED DEVICES,
*                        ABORT LEVEL 3 RECOVERY.
*         (DRSW) = DEADSTART EQUIPMENT. 
*         (DRSW+1) = FIRST TRACK OF RMS DEADSTART FILE. 
          SPACE  4
**        PROGRAMS CALLED.
* 
* 
*         0BF - BEGIN FILE. 
          SPACE  4
*CALL     COMPMAC 
*CALL     COMSCPS 
*CALL     COMSDSL 
*CALL     COMSDST 
*CALL     COMSEJT 
          QUAL   IOU
*CALL     COMSIOU 
          QUAL   *
*CALL     COMSJCE 
*CALL     COMSMSC 
          QUAL   MSP
*CALL     COMSMSP 
          QUAL   *
*CALL     COMSMTR 
*CALL     COMSPRD 
*CALL     COMSPIM 
          QUAL   SCD
*CALL     COMSSCD 
          QUAL   *
*CALL     COMSSCR 
*CALL     COMSSSD 
*CALL     COMSZOL 
*CALL     COMS176 
*CALL     COMSHIO 
*CALL     COMPCHM 
*CALL     COMPMRM 
  
 MRRD     EQU    /IOU/MRRD
 MRWT     EQU    /IOU/MRWT
          SPACE  4
****      DIRECT LOCATION ASSIGNMENTS.
  
  
 CN       EQU    20 - 24     CM WORD BUFFER (5 LOCATIONS) 
 FS       EQU    20 - 24     FST ENTRY (0BF)
 RS       EQU    25          RECOVERY STATUS
 QA       EQU    26          FNT ORDINAL (0BQ)
*         EQU    27          SPARE
 ZR       EQU    30 - 34     CM ZERO WORD (5 LOCATIONS) 
 LL       EQU    35          DEADSTART LIBRARY LENGTH 
 CA       EQU    36 - 37     CURRENT CENTRAL ADDRESS (2 LOCATIONS)
 FN       EQU    40 - 44     FILE NAME (0BF)
 WC       EQU    42          WORD COUNT OF BLOCK
 BA       EQU    43          PPU BUFFER ADDRESS 
 BL       EQU    44          PPU BUFFER LIMIT 
 DH       EQU    45          DEADSTART CHANNEL
 NC       EQU    46          NUMBER OF CONTROL POINTS 
 RN       EQU    47          REGISTER NUMBER (COMPMRM)
 RP       EQU    IR+3        RPL ENTRY COUNT
 FA       EQU    57          FNT ORDINAL (0BF)
 DP       EQU    60 - 64     DATA POINTER (5 LOCATIONS) 
 XA       EQU    66          EXCHANGE ADDRESS (FOR CYBER 176 CPU) 
 BC       EQU    66 - 67     BLOCK COUNTER
****
          SPACE  4
*         ASSEMBLY CONSTANTS. 
  
  
 BUF      EQU    TPBA        TAPE BLOCK BUFFER
 FWBF     EQU    BUF         FIRMWARE BUFFER
 FWBFL    EQU    1000        FIRMWARE BUFFER LENGTH (CM WORDS)
 FCCN     EQU    0           CONNECT FUNCTION 
 FCOC     EQU    10          OPERATION COMPLETE FUNCTION CODE 
 FCGR     EQU    11          GRENADE FUNCTION CODE
 FCGS     EQU    12          GENERAL STATUS FUNCTION CODE 
 FCLC     EQU    71          LOAD CONTROL MODULE CONTROLWARE FROM PP
 FCAL     EQU    414         AUTOLOAD FUNCTION CODE 
          TITLE  MAIN PROGRAM.
 STL      SPACE  4
**        STL - MAIN PROGRAM. 
  
  
          ORG    PPFW 
  
 STL      RJM    PRS         PRESET PROGRAM 
          RJM    LPP         LOAD *MTR* 
          RJM    LPP         LOAD *DSD* 
          RJM    CPM         LOAD *CPUMTR*
          RJM    L1M         LOAD *MTR* PRESET OVERLAYS TO RPL
          LDN    1           SET NO PP DROP 
          STD    T1 
          RJM    MSFW+1      INITIALIZE PP RESIDENT 
 CC1      DCN.   0           START *MTR*
          LDN    IPRF        INITIALIZE *DIO* RESIDENT
          RJM    IDF
          RJM    RTB         READ TAPE BLOCK
          RJM    ROV         READ OVERLAY *RSL* 
          RJM    /RSL/SBA    SET OS BOUNDS ADDRESS
          RJM    /RSL/LIB    BUILD DEADSTART RPL
          RJM    /RSL/PLD    BUILD DEADSTART PLD
          RJM    /RSL/APP    ACTIVATE PP-S
  
*         LOAD *MTE* FOR MULTI-MAINFRAME VIA LOW SPEED PORT.
  
 STLD     LDD    MA          REQUEST PP FOR *MTE* 
*         UJN    STL2        (NOT LSPMMF) 
          CWM    STLE,ON
          LDN    1           SELECT NO QUEUING OF PP REQUEST
          STD    CM+1 
          MONITOR  RPPM 
 STL1     LDD    CM+1        CHECK *MTE* INPUT REGISTER 
          CRD    DP 
          DELAY 
          LDD    DP+2 
          ZJN    STL1        IF *MTE* PRESET NOT COMPLETE 
          STM    STLF        POSSIBLE LINK DEVICE LABEL TRACK 
          SHN    21-13
          MJN    STL2        IF TRACK NUMBER RATHER THAN ERROR STATUS 
          LDM    STLA+3      PRESERVE *DEADSTART ABORT* STATUS FLAGS
          LPC    3000 
          ADD    DP+2        ADD *MTE* STATUS 
          STM    STLA+3 
  
*         LOAD DISK CONTROLWARE, FLPP-S AND BUFFERED I/O DRIVERS. 
  
 STL2     EXECUTE BCL        LOAD CONTROLWARE, FLPP-S AND DRIVERS 
          LDD    RS          CHECK RECOVERY STATUS
          LPN    SYMK 
          ZJN    STL3        IF SYSTEM FILE LOAD
          LDN    DPPF&IPPF
 STL3     LMN    IPPF        IDLE/DROP *DIO*
          RJM    IDF
          LDC    DSCP+ENRS   CHANGE TO DEADSTART CONTROL POINT
          STD    CM+1 
          LPN    37 
          STD    IR+1 
          SHN    7
          ADN    STSW        SAVE ROLLOUT STATUS
          CRD    CN 
          CRD    DP 
          STD    T1 
          MONITOR  CCAM 
*         LDN    0           CLEAR ROLLOUT STATUS TO ALLOW *RPPM* 
          STD    DP+2 
          AOD    DP          INCLUDE *STL* IN PP COUNT
          STD    CN 
          LDD    T1          STORE CP STATUS WORD 
          CWD    DP 
  
*         CALL *RMS* TO RECOVER MASS STORAGE. 
  
          LDM    STLA+3      CHECK ERROR STATUS FLAGS 
          NJN    STL3.1      IF ERROR STATUS PRESENT
          LDM    STLF        SET LINK DEVICE LABEL TRACK
          STM    STLA+3 
 STL3.1   LDD    MA          REQUEST PP FOR *RMS* 
          CWM    STLA,ON
          LDN    1           SELECT NO QUEUING OF PP REQUEST
          STD    CM+1 
          MONITOR RPPM
          LDD    CM+1        SET ADDRESS OF *RMS* INPUT REGISTER
          STM    STLB+3 
          AOD    CN          INCLUDE *RMS* IN PP COUNT
          LDC    0
 STLC     EQU    *-1
          ZJN    STL4        IF NO JOB AT DEADSTART CP
          CWM    .JSNE,ON 
 STL4     LDN    SMRL        PRESERVE MOVE STATUS FOR *REC* 
          CWM    .SMRL,ON 
          LDD    T1          RESTORE ROLLOUT STATUS 
          CWD    CN 
          LDD    RS          CHECK RECOVERY STATUS
          LPN    SYMK 
          NJN    STL5        IF NO SYSTEM FILE LOAD 
          LDD    MA          REQUEST PP FOR *SLL* 
          CWM    STLB,ON
          LDN    1           SELECT NO QUEUING OF PP REQUEST
          STD    CM+1 
          MONITOR RPPM
          RJM    ROV         READ OVERLAY *LSL* 
          RJM    /LSL/LSL    LOAD SYSTEM LIBRARY
 STL5     MONITOR  DPPM      DROP PP
          LJM    PPR         EXIT TO PP RESIDENT
  
 STLA     VFD    18/0LRMS,42/0
 STLB     VFD    18/0LSLL,6/0,12/1,24/0 
 STLE     VFD    18/0LMTE,42/0
 STLF     CON    0           LINK DEVICE LABEL TRACK
 .JSNE    VFD    60/0 
 .SMRL    VFD    60/0 
          TITLE  TAPE PROCESSING SUBROUTINES. 
 CID      SPACE  4
**        CID - CHECK IDENT TABLE.
* 
*         ENTRY  (BA) = BUFFER OUTPUT ADDRESS.
* 
*         EXIT   (BA) ADVANCED TO SKIP 7700 TABLE.
*                (T1) = WORD COUNT SKIPPED. 
*                (A) = 0 IF NO PREFIX TABLE.
  
  
 CID1     LDN    0           CLEAR WORD COUNT 
          STD    T1 
  
 CID      SUBR               ENTRY/EXIT 
          LDI    BA          CHECK FIRST WORD 
          LMC    7700 
          NJN    CID1        IF NO 7700 TABLE 
          STI    BA 
          AOM    1,BA        SKIP 7700 TABLE
          STD    T1 
          SHN    2
          ADD    T1 
          RAD    BA 
          UJN    CIDX        RETURN 
 GCM      SPACE  4,10 
**        GCM - GET CMR MEMORY. 
* 
*         ENTRY  (A) = LENGTH OF CM BLOCK DESIRED.
*                (CA - CA+1) = FWA OF CENTRAL MEMORY BLOCK. 
* 
*         EXIT   SIZE OF CMR INCREASED IF NECESSARY TO CONTAIN BLOCK. 
* 
*         USES   LL, CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 GCM      SUBR               ENTRY/EXIT 
          ADD    CA+1        SET LWA OF BLOCK 
          SHN    6
          ADD    CA 
          SHN    14 
          ADN    77          ROUND UP TO NEXT 100 
          SHN    -6 
          STD    LL          SAVE REQUIRED CMR SIZE 
 GCM1     LDK    CMRL 
          CRD    CM 
          LDD    CM+4 
          SBD    LL 
          PJN    GCMX        IF STORAGE AVAILABLE 
          LDD    LL 
          ADN    10          REQUEST EXTRA 1K 
          STD    CM+1 
          LDC    1000        SET CMR REQUEST
          STD    CM+2 
          MONITOR RSTM
          UJN    GCM1        CHECK IF ASSIGNED
 IDF      SPACE  4,10 
**        IDF - ISSUE *DIO* FUNCTION. 
* 
*         ENTRY  (A) = FUNCTION REQUEST.
  
  
 IDF      SUBR               ENTRY/EXIT 
          ACN    PC 
          OAN    PC          TRANSMIT FUNCTION
          AJM    *,PC        WAIT FUNCTION ACCEPT 
          UJN    IDFX        RETURN 
 ROV      SPACE  4
**        ROV - READ OVERLAY. 
  
  
 ROV      SUBR               ENTRY/EXIT 
          RJM    CID         CHECK IDENT TABLE
          LDM    2,BA        SET COPY ADDRESS 
          ADN    5
          STD    T1 
          LDN    5
          RAD    BA 
 ROV1     LDI    BA          COPY OVERLAY 
          STI    T1 
          AOD    T1 
          AOD    BA 
          LMD    BL 
          NJN    ROV1        LOOP UNTIL END OF COPY 
          UJN    ROVX        RETURN 
 RTB      SPACE  4,10 
**        RTB - READ TAPE BLOCK.
* 
*         EXIT   (WC) = (A) = WORD COUNT OF RECORD. 
*                (BA) = PPU BUFFER ADDRESS. 
*                (BL) = PPU BUFFER LIMIT. 
* 
*         CALLS  IDF. 
  
  
 RTB      SUBR               ENTRY/EXIT 
          LDN    RTBF        ISSUE READ TAPE BLOCK FUNCTION 
          RJM    IDF
          ACN    PC 
          IAN    PC          INPUT CM WORD COUNT
          STD    WC 
          ZJN    RTB1        IF EMPTY PRU 
          SHN    2           CONVERT TO BYTE COUNT
          ADD    WC 
          IAM    BUF,PC      INPUT TAPE BLOCK 
 RTB1     LDC    BUF         SET PP BUFFER ADDRESS
          STD    BA 
          LDD    WC          SET PP BUFFER LIMIT
          SHN    2
          ADD    WC 
          ADD    BA 
          STD    BL 
          LDD    WC          (A) = WORD COUNT 
          UJN    RTBX        RETURN 
 WOG      SPACE  4,10 
**        WOG - WAIT FOR OPERATOR *GO.*.
* 
*         ENTRY  (A) = ADDRESS OF MESSAGE TO BE WRITTEN TO MS2W.
* 
*         EXIT   (A) = 0. 
*                OPERATOR ENTERED *GO.* COMMAND.
* 
*         USES   T1, CM - CM+4. 
* 
*         MACROS PAUSE. 
  
  
 WOG      SUBR               ENTRY/EXIT 
          STM    WOGA        SET MESSAGE ADDRESS
          LDD    NC 
          SHN    7           READ SENSE SWITCH WORD 
          ADN    SNSW 
          STD    T1          SAVE ADDRESS 
          CRD    CM 
          LDD    CM+3        SET PAUSE BIT
          SCN    1
          LMN    1
          STD    CM+3 
          LDD    T1 
          CWD    CM 
          ADN    MS2W-SNSW   WRITE MESSAGE TO MS2W
          CWM    *,TR 
 WOGA     EQU    *-1         MESSAGE ADDRESS
 WOG1     PAUSE  NE 
          LDD    T1          CHECK PAUSE BIT
          CRD    CM 
          LDD    CM+3 
          LPN    1
          ZJN    WOGX        IF PAUSE BIT CLEAR 
          UJN    WOG1        LOOP 
          SPACE  4,10 
 DSTO     BSS    1           DEADSTART OPTIONS
 COMMON   SPACE  4,10 
**        COMMON DECKS. 
* 
*         NOTE - IT IS NECESSARY TO USE *COMPGFP* FOR EST ACCESS, 
*         SINCE THE EST MUST BE ACCESSED PRIOR TO *PPR* STARTUP.
  
  
 EJT$     EQU    1           SELECT EJT PROCESSOR 
 EST$     EQU    1           SELECT EST PROCESSOR 
 IFP$     EQU    1           SELECT REMOTE INITIALIZATION CODE
*CALL     COMPGFP 
          SPACE  4
          USE    INITIAL
          TITLE  INITIAL LOAD PROCESSORS. 
 TPPA     SPACE  4
**        TPPA - TABLE OF PP AVAILABILITIES.
*         ENTRY = 1 WORD. 
* 
*T,       12/  CH 
*         CH     CHANNEL NUMBER TO WHICH PP IS ATTACHED + OANI
  
  
 TPPA     BSS    0
          LOC    0
  
          CON    0+OANI      PP 0 
          CON    1+OANI      PP 1 
          CON    0           PP 2 - NOT NORMAL ASSIGNMENT 
          CON    3+OANI      PP 3 
          CON    4+OANI      PP 4 
          CON    5+OANI      PP 5 
          CON    6+OANI      PP 6 
          CON    7+OANI      PP 7 
          CON    PC+OANI
          CON    11+OANI     PP 11
  
          CON    20+OANI     PP 20
          CON    21+OANI     PP 21
          CON    22+OANI     PP 22
          CON    23+OANI     PP 23
          CON    24+OANI     PP 24
          CON    25+OANI     PP 25
          CON    26+OANI     PP 26
          CON    27+OANI     PP 27
          CON    30+OANI     PP 30
          CON    31+OANI     PP 31
  
 TPPAL    BSS    0
          LOC    *O 
          CON    0           (DUMMY)
 LPP      SPACE  4,10 
**        LPP - LOAD PP PACKAGE.
* 
*         CALLS  CID, OTB, RTB. 
  
  
          QUAL   LPP
 LPP      SUBR               ENTRY/EXIT 
          RJM    RTB         READ FIRST BLOCK 
          RJM    CID         CHECK IDENT TABLE
 LPP1     AOM    LPPA 
          LDM    TPPA-1 
 LPPA     EQU    *-1         CURRENT TABLE INDEX
          ZJN    LPP1        IF PP NOT AVAILABLE
          STM    OTBA        SET *OAN*
          LDN    5           SKIP HEADER
          RAD    BA 
 LPP2     RJM    OTB         OUTPUT TAPE BLOCK
          LDD    WC          CHECK BLOCK WORD COUNT 
          SHN    -11
          ZJN    LPPX        IF SHORT BLOCK RETURN
          RJM    RTB         READ NEXT BLOCK
          ZJN    LPPX        IF EMPTY BLOCK RETURN
          UJN    LPP2        OUTPUT NEXT BLOCK
  
          QUAL   *
 LPP      EQU    /LPP/LPP 
 OTB      SPACE  4,10 
**        OTB - OUTPUT TAPE BLOCK.
* 
*         ENTRY  (BA) = PPU BUFFER ADDRESS. 
*                (BL) = PPU BUFFER LIMIT. 
*                (OTBA) = OUTPUT INSTRUCTION. 
* 
  
  
 OTB      SUBR               ENTRY/EXIT 
          LDD    BA 
          STD    T0 
 OTB1     LDI    T0          OUTPUT BYTE
 OTBA     OAN.   ** 
          AOD    T0          ADVANCE BYTE 
          LMD    BL 
          NJN    OTB1        LOOP TO END OF BLOCK 
          UJN    OTBX        RETURN 
          TITLE  LOAD PROCESSORS. 
 CPM      SPACE  4
**        CPM - LOAD CPU MONITOR. 
  
  
 CPM      SUBR               ENTRY/EXIT 
          RJM    RTB         READ BLOCK 
 CPM1     RJM    AVB         ADVANCE BUFFER 
          NJN    CPM4        IF END OF RECORD 
          LDD    CM+1        SET TABLE WORD COUNT 
          STD    T7 
          LDD    CM          CHECK TABLE ID 
          SHN    14 
          LMN    36 
          NJN    CPM2        IF NOT ENTRY TABLE 
          RJM    ENT         PROCESS ENTRY TABLE
          UJN    CPM3 
  
 CPM2     LMN    40&36
          NJN    CPM3        IF NOT TEXT TABLE
          RJM    TXT         PROCESS TEXT TABLE 
  
 CPM3     LDD    T7 
          ZJN    CPM1        IF END OF TABLE
          RJM    AVB         ADVANCE BUFFER 
          SOD    T7 
          UJN    CPM3        LOOP TO END OF TABLE 
  
*         INITIALIZE CPU MONITOR. 
  
 CPM4     LDN    0           CLEAR ZERO WORD
          STD    ZR 
          STD    ZR+1 
          LDN    ACPL        READ CPU 0 STATUS
          CRD    CM 
          LDD    CM          CHECK CPU 0
          SHN    6
          PJN    CPM5        IF AVAILABLE 
          AOM    CPMA        SET CPU 1
 CPM5     LDN    20          READ DEADSTART EXCHANGE PACKAGE
          STD    CM 
          LDD    NC 
          SHN    7
          CRM    BUF,CM 
          LDD    XA 
          ZJN    CPM6        IF NOT A 176 CPU 
          SHN    11          SET NEA IN EXCHANGE PACKAGE
          STM    BUF+6*5+1
          SHN    -14
          STM    BUF+6*5
          LDN    20          SET MONITOR MODE BIT FOR CYBER 176 
          STM    BUF+5*3
          LDD    XA 
          SHN    11 
          CWM    BUF,CM 
          LDC    FCCL+DSCU   DEAD START CPU 
          OAN.   SC 
          IAN.   SC 
          LDC    FCSB+DSCU
          OAN.   SC 
          IAN.   SC 
          UJN    CPM7        CHECK OPERATION COMPLETE 
  
 CPM6     LDD    NC          START CPU
          SHN    7
 CPMA     EXN    0
 CPM7     IAN.   14 
          STD    DP 
 CC2      DCN.   0           START *DSD*
 CPM8     IAN.   14 
          SBD    DP 
          PJN    CPM9        IF ROLLOVER
          ADC    10000
 CPM9     ADC    -1000D 
          MJN    CPM8        IF NOT ONE MILLISECOND 
          ADC    1000D
          RAD    DP 
          AOD    DP+4 
          SHN    -14
          RAD    DP+3 
          LDC    RTCL 
          CWD    DP 
          LDN    0           CHECK *CPUMTR* LOADED
          CRD    CM 
          LDD    CM+3 
          ADD    CM+4 
          ZJN    CPM8        IF OPERATION NOT COMPLETE
          LDD    CM 
          ZJN    CPM11       IF *CPUMTR* PRESET COMPLETE
          RJM    RTB
          LDD    WC          SET WORD COUNT 
          STD    T1 
          NJN    CPM10       IF NOT ZERO LENGTH BLOCK 
          AOD    T1 
 CPM10    LDD    CM+3 
          SHN    14 
          ADD    CM+4 
          CWD    WC-4        STORE BLOCK LENGTH 
          ADN    1
          CWM    BUF,T1 
          LDN    0           INDICATE COMPLETE
          CWD    ZR 
          LJM    CPM8        LOOP 
  
 CPM11    LDD    CM+3        SET END OF *CPUMTR*
          STD    CA 
          LDD    CM+4 
          STD    CA+1 
          LDN    0           CLEAR OPERATON COMPLETE
          CWD    ZR 
          CRD    DP 
          LDN    20          SET EXCHANGE PACKAGE WORD COUNT
          STD    T1 
          LDN    ACPL        READ CPU 0 STATUS
          CRD    CM 
          STD    T2 
          ADN    EFRL-ACPL   READ MMF LINK DEVICE STATUS
          CRD    CN 
          SBN    EFRL-RTCL   RESTORE REAL TIME CLOCK
          CWM    CPMD,ON
          LDD    CN+4 
          ZJN    CPM13       IF NO STATUS IN *EFRL* 
          STM    STLF        POSSIBLE LINK DEVICE LABEL TRACK 
          LMC    -0          COMPLEMENT RESPONSE
          STM    CPMC 
          SHN    21-13
          PJN    CPM13       IF TRACK NUMBER RATHER THAN ERROR STATUS 
          LDM    STLA+3      PREVIOUS STATUS/REQUESTS 
          LPC    **          CLEAR SLOTS FOR NEW STATUS 
 CPMC     EQU    *-1
          ADD    CN+4        ADD NEW STATUS 
          STM    STLA+3 
 CPM13    LDD    CM          CHECK CPU 0 STATUS 
          STD    DP 
          SHN    6
          MJN    CPM14       IF CPU 0 NOT AVAILABLE 
          RJM    SIP         START IDLE PROGRAM 
 CPM14    AOD    T2          CHECK CPU 1 STATUS 
          CRD    CM 
          LDD    CM          CHECK CPU 1 STATUS 
          STD    DP 
          SHN    6
          MJN    CPM15       IF CPU 1 NOT AVAILABLE 
          AOM    SIPB 
 CPME     UJN    CPM14.1     START IDLE PROGRAM FOR CPU1
*         PSN                (DUAL CPU MACHINE WITH CACHE)
          LDC    UJNI+77-SIPB+SIP0  USE *INPN* INSTRUCTION
          ERRPL  SIP0-SIPB   JUMP OUT OF RANGE
          ERRNG  SIP0-SIPB+37  JUMP OUT OF RANGE
          STM    SIPB 
 CPM14.1  RJM    SIP         START IDLE PROGRAM 
 CPM15    LJM    CPMX        RETURN 
  
  
 CPMD     BSSZ   5
 L1M      SPACE  4,10 
**        L1M - LOAD *MTR* PRESET OVERLAYS TO RPL.
* 
*         USES   T1, CM - CM+4. 
* 
*         CALLS  CID, RTB.
  
  
 L1M      SUBR               ENTRY/EXIT 
          LDK    RPLP        SET UP RPL POINTER 
          CRD    CM 
          LDN    PPIL        RESERVE SPACE FOR PP IDLE CODE 
          RAD    CA+1 
          STD    CM+1 
          SHN    -14         SET RPL ADDRESS
          RAD    CA 
          STD    CM 
          LDK    RPLP        STORE RPL POINTER
          CWD    CM 
          LDN    6           SET NUMBER OF *MTR* PRESET OVERLAYS
          STD    CM+2 
 L1M1     RJM    RTB         READ NEXT *MTR* PRESET OVERLAY 
          RJM    CID         SKIP OVER PREFIX TABLE 
          LDD    BA 
          STM    L1MA 
          LDM    4,BA        LENGTH OF PROGRAM
          STD    T1 
          LDD    CM 
          SHN    14 
          LMD    CM+1 
          CWM    *,T1        WRITE OVERLAY TO CENTRAL MEMORY
 L1MA     EQU    *-1
          CWD    ZR          TERMINATE WITH A ZERO WORD 
          STD    CM+1        SAVE LWA + 1 OF OVERLAY
          SHN    -14
          STD    CM 
          SOD    CM+2 
          NJN    L1M1        IF MORE PRESET OVERLAYS TO LOAD
          LJM    L1MX        EXIT 
          TITLE  SUBROUTINES. 
 AVB      SPACE  4
**        AVB - ADVANCE BUFFER. 
* 
*         ENTRY  (BA) = PPU BUFFER ADDRESS. 
*                (BL) = PPU BUFFER LIMIT. 
*                (WC) = WORD COUNT OF BLOCK.
* 
*         EXIT   (A) .NE 0 IF END OF RECORD.
*                (CM - CM+4) = NEXT CM WORD FROM BUFFER.
* 
*         USES   T1.
* 
*         CALLS  RTB. 
  
  
 AVB2     LDI    BA          COPY WORD
          STI    T1 
          AOD    BA 
          AOD    T1 
          LMN    CM+5 
          NJN    AVB2        LOOP TO END OF WORD
  
 AVB      SUBR               ENTRY/EXIT 
 AVB1     LDN    CM          SET BYTE ADDRESS 
          STD    T1 
          LDD    BA 
          LMD    BL 
          NJN    AVB2        IF BUFFER NOT EMPTY
          LDD    WC          CHECK BLOCK WORD COUNT 
          LMD    TH 
          NJN    AVBX        RETURN IF SHORT BLOCK
          RJM    RTB         READ NEXT BLOCK
          UJN    AVB1 
 ENT      SPACE  4
**        ENT - PROCESS ENTRY TABLE.
* 
*         ENTRY  (BA) = PPU BUFFER ADDRESS. 
* 
*         EXIT   (BA) ADVANCED. 
* 
*         USES   CM - CM+4. 
* 
*         CALLS  AVB. 
  
  
 ENT      SUBR               ENTRY/EXIT 
          RJM    AVB         SKIP ENTRY NAME
          SOD    T7 
          RJM    AVB         READ ENTRY ADDRESS 
          SOD    T7 
          LDD    CM+3        RELOCATE ADDRESS 
          LPN    37 
          ADD    CA 
          SHN    14 
          ADD    CM+4 
          ADD    CA+1 
          STD    CM+1        (P) = ENTRY ADDRESS
          SHN    -14
          STD    CM 
          LDD    NC          STORE (P)
          SHN    7
          CWD    CM 
          UJN    ENTX        RETURN 
 MRER     SPACE  4,10 
 SIP      SPACE  4
**        SIP - START IDLE PROGRAM. 
* 
*         ENTRY  (T1) = EXCHANGE PACKAGE LENGTH.
*                (T2) = ADDRESS OF *ACPL* WORD. 
*                (CM+3 - CM+4) = EXCHANGE PACKAGE ADDRESS.
*                (DP - DP+4) = *ACPL* WORD. 
* 
*         USES   CN - CN+4. 
  
 SIP0     EXN    1           MOVE CPU1 ON DUAL CPU CACHE MACHINE
*         INPN   4           (INTERRUPT PROCESSOR ON PORT 4)
 SIPD     EQU    *-1
          STM    SIPD        CLEAR LONG INSTRUCTION 
 SIP0.1   LDD    CM+3 
          SHN    14 
          LMD    CM+4 
          ADN    11          CHECK FOR (X1) = ZERO
          CRD    CN 
          LDD    CN 
          NJN    SIP0.1      IF IDLE PACKAGE NOT YET ACTIVE 
          LDD    CM+3 
          SHN    14 
          LMD    CM+4 
          UJN    SIP2        RESTORE IDLE EXCHANGE PACKAGE
  
 SIP1     SBD    T1          MOVE CPU TO IDLE PACKAGE 
 SIPB     EXN    0
*         EXN    1           (PROCESSING CPU 1) 
*         UJN    SIP0        (CPU 1 ON DUAL CPU CACHE MACHINE)
 SIP2     CRD    CN 
          CWM    BFMS,T1     RESTORE IDLE EXCHANGE PACKAGE
  
 SIP      SUBR               ENTRY/EXIT 
          LDD    T2          CLEAR *ACPL* EXCEPT CPU STATUS 
          CWD    DP 
          LDD    CM+3        SAVE EXCHANGE PACKAGE
          STM    SIPC 
          SHN    14 
          LMD    CM+4 
          STM    SIPC+1 
          CRM    BFMS,T1
 SIPA     UJN    SIP1        MOVE CPU 
*         PSN                (176 TYPE CPU) 
          LDD    XA          STORE IDLE PACKAGE 
          SHN    11 
          ADN    5
          CWM    SIPC,ON     MA 
          CWM    SIPC,ON     EEA
          LDC    FCCL+DSCU   DEAD START CPU 
          OAN.   SC 
          IAN.   SC 
          LDC    FCSB+DSCU
          OAN.   SC 
          IAN.   SC 
          LDD    CM+3 
          SHN    14 
          LMD    CM+4 
          LJM    SIP2        RESTORE IDLE EXCHANGE PACKAGE
  
 SIPC     VFD    60/0 
 TXT      SPACE  4
**        TXT - PROCESS TEXT TABLE. 
* 
*         ENTRY  (T7) = TABLE WORD COUNT. 
* 
*         EXIT   BUFFER ADVANCED. 
* 
*         USES   T1 - T7, CM - CM+4, CN - CN+4, CW - CW+1.
  
  
 TXT      SUBR               ENTRY/EXIT 
          LDD    CM+3        SET LOAD ADDRESS 
          LPN    37 
          ADD    CA 
          SHN    14 
          ADD    CM+4 
          ADD    CA+1 
          STD    T5 
          SHN    -14
          STD    T4 
          RJM    AVB         READ RELOCATION WORD 
          LDD    MA          MOVE TO RELOCATION BUFFER
          CWD    CM 
          CRD    CN 
          LDN    CN          SET FIRST BYTE OF RELOCATION WORD
          STD    ZR 
  
*         NEXT BYTE OF RELOCATION WORD. 
  
 TXT1     LDN    3           SET BYTE COUNT 
          STD    ZR+1 
          LDI    ZR          SET RELOCATION BYTE
          STD    T6 
          AOD    ZR          ADVANCE BYTE 
 TXT2     SOD    T7          DECREMENT TABLE COUNT
          ZJN    TXTX        RETURN IF END OF TABLE 
          RJM    AVB         READ NEXT WORD 
          LDD    T6          SET RELOCATION BYTE
          SHN    -10
          STD    T2 
          LPN    14 
          LMN    10 
          ZJN    TXT3        IF UPPER POSITIVE
          LMN    4
          NJN    TXT4        IF NOT UPPER NEGATIVE
  
*         PROCESS UPPER RELOCTION.
  
          LCN    0           -0 FOR NEGATIVE
 TXT3     LMD    CA          FORMAT ORIGIN FOR RELOCATION 
          SHN    14 
          LMD    CA+1 
          SHN    14 
          STD    T0 
          SHN    -6 
          SCN    77 
          ADD    CM+2        ADD RELOCATION TO ADDRESS
          SCN    77 
          SHN    6
          ADD    T0 
          RAD    CM+1 
          SHN    -6 
          LMD    CM+2 
          SCN    77 
          LMD    CM+2 
          STD    CM+2 
          LJM    TXT6        CHECK FOR LOWER RELOCATION 
  
 TXT4     LDD    T2 
          LPN    16 
          LMN    4
          ZJN    TXT5        IF MIDDLE POSITIVE 
          LMN    2
          NJN    TXT6        IF NOT NEGATIVE MIDDLE 
  
*         PROCESS MIDDLE RELOCATION.
  
          LCN    0           -0 FOR NEGATIVE RELOCATION 
 TXT5     LMD    CA          FORMAT ORIGIN FOR RELOCATION 
          SHN    14 
          LMD    CA+1 
          STD    T1 
          SHN    -11
          STD    T0 
          LDD    CM+2        RELOCATE ADDRESS 
          LPC    777
          RAD    T0 
          LDD    T1 
          SHN    11 
          SHN    -6 
          ADD    CM+3 
          SCN    7
          SHN    6
          RAD    T0 
          SHN    -6 
          LMD    CM+3 
          SCN    7
          LMD    CM+3 
          STD    CM+3 
          LDD    T0 
          LMD    CM+2 
          LPC    777
          LMD    CM+2 
          STD    CM+2 
          UJN    TXT8 
  
 TXT6     LDD    T2 
          LPN    3
          LMN    2
          ZJN    TXT7        IF LOWER POSITIVE
          LMN    1
          NJN    TXT8        IF NOT LOWER NEGATIVE
  
*         PROCESS LOWER RELOCATION. 
  
          LCN    0           -0 FOR NEGATIVE RELOCATION 
 TXT7     LMD    CA          FORMAT ORIGIN FOR RELOCATION 
          SHN    14 
          LMD    CA+1 
          STD    T1 
          SHN    -14
          STD    T0 
          LDD    CM+3        RELOCATE ADDRESS 
          LPN    77 
          ADD    T0 
          SHN    14 
          ADD    T1 
          RAD    CM+4 
          SHN    -14
          LMD    CM+3 
          LPN    77 
          LMD    CM+3 
          STD    CM+3 
 TXT8     LDD    T4          STORE WORD 
          SHN    14 
          ADD    T5 
          CWD    CM 
          AOD    T5          ADVANCE WORD ADDRESS 
          SHN    -14
          RAD    T4 
          LDD    T6          SHIFT TO NEXT RELOCATION BYTE
          SHN    4
          STD    T6 
          SOD    ZR+1 
          ZJN    TXT9        IF END OF 3 WORDS
          LJM    TXT2        PROCESS NEXT WORD
  
 TXT9     LJM    TXT1        SET NEXT BYTE
          SPACE  4
          ERRMI  BUF-*       OVERFLOW INTO TAPE BUFFER
 LPR      SPACE  4
**        LPR - LOAD PP RESIDENT. 
  
  
 LPR2     STM    TPPA+CH     DISABLE *DIO* ACTIVATION 
          LDD    T2          RESET COMMUNICATION ADDRESSES
          STD    IA 
          ADN    1
          STD    OA 
          ADN    1
          STD    MA 
  
 LPR      SUBR               ENTRY/EXIT 
          LDD    IA          SAVE INPUT REGISTER ADDRESS
          STD    T2 
          LDN    2           SET PP 2 
          STD    T1 
 LPR1     AOD    T1          ADVANCE PP 
          LMN    TPPAL
          ZJN    LPR2        IF END OF PP-S 
          LDN    10          ADVANCE COMMUNICATION ADDRESSES
          RAD    IA 
          ADN    1
          STD    OA 
          ADN    1
          STD    MA 
          LDM    TPPA,T1     CHECK PP AVAILABILITY
          ZJN    LPR1        IF NOT AVAILABLE 
          STM    LPRA 
          LMD    HN          SET *OAM*
          STM    LPRB 
          LDC    MSFW+1      OUTPUT START ADDRESS 
 LPRA     OAN.   ** 
          LDC    PPFW-1      OUTPUT PPR 
 LPRB     OAM.   1,** 
          UJN    LPR1        LOOP 
          TITLE  PRESET TAPE LOAD.
 PRS      SPACE  4
**        PRS - PRESET TAPE LOAD. 
  
  
 PRS      SUBR               ENTRY/EXIT 
          LDD    CM          SAVE DEADSTART OPTIONS 
          STM    DSTO 
          RJM    IFP         INITIALIZE *COMPGFP* 
  
*         SET BUFFER VALUES.
  
          LDC    BIOL 
          CRD    CM 
          LDD    CM          SET LOAD ADDRESS FOR *CPUMLD*
          SHN    6
          STD    CA+1 
          SHN    -14
          STD    CA 
          LDN    0           CLEAR WORD COUNT 
          STD    WC 
          LDN    ZERL        CLEAR (ZR - ZR+4)
          CRD    ZR 
          LDN    CMRL 
          CRD    FL-4 
          ADN    RTCL-CMRL   PRESERVE REAL TIME CLOCK 
          CRD    DP 
          CRM    CPMD,ON
          ADN    EFRL-RTCL-1 FETCH LINK DEVICE LABEL TRACK
          CRD    CN 
          LDD    T2          SET RECOVERY STATUS
          STD    RS 
          STM    STLA+4 
          LDD    CN+4        SET LINK DEVICE LABEL TRACK
          STM    STLF 
          LDM    DSTO        SAVE DEADSTART ABORT OPTIONS 
          LPN    14 
          SHN    12-3 
          STM    STLA+3 
          LDN    SMRL        SAVE STORAGE MOVE STATUS 
          CRM    .SMRL,ON 
  
*         MODIFY CHANNEL INSTRUCTIONS.
  
          LDC    CTTC        MODIFY TAPE CHANNEL INSTRUCTIONS 
          RJM    MCI
          LDD    T1          CHECK DEADSTART CHANNEL
          STD    DH 
          LMN    PC 
          NJN    PRS1        IF NOT PP COMMUNICATIONS CHANNEL 
          LDN    12          USE 12 AS PP COMMUNICATIONS CHANNEL
          STD    T1 
          LDC    CTPC        MODIFY PP COMMUNICATIONS CHANNELS
          RJM    MCI
          LDC    OANI+12
          STM    TPPA+CH
  
*         INITIALIZE PP AVAILABLITY TABLE.
  
 PRS1     LDN    PPUL        READ PP CONFIGURATION
          CRD    CM 
          LDN    PPCP        READ PP COMMUNICATION POINTER
          CRD    CN 
          LDD    CN+4        SET FIRST INPUT REGISTER ADDRESS 
          STD    T3 
          ADN    2*10        SET INPUT REGISTER ADDRESS FOR *STL* 
          STD    IA 
          LDN    0           SET PP0
          STD    T1 
          LDN    20D         PRESET 20 PP-S 
          STD    T2 
          LDD    CM+2        CHECK PP COUNT 
          SBN    11D
          PJN    PRS2        IF MORE THAN 10 PPU,S
          LDN    10D         SET 10 PP-S
          STD    T2 
 PRS2     LDM    TPPA,T1     CHECK PP CHANNEL 
          ZJN    PRS4        IF *STL* PP
          LPN    77 
          LMD    DH 
          NJN    PRS3        IF NOT TAPE CHANNEL
          LDC    OANI+12
          STM    TPPA,T1
 PRS3     LDD    T1          READ INPUT REGISTER
          SHN    3
          ADD    T3 
          CRD    CM 
          LDD    CM 
          ZJN    PRS4        IF PP AVAILABLE
          LDN    0           CLEAR PP 
          STM    TPPA,T1
 PRS4     AOD    T1          ADVANCE PP 
          LMD    T2 
          NJN    PRS2        IF NOT END OF PP-S 
          LDM    TPPA        START *MTR* ON PROPER CHANNEL
          LPN    37 
          RAM    CC1
          LDM    TPPA+1      START *DSD* ON PROPER CHANNEL
          LPN    37 
          RAM    CC2
 PRS5     LDN    0           CLEAR REMAINDER OF PP-S
          STM    TPPA,T1
          AOD    T1 
          SBN    20D
          MJN    PRS5        IF NOT END OF PP-S 
          LDN    NCPL        READ NUMBER OF CONTROL POINTS
          CRD    CM 
          AOD    CM+1        SET CONTROL POINT LIMIT
          STD    NC 
          LDN    LPRF        CONDITION *DIO* TO INPUT PP RESIDENT 
          RJM    IDF
          RJM    LPR         LOAD PP RESIDENT 
          LDK    MABL        CHECK MAINFRAME TYPE 
          CRD    CM 
          LDD    CM+1 
          SHN    -11
          LMN    7
          NJN    PRS6        IF NOT CYBER 176 
          LDN    ESTP 
          STM    SIPA        SET PASS INSTRUCTION 
          CRD    CM 
          SFA    EST,CM+2    SET EXCHANGE PACKAGE BIAS
          ADC    777
 PRS6     SHN    -11
          STD    XA          SAVE EXCHANGE BIAS 
          LDN    EIBP 
          CRD    CM 
          LDD    CM 
          SHN    21-12
          PJN    PRS6.1      IF NOT DUAL CPU MACHINE WITH CACHE 
          LDN    PSNI*0      FORCE USE OF *INPN* FOR CPU1 
          STM    CPME 
          SCF.   *,MR        GET MAINTENANCE CHANNEL
          DCN.   MR 
          FNC.   /IOU/MRDC,MR  KILL DEADMAN TIMER 
          DCN.   MR 
          LDC    102604      CREATE LONG INSTRUCTION
          ACN.   MR 
          OAN.   MR 
          LDN    1
          IAM.   SIPD,MR     READ INSTRUCTION TO MEMORY 
          DCN.   MR 
          CCF.   *,MR        RELEASE CHANNEL
 PRS6.1   LDC    200*DSCP+TFSW
          CRD    T7 
          LDD    T7 
          ZJN    PRS7        IF NO JOB AT DEADSTART CP
          SFA    EJT
          ERRNZ  JSNE        CROSS REFERENCE *JSNE* 
          CRD    CM 
          CRM    .JSNE,ON 
          LDN    EXJS*2      CLEAR JOB ADVANCE
          STD    CM+4 
          SFA    EJT,T7      UPDATE EJT ENTRY TO ALLOW *CCAM* 
          CWD    CM 
          STM    STLC        SET ADDRESS OF EJT ENTRY 
          SHN    -14
          RAM    STLC-1 
 PRS7     LDK    MMFL 
          CRD    CM 
          LDD    CM+1 
          SHN    21-12
          MJN    PRS8        IF LINK DEVICE VIA LOW SPEED PORT
          ISTORE STLD,(UJN STL2)  DISABLE LOAD OF *MTE* 
 PRS8     LJM    PRSX        RETURN 
 MCI      SPACE  4,10 
**        MCI - MODIFY CHANNEL INSTRUCTIONS.
* 
*         ENTRY  (A) = ADDRESS OF INSTRUCTION LIST. 
*                (T1) = CHANNEL NUMBER. 
* 
*         USES   T4, T5.
  
  
 MCI1     STD    T5          SET INSTRUCTION ADDRESS
          LDI    T5          MODIFY INSTRUCTION 
          SCN    37 
          LMD    T1 
          STI    T5 
          AOD    T4          ADVANCE LIST ADDRESS 
 MCI2     LDI    T4 
          NJN    MCI1        IF NOT END OF LIST 
  
 MCI      SUBR               ENTRY/EXIT 
          STD    T4          SET LIST ADDRESS 
          UJN    MCI2        ENTER LOOP 
          SPACE  4,10 
**        CHANNEL TABLES. 
  
  
          CHTB   TC 
          CHTB   PC 
          CHTB   CH 
  
 IFP      HERE               *COMPGFP* REMOTE INITIALIZATION CODE 
          SPACE  4,10 
          ERRZR  PC-12       ILLEGAL CHANNEL DEFINITION 
          ERRPL  *-MXRL-STL+4  *STL* OVERFLOWS TAPE PRU 
          TTL    STL/RSL - LOAD RESIDENT SYSTEM LIBRARY.
          TITLE 
          QUAL   RSL
          IDENT  RSL,RSL
*COMMENT  STL - LOAD RESIDENT SYSTEM LIBRARY. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          ORG    CPMX 
 RSL      BSS    0
 APP      SPACE  4
**        APP - ACTIVATE PP-S.
  
  
 APP      SUBR               ENTRY/EXIT 
          EXECUTE  1LP       SET UP LOAD CODE FOR *PPR* 
          LDN    3           START WITH PP3 
          STD    T1 
 APP1     LDM    TPPA,T1     CHECK PP AVAILABILITY
          ZJN    APP2        IF NOT AVAILABLE 
          LMC    DCNI&OANI   SET *DCN* INSTRUCTION
          STM    APPA 
 APPA     DCN.   ** 
 APP2     AOD    T1          ADVANCE PP 
          LMN    TPPAL
          NJN    APP1        LOOP TO END OF PP-S
          UJN    APPX        RETURN 
 LIB      SPACE  4
**        LIB - LOAD RESIDENT PP PROGRAMS.
  
  
 LIB6     MONITOR  HNGM      HANG PP
  
 LIB      SUBR               ENTRY/EXIT 
          LDN    2           ALLOW FOR TWO WORDS AT END OF PLD
          STD    RP          INITIALIZE RPL COUNTER 
 LIB1     RJM    RTB         READ TAPE BLOCK
          RJM    CID         CHECK ID TABLE 
          ZJN    LIB1        IF NO PREFIX TABLE 
  
*         STORE PP PROGRAM. 
  
          LDM    4,BA 
          ZJN    LIB6        IF INCORRECT PROGRAM LENGTH
          STD    T6          (T6) = PROGRAM LENGTH
          RJM    GCM         GET NEEDED STORAGE 
          LDM    1,BA        CHECK FOR *BCL* OVERLAY
          SHN    6
          LMI    BA 
          LMC    6100 
          NJN    LIB2        IF NOT 16 BIT PP ROUTINE 
          LDM    2,BA 
          SHN    14 
          LMM    3,BA        UNPACK LOAD ADDRESS
          SHN    -4 
          SBN    5
          STM    2,BA        SET LOAD ADDRESS 
          SHN    -14
          LMN    20          APPEND *PPL* FLAG
          LMM    BUF+6
          STM    1,BA        SET PACKAGE NAME 
          LDN    0
          STM    3,BA        CLEAR UNUSED BYTE
          LDM    BUF+5
          STI    BA          COMPLETE PACKAGE NAME
 LIB2     LMC    3RLBC&6100 
          NJN    LIB4        IF NOT END OF DEADSTART RPL
          SOM    LIBB 
          UJN    LIB4        ENTER LOOP 
  
 LIB3     RJM    RTB         READ NEXT BLOCK OF PP PROGRAM
          LDN    0           SET HEADER LENGTH
          STD    T1 
 LIB4     LDD    WC          SET CM WORD LENGTH OF PROGRAM IN BUFFER
          SBD    T1 
          STD    T5 
          LDD    BA 
          STM    LIBA 
          LDD    CA          WRITE PROGRAM TO RPL 
          SHN    14 
          LMD    CA+1 
          CWM    *,T5 
 LIBA     EQU    *-1
          STD    CA+1        SET NEXT RPL ADDRESS 
          SHN    -14
          STD    CA 
          LDD    T6          CHECK FOR ALL OF PROGRAM WRITTEN TO CM 
          SBD    T5 
          STD    T6 
          NJN    LIB3        IF PROGRAM NOT ALL IN ONE TAPE BLOCK 
 LIBB     LDN    1
*         LDN    0           IF END OF RPL
          NJP    LIB1        IF NOT END OF DEADSTART RPL
          LDD    TH          ENSURE SUFFICIENT CM FOR PLD 
          RJM    GCM
          LDN    ZERL 
          CRD    CN 
          RJM    WLP         WRITE END OF RPL 
          LDC    4000 
          STD    CN 
          LDN    PBKL        LENGTH OF BREAKPOINT TABLE 
          STD    T6 
 LIB5     RJM    WLP         PRESET BREAKPOINT TABLE
          SOD    T6 
          NJN    LIB5        IF NOT END OF TABLE
          LDD    CA+1 
          STM    WLPA        SET PLD ADDRESS
          LDD    CA 
          RAM    WLPA-1 
          LJM    LIBX        EXIT 
 PLD      SPACE  4
**        PLD - GENERATE PLD FOR DEADSTART RPL. 
* 
*         ENTRY  (CA - CA+1) = CURRENT ADDRESS. 
* 
*         EXIT   (CA - CA+1) = ADDRESS OF PROGRAM STATUS TABLE. 
* 
*         USES   RP, T1, T2, CM - CM+4, CN - CN+4.
* 
*         CALLS  ICT, LDB, WLP. 
  
  
 PLD9     LDC    PLDP        STORE PLD POINTER
          CWD    DP 
          RJM    LDB         LOAD *1DD* BOOTSTRAP 
          LDN    1
          RJM    ICT         INITIALIZE *CPUMTR* TABLES 
  
 PLD      SUBR               ENTRY/EXIT 
          LDC    RPLP 
          CRD    CM          FETCH RPL POINTER
          ADN    PLDP-RPLP
          CRD    DP          GET PLD POINTER WORD 
          LDD    CA 
          STD    DP          SET PLD ADDRESS
          LDD    CA+1 
          STD    DP+1 
 PLD1     LDD    CM          READ RPL ENTRY 
          SHN    14 
          ADD    CM+1 
          CRD    CN 
          LDD    CN+4        SET LENGTH OF PROGRAM
          STD    T1 
          STD    CN+3 
          LDD    CN+2        SET LOAD ADDRESS 
          STD    CN+4 
          LDD    CN+1 
          SCN    77 
          LMD    CM          SET CM ADDRESS OF PROGRAM
          LMN    40 
          STD    CN+1 
          LDD    CM+1 
          STD    CN+2 
          LDD    CN          CHECK PROGRAM NAME 
          SHN    -6 
          ZJN    PLD4        IF END OF RPL
          SBN    1R6
          ZJN    PLD2        IF *6XX* MASS STORAGE DRIVER 
          SBN    1R7-1R6
          NJN    PLD3        IF NOT *7XX* MASS STORAGE ERROR PROCESSOR
          AOD    CN+2        ADVANCE CM ADDRESS OF LOAD 
          SHN    -14
          RAD    CN+1 
 PLD2     SOD    CN+3        DECREMENT LENGTH OF LOAD 
          LDN    5           ADVANCE LOAD ADDRESS 
          RAD    CN+4 
 PLD3     RJM    WLP         WRITE LIBRARY POINTER
          LDD    T1          ADVANCE *RPL* ADDRESS
          RAD    CM+1 
          SHN    -14
          RAD    CM 
          LJM    PLD1        PROCESS NEXT ENTRY 
  
 PLD4     LDN    ZERL 
          CRD    CM 
          ADN    PSTP-ZERL
          CRD    CN 
          LDN    40          CREATE DUMMY *SFP* SLOT FOR *1DL*
          STD    CM+1 
          LDD    CA 
          SHN    14 
          ADD    CA+1 
          CWD    CM 
          ADN    2           SET END OF PLD 
          STD    CA+1 
          STD    CN+3 
          SHN    -14
          STD    CA 
          STD    CN+2 
          LDC    PSTP 
          CWD    CN 
          SBN    PSTP-PLDP   READ PLD POINTER 
          CRD    CN 
 PLDA     LDN    0
          ZJN    PLD5        IF NEITHER *0BK* NOR *7BK* IN RPL
          SBN    2
          ZJN    PLD5        IF BOTH *0BK* AND *7BK* IN RPL 
          LDN    ZERL 
          CRD    CM 
          LDC    4000 
          STD    CM 
          LDD    CN 
          SHN    14 
          LMD    CN+1 
          SBN    PBKL        CLEAR BREAKPOINT TABLE 
          CWD    CM 
          ADN    1
          CWD    CM 
  
*         SORT DEADSTART PLD. 
  
 PLD5     LDD    RP          CHECK FOR END OF SORT
          NJN    PLD6        IF NOT END OF SORT 
          LJM    PLD9        RETURN 
  
 PLD6     LDD    MA          MOVE PLD ADDRESS 
          CWD    DP 
          CRD    T1 
          LDN    0           INITIALIZE SORT
          STD    RP 
 PLD7     AOD    T2          ADVANCE ADDRESS
          SHN    -14
          RAD    T1          READ FIRST ENTRY 
          SHN    14 
          LMD    T2 
          CRD    CN 
          SBN    1
          CRD    CM 
          ADN    3
          LMD    CA+1 
          SHN    6
          LMD    CA 
          ZJN    PLD5        IF END OF PASS 
          LDD    CN 
          SBD    CM 
          MJN    PLD8        IF OUT OF ORDER
          NJN    PLD7        IF IN ORDER
          LDD    CN+1 
          SBD    CM+1 
          PJN    PLD7        IF IN ORDER
  
*         SWITCH ENTRIES. 
  
 PLD8     LDD    T1 
          SHN    14 
          LMD    T2 
          CWD    CM 
          SBN    1
          CWD    CN 
          AOD    RP 
          UJN    PLD7        LOOP 
 WLP      SPACE  4,10 
**        WLP - WRITE LIBRARY POINTER.
* 
*         ENTRY  (CN - CN+4) = WORD TO WRITE TO LIBRARY.
*                (CA - CA+1) = LIBRARY ADDRESS. 
* 
*         EXIT   (CA - CA+1) ADVANCED BY 1. 
* 
*         USES   CN+1, CA, CA+1.
  
  
 WLP1     LDN    1           ENTER *0BK* IN BREAKPOINT TABLE
 WLP2     SBN    PBKL 
          ADC    0           ENTER *7BK* IN BREAKPOINT TABLE
 WLPA     EQU    *-1
          CWD    CN 
          AOM    PLDA        ADVANCE COUNTER
  
 WLP      SUBR               ENTRY/EXIT 
          LDD    CN+1 
          SCN    77 
          SHN    6
          LMD    CN          CHECK PROGRAM NAME 
          SHN    6
          LMC    3R"PBK0" 
          ZJN    WLP1        IF *0BK* 
          LMC    3R"PBK7"&3R"PBK0"
          ZJN    WLP2        IF *7BK* 
          LDD    CA          WRITE WORD 
          SHN    14 
          LMD    CA+1 
          CWD    CN 
          AOD    CA+1        ADVANCE LIBRARY POINTER
          SHN    -14
          RAD    CA 
          UJN    WLPX        EXIT 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPICT 
*CALL     COMPLDB 
          SPACE  4
          ERRMI  BUF-*       OVERFLOW INTO TAPE BUFFER
 MRER     SPACE  4,10 
**        MRER - MAINTENANCE REGISTER ERROR HANDLER.
* 
*         ENTRY  FATAL MAINTENANCE REGISTER ERROR.
* 
*         EXIT   NO EXIT. 
  
  
 MRER     LDC    DSCP*CPAS+MS1W 
          CWM    MREB,TR
          UJN    *           HANG 
  
  
 MREB     DATA   C*MAINTENANCE REGISTER ERROR.* 
 SBA      SPACE  4,15 
**        SBA - SET OS BOUNDS ADDRESS.
* 
*         EXIT   IOU OS BOUNDS ADDRESS SET TO 
*                 - FWA OF NVE CM, IF NOS/VE ACTIVE (LEVEL 3 D/S);
*                 - END OF NOS UEM, IF UEM DEFINED; 
*                 - END OF NOS CENTRAL MEMORY, OTHERWISE. 
*                IOU BARREL 1 SET TO BLOCK INTERLEAVE IF CYBER 810/830. 
* 
*         USES   T7, CM - CM+4, CN - CN+4.
* 
*         MACROS LOCKMR, READMR, WRITMR.
  
  
 SBA      SUBR               ENTRY/EXIT 
          LDK    EABL+IOEI   SET IOU CONNECT CODE 
          CRD    CN 
          ADK    EIBP-EABL-IOEI  GET *DSCB* ADDRESS 
          CRD    CM 
          LDD    CN+3 
          STM    SBAA 
          LDD    CM+3 
          SHN    14 
          LMD    CM+4 
          ZJN    SBAX        IF NO *EICB* 
          ADN    D7CM+1      GET NOS/VE FWA AND LWA 
          CRD    CN 
  
*         CALCULATE OS BOUNDS ADDRESS.
  
          LDD    CN+1 
          LMD    CN+3 
          NJP    SBA3        IF NOS/VE ACTIVE, USE NOS/VE FWA 
          LDD    CN+2 
          LMD    CN+4 
          NJP    SBA3        IF NOS/VE ACTIVE, USE NOS/VE FWA 
          LDK    UEML 
          CRD    CN 
          LDD    CN+4 
          LPN    2
          ZJN    SBA2        IF UEM NOT DEFINED 
          LDK    EABL+CMEI   READ SYSTEM ATTRIBUTE BLOCK
          CRD    CM 
          LDD    CM+1 
          LPN    77 
          SHN    14 
          LMD    CM+2 
          CRD    CM          READ EXTENDED MEMORY DESCRIPTOR
          LDD    CM+3        GET EXTENDED MEMORY EQUIPMENT SIZE / 1000B 
          LPN    77 
          SHN    14 
          LMD    CM+4 
          NJN    SBA1        IF DEFINED 
          LDD    CM+3        GET USER EXTENDED MEMORY SIZE / 1000B
          SCN    77 
          SHN    6
          LMD    CM+2 
          SHN    6
 SBA1     ADD    CN          ADD UEM BASE ADDRESS / 1000B 
          STD    CN+2 
          SHN    -14
          STD    CN+1 
          UJN    SBA3        SET OS BOUNDS ADDRESS
  
 SBA2     LDK    MABL        SET OS BOUNDS TO END OF NOS CENTRAL MEMORY 
          CRD    CM 
          LDD    CM+2        CONVERT FROM WORDS/100B TO WORDS/1000B 
          SHN    14 
          LMD    CM+3 
          ADN    7           ROUND UP 
          SHN    -3 
          STD    CN+2 
          SHN    -14
          STD    CN+1 
  
*         SET OS BOUNDS ADDRESS.
  
 SBA3     LOCKMR SET
          READMR RBUF,SBAA,/IOU/IOSB  FETCH CURRENT OS BOUNDS DATA
          LDD    CN+2        FORM OS BOUNDS ADDRESS/2000B 
          ADN    1           ROUND UP 
          SHN    -1 
          STM    RBUF+7 
          SHN    -8D
          STD    CN+2 
          LDD    CN+1 
          SHN    3
          ADD    CN+2 
          STM    RBUF+6 
          READMR IBUF,SBAA,/IOU/DEMR  READ IOU REGISTER 
          LDM    IBUF+7      CLEAR OS BOUNDS ENABLE 
          STD    T7 
          SCN    10 
          STM    IBUF+7 
          WRITMR IBUF,SBAA,/IOU/DEMR
          WRITMR RBUF,SBAA,/IOU/IOSB  WRITE NEW OS BOUNDS 
          LDD    T7 
          STM    IBUF+7 
  
*         SET BLOCK INTERLEAVING FOR IOU BARREL 1 ON CYBER 180-810/830. 
  
          LDK    EABL+CPEI   READ *SAB* ADDRESS 
          CRD    CM 
          LDD    CM+1        GET CPU-0 POINTER
          SCN    77 
          SHN    6
          LMD    CM 
          SHN    6
          CRD    CM          READ CPU-0 ENTRY 
          LDD    CM+2        CHECK CPU-0 MODEL
          SHN    -4 
          SBN    0#13 
          ZJN    SBA4        IF CYBER 810 CPU 
          SBN    0#14-0#13
          NJP    SBA5        IF NOT CYBER 830 CPU 
 SBA4     READMR SBUF,SBAA,/IOU/ISTR  READ STATUS REGISTER
          LDM    SBUF+7      CHECK RECONFIGURATION
          LPN    20 
          ADN    20 
          SHN    6-4
          STD    T7 
          LDM    IBUF+7 
          LPN    0#3F 
          ADD    T7 
          STM    IBUF+7      SET BARREL 1 TO BLOCK INTERLEAVE MODE
 SBA5     WRITMR IBUF,SBAA,/IOU/DEMR
          LOCKMR CLEAR
          LJM    SBAX        RETURN 
  
  
 SBAA     CON    0           IOU CONNECT CODE 
 COMMON   SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPMRA 
  
 RBUF     EQU    *           OS BOUNDS REGISTER BUFFER
 SBUF     EQU    RBUF+12     STATUS REGISTER BUFFER 
 IBUF     EQU    SBUF+12     IOU REGISTER BUFFER
 IBUFL    EQU    IBUF+12     END OF BUFFERS 
  
          QUAL
 MRER     EQU    /RSL/MRER   UNQUALIFY ROUTINE *MRER* 
          TTL    STL/BCL - BUFFER CONTROLLER LOADER.
          TITLE 
          QUAL   BCL
          IDENT  BCL,BCLX    BUFFER CONTROLLER LOADER 
*COMMENT  STL - BUFFER CONTROLLER LOADER. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
***       BCL - BUFFER CONTROLLER LOADER. 
          SPACE  4,30 
***              BCL IS LOADED BY STL AFTER PP RESIDENT, THE SYSTEM 
*         MONITOR, SYSTEM DISPLAY PROGRAM, RECOVERY PROGRAM AND 
*         DEADSTART PPU LIBRARY HAVE BEEN LOADED AND THE PPU,S HAVE 
*         BEEN STARTED.  BCL IS LOADED IN THE SAME PPU AS STL AND 
*         OVERLAYS THE CODE WHICH PERFORMED THE FUNCTIONS LISTED ABOVE. 
* 
*                BCL READS THE DEADSTART TAPE UNTIL RECORD *LSL* IS 
*         FOUND.  THE RECORDS BETWEEN *BCL* AND *LSL* ARE ASSUMED TO BE 
*         FIRMWARE RECORDS AND ARE LOADED TO BUFFER CONTROLLERS 
*         (SKIPPED IF AUTOLOAD DEADSTART OPTION IS SPECIFIED).
* 
*                FIRMWARE RECORDS HAVE A STANDARD RECORD PREFIX TABLE 
*         CONTAINING THE 1 - 7 CHARACTER RECORD NAME.  THE PREFIX TABLE 
*         IS FOLLOWED BY A ONE WORD HEADER TABLE (FORMAT NOT CHECKED),
*         FOLLOWED BY THE FIRMWARE DATA, FOLLOWED BY AN EOR.  RECORDS 
*         NOT HAVING A VALID PREFIX TABLE (INCLUDES EMPTY RECORDS) ARE
*         SKIPPED.
* 
*                A TABLE OF EQUIPMENT TYPES (TEQL) REQUIRING FIRMWARE 
*         LOADING IS KEPT INTERNALLY TO *BCL*.  THE EST IS SCANNED FOR
*         EQUIPMENTS MATCHING THOSE IN *TEQL*.  WHEN A MATCH IS FOUND 
*         THE RECORD TYPE IS FOUND IN THE *CRTL* ENTRY FOR EACH CHANNEL 
*         OF ACCESS.
* 
*                IT IS POSSIBLE TO AVOID LOADING CONTROLWARE FOR MASS 
*         STORAGE CHANNELS BY SPECIFYING THE CORRESPONDING NO LOAD
*         PARAMETER (IE. NF, NI, ETC.) AS THE CONTROLWARE RECORD TYPE 
*         ON THE *LBC* EQPDECK ENTRY. 
* 
*                AFTER A CONTROLLER HAS BEEN AUTOLOADED, A GRENADE
*         OPERATION IS PERFORMED IF THE GRENADE DEADSTART OPTION IS 
*         SPECIFIED.
* 
*                BCL ALSO LOADS THE 819 DRIVER TO FIRST LEVEL PP-S ON 
*         CYBER 176-S, AND LOADS PP DRIVERS FOR OTHER BUFFERED I/O
*         SYSTEMS.
          SPACE  4,40 
***       OPERATOR MESSAGES.
* 
*         LINE 1 OF DEADSTART CONTROL POINT - 
* 
*         * LOADING CXX, RCDNAME.* = CHANNEL *XX* IS BEING
*         LOADED WITH CONTROLWARE RECORD *RCDNAME*.  LINE 
*         2 MESSAGE AT THE DEADSTART CONTROL POINT INDICATES THE STATUS 
*         OF THE LOAD.
* 
*         LINE 2 OF DEADSTART CONTROL POINT - 
* 
*         *TO CENTRAL MEMORY.* = THE FIRMWARE RECORD LISTED IN THE
*         LINE 1 MESSAGE AT THE DEADSTART CONTROL POINT IS BEING
*         COPIED FROM TAPE TO CENTRAL MEMORY.  IF THE DEADSTART STOPS 
*         WITH THIS MESSAGE AND THE LINE 1 MESSAGE LISTED ABOVE 
*         DISPLAYED, THERE IS INSUFFICIENT FREE CENTRAL MEMORY TO 
*         CONTAIN THE FIRMWARE RECORD.
* 
*         *TO CONTROLLER.* = THE FIRMWARE RECORD LISTED IN THE LINE 1 
*         MESSAGE AT THE DEADSTART CONTROL POINT IS BEING AUTOLOADED TO 
*         THE CHANNEL AND EQUIPMENT TYPE LISTED IN THE LINE 1 MESSAGE.
*         IF THE DEADSTART STOPS WITH THIS MESSAGE AND THE LINE 1 
*         MESSAGE LISTED ABOVE DISPLAYED, A CONTROLLER OR CHANNEL 
*         MALFUNCTION OR INCORRECT EQPDECK EQUIPMENT DEFINITION HAS 
*         CAUSED THE AUTOLOAD PROGRAM TO HANG.
* 
*         *TO CONTROL MODULE.* = THE FIRMWARE RECORD LISTED IN LINE 1 
*         MESSAGE AT THE DEADSTART CONTROL POINT IS BEING AUTOLOADED TO 
*         THE CHANNEL LISTED IN THE LINE 1 MESSAGE.  IF THE DEADSTART 
*         STOPS WITH THIS MESSAGE AND THE LINE 1 MESSAGE LISTED ABOVE 
*         DISPLAYED, A CONTROLLER OR CHANNEL MALFUNCTION OR INCORRECT 
*         EQPDECK DEFINITION HAS CAUSED THE AUTOLOAD PROGRAM TO HANG. 
* 
*         *TO FLPP.* = THE FLPP-S ARE BEING DEADSTARTED AND LOADED
*         WITH THE 819 DRIVER SOFTWARE, *HCD*.  IF THE DEADSTART
*         STOPS WITH THIS MESSAGE AND THE LINE 1 MESSAGE LISTED 
*         ABOVE DISPLAYED, A HARDWARE PROBLEM IN THE FLPP OR MUX IS 
*         INDICATED.
* 
*         *AUTOLOAD FAILURE, STXXXX.* = FOLLOWING THE AUTOLOADING OF
*         THE RECORD LISTED IN THE LINE 1 MESSAGE AT THE DEADSTART
*         CONTROL POINT TO THE CHANNEL AND EQUIPMENT TYPE LISTED IN THE 
*         LINE 1 MESSAGE, CONTROLLER STATUS (STXXXX) INDICATED THAT A 
*         CHANNEL PARITY ERROR OR FIRMWARE CHECKSUM ERROR OCCURED FOR 
*         THE AUTOLOAD.  A STATUS OF *ST0000* INDICATES THAT THE
*         CHANNEL WAS DISCONNECTED WITHOUT STATUS BEING SENT.  WHEN 
*         THIS MESSAGE IS DISPLAYED, DEADSTART STOPS UNTIL THE *GO* 
*         COMMAND IS ENTERED BY THE OPERATOR.  WHEN THE *GO*
*         COMMAND IS ENTERED, THE AUTOLOAD IS RETRIED.  IF SEVERAL
*         RETRIES CONTINUE TO PRODUCE THIS MESSAGE AND THE LINE 1 
*         MESSAGE LISTED ABOVE, A SOLID HARDWARE FAILURE OR BAD 
*         FIRMWARE RECORD ON THE DEADSTART TAPE IS INDICATED. 
* 
*         *CONTROLLER RESERVED.* = CONTROLLER RESERVED BY OTHER 
*         ACCESS.  CLEAR RESERVE VIA DEADSTART OF OTHER ACCESS, CLEAR 
*         CONTROLLER OR CALL CE TO CHECK HARDWARE.
* 
*         * FUNCTION XXXX TIMEOUT.* = FUNCTION XXXX WAS NOT 
*         ACCEPTED BY THE CONTROLLER, NOTIFY THE SITE CE. 
 BCL      SPACE  4,20 
***       BCL - BUFFER CONTROLLER LOADER. 
* 
*         ENTRY  (RS) = RECOVERY STATUS.
*                (BA) = BUFFER ADDRESS OF CURRENT TAPE BLOCK. 
*                (WC) = WORD COUNT OF CURRENT TAPE BLOCK. 
*                (DSTO) = DEADSTART OPTIONS.
*                (MSFW) = TABLE OF FIRMWARE RECORDS TO LOAD.
*                NEXT RECORD ON DEADSTART TAPE IS THE FIRST FIRMWARE
*                RECORD.
* 
*         EXIT   (BA) = BUFFER ADDRESS OF RECORD *LSL*. 
*                (WC) = WORD COUNT OF CURRENT TAPE BLOCK. 
*                DEADSTART TAPE POSITIONED TO RECORD *LSL*. 
*                AUTOLOADING OF BUFFER CONTROLLERS PERFORMED UNLESS 
*                THE AUTOLOAD DEADSTART OPTION IS SPECIFIED.
* 
*         CALLS  CRN, DFR, LFP, LFR, LOH, RLC, RNR, SCT, SFL. 
  
  
          ORG    TPPA+5 
 BCL      SUBR               ENTRY/EXIT 
          RJM    RLC         RELOCATE CODE INTO MS DRIVER AREA
          RJM    SCT         SET CONTROLWARE TYPE FOR CHANNEL 
          RJM    DFR         DEFAULT CONTROLWARE RECORD FOR LOAD
 BCL2     RJM    RNR         READ NEXT TAPE RECORD
          LDC    BCLB        CHECK FOR END OF CONTROLWARE 
          RJM    CRN
          ZJN    BCL4        IF RECORD *LSL*
          RJM    SFL         SEARCH FIRMWARE RECORD LIST
          ZJN    BCL2        IF RECORD NOT FOUND
          LDM    4,T7 
          STM    BCLA 
          RJM    **          LOAD CONTROLWARE 
 BCLA     EQU    *-1
          UJN    BCL2        PROCESS NEXT RECORD
  
 BCL4     LDM    STLA+3 
          SHN    0-12 
          LMN    1
          ZJN    BCL5        IF NO CHECKPOINT OF BUFFERED DEVICES 
 BCLC     RJM    LOH         LOAD PP DRIVERS FOR BUFFERED DEVICES 
*         UJN    BCL5        (NO BUFFERED DEVICES PRESENT)
 BCL5     LJM    BCLX        RETURN 
  
 BCLB     VFD    48/0LLSL 
 OPMESS   SPACE  4,10 
**        OPMESS - SEND OPERATOR MESSAGE. 
* 
*         OPMESS MADD,LINE
* 
*         MADD = ADDRESS OF MESSAGE.
*         LINE = 1 FOR A LINE ONE MESSAGE.
*              = 2 FOR A LINE TWO MESSAGE.
  
  
 OPMESS   MACRO  MADD,LINE
          LDC    200*DSCP+MS_LINE_W 
          CWM    MADD,TR
          ENDM
          SPACE  4,10 
**        CONSOLE MESSAGES. 
  
  
 MSGA     DATA   C* LOADING CXX, RCDNAME.*
 MSGB     EQU    *-1         BLANK MESSAGE
 MSGC     DATA   C*TO CENTRAL MEMORY.*
 MSGD     DATA   C*TO CONTROLLER.*
 MSGE     DATA   C*AUTOLOAD FAILURE, ST0000.* 
 MSGG     DATA   C*CONTROLLER RESERVED.*
 ALC      SPACE  4,20 
**        ALC - AUTOLOAD CONTROLLER.
* 
*         ENTRY  (CA - CA+1) = CENTRAL MEMORY ADDRESS OF FIRMWARE 
*                              RECORD.
*                (CN+4) = LENGTH OF FIRMWARE RECORD.
*                (T4) = CHANNEL TO AUTOLOAD.
*                (T7) = ADDRESS OF RECORD NAME. 
*                (DSTO) = DEADSTART OPTIONS.
* 
*         EXIT   CONTROLLER AUTOLOADED WITH FIRMWARE. 
*                CONTROLLER GRENADED IF DEADSTART OPTION SPECIFIED. 
*                WAITS FOR OPERATOR GO IF AN AUTOLOAD FAILURE OCCURS. 
* 
*         CALLS  C2D, FCN, MCI, OFR, STS, WOG.
* 
*         MACROS DCHAN, OPMESS, RCHAN.
  
  
 ALC      SUBR               ENTRY/EXIT 
          RJM    MCI         MODIFY CHANNEL INSTRUCTIONS
          LDD    T4          RESERVE CHANNEL
          RCHAN 
  
*         CHECK THAT THE CONTROLLER IS NOT RESERVED TO THE OPPOSITE 
*         ACCESS BEFORE ATTEMPTING THE AUTOLOAD.  SKIP THE CHECK FOR
*         7255/7165 CONTROLLERS, BECAUSE GENERAL STATUS FOR A 7255
*         IS UNDEFINED UNTIL AFTER CONTROLWARE HAS BEEN LOADED, AND 
*         BECAUSE *CONTROLLER RESERVED* IS NOT POSSIBLE ON EITHER.
  
          LDD    T7 
          LMK    ISD
          ZJN    ALC2        IF LOADING A 7255, AVOID THE STATUS CHECK
          LMK    MA4&ISD
          ZJN    ALC2        IF LOADING A 7165
 ALC1     RJM    STS         GET STATUS 
          SHN    21-12
          PJN    ALC2        IF CONTROLLER NOT RESERVED TO OTHER ACCESS 
          OPMESS MSGG,2 
          UJN    ALC1        LOOP 
  
 ALC2     OPMESS MSGD,2 
          LDC    FCAL        ISSUE AUTOLOAD FUNCTION
          RJM    FCN
          RJM    OFR         LOAD CONTROLWARE 
          RJM    STS
          ZJN    ALC3        IF AUTOLOAD SUCCESSFUL 
          SHN    -6          PUT STATUS IN MESSAGE
          RJM    C2D
          STM    MSGE+12
          LDD    FN 
          RJM    C2D
          STM    MSGE+13
          LDC    MSGE        DISPLAY AUTOLOAD FAILURE MESSAGE 
          RJM    WOG
          UJN    ALC2        RETRY AUTOLOAD 
  
 ALC3     LDM    DSTO        CHECK DEADSTART OPTIONS
          LPN    1
          ZJN    ALC4        IF *GRENADE* NOT SPECIFIED 
          LDN    FCGR        ISSUE GRENADE FUNCTION 
          RJM    FCN
 ALC4     LDN    FCOC        ISSUE OPERATION COMPLETE 
          RJM    FCN
          LDD    T4          RELEASE CHANNEL
          DCHAN 
          LJM    ALCX        RETURN 
 CRN      SPACE  4,10 
**        CRN - COMPARE RECORD NAMES. 
* 
*         *CRN* COMPARES THE RECORD NAME IN THE CONTROLWARE RECORD
*         PREFIX TABLE WITH A RECORD NAME SUPPLIED BY THE CALLER TO SEE 
*         IF THEY MATCH.  A USER-SUPPLIED RECORD NAME BEGINNING WITH
*         THE CHARACTERS *$$* WILL MATCH ANY PREFIX TABLE NAME. 
* 
*         ENTRY  (A) = ADDRESS OF ONE RECORD NAME.
*                (BA) = ADDRESS OF RECORD PREFIX TABLE CONTAINING 
*                       SECOND RECORD NAME. 
* 
*         EXIT   (A) = 0 IF NAMES MATCH.
*                    .NE. 0 IF NAMES ARE DIFFERENT. 
* 
*         USES   T1 - T3. 
  
  
 CRN      SUBR               ENTRY/EXIT 
          STD    T1          SAVE ADDRESS OF RECORD NAME
          LDI    T1          CHECK FOR AUTOMATIC MATCH
          LMC    2R$$ 
          ZJN    CRNX        IF AN AUTOMATIC MATCH
          LDD    BA          SET ADDRESS OF NAME IN PREFIX TABLE
          ADN    5
          STD    T2 
          ADN    4           SET LWA+1 OF NAME IN PREFIX TABLE
          STD    T3 
 CRN1     LDI    T1          COMPARE NAMES
          LMI    T2 
          NJN    CRNX        IF NAMES ARE DIFFERENT 
          AOD    T1          ADVANCE NAME ADDRESSES 
          AOD    T2 
          LMD    T3 
          NJN    CRN1        IF NOT END OF NAMES
          UJN    CRNX        EXIT (NAMES MATCH) 
 FCN      SPACE  4,15 
**        FCN - ISSUE FUNCTION TO CONTROLLER. 
* 
*         ENTRY  (A) = FUNCTION CODE. 
* 
*         EXIT   (A) = 0 IF GENERAL STATUS FUNCTION TIMED OUT.
* 
*         USES   FN.
* 
*         CALLS  C2D. 
* 
*         MACROS OPMESS.
  
  
 FCN      SUBR               ENTRY/EXIT 
          STD    FN 
 FCN1     FAN    CH 
 FCN2     IJM    FCNX,CH     IF FUNCTION ACCEPTED 
          ADD    ON 
          NJN    FCN2        IF TIMEOUT NOT SATISFIED 
          DCN    CH 
          LDD    FN          CHECK FUNCTION 
          LMN    FCGS 
          ZJN    FCNX        IF GENERAL STATUS REQUEST
          SHN    -6 
          RJM    C2D
          STM    FCNB 
          LDD    FN          CONVERT FUNCTION FOR MESSAGE 
          RJM    C2D
          STM    FCNB+1 
          OPMESS FCNA,2      DISPLAY TIMEOUT MESSAGE
          LDD    FN 
          UJN    FCN1        RETRY
  
 FCNA     DATA   10H FUNCTION 
 FCNB     DATA   C*0000 TIMEOUT.* 
 IRN      SPACE  4,10 
**        IRN - INSERT RECORD NAME INTO MESSAGE.
* 
*         ENTRY  (T7) = ADDRESS OF RECORD NAME. 
* 
*         EXIT   RECORD NAME INSERTED IN MESSAGE *MSGA*.
* 
*         USES   T1, T2.
  
  
 IRN      SUBR               ENTRY/EXIT 
          LDD    T7          SET RECORD NAME ADDRESS
          SBN    1
          STD    T1 
          LDC    MSGA+7-1    SET ADDRESS OF RECORD NAME 
          STD    T2 
 IRN1     AOD    T1          ADVANCE RECORD NAME ADDRESSES
          AOD    T2 
          LDI    T1          MOVE TWO CHARACTERS
          STI    T2 
          ZJN    IRN2        IF END OF RECORD NAME
          LPN    77 
          NJN    IRN1        IF NOT END OF RECORD NAME
          LDC    1R.&2R.     ADD PERIOD TO MESSAGE
 IRN2     LMC    2R.         ADD PERIOD TO MESSAGE
          RAI    T2 
          LDN    0           SET MESSAGE TERMINATOR 
          STM    1,T2 
          UJN    IRNX 
 LFC      SPACE  4,20 
**        LFC - LOAD FIRMWARE RECORD TO CENTRAL MEMORY. 
* 
*         ENTRY  (BA) = ADDRESS OF RECORD PREFIX TABLE. 
*                (CA - CA+1) = CURRENT CENTRAL MEMORY ADDRESS.
*                (WC)  WORD COUNT OF CURRENT TAPE BLOCK.
* 
*         EXIT   (CN+4) = RECORD WORD COUNT.
*                FIRMWARE RECORD LOADED TO CENTRAL MEMORY AT
*                (CA - CA+1). 
* 
*         USES   BA, T3, T5, T6.
* 
*         CALLS  GCM, RTB.
  
  
 LFC      SUBR               ENTRY/EXIT 
          OPMESS MSGC,2      DISPLAY LOADING TO CENTRAL MEMORY
          LDD    CA          SET FIRMWARE LOAD ADDRESS
          STD    T5 
          LDD    CA+1 
          STD    T6 
          LDN    0           CLEAR RECORD WORD COUNT
          STD    CN+4 
          LDM    1,BA        PREFIX TABLE LENGTH
          ADN    2           PREFIX AND NEXT TABLE HEADER LENGTHS 
          STD    T3 
          SHN    2           ADVANCE BUFFER TO BEGINNING OF DATA
          ADD    T3 
          RAD    BA 
          LDD    WC          SET WORD COUNT OF DATA 
          SBD    T3 
 LFC1     ZJN    LFCX        IF AN EMPTY BLOCK
          STD    T3          SAVE BLOCK WORD COUNT
          RAD    CN+4        UPDATE RECORD WORD COUNT 
          RJM    GCM         GET CMR SPACE FOR RECORD 
          LDD    BA          SET PPU BUFFER ADDRESS 
          STM    LFCA 
          LDD    T5          SET CENTRAL MEMORY BUFFER ADDRESS
          SHN    14 
          LMD    T6 
          CWM    *,T3        WRITE BLOCK TO CENTRAL MEMORY
 LFCA     EQU    *-1         PPU BUFFER ADDRESS 
          STD    T6          SAVE NEXT CENTRAL MEMORY BUFFER ADDRESS
          SHN    -14
          STD    T5 
          LDD    WC          CHECK FOR END OF RECORD
          SHN    -11
          ZJN    LFC1        IF END OF RECORD 
          RJM    RTB         READ NEXT TAPE BLOCK 
          UJN    LFC1 
 LFR      SPACE  4,10 
**        LFR - LOAD FIRMWARE RECORD. 
* 
*         ENTRY  (BA) = ADDRESS OF RECORD PREFIX TABLE. 
*                (WC) = WORD COUNT OF CURRENT TAPE BLOCK. 
*                (T7)  ADDRESS OF RECORD NAME 
* 
*         EXIT   RECORD LOADED TO APPROPRIATE CHANNELS. 
* 
*         USES   T4, CM - CM+4, CN+2. 
* 
*         CALLS  ALC, C2D, IDF, IRN, LFC, TCD.
  
  
 LFR3     OPMESS MSGB,1      CLEAR MESSAGES 
          OPMESS MSGB,2 
  
 LFR      SUBR               ENTRY/EXIT 
          RJM    IRN         INSERT RECORD NAME IN MESSAGE
          LCN    0           INITIALIZE CHANNEL 
          STD    T4 
          STD    CN+2        FLAG FIRMWARE NOT IN CM
  
*         SEARCH FOR CHANNELS TO LOAD.
  
 LFR1     AOD    T4 
 LFRA     LMN    TCHFL       INITIALIZE CHANNEL 
*         LMN    MMXC        (IF 819 DRIVER LOAD) 
*         LMN    TCCFL       (IF CONCURRENT CHANNEL LOADS POSSIBLE) 
          ZJN    LFR3        IF END OF CHANNELS 
          LDD    T4          CHECK FOR CHANNEL DOWN 
          RJM    TCD
          MJN    LFR1        IF CHANNEL DOWN
          LDM    TCHF,T4
*         LDM    THCD,T4     (IF 819 DRIVER LOAD) 
 LFRB     EQU    *-1
          LMD    T7 
          NJN    LFR1        IF CURRENT RECORD NOT FOR THIS CHANNEL 
          STM    TCHF,T4     CLEAR LOAD FOR THIS CHANNEL
*         STM    THCD,T4     (IF 819 DRIVER LOAD) 
 LFRC     EQU    *-1
          LDD    T4          PUT CHANNEL NUMBER IN MESSAGE
          RJM    C2D
          STM    MSGA+5 
          OPMESS MSGA,1      DISPLAY LOADING MESSAGE
          LDD    CN+2 
          ZJN    LFR2        IF FIRMWARE IN CM
          RJM    LFC         LOAD FIRMWARE TO CM
          LDN    0           FLAG FIRMWARE IN CM
          STD    CN+2 
 LFR2     LDN    IPPF        IDLE *DIO* 
          RJM    IDF
          RJM    ALC         AUTOLOAD CONTROLLER
*         RJM    LFD         (IF 819 DRIVER LOAD) 
*         RJM    ACC         (CONCURRENT CHANNEL LOADS POSSIBLE)
 LFRE     EQU    *-1
          LDD    IA          RESTART *DIO*
          ADN    CH*10-2*10 
          CRD    CM 
          STD    CM+4 
          CWD    CM 
          LJM    LFR1        LOOP FOR NEXT CHANNEL
 LOH      SPACE  4,15 
**        LOH - LOAD PP DRIVERS FOR BUFFERED DEVICES. 
* 
*         ENTRY  CHANNEL TABLE  *CUN1* WORDS CONTAIN PP DRIVER INPUT
*                REGISTERS FOR BUFFERED I/O SYSTEMS.
*                *CUN1* BYTE 0 = 0 FOR 819 SYSTEMS. 
*                CHANNEL TABLE POINTER WORD = 
*                  12/NO. ENTRIES ,24/(OTHER STUFF) ,24/CCT FWA.
* 
*         EXIT   ONE PP DRIVER LOADED FOR EACH CHANNEL DEFINED. 
* 
*         USES   FS - FS+4, CM - CM+4.
* 
*         CALLS  TCD. 
* 
*         MACROS MONITOR. 
  
  
 LOH      SUBR
 LOHA     LDC    **          ADDRESS OF CHANNEL TABLE POINTER WORD
          CRD    FS          CHANNEL TABLE POINTER WORD 
          LDN    CUN1 
          RAD    FS+4        POINT TO *CUN1* WORD 
          SHN    -14
          RAD    FS+3 
*         LDN    0
          STM    TCDB        SET BUFFER DRIVER LOAD FLAG
  
*         SCAN CHANNEL TABLE. 
  
 LOH1     LDD    FS+3 
          SHN    14 
          ADD    FS+4 
          CRD    CM          READ PP DRIVER INPUT REGISTER
          LDD    CM 
          ZJN    LOH4        IF 819 ENTRY 
          LDD    MA 
          CWD    CM          STORE INPUT REGISTER FOR PP REQUEST
          LDN    1
          STD    CM+1        SELECT NO QUEUEING OF PP REQUEST 
          LDD    CM+4 
          RJM    TCD         TEST FOR CHANNEL DOWN
          MJN    LOH4        IF CHANNEL IS DOWN 
          LDD    CM+4 
          LPN    40 
          NJN    LOH3        IF CONCURRENT CHANNEL
          MONITOR  RPPM 
          UJN    LOH4        ADVANCE CCT POINTER
  
 LOH3     SBD    CM+4        ISOLATE CHANNEL
          ADN    4
          SHN    0-21 
          ADN    2           DETERMINE BARREL SELECT SUBFUNCTION
          STD    CM+4 
          MONITOR  CPRM      REQUEST CONCURRENT PP
 LOH4     LDN    CCTL 
          RAD    FS+4        ADVANCE CCT POINTER
          SHN    -14
          RAD    FS+3 
          SOD    FS 
          NJP    LOH1        IF MORE CHANNELS TO SCAN 
          LJM    LOHX        RETURN 
 MCI      SPACE  4,10 
**        MCI - MODIFY CHANNEL INSTRUCTIONS.
* 
*         ENTRY  (T4) = CHANNEL NUMBER. 
* 
*         USES   T1, T2.
  
  
 MCI1     STD    T2          SET INSTRUCTION ADDRESS
          LDI    T2          MODIFY INSTRUCTION 
          SCN    37 
          LMD    T4 
          STI    T2 
          AOD    T1          ADVANCE LIST ADDRESS 
 MCI2     LDI    T1 
          NJN    MCI1        IF NOT END OF LIST 
  
 MCI      SUBR               ENTRY/EXIT 
          LDC    CTCH        SET CHANNEL TABLE ADDRESS
          STD    T1 
          UJN    MCI2        ENTER LOOP 
 OAR      SPACE  4,10 
**        OAR - OUTPUT (A) REGISTER ON CHANNEL. 
* 
*         ENTRY  (A) = PARAMETER TO OUTPUT. 
  
  
 OAR      SUBR               ENTRY/EXIT 
          ACN    CH 
          OAN    CH          OUTPUT PARAMETER 
          FJM    *,CH        IF PARAMETER NOT ACCEPTED
          DCN    CH 
          UJN    OARX        RETURN 
 OFR      SPACE  4,20 
**        OFR - OUTPUT FIRMWARE RECORD. 
* 
*         ENTRY  (CA - CA+1) = CENTRAL MEMORY ADDRESS OF FIRMWARE 
*                              RECORD.
*                (CN+4) = WORD COUNT OF FIRMWARE RECORD.
*                CONTROLLER FUNCTIONED FOR AUTOLOAD.
* 
*         EXIT   FIRMWARE RECORD TRANSFERRED FROM CENTRAL MEMORY TO 
*                CONTROLLER.
*                CHANNEL INACTIVE.
* 
*         USES   T1, T2, T5, T6.
  
  
 OFR3     FJM    *,CH        WAIT FOR LAST WORD ACCEPT
          DCN    CH 
  
 OFR      SUBR               ENTRY/EXIT 
          LDD    CA          SET CENTRAL MEMORY ADDRESS OF RECORD 
          STD    T5 
          LDD    CA+1 
          STD    T6 
 OFRA     ACN    CH          PREPARE CHANNEL FOR OUTPUT 
*         PSN                (IF 819 DRIVER LOAD) 
          LDD    CN+4        RECORD WORD COUNT
 OFR1     ZJN    OFR3        IF END OF RECORD 
          STD    T2          SAVE REMAINING WORD COUNT
          STD    T1          SET BLOCK WORD COUNT 
          ADC    -FWBFL-1 
          MJN    OFR2        IF REMAINING DATA FITS IN BUFFER 
          LDC    FWBFL       SET BLOCK COUNT TO BUFFER SIZE 
          STD    T1 
 OFR2     LDD    T5          SET CENTRAL BUFFER ADDRESS 
          SHN    14 
          LMD    T6 
          CRM    FWBF,T1     READ BLOCK FROM CENTRAL MEMORY 
          STD    T6          SAVE NEXT CENTRAL MEMORY BUFFER ADDRESS
          SHN    -14
          STD    T5 
          LDD    T1          OUTPUT BLOCK TO CONTROLLER 
          SHN    2
          ADD    T1 
          OAM    FWBF,CH
          LDD    T2          DECREMENT REMAINING RECORD WORD COUNT
          SBD    T1 
          UJN    OFR1        PROCESS NEXT BLOCK 
 RNR      SPACE  4,20 
**        RNR - READ NEXT RECORD. 
* 
*         ENTRY  (WC) = WORD COUNT OF CURRENT TAPE BLOCK. 
* 
*         EXIT   (BA) = ADDRESS OF RECORD PREFIX TABLE. 
*                (WC) = WORD COUNT OF CURRENT TAPE BLOCK. 
*                RECORDS WITHOUT VALID PREFIX TABLES SKIPPED. 
* 
*         USES   T1.
* 
*         CALLS  RTB. 
  
  
 RNR2     RJM    RTB         READ TAPE BLOCK
          LDD    WC 
          SBN    2
          MJN    RNR2        IF BLOCK TOO SHORT 
          LDI    BA 
          LMC    7700 
          NJN    RNR1        IF NO PREFIX TABLE 
          LDM    1,BA        PREFIX TABLE LENGTH
          ADN    2           PREFIX AND NEXT TABLE HEADER LENGTHS 
          SBD    WC 
          PJN    RNR1        IF TABLES OVERFLOW BLOCK 
  
 RNR      SUBR               ENTRY/EXIT 
  
*         SKIP TO END OF CURRENT RECORD.
  
 RNR1     LDD    WC 
          SHN    -11
          ZJN    RNR2        IF AT END OF RECORD
          RJM    RTB         READ NEXT TAPE BLOCK 
          UJN    RNR1        LOOP TO END OF RECORD
 SFL      SPACE  4,10 
**        SFL - SEARCH FIRMWARE LIST. 
* 
*         ENTRY  (BA) = ADDRESS OF FIRMWARE RECORD PREFIX TABLE.
* 
*         EXIT   (A) = 0 IF RECORD NOT FOUND. 
*                (A) = (T7) = ADDRESS OF RECORD NAME IF FOUND.
* 
*         CALLS  CRN. 
  
  
 SFL2     LDD    T7          RETURN FIRMWARE LIST ADDRESS 
  
 SFL      SUBR               ENTRY/EXIT 
          LDC    TFIR        SET FWA OF FIRMWARE RECORD TABLE 
          STD    T7 
 SFL1     LDI    T7 
          ZJN    SFLX        IF END OF TABLE
          LDD    T7          COMPARE RECORD NAMES 
          RJM    CRN
          ZJN    SFL2        IF FOUND IN TABLE
          LDN    5
          RAD    T7 
          UJN    SFL1        CHECK NEXT RECORD NAME 
 STS      SPACE  4,10 
**        STS - STATUS CONTROLLER.
* 
*         EXIT   (A) = (FN) = GENERAL STATUS. 
*                (A) = 775777 IF INCOMPLETE STATUS. 
*                (FN = 5777 IF INCOMPLETE STATUS. 
* 
*         CALLS  FCN. 
  
  
 STS      SUBR               ENTRY/EXIT 
          LDN    FCGS 
          RJM    FCN
          ZJN    STS1        IF FUNCTION TIMED OUT
          ACN    CH 
 STS1     LDC    -2000       ERROR STATUS 
 STSA     IAN    CH 
*         IAN    CH+40       INPUT STATUS 
          STD    FN 
          UJN    STSX        RETURN 
 TCD      SPACE  4,15 
**        TCD - TEST CHANNEL DOWN STATUS. 
* 
*         ENTRY  (A) = CHANNEL. 
* 
*         EXIT   (A) .LT. 0, IF CHANNEL DOWN. 
* 
*         USES   T0, T1, DP - DP+4. 
  
  
 TCD2     LCN    0           FLAG CHANNEL DOWN
  
 TCD      SUBR               ENTRY/EXIT 
          STD    T1          SAVE CHANNEL NUMBER
          LCN    0           INITIALIZE WORD INDEX
          STD    T0 
 TCD1     AOD    T0          INCREMENT WORD INDEX 
          LCN    5           DIVIDE BY 5 LOOP 
          RAD    T1 
          PJN    TCD1        IF NOT CORRECT INDEX 
          ADN    5+DP 
          STD    T1 
          LDC    0           READ CHANNEL ASSIGNMENT TABLE WORD 
 TCDA     EQU    *-1
          ADD    T0          ADD CORRECT WORD INDEX 
          CRD    DP 
          LDI    T1          GET CHANNEL BYTE 
          SHN    21-5 
          PJN    TCDX        IF CHANNEL NOT DOWN
 TCDB     UJN    TCD2        SET CHANNEL DOWN STATUS
*         PSN                (BUFFER DRIVER LOAD) 
          LDC    **          SET DRIVER NOT LOADED FLAG 
 TCDC     EQU    *-1
          ADD    T0 
          CRD    DP 
          LDI    T1 
          LMD    TH 
          STI    T1 
          LDC    ** 
 TCDD     EQU    *-1
          ADD    T0 
          CWD    DP 
          LJM    TCD2        RETURN 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPC2D 
 TCHS     SPACE  4,10 
**        CHANNEL TABLE.
  
  
          CHTB   CH 
          SPACE  4
**        TCHF - TABLE OF CHANNELS FOR FIRMWARE LOADING.
* 
*         ENTRY = 1 WORD = ADDRESS OF FIRMWARE RECORD NAME IN *TFIR*. 
  
  
 TCHFL    EQU    37 
 TCHF     BSSZ   TCHFL
 TCCFL    EQU    TCHFL+12B   ALLOW FOR CONCURRENT CHANNELS
          ERRNG  TFIR-TCHF-TCCFL  IF OVERFLOW OF TABLE OF CHANNELS
          SPACE  4
**        THCD - TABLE OF 819 MUX CHANNELS TO INITIALIZE. 
* 
*         ENTRY = 1 WORD = ADDRESS OF DRIVER RECORD NAME. 
  
  
 THCD     BSSZ   MMXC 
          SPACE  4
**        THCC - TABLE OF 819 CONTROLLER CHANNEL MASKS. 
* 
*         ENTRY = 7700B, IF CONTROLLER ON CHANNELS 2+3. 
*                   77B, IF CONTROLLER ON CHANNELS 6+7. 
*                 7777B, IF BOTH CONTROLLER PRESENT.
  
  
 THCC     BSSZ   MMXC 
          SPACE  4
**        TFIR - TABLE OF FIRMWARE RECORD NAMES.
* 
*         ENTRY = 4 WORDS = FIRMWARE RECORD NAME. 
*                TERMINATED BY A ZERO WORD. 
  
  
 TFIR     BSS    0
  
 FHT      VFD    48/0LBCS,12/LFR
 FFT      VFD    48/0LBCF,12/LFR
 FFM      VFD    48/0LFMD,12/LFR
 FAD      VFD    48/0LADP,12/LFR
 ISD      VFD    48/0LISD,12/LFR
 PHD      VFD    48/0LPHD,12/LFR
 MA4      VFD    48/0LMA464,12/LFR
 M86      VFD    48/0LCCC7990,12/LFR
 HCD      VFD    48/0LHCD,12/LFP
 CMD      EQU    HCD
          CON    0           TERMINATOR 
          SPACE  4,10 
          ERRNG  BUF-*       OVERFLOW INTO TAPE BUFFER
 DFR      SPACE  4
**        DFR - DEFAULT FIRMWARE RECORDS TO LOAD ON EACH CHANNEL. 
* 
*         *DFR* BUILDS A TABLE (*TCHF*) OF ALL CHANNELS ON WHICH
*         CONTROLWARE MUST BE LOADED AND THE TYPE OF CONTROLWARE TO 
*         LOAD ON EACH CHANNEL.  FOR 819 DISKS, *DFR* DETERMINES WHAT 
*         FLPP-S NEED TO BE LOADED WITH THE 819 DRIVER. 
  
  
 DFR      SUBR               ENTRY/EXIT 
          LDN    ESTP 
          CRD    CM 
          LDN    NOPE-1      INITIALIZE EST ORDINAL FOR SEARCH
          STD    T6 
          LDD    CM+3        SET LAST MASS STORAGE ORDINAL + 1
          STD    T7 
  
*         SEARCH EST FOR EQUIPMENT TYPES REQUIRING LOAD.
  
 DFR1     AOD    T6 
          LMD    T7 
          ZJN    DFRX        IF END OF MASS STORAGE DEVICES 
          SFA    EST,T6 
          ADK    EQDE 
          CRD    CN          READ EST 
          LDD    CN 
          SHN    21-13
 DFR2     PJN    DFR1        IF NOT MASS STORAGE
          LDN    TEQLL
          STD    T1 
 DFR3     LCN    2           DECREMENT TABLE INDEX
          RAD    T1 
          MJN    DFR1        IF END OF EQUIPMENT TYPES
          LDD    CN+3 
          LMM    TEQL,T1
          NJN    DFR3        IF NO MATCH
          LDM    TEQL+1,T1
          STD    T1 
          LJM    0,T1        EXIT TO PROCESSOR
  
*         PROCESS *FLPP* SOFTWARE - 819 DISK. 
  
 DFR4     LDD    CN+4        FETCH UNIT LIST FROM MST 
          SHN    3
          ADN    DDLL 
          CRD    CM 
          LDN    CN          INITIALIZE CHANNEL BYTE INDEX
          STD    T3 
 DFR5     AOD    T3          ADVANCE CHANNEL BYTE INDEX 
          LMN    CN+3 
          ZJN    DFR2        IF TWO CHANNELS CHECKED
          LDI    T3 
          ZJN    DFR2        IF SINGLE ACCESS DEVICE
          LPN    37 
          STD    T4 
          LDC    HCD
          STM    THCD,T4
          STM    THCD+1,T4
          LDD    CM+4        CHECK CONTROLLER ASSIGNMENT
          LPN    4
          ZJN    DFR6        IF NOT ASSIGNED TO CHANNELS 6+7
          LCN    0
 DFR6     LMC    7700        SET CONTROLLER MASK
          STD    T0 
          LMC    7777 
          STM    DFRA 
          LDM    THCC,T4
          LPC    ** 
 DFRA     EQU    *-1
          LMD    T0 
          STM    THCC,T4
          STM    THCC+1,T4
          LJM    DFR5        CHECK NEXT CHANNEL 
  
*         PROCESS FULL TRACK / FMD CONTROLWARE. 
  
 DFR8     RJM    SCH         SET 7154 CHANNELS IN EST 
  
*         CHECK IF EITHER CHANNEL TO THE DEVICE REQUIRES A CONTROLWARE
*         LOAD.  IF SO, UPDATE TABLE *TCHF* WITH THE CONTROLWARE TYPE 
*         TO LOAD.
  
 DFR9     LDN    CN+1        INITIALIZE CHANNEL BYTE ADDRESS
          STD    T3 
 DFR10    LDI    T3 
          ZJN    DFR11       IF NULL CHANNEL
          SHN    0-12 
          LMN    2
          NJN    DFR11       IF CHANNEL DOWN OR DISABLED
          LDI    T3 
          LPN    77 
          STD    T4 
          LDM    MSFW,T4
          STD    CM 
          ADC    1000-/MSP/CRTH*100 
          SHN    0-11 
          NJN    DFR11       IF CONTROLWARE RELOAD LIMIT REACHED
          LDM    DSTO 
          LPN    2
          NJN    DFR11       IF LOAD DISABLED BY *AUTOLOAD* 
          LDD    CM 
          LPN    77 
          STD    CM 
          LPN    40 
          NJN    DFR11       IF LOAD DISABLED VIA AN *LBC* COMMAND
          LDM    TCWT,CM     SET ADDRESS OF CONTROLWARE RECORD NAME 
          STM    TCHF,T4
 DFR11    AOD    T3 
          LMN    CN+3 
          NJN    DFR10       IF POSSIBLE SECOND CHANNEL 
          LJM    DFR1        LOOP FOR NEXT EQUIPMENT
 SCT      SPACE  4,10 
**        SCT - SET CHANNEL TABLE *CCTL* IN CMR.
* 
*         *SCT* LOADS THE CHANNEL CONTROLWARE TABLE INTO PP MEMORY.  IF 
*         NOT RECOVERING CENTRAL MEMORY, *SCT* CONVERTS THE TABLE FROM
*         THE FORMAT USED BY *SET* TO THE FORMAT USED DURING NORMAL 
*         SYSTEM OPERATION.  DURING DEADSTART, EACH BYTE IN THE TABLE 
*         IS FORMATTED AS FOLLOWS-
*                5/, 1/F, 6/LO
*         WHERE  F  = 1, IF LOAD OPTION SPECIFIED VIA *LOADBC* COMMAND. 
*                LO = CHANNEL CONTROLWARE LOAD OPTION (SEE *COMSDSL*).
* 
*         AFTER *SCT* COMPLETES, EACH BYTE IN THE CHANNEL CONTROLWARE 
*         TABLE HAS THE FOLLOWING FORMAT- 
*                6/0, 1/N, 5/CT 
*         WHERE  N  = 1, IF CONTROLWARE IS NOT TO BE LOADED BY *STL*. 
*                CT = CONTROLWARE TYPE FOR THE CHANNEL (SEE *COMSDSL*). 
* 
*         EXIT   *CCTL* IS INITIALIZED IN CMR TO PRESERVE CONTROLWARE 
*                TYPE ON EACH CHANNEL.
* 
*         USES   T1, T2, CM - CM+4. 
  
  
 SCT      SUBR               ENTRY/EXIT 
          LDC    CHTP 
          CRD    CM 
          LDN    CTALL       SET TABLE LENGTH 
          STD    T2 
          LDD    CM+2        FETCH FIRMWARE LOAD TABLE
          LPN    77 
          RAM    TCDA-1 
          LPN    77 
          SHN    14 
          LMD    CM+3 
          STM    TCDA 
          ADN    CTALL*2
          CRM    MSFW,T2
          LDD    CM+3        SET ADDRESS OF CONTROLWARE TABLE 
          ADN    CTALL*2
          STM    TCDC 
          STM    TCDD 
          SHN    -14
          ADM    TCDA-1 
          STM    TCDC-1 
          STM    TCDD-1 
          LDD    RS 
          LPN    SYMK 
          LMN    SYCM 
          ZJP    SCTX        IF CM RECOVERY 
          LDN    MXCH 
          STD    CM 
 SCT1     LDM    MSFW,CM     GET  CHANNEL CONTROLWARE TYPE
          LPN    37 
 SCT2     STD    T1 
          SBN    MXCLO
          SHN    0-21 
          ZJN    SCT2        IF INVALID LOAD OPTION 
          AOD    T1 
          LPN    1           GENERATE LOAD / NO LOAD FLAG 
          SHN    6-0
          LMD    T1          FORM CONTROLWARE TYPE WITH FLAG
          SHN    5-6
          STM    MSFW,CM     SET IN CONTROLWARE TABLE 
          SOD    CM 
          PJN    SCT1        IF NOT END OF TABLE
          LDD    CM+2        STORE TABLE OF CHANNEL CONTROLWARE TYPE
          SHN    14 
          LMD    CM+3 
          ADN    CTALL*2
          CWM    MSFW,T2
          LJM    SCTX        RETURN 
          SPACE  4,10 
**        TEQL - TABLE OF EQUIPMENT TYPES REQUIRING FIRMWARE LOADING. 
* 
*         ENTRY = 2 WORD EQUIPMENT MNEMONIC.
*                WORD 1 = EQUIPMENT TYPE. 
*                WORD 2 = PROCESSOR ADDRESS.
  
  
 TEQL     BSS    0
          CON    2RDI,DFR9
          CON    2RDJ,DFR9
          CON    2RDK,DFR8
          CON    2RDL,DFR8
          CON    2RDM,DFR9
          CON    2RDQ,DFR9
          CON    2RDX,DFR8
          CON    2RDY,DFR8
          CON    2RDZ,DFR8
          CON    2RDA,DFR8
          CON    2RDV,DFR4
          CON    2RDW,DFR4
          CON    2RDB,DFR9
          CON    2RDC,DFR9
          CON    2RDD,DFR9
          CON    2RDG,DFR9
          CON    2RSS,DFR9
  
 TEQLL    EQU    *-TEQL 
 TCWT     SPACE  4
**        TCWT - TABLE OF CONTROLWARE TYPES.
*         ENTRY = 1 WORD. 
* 
*         ENTRY IS ADDRESS OF CONTROLWARE RECORD NAME FOR RECORD TYPE.
  
  
 TCWT     INDEX 
          INDEX  HTCW,FHT 
          INDEX  FTCW,FFT 
          INDEX  FMCW,FFM 
          INDEX  ADCW,FAD 
          INDEX  PHCW,PHD 
          INDEX  IDCW,ISD 
          INDEX  CCCW,MA4 
          INDEX  M8CW,M86 
          INDEX  MXCWT
 SCH      SPACE  4,15 
**        SCH - SELECT FULL TRACK CHANNELS FOR EQUIPMENT. 
* 
*         ENTRY  (CN - CN+4) = EST ENTRY. 
*                (T6) = EST ORDINAL.
*                (RS) = RECOVERY STATUS.
* 
*         EXIT   FULL TRACK CHANNELS PLACED IN EST FOR USE. 
*                MESSAGE *EQXXX, 2X PPS REQUIRED.* ISSUED IF 2X PP
*                STATUS IS NOT PRESENT. 
*                MESSAGE *EQXXX, NO FT CONTROLLER.* ISSUED IF 
*                NO FT CONTROLWARE IS SPECIFIED FOR LOAD BECAUSE OF 
*                *LBC,HT,...* FOR ALL CHANNELS OF ACCESS FOR A FULL 
*                TRACK EQUIPMENT. 
*                THESE MESSAGES HALT DEADSTART UNTIL AN OPERATOR *GO* 
*                IS ENTERED.
* 
*         CALLS  WOG. 
* 
*         USES   T1, T4, CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 SCH      SUBR               ENTRY/EXIT 
          LDD    RS 
          LPN    SYMK 
          LMN    SYCM 
          ZJN    SCHX        IF CM RECOVERY 
          LDD    CN+3        SET EQUIPMENT TYPE 
          STM    SCHA 
          STM    SCHB 
          LDD    T6          CONVERT UPPER TWO DIGITS OF EST ORDINAL
          SHN    -3 
          RJM    C2D
          STM    SCHA+1 
          STM    SCHB+1 
          LDD    T6          CONVERT LOWER DIGIT OF EST ORDINAL 
          LPN    7
          SHN    6
          ADC    2R0, 
          STM    SCHA+2 
          STM    SCHB+2 
          LDN    0           CLEAR CHANNEL COUNT
          STD    T1 
          STD    T4 
 SCH1     LDM    CN+1,T1
          ZJN    SCH2.1      IF CHANNEL NOT DEFINED 
          SHN    21-10
          PJN    SCH2        IF FULL TRACK CONTROLLER 
          SHN    10-21       DISABLE THE CHANNEL ACCESS 
          LPN    37 
          STD    CM+2 
          LDD    T6 
          STD    CM+1 
          LDN    DAPS 
          STD    CM+3 
          MONITOR SCSM       DISABLE THE CHANNEL PATH 
          UJN    SCH2.1      CONTINUE 
  
 SCH2     AOD    T4 
 SCH2.1   AOD    T1 
          LMN    2
          NJN    SCH1        IF MORE CHANNELS 
          LDD    T4 
          ZJN    SCH3        IF NO FT CONTROLWARE PRESENT 
          LDK    MABL        CHECK PPU SPEED
          CRD    CM 
          LDD    CM+4 
          LPN    7
          NJN    SCH4        IF NOT 1XPP SPEED
          LDD    RS 
          NJN    SCH4        IF RECOVERY DEADSTART
          LCN    SCHB-SCHA   *EQXXX, 2X PPS REQUIRED.*
 SCH3     ADC    SCHB        *EQXXX, NO FT CONTROLLER.* 
          RJM    WOG         WAIT FOR OPERATOR GO 
 SCH4     LJM    SCHX        EXIT 
  
 SCHA     DATA   C*EQXXX, 2X PPS REQUIRED.* 
 SCHB     DATA   C*EQXXX, NO FT CONTROLLER.*
 RLC      SPACE  4,10 
**        RLC - RELOCATE CODE TO MS DRIVER AREA.
* 
*         CODE MUST BE MOVED INTO THE MASS STORAGE DRIVER AREA OF PP
*         MEMORY TO PROVIDE ENOUGH ROOM FOR A CONTROLWARE DATA BUFFER.
*         EITHER THE CONTROL MODULE, CPP OR THE 819 SUPPORT CODE IS 
*         SAVED DEPENDING UPON WHICH TYPE OF DISK THE MAINFRAME USES. 
*         (A SINGLE MAINFRAME CANNOT SUPPORT ISMD, CPP OR 819 DISKS AT
*         THE SAME TIME.)  THE CODE FOR THE DISK TYPE NOT IN USE IS 
*         OVERLAID BY THE DATA BUFFER.
* 
*         EXIT   ROUTINES MOVED TO MS DRIVER AREA.
* 
*         USES   T1, T2, CM - CM+4. 
  
  
 RLC      SUBR               ENTRY/EXIT 
          LDC    BIOL 
          CRD    CM 
          LDD    CM+1 
          SHN    14 
          ADD    CM+2 
          NJN    RLC0        IF BUFFERED DEVICES DEFINED
          ISTORE BCLC,(UJN BCL5)  DISABLE BUFFERED DRIVER LOADS 
          UJN    RLC0.1      CONTINUE 
  
 RLC0     ADN    CCTP        FORM ADDRESS OF CHANNEL TABLE POINTER
          STM    LOHA+1 
          SHN    -14
          RAM    LOHA 
 RLC0.1   LDC    .FWA        SET MOVE PARAMETERS
          STD    T1 
          LDC    .LOA 
          STD    T2 
          LDN    CFGL 
          CRD    CM 
          LDD    CM+3 
          SHN    21-11
          MJN    RLC1        IF ISMD SUBSYSTEM PRESENT
          LDK    MABL        CHECK FOR POSSIBLE CPP LOAD
          CRD    CM 
          LDD    CM+1 
          SHN    0-13 
          NJP    RLC3        IF NOT A 8XX MAINFRAME 
*         LDN    0           DISABLE FLPP PROCESSING
          STM    HCD
          LDC    .FWC        SET UP CPP CODE RELOCATION 
          STD    T1 
          LDN    TCCFL-TCHFL ADJUST MAXIMUM CHANNEL NUMBER
          RAM    LFRA 
          LDC    ACC         SET JUMP TO CPP CODE 
          STM    LFRE 
          LDC    .LWC 
          UJN    RLC2        RELOCATE CPP CODE
  
 RLC1     LDC    .FWI        SET ISMD SUBSYSTEM CODE ADDRESSES
          STD    T1 
          LDD    MA          MOVE *CMD* ENTRY TO TABLE *TFIR* 
          CWM    RLCB,ON
          SBN    1
          CRM    CMD,ON 
          LDC    .LWI 
 RLC2     STM    RLCA 
 RLC3     LDI    T1          MOVE NEXT WORD TO MS DRIVER AREA 
          STI    T2 
          AOD    T2 
          AOD    T1 
          LMC    .LWA        LAST WORD OF 819 CODE TO MOVE
 RLCA     EQU    *-1
*         LMC    .LWI        (LAST WORD OF ISMD SUBSYSTEM CODE TO MOVE) 
*         LMC    .LWC        (LAST WORD ADDRESS OF CPP CODE TO MOVE)
          NJN    RLC3        IF MORE TO MOVE
          LDN    40 
          RAM    STSA 
          LJM    RLCX        RETURN 
  
 RLCB     VFD    48/0L$$,12/LCC 
  
 .FWA     BSS    0           FIRST WORD TO BE MOVED TO MS DRIVER AREA 
          LOC    MSFW+5*CTALL 
 .LOA     BSS    0           LOAD ADDRESS IN MS DRIVER AREA 
 LFD      SPACE  4,10 
**        LFD - LOAD 819 DRIVER.
* 
*         ENTRY  (T4) = FLPP NUMBER.
*                (CA - CA+1) = CM ADDRESS OF DRIVER RECORD. 
* 
*         EXIT   DRIVER LOADED AND STARTED. 
* 
*         USES   T4, DP - DP+4. 
* 
*         CALLS  IPN, MCI, OFR. 
* 
*         MACROS DCHAN, RCHAN.
  
  
 LFD      SUBR               ENTRY/EXIT 
          OPMESS LFDD,2      DISPLAY LOADING MESSAGE
          LDD    CA          INITIALIZE DRIVER
          SHN    14 
          LMD    CA+1 
          CRD    CM 
          ADN    1
          CRD    DP 
          LDD    HN 
          STD    CM 
          STD    CM+1 
          LDD    T4          SET FLPP NUMBER
          STD    DP 
          LDM    LFDC        SET FLPP CONFIGURATION 
          STD    DP+1 
          LDM    THCC,T4
          STM    LFDA 
          LDM    LFDC+1 
          LPC    ** 
 LFDA     EQU    *-1
          STD    DP+2 
          LDD    CA 
          SHN    14 
          LMD    CA+1 
          CWD    CM 
          ADN    1
          CWD    DP 
          RJM    IPN         INSERT FLPP NUMBER IN S/R REGISTER 
          LDD    T4          SAVE THE FLPP NUMBER 
          STM    LFDB 
          LDN    MC          SET CHANNEL TO SCANNER CHANNEL 
          STD    T4 
          RJM    MCI         MODIFY CHANNEL INSTRUCTIONS
          LDN    MC          RESERVE THE CHANNEL
          RCHAN 
          LDC    FCSB+ENSC   ENABLE SCANNER INTERFACE 
          OAN.   SC+40
          IAN.   SC+40
          ACN    MC          ACTIVATE SCANNER CHANNEL 
          LDC    FCSB+DSFP   DEADSTART THE FLPP 
          OAN.   SC+40
          IAN.   SC+40
          LDC    FCSB+CPUE   CLEAR FLPP ERROR CONDITION 
          OAN.   SC+40
          IAN.   SC+40
          LDC    FCCL+PPUE   CLEAR FLPP ERRORS IN SCR 
          OAN.   SC+40
          IAN.   SC+40
          LDC    FCCL+CPUE
          OAN.   SC+40
          IAN.   SC+40
          LDC    FCCL+DSFP   CLEAR DEADSTART
          OAN.   SC+40
          IAN.   SC+40
          RJM    OFR         OUTPUT DRIVER TO FLPP
          LDC    FCCL+ENSC   DISABLE SCANNER CHANNEL
          OAN.   SC+40
          IAN.   SC+40
          LDN    MC          RELEASE THE SCANNER CHANNEL
          DCHAN 
          LDC    **          RESTORE THE FLPP NUMBER
 LFDB     EQU    *-1
          STD    T4 
          LJM    LFDX        RETURN 
  
  
 LFDC     VFD    3/0         SCANNER CHANNEL
          VFD    3/1         CPU CHANNEL
          VFD    3/0         NOT USED 
          VFD    3/4         PARTNER FLPP CHANNEL 
          VFD    3/3         CONTROLLER *A* DATA CHANNEL
          VFD    3/2         CONTROLLER *A* CONTROL CHANNEL 
          VFD    3/7         CONTROLLER *B* DATA CHANNEL
          VFD    3/6         CONTROLLER *B* CONTROL CHANNEL 
  
 LFDD     DATA   C*TO FLPP.*
 IPN      SPACE  4,10 
**        IPN - INSERT FIRST LEVEL PPU NUMBER IN S/C REGISTER.
* 
*         ENTRY  (T4) = FLPP NUMBER.
* 
*         EXIT   (A) = 0. 
* 
*         USES   T1, T2.
  
  
 IPN1     LDD    T1          CHECK NEXT BIT 
          SHN    -1 
 IPN2     STD    T1 
          LPN    1
          ZJN    IPN3        IF BIT TO BE CLEARED 
          LDC    FCSB&FCCL
 IPN3     LMD    T2 
          OAN.   SC+40
          IAN.   SC+40
          AOD    T2          ADVANCE BIT NUMBER 
          LMC    FCCL+SCSL+4
          NJN    IPN1        IF NOT END OF BITS 
  
 IPN      SUBR               ENTRY/EXIT 
          LDC    FCCL+SCSL   PRESET FUNCTION AND BIT NUMBER 
          STD    T2 
          LDD    T4 
          UJN    IPN2        ENTER LOOP 
 LFP      SPACE  4,10 
**        LFP - LOAD FIRST LEVEL PPUS.
* 
*         ENTRY  (BA) = ADDRESS OF RECORD PREFIX TABLE. 
*                (WC) = WORD COUNT OF CURRENT TAPE BLOCK. 
*                (T7) = ADDRESS OF RECORD NAME. 
* 
*         EXIT   FLPP DRIVER LOADED TO APPROPRIATE FLPPS. 
* 
*         USES   T4.
* 
*         CALLS  LFR. 
  
  
 LFP      SUBR               ENTRY/EXIT 
          LDC    LFPE        PRESET TO SWITCH TO 819 DRIVER LOAD
 LFP1     STM    LFPA 
          STM    LFPC 
          LDN    0
          STD    T4 
 LFP2     LDM    LFPD,T4     SWITCH FUNCTIONS 
          STM    LFPB 
          ZJN    LFP3        IF END OF INSTRUCTIONS TO SWITCH 
          LDM    **,T4
 LFPA     EQU    *-1
          STM    ** 
 LFPB     EQU    *-1
          AOD    T4 
          UJN    LFP2        LOOP FOR NEXT ENTRY
  
 LFP3     LDC    **          TEST FOR END OF LOAD 
 LFPC     EQU    *-1
          LMC    LFPF 
          ZJN    LFPX        IF END OF LOAD 
          RJM    LFR         LOAD 819 DRIVERS 
          LDC    LFPF        SWITCH BACK TO FIRMWARE LOADING
          UJN    LFP1        SET UP SWITCH
  
*         TABLE OF ADDRESSES TO MODIFY. 
  
 LFPD     CON    LFRA 
          CON    LFRB 
          CON    LFRC 
          CON    LFRE 
          CON    OFRA 
          CON    0           END OF TABLE 
  
*         TABLE OF 819 LOAD VALUES. 
  
 LFPE     CON    LMNI+MMXC
          CON    THCD 
          CON    THCD 
          CON    LFD
          CON    PSNI 
  
*         TABLE OF FIRMWARE LOAD VALUES.
  
 LFPF     CON    LMNI+TCHFL 
          CON    TCHF 
          CON    TCHF 
          CON    ALC
          CON    ACNI+CH
          SPACE  4,10 
          ERRNG  PPFW-*      CODE OVERFLOWS MS DRIVER AREA
          LOC    *O 
 .LWA     BSS    0           LWA TO MOVE TO MS DRIVER AREA
          SPACE  4,10 
 .FWI     BSS    0           FIRST WORD TO BE MOVED TO MS DRIVER AREA 
          LOC    MSFW+5*CTALL 
 LCC      SPACE  4,15 
**        LCC - LOAD CONTROL MODULE CONTROLWARE.
* 
*         ENTRY  (T7) = ADDRESS OF RECORD NAME. 
*                (BA) = ADDRESS OF RECORD PREFIX TABLE. 
*                (WC) = WORD COUNT OF CURRENT TAPE BLOCK. 
* 
*         EXIT   RECORD LOADED TO APPROPRIATE CHANNELS. 
* 
*         USES   T3 - T7, CM - CM+4, DP - DP+4. 
* 
*         CALLS  CRN, C2D, FCN, IDF, IRN, LFC, MCI, OAR, OFR, STS, TCD, 
*                WOG. 
* 
*         MACROS DCHAN, DELAY, OPMESS, RCHAN, SFA.
  
  
 LCC      SUBR               ENTRY/EXIT 
          LDM    DSTO 
          LPN    2
          NJN    LCCX        IF LOAD DISABLED BY *AUTOLOAD* 
          LDC    TCMR-5      FIND FIRMWARE TYPE 
          STD    T7 
 LCC1     LDN    5
          RAD    T7 
          LDI    T7 
          ZJN    LCCX        IF END OF TABLE
          LDD    T7 
          RJM    CRN         COMPARE RECORD NAMES 
          NJN    LCC1        IF NO MATCH
          RJM    IRN         INSERT RECORD NAME IN MESSAGE
          RJM    LFC         LOAD FIRMWARE TO CM
          LDM    4,T7        SAVE FIRMWARE TYPE 
          STD    RN 
          LDN    ESTP 
          CRD    T7-2 
 LCC3     SOD    T7 
          MJN    LCCX        IF END OF EST
          SFA    EST         GET EST ENTRY
          ADK    EQDE 
          CRD    CM 
          ADK    EQAE-EQDE
          CRD    DP 
          LDD    CM+3 
          LMC    2RCM 
          NJN    LCC3        IF NOT *CM* DEVICE 
          LDD    DP+2 
          LPN    77 
          LMD    RN 
          NJN    LCC3        IF WRONG CONTROLWARE OR NOLOAD SET 
          LDD    CM+1 
          SHN    21-12
          PJN    LCC4        IF FIRST CHANNEL NOT DOWN
          LDD    CM+2 
          ZJN    LCC3        IF NO SECOND CHANNEL 
          SHN    21-12
          MJN    LCC3        IF SECOND CHANNEL DOWN 
 LCC4     SHN    12-0+1 
          LPN    37 
          STD    T4 
          RJM    TCD         TEST CHANNEL DOWN
          MJN    LCC3        IF CHANNEL DOWN
          LDD    T4 
          RJM    C2D         PUT CHANNEL NUMBER IN MESSAGE
          STM    MSGA+5 
          OPMESS MSGA,1      DISPLAY LOADING MESSAGE
          LDN    IPPF        IDLE *DIO* 
          RJM    IDF
          RJM    MCI         MODIFY CHANNEL INSTRUCTIONS
          LDD    T4 
          RCHAN              RESERVE CHANNEL
          OPMESS LCCA,2      *TO CONTROL MODULE.* 
 LCC5     LDN    FCCN        ISSUE CONNECT FUNCTION 
          RJM    FCN
          LDM    DSTO        CHECK *GRENADE*
          LPN    1
          SHN    21-0 
          LMD    CM+4        OUTPUT CONTROL MODULE EQUIPMENT NUMBER 
          SHN    -11+3
          SCN    7
          RJM    OAR         OUTPUT (A) REGISTER ON CHANNEL 
          RJM    STS         STATUS CONTROLLER
          NJN    LCC5        IF GENERAL STATUS NOT ZERO 
          LDN    FCLC        ISSUE CONTROLWARE LOAD FROM PP FUNCTION
          RJM    FCN
          RJM    OFR         OUTPUT FIRMWARE RECORD 
 LCC6     DELAY 
          RJM    STS         STATUS CONTROLLER
          ZJN    LCC7        IF COMPLETE
          SCN    2
          ZJN    LCC6        IF CONTROL MODULE BUSY 
          SHN    -6 
          RJM    C2D
          STM    MSGE+12
          LDD    FN 
          RJM    C2D
          STM    MSGE+13
          LDC    MSGE 
          RJM    WOG         WAIT FOR OPERATOR GO 
          LJM    LCC5        RETRY
  
 LCC7     LDN    FCOC        ISSUE OPERATION COMPLETE 
          RJM    FCN
          LDD    T4          DROP CHANNEL 
          DCHAN 
          LDD    IA          RESTART *DIO*
          ADN    CH*10-2*10 
          CRD    CM 
          STD    CM+4 
          CWD    CM 
          LJM    LCC3        PROCESS NEXT EST ENTRY 
  
 LCCA     DATA   C*TO CONTROL MODULE.*
 TCMR     SPACE  4,10 
**        TCMR - TABLE OF CONTROL MODULE RECORD NAMES.
* 
*         ENTRY = 5 WORDS = 48/ RN ,12 / CT 
*                 RN = RECORD NAME. 
*                 CT = CONTROLWARE TYPE.
  
  
 TCMR     BSS    0
  
          VFD    48/0LCMD,12/CMCW 
          VFD    48/0LCM2,12/C2CW 
          CON    0           TERMINATOR 
          SPACE  4,10 
          ERRNG  PPFW-* 
          LOC    *O 
 .LWI     BSS    0
          SPACE  4,10 
 .FWC     BSS    0           FIRST WORD TO BE MOVED TO MS DRIVER AREA 
          LOC    MSFW+5*CTALL 
 ACC      SPACE  4,20 
**        ACC - AUTOLOAD CONCURRENT CHANNEL CONTROLLERS.
* 
*         ENTRY  (CA - CA+1) = CMA OF FIRMWARE. 
*                (CN+4) = RECORD LENGTH TO LOAD.
*                (T4) = CHANNEL TO AUTOLOAD.
*                (DSTO) = DEADSTART OPTIONS.
* 
*         EXIT   CONTROLLER AUTOLOADED. 
*                CONTROLLER GRENADED IF DEADSTART OPTION SELECTED.
* 
*         USES   T1, CM - CM+4. 
* 
*         CALLS  ALC, *1CL*.
  
  
 ACC2     RJM    ALC         AUTOLOAD CONTROLLER
  
 ACC      SUBR               ENTRY/EXIT 
          LDD    T4 
          LPN    77          SET CHANNEL
          STD    CM 
          LPN    40 
          ZJN    ACC2        IF NOT A CONCURRENT CHANNEL
          LDD    CN+4        SET RECORD LENGTH
          STD    CM+1 
          LDM    DSTO        SET DEADSTART OPTIONS
          STD    CM+2 
          LDD    CA          SET FIRMWARE RECORD ADDRESS
          STD    CM+3 
          LDD    CA+1 
          STD    CM+4 
          LDD    MA 
          CWM    ACCA,ON
          CWD    CM 
          LDN    1           SELECT NO QUEUEING OF REQUEST
          STD    CM+1 
          LDN    44          SET BARREL SELECT
          SBD    T4 
          SHN    0-21 
          ADN    2
          STD    CM+4 
          MONITOR  CPRM      REQUEST A CONCURRENT PP
          LDD    CM+1 
          NJN    ACC0        IF CPP ASSIGNED
          OPMESS ACCB,2      *NO CPP AVAILABLE.*
          UJN    *           HANG 
  
 ACC0     ADN    2
          STD    T1 
 ACC1     CRD    CM          CHECK FOR LOAD COMPLETE
          LDD    CM 
          LMC    7777 
          ZJP    ACCX        IF LOAD COMPLETE 
          DELAY 
          LDD    T1 
          UJN    ACC1        LOOP 
  
 ACCA     VFD    18/3R1CL, 6/0
 ACCB     DATA   C*NO CPP AVAILABLE.* 
  
          ERRNG  PPFW-*      IF OVERFLOW IN PP CODE 
          LOC    *O 
 .LWC     BSS    0           END OF CODE TO MOVE
  
  
          OVERFLOW  TPPA
          TTL    STL/LSL - LOAD SYSTEM LIBRARY. 
          TITLE 
          QUAL   LSL
          IDENT  LSL,LSLX 
*COMMENT  STL - COPY SYSTEM TAPE. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 LSL      SPACE  4
**        LSL - MAIN ROUTINE. 
  
  
          ORG    TPPA 
 LSL      SUBR               ENTRY/EXIT 
          RJM    PRS         PRESET OVERLAY 
  
*         LOAD AND INITIALIZE *SYSEDIT*.
  
          RJM    LCP         LOAD CENTRAL PROGRAM 
          LDK    UEML        READ UEM PRESENT BIT 
          CRD    CM 
          LDD    CM+4 
          LPN    2
          SHN    10-1        CM COPY FLAG BIT POSITION
          STD    T1 
          LDN    ZERL 
          CRD    CM 
          CRD    CN 
          LDC    104         (P) = ENTRY ADDRESS
          STD    CN+1 
          LDD    FL          (A0) = FL
          STD    CN+2 
          LDC    EEMC        SET ERROR EXIT MODE SELECTION
          LMD    T1 
          STD    CM 
          LDD    FA          (B3) = DISK DEADSTART FLAG 
          STD    CM+4 
          ZJN    LSL1        IF TAPE DEADSTART
          LDN    DPPF&LSLF
 LSL1     LMN    LSLF 
          RJM    IDF         ISSUE *DIO* REQUEST
          LDD    CP          STORE EXCHANGE PACKAGE DATA
          CWD    CN 
          ADN    3
          CWD    CM 
          MONITOR  RCPM      REQUEST CPU
          LJM    LSLX        RETURN 
 LCP      SPACE  4
**        LCP - LOAD CENTRAL PROGRAM. 
* 
*         EXIT   CENTRAL PROGRAM LOADED.
* 
*         USES   T1, T6.
* 
*         CALLS  RTB, CID.
  
  
 LCP      SUBR               ENTRY/EXIT 
          RJM    RTB         READ BLOCK 
          RJM    CID         CHECK IDENT TABLE
          LDD    WC          SET BLOCK WORD COUNT 
          SBD    T1 
          STD    T6 
          LDD    BA          SET BUFFER ADDRESS 
          STM    LCPA 
          LDD    RA          STORE FIRST BLOCK
          ADN    1
          SHN    6
          CWM    *,T6 
 LCPA     EQU    *-1
 LCP1     LDD    WC          CHECK WORD COUNT 
          SHN    -11
          ZJN    LCPX        RETURN IF NOT FULL BLOCK 
          RJM    RTB         READ NEXT BLOCK
          LDD    RA          STORE BLOCK
          ADN    1
          SHN    6
          ADD    T6 
          CWM    BUF,TH 
          LDD    TH          ADVANCE STORE ADDRESS
          RAD    T6 
          UJN    LCP1        LOOP 
          TITLE  OVERLAID PRESET ROUTINE. 
          USE    PRS
          ERRNG  BUF-5-*
 PRS      SPACE  4
**        PRS - PRESET OVERLAY. 
  
  
 PRS      SUBR               ENTRY/EXIT 
 PRS1     PAUSE 
          LDM    STLB+3      READ *REC* INPUT REGISTER
          CRD    CM 
          LDD    CM+3        CHECK RECOVERY COMPLETE FLAG 
          LMC    7776 
          NJN    PRS1        WAIT UNTIL SET 
          LDD    IA          RESTART *DIO*
          ADN    CH*10-2*10 
          CRD    CM 
          STD    CM+4 
          CWD    CM 
  
*         REQUEST ALL AVAILABLE STORAGE.
  
          LDN    DNFL        REQUEST NEGATIVE FL
          RJM    NFL
          LDN    CMRL        READ CMR LENGTH
          CRD    CN 
          ADN    MABL-CMRL   READ CM SIZE 
          CRD    CM 
          LDD    CM+2        SET CM REQUEST = AVAILABLE CM - 100B 
          SHN    14 
          ADD    CM+3 
          SBD    CN+4 
          SBN    1
          STD    T1 
          SHN    -13
          ZJN    PRS2        IF REQUEST .LE. 131K 
          LDC    3777        SET *SYSEDIT* FL = 377700B 
          STD    T1 
 PRS2     LDD    T1          REQUEST STORAGE
          SBN    DNFL 
          STD    CM+1 
          LDN    0           SET CM REQUEST 
          STD    CM+2 
          MONITOR RSTM
          LDD    FL 
          ADN    DNFL 
          LMD    T1 
          NJN    PRS2        LOOP IF NOT ASSIGNED 
          RJM    CDJ         CREATE DEADSTART JOB 
  
*         CREATE JOB INPUT FILE FOR DEADSTART CONTROL POINT.
  
          LDD    MA          SET FILE NAME
          CWM    PRSE,ON
          SBN    1
          CRD    FN 
          LDN    ZERL 
          CRD    DP 
          CRD    CN 
          LDN    NEEQ        POINT DEFAULT FAMILY AT NULL EQUIPMENT 
          STD    CN+3 
          STD    DP 
          LDC    INFT*100 
          STD    FN+4 
          NFA    FNTN        STORE FNT IN NFL 
          CWD    FN 
          ADN    FSTL 
          CWD    DP 
          LDN    ZERL 
          CRD    FN 
          CRD    CM 
          LDC    4000        SET EOR ON CONTROL STATEMENT FILE
          STD    CM+1 
          LDD    QA          SET EJT ORDINAL
          STD    DP 
          LDC    NOJT*100    SET QUEUE FILE DISPOSITION 
          STD    FN 
          LDD    CP 
          ADN    CWQW 
          CWM    PRSI,ON     WRITE CPU PRIORITY 
          ADN    JCIW-CWQW-1  WRITE JOB CONTROL 
          CWM    PRSA,ON
          ADN    CPTW-JCIW-1
          CWD    ZR 
          ADN    STLW-CPTW
          CWM    PRSD,ON     SET SRU AND TIME LIMITS TO MAXIMUM 
          ADK    FLCW-STLW-1
          CWM    PRSH,ON     SET MAXIMUM FL 
          ADK    PFCW-FLCW-1
          CWD    CN 
          ADN    TFSW-PFCW
          CWD    DP 
          ADN    CSPW-TFSW   STORE CONTROL STATEMENT POINTER
          CWD    CM 
          ADN    ALMW-CSPW   SET UNLIMITED VALIDATION LIMITS
          CWM    PRSD,ON
          ADN    ACLW-ALMW-1
          CWM    PRSD,ON
          ADN    AACW-ACLW-1
          CWM    PRSD,ON
          SBN    AACW+1-EOJW STORE END OF JOB INFORMATION 
          CWD    FN 
          ADN    CPLW-EOJW   STORE CPU TIME LIMITS
          CWM    PRSF,ON
          LDD    RA          CLEAR (RA+1) 
          SHN    6
          ADN    1
          CWD    ZR 
          ADN    1           CLEAR (RA+2) 
          CWD    ZR 
          ADN    1           CLEAR (RA+3) 
          CWD    ZR 
          CRD    CN          SET UP CONFIGUARATION
          LDK    MABL        GET HARDWARE OPTIONS 
          CRD    CM 
          LDD    CM+1        SET CMU STATUS 
          LPN    10 
          LMN    10 
          SHN    13-3 
          STD    CN 
          LDD    RA 
          SHN    6
          ADN    CMUR 
          CWD    CN 
          ADN    FWPR-CMUR
          CWM    PRSB,ON
          LDM    1,HN 
          STD    FA 
          NJN    PRS3        IF DISK DEADSTART
          LJM    PRSX        RETURN 
  
 PRS3     LDD    MA          MOVE FILE NAME TO DIRECT CELLS 
          CWM    PRSG,ON
          SBN    1
          CRD    FN 
          LDN    NEEQ        CREATE FNT ENTRY FOR DISK DEADSTART FILE 
          STD    FS 
          LDN    5           RETURN IF FILE NOT CREATED IMMEDIATELY 
          STM    OVL1-1 
          EXECUTE  0BF,OVL1 
          ZJN    PRS5        IF FILE CREATED
  
*         PROCESS LOCAL FILE LIMIT OR NFL INCREASE NEEDED.
*         PROCESS ADVANCE EXIT FROM *0BF* IF FNT ENTRY
*         ALREADY EXISTS. 
  
 PRS4     MONITOR  HNGM      HANG PP
          UJN    PRS4        CONTINUE TO HANG 
  
 PRS5     LDI    HN 
          STD    FS 
          LDM    1,HN 
          STD    FS+1 
          STD    FS+2 
          LDN    FSMS        SET FIRST SECTOR 
          STD    FS+3 
          LDN    1
          STD    FS+4 
          LCN    LOFT-LIFT   SET FILE TYPE
          SHN    6
          RAD    FN+4 
          NFA    FA,R        STORE FNT
          CWD    FN 
          ADN    FSTL        STORE FST
          CWD    FS 
          LJM    PRSX        RETURN 
  
 PRSA     VFD    24/0,12/MSSI,6/0,18/0
 PRSB     VFD    1/1,11/0,12/0,12/SYOT,24/0 
  
 PRSD     VFD    60/-0
  
 PRSE     VFD    42/0LINPUT,18/0
 PRSF     VFD    60/37777777777777777777B 
 PRSG     VFD    42/0LSDF,6/1,6/LIFT,6/0
 PRSH     VFD    12/3777,12/0,12/3777,24/0
 PRSI     VFD    2/1,7/MPRS-1,3/0,3/4,9/0,9//SCD/SSSC*JCBE,3/0,24/0 
 CDJ      SPACE  4,10 
**        CDJ - CREATE DEADSTART JOB. 
* 
*         EXIT   (QA) = EJT ORDINAL.
*                (CM+3 - CM+7) = *JSNE* WORD OF EJT ENTRY.
*                (CN - CN+4) = *SCHE* WORD OF EJT ENTRY.
*                (DP - DP+4) = *SCLE* WORD OF EJT ENTRY.
* 
*         CALLS  CFE, CTE.
* 
*         MACROS MONITOR. 
  
  
 CDJ      SUBR               ENTRY/EXIT 
          LDN    ZERL 
          CRD    CN 
          CRD    DP 
          LCN    0           SET USER INDEX = 377777
          STD    CM+6 
          STD    CN+4 
          LDC    100+37      SET FOT ORDINAL = 1
          STD    CM+5 
          LDK    NICS*200+EXJS*2  SET CONNECTION/JOB STATUS 
          STD    CM+7 
          LDC    /SCD/DSSC*100+SYOT  SET SERVICE CLASS/ORIGIN TYPE
          STD    DP 
          LDN    NEEQ        SET NULL EQUIPMENT 
          STD    CN 
          LDN    DSCP        SET CONTROL POINT
          STD    CN+3 
          STD    CM+1        SELECT NO IOQT ENTRY 
          MONITOR  RJSM      REQUEST JOB SEQUENCE NUMBER
          LDC    4000+PEJT  CREATE EJT ENTRY
          RJM    CTE
          ADN    SCHE        STORE EJT ENTRY
          CWD    CN 
          ADN    SCLE-SCHE
          CWD    DP 
          LDD    CM+1        SET EJT ORDINAL
          STD    QA 
          LDD    RS 
          NJN    CDJ1        IF RECOVERY DEADSTART
          RJM    CFE         CREATE FAST ATTACH FILES 
 CDJ1     LJM    CDJX        RETURN 
 CFE      SPACE  4,10 
**        CFE - CREATE FAST ATTACH FNT ENTRIES. 
* 
*         USES   T6, T7, CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 CFE      SUBR               ENTRY/EXIT 
          LDC    MMFL        FETCH MACHINE ID 
          CRD    CM 
          LDD    CM          SET MACHINE ID IN RESOURCE FILE NAMES
          STM    CFEC+2 
          STM    CFED+2 
          LDC    CFEB-1      INITIALIZE LIST ADDRESS
          STD    T6 
          LDN    SYFO        PRESET ORDINAL CHECK 
          STD    T7 
          ERRNZ  SYFO        SYSTEM FILE ORDINAL .NE. 0 
 CFE1     STD    CM+1 
          AOD    T6          ADVANCE LIST ADDRESS 
          LDI    T6 
          ZJN    CFEX        IF NO MORE FAST ATTACH FILES 
          STM    CFEA 
          LDD    MA          MOVE FILE NAME TO MESSAGE BUFFER 
          CWM    *,ON 
 CFEA     EQU    *-1
          LDN    PFNT        CREATE FNT ENTRY 
          STD    CM+2 
          MONITOR  MTRM 
          AOD    T7          ADVANCE ORDINAL CHECK
          LMD    CM+1 
          ZJN    CFE1        IF FNT ORDINAL SEQUENTIAL
          UJN    *           HANG 
  
 CFEB     CON    CFEC 
          CON    CFED 
          CON    0           END OF LIST
  
 CFEC     VFD    42/0LRSXDAA,6/0,6/SYFT,6/0 
 CFED     VFD    42/0LRSXVAA,6/0,6/SYFT,6/0 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPCTE 
*CALL     COMPNFL 
  
  
 OVL1     EQU    *+1         ZERO-LEVEL OVERLAY LOAD ADDRESS
  
          ERRNG  7777-OVL1-ZBFL  CHECK LENGTH OF *0BF*. 
          SPACE  4
          TTL    STL - SYSTEM TAPE LOADER.
          END 
