IDENT CHKPT,FETS ABS SST SYSCOM B1 ENTRY CKP ENTRY SFP ENTRY DMP= ENTRY RFL= ENTRY SSJ= TITLE CHKPT - CENTRAL MEMORY CHECKPOINT. *COMMENT CHKPT - CENTRAL MEMORY CHECKPOINT. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4 *** CHKPT - CENTRAL MEMORY CHECKPOINT. * V.A. WALSH. 72/05/05. * K.R. COMBS. 73/06/01. * M.S. CARTER. 76/10/08. SPACE 4 *** *CHKPT* PERFORMS THE CENTRAL MEMORY PORTION OF CHECKPOINT. * THE CONTROL POINT AREA AND THE USER FIELD LENGTH ARE * EXPECTED TO BE WRITTEN ON FILE DM* BEFORE *CHKPT* EXECUTION. * *CHKPT* CREATES A CHECKPOINT FILE CONTAINING INFORMATION * ABOUT THE USER FILE AS WELL AS A COPY OF THE DM* FILE. * * * OPERATOR COMMAND- * * CKP. CHECKPOINT ALL LOCAL FILES. * * CONTROL STATEMENT CALL- * * CKP. CHECKPOINT ALL LOCAL FILES. * * CKP(LFN1,LFN2,...,LFNN) CHECKPOINT ONLY THOSE FILES * SPECIFIED BY LFNI. * CONTINUATION CARDS WILL NOT BE PROCESSED. * * MACRO CALL- * * CHECKPT ADDR,SP * ADDR - ADDRESS OF PARAMETER LIST. * SP - SELECTIVE CHECKPOINT FLAG. * IF NULL - CHECKPOINT LOCAL FILES (DEFAULT). * IF NOT NULL - CHECKPOINT SPECIFIED FILES. * * PARAMETER LIST FORMAT. * *T,ADDR 12/CN,30/0,6/N,11/0,1/C *T,ADDR+1 42/LFN1,6/F,12/0 *T,ADDR+2 42/LFN2,6/F,12/0 * . * . * . *T,ADDR+N 42/LFNN,6/F,12/0 * * CN = CURRENT CHECKPOINT NUMBER. * N = NUMBER OF ENTRIES IN TABLE. * C = COMPLETION BIT SET BY CHKPT. * LFNI = LOCAL FILE NAME. * F = COPY TYPE. * 0 - BOI TO PRESENT POSITION. * 1 - PRESENT POSITION TO EOI. * 2 - ENTIRE FILE. * 3 - LAST OPERATION ON FILE WILL * DETERMINE THE COPY TYPE. * 4 - NO COPY BUT INFORMATION TABLE * ON FILE IS COPIED. SPACE 4 *** DAYFILE MESSAGES - * * * CHECKPOINT FILE ERROR.* = CHECKPOINT FILE(S) NOT * SPECIFIED CORRECTLY. * * * SECURE FILES - CHECKPOINT ABORT.* = FILE SECURITY SPECIFIED * ON FILE(S) BEING CHECKPOINTED, ABORT CHECKPOINT. * * * CHECKPOINT NNNN COMPLETE.* = CHECKPOINT NNNN HAS COMPLETED. * * * CHECKPOINT NNNN COMPLETED TO XXXXXXX.* = CHECKPOINT NNNN * HAS BEEN COMPLETED TO FILE XXXXXXX. * (ISSUED ON ALTERNATE CB FILES ONLY) * * * CHKPT UNABLE TO READ TAPE.* = ERRORS HAVE OCCURRED * WHILE READING A TAPE FILE WHICH CHKPT CANNOT PROCESS. * * * CKP REQUEST.* = A CHECKPOINT HAS BEEN INITIATED. * * * POSITION ERROR ON--XXXXXXX.* = AN ADDRESS ERROR PREVENTED * FILE XXXXXXX FROM BEING REPOSITIONED AFTER BEING CHECKPOINTED. * * * ERROR - FILE(S) NOT PROCESSED.* = FILE(S) HAD ERROR IN * PRESET, THEREFORE NOT CHECKPOINTED. * * * CONTENTS NOT CHECKPOINTED FOR FILE XXXXXXX.* = FOR FILE * XXXXXXX THE USER SELECTED OTHER THAN OPTION 4 * (INFORMATION TABLE ONLY). THE USER REQUEST HAS BEEN * IGNORED AND ONLY THE INFORMATION TABLE WAS COPIED TO THE * CHECKPOINT FILE. * * * CHECKPOINT FILE ACCESS LEVEL ERROR.* = IN A SECURE * SYSTEM, THE CHECKPOINT FILE ACCESS LEVEL IS NOT THE * SAME AS THE JOB ACCESS LEVEL LIMIT. THIS MUST BE THE * CASE TO INSURE THAT THE CHECKPOINT FILE IS SECURE * ENOUGH TO CONTAIN ALL LOCAL FILES. THE ACCESS LEVEL * OF THE CHECKPOINT FILE IS NOT CHANGED TO THIS LEVEL * SINCE THIS IS NOT POSSIBLE FOR MAGNETIC TAPE FILES OR * DIRECT ACCESS PERMANENT FILES, AND THESE ARE THE USUAL * FILE TYPES USED FOR CHECKPOINT FILES. WHEN THE * CHECKPOINT FILE IS ASSIGNED IT SHOULD BE ASSIGNED AT * THE JOB ACCESS LEVEL LIMIT. TITLE CHKPT - DEFINITIONS. SPACE 4 * ASSEMBLY CONSTANTS. BUFL EQU 1000B IBUFL EQU 2001B OBUFL EQU 2001B SBUFL EQU 402B TBUFL EQU 1001B SPACE 4 ** READC - REDEFINE MACRO TO READ CONTROL WORDS. * * FORMAT READC F,S,N * * WHERE F = ADDRESS OF FET * S = ADDRESS OF BUFFER * N = LENGTH OF BUFFER IN WORDS * * USES X - 2. * B - 6, 7. * * CALLS RDA. PURGMAC READC READC MACRO F,S,N MACREF READC R= B6,S R= B7,N R= X2,F RJ RDA ENDM TITLE STORAGE ASSIGNMENT. ORG 101B FETS BSS 0 BSS 2 STORAGE FOR READC CONTROLS I BSS 0 INPUT FILEB IBUF,IBUFL,EPR,(FET=14) O BSS 0 CCCCCCC FILEB OBUF,OBUFL,(FET=10) P BSS 0 CCCCCCM RFILEB 2,1,(FET=8) SPACE 4 * PARAMETER FLAG LOCATIONS. CKNO CON 1 CHECKPOINT NUMBER MDFL CON CKST MODE FLAG TICF CON 0 TERMINAL INTERRUPT CONTROL FLAG WORD SPFL BSSZ 1 SELECTIVE CHECKPOINT FLAG PTR BSSZ 1 POINTER FOR BLOCKED COPY(PTS TO BLOCK WORD) HDRB BSSZ 1 HEADER STORAGE WORD CSFP BSSZ 1 CONTROL STATEMENT FILE POSITION PAR BSS 101B FILE LIST AREA SPACE 4,10 * COMMON DECKS. *CALL COMCMAC *CALL COMSLFD *CALL COMSSFM *CALL COMSSSJ SPACE 4,10 * SPECIAL ENTRY POINTS. DMP= EQU 0 DUMP ENTIRE FIELD LENGTH SFP EQU 0 ENTRY POINT FOR SFP CALL SSJ= BSSZ SSJL SPECIAL SYSTEM JOB AREA TITLE MAIN PROGRAM. ** CKP - MAIN LOOP. * * ENTRY - DM* FILE CONTAINS FIELD LENGTH AND CONTROL * POINT DUMP. CKP RJ PRS PRESET PROGRAM RECALL O RJ HDR WRITE HEADER ON CHKPT FILE RJ WRT WRITE FILE TABLE TO CHKPT FILE RJ CPF COPY LOCAL FILES TO CHKPT FILE * COPY DM* FILE TO CHKPT FILE. SA1 =C/DM*/ SX3 3 BX6 X1+X3 SET FILE NAME TO DM* MX5 0 SA6 I REWIND I SX6 40000B SET DATA TYPE SB5 B1 RJ BLO COPY DM* FILE TO CHKPT FILE * PROCESS END OF CHECKPOINT. SX6 50000B SET END OF CKP SA6 A6+ WRITEW O,BUF,A6-BUF+1 WRITER O,R SA1 CKNO GET NUMBER OF THIS CHECKPOINT RJ CDD CONVERT TO DISPLAY CODE SA2 CKPA+1 MX0 -24 BX7 -X0*X6 SA1 HDRB CONTROL WORD FOR LAST WRITE TO CKP FILE LX7 24 MX6 1 BX7 X7+X2 ADD CHECKPOINT NUMBER TO DAYFILE MESSAGE SA7 A2+ BX6 X1+X6 WRITEO O WRITER O,R BKSP O BACKSPACE TO BE READY FOR NEXT CHKPT SA1 SPPR+1 SET COMPLETION BIT IN PARAMETER TABLE MX0 12 SA2 CKNO GET NUMBER OF THIS CHECKPOINT LX2 48 BX6 -X0*X1 MASK NEW NUMBER IN RESPONSE SX7 B1 BX6 X6+X7 ADD COMPLETION BIT BX6 X6+X2 ADD NEW CHECKPOINT NUMBER SA6 A1 RESTORE PARAMETER WORD SX6 3 SA1 =C*CCCCCCO* RETURN CONTROL STATEMENT FILE BX6 X1+X6 SA6 I RETURN A6 MESSAGE CKPA CHECKPOINT COMPLETE MESSAGE ENDRUN CKPA DATA 10H CHECKPOIN VFD 12/2HT ,24/0,24/4H COM DATA 6LPLETE. CKPB DATA 10HPLETED TO SCRATCH WORD-USED IF ALTERNATE CB FILES TITLE SUBROUTINES BLO SPACE 4 ** BLO - COPY FILE TO CHKPT FILE IN BLOCKED MODE. * * ENTRY (X6) = DATA TYPE. * (X5) = -1 IF COPY TO POSITION. * (B5) = 0 IF EMPTY FILE. * * EXIT FILE IN FET I COPIED TO FILE IN FET O * * CALLS NONE. * * USES A - 1, 2, 3, 4, 6, 7. * B - 2, 5, 6. * X - 1, 2, 3, 4, 6, 7. * * MACROS READ, READW, RECALL, WRITEW. BLO SUBR ENTRY/EXIT SA6 REC STORE DATA TYPE ZR B5,BLO6 IF CONTROL WORD NEEDED FOR EMPTY FILE SX7 BLO1 SET ERROR PROCESSING RETURN ADDRESS SA7 ERPA PL X5,BLO1 IF NOT COPY TO POSITION SA2 I+1 SET RANDOM FILE BIT MX1 1 LX1 60-12 BX6 X1+X2 SA6 A2 BX6 X6-X6 SA6 I+6 CLEAR RANDOM ADDRESS RETURN BLO1 READ I PL X5,BLO2 IF NOT COPY TO POSITION SA1 I+6 AX1 30 SA2 I+9 AX2 12 IX3 X2-X1 MX1 -24 BX3 -X1*X3 SB5 B0 PL X3,BLO2 IF NOT PAST POSITION EQ BLO6 BLO2 SA1 PTR RETRIEVE BLOCK WORD SA2 X1 MX3 -9 BX3 -X3*X2 SA4 REC SET DATA TYPE BX6 X3+X4 SA6 X1 UPDATE BLOCK WORD READW I,(X1+B1),X3 READ DATA IN AFTER CONTROL WORD NZ X1,BLO3 IF EOR OR EOF RECALL I WRITEW O,BUF,BUFL SX6 777B SA6 BUF RESET BLOCK WORD SX7 A6 SA7 PTR RESET LOCATION POINTER EQ BLO2 LOOP * IF END OF RECORD. BLO3 SA2 PTR UPDATE POINTERS SB5 X2 CONTROL WORD ADDRESS SB5 B6-B5 NEW ADDRESS - OLD ONE SA4 REC SX4 X4+1000B SET EOR FLAG SB5 B5-B1 NUMBER OF WORDS READ SX6 X4+B5 SB2 BUF+777B END OF BUFFER ADDRESS SA6 X2 UPDATE BLOCK WORD SX6 B2-B6 NUMBER WORDS LEFT IN BUF NG X1,BLO4 IF EOF OR EOI SA6 B6 SX7 A6 CURRENT POSITION SA7 PTR UPDATE LOCATION POINTER NZ X6,BLO1 IF NOT END OF BUFFER WRITEW O,BUF,BUFL-1 SX6 777B SA6 BUF RESET BLOCK WORD EQ BLO5 LOOP * IF END OF FILE. BLO4 SA1 PTR SA2 X1 RETRIEVE BLOCK WORD SX6 X2+1000B SET EOF FLAG SA4 I LX4 59-9 SA6 X1 NG X4,BLO6 IF EOI SX6 B2-B6 SA6 B6 SET NEW BLOCK WORD NZ X6,BLO5 IF NOT AT END WRITEW O,BUF,BUFL-1 SX6 777B SA6 BUF RESET BLOCK WORD BLO5 SX7 A6 SA7 PTR RESET LOCATION POINTER EQ BLO1 LOOP * IF EOI. BLO6 SA1 PTR SA3 REC GET DATA TYPE SX6 X3+3000B SET EOI FLAG SX6 X6+B5 SET LENGTH OF BLOCK SA6 X1 SB2 A6+B5 ADDRESS OF LAST WORD READ SB6 BUF+777B SB6 B6-B2 NUMBER WORDS LEFT IN BUF SX6 B6-B1 SA6 B2+B1 SET NEW BLOCK WORD NZ X6,BLO7 IF NOT AT END WRITEW O,BUF,BUFL-1 SX6 777B SA6 BUF BLO7 SX7 A6 SA7 PTR RESET OR UPDATE LOCATION POINTER SA1 I+1 MX2 1 LX2 60-12 BX7 -X2*X1 SA7 A1 CLEAR RANDOM PROCESSING BIT EQ BLOX RETURN ERP$ SPACE 4,10 ** ERP$ - TAPE ERROR PROCESSING ROUTINE. * * ENTRY RETURN ADDRESS SET IN (ERPA). * * EXIT TO ADDRESS IN (ERPA) IF PARITY OR WRONG PARITY ERROR * OTHERWISE ABORT. ALSO ABORT IF SECOND OCCURRANCE * OF WRONG PARITY ERROR. * * USES A - 1, 2, 3, 6, 7. * B - 3. * X - 1, 2, 3, 6, 7. * * MACROS ABORT, MESSAGE, REWIND. ERP$ SX2 37000B SA1 I BX3 X2*X1 AX3 9 SX2 X3-2 ZR X2,ERP2 IF PARITY ERROR SX3 X2-2 ZR X3,ERP3 IF WRONG PARITY ERP1 MESSAGE (=C* CHKPT UNABLE TO READ TAPE.*) ABORT * PARITY ERROR PROCESSING. ERP2 SX2 740777B CLEAR ERROR RETURN SA3 ERPA BX6 X2*X1 SA6 A1 SB3 X3 JP B3 RETURN TO CALLER * WRONG PARITY PROCESSING. ERP3 SX3 100000B SA2 REC SET PARITY BIT FOR CONTROL WORD BX6 X2+X3 SA3 ERPA CHECK IF FIRST ERROR SA6 A2 NG X3,ERP1 IF SECOND TRY MX2 1 FLAG SECOND TRY BX7 X2+X3 SX2 2 TOGGLE PARITY BIT SA7 A3 BX1 X2-X1 SX2 740777B CLEAR ERROR CODE RETURNED BX6 X2*X1 SA6 A1 SB3 X3+ REWIND A1,R JP B3 RETURN TO CALLER ERPA BSS 1 RETURN ADDRESS FOR ERROR PROCESSING REC BSSZ 1 CPF SPACE 4 ** CPF - COPY FILES. * * ENTRY NONE. * * EXIT FILES IN FILE TABLE COPIED TO CHECKPOINT FILE * AND REPOSITIONED. * * CALLS BLO, POF. * * USES A - 0, 1, 2, 3, 6. * B - 5. * X - 0, 1, 2, 3, 4, 5, 6. * * MACROS REWIND. CPF SUBR ENTRY/EXIT SA0 SBUF-2 SET TABLE ENTRY CPF1 MX3 -12 SB5 B0 PRESET EMPTY FILE FLAG SA0 A0+2 SA1 A0 GET TABLE ENTRY SA2 A1+B1 ZR X1,CPFX RETURN IF END OF TABLE SX5 B1+B1 PRESET COPY TYPE MX0 42 BX7 X1 BX6 X6-X6 SA6 I+7 SA7 A6+B1 SAVE FNT BX6 X2 SA6 A7+B1 SAVE FST MX4 -24 LX4 12 BX4 -X4*X2 ISOLATE RANDOM ADDRESS BX3 X4 ZR X4,CPF2 IF EMPTY FILE SA4 =C*CCCCCCO* BX4 X4-X1 BX6 X0*X4 SX3 3 SET DEFAULT OF BINARY ZR X6,CPF3 IF CONTROL STATEMENT FILE CPF2 MX5 -3 BX4 X2 AX4 9 BX5 -X5*X4 SX4 X5-4 ZR X4,CPF1 IF NO COPY ZR X3,CPF4 IF EMPTY BUT COPY TYPE ALREADY SPECIFIED CPF3 BX4 X0*X1 SET NAME AND STATUS IF FET BX6 X4+X3 SA6 I SX5 X5-1 SB5 B1 CLEAR EMPTY FILE FLAG ZR X5,CPF4 IF NO REWIND REQUIRED REWIND I,R CPF4 SX6 30000B SET DATA TYPE RJ BLO COPY FILE IN BLOCKED MODE REWIND I,R RJ POF POSITION FILE EQ CPF1 LOOP HDR SPACE 4 ** HDR - WRITE HEADER. * * ENTRY NONE. * * EXIT HEADER WRITTEN ON CHECKPOINT FILE. * * CALLS NONE. * * USES A - 1, 2, 6. * X - 1, 2, 6, 7. * B - NONE. * * MACROS GETJN, PDATE, WRITEW. HDR SUBR ENTRY/EXIT PDATE I+7 GET DATE AND TIME SX6 10002B SET CODE WORD SA6 BUF SA2 CKNO GET CHECKPOINT NUMBER SA1 MDFL GET MODE FLAG LX1 12 BX6 X1+X2 SA2 I+7 LX2 18 BX6 X2+X6 SA6 A6+B1 SA6 HDRB STORE HEADER GETJN BUF+2 GET JSN WRITEW O,BUF,3 SX6 777B SA6 BUF SX6 A6 SA6 PTR EQ HDRX RETURN POF SPACE 4,15 ** POF - POSITION FILE. * * ENTRY MASS STORAGE FILE REWOUND. * * EXIT MASS STORAGE FILE REPOSITIONED TO RANDOM INDEX * VALUE AT TIME OF CHECKPOINT REQUEST UNLESS AN ERROR * OCCURRED. * * USES X - 0, 1, 4, 6, 7. * A - 1, 6. * B - 3. * * MACROS EREXIT, MESSAGE, READ. POF SUBR ENTRY/EXIT SA1 I+9 SET RANDOM ADDRESS AX1 12 MX0 -24 BX6 -X0*X1 ZR X6,POFX IF NO RANDOM ADDRESS SA6 P+6 SA1 I BX6 X1 SA6 P SET FILE NAME EREXIT POF1 READ P,R EREXIT 0 EQ POFX RETURN POF1 MX0 42 SA1 I BX1 X0*X1 FILE NAME SX4 1R. RJ SFN GENERATE BIT MASK FOR FILE NAME CX7 X7 NUMBER OF BITS IN FILE NAME BX7 -X7 SB3 X7+54 SHIFT COUNT TO POSITION PERIOD LX4 X4,B3 BX6 X1+X4 INSERT FILE NAME INTO DAYFILE MESSAGE SA6 POFA+2 MESSAGE POFA * POSITION ERROR ON--XXXXXXX.* EREXIT 0 EQ POFX RETURN POFA DATA C* POSITION ERROR ON--XXXXXXX.* RDA SPACE 4 ** RDA - READ DATA. * PROCESSES CALLS TO READ WORDS (RDW=). * DEBLOCKS DATA IF CONTROL WORD READS. * * ENTRY B6 = BUFFER ADDRESS. * B7 = NUMBER OF WORDS NEEDED. * X0 = BLOCK COUNT. * X2 = FET ADDRESS. * * EXIT FET-2 CONTAINS NUMBER OF WORDS REMAINING IF BUFFER * FILLED. * XO = BLOCK COUNT (UPDATED). * X1 = -2 IF EOI. * * CALLS RDW=. * * USES A - 1, 3, 6, 7. * B - 5, 6, 7. * X - 0, 1, 4, 6, 7. RDA5 SX6 B5-B7 UPDATE WORDS REMAINING SA6 A1 RJ RDW= READ WORDS RDA PS ENTRY/EXIT RDA1 SA1 X2-2 GET NUMBER OF WORDS BEFORE CONTROL WORD SB5 X1+ PL X1,RDA2 IF NOT FIRST READ SX7 B7+ SET WORDS NEEDED SA7 RDAA JP RDA4 RDA2 GE B5,B7,RDA5 IF ENOUGH DATA TO FILL BUFFER SA3 X2-1 CHECK EOR FLAG PL X3,RDA3 IF NOT EOR ON FILE MX6 1 SET NEW READ FLAG SB7 B5+B1 SET WORDS TO READ SA6 A3 SA6 A1 RJ RDW= READ WORDS SX1 B6-B1 SET EOR INDICATION SB6 B6-B1 BACK UP LWA TO ALLOW FOR CONTROL WORD JP RDA RETURN RDA3 SX6 B7-B5 SAVE ADDITIONAL WORDS NEEDED SA6 RDAA SB7 B5+B1 SET WORDS TO TRANSFER RJ RDW= READ WORDS SB6 B6-B1 BACK UP OVER LAST CONTROL WORD RDA4 SB7 B1 READ CONTROL WORD RJ RDW= NG X1,RDA IF EOF/EOI SB6 B6-B1 BACK UP WORKING BUFFER SA1 B6 CONTROL WORD SX7 5 SX4 X1+4 ROUND UP AX1 36 EXTRACT BLOCK SIZE SX3 X1 IX7 X4/X7 WORDS IN BLOCK IX6 X7-X3 SAVE EOR FLAG SA7 X2-2 STORE WORD COUNT SA6 X2-1 EOR FLAG SA1 RDAA RESET WORDS NEEDED SB7 X1 SX0 X0+B1 INCREMENT BLOCK COUNT JP RDA1 LOOP RDAA CON 0 WRT SPACE 4 ** WRT - WRITE TABLE. * * ENTRY NONE. * * EXIT FILE TABLE WRITTEN ON CHECKPOINT FILE. * * USES X - ALL. * A - ALL. * B - 2, 5. * * MACROS ABORT, MESSAGE, MOVE, WRITEO, WRITEW. WRT SUBR ENTRY/EXIT MX0 42 SX6 20000B SET DATA TYPE SA6 REC SA5 BUF SET BUFFER ADDRESS SB2 B1+B1 * SEARCH FILE LIST. SA0 SBUF-1 SET FNT TABLE ADDRESS WRT1 SA0 A0+B2 SA1 A0 ZR X1,WRT15 IF END OF FNT TABLE MX6 -2 SET FILE TYPE INDICATOR TO ZERO IF TAPE BX3 X1 AX3 13 BX3 -X6*X3 SB3 X3-1 SA3 =C*CCCCCCO* BX2 X1-X3 BX2 X0*X2 NZ X2,WRT1.1 IF NOT CONTROL STATEMENT FILE SA2 CSFP GET CONTROL STATEMENT FILE POSITION MX6 -6 SAVE WORD COUNT BX6 -X6*X2 BX6 X6+X3 MX3 -24 SAVE PRU NUMBER LX3 6 BX3 -X3*X2 LX3 6 BX7 X3 SA6 A5 STORE ENTRY SA7 A6+B1 SA5 A5+B2 EQ WRT1 LOOP FOR ALL FNT ENTRIES * CHECK FOR CCL FILES. WRT1.1 SA3 WRTD *ZZZZZC0* SA4 WRTE *ZZZZZC2* BX7 X0*X1 IX3 X7-X3 NG X3,WRT2 IF NOT CCL FILE IX4 X4-X7 NG X4,WRT2 IF NOT CCL FILE SX7 4 EQ B3,WRT7 IF TAPE R= X7,2 EQ WRT7 MAKE TABLE ENTRY WRT2 SA3 PAR SET FILE LIST ADDRESS MX6 -30 BX3 -X6*X3 ZR X3,WRT11 IF NO TABLE AX3 12 GET NUMBER OF FILES IN LIST SB5 X3 WRT3 SA3 A3+B1 BX6 X1-X3 BX6 X0*X6 ZR X6,WRT5 IF FOUND IN LIST SB5 B5-B1 NZ B5,WRT3 LOOP ALL FILE ENTRIES SA3 SPFL CHECK IF SELECTIVE CHECKPOINT ZR X3,WRT11 IF ALL FILES REQUIRED SA3 WRTC CHECK FOR SYSTEM FILES WRT4 BX6 X1-X3 BX2 X0*X6 ZR X2,WRT4.1 IF SYSTEM FILE SA3 A3+B1 NZ X3,WRT4 LOOP BX1 X0*X1 SA3 WRTF *ZZCCLAA* IX6 X3-X1 ZR X6,WRT4.1 IF SPECIAL CCL FILE PL X6,WRT1 IF NOT SPECIAL CCL FILE SA3 A3+B1 IX2 X3-X1 NG X2,WRT1 IF NOT SPECIAL CCL FILE WRT4.1 NZ B3,WRT6 IF NOT TAPE SX7 4 EQ WRT7 STORE IN TABLE WRT5 SX7 X3 GET COPY TYPE AX7 12 NZ B3,WRT5.1 IF NOT TAPE SX2 X7-4 ZR X2,WRT7 IF COPY TYPE IS CORRECT FOR TAPE SA3 PGNR NZ X3,WRT4.1 IF CONTROL CARD CALL * ISSUE WARNING MESSAGE AND FORCE SELECTION OF COPY TYPE 4 * FOR MAGNETIC TAPE. SB6 A1+ SAVE FNT ADDRESS SB2 1R+ SB3 WRTB ASSEMBLY AREA SB5 -WRTA BX1 X0*X1 RJ SNM SET NAME IN MESSAGE MESSAGE WRTB,3,R SA1 B6 RESTORE FNT ENTRY R= B2,2 SX7 4 FORCE COPY TYPE EQ WRT7 CONTINUE WITH PROCESSING WRT5.1 SX2 X7-3 NZ X2,WRT7 IF NO STATUS CHECK NEEDED * CHECK STATUS FOR COPY TYPE. WRT6 SA3 A1+B1 GET FST SX7 B0+ SET COPY TYPE LX3 59-0 NG X3,WRT7 IF FILE WRITTEN MX4 -3 BX4 -X4*X3 SX3 X4-3 ZR X3,WRT7 IF EOI SX7 2 SET COPY TYPE * STORE IN TABLE. WRT7 SA1 A1 GET FNT/FST SA3 A1+B1 MX2 -4 BX6 X3 LX6 -4 BX4 -X2*X6 SX4 X4-4 NZ X4,WRT8 IF NOT EXECUTE-ONLY SX7 4 WRT8 MX2 -6 BX4 -X2*X1 EXTRACT FILE STATUS SX2 X4-UPST ZR X2,WRT16 IF SECURE FILES MX4 -24 LX4 12 BX4 -X4*X3 NZ X4,WRT10 IF NOT EMPTY FILE SX7 4 SET NO COPY WRT10 BX6 X1 MX0 3 LX7 9 LX0 11-59 BX4 -X0*X3 BX7 X7+X4 SA6 A5 MX0 42 SA7 A6+B1 SA5 A5+B2 UPDATE LOCATION POINTER EQ WRT1 LOOP ALL FNT ENTRIES WRT11 SA3 TSSF CHECK FOR SPECIAL SYSTEM FILES MX4 42 WRT12 BX6 X3-X1 BX6 X4*X6 ZR X6,WRT1 IF SPECIAL SYSTEM FILE SA3 A3+B1 NZ X3,WRT12 IF NOT END OF TABLE * CHECK FOR TAPE FILE. EQ B3,WRT14 IF TAPE FILE * CHECK FILE TYPE. WRT13 MX4 -12 CHECK FILE TYPE BX4 -X4*X1 AX4 6 SX6 X4-LOFT ZR X6,WRT6 IF LOCAL SX6 X4-LIFT ZR X6,WRT14 IF LIBRARY SX6 X4-PTFT ZR X6,WRT6 IF PRIMARY TERMINAL SX6 X4-QFFT ZR X6,WRT6 IF QUEUE FILE SX6 X4-INFT ZR X6,WRT6 IF INPUT FILE SX6 X4-PMFT NZ X6,WRT1 LOOP IF NOT DIRECT ACCESS FILE BX7 X1 CHECK WRITE LOCKOUT FLAG LX7 59-12 PL X7,WRT6 IF NOT READ ONLY SA3 A1+B1 CHECK FILE MODE MX4 -4 AX3 4 BX4 -X4*X3 SX6 X4-10B ZR X6,WRT6 IF READ/UPDATE SX6 X4-6 ZR X6,WRT6 IF READ/APPEND SX6 X4-5 ZR X6,WRT6 IF READ/MODIFY WRT14 SX7 4 SET COPY TYPE EQ WRT7 * END TABLE. WRT15 BX6 X6-X6 SET ZERO WORD SA6 A5 SA4 REC SX5 A6-BUF+1 BX6 X4+X5 WRITEO O WRITE CODE WORD WRITEW O,BUF,X5 WRITE TABLE MOVE X5,BUF,SBUF SX6 777B RESET POINTERS SA6 BUF SX7 A6 SA7 PTR EQ WRTX RETURN WRT16 MESSAGE (=C* SECURE FILES - CHECKPOINT ABORT.*) ABORT WRTA DATA C* CONTENTS NOT CHECKPOINTED FOR FILE +++++++.* WRTB BSSZ 5 ASSEMBLY AREA * LIST OF FILES TO BE CHECKPOINTED. WRTC DATA C*INPUT* DATA C*OUTPUT* DATA C*LGO* DATA C*PUNCH* DATA C*PUNCHB* DATA C*P8* DATA C*CCCCCCO* CON 0 WRTD DATA C*ZZZZZC0* WRTE DATA C*ZZZZZC2* WRTF DATA C*ZZCCLAA* DATA C*ZZCCLZZ* * LIST OF FILES NOT TO BE CHECKPOINTED. TSSF BSS 0 VFD 36/6LINPUT*,24/0 VFD 18/3LDM*,42/0 VFD 42/7LCCCCCCC,18/0 CON 0 COM SPACE 4 TITLE COMMON DECKS AND BUFFERS. * COMMON DECKS. *CALL COMCCDD *CALL COMCCIO *CALL COMCCPM *CALL COMCDXB *CALL COMCLFM *CALL COMCMVE *CALL COMCRDO *CALL COMCRDW *CALL COMCSFN *CALL COMCSNM *CALL COMCSYS *CALL COMCWTO *CALL COMCWTW BUF SPACE 4 * BUFFER ASSIGNMENTS. USE BUFFERS BUF EQU * IBUF EQU BUF+BUFL OBUF EQU IBUF+IBUFL SBUF EQU OBUF+OBUFL TBUF EQU SBUF+SBUFL RFL= EQU TBUF+TBUFL TITLE PRESET. PRS SPACE 4 ** PRESET ROUTINE. * * ENTRY FILE /DM*/ PRESENT. * * EXIT CHECKPOINT FILE POSITIONED. * FILE LIST IN PAR. * FNT LIST IN SBUF. * CONTROL STATEMENT FILE ATTACHED. * CHECKPOINTED NUMBER INCREMENTED. * * CALLS VAL. * * USES A - 1, 2, 3, 4, 5, 6, 7. * B - 1, 2, 4. * X - ALL. * * MACROS ABORT, ACCSF, BKSP, BKSPRU, DISTC, * GETFNT, MESSAGE, MOVE, READ, READO, * READW, REWIND, SETFS, SKIPEI, STATUS, * WRITEO, WRITEW. ORG BUF+1 PRS SUBR ENTRY/EXIT SB1 1 SA1 JOPR CHECK JOB ORIGIN TYPE AX1 24 SX2 X1-TXOT NZ X2,PRS1 IF NOT TXOT ORIGIN TYPE DISTC ON,TICF SET DISABLE TERMINAL CONTROL PRS1 SA1 PGNR CHECK FOR CONTROL CARD CALL NZ X1,PRS2 IF CONTROL CARD SA4 SPPR MX0 -18 BX5 -X0*X4 ZR X5,PRS4 IF NO LIST ADDRESS MOVE 20B,(SPPR+1),PAR GET LIST SA1 SPPR AX1 18 SX6 X1 SA6 SPFL SET SELECTIVE CHECKPOINT SA1 PAR AX1 12 SX1 X1-20B NG X1,PRS4 IF CONTAINS ENTIRE LIST * GET FILE LIST FROM DM* FILE SINCE TOO LONG FOR CONTROL PT AREA SA3 =C/DM*/ SX4 3 BX6 X3+X4 SA6 I READ I READW I,PAR,100B SA1 PAR+20B MX0 -12 BX0 -X0*X1 SB2 6 SET SHIFT COUNT AX4 B2,X5 IX0 X0-X4 GET PRU,S TO BACKSPACE SKIPEI I BKSPRU I,X0,R MX0 -6 BX5 -X0*X5 SA1 I+1 SET IN = OUT = FIRST SX6 X1 SA6 A1+B1 SA6 A6+B1 READ I READW I,PAR,X5 * READ LIST INTO PAR. READW I,PAR,100B (ONLY 77B FILES ALLOWED) REWIND I EQ PRS4 REQUEST CHECKPOINT * PROCESS CONTROL CARD CALL. * CREATE LIST. PRS2 SA1 ACTR SB4 X1 SX6 X1 ZR B4,PRS4 IF NO ARGUMENTS LX6 12 SA6 SPFL SET SELECTIVE CHECKPOINT FLAG SA6 PAR SET NUMBER OF FILES SA1 ARGR GET FIRST FILE NAME SX3 30000B SET COPY TYPE PRS3 BX6 X1+X3 SA6 A6+B1 SB4 B4-B1 SA1 A1+B1 GET NEXT FILE NZ B4,PRS3 IF MORE FILES, LOOP PRS4 MESSAGE (=C* CKP REQUEST.*) SA1 SPFL ZR X1,PRS5 IF NOT SELECTIVE CHECKPOINT SA3 PAR SET FILE LIST ADDRESS SX6 X3 SA6 A1 PRS5 SX6 777B PRESET POINTERS SA6 BUF SX7 A6+ SA7 PTR * GET CONTROL STATEMENT FILE. SX6 3 SA5 =C*CCCCCCO* BX6 X5+X6 SA6 I SET NAME IN FET STATUS I SA1 I SX1 X1-1 NZ X1,PRS6 IF ALREADY PRESENT ACCSF I,CSFP,LOCK ATTACH FILE WITH POSITION RETURNED * GET LIST OF ALL FILES. PRS6 SX6 B0 SET INITIAL CALL SA6 SBUF SA1 PRSC BX6 X1 SA6 I+8 GETFNT I SA1 SBUF NZ X1,PRS7 IF NOT ALL FILES RETURNED SA1 I+8 PL X1,PRS8 IF NO ERROR PRS7 MESSAGE (=C* ERROR - FILE(S) NOT PROCESSED.*) * PROCESS CHECKPOINT FILE(S). PRS8 SA1 I+9 ZR X1,PRS16 IF NO CHECKPOINT FILE NG X1,PRS17 IF MORE THAN TWO FILES SX3 3 SA2 A1+1 FST ENTRY FOR FILE O MX0 42 BX4 X0*X1 BX6 X4+X3 SA6 O PUT CHECKPOINT FILE NAME IN FET MX7 -6 BX6 -X7*X1 SA6 MDFL SAVE MODE OF FILE (CB OR CK) MX3 -24 AX2 12 BX0 -X3*X2 SAVE RANDOM INDEX OR BLOCK NUMBER SA1 A2+B1 ZR X1,PRS10 IF NO ALTERNATE FILE SA2 A1+1 ALTERNATE FILE FST ENTRY BX4 -X7*X1 SX7 X4-CKST ZR X7,PRS17 IF CK FILE AMONG ALTERNATE FILES BX6 X4-X6 MX4 42 NZ X6,PRS17 IF CK FILE AMONG ALTERNATE FILES SX6 3 BX4 X4*X1 BX7 X6+X4 SA7 I SET ALTERNATE FILE NAME IN SCRATCH FET SX6 77B SA6 MDFL SET MODE FLAG FOR ALTERNATE FILES AX2 12 BX6 -X3*X2 ZR X6,PRS9 IF ALTERNATE FILE EMPTY AND LOCAL SX6 X6-1 ZR X6,PRS10 IF ALTERNATE FILE EMPTY OR REWOUND READ I READO I NG X1,PRS10 IF EOF/EOI - NO DATA ON FILE PL X6,PRS10 IF NOT CODE WORD CANT BE CHECKPOINT FILE SA6 PRSA SAVE CODE WORD BKSP I,R SA1 X2+B1 SET IN = OUT = FIRST SX6 X1 SA6 A1+B1 SA6 A6+B1 EQ PRS10 DO NOT REWIND *I* * THE REWIND ON *I* TAKES PLACE TO ENSURE THE FILE IS * POSITIONED AT BOI. THIS IS NECESSARY FOR TAPE * FILES ON WHICH AN OPEN/WRITE WAS JUST PERFORMED. PRS9 REWIND I POSITION CHECKPOINT FILE TO BOI PRS10 ZR X0,PRS14 IF CHECKPOINT FILE EMPTY AND LOCAL SX6 X0-1 ZR X6,PRS15 IF CHECKPOINT FILE EMPTY OR REWOUND READ O READO O NG X1,PRS15 IF EOF/EOI - NO DATA ON FILE PL X6,PRS14 IF CHECKPOINT FILE MISPOSITIONED SA6 PRSB SAVE CODE WORD BKSP O,R SA1 X2+B1 SET IN = OUT = FIRST SX7 X1 SA7 A1+B1 SA7 A7+B1 SA5 PRSB RETRIEVE CODE WORD MX0 -12 SA1 MDFL SX1 X1-77B BX5 -X0*X5 NZ X1,PRS12 IF NO ALTERNATE FILE SX4 X5 SA5 PRSA BX5 -X0*X5 IX7 X4-X5 COMPARE CHECKPOINT NUMBERS NG X7,PRS11 IF NO NEED TO SWITCH FILES SA2 O SWITCH FILE NAMES SX5 X4 SA1 I BX6 X1 SA6 O BX6 X2 SA6 A1 PRS11 MX3 42 SA1 O FILE NAME BX1 X3*X1 SX4 1R. RJ SFN GENERATE BIT MASK FOR FILE NAME CX7 X7 NUMBER OF BITS IN FILE NAME SA2 CKPB BX7 -X7 SB3 X7+54 SHIFT COUNT TO POSITION PERIOD BX7 X2 LX4 X4,B3 SA7 A2-1 GENERATE DAYFILE MESSAGE BX6 X1+X4 SA6 A2 PRS12 SX6 X5+B1 INCREMENT CHECKPOINT NUMBER LX6 47 PL X6,PRS13 IF CHECKPOINT NUMBER LIMIT NOT REACHED MX6 1 LX6 -12 PRS13 LX6 -47 BX1 X6 SA6 CKNO SAVE CHECKPOINT NUMBER RJ VAL VALIDATE ACCESS LEVEL READ O READO O BX5 X6 BKSP O MX0 -59 BX6 -X0*X5 CLEAR LAST CHECKPOINT FLAG WRITEO O WRITER O,R SA1 MDFL CHECK MODE FLAG SX1 X1-CKST ZR X1,PRSX IF CK FILE, CONTINUE CHECKPOINT AT EOI REWIND O WRITE OVER NEXT TO LAST CHECKPOINT FILE EQ PRSX RETURN PRS14 REWIND O PRS15 SA1 MDFL MODE FLAG SX1 X1-CKST CHECK FOR CK ON 1 CB FILE ZR X1,PRS16.1 IF CK TYPE FILE NG X1,PRS16.1 IF ONLY 1 CB FILE SA1 PRSA SA2 A1+B1 BX1 X1+X2 CHECK IF EITHER FILE HAS BEEN USED ZR X1,PRS11 IF NEITHER FILE HAS BEEN USED SX5 1 SET CHECKPOINT NUMBER TWO JP PRS11 LOOP PRS16 SETFS O,CKST SET FILE CCCCCCC STATUS TO CK PRS16.1 RJ VAL VALIDATE ACCESS LEVEL EQ PRSX PRS17 MESSAGE (=C* CHECKPOINT FILE ERROR.*) ABORT PRSA BSSZ 1 TEMPORARY STORAGE FOR FILE I PRSB BSSZ 1 TEMPORARY STORAGE FOR FILE O PRSC VFD 38/0,1/1,3/0,18/SBUF *GETFNT* CONTROL WORD VAL SPACE 4,15 ** VAL - VALIDATE ACCESS LEVEL. * * ENTRY CHECKPOINT FILE CREATED AND NAME IN FET. * * EXIT ABORT, IF SECURE SYSTEM AND CHECKPOINT * FILE ACCESS LEVEL IS NOT JOB ACCESS LEVEL * LIMIT. * * USES X - 0, 1, 3, 6, 7. * A - 1, 7. * * MACROS ABORT, GETJAL, GETSSL, MESSAGE, STATUS. VAL SUBR ENTRY/EXIT GETSSL VALA GET SYSTEM SECURITY MODE SA1 VALA MX0 -3 LX1 12 BX6 -X0*X1 ZR X6,VALX IF NOT SECURE SYSTEM GETJAL VALA GET JOB ACCESS LEVEL LIMIT SA1 VALA LX1 -6 BX3 -X0*X1 SX6 B1 SET SECURITY PROCESSING BIT LX6 39-0 SA1 O+1 BX7 X1+X6 SA7 A1 STATUS O,P GET FILE ACCESS LEVEL SA1 O+4 LX1 -36 BX2 -X0*X1 IX6 X2-X3 ZR X6,VALX IF ACCESS LEVELS ARE EQUAL MESSAGE (=C* CHECKPOINT FILE ACCESS LEVEL ERROR.*) ABORT VALA CON 0 REPLY WORD SPACE 4,10 ERRNG IBUF-*+1 END