User Tools

Site Tools


plato:source:plaopl:dsn

Table of Contents

DSN

Table Of Contents

  • [00008] DSN - DRIVER FOR DATA SERVICES NETWORK.
  • [00014] DRIVER FOR DATA SERVICES NETWORK.
  • [00137] NWC - NETWORK CHARACTER
  • [00161] OVERLAY - DEFINE AN OVERLAY
  • [00400] MAI - MAIN PROCESSING LOOP
  • [00463] TER - TERMINATION PROCESS
  • [00481] UCS - UPDATE CM STATISTICS.
  • [00529] PLATO INTERFACE ROUTINES.
  • [00531] ABO - ABORT OUTPUT TO TERMINAL
  • [00560] BOD - BUILD OUTPUT DATA BLOCKS FOR NETWORK
  • [00680] BFO - WRITE DATA TO CIRCULAR BUFFER
  • [00791] LOT - LOG OFF TERMINALS
  • [00833] RTT - RETURN TERMINAL TYPE
  • [00875] SKY - SEND KEY TO KEY BUFFER
  • [00942] SBT - SET BIT FOR STATION
  • [01017] SPK - STORE PLATO KEY IN KEY BUFFER
  • [01079] SSL - SINGLE STATION LOGOFF.
  • [01092] UPD - UPDATE IN/OUT POINTERS
  • [01208] NETWORK PROCESSING ROUTINES.
  • [01210] BRH - BUILD ROUTING HEADER.
  • [01239] BTH - BUILD TERMINAL HEADER.
  • [01276] COD - CHECK OUTPUT DELAYS
  • [01396] INV - INVERT A CHARACTER
  • [01439] PIB - PROCESS INPUT BUFFER
  • [01535] PIC - PROCESS INPUT CHARACTER
  • [01656] SNP - SWITCH TO NEXT NPU
  • [01722] SSM - PROCESS SUPER SYSTEM MESSAGE
  • [01739] SYS - PROCESS SYSTEM MESSAGE
  • [01765] ASO - APPLICATION SYSTEM SIGNON
  • [01787] CEM - PROCESS CCP ERROR/STATISTIC MESSAGES
  • [01800] CSS - CHANGE IN SWITCH STATUS
  • [01812] DSM - DISPLAY SYSTEM MESSAGE
  • [01825] SBG - SIGN-ON TO BACKGROUND SYSTEM
  • [01840] TCD - PROCESS TERMINAL COMMAND BLOCK
  • [01906] FOB - FLUSH OUTPUT BUFFER.
  • [01941] NKT - LOAD NEW KEY TRANSLATION TABLE.
  • [01958] OKT - LOAD OLD KEY TRANSLATION TABLE.
  • [01978] LGO - LOGOUT USER
  • [01998] SNK - SWITCH TO NEW KEY TRANSLATION TABLE.
  • [02012] PLM - PROCESS LOGIN / LOGOUT MESSAGE
  • [02086] SRM - SEND ROUTING MESSAGE.
  • [02142] STC - SEND TERMINAL COMMAND.
  • [02174] VBL - VERIFY OUTPUT BUFFER LENGTH
  • [02193] 2250 DATA TRANSFER ROUTINES.
  • [02195] RID - READ INPUT DATA.
  • [02249] SOD - SEND OUTPUT DATA
  • [02322] FNC - FUNCTION THE CHANNEL. TRANSFER ONE DATA WORD
  • [02353] FUL - TEST IF CHANNEL FULL
  • [02364] IJM - WAIT FOR CHANNEL INACTIVE
  • [02377] STS - GET 2550 STATUS
  • [02421] ECS TRANSFER ROUTINES.
  • [02423] RECS - ECS TO PPU TRANSFER VIA DDP.
  • [02487] WECS - PPU TO ECS TRANSFER VIA DDP.
  • [02563] GENERAL PURPOSE SUBROUTINES.
  • [02565] C2X - CONVERT BINARY TO HEXADECIMAL.
  • [02591] STX - STORE TEXT IN THE MESSAGE BUFFER.
  • [02626] NUL - RETURN TO CALLER.
  • [02633] ICH - INSERT CHANNEL NUMBERS INTO I/O INSTRUCTIONS
  • [02664] PSE - PAUSE FOR STORAGE RELOCATION
  • [02687] MES - ISSUE FORMATTED DAYFILE MESSAGE
  • [02737] DBG - WRITE DATA TO CM BUFFER
  • [02772] BUF - MACRO TO DEFINE A BUFFER
  • [02960] PRS - INITIALIZE PROCESSING.
  • [03082] IFE - INITIALIZE FRONT END.
  • [03151] SET - SET 2550 STORE ADDRESS
  • [03171] WTB - WRITE BUFFER TO 2550 AND VERIFY IT.
  • [03238] OVERLAYED INITIALIZATION ROUTINES.
  • [03242] CEA - CONVERT ECS ADDRESS
  • [03258] FLF - FIND LOAD FILE
  • [03332] ICP - INITIALIZE CONTROL POINT
  • [03453] IFC - INITIALIZE FRAMAT COMMUNICATION
  • [03810] INI - INITIALIZE FL AND OTHER PPS
  • [03871] IRL - INITIALIZE RE-LOAD OF A 2550
  • [03907] RFL - REQUEST FIELD LENGTH

Source Code

