cdc:nos2.source:opl871:chkpt
Table of Contents
CHKPT
Table Of Contents
- [00010] CHKPT - CENTRAL MEMORY CHECKPOINT.
- [00014] CENTRAL MEMORY CHECKPOINT.
- [00111] CHKPT - DEFINITIONS.
- [00121] READC - REDEFINE MACRO TO READ CONTROL WORDS.
- [00144] STORAGE ASSIGNMENT.
- [00180] MAIN PROGRAM.
- [00181] CKP - MAIN LOOP.
- [00246] SUBROUTINES
- [00248] BLO - COPY FILE TO CHKPT FILE IN BLOCKED MODE.
- [00375] ERP$ - TAPE ERROR PROCESSING ROUTINE.
- [00434] CPF - COPY FILES.
- [00496] HDR - WRITE HEADER.
- [00532] POF - POSITION FILE.
- [00579] RDA - READ DATA.
- [00649] WRT - WRITE TABLE.
- [00905] COMMON DECKS AND BUFFERS.
- [00933] PRESET.
- [01213] VAL - VALIDATE ACCESS LEVEL.
Source Code
- CHKPT.txt
- 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
cdc/nos2.source/opl871/chkpt.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator