User Tools

Site Tools


cdc:nos2.source:opl871:1to

Table of Contents

1TO

Table Of Contents

  • [00007] 1TO - TERMINAL INPUT/OUTPUT.
  • [00009] TERMINAL INPUT/OUTPUT.
  • [00085] TEPS - TABLE OF ENTRY POINTERS (SORTED).
  • [00157] MAIN ROUTINE.
  • [00255] DPP - DROP PP.
  • [00263] ABT - ABORTS IAF.
  • [00283] CAB - COMPUTE ALLOWABLE BLOCKSIZE.
  • [00320] CKN - CHECK THE NEXT EQUIPMENT.
  • [00351] CUA - CHECK UNIT ACTIVITY.
  • [00448] PRC - PROCESS *1RO* CALL.
  • [00502] IDP - INPUT DATA PROCESSING.
  • [00582] DPB - DUMP POT BUFFER TO DISK.
  • [00618] RPD - READ POT DATA TO PPU BUFFER.
  • [00689] SLB - SET SECTOR LINKAGE BYTES.
  • [00741] WES - WRITE EOI SECTOR.
  • [00778] PRESET.
  • [00780] PRS - PRESET.
  • [01001] CEQ - CHECK EQUIPMENT.
  • [01029] GNE - GET NEXT ENTRY.
  • [01091] POR - PROCESS OUTPUT REQUEST.
  • [01163] RIT - REQUEST INPUT TRACKS.
  • [01223] SEP - SORT ENTRY POINTERS.
  • [01287] OUTPUT PROCESSING SUBROUTINES.
  • [01303] ODP - OUTPUT DATA PROCESSING.
  • [01367] PRO - SUBROUTINES.
  • [01368] OUTPUT PROCESSING SUBROUTINES.
  • [01370] ANR - ASSURE NETWORK REQUIREMENTS.
  • [01432] LDP - LOAD DATA INTO POTS.
  • [01537] RAS - READ ADDITIONAL SECTORS.
  • [01598] RDD - READ DATA FROM DISK.
  • [01655] SDI - SEARCH DISK FOR BEGINNING LINE.
  • [01725] SSE - SEARCH SECTOR FOR LINE NUMBER OF LAST LINE IN BUFFER.
  • [01775] SUL - SET UP LINE NUMBER.
  • [01861] UDA - UPDATE DISK ADDRESSES.
  • [01919] UTT - UPDATE TERMINAL TABLE.
  • [01995] BUFFERS.

Source Code

1TO.txt
  1. IDENT 1TO,ITO
  2. PERIPH
  3. BASE MIXED
  4. SST
  5. *COMMENT 1TO - TERMINAL INPUT/OUTPUT.
  6. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  7. TITLE 1TO - TERMINAL INPUT/OUTPUT.
  8. SPACE 4
  9. *** 1TO - TERMINAL INPUT/OUTPUT.
  10. *
  11. * R. E. TATE. 70/09/13.
  12. * L. G. ALEXANDER. 77/04/01.
  13. * A. J. KOMOR. 77/11/01.
  14. * L. K. TUTTLE 81/11/02.
  15. SPACE 4
  16. *** 1TO IS CALLED BY *IAF* TO PROCESS A QUEUE OF
  17. * REQUESTS FOR TERMINAL INPUT AND OUTPUT WHICH REQUIRE
  18. * DISK ACCESSES. THE QUEUE PASSED TO *1TO* IS SORTED IN
  19. * ORDER OF REQUEST TYPE, INPUT FIRST. *1TO* WILL ACCESS THE
  20. * EJT TO OBTAIN DISK INFORMATION. REQUESTS OF EACH
  21. * TYPE ARE THEN PROCESSED BY EQUIPMENT AND TRACK TO
  22. * MINIMIZE DISK TIME. IF THERE ARE REQUESTS FOR MORE THAN
  23. * ONE MASS STORAGE DEVICE, THE ENTRIES ARE PROCESSED ON
  24. * A DEVICE BASIS IN ORDER OF AVAILABLE CHANNELS.
  25. *
  26. * *1TO* MAY ALSO BE CALLED BY *1RO* TO PROCESS THE
  27. * FIRST BUFFER OF DATA ON A ROLLOUT.
  28. *
  29. * UPON *1TO* COMPLETION, THE REQUEST QUEUE IS
  30. * RETURN TO IAF. THE UPDATED POT POINTERS IN
  31. * IT ARE USED TO DROP DUMPED SOURCE INPUT POTS, AND TO
  32. * ASSIGN FILLED OUTPUT DATA POTS.
  33. SPACE 4,20
  34. *** CALL.
  35. *
  36. *
  37. * FROM *IAF* -
  38. *
  39. *T 18/ *1TO*,6/ CP,12/ PP,6/ ,18/ RETURN ADDRESS
  40. *
  41. * CP IAF CONTROL POINT NUMBER.
  42. * PP POT POINTER TO FIRST POT OF REQUESTS.
  43. *
  44. *
  45. * CALL FROM *1RO*.
  46. *
  47. * 18/ *1TO*,6/ CP,24/ 0,12/ TN
  48. *
  49. * CP IAF CONTROL POINT NUMBER.
  50. * TN TERMINAL NUMBER / APPLICATION CONNECTION NUMBER.
  51. SPACE 4,20
  52. *** *IAF* REQUEST QUEUE FORMAT.
  53. *
  54. *
  55. * FORMAT WHEN CALLED.
  56. *
  57. *T, 6/ FT,6/ RT,12/ EJTO,12/ NP,12/ FP,12/ TN
  58. *
  59. * FT FILE TYPE.
  60. * 0 = PRIMARY FILE.
  61. * 1 = ROLLOUT FILE.
  62. * RT REQUEST TYPE.
  63. * 0 = DUMP INPUT TO PRIMARY FILE.
  64. * 1 = OUTPUT TO TERMINAL.
  65. * EJTO EJT ORDINAL OF JOB.
  66. * NP NUMBER OF POTS TO DUMP TO PRIMARY FILE (INPUT).
  67. * FP FIRST POT FOR EITHER INPUT OR OUTPUT.
  68. * TN TERMINAL NUMBER / APPLICATION CONNECTION NUMBER.
  69. *
  70. * THE REQUEST UNDERGOES SIGNIFICANT CHANGE IN PRESET.
  71. * THE ENTRY AND EXIT FORMATS FOR PRESET ARE FOUND IN PRESET
  72. * HEADER DOCUMENTATION.
  73. *
  74. *
  75. * FORMAT ON TERMINATION -
  76. *
  77. *T 6/ RT,6/ NP,12/ 0,12/ LP,12/ FP,12/ TN
  78. *
  79. * RT REQUEST TYPE.
  80. * NP NUMBER OF POTS FILLED (OUTPUT ONLY).
  81. * LP LAST POT TO DROP OR ASSIGN (0 IF NONE TO DROP).
  82. * FP FIRST POT OF INPUT OR FOR OUTPUT (0 IF NONE TO DROP).
  83. * TN TERMINAL NUMBER / APPLICATION CONNECTION NUMBER.
  84. TEPS SPACE 4,10
  85. ** TEPS - TABLE OF ENTRY POINTERS (SORTED).
  86. *
  87. * EACH ENTRY CONSISTS OF TWO BYTES -
  88. * THE FIRST BYTE CONTAINS THE POINTER TO THE REQUEST IN EBUF.
  89. * THE SECOND BYTE CONTAINS
  90. * FOR INPUT - THE SECTOR NUMBER OF THE CURRENT EOI.
  91. * FOR OUTPUT - THE WORD COUNT IN THE CURRENT SECTOR.
  92. SPACE 4,10
  93. ** ABORT CONDITIONS.
  94. *
  95. * *1TO* WILL ABORT *IAF* IF THE FOLLOWING CONDITIONS ARE
  96. * ENCOUNTERED. A DAYFILE MESSAGE * 1TO ABORT NN, PPPP.* WILL
  97. * BE ISSUED WHERE *NN* = ERROR CODE AND *PPPP* = PARAMETER
  98. * POT POINTER.
  99. *
  100. * INPUT REQUESTS AFTER OUTPUT REQUESTS FROM IAF. (NN = 1)
  101. * NO REQUESTS IN THE QUEUE. (NN = 2)
  102. * REQUEST FOR A NON - MASS STORAGE DEVICE. (NN = 3)
  103. * *UTEM* REJECT OR UNEXPECTED EJT STATUS. (NN = 4)
  104. * ENTRY COUNT LOST WHILE SORTING QUEUE. (NN = 5)
  105. * PC = 0 ON SOURCE DUMP. (NN = 6)
  106. * PP = 0 ON OUTPUT REQUEST. (NN = 7)
  107. SPACE 4
  108. ** ASSEMBLY VARIABLES FOR DEFINITION COMMON DECKS.
  109.  
  110.  
  111. WEI$ EQU 1 DEFINE VARIABLE BUFFER (FOR *COMPWEI*)
  112. SPACE 4
  113. ** DEFINITION COMMON DECKS.
  114.  
  115.  
  116. SPACE 4
  117. *CALL,COMPMAC
  118. *CALL COMSEJT
  119. *CALL,COMSMSP
  120. *CALL COMSJRO
  121. *CALL COMSPIM
  122. *CALL,COMSREM
  123. *CALL COMSTCM
  124. *CALL COMSWEI
  125. SPACE 4
  126. **** DIRECT LOCATION ASSIGNMENTS.
  127. SPACE 2
  128. S3 EQU 17 SCRATCH CELL
  129. FS EQU 20 - 24 FILE STATUS BYTES (5 LOCATIONS)
  130. CN EQU 25 - 31 TERMINAL TABLE VROT WORD (5 LOCATIONS)
  131. TN EQU 32 TERMINAL NUMBER
  132. TT EQU 33 - 34 TERMINAL TABLE ADDRESS (2 LOCATIONS)
  133. CT EQU 35 POT LENGTH
  134. SC EQU 36 NUMBER OF WORDS IN CURRENT SECTOR
  135. LW EQU 41 LAST WORD IN PREVIOUS SECTOR
  136. S2 EQU 42 SCRATCH CELL (OUTPUT PROCESSING)
  137. LN EQU 43 - 47 LINE NUMBER (5 LOCATIONS)
  138. IN EQU LN INPUT REQUEST COUNTER (PRS)
  139. OT EQU LN+1 OUTPUT REQUEST COUNTER (PRS)
  140. EC EQU LN+2 ENTRY COUNT (PRS)
  141. NW EQU 50 USER BLOCKSIZE IN CM WORDS.
  142. WL EQU 51 NUMBER OF WORDS OF OUTPUT IN BUFFER.
  143. PP EQU 52 POT POINTER
  144. PL EQU 53 LENGTH OF LAST POT
  145. S1 EQU PL SCRATCH CELL
  146. PC EQU 54 NUMBER OF POTS TO BE DUMPED
  147. PA EQU 60 - 61 POT ADDRESS (2 LOCATIONS)
  148. BC EQU 62 BUFFER COUNT
  149. BA EQU 63 CURRENT FWA OF BUFFER
  150. EP EQU 64 CURRENT ENTRY POINTER
  151. CB EQU 65 CONTROL BYTE INDEX
  152. WC EQU 66 WORD COUNT (POSITION) IN CURRENT SECTOR
  153.  
  154. ****
  155. EJECT
  156. 1TO TITLE MAIN ROUTINE.
  157. ** 1TO - MAIN ROUTINE.
  158. *
  159. * THIS ROUTINE PROCESSES A LIST OF REQUESTS ON ONE OR MORE
  160. * EQUIPMENTS. IF MORE THAN ONE EQUIPMENT IS PRESENT ALL
  161. * LIST ENTRIES ARE SEARCHED FOR THE ONE WITH THE SMALLEST
  162. * DEVICE ACTIVITY. ONCE THIS SELECTION IS MADE THE
  163. * INPUT/OUTPUT OPERATION IS PERFORMED AND THE CHANNEL IS
  164. * RELEASED. FINALLY THE ENTRY PROCESSING IS COMPLETED BY
  165. * EITHER TERMINATING THE SOURCE PROCESSING (IF INPUT
  166. * PROCESSING) OR FILLING POTS (IF OUTPUT PROCESSING).
  167. * AFTER ALL ENTRIES IN THE LIST HAVE BEEN PROCESSED *IAF*
  168. * IS SENT NOTIFICATION THAT ALL ENTRIES ARE COMPLETE.
  169.  
  170.  
  171. ORG PPFW
  172. ITO LJM PRS PRESET
  173.  
  174. ITO1 LDM ITOB REMAINING INPUT REQUESTS
  175. ADN 0 2TO LOADED FLAG
  176. ITOA EQU *-1
  177. NJN ITO2 IF LOADING NOT NECESSARY
  178. RJM DRC DROP RESERVED CHANNEL
  179. EXECUTE 2TO
  180. AOM ITOA SET 2TO LOADED
  181. LDN 0 SET NO EQUIPMENT
  182. STD T5
  183. ITO2 RJM CKN CHECK NEXT EQUIPMENT
  184. ZJN ITO3 IF SAME EQUIPMENT
  185. RJM CUA CHECK UNIT ACTIVITY
  186.  
  187. * PROCESS ENTRY.
  188.  
  189. ITO3 SETMS IO,(ND)
  190. LDM 4,EP SET TERMINAL NUMBER
  191. STD TN
  192. RJM STA SET TERMINAL TABLE ADDRESS
  193. ADN VROT
  194. CRD CN *VROT*
  195. LDM 3,EP SET POT POINTER
  196. STD PP
  197. LDM 1,EP SET TRACK
  198. STD T6
  199. STD FS+2
  200. LDM 2,EP SET SECTOR
  201. STD T7
  202. STD FS+3
  203. LDM CKNB SET EXTRA PARAMETER
  204. STD T1
  205. LDM 1,T1
  206. STD WC
  207. LDC 0 CHECK INPUT REQUEST COUNT
  208. ITOB EQU *-1
  209. ZJN ITO4 IF NO INPUT REQUESTS REMAINING
  210. LDD WC SET CURRENT EOI
  211. STD T7
  212. RJM IDP INPUT DATA PPOCESSING
  213. SOM ITOB DECREMENT INPUT REQUEST COUNT
  214. LDN 0 SET INPUT REQUEST PROCESSED
  215. UJN ITO5 CONTINUE PROCESSING QUEUE
  216.  
  217. ITO4 RJM /2TO/ODP PROCESS OUTPUT REQUEST
  218. LDC 100
  219. ADD PC
  220.  
  221. * RETURN HERE AT END OF INPUT/OUTPUT PROCESSING.
  222.  
  223. ITO5 STI EP SET REQUEST TYPE
  224. LDN 0 SET REQUEST PROCESSED
  225. STM 1,EP
  226. SOM TCRQ DECREMENT TOTAL COUNT OF REQUESTS
  227. ZJN ITO6 IF NO MORE ENTRIES
  228. LJM ITO1 PROCESS NEXT ENTRY
  229.  
  230. * ALL ENTRIES ARE COMPLETED AND NOTIFICATION SENT TO *IAF*.
  231.  
  232. ITO6 ENDMS
  233. LDD IA RETURN ENTRIES AND COMPLETE
  234. CRD IR
  235. ITO7 RJM SPA WRITE REQUEST POT
  236. CWM EBUF,CT
  237. ITOC EQU *-1 REQUEST QUEUE ADDRESS
  238. LDN VCPC*5
  239. RAM ITOC
  240. RJM UPP UPDATE POT POINTER
  241. NJN ITO7 IF MORE POTS TO WRITE
  242. LDD IA
  243. CRD IR
  244. LDN 0 SET COMPLETION FOR *IAF*
  245. STD IR
  246. STD IR+1
  247. LDD IR+3
  248. SHN 6
  249. ADD RA
  250. SHN 6
  251. ADD IR+4
  252. CWD IR
  253. * UJN DPP DROP PP
  254. DPP SPACE 4,10
  255. ** DPP - DROP PP.
  256.  
  257.  
  258. DPP MONITOR DPPM DROP PP
  259. LJM PPR EXIT TO PP RESIDENT
  260. TRQC SPACE 4,10
  261. TCRQ CON 0 TOTAL COUNT OF ALL REQUESTS
  262. ABT SPACE 4,10
  263. ** ABT - ABORTS IAF.
  264. *
  265. * ENTRY (A) = ERROR CODE.
  266. * PARAMETER POT POINTER SET IN MESSAGE.
  267. *
  268. * CALLS C2D, DFM.
  269. *
  270. * MACROS MONITOR.
  271.  
  272.  
  273. ABT SUBR ENTRY
  274. RJM C2D
  275. STM ABTA+6
  276. LDC ABTA ISSUE * 1TO ABORT NN, PPPP.*
  277. RJM DFM DAYFILE MESSAGE
  278. MONITOR ABTM
  279. LJM PPR EXIT TO PP RESIDENT
  280.  
  281. ABTA DATA C* 1TO ABORT NN, PPPP.*
  282. CAB SPACE 4,10
  283. ** CAB - COMPUTE ALLOWABLE BLOCKSIZE.
  284. *
  285. * ENTRY (TN) = TERMINAL NUMBER.
  286. *
  287. * EXIT (A) = BLOCKSIZE IN CM WORDS.
  288. * (NW) = SAME AS (A).
  289. *
  290. * USES CM - CM+4.
  291.  
  292.  
  293. CAB SUBR ENTRY/EXIT
  294. LDM PRCA
  295. SBD TN
  296. PJN CAB1 IF MUX TERMINAL
  297. LDD RA
  298. SHN 6
  299. ADK VMST
  300. CRD CM
  301. LDD CM+1
  302. SHN 6
  303. ADD RA
  304. SHN 6
  305. ADD CM+2
  306. ADD TN
  307. CRD CM
  308. LDD CM+3
  309. SHN -6
  310. LPN 37
  311. SHN 3
  312. UJN CAB2 SET NETWORK TERMINAL BLOCKSIZE
  313.  
  314. CAB1 LDK VOPL*VCPC SET MUX TERMINAL BLOCKSIZE
  315. CAB2 SBN 2 ALLOW FOR LINKAGE WORDS
  316. STD NW
  317. UJN CABX RETURN
  318. TTL 1TO - GENERAL SUBROUTINES.
  319. CKN SPACE 4,15
  320. ** CKN - CHECK THE NEXT EQUIPMENT.
  321. *
  322. * ENTRY (T5) = CURRENT EST ORDINAL.
  323. * (CKNB) = POINTER TO LAST ENTRY ADDRESS.
  324. *
  325. * EXIT (A) .EQ. 0, IF THE SAME EST ORDINAL.
  326. * (A) .NE. 0, NO REQUEST OF SAME TYPE AND EQ FOUND.
  327. * (T5) = CURRENT EST ORDINAL.
  328. * (EP) = POINTER TO NEXT REQUEST.
  329. *
  330. * USES EP.
  331.  
  332.  
  333. CKN2 LDN 1 SET NOT FOUND
  334.  
  335. CKN SUBR ENTRY/EXIT
  336. LDD T5
  337. ZJN CKN2 IF NO EQUIPMENT TO MATCH
  338. LDN 2 ADVANCE TO NEXT ENTRY
  339. RAM CKNB
  340. LMM CUAD
  341. ZJN CKN2 IF END OF REQUESTS OF SAME TYPE
  342. LDM * NEXT ENTRY TO PROCESS - RESET BY *CUA*
  343. CKNB EQU *-1
  344. STD EP
  345. LDM 1,EP
  346. ZJN CKN2 IF NEXT ENTRY ALREADY PROCESSED
  347. LDD T5 CURRENT EQUIPMENT
  348. LMI EP
  349. UJN CKNX EXIT
  350. CUA SPACE 4,10
  351. ** CUA - CHECK UNIT ACTIVITY.
  352. * DETERMINES THE BEST EQUIPMENT TO PROCESS ENTRIES FOR WITHIN
  353. * AN INPUT OR OUTPUT GROUP. THIS DETERMINATION IS BASED ON
  354. * MASS STORAGE ACTIVITY.
  355. *
  356. * ENTRY (ITOB) = INPUT REQUESTS REMAINING.
  357. * (CUAA) = FWA OF OUTPUT REQUEST GROUP.
  358. * (CUAB) = LWA+1 OF ALL REQUESTS.
  359. * (CUAC) = FWA OF GROUP TO BE PROCESSED.
  360. * (CUAD) = LWA+1 OF GROUP TO BE PROCESSED.
  361. *
  362. * CUAA - CUAD CONTAIN POINTERS INTO *TEPS*.
  363. *
  364. * EXIT (EP) = CORRECT ENTRY POINTER.
  365. * (T5) = CORRECT EQUIPMENT.
  366. * (CKNB) = POINTER TO ENTRY POINTER IN *TEPS*.
  367. *
  368. * USES T1 - T5, CM - CM+4, EP.
  369. *
  370. * CALLS DRC.
  371. *
  372. * MACROS ENDMS, SFA.
  373.  
  374.  
  375. CUA SUBR ENTRY/EXIT
  376. RJM DRC DROP RESERVED CHANNEL
  377. LDM ITOB
  378. NJN CUA1 IF INPUT GROUP NOT PROCESSED
  379. LDC TEPS SET FWA OF OUTPUT REQUEST GROUP
  380. CUAA EQU *-1 (SET BY PRS)
  381. STM CUAC
  382. LDC TEPS SET LWA+1 OF ALL ENTRIES
  383. CUAB EQU *-1 (SET BY PRS)
  384. STM CUAD
  385. CUA1 LDC TEPS START SEARCH AT BEGINNING OF GROUP
  386. CUAC EQU *-1
  387. STD T3
  388. LCN 0 INITIALIZE EQUIPMENT
  389. STD T5
  390. STD T2 INITIALIZE ACTIVITY COUNT
  391.  
  392. * PROCESS ENTRY.
  393.  
  394. CUA2 LDI T3 SET ENTRY ADDRESS
  395. STD EP
  396. LDM 1,EP
  397. ZJN CUA3 IF ENTRY ALREADY PROCESSED
  398. LDI EP
  399. LMD T5
  400. ZJN CUA3 IF THIS EQUIPMENT ALREADY CHECKED
  401. LMD T5
  402. STD T5 CHECK ACTIVITY
  403. SFA EST
  404. ADK EQDE
  405. CRD CM
  406. LDD CM+4
  407. SHN 3
  408. ADN DALL
  409. CRD CM
  410. LDD CM
  411. SBD T2
  412. PJN CUA3 IF NOT BETTER THAN PREVIOUS BEST
  413. RAD T2
  414. LDD EP
  415. STD T1
  416. LDD T3 MOVE TEPS POINTER
  417. STD T4
  418. LDD T2
  419. ZJN CUA4 IF NO ACTIVITY ON DEVICE
  420. CUA3 LDN 2 CHECK NEXT ENTRY
  421. RAD T3
  422. LMC * LWA+1 OF CURRENT GROUP
  423. CUAD EQU *-1
  424. NJP CUA2 IF MORE ENTRIES
  425. LDD T1 SET BEST ENTRY
  426. STD EP
  427. LDI EP
  428. STD T5
  429. CUA4 LDD T4
  430. STM CKNB
  431. LJM CUAX EXIT
  432. DRC SPACE 4,10
  433. ** DRC DROP RESERVED CHANNEL.
  434. *
  435. * ENTRY (T5) = EST ORDINAL IF CHANNEL RESERVED.
  436. *
  437. * MACROS ENDMS.
  438.  
  439.  
  440. DRC SUBR ENTRY/EXIT
  441. LDD T5
  442. ZJN DRCX IF NO CHANNEL RESERVED
  443. ENDMS
  444. LDN 0
  445. STD T5
  446. UJN DRCX EXIT
  447. PRC SPACE 4,10
  448. ** PRC - PROCESS *1RO* CALL.
  449. *
  450. * ENTRY (TN) = TERMINAL NUMBER.
  451. * (WC) = 0.
  452. * (PRCA) = LAST MUX TERMINAL NUMBER.
  453. *
  454. * EXIT TO *DPP*.
  455. *
  456. * USES CM - CM+4.
  457. *
  458. * CALLS LDP, UTT.
  459. *
  460. * MACROS DELAY, EXECUTE, MONITOR, PAUSE.
  461.  
  462.  
  463. PRC EXECUTE 2TO LOAD OUTPUT OVERLAY
  464. AOM /2TO/UTTA SKIP THE *UDA* CALL
  465. LDC IROB
  466. RJM /2TO/LDP LOAD POTS
  467. RJM /2TO/UTT UPDATE TERMINAL TABLE
  468. LDD PC PUT POT COUNT IN REQUEST
  469. STM PRCB+1
  470. PRC1 LDD MA MAKE OUTPUT ASSIGNMENT
  471. CWM PRCB,ON
  472. LDK ZERL
  473. CRD CM
  474. MONITOR TSEM
  475. LDD CM+1
  476. ZJP DPP IF *IAF* INACCESSIBLE OR ERROR
  477. LMC 7777
  478. NJP DPP IF REQUEST ACCEPTED
  479. PAUSE ST
  480. LDC 3600 *TSEM* QUEUE FULL - DELAY AND RETRY
  481. STD T1
  482. PRC2 DELAY
  483. SOD T1
  484. ZJN PRC1 IF TIME TO REISSUE REQUEST
  485. UJN PRC2 CONTINUE TO DELAY
  486.  
  487.  
  488. PRCA CON 0 LAST MUX TERMINAL
  489. PRCB VFD 12/VASO,12/,12/,12/,12/
  490. SPACE 4,10
  491. ** COMMON DECKS.
  492.  
  493.  
  494. *CALL COMPC2D
  495. *CALL COMPSPA
  496. *CALL COMPSTA
  497. EJT$ EQU 1 SELECT EJT PROCESSOR
  498. IFP$ EQU 1 SELECT REMOTE INITIALIZATION CODE
  499. *CALL COMPGFP
  500. *CALL COMPUPP
  501. IDP TITLE INPUT DATA PROCESSING.
  502. ** IDP - INPUT DATA PROCESSING.
  503. *
  504. * ENTRY (PP) = POT POINTER.
  505. * (T5 - T7) = DISK PARAMETERS.
  506. * DRIVER LOADED.
  507. *
  508. * EXIT CHANNEL RELEASED.
  509. * (TESA) = UPDATED DISK INFORMATION.
  510. * INPUT DATA APPENDED TO PRIMARY FILE.
  511. *
  512. * USES BA, LP, PC, PL, PP.
  513. *
  514. * CALLS ABT, DPB, RPD, SLB, WES.
  515. *
  516. * MACROS ENDMS, MONITOR, SETMS.
  517.  
  518.  
  519. IDP SUBR ENTRY/EXIT
  520. LDM 2,EP SET LENGTH OF DATA IN LAST POT
  521. SHN -11
  522. ADC LDNI
  523. STM IDPA
  524. LDM 2,EP SET NUMBER OF POTS TO PROCESS
  525. LPC 777
  526. STM IDPB
  527. NJN IDP1 IF POTS TO DUMP
  528.  
  529. * ABORT IAF ON ILLEGAL POT COUNT.
  530.  
  531. ENDMS
  532. LDN 6
  533. RJM ABT ABORT IAF
  534.  
  535. * SET POT PARAMETERS.
  536.  
  537. IDP1 LDC IBUF BUFFER ADDRESS
  538. STD BA
  539. IDPA LDN 0 LENGTH OF DATA IN LAST POT
  540. STD PL
  541. LDC 0 NUMBER OF POTS TO PROCESS
  542. IDPB EQU *-1
  543. STD PC SET POT COUNT
  544. ADC -BUFP
  545. MJN IDP2 IF ROOM IN ONE BUFFER
  546. STM IDPB
  547. LDC BUFP ONE BUFFER FULL
  548. STD PC
  549. LDN 0 PROCESS ALL OF LAST POT
  550. STD PL
  551. UJN IDP3 PROCESS BUFFER
  552.  
  553. IDP2 LDN 0 SET COMPLETE
  554. STM IDPB
  555.  
  556. * APPEND INPUT TO PRIMARY FILE.
  557.  
  558. IDP3 RJM RPD READ POT DATA TO PP BUFFER
  559. SETMS IO,(ND),IBUF
  560. LDC IBUF
  561. STD BA
  562. RJM SLB SET SECTOR LINKAGE BYTES
  563. LDC IBUF RESET BUFFER ADDRESS
  564. STD BA
  565. RJM DPB DUMP BUFFER TO DISK
  566. LDM IDPB
  567. ZJN IDP4 IF PROCESS COMPLETE
  568. LJM IDP1 LOOP FOR NEXT BUFFER
  569.  
  570. IDP4 RJM WES WRITE EOI SECTOR
  571.  
  572. * UPDATE TERMINAL TABLE.
  573.  
  574. AOD CN+4 SET TERMINAL TABLE COMPLETE
  575. LDD TT UPDATE TERMINAL TABLE
  576. SHN 14
  577. ADD TT+1
  578. ADN VROT
  579. CWD CN
  580. LJM IDPX RETURN
  581. DPB SPACE 4,10
  582. ** DPB - DUMP POT BUFFER TO DISK.
  583. *
  584. * ENTRY (BA) = BUFFER ADDRESS.
  585. * (BC) = BUFFER COUNT.
  586. * (T4) = CHANNEL.
  587. * (T5) = EQUIPMENT.
  588. * (T6) = CURRENT TRACK.
  589. * (T7) = CURRENT SECTOR.
  590. *
  591. * EXIT (T6) = CURRENT TRACK AFTER WRITE.
  592. * (T7) = NEXT SECTOR AFTER WRITE.
  593. *
  594. * USES BA, BC, T6, T7.
  595. *
  596. * CALLS POS, WDS.
  597.  
  598.  
  599. DPB SUBR ENTRY/EXIT
  600. DPB1 LDD BA WRITE DISK SECTOR
  601. LMC WCSF WRITE CONSECUTIVE SECTOR
  602. RJM WDS
  603. MJN DPBX IF FATAL DISK ERROR
  604. AOD T7 ADVANCE SECTOR
  605. LDI BA SET NEXT SECTOR TO WRITE
  606. SHN 6
  607. PJN DPB2 IF NOT NEW TRACK
  608. SHN -6
  609. STD T6
  610. LDN 0
  611. STD T7
  612. DPB2 LDC 502 ADVANCE BUFFER POINTER
  613. RAD BA
  614. SOD BC DECREMENT BUFFER COUNT
  615. NJN DPB1 IF NOT LAST SECTOR
  616. UJN DPBX RETURN
  617. RPD SPACE 4,15
  618. ** RPD - READ POT DATA TO PPU BUFFER.
  619. *
  620. * ENTRY (BA) = FWA PP BUFFER.
  621. * (PP) = FIRST POT POINTER.
  622. * (PC) = POT COUNT.
  623. * (PL) = LENGTH OF DATA IN LAST POT.
  624. *
  625. * EXIT ((BA)) = LOADED WITH DATA FROM POTS.
  626. * (BC) = NUMBER OF SECTORS READ (BUFFER COUNT).
  627. * REQUEST QUEUE ENTRY UPDATED.
  628. * WORD COUNT SET IN SECTOR CONTROL BYTES.
  629. *
  630. * USES BA, BC, T3, WC.
  631. *
  632. * CALLS SPA, UPP.
  633.  
  634.  
  635. RPD7 AOD BC COUNT BUFFER
  636. LDD WC SET WORD COUNT IN SECTOR CONTROL BYTES
  637. STI BA
  638. LDM RPDA ADVANCE BUFFER ADDRESS
  639. STD BA
  640. LDD PC
  641. NJN RPD1 IF NOT LAST POT
  642. LDD T3 SET POTS TO DROP IN QUEUE ENTRY
  643. STM 2,EP
  644. NJN RPDX IF POTS TO DROP
  645. STM 3,EP CLEAR FIRST POT POINTER
  646.  
  647. RPD SUBR ENTRY/EXIT
  648. LDN 0 INITIALIZE BUFFER COUNT
  649. STD BC
  650. STD T3
  651. RPD1 AOD BA SET FWA OF DATA IN BUFFER
  652. ADN 1
  653. STM RPDA
  654. LDN 0 RESET WORD COUNT
  655. STD WC
  656.  
  657. * READ NEXT POT TO BUFFER.
  658.  
  659. RPD2 RJM SPA SET POT ADDRESS
  660. CRM *,CT
  661. RPDA EQU *-1
  662. SOD PC DECREMENT POT COUNT
  663. NJN RPD3 IF NOT LAST POT
  664. LDD PL
  665. NJN RPD4 IF POT LENGTH PASSED
  666. RPD3 LDD PP SET LAST POT TO DROP
  667. STD T3
  668.  
  669. * ADVANCE TO NEXT POT.
  670.  
  671. LDN VCPC
  672. RPD4 RAD WC ADVANCE WORD COUNT
  673. LDN VCPC*5 ADVANCE READ ADDRESS
  674. RAM RPDA
  675. RJM UPP UPDATE POT POINTER
  676. LDD PP
  677. ZJN RPD6 IF END OF CHAIN
  678. LDD WC
  679. SHN -6
  680. NJN RPD5 IF FULL SECTOR
  681. LDD PC
  682. NJN RPD2 IF NOT LAST POT
  683. RPD5 LJM RPD7 TERMINATE SECTOR
  684.  
  685. RPD6 STD PC TERMINATE DATA PROCESSING
  686. STM IDPB
  687. UJN RPD5 TERMINATE SECTOR
  688. SLB SPACE 4,10
  689. ** SLB - SET SECTOR LINKAGE BYTES.
  690. *
  691. * NOTE - IT IS ASSUMED THAT THE SECTOR LIMIT OF THE
  692. * DEVICE WHICH THE PRIMARY FILE RESIDES UPON IS LESS THAN
  693. * THE MAXIMUM NUMBER OF SECTORS CONTAINED IN *BUFF*.
  694. *
  695. * ENTRY (BA) = BUFFER ADDRESS.
  696. * (T5) = EQUIPMENT.
  697. * (T6) = TRACK.
  698. * (T7) = SECTOR.
  699. *
  700. * EXIT ((BA)) = LINKAGE BYTES SET.
  701. * (BC) = TRUNCATED, IF ADDITIONAL TRACK UNAVAILABLE.
  702. *
  703. * USES CM - CM+4, T1, T2, T3.
  704.  
  705.  
  706. SLB SUBR ENTRY/EXIT
  707. LDM SLM SET LAST BUFFER ON THIS TRACK
  708. SBN 1
  709. STD T3
  710. SBD T7 SET NUMBER OF SECTORS REMAINING ON TRACK
  711. STD SC
  712. SBD BC
  713. PJN SLB1 IF ROOM ON PRESENT TRACK
  714. RJM SNT SET TRACK LINK
  715. STD CM+4
  716. NJN SLB1 IF TRACK ASSIGNED
  717. LDD SC TRUNCATE DATA
  718. STD BC
  719.  
  720. * SET LINKAGE BYTE.
  721.  
  722. SLB1 LDD T7 SET SECTOR INDEX
  723. STD T1
  724. LDD BC SET BUFFER COUNT
  725. STD T2
  726. SLB2 LDD T1
  727. LMD T3
  728. NJN SLB3 IF NOT LAST BUFFER ON THIS TRACK
  729. STD T1 RESET SECTOR INDEX
  730. LDD CM+4 SET NEXT TRACK IN LINKAGE
  731. UJN SLB4
  732.  
  733. SLB3 AOD T1 ADVANCE SECTOR INDEX
  734. SLB4 STI BA SET SECTOR LINKAGE
  735. LDC 502 ADVANCE BUFFER ADDRESS
  736. RAD BA
  737. SOD T2
  738. NJN SLB2 IF NOT LAST BUFFER
  739. LJM SLBX RETURN
  740. WES SPACE 4,10
  741. ** WES - WRITE EOI SECTOR.
  742. *
  743. * ENTRY (T5) = EQUIPMENT.
  744. * (T6) = CURRENT TRACK.
  745. * (T7) = CURRENT SECTOR.
  746. * (TN) = TERMINAL NUMBER.
  747. *
  748. * EXIT EOI SECTOR WRITTEN, UPDATED DISK INFORMATION SET.
  749. *
  750. * CALLS STA, WEI.
  751.  
  752.  
  753. WES SUBR ENTRY/EXIT
  754. RJM STA SET TERMINAL TABLE ADDRESS
  755. ADN VUIT GET EJT
  756. CRD CM
  757. LDD CM+4
  758. SFA EJT
  759. ADN PRFE
  760. CRD CM
  761. LDD CM+4 SET FIRST TRACK OF FILE IN EOI SECTOR
  762. STM BUFF+FTEI
  763. LDC BUFF WRITE EOI
  764. RJM WEI
  765. UJN WESX RETURN
  766. SPACE 4,10
  767. ** COMMON DECKS.
  768.  
  769.  
  770. *CALL COMPSNT
  771. IF DEF,FA,1
  772. ERR *FA* MUST NOT BE DEFINED FOR *COMPWEI*
  773. *CALL COMPWEI
  774. IBUF SPACE 4,10
  775. ** INPUT BUFFER SPACE.
  776.  
  777. IBUF EQU * INPUT BUFFER FWA
  778. TITLE PRESET.
  779. PRS SPACE 4,10
  780. ** PRS - PRESET.
  781. *
  782. * ENTRY REQUEST QUEUE FORMAT FOR IAF REQUEST QUEUE -
  783. *
  784. *T 4/ ,1/ PFIC,1/ FT,6/ RT,12/ EJTO,12/ NP,12/ FP,12/ TN
  785. *
  786. * PFIC = PRIMARY FILE INITIAL CALL FLAG.
  787. * 1 = PRIMARY FILE INITIAL CALL.
  788. * 0 = PRIMARY OR ROLLOUT FILE CONTINUATION CALL.
  789. * FT = FILE TYPE.
  790. * 0 = PRIMARY FILE.
  791. * 1 = ROLLOUT FILE.
  792. * RT = REQUEST TYPE.
  793. * 0 = DUMP INPUT TO PRIMARY FILE.
  794. * 1 = OUTPUT TO TERMINAL.
  795. * EJTO = EJT ORDINAL OF JOB.
  796. * NP = NUMBER OF POTS TO DUMP TO PRIMARY FILE (INPUT).
  797. * FP = FIRST POT FOR EITHER INPUT OR OUTPUT.
  798. * TN = TERMINAL NUMBER.
  799. *
  800. * EXIT REQUEST QUEUE FORMAT FOR IAF REQUEST QUEUE -
  801. *
  802. *T, 12/ EQ,12/ TK,12/ P1,12/ P2,12/ TN
  803. *
  804. * EQ = EST ORDINAL.
  805. * TK = TRACK NUMBER.
  806. * INPUT - CURRENT EOI.
  807. * OUTPUT - FIRST SECTOR OF OUTPUT.
  808. * - FIRST CALL ON LIST, FROM *PRFE* IN EJT.
  809. * - CONTINUATION CALL, FROM SCHEDULE FIELD IN EJT.
  810. * P1 = INPUT - WORD COUNT IN LAST POT, THREE TOP BITS.
  811. * - NUMBER OF POTS TO DUMP, NINE BOTTOM BITS.
  812. * OUTPUT - FIRST SECTOR OF OUTPUT.
  813. * - FIRST CALL ON LIST, 1.
  814. * - CONTINUATION CALL, FROM SCHEDULE FIELD IN EJT.
  815. * P2 = FIRST POT POINTER.
  816. * INPUT - POT TO BEGIN DUMPING TO PRIMARY FILE.
  817. * OUTPUT - POT TO WRITE OUTPUT INTO.
  818. * TN = TERMINAL NUMBER.
  819. *
  820. * *TEPS* ENTRY -
  821. *
  822. * 12/ PTR,12/ EXP
  823. *
  824. * PTR = POINTER TO ENTRY.
  825. * EXP = EXTRA PARAMETER.
  826. * INPUT - SECTOR NUMBER OF CURRENT EOI.
  827. * OUTPUT - WORD COUNT IN CURRENT SECTOR OF OUTPUT, FROM
  828. * SCHEDULE FIELD ON CONTINUATION CALL.
  829.  
  830.  
  831. PRS RJM IFP INITIALIZE *COMPGFP*
  832. LDN VCPC SET LENGTH OF A POT
  833. STD CT
  834. LDD RA
  835. SHN 6
  836. ADN VNTP
  837. CRD T5 SET FWA OF NETWORK TERMINALS
  838. LDD T5+2
  839. SBN 1 SET LAST MULTIPLEXOR TERMINAL ADDRESS
  840. PJN PRS0 IF NETWORK TERMINALS DEFINED
  841. LDD RA GET MAXIMUM USER COUNT
  842. SHN 6
  843. ADK VMNL
  844. CRD T5
  845. LDD T5+4
  846. ADK VPST-1 NUMBER OF PSEUDO TERMINALS
  847. PRS0 STM PRCA STORE LAST MUX TERMINAL NUMBER
  848. LDD IR+2
  849. SHN -6 FORMAT MESSAGE
  850. RJM C2D CONVERT DIGITS
  851. STM ABTA+10
  852. LDD IR+2
  853. RJM C2D
  854. STM ABTA+11
  855. LDD IR+2
  856. NJP PRS4 IF IAF CALL
  857.  
  858. * PROCESS *1RO* CALL.
  859.  
  860. LDC PRCB SET ENTRY POINTER
  861. STD EP
  862. LDD IR+4 SET TERMINAL NUMBER
  863. STD TN
  864. STM PRCB+4
  865. RJM STA SET TERMINAL TABLE ADDRESS
  866. ADK VUIT
  867. CRD FS
  868. ADN VROT-VUIT
  869. CRD CN
  870. LDD CN+4 CHECK OUTPUT AVAILABLE
  871. SHN 21-4
  872. PJN PRS2 IF NO OUTPUT DATA
  873.  
  874. * IF A FULL SECTOR OF DATA RESIDES IN THE *1RO* BUFFER AND IF
  875. * THE TERMINAL HAS A BLOCKSIZE OF GREATER THAN ONE SECTOR,
  876. * THEN *1TO* MUST MAKE A NULL OUTPUT ASSIGNMENT IN ORDER TO
  877. * AVOID SPLITTING WHAT COULD BE A LINE LESS THAN BLOCKSIZE
  878. * WORDS ACROSS TWO DOWNLINE BLOCKS BECAUSE THERE IS NO ROOM
  879. * IN THE BUFFER TO READ IN ADDITIONAL SECTORS.
  880.  
  881. RJM CAB COMPUTE ALLOWABLE BLOCKSIZE
  882. LDM IROB+1
  883. STD WL
  884. SHN -6
  885. ZJN PRS1 IF ALL OUTPUT CONTAINED IN *1RO* BUFFER
  886. LDD WL
  887. SBD NW
  888. MJN PRS2 IF BLOCKSIZE EXCEEDS ONE SECTOR
  889. PRS1 LDK ZERL
  890. CRD CM
  891. LDD NW
  892. ADK 7+2 ADD ROUNDUP AND LINKAGE WORDS FACTORS
  893. SHN -3
  894. ERRNZ VCPC-10 CODE DEPENDS ON POT SIZE OF 10B
  895. STD CM+1
  896. MONITOR TGPM GET POTS
  897. LDD CM+1
  898. STD PP
  899. STM PRCB+3
  900. NJN PRS3 IF A POT WAS GIVEN
  901. PRS2 LJM PRC1 ASSIGN NULL OUTPUT
  902.  
  903. PRS3 LMC 7777
  904. NJN PRS3.1 IF NOT A FUNCTION REJECT
  905. LDC 3600 REISSUE REQUEST AFTER DELAY
  906. STD T1
  907. PRS3.0 DELAY
  908. SOD T1
  909. NJN PRS3.0 IF NOT TIME TO REISSUE REQUEST
  910. UJN PRS1 TRY AGAIN
  911.  
  912. PRS3.1 LDN 0
  913. STD WC
  914. SFA EJT,FS+4
  915. ADN SCHE
  916. CRD CM
  917. LDD CM+3 MOVE CURRENT TRACK
  918. STD FS+2
  919. LDD CM+4 MOVE CURRENT SECTOR
  920. STD FS+3
  921. LJM PRC ENTER MAIN LOOP FOR *1RO* CALL
  922.  
  923. * PRESET IAF REQUEST QUEUE CALL.
  924.  
  925. PRS4 RJM SPA SET POT ADDRESS (PP= IR+2)
  926. CRM EBUF,CT READ UP ENTRIES
  927. PRSA EQU *-1
  928. LDN VCPC*5 UPDATE POINTER
  929. RAM PRSA
  930. STD T2
  931. RJM UPP UPDATE POT POINTER
  932. NJN PRS4 IF MORE ENTRIES TO READ
  933. STM 1,T2 SET TERMINATOR BYTE
  934. STD IN INITIALIZE INPUT REQUEST COUNT
  935. STD OT INITIALIZE OUTPUT REQUEST COUNT
  936. STD EC INITIALIZE ENTRY COUNT
  937. LDC EBUF ENTRY POINTER
  938. STD EP
  939. PRS5 LDM 1,EP GET EJTO
  940. ZJN PRS10 IF ALL ENTRIES PROCESSED
  941. SFA EJT READ EJT
  942. ADN JSNE
  943. CRD CM
  944. ADN SCHE-JSNE
  945. CRD FS
  946. ADN PRFE-SCHE
  947. CRD CN
  948. LDI EP
  949. LPN 77
  950. ZJN PRS6 IF INPUT OPERATION
  951.  
  952. * PROCESS OUTPUT REQUESTS.
  953.  
  954. AOD OT COUNT OUTPUT REQUEST
  955. RJM POR PROCESS OUTPUT REQUEST
  956. UJN PRS7 COMPLETE PROCESSING
  957.  
  958. * PROCESS INPUT REQUESTS.
  959.  
  960. PRS6 AOD IN COUNT INPUT REQUEST
  961. LDD OT
  962. NJN PRS8 IF REQUESTS OUT OF ORDER
  963. RJM RIT RESERVE INPUT TRACKS
  964.  
  965. * COMPLETE PROCESSING FOR BOTH REQUEST TYPES.
  966.  
  967. PRS7 STM SNTB,EC SAVE SECTOR NUMBER OR WORD COUNT
  968. AOD EC
  969. LDN 5
  970. RAD EP
  971. UJN PRS5 LOOP FOR NEXT ENTRY
  972.  
  973. PRS8 LDN 1 REQUEST OUT OF ORDER
  974. PRS9 RJM ABT ABORT
  975.  
  976. * SET LWA AND REQUEST COUNTS.
  977.  
  978. PRS10 LDD IN NUMBER OF INPUT REQUESTS
  979. STM ITOB
  980. SHN 1 * 2
  981. RAM CUAA SET FWA OF OUTPUT REQUEST POINTERS
  982. STM CUAD SET LWA+1 OF INPUT REQUEST POINTERS
  983. LDD IN
  984. SHN 2
  985. ADD IN
  986. RAM GNEC LWA+1 OF INPUT REQUEST GROUP
  987. LDD OT NUMBER OF OUTPUT ENTRIES
  988. ADD IN TOTAL OF ALL REQUESTS
  989. NJN PRS11 IF REQUESTS
  990. LDN 2 NO REQUESTS
  991. UJN PRS9 ABORT
  992.  
  993. PRS11 STM TCRQ SET TOTAL NUMBER OF REQUESTS
  994. SHN 1 * 2
  995. RAM CUAB
  996. RJM SEP SORT ENTRY POINTERS
  997. LDN 0 INITIALIZE EST ORDINAL
  998. STD T5
  999. LJM ITO1 ENTER MAIN LOOP
  1000. CEQ SPACE 4,10
  1001. ** CEQ - CHECK EQUIPMENT.
  1002. *
  1003. * ENTRY (A) = EST ORDINAL.
  1004. * (EP) = ENTRY ADDRESS.
  1005. *
  1006. * EXIT ((EP)) = EST ORDINAL+4000.
  1007. *
  1008. * USES T0 - T4.
  1009. *
  1010. * CALLS ABT.
  1011. *
  1012. * MACROS SFA.
  1013.  
  1014.  
  1015. CEQ SUBR ENTRY/EXIT
  1016. LMC 4000 SET NOT SORTED ENTRY FLAG
  1017. STI EP SAVE EST
  1018. LMC 4000
  1019. ZJN CEQ1 IF NOT MASS STORAGE
  1020. SFA EST READ EST ENTRY
  1021. ADK EQDE
  1022. CRD T0
  1023. LDD T0
  1024. SHN 21-13
  1025. MJN CEQX IF MASS STORAGE
  1026. CEQ1 LDN 3 NOT MASS STORAGE
  1027. RJM ABT ABORT
  1028. GNE SPACE 4,20
  1029. ** GNE - GET NEXT ENTRY.
  1030. *
  1031. * ENTRY (GNEA) = IF OUTPUT GROUP, NUMBER OF INPUT ENTRIES.
  1032. * (GNEB) = FWA FOR ENTRIES IN THIS GROUP.
  1033. * (GNEC) = LWA+1 FOR ENTRIES IN THIS GROUP.
  1034. *
  1035. * EXIT (T5) = SELECTED EQUIPMENT.
  1036. * (T6) = SELECTED TRACK.
  1037. * (CN+1) = POINTER TO SELECTED ENTRY.
  1038. * (CN+2) = ENTRY NUMBER.
  1039. * ENTRY MARKED AS PROCESSED.
  1040. *
  1041. * CALLS ABT.
  1042.  
  1043.  
  1044. GNE SUBR ENTRY/EXIT
  1045. GNEA LDN 0 (PROCESSING INPUT)
  1046. * LDN N (PROCESSING OUTPUT, N = NUMBER OF INPUTS)
  1047. STD CN+3 ENTRY NUMBER TO START AT
  1048. LCN 0
  1049. STD T5
  1050. STD T6
  1051. LDC EBUF FWA ENTRIES
  1052. GNEB EQU *-1
  1053. STD CN
  1054. GNE1 LDI CN
  1055. SHN 21-13
  1056. PJN GNE2 IF ALREADY PROCESSED
  1057. SHN 13-21
  1058. LPC 3777 SET EQUIPMENT
  1059. STD T0
  1060. SBD T5
  1061. MJN GNE4 IF BETTER CHOICE
  1062. ZJN GNE3 IF SAME EQUIPMENT
  1063. GNE2 AOD CN+3 INCREMENT ENTRY COUNT
  1064. LDN 5
  1065. RAD CN
  1066. LMC EBUF
  1067. GNEC EQU *-1
  1068. NJN GNE1 IF GROUP NOT COMPLETED
  1069. LDD T5 MARK ENTRY PROCESSED
  1070. STI CN+1
  1071. LMC 7777
  1072. ZJN GNE5 IF NO ENTRY FOUND
  1073. LJM GNEX EXIT
  1074.  
  1075. GNE3 LDM 1,CN CHECK TRACK
  1076. SBD T6
  1077. PJN GNE2 IF NOT A BETTER CHOICE
  1078. GNE4 LDD T0 UPDATE EQ
  1079. STD T5
  1080. LDM 1,CN UPDATE TK
  1081. STD T6
  1082. LDD CN UPDATE POINTER
  1083. STD CN+1
  1084. LDD CN+3 SAVE ENTRY NUMBER
  1085. STD CN+2
  1086. UJN GNE2 CHECK NEXT ENTRY
  1087.  
  1088. GNE5 LDN 5 NO ENTRY FOUND
  1089. RJM ABT ABORT
  1090. POR SPACE 4,10
  1091. ** POR - PROCESS OUTPUT REQUEST.
  1092. *
  1093. * ENTRY (FS - FS+4) = EJT ENTRY WORD *SCHE*.
  1094. * (CN - CN+4) = EJT ENTRY WORD *PRFE*.
  1095. * (CM - CM+4) = EJT ENTRY WORD *JSNE*.
  1096. *
  1097. * EXIT ((EP)) = FORMATTED REQUEST - EQ,TK,SC,FP,TN.
  1098. * (A) = WORD COUNT.
  1099. *
  1100. * USES CM - CM+4.
  1101. *
  1102. * CALLS ABT, CEQ.
  1103. *
  1104. * MACROS MONITOR.
  1105.  
  1106.  
  1107. POR SUBR ENTRY/EXIT
  1108. LDI EP CHECK FILE TYPE
  1109. SHN 21-6
  1110. PJN POR2 IF NOT ROLLOUT FILE OUTPUT
  1111. LDD FS INSERT RO EQ INTO REQUEST
  1112. RJM CEQ CHECK EQUIPMENT
  1113. POR1 LDD FS+3 SET CURRENT TRACK
  1114. STM 1,EP
  1115. LDD FS+4 SET CURRENT SECTOR
  1116. STM 2,EP
  1117. LDD FS+2 SET WORD COUNT
  1118. LPN 77
  1119. UJN PORX RETURN
  1120.  
  1121. POR2 LPN 1
  1122. LMC LDNI
  1123. STM PORA
  1124. LDD CN+3 SET PRIMARY FILE EQUIPMENT
  1125. RJM CEQ CHECK PRIMARY FILE EQUIPMENT
  1126. LDN 0 CONTINUATION CALL
  1127. PORA EQU *-1 (PRIMARY FILE INITIAL CALL)
  1128. ZJN POR1 IF CONTINUATION CALL
  1129.  
  1130. * START NEW OUTPUT ON PRIMARY FILE.
  1131.  
  1132. LDM 1,EP SET EJT ADDRESS
  1133. SFA EJT
  1134. STD CM+4
  1135. SHN -14
  1136. STD CM+3
  1137. LDD CN+4 PRESET CT=FT
  1138. STM 1,EP
  1139. LDN FSMS PRESET CURRENT SECTOR = 1
  1140. STM 2,EP
  1141. LDD MA SET I/O JOB STATUS
  1142. CWM PORB,ON
  1143. LDN 1
  1144. STD CM+1
  1145. MONITOR UTEM
  1146. LDD CM+1
  1147. NJN POR4 IF OPERATION NOT COMPLETE
  1148. LDD MA CHECK OLD STATUS
  1149. CRD CM
  1150. LDD CM+4
  1151. SBN IOJS
  1152. ZJN POR3 IF IOJS STATUS
  1153. SBN DOJS-IOJS
  1154. NJN POR4 IF NOT DOJS STATUS
  1155. POR3 LJM PORX EXIT
  1156.  
  1157. POR4 LDN 4
  1158. RJM ABT ABORT
  1159.  
  1160.  
  1161. PORB VFD 6/JSNE,6/5,6/1,42/IOJS
  1162. RIT SPACE 4,10
  1163. ** RIT - REQUEST INPUT TRACKS.
  1164. *
  1165. * ENTRY (CN - CN+4) = EJT ENTRY WORD *PRFE*.
  1166. *
  1167. * EXIT (A) = SECTOR NUMBER OF EOI ON THE DEVICE.
  1168. * TRT RESET TO NEW EOI.
  1169. *
  1170. * USES T0, T4, T5, CM - CM+4.
  1171. *
  1172. * CALLS ABT, CEQ, SEI.
  1173. *
  1174. * MACROS MONITOR.
  1175.  
  1176.  
  1177. RIT SUBR ENTRY/EXIT
  1178. LDD CN+4 MOVE PRIMARY FILE FIRST TRACK
  1179. STD T6
  1180. LDD CN+3 MOVE PRIMARY FILE EQUIPMENT
  1181. STD T5
  1182. RJM CEQ CHECK EQUIPMENT
  1183.  
  1184. * CHECK FOR ROOM ON DISK.
  1185.  
  1186. LDM 2,EP COMPUTE SECTOR COUNT
  1187. SHN -11
  1188. STD T0
  1189. LDM 2,EP
  1190. LPC 777
  1191. SHN 3
  1192. ADD T0
  1193. ADN 77
  1194. SHN -6 SECTOR COUNT
  1195. STD T4
  1196. RJM SEI SET T7
  1197. LDD T6 SAVE CURRENT EOI POSITION
  1198. STD CM+2
  1199. STM 1,EP
  1200. LDD T5
  1201. STD CM+1
  1202. LDM SLM
  1203. SBN 1
  1204. SBD T7
  1205. SBD T4
  1206. PJN RIT1 IF ROOM ON TRACK
  1207. LMC -0 SET SECTORS NEEDED
  1208. STD CM+4
  1209. SHN -14
  1210. STD CM+3
  1211. MONITOR RTCM
  1212. UJN RIT2 CHECK NEXT ENTRY
  1213.  
  1214. RIT1 LDD T7 SET NEW EOI POSITION
  1215. ADD T4
  1216. STD CM+3
  1217. LDC -4000
  1218. RAD CM+2
  1219. MONITOR DTKM
  1220. RIT2 LDD T7
  1221. LJM RITX EXIT
  1222. SEP SPACE 4,10
  1223. ** SEP - SORT ENTRY POINTERS.
  1224. *
  1225. * ENTRY (EP) = LWA+1 ALL REQUESTS.
  1226. * (IN) = INPUT REQUEST COUNT.
  1227. * (OT) = OUTPUT REQUEST COUNT.
  1228. *
  1229. * EXIT ENTRIES SORTED BY EQUIPMENT AND TRACK, POINTERS
  1230. * STORED IN THAT ORDER IN *TEPS*.
  1231. *
  1232. * USES T3, T4, T7, CN - CN+4.
  1233. *
  1234. * CALLS GNE.
  1235.  
  1236.  
  1237. SEP SUBR ENTRY/EXIT
  1238. LDC TEPS
  1239. STD T7
  1240. SEP1 LDD IN
  1241. ZJN SEP4 IF NO INPUT REQUESTS, SWITCH TO OUTPUT
  1242. SEP2 RJM GNE GET NEXT ENTRY
  1243. LDD CN+1 SET POINTER TO ENTRY
  1244. STI T7
  1245. AOD T7 MOVE EOI SECTOR OR WORD COUNT
  1246. LDM SNTB,CN+2
  1247. STI T7
  1248. AOD T7
  1249. SOD IN
  1250. NJN SEP2 IF MORE ENTRIES OF THIS TYPE
  1251. LDD OT CHECK OUTPUT REQUEST COUNT
  1252. ZJN SEPX IF NO MORE REQUESTS
  1253.  
  1254. * SWITCH TO OUTPUT REQUESTS.
  1255.  
  1256. LDM ITOB
  1257. RAM GNEA
  1258. LDM GNEC
  1259. STM GNEB
  1260. SEP4 LDD EP
  1261. STM GNEC
  1262. LDD OT
  1263. STD IN
  1264. LDN 0
  1265. STD OT
  1266. UJN SEP1 SORT OUTPUT REQUESTS
  1267. SPACE 4,10
  1268. SPACE 4,10
  1269. ** COMMON DECKS.
  1270.  
  1271.  
  1272. *CALL COMPSEI
  1273. IFP HERE
  1274.  
  1275. BUFFERS SPACE 4,10
  1276. ** PRESET BUFFERS.
  1277.  
  1278.  
  1279. USE BUFFERS
  1280.  
  1281. SNTB EQU * SECTOR NUMBER / WORD COUNT
  1282.  
  1283. ERRPL SNTB+VRQB*VCPC-EBUF OVERFLOW INTO ENTRY BUFFER
  1284. SPACE 4,10
  1285. OVERFLOW
  1286. TTL 1TO - TERMINAL INPUT/OUTPUT.
  1287. TITLE OUTPUT PROCESSING SUBROUTINES.
  1288. QUAL 2TO
  1289. IDENT 2TO,TTOX OUTPUT PROCESSING ROUTINES.
  1290. *COMMENT 1TO - OUTPUT PROCESSING ROUTINES.
  1291. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  1292. SPACE 4,10
  1293. *** *2TO* IS LOADED TO PROVIDE THE ROUTINES NECESSARY FOR
  1294. * PROCESSING DOWNLINE OUTPUT.
  1295.  
  1296.  
  1297. ORG IDP+5
  1298.  
  1299. TTO SUBR ENTRY/EXIT
  1300. UJN TTOX RETURN
  1301. TTL 1TO/2TO - OUTPUT DATA PROCESOR.
  1302. ODP TITLE OUTPUT DATA PROCESSING.
  1303. ** ODP - OUTPUT DATA PROCESSING.
  1304. *
  1305. * ENTRY (PP) = POT POINTER.
  1306. * (EP) = POINTER TO ENTRY TO PROCESS.
  1307. * (T4 - T7) = DISK INFORMATION.
  1308. * (FS+2) = TRACK NUMBER OF FIRST SECTOR TO READ.
  1309. * (FS+3) = SECTOR NUMBER OF FIRST SECTOR TO READ.
  1310. * (WC) = POSITION TO START AT IN FIRST SECTOR.
  1311. *
  1312. * EXIT (T5) = EST ORDINAL.
  1313. *
  1314. * USES T1, BA, CB, WC, CM - CM+4, LN - LN+4.
  1315. *
  1316. * CALLS CAB, LDP, SDI, SPA, SUL, UTT.
  1317.  
  1318.  
  1319. ODP SUBR ENTRY/EXIT
  1320. LDC BUFF SET BUFFER ADDRESS
  1321. STD BA
  1322. LDC EBUF-2 SET CONTROL BYTE TABLE ADDRESS
  1323. STD CB
  1324. RJM CAB COMPUTE ALLOWABLE BLOCKSIZE
  1325. LDD PP
  1326. ZJP ODP5 IF NO POTS SUPPLIED
  1327. RJM SPA SET POT ADDRESS OF USER TEXT POT
  1328. CRD LN READ UP LINE NUMBER
  1329. LDN LN CONVERT LINE NUMBER TO BINARY
  1330. STD T1
  1331. RJM SUL
  1332. LDD CM
  1333. SHN 14
  1334. ADD CM+1
  1335. ZJN ODP1 IF START AT BEGINNING OF FILE
  1336. LMC -0 SET LINE NUMBER TO SEARCH ON
  1337. STM SSEA+1
  1338. STM SDIA+1
  1339. SHN -14
  1340. LMC ADCI
  1341. STM SSEA
  1342. STM SDIA
  1343. RJM SDI SEARCH DISK FOR LINE NUMBER
  1344. UJN ODP4 TRANSFER LINE TO POTS
  1345.  
  1346. ODP1 RJM RDD READ THE FIRST SECTOR OF DATA
  1347. PJN ODP2 IF NOT AN EMPTY FILE
  1348. LDN 0
  1349. STD WL
  1350. UJN ODP4 SEND A *0014* BYTE ONLY
  1351.  
  1352. ODP2 STD SC SAVE SECTOR WORD COUNT
  1353. SBD WC
  1354. PJN ODP3 IF POINTER .LT. WC (ONLY VALID CONDITION)
  1355. LDN 0 RESET WORD COUNT (NEEDED FOR RECOVERY)
  1356. STD WC
  1357. ODP3 RJM RAS READ ADDITIONAL SECTORS UP TO BLOCKSIZE
  1358. ODP4 LDC BUFF
  1359. RJM LDP LOAD POTS
  1360. RJM UTT UPDATE TERMINAL TABLE
  1361. LDI EP RESTORE EST ORDINAL
  1362. STD T5
  1363. LJM ODPX RETURN
  1364.  
  1365. ODP5 LDN 7 NO POT POINTER FOUND
  1366. RJM ABT ABORT
  1367. TITLE PRO - SUBROUTINES.
  1368. TITLE OUTPUT PROCESSING SUBROUTINES.
  1369. ANR SPACE 4,10
  1370. ** ANR - ASSURE NETWORK REQUIREMENTS.
  1371. *
  1372. * *ANR* ENSURES THAT NO MORE THAN BLOCKSIZE WORDS OF DATA ARE
  1373. * EVER SENT TO THE TERMINAL IN A SINGLE DOWNLINE BLOCK. IF
  1374. * THERE ARE LESS THAN BLOCKSIZE WORDS OF DATA REMAINING, ALL
  1375. * DATA IS SENT. IF THERE ARE BLOCKSIZE OR MORE WORDS OF DATA,
  1376. * *ANR* MAKES SURE THAT AS MANY WHOLE LINES AS POSSIBLE ARE
  1377. * SENT WITHOUT EXCEEDING THE BLOCKSIZE LIMIT. A PARTIAL LINE
  1378. * IS ONLY SENT IN THE CASE WHERE THE FIRST LINE OF DATA
  1379. * IN THE BUFFER IS LONGER THAN BLOCKSIZE WORDS.
  1380. *
  1381. * ENTRY (BA) = BUFFER ADDRESS.
  1382. * (NW) = USER BLOCKSIZE IN CM WORDS.
  1383. * (WL) = NUMBER OF WORDS LOADED IN BUFFER.
  1384. *
  1385. * EXIT (A) = NUMBER OF WORDS TO SEND TO THE TERMINAL.
  1386. * (NW) = SAME AS (A).
  1387. * (CN+4) = OUTPUT AVAILABLE FLAG UPDATED.
  1388. *
  1389. * USES S1.
  1390.  
  1391.  
  1392. ANR3 LDD NW
  1393.  
  1394. ANR SUBR ENTRY/EXIT
  1395. LDD WL
  1396. SBD NW
  1397. PJN ANR1 IF NUMBER WORDS IN BUFFER .GE. BLOCKSIZE
  1398. LCN VOPR CLEAR OUTPUT AVAILABLE FLAG
  1399. RAD CN+4
  1400. LDD WL SEND ALL THE DATA
  1401. STD NW
  1402. UJN ANRX RETURN
  1403.  
  1404. * ADJUST THE NUMBER OF WORDS TO SEND TO THE TERMINAL TO
  1405. * INCLUDE AS MANY COMPLETE LINES AS EXIST IN THE FIRST
  1406. * BLOCKSIZE WORDS. IF NO COMPLETE LINES ARE FOUND,
  1407. * (LINE IS LONGER THAN BLOCKSIZE WORDS) THEN SEND THE
  1408. * FIRST BLOCKSIZE-1 WORDS OF THE LINE.
  1409.  
  1410. ANR1 LDM PRCA
  1411. SBD TN
  1412. PJN ANR3 IF MUX TERMINAL
  1413. LDD NW CHECK BACKWARDS THROUGH DATA FOR EOL
  1414. STD WL
  1415. ADD WC
  1416. SHN 2
  1417. ADD NW
  1418. ADD WC
  1419. ADD BA
  1420. ADN 1
  1421. STD S1
  1422. ANR2 LDI S1
  1423. ZJN ANR3 IF EOL FOUND
  1424. LCN 5
  1425. RAD S1
  1426. SOD NW
  1427. NJN ANR2 IF MORE WORDS LEFT TO CHECK
  1428. SOD WL
  1429. STD NW
  1430. LJM ANRX SEND (BLOCKSIZE - 1) WORDS
  1431. LDP SPACE 4,10
  1432. ** LDP - LOAD DATA INTO POTS.
  1433. *
  1434. * ENTRY (A) = BUFFER ADDRESS.
  1435. * (WC) = WORD INDEX INTO FIRST SECTOR.
  1436. * (PP) = FIRST POT TO FILL.
  1437. * (EP) = ENTRY POINTER.
  1438. * (NW) = USER BLOCKSIZE IN CM WORDS.
  1439. * (WL) = NUMBER OF WORDS LOADED IN BUFFER.
  1440. *
  1441. * EXIT (WL) = NUMBER OF WORDS TRANSFERRED TO POTS.
  1442. * (CN+4) = OUTPUT AVAILABLE FLAG UPDATED IF RAN OUT
  1443. * OF POTS.
  1444. *
  1445. * USES BA, CM - CM+4, S1, S2, T3.
  1446. *
  1447. * CALLS ANR, SPA, UPP.
  1448.  
  1449.  
  1450. LDP SUBR ENTRY/EXIT
  1451. STD BA SAVE BUFFER ADDRESS
  1452. LDN 0 INITIALIZE POT COUNT
  1453. STD PC
  1454. LDN 2 SET TO LEAVE ROOM FOR HEADER WORDS
  1455. STD S2
  1456. RJM SPA PUT FIRST POT ADDRESS IN (PA - PA+1)
  1457. LDK ZERL ZERO OUT SECOND WORD OF POT CHAIN HEADER
  1458. CRD CM
  1459. LDD PA
  1460. SHN 14
  1461. LMD PA+1
  1462. ADN 1
  1463. CWD CM
  1464. RJM ANR ASSURE NETWORK REQUIREMENTS
  1465. STD WL
  1466. NJN LDP1 IF DATA AVAILABLE TO TRANSFER
  1467. STD T3
  1468. LDM 3,EP
  1469. STM 2,EP
  1470. AOD PC COUNT OUTPUT POT
  1471. LJM LDP5 RETURN A *0014* CONTROL BYTE ONLY
  1472.  
  1473. LDP1 LDD WC COMPUTE ADDRESS OF FIRST WORD TO TRANSFER
  1474. SHN 2
  1475. ADD WC
  1476. ADD BA
  1477. ADN 2
  1478. STM LDPB
  1479. LDK VCPC-2
  1480. STD S1
  1481. STD T3
  1482. UJN LDP3 ENTER TRANSFER LOOP
  1483.  
  1484. LDP2 LDD S1
  1485. SHN 2
  1486. ADD S1
  1487. RAM LDPB
  1488. LDK VCPC
  1489. STD T3
  1490. STD S1
  1491. LDN 0 SET TO NOT LEAVE ROOM FOR HEADER WORDS
  1492. STD S2
  1493. RJM UPP
  1494. NJN LDP3 IF MORE POTS AVAILABLE
  1495. LDD CN+4 SET OUTPUT AVAILABLE TO RECALL *1TO*
  1496. SCN VOPR
  1497. LMN VOPR
  1498. STD CN+4
  1499. LDD WL
  1500. SBD NW
  1501. STD WL
  1502. LJM LDPX RETURN
  1503.  
  1504. LDP3 LDD NW
  1505. SBD S1
  1506. STD NW
  1507. PJN LDP4 IF AT LEAST ONE FULL POT TO TRANSFER
  1508. ADD S1
  1509. STD T3
  1510. LDN 0 SET END OF DATA
  1511. STD NW
  1512. LDP4 RJM SPA
  1513. ADD S2
  1514. CWM *,T3 TRANSFER WORDS INTO POT
  1515. LDPB EQU *-1
  1516. LDD PP
  1517. STM 2,EP
  1518. AOD PC COUNT OUTPUT POT
  1519. LDD NW
  1520. SBN 1
  1521. PJP LDP2 IF MORE DATA TO TRANSFER
  1522. LDD T3
  1523. SBD S1
  1524. ZJP LDPX IF DATA ENDS EXACTLY ON A POT BOUNDARY
  1525. LDP5 LDK ZERL
  1526. CRD CM
  1527. LDN 2R"IB" ADD *0014* BYTE TO MARK END OF DATA
  1528. STD CM
  1529. LDD PA
  1530. SHN 14
  1531. LMD PA+1
  1532. ADD T3
  1533. ADD S2
  1534. CWD CM
  1535. LJM LDPX RETURN
  1536. RAS SPACE 4,10
  1537. ** RAS - READ ADDITIONAL SECTORS.
  1538. *
  1539. * *RAS* CONTINUES TO READ SECTORS OF DATA INTO THE BUFFER
  1540. * UNTIL EITHER BLOCKSIZE WORDS HAVE BEEN LOADED OR UNTIL
  1541. * NO DATA REMAINS TO BE READ.
  1542. *
  1543. * ENTRY (BA) = BUFFER ADDRESS.
  1544. * (SC) = SECTOR WORD COUNT.
  1545. * (WC) = POSITION IN FIRST SECTOR.
  1546. * (NW) = USER BLOCKSIZE IN CM WORDS.
  1547. * (CB) = INDEX INTO CONTROL BYTE TABLE.
  1548. * (CN - CN+4) = *VROT* WORD.
  1549. *
  1550. * EXIT (CB) = UPDATED TO POINT TO CONTROL BYTES OF LAST
  1551. * SECTOR LOADED.
  1552. * (WL) = NUMBER OF WORDS OF OUTPUT IN BUFFER.
  1553. *
  1554. * USES BA, SC, S1.
  1555. *
  1556. * CALLS RDD.
  1557.  
  1558.  
  1559. RAS SUBR ENTRY/EXIT
  1560. LDD SC
  1561. SBD WC
  1562. STD WL
  1563. LDD NW GET BLOCKSIZE
  1564. ADD WC
  1565. STD S1
  1566. RAS1 LDD SC
  1567. SBD S1
  1568. PJN RASX IF THIS PRU SATISFIES REQUIREMENT
  1569. LMC -0
  1570. STD S1
  1571. LDD SC
  1572. SHN -6
  1573. NJN RAS2 IF NOT EOR
  1574. LDD CN+4
  1575. SHN 21-6
  1576. PJN RASX IF NOT LIST FILE
  1577. RAS2 LDD SC UPDATE BUFFER ADDRESS
  1578. SHN 2
  1579. ADD SC
  1580. RAD BA
  1581. ADC 502+1
  1582. SBD CB
  1583. PJN RASX IF NO MORE BUFFER SPACE
  1584. LCN 2
  1585. RAD CB
  1586. RJM RDD READ DISK
  1587. STD SC
  1588. MJP RASX IF EOI
  1589. RAD WL
  1590. UJN RAS1 PROCESS NEXT SECTOR
  1591.  
  1592. * THE CALCULATION IN ROUTINE *RAS* FOR NUMBER OF CM WORDS
  1593. * NEEDED FOR A NETWORK TERMINAL MUST BE ALTERED IF THE
  1594. * NUMBER OF WORDS IN A POT IS CHANGED.
  1595.  
  1596. ERRNZ VCPC-10 NUMBER OF WORDS PER POT
  1597. RDD SPACE 4,15
  1598. ** RDD - READ DATA FROM DISK.
  1599. *
  1600. * ENTRY (BA) = BUFFER ADDRESS.
  1601. * (CB) = INDEX INTO CONTROL BYTE TABLE.
  1602. * (T4) = CHANNEL.
  1603. * (T5) = EQUIPMENT.
  1604. * (T6) = TRACK.
  1605. * (T7) = SECTOR.
  1606. *
  1607. * EXIT (A) = WORD COUNT = NEGATIVE IF EOI.
  1608. * (T6 - T7) = UPDATED.
  1609. *
  1610. * USES T3, S2, S3.
  1611. *
  1612. * CALLS RDS.
  1613.  
  1614.  
  1615. RDD4 LDN 0 SET EOI
  1616. STI CB
  1617. STM 1,CB
  1618. RDD5 LCN 0 INDICATE EOI
  1619.  
  1620. RDD SUBR ENTRY/EXIT
  1621. LDI BA PRESERVE DATA OVERLAID BY CONTROL BYTES
  1622. STD S2
  1623. LDM 1,BA
  1624. STD S3
  1625. LDD BA READ SECTOR
  1626. RJM RDS
  1627. SHN -20 PRESERVE ERROR FLAG
  1628. STD T3
  1629. LDM 1,BA MOVE CONTROL BYTES TO TABLE
  1630. STM 1,CB
  1631. LDI BA
  1632. STI CB
  1633. LDD S2 RESTORE ORIGINAL DATA INTO PLACE
  1634. STI BA
  1635. LDD S3
  1636. STM 1,BA
  1637. LDD T3
  1638. NJN RDD4 IF READ ERROR
  1639. LDI CB
  1640. NJN RDD1 IF NOT EOF
  1641. LDM 1,CB
  1642. ZJN RDD5 IF EOI
  1643. RDD1 STD T7 UPDATE SECTOR
  1644. SHN 6
  1645. PJN RDD2 IF NOT NEW TRACK
  1646. SHN -6
  1647. STD T6 SET NEW TRACK
  1648. LDN 0 RESET SECTOR
  1649. STD T7
  1650. RDD2 LDI CB
  1651. ZJN RDD3 IF EOF
  1652. LDM 1,CB
  1653. RDD3 LJM RDDX RETURN
  1654. SDI SPACE 4,15
  1655. ** SDI - SEARCH DISK FOR BEGINNING LINE.
  1656. *
  1657. * ENTRY (T4) = CHANNEL.
  1658. * (T5) = EQUIPMENT.
  1659. * (T6) = TRACK.
  1660. * (T7) = SECTOR.
  1661. *
  1662. * EXIT (WC)= POSITION OF BEGINNING OF LINE NUMBER
  1663. * (WL) = NUMBER OF CM WORDS IN LINE.
  1664. *
  1665. * USES FS+2, FS+3, LW, SC, T1, T3.
  1666. *
  1667. * CALLS RAS, RDD, SSE, SUL.
  1668.  
  1669.  
  1670. SDI9 LDN 0 INDICATE NO LINE FOUND
  1671. STD WL
  1672.  
  1673. SDI SUBR ENTRY/EXIT
  1674. LDN 0 PRESET LAST WORD
  1675. STD WC PRESET CM WORD COUNT
  1676. SDI1 STD LW
  1677. SDI2 LDD T6 SAVE DISK INFORMATION
  1678. STD FS+2
  1679. LDD T7
  1680. STD FS+3
  1681. RJM RDD READ DISK
  1682. MJN SDI9 IF EOI
  1683. ZJN SDI1 IF ZERO LENGTH SECTOR
  1684. STD SC SAVE SECTOR WORD COUNT
  1685. RJM SSE SEARCH SECTOR
  1686. ZJN SDI2 IF NOT FOUND
  1687. LDC BUFF+1
  1688. STD T1
  1689. LDD LW
  1690. SDI3 ZJN SDI5 IF ZERO BYTE FOUND
  1691. LDN 5
  1692. SDI4 RAD T1
  1693. AOD WC COUNT CM WORD
  1694. LDI T1
  1695. UJN SDI3 CHECK NEXT WORD
  1696.  
  1697. SDI5 AOD T1
  1698. RJM SUL SET LINE NUMBER
  1699. LDD CM
  1700. SHN 14
  1701. ADD CM+1
  1702. SDIA ADC * -(LINE NUMBER)
  1703. PJN SDI6 IF FIND MADE
  1704. LDN 5-1
  1705. UJN SDI4 LOOP
  1706.  
  1707. SDI6 RJM RAS READ ADDITIONAL SECTORS UP TO BLOCKSIZE
  1708. LDD LN+4
  1709. ZJN SDI10 IF NOT SINGLE LINE
  1710. LDN 0
  1711. STD T3
  1712. SOD T1
  1713. SDI7 LDN 5 FIND NUMBER OF WORDS IN THE LINE
  1714. RAD T1
  1715. AOD T3
  1716. LDI T1
  1717. ZJN SDI8 IF EOL FOUND
  1718. LDD T3
  1719. SBD WL
  1720. MJN SDI7 IF MORE WORDS TO CHECK
  1721. SDI8 LDD T3 SAVE NUMBER OF WORDS
  1722. STD WL
  1723. SDI10 LJM SDIX RETURN
  1724. SSE SPACE 4,15
  1725. ** SSE - SEARCH SECTOR FOR LINE NUMBER OF LAST LINE IN BUFFER.
  1726. *
  1727. * ENTRY (BUFF) = SECTOR TO SEARCH.
  1728. * (A) = SECTOR WORD COUNT.
  1729. * (LW) = LAST BYTE IN PREVIOUS SECTOR.
  1730. *
  1731. * EXIT (A) = 0, IF LINE NUMBER NOT FOUND.
  1732. * (LW) = IF NUMBER FOUND, LAST BYTE OF PREVIOUS SECTOR.
  1733. * IF NOT FOUND, LAST BYTE OF CURRENT SECTOR.
  1734. *
  1735. * USES LW, S2, T1, T2.
  1736. *
  1737. * CALLS SUL.
  1738.  
  1739.  
  1740. SSE SUBR ENTRY/EXIT
  1741. STD S2 SET PP WORD COUNT
  1742. SHN 2
  1743. RAD S2
  1744. LDD LW SET LAST WORD FOR SEARCH
  1745. STM BUFF+1
  1746. LDC BUFF+1-5 SET STARTING SEARCH ADDRESS
  1747. STD T2
  1748. ADD S2
  1749. STD T1
  1750.  
  1751. * T1 CONTAINS THE ADDRESS OF BYTE FOUR OF THE SECOND TO LAST
  1752. * CM WORD IN THE BUFFER.
  1753.  
  1754. SSE1 LDI T1
  1755. ZJN SSE3 IF ZERO BYTE FOUND
  1756. LCN 5
  1757. RAD T1
  1758. LMD T2
  1759. NJN SSE1 IF NOT AT BEGINNING OF BUFFER
  1760. SSE2 LDM BUFF+1,S2 GET LAST BYTE IN BUFFER
  1761. STD LW
  1762. LDN 0 INDICATE FAILURE
  1763. LJM SSEX EXIT
  1764.  
  1765. SSE3 AOD T1
  1766. RJM SUL SET UP FOUND LINE NUMBER
  1767. LDD CM
  1768. SHN 14
  1769. ADD CM+1
  1770. SSEA ADC * -(LINE NUMBER)
  1771. MJN SSE2 IF DATA NOT IN THIS SECTOR
  1772. LDN 1
  1773. LJM SSEX EXIT
  1774. SUL SPACE 4,10
  1775. ** SUL - SET UP LINE NUMBER.
  1776. *
  1777. * *SUL* CONVERTS A LINE NUMBER UP TO FIVE DIGITS LONG
  1778. * FROM DISPLAY CODE INTO BINARY.
  1779. *
  1780. * ENTRY (T1) = ADDRESS OF FIRST BYTE OF LINE NUMBER.
  1781. *
  1782. * EXIT (T1) = UNCHANGED.
  1783. * (CM - CM+1) = RESULT.
  1784. *
  1785. * USES T2.
  1786.  
  1787.  
  1788. SUL SUBR ENTRY/EXIT
  1789. LDN 0 CLEAR RESULT
  1790. STD CM
  1791. STD CM+1
  1792. LDI T1
  1793. SHN -6
  1794. SBN 1R+
  1795. PJN SULX IF NON-NUMERIC
  1796. ADN 1R+-1R0
  1797. MJN SULX IF NON-NUMERIC
  1798. STD CM+1
  1799. LDI T1
  1800. LPN 77
  1801. SBN 1R+
  1802. PJN SULX IF NON-NUMERIC
  1803. ADN 1R+-1R0
  1804. SUL1 MJN SULX IF NON-NUMERIC
  1805. STD T2
  1806. LDD CM+1
  1807. SHN 2
  1808. ADD CM+1
  1809. SHN 1
  1810. ADD T2
  1811. STD CM+1
  1812. LDM 1,T1
  1813. SHN -6
  1814. SBN 1R+
  1815. SUL2 PJN SULX IF NON-NUMERIC
  1816. ADN 1R+-1R0
  1817. MJN SUL1 IF NON-NUMERIC
  1818. STD T2
  1819. LDD CM+1
  1820. SHN 2
  1821. ADD CM+1
  1822. SHN 1
  1823. ADD T2
  1824. STD CM+1
  1825. LDM 1,T1
  1826. LPN 77
  1827. SBN 1R+
  1828. PJN SUL2 IF NON-NUMERIC
  1829. ADN 1R+-1R0
  1830. SUL3 MJN SUL1 IF NON-NUMERIC
  1831. STD T2
  1832. LDD CM+1
  1833. SHN 2
  1834. ADD CM+1
  1835. SHN 1
  1836. ADD T2
  1837. STD CM+1
  1838. SHN -14
  1839. STD CM
  1840. LDM 2,T1
  1841. SHN -6
  1842. SBN 1R+
  1843. PJN SUL2 IF NON NUMERIC
  1844. ADN 1R+-1R0
  1845. MJN SUL3 IF NON-NUMERIC
  1846. STD T2
  1847. LDD CM
  1848. SHN 14
  1849. ADD CM+1
  1850. SHN 10
  1851. ADD CM
  1852. SHN 14
  1853. ADD CM+1
  1854. SHN 1
  1855. ADD T2
  1856. STD CM+1
  1857. SHN -14
  1858. STD CM
  1859. LJM SULX RETURN
  1860. UDA SPACE 4,10
  1861. ** UDA - UPDATE DISK ADDRESSES.
  1862. *
  1863. * ENTRY (FS+2) = TRACK NUMBER OF FIRST SECTOR LOADED.
  1864. * (FS+3) = SECTOR NUMBER OF FIRST SECTOR LOADED.
  1865. * (WC) = WORD INDEX INTO FIRST SECTOR.
  1866. * (WL) = NUMBER OF WORDS TRANSFERRED TO POTS.
  1867. * (CB) = INDEX TO CONTROL BYTES OF LAST SECTOR READ.
  1868. *
  1869. * EXIT (A) = 0, IF AT END OF DATA ON ROLLOUT FILE
  1870. * (FS+2) = TRACK NUMBER OF SECTOR TO BE ACCESSED ON
  1871. * THE NEXT CALL.
  1872. * (FS+3) = SECTOR NUMBER OF SECTOR TO BE ACCESSED
  1873. * ON THE NEXT CALL.
  1874. * (WL) = CONTINUATION POINT IN SECTOR.
  1875.  
  1876.  
  1877. UDA SUBR ENTRY/EXIT
  1878. LCN 2 MARK END OF CONTROL BYTE TABLE
  1879. RAD CB
  1880. LDK 7777
  1881. STI CB
  1882. STM 1,CB
  1883. LDC EBUF-2 RESET INDEX TO START OF TABLE
  1884. STD CB
  1885. LDD WC
  1886. RAD WL
  1887. UDA1 LDI CB
  1888. ZJN UDA2 IF EOF
  1889. LDD WL
  1890. SBM 1,CB
  1891. MJN UDAX IF UPDATE COMPLETE
  1892. STD WL
  1893. NJN UDA2 IF DATA DOES NOT END ON SECTOR BOUNDARY
  1894. LDM 1,CB
  1895. SHN -6
  1896. NJN UDA2 IF LAST SECTOR WAS FULL
  1897. LDD CN+4
  1898. SHN 21-6
  1899. MJN UDA2 IF LIST FILE
  1900. LCN VOPR NO MORE DATA ON ROLLOUT FILE
  1901. RAD CN+4
  1902. LDN 0
  1903. LJM UDAX EXIT
  1904.  
  1905. UDA2 LDI CB UPDATE TRACK AND SECTOR
  1906. NJN UDA3 IF NOT EOF
  1907. LDM 1,CB
  1908. UDA3 STD FS+3
  1909. SHN 6
  1910. PJN UDA4 IF NOT A NEW TRACK
  1911. SHN -6
  1912. STD FS+2
  1913. LDN 0
  1914. STD FS+3
  1915. UDA4 LCN 2
  1916. RAD CB
  1917. LJM UDA1 CHECK NEXT SECTOR
  1918. UTT SPACE 4,10
  1919. ** UTT - UPDATE TERMINAL TABLE.
  1920. *
  1921. * ENTRY (CN - CN+4) = *VROT* WORD.
  1922. * (FS+2) = TRACK NUMBER OF FIRST SECTOR LOADED.
  1923. * (FS+3) = SECTOR NUMBER OF FIRST SECTOR LOADED.
  1924. * (TT - TT+1) = TERMINAL TABLE ADDRESS.
  1925. * (WC) = WORD INDEX INTO FIRST SECTOR.
  1926. * (WL) = NUMBER OF WORDS TRANSFERRED TO POTS.
  1927. * (CB) = INDEX INTO CONTROL BYTE TABLE.
  1928. *
  1929. * EXIT TERMINAL TABLE WORD *VROT* UPDATED.
  1930. * SCHEDULE FIELD IN EJT UPDATED IF CONTINUATION.
  1931. *
  1932. * USES CM - CM+4.
  1933. *
  1934. * CALLS ABT, UDA.
  1935. *
  1936. * MACROS MONITOR.
  1937.  
  1938.  
  1939. UTT SUBR ENTRY/EXIT
  1940. LDD CN+4 CHECK FOR MORE OUTPUT
  1941. SHN 21-4
  1942. PJN UTT2 IF NO MORE OUTPUT
  1943. LDN 0
  1944. * LDN 1 (*1RO* CALL)
  1945. UTTA EQU *-1
  1946. NJN UTT1 IF NO NEED TO UPDATE DISK ADDRESSES
  1947. RJM UDA
  1948. ZJN UTT2 IF NO MORE OUTPUT
  1949. UTT1 LDD FS+3 STORE SECTOR
  1950. STD CM+4
  1951. LDD FS+2 STORE TRACK
  1952. STD CM+3
  1953. LDD WL STORE WORD COUNT
  1954. STD CM+2
  1955. LDC SCHE*100+30D
  1956. STD CM
  1957. LDN 0
  1958. STD CM+1
  1959. LDD MA STORE MESSAGE BUFFER
  1960. CWD CM
  1961. UJN UTT3 UPDATE SCHEDULE FIELD
  1962.  
  1963. UTT2 LDD MA
  1964. CWM UTTB,ON SET REQUEST TO CHANGE JOB STATUS
  1965. UTT3 LDD TT GET TERMINAL TABLE ADDRESS
  1966. SHN 14
  1967. ADD TT+1
  1968. ADK VUIT
  1969. CRD CM
  1970. ADN VROT-VUIT
  1971. CWD CN
  1972.  
  1973. * UPDATE EJT - JOB STATUS OR SCHEDULE FIELD.
  1974.  
  1975. SFA EJT,CM+4 SET EJT ADDRESS
  1976. STD CM+4
  1977. SHN -14
  1978. STD CM+3
  1979. LDN 0
  1980. STD CM+2
  1981. LDN 1
  1982. STD CM+1
  1983. MONITOR UTEM
  1984. LDD CM+1
  1985. NJN UTT4 IF REJECT
  1986. LJM UTTX EXIT
  1987.  
  1988. UTT4 LDN 4 UNEXPECTED EJT STATUS
  1989. RJM ABT ABORT IAF
  1990.  
  1991.  
  1992. UTTB VFD 6/JSNE,6/5,6/1,42/DOJS
  1993. SPACE 4,10
  1994. QUAL *
  1995. TITLE BUFFERS.
  1996. USE BUFFERS
  1997. BUFFERS SPACE 4,10
  1998.  
  1999.  
  2000. ** GENERAL BUFFERS.
  2001.  
  2002. BUFF EQU * INPUT/OUTPUT BUFFER
  2003. TEPS EQU EPFW-2*VCPC*VRQB
  2004. EBUF EQU TEPS-VRQB*VCPC*5-2 REQUEST QUEUE BUFFER
  2005.  
  2006. BUFL EQU EBUF-BUFF-2*12 *BUFF* LENGTH - MAXIMUM CONTROL
  2007. * BYTE COUNT FOR PPU MEMORY
  2008. ERRNG BUFL-VSEC*500 BUFFER AT LEAST MINIMUM SECTORS LONG
  2009. IBUFL EQU EBUF-IBUF-2*12 INPUT BUFFER LENGTH
  2010. ISEC EQU IBUFL/500B INPUT BUFFER IN SECTORS
  2011. BUFP EQU ISEC*100B/VCPC NUMBER OF POTS IN INPUT BUFFER
  2012.  
  2013. OVERFLOW /2TO/TTOX,IROB
  2014. TTL 1TO - TERMINAL INPUT/OUTPUT.
  2015.  
  2016.  
  2017. END
cdc/nos2.source/opl871/1to.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator