User Tools

Site Tools


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
  1. IDENT CHKPT,FETS
  2. ABS
  3. SST
  4. SYSCOM B1
  5. ENTRY CKP
  6. ENTRY SFP
  7. ENTRY DMP=
  8. ENTRY RFL=
  9. ENTRY SSJ=
  10. TITLE CHKPT - CENTRAL MEMORY CHECKPOINT.
  11. *COMMENT CHKPT - CENTRAL MEMORY CHECKPOINT.
  12. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  13. SPACE 4
  14. *** CHKPT - CENTRAL MEMORY CHECKPOINT.
  15. * V.A. WALSH. 72/05/05.
  16. * K.R. COMBS. 73/06/01.
  17. * M.S. CARTER. 76/10/08.
  18. SPACE 4
  19. *** *CHKPT* PERFORMS THE CENTRAL MEMORY PORTION OF CHECKPOINT.
  20. * THE CONTROL POINT AREA AND THE USER FIELD LENGTH ARE
  21. * EXPECTED TO BE WRITTEN ON FILE DM* BEFORE *CHKPT* EXECUTION.
  22. * *CHKPT* CREATES A CHECKPOINT FILE CONTAINING INFORMATION
  23. * ABOUT THE USER FILE AS WELL AS A COPY OF THE DM* FILE.
  24. *
  25. *
  26. * OPERATOR COMMAND-
  27. *
  28. * CKP. CHECKPOINT ALL LOCAL FILES.
  29. *
  30. * CONTROL STATEMENT CALL-
  31. *
  32. * CKP. CHECKPOINT ALL LOCAL FILES.
  33. *
  34. * CKP(LFN1,LFN2,...,LFNN) CHECKPOINT ONLY THOSE FILES
  35. * SPECIFIED BY LFNI.
  36. * CONTINUATION CARDS WILL NOT BE PROCESSED.
  37. *
  38. * MACRO CALL-
  39. *
  40. * CHECKPT ADDR,SP
  41. * ADDR - ADDRESS OF PARAMETER LIST.
  42. * SP - SELECTIVE CHECKPOINT FLAG.
  43. * IF NULL - CHECKPOINT LOCAL FILES (DEFAULT).
  44. * IF NOT NULL - CHECKPOINT SPECIFIED FILES.
  45. *
  46. * PARAMETER LIST FORMAT.
  47. *
  48. *T,ADDR 12/CN,30/0,6/N,11/0,1/C
  49. *T,ADDR+1 42/LFN1,6/F,12/0
  50. *T,ADDR+2 42/LFN2,6/F,12/0
  51. * .
  52. * .
  53. * .
  54. *T,ADDR+N 42/LFNN,6/F,12/0
  55. *
  56. * CN = CURRENT CHECKPOINT NUMBER.
  57. * N = NUMBER OF ENTRIES IN TABLE.
  58. * C = COMPLETION BIT SET BY CHKPT.
  59. * LFNI = LOCAL FILE NAME.
  60. * F = COPY TYPE.
  61. * 0 - BOI TO PRESENT POSITION.
  62. * 1 - PRESENT POSITION TO EOI.
  63. * 2 - ENTIRE FILE.
  64. * 3 - LAST OPERATION ON FILE WILL
  65. * DETERMINE THE COPY TYPE.
  66. * 4 - NO COPY BUT INFORMATION TABLE
  67. * ON FILE IS COPIED.
  68. SPACE 4
  69. *** DAYFILE MESSAGES -
  70. *
  71. * * CHECKPOINT FILE ERROR.* = CHECKPOINT FILE(S) NOT
  72. * SPECIFIED CORRECTLY.
  73. *
  74. * * SECURE FILES - CHECKPOINT ABORT.* = FILE SECURITY SPECIFIED
  75. * ON FILE(S) BEING CHECKPOINTED, ABORT CHECKPOINT.
  76. *
  77. * * CHECKPOINT NNNN COMPLETE.* = CHECKPOINT NNNN HAS COMPLETED.
  78. *
  79. * * CHECKPOINT NNNN COMPLETED TO XXXXXXX.* = CHECKPOINT NNNN
  80. * HAS BEEN COMPLETED TO FILE XXXXXXX.
  81. * (ISSUED ON ALTERNATE CB FILES ONLY)
  82. *
  83. * * CHKPT UNABLE TO READ TAPE.* = ERRORS HAVE OCCURRED
  84. * WHILE READING A TAPE FILE WHICH CHKPT CANNOT PROCESS.
  85. *
  86. * * CKP REQUEST.* = A CHECKPOINT HAS BEEN INITIATED.
  87. *
  88. * * POSITION ERROR ON--XXXXXXX.* = AN ADDRESS ERROR PREVENTED
  89. * FILE XXXXXXX FROM BEING REPOSITIONED AFTER BEING CHECKPOINTED.
  90. *
  91. * * ERROR - FILE(S) NOT PROCESSED.* = FILE(S) HAD ERROR IN
  92. * PRESET, THEREFORE NOT CHECKPOINTED.
  93. *
  94. * * CONTENTS NOT CHECKPOINTED FOR FILE XXXXXXX.* = FOR FILE
  95. * XXXXXXX THE USER SELECTED OTHER THAN OPTION 4
  96. * (INFORMATION TABLE ONLY). THE USER REQUEST HAS BEEN
  97. * IGNORED AND ONLY THE INFORMATION TABLE WAS COPIED TO THE
  98. * CHECKPOINT FILE.
  99. *
  100. * * CHECKPOINT FILE ACCESS LEVEL ERROR.* = IN A SECURE
  101. * SYSTEM, THE CHECKPOINT FILE ACCESS LEVEL IS NOT THE
  102. * SAME AS THE JOB ACCESS LEVEL LIMIT. THIS MUST BE THE
  103. * CASE TO INSURE THAT THE CHECKPOINT FILE IS SECURE
  104. * ENOUGH TO CONTAIN ALL LOCAL FILES. THE ACCESS LEVEL
  105. * OF THE CHECKPOINT FILE IS NOT CHANGED TO THIS LEVEL
  106. * SINCE THIS IS NOT POSSIBLE FOR MAGNETIC TAPE FILES OR
  107. * DIRECT ACCESS PERMANENT FILES, AND THESE ARE THE USUAL
  108. * FILE TYPES USED FOR CHECKPOINT FILES. WHEN THE
  109. * CHECKPOINT FILE IS ASSIGNED IT SHOULD BE ASSIGNED AT
  110. * THE JOB ACCESS LEVEL LIMIT.
  111. TITLE CHKPT - DEFINITIONS.
  112. SPACE 4
  113. * ASSEMBLY CONSTANTS.
  114.  
  115. BUFL EQU 1000B
  116. IBUFL EQU 2001B
  117. OBUFL EQU 2001B
  118. SBUFL EQU 402B
  119. TBUFL EQU 1001B
  120. SPACE 4
  121. ** READC - REDEFINE MACRO TO READ CONTROL WORDS.
  122. *
  123. * FORMAT READC F,S,N
  124. *
  125. * WHERE F = ADDRESS OF FET
  126. * S = ADDRESS OF BUFFER
  127. * N = LENGTH OF BUFFER IN WORDS
  128. *
  129. * USES X - 2.
  130. * B - 6, 7.
  131. *
  132. * CALLS RDA.
  133.  
  134.  
  135. PURGMAC READC
  136.  
  137. READC MACRO F,S,N
  138. MACREF READC
  139. R= B6,S
  140. R= B7,N
  141. R= X2,F
  142. RJ RDA
  143. ENDM
  144. TITLE STORAGE ASSIGNMENT.
  145. ORG 101B
  146. FETS BSS 0
  147. BSS 2 STORAGE FOR READC CONTROLS
  148. I BSS 0
  149. INPUT FILEB IBUF,IBUFL,EPR,(FET=14)
  150. O BSS 0
  151. CCCCCCC FILEB OBUF,OBUFL,(FET=10)
  152. P BSS 0
  153. CCCCCCM RFILEB 2,1,(FET=8)
  154. SPACE 4
  155. * PARAMETER FLAG LOCATIONS.
  156.  
  157. CKNO CON 1 CHECKPOINT NUMBER
  158. MDFL CON CKST MODE FLAG
  159. TICF CON 0 TERMINAL INTERRUPT CONTROL FLAG WORD
  160. SPFL BSSZ 1 SELECTIVE CHECKPOINT FLAG
  161. PTR BSSZ 1 POINTER FOR BLOCKED COPY(PTS TO BLOCK WORD)
  162. HDRB BSSZ 1 HEADER STORAGE WORD
  163. CSFP BSSZ 1 CONTROL STATEMENT FILE POSITION
  164. PAR BSS 101B FILE LIST AREA
  165. SPACE 4,10
  166. * COMMON DECKS.
  167.  
  168.  
  169. *CALL COMCMAC
  170. *CALL COMSLFD
  171. *CALL COMSSFM
  172. *CALL COMSSSJ
  173. SPACE 4,10
  174. * SPECIAL ENTRY POINTS.
  175.  
  176.  
  177. DMP= EQU 0 DUMP ENTIRE FIELD LENGTH
  178. SFP EQU 0 ENTRY POINT FOR SFP CALL
  179. SSJ= BSSZ SSJL SPECIAL SYSTEM JOB AREA
  180. TITLE MAIN PROGRAM.
  181. ** CKP - MAIN LOOP.
  182. *
  183. * ENTRY - DM* FILE CONTAINS FIELD LENGTH AND CONTROL
  184. * POINT DUMP.
  185.  
  186.  
  187. CKP RJ PRS PRESET PROGRAM
  188. RECALL O
  189. RJ HDR WRITE HEADER ON CHKPT FILE
  190. RJ WRT WRITE FILE TABLE TO CHKPT FILE
  191. RJ CPF COPY LOCAL FILES TO CHKPT FILE
  192.  
  193. * COPY DM* FILE TO CHKPT FILE.
  194.  
  195. SA1 =C/DM*/
  196. SX3 3
  197. BX6 X1+X3 SET FILE NAME TO DM*
  198. MX5 0
  199. SA6 I
  200. REWIND I
  201. SX6 40000B SET DATA TYPE
  202. SB5 B1
  203. RJ BLO COPY DM* FILE TO CHKPT FILE
  204.  
  205. * PROCESS END OF CHECKPOINT.
  206.  
  207. SX6 50000B SET END OF CKP
  208. SA6 A6+
  209. WRITEW O,BUF,A6-BUF+1
  210. WRITER O,R
  211. SA1 CKNO GET NUMBER OF THIS CHECKPOINT
  212. RJ CDD CONVERT TO DISPLAY CODE
  213. SA2 CKPA+1
  214. MX0 -24
  215. BX7 -X0*X6
  216. SA1 HDRB CONTROL WORD FOR LAST WRITE TO CKP FILE
  217. LX7 24
  218. MX6 1
  219. BX7 X7+X2 ADD CHECKPOINT NUMBER TO DAYFILE MESSAGE
  220. SA7 A2+
  221. BX6 X1+X6
  222. WRITEO O
  223. WRITER O,R
  224. BKSP O BACKSPACE TO BE READY FOR NEXT CHKPT
  225. SA1 SPPR+1 SET COMPLETION BIT IN PARAMETER TABLE
  226. MX0 12
  227. SA2 CKNO GET NUMBER OF THIS CHECKPOINT
  228. LX2 48
  229. BX6 -X0*X1 MASK NEW NUMBER IN RESPONSE
  230. SX7 B1
  231. BX6 X6+X7 ADD COMPLETION BIT
  232. BX6 X6+X2 ADD NEW CHECKPOINT NUMBER
  233. SA6 A1 RESTORE PARAMETER WORD
  234. SX6 3
  235. SA1 =C*CCCCCCO* RETURN CONTROL STATEMENT FILE
  236. BX6 X1+X6
  237. SA6 I
  238. RETURN A6
  239. MESSAGE CKPA CHECKPOINT COMPLETE MESSAGE
  240. ENDRUN
  241.  
  242. CKPA DATA 10H CHECKPOIN
  243. VFD 12/2HT ,24/0,24/4H COM
  244. DATA 6LPLETE.
  245. CKPB DATA 10HPLETED TO SCRATCH WORD-USED IF ALTERNATE CB FILES
  246. TITLE SUBROUTINES
  247. BLO SPACE 4
  248. ** BLO - COPY FILE TO CHKPT FILE IN BLOCKED MODE.
  249. *
  250. * ENTRY (X6) = DATA TYPE.
  251. * (X5) = -1 IF COPY TO POSITION.
  252. * (B5) = 0 IF EMPTY FILE.
  253. *
  254. * EXIT FILE IN FET I COPIED TO FILE IN FET O
  255. *
  256. * CALLS NONE.
  257. *
  258. * USES A - 1, 2, 3, 4, 6, 7.
  259. * B - 2, 5, 6.
  260. * X - 1, 2, 3, 4, 6, 7.
  261. *
  262. * MACROS READ, READW, RECALL, WRITEW.
  263.  
  264.  
  265. BLO SUBR ENTRY/EXIT
  266. SA6 REC STORE DATA TYPE
  267. ZR B5,BLO6 IF CONTROL WORD NEEDED FOR EMPTY FILE
  268. SX7 BLO1 SET ERROR PROCESSING RETURN ADDRESS
  269. SA7 ERPA
  270. PL X5,BLO1 IF NOT COPY TO POSITION
  271. SA2 I+1 SET RANDOM FILE BIT
  272. MX1 1
  273. LX1 60-12
  274. BX6 X1+X2
  275. SA6 A2
  276. BX6 X6-X6
  277. SA6 I+6 CLEAR RANDOM ADDRESS RETURN
  278. BLO1 READ I
  279. PL X5,BLO2 IF NOT COPY TO POSITION
  280. SA1 I+6
  281. AX1 30
  282. SA2 I+9
  283. AX2 12
  284. IX3 X2-X1
  285. MX1 -24
  286. BX3 -X1*X3
  287. SB5 B0
  288. PL X3,BLO2 IF NOT PAST POSITION
  289. EQ BLO6
  290.  
  291. BLO2 SA1 PTR RETRIEVE BLOCK WORD
  292. SA2 X1
  293. MX3 -9
  294. BX3 -X3*X2
  295. SA4 REC SET DATA TYPE
  296. BX6 X3+X4
  297. SA6 X1 UPDATE BLOCK WORD
  298. READW I,(X1+B1),X3 READ DATA IN AFTER CONTROL WORD
  299. NZ X1,BLO3 IF EOR OR EOF
  300. RECALL I
  301. WRITEW O,BUF,BUFL
  302. SX6 777B
  303. SA6 BUF RESET BLOCK WORD
  304. SX7 A6
  305. SA7 PTR RESET LOCATION POINTER
  306. EQ BLO2 LOOP
  307.  
  308. * IF END OF RECORD.
  309.  
  310. BLO3 SA2 PTR UPDATE POINTERS
  311. SB5 X2 CONTROL WORD ADDRESS
  312. SB5 B6-B5 NEW ADDRESS - OLD ONE
  313. SA4 REC
  314. SX4 X4+1000B SET EOR FLAG
  315. SB5 B5-B1 NUMBER OF WORDS READ
  316. SX6 X4+B5
  317. SB2 BUF+777B END OF BUFFER ADDRESS
  318. SA6 X2 UPDATE BLOCK WORD
  319. SX6 B2-B6 NUMBER WORDS LEFT IN BUF
  320. NG X1,BLO4 IF EOF OR EOI
  321. SA6 B6
  322. SX7 A6 CURRENT POSITION
  323. SA7 PTR UPDATE LOCATION POINTER
  324. NZ X6,BLO1 IF NOT END OF BUFFER
  325. WRITEW O,BUF,BUFL-1
  326. SX6 777B
  327. SA6 BUF RESET BLOCK WORD
  328. EQ BLO5 LOOP
  329.  
  330. * IF END OF FILE.
  331.  
  332. BLO4 SA1 PTR
  333. SA2 X1 RETRIEVE BLOCK WORD
  334. SX6 X2+1000B SET EOF FLAG
  335. SA4 I
  336. LX4 59-9
  337. SA6 X1
  338. NG X4,BLO6 IF EOI
  339. SX6 B2-B6
  340. SA6 B6 SET NEW BLOCK WORD
  341. NZ X6,BLO5 IF NOT AT END
  342. WRITEW O,BUF,BUFL-1
  343. SX6 777B
  344. SA6 BUF RESET BLOCK WORD
  345. BLO5 SX7 A6
  346. SA7 PTR RESET LOCATION POINTER
  347. EQ BLO1 LOOP
  348.  
  349. * IF EOI.
  350.  
  351. BLO6 SA1 PTR
  352. SA3 REC GET DATA TYPE
  353. SX6 X3+3000B SET EOI FLAG
  354. SX6 X6+B5 SET LENGTH OF BLOCK
  355. SA6 X1
  356. SB2 A6+B5 ADDRESS OF LAST WORD READ
  357. SB6 BUF+777B
  358. SB6 B6-B2 NUMBER WORDS LEFT IN BUF
  359. SX6 B6-B1
  360. SA6 B2+B1 SET NEW BLOCK WORD
  361. NZ X6,BLO7 IF NOT AT END
  362. WRITEW O,BUF,BUFL-1
  363. SX6 777B
  364. SA6 BUF
  365. BLO7 SX7 A6
  366. SA7 PTR RESET OR UPDATE LOCATION POINTER
  367.  
  368. SA1 I+1
  369. MX2 1
  370. LX2 60-12
  371. BX7 -X2*X1
  372. SA7 A1 CLEAR RANDOM PROCESSING BIT
  373. EQ BLOX RETURN
  374. ERP$ SPACE 4,10
  375. ** ERP$ - TAPE ERROR PROCESSING ROUTINE.
  376. *
  377. * ENTRY RETURN ADDRESS SET IN (ERPA).
  378. *
  379. * EXIT TO ADDRESS IN (ERPA) IF PARITY OR WRONG PARITY ERROR
  380. * OTHERWISE ABORT. ALSO ABORT IF SECOND OCCURRANCE
  381. * OF WRONG PARITY ERROR.
  382. *
  383. * USES A - 1, 2, 3, 6, 7.
  384. * B - 3.
  385. * X - 1, 2, 3, 6, 7.
  386. *
  387. * MACROS ABORT, MESSAGE, REWIND.
  388.  
  389.  
  390. ERP$ SX2 37000B
  391. SA1 I
  392. BX3 X2*X1
  393. AX3 9
  394. SX2 X3-2
  395. ZR X2,ERP2 IF PARITY ERROR
  396. SX3 X2-2
  397. ZR X3,ERP3 IF WRONG PARITY
  398. ERP1 MESSAGE (=C* CHKPT UNABLE TO READ TAPE.*)
  399. ABORT
  400.  
  401. * PARITY ERROR PROCESSING.
  402.  
  403. ERP2 SX2 740777B CLEAR ERROR RETURN
  404. SA3 ERPA
  405. BX6 X2*X1
  406. SA6 A1
  407. SB3 X3
  408. JP B3 RETURN TO CALLER
  409.  
  410. * WRONG PARITY PROCESSING.
  411.  
  412. ERP3 SX3 100000B
  413. SA2 REC SET PARITY BIT FOR CONTROL WORD
  414. BX6 X2+X3
  415. SA3 ERPA CHECK IF FIRST ERROR
  416. SA6 A2
  417. NG X3,ERP1 IF SECOND TRY
  418. MX2 1 FLAG SECOND TRY
  419. BX7 X2+X3
  420. SX2 2 TOGGLE PARITY BIT
  421. SA7 A3
  422. BX1 X2-X1
  423. SX2 740777B CLEAR ERROR CODE RETURNED
  424. BX6 X2*X1
  425. SA6 A1
  426. SB3 X3+
  427. REWIND A1,R
  428. JP B3 RETURN TO CALLER
  429.  
  430. ERPA BSS 1 RETURN ADDRESS FOR ERROR PROCESSING
  431.  
  432. REC BSSZ 1
  433. CPF SPACE 4
  434. ** CPF - COPY FILES.
  435. *
  436. * ENTRY NONE.
  437. *
  438. * EXIT FILES IN FILE TABLE COPIED TO CHECKPOINT FILE
  439. * AND REPOSITIONED.
  440. *
  441. * CALLS BLO, POF.
  442. *
  443. * USES A - 0, 1, 2, 3, 6.
  444. * B - 5.
  445. * X - 0, 1, 2, 3, 4, 5, 6.
  446. *
  447. * MACROS REWIND.
  448.  
  449.  
  450. CPF SUBR ENTRY/EXIT
  451. SA0 SBUF-2 SET TABLE ENTRY
  452. CPF1 MX3 -12
  453. SB5 B0 PRESET EMPTY FILE FLAG
  454. SA0 A0+2
  455. SA1 A0 GET TABLE ENTRY
  456. SA2 A1+B1
  457. ZR X1,CPFX RETURN IF END OF TABLE
  458. SX5 B1+B1 PRESET COPY TYPE
  459. MX0 42
  460. BX7 X1
  461. BX6 X6-X6
  462. SA6 I+7
  463. SA7 A6+B1 SAVE FNT
  464. BX6 X2
  465. SA6 A7+B1 SAVE FST
  466. MX4 -24
  467. LX4 12
  468. BX4 -X4*X2 ISOLATE RANDOM ADDRESS
  469. BX3 X4
  470. ZR X4,CPF2 IF EMPTY FILE
  471. SA4 =C*CCCCCCO*
  472. BX4 X4-X1
  473. BX6 X0*X4
  474. SX3 3 SET DEFAULT OF BINARY
  475. ZR X6,CPF3 IF CONTROL STATEMENT FILE
  476. CPF2 MX5 -3
  477. BX4 X2
  478. AX4 9
  479. BX5 -X5*X4
  480. SX4 X5-4
  481. ZR X4,CPF1 IF NO COPY
  482. ZR X3,CPF4 IF EMPTY BUT COPY TYPE ALREADY SPECIFIED
  483. CPF3 BX4 X0*X1 SET NAME AND STATUS IF FET
  484. BX6 X4+X3
  485. SA6 I
  486. SX5 X5-1
  487. SB5 B1 CLEAR EMPTY FILE FLAG
  488. ZR X5,CPF4 IF NO REWIND REQUIRED
  489. REWIND I,R
  490. CPF4 SX6 30000B SET DATA TYPE
  491. RJ BLO COPY FILE IN BLOCKED MODE
  492. REWIND I,R
  493. RJ POF POSITION FILE
  494. EQ CPF1 LOOP
  495. HDR SPACE 4
  496. ** HDR - WRITE HEADER.
  497. *
  498. * ENTRY NONE.
  499. *
  500. * EXIT HEADER WRITTEN ON CHECKPOINT FILE.
  501. *
  502. * CALLS NONE.
  503. *
  504. * USES A - 1, 2, 6.
  505. * X - 1, 2, 6, 7.
  506. * B - NONE.
  507. *
  508. * MACROS GETJN, PDATE, WRITEW.
  509.  
  510.  
  511. HDR SUBR ENTRY/EXIT
  512. PDATE I+7 GET DATE AND TIME
  513. SX6 10002B SET CODE WORD
  514. SA6 BUF
  515. SA2 CKNO GET CHECKPOINT NUMBER
  516. SA1 MDFL GET MODE FLAG
  517. LX1 12
  518. BX6 X1+X2
  519. SA2 I+7
  520. LX2 18
  521. BX6 X2+X6
  522. SA6 A6+B1
  523. SA6 HDRB STORE HEADER
  524. GETJN BUF+2 GET JSN
  525. WRITEW O,BUF,3
  526. SX6 777B
  527. SA6 BUF
  528. SX6 A6
  529. SA6 PTR
  530. EQ HDRX RETURN
  531. POF SPACE 4,15
  532. ** POF - POSITION FILE.
  533. *
  534. * ENTRY MASS STORAGE FILE REWOUND.
  535. *
  536. * EXIT MASS STORAGE FILE REPOSITIONED TO RANDOM INDEX
  537. * VALUE AT TIME OF CHECKPOINT REQUEST UNLESS AN ERROR
  538. * OCCURRED.
  539. *
  540. * USES X - 0, 1, 4, 6, 7.
  541. * A - 1, 6.
  542. * B - 3.
  543. *
  544. * MACROS EREXIT, MESSAGE, READ.
  545.  
  546.  
  547. POF SUBR ENTRY/EXIT
  548. SA1 I+9 SET RANDOM ADDRESS
  549. AX1 12
  550. MX0 -24
  551. BX6 -X0*X1
  552. ZR X6,POFX IF NO RANDOM ADDRESS
  553. SA6 P+6
  554. SA1 I
  555. BX6 X1
  556. SA6 P SET FILE NAME
  557. EREXIT POF1
  558. READ P,R
  559. EREXIT 0
  560. EQ POFX RETURN
  561.  
  562. POF1 MX0 42
  563. SA1 I
  564. BX1 X0*X1 FILE NAME
  565. SX4 1R.
  566. RJ SFN GENERATE BIT MASK FOR FILE NAME
  567. CX7 X7 NUMBER OF BITS IN FILE NAME
  568. BX7 -X7
  569. SB3 X7+54 SHIFT COUNT TO POSITION PERIOD
  570. LX4 X4,B3
  571. BX6 X1+X4 INSERT FILE NAME INTO DAYFILE MESSAGE
  572. SA6 POFA+2
  573. MESSAGE POFA * POSITION ERROR ON--XXXXXXX.*
  574. EREXIT 0
  575. EQ POFX RETURN
  576.  
  577. POFA DATA C* POSITION ERROR ON--XXXXXXX.*
  578. RDA SPACE 4
  579. ** RDA - READ DATA.
  580. * PROCESSES CALLS TO READ WORDS (RDW=).
  581. * DEBLOCKS DATA IF CONTROL WORD READS.
  582. *
  583. * ENTRY B6 = BUFFER ADDRESS.
  584. * B7 = NUMBER OF WORDS NEEDED.
  585. * X0 = BLOCK COUNT.
  586. * X2 = FET ADDRESS.
  587. *
  588. * EXIT FET-2 CONTAINS NUMBER OF WORDS REMAINING IF BUFFER
  589. * FILLED.
  590. * XO = BLOCK COUNT (UPDATED).
  591. * X1 = -2 IF EOI.
  592. *
  593. * CALLS RDW=.
  594. *
  595. * USES A - 1, 3, 6, 7.
  596. * B - 5, 6, 7.
  597. * X - 0, 1, 4, 6, 7.
  598.  
  599.  
  600. RDA5 SX6 B5-B7 UPDATE WORDS REMAINING
  601. SA6 A1
  602.  
  603. RJ RDW= READ WORDS
  604. RDA PS ENTRY/EXIT
  605. RDA1 SA1 X2-2 GET NUMBER OF WORDS BEFORE CONTROL WORD
  606. SB5 X1+
  607. PL X1,RDA2 IF NOT FIRST READ
  608. SX7 B7+ SET WORDS NEEDED
  609. SA7 RDAA
  610. JP RDA4
  611.  
  612. RDA2 GE B5,B7,RDA5 IF ENOUGH DATA TO FILL BUFFER
  613. SA3 X2-1 CHECK EOR FLAG
  614. PL X3,RDA3 IF NOT EOR ON FILE
  615. MX6 1 SET NEW READ FLAG
  616. SB7 B5+B1 SET WORDS TO READ
  617. SA6 A3
  618. SA6 A1
  619. RJ RDW= READ WORDS
  620. SX1 B6-B1 SET EOR INDICATION
  621. SB6 B6-B1 BACK UP LWA TO ALLOW FOR CONTROL WORD
  622. JP RDA RETURN
  623.  
  624. RDA3 SX6 B7-B5 SAVE ADDITIONAL WORDS NEEDED
  625. SA6 RDAA
  626. SB7 B5+B1 SET WORDS TO TRANSFER
  627. RJ RDW= READ WORDS
  628. SB6 B6-B1 BACK UP OVER LAST CONTROL WORD
  629. RDA4 SB7 B1 READ CONTROL WORD
  630. RJ RDW=
  631. NG X1,RDA IF EOF/EOI
  632. SB6 B6-B1 BACK UP WORKING BUFFER
  633. SA1 B6 CONTROL WORD
  634. SX7 5
  635. SX4 X1+4 ROUND UP
  636. AX1 36 EXTRACT BLOCK SIZE
  637. SX3 X1
  638. IX7 X4/X7 WORDS IN BLOCK
  639. IX6 X7-X3 SAVE EOR FLAG
  640. SA7 X2-2 STORE WORD COUNT
  641. SA6 X2-1 EOR FLAG
  642. SA1 RDAA RESET WORDS NEEDED
  643. SB7 X1
  644. SX0 X0+B1 INCREMENT BLOCK COUNT
  645. JP RDA1 LOOP
  646.  
  647. RDAA CON 0
  648. WRT SPACE 4
  649. ** WRT - WRITE TABLE.
  650. *
  651. * ENTRY NONE.
  652. *
  653. * EXIT FILE TABLE WRITTEN ON CHECKPOINT FILE.
  654. *
  655. * USES X - ALL.
  656. * A - ALL.
  657. * B - 2, 5.
  658. *
  659. * MACROS ABORT, MESSAGE, MOVE, WRITEO, WRITEW.
  660.  
  661.  
  662. WRT SUBR ENTRY/EXIT
  663. MX0 42
  664. SX6 20000B SET DATA TYPE
  665. SA6 REC
  666. SA5 BUF SET BUFFER ADDRESS
  667. SB2 B1+B1
  668.  
  669. * SEARCH FILE LIST.
  670.  
  671. SA0 SBUF-1 SET FNT TABLE ADDRESS
  672. WRT1 SA0 A0+B2
  673. SA1 A0
  674. ZR X1,WRT15 IF END OF FNT TABLE
  675. MX6 -2 SET FILE TYPE INDICATOR TO ZERO IF TAPE
  676. BX3 X1
  677. AX3 13
  678. BX3 -X6*X3
  679. SB3 X3-1
  680. SA3 =C*CCCCCCO*
  681. BX2 X1-X3
  682. BX2 X0*X2
  683. NZ X2,WRT1.1 IF NOT CONTROL STATEMENT FILE
  684. SA2 CSFP GET CONTROL STATEMENT FILE POSITION
  685. MX6 -6 SAVE WORD COUNT
  686. BX6 -X6*X2
  687. BX6 X6+X3
  688. MX3 -24 SAVE PRU NUMBER
  689. LX3 6
  690. BX3 -X3*X2
  691. LX3 6
  692. BX7 X3
  693. SA6 A5 STORE ENTRY
  694. SA7 A6+B1
  695. SA5 A5+B2
  696. EQ WRT1 LOOP FOR ALL FNT ENTRIES
  697.  
  698. * CHECK FOR CCL FILES.
  699.  
  700. WRT1.1 SA3 WRTD *ZZZZZC0*
  701. SA4 WRTE *ZZZZZC2*
  702. BX7 X0*X1
  703. IX3 X7-X3
  704. NG X3,WRT2 IF NOT CCL FILE
  705. IX4 X4-X7
  706. NG X4,WRT2 IF NOT CCL FILE
  707. SX7 4
  708. EQ B3,WRT7 IF TAPE
  709. R= X7,2
  710. EQ WRT7 MAKE TABLE ENTRY
  711.  
  712. WRT2 SA3 PAR SET FILE LIST ADDRESS
  713. MX6 -30
  714. BX3 -X6*X3
  715. ZR X3,WRT11 IF NO TABLE
  716. AX3 12 GET NUMBER OF FILES IN LIST
  717. SB5 X3
  718. WRT3 SA3 A3+B1
  719. BX6 X1-X3
  720. BX6 X0*X6
  721. ZR X6,WRT5 IF FOUND IN LIST
  722. SB5 B5-B1
  723. NZ B5,WRT3 LOOP ALL FILE ENTRIES
  724. SA3 SPFL CHECK IF SELECTIVE CHECKPOINT
  725. ZR X3,WRT11 IF ALL FILES REQUIRED
  726. SA3 WRTC CHECK FOR SYSTEM FILES
  727. WRT4 BX6 X1-X3
  728. BX2 X0*X6
  729. ZR X2,WRT4.1 IF SYSTEM FILE
  730. SA3 A3+B1
  731. NZ X3,WRT4 LOOP
  732. BX1 X0*X1
  733. SA3 WRTF *ZZCCLAA*
  734. IX6 X3-X1
  735. ZR X6,WRT4.1 IF SPECIAL CCL FILE
  736. PL X6,WRT1 IF NOT SPECIAL CCL FILE
  737. SA3 A3+B1
  738. IX2 X3-X1
  739. NG X2,WRT1 IF NOT SPECIAL CCL FILE
  740. WRT4.1 NZ B3,WRT6 IF NOT TAPE
  741. SX7 4
  742. EQ WRT7 STORE IN TABLE
  743.  
  744. WRT5 SX7 X3 GET COPY TYPE
  745. AX7 12
  746. NZ B3,WRT5.1 IF NOT TAPE
  747. SX2 X7-4
  748. ZR X2,WRT7 IF COPY TYPE IS CORRECT FOR TAPE
  749. SA3 PGNR
  750. NZ X3,WRT4.1 IF CONTROL CARD CALL
  751.  
  752. * ISSUE WARNING MESSAGE AND FORCE SELECTION OF COPY TYPE 4
  753. * FOR MAGNETIC TAPE.
  754.  
  755. SB6 A1+ SAVE FNT ADDRESS
  756. SB2 1R+
  757. SB3 WRTB ASSEMBLY AREA
  758. SB5 -WRTA
  759. BX1 X0*X1
  760. RJ SNM SET NAME IN MESSAGE
  761. MESSAGE WRTB,3,R
  762. SA1 B6 RESTORE FNT ENTRY
  763. R= B2,2
  764. SX7 4 FORCE COPY TYPE
  765. EQ WRT7 CONTINUE WITH PROCESSING
  766.  
  767. WRT5.1 SX2 X7-3
  768. NZ X2,WRT7 IF NO STATUS CHECK NEEDED
  769.  
  770. * CHECK STATUS FOR COPY TYPE.
  771.  
  772. WRT6 SA3 A1+B1 GET FST
  773. SX7 B0+ SET COPY TYPE
  774. LX3 59-0
  775. NG X3,WRT7 IF FILE WRITTEN
  776. MX4 -3
  777. BX4 -X4*X3
  778. SX3 X4-3
  779. ZR X3,WRT7 IF EOI
  780. SX7 2 SET COPY TYPE
  781.  
  782. * STORE IN TABLE.
  783.  
  784. WRT7 SA1 A1 GET FNT/FST
  785. SA3 A1+B1
  786. MX2 -4
  787. BX6 X3
  788. LX6 -4
  789. BX4 -X2*X6
  790. SX4 X4-4
  791. NZ X4,WRT8 IF NOT EXECUTE-ONLY
  792. SX7 4
  793. WRT8 MX2 -6
  794. BX4 -X2*X1 EXTRACT FILE STATUS
  795. SX2 X4-UPST
  796. ZR X2,WRT16 IF SECURE FILES
  797. MX4 -24
  798. LX4 12
  799. BX4 -X4*X3
  800. NZ X4,WRT10 IF NOT EMPTY FILE
  801. SX7 4 SET NO COPY
  802. WRT10 BX6 X1
  803. MX0 3
  804. LX7 9
  805. LX0 11-59
  806. BX4 -X0*X3
  807. BX7 X7+X4
  808. SA6 A5
  809. MX0 42
  810. SA7 A6+B1
  811. SA5 A5+B2 UPDATE LOCATION POINTER
  812. EQ WRT1 LOOP ALL FNT ENTRIES
  813.  
  814. WRT11 SA3 TSSF CHECK FOR SPECIAL SYSTEM FILES
  815. MX4 42
  816. WRT12 BX6 X3-X1
  817. BX6 X4*X6
  818. ZR X6,WRT1 IF SPECIAL SYSTEM FILE
  819. SA3 A3+B1
  820. NZ X3,WRT12 IF NOT END OF TABLE
  821.  
  822. * CHECK FOR TAPE FILE.
  823.  
  824. EQ B3,WRT14 IF TAPE FILE
  825.  
  826. * CHECK FILE TYPE.
  827.  
  828. WRT13 MX4 -12 CHECK FILE TYPE
  829. BX4 -X4*X1
  830. AX4 6
  831. SX6 X4-LOFT
  832. ZR X6,WRT6 IF LOCAL
  833. SX6 X4-LIFT
  834. ZR X6,WRT14 IF LIBRARY
  835. SX6 X4-PTFT
  836. ZR X6,WRT6 IF PRIMARY TERMINAL
  837. SX6 X4-QFFT
  838. ZR X6,WRT6 IF QUEUE FILE
  839. SX6 X4-INFT
  840. ZR X6,WRT6 IF INPUT FILE
  841. SX6 X4-PMFT
  842. NZ X6,WRT1 LOOP IF NOT DIRECT ACCESS FILE
  843. BX7 X1 CHECK WRITE LOCKOUT FLAG
  844. LX7 59-12
  845. PL X7,WRT6 IF NOT READ ONLY
  846. SA3 A1+B1 CHECK FILE MODE
  847. MX4 -4
  848. AX3 4
  849. BX4 -X4*X3
  850. SX6 X4-10B
  851. ZR X6,WRT6 IF READ/UPDATE
  852. SX6 X4-6
  853. ZR X6,WRT6 IF READ/APPEND
  854. SX6 X4-5
  855. ZR X6,WRT6 IF READ/MODIFY
  856. WRT14 SX7 4 SET COPY TYPE
  857. EQ WRT7
  858.  
  859. * END TABLE.
  860.  
  861. WRT15 BX6 X6-X6 SET ZERO WORD
  862. SA6 A5
  863.  
  864. SA4 REC
  865. SX5 A6-BUF+1
  866. BX6 X4+X5
  867. WRITEO O WRITE CODE WORD
  868. WRITEW O,BUF,X5 WRITE TABLE
  869. MOVE X5,BUF,SBUF
  870. SX6 777B RESET POINTERS
  871. SA6 BUF
  872. SX7 A6
  873. SA7 PTR
  874. EQ WRTX RETURN
  875.  
  876. WRT16 MESSAGE (=C* SECURE FILES - CHECKPOINT ABORT.*)
  877. ABORT
  878.  
  879. WRTA DATA C* CONTENTS NOT CHECKPOINTED FOR FILE +++++++.*
  880. WRTB BSSZ 5 ASSEMBLY AREA
  881.  
  882. * LIST OF FILES TO BE CHECKPOINTED.
  883.  
  884. WRTC DATA C*INPUT*
  885. DATA C*OUTPUT*
  886. DATA C*LGO*
  887. DATA C*PUNCH*
  888. DATA C*PUNCHB*
  889. DATA C*P8*
  890. DATA C*CCCCCCO*
  891. CON 0
  892. WRTD DATA C*ZZZZZC0*
  893. WRTE DATA C*ZZZZZC2*
  894. WRTF DATA C*ZZCCLAA*
  895. DATA C*ZZCCLZZ*
  896.  
  897. * LIST OF FILES NOT TO BE CHECKPOINTED.
  898.  
  899. TSSF BSS 0
  900. VFD 36/6LINPUT*,24/0
  901. VFD 18/3LDM*,42/0
  902. VFD 42/7LCCCCCCC,18/0
  903. CON 0
  904. COM SPACE 4
  905. TITLE COMMON DECKS AND BUFFERS.
  906. * COMMON DECKS.
  907.  
  908.  
  909. *CALL COMCCDD
  910. *CALL COMCCIO
  911. *CALL COMCCPM
  912. *CALL COMCDXB
  913. *CALL COMCLFM
  914. *CALL COMCMVE
  915. *CALL COMCRDO
  916. *CALL COMCRDW
  917. *CALL COMCSFN
  918. *CALL COMCSNM
  919. *CALL COMCSYS
  920. *CALL COMCWTO
  921. *CALL COMCWTW
  922. BUF SPACE 4
  923. * BUFFER ASSIGNMENTS.
  924.  
  925.  
  926. USE BUFFERS
  927. BUF EQU *
  928. IBUF EQU BUF+BUFL
  929. OBUF EQU IBUF+IBUFL
  930. SBUF EQU OBUF+OBUFL
  931. TBUF EQU SBUF+SBUFL
  932. RFL= EQU TBUF+TBUFL
  933. TITLE PRESET.
  934. PRS SPACE 4
  935. ** PRESET ROUTINE.
  936. *
  937. * ENTRY FILE /DM*/ PRESENT.
  938. *
  939. * EXIT CHECKPOINT FILE POSITIONED.
  940. * FILE LIST IN PAR.
  941. * FNT LIST IN SBUF.
  942. * CONTROL STATEMENT FILE ATTACHED.
  943. * CHECKPOINTED NUMBER INCREMENTED.
  944. *
  945. * CALLS VAL.
  946. *
  947. * USES A - 1, 2, 3, 4, 5, 6, 7.
  948. * B - 1, 2, 4.
  949. * X - ALL.
  950. *
  951. * MACROS ABORT, ACCSF, BKSP, BKSPRU, DISTC,
  952. * GETFNT, MESSAGE, MOVE, READ, READO,
  953. * READW, REWIND, SETFS, SKIPEI, STATUS,
  954. * WRITEO, WRITEW.
  955.  
  956.  
  957. ORG BUF+1
  958. PRS SUBR ENTRY/EXIT
  959. SB1 1
  960. SA1 JOPR CHECK JOB ORIGIN TYPE
  961. AX1 24
  962. SX2 X1-TXOT
  963. NZ X2,PRS1 IF NOT TXOT ORIGIN TYPE
  964. DISTC ON,TICF SET DISABLE TERMINAL CONTROL
  965. PRS1 SA1 PGNR CHECK FOR CONTROL CARD CALL
  966. NZ X1,PRS2 IF CONTROL CARD
  967. SA4 SPPR
  968. MX0 -18
  969. BX5 -X0*X4
  970. ZR X5,PRS4 IF NO LIST ADDRESS
  971. MOVE 20B,(SPPR+1),PAR GET LIST
  972. SA1 SPPR
  973. AX1 18
  974. SX6 X1
  975. SA6 SPFL SET SELECTIVE CHECKPOINT
  976. SA1 PAR
  977. AX1 12
  978. SX1 X1-20B
  979. NG X1,PRS4 IF CONTAINS ENTIRE LIST
  980.  
  981. * GET FILE LIST FROM DM* FILE SINCE TOO LONG FOR CONTROL PT AREA
  982.  
  983. SA3 =C/DM*/
  984. SX4 3
  985. BX6 X3+X4
  986. SA6 I
  987. READ I
  988. READW I,PAR,100B
  989. SA1 PAR+20B
  990. MX0 -12
  991. BX0 -X0*X1
  992. SB2 6 SET SHIFT COUNT
  993. AX4 B2,X5
  994. IX0 X0-X4 GET PRU,S TO BACKSPACE
  995. SKIPEI I
  996. BKSPRU I,X0,R
  997. MX0 -6
  998. BX5 -X0*X5
  999. SA1 I+1 SET IN = OUT = FIRST
  1000. SX6 X1
  1001. SA6 A1+B1
  1002. SA6 A6+B1
  1003. READ I
  1004. READW I,PAR,X5
  1005.  
  1006. * READ LIST INTO PAR.
  1007.  
  1008. READW I,PAR,100B (ONLY 77B FILES ALLOWED)
  1009. REWIND I
  1010. EQ PRS4 REQUEST CHECKPOINT
  1011.  
  1012. * PROCESS CONTROL CARD CALL.
  1013.  
  1014. * CREATE LIST.
  1015.  
  1016. PRS2 SA1 ACTR
  1017. SB4 X1
  1018. SX6 X1
  1019. ZR B4,PRS4 IF NO ARGUMENTS
  1020. LX6 12
  1021. SA6 SPFL SET SELECTIVE CHECKPOINT FLAG
  1022. SA6 PAR SET NUMBER OF FILES
  1023. SA1 ARGR GET FIRST FILE NAME
  1024. SX3 30000B SET COPY TYPE
  1025. PRS3 BX6 X1+X3
  1026. SA6 A6+B1
  1027. SB4 B4-B1
  1028. SA1 A1+B1 GET NEXT FILE
  1029. NZ B4,PRS3 IF MORE FILES, LOOP
  1030.  
  1031. PRS4 MESSAGE (=C* CKP REQUEST.*)
  1032. SA1 SPFL
  1033. ZR X1,PRS5 IF NOT SELECTIVE CHECKPOINT
  1034. SA3 PAR SET FILE LIST ADDRESS
  1035. SX6 X3
  1036. SA6 A1
  1037. PRS5 SX6 777B PRESET POINTERS
  1038. SA6 BUF
  1039. SX7 A6+
  1040. SA7 PTR
  1041.  
  1042. * GET CONTROL STATEMENT FILE.
  1043.  
  1044. SX6 3
  1045. SA5 =C*CCCCCCO*
  1046. BX6 X5+X6
  1047. SA6 I SET NAME IN FET
  1048. STATUS I
  1049. SA1 I
  1050. SX1 X1-1
  1051. NZ X1,PRS6 IF ALREADY PRESENT
  1052. ACCSF I,CSFP,LOCK ATTACH FILE WITH POSITION RETURNED
  1053.  
  1054. * GET LIST OF ALL FILES.
  1055.  
  1056. PRS6 SX6 B0 SET INITIAL CALL
  1057. SA6 SBUF
  1058. SA1 PRSC
  1059. BX6 X1
  1060. SA6 I+8
  1061. GETFNT I
  1062. SA1 SBUF
  1063. NZ X1,PRS7 IF NOT ALL FILES RETURNED
  1064. SA1 I+8
  1065. PL X1,PRS8 IF NO ERROR
  1066. PRS7 MESSAGE (=C* ERROR - FILE(S) NOT PROCESSED.*)
  1067.  
  1068. * PROCESS CHECKPOINT FILE(S).
  1069.  
  1070. PRS8 SA1 I+9
  1071. ZR X1,PRS16 IF NO CHECKPOINT FILE
  1072. NG X1,PRS17 IF MORE THAN TWO FILES
  1073. SX3 3
  1074. SA2 A1+1 FST ENTRY FOR FILE O
  1075. MX0 42
  1076. BX4 X0*X1
  1077. BX6 X4+X3
  1078. SA6 O PUT CHECKPOINT FILE NAME IN FET
  1079. MX7 -6
  1080. BX6 -X7*X1
  1081. SA6 MDFL SAVE MODE OF FILE (CB OR CK)
  1082. MX3 -24
  1083. AX2 12
  1084. BX0 -X3*X2 SAVE RANDOM INDEX OR BLOCK NUMBER
  1085. SA1 A2+B1
  1086. ZR X1,PRS10 IF NO ALTERNATE FILE
  1087. SA2 A1+1 ALTERNATE FILE FST ENTRY
  1088. BX4 -X7*X1
  1089. SX7 X4-CKST
  1090. ZR X7,PRS17 IF CK FILE AMONG ALTERNATE FILES
  1091. BX6 X4-X6
  1092. MX4 42
  1093. NZ X6,PRS17 IF CK FILE AMONG ALTERNATE FILES
  1094. SX6 3
  1095. BX4 X4*X1
  1096. BX7 X6+X4
  1097. SA7 I SET ALTERNATE FILE NAME IN SCRATCH FET
  1098. SX6 77B
  1099. SA6 MDFL SET MODE FLAG FOR ALTERNATE FILES
  1100. AX2 12
  1101. BX6 -X3*X2
  1102. ZR X6,PRS9 IF ALTERNATE FILE EMPTY AND LOCAL
  1103. SX6 X6-1
  1104. ZR X6,PRS10 IF ALTERNATE FILE EMPTY OR REWOUND
  1105. READ I
  1106. READO I
  1107. NG X1,PRS10 IF EOF/EOI - NO DATA ON FILE
  1108. PL X6,PRS10 IF NOT CODE WORD CANT BE CHECKPOINT FILE
  1109. SA6 PRSA SAVE CODE WORD
  1110. BKSP I,R
  1111. SA1 X2+B1 SET IN = OUT = FIRST
  1112. SX6 X1
  1113. SA6 A1+B1
  1114. SA6 A6+B1
  1115. EQ PRS10 DO NOT REWIND *I*
  1116.  
  1117. * THE REWIND ON *I* TAKES PLACE TO ENSURE THE FILE IS
  1118. * POSITIONED AT BOI. THIS IS NECESSARY FOR TAPE
  1119. * FILES ON WHICH AN OPEN/WRITE WAS JUST PERFORMED.
  1120.  
  1121. PRS9 REWIND I POSITION CHECKPOINT FILE TO BOI
  1122. PRS10 ZR X0,PRS14 IF CHECKPOINT FILE EMPTY AND LOCAL
  1123. SX6 X0-1
  1124. ZR X6,PRS15 IF CHECKPOINT FILE EMPTY OR REWOUND
  1125. READ O
  1126. READO O
  1127. NG X1,PRS15 IF EOF/EOI - NO DATA ON FILE
  1128. PL X6,PRS14 IF CHECKPOINT FILE MISPOSITIONED
  1129. SA6 PRSB SAVE CODE WORD
  1130. BKSP O,R
  1131. SA1 X2+B1 SET IN = OUT = FIRST
  1132. SX7 X1
  1133. SA7 A1+B1
  1134. SA7 A7+B1
  1135. SA5 PRSB RETRIEVE CODE WORD
  1136. MX0 -12
  1137. SA1 MDFL
  1138. SX1 X1-77B
  1139. BX5 -X0*X5
  1140. NZ X1,PRS12 IF NO ALTERNATE FILE
  1141. SX4 X5
  1142. SA5 PRSA
  1143. BX5 -X0*X5
  1144. IX7 X4-X5 COMPARE CHECKPOINT NUMBERS
  1145. NG X7,PRS11 IF NO NEED TO SWITCH FILES
  1146. SA2 O SWITCH FILE NAMES
  1147. SX5 X4
  1148. SA1 I
  1149. BX6 X1
  1150. SA6 O
  1151. BX6 X2
  1152. SA6 A1
  1153. PRS11 MX3 42
  1154. SA1 O FILE NAME
  1155. BX1 X3*X1
  1156. SX4 1R.
  1157. RJ SFN GENERATE BIT MASK FOR FILE NAME
  1158. CX7 X7 NUMBER OF BITS IN FILE NAME
  1159. SA2 CKPB
  1160. BX7 -X7
  1161. SB3 X7+54 SHIFT COUNT TO POSITION PERIOD
  1162. BX7 X2
  1163. LX4 X4,B3
  1164. SA7 A2-1 GENERATE DAYFILE MESSAGE
  1165. BX6 X1+X4
  1166. SA6 A2
  1167. PRS12 SX6 X5+B1 INCREMENT CHECKPOINT NUMBER
  1168. LX6 47
  1169. PL X6,PRS13 IF CHECKPOINT NUMBER LIMIT NOT REACHED
  1170. MX6 1
  1171. LX6 -12
  1172. PRS13 LX6 -47
  1173. BX1 X6
  1174. SA6 CKNO SAVE CHECKPOINT NUMBER
  1175. RJ VAL VALIDATE ACCESS LEVEL
  1176. READ O
  1177. READO O
  1178. BX5 X6
  1179. BKSP O
  1180. MX0 -59
  1181. BX6 -X0*X5 CLEAR LAST CHECKPOINT FLAG
  1182. WRITEO O
  1183. WRITER O,R
  1184. SA1 MDFL CHECK MODE FLAG
  1185. SX1 X1-CKST
  1186. ZR X1,PRSX IF CK FILE, CONTINUE CHECKPOINT AT EOI
  1187. REWIND O WRITE OVER NEXT TO LAST CHECKPOINT FILE
  1188. EQ PRSX RETURN
  1189.  
  1190. PRS14 REWIND O
  1191. PRS15 SA1 MDFL MODE FLAG
  1192. SX1 X1-CKST CHECK FOR CK ON 1 CB FILE
  1193. ZR X1,PRS16.1 IF CK TYPE FILE
  1194. NG X1,PRS16.1 IF ONLY 1 CB FILE
  1195. SA1 PRSA
  1196. SA2 A1+B1
  1197. BX1 X1+X2 CHECK IF EITHER FILE HAS BEEN USED
  1198. ZR X1,PRS11 IF NEITHER FILE HAS BEEN USED
  1199. SX5 1 SET CHECKPOINT NUMBER TWO
  1200. JP PRS11 LOOP
  1201.  
  1202. PRS16 SETFS O,CKST SET FILE CCCCCCC STATUS TO CK
  1203. PRS16.1 RJ VAL VALIDATE ACCESS LEVEL
  1204. EQ PRSX
  1205.  
  1206. PRS17 MESSAGE (=C* CHECKPOINT FILE ERROR.*)
  1207. ABORT
  1208.  
  1209. PRSA BSSZ 1 TEMPORARY STORAGE FOR FILE I
  1210. PRSB BSSZ 1 TEMPORARY STORAGE FOR FILE O
  1211. PRSC VFD 38/0,1/1,3/0,18/SBUF *GETFNT* CONTROL WORD
  1212. VAL SPACE 4,15
  1213. ** VAL - VALIDATE ACCESS LEVEL.
  1214. *
  1215. * ENTRY CHECKPOINT FILE CREATED AND NAME IN FET.
  1216. *
  1217. * EXIT ABORT, IF SECURE SYSTEM AND CHECKPOINT
  1218. * FILE ACCESS LEVEL IS NOT JOB ACCESS LEVEL
  1219. * LIMIT.
  1220. *
  1221. * USES X - 0, 1, 3, 6, 7.
  1222. * A - 1, 7.
  1223. *
  1224. * MACROS ABORT, GETJAL, GETSSL, MESSAGE, STATUS.
  1225.  
  1226.  
  1227. VAL SUBR ENTRY/EXIT
  1228. GETSSL VALA GET SYSTEM SECURITY MODE
  1229. SA1 VALA
  1230. MX0 -3
  1231. LX1 12
  1232. BX6 -X0*X1
  1233. ZR X6,VALX IF NOT SECURE SYSTEM
  1234. GETJAL VALA GET JOB ACCESS LEVEL LIMIT
  1235. SA1 VALA
  1236. LX1 -6
  1237. BX3 -X0*X1
  1238. SX6 B1 SET SECURITY PROCESSING BIT
  1239. LX6 39-0
  1240. SA1 O+1
  1241. BX7 X1+X6
  1242. SA7 A1
  1243. STATUS O,P GET FILE ACCESS LEVEL
  1244. SA1 O+4
  1245. LX1 -36
  1246. BX2 -X0*X1
  1247. IX6 X2-X3
  1248. ZR X6,VALX IF ACCESS LEVELS ARE EQUAL
  1249. MESSAGE (=C* CHECKPOINT FILE ACCESS LEVEL ERROR.*)
  1250. ABORT
  1251.  
  1252. VALA CON 0 REPLY WORD
  1253. SPACE 4,10
  1254. ERRNG IBUF-*+1
  1255.  
  1256. END
cdc/nos2.source/opl871/chkpt.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator