IDENT SLL,SLL
PERIPH
BASE MIXED
SST
*COMMENT SLL - SYSTEM LIBRARY LOADER.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
TITLE SLL - SYSTEM LIBRARY LOADER.
SPACE 4
*** SLL - SYSTEM LIBRARY LOADER.
* G. R. MANSFIELD. 70/12/18.
* P. D. HAAS. 81/10/05.
SPACE 4
*** SLL PERFORMS MANAGEMENT OF THE SYSTEM LIBRARY BY
* PROCESSING THE FOLLOWING OPERATIONS -
*
* (1) WRITING OF THE SYSTEM LIBRARY FILE.
* (2) COPYING LIBRARY TABLES FROM THE CALLING PROGRAM.
* (3) CONVERSION OF RANDOM ADDRESSES TO ACTUAL MASS STORAGE
* ADDRESSES.
*
*
* THIS PROGRAM MAY BE CALLED ONLY FROM SYSTEM ORIGIN
* JOBS, AND IS INTENDED TO BE USED ONLY BY THE CPU PROGRAM
* *SYSEDIT*. ANY OTHER USAGE IS AT THE CALLER-S OWN RISK.
* IT SHOULD ALSO BE NOTED THAT WHILE SYSEDIT AND SLL HAVE BEEN
* DESIGNED TO MODIFY THE RUNNING SYSTEM IN AN ACTIVE
* ENVIRONMENT THEIR OPERATION AND THE EFFECTS ON THE SYSTEM
* CANNOT BE PREDICTED UNLESS THE SYSTEM IS IDLE.
* THEREFORE THE USER SHOULD BEWARE.............
SPACE 4
*** DAYFILE MESSAGES.
*
* * SYSTEM ACTIVITY PROHIBITS LIBRARY CHANGE.* = IN ORDER TO
* PERFORM THE SYSEDIT IT IS NECCESARY TO MOVE THE JOB AT
* CONTROL POINT 1. THE JOB THERE CANNOT BE MOVED HOWEVER.
*
* * SYSTEM LIBRARY CHANGE INCORRECT.* = CALLER DOES NOT HAVE
* PERMISSION TO MODIFY THE SYSTEM.
*
* * CMR OVERFLOW.* = THE CENTRAL MEMORY LIBRARIES AND
* DIRECTORIES GENERATED BY *SYSEDIT* WOULD NOT FIT WITHIN THE
* FIRST MCMR*100B WORDS OF MEMORY.
*
*
* MANY OF THE FOLLOWING MESSAGES ARE TO PROTECT THE USER IN
* CASE OF ABNORMAL CONDITIONS. THUS, THERE MAY NOT BE ANY
* DIRECT CORRECTIVE ACTION FOR THEM. THESE TYPES OF ERRORS
* SHOULD NOT NORMALLY OCCUR.
*
* * SLL ARGUMENT ERROR.* = PARAMETER ADDRESS OR REQUEST WORD
* ADDRESS IS OUT OF RANGE.
*
* * RANDOM ADDRESS ERROR.* = RANDOM ADDRESS NOT ON FILE.
*
* * INCORRECT SLL REQUEST.* = FUNCTION CODE UNDEFINED.
*
* * INCORRECT ROLLOUT REQUEST.* = *SLL* AND *SYSEDIT* MAY NOT
* BE ROLLED OUT WHILE RUNNING.
*
* * SYSTEM TOO BIG FOR MASS STORAGE.* = NOT ENOUGH ROOM ON
* MASS STORAGE FOR SYSTEM LIBRARY.
*
* * LIBRARY TABLE ERROR.* = BLANK ENTRY NOT FOUND IN LIBRARY
* TABLE OR DIRECTORY WITHIN FL.
*
* * BUFFER CONTROL WORD ERROR.* = INCORRECT WORD COUNT PASSED
* FROM CALLING ROUTINE.
*
* * SYSTEM DEVICE ERROR.* = SYSTEM DEVICE IS INACCESSIBLE.
*
* * SYSTEM DEVICE DOWN.* = SYSTEM DEVICE IS INACCESSIBLE.
*
* * SYSTEM FILE RESERVED.* = SYSTEM FILE IN USE - POSSIBLY BY
* ANOTHER COPY OF SYSEDIT.
*
* * SYSTEM FILE DESTROYED.* = SYSTEM SECTOR FOR SYSTEM BAD.
*
* * SLL - LOCAL FILE LIMIT.* = CREATING THE FILES REQUIRED FOR
* *SYSEDIT* WILL EXCEED THE USER-S LOCAL FILE LIMIT.
SPACE 4,10
*** CALL.
*
*
*T 18/ *SLL*, 6/ CP, 12/ DS, 6/ AB, 18/ ST
* CP CONTROL POINT
* DS DEADSTART STATUS (1 = DEADSTART)
* AB ABORT FLAG (1 = NO ABORT ON SYSTEM FILE BUSY)
*
*T STAT 12/ CODE,18/,18/ ADDR,12/ ST
* CODE FUNCTION CODE
* ADDR ADDRESS
* ST COMPLETION STATUS
SPACE 4
** ROUTINES USED.
*
*
* 0BF - BEGIN LOCAL FILE.
SPACE 4,10
** PROGRAMS CALLED.
*
*
* 1CK - CHECKPOINT MASS STORAGE DEVICES.
SPACE 4
*CALL COMPMAC
*CALL COMSCPS
*CALL COMSDSL
*CALL COMSHIO
*CALL COMSMSC
*CALL COMSMSP
*CALL COMSMTR
*CALL COMSPDT
*CALL COMSPIM
*CALL COMSSRT
*CALL COMSSSD
*CALL COMSSSJ
*CALL COMSWEI
*CALL COMSZOL
SPACE 4
**** DIRECT LOCATION ASSIGNMENTS.
RF EQU 15 RETURN FLAG FOR *RMT*
T8 EQU 16
T9 EQU 17
FS EQU 20 - 24 FST ENTRY (5 LOCATIONS)
AB EQU FS - FS+4 ROUTINE NAME (5 LOCATIONS)
SE EQU 25 SECTOR COUNT
EI EQU 26 EQUIPMENT INDEX
CN EQU 30 - 34 CM WORD BUFFER (5 LOCATIONS)
SF EQU 35 SYSTEM FILE FST INDEX
PL EQU SF+1 PP LIBRARY FILE FST INDEX
AL EQU SF+2 ALTERNATE LIBRARY FILE FST INDEX
FN EQU 40 - 44 FILE NAME (5 LOCATIONS)
PA EQU 45 - 46 PARAMETER ADDRESS (2 LOCATIONS)
SL EQU 47 SLM
DS EQU IR+2 DEADSTART STATUS
FA EQU 57 FST ADDRESS
CW EQU 60 - 66 CLD CONTROL WORD BUFFER
RI EQU 65 - 66 RANDOM INDEX (2 LOCATIONS)
SN EQU 65 - 66 SECTOR NUMBER (2 LOCATIONS)
LE EQU 67 LAST MASS STORAGE EQUIPMENT
****
TITLE MAIN PROGRAM.
SLL SPACE 4
** SLL - MAIN PROGRAM.
ORG PPFW
SLL RJM PRS PRESET PROGRAM
* WAIT FOR CONTROL WORD REQUEST.
SLL1 RJM PSE PAUSE
LDD IR+3 READ CONTROL WORD
SHN 6
ADD RA
SHN 6
ADD IR+4
CRD CN
LDD CN CHECK FUNCTION CODE
ZJN SLL1 IF NO REQUEST
SBN TFCNL
MJN SLL2 IF LEGAL REQUEST
LJM ABT
* PROCESS FUNCTION REQUEST.
SLL2 LDD CN+2 SET PARAMETER ADDRESS
LPN 37
STD PA
SHN 14
LMD CN+3
STD PA+1
SHN -6
SBD FL
MJN SLL3 IF IN RANGE
LDC =C* SLL ARGUMENT ERROR.*
LJM ABT1
SLL3 LDM TFCN,CN SET FUNCTION PROCESSOR
STM SLLA
RJM * PROCESS FUNCTION
SLLA EQU *-1
* SET FUNCTION COMPLETE.
LDN ZERL SET REQUEST COMPLETE
CRD CM
AOD CM+3
STD CM+4
LDD IR+3
SHN 6
ADD RA
SHN 6
ADD IR+4
CWD CM
LJM SLL1 LOOP
* LJM CPS (RELEASE PP AFTER LOAD COMLETION)
* LJM DPP (DROP PP FOR ERROR CONDITION)
SLLB EQU *-1
CPS LDM CPSA+2,DS
ZJN DPP IF NO CHECKPOINT REQUEST
LDD IR+1
LPN 37 SET CP NUMBER IN 1CK CALL
RAM CPSA+1
LDD IA
CWM CPSA,ON STORE INPUT REGISTER FOR *1CK*
EXECUTE 1CK,=
CPS1 LJM PPR
CPSA VFD 60/0L1CK
DPP BSS 0
DPPA MONITOR DPPM DROP PP
UJN CPS1 EXIT TO PP RESIDENT
TITLE TABLES.
NSYS SPACE 4
** FNT ENTRIES FOR SYSTEM SECTOR.
NPPU VFD 42/0LPPULIB,6/1,6/SYFT,6/0
NASF VFD 42/0LALTSYS,6/1,6/LOFT,6/0
TFCN SPACE 4
** TFCN - FUNCTION TABLE.
* ENTRY = 1 WORD.
*
*T, 12/ ADDR
* ADDR ADDRESS OF FUNCTION PROGCESSOR
TFCN EQU *-1
LOC 1
CON ERD ENTER RESIDENCY DATA
CON CSN CONVERT SECTOR NUMBERS
CON WSF WRITE LIBRARY FILE
CON WPL WRITE PPU LIBRARY
CON ELD ENTER LIBRARY DIRECTORY
CON EAD ENTER ALTERNATE DEVICE TABLE
CON WAD WRITE ALTERNATE DEVICE
CON RSE RETURN SYSTEM EST ORDINAL
CON DPE DROP PP FOR ERROR CONDITION
TFCNL BSS 0
LOC *O
TSYD SPACE 4
** TSYD - TABLE OF SYSTEM DEVICES.
* ENTRY = 1 WORD.
*
*T, 12/ EQ
* EQ SYSTEM DEVICE EST ORDINAL
*
* TABLE TERMINATOR -
*T, 12/ 7777
TSYD BSS 0
DUP MXSY,1 MAXIMUM NUMBER OF SYSTEM DEVICES
CON -0
CON -0
ASDE EQU *-TSYD
CON 0
CON -0
TETC SPACE 4
** TETC - TABLE OF EMPTY TRACK CHAINS.
* ENTRY = 2 WORDS.
*
*T,TETC 12/ FT
*T,TETCA 12/ CT
* FT FIRST TRACK
* CT CURRENT TRACK
TETC BSS 0
BSSZ MXSY
TETCA BSS 0
BSSZ MXSY
TITLE FUNCTION PROCESSORS.
ERD SPACE 4
*** FUNCTION 1.
* ENTER RESIDENCY DATA IN LIST SPECIFIED BY *ADDR*.
*
* LIST FORMAT - 0 @ I < N.
*T ADDR+I 42/ NAME,6/ RC,12/ TY
*T ADDR+N 60/ 0
* NAME RECORD NAME
* RC RESIDENCE CODE
* TY RECORD TYPE
ERD6 LDN ZERL
CRD CM
RJM SPA
CWM TRES,T1
* CWM TRESB,T1 (IF NOT INDEPENDENT SHARED RMS)
ERDC EQU *-1
CWD CM TERMINATE LIST
ERD SUBR ENTRY/EXIT
ERDA LDN TRESL-1 SET INITIAL WORD COUNT
* LDN TRESL (IF CONCURRENT PPS PRESENT)
STD T1
LDN 0
STD T5
LDN 40 CM RESIDENT FLAG
STD T6
LDN NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH
STD CM
LDN PPRT PP TYPE FLAG
STD T7
ERRNZ LA6DI-PPRT ADJUST CODE IF VALUE CHANGES
UJN ERD2 FORCE *6DI* AND OVERLAYS TO BE CM RESIDENT
ERD1 AOD CM ADVANCE EST
LMD LE
ZJN ERD6 IF END OF MASS STORAGE DEVICES
SFA EST,CM READ EST ENTRY
ADK EQDE
CRD CN READ EST ENTRY
LDD CN CHECK EQUIPMENT
SHN 21-13
PJN ERD1 IF NOT MASS STORAGE
LDD CN+4 READ DRIVER NAME
SHN 3
ADN MDGL
CRD CN
LDD CN+3 SET DRIVER INDEX
LPN 7
ERD2 STD T2
LDM TADN,T2
ERD3 ZJN ERD1 IF DRIVER ALREADY ENTERED
SHN 6
STD T4
LMN 1R6
SHN 6
STD T3
LDN 0 SET DRIVER ENTERED
STM TADN,T2
LDM TAOT,T2 SET OVERLAY LIST ADDRESS
STD CM+3
STD CM+4
ERD5 RJM ERT ENTER RESIDENCY TABLE
LDI CM+3
STI CM+4
ZJN ERD3 IF END OF OVERLAY LIST
SHN 6
STD T4
LMN 1R7 SET *7XX*
SHN 6
STD T3
AOD CM+3
UJN ERD5 SELECT ADDITIONAL ERROR PROCESSORS
ERD SPACE 4,4
** TADN - TABLE OF DRIVER NAMES.
*
* ENTRY = 1 WORD.
* WORD = DRIVER NAME.
*
* NOTE TABLES *TADN* AND *TAOT* ARE PARALLEL TABLES. ANY
* CHANGES TO BE MADE SHOULD BE REFLECTED IN BOTH. ALSO,
* THESE TABLES ARE SEQUENCED ACCORDINGLY TO CORRESPOND
* WITH THE DRIVER INDICES FOUND IN *COMSMSP*.
TADN INDEX
INDEX LA6DI,2RDI
INDEX LA6DJ,2RDJ
INDEX LA6DP,2RDP
INDEX LA6DE,2RDE
INDEX LA6DX,2RDX
INDEX LA6MX
SPACE 4,10
** TAOT - TABLE OF OVERLAY LIST ADDRESSES.
*
* ENTRY = 1 WORD.
* WORD = ADDRESS OF OVERLAY LIST TABLE.
*
* NOTE TABLES *TADN* AND *TAOT* ARE PARALLEL TABLES. ANY
* CHANGES TO BE MADE SHOULD BE REFLECTED IN BOTH. ALSO,
* THESE TABLES ARE SEQUENCED ACCORDINGLY TO CORRESPOND
* WITH THE DRIVER INDICES FOUND IN *COMSMSP*.
ORG *-LA6DI
TAOT INDEX
INDEX LA6DI,TDI *6DI* ASSOCIATED OVERLAYS
INDEX LA6DJ,TDI *6DJ* ASSOCIATED OVERLAYS
INDEX LA6DP,TDP *6DP* ASSOCIATED OVERLAYS
INDEX LA6DE,TDE *6DE* ASSOCIATED OVERLAYS
INDEX LA6DX,TDX *6DX* ASSOCIATED OVERLAYS
INDEX LA6MX
SPACE 4,4
** TDE - TABLE OF ASSOCIATED *DE* OVERLAYS.
*
* ENTRY = 1 WORD.
* WORD = OVERLAY NAME.
TDE BSS 0
CON 2RDE
CON 0
ERD SPACE 4,4
** TDI - TABLE OF ASSOCIATED *DI* AND *DJ* OVERLAYS.
*
* *6DI* AND ITS OVERLAYS MUST ALWAYS BE FORCED CM RESIDENT
* BECAUSE THEY ARE NEEDED TO READ PACK SERIAL NUMBERS, FLAW
* MAPS, AND FIRMWARE IDENTS FOR ALL DISK TYPES INCLUDING
* BUFFERED I/O DEVICES. IN ADDITION, DISK DRIVER *6DJ* USES
* THE *6DI* OVERLAYS FOR ERROR RECOVERY.
*
* ENTRY = 1 WORD.
* WORD = OVERLAY NAME.
TDI BSS 0
CON 2RDI
CON 2RBI
CON 2RCI
CON 2REI
CON 2RFI
CON 2RGI
CON 2RHI
CON 2RII
CON 2RJI
CON 2RKI
CON 2RLI
CON 2RSI
CON 2RWI
CON 0
ERD SPACE 4,4
** TDP - TABEL OF ASSOCIATED *DP* OVERLAYS.
*
* ENTRY = 1 WORD.
* WORD = OVERLAY NAME.
TDP BSS 0
CON 2RDP
CON 2RMP
CON 2RRP
CON 2RSP
CON 0
TDX SPACE 4,10
** TDX - TABLE OF ASSOCIATED *DX* OVERLAYS.
*
* ENTRY = 1 WORD.
* WORD = OVERLAY NAME.
TDX BSS 0
CON 2RDX
CON 0
CSN SPACE 4,15
*** FUNCTION 2.
* CONVERT SECTOR NUMBERS FROM RANDOM INDEX TABLE STARTING
* AT *ADDR*.
*
* I = 1,N,2
*T ADDR+I 36/,24/ RI
* RI RANDOM INDEX
*
* CONVERSION -
*T ADDR+I 36/,12/ TK,12/ SC
* TK TRACK
* SC SECTOR
CSN SUBR ENTRY/EXIT
LDD CN+1
SBN 3
PJP ABT IF INVALID FST INDEX
LDM SF,CN+1
STD FA
NFA FA,R READ FST
CRD FS
CRD T5
CSN1 LDN 0 SET RANDOM INDEX
STD RI+1
STD RI
STD T7 SET FIRST SECTOR
LDD FS+1 SET FIRST TRACK
STD T6
LDI SL SET SECTOR LIMIT
STD T3
CSN2 RJM SPA READ LIST ENTRY
CRD CM
ADN 1
CRD CN
LDD CM
ADD CM+1
ADD CM+2
ADD CM+3
ADD CM+4
NJN CSN3 IF NOT END OF LIST
LJM CSNX RETURN
CSN3 LDD CN+3 SET SECTOR ADVANCE
SBD RI
MJN CSN1 IF BACKWARD
STD CM
LDD CN+4
SBD RI+1
STD CM+1
PJN CSN4 IF FORWARD
AOD CM+1 ADJUST CARRY
SOD CM
PJN CSN4 IF FORWARD
LJM CSN1 RESTART
CSN4 LDD CM CHECK ADVANCE
NJN CSN5 IF TRACK CHANGE
LDD CM+1
ADD T7 SET SECTOR
SBD T3
PJN CSN5 IF SECTOR LIMIT PASSED
LDD CN+3 UPDATE RANDOM INDEX
STD RI
LDD CN+4
STD RI+1
LDD T6 SET TRACK
STD CN+3
LDD CM+1 UPDATE SECTOR NUMBER
RAD T7
STD CN+4
RJM SPA STORE LIST ENTRY
ADN 1
CWD CN
LDN 2 ADVANCE LIST
RAD PA+1
SHN -14
RAD PA
LJM CSN2 LOOP
* ADVANCE TRACK.
CSN5 LDD T3 ADVANCE RANDOM INDEX
SBD T7
RAD RI+1
SHN -14
RAD RI
LDN 0 SECTOR = 0
STD T7
LDD T6 CHECK NEXT TRACK
SHN 6
MJN CSN6 IF NOT END OF CHAIN
LDC =C* RANDOM ADDRESS ERROR.*
LJM ABT1
CSN6 RJM SNT SET NEXT TRACK
STD T6
STD T3 SET SECTOR LIMIT
SHN 6
PJN CSN7 IF END OF CHAIN
LDI SL SET SECTOR LIMIT
STD T3
CSN7 LJM CSN2 LOOP
WSF SPACE 4
** FUNCTION 3.
* WRITE SYSTEM FILE.
WSF SUBR ENTRY/EXIT
LDN 0 WRITE SYSTEM LIBRARY
RJM WSL
UJN WSFX RETURN
WPL SPACE 4
*** FUNCTION 4.
* WRITE PPU LIBRARY FILE.
WPL SUBR ENTRY/EXIT
LDN 1 WRITE PPU LIBRARY
RJM WSL
LDD FS+1 SET FIRST TRACK
STM RELB
UJN WPLX RETURN
ELD SPACE 4
*** FUNCTION 5.
* ENTER LIBRARY DIRECTORY.
ELD SUBR ENTRY/EXIT
LDD CN+2
SHN -6 SET CHECKPOINT REQUEST
STM CPSA+2
LDD PA SET LIBRARY TABLE ADDRESS
STD T1
LDD PA+1
STD T2
RJM SCL SCAN RPL
STM ELDC+1 SET RCL INDEX
SHN -14
RAM ELDC
RJM SCL SCAN RCL
ADD CN+1 NUMBER OF ALTERNATE SYSTEM PLD ENTRIES
STM ELDG+1 SET PLD INDEX
SHN -14
RAM ELDG
LDD T2
STD T9
LDD T1
STD T8
RJM SCD SCAN PLD
STM ELDF+1 SET PST INDEX
SHN -14
RAM ELDF
LDD T2 SET PLD LENGTH FOR PROBE TABLE
SBD T9
RAM ELDA+1
SHN -14
ADD T1
SBD T8
RAM ELDA
RJM SCD SCAN PST
STM ELDE+1 SET EPD INDEX
SHN -14
RAM ELDE
RJM SCD SCAN EPD
STM ELDD+1 SET LBD INDEX
SHN -14
RAM ELDD
RJM SCD SCAN LBD
STD T7 SET LIBRARY LENGTH
SHN -14
STD T6
LDN SSTL CHECK IF PROBE ENABLED
CRD CM
ADK RPLP-SSTL FETCH RPL POINTER
CRD CN
LDD CM+2
SHN 21-6
PJN ELD0 IF PROBE ENABLED
LJM ELD1 PROBE NOT ENABLED
ELD0 AOM ELDB FLAG PROBE ENABLED
STM ELDH
LDD CN+1 SET FWA OF PROBE TABLE
ADD T7
STD AB+4
SHN -14
ADD CN
ADD T6
STD AB+3
ELDA LDC TPRDL*2+1 SET PROBE TABLE LENGTH
SHN -1
STD AB+2
SHN -14
STD AB+1
LDC 4000 CLEAR PROBE TABLE INTERLOCK
STD AB
LDC BIOL READ BUFFERED I/O TABLE POINTER
CRD FN
LDD FN+1 READ FWA OF *IOST*
SHN 14
LMD FN+2
ZJN ELD0.1 IF NO BUFFER I/O DEVICES
ADK PUTP BUILD *IOSP* BASED ON *PUTP*
CRD CM
LDD AB+4 SET FWA OF *IOST*
ADD AB+2
STD CM+4
SHN -14
ADD AB+3
ADD AB+1
STD CM+3
LDD FN+1 WRITE FWA OF *IOST*
SHN 14
LMD FN+2
ADK IOSP
CWD CM
LDD CM+2 ADJUST TABLE LENGTH TO INCLUDE *IOST*
RAD AB+2
SHN -14
ADD CM+1
RAD AB+1
ELD0.1 LDD AB+2 ADJUST FOR LIBRARY LENGTH
RAD T7
SHN -14
ADD AB+1
RAD T6
ELD1 LDD T6 SET NEW CMR LENGTH
ADD CN
SHN 14
ADD T7
ADD CN+1
ADN 77 ROUND UP
SHN -6
STD CW
ADC -MCMR
MJN ELD1.1 IF NEW CMR LENGTH VALID
LDC =C* CMR OVERFLOW.*
UJN ELD1.2 DISPLAY MESSAGE AND ABORT JOB
ELD1.1 LDN CMRL FETCH CMR LENGTH
CRD CM
LDD CM+4 CHECK FL REQUIRED
SBD CW
ZJN ELD2 IF NO CHANGE
LDC CPAS+JCIW READ JOB CONTROL OF CP 1
CRD CM
LDD CM+2 CHECK SUBSYSTEM ID
LMC IFSI
NJN ELD2 IF JOB MOVABLE
LDC =C* SYSTEM ACTIVITY PROHIBITS LIBRARY CHANGE.*
ELD1.2 LJM ABT1 ABORT *SYSEDIT*
ELD2 LDN 0
* LDN 1 (PROBE ENABLED)
ELDB EQU ELD2
ZJN ELD4 IF PROBE NOT ENABLED
* PROBE TABLE IS LEFT INTERLOCKED BY *SET* DURING
* DEADSTART LOAD.
LDD DS
NJN ELD4 IF DEADSTART
ELD3 RJM PSE
LDN 1 INTERLOCK PROBE TABLES
STD CM+1
STD CM+2
LDD MA
CWM ELDN,ON
MONITOR UADM
LDD CM+1
NJN ELD3 IF PROBE TABLE NOT INTERLOCKED
ELD4 LDN 0 CLEAR *CPUMTR* TABLES
RJM ICT
LDC RPLP LOCK RPL
CRD CM+3
LDN ZERL
CRD CM
ADN RPLP-ZERL STORE ZERO RPL POINTER
CWD CM+3
ADN PLDP-RPLP LOCK PLD
CRD CM+3
LDN ZERL
CRD CM
* A ZERO *PLD* POINTER IS SET TO INHIBIT PROGRAM LOADS WHILE
* THE *RPL* AND *PLD* ARE BEING WRITTEN BY *SLL*.
ADN PLDP-ZERL STORE ZERO PLD POINTER
CWD CM+3
LDN DFPP READ FWA OF DAYFILE DUMP BUFFER
CRD CM
LDD CM+2 INHIBIT DAYFILE DUMP
SHN 14
LMD CM+3
CWM ELDK,ON
LCN 0
SBN 1
NJN *-1
ELD6 LDD CW SET NEW CMR SIZE
STD CM+1
LDC 1000 SET CMR REQUEST
STD CM+2
MONITOR RSTM
LDD CM+1 CHECK FIELD LENGTH
NJN ELD6 IF MEMORY NOT ASSIGNED
RJM CLT COPY LIBRARY TABLE
LDC RCLP FETCH RCL POINTER
CRD CM
LDD CN SET RCL ADDRESS
SHN 14
ADD CN+1
ELDC ADC *
STD CM+1
SHN -14
STD CM
LDC RCLP STORE RCL POINTER
CWD CM
ADN LBDP-RCLP FETCH LBD POINTER
CRD CM
LDD CN SET LBD ADDRESS
SHN 14
ADD CN+1
ELDD ADC *
STD CM+3
SHN -14
STD CM+2
LDC LBDP STORE LBD POINTER
CWD CM
ADN EPDP-LBDP FETCH EPD POINTER
CRD CM
LDD CN SET FWA OF EPD
SHN 14
ADD CN+1
ELDE ADC *
STD CM+1
SHN -14
STD CM
ERRNZ PSTP-EPDP POINTERS NOT IN SAME WORD
LDD CN SET FWA OF PST
SHN 14
ADD CN+1
ELDF ADC *
STD CM+3
SHN -14
STD CM+2
LDC PSTP STORE EPD/PST POINTERS
CWD CM
SBN PSTP-PLDP UNLOCK LIBRARY
CRD CM
LDD CN
SHN 14
ADD CN+1
ELDG ADC *
STD CM+1
SHN -14
STD CM
LDC PLDP STORE PLD POINTER
CWD CM
SBN PLDP-RPLP STORE RPL POINTER
CWD CN
LDN 1 INITIALIZE *CPUMTR* TABLES
RJM ICT
ELDH LDN 0
* LDN 1 (PROBE ENABLED)
ZJN ELD7 IF PROBE NOT ENABLED
LDD MA CLEAR PROBE TABLE
CWD AB
CRD CM
LDD CM+1 CLEAR FUNCTION CODE
LPN 77
STD CM+1
MONITOR CSTM
LDN PDTL SET PACKED DATA IN PROBE TABLE
CRD CM
LDD AB+3
SHN 14
ADD AB+4
CWD CM
LDC PRBP CLEAR PROBE TABLE INTERLOCK
CWD AB
ELD7 RJM LDB LOAD *1DD* BOOTSTRAP
LDD PL CLEAR *PPULIB* FNT ENTRY
RJM CFE
STD PL
SOM RELA CLEAR ERROR CONDITION FLAG
LDC CPS SET MAIN LOOP EXIT ADDRESS
RJM REL RELEASE PP
LJM ELDX RETURN
ELDK ADN 77 DISABLE DAYFILE DUMP BOOTSTRAP
PJN *-1
LJM FTN-1 RE-RETURN FROM *DFMM*
ELDN CON LDOS DECREMENT LOW CORE FIELD BY ONE
CON PRBP WORD ADDRESS
CON 59D*100B+1 BIT ADDRESS/FIELD WIDTH
CON 0,0
SPACE 4
*** FUNCTION 6.
* ASSEMBLE TABLE OF ALTERNATE SYSTEM DEVICES.
EAD SUBR ENTRY/EXIT
LDD CN+2
SHN -6
STD CN+2
LDN NOPE INITIALIZE EST ORDINAL FOR SEARCH
STD T7
LDN ZERL
CRD CM
EAD1 SFA EST,T7
ADK EQDE
CRD T1 READ EST ENTRY
LDD T1
SHN 21-13
PJN EAD3 IF NOT MASS STORAGE
SHN 13-12
MJN EAD3 IF SYSTEM DEVICE
SHN 12-1
MJN EAD3 IF DEVICE OFF OR DOWN
LDD T1+4
SHN 3
ADN STLL
CRD FS READ MST
LDD FS
SHN 21-0
PJN EAD3 IF NOT ALTERNATE SYSTEM DEVICE
LDD T1+3
EAD2 STD T7+1 SET DEVICE TYPE
RJM SPA WRITE TABLE ENTRY
ADD CM+4
CWD T7
AOD CM+4 ADVANCE COUNT
EAD3 AOD T7
LMD LE
EADA NJN EAD1 IF NOT AT LAST MASS STORAGE EQ
STD T7
STM EADA
STD CN
ZJN EAD2 TERMINATE TABLE
LDD RA
ADD CN+1
SHN 6
LMD CN+2
CWD CM WRITE TABLE LENGTH
LJM EADX
SPACE 4
*** FUNCTION 7.
* WRITE FILE ON ALTERNATE SYSTEM DEVICE.
WAD8 LDN 2 SET *ALTSYS* FST INDEX
STD CN+1
WADA LDC 0
STD PA+1 SET LIST ADDRESS
SHN -14
STD PA
RJM CSN CONVERT SECTOR NUMBERS
LDD T5 SET EQUIPMENT
STD CM+1
LDD FS+1 SET FIRST TRACK OF ASR FILE
STD CM+2
STD T6
LDN USTS UPDATE SYSTEM TABLE TRACK
STD CM+3
MONITOR SMDM
AOD FA WRITE SYSTEM SECTOR
SETMS IO,(NS,RW),WDSB
RJM WSS
ENDMS
LDD AL CLEAR *ALTSYS* FNT ENTRY
RJM CFE
STD AL CLEAR FST POINTER
LDM TSYD SET TRT ADDRESS
RJM STA
WAD SUBR ENTRY/EXIT
LDD CN+2
SHN -6
STD CN+2
LDC NASF CREATE LOCAL FILE *ALTSYS*
RJM CLF
STD AL
LDD CN+1
SHN 6
LMD CN+2
STM WADA+1 SAVE LIST ADDRESS
SHN -14
LMC LDCI
STM WADA
LPN 77
SHN 6
ADD RA READ FIRST ENTRY IN LIST
SHN 6
ADM WADA+1
CRD CM
LDC TSYD+ASDE
STM RMTA
LDD CM+4 SET EST ORDINAL FROM LIST
SHN -6
STM TSYD+ASDE
STD FS
SFA EST READ EST ENTRY
ADK EQDE
CRD CN
LDD CN+4 GET DEVICE USAGE WORD FROM MST
SHN 3
ADN DULL
CRD CM
LDD CM+3
STD FS+1
STD FS+2
ZJN WAD5 IF NO PREVIOUS LIBRARY ON THIS DEVICE
LDN FSMS
WAD5 STD FS+3
LDD FS SET TRT ADDRESS
RJM STA
NFA AL,R
CWD FS
WADB LDN 0
ZJN WAD7 IF NO PREVIOUS ALTERNATE LIBRARY
SOM WADB
WAD6 LDC RTCL
CRD CM READ CLOCK
LDD CM
SBD CW
SHN 14 DETERMINE ELAPSED TIME
ADD CM+1
SBD CW+1
SBN 6
MJN WAD6 IF NOT SIX SECOND DELAY
WAD7 LDN 2 WRITE ALTERNATE LIBRARY
RJM WSL
LJM WAD8 COMPLETE PROCESSING
RSE SPACE 4,10
*** FUNCTION 8.
* RETURN SYSTEM EST ORDINAL.
RSE SUBR ENTRY/EXIT
LDN ZERL
CRD CM
LDM TSYD SET SYSTEM DEVICE
STD CM+1
RJM SPA RETURN SYSTEM DEVICE TO *SYSEDIT*
CWD CM
UJN RSEX RETURN
DPE SPACE 4,10
*** FUNCTION 9.
* DROP PP FOR ERROR CONDITION.
DPE SUBR ENTRY/EXIT
LDC DPP SET MAIN LOOP EXIT TO DROP PP
RJM REL RELEASE SYSTEM FILES
UJN DPEX RETURN
TITLE MASS STORAGE I/O ROUTINES.
WMS SPACE 4,10
** WMS - WRITE MASS STORAGE.
*
* ENTRY (A) = BUFFER ADDRESS.
*
* EXIT (A) .GE. 0.
*
* ERROR TO *ABT1* IF WRITE ERROR.
*
* CALLS WDS.
WMS SUBR ENTRY/EXIT
RJM WDS
WMSA PJN WMSX IF NO WRITE ERROR
LDC UJNI-PJNI
RAM WMSA DISABLE MASS STORAGE ERROR PROCESSING
WMS1 LDC =C* SYSTEM DEVICE ERROR.*
UJN ABT1 ABORT THE JOB
TITLE SUBROUTINES.
ABT SPACE 4
** ABT - ABORT JOB.
ABT LDC =C* INCORRECT SLL REQUEST.*
ABT1 STM ABTA
RJM DFM
ABT2 LDC LDNI+ABTM CHANGE DROP TO ABORT FUNCTION
STM DPPA
ERRPL ABTM-100 CODE DEPENDS ON VALUE
LDD DS
NJN ABT4 IF DEAD START LOAD
AOM RELA
ABT3 RJM REL RELEASE SYSTEM FILES
LJM DPP
ABT4 LDN MS2W-MS1W
STD T1
LDC DSCP*CPAS+MS1W
CWM *,T1
ABTA EQU *-1
UJN ABT4 HANG PP
CFE SPACE 4,10
** CFE - CLEAR LOCAL FNT ENTRY.
*
* ENTRY (A) = RELATIVE ADDRESS OF FST IN NFL.
*
* EXIT (A) = 0.
*
* USES CM - CM+4.
*
* MACROS MONITOR.
CFE SUBR ENTRY/EXIT
ZJN CFEX IF NO FNT ENTRY
ADN FSTL SET RELATIVE FNT ADDRESS
STD CM+4
LDN 0
STD CM+2
STD CM+3
LDN DLFS DELETE LOCAL FNT ENTRY
STD CM+1
MONITOR PLFM
* LDN 0
UJN CFEX RETURN
CLF SPACE 4,15
** CLF - CREATE LOCAL FILE.
*
* ENTRY (A) = ADDRESS OF FILE NAME.
*
* EXIT (A) = NFL OFFSET OF FST ENTRY.
* (FA) = NFL OFFSET OF FNT ENTRY.
* (FS) = EST ORDINAL OF FIRST SYSTEM DEVICE.
*
* USES FN - FN+4.
*
* CALLS PSE, *0BF*.
*
* MACROS EXECUTE.
CLF2 NJN CLF1 IF WAITING FOR NFL INCREASE
LDM TSYD SET EST ORDINAL
STD FS
LDD FA NFL OFFSET TO FST INFORMATION
SBN FSTL
CLF SUBR ENTRY/EXIT
STM CLFA
CLF1 RJM PSE PAUSE FOR STORAGE MOVE
LDD MA
CWM *,ON
CLFA EQU *-1
SBN 1 MOVE FILE NAME TO DIRECT CELLS
CRD FN
LDN NEEQ SELECT NO MASS STORAGE ASSIGNMENT
STD FS
EXECUTE 0BF,OVL
UJN CLF2 FILE NOT PREVIOUSLY DEFINED
CLTX EQU * HANG IF FILE PRESENT
CLT SPACE 4
** CLT - COPY LIBRARY TABLES.
*
* ENTRY (IR+3 - IR+4) = FWA LIBRARY TABLES.
* (CN - CN+1) = FWA RPL.
* (T6 - T7) = LENGTH.
*
* USES T1 - T3.
*
* CALLS SPA.
CLT SUBR ENTRY/EXIT
RJM SPA SET READ ADDRESS
STM CLTA+1
SHN -14
LMC ADCI
STM CLTA
LDD CN+1 SET STORE ADDRESS
STM CLTB+1
LDD CN
LMC ADCI
STM CLTB
LDD HN SET FULL BLOCK WORD COUNT
STD T1
LDN 0 CLEAR BLOCK COUNTER
STD T2
LDD T6 SET BLOCK COUNT
SHN 14
LMD T7
SHN -6
STD T3
ZJN CLT2 IF NO FULL BLOCKS
CLT1 LDD T2 READ BLOCK
SHN 6
CLTA ADC * READ BLOCK
CRM BFMS,T1
LDD T2 STORE BLOCK
SHN 6
CLTB ADC *
CWM BFMS,T1
AOD T2 ADVANCE BLOCK
SBD T3
MJN CLT1 LOOP FOR ALL BLOCKS
NJN CLT3 IF SHORT BLOCK PROCESSED
CLT2 LDD T7 SET SHORT COUNT
LPN 77
STD T1
NJN CLT1 IF NOT EMPTY
* CLEAR REMAINDER OF 100B BLOCK OF CM.
CLT3 LDD CN FWA OF RPL
ADD T6 ADD LENGTH
SHN 14
LMD CN+1
ADD T7
SBN 1
STM CLTC+1 SET LWA+1 OF LIBRARY
SHN -14
LMC ADCI
STM CLTC
LDM CLTC+1
ADN 1
LPN 77
ZJN CLT5 IF NO REMAINDER TO CLEAR
LDK ZERL READ ZERO WORD
CRM BFMS,ON
LDN 0 INITIALIZE COUNTER
STD T1
CLT4 AOD T1
CLTC ADC ** LWA+1 OF LIBRARY
CWM BFMS,ON
LPN 77
NJN CLT4 IF 100B BOUNDARY NOT REACHED
CLT5 LJM CLTX RETURN
ERT SPACE 4,10
** ERT - ENTER RESIDENCY TABLE.
*
* ENTRY (T3 - T7) - TABLE ENTRY.
* (T1) = CURRENT NUMBER OF TABLE ENTRIES.
*
* EXIT (T1) INCREMENTED BY ONE.
ERT SUBR ENTRY/EXIT
LDD T1 COMPUTE TABLE ADDRESS
SHN 2
ADD T1
ADM ERDC
STM ERTA
LDD MA WRITE ENTRY
CWD T3
CRM *,ON
ERTA EQU *-1
AOD T1
UJN ERTX EXIT
PSE SPACE 4
** PSE - PAUSE.
*
* USES CM - CM+4.
PSE SUBR ENTRY/EXIT
PAUSE
LDD CM+1
ZJN PSE1 IF NO ERROR FLAG
LDD DS
NJN * IF DEADSTART LOAD
LJM ABT3
PSE1 LDD CM+2
LPN 1
ZJN PSEX IF NO ROLLOUT
LDC =C* INCORRECT ROLLOUT REQUEST.*
LJM ABT1
REL SPACE 4
** REL - RELEASE PP.
*
* ENTRY (A) = EXIT ADDRESS FOR *SLL* MAIN LOOP.
REL7 LDN FNTP FETCH SYSTEM FNT POINTER
CRD T6
* RELEASE SYSTEM FILE FROM JOB.
LDD T6 READ SYSTEM FILE FNT
SHN 14
LMD T7
ERRNZ SYFO SYSTEM FILE ORDINAL .NE. 0
CRD FN
ADN FSTG
CRD CN
LDD FS+1 REWIND FILE
STD FS+2
STD CN+1
LDN ZERL
CRD CM
SOD FN+4 CLEAR SYSTEM FILE INTERLOCK
LDD FS
STD CN
LDD T6 STORE SYSTEM FILE FNT
SHN 14
LMD T7
ERRNZ SYFO SYSTEM FILE ORDINAL .NE. 0
CWD FN
ADN FSTG
CWD CN
LDN FSMS
STD FS+3
LDN 5 SET OPERATION COMPLETE
STD FS+4
NFA SF,R STORE LOCAL FILE STATUS
CWD FS
LDD AL CLEAR *ALTSYS* FNT ENTRY
RJM CFE
LDD PL CLEAR *PPULIB* FNT ENTRY
RJM CFE
REL SUBR ENTRY/EXIT
STM SLLB
LDD SF
ZJN RELX IF SYSTEM FILE NOT RESERVED
LCN 0
STD EI
NFA SF,R READ FST INFORMATION
CRD FS
UJN REL2 CHECK FIRST SYSTEM DEVICE
* RELEASE UNUSED MASS STORAGE SPACE.
REL1 LDM TETC,EI
ZJN REL2 IF NO EMPTY CHAIN
STD CM+2
MONITOR DTKM
* LDN 0 SET EMPTY CHAIN RELEASED
STM TETC,EI
REL2 AOD EI ADVANCE INDEX
LDM TSYD,EI SET NEXT EQUIPMENT
STD CM+1
SHN 6
PJN REL1 IF MORE SYSTEM DEVICES
LDC 501
STD T1
REL3 LDN 0 CLEAR SYSTEM SECTOR BUFFER
STM BFMS,T1
SOD T1
NJN REL3 LOOP TO START OF BUFFER
STD EI
REL4 LDM TSYD,EI SET SYSTEM EQUIPMENT
STD T5
SETMS IO,(NS,RW)
RELA LDN 1
* LDN 0 (NO ERROR CONDITION)
ZJN REL5 IF NO ERROR CONDITION
RJM RSF RESTORE SYSTEM FILE
* WRITE SYSTEM SECTORS.
REL5 LDD FS+1 SET FIRST TRACK
STD T6
LDD SF
ADN FSTL
STD FA
LDC * SET PPU LIBRARY TRACK
RELB EQU *-1
STM PLSS
RJM WSS WRITE SYSTEM SECTOR
LDM PLSS SET PPU LIBRARY FILE TRACK
STD T6
LDD MA SET FILE NAME
CWM NPPU,ON
SBN 1
CRM FNSS,ON
LDN 0 CLEAR FST ADDRESS
STD FA
STM FASS
RJM WSS WRITE SYSTEM SECTOR
ENDMS
AOD EI ADVANCE EQUIPMENT INDEX
LDM TSYD,EI
SHN 6
MJN REL6 IF END OF SYSTEM EQUIPMENTS
LJM REL4 LOOP
REL6 LJM REL7 RELEASE SYSTEM FILE FROM JOB
RMT SPACE 4
** RMT - RESERVE MATCHING TRACK.
*
* ENTRY (A) = 0, TO ABORT IF TRACK UNAVAILABLE.
* = 1, TO RETURN IF TRACK UNAVAILABLE.
* (T6) = CURRENT TRACK.
*
* EXIT (A) = TRACK ASSIGNED.
* .LT. 0, IF RETURN ON TRACK UNAVAILABLE.
*
* USES T1, T2, T9, CM - CM+4.
RMT12 LDM RMTB RETURN WITH TRACK
RMT SUBR ENTRY/EXIT
STD RF
LCN 0 INITIALIZE EQUIPMENT INDEX
STD T1
RMT1 AOD T1 ADVANCE INDEX
RMT2 LDM TSYD,T1 SET EST ORDINAL
RMTA EQU *-1
* LDM TSYD+ASDE ALTERNATE DEVICE PROCESSING
STD CM+1
SHN 6
MJN RMT12 IF END OF TABLE
LDN 0 REQUEST ONE TRACK
STD CM+3
STD CM+4
LDD T6 RESERVE TRACK
STD CM+2
MONITOR RTCM
LDD CM+4 SET TRACK ASSIGNED
STM RMTB,T1
NJN RMT4 IF TRACK ASSIGNED
LDD RF
ZJN RMT3 IF RETURN NOT SELECTED
LCN 0 FORCE TRACK MISMATCH
STD CM+4
AOD RF SET TO EXIT ON TRACK LIMIT
LDD T1
NJN RMT5 IF NOT FIRST EQUIPMENT
LCN 1 EXIT WITH TRACK LIMIT
LJM RMTX RETURN
RMT3 ENDMS
LDC =C* SYSTEM TOO BIG FOR MASS STORAGE.*
LJM ABT1
RMT4 LDD T1
RMT5 ZJP RMT1 IF FIRST EQUIPMENT
STD T2
LDM RMTB-1,T1 COMPARE WITH PREVIOUS TRACK
SBD CM+4
ZJN RMT5 IF SAME TRACK
PJN RMT6 IF NEW TRACK LOWER
LDN 0 START WITH FIRST EQUIPMENT
STD T2
RMT6 LDM TSYD,T2 DROP TRACKS FOLLOWING LAST MATCH
STD CM+1
STD T9
LDM RMTB,T2 SET FIRST TRACK IN CHAIN
STD CM+2
LDD T6
ZJN RMT7 IF NO INITIAL TRACK
LPC 3777
STD CM+2
LDN 0 SET LAST SECTOR WRITTEN
RMT7 STD CM+3
MONITOR DTKM
STD CM+4
LDD T9 SET EST ORDINAL
STD CM+1
LDM TETCA,T2 RESERVE SAME TRACK LINKED TO EMPTY CHAIN
STD CM+2
MONITOR RTCM
LDD CM+4 SET LAST TRACK IN EMPTY CHAIN
STM TETCA,T2
LDM TETC,T2
NJN RMT8 IF EMPTY CHAIN STARTED
LDD CM+4 START EMPTY CHAIN
STM TETC,T2
RMT8 LDD T2
LMD T1
ZJN RMT11 IF LOWER TRACK PROCESSING
AOD T2 ADVANCE TABLE
LMD T1
ZJN RMT9 IF ALL LOWER EQUIPMENT PROCESSED
LJM RMT6
RMT9 LDM TSYD,T2 DROP TRACK FOLLOWING LAST MATCH
STD CM+1
LDM RMTB,T2
STD CM+2
LDD T6
ZJN RMT10 IF NO INITIAL TRACK
LPC 3777
STD CM+2
LDN 0 SET LAST SECTOR WRITTEN
RMT10 STD CM+3
MONITOR DTKM
STD T1 CLEAR EQUIPMENT INDEX
LDD RF
SHN 21-1
PJN RMT11 IF NOT TRACK LIMIT PROCESSING
LJM RMTX EXIT WITH TRACK LIMIT ERROR
RMT11 LJM RMT2 RESTART ASSIGNMENT
RMTB BSS MXSY SYSTEM DEVICE TRACKS ASSIGNED
RSF SPACE 4
** RSF - RESTORE SYSTEM FILE.
*
* ENTRY (T5) = EQUIPMENT.
* (RSFA) = SYSTEM / PPULIB EOI TRACK.
* (RSFB) = SYSTEM / PPULIB EOI SECTOR.
*
* CALLS WEI.
*
* MACROS ENDMS, MONITOR.
RSF2 LDC 0 RESTORE PPU LIBRARY TRACK
RSFC EQU *-1
STM RELB
RSF SUBR ENTRY/EXIT
LCN 0 CLEAR FILE INDEX
STD CN
RSF1 AOD CN ADVANCE FILE INDEX
LMN 2
ZJN RSF2 IF BOTH FILES PROCESSED
LDM RSFA,CN SET *EOI* TRACK
ZJN RSF1 IF NO TRACK ASSIGNED
STD T6
LDM RSFB,CN SET EOI SECTOR
STD T7
LDM SF,CN SET FNT ADDRESS
ADN FSTL
STD FA
RJM WEI WRITE EOI
ENDMS
LDD T5 SET EQUIPMENT
STD CM+1
LDD T6 SET TRACK
LPC 3777
STD CM+2
LDD T7 SET SECTOR
STD CM+3
MONITOR DTKM DROP TRACKS
LJM RSF1 LOOP
RSFA CON 0,0
RSFB CON 0,0
SBP SPACE 4
** SBP - SET BUFFER PARAMETERS.
*
* ENTRY (IR+3 - IR+4) = FET ADDRESS.
*
* EXIT BUFFER PARAMETERS SET IN *WTB*.
*
* USES CM - CM+4.
*
* CALLS SPA.
SBP SUBR ENTRY/EXIT
RJM SPA READ FIRST
ADN 1
CRD CM
LDD RA SET (RA) REFERENCES
STM AB1
SHN 6
STM AB2+1
STM AB3+1
STM AB5+1
SHN -14
LMC ADCI
STM AB2
STM AB3
STM AB5
LDD CM+3 FIRST + RA
LPN 37
STD CM+3
SHN 6
ADD RA
SHN 6
ADD CM+4
STM AB4+1
SHN -14
LMC LDCI
STM AB4
LDD CM+4 FIRST
STM BF2+1
LDD CM+3
LMC ADCI
STM BF2
RJM SPA READ LIMIT
ADN 4
CRD CM
LDD CM+3 -LIMIT
LPN 37
LMC ADCI+77
STM BF1
LCN 0
LMD CM+4
STM BF1+1
LJM SBPX RETURN
SCD SPACE 4
** SCD - SCAN DIRECTORY.
*
* ENTRY (T1 - T2) = FWA.
*
* EXIT (T1 - T2) ADVANCED.
* (A) = INDEX OF (T1 - T2).
*
* USES CM - CM+4.
SCD2 LDD T1 RETURN INDEX
SBD PA
SHN 14
ADD T1+1
SBD PA+1
SCD SUBR ENTRY/EXIT
SCD1 LDD T1 READ ENTRY
SHN 6
ADD RA
SHN 6
ADD T2
CRD CM
AOD T2 ADVANCE ADDRESS
SHN -14
RAD T1
LDD CM CHECK ENTRY
ADD CM+1
ADD CM+2
ADD CM+3
ADD CM+4
NJN SCD1 LOOP TO BLANK ENTRY
LDD T1 CHECK ADDRESS
SHN 14
LMD T2
SBN 1
SHN -6
SBD FL
MJN SCD2 IF WITHIN FL
LDC =C* LIBRARY TABLE ERROR.*
LJM ABT1
SCL SPACE 4
** SCL - SCAN LIBRARY.
*
* ENTRY (T1 - T2) = FWA.
*
* EXIT (T1 - T2) ADVANCED.
* (A) = INDEX OF (T1 - T2).
*
* USES CM - CM+4.
SCL SUBR ENTRY/EXIT
SCL1 LDD T1 READ ENTRY
SHN 6
ADD RA
SHN 6
ADD T2
CRD CM
LDD CM+4 ADVANCE ADDRESS
RAD T2
SHN -14
ADD CM+3
LPN 37
RAD T1
LDD CM CHECK ENTRY
ADD CM+1
ADD CM+2
ADD CM+3
ADD CM+4
NJN SCL1 LOOP TO BLANK ENTRY
AOD T2 INCLUDE BLANK ENTRY
SHN -14
RAD T1
SHN 14 CHECK ADDRESS
LMD T2
SHN -6
SBD FL
PJN SCL2 IF OUT OF FL
LDD T1 RETURN INDEX
SBD PA
SHN 14
ADD T2
SBD PA+1
LJM SCLX
SCL2 LDC =C* LIBRARY TABLE ERROR.*
LJM ABT1
SPA SPACE 4,10
** SPA - SET PARAMETER ADDRESS.
*
* ENTRY (PA - PA+1) = RELATIVE ADDRESS OF PARAMETER WORD.
*
* EXIT (A) = ABSOLUTE PARAMETER ADDRESS.
SPA SUBR ENTRY/EXIT
LDD PA
SHN 6
ADD RA
SHN 6
ADD PA+1
UJN SPAX RETURN
STA SPACE 4,15
** STA - SET TRT ADDRESS.
*
* ENTRY (A) = EST ORDINAL.
*
* EXIT (T5) = EST ORDINAL.
* (SNTA) = *ADC TRTS*.
* DRIVER LOADED.
*
* USES CM - CM+4.
*
* MACROS SETMS.
STA SUBR ENTRY/EXIT
STD T5
SETMS IO,(NS),WDSB
LDD CM+4
SHN 3 GET TRT POINTER
ADN TRLL
CRD CM
LDD CM+3
LPN 77
SHN 14
LMD CM+4
SBD TH 4S-2
STM SNTA+1
SHN -14
LMC ADCI
STM SNTA
UJN STAX RETURN
SNT SPACE 4
** SNT - SET NEXT TRACK.
*
* ENTRY (T6) = CURRENT TRACK.
*
* EXIT (A) = NEXT TRACK.
SNT SUBR ENTRY/EXIT
LDD T6 READ TRT WORD
SHN -2
SNTA ADC TRTS
CRD CM
LDD T6 SET BYTE INDEX
LPN 3
STD T1
LDM CM,T1 RETURN WITH TRACK
UJN SNTX
WEF SPACE 4
** WEF - WRITE END OF FILE.
*
* ENTRY (T6) = TRACK.
* (T7) = SECTOR.
*
* EXIT (T6) AND (T7) UPDATED.
*
* USES CM - CM+4.
*
* CALLS RMT, SNT, WEI, WMS.
*
* MACROS ENDMS, MONITOR.
WEF SUBR ENTRY/EXIT
LDN 0 CLEAR FIRST CONTROL BYTE
STM BFMS
LDD T7 SET NEXT SECTOR
ADN 1
STM BFMS+1
LMI SL
NJN WEF1 IF NOT END OF TRACK
RJM SNT SET NEXT TRACK
STM BFMS+1
SHN 6
MJN WEF1 IF TRACK AVAILABLE
ENDMS
* LDN 0
RJM RMT RESERVE TRACK
STM BFMS+1
WEF1 LDC BFMS+WCSF WRITE CONSECUTIVE SECTORS
RJM WMS
AOD T7 INCREMENT SECTOR
LMI SL
NJN WEF2 IF NOT NEW TRACK
STD T7 RESET TRACK AND SECTOR
LDM BFMS+1
STD T6
WEF2 RJM WEI WRITE EOI SECTOR
ENDMS
LDD T5 SET EQUIPMENT
STD CM+1
LDD T6 SET TRACK
LPC 3777
STD CM+2
LDD T7 SET SECTOR
STD CM+3
MONITOR DTKM DROP TRACKS
LJM WEFX RETURN
WTB SPACE 4
** WTB - WRITE BUFFER.
*
* ENTRY (CN - CN+4) = OUT POINTER WORD.
* (T6) = TRACK.
* (T7) = SECTOR.
*
* EXIT (CN - CN+4) UPDATED.
* (T6) AND (T7) UPDATED.
*
* ERROR TO *ABT1* IF INVALID SECTOR WORD COUNT.
*
* USES SE, T1, T2, T8, CM - CM+4.
*
* CALLS RMT, SBP, SNT, WMS.
*
* MACROS ENDMS.
WTB SUBR ENTRY/EXIT
LDD T6
NJN WTB1 IF TRACK ASSIGNED
LDD FS+1 SET FIRST TRACK
STD T6
AOD SE
LJM WTB10 WRITE DUMMY SYSTEM SECTOR
WTB1 LDD RA CHECK RA
LMC * (RA)
AB1 EQU *-1
ZJN WTB2 IF NO CHANGE
RJM SBP SET BUFFER PARAMETERS
WTB2 LDD CN+3 READ CONTROL WORD
SHN 14
ADD CN+4
AB2 ADC * (RA)
CRD CM
AOD CM+4 SET WORD COUNT
LDC 101 CHECK WORD COUNT
SBD CM+4
PJN WTB3 IF LEGAL WORD COUNT
LDD RA
SHN 6
ADN 2
CWD CM
ADN 1
CWD CN
ENDMS
LDC =C* BUFFER CONTROL WORD ERROR.*
LJM ABT1
WTB3 LDD CN+3 CHECK OUT + WORD COUNT
SHN 14
ADD CN+4
ADD CM+4
BF1 ADC -* (-LIMIT)
MJN WTB6 IF LIMIT NOT REACHED
* PROCESS WRAP AROUND SECTOR.
STD T2 SET SECOND PART WORD COUNT
LDD CM+4 SET FIRST PART WORD COUNT
SBD T2
STD T1
ZJN WTB4 IF NO FIRST PART
LDD CN+3 READ FIRST PART
SHN 14
ADD CN+4
AB3 ADC * (RA)
CRM BFMS-3,T1
WTB4 LDD T2 CHECK SECOND PART LENGTH
ZJN WTB5 IF NO SECOND PART
LDD T1 SET PP BUFFER ADDRESS
SHN 2
ADD T1
RAM WTBA
AB4 LDC * READ SECOND PART (FIRST+RA)
CRM BFMS-3,T2
WTBA EQU *-1 (RESET)
WTB5 LDD T2 SET OUT AFTER SECOND PART
BF2 ADC * (FIRST)
STD CN+4
SHN -14
STD CN+3
UJN WTB7
* PROCESS NORMAL SECTOR.
WTB6 LDD CN+3 READ BUFFER
SHN 14
ADD CN+4
AB5 ADC * (RA)
CRM BFMS-3,CM+4
* ADVANCE OUT POINTER.
LDD CM+4
RAD CN+4
SHN -14
RAD CN+3
* WRITE SECTOR.
WTB7 LDC BFMS-3 RESET READ ADDRESS
STM WTBA
LDD T7 SET NEXT SECTOR
ADN 1
STM BFMS
LMI SL
NJN WTB10 IF NOT END OF TRACK
RJM SNT SET NEXT TRACK
STM BFMS
SHN 6
MJN WTB10 IF TRACK ASSIGNED
LDD T6
STM WTBC
ENDMS
* LDN 0
RJM RMT RESERVE TRACK
STM BFMS
STD T6 GET ADDITIONAL TRACKS
LDN 7
STD T8
WTB8 LDN 1 RESERVE TRACK CHAIN
RJM RMT
MJN WTB9 IF TRACK LIMIT
STD T6
SOD T8
NJN WTB8
WTB9 LDC * RESTORE CURRENT TRACK
WTBC EQU *-1
STD T6
WTB10 LDC WCSF+BFMS WRITE SECTOR
RJM WMS
AOD T7
LMI SL
NJN WTB11 IF NOT NEW TRACK
STD T7 RESET TRACK AND SECTOR
LDM BFMS
STD T6
WTB11 SOD SE
ZJN WTB12 IF ALL SECTORS WRITTEN
LJM WTB1 LOOP
WTB12 LJM WTBX RETURN
WSL SPACE 4
** WSL - WRITE SYSTEM LIBRARY.
*
* ENTRY (A) = 0 IF WRITING SYSTEM FILE.
* = 1 IF WRITING PP LIBRARY FILE.
* = 2 IF WRITING ALTERNATE LIBRARY FILE.
* (AL) = 0 IF NOT WRITING ALTERNATE LIBARY FILE.
*
* EXIT (T6) = LAST TRACK.
* (T7) = LAST SECTOR.
* (FS - FS+4) = FST ENTRY.
*
* USES EI, FA, SE, T5, SN - SN+1, CM - CM+4, CN - CN+4.
*
* CALLS PSE, RMT, SBP, SEI, SPA, WEF, WTB.
*
* MACROS ENDMS, SETMS.
WSL11 LDN 5 SET OPERATION COMPLETE
STD FS+4
NFA FA,R STORE FST INFORMATION
ADN FSTL
CWD FS
WSL SUBR ENTRY/EXIT
STD EI SET FILE INDEX
LDM SF,EI READ FST ENTRY
ADN FSTL
STD FA
NFA FA,R
ADN FSTL
CRD FS
* INITIALIZE FILE STATUS.
LDD FS+1 CHECK TRACK
STD T6
NJN WSL1 IF TRACK ASSIGNED
RJM RMT
STD FS+1
UJN WSL2
WSL1 LDD AL
NJN WSL2 IF WRITING ALTERNATE LIBRARY
LDD FS
STD T5
RJM SEI SEARCH FOR END OF INFORMATION
LDD T6 SET NEXT TRACK
STD FS+2
STM RSFA,EI SET EOI
LDD T7 SET NEXT SECTOR
STD FS+3
STM RSFB,EI
* INITIALIZE FILE WRITE.
WSL2 RJM SBP SET BUFFER PARAMETERS
LDC WSL4 CLEAR EOF FLAG
STM WSLA
LDN 0 CLEAR SECTOR COUNT
STD SN
STD SN+1
* CHECK BUFFER STATUS.
WSL3 LJM WSL4 (EOF FLAG)
WSLA EQU *-1
WSL4 LDD AL
ZJN WSL5 IF NOT WRITING ALTERNATE LIBRARY
LDN ASDE
WSL5 STD EI INITIALIZE EQUIPMENT INDEX
RJM PSE
RJM SPA READ SECTOR COUNT
ADN 6
CRD CM
LDD CM+3 CHECK SECTOR COUNT
SBD SN
SHN 14
LMD CM+4
SBD SN+1
STM WSLB
SBD HN
PJN WSL6 IF ENOUGH DATA IN BUFFER
LDD CM
ZJN WSL4 IF EOR NOT SET
LDC WSL11 SET EOF
STM WSLA
WSL6 LDD CM+3 SET NEW SECTOR COUNT
STD SN
LDD CM+4
STD SN+1
* WRITE BUFFER.
WSL7 RJM SPA READ OUT
ADN 3
CRD CN
LDM TSYD,EI SET EQUIPMENT
STD T5
LDD FS+2 SET CURRENT TRACK
STD T6
LDD FS+3 SET CURRENT SECTOR
STD T7
SETMS POSITION
LDC * SET SECTOR COUNT
WSLB EQU *-1
STD SE
ZJN WSL8 IF NO SECTORS IN BUFFER
RJM WTB WRITE BUFFFER
WSL8 LDM WSLA CHECK EOF STATUS
LMC WSL4
ZJN WSL9 IF NOT SET
RJM WEF WRITE END OF FILE
WSL9 ENDMS
AOD EI ADVANCE EQUIPMENT INDEX
LDM TSYD,EI SET NEXT EQUIPMENT
STD T5
SHN 6
MJN WSL10 IF END OF EQUIPMENT
LJM WSL7 LOOP
WSL10 LDD T6 UPDATE CURRENT TRACK
STD FS+2
LDD T7 UPDATE CURRENT SECTOR
STD FS+3
RJM SPA STORE OUT
ADN 3
CWD CN
LJM WSL3 LOOP
SPACE 4
* COMMON DECKS.
*CALL COMPICT
*CALL COMPLDB
*CALL COMPRSS
QUAL WMS
QUAL$ EQU 1
WDS EQU WMS
*CALL COMPWEI
*CALL COMPWSS
QUAL *
WEI EQU /WMS/WEI
WSS EQU /WMS/WSS
*CALL COMPSEI
SPACE 4,10
USE LITERALS DUMP LITERALS BLOCK
WDSB BSS 0 WRITE ERROR PROCESSING BUFFER
ERRNG BFMS-WDSB-502 BUFFER OVERLAP
TITLE INITIALIZATION ROUTINES.
TRES SPACE 4
** TRES - TABLE OF RECORD RESIDENCES.
* ENTRY = 5 WORDS.
*
*T 42/ NAME,6/ RC,12/ TY
* NAME RECORD NAME
* RC RESIDENCE CODE
* = 40 = RESIDENT IN CM.
* = 77 = RESIDENT IN *SYSTEM* FILE ONLY (NOT IN *PLD*).
* TY RECORD TYPE
TRES BSS 0
VFD 42/0L1BP,6/40,12/PPRT
VFD 42/0L1RU,6/40,12/PPRT
VFD 42/0L3RU,6/40,12/PPRT
VFD 42/0L3RV,6/40,12/PPRT
VFD 42/0L3RW,6/40,12/PPRT
VFD 42/0L3RX,6/40,12/PPRT
VFD 42/0L1FA,6/40,12/PPRT
TRESB EQU *
TRESBL EQU *-TRES
VFD 42/0L"PBK0",6/40,12/PPRT
VFD 42/0L"PBK7",6/40,12/PPRT
VFD 42/0L1DD,6/40,12/PPRT
VFD 42/0L5ME,6/40,12/PPRT
VFD 42/0L7SE,6/40,12/PPRT
VFD 42/0L7EK,6/40,12/PPRT
VFD 42/0L7EL,6/40,12/PPRT
VFD 42/0L7EM,6/40,12/PPRT
VFD 42/0L7EN,6/40,12/PPRT
VFD 42/0L7EO,6/40,12/PPRT
VFD 42/0L7EP,6/40,12/PPRT
VFD 42/0L7EQ,6/40,12/PPRT
VFD 42/0L7ER,6/40,12/PPRT
VFD 42/0L7ES,6/40,12/PPRT
VFD 42/0LLSL,6/77,12/PPRT
VFD 42/0LBCL,6/77,12/PPRT
VFD 42/0L0AV,6/40,12/PPRT
VFD 42/0L0CT,6/40,12/PPRT
VFD 42/0L0DF,6/40,12/PPRT
VFD 42/0L0QM,6/40,12/PPRT
VFD 42/0L0SD,6/40,12/PPRT
VFD 42/0L1CP,6/40,12/PPRT
VFD 42/0L1RO,6/40,12/PPRT
VFD 42/0LSFP,6/40,12/PPRT
VFD 42/0L1MA,6/40,12/PPRT
TRESJ VFD 42/0L1MB,6/77,12/PPRT
TRESA VFD 42/0L1MC,6/77,12/PPRT
VFD 42/0L1MD,6/40,12/PPRT
VFD 42/0L1MP,6/40,12/PPRT
TRESC VFD 42/0L1HP,6/77,12/PPRT
TRESD VFD 42/0L1XM,6/77,12/PPRT
VFD 42/0L2XM,6/77,12/PPRT
VFD 42/0L2XN,6/77,12/PPRT
VFD 42/0L1XY,6/77,12/PPRT
TRESK VFD 42/0LMA464,6/77,12/PURT
TRESP VFD 42/0LMB468,6/77,12/PURT
TRESF VFD 42/0L6DC,6/77,12/PPRT
VFD 42/0L6DD,6/77,12/PPRT
TRESG VFD 42/0L2EA,6/77,12/PPRT
VFD 42/0L2EB,6/77,12/PPRT
VFD 42/0L7EA,6/77,12/PPRT
TRESH VFD 42/0L1HY,6/77,12/PLRT
TRESI VFD 42/0L1XD,6/77,12/PLRT
TRESM VFD 42/0L1DA,6/77,12/PLRT
VFD 42/0L3DZ,6/77,12/PLRT
TRESN VFD 42/0LWLD,6/77,12/PLRT
VFD 42/0L5DA,6/77,12/PLRT
VFD 42/0L5SI,6/77,12/PLRT
* THE FOLLOWING ENTRY MUST BE THE LAST ENTRY IN THE TABLE
* SO THAT THE TABLE CAN BE EXTENDED BY PRESET IF *2SG* IS
* TO BE INITIALIZED AS CM RESIDENT.
VFD 42/0L2SG,6/40,12/PPRT
TRESE CON 0
.1 SET TRESE-TRES
TRESL EQU .1/5
CSF SPACE 4,15
** CSF - CLEAR SYSTEM FILE.
*
* ENTRY (T5) = SYSTEM EQUIPMENT (LEVEL 2 ONLY).
* (T6) = FIRST TRACK OF SYSTEM FILE (LEVEL 2 ONLY).
* (FS - FS+4) = SYSTEM FILE FST ENTRY.
*
* USES SE, T1, T6, T7, CM - CM+4.
*
* CALLS RSS.
*
* MACROS ENDMS, MONITOR, NFA.
CSF SUBR ENTRY/EXIT
LDD T6
ZJN CSFX IF LEVEL 0 DEADSTART
LDC NSYS READ SYSTEM SECTOR
RJM RSS
NJN CSF1 IF ERROR
LDM PLSS SET PP LIBRARY FILE TRACK
STM CSFA
CSF1 ENDMS
* LDN 0 CLEAR EQUIPMENT INDEX
STD T1
CSF2 LDM TSYD,T1 SET EQUIPMENT
STD CM+1
LDD FS+1 SET TRACK
STD CM+2
MONITOR DTKM DROP TRACKS
LDC 0
CSFA EQU *-1
ZJN CSF3 IF PP LIBRARY FILE TRACK NOT FOUND
STD CM+2
LDM TSYD,T1 DROP TRACKS
STD CM+1
MONITOR DTKM
CSF3 AOD T1 ADVANCE EQUIPMENT INDEX
LDM TSYD,T1
SHN 6
PJN CSF2 LOOP FOR ALL EQUIPMENT
LDN FNTP
CRD T6
LDN ZERL CLEAR SYSTEM FST ENTRY
CRD FS+1
ERRNZ FS+5-SE READ DESTROYS LOCATION IN USE
LDD T6
SHN 14
LMD T7
ERRNZ SYFO SYSTEM FILE ORDINAL .NE. 0
ADN FSTG
CWD FS
NFA SF,R
CWD FS
LJM CSFX RETURN
DAP SPACE 4,10
** DAP - DISABLE ALTERNATE RESIDENT PP PROGRAMS.
*
* USES T1, T2, T3, T4, T5, CM - CM+4, CN - CN+4.
DAP SUBR ENTRY/EXIT
LDC PLDP FETCH PLD POINTER
CRD T1
LCN 0 INITIALIZE PLD INDEX
STD T3
DAP1 AOD T3 ADVANCE PLD ENTRY
LDD T1
SHN 14
LMD T2
ADD T3
CRD CM READ PLD ENTRY
LDD CM+1
ZJN DAPX IF END OF PLD
LPN 77
STD T5 SAVE EQUIPMENT
LPN 40
NJN DAP1 IF CM RESIDENT
SFA EST,T5 CHECK EST FOR SYSTEM DEVICE
ADK EQDE
CRD CN
LDD CN
SHN 21-12
MJN DAP1 IF SYSTEM DEVICE
LDN 0 INITIALIZE REPLACEMENT ENTRY INDEX
STD T4
DAP2 AOD T4 ADVANCE REPLACEMENT INDEX
LDD T1
SHN 14
LMD T2
SBD T4
CRD CN READ REPLACEMENT ENTRY
LDD CN+1
LMD CM+1
SCN 37
NJN DAP2 IF NOT CORRECT REPLACEMENT ENTRY
LDD CN
LMD CM
NJN DAP2 IF NOT CORRECT REPLACEMENT ENTRY
LDD T1 REPLACE PLD ENTRY
SHN 14
LMD T2
ADD T3
CWD CN
LJM DAP1 CONTINUE CHECKING PLD
SPACE 4,10
LIBN VFD 42/0LLIBD00,18/0
NSYS VFD 42/0LSYSTEM,6/1,6/LIFT,6/0
PRS SPACE 4,10
** PRS - PRESET PROGRAM.
PRS9 LDD DS
ZJN PRS10 IF NOT DEADSTART
RJM CSF CLEAR SYSTEM FILE
LJM PRS15
* READ SYSTEM SECTOR TO LOCATE PP LIBRARY FILE.
PRS10 LDC NSYS READ SYSTEM SECTOR
RJM RSS
ZJN PRS11 IF NO ERROR
LDC =C* SYSTEM FILE DESTROYED.*
LJM ABT1
PRS11 ENDMS
LDM PLSS SET PP LIBRARY FILE TRACK
STD FS+1
STD FS+2
STM RSFC
LDN FSMS
STD FS+3
NFA PL,R STORE PP LIBRARY FST
CWD FS
LDC EPDP GET ENTRY POINT DIRECTORY ADDRESS
CRD CM
LDN 0 CLEAR PROGRAM COUNT
STD T2
UJN PRS14 ENTER LOOP
* DISABLE ALTERNATE CP LIBRARY.
PRS12 LDD CM+2 READ PST ENTRY
RAD CN+3
LPN 77
SHN 14
LMD CN+4
ADD CM+3
CRD AB
SBN 1 GET SYSTEM TRACK AND SECTOR
CRD CW
LDD AB+1 CHECK IF *ASR* RESIDENT PROGRAM
LPC 4000
ZJN PRS13 IF NOT *ASR* RESIDENT
LMD AB+1 CLEAR *ASR* FLAG
STD CW+1
LDD AB SET FL CONTROL
STD CW
LDD CN+3 UPDATE PST CONTROL WORD
LPN 77
SHN 14
LMD CN+4
ADD CM+3
CWD CW
AOD T2 ADVANCE PROGRAM COUNT
PRS13 AOD CM+1 ADVANCE EPD ADDRESS
SHN -14
PRS14 RAD CM
SHN 14
LMD CM+1
CRD CN READ ENTRY NAME
LDD CN
NJN PRS12 IF NOT END OF EPD
LDD T2
ZJN PRS15 IF NO PREVIOUS ALTERNATE LIBRARY
RJM DAP DISABLE ALTERNATE RESIDENT PP PROGRAMS
AOM WADB
LDC RTCL READ CLOCK
CRD CW
* SET LIBDECK RECORD NAME.
PRS15 LDN DSSL
CRD CM READ LIBDECK NUMBER
LDD CM+4
SHN -6
STD T0
SHN 3
LMD T0
SCN 70
RAM LIBN+2
* TERMINATE INITIALIZATION PROCESS.
PRS16 LDN ZERL SET RPL ADDRESS FOR SYSEDIT
CRD CM-3
CRD CN
ADN RPLP-ZERL
CRD CM
AOD CN+4
STD CN+3
LDD IR+3 RETURN PARAMETERS TO SYSEDIT
SHN 6
ADD RA
SHN 6
ADD IR+4
CWD CN
ADN 1
CWM LIBN,ON
CWD CM-3
PRS SUBR ENTRY/EXIT
ERRPL *-BFMS SYSTEM SECTOR BUFFER OVERLAYS CODE
* CLEAR SYSTEM AND PP LIBRARY FST ADDRESSES. NOTE THAT THE
* FOLLOWING CODE ALSO CLEARS FN - FN+1.
LDN ZERL CLEAR FST ADDRESSES
CRD SF
ERRNZ PL-SF-1 (ADJUST IF LOCATIONS CHANGE)
ERRNZ AL-SF-2 (ADJUST IF LOCATIONS CHANGE)
* LDN 0
* STD SF
* STD PL
* STD AL
ADK SLM-ZERL SET SECTOR LIMIT ADDRESS
STD SL
ADK MMFL-SLM
CRD CM
LDD CM+1
SHN 21-13
MJN PRS1 IF SHARED RMS PRESENT
LCN TRESBL/5
RAM ERDA
LDC TRESB
STM ERDC
PRS1 LDD DS
NJN PRS2 IF DEADSTART
RJM VSC VALIDATE *SLL* CALL
ZJN PRS3 IF VALID CALL
LJM ABT1 ISSUE MESSAGE AND ABORT
PRS2 RJM IDS INITIALIZE DEADSTART
PRS3 RJM SSD SET SYSTEM DEVICES
NFA LFCN
CRD CM GET LOCAL FILE COUNT
LDC MXLF-2-SRFE-3
SBD CM+4 CHECK LOCAL FILE LIMIT
PJN PRS4 IF SYSTEM FILES WILL NOT CAUSE FILE LIMIT
LDC PRSB * SLL - LOCAL FILE LIMIT.*
LJM ABT1 ABORT *SYSEDIT* JOB
* ENTER FNT ENTRIES FOR SYSTEM FILES.
PRS4 LDC NPPU CREATE PP LIBRARY FILE
RJM CLF
STD PL
LCN LOFT-SYFT CHANGE FILE TYPE TO *SYFT*
SHN 6
RAD FN+4
NFA FA,R STORE FNT ENTRY
CWD FN
ADN FSTL
CWD FS
LDN SSTL
CRD CM
ADK CPPL-SSTL
CRD CN GET NUMBER OF CONCURRENT PPS
LDD CN+3
LPN 77
ZJN PRS5 IF NO CONCURRENT PPS
LDN 40
STM TRESF+3 FORCE *6DC* CM RESIDENT
STM TRESF+3+5 FORCE *6DD* CM RESIDENT
STM TRESN+3+5*0 FORCE *WLD* AND OVERLAYS CM RESIDENT
STM TRESN+3+5*1
STM TRESN+3+5*2
AOM ERDA FORCE *2SG* CM RESIDENT
PRS5 LDC MMFL FETCH MMF STATUS WORD
CRD CM
LDD CM+1
SHN 21-12
PJN PRS6 IF NOT LOW SPEED PORT MMF
LDN 40 FORCE *MTE* OVERLAYS CM RESIDENT
STM TRESG+3+5*0
STM TRESG+3+5*1
STM TRESG+3+5*2
PRS6 LDC MABL CHECK FOR CY180
CRD CM
LDD CM+1
SHN 21-13
MJN PRS7 IF NOT CME MACHINE
SHN 21-6-21+13
PJN PRS7 IF 865/875
LDN 40 FORCE *1MB* CM RESIDENT
STM TRESJ+3
* ATTACH SYSTEM FILE TO JOB.
PRS7 LDC NSYS CREATE LOCAL COPY OF SYSTEM FILE
RJM CLF
STD SF
LDN FNTP READ FNT POINTER
CRD CM+3
LDD CM+3 READ SYSTEM FILE FST
SHN 14
LMD CM+4
ERRNZ SYFO SYSTEM FILE ORDINAL .NE. 0
ADN FSTG
CRD T5
LDD DS
NJN PRS8 IF DEADSTART
STD CM+1
MONITOR UTEM INTERLOCK SYSTEM FILE
LDD CM+1
NJP REC IF FILE NOT INTERLOCKED
PRS8 LDD T6 REWIND FILE FOR LOCAL FST
STD FS+1
STD FS+2
LDN 5 SET OPERATION COMPLETE
STD FS+4
* COMPLETE FILE INITIALIZATION.
LCN LOFT-LIFT CHANGE FILE TYPE TO *LIFT*
SHN 6
RAD FN+4
NFA SF,R STORE LOCAL FST INFORMATION
CWD FS
SBN FSTL STORE FNT ENTRY
CWD FN
LDM TSYD LOAD SYSTEM DEVICE DRIVER
RJM STA
LJM PRS9 CHECK DEADSTART
PRSB DATA C* SLL - LOCAL FILE LIMIT.*
REC SPACE 4,10
** REC - RECALL PP.
*
* EXIT TO *PPR* IF NO ERROR FLAG IS SET IN THE CPA.
* TO *ABT1* IF ERROR FLAG SET IN CPA.
*
* USES SF, CM - CM+4.
*
* CALLS CFE.
*
* MACROS DELAY, MONITOR, PAUSE.
REC LDC ** CHECK IF *NO ABORT* OPTION SET
RECA EQU *-1
SCN 77
NJN REC2 IF NO ABORT SET
REC1 LDN 0 CLEAR SYSTEM FILE ASSIGNMENT
STD SF
LDC RECB
LJM ABT1 ABORT JOB
* PROCESS *SLL* RECALL.
REC2 RAD IR+3
DELAY
PAUSE
LDD CM+1 CHECK ERROR FLAGS
NJN REC1 IF ERROR FLAGS ARE SET
LDD PL RELEASE PP LIBRARY FNT ENTRY
RJM CFE
LDD SF RELEASE SYSTEM FILE FNT ENTRY
RJM CFE
LDN ZERL DEFAULT TO TIMED RECALL
CRD CM
LDD MA
CWD IR
MONITOR RECM RECALL PP
LJM PPR ENTER PP RESIDENT
RECB DATA C* SYSTEM FILE RESERVED.*
SPACE 4,10
CON 2 NO RETURN W/O FILE CREATION AND RETURN ON
NFL INCREASE (*0BF* CALL)
OVL BSS 0 ZERO LEVEL OVERLAY LOAD ADDRESS
ERRNG 7777-OVL-ZBFL CHECK LENGTH OF *0BF*
CRD SPACE 4,15
** CRD - CHECK FOR RESIDENT DRIVER OR CONTROLWARE.
*
* ENTRY (CM - CM+4) = EST ENTRY.
*
* EXIT *1DA* AND *3DZ* CM RESIDENT IF *DAS* DRIVE.
* *1HP* CM RESIDENT IF 885-42 DRIVE.
* *1HY* CM RESIDENT IF 887 DRIVE.
* *1XD* CM RESIDENT IF XMD DRIVE.
* *1XM* AND *MA464* CM RESIDENT IF 895 DRIVE.
* *1XY* AND *MA464* CM RESIDENT IF CCH 895 DRIVE.
* *MB468* CM RESIDENT IF *CT* OR *AT* DRIVE.
*
* USES T0, T1.
CRD3 LDC CRDAL SET LENGTH OF TABLE
STD T1
CRD4 LCN 2 CHECK NEXT TABLE ENTRY
RAD T1
MJN CRDX IF END OF TABLE
LDM CRDA,T1 COMPARE DEVICE TYPES
LMD CM+3
NJN CRD4 IF DEVICE TYPES DO NOT MATCH
LDM CRDA+1,T1
STD T0 SET LIST ADDRESS
LDN 40
STI T0 FORCE OVERLAY CM RESIDENT
LDD T0
LMC TRESM+3
NJN CRDX IF NOT *DAS* DEVICE
LDN 40
STM TRESM+5+3 ALSO FORCE *3DZ* CM RESIDENT
CRD SUBR ENTRY/EXIT
LDD CM+3 CHECK DEVICE TYPE
LMC 2RDC
NJN CRD3 IF NOT 895
LDN 40
STM TRESK+3 FORCE *MA464* CONTROLWARE CM RESIDENT
LDN CM
STD T0
CRD1 AOD T0 ADVANCE TO NEXT CHANNEL BYTE
LMN CM+3
ZJN CRDX IF BOTH CHANNEL BYTES CHECKED
LDI T0
ZJN CRD1 IF NO CHANNEL PRESENT
LPN 40
ZJN CRD2 IF NON-CONCURRENT CHANNEL
STM TRESD+3*5+3 FORCE *1XY* CM RESIDENT
UJN CRD1 CHECK NEXT CHANNEL
CRD2 LDN 40 FORCE *1XM* AND OVERLAYS CM RESIDENT
STM TRESD+3
STM TRESD+5+3
STM TRESD+2*5+3
UJN CRD1 CHECK NEXT CHANNEL
CRDA BSS 0 DEVICES WITH RESIDENT DRIVERS/CONTROLWARE
CON 2RAT,TRESP+3 ACS CARTRIDGE TAPE
CON 2RCT,TRESP+3 CARTRIDGE TAPE
CON 2RDB,TRESC+3 885-42 DISK
CON 2RDF,TRESH+3 887 (4KB SECTOR) DISK
CON 2RDH,TRESH+3 887 (16KB SECTOR) DISK
CON 2RDN,TRESI+3 9853 DISK
CON 2REA,TRESM+3 5832 (1X SSD) DISK
CON 2REB,TRESM+3 5832 (2X SSD) DISK
CON 2REC,TRESM+3 5833 (1X SABRE) DISK
CON 2RED,TRESM+3 5833 (1XP SABRE) DISK
CON 2REE,TRESM+3 5833 (2X SABRE) DISK
CON 2REF,TRESM+3 5833 (2XP SABRE) DISK
CON 2REG,TRESM+3 5838 (1X ELITE) DISK
CON 2REH,TRESM+3 5838 (1XP ELITE) DISK
CON 2REI,TRESM+3 5838 (2X ELITE) DISK
CON 2REJ,TRESM+3 5838 (2XP ELITE) DISK
CON 2REK,TRESM+3 5838 (3XP ELITE) DISK
CON 2REL,TRESM+3 5838 (4X ELITE) DISK
CON 2REM,TRESM+3 5833 (3XP SABRE) DISK
CON 2REN,TRESM+3 5833 (4X SABRE) DISK
CON 2REO,TRESM+3 47444 (1X 3.5IN) DISK
CON 2REP,TRESM+3 47444 (1XP 3.5IN) DISK
CON 2RES,TRESM+3 47444 (2X 3.5IN) DISK
CON 2REU,TRESM+3 47444 (2XP 3.5IN) DISK
CON 2REV,TRESM+3 47444 (3XP 3.5IN) DISK
CON 2REW,TRESM+3 47444 (4X 3.5IN) DISK
CRDAL EQU *-CRDA LENGTH OF TABLE
ECS SPACE 4,10
** ECS - CHECK EXTENDED MEMORY PRESENT.
*
* ENTRY (CM - CM+4) = EST ENTRY.
*
* EXIT (A) = BYTE 0 OF EST.
* *1MC* CM RESIDENT IF EXTENDED MEMORY PRESENT.
ECS2 LDD CM POSITION FOR SYSTEM DEVICE CHECK
SHN 21-12
ECS SUBR ENTRY/EXIT
LDD CM+3
LPC 3777
LMC 2RDP CHECK FOR TYPE *DP*
ECSA ZJN ECS1 IF EXTENDED MEMORY PRESENT
* UJN ECS2 (IF A CYBER 176)
LMN 2RDE&2RDP CHECK FOR TYPE *DE*
NJN ECS2 IF NOT AN EXTENDED MEMORY TYPE OF DEVICE
ECS1 LDN 40 SET *1MC* CM RESIDENT
STM TRESA+3
UJN ECS2 RETURN
IDS SPACE 4,10
** IDS - INITIALIZE DEAD START.
IDS SUBR ENTRY/EXIT
LDN DSSL
CRD CM
LDD CM+4 CHECK DEADSTART FLAG
LPN 4
SHN -2
STD DS
NJN IDS1 IF DEADSTART INTERLOCK SET
LJM ABT ISSUE MESSAGE AND ABORT
IDS1 PAUSE NE
LDD IR+3 READ *REC* INPUT REGISTER
CRD CM
LDD CM+3 CHECK RECOVERY COMPLETE FLAG
LMC 7776
NJN IDS1 IF NOT SET
IDS2 PAUSE
LDD CM CHECK CPU STATUS
SHN -11
ZJN IDS2 IF CPU NOT ACTIVE
LDD RA READ (RA+3)
SHN 6
ADN 3
CRD CM
LDD CM+3 SET CONTROL WORD ADDRESS
LPN 37
STD IR+3
SHN 14
LMD CM+4
STD IR+4
ZJN IDS2 IF NOT SET
LJM IDSX RETURN
SSD SPACE 4,10
** SSD - SET SYSTEM DEVICES.
*
* EXIT (TSYD) PREPARED.
* (LE) = LAST MASS STORAGE EST ORDINAL + 1.
*
* ERROR TO *ABT* IF SYSTEM DEVICE DOWN.
*
* USES EI, LE, T5, CM - CM+4, CN - CN+4.
*
* CALLS CBD, ECS.
*
* MACROS SFA.
SSD SUBR ENTRY/EXIT
LDN ESTP READ EST POINTER
CRD CN
ADK MABL-ESTP READ MAINFRAME TYPE
CRD CM
LDD CN+2 SET END OF EST
STM SSDB+1
LDD CN+3 SET END OF MASS STORAGE EQUIPMENTS
STD LE
LDN NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH
STD T5
LDN 0
STD EI CLEAR TABLE INDEX
LDD CM+1 CHECK MAINFRAME TYPE
SHN -11
LMN 7
NJN SSD1 IF NOT CYBER 176
LDC *
ORG *-1
LOC ECSA
UJN ECS2 DISABLE CM RESIDENCY OF *1MC* ON C176
LOC *O
STM ECSA
SSD1 AOD T5 READ NEXT EST ENTRY
SSDB LMC * (LAST EST ORDINAL+1)
ZJN SSDX IF END OF EST
SFA EST,T5 READ EST ENTRY
ADK EQDE
CRD CM
RJM CRD CHECK FOR RESIDENT DRIVER OR CONTROLWARE
LDD CM CHECK EQUIPMENT
SHN 21-13
PJN SSD1 IF NOT MASS STORAGE
RJM ECS CHECK FOR EXTENDED MEMORY
PJN SSD1 IF NOT SYSTEM DEVICE
LDD CM
LPN 3 CHECK DEVICE STATE
LMN 3
NJN SSD2 IF NOT DOWN
LDC SSDA
LJM ABT1 ABORT JOB
SSD2 LDD EI CHECK IF SYSTEM DEVICE TABLE FULL
LMN MXSY
ZJN SSD3 IF MAXIMUM SYSTEM DEVICES ALREADY DEFINED
LDD T5 ENTER EST ORDINAL IN TABLE
STM TSYD,EI
AOD EI ADVANCE TABLE INDEX
SSD3 LJM SSD1 CHECK NEXT EST ENTRY
SSDA DATA C* SYSTEM DEVICE DOWN.*
VSC SPACE 4,15
** VSC - VALIDATE *SLL* CALL.
*
* ENTRY (IR+3 - IR+4) = REQUEST WORD ADDRESS.
*
* EXIT (A) = 0 IF VALID *SLL* CALL.
* = ADDRESS OF ERROR MESSAGE.
*
* ERROR TO *ABT* IF NOT *SSJ=* CALLER.
*
* USES IR+3, CM - CM+4, CN - CN+4.
*
* CALLS CUA.
VSC SUBR ENTRY/EXIT
LDD CP READ SPECIAL ENTRY POINTS
ADK SEPW
CRD CM
ADK JSCW-SEPW READ JOB SECURITY WORD
CRD CN
LDD CM
SHN 21-2
MJN VSC1 IF CALLED BY *SSJ=* JOB
LJM ABT * INCORRECT SLL REQUEST.*
VSC1 RJM CUA CHECK USER ACCESS
NJN VSC2 IF ACCESS NOT ALLOWED
LDK SSML CHECK SECURITY MODE
CRD CM
LDD CM
LPN 7
ZJN VSC4 IF UNSECURED SYSTEM
LDD CN
SHN 21-13
MJN VSC4 IF SECURITY ADMINISTRATOR
VSC2 LDC VSCA
VSC3 UJN VSCX RETURN
VSC4 LDD IR+3 CHECK REQUEST WORD ADDRESS
STM RECA
LPN 37
STD IR+3
SHN 14
LMD IR+4
SHN -6
SBD FL
MJN VSC5 IF ADDRESS WITHIN FL
LDC =C* SLL ARGUMENT ERROR.*
UJN VSC3 RETURN
VSC5 LDN 0 VALID *SLL* CALL
UJN VSC3 RETURN
VSCA DATA C* SYSTEM LIBRARY CHANGE INCORRECT.*
SPACE 4,10
** COMMON DECKS.
SSJ$ EQU 1 DEFINE SSJ CHECKING IN *COMPCUA*
*CALL COMPCUA
SPACE 4
END