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