cdc:nos2.source:opl871:fdl
Table of Contents
FDL
Table Of Contents
- [00010] LDD - LOAD FAST DYNAMIC LOAD DIRECTORIES.
- [00185] MACRO DEFINITIONS.
- [00189] COMMON - COMMON CODE FOR *LDD* AND *LDQ*.
- [00196] CIS - CLEAR INTERLOCKS.
- [00214] MSR - MASS STORAGE ERROR PROCESSING.
- [00257] ERROR - SET ERROR STATUS.
- [00273] LDCA - LOAD ABSOLUTE CM ADDRESS.
- [00293] MSG - DEFINE MESSAGE.
- [00393] LIBRARY MANIPULATION ROUTINES.
- [00802] SUBROUTINES.
- [00809] CRP - CHECK RECALL PARAMETERS.
- [00862] DPP - DROP PPU.
- [00899] ERR - ERROR PROCESSOR.
- [00939] IBA - INCREMENT BUFFER ADDRESS.
- [00973] LBM - LOAD BUFFER MEMORY.
- [01028] PDE - PROCESS DIRECTORY ENTRY.
- [01137] SCP - SEARCH *CLD* FOR PROCEDURE RECORDS.
- [01190] SCS - SET COMPLETE STATUS.
- [01237] SFE - SEARCH FOR ENTRY IN CENTRAL MEMORY DIRECTORY.
- [01282] SIS - SET INTERLOCK STATUS.
- [01312] VOT - VALIDATE *OPLD* TABLE.
- [01343] VUT - VALIDATE *ULIB* TABLES.
- [01381] COMMON DECKS AND BUFFERS.
- [01396] TLBD - GLOBAL LIBRARY SET.
- [01409] BUF - MASS STORAGE BUFFER.
- [01417] PRESET.
- [01419] PRS - PRESET.
- [01653] LDQ - MAIN PROGRAM.
- [01662] CFN - COMPLETE FUNCTION.
- [01670] DPP - DROP PP.
- [01693] SUBROUTINES.
- [01700] CPN - COMPARE NAMES.
- [01726] CPY - COPY PROGRAM.
- [01824] ERR - SET ERROR AND EXIT.
- [01856] RFS - READ FIRST SECTOR.
- [01936] PRS - PRESET.
- [02076] ALF - ACCESS LOCAL FILE.
- [02145] ASF - ACCESS SYSTEM FILE.
- [02184] ERP - ERROR PROCESSOR.
Source Code
- FDL.txt
- IDENT LDD,/LDD/LDD
- PERIPH
- BASE MIXED
- SST
- IRA$ EQU 1 SET USER RANDOM ADDRESS INITIALIZATION
- MSR$ EQU 1 SET USER MASS STORAGE ERROR PROCESSING
- QUAL$ EQU 1 SET UNQUALIFIED COMMON DECKS
- *COMMENT FDL - LOAD FAST DYNAMIC LOAD DIRECTORIES.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- TITLE LDD - LOAD FAST DYNAMIC LOAD DIRECTORIES.
- SPACE 4,10
- *** LDD - LOAD FAST DYNAMIC LOAD DIRECTORIES.
- * S. L. KSANDER. 76/04/01.
- SPACE 4,10
- *** LDD PROCESSES THE PHYSICAL LOADING OF FAST DYNAMIC
- * LOAD CAPSULE DIRECTORY INFORMATION INTO THE USER SPECIFIED
- * AREA. IF A FUNCTION CODE OF 404 IS PRESENT THEN
- * CCL PROCEDURE RECORDS ARE LOCATED RATHER THAN CAPSULES.
- SPACE 4,10
- *** CALL FORMAT.
- *
- *
- *T 18/ *LDD* ,1/,1/A,4/,12/ DI,6/ RSTAT,1/B,17/ FET
- *
- * A AUTO RECALL.
- * DI DIRECTORY INDEX. (*LDD* RECALL ONLY)
- * RSTAT RECALL STATUS BITS. (*LDD* RECALL ONLY)
- * 2/LOCAL USER LIBRARY OFFSET.
- * 4/GLOBAL LIBRARY SET INDEX.
- * B *LDD* RECALL STATUS.
- *
- *
- * FET.
- *
- *T FET 42/ *GROUP*,9/ STATUS,9/ CODE
- *T, 12/,18/ LIST,12/ DIRL,18/ DIRA
- *
- * INITIAL CALL.
- *
- * GROUP NAME OF GROUP FOR WHICH DIRECTORY INFORMATION IS
- * REQUESTED
- * STATUS IGNORED
- * CODE FUNCTION CODE.
- * 0 = LOCATE CAPSULES.
- * 402 = LOCATE TEXT RECORD IN *CLD*.
- * 404 = LOCATE TEXT RECORDS.
- * LIST ADDRESS OF LIBRARY NAME LIST THAT IS TO BE SEARCHED
- * AFTER THE GLOBAL LIBRARY SET, TERMINATED BY ZERO WORD
- * DIRL LENGTH OF DIRECTORY STORAGE AREA
- * DIRA BASE ADDRESS OF DIRECTORY AREA
- *
- *
- * CALL COMPLETION.
- *
- * GROUP NOT CHANGED
- * STATUS 000 = NO ERRORS
- * 001 = ILLEGAL FUNCTION CODE
- * 002 = BAD DIRECTORY ADDRESS AND/OR LENGTH (OUTSIDE OF
- * JOB FL)
- * 003 = BAD LIBLIST ADDRESS AND/OR LENGTH (OUTSIDE OF
- * JOB FL)
- * 010 = LIBRARY NOT FOUND OR LIBRARY NOT MASS STORAGE
- * RESIDENT
- * 020 = INSUFFICIENT DIRECTORY SPACE GIVEN
- * CODE SET TO 001
- * LIST NOT CHANGED
- * DIRL SET TO ACTUAL LENGTH REQUIRED
- * DIRA NOT CHANGED
- *
- * *LDD* RECALL.
- *
- * AFTER EACH LIBRARY HAS BEEN PROCESSED, *LDD* WILL CHECK
- * THE TOTAL NUMBER OF SECTORS READ AGAINST THE ASSEMBLY
- * CONSTANT *RSLM*. IF THIS LIMIT IS EXCEEDED, *LDD* WILL
- * PLACE ITSELF IN RECALL AND RESTART AGAIN WHEN IT IS
- * RECALLED.
- *
- *
- * DIRECTORY ENTRY FORMAT.
- *
- *
- * SYSTEM FILE DIRECTORY ENTRY.
- *
- *T DIRA 12/7777,12/ 0,12/ FNT,6/ ORD,18/ 0
- *T,DIRA+1 42/ NAME, 18/ INDEX
- *T,DIRA+2 1/1,23/ 0,18/ PRU,18/ LENGTH
- *
- *
- * LOCAL FILE DIRECTORY ENTRY.
- *
- *T DIRA 1/1,41/ *LFN*,18/ 0
- *T,DIRA+1 42/ NAME, 18/ INDEX
- *T,DIRA+2 1/1,23/ 0,18/ PRU,18/ LENGTH
- *
- *
- * FNT ADDRESS OF SYSTEM FILE FNT ENTRY
- * ORD ORDINAL OF SYSTEM LIBRARY IN LIBRARY NAME TABLE
- * LFN LOCAL FILE NAME
- * NAME NAME OF CAPSULE OR TEXT RECORD.
- * INDEX INDEX RELATIVE TO START OF DIRECTORY OF THE FILE
- * ENTRY ASSOCIATED WITH THIS NAME.
- * PRU DISK ADDRESS OF FIRST SECTOR OF CAPSULE OR TEXT
- * RECORD.
- * LENGTH LENGTH OF CAPSULE OR TEXT RECORD.
- SPACE 4,15
- *** DAYFILE MESSAGES.
- *
- * * LDD - ARGUMENT ERROR - XXXXXX.* = FET ADDRESS .LT. 2 OR
- * .GT. FL-2.
- *
- * * LDD - I/O SEQUENCE ERROR - FILENAM AT XXXXXX.* = MULTIPLE
- * CONCURRENT FUNCTIONS WERE ATTEMPTED ON FILE *FILENAM*.
- *
- * * LDD - DEVICE ERROR - FILENAM AT XXXXXX.* = AN UNRECOVERED
- * DEVICE ERROR WAS ENCOUNTERED ON FILE *FILENAM*.
- *
- * FOR ALL MESSAGES, XXXXXX IS THE ADDRESS OF THE *LDD*
- * PARAMETER BLOCK.
- SPACE 4,10
- *** OPERATOR MESSAGES.
- *
- *
- * NONE.
- SPACE 4,25
- **** ASSEMBLY CONSTANTS.
- QUAL ERR ERROR CODES.
- ILF EQU 1 ILLEGAL FUNCTION
- IAD EQU 2 ILLEGAL ADDRESS
- FNF EQU 3 FILE NOT FOUND (LDQ)
- ILA EQU 3 ILLEGAL LIBLIST ADDRESS (LDD)
- IRA EQU 4 ILLEGAL RANDOM ADDRESS
- WPR EQU 5 WRONG PROGRAM
- IBF EQU 6 INSUFFICIENT BUFFER
- ILE EQU 10 ILLEGAL LIBRARY ENTRY
- IDS EQU 20 INSUFFICIENT DIRECTORY SPACE
- FERT EQU 40 FATAL ERROR TYPES.
- ARG EQU 40 ARGUMENT ERROR (MUST ALWAYS BE FATAL)
- IOS EQU 41 I/O SEQUENCE ERROR (MUST ALWAYS BE FATAL)
- MSR EQU 42 MASS STORAGE ERROR (MUST ALWAYS BE FATAL)
- QUAL *
- MEPO EQU 1 MASS STORAGE ERROR PROCESSING OPTION
- RSLM EQU 1000 RECALL SECTOR LIMIT
- ****
- SPACE 4,10
- *** COMMON DECKS.
- *CALL COMPMAC
- *CALL COMSCPS
- *CALL COMSMSP
- *CALL COMSPIM
- *CALL COMSSRU
- SPACE 4,25
- **** DIRECT LOCATION ASSIGNMENTS.
- ER EQU 17 EOR FLAG
- FS EQU 20 - 24 FST ENTRY
- CC EQU 25 CAPSULE COUNT
- GO EQU 26 GROUP ORDINAL
- CL EQU 27 LENGTH OF CENTRAL MEMORY DIRECTORY
- GN EQU 30 - 34 GROUP NAME
- AB EQU 30 - 34 NAME TO SEARCH FOR IN *CLD*
- UL EQU 35 - 36 USER SPECIFIED FILE LIST ADDRESS
- DI EQU 37 ACTUAL DIRECTORY LENGTH
- FN EQU 40 - 44 FNT ENTRY
- FW EQU 45 - 46 FWA OF CM BUFFER
- TI EQU 45 - 46 LIBRARY BASE RANDOM INDEX
- EC EQU 47 ERROR CODE
- FA EQU 57 RELATIVE FNT ADDRESS IN NFL
- BL EQU 60 BUFFER LIMIT ADDRESS
- SI EQU 61 - 62 SRU INCREMENT TO ERROR PROCESSOR
- RI EQU 63 - 64 RANDOM INDEX
- BS EQU 65 - 66 BUFFER SIZE (CM BUFFER)
- DA EQU 65 - 66 DIRECTORY BASE ADDRESS
- DL EQU 67 USER SPECIFIED DIRECTORY LENGTH
- ****
- TITLE MACRO DEFINITIONS.
- SPACE 4,10
- ** MACRO DEFINITIONS.
- COMMON SPACE 4,10
- ** COMMON - COMMON CODE FOR *LDD* AND *LDQ*.
- *
- * THIS MACRO PROVIDES IDENTICAL CODE FOR *LDD* AND *LDQ*.
- COMMON MACRO
- CIS SPACE 4,10
- ** CIS - CLEAR INTERLOCKS.
- *
- * ENTRY (CISA) = TRACK NUMBER IF INTERLOCK SET.
- *
- * EXIT (CISA) = 0.
- *
- * CALLS CTI.
- CIS SUBR ENTRY/EXIT
- LDC 0
- CISA EQU *-1
- ZJN CISX IF NO INTERLOCK SET
- RJM CTI
- * LDN 0 CLEAR INTERLOCK SET STATUS
- STM CISA
- UJN CISX RETURN
- MSR SPACE 4,15
- ** MSR - MASS STORAGE ERROR PROCESSING.
- *
- * ENTRY (A) = STATUS RETURNED FROM AN I/O ERROR.
- * (T5) = EST ORDINAL.
- * (FA) = FNT ADDRESS IF LOCAL FILE PRESENT.
- * = 0, OTHERWISE.
- *
- * USES FS+4, IR+4.
- *
- * CALLS CIS.
- *
- * MACROS ERROR, EXECUTE.
- MSR CON 0 ENTRY
- SHN 21-12
- MJN MSR2 IF UNRECOVERABLE ERROR
- LDM MSD
- SHN 21-13
- MJN MSR3 IF NOT SUBSYSTEM
- MSR2 RJM CIS
- ERROR MSR * DEVICE ERROR.*
- * CALL *1RJ* TO RECALL THE PP AND ROLL THE JOB.
- MSR3 LDD T5 EST ORDINAL
- STD IR+4
- RJM CIS CLEAR INTERLOCKS
- AOD FS+4 SET FET NOT BUSY
- LDD FA
- ZJN MSR4 IF NO LOCAL FNT
- NFA FA,R
- ADN FSTL
- CWD FS
- MSR4 EXECUTE 1RJ
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMPCTI
- *CALL COMPRNS
- ENDM
- ERROR SPACE 4,15
- ** ERROR - SET ERROR STATUS.
- *
- *
- *NAME ERROR CODE
- *
- * ENTRY *NAME* = OPTIONAL LOCATION TAG.
- * *CODE* = ERROR CODE.
- PURGMAC ERROR
- ERROR MACRO A
- MACREF ERROR
- LDN /ERR/A
- RJM ERR
- ENDM
- LDCA SPACE 4,20
- ** LDCA - LOAD ABSOLUTE CM ADDRESS.
- *
- *
- *NAME LDCA DC
- *
- * ENTRY *NAME* = OPTIONAL LOCATION TAG.
- * *DC* = FIRST OF TWO DIRECT LOCATIONS TO BE USED.
- PURGMAC LDCA
- LDCA MACRO X
- MACREF LDCA
- LDD X
- LPN 37
- SHN 6
- ADD RA
- SHN 6
- ADD X+1
- ENDM
- MSG SPACE 4,15
- ** MSG - DEFINE MESSAGE.
- *
- *ERR MSG (TEXT)
- *
- * ENTRY *ERR* = ERROR CODE.
- * *TEXT* = ERROR MESSAGE.
- PURGMAC MSG
- MACRO MSG,ERR,TEXT
- LOCAL A
- MACREF MSG
- A MICRO 1,,$TEXT$
- A MICCNT A
- ERRNG 20D-A MESSAGE TOO LONG
- ERR CON =Z$TEXT$
- ENDM
- LDD TITLE MAIN PROGRAM.
- QUAL LDD
- *** LDD - MAIN PROGRAM.
- ORG PPFW
- LDD RJM PRS PRESET
- LDDB LDN 0
- * LDN 1 (FUNCTION CODE 402)
- NJN LDD3.4 IF FUNCTION CODE IS 402
- LDD CP READ GLOBAL LIBRARY SET
- ADC LB1W
- CRM TLBD,TR
- LDD1 LDN 0 CLEAR FNT ADDRESS
- STD FA
- STD FN CLEAR FILE NAME
- STM SISA
- PAUSE
- LDD CM+1 CHECK ERROR FLAGS
- ZJN LDD3 IF NO ERROR FLAGS
- LDD2 LJM SCS SET COMPLETE STATUS
- LDD3 RJM CRP CHECK RECALL PARAMETERS
- RJM GNL GET NEXT LIBRARY
- LDD FN CHECK LIBRARY FOUND
- NJN LDD5 IF NOT END OF LIBRARIES
- LDDA LDN 0
- * LDN 1 (FUNCTION CODE 404)
- ZJN LDD2 IF NOT FUNCTION CODE 404
- LDD3.4 RJM SCP SEARCH *CLD* FOR PROCEDURE RECORD
- NJN LDD4 IF ENTRY FOUND
- ERROR ILE ILLEGAL LIBRARY ENTRY
- UJN LDD2 EXIT
- LDD4 RJM PDE PROCESS DIRECTORY ENTRY
- UJN LDD2 SET COMPLETE STATUS
- LDD5 RJM LNL LOCATE NEXT LIBRARY
- LDD FN CHECK LIBRARY FOUND
- ZJN LDD6 IF LIBRARY NOT FOUND
- * PROCESS *ULIB* RECORD.
- LDC BUF LOAD BUFFER MEMORY
- RJM LBM
- LDC BUF RESET BUFFER ADDRESS
- STD T3
- RJM VUT VALIDATE *ULIB* TABLES
- NJN LDD7 IF NO ERROR IN *ULIB* TABLES
- LDD6 ERROR ILE ILLEGAL LIBRARY ENTRY
- RJM CIS CLEAR INTERLOCK STATUS
- UJN LDD8
- LDD7 RJM SFG SEARCH FOR GROUP NAME
- ZJN LDD6 IF NO MATCH ON GROUP NAME
- * PROCESS *OPLD* RECORD.
- RJM SIS SET INTERLOCK STATUS
- LDD FS+1 SET FIRST TRACK
- STD T6
- RJM CRA CONVERT RANDOM ADDRESS
- MJN LDD6 IF RANDOM INDEX ERROR
- LDC BUF LOAD BUFFER MEMORY
- RJM LBM
- LDC BUF RESET BUFFER ADDRESS
- STD T3
- RJM VOT VALIDATE *OPLD* TABLE
- MJN LDD6 IF ERROR IN *OPLD* TABLE
- RJM PGM PROCESS GROUP MEMBERS
- ZJN LDD8 IF NO FIND OR CAPSULE PROCESSING
- LJM LDD2 IF FIND ON FUNCTION CODE 404
- LDD8 AOD FS+4 SET FILE NOT BUSY
- LDD FA
- ZJN LDD9 IF NOT LOCAL LIBRARY
- NFA FA,R
- ADN FSTL
- CWD FS
- LDD9 LJM LDD1 LOOP
- TITLE LIBRARY MANIPULATION ROUTINES.
- GNL SPACE 4,15
- *** GNL - GET NEXT LIBRARY NAME.
- *
- * ENTRY (UL - UL+1) = ADDRESS OF NEXT USER LIBLIST ENTRY.
- * (TLBD) = GLOBAL LIBRARY SET.
- * (FN) = 0.
- *
- * EXIT (FN) = 0 IF NO LIBRARY FOUND.
- * (FN - FN+4) = NAME OF NEXT USER LIBRARY.
- * (UL - UL+1) = UPDATED TO NEXT USER LIBLIST ENTRY.
- * TO *ERR* IF ILLEGAL LIBLIST ADDRESS.
- *
- * USES T7, CM - CM+4, FN - FN+4, UL - UL+1.
- * PROCESS USER LIBLIST ENTRY.
- GNL4 LDD UL CHECK USER SPECIFIED LIBLIST
- SHN 14
- ADD UL+1
- ZJN GNLX IF NO USER SPECIFIED LIBLIST
- SHN -6 CHECK USER LIBLIST ADDRESS
- SBD FL
- MJN GNL6 IF LIBLIST ADDRESS WITHIN FL
- GNL5 ERROR ILA ILLEGAL LIBLIST ADDRESS
- GNL6 LDCA UL READ LIBRARY NAME
- CRD FN
- AOD UL+1 ADVANCE LIBLIST ADDRESS
- SHN -14
- RAD UL
- GNL7 LDD FN+3 SET LIBRARY NAME
- SCN 77
- STD FN+3
- LDN 0
- STD FN+4
- GNL SUBR ENTRY/EXIT
- LDC TLBD+3 CHECK END OF GLOBAL LIBRARY SET TABLE
- GNLA EQU *-1
- STD T7
- LMC TLBDL
- GNLB EQU *-1
- * LMC TLBDL-5 (ONE LOCAL USER LIBRARY)
- * LMC TLBDL-12 (TWO LOCAL USER LIBRARIES)
- ZJN GNL1 IF END OF GLOBAL LIBRARY SET
- LDI T7 GET NEXT LIBRARY ORDINAL
- GNLC SHN -6 POSITION ORDINAL
- * SHN 0 (LIBRARY ORDINAL IN LOWER SIX BITS)
- LPN 77
- NJN GNL2 IF NOT END OF GLOBAL LIBRARY SET
- GNL1 LJM GNL4
- GNL2 STD T7
- AOM GNLE ADVANCE GLOBAL LIBRARY INDEX
- SHN -1
- ADC TLBD+3
- STM GNLA
- LDM GNLC ADVANCE SHIFT INSTRUCTION
- LMN -6+77
- STM GNLC
- LDD T7
- SBN 77
- ZJN GNL3 IF LOCAL USER LIBRARY
- ADN 76 SET OFFSET = (ORDINAL-1) * 2
- SHN 1
- STD T7
- LDC LBDP READ LIBRARY DIRECTORY
- CRD CM
- LDD CM+2 FORM ADDRESS OF LIBRARY NAME
- SHN 14
- ADD CM+3
- ADD T7 ADD OFFSET
- CRD FN READ LIBRARY NAME
- LJM GNL7
- * READ LOCAL FILE LIBRARY NAME.
- GNL3 LDD CP READ LOCAL USER LIBRARY NAME
- ADC LB3W
- GNLD EQU *-1
- * ADC LB2W (SECOND LOCAL USER LIBRARY)
- CRD FN READ LIBRARY NAME
- SOM GNLD ADVANCE LOCAL USER LIBRARY POINTER
- LCN 5 ADVANCE END OF GLOBAL LIBRARY SET TABLE
- RAM GNLB
- AOM CRPA ADVANCE RECALL VALUE
- LJM GNL7
- GNLE CON 0 GLOBAL LIBRARY SET BYTE INDEX
- LNL SPACE 4,25
- *** LNL - LOCATE NEXT LIBRARY.
- *
- * ENTRY (FN - FN+3) = LIBRARY NAME.
- * (LNLA) = FNT ADDRESS SYSTEM FILE.
- *
- * EXIT (FN) = 0 IF LIBRARY NOT FOUND.
- * (T5) = EQUIPMENT.
- * (T6) = FIRST TRACK OF LIBRARY FILE.
- * (FA) = FNT ADDRESS IF LOCAL FILE LIBRARY FOUND.
- * (PDEB) = INDEX OF LIBRARY FILE HEADER IN DIRECTORY.
- * (RI - RI+1) = RANDOM INDEX OF LIBRARY *ULIB* RECORD.
- * (FS - FS+4) = FST OF LOCAL FILE USER LIBRARY.
- * (DIRA - DIRA+4) = FIRST WORD OF DIRECTORY ENTRY FOR
- * LIBRARY.
- * (CISA) = SET TO INDICATE INTERLOCK CLEARED.
- * (SISA) = SET TO INDICATE IF INTERLOCK REQUIRED.
- * RANDOM ACCESS PROCESSORS PRESET.
- * DRIVER LOADED AND ERROR PROCESSING SET.
- *
- * USES FA, CM - CM+4, FN - FN+4, FS - FS+4, RI - RI+4,
- * T1 - T7.
- *
- * CALLS CRA, IRA, SAF, SFB, SIS.
- *
- * MACROS ERROR, SETMS, SFA.
- LNL SUBR ENTRY/EXIT
- RJM SAF SEARCH FOR ASSIGNED FILE
- NJN LNL1 IF FILE FOUND
- LJM LNL5 SEARCH SYSTEM LIBRARIES
- LNL1 RJM SFB SET FILE BUSY
- ZJN LNL2 IF FILE SET BUSY
- ERROR IOS * I/O SEQUENCE ERROR.*
- LNL2 LDD CM+3 CHECK FILE MODE
- LPN 4
- ZJN LNL2.1 IF NOT EXECUTE-ONLY
- LDD CP CHECK VALID ACCESS
- ADC EOCW
- CRD T1
- LDD T1
- LMD FA
- NJN LNL4 IF NOT VALID ACCESS
- LNL2.1 LDD CM+4 CHECK FILE TYPE
- SHN -6
- LMN PMFT
- NJN LNL3 IF NO PERMANENT FILE
- LDD CM+3 CHECK ACCESS MODE
- LPN 20
- ZJN LNL3 IF NOT M, A, RM, OR RA MODE
- LDD FS+1
- STM SISA SET INTERLOCK REQUIRED STATUS
- LNL3 LDD FS
- STD T5
- SFA EST READ EST ENTRY
- ADK EQDE
- CRD CM
- LDD CM CHECK EQUIPMENT TYPE
- SHN 21-13
- PJN LNL4 IF NOT MASS STORAGE
- LDD FS+2 CHECK FOR TRACK
- ZJN LNL4 IF FILE EMPTY
- LJM LNL10 PROCESS LOCAL FILE
- * SET ERROR STATUS.
- LNL4 LDN 0 CLEAR FIRST BYTE OF LIBRARY NAME
- STD FN
- LJM LNLX RETURN
- * SEARCH LIBRARY NAME TABLE FOR LIBRARY.
- LNL5 STD T5 CLEAR LIBRARY ORDINAL
- LDC LBDP READ LIBRARY NAME TABLE FWA
- CRD CM-1
- LNL6 AOD T5 ADVANCE ORDINAL
- LDD CM+1 READ LIBRARY NAME
- SHN 14
- ADD CM+2
- CRD FS
- ADN 1 READ RANDOM ADDRESS
- CRD RI-3
- LDD FS COMPARE CHARACTERS 1 AND 2
- ZJN LNL4 IF END OF LIBRARY NAME TABLE
- LMD FN
- ZJN LNL8 IF CHARACTERS MATCH
- LNL7 LDN 2 ADVANCE LIBRARY NAME TABLE ADDRESS
- RAD CM+2
- SHN -14
- RAD CM+1
- UJN LNL6 LOOP TO END OF LIBRARY NAME TABLE
- LNL8 LDD FN+1 COMPARE CHARACTERS 3 AND 4
- LMD FS+1
- NJN LNL7 IF NO COMPARE
- LDD FN+2 COMPARE CHARACTERS 5 AND 6
- LMD FS+2
- NJN LNL7 IF NO COMPARE
- LDD FN+3 COMPARE CHARACTER 7
- LMD FS+3
- SCN 77
- NJN LNL7 IF NO COMPARE
- * FORM SYSTEM LIBRARY DIRECTORY HEADER.
- LDN ZERL CLEAR DIRECTORY ENTRY
- CRM DIRA,ON
- LDD DI SET INDEX TO FILE ENTRY
- STM PDEB
- LDD T5 ADD LIBRARY ORDINAL
- SHN 6
- STM DIRA+3
- LCN 0
- STM DIRA
- LDN FNTP READ SYSTEM FST ENTRY
- CRD CM
- LDD CM
- SHN 14
- LMD CM+1
- ERRNZ SYFO SYSTEM FILE ORDINAL .NE. 0
- ADN FSTG
- CRD FS
- CRD T5
- LDD RI SET RANDOM ADDRESS BIAS
- SHN 14
- ADD RI+1
- SBN 1
- STD TI+1
- SHN -14
- STD TI
- RJM IRA INITIALIZE RANDOM ACCESS PROCESSORS
- RJM CRA CONVERT RANDOM ADDRESS
- PJN LNL9 IF NO RANDOM INDEX ERROR
- LJM LNL4
- LNL9 SETMS READSYS SYSTEM SELECTION OF EQUIPMENT
- LJM LNLX RETURN
- * FORM LOCAL LIBRARY DIRECTORY HEADER.
- LNL10 LDD FS+1 SET FIRST TRACK
- STD T6
- LDN 0 SET INITIAL RANDOM ADDRESS
- STD RI
- STD TI
- LDN FSMS
- STD RI+1
- SBN 1 SET RANDOM ADDRESS BIAS
- STD TI+1
- LDD MA FORM FIRST WORD OF DIRECTORY
- CWD FN
- CRM DIRA,ON
- LDC 4000 FLAG FILE DIRECTORY ENTRY
- RAM DIRA
- LDD DI SET INDEX TO FILE ENTRY
- STM PDEB
- RJM IRA INITIALIZE RANDOM ACCESS PROCESSORS
- RJM SIS SET INTERLOCK STATUS
- RJM CRA
- PJN LNL11 IF NO RANDOM INDEX ERROR
- LJM LNL4
- LNL11 SETMS IO
- LJM LNLX RETURN
- PGM SPACE 4,15
- *** PGM - PROCESS GROUP MEMBERS.
- *
- * ENTRY (GO) = ORDINAL OF GROUP NAME WITHIN CURRENT LIBRARY.
- * (T2) = *OPLD* TABLE BASE ADDRESS.
- * (BL) = BUFFER LIMIT ADDRESS.
- * (ER) = BUFFER EOR/EOF/EOI STATUS.
- * (GN - GN+4) = NAME OF *CCL* PROCEDURE TO LOCATE
- * IF FUNCTION CODE 404.
- *
- * EXIT ALL CAPSULES OR PROCEDURE RECORDS PROCESSED.
- * (A) = 1 IF FIND ON FUNCTION CODE 404.
- * (A) = 0 IF NO FIND ON FUNCTION CODE 404 OR *EOR*
- * STATUS REACHED FOR PROCESSING OF CAPSULES.
- * TO *SCS* IF ERROR FLAG SET.
- *
- * USES T1, T2, T3.
- *
- * CALLS LBM, PDE, SIS.
- PGM SUBR ENTRY/EXIT
- LDD T2 SKIP *OPLD* TABLE
- ADN 1*5
- PGM1 STD T3 SET BASE ADDRESS
- PGM2 LDN 0
- * LDN 1 (FUNCTION CODE 404)
- PGMA EQU *-1
- ZJN PGM5 IF NOT FUNCTION CODE 404
- LDM 4,T3 CHECK FOR TYPE *PROC*
- LMN 20
- ZJN PGM3 IF TYPE *PROC*
- LJM PGM6 IF NOT TYPE *PROC*
- PGM3 LDD T3
- STD T1
- LDN GN CHECK NAME FOR MATCH
- STD T2
- PGM4 LDI T2
- LMI T1
- NJN PGM6 IF NO MATCH
- AOD T1
- AOD T2
- LMN GN+3
- NJN PGM4 IF 3 BYTES NOT PROCESSED
- LDI T2 CHECK FOURTH BYTE
- LMI T1
- SCN 77
- NJN PGM6 IF NO MATCH
- RJM PDE PROCESS DIRECTORY ENTRY
- LDN 1
- LJM PGMX RETURN
- PGM5 LDM 4,T3 CHECK FOR TYPE *CAP*
- LMN 16
- NJN PGM6 IF NOT TYPE *CAP*
- LDM 5,T3 CHECK GROUP ORDINAL
- LMD GO
- NJN PGM6 IF NOT CORRECT GROUP ORDINAL
- RJM PDE PROCESS DIRECTORY ENTRY
- PGM6 LDN 2*5 INCREMENT BASE ADDRESS
- RAD T3
- SBD BL CHECK BUFFER LIMIT
- PJN PGM7 IF BUFFER EXHAUSTED
- LJM PGM2 LOOP
- PGM7 LDD ER CHECK EOR STATUS
- NJN PGM8 IF NOT *EOR* IN BUFFER
- LJM PGMX IF *EOR* IN BUFFER
- PGM8 RJM SIS SET INTERLOCK STATUS
- LDC BUF RELOAD BUFFER
- RJM LBM LOAD BUFFER MEMORY
- LDC BUF+2 RESET BASE ADDRESS
- LJM PGM1 LOOP
- SFG SPACE 4,20
- *** SFG - SEARCH FOR GROUP MEMBERS.
- *
- * ENTRY (A) = NUMBER OF GROUP NAMES IN *ULIB* RECORD.
- * (T2) = *ULIB* TABLE BASE ADDRESS.
- * (TI - TI+1) = BASE RANDOM ADDESS OF LIBRARY.
- * (GN - GN+4) = GROUP NAME.
- * (BL) = BUFFER LIMIT ADDRESS.
- * (ER) = BUFFER EOR/EOF/EOI STATUS.
- *
- * EXIT (A) = 0 IF NO GROUP NAMES FOUND.
- * (A) .NE. 0 IF GROUP NAME FOUND WITHIN *ULIB* RECORD.
- * (A) = 1 IF FUNCTION CODE 404.
- * (CC) = NUMBER OF CAPSULES IN CURRENT GROUP.
- * (GO) = ORDINAL OF GROUP WITHIN CURRENT LIBRARY.
- * (RI - RI+1) = RANDOM INDEX OF LIBRARY *OPLD* RECORD.
- * TO *SCS* IF ERROR FLAG SET.
- *
- * USES T3, CC, GO, RI - RI+1.
- *
- * CALLS LBM, SIS.
- SFG SUBR ENTRY/EXIT
- STD CC SAVE GROUP COUNT
- LDM 3,T2 SET *OPLD* RANDOM ADDRESS
- ADD TI+1
- STD RI+1
- SHN -14
- ADM 2,T2
- ADD TI
- STD RI
- SFGA LDN 0
- * LDN 1 (FUNCTION CODE 404)
- NJN SFGX IF FUNCTION CODE 404
- LDN 1 INITIALIZE GROUP NAME ORDINAL
- STD GO
- LDD T2 SKIP *ULIB* HEADER
- ADN 5
- SFG1 STD T3 SET BASE ADDRESS
- SFG2 LDD GN CHECK GROUP NAME
- LMI T3
- LPC 3777
- ZJN SFG4 IF MATCH
- SFG3 SOD CC DECREMENT GROUP COUNT
- ZJN SFGX IF ALL GROUPS PROCESSED
- AOD GO INCREMENT GROUP ORDINAL
- LDN 5 ADVANCE TO NEXT ITEM
- RAD T3
- SBD BL CHECK BUFFER LIMIT
- PJN SFG5 IF BUFFER EXHAUSTED
- UJN SFG2 LOOP
- SFG4 LDD GN+1 COMPARE NAME CHARACTERS 3 AND 4
- LMM 1,T3
- NJN SFG3 IF NO MATCH
- LDD GN+2 COMPARE NAME CHARACTERS 5 AND 6
- LMM 2,T3
- NJN SFG3 IF NO MATCH
- LDD GN+3 COMPARE NAME CHARACTER 7
- LMM 3,T3
- SCN 77
- NJN SFG3 IF NO MATCH
- LDM 4,T3 SET CAPSULE COUNT
- STD CC
- LJM SFGX RETURN
- SFG5 LDD ER CHECK EOR STATUS
- NJN SFG6 IF EOR NOT IN BUFFER
- LJM SFGX RETURN, SET NAME NOT FOUND
- SFG6 RJM SIS SET INTERLOCK STATUS
- LDC BUF RELOAD BUFFER
- RJM LBM LOAD BUFFER MEMORY
- LDC BUF+2 RESET BASE ADDRESS
- LJM SFG1 LOOP
- TITLE SUBROUTINES.
- SPACE 4,10
- ** COMMON SUBROUTINES.
- COMMON
- CRP SPACE 4,10
- ** CRP - CHECK RECALL PARAMETERS.
- *
- * ENTRY (DPPB - DPPB+1) = CURRENT ACCUMULATOR UPDATE.
- *
- * USES CM - CM+4, GN+3 - GN+4.
- *
- * CALLS DPP.
- *
- * MACROS LDCA, MONITOR.
- CRP SUBR ENTRY/EXIT
- LDM DPPC CHECK TIME TO RECALL
- ADC -RSLM
- MJN CRPX IF NOT TIME TO RECALL
- * SET RECALL PARAMETERS.
- LDM GNLE
- SHN -1
- STD CM
- CRPA LDN 0 SET NUMBER OF LOCAL USER LIBRARIES
- SHN 4
- LMD CM
- SHN 6
- LMN 40 SET RECALL BIT
- RAD IR+3
- LDD DI SET DIRECTORY INDEX
- STD IR+2
- LDM GNLC SET LIBRARY ORDINAL POSITION
- LPN 1
- LMN 1
- STD GN+4
- LDM SCSA SET EXISTING ERROR CODE
- SHN 11
- RAD GN+4
- SHN -14
- RAD GN+3
- LDCA IR+3 REWRITE PARAMETER BLOCK
- CWD GN
- LDN 1 SELECT NO DROP PP
- RJM DPP UPDATE ACCOUNTING
- LDN ZERL
- CRD CM
- LDN PTLR PRU TRANSFER LIMIT
- STD CM
- LDD MA STORE PP RECALL REQUEST
- CWD IR
- ADN 1
- CWD CM
- MONITOR RECM
- LJM PPR EXIT TO PP RESIDENT
- DPP SPACE 4,10
- ** DPP - DROP PPU.
- *
- * ENTRY (A) = 0 IF PP TO BE DROPPED.
- * (FA) = FNT ADDRESS.
- * (FS - FS+4) = FST INFORMATION.
- * (DPPB - DPPB+1) = MASS STORAGE ACCOUNTING INCREMENT.
- *
- * EXIT ACCOUNTING UPDATED.
- * FST SET NOT BUSY.
- * PP DROPPED IF SELECTED.
- *
- * USES CM - CM+4.
- *
- * MACROS MONITOR, NFA.
- DPP SUBR ENTRY/EXIT
- STD CM+2 SET PP DROP / NO DROP OPTION
- LDD FA
- ZJN DPP1 IF NO LOCAL FNT
- AOD FS+4
- NFA FA,R SET FST NOT BUSY
- ADN FSTL
- CWD FS
- DPP1 LDD MA COPY PARAMETER WORD TO MESSAGE BUFFER
- CWM DPPA,ON
- LDN 1 SET WORD COUNT
- STD CM+1
- MONITOR UADM
- UJN DPPX RETURN
- DPPA CON AISS SUB FUNCTION
- CON IOAW WORD TO UPDATE
- CON 40D*100+20D FIELD TO UPDATE
- DPPB CON 0,0 INCREMENT
- DPPC DATA 0 PRU COUNTER
- ERR SPACE 4,15
- ** ERR - ERROR PROCESSOR.
- *
- * ENTRY (A) = ERROR CODE.
- *
- * EXIT RETURN IF CONTINUATION ERROR. (MULTIPLE ERROR CODES)
- * SET ERROR CODE AND DROP IF NON-FATAL ERROR.
- * EXECUTE *2LD* IF FATAL ERROR.
- *
- * USES EC, SI - SI+1.
- *
- * CALLS SCS, 2LD.
- *
- * MACROS EXECUTE.
- ERR SUBR ENTRY/EXIT
- STD EC STORE ERROR CODE
- SBN /ERR/FERT CHECK FOR FATAL ERROR
- MJN ERR1 IF NOT FATAL ERROR
- LDM DPPB SET MASS STORAGE INCREMENT
- STD SI
- LDM DPPB+1
- STD SI+1
- EXECUTE 2LD
- ERR1 LCN 0 SET ERROR CODE BITS IN RESPONSE
- LMD EC
- STM ERRA
- LDM SCSA
- LPC *
- ERRA EQU *-1
- LMD EC
- STM SCSA
- LDD EC CHECK FOR CONTINUATION
- LMN /ERR/ILE
- ZJN ERRX IF CONTINUATION ERROR
- LMN /ERR/IDS&/ERR/ILE
- ZJN ERRX IF CONTINUATION ERROR
- LJM SCS SET COMPLETE STATUS
- IBA SPACE 4,15
- ** IBA - INCREMENT BUFFER ADDRESS.
- *
- * ENTRY (T3) = BUFFER ADDRESS.
- * (IBAA - IBAA+1) = DATA SAVED FROM LAST SECTOR.
- *
- * EXIT (A) .GE. 0 IF BUFFER FULL.
- * (T3) = NEW BUFFER ADDRESS.
- * (BL) = BUFFER LIMIT ADDRESS.
- * (IBAA - IBAA+1) = DATA SAVED FROM CURRENT SECTOR.
- * PREVIOUS DATA RESTORED OVER LINKAGE BYTES.
- *
- * USES T3.
- IBA1 LDI T3 SAVE DATA AREA
- STM IBAA
- LDM 1,T3
- STM IBAA+1
- LCN 1 SET EXIT CONDITION
- IBA SUBR ENTRY/EXIT
- LDM IBAA RESTORE PREVIOUS DATA
- STI T3
- LDM IBAA+1
- STM 1,T3
- LDC 100*5 INCREMENT BUFFER ADDRESS
- RAD T3
- ADC -BFMS CHECK BUFFER FULL
- MJN IBA1 IF BUFFER NOT FULL
- UJN IBAX EXIT
- IBAA CON 0,0 DATA SAVE AREA
- LBM SPACE 4,15
- ** LBM - LOAD BUFFER MEMORY.
- *
- * ENTRY (A) = ADDRESS OF START OF BUFFER.
- *
- * EXIT (BL) = BUFFER LIMIT ADDRESS.
- * (ER) = BUFFER EOR/EOF/EOI STATUS.
- * (DPPB - DPPB+1) = SRU ACCUMULATOR INCREMENTED.
- * BUFFER FILLED OR EOR/EOF/EOI ENCOUNTERED.
- * CHANNEL DROPPED.
- * TRACK INTERLOCK CLEARED, IF SET.
- * TO *SCS* IF ERROR FLAG SET.
- *
- * USES T3, BL, ER, DPPB - DPPB+1.
- *
- * CALLS CIS, IBA, RNS, SCS.
- *
- * MACROS ENDMS, PAUSE.
- LBM SUBR ENTRY/EXIT
- STD T3 SET BUFFER FWA
- ADN 2 SET INITIAL BUFFER LIMIT
- STD BL
- UJN LBM2
- LBM1 RJM IBA INCREMENT BUFFER ADDRESS
- PJN LBM4 IF BUFFER FULL
- LBM2 LDN IMLL INCREMENT MASS STORAGE ACCUMULATOR
- RAM DPPB+1
- SHN -14
- RAM DPPB
- AOM DPPC
- LDD T3 READ NEXT SECTOR
- RJM RNS
- SHN 2 ADJUST BUFFER LIMIT ADDRESS
- ADD T1
- RAD BL
- LDD T1 SET EOR/EOF/EOI STATUS
- SHN -6
- STD ER
- NJN LBM1 IF NOT EOR/EOF/EOI
- LBM3 LDM IBAA RESTORE BASHED DATA
- STI T3
- LDM IBAA+1
- STM 1,T3
- LBM4 ENDMS
- RJM CIS CLEAR INTERLOCK STATUS
- PAUSE
- LDD CM+1 CHECK ERROR FLAG
- ZJN LBM5 IF ERROR FLAG NOT SET
- LJM SCS SET COMPLETE STATUS
- LBM5 LJM LBMX RETURN
- PDE SPACE 4,25
- ** PDE - PROCESS DIRECTORY ENTRY.
- *
- * ENTRY (T3) = ADDRESS OF DIRECTORY ENTRY.
- * (CL) = LENGTH OF CENTRAL MEMORY DIRECTORY.
- * (DI) = CURRENT LENGTH REQUIRED FOR DIRECTORY.
- * (DL) = USER SPECIFIED DIRECTORY LENGTH.
- * (TI - TI+1) = BASE RANDOM ADDESS OF LIBRARY.
- * (PDEB) = INDEX TO LIBRARY FILE HEADER IN DIRECTORY.
- * (DIRA - DIRA+4) = FIRST WORD OF DIRECTORY ENTRY.
- *
- * EXIT IF ENTRY FOUND IN DIRECTORY.
- * NO CHANGE.
- * IF ENTRY NOT FOUND AND NO DIRECTORY OVERFLOW.
- * (CL) UPDATED TO REFLECT ENTRY LENGTH.
- * (DI) UPDATED TO REFLECT ACTUAL DIRECTORY LENGTH.
- * ENTRY WRITTEN TO DIRECTORY.
- * IF ENTRY NOT FOUND AND DIRECTORY OVERFLOW.
- * (DI) UPDATED TO REFLECT ACTUAL DIRECTORY LENGTH.
- * ERROR CODE *IDS* SET IN RESPONSE.
- *
- * USES T1, T3, CL, DI, DL.
- *
- * CALLS SFE.
- * PROCESS DIRECTORY OVERFLOW.
- PDE6 LDD T1 ADVANCE ACTUAL DIRECTORY SPACE REQUIRED
- RAD DI
- LDM DIRA CHECK IF FILE HEADER PRESENT
- ZJN PDEX IF NO FILE HEADER
- LDN 0 CLEAR FILE HEADER
- STM DIRA
- PDE SUBR ENTRY/EXIT
- LDD CL
- ZJN PDE1 IF CENTRAL DIRECTORY EMPTY
- RJM SFE SEARCH FOR DUPLICATE ENTRY
- ZJN PDEX IF ENTRY FOUND
- PDE1 LDN 2 SET DIRECTORY ENTRY LENGTH
- STD T1
- LDM DIRA
- ZJN PDE2 IF NO FILE HEADER REQUIRED
- AOD T1
- PDE2 LDD DL
- PDEA EQU *-1
- *PDE2 UJN PDE6 (DIRECTORY OVERFLOW)
- SBD CL
- SBD T1
- PJN PDE3 IF WITHIN DIRECTORY
- LDM PDED
- STM PDEA
- ERROR IDS INSUFFICIENT DIRECTORY SPACE
- LJM PDE6 UPDATE REQUIRED DIRECTORY LENGTH
- PDE3 LDD T1 ADVANCE CENTRAL MEMORY DIRECTORY LENGTH
- RAD CL
- LDD T3 SET CAPSULE NAME ADDRESS
- STM PDEC
- LDC * SET FILE INDEX
- PDEB EQU *-1
- STM 4,T3
- LDM 7,T3 SET ENTRY LENGTH
- SHN -6
- STM DIRB+4
- LDM 6,T3
- SHN 6
- RAM DIRB+4
- SHN -14
- STM DIRB+3
- LDD TI+1 SET RANDOM ADDRESS OF CAPSULE
- ADM 11,T3
- SHN 14
- STM DIRB+2 SAVE UPPER 12 BITS
- SHN -6
- SCN 77
- RAM DIRB+3
- LDD TI
- ADM 10,T3
- SHN 6
- RAM DIRB+2
- LDN 0 SET CORE ADDRESS
- STM DIRB+1
- LDC 4000
- STM DIRB
- LDM DIRA CHECK TWO OR THREE WORD ENTRY
- ZJN PDE4 IF TWO WORD ENTRY
- * WRITE THREE WORD DIRECTORY ENTRY.
- LDCA DA WRITE HEADER WORD TO DIRECTORY
- ADD DI ADD INDEX
- CWM DIRA,ON FILE HEADER
- UJN PDE5 WRITE DIRECTORY
- * WRITE TWO WORD DIRECTORY ENTRY.
- PDE4 LDCA DA WRITE DIRECTORY
- ADD DI ADD INDEX
- PDE5 CWM **,ON CAPSULE NAME
- PDEC EQU *-1
- CWM DIRB,ON POSITION INFORMATION
- LJM PDE6 UPDATE REQUIRED DIRECTORY LENGTH
- PDED BSS 0
- LOC PDEA
- UJN PDE6
- LOC *O
- SCP SPACE 4,25
- ** SCP - SEARCH *CLD* FOR PROCEDURE RECORDS.
- * SCP SEARCHES THE *CLD* FOR A SPECIFIED PROCEDURE
- * RECORD AND THEN SETS UP THE ENTRY CONDITIONS FOR
- * *PDE* TO PROCESS THE DIRECTORY ENTRY.
- *
- * ENTRY (AB - AB+4) = NAME LEFT JUSTIFIED, ZERO FILLED.
- *
- * EXIT (TI - TI+1) = 0.
- * (PDEB) = 0.
- * (DIRA - DIRA+4) = SYSTEM LIBRARY DIRECTORY HEADER.
- * (T3) = *BUF*, WHERE *BUF* CONTAINS THE *CLD* ENTRY IN
- * THE FOLLOWING FORMAT.
- *
- *T BUF 42/PROCEDURE NAME, 18/0
- *T BUF+1 36/0, 24/RANDOM ADDRESS BIAS
- *
- * USES T3, T5, T6, TI - TI+1, PDEB, DIRA - DIRA+4.
- *
- * CALLS CLD.
- SCP SUBR ENTRY/EXIT
- LDN ZERL CLEAR DIRECTORY ENTRY
- CRM DIRA,ON
- LCN 0 FORM SYSTEM LIBRARY DIRECTORY HEADER
- STM DIRA
- RJM CLD SEARCH CENTRAL LIBRARY DIRECTORY
- ZJN SCPX IF ENTRY NOT FOUND
- CRM BUF+5,ON READ PST ENTRY
- LDN 0 CLEAR ALTERNATE EQ POINTER
- STD T5
- LDD MA SET ENTRY POINT NAME IN BUFFER
- CWD AB
- CRM BUF,ON
- LDC BUF SET UP POINTER TO ENTRY
- STD T3
- LDM BUF+3
- SCN 77
- STM BUF+3
- LDN 0
- STM BUF+4
- STM BUF+1*5+0
- STM BUF+1*5+1
- STM BUF+1*5+2
- STD TI
- STD TI+1
- STM PDEB
- LDM BUF+1*5+3
- LPN 77
- STM BUF+1*5+3
- LDN 1
- LJM SCPX RETURN
- SCS SPACE 4,15
- ** SCS - SET COMPLETE STATUS.
- *
- * ENTRY (DI) = ACTUAL LENGTH OF DIRECTORY REQUIRED.
- * (SCSA) = CURRENT STATUS CODE.
- * (IR+3 - IR+4) = FET ADDRESS.
- *
- * EXIT STATUS SET IN FIRST WORD OF FET.
- * UPDATED DIRECTORY LENGTH RETURNED.
- * LOCAL FILE SET NOT BUSY IF PRESENT.
- *
- * USES GN - GN+4, CM - CM+4, FS - FS+4.
- *
- * CALLS DPP.
- *
- * MACROS LDCA.
- SCS LDC 0 SET STATUS CODE
- SCSA EQU *-1
- SHN 11 POSITION STATUS RESPONSE
- ADN 1 SET COMPLETE BIT
- STD GN+4
- SHN -14
- RAD GN+3
- LDCA IR+3 RETURN LENGTH OF DIRECTORY
- ADN 1
- CRD CM
- LDD CM+2 SET DIRECTORY LENGTH
- SCN 77
- SHN 6
- LMD DI
- SHN -6
- STD CM+2
- LDD DI
- SHN 6
- LMD CM+3
- SCN 77
- LMD CM+3
- STD CM+3
- LDCA IR+3 RETURN STATUS
- CWD GN
- ADN 1 RETURN UPDATED DIRECTORY LENGTH
- CWD CM
- LDN 0 SELECT DROP PP
- RJM DPP UPDATE ACCOUNTING
- LJM PPR EXIT TO PP RESIDENT
- SFE SPACE 4,10
- ** SFE - SEARCH FOR ENTRY IN CENTRAL MEMORY DIRECTORY.
- *
- * ENTRY (T3) = INDEX TO CAPSULE NAME.
- * (CL) = LENGTH OF CENTRAL MEMORY DIRECTORY.
- *
- * EXIT (A) .EQ. 0 IF MATCHING ENTRY FOUND.
- * (A) .NE. 0 IF NO MATCH FOUND.
- *
- * USES T1, CM - CM+4.
- SFE4 LDD CM+1 COMPARE BYTE 2 OF CAPSULE NAMES
- LMM 1,T3
- NJN SFE3 IF BYTES DO NOT COMPARE
- LDD CM+2 COMPARE BYTE 3 OF CAPSULE NAMES
- LMM 2,T3
- NJN SFE3 IF BYTES DO NOT COMPARE
- LDD CM+3
- LMM 3,T3
- SCN 77
- NJN SFE3 IF CHARACTERS DO NOT COMPARE
- SFE SUBR ENTRY/EXIT
- LDN 0 INITIALIZE DIRECTORY OFFSET
- STD T1
- SFE1 AOD T1 INCREMENT DIRECTORY OFFSET
- SFE2 LDCA DA GET DIRECTORY ENTRY
- ADD T1
- CRD CM
- LDD CM
- SHN 6
- MJN SFE1 IF FILE SPECIFICATION ENTRY
- * COMPARE DIRECTORY ENTRY.
- SHN -6
- LMI T3 COMPARE NAMES
- ZJN SFE4 IF BYTES COMPARE
- SFE3 LDN 2 INCREMENT DIRECTORY OFFSET
- RAD T1
- SBD CL
- MJN SFE2 IF MORE CAPSULES TO PROCESS
- LDN 1 SET EXIT CONDITION
- UJN SFEX RETURN
- SIS SPACE 4,15
- ** SIS - SET INTERLOCK STATUS.
- *
- * ENTRY (SISA) = TRACK NUMBER IF INTERLOCK REQUIRED.
- *
- * EXIT (CISA) = TRACK NUMBER IF INTERLOCK SET.
- * (T6) SAVED AND RESTORED.
- * TO *SCS* IF ERROR FLAG SET.
- *
- * USES T6.
- *
- * CALLS STI, SCS.
- SIS1 LDD T6 SET TRACK INTERLOCKED STATUS
- STM CISA
- LDC 0 RESTORE CURRENT TRACK
- SISB EQU *-1
- STD T6
- SIS SUBR ENTRY/EXIT
- LDD T6
- STM SISB
- LDC 0 CHECK INTERLOCK REQUIRED STATUS
- SISA EQU *-1
- ZJN SISX IF NO INTERLOCK REQUIRED
- STD T6
- RJM STI SET TRACK INTERLOCK
- ZJN SIS1 IF ERROR FLAG NOT SET
- LJM SCS SET COMPLETE STATUS
- VOT SPACE 4,10
- ** VOT - VALIDATE *OPLD* TABLE.
- *
- * ENTRY (T3) = BUFFER ADDRESS.
- * (BL) = BUFFER LIMIT ADDRESS.
- *
- * EXIT (A) .LT. 0 IF ERROR IN TABLE.
- * (T2) = *OPLD* TABLE BASE ADDRESS.
- VOT1 LCN 1 SET EXIT CONDITION
- VOT SUBR ENTRY/EXIT
- LDM 2,T3 CHECK PREFIX TABLE
- LMC 7700
- NJN VOT1 IF NOT 7700 TABLE
- LDM 3,T3 SET *OPLD* TABLE ADDRESS
- ADN 1
- STD T2
- SHN 2
- RAD T2
- ADN 2
- ADD T3
- STD T2
- ADN 3*5-1 CHECK MINIMUM *OPLD* IN BUFFER
- SBD BL
- PJN VOT1 IF *OPLD* NOT IN BUFFER
- LDI T2 CHECK *OPLD* TABLE
- LMC 7000
- NJN VOT1 IF NOT *OPLD* TABLE
- UJN VOTX RETURN
- VUT SPACE 4,10
- ** VUT - VALIDATE *ULIB* TABLES.
- *
- * ENTRY (T3) = BUFFER ADDRESS.
- * (BL) = BUFFER LIMIT ADDRESS.
- *
- * EXIT (A) = NUMBER OF GROUP NAMES IN *ULIB*.
- * (A) = 1 IF FUNCTION CODE 404.
- * (A) = 0 IF ERROR IN *ULIB* TABLE.
- * (T2) = *ULIB* TABLE BASE ADDRESS.
- VUT2 LDN 0 SET EXIT CONDITION
- VUT SUBR ENTRY/EXIT
- LDM 2,T3 CHECK PREFIX TABLE
- LMC 7700
- NJN VUT2 IF NOT 7700 TABLE
- LDM 3,T3 SET PREFIX TABLE LENGTH
- ADN 1
- STD T2
- SHN 2
- RAD T2
- ADN 2
- ADD T3
- STD T2
- ADN 2*5-1 CHECK MINIMUM *ULIB* IN BUFFER
- SBD BL
- PJN VUT2 IF *ULIB* NOT IN BUFFER
- LDI T2 CHECK *ULIB* RECORD
- LMC 7600
- NJN VUT2 IF NOT *ULIB* RECORD
- VUTA LDN 0
- * LDN 1 (FUNCTION CODE 404)
- ZJN VUT1 IF NOT FUNCTION CODE 404
- UJN VUTX RETURN
- VUT1 LDM 1,T2 SET NUMBER OF GROUP NAMES IN *ULIB*
- UJN VUTX RETURN
- TITLE COMMON DECKS AND BUFFERS.
- COMMON SPACE 4,15
- ** COMMON DECKS.
- *CALL COMPCLD
- *CALL COMPCRA
- *CALL COMPSAF
- *CALL COMPSFB
- *CALL COMPSTI
- *CALL COMPIRA
- SPACE 4,20
- USE //
- ** TLBD - GLOBAL LIBRARY SET.
- TLBD EQU *
- TLBDL EQU TLBD+3*5
- * RETURNED DIRECTORY ENTRY.
- DIRA EQU TLBDL
- DIRB EQU DIRA+1*5
- ** BUF - MASS STORAGE BUFFER.
- BUF EQU DIRB+1*5
- .1 SET BFMS+1-BUF-2
- ERRZR .1/500 MAXIMUM SECTORS FOR BUFFER
- ERRNG .1-.1/500*500 BYTES REMAINING BEFORE OVERFLOW
- TITLE PRESET.
- PRS SPACE 4,20
- ** PRS - PRESET.
- *
- * ENTRY (IR - IR+4) = *LDD* CALL.
- *
- * EXIT (DI) = 0.
- * (CL) = 0.
- * (GN - GN+4) = GROUP NAME.
- * (DL) = USER SPECIFIED DIRECTORY LENGTH.
- * (DA) = DIRECTORY BASE ADDRESS.
- * (UL - UL+1) = USER SPECIFIED LIBLIST ADDRESS.
- * (LNLA) = FNT FWA.
- * TO *ERR* IF ILLEGAL PARAMETER OR ADDRESS.
- *
- * USES CL, CM - CM+4, DA, DI, DL, FA, GN - GN+4,
- * UL - UL+1, LNLA.
- *
- * CALLS CRS.
- *
- * MACROS ERROR, LDCA.
- PRS SUBR ENTRY/EXIT
- LDN 0
- STD DI CLEAR DIRECTORY INDEX
- STD FA CLEAR FNT ADDRESS
- STD CL CLEAR CENTRAL DIRECTORY LENGTH
- LDD IR+3 SET RECALL OPTION
- SHN -5
- LPN 1
- RAM PRSA
- LDD IR+3 CHECK PARAMETER ADDRESS
- STM PRSB SAVE RECALL PARAMETERS
- LPN 37
- STD IR+3
- SHN 14
- LMD IR+4
- SBN 2
- MJN PRS1 IF ILLEGAL ADDRESS
- ADN 1+2
- SHN -6
- SBD FL
- MJN PRS2 IF PARAMETER ADDRESS WITHIN FL
- PRS1 ERROR ARG * ARGUMENT ERROR.*
- PRS2 RJM CRS CHECK RECALL STATUS
- ZJN PRS1 IF NOT CALLED WITH AUTO RECALL
- LDCA IR+3 READ GROUP NAME AND FUNCTION CODE
- CRD GN
- ADN 1 READ SECOND WORD OF PARAMETER BLOCK
- CRD CM
- LDD GN+3 CLEAR STATUS CODE
- SCN 77
- STD GN+3
- LDD GN+4 CHECK FUNCTION CODE
- LPC 776
- ZJN PRS4 IF LEGAL FUNCTION CODE
- LMC 402 CHECK FOR FUNCTION CODE 402
- ZJN PRS2.5 IF FUNCTION CODE IS 402
- LMK 404&402 CHECK FOR FUNCTION CODE 404
- NJN PRS3 IF ILLEGAL FUNCTION CODE
- * SET FUNCTION CODE 404 PROCESSING.
- AOM LDDA
- AOM PGMA
- AOM SFGA
- AOM VUTA
- UJN PRS4
- * SET FUNCTION CODE 402 PROCESSING.
- PRS2.5 AOM LDDB
- UJN PRS4 CONTINUE PROCESSING
- PRS3 ERROR ILF ILLEGAL FUNCTION CODE
- PRS4 LDD CM+2 SET LENGTH OF USER SPECIFIED DIRECTORY
- SHN 6
- STD DL
- LDD CM+3
- SHN -6
- RAD DL
- LDD CM+3 SET DIRECTORY BASE ADDRESS
- LPN 37
- STD DA
- SHN 14
- ADD CM+4
- STD DA+1
- SBN 2 CHECK DIRECTORY ADDRESS
- MJN PRS5 IF ILLEGAL ADDRESS
- ADN 2-1
- ADD DL
- SHN -6
- SBD FL
- MJN PRS6 IF DIRECTORY ADDRESS WITHIN FL
- PRS5 ERROR IAD ILLEGAL DIRECTORY ADDRESS
- PRS6 LDD CM+2 SET USER LIBLIST ADDRESS
- SHN -6
- STD UL+1
- LDD CM+1
- SHN 6
- RAD UL+1
- SHN -14
- LPN 37
- STD UL
- SHN 14 CHECK USER SPECIFIED LIBLIST ADDRESS
- LMD UL+1
- ZJN PRS9 IF NO LIBLIST ADDRESS SPECIFIED
- SBN 2
- MJN PRS7 IF ILLEGAL ADDRESS
- ADN 2
- SHN -6
- SBD FL
- MJN PRS9 IF USER LIBLIST ADDRESS WITHIN FL
- PRS7 ERROR ILA ILLEGAL LIBLIST ADDRESS
- PRS8 LJM PRSX RETURN
- PRS9 LDN 0 CHECK RECALL STATUS
- PRSA EQU *-1
- * LDN 1 (RECALL OPTION)
- ZJN PRS8 IF NOT RECALL OPTION
- LDD IR+2 SET DIRECTORY LENGTH PARAMETER
- STD DI
- STD CL CL = MIN(DL,DI)
- SBD DL
- MJN PRS10 IF (DL) .LT. (DI)
- LDD DL
- STD CL
- PRS10 LDCA IR+3 SET PREVIOUS ERROR CODES
- CRD CM
- LDD CM+3
- SHN 14
- ADD CM+4
- SHN -11
- STM SCSA
- LDC * SET LIBRARY PARAMETERS
- PRSB EQU *-1
- * LDC IR+3 (RECALL PARAMETERS)
- SHN -6
- LPN 17
- SHN 1
- STM GNLE
- SHN -1
- RAM GNLA
- LDD CM+4 CHECK BYTE POSITION
- LPN 1
- ZJN PRS11 IF NO REPOSITION NEEDED
- LDC SHNI+0
- STM GNLC
- AOM GNLE
- PRS11 LDM PRSB SET LOCAL USER LIBRARY PARAMETERS
- SHN -12
- ZJN PRS12 IF NO LOCAL USER LIBRARIES
- RAM CRPA SET LIBRARY ORDINAL POSITION
- LPN 77 SET LOCAL USER LIBRARY OFFSET
- STD CM
- SHN 2
- RAD CM
- LDC TLBDL
- SBD CM
- STM GNLB
- LDC LB2W
- STM GNLD
- PRS12 LJM PRSX RETURN
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMPCRS
- TTL LDQ - LOAD QUICKLY.
- TITLE
- IDENT LDQ,/LDQ/LDQ
- *COMMENT FDL - LOAD QUICKLY.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- SPACE 4,5
- *** LDQ - LOAD QUICKLY.
- * GREGG TOWNSEND. 76/02/04.
- * J. J. EIKUM. 76/04/01.
- SPACE 4,10
- *** LDQ IS USED TO QUICKLY READ A CAPSULE OR OVERLAY INTO
- * THE FIELD LENGTH OF A JOB, GIVEN THE RANDOM ADDRESS OF THE
- * CAPSULE OR OVERLAY ON A MASS STORAGE DEVICE. THE PREFIX
- * TABLE IS REMOVED AND THE REST OF THE RECORD IS TRANSFERRED
- * WITHOUT MODIFICATION.
- SPACE 4,10
- *** CALL.
- *
- *
- *T, 18/ *LDQ*,24/ ,18/ ADDR
- *
- * ADDR ADDRESS OF A FOUR-WORD PARAMETER BLOCK:
- *
- *T ADDR 42/ *FILE*,9/STAT,9/FUNC
- *T, 42/ *GRPNAME*,18/0
- *T, 42/ *NAME*,18/FWA
- *T, 24/0,18/PRU,18/LWA+1
- *
- * *FILE* FILE FROM WHICH TO LOAD. IF BITS 59-48 = 7777,
- * THEN LOAD FROM THE SYSTEM.
- * STAT STATUS RETURNED BY LDQ.
- * 000 FUNCTION COMPLETED SUCCESSFULLY.
- * 001 ILLEGAL FUNCTION.
- * 002 CM BUFFER NOT COMPLETELY WITHIN FIELD LENGTH.
- * 003 NO SUCH FILE, NOT MASS STORAGE, OR EXECUTE-ONLY.
- * 004 PRU NUMBER OUTSIDE FILE BOUNDARIES.
- * 005 WRONG PROGRAM OR GARBAGE FOUND AT SPECIFIED PRU.
- * 006 INSUFFICIENT FWA-LWA SPACE TO HOLD PROGRAM.
- * FUNC FUNCTION REQUEST. LDQ WILL ADD 1 WHEN FINISHED.
- * 000 LOAD CAPSULE.
- * 002 LOAD OVERLAY.
- * *GRPNAME* NAME OF CAPSULE GROUP. IGNORED FOR OVERLAY LOAD.
- * *NAME* NAME OF CAPSULE OR OVERLAY TO BE LOADED.
- * FWA FIRST WORD ADDRESS OF LOADABLE AREA.
- * LWA+1 UPPER LIMIT OF LOADABLE AREA.
- * PRU PRU ADDRESS OF PROGRAM TO BE LOADED.
- SPACE 4,15
- *** DAYFILE MESSAGES.
- *
- * * LDQ - ARGUMENT ERROR - XXXXXX.* = FET ADDRESS .LT. 2 OR
- * .GT. FL-4.
- *
- * * LDQ - I/O SEQUENCE ERROR - FILENAM AT XXXXXX.* = MULTIPLE
- * CONCURRENT FUNCTIONS WERE ATTEMPTED ON FILE *FILENAM*.
- *
- * * LDQ - DEVICE ERROR - FILENAM AT XXXXXX.* = AN UNRECOVERED
- * DEVICE ERROR WAS ENCOUNTERED ON FILE *FILENAM*.
- *
- * FOR ALL MESSAGES, XXXXXX IS THE ADDRESS OF THE *LDD*
- * PARAMETER BLOCK.
- LDQ TITLE MAIN PROGRAM.
- QUAL LDQ
- ** LDQ - MAIN PROGRAM.
- ORG PPFW
- LDQ RJM PRS
- RJM RFS READ FIRST SECTOR
- RJM CPY COPY PROGRAM
- * UJN CFN
- CFN SPACE 4,10
- ** CFN - COMPLETE FUNCTION.
- CFN AOD FN+4 SET PARAMETER BLOCK COMPLETE
- LDCA IR+3 REWRITE FIRST PARAMETER WORD
- CWD FN
- * UJN DPP
- DPP SPACE 4,10
- ** DPP - DROP PP.
- DPP LDD FA
- ZJN DPP1 IF NOT LOCAL FILE LOAD
- AOD FS+4
- NFA FA,R SET FST NOT BUSY
- ADN FSTL
- CWD FS
- DPP1 LDD MA STORE *UADM* PARAMETER BLOCK
- CWM DPPA,ON
- LDN 1 SET WORD COUNT
- STD CM+1
- LDN 0 SET DROP PP FLAG
- STD CM+2
- MONITOR UADM UPDATE ACCOUNTING AND DROP PP
- LJM PPR
- DPPA CON AISS SUB FUNCTION
- CON IOAW WORD TO UPDATE
- CON 40D*100+20D FIELD TO UPDATE
- CON 0,0 INCREMENT
- TITLE SUBROUTINES.
- SPACE 4,10
- ** COMMON SUBROUTINES.
- COMMON
- CPN SPACE 4,12
- ** CPN - COMPARE NAMES.
- *
- * ENTRY (A) = ADDRESS OF NAME 1.
- * (GN - GN+3) = NAME 2.
- *
- * EXIT (A) = 0 IF SEVEN CHARACTERS MATCH.
- *
- * USES T2.
- CPN SUBR ENTRY/EXIT
- STD T2
- LDI T2 COMPARE FIRST BYTES
- LMD GN
- NJN CPNX IF NOT EQUAL
- LDM 1,T2 COMPARE SECOND BYTES
- LMD GN+1
- NJN CPNX IF NOT EQUAL
- LDM 2,T2 COMPARE THIRD BYTES
- LMD GN+2
- NJN CPNX IF NOT EQUAL
- LDM 3,T2 COMPARE SEVENTH CHARACTERS
- LMD GN+3
- SCN 77
- UJN CPNX RETURN WITH (A)=0 ONLY IF MATCH
- CPY SPACE 4,25
- ** CPY - COPY PROGRAM.
- *
- * ENTRY (T1) = VALID WORD COUNT.
- * (T3) = ADDRESS OF WORDS IN PP BUFFER.
- * (T5) = EST ORDINAL.
- * (T6) = TRACK.
- * (T7) = SECTOR.
- * (ER) = EOR FLAG.
- * (FW - FW+1) = FWA OF CM BUFFER.
- * (BS - BS+1) = BUFFER SIZE.
- * (BFMS - BFMS+501) = FIRST SECTOR.
- *
- * EXIT TO *ERR* IF CM BUFFER TOO SMALL.
- * CHANNEL DROPPED.
- *
- * USES T1, T3, T6, T7, CM - CM+4, FW - FW+1, BS - BS+1,
- * EC, ER.
- *
- * CALLS CIS, DDT, MSR, RNS.
- *
- * MACROS ENDMS, ERROR.
- * PROCESS DIRECT TRANSFER COPY.
- CPY4 LDD FW SET *DDT* PARAMETERS
- ADD BS
- SHN 14
- ADD FW+1
- ADD BS+1
- SHN 14
- STD CM+2
- SHN -6
- SCN 77
- ADD FW
- STD CM+3
- LDD FW+1
- STD CM+4
- LDC RDDS*10000+7777
- RJM DDT DO DIRECT TRANSFER
- SHN -14
- STD EC SAVE STATUS
- LDD T4 NUMBER OF SECTORS TRANSFERED
- RAM DPPA+4 UPDATE ACCOUNT INCREMENT
- ERRNZ IMLL-1 CODE DEPENDS ON VALUE
- SHN -14
- RAM DPPA+3
- LDD EC
- ZJN CPY6 IF NO ERRORS
- SHN 21-4
- MJN CPY5 IF INSUFFICIENT FL TO LOAD
- LDM RDCT
- RJM MSR PROCESS MASS STORAGE ERROR
- CPY5 ENDMS
- ERROR IBF INSUFFICIENT BUFFER
- CPY6 ENDMS
- RJM CIS CLEAR INTERLOCK STATUS
- CPY SUBR ENTRY/EXIT
- CPY1 LDD BS DECREMENT BUFFER SIZE
- SHN 14
- LMD BS+1
- SBD T1
- MJN CPY5 IF BUFFER TOO SMALL
- STD BS+1
- SHN -14
- STD BS
- LDD T3 SET PP BUFFER ADDRESS
- STM CPYA
- LDCA FW WRITE BUFFER TO CM
- CWM **,T1
- CPYA EQU *-1
- LDD T1 UPDATE FWA
- RAD FW+1
- SHN -14
- RAD FW
- LDD ER
- NJN CPY3 IF EOR NOT READ
- CPY2 LJM CPY6 EXIT
- CPY3 LDC BFMS READ NEXT SECTOR
- CPYC EQU *-1
- * LJM CPY4 (DIRECT TRANSFER COPY)
- RJM RNS
- SHN -6 SAVE EOR FLAG
- STD ER
- LDN IMLL INCREMENT PRU COUNT
- RAM DPPA+4
- SHN -14
- RAM DPPA+3
- LDD T1
- ZJN CPY2 IF EMPTY PRU
- LDN 2 ADJUST FWA TO SKIP HEADER
- RAD T3
- LJM CPY1 LOOP
- ERR SPACE 4,10
- ** ERR - SET ERROR AND EXIT.
- *
- * ENTRY (A) = ERROR CODE.
- * (DPPA+3 - DPPA+4) = MASS STORAGE INCREMENT.
- *
- * EXIT TO *2LD* IF FATAL ERROR.
- * TO *CFN* IF NON-FATAL ERROR.
- * (BITS 11-13 OF FN+4) = STATUS.
- *
- * USES EC, SI, SI+1.
- *
- * CALLS CFN, CIS.
- ERR SUBR
- STD EC SAVE ERROR CODE
- RJM CIS CLEAR INTERLOCK STATUS
- ERR1 LDD EC CHECK ERROR TYPE
- SBN /ERR/FERT
- MJN ERR2 IF NON-FATAL ERROR
- LDM DPPA+3 SET ACCOUNTING INCREMENT
- STD SI
- LDM DPPA+4
- STD SI+1
- EXECUTE 2LD PROCESS ERROR
- ERR2 LDD EC SET STATUS FIELD
- SHN 11
- RAD FN+4
- LJM CFN EXIT
- RFS SPACE 4,25
- ** RFS - READ FIRST SECTOR.
- *
- * ENTRY (T4) = CHANNEL.
- * (T5) = EST ORDINAL.
- * (T6) = TRACK.
- * (T7) = SECTOR.
- * (GN - GN+3) = OVERLAY/CAPSULE NAME.
- *
- * EXIT TO *ERR* IF ERROR DETECTED.
- * (T1) = VALID WORD COUNT.
- * (T3) = ADDRESS OF WORDS IN PP BUFFER.
- * (T6) = CURRENT TRACK.
- * (T7) = NEXT SECTOR.
- * (ER) = 0 IF EOR.
- *
- * USES T2, CM - CM+4, GN - GN+4.
- *
- * CALLS CPN, RNS.
- *
- * MACROS ENDMS, ERROR.
- RFS SUBR ENTRY/EXIT
- LDN IMLL INCREMENT PRU COUNT
- RAM DPPA+4
- LDC BFMS READ FIRST SECTOR
- RJM RNS
- SHN -6 SAVE EOR FLAG
- STD ER
- LDN 2 ADJUST BUFFER POINTER TO SKIP HEADER
- RAD T3
- LDI T3 CHECK FIRST WORD
- LMC 7700
- NJN RFS1 IF NOT 7700 TABLE (ERROR)
- LDD T3 COMPARE CAPSULE/OVERLAY NAME TO EXPECTED
- ADN 5
- RJM CPN
- NJN RFS1 IF NOT SAME NAME
- LDM 1,T3 SKIP 7700 TABLE
- ADN 1 ENSURE 7700 HEADER IN SECTOR
- STD T2
- SHN 2
- ADD T2
- RAD T3
- LDD T1 ADJUST WORD COUNT
- SBD T2
- MJN RFS1 IF WORD COUNT IN 77 TABLE .GT. SECTOR SIZE
- STD T1
- LDD FN+4
- ZJN RFS2 IF LOADING A CAPSULE
- LDI T3
- SHN -6
- SBN 50
- MJN RFS1 IF .LT. 50XX TABLE
- SBN 52-50
- ZJN RFS1 IF 52XX TABLE
- SBN 54-52+1
- PJN RFS1 IF .GT. 54XX TABLE
- LJM RFSX VALID OVERLAY FORMAT, EXIT
- RFS1 ENDMS
- ERROR WPR WRONG PROGRAM
- RFS2 LDI T3 CHECK HEADER
- LMC 6000
- NJN RFS1 IF NOT CAPSULE
- LDCA IR+3 READ GROUP NAME
- ADN 1
- CRD GN
- LDD T3
- ADN 5
- RJM CPN COMPARE WITH ACTUAL READ
- NJN RFS1 IF NOT SAME NAME
- LJM RFSX RETURN
- SPACE 4
- ** COMMON DECKS.
- *CALL COMPDDT
- PRS TITLE PRESET.
- ** PRS - PRESET.
- *
- * ENTRY (IR - IR+4) = LDQ CALL.
- *
- * EXIT TO *ERR* IF ERROR DETECTED.
- * (FA) = 0 IF SYSTEM FILE.
- * (FA) = FNT ADDRESS IF LOCAL FILE.
- * (FS - FS+4) = FST ENTRY IF LOCAL FILE.
- * (FN - FN+3) = FILE NAME.
- * (FN+4) = FUNCTION CODE.
- * (FW - FW+1) = FWA OF BUFFER.
- * (BL - BL+1) = BUFFER LENGTH.
- * (GN - GN+3) = OVERLAY/CAPSULE NAME.
- * (T4) = CHANNEL.
- * (T5) = EST ORDINAL.
- * (T6) = TRACK.
- * (T7) = SECTOR.
- * CHANNEL RESERVED AND DISK POSITIONED.
- * ERROR PROCESSING OPTION SET.
- *
- * USES CM - CM+4, GN - GN+4.
- *
- * CALLS ALF, ASF, CRA, IRA, SMS, POS.
- PRS SUBR ENTRY/EXIT
- LDN 0
- STD FA
- LDD IR+3 CHECK PARAMETER BLOCK ADDRESS
- LPN 37
- STD IR+3
- SHN 14
- LMD IR+4
- SBN 2
- MJN PRS1 IF ILLEGAL ADDRESS
- ADN 3+2
- SHN -6
- SBD FL
- MJN PRS2 IF LEGAL ADDRESS
- PRS1 ERROR ARG * ARGUMENT ERROR.*
- PRS2 LDCA IR+3 READ FILE NAME AND FUNCTION CODE
- CRD FN
- ADN 2 READ FWA OF BUFFER
- CRD CM
- ADN 1 READ RANDOM INDEX AND LWA
- CRD GN
- LDD FN+3 CLEAR STATUS FIELD
- SCN 77
- STD FN+3
- LDD FN+4
- LPC 776
- STD FN+4
- SHN -1
- SBN 2
- MJN PRS3 IF LEGAL FUNCTION CODE
- ERROR ILF ILLEGAL FUNCTION
- PRS3 LDD CM+3 SET FWA OF BUFFER
- LPN 37
- STD FW
- SHN 14
- LMD CM+4
- STD FW+1
- SBN 2
- MJN PRS4 IF ILLEGAL ADDRESS
- LDD GN+3 CHECK LWA+1 OF BUFFER
- LPN 37
- SHN 14
- LMD GN+4
- SBN 1
- SHN -6
- SBD FL
- MJN PRS5 IF LEGAL ADDRESS
- PRS4 ERROR IAD ILLEGAL ADDRESS
- PRS5 LDD GN+3 SET BUFFER LENGTH
- LPN 37
- SHN 14
- LMD GN+4
- SBD FW+1
- STD BS+1
- SHN -14
- SBD FW
- STD BS
- SHN 14
- LMD BS+1
- MJN PRS4 IF FWA .GT. LWA+1
- ZJN PRS4 IF FWA .EQ. LWA+1
- LDD GN+3 SET RANDOM INDEX
- SCN 77
- SHN 6
- LMD GN+2
- SHN 6
- ZJN PRS8 IF ILLEGAL RANDOM ADDRESS
- STD RI+1
- SHN -14
- LPN 77
- STD RI
- LDCA IR+3 READ OVERLAY/CAPSULE NAME
- ADN 2
- CRD GN
- * ACCESS FILE.
- LDD FN CHECK FILE TYPE
- LMC 7777
- ZJN PRS6 IF SYSTEM FILE
- RJM ALF ACCESS LOCAL FILE
- UJN PRS7
- PRS6 RJM ASF ACCESS SYSTEM FILE
- PRS7 RJM IRA INITIALIZE RANDOM ACCESS
- RJM CRA CONVERT RANDOM ADDRESS
- PJN PRS9 IF LEGAL RANDOM ADDRESS
- PRS8 ERROR IRA ILLEGAL RANDOM ADDRESS
- * RESERVE CHANNEL.
- PRS9 LDD FA
- NJN PRS10 IF NOT SYSTEM FILE
- SETMS READSYS ALLOW SYSTEM SELECTION OF EQUIPMENT
- UJN PRS11 CHECK IF DIRECT TRANSFER SUPPORTED
- * PRESET FOR DIRECT TRANSFER IF AVAILABLE.
- PRS10 SETMS IO
- PRS11 LDD CM+4
- SHN 3
- ADN DILL
- CRD CM
- LDD CM+3
- SHN 21-13
- PJN PRS12 IF DIRECT TRANSFER NOT AVAILABLE
- LDC CPY4 PRESET *CPY* FOR DIRECT TRANSFER
- STM CPYC
- LDC LJMI
- STM CPYC-1
- PRS12 LJM PRSX RETURN
- ALF SPACE 4,20
- ** ALF - ACCESS LOCAL FILE.
- *
- * ENTRY (FN - FN+3) = FILE NAME.
- *
- * EXIT TO *ERR* IF ERROR.
- * (T5) = EST ORDINAL.
- * (T6) = FIRST TRACK.
- * (FA) = FNT ADDRESS.
- * (FS - FS+4) = FST ENTRY.
- * TRACK INTERLOCK SET IF NEEDED.
- *
- * USES CM - CM+4, FN - FN+4, RI - RI+4, T0 - T6.
- *
- * CALLS ERR, SAF, SFB, STI.
- *
- * MACROS ERROR, NFA, SFA.
- ALF6 RJM SFB SET FILE BUSY
- ZJN ALF2 IF FILE SET BUSY
- ERROR IOS I/O SEQUENCE ERROR
- ALF SUBR ENTRY/EXIT
- LDD FN CLEAR UPPER BIT
- LPC 3777
- STD FN
- RJM SAF SEARCH FOR ASSIGNED FILE
- NJN ALF6 IF FILE FOUND
- ALF1 ERROR FNF FILE NOT FOUND
- ALF2 LDD CM+3 CHECK FILE STATUS
- LPN 4
- ZJN ALF3 IF NOT EXECUTE ONLY
- LDD CP CHECK VALID ACCESS
- ADC EOCW
- CRD T1
- LDD T1
- LMD FA
- NJN ALF1 IF NOT VALID ACCESS
- ALF3 NFA FA,R RESET FST INFORMATION
- ADN FSTL
- CRD FS
- LDD FS+2
- ZJN ALF1 IF EMPTY FILE
- LDD FS SET EST ORDINAL
- STD T5
- SFA EST READ EST ENTRY
- ADK EQDE
- CRD T0
- LDD T0 CHECK EQUIPMENT TYPE
- SHN 21-13
- PJN ALF1 IF NOT ON MASS STORAGE
- LDD FS+1 SET FIRST TRACK
- STD T6
- LDD CM+4 CHECK FOR TRACK INTERLOCK NEEDED
- SHN -6
- LMN PMFT
- NJN ALF5 IF NOT PERMANENT FILE
- LDD CM+3
- LPN 20
- ZJN ALF5 IF NOT M, A, RM, OR RA MODE
- RJM STI SET TRACK INTERLOCK
- ZJN ALF4 IF INTERLOCK SET AND ERROR FLAG NOT SET
- LJM DPP
- ALF4 LDD T6 SET TRACK INTERLOCKED STATUS
- STM CISA
- ALF5 LJM ALFX
- ASF SPACE 4,12
- ** ASF - ACCESS SYSTEM FILE.
- *
- * EXIT (T5) = EST ORDINAL.
- * (T6) = FIRST TRACK.
- *
- * USES CM - CM+4.
- ASF SUBR ENTRY/EXIT
- LDN FNTP READ FNT POINTER
- CRD CM
- LDD CM READ SYSTEM FILE FST
- SHN 14
- LMD CM+1
- ERRNZ SYFO SYSTEM FILE ORDINAL .NE. 0
- ADN FSTG
- CRD CM
- LDD CM+1 SET FIRST TRACK
- STD T6
- LDD CM SET SYSTEM EQUIPMENT
- STD T5
- UJN ASFX
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMPCRA
- *CALL COMPSAF
- *CALL COMPSFB
- *CALL COMPSTI
- *CALL COMPIRA
- TTL 2LD - PROCESS LDD/LDQ ERRORS.
- TITLE
- IDENT 2LD,PPFW
- QUAL 2LD
- *COMMENT FDL - ERROR PROCESSOR.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- ERP SPACE 4,10
- ** ERP - ERROR PROCESSOR.
- *
- * ENTRY (EC) = ERROR CODE.
- * (FA) = FNT ADDRESS IF LOCAL FILE.
- * (FA) = 0 IF SYSTEM FILE.
- * (SI - SI+1) = MASS STORAGE ACCOUNTING INCREMENT.
- * (FN - FN+3) = FILE NAME.
- * (IR - IR+1) = PP NAME.
- * (IR+3 - IR+4) = PARAMETER BLOCK ADDRESS.
- *
- * EXIT LOCAL FILE SET COMPLETE.
- * MESSAGE ISSUED.
- * ACCOUNTING UPDATED.
- * PPU DROPPED.
- *
- * USES T1, CM - CM+4.
- *
- * CALLS ACS, ANS, DFM.
- *
- * MACROS MONITOR, NFA, PAUSE.
- ORG PPFW
- ERP SUBR
- LDC BUF SET ADDRESS FOR PROCESSOR NAME
- STD T1
- LDN 1R ADD SPACE CHARACTER
- SHN 14
- ADD IR SET FIRST CHARACTER
- SHN 14
- STI T1
- LMI T1 SET LAST CHARACTERS
- ADD IR+1
- SHN 14
- STM BUF+1
- LDN 2 SET ASSEMBLY ADDRESS
- RAD T1
- LDN 0 SET BYTE BOUNDARY
- STI T1
- LDC =Z* - * ADD * - *
- RJM ACS
- LDD EC ADD MESSAGE
- SBN /ERR/FERT
- STD T2
- LDM TMSG,T2
- RJM ACS
- LDC =Z* - * ADD * - *
- RJM ACS
- LDD EC CHECK ERROR TYPE
- LMN /ERR/ARG
- ZJN ERP3 IF * ARGUMENT ERROR.*
- LDD FA
- NJN ERP1 IF LOCAL FILE
- LDC =Z*SYSTEM*
- UJN ERP2
- ERP1 LDD FN+3 TERMINATE FILE NAME
- SCN 77
- STD FN+3
- LDN FN ADD FILE NAME
- ERP2 RJM ACS
- LDC =Z* AT * ADD * AT *
- RJM ACS
- ERP3 LDD IR+3 ADD ADDRESS
- SHN 14
- LMD IR+4
- RJM ANS
- LDC =Z*.* ADD PERIOD
- RJM ACS
- LDC BUF ISSUE DAYFILE MESSAGE
- RJM DFM
- PAUSE CHECK ERROR FLAG
- LDD CM+1
- NJN ERP4 IF ERROR FLAG SET
- LDN PPET SET ERROR FLAG
- STD CM+1
- MONITOR CEFM
- ERP4 AOD FS+4 SET FST ENTRY COMPLETE
- LDD EC CHECK ERROR TYPE
- LMN /ERR/IOS
- ZJN ERP5 IF I/O SEQUENCE ERROR
- LDD FA
- ZJN ERP5 IF NO FST ADDRESS
- NFA FA,R
- ADN FSTL
- CWD FS
- ERP5 LDD SI SET ACCOUNTING INCREMENT
- STM ERPC
- LDD SI+1
- STM ERPC+1
- LDD MA SET REQUEST IN MESSAGE BUFFER
- CWM ERPB,ON
- LDN 1 SET WORD COUNT
- STD CM+1
- LDN 0 SET DROP PPU
- STD CM+2
- MONITOR UADM
- LJM PPR
- ERPB CON AISS SUB FUNCTION
- CON IOAW WORD TO UPDATE
- CON 40D*100+20D FIELD TO UPDATE
- ERPC CON 0,0 INCREMENT
- TMSG SPACE 4
- TMSG BSS 0
- QUAL ERR
- LOC FERT
- ARG MSG (ARGUMENT ERROR)
- IOS MSG (I/O SEQUENCE ERROR)
- MSR MSG (DEVICE ERROR)
- LOC *O
- QUAL *
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMPACS
- *CALL COMPANS
- BUF SPACE 4,10
- USE BUFFERS
- BUF BSS 0 ASSEMBLY BUFFER
- SPACE 4
- TTL LDD/LDQ - FAST DYNAMIC LOADER.
- END
cdc/nos2.source/opl871/fdl.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator