User Tools

Site Tools


Action unknown: copypageplugin__copy
plato:source:plaopl:pio

Table of Contents

PIO

Table Of Contents

  • [00005] -PIO- PLATO CIU INPUT/OUTPUT
  • [00006] COMMENTS
  • [00047] DEFINITIONS
  • [00169] MAIN LOOP
  • [00572] SPECIAL LOOP INPUT OR OUTPUT OFF
  • [00636] -KEYIN- READ NEXT KEY TO KEY BUFFER
  • [00710] -KEYOUT- OUTPUT NEXT KEY
  • [01181] -PAUSE- CHECK FOR STORAGE MOVE OR ERROR
  • [01183] PAUSE - PAUSE FOR STORAGE RELOCATION
  • [01273] PSM - PAUSE FOR STORAGE MOVE
  • [01288] -READECS- ECS TO PPU TRANSFER VIA DDP
  • [01415] -WRITECS- PPU TO ECS TRANSFER VIA DDP
  • [01553] -DDPMCP- MASTER CLEAR DDP PORT
  • [01577] -STATS- OUTPUT STATISTICS
  • [01606] -OUTNET- OUTPUT TERMINAL WORD
  • [01641] -MESSAG- OUTPUT B-DISPLAY MESSAGE
  • [01663] -OTOA- CONVERT OCTAL TO ALPHA
  • [01701] -CEQUIP- CLEAR EQUIPMENT
  • [01744] -ALLOUT- SEND MESSAGE TO ALL TERMINALS
  • [01856] OFFMSG *PLATO OFF* MESSAGE
  • [01937] -DROP- DROP PPU
  • [01978] STORAGE DEFINITIONS
  • [02117] -INITIAL- INITIALIZATIONS
  • [02465] GEC - GET ECS MODE

Source Code