DSN.txt
  1. DSN
  2. * /--- FILE TYPE = E
  3. * /--- BLOCK IDENT 00 000 86/05/28 13.59
  4. IDENT DSN,MAI DATA SERVICES NETWORK DRIVER
  5. PERIPH
  6. SST
  7. SYSCOM
  8. TITLE DSN - DRIVER FOR DATA SERVICES NETWORK.
  9. COMMENT DSN - DRIVER FOR DATA SERVICES NETWORK.
  10. COMMENT COPYRIGHT CONTROL DATA CORP. 1982.
  11. BASE M
  12. LIST F
  13. SPACE 5,11
  14. *** DSN - DRIVER FOR DATA SERVICES NETWORK.
  15. *
  16. * THIS PP ROUTINE DRIVES THE DATA SERVICES NETWORK
  17. * VIA CCP 2.0.
  18. *
  19. * THIS PROTOCOL IS BASED ON THE I.B.M. BI-SYNC
  20. * PROTOCOL. THERE ARE SEVERAL DOCUMENTS WHICH MAY
  21. * BE USEFUL; THE MOST IMPORTANT FOR THIS PROGRAM IS
  22. * ',EXT. SPEC., CDC/SBC DATA SERVICES NETWORK INTER-
  23. * FACE SPECIFICATIONS', (ANCIENT DOCUMENT ^$3436.03,
  24. * 09/30/77. OTHERS ARE'; 'E'R'S FOR 'C'C'P 2, 74784700,
  25. * AUG 1975; 'C'C'P 2 SYSTEM PROGRAMMERS HANDBOOK,
  26. * 'T'O'S131, 07/22/82.
  27. *
  28. * THE 2550 IS DOWNLINE LOADED AT INITIALIZATION.
  29. SPACE 5,11
  30. * COMMUNICATION WITH PLATO IS VIA THE KEY BUFFER
  31. * AND TWO CIRCULAR BUFFERS USED BY THE FRAMATTER.
  32. *
  33. * DURING INITIALIZATION, THE PP READS THE RAX FROM
  34. * PLATO,S EXCHANGE PACKAGE AND BIASES *DSNI* WORD
  35. * TO FIND THE POINTER TO ITS PARAMETER PACKAGE.
  36. *
  37. * FORMAT OF PARAMETER PACKAGE
  38. *
  39. * WORD 0 - PLATO KEY BUFFER POINTERS
  40. *
  41. * 12/NUMBER OF 2550S TO SUPPORT
  42. * 24/ADDRESS OF POLLING LIST,
  43. * 24/ADDRESS OF KEY BUFFER
  44. *
  45. * WORD 1 - STATION BANK POINTERS
  46. *
  47. * 12/*BANKADD* OFFSET INTO STATION BANK
  48. * 24/STATION BANKS ESM ADDRESS
  49. * 12/TOTAL DSN SITES
  50. * 12/UNUSED
  51. *
  52. * WORD 2 - OTHER POINTERS
  53. *
  54. * 24/ASCII CONNECTION TABLE EM ADDRESS
  55. * 36/UNUSED
  56. *
  57. * WORDS 3 - 5 ARE DUPLICATED FOR EACH 2550
  58. *
  59. * WORD 3 - PP TO FRAMAT BUFFER
  60. *
  61. * 12/LENGTH OF BUFFER (LIMIT)
  62. * 24/ADDRESS OF IN/OUT POINTERS
  63. * 24/ADDRESS OF BUFFER
  64. *
  65. * WORD 4 - FRAMAT TO PP BUFFER
  66. *
  67. * 12/LENGTH OF BUFFER (LIMIT)
  68. * 24/ADDRESS OF IN/OUT POINTERS
  69. * 24/ADDRESS OF BUFFER
  70. *
  71. * WORD 5 - SITES FOR THIS 2550
  72. *
  73. * 12/DSN FIRST SITE,
  74. * 12/NUMBER OF SITES,
  75. * 12/2550 S(D),
  76. * 12/2550 SYSTEM NUMBER,
  77. * 12/DPNC S(D)
  78. * /--- BLOCK IDENT 00 000 86/05/28 13.59
  79. SPACE 5,11
  80. *** EST ENTRY FOR 2550.
  81. *
  82. *T, 12/ , 12/00CH, 12/YYZZ, 12/*FE*, 12/E000
  83. *
  84. * YY - 2550 ORDINAL
  85. * ZZ - NUMBER OF TRUNKS CONNECTED TO 2550
  86. SPACE 5,11
  87. ** INPUT REGISTER FORMAT
  88. *
  89. *T 18/*DSN*, 6/CP, 12/TYPE, 12/BASE, 12/ORDINAL
  90. *
  91. * TYPE = 0 - DRIVER
  92. * BASE = BASE ADDRESS FOR CM TABLES
  93. * ORDINAL = PP ORDINAL
  94. * TYPE = EST ORDINAL - RELOAD THAT 2550
  95. * BASE = S(D)
  96. * ORDINAL = DPNC S(D)
  97. SPACE 5,11
  98. ** SENSE SWITCH USAGE
  99. *
  100. * SSW1 = DISABLE AUTOMATIC RELOAD OF FAILED 2550S
  101.  
  102. * COMMON DECKS
  103.  
  104. QUAL$ EQU 1 DISABLE COMDECK AUTO-QUALIFY
  105.  
  106. *CALL AIDTEXT
  107. .PTEXT IFGE OSLEV,562D NOS V2
  108. *CALL PTEXT
  109. .PTEXT ENDIF
  110. *CALL COMPMAC
  111. *CALL COMPCHI
  112. QUAL CPS
  113. *CALL COMSCPS
  114. QUAL *
  115. QUAL MSP
  116. *CALL COMSMSP
  117. QUAL *
  118. *CALL COMSSSD
  119.  
  120. .NOS501 IFGE OSLEV,501D
  121. CHRV EQU /MSP/CHRV
  122. .NOS501 ENDIF
  123.  
  124. QUAL PLAT
  125. BASE D
  126. *CALL PLAP501
  127. *CALL PLASRWX
  128. *CALL SYSCON
  129. *CALL PARAMC
  130. *CALL PCFTEXT
  131. BASE *
  132. QUAL *
  133. * /--- BLOCK DEFINES 00 000 86/05/28 14.02
  134. 2550 TITLE DEFINITIONS.
  135.  
  136. MACROS SPACE 5,11
  137. ** NWC - NETWORK CHARACTER
  138. *
  139. * DEFINE NETWORK VALUE OF A CHARACTER
  140. * THIS MACRO ADDS A PARITY BIT AND
  141. * REFLECTS THE BITS OF THE CHARACTER
  142. *
  143. *SYM NWC COD
  144. *
  145. * SYM - NAME TO EQUATE CHARACTER
  146. * COD - ASCII CODE OF CHARACTER
  147.  
  148. MACRO NWC,S,A
  149. .1 MICRO 1,1, A
  150. .3 MICRO 1,, A
  151. .5 MICRO 0#".3"+1,1, 0110100110010110100101100110100110010110011
  152. ,01001011010011001011010010110011010010110100110010110011010011001011010
  153. ,01011001101001
  154. .2 MICRO 0#".1"+8*".5"+1,1, 084C2A6E195D3B7F
  155. .1 MICRO 2,1, A
  156. .3 MICRO 0#".1"+1,1, 084C2A6E195D3B7F
  157. S EQU 0#".3"".2"
  158. ENDM
  159.  
  160.  
  161. ** OVERLAY - DEFINE AN OVERLAY
  162. *
  163. *NAME OVERLAY TITLE
  164.  
  165.  
  166. OVN MICRO 1,, 4X FIRST TWO CHARACTERS OF NAME
  167. OVI SET 0 OVERLAY COUNT
  168.  
  169. PURGMAC OVERLAY
  170. MACRO OVERLAY,NAM,TTL
  171. OVI SET OVI+1
  172. .O MICRO OVI,1, ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
  173. NAM MICRO 1,, "OVN"_".O"
  174. NAM TITLE "NAM" - TTL
  175. QUAL NAM
  176. IDENT "NAM",NAM_X TTL
  177. COMMENT DSN - TTL
  178. COMMENT COPYRIGHT CONTROL DATA CORP. 1982.
  179. OVL EQU 3R"NAM"
  180. ENDM
  181.  
  182. * /--- BLOCK DEFINES 00 000 86/05/28 14.02
  183. SPACE 5,11
  184. * ASSEMBLY CONSTANTS
  185.  
  186. DC EQU 0 DDP CHANNEL NUMBER
  187. CH EQU 0 2550 CHANNEL NUMBER
  188. DSDP EQU 2RD4 DDP EQUIPMENT NAME
  189. DSFE EQU 2RFE 2250 NAME FOR NETWORK
  190. PTRD EQU 12 FRAMAT POINTER UPDATE DELAY
  191. IBUFL EQU 102D INPUT BUFFER LENGTH FROM 2550
  192. OBUFL EQU 98D OUTPUT BUFFER LENGTH TO 2550
  193. MOBL EQU OBUFL MAX OUTPUT BLOCK LENGTH TO 2550
  194. ERRNG 100D-MOBL PP-TO-2550 BLOCK SIZE TOO LARGE
  195. ERRNG OBUFL-MOBL OUTPUT BLOCK OVERFLOWS BUFFER
  196. TBUFL EQU 90D MAXIMUM FRAMAT TO PP BUFFER
  197. OVLL EQU 240 LENGTH OF OVERLAY BUFFER
  198. MXNPU EQU 2 NUMBER OF 2550S PER PP
  199. MXREL EQU 5 MAXIMUM RE-LOADS OF A 2550
  200. DEBUG EQU 0 NON-ZERO IF DEBUGGING ENABLED
  201.  
  202. * INSTRUCTIONS USED AS CONSTANTS
  203.  
  204. RJMI EQU 0200 RJM
  205. UJNI EQU 0300 UJN
  206. SHNI EQU 1000 SHN
  207. LDNI EQU 1400 LDN
  208. PSNI EQU 2400
  209.  
  210. * ASCII CHARACTERS
  211.  
  212. ESC NWC 1B ESC
  213. A.A NWC 61 A (LC)
  214. A.UA NWC 41 A (UC)
  215. A.C NWC 63 C (LC)
  216. A.D NWC 64 D (LC)
  217. A.UD NWC 44 D (UC)
  218. A.I NWC 69 I (LC)
  219. A.IU NWC 49 I (UC)
  220. A.L NWC 6C L (LC)
  221. A.O NWC 6F O (LC)
  222. A.P NWC 70 P (LC)
  223. A.T NWC 74 T (LC)
  224. A.UT NWC 54 T (UC)
  225. A.V NWC 76 V (LC)
  226. A.UV NWC 56 V (UC)
  227. A.7 NWC 37 7
  228. A.COMMA NWC 2C ,
  229.  
  230. * ESCAPE MODE KEYS.
  231.  
  232. OFFKEY EQU 1777*2 OFFKEY FROM THE TERMINAL
  233. * /--- BLOCK DIRECT CEL 00 000 82/12/02 21.37
  234.  
  235. ** DIRECT CELLS
  236.  
  237. CN EQU 15 - 21 CM WORD STORAGE
  238. AB EQU CN (USED BY CLD / PRESET ONLY)
  239. KY EQU 22 KEY
  240. PT EQU 22 POINTER FOR DAYFILE MESSAGES
  241.  
  242. * START OF DIRECT CELLS RESET FOR EACH 2550
  243.  
  244. CB EQU 23 BASE CONNECTION (INDEX IN TST)
  245. EQ EQU 24 2550 EQUIPMENT NUMBER
  246. SN EQU 25 SWITCH NUMBER
  247. SB EQU 26 BASE STATION NUMBER
  248.  
  249. * PP TO FRAMAT ECS POINTERS
  250.  
  251. FP1 EQU 27 - 30 IN/OUT POINTERS ESM ADDRESS
  252. FB1 EQU 31 - 32 ECS BUFFER ADDRESS
  253. FI1 EQU 33 IN POINTER
  254. FO1 EQU 34 OUT POINTER
  255.  
  256. * FRAMAT TO PP ECS POINTERS
  257.  
  258. FP2 EQU 35 - 36 IN/OUT POINTERS ESM ADDRESS
  259. FB2 EQU 37 - 40 ECS BUFFER ADDRESS
  260. FI2 EQU 41 IN POINTER
  261. FO2 EQU 42 OUT POINTER
  262.  
  263. * END OF DIRECT CELLS RESET FOR EACH 2550
  264.  
  265. BT EQU 43 - 44 ECS ADDRESS OF POLLING LIST
  266. KB EQU 45 - 46 ECS ADDRESS OF KEY BUFFER
  267. IC EQU 47 6671 BUFFERED CHARACTER COUNT
  268. NI EQU IC NPU INDEX
  269. *IR EQU 50 - 54 INPUT REGISTER
  270. TB EQU 53 BASE ADDRESS OF CM TABLE
  271. PO EQU 54 PP ORDINAL
  272. IP EQU 57 INPUT BUFFER POINTER
  273. IL EQU 60 INPUT BUFFER LENGTH
  274. PL EQU 61 TERMINAL PACKET LENGTH
  275. OL EQU 62 OUTPUT BUFFER LENGTH
  276. FL1 EQU 63 LENGTH OF BUFFER 1 (LIMIT)
  277. FL2 EQU 64 LENGTH OF BUFFER 2 (LIMIT)
  278. ST EQU 65 STATION NUMBER
  279. OD EQU 66 OUTPUT DELAY COUNTER
  280. SI EQU 67 STATION INCREMENT FOR ALT S(D)
  281. * /--- BLOCK NETWORK 00 000 86/05/28 14.03
  282. NET SPACE 5,11
  283. ** NETWORK DEFINITIONS
  284.  
  285. * TERMINAL COMMAND BLOCK DEFINITIONS
  286.  
  287. TCPE EQU 0#04 2741 PARITY ERROR
  288. TCBR EQU 0#06 BREAK RECEIVED
  289. TCBA EQU 0#06 BREAK ACKNOWLEDGE
  290. TCLD EQU 0#0C LINE DROP
  291. TCHO EQU 0#12 HOLD OUTPUT
  292. TCSO EQU 0#14 SEND OUTPUT
  293. TCAO EQU 0#34 ABORT OUTPUT
  294.  
  295. * MISCELLANEOUS CONSTANTS.
  296.  
  297. NWTT EQU 0#3D NETWORK TERMINAL TYPE
  298. TXTT EQU 0#3F 120 CPS TEKTRONIX TERMINAL TYPE
  299. BFCH EQU 277 PARITY ERROR CHARACTER
  300. WAIT EQU 7777 CHANNEL DELAY TIME
  301. DMTX EQU 10D+1 2550 DEADMAN TIMER IN SECONDS
  302. EOM EQU 4000 END OF MESSAGE FLAG
  303. NPUS EQU 0#146 2550 PRESET DATA STARTING ADDR
  304. MXOTM EQU 100D TIME-OUT FOR MSGS TO 2550
  305.  
  306. * /--- BLOCK NETWORK 00 000 86/05/28 14.04
  307.  
  308. * ORDER WORDS.
  309.  
  310. WRT EQU 3 WRT DATA TO 2550
  311. NRI EQU 9D NOT READY FOR INPUT
  312.  
  313. * COUPLER STATUS
  314.  
  315. CNL EQU 4 2550 STATUS REGISTER LOADED
  316. ERRF EQU 6323 COUPLER STATUS REGISTER ERROR
  317.  
  318. * 2550 STATUS.
  319.  
  320. IDL EQU 1 IDLE - KEEP ALIVE
  321. INA EQU 2 INPUT AVAILABLE
  322. RYO EQU 4 READY FOR OUTPUT
  323. NRY EQU 7 NOT READY FOR OUTPUT
  324. RDP EQU 10 READY FOR DUMP
  325.  
  326. * FUNCTION CODES.
  327.  
  328. IND EQU 3 INPUT DATA
  329. INS EQU 4 INPUT SOFTWARE STATUS
  330. INC EQU 5 INPUT COUPLER STATUS
  331. INO EQU 6 INPUT ORDER WORD
  332. IPG EQU 7 INPUT PROGRAM
  333. FCNL EQU IPG LIMIT OF INPUT FUNCTIONS
  334. OMO EQU 10 OUTPUT MEMORY ADDRESS 0
  335. OMT EQU 11 OUTPUT MEMORY ADDRESS 1
  336. OTD EQU 14 OUTPUT DATA
  337. OPG EQU 15 OUTPUT PROGRAM
  338. OTO EQU 16 OUTPUT ORDER WORD
  339. SNU EQU 40 START 2550
  340. CNU EQU 200 CLEAR 2550
  341. CLC EQU 400 CLEAR COUPLER
  342.  
  343. * 2550 CHANNEL ABORT CODES.
  344.  
  345. FTOE EQU 1 FUNCTION TIMEOUT
  346. FULE EQU 2 CHANNEL EMPTY ON INPUT ATTEMPT
  347. DMTE EQU 3 2550 DEADMAN TIMEOUT
  348. OUTE EQU 4 INCOMPLETE OUTPUT TRANSFER
  349. INCE EQU 5 NO EOM ON INPUT
  350. INHE EQU 6 HUNG ON INPUT
  351. CSTE EQU 7 BAD COUPLER STATUS
  352. CMPE EQU 10 COMPARE ERROR ON LOAD
  353. NSTE EQU 11 INVALID 2550 STATUS
  354. NFFE EQU 12 LOAD FILE FORMAT ERROR
  355. OTME EQU 13 EXCEEDED TIME LIMIT FOR OUTPUT BLOCK
  356. OPLE EQU 14 LOAD BY OPERATOR REQUEST
  357.  
  358. * /--- BLOCK PLATO 00 000 86/05/28 14.04
  359. PLA SPACE 5,11
  360. ** PLATO DEFINITIONS
  361.  
  362. DSNI EQU /PLAT/DSNI ECS ADDRESS OF POINTERS
  363. OFKY EQU /PLAT/OFFKEY*2 OFF KEY
  364. SLKY EQU /PLAT/SSLKEY*2 SINGLE STATION LOGOFF KEY
  365. STBKL EQU /PLAT/PSYSLTH STATION BANK LENGTH
  366. NXKY EQU 26*2 NEXT KEY
  367. STKY EQU 32*2 STOP KEY
  368. ST1KY EQU 72*2 STOP1 KEY
  369. TTKY EQU 0#8C TERMINAL TYPE ECHO KEY
  370. SPACE 4,4
  371. * DSN ERROR CODES - 40 ADDED IF ST HAS HEX VALUE
  372.  
  373. DFPE EQU 1 DSN - FRAMAT POINTER ERROR
  374. DBOE EQU 2 DSN - BUFFER OVERFLOW
  375. BNAE EQU 3 BAD NETWORK ADDRESS
  376. USME EQU 4+40 UNKNOWN SYSTEM MESSAGE
  377. UTCE EQU 5+40 UNKNOWN TERMINAL COMMAND
  378. DERE EQU 6 ECS READ ERROR
  379. DEWE EQU 7 ECS WRITE ERROR
  380. LNFE EQU 10 LOAD FILE NOT FOUND
  381. OCME EQU 11 OVERLAYS MUST BE CM RESIDENT
  382. IUAE EQU 12 ILLEGAL USER ACCESS
  383. SOTE EQU 13 SITES OVERFLOW PP TABLES
  384. PIUE EQU 14 PORT IN USE
  385. TTBE EQU 15 T(D) TOO BIG
  386. NMLE EQU 16 NET MSG LENGTH ERROR
  387. NSBE EQU 17 NET STAT TYPE/CODE BAD
  388. ILFE EQU 20 INITIAL LOADING FAILURE
  389. LDRE EQU 21 LINE DROP
  390. PMLE EQU 22 PLATO MSG LENGTH ERROR
  391.  
  392. * ECS/ESM MODE WORD / BIT
  393.  
  394. .1 SET /PLAT/ESMP/12D
  395. ESMW EQU 4-.1 BYTE IN *CPUL*
  396. ESMB EQU /PLAT/ESMP-12D*.1 BIT IN THAT BYTE
  397. * /--- BLOCK MAIN 00 000 86/05/28 14.18
  398. MAI TITLE MAI - MAIN PROCESSING LOOP.
  399. MAI SPACE 5,11
  400. ** MAI - MAIN PROCESSING LOOP
  401.  
  402. ORG PPFW
  403.  
  404. MAI RJM /PRESET/PRS PRESET PROGRAM
  405.  
  406. * MAIN LOOP
  407.  
  408. MAI1 RJM UPD UPDATE IN/OUT POINTERS
  409. MAI2 RJM COD CHECK OUTPUT DELAYS
  410. RJM RID READ INPUT DATA
  411. NJN MAI3 IF NO DATA
  412. RJM PIB PROCESS INPUT BLOCK
  413. MAI3 LDD OD CHECK OUTPUT BEING HELD
  414. ZJN MAI4 IF NO HOLD IN PROGRESS
  415. LPN 1
  416. ZJN MAI6 IF DELAY NOT EXPIRED
  417. RJM FOB FLUSH OUTPUT BUFFER (IF ANY)
  418. UJN MAI5
  419.  
  420. MAI4 RJM BOD BUILD OUTPUT BLOCKS
  421. MAI5 LDD OD
  422. NJN MAI6 IF OUTPUT BEING HELD
  423. RJM SNP SWITCH TO NEXT NPU
  424. NJN MAI2 IF NOT A FULL CYCLE
  425.  
  426. * COMPUTE CYCLE TIME
  427.  
  428. MAI6 LDC RTCL
  429. CRD CM
  430. LDC 0 START TIME WITH THIS 2550
  431. .MAIB EQU *-1
  432. SBD CM+1
  433. MJN MAI8.1 IF CLOCK WRAP AROUND
  434. ZJN MAI8.1
  435. ADC -10000
  436. MAI8.1 ADK MXOTM
  437. PJN MAI8.2 IF TIME LIMIT NOT EXCEEDED
  438. LDN OTME OUTPUT REJECT TIMEOUT
  439. LJM MXE PROCESS ERROR
  440.  
  441. * WRITE STATISTICS / PAUSE
  442.  
  443. MAI8.2 BSS 0
  444. RJM UCS
  445. RJM PSE PAUSE
  446. NJN MAI9 IF ERROR FLAG SET
  447.  
  448. * UPDATE MIN PP-TO-2550 BLOCK TIME IN SUBR *BOD*
  449.  
  450. LDD RA READ VALUE FROM JOB COMM. AREA
  451. SHN 6
  452. ADN PARAMS
  453. CRD CM
  454. LDD CM MIN MSEC BETWEEN PP-2550 BLKS
  455. STM BODT FOR SUBTRACTION IN SUBR *BOD*
  456. LDD CM+1 NUM OF WORDS FREE IN FULL BLK
  457. STM BODS FOR ADDITION IN SUBR *BOD*
  458. LJM MAI1 CYCLE AGAIN
  459.  
  460. MAI9 LDN 0
  461. UJN TER1
  462. TER SPACE 5,11
  463. ** TER - TERMINATION PROCESS
  464.  
  465.  
  466. TER LDN 1
  467. TER1 STM TERT SET TERMINATION TYPE
  468. ADD PO
  469. NJN TER3 IF NOT MAIN PP OR FATAL ERROR
  470. TER2 RJM UPD WAIT FOR OPERATOR COMMAND
  471. RJM PSE
  472. ZJN TER2 IF ERROR FLAG IS NOT SET
  473.  
  474. * CALL TERMINATION OVERLAY
  475.  
  476. TER3 EXECUTE TER,=
  477. LDC /TER/OVL
  478. RJM EXR
  479. * /--- BLOCK UCS 00 000 84/12/03 17.00
  480. UCS SPACE 5,12
  481. ** UCS - UPDATE CM STATISTICS.
  482. *
  483. * UPDATES STATS FOR ALL NPUS CONNECTED TO PP.
  484. *
  485. * USES - CM..CM+4, CN..CN+4, T1
  486. *
  487. UCS SUBR
  488. LDN 0
  489. STD T1
  490.  
  491. UCS1 BSS 0
  492. LMM .SNPA NUMBER OF NPUS
  493. ZJN UCSX -- IF NO MORE NPUS
  494.  
  495. LDM NUSR,T1 NUMBER OF USERS ON NPU
  496. STD CM
  497. LDM CSTS,T1 COUPLER STATUS
  498. STD CM+1
  499. LDM SSTS,T1 CCP SOFTWARE STATUS
  500. STD CM+2
  501. LDM NCYC,T1 CYCLE TIME FOR THIS NPU
  502. STD CM+3
  503. LDN 0 UNUSED
  504. STD CM+4
  505.  
  506. LDM NNBI,T1 NUMBER OF BLOCKS INPUT (RCVD)
  507. STD CN
  508. LDM NNBO,T1 NUMBER OF BLOCKS OUTPUT (SENT)
  509. STD CN+1
  510. LDM NNOR,T1 NUMBER OF OUTPUT REJECTS
  511. STD CN+2
  512. LDM NLBS,T1 SIZE OF LAST BLOCK
  513. STD CN+3
  514. LDM NPPB,T1 NUMBER OF PACKETS IN LAST BLOCK
  515. STD CN+4
  516.  
  517. LDD RA
  518. SHN 5
  519. ADD T1 NPU INDEX
  520. SHN 1
  521. ADM UMTB OFFSET TO STATS FOR THIS PP
  522. CWD CM WRITE FIRST WORD
  523. ADN 1
  524. CWD CN WRITE SECOND WORD
  525.  
  526. AOD T1 INCR TO NEXT NPU
  527. LJM UCS1 -- TOP OF LOOP
  528. * /--- BLOCK ABO 00 000 82/03/29 12.01
  529. TITLE PLATO INTERFACE ROUTINES.
  530. ABO SPACE 5,11
  531. ** ABO - ABORT OUTPUT TO TERMINAL
  532. *
  533. * AN ABORT ACKNOWLEDGE IS SEND TO THE FRAMATTER
  534. * AND A TERMINAL COMMAND INDICATING ABORT OUTPUT
  535. * IS SENT TO THE TERMINAL
  536.  
  537.  
  538. ABO SUBR
  539. LDM TST,ST
  540. ZJN ABO1 IF TERMINAL NOT ACTIVE
  541. LPC -2000 SET PERMISSION TO SEND SENT
  542. LMC 2000
  543. STM TST,ST
  544. LDK TCAO TERMINAL CMND - ABORT OUTPUT
  545. RJM STC SEND TERMINAL COMMAND
  546. LDN 0 CLEAR OUTPUT DELAY
  547. ABO1 STM TOD,ST
  548. LDC 6000 SET ABORT OUTPUT CODE
  549. STM BUF
  550. LDD ST
  551. SBD CB
  552. ADD SB
  553. STM NETA SET STATION NUMBER
  554. LDN 1
  555. STM NETC SET CPU WORD COUNT
  556. RJM BFO SEND COMMAND TO FRAMATTER
  557. LJM ABOX EXIT
  558. * /--- BLOCK BOD 00 000 86/05/28 14.05
  559. BOD SPACE 5,11
  560. ** BOD - BUILD OUTPUT DATA BLOCKS FOR NETWORK
  561. *
  562. * ENTRY - (OL) - CURRENT OUTPUT BUFFER LENGTH
  563.  
  564.  
  565. BODT CON 20D MIN MSEC BETWEEN PP-2550 BLKS
  566.  
  567. BOD6 BSS 0
  568. LDD OL OFFSET INTO OUTPUT BUFFER
  569. ZJN BODX -- EMPTY, EXIT
  570. SBK MOBL MINUS MAX BLOCK LENGTH
  571. ADC 4+31D-1 (DEFAULT VALUE FOR ',FULLNESS',)
  572. BODS EQU *-1
  573. PJN BOD8 -- NOT ENOUGH ROOM, SEND IT
  574. LDK RTCL REAL TIME CLOCK
  575. CRD CM
  576. LDD CM+4 LOW-ORDER OF MSEC CLOCK
  577. SBM NTIM,NI LAST TIME A BLOCK WAS SENT
  578. PJN BOD7 -- NO CLOCK WRAP-AROUND
  579. ADC 10000B ADJUST FOR WRAP-AROUND
  580. BOD7 BSS 0
  581. SBM BODT MINUS MIN TIME BETWEEN BLOCKS
  582. PJN BOD8 -- TIME EXPIRED, SEND BLOCK
  583. RJM PSE PAUSE FOR STORAGE MOVE
  584. UJN BOD1 -- RE-CHECK PLATO-PP BUFFER
  585.  
  586. BOD8 RJM FOB FLUSH OUTPUT BUFFER
  587.  
  588. BOD SUBR
  589. BOD1 LDC MOBL COMPUTE SPACE LEFT IN BUFFER
  590. SBD OL
  591. STD T4
  592. EXECUTE BFI,=
  593.  
  594. LDC 0 CHECK IF *BFI* ALREADY LOADED
  595. BODC EQU *-1 (0 - *BFI* NOT LOADED)
  596. * (1 - *BFI* IS LOADED)
  597. ZJN BOD1.5 IF NOT LOADED
  598. RJM OVL+6 EXECUTE *BFI*
  599. UJN BOD1.7 PROCESS RESPONSE
  600.  
  601. BOD1.5 LDC /BFI/OVL LOAD *BFI*
  602. RJM EXR GET NEXT BLOCK FROM FRAMATTER
  603. BOD1.7 ZJP BOD6 -- NO DATA RCVD FROM CIRC BUFF
  604. LDD OL CURRENT INDEX INTO OUTPUT BUFF
  605. NJN BOD1.0 -- ALREADY SOMETHING IN THERE
  606. STM NPPB,NI ELSE, ZERO PACKET COUNT TOO
  607. BOD1.0 AOM NPPB,NI INCR NUMBER OF PACKETS IN BLOCK
  608. LDM NETA
  609. SBD SB BIAS BY BASE STATION
  610. ADD CB
  611. STD ST SET PLATO STATION NUMBER
  612. LDM NETP
  613. SBN 2
  614. PJN BOD2 IF DATA BLOCK
  615.  
  616. * PROCESS CONTROL MESSAGE
  617.  
  618. LDM BUF
  619. STD T1
  620. SBN BODL
  621. PJN BOD1.1 IF OUT OF RANGE
  622. LDM BODB,T1
  623. STM BODA
  624. RJM **
  625. BODA EQU *-1
  626. BOD1.1 UJP BOD1
  627.  
  628. * /--- BLOCK BOD 00 000 86/05/28 14.05
  629.  
  630. * PROCESS DATA BLOCKS
  631.  
  632. BOD2 ADN 1
  633. STD T6 SET PPU WORD COUNT
  634.  
  635. * COMPUTE OUTPUT DELAY BASED ON TERMINAL SPEED
  636.  
  637. SHN 3 8 MS/CHARACTER FOR 1200 BAUD
  638. STD T1
  639. LDM TDT,ST
  640. SHN 21-13
  641. PJN BOD2.1 IF 1200 BAUD TERMINAL
  642. LDD T6
  643. SHN 5 32 MS/CHARACTER FOR 300 BAUD
  644. STD T1
  645. BOD2.1 LDD T1
  646. RAM TOD,ST
  647. LDM TST,ST CLEAR PERMISSION TO SEND SENT
  648. ZJN BOD1.1 IF TERMINAL NOT ACTIVE
  649. LPC -2000
  650. STM TST,ST
  651.  
  652. LDD T6 LENGTH TO BE OUTPUT
  653. RJM BTH BUILD TERMINAL HEADER
  654.  
  655. * MOVE DATA TO NETWORK BUFFER
  656.  
  657. LDN 0
  658. STD T1
  659. BOD4 LDM BUF+5,T1 GET NEXT BYTE
  660. RJM INV INVERT BITS
  661. STM OBUF,OL
  662. AOD OL
  663. AOD T1
  664. LMD T6
  665. NJN BOD4 IF MORE DATA
  666. LJM BOD1 PROCESS NEXT BLOCK FROM FRAMAT
  667.  
  668. BODB BSS 0 CONTROL FUNCTION PROCESSORS
  669. LOC 0
  670. CON NUL IGNORE FUNCTION
  671. CON ABO ABORT OUTPUT
  672. CON LGO LOG OUT USER
  673. CON RTT RETURN TERMINAL TYPE
  674. CON SNK SWITCH TO NEW KEY TABLE
  675. BODL EQU *
  676. LOC *O
  677.  
  678. * /--- BLOCK BFO 00 000 79/07/05 14.45
  679. BFO SPACE 5,11
  680. ** BFO - WRITE DATA TO CIRCULAR BUFFER
  681. *
  682. * ON ENTRY - FI1 = PPU IN POINTER
  683. * FO1 = CPU OUT POINTER
  684. * FL1 = LIMIT POINTER
  685. * FP1 = ECS ADDR OF IN/OUT POINTERS
  686. * FB1 = ECS ADDRESS OF BUFFER
  687. * BUF = PPU BUFFER
  688. *
  689. * ON EXIT - (A) = NON-ZERO IF BUFFER OVERFLOW
  690.  
  691.  
  692. * INCREMENT PPU CIRCULAR BUFFER POINTER
  693.  
  694. BFO7 LDM NETC GET CM WORD COUNT
  695. RAD FI1
  696. SBD FL1 CHECK FOR WRAP AROUND
  697. MJN BFO8 IF NO WRAPPING
  698. STD FI1 UPDATE POINTER
  699.  
  700. * UPDATE *IN* POINTER IN ECS
  701.  
  702. BFO8 LDN ZERL
  703. CRD CN
  704. LDD FI1
  705. STD CN+4
  706. LDD FP1+1 SET ECS POINTER ADDRESS
  707. STD T2
  708. LDD FP1
  709. STD T1
  710. LDN 1 SET WORD COUNT
  711. STD T3
  712. LDN CN (A) = PP ADDRESS
  713. RJM WECS
  714. BFO9 LDN 0 (A) = 0, DATA TRANSFERRED
  715.  
  716. BFO SUBR
  717.  
  718. * CHECK IF SUFFICIENT FREE SPACE WITHIN BUFFER
  719.  
  720. LDD FL1 CHECK IF BUFFER EXISTS
  721. ZJN BFO3 IF NO BUFFER
  722. LDD FO1
  723. SBD FI1 (OUT) - (IN)
  724. ZJN BFO1 IF BUFFER IS EMPTY
  725. PJN BFO2 IF OUT .GT. IN
  726. BFO1 ADD FL1 COMPUTE FREE SPACE
  727. BFO2 SBM NETC CHECK IF SUFFICIENT SPACE
  728. SBN 1 PROTECT AGAINST IN = OUT
  729. PJN BFO4 IF SPACE FOR NEW BUFFER
  730.  
  731. * NO ROOM FOR THIS DATA IN THE BUFFER
  732.  
  733. BFO3 LDN DBOE DSN - BUFFER OVERFLOW
  734. RJM MES
  735. LDN 1
  736. UJN BFOX EXIT
  737.  
  738. * SET UP FOR BLOCK TRANSFER
  739.  
  740. BFO4 LDD FB1+1 SET ECS ADDRESS
  741. ADD FI1
  742. STD T2
  743. SHN -14
  744. ADD FB1
  745. STD T1
  746. * /--- BLOCK BFO 00 000 79/02/22 11.20
  747.  
  748. * CHECK IF CAN TRANSFER BLOCK IN ONE WRITE
  749.  
  750. LDM NETC GET NUMBER OF WORDS IN BLOCK
  751. STD T3
  752. ADD FI1
  753. SBD FL1
  754. PJN BFO5 IF BUFFER WRAPS
  755. LDC BUF
  756. RJM WECS WRITE THE DATA BLOCK
  757. NJN BFO4.8 IF ECS ERROR
  758. LJM BFO7 UPDATE *IN* POINTER
  759.  
  760. BFO4.8 LJM BFO9 EXIT
  761.  
  762. * WRITE BLOCK IN TWO SECTIONS
  763.  
  764. BFO5 LDD FL1 COMPUTE LENGTH OF FIRST WRITE
  765. SBD FI1
  766. STD T3
  767. LDC BUF
  768. RJM WECS WRITE FIRST PART
  769. NJN BFO4.8 IF ECS ERROR
  770. LDD T3 COMPUTE NEXT PP ADDR TO WRITE
  771. SHN 2
  772. ADD T3
  773. ADC BUF
  774. STM BFOA SET PP ADDRESS
  775. LDD FB1+1 SET ECS ADDRESS
  776. STD T2
  777. LDD FB1
  778. STD T1
  779. LDM NETC
  780. SBD T3
  781. ZJN BFO6 IF TRANSFER COMPLETE
  782. STD T3
  783. LDC ** (A) = PP ADDRESS
  784. BFOA EQU *-1
  785. RJM WECS WRITE SECOND BLOCK
  786. NJN BFO4.8 IF ECS ERROR
  787. BFO6 LJM BFO7 UPDATE POINTERS
  788.  
  789. * /--- BLOCK LOT 00 000 82/03/25 17.23
  790. LOT SPACE 5,11
  791. ** LOT - LOG OFF TERMINALS
  792. *
  793. * ALL TERMINALS SIGNED ON TO PLATO ARE SIGNED OFF
  794.  
  795.  
  796. LOT SUBR
  797. LDM INIC
  798. NJN LOTX IF NOT INITIALIZED
  799. STM LOTB INITIALIZE USERS LOST TO 0
  800. LDD NI
  801. SHN 4
  802. STD T1
  803. LDM NCB,T1 FETCH FIRST CONNECTION
  804. STD ST
  805. LDM NCB+20,T1 FETCH LAST CONNECTION
  806. STD SI
  807. LDC SLKY
  808. STD KY SET KEY TO OFF KEY
  809. LOT1 LDM TST,ST
  810. ZJN LOT2 IF STATION NOT ACTIVE
  811. AOM LOTB INCREMENT USER LOST COUNT
  812. LDN 0 (A) = FORCED STORE
  813. STM TST,ST CLEAR STATION ACTIVE
  814. RJM SPK STORE PLATO KEY
  815. LOT2 AOD ST
  816. LMD SI
  817. NJN LOT1 IF MORE TERMINALS
  818. LDM NEST,NI GET EQUIP NUMBER
  819. RJM C2D
  820. STM LOTA+1 *EQXX YY USERS LOST.*
  821. LDM LOTB USER LOST COUNTER
  822. ZJN LOT9 EXIT IF NO USERS LOST
  823. RJM C2D
  824. STM LOTA+3 DITTO FOR YY FIELD ABOVE
  825. LDK LOTA (A) = ADDR OF MESSAGE
  826. RJM DFM
  827. LOT9 UJP LOTX -- EXIT SUBROUTINE
  828. *
  829. LOTA DATA C*EQXX YY USERS LOST.*
  830. LOTB BSSZ 1 NUMBER USERS LOST
  831. * /--- BLOCK RTT 00 000 82/03/26 14.48
  832. RTT SPACE 5,11
  833. ** RTT - RETURN TERMINAL TYPE
  834. *
  835. * THE TERMINAL TYPE IS SENT TO PLATO AS AN ECHO
  836. * KEY
  837. *
  838. * TERMINAL ECHO KEY = 3/TT, 4/12 (ASCII TYPE)
  839. *
  840. * TT - 0 = ASCII IST
  841. * 1 = CDC 750
  842. * 2 = TEKTRONIX 4014
  843. * 3 = DATASPEED 40
  844.  
  845.  
  846. RTT SUBR
  847. EXECUTE RTT,=
  848. LDC /RTT/OVL
  849. RJM EXR
  850. UJN RTTX EXIT
  851.  
  852. * NETWORK TO PLATO TERMINAL CONVERSION TABLE
  853. *
  854. * 1/0, 3/TT, 8/NT
  855. *
  856. * TT - PLATO ASCII TERMINAL TYPE
  857. * NT - NETWORK TERMINAL TYPE
  858.  
  859. RTTA BSS 0
  860. VFD 1/0,3/0,8/A.I ASCII IST
  861. VFD 1/0,3/0,8/A.IU ASCII IST
  862. VFD 1/0,3/1,8/A.7 CDC 750
  863. VFD 1/0,3/2,8/A.T TEKTRONIX 4014
  864. VFD 1/0,3/2,8/A.UT
  865. VFD 1/0,3/3,8/A.D DATASPEED 40
  866. VFD 1/0,3/3,8/A.UD
  867. VFD 1/0,3/4,8/A.A
  868. VFD 1/0,3/4,8/A.UA
  869. VFD 1/0,3/7,8/A.V
  870. VFD 1/0,3/7,8/A.UV
  871. CON 0
  872.  
  873. * /--- BLOCK SKY 00 000 82/03/24 11.04
  874. SKY SPACE 5,11
  875. ** SKY - SEND KEY TO KEY BUFFER
  876. *
  877. * ON ENTRY - ST = STATION NUMBER
  878. * KY = KEY
  879.  
  880.  
  881. SKY SUBR
  882. LDM TST,ST
  883. SHN 21-10
  884. MJN SKY2 IF TERMINAL IN OVERFLOW STATE
  885. LDN 1 (A) = NON-FORCED STORE
  886. SKY1 RJM SPK STORE PLATO KEY
  887. ZJN SKYX IF KEY STORED
  888. LDC 400 SET TERMINAL IN OVERFLOW STATE
  889. RAM TST,ST
  890. LDN 0 FORCE TO FIRST KEY IN BUFFER
  891. UJN SKY3
  892.  
  893. * STORE KEY IN OVERFLOW BUFFER
  894.  
  895. SKY2 LDN 17 SET KEY COUNT MASK
  896. SKY3 STM SKYA
  897. LDN 2
  898. STD T1
  899. LDD RA READ OVERFLOW KEY BUFFER
  900. SHN 6
  901. ADD TB
  902. ADD ST
  903. ADD ST
  904. CRM CMB,T1
  905. LDM CMB
  906. LPC 17
  907. * LPC 0 IF FIRST KEY
  908. SKYA EQU *-1
  909. ADN 1
  910. STD T2
  911. SBN 10
  912. MJN SKY4 IF ROOM FOR MORE KEYS
  913.  
  914. * COUNT NUMBER OF KEYS LOST
  915.  
  916. EXECUTE KYO,=
  917. LDC /KYO/OVL
  918. RJM EXR
  919. ZJN SKY5 IF KEY BUFFER SHOULD BE UPDATED
  920. UJN SKY6
  921.  
  922. SKY4 LDD KY
  923. STM CMB+1,T2
  924. LDM CMB
  925. SCN 17
  926. LMD T2 SET NEW KEY COUNT
  927. STM CMB
  928.  
  929. * RE-WRITE OVERFLOW KEY BUFFER
  930.  
  931. SKY5 LDD RA
  932. SHN 6
  933. ADD TB
  934. ADD ST
  935. ADD ST
  936. CWM CMB,T1
  937. SKY6 LJM SKYX EXIT
  938.  
  939. SKYB CON 0,0,0 LOST KEY COUNT
  940. * /--- BLOCK SBT 00 000 82/03/29 11.01
  941. SBT SPACE 5,11
  942. ** SBT - SET BIT FOR STATION
  943. *
  944. * ON ENTRY - ST = STATION NUMBER
  945. * BT = ECS ADDRESS OF BIT TABLE
  946.  
  947.  
  948. SBT SUBR
  949.  
  950. * COMPUTE INDEX FOR THIS STATION IN BIT TABLE
  951.  
  952. LDD ST GET STATION NUMBER
  953. SBD CB
  954. ADD SB
  955. STD T1
  956. SHN -5 COMPUTE SITE NUMBER
  957. STD T4
  958. LDD T1
  959. LPN 37 MASK OFF REMAINDER
  960. ADN 4 ADD BIAS TO STARTING BIT
  961. STD T5
  962. LDN 3 INITIALIZE INDEX AT LOW BYTE
  963. STD T6
  964. SBT1 LDD T5 CHECK IF BIT IS IN THIS BYTE
  965. SBN 14
  966. MJN SBT2
  967. STD T5
  968. SOD T6
  969. UJN SBT1
  970.  
  971. * GENERATE MASK FOR APPROPRIATE BIT
  972.  
  973. SBT2 LDC SHNI LOAD SHIFT INSTRUCTION
  974. ADD T5 ATTACH SHIFT COUNT
  975. STM SBTA
  976. LDN 1 SET UP BIT
  977. SBTA SHN 0
  978. STM SBTB SAVE BIT MASK
  979.  
  980. * SET BIT IN ECS TABLE - PERFORM READ-BACK CHECK TO
  981. * PROTECT AGAINST CONFLICT WITH CPU
  982.  
  983. SBT3 LDD BT+1 COMPUTE ECS ADDRESS
  984. ADD T4
  985. STD T2
  986. SHN -14
  987. ADD BT
  988. STD T1
  989. LDN 1 ECS WORD COUNT
  990. STD T3
  991. LDN CN (A) = PP ADDRESS
  992. RJM RECS READ BIT TABLE WORD
  993. NJN SBT4 IF ECS READ ERROR
  994. LDM CN,T6 LOAD BYTE
  995. LPC **
  996. SBTB EQU *-1
  997. NJN SBT4 IF BIT ALREADY SET
  998. LDM CN,T6
  999. LMM SBTB SET THE BIT
  1000. STM CN,T6
  1001. LDD IA MARK THIS PP AS LAST WRITER
  1002. STD CN+4
  1003. LDN CN
  1004. RJM WECS
  1005. NJN SBT4 IF ECS ERROR
  1006. LDN CN
  1007. RJM RECS
  1008. NJN SBT4 IF ECS ERROR
  1009. LDD CN+4
  1010. LMD IA CHECK FOR WRITE CONFLICT
  1011. ZJN SBT4 IF CPU DID NOT OVERWRITE
  1012. LJM SBT3 WRITE AGAIN
  1013.  
  1014. SBT4 LJM SBTX EXIT
  1015. * /--- BLOCK SPK 00 000 82/03/29 12.20
  1016. SPK SPACE 5,11
  1017. ** SPK - STORE PLATO KEY IN KEY BUFFER
  1018. *
  1019. * ENTRY - (A) = 0 - FORCE STORE OF KEY
  1020. * (KY) = KEY
  1021. * (ST) = STATION INDEX
  1022. *
  1023. * EXIT - (A) = 0 IF KEY STORED
  1024.  
  1025.  
  1026. SPK SUBR
  1027. STM SPKA SET FORCE STORE FLAG
  1028.  
  1029. * READ KEY BUFFER FOR THIS STATION
  1030.  
  1031. LDD ST COMPUTE KEY BUFFER ADDRESS
  1032. SBD CB
  1033. ADD SB
  1034. SHN 1
  1035. ADD KB+1
  1036. STD T2 SET ECS ADDRESS
  1037. SHN -14
  1038. ADD KB
  1039. STD T1
  1040. LDN 2 SET ECS WORD COUNT
  1041. STD T3
  1042. LDC CMB (A) = PP ADDRESS
  1043. RJM RECS READ KEY BUFFER
  1044. NJN SPK5 IF ECS ERROR
  1045.  
  1046. * CHECK IF STATION KEY BUFFER FULL
  1047.  
  1048. LDM CMB+4 PPU INDEX IN KEY BUFFER
  1049. SBM CMB+11 CPU INDEX IN KEY BUFFER
  1050. ZJN SPK3 IF CPU INDEX = PPU INDEX
  1051. PJN SPK1
  1052. ADC 10000 TAKE 12 BIT ABSOLUTE VALUE
  1053. SPK1 LPN 3 MASK INDEX
  1054. NJN SPK3 IF NO OVERFLOW
  1055. LDC **
  1056. SPKA EQU *-1
  1057. NJN SPK2 IF NOT FORCED STORE
  1058. LDM CMB+4 OVERWRITE LAST KEY
  1059. UJN SPK4
  1060.  
  1061. SPK5 LDN 0 SHOW KEY STORED
  1062. SPK2 LJM SPKX RETURN
  1063.  
  1064. * ADD KEY TO STATION KEY BUFFER
  1065.  
  1066. SPK3 AOM CMB+4 INCREMENT PPU INDEX
  1067. SPK4 LPN 3 MASK OFF INDEX
  1068. STD T4
  1069. LDD KY MOVE KEY TO KEY BUFFER
  1070. STM CMB,T4
  1071. LDN 1 NUMBER OF WORDS TO WRITE
  1072. STD T3
  1073. LDC CMB (A) = PP ADDRESS
  1074. RJM WECS UPDATE KEY BUFFER
  1075. RJM SBT SET BIT IN POLLING LIST
  1076. UJN SPK5
  1077. * /--- BLOCK SSL 00 000 82/03/29 10.21
  1078. SSL SPACE 5,11
  1079. ** SSL - SINGLE STATION LOGOFF.
  1080. *
  1081. * SEND AN *SSLKEY* TO PLATO AND LOGOUT TO THE NETWORK.
  1082.  
  1083.  
  1084. SSL SUBR ENTRY/EXIT
  1085. LDC SLKY PLATO SINGLE STATION LOGOFF KEY
  1086. STD KY
  1087. LDN 0 FORCE STORE OF KEY
  1088. RJM SPK
  1089. UJN SSLX RETURN
  1090. * /--- BLOCK UPD 00 000 86/05/28 14.07
  1091. UPD SPACE 5,11
  1092. ** UPD - UPDATE IN/OUT POINTERS
  1093. *
  1094. * READ FRAMAT IN/OUT POINTERS EVERY *PTRD*
  1095. * MILLISECONDS.
  1096. *
  1097. * DECREMENT DELAY WHEN 2550 BUFFERS FULL
  1098. *
  1099. * PROCESS OPERATOR REQUESTS
  1100.  
  1101.  
  1102. UPD SUBR
  1103. LDC RTCL
  1104. CRD CM
  1105. LDC **
  1106. UPDA EQU *-1 LAST TIME POINTERS READ
  1107. SBD CM+4
  1108. MJN UPD1 IF NO OVERFLOW
  1109. ZJN UPD1 IF NO OVERFLOW
  1110. ADC -10000
  1111. UPD1 ADN PTRD
  1112. PJN UPDX IF DELAY NOT EXPIRED
  1113. LDD CM+4
  1114. STM UPDA RESET TIMER
  1115. LDN 0
  1116. STD T4 LOOP THROUGH THIS PPS 2550S
  1117. UPD2 LDD T4
  1118. SHN 4
  1119. STD T5 INDEX INTO 2550 INFO
  1120.  
  1121. * UPDATE PP TO FRAMAT POINTERS
  1122.  
  1123. LDC 0
  1124. .UPDB EQU *-1
  1125. ADM NORD,T4
  1126. ADM NORD,T4
  1127. STD T2 OFFSET BY 2 * 2550 ORDINAL
  1128. SHN -14
  1129. ADC 0 EM ADDR OF PP TO FRAM POINTERS
  1130. .UPDA EQU *-1
  1131. STD T1
  1132. LDN 2 NUMBER OF EM WORDS
  1133. STD T3
  1134. LDC BUF (A) = PP ADDRESS
  1135. RJM RECS
  1136. NJN UPD2.1 EXIT ON ECS ERROR
  1137. LDM BUF+4
  1138. STM NFI1,T5
  1139. LDM BUF+5+4
  1140. STM NFO1,T5
  1141.  
  1142. * /--- BLOCK UPD 00 000 86/05/28 14.07
  1143.  
  1144. * UPDATE FRAMAT TO PP POINTERS
  1145.  
  1146. LDC 0
  1147. .UPDD EQU *-1
  1148. ADM NORD,T4
  1149. ADM NORD,T4
  1150. STD T2 OFFSET BY 2 * 2550 ORDINAL
  1151. SHN -14
  1152. ADC 0 EM ADDR OF FRAM TO PP POINTERS
  1153. .UPDC EQU *-1
  1154. STD T1
  1155. LDN 2
  1156. STD T3
  1157. LDC BUF (A) = PP ADDRESS
  1158. RJM RECS
  1159. UPD2.1 NJN UPD2.2 EXIT ON ECS ERROR
  1160. LDM BUF+4
  1161. STM NFI2,T5
  1162. LDM BUF+5+4
  1163. STM NFO2,T5
  1164. AOD T4 NEXT 2550
  1165. LMM .SNPA
  1166. ZJN UPD2.5 IF NO MORE 2550S
  1167. LJM UPD2 NEXT 2550
  1168.  
  1169. UPD2.2 LJM UPDX EXIT
  1170. UPD2.5 EQU *
  1171.  
  1172. * PROCESS 2550 BUFFER FULL CONDITION
  1173.  
  1174. LDD OD
  1175. ZJN UPD4 IF OUTPUT NOT WAITING
  1176. SBN 2
  1177. NJN UPD3 IF DELAY NOT EXPIRED
  1178. LDN 1 SET DELAY EXPIRED
  1179. UPD3 STD OD
  1180.  
  1181. UPD4 LDD RA READ CFO FLAG WORD
  1182. SHN 6
  1183. CRD CM
  1184. ADN DR READ DRIVER REQUEST WORD
  1185. ADD PO
  1186. CRD CN
  1187.  
  1188. * CHECK FOR AN OPERATOR COMMAND
  1189.  
  1190. LDD PO
  1191. NJN UPD5 IF NOT PRIMARY PP
  1192. LDD CM+3
  1193. SHN 21-2
  1194. MJN UPD5 IF NO COMMAND ENTERED
  1195. EXECUTE OPC,=
  1196. LDC /OPC/OVL
  1197. UJN UPD6
  1198.  
  1199. * CHECK FOR MAIN DRIVER PP REQUEST
  1200.  
  1201. UPD5 LDD CN
  1202. ZJN UPD7 IF NO REQUEST PENDING
  1203. EXECUTE OPR,=
  1204. LDC /OPR/OVL
  1205. UPD6 RJM EXR
  1206. UPD7 LJM UPDX EXIT
  1207. * /--- BLOCK BRH 00 000 86/05/28 14.09
  1208. TITLE NETWORK PROCESSING ROUTINES.
  1209. BRH SPACE 5,12
  1210. ** BRH - BUILD ROUTING HEADER.
  1211. *
  1212. * BUILD HEADER FOR SYSTEM MESSAGES.
  1213. *
  1214. * ENTRY - (A) = 6/MSG LENGTH (DATA PORTION),
  1215. * 12/SYSTEM MESSAGE CODE.
  1216. * (OL) = CURRENT INDEX INTO OUTPUT BUFFER.
  1217. *
  1218. * EXIT - (OL) = UPDATED, POINTS TO NEXT MESSAGE.
  1219. * (FOR THAT REASON, THIS MUST BE THE
  1220. * (LAST THING DONE FOR THE CURRENT MSG.)
  1221. *
  1222. * USES - NONE.
  1223. *
  1224.  
  1225. BRH SUBR
  1226. STM OBUF+2,OL STORE SYSTEM MESSAGE CODE
  1227. SHN -12D
  1228. STM OBUF+3,OL STORE MESSAGE LENGTH (DATA)
  1229. ADN 4 ADD LENGTH OF HEADER
  1230. STM OBUF+1,OL STORE TOTAL MESSAGE LTH
  1231. LDM NDS,NI S(D) OF THE DPNC FOR THIS 2550
  1232. STM OBUF,OL
  1233. LDM OBUF+1,OL GET TOTAL MSG LTH
  1234. RAD OL ADVANCE OL TO NEXT MESSAGE
  1235. UJP BRHX -- EXIT
  1236. *
  1237. * /--- BLOCK BTH 00 000 86/05/28 14.10
  1238. BTH SPACE 5,12
  1239. ** BTH - BUILD TERMINAL HEADER.
  1240. *
  1241. * ENTRY - (A) = LENGTH OF DATA PORTION OF MESSAGE,
  1242. * (ST) = TARGET STATION NUMBER,
  1243. * (OL) = CURRENT INDEX INTO OUTPUT BUFFER.
  1244. *
  1245. * EXIT - (OL) = UPDATED, POINTS TO FIRST DATA BYTE.
  1246. *
  1247. * USES - NONE.
  1248. *
  1249. * BUILD 2 PART BINARY SYNC COMM (BSC) HEADER';
  1250. * DESTINATION BLOCK (DB) AND TERMINAL BLOCK (TB).
  1251. * A DB CONSISTS OF A DESTINATION SWITCH ID'; S(D),
  1252. * DB LENGTH (INCL HEADER AND TB'7S) AND ANY NUMBER
  1253. * OF TB'7S FOR THAT SWITCH. A TB IS SIMILAR'; A
  1254. * TERMINAL ID'; T(D), TB LENGTH (DATA ONLY'.) AND
  1255. * THE ACTUAL DATA TO BE SENT (BIT ORDER INVERTED).
  1256. *
  1257. * NOTE'; WE COULD PUT MULTIPLE TB'7S IN A DB, BUT
  1258. * THE ODDS OF RECEIVING THE OUTPUT IN THAT ORDERLY
  1259. * A FASHION ARE SMALL, SO WE DON'7T BOTHER TO CHECK.
  1260.  
  1261. BTH SUBR
  1262. STM OBUF+3,OL STORE 4TH WD -- T(D) LENGTH
  1263. ADN 4 ADD 4 WDS (LTH OF THIS HEADER)
  1264. STM OBUF+1,OL STORE 2ND WD -- S(D) LENGTH
  1265. LDM SDT,ST GET S(D) FOR THIS STATION
  1266. STM OBUF,OL STORE 1ST WD -- S(D)
  1267. LDM TDT,ST GET T(D) FOR THIS STATION
  1268. LPC 377B
  1269. STM OBUF+2,OL STORE 3RD WD -- T(D)
  1270. LDN 4 LTH OF THIS HEADER (AGAIN)
  1271. RAD OL UPDATE OUTPUT BUFFER INDEX
  1272. UJP BTHX -- EXIT
  1273. *
  1274. * /--- BLOCK COD 00 000 86/05/28 14.11
  1275. COD SPACE 5,11
  1276. ** COD - CHECK OUTPUT DELAYS
  1277. *
  1278. * EACH ACTIVE TERMINAL IS CHECKED FOR
  1279. * THE OUTPUT DELAY TIME EXPIRED AND NO
  1280. * INHIBIT OUTPUT PENDING. FOR EACH EXPIRED
  1281. * TERMINAL A PERMISSION TO SEND TO SENT TO
  1282. * THE FRAMATTER.
  1283. *
  1284. * FOR EACH TERMINAL WHOSE KEYS HAVE OVERFLOWED
  1285. * INTO THE OVERFLOW KEY BUFFER, ONE KEY IS GIVEN
  1286. * TO PLATO,S KEY BUFFER IF SPACE IS AVAILABLE.
  1287.  
  1288.  
  1289. COD SUBR
  1290. LDC RTCL
  1291. CRD CN GET REAL TIME CLOCK
  1292. LDD CN+4
  1293. SBM NCOD,NI COMPUTE TIME SINCE LAST CHECK
  1294. PJN COD1 IF NO OVERFLOW
  1295. ADC 10000
  1296. COD1 STD T7 SAVE DELAY
  1297. ZJN CODX IF NO ELAPSED TIME
  1298. LDD CN+4 RESET TIMER FOR NEXT TIME
  1299. STM NCOD,NI SAVE TIME FOR NEXT CYCLE
  1300. LDD CB
  1301. STD ST SET STATION NUMBER
  1302. LDM NMT,NI
  1303. STD SI SET MAXIMUM STATION
  1304. NJN COD3.1 IF SOME ACTIVE TERMINALS
  1305. COD2 UJN CODX EXIT
  1306.  
  1307. * CHECK EACH TERMINAL FOR EXPIRED DELAY
  1308.  
  1309. COD3 AOD ST
  1310. SOD SI
  1311. ZJN COD2 IF NO MORE TERMINALS TO CHECK
  1312. COD3.1 LDM TOD,ST GET CLOCK
  1313. SBD T7
  1314. PJN COD3.2 IF SOME DATA STILL IN NETWORK
  1315. LDN 0
  1316. COD3.2 STM TOD,ST UPDATE CLOCK
  1317. STD T1
  1318. LDM TST,ST
  1319. ZJN COD3 IF TERMINAL NOT ACTIVE
  1320. SHN 21-13
  1321. MJN COD4 IF OUTPUT HOLD SET
  1322. SHN 1
  1323. MJN COD4 IF PERMISSION TO SEND SENT
  1324.  
  1325. * REQUEST MORE OUTPUT IF LESS THAN 500 MS OUTPUT
  1326. * IN NETWORK
  1327.  
  1328. LDD T1
  1329. ADC -500D
  1330. PJN COD4 IF ENOUGH DATA IN NETWORK
  1331. * /--- BLOCK COD 00 000 86/05/28 14.11
  1332.  
  1333. * SEND PERMISSION TO SEND TO FRAMATTER
  1334.  
  1335. LDC 4000
  1336. STM BUF
  1337. LDN 1
  1338. STM NETC SET CPU WORD COUNT
  1339. LDD ST
  1340. SBD CB
  1341. ADD SB BIAS BY BASE STATION
  1342. STM NETA SET STATION NUMBER
  1343. RJM BFO SEND PERMISSION TO SEND
  1344. LDC 2000
  1345. RAM TST,ST SET PERMISSION TO SEND SENT
  1346.  
  1347. * CHECK IF KEY BUFFER OVERFLOWING
  1348.  
  1349. COD4 LDM TST,ST
  1350. SHN 21-10
  1351. PJN COD4.1 IF KEY BUFFER NOT OVERFLOWING
  1352. LDN 2
  1353. STD T1
  1354. LDD RA READ OVERFLOW KEY BUFFER
  1355. SHN 6
  1356. ADD TB
  1357. ADD ST
  1358. ADD ST
  1359. CRM CMB+12,T1
  1360. LDM CMB+12+2 GET FIRST OVERFLOW KEY
  1361. STD KY
  1362. LDN 1 (A) = NON-FORCED STORE
  1363. RJM SPK STORE IN PLATO KEY BUFFER
  1364. ZJN COD4.2 IF KEY STORED
  1365. COD4.1 LJM COD3 PROCESS NEXT TERMINAL
  1366.  
  1367. COD4.2 LDN 2
  1368. STD T1
  1369. SOM CMB+12
  1370. LPN 17
  1371. NJN COD5 IF MORE KEYS LEFT
  1372. STM CMB+12+1 SHOW NO LOST KEYS
  1373. LDM TST,ST
  1374. LPC -400
  1375. STM TST,ST
  1376. UJN COD6 UPDATE OVERFLOW BUFFER
  1377.  
  1378. * SHIFT KEY BUFFER UP ONE KEY
  1379.  
  1380. COD5 LDD MA
  1381. CWM CMB+12+3,T1
  1382. LDD MA
  1383. CRM CMB+12+2,T1
  1384.  
  1385. * UPDATE OVERFLOW KEY BUFFER
  1386.  
  1387. COD6 LDD RA
  1388. SHN 6
  1389. ADD TB
  1390. ADD ST
  1391. ADD ST
  1392. CWM CMB+12,T1
  1393. UJN COD4.1 PROCESS NEXT TERMINAL
  1394. * /--- BLOCK INV 00 000 79/03/07 13.43
  1395. INV SPACE 5,11
  1396. ** INV - INVERT A CHARACTER
  1397. *
  1398. * THE BITS OF AN ASCII CHARACTER ARE INVERTED.
  1399. * THEREFORE BIT 0 BECOMES BIT 7 OR
  1400. * ABCDEFGH BECOMES HGFEDCBA.
  1401. *
  1402. * ENTRY - (A) = CHARACTER TO INVERT
  1403. *
  1404. * EXIT - (A) = INVERTED CHARACTER
  1405.  
  1406.  
  1407. INV SUBR
  1408. LPC 0#FF CLEAR UNWANTED BITS
  1409. SHN 22-0-4
  1410. STD T3 LOW ORDER BITS
  1411. SHN 0-16-0
  1412. STD T2 HIGH ORDER BITS
  1413. LDM INVA,T2
  1414. SHN 4
  1415. LMM INVA,T3
  1416. UJN INVX
  1417.  
  1418. INVA BSS 0
  1419. LOC 0
  1420. DATA 0
  1421. DATA 10
  1422. DATA 4
  1423. DATA 14
  1424. DATA 2
  1425. DATA 12
  1426. DATA 6
  1427. DATA 16
  1428. DATA 1
  1429. DATA 11
  1430. DATA 5
  1431. DATA 15
  1432. DATA 3
  1433. DATA 13
  1434. DATA 7
  1435. DATA 17
  1436. LOC *O
  1437. * /--- BLOCK PIB 00 000 86/05/28 14.12
  1438. PIB SPACE 5,11
  1439. ** PIB - PROCESS INPUT BUFFER
  1440. *
  1441. * AN INPUT BUFFER FROM THE 2550 IS PROCESSED
  1442. *
  1443. * ENTRY - IBUF - BUFFER FROM 2550.
  1444.  
  1445.  
  1446. * PROCESS SUPER SYSTEM MESSAGE
  1447.  
  1448. PIB8 RJM SSM PROCESS SUPER SYSTEM MESSAGE
  1449.  
  1450. PIB SUBR
  1451. LDN 0
  1452. STD IP SET INPUT POINTER
  1453. LDM IBUF
  1454. ADC -240D
  1455. PJN PIB8 IF SUPER SYSTEM MESSAGE
  1456. LDD SN CHECK S(D)
  1457. SBM IBUF
  1458. ZJN PIB1 IF MATCHING S(D)
  1459. ADN 1
  1460. NJN PIBX IF S(D) DOES NOT MATCH
  1461. LDC 200D
  1462. PIB1 STD SI SET STATION BIAS
  1463. LDM IBUF+1
  1464. STD IL SAVE LENGTH OF BLOCK
  1465. SBN 4
  1466. MJN PIBX IF LESS THAN MINIMUM LENGTH
  1467. PIB2 LDN 2
  1468. RAD IP BUMP INPUT POINTER
  1469. SBD IL
  1470. PJN PIBX IF INPUT EXHAUSTED
  1471. LDM IBUF+1,IP
  1472. LPC 377
  1473. STD PL SAVE PACKET LENGTH
  1474. LDM IBUF,IP
  1475. STD ST SAVE PLATO STATION NUMBER
  1476. ADC -200D
  1477. MJN PIB3 IF NOT A SYSTEM MESSAGE
  1478. RJM /SYS/SYS PROCESS SYSTEM MESSAGE
  1479. UJN PIB2 PROCESS NEXT BLOCK
  1480.  
  1481. PIB3 LDD SI BIAS BY S(D) INDEX
  1482. ADD CB
  1483. RAD ST
  1484. LDM TST,ST
  1485. ZJN PIB4 IF STATION NOT ACTIVE
  1486. LDD PL
  1487. LPN 37 MASK OF PACKET SEQUENCE
  1488. STD PL
  1489. NJN PIB5 IF A DATA BLOCK
  1490. RJM TCD TERMINAL COMMAND BLOCK
  1491. PIB3.1 UJN PIB2 PROCESS NEXT BLOCK
  1492. * /--- BLOCK PIB 00 000 86/05/28 14.12
  1493.  
  1494. * PROCESS ILLEGAL NETWORK ADDRESS
  1495.  
  1496. PIB4 LDM IBUF,IP
  1497. STD ST RECOVER T(D)
  1498. LDD PL
  1499. LPN 37
  1500. NJN PIB4.1 IF DATA BLOCK
  1501. LDN 1 TERMINAL COMMAND BLOCK LENGTH
  1502. PIB4.1 RAD IP BUMP POINTER TO NEXT BLOCK
  1503. LDC RTCL GET CURRENT TIME
  1504. CRD CM
  1505. LDC 0 LAST SECOND MESSAGE WAS ISSUED
  1506. .PIBA EQU *-1
  1507. SBD CM+1 SUBTRACT CURRENT SECOND
  1508. ZJN PIB3.1 IF STILL SAME SECOND
  1509. LDD CM+1
  1510. STM .PIBA UPDATE LAST SECOND
  1511. LDN BNAE BAD NET ADDR
  1512. RJM MES
  1513. PIB4.2 UJN PIB3.1 PROCESS NEXT BLOCK
  1514.  
  1515. * PROCESS DATA BLOCK
  1516.  
  1517. PIB5 LDM IBUF+2,IP GET CHARACTER
  1518. STD T2
  1519. LMC BFCH
  1520. NJN PIB6 IF NOT PARITY ERROR
  1521. LDN 0
  1522. STD T2 SET CHARACTER TO ZERO
  1523.  
  1524. * PROCESS INPUT FROM THIS TERMINAL
  1525.  
  1526. PIB6 RJM PIC PROCESS INPUT CHARACTER
  1527. AOD IP BUMP INPUT POINTER
  1528. SOD PL
  1529. ZJN PIB7 IF INPUT COMPLETE
  1530. PJN PIB5 PROCESS NEXT CHARACTER
  1531. PIB7 UJN PIB4.2 PROCESS NEXT BLOCK
  1532.  
  1533. * /--- BLOCK PIC 00 000 86/05/28 14.13
  1534. PIC SPACE 5,11
  1535. ** PIC - PROCESS INPUT CHARACTER
  1536. *
  1537. * ENTRY - (T2) = ASCII CHARACTER
  1538. *
  1539. * EXIT - CHARACTER BUFFER UPDATED OR
  1540. * KEY BUFFER IN ECS UPDATED
  1541.  
  1542.  
  1543. PIC SUBR
  1544. LDD T2
  1545. ADC -ESC CHECK FOR ESC (TOUCH INPUT)
  1546. NJN PIC1
  1547.  
  1548. * SET TERMINAL IN ESCAPE MODE
  1549.  
  1550. LDM TST,ST SET TERMINAL IN ESCAPE MODE
  1551. LPC 7400
  1552. ADC 200
  1553. STM TST,ST
  1554. UJN PICX EXIT
  1555.  
  1556. PIC1 LDM TST,ST CHECK IF IN ESCAPE MODE
  1557. SHN 21-7
  1558. MJN PIC3 IF IN ESCAPE MODE
  1559.  
  1560. * PROCESS A NORMAL KEY
  1561.  
  1562. LDM TDT,ST
  1563. SHN 21-11
  1564. MJN PIC1.1 IF NEW KEY TABLE
  1565. RJM OKT PLANT OLD KEY TABLE
  1566. UJN PIC1.2
  1567. PIC1.1 RJM NKT PLANT NEW KEY TABLE
  1568. PIC1.2 BSS 0
  1569. LDD T2
  1570. SHN -1 GET RID OF PARITY BIT
  1571. STD T1
  1572. LDM KEYS,T1 TRANSLATE TO PLATO CODES
  1573. NJN PIC1.3 IF NOT ZERO
  1574. LDD T1 CHECK IF KEY IS REALLY ZERO
  1575. LMN 6 6 IS ASCII KEY FOR DISPLAY CODE 0
  1576. NJN PIC3.1 EXIT IF INVALID KEY
  1577. PIC1.3 BSS 0
  1578. SHN 21-0
  1579. STD KY SET KEY FOR PLATO
  1580. SHN 1 POSITION PARITY BIT
  1581. LMD T2
  1582. LPN 1
  1583. RAD KY INCLUDE PARITY MISMATCH
  1584. RJM SKY SEND KEY TO KEY BUFFER
  1585. UJN PIC3.1 EXIT
  1586.  
  1587. PIC3 SHN 1 CHECK IF THIS COMPLETES KEY
  1588. MJN PIC4 IF KEY COMPLETE
  1589. LDD T2 SAVE THIS PARIAL KEY
  1590. RJM INV INVERT CHARACTER
  1591. LPC 177
  1592. STD T2
  1593. SHN 21-6
  1594. MJN PIC3.0 REGULAR ESCAPE SEQUENCE
  1595. LJM PIC6 HANDLE 2 BYTE ESC SEQ
  1596. PIC3.0 BSS 0
  1597. LDD T2
  1598. RAM TST,ST
  1599. PIC3.1 LJM PICX EXIT
  1600.  
  1601. * /--- BLOCK PIC 00 000 86/05/28 14.13
  1602.  
  1603. * ENTIRE KEY HERE
  1604.  
  1605. PIC4 LDD T2
  1606. RJM INV INVERT KEY
  1607. LPC 177
  1608. ADC -64D
  1609. SHN 6
  1610. STD T1
  1611. LDM TST,ST
  1612. LPN 77
  1613. ADD T1
  1614. SHN 1
  1615. PIC4.1 BSS 0
  1616. STD KY
  1617. LMC OFFKEY CHECK FOR OFFKEY FROM TERMINAL
  1618. ZJN PIC5.5 IF OFFKEY
  1619. RJM SKY SEND KEY TO PLATO
  1620. PIC5 LDM TST,ST CLEAR ESCAPE MODE
  1621. LPC 7400
  1622. STM TST,ST
  1623. UJN PIC3.1
  1624.  
  1625. * PROCESS OFFKEY FROM TERMINAL.
  1626.  
  1627. PIC5.5 RJM SSL
  1628. UJN PIC5 CLEAR ESCAPE MODE
  1629. PIC6 LDN 0
  1630. STD T1 TABLE COUNTER
  1631. PIC7 LDM PICA,T1 NEXT CONTROL CHARACTER
  1632. MJN PIC5 NOT FOUND, IGNORE THIS SEQUENCE
  1633. LMD T2
  1634. ZJN PIC8 IF MATCHED WITH THIS CONTROL CHAR
  1635. AOD T1 INCREMENT COUNTER
  1636. UJN PIC7 LOOP FOR NEXT CONTROL CHAR
  1637.  
  1638. PIC8 LDM PICB,T1 CORRESPONDING PLATO KEY
  1639. SHN 21-0 IGNORE PARITY CHECKING
  1640. UJN PIC4.1 STORE PLATO KEY
  1641.  
  1642.  
  1643. PICA BSS 0 TWO BYTE ESC SEQ CONTROL CHARS
  1644. DATA 4 CONTROL-D
  1645. DATA 27 CONTROL-W
  1646. DATA 35 CONTROL-BRACKET
  1647. DATA -1 END OF TABLE
  1648.  
  1649. PICB BSS 0 MATCHING PLATO KEYS
  1650. DATA 304 SUB1
  1651. DATA 300 SUPER1
  1652. DATA 360 SQUARE1
  1653.  
  1654. * /--- BLOCK SNP 00 000 82/04/23 16.57
  1655. SNP SPACE 5,11
  1656. ** SNP - SWITCH TO NEXT NPU
  1657. *
  1658. * SAVE STATE OF THIS 2550
  1659. * SET CURRENT STATE OF NEXT 2550
  1660. *
  1661. * EXIT - (A) = 0 IF COMPLETED A CYCLE
  1662.  
  1663.  
  1664. SNP SUBR
  1665. LDC RTCL GET REAL TIME CLOCK
  1666. CRD CM
  1667. LDD CM+1
  1668. STM .MAIB UPDATE OUTPUT REJECT TIMER
  1669. LDM .SNPA
  1670. ZJN SNPX IF NO 2550S DEFINED
  1671. LDN 1
  1672. STD T4 (T4) = FULL CYCLE FLAG
  1673.  
  1674. * SAVE CURRENT 2550 STATUS
  1675.  
  1676. LDD NI
  1677. SHN 4
  1678. STD T1
  1679. SHN 2
  1680. MJN SNP1 IF DUMMY TO START CYCLE
  1681. LDD FI1
  1682. STM NFI1,T1
  1683. LDD FO2
  1684. STM NFO2,T1
  1685.  
  1686. * SET TO NEXT 2550
  1687.  
  1688. SNP1 AOD NI
  1689. LMC 0 NUMBER OF 2550S TO PROCESS
  1690. .SNPA EQU *-1
  1691. NJN SNP2 IF NOT LAST NPU
  1692. STD NI
  1693. LDD T4 CHECK IF CYCLE ALREADY COMPLETE
  1694. ZJN SNPX IF NO ACTIVE 2550S
  1695. LDN 0
  1696. STD T4
  1697. SNP2 LDM NEST,NI
  1698. ZJN SNP1 IF 2550 NOT ACTIVE
  1699. LDC FECH1 SET CHANNEL INSTRUCTIONS
  1700. STD T2
  1701. LDM NCH,NI
  1702. RJM ICH
  1703.  
  1704. * MOVE THE 16 DIRECT CELLS FOR THIS 2550
  1705.  
  1706. LDD NI
  1707. SHN 4
  1708. STD T1
  1709. ADC NDEF
  1710. STM SNPA
  1711. LDD MA MOVE 15 CELLS
  1712. CWM **,TR
  1713. SNPA EQU *-1
  1714. LDD MA
  1715. CRM CB,TR
  1716. LDM NFO2,T1 MOVE 16TH
  1717. STD FO2
  1718. LDD T4
  1719. LJM SNPX EXIT
  1720. * /--- BLOCK SSM 00 000 82/03/26 14.48
  1721. SSM SPACE 5,11
  1722. ** SSM - PROCESS SUPER SYSTEM MESSAGE
  1723. *
  1724. * ALL ACTIVE TERMINALS ARE LOGGED OFF
  1725. * A RESET COMPLETE IS SENT IF REQUEST RESET IS
  1726. * RECEIVED
  1727.  
  1728.  
  1729. SSM SUBR
  1730. EXECUTE SSM,=
  1731. LDC /SSM/OVL
  1732. RJM EXR
  1733. EXECUTE UMT,= UPDATE MAXIMUM TERMINAL IN USE
  1734. LDC /UMT/OVL
  1735. RJM EXR
  1736. UJN SSMX EXIT
  1737. * /--- BLOCK SYS 00 000 79/07/05 14.22
  1738. SYS SPACE 5,11
  1739. ** SYS - PROCESS SYSTEM MESSAGE
  1740. *
  1741. * ENTRY - (IP) - POINTER TO START OF TERMINAL BLOCK
  1742. *
  1743. * EXIT - (IP) - INCREMENTED BY LENGTH OF DATA BLOCK
  1744.  
  1745. QUAL SYS
  1746.  
  1747.  
  1748. SYS SUBR
  1749. EXECUTE PSM,= PROCESS SYSTEM MESSAGE
  1750. LDC /PSM/OVL
  1751. RJM EXR
  1752. NJN SYS1 IF UNKNOWN SYSTEM MESSAGE
  1753. RJM **
  1754. SYSA EQU *-1
  1755. SYS0 LDD PL
  1756. RAD IP BUMP INPUT POINTER
  1757. UJN SYSX
  1758.  
  1759. SYS1 EXECUTE DIB,= DUMP INPUT BLOCK TO ERROR LOG
  1760. LDC /DIB/OVL
  1761. RJM EXR
  1762. QUAL *
  1763. * /--- BLOCK ASO 00 000 82/03/26 14.48
  1764. ASO SPACE 5,11
  1765. ** ASO - APPLICATION SYSTEM SIGNON
  1766. *
  1767. * SIGN THIS TERMINAL INTO PLATO
  1768.  
  1769.  
  1770. ASO SUBR
  1771. EXECUTE ASO,=
  1772. LDC /ASO/OVL
  1773. RJM EXR
  1774. LDM TST,ST
  1775. ZJN ASOX IF CONNECTION REJECTED
  1776. EXECUTE ASP,= COMPLETE PLATO LOGIN
  1777. LDC /ASP/OVL
  1778. RJM EXR
  1779. LDM TST,ST
  1780. ZJN ASOX IF CONNECTION REGECTED
  1781. EXECUTE UMT,= UPDATE MAXIMUM TERMINAL IN USE
  1782. LDC /UMT/OVL
  1783. RJM EXR
  1784. UJN ASOX
  1785. * /--- BLOCK CEM 00 000 82/12/02 15.47
  1786. CEM SPACE 5,11
  1787. ** CEM - PROCESS CCP ERROR/STATISTIC MESSAGES
  1788. *
  1789. * SEND CCP MESSAGES OF CODE $CD (LINK/TRUNK
  1790. * STATISTIC) OR OF CODE $CE (CE ERROR) TO ERROR LOG.
  1791.  
  1792.  
  1793. CEM SUBR
  1794. EXECUTE CPR,=
  1795. LDC /CPR/OVL
  1796. RJM EXR
  1797. UJN CEMX EXIT
  1798. * /--- BLOCK CSS 00 000 82/12/02 15.44
  1799. CSS SPACE 5,11
  1800. ** CSS - CHANGE IN SWITCH STATUS
  1801. *
  1802. * UPDATE ALL TERMINALS CONNECTED TO THE SWITCH
  1803.  
  1804.  
  1805. CSS SUBR
  1806. EXECUTE CSS,=
  1807. LDC /CSS/OVL
  1808. RJM EXR
  1809. UJN CSSX EXIT
  1810. * /--- BLOCK DSM 00 000 82/03/26 14.47
  1811. DSM SPACE 5,11
  1812. ** DSM - DISPLAY SYSTEM MESSAGE
  1813. *
  1814. * THE SYSTEM MESSAGE RECEIVED IS WRITTEN TO THE
  1815. * ERROR LOG.
  1816.  
  1817.  
  1818. DSM SUBR
  1819. EXECUTE DSM,=
  1820. LDC /DSM/OVL
  1821. RJM EXR
  1822. UJN DSMX EXIT
  1823. * /--- BLOCK SBG 00 000 82/03/25 15.49
  1824. SBG SPACE 5,11
  1825. ** SBG - SIGN-ON TO BACKGROUND SYSTEM
  1826. *
  1827. * BUMP MESSAGE TO A E7 AND PROCESS THE SAME
  1828. * WAY
  1829.  
  1830.  
  1831. SBG SUBR
  1832. LDN 12 BUMP PAST FA HEADER
  1833. RAD IP
  1834. LCN 12 ADJUST MESSAGE LENGTH
  1835. RAD PL
  1836. RJM ASO PROCESS SIGNON MESSAGE
  1837. UJN SBGX EXIT
  1838. * /--- BLOCK TCD 00 000 82/04/21 12.22
  1839. TCD SPACE 5,11
  1840. ** TCD - PROCESS TERMINAL COMMAND BLOCK
  1841. *
  1842. * ENTRY - (IP) - POINTER TO START OF TERMINAL BLOCK
  1843. * (ST) - PLATO STATION NUMBER
  1844. *
  1845. * EXIT - (IP) - INCREMENTED BY LENGTH OF DATA BLOCK
  1846.  
  1847.  
  1848. * PROCESS LINE DROP
  1849.  
  1850. TCD5 RJM SSL LOGOUT USER IN PLATO
  1851. LDN LDRE
  1852. RJM MES LINE DROP DAYFILE MESSAGE
  1853. UJN TCD7
  1854.  
  1855. * UNKNOWN TERMINAL COMMAND
  1856.  
  1857. TCD6 ADN TCSO
  1858. STD ST ST CONTAINS BAD CODE
  1859. LDN UTCE UNKNOWN TERMINAL COMMAND
  1860. RJM MES
  1861. EXECUTE DIB,= DUMP INPUT BLOCK TO ERROR LOG
  1862. LDC /DIB/OVL
  1863. RJM EXR
  1864. TCD7 AOD IP BUMP PAST DATA
  1865.  
  1866. TCD SUBR
  1867. LDM IBUF+2,IP GET TERMINAL COMMAND
  1868. SBN TCPE
  1869. ZJN TCD7 IF 2741 PARITY ERROR
  1870. SBN TCLD-TCPE
  1871. ZJN TCD5 IF LINE DROP
  1872. ADN TCLD-TCBR
  1873. ZJN TCD3 IF BREAK RECEIVED
  1874. SBN TCHO-TCBR
  1875. ZJN TCD1 IF HOLD OUTPUT
  1876. SBN TCSO-TCHO
  1877. NJN TCD6 IF NOT RESUME OUTPUT
  1878.  
  1879. * PROCESS RESUME OUTPUT
  1880.  
  1881. STM TOD,ST CLEAR OUTPUT DELAY
  1882. LDM TST,ST CLEAR HOLD OUTPUT
  1883. LPC 3777
  1884. STM TST,ST
  1885. TCD0 UJN TCD7 BUMP POINTER
  1886.  
  1887. * PROCESS HOLD OUTPUT
  1888.  
  1889. TCD1 LDM TST,ST
  1890. LPC 3777
  1891. LMC 4000
  1892. STM TST,ST
  1893. TCD2 UJN TCD0 BUMP POINTER
  1894.  
  1895. * ISSUE BREAK ACKNOWLEDGE
  1896.  
  1897. TCD3 BSS 0
  1898. LDK TCBA TERMINAL CMND - BREAK ACKNOWL.
  1899. RJM STC SEND TERMINAL COMMAND
  1900. LDC STKY SEND STOP KEY TO PLATO
  1901. STD KY
  1902. RJM SKY
  1903. UJN TCD2
  1904. * /--- BLOCK FOB 00 000 79/06/21 14.02
  1905. FOB SPACE 5,11
  1906. ** FOB - FLUSH OUTPUT BUFFER.
  1907. *
  1908. * THE CURRENT BUFFER OF DATA IS SENT TO THE
  1909. * 2550.
  1910. *
  1911. * EXIT - DATA TRANSFERRED TO 2550.
  1912.  
  1913.  
  1914. FOB SUBR
  1915. LDD OL
  1916. ZJN FOBX IF EMPTY BLOCK
  1917. LDC RTCL
  1918. CRD CM SET STARTING TIME FOR OUTPUT BLOCK
  1919. LDD CM+1
  1920. STM .FOBA
  1921. FOB1 RJM SOD SEND BLOCK TO 2550
  1922. ZJN FOBX IF DATA TRANSFERRED
  1923. FOB2 RJM PSE PAUSE FOR STORAGE MOVE
  1924. RJM UPD UPDATE OUTPUT DELAY TIME
  1925. LDD OD
  1926. LPN 1
  1927. ZJN FOB2 IF DELAY HAS NOT EXPIRED
  1928. LDC RTCL
  1929. CRD CM CHECK ELAPSED TIME
  1930. LDC 0
  1931. .FOBA EQU *-1
  1932. SBD CM+1
  1933. MJN FOB3
  1934. ZJN FOB3
  1935. ADC -10000
  1936. FOB3 ADK MXOTM
  1937. PJN FOB1
  1938. LDN OTME
  1939. LJM MXE OUTPUT REJECTS EXCEEDED
  1940. NKT SPACE 4,4
  1941. ** NKT - LOAD NEW KEY TRANSLATION TABLE.
  1942. *
  1943. * THE NEW KEY TRANSLATION TABLE IS READ IN FROM CM.
  1944.  
  1945. NKT SUBR
  1946. LDM KEYT
  1947. NJN NKTX EXIT IF ALREADY LOADED
  1948. LDN 1
  1949. STM KEYT MARK NEW KEY TABLE LOADED
  1950. LDN 32
  1951. STD T1 LENGTH OF KEY TABLE IN CM WORDS
  1952. LDD RA
  1953. SHN 6
  1954. ADK NK CM ADDRESS OF TABLE
  1955. CRM KEYS,T1 READ TABLE
  1956. UJN NKTX
  1957. OKT SPACE 4,4
  1958. ** OKT - LOAD OLD KEY TRANSLATION TABLE.
  1959. *
  1960. * THE OLD KEY TRANSLATION TABLE IS READ IN FROM CM.
  1961.  
  1962. OKT SUBR
  1963. LDM KEYT
  1964. ZJN OKTX EXIT IF ALREADY LOADED
  1965. LDN 0
  1966. STM KEYT MARK OLD KEY TABLE AS LOADED
  1967. LDN 32
  1968. STD T1 LENGTH OF KEY TABLE IN CM WORDS
  1969. LDD RA
  1970. SHN 6
  1971. ADK OK ADDRESS OF OLD KEY TABLE IN CM
  1972. CRM KEYS,T1 READ OLD KEY TABLE
  1973. UJN OKTX
  1974.  
  1975.  
  1976. * /--- BLOCK LGO 00 000 82/12/02 21.29
  1977. LGO SPACE 5,11
  1978. ** LGO - LOGOUT USER
  1979. *
  1980. * A SYSTEM MESSAGE IS SENT TO RE-VALIDATE THIS USER
  1981. *
  1982. * TABLES ARE CLEARED TO SHOW TERMINAL IS NO LONGER
  1983. * ACTIVE
  1984.  
  1985.  
  1986. LGO SUBR
  1987. LDM TST,ST
  1988. ZJN LGOX IF TERMINAL NOT ACTIVE
  1989. LDN 0#0C SET RE-VALIDATE USER
  1990. RJM PLM BUILD LOGOUT MESSAGE
  1991. LDN 0
  1992. STM TST,ST SHOW STATION LOGGED OUT
  1993. EXECUTE UMT,= UPDATE MAXIMUM TERMINAL IN USE
  1994. LDC /UMT/OVL
  1995. RJM EXR
  1996. UJN LGOX
  1997. SNK SPACE 4,4
  1998. ** SNK - SWITCH TO NEW KEY TRANSLATION TABLE.
  1999. *
  2000. * FRAMAT REQUESTS THAT INPUT KEYS BE TRANSLATED TO
  2001. * PLATO KEYS WITH THE NEW KEY TRANSLATION TABLE FOR
  2002. * THIS STATION.
  2003.  
  2004. SNK SUBR
  2005. LDM TDT,ST
  2006. LPC 6777
  2007. LMC 1000 SET NEW KEY TABLE BIT
  2008. STM TDT,ST
  2009. UJN SNKX
  2010. * /--- BLOCK PLM 00 000 82/04/26 11.33
  2011. PLM SPACE 5,11
  2012. ** PLM - PROCESS LOGIN / LOGOUT MESSAGE
  2013. *
  2014. * BUILDS A LOGIN / LOGOUT SUPERVISORY MESSAGE
  2015. *
  2016. * ENTRY - (A) - LOGIN / LOGOUT CODE
  2017.  
  2018.  
  2019. PLM SUBR
  2020. STM PLMA STORE LOG-IN/LOG-OUT CODE
  2021. LMN 0#08 DISCONNECT CODE
  2022. NJN PLM0 -- IF NOT DISCONNECT
  2023. LDN 4+1 LENGTH OF TERMINAL COMMAND MSG
  2024. RJM VBL MAKE SURE ENOUGH ROOM
  2025. LDK TCAO TERMINAL CMND - ABORT OUTPUT.
  2026. RJM STC SEND TERMINAL COMMAND
  2027. PLM0 BSS 0
  2028. LDN 4+15D+6 LTH OF HDR+DATA+SLOP FOR CM RD
  2029. RJM VBL MAKE SURE ENOUGH ROOM
  2030.  
  2031. LDC **
  2032. PLMA EQU *-1 LOGIN/LOGOUT CODE
  2033. STM OBUF+4,OL
  2034.  
  2035. * COMPUTE S(D)/T(D) FOR THIS PLATO PORT
  2036.  
  2037. LDN 0
  2038. STD T2
  2039. LDD ST
  2040. SBD CB
  2041. STD T1 SET T(D)
  2042. SBK 200D
  2043. MJN PLM1 -- IF ON PRIMARY S(D)
  2044. STD T1 SET T(D)
  2045. AOD T2 BIAS TO ALTERNATE S(D)
  2046. PLM1 LDD SN
  2047. ADD T2
  2048. STM OBUF+5,OL SET PLATO S(D)
  2049. LDD T1
  2050. STM OBUF+6,OL SET PLATO T(D)
  2051. LDM SDT,ST
  2052. STM OBUF+7,OL TERMINAL S(D)
  2053. LDM TDT,ST
  2054. LPC 377B
  2055. STM OBUF+8D,OL TERMINAL T(D)
  2056. LDM TDT,ST
  2057. SHN -11D
  2058. STD T1 0 = 1200 BAUD, 1 = 300 BAUD
  2059. LDM TDT,ST
  2060. SHN 21B-12B
  2061. PJN PLM2 -- IF STANDARD TERMINAL TYPE
  2062. LDK TXTT TEKTRONIX TERMINAL TYPE
  2063. UJN PLM3
  2064. PLM2 LDK NWTT NETWORK TERMINAL TYPE (IST)
  2065. PLM3 SBD T1 BIAS BY TERMINAL SPEED
  2066. STM OBUF+9D,OL SET TERMINAL TYPE/SPEED
  2067.  
  2068. LDK OBUF+10D POSITION RELATIVE TO *OL*
  2069. ADD OL PLUS *OL* = ABS ADDRESS
  2070. STM PLMB PLANT FOR CM READ PP ADDR
  2071. LDD MA CM ADDR OF MESSAGE AREA
  2072. CWM PLMC,TR WRITE ASCII STRING *PLATO*
  2073. LDD MA READ BACK INTO OUTPUT BUFFER
  2074. CRM **,TR
  2075. PLMB EQU *-1 ABS ADDR IN OUTPUT BUFFER
  2076.  
  2077. LDC 0#ED+15S12D MESSAGE CODE AND LENGTH (DATA)
  2078. RJM BRH BUILD ROUTING HEADER
  2079.  
  2080. RJM FOB FLUSH OUTPUT BUFFER
  2081. UJP PLMX -- EXIT
  2082.  
  2083. PLMC CON A.P,A.L,A.A,A.T,A.O,0,0,0,0
  2084. * /--- BLOCK SRM 00 000 82/04/20 16.35
  2085. SRM SPACE 5,11
  2086. ** SRM - SEND ROUTING MESSAGE.
  2087. *
  2088. * SEND E9 AND EA MESSAGE TO THE DPNC TO ENABLE/
  2089. * DISABLE ROUTING TO THE PLATO SYSTEM.
  2090. *
  2091. * ENTRY - (A) = 6/ON-OFF CODE, 12/ROUTING CODE.
  2092. * (OL) = CURRENT INDEX INTO OUTPUT BUFFER.
  2093. *
  2094. * EXIT - (OL) = RESET BY *FOB*.
  2095. *
  2096. * USES - NONE.
  2097. *
  2098. * CALLS - BRH, FOB, VBL.
  2099. *
  2100. SRM SUBR
  2101.  
  2102. * SAVE INFO FROM ACCUMULATOR.
  2103.  
  2104. STM SRMA STORE ROUTING CODE
  2105. SHN -12D
  2106. STM SRMB SAVE ON-OFF CODE FOR EA MSG
  2107.  
  2108. LDN 15D TOTAL LENGTH OF BOTH MSGS
  2109. RJM VBL MAKE SURE ENOUGH ROOM IN BUFFER
  2110.  
  2111. * BUILD E9 MESSAGE
  2112.  
  2113. LDM NSN,NI PLATO SWITCH NUMBER
  2114. STM OBUF+4,OL
  2115. LDC ** ROUTING CODE
  2116. SRMA EQU *-1
  2117. STM OBUF+5,OL
  2118. LDC 0#E9+2S12D MESSAGE CODE AND LENGTH (DATA)
  2119. RJM BRH BUILD ROUTING HEADER
  2120.  
  2121. * BUILD EA MESSAGE.
  2122.  
  2123. LDC **
  2124. SRMB EQU *-1 ON-OFF CODE
  2125. STM OBUF+4,OL
  2126. LDM NSN,NI PLATO SYSTEM NUMBER
  2127. STM OBUF+5,OL
  2128. LDD SN SWITCH NUMBER
  2129. STM OBUF+6,OL
  2130. ADK 1 ALTERNATE S(D)
  2131. STM OBUF+7,OL
  2132. LDN 0 WHATS THIS
  2133. STM OBUF+8D,OL
  2134. LDC 0#EA+5S12D MESSAGE CODE AND LENGTH (DATA)
  2135. RJM BRH BUILD ROUTING HEADER
  2136.  
  2137. RJM FOB FLUSH OUTPUT BUFFER
  2138. UJP SRMX -- EXIT
  2139. *
  2140. * /--- BLOCK STM 00 000 79/06/21 14.24
  2141. STC SPACE 5,12
  2142. ** STC - SEND TERMINAL COMMAND.
  2143. *
  2144. * SIMILAR TO *BOD* EXCEPT DATA (COMMAND) IS NOT
  2145. * INVERTED. ALSO, DATA IS IN (A) NOT MEMORY, AND
  2146. * THE T(D) LENGTH IS ALWAYS SET TO 0 TO INDICATE A
  2147. * ONE-BYTE COMMAND CODE FOLLOWS.
  2148. *
  2149. * ENTRY - (A) = TERMINAL COMMAND CODE.
  2150. * (OL) = CURRENT INDEX IN OUTPUT BUFFER.
  2151. *
  2152. * EXIT - (OL) = UPDATED, POINTS TO NEXT MESSAGE.
  2153. *
  2154. * USES - NONE.
  2155. *
  2156. * CALLS - BTH, VBL.
  2157. *
  2158. STC SUBR
  2159. STM STCA STORE TERMINAL COMMAND CODE
  2160. LDN 4+2 HEADER + DATA LENGTH
  2161. RJM VBL MAKES SURE MESSAGE WILL FIT
  2162. LDN 1 DATA LENGTH
  2163. RJM BTH BUILD TERMINAL HEADER
  2164. LDN 0
  2165. STM OBUF-1,OL T(D) LTH = 0 INDICATES COMMAND
  2166. LDC **
  2167. STCA EQU *-1 TERMINAL COMMAND CODE
  2168. STM OBUF,OL
  2169. AOD OL
  2170. UJP STCX -- EXIT
  2171. *
  2172. * /--- BLOCK VBL 00 000 79/06/21 14.12
  2173. VBL SPACE 5,11
  2174. ** VBL - VERIFY OUTPUT BUFFER LENGTH
  2175. *
  2176. * THE SPACE LEFT IN THIS OUTPUT BUFFER IS
  2177. * CHECKED TO VERIFY THERE IS ROOM FOR THIS
  2178. * MESSAGE. IF NOT THE BUFFER IS SENT TO THE
  2179. * 2550.
  2180. *
  2181. * ENTRY - (A) = SPACE REQUIRED IN BUFFER
  2182. *
  2183. * EXIT - (OL) = 0 IF BUFFER FLUSHED
  2184.  
  2185.  
  2186. VBL SUBR
  2187. ADD OL
  2188. ADC -MOBL
  2189. MJN VBLX IF SPACE LEFT IN BUFFER
  2190. RJM FOB FLUSH OUTPUT BUFFER
  2191. UJN VBLX EXIT
  2192. * /--- BLOCK RID 00 000 82/12/02 21.27
  2193. TITLE 2250 DATA TRANSFER ROUTINES.
  2194. RID SPACE 5,11
  2195. ** RID - READ INPUT DATA.
  2196. *
  2197. * GET NEXT INPUT BLOCK FROM 2550.
  2198. *
  2199. * EXIT - (A) = 0 IF DATA BLOCK READ.
  2200. * IBUF - DATA BLOCK.
  2201.  
  2202.  
  2203. RID3 LDN INCE EOM MISSING
  2204. LJM MXE ABORT
  2205.  
  2206. RID5 LDC IBUFL
  2207. SBD T4
  2208. ADC IBUF
  2209. SBN 1
  2210. STD T4
  2211. .DEBUG IFNE DEBUG,0
  2212. LDC IBUF+1LR
  2213. RJM DBG
  2214. .DEBUG ENDIF
  2215. LDC EOM
  2216. RAI T4 CLEAR EOM
  2217. SHN 21-13
  2218. MJN RID3 IF EOM MISSING
  2219. LDN 0
  2220.  
  2221. RID SUBR
  2222. RJM STS GET STATUS
  2223. MJN RIDX IF NO STATUS
  2224. SBN INA INPUT AVAILABLE
  2225. NJN RIDX IF NO INPUT
  2226. AOM NNBI,NI INCR NUM OF BLOCKS INPUT
  2227. LDN IND INPUT DATA
  2228. ADD EQ
  2229. FAN CH+40
  2230. RJM IJM WAIT FOR INACTIVE
  2231. ACN CH
  2232. RJM FUL WAIT FOR FULL
  2233. LDC IBUFL
  2234. IAM IBUF,CH INPUT THE DATA
  2235. STD T4
  2236. LDN INHE
  2237. AJM MXE,CH IF 2550 HUNG SENDING DATA
  2238. LDN INC INPUT COUPLE STATUS
  2239. RJM FNC
  2240. STM CSTS,NI SAVE COUPLER STATUS
  2241. LPC ERRF
  2242. ZJN RID2 IF TRANSFER COMPLETE
  2243. LDN CSTE BAD COUPLER STATUS
  2244. RID1 LJM MXE ABORT
  2245.  
  2246. RID2 LJM RID5
  2247. * /--- BLOCK SOD 00 000 82/04/26 11.45
  2248. SOD SPACE 5,11
  2249. ** SOD - SEND OUTPUT DATA
  2250. *
  2251. * SEND NEXT BLOCK OF OUTPUT TO THE 2550.
  2252. *
  2253. * ENTRY - (OL) = LENGTH OF OUTPUT BLOCK
  2254. * OBUF = OUTPUT BLOCK
  2255. *
  2256. * EXIT - (A) = 0 IF DATA TRANSFERED TO 2550.
  2257. * (OL) = 0 IF OUTPUT TRANSFERED TO 2550.
  2258.  
  2259.  
  2260. SOD3 LDN OUTE INCOMPLETE OUTPUT TRANSFER
  2261. UJN RID1 ABORT
  2262.  
  2263. * NOTE'; THE LAST BYTE TRANSFERED TO THE 2550 MUST
  2264. * HAVE THE 2**11 BIT (4000B) SET, ELSE THE 2550 WILL
  2265. * REJECT THE ENTIRE BLOCK WITH A CE/1F ERROR MSG.
  2266.  
  2267. SOD4 LDC EOM INSERT EOM BIT
  2268. RAM OBUF-1,OL
  2269. LDN OTD SEND WRITE ORDER CODE
  2270. ADD EQ
  2271. FAN CH+40
  2272.  
  2273. * WHILE WE WAIT FOR THE CHANNEL TO GO INACTIVE
  2274.  
  2275. LDK RTCL REAL TIME CLOCK
  2276. CRD CM
  2277. LDD CM+4 LOW-ORDER OF MSEC CLOCK
  2278. SBM NTIM,NI LAST TIME A BLOCK WAS SENT
  2279. PJN SOD5 -- NO WRAP-AROUND
  2280. ADC 10000B ADD FOR CLOCK WRAP-AROUND
  2281. SOD5 BSS 0
  2282. STM NCYC,NI STORE FOR STATS
  2283. LDD CM+4
  2284. STM NTIM,NI UPDATE FOR CURRENT BLOCK
  2285. AOM NNBO,NI INCR NUM OF BLOCKS OUTPUT
  2286.  
  2287. RJM IJM WAIT FOR INACTIVE
  2288. ACN CH
  2289. LDD OL
  2290. STM NLBS,NI SAVE SIZE OF BLOCK FOR STATS
  2291. OAM OBUF,CH
  2292. FJM *,CH
  2293. DCN CH+40
  2294. NJP SOD3 -- INCOMPLETE TRANSFER
  2295. STD OL
  2296. STD OD CLEAR SAVED OUTPUT FLAG
  2297. STM OBUF CLEAR S(D)
  2298.  
  2299. SOD SUBR
  2300. .DEBUG IFNE DEBUG,0
  2301. LDC OBUF+1LS
  2302. RJM DBG
  2303. .DEBUG ENDIF
  2304. LDN WRT WRITE ORDER CODE
  2305. STD T1
  2306. LDN OTO
  2307. RJM FNC
  2308. SOD1 RJM STS GET STATUS
  2309. MJN SOD1 IF NO STATUS
  2310. SBN RYO
  2311. ZJN SOD2 IF READY FOR OUTPUT
  2312. SBN NRY-RYO
  2313. NJN SOD1 IF IDLE
  2314. AOM NNOR,NI INCR NUM OF OUTPUT REJECTS
  2315. LDN 2*100D/PTRD
  2316. STD OD SET OUTPUT DELAY COUNTER
  2317. UJN SODX EXIT
  2318.  
  2319. SOD2 LJM SOD4 SEND MESSAGE
  2320. * /--- BLOCK 2550 I/O 00 000 79/03/27 01.49
  2321. FNC SPACE 5,11
  2322. ** FNC - FUNCTION THE CHANNEL. TRANSFER ONE DATA WORD
  2323. *
  2324. * ENTRY - (A) = FUNCTION CODE.
  2325. * (T1) = WORD TO OUTPUT IF OUTPUT FUNCTION.
  2326. *
  2327. * EXIT - (A) = WORD READ FROM CHANNEL IF INPUT.
  2328. * (T1)= WORD READ FROM CHANNEL IF INPUT.
  2329.  
  2330.  
  2331. FNC1 SBN SNU-FCNL
  2332. PJN FNCX IF NOT OUTPUT ORDER CODE
  2333. ACN CH
  2334. LDD T1
  2335. OAN CH
  2336. FJM *,CH
  2337. FNC2 DCN CH+40
  2338.  
  2339. FNC SUBR
  2340. STD T2
  2341. ADD EQ INCLUDE EQUIPMENT NUMBER
  2342. FAN CH+40
  2343. RJM IJM CHECK FOR INACTIVEACNCH
  2344. LDD T2
  2345. SBN FCNL
  2346. PJN FNC1 IF OUTPUT FUNCTION
  2347. ACN CH
  2348. RJM FUL WAIT FOR FULL
  2349. IAN CH
  2350. STD T1
  2351. UJN FNC2
  2352. FUL SPACE 5,11
  2353. ** FUL - TEST IF CHANNEL FULL
  2354.  
  2355.  
  2356. FUL SUBR
  2357. LDC WAIT SET DELAY COUNT
  2358. FUL1 FJM FULX,CH IF CHANNEL FULL
  2359. SBN 1
  2360. NJN FUL1 TRY AGAIN
  2361. LDN FULE NO DATA ON CHANNEL
  2362. UJN MXE ABORT
  2363. IJM SPACE 5,11
  2364. ** IJM - WAIT FOR CHANNEL INACTIVE
  2365.  
  2366.  
  2367. IJM SUBR
  2368. LDC WAIT
  2369. IJM1 IJM IJMX,CH IF CHANNEL INACTIVE
  2370. SBN 1 DELAY
  2371. NJN IJM1 IF DELAY NOT COMPLETE
  2372. LDN FTOE FUNCTION TIMEOUT
  2373. UJN MXE ABORT
  2374.  
  2375. * /--- BLOCK 2550 I/O 00 000 82/12/02 22.01
  2376. STS SPACE 5,11
  2377. ** STS - GET 2550 STATUS
  2378. *
  2379. * EXIT - (A) = (T1) = 2550 STATUS IF AVAILABLE
  2380. * (A) = NEGATIVE IF STATUS NOT AVAILABLE
  2381.  
  2382.  
  2383. STS1 LDN DMTE 2550 DEAD
  2384.  
  2385. * PROCESS 2550 CHANNEL ERROR
  2386.  
  2387. MXE DCN CH+40
  2388. STD T7 SET ERROR CODE
  2389. EXECUTE MXE,=
  2390. LDC /MXE/OVL
  2391. RJM EXR
  2392. * UJN * DOES NOT RETURN
  2393.  
  2394. STS2 LDM NSTS,NI
  2395. SBD CM+1
  2396. MJN STS3 IF NO OVERFLOW
  2397. ZJN STS3
  2398. ADC -10000
  2399. STS3 ADN DMTX CHECK FOR TIMEOUT
  2400. MJN STS1 IF TIMED OUT
  2401. LCN 1 (A) = NO STATUS AVAILABLE
  2402.  
  2403. STS SUBR
  2404. LDC RTCL
  2405. CRD CM READ READ TIME CLOCK
  2406. LDN INC INPUT COUPLER STATUS
  2407. RJM FNC
  2408. STM CSTS,NI SAVE COUPLER STATUS
  2409. LPN CNL
  2410. ZJN STS2 IF STATUS NOT AVAILABLE
  2411. LDN INS INPUT SOFTWARE STATUS
  2412. RJM FNC
  2413. STM SSTS,NI SAVE CPP SOFTWARE STATUS
  2414. LDD CM+1
  2415. STM NSTS,NI SAVE CLOCK
  2416. LDD T1 (A) = STATUS
  2417. UJN STSX EXIT
  2418.  
  2419. FECH1 CHTB 2550 CHANNEL TABLE
  2420. * /--- BLOCK READECS 00 000 82/03/24 13.45
  2421. TITLE ECS TRANSFER ROUTINES.
  2422. SPACE 5,11
  2423. ** RECS - ECS TO PPU TRANSFER VIA DDP.
  2424. *
  2425. * ENTRY (A) = PPU MEMORY ADDRESS.
  2426. * (T1) = UPPER PORTION OF ECS ADDRESS.
  2427. * (T2) = LOWER PORTION OF ECS ADDRESS.
  2428. * (T3) = NUMBER OF CM WORDS TO READ.
  2429. *
  2430. * EXIT (A) = 0 IF READ COMPLETED.
  2431. * = 1 IF ECS PARITY ERROR.
  2432. *
  2433. * THIS SUBROUTINE WILL BE OVERWRITTEN BY THE
  2434. * MONITOR CALL ECS READ ROUTINE IF THE DDP
  2435. * IS NOT AVAILABLE.
  2436.  
  2437.  
  2438. RECS SUBR
  2439. STM RECA SAVE PP ADDRESS
  2440.  
  2441. * ZERO LENGTH TRANSFERS ARE INTERPRETED AS INFINITE
  2442. * LENGTH TRANSFERS.
  2443.  
  2444. LDD T3 TRANSFER LENGTH
  2445. ZJN RECSX RETURN IF ZERO LENGTH TRANSFER
  2446.  
  2447. * SEND READ FUNCTION TO THE DDP.
  2448.  
  2449. DCN DC+40
  2450. FNC 5001,DC 5001 = READ ECS
  2451.  
  2452. * OUTPUT THE 2 WORD ECS ADDRESS.
  2453.  
  2454. ACN DC
  2455. LDN 2
  2456. OAM T1,DC
  2457. LDD T3 COUNT PP WORD COUNT
  2458. SHN 2
  2459. ADD T3
  2460. IAM **,DC READ ECS TO PPU MEMORY
  2461. RECA EQU *-1
  2462. NJN REC2 IF ERROR
  2463.  
  2464. * WAIT FOR CHANNEL FULL AND ACTIVE
  2465.  
  2466. REC1 IJM REC2,DC IF INACTIVE
  2467. EJM REC1,DC
  2468. DCN DC+40
  2469. UJN RECSX EXIT WITH A =0
  2470.  
  2471. * MASTER CLEAR THE DDP PORT.
  2472.  
  2473. REC2 DCN DC+40
  2474. FNC 5010,DC 5010 = MASTER CLEAR PORT
  2475. RECB FNC 5404,DC 5404 = SELECT ESM MODE
  2476. * UJN *+2 IF ECS MODE
  2477. LDN DERE READ ECS ERROR
  2478. RJM MES
  2479. LDN 1 MARK ERROR OCCURRED
  2480. LJM RECSX
  2481.  
  2482. BSS 13 PADDING
  2483.  
  2484. RECL EQU *-RECSX LENGTH OF THIS SUBROUTINE
  2485. * /--- BLOCK WRITECS 00 000 82/03/25 15.55
  2486. SPACE 5,11
  2487. ** WECS - PPU TO ECS TRANSFER VIA DDP.
  2488. *
  2489. * ENTRY (A) = PPU MEMORY ADDRESS.
  2490. * (T1) = UPPER PORTION OF ECS ADDRESS.
  2491. * (T2) = LOWER PORTION OF ECS ADDRESS.
  2492. * (T3) = NUMBER OF CM WORDS TO WRITE.
  2493. *
  2494. * EXIT (A) = 0, IF NO ERRORS.
  2495. * = 1, IF ECS PARITY ERRORS.
  2496. *
  2497. * THIS SUBROUTINE WILL BE OVERWRITTEN BY THE
  2498. * MONITOR CALL ECS WRITE ROUTINE IF THE DDP
  2499. * IS NOT AVAILABLE.
  2500.  
  2501.  
  2502. WECS SUBR
  2503. STM WECA SAVE PP MEMORY ADDRESS
  2504.  
  2505. * ZERO LENGTH TRANSFERS ARE INTERPRETED AS INFINITE
  2506. * LENGTH TRANSFERS.
  2507.  
  2508. LDD T3 TRANSFER LENGTH
  2509. ZJN WECSX RETURN IF ZERO LENGTH TRANSFER
  2510.  
  2511. * SEND ECS WRITE FUNCTION TO DDP.
  2512.  
  2513. DCN DC+40
  2514. FNC 5002,DC 5002 = WRITE ECS
  2515.  
  2516. * SEND TWO WORD ECS ADDRESS.
  2517.  
  2518. ACN DC+40
  2519. LDN 2
  2520. OAM T1,DC
  2521. LDD T3 COMPUTE PP WORD COUNT
  2522. SHN 2
  2523. ADD T3
  2524. OAM **,DC OUTPUT THE DATA
  2525. WECA EQU *-1
  2526. NJN WEC2 IF ERROR
  2527. DCN DC+40
  2528.  
  2529. * CHECK DDP STATUS UNTIL WRITE COMPLETE OR
  2530. * ERROR DETECTED.
  2531.  
  2532. WEC1 FNC 5004,DC 5004 = SELECT STATUS
  2533. ACN DC+40
  2534. IAN DC INPUT STATUS WORD
  2535. DCN DC+40
  2536. LPN 11 MASK WRITE/ABORT BITS
  2537. ZJN WECSX IF COMPLETED SUCCESSFULLY
  2538. LPN 10
  2539. NJN WEC1 IF WRITE NOT COMPLETE
  2540.  
  2541. * RETURN WITH ERROR.
  2542.  
  2543. WEC2 DCN DC+40 DISCONNECT THE DDP CHANNEL
  2544. FNC 5010,DC 5010 = MASTER CLEAR PORT
  2545. WECB FNC 5404,DC 5404 = SELECT ESM MODE
  2546. * UJN *+2 IF ECS MODE
  2547. LDN DEWE WRITE ECS ERROR
  2548. RJM MES
  2549. LDN 1 MARK ERROR OCCURRED
  2550. LJM WECSX EXIT
  2551.  
  2552. BSS 5 PADDING
  2553.  
  2554. WECL EQU *-WECSX LENGTH OF THIS ROUTINE
  2555.  
  2556. * ADD TERMINATOR TO DDP CHANNEL INSTRUCTIONS
  2557.  
  2558. RMT
  2559. CON 0
  2560. FECH2 BSS 0
  2561. RMT
  2562. * /--- BLOCK SUBS 00 000 82/12/06 16.17
  2563. TITLE GENERAL PURPOSE SUBROUTINES.
  2564. C2X SPACE 5,11
  2565. ** C2X - CONVERT BINARY TO HEXADECIMAL.
  2566. *
  2567. * ENTRY - (A) - VALUE TO CONVERT
  2568. *
  2569. * EXIT - (A) - CONVERTED VALUE
  2570.  
  2571.  
  2572. C2X SUBR
  2573. LPC 0#FF
  2574. SHN 21-3
  2575. STD T1 STORE UPPER BITS
  2576. SHN -16
  2577. SBN 10D
  2578. PJN C2X1 IF GREATER THAN 9
  2579. ADN 1R0+10D-1
  2580. C2X1 ADN 1
  2581. STD T2
  2582. LDD T1
  2583. SBN 10D
  2584. PJN C2X2 IF GREATER THAN 9
  2585. ADN 1R0+10D-1
  2586. C2X2 ADN 1
  2587. SHN 6
  2588. ADD T2
  2589. UJN C2XX EXIT
  2590. STX SPACE 4,10
  2591. ** STX - STORE TEXT IN THE MESSAGE BUFFER.
  2592. *
  2593. * SET DISPLAY CHARACTER INTO PACKED STRING BUFFER.
  2594. *
  2595. * ENTRY (A) = DISPLAY CODED CHARACTER.
  2596. *
  2597. * EXIT CHARACTER PACKED INTO BUFFER
  2598. * POINTERS UPDATED
  2599.  
  2600.  
  2601. * LEFT CHARACTER.
  2602.  
  2603. STX2 SHN 6 STORE LEFT CHARACTER
  2604. STI PT
  2605. LDC PSNI SET CONTROL INSTRUCTION
  2606. STM STXA
  2607.  
  2608. STX SUBR ENTRY/EXIT
  2609. LPN 77
  2610. STXA UJN STX2 ODD CHARACTERS
  2611. * PSN EVEN CHARACTERS
  2612.  
  2613. * RIGHT CHARACTER
  2614.  
  2615. RAI PT
  2616. AOD PT
  2617. STXB LDC 0
  2618. ORG *-1
  2619. LOC STXA
  2620. UJN STX2
  2621. ORG *O
  2622. STM STXA
  2623. UJN STXX
  2624.  
  2625. NUL SPACE 5,11
  2626. ** NUL - RETURN TO CALLER.
  2627. *
  2628. * HANDLES NULL FUNCTIONS
  2629.  
  2630. NUL SUBR
  2631. UJN NULX
  2632. ICH SPACE 5,11
  2633. ** ICH - INSERT CHANNEL NUMBERS INTO I/O INSTRUCTIONS
  2634. *
  2635. * ENTRY - (A) = CHANNEL TO INSERT
  2636. * (T2) = FWA OF CHANNEL TABLE
  2637.  
  2638.  
  2639. ICH SUBR
  2640. STD T3 SAVE CHANNEL NUMBER
  2641.  
  2642. * CHECK IF SAME CHANNEL TO PRESET
  2643.  
  2644. LDI T2
  2645. STD T1
  2646. LDI T1
  2647. LMD T3
  2648. SCN 37
  2649. ZJN ICHX IF SAME CHANNEL
  2650.  
  2651. * MODIFY CHANNEL INSTRUCTIONS
  2652.  
  2653. ICH1 LDI T2
  2654. ZJN ICHX IF END OF TABLE
  2655. STD T1
  2656. LDI T1
  2657. SCN 37
  2658. LMD T3
  2659. STI T1 MODIFY INSTRUCTION
  2660. AOD T2
  2661. UJN ICH1 IF MORE CHANNELS
  2662. PSE SPACE 5,11
  2663. * /--- BLOCK SUBS 00 000 82/03/25 15.42
  2664. ** PSE - PAUSE FOR STORAGE RELOCATION
  2665. *
  2666. * EXIT - (A) = ERROR FLAG
  2667.  
  2668.  
  2669. PSE1 LDN 0
  2670.  
  2671. PSE SUBR
  2672. PAUSE
  2673. LDD CM+1
  2674. NJN PSEX IF ERROR FLAG SET
  2675. .NOSV2 IFGE OSLEV,562D NOS V2
  2676. LDC TFSW CHECK IF PLATO STILL RUNNING
  2677. .NOSV2 ELSE NOS V1
  2678. LDC JNMW CHECK IF PLATO STILL RUNNING
  2679. .NOSV2 ENDIF
  2680. PSEA EQU *-1
  2681. CRD CM
  2682. LDD CM
  2683. NJN PSE1 IF PLATO STILL RUNNING
  2684. LDN 1 (A) = PLATO NOT RUNNING
  2685. UJN PSEX EXIT
  2686. MES SPACE 5,11
  2687. ** MES - ISSUE FORMATTED DAYFILE MESSAGE
  2688. *
  2689. * ENTER - (A) = DSN ERROR CODE
  2690. * BIT 5 - 0 = DECIMAL CONVERSION FOR ST
  2691. * 1 = HEX CONVERSION FOR ST
  2692.  
  2693. MES SUBR
  2694. STD T7 SAVE ERROR CODE
  2695. LPN 37 MASK OFF THE CONVERSION FLAG
  2696. RJM C2D
  2697. STM MESA+3 SET ERROR CODE
  2698.  
  2699. * CHECK FOR INHIBIT ERROR MESSAGE - SW2
  2700.  
  2701. LDD RA
  2702. SHN 6
  2703. CRD CN
  2704. LDD CN+4
  2705. SHN 21-7 POSITION SW2
  2706. MJN MESX EXIT IF SW2 IS SET
  2707. LDM NEST,NI FETCH EQ NUMBER
  2708. RJM C2D
  2709. STM MESA+6 SET EQ NUMBER
  2710. LDD T7 FETCH ERROR CODE
  2711. SHN 21-5
  2712. PJN MES2 IF DECIMAL CONVERSION OF ST
  2713. LDD ST HEX VALUE
  2714. RJM C2X
  2715. STM MESA+12 SET HEX CODE
  2716. LDC 2R--
  2717. MES1 STM MESA+11 SET UPPER TWO CHARACTERS OF ST
  2718. LDC MESA
  2719. RJM DFM ISSUE DAYFILE MESSAGE
  2720. LJM MESX EXIT
  2721.  
  2722. MES2 LDD ST FETCH STATION NUMBER
  2723. RJM C2D
  2724. STM MESA+12 SET LOWER STATION NUMBER
  2725. LDD ST
  2726. SHN -6
  2727. RJM C2D
  2728. UJN MES1 COMPLETE DAYFILE MESSAGE
  2729.  
  2730. MESA DATA C*DSN ERXX EQYY STZZZZ*
  2731. SPACE 5,11
  2732. * COMMON DECKS.
  2733.  
  2734. *CALL COMPC2D
  2735. * /--- BLOCK DBG 00 000 82/04/28 15.29
  2736. DBG SPACE 5,11
  2737. ** DBG - WRITE DATA TO CM BUFFER
  2738. *
  2739. * A 20B WORD BUFFER IS WRITTEN TO A 10000B WORD
  2740. * CM BUFFER STARTING AT 1000B.
  2741. *
  2742. * ENTRY - (A) = 6/ID, 12/ADDRESS
  2743.  
  2744.  
  2745. .DEBUG IFNE DEBUG,0
  2746. DBG SUBR
  2747. STM DBGB
  2748. SHN -14
  2749. STD CM
  2750. LDN 17
  2751. STD CM+4
  2752. LDD OL
  2753. STD CM+1
  2754. LDD NI
  2755. STD CM+2
  2756. LDD RA
  2757. SHN 6
  2758. ADC 0
  2759. DBGA EQU *-1
  2760. ADC 1000
  2761. CWD CM
  2762. ADN 1
  2763. CWM **,CM+4
  2764. DBGB EQU *-1
  2765. LDN 20
  2766. RAM DBGA
  2767. UJN DBGX
  2768. .DEBUG ENDIF
  2769. * /--- BLOCK BUFFERS 00 000 86/05/28 14.17
  2770. BUF TITLE BUFFER DEFINITIONS.
  2771. SPACE 5,11
  2772. ** BUF - MACRO TO DEFINE A BUFFER
  2773. *
  2774. *NAME BUF LENGTH
  2775.  
  2776.  
  2777. MACRO BUF,N,L
  2778. LOC .1
  2779. N BSS 0
  2780. LOC *O
  2781. .1 SET .1+L
  2782. ENDM
  2783.  
  2784. NOREF .1,.2,.3,.4
  2785.  
  2786.  
  2787. .1 SET MSFW OVERLAY MASS STORAGE DRIVER
  2788.  
  2789. * FORMAT OF BUFFER HEADER
  2790. *
  2791. * 12/FC, 12/ ,12/CPW, 12/PWC, 12/PA
  2792. *
  2793. * FC - USED WHEN NO DATA PRESENT
  2794. * 1 - ABORT OUTPUT
  2795. * 2 - LOGOUT USER
  2796. * 3 - RETURN TERMINAL TYPE
  2797. * CPW- CPU WORD COUNT INCLUDING HEADER
  2798. * PWC- PPU WORD COUNT INCLUDING HEADER
  2799. * PA - PLATO STATION NUMBER
  2800.  
  2801. BUF BUF TBUFL BUFFER FOR ECS READ/WRITES
  2802. NETC EQU BUF+2 CPU WORD COUNT
  2803. NETP EQU BUF+3 PPU WORD COUNT
  2804. NETA EQU BUF+4 PLATO STATION ADDRESS
  2805.  
  2806. IBUF BUF IBUFL INPUT BUFFER FROM 2550
  2807.  
  2808. ERRPL .1-MAI OVERFLOW MASS STORAGE DRIVER
  2809. ERRNG .1-BUF-2*5-3*5*/PLAT/MXDSN TOO MANY 2550S
  2810. ERRNG .1-BUF-4*5*/PLAT/MXDSN TOO MANY 2550S
  2811.  
  2812. DPCH DATA 0 DDP CHANNEL
  2813. DPEQ DATA 0 DDP EQUIPMENT
  2814. INIC DATA 1 ZERO IF INITIALIZED
  2815. TERT DATA 0 TERMINATION TYPE
  2816. KEYT DATA 0 0 = OLD KEY TABLE, 1 = NEW KEY TABLE
  2817.  
  2818. BYTECNT BSS 1 NUMBER OF DATA BYTES
  2819. MSGCNT BSS 1 NUM OF BYTES PERMITTED PER LINE
  2820. UMTB CON TS CM ADDRESS OF ACTIVE USER COUNT
  2821. UMTC DATA 0 TOTAL 2550S SUPPORTED
  2822.  
  2823. * /--- BLOCK BUFFERS 00 000 86/05/28 14.16
  2824.  
  2825. .1 SET * START OF BUFFERS
  2826.  
  2827.  
  2828. OVL BUF OVLL OVERLAY BUFFER
  2829. OVLE EQU .1
  2830. CMB BUF 4*5+2 FOUR WORD CM BUFFER
  2831. NSYSBNK BUF 2 EM FWA OF STATION BANKS
  2832. BANKADD BUF 1 DISPLACEMENT TO *BANKADD*
  2833. ASCCON BUF 2 EM FWA OF ASCII CONNECTION TABLE
  2834.  
  2835. * TABLES DEFINING 2550,S DRIVEN BY THIS PP
  2836.  
  2837. NORD BUF MXNPU PLATO 2550 ORDINAL
  2838. NCH BUF MXNPU CHANNEL
  2839. NDS BUF MXNPU DPNC S(D)
  2840. NEST BUF MXNPU EST ORDINAL
  2841. NSN BUF MXNPU SYSTEM NUMBER
  2842. NMT BUF MXNPU LARGEST CONNECT IN USE
  2843. NSTS BUF MXNPU TIME OF LAST 2550 STATUS
  2844. NCOD BUF MXNPU TIME TERMINAL OUTPUT CHECKED
  2845. NREL BUF MXNPU NUMBER OF TIMES 2550 RE-LOADED
  2846. CSTS BUF MXNPU COUPLER STATUS
  2847. SSTS BUF MXNPU CCP SOFTWARE STATUS
  2848. NUSR BUF MXNPU NUMBER OF USERS ON THIS NPU
  2849. NTIM BUF MXNPU MSEC CLOCK WHEN LAST PROCESSED
  2850. NCYC BUF MXNPU MSECS BETWEEN PREVIOUS CYCLES
  2851. NNOR BUF MXNPU NUMBER OF OUTPUT REJECTS
  2852. NNBO BUF MXNPU NUMBER OF BLOCKS OUTPUT (SENT)
  2853. NNBI BUF MXNPU NUMBER OF BLOCKS INPUT (RCVD)
  2854. NLBS BUF MXNPU SIZE OF LAST BLOCK TO 2550
  2855. NPPB BUF MXNPU NUMBER OF PACKETS IN LAST BLOCK
  2856.  
  2857. NDEF BUF 20*MXNPU+1 MOVED DIRECT CELLS
  2858. NCB EQU NDEF+0 CONNECTION BASE
  2859. NEQ EQU NDEF+1 EQUIPMENT NUMBER
  2860. NSD EQU NDEF+2 S(D)
  2861. NSB EQU NDEF+3 FIRST STATION NUMBER
  2862.  
  2863. * PP TO FRAMAT POINTERS
  2864.  
  2865. NFP1 EQU NDEF+4 IN/OUT POINTERS ADDRESS
  2866. NFB1 EQU NDEF+6 BUFFER ADDRESS
  2867. NFI1 EQU NDEF+10 IN POINTER
  2868. NFO1 EQU NDEF+11 OUT POINTER
  2869.  
  2870. * FRAMAT TO PP POINTERS
  2871.  
  2872. NFP2 EQU NDEF+12 IN/OUT POINTERS ADDRESS
  2873. NFB2 EQU NDEF+14 BUFFER ADDRESS
  2874. NFI2 EQU NDEF+16 IN POINTER
  2875. NFO2 EQU NDEF+17 IN POINTER
  2876. * /--- BLOCK BUFFERS 00 000 86/05/28 14.15
  2877.  
  2878. PRE EQU .1 START OF INITIALIZATION CODE
  2879.  
  2880. OBUF BUF OBUFL OUTPUT BUFFER TO 2550
  2881.  
  2882. * THE ASCII TO PLATO KEY TRANSLATION OVERLAY
  2883. * IS LOADED BY PRESET INTO KEYS
  2884.  
  2885. * ** NOTE ** THE KEY TABLE IS ONLY 200B PP WORDS
  2886. * LONG, BUT IT IS READ FROM CM, SO THE BUFFER MUST
  2887. * BE LONG ENOUGH TO HANDLE THE 2 EXTRA PP WORDS IN
  2888. * THE LAST CM WORD.
  2889. KEYS BUF 202 KEY TRANSLATION TABLE
  2890. KEYA EQU KEYS-3 LOAD ADDRESS FOR TABLE
  2891.  
  2892. ZERA BUF 0 FWA ZEROED BY PRESET
  2893.  
  2894. * COMPUTE NUMBER OF TERMINALS THAT CAN BE
  2895. * SUPPORTED.
  2896.  
  2897. .2 SET 7777-.1 SPACE LEFT IN PP
  2898. MXT EQU .2/4 MAXIMUM NUMBER OF TERMINALS
  2899.  
  2900. * TERMINAL STATUS TABLE
  2901. *
  2902. * BIT 11 - HOLD OUTPUT
  2903. * 10 - PERMISSION TO SEND SENT TO FRAMATTER
  2904. * 9 - TERMINAL ACTIVE
  2905. * 8 - KEY BUFFER OVERFLOWING
  2906. * 7 - TERMINAL IN ESCAPE MODE
  2907. * 6 - FIRST ESCAPE CHARACTER FOUND
  2908. * 5 - 0 - FIRST ESCAPE CHARACTER
  2909.  
  2910. TST BUF MXT TERMINAL STATUS TABLE
  2911.  
  2912. SDT BUF MXT PLATO TO S(D) ADDRESS TABLE
  2913.  
  2914. * PLATO TO T(D) ADDRESS TABLE
  2915. *
  2916. * BIT 11 = 0 - 1200 BAUD
  2917. * 1 - 300 BAUD
  2918. * 10 = 0 - STANDARD (IST) TERMINAL TYPE
  2919. * 1 - TEKTRONIX TERMINAL TYPE
  2920. * 9 = 0 - USE OLD KEY TRANSLATION TABLE
  2921. * 1 - USE NEW KEY TRANSLATION TABLE
  2922. * 8 = UNUSED
  2923. * 7 - 0 = T(D) FOR THIS CONNECTION
  2924. TDT BUF MXT PLATO TO T(D) ADDRESS TABLE
  2925. TOD BUF MXT TERMINAL OUTPUT DELAY TABLE
  2926.  
  2927. * /--- BLOCK BUFFERS 00 000 86/05/28 14.15
  2928. CMB SPACE 5,11
  2929. ** CENTRAL MEMORY BUFFER DEFINITION
  2930. *
  2931. * 0 - 1 UNUSED
  2932. * WORD 2 PARAMETERS FOR TUNING PERF.
  2933. * *MXDSN*/*MXNPU* MAIN DRIVER REQUESTS (ONE PER PPU)
  2934. * 2 *MXDSN* WORDS NPU STATISTICS IN CM
  2935. *
  2936. * 100 WORDS / PP CM/ECS BUFFER
  2937. *
  2938. * 2 WORDS / TERMINAL TERMINAL TABLE
  2939. * BYTE 0 - 8/TERMINAL TYPE
  2940. * 4/OVERFLOW KEY COUNT
  2941. * BYTE 1 - DROPPED KEY COUNT
  2942. * BYTE 2-9 - OVERFLOW KEYS
  2943.  
  2944. PARAMS EQU 2 12/MIN PP-2550 BLOCK TIME, 48/0
  2945. .1 SET /PLAT/MXDSN+MXNPU-1
  2946. DR EQU PARAMS+1 REQUESTS FROM MAIN DRIVER PP
  2947. TS EQU DR+.1/MXNPU TERMINAL COUNTS
  2948. * DON'7T FORGET *CCDR* IS USED BY THE CFO'7S.
  2949. NK EQU 100 NEW KEY TRANSLATION TABLE
  2950. OK EQU NK+32 OLD KEY TRANSLATION TABLE
  2951. .NOSV2 IFGE OSLEV,562D NOS V2
  2952. EB EQU OK+32+1 CM/EM BUFFER ADDRESS
  2953. EBHEAD EQU EB-1 EM/BUFFER HEADER ADDRESS
  2954. .NOSV2 ELSE NOS V1
  2955. EB EQU OK+32 CM/EM BUFFER ADDRESS
  2956. .NOSV2 ENDIF
  2957. * /--- BLOCK PRESET 00 000 86/05/28 14.19
  2958. PRS TITLE INITIALIZATION ROUTINES.
  2959. PRS SPACE 5,11
  2960. ** PRS - INITIALIZE PROCESSING.
  2961.  
  2962.  
  2963. QUAL PRESET
  2964.  
  2965. ORG PRE
  2966.  
  2967. * CLEAR TABLES
  2968.  
  2969. PRS5 EXECUTE NKY,= LOAD NEW KEY TRANSLATION TABLE
  2970. LDC /NKY/OVL
  2971. RJM EXR
  2972. LDN 32
  2973. STD T1 LENGTH OF KEY TABLE
  2974. LDD RA
  2975. SHN 6
  2976. ADK NK ADDRESS OF NEW KEY TABLE
  2977. CWM KEYS,T1 WRITE KEY TABLE TO CM
  2978. EXECUTE KEY,= LOAD OLD KEY TRANSLATION TABLE
  2979. LDC /KEY/OVL
  2980. RJM EXR
  2981. LDN 32
  2982. STD T1 LENGTH OF KEY TABLE
  2983. LDD RA
  2984. SHN 6
  2985. ADK OK ADDRESS OF OLD KEY TABLE IN CM
  2986. CWM KEYS,T1 WRITE KEY TABLE TO CM
  2987.  
  2988. * INITIALIZE PARAMETER WORD IN CM
  2989.  
  2990. LDK ZERL ZERO PARAM WORD
  2991. CRD CM
  2992. LDK 20D DEFAULT MSEC TIME FOR PP-2550
  2993. STD CM BLOCKS (METERING)
  2994. LDK 4+28D-1 DEFAULT FREE WORDS IN A ',FULL',
  2995. STD CM+1 PP-2550 BLOCK (OUR PKT SIZE-1)
  2996.  
  2997. LDD RA
  2998. SHN 6
  2999. ADK PARAMS
  3000. CWD CM
  3001.  
  3002. LDC ZERA FWA TO ZERO
  3003. STD T1
  3004. PRS6 LDN 0 CLEAR NEXT WORD
  3005. STI T1
  3006. AOD T1
  3007. LMC 10000
  3008. NJN PRS6 IF MORE MEMORY TO CLEAR
  3009. STM MSD CLEAR MASS STORAGE DRIVER
  3010. STD OL
  3011. STD OD
  3012. STM INIC SHOW INITIALIZATIONS COMPLETE
  3013. LDC RTCL SET UP DATA METERING CLOCK
  3014. CRD CM
  3015. LDD CM+4
  3016. LDD CM+1
  3017. STM .MAIB SET OUTPUT REJECT IMER
  3018.  
  3019. * /--- BLOCK PRESET 00 000 86/05/28 14.19
  3020.  
  3021. PRS SUBR
  3022. ERRPL *-KEYA+5 FIXED PRESET TOO LONG
  3023. RJM ICP INITIALIZE CONTROL POINT
  3024. LDD IR+2
  3025. ZJN PRS1 IF DRIVER CALL
  3026. RJM IRL INITIALIZE 2550 RE-LOAD
  3027. UJN PRS1.1
  3028.  
  3029. PRS1 EXECUTE IDP,= INITIALIZE ESM ACCESS
  3030. LDC /IDP/OVL
  3031. RJM EXR
  3032. ZJN PRS1.03 DDP RESERVED
  3033. MJN PRS1.01 IF 800 SERIES
  3034. EXECUTE EM7,=
  3035. LDC /EM7/OVL
  3036. UJN PRS1.02
  3037.  
  3038. PRS1.01 EXECUTE EM8,=
  3039. LDC /EM8/OVL
  3040. PRS1.02 RJM EXR EM ACCESS FOR 800 SERIES
  3041. PRS1.03 BSS 0
  3042. RJM IFC INITIALIZE FRAMAT INTERFACE
  3043. EXECUTE RFE,= RESERVE 2550S
  3044. LDC /RFE/OVL
  3045. RJM EXR
  3046. PRS1.1 RJM FLF FIND LOAD FILE
  3047.  
  3048. * INITIALIZE 2550
  3049.  
  3050. LCN 0
  3051. STD NI
  3052. PRS2 RJM SNP SET UP NPU
  3053. ZJN PRS3 IF CYCLED THROUGH ALL NPUS
  3054. RJM IFE
  3055. UJN PRS2 IF MORE NPUS
  3056.  
  3057. * INITIALIZE LAST STATUS CLOCKS
  3058.  
  3059. PRS3 LDC RTCL
  3060. CRD CM
  3061. LDN 0
  3062. STD T1
  3063. PRS4 LDD CM+1
  3064. STM NSTS,T1
  3065. AOD T1
  3066. LMM .SNPA
  3067. NJN PRS4 IF MORE 2550S
  3068. LDD CP
  3069. ADN MS1W
  3070. CWM PRSA,TR * WAIT DPNC RESET.*
  3071. LDD IR+2
  3072. NJN PRS4.1 IF RE-LOAD CALL
  3073. LJM PRS5 CLEAR TABLES
  3074.  
  3075. * COMPLETE RE-LOAD PROCESSING
  3076.  
  3077. PRS4.1 LJM TER
  3078.  
  3079. PRSA DATA C* WAIT DPNC RESET.*
  3080. * /--- BLOCK IFE 00 000 82/12/02 21.25
  3081. IFE SPACE 5,11
  3082. ** IFE - INITIALIZE FRONT END.
  3083. *
  3084. * THIS ROUTINE PREPARES THE 2550 FOR ACCESSING
  3085. * THE NETWORK. CCP 2.0 IS LOADED INTO THE 2550
  3086. * AND THE NETWORK IS STARTED.
  3087.  
  3088.  
  3089. IFE SUBR
  3090. LDC FECH2 SET CHANNEL INSTRUCTIONS
  3091. STD T2
  3092. LDM NCH,NI
  3093. RJM ICH
  3094.  
  3095. * LOAD MICRO-CODE
  3096.  
  3097. LDC IFEA LOAD MICRO-CODE
  3098. STD CB
  3099. EXECUTE LPG,= LOAD A PROGRAM
  3100. LDC /LPG/OVL
  3101. RJM EXR
  3102.  
  3103. * WAIT FOR MICRO-CODE TO INITIALIZE
  3104.  
  3105. LDN SNU START 2550
  3106. RJM FNC
  3107. IFE1 LDC RTCL SET UP STATUS CLOCK
  3108. CRD CM
  3109. LDD CM+1
  3110. STM NSTS,NI
  3111. IFE2 RJM STS GET 2550 STATUS
  3112. MJN IFE2 IF NO STATUS
  3113. SBN IDL
  3114. ZJN IFE1 IF 2550 DEADSTARTED
  3115. SBN 8D-IDL
  3116. NJN IFE4 IF NOT MICRO LOAD COMPLETE
  3117.  
  3118. * LOAD MACRO-CODE
  3119.  
  3120. LDC IFEB LOAD MACRO-CODE
  3121. STD CB
  3122. EXECUTE LPG,= LOAD A PROGRAM
  3123. LDC /LPG/OVL
  3124. RJM EXR
  3125. EXECUTE GPS,= GET PRIMARY SWITCH
  3126. LDC /GPS/OVL
  3127. RJM EXR
  3128. RJM WTB
  3129.  
  3130. * WAIT FOR MACRO-CODE TO INITIALIZE
  3131.  
  3132. LDN SNU START 2550
  3133. RJM FNC
  3134. LDC RTCL SET UP STATUS CLOCK
  3135. CRD CM
  3136. LDD CM+1
  3137. STM NSTS,NI
  3138. IFE3 RJM STS GET 2550 STATUS
  3139. MJN IFE3 IF NO STATUS
  3140. SBN IDL
  3141. ZJN IFE5 IF 2550 DEADSTARTED
  3142. IFE4 LDN NSTE INVALID NPU STATUS
  3143. LJM MXE ABORT
  3144.  
  3145. IFE5 LJM IFEX EXIT
  3146.  
  3147. IFEA CON 0,0,0 DISK ADDRESS OF MICRO-CODE
  3148. IFEB CON 0,0,0 DISK ADDRESS OF MACRO-CODE
  3149. * /--- BLOCK SET 00 000 79/02/22 08.41
  3150. SET SPACE 5,11
  3151. ** SET - SET 2550 STORE ADDRESS
  3152. *
  3153. * ENTRY - (BUF) = 2550 ADDRESS
  3154. * EXIT - 2550 ADDRESS LOADED
  3155.  
  3156.  
  3157. SET SUBR
  3158. LDM BUF+1
  3159. SHN 10
  3160. ADM BUF+2
  3161. STD T1
  3162. LDN OMO OUTPUT MEMORY ADDRESS
  3163. RJM FNC
  3164. LDM BUF+3
  3165. STD T1
  3166. LDN OMT
  3167. RJM FNC
  3168. UJN SETX EXIT
  3169. * /--- BLOCK WTB 00 000 82/12/02 16.13
  3170. WTB SPACE 5,11
  3171. ** WTB - WRITE BUFFER TO 2550 AND VERIFY IT.
  3172. *
  3173. * ENTRY - BUF CONTAINS THE ADDRESS AND DATA
  3174.  
  3175.  
  3176. WTB SUBR
  3177. WTB1 RJM SET SEND 2550 ADDRESS
  3178. LDN OPG OUTPUT PROGRAM
  3179. ADD EQ
  3180. FAN CH
  3181. RJM IJM
  3182. ACN CH
  3183. LDM BUF+5
  3184. SHN 1 NUMBER OF BYTES TO OUTPUT
  3185. OAM BUF+6,CH
  3186. FJM *,CH
  3187. DCN CH+40
  3188. ZJN WTB2 IF TRANSFER COMPLETE
  3189. LDN OUTE
  3190. UJN WTB3 ABORT
  3191.  
  3192. WTB2 RJM SET SET UP ADDRESS
  3193. LDN IPG INPUT PROGRAM
  3194. ADD EQ
  3195. FAN CH
  3196. RJM IJM
  3197. ACN CH
  3198. LDM BUF+5
  3199. SHN 1
  3200. IAM BUF2,CH
  3201. DCN CH+40
  3202. ZJN WTB4 IF TRANSFER COMPLETE
  3203. LDN INCE
  3204. WTB3 LJM MXE ABORT
  3205.  
  3206. WTB4 LDM BUF+5
  3207. SHN 1
  3208. STD T1 SET LENGTH
  3209. WTB5 SOD T1
  3210. MJN WTB7 IF LAST WORD CHECKED
  3211. LDM BUF+6,T1
  3212. LMM BUF2,T1
  3213. ZJN WTB5 IF DATA COMPARES
  3214.  
  3215. * PROCESS COMPARE ERROR
  3216.  
  3217. RJM STS
  3218. LDC CLC CLEAR COUPLER
  3219. RJM FNC
  3220. SOM WTBB DECREMENT ERROR COUNTER
  3221. NJN WTB6 IF MORE ERRORS LEFT
  3222. LDN CMPE COMPARE ERRORS
  3223. UJN WTB3 ABORT
  3224.  
  3225. WTB6 LJM WTB1 TRY AGAIN
  3226.  
  3227. WTB7 LJM WTBX EXIT
  3228.  
  3229. WTBB CON 32 MAXIMUM COMPARE ERRORS ACCEPTED
  3230.  
  3231. * COMMON DECKS
  3232.  
  3233. *CALL COMPRNS
  3234.  
  3235.  
  3236. DPCH CHTB DDP / 2550 CHANNEL TABLE
  3237. * /--- BLOCK CEA 00 000 86/05/28 14.21
  3238. TITLE OVERLAYED INITIALIZATION ROUTINES.
  3239. SPACE 5
  3240. OVLB BSS 0 START OF OVERLAYED PRESET CODE
  3241. CEA SPACE 5,11
  3242. ** CEA - CONVERT ECS ADDRESS
  3243. *
  3244. * ENTRY - (A) = PP ADDRESS OF ECS ADDRESS TO CONVERT
  3245. * (T4-T5)= RAX BY WHICH TO BIAS ADDRESS
  3246.  
  3247.  
  3248. CEA SUBR
  3249. STD T1
  3250. LDD T4+1
  3251. RAM 1,T1
  3252. SHN -14
  3253. ADD T4
  3254. RAI T1
  3255. UJN CEAX
  3256. * /--- BLOCK FLF 00 000 86/05/28 14.21
  3257. FLF SPACE 5,11
  3258. ** FLF - FIND LOAD FILE
  3259. *
  3260. * THE CLD IS SEARCHED FOR *PPU/CCB* AND *PPU/CCP*.
  3261. *
  3262. * EXIT - (IFEA) = DISK ADDRESS OF CCB FILE
  3263. * (IFEB) = DISK ADDRESS OF CCP FILE
  3264.  
  3265.  
  3266. * GET SYSTEM EQUIPMENT ORDINAL FROM *SYSTEM* FST
  3267.  
  3268. FLF3 LDN FNTP
  3269. CRD CM
  3270. .NOSV2 IFGE OSLEV,562D NOS V2
  3271. LDD CM
  3272. SHN 14B
  3273. ADD CM+1
  3274. ADN 1
  3275. .NOSV2 ELSE NOS V1
  3276. AOD CM
  3277. .NOSV2 ENDIF
  3278. CRD CM READ FST FOR SYSTEM
  3279. LDD CM
  3280. .NOSV1 IFLT OSLEV,562D NOS V1
  3281. LPN 77
  3282. .NOSV1 ENDIF
  3283. STM IFEA
  3284. STM IFEB
  3285.  
  3286. FLF SUBR
  3287.  
  3288. * SEARCH FOR PPU/CCB FILE
  3289.  
  3290. LDD MA SET FILE NAME
  3291. CWM FLFA,ON
  3292. SBN 1
  3293. CRD AB
  3294. RJM CLD SEARCH SYSTEM FOR LOAD FILE
  3295. NJN FLF2 IF FOUND
  3296. FLF1 LDN LNFE LOAD FILE NOT FOUND
  3297. RJM MES
  3298. LJM TER
  3299.  
  3300. FLF2 CRD CN READ LIBRARY POINTER
  3301. LDD CN+3 SET FIRST TRACK
  3302. STM IFEA+1
  3303. LDD CN+4 SET FIRST SECTOR
  3304. STM IFEA+2
  3305.  
  3306. * SEARCH FOR PPU/CCP FILE
  3307.  
  3308. LDD MA SET FILE NAME
  3309. CWM FLFB,ON
  3310. SBN 1
  3311. CRD AB
  3312. RJM CLD SEARCH SYSTEM FOR LOAD FILE
  3313. ZJN FLF1 IF NOT FOUND
  3314. CRD CN READ LIBRARY POINTER
  3315. LDD CN+3 SET FIRST TRACK
  3316. STM IFEB+1
  3317. LDD CN+4 SET FIRST SECTOR
  3318. STM IFEB+2
  3319. LJM FLF3
  3320.  
  3321. FLFA VFD 42/0LCCB,18/0
  3322. FLFB VFD 42/0LCCP,18/0
  3323. * /--- BLOCK ICP 00 000 86/05/28 14.22
  3324. .VERS2 IFGE OSLEV,562D NOS V2
  3325. IFP$ EQU 1
  3326. EJT$ EQU 1 ASSEMBLE ROUTINE .CEA
  3327. *CALL COMPGFP
  3328. IFP HERE
  3329. *CALL PLAPCJN
  3330. .VERS2 ENDIF
  3331. ICP SPACE 4,10
  3332. ** ICP - INITIALIZE CONTROL POINT
  3333. *
  3334. * SET QUEUE PRIORITY TO *MXPS* + 1.
  3335. * SET JOB NAME TO *DSN*.
  3336. * SET INITIAL FIELD LENGTH.
  3337. * VERIFY ALL DSN OVERLAYS ARE CM RESIDENT
  3338.  
  3339.  
  3340. ICP SUBR ENTRY / EXIT
  3341. .NOSV2 IFGE OSLEV,562D NOS V2
  3342. RJM IFP INITIALIZATION FOR COMPGFP
  3343. .NOSV2 ENDIF
  3344. RJM CUA CHECK USER ACCESS
  3345. ZJN ICP1 IF SYOT
  3346. LDN IUAE ILLEGAL USER ACCESS
  3347. RJM MES
  3348. MONITOR ABTM
  3349. LJM PPR
  3350.  
  3351. ICP1 LDD PO
  3352. NJN ICPX IF NOT INITIAL PP DRIVER
  3353.  
  3354. * SET QUEUE PRIORITY
  3355.  
  3356. .NOSV2 IFGE OSLEV,562D NOS V2
  3357. LDN IRSI NON-ROLLABLE SUBSYSTEM ID
  3358. STD CM+4
  3359. LDN /CPS/SSIS SET SUBSYSTEM ID FUNCTION CODE
  3360. STD CM+1
  3361. MONITOR SJCM
  3362. .NOSV2 ELSE NOS V1
  3363. LDC MXPS+1
  3364. STD CM+1
  3365. LDN 1 SET TYPE TO QUEUE PRIORITY
  3366. STD CM+2
  3367. MONITOR RPRM
  3368. .NOSV2 ENDIF
  3369.  
  3370. * SET JOB NAME
  3371.  
  3372. .NOSV2 IFGE OSLEV,562D NOS V2
  3373. LDD IR GET NAME FROM INPUT REGISTER
  3374. STD T0
  3375. LDD IR+1
  3376. SCN 77
  3377. ADN 1R
  3378. STD T0+1
  3379. LDN T0 (A) = ADDRESS OF NEW NAME
  3380. RJM CJN CHANGE JOB NAME IN EJT
  3381. .NOSV2 ELSE NOS V1
  3382. LDD CP
  3383. ADN JNMW
  3384. CRD CM
  3385. LDD IR
  3386. STD CM
  3387. LDD IR+1
  3388. SCN 77
  3389. ADN 1R0
  3390. STD CM+1
  3391. LDD CP WRITE OUT JOB NAME
  3392. ADN JNMW
  3393. CWD CM
  3394. .NOSV2 ENDIF
  3395.  
  3396. * /--- BLOCK ICP 00 000 86/05/28 14.22
  3397.  
  3398. * GET INITIAL FIELD LENGTH
  3399.  
  3400. LDN 1 REDUCE TO 100B WORDS
  3401. RJM RFL
  3402.  
  3403. * VERIFY OVERLAYS ARE CM RESIDENT
  3404.  
  3405. LDN 0
  3406. STD T1
  3407. ICP2 LDD T1
  3408. ADC 3R"OVN"_A
  3409. STD CM+3
  3410. SHN -14
  3411. STD CM+2
  3412. MONITOR SPLM
  3413. LDD CM+1
  3414. SHN -6
  3415. SBN 1
  3416. NJN ICP3 IF NOT CM RESIDENT
  3417. AOD T1
  3418. LMN OVLC
  3419. NJN ICP2 IF MORE OVERLAYS
  3420.  
  3421. * CLEAR FIRST 100 WORDS OF CM
  3422.  
  3423. LDN 1
  3424. STD T1
  3425. LDN ZERL
  3426. CRD CM
  3427. ICP2.1 LDD RA
  3428. SHN 6
  3429. ADD T1
  3430. CWD CM
  3431. AOD T1
  3432. SHN 21-6
  3433. PJN ICP2.1 IF MORE WORDS TO CLEAR
  3434.  
  3435. * SET CFO BIT
  3436.  
  3437. LDD RA
  3438. SHN 6
  3439. CRD CM
  3440. LDN 4
  3441. STD CM+3
  3442. LDD RA
  3443. SHN 6
  3444. CWD CM
  3445. LJM ICPX EXIT
  3446.  
  3447. ICP3 LDN OCME OVERLAYS MUST BE CM RESIDENT
  3448. RJM MES
  3449. LJM TER
  3450.  
  3451. * /--- BLOCK IFC 00 000 87/02/24 10.38
  3452. IFC SPACE 5,11
  3453. ** IFC - INITIALIZE FRAMAT COMMUNICATION
  3454.  
  3455.  
  3456. IFC12 LJM TER DROP PP
  3457.  
  3458. IFC SUBR
  3459. LDD CP
  3460. ADN MS1W
  3461. CWM IFCA,TR * WAITING FOR PLATO.*
  3462.  
  3463. * FIND PLATO,S CONTROL POINT
  3464.  
  3465. IFC1 LDN NCPL READ NUMBER OF CONTROL POINTS
  3466. CRD CN
  3467. IFC2 PAUSE
  3468. LDD CM+1
  3469. NJN IFC12 IF ERROR FLAG SET
  3470. .NOSV2 IFGE OSLEV,562D NOS V2
  3471. LDD CN+1
  3472. .NOSV2 ELSE NOS V1
  3473. LDD CN+3
  3474. .NOSV2 ENDIF
  3475. SHN 7
  3476. ADN STSW
  3477. CRD T1
  3478. .NOSV2 IFGE OSLEV,562D NOS V2
  3479. ADC TFSW-STSW
  3480. .NOSV2 ELSE NOS V1
  3481. ADC JNMW-STSW
  3482. .NOSV2 ENDIF
  3483. STM PSEA SET ADDRESS FOR PAUSE
  3484. CRD CM
  3485. .NOSV2 IFGE OSLEV,562D NOS V2
  3486. SFA EJT,CM
  3487. CRD CM READ JSNE WORD FROM EJT
  3488. .NOSV2 ENDIF
  3489. LDD CM
  3490. LMC 2RPL
  3491. NJN IFC3 IF NOT PLATO
  3492. LDD CM+1
  3493. SHN -6
  3494. LMN 1RA
  3495. ZJN IFC5 IF PLATO
  3496. .NOSV2 IFGE OSLEV,562D NOS V2
  3497. IFC3 SOD CN+1
  3498. .NOSV2 ELSE NOS V1
  3499. IFC3 SOD CN+3
  3500. .NOSV2 ENDIF
  3501. .NOSV2 IFGE OSLEV,562D NOS V2
  3502. ZJP IFC1 IF NO MORE CONTROL POINTS
  3503. .NOSV2 ELSE NOS V1
  3504. ZJN IFC1 IF NO MORE CONTROL POINTS
  3505. .NOSV2 ENDIF
  3506. IFC4 LJM IFC2 CHECK NEXT CONTROL POINT
  3507. * /--- BLOCK IFC 00 000 87/02/24 10.41
  3508.  
  3509. IFC5 STM MSD CLEAR MASS STORAGE DRIVER
  3510. LDD T1
  3511. .NOSV2 IFGE OSLEV,562D NOS V2
  3512. SHN -11B CHECK FOR *X* STATUS (5)
  3513. LMN 5
  3514. NJP IFC4 IF NOT IN *X* STATUS
  3515. LDD CN+1 READ RAX FROM EXCHANGE PACKAGE
  3516. .NOSV2 ELSE NOS V1
  3517. SHN 21-12 CHECK IF IN *X* STATUS
  3518. PJN IFC4 IF NOT IN *X* STATUS
  3519. LDD CN+3 READ RAX FROM EXCHANGE PACKAGE
  3520. .NOSV2 ENDIF
  3521. SHN 7
  3522. ADN 4
  3523. CRD T4
  3524. LDD T4
  3525. ADD T4+1
  3526. ZJN IFC4 IF RAX = 0
  3527. .NOS252 IFGE OSLEV,678D
  3528. LDK MEFL
  3529. CRD CM
  3530. LDD CM+2
  3531. SHN 6+4 EXTENDED ADDRESSING BIT
  3532. PJN IFC5.1 IF STANDARD MODE
  3533. .NOS252 ELSE
  3534. .NOSV2 IFGE OSLEV,562D NOS V2
  3535. LDK CFGL (A) = WORD WITH EM MODE
  3536. .NOSV2 ELSE NOS V1
  3537. LDN CPUL
  3538. .NOSV2 ENDIF
  3539. CRD CM
  3540. LDD CM+ESMW
  3541. SHN 21-ESMB
  3542. PJN IFC5.1 IF ECS MODE
  3543. .NOS252 ENDIF
  3544.  
  3545. * /--- BLOCK IFC 00 000 86/05/28 14.23
  3546.  
  3547. * UPDATE *RAX* TO ECS FORMAT
  3548.  
  3549. LDD T4+1
  3550. SCN 77
  3551. SHN 6
  3552. LMD T4
  3553. SHN 6
  3554. STD T4
  3555. LDD T4+1
  3556. SHN 6
  3557. STD T4+1
  3558.  
  3559. * READ POINTER WORD
  3560.  
  3561. IFC5.1 LDN DSNI
  3562. ADD T4+1
  3563. STD T2
  3564. SHN -14
  3565. ADD T4
  3566. STD T1
  3567. LDN 1
  3568. STD T3 SET CM WORD COUNT
  3569. LDN CN (A) = PP ADDRESS
  3570. RJM RECS
  3571. ZJN IFC8
  3572. IFC6 LJM TER DROP ON ERROR
  3573.  
  3574. IFC7 LJM IFC1
  3575.  
  3576. IFC8 LDD CN+3 CHECK IF ADDRESS PRESENT
  3577. ADD CN+4
  3578. ZJN IFC7 WAIT UNTIL ADDRESS AVAILABLE
  3579. LDD CN+4 READ POINTER TABLE
  3580. ADD T4+1
  3581. STD T2
  3582. SHN -14
  3583. ADD CN+3
  3584. ADD T4
  3585. STD T1
  3586. LDN 3+/PLAT/MXDSN*3
  3587. STD T3
  3588. LDC //BUF
  3589. RJM RECS
  3590. NJN IFC6 IF ECS ERROR
  3591.  
  3592. * ABSOLUTIZE ECS ADDRESSES
  3593.  
  3594. LDC //BUF+1 POLLING LIST ADDRESS
  3595. RJM CEA
  3596. LDM //BUF+1
  3597. STD BT
  3598. LDM //BUF+2
  3599. STD BT+1
  3600. LDC //BUF+3 KEY BUFFER ADDRESS
  3601. RJM CEA
  3602. LDM //BUF+3
  3603. STD KB
  3604. LDM //BUF+4
  3605. STD KB+1
  3606. LDC //BUF+5+1 STATION BANKS FWA
  3607. RJM CEA
  3608. LDM //BUF+5+1
  3609. STM NSYSBNK
  3610. LDM //BUF+5+2
  3611. STM NSYSBNK+1
  3612. LDM //BUF+5 SET DISPLACEMENT TO *BANKADD*
  3613. STM BANKADD
  3614. LDC //BUF+2*5
  3615. RJM CEA
  3616. LDM //BUF+2*5
  3617. STM ASCCON ASCII CONNECTION TABLE
  3618. LDM //BUF+2*5+1
  3619. STM ASCCON+1
  3620.  
  3621. * SET *LIMIT* VALUES
  3622.  
  3623. LDM //BUF+3*5
  3624. STD FL1
  3625. LDM //BUF+4*5
  3626. STD FL2
  3627. * /--- BLOCK IFC 00 000 82/05/09 21.38
  3628.  
  3629. * DETERMINE 2550S TO BE DRIVEN BY THIS PP
  3630.  
  3631. LDC //BUF+3*5
  3632. STD T2
  3633. LDM //BUF
  3634. STD T6 (T6) = TOTAL 2550 TO SUPPORT
  3635. LDN 0
  3636. STD T0 (T0) = CURRENT 2550 ORDINAL
  3637. LDD IR+4 SET PP ORDINAL
  3638. STD T3
  3639. IFC8.1 ZJN IFC8.2 IF FOUND THIS PP,S FIRST 2250
  3640. LDN 3*5*MXNPU
  3641. RAD T2
  3642. LDN MXNPU*2 2 WDS/NPU
  3643. RAM UMTB CM TERMINAL COUNT WORD
  3644. LDN MXNPU
  3645. RAD T0
  3646. SOD T3
  3647. UJN IFC8.1
  3648.  
  3649. * CLEAR MESSAGE
  3650.  
  3651. IFC8.2 LDN ZERL
  3652. CRD CM
  3653. LDD CP
  3654. ADN MS1W
  3655. CWD CM
  3656.  
  3657. * DETERMINE NUMBER OF PPS TO DRIVE
  3658.  
  3659. LDN 0
  3660. STD NI
  3661. STD CB
  3662. LDD T6
  3663. SBD T0
  3664. STD T6 (T6) = NUMBER OF 2550 TO DRIVE
  3665. SBN MXNPU
  3666. MJN IFC8.3 IF NOT TOO MANY 2550S FOR PP
  3667. LDN MXNPU
  3668. STD T6 (T6) = NUMBER OF 2550 TO DRIVE
  3669. * /--- BLOCK IFC 00 000 82/04/15 11.43
  3670.  
  3671. * INITIALIZE TABLES FOR THIS 2550
  3672.  
  3673. IFC8.3 LDN 1 PP TO FRAMAT IN/OUT POINTERS
  3674. ADD T2
  3675. RJM CEA
  3676. LDN 3 PP TO FRAMAT BUFFER ADDRESS
  3677. ADD T2
  3678. RJM CEA
  3679. LDN 5+1 FRAMAT TO PP IN/OUT POINTERS
  3680. ADD T2
  3681. RJM CEA
  3682. LDC 5+3 FRAMAT TO PP BUFFER ADDRESS
  3683. ADD T2
  3684. RJM CEA
  3685. LDD T0
  3686. STM NORD,NI
  3687. LDN 0
  3688. STM NEST,NI SHOW NO EQUIPMENT ASSIGNED
  3689. LDD NI
  3690. SHN 4
  3691. STD T1
  3692. LDM 12,T2
  3693. SHN 5
  3694. STM NSB,T1 SET BASE STATION
  3695. LDD CB
  3696. STM NCB,T1 SET BASE INDEX INTO TERM TABLE
  3697. LDM 12+2,T2 SET PLATO S(D)
  3698. STM NSD,T1
  3699. LDM 12+3,T2 SET PLATO SYSTEM NUMBER
  3700. STM NSN,NI
  3701. LDM 12+4,T2 SET DPNC S(D)
  3702. STM NDS,NI
  3703. LDN 0
  3704. STM NMT,NI SET NUMBER OF CONNECTIONS
  3705. LDD RA
  3706. SHN 6
  3707. ADM UMTB
  3708. ADD NI
  3709. CWD CM
  3710. ADN 1 2 WDS/NPU
  3711. CWD CM
  3712. LDM 12+1,T2
  3713. SHN 5
  3714. RAD CB SET BASE FOR NEXT 2550
  3715. LDM 1,T2 MOVE ESM ADDRESSES
  3716. STM NFP1,T1
  3717. LDM 2,T2
  3718. STM NFP1+1,T1
  3719. LDM 3,T2
  3720. STM NFB1,T1
  3721. LDM 4,T2
  3722. STM NFB1+1,T1
  3723. LDM 5+1,T2
  3724. STM NFP2,T1
  3725. LDM 5+2,T2
  3726. STM NFP2+1,T1
  3727. LDM 5+3,T2
  3728. STM NFB2,T1
  3729. LDM 5+4,T2
  3730. STM NFB2+1,T1
  3731. LDN 3*5
  3732. RAD T2
  3733. AOD T0
  3734. AOD NI
  3735. LMD T6
  3736. ZJN IFC8.4 IF NO MORE 2550,S
  3737. LJM IFC8.3 SET UP NEXT 2550
  3738. * /--- BLOCK IFC 00 000 82/04/23 08.55
  3739.  
  3740. * VERIFY PP TABLES LARGE ENOUGH FOR SITES
  3741.  
  3742. IFC8.4 LDC MXT MAXIMUM NUMBER OF TERMINALS
  3743. SBD CB
  3744. PJN IFC10 IF TABLES DO NOT OVERFLOW
  3745. LDN SOTE SITES OVERFLOW PP TABLES
  3746. RJM MES
  3747. LJM TER
  3748.  
  3749. IFC10 LDD NI
  3750. STM .SNPA SET TOTAL 2550S TO PROCESS
  3751. SHN 4
  3752. STD T1
  3753. LDD CB SET LAST CONNECTION
  3754. STM NCB,T1
  3755. LDD IR+4
  3756. NJN IFC10.1 IF NOT PRIMARY PP
  3757. RJM INI INITIALIZE FL AND OTHER PPS
  3758. UJN IFC11
  3759.  
  3760. IFC10.1 LDC //BUF+3*5+1
  3761. RJM CEA
  3762.  
  3763. * SET BASE ADDRESS FOR IN/OUT POINTERS
  3764.  
  3765. IFC11 LDM //BUF+3*5+1
  3766. STM .UPDA
  3767. STM .UPDC
  3768. LDM //BUF+3*5+2
  3769. STM .UPDB
  3770. STM .UPDD
  3771.  
  3772. * SET DISPLACEMENT TO FRAMAT TO PP POINTERS
  3773.  
  3774. LDM //BUF (A) = TOTAL 2550S
  3775. STD T1
  3776. RAM UMTC
  3777. LDD T1
  3778. SHN 1 OFFSET TO FRAMAT TO PP POINTERS
  3779. RAM .UPDD
  3780. SHN -14
  3781. RAM .UPDC
  3782.  
  3783. * COMPUTE BASE ADDRESS TERMINAL TABLE
  3784.  
  3785. LDM //BUF+5*5
  3786. SHN 5
  3787. STD T1
  3788. LDM NSB FIRST STATION TO PROCESS
  3789. SBD T1 FIRST DSN STATION
  3790. SHN 1 WORDS ASSIGNED TO OTHER PPS
  3791. RAD TB
  3792.  
  3793. * INITIALIZE CIRCULAR BUFFER POINTERS
  3794.  
  3795. LDC RTCL
  3796. CRD CM
  3797. LDD CM+4
  3798. SBN PTRD+10
  3799. STM UPDA
  3800. RJM UPD UPDATE IN/OUT POINTERS
  3801. LDM NFI1
  3802. STD FI1
  3803. LDM NFO2
  3804. STD FO2
  3805. LJM IFCX EXIT
  3806.  
  3807. IFCA DATA C* WAITING FOR PLATO.*
  3808. * /--- BLOCK INI 00 000 86/05/28 14.23
  3809. INI SPACE 5,11
  3810. ** INI - INITIALIZE FL AND OTHER PPS
  3811. *
  3812. * DETERMINE FL NEEDED TO SUPPORT ALL 2550S
  3813. * LOAD ADDITIONAL PPS IF NECESSARY
  3814.  
  3815.  
  3816. INI SUBR
  3817.  
  3818. * COUNT NUMBER OF PP REQUIRED
  3819.  
  3820. LDN 0
  3821. STD T2
  3822. STD T3
  3823. INI1 AOD T3
  3824. LDN MXNPU
  3825. RAD T2
  3826. SBM //BUF
  3827. MJN INI1 IF MORE PPS
  3828. INI2 LDM //BUF+5+3 TOTAL DSN SITES
  3829. SHN 5+1 WORDS FOR TERMINAL TABLE
  3830. STD T1
  3831. LDD T3
  3832. SHN 6 WORDS FOR CM/ECS BUFFERS
  3833. .NOSV2 IFGE OSLEV,562D NOS V2
  3834. STD IR+3 SAVE INTERMEDIATE RESULT
  3835. LDD T3 ADD 2 WORDS FOR EACH HEADER
  3836. ADK EBHEAD
  3837. RAD IR+3 BASE ADDRESS OF TERMINAL TABLE
  3838. .NOSV2 ELSE NOS V1
  3839. ADC EB
  3840. STD IR+3 BASE ADDRESS OF TERMINAL TABLE
  3841. .NOSV2 ENDIF
  3842. STD T4
  3843. ADD T1
  3844. ADN 77
  3845. SHN -6
  3846. RJM /PRESET/RFL
  3847.  
  3848. * /--- BLOCK INI 00 000 86/05/28 14.24
  3849.  
  3850. * LOAD ADDITONAL PPS
  3851.  
  3852. INI3 SOD T3
  3853. STD IR+4 SET PP ORDINAL
  3854. ZJN INI5 IF NO MORE PPS
  3855. INI4 LDN 1 SET PRIORITY PP REQUEST
  3856. STD CM+1
  3857. LDD MA
  3858. CWD IR
  3859. MONITOR RPPM
  3860. LDD CM+1
  3861. NJN INI3 IF PP ASSIGNED
  3862. PAUSE
  3863. LDD CM+1
  3864. NJN INI4 TRY AGAIN
  3865. LJM TER
  3866.  
  3867. INI5 LDD T4
  3868. STD TB
  3869. LJM INIX EXIT
  3870. IRL SPACE 5,11
  3871. ** IRL - INITIALIZE RE-LOAD OF A 2550
  3872. *
  3873. * INITIALIZE PP TO RE-LOAD ONE 2550
  3874.  
  3875.  
  3876. IRL SUBR
  3877. LDN 1 SET 2550 TO PROCESS
  3878. STM .SNPA
  3879.  
  3880. * BUILD CONTROL ENTRIES TO RE-LOAD THIS 2550
  3881.  
  3882. LDD IR+2 SET EST ORDINAL
  3883. STM NEST
  3884. .NOS22 IFGE OSLEV,594D NOS 2.2
  3885. SFA EST (A) = FWA OF EST ENTRY
  3886. ADK EQDE WORD OFFSET
  3887. .NOS22 ELSE NOS 2.1 OR PRIOR
  3888. ADM ESTS READ EST ENTRY
  3889. .NOS22 ENDIF
  3890. CRD CM
  3891. LDD CM+1 SET CHANNEL NUMBER
  3892. LPN 77
  3893. STM NCH
  3894. RCHAN
  3895. LDD IR+3 SET S(D)
  3896. STM NSD
  3897. LDD CM+4 SET EQUIPMENT NUMBER
  3898. LPC 7000
  3899. STM NEQ
  3900. LDD IR+4 SET DPNC S(D)
  3901. STM NDS
  3902. LDN MXREL
  3903. STM NREL ALLOW ONLY ONE RE-LOAD
  3904. LJM IRLX EXIT
  3905. * /--- BLOCK IRL 00 000 82/12/06 15.57
  3906. RFL SPACE 5,11
  3907. ** RFL - REQUEST FIELD LENGTH
  3908. *
  3909. * ENTRY - (A) - DESIRED FIELD LENGTH
  3910.  
  3911.  
  3912. RFL SUBR
  3913. .DEBUG IFNE DEBUG,0
  3914. LDC 500
  3915. .DEBUG ENDIF
  3916. STD T1 SAVE FIELD LENGTH
  3917. RFL1 LDD FL
  3918. LMD T1
  3919. ZJN RFLX IF AT REQUESTED FIELD LENGTH
  3920. LDN ZERL
  3921. CRD CM
  3922. LDD T1 SET REQUESTED FL
  3923. STD CM+1
  3924. MONITOR RSTM
  3925. PAUSE
  3926. LDD CM+1
  3927. ZJN RFL1 IF ERROR FLAG NOT SET
  3928. LJM TER
  3929.  
  3930. * COMMON DECKS
  3931.  
  3932. *CALL COMPCLD
  3933. *CALL COMPCUA
  3934. * /--- BLOCK BUFFERS 00 000 79/09/05 15.36
  3935. SPACE 5,11
  3936. OVERFLOW
  3937.  
  3938. * BUFFERS USED BY INITIALIZATION
  3939. * OVERLAYS PRESET CODE
  3940.  
  3941. .1 SET OVLB
  3942.  
  3943. BUF BUF 200*2+10 DATA BUFFER
  3944. BFDS BUF 502 DISK SECTOR BUFFER
  3945. BUF2 BUF 200*2+10 COMPARE BUFFER
  3946.  
  3947. ERRPL .1-7770 PRESET OVERFLOW
  3948.  
  3949. QUAL *
plato/source/plaopl/dsn.txt ยท Last modified: 2023/08/05 18:54 by Site Administrator