User Tools

Site Tools


plato:source:plaopl:datax

Table of Contents

DATAX

Table Of Contents

  • [00005] STUDENT DATA ROUTINES
  • [00006] COMMENTS
  • [00018] COMMENTS
  • [00062] DEFINITIONS
  • [00111] -INITDAT- INITIALIZE FOR DATA COLLECTION
  • [00143] -DATAFIN- TERMINATE DATA COLLECTION
  • [00162] -DATAOUT- OUTPUT TO ECS DATA BUFFER
  • [00242] -DATAOUT- OUTPUT TO DATA FILE
  • [00280] -DATDATE- FORM DATE/TIME FOR DIRECTORY
  • [00319] DISKXJ PERFORM DISK I/O EXCHANGE
  • [00385] POSTXJ CHECK DISK I/O COMPLETION
  • [00416] -OUTPUT- COMMAND
  • [00475] -OUTPUTL- COMMAND
  • [00510] -OUTPUTT- COMMAND
  • [00538] -AREA- COMMAND
  • [00610] -AREAINC-
  • [00638] -ANSDAT- OUTPUT STUDENTS ANSWER
  • [00670] -AREAOUT- OUTPUT -AREA- COMMAND DATA
  • [00699] -HELPOUT- OUTPUT -HELP- KEY DATA
  • [00736] -TERMOUT- OUTPUT -TERM- DATA
  • [00771] -FINDAT- OUTPUT TIME IN LESSON DATA
  • [00890] -SYSDATA- TURN DATA ON FOR SPECIFIED FILE
  • [00915] -SYSDATA- CHECKPOINT DATA FILE
  • [01060] READSET
  • [01361] -READD- COMMAND (READ DATA FROM DATAFILE)
  • [01424] -RECORD- READ NEXT DATA RECORD
  • [01541] STORAGE DEFINITIONS

Source Code

