cdc:nos2.source:opl871:restart
Table of Contents
RESTART
Table Of Contents
- [00010] RESTART - RESTART CHECKPOINTED JOB.
- [00014] RESTARTS A JOB FROM INFORMATION ON A
- [00130] READX - REDEFINE MACRO TO READ CONTROL WORDS.
- [00155] STORAGE ASSIGNMENT.
- [00200] MAIN PROGRAM.
- [00201] MAIN LOOP.
- [00301] SUBROUTINES
- [00303] ERP$ - ERROR PROCESSING ROUTINE.
- [00336] CPY - COPY FILE.
- [00407] IWB - INSURE WORD IN BUFFER.
- [00447] PSF - POSITION FILE.
- [00630] PRT - PROCESS FILE TABLE.
- [00825] RCC - RENAME/RETURN CCL FILES.
- [00870] RDA - READ DATA.
- [00941] SMD - SET FILE ACCESS MODE.
- [00982] COMMON DECKS AND BUFFERS.
- [01004] PRESET.
Source Code
- RESTART.txt
- IDENT RESTART,FETS
- ABS
- SST
- SYSCOM B1
- ENTRY RESTART
- ENTRY LIB=
- ENTRY DMP=
- ENTRY RFL=
- ENTRY SSJ=
- TITLE RESTART - RESTART CHECKPOINTED JOB.
- *COMMENT RESTART - RESTART CHECKPOINTED JOB.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- SPACE 4
- *** RESTART - RESTARTS A JOB FROM INFORMATION ON A
- * CHECKPOINT FILE.
- * V.A. WALSH. 72/06/01.
- * K.R. COMBS. 73/06/01.
- * M.S. CARTER. 76/06/01.
- SPACE 4
- *** CONTROL CARD FORMAT -
- *
- * RESTART(FILE,N,RI,NA,FC)
- * *FILE* = FILENAME OF CHECKPOINT FILE.
- * *N* = NUMBER OF CHECKPOINT TO USE. IF N=*, THE
- * LAST CHECKPOINT ON THE FILE WILL BE USED.
- * IF NOT PRESENT, SYSTEM ASSUMES 1.
- * *RI* = REPLACE INPUT OPTION. IF PRESENT, THE INPUT
- * FILE OF THE CHECKPOINT JOB WONT BE RESTORED.
- * *NA* = NO ABORT OPTION. IF PRESENT, RESTART WILL
- * NOT ABORT IF ALL FILES NEEDED ARE NOT PRESENT.
- * IF A PARITY ERROR IS ENCOUNTERED, CHECKPOINT
- * N-1 WILL BE RESTARTED IF AVAILABLE.
- * *FC* = FILE CHECK OPTION. IF SET, RESTART WILL
- * CHECK IF FILE IS PRESENT AND WILL NOT
- * REPLACE THE FILE IF IT IS THERE ALREADY.
- SPACE 4
- *** DAYFILE MESSAGES
- *
- * * CHECKPOINT NOT FOUND.* = SPECIFIED CHECKPOINT NOT FOUND.
- *
- * * CHECKPOINT FILE ERROR.* = ILLEGAL FORMAT ON FILE.
- *
- * * ERROR IN ARGUMENTS.* = RESTART PARAMETERS INCORRECT.
- *
- * * FILENAM NOT FOUND.* = FILE COULD NOT BE FOUND OR RETRIEVED.
- *
- * * FILE ERROR FILENAM.* = ILLEGAL ADDRESS ON FILE *FILENAM*.
- *
- * * JSNN RESTARTED FROM YY/MM/DD. HH.MM.SS.* = JOB WAS
- * RESTARTED FROM CHECKPOINT OF GIVEN DATE.
- *
- * * PARITY ERROR - RESTARTED FROM NN.* = JOB WAS RESTARTED
- * CHECKPOINT NN WHEN ERROR AS ENCOUNTERED.
- SPACE 4
- *** CHECKPOINT FILE FORMAT.
- *
- *T 60/10002B HEADER
- *T 6/0,18/DATE,18/TIME,6/CK,12/CKP NO.
- *T 24/JSN,36/0
- *
- *T 60/20NNNB FILE TABLE
- *
- *T 42/FILENAM,3/,2/I,1/W,6/FILE TYPE,6/FILE STATUS
- *T 24/FL,24/RB,3/COPY TYPE,1/,4/M,3/RS,1/L
- * .
- * .
- * .
- *T 60/0 END OF TABLE
- *
- *T 60/P30NNNB FILE COPIES
- *
- * FILE 1
- *
- *T 60/P31NNNB EOR FLAG
- *
- *T 60/P33NNNB EOI FLAG
- *
- * FILE 2
- *
- *T 60/P30NNNB DATA
- *
- *T 60/P32000B EOF FLAG
- *
- *T 60/P33000B EOI FLAG
- * .
- * .
- * .
- * FILE N
- *
- *T 60/P30NNNB DATA
- *
- *T 60/P33000B EOI FLAG
- *
- *T 60/40NNNB DUMP FILE
- *
- * CONTENTS OF DM*
- *
- *T 60/50000B END OF CHECKPOINT FILE
- *
- * EOR
- *
- * CHECKPOINT CONTROL WORD
- *T 6/0,18/DATE,18/TIME,6/CK,12/CKP NO.
- *
- * EOR
- *
- *
- *
- * P - PARITY BIT IF CODED FILE.
- * CK - CHECKPOINT MODE
- * NNN - NUMBER OF WORDS IN NEXT BLOCK.
- * M - MODE OF USE ALLOWED.
- * I - TYPE OF FILE.
- * W - SET IF WRITE LOCKOUT.
- * FL - FILE LENGTH (0 IF NOT MS)
- * RB - RANDOM INDEX (IF MS).
- * BLOCK COUNT (IF TAPE).
- * RS - READ STATUS.
- * L - SET IF LAST OPERATION WAS WRITE.
- SPACE 4
- * ASSEMBLY CONSTANTS
- BUFL EQU 1001B
- IBUFL EQU 2001B
- OBUFL EQU 4011B
- SBUFL EQU 401B
- TBUFL EQU 1003B LENGTH OF TAPE BUFFER
- LIB= EQU 0 READ EXECUTE-ONLY FILES
- SPACE 4
- ** READX - REDEFINE MACRO TO READ CONTROL WORDS.
- *
- * FORMAT READX F,S,N
- *
- * WHERE F = FET ADDRESS.
- * S = BUFFER ADDRESS.
- * N = LENGTH OF BUFFER IN WORDS.
- READX MACRO F,S,N
- R= B6,S
- R= B7,N
- R= X2,F
- RJ RDA
- ENDM
- *CALL COMCMAC
- *CALL COMCCMD
- *CALL COMSLFM
- QUAL MTX
- *CALL COMSMTX
- QUAL *
- *CALL COMSPFM
- *CALL COMSSSJ
- TITLE STORAGE ASSIGNMENT.
- ORG 101B
- FETS BSS 0
- I BSS 0
- CCCCCCX FILEB IBUF,IBUFL,EPR
- BSS 2
- O BSS 0
- CCCCCCY FILEB OBUF,OBUFL,EPR,(FET=12)
- P BSS 0
- CCCCCCZ RFILEB 2,1,(FET=12),EPR
- SPACE 4,10
- ** LISTS OF CCL FILE NAMES AND NOS SCRATCH FILE
- * NAMES USED TO TEMPORARILY SAVE CCL FILES WHEN *RI*
- * IS NOT SPECIFIED. EACH ENTRY IS IN THE FORM -
- *
- *T 42/FILENAM,17/0,1/P.
- *
- * WHERE P = 1 IF THE FILE IS TO BE PROCESSED.
- CCLF VFD 42/0LZZZZZC0,17/0,1/1
- VFD 42/0LZZZZZC1,17/0,1/1
- VFD 42/0LZZZZZC2,17/0,1/1
- CCLFL EQU *-CCLF
- CON 0 END OF CCL FILES
- SCRF VFD 42/0LZZZZZG0,17/0,1/0
- VFD 42/0LZZZZZG1,17/0,1/0
- VFD 42/0LZZZZZG2,17/0,1/0
- CON 0 END OF SCRATCH FILES
- SPACE 4
- * PARAMETER FLAG LOCATIONS.
- CKNO CON 1 CHECKPOINT NUMBER
- RIFL BSSZ 1 REPLACE INPUT FLAG
- NAFL BSSZ 1 NO ABORT FLAG
- FCFL BSSZ 1 FILE CHECK FLAG
- DTYP BSSZ 1 DATA TYPE
- HDRB BSSZ 1 HEADER STORAGE WORD
- FIID BSS 1 DATA FILE ID
- * SPECIAL ENTRY POINTS.
- DMP= EQU 450000B CREATE EMPTY DUMP FILE
- SSJ= EQU SSJD SSJ= DROP FILES OPTION
- TITLE MAIN PROGRAM.
- ** RESTART - MAIN LOOP.
- RESTART RJ PRS PRESET PROGRAM
- SB4 CCLF FWA OF CCL FILE LIST
- SB5 SCRF FWA OF SCRATCH FILE LIST
- SB3 B0 SELECT RENAME FUNCTION
- RJ RCC RENAME/RETURN CCL FILES
- RJ PRT PROCESS FILE TABLE
- SA1 =C/DM*/ SET UP DM* FILE
- SX3 3
- BX6 X1+X3
- SA6 O
- REWIND O,R
- READO I
- MX0 -9
- BX0 -X0*X6 GET BLOCK LENGTH
- MX3 -3
- AX6 9
- BX6 -X3*X6 GET BLOCK TYPE FLAG
- SA0 X6 SAVE BLOCK TYPE FLAG
- READW I,BUF,X0
- SX5 BUF+2
- RJ IWB INSURE WORD IN BUFFER
- SA1 X5+
- MX6 30B
- BX6 X6*X1
- AX6 6
- SA6 MEMR
- AX6 30
- SX6 X6-PRS
- PL X6,RST1 IF FIELD LENGTH BIG ENOUGH FOR RESTART
- SX6 PRS
- LX6 30
- SA6 A6
- RST1 SX5 X5-2+ECSW
- RJ IWB INSURE WORD IN BUFFER
- SA2 UESC
- SA1 X5 GET ECS FL/*UEBS*
- SB2 X2+39
- MX6 -12
- BX6 -X6*X1
- LX6 B2 FORM EM FL FOR MEMORY MACRO
- SA6 MEME STORE ECS FIELD LENGTH
- SA1 RIFL CHECK FOR *RI*
- ZR X1,RST2 IF OLD CONTROL STATEMENTS TO BE USED
- GETJCI RSTA GET CCL PARAMETERS
- SX5 X5-ECSW+JCDW
- RJ IWB INSURE WORD IN BUFFER
- SA1 RSTA
- BX6 X1
- SA6 X5
- SX5 X5-JCDW+JCRW
- RJ IWB INSURE WORD IN BUFFER
- SA1 RSTA+1
- BX6 X1
- SA6 X5
- RST2 SX6 4 SET UP RETURN JUMP
- SX1 RST3
- LX6 54
- LX1 30
- BX6 X1+X6
- SA6 CPY
- SX6 4 SET START OF (DM*) FILE BLOCK TYPE FLAG
- SA6 DTYP
- EQ CPY0.5
- RST3 REWIND O,R
- * POSITION FILE IN CASE OF SUBSEQUENT CHECKPOINT
- READO I GET TO EOR
- SA1 HDRB GET HEADER WORD
- BX6 X1
- MX0 1
- BX6 -X0*X6 CLEAR TOP BIT
- BX6 X0+X6 SET TOP BIT TO SHOW LAST CHKPT
- WRITEO I
- WRITER I,R
- BKSP I,R POSITION FOR SUBSEQUENT CHECKPOINT
- MESSAGE MSGB,,R
- MEMORY CM,MEMR,R GET MEMORY NEEDED FOR RESTARTED JOB
- MEMORY ECS,MEME,R GET ECS NEEDED FOR RESTARTED JOB
- RECALL O
- LOCK O,R LOCK DM* FILE TO INDICATE RESTART COMPLETE
- * RETURN SCRATCH FILES IF NEEDED.
- SB3 B1+ SELECT RETURN FUNCTION
- SB4 SCRF
- RJ RCC RENAME/RETURN CCL FILES
- ENDRUN
- RSTA BSS 2 *GETJCI* PARAMETER RETURN BLOCK
- MEMR BSS 1 NEEDED FL FROM DM* FILE
- MEME BSS 1 NEEDED ECS FROM EXCHANGE PACKAGE
- MSGB DATA C* ++++ RESTARTED FROM(((((((((())))))))))*
- TITLE SUBROUTINES
- ERP$ SPACE 4
- ** ERP$ - ERROR PROCESSING ROUTINE.
- *
- * ENTRY TAPE ERROR.
- *
- * EXIT ABORT IF FIRST CHECKPOINT
- * RESTART RESTART AT PREVIOUS CHECKPOINT.
- *
- * CALLS NONE.
- *
- * USES A - 2,7.
- * B - NONE.
- * X - 2,3,7.
- ERP$ SA2 NAFL
- ZR X2,CPY5 IF ABORT SET
- SA2 CKNO
- SX7 X2-1
- ZR X2,CPY5 ABORT
- SA7 CKNO
- SA7 MSGE+3
- SKIPB I,3 POSITION TO N-1
- SA2 I
- MX3 -3
- AX2 3
- SX2 X2-5
- BX3 -X3*X2
- ZR X2,CPY5 ABORT
- MESSAGE MSGE,,R
- EQ PRS4 START AGAIN
- MSGE DATA C* PARITY ERROR - RESTARTED FROM NN.*
- CPY SPACE 4,15
- ** CPY - COPY FILE.
- *
- * ENTRY FILE NAME SET IN FET I.
- * (X6) = DATA TYPE.
- *
- * EXIT FILE WRITTEN FROM FET O.
- *
- * USES A - 0, 1, 2, 3, 4, 6, 7.
- * X - 0, 1, 2, 3, 4, 6, 7.
- * B - ALL.
- *
- * CALLS RCC.
- *
- * MACROS ABORT, MESSAGE, RECALL, READO, READW, WRITEF, WRITEF,
- * WRITEW.
- CPY SUBR ENTRY/EXIT
- SA6 DTYP SAVE DATA TYPE
- CPY0 READO I
- MX0 -9
- BX0 -X0*X6 GET BLOCK LENGTH
- SA1 DTYP CHECK FOR VALID BLOCK TYPE
- MX3 -3
- AX6 9
- BX4 -X3*X6 GET BLOCK TYPE FLAG
- AX6 3
- SA0 X4
- BX4 -X3*X6 DATA TYPE
- BX2 X3*X6 PARITY BIT
- BX4 X4-X1
- NZ X4,CPY4 IF ILLEGAL DATA TYPE
- ZR X2,CPY0.1 IF NO CHANGE (BINARY)
- RECALL O
- SA1 O
- SX2 B1
- BX6 X3*X1
- BX6 X6+X2
- SA6 A1
- CPY0.1 ZR X0,CPY1 IF NO DATA
- READW I,BUF,X0
- CPY0.5 WRITEW O,BUF,X0
- SX6 A0 CHECK BLOCK TYPE FLAG
- ZR X6,CPY0 IF NOT EOR
- CPY1 SB2 A0-B1 CHECK BLOCK TYPE FLAG
- NZ B2,CPY2 IF NOT EOR
- WRITER O,R
- EQ CPY0 LOOP TIL END OF RECORD
- * IF END OF FILE.
- CPY2 SX6 A0-2 CHECK BLOCK TYPE FLAG
- ZR X6,CPY3 IF EOF
- WRITE O,R
- SA1 O+2
- SA2 A1+B1
- IX2 X1-X2
- SX2 X2
- ZR X2,CPYX IF NO DATA
- CPY3 WRITEF O,R
- SX6 A0-3 CHECK BLOCK TYPE FLAG
- ZR X6,CPYX IF EOI
- EQ CPY0 LOOP TIL END OF INFORMATION
- CPY4 MESSAGE (=C* CHECKPOINT FILE ERROR.*)
- CPY5 SB4 SCRF FWA OF SCRATCH FILE LIST
- SB5 CCLF FWA OF CCL FILE LIST
- SB3 B0 SELECT RENAME FUNCTION
- RJ RCC RENAME/RETURN CCL FILES
- ABORT
- IWB SPACE 4,15
- ** IWB - INSURE WORD IN BUFFER.
- *
- * IWB INSURES THAT THE DESIRED WORD IS ACTUALLY IN THE
- * BUFFER. IF IT IS NOT IN THE PRESENT BLOCK, THEN THE
- * PRESENT BLOCK IS COPIED AND THE NEXT BLOCK IS OBTAINED.
- *
- * ENTRY (X0) = NUMBER OF WORDS IN BLOCK TO BE WRITTEN.
- * (X5) = BUF + DESIRED WORD.
- * (A0) = BLOCK TYPE.
- *
- * EXIT (X0) = NUMBER OF WORDS IN NEW BLOCK.
- * (X5) = LOCATION OF DESIRED WORD.
- * (A0) = NEW BLOCK TYPE IF DATA TRANSFERED.
- *
- * USES X - 0, 2, 3, 4, 5, 6.
- *
- * MACROS READO, READW, WRITEW.
- IWB SUBR ENTRY/EXIT
- SX2 X5-BUF+1
- IX2 X0-X2
- PL X2,IWBX IF WORD IN BUFFER
- IX5 X5-X0
- WRITEW O,BUF,X0
- READO I
- MX0 -9 GET BLOCK LENGTH
- BX0 -X0*X6
- MX3 -3 GET BLOCK TYPE
- AX6 9
- BX4 -X3*X6 BLOCK TYPE
- AX6 3
- SA0 X4
- BX4 -X3*X6 DATA TYPE
- SX4 X4-4
- NZ X4,CPY4 IF INCORRECT DATA TYPE
- ZR X0,CPY4 IF -DM*- FILE TOO SHORT
- READW I,BUF,X0
- EQ IWBX RETURN
- PSF SPACE 4,15
- ** PSF - POSITION FILE.
- *
- * ENTRY FILE NAME IN FETS O AND P.
- * USES FET P FOR DISK FILES, POSITIONING BY RANDOM ADDR.
- * USED FET O FOR TAPE FILES, POSITIONING BY CONTROL WORD.
- *
- * CALLS NONE.
- *
- * EXIT FILE POSITIONED.
- *
- * USES A - 0, 1, 2, 3, 4, 6.
- * X - ALL.
- *
- * MACROS BKSPRU, FILINFO, MESSAGE, READ, READCW, READX, RECALL,
- * REWIND, SKIPF.
- PSF9 REWIND P POSITION FOR COPY TYPE 1
- PSF SUBR ENTRY/EXIT
- RECALL O
- RECALL P
- SA1 O
- AX1 10
- MX3 -4
- BX4 -X3*X1
- NZ X4,PRT16 IF ERROR
- SA1 P
- AX1 10
- BX4 -X3*X1
- NZ X4,PRT16 IF ERROR
- SA1 O+9
- MX0 -3
- LX1 2-11
- BX3 -X0*X1
- SX3 X3-1
- ZR X3,PSF9 IF COPY TYPE 1
- SA1 O+8
- AX1 13
- MX3 -2
- BX4 -X3*X1
- SX2 X4-1
- ZR X2,PSF3 IF TAPE FILE
- SX4 X4-2
- ZR X4,PSFX IF TTY FILE
- * POSITION MASS STORAGE.
- REWIND P,R
- SA1 O+9 SET RANDOM ADDRESS
- AX1 12
- MX3 -24
- BX6 -X3*X1
- SX1 B1+
- IX1 X6-X1 ACCOUNT FOR RANDOM POSITIONING
- ZR X1,PSFX IF BOI DESIRED
- PSF1 SA6 P+6
- READ P,R DO RANDOM READ
- SA1 P
- AX1 10
- MX0 -4
- BX0 -X0*X1
- ZR X0,PSFX IF NO ERROR OCCURRED
- * DISPLAY ERROR MESSAGE
- PSF2 SA1 O
- MX0 42
- BX6 X0*X1 ISOLATE FILE NAME
- SA1 MSGD+1
- MX0 12
- BX1 X0*X1
- LX6 -18
- BX6 X1+X6 MASK INTO MESSAGE
- SA6 A1
- MESSAGE MSGD
- EQ PSFX RETURN
- * POSITION TAPES.
- PSF3 REWIND O,R
- SA1 O+9 GET BLOCK COUNT
- AX1 12
- MX3 -24
- BX5 -X3*X1 DESIRED BLOCK COUNT
- ZR X5,PSFX IF REWOUND
- MX0 42 FORMAT *FILINFO* REQUEST
- SA1 O FILE NAME
- SX2 PSFAL*10000B+1 LENGTH AND COMPLETE BIT
- BX6 X0*X1
- BX6 X6+X2
- SA6 PSFA
- FILINFO PSFA GET TAPE FORMAT
- SA1 PSFA+5
- AX1 6
- SX7 X1-/MTX/TFF
- PL X7,PSF8 IF *F*, *S* OR *L* TAPE FORMAT
- * PROCESS *I* AND *SI* FORMAT TAPES.
- SX0 B0+ PRESET BLOCK COUNT
- PSF3.1 MX6 1 SET FIRST READ
- SA6 O-2
- READCW O
- PSF4 READX O,TBUF,TBUFL
- SX1 X1+2
- ZR X1,PSFX IF EOI
- IX3 X0-X5
- PL X3,PSF4.1 IF AT POSITION
- SX1 X1-1
- ZR X1,PSF3.1 IF EOF
- EQ PSF4
- PSF4.1 RECALL O
- SA1 O CHECK STATUS IN FET
- LX1 59-9
- NG X1,PSFX IF END OF INFORMATION
- SA1 O+2 GET IN
- SA2 A1+1 GET OUT
- IX3 X1-X2 IN-OUT
- SA4 A1-B1 GET FIRST
- SX4 X4
- IX4 X1-X4 IN-FIRST
- ZR X3,PSFX IF EMPTY BUFFER
- PL X3,PSF4.2 IF IN .GE. OUT
- SA3 A2+1
- SX3 X3+
- IX3 X3-X2 LIMIT-OUT
- IX3 X4+X3 NUMBER OF WORDS IN BUFFER
- PSF4.2 SA1 O-2
- NG X1,PSF5 IF AT END OF CURRENT BLOCK
- SX2 X2+B1
- SX4 B1+
- IX3 X3-X4
- ZR X1,PSF5 IF NO MORE WORDS IN CURRENT BLOCK
- IX6 X3-X1
- BX7 X1
- ZR X6,PSFX IF AT POSITION
- EQ PSF5.1 COMPUTE NEXT OUT
- PSF5 SA1 X2+ GET NEXT CONTROL WORD
- SX7 5
- SX4 X1+16B ACCOUNT FOR CONTROL WORDS AND EXTRA BYTES
- IX7 X4/X7 GET NUMBER OF WORDS IN BLOCK
- IX6 X3-X7 COMPARE TO NUMBER OF WORDS IN BUFFER
- SX0 X0+B1 INCREMENT BLOCK COUNT
- ZR X6,PSF6 IF 1 BLOCK
- PSF5.1 SX3 X6 WORDS BEYOND BLOCK
- IX2 X2+X7 NEW OUT (NEXT CONTROL WORD)
- SA1 O+4
- SX1 X1
- IX1 X2-X1 COMPARE TO LIMIT
- NG X1,PSF5 IF NO END AROUND
- SA2 A4 GET FIRST
- SX2 X2+
- IX2 X2+X1 SET NEW OUT
- EQ PSF5
- PSF6 IX3 X0-X5
- ZR X3,PSFX IF AT POSITION
- BKSPRU O,X3,R
- PSF7 SA1 O CHECK FOR ERROR
- MX0 -4
- AX1 10
- BX0 -X0*X1
- NZ X0,PSF2 IF ERROR ON I/O
- EQ PSFX RETURN
- * PROCESS *F*, *S* AND *L* FORMAT TAPES.
- PSF8 SKIPF O,X5,R
- EQ PSF7 CHECK FOR ERROR
- PSFA BSSZ 5 STANDARD *FILINFO* PARAMETER BLOCK
- VFD 48/0,6/0,6/FMTK TAPE FORMAT
- PSFAL EQU *-PSFA LENGTH OF PARAMETER BLOCK
- MSGD DATA C* FILE ERROR .*
- DATA 0
- PRT SPACE 4,15
- ** PRT - PROCESS FILE TABLE.
- *
- * EXIT ALL FILES IN THE FILE TABLE ARE RECOVERED FROM
- * THE CHECKPOINT FILE.
- *
- * USES X - ALL.
- * A - 1, 2, 3, 4, 5, 6, 7.
- * B - 2.
- *
- * CALLS CPY, PSF, SFN, SMD.
- *
- * MACROS ASSIGN, ATTACH, ENCSF, GET, MESSAGE, READO, READW,
- * RETURN, REWIND, SETFS, STATUS.
- PRT SUBR ENTRY/EXIT
- READO I READ FILE TABLE HEADER
- MX0 -9
- BX4 -X0*X6 GET LENGTH
- AX6 12
- SX3 X6-2
- NZ X3,CPY4 IF WRONG DATA TYPE
- READW I,SBUF,X4 READ FILE TABLE
- SA5 SBUF-2
- PRT0 SA5 A5+2 GET FIRST WORD TABLE ENTRY
- ZR X5,PRT17 IF END OF TABLE
- SX7 3 DEFAULT ID BINARY FILE
- MX0 42
- BX6 X0*X5 ISOLATE FILE NAME
- BX6 X6+X7
- SA6 P SET FILENAME IN FET
- SB2 B0 CLEAR CCL FILE FLAG
- SA6 O SET FILENAME IN FET
- SA2 A5+B1 GET WORD 2 OF TABLE ENTRY
- BX6 X5
- BX7 X2
- SA6 O+8 PLACE FNT ENTRY IN FET
- SA7 A6+B1 PLACE FST ENTRY IN FET
- SA1 =C*CCCCCCO*
- BX3 X1-X5
- BX3 X0*X3
- NZ X3,PRT1 IF NOT *CCCCCCO*
- SA1 RIFL CHECK FOR RI PARAMETER
- NZ X1,PRT10 IF NEW FILE WANTED
- MX0 -6 CONSTRUCT *ENCSF* CALL WORD
- BX5 -X0*X5
- MX0 -24
- AX2 6
- LX0 6
- BX6 -X0*X2 GET RANDOM ADDRESS
- BX6 X6+X5
- SA6 PRTA
- REWIND O,R
- SX6 3
- RJ CPY GET OLD CONTROL STATEMENT FILE
- REWIND O,R
- ENCSF O,PRTA ENTER AND POSITION CONTROL STATEMENT FILE
- EQ PRT0 LOOP FOR REMAINING FILES
- * PREPARE FOR PROCESSING CCL FILES.
- PRT1 SA3 CCLF *ZZZZZC0*
- BX1 X0*X5
- BX3 X0*X3
- SA4 CCLF+CCLFL-1 *ZZZZZC2*
- BX4 X0*X4
- IX3 X1-X3
- NG X3,PRT5 IF NOT CCL FILE
- IX4 X4-X1
- NG X4,PRT5 IF NOT CCL FILE
- SB2 B1+ SET CCL FILE FLAG
- * CHECK COPY TYPE.
- PRT5 MX3 -3
- BX4 X2
- LX4 2-11
- BX3 -X3*X4 GET COPY TYPE
- SX4 X3-4
- MX3 -6
- BX6 -X3*X5
- SA6 FIID SAVE STATUS
- NE B2,PRT5.1 IF CCL FILE
- SA1 FCFL CHECK FILE CHECK FLAG
- NZ X1,PRT9 IF SET
- SA1 =C*INPUT*
- BX6 X1-X5
- BX6 X0*X6
- NZ X6,PRT6 IF NOT INPUT
- RETURN O,R RETURN BEFORE CREATING
- EQ PRT7
- PRT5.1 SA1 RIFL CHECK FOR *RI* PARAMETER
- NZ X1,PRT10 IF NEW CONTROL STATEMENTS WANTED
- PRT6 REWIND O,R
- PRT7 ZR X4,PRT11 IF NO FILE COPY
- SX6 3
- RJ CPY COPY FILE
- PRT8 RJ PSF POSITION THE FILE
- SA2 FIID
- SETFS O,X2
- EQ PRT0 LOOP FOR REMAINING FILES
- * CHECK IF FILE ALREADY PRESENT.
- PRT9 STATUS O
- SA1 O
- SX3 X1-1
- ZR X3,PRT7 IF NOT FOUND
- SA2 A2 WORD 2 OF TABLE ENTRY
- MX1 -4
- LX2 -4
- BX1 -X1*X2
- SX1 X1-4
- ZR X1,PRT8 IF EXECUTE-ONLY
- ZR X4,PRT8 IF NO FILE COPY ON CHECKPOINT FILE
- * COPY FILE TO BE RID OF IT
- PRT10 SA1 =C*CCCCCCM*
- SX3 3
- BX6 X1+X3
- SA6 O
- SX6 3
- RJ CPY COPY OLD FILE TO NEW HOME
- REWIND O,R
- EQ PRT0 LOOP FOR REMAINING FILES
- * IF NO FILE COPY.
- PRT11 MX3 -24
- LX3 12
- SA2 A2 WORD 2 OF TABLE ENTRY
- BX4 -X3*X2 ISOLATE RANDOM INDEX
- MX3 -6 CHECK FILE TYPE
- ZR X4,PRT0 IF EMPTY FILE
- AX5 6
- BX4 -X3*X5
- SX3 X4-LIFT
- NZ X3,PRT13 IF NOT LIBRARY FILE
- ASSIGN P REASSIGN SYSTEM FILE
- EQ PRT8 LOOP FOR REMAINING FILES
- PRT13 SX3 X4-PMFT
- NZ X3,PRT14 IF NOT DIRECT ACCESS FILE
- * CHECK MODE.
- SA2 A5+B1
- RJ SMD SET MODE
- ATTACH P,,,,MODA,,,,NF
- EQ PRT8 LOOP FOR REMAINING FILES
- PRT14 SX3 X4-LOFT
- NZ X3,PRT16 IF ILLEGAL FILE TYPE
- SA1 O+8
- MX3 -2
- AX1 13
- BX1 -X3*X1
- SX3 X1-1
- ZR X3,PRT8 IF TAPE FILE
- PRT15 GET P
- EQ PRT8 LOOP FOR REMAINING FILES
- * IF FILE NOT FOUND.
- PRT16 MX0 42
- SA1 O
- BX1 X0*X1
- RJ SFN SPACE FILL FILE NAME
- LX6 -6
- SA6 MSGA
- MESSAGE A6
- * CHECK NO ABORT FLAG.
- SA2 NAFL
- NZ X2,PRT0 IF NO ABORT, LOOP FOR REMAINING FILES
- EQ CPY5
- * RETURN *CCCCCCM* AND EXIT.
- PRT17 SA1 =C*CCCCCCM*
- SX3 3
- BX6 X1+X3
- SA6 O
- RETURN O,R
- EQ PRTX RETURN
- PRTA BSS 1 PARAMETER AREA FOR *ENCSF* CALL
- MSGA DATA C* NOT FOUND.*
- RCC SPACE 4,15
- ** RCC - RENAME/RETURN CCL FILES.
- *
- * ENTRY (B3) = 0, IF RENAME FUNCTION.
- * = 1, IF RETURN FUCNTION.
- * (B4) = FWA OF LIST OF FILES TO BE RENAMED/RETURNED.
- * (B5) = FWA OF LIST OF FILE NAMES TO USE FOR RENAME.
- *
- * USES X - 0, 1, 2, 5, 6.
- * A - 1, 5, 6.
- * B - 2.
- *
- * MACROS RENAME, RETURN.
- RCC3 BX6 X6-X6
- SA6 O+6
- RCC SUBR ENTRY/EXIT
- SA1 RIFL
- NZ X1,RCCX IF PROCESSING NOT NEEDED
- SB2 -1
- RCC1 SB2 B2+1
- SA5 B4+B2 GET NEXT FILE NAME TO PROCESS
- SX2 B1
- ZR X5,RCC3 IF ALL FILES PROCESSED
- BX6 X5+X2
- LX5 59-0
- PL X5,RCC1 IF NOT TO PROCESS FILE
- SA6 O
- EQ B3,B1,RCC2 IF *RETURN* FUNCTION SELECTED
- RENAME O,B5+B2
- SA1 O
- MX0 -8
- LX1 7-17
- BX2 -X0*X1
- SA5 B5+B2
- NZ X2,RCC1 IF FILE NOT RENAMED
- SX6 B1 SET FILE RENAMED INDICATOR
- BX6 X5+X6
- SA6 A5+
- EQ RCC1 PROCESS NEXT SELECTED FILE
- RCC2 RETURN O,R
- EQ RCC1 PROCESS NEXT SELECTED FILE
- RDA SPACE 4
- ** RDA - READ DATA.
- * PROCESSES CALLS TO READ WORDS (RDW=).
- * DEBLOCKS DATA FROM CONTROL WORD READS FOR TAPE POSITIONING.
- *
- * ENTRY (X0) = BLOCK COUNT.
- * (X2) = FET ADDRESS.
- * (B6) = ADDRESS TO READ TO.
- * (B7) = NUMBER OF WORDS TO READ.
- *
- * EXIT (X0) = BLOCK COUNT UPDATED.
- * ((X2)-2) = NUMBER OF WORDS REMAINING IN CURRENT
- * BLOCK IF POSITION IS NOT AT EOR/EOF/EOI.
- *
- * CALLS RDW=
- *
- * USES A - 1,3,6,7
- * B - 5,6,7
- * X - 0,1,2,3,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-1 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+1 INCREMENT BLOCK COUNT
- JP RDA1 LOOP
- RDAA CON 0 NUMBER OF WORDS NEED TO READ
- SMD SPACE 4
- ** SMD - SET FILE ACCESS MODE.
- *
- * ENTRY (X2) = WORD 2 OF TABLE ENTRY (REFORMATTED FST).
- *
- * EXIT (MODA) = MODE.
- *
- * USES X - 1, 2, 3, 4, 6.
- * A - 3, 6.
- SMD SUBR ENTRY/EXIT
- LX2 59-7
- MX4 4
- SA3 MODE SET TABLE ADDRESS
- SMD1 BX1 X3-X2
- BX1 X4*X1
- ZR X1,SMD2 IF FOUND
- SA3 A3+B1
- NZ X3,SMD1 LOOP
- SX6 PTRD SET READ MODE DEFAULT
- SA6 MODA
- EQ SMDX RETURN
- SMD2 SX6 X3
- SA6 MODA
- EQ SMDX RETURN
- MODE BSS 0 MODE TABLE
- VFD 4/1,56/PTWR WRITE
- VFD 4/0,56/PTRD READ
- VFD 4/3,56/PTAP APPEND
- VFD 4/4,56/PTEX EXECUTE
- VFD 4/2,56/PTMD MODIFY
- VFD 4/5,56/PTRM READ/MODIFY
- VFD 4/6,56/PTRA READ/APPEND
- VFD 4/7,56/PTUP UPDATE
- VFD 4/10B,56/PTRU READ/UPDATE
- CON 0
- MODA CON 0 FILE ACCESS MODE
- TITLE COMMON DECKS AND BUFFERS.
- COM SPACE 4
- * COMMON DECKS.
- *CALL COMCARG
- *CALL COMCCDD
- *CALL COMCCIO
- *CALL COMCCPM
- *CALL COMCDXB
- *CALL COMCEDT
- *CALL COMCLFM
- *CALL COMCPFM
- *CALL COMCRDC
- *CALL COMCRDO
- *CALL COMCRDW
- *CALL COMCSFN
- *CALL COMCSNM
- *CALL COMCSYS
- *CALL COMCWTO
- *CALL COMCWTW
- SPACE 4
- TITLE PRESET.
- PRS SPACE 4
- ** PRS PRESET ROUTINE.
- *
- * ENTRY NONE.
- *
- * EXIT FILE POSITIONED TO CORRECT CHECKPOINT.
- *
- * CALLS ARG,DXB.
- *
- * USES A - 1,2,4,5,6,7.
- * B - 2,4,5.
- * X - ALL.
- PRS SUBR ENTRY/EXIT
- SB1 1
- * PROCESS ARGUMENTS.
- SA1 ACTR
- SB2 X1
- ZR B2,PRS7 IF NO ARGUMENTS
- SA1 ARGR
- ZR X1,PRS7 IF ERROR
- SX3 3
- BX6 X1+X3
- SB2 B2-B1
- SA6 I SET FILE NAME
- REWIND I
- ZR B2,PRS2 IF END OF ARGUMENTS
- SA1 ARGR+1
- ZR X1,PRS1 IF NOT SET
- BX6 X1
- SA6 CKNO SET CHECKPOINT NUMBER
- PRS1 SB4 B2-B1
- ZR B4,PRS2 IF END OF ARGUMENTS
- SA4 A1+B1
- SB5 TARG
- RJ ARG
- NZ X1,PRS7 IF ERROR IN ARGUMENT
- PRS2 SA5 CKNO GET CHECKPOINT NUMBER
- SX4 X5-1
- ZR X4,PRS3 IF DEFAULT SET
- SA4 ASK
- BX4 X4-X5
- ZR X4,PRS3 IF LAST CHECKPOINT DESIRED
- SB7 B1 CONVERT TO BINARY ASSUMING DECIMAL NUMBER
- RJ DXB
- NZ X4,PRS7 IF ERROR
- SA6 CKNO SET NO. OF CHECKPOINT DESIRED
- * POSITION FILE TO CHECKPOINT RECORD.
- PRS3 READSKP I,,R SKIP TO END OF RECORD
- SA1 X2 CHECK STATUS
- LX1 59-3
- NG X1,CPY4 IF EOF/EOI
- SA1 IBUF LOOK AT FIRST WORD OF BUFFER
- SX1 X1-10002B CHECK FOR HEADER WORD
- NZ X1,PRS3 IF NOT HEADER
- BKSP I,R
- PRS4 SA1 I+1 SET IN = OUT = FIRST
- SX6 X1
- SA6 A1+B1
- SA6 A6+B1
- * SEARCH FOR CORRECT CHECKPOINT.
- READ I
- READO I READ HEADER WORD 1
- NZ X1,CPY4 IF EOR OR EOF
- ZR X6,CPY4 IF NO DATA
- SX1 X6-10002B
- NZ X1,CPY4 IF WRONG DATA TYPE
- READO I READ HEADER WORD 2
- MX0 -12
- BX3 -X0*X6 GET NO. OF THIS CHECKPOINT
- SA2 CKNO
- SA4 ASK
- BX4 X4-X2
- IX1 X2-X3
- ZR X4,PRS5 IF LAST CHECKPOINT WANTED
- NG X1,CPY4 IF ERROR
- ZR X1,PRS6 IF CORRECT CHECKPOINT NUMBER
- * CHECK CHECKPOINT CODE WORD.
- PRS5 SKIPF I,1,R SKIP RECORD
- SA1 I+1 SET IN = OUT = FIRST
- SX6 X1
- SA6 A1+B1
- SA6 A6+B1
- READ I
- READO I READ HEADER WORD 1
- PL X6,PRS4 IF NOT LAST CHECKPOINT
- SA2 CKNO
- SA4 ASK
- BX4 X2-X4
- NZ X4,PRS8 IF ERROR
- * POSITION TO START OF CHECKPOINT RECORD.
- SKIPB I,2 POSITION FILE
- SA1 I+1 SET IN = OUT = FIRST
- SX6 X1
- SA6 A1+B1
- SA6 A6+B1
- READ I
- READO I READ HEADER WORD 1
- READO I READ HEADER WORD 2
- MX0 -12
- BX7 -X0*X6
- SA7 CKNO SET CHECKPOINT NUMBER
- * GET CHECKPOINT DATE AND TIME.
- PRS6 SA6 HDRB SAVE HEADER WORD
- AX6 18
- BX5 X6
- SX1 X6
- ETIME X1 CONVERT TIME
- SB2 1R)
- SB5 MSGB
- BX1 X6
- RJ SNM SET TIME IN MESSAGE
- AX5 18
- SX1 X5
- EDATE X1 CONVERT DATE
- SB2 1R(
- SB5 MSGB
- BX1 X6
- RJ SNM SET DATE IN MESSAGE
- READO I READ HEADER WORD 3
- SB2 1R+
- SB5 MSGB
- BX1 X6
- RJ SNM SET JSN IN MESSAGE
- * GET USER EM SHIFT COUNT.
- SYSTEM RSB,R,PRSA
- SA1 UESC
- MX0 -3
- LX1 0-33
- BX6 -X0*X1
- SA6 A1
- EQ PRSX RETURN
- PRS7 MESSAGE (=C* ERROR IN ARGUMENTS.*)
- EQ CPY5
- PRS8 MESSAGE (=C* CHECKPOINT NOT FOUND.*)
- EQ CPY5
- ASK DATA 1L*
- PRSA VFD 24/1,18/MEFL,18/UESC
- UESC VFD 1/1,59/0 USER EXTENDED MEMORY SHIFT COUNT
- TARG BSS 0
- RI ARG =-1,RIFL
- NA ARG =-1,NAFL
- FC ARG =-1,FCFL
- CON 0
- * 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+4
- END
cdc/nos2.source/opl871/restart.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator