cdc:nos2.source:opl871:sysedit
Table of Contents
SYSEDIT
Table Of Contents
- [00011] SYSEDIT - SYSTEM LIBRARY FILE MANAGER.
- [00013] SYSTEM LIBRARY FILE MANAGER.
- [00127] MACRO DEFINITIONS.
- [00129] KEYWD - PROCESS KEYWORD.
- [00159] PRINT - PRINT LINE ON OUTPUT FILE.
- [00179] DEAD START LOAD.
- [00181] DSL - DEAD START LOAD.
- [00187] FILE DEFINITIONS.
- [00209] MANAGED TABLES.
- [00218] TLIB - LIBRARY AND DIRECTORIES.
- [00227] TRCD - RECORD DIRECTORY.
- [00239] TDLT - DELETE RECORDS TABLE.
- [00249] TFLO - FIELD LENGTH OVERRIDE TABLE.
- [00260] TINR - IGNORE RECORDS TABLE.
- [00271] TRES - RESIDENCY TABLE.
- [00282] TADR - ALTERNATE DEVICE RECORDS TABLE.
- [00296] TEPD - ENTRY POINT DIRECTORY TABLE
- [00305] TSCC - TABLE OF SCOPE CONTROL CARDS.
- [00315] TSYN - PROGRAM NAME SYNONYMS.
- [00322] TFIL - FILE NAMES.
- [00331] TCMR - TABLE OF RCL ADDRESSES FOR CM RESIDENT PROGRAMS.
- [00341] TSCR - SCRATCH TABLE.
- [00346] TLST - LIST FOR PROGRAM READS.
- [00362] COMMON DATA.
- [00421] SYSEDIT - MAIN PROGRAM.
- [00423] MAIN PROGRAM.
- [00507] MAIN PROCESSING ROUTINES.
- [00509] CCF - COPY CHANGE FILES.
- [00555] CMF - COMPLETE FILES.
- [00603] DLR - DELETE RECORDS.
- [00651] WDR - WRITE DIRECTORY.
- [00707] MVZ - MOVE DATA, CHECKING FOR ZERO-LENGTH RECORD ENTRIES.
- [00747] SLR - SET LIBRARY RESIDENCE.
- [00835] LIBRARY TABLE PROCESSING.
- [00838] LIB - PROCESS LIBRARY TABLES.
- [00873] CLD - GENERATE CLD.
- [01004] REL - PROCESS RELOCATABLE FORMAT.
- [01046] OVL - PROCESS OVERLAY FORMAT.
- [01054] ULB - PROCESS USER LIBRARY FORMAT.
- [01064] PRC - PROCESS PROCEDURE FORMAT.
- [01087] ABS - PROCESS ABSOLUTE FORMAT.
- [01138] PPU - PROCESS PERIPHERAL PROCESSOR FORMAT.
- [01145] LBD - GENERATE LDB.
- [01159] CPR - CHECK PROGRAM RESIDENCE.
- [01197] SPR - SET PROGRAM RESIDENCE.
- [01226] AEP - ADD ENTRY POINT.
- [01244] PFL - PROCESS FIELD LENGTH OVERRIDE.
- [01316] TSEP - TABLE OF SPECIAL ENTRY POINTS.
- [01487] ELD - ENTER PERIPHERAL LIBRARY DIRECTORY.
- [01517] MSP - PROCESS MASS STORAGE RESIDENT PPU PROGRAMS.
- [01701] PLD - GENERATE PLD.
- [01945] RRD - REMOVE ROUTINE FROM PLD.
- [01982] CMC - PROCESS CM RESIDENT CPU PROGRAMS.
- [02076] CMP - PROCESS CM RESIDENT PPU PROGRAMS.
- [02178] ASR - PROCESS ALTERNATE LIBRARIES.
- [02358] INC - INITIALIZE COPY.
- [02442] FILE COPY ROUTINES.
- [02445] CPF - COPY FILE.
- [02562] CRS - CHECK RECORD STATUS.
- [02603] RCW - READ CONTROL WORD.
- [02647] RDB - READ BLOCK.
- [02691] SLS - SET LIBRARY STATUS.
- [02744] RESIDENCY PROCESSING.
- [02746] ERS - ENTER RESIDENCY STATUS.
- [02773] FLO - SET FIELD LENGTH OVERRIDE FOR SPECIFIED RECORDS.
- [02809] RES - DEFINE RESIDENCY.
- [02858] PPS - DEFINE PPU SYNONYMS.
- [02880] SCC - DEFINE RECORDS AS SCOPE CONTROL CARDS.
- [02893] DIRECTIVE PROCESSING SUBROUTINES.
- [02903] ARN - ASSEMBLE RECORD NAME.
- [02939] ASN - ASSEMBLE NAME.
- [02974] CKW - CHECK KEYWORD.
- [03023] UTILITY SUBROUTINES.
- [03025] ABT - ABORT JOB.
- [03062] BPH - BUILD *PPL* HEADER.
- [03097] ERT - ENTER RESIDENCY TABLE.
- [03128] TOV - MANAGED TABLE MEMORY OVERFLOW PROCESSOR.
- [03170] WOF - WRITE LINE TO OUTPUT.
- [03227] WTB - WRITE BLOCK.
- [03274] DIRECTIVE CARD PROCESSING.
- [03283] RDC - READ DIRECTIVE CARDS.
- [03547] DIRECTIVE PROCESSING ROUTINES.
- [03549] ALC - ADD LIBRARY CONTROL.
- [03601] LDC - LIST DIRECTIVE CARD.
- [03651] DATA AND LBUFFERS.
- [03654] TRCN - TABLE OF RECORD NAMES.
- [03676] PLR - PROCESS LIBDECK RECORD.
- [03715] PRESET ROUTINES.
- [03717] PRS - PRESET PROGRAM.
- [03820] ISF - INITIALIZE SYSTEM FILE.
- [03943] DSL - DEAD START LOAD.
Source Code
- SYSEDIT.txt
- IDENT SYSEDIT,DSL
- ABS
- SST T1,T2,T3,T4
- ENTRY SYSEDIT
- ENTRY RFL=
- ENTRY SSJ=
- SYSCOM B1
- QUAL$ EQU 1 DEFINE UNQUALIFIED COMMON DECKS
- *COMMENT SYSEDIT - SYSTEM LIBRARY FILE MANAGER.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- TITLE SYSEDIT - SYSTEM LIBRARY FILE MANAGER.
- SPACE 4
- *** SYSEDIT - SYSTEM LIBRARY FILE MANAGER.
- * G. R. MANSFIELD. 70/12/19.
- * P. D. HAAS. 73/02/09.
- SPACE 4
- *** SYSEDIT PERFORMS MODIFICATIONS AND INITIALIZATION
- * OF THE SYSTEM LIBRARY.
- SPACE 4
- *** CONTROL CARD CALL.
- *
- *
- * SYSEDIT (P1,P2,...,PN)
- *
- * PN ACTION
- *
- * I DIRECTIVE INPUT FROM FILE *INPUT*
- * I=LFN DIRECTIVE INPUT FROM FILE *LFN*
- * I=0 NO DIRECTIVE INPUT
- *
- * B BINARY CHANGE RECORDS FROM FILE *LGO*
- * B=LFN BINARY CHANGE RECORDS FROM FILE *LFN*
- * B=0 NO BINARY CHANGE RECORDS
- *
- * L LIST OUTPUT ON FILE *OUTPUT*
- * L=LFN LIST OUTPUT ON FILE *LFN*
- * L=0 NO LIST OUTPUT
- *
- * R RESTORE TO INITIAL DEAD START SYSTEM.
- * R=N RESTORE TO COPY N OF SYSTEM
- * THE SYSTEM COPY NUMBER IS PRINTED ON THE
- * OUTPUT LISTING.
- * R=0 NO SYSTEM FILE RESTORATION
- *
- * C CHECKPOINT SYSTEM AT JOB COMPLETION
- *
- * Z READ DIRECTIVES FROM THE SYSEDIT CARD.
- * THIS OVERRIDES ANY *I* PARAMETER.
- *
- * NA NO ABORT TAKEN IF SYSTEM FILE IS BUSY.
- *
- *
- * DEFAULT PARAMETERS.
- *
- * I=INPUT
- * L=0
- * B=LGO
- * R=0
- * C SELECTED IF ALTERNATE LIBRARY PRESENT
- SPACE 4,10
- *** DAYFILE MESSAGES.
- *
- * *DIRECTIVE ERRORS.*
- *
- * * ERROR IN LIBDNN*
- *
- * *MEMORY OVERFLOW.*
- *
- * *RECORD NOT FOUND.*
- *
- * *REQUESTED RESTORATION NOT FOUND.*
- *
- * *SYSEDIT ARGUMENT ERROR.*
- *
- * *SYSTEM BUILT WITH LIBDNN.*
- *
- * *SYSTEM BUILT WITH LIBDNN (UNDEFINED).*
- *
- * *SYSTEM EDIT COMPLETE - CHANGE NN.*
- *
- * *SYSTEM FILE ERROR IN CLD.*
- *
- * *SYSTEM FILE ERROR IN DIRECTORY.*
- *
- * *SYSTEM FILE ERROR IN PLD.*
- *
- * *SYSTEM FILE ERROR IN RCL.*
- *
- * *SYSTEM FILE ERROR IN RPL.*
- *
- * *SYSTEM FILE FORMAT ERROR.*
- *
- * / TERMINAL INPUT NOT VALID. USE *I* OR *Z* OPTION./
- SPACE 4,10
- *** OPERATOR MESSAGES.
- *
- * * COPYING XXXXXXX*
- *
- * *SKIPPING XXXXXXX*
- *
- * *GENERATING LIBRARY DIRECTORY.*
- *
- * *LIBDECK NOT FOUND - (NAME)*
- SPACE 4,10
- **** ASSEMBLY CONSTANTS.
- IBUFL EQU 101B INPUT BUFFER LENGTH
- LBUFL EQU 80 LINE BUFFER LENGTH
- OBUFL EQU 2001B OUTPUT FILE BUFFER
- FBUFL EQU 10001B FILE BUFFER
- SBUFL EQU 30001B SYSTEM BUFFER
- MINC EQU 400B MEMORY INCREMENT
- ****
- SPACE 4
- ** COMMON DECKS.
- *CALL COMCMAC
- *CALL COMCCMD
- *CALL COMCMTM
- *CALL COMSMSC
- *CALL COMSPRD
- *CALL COMSSRT
- *CALL COMSSSD
- *CALL COMSSSJ
- TITLE MACRO DEFINITIONS.
- KEYWD SPACE 4
- ** KEYWD - PROCESS KEYWORD.
- *
- *
- * KEYWD NAME,ADDRESS
- * GENERATE LIST AND CALL FOR DIRECTIVE TRANSLATION.
- * ENTRY *NAME* = KEYWORD NAME.
- * *ADDRESS* = PROCESSOR ADDRESS.
- *
- * CALLS CKW.
- NOREF .X
- KEYWD MACRO NAM,ADR
- LOCAL A,B,C
- IF DEF,.X,1
- .1 IFNE .X,*,
- KEYWD RMT
- A BSS 0
- KEYWD RMT
- SA0 A
- RJ CKW
- B BSS 0
- .X SET B
- .1 ENDIF
- KEYWD RMT
- C SET ADR NAM
- CON 0L_NAM+C
- KEYWD RMT
- ENDM
- PRINT SPACE 4
- ** PRINT - PRINT LINE ON OUTPUT FILE.
- *
- *
- * PRINT FWA,N
- * ENTRY *FWA* = FWA OF LINE.
- * *F* = FORMAT.
- * IF *F* IS MISSING, LINE IS IN *C* FORMAT.
- * IF *F* IS PRESENT, LINE IS IN *S* FORMAT.
- *
- * CALLS WOF.
- PRINT MACRO FWA,N
- R= X1,FWA
- IFC NE,*N**,1
- R= X2,N
- IFC EQ,*N**,1
- SX2 B0
- RJ WOF
- ENDM
- TITLE DEAD START LOAD.
- DSL SPACE 4
- ** DSL - DEAD START LOAD.
- ORG 104B
- DSL SB1 1 (B1) = 1
- EQ DSL1
- TITLE FILE DEFINITIONS.
- FETS SPACE 4
- ** FETS.
- O BSS 0
- OUTPUT FILEC OBUF,OBUFL,(FET=8)
- ORG O
- CON 15B
- ORG O+8
- F BSS 0
- SYSTEM RFILEB FBUF,FBUFL,(FET=8)
- ORG F+7
- CON 0LSYSTEM+3
- S BSS 0
- PPULIB RFILEB SBUF,SBUFL,(FET=9)
- ORG S+7
- CON 0LSYSTEM
- CON 0LPPULIB
- CON 0LALTSYS
- TITLE MANAGED TABLES.
- TABLES SPACE 4
- ** MANAGED TABLES ARE USED TO CONTAIN ALL VARIABLE LOAD DATA.
- * THE TABLES ARE CONTROLED BY 2 POINTERS, F.TNAM AND L.TNAM.
- * (F.TNAM) = FWA OF TABLE *TNAM*.
- * (L.TNAM) = LENGTH OF TABLE *TNAM*.
- * THE TABLES ARE MANAGED BY ROUTINE *ATS*.
- TLIB SPACE 4
- ** TLIB - LIBRARY AND DIRECTORIES.
- * THE FIRST WORD ADDRESS OF TLIB IS ASSUMED TO BE SBUF.
- * TLIB MUST BE THE FIRST TABLE.
- * TLIB CONTAINS THE RESIDENT LIBRARIES AND DIRECTORIES
- * IN THE SAME FORMAT AND ORDER AS IN LOW CORE.
- TLIB TABLE
- TRCD SPACE 4
- ** TRCD - RECORD DIRECTORY.
- * ENTRY = 2 WORDS.
- *
- *T 42/ NAME,18/ TYPE
- *T 30/,30/ RI
- * NAME RECORD NAME
- * TYPE RECORD TYPE
- * RI RANDOM INDEX
- TRCD TABLE 2
- TDLT SPACE 4
- ** TDLT - DELETE RECORDS TABLE.
- * ENTRY = 1 WORD.
- *
- *T 42/ NAME,18/ TYPE
- * NAME RECORD NAME
- * TYPE RECORD TYPE
- TDLT TABLE
- TFLO SPACE 4
- ** TFLO - FIELD LENGTH OVERRIDE TABLE.
- * ENTRY = 1 WORD.
- *
- *T 42/ NAME,12/ FL,6/ TYPE
- * NAME RECORD NAME
- * FL FIELD LENGTH / 100B
- * TYPE RECORD TYPE
- TFLO TABLE
- TINR SPACE 4
- ** TINR - IGNORE RECORDS TABLE.
- * ENTRY = 1 WORD.
- *
- *T 42/ NAME,6/ FI,12/ TYPE
- * NAME RECORD NAME
- * FI FILE INDEX
- * TYPE RECORD TYPE
- TINR TABLE
- TRES SPACE 4
- ** TRES - RESIDENCY TABLE.
- * ENTRY = 1 WORD.
- *
- *T 42/ NAME,6/ RC,12/ TYPE
- * NAME PROGRAM NAME
- * RC RESIDENCE CODE
- * TYPE RECORD TYPE
- TRES TABLE
- TADR SPACE 4
- ** TADR - ALTERNATE DEVICE RECORDS TABLE.
- * ENTRY = 2 WORDS.
- *
- *T 6/ DO,12/ TYPE,18/ RDO,24/ RI
- * DO DEVICE EST ORDINAL
- * TYPE RECORD TYPE
- * RDO RECORDS DIRECTORY ORDINAL
- * RI RANDOM INDEX
- *
- * WORD 2 SAME AS WORD 1 UNTIL AFTER SORT
- TADR TABLE 2
- SPACE 4,10
- ** TEPD - ENTRY POINT DIRECTORY TABLE
- * ENTRY = 1 WORD.
- *
- *T 42/ NAME,18/ PST
- * NAME ENTRY POINT NAME
- * PST PST ORDINAL
- TEPD TABLE
- TSCC SPACE 4
- ** TSCC - TABLE OF SCOPE CONTROL CARDS.
- * ENTRY = 1 WORD.
- *
- *T 42/ NAME,18/ TYPE
- * NAME PROGRAM NAME
- * TYPE RECORD TYPE
- TSCC TABLE
- TSYN SPACE 4
- ** TSYN - PROGRAM NAME SYNONYMS.
- * ENTRY = 2 WORDS.
- *
- TSYN TABLE 2
- TFIL SPACE 4
- ** TFIL - FILE NAMES.
- * ENTRY = 1 WORD.
- *
- *T 42/ NAME,18/
- * NAME FILE NAME
- TFIL TABLE
- TCMR SPACE 4,10
- ** TCMR - TABLE OF RCL ADDRESSES FOR CM RESIDENT PROGRAMS.
- * ENTRY = 1 WORD.
- *
- *T 42/0, 18/ RCL
- *
- * RCL ADDRESS OF ENTRY IN CM.
- TCMR TABLE
- TSCR SPACE 4
- ** TSCR - SCRATCH TABLE.
- TSCR TABLE 2
- TLST SPACE 4
- ** TLST - LIST FOR PROGRAM READS.
- * MUST BE LAST TABLE.
- * ENTRY = 1 WORD.
- *
- *T 36/,24/ RI
- * RI RANDOM INDEX
- TLST TABLE
- TABLES SPACE 4
- * REMAINDER OF TABLE MANAGER STORAGE.
- LIST G
- TABLES HERE
- LIST *
- TITLE COMMON DATA.
- DATA SPACE 4
- ** *SLL* CONTROL.
- SL CON 10000B
- LN CON 0LLIBD00
- RP CON 0 FWA OF SYSTEM RPL (SET BY SLL)
- * THE ORDER OF THE PREVIOUS WORDS CANNOT BE CHANGED WITHOUT
- * CHANGES TO *SLL*.
- .ERD VFD 12/1,18/,18/0,12/ ENTER RESIDENCE DATA
- .CSN VFD 12/2,18/,18/0,12/ CONVERT SECTOR NUMBERS (SYSTEM FILE)
- VFD 12/2,12/1,6/,18/0,12/ (PPU LIBRARY)
- .WSF VFD 12/3,18/,18/S,12/ WRITE SYSTEM FILE
- .WPF VFD 12/4,18/,18/S,12/ WRITE PPU LIBRARY FILE
- .ELD VFD 12/5,12/,6/,18/SBUF,12/ ENTER LIBRARY DIRECTORY
- .EAD VFD 12/6,18/L.TLST,18/0,12/ ENTER ALTERNATE DEVICE TABLE
- .WAD VFD 12/7,18/0,18/S,12/ WRITE ALTERNATE DEVICE
- .RSE VFD 12/8,18/0,18/EQ,12/0 RETURN SYSTEM EQUIPMENT
- .DPE VFD 12/9,18/0,18/0,12/0 DROP PP FOR ERROR CONDITION
- * COMMON DATA.
- T1 CON 0 TEMPORARY STORAGE
- T2 CON 0
- EQ CON 0 SYSTEM DEVICE EST ORDINAL SHIFTED 36
- SC CON 0 SYSTEM CHANGE FLAG
- DN VFD 18/0L9D,24/,1/1,17/1 *DSD* TEMPLATE FOR RESIDENT OVLS
- FN CON 0 FILE NUMBER
- NM CON 0 RECORD NAME AND TYPE
- TY CON 0 RECORD TYPE
- SN CON 1 SECTOR NUMBER
- PE CON 1 PPU LIBRARY FILE EOI
- EC CON 0 ERROR COUNT
- ER CON PLR ERROR RETURN
- DL CON 0 DEAD START LOAD FLAG
- CN CON 0 COPY NUMBER
- LS CON 1 LIBDECK STATUS
- AD CON 0 ALTERNATE LIBRARY FLAG
- CF CON 0 CHECKPOINT FLAG
- SR CON 0 SCOPE RECORD COUNT
- NF CON 0 NUMBER OF FL ENTRIES
- PL CON 0 NUMBER OF ALTERNATE SYSTEM PLD ENTRIES
- SP CON 0 *SLL* PRESENT FLAG (FOR ON-LINE *SYSEDIT*)
- * LIST DATA.
- PN CON 1 PAGE NUMBER
- LC CON 99999,0 LINE NUMBER
- LL EQU LC+1 LINE LIMIT
- TL CON CCDR ADDRESS OF TITLE TEXT
- SPACE 4
- SSJ= BSS 0
- VFD 12/0,24/-0,12/SYCS,12/IRSI
- BSSZ SSJL-1
- TITLE SYSEDIT - MAIN PROGRAM.
- SYSEDIT SPACE 4
- ** SYSEDIT - MAIN PROGRAM.
- SYE RJ /RDC/RDC READ DIRECTIVE CARDS
- SA1 EC
- ZR X1,SYE1 IF NO ERRORS
- SX0 =C*DIRECTIVE ERRORS.*
- EQ ABT
- * ADD CHANGE FILES TO SYSTEM LIBRARY.
- SYE1 SA1 SC
- ZR X1,SYE2 IF NO SYSTEM CHANGES
- SA2 S+7 SET SYSTEM FILE NAME
- SA3 .WSF SET WRITE SYSTEM REQUEST
- BX6 X2
- MX7 0 CLEAR SECTOR COUNT
- SA6 S
- SA7 S+6
- BX6 X3
- SA6 SL
- RJ CCF COPY CHANGE FILES
- RJ DLR PROCESS DELETIONS
- RJ WDR WRITE DIRECTORY
- SA1 S+6 SET EOF
- PX6 X1
- SA6 A1
- RECALL SL
- * GENERATE LIBRARY DIRECTORY.
- SYE2 MESSAGE (=C*GENERATING LIBRARY DIRECTORY.*),1
- SA1 LS
- ZR X1,SYE2.1 IF LIBDECK FOUND
- MESSAGE SYEC,2 *LIBDECK NOT FOUND - (NAME)*
- SYE2.1 RJ SLR SET LIBRARY RESIDENCE
- SA1 F+7 SET SYSTEM FILE NAME
- SA2 S+8 SET PPU LIBRARY FILE NAME
- BX6 X1
- SA3 F+1 SET IN = OUT = FIRST
- LX7 X2
- SA6 F
- SA7 S
- SX6 X3
- SX1 B1 SET RANDOM BIT
- MX0 -48
- LX1 47
- BX3 -X0*X3 CLEAR DEVICE TYPE
- SA6 A3+B1
- BX7 X1+X3
- SA6 A6+B1
- SA7 A3
- RJ /LIB/LIB PROCESS LIBRARY TABLES
- SA3 L.TLIB DECREASE FIELD LENGTH
- SX1 X3+SBUF
- SX6 B1
- LX6 17
- BX1 X1+X6
- MEMORY ,,,X1
- SA3 CF READ CHECKPOINT FLAG
- SA2 PL NUMBER OF ALTERNATE SYSTEM PLD ENTRIES
- LX3 12+18
- SA1 .ELD REQUEST LIBRARY DIRECTORY SETUP
- LX2 36
- IX2 X3+X2
- BX6 X1+X2
- SA6 SL
- RECALL A6
- RJ CMF COMPLETE FILES
- SA1 CN SET CHANGE NUMBER
- RJ CDD
- SX1 1R.-1R
- SB3 60
- LX1 54
- IX2 X6+X1
- SB4 B3-B2
- LX6 X2,B4
- SA6 SYEB
- MESSAGE SYEA
- SYE3 ENDRUN
- SYEA DATA 30HSYSTEM EDIT COMPLETE - CHANGE
- SYEB CON 0,0
- SYEC DATA C*LIBDECK NOT FOUND - (NAME)*
- TITLE MAIN PROCESSING ROUTINES.
- CCF SPACE 4,5
- ** CCF - COPY CHANGE FILES.
- * CHANGE FILES ARE COPIED TO SYSTEM FILE.
- CCF PS ENTRY/EXIT
- SX6 99999 FORCE EJECT
- SX7 =40HSYSTEM FILE CHANGES.
- SA6 LC
- SA7 TL
- CCF1 SA1 L.TFIL CHECK FILE TABLE
- SA2 FN
- IX6 X1-X2
- SA3 F.TFIL
- SB2 X2
- ZR X6,CCF RETURN IF END OF FILES
- SA5 X3+B2 SET FILE NAME
- MX0 42
- BX4 X0*X5
- RECALL F
- .DS1 SA3 X2+B1 SET IN = OUT = FIRST
- * EQ CCF2 (DISK DEADSTART)
- LX5 59 CHECK CONTROL BIT
- SX1 3 SET FILE NAME AND MODE
- * SX1 0 (DEADSTART LOAD FROM TAPE)
- SX7 X3
- BX6 X4+X1
- SA7 A3+B1
- SA6 X2
- SA7 A7+B1
- NG X5,CCF2 IF *NO REWIND*
- REWIND X2,R
- CCF2 RJ CPF COPY FILE
- SA1 F.TFIL CHECK FILE CONTROL
- SA2 FN ADVANCE FILE NUMBER
- IX7 X1+X2
- SX6 X2+B1
- SA3 X7
- SA6 A2
- LX3 59
- NG X3,CCF1 IF NO REWIND
- REWIND F,R
- EQ CCF1 LOOP
- CMF SPACE 4,10
- ** CMF - COMPLETE FILES.
- CMF3 SX6 0 CLEAR OUTPUT FET
- SA6 O
- CMF SUBR ENTRY/EXIT
- SA3 DL
- SA5 WOF
- NZ X3,CMF1 IF DEADSTART LOAD
- ZR X5,CMF3 IF NOTHING LISTED
- PRINT (=2L )
- PRINT (=2L )
- SA1 =1H SET SPACES
- SA2 =10HCHANGE
- BX6 X1
- LX7 X2
- SA6 LBUF
- SA7 A6+B1
- SA1 CN
- RJ CDD
- SX7 0
- SA6 A7+B1
- SA7 A6+B1
- PRINT LBUF
- WRITER O
- SETFS X2,0 CLEAR SPECIAL ID STATUS
- EQ CMFX RETURN
- CMF1 SA3 CMFB
- RETURN O RETURN DEADSTART LISTING
- SA5 LS GET LIBDECK STATUS
- SA1 LN READ LIBDECK NAME
- NZ X5,CMF2 IF LIBDECK NOT FOUND
- SX3 1R.
- CMF2 MX0 24
- LX1 12
- BX1 X0*X1 ADD LIBDECK NAME TO MESSAGE
- LX3 30
- BX6 X1+X3
- SA6 A3
- MESSAGE CMFA
- EQ SYE3 EXIT
- CMFA DATA 20HSYSTEM BUILT WITH LI
- CMFB VFD 60/5L(UNDE+1R
- DATA C*FINED).*
- DLR SPACE 4,5
- ** DLR - DELETE RECORDS.
- DLR PS ENTRY/EXIT
- DLR1 SA1 L.TDLT CHECK DELETE TABLE
- SA2 F.TDLT
- ZR X1,DLR RETURN IF END OF TABLE
- SA3 X2
- SX6 X2+B1 DELETE ENTRY
- SX7 X1-1
- SA6 A2
- SA7 A1
- SEARCH TRCD,X3 SEARCH FOR ENTRY
- ZR X2,DLR1 IF NOT FOUND
- SA1 F.TRCD SET LWA
- SA4 L.TRCD
- IX1 X1+X4
- BX7 X2 SAVE NAME AND TYPE
- SX3 A2 SET DESTINATION
- SX2 A2+2 SET FWA
- IX1 X1-X2 SET WORD COUNT
- SX6 X4-2 DECREMENT TABLE LENGTH
- SA7 T1
- SA6 A4
- MOVE X1,X2,X3
- * LIST DELETION STATUS.
- SA1 =1H SET SPACES
- SA2 =10HDELETED
- BX6 X2 SET RECORD STATUS
- LX7 X1
- SA5 T1
- SA7 LBUF
- MX0 42
- SA6 A7+B1
- BX1 X0*X5 SPACE FILL NAME
- RJ SFN
- SA2 TRCN+X5 SET RECORD TYPE
- BX1 X0*X2
- SA6 A6+B1
- RJ SFN
- BX7 X7-X7 SET END OF BUFFER
- SA6 A6+B1
- SA7 A6+B1
- PRINT LBUF
- EQ DLR1 LOOP
- WDR SPACE 4,5
- ** WDR - WRITE DIRECTORY.
- WDR PS ENTRY/EXIT
- SA2 WDRA+1 ENTER DIRECTORY NAME
- SX6 10B
- ADDWRD TRCD,X2+X6
- SA1 SN ENTER SECTOR NUMBER
- ADDWRD TRCD,X1
- MX0 14B
- SA1 WDRA ENTER 7700 TABLE
- SA2 A1+B1
- BX6 X1
- LX7 X2
- SA3 DATE ENTER DATE
- SA4 A2+B1
- SA6 BUF
- SA7 A6+B1
- BX6 X3
- SA6 A7+B1
- MX6 0
- SA5 L.TRCD SET DIRECTORY LENGTH
- BX7 X4+X5
- + SA6 A6+B1 CLEAR REMAINDER OF TABLE
- LX0 1
- NG X0,*
- SA7 A6+B1
- SX1 60B CHECK TABLE LENGTH
- IX5 X5-X1
- SX6 100B SET WORD COUNT
- PL X5,WDR1 IF FULL FIRST PART
- IX1 X5+X1 SET SHORT LENGTH
- SX6 20B+X5
- WDR1 SA2 F.TRCD MOVE FIRST PART OF DIRECTORY
- SA6 WC
- IX0 X2+X1 SET NEXT TABLE ADDRESS
- SX3 BUF+20B ADDRESS TO MOVE TO
- RJ MVZ MOVE DATA TO BUFFER
- WDR2 RJ WTB WRITE BLOCK
- SA1 WC CHECK WORD COUNT
- SB2 X1-100B
- NZ B2,WDR RETURN IF SHORT BLOCK WRITTEN
- IX5 X5-X1 DECREMENT LENGTH
- SX2 X0 ADDRESS TO MOVE FROM
- SX3 BUF ADDRESS TO MOVE TO
- RJ MVZ MOVE DATA
- SX0 X0+100B ADVANCE FWA
- PL X5,WDR2 LOOP IF NOT SHORT BLOCK
- SX6 X5+100B SET SHORT WORD COUNT
- SA6 WC
- EQ WDR2
- WDRA VFD 12/7700B,12/16B,36/0
- CON 0LSYSTEM
- VFD 12/7000B,48/0
- MVZ SPACE 4,20
- ** MVZ - MOVE DATA, CHECKING FOR ZERO-LENGTH RECORD ENTRIES.
- *
- * THIS ROUTINE MOVES THE DIRECTORY INTO THE WRITE BUFFER,
- * CHECKING FOR ZERO-LENGTH RECORD ENTRIES *(00)*, CHANGING
- * THEM TO THE PROPER RECORD NAME. THIS MUST BE DONE AT
- * THIS TIME, SINCE THE REST OF *SYSEDIT* REQUIRES THE TABLES
- * TO BE ZERO-WORD TERMINATED, AND A PROPER ZERO-LENGTH RECORD
- * ENTRY WOULD PREMATURELY TERMINATE THE TABLE.
- *
- * ENTRY (X1) = WORD COUNT.
- * (X2) = ADDRESS TO MOVE FROM.
- * (X3) = ADDRESS TO MOVE TO.
- *
- * EXIT ZERO-LENGTH RECORD ENTRIES CONVERTED DURING MOVE.
- *
- * USES X - 1, 2, 3, 4, 6, 7.
- * A - 2, 3, 4, 6, 7.
- * B - 2, 7.
- MVZ SUBR ENTRY/EXIT
- IX3 X3-X2 DIFFERENCE
- AX1 1 WORD COUNT / 2
- SB2 X3
- SB7 X2 ADDRESS TO MOVE FROM
- ZR X1,MVZX IF NO DATA TO MOVE
- SA3 =C*(00)* ZERO LENGTH RECORD ENTRY
- MVZ1 SA4 B7+B1 MOVE TWO WORDS
- SA2 B7
- LX7 X4
- BX6 X2-X3
- SA7 A4+B2 STORE SECOND WORD
- ZR X6,MVZ2 IF ZERO LENGTH RECORD ENTRY
- BX6 X2 USE RECORD NAME / TYPE
- MVZ2 SB7 A4+B1 INCREMENT INDEX
- SX1 X1-1
- SA6 A2+B2 STORE FIRST WORD
- NZ X1,MVZ1 IF NOT COMPLETE
- EQ MVZX RETURN
- SLR SPACE 4,20
- ** SLR - SET LIBRARY RESIDENCE.
- *
- * *SLR* PERFORMS THE FINAL MODIFICATIONS TO THE MANAGED TABLES
- * BEFORE ACTUALLY GENERATING THE LIBRARY DIRECTORIES. IT -
- *
- * * CREATES THE ENTRY FOR *1PR* FROM THE ENTRY FOR *PPR*.
- * * DEFINES *1VN* AND *1VO* AS SYNONYMS FOR *1VP*.
- * * REQUESTS PROGRAM RESIDENCY INFORMATION FROM *SLL* AND
- * UPDATES *TRES*.
- * * DETERMINES THE FIRST RECORD OF THE RUNNING SYSTEM.
- *
- * USES X - ALL.
- * A - ALL.
- *
- * CALLS ERT.
- *
- * MACROS ADDWRD, RECALL, SEARCH.
- SLR SUBR ENTRY/EXIT
- SA5 SLRA FIND ENTRY FOR *PPR*
- SEARCH TRCD,X5
- ZR X2,SLR3 IF NOT FOUND
- SA1 A5+B1 GET NEW ENTRY FIRST WORD
- SA5 A2+B1 GET SECOND WORD
- ADDWRD A0,X1 ADD ENTRY TO END OF TABLE
- ADDWRD A0,X5
- SLR0 SA5 SLRB FIND ENTRY FOR *9TA*
- SEARCH TRCD,X5
- ZR X2,SLR3 IF NOT FOUND
- SA5 A2+B1 GET SECOND WORD
- ADDWRD A0,X2 ENSURE *9TA* WILL BE IN THE RUNNING SYSTEM
- ADDWRD A0,X5
- SLR1 ADDWRD TRCD,X6-X6 TERMINATE RECORD TABLE
- ADDWRD TRCD,X6-X6
- SA1 SLRC CREATE SYNONYMS FOR *1VP*
- SA5 A1+B1
- ADDWRD TSYN,X1
- ADDWRD A0,X5
- SA1 SLRC
- SA5 SLRC+2
- ADDWRD A0,X1
- ADDWRD A0,X5
- SA1 .ERD ENTER RESIDENCY DATA
- SX2 SBUF
- LX2 12
- BX6 X1+X2
- SA6 SL
- RECALL A6
- SA5 SBUF FIRST ENTRY
- SLR2 BX1 X5 ENTER RESIDENCY TABLE
- RJ ERT
- SA5 A5+B1 NEXT ENTRY
- NZ X5,SLR2 IF NOT END OF LIST
- SA1 SLRD ESTABLISH START OF RUNNING SYSTEM LIBRARY
- SEARCH TRCD,X1
- ZR X2,SLR3 IF NOT FOUND
- SA1 F.TRCD GET FWA OF TRCD
- SX7 A2+B7
- IX2 X7-X1
- SA3 L.TRCD
- SA7 A1
- IX6 X3-X2
- SA4 X7+B1 FIRST RANDOM INDEX
- SA6 A3
- + BX3 X4 DUPLICATE RANDOM INDEX
- LX4 24
- BX6 X4+X3
- SA4 A4+B7
- SA6 A4-B7
- NZ X4,*-1
- SA3 .CSN REQUEST SECTOR COUNT CONVERSION
- LX7 12
- BX6 X3+X7
- SA6 SL
- RECALL A6
- EQ SLR RETURN
- SLR3 SX0 =10H DIRECTORY
- EQ SFE
- SLRA CON 0LPPR+PPRT
- CON 0L1PR+PPRT
- SLRB CON 0L9TA+PPRT
- SLRC CON 0L1VP+PPRT
- CON 0L1VN+PPRT
- CON 0L1VO+PPRT
- SLRD CON 0LREC+PPRT
- TITLE LIBRARY TABLE PROCESSING.
- QUAL LIB
- LIB SPACE 4,5
- ** LIB - PROCESS LIBRARY TABLES.
- LIB PS ENTRY/EXIT
- RJ MSP PROCESS MS RESIDENT PPU PROGRAMS
- SA1 AD
- ZR X1,LIB1 IF NO ALTERNATE DEVICE ENTRIES
- SA3 F.TRES
- RJ ASR PROCESS ALTERNATE SYSTEM RESIDENT PROGRAMS
- LIB1 SX6 SBUF RESET LOW MEMORY LIMIT
- SA6 LM
- SA6 F.TLIB
- RJ CMP PROCESS CM RESIDENT PPU PROGRAMS
- ADDWRD TLIB,X6-X6 TERMINATE RPL
- RJ CMC PROCESS CM RESIDENT CPU PROGRAMS
- ADDWRD TLIB,X6-X6 TERMINATE RCL
- RJ PLD GENERATE PLD
- SA3 L.TLIB
- SA2 L.TFLO
- BX7 X3
- SX6 B0
- SA7 T2
- ZR X2,PFL1 IF NO FL ENTRIES
- SX1 0
- ADDWRD TFLO,X1 TERMINATE FL TABLE
- SX7 X3-1 SET NUMBER OF FL ENTRIES
- SA7 NF
- LIB2 RJ CLD GENERATE CLD
- ADDWRD TLIB,X6-X6 TERMINATE CLD
- SA6 L.TADR CLEAR ALTERNATE DEVICE RECORDS TABLE
- RJ LBD GENERATE LBD
- ADDWRD TLIB,X6-X6 TERMINATE LBD
- ADDWRD TLIB,X6-X6 TERMINATE DIRECTORY
- EQ LIB RETURN
- CLD SPACE 4,5
- ** CLD - GENERATE CLD.
- CLD10 SX7 B0 EMPTY TCMR
- SA7 L.TCMR
- ADDWRD TLIB,X6-X6 TERMINATE PST
- SA1 L.TEPD GET LAST WORD ADDRESS OF EPD
- SA3 F.TEPD GET FIRST WORD ADDRESS EPD
- SB7 X3
- RJ SST SHELL SORT EPD TABLE
- SA5 L.TLIB GET LENGTH OF TLIB
- SA1 L.TEPD
- ALLOC TLIB,X1
- IX3 X2+X5 DESTINATION ADDRESS
- BX6 X6-X6
- SA2 F.TEPD SOURCE ADDRESS
- SA6 L.TEPD
- MOVE X1,X2,X3
- CLD PS ENTRY/EXIT
- SA2 L.TSCC
- ZR X2,CLD1 IF NO SCOPE RECORDS
- ADDWRD TSCC,X6-X6 TERMINATE TABLE
- SX6 X3-1 SET LENGTH OF TABLE
- SA6 SR
- CLD1 SA1 CLDA (B3) = START INDEX
- SB2 B1+B1
- SB3 X1
- SA2 F.TRCD
- SX4 CLDE MASK FOR PERMISSIBLE CLD TYPES
- CLD2 SA3 X2+B3 NEXT ENTRY
- SB7 X3 CHECK TYPE
- AX1 X4,B7
- SB3 B3+B2 ADVANCE INDEX
- LX1 59
- ZR X3,CLD10 IF END OF DIRECTORY
- CX7 X1
- PL X1,CLD2 IF WRONG TYPE
- SX6 B3 SAVE (B3)
- SB7 X7 JUMP ON TYPE
- SA6 CLDA
- BX6 X3 SAVE NAME AND TYPE
- SX7 X3 SAVE RECORD TYPE
- SA6 NM
- SA7 TY
- JP CLDA+B7
- CLDA CON 0
- + SA5 A3+B1
- BX0 X3
- EQ PRC PROCESS PROCEDURE RECORD
- + SA5 A3+B1
- MX0 42
- EQ PPU
- + SA5 A3+1
- EQ ABS
- + SA5 A3+B1
- MX0 42
- EQ ULB
- + SA5 A3+B1
- MX0 42
- EQ OVL
- + SA5 A3+B1
- MX0 42
- EQ REL
- + SA5 A3+B1
- BX0 X3
- EQ PRC
- CLD3 SX0 =C* CLD.*
- EQ SFE
- CLD4 BSS 0
- CLDB RJ PFL PROCESS FIELD LENGTH
- - EQ CLDC IF DONE WITH PFL PROCESSING
- CLD5 BSS 0
- CLDC SA3 SR GET NUMBER OF SCOPE RECORDS
- SA1 NM
- * EQ CLD8 WHEN END OF SCOPE RECORDS TABLE
- ZR X3,CLD7 IF NO SCOPE RECORDS
- SEARCH TSCC,X1
- ZR X2,CLD8 IF NOT SCOPE RECORD
- SA3 SR
- SA4 PSTA FETCH PST ENTRY
- SX6 X3-1
- MX7 1
- SA6 A3 DECREMENT COUNT
- LX7 45-59
- BX7 X4+X7
- SA7 PSTA
- NZ X6,CLD8 IF NOT THRU WITH SCOPE RECORDS
- SA6 L.TSCC SET TABLE EMPTY
- CLD7 SA3 CLDD
- BX6 X3
- LX6 30 CHANGE TRANSFER
- CLDD SA6 CLDC
- EQ CLD8 CONTINUE PROCESSING
- CLD8 SA5 SEPA GET SPECIAL ENTRY POINT WORD
- SA3 PSTA GET PST ADDRESS
- SA1 TY GET RECORD TYPE
- BX6 X6-X6
- LX1 36
- ZR X5,CLD9 IF NO SPECIAL ENTRY POINTS
- SA6 A5
- MX6 1
- CLD9 LX6 44-59 POSITION SPECIAL ENTRY POINT FLAG
- BX3 X3+X6
- ADDWRD TLIB,X3+X1
- ZR X5,CLD1 IF NO SPECIAL ENTRY POINTS
- MX7 1
- ADDWRD A0,X5+X7
- EQ CLD1 CONTINUE PROCESSING
- * PERMISSIBLE CLD RECORD TYPES.
- CLDE EQURT (TXRT,RLRT,OVRT,ULRT,ABRT,PURT,PRRT)
- * LOCATION USED TO ASSEMBLE PST ENTRY.
- PSTA CON 0
- REL SPACE 4,10
- ** REL - PROCESS RELOCATABLE FORMAT.
- REL RECALL F
- RJ INC INTIALIZE COPY
- NZ X7,CLD3 IF NO 77 TABLE, ERROR
- REL1 SA3 B6-B1
- LX3 12
- SB4 X3-3600B CHECK FOR *ENTR* (36) TABLE
- ZR B4,REL2 IF 36 TABLE
- READW X2,BUF,B1
- ZR X1,REL1
- JP CLD3 ERROR NO 36 TABLE
- REL2 LX3 12
- SX0 X3
- READW F,BUF,1 READ ENTRY POINT NAME
- AX0 1
- SX6 X0
- BX5 -X0
- AX6 6
- ZR X0,CLD3 IF ILLEGAL ENTRY POINT COUNT
- NZ X6,CLD3 IF TOO MANY ENTRY POINTS
- RJ CPR CHECK PROGRAM RESIDENCE
- REL3 SA3 B6-B1 FETCH ENTRY POINT NAME
- MX2 24
- SB3 B0
- SX5 X5+B1 DECREMENT ENTRY COUNT
- REL4 ZR X6,REL5 IF SPECIAL ENTRY POINT NAME
- SA4 TSEP+B3
- BX4 X2*X4
- SB3 B3+B1
- BX6 X3-X4
- AX6 18
- NZ X4,REL4 IF NOT END OF SPECIAL ENTRY POINTS
- RJ AEP ADD ENTRY POINT
- REL5 ZR X5,CLD8 IF NO MORE ENTRY POINTS
- READW F,BUF,2
- ZR X1,REL3 IF NOT EOR
- JP CLD3 PROCESS ERROR
- OVL SPACE 4,10
- ** OVL - PROCESS OVERLAY FORMAT.
- OVL RJ CPR CHECK RESIDENCE
- SA3 NM GET ENTRY POINT NAME
- RJ AEP ADD ENTRY POINT
- EQ CLD5
- ULB SPACE 4,10
- ** ULB - PROCESS USER LIBRARY FORMAT.
- ULB BX3 X0*X3 ENTER NAME AND TAG
- SX2 10000B
- ADDWRD TSCR,X3+X2
- AX5 24
- ADDWRD A0,X5
- EQ CLD1
- PRC SPACE 4,10
- ** PRC - PROCESS PROCEDURE FORMAT.
- PRC RECALL F
- RJ INC INITIALIZE COPY
- LX3 42
- SA2 PRCA CHECK FOR *.PROC,*
- BX6 X3-X2
- SA3 A5-B1 GET ENTRY POINT NAME
- AX6 24
- SA5 A5
- AX5 24
- NZ X6,CLD1 IF NOT *.PROC*
- SX6 PRRT SET *PROC* FILE TYPE
- SA6 TY
- MX0 -24
- BX7 -X0*X5
- SA7 PSTA
- RJ AEP ADD ENTRY POINT
- EQ CLD8 CONTINUE PROCESSING
- PRCA CON 6L.PROC,
- ABS SPACE 4,10
- ** ABS - PROCESS ABSOLUTE FORMAT.
- ABS RECALL F
- RJ INC INITIALIZE COPY
- NZ X7,CLD3 IF ERROR
- SA3 X2+3 READ *OUT* POINTER
- NZ B7,ABS1 IF NOT 5400 TABLE
- SX7 7
- ABS1 SB2 X7+B1
- SX6 X3+B2 ADVANCE *OUT* OVER PROGRAM HEADER
- MX0 42
- SA6 A3
- NZ B4,ABS2 IF NOT SCOPE *ACPM* RECORD
- SX5 B7-B1 SET ENTRY COUNT
- ABS2 ZR X5,CLD3 IF NO ENTRY POINTS
- BX1 X5
- AX1 6
- NZ X1,CLD3 IF TOO MANY ENTRY POINTS
- RJ CPR CHECK RESIDENCE
- SA1 INCA SET 5400 TABLE FL
- SA2 PSTA
- BX6 X1+X2
- SB7 B1
- BX5 -X5
- SA6 A2
- READW F,BUF,B7 READ ENTRY POINT NAME
- ABS3 SA3 B6-B1
- SX5 X5+B1
- RJ AEP ADD ENTRY POINT NAME
- ABS4 ZR X5,CLD4 IF NO MORE ENTRY POINTS
- READW F,BUF,1 READ ENTRY POINT NAME
- NZ X1,CLD3 IF EOR
- SA2 B6-B1 (X2) = ENTRY
- SB2 B0
- ABS5 SA1 TSEP+B2
- ZR X1,ABS3 IF NOT A SPECIAL ENTRY POINT
- MX4 24
- BX3 X2-X1
- SB2 B2+B1
- BX4 X4*X3
- NZ X4,ABS5 IF NO MATCH
- SB4 X1 (B4) = SHIFT COUNT
- AX1 18
- SB7 X1
- SX5 X5+B1 DECREMENT ENTRY POINT COUNT
- SA1 PSTA
- SA4 SEPA
- SX7 B1
- JP B7 PROCESS SPECIAL ENTRY POINT
- PPU SPACE 4,10
- ** PPU - PROCESS PERIPHERAL PROCESSOR FORMAT.
- PPU RJ SPR CHECK PROGRAM RESIDENCE
- RJ AEP ADD ENTRY POINT NAME
- EQ CLD8 CONTINUE PROCESSING
- LBD SPACE 4,5
- ** LBD - GENERATE LDB.
- LBD PS ENTRY/EXIT
- SA1 L.TSCR ALLOCATE SPACE
- SA5 L.TLIB
- ALLOC TLIB,X1
- IX3 X2+X5
- BX6 X6-X6
- SA2 F.TSCR MOVE TSCR TO TLIB
- SA6 L.TSCR CLEAR TSCR
- MOVE X1,X2,X3
- EQ LBD RETURN
- CPR SPACE 4,15
- ** CPR - CHECK PROGRAM RESIDENCE.
- *
- * ENTRY (A5) = ADDRESS OF *TRCD* ENTRY.
- *
- * EXIT (X0) = 42 BIT MASK.
- * (X6) = PROGRAM RESIDENCE ON SYSTEM DEVICE.
- * (PSTA) = RESIDENCE OF PROGRAM.
- *
- * USES A - 2, 3, 7.
- * B - NONE.
- * X - 0, 1, 2, 3, 6, 7.
- *
- * CALLS SPR.
- CPR1 RJ SPR SET PROGRAM RESIDENCE
- CPR SUBR ENTRY/EXIT
- SA3 NM GET ENTRY POINT NAME
- MX0 42
- SEARCH TADR,X3,X0
- ZR X2,CPR1 IF NO MATCH FOUND
- MX1 -6
- LX2 -6
- BX7 -X1*X2
- MX6 -24
- SA2 A2+B1
- LX7 24
- BX2 -X6*X2
- MX1 1
- BX7 X7+X2
- LX1 47-59
- SA2 A5
- BX7 X7+X1
- SA7 PSTA
- ADDWRD TLIB,-X6*X2
- EQ CPRX RETURN
- SPR SPACE 4,10
- ** SPR - SET PROGRAM RESIDENCE.
- *
- * ENTRY (A5) = ADDRESS OF *TRCD* ENTRY.
- *
- * EXIT (X6) = (PSTA) = PROGRAM RESIDENCE SET.
- *
- * USES A - 1, 2, 6.
- * B - NONE.
- * X - 1, 2, 6, 7.
- SPR1 MX7 -24
- BX6 -X7*X1
- SA6 PSTA STORE RESIDENCE
- SPR SUBR ENTRY/EXIT
- SA1 A5 GET TRCD ENTRY
- SA2 F.TCMR
- MX7 1 SET CM RESIDENT BIT
- BX6 X1
- LX7 46-59
- AX6 48
- IX2 X2+X6
- ZR X6,SPR1 IF NOT CM RESIDENT
- SA1 X2
- BX6 X1+X7
- SA6 PSTA SET RESIDENCE
- EQ SPRX RETURN
- AEP SPACE 4,10
- ** AEP - ADD ENTRY POINT.
- *
- * ENTRY (X3) = ENTRY POINT NAME.
- *
- * USES A - 1, 2.
- * B - NONE.
- * X - 0, 1, 2, 3.
- AEP SUBR ENTRY/EXIT
- SA1 L.TLIB
- SA2 T2
- MX0 42
- IX2 X1-X2
- BX3 X0*X3
- ADDWRD TEPD,X3+X2
- EQ AEPX RETURN
- PFL SPACE 4,10
- ** PFL - PROCESS FIELD LENGTH OVERRIDE.
- *
- * ENTRY (NM) = RECORD NAME TO PROCESS.
- *
- * USES A - 1, 3, 4, 6, 7.
- * B - NONE.
- * X - 0, 1, 2, 3, 4, 6, 7.
- *
- * MACROS SEARCH.
- PFL EQ LIB2 ENTRY/EXIT
- BSS 0
- MX0 42+6
- SA1 NM
- LX0 6
- SEARCH TFLO,X1,X0 SEARCH FOR FIELD LENGH OVERRIDE
- ZR X2,PFL IF NO CHANGE
- MX7 1
- LX7 43-59
- SA4 PSTA FETCH PST ENTRY
- MX0 12
- BX4 -X7*X4 CLEAR 5400 TABLE FLAG
- LX2 42
- BX2 X0*X2
- BX4 -X0*X4
- BX7 X2+X4
- SA1 NF DECREMENT COUNT OF FL ENTRIES
- SX6 X1-1
- SA7 A4 STORE CLD ENTRY
- SA6 A1
- PFL1 NZ X6,PFL IF NOT END OF FL PROCESSING
- SA3 CLDB
- BX7 X3
- SA6 L.TFLO SET TABLE EMPTY
- LX7 30 CHANGE TRANSFER
- SA7 CLDB
- EQ PFL RETURN
- TSEP SPACE 4,25
- ** SPECIAL ENTRY POINT DIRECTORY ENTRY.
- *
- *T SEPA 1/A,1/J,2/0,1/I,1/H,1/B,1/C,1/D,1/E,1/F,1/G,1/K,11/0,18/DA,
- * 18/SA
- *
- * WHERE-
- * A SET TO INDICATE SPECIAL ENTRY POINT TABLE ENTRY.
- * B SET IF ARG= ENTRY POINT PRESENT.
- * C SET IF DMP= ENTRY POINT PRESENT.
- * (*DA* IS ASSOCIATED PARAMETER.)
- * D SET IF SDM= ENTRY POINT PRESENT.
- * E SET IF SSJ= ENTRY POINT PRESENT.
- * (*SA* IS ASSOCIATED ADDRESS.)
- * F SET IF VAL= ENTRY POINT PRESENT.
- * G SET IF SSM= ENTRY POINT PRESENT.
- * H SET IF CLB= ENTRY POINT PRESENT.
- * I SET IF LDR= ENTRY POINT PRESENT.
- * J SET IF UTL= ENTRY POINT PRESENT.
- * K SET IF DPA= ENTRY POINT PRESENT.
- * DA = 1/R,1/T,1/S,1/C,1/F,1/U,12/FL
- * WHERE, R = RESTART FLAG.
- * T = SET OVERRIDE REQUIRED STATUS.
- * S = SUPPRESS DMP= ON CONTROL CARD CALL.
- * C = ONLY CREATE DM* WITH NOTHING ON IT.
- * F = DUMP FNT ENTRIES TO FILE DM*.
- * U = CREATE FILE DM* AS AN UNLOCKED FILE.
- * FL = 0, FOR DUMP OF FULL FL.
- * " 0, FOR DUMP OF FL*100B OF FL.
- * SA SSJ= PARAMETER AREA ADDRESS.
- SEPA CON 0 SPECIAL ENTRY POINT WORD
- TSEP SPACE 4,5
- ** TSEP - TABLE OF SPECIAL ENTRY POINTS.
- TSEP VFD 24/0LARG=,18/SEP9,18/53 CONTROL STMT CONTROL
- VFD 24/0LDMP=,18/SEP1,18/52 DUMP CONTROL
- VFD 24/0LDPA=,18/SEP9,18/47 *DMP=* ARGUMENT CONTROL
- VFD 24/0LMFL=,18/SEP5,18/48 MINIMUM FL CONTROL
- VFD 24/0LRFL=,18/SEP6,18/48 FIELD LENGTH CONTROL
- VFD 24/0LSDM=,18/SEP9,18/51 SUPPRESS DAYFILE CONTROL
- VFD 24/0LSSJ=,18/SEP2,18/50 SPECIAL SYSTEM JOB CONTROL
- VFD 24/0LVAL=,18/SEP9,18/49 VALIDATION JOB CONTROL
- VFD 24/0LSSM=,18/SEP9,18/48 FL DUMP PROHIBITED
- VFD 24/0LCLB=,18/SEP8,18/54 COMMAND LINE BUFFER FET
- VFD 24/0LLDR=,18/SEP10,18/55 EXECUTE-ONLY READ CONTROL
- VFD 24/0LLIB=,18/SEP9,18/55 EXECUTE-ONLY READ CONTROL
- VFD 24/0LUTL=,18/SEP9,18/56 PF UTILITIES CONTROL
- VFD 24/0LNPC=,18/ABS4,18/0 NOS CRACKING FORMAT FLAG
- CON 0
- SPACE 4,5
- ** *ARG=* ENTRY POINT.
- * ARG= ENTRY POINT PREVENTS ARGUMENTS FROM BEING PASSED
- * TO RA + ARGR, AND SUPPRESSES ARGUMENT CHECKING.
- ** *DMP=* ENTRY POINT.
- * DMP= SPECIFIES AMOUNT/100B OF FIELD LENGTH TO DUMP BEFORE
- * LOADING PROGRAM WITH *DMP=* ENTRY POINT.
- * DMP= = VFD 2/0,1/S,1/C,1/F,1/U,12/FL
- * WHERE, S = SUPPRESS DMP= ON CONTROL CARD CALL.
- * C = ONLY CREATE DM* WITH NOTHING ON IT.
- * F = DUMP FNT ENTRIES TO FILE DM*.
- * U = CREATE FILE DM* AS AN UNLOCKED FILE.
- * FL = 0, FOR DUMP OF FULL FL.
- * " 0, FOR DUMP OF FL*100B OF FL.
- ** *DPA=* ENTRY POINT.
- * *DPA=* SIGNIFIES THAT ARGUMENTS ARE PASSED TO A *DMP=*
- * PROGRAM VIA *ARGR* AND *ACTR*.
- ** *RFL=* ENTRY POINT.
- * RFL= DESIGNATES THE AMOUNT OF FIELD LENGTH REQUIRED TO
- * LOAD THE JOB CONTAINING IT.
- ** *MFL=* ENTRY POINT.
- * MFL= DESIGNATES THE MINIMUM FIELD LENGTH REQUIRED BY
- * THE JOB. FIELD LENGTH WILL BE INCREASED TO THIS VALUE
- * IF LESS THAN THIS VALUE.
- ** *SDM=* ENTRY POINT.
- * SDM= ENTRY POINT CAUSES NO DAYFILE MESSAGE TO BE
- * GENERATED FOR THE CONTROL CARD CALL.
- ** *SSJ=* ENTRY POINT.
- * SSJ= ENTRY POINT MUST BE PRESENT FOR A JOB TO BE ENTERED
- * AS A SPECIAL SYSTEM JOB.
- * (*RFL=* ENTRY POINT MUST PRECEDE *SSJ=* TO ALLOW
- * ADDRESS VALIDATION IF OTHER THAN ZERO.)
- ** *VAL=* ENTRY POINT.
- * JOBS CONTAINING VAL= ENTRY POINTS ARE THE ONLY JOBS
- * ALLOWED TO EXECUTE WHEN VALIDATION BITS ARE SET IN THE
- * CONTROL POINT AREA.
- ** *SSM=* ENTRY POINT.
- * SSM= ENTRY POINT PREVENTS DUMPS OF THE FIELD LENGTH
- * ASSOCIATED WITH THE JOBS CONTROL POINT.
- ** *CLB=* ENTRY POINT.
- * THE VALUE OF THE CLB= ENTRY POINT SPECIFIES THE ADDRESS
- * OF THE INPUT FET FOR A COMMAND LINE BUFFER. THE COMMAND
- * LINE WILL BE TRANSFERRED TO THE BUFFER BEFORE THE PROGRAM
- * CONTAINING THE CLB= BEGINS EXECUTION. THIS IS ONLY
- * VALID FOR TXOT JOBS.
- ** *LDR=* ENTRY POINT.
- * THE *LDR=* ENTRY POINT ALLOWS THE LOADED PROGRAM
- * TO USE *CIO* CALLS TO READ AN *EXECUTE-ONLY* FILE.
- ** *LIB=* ENTRY POINT.
- * THE *LIB=* ENTRY POINT IS DEFINED TO ALLOW THE GLOBAL
- * LIBRARY UTILITY EXECUTE-ONLY FILE ACCESS. THIS ENTRY
- * POINT SHOULD NOT BE USED BY ANY OTHER PROGRAM IF
- * SYSTEM EXECUTE-ONLY FILE SECURITY IS TO BE MAINTAINED.
- ** *UTL=* ENTRY POINT.
- * ALLOWS JOBS (PRIMARILY INTENDED FOR PF UTILITIES) TO
- * EXECUTE ON AN *OFF* DEVICE, WHEREAS JOBS WILL NORMALLY
- * ROLLOUT WHEN ATTEMPTING TO ACCESS SUCH A DEVICE UNTIL IT
- * HAS BEEN RETURNED TO SERVICE.
- ** *NPC=* ENTRY POINT.
- * SETS NOS CRACKING FORMAT WHEN PROGRAM IS EXECUTED
- * FROM A USER LIBRARY. IT IS IGNORED BY *SYSEDIT*.
- * PROCESS *DMP=* ENTRY.
- SEP1 MX3 -18
- BX2 -X0*X2
- SA1 SEPA
- LX3 18
- MX4 -1
- LX2 18
- BX1 X3*X1
- SX6 B1
- BX1 X2+X1
- EQ SEP7
- * PROCESS *SSJ=* ENTRY.
- SEP2 BX6 -X0*X2
- MX3 -17
- AX1 48
- BX2 -X3*X2
- SX4 X2+SSJL ADD PARAMETER AREA BUFFER
- MX3 -11
- BX1 -X3*X1
- ZR X2,SEP3 IF NO ADDRESS SPECIFIED
- LX1 6
- IX1 X1-X4
- NG X1,ABS4 IF ILLEGAL ADDRESS
- SEP3 SA1 SEPA SET SSJ= ADDRESS IN WORD
- BX1 X0*X1
- BX1 X1+X6
- SEP4 MX4 -1
- SX6 B1
- EQ SEP7
- * PROCESS *MFL=* ENTRY.
- SEP5 SX2 X2+400000B
- * PROCESS *RFL=* ENTRY.
- SEP6 SX6 X2+77B ROUND FIELD LENGTH
- MX4 -12
- AX6 6
- SEP7 LX4 X4,B4 SHIFT COMPLEMENT MASK
- BX3 X4*X1 CLEAR FIELD
- LX6 X6,B4 SHIFT VALUE
- BX6 -X4*X6 MASK OFF VALUE
- BX6 X3+X6 ADD VALUE TO FIELD
- SA6 A1 ENTER PARAMETER
- ZR X7,ABS3 IF LDR= ENTRY
- EQ ABS4 LOOP FOR NEXT ENTRY
- * PROCESS *CLB=* ENTRY.
- SEP8 MX3 -17
- AX1 48
- BX2 -X3*X2 GET CLB= VALUE
- MX3 -11
- SX4 X2+105B
- BX1 -X3*X1 GET MFL= VALUE
- LX1 6
- IX1 X1-X4
- NG X1,ABS4 IF ILLEGAL VALUE
- * PROCESS *ARG=*, *DPA=*, *SDM=*, *SSM=*, *UTL=* AND *VAL=*
- * ENTRIES.
- SEP9 SA1 SEPA
- EQ SEP4
- * PROCESS LDR= ENTRY.
- SEP10 SA1 SEPA
- SX5 X5-1 ADJUST ENTRY POINT COUNT
- BX7 X7-X7
- EQ SEP4 CONTINUE
- ELD SPACE 4,10
- ** ELD - ENTER PERIPHERAL LIBRARY DIRECTORY.
- *
- * ENTRY (X0) = 18 BIT MASK.
- * (X5) = PLD ENTRY.
- *
- * USES A - 3, 6.
- * B - 4, 7.
- * X - 2, 3, 6, 7.
- ELD SUBR ENTRY/EXIT
- ALLOC TLIB,B1 ALLOCATE SPACE FOR ENTRY
- SB4 X2 SET START OF DIRECTORY
- SB7 B4+X3
- BX2 X0*X5
- SB7 B7-B1 SET END OF DIRECTORY
- ELD1 EQ B4,B7,ELD2 IF START OF DIRECTORY
- SA3 B7-B1 READ NEXT ENTRY
- BX7 X0*X3
- BX6 X3 MOVE ENTRY DOWN
- IX7 X2-X7
- SA6 A3+B1
- LX7 18
- SB7 B7-B1 DECREMENT PLD ADDRESS
- NG X7,ELD1 IF NOT AT SLOT FOR NEW ENTRY
- SB7 A6
- ELD2 BX6 X5 INSERT PLD ENTRY
- SA6 B7
- EQ ELDX RETURN
- MSP SPACE 4,5
- ** MSP - PROCESS MASS STORAGE RESIDENT PPU PROGRAMS.
- *
- * ENTRY TRCD AND TRES BUILT.
- *
- * EXIT (TSCR) = MS RESIDENT PPU PROGRAMS.
- MSP PS ENTRY/EXIT
- BX6 X6-X6 CLEAR LIST TABLE
- MX0 54
- SA6 L.TLST
- SA6 L.TSCR CLEAR SCRATCH TABLE
- LX0 12
- SA0 B0
- MSP0 SA3 F.TRCD
- SB3 A0 (B3) = *TRCD* INDEX
- SB2 B1+B1
- ERRNZ C.TRCD-2 CODE ASSUMES VALUE
- * ENTER PPU PROGRAMS IN LIST FOR COPY.
- MSP1 SA5 X3+B3 NEXT ENTRY
- SX6 X5-PLRT CHECK TYPE
- SB3 B3+B2 ADVANCE INDEX
- SX7 X5-PPRT
- ZR X5,MSP3 IF END OF DIRECTORY
- ZR X6,MSP1.1 IF *PPL*
- NZ X7,MSP1 IF NOT *PP*
- MSP1.1 BX6 X5
- AX6 54
- SB7 X6+1R6&77B
- ZR B7,MSP1 IF *6*
- EQ B7,B1,MSP1 IF *7*
- SEARCH TRES,X5,X0 CHECK RESIDENCY
- ZR X2,MSP2.5 IF NOT FOUND
- SX6 X2-1
- SA3 F.TRCD
- NG X6,MSP1 IF *CM* RESIDENT
- MSP1.2 SX1 X5-PPRT
- ZR X1,MSP2 IF *PP*
- SA1 =1H LIST *IGNORED ... NOT PUT IN PPULIB*
- SA2 =10HIGNORED
- BX6 X2 SET RECORD STATUS
- LX7 X1
- SA7 LBUF
- MX7 42
- SA6 A7+B1
- SA0 B3 SAVE *TRCD* INDEX
- BX1 X7*X5 SPACE FILL NAME
- RJ SFN
- SA1 TRCN+X5 SET RECORD TYPE
- SA6 A6+1
- RJ SFN
- SA1 =17LNOT PUT IN PPULIB
- SA2 A1+B1
- SA6 A6+B1
- BX6 X1
- LX7 X2
- SA6 A6+B1
- SA7 A6+B1
- PRINT LBUF
- EQ MSP0 CHECK NEXT RECORD
- MSP2 SA1 A5+B1 ENTER NAME AND RANDOM ADDRESS
- MX3 24
- BX2 X3*X5
- AX1 24
- LX2 -6
- ADDWRD TLST,X2+X1
- SA3 F.TRCD
- EQ MSP1
- MSP2.5 SA1 DN CHECK FOR CM RESIDENT *DSD* OVERLAY
- MX2 -18
- BX7 X1-X5
- LX7 12
- BX7 -X2*X7
- ZR X7,MSP1.2 IF *9DX*
- AX7 2
- NZ X7,MSP1.2 IF NOT *9EX*, *9FX*, *9GX*
- ADDWRD A0,X1+X5 MAKE OVERLAY CM RESIDENT
- SA3 F.TRCD
- EQ MSP1 CONTINUE
- MSP3 ADDWRD TRES,X6-X6 TERMINATE *TRES*
- SA2 F.TLST SORT LIST
- SA1 L.TLST
- SB7 X2
- RJ SST
- ADDWRD TLST,X6-X6 TERMINATE LIST
- SA4 F.TEND NEW FWA
- IX7 X4-X3
- MX0 24
- SA7 A2
- SA7 F+5 SET LIST ADDRESS
- MOVE X3,X2,X7 MOVE TABLE UP
- SA1 TN DECREMENT TABLE COUNT
- SA2 PE SET SECTOR NUMBER
- SX6 X1-1
- BX7 X2
- SA6 A1
- SA7 SN
- * COPY PPU PROGRAMS TO PPU LIBRARY FILE, DELETING 7700
- * TABLE.
- READLS F
- SA1 .WPF ACTIVATE PPU LIBRARY WRITE
- SX6 B0 CLEAR SECTOR COUNT
- BX7 X1
- SA6 S+6
- SA7 SL
- MSP4 READW F,BUF,1 READ FIRST WORD
- SA2 BUF CHECK FIRST WORD
- NZ X1,MSP9 IF EOR
- LX2 18
- SX6 X2-770000B
- LX2 6
- NZ X6,PLE IF NO 7700 TABLE
- SX5 X2+1 SKIP 7700 TABLE
- MSP5 READW F,BUF,1
- SX5 X5-1
- NZ X5,MSP5
- SA2 L.TSCR COMPARE PPU CONTROL WORD AND NAME IN LIST
- SA3 F.TLST
- AX2 1
- IX6 X2+X3
- SA1 B6-1
- SA2 X6
- LX2 6
- BX7 X1-X2
- BX3 X0*X7
- ZR X3,MSP5.1 IF MATCH
- AX2 42
- BX1 X1+X3
- SX2 X2-3R1PR
- NZ X2,PLE IF NO MATCH
- MSP5.1 SX2 X1+77B SET SECTOR COUNT TO BYTE 3 OF PP HEADER
- AX2 6
- SX5 X1
- LX2 12
- BX6 X2+X1
- SA6 A1
- BX1 X1-X5
- ADDWRD TSCR,X1 ENTER PPU CONTROL WORD
- SA1 SN ENTER SECTOR NUMBER
- SX5 X5-1 SET PROGRAM WORD COUNT
- ADDWRD TSCR,X1
- SX6 77B
- NG X5,PLE IF ILLEGAL WORD COUNT
- MSP6 IX5 X5-X6 DECREMENT WORD COUNT
- PL X5,MSP7 IF NOT SHORT BLOCK
- IX6 X5+X6 SET SHORT COUNT
- MSP7 ZR X6,MSP8 IF EMPTY BLOCK
- READW F,B6,X6 READ BLOCK
- MSP8 SX6 B6-BUF SET WORD COUNT
- SA6 WC
- RJ WTB WRITE BLOCK
- SB6 BUF
- SX6 100B
- PL X5,MSP6 LOOP TO COMPLETE PROGRAM
- EQ MSP4 PROCESS NEXT PROGRAM
- * TERMINATE READ AND REQUEST MASS STORAGE TRANSLATION.
- MSP9 ADDWRD TSCR,X6-X6 TERMINATE TSCR
- ADDWRD A0,X1
- SA1 TN RESET TABLE COUNT
- SA2 S+6 SET EOF
- BX6 X6-X6 CLEAR LIST TABLE
- SX7 X1+B1
- SA6 L.TLST
- PX6 X2
- SA7 A1
- SA6 A2
- RECALL SL WAIT WRITE COMPLETE
- SA1 F.TSCR REQUEST SECTOR COUNT CONVERSION
- SA3 .CSN+1
- LX1 12
- BX7 X3+X1
- SA7 SL
- RECALL A7
- EQ MSP RETURN
- PLD SPACE 4,10
- ** PLD - GENERATE PLD.
- *
- * ENTRY (TSCR) = MS RESIDENT PPU PROGRAMS.
- * (TADR) = ALTERNATE DEVICE RESIDENT PROGRAMS.
- * (TLIB) = RPL AND RCL ENTRIES.
- *
- * EXIT (TLIB) = RPL, RCL, AND PLD.
- PLD PS ENTRY/EXIT
- SA1 .RSE GET SYSTEM EQUIPMENT
- BX6 X1
- SA6 SL
- RECALL A6
- SA1 L.TADR
- MX0 36
- SB3 B0
- SB2 B1+B1
- ZR X1,PLD2 IF NO ALTERNATE DEVICE ENTRIES
- * PROCESS ALTERNATE PLD ENTRIES.
- SX6 3
- SA6 CF SELECT SYSTEM CHECKPOINT
- SB4 59
- PLD1 SA2 F.TADR READ NEXT ENTRY
- SA1 X2+B3
- SB3 B3+B2
- ZR X1,PLD2 IF NO MORE ENTRIES
- LX6 X1,B4
- BX1 X0*X1 MASK OUT PROGRAM NAME AND EQUIPMENT
- PL X6,PLD1 IF CPU PROGRAM
- LX1 -24
- MX4 -12
- BX4 -X4*X1 EXTRACT LA
- AX1 12
- LX1 36
- BX1 X1+X4
- SA4 A1+B1
- BX4 -X0*X4 TRACK AND SECTOR
- LX4 12
- ADDWRD TLIB,X1+X4
- EQ PLD1
- * ALLOCATE PP BREAKPOINT TABLE.
- PLD2 R= A0,TLIB
- MX1 1
- DUP PBKL,1
- ADDWRD A0,X1
- * PROCESS NON-ALTERNATE PLD ENTRIES.
- SA3 L.TLIB SET FWA OF PLD
- SX7 X3+SBUF
- SB5 B0
- SB3 B0
- SA7 T1
- SA7 T2
- PLD3 SA2 F.TSCR
- SA3 X2+B3 READ NEXT ENTRY
- SB3 B3+B2
- ZR X3,PLD5 IF END OF TSCR
- BX3 X0*X3 EXTRACT NAME AND LOAD ADDRESS
- LX3 -24
- MX1 -12
- BX1 -X1*X3 EXTRACT LA
- BX6 X3-X1
- LX6 24
- BX3 X6+X1
- SA1 EQ
- BX3 X3+X1
- SA1 A3+B1
- BX1 -X0*X1 EXTRACT TRACK AND SECTOR
- LX1 12
- BX1 X1+X3
- LX6 6
- SX6 X6-1R9
- BX5 X1 SAVE ENTRY
- NZ X6,PLD4 IF NOT *9* LEVEL PROGRAM
- MX0 18
- BX3 X0*X3
- LX3 12
- SB4 X3 FIRST TWO CHARACTERS OF OVERLAY NAME
- SEARCH TADR,X5,X0 CHECK RESIDENCY
- BX1 X5
- MX0 36
- NZ X2,PLD4 IF ALTERNATE DEVICE RESIDENT
- EQ B5,B4,PLD3 IF SAME OVERLAY GROUP
- SB5 B4+ SET NEXT DISPLAY OVERLAY GROUP
- PLD4 ADDWRD TLIB,X1 MAKE DIRECTORY ENTRY
- EQ PLD3 LOOP
- * ENABLE ALTERNATE SYSTEM ENTRIES.
- PLD5 SA1 T1
- BX7 X7-X7 CLEAR ALTERNATE SYSTEM ENTRIES
- SB3 X1
- SA7 L.TSCR CLEAR SCRATCH TABLE
- SB2 X1-4
- SX7 PBKL
- PLD6 SA1 B2-B1 READ NEXT ENTRY
- SB2 B2-B1
- ZR X1,PLD8 IF END OF ALTERNATE DEVICE ENTRIES
- MX0 19
- SB4 B0
- BX6 X1
- PLD7 SA2 B3+B4 READ NEXT ENTRY
- SB4 B4+B1
- BX3 X1-X2
- BX3 X0*X3
- ZR X2,PLE IF ENTRY NOT FOUND
- NZ X3,PLD7 IF NO MATCH
- SA6 A2 SWITCH ENTRIES
- SX7 X7+B1 COUNT ENTRIES
- BX6 X2
- SA6 A1
- EQ PLD6
- * ENTER RPL ENTRIES IN PLD.
- PLD8 SA7 PL SET NUMBER OF ALTERNATE SYSTEM ENTRIES
- SA1 F.TLIB
- SA2 L.TLIB
- SA4 T1 START OF PLD
- IX3 X1+X2
- BX6 X4
- IX7 X3-X4 LENGTH OF PLD
- SA6 A1 RESET TABLE POINTERS
- SA7 A2
- SA5 SBUF INITIALIZE RPL SEARCH
- MX0 18
- SB5 X5+
- SA1 RP SET START OF RPL IN LOW CORE
- SB6 X1-SBUF
- SA6 LM SET LOW MEMORY LIMIT
- PLD9 SX6 X5 PROGRAM LENGTH
- MX7 -36 EXTRACT LOAD ADDRESS
- BX7 -X7*X5
- LX6 12
- SX1 A5+B6 RPL ADDRESS
- AX7 24
- BX2 X0*X5 EXTRACT NAME
- LX1 24
- SX5 B1
- BX6 X6+X7
- LX5 41
- BX1 X1+X5 MERGE *RPL* FLAG
- BX1 X1+X2
- LX2 18
- SX3 X2-3RSFP
- BX5 X1+X6
- NZ X3,PLD10 IF NOT *SFP*
- BX6 X5
- SA6 T1 SAVE SFP ENTRY
- EQ PLD12
- * ADJUST LOAD ADDRESS AND PROGRAM LENGTH TO NOT LOAD HEADER
- * WORD FOR *6XX* AND *7XX* PROGRAMS.
- PLD10 AX2 12
- SB3 X2-1R6
- SX3 B1
- LT B3,B0,PLD11 IF .LT. *6XX*
- ZR B3,PLD10.1 IF *6XX* DO NOT INCREMENT CM ADDRESS
- GT B3,B1,PLD11 IF *8XX* OR *9XX* LOAD HEADER WORD
- LX3 24 INCREMENT CM ADDRESS OF LOAD
- IX5 X5+X3
- PLD10.1 SX3 -10000B+5
- IX5 X5+X3
- PLD11 RJ ELD ENTER LIBRARY DIRECTORY
- * ADVANCE TO NEXT *RPL* ENTRY.
- PLD12 SA5 A5+B5 READ NEXT RPL ENTRY
- SB5 X5
- NZ X5,PLD9 IF NOT END OF RPL
- * CHECK AND PROCESS SYNONYMS.
- PLD13 SA2 L.TSYN
- SA1 F.TSYN
- ZR X2,PLD14 IF END OF SYNONYMS
- SX6 X2-C.TSYN REMOVE ENTRY FROM TABLE
- IX3 X1+X6 SET ADDRESS OF NEXT ENTRY
- SA6 A2
- SA3 X3 READ PRIMARY NAME
- SEARCH TLIB,X3,X0
- ZR X2,PLD13 IF PRIMARY PROGRAM NOT IN PLD
- SA3 A3+B1
- BX2 -X0*X2 GENERATE ENTRY FOR SYNONYM
- LX6 X3
- BX5 X3+X2
- RJ MES
- NZ X2,PLD13 IF SYNONYM NAME EXISTS IN PLD
- RJ ELD ENTER SYNONYM IN PLD
- EQ PLD13 LOOP
- PLD14 ALLOC TLIB,B1+B1 ALLOCATE SPACE FOR *SFP*
- IX3 X2+X3
- SX6 SBUF RESET POINTERS TO INCLUDE RPL, RCL, PLD
- IX7 X3-X6
- SA6 LM RESET LOW MEMORY LIMIT
- SA7 A3
- SA6 A2
- SA1 T1 SFP ENTRY IS LAST
- MX4 1
- BX1 -X0*X1
- LX4 42-59
- BX7 X7-X7
- BX6 X1+X4
- SA7 X3-1 SET END OF TABLE
- SA6 A7-B1 *SFP* ENTRY TO LAST PLD SLOT
- * SET UP BREAKPOINT INFORMATION.
- SA4 T2
- SX6 3L"PBK0" SET SEARCH FOR *0BK*
- LX6 42
- BX6 X0*X6
- RJ RRD REMOVE *0BK* FROM PLD
- BX6 X1
- ZR X1,PLD16 IF *0BK* NOT FOUND
- LX1 59-41
- NG X1,PLD16 IF *0BK* CM RESIDENT
- SX6 0
- PLD16 SA6 X4-3 SET *0BK* RESIDENCY STATUS
- SX6 3L"PBK7"
- LX6 42 SET SEARCH FOR *7BK*
- BX6 X0*X6
- RJ RRD REMOVE *7BK* FROM PLD
- BX6 X1
- ZR X1,PLD17 IF *7BK* NOT FOUND
- LX1 59-41
- SA2 X4-3
- PL X1,PLD17 IF *7BK* NOT CM RESIDENT
- SA6 X4-4
- NZ X2,PLD IF *0BK* CM RESIDENT
- PLD17 MX6 1
- SA6 X4-4 DEACTIVATE PP BREAKPOINT TABLE
- SA6 A6+B1
- EQ PLD RETURN
- RRD SPACE 4,15
- ** RRD - REMOVE ROUTINE FROM PLD.
- *
- * ENTRY (X0) = 18 BIT MASK.
- * (X4) = FWA OF PLD.
- * (X6) = PACKAGE NAME.
- *
- * EXIT (X1) = 0 IF PACKAGE NOT FOUND.
- * (X1) = PLD ENTRY.
- *
- * USES A - 1, 2, 3, 6.
- * X - 1, 2, 3, 6.
- RRD PS ENTRY/EXIT
- SA1 X4-1
- SA3 L.TLIB
- RRD1 SA1 A1+B1 GET NEXT PLD ENTRY
- BX2 X0*X1
- ZR X1,RRD IF END OF PLD
- IX2 X2-X6
- NZ X2,RRD1 IF NOT PACKAGE
- * DECREMENT COUNT OF ENTRIES IN TLIB.
- SX6 B1
- IX6 X3-X6
- SA6 A3
- * MOVE REST OF PLD DOWN.
- SA2 A1+1 FIRST ENTRY TO MOVE
- RRD2 BX6 X2
- SA6 A2-B1 MOVE ENTRY DOWN
- SA2 A2+1
- NZ X6,RRD2 IF NOT END OF PLD
- EQ RRD RETURN
- CMC SPACE 4,10
- ** CMC - PROCESS CM RESIDENT CPU PROGRAMS.
- *
- * ENTRY TRCD AND TRES BUILT.
- * (TLIB) = RPL ENTRIES.
- *
- * EXIT (TLIB) = RPL AND RCL ENTRIES.
- * (TCMR) = RCL ADDRESSES.
- CMC PS ENTRY/EXIT
- ADDWRD TCMR,X1-X1 ADD EMPTY ENTRY
- CMC1 SA3 F.TRES SET TABLE INDEX
- SA1 CMCA
- MX0 54
- SB3 X1+
- LX0 12
- * SEARCH FOR CM RESIDENT *OVL*, *ABS* AND *PPU* PROGRAMS.
- CMC2 SA5 X3+B3 NEXT RESIDENCY ENTRY
- SX1 X5-400004B
- SB3 B3+B1 ADVANCE INDEX
- SX7 X5-400012B
- SB2 X5-400011B
- ZR X5,CMC RETURN IF END OF TABLE
- ZR X1,CMC3 IF *OVL* AND CM RESIDENT
- ZR X7,CMC3 IF *PPU* AND CM RESIDENT
- NZ B2,CMC2 IF NOT *ABS* AND CM RESIDENT
- CMC3 SX7 B3 UPDATE START INDEX
- SA7 CMCA
- SEARCH TRCD,X0*X5 SEARCH FOR RECORD
- ZR X2,CMC1 IF NOT FOUND
- SA3 L.TCMR RCL INDEX
- SA1 RP
- LX3 48 POSITION RCL INDEX
- SA5 A2+B1 SET TCMR INDEX
- SA4 L.TLIB
- IX1 X1+X4 COMPUTE RCL ADDRESS
- BX6 X3+X5
- MX4 42
- SA6 A5+ STORE UPDATED TRCD ENTRY
- BX6 X4*X2
- SA6 T1
- ADDWRD TCMR,X1
- SA1 T1
- ADDWRD TLIB,X1 ENTER NAME IN DIRECTORY
- * READ PROGRAM TO TLIB.
- SX7 X3-1 SAVE INDEX OF ENTRY
- SA7 T1
- RECALL F
- RJ INC INITIALIZE COPY
- NZ X7,CMC8 IF ERROR
- ALLOC TLIB,100B ALLOCATE FIRST BLOCK
- IX4 X3-X1
- IX6 X2+X4
- NZ B4,CMC4 IF NOT SCOPE *ACPM* RECORD
- IX5 X1-X5
- READW F,X6,B7 READ HEADER AND ENTRY POINTS
- SA3 F+3
- SX6 B6+ ADVANCE *OUT* OVER JUNK
- SX7 X3+2
- BX1 X5 WORD COUNT FOR REMAINDER OF BLOCK
- SA7 A3
- CMC4 READW F,X6,X1 READ REMAINDER OF BLOCK
- NG X1,CMC8 IF EOF
- NZ X1,CMC6 IF END OF RECORD
- CMC5 ALLOC A0,100B ALLOCATE FOR NEXT BLOCK
- IX4 X3-X1 SET FWA
- IX6 X2+X4
- READW F,X6,X1
- ZR X1,CMC5 LOOP TO EOR
- NG X1,CMC8 IF EOF
- CMC6 SA2 F.TLIB READ START OF RESIDENT PROGRAMS
- BX6 X0
- SB2 X2
- NG X6,CMC7 IF NOT *ACPM* RECORD
- SX1 X1+B1
- SA6 B6 APPEND *ENDS* WORD
- CMC7 SA4 T1
- IX6 X1-X2 SET LENGTH TO NEXT PROGRAM
- SA3 B2+X4
- IX0 X6-X4
- BX7 X3+X0 ADD LENGTH TO CONTROL WORD
- SA6 L.TLIB
- SA7 A3
- EQ CMC1 LOOP
- CMC8 SX0 =C* RCL.*
- EQ SFE
- CMCA CON 0
- CMP SPACE 4,5
- ** CMP - PROCESS CM RESIDENT PPU PROGRAMS.
- *
- * ENTRY TRCD AND TRES BUILT.
- *
- * EXIT (TLIB) = RPL ENTRIES.
- CMP PS ENTRY/EXIT
- SA3 F.TRES
- SB3 B0 (B3) = START INDEX
- BX6 X6-X6 CLEAR LIST TABLE
- MX0 54
- SA6 L.TLST
- LX0 12
- * ENTER PPU PROGRAMS IN LIST FOR READ.
- CMP1 SA5 X3+B3 NEXT RESIDENCY ENTRY
- SX6 X5-400000B-PLRT CHECK FOR *PPL* TYPE
- SB3 B3+B1 ADVANCE INDEX
- SX7 X5-400000B-PPRT CHECK FOR *PP* TYPE
- ZR X5,CMP2 IF END OF TABLE
- ZR X6,CMP1.1 IF *PPL* AND CM RESIDENT
- NZ X7,CMP1 IF NOT *PP* AND CM RESIDENT
- CMP1.1 SEARCH TRCD,X0*X5 SEARCH FOR RECORD
- SA3 F.TRES
- ZR X2,CMP1 IF NOT FOUND
- SA1 A2+B1 ENTER NAME AND RANDOM ADDRESS
- MX3 24
- BX6 X3*X2
- AX1 24
- ADDWRD TLST,X6+X1
- SA3 F.TRES
- EQ CMP1
- CMP2 SA1 L.TLST
- ZR X1,RPE
- RECALL F
- SA1 X2+B1 SET IN = OUT = FIRST
- SX6 X1
- SA6 A1+B1
- SA6 A6+B1
- ADDWRD TLST,X6-X6 TERMINATE TABLE
- SA4 F.TEND NEW FWA
- IX7 X4-X3
- SA7 A2
- SA6 T1 CLEAR PROGRAM COUNT
- SA7 F+5 SET LIST ADDRESS
- MOVE X3,X2,X7 MOVE TABLE UP
- SA1 TN DECREMENT TABLE COUNT
- SX6 X1-1
- SA6 A1
- * READ PPU PROGRAMS TO *TRSL*.
- READLS F
- CMP3 READW F,BUF,1 READ FIRST WORD
- SA2 BUF CHECK FIRST WORD
- NZ X1,CMP7 IF EOR
- LX2 18
- SX6 X2-770000B
- LX2 6
- NZ X6,RPE IF NO 7700 TABLE
- READW F,BUF+1,X2 SKIP 7700 TABLE
- READW X2,BUF,B1 READ PP HEADER WORD
- SA1 BUF
- MX0 24 SET PP NAME MASK
- AX1 48
- SX1 X1-776100B
- NZ X1,CMP4 IF NOT *PPL* RECORD
- MX0 18 SET PP NAME MASK
- RJ BPH BUILD PPL HEADER
- CMP4 SA2 T1 COMPARE PPU CONTROL WORD AND NAME IN LIST
- SA3 F.TLST
- IX6 X2+X3
- SA1 BUF
- SA3 X6
- BX4 X1-X3
- SX5 X1-1 SET PROGRAM WORD COUNT
- SX7 X2+B1 ADVANCE COUNT
- BX3 X0*X4
- SA7 A2
- NZ X3,RPE IF NO MATCH
- ADDWRD TLIB,X1 ENTER PPU CONTROL WORD
- SX6 77B
- NG X5,RPE IF ILLEGAL WORD COUNT
- CMP5 IX5 X5-X6 DECREMENT WORD COUNT
- PL X5,CMP6 IF NOT SHORT BLOCK
- IX6 X5+X6 SET SHORT COUNT
- CMP6 ZR X6,CMP3 IF EMPTY BLOCK
- ALLOC TLIB,X6 ALLOCATE FOR BLOCK
- IX4 X3-X1 SET FWA
- IX6 X2+X4
- READW F,X6,X1
- PL X5,CMP5 LOOP TO COMPLETE PROGRAM
- EQ CMP3 LOOP TO NEXT PROGRAM
- CMP7 SA1 TN RESET TABLE COUNT
- SX6 X1+B1
- SA6 A1
- EQ CMP RETURN
- ASR SPACE 4,10
- ** ASR - PROCESS ALTERNATE LIBRARIES.
- *
- * ENTRY TRCD AND TRES BUILT.
- * (TSCR) = MS RESIDENT PPU PROGRAMS.
- *
- * EXIT (TADR) = ALTERNATE DEVICE PPU PROGRAMS.
- ASR PS 0 ENTRY/EXIT
- MX0 54
- SB3 0 INITIALIZE INDEX
- LX0 12
- ASR1 SA1 X3+B3 READ RESIDENCY TABLE
- BX7 -X0*X1
- ZR X1,ASR3 IF END OF TABLE
- SB3 B3+B1
- ZR X7,ASR1 IF NOT ALTERNATE DEVICE ENTRY
- SX4 X7
- NG X4,ASR1 IF CM RESIDENT
- BX5 X1
- SEARCH TRCD,X5,X0
- ZR X2,ASR2 IF RECORD NOT FOUND
- SX4 X5
- SA1 X7+B1 GET RANDOM ADDRESS
- LX4 18
- SA3 F.TRCD
- IX7 X7-X3 SET TRCD INDEX
- AX1 24
- BX3 X4+X7 MERGE DEVICE ORDINAL AND TYPE
- LX3 24
- ADDWRD TADR,X3+X1
- ADDWRD A0,X1 DUP ENTRY FOR SORT
- ASR2 SA3 F.TRES
- EQ ASR1
- ASR3 ADDWRD TADR,X1
- SB6 X3 SAVE TABLE LENGTH
- ADDWRD A0,X1 TERMINATE TABLE
- SX1 B6-B1
- SB7 X2
- RJ SST SORT TADR ON DEVICE AND TYPE
- SA5 B7
- SA3 F.TRCD
- SB3 -B1
- ZR X5,ASR IF EMPTY TABLE
- MX0 18
- SB6 X3
- ASR4 LX5 6
- MX2 11
- BX4 X2*X5
- ERRNZ PPRT-1
- LX5 12+18
- NZ X4,ASR5 IF TYPE OVL OR ABS
- SA3 X5+B6
- BX6 X3
- LX5 42
- SEARCH TSCR,X6,X0 FIND ENTRY FOR LOAD ADDRESS
- SX3 X5+B3
- ZR X2,WAD8 IF RECORD NOT FOUND
- LX3 24
- BX7 -X0*X5
- LX7 42
- BX4 X2+X3 ADD DEVICE ORDINAL
- AX3 24+6
- SA7 A5+B1
- SX3 X3+B1
- ERRNZ PPRT-1
- BX6 X4+X3 ADD TYPE = *PP*
- SA6 A7-B1
- ASR5 SA5 A5+2
- NZ X5,ASR4 IF NOT END OF TABLE
- * WRITE ALTERNATE DEVICE.
- SA1 F.TADR
- SA5 X1
- BX6 X5
- SA6 T2
- SA1 T2
- WAD1 MX0 6
- SA3 A5+B1
- BX4 X0*X3 SET NEXT DEVICE
- LX7 X1
- WAD2 SA3 A3+2
- BX6 X0*X3
- IX2 X4-X6
- ZR X2,WAD2 IF SAME DEVICE
- SA2 A3-B1
- SA7 A5 RESTORE TABLE ENTRY
- BX6 X2
- SX4 A5
- SA6 T2 SAVE LIST ENTRY
- SA3 S+9
- SX7 0
- BX6 X3
- SA7 A2 CLEAR TABLE ENTRY
- SA1 .WAD
- SA6 S SET FILE NAME IN FET
- LX4 12+18
- BX6 X1+X4
- SA7 S+6 CLEAR SECTOR COUNT
- SA6 SL START *SLL*
- WAD3 SA3 A5+B1
- BX5 X3
- SA1 F+1
- AX3 24
- SX7 X7+B1
- SB4 X3
- SA7 A3
- ZR B4,WAD4 IF PP ENTRY
- SA2 F.TRCD
- MX0 42
- SA4 X2+B4
- AX3 18+12
- BX4 X0*X4
- LX3 6
- BX7 X4+X3
- SA7 A5+
- WAD4 SX2 A1-B1 SET FET ADDRESS
- LX5 24
- RJ INC INITIALIZE COPY
- NZ X7,CLD3 IF ERROR
- NZ B4,WAD4.1 IF NO SCOPE *ACPM* RECORD
- READW X2,BUF,B7 READ HEADER AND ENTRY POINTS
- SA3 X2+3
- SX6 X3+2 ADVANCE OUT OVER JUNK
- BX5 -X5
- SA6 A3
- SB7 X5+BUFL WORD COUNT FOR REMAINDER OF BLOCK
- EQ WAD6
- WAD4.1 SA1 F+3 READ *OUT*
- SA1 X1 CHECK FOR PP HEADER
- BX2 X1
- LX2 6
- AX2 54
- ZR X2,WAD5 IF NOT PP PROGRAM
- SX6 X1+77B SET SECTOR COUNT
- AX6 6
- LX6 12
- BX6 X6+X1
- SA6 A1 STORE PP HEADER WITH SECTOR COUNT
- WAD5 SB6 BUF
- SB7 BUFL SET BLOCK LENGTH
- WAD6 READW F,B6,B7
- ZR X1,WAD7 IF FULL BLOCK READ
- NG X0,WAD7 IF NOT *ACPM* RECORD
- SB6 B6+B1
- BX6 X0 APPEND *ENDS* WORD
- SB3 BUF+BUFL
- SA6 B6-1
- NE B6,B3,WAD7 IF NOT FULL SECTOR
- SX6 BUFL
- SA6 WC
- WRITEW S,A6,X6+B1 WRITE FULL SECTOR
- SA4 S+6
- SB6 BUF
- SX7 X4+1 UPDATE SECTOR COUNT
- SX1 B1
- SA7 A4
- WAD7 SX6 B6-BUF
- SA6 WC SET WORD COUNT
- BX5 X1
- WRITEW S,A6,X6+1
- SA4 S+6
- SX7 X4+B1 UPDATE SECTOR COUNT
- SA7 A4
- ZR X5,WAD5 IF NOT EOR
- SA5 A5+2
- NZ X5,WAD3 IF NOT DONE WITH DEVICE
- PX6 X7
- SA6 A4
- RECALL SL WAIT WRITE COMPLETE
- SA1 T2
- NZ X1,WAD1 IF NOT LAST ALTERNATE DEVICE
- EQ ASR RETURN
- WAD8 SX0 =C*RECORD NOT FOUND.*
- EQ ABT
- INC SPACE 4,15
- ** INC - INITIALIZE COPY.
- *
- * ENTRY X2 = FET ADDRESS.
- * X5 = RANDOM INDEX (BITS 24 - 47).
- *
- * EXIT X7 " 0 IF ERROR.
- * B4 = 0 IF SCOPE *ACPM* RECORD.
- * B7 = 0 IF 5400 TABLE.
- * *OUT* POINTER ADVANCED OVER 7700 TABLE.
- * X3 = FIRST WORD OF PROCEDURE RECORD IF FROM *PRC*.
- *
- * USES A - 1, 3, 4, 6, 7.
- * B - 2, 4, 7.
- * X - 0, 1, 3, 4, 5, 6, 7.
- INC PS 0 ENTRY/EXIT
- BX6 X6-X6 CLEAR 5400 TABLE FL SPECIFICATION
- MX0 -24
- SA6 INCA
- SA4 X2+B1
- AX5 24
- SX7 X4 SET IN = OUT = FIRST
- BX6 -X0*X5
- SA7 A4+B1
- SA6 X2+6 STORE RANDOM INDEX
- NO
- SA7 A7+B1
- READ X2
- SX5 X4
- READW X2,BUF,B1
- SA3 B6-B1
- LX3 18 CHECK FOR 7700 TABLE
- SX7 X3-770000B
- NZ X7,INC IF NO 7700 TABLE
- LX3 6
- SX4 X3+B1
- IX6 X4+X5 SET *OUT* TO BYPASS 7700 TABLE
- SA6 X2+3
- MX0 18
- SA1 X6
- BX3 X0*X1 CHECK FOR SCOPE *ACPM* TABLE
- SX5 X1
- LX3 12
- SB4 X3-5300B
- NZ B4,INC2 IF NOT *ACPM* TABLE
- BX5 -X5
- PL X5,INC1 IF MULTIPLE ENTRY POINTS
- SX5 B0
- INC1 LX0 18
- SB7 X5+B1
- BX1 X0*X1
- SA4 A1+B7 CHECK *WCL* FIELD
- LX0 18
- SA3 A4+B1 READ *ENDS* WORD
- SX5 B7
- BX3 X0*X3
- SX7 X4
- BX0 X3+X1 SAVE *ENDS* WORD
- EQ INC
- INC2 SB7 X3-5400B
- SA4 A1+4 READ *DEFL* AND *HHA*
- NZ B7,INC IF NOT 5400 TABLE
- LX4 59-17 CHECK FOR *DEFL*
- MX6 1
- SX1 X4
- LX6 43-59 SET 5400 TABLE FLAG
- SA6 INCA
- NZ X1,INC3 IF *DEFL* SPECIFIED
- LX4 59-41 CHECK FOR *HHA*
- SX1 X4
- ZR X1,INC IF *DEFL* AND *HHA* NOT SPECIFIED, RETURN
- MX4 2 SET MFL= CONTROL
- BX6 X4+X6
- INC3 SX4 X1+77B ROUND UP BY 100B
- MX0 12
- LX4 59-17
- BX4 X0*X4
- BX6 X6+X4 SET 5400 TABLE FIELD LENGTH
- SA6 INCA
- EQ INC RETURN
- INCA CON 0 5400 TABLE FIELD LENGTH SPECIFICATION
- TITLE FILE COPY ROUTINES.
- QUAL
- CPF SPACE 4,5
- ** CPF - COPY FILE.
- * COPY FILE *F* TO FILE *S*.
- CPF PS ENTRY/EXIT
- SX6 0 CLEAR WORD COUNT
- SA6 WC
- SA1 DL
- NZ X1,CPF1 IF DEADSTART LOAD
- READCW F,17B
- CPF1 RJ RDB READ BLOCK
- NG X1,CPF RETURN IF EOF
- ZR X6,CPF7 IF ZERO RECORD
- SA5 BUF SET FIRST WORD
- SX2 A5
- IX1 X2+X6 SET RECORD TYPE
- RJ SRT
- ZR X6,CPF6 IF NULL RECORD
- SX3 X6-ODRT CHECK TYPE
- ZR X3,CPF8 IF *OPLD*
- SA6 TY SET NAME AND TYPE
- SA7 CPFA+1 SET NAME IN MESSAGE
- SA2 FN SEARCH IGNORE TABLE
- LX2 12
- SEARCH TINR,X6+X2
- NZ X2,CPF5 IF FOUND
- MESSAGE CPFA,1
- RJ CRS CHECK RECORD STATUS
- SA1 TY CHECK TYPE
- SX6 X1-ULRT
- SA2 LN
- ZR X6,CPF3 IF *ULIB*
- BX6 X1-X2
- ZR X6,SLS IF *LIBDECK*/*TEXT*
- * COPY RECORD.
- CPF2 RJ WTB WRITE BLOCK
- SA1 WC
- SX6 X1-100B
- NG X6,CPF1 IF EOR
- RJ RDB READ BLOCK
- EQ CPF2 LOOP
- * COPY *ULIB*.
- CPF3 RJ WTB WRITE BLOCK
- SA1 WC CHECK WORD COUNT
- SX6 X1-100B
- NG X6,CPF4 IF SHORT BLOCK
- RJ RDB READ BLOCK
- EQ CPF3 LOOP
- CPF4 SA1 TY CHECK TYPE
- SX6 X1-ODRT
- ZR X6,CPF1 IF OPLD
- RJ RDB READ BLOCK
- NG X1,CPF RETURN IF EOF
- SX2 BUF SET RECORD TYPE
- IX1 X2+X6
- RJ SRT
- SA6 TY
- EQ CPF3
- * PROCESS IGNORED RECORD.
- CPF5 SA1 CPFA+1 SET SKIPPING MESSAGE
- BX6 X1
- SA6 CPFB+1
- MESSAGE A6-B1,1
- SA1 TY
- SX6 X1-ULRT
- SA6 CPFC
- CPF6 SA1 WC CHECK WORD COUNT
- SX6 X1-100B
- NG X6,CPF6.1 IF EOR REACHED
- RJ RDB READ BLOCK
- EQ CPF6 LOOP
- CPF6.1 SA1 CPFC
- NZ X1,CPF1 IF NOT IGNORING A *ULIB* RECORD
- SA1 TY CHECK RECORD TYPE
- SX6 X1-ODRT
- ZR X6,CPF1 IF DIRECTORY FOUND
- RJ RDB READ BLOCK
- NG X1,CPF IF EOF REACHED
- SX2 BUF
- IX1 X2+X6
- RJ SRT SET RECORD TYPE
- SA6 TY
- EQ CPF6 PROCESS NEXT RECORD
- * PROCESS ZERO RECORD.
- CPF7 SA1 =4L(00)
- ADDWRD TRCD,X1
- SA1 SN
- ADDWRD TRCD,X1
- RJ WTB WRITE BLOCK
- EQ CPF1
- * PROCESS *OPLD*.
- CPF8 SA1 WC CHECK WORD COUNT
- SX6 X1-100B
- NG X6,CPF1 IF EOR
- RJ RDB READ BLOCK
- PL X1,CPF8 IF NOT EOF
- EQ CPF RETURN ON EOF
- CPFA CON 10H COPYING
- CON 0,0
- CPFB CON 10HSKIPPING
- CON 0,0
- CPFC CON 0 *ULIB* BEING IGNORED FLAG
- CRS SPACE 4,5
- ** CRS - CHECK RECORD STATUS.
- CRS PS ENTRY/EXIT
- SA1 TY SEARCH FOR RECORD
- SEARCH TRCD,X1
- ZR X2,CRS1 IF NOT FOUND
- SA1 SN REPLACE RECORD
- BX7 X1
- SA6 A2
- SA7 A2+1
- SA3 =10HREPLACED
- EQ CRS2
- CRS1 ADDWRD TRCD,X6 ADD RECORD
- SA1 SN
- ADDWRD A0,X1
- SA3 =10HADDED
- CRS2 SA1 =1H SET SPACES
- BX6 X3 SET RECORD STATUS
- LX7 X1
- SA5 TY
- SA7 LBUF
- MX0 42
- SA6 A7+B1
- BX1 X0*X5 SPACE FILL NAME
- RJ SFN
- SA2 TRCN+X5 SET RECORD TYPE
- BX1 X0*X2
- SA6 A6+B1
- RJ SFN
- SA6 A6+1
- * COPY 7700 TABLE.
- SA1 BUF
- RJ CPT
- PRINT LBUF
- EQ CRS RETURN
- RCW SPACE 4,15
- ** RCW - READ CONTROL WORD.
- *
- * EXIT (X5) = WORD COUNT OF DATA FOLLOWING CONTROL WORD.
- * (A5) = *RDBA*.
- * TO *RDBX* IF EOF.
- *
- * USES A - 1, 5, 6, 7.
- * B - 7.
- * X - 1, 3, 5, 6, 7.
- *
- * MACROS READW.
- RCW2 SA5 B6-B1 GET CONTROL WORD
- SB7 4
- SX3 B7+B1
- SX7 X5+B7
- IX6 X7/X3 SET WORD COUNT
- SA6 A5
- AX5 36
- SX2 X5 PRU SIZE
- IX7 X2-X6 EOR IF NONZERO
- BX5 X6
- SA7 A6+B1 SAVE EOR FLAG
- RCW SUBR ENTRY/EXIT
- SA1 RCWA
- SX6 B1 CLEAR FIRST CALL FLAG
- SA6 A1
- ZR X1,RCW1 IF FIRST CALL
- SB7 1
- READW F,RDBA,B7 SKIP TRAILER CONTROL WORD
- RCW1 SB7 1 READ HEADER CONTROL WORD
- READW F,RDBA,B7
- PL X1,RCW2 IF NOT EOF
- SX6 B0+
- SA6 RCWA SET FIRST CALL FLAG FOR NEXT FILE
- SA6 RDBA REINITIALIZE *RDB*
- SA6 A6+B1
- EQ RDBX EXIT
- RCWA CON 0 FIRST CALL FLAG
- RDB SPACE 4,15
- ** RDB - READ BLOCK.
- *
- * EXIT (X6) = (WC) = BLOCK WORD COUNT.
- * (X1) .LT. 0 IF EOF.
- *
- * USES A - 1, 2, 5, 6, 7.
- * X - 1, 2, 5, 6, 7.
- *
- * CALLS RCW.
- *
- * MACROS READW.
- RDB6 SA2 A5+B1 CHECK BLOCK CONTROL WORD
- ZR X2,RDB3 IF NOT EOR
- BX6 X6-X6
- SA6 A2+ CLEAR EOR FLAG FOR NEXT CALL
- SA6 WC
- RDB SUBR ENTRY/EXIT
- SA5 RDBA WORDS LEFT IN PRU
- EQ RDB4 CONTINUE
- RDB3 RJ RCW READ CONTROL WORD
- RDB4 ZR X5,RDB6 IF NO WORDS LEFT IN PRU
- SX6 100B NORMAL BLOCK SIZE
- IX7 X5-X6
- SA7 A5
- SA6 WC SET DATA WORD COUNT
- PL X7,RDB5 IF AT LEAST 100B WORDS IN PRU
- IX6 X7+X6
- SA6 A6 RETURN WORDS REMAINING IN PRU
- BX7 X7-X7
- SA7 A5+ SET NO WORDS LEFT IN PRU
- SA7 A5+B1 CLEAR EOR FLAG FOR NEXT CALL
- RDB5 READW F,BUF,X6 READ DATA
- SA1 WC RETURN WORD COUNT
- BX6 X1
- EQ RDBX RETURN
- RDBA CON 0 WORDS LEFT IN PRU
- RDBB CON 0 EOR FLAG
- SLS SPACE 4,5
- ** SLS - SET LIBRARY STATUS.
- SLS SX7 C.TRES CLEAR RESIDENCY TABLE
- BX6 X6-X6
- SB2 B1 SET FIRST WORD
- SA7 L.TRES
- SB4 -1
- SA6 L.TSCC CLEAR LIST OF SCOPE CONTROL CARDS
- SX7 ERS1
- SA6 L.TFLO CLEAR FIELD LENGTH OVERRIDE TABLE
- SA7 ER SET ERROR RETURN
- SA6 L.TSYN CLEAR TABLE OF PPU SYNONYMS
- SA6 LS SET LIBDECK STATUS (FOUND)
- SA6 AD CLEAR ALTERNATE DEVICE STATUS
- SLS1 SA1 BUF+B2
- SA2 WC
- MX3 1
- SB3 X2
- MX4 -6
- SA5 A1 SAVE DIRECTIVE ADDRESS
- SLS2 LX1 6 UNPACK WORD
- BX6 -X4*X1
- SB4 B4+B1
- LX3 6
- SA6 LBUF+B4
- PL X3,SLS2
- SB2 B2+B1 ADVANCE WORD COUNT
- SA1 A1+B1 NEXT WORD
- ZR X6,SLS4 IF END OF DATA
- LT B2,B3,SLS2 IF NOT END OF BUFFER
- SLS3 SX7 B4 SAVE STRING BUFFER POSITION
- SA7 T2
- RJ WTB WRITE BUFFER
- SA1 WC CHECK WORD COUNT
- SX6 X1-100B
- NZ X6,CPF1 IF EOR
- RJ RDB READ BLOCK
- SA1 T2 RESTORE STRING BUFFER POSITION
- SB2 B0
- SB4 X1
- EQ SLS1
- SLS4 SX6 B2 SAVE (B2)
- SA6 T1
- RJ ERS ENTER RESIDENCY STATUS
- SA1 T1 RESTORE (B2)
- SB2 X1
- SB4 -B1
- SA2 WC
- SB3 X2
- LT B2,B3,SLS1 IF NOT END OF BUFFER
- EQ SLS3
- TITLE RESIDENCY PROCESSING.
- ERS SPACE 4,5
- ** ERS - ENTER RESIDENCY STATUS.
- *
- * ENTRY (LBUF) = DIRECTIVE.
- ERS1 SX0 200 SET RECALL CYCLE TIME
- MESSAGE ERSA DISPLAY ERROR MESSAGE
- MESSAGE A5 DISPLAY DIRECTIVE IN ERROR
- MESSAGE ERSA,2
- ERS2 RECALL PAUSE
- SX0 X0-1
- NZ X0,ERS2 WAIT 5 SECONDS
- ERS PS ENTRY/EXIT
- SB7 ERS SET COMMENT PROCESSOR ADDRESS
- KEYWD CM,RES
- KEYWD AD,RES4
- KEYWD FL,FLO
- KEYWD PPSYN,PPS
- KEYWD PROC,ERS *PROC ACCEPTED BUT NO LONGER REQUIRED
- KEYWD MS,RES1
- KEYWD SC,SCC
- EQ ERS RETURN
- ERSA DATA 10H ERROR IN
- CON 0
- FLO SPACE 4,5
- ** FLO - SET FIELD LENGTH OVERRIDE FOR SPECIFIED RECORDS.
- FLO1 ADDWRD A0,X5+X6 ADD ENTRY TO TABLE
- FLO2 SA2 B6
- SA1 B6+B1 ADVANCE CHARACTER ADDRESS
- SB2 X2-1R CHECK SEPARATOR
- ZR B2,ERS IF END OF DIRECTIVE
- NE B2,B1,ERS IF SEPARATOR NOT *,*
- FLO RJ ARN ASSEMBLE RECORD NAME
- SB2 X1-1R- CHECK SEPARATOR
- SA6 FLOA SAVE RECORD NAME + TYPE
- NZ B2,ERS IF ILLEGAL SEPARATOR
- SA2 M2
- SB7 B0 SET OCTAL CONVERSION
- SA1 A1+B1 SKIP SEPARATOR
- RJ ASN ASSEMBLE FIELD LENGTH
- BX5 X6
- SB6 A1 SAVE CHARACTER ADDRESS
- RJ DXB CONVERT FIELD LENGTH
- NZ X4,ERS IF CONVERSION ERROR
- BX5 X6
- AX6 12
- NZ X6,ERS IF FIELD LENGTH TOO LARGE
- SA1 FLOA
- MX0 42+6
- LX5 6
- LX0 6
- SEARCH TFLO,X1,X0 SEARCH TABLE FOR DUPLICATE ENTRY
- ZR X2,FLO1 IF NO PREVIOUS ENTRY
- BX7 X5+X6 REPLACE ENTRY
- SA7 A2
- EQ FLO2 LOOP
- FLOA CON 0
- RES SPACE 4,5
- ** RES - DEFINE RESIDENCY.
- RES SX0 B1
- LX0 17
- EQ RES2
- RES1 SX0 0 SET MS RESIDENCY
- RES2 RJ ARN ASSEMBLE RECORD NAME
- SX7 A1 SAVE CHARACTER ADDRESS
- SA7 CA
- BX1 X6+X0 ENTER RESIDENCY TABLE
- RJ ERT
- RES3 SA2 CA CHECK SEPARATOR
- SA3 X2
- SA1 X2+B1
- SB2 X3-1R,
- ZR B2,RES2 LOOP IF *,*
- EQ ERS
- RES4 SA2 M2
- RJ ASN ASSEMBLE EST ORDINAL
- BX5 X6
- LX6 6
- SX4 X6-1R0
- NG X4,RES6 IF DEVICE TYPE GIVEN
- SB7 0
- RJ DXB CONVERT EST ORDINAL
- NZ X4,ERS
- SX7 A1+
- LX6 48
- MX0 12
- SA7 CA
- SEARCH TLST,X6,X0
- RES5 ZR X2,ERS IF ILLEGAL ALTERNATE DEVICE
- BX0 X6
- LX0 12+12
- SA6 AD
- EQ RES3
- RES6 LX6 42
- MX0 12
- SX7 A1
- LX0 48
- SA7 CA
- SEARCH TLST,X6,X0
- BX6 -X0*X2
- EQ RES5
- PPS SPACE 4,5
- ** PPS - DEFINE PPU SYNONYMS.
- PPS SA2 M2 ASSEMBLE NAME
- RJ ASN
- SX3 B1
- ERRNZ PPRT-1
- BX0 X6+X3 SET NAME AND TYPE
- SX7 X1-1R/ CHECK NEXT CHARACTER
- NZ X7,ERS IF NOT */*
- SA1 A1+1 SKIP SEPARATOR
- PPS1 SA2 M2 ASSEMBLE SYNONYM
- RJ ASN
- SB6 A1 SAVE SEPARATOR ADDRESS
- BX5 X6
- SB2 X1-1R, CHECK SEPARATOR
- ADDWRD TSYN,X0 ENTER NAME
- ADDWRD A0,X5 ENTER SYNONYM
- NZ B2,ERS IF SEPARATOR NOT *,*
- SA1 B6+1 ADVANCE CHARACTER ADDRESS
- EQ PPS1 LOOP
- SCC SPACE 4,5
- ** SCC - DEFINE RECORDS AS SCOPE CONTROL CARDS.
- SCC RJ ARN ASSEMBLE RECORD NAME
- SX0 A1
- SB2 X1-1R,
- ADDWRD TSCC,X6 ENTER SCOPE RECORD TABLE
- NZ B2,ERS IF SEPARATOR NOT *,*
- SA1 X0+1
- EQ SCC LOOP
- SPACE 4
- KEYWD HERE
- CON 0 TERMINATE TABLE
- TITLE DIRECTIVE PROCESSING SUBROUTINES.
- ARN SPACE 4
- ** CHARACTER SENSE MASKS.
- M1 CON 37777777777765717777B MASK FOR ALL BUT < ,/->
- M2 CON 37777777777740000000B MASK FOR ALPHA/NUMERICS
- CA CON 0 CHARACTER ADDRESS
- ARN SPACE 4,15
- ** ARN - ASSEMBLE RECORD NAME.
- *
- * ENTRY (A1) = ADDRESS OF CHARACTER.
- * (X1) = CHARACTER.
- *
- * EXIT (X6) = NAME AND TYPE.
- *
- * USES A - 1, 2, 3, 6, 7.
- * B - NONE.
- * X - 1, 2, 3, 4, 6, 7.
- *
- * CALLS ASN.
- ARN2 SA3 TY ENTER TYPE
- BX6 X6+X3
- ARN PS ENTRY/EXIT
- SA2 M1 ASSEMBLE NAME
- RJ ASN
- SX7 X1-1R/ CHECK SEPARATOR
- NZ X7,ARN2 IF NOT */*
- SA3 TRCN
- SA1 A1+B1 SKIP SEPARATOR
- MX2 42
- ARN1 ZR X3,/ERR/TYP
- IX7 X3-X6
- BX4 X2*X7
- SA3 A3+B1
- NZ X4,ARN1
- SA2 A2
- SX7 A3-TRCN-1 SET TYPE
- SA7 TY
- RJ ASN ASSEMBLE NAME
- EQ ARN2
- ASN SPACE 4,15
- ** ASN - ASSEMBLE NAME.
- *
- * ENTRY (A1) = ADDRESS OF CHARACTER.
- * (X1) = CHARACTER.
- * (X2) = LEGAL CHARACTER MASK.
- *
- * EXIT (X6) = NAME.
- * (A1) = ADDRESS OF SEPARATOR CHARACTER.
- * (X1) = SEPARATOR CHARACTER.
- *
- * USES X - 1, 6, 7.
- * B - 2, 3, 4.
- * A - 1, 7.
- ASN1 LX6 6 ADVANCE ASSEMBLY
- SB2 B2-B3
- BX6 X6+X1
- SA1 A1+B1 NEXT CHARACTER
- ASN2 SB4 X1 CHECK CHARACTER
- LX7 X2,B4
- NG X7,ASN1 IF NOT SEPARATOR
- LX6 X6,B2 LEFT JUSTIFY ASSEMBLY
- SX7 X6
- ZR X6,/ERR/BKN IF BLANK NAME
- NZ X7,/ERR/TMC IF MORE THAN 7 CHARACTERS
- ASN PS ENTRY/EXIT
- SX7 A1
- SB2 60
- BX6 X6-X6 CLEAR ASSEMBLY
- SB3 6
- SA7 CA SAVE CHARACTER ADDRESS
- EQ ASN2
- CKW SPACE 4,10
- ** CKW - CHECK KEYWORD.
- * CHECK STRING BUFFER IMAGE FOR KEYWORD PROCESSING.
- * LIST 42/ NAME,18/ ADDR
- * NAME KEYWORD
- * ADDR ADDRESS OF PROCESSOR.
- * A ZERO WORD TERMINATES LIST.
- *
- * ENTRY (A0) = ADDRESS OF KEYWORD LIST.
- *T,LIST 42/ NAME, 18/ ADDR
- * (B7) = COMMENT PROCESSOR.
- *
- * EXIT TO PROCESSOR IF KEYWORD FOUND.
- CKW PS ENTRY/EXIT
- SA1 LBUF CHECK FIRST CHARACTER
- SX6 X1-1R*
- SX7 A1 SET CHARACTER ADDRESS
- NZ X6,CKW RETURN IF NOT (*)
- SA1 A1+B1 SKIP (*)
- SA2 M2 SET NORMAL NAME MASK
- SX6 X1-1R/ CHECK FOR COMMENT DIRECTIVE
- SA7 CA
- ZR X6,CKW2 IF COMMENT DIRECTIVE
- RJ ASN ASSEMBLE NAME
- SA2 A0 SET TABLE ADDRESS
- MX0 42
- SB2 -1R
- CKW1 IX4 X2-X6 COMPARE NAMES
- ZR X2,CKW RETURN IF END OF TABLE
- BX3 X0*X4
- SA2 A2+B1 NEXT ENTRY
- NZ X3,CKW1 IF NO MATCH
- SA1 A1+B1 SKIP SEPARATOR
- + SX6 X1+B2 CHECK NEXT CHARACTER
- SA1 A1+B1
- ZR X6,* LOOP IF SPACE
- SA1 A1-B1 SET CHARACTER ADDRESS
- SX6 A1
- SB2 X4 SET PROCESSOR ADDRESS
- SX7 B1 SET TYPE = PP
- ERRNZ PPRT-1
- SA6 CA
- SA7 TY
- JP B2 PROCESS KEYWORD
- * PROCESS COMMENT DIRECTIVE.
- CKW2 JP B7 EXIT TO COMMENT PROCESSOR
- TITLE UTILITY SUBROUTINES.
- ABT SPACE 4,5
- ** ABT - ABORT JOB.
- *
- * ENTRY (X0) = ADDRESS OF ABORT MESSAGE.
- *
- * EXIT JOB ABORTED.
- SFE SA3 X0
- BX7 X3
- SA7 SFEB
- SX0 SFEA
- ABT MESSAGE X0
- + SA3 DL DETERMINE IF THIS IS A DEADSTART LOAD
- NZ X3,* IF DEADSTART LOAD
- SA1 SP CHECK IF *SLL* PRESENT
- ZR X1,ABT1 IF *SLL* NOT PRESENT
- SA1 .DPE DROP *SLL* FOR ERROR CONDITION
- SX2 SL
- BX7 X1
- SA7 X2
- RECALL X2
- ABT1 RJ CMF COMPLETE FILES
- ABORT
- MOE SX0 =C*MEMORY OVERFLOW.*
- EQ ABT
- PLE SX0 =C* PLD.*
- EQ SFE
- RPE SX0 =C* RPL.*
- EQ SFE
- SFEA DATA 20HSYSTEM FILE ERROR IN
- SFEB CON 0,0L.
- BPH SPACE 4,10
- ** BPH - BUILD *PPL* HEADER.
- *
- * ENTRY ((A1)) = *PPL* TABLE HEADER.
- * ((A1)+1) = WORD 1 OF PREFIX TABLE.
- * (X0) = 77777700000000000000B.
- *
- * EXIT ((A1)) = *RPL* HEADER FOR *PPL* RECORD.
- * = 18/ NAME,2/1,16/ LOAD ADDRESS,12/,12/ LENGTH.
- * (X0) = 77777700000000000000B.
- *
- * EXIT TO *RPE* IF NAME IS NOT 3 CHARACTERS.
- *
- * USES X - 1, 2, 6, 7.
- * A - 1, 2, 7.
- BPH SUBR ENTRY/EXIT
- SA1 A1 GET *PPL* HEADER
- MX6 -12
- SA2 A1+B1 GET NAME FROM PREFIX TABLE
- MX7 -32
- BX6 -X6*X1 GET LENGTH
- BX1 -X7*X1 GET LOAD ADDRESS
- BX7 X0*X2 GET NAME
- BX2 -X0*X2
- AX1 16
- AX2 18
- SX1 X1-5+1S16 GET LOAD ADDRESS AND 16-BIT FLAG
- NZ X2,RPE IF NOT 3 CHARACTER NAME
- LX1 24
- BX7 X7+X6 MERGE LENGTH
- BX7 X7+X1 MERGE LOAD ADDRESS
- SA7 A1
- EQ BPHX RETURN
- ERT SPACE 4,10
- ** ERT - ENTER RESIDENCY TABLE.
- *
- * ENTRY (X1) = ENTRY.
- *
- * EXIT (X6) = ENTRY.
- *
- * USES X - 1, 2, 4, 6, 7.
- * B - 2, 3.
- * A - 1, 6, 7.
- ERT1 BX7 X4*X2 COMPARE
- SA1 A1+1
- BX2 X6-X1
- NZ X7,ERT1 LOOP TO HIT
- SB2 A1 CHECK SEARCH
- EQ B2,B3,ERT RETURN IF END OF TABLE
- SA6 A1-B1 REPLACE ENTRY FOUND
- SX7 X3-1 DECREMENT TABLE LENGTH
- SA7 L.TRES
- ERT PS ENTRY/EXIT
- ADDWRD TRES,X1 ENTER RESIDENCY TABLE
- SA1 X2 FIRST ENTRY
- IX7 X2+X3 SET END OF TABLE
- MX4 42+12 SET MASK
- SB3 X7
- LX4 12
- BX2 X6-X1
- EQ ERT1
- TOV SPACE 4,15
- ** TOV - MANAGED TABLE MEMORY OVERFLOW PROCESSOR.
- *
- * ENTRY (B6) = RETURN ADDRESS.
- *
- * EXIT TO *MOE* IF MEMORY NOT AVAILABLE.
- *
- * USES A - 1, 2, 3, 6, 7.
- * B - 2.
- * X - 1, 2, 3, 6, 7.
- *
- * MACROS MEMORY, MOVE, RECALL.
- TOV SA1 F.TEND FETCH END OF MANAGED TABLES
- SX7 X1+MINC
- NG X7,MOE IF INCREASE TOO LARGE
- SA3 TN
- SA7 A1 SET NEW END OF TABLES
- LX7 30 SET UP MEMORY REQUEST
- SA7 TOVA
- MEMORY ,A7,,,NA
- SB2 X3
- RECALL A7 WAIT REQUEST COMPLETE
- SA2 X2 CHECK REQUEST
- IX6 X2-X7
- SX1 B2-NTAB+1
- NG X6,MOE IF MEMORY NOT ASSIGNED
- SX7 MINC
- NZ X1,TOV1 IF TABLE COUNT NOT CHANGED
- SA3 B2+FTAB-1
- RECALL F
- SA2 F+5
- IX6 X3+X7 MOVE LAST TABLE TO END OF FL
- SA6 A3
- SA1 B2+LTAB-1
- IX7 X2+X7 ADJUST LIST ADDRESS
- SA7 A2
- MOVE X1,X3,X6
- TOV1 JP B6 RETURN TO MANAGED TABLE PROCESSOR
- TOVA CON 0 MEMORY REQUEST STATUS WORD
- WOF SPACE 4,15
- ** WOF - WRITE LINE TO OUTPUT.
- *
- * ENTRY (X1) = FWA LINE.
- * (X2) = WORD COUNT.
- * IF (X2) > 0, LINE IS *S* FORMAT.
- * IF (X2) = 0, LINE IS *C* FORMAT.
- *
- * EXIT (LC) ADVANCED.
- * (PN) ADVANCED.
- * (X2) = ADDRESS OF OUTPUT FET.
- *
- * USES X - 1, 2, 3, 4, 6, 7.
- * B - 2, 3, 4, 5, 6, 7.
- * A - 1, 2, 3, 4, 6, 7.
- WOF2 WRITES X2,B6,B7
- WOF CON 0 ENTRY/EXIT (LIST FLAG)
- SA3 LC ADVANCE LINE COUNT
- SX6 X3+B1
- SA6 A3
- SA4 A3+B1 GET PAGE LENGTH
- IX7 X6-X4
- NG X7,WOF1 IF BOTTOM OF PAGE NOT REACHED
- BX6 X1 SAVE REQUEST
- LX7 X2
- SA6 WOFA
- SA7 A6+B1
- SA1 PN ADVANCE PAGE NUMBER
- SX7 X1+B1
- SX6 3 RESET LINE COUNT
- SA6 A3
- SA7 A1
- RJ CDD CONVERT PAGE NUMBER
- MX1 60-12
- LX6 4*6 STORE PAGE NUMBER
- BX6 X1*X6
- SA6 PAGE
- CLOCK TIME
- WRITEW O,(=1H1),1
- SA1 TL
- WRITEW X2,X1,4
- WRITEW X2,TITL,TITLL
- WRITEC O,(=2L )
- WRITEC O,(=2L )
- SA1 WOFA RESTORE REQUEST
- SA2 A1+B1
- WOF1 SB7 X2
- SB6 X1
- SX2 O
- NZ B7,WOF2 IF *S* FORMAT
- WRITEC X2,B6
- EQ WOF RETURN
- WOFA CON 0,0
- WTB SPACE 4,15
- ** WTB - WRITE BLOCK.
- * WRITE BLOCK TO SYSTEM FILE VIA *SLL* BUFFER.
- * *SLL* IS PRESUMED TO BE ACTIVE.
- *
- * ENTRY (WC) = WORD COUNT OF BLOCK.
- * (BUF - BUF+77B) = BLOCK.
- *
- * EXIT (SN) ADVANCED BY 1.
- *
- * USES X - 1, 2, 3, 4, 6, 7.
- * B - NONE.
- * A - 1, 2, 3, 4, 6, 7.
- WTB PS ENTRY/EXIT
- SA1 WC WRITE BLOCK
- WRITEW S,A1,X1+B1
- SA1 SN ADVANCE SECTOR NUMBER
- SA2 S+6 ADVANCE SECTOR COUNT
- SX3 B1
- IX6 X1+X3
- IX7 X2+X3
- SA6 A1
- SA7 A2
- EQ WTB RETURN
- SPACE 4,5
- ** COMMON DECKS.
- *CALL COMCCIO
- *CALL COMCCDD
- *CALL COMCCVL
- *CALL COMCCPT
- *CALL COMCMTP
- *CALL COMCMVE
- *CALL COMCRDS
- *CALL COMCRDW
- *CALL COMCSFN
- *CALL COMCSRT
- *CALL COMCSST
- *CALL COMCSTF
- *CALL COMCSYS
- *CALL COMCWTC
- *CALL COMCWTS
- *CALL COMCWTW
- *CALL COMCDXB
- *CALL COMCLFM
- TITLE DIRECTIVE CARD PROCESSING.
- QUAL RDC
- I BSS 0
- INPUT FILEC IBUF,IBUFL,(FET=8)
- LC CON 0 LIBRARY CHANGE FLAG
- ZO CON 0 NON-ZERO IF *Z* OPTION SELECTED
- RDC SPACE 4,5
- ** RDC - READ DIRECTIVE CARDS.
- RDC2 SA1 LC
- ZR X1,RDC3 IF NO LIBRARY CHANGES
- WRITER S DUMP SCRATCH FILE
- SA2 S ADD FILE TO FILE TABLE
- MX3 42
- ADDWRD TFIL,X3*X2
- SA1 SC SET SYSTEM CHANGE FLAG
- SX6 X1+B1
- SA6 A1
- RDC3 RECALL S
- SA1 X2+B1 SET IN = OUT = FIRST
- SX6 X1
- SA6 A1+B1
- SA6 A6+B1
- RDC PS ENTRY/EXIT
- SX7 0
- SA1 I
- SX6 RDC1 SET ERROR RETURN
- SA7 EC CLEAR ERROR COUNT
- SA2 ZO
- SA6 ER SET ERROR RETURN
- NZ X2,RDC1 IF *Z* OPTION SELECTED
- ZR X1,RDC3 IF NO INPUT FILE
- SX2 I CHECK FOR TERMINAL INPUT
- RJ STF
- ZR X6,RDC1.1 IF INPUT ASSIGNED TO TERMINAL
- READ I
- RDC1 READS I,LBUF,LBUFL READ DIRECTIVE CARD
- NZ X1,RDC2 IF EOR
- * PROCESS KEYWORDS.
- SB7 COM SET COMMENT PROCESSOR ADDRESS
- KEYWD AD,ADR
- KEYWD CM,CMR
- KEYWD D,DELETE
- KEYWD DELETE
- KEYWD FILE
- KEYWD FL,FLO
- KEYWD IGNORE
- KEYWD MS,MSR
- KEYWD PPSYN
- KEYWD PROC,LDC *PROC ACCEPTED BUT NO LONGER REQUIRED
- KEYWD SC,SCC
- EQ /ERR/ILD ILLEGAL DIRECTIVE
- RDC1.1 SX0 =C/ TERMINAL INPUT NOT VALID. USE *I* OR *Z* OPTION./
- EQ ABT ABORT
- AD SPACE 4,5
- *** *AD E,TY1/REC1,TY2/REC2,...,TYN/RECN
- *
- * DEFINE MASS STORAGE RESIDENCY ON ALTERNATE EQUIPMENT
- * *E* FOR RECORDS *TYN/RECN*
- ADR SA2 M2
- RJ ASN
- SB2 X1-1R, CHECK SEPARATOR
- SA1 A1+1
- NZ B2,/ERR/ISP IF NOT COMMA
- SA2 ADRA MASK FOR PERMISSIBLE RECORD TYPES
- JP CMR1
- * MASK FOR PERMISSIBLE *AD RECORD TYPES.
- ADRA CONRT (PPRT,RLRT,OVRT,ABRT,PLRT),60
- CM SPACE 4,5
- *** *CM TY1/REC1,TY2/REC2,...,TYN/RECN
- *
- * DEFINE CENTRAL MEMORY RESIDENCY FOR RECORDS *TYN/RECN*.
- CMR SA2 CMRB MASK FOR PERMISSIBLE RECORD TYPES
- CMR1 BX7 X2
- SA7 CMRA
- CMR2 RJ ARN ASSEMBLE RECORD NAME
- SA2 CMRA CHECK TYPE
- SB2 X6
- LX3 X2,B2
- PL X3,/ERR/ICM IF NOT LEGAL CM/AD RESIDENCE
- SB2 X1-1R CHECK SEPARATOR
- ZR B2,ALC IF END OF DIRECTIVE
- SA1 A1+1 SKIP SEPARATOR
- EQ B2,B1,CMR2 IF *,*
- EQ /ERR/ISP ILLEGAL SEPARATOR
- CMRA CON 0
- * CONRT (PPRT,RLRT,OVRT,ABRT,PLRT),60 IF *AD DIRECTIVE
- * CONRT (PPRT,OVRT,ABRT,PLRT),60 IF *CM DIRECTIVE
- * MASK FOR PERMISSIBLE *CM RECORD TYPES.
- CMRB CONRT (PPRT,OVRT,ABRT,PLRT),60
- COM SPACE 4,10
- *** */ - COMMENT.
- *
- * INSERT COMMENTS IN LIBDECK AND ON LISTING.
- COM BSS 0
- EQ ALC LIST DIRECTIVE
- MS SPACE 4,5
- *** *MS TY1/REC1,TY2/REC2,...,TYN/RECN
- *
- * DEFINE MASS STORAGE RESIDENCY FOR RECORDS *TYN/RECN*.
- MSR RJ ARN ASSEMBLE RECORD NAME
- SB2 X1-1R CHECK SEPARATOR
- ZR B2,ALC ADD LIBRARY CHANGE IF * *
- SA1 A1+1 SKIP SEPARATOR
- EQ B2,B1,MSR IF *,*
- EQ /ERR/ISP
- DELETE SPACE 4,5
- *** *DELETE TY1/REC1,TY2/REC2,...,TYN/RECN
- * *D TY1/REC1,TY2/REC2,...,TYN/RECN
- *
- * DELETE RECORDS *TYN/RECN* FROM SYSTEM LIBRARY.
- DELETE RJ ARN ASSEMBLE RECORD NAME
- SB6 A1 SAVE SEPARATOR ADDRESS
- SB2 X1-1R
- SEARCH TRCD,X6 SEARCH FOR RECORD
- ZR X2,/ERR/RNF IF NOT FOUND
- SX1 X2-ULRT CHECK TYPE = *ULIB*
- ZR X1,DEL1 IF *ULIB*
- ADDWRD TDLT,X2 ENTER DELETE TABLE
- SA1 SC SET SYSTEM CHANGE FLAG
- SX6 X1+B1
- SA6 A1
- DEL1 ZR B2,LDC IF END OF DIRECTIVE
- SA1 B6+1 ADVANCE CHARACTER ADDRESS
- EQ B2,B1,DELETE LOOP IF *,*
- EQ /ERR/ISP
- FILE SPACE 4,5
- *** *FILE LFN
- * *FILE LFN,NR
- *
- * DEFINE FILE *LFN* AS A SYSTEM CHANGE FILE. IF *NR* IS
- * NOT PRESENT, *LFN* WILL BE REWOUND BEFORE PROCESSING.
- FILE SA2 M2 ASSEMBLE NAME
- RJ ASN
- SB2 X1-1R CHECK SEPARATOR
- ZR B2,FIL1 IF SPACE
- NE B2,B1,/ERR/NME IF NOT *,*
- SA1 A1+B1 SKIP SEPARATOR
- BX5 X6
- RJ ASN
- SB2 X1-1R
- NZ B2,/ERR/IFS IF NOT SPACE
- LX6 18
- SX2 B1
- SX7 X6-2LNR
- NZ X7,/ERR/IFS IF NOT *NR*
- BX6 X5+X2
- FIL1 ADDWRD TFIL,X6 ENTER FILE NAME
- SA1 SC SET SYSTEM CHANGE FLAG
- SX6 X1+B1
- SA6 A1
- EQ LDC LIST DIRECTIVE
- FL SPACE 4,5
- *** *FL TY1/REC1-FL1,TY2/REC2-FL2,...,TYN/RECN-FLN
- *
- * SET FIELD LENGTH OVERRIDE *FLN* FOR RECORD *TYN/RECN*.
- FLO RJ ARN ASSEMBLE RECORD NAME
- SB2 X1-1R- CHECK SEPARATOR
- SB7 B0 SET OCTAL CONVERSION
- SA1 A1+B1 SKIP SEPARATOR
- NZ B2,/ERR/ISP IF ILLEGAL SEPARATOR
- SA2 M2
- RJ ASN ASSEMBLE FIELD LENGTH
- SB6 A1 SAVE CHARACTER ADDRESS
- BX5 X6 CONVERT FIELD LENGTH
- RJ DXB
- NZ X4,/ERR/ILD IF CONVERSION ERROR
- AX6 12
- SA2 B6
- NZ X6,/ERR/ILD IF FIELD LENGTH TOO LARGE
- SB2 X2-1R CHECK SEPARATOR
- ZR B2,ALC IF END OF DIRECTIVE
- SA1 B6+1 SKIP SEPARATOR
- EQ B2,B1,FLO LOOP IF *,*
- JP /ERR/ISP ILLEGAL SEPARATOR
- IGNORE SPACE 4,5
- *** *IGNORE TY1/REC1,TY2/REC2,...,TYN/RECN
- *
- * IGNORE RECORDS *TYN/RECN* ON CURRENT CHANGE FILE.
- IGNORE SA2 L.TFIL SET FILE INDEX
- SX0 X2-1
- LX0 12
- IGN1 RJ ARN ASSEMBLE RECORD NAME
- SB6 A1 SAVE CHARACTER ADDRESS
- SB2 X1-1R
- ADDWRD TINR,X6+X0 ENTER RECORD IGNORE TABLE
- ZR B2,LDC IF END OF DIRECTIVE
- SA1 B6+1
- EQ B2,B1,IGN1 IF *,*
- EQ /ERR/ISP ILLEGAL SEPARATOR
- PPSYN SPACE 4,5
- *** *PPSYN NAM/NAM1,NAM2,...,NAMN
- *
- * ADD ENTRIES TO LIBRARY TO PROVIDE SYNONYMS *NAMN* FOR
- * PPU PROGRAM *NAM*.
- PPSYN SA2 M2 ASSEMBLE NAME
- RJ ASN
- SB2 X1-1R/ CHECK SEPARATOR
- SA1 A1+1 SKIP SEPARATOR
- NZ B2,/ERR/ISP IF NOT */*
- MX2 -42 CHECK NAME
- BX7 -X2*X6
- NZ X7,/ERR/IPN
- LX6 6
- SX3 X6-1R0
- PL X3,/ERR/IPN IF NUMERIC
- PPS1 SA2 M2 ASSEMBLE SYNONYM
- RJ ASN
- MX2 -42 CHECK NAME
- BX7 -X2*X6
- NZ X7,/ERR/IPN
- LX6 6
- SX3 X6-1R0
- PL X3,/ERR/IPN IF NUMERIC
- SB2 X1-1R CHECK SEPARATOR
- ZR B2,ALC IF * *
- SA1 A1+1
- EQ B2,B1,PPS1 LOOP IF *,*
- EQ /ERR/ISP
- SC SPACE 4,5
- *** *SC TY1/REC1,TY2/REC2,...,TYN/RECN
- *
- * DEFINE RECORDS *TYN/RECN* AS SCOPE CONTROL CARDS.
- SCC RJ ARN ASSEMBLE RECORD NAME
- SA2 SCCA
- SB2 X6 SET TYPE
- LX3 B2,X2
- PL X3,/ERR/ISR IF NOT *OVL*/*ABS*
- SB2 X1-1R
- ZR B2,ALC ADD LIBRARY CHANGE IF * *
- SA1 A1+1
- EQ B2,B1,SCC IF *,*
- JP /ERR/ISP ILLEGAL SEPARATOR
- SCCA CONRT (RLRT,OVRT,ABRT),60 MASK FOR REL, OVL OR ABS
- TITLE DIRECTIVE PROCESSING ROUTINES.
- ALC SPACE 4,5
- ** ALC - ADD LIBRARY CONTROL.
- *
- * EXIT (LC) SET.
- ALC WRITES S,LBUF,LBUFL WRITE CARD TO SCRATCH FILE
- SX6 1 SET LIBRARY CONTROL FLAG
- SA6 LC
- EQ LDC LIST DIRECTIVE
- ERR SPACE 4,5
- ** ERROR PROCESSOR.
- QUAL ERR
- BKN SX0 =C*BLANK NAME FIELD.*
- EQ /RDC/LDC1
- ICM SX0 =C*ILLEGAL CM/AD RESIDENCE.*
- EQ /RDC/LDC1
- IFS SX0 =C*ILLEGAL FILE SPECIFICATION.*
- EQ /RDC/LDC1
- ILD SX0 =C*ILLEGAL DIRECTIVE.*
- EQ /RDC/LDC1
- IPN SX0 =C*ILLEGAL PPU PROGRAM NAME.*
- EQ /RDC/LDC1
- ISP SX0 =C*ILLEGAL SEPARATOR.*
- SX6 A1-1
- SA6 CA
- EQ /RDC/LDC1
- ISR SX0 =C*ILLEGAL RECORD, MUST BE REL, OVL OR ABS.*
- EQ /RDC/LDC1
- NME SX0 =C*ILLEGAL CHARACTER IN NAME.*
- EQ /RDC/LDC1 LIST ILLEGAL DIRECTIVE
- RNF SX0 =C*RECORD NOT FOUND.*
- EQ /RDC/LDC1
- TMC SX0 =C*TOO MANY CHARACTERS IN NAME FIELD.*
- EQ /RDC/LDC1
- TYP SX0 =C*ILLEGAL RECORD TYPE.*
- EQ /RDC/LDC1
- QUAL *
- LDC SPACE 4,5
- ** LDC - LIST DIRECTIVE CARD.
- *
- * ENTRY (X0) = ADDRESS OF ERROR MESSAGE.
- LDC SX0 0
- LDC1 ZR X0,LDC2 IF NO ERROR MESSAGE
- SA1 =10H *ERROR*
- MX2 -6 ENTER ERROR CODE
- SB2 -10
- LX1 6
- + BX6 -X2*X1
- LX1 6
- SA6 LBUF+B2
- SB2 B2+B1
- NG B2,*-1
- SA1 O CHECK OUTPUT FILE
- NZ X1,LDC2 IF DEFINED
- SA2 =0LOUTPUT SET FILE NAME
- SX3 15B
- BX6 X2+X3
- SX7 99999 FORCE EJECT
- SA6 A1
- SA7 //LC
- LDC2 PRINT LBUF-10,LBUFL+10
- ZR X0,RDC1 IF NO ERROR MESSAGE
- SX7 1R CLEAR LBUFFER
- SB2 LBUFL+10
- SA7 LBUF-10
- + SA7 A7+B1
- SB2 B2-B1
- NE B2,B1,*
- SA1 CA ENTER POINTER TO ERROR
- SX6 1R*
- SA6 X1
- WRITES O,LBUF-10,LBUFL+10
- WRITEW O,(=10H ****** ),1
- WRITEC O,X0
- SA1 //LC ADVANCE LINE COUNT
- SA2 EC ADVANCE ERROR COUNT
- SX6 X1+2
- SA3 ER READ ERROR RETURN
- SX7 X2+B1
- SA6 A1
- SB2 X3
- SA7 A2
- JP B2
- SPACE 4
- KEYWD HERE
- CON 0 TERMINATE TABLE
- TITLE DATA AND LBUFFERS.
- QUAL
- TRCN SPACE 4,10
- ** TRCN - TABLE OF RECORD NAMES.
- * ENTRY = 1 WORD.
- * INDEXED BY RECORD TYPE CODE.
- *
- *T 42/ TYPE,18/
- * TYPE RECORD TYPE NAME
- TRCN BSS 0
- LOC 0
- .E ECHO ,RT=("RTMIC")
- .A IFC NE,/RT//
- DATA L/RT/
- .A ELSE
- DATA -1
- .A ENDIF
- .E ENDD
- LOC *O
- CON 0 TABLE TERMINATOR
- PLR SPACE 4,10
- ** PLR - PROCESS LIBDECK RECORD.
- *
- * EXIT LIBDECK RECORD COPIED TO SCRATCH FILE *SCR*.
- PLR READS F,LBUF,LBUFL READ DIRECTIVE CARD
- NZ X1,SYE IF EOR/EOF
- RJ ERS ENTER RESIDENCY STATUS
- WRITES S,LBUF,LBUFL COPY DIRECTIVE TO SCRATCH FILE
- EQ PLR LOOP
- TITL SPACE 4,5
- * TITLE LINE.
- TITL DATA 20H
- DATA 20HSYSEDIT - VER 1.
- DATE DATA 1H
- TIME DATA 1H
- DATA 4APAGE
- PAGE DATA 1H
- TITLL EQU *-TITL
- BUFFERS SPACE 4,5
- * BUFFERS.
- USE //
- SEG
- WC CON 0 SECTOR WORD COUNT
- BUF BSS 100B SECTOR BUFFER
- BUFL EQU *-BUF
- DUP 10,1 LEADING SPACES FOR LIST
- CON 1R
- LBUF EQU *
- IBUF EQU LBUF+LBUFL+1
- OBUF EQU IBUF+IBUFL
- FBUF EQU OBUF+OBUFL
- SBUF EQU FBUF+FBUFL
- MEML EQU SBUF+SBUFL
- TITLE PRESET ROUTINES.
- PRS SPACE 4,5
- ** PRS - PRESET PROGRAM.
- ORG OBUF
- SYSEDIT SX6 A0-10B SET END OF MANAGED TABLES
- SA6 F.TEND
- SB1 1
- DATE DATE SET DATE
- GETPP BUF,LL,BUF GET PAGE SIZE PARAMETERS
- WRITEC O,BUF WRITE PRINT DENSITY FORMAT EFFECTOR
- SA1 ACTR CHECK ARGUMENT COUNT
- SB4 X1+
- ZR X1,PRS1 IF NO ARGUMENTS
- SA4 ARGR FIRST ARGUMENT
- SB5 PRSA
- RJ ARG PROCESS ARGUMENTS
- PRS1 NZ X1,PRS7 IF ARGUMENT ERROR
- SYSTEM RSB,R,PRSJ
- SA1 PRSK
- LX1 59-30
- NG X1,PRS1.1 IF *PROBE* DISABLED
- SX7 3 SET CHECKPOINT FLAG
- SA7 CF
- PRS1.1 SA3 PRSB
- BX6 X3 SET POINTER TO OUTPUT FET
- MX7 0
- SA6 B1+B1
- SA7 A6+B1
- SA7 LS CLEAR LIBDECK NOT FOUND FLAG
- SA1 CCDR-1 SPACE FILL CONTROL STATEMENT
- SB7 4
- PRS2 SA1 A1+B1
- SB7 B7-B1
- RJ SFN
- SA6 A1
- NZ B7,PRS2
- SA1 /RDC/ZO CHECK *Z* OPTION
- ZR X1,PRS3 IF *Z* NOT SELECTED
- SX2 /RDC/I INPUT FET ADDRESS
- RJ ZAP PROCESS *Z* OPTION
- PRS3 SA1 PRSD CHECK BINARY FILE NAME
- ZR X1,PRS4 IF NO BINARY FILE
- MX0 42
- ADDWRD TFIL,X0*X1 ENTER BINARY FILE
- SX6 B1+ SET SYSTEM CHANGE FLAG
- SA6 SC
- PRS4 SA5 PRSE
- ZR X5,PRS5 IF NO RESTORE OPTION
- SX6 B1 SET SYSTEM CHANGE FLAG
- SA6 SC
- SB7 B1
- RJ DXB
- NZ X4,PRS7 IF ASSEMBLY ERROR
- SX5 X6+B1
- PRS5 SA1 O CHECK OUTPUT FILE
- AX1 18
- BX6 X6-X6
- NZ X1,PRS6 IF OUTPUT FILE SPECIFIED
- SA6 O
- PRS6 RJ ISF INITIALIZE SYSTEM FILE
- SX2 S
- SA3 PRSG SET SCRATCH FILE NAME
- BX7 X3
- SA7 X2
- RETURN X2,R
- SA4 LN SEARCH FOR LIBDECK
- SEARCH TRCD,X4
- ZR X2,PRS8 IF LIBDECK NOT FOUND
- SA1 A2+B1 SET RANDOM INDEX
- BX6 X1
- SA6 F+6
- READ F
- EQ PLR PROCESS LIBDECK
- PRS7 SX0 =C*SYSEDIT ARGUMENT ERROR.*
- EQ ABT
- PRS8 WRITEW S,A4,B1 CREATE LIBDECK
- JP SYE
- PRSA BSS 0
- I ARG (/RDC/I),(/RDC/I)
- L ARG PRSC,O
- B ARG PRSD,PRSD
- R ARG PRSF,PRSE
- C ARG PRSH,CF
- Z ARG -*,(/RDC/ZO)
- NA ARG -NZ,PRSI
- CON 0
- PRSB CON 0LOUTPUT+O
- PRSC CON 0LOUTPUT+15B
- PRSD CON 0LLGO
- PRSE CON 0
- PRSF CON 0L0
- PRSG CON 0LSCR+3
- PRSH CON 3
- PRSI CON 0
- PRSJ VFD 12/0,12/1,18/SSTL,18/PRSK
- PRSK CON -1
- NZ CON 1 NON-ZERO WORD FOR ARG. DEFAULT
- ISF SPACE 4,5
- ** ISF - INITIALIZE SYSTEM FILE.
- *
- * ENTRY (X5) = RESTORE NUMBER.
- ISF6 ALLOC TLST,31 ALLOCATE SPACE FOR ASR DEVICES
- SA1 F.TLST
- SA2 .EAD
- LX1 12
- BX7 X2+X1
- SA7 SL
- RECALL A7
- SA1 ISFB PUT DSD TEXT OVERLAY IN BEGINNING OF RPL
- ADDWRD TRES,X1
- SA1 LN
- SA3 DL
- BX7 X1 SET LIBDECK NAME IN ERROR MESSAGE
- SA7 ERSA+1
- SA7 SYEC+2
- NZ X3,SYE1 IF DEAD START LOAD
- ISF PS ENTRY/EXIT
- RETURN F,R RETURN *SYSTEM*
- SA3 S
- BX6 X5 SET RESTORE NUMBER
- SX2 A3
- SA6 T2
- RETURN X2,R RETURN *PPULIB*
- SA1 S+9
- SX6 3
- BX7 X1+X6
- SA7 A3 RETURN *ALTSYS*
- RETURN X2,R
- BX7 X3 RESTORE FET
- SA7 A3
- SA1 PRSI
- SYSTEM SLL,,SL,X1
- RECALL SL
- SX7 B1+ SET *SLL* PRESENT FLAG
- SA7 SP
- SKIPEI S
- SKIPEI F,R
- RECALL S
- SA1 F+6 SET SYSTEM FILE EOI
- SA2 S+6 SET PPU LIBRARY EOI
- BX6 X1
- AX2 30
- BX7 X2
- AX6 30
- SA6 SN
- SA7 PE
- SKIPB F,2
- READ F
- ISF1 READW F,T1,1 READ FIRST WORD
- SA2 T1 CHECK FIRST WORD
- NZ X1,ISF5 IF EOR/EOF
- LX2 18
- SX6 X2-770000B
- LX2 6
- SB2 X2-16B CHECK WORD COUNT
- NZ X6,ISF5 IF NOT 7700 TABLE
- NZ B2,ISF5 IF WRONG WORD COUNT
- READW F,BUF,17B READ 7700 TABLE
- SA5 BUF+16B CHECK FIRST WORD
- SX1 X5
- LX5 18
- SX6 X5-700000B
- NZ X6,ISF5 IF NOT 7000 TABLE
- ALLOC TRCD,X1 ALLOCATE FOR TABLE
- READW F,X2,X3
- SA1 BUF SET DIRECTORY NAME
- SA2 F.TRCD SET SEARCH PARAMETERS
- BX7 X1
- SA3 L.TRCD
- SB2 B1+B1
- SA5 T2 SET RESTORE COUNT
- SA7 WDRA+1
- BX6 X6-X6
- SA1 X2 FIRST WORD
- SB3 X3
- SA3 =C*(00)*
- ISF2 NZ X1,ISF2.1 IF NOT ZERO LENGTH RECORD ENTRY
- BX7 X3
- SA7 A1 CHANGE RECORD NAME
- ISF2.1 SX7 X1-ODRT CHECK RECORD TYPE
- SB3 B3-B2
- SA1 A1+B2
- NZ X7,ISF3 IF NOT OPLD
- SX6 X6+B1 COUNT OPLD
- ZR X5,ISF3 IF NO RESTORE REQUESTED
- SX5 X5-1 COUNT CHANGE
- ZR X5,ISF4 IF FOUND
- ISF3 NZ B3,ISF2 LOOP TO END OF TABLE
- SA6 CN SET CHANGE NUMBER
- ZR X5,ISF6
- SX0 =C*REQUESTED RESTORATION NOT FOUND.*
- EQ ABT
- ISF4 SA4 A1-B1 SET RANDOM ADDRESS
- MX7 0 CLEAR RESTORE COUNT
- SA7 A5
- SA7 L.TRCD CLEAR RECORD TABLE
- RECALL F
- BX6 X4
- SA6 F+6
- READ F BEGIN READ
- EQ ISF1
- ISF5 SX0 =C*SYSTEM FILE FORMAT ERROR.*
- EQ ABT
- ISFA CON 0
- ISFB VFD 42/0L9TA,6/40B,12/1
- SPACE 4
- ** COMMON DECKS.
- QUAL$ EQU 1 PREVENT QUALIFICATION
- *CALL COMCARG
- *CALL COMCCPM
- *CALL COMCUSB
- *CALL COMCZAP
- DSL SPACE 4,5
- ** DSL - DEAD START LOAD.
- DSL1 SX6 A0-10B SET FIELD LENGTH
- SA6 F.TEND
- MX6 0 CLEAR OUTPUT FET
- SA6 O
- SA1 DSLB ENTER TAPE FILE
- ADDWRD TFIL,X1
- SX7 SL SET *SLL* CONTROL WORD ADDRESS
- SA6 F SET FILE NAME IN FET
- SX6 F SET FET ADDRESS
- SA6 B1+B1
- SA7 A6+B1
- SA5 .DS1 CHANGE MODE INSTRUCTION
- SA2 DSLC CHANGE MESSAGE
- MX3 42
- BX6 X3*X5
- LX7 X2
- SA6 A5
- SA7 CPFA
- RECALL SL
- SX6 1 SET DEAD START LOAD FLAG
- SA6 DL
- SA6 SC SET SYSTEM CHANGE
- ZR B3,ISF6 IF TAPE DEADSTART
- SA3 DSLD
- BX6 X3 MODIFY INSTRUCTIONS FOR DISK DEADSTART
- SA6 A5
- READCW F,17B
- EQ ISF6
- DSLA SA5 RDBA
- EQ RDB4 (DEADSTART LOAD)
- DSLB CON 0LSDF+3
- DSLC CON 10H LOADING
- DSLD EQ CCF2 (DISK DEADSTART)
- RFL= EQU MEML+11000B
- END
cdc/nos2.source/opl871/sysedit.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator