Table of Contents

1SS

Table Of Contents

  • [00002] 1SS - M860 SECONDARY STORAGE DRIVER.
  • [00009] M860 SECONDARY STORAGE DRIVER.
  • [00115] ASSEMBLY CONSTANTS.
  • [00191] LOCAL MACROS.
  • [00196] ERROR - PROCESS ERROR.
  • [00211] FETA - LOAD ABSOLUTE FET ADDRESS.
  • [00230] LDCA - LOAD CENTRAL ADDRESS.
  • [00247] MAIN ROUTINE.
  • [00248] SSD - MAIN ROUTINE.
  • [00318] ERR - PROCESS ERROR.
  • [00355] FUNCTION PROCESSORS.
  • [00357] PDF - PROCESS DATA FET.
  • [00404] TFCN - TABLE OF LEGAL FUNCTIONS AND PROCESSORS.
  • [00415] RDA - READ DATA IN STRIPE FORMAT.
  • [00595] RMS - READ MESSAGE AND ASSOCIATED DATA.
  • [00810] RUM - REWIND UNLOAD MESSAGES
  • [00847] CHN - CONVERT HEX NUMBER
  • [00878] RUN - REWIND UNLOAD UNIT.
  • [00935] WDA - WRITE DATA IN STRIPE FORMAT.
  • [01127] WMS - WRITE MESSAGE AND ASSOCIATED DATA.
  • [01286] SUBROUTINES.
  • [01287] I/O SUBROUTINES.
  • [01289] CKM - CHECK FOR MESSAGE.
  • [01315] CMD - CONNECT TO MESSAGE DEVICE.
  • [01355] CMG - CHECK FOR MESSAGES.
  • [01394] CON - CONNECT UNIT.
  • [01433] CSM - CHECK SPECIAL MESSAGE.
  • [01482] DST - DIAGNOSTIC STATUS.
  • [01532] FCN - FUNCTION M860 MSS INTERFACE.
  • [01599] FIN - FLUSH INPUT.
  • [01622] MCL - MASTER CLEAR FSC.
  • [01650] MDF - MESSAGE TYPE TO DAYFILE.
  • [01740] CTH - CONVERT TO HEX DISPLAY CODE.
  • [01760] RCL - RECALL CPU.
  • [01811] REL - RELEASE CHANNEL.
  • [01841] RES - RESERVE CHANNEL.
  • [01867] STS - RETURN INTERFACE STATUS.
  • [01936] WUM - WAIT UNIT MOUNTED
  • [01973] BDL - BUSY DELAY.
  • [01992] CBS - CHECK BUSY STATUS.
  • [02023] GENERAL SUBROUTINES.
  • [02025] CFL - CHECK FIELD LENGTH.
  • [02068] CFS - CHECK FULL STRIPE.
  • [02142] CIB - CHECK INPUT BUFFER.
  • [02184] COB - CHECK OUTPUT BUFFER.
  • [02224] DV3 - DIVIDE BY 3.
  • [02255] GMT - GET MESSAGE TYPE.
  • [02275] IBP - INITIALIZE AND CHECK BUFFER PARAMETERS.
  • [02339] RMB - READ MESSAGE BUFFER.
  • [02394] SCB - SET COMPLETE BIT.
  • [02432] UCO - UPDATE CENTRAL OUT.
  • [02455] WBB - WRITE BINARY BUFFER.
  • [02519] WMB - WRITE MESSAGE BUFFER.
  • [02579] PRESET.
  • [02711] TCHS - CHANNEL TABLE.
  • [02730] 2SS - ERROR MESSAGE OVERLAY.
  • [02780] EMS - ERROR MESSAGE PROCESSOR
  • [02926] ERRT - TABLE OF ERROR RETURN CODES.

Source Code

1SS.txt
  1. IDENT 1SS,SSD
  2. TITLE 1SS - M860 SECONDARY STORAGE DRIVER.
  3. PERIPH
  4. BASE M
  5. SST
  6. *COMMENT M860 SECONDARY STORAGE DRIVER.
  7. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  8. SPACE 4
  9. *** 1SS - M860 SECONDARY STORAGE DRIVER.
  10. * W. J. STURGIS 82/02/18.
  11. SPACE 4,10
  12. *** 1SS PROCESSES REQUESTS FROM SSEXEC TO READ AND WRITE
  13. * DATA AND MESSAGES. MULTIPLE FUNCTIONS CAN BE PROCESSED
  14. * BY 1SS.
  15. SPACE 4,10
  16. *** CALL
  17. *
  18. *T IR 18/ *1SS* ,6/ ,12/ CHB CHA ,6/ FC ,18/ ADDR
  19. *
  20. *T ADDR 18/ MSG. OUT FET ,18/ RECALL ADDR. ,12/ EQ ,11/ CN ,1/S
  21. *T,ADDR+1 42/ ,18/DATA FET ADDR
  22. *
  23. * WHERE
  24. * ADDR = PARAMETER ADDRESS.
  25. * FC = FUNCTION CODE.
  26. * 1 = ENABLE TDAM BUFFER.
  27. * 2 = MESSAGE BUFFER(S) TO PROCESS.
  28. * 3 = MESSAGE AND DATA BUFFERS TO PROCESS.
  29. * 4 = SET CHANNELS IN EST ENTRY.
  30. * EQ = EST ORDINAL.
  31. * CHB CHA = NEW CHANNELS TO BE SET IN EST FOR EQ.
  32. * MSG. OUT FET = FET USED TO SEND MESSAGES TO THE M860.
  33. * (MSG. OUT FET - 1) POINTER TO MESSAGE INPUT FET.
  34. * RECALL = CPU DRIVER RECALL WORD
  35. * DATA FET = FET FOR DATA I/O.
  36. * CN = CONTROLLER ORDINAL IN UDT.
  37. * S = 1, PPU ACTIVE (SET BY SSEXEC), CLEARED BY 1SS WHEN
  38. * DROPPING OUT.
  39. SPACE 4,10
  40. *** MESSAGE FET
  41. *
  42. *T MFET 42/ ,8/ ERRC ,9/ ,1/C
  43. *T, 42/ ,18/ FIRST
  44. *T, 42/ ,18/ IN
  45. *T, 42/ ,18/ OUT
  46. *T, 12/ CH ,6/ ,18/ ABUF ,6/ ,18/ LIMIT
  47. *T, 60/ EBUF
  48. *
  49. * WHERE.
  50. * ERRC = ERROR RETURN CODE.
  51. * C = COMPLETE FLAG.
  52. * FIRST = FIRST POINTER.
  53. * IN = IN POINTER.
  54. * OUT = OUT POINTER.
  55. * CH = CHANNEL TO USE.
  56. * LIMIT = LIMIT POINTER.
  57. * ABUF = AUX BUFFER FOR LONG ASSOCIATED DATA BLOCKS.
  58. * EBUF = HARDWARE ERROR STATUS BUFFER.(5 WORDS)
  59. SPACE 4,10
  60. *** DATA FET.
  61. *
  62. *T DFET 42/ ,8/ ERRC ,1/E,8/ FUNC ,1/C
  63. *T, 42/ ,18/ FIRST
  64. *T, 42/ ,18/ IN
  65. *T, 42/ ,18/ OUT
  66. *T, 12/ UNIT,29/ ,1/T ,18/ LIMIT
  67. *T, 60/ EBUF
  68. *T, 60/ HBUF
  69. *
  70. * WHERE.
  71. * ERRC = ERROR RETURN CODE.
  72. * E = EOI STATUS(READ).
  73. * FUNC = FUNCTION CODE.
  74. * READ, WRITE, REWIND/UNLOAD.
  75. * C = COMPLETE STATUS.
  76. * FIRST = FIRST POINTER.
  77. * IN = IN POINTER.
  78. * OUT = OUT POINTER.
  79. * UNIT = UNIT NUMBER.
  80. * T = TERMINATE STREAMING FLAG.
  81. * LIMIT = LIMIT POINTER.
  82. * EBUF = HARDWARE ERROR STATUS BUFFER(5 WORDS).
  83. * HBUF = STRIPE HEADER BUFFER(20 WORDS).
  84. SPACE 4,10
  85. *** STRIPE FORMAT.
  86. *
  87. * EACH M860 STRIPE IS CAPABLE OF HOLDING
  88. * 6530 8 BIT BYTES OF DATA.
  89. * 1SS WRITES A 150 BYTE HEADER, 483 - 6279 BYTES OF DATA
  90. * AND EITHER A TAPEMARK (EOI) OR A 90 BYTE TRAILER.
  91. * DATA CONSISTS OF FROM 1 TO 13 DISK SECTORS WITH PARTIAL
  92. * NOS CONTROL WORDS. THE FIRST CONTROL WORD HAS ONLY
  93. * THE PP WORD COUNT OF ACTUAL DATA AND THE SECOND CONTROL
  94. * WORD ONLY HAS THE LEVEL NUMBER. THE REST OF THE CONTROL
  95. * WORDS ARE RECONSTRUCTED BY 1SS BEFORE WRITING THE
  96. * DATA TO THE CM BUFFER.
  97. SPACE 4,10
  98. *** JOB DAYFILE MESSAGES.
  99. *
  100. * *1SS ABT.* FIELD LENGTH ERROR.
  101. * *1SS INVALID FUNCTION.* INPUT REG. FUNCTION INVALID.
  102. *
  103. *
  104. * IF SENSE SWITCH 1 IS ON, TRACE AND TIMING MESSAGES
  105. * ARE ISSUED TO THE CONTROL POINT DAYFILE.
  106. SPACE 4,10
  107. * COMMON DECKS.
  108.  
  109.  
  110. LIST X
  111. *CALL COMBCDD
  112. LIST -X
  113. *CALL COMPMAC
  114. *CALL COMPCHI
  115. TITLE ASSEMBLY CONSTANTS.
  116. * DIRECT CELLS.
  117.  
  118.  
  119. LOC 16
  120. CL BSS 1 FUNCTION TIMEOUT CLOCK
  121. EO BSS 1 END OF OPERATION TIMEOUT CLOCK
  122. CN BSS 5 CM WORD BUFFER
  123. BC BSS 1 BYTE COUNT
  124. EC BSS 1 ERROR CODE
  125. FE BSS 2 FET ADDRESS
  126. IC BSS 1 IDLE COUNTER
  127. MW BSS 1 MESSAGE WAITING FLAG
  128. RC BSS 1 RECALL COUNT
  129. ST BSS 1 GENERAL STATUS
  130. WC BSS 1 WORD COUNT
  131. ES BSS 1 EST ORDINAL OF CONTROL UNIT
  132. EQ BSS 1 EQUIPMENT NUMBER OF CONTROL UNIT
  133. PC BSS 1 PRU COUNT WITHIN A DATA STRIPE
  134. UN BSS 1 UNIT NUMBER FOR DATA I/O
  135. SC BSS 1 STRIPE COUNTER
  136. DR BSS 2 CPU DRIVER RECALL ADDRESS
  137. LOC *O
  138. LOC 60
  139. FT BSS 2 FIRST POINTER
  140. IN BSS 2 IN POINTER
  141. OT BSS 2 OUT POINTER
  142. LM BSS 2 LIMIT POINTER
  143. LOC *O
  144. SPACE 4,10
  145. * EQUATES.
  146.  
  147.  
  148. CH EQU 0 DEFAULT CHANNEL NUMBER
  149. DSTL EQU 24 DETAIL (FSC) STATUS LENGTH
  150. BRTL EQU 77 BUSY RETRY LIMIT
  151. EOPL EQU 480D END OF OP. TIME LIMIT
  152. FTOL EQU 360D FUNCTION TIMEOUT LIMIT
  153. GSTL EQU 3 GENERAL STATUS LENGTH
  154. IPLM EQU 400D IDLE PASS LIMIT BEFORE DROP PP
  155. MSBC EQU 43D LENGTH OF MESSAGE IN PP BYTES
  156. MSWC EQU 9D LENGTH OF MESSAGE IN CM WORDS
  157. MXAD EQU 3601 MAX ASSOCIATED DATA BYTE COUNT + 1
  158. MXWC EQU 256D CM WORD COUNT OF MAX ASSOC DATA
  159. PRUL EQU 66D LENGTH OF PRU WITH CONTROL WORDS
  160. SPACE 4,20
  161. * HARDWARE FUNCTION CODES.
  162.  
  163.  
  164. RELF EQU 1 RELEASE UNIT
  165. CMRF EQU 2 CONNECT FOR MESSAGE READ
  166. CMWF EQU 3 CONNECT FOR MESSAGE WRITE
  167. REWF EQU 10 REWIND
  168. STPF EQU 11 STOP TAPE MOTION
  169. GSTF EQU 12 GENERAL STATUS
  170. RISF EQU 14 INTERRUPT STATUS
  171. CONF EQU 20 CONNECT TO VIRTUAL TAPE UNIT
  172. REDF EQU 40 READ DATA
  173. MRDF EQU 43 MESSAGE READ
  174. WRTF EQU 50 WRITE DATA
  175. WTMF EQU 51 WRITE TAPE MARK
  176. MWRF EQU 53 MESSAGE WRITE
  177. RUNF EQU 110 REWIND/UNLOAD
  178. CDEF EQU 120 CHECK FOR DEVICE END
  179. WUMF EQU 140 WAIT UNIT MOUNTED
  180. SWRF EQU 250 SHORT WRITE
  181. FSTF EQU 312 FSC STATUS
  182. MCLF EQU 414 MASTER CLEAR
  183. DSTF EQU 704 DIAGNOSTIC STATUS
  184. SPACE 4,10
  185. * NOS 2 COMPATIBILITY.
  186.  
  187.  
  188. IF -DEF,HNGM,1
  189. HNGM EQU MXFM HANG PPU MONITOR FUNCTION
  190. SPACE 4,10
  191. TITLE LOCAL MACROS.
  192. SPACE 4,10
  193. ** LOCAL MACROS.
  194.  
  195. SPACE 4,10
  196. ** ERROR - PROCESS ERROR.
  197. *
  198. * ERROR EC
  199. *
  200. * EC ERROR CODE.
  201.  
  202.  
  203. PURGMAC ERROR
  204.  
  205. ERROR MACRO E
  206. MACREF ERROR
  207. LDN E
  208. RJM ERR
  209. ENDM
  210. FETA SPACE 4,10
  211. ** FETA - LOAD ABSOLUTE FET ADDRESS.
  212. *
  213. * FETA A
  214. *
  215. * A = OFFSET INTO FET.
  216.  
  217.  
  218. PURGMAC FETA
  219.  
  220. FETA MACRO A
  221. MACREF FETA
  222. LDD FE
  223. SHN 14
  224. ADD FE+1
  225. IFC NE,$A$$,1
  226. ADN A
  227. RJM CFL
  228. ENDM
  229. LDCA SPACE 4,10
  230. ** LDCA - LOAD CENTRAL ADDRESS.
  231. *
  232. * LDCA A
  233. *
  234. * (A, A+1) = RELATIVE ADDRESS.
  235.  
  236.  
  237. PURGMAC LDCA
  238.  
  239. LDCA MACRO A
  240. MACREF LDCA
  241. LDD A
  242. LPN 77
  243. SHN 14
  244. ADD A+1
  245. RJM CFL CHECK ADDRESS
  246. ENDM
  247. TITLE MAIN ROUTINE.
  248. ** SSD - MAIN ROUTINE.
  249.  
  250.  
  251. ORG PPFW
  252. SSD RJM PRS PRESET
  253.  
  254. * PROCESS CYBER MESSAGES.
  255.  
  256. SSD1 LDC 0 MESSAGE OUTPUT FET ADDRESS
  257. SSDA EQU *-1
  258. STD FE+1
  259. SHN -14
  260. STD FE
  261. RJM WMS WRITE ANY MESSAGES TO M862
  262.  
  263. * PROCESS M860 MESSAGES.
  264.  
  265. SSD2 LDC 0 MESSAGE INPUT FET ADDRESS
  266. SSDB EQU *-1
  267. STD FE+1
  268. SHN -14
  269. STD FE
  270. RJM CKM CHECK FOR MESSAGE
  271.  
  272. * PROCESS DATA I/O.
  273.  
  274. LDCA IR+3
  275. ADN 1
  276. CRD CM READ DATA FET ADDRESS
  277. LDD CM+3
  278. STD FE
  279. SHN 14
  280. ADD CM+4
  281. ZJN SSD4 IF NO DATA FET
  282. STD FE+1
  283. RJM CFL CHECK FIELD LENGTH
  284. RJM PDF PROCESS DATA FET
  285.  
  286. * CHECK FOR ACTIVITY.
  287.  
  288. SSD4 LDD MW
  289. ZJN SSD6 IF NO ACTIVITY
  290. LDC IPLM
  291. STD IC INITIALIZE IDLE PASS LIMIT
  292. SSD5 LJM SSD1 LOOK FOR WORK TO DO
  293.  
  294. SSD6 SOD IC
  295. ZJN SSD7 IF IDLE PASS LIMIT
  296. PAUSE
  297. LDD CM+1
  298. NJN DPP IF ERROR FLAG
  299. DELAY
  300. UJN SSD5 LOOK FOR WORK
  301.  
  302. SSD7 LDN ZERL
  303. CRD CM
  304. AOD CM+4
  305. LDCA DR
  306. CWD CM ACTIVATE CPU DRIVER
  307.  
  308. DPP LDCA IR+3
  309. CRD CM READ AVTIVITY WORD
  310. LDD CM+4
  311. SCN 1 CLEAR PPU ACTIVE
  312. STD CM+4
  313. LDCA IR+3
  314. CWD CM
  315. DPP1 MONITOR DPPM
  316. LJM PPR EXIT TO PPR
  317. ERR SPACE 4,10
  318. ** ERR - PROCESS ERROR.
  319. *
  320. * ENTRY (A) = ERROR CODE.
  321. *
  322. * EXIT TO *DPP*.
  323. *
  324. * CALLS MCL, SCB.
  325. *
  326. * USES EC.
  327.  
  328.  
  329. ERR CON 0 CALLERS ADDRESS FOR DEBUG
  330. STD EC
  331. SBN RCHWET
  332. MJN ERR4 IF NOT HARDWARE ERROR TYPE
  333. SBN RCMCLR-RCHWET
  334. MJN ERR3 IF NO MASTERCLEAR REQUIRED
  335. RJM MCL MASTER CLEAR FSC
  336. ERR3 LDN ERRL
  337. STD CM
  338. FETA ERRW
  339. CWM GSTS,CM WRITE STATUS TO FET
  340. ERR4 RJM REL RELEASE CHANNEL
  341. TRCA LDN 0
  342. NJN ERR5 IF TRACE MODE
  343. LDD EC
  344. SBN RCHWET
  345. MJN ERR6 IF NOT HARDWARE ERROR
  346. ERR5 EXECUTE 2SS LOG ERROR
  347. ERR6 LDN 0 ERROR STATUS ONLY
  348. RJM SCB SET FET COMPLETE
  349. LDN ZERL
  350. CRD CM
  351. AOD CM+4
  352. LDCA DR
  353. CWD CM RECALL CPU DRIVER
  354. LJM DPP DROP PP
  355. TITLE FUNCTION PROCESSORS.
  356. PDF SPACE 4,10
  357. ** PDF - PROCESS DATA FET.
  358. *
  359. * ENTRY (FE - FE+1) = FET ADDRESS.
  360. *
  361. * EXIT DATA FET REQUEST PROCESSED.
  362. *
  363. * CALLS IBP, RDA, RUL, WDA.
  364. *
  365. * USES T1, CM - CM+4, CN - CN+4, ES, EQ, CH, PC, UN.
  366.  
  367.  
  368. PDF SUBR ENTRY EXIT
  369. FETA
  370. CRD CM READ REQUEST WORD
  371. ADN 4
  372. CRD CN READ LIMIT WORD
  373. LDD CM+4
  374. SHN 21-0
  375. MJN PDFX IF NO FUNCTION
  376. SHN 22-21
  377. LPC 777
  378. STD CM+4
  379. LDC TFCN TABLE OF LEGAL FUNCTIONS
  380. STD T1
  381. PDF1 LDI T1
  382. NJN PDF2 IF NOT END OF TABLE
  383. ERROR RCILLF ILLEGAL FUNCTION
  384.  
  385. PDF2 LMD CM+4
  386. ZJN PDF3 IF FUNCTION FOUND
  387. LDN 2
  388. RAD T1 ADVANCE TABLE ENTRY
  389. UJN PDF1 CHECK NEXT ENTRY
  390.  
  391. PDF3 LDM 1,T1 PROCESSOR ADDRESS
  392. STM PDFA
  393. LDD CN
  394. STD UN SET UNIT NUMBER
  395. SBN 17+1
  396. MJN PDF4 IF LEGAL UNIT NUMBER
  397. ERROR RCILLU ILLEGAL UNIT NUMBER
  398.  
  399. PDF4 RJM IBP INITIALIZE BUFFER POINTERS
  400. RJM ** PROCESS FUNCTION
  401. PDFA EQU *-1
  402. LJM PDFX RETURN
  403. TFCN SPACE 4,10
  404. ** TFCN - TABLE OF LEGAL FUNCTIONS AND PROCESSORS.
  405. *
  406. *T,TFCN 12/ FUNCTION CODE ,12/PROC. ADDRESS
  407.  
  408.  
  409. TFCN BSS 0 TABLE OF LEGAL FUNCTION REQUESTS
  410. CON FCRUN,RUN REWIND/UNLOAD
  411. CON FCCWR,RDA CONTROL WORD READ DATA
  412. CON FCCWW,WDA CONTROL WORD WRITE DATA
  413. CON 0 END OF TABLE
  414. RDA SPACE 4,10
  415. ** RDA - READ DATA IN STRIPE FORMAT.
  416. *
  417. * ENTRY FET INITIALIZED.
  418. *
  419. * EXIT EOI SET IN FET, ERROR OTHERWISE.
  420. *
  421. * CALLS CIB, CON, DV5, FCN, REL, SCB, ST, WBB.
  422. *
  423. * USES T0, T1, CM - CM+4, AC, BC, PC, RC, WC.
  424.  
  425.  
  426. RDA SUBR ENTRY/EXIT
  427. TRCB LDN 0
  428. ZJN RDA0 IF NOT TRACE MODE
  429. LDC =C*RDA.*+CPON
  430. RJM DFM
  431. RDA0 LDN 0
  432. STD SC CLEAR STRIPE COUNTER
  433. STD PC CLEAR PRU COUNT
  434. STM PBUF INITIALIZE FIRST CONTROL WORD
  435. STM PBUF+2
  436. STM PBUF+3
  437. LDD HN
  438. STM PBUF+1
  439. LDN ZERL INITIALIZE SECOND CONTROL WORD
  440. CRM PBUF+PRUL*5-5,ON
  441. RJM CON CONNECT UNIT
  442. RDA1 RJM CIB CHECK INPUT BUFFER
  443. ADC -PRUL*PRUPST
  444. PJN RDA1.1 IF ROOM FOR FULL STRIPE
  445. LDN 0 NO READ IN PROGRESS
  446. RJM RCL RECALL CPU AND PAUSE
  447. UJN RDA1 CHECK AGAIN
  448.  
  449. RDA1.1 LDN REDF
  450. RJM FCN READ FUNCTION
  451. ACN CH
  452. LDC HDRL*5
  453. STD BC
  454. IAM HBUF,CH INPUT HEADER
  455. NJN RDA2 IF NOT FULL BLOCK
  456. LDN HDRL
  457. STD T1
  458. FETA HDRW
  459. CWM HBUF,T1 WRITE HEADER TO CM
  460. LDN BRTL
  461. STM CBSA INITIALIZE RETRY COUNT
  462. LJM RDA7 READ DATA
  463.  
  464. RDA2 STD WC SAVE REMAINDER
  465. DCN CH+40
  466. LDN GSTF
  467. RJM STS WAIT END OF OPERATION
  468. SHN 21-13
  469. PJN RDA4 IF NO ALERT
  470. LDM STEC
  471. LPC -2000B
  472. NJN RDA3 IF EC .NE. 0 OR PARITY ERROR
  473. LDM FSTS+4
  474. SHN 21-1
  475. PJN RDA3 IF NOT TAPE BOTTOM RIGHT
  476. ERROR RCENDV
  477.  
  478. RDA3 RJM CBS CHECK BUSY STATUS
  479. NJN RDA3.1 IF NOT TO RETRY
  480. LJM RDA1 RETRY READ
  481.  
  482. RDA3.1 ERROR RCSTER STATUS ERROR
  483.  
  484. RDA4 LDD BC
  485. LMD WC
  486. NJN RDA5 IF NOT EMPTY BLOCK
  487. LDD ST
  488. SHN 21-4
  489. MJN RDA6 IF EOI
  490. LDN REDF
  491. RJM FCN READ FUNCTION
  492. ACN CH
  493. LDN 1
  494. IAM CM,CH
  495. DCN CH+40
  496. LDN GSTF
  497. RJM STS WAIT END OF OPERATION
  498. SHN 21-4
  499. MJN RDA6 IF EOI
  500. RDA5 ERROR RCCHIN CHANNEL HANG ERROR
  501.  
  502. RDA6 LDD TH
  503. RJM SCB SET COMPLETE WITH EOI
  504. LJM RDAX RETURN
  505.  
  506. RDA7 BSS 0
  507. RDA8 LDN 0
  508. STD RC CLEAR RECALL COUNT
  509. LDC 500+2
  510. STD BC
  511. IAM PBUF+4,CH
  512. ZJN RDA9 IF FULL PRU
  513. LJM RDA2 CHECK FOR EOI
  514.  
  515. RDA9 LDM PBUF+4
  516. ADC -501
  517. MJN RDA11 IF BYTE COUNT OK
  518. RDA10 ERROR RCCWER CONTROL WORD ERROR
  519.  
  520. RDA11 ADC 501
  521. RJM DV5
  522. ADN 2 ADD CONTROL WORDS
  523. STD WC
  524. SBN 2
  525. STD T0
  526. SHN 2 *4
  527. ADD T0 *5
  528. LMM PBUF+4
  529. NJN RDA10 IF NOT EXACT MULTIPLE OF 5
  530. RJM WBB WRITE PRU
  531. AOD PC
  532. SBN PRUPST
  533. ZJN RDA12 IF FULL STRIPE
  534. ADN PRUPST/2
  535. NJN RDA11.1 IF NOT 1/2 STRIPE READ
  536. LDN DRCM
  537. STD CM
  538. LDD OA
  539. CWD CM RECALL CPU DRIVER
  540. RDA11.1 LJM RDA7 READ NEXT PRU
  541.  
  542. RDA12 STD PC CLEAR PRU COUNT
  543. LDN TLRL*5
  544. STD BC
  545. IAM TBUF,CH
  546. ZJN RDA13 IF FULL TRAILER
  547. LJM RDA2 CHECK FOR EOI
  548.  
  549. RDA13 DCN CH+40
  550. LDN GSTF
  551. RJM STS WAIT END OF OP
  552. SHN 21-13
  553. PJN RDA14 IF NO ALERT
  554. ERROR RCSTER STATUS ERROR
  555.  
  556. RDA14 LDM TBUF
  557. SHN 21-13
  558. MJN RDA15 IF TRAILER
  559. ERROR RCHDER
  560.  
  561. RDA15 SHN 13-12
  562. PJN RDA16 IF NOT END OF VOLUME
  563. ERROR RCENDV END OF VOLUME RETURN
  564.  
  565. RDA16 SHN 12+1
  566. LPC 3777 CLEAR TRAILER FLAG
  567. STM TBUF
  568. LDN TLRL
  569. STD T1
  570. FETA HDRW
  571. CWM TBUF,T1
  572. LDN DRCM
  573. STD CM
  574. LDD OA
  575. CWD CM RECALL CPU
  576. AOD SC
  577. SBN STRPAU
  578. NJN RDA17 IF NOT FULL AU
  579. STD SC
  580. AOD RC
  581. * LDN 1 FLAG READ
  582. RJM RCL PAUSE AND CHECK ERROR FLAG
  583. RDA17 FETA 4
  584. CRD CM READ LIMIT WORD
  585. LDD CM+3
  586. SHN -6
  587. ZJN RDA18 IF TERMINATE FLAG NOT SET
  588. ERROR RCTERF TERMINATE FLAG RETURN
  589.  
  590. RDA18 LDD SC
  591. NJN RDA19 IF NOT END OF AU
  592. RJM CMG CHECK FOR MESSAGES
  593. RDA19 LJM RDA1 CONTINUE READ
  594. RMS SPACE 4,10
  595. ** RMS - READ MESSAGE AND ASSOCIATED DATA.
  596. *
  597. * ENTRY MESSAGE WAITING INTERRUPT FROM M862.
  598. * CHANNEL RESERVED.
  599. *
  600. * EXIT (A) .NE. 0, IF NO BUFFER SPACE FOR MESSAGE.
  601. * (A) .EQ. 0, IF MESSAGE READ.
  602. *
  603. * CALLS CIB, DV3, DV5, FCN, IBP, REL, STS, WMB.
  604. *
  605. * USES BC, CM - CM+4, FE, FE+1, WC, T1, T2, T4, T5, T6, T7.
  606.  
  607.  
  608. RMS0 RJM REL RELEASE CHANNEL
  609. LDN ZERL
  610. CRD CM
  611. LDD IN
  612. STD CM+3
  613. LDD IN+1
  614. STD CM+4
  615. FETA 2
  616. CWD CM UPDATE IN POINTER IN FET
  617. LDN ZERL
  618. CRD CM
  619. AOD CM+4
  620. LDCA DR
  621. CWD CM RECALL CPU DRIVER
  622. MONITOR DRCM
  623. * LDN 0 SET MESSAGE READ
  624.  
  625. RMS SUBR ENTRY/EXIT
  626. RJM IBP INITIALIZE BUFFER PARAMETERS
  627. RJM CIB CHECK INPUT BUFFER
  628. ADC -MSWC-MXWC
  629. PJN RMS1 IF ROOM IN BUFFER
  630. RJM REL RELEASE CHANNEL
  631. LDN ZERL
  632. CRD CM
  633. AOD CM+4
  634. LDCA DR
  635. CWD CM RECALL CPU DRIVER
  636. MONITOR DRCM RECALL CPU
  637. LDN 1 SET MESSAGE WAITING FOR BUFFER
  638. UJN RMSX RETURN
  639.  
  640. RMS1 LDN CMRF
  641. RJM CMD CONNECT TO MESSAGE READ DEVICE
  642. LDN MRDF
  643. RJM FCN ISSUE MESSAGE READ FUNCTION
  644. LDN MSBC
  645. ACN CH
  646. RMS2 IJM RMS3,CH IF ERROR
  647. EJM RMS2,CH IF DATA NOT AVAILABLE
  648. RMS3 IAM BUFR,CH READ MESSAGE
  649. DCN CH+40
  650. STD BC SAVE REMAINDER
  651. LMN MSBC
  652. NJN RMS3.1 IF NOT EMPTY MESSAGE
  653. LJM RMS0 EXIT
  654.  
  655. RMS3.1 LDN GSTF
  656. RJM STS WAIT END OF OPERATION
  657. SHN 21-13
  658. PJN RMS4 IF NO ERROR
  659. ERROR RCSTER STATUS ERROR
  660.  
  661. RMS4 LDD BC
  662. ZJN RMS5 IF FULL BLOCK
  663. ERROR RCCHIN CHANNEL HANG
  664.  
  665. RMS5 LDN MSWC
  666. STD WC
  667. RJM WMB WRITE MESSAGE TO BUFFER
  668. TRCC LDN 0
  669. ZJN RMS5.5 IF NOT TRACE MODE
  670. LDC 2RIN
  671. RJM MDF MESSAGE TO DAYFILE
  672. RJM GMT GET MESSAGE TYPE
  673. LMC 0#81
  674. NJN RMS5.5 IF NOT REWIND UNLOAD MSG
  675. RJM RUM REWIND UNLOAD MESSAGES
  676. RMS5.5 LDM BUFR+2
  677. SHN -4
  678. STD T2
  679. LDM BUFR+1
  680. LPC 377
  681. SHN 10
  682. RAD T2
  683. NJN RMS7 IF ASSOCIATED DATA BLOCK PRESENT
  684. RMS6 LJM RMS0 UPDATE FET
  685.  
  686. RMS7 ADC -MXAD
  687. PJN RMS8 IF ASSOC DATA GOES TO AUX BUFFER
  688. LDN 0
  689. STD T1
  690. STD T4 CLEAR FULL BLOCK COUNT
  691. STD T6 CLEAR AUX BUFFER ADDRESS
  692. STD T7
  693. LJM RMS10
  694.  
  695. RMS8 ADC MXAD
  696. SHN -14
  697. STD T1
  698. FETA 4
  699. CRD CM READ LIMIT WORD
  700. LDD CM+1
  701. LPN 77
  702. STD T6 SET AUX BUFFER
  703. SHN 14
  704. ADD CM+2
  705. STD T7
  706. NJN RMS9 IF AUX BUFFER PRESENT
  707. RMS8.1 LDN REDF
  708. RJM FCN ISSUE READ FUNCTION
  709. ACN CH
  710. IAN CH
  711. RJM FIN FLUSH INPUT
  712. RJM GMT GET MESSAGE TYPE
  713. LMN 0#04
  714. NJN RMS8.2 IF NOT READ CART. LABEL
  715. LJM RMS0 PUT MESSAGE IN BUFFER
  716.  
  717. RMS8.2 ERROR RCDLER DATA LENGTH ERROR
  718.  
  719. RMS9 RJM CFL CHECK ADDRESS
  720. RJM GMT GET MESSAGE TYPE
  721. LMN 0#11
  722. NJN RMS8.1 IF NOT READ WITH ERROR MESSAGE
  723. * LDN 0
  724. STD T4 CLEAR FULL BLOCK COUNT
  725. RMS10 LDD T1
  726. SHN 14
  727. ADD T2
  728. ADC -500*3/2
  729. MJN RMS11 IF NO MORE FULL BLOCKS
  730. STD T2
  731. SHN -14
  732. STD T1
  733. AOD T4 INCREMENT FULL BLOCK COUNT
  734. UJN RMS10 CHECK FOR MORE FULL BLOCKS
  735.  
  736. RMS11 LDD T2
  737. STD BC
  738. ZJN RMS12 IF NO PARTIAL BLOCK
  739. SHN 1 *2
  740. RJM DV3 DIVIDE BY 3
  741. STD BC SET PP BYTE COUNT
  742. RJM DV5 DIVIDE BY 5 = CM WORD COUNT
  743. STD T5
  744. RMS12 LDN CMRF
  745. RJM CMD RESERVE MESSAGE EVICE
  746. LDN REDF
  747. RJM FCN FUNCTION FOR READ
  748. ACN CH
  749. LDD T4
  750. NJN RMS13 IF MORE FULL BLOCKS
  751. LJM RMS19 PROCESS SHORT BLOCK
  752.  
  753. RMS13 LDC 500
  754. IAM BUFR,CH READ FULL BLOCK
  755. ZJN RMS16 IF FULL BLOCK
  756. RMS14 DCN CH+40
  757. LDN GSTF
  758. RJM STS WAIT END OF OP
  759. SHN 21-13
  760. PJN RMS15 IF NO ERROR
  761. ERROR RCSTER STATUS ERROR
  762.  
  763. RMS15 ERROR RCCHIN CHANNEL HANG
  764.  
  765. RMS16 LDD T6
  766. ADD T7
  767. NJN RMS17 IF AUX BUFFER PRESENT
  768. LDD HN
  769. STD WC
  770. RJM WMB WRITE BLOCK TO CM
  771. UJN RMS18 CHECK FOR NEXT BLOCK
  772.  
  773. RMS17 LDCA T6
  774. CWM BUFR,HN WRITE DATA TO AUX BUFFER
  775. LDD HN
  776. RAD T7
  777. SHN -14
  778. RAD T6
  779. RMS18 SOD T4
  780. ZJN RMS19 IF NO MORE FULL BLOCKS
  781. LJM RMS13 GET NEXT BLOCK
  782.  
  783. RMS19 LDD BC
  784. ZJN RMS20 IF NO PARIIAL BLOCK
  785. IAM BUFR,CH
  786. ZJN RMS20 IF ALL DATA READ
  787. LJM RMS14 CHECK STATUS
  788.  
  789. RMS20 DCN CH+40
  790. LDN GSTF
  791. RJM STS WAIT END OF OPERATION
  792. SHN 21-13
  793. PJN RMS21 IF NOT ALERT
  794. ERROR RCSTER STATUS ERROR RETURN
  795.  
  796. RMS21 LDD BC
  797. ZJN RMS23 IF NO PARTIAL BLOCK
  798. LDD T6
  799. ADD T7
  800. NJN RMS22 IF AUX BUFFER PRESENT
  801. LDD T5
  802. STD WC
  803. RJM WMB WRITE DATA TO BUFFER
  804. UJN RMS23 UPDATE FET
  805.  
  806. RMS22 LDCA T6
  807. CWM BUFR,T5 WRITE DATA TO AUX BUFFER
  808. RMS23 LJM RMS0 UPDATE FET
  809. RUM SPACE 4,10
  810. ** RUM - REWIND UNLOAD MESSAGES
  811. *
  812. * ENTRY (BUFR) CONTAINS REWIND UNLOAD MESSAGE
  813. *
  814. * EXIT PHYSICAL AND LOGICAL STRIPES TO DAYFILE
  815. *
  816. * CALLS CHN, DFM.
  817. *
  818. * USES T0.
  819.  
  820.  
  821. RUM SUBR ENTRY/EXIT
  822. LDM BUFR+35
  823. SHN -8D
  824. STD T0
  825. LDM BUFR+34
  826. SHN 4
  827. LMD T0
  828. RJM CHN CONVERT PHYSICAL STRIPE
  829. LDC 2R P
  830. STM RUMA
  831. LDC RUMA+CPON
  832. RJM DFM ISSUE MESSAGE
  833. LDM BUFR+36
  834. LPN 0#F
  835. SHN 14
  836. LMM BUFR+37
  837. RJM CHN CONVEWT LOGICAL STRIPE
  838. LDC 2R L
  839. STM RUMA
  840. LDC RUMA+CPON
  841. RJM DFM ISSUE MSSAGE
  842. LJM RUMX RETURN
  843.  
  844.  
  845. RUMA DIS ,* XS = 1234.*
  846. CHN SPACE 4,10
  847. ** CHN - CONVERT HEX NUMBER
  848. *
  849. * ENTRY (A) = 16 BIT NUMBER
  850. *
  851. * EXIT (RUMA+3, RUMA+4) = DISPLAY CODE HEX NUMBER
  852. *
  853. * CALLS CTH.
  854. *
  855. * USES T1.
  856.  
  857.  
  858. CHN SUBR ENTRY/EXIT
  859. STD T1
  860. SHN -14
  861. RJM CTH CONVERT 1ST DIGIT
  862. SHN 6
  863. STM RUMA+3
  864. LDD T1
  865. SHN -8D
  866. RJM CTH CONVERT 2ND DIGIT
  867. RAM RUMA+3
  868. LDD T1
  869. SHN -4
  870. RJM CTH CONVERT 3RD DIGIT
  871. SHN 6
  872. STM RUMA+4
  873. LDD T1
  874. RJM CTH CONVERT 4TH DIGIT
  875. RAM RUMA+4
  876. UJN CHNX RETURN
  877. RUN SPACE 4,10
  878. ** RUN - REWIND UNLOAD UNIT.
  879. *
  880. * ENTRY (UN) = UNIT NUMBER.
  881. *
  882. * EXIT REWIND UNLOAD ISSUED.
  883. *
  884. * CALLS FCN, RES, SCB.
  885. *
  886. * USES CM - CM+4.
  887.  
  888.  
  889. RUN SUBR ENTRY/EXIT
  890. TRCD LDN 0
  891. ZJN RUN0.0 IF NOT TRACE MODE
  892. LDC =C*RUN.*+CPON
  893. RJM DFM
  894. RUN0.0 RJM RES RESERVE CHANNEL
  895. LDN CONF
  896. ADD UN
  897. RJM FCN CONNECT UNIT
  898. LDN GSTF
  899. RJM STS GET STATUS
  900. SHN 21-11
  901. MJN RUN0 IF UNIT NOT CONNECTED
  902. LDC RUNF
  903. RJM FCN ISSUE REWIND UNLOAD
  904. LDN GSTF
  905. RJM STS GET STATUS
  906. SHN 21-13
  907. PJN RUN1 IF NOT ALERT
  908. RUN0 ERROR RCSTER STATUS ERROR
  909.  
  910. RUN1 LDN 0
  911. RJM SCB SET FET COMPLETE
  912. TRCE LDN 0
  913. ZJN RUN2 IF NOT TRACE MODE
  914. LDC RTCL
  915. CRD CM READ MILLISECOND CLOCK
  916. LDN 0
  917. STD CM CLEAR SECOND COUNT
  918. STD CM+1
  919. STD CM+2 ONLY USE 24 BITS
  920. LDD MA
  921. CWD CM
  922. LDN 1
  923. STD CM+1 ONLY 1 VALUE TO BE CONVERTED
  924. MONITOR RDCM CONVERT TO F10.3
  925. LDD MA
  926. CRM RUNB,ON
  927. LDC RUNA+CPON
  928. RJM DFM ISSUE DAYFILE MESSAGE
  929. RUN2 LJM RUNX
  930.  
  931.  
  932. RUNA DATA 12HRUNL
  933. RUNB BSS 6 MILLISECOND CLOCK
  934. WDA SPACE 4,10
  935. ** WDA - WRITE DATA IN STRIPE FORMAT.
  936. *
  937. * ENTRY (UN) = UNIT NUMBER.
  938. *
  939. * EXIT AT EOI, ERROR OTHERWISE.
  940. *
  941. * CALLS CFS, DV5, FCN, RBB, REL, SCB, STS.
  942. *
  943. * USES T7, CM - CM+4, AC, PC, RC, WC.
  944.  
  945.  
  946. WDA SUBR ENTRY/EXIT
  947. TRCF LDN 0
  948. ZJN WDA0.0 IF NOT TRACE MODE
  949. LDC =C*WDA.*+CPON
  950. RJM DFM
  951. WDA0.0 LDN 0
  952. STD SC CLEAR STRIPE COUNT
  953. STD PC CLEAR PRU COUNT
  954. LDN HDRL
  955. STD T1
  956. LDN TLRL
  957. STD T2
  958. FETA HDRW
  959. CRM HBUF,T1 READ HEADER
  960. SBN HDRL
  961. CRM TBUF,T2 READ TRAILER
  962. LDC 4000
  963. RAM TBUF SET TRAILER FLAG
  964. RJM CON CONNECT UNIT
  965. WDA0 RJM CFS CHECK FOR FULL STRIPE
  966. LDN WRTF
  967. RJM FCN WRITE FUNCTION
  968. ACN CH
  969. LDC HDRL*5
  970. OAM HBUF,CH OUTPUT HEADER
  971. NJN WDA1 IF NOT ALL DATA OUTPUT
  972. LJM WDA4 CONTINUE WRITE
  973.  
  974. WDA1 DCN CH+40
  975. LDN GSTF
  976. RJM STS
  977. SHN 21-13
  978. MJN WDA2 IF ALERT
  979. ERROR RCCHOT CHANNEL HANG RETURN
  980.  
  981. WDA2 LDM FSTS+4
  982. SHN 21-1
  983. PJN WDA3 IF NOT TAPE BOTTOM RIGHT
  984. LDM STEC
  985. NJN WDA3 IF EC .NE. 0 OR PARITY ERROR
  986. ERROR RCTBRT TAPE BOTTOM RIGHT ERROR
  987.  
  988. WDA3 RJM CBS CHECK BUSY STATUS
  989. NJN WDA3.1 IF NOT TO RETRY
  990. FETA 3
  991. CRD CM RESET OUT POINTER
  992. LDD CM+3
  993. STD OT
  994. LDD CM+4
  995. STD OT+1
  996. LJM WDA0 RETRY WRITE
  997.  
  998. WDA3.1 ERROR RCSTER STATUS ERROR
  999.  
  1000. WDA4 BSS 0
  1001. WDA5 LDN BRTL
  1002. STM CBSA RESET RETRY COUNT
  1003. LDCA OT
  1004. CRD CM READ CONTROL WORD
  1005. LDD CM
  1006. SHN 21-12
  1007. PJN WDA9 IF NOT EOI
  1008. WDA6 DCN CH+40
  1009. LDN GSTF
  1010. RJM STS GET GENERAL STATUS
  1011. SHN 21-13
  1012. PJN WDA8 IF NO ALERT
  1013. WDA7 LJM WDA2 CHECK END OF TAPE
  1014.  
  1015. WDA8 LDN WTMF
  1016. RJM FCN WRITE TAPE MARK
  1017. LDN 1
  1018. STD WC
  1019. RJM RMB READ MEMORY BUFFER
  1020. RJM UCO UPDATE CENTRAL OUT
  1021. LDN GSTF
  1022. RJM STS GET STATUS
  1023. SHN 21-13
  1024. MJN WDA7 IF ALERT SET
  1025. LDN 0
  1026. RJM SCB SET FET COMPLETE
  1027. LJM WDAX RETURN
  1028.  
  1029. WDA9 LDD CM+4
  1030. ADC -501
  1031. MJN WDA10 IF BYTE COUNT OK
  1032. ERROR RCCWER CONTROL WORD ERROR
  1033.  
  1034. WDA10 LDD CM+4
  1035. RJM DV5
  1036. ADN 2 ADD CONTROL WORDS
  1037. STD WC
  1038. RJM RMB READ MEMORY BUFFER
  1039. LDC 500+2
  1040. OAM PBUF+4,CH
  1041. ZJN WDA11 IF FULL BLOCK
  1042. LJM WDA1 CHECK FOR HANG
  1043.  
  1044. WDA11 RJM UCO UPDATE CENTRAL OUT
  1045. AOD PC ADVANCE PRU COUNT
  1046. SBN PRUPST
  1047. ZJN WDA12 IF FULL STRIPE
  1048. ADN PRUPST/2
  1049. NJN WDA11.1 IF NOT TIME TO RECALL CPU
  1050. LDN DRCM
  1051. STD CM
  1052. LDD OA
  1053. CWD CM
  1054. WDA11.1 LJM WDA4 GET NEXT PRU
  1055.  
  1056. WDA12 STD PC RESET PRU COUNT
  1057. STD RC RESET RECALL COUNT
  1058. WDA13 RJM COB CHECK OUTPUT BUFFER
  1059. NJN WDA14 IF DATA
  1060. * LDN 0 FLAG WRITE
  1061. RJM RCL RECALL CPU
  1062. UJN WDA13 TRY AGAIN
  1063.  
  1064. WDA14 LDCA OT
  1065. CRD CM
  1066. LDD CM
  1067. SHN 21-12
  1068. PJN WDA15 IF NOT EOI
  1069. LJM WDA6 CHECK FOR ERROR AND WRITE TAPE MARK
  1070.  
  1071. WDA15 LDN TLRL*5
  1072. OAM TBUF,CH
  1073. ZJN WDA16 IF FULL BLOCK
  1074. LJM WDA1 CHECK FOR HANG
  1075.  
  1076. WDA16 DCN CH+40
  1077. LDN GSTF
  1078. RJM STS GET STATUS
  1079. SHN 21-13
  1080. PJN WDA18 IF NO ERROR
  1081. LJM WDA2 CHECK FOR TAPE BOTTOM RIGHT
  1082.  
  1083. WDA18 SHN 13-3
  1084. PJN WDA20 IF NOT EOT
  1085. LDM TBUF
  1086. SHN 21-12
  1087. PJN WDA19 IF NOT ALREADY SET EOV TRAILER
  1088. ERROR RCENDV END OF VOLUME
  1089.  
  1090. WDA19 SHN 12+1 REPOSITION
  1091. ADC 2000
  1092. STM TBUF SET END OF VOLUME FLAG
  1093. WDA20 AOM HBUF+4 INCREMENT STRIPE IN FILE
  1094. STM TBUF+4
  1095. SHN -14
  1096. RAM HBUF+3
  1097. STM TBUF+3
  1098. AOM HBUF+1*5+4 INCREMENT STRIPE IN VOLUME
  1099. STM TBUF+1*5+4
  1100. LDN 2
  1101. STD T1
  1102. FETA HDRW
  1103. CWM HBUF,T1
  1104. LDN DRCM
  1105. STD CM
  1106. LDD OA
  1107. CWD CM RECALL CPU
  1108. AOD SC
  1109. SBN STRPAU
  1110. NJN WDA21 IF NOT FULL AU
  1111. STD SC
  1112. AOD RC
  1113. LDN 0 FLAG WRITE
  1114. RJM RCL PAUSE AND CHECK ERROR FLAG
  1115. WDA21 FETA 4
  1116. CRD CM READ LIMIT WORD
  1117. LDD CM+3
  1118. SHN -6
  1119. ZJN WDA22 IF TERMINATE FLAG NOT SET
  1120. ERROR RCTERF TERMINATE FLAG RETURN
  1121.  
  1122. WDA22 LDD SC
  1123. NJN WDA23 IF NOT END OF AU
  1124. RJM CMG CHECK FOR MESSAGES
  1125. WDA23 LJM WDA0 CONTINUE WRITE
  1126. WMS SPACE 4,10
  1127. ** WMS - WRITE MESSAGE AND ASSOCIATED DATA.
  1128. *
  1129. * ENTRY (FE - FE+1) = MESSAGE OUTPUT FET.
  1130. *
  1131. * EXIT ALL MESSAGES OUTPUT TO M860.
  1132. *
  1133. * CALLS COB, DV3, DV5, FCN, IBP, RMB, REL, RES, SCB, STS.
  1134. * CMD, CSM, GMT.
  1135. *
  1136. * USES T4, CM - CM+4, BC, WC.
  1137.  
  1138.  
  1139. WMS SUBR ENTRY/EXIT
  1140. LDN 1
  1141. STM WMSA CLEAR RESTART CONTROL UNIT FLAG
  1142. RJM IBP INITIALIZE BUFFER PARAMETERS
  1143. RJM COB CHECK OUTPUT BUFFER
  1144. ZJN WMSX IF NO MESSAGES
  1145. FETA CHECK FOR ERROR CODE SET
  1146. CRD CM
  1147. LDD CM+4
  1148. SHN 21-0
  1149. MJN WMSX IF COMPLETE
  1150. LDD CM+4
  1151. SHN -12
  1152. SHN 6
  1153. LMD CM+3
  1154. NJN WMSX IF ERROR CODE SET
  1155. RJM RES RESERVE CHANNEL
  1156. WMS0 RJM COB CHECK OUTPUT BUFFER
  1157. NJN WMS1 IF MESSAGE(S) IN BUFFER
  1158. MONITOR DRCM RECALL CPU
  1159. LDC ** RESTART CONTROL UNIT FLAG
  1160. WMSA EQU *-1
  1161. NJN WMS0.1 IF CONTROL UNIT NOT RESTARTED
  1162. LDN RISF
  1163. RJM STS IGNORE ANY OUTSTANDING INTERRUPTS
  1164. WMS0.1 RJM REL RELEASE CHANNEL
  1165. LJM WMSX RETURN
  1166.  
  1167. WMS1 SBN MSWC
  1168. PJN WMS2 IF ENOUGH DATA
  1169. ERROR RCDLER DATA LENGTH ERROR
  1170.  
  1171. WMS2 LDN MSWC
  1172. STD WC
  1173. RJM RMB READ MESSAGE
  1174. TRCG LDN 0
  1175. ZJN WMS2.1 IF NOT TRACE MODE
  1176. LDC 2ROT
  1177. RJM MDF MESSAGE TYPE TO DAYFILE
  1178. WMS2.1 LDN CMWF
  1179. RJM CMD CONNECT TO MESSAGE WRITE DEVICE
  1180. LDC BRTL
  1181. STM WMSB RETRY LIMIT
  1182. WMS2.2 LDN MWRF
  1183. RJM FCN ISSUE MESSAGE WRITE FUNCTION
  1184. LDN MSBC
  1185. ACN CH
  1186. OAM BUFR,CH OUTPUT MESSAGE
  1187. FJM *,CH WAIT FOR LAST BYTE
  1188. DCN CH+40
  1189. STD BC
  1190. LDN GSTF
  1191. RJM STS WAIT END OF OPERATION
  1192. SHN 21-13
  1193. PJN WMS3 IF NO ERROR
  1194. SHN 13-1
  1195. PJN WMS2.3 IF NOT BUSY
  1196. SOM WMSB
  1197. MJN WMS2.3 IF RETRY LIMIT
  1198. RJM REL RELEASE CHANNEL
  1199. RJM BDL BUSY DELAY
  1200. RJM RES RESERVE CHANNEL
  1201. LJM WMS2.2 RETRY
  1202.  
  1203. WMS2.3 ERROR RCSTER STATUS ERROR
  1204.  
  1205. WMS3 LDD BC
  1206. ZJN WMS4 IF FULL BLOCK
  1207. ERROR RCCHOT CHANNEL HANG
  1208.  
  1209. WMS4 RJM GMT GET MESSAGE TYPE
  1210. LMN 0#1C
  1211. STM WMSA SET/CLEAR RESTART FLAG
  1212. LMN 0#1C
  1213. RJM CSM CHECK SPECIAL MESSAGE
  1214. LDM BUFR+2
  1215. SHN -4
  1216. STD BC ASSOCIATED DATA BYTE COUNT
  1217. LDM BUFR+1
  1218. LPC 377
  1219. SHN 10
  1220. RAD BC
  1221. NJN WMS6 IF ASSOCIATED DATA
  1222. WMS5 RJM UCO UPDATE CENTRAL OUT
  1223. LJM WMS0 CHECK FOR MORE MESSAGES
  1224.  
  1225. WMS6 ADC -MXAD
  1226. MJN WMS7 IF BLOCK NOT TOO BIG
  1227. ZJN WMS7 IF BLOCK NOT TOO BIG
  1228. ERROR RCDLER DATA LENGTH ERROR
  1229.  
  1230. WMS7 ADC MXAD
  1231. SHN 1 *2
  1232. STD T4
  1233. RJM DV3 /3 = PP BYTE COUNT
  1234. STD BC
  1235. RJM DV5 GET CM WORD COUNT
  1236. STD WC
  1237. RJM COB CHECK OUTPUT FET
  1238. SBD WC
  1239. PJN WMS8 IF DATA IN BUFFER
  1240. ERROR RCDLER DATA LENGTH ERROR
  1241.  
  1242. WMS8 RJM RMB READ DATA TO PP
  1243. LDC BRTL
  1244. STM WMSB RETRY LIMIT
  1245. WMS8.1 LDD BC
  1246. SHN 1 *2
  1247. ADD BC *3
  1248. SBD T4 REMAINDER FROM DIVISION BY 3
  1249. LPN 2 REMAINDER OF 2 = WRITE SHORT
  1250. SHN 6
  1251. ERRNZ SWRF-WRTF-200
  1252. ADN WRTF
  1253. RJM FCN ISSUE WRITE FUNCTION
  1254. LDD BC
  1255. STD WC SAVE FOR RETRY
  1256. ACN CH
  1257. OAM BUFR,CH SEND ASSOC. DATA
  1258. FJM *,CH WAIT FOR LAST BYTE
  1259. DCN CH+40
  1260. STD BC
  1261. LDN GSTF
  1262. RJM STS WAIT END OF OPERATION
  1263. SHN 21-13
  1264. PJN WMS9 IF NO ERROR
  1265. SHN 13-1
  1266. PJN WMS8.2 IF NOT BUSY
  1267. SOM WMSB
  1268. MJN WMS8.2 IF RETRY LIMIT
  1269. RJM REL RELEASE CHANNEL
  1270. RJM BDL BUSY DELAY
  1271. RJM RES RESERVE CHANNEL
  1272. LDD WC
  1273. STD BC RESTORE BYTE COUNT
  1274. LJM WMS8.1 RETRY
  1275.  
  1276. WMS8.2 ERROR RCSTER STATUS ERROR
  1277.  
  1278. WMS9 LDD BC
  1279. ZJN WMS10 IF FULL BLOCK
  1280. ERROR RCCHOT CHANNEL HANG
  1281.  
  1282. WMS10 LJM WMS5 UPDATE FET
  1283.  
  1284.  
  1285. WMSB CON BRTL RETRY LIMIT
  1286. TITLE SUBROUTINES.
  1287. TITLE I/O SUBROUTINES.
  1288. CKM SPACE 4,10
  1289. ** CKM - CHECK FOR MESSAGE.
  1290. *
  1291. * ENTRY (MW) .NE. 0, IF MESSAGE ALREADY WAITING.
  1292. *
  1293. * EXIT (MW) = 0, IF NO MESSAGE WAITING FOR BUFFER.
  1294. *
  1295. * CALLS RES, RMS, STS.
  1296. *
  1297. * USES MW.
  1298.  
  1299.  
  1300. CKM SUBR ENTRY/EXIT
  1301. RJM RES RESERVE CHANNEL
  1302. LDD MW
  1303. NJN CKM1 IF MESSAGE WAITING
  1304. LDN RISF
  1305. RJM STS REQUEST INTERRUPT STATUS
  1306. SHN 21-10
  1307. MJN CKM1 IF MESSAGE READY
  1308. RJM REL RELEASE CHANNEL
  1309. UJN CKMX RETURN
  1310.  
  1311. CKM1 RJM RMS READ MESSAGE
  1312. STD MW SAVE BUFFER STATUS
  1313. UJN CKMX RETURN
  1314. CMD SPACE 4,10
  1315. ** CMD - CONNECT TO MESSAGE DEVICE.
  1316. *
  1317. * ENTRY (A) = CONNECT FUNCTION CODE.
  1318. * CHANNEL RESERVED.
  1319. *
  1320. * EXIT MESSAGE DEVICE CONNECTED.
  1321. *
  1322. * CALLS FCN, STS.
  1323. *
  1324. * USES NONE.
  1325.  
  1326.  
  1327. CMD SUBR ENTRY/EXIT
  1328. STM CMDA SAVE FUNCTION CODE
  1329. LDC BRTL
  1330. STM CMDB RETRY LIMIT
  1331. CMD0 LDC **
  1332. CMDA EQU *-1
  1333. RJM FCN ISSUE CONNECT FUNCTION
  1334. LDN GSTF
  1335. RJM STS GET STATUS
  1336. SHN 21-13
  1337. PJN CMDX IF NOT ALERT
  1338. SOM CMDB
  1339. MJN CMD0.0 IF RETRY LIMIT
  1340. RJM REL RELEASE CHANNEL
  1341. RJM BDL BUSY DELAY
  1342. RJM RES RESERVE CHANNEL
  1343. UJN CMD0 RETRY
  1344.  
  1345. CMD0.0 LDM STEC ERROR CODE
  1346. LMC 170
  1347. NJN CMD1 IF CHANNEL INTERFACE ONLINE
  1348. ERROR RCCIFO CHANNEL INTERFACE OFF LINE
  1349.  
  1350. CMD1 ERROR RCIMPL
  1351.  
  1352.  
  1353. CMDB CON BRTL RETRY COUNTER
  1354. CMG SPACE 4,10
  1355. ** CMG - CHECK FOR MESSAGES.
  1356. *
  1357. * ENTRY CHANNEL RESERVED.
  1358. *
  1359. * EXIT NORMAL, IF NO MESSAGES TO SEND/RECEIVE.
  1360. * TO *SSD1* IF MESSAGES TO PROCESS.
  1361. *
  1362. * CALLS REL, STS.
  1363. *
  1364. * USES CM - CM+4, CN - CN+4, MW.
  1365.  
  1366.  
  1367. CMG SUBR ENTRY/EXIT
  1368. LDN RISF
  1369. RJM STS GET MESSAGE STATUS
  1370. SHN 21-10
  1371. PJN CMG2 IF NO M860 MESSAGE
  1372. AOD MW FLAG MESSAGE READY
  1373. CMG1 RJM REL RELEASE CHANNEL
  1374. LJM SSD1 PROCESS MESSAGES
  1375.  
  1376. CMG2 LDM SSDA-1 CHECK MESSAGE FROM EXEC.
  1377. LPN 77
  1378. SHN 6
  1379. ADD RA
  1380. SHN 6
  1381. ADM SSDA
  1382. ADN 2 IN POINTER
  1383. CRD CM
  1384. ADN 1
  1385. CRD CN OUT POINTER
  1386. LDD CM+3
  1387. LMD CN+3
  1388. NJN CMG1 IF IN .NE. OUT
  1389. LDD CM+4
  1390. LMD CN+4
  1391. NJN CMG1 IF IN .NE. OUT
  1392. LJM CMGX RETURN
  1393. CON SPACE 4,10
  1394. ** CON - CONNECT UNIT.
  1395. *
  1396. * ENTRY (UN) = UNIT NUMBER.
  1397. *
  1398. * EXIT CHANNEL RESERVED, UNIT CONNECTED AND NOT BUSY.
  1399. *
  1400. * CALLS FCN, RES, STS.
  1401. *
  1402. * USES NONE.
  1403.  
  1404.  
  1405. CON SUBR ENTRY/EXIT
  1406. RJM WUM WAIT UNIT MOUNTED
  1407. LDC BRTL
  1408. STM CONA INITIALIZE BUSY RETRY LIMIT
  1409. CON1 RJM RES RESERVE CHANNEL
  1410. LDN CONF
  1411. ADD UN
  1412. RJM FCN CONNECT UNIT
  1413. LDN GSTF
  1414. RJM STS GET STATUS
  1415. SHN 21-13
  1416. PJN CONX IF NO ALERT
  1417. LDM STEC GET ERROR CODE
  1418. LMN 2
  1419. ZJN CON2 IF BUSY CODE
  1420. LMC 2&165
  1421. NJN CON3 IF NOT SENSE ERROR
  1422. CON2 RJM REL RELEASE CHANNEL
  1423. SOM CONA
  1424. ZJN CON3 IF RETRY LIMIT
  1425. RJM BDL BUSY DELAY
  1426. UJN CON1 TRY AGAIN
  1427.  
  1428. CON3 ERROR RCSTER STATUS ERROR
  1429.  
  1430.  
  1431. CONA CON BRTL BUSY RETRY LIMIT
  1432. CSM SPACE 4,10
  1433. ** CSM - CHECK SPECIAL MESSAGE.
  1434. *
  1435. * ENTRY (A) = MESSAGE CODE.
  1436. *
  1437. * EXIT SPECIAL MESSAGES PROCESSED.
  1438. *
  1439. * CALLS FCN, STS.
  1440. *
  1441. * USES CM - CM+4.
  1442.  
  1443.  
  1444. CSM SUBR ENTRY/EXIT
  1445. LMN 0#06
  1446. NJN CSM1 IF NOT MOUNT VOLUME
  1447. LDM BUFR+5 GET UNIT NUMBER
  1448. SHN -10
  1449. ADC WUMF PRIME FSC FOR READY INTERRUPT
  1450. RJM FCN ISSUE FUNCTION
  1451. UJN CSMX RETURN
  1452.  
  1453. CSM1 LMC 0#06&0#81
  1454. NJN CSMX IF NOT RESPONSE TO REWIND/UNLOAD MSG
  1455. LDC RTCL
  1456. CRD CM READ REALTIME CLOCK
  1457. LDD CM+1 SECONDS
  1458. ADC EOPL END OF OP. LIMIT
  1459. STM CMSA
  1460. CSM2 LDM BUFR+5 GET UNIT NUMBER
  1461. SHN -10
  1462. ADC CDEF CHECK FOR INTERRUPT
  1463. RJM STS GET STATUS
  1464. SHN 21-13
  1465. MJN CSM4 IF ALERT
  1466. CSM3 LJM CSMX RETURN
  1467. CSM4 LDM STEC ERROR CODE
  1468. LMN 2
  1469. NJN CSM3 IF NOT BUSY(EXPECT ALERT/EC=131)
  1470. RJM REL PAUSE CHECK ERROR FLG
  1471. LDC RTCL
  1472. CRD CM READ REALTIME CLOCK
  1473. LDD CM+1 SECONDS
  1474. LMC **
  1475. CMSA EQU *-1
  1476. ZJN CSM5 IF TIMEOUT
  1477. RJM RES RESERVE CHANNEL
  1478. UJN CSM2 CHECK AGAIN
  1479.  
  1480. CSM5 ERROR RCNEOP NO END OF OPERATION
  1481. DST SPACE 4,10
  1482. ** DST - DIAGNOSTIC STATUS.
  1483. *
  1484. * ENTRY CHANNEL RESERVED.
  1485. *
  1486. * EXIT TO CALLER IF NO ERROR.
  1487. * TO ERR IF ERROR
  1488. *
  1489. * CALLS NONE.
  1490. *
  1491. * USES T0.
  1492.  
  1493.  
  1494. DST SUBR ENTRY/EXIT
  1495. DCN CH+40 INSURE INACTIVE CHANNEL
  1496. FNC DSTF,CH ISSUE DIAGNOSTIC STATUS FUNCTION
  1497. LCN 0
  1498. DST1 IJM DST2,CH IF FUNCTION ACCEPTED
  1499. SBN 1
  1500. NJN DST1 IF NOT TIMEOUT
  1501. ERROR RCFCTO FUNCTION TIMEOUT
  1502.  
  1503. DST2 ACN CH
  1504. LCN 0
  1505. DST3 FJM DST5,CH IF STATUS READY
  1506. SBN 1
  1507. NJN DST3 IF NOT TIMEOUT
  1508. DST4 ERROR RCCHMF CHANNEL MALFUNCTION
  1509.  
  1510. DST5 LCN 0
  1511. IAN CH+40
  1512. DCN CH+40
  1513. MJN DST4 IF NO DATA READ
  1514. STM DSTS PUT IN STATUS BUFFER
  1515. LPC 3003
  1516. LMN 2
  1517. ZJN DSTX IF NO ERROR
  1518. SHN 21-12
  1519. PJN DST6 IF NOT CHANNEL PARITY ERROR
  1520. ERROR RCCHPE
  1521.  
  1522. DST6 SHN 12-11
  1523. PJN DST7 IF NOT FSC MEMORY PARITY ERROR
  1524. ERROR RCFSPE
  1525.  
  1526. DST7 SHN 11-0
  1527. MJN DST8 IF PROCESSOR RUNNING
  1528. ERROR RCFSNR
  1529.  
  1530. DST8 ERROR RCFSAB FSC ABNORMAL
  1531. FCN SPACE 4,10
  1532. ** FCN - FUNCTION M860 MSS INTERFACE.
  1533. *
  1534. * ENTRY (A) = FUNCTION CODE TO BE ISSUED.
  1535. *
  1536. * EXIT FUNCTION ISSUED, TO ERR IF ERROR.
  1537. *
  1538. * CALLS DST.
  1539. *
  1540. * USES CL, CN - CN+4.
  1541.  
  1542.  
  1543. FCN SUBR ENTRY/EXIT
  1544. STM FSTS+16D SAVE FUNCTION IN DETAIL STATUS BLOCK
  1545. ADD EQ SET EQUIPMENT NUMBER
  1546. FAN CH ISSUE FUNCTION
  1547. LDC RTCL SET TIMEOUT CLOCK
  1548. CRD CN
  1549. LDD CN+1 SECOND COUNT
  1550. ADC FTOL FUNCTION TIMEOUT LIMIT
  1551. STD CL
  1552. LDN 1
  1553. FCN1 IJM FCNX,CH IF ACCEPTED
  1554. ADN 1
  1555. NJN FCN1 IF NOT TIMEOUT
  1556. PAUSE
  1557. LDD CM+1
  1558. ZJN FCN1.0 IF NO ERROR FLAG
  1559. RJM REL RELEASE CHANNEL
  1560. LJM DPP DROP PP
  1561.  
  1562. FCN1.0 LDC RTCL READ CLOCK
  1563. CRD CN
  1564. LDD CL
  1565. LMD CN+1
  1566. NJN FCN1 IF NOT TIMEOUT
  1567. DCN CH+40
  1568. LDN GSTF
  1569. FAN CH TRY TO GET GENERAL STATUS
  1570. FCN2 IJM FCN3,CH IF ACCEPTED
  1571. ADN 1
  1572. PJN FCN2 IF NOT TIMEOUT
  1573. UJN FCN8 TIMEOUT
  1574.  
  1575. FCN3 ACN CH
  1576. LDN 1
  1577. FCN4 FJM FCN5,CH IF STATUS READY
  1578. ADN 1
  1579. PJN FCN4 IF NOT TIMEOUT
  1580. UJN FCN8 TIMEOUT
  1581.  
  1582. FCN5 LDN GSTL
  1583. IAM GSTS,CH READ GENERAL STATUS
  1584. NJN FCN8 IF NOT ALL STATUS READ
  1585. DCN CH+40
  1586. FNC FSTF,CH DETAIL STATUS
  1587. FCN6 IJM FCN7,CH IF ACCEPTED
  1588. ADN 1
  1589. PJN FCN6 IF NOT TIMEOUT
  1590. UJN FCN8 TIMEOUT
  1591.  
  1592. FCN7 ACN CH
  1593. LDN DSTL
  1594. IAM FSTS,CH READ DETAIL STATUS
  1595. FCN8 DCN CH+40
  1596. RJM DST GET DIAGNOSTIC STATUS
  1597. ERROR RCFCTO FUNCTION TIMEOUT
  1598. FIN SPACE 4,10
  1599. ** FIN - FLUSH INPUT.
  1600. *
  1601. * ENTRY CHANNEL ACTIVE.
  1602. *
  1603. * EXIT INPUT OPERATION COMPLETE.
  1604. *
  1605. * CALLS NONE.
  1606. *
  1607. * USES NONE.
  1608.  
  1609.  
  1610. FIN SUBR ENTRY/EXIT
  1611. FIN1 IJM FINX,CH IF COMPLETE
  1612. LCN 0
  1613. FIN2 FJM FIN3,CH IF INPUT READY
  1614. SBN 1
  1615. NJN FIN2 IF NOT TIMEOUT
  1616. DCN CH+40
  1617. UJN FINX RETURN
  1618.  
  1619. FIN3 IAN CH+40
  1620. UJN FIN1 GET NEXT BYTE
  1621. MCL SPACE 4,15
  1622. ** MCL - MASTER CLEAR FSC.
  1623. *
  1624. * ENTRY CHANNEL RESERVED.
  1625. *
  1626. * EXIT FSC MASTERCLEARED.
  1627. *
  1628. * CALLS NONE.
  1629. *
  1630. * USES T0.
  1631.  
  1632.  
  1633. MCL SUBR ENTRY/EXIT
  1634. DCN CH+40 INSURE CHANNEL INACTIVE
  1635. FNC MCLF,CH MASTERCLEAR
  1636. LDN 12
  1637. STD T0
  1638. MCL1 SOD T0
  1639. MJN MCL3 IF TIMEOUT
  1640. MCL2 ADN 1
  1641. PJN MCL2 DELAY
  1642. AJM MCL1,CH IF NOT PROCESSED
  1643. ACN CH
  1644. OAN CH
  1645. OAN CH
  1646. DELAY
  1647. MCL3 DCN CH+40
  1648. UJN MCLX RETURN
  1649. MDF SPACE 4,10
  1650. ** MDF - MESSAGE TYPE TO DAYFILE.
  1651. *
  1652. * ENTRY (BUFR+2,3) = MESSAGE TYPE, SUBTYPE.
  1653. * (A) = *IN* OR *OT*.
  1654. *
  1655. * EXIT MESSAGE TO LOCAL DAYFILE.
  1656. *
  1657. * USES CM.
  1658. *
  1659. * CALLS CTH, DFM.
  1660.  
  1661.  
  1662. MDF SUBR ENTRY/EXIT
  1663. STM MDFC
  1664. CHTE *
  1665. LDN 0
  1666. STD T0
  1667. SHN 3
  1668. LMD T0
  1669. SCN 70
  1670. ADC 2R00
  1671. STM MDFAA+1
  1672. LDM BUFR+2 FIRST DIGIT OF TYPE
  1673. RJM CTH CONVERT TO HEX DISPLAY CODE
  1674. SHN 6
  1675. STM MDFA+2 STORE IN MESSAGE
  1676. LDM BUFR+3 REST OF TYPE, SUBTYPE
  1677. STD CM
  1678. SHN -10
  1679. RJM CTH CONVERT TO HEX DISPLAY CODE
  1680. RAM MDFA+2
  1681. LDD CM
  1682. SHN -4
  1683. RJM CTH CONVERT TO HEX DISPLAY CODE
  1684. SHN 6
  1685. STM MDFA+4
  1686. LDD CM
  1687. RJM CTH CONVERT TO HEX DISPLAY CODE
  1688. RAM MDFA+4
  1689. LDC RTCL
  1690. CRD CM READ MILLISECOND CLOCK
  1691. LDN 0
  1692. STD CM CLEAR SECOND COUNT
  1693. STD CM+1
  1694. STD CM+2 ONLY USE 24 BITS
  1695. LDD MA
  1696. CWD CM
  1697. LDN 1
  1698. STD CM+1 ONLY 1 VALUE TO BE CONVERTED
  1699. MONITOR RDCM CONVERT TO F10.3
  1700. LDD MA
  1701. CRM MDFB,ON READ TO MESSAGE
  1702. LDM BUFR+35D GET MESSAGE RETURN CODE
  1703. STD T2
  1704. LDM BUFR+34D
  1705. LPN 0#F
  1706. STD T1
  1707. RJM CTH CONVERT TO HEX
  1708. SHN 6
  1709. STM MDFD
  1710. LDD T2
  1711. SHN -8D
  1712. RJM CTH CONVERT TO HEX
  1713. RAM MDFD
  1714. LDD T2
  1715. SHN -4
  1716. RJM CTH CONVERT TO HEX
  1717. SHN 6
  1718. STM MDFD+1
  1719. LDD T2
  1720. RJM CTH CONVERT TO HEX
  1721. RAM MDFD+1
  1722. LDD T1
  1723. ADD T2
  1724. NJN MDF1 IF RETURN CODE PRESENT
  1725. STM MDFD SET END OF LINE
  1726. MDF1 LDC MDFAA+CPON
  1727. RJM DFM ISSUE MESSAGE TO LOCAL DAYFILE
  1728. LJM MDFX RETURN
  1729.  
  1730.  
  1731. MDFAA DATA 4H CXX CHANNEL NUMBER
  1732. MDFA DATA 12H MS XX, YY.
  1733. MDFB BSS 5 MILLISECOND CLOCK F10.3
  1734. DATA 2H
  1735. MDFC CON 0 *IN* OR *OT*
  1736. CON 2H
  1737. MDFD BSS 2 RETURN CODE
  1738. CON 0 END OF LINE
  1739. CTH SPACE 4,10
  1740. ** CTH - CONVERT TO HEX DISPLAY CODE.
  1741. *
  1742. * ENTRY (A) = NUMBER TO BE CONVERTED.
  1743. *
  1744. * EXIT (A) = HEX DISPLAY CODE OF LOWER 4 BITS.
  1745. *
  1746. * USES NONE.
  1747. *
  1748. * CALLS NONE.
  1749.  
  1750.  
  1751. CTH1 ADN 1 A THRU F
  1752.  
  1753. CTH SUBR ENTRY/EXIT
  1754. LPN 17
  1755. SBN 12
  1756. PJN CTH1 IF A THRU F
  1757. ADN 1R0+12 0 THRU 9
  1758. UJN CTHX RETURN
  1759. RCL SPACE 4,10
  1760. ** RCL - RECALL CPU.
  1761. *
  1762. * ENTRY (RC) = 0, RECALL CPU.
  1763. * (A) = 0, IF NOT READ ACTIVE
  1764. *
  1765. * EXIT IF NO ERROR.
  1766. * TO *ERR*, IF TERMINATE FLAG SET.
  1767. * TO *DPP*, IF ERROR FLAG SET.
  1768. *
  1769. * CALLS FIN.
  1770. *
  1771. * USES RC, CM - CM+4.
  1772.  
  1773.  
  1774. RCL SUBR ENTRY/EXIT
  1775. STM RCLA SAVE READ STATUS
  1776. RCL0 LDD OA
  1777. CRD CM
  1778. LDD CM
  1779. NJN RCL0 IF OUTPUT REGISTER NOT CLEAR
  1780. LDD RC
  1781. NJN RCL1 IF NOT TO RECALL CPU
  1782. MONITOR DRCM
  1783. RCL1 AOD RC
  1784. SBD HN
  1785. NJN RCL2 IF NOT TIME TO RECALL CPU
  1786. STD RC
  1787. RCL2 PAUSE
  1788. LDD CM+1
  1789. ZJN RCL3 IF NO ERROR FLAG
  1790. LDC ** READ/WRITE FLAG
  1791. RCLA EQU *-1
  1792. ZJN RCL2.1 IF NOT READ
  1793. RJM FIN FLUSH INPUT
  1794. RCL2.1 DCN CH+40
  1795. RJM REL RELEASE CHANNEL
  1796. LJM DPP DROP PP
  1797.  
  1798. RCL3 FETA 4
  1799. CRD CM READ LIMIT WORD
  1800. LDD CM+3
  1801. SHN -6
  1802. NJN RCL4 IF TERMINATE STREAMING FLAG
  1803. LJM RCLX RETURN
  1804.  
  1805. RCL4 LDM RCLA
  1806. ZJN RCL5 IF NOT READ OPERATION
  1807. RJM FIN FLUSH INPUT
  1808. RCL5 DCN CH+40
  1809. ERROR RCTERF TERMINATE FLAG SET
  1810. REL SPACE 4,10
  1811. ** REL - RELEASE CHANNEL.
  1812. *
  1813. * ENTRY NONE.
  1814. *
  1815. * EXIT CHANNEL RELEASED.
  1816. * TO *DPP* IF ERROR FLAG SET.
  1817. *
  1818. * CALLS NONE.
  1819. *
  1820. * USES CM - CM+4.
  1821.  
  1822.  
  1823. REL SUBR ENTRY/EXIT
  1824. REL0 LDD OA
  1825. CRD CM
  1826. LDD CM
  1827. NJN REL0 IF OUTPUT REGISTER NOT CLEAR
  1828. LDC 0
  1829. RELA EQU *-1
  1830. ZJN REL1 IF CHANNEL NOT RESERVED
  1831. CHTE *
  1832. LDN CH
  1833. DCHAN
  1834. * LDN 0
  1835. STM RELA FLAG CHANNEL NOT RESERVED
  1836. REL1 PAUSE
  1837. LDD CM+1
  1838. ZJN RELX IF NO ERROR FLAG
  1839. LJM DPP DROP PP
  1840. RES SPACE 4,10
  1841. ** RES - RESERVE CHANNEL.
  1842. *
  1843. * ENTRY (CH) = CHANNEL(S).
  1844. *
  1845. * EXIT CHANNEL RESERVED.
  1846. *
  1847. * CALLS NONE.
  1848. *
  1849. * USES T1, CM - CM+4.
  1850.  
  1851.  
  1852. RES SUBR ENTRY/EXIT
  1853. CHTE *
  1854. RES0 LDN CH
  1855. STD CM+1
  1856. MONITOR CCHM
  1857. LDD CM+2
  1858. NJN RES1 IF CHANNEL RESERVED
  1859. PAUSE
  1860. LDD CM+1
  1861. ZJN RES0 IF NO ERROR
  1862. LJM DPP EXIT
  1863.  
  1864. RES1 AOM RELA FLAG CHANNEL RESERVED
  1865. UJN RESX RETURN
  1866. STS SPACE 4,10
  1867. ** STS - RETURN INTERFACE STATUS.
  1868. *
  1869. * ENTRY (A) = STATUS FUNCTION.
  1870. *
  1871. * EXIT (A) = (ST) INTERFACE STATUS.
  1872. *
  1873. * CALLS FCN, DST.
  1874. *
  1875. * USES CM - CM+4, ST, EO.
  1876.  
  1877.  
  1878. STS SUBR ENTRY/EXIT
  1879. STM STSA SAVE STATUS FUNCTION
  1880. LDC RTCL
  1881. CRD CM READ CLOCK
  1882. LDD CM+1 SECONDS
  1883. ADC EOPL END OF OP. LIMIT
  1884. STD EO
  1885. STS0 LDC ** STATUS FUNCTION
  1886. STSA EQU *-1
  1887. RJM FCN ISSUE STATUS FUNCTION
  1888. ACN CH
  1889. LDN 77 WAIT EOP DELAY
  1890. STS1 FJM STS2,CH IF STATUS READY
  1891. SBN 1
  1892. PJN STS1 IF NOT TIMEOUT
  1893. DCN CH+40
  1894. PAUSE
  1895. LDD CM+1
  1896. ZJN STS1.1 IF NO ERROR
  1897. RJM REL RELEASE CHANNEL
  1898. LJM DPP DROP PP
  1899.  
  1900. STS1.1 LDC RTCL
  1901. CRD CM READ CLOCK
  1902. LDD EO
  1903. LMD CM+1
  1904. NJN STS0 IF NOT TIMEOUT
  1905. RJM DST GET DIAGNOSTIC STATUS
  1906. ERROR RCNEOP NO END OF OPERATION
  1907.  
  1908. STS2 LDN GSTL GENERAL STATUS LENGTH
  1909. IAM GSTS,CH
  1910. DCN CH+40
  1911. LDM GSTS
  1912. STD ST
  1913. SHN 21-13
  1914. PJN STS3 IF NOT ALERT
  1915. LDM STSA
  1916. LMN GSTF
  1917. NJN STS3 IF NOT GENERAL STATUS
  1918. LDC FSTF
  1919. RJM FCN FSC STATUS FUNCTION
  1920. ACN CH
  1921. LDN DSTL DETAIL STATUS (FSC) LENGTH
  1922. IAM FSTS,CH READ FSC STATUS
  1923. DCN CH+40
  1924. RJM DST GET DIAGNOSTIC STATUS
  1925. STS3 LDD ST
  1926. LJM STSX RETURN
  1927.  
  1928.  
  1929. GSTS BSS 2 GENERAL STATUS
  1930. STEC BSS 1 ERROR CODE
  1931. FSTS BSS 24 FSC STATUS
  1932. CHTE *
  1933. CHAN CON CH CHANNEL USED
  1934. DSTS BSS 1 DIAGNOSTIC STATUS
  1935. WUM SPACE 4,10
  1936. ** WUM - WAIT UNIT MOUNTED
  1937. *
  1938. * ENTRY (UN) = UNIT NUMBER
  1939. *
  1940. * EXIT UNIT MOUNTED INTERRUPT SENSED
  1941. *
  1942. * CALLS STS, RES, REL.
  1943. *
  1944. * USES CM - CM+4.
  1945.  
  1946.  
  1947. WUM1 RJM REL RELEASE CHANNEL
  1948.  
  1949. WUM SUBR ENTRY/EXIT
  1950. LDC RTCL
  1951. CRD CM READ SECOND CLOCK
  1952. LDD CM+1
  1953. ADC EOPL END OF OP. LIMIT
  1954. STM WUMA
  1955. WUM2 RJM RES RESERVE CHANNEL
  1956. LDD UN UNIT NUMBER
  1957. ADC CDEF CHECK DEVICE END
  1958. RJM STS
  1959. SHN 21-13
  1960. PJN WUM1 IF NO ALERT
  1961. LDM STEC
  1962. LMN 2
  1963. NJN WUM1 IF NOT BUSY
  1964. WUM3 RJM REL RELEASE CHANNEL
  1965. LDC RTCL
  1966. CRD CM
  1967. LDD CM+1 SECONDS
  1968. LMC **
  1969. WUMA EQU *-1
  1970. NJN WUM2 IF NOT TIMEOUT
  1971. ERROR RCNEOP NO END OF OPERATION
  1972. BDL SPACE 4,20
  1973. ** BDL - BUSY DELAY.
  1974. *
  1975. * ENTRY BUSY STATUS FROM M860.
  1976. *
  1977. * EXIT DELAY TO ALLOW M860 INTERRUPT.
  1978. *
  1979. * CALLS NONE
  1980. *
  1981. * USES T0.
  1982.  
  1983.  
  1984. BDL SUBR ENTRY/EXIT
  1985. LDC 10D*100D 100 MSEC. DELAY
  1986. STD T0
  1987. BDL1 DELAY
  1988. SOD T0
  1989. NJN BDL1 IF NOT TIME
  1990. UJN BDLX
  1991. CBS SPACE 4,10
  1992. ** CBS - CHECK BUSY STATUS.
  1993. *
  1994. * ENTRY (PC) = PRU COUNT.
  1995. * (STEC) = STATUS ERROR CODE.
  1996. *
  1997. * EXIT (A) = 0, IF TO RETRY OPERATION.
  1998. *
  1999. * CALLS REL, RES.
  2000. *
  2001. * USES NONE.
  2002.  
  2003.  
  2004. CBS SUBR ENTRY/EXIT
  2005. LDD PC
  2006. NJN CBSX IF NOT HEADER
  2007. LDM STEC
  2008. LMN 2
  2009. NJN CBSX IF NOT BUSY ERROR
  2010. SOM CBSA
  2011. NJN CBS1 IF NOT RETRY LIMIT
  2012. LDN 1 FLAG NO RETRY
  2013. UJN CBSX RETURN
  2014.  
  2015. CBS1 RJM REL RELEASE CHANNEL
  2016. RJM BDL BUSY DELAY
  2017. RJM RES RESERVE CHANNEL
  2018. LDN 0 FLAG RETRY
  2019. UJN CBSX RETURN
  2020.  
  2021.  
  2022. CBSA CON BRTL RETRY COUNTER
  2023. TITLE GENERAL SUBROUTINES.
  2024. CFL SPACE 4,15
  2025. ** CFL - CHECK FIELD LENGTH.
  2026. *
  2027. * ENTRY (A) = RELATIVE ADDRESS TO BE ACCESSED.
  2028. * (RA) = CURRENT REFERENCE ADDRESS.
  2029. * (FL) = CURRENT FIELD LENGTH.
  2030. *
  2031. * EXIT (A) = RELATIVE + REFERENCE ADDRESS.
  2032. *
  2033. * CALLS DFM.
  2034. *
  2035. * USES NONE
  2036.  
  2037.  
  2038.  
  2039. CFL3 SHN 15 REPOSITION TO VALUE/100
  2040. ADD FL RESTORE VALUE
  2041. ADD RA ADD RA
  2042. SHN 6 REPOSITION VALUE
  2043.  
  2044. CFL SUBR ENTRY/EXIT
  2045. SBN 2
  2046. MJN CFL1 IF ADDRESS TOO SMALL
  2047. ADN 2
  2048. SHN 21
  2049. MJN CFL2 IF VALUE ODD
  2050. SHN 15 POSITION TO VALUE/100B
  2051. SBD FL
  2052. SHN 5
  2053. MJN CFL3 IF VALUE IN RANGE
  2054. CFL1 LDC CFLA
  2055. RJM DFM OUTPUT MESSAGE
  2056. RJM REL RELEASE CHANNEL
  2057. MONITOR HNGM HANG PPU
  2058. LJM DPP1 DROP PP
  2059.  
  2060. CFL2 SHN 15 POSITION TO VALUE/100B
  2061. SBD FL
  2062. SHN 5
  2063. MJN CFL1 IF VALUE TO BIG (OR NEGATIVE)
  2064. UJN CFL3 SET RA
  2065.  
  2066. CFLA DATA C*1SS ABT.*
  2067. CFS SPACE 4,10
  2068. ** CFS - CHECK FULL STRIPE.
  2069. *
  2070. * ENTRY BUFFER POINTERS INITIALIZED.
  2071. *
  2072. * EXIT FULL STRIPE + 1 PRU OR EOI IN BUFFER.
  2073. *
  2074. * CALLS COB, DV5, RCL.
  2075. *
  2076. * USES T3, CM - CM+4, PC, WC.
  2077.  
  2078.  
  2079. CFS1 LDC ** RESTORE ORIGINAL OUT POINTER
  2080. CFSA EQU *-1
  2081. STD OT+1
  2082. SHN -14
  2083. STD OT
  2084. LDN 0
  2085. STD PC RESET PRU COUNT
  2086.  
  2087. CFS SUBR ENTRY/EXIT
  2088. LDD OT+1 SAVE OUT POINTER
  2089. STM CFSA
  2090. LDM CFSA-1
  2091. SCN 77
  2092. ADD OT
  2093. STM CFSA-1
  2094. LDN 0
  2095. STD PC INITIALIZE PRU COUNT
  2096. STD RC INITIALIZE RECALL COUNT
  2097. CFS2 RJM COB CHECK OUTPUT BUFFER
  2098. NJN CFS3 IF DATA IN BUFFER
  2099. * LDN 0 NOT READ
  2100. RJM RCL RECALL CPU
  2101. UJN CFS2 CHECK AGAIN
  2102.  
  2103. CFS3 LDCA OT
  2104. CRD CM READ FIRST CONTROL WORD
  2105. LDD CM
  2106. SHN 21-12
  2107. MJN CFS4 IF EOI
  2108. AOD PC ADVANCE PRU COUNT
  2109. SBN PRUPST+1
  2110. MJN CFS5 IF NOT FULL STRIPE + 1 PRU
  2111. CFS4 LJM CFS1 RESTORE OUT AND RETURN
  2112.  
  2113. CFS5 LDD CM+4 PRU BYTE COUNT
  2114. RJM DV5 CM WORD COUNT
  2115. ADN 2 CONTROL WORDS
  2116. STD WC
  2117. LDD LM
  2118. SBD OT
  2119. SHN 14
  2120. ADD LM+1
  2121. SBD OT+1 WORD COUNT TO LIMIT
  2122. STD T3
  2123. SBD WC
  2124. MJN CFS6 IF WRAPAROUND
  2125. ZJN CFS6 IF WC = ROOM TO LIMIT
  2126. LDD WC
  2127. RAD OT+1 ADVANCE OUT
  2128. SHN -14
  2129. RAD OT
  2130. LJM CFS2 CHECK FOR NEXT PRU
  2131.  
  2132. CFS6 LDD FT SET OUT=FIRST+WC-REMAINDER TO LIMIT
  2133. SHN 14
  2134. ADD FT+1
  2135. ADD WC
  2136. SBD T3
  2137. STD OT+1
  2138. SHN -14
  2139. STD OT
  2140. LJM CFS2 CHECK FOR NEXT PRU
  2141. CIB SPACE 4
  2142. ** CIB - CHECK INPUT BUFFER.
  2143. *
  2144. * ENTRY (FE - FE+1) = FET ADDRESS.
  2145. * (FT - FT+1) = FIRST ADDRESS OF CM BUFFER.
  2146. * (IN - IN+1) = NEXT INPUT ADDRESS.
  2147. * (OT - OT+1) = NEXT OUTPUT ADDRESS.
  2148. * (LM - LM+1) = LIMIT ADDRESS OF CM BUFFER.
  2149. *
  2150. * EXIT (A) = WORD COUNT OF BUFFER.
  2151. * RESETS (OT - OT+1).
  2152. *
  2153. * CALLS CFL.
  2154. *
  2155. * USES CM - CM+4.
  2156.  
  2157.  
  2158. CIB SUBR ENTRY/EXIT
  2159. FETA 3
  2160. CRD CM
  2161. LDD CM+3 SET OUT
  2162. LPN 77
  2163. STD OT
  2164. SHN 14
  2165. LMD CM+4
  2166. STD OT+1
  2167. RJM CFL CHECK ADDRESS
  2168. LDD OT LENGTH = OUT - IN
  2169. SBD IN
  2170. SHN 14
  2171. ADD OT+1
  2172. SBD IN+1
  2173. ZJN CIB1 IF IN = OUT
  2174. PJN CIB2 IF OUT .GT. IN
  2175. CIB1 SHN 6 LENGTH = (LIMIT - IN) + OUT - FIRST)
  2176. ADD LM
  2177. SBD FT
  2178. SHN 14
  2179. ADD LM+1
  2180. SBD FT+1
  2181. CIB2 SBN 1 LENGTH - 1
  2182. UJN CIBX RETURN
  2183. COB SPACE 4,10
  2184. ** COB - CHECK OUTPUT BUFFER.
  2185. *
  2186. * ENTRY (FE - FE+1) = ADDRESS OF FET.
  2187. * (FT - FT+1) = FIRST ADDRESS OF CM BUFFER.
  2188. * (IN - IN+1) = NEXT INPUT ADDRESS.
  2189. * (OT - OT+1) = NEXT OUTPUT ADDRESS.
  2190. * (LM - LM+1) = LIMIT ADDRESS OF CM BUFFER.
  2191. *
  2192. * EXIT (A) = WORD COUNT OF BUFFER.
  2193. * RESETS (IN - IN+1).
  2194. *
  2195. * CALLS CFL.
  2196. *
  2197. * USES CM - CM+4.
  2198.  
  2199.  
  2200. COB SUBR ENTRY/EXIT
  2201. FETA 2 READ IN
  2202. CRD CM
  2203. LDD CM+3 SET IN
  2204. LPN 77
  2205. STD IN
  2206. SHN 14
  2207. LMD CM+4
  2208. STD IN+1
  2209. RJM CFL CHECK ADDRESS
  2210. LDD IN LENGTH = IN - OUT
  2211. SBD OT
  2212. SHN 14
  2213. ADD IN+1
  2214. SBD OT+1
  2215. PJN COBX RETURN IF IN .GE. OUT
  2216. SHN 6 LENGTH = (LIMIT - OUT) + (IN - FIRST)
  2217. ADD LM
  2218. SBD FT
  2219. SHN 14
  2220. ADD LM+1
  2221. SBD FT+1
  2222. UJN COBX RETURN
  2223. DV3 SPACE 4,10
  2224. ** DV3 - DIVIDE BY 3.
  2225. *
  2226. * DV3 USES THE APPROXIMATION N/3 = (85*N + 22*N/64) / 256.
  2227. * ROUNDING UP IS DONE.
  2228. *
  2229. * ENTRY (A) = NUMBER.
  2230. *
  2231. * EXIT (A) = NUMBER / 3.
  2232. *
  2233. * CALLS NONE.
  2234. *
  2235. * USES T0, T2.
  2236.  
  2237.  
  2238. DV3 SUBR ENTRY/EXIT
  2239. ADN 2 ROUND UP
  2240. STD T2 SAVE N
  2241. SHN 2 N*4
  2242. ADD T2 N*5
  2243. SHN 1 N*10
  2244. ADD T2 N*11
  2245. SHN 1+14 N*22/64
  2246. STD T0
  2247. SHN 6 N*22
  2248. SBD T2 N*21
  2249. SHN 2 N*84
  2250. ADD T2 N*85
  2251. ADD T0 N*85 + N*22/64
  2252. SHN -10 (N*85 + N*22/64) / 256
  2253. LJM DV3X RETURN
  2254. GMT SPACE 4,10
  2255. ** GMT - GET MESSAGE TYPE.
  2256. *
  2257. * ENTRY 64 BYTE MESSAGE STARTING AT BUFR.
  2258. * ENTRY (BUFR) = START OF 64 BYTE M860 MESSAGE.
  2259. *
  2260. * EXIT (A) = MESSAGE TYPE(BYTE 4 OF MESSAGE).
  2261. *
  2262. * CALLS NONE.
  2263. *
  2264. * USES NONE.
  2265.  
  2266.  
  2267. GMT SUBR ENTRY/EXIT
  2268. LDM BUFR+2 UPPER 4 BITS OF TYPE
  2269. LPN 0#F
  2270. SHN 14
  2271. LMM BUFR+3
  2272. SHN -8D POSITION MESSAGE TYPE
  2273. UJN GMTX RETURN
  2274. IBP SPACE 4,10
  2275. ** IBP - INITIALIZE AND CHECK BUFFER PARAMETERS.
  2276. *
  2277. * ENTRY (FE - FE+1) = FET ADDRESS.
  2278. *
  2279. * EXIT FT, IN, OT, AND LM INITIALIZED.
  2280. *
  2281. * CALLS CFL.
  2282. *
  2283. * USES T1 - T5, CM - CM+4.
  2284.  
  2285.  
  2286. IBP SUBR ENTRY/EXIT
  2287. FETA 1
  2288. CRD CM READ FIRST
  2289. ADN 1
  2290. CRD T1 READ IN
  2291. ADN 2
  2292. CRD LM-3 READ LIMIT
  2293. SBN 1
  2294. CRD OT-3 READ OUT
  2295. LDD CM+3
  2296. LPN 77
  2297. STD FT
  2298. LDD CM+4
  2299. STD FT+1
  2300. LDD LM
  2301. LPN 77
  2302. STD LM
  2303. SHN 14
  2304. ADD LM+1
  2305. SBN 1 ALLOW LIMIT = FL
  2306. RJM CFL CHECK ADDRESS
  2307. LDD OT CHECK OUT
  2308. SBD LM
  2309. SHN 14
  2310. ADD OT+1
  2311. SBD LM+1
  2312. PJN IBP1 IF OUT GE LIMIT
  2313. LDD OT
  2314. SBD FT
  2315. SHN 14
  2316. ADD OT+1
  2317. SBD FT+1
  2318. MJN IBP1 IF OUT LT FIRST
  2319. LDD T1+4
  2320. STD IN+1
  2321. LDD T1+3
  2322. LPN 77
  2323. STD IN
  2324. SBD LM CHECK IN
  2325. SHN 14
  2326. ADD IN+1
  2327. SBD LM+1
  2328. PJN IBP1 IF IN GE LIMIT
  2329. LDD IN
  2330. SBD FT
  2331. SHN 14
  2332. ADD IN+1
  2333. SBD FT+1
  2334. PJN IBP2 IF IN GE FIRST
  2335. IBP1 ERROR RCBARG BUFFER ARGUMENT ERROR
  2336.  
  2337. IBP2 LJM IBPX RETURN
  2338. RMB SPACE 4,10
  2339. ** RMB - READ MESSAGE BUFFER.
  2340. *
  2341. * ENTRY (WC) = CM WORD COUNT.
  2342. *
  2343. * EXIT OUT POINTER UPDATED IN (OT - OT+1).
  2344. *
  2345. * CALLS NONE.
  2346. *
  2347. * USES T3, OT - OT+1, WC.
  2348.  
  2349.  
  2350. RMB SUBR ENTRY/EXIT
  2351. LDC BUFR
  2352. STM RMBA PP BUFFER ADDRESS
  2353. LDD LM
  2354. SBD OT
  2355. SHN 14
  2356. ADD LM+1
  2357. SBD OT+1
  2358. STD T3 WORD COUNT TO LIMIT
  2359. SBD WC
  2360. MJN RMB4 IF WRAPAROUND
  2361. RMB2 LDCA OT
  2362. CRM **,WC
  2363. RMBA EQU *-1
  2364. LDD WC
  2365. RAD OT+1
  2366. SHN -14
  2367. RAD OT UPDATE OUT
  2368. LMD LM
  2369. NJN RMB3 IF OUT NE LIMIT
  2370. LDD OT+1
  2371. LMD LM+1
  2372. NJN RMB3 IF OUT NE LIMIT
  2373. LDD FT
  2374. STD OT SET OUT = FIRST
  2375. LDD FT+1
  2376. STD OT+1
  2377. RMB3 LJM RMBX RETURN
  2378.  
  2379. RMB4 LDCA OT
  2380. CRM BUFR,T3
  2381. LDD FT SET OUT = FIRST
  2382. STD OT
  2383. LDD FT+1
  2384. STD OT+1
  2385. LDD T3
  2386. SHN 2
  2387. ADD T3 PP WORD COUNT
  2388. RAM RMBA UPDATE PP BUFFER ADDRESS
  2389. LDD WC
  2390. SBD T3
  2391. STD WC SET NEW WORD COUNT
  2392. LJM RMB2 READ REMAINING DATA
  2393. SCB SPACE 4,10
  2394. ** SCB - SET COMPLETE BIT.
  2395. *
  2396. * ENTRY (A) = ENDING STATUS.
  2397. * (EC) = ERROR CODE.
  2398. *
  2399. * EXIT FET UPDATED.
  2400. * (EC) = 0.
  2401. *
  2402. * CALLS REL.
  2403. *
  2404. * USES CM - CM+4, CN.
  2405.  
  2406.  
  2407. SCB SUBR ENTRY/EXIT
  2408. STD CN SAVE STATUS
  2409. RJM REL RELEASE CHANNEL
  2410. FETA
  2411. CRD CM READ FET STATUS WORD
  2412. LDD CM+3 CLEAR ANY EXISTING STATUS
  2413. SCN 77
  2414. STD CM+3
  2415. LDD CM+4
  2416. LPC 776
  2417. STD CM+4
  2418. LDD EC
  2419. SHN 12 POSITION ERROR CODE
  2420. LMD CN SET STATUS
  2421. LMD CM+4 RESTORE FUNCTION CODE
  2422. LMN 1 INSURE COMPLETE STATUS
  2423. STD CM+4
  2424. SHN -14
  2425. RAD CM+3 SET ERROR CODE
  2426. FETA
  2427. CWD CM UPDATE FET
  2428. LDN 0
  2429. STD EC CLEAR ERROR CODE
  2430. LJM SCBX RETURN
  2431. UCO SPACE 4,10
  2432. ** UCO - UPDATE CENTRAL OUT.
  2433. *
  2434. * ENTRY (FE) = FET ADDRESS.
  2435. * (OT - OT+1) = OUT POINTER.
  2436. *
  2437. * EXIT OUT UPDATED IN FET.
  2438. *
  2439. * CALLS NONE.
  2440. *
  2441. * USES CM - CM+4.
  2442.  
  2443.  
  2444. UCO SUBR ENTRY/EXIT
  2445. LDN ZERL
  2446. CRD CM
  2447. LDD OT
  2448. STD CM+3
  2449. LDD OT+1
  2450. STD CM+4
  2451. FETA 3
  2452. CWD CM UPDATE OUT
  2453. UJN UCOX RETURN
  2454. WBB SPACE 4,10
  2455. ** WBB - WRITE BINARY BUFFER.
  2456. *
  2457. * ENTRY (WC) = CM WORD COUNT.
  2458. *
  2459. * EXIT IN POINTER UPDATER IN FET.
  2460. *
  2461. * CALLS NONE.
  2462. *
  2463. * USES T3, CM - CM+4, WC.
  2464.  
  2465.  
  2466. WBB1 LDN ZERL UPDATE IN POINTER IN FET
  2467. CRD CM
  2468. LDD IN
  2469. STD CM+3
  2470. LDD IN+1
  2471. STD CM+4
  2472. FETA 2
  2473. CWD CM
  2474.  
  2475. WBB SUBR ENTRY/EXIT
  2476. LDC PBUF
  2477. STM WBBA PPU BUFFER ADDRESS
  2478. LDD LM
  2479. SBD IN
  2480. SHN 14
  2481. ADD LM+1
  2482. SBD IN+1
  2483. STD T3 WORD COUNT TO LIMIT
  2484. SBD WC
  2485. MJN WBB4 IF WRAPAROUND
  2486. WBB2 LDCA IN
  2487. CWM **,WC WRITE DATA TO BUFFER
  2488. WBBA EQU *-1
  2489. LDD WC
  2490. RAD IN+1
  2491. SHN -14
  2492. RAD IN
  2493. LMD LM
  2494. NJN WBB3 IF IN NE LIMIT
  2495. LDD IN+1
  2496. LMD LM+1
  2497. NJN WBB3 IF IN NE LIMIT
  2498. LDD FT SET IN = FIRST
  2499. STD IN
  2500. LDD FT+1
  2501. STD IN+1
  2502. WBB3 LJM WBB1 UPDATE CENTRAL IN
  2503.  
  2504. WBB4 LDCA IN
  2505. CWM PBUF,T3
  2506. LDD FT SET IN = FIRST
  2507. STD IN
  2508. LDD FT+1
  2509. STD IN+1
  2510. LDD T3 UPDATE PP BUFFER ADDRESS
  2511. SHN 2
  2512. ADD T3
  2513. RAM WBBA
  2514. LDD WC
  2515. SBD T3
  2516. STD WC SET REMAINING WORD COUNT
  2517. LJM WBB2 READ REMAINING DATA
  2518. WMB SPACE 4,10
  2519. ** WMB - WRITE MESSAGE BUFFER.
  2520. *
  2521. * ENTRY (WC) = CM WORD COUNT.
  2522. *
  2523. * EXIT IN POINTER UPDATED IN PP.
  2524. *
  2525. * CALLS NONE.
  2526. *
  2527. * USES T3, IN - IN+1, WC.
  2528.  
  2529.  
  2530. WMB SUBR ENTRY/EXIT
  2531. LDC BUFR
  2532. STM WMBA PPU BUFFER ADDRESS
  2533. LDD LM
  2534. SBD IN
  2535. SHN 14
  2536. ADD LM+1
  2537. SBD IN+1
  2538. STD T3 WORD COUNT TO LIMIT
  2539. SBD WC
  2540. MJN WMB4 IF WRAPAROUND
  2541. WMB2 LDCA IN
  2542. CWM **,WC WRITE DATA TO BUFFER
  2543. WMBA EQU *-1
  2544. LDD WC
  2545. RAD IN+1
  2546. SHN -14
  2547. RAD IN
  2548. LMD LM
  2549. NJN WMB3 IF IN NE LIMIT
  2550. LDD IN+1
  2551. LMD LM+1
  2552. NJN WMB3 IF IN NE LIMIT
  2553. LDD FT SET IN = FIRST
  2554. STD IN
  2555. LDD FT+1
  2556. STD IN+1
  2557. WMB3 LJM WMBX UPDATE CENTRAL IN
  2558.  
  2559. WMB4 LDCA IN
  2560. CWM BUFR,T3
  2561. LDD FT SET IN = FIRST
  2562. STD IN
  2563. LDD FT+1
  2564. STD IN+1
  2565. LDD T3 UPDATE PP BUFFER ADDRESS
  2566. SHN 2
  2567. ADD T3
  2568. RAM WMBA
  2569. LDD WC
  2570. SBD T3
  2571. STD WC SET REMAINING WORD COUNT
  2572. LJM WMB2 READ REMAINING DATA
  2573. SPACE 4,10
  2574. * COMMON DECKS.
  2575.  
  2576.  
  2577. RND$ EQU 1 ROUND UP
  2578. *CALL COMPDV5
  2579. TITLE PRESET.
  2580. USE PRESET
  2581. OVLA EQU *+5 OVERLAY LOAD ADDRESS
  2582. BUFR EQU * MESSAGE BUFFER
  2583. PBUF EQU BUFR PRU BUFFER
  2584. HBUF EQU PBUF+PRUL*5 STRIPE HEADER BUFFER
  2585. TBUF EQU HBUF+HDRL*5 STRIPE TRAILER BUFFER
  2586. LBUF EQU TBUF+TLRL*5 LENGTH OF ALL BUFFERS
  2587. ERRNG 7776-LBUF BUFFER OVERFLOW
  2588. ERRNG 7777-BUFR-PRUL MESSAGE BUFFER OVERFLOW
  2589. PRS SPACE 4,10
  2590. * PRS - PRESET.
  2591.  
  2592.  
  2593. PRS SUBR ENTRY/EXIT
  2594. LDN 0
  2595. STD EC CLEAR ERROR CODE
  2596. STD MW CLEAR MESSAGE WAITING FLAGS
  2597. LDC IPLM
  2598. STD IC SET IDLE PASS LIMIT
  2599. LDD IR+3
  2600. LPN 77
  2601. SHN 14
  2602. ADD IR+4
  2603. RJM CFL
  2604. CRD CN READ PARAMETER WORD
  2605. LDD CN+3
  2606. STD ES EST ORDINAL FOR CONTROL UNIT
  2607. SFA EST,ES GET EST ENTRY ADDRESS
  2608. CRD CM READ EST ENTRY
  2609. LDD CM+4
  2610. LPC 7000
  2611. STD EQ EQUIPMENT NUMBER
  2612. LDD IR+3
  2613. SHN -6 FUNCTION CODE
  2614. STD T1
  2615. ZJN PRS0 IF NO FUNCTION
  2616. SBN TREQL
  2617. MJN PRS2 IF VALID FUNCTION
  2618. PRS0 LDC =C*1SS - INVALID FUNCTION.*
  2619. RJM DFM
  2620. PRS1 LJM DPP DROP
  2621.  
  2622. PRS2 LDM TREQ,T1
  2623. STD T1
  2624. LJM 0,T1 INITIALIZE FOR FUNCTION
  2625.  
  2626. * SCH - SET CHANNELS IN EST
  2627.  
  2628. SCH LDD ES
  2629. STD CM+1 EQUIPMENT NUMBER
  2630. LDD IR+2
  2631. STD CM+3 CHANNELS
  2632. LDN 2 SET CHANNELS SUBFUNCTION
  2633. STD CM+2
  2634. MONITOR SEQM SET CHANNELS
  2635. UJN PRS1 DROP PP
  2636.  
  2637. * ETD - ENABLE TDAM REQUEST BUFFER
  2638.  
  2639. ETD NFA ICAN
  2640. CRD CM
  2641. LDD CM
  2642. LPC 3777
  2643. ADC 4000 ENABLE PP *TDAM* WRITE
  2644. STD CM
  2645. NFA ICAN UPDATE INTER-CONTROL POINT CONTROLS
  2646. CWD CM
  2647. UJN PRS1 DROP
  2648.  
  2649. * MSG - INITIALIZE FOR MESSAGE I/O
  2650.  
  2651. MSG LDD CN+1
  2652. SCN 77
  2653. SHN 6
  2654. LMD CN
  2655. SHN 6
  2656. STM SSDA INITIALIZE MESSAGE OUTPUT ADDRESS
  2657. SHN -14
  2658. RAM SSDA-1
  2659. LPN 77
  2660. SHN 14
  2661. LMM SSDA
  2662. ADN 4 LIMIT WORD
  2663. RJM CFL CHECK ADDRESS
  2664. CRD T7 READ LIMIT WORD
  2665. SBN 4+1
  2666. CRD CM READ POINTER TO MESSAGE OUTPUT FET
  2667. LDC TCHS CHANNEL INSTRUCTION LIST
  2668. STD T1
  2669. PRS3 LDI T1
  2670. ZJN PRS4 IF END OF LIST
  2671. STD T2
  2672. LDI T2
  2673. SCN 37
  2674. ADD T7 SET CHANNEL
  2675. STI T2
  2676. AOD T1 ADVANCE LIST
  2677. UJN PRS3 SET NEXT ENTRY
  2678.  
  2679. PRS4 LDD CM+3
  2680. LPN 77
  2681. RAM SSDB-1 INITIALIZE MESSAGE INPUT FET ADDRESS
  2682. LPN 77
  2683. SHN 14
  2684. LMD CM+4
  2685. STM SSDB
  2686. RJM CFL CHECK ADDRESS
  2687. LDD CN+1 SET DRIVER RECALL ADDRESS
  2688. LPN 77
  2689. STD DR
  2690. SHN 14
  2691. ADD CN+2
  2692. STD DR+1
  2693. RJM CFL CHECK FIELDLENGTH
  2694. LDD CP
  2695. ADN SNSW
  2696. CRD CM READ SENSE SWITCH WORD
  2697. LDD CM+4
  2698. SHN 21-6
  2699. MJN PRS5 IF TRACE MODE REQUESTED
  2700. LJM PRSX RETURN
  2701.  
  2702. PRS5 AOM TRCA
  2703. AOM TRCB
  2704. AOM TRCC
  2705. AOM TRCD
  2706. AOM TRCE
  2707. AOM TRCF
  2708. AOM TRCG
  2709. LJM PRSX RETURN
  2710. TCHS SPACE 4,10
  2711. ** TCHS - CHANNEL TABLE.
  2712. * TABLE CONTAINS THE ADDRESSES OF ALL INSTRUCTIONS WHICH
  2713. * REFERENCE THE EQUIPMENT CHANNEL.
  2714.  
  2715.  
  2716. TCHS CHTB
  2717. SPACE 4,10
  2718. * TREQ - TABLE OF LEGAL FUNCTION PRESET ROUTINES.
  2719.  
  2720.  
  2721. TREQ BSS 0
  2722. LOC 0
  2723. CON 0 NULL FUNCTION
  2724. IRTDAM CON ETD ENABLE TDAM BUFFER
  2725. IRPMSG CON MSG MESSAGE I/O
  2726. IRMDAT CON MSG MESSAGE AND DATA I/O
  2727. IRCHAN CON SCH SET CHANNELS IN EST
  2728. LOC *O
  2729. TREQL EQU *-TREQ
  2730. TITLE 2SS - ERROR MESSAGE OVERLAY.
  2731. IDENT 2SS,EMSX
  2732. *COMMENT 1SS - ERROR MESSAGE OVERLAY.
  2733. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  2734. *** 2SS - ERROR MESSAGE OVERLAY.
  2735. *
  2736. * 2SS IS CALLED BY 1SS TO ISSUE ERROR MESSAGES
  2737. * TO THE MSAS SUBSYSTEM LOCAL DAYFILE WHEN AN
  2738. * ERROR IS DETECTED.
  2739. *
  2740. * ENTRY
  2741. *
  2742. * (ERR) = PP ADDRESS WHERE ERROR DETECTED.
  2743. * (GSTS) = START OF HAEDWARE STATUS BUFFER(25 WORDS).
  2744. *
  2745. * EXIT
  2746. * MESSAGES ISSUED.
  2747. *
  2748. *
  2749. * MESSAGE FOR ALL ERRORS.
  2750. *
  2751. * ERR = XX, ADR YYYY.
  2752. *
  2753. * XX ERROR CODE (SEE COMBCDD).
  2754. * YYYY PP ADDRESS WHERE ERROR DETECTED.
  2755. *
  2756. * HARDWARE ERROR MESSAGES.
  2757. *
  2758. * SS,CXX,GSSSSSSSSSSSS.
  2759. * SS,CXX,FYYYYYYYYYYYYYYYYYYYY.
  2760. * SS,CXX,DZZZZ. MESSAGE.
  2761. *
  2762. * WHERE.
  2763. * XX = CHANNEL.
  2764. * SS...S = GENERAL STATUS.
  2765. * YY...Y = FSC STATUS.
  2766. * ZZZZ = DIAGNOSTIC STATUS.
  2767. * MESSAGE = ONE OF THE FOLLOWING.
  2768. * STATUS ERROR. = ALERT STATUS AND NONE OF THE FOLLOWING.
  2769. * INPUT HANG. = CHANNEL HUNG ON INPUT OPERATION.
  2770. * OUTPUT HANG. = CHANNEL HUNG ON OUTPUT OPERATION.
  2771. * FUNCTION TIMEOUT. = NO RESPONSE TO FUNCTION IN 2 SECONDS.
  2772. * NO EOP. = NO ENDING STATUS FROM M860 IN 6 SECONDS.
  2773. * CHAN. MALF. = NO RESPONSE TO DIAGNOSTIC STATUS FUNCTION.
  2774. * CHAN. PE. = FSC DETECTED CHANNEL A CHANNEL PARITY ERROR.
  2775. * FSC MEM. PE. = FSC HAD A MEMORY PARITY ERROR.
  2776. * FSC NOT RUNNING. = FSC PROCESSOR WAS NOT RUNNING.
  2777. * FSC ABNORMAL. = FSC ABNORMAL STATUS.
  2778. EJECT
  2779. EMS SPACE 0
  2780. ** EMS - ERROR MESSAGE PROCESSOR
  2781. *
  2782. * ENTRY (EC) = ERROR CODE.
  2783. * (GSTS) = STATUS BUFFER.
  2784. *
  2785. * EXIT MESSAGES ISSUED.
  2786. *
  2787. * USES T1, T2, CN, IN, OT, LM.
  2788. *
  2789. * CALLS C2D.
  2790.  
  2791.  
  2792. ORG OVLA
  2793. EMS SUBR ENTRY/EXIT
  2794. LDD CP
  2795. ADN SNSW
  2796. CRD CM READ SENSE SWITCH WORD
  2797. LDD CM+4
  2798. SHN 21-6
  2799. MJN EMS00 IF TRACE MODE
  2800. LDD EC
  2801. SBN RCHWET
  2802. MJN EMSX IF NOT HARDWARE ERROR
  2803. LJM EMS0 MUST BE HARDWARE ERROR
  2804.  
  2805. EMS00 LDM ERRT-1,EC
  2806. STD T1 GET ERROR TYPE MESSAGE
  2807. LDI T1
  2808. STM EMSE
  2809. LDM 1,T1
  2810. STM EMSE+1
  2811. LDM 2,T1
  2812. STM EMSE+2
  2813. LDM ERR GET ADDRESS WHERE DETECTED
  2814. SBN 3
  2815. SHN -6
  2816. RJM C2D UPPER DIGITS
  2817. STM EMSE+6
  2818. LDM ERR
  2819. SBN 3
  2820. RJM C2D LOWRE DIGITS
  2821. STM EMSE+7
  2822. LDC EMSE+CPON
  2823. RJM DFM ISSUE MESSAGE
  2824. LDD EC
  2825. SBN RCHWET
  2826. PJN EMS0 IF HARDWARE ERROR
  2827. LJM EMSX RETURN
  2828.  
  2829. EMS0 LDM CHAN GET CHANNEL USED
  2830. RJM C2D CONVERT TO DISPLAY
  2831. STM EMSA+2 STORE IN MESSAGES
  2832. STM EMSB+2
  2833. STM EMSC+2
  2834. LDC GSTS GENERAL STATUS BUFFER
  2835. STD IN
  2836. LDC EMSA+4
  2837. STD OT
  2838. EMS1 LDI IN
  2839. SHN -6
  2840. RJM C2D CONVERT UPPER 2 DIGITS
  2841. STI OT
  2842. AOD OT
  2843. LDI IN
  2844. RJM C2D CONVERT LOWER 2 DIGITS
  2845. STI OT
  2846. AOD OT
  2847. AOD IN
  2848. LMC FSTS
  2849. NJN EMS1 IF NOT AT FSC STATUS
  2850. LDC EMSA+CPON
  2851. RJM DFM ISSUE MESSAGE TO CONTROL POINT DAYFILE
  2852. LDN 4 SET UP FOR 4 MESSAGES OF 5 BUTES EACH
  2853. STD CN
  2854. EMS2 LDD IN
  2855. ADN 5
  2856. STD LM
  2857. LDC EMSB+4
  2858. STD OT
  2859. EMS3 LDI IN
  2860. SHN -6
  2861. RJM C2D CONVERT LOWER 2 DIGITS
  2862. STI OT
  2863. AOD OT
  2864. LDI IN
  2865. RJM C2D CONVERT LOWER 2 DIGITS
  2866. STI OT
  2867. AOD OT
  2868. AOD IN
  2869. LMD LM
  2870. NJN EMS3 IF NOT 5 BYTES MOVED
  2871. LDC EMSB+CPON
  2872. RJM DFM ISSUE MESSAGE TO CONTROL POINT DAYFILE
  2873. SOD CN
  2874. NJN EMS2 IF NOT 4 MESSAGES
  2875. LDM DSTS GET DIAGNOSTIC STATUS
  2876. SHN -6
  2877. RJM C2D CONVERT UPPER 2 DIGITS
  2878. STM EMSC+4
  2879. LDM DSTS
  2880. RJM C2D CONVERT LOWER 2 DIGITS
  2881. STM EMSC+5
  2882. LDC EMSD MOVE MESSAGE
  2883. STD OT
  2884. LDD EC ERROR CODE TO SSEXEC
  2885. SBN RCHWET REMOVE HARDWARE ERROR BIAS
  2886. STD T1
  2887. LDM EMST,T1 ADDRESS OF SPECIFIC MESSAGE
  2888. STD IN
  2889. EMS4 LDI IN
  2890. STI OT MOVE MESSAGE
  2891. ZJN EMS5 IF END OF MESSAGE
  2892. AOD IN
  2893. AOD OT
  2894. UJN EMS4 FINISH MOVE
  2895.  
  2896. EMS5 LDC EMSC+CPON
  2897. RJM DFM ISSUE MESSAGE TO CONTROL POINT DAYFILE
  2898. LJM EMSX RETURN
  2899.  
  2900.  
  2901. EMSA DIS ,*SS,CXX,GSSSSSSSSSSSS.*
  2902. EMSB DIS ,*SS,CXX,FXXXXXXXXXXXXXXXXXXXX.*
  2903. EMSC DATA 14HSS,CXX,DZZZZ,
  2904. EMSD BSS 30 SPECIFIC ERROR MESSAGE
  2905. EMSE DIS ,*RCXXXX, ADR YYYY.*
  2906. SPACE 4,10
  2907. * EMST - TABLE OF SPECIFIC ERROR MESSAGES.
  2908.  
  2909.  
  2910. EMST BSS 0
  2911. CON =C*STATUS ERROR.*
  2912. CON =C*INPUT HANG.*
  2913. CON =C*OUTPUT HANG.*
  2914. CON =C*FUNCTION TIMEOUT.*
  2915. CON =C*NO EOP.*
  2916. CON =C*CHAN. MALF.*
  2917. CON =C*CHAN. PE.*
  2918. CON =C*CCC MEM. PE.*
  2919. CON =C*CCC NOT RUNNING.*
  2920. CON =C*CCC ABNORMAL.*
  2921. CON =C*DIAGNOSTIC FAILURE.*
  2922. CON 0 CPU ONLY ERROR CODE
  2923. CON =C*OPERATOR IMPL REQUIRED.*
  2924. CON =C*CHANNEL INTERFACE OFF LINE.*
  2925. ERRT SPACE 4,10
  2926. ** ERRT - TABLE OF ERROR RETURN CODES.
  2927.  
  2928.  
  2929. ERRT BSS 0
  2930. CON =6HRCILLF ILLEGAL FUNCTION
  2931. CON =6HRCDLER DATA LENGTH ERROR
  2932. CON =6HRCCWER CONTROL WORD ERROR
  2933. CON =6HRCBARG BUFFER ARGUMENT ERROR
  2934. CON =6HRCHDER HEADER/TRAILER ERROR
  2935. CON =6HRCENDV END OF VOLUME
  2936. CON =6HRCILLU ILLEGAL UNIT NUMBER
  2937. CON =6HRCBFTO BUFFER TIMEOUT ERROR
  2938. CON =6HRCTBRT TAPE BOTTOM RIGHT
  2939. CON =6HRCTERF TERMINATE FLAG DETECTED
  2940. CON =6HNO ERR
  2941. CON =6HNO ERR
  2942. CON =6HNO ERR
  2943. CON =6HNO ERR
  2944. CON =6HNO ERR
  2945. CON =6HRCSTER STATUS ERROR
  2946. CON =6HRCCHIN CHANNEL HUNG ON INPUT
  2947. CON =6HRCCHOT CHANNEL HUNG ON OUTPUT
  2948. CON =6HRCFCTO FUNCTION TIMEOUT
  2949. CON =6HRCNEOP NO END OF OPERATION
  2950. CON =6HRCCHMF CHANNEL MALFUNCTION
  2951. CON =6HRCCHPE CHANNEL PARITY ERROR
  2952. CON =6HRCFSPE FSC MEMORY PARITY ERR
  2953. CON =6HRCFSNR FSC NOT RUNNING
  2954. CON =6HRCFSAB FSC ABNORMAL
  2955. CON =6HRCFSDF FSC DIAGNOSTIC FAILURE
  2956. CON =6HRCXSUM XSUM ERROR (CM DRIVER)
  2957. CON =6HRCIMPL OPERATOR IMPL REQUIRED
  2958. CON =6HRCCIFO M860 CHANNEL OFFLINE
  2959. SPACE 4,10
  2960. * COMMON DECKS.
  2961.  
  2962.  
  2963. *CALL COMPC2D
  2964. SPACE 4,10
  2965. END