PIO.txt
  1. PIO
  2. * /--- FILE TYPE = E
  3. * /--- BLOCK IDENT 00 000 81/09/09 03.09
  4. IDENT PIO,PIO
  5. TITLE -PIO- PLATO CIU INPUT/OUTPUT
  6. TITLE COMMENTS
  7. COMMENT PLATO CIU INPUT/OUTPUT
  8. *
  9. *
  10. PERIPH
  11. SST
  12. *
  13. LIST F LIST CONDITIONAL CODE ALSO
  14. *
  15. * /--- BLOCK COMMENTS 00 000 81/04/28 14.22
  16. ************************************************************
  17. *
  18. *
  19. *
  20. * 10 ARGUMENTS ARE PASSED TO THIS PROGRAM -
  21. *
  22. *
  23. * 1. ECS ADDRESS OF KEY REQUEST SWITCH/LIST
  24. *
  25. * 2. NUMBER OF SITES RECOGNIZED
  26. *
  27. * 3. RELATIVE ECS ADDRESS OF STATION KEY BUFFERS
  28. *
  29. * 4. RELATIVE ECS ADDRESS OF FRAME COUNTER
  30. *
  31. * 5. RELATIVE ECS ADDRESS OF FRAME LENGTH TABLE
  32. *
  33. * 6. RELATIVE ECS ADDRESS OF FRAME BUFFERS
  34. *
  35. * 7. CM ADDRESS OF STATISTICS BUFFER
  36. *
  37. * 8. UNUSED
  38. *
  39. * 9. MAXIMUM FRAME LENGTH
  40. *
  41. * 10. PHYSICAL-LOGICAL SITE MAPPING INFO
  42. *
  43. *
  44. *
  45. ************************************************************
  46. * /--- BLOCK DEFINITION 00 000 82/10/26 13.31
  47. TITLE DEFINITIONS
  48. *
  49. *
  50. *
  51.  
  52. *
  53. * DETERMINE OPERATING SYSTEM LEVEL THIS DECK
  54. * SHOULD BE ASSEMBLED FOR. ASSEMBLE FOR THE OS
  55. * NUMBER SPECIFIED IN THE ',ML', PARAMETER OF THE
  56. * -COMPASS- OR -CSTC- CARD. DEFAULT VALUE IS 518D.
  57. *
  58.  
  59. *CALL COMPMAC
  60. *CALL COMSCPS
  61. *CALL COMSSSD
  62. *CALL PLAP501
  63. *CALL PTEXT
  64. *CALL SYSCON
  65. *CALL PLASMPC
  66. *CALL AIDTEXT
  67. *
  68. *
  69. ************************************************************
  70. *
  71. * THE FOLLOWING PARAMETERS MUST CORRESPOND TO THE
  72. * EQUIVALENT DEFINITIONS IN PLATO
  73. *
  74. * FMASK - FRAMSHF/FRAMSIZ
  75. * KEYBSHF - NKEYSHF
  76. * NPARAMS - LOADPIO
  77. * STATLTH - PIOSTAT
  78. * SCIMLTH - NPIOSC
  79. * BADLTH - PIOSTAT
  80. * FORINIP - FORINIP
  81. *
  82. FMASK EQU 177B MASK FOR FRAME INDEX
  83. KEYBSHF EQU 1 SHIFT FOR KEY BUFFER DIMENSION
  84. NPARAMS EQU 10 NUMBER OF ARGUMENTS
  85. STATLTH EQU 4 NUMBER OF CM STATISTICS WORDS
  86. SCIMLTH EQU 2 NUMBER CM WRDS IN PIO/SCIM BUFF
  87. BADLTH EQU 10 LENGTH OF BAD STATION LIST
  88. XBADLTH EQU 9 LENGTH OF LIST PASSED FROM SCIM
  89. FORINIP EQU 2 FRAMAT INITIALIZATION FLAG
  90. *
  91. *
  92. ************************************************************
  93. *
  94. *
  95. OFLIMIT EQU 4 NUMBER OF STATION KEY BUFFER
  96. * OVERFLOWS ALLOWED BEFORE
  97. * BLOCKING STATION
  98. PPBLTH EQU 10 SIZE OF OUTPUT BUFFER
  99. KEYLTH EQU 360 SIZE OF KEY INPUT BUFFER
  100.  
  101. * NTERMS = NUMBER OF REAL STATIONS (IPTEXT)
  102.  
  103. *
  104. *
  105. ************************************************************
  106. * /--- BLOCK DEFINITION 00 000 84/11/16 10.35
  107. *
  108. *
  109. * LOW CORE DEFINITIONS
  110. *
  111. *
  112. D.T0 EQU 20B DIRECT CELL WORK VARIABLES
  113. D.T1 EQU 21B
  114. D.T2 EQU 22B
  115. D.T3 EQU 23B
  116. D.T4 EQU 24B
  117. *
  118. IOUT EQU 25B
  119. NOUT EQU 26B
  120. STATION EQU 27B
  121. KEY EQU 30B
  122. KEYII EQU 31B
  123. KEYOI EQU 32B
  124. A170 EQU 33B (0 = 700 MACHINE, 1 = 800)
  125. *
  126. NS EQU 44B NUMBER OF SITES FOR THIS CIU
  127.  
  128. CB EQU 45B CIU BIAS TO GET PLATO STATION
  129.  
  130. FS EQU 46B FIRST LEGAL STATION
  131.  
  132. D.RSAV EQU 66B - 67B SAVE AREA FOR R-REGISTER
  133. *
  134. ************************************************************
  135. *
  136. *
  137. * ALL-STATIONS MESSAGE OUTPUT DEFINITIONS
  138. *
  139. *
  140. BASE EQU D.T0
  141. LENGTH EQU D.T1
  142. ILOOP EQU D.T2
  143. ADDRESS EQU D.T3
  144.  
  145. NN EQU 4
  146. NCLASSES SET 1
  147. DUP NN,1
  148. NCLASSES SET NCLASSES*2
  149. *
  150. *
  151. ************************************************************
  152. *
  153. *
  154. *
  155. * -KEYSIN-
  156. * MACRO TO ACCEPT ALL PENDING KEYS FROM CIU
  157. *
  158. PURGMAC KEYSIN
  159. KEYSIN MACRO
  160. LOCAL A,B
  161. EJM B,I=NIU
  162. A CALL KEYIN
  163. FJM A,I=NIU
  164. B BSS 0
  165. ENDM
  166. *
  167. *
  168. * /--- BLOCK MAIN LOOP 00 000 81/04/30 15.04
  169. TITLE MAIN LOOP
  170. *
  171. *
  172. *
  173. ORG PPFW
  174. PIO CALL INITIAL INITIALIZATIONS
  175. *
  176. * * * SELECT THE CIU OUTPUT
  177. * * * THIS IS ONLY NEEDED ONCE INITIALLY, AND
  178. * * * AFTER THE CIU HAS BEEN DE-SELECTED WITH A
  179. * * * 7XXX FUNCTION.
  180. * * *
  181. * * * IF THE CIU OUTPUT IS NOT SELECTED, THE
  182. * * * FRAME COUNTER DOES NOT GET WRITTEN BACK,
  183. * * * CAUSING THE FRAMER AND THE PPU TO GET OUT
  184. * * * OF STEP FOR A WHILE. (SYMPTOM--15 SECONDS
  185. * * * OF REPEATED OUTPUT.)
  186. *
  187. LDM CIUEQ CHECK IF CIU AVAILABLE
  188. ZJP MAIN JUMP IF NOT
  189.  
  190. IJM M50,O=NIU
  191. DCN O=NIU DEACTIVATE NIU OUTPUT CHANNEL
  192.  
  193. M50 FNC 0,O=NIU SELECT OUTPUT CONTROLLER
  194. WAIT INACTIVE,O=NIU,M120
  195. *
  196. *
  197. * WAIT TILL NIU IS READY FOR NEXT FRAME
  198. *
  199. MAIN CALL PAUSE CHECK FOR PAUSE OR ERROR
  200. LDM PINIT
  201. NJP M102 CHECK INITIALIZATIONS COMPLETE
  202. LOADCM PSTATS
  203. CRD D.T0 READ PPU STATUS WORD
  204. LDD D.T0+4
  205. LPN 2 MASK OFF INITIALIZATION BIT
  206. ZJP M102
  207. LDN 1 MARK INITIALIZATIONS COMPLETE
  208. STM PINIT
  209. DELAY 5000
  210. CALL ALLOUT,ONMSG PRESS NEXT TO BEGIN
  211. DELAY 5000
  212. *
  213. * CHECK IF FRAMAT INITIALIZING
  214. *
  215. M102 SOM FICNT CHECK IF SHOULD READ ECS FLAG
  216. NJP M104
  217. LDN 5 RE-SET COUNTER
  218. STM FICNT
  219. *
  220. M1020 LDC ECSBUFF
  221. STD D.T0 D.T0 = PPU MEMORY ADDRESS
  222. LDM ECRA+1 COMPUTE ECS ADR OF INITIAL FLAG
  223. ADC FORINIP
  224. STD D.T2 D.T2 = LOWER PART OF ECS ADDR
  225. SHN -12
  226. ADM ECRA
  227. STD D.T1 D.T1 = UPPER PART OF ECS ADDR
  228. LDN 5
  229. STD D.T3 D.T3 = NUMBER PPU WORDS TO READ
  230. CALL READECS READ FRAMAT INITIAL FLAG
  231. LDM ECSBUFF
  232. LPC 4000B MASK OFF INITIALIZATION BIT
  233. ZJP M104
  234. CALL MESSAG,(=16CPIO WAIT FRAMAT)
  235. CALL PAUSE CHECK FOR STORAGE MOVE / ERROR
  236. DELAY 5000 IDLE FOR A WHILE
  237. CALL MESSAG,=0
  238. UJP M1020 WAIT FOR INITIALIZATIONS
  239. *
  240. * /--- BLOCK MAIN LOOP 00 000 84/11/15 10.49
  241. *
  242. M104 CALL STATS PROCESS STATISTICS
  243. LDM CIUEQ CHECK IF CIU AVAILABLE
  244. ZJP SPEC EXIT IF NOT
  245. *
  246. * ACCEPT PENDING KEYS FROM CIU AND PASS TO PLATO
  247. *
  248. LDM NFRAME+4 CHECK FRAME COUNT - RE-SELECT
  249. LPC 77B CIU INPUT EVERY 64 FRAMES
  250. NJP M107
  251. KEYSIN INPUT KEY(S) FROM CIU
  252. IJM M105,I=NIU CHECK IF CHANNEL INACTIVE
  253. DCN I=NIU DE-ACTIVATE INPUT CHANNEL
  254. WAIT INACTIVE,I=NIU,M124
  255. *
  256. M105 FNC 40B,I=NIU SELECT INPUT CONTROLLER
  257. WAIT INACTIVE,I=NIU,M124
  258. ACN I=NIU ACTIVATE NIU INPUT CHANNEL
  259. WAIT ACTIVE,I=NIU,M124
  260. *
  261. M107 LDN 10 PROCESS MAX OF 10 KEYS
  262. STM KOCNT
  263. *
  264. M108 KEYSIN ACCEPT PENDING KEYS FROM CIU
  265. LDD KEYII LOAD KEY BUFFER INPUT POINTER
  266. ZJP M110
  267. CALL KEYOUT OUTPUT NEXT KEY TO PLATO
  268. SOM KOCNT
  269. PJP M108
  270. *
  271. * /--- BLOCK MAIN LOOP 00 000 84/11/15 10.44
  272. *
  273. * ATTEMPT TO SELECT CIU AND OUTPUT NO-OP
  274. *
  275. M110 IJM M112,O=NIU
  276. DCN O=NIU DEACTIVATE NIU OUTPUT CHANNEL
  277. ****
  278. * A -FNC 0,O=NIU- STATEMENT HAS BEEN REMOVED HERE,
  279. * AS IT CAUSED THE NIU TO OVER-WRITE THE DATA
  280. * IN ITS HOLD BUFFER, CAUSING PREVIOUS DATA TO BE
  281. * OVER-WRITTEN FOR STATION 0.
  282. *
  283. * IT IS THOUGHT THAT THE BIT PATTERN THAT WAS USED
  284. * FOR NOOP0 FROM 80/1/25 UNTIL THE 81/3/8 (5767B)
  285. * WAS GENERATING SOME OVER-WRITES OF THE NIU BUFFER
  286. * FOR STATION 0-3 ON CDC SYSTEMS, DUE TO REGISTERS
  287. * CHANGING AT THE SAME TIME THEY WERE BEING COPIED
  288. * IN THE NIU (SEE NOTES BY J. STIFLE, 'SEPT. 1980).
  289. *
  290. * IT IS HOPED THAT REMOVING THE CAUSE OF THE OVER-
  291. * WRITES WILL ALLOW THOSE STATIONS TO FUNCTION
  292. * AGAIN.
  293. * BOB RADER 3/8/81
  294. ****
  295. *
  296. * M111 FNC 0,O=NIU SELECT OUTPUT CONTROLLER
  297. * IJM M112,O=NIU
  298. * DELAY 10
  299. * IJM M112,O=NIU
  300. * DCN O=NIU DISCONNECT IF NIU NOT READY
  301. * UJP MAIN
  302. *
  303. M112 ACN O=NIU ACTIVATE NIU OUTPUT CHANNEL
  304. LDN 1 SEND FIRST WORD OF A NO-OP TO
  305. OAM NOOP0,O=NIU STATION 0
  306. EJM M114,O=NIU JUMP IF CIU READY FOR FRAME
  307. DELAY 15
  308. EJM M114,O=NIU
  309. IJM MAIN,O=NIU
  310. DCN O=NIU DISCONNECT IF NOT READY
  311. UJP MAIN
  312. *
  313. M114 LDN 2 SEND REMAINING WORDS OF NO-OP
  314. OAM NOOP0+1,O=NIU
  315. EJM M200,O=NIU JUMP IF NIU READY FOR FRAME
  316. DELAY 5
  317. EJM M200,O=NIU
  318. DELAY 15
  319. EJM M200,O=NIU
  320. UJP M120 ERROR IF NOT READY
  321. *
  322. *
  323. M120 IJM M121,O=NIU
  324. DCN O=NIU DISCONNECT IF NIU NOT READY
  325. *
  326. M121 CALL MESSAG,(=27CPIO NO RESPONSE CIU OUTPUT)
  327. AOM OUTRESP
  328. UJP MAIN
  329. *
  330. M124 IJM M125,I=NIU
  331. DCN I=NIU DISCONNECT IF NIU NOT READY
  332. *
  333. M125 CALL MESSAG,(=26CPIO NO RESPONSE CIU INPUT)
  334. AOM KYRESP
  335. UJP MAIN
  336. *
  337. * /--- BLOCK MAIN LOOP 00 000 84/11/15 10.53
  338. *
  339. * PROCESS FLOODING STATIONS LISTS AND READ LIST
  340. * OF STATIONS IN MAINTENANCE MODE
  341. *
  342. *
  343. *
  344. M200 SOM BADCNT CHECK IF SHOULD CLEAR BAD
  345. PJP M205 STATION LIST
  346. LDC 900
  347. STM BADCNT RE-SET COUNTER
  348. *
  349. *
  350. LDC SCIMLTH*5
  351. STD D.T3 D.T3 = N OF PPU WRDS TO READ
  352. LDC SCIMBUF
  353. STD D.T0 D.T0 = PPU MEMORY ADDRESS
  354. LDM ECRA+1 LOAD LOWER PART OF ECS RA
  355. ADM SCIMADD+1 ADD LOWER PART OF ECS REL ADDR
  356. STD D.T2 D.T2 = LOWER ECS ADDRESS
  357. SHN -12
  358. ADM ECRA ADD UPPER PART OF ECS RA
  359. ADM SCIMADD ADD UPPER PART OF ECS REL ADDR
  360. STD D.T1 D.T1 = UPPER ECS ADDRESS
  361. CALL READECS READ SCIM COMMUNICATION BUFFER
  362. *
  363. LDN 0
  364. STM ITEST ZERO N ENTRIES IN TEST LIST
  365. LDN BADLTH*2 LOAD LENGTH OF TEST/COUNT LISTS
  366. STD D.T0
  367. *
  368. M201 SOD D.T0 DECREMENT INDEX
  369. MJP M202 JUMP WHEN END OF LIST REACHED
  370. LDN 0
  371. STM TESTLST,D.T0 ZERO NEXT ENTRY IN TEST LIST
  372. STM CNTLST,D.T0 ZERO NEXT ENTRY IN COUNT LST
  373. UJP M201
  374. *
  375. *
  376. M202 LDN 0
  377. STM IBAD CLEAR LENGTH OF LIST
  378. LDC BADLTH
  379. STD D.T0 INITIALIZE INDEX
  380. *
  381. M203 SOD D.T0 DECREMENT INDEX
  382. MJP M205
  383. LDN 0 CLEAR NEXT ENTRY IN BAD LIST
  384. STM BADLIST,D.T0
  385. UJP M203
  386. *
  387. * /--- BLOCK MAIN LOOP 00 000 84/11/15 10.49
  388. *
  389. * INCREMENT FRAME COUNTER AND WRITE TO ECS
  390. *
  391. M205 LDM FBIAS
  392. STM IBIAS INITIALIZE BIAS TO THIS FRAME
  393. LDM FBIAS+1
  394. STM IBIAS+1
  395. LDM NFRAME+4 LOAD FRAME COUNTER
  396. LPC FMASK MASK OFF INDEX IN FRAME BUFFER
  397. STM IFRAME
  398. NJP M210 CHECK IF MUST RE-SET BIAS
  399. LDN 0
  400. STM IBIAS RE-SET BIAS TO NEXT FRAME
  401. STM IBIAS+1
  402. STM FBIAS
  403. LDM FRAMLTH
  404. STM FBIAS+1
  405. UJP M215
  406. *
  407. M210 LDM FRAMLTH ADVANCE POINTER TO NEXT FRAME
  408. RAM FBIAS+1
  409. SHN -12
  410. RAM FBIAS
  411. *
  412. M215 LDN 4
  413. STD D.T0 INITIALIZE BYTE INDEX
  414. *
  415. M220 AOM NFRAME,D.T0 INCREMENT NEXT BYTE
  416. SHN -12
  417. ZJP M225 CHECK FOR OVERFLOW TO NEXT BYTE
  418. SOD D.T0
  419. PJP M220 END TEST
  420. *
  421. M225 LDC NFRAME
  422. STD D.T0 D.T0 = PPU MEMORY ADDRESS
  423. LDM ECRA+1 COMPUTE ECS ADDR OF FRAME COUNT
  424. ADM OUTPNT+1
  425. STD D.T2 D.T2 = LOWER PART OF ECS ADDR
  426. SHN -12
  427. ADM ECRA
  428. ADM OUTPNT
  429. STD D.T1 D.T1 = UPPER PART OF ECS ADDR
  430. LDN 5
  431. STD D.T3 D.T3 = NUMBER WORDS TO WRITE
  432. CALL WRITECS UPDATE FRAME COUNTER IN ECS
  433. *
  434. * /--- BLOCK MAIN LOOP 00 000 81/04/21 20.41
  435. *
  436. * READ LENGTH OF CURRENT FRAME FROM ECS LENGTH TABLE
  437. *
  438. KEYSIN ACCEPT ANY KEYS FROM CIU
  439. LDC ECSBUFF
  440. STD D.T0 D.T0 = PPU MEMORY ADDRESS
  441. LDM IFRAME LOAD INDEX TO CURRENT FRAME
  442. ADM ECRA+1 FORM LOWER PART OF ECS ADDRESS
  443. ADM OUTTAB+1
  444. STD D.T2 D.T2 = LOWER PART OF ECS ADDR
  445. SHN -12
  446. ADM ECRA FORM UPPER PART OF ECS ADDRESS
  447. ADM OUTTAB
  448. STD D.T1 D.T1 = UPPER PART OF ECS ADDR
  449. LDN 5
  450. STD D.T3 D.T3 = NUMBER OF WORDS TO READ
  451. CALL READECS READ FROM FRAME LENGTH TABLE
  452. NJP M272 EXIT IF ECS PARITY ERROR
  453. LDM ECSBUFF+4
  454. STD NOUT SET LENGTH OF CURRENT FRAME
  455. LDC -1 INITIALIZE LAST BUFFER FLAG
  456. STM ILAST
  457. LDD NOUT NUMBER OF WORDS IN FRAME
  458. NJP M300 JUMP IF NOT AN EMPTY FRAME
  459. *
  460. * /--- BLOCK MAIN LOOP 00 000 84/11/15 10.44
  461. *
  462. * SPECIAL TREATMENT FOR EMPTY FRAME
  463. *
  464. M272 BSS 0
  465. LDN 0
  466. STD D.T0
  467. STM ILAST
  468. STD IOUT
  469. UJP M325
  470. * /--- BLOCK MAIN LOOP 00 000 84/11/15 10.47
  471. *
  472. * READ AND OUTPUT NEXT PORTION OF FRAME
  473. *
  474. M300 KEYSIN ACCEPT ANY KEYS FROM CIU
  475. LDC PPBLTH
  476. STD D.T3 D.T3 = NUMBER CPU WORDS TO READ
  477. STD IOUT
  478. LDD NOUT GET NUMBER OF WORDS REMAINING
  479. SBM PENDTST PENDTST = PPBLTH
  480. STD NOUT
  481. ZJP M315
  482. PJP M320 JUMP IF NOT LAST BUFFER FULL
  483. *
  484. M315 ADC PPBLTH
  485. STD D.T3 D.T3 = NUMBER CPU WORDS TO READ
  486. STD IOUT
  487. STM ILAST SET FLAG FOR LAST BUFFER
  488. *
  489. * /--- BLOCK MAIN LOOP 00 000 81/04/21 20.42
  490. *
  491. * READ NEXT PORTION OF CURRENT FRAME FROM ECS
  492. *
  493. M320 LDM IBIAS+1 COMPUTE ECS ADDRESS
  494. ADM ECRA+1 FORM LOWER PART OF ECS ADDRESS
  495. ADM OUTBUFF+1
  496. STD D.T2 D.T2 = LOWER PART OF ECS ADDR
  497. SHN -12
  498. ADM ECRA FORM UPPER PART OF ECS ADDRESS
  499. ADM OUTBUFF
  500. ADM IBIAS
  501. STD D.T1 D.T1 = UPPER PART OF ECS ADDR
  502. LDC PPBUFF
  503. STD D.T0 D.T0 = ADDRESS OF PPU BUFFER
  504. LDD D.T3
  505. RAM IBIAS+1 INCREMENT BIAS IN FRAME BUFFER
  506. SHN -12
  507. RAM IBIAS
  508. LDD D.T3
  509. SHN 2
  510. RAD D.T3 D.T3 = NUM PPU WORDS TO READ
  511. CALL READECS
  512. KEYSIN ACCEPT ANY KEYS FROM CIU
  513. LDM ILAST
  514. SHN 6
  515. MJP M330 JUMP IF NOT LAST BUFFER
  516. SHN -6
  517. STD D.T0
  518. SHN 2 MULTIPLY BY 5 FOR PPU WORD CNT
  519. RAD D.T0
  520. *
  521. * * * PUT EMPTY FRAME AT END TO SIGNAL END OF FRAME
  522. * SEND IT TO UNUSED STATION.
  523. *
  524. M325 BSS 0
  525. LDC 2000B+1023 SET BIT AND STATION NUMBER
  526. STM PPBUFF+2,D.T0
  527. LDN 0
  528. STM PPBUFF+1,D.T0
  529. LDC 4000B SET START BIT
  530. STM PPBUFF,D.T0
  531. AOD IOUT COUNT EXTRA FRAME
  532. *
  533. * /--- BLOCK MAIN LOOP 00 000 81/04/21 20.44
  534. *
  535. * OUTPUT NEXT PORTION OF FRAME TO CIU
  536. *
  537. M330 LDC PPBUFF INITIALIZE POINTER
  538. STD D.T0
  539. *
  540. M350 SOD IOUT NUMBER OF WORDS LEFT IN BUFFER
  541. MJP M370 EXIT IF END OF BUFFER
  542. LDD D.T0 POINTER TO NEXT TERMINAL WORD
  543. STM M357+1 PLANT ADDRESS OF OUTPUT
  544. ADN 5
  545. STD D.T0 ADVANCE POINTER
  546. *
  547. WAIT EMPTY,O=NIU,M360
  548. *
  549. M355 LDN 3 SET TO OUTPUT NEXT 3 WORDS
  550. M357 OAM **,O=NIU OUTPUT NEXT TERMINAL WORD
  551. UJP M350
  552. *
  553. *
  554. * RE-SELECT CIU OUTPUT CONTROLLER IF TIME-OUT
  555. *
  556. M360 IJM M365,O=NIU
  557. DCN O=NIU DEACTIVATE CIU OUTPUT CHANNEL
  558. *
  559. M365 FNC 0,O=NIU SELECT OUTPUT CONTROLLER
  560. WAIT INACTIVE,O=NIU,M120
  561. ACN O=NIU ACTIVATE CIU OUTPUT CHANNEL
  562. UJP M355
  563. *
  564. *
  565. * CHECK IF AT END OF FRAME
  566. *
  567. M370 LDM ILAST LOAD LAST BUFFER FLAG
  568. SHN 6
  569. MJP M300 CONTINUE IF NOT LAST BUFFER
  570. UJP MAIN
  571. * /--- BLOCK SPECIAL 00 000 84/11/15 10.47
  572. TITLE SPECIAL LOOP INPUT OR OUTPUT OFF
  573. *
  574. *
  575. *
  576. SPEC DELAY 1000 IDLE FOR A WHILE
  577. LDM CIUEQ CHECK IF CIU AVAILABLE
  578. ZJP I700 EXIT IF NOT
  579. *
  580. * ACCEPT PENDING KEYS FROM CIU AND PASS TO PLATO
  581. *
  582. AJM I150,I=NIU CHECK IF CHANNEL ACTIVE
  583. FNC 40B,I=NIU SELECT INPUT CONTROLLER
  584. WAIT INACTIVE,I=NIU,M124
  585. ACN I=NIU ACTIVATE NIU INPUT CHANNEL
  586. WAIT ACTIVE,I=NIU,M124
  587. *
  588. I150 LDN 20 PROCESS MAX OF 20 KEYS
  589. STM KOCNT
  590. *
  591. I160 KEYSIN ACCEPT PENDING KEYS FROM CIU
  592. LDD KEYII LOAD KEY BUFFER INPUT POINTER
  593. ZJP I700
  594. CALL KEYOUT OUTPUT NEXT KEY TO PLATO
  595. SOM KOCNT
  596. PJP I160
  597. UJP I700
  598. *
  599. * /--- BLOCK SPECIAL 00 000 84/11/15 10.47
  600. *
  601. * INCREMENT FRAME COUNTER APROX EVERY 16 MILLS
  602. *
  603. I700 SOM SFCNT CHECK IF TIME TO UPDATE FRAME
  604. PJP MAIN
  605. LDN 15 RE-SET COUNTER
  606. STM SFCNT
  607. LDN 4
  608. STD D.T0 INITIALIZE BYTE INDEX
  609. *
  610. I720 AOM NFRAME,D.T0 INCREMENT NEXT BYTE
  611. SHN -12
  612. ZJP I725 CHECK FOR OVERFLOW TO NEXT BYTE
  613. SOD D.T0
  614. PJP I720 END TEST
  615. *
  616. I725 LDC NFRAME
  617. STD D.T0 D.T0 = PPU MEMORY ADDRESS
  618. LDM ECRA+1 COMPUTE ECS ADDR OF FRAME COUNT
  619. ADM OUTPNT+1
  620. STD D.T2 D.T2 = LOWER PART OF ECS ADDR
  621. SHN -12
  622. ADM ECRA
  623. ADM OUTPNT
  624. STD D.T1 D.T1 = UPPER PART OF ECS ADDR
  625. LDN 5
  626. STD D.T3 D.T3 = NUMBER WORDS TO WRITE
  627. CALL WRITECS UPDATE FRAME COUNTER IN ECS
  628. UJP MAIN
  629. *
  630. *
  631. IFP$ EQU 1 FOR COMPGFP
  632. EJT$ EQU 1 ASSEMBLE ROUTINE .CEA
  633. *CALL COMPGFP
  634. IFP HERE
  635. * /--- BLOCK KEYIN 00 000 81/09/08 01.28
  636. TITLE -KEYIN- READ NEXT KEY TO KEY BUFFER
  637. *
  638. *
  639. *
  640. * -KEYIN-
  641. * READS NEXT KEY (2 PPU WORDS) FROM CIU TO BUFFER
  642. * CALLED BY -KEYSIN- MACRO
  643. *
  644. *
  645. KEYIN SUBR
  646. AJM KY100,I=NIU CHECK IF CHANNEL ACTIVE
  647. FNC 40B,I=NIU SELECT INPUT CONTROLLER
  648. WAIT INACTIVE,I=NIU,KY860
  649. ACN I=NIU ACTIVATE CIU INPUT CHANNEL
  650. *
  651. KY100 EJM KEYINX,I=NIU IF NO KEY READY YET
  652. IAN I=NIU INPUT STATION DATA WORD@
  653. STD D.T0
  654. SHN 6 POSITION STATION WORD BIT
  655. PJP KY850 EXIT IF CIU OUT OF STEP
  656. WAIT FULL,I=NIU,KY860 WAIT FOR KEY DATA WORD
  657. IAN I=NIU INPUT KEY DATA WORD
  658. STD D.T1
  659. LDD KEYII LOAD INDEX IN KEY BUFFER
  660. STD D.T3
  661. ADN 2 ADVANCE INDEX
  662. STD KEYII
  663. SBM MXKBIDX CHECK AGAINST MAXIMUM
  664. MJN KY110
  665. LDD KEYII
  666. STM MXKBIDX
  667. KY110 LDD KEYII
  668. SBM KENDTST CHECK FOR BUFFER OVERFLOW
  669. PJP KY870
  670. LDD D.T0 LOAD FIRST WORD OF KEY
  671. LPC 3777B REMOVE TOP BIT
  672. STM KEYBUFF,D.T3
  673. LDD D.T1 LOAD SECOND WORD OF KEY
  674. STM KEYBUFF+1,D.T3
  675. LJM KEYINX
  676. * /--- BLOCK KEYIN 00 000 81/08/06 22.29
  677. *
  678. KY850 CALL MESSAG,(=24CPIO KEY DATA OUT OF SEQ)
  679. AOM KYSEQ
  680. UJP KY890
  681. *
  682. KY860 CALL MESSAG,(=26CPIO NO RESPONSE CIU INPUT)
  683. AOM KYRESP
  684. UJP KY890
  685. *
  686. KY870 AOM KYOFLOW INCREMENT OVERFLOW COUNT
  687. STD D.T0
  688. CALL OTOA CONVERT OCTAL TO ALPHA
  689. LDD D.T1
  690. STM KYM100 PLANT ALPHA COUNTER
  691. LDD D.T2
  692. STM KYM100+1
  693. CALL DFM,KYMSG1 OUTPUT DAYFILE MESSAGE
  694. LDN 0
  695. STD KEYII DUMP ALL KEYS IN BUFFER
  696. STD KEYOI
  697. UJN KYI9
  698. *
  699. KY890 DCN I=NIU DISCONNECT CIU CHANNEL
  700. DELAY 10
  701. ACN I=NIU RE-ACTIVATE CIU CHANNEL
  702. KYI9 LJM KEYINX
  703. *
  704. *
  705. KYMSG1 DIS ,*PIO KEY BUFFER OVERFLOW XXXX*
  706. KYM100 EQU KYMSG1+13
  707. *
  708. *
  709. * /--- BLOCK KEYOUT 00 000 77/08/23 03.47
  710. TITLE -KEYOUT- OUTPUT NEXT KEY
  711. *
  712. *
  713. *
  714. * -KEYOUT-
  715. * OUTPUTS NEXT KEY FROM PPU KEY BUFFER TO STATION
  716. * KEY BUFFER IN ECS AND SETS BIT FOR THIS STATION
  717. * IN CM AND ECS POLLING LISTS
  718. *
  719. *
  720. KEYOUT SUBR
  721. *
  722. * GET NEXT KEY TO *KEY* AND *STATION*
  723. *
  724. LDD KEYII LOAD BUFFER INPUT POINTER
  725. SBD KEYOI CHECK AGAINST OUTPUT POINTER
  726. ZJP KYO900 EXIT IF NO KEYS TO DO
  727. MJP KYO900
  728. LDD KEYOI LOAD OUTPUT POINTER
  729. STD D.T0
  730. ADN 2 ADVANCE OUTPUT POINTER
  731. STD KEYOI
  732. LDM KEYBUFF,D.T0 LOAD STATION WORD
  733. STD STATION
  734. SBD FS FIRST LEGAL PHYSICAL STATION
  735. MJP KYO820 NOT LEGAL
  736. LDD STATION
  737. ADC -0 MAX LEGAL PHYSICAL STATION
  738. .NTERM1 EQU *-1
  739. PJP KYO820 IF TOO BIG
  740. LDD CB BIAS TO LOGICAL STATION NUMBER
  741. RAD STATION
  742. *
  743. * CHECK IF THIS STATION FLOODING SYSTEM WITH KEYS
  744. *
  745. STD D.T1 SET STATION NUMBER
  746. LDM IBAD GET NUMBER OF FLOODING STATIONS
  747. ZJN KYO150
  748. STD D.T2
  749. *
  750. KYO110 SOD D.T2 DECREMENT INDEX IN BAD LIST
  751. MJN KYO150
  752. LDM BADLIST,D.T2
  753. SBD D.T1 CHECK IF THIS STATION FLOODING
  754. NJP KYO110
  755. LJM KEYOUTX
  756. *
  757. KYO150 BSS 0
  758.  
  759. LDM KEYBUFF+1,D.T0 LOAD KEY WORD
  760. STD KEY
  761. *
  762. * /--- BLOCK KEYOUT 00 000 75/08/11 20.05
  763. *
  764. * READ KEY BUFFER FOR THIS STATION
  765. *
  766. LDC ECSBUFF
  767. STD D.T0 D.T0 = PPU MEMORY ADDRESS
  768. LDD STATION COMPUTE KEY BUFFER INDEX
  769. SHN KEYBSHF
  770. ADM ECRA+1 ADD LOWER PART OF ECS RA
  771. ADM KEYBADD+1 ADD LOWER PART OF KEY BUFF ADDR
  772. STD D.T2 D.T2 = LOWER ECS ADDRESS
  773. SHN -12
  774. ADM ECRA ADD UPPER PART OF ECS RA
  775. ADM KEYBADD ADD UPPER PART OF KEY BUFF ADDR
  776. STD D.T1 D.T1 = UPPER ECS ADDRESS
  777. LDN 10
  778. STD D.T3 D.T3 = NUMBER PPU WORDS TO READ
  779. CALL READECS D.T0 - D.T3 ALREADY SET UP
  780. NJP KEYOUTX IF ECS PARITY ERROR
  781. *
  782. * /--- BLOCK KEYOUT 00 000 84/11/15 10.50
  783. *
  784. * CHECK FOR FAST COLLECT BIT (TOP BIT OF STOP1 BYTE)
  785. *
  786. LDM ECSBUFF+8 GET STOP1 CODE
  787. LPC 4000B ISOLATE FASTKEY ON-BIT
  788. ZJP KYO210 JUMP IF NOT FAST COLLECT
  789. *
  790. * COUNT THE FAST COLLECT EXECUTIONS
  791. *
  792. AOM FKSTAT
  793. *
  794. * READ FAST COLLECT CONTROL BUFFER
  795. *
  796. LDC FKYBUFF D.T0 = PPU MEMORY ADDRESS
  797. STD D.T0
  798. LDM ECRA+1 LOWER PART OF ECS RA
  799. ADM FKBFADD+1 ADD LOWER PART OF ADDRESS
  800. STD D.T2 D.T2 = LOWER ECS ADDRESS
  801. SHN -12
  802. ADM ECRA ADD UPPER PART OF ECS RA
  803. ADM FKBFADD ADD UPPER PART OF ADDRESS
  804. STD D.T1 D.T1 = UPPER ECS ADDRESS
  805. LDN 10 LENGTH = 2 CM WORDS
  806. STD D.T3 D.T3 = NUMBER PPU WORDS TO READ
  807. CALL READECS
  808. NJP KEYOUTX IF ECS PARITY ERROR
  809. *
  810. * CHECK THAT THIS IS THE PROPER STATION
  811. *
  812. LDM FKYBUFF+5 GET STATION EXPECTED
  813. SBD STATION ACTUAL STATION
  814. NJP KYO200 JUMP IF NOT CORRECT STATION
  815. *
  816. * CHECK IF ALREADY DONE COLLECTING
  817. *
  818. LDM FKYBUFF+4 GET TOP BIT IN 5TH BYTE
  819. LPC 4000B ISOLATE IT
  820. NJP KYO200 JUMP IF DONE (BIT SET)
  821. *
  822. * READ PROPER WORD OF ECS STORAGE BUFFER
  823. *
  824. KYO155 LDC STRBUFF D.T0 = PPU MEMORY ADDRESS
  825. STD D.T0
  826. LDM ECRA+1 LOWER PART OF ECS RA
  827. ADM FKYBUFF+1 ADD LOWER PART OF ADDRESS
  828. STD D.T2 D.T2 = LOWER ECS ADDRESS
  829. SHN -12
  830. ADM ECRA ADD UPPER PART OF ECS RA
  831. ADM FKYBUFF ADD UPPER PART OF ADDRESS
  832. STD D.T1 D.T1 = UPPER ECS ADDRESS
  833. LDN 5 LENGTH = 1 CM WORD
  834. STD D.T3 D.T3 = NUMBER PPU WORDS TO READ
  835. CALL READECS
  836. KYO1 NJP KEYOUTX IF ECS PARITY ERROR
  837. *
  838. * /--- BLOCK KEYOUT 00 000 81/09/07 00.36
  839. *
  840. * STORE THE KEY IN THE BUFFER
  841. *
  842. LDM FKYBUFF+4 BYTE ORDINAL
  843. STD D.T4 USE AS INDEX
  844. LDD KEY GET THE KEY
  845. STM STRBUFF,D.T4
  846. CALL WRITECS WRITE BACK THE WORD OF STORAGE
  847. NJN KYO1 IF ECS PARITY ERROR
  848. *
  849. * INCREMENT THE BYTE INDEX AND ECS STORAGE ADDRESS
  850. *
  851. AOM FKYBUFF+4 BYTE INDEX
  852. SBN 5 CHECK FOR WRAP AROUND
  853. NJN KYO160 SKIP ECS STORAGE ADDRESS
  854. STM FKYBUFF+4 ZERO BYTE INDEX
  855. AOM FKYBUFF+1 LOWER ECS STORAGE ADDRESS
  856. SHN -12
  857. ADM FKYBUFF UPPER HALF
  858. STM FKYBUFF
  859. *
  860. * COUNT NUMBER OF KEYS COLLECTED
  861. *
  862. KYO160 AOM FKYBUFF+3 LOWER KEY COUNT
  863. SHN -12
  864. ADM FKYBUFF+2 UPPER HALF
  865. STM FKYBUFF+2
  866. *
  867. * /--- BLOCK KEYOUT 00 000 81/09/08 00.02
  868. *
  869. * IF LAST KEY, SET DONE BIT
  870. *
  871. LDM ECSBUFF+8 FIRST CHECK FOR STOP1
  872. LPC 3777B GET RID OF FASTKEY CONTROL BIT
  873. SBD KEY CHECK AGAINST KEY
  874. ZJN KYO180 IF STOP1
  875. *
  876. LDM FKYBUFF+6 CHECK SPECIAL KEY
  877. SBD KEY
  878. ZJN KYO180 IF SPECIAL KEY
  879. *
  880. LDM FKYBUFF+7 UPPER KEYS TO COLLECT
  881. SBM FKYBUFF+2 UPPER KEYS COLLECTED
  882. NJN KYO190 IF NOT LAST KEY
  883. LDM FKYBUFF+8 LOWER KEYS TO COLLECT
  884. SBM FKYBUFF+3 LOWER KEYS COLLECTED
  885. NJN KYO190 IF NOT LAST KEY
  886. *
  887. * SET DONE BIT IN CONTROL BUFFER
  888. *
  889. KYO180 LDM FKYBUFF+4 5TH BYTE
  890. ADC 4000B TURN ON BIT
  891. STM FKYBUFF+4
  892. *
  893. * WRITE FAST COLLECT CONTROL BUFFER BACK TO ECS
  894. *
  895. KYO190 LDC FKYBUFF D.T0 = PPU MEMORY ADDRESS
  896. STD D.T0
  897. LDM ECRA+1 LOWER PART OF ECS RA
  898. ADM FKBFADD+1 ADD LOWER PART OF ADDRESS
  899. STD D.T2 D.T2 = LOWER ECS ADDRESS
  900. SHN -12
  901. ADM ECRA ADD UPPER PART OF ECS RA
  902. ADM FKBFADD ADD UPPERPART OF ADDRESS
  903. STD D.T1 D.T1 = UPPER ECS ADDRESS
  904. LDN 5 LENGTH = 1 CM WORD
  905. STD D.T3 D.T3 = NUMBER PPU WORDS TO READ
  906. CALL WRITECS WRITE IT
  907. NJP KEYOUTX IF ECS PARITY ERROR
  908. *
  909. * IF LAST KEY, PROCESS IT IN REGULAR WAY
  910. *
  911. LDM FKYBUFF+4 5TH BYTE
  912. LPC 4000B MASK OFF DONE BIT
  913. ZJP KEYOUTX
  914. *
  915. * /--- BLOCK KEYOUT 00 000 84/11/15 10.50
  916. *
  917. * RECOMPUTE ADDRESSES FOR KEYBUFFER READECS
  918. *
  919. KYO200 LDC ECSBUFF
  920. STD D.T0 D.T0 = PPU MEMORY ADDRESS
  921. LDD STATION COMPUTE KEY BUFFER INDEX
  922. SHN KEYBSHF
  923. ADM ECRA+1 ADD LOWER PART OF ECS RA
  924. ADM KEYBADD+1 ADD LOWER PART OF KEY BUFF ADDR
  925. STD D.T2 D.T2 = LOWER ECS ADDRESS
  926. SHN -12
  927. ADM ECRA ADD UPPER PART OF ECS RA
  928. ADM KEYBADD ADD UPPER PART OF KEY BUFF ADDR
  929. STD D.T1 D.T1 = UPPER ECS ADDRESS
  930. LDN 10
  931. STD D.T3 D.T3 = NUMBER PPU WORDS TO READ
  932. *
  933. * CHECK IF ROOM FOR NEW KEY IN STATIONS KEY BUFFER
  934. *
  935. KYO210 LDM ECSBUFF+4 PPU INDEX IN KEY BUFFER
  936. SBM ECSBUFF+9 CPU INDEX IN KEY BUFFER
  937. ZJN KYO225 IF CPU INDEX = PPU INDEX
  938. PJN KYO220
  939. ADC 10000B TAKE 12 BIT ABSOLUTE VALUE
  940. *
  941. KYO220 LPN 3 MASK INDEX FOR MOD 4
  942. NJN KYO225 IF NO OVERFLOW
  943. LDM ECSBUFF+8 LOAD -STOP1- KEY VALUE
  944. LPC 3777B MASK OFF FASTKEY CONTROL BIT
  945. SBD KEY
  946. NJP KYO800 IGNORE KEY IF NOT -STOP1-
  947. LDM ECSBUFF+4
  948. UJN KYO227 OVERWRITE LAST KEY
  949. *
  950. * ADD NEW KEY TO STATION KEY BUFFER
  951. *
  952. KYO225 AOM ECSBUFF+4 INCREMENT PPU KEY BUFFER INDEX
  953. KYO227 LPN 3 MASK OFF INDEX (MOD 4)
  954. STD D.T4
  955. LDD KEY PLANT KEY CODE IN KEY BUFFER
  956. STM ECSBUFF,D.T4
  957. LDN 5 D.T3 = NUMBER WORDS TO WRITE
  958. STD D.T3
  959. CALL WRITECS D.T0 - D.T3 ARGUMENTS
  960. *
  961. * COMPUTE INDEX FOR THIS STATION IN ECS BIT TABLE
  962. *
  963. LDD STATION GET STATION NUMBER
  964. LPN 37B MOD 32
  965. ADN 4 ADD BIAS TO STARTING BIT
  966. STD D.T1
  967. LDN 3 INITIALIZE INDEX AT LOW BYTE
  968. STD D.T4
  969. *
  970. * /--- BLOCK KEYOUT 00 000 81/04/28 17.08
  971. *
  972. KYO300 LDD D.T1 LOAD BIT INDEX
  973. SBN 12 CHECK IF BIT IS IN THIS BYTE
  974. MJN KYO310
  975. STD D.T1 ADJUST BIT INDEX
  976. SOD D.T4 ADJUST BYTE INDEX
  977. UJP KYO300
  978. *
  979. KYO310 LDM KYO320 LOAD SHIFT INSTRUCTION
  980. SCN 77B
  981. ADD D.T1 ATTACH SHIFT COUNT
  982. STM KYO320
  983. LDN 1 SET UP BIT
  984. *
  985. KYO320 SHN 0 POSITION BIT WITHIN BYTE
  986. STM KYO362+1 STORE BIT MASK
  987. *
  988. * /--- BLOCK KEYOUT 00 000 85/06/13 13.17
  989. *
  990. * SET BIT IN ECS POLLING LIST FOR THIS STATION
  991. *
  992. KYO360 LDC ECSBUFF SET FOR ECS READ
  993. STD D.T0 D.T0 = PPU MEMORY ADDRESS
  994. LDD STATION ECS ADDRESS = STATION
  995. SHN -5 /32
  996. ADM ECRA+1 + ECS RA
  997. ADM ECSSWX+1 + RELATIVE ADDRESS
  998. STD D.T2 D.T2 = LOWER ECS ADDRESS
  999. SHN -12 ADJUST CARRY
  1000. ADM ECRA COMPUTE UPPER PART OF ADDRESS
  1001. ADM ECSSWX
  1002. STD D.T1 D.T1 = UPPER ECS ADDRESS
  1003. LDN 5
  1004. STD D.T3 D.T3 = NUM PPU WORDS TO READ
  1005. CALL READECS READ WORD FROM REQUEST LIST
  1006. NJP KEYOUTX IF ECS PARITY ERROR
  1007. *** CDC-ONLY TRAP FOR BAD INPUT LIST WORDS
  1008. CDCIF IFNE CDC,0
  1009. LDC 2037B RIGHT VALUE
  1010. LMM ECSBUFF CHECK EXPONENT
  1011. ZJN TRAP1 IF OK
  1012. .NOS2 IFLT OSLEV,578D
  1013. MONITOR MXFM SAY CHEESE
  1014. .NOS2 ELSE
  1015. .NOS241 IFLT OSLEV,630D
  1016. MONITOR HNGM SAY CHEESE
  1017. .NOS241 ELSE
  1018. LDC *
  1019. STD CM+1 SAVE CALL ADDRESS
  1020. LDK PPET
  1021. STD CM+2 *PP ABORT* ERROR FLAG
  1022. MONITOR CHGM SAY CHEESE, CONDITIONALLY
  1023. .NOS241 ENDIF
  1024. .NOS2 ENDIF
  1025. TRAP1 BSS 0
  1026. CDCIF ENDIF
  1027. *** END TRAP.
  1028. *
  1029. LDM ECSBUFF,D.T4 GET PROPER WORD
  1030. KYO362 LPC 0 MASK OFF PROPER BIT
  1031. NJP KYO2 IF BIT ALREADY ON
  1032. LDM ECSBUFF,D.T4
  1033. LMM KYO362+1 SET BIT FOR THIS STATION
  1034. STM ECSBUFF,D.T4
  1035. LDN 1 SET LOWEST BIT FOR RE-READ
  1036. STM ECSBUFF+4
  1037. *** CDC-ONLY TRAP FOR BAD INPUT LIST WORDS
  1038. CDCIF IFNE CDC,0
  1039. LDC 2037B RIGHT VALUE
  1040. LMM ECSBUFF CHECK EXPONENT
  1041. ZJN TRAP2 IF OK
  1042. .NOS2 IFLT OSLEV,578D
  1043. MONITOR MXFM SAY CHEESE
  1044. .NOS2 ELSE
  1045. .NOS241 IFLT OSLEV,630D
  1046. MONITOR HNGM SAY CHEESE
  1047. .NOS241 ELSE
  1048. LDC *
  1049. STD CM+1 SAVE CALL ADDRESS
  1050. LDK PPET
  1051. STD CM+2 *PP ABORT* ERROR FLAG
  1052. MONITOR CHGM SAY CHEESE, CONDITIONALLY
  1053. .NOS241 ENDIF
  1054. .NOS2 ENDIF
  1055. TRAP2 BSS 0
  1056. CDCIF ENDIF
  1057. *** END TRAP.
  1058. CALL WRITECS WRITE WORD BACK TO ECS
  1059. NJN KYO2
  1060. CALL READECS READ REQUEST LIST WORD AGAIN
  1061. LDM ECSBUFF+4
  1062. SBN 1 CHECK FOR POSSIBLE CPU CONFLICT
  1063. NJP KYO360
  1064. KYO2 LJM KEYOUTX
  1065. *
  1066. * /--- BLOCK KEYOUT 00 000 84/11/15 10.51
  1067. *
  1068. * ADD THIS STATION TO LIST OF STATIONS FLOODING
  1069. * SYSTEM WITH KEYS AND OUTPUT B-DISPLAY MESSAGE
  1070. *
  1071. *
  1072. *
  1073. * CHECK THE LIST PASSED FROM SCIM TO SEE
  1074. * IF THIS STATION IS ONE THAT SHOULD
  1075. * NOT BE TURNED OFF
  1076. *
  1077. KYO800 LDM SCIMBUF+XBADLTH LOAD LENGTH OF LIST
  1078. ZJN KYO803 IF LIST FROM SCIM EMPTY
  1079. STD D.T0
  1080. SBN XBADLTH+1 CHECK FOR BAD LENGTH VALUE
  1081. PJN KYO803 IF BAD LENGTH
  1082. *
  1083. KYO802 SOD D.T0 DECREMENT COUNTER
  1084. MJN KYO803 IF STATION NOT ON LIST
  1085. LDD STATION LOAD CURRENT STATION NUMBER
  1086. SBM SCIMBUF,D.T0 SUBTRACT VAL FOUND IN TABLE
  1087. NJP KYO802 IF NO MATCH CHECK NEXT ENTRY
  1088. AOM KYIGNT COUNT KEYS IGNORED IN TEST MODE
  1089. UJP KYO805 AVOID TURNING STATION OFF
  1090. *
  1091. *
  1092. * INSERT STATION INTO TEST LIST OR INCREMENT
  1093. * COUNT FOR A STATION ALREADY LISTED
  1094. *
  1095. *
  1096. KYO803 LDM ITEST LOAD NUMBER OF STATIONS IN LIST
  1097. STD D.T0
  1098. KYO8031 SOD D.T0 DECREMENT COUNTER
  1099. MJN KYO8032 NOT FOUND, TRY TO ADD TO LIST
  1100. LDD STATION
  1101. SBM TESTLST,D.T0 CHECK NEXT ENTRY IN THE LIST
  1102. NJP KYO8031 IF NO MATCH TRY NEXT ENTRY
  1103. UJN KYO8033 FOUND, GO PROCESS COUNT
  1104. *
  1105. KYO8032 LDM ITEST LOAD COUNT OF ENTRIES IN LIST
  1106. STD D.T0
  1107. SBN BADLTH*2 CHECK IF ROOM IN TEST LIST
  1108. PJP KYO805 GIVE UP IF NO ROOM
  1109. *
  1110. LDD STATION
  1111. STM TESTLST,D.T0 ADD STATION TO LIST
  1112. * STM KYIGNT+1 DEBUG ONLY...LAST STATION ADDED
  1113. LDN 1
  1114. STM CNTLST,D.T0 SET COUNT TO 1 FOR STATION
  1115. AOM ITEST INCREMENT COUNT OF ENTRIES
  1116. * STM KYIGNT+2 DEBUG ONLY...ENTRIES IN LIST
  1117. UJN KYO805
  1118. *
  1119. KYO8033 AOM CNTLST,D.T0 INCREMENT COUNT FOR STATION
  1120. SBN OFLIMIT CHECK IF NEEDS TO BE BLOCKED
  1121. MJN KYO805 DONT BLOCK STATION INPUT
  1122. *
  1123. *
  1124. * /--- BLOCK KEYOUT 00 000 79/01/04 21.48
  1125. *
  1126. *
  1127. *
  1128. * ADD STATION TO BAD LIST IF LIST NOT FULL
  1129. *
  1130. KYO804 LDM IBAD LENGTH OF BAD STATION LIST
  1131. STD D.T0
  1132. SBN BADLTH
  1133. PJN KYO805 IF LIST FULL
  1134. AOM IBAD INCREMENT LENGTH OF LIST
  1135. LDD STATION
  1136. STM BADLIST,D.T0
  1137. *
  1138. *
  1139. *
  1140. *
  1141. * INCREMENT COUNT AND OUTPUT MESSAGE
  1142. *
  1143. *
  1144. KYO805 AOM KYIGN INCREMENT IGNORED COUNTER
  1145. SOM KOMCNT CHECK IF SHOULD OUTPUT MESSAGE
  1146. PJN KYO3
  1147. LDC 300 RE-SET COUNTER
  1148. STM KOMCNT
  1149. LDD STATION
  1150. STD D.T0 CONVERT STATION NUMBER TO ALPHA
  1151. CALL OTOA
  1152. LDD D.T1 LOAD FIRST TWO ALPHA CHARACTERS
  1153. STM KOMSG1+13
  1154. LDD D.T2 LOAD SECOND TWO CHARACTERS
  1155. STM KOMSG1+14
  1156. CALL MESSAG,KOMSG1 OUTPUT B-DISPLAY MESSAGE
  1157. KYO3 LJM KEYOUTX
  1158. *
  1159. *
  1160. * OUTPUT B-DISPLAY MESSAGE FOR ILLEGAL STATION
  1161. *
  1162. KYO820 CALL MESSAG,KOMSG2
  1163. AOM KYSTATN
  1164. UJN KYO3
  1165. *
  1166. * RE-SET BUFFER POINTERS IF EMPTY
  1167. *
  1168. KYO900 LDN 0 RE-SET BUFFER POINTERS
  1169. STD KEYII
  1170. STD KEYOI
  1171. UJN KYO3
  1172. *
  1173. *
  1174. KOMCNT DATA 0
  1175. *
  1176. KOMSG1 DIS ,*PIO KEY IGNORED STATION XXXXB*
  1177. KOMSG2 DIS ,*PIO STATION TOO BIG*
  1178. *
  1179. *
  1180. * /--- BLOCK PAUSE 00 000 89/06/01 11.28
  1181. TITLE -PAUSE- CHECK FOR STORAGE MOVE OR ERROR
  1182. PAUSE SPACE 5,11
  1183. ** PAUSE - PAUSE FOR STORAGE RELOCATION
  1184. *
  1185. * CHECK CPU ACTIVITY AND PAUSE / DROP AS NECESSARY
  1186. *
  1187. * IF NO CPU ACTIVITY BUT *DIS* ACTIVE,
  1188. * CONTINUE PROCESSING
  1189. * IF NO CPU ACTIVITY BUT *ESM* ACTIVE,
  1190. * WAIT FOR *ESM* TO DROP.
  1191.  
  1192.  
  1193. PAUSE SUBR
  1194. LDD CP
  1195. ADN STSW
  1196. CRD CM
  1197. LDD CM+1 CHECK ERROR FLAG
  1198. ZJN PSE1 IF NO ERROR
  1199. LJM PSE8
  1200.  
  1201. PSE1 LDD CM CHECK CPU ACTIVITY
  1202. SHN -11B
  1203. NJN PSE3 IF ACTIVITY
  1204.  
  1205. * CHECK FOR DIS / ESM ACTIVE
  1206.  
  1207. LDN PPUL
  1208. CRD CM
  1209. LDD CM+2 SAVE NUMBER OF PPS ON SYSTEM
  1210. SBN 11D
  1211. PJN PSE1.1 IF MORE THAN 10 PPS
  1212. LDN 10D SET 10 PPS
  1213. UJN PSE1.2
  1214.  
  1215. PSE1.1 LDN 20D
  1216. PSE1.2 STD T1
  1217. LDN PPCP GET ADDRESS OF PP COMMUNICATION
  1218. CRD CM
  1219. LDD CM+4
  1220. STD T2
  1221. PSE2 CRD CM READ NEXT INPUT REGISTER
  1222. LDD CM
  1223. LMC 2RDI
  1224. NJN PSE5 IF NOT *DIS*
  1225. LDD CP
  1226. SHN -7
  1227. LMC 1RS*100B
  1228. LMD CM+1
  1229. SCN 40B
  1230. NJN PSE5 IF NOT *DIS* AT THIS CP
  1231.  
  1232. * CHECK FOR STORAGE MOVE
  1233.  
  1234. PSE3 LDN CMCL
  1235. CRD CM
  1236. LDD CP
  1237. .NOS27 IFGE OSLEV,716D NOS 2.7.1
  1238. SHN -7
  1239. .NOS27 ENDIF
  1240. LMD CM
  1241. NJN PSE4 IF NOT THIS CP
  1242. RJM PSM PAUSE FOR STORAGE MOVE
  1243. PSE4 LJM PAUSEX
  1244.  
  1245. PSE5 LDD CM+1
  1246. SCN 77B
  1247. SHN 14B
  1248. LMD CM
  1249. LMC 3RMES CHECK FOR *ESM*
  1250. NJN PSE6 IF NOT *ESM*
  1251. RJM PSM PAUSE FOR STORAGE MOVE
  1252. LJM PAUSE+1 RE-ENTER LOOP
  1253.  
  1254. PSE6 SOD T1
  1255. * /--- BLOCK PAUSE 00 000 81/04/28 14.26
  1256. NJN PSE7 IF MORE PPS TO CHECK
  1257. LJM PSE9 NO ACTIVITY AT THE CP
  1258.  
  1259. PSE7 LDN 10B BUMP TO NEXT INPUT REGISTER
  1260. RAD T2
  1261. LJM PSE2 LOOP
  1262.  
  1263. * PROCESS ERROR FLAG
  1264.  
  1265. PSE8 LDD CM+1
  1266. SBN FSET CHECK FOR *MRQ* DROP
  1267. ZJN PSE10
  1268. SBN OKET-FSET
  1269. ZJN PSE10
  1270. PSE9 CALL ALLOUT,OFFMSG OUTPUT -PLATO OFF-
  1271. PSE10 LJM DROP
  1272. PSM SPACE 5,11
  1273. ** PSM - PAUSE FOR STORAGE MOVE
  1274. *
  1275. * ISSUE MONITOR FUNCTION TO PAUSE
  1276. * UPDATE PP ADDRESSES TO REFLECT NEW RA
  1277.  
  1278. PSM SUBR
  1279. PAUSE ST
  1280. LDM PSTATX UPDATE CM ADDRESSES
  1281. SHN 6
  1282. ADD RA
  1283. SHN 6
  1284. ADM PSTATX+1
  1285. PLANT CM,PSTATS
  1286. LJM PSMX
  1287. * /--- BLOCK READECS 00 000 84/11/16 10.53
  1288. TITLE -READECS- ECS TO PPU TRANSFER VIA DDP
  1289. *
  1290. *
  1291. *
  1292. * -READECS-
  1293. * ON ENTRY - D.T0 = PPU MEMORY ADDRESS
  1294. * D.T1 = UPPER PORTION OF ECS ADDRESS
  1295. * D.T2 = LOWER PORTION OF ECS ADDRESS
  1296. * D.T3 = NUMBER OF PPU WORDS TO READ
  1297. *
  1298. * ON RETURN - A = 0 = READ COMPLETED
  1299. * 1 = ECS PARITY ERROR
  1300. *
  1301. *
  1302. READECS SUBR
  1303. LDD A170
  1304. NJP RCS50 IF 180 CLASS MAINFRAME
  1305. IJM RCS10,C=DDP
  1306. DCN C=DDP,40B
  1307. *
  1308. RCS10 FNC 5001B,C=DDP 5001B = READ ECS
  1309. WAIT INACTIVE,C=DDP,RCSE1
  1310. ACN C=DDP,40B
  1311. FJM RCSE2,C=DDP
  1312. LDN 2
  1313. OAM D.T1,C=DDP OUTPUT 2 WORD ECS ADDRESS
  1314. LDD D.T0
  1315. STM RCS15+1 PLANT PPU MEMORY ADDRESS
  1316. WAIT FULL,C=DDP,RCSE3
  1317. *
  1318. LDM D.T3 NUMBER OF WORDS TO READ
  1319. RCS15 IAM **,C=DDP READ ECS TO PPU MEMORY
  1320. NJP RCSE4 EXIT IF ERROR
  1321. *
  1322. RCS20 IJM RCSE5,C=DDP WAIT CHANNEL ACTIVE + FULL
  1323. EJM RCS20,C=DDP
  1324. RCS30 DCN C=DDP,40B DISCONNECT CHANNEL
  1325. LDN 0 MARK NO ERROR OCCURRED
  1326. LJM READECSX
  1327. *
  1328. RCSE1 LDN 0 SET ERROR CODE
  1329. UJN RCSERR
  1330. RCSE2 LDN 1
  1331. UJN RCSERR
  1332. RCSE3 LDN 2
  1333. UJN RCSERR
  1334. RCSE4 LDN 3
  1335. UJN RCSERR
  1336. RCSE5 LDN 4
  1337.  
  1338. RCSERR ADC 2RR1 SET CHARACTER STRING FOR ERROR
  1339. STM DDPMSG+14
  1340. LDM RCS30 GET CHANNEL FOR ERROR MESSAGE
  1341. LPN 37B
  1342. STD D.T0
  1343. CALL OTOA
  1344. LDD D.T2
  1345. STM DDPMSG+11
  1346. CALL DFM,DDPMSG ISSUE ERROR MESSAGE TO DAYFILES
  1347. *
  1348. CALL DDPMCP MASTER CLEAR DDP PORT
  1349. LDN 1 A = 1 = ERROR OCCURRED
  1350. LJM READECSX
  1351. *
  1352. *
  1353. * /--- BLOCK READUEM 00 000 85/04/18 16.43
  1354. *
  1355. * READ UEM DIRECTLY ON 800-SERIES MACHINES
  1356. *
  1357. RCS50 SRD D.RSAV SAVE CURRENT (R)
  1358.  
  1359. * CONVERT COUNT FROM PPU WORDS TO CPU WORDS
  1360.  
  1361. LDD T0
  1362. STM T0SAV
  1363. LDD T2
  1364. STM T2SAV
  1365. LDD D.T3 (A) = NUMBER OF PPU WORDS
  1366. STM D.T3S
  1367. RJM DV5 CONVERT TO CPU WORDS
  1368. STD D.T3 (D.T3) = NUMBER OF CPU WORDS
  1369.  
  1370. * PLANT PP ADDRESS THE CM WORDS ARE TO BE READ INTO
  1371.  
  1372. LDD D.T0 (A) = PP MEMORY ADDRESS TO USE
  1373. STM RCS60 STORE PP ADDRESS
  1374.  
  1375. * FORM PART OF EM ADDRESS IN (R)
  1376.  
  1377. LDD D.T1 (A) = UPPER PART OF EM ADDRESS
  1378. SHN -6 (A) = BITS 23 - 18 OF EM ADDR
  1379. STD T1
  1380. LDD D.T1
  1381. SHN 6 (A) = BITS 17 - 12 OF EM ADDR
  1382. STD T2
  1383. LRD T1 (R) = BITS 23 - 12 OF EM ADDR
  1384.  
  1385. * FORM THE REST OF THE EM ADDRESS IN (A)
  1386.  
  1387. LDD D.T2 (A) = LOWER PART OF EM ADDRESS
  1388. LMC R.USE SET BIT TO USE (R) IN ADDR CALC
  1389.  
  1390. * READ EM
  1391.  
  1392. CRM **,D.T3
  1393. RCS60 EQU *-1 (PP MEMORY ADDRESS)
  1394.  
  1395. * DONE.
  1396.  
  1397. LRD D.RSAV RESTORE OLD (R)
  1398. LDM T0SAV
  1399. STD T0
  1400. LDM T2SAV
  1401. STD T2
  1402. LDM D.T3S
  1403. STD D.T3
  1404. LDN 0 MARK NO ERROR OCCURRED
  1405.  
  1406. * RETURN
  1407.  
  1408. LJM READECSX
  1409.  
  1410.  
  1411.  
  1412. *CALL COMPDV5
  1413.  
  1414. * /--- BLOCK WRITECS 00 000 84/11/16 11.01
  1415. TITLE -WRITECS- PPU TO ECS TRANSFER VIA DDP
  1416. *
  1417. *
  1418. *
  1419. * -WRITECS-
  1420. * ON ENTRY - D.T0 = PPU MEMORY ADDRESS
  1421. * D.T1 = UPPER PORTION OF ECS ADDRESS
  1422. * D.T2 = LOWER PORTION OF ECS ADDRESS
  1423. * D.T3 = NUMBER OF PPU WORDS TO WRITE
  1424. *
  1425. * ON RETURN - A = 0 = WRITE COMPLETED
  1426. * 1 = ECS ABORT
  1427. *
  1428. *
  1429. WRITECS SUBR
  1430. LDD A170
  1431. NJP WCS60 IF 180 CLASS MAINFRAME
  1432. IJM WCS10,C=DDP
  1433. DCN C=DDP,40B
  1434. *
  1435. WCS10 FNC 5002B,C=DDP 5002B = WRITE ECS
  1436. WAIT INACTIVE,C=DDP,WCSE1
  1437. ACN C=DDP,40B
  1438. LDN 2
  1439. OAM D.T1,C=DDP OUTPUT 2 WORD ECS ADDRESS
  1440. LDD D.T0
  1441. STM WCS15+1 PLANT PPU MEMORY ADDRESS
  1442. *
  1443. LDM D.T3 NUMBER OF WORDS TO WRITE
  1444. WCS15 OAM **,C=DDP WRITE PPU MEMORY TO ECS
  1445. NJP WCSE2 EXIT IF ERROR
  1446. DCN C=DDP,40B
  1447. *
  1448. WCS30 FNC 5004B,C=DDP 5004B = SELECT STATUS
  1449. WAIT INACTIVE,C=DDP,WCSE3
  1450. ACN C=DDP,40B RE-ACTIVATE DDP CHANNEL
  1451. WAIT FULL,C=DDP,WCSE4
  1452. IAN C=DDP,40B INPUT STATUS WORD
  1453. DCN C=DDP,40B
  1454. LPN 11B MASK WRITE/ABORT BITS
  1455. NJN WCS50 IF ERROR OR INCOMPLETE
  1456. IJM WCS41,C=DDP
  1457. WCS40 DCN C=DDP,40B
  1458. WCS41 LJM WRITECSX
  1459. *
  1460. WCS50 LPN 10B
  1461. ZJN WCSE5 IF ECS ABORT
  1462. LJM WCS30 WRITE NOT COMPLETE
  1463.  
  1464. WCSE1 LDN 0 SET ERROR CODE
  1465. UJN WCSERR
  1466. WCSE2 LDN 1
  1467. UJN WCSERR
  1468. WCSE3 LDN 2
  1469. UJN WCSERR
  1470. WCSE4 LDN 3
  1471. UJN WCSERR
  1472. WCSE5 LDN 4
  1473.  
  1474. WCSERR ADC 2RW1 SET CHARACTER STRING FOR ERROR
  1475. STM DDPMSG+14
  1476. LDM WCS40 GET CHANNEL FOR ERROR MESSAGE
  1477. LPN 37B
  1478. STD D.T0
  1479. CALL OTOA
  1480. LDD D.T2
  1481. STM DDPMSG+11
  1482. CALL DFM,DDPMSG ISSUE ERROR MESSAGE TO DAYFILES
  1483. *
  1484. CALL DDPMCP MASTER CLEAR DDP PORT
  1485. LDN 1 MARK ERROR OCCURRED
  1486. LJM WRITECSX
  1487. *
  1488. DDPMSG DIS ,*PIO DDP CHAN ERR C=XX E=XX*
  1489. *
  1490. * /--- BLOCK WRITUEM 00 000 85/04/18 16.43
  1491. *
  1492. * WRITE UEM DIRECTLY ON 800-SERIES MACHINES
  1493. *
  1494. WCS60 SRD D.RSAV SAVE CURRENT (R)
  1495.  
  1496. * CONVERT COUNT FROM PPU WORDS TO CPU WORDS
  1497.  
  1498. LDD T0
  1499. STM T0SAV
  1500. LDD T2
  1501. STM T2SAV
  1502. LDD D.T3 (A) = NUMBER OF PPU WORDS
  1503. STM D.T3S
  1504. RJM DV5 CONVERT TO CPU WORDS
  1505. STD D.T3 (D.T3) = NUMBER OF CPU WORDS
  1506.  
  1507. * PLANT PP ADDRESS THE CM WORDS ARE TO BE
  1508. * WRITTEN FROM
  1509.  
  1510. LDD D.T0 (A) = PP MEMORY ADDRESS TO USE
  1511. STM WCS20 PLANT PP MEMORY ADDRESS
  1512.  
  1513. * FORM PART OF EM ADDRESS IN (R)
  1514.  
  1515. LDD D.T1 (A) = UPPER PART OF EM ADDRESS
  1516. SHN -6 (A) = BITS 23 - 18 OF EM ADDR
  1517. STD T1
  1518. LDD D.T1
  1519. SHN 6 (A) = BITS 17 - 12 OF EM ADDR
  1520. STD T2
  1521. LRD T1 (R) = BITS 23 - 12 OF EM ADDR
  1522.  
  1523. * FORM THE REST OF THE EM ADDRESS IN (A)
  1524.  
  1525. LDD D.T2 (A) = LOWER PART OF EM ADDRESS
  1526. LMC R.USE SET BIT TO USE (R) IN ADDR CALC
  1527.  
  1528. * WRITE EM
  1529.  
  1530. CWM **,D.T3
  1531. WCS20 EQU *-1 LOCATION TO PLANT PP ADDR INTO
  1532.  
  1533. * DONE.
  1534.  
  1535. LRD D.RSAV RESTORE OLD (R)
  1536. LDM T0SAV
  1537. STD T0
  1538. LDM T2SAV
  1539. STD T2
  1540. LDM D.T3S
  1541. STD D.T3
  1542. LDN 0 MARK NO ERROR OCCURRED
  1543.  
  1544. * RETURN
  1545.  
  1546. LJM WRITECSX
  1547.  
  1548.  
  1549. T0SAV BSSZ 1
  1550. T2SAV BSSZ 1
  1551. D.T3S BSSZ 1
  1552.  
  1553. TITLE -DDPMCP- MASTER CLEAR DDP PORT
  1554. *
  1555. *
  1556. *
  1557. * -DDPMCP- MASTER CLEAR DDP PORT
  1558. *
  1559. DDPMCP SUBR
  1560. IJM DMC20,C=DDP
  1561. DCN C=DDP,40B INSURE CHANNEL INACTIVE
  1562. *
  1563. DMC20 FNC 5010B,C=DDP 5010B = MASTER CLEAR PORT
  1564. WAIT EMPTY,C=DDP,DMC22
  1565. DMC22 WAIT INACTIVE,C=DDP,DMC30
  1566. *
  1567. DMC30 IJM DMC40,C=DDP CHECK IF CHANNEL INACTIVE
  1568. DCN C=DDP,40B DISCONNECT DDP CHANNEL
  1569. DMC40 PSN
  1570. * UJN *+3 IF ECS MODE
  1571. FNC 5404B,C=DDP SELECT ESM MODE
  1572. LJM DDPMCPX
  1573. * /--- BLOCK WRITUEM 00 000 84/11/16 11.05
  1574. *
  1575. *
  1576. * /--- BLOCK STATS 00 000 78/12/20 02.01
  1577. TITLE -STATS- OUTPUT STATISTICS
  1578. *
  1579. *
  1580. *
  1581. * -STATS-
  1582. * OUTPUTS PIO STATISTICS TO ECS BUFFER
  1583. *
  1584. *
  1585. STATS SUBR
  1586. SOM STATCNT CHECK TIME FOR STATISTICS
  1587. PJN STATSX
  1588. LDC 500
  1589. STM STATCNT RESET COUNTER
  1590. LDC STATLTH*5 NUMBER OF PPU WORDS TO WRITE
  1591. STD D.T3 D.T3 = NUMBER PPU WRDS TO WRITE
  1592. LDC STATBUF
  1593. STD D.T0 D.T0 = PPU MEMORY ADDRESS
  1594. LDM ECRA+1 LOAD LOWER PART OF ECS RA
  1595. ADM ECSTX+1 ADD LOWER PART OF ECS REL ADDR
  1596. STD D.T2 D.T2 = LOWER ECS ADDRESS
  1597. SHN -12
  1598. ADM ECRA ADD UPPER PART OF ECS RA
  1599. ADM ECSTX ADD UPPER PART OF ECS REL ADDR
  1600. STD D.T1 D.T1 = UPPER ECS ADDRESS
  1601. CALL WRITECS WRITE STATS TO ECS
  1602. UJN STATSX
  1603. *
  1604. *
  1605. * /--- BLOCK OUTNET 00 000 81/04/21 20.49
  1606. TITLE -OUTNET- OUTPUT TERMINAL WORD
  1607. *
  1608. *
  1609. *
  1610. * -OUTNET-
  1611. * OUTPUTS A SINGLE TERMINAL WORD FROM THE TOP THREE
  1612. * BYTES OF *CMBUFF*
  1613. *
  1614. * ON EXIT - A = 0 = DATA SENT SUCCESSFULLY
  1615. * -1 = DATA COULD NOT BE SENT
  1616. *
  1617. *
  1618. OUTNET SUBR
  1619. IJM OUTN10,O=NIU
  1620. DCN O=NIU DEACTIVATE CIU OUTPUT CHANNEL
  1621. *
  1622. OUTN10 FNC 0,O=NIU SELECT OUTPUT CONTROLLER
  1623. WAIT INACTIVE,O=NIU,OUTN90
  1624. ACN O=NIU ACTIVATE CIU OUTPUT CHANNEL
  1625. LDN 3 TERMINAL WORD = 3 PPU WORDS
  1626. OAM CMBUFF,O=NIU OUTPUT TERMINAL WORD
  1627. WAIT EMPTY,O=NIU,OUTN90
  1628. DCN O=NIU DEACTIVATE CIU CHANNEL
  1629. LDN 0
  1630. OUTN20 LJM OUTNETX
  1631. *
  1632. *
  1633. OUTN90 IJM OUTN91,O=NIU
  1634. DCN O=NIU DEACTIVATE CIU CHANNEL
  1635. *
  1636. OUTN91 LCN 1
  1637. UJN OUTN20
  1638. *
  1639. *
  1640. * /--- BLOCK MESSAG 00 000 78/02/06 11.06
  1641. TITLE -MESSAG- OUTPUT B-DISPLAY MESSAGE
  1642. *
  1643. *
  1644. *
  1645. * -MESSAG-
  1646. * OUTPUTS B-DISPLAY MESSAGE
  1647. *
  1648. * ON ENTRY - A = ADDRESS OF MESSAGE
  1649. *
  1650. *
  1651. MESSAG SUBR
  1652. STM MSG10+1 PLANT PPU ADDRESS OF MESSAGE
  1653. LDN 5
  1654. STD T1 SET LENGTH OF MESSAGE
  1655. LDD CP LOAD CONTROL POINT AREA ADDRESS
  1656. ADN MS1W ADD BIAS TO MESSAGE AREA
  1657. *
  1658. MSG10 CWM **,T1 WRITE MESSAGE TO CP AREA
  1659. UJN MESSAGX
  1660. *
  1661. *
  1662. * /--- BLOCK OTOA 00 000 75/05/21 23.50
  1663. TITLE -OTOA- CONVERT OCTAL TO ALPHA
  1664. *
  1665. *
  1666. *
  1667. * -OTOA-
  1668. * CONVERT 4 DIGIT OCTAL NUMBER TO DISPLAY CODE
  1669. *
  1670. * ON ENTRY - D.T0 = OCTAL NUMBER TO CONVERT
  1671. *
  1672. * ON RETURN - D.T1 = FIRST TWO ALPHA CHARACTERS
  1673. * D.T2 = SECOND TWO CHARACTERS
  1674. *
  1675. *
  1676. OTOA SUBR
  1677. LDD D.T0 LOAD OCTAL TO CONVERT
  1678. SHN -9 POSITION UPPER OCTAL DIGIT
  1679. ADN 33B CONVERT TO ALPHA
  1680. SHN 6
  1681. STD D.T1
  1682. LDD D.T0 LOAD OCTAL TO CONVERT
  1683. SHN -6 POSITION SECOND OCTAL DIGIT
  1684. LPN 7
  1685. ADN 33B CONVERT TO ALPHA
  1686. RAM D.T1
  1687. LDD D.T0 LOAD OCTAL TO CONVERT
  1688. SHN -3 POSITION THIRD OCTAL DIGIT
  1689. LPN 7
  1690. ADN 33B CONVERT TO ALPHA
  1691. SHN 6
  1692. STD D.T2
  1693. LDD D.T0 LOAD OCTAL TO CONVERT
  1694. LPN 7 MASK OFF FOURTH DIGIT
  1695. ADN 33B
  1696. RAM D.T2
  1697. UJN OTOAX
  1698. *
  1699. *
  1700. * /--- BLOCK CEQUIP 00 000 81/04/30 15.09
  1701. TITLE -CEQUIP- CLEAR EQUIPMENT
  1702. *
  1703. *
  1704. *
  1705. * -CEQUIP-
  1706. * CLEARS EQUIPMENT SELECTIONS - DE-SELECTS CIU
  1707. * INPUT AND OUTPUT AND MASTER CLEARS DDP PORT
  1708. *
  1709. *
  1710. CEQUIP SUBR
  1711. LDM DDP CHECK IF DDP ASSIGNED
  1712. ZJN CEQ200
  1713. IJM CEQ110,C=DDP
  1714. DCN C=DDP,40B DE-ACTIVATE DDP CHANNEL
  1715. *
  1716. CEQ110 FNC 5010B,C=DDP MASTER CLEAR DDP
  1717. IJM CEQ200,C=DDP
  1718. DELAY 30
  1719. IJM CEQ200,C=DDP
  1720. DCN C=DDP,40B DE-ACTIVATE DDP CHANNEL
  1721. *
  1722. CEQ200 LDM CIUEQ CHECK IF CIU AVAILABLE
  1723. ZJN CEQUIPX
  1724. IJM CEQ210,I=NIU
  1725. DCN I=NIU DE-ACTIVATE CIU INPUT CHANNEL
  1726. *
  1727. CEQ210 FNC 0B,I=NIU DE-SELECT CIU INPUT
  1728. IJM CEQ300,I=NIU
  1729. DELAY 30
  1730. IJM CEQ300,I=NIU
  1731. DCN I=NIU DE-ACTIVATE CIU INPUT CHANNEL
  1732. *
  1733. CEQ300 IJM CEQ310,O=NIU
  1734. DCN O=NIU DE-ACTIVATE CIU OUTPUT CHANNEL
  1735. *
  1736. CEQ310 FNC 7000B,O=NIU DE-SELECT CIU OUTPUT
  1737. IJM CEQ400,O=NIU
  1738. DELAY 30
  1739. IJM CEQ400,O=NIU
  1740. DCN O=NIU DE-ACTIVATE CIU OUTPUT CHANNEL
  1741. CEQ400 LJM CEQUIPX
  1742. *
  1743. * /--- BLOCK ALLOUT 00 000 81/04/30 15.09
  1744. TITLE -ALLOUT- SEND MESSAGE TO ALL TERMINALS
  1745. *
  1746. *
  1747. *
  1748. * -ALLOUT-
  1749. * SEND A MESSAGE TO ALL TERMINALS
  1750. *
  1751. * ON ENTRY - A = ADDRESS OF MESSAGE
  1752. *
  1753. *
  1754. ALLOUT SUBR
  1755. STD BASE ADDRESS OF MESSAGE
  1756. STD ADDRESS
  1757. LDM CIUEQ CHECK CIU AVAILABLE FLAG
  1758. ZJN ALLOUTX
  1759. *
  1760. * FIND THE LENGTH OF THE MESSAGE
  1761. *
  1762. LDN 0 INITIALIZE
  1763. STD LENGTH
  1764. STD ILOOP
  1765.  
  1766. ALLL LDI ADDRESS GET THE NEXT 12 BIT PARCEL
  1767. ZJP ALLA ZERO WORD MARKS END.
  1768. AOD LENGTH
  1769. AOD ADDRESS
  1770. UJP ALLL
  1771. *
  1772. * BEGIN OUTER LOOP OVER THE MESSAGE LENGTH
  1773. *
  1774. ALLA LDD ILOOP
  1775. SBD LENGTH ILOOP-LENGTH
  1776. SBN NCLASSES MINUS 2**NN
  1777. PJN ALLOUTX IF ILOOP GT MESSAGE LTH, DONE
  1778. *
  1779. * BEGIN INNER LOOP OVER STATIONS
  1780. *
  1781. LDC 1008 NUMBER OF REAL STATIONS
  1782. STD STATION HIGHEST STATION NUM IS ONE LESS
  1783. *
  1784. ALLB SOD STATION INNER LOOP
  1785. ZJP ALLC END TEST
  1786. SCN NN CLEAR NN BITS
  1787. LMC -0 COMPLEMENT
  1788. ADD STATION CLASS=MOD(STATN,2**NN)
  1789. SHN 1 2*CLASS
  1790. LMC -0 -2*CLASS
  1791. ADD ILOOP ILOOP-2*CLASS
  1792. STD ADDRESS RELATIVE ADDRESS, THIS CLASS
  1793. MJN ALLB IF ADDRESS LT 0, LOOP
  1794. *
  1795. SBD LENGTH
  1796. PJN ALLB IF ADDRESS GE LENGTH, LOOP
  1797. * /--- BLOCK ALLOUT 00 000 81/04/21 20.51
  1798. *
  1799. LDD BASE START OF MESSAGE
  1800. RAD ADDRESS CORRECT ADDRESS BY BASE
  1801. LDI ADDRESS
  1802. STM CMBUFF FIRST PART
  1803. AOD ADDRESS
  1804. LDI ADDRESS
  1805. STM CMBUFF+1 SECOND PART
  1806. LDD STATION
  1807. STM CMBUFF+2 STATION NUMBER
  1808. CALL MSGOUT
  1809. PJP ALLB IF NO ERROR, LOOP
  1810. UJP ALLD ERROR--COULD NOT GET IT OUT
  1811. *
  1812. * END OF LOOP--PUT OUT END OF FRAME
  1813. *
  1814. ALLC LDN 2
  1815. RAD ILOOP ILOOP=ILOOP+2 (PPU WD COUNTER)
  1816. LDC 4000B SET START DATA BIT
  1817. STM CMBUFF
  1818. LDN 0
  1819. STM CMBUFF+1
  1820. LDC 2000B END OF FRAME BIT
  1821. STM CMBUFF+2 SEND TO STATION 0
  1822. CALL MSGOUT
  1823. PJP ALLA IF NO ERROR, NEXT OUTER LOOP
  1824. *
  1825. * THE CIU DOES NOT REPLY--PUT OUT MESSAGE AND RETURN
  1826. *
  1827. ALLD CALL DFM,NIUDN *(PIO) NO REPLY FROM CIU*
  1828. LJM ALLOUTX
  1829. *
  1830. NIUDN DIS ,*(PIO) NO REPLY FROM CIU*
  1831. *
  1832. * /--- BLOCK MSGOUT 00 000 81/04/21 20.52
  1833. EJECT
  1834. *
  1835. *
  1836. *
  1837. * -MSGOUT-
  1838. * SUBROUTINE USED BY -ALLOUT- TO SEND TO A TERMINAL
  1839. *
  1840. * ON EXIT - A = POSITIVE IF MESSAGE SENT
  1841. * NEGATIVE IF CIU WOULD NOT ACCEPT
  1842. *
  1843. *
  1844. MSGOUT SUBR
  1845. LDC 4000 INITIALIZE WAIT COUNTER
  1846. STM II
  1847. *
  1848. MO100 CALL OUTNET
  1849. PJN MSGOUTX IF MESSAGE SENT
  1850. SOM II
  1851. PJP MO100 CONTINUE TRYING
  1852. UJN MSGOUTX
  1853. *
  1854. *
  1855. * /--- BLOCK OFFMSG 00 000 75/07/07 22.25
  1856. TITLE OFFMSG *PLATO OFF* MESSAGE
  1857. *
  1858. *
  1859. OFFMSG DATA 4160B,0070B CLEAR ABORT / BLOCK CHECK OFF
  1860. DATA 4500B,1000B LOAD SSL LAMP OFF, SHUTTER SHUT
  1861. DATA 4140B,0064B LOAD CHAR MODE (MODE REWRITE)
  1862. DATA 4200B,0420B LOAD X=136 (COLUMN 18)
  1863. DATA 4201B,1600B LOAD Y=448 (LINE 4)
  1864. DATA 5777B,1640B (UNCOVER)(UNCOVER)(20)
  1865. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1866. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1867. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1868. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1869. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1870. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1871. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1872. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1873. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1874. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1875. DATA 4160B,0070B CLEAR ABORT / BLOCK CHECK OFF
  1876. DATA 4140B,0064B LOAD CHAR MODE (MODE REWRITE)
  1877. DATA 4200B,0420B LOAD X=136 (COLUMN 18)
  1878. DATA 4201B,1540B LOAD Y=432 (LINE 5)
  1879. DATA 5777B,1640B (UNCOVER)(UNCOVER)(20)
  1880. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1881. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1882. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1883. DATA 5552B,0030B (SPACE)PL
  1884. DATA 5012B,1036B ATO
  1885. DATA 5555B,1236B (SPACE)(SPACE)O
  1886. DATA 5060B,1532B FF(SPACE)
  1887. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1888. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1889. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1890. DATA 4160B,0070B CLEAR ABORT / BLOCK CHECK OFF
  1891. DATA 4140B,0064B LOAD CHAR MODE (MODE REWRITE)
  1892. DATA 4200B,0420B LOAD X=136 (COLUMN 18)
  1893. DATA 4201B,1500B LOAD Y=416 (LINE 6)
  1894. DATA 5777B,1640B (UNCOVER)(UNCOVER)(20)
  1895. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1896. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1897. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1898. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1899. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1900. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1901. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1902. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1903. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1904. DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
  1905. DATA 4160B,0070B CLEAR ABORT / BLOCK CHECK OFF
  1906. DATA 4140B,0024B LOAD LINE MODE
  1907. DATA 5570B,1640B LINER(376,464)
  1908. DATA 5210B,1640B LINER(136,464)
  1909. DATA 5210B,1500B LINER(136,416)
  1910. DATA 5570B,1500B LINER(376,416)
  1911. DATA 0 END OF MESSAGE
  1912. *
  1913. *
  1914. * /--- BLOCK ONMSG 00 000 76/12/06 02.03
  1915. *
  1916. ONMSG DATA 4160B,0070B CLEAR ABORT / BLOCK CHECK OFF
  1917. DATA 4500B,1000B LOAD SSL LAMP OFF, SHUTTER SHUT
  1918. DATA 4140B,0076B LOAD CHAR MODE (WRITE, FULL SCREEN ERASE)
  1919. DATA 4200B LOAD X
  1920. ONMSX DATA 400B X!0=128
  1921. DATA 4201B LOAD Y
  1922. ONMSY DATA 400B Y!0=128
  1923. DATA 5772B,0240B (UNCOVER)(21)'P
  1924. DATA 5772B,0044B (UNCOVER)(20)R
  1925. DATA 5052B,0646B ESS
  1926. DATA 5555B,1376B (SPACE)(SPACE)(UNCOVER)
  1927. DATA 5211B,1412B (21)NE
  1928. DATA 5302B,1176B XT(UNCOVER)
  1929. DATA 5205B,1332B (20)(SPACE)(SPACE)
  1930. DATA 5241B,1732B TO(SPACE)
  1931. DATA 5020B,1216B BEG
  1932. DATA 5111B,1576B IN(UNCOVER)
  1933. DATA 5207B,1640B (20)(UNCOVER)(20)
  1934. DATA 0 END OF MESSAGE
  1935. *
  1936. * /--- BLOCK DROP 00 000 81/04/30 15.11
  1937. TITLE -DROP- DROP PPU
  1938. *
  1939. *
  1940. *
  1941. * -DROP-
  1942. * RELEASE ALL EQUIPMENT/CHANNELS ASSIGNED AND
  1943. * DROP PPU PROGRAM
  1944. *
  1945. *
  1946. DROP CALL CEQUIP DE-SELECT DDP/CIU
  1947. LDM DDP CHECK IF DDP ASSIGNED
  1948. ZJN DROP200
  1949. *
  1950. * DROP DDP PORT CHANNEL
  1951. *
  1952. LDM /C=DDP/C=DDP
  1953. DCHAN
  1954. *
  1955. * DROP CIU EQUIPMENT/CHANNELS
  1956. *
  1957. DROP200 LDM CIUEQ CHECK IF CIU ASSIGNED
  1958. ZJN DROP400
  1959. LDM /I=NIU/I=NIU
  1960. DCHAN
  1961. LDM /O=NIU/O=NIU
  1962. DCHAN
  1963. LDN ZERL
  1964. CRD CM PRE-CLEAR ARGUMENTS
  1965. LDM CIUEQ SET CIU EQ (EST ORDINAL)
  1966. STD CM+1
  1967. MONITOR DEQM DROP CIU EQUIPMENT
  1968. *
  1969. DROP400 CALL DFM,DMSG1 OUTPUT DAYFILE MESSAGE
  1970. MONITOR DPPM DROP PPU
  1971. UJP PPR
  1972. *
  1973. *
  1974. DMSG1 DIS ,*(PIO) PPU DROPPED*
  1975. *
  1976. *
  1977. * /--- BLOCK STORAGE 00 000 81/09/02 14.08
  1978. TITLE STORAGE DEFINITIONS
  1979. *
  1980. *
  1981. *CALL PLAPDNM
  1982. *CALL PLAPPLN
  1983. *
  1984. *
  1985. C=DDP TABLE CHANNEL DDP CHANNEL
  1986. O=NIU TABLE CHANNEL CIU OUTPUT CHANNEL
  1987. I=NIU TABLE CHANNEL CIU INPUT CHANNEL
  1988. *
  1989. *
  1990. ECRA BSS 2 ECS REFERENCE ADDRESS
  1991. *
  1992. PARAMS BSSZ 5*NPARAMS
  1993. ECSSWX EQU PARAMS+1 ECS ADDR OF REQUEST SWITCH/LIST
  1994. FKBFADD EQU ECSSWX+2 REL ADDR OF FASTKEY REQUEST BUF
  1995. PSITES EQU PARAMS+9 NUMBER OF SITES
  1996. SCIMADD EQU PSITES+2 REL ADDR OF PIO/SCIM BUFFER
  1997. KEYBADD EQU SCIMADD+2 REL ADDR OF KEY BUFFERS
  1998. OUTPNT EQU KEYBADD+5 REL ADDR OF FRAME COUNTER
  1999. OUTTAB EQU OUTPNT+5 REL ADDR OF FRAME LENGTH TABLE
  2000. OUTBUFF EQU OUTTAB+5 REL ADDR OF FRAME BUFFERS
  2001. ECSTX EQU OUTBUFF+3 REL ADDR OF ECS STATS BUFFER
  2002. JFILL EQU ECSTX+7 UNUSED
  2003. FRAMLTH EQU JFILL+6 MAXIMUM LENGTH OF FRAME
  2004.  
  2005.  
  2006.  
  2007. ***** DONT REMOVE ARGUMENTS WITHOUT CHANGING NEXT CODE
  2008.  
  2009. CIUNUM EQU PARAMS+5*9 10 THE ARG. CIU NUMBER
  2010. PLATSIT EQU CIUNUM+1 FIRST PLATO SITE
  2011. NUMSIT EQU PLATSIT+1 NUMBER OF SITES
  2012. PHYSIT EQU NUMSIT+1 FIRST SITE OF CIU TO BE USED
  2013.  
  2014.  
  2015. *
  2016. *
  2017. PSTATS TABLE CM PPU STATUS WORD
  2018. STATSW TABLE CM CONTROL POINT STATUS WORD
  2019. *
  2020. PSTATX BSSZ 2 REL ADDR OF PPU STATUS WORD
  2021. *
  2022. ILAST BSS 1
  2023. IBIAS BSS 2
  2024. II BSS 1
  2025. JJ BSS 1
  2026. KOCNT BSS 1
  2027. PINIT DATA 0
  2028. FICNT DATA 0
  2029. *
  2030. NFRAME BSSZ 5 FRAME COUNTER
  2031. IFRAME DATA 0 INDEX TO CURRENT FRAME
  2032. FBIAS DATA 0 BIAS TO CURRENT FRAME
  2033. DATA 0
  2034. ECSBUFF BSS 10 BUFFER FOR ECS READ/WRITE
  2035. FKYBUFF BSS 10 BUFFER FOR ECS READ/WRITE
  2036. STRBUFF BSS 5 BUFFER FOR ECS READ/WRITE
  2037. CMBUFF BSS 5 BUFFER FOR CM READ/WRITE
  2038. *
  2039. NOOP0 VFD 12/4000B SPECIAL NO-OP FOR STATION 0
  2040. VFD 12/0
  2041. VFD 12/0
  2042. *
  2043. * /--- BLOCK STORAGE 00 000 81/09/08 01.00
  2044. *
  2045. CIUEQ DATA 0 CIU EST ORDINAL
  2046. DDP DATA 0 DDP EST ORDINAL
  2047. *
  2048. CIC DATA 0 CIU INPUT CHANNEL NUMBER
  2049. COC DATA 0 CIU OUTPUT CHANNEL NUMBER
  2050. *
  2051. *
  2052. * NON-OVERLAYED INITIALIZATIONS
  2053. *
  2054. INITIAL SUBR
  2055. RJM /PRS/INITIAL
  2056. * ZERO BUFFERS OVERLAYED BY INITIALIZATION CODE
  2057. LDC ZERLTH
  2058. STD D.T0
  2059.  
  2060. INIT1 LDN 0
  2061. STM PPBUFF,D.T0
  2062. SOD D.T0
  2063. PJN INIT1
  2064. * SET OVERLAYED CONSTANTS
  2065. LDK PPBLTH
  2066. STM PENDTST
  2067. LDK KEYLTH-2
  2068. STM KENDTST
  2069. UJN INITIALX
  2070. *
  2071. *
  2072. * FOLLOWING BUFFERS ARE OVERLAYED BY PRESET ROUTINE.
  2073. * NON-OVERLAYED INITIALIZATIONS ABOVE ZERO THESE
  2074. * BUFFERS BEFORE THEY ARE USED.
  2075. *
  2076. *
  2077. PPBUFF EQU * TERMINAL OUTPUT BUFFER
  2078. KEYBUFF EQU PPBUFF+5*PPBLTH+5 KEY INPUT BUFFER
  2079. *
  2080. PENDTST EQU KEYBUFF+KEYLTH
  2081. KENDTST EQU PENDTST+1
  2082. *
  2083. SFCNT EQU KENDTST+1
  2084. STATCNT EQU SFCNT+1
  2085. *
  2086. STATBUF EQU STATCNT+1
  2087. * FIRST 2 CM WORDS = STATISTICS
  2088. * NEXT 2 = BAD STATION LIST
  2089. IBAD EQU STATBUF STATIONS FLOODING KEYS
  2090. KYRESP EQU IBAD+1 NO INPUT RESPONSE
  2091. OUTRESP EQU KYRESP+1 NO OUTPUT RESPONSE
  2092. KYOFLOW EQU OUTRESP+1 PPU BUFFER OVERFLOW
  2093. KYIGN EQU KYOFLOW+1 KEYS IGNORED
  2094. KYSEQ EQU KYIGN+1 KEY DATA WORDS OUT OF SEQUENCE
  2095. KYSTATN EQU KYSEQ+1 KEY STATION ILLEGAL
  2096. KYIGNT EQU KYSTATN+1 KEYS IGNORED IN TEST MODE
  2097. FKSTAT EQU KYIGNT+1 FASTKEY STATS
  2098. MXKBIDX EQU FKSTAT+1 MAXIMUM KEYBUFFER INDEX
  2099. BADLIST EQU STATBUF+10 BAD STATION LIST
  2100. *
  2101. SCIMBUF EQU STATBUF+5*STATLTH PIO/SCIM COMM BUFFER
  2102. TESTLST EQU SCIMBUF+SCIMLTH*5 LIST OF STATIONS WITH
  2103. * 1--4 KEY BUFFER OVERFLOWS
  2104. CNTLST EQU TESTLST+BADLTH*2 COUNT OF OVERFLOWS FOR
  2105. * STATIONS ON TEST LIST
  2106. *
  2107. BADCNT EQU CNTLST+BADLTH*2
  2108. ITEST EQU BADCNT+1 COUNT OF STATIONS ON TEST LIST
  2109. *
  2110. ZERLTH EQU ITEST-PPBUFF LENGTH TO BE ZEROED
  2111. *
  2112. * CHECK FOR BUFFERS OVERFLOWING PPU
  2113. *
  2114. ERRPL ITEST+1-7770B BUFFERS OVERFLOW PPU
  2115. *
  2116. * /--- BLOCK INITIAL 00 000 87/02/24 12.54
  2117. TITLE -INITIAL- INITIALIZATIONS
  2118. QUAL PRS
  2119. ORG PPBUFF
  2120. *
  2121. *
  2122. *
  2123. * -INITIAL-
  2124. * ONE TIME ONLY INITIALIZATIONS
  2125. *
  2126. *
  2127. INITIAL SUBR
  2128. .NOSV2 IFGE OSLEV,562D NOS V2
  2129. LDK MABL READ MACHINE ATTRIBUTES
  2130. CRD CM
  2131. LDD CM+1 CPU ATTRIBUTES
  2132. SHN -13B GET 800 SERIES BIT
  2133. LMN 1
  2134. .NOSV2 ELSE
  2135. LDC CPUL
  2136. CRD CM
  2137. LDD CM+3
  2138. SHN -10B
  2139. LPN 1
  2140. .NOSV2 ENDIF
  2141. STD A170
  2142. *
  2143. * INITIALIZE VARIABLES
  2144. *
  2145. LDN 0
  2146. STD KEYII
  2147. STD KEYOI
  2148. *
  2149. * GET ADDR OF CONTROL POINT STATUS WORD (STSW)
  2150. *
  2151. INIT130 LDD CP CONTROL POINT ADDRESS WORD
  2152. ADN STSW FORM ADDRESS OF STATUS WORD
  2153. CRD D.T0 READ CONTROL POINT STATUS
  2154. LDD D.T0+C.CPEF
  2155. NJP DROP DROP PPU IF ERROR
  2156. *
  2157. * WAIT PLATO IN RECALL BEFORE READING ECS ADDRESS
  2158. *
  2159. LDD D.T0+C.CPSTAT
  2160. .NOSV2 IFLT OSLEV,562D NOS V1
  2161. LPC 3000B CHECK PLATO IN RECALL (I OR X)
  2162. NJN INIT135
  2163. .NOSV2 ELSE NOS V2
  2164. SHN -11B CHECK FOR *I* STATUS (6)
  2165. SBN 5
  2166. PJN INIT135 IF IN AUTO-RECALL
  2167. .NOSV2 ENDIF
  2168. DELAY 1000 IDLE FOR 1 MILLISECOND
  2169. UJP INIT130
  2170. * /--- BLOCK INITIAL 00 000 87/02/24 13.00
  2171. *
  2172. * READ ECS REFERENCE ADDRESS FROM EXCHANGE PACKAGE
  2173. *
  2174. INIT135 LDD CP ADDRESS OF CONTROL POINT AREA
  2175. ADN 4 BIAS TO RAX
  2176. CRD D.T0
  2177. .NOS252 IFGE OSLEV,678D
  2178. LDK MEFL
  2179. CRD CM
  2180. LDD CM+2
  2181. SHN 6+4 EXTENDED ADDRESSING BIT
  2182. MJN INIT137 IF EXTENDED ADDRESSING MODE
  2183. .NOS252 ELSE
  2184. RJM GEC GET ECS MODE
  2185. NJN INIT137 IF ESM MODE
  2186. .NOS252 ENDIF
  2187. LDD D.T0 SET UPPER PART OF ECS RA
  2188. LPC 777B
  2189. STM ECRA
  2190. LDD D.T0+1 SET LOWER PART OF ECS RA
  2191. STM ECRA+1
  2192. .NOS252 IFGE OSLEV,678D
  2193. UJN INIT138
  2194. .NOS252 ELSE
  2195. LDC 0303B UJN *+3
  2196. STM DMC40 NO-OP SELECT ESM MODE
  2197. UJN INIT140
  2198. .NOS252 ENDIF
  2199.  
  2200. INIT137 LDD D.T0
  2201. LPN 77B CLEAR FLAG BITS
  2202. SHN 12
  2203. LMD D.T1
  2204. SHN 12
  2205. STM ECRA SAVE UPPER PART OF ECS RA
  2206. SHN -6 POSITION LOWER PART OF ESM RA
  2207. SCN 77B
  2208. STM ECRA+1 SAVE LOWER PART OF ECS RA
  2209. .NOS252 IFGE OSLEV,678D
  2210.  
  2211. * SET ECS/ESM MODE
  2212.  
  2213. INIT138 RJM GEC GET ECS MODE
  2214. NJN INIT140 IF ESM MODE
  2215. LDC 0303B UJN *+3
  2216. STM DMC40 NO-OP SELECT ESM MODE
  2217. .NOS252 ENDIF
  2218. *
  2219. * PLANT REFERENCES TO CONTROL POINT STATUS WORD
  2220. *
  2221. INIT140 LDM II PLANT REFERENCES TO STATUS WORD
  2222. PLANT CM,STATSW
  2223. *
  2224. * /--- BLOCK INITIAL 00 000 81/04/28 14.28
  2225. *
  2226. * GET ADDR OF PPU STATUS WORD AND READ PARAMETERS
  2227. * WHICH FOLLOW TO PPU MEMORY
  2228. *
  2229. LDD IR+3 SET UPPER PART OF REL ARGUMENT
  2230. LPN 37B
  2231. STM PSTATX
  2232. LDD IR+4
  2233. STM PSTATX+1 SET LOWER PART OF REL ARGUMENT
  2234. LDD IR+3
  2235. LPN 37B FORM ADDRESS OF ARGUMENT
  2236. SHN 12
  2237. ADD IR+4
  2238. RJM ABS CONVERT TO ABSOLUTE
  2239. ZJP DROP
  2240. PLANT CM,PSTATS PLANT REFERENCES TO STATUS WORD
  2241. LDM PSTATX LOAD UPPER PART OF REL ADDRESS
  2242. SHN 6
  2243. ADD RA ADD CM REFERENCE ADDRESS
  2244. SHN 6
  2245. ADM PSTATX+1 ATTACH LOWER 12 BITS
  2246. PLANT CM,IPSTAT PLANT FOR INITIALIZATIONS
  2247. LDC NPARAMS
  2248. STD D.T0 SET NUMBER OF WORDS TO READ
  2249. LOADCM IPSTAT
  2250. ADN 1
  2251. CRM PARAMS,D.T0 READ PARAMETER VECTOR
  2252. *
  2253. * /--- BLOCK INITIAL 00 000 87/02/11 12.10
  2254. *
  2255. * RESERVE DISTRIBUTIVE DATA PATH CHANNEL
  2256. *
  2257. INI200 BSS 0
  2258. LDD A170
  2259. NJP INI201 IF 800 MACHINE
  2260. LDC 2RD2 DDP EQUIPMENT NAME
  2261. RJM EQN
  2262. MJP NODDP EXIT IF NO DDP AVAILABLE
  2263. STM DDP
  2264. .NOS252 IFGE OSLEV,678D
  2265. MONITOR RCHM
  2266. .NOS252 ELSE
  2267. LDN 0 CLEAR ADDITIONAL CHANNELS WORD
  2268. STD CM+2
  2269. LDD CM+1 LOAD DDP PORT CHANNEL NUMBERS
  2270. RCHAN
  2271. .NOS252 ENDIF
  2272. LDD CM+1 LOAD CHANNEL ACTUALLY ASSIGNED
  2273. PLANT CHANNEL,C=DDP
  2274. CALL DDPMCP MASTER CLEAR DDP
  2275. CALL DFM,IMSG1 OUTPUT DAYFILE MESSAGE
  2276. *
  2277. * SEARCH EQUIPMENT TABLE FOR SPECIFIED CIU
  2278. *
  2279. INI201 LDC 2RCI CI = CIU EQUIPMENT NAME
  2280. STD T3 T3 = EQUIPMENT TYPE NAME
  2281. LDN ESTP
  2282. CRD CM READ POINTER TO EST
  2283. .NOS22 IFGE OSLEV,594D NOS 2.2
  2284. LDD CM+2
  2285. STD T2 (T2) = LAST EST ORDINAL + 1
  2286. LDN 0
  2287. STD T4 (T4) = CURRENT EST ORDINAL
  2288.  
  2289. INIT230 SFA EST,T4 (A) = FWA OF CURRENT EST ENTRY
  2290. ADK EQDE OFFSET TO WORD WITH DEVICE TYPE
  2291. .NOS22 ELSE NOS 2.1
  2292. LDD CM LOAD FWA OF EST
  2293. STD T1 T1 = FWA EST
  2294. STD T4 T4 = INDEX IN EST
  2295. LDD CM+1 LOAD LWA+1 OF EST
  2296. STD T2 T2 = LWA+1 EST
  2297. *
  2298. * /--- BLOCK INITIAL 00 000 87/02/10 10.56
  2299. *
  2300. INIT230 LDD T4 LOAD POINTER TO NEXT EST ENTRY
  2301. .NOS22 ENDIF
  2302. CRD CM
  2303. LDD CM+3 LOAD EQUIPMENT TYPE CODE
  2304. SBD T3
  2305. .NOS251 IFGE OSLEV,664D
  2306. NJP INIT235 IF DEVICE TYPE DOES NOT MATCH
  2307. LDD CM
  2308. LPN 3
  2309. ZJP INIT240 IF DEVICE IS AVAILABLE
  2310. .NOS251 ELSE
  2311. ZJP INIT240 IF DEVICE TYPE MATCHES
  2312. .NOS251 ENDIF
  2313. *
  2314. INIT235 AOD T4 ADVANCE TABLE POINTER
  2315. SBD T2 CHECK FOR END OF TABLE
  2316. NJP INIT230
  2317. UJP INIT350
  2318. *
  2319. INIT240 LDD CM+4 LOAD UNIT NUMBER WORD
  2320. LPC 77B MASK OFF UNIT NUMBER
  2321. SBM CIUNUM
  2322. NJP INIT235 CHECK IF SPECIFIED CIU
  2323. .NOSV2 IFGE OSLEV,562D NOS V2
  2324. .NOS22 IFGE OSLEV,594D NOS 2.2
  2325. SFA EST,T4 (A) = FWA OF EST ENTRY
  2326. ADK EQAE OFFSET TO WORD WITH EJT ORDINAL
  2327. CRD D.T0
  2328. .NOS22 ELSE NOS 2.1
  2329. LDD T4 (A) = EST ENTRY ADDRESS
  2330. ADD HN OFFSET TO EAT
  2331. CRD D.T0
  2332. .NOS22 ENDIF
  2333. LDD D.T0+4 (A) = EJT ORDINAL
  2334. .NOSV2 ELSE NOS V1
  2335. LDD CM
  2336. LPC 37B MASK OFF CONTROL PT ASSIGNMENT
  2337. .NOSV2 ENDIF
  2338. NJP DROP JUMP IF CIU ALREADY RESERVED
  2339. *
  2340. * OBTAIN CIU CHANNEL/EQUIPMENT NUMBERS
  2341. *
  2342. LDD CM+1
  2343. LPC 77B MASK OFF CIU INPUT CHANNEL
  2344. STM CIC SET CIU INPUT CHANNEL NUMBER
  2345. .NOS252 IFGE OSLEV,678D
  2346. LDD CM+2
  2347. .NOS252 ELSE
  2348. LDD CM+1
  2349. SHN -6 POSITION OUTPUT CHANNEL NUMBER
  2350. .NOS252 ENDIF
  2351. LPC 77B
  2352. STM COC SET CIU OUTPUT CHANNEL NUMBER
  2353. LDD T4 COMPUTE EQUIPMENT ORDINAL
  2354. .NOS21 IFLT OSLEV,594D NOS 2.1 OR PRIOR
  2355. SBD T1
  2356. .NOS21 ENDIF
  2357. STM CIUEQ SET CIU EQUIPMENT
  2358. *
  2359. * /--- BLOCK INITIAL 00 000 81/04/30 15.12
  2360. *
  2361. * RESERVE CIU EQUIPMENT
  2362. *
  2363. LDN ZERL PRE-CLEAR ARGUMENTS
  2364. CRD CM
  2365. .NOS242 IFGE OSLEV,642D
  2366. ERRNZ REQS CODE DEPENDS ON REQS = 0
  2367. .NOS242 ENDIF
  2368. LDM CIUEQ LOAD CIU EQUIPMENT ORDINAL
  2369. STD CM+1
  2370. MONITOR REQM RESERVE CIU EQUIPMENT
  2371. *
  2372. * RESERVE CIU INPUT/OUTPUT CHANNELS
  2373. *
  2374. LDM CIC LOAD CIU INPUT CHANNEL NUMBER
  2375. RCHAN
  2376. LDD CM+1 LOAD CHANNEL ACTUALLY ASSIGNED
  2377. PLANT CHANNEL,I=NIU
  2378. LDM COC LOAD CIU OUTPUT CHANNEL NUMBER
  2379. RCHAN
  2380. LDD CM+1 LOAD CHANNEL ACTUALLY ASSIGNED
  2381. PLANT CHANNEL,O=NIU
  2382. CALL DFM,IMSG2 OUTPUT DAYFILE MESSAGE
  2383. *
  2384. * UPDATE *PIO* CM STATUS WORD
  2385. *
  2386. INIT350 LOADCM IPSTAT GET ADDRESS OF STATUS WORD
  2387. CRD D.T0 READ PPU STATUS WORD
  2388. LDN 1 SET COMPLETION BIT OF STATUS WD
  2389. STD D.T0+4
  2390. LDN 0 PRE-SET = NO EQUIPMENT RESERVED
  2391. STD D.T0
  2392. LDM CIUEQ CHECK IF CIU AVAILABLE
  2393. ZJP INIT354 JUMP IF NOT
  2394. LDN 3 MARK CIU RESERVED
  2395. STD D.T0
  2396. *
  2397. * SET BIT 0 OF PIO PARAMETER WORD TO INDICATE
  2398. * ALL INITIALIZATIONS DONE.
  2399. *
  2400. INIT354 LOADCM IPSTAT GET ADDRESS OF STATUS WORD
  2401. CWD D.T0 RE-WRITE STATUS WORD
  2402. *
  2403. * /--- BLOCK INITIAL 00 000 81/04/21 20.57
  2404. *
  2405. * SET UP *PRESS -NEXT- TO BEGIN* MESSAGE
  2406. *
  2407. INIT360 IAN 14B INPUT REAL TIME CLOCK
  2408. SHN -6
  2409. LPC 77B MASK TO RANGE OF 64
  2410. SHN 2 SHIFT TO RANGE OF 128
  2411. RAM ONMSX
  2412. IAN 14B INPUT REAL TIME CLOCK
  2413. LPC 77B MASK TO RANGE OF 64
  2414. SHN 3 SHIFT TO RANGE OF 256
  2415. RAM ONMSY
  2416. CALL CEQUIP DE-SELECT CIU/DDP
  2417. *
  2418. LDM NUMSIT
  2419. SHN 5
  2420. STD NS SET UP NUMBER OF STATIONS
  2421. LDM PHYSIT
  2422. SHN 5
  2423. STD FS FIRST LEGAL PHYSICAL STATION
  2424. LDD NS
  2425. ADD FS
  2426. LMC -0
  2427. STM .NTERM1 SET MAX PHYSICAL STATION NUMBER
  2428. LDM PLATSIT CALCULATE STATION BIAS
  2429. SBM PHYSIT
  2430. SHN 5
  2431. STD CB SET UP CIU BIAS
  2432. *
  2433. * /--- BLOCK INITIAL 00 000 78/10/22 11.57
  2434. *
  2435. * READ INITIAL VALUE OF FRAME COUNTER
  2436. *
  2437. LDC NFRAME
  2438. STD D.T0 D.T0 = PPU MEMORY ADDRESS
  2439. LDM ECRA+1 COMPUTE ECS ADDR OF FRAME COUNT
  2440. ADM OUTPNT+1
  2441. STD D.T2 D.T2 = LOWER PART OF ECS ADDR
  2442. SHN -12
  2443. ADM ECRA
  2444. ADM OUTPNT
  2445. STD D.T1 D.T1 = UPPER PART OF ECS ADDR
  2446. LDN 5
  2447. STD D.T3 D.T3 = NUMBER WORDS TO WRITE
  2448. CALL READECS READ FRAME COUNTER FROM ECS
  2449. LJM INITIALX
  2450.  
  2451.  
  2452. NODDP LOADCM IPSTAT SET COMPLETE BIT
  2453. CRD D.T0
  2454. LDN 1
  2455. STD D.T0+4
  2456. LDN 0 SET NO EQUIPMENT RESERVED
  2457. STD D.T0
  2458. LOADCM IPSTAT
  2459. CWD D.T0
  2460. CALL DFM,NODDPA ISSUE DAYFILE MESSAGE
  2461. LJM DROP
  2462.  
  2463. NODDPA DIS ,*(PIO) NO DDP/LSP AVAILABLE*
  2464. GEC SPACE 5,11
  2465. ** GEC - GET ECS MODE
  2466. *
  2467. * SEARCH FOR MASTOR,S CONTROL POINT AND READ
  2468. * ECS CONTROL WORD
  2469. *
  2470. * EXIT - (A) - 0 IF ECS MODE
  2471. * 1 IF ECM MODE
  2472.  
  2473.  
  2474. GEC SUBR
  2475. .NOSV2 IFGE OSLEV,562D (NOS VERSION 2)
  2476. RJM IFP INITIALIZATION FOR SFA MACRO
  2477. .NOSV2 ENDIF
  2478.  
  2479. LDK NCPL ADDR OF LOW-CORE WORD WITH NCP
  2480. CRD CM
  2481. .NOSV2 IFGE OSLEV,562D NOS V2
  2482. LDD CM+1
  2483. .NOSV2 ELSE NOS V1
  2484. LDD CM+3 (A) = NUMBER OF CONTROL POINTS
  2485. .NOSV2 ENDIF
  2486. STD T1
  2487. GEC1 LDD T1
  2488. SHN 7
  2489. STM MASCPA FWA OF MASTOR-S CP AREA
  2490. ADK JCIW GET SUBSYSTEM ID/QUEUE PRIORITY
  2491. CRD T2
  2492. .NOSV2 IFLT OSLEV,562D NOS V1
  2493. SBK JCIW-JNMW
  2494. CRD CM
  2495. .NOSV2 ELSE NOS V2
  2496. LDD T1 (A) = CONTROL POINT NUMBER
  2497. SHN 7 (A) = CP AREA ADDRESS
  2498. ADK TFSW GET EJT ORDINAL
  2499. CRD CM
  2500. SFA EJT,CM COMPUTE ABS ADDR OF EJT ENTRY
  2501. ADK JSNE ADD WORD OFFSET FOR JSN
  2502. CRD CM (CM - CM+1) = JOB SEQUENCE NAME
  2503. .NOSV2 ENDIF
  2504. LDD CM+1
  2505. SCN 77B
  2506. SHN 6
  2507. LMD CM
  2508. LMC 3RSMA
  2509. ZJN GEC1.1 IF MASTOR
  2510. LJM GEC2 IF NOT MASTOR
  2511.  
  2512. GEC1.1 BSS 0
  2513. .NOSV2 IFLT OSLEV,562D NOS V1
  2514. LDD T2+1 CHECK QUEUE PRIORITY
  2515. ADC -MXPS-1
  2516. MJP GEC2 IF NOT MASTOR
  2517. .NOSV2 ELSE NOS V2
  2518. .NOS23 IFGE OSLEV,617D
  2519. LDD T2+2
  2520. SBK PLSI
  2521. NJP GEC2 IF NOT MASTOR SUBSYSTEM ID
  2522. .NOS23 ELSE
  2523. * /--- BLOCK INITIAL 00 000 89/06/01 15.54
  2524. LDD T2+2 CHECK SUBSYSTEM ID
  2525. SBK PLSI INITIAL PLATO ID
  2526. ZJN GEC1.2 IF PLATO CONTROL POINT
  2527. LDD T2+2
  2528. SBK 7754B
  2529. NJP GEC2 IF NOT PLATO SUBSYSTEM ID
  2530. .NOS23 ENDIF
  2531. .NOSV2 ENDIF
  2532.  
  2533. GEC1.2 BSS 0
  2534. LDN CMCL CHECK IF CP MOVING
  2535. CRD CM
  2536. LDD T1
  2537. .NOS27 IFLT OSLEV,716D NOS2.7.1
  2538. SHN 7
  2539. .NOS27 ENDIF
  2540. LMD CM
  2541. ZJP GEC1 IF MOVING
  2542. *
  2543. * MASTOR(N) LOCATED; READ EXTENDED MEMORY POINTERS.
  2544. *
  2545.  
  2546. .NOSV2 IFGE OSLEV,562D (NOS VERSION 2)
  2547. LDD A170
  2548. ZJN GEC1.3 -- IF CME NOT PRESENT
  2549. LDN 1 CME PRESENT, 800 SERIES
  2550.  
  2551. GEC1.3 BSS 0 ENTER WITH (A) = 0 OR 1
  2552. ADK FLSW OFFSET TO FIELD LENGTH WORDS
  2553. ADM MASCPA PLUS MASTOR CP AREA ADDR
  2554. CRD CM READ APPROPRIATE WORD
  2555. SRD D.RSAV SAVE *R* FROM CALLING CP
  2556. LRD CM+1 LOAD *R* WITH (RA-NFL)/100B
  2557. LDD CM+3 MASTOR(N) RA
  2558.  
  2559. .NOSV2 ELSE (NOS VERSION 1)
  2560.  
  2561. LDM MASCPA MASTOR CP AREA ADDR
  2562. .NOS552 IFGE OSLEV,552D (NOS VERSION 1.4/552)
  2563. ADK FLSW
  2564. .NOS552 ELSE (PRE-NOS VERSION 1.4/552)
  2565. ADK STSW
  2566. .NOS552 ENDIF
  2567. CRD CM READ RA/FL INFORMATION
  2568.  
  2569. LDD A170
  2570. NJN GEC1.3 -- IF AN 800 SERIES MAINFRAME
  2571. LDD CM+3 12-BIT RA ON A NON-800
  2572. UJN GEC1.4 -- ALL THAT'7S NEEDED
  2573.  
  2574. GEC1.3 BSS 0 800-SERIES MAINFRAME
  2575. SRD D.RSAV SAVE CALLING CP'7S *R*
  2576. LRD CM+2 SET *R* TO MASTOR(N)'7S RA
  2577. LDD RA 4000B ON AN 800 SERIES
  2578.  
  2579. .NOSV2 ENDIF
  2580.  
  2581. GEC1.4 BSS 0 ENTER WITH (A) = RA/100B
  2582. SHN 6
  2583. ADN MS.CHKS
  2584. CRM CHKS,TR READ EXTENDED MEMORY POINTERS
  2585. LRD D.RSAV RESTORE CALLING CP'7S *R*
  2586.  
  2587. LDM ECSP (A) = 3/MFORD, 9/WHO CARES
  2588. SHN -9D (A) = MFORD (MAINFRAME ORDINAL)
  2589. STM MFN
  2590. RJM VEP VERIFY EXTENDED MEMORY POINTERS
  2591. LDM ECSP (A) = VARIOUS BIT FLAGS
  2592. LPN 1 (A) = ECS / ESM MODE
  2593. LJM GECX
  2594.  
  2595. GEC2 SOD T1
  2596. NJP GEC1 IF MORE CONTROL POINTS TO SCAN
  2597.  
  2598. * MASTOR NOT FOUND
  2599.  
  2600. CALL DFM,IMSG3 *MASTOR NOT ACTIVE*
  2601. LJM DROP
  2602. *
  2603. *
  2604. IMSG1 DIS ,*(PIO) DDP RESERVED*
  2605. IMSG2 DIS ,*(PIO) CIU RESERVED*
  2606. IMSG3 DIS ,*(PIO) MASTOR NOT ACTIVE*
  2607. *
  2608. IPSTAT TABLE CM
  2609.  
  2610. QUAL$ EQU * SO NO /COMPVEP/ SYMBOLS
  2611. *
  2612. *CALL PLAPVEP
  2613.  
  2614. ** CELLS NEEDED TO READ AND VERIFY THE EXTENDED
  2615. * MEMORY PARAMETERS. THE FIRST 15 WORDS (CHKS - PNW)
  2616. * MUST BE CONTIGUOUS.
  2617.  
  2618. CHKS BSS 5 CHECKSUM FOR POINTERS
  2619. ECSP BSS 1 VARIOUS BIT FLAGS
  2620. MRAX BSS 2 MASTOR RAX
  2621. MFLX BSS 2 MASTOR FLX
  2622. PNW BSS 5 PROGRAM NAME AND NO. OF ARGS
  2623.  
  2624. MASNAM DATA 6LMASTOR
  2625. MFN BSS 1 MASTOR MAINFRAME NUMBER
  2626. MASCPA BSS 1 FWA OF MASTOR-S CP AREA
  2627. *
  2628. *CALL PLAPABS
  2629. *CALL PLAPEQN
  2630. *
  2631. * CHECK LENGTH OF PPU PROGRAM
  2632. *
  2633. QUAL *
  2634. *
  2635. * CHECK IF LITERALS OVERLAP BUFFERS
  2636. *
  2637. ERRNG *-ITEST+1 LITERALS OVERLAP BUFFERS
  2638. USE LITERALS FORCE OUT LITERALS BEFORE TEST
  2639. ERRPL *-7770B FORCE ERROR IF PPU OVERFLOW
  2640.  
  2641. END
plato/source/plaopl/pio.txt ยท Last modified: 2023/08/05 18:54 by Site Administrator