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