Table of Contents

TST

Table Of Contents

  • [00010] TST - TAPE STORAGE TEST.
  • [00012] TAPE STORAGE TEST.
  • [00165] DATA.
  • [00193] MAIN PROGRAM.
  • [00195] MAIN PROGRAM.
  • [00220] TEST SECTIONS.
  • [00222] WSQ - WRITE SEQUENTIAL.
  • [00273] RSQ - READ SEQUENTIAL.
  • [00340] SUBROUTINES.
  • [00342] ABT - ABORT JOB.
  • [00377] AIP - ADVANCE *IN* POINTER.
  • [00518] CKS - CHECK SECTOR.
  • [00631] CTR - COMPUTE TRANSFER RATE.
  • [00670] DCH - DATA CHECK.
  • [00742] ERR - SEND ERROR MESSAGE.
  • [00786] GDB - GENERATE DATA BUFFER.
  • [00834] MEM - REQUEST MEMORY.
  • [00858] MES - SEND MESSAGE.
  • [00877] WRC - WAIT REWIND COMPLETE.
  • [00918] BUFFERS.
  • [00929] PRESET.
  • [00943] PRS - PRESET PROGRAM.

Source Code

TST.txt
  1. IDENT TST,FET
  2. ABS
  3. SST FL
  4. ENTRY TST
  5. ENTRY MFL=
  6. ENTRY SSJ=
  7. SYSCOM B1
  8. *COMMENT TST - TAPE STORAGE TEST.
  9. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  10. TITLE TST - TAPE STORAGE TEST.
  11. SPACE 4
  12. *** TST - TAPE STORAGE TEST.
  13. * P. C. SMITH. 91/11/08.
  14. SPACE 4
  15. *** TST IS A CENTRAL PROCESSOR DRIVEN TAPE STORAGE TEST. IT
  16. * PERFORMS SEQUENTIAL WRITES AND READS ON A SELECTED TAPE
  17. * DEVICE, AND REPORTS THE PERFORMANCE ACHIEVED.
  18. *
  19. * OPERATING INSTRUCTIONS.
  20. * WHEN CALLED, TST ASSUMES THAT THE FILE *TAPE1* HAS BEEN
  21. * PREASSIGNED.
  22. *
  23. * SEQUENTIAL WRITE.
  24. * RANDOM DATA IS WRITTEN SEQUENTIALLY ON THE FILE IN THIS
  25. * FORMAT - 1 WORD CONTAINING THE SECTOR NUMBER
  26. * 1 WORD CONTAINING RANDOM DATA SEED
  27. * 61 WORDS OF RANDOM DATA
  28. * 1 WORD CHECKSUM OF ABOVE DATA
  29. *
  30. * SEQUENTIAL READ.
  31. * FILE IS REWOUND AND DATA IS READ BACK CHECKING SECTOR NUMBER
  32. * AND CHECKSUM OF RANDOM DATA.
  33. *
  34. * THERE IS A FORTY SECOND PAUSE FOLLOWING THE WRITE SECTION OF
  35. * THE TEST TO ALLOW THE REWIND TO COMPLETE BEFORE CONTINUING
  36. * TO THE NEXT SECTION.
  37. SPACE 4
  38. *** ARGUMENT PARAMETERS.
  39. *
  40. * T TEST SECTION (CAN BE EQUATED).
  41. * T=0 OR T OR OMISSION OF THIS PARAMETER WILL RUN ALL
  42. * SECTIONS.
  43. * T=1 WRITE SEQUENTIAL.
  44. * T=2 READ SEQUENTIAL.
  45. *
  46. * P TEST PATTERN (CAN BE EQUATED).
  47. * P=0 ALL ZEROS PATTERN.
  48. * P=1 ALL ONES PATTERN.
  49. * P=2 25252525252525252525B PATTERN.
  50. * P=3 52525252525252525252B PATTERN.
  51. * P=4 DO NOT GENERATE OR CHECK DATA. SECTOR NUMBERS
  52. * ARE GENERATED AND CHECKED.
  53. * P=5 OR P OR OMISSION OF THIS PARAMETER WILL ENABLE
  54. * RANDOM PATTERN.
  55. * P=6 DO NOT GENERATE OR CHECK DATA. DO NOT COPY DATA
  56. * BETWEEN THE CIO BUFFER AND THE WORKING BUFFER.
  57. * SECTOR NUMBERS ARE GENERATED AND CHECKED.
  58. *
  59. * N NUMBER OF 100B-WORD SECTORS (CAN BE EQUATED).
  60. * N=0 GIVES ARGUMENT ERROR MESSAGE AND PROGRAM ABORT.
  61. * N=XXXX WILL ENABLE THE TEST TO BE RUN ON XXXX SECTORS.
  62. * (BE CAREFUL THAT TRACK LIMIT IS NOT EXCEEDED)
  63. * N GIVES DEFAULT VALUE (SEE TABLE TEQP).
  64. *
  65. * NW NO WRITE PERFORMED AT BEGINING OF TEST.
  66. *
  67. * BS BLOCK SIZE (MUST BE MULTIPLE OF 1000B).
  68. *
  69. * NOTE:
  70. * SENSE SWITCH 2 - IF SET WILL ABORT ON ERRORS.
  71. * SENSE SWITCH 3 - IF SET WILL CONTINUE AT END OF TEST.
  72. * SENSE SWITCH 4 - IF SET WILL REPEAT CURRENT SECTION.
  73. *
  74. * ISSUING A CALL OF TST FROM THE CONSOLE WILL
  75. * SELECT ALL SECTIONS, RANDOM PATTERN, DEFAULT SECTOR
  76. * VALUE, PAUSE ON ERROR AND STOP AT END OF TEST.
  77. * TO CONTINUE ON ERRORS TYPE *GO.*.
  78. *
  79. TST SPACE 4
  80. *** DAYFILE MESSAGES.
  81. *
  82. * * ARGUMENT ERROR.* = ONE OF PARAMETERS IS IN ERROR.
  83. *
  84. * * ILLEGAL EQUIPMENT.* = THE EQUIPMENT WHICH WAS ASSIGNED IN
  85. * RESPONSE TO THE DISPLAY REQUEST IS NOT
  86. * RECOGNIZED AS BEING A DEVICE UPON WHICH
  87. * THE TEST MAY BE RUN.
  88. *
  89. * * SEQUENTIAL WRITE.* = THIS TEST SECTION IS BEING EXECUTED.
  90. *
  91. * * SEQUENTIAL READ.* = THIS TEST SECTION IS BEING EXECUTED.
  92. *
  93. * *TST TRANSFER RATE = XXXXXX.XXX KC.* = THE TAPE TRANSFER
  94. * RATE FOR THE PREVIOUS SECTION WAS
  95. * XXXXXX.XXX KILO-CHARACTERS PER SECOND.
  96. *
  97. * * FILE SIZE = XXXXXXXXXX SECTORS.* = SIZE OF THE DATA
  98. * FILE IN SECTORS.*
  99. *
  100. * * ILLEGAL EOF DETECTED.* = AN EOF WAS DETECTED BEFORE THE
  101. * LAST SECTOR ON THE FILE.
  102. *
  103. * * NO EOF DETECTED ON LAST READ.* = NO EOF ON THE LAST SECTOR.
  104. *
  105. * * JOB ABORTED.* = ABNORMAL TERMINATION OF TST.
  106. *
  107. * *EQXXX,DATA ERROR AT -PHYSICAL POSITION-.*
  108. * *EQXXX,RXXXXXXX,TYYYY,SZZZZ.*
  109. * DATA ERRORS HAVE BEEN DETECTED ON A
  110. * SECTOR WHICH WAS READ.
  111. *
  112. * *EQXXX,POS. ERROR AT -PHYSICAL POSITION-.*
  113. * *EQXXX,RXXXXXXX,TYYYY,SZZZZ.*
  114. * THE SECTOR WHICH WAS READ WAS NOT
  115. * THE CORRECT SECTOR. THE POSITION GIVEN
  116. * IS THE POSITION OF THE SECTOR READ.
  117. *
  118. * *EQXXX,DEV.-TYPE ERR--PHYSICAL POSITION-.*
  119. * *EQXXX,RXXXXXXX,TYYYY,SZZZZ.*
  120. * CIO HAS DETECTED ONE OF THE FOLLOWING
  121. * ERRORS WHICH APPEAR IN THE -TYPE ERR-
  122. * POSITION.
  123. * -TYPE ERR- = PARITY ER. -- PARITY ERROR
  124. * ADDR. ERR. -- ADDRESS ERROR
  125. * STATUS ER. -- DEVICE STATUS ERROR
  126. * 81 FNC REJ -- 6681 FUNCTION REJECT
  127. * RESERVED -- DEVICE RESERVED
  128. * NOT READY -- DEVICE NOT READY
  129. *
  130. * *EQXXX,EXP. POSITION -PHYSICAL POSITION-.*
  131. * *EQXXX,RXXXXXXX,TYYYY,SZZZZ.*
  132. * WHEN A POSITION OR DEVICE ADDRESS ERROR
  133. * OCCURES THE EXPECTED POSITION IS GIVEN
  134. * BY THIS MESSAGE.
  135. *
  136. * *EQXXX,DATA EXP WWW,EEEEEEEEEEEEEEEEEEEE*
  137. * *EQXXX,DATA READ WWW,RRRRRRRRRRRRRRRRRRRR*
  138. * *EQXXX,DATA DIFF WWW,DDDDDDDDDDDDDDDDDDDD*
  139. * *DATA OK.* (OPTIONAL - SEE BELOW)
  140. * WHEN A DATA ERROR OR DEVICE PARITY ERROR IS
  141. * DETECTED THE DATA ON THE SECTOR IS CHECKED
  142. * AND THE ERRORS REPORTED. IF NO ERRORS ARE
  143. * FOUND THE MESSAGE *DATA OK.* IS ISSUED.
  144. * WWW IS THE WORD NUMBER IN THE SECTOR.
  145. * EE-----E IS THE EXPECTED DATA.
  146. * RR-----R IS THE DATA READ.
  147. * DD-----D IS THE DIFFERNCE.
  148. *
  149. * * TST ERROR - GO / DROP.* = *TST* HAS DETECTED AN
  150. * IRRECOVERABLE READ ERROR.
  151. *
  152. * * END TAPE STORAGE TEST.* = END OF TEST.
  153. SPACE 4
  154. ** COMMON DECKS.
  155.  
  156.  
  157. *CALL COMCMAC
  158. *CALL COMCCMD
  159. SPACE 4
  160. **** ASSEMBLY CONSTANTS.
  161.  
  162.  
  163. TBUFL EQU 4001B
  164. ****
  165. TITLE DATA.
  166. FET SPACE 4
  167. * FILE FET.
  168.  
  169.  
  170. ORG 110B
  171. FET BSS 0
  172. T BSS 0
  173. TAPE1 FILEB TBUF,TBUFL,EPR,(FET=8)
  174.  
  175. * DATA STORAGE.
  176.  
  177.  
  178. FL CON 0 ORIGINAL FIELD LENGTH
  179. NS CON 10000B NUMBER OF SECTORS
  180. SM CON 7777B SECTOR MASK
  181. NW CON 0 NO SEQUENTIAL WRITE AT BEGINNING OF TEST
  182. TS CON 0L0 TEST SECTION TO BE EXECUTED
  183. TP CON 0L5 DEFAULT TEST PATTERN
  184. ST CON 0 START TIME
  185. ET CON 0 ENDING TIME
  186. ND CON 0 NULL DATA FLAG
  187. NT CON 1 NO DATA TRANSFER FLAG
  188. BS CON 1000B BLOCK SIZE (PRU SIZE)
  189.  
  190. * SPECIAL ENTRY POINTS.
  191.  
  192. SSJ= EQU 0
  193. TITLE MAIN PROGRAM.
  194. TST SPACE 4
  195. ** TST - MAIN PROGRAM.
  196.  
  197.  
  198. TST SB1 1 (B1) = 1
  199. SB7 B0
  200. SX6 A0
  201. SA6 FL
  202. RJ PRS PRESET
  203. TST1 SA1 NW
  204. NZ X1,TST2 IF NO WRITE
  205. RJ WSQ WRITE SEQUENTIAL
  206. RJ WRC WAIT REWIND COMPLETE
  207. TST2 SA1 TS
  208. ZR X1,TST3 IF ALL SECTIONS SELECTED
  209. SB5 X1-1
  210. ZR B5,TST4 IF ONLY WRITE SELECTED
  211. TST3 RJ RSQ READ SEQUENTIAL
  212. TST4 SA1 B0
  213. LX1 59-8
  214. PL X1,TST5 IF REPEAT TEST NOT SET
  215. RJ WRC WAIT REWIND COMPLETE
  216. EQ TST1 CONTINUE
  217.  
  218. TST5 MESSAGE (=C* END TAPE STORAGE TEST.*)
  219. ENDRUN
  220. TITLE TEST SECTIONS.
  221. WSQ SPACE 4,15
  222. ** WSQ - WRITE SEQUENTIAL.
  223. *
  224. * USES X - 0, 1, 2, 4, 5, 6, 7.
  225. * A - 1, 5, 6, 7.
  226. *
  227. * CALLS AIP, CKS, CTR, GDB, MEM, MES.
  228. *
  229. * MACROS REWIND, RTIME, WRITEF, WRITEW.
  230.  
  231.  
  232. WSQ SUBR ENTRY/EXIT
  233. SX6 1 SET SECTORS TO CHECK
  234. SA6 CKSI
  235. SA1 FL
  236. RJ MEM REQUEST MEMORY
  237. WSQ1 REWIND T,R
  238. SX1 =C* SEQUENTIAL WRITE.*
  239. RJ MES SEND MESSAGE
  240. SA5 NS NUMBER OF SECTORS TO WRITE
  241. BX0 X5
  242. BX6 X5 SAVE SECTOR COUNT
  243. SA6 CTRB
  244. SX5 B1
  245. RTIME ST
  246. WSQ2 SA1 TP GENERATE SECTOR TO WRITE
  247. BX7 X5
  248. BX6 X1
  249. SA7 SBUF
  250. SA6 SBUF+1
  251. RJ GDB GENERATE DATA BUFFER
  252. SA7 TP
  253. SX2 T SET FET ADDRESS
  254. SA1 NT
  255. ZR X1,WQS3 IF NO DATA TRANSFER
  256. WRITEW X2,SBUF,100B
  257. EQ WQS4 CHECK FOR CIO ERROR
  258.  
  259. WQS3 RJ AIP ADVANCE *IN* POINTER
  260. WQS4 SX4 B0
  261. RJ CKS CHECK FOR CIO ERROR
  262. SX6 B1+
  263. IX5 X5+X6 ADVANCE SECTOR COUNTER
  264. IX0 X0-X6
  265. NZ X0,WSQ2 IF MORE SECTORS TO WRITE
  266. WRITEF T,R
  267. RJ CTR COMPUTE TRANSFER RATE
  268. SA1 B0
  269. LX1 59-9
  270. NG X1,WSQ1 IF REPEAT SECTION SET
  271. EQ WSQX RETURN
  272. RSQ SPACE 4,15
  273. ** RSQ - READ SEQUENTIAL.
  274. *
  275. * USES X - 0, 1, 2, 4, 5, 6, 7.
  276. * A - 1, 5, 6, 7.
  277. *
  278. * CALLS ABT, AOP, CKS, CTR, MEM, MES.
  279. *
  280. * MACROS MESSAGE, READ, READW, REWIND, RTIME.
  281.  
  282.  
  283. RSQ SUBR ENTRY/EXIT
  284. SX6 1 SET SECTORS TO CHECK
  285. SA6 CKSI
  286. SA1 FL
  287. RJ MEM REQUEST MEMORY
  288. RSQ1 REWIND T,R
  289. SX1 =C* SEQUENTIAL READ.*
  290. RJ MES SEND MESSAGE
  291. SA5 NS NUMBER OF SECTORS
  292. BX0 X5
  293. BX6 X5 SAVE SECTOR COUNT
  294. SA6 CTRB
  295. SX5 B0
  296. RTIME ST
  297. RSQ2 READ T
  298. RSQ3 SX2 T SET FET ADDRESS
  299. SA1 NT
  300. ZR X1,RSQ3.1 IF NO DATA TRANSFER
  301. READW X2,SBUF,100B
  302. EQ RSQ3.2 CHECK FOR EOR/EOF
  303.  
  304. RSQ3.1 RJ AOP ADVANCE *OUT* POINTER
  305. RSQ3.2 ZR X1,RSQ3.3 IF NO EOR/EOF DETECTED
  306. SX1 X1+3 CHECK FOR *CIO* ERROR
  307. NZ X1,RSQ5 IF NO *CIO* ERROR
  308. RSQ3.3 ZR X0,RSQ4 IF EOF EXPECTED
  309. SX2 B1
  310. IX4 X5+X2 ADVANCE EXPECTED SECTOR
  311. SA5 SBUF
  312. BX6 X4
  313. SA6 RSQA SAVE RANDOM ADDRESS
  314. IX0 X0-X2 DECREMENT SECTOR COUNTER
  315. RJ CKS CHECK SECTOR
  316. SA5 RSQA
  317. ZR X4,RSQ3 IF NO ERROR DETECTED
  318. SA1 T+1 RESTART READ ON ERROR
  319. SX2 B1
  320. IX7 X5+X2 SET RANDOM ADDRESS TO NEXT SECTOR
  321. SX6 X1
  322. SA6 A1+B1
  323. SA7 T+6
  324. SA6 A6+B1
  325. EQ RSQ2
  326.  
  327. RSQ4 MESSAGE (=C* NO EOF ON LAST READ.*)
  328. EQ RSQ6
  329.  
  330. RSQ5 ZR X0,RSQ7 IF EOF EXPECTED
  331. MESSAGE (=C* ILLEGAL EOF DETECTED.*)
  332. RSQ6 RJ ABT CHECK FOR ABORT ON ERRORS
  333. RSQ7 RJ CTR COMPUTE TRANSFER RATE
  334. SA1 B0
  335. LX1 59-9
  336. NG X1,RSQ1 IF REPEAT SECTION
  337. EQ RSQX RETURN
  338.  
  339. RSQA CON 0 TEMPORARY
  340. TITLE SUBROUTINES.
  341. ABT SPACE 4,15
  342. ** ABT - ABORT JOB.
  343. *
  344. * ABORTS JOB IF PAUSE ON ERROR NOT SELECTED.
  345. *
  346. * EXIT (X4) = 1.
  347. *
  348. * USES X - 1, 4, 7.
  349. * A - 1, 7.
  350. * B - NONE.
  351. *
  352. * MACROS ABORT, MESSAGE, RECALL.
  353.  
  354.  
  355. ABT SUBR ENTRY/EXIT
  356. SA1 B0
  357. LX1 59-7
  358. NG X1,ABT2 IF ABORT ON ERROR
  359. SX7 B1+ SET PAUSE BIT
  360. LX1 7-59
  361. LX7 12
  362. BX7 X7+X1
  363. SA7 A1
  364. MESSAGE ABTA,2,R ISSUE MESSAGE TO SECOND LINE
  365. ABT1 RECALL
  366. SA1 B0
  367. LX1 59-12
  368. NG X1,ABT1 IF PAUSE BIT SET
  369. SX4 B1
  370. EQ ABTX RETURN
  371.  
  372. ABT2 MESSAGE (=C* JOB ABORTED.*)
  373. ABT3 ABORT ABORT JOB
  374.  
  375. ABTA DATA C*$TST ERROR - GO / DROP.*
  376. AIP SPACE 4,20
  377. ** AIP - ADVANCE *IN* POINTER.
  378. *
  379. * ADVANCE THE *IN* POINTER BY 100B (AS IF A *WRITEW* OF 100B
  380. * WORDS HAD BEEN PERFORMED), BUT DO NOT TRANSFER THE DATA.
  381. * COPY ONLY THE FIRST WORD OF THE BLOCK FROM BUFFER *SBUF*
  382. * TO THE CIO BUFFER.
  383. *
  384. * ENTRY (X2) = ADDRESS OF FET FOR FILE.
  385. *
  386. * EXIT VIA *WTX=*.
  387. * (X2) = ADDRESS OF FET FOR FILE.
  388. *
  389. * USES X - 1, 2, 3, 4, 6, 7.
  390. * A - 1, 2, 3, 4, 6.
  391. * B - 2, 3, 4, 5, 6, 7.
  392. *
  393. * CALLS DCB=, WTX=.
  394.  
  395.  
  396. + EQ AIP1 (REENTRY ADDRESS FROM *DCB=*)
  397.  
  398. AIP SUBR ENTRY/EXIT
  399. SA4 *-1 SET REENTRY/RETURN ADDRESS
  400. SA1 X2+4 (B5) = LIMIT
  401. SA3 X2+B1 (X3) = FIRST
  402. SB5 X1
  403.  
  404. * REENTER HERE FROM *DCB=*.
  405.  
  406. AIP1 SA2 X2 (B2) = FET STATUS
  407. SA1 A3+2 (B4) = OUT
  408. SB2 X2
  409. SA2 A3+B1 (X2) = IN
  410. SB4 X1
  411. SB3 X2+B1 (B3) = IN+1
  412. LE B3,B4,AIP3 IF IN .LT. OUT
  413.  
  414. * CALCULATE SPACE LEFT IN BUFFER (IN .GE. OUT).
  415.  
  416. SX6 B5
  417. IX6 X6-X3 (LIMIT-FIRST)
  418. SX7 B3-B4 (IN+1-OUT)
  419. IX6 X6-X7 AVAILABLE SPACE IN BUFFER
  420. SX7 X6-100B
  421. NG X7,DCB= IF NOT ENOUGH SPACE
  422.  
  423. * UPDATE BUFFER POINTER (IN .GE. OUT).
  424.  
  425. SB6 X2+100B NEW VALUE OF IN
  426. LT B6,B5,AIP2 IF NO BUFFER WRAPAROUND
  427. SB7 X3
  428. SB7 B5-B7 (LIMIT-FIRST)
  429. SB6 B6-B7 NEW VALUE OF IN
  430. AIP2 SA1 SBUF COPY FIRST WORD OF BLOCK TO (IN)
  431. BX6 X1
  432. SA6 X2
  433. SX2 B6 SET NEW VALUE OF IN
  434. EQ WTX= EXIT
  435.  
  436. * CALCULATE SPACE LEFT IN BUFFER (IN .LT. OUT).
  437.  
  438. AIP3 SX6 B4-B3 AVAILABLE SPACE IN BUFFER
  439. SX7 X6-100B
  440. NG X7,DCB= IF NOT ENOUGH SPACE IN BUFFER
  441.  
  442. * UPDATE BUFFER POINTER (IN .LT. OUT).
  443.  
  444. SB6 X2+100B NEW VALUE OF IN
  445. EQ AIP2 EXIT
  446. AOP SPACE 4,20
  447. *** AOP - ADVANCE *OUT* POINTER.
  448. *
  449. * ADVANCE THE *OUT* POINTER BY 100B (AS IF A *READW* OF 100B
  450. * WORDS HAD BEEN PERFORMED), BUT DO NOT TRANSFER THE DATA.
  451. * COPY ONLY THE FIRST WORD OF THE BLOCK FROM THE CIO BUFFER
  452. * TO BUFFER *SBUF*.
  453. *
  454. * ENTRY (X2) = ADDRESS OF FET FOR FILE.
  455. *
  456. * EXIT VIA *RDX=*.
  457. * (X1) = 0 FOR TRANSFER COMPLETE.
  458. * (X1) = -1 IF EOF DETECTED ON FILE.
  459. * (X1) = -2 IF EOI DETECTED ON FILE.
  460. * (X2) = ADDRESS OF FET FOR FILE.
  461. *
  462. * USES X - 1, 2, 3, 4, 6, 7.
  463. * A - 1, 2, 3, 4, 7.
  464. * B - 3, 4, 5, 6, 7.
  465. *
  466. * CALLS LCB=, RDX=.
  467.  
  468.  
  469. + EQ AOP1 (REENTRY ADDRESS FOR *LCB=*)
  470.  
  471. AOP SUBR ENTRY/EXIT
  472. SA4 *-1 SET REENTRY/RETURN ADDRESS
  473. SA1 X2+4 (B5) = LIMIT
  474. SA3 X2+B1 (X3) = FIRST
  475. SB5 X1
  476.  
  477. * REENTER HERE FROM *LCB=*.
  478.  
  479. AOP1 SA1 A3+B1 (B3) = IN
  480. SA2 A1+B1 (B4) = OUT
  481. SB3 X1
  482. SB4 X2
  483. LT B3,B4,AOP3 IF IN .LT. OUT
  484.  
  485. * CALCULATE DATA AVAILABLE IN BUFFER (IN .GE. OUT).
  486.  
  487. SX6 B3-B4 AVAILABLE DATA IN BUFFER
  488. SX7 X6-100B
  489. NG X7,LCB= IF NOT ENOUGH DATA IN BUFFER
  490.  
  491. * UPDATE BUFFER POINTER (IN .GE. OUT).
  492.  
  493. SB6 B4+100B NEW VALUE OF OUT
  494. AOP2 SA1 B4 COPY FIRST WORD OF BLOCK FROM (OUT)
  495. BX7 X1
  496. SA7 SBUF
  497. SB4 B6 SET NEW VALUE OF OUT
  498. EQ RDX= EXIT
  499.  
  500. * CALCULATE DATA AVAILABLE IN BUFFER (IN .LT. OUT)
  501.  
  502. AOP3 SX6 B5
  503. IX6 X6-X3 (LIMIT-FIRST)
  504. SX7 B4-B3 (OUT-IN)
  505. IX6 X6-X7 AVAILABLE DATA IN BUFFER
  506. SX7 X6-100B
  507. NG X7,LCB= IF NOT ENOUGH DATA IN BUFFER
  508.  
  509. * UPDATE BUFFER POINTER (IN .LT. OUT).
  510.  
  511. SB6 B4+100B NEW VALUE OF OUT
  512. LT B6,B5,AOP2 IF NO BUFFER WRAPAROUND
  513. SB7 X3
  514. SB7 B5-B7 (LIMIT-FIRST)
  515. SB6 B6-B7 NEW VALUE OF OUT
  516. EQ AOP2 EXIT
  517. CKS SPACE 4,20
  518. ** CKS - CHECK SECTOR.
  519. *
  520. * ENTRY (X5) = SECTOR NUMBER READ.
  521. * (X4) = SECTOR NUMBER EXPECTED.
  522. * (A5) = ADDRESS OF SECTOR TO BE CHECKED.
  523. * ND .NE. 0 IF DATA IS TO BE CHECKED.
  524. *
  525. * EXIT (X4) = 0 IF NO ERROR DETECTED.
  526. *
  527. * USES X - ALL.
  528. * A - 1, 2, 3, 4, 5, 6, 7.
  529. * B - 2.
  530. *
  531. * RESTORES X5, T+2, T+3, X0, T+6 WHEN RETURNING FROM ERROR.
  532. *
  533. * CALLS ABT, DCH, ERR.
  534.  
  535.  
  536. CKS SUBR ENTRY/EXIT
  537. SA3 T+6 CHECK FOR CIO ERROR
  538. MX2 -3
  539. BX2 -X2*X3
  540. NZ X2,CKS2 IF CIO ERROR
  541. ZR X4,CKSX IF CHECKING ON WRITE - RETURN
  542. CKS0 BX6 X4-X5
  543. NZ X6,CKS3 IF POSITION ERROR
  544. SX6 X4+B1 INCREMENT RANDOM ADDRESS FOR NEXT SECTOR
  545. SA6 CKSJ
  546. SA4 ND
  547. ZR X4,CKSX IF DATA NOT TO BE CHECKED
  548. SX4 B0
  549. SB2 76B
  550. SA2 A5+77B LOAD CHECKSUM
  551. CKS1 SA1 A5+B2 VALIDATE CHECKSUM
  552. IX2 X2-X1
  553. SB2 B2-1
  554. GT B2,B1,CKS1 IF MORE DATA
  555. NZ X2,CKS1.1 IF CHECKSUM ERROR
  556. SA3 CKSI CHECK SECTOR COUNT
  557. SX6 X3-1
  558. ZR X6,CKSX IF END OF TRANSFER
  559. SA6 A3+
  560. SA5 A5+100B SET ACTUAL RANDOM ADDRESS
  561. SA4 CKSJ SET EXPECTED RANDOM ADDRESS
  562. EQ CKS0 NEXT SECTOR
  563.  
  564. CKS1.1 SA1 CKSA DATA ERROR PROCESSING
  565. SA2 CKSE
  566. RJ ERR DATA ERROR MESSAGE
  567. RJ DCH DATA CHECK
  568. EQ CKS6
  569.  
  570. CKS2 SA1 CKSB CIO ERROR PROCESSING
  571. SX6 X2-2
  572. SA2 X2+TCIO-1
  573. SA6 CKSG
  574. LX7 X4
  575. SX4 B0
  576. SA7 CKSH
  577. RJ ERR CIO ERROR MESSAGE
  578. SA1 CKSG
  579. NG X1,CKS5 IF PARITY ERROR
  580. ZR X1,CKS4 IF ADDRESS ERROR
  581. EQ CKS6
  582.  
  583. CKS3 SA1 CKSC POSITION ERROR PROCESSING
  584. SA2 CKSE
  585. BX6 X4
  586. SX4 B0
  587. SA6 CKSH
  588. RJ ERR POSITION ERROR MESSAGE
  589. CKS4 SA4 CKSH SECTOR EXPECTED
  590. SA1 CKSD
  591. SA2 CKSF
  592. BX5 X4
  593. SX4 B1
  594. ZR X5,CKS6 IF ADDRESS ERROR ON SEQUENTIAL WRITE
  595. RJ ERR EXPECTED ERROR MESSAGE
  596. CKS5 RJ DCH DATA CHECK
  597. CKS6 RJ ABT CHECK FOR ABORT ON ERRORS
  598. CKS7 SA5 ERRA RESTORE REGISTERS
  599. SA2 A5+B1
  600. SA3 A2+B1
  601. SA1 A3+B1
  602. BX6 X2
  603. LX7 X3
  604. SA2 A1+B1
  605. SA6 T+2
  606. SA7 T+3
  607. LX6 X2
  608. BX0 X1
  609. SA6 T+6
  610. EQ CKSX RETURN
  611.  
  612.  
  613. CKSA DATA 10HEQXXX,DATA
  614. CKSB DATA 10HEQXXX,DEV.
  615. CKSC DATA 10HEQXXX,POS.
  616. CKSD DATA 10HEQXXX,EXP.
  617. CKSE CON 10H ERROR AT
  618. CKSF CON 10H POSITION
  619. CKSG CON 0 TEMPORARY
  620. CKSH CON 0 TEMPORARY
  621. CKSI CON 0 NUMBER OF SECTORS REMAINING TO CHECK
  622. CKSJ CON 0 EXPECTED RANDOM ADDRESS OF NEXT SECTOR
  623.  
  624. TCIO CON 10LPARITY ER. PARITY ERROR
  625. CON 10LADDR. ERR. ADDRESS ERROR
  626. CON 10LSTATUS ER. DEVICE STATUS ERROR
  627. CON 10L81 FNC REJ 6681 FUNCTION REJECT
  628. CON 10LRESERVED DEVICE RESERVED
  629. CON 10LNOT READY DEVICE NOT READY
  630. CTR SPACE 4,15
  631. ** CTR - COMPUTE TRANSFER RATE.
  632. *
  633. * ENTRY (CTRB) = NUMBER OF SECTORS TRANSFERRED.
  634. * (ST) = START TIME.
  635. *
  636. * EXIT TRANSFER RATE MESSAGE ISSUED TO DAYFILE.
  637. *
  638. * USES X - 0, 1, 2, 3, 6.
  639. * A - 1, 2, 6.
  640. * B - NONE.
  641. *
  642. * CALLS CFD, MES.
  643. *
  644. * MACROS RTIME.
  645.  
  646.  
  647. CTR SUBR ENTRY/EXIT
  648. RTIME ET GET ENDING TIME
  649. SA1 ST COMPUTE ELAPSED TIME
  650. SA2 ET
  651. MX0 -36
  652. BX1 -X0*X1
  653. BX2 -X0*X2
  654. IX2 X2-X1
  655. BX6 X2
  656. SA1 CTRB
  657. SX3 640*1000/64
  658. LX3 6
  659. IX3 X1*X3 CHAR
  660. IX1 X3/X2
  661. RJ CFD CONVERT TO DISPLAY CODE
  662. SA6 CTRA+2
  663. SX1 CTRA SEND TRANSFER RATE MESSAGE
  664. RJ MES
  665. EQ CTRX RETURN
  666.  
  667. CTRA DATA C*TST TRANSFER RATE = XXXXXX.XXX KC.*
  668. CTRB CON 0 SECTORS TRANSFERRED
  669. DCH SPACE 4,15
  670. ** DCH - DATA CHECK.
  671. *
  672. * ENTRY (SBUF - SBUF+77B) = SECTOR TO BE CHECKED.
  673. *
  674. * USES X - 0, 1, 2, 6, 7.
  675. * A - 1, 2, 6, 7.
  676. * B - 2, 5, 6, 7.
  677. *
  678. * CALLS COD, GDB, WOD.
  679. *
  680. * MACROS MESSAGE.
  681.  
  682.  
  683. DCH4 NZ B7,DCHX IF ERRORS FOUND RETURN
  684. MESSAGE (=C*DATA OK.*)
  685.  
  686. DCH SUBR ENTRY/EXIT
  687. SA1 ND
  688. ZR X1,DCHX IF NO DATA GENERATED
  689. SA1 SBUF+1
  690. SB5 B1
  691. BX6 X1
  692. SA6 PBUF+1
  693. SB7 B0+
  694. RJ GDB REGENERATE DATA
  695. DCH1 SB6 77B
  696. DCH2 SA1 PBUF+B5
  697. SA2 SBUF+B5
  698. SB5 B5+B1
  699. BX7 X2-X1
  700. GT B5,B6,DCH4 IF END OF CHECK
  701. ZR X7,DCH2 IF DATA MATCHES
  702. LX6 X2
  703. SB7 B1 ERROR FLAG
  704. SA6 DCHA
  705. SA7 A6+B1
  706. BX0 X1
  707. SX1 B5
  708. SB6 B0
  709. RJ COD CONVERT WORD NUMBER
  710. LX6 6
  711. SX1 B1
  712. IX6 X6+X1
  713. BX1 X0
  714. SA6 DCHD
  715. DCH3 RJ WOD CONVERT DATA
  716. SA1 TMES+B6 MESSAGE TYPE
  717. SA2 DCHD
  718. SA6 DCHE
  719. MX0 -24
  720. SA7 A6+B1
  721. BX2 -X0*X2 MERGE MESSAGE TYPE
  722. BX1 X0*X1
  723. BX6 X2+X1
  724. SA6 A2
  725. MESSAGE DCHC,,R
  726. SA1 DCHA+B6
  727. SB2 B6-B1
  728. SB6 B6+B1
  729. NE B2,B1,DCH3 IF MORE MESSAGES FOR THIS ERROR
  730. EQ DCH1
  731.  
  732. DCHA CON 0 TEMPORARY
  733. DCHB CON 0 TEMPORARY
  734. DCHC DATA 10HEQXXX,DATA
  735. DCHD CON 10H .... 000,
  736. DCHE CON 0,0,0
  737.  
  738. TMES CON 6L EXP TABLE OF MESSAGES
  739. CON 6L READ
  740. CON 6L DIFF
  741. ERR SPACE 4,15
  742. ** ERR - SEND ERROR MESSAGE.
  743. *
  744. * ENTRY (X4) = 0 IF REGISTERS MUST BE SAVED.
  745. * (X2) = SECOND WORD OF MESSAGE.
  746. * (X1) = FIRST WORD OF MESSAGE.
  747. *
  748. * USES X - 0, 1, 2, 3, 4, 6, 7.
  749. * A - 1, 2, 3, 6, 7.
  750. * B - 6
  751. *
  752. * CALLS CVA, WOD.
  753. *
  754. * MACROS MESSAGE, RECALL, RPHR, STATUS.
  755.  
  756.  
  757. ERR SUBR ENTRY/EXIT
  758. BX6 X1
  759. LX7 X2
  760. SA6 ERRB
  761. SA7 A6+B1
  762. RECALL T
  763. NZ X4,ERR1 IF REGISTERS ALREADY SAVED
  764. SA2 T+2
  765. SA3 T+3
  766. LX6 X5
  767. BX7 X2
  768. SA2 T+6
  769. SA6 ERRA
  770. LX6 X3
  771. SA7 A6+B1
  772. BX7 X0
  773. SA6 A7+B1
  774. LX6 X2
  775. SA7 A6+B1
  776. SA6 A6+2
  777. ERR1 MESSAGE ERRB,,R
  778. EQ ERRX RETURN
  779.  
  780. ERRA BSS 5
  781. ERRB DATA 10HEQXXX,ZZZZ
  782. ERRC CON 10H ERROR AT
  783. ERRD CON 0,0
  784. CON 0 END OF LINE FOR FIRST MESSAGE
  785. GDB SPACE 4,15
  786. ** GDB - GENERATE DATA BUFFER.
  787. *
  788. * ENTRY (X6) = RANDOM NUMBER WHICH WILL GENERATE BUFFER.
  789. * (A6) = ADDRESS OF RANDOM NUMBER IN BUFFER.
  790. *
  791. * EXIT (X6) = CHECKSUM OF BUFFER.
  792. * (X7) = LAST DATA WORD STORED IN BUFFER.
  793. * (B2) = (B3) = NUMBER OF DATA WORDS GENERATED.
  794. * (A6) = ADDRESS OF LAST WORD IN BUFFER.
  795. *
  796. * USES X - 2, 6, 7.
  797. * A - 2, 6, 7.
  798. * B - 2, 3.
  799.  
  800.  
  801. GDB SUBR ENTRY/EXIT
  802. SA2 ND
  803. ZR X2,GDBX IF NO DATA GENERATION
  804. SB3 75B
  805. SB2 B0+
  806. GDBA BX7 X6
  807. SA7 A6
  808.  
  809. * THIS INSTRUCTION IS MODIFIED BY PRESET
  810. * EQ GDB2 IF NON-RANDOM PATTERN
  811.  
  812. SX6 B0+ IF RANDOM PATTERN - CLEAR CHECKSUM
  813.  
  814. GDB1 PX2 X7
  815. DX7 X2*X2
  816. IX7 X7+X2
  817. SB2 B2+B1
  818. LX2 15
  819. IX7 X7+X2
  820. LX2 19
  821. IX7 X2+X7
  822. SA7 A7+B1
  823. IX6 X6+X7 ADVANCE CHECKSUM
  824. NE B2,B3,GDB1 IF MORE DATA TO GENERATE
  825. SA6 A7+B1 CHECKSUM IN LAST LOCATION OF BUFFER
  826. EQ GDBX
  827.  
  828. GDB2 SB2 B2+B1
  829. SA7 A7+B1
  830. NE B2,B3,GDB2 IF BUFFER NOT FULL
  831. SA6 A7+B1
  832. EQ GDBX
  833. MEM SPACE 4,15
  834. ** MEM - REQUEST MEMORY.
  835. *
  836. * ENTRY (X1) = REQUESTED MEMORY.
  837. *
  838. * EXIT (IN) = (OUT) = (FIRST).
  839. * (LIMIT) = REQUESTED FIELD LENGTH.
  840. *
  841. * USES X - 2, 6, 7.
  842. * A - 2, 6, 7.
  843. * B - NONE.
  844. *
  845. * MACROS MEMORY.
  846.  
  847.  
  848. MEM SUBR ENTRY/EXIT
  849. SA2 T+1
  850. SX7 X1-10B
  851. SX6 X2
  852. SA7 T+4 LIMIT
  853. SA6 A7-B1 OUT
  854. SA6 A6-B1 IN
  855. MEMORY ,,R,X1 REQUEST MEMORY
  856. EQ MEMX RETURN
  857. MES SPACE 4,15
  858. ** MES - SEND MESSAGE.
  859. *
  860. * ENTRY (X1) = MESSAGE ADDRESS.
  861. *
  862. * EXIT MESSAGE SENT TO CONTROL POINT AND JOB DAYFILE.
  863. *
  864. * USES X - 0.
  865. * A - NONE.
  866. * B - NONE.
  867. *
  868. * MACROS MESSAGE.
  869.  
  870.  
  871. MES SUBR ENTRY/EXIT
  872. SX0 X1+
  873. MESSAGE X1,1,R
  874. MESSAGE X0,3,R
  875. EQ MESX RETURN
  876. WRC SPACE 4,10
  877. ** WRC - WAIT REWIND COMPLETE.
  878. *
  879. * USES X - 1, 2, 3.
  880. * A - 1.
  881. * B - NONE.
  882. *
  883. * MACROS MESSAGE, RECALL, RTIME.
  884.  
  885.  
  886. WRC SUBR
  887. MESSAGE (=C* WAIT REWIND COMPLETE.*),1,R
  888. RTIME WRCA FETCH TIME
  889. REWIND T
  890. SA1 WRCA
  891. MX3 -36
  892. BX2 -X3*X1 SAVE START TIME
  893. WRC1 RECALL DELAY
  894. RTIME WRCA CHECK TIME
  895. SA1 WRCA
  896. BX1 -X3*X1
  897. IX1 X1-X2 TIME SINCE FIRST CALL
  898. SX1 X1-40000
  899. NG X1,WRC1 IF 40 SECONDS NOT ELAPSED
  900. EQ WRCX RETURN
  901.  
  902. WRCA BSS 1
  903. SPACE 4
  904. ** COMMON DECKS.
  905.  
  906.  
  907. ERP1$ EQU 1 ENABLE I/O ERROR PROCESSING
  908. *CALL COMCCDD
  909. *CALL COMCCOD
  910. *CALL COMCCIO
  911. *CALL COMCCFD
  912. *CALL COMCLFM
  913. *CALL COMCRDW
  914. *CALL COMCSYS
  915. *CALL COMCWOD
  916. *CALL COMCWTW
  917. BUFFERS SPACE 4
  918. TITLE BUFFERS.
  919. USE //
  920. SEG
  921. BUFS BSS 0
  922.  
  923. PBUF EQU BUFS+1 TEST BUFFER FOR PATTERN REGENERATION
  924. SBUF EQU PBUF+100B
  925. TBUF EQU SBUF+100B
  926. MFL= EQU TBUF+TBUFL+10B+200000B
  927.  
  928.  
  929. TITLE PRESET.
  930. ORG BUFS
  931.  
  932.  
  933. ** THE FOLLOWING CODE IS OVERLAYED BY BUFFERS.
  934.  
  935.  
  936. * COMMON DECKS
  937.  
  938. *CALL COMCARG
  939. *CALL COMCCPM
  940. *CALL COMCDXB
  941. *CALL COMCMVE
  942. PRS SPACE 4
  943. ** PRS - PRESET PROGRAM.
  944. *
  945. * ENTRY (B7) = 1 IF ADDRESS CONVERSION PRESET.
  946.  
  947.  
  948. PRS SUBR ENTRY/EXIT
  949. MODE 1
  950. STATUS T,P
  951. SA1 T+6
  952. RJ WOD CONVERT EST ORDINAL
  953. SA1 T+1
  954. AX6 6 POSITION EST ORDINAL
  955. MX0 12
  956. BX1 X0*X1
  957. MX0 18
  958. LX0 -12
  959. BX6 X0*X6
  960. BX6 X6+X1 MERGE EST ORDINAL AND TYPE
  961. MX0 -30
  962. SA1 DCHC SET EQUIPMENT IN MESSAGES
  963. BX1 -X0*X1
  964. BX7 X6+X1
  965. SA7 DCHC
  966. SA1 CKSA-1
  967. SB2 B0+
  968. SB3 4
  969. PRS1 SA1 A1+B1
  970. BX1 -X0*X1
  971. SB2 B2+1
  972. BX7 X6+X1
  973. SA7 A1
  974. LT B2,B3,PRS1 IF MORE MESSAGES
  975. MX6 0
  976. SA6 T+5
  977. SA6 A6+B1
  978.  
  979. * IDENTIFY ASSIGNED EQUIPMENT.
  980.  
  981. SA2 TEQP
  982. SA1 T+B1
  983. MX0 -24
  984. MX4 11
  985. LX4 -1
  986. SX7 B1
  987. PRS2 ZR X2,PRS8 IF END OF TABLE
  988. BX3 X2-X1
  989. BX6 X4*X3
  990. LX3 X2
  991. SA2 A2+B1
  992. NZ X6,PRS2 IF NO EQUIPMENT MATCH
  993. BX6 -X0*X3
  994. IX6 X6-X7
  995. SA6 NS
  996. MX7 12 SET SECTOR MASK
  997. NX6 X6,B2
  998. AX7 X7,B2
  999. SA7 A6+B1
  1000.  
  1001. * RETRIEVE ARGUMENTS.
  1002.  
  1003. SA1 ACTR ARGUMENT COUNT
  1004. SB7 B0 FORCE OCTAL CONVERSION OF ARGUMENTS
  1005. SB4 X1
  1006. SA4 ARGR FIRST ARGUMENT
  1007. SB5 TARG ARGUMENT TABLE
  1008. RJ ARG PROCESS ARGUMENTS
  1009. NZ X1,PRS7 IF ARGUMENT ERROR
  1010. SA5 NS NUMBER OF SECTORS
  1011. MX2 12
  1012. BX3 X2*X5
  1013. ZR X3,PRS3 IF ARGUMENT OMITTED
  1014. RJ DXB CONVERT OCTAL ARGUMENT
  1015. NZ X4,PRS7 IF ERROR IN CONVERSION
  1016. SX1 B1
  1017. IX6 X6-X1
  1018. ZR X6,PRS7 IF ARGUMENT ERROR
  1019. SA6 NS
  1020. MX7 12 SET SECTOR MASK
  1021. NX6 X6,B2
  1022. AX7 X7,B2
  1023. SA7 SM
  1024.  
  1025. PRS3 SA1 NS SET SECTOR SIZE
  1026. RJ CDD CONVERT TO DISPLAY
  1027. SA6 PRSE+2
  1028. SX1 PRSE
  1029. RJ MES SEND FILE SIZE MESSAGE
  1030.  
  1031. * PATTERN SELECTION.
  1032.  
  1033. SA5 TP
  1034. RJ DXB
  1035. NZ X4,PRS7 IF ARGUMENT ERROR
  1036. SB5 X6-TPATL+1
  1037. BX5 X6
  1038. GT B5,B0,PRS7 IF ARGUMENT ERROR
  1039. SA1 X6+TPAT
  1040. SA2 PRSA
  1041. BX6 X1
  1042. LX7 X2
  1043. SB5 X5-5
  1044. ZR B5,PRS4 IF P=5 (RANDOM PATTERN)
  1045. SA7 GDBA SETS AN INSTRUCTION IN GDB
  1046. PRS4 SA6 TP
  1047. SX7 X5-4
  1048. SA7 ND SET NO DATA FLAG
  1049. ZR X7,PRS5 IF P=4
  1050. SX7 X5-6
  1051. NZ X7,PRS5 IF NOT P=6
  1052. SA7 ND SET NO DATA FLAG
  1053. SA7 NT SET NO DATA TRANSFER FLAG
  1054.  
  1055. * TEST SELECTION.
  1056.  
  1057. PRS5 SA5 TS
  1058. RJ DXB
  1059. NZ X4,PRS7 IF ARGUMENT ERROR
  1060. SX3 X6-6
  1061. PL X3,PRS7 IF ARGUMENT ERROR
  1062. SA6 TS
  1063.  
  1064. * BLOCK SIZE SELECTION.
  1065.  
  1066. SA5 BS SPECIFIED BLOCK SIZE
  1067. MX2 12
  1068. BX3 X2*X5
  1069. ZR X3,PRS6 IF ARGUMENT OMITTED
  1070. RJ DXB CONVERT OCTAL ARGUMENT
  1071. NZ X4,PRS7 IF ERROR IN CONVERSION
  1072. BX5 X6
  1073. AX5 9
  1074. LX5 9
  1075. IX7 X6-X5
  1076. NZ X7,PRS7 IF NOT MULTIPLE OF 1000B
  1077. PRS6 BX6 X5 SET MLRS FIELD IN FET
  1078. SA6 T+6
  1079. EQ PRSX RETURN
  1080.  
  1081. PRS7 MESSAGE (=C* ARGUMENT ERROR.*)
  1082. EQ ABT3 ABORT
  1083.  
  1084. PRS8 MESSAGE (=C* ILLEGAL EQUIPMENT.*)
  1085. EQ ABT3 ABORT
  1086.  
  1087. PRSA BX7 X6
  1088. SA7 A6
  1089. EQ GDB2
  1090.  
  1091. PRSB CON 0 DEVICE TYPE - NO DEFAULT
  1092. PRSC DATA 0L0 TRACK
  1093. PRSD CON 0 SECTOR
  1094. PRSE DATA C* FILE SIZE = XXXXXXXXXX SECTORS.*
  1095.  
  1096.  
  1097. TARG BSS 0 TST ARGUMENT TABLE
  1098. T ARG DZRO,TS,400B
  1099. P ARG TP,TP,400B
  1100. N ARG DZRO,NS,400B
  1101. NW ARG -ONE,NW
  1102. BS ARG BS,BS
  1103. ARG
  1104.  
  1105.  
  1106. DZRO DATA 1L0 DISPLAY CODE ZERO
  1107. ONE DATA 1 CONSTANT 1
  1108.  
  1109.  
  1110. TEQP BSS 0 TABLE OF EQUIPMENTS
  1111. VFD 12/2RMT,24/,24/100000B
  1112. VFD 12/2RNT,24/,24/100000B
  1113. VFD 12/2RCT,24/,24/100000B
  1114. VFD 12/2RAT,24/,24/100000B
  1115. CON 0 END OF TABLE
  1116.  
  1117. TPAT BSS 0 TABLE OF PATTERNS.
  1118. DATA 0
  1119. DATA -0
  1120. DATA 25252525252525252525B
  1121. DATA 52525252525252525252B
  1122. DATA 0
  1123. DATA 13576420735162531625B
  1124. DATA 0
  1125. TPATL EQU *-TPAT
  1126.  
  1127. SPACE 4
  1128. END