DATAX.txt
  1. DATAX
  2. * /--- FILE TYPE = E
  3. * /--- BLOCK IDENT 00 000 79/08/25 16.46
  4. IDENT DATAX
  5. TITLE STUDENT DATA ROUTINES
  6. TITLE COMMENTS
  7. *
  8. CST
  9. *
  10. EXT ECSPRTY,NKLIST,NKLEND,RETPRO
  11. EXT PROCESS,PROC,ERXBADL,RETRNX,CKPROC
  12. EXT RETPROC
  13. EXT ERXBREC ERROR EXIT, -EXEC2-
  14. EXT ERXOPEN
  15. *
  16. *
  17. * /--- BLOCK COMMENTS 00 000 80/02/03 05.17
  18. TITLE COMMENTS
  19. *
  20. *
  21. * FORMAT OF ECS DATA BUFFER
  22. *
  23. * FIRST *DPRMLTH* WORDS ARE BUFFER PARAMETERS
  24. * *DATSTAT* = BUFFER STATUS BITS
  25. * *DINITSH* = FILE INITIALIZATION BIT
  26. * *DWRITSH* = FILE WRITE IN PROCESS BIT
  27. * *DFULLSH* = DATA FILE FULL BIT
  28. * *DERRSH* = ERROR BIT
  29. * BOTTOM 18 BITS = STATION NUMBER WHICH LAST SET
  30. * THE INITIALIZATION, WRITE, OR
  31. * ERROR BITS.
  32. * *DFACCT* = DATA FILE ACCOUNT NAME
  33. * *DFILNAM* = DATA FILE NAME
  34. * *DFINF* = FILE INFO WORD
  35. * *DDISKU* = DISK UNIT NUMBER
  36. * *DATBLOK* = CURRENT BLOCK NUMBER
  37. * *DATWORD* = CURRENT WORD POSITION
  38. *
  39. * NEXT *BLKLTH* WORDS = FILE DIRECTORY BLOCK
  40. * NEXT *BLKLTH* WORDS = CURRENT DATA BLOCK
  41. * NEXT *BLKLTH* WORDS = DISK I/O BUFFER
  42. * NEXT *RJLTH* WORDS = RJ TRAIL SAVE AREA
  43. *
  44. *
  45. *
  46. * FORMAT OF DATA READ (-READSET-) BUFFER
  47. *
  48. * FIRST *RPRMLTH* WORDS ARE BUFFER PARAMETERS
  49. * *RFACCT* = DATA FILE ACCOUNT NAME
  50. * *RFNAME* = DATA FILE NAME
  51. * *RFINF* = DATA FILE INFO WORD
  52. * *RDISKU* = DATA FILE DISK UNIT NUMBER
  53. * *RBLKLIM* = MAXIMUM LEGAL BLOCK NUMBER
  54. * *RBLOKN* = CURRENT BLOCK NUMBER
  55. * *RWORD* = CURRENT WORD POINTER
  56. *
  57. * NEXT *BLKLTH* WORDS = CURRENT DATA BLOCK
  58. * NEXT *BLKLTH* WORDS = NEXT DATA BLOCK
  59. *
  60. *
  61. * /--- BLOCK DEFINITION 00 000 80/02/03 05.16
  62. TITLE DEFINITIONS
  63. *
  64. * READSET BUFFER DEFINITIONS - CHANGE IN EXEC6 ALSO
  65. *
  66. RPARAMS EQU 0
  67. RFACCT EQU RPARAMS -READSET- FILE ACCOUNT NAME
  68. RFNAME EQU RFACCT+1 FILE NAME
  69. RFINF EQU RFNAME+1 FILE INFO WORD
  70. RDISKU EQU RFINF+1 DISK UNIT NUMBER
  71. RBLKLIM EQU RDISKU+1 MAXIMUM BLOCK NUMBER
  72. RBLOKN EQU RBLKLIM+1 CURRENT BLOCK NUMBER
  73. RWORD EQU RBLOKN+1 CURRENT WORD POINTER
  74. RPRMLTH EQU RWORD+1
  75. *
  76. RBLK1 EQU RPARAMS+RPRMLTH
  77. RBLK2 EQU RBLK1+BLKLTH
  78. *
  79. RBUFLTH EQU RBLK2+BLKLTH
  80. *
  81. * /--- BLOCK DEFINITION 00 000 79/07/15 21.30
  82. *
  83. *
  84. PURGMAC DISKI
  85. DISKI MACRO ADD,UNIT,BLOCK,ECS,N
  86. LOCAL AA,DD,XX
  87. IFC EQ,*N**,1
  88. DD SET =1
  89. IFC NE,*N**,1
  90. DD SET N
  91. CALL DISKXJ,ADD,UNIT,BLOCK,=1,ECS,DD
  92. NZ X6,XX
  93. AA TUTIM -1,,IOKEY
  94. CALL POSTXJ,XX,AA,XX
  95. XX BSS 0
  96. ENDM
  97. *
  98. *
  99. PURGMAC DISKO
  100. DISKO MACRO ADD,UNIT,BLOCK,ECS,N
  101. LOCAL AA,XX
  102. CALL DISKXJ,ADD,UNIT,BLOCK,=2,ECS,=1
  103. NZ X6,XX
  104. AA TUTIM -1,,IOKEY
  105. CALL POSTXJ,XX,AA,XX
  106. XX BSS 0
  107. ENDM
  108. *
  109. *
  110. * /--- BLOCK INITDAT 00 000 80/06/30 23.52
  111. TITLE -INITDAT- INITIALIZE FOR DATA COLLECTION
  112. *
  113. *
  114. *
  115. * -INITDAT-
  116. * INITIALIZE DATA COLLECTION FOR THIS STUDENT
  117. *
  118. * ON ENTRY - B1 = ADDRESS OF DATA FILE ACCOUNT NAME
  119. * B2 = ADDRESS OF DATA FILE NAME
  120. *
  121. * USES TBINTSV(1), TBINTSV(2)
  122. *
  123. *
  124. ENTRY INITDAT
  125. INITDAT EQ *
  126. SA1 TBLDATA CHECK ALREADY COLLECTING DATA
  127. SX1 X1
  128. NZ X1,INITDAT EXIT IF DATA ACTIVE
  129. SA1 B2 LOAD DATA FILE NAME
  130. ZR X1,INITDAT EXIT IF NO DATA FILE
  131. BX6 X1
  132. SA6 TBINTSV+3 SAVE DATA FILE NAME
  133. SA1 B1 LOAD ACCOUNT NAME
  134. BX6 X1
  135. SA6 TBINTSV+2
  136. SA1 INITDAT
  137. BX6 X1 SAVE EXIT JUMP
  138. SA6 TBINTSV+1
  139. X INIDOV CALL OVERLAY
  140. *
  141. *
  142. * /--- BLOCK DATAFIN 00 000 78/06/24 22.04
  143. TITLE -DATAFIN- TERMINATE DATA COLLECTION
  144. *
  145. *
  146. *
  147. * -DATAFIN-
  148. * END DATA COLLECTION FOR THIS STUDENT AND CLOSE
  149. * DATA FILE IF NO ONE ELSE IS USING DATA FILE
  150. *
  151. *
  152. ENTRY DATAFIN
  153. DATAFIN EQ *
  154. LINK DATAFIN
  155. SA1 TBLDATA CHECK IF ANY DATA FILE
  156. SX1 X1
  157. ZR X1,DATAFIN EXIT IF NO DATA COLLECTION
  158. X FINDOV CALL OVERLAY
  159. *
  160. *
  161. * /--- BLOCK DATAOUT 00 000 78/11/12 21.21
  162. TITLE -DATAOUT- OUTPUT TO ECS DATA BUFFER
  163. *
  164. *
  165. *
  166. * -DATAOUT- OUTPUT STUDENT DATA RECORD
  167. *
  168. * ON ENTRY - B1 = ADDRESS OF DATA RECORD
  169. * B2 = LENGTH OF DATA RECORD
  170. *
  171. * USES TBINTSV(0) - TBINTSV(3)
  172. *
  173. *
  174. ENTRY DATAOUT
  175. DATAOUT EQ *
  176. LINK DATAOUT
  177. SX6 3 INITIALIZE FILE COUNTER
  178. SA6 TBINTSV+3
  179. *
  180. * OUTPUT DATA RECORD TO ECS CURRENT BLOCK BUFFER
  181. *
  182. ENTRY DATAO
  183. DATAO SA1 TBLDATA CHECK IF DATA COLLECTION ACTIVE
  184. SX1 X1 PICK OFF DATA BUFFER LESSON NUM
  185. ZR X1,DAT990
  186. ZR B2,DAT990 EXIT IF NO DATA TO OUTPUT
  187. SB3 DATAMAX
  188. LT B3,B2,DAT990 EXIT IF TOO MUCH DATA
  189. SX6 B1 SAVE ADDRESS OF DATA
  190. SA6 DARG1
  191. SX6 B2 SAVE LENGTH OF DATA
  192. SA6 DARG2
  193. INTLOK X,I.DAT,W INTERLOCK
  194. SA1 TBLDATA GET BUFFER LESSON NUMBER
  195. SX1 X1
  196. CALL READLES,DATINF,(LPRMLTH+DPRMLTH)
  197. * /--- BLOCK DATAOUT 00 000 77/10/20 01.17
  198. SA1 INF+DATSTAT LOAD STATUS WORD
  199. BX2 X1
  200. LX1 DFULLSH CHECK IF DATA FILE FULL
  201. NG X1,DATNXT
  202. LX2 DERRSH CHECK IF DISK ERROR OCCURRED
  203. NG X2,DAT990
  204. SX1 LPRMLTH LENGTH OF HEADER RECORD
  205. IX4 X0+X1 X4 = ECS ADDRESS OF DATA INFO
  206. SA1 INF+DATWORD LOAD POINTER TO NEXT WORD
  207. SA2 DARG2
  208. SB1 X2 B1 = LENGTH OF DATA RECORD
  209. IX6 X1+X2 COMPUTE ENDING WORD
  210. SX3 BLKLTH LENGTH OF CURRENT BLOCK BUFFER
  211. IX3 X6-X3 CHECK IF ROOM IN BLOCK
  212. PL X3,DDISK JUMP TO SEND BLOCK TO DISK
  213. SA6 A1 UPDATE CURRENT WORD POINTER
  214. BX3 X6 SAVE A COPY OF *X6*
  215. SX6 DATWORD BIAS TO WORD POINTER
  216. IX0 X4+X6 ECS ADDRESS OF WORD POINTER
  217. WX3 X0 (-WXX- 1 WD READ, MAY CHG *A6*)
  218. SX1 X1+DBLK1 BIAS TO NEXT WORD
  219. IX0 X1+X4
  220. SA3 DARG1 ADDRESS OF DATA TO OUTPUT
  221. SA0 X3
  222. + WE B1 WRITE OUT DATA RECORD
  223. RJ ECSPRTY
  224. * /--- BLOCK DATAOUT 00 000 77/10/20 01.18
  225. *
  226. * CHECK IF SHOULD PROCEED TO NEXT DATA FILE
  227. *
  228. SA1 INF+DATBLOK LOAD CURRENT BLOCK NUMBER
  229. SA2 INF+DATBLIM LOAD MAXIMUM BLOCK NUMBER
  230. IX2 X1-X2
  231. NG X2,DAT990 EXIT IF NOT LAST BLOCK
  232. *
  233. SX1 DDIRECT+4+O.NFNAM OFFSET TO NEXT FILE NAME
  234. IX0 X4+X1 CHECK IF ANY NEXT DATA FILE
  235. RX1 X0 (-RXX- 1 WD READ, MAY CHG *A1*)
  236. ZR X1,DAT990 EXIT IF NONE
  237. MX6 0
  238. SA6 DARG2 SET RECORD LENGTH = 0
  239. SB1 B0
  240. EQ DDISK RETURN LAST BLOCK TO DISK
  241. * /--- BLOCK DATAOUT 00 000 78/11/14 21.16
  242. TITLE -DATAOUT- OUTPUT TO DATA FILE
  243. *
  244. *
  245. *
  246. * CALL OVERLAY TO WRITE DATA BLOCK TO DISK
  247. *
  248. DDISK MX6 0 SET INITIAL ENTRY TO OVERLAY
  249. SA6 OVARG1
  250. SX6 B1 SET LENGTH OF DATA RECORD
  251. SA6 OVARG2
  252. X DATOOV EXECUTE OVERLAY
  253. *
  254. ENTRY DATAOA
  255. DATAOA CALL DATAFIN EXIT FROM CURRENT DATA FILE
  256. SA1 TBINTSV+1 GET ONE-WORD FILE NAME
  257. BX6 X1
  258. SA6 TBINTSV+3 MOVE TO TWO-WORD BUFFER
  259. CALL FEXPAND,TBINTSV+2 CONVERT TO TWO-WORD NAME
  260. CALL INITDAT,TBINTSV+2,TBINTSV+3
  261. SX6 2
  262. SA6 OVARG1 SET TO RE-ENTER OVERLAY
  263. X DATOOV
  264. *
  265. *
  266. * CALL OVERLAY TO ADVANCE TO NEXT DATA-FILE
  267. *
  268. DATNXT SX6 1 SET TO ADVANCE TO NEXT FILE
  269. SA6 OVARG1
  270. X DATOOV
  271. *
  272. *
  273. DAT990 INTCLR X,I.DAT RELEASE INTERLOCK
  274. EQ DATAOUT
  275. *
  276. LINK 0
  277. *
  278. *
  279. * /--- BLOCK DATDATE 00 000 75/11/21 03.40
  280. TITLE -DATDATE- FORM DATE/TIME FOR DIRECTORY
  281. *
  282. *
  283. *
  284. * -DATDATE-
  285. * FORM DATE/TIME WORD FOR DATA FILE BLOCK DIRECTORY
  286. * RETURNS *ITEMP* = DATE AND TIME (MMDDYYHHMM)
  287. *
  288. *
  289. ENTRY DATDATE
  290. DATDATE EQ *
  291. CALL S=TDATE,ITEMP
  292. MX0 12 FORM TWO CHARACTER MASK
  293. SA1 ITEMP+1 LOAD WORD CONTAINING DATE
  294. LX1 6
  295. BX6 X0*X1 MASK OFF MONTH
  296. LX0 60-12 POSITION MASK FOR DAY
  297. LX1 6
  298. BX2 X0*X1 MASK OFF DAY
  299. BX6 X2+X6 COMBINE MONTH AND DAY (MMDD)
  300. LX0 60-12 POSITION MASK FOR YEAR
  301. LX1 6
  302. BX2 X0*X1 MASK OFF YEAR
  303. BX6 X2+X6 COMBINE (MMDDYY)
  304. SA1 ITEMP LOAD WORD CONTAINING HOUR/MIN
  305. LX1 30
  306. LX0 60-12 POSITION MASK FOR HOUR
  307. BX2 X0*X1 MASK OFF HOUR
  308. BX6 X2+X6 COMBINE (MMDDYYHH)
  309. LX1 6
  310. LX0 60-12 POSITION MASK FOR MINUTES
  311. BX2 X0*X1 MASK OFF MINUTES
  312. BX6 X2+X6 MONTH,DAY,YEAR,HOUR,MIN
  313. SA6 ITEMP
  314. EQ DATDATE
  315. *
  316. *
  317. *
  318. * /--- BLOCK DISKXJ 00 000 76/10/10 22.41
  319. TITLE DISKXJ PERFORM DISK I/O EXCHANGE
  320. *
  321. * DISKXJ PERFORM DISK I/O EXCHANGE
  322. *
  323. * ON ENTRY - B1 = ADDRESS OF FILE INFO WORD
  324. * B2 = ADDRESS OF DISK UNIT NUMBER
  325. * B3 = ADDRESS OF BLOCK NUMBER
  326. * B4 = ADDRESS OF I/O TYPE CODE
  327. * 1 = READ 2 = WRITE
  328. * B5 = ADDRESS OF ECS ADDRESS
  329. * B6 = ADDRESS OF NUMBER BLOCKS
  330. *
  331. * ON EXIT - X6 = 0 IF OK
  332. * = GE 1 (SET TO ERROR VALUE)
  333. *
  334. *
  335. ENTRY DISKXJ
  336. DISKXJ EQ *
  337. MX6 0 PRESET FOR PXJERR BRANCHES
  338. SA1 B1 LOAD FILE INFO WORD
  339. MX0 -6
  340. BX2 X1 GET LENGTH OF FILE
  341. AX2 24
  342. BX2 -X0*X2 MASK OFF NUMBER OF DISK SPACES
  343. SX3 DSBLKS NUMBER OF BLOCKS/FILE SPACE
  344. IX3 X2*X3 X3 = NUMBER OF BLOCKS IN FILE
  345. SA2 B3 LOAD BLOCK NUMBER
  346. NG X2,PXJERR EXIT IF BLOCK OUT OF RANGE
  347. IX3 X2-X3
  348. PL X3,PXJERR
  349. SA3 B2 LOAD DISK UNIT NUMBER
  350. CALL DISKADD *DISKINF* = DISK ADDRESS
  351. SA1 DISKINF
  352. SA2 B5 LOAD ECS ADDRESS
  353. LX2 36 POSITION ECS ADDRESS
  354. BX6 X1+X2
  355. SA6 A1 UPDATE *DISKINF*
  356. SA1 B4 LOAD DISK I/O CODE
  357. SX1 X1+2 3/4 = NEW DISK READ/WRITE CODES
  358. SX2 BLKLTH
  359. SA3 B6 LOAD NUMBER OF BLOCKS TO DO
  360. IX2 X2*X3 COMPUTE LENGTH OF TRANSFER
  361. LX2 12
  362. BX6 X2+X1 MERGE LENGTH AND I/O CODE
  363. SA6 IOSW
  364. *
  365. CALL DSKSTAT,IOSW,SDSDATS,=1
  366. *
  367. SA1 DISKINF
  368. SA2 IOSW
  369. CALL SAVEDI SAVE INFO IN CASE OF DISK ERROR
  370. DISKRQ DISKINF,IOSW
  371. * DISKRQ RETURNS X6 NEG IF OK, GE 0 IF IN ERROR
  372. PL X6,PXJERR JUMP IF ERROR IN EXCHANGE JP
  373. SA1 POSTED INCREMENT NUMBER OF REQ POSTED
  374. SX6 X1+1
  375. SA6 A1
  376. MX6 0 MARK NO ERROR
  377. EQ DISKXJ
  378. * /--- BLOCK DISKXJ 00 000 76/10/10 22.41
  379. *
  380. * * SET TO (STANDARD) ERROR RETURN VALUES
  381. *
  382. PXJERR SX6 X6+NPPUERR MARK ERROR IN EXCHANGE
  383. EQ DISKXJ
  384. * /--- BLOCK POSTXJ 00 000 76/06/30 17.16
  385. TITLE POSTXJ CHECK DISK I/O COMPLETION
  386. *
  387. * POSTXJ
  388. *
  389. * POST EXCHANGE JUMP PROCESSING FOR -DISKXJ-
  390. *
  391. * ON ENTRY - B1 = JUMP ADDRESS IF I/O COMPLETE
  392. * B2 = JUMP ADDRESS IF I/O INCOMPLETE
  393. * B3 = JUMP ADDRESS IF DISK ERROR
  394. * ON EXIT - X6 = 0 IF OK
  395. * = GE 1 IF ERROR (=IORET)
  396. *
  397. *
  398. ENTRY POSTXJ
  399. *
  400. POSTXJ EQ *
  401. SA1 KEY
  402. SX1 X1-IOKEY
  403. NZ X1,POST20
  404. SA1 POSTED DECREMENT COUNT OF REQ POSTED
  405. SX6 X1-1
  406. SA6 A1
  407. SA1 IORET LOAD I/O RETURN CODE
  408. BX6 X1
  409. NZ X6,POST30 JUMP IF DISK ERROR OCCURRED
  410. JP B1 DISK I/O COMPLETED SUCCESSFULLY
  411. *
  412. POST20 JP B2 DISK I/O NOT YET COMPLETE
  413. *
  414. POST30 JP B3 DISK I/O ERROR OCCURRED
  415. * /--- BLOCK OUTPUT 00 000 79/08/18 18.47
  416. TITLE -OUTPUT- COMMAND
  417. *
  418. *
  419. * -OUTPUT- COMMAND
  420. * OUTPUTS AUTHOR GENERATED STUDENT DATA
  421. *
  422. * FIRST WORD -
  423. * IST 6 BITS = NUMBER OF ENTRIES
  424. * NEXT 6 = LENGTH OF ENTRY TYPE TABLE
  425. * NEXT 18 = ELAPSED TIME
  426. * NEXT 18 = UNUSED
  427. * NEXT 6 = TOTAL NUMBER OF WORDS
  428. * NEXT 6 = DATA TYPE CODE
  429. *
  430. * NEXT 2 WORDS = STUDENTS NAME
  431. * NEXT WORD = LESSON NAME
  432. * NEXT WORD = AREA NAME
  433. * NEXT N WORDS = DATA TYPE TABLE
  434. * NEXT N WORDS = AUTHOR GENERATED DATA
  435. *
  436. *
  437. ENTRY OUTDATX
  438. *
  439. OUTDATX MX6 -1 MARK *INFO* BUFFER USED
  440. SA6 JJSTORE
  441. SA1 TBLDATA SEE IF COLLECTING DATA
  442. SX2 X1
  443. ZR X2,PROC
  444. SA2 TBTDATA MERGE LESSON-SELECTED BITS
  445. BX1 X1+X2
  446. LX1 60-DSOUTP SEE IF -OUTPUT- SELECTED
  447. PL X1,PROC
  448. *
  449. * CALL -OUTPUT- COMMAND OVERLAY
  450. EXEC EXEC6,OUTOV
  451. *
  452. *
  453. * -OUTPUT- AND -OUTPUTL- OVERLAY CALLS RETURN HERE
  454. *
  455. ENTRY DOVRET
  456. DOVRET FINISH DOVRET1 CHECK FOR -FINISH- UNIT
  457. EQ DOVRET2
  458. *
  459. DOVRET1 MX6 0 KILL ANY OUTPUT FOR -FINISH-
  460. SA6 MOUTLOC
  461. *
  462. *
  463. DOVRET2 SA1 KEY
  464. BX6 X1
  465. SA6 TOKEY SAVE ORIGINAL KEY
  466. SX6 NEXT SET *KEY* HARMLESSLY
  467. SA6 A1
  468. CALL DATAOUT,INFO
  469. *
  470. SA1 TOKEY
  471. BX6 X1
  472. SA6 KEY RESTORE ORIGINAL KEY
  473. EQ CKPROC TO PROCESS AFTER TIME CHECK
  474. * /--- BLOCK OUTPUTL 00 000 77/01/26 01.27
  475. TITLE -OUTPUTL- COMMAND
  476. *
  477. *
  478. * -OUTPUTL- COMMAND
  479. * OUTPUTS AUTHOR GENERATED DATA WITH LABEL
  480. *
  481. * FIRST WORD -
  482. * IST 18 BITS = ELAPSED TIME
  483. * NEXT 30 = UNUSED
  484. * NEXT 6 = TOTAL NUMBER OF WORDS
  485. * NEXT 6 = DATA TYPE CODE
  486. *
  487. * NEXT 2 WORDS = STUDENTS NAME
  488. * NEXT WORD = LESSON NAME
  489. * NEXT WORD = AREA NAME
  490. * NEXT WORD = DATA LABEL
  491. * NEXT N WORDS = AUTHOR GENERATED DATA
  492. *
  493. *
  494. ENTRY OUTDATL
  495. *
  496. OUTDATL MX6 -1 MARK *INFO* BUFFER USED
  497. SA6 JJSTORE
  498. SA1 TBLDATA SEE IF COLLECTING DATA
  499. SX2 X1
  500. ZR X2,PROC
  501. SA2 TBTDATA MERGE LESSON-SELECTED BITS
  502. BX1 X1+X2
  503. LX1 60-DSOUTP SEE IF -OUTPUT- SELECTED
  504. PL X1,PROC
  505. *
  506. * CALL -OUTPUTL- COMMAND OVERLAY
  507. EXEC EXEC6,OUTLOV
  508. *
  509. * /--- BLOCK OUTPUTT 00 000 77/06/25 02.36
  510. TITLE -OUTPUTT- COMMAND
  511. *
  512. *
  513. * -OUTPUTT- COMMAND
  514. * OUTPUTS AUTHOR GENERATED TEXT
  515. *
  516. * FIRST WORD -
  517. * IST 48 BITS = UNUSED
  518. * NEXT 6 = TOTAL NUMBER OF WORDS
  519. * NEXT 6 = DATA TYPE CODE
  520. *
  521. * NEXT 'N WORDS = TEXT TO BE PUT INTO DATAFILE
  522. *
  523. *
  524. *
  525. *
  526. ENTRY OUTDATT
  527. *
  528. OUTDATT MX6 -1 MARK *INFO* BUFFER USED
  529. SA6 JJSTORE
  530. SA1 TBLDATA SEE IF COLLECTING DATA
  531. SX2 X1
  532. ZR X2,PROC
  533. *
  534. * CALL -OUTPUTT- COMMAND OVERLAY
  535. EXEC EXEC6,OUTTOV
  536. *
  537. * /--- BLOCK AREA 00 000 79/08/18 18.48
  538. TITLE -AREA- COMMAND
  539. *
  540. *
  541. * -AREA- COMMAND
  542. * SPECIFIES AREA FOR DATA COLLECTION
  543. *
  544. * 3 WORD BUFFER (AREADAT)
  545. * 1ST WORD';
  546. * 15/NOT USED, 9/TERMS FOUND, 9/TERMS NOT FOUND
  547. * 9/HELPS FOUND, 9/HELPS NOT FOUND, 9/ARROWS
  548. * 2D WORD';
  549. * 18/ENTRY TIME, 6/NOT USED, 9/U-NO, 9/OK 1ST TRY
  550. * 9/OK, 9/NO
  551. * 3RD WORD';
  552. * 18/ELAPSED TIME IN AREA, 1/COMPLETE,
  553. * 23/NOT USED, 18/TIME OF ENTRY TO LESSON
  554. *
  555. *
  556. ENTRY AREAX
  557. AREAX FINISH
  558. MX6 -1 MARK *INFO* BUFFER USED
  559. SA6 JJSTORE
  560. CALL IOCHK SEE IF DOING TOO MUCH I/O
  561. NGETVAR GET AREA NAME
  562. CALL LJUST,(1R ),0
  563. BX6 X1
  564. SA2 TBAREA X2 = PREVIOUS -AREA- NAME
  565. BX1 X2-X6
  566. ZR X1,PROC EXIT IF SAME AREA NAME
  567. SA6 TBINTSV+9 SAVE AREA NAME
  568. SA1 =0LCANCELLED
  569. BX1 X1-X6 CHECK FOR *CANCELLED*
  570. ZR X1,AR15
  571. SA1 =0LINCOMPLETE
  572. BX1 X1-X6 CHECK FOR *INCOMPLETE*
  573. NZ X1,AR20
  574. ZR X2,AR15 JUMP IF NO PREVIOUS -AREA-
  575. CALL AREAOUT OUTPUT INCOMPLETE AREA
  576. *
  577. AR15 MX6 0
  578. EQ AR100
  579. *
  580. AR20 ZR X2,AR100 JUMP IF NO PREVIOUS -AREA-
  581. MX6 1
  582. LX6 60-18 POSITION AREA COMPLETE BIT
  583. SA1 AREADAT+2
  584. BX6 X1+X6
  585. SA6 A1
  586. CALL AREAOUT
  587. SA1 TBINTSV+9
  588. BX6 X1 RESTORE AREA NAME
  589. *
  590. AR100 SA6 TBAREA SET AREA NAME
  591. MX0 -18
  592. SA1 SYSCLOK LOAD RUNNING CLOCK
  593. SA2 TIMEARK
  594. IX1 X1-X2 ELAPSED TIME AT ENTRY
  595. AX1 7 KEEP TO ABOUT 1/10 SECOND
  596. BX6 -X0*X1
  597. LX6 60-18
  598. SA6 AREADAT+1 INITIALIZE DATA FOR THIS AREA
  599. MX6 0
  600. SA6 AREADAT
  601. MX6 -18
  602. SA1 AREADAT+2 SAVE LESSON ENTRY TIME
  603. BX6 -X6*X1 CLEAR OUT REST OF WORD
  604. * /--- BLOCK AREA 00 000 75/06/11 14.11
  605. SA6 A1
  606. EQ PROCESS
  607. *
  608. *
  609. * /--- BLOCK AREAINC 00 000 73/00/00 00.00
  610. TITLE -AREAINC-
  611. *
  612. *
  613. * -AREAINC-
  614. * INCREMENTS SPECIFIED 9 BIT AREA DATA COUNT
  615. *
  616. * ON ENTRY - B1 = INDEX IN *AREADAT*
  617. * B2 = SHIFT FOR PROPER COUNT
  618. *
  619. *
  620. ENTRY AREAINC
  621. AREAINC EQ *
  622. MX0 -9 MASK FOR 9 BIT COUNT
  623. SA1 B1+AREADAT
  624. SB1 60 COMPUTE SHIFT COUNT
  625. SB1 B1-B2
  626. LX1 X1,B1 RIGHT JUSTIFY PROPER COUNT
  627. BX6 X0*X1 MASK ALL BUT COUNT
  628. BX1 -X0*X1
  629. SX1 X1+1 INCREMENT COUNT
  630. BX1 -X0*X1 LIMIT TO 9 BITS
  631. BX6 X1+X6
  632. LX6 X6,B2 REPOSITION *AREADAT* WORD
  633. SA6 A1
  634. EQ AREAINC
  635. *
  636. *
  637. * /--- BLOCK ANSDAT 00 000 74/03/14 09.44
  638. TITLE -ANSDAT- OUTPUT STUDENTS ANSWER
  639. *
  640. *
  641. * -ANSDAT-
  642. * OUTPUTS STUDENT ANSWER AND RELATED INFORMATION
  643. *
  644. * FIRST WORD -
  645. * 1ST 18 BITS = ELAPSED TIME SINCE SIGN-ON
  646. * NEXT 6 = JUDGEMENT TYPE
  647. * NEXT 9 = ARROW NUMBER
  648. * NEXT 15 = ANSWER DUMP CAUSE BITS
  649. * NEXT 6 = TOTAL NUMBER OF WORDS
  650. * NEXT 6 = DATA TYPE CODE
  651. *
  652. * NEXT 2 WORDS = STUDENTS NAME
  653. * NEXT WORD = LESSON NAME
  654. * NEXT WORD = AREA NAME
  655. * NEXT WORD = UNIT NAME
  656. * NEXT N WORDS = STUDENTS ANSWER
  657. *
  658. *
  659. ENTRY ANSDAT
  660. ANSDAT EQ *
  661. LINK ANSDAT
  662. EXEC EXEC6,ANSDOV
  663. CALL DATAOUT,INFO
  664. EQ ANSDAT
  665. *
  666. LINK 0
  667. *
  668. *
  669. * /--- BLOCK AREAOUT 00 000 74/03/14 09.44
  670. TITLE -AREAOUT- OUTPUT -AREA- COMMAND DATA
  671. *
  672. *
  673. * -AREAOUT-
  674. * OUTPUTS DATA ASSOCIATED WITH -AREA- COMMAND
  675. *
  676. * FIRST WORD -
  677. * IST 18 BITS = CURRENT TIME
  678. * NEXT 30 = UNUSED
  679. * NEXT 6 = TOTAL NUMBER OF WORDS
  680. * NEXT 6 = DATA TYPE CODE
  681. *
  682. * NEXT 2 WORDS = STUDENTS NAME
  683. * NEXT WORD = LESSON NAME
  684. * NEXT WORD = AREA NAME
  685. * NEXT 3 WORDS = AREA DATA
  686. *
  687. *
  688. ENTRY AREAOUT
  689. AREAOUT EQ *
  690. LINK AREAOUT
  691. EXEC EXEC6,AREAOV
  692. CALL DATAOUT,INFO,8
  693. EQ AREAOUT
  694. *
  695. LINK 0
  696. *
  697. *
  698. * /--- BLOCK HELPOUT 00 000 74/03/14 09.44
  699. TITLE -HELPOUT- OUTPUT -HELP- KEY DATA
  700. *
  701. *
  702. * -HELPOUT-
  703. * OUTPUTS HELP-TYPE KEY DATA
  704. *
  705. * ON ENTRY - B1 = 0 IF HELP NOT FOUND
  706. * -1 IF HELP WAS FOUND
  707. *
  708. * FIRST WORD -
  709. * IST 18 BITS = CURRENT TIME
  710. * NEXT 30 = UNUSED
  711. * NEXT 6 = TOTAL NUMBER OF WORDS
  712. * NEXT 6 = DATA TYPE CODE
  713. *
  714. * NEXT 2 WORDS = STUDENTS NAME
  715. * NEXT WORD = LESSON NAME
  716. * NEXT WORD = AREA NAME
  717. * NEXT WORD = CURRENT UNIT NAME
  718. * NEXT WORD = HELP UNIT NAME (OR 0)
  719. * NEXT WORD = HELP KEY NAME
  720. *
  721. *
  722. ENTRY HELPOUT
  723. HELPOUT EQ *
  724. LINK HELPOUT
  725. SX6 B1 SAVE ARGUMENT
  726. SA6 OVARG1
  727. EXEC EXEC6,HELPOV
  728. CALL DATAOUT,INFO,8
  729. SA5 HELPSAV RESTORE X5
  730. EQ HELPOUT
  731. *
  732. LINK 0
  733. *
  734. *
  735. * /--- BLOCK TERMOUT 00 000 75/08/23 20.31
  736. TITLE -TERMOUT- OUTPUT -TERM- DATA
  737. *
  738. *
  739. * -TERMOUT-
  740. * OUTPUTS TERM REQUEST INFO
  741. *
  742. * ON ENTRY - B1 = 0 IF TERM NOT FOUND
  743. * -1 IF TERM WAS FOUND
  744. *
  745. * FIRST WORD -
  746. * IST 18 BITS = CURRENT TIME
  747. * NEXT 30 = UNUSED
  748. * NEXT 6 = TOTAL NUMBER OF WORDS
  749. * NEXT 6 = DATA TYPE CODE
  750. *
  751. * NEXT 2 WORDS = STUDENTS NAME
  752. * NEXT WORD = LESSON NAME
  753. * NEXT WORD = AREA NAME
  754. * NEXT WORD = TERM DATA
  755. *
  756. *
  757. ENTRY TERMOUT
  758. TERMOUT EQ *
  759. LINK TERMOUT
  760. SX6 B1
  761. SA6 OVARG1 PASS ARGUMENT TO OVERLAY
  762. EXEC EXEC6,TERMOV
  763. SB7 -1 MARK NOT EXECUTING
  764. CALL DATAOUT,INFO,6
  765. EQ TERMOUT
  766. *
  767. LINK 0
  768. *
  769. *
  770. * /--- BLOCK FINDAT 00 000 77/07/05 21.00
  771. TITLE -FINDAT- OUTPUT TIME IN LESSON DATA
  772. *
  773. *
  774. * -FINDAT-
  775. * OUTPUTS TIME IN LESSON DATA
  776. *
  777. * FIRST WORD -
  778. * IST 30 BITS = HOLLERITH TIME
  779. * NEXT 18 = UNUSED
  780. * NEXT 6 = TOTAL NUMBER OF WORDS
  781. * NEXT 6 = DATA TYPE CODE
  782. *
  783. * NEXT 2 WORDS = STUDENTS NAME
  784. * NEXT WORD = LESSON NAME
  785. * NEXT WORD = HOLLERITH DATE
  786. * NEXT WORD = ELAPSED TIME IN LESSON (MSEC)
  787. *
  788. *
  789. ENTRY FINDAT
  790. FINDAT EQ *
  791. LINK FINDAT
  792. SA1 TBLDATA
  793. SX2 X1 SEE IF DATA COLLECTION -ON-
  794. ZR X2,FINDAT
  795. SA2 TBTDATA MERGE LESSON-SELECTED BITS
  796. NG X2,FINDAT CHECK IF -SYSDATA-
  797. BX1 X1+X2
  798. BX0 X1
  799. LX1 60-DSDATON SEE IF -DATAOFF- SELECTED
  800. PL X1,FINDAT
  801. LX0 60-DSNODON BIT SET IF NO OUTPUT
  802. NG X0,FINDAT
  803. CALL S=TDATE,ITEMP
  804. MX0 30
  805. SA1 ITEMP LOAD CLOCK (BCD)
  806. LX1 6
  807. BX1 X0*X1 SAVE HOURS AND MINUTES
  808. SX6 600B+DSIGNF
  809. BX6 X1+X6 STORE HEADER WORD
  810. SA6 INFO
  811. SA1 TNAME
  812. BX6 X1 FIRST 10 CHARS OF NAME
  813. SA6 INFO+1
  814. MX0 -12
  815. SA1 TNAME1 LAST 8 CHARS OF NAME
  816. BX6 X0*X1
  817. SA6 INFO+2
  818. CALL FSQUISH,TBLESAC
  819. BX6 X1
  820. SA6 INFO+3
  821. SA1 ITEMP+1 LOAD BCD DATE
  822. BX6 X1
  823. SA6 INFO+4
  824. MX6 -18
  825. SA1 SYSCLOK
  826. SA2 TIMEARK TIME OF ENTRY TO LESSON
  827. IX1 X1-X2 ELAPSED TIME SINCE ENTRY
  828. AX1 7 KEEP TO ABOUT 1/10 SEC
  829. SA2 AREADAT+2
  830. BX2 -X6*X2 ELAPSED TIME AT -DATAON-
  831. IX6 X1-X2 TIME SINCE -DATAON-
  832. LX6 7 TIME IN MILLISECONDS
  833. PX6 X6
  834. NX6 X6
  835. SA2 =60000.0
  836. FX6 X6/X2 CONVERT TO MINUTES
  837. SA3 =0.5
  838. FX6 X6+X3 ROUND OFF
  839. NX6 X6
  840. UX6 X6,B1
  841. LX6 X6,B1 CONVERT TO INTEGER AGAIN
  842. MX3 30
  843. BX6 -X3*X6
  844. SA6 INFO+5
  845. *
  846. * /--- BLOCK FINDAT 00 000 75/09/20 21.10
  847. *
  848. SA1 TACCNT
  849. NG X1,FININC ACOCOUNTING NOT ON
  850. *
  851. * SEE IF LESSON WAS COMPLETED THIS SESSION
  852. *
  853. MX0 5
  854. SA3 TBSCORE LOAD CURRENT COMPLETION STATUS
  855. BX3 X0*X3
  856. LX3 5 POSITION COMPLETION FLAG
  857. SX3 X3-1 1 = LESSON COMPLETED
  858. NZ X3,FININC NOT NOW COMPLETED
  859. LX1 1 SEE IF COMPLETION CLOCK RUNNING
  860. PL X1,FININC IF NOT EXIT
  861. LX1 1 SEE IF COMPLETED ON ENTRY
  862. NG X1,FININC IF SO THEN EXIT
  863. *
  864. * UPDATE COMPLETION TIME
  865. *
  866. MX0 -9
  867. SA1 TACCNT1
  868. BX1 -X0*X1 GET COMPLETION TIME (MIN)
  869. IX6 X6+X1 TOTAL COMPLETION TIME
  870. MX3 30
  871. BX6 -X3*X6 LIMIT TO 30 BITS
  872. LX6 30
  873. SA1 INFO+5
  874. BX6 X6+X1 MERGE WITH ELAPSED TIME INFO
  875. SA6 A1
  876. EQ FINDAT1
  877. *
  878. FININC MX6 1 SET TOP BIT IF NOT COMPLETED
  879. SA1 INFO+5
  880. BX6 X6+X1
  881. SA6 A1
  882. *
  883. *
  884. FINDAT1 CALL DATAOUT,INFO,6
  885. EQ FINDAT
  886. *
  887. LINK 0
  888. *
  889. * /--- BLOCK SYSDATA 00 000 77/08/25 21.31
  890. TITLE -SYSDATA- TURN DATA ON FOR SPECIFIED FILE
  891. *
  892. *
  893. *
  894. * SYSDATA SETFILE,FILE NAME
  895. * TURN ON STUDENT DATA INTO SPECIFIED DATA FILE
  896. * CALLED FROM -SYSDATA- COMMAND OVERLAY
  897. *
  898. * ON ENTRY - TBINTSV = DATA FILE ACCOUNT NAME
  899. * TBINTSV+1 = DATA FILE NAME
  900. *
  901. *
  902. ENTRY SDSETX
  903. SDSETX CALL SAVLES SAVE COMMON, STORAGE, ETC.
  904. CALL INITDAT,TBINTSV,TBINTSV+1
  905. SA1 TBLDATA
  906. SX1 X1 CHECK IF SUCCESSFULL
  907. MX6 0 OK FLAG
  908. NZ X1,SDSX95 JUMP IF OK
  909. MX6 -1 ERROR OCCURRED
  910. SDSX95 SA6 TERROR
  911. EQ =XRETPRO
  912. *
  913. *
  914. * /--- BLOCK SYSDATA 00 000 77/10/20 01.31
  915. TITLE -SYSDATA- CHECKPOINT DATA FILE
  916. *
  917. *
  918. *
  919. * SYSDATA CHECKPT
  920. * CHECKPOINTS DATA FILE INDICATED BY *TBLDATA*
  921. *
  922. *
  923. ENTRY SDCHKX
  924. SDCHKX INTLOK X,I.DAT,W INTERLOCK
  925. SA1 TBLDATA DATA BUFFER LESSON NUMBER
  926. CALL READLES,DATINF,(LPRMLTH+DPRMLTH)
  927. SX1 LPRMLTH
  928. IX7 X0+X1 SAVE ECS ADDRESS OF BUFFER
  929. SA7 DECSLOC
  930. *
  931. * GET FILE INFO WORD AND CHECK IF FILE FULL
  932. *
  933. SA1 INF+DFILNAM LOAD DATA FILE NAME
  934. CALL FINDFN
  935. NG X7,SDC93 EXIT IF FILE NO LONGER EXISTS
  936. SA7 INF+DDISKU SET DISK UNIT NUMBER
  937. SA1 X7+FITS
  938. IX0 X1+X6 ECS ADDRESS OF FILE INFO WORD
  939. RX1 X0 (-RXX- 1 WD READ, MAY CHG *A1*)
  940. BX6 X1 MAKE COPY OF *X1*
  941. SA6 INF+DFINF SAVE FILE INFO WORD
  942. MX0 -6
  943. AX1 24 POSITION NUMBER OF DISK SPACES
  944. BX1 -X0*X1
  945. SX2 DSBLKS NUMBER OF BLOCKS PER PART
  946. IX1 X1*X2 X1 = NUMBER OF BLOCKS IN FILE
  947. SA2 INF+DATBLOK LOAD CURRENT BLOCK NUMBER
  948. IX1 X2-X1
  949. PL X1,SDC93 EXIT IF BLOCK OUT OF RANGE
  950. SX6 X2
  951. + NZ X6,*+1 DONT ALLOW BLOCK ZERO
  952. SX6 1
  953. + SA6 DBLOKN SET BLOCK NUMBER
  954. *
  955. * /--- BLOCK SYSDATA 00 000 77/10/20 01.33
  956. *
  957. * UPDATE BLOCK AND WORD POINTERS IN DIRECTORY
  958. *
  959. SA1 DECSLOC ECS ADDRESS OF DATA BUFFER
  960. BX5 X1 BACK TO X5
  961. SX1 DDIRECT+3 BIAS TO FLAG / LAST BLOCK USED
  962. IX0 X5+X1
  963. RX1 X0 (-RXX- 1 WD READ, MAY CHG *A1*)
  964. SA2 DBLOKN X2 = CURRENT LAST BLOCK
  965. MX6 -18
  966. BX6 X6*X1 ONLY LAST 18 BITS ARE BLOCK
  967. BX6 X6+X2 PUT IN NEW BLOCK NUMBER
  968. WX6 X0 (-WXX- 1 WD WRITE, MAY CHG *A6*)
  969. SX1 DDIRECT+64+X2 BIAS TO BLOCK INFO WORD
  970. IX0 X5+X1
  971. RX1 X0 (-RXX- 1 WD READ, MAY CHG *A1*)
  972. MX6 -9
  973. LX6 9
  974. BX6 X6*X1 CLEAR OLD WORD COUNT
  975. SA1 INF+DATWORD CURRENT LAST WORD
  976. LX1 9
  977. BX6 X6+X1
  978. WX6 X0 (-WXX- 1 WD WRITE, MAY CHG *A6*)
  979. *
  980. * MOVE CURRENT DATA BLOCK TO DISK BUFFER AREA
  981. *
  982. SDC50 SX1 DBLK1 BIAS TO CURRENT DATA BLOCK
  983. IX0 X5+X1
  984. SA0 INFO
  985. + RE BLKLTH READ DATA BLOCK TO CM
  986. RJ ECSPRTY
  987. SX1 DBLK2 BIAS TO DISK BUFFER AREA
  988. IX0 X5+X1
  989. + WE BLKLTH WRITE TO DISK BUFFER AREA
  990. RJ ECSPRTY
  991. * /--- BLOCK SYSDATA 00 000 77/10/20 01.34
  992. *
  993. * WRITE CURRENT DATA BLOCK TO DISK
  994. *
  995. BX6 X0 SAVE ECS ADDRESS OF BLOCK
  996. SA6 DECSLOC
  997. MX0 1 SET UP FILE WRITE BIT
  998. LX0 60-DWRITSH
  999. SA1 INF+DATSTAT DATA FILE STATUS WORD
  1000. BX6 X0+X1 SET FILE WRITE BIT
  1001. MX1 -18 CLEAR THE OLD STATION NUMBER
  1002. BX6 X6*X1
  1003. SA1 STATION INSERT CURRENT STATION NUMBER
  1004. BX6 X6+X1
  1005. SA6 INF+DATSTAT STORE WRITE BIT AND STATION
  1006. BX0 X5 ECS ADDR OF BUFFER INFO WORDS
  1007. SA0 INF
  1008. + WE DPRMLTH UPDATE DATA BUFFER PARAMETERS
  1009. RJ ECSPRTY
  1010. CALL IOLESSN,TBLDATA,4000B FREEZE ECS BUFFER
  1011. INTCLR X,I.DAT RELEASE INTERLOCK
  1012. *
  1013. DISKO (INF+DFINF),(INF+DDISKU),DBLOKN,DECSLOC
  1014. SA6 DERRFLG SAVE ERROR RETURN
  1015. NZ X6,SDC60 EXIT IF DISK ERROR
  1016. *
  1017. * WRITE DIRECTORY BLOCK TO DISK
  1018. *
  1019. SA1 TBLDATA
  1020. CALL READLES,DATINF,(LPRMLTH+DPRMLTH)
  1021. SX1 LPRMLTH+DDIRECT
  1022. IX6 X0+X1 ECS ADDRESS OF DIRECTORY
  1023. SA6 DECSLOC
  1024. MX6 0 SET BLOCK NUMBER
  1025. SA6 DBLOKN
  1026. *
  1027. DISKO (INF+DFINF),(INF+DDISKU),DBLOKN,DECSLOC
  1028. SA6 DERRFLG SAVE ERROR RETURN
  1029. *
  1030. * /--- BLOCK SYSDATA 00 000 77/10/20 01.36
  1031. *
  1032. SDC60 INTLOK X,I.DAT,W INTERLOCK
  1033. CALL IOLESSN,TBLDATA,-4000B
  1034. SA1 TBLDATA RESTORE DATA FILE PARAMETERS
  1035. CALL READLES,DATINF,(LPRMLTH+DPRMLTH)
  1036. SX1 LPRMLTH
  1037. IX0 X0+X1 BIAS PAST LESSON HEADER
  1038. MX6 1
  1039. LX6 60-DWRITSH SET UP MASK FOR FILE WRITE BIT
  1040. SA1 INF+DATSTAT
  1041. BX6 -X6*X1 CLEAR FILE WRITE BIT
  1042. SA6 A1
  1043. SA0 INF
  1044. + WE DPRMLTH UPDATE DATA BUFFER STATUS WORDS
  1045. RJ ECSPRTY
  1046. SA1 DERRFLG CHECK IF ANY ERROR OCCURRED
  1047. NZ X1,SDC93
  1048. MX6 0 MARK NO ERROR
  1049. EQ SDC95
  1050. *
  1051. SDC93 SX6 -3 -3 = ERROR HAS OCCURRED
  1052. EQ SDC95
  1053. *
  1054. SDC95 SA6 TERROR SAVE ERROR RETURN
  1055. INTCLR X,I.DAT RELEASE INTERLOCK
  1056. EQ RETPRO UN-SAVLES THEN PROCESS
  1057. *
  1058. *
  1059. * /--- BLOCK READSET 00 000 80/02/03 05.08
  1060. TITLE READSET
  1061. *
  1062. * -READSET- COMMAND
  1063. *
  1064. * 'INITIALIZE FOR READS OF SPECIFIED DATA FILE.
  1065. *
  1066. * ON EXIT--
  1067. * *TRETURN* = -1 IF OK (DATA FILE)
  1068. * 0 IF NOT A DATA FILE
  1069. * 1 IF CODE WORDS DO NOT MATCH
  1070. * 2 IF DATA FILE IS EMPTY
  1071. * 3 IF UNABLE TO GET ECS SPACE FOR
  1072. * DISK BUFFER
  1073. * 4 IF DISK ERROR
  1074. *
  1075. * *TERROR* = 0 OK
  1076. * -1 IF NOT A DATA FILE
  1077. * -2 IF NOT ENOUGH ECS FOR BUFFER
  1078. * -3 IF DISK ERROR
  1079. * -4 IF DATA FILE EMPTY
  1080. * -5 IF CODE WORDS DO NOT MATCH
  1081. *
  1082. *
  1083. ENTRY READSEX
  1084. *
  1085. READSEX FINISH ILLEGAL IN FINISH UNIT
  1086. *
  1087. SA1 TBDFINF
  1088. SX1 X1 SIGN OUT OF ANY OLD READ BUFFER
  1089. CALL ALTLES,-1
  1090. SX6 0 CLEAR OUT OLD LESSON NUMBER
  1091. SA6 TBDFINF
  1092. SA6 TBDFINF+1
  1093. * /--- BLOCK READSET 00 000 80/02/03 05.08
  1094. *
  1095. * THE FILE PARAMETERS (NAME, AND TWO INFO WORDS)
  1096. * ARE ZERO AT THIS POINT, FOR ALL FILE TYPES.
  1097. *
  1098. SA5 A5 RESTORE COMMAND WORD
  1099. SX6 4 UNPACK 4 ARGUMENTS
  1100. CALL GETARGS
  1101. SA6 RSARGS SAVE NUMBER OF ARGUMENTS
  1102. SX7 0
  1103. SA7 RSCODEW PRE-ZERO CODEWORD
  1104. SA7 RSRET PRE-ZERO RETURN ADDRESS
  1105. SX6 X6-3
  1106. NG X6,READ4 --- JUMP IF NO CODEWORD ARG
  1107. *
  1108. SA1 VARBUF+2 GET CODEWORD ARGUMENT
  1109. BX5 X1
  1110. NGETVAR
  1111. CALL LJUST,(1R ),0
  1112. BX6 X1
  1113. SA6 RSCODEW SAVE CODEWORD
  1114. *
  1115. SA1 RSARGS GET NUMBER OF ARGUMENTS
  1116. SX1 X1-4
  1117. NG X1,READ4 --- JUMP IF NO 4TH ARGUMENT
  1118. SA1 VARBUF+3 GET RETURN VARIABLE
  1119. BX5 X1
  1120. NGETVAR
  1121. SX6 A1 ADDRESS FOR RETURN
  1122. SA6 RSRET SAVE ADDRESS
  1123. *
  1124. * GET ACCOUNT AND FILE NAME
  1125. *
  1126. READ4 CALL ACCFILE,VARBUF,RSACCT,0
  1127. SA1 RSFILE
  1128. ZR X1,RSETE00 --- ERROR IF FILE NAME ZERO
  1129. *
  1130. * PAUSE TO AVOID FATAL LOOPS OR ABUSE
  1131. * 'NOTE--CANNOT PRECEDE NGETVAR UNLESS COMMON RELOADED
  1132. *
  1133. CALL SAVLES SAVE COMMON, STORAGE, ETC.
  1134. TUTIM 1000,,,STOPCHK PAUSE FOR 1 SECOND
  1135. * STOPCHK PROCESS -STOP1- KEY
  1136. *
  1137. * LOCATE FILE AND CHECK FILE TYPE
  1138. *
  1139. SA1 RSFILE GET FILE NAME
  1140. CALL FINDFN
  1141. NG X7,RSETE0 --- ERROR IF NO SUCH FILE
  1142. SA7 ILOC SAVE DISK UNIT NUMBER
  1143. SA1 X7+FITS
  1144. IX0 X1+X6 ECS ADDRESS OF FILE INFO WORD
  1145. RX1 X0 (-RXX- 1 WD READ, MAY CHG *A1*)
  1146. BX6 X1 MAKE A COPY OF *X1*
  1147. SA6 ILOC1 SAVE VALUE READ FROM ECS
  1148. MX0 -6 MASK FOR FILE TYPE CODE
  1149. AX1 30
  1150. BX1 -X0*X1 MASK OFF FILE TYPE CODE
  1151. SX2 X1-4 CHECK FOR DATAFILE
  1152. NZ X2,RSETE0 --- ERROR IF NOT DATAFILE
  1153. * /--- BLOCK RDSTOR 00 000 86/05/13 06.42
  1154. *
  1155. * CREATE ECS BUFFER FOR READ OPERATIONS
  1156. *
  1157. CALL XSTOR,RBUFNAM,RBUFLTH
  1158. SA1 LESNUM CHECK IF OBTAINED ECS
  1159. NG X1,RSETE3 --- ERROR IF NO ECS
  1160. BX6 X1 SAVE BUFFER LESSON NUMBER
  1161. SA6 TBDFINF
  1162. CALL ALTLES,1 SIGN IN TO READ BUFFER
  1163. INTCLR X,I.ADDL RELEASE LESNAM INTERLOCK
  1164. CALL IOLESSN,TBDFINF,4000B
  1165. *
  1166. * INITIALIZE READ BUFFER PARAMETERS
  1167. *
  1168. SA1 TBDFINF READ BUFFER LESSON NUMBER
  1169. CALL READLES,DATINF,(LPRMLTH+RPRMLTH)
  1170. SX1 LPRMLTH
  1171. IX0 X0+X1 BIAS PAST HEADER RECORD
  1172. SA1 RSACCT GET ACCOUNT AND FILE NAME
  1173. SA2 RSFILE
  1174. BX6 X1
  1175. BX7 X2
  1176. SA6 INF+RFACCT SET ACCOUNT NAME
  1177. SA7 INF+RFNAME SET FILE NAME
  1178. SA1 ILOC
  1179. BX6 X1 SET DISK UNIT NUMBER
  1180. SA6 INF+RDISKU
  1181. SA1 ILOC1
  1182. BX6 X1 SET DATA FILE INFO WORD
  1183. SA6 INF+RFINF
  1184. SA0 INF
  1185. + WE RPRMLTH RE-WRITE BUFFER INFO
  1186. RJ ECSPRTY
  1187. *
  1188. * READ DATAFILE DIRECTORY FROM DISK
  1189. *
  1190. SX1 RBLK1 BIAS TO FIRST BLOCK
  1191. IX6 X0+X1
  1192. SA6 DECSLOC SAVE ECS ADDRESS TO READ INTO
  1193. MX6 0
  1194. SA6 DBLOKN SET BLOCK NUMBER
  1195. DISKI (INF+RFINF),(INF+RDISKU),DBLOKN,DECSLOC
  1196. NZ X6,RSETE4 --- EXIT IF DISK ERROR
  1197. *
  1198. * /--- BLOCK RDSTOR 00 000 86/05/13 06.43
  1199. *
  1200. * READ DATAFILE DIRECTORY FROM EM
  1201. *
  1202. SA1 TBDFINF BUFFER LESSON NUMBER
  1203. CALL READLES,DATINF,(LPRMLTH+RPRMLTH)
  1204. SX1 LPRMLTH BIAS PAST HEADER RECORD
  1205. IX7 X0+X1
  1206. SA7 DECSLOC SAVE ECS ADDRESS OF BUFFER
  1207. SX1 RBLK1 BIAS TO DIRECTORY BLOCK
  1208. IX0 X1+X7
  1209. SA0 INFO
  1210. SX6 -1 MARK *INFO* BUFFER USED
  1211. SA6 JJSTORE
  1212. + RE BLKLTH READ DIRECTORY BLOCK TO *INFO*
  1213. RJ ECSPRTY
  1214. *
  1215. * CHECK CODE WORDS
  1216. *
  1217. SA5 ILESUN
  1218. CALL SETLESN GET LESSON POINTERS
  1219. SA1 LESSCM+LSTOUSE BIT 59 = SYSTEM LESSON FLAG
  1220. MX6 -1
  1221. AX1 59
  1222. BX6 X1*X6 X6 = -1 IF SYSLESS, 0 IF NOT
  1223. SA6 ISYSF SAVE SYSTEM LESSON FLAG
  1224. SX1 4 X1 = BIAS TO BASE OF INFO
  1225. *
  1226. SA2 ISYSF SEE IF SYSTEM LESSON
  1227. NZ X2,READ5 DONT CHECK CODEWORDS
  1228. *
  1229. SA2 X1+INFO+2 DATAFILE CHANGE CODE
  1230. ZR X2,READ5 OK IF BLANK
  1231. SA3 X1+INFO+3 DATAFILE INSPECT CODE
  1232. ZR X3,READ5 OK IF BLANK
  1233. SA1 RSCODEW -READSET- COMMAND CODEWORD
  1234. IX0 X1-X2
  1235. ZR X0,READ5 OK IF CHANGE CODE MATCHED
  1236. IX0 X1-X3
  1237. ZR X0,READ5 OK IF INSPECT CODE MATCHED
  1238. SA4 NONECOD 'N'O'N'E CODEWORD
  1239. IX0 X2-X4
  1240. ZR X0,RSCODE1 JUMP IF CHANGE CODE 'N'O'N'E
  1241. SA1 LESSCM+LWCODE LESSON CHANGE CODE
  1242. IX0 X1-X2
  1243. ZR X0,READ5
  1244. RSCODE1 IX0 X3-X4
  1245. ZR X0,RSETE1 JUMP IF INSPECT CODE 'N'O'N'E
  1246. SA1 LESSCM+LRCODE LESSON INSPECT CODE
  1247. IX0 X1-X3
  1248. NZ X0,RSETE1 --- ERROR IF NO CODE WORD MATCH
  1249. *
  1250. * /--- BLOCK READ5 00 000 86/05/13 06.44
  1251. *
  1252. * CHECK DATA FILE DIRECTORY
  1253. *
  1254. READ5 SA1 INFO CHECK FILE NAME CORRECT
  1255. SA2 RSFILE
  1256. IX1 X1-X2
  1257. NZ X1,RSETE4 --- ERROR IF BAD DIRECTORY
  1258. *
  1259. SA1 INFO+3 FLAG / LAST BLOCK USED
  1260. SX2 X1 X2 = LAST BLOCK
  1261. NG X2,RSETE4 --- ERROR IF BLOCK NUMBER BAD
  1262. SX3 X2-BLKLTH
  1263. PL X3,RSETE4 --- ERROR IF BLOCK NUMBER BAD
  1264. SA3 INFO+64+X2 APPROPRIATE INFO WORD
  1265. MX6 -9
  1266. AX3 9
  1267. BX3 -X6*X3 X3 = LAST WORD
  1268. ZR X2,RSETE2 --- ERROR IF NO DATA IN FILE
  1269. SX6 X2-1 CHECK FOR FIRST BLOCK
  1270. NZ X6,RSET100
  1271. ZR X3,RSETE2 --- ERROR IF 1ST BLOCK EMPTY
  1272. *
  1273. RSET100 SA1 INFO+2 X1 = NUMBER OF BLOCKS
  1274. IX6 X1-X2
  1275. NG X6,RSETE4 --- ERROR IF BLOCK NUMBER BAD
  1276. NZ X6,RSET150 JUMP IF NOT LAST BLOCK
  1277. SX2 X1-1 SET TO LAST LEGAL BLOCK
  1278. *
  1279. RSET150 BX7 X2
  1280. SA7 INF+RBLKLIM SET LAST BLOCK NUMBER
  1281. SA1 RSRET GET ADDRESS FOR RETURN INFO
  1282. ZR X1,RSET400 --- JUMP IF NO RETURN REQUESTED
  1283. SX6 X6-1
  1284. SA6 X1
  1285. *
  1286. * INITIALIZE DATA BUFFER WITH FIRST TWO BLOCKS
  1287. *
  1288. RSET400 SX6 1 SET TO READ FIRST BLOCK
  1289. SA6 DBLOKN
  1290. SX6 2 SET CURRENT BLOCK NUMBER
  1291. SA6 INF+RBLOKN
  1292. SX1 RBLK1 BIAS TO FIRST BLOCK
  1293. SA2 DECSLOC ECS ADDRESS OF READ BUFFER
  1294. BX0 X2
  1295. IX6 X1+X2
  1296. SA6 DECSLOC SET ECS ADDRESS TO READ INTO
  1297. SA0 INF UPDATE BUFFER INFO IN ECS
  1298. WE RPRMLTH
  1299. RJ ECSPRTY
  1300. DISKI (INF+RFINF),(INF+RDISKU),DBLOKN,DECSLOC,=2
  1301. NZ X6,RSETE4 --- EXIT IF DISK ERROR
  1302. CALL IOLESSN,TBDFINF,-4000B
  1303. *
  1304. SX6 -1 -1 = OK, DATA FILE
  1305. SX7 0
  1306. * /--- BLOCK REXITS 00 000 80/02/03 05.05
  1307. *
  1308. SA6 TRETURN
  1309. SA7 TERROR
  1310. EQ RETPROC
  1311. *
  1312. *
  1313. RSETE00 MX6 0 0 = NOT A DATA FILE
  1314. MX7 -1
  1315. SA6 TRETURN
  1316. SA7 TERROR
  1317. EQ PROCESS --- RETURN
  1318. *
  1319. RSETE0 SX6 0 0 = NOT A DATA FILE
  1320. SX7 -1
  1321. EQ RSETEX
  1322. *
  1323. RSETE1 SX6 1 1 = CODE WORDS DO NOT MATCH
  1324. SX7 -5
  1325. EQ RSETEX
  1326. *
  1327. RSETE2 SX6 2 2 = DATA FILE EMPTY
  1328. SX7 -4
  1329. EQ RSETEX
  1330. *
  1331. RSETE3 SX6 3 3 = NO ECS AVAILABLE FOR BUFFER
  1332. SX7 -2
  1333. EQ RSETEX
  1334. *
  1335. RSETE4 SX6 4 4 = DISK ERROR
  1336. SX7 -3
  1337. EQ RSETEX
  1338. *
  1339. *
  1340. RSETEX SA6 TRETURN
  1341. SA7 TERROR
  1342. SA1 TBDFINF DELETE DATA READ BUFFER
  1343. ZR X1,RSETX
  1344. CALL DELETE
  1345. SX6 0
  1346. SA6 TBDFINF CLEAR LESSON NUMBER
  1347. *
  1348. *
  1349. RSETX EQ =XRETPRO UN-SAVLES THEN TO PROCESS
  1350. *
  1351. *
  1352. * STUDENT BANK VARIABLES
  1353. *
  1354. RSACCT EQU TBINTSV ACCOUNT NAME
  1355. RSFILE EQU TBINTSV+1 FILE NAME
  1356. RSCODEW EQU TBINTSV+2 CODEWORD
  1357. RSRET EQU TBINTSV+3 ADDRESS FOR RETURN INFO
  1358. RSARGS EQU TBINTSV+4 NUMBER OF ARGUMENTS
  1359. *
  1360. * /--- BLOCK READD 00 000 79/08/18 18.53
  1361. TITLE -READD- COMMAND (READ DATA FROM DATAFILE)
  1362. *
  1363. *
  1364. *
  1365. * -READD- COMMAND
  1366. * READ NEXT DATA RECORD
  1367. *
  1368. *
  1369. ENTRY READDX
  1370. *
  1371. READDX FINISH ILLEGAL IN -FINISH- UNIT
  1372. SX6 -1 MARK *INFO* BUFFER USED
  1373. SA6 JJSTORE
  1374. SA1 TBDFINF SEE IF -READSET- DONE
  1375. ZR X1,RDDERX1
  1376. NGETVAR GET BUFFER ADDRESS
  1377. SX6 A1
  1378. SA6 TBDFINF+1 SAVE BUFFER ADDRESS
  1379. SA5 A5 GET NEXT -GETVAR- CODE
  1380. LX5 XCODEL
  1381. NGETVAR GET MAXIMUM LENGTH OF BUFFER
  1382. SA2 TBDFINF+1 LOAD BUFFER ADDRESS
  1383. SA0 X2
  1384. CALL BOUNDS BOUNDS CHECK
  1385. SB2 X1-101 CHECK FOR BUFFER TOO LONG
  1386. PL B2,ERXBADL EXECERR USES X1
  1387. SX6 X1
  1388. LX6 18 POSITION BUFFER LENGTH
  1389. BX6 X2+X6
  1390. SA6 A2
  1391. *
  1392. SA5 A5
  1393. AX5 XCMNDL
  1394. MX6 -XSPTRL
  1395. BX6 -X6*X5 GET TYPE OF DATA RECORD
  1396. SB1 X6
  1397. JP *+B1
  1398. *
  1399. + EQ RALOOP
  1400. + EQ RLLOOP
  1401. + EQ RSLOOP
  1402. *
  1403. ENTRY RSLOOP
  1404. RSLOOP CALL RECORD GET NEXT DATA RECORD
  1405. STOPCHK PROCESS -STOP1- KEY
  1406. EXEC EXEC6,READDOV
  1407. *
  1408. *
  1409. ENTRY RLLOOP
  1410. RLLOOP CALL RECORD GET NEXT DATA RECORD
  1411. STOPCHK PROCESS -STOP1- KEY
  1412. EXEC EXEC6,READLOV
  1413. *
  1414. *
  1415. ENTRY RALOOP
  1416. RALOOP CALL RECORD GET NEXT DATA RECORD
  1417. STOPCHK PROCESS -STOP1- KEY
  1418. EXEC EXEC6,READAOV
  1419. *
  1420. *
  1421. *
  1422. RDDERX1 EXECERR 64 *NO READSET SPECIFIED*
  1423. * /--- BLOCK RECORD 00 000 80/02/03 05.12
  1424. TITLE -RECORD- READ NEXT DATA RECORD
  1425. *
  1426. * -RECORD-
  1427. * READ NEXT DATA RECORD TO *INFO*
  1428. *
  1429. * USES *TBINTSV(0)* AND *TBINTSV(1)*
  1430. *
  1431. *
  1432. RECORD EQ *
  1433. REC1 SA1 TBDFINF DATA BUFFER LESSON NUMBER
  1434. SX1 X1
  1435. ZR X1,RREOF
  1436. CALL READLES,DATINF,(LPRMLTH+RPRMLTH)
  1437. SX1 LPRMLTH
  1438. IX5 X0+X1 SAVE ECS ADDRESS OF BUFFER
  1439. SA4 INF+RWORD LOAD POINTER TO NEXT WORD
  1440. SX1 X4-BLKLTH
  1441. PL X1,RNEXT JUMP IF BEYOND BLOCK BOUNDARY
  1442. SX2 X4+RBLK1 ADD BIAS TO BLOCK BUFFER
  1443. IX0 X2+X5
  1444. SA0 INFO
  1445. + RE DATAMAX READ MAXIMUM REOCRD LENGTH
  1446. RJ ECSPRTY
  1447. MX0 -6
  1448. SA1 INFO LOAD HEADER WORD
  1449. AX1 6
  1450. BX1 -X0*X1 LENGTH OF RECORD
  1451. ZR X1,RNEXT TRY NEXT BLOCK IF NO LENGTH
  1452. IX6 X1+X4 ADVANCE WORD COUNT
  1453. SA6 A4
  1454. BX0 X5 ECS ADDRESS OF PARAMETERS
  1455. SA0 INF
  1456. + WE RPRMLTH UPDATE WORD COUNT
  1457. RJ ECSPRTY
  1458. EQ RECORD
  1459. *
  1460. RREOF MX6 0 RETURN 0 FOR END-OF-FILE
  1461. SA6 INFO
  1462. EQ RECORD
  1463. *
  1464. *
  1465. * /--- BLOCK RECORD 00 000 74/12/11 23.06
  1466. *
  1467. RNEXT SX6 X4-BLKLTH COMPUTE NEW WORD COUNT
  1468. + PL X6,*+1
  1469. MX6 0
  1470. + SA6 A4 UPDATE WORD COUNT
  1471. SA1 INF+RBLOKN LOAD CURRENT BLOCK NUMBER
  1472. SA2 INF+RBLKLIM MAXIMUM BLOCK NUMBER
  1473. IX7 X2-X1
  1474. NG X7,RREOF EXIT IF ALL BLOCKS EXHAUSTED
  1475. SA7 ILOC
  1476. SX6 X1+1
  1477. SA6 A1 UPDATE BLOCK NUMBER
  1478. SA6 DBLOKN
  1479. SX1 RBLK2 BIAS TO SECOND BLOCK OF DATA
  1480. IX0 X1+X5 ECS ADDRESS OF SECOND BLOCK
  1481. SA0 INFO
  1482. + RE BLKLTH READ SECOND BLOCK TO *INFO*
  1483. RJ ECSPRTY
  1484. SX1 RBLK1 BIAS TO FIRST BLOCK AREA
  1485. IX0 X1+X5
  1486. + WE BLKLTH SHOVE DATA DOWN TO FIRST BLOCK
  1487. RJ ECSPRTY
  1488. BX6 X5 SAVE ECS ADDRESS OF BUFFER
  1489. SA6 DECSLOC
  1490. *
  1491. * CHECK THAT FILE STILL EXISTS - SET FILE INFO WORD
  1492. *
  1493. SA1 INF+RFNAME GET DATA FILE NAME
  1494. CALL FINDFN
  1495. NG X7,RREOF EXIT IF FILE DOES NOT EXIST
  1496. SA7 INF+RDISKU SET DISK UNIT NUMBER
  1497. SA1 X7+FITS
  1498. IX0 X1+X6 ECS ADDRESS OF FILE INFO WORD
  1499. RX1 X0 (-RXX- 1 WD READ, MAY CHG *A1*)
  1500. BX6 X1 SAVE A COPY OF *X1*
  1501. SA6 INF+RFINF SAVE FILE INFO WORD
  1502. SA1 DECSLOC
  1503. BX0 X1
  1504. SA0 INF UPDATE BUFFER INFO WORDS
  1505. + WE RPRMLTH
  1506. RJ ECSPRTY
  1507. SA2 ILOC CHECK IF ANY MORE BLOCKS
  1508. ZR X2,REC1
  1509. SX2 RBLK2 BIAS TO SECOND BLOCK AREA
  1510. IX6 X1+X2
  1511. SA6 DECSLOC SET ADDRESS TO READ INTO
  1512. *
  1513. * /--- BLOCK RECORD 00 000 79/09/04 22.35
  1514. *
  1515. * READ NEXT BLOCK OF DATA FROM DISK
  1516. *
  1517. SA1 RECORD
  1518. BX6 X1 SAVE EXIT JUMP
  1519. SA6 TBINTSV
  1520. CALL SAVLES SAVE COMMON, STORAGE, ETC.
  1521. *
  1522. CALL IOLESSN,TBDFINF,4000B
  1523. DISKI (INF+RFINF),(INF+RDISKU),DBLOKN,DECSLOC
  1524. SA6 TBINTSV+1 SAVE ERROR RETURN
  1525. CALL IOLESSN,TBDFINF,-4000B
  1526. *
  1527. CALL SYSTEST
  1528. NG X6,RN210 --- BRIF SYSTEM LESSON
  1529. TUTIM 1000,,,STOPCHK PAUSE FOR A WHILE
  1530. * STOPCHK PROCESS -STOP1- KEY
  1531. *
  1532. RN210 CALL RESTLES RESTORE LESSON, COMMON, ETC.
  1533. SA1 TBINTSV
  1534. BX6 X1 RESTORE EXIT JUMP
  1535. SA6 RECORD
  1536. SA1 TBINTSV+1 CHECK IF ANY ERROR OCCURRED
  1537. ZR X1,REC1
  1538. EQ RREOF TREAT DISK ERR AS END-OF-FILE
  1539. *
  1540. * /--- BLOCK END 00 000 78/11/12 21.21
  1541. TITLE STORAGE DEFINITIONS
  1542. *
  1543. *
  1544. ENTRY DARG1,DARG2
  1545. DARG1 BSS 1
  1546. DARG2 BSS 1
  1547. *
  1548. DECSLOC BSS 1
  1549. DBLOKN BSS 1
  1550. DERRFLG BSS 1
  1551. ISYSF BSS 1
  1552. *
  1553. DATINF BSS LPRMLTH+DPRMLTH
  1554. INF EQU DATINF+LPRMLTH
  1555. *
  1556. ENTRY IDWK
  1557. IDWK BSSZ 2
  1558. *
  1559. ENTRY DBUFNAM
  1560. DBUFNAM BSSZ 2 DATA BUFFER NAME
  1561. DATA 10LDATA
  1562. + VFD 12/3,48/0
  1563. *
  1564. RBUFNAM DATA 0 -READSET- BUFFER NAME
  1565. DATA 0LDATAREAD
  1566. + VFD 12/0,48/0LBUFFER
  1567. + VFD 12/1,48/0
  1568. *
  1569. ILOC BSS 1
  1570. ILOC1 BSS 1
  1571. *
  1572. IRBUF EQU INFO+BLKLTH+1
  1573. *
  1574. END
plato/source/plaopl/datax.txt ยท Last modified: 2023/08/05 18:54 by Site Administrator