Table of Contents

1TM

Table Of Contents

  • [00002] 1TM - RDF TWO-PORT MULTIPLEXER DRIVER.
  • [00009] TWO-PORT MULTIPLEXER DRIVER.
  • [00428] DEFINITION COMMON DECKS.
  • [00456] MACRO DEFINITIONS.
  • [00458] ADCM - GENERATE ADD CONSTANT MACRO.
  • [00499] ASCO - GENERATE MULTIPLEXER OUTPUT FOR *ASCII* CODE.
  • [00516] INASC - GENERATE *ASCII* INPUT TRANSLATION.
  • [00539] JMP - GENERATE THREADED JUMP.
  • [00564] OTASC - GENERATE *ASCII* OUTPUT TRANSLATION.
  • [00584] PAR - GENERATE CHARACTER PARITY BIT.
  • [00601] RETURN - RETURN TO MANAGER TO ADVANCE TERMINAL PROCESSING.
  • [00627] TTADD - GENERATE TERMINAL TABLE ADDRESS.
  • [00649] SYMBOLIC EQUIVALENCES.
  • [00761] FWA - DRIVER ENTRY POINT.
  • [00775] GLOBAL DATA STORAGE.
  • [00790] ITM - TWO-PORT MULTIPLEXER DRIVER MAIN CONTROL LOOP.
  • [00840] MGR - TERMINAL MANAGER.
  • [00898] MGR - RETURNS FROM REENTRY PROCESSORS.
  • [00900] MGR$ - RETURN FROM *RETURN* MACRO (NULL OR * ADDRESS FIELD).
  • [00909] MGR= - RETURN FROM *RETURN ADDR* MACRO.
  • [00917] MGR - RETURN WITH NO CHANGE OF REENTRY ADDRESS.
  • [00930] DIN - PROCESS PORT DIALED-IN.
  • [00995] HUP - HANG UP PHONE LINE.
  • [01068] OFL - PROCESS USER OFF LINE.
  • [01091] ONL - WAIT FOR TERMINAL TO COME ON-LINE.
  • [01180] RPA - REGAIN PORT ACCESS.
  • [01227] RPI - REGAIN PORT ACCESS INITIALIZATION.
  • [01274] CIS - CHECK INTERRUPT STATUS.
  • [01338] CTO - CHECK TIME-OUT.
  • [01436] INT - PROCESS INTERRUPT.
  • [01479] LIN - PROCESS LOGIN.
  • [01503] RWC - READ/WRITE CONTROL.
  • [01565] SUS - SUSPEND DRIVER FOR *RDF* INTERRUPT ACKNOWLEDGE.
  • [01602] *RDF* FUNCTION REQUEST PROCESSORS.
  • [01604] TFR - PROCESS *RDF* FUNCTION REQUEST.
  • [01640] TTFR - TABLE OF *RDF* FUNCTION REQUESTS.
  • [01661] BGI - BEGIN INPUT.
  • [01684] CFD - CLEAR *FULL DUPLEX* FLAG.
  • [01697] IIP - ISSUE INPUT PROMPT.
  • [01747] LGI - PROCESS USER LOGIN.
  • [01777] SCE - SET/CLEAR EXTENDED MODE.
  • [01789] SEP - SET *EVEN* PARITY.
  • [01805] SFD - SET *FULL DUPLEX* FLAG.
  • [01819] SNM - SET NORMAL MODES.
  • [01833] SOP - SET *ODD* PARITY.
  • [01850] STT - SET TERMINAL TYPE.
  • [01885] RDM - READ MODE ENTRY PROCESSOR.
  • [01951] ARD - *ASCII* TERMINAL READ.
  • [02035] TRSP - TABLE OF SPECIAL READ CHARACTER PROCESSORS.
  • [02061] BRD - BINARY READ PROCESSOR.
  • [02136] READ MODE - MAIN ROUTINES.
  • [02138] CLI - PROCESS COMMAND LINE INPUT.
  • [02167] DLO - PROCESS LOST DATA.
  • [02181] EIC - ENTER INPUT CHARACTER.
  • [02209] EIL - END OF INPUT LINE.
  • [02300] ESC - PROCESS ESCAPE CODES.
  • [02332] NIP - NO INPUT POT AVAILABLE.
  • [02351] SLI - SOURCE LINE INPUT.
  • [02373] READ MODE - SPECIAL CHARACTER PROCESSORS.
  • [02375] BRK - PROCESS BREAK.
  • [02447] CES - CHECK ESCAPE STATUS.
  • [02481] CLN - PROCESS *COLON* INPUT (64 CHARACTER SET).
  • [02512] CLW - CHECK LOWER CASE *W*.
  • [02544] CRS - CHECK *RS*.
  • [02567] CRT - PROCESS CARRIAGE RETURN.
  • [02597] DEL - PROCESS *DEL* CHARACTER.
  • [02615] DLN - PROCESS DELETE LINE.
  • [02653] DPC - DELETE PRECEEDING CHARACTER.
  • [02725] EOT - END OF TRANSMISSION (*BLKEDIT* TERMINAL).
  • [02757] ECI - ESCAPE CHARACTER INPUT.
  • [02785] ETX - END OF TEXT.
  • [02820] NLI - PROCESS NULL INPUT.
  • [02846] EMD - ENTER OPERATOR MESSAGE DATA.
  • [02927] EOM - ENTER OPERATOR MESSAGE.
  • [03045] RIN - RELEASE INPUT POTS TO EXECUTIVE.
  • [03073] RPC - READ PREVIOUS CHARACTER.
  • [03104] WIC - WRITE INPUT CHARACTER.
  • [03209] ZOM - ZERO-FILL OPERATOR MESSAGE BUFFER.
  • [03242] WTM - WRITE MODE CONTROL.
  • [03270] AWT - *ASCII* WRITE PROCESSOR.
  • [03423] TECP - TABLE OF ESCAPE CONTROL PROCESSORS.
  • [03438] TWSP - TABLE OF SPECIAL WRITE PROCESSORS.
  • [03454] BWT - BINARY WRITE.
  • [03489] ISN - ISSUE ASCII *NUL* CHARACTERS.
  • [03506] SOC - SET OUTPUT CONTROL.
  • [03570] TTM - ISSUE TERMINAL MESSAGE.
  • [03659] WRITE MODE - OUTPUT CONTROL BYTE PROCESSORS.
  • [03661] TSOC - TABLE OF OUTPUT CONTROL BYTE PROCESSORS.
  • [04105] WRITE MODE - SPECIAL CHARACTER PROCESSORS.
  • [04107] ACR - PROCESS *CARRIAGE RETURN* OUTPUT.
  • [04144] ANL - PROCESS *NEW LINE* OUTPUT.
  • [04167] CKL - CHECK LIST STATUS.
  • [04184] CLT - CHECK FOR LINE TERMINATION.
  • [04276] MDS - MOVE DATA WORD TO START OF POT.
  • [04294] ROC - READ OUTPUT CHARACTER.
  • [04378] RSW - RESTORE WORD.
  • [04393] SRC - SEND REPEATED CHARACTER.
  • [04421] TOC - TRANSLATE ASCII OUTPUT CHARACTER.
  • [04457] AVT - ADVANCE TIMERS.
  • [04503] BUP - BACK UP POINTERS.
  • [04554] CCQ - CHECK CIRCULAR REQUEST QUEUE.
  • [04580] CEF - CHECK ERROR FLAG.
  • [04598] CEM - CLEAR EXTENDED TRANSMISSION MODE.
  • [04617] CIT - CHECK FOR INACTIVITY TIME-OUT.
  • [04648] CMF - CHECK *RDF* STATUS.
  • [04688] CUT - CLEAN UP TERMINAL TABLE.
  • [04718] CWA - SET DRIVER CONTROL WORD ADDRESS.
  • [04734] DCE - DROP CHANNEL AND EQUIPMENT.
  • [04761] DDC - DETERMINE DELAY COUNT.
  • [04785] DPP - DROP PPU.
  • [04803] ERQ - ENTER CIRCULAR REQUEST QUEUE.
  • [04848] FTER - FUNCTION TIME-OUT ERROR PROCESSOR.
  • [04860] IMT - ISSUE MESSAGE AND TERMINATE.
  • [04878] MRER - NORMAL ERROR PROCESSOR FOR *COMPMRA*.
  • [04887] RCL - RECALL PPU.
  • [04931] RLT - READ LINK TABLE.
  • [04955] SAT - SET ACTIVITY TIME.
  • [04972] SDS - SIGNAL DRIVER SHUTDOWN.
  • [04996] SEM - SET EXTENDED MODE.
  • [05010] STA - SET TERMINAL TABLE ADDRESS.
  • [05025] SVM - SERVICE MULTIPLEXER.
  • [05092] SWA - SET WORD ADDRESS.
  • [05113] WDC - WRITE TERMINAL TABLE WORD *VDCT*.
  • [05142] OMBUF - OPERATOR MESSAGE BUFFER.
  • [05151] PRS - PRESET DRIVER.
  • [05270] DRIVER PRESET SUBROUTINES.
  • [05272] SAD - SET ABSOLUTE ADDRESSES.
  • [05328] SIA - SET INSTRUCTION ADDRESSES.
  • [05391] INITIAL DRIVER PRESET.
  • [05401] PRE - PRESET DRIVER.
  • [05478] DRIVER PRESET SUBROUTINES.
  • [05480] CEF - CHECK ERROR FLAG.
  • [05498] CEQ - CHECK EQUIPMENT.
  • [05546] CMF - CHECK *RDF* STATUS.
  • [05586] CWA - SET DRIVER CONTROL WORD ADDRESS.
  • [05602] DCE - DROP CHANNEL AND EQUIPMENT.
  • [05629] DPP - DROP PPU.
  • [05647] INI - PROCESS INITIAL LOAD.
  • [05713] RCE - RESERVE CHANNEL AND EQUIPMENT.
  • [05762] SDS - SIGNAL DRIVER SHUTDOWN.
  • [05786] SEL - SELECT MULTIPLEXER PORT.
  • [05832] STP - SYNCHRONIZE MONITOR *TSEM* PROCESSING.
  • [05854] TID - SET TERMINAL ID TABLE.
  • [05885] ERROR PROCESSING ROUTINES.
  • [05887] FTER - FUNCTION TIME-OUT ERROR PROCESSOR.
  • [05899] IMT - ISSUE MESSAGE AND TERMINATE.
  • [05913] MRER - NORMAL ERROR PROCESSOR FOR *COMPMRA*.
  • [05941] MTT - MODIFY TRANSLATION TABLES.
  • [05972] INPUT TRANSLATION TABLE.
  • [06128] OUTPUT TRANSLATION TABLE.
  • [06305] MESSAGE PROCESSOR.
  • [06312] MGP - MESSAGE PROCESSOR.
  • [06393] O2D - CONVERT TWO DIGITS TO OCTAL DISPLAY CODE.

Source Code

1TM.txt
  1. IDENT 1TM,FWA
  2. TITLE 1TM - RDF TWO-PORT MULTIPLEXER DRIVER.
  3. PERIPH
  4. BASE MIXED
  5. SST SSCP
  6. *COMMENT 1TM - TWO-PORT MULTIPLEXER DRIVER.
  7. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  8. ITM SPACE 4,10
  9. *** 1TM - TWO-PORT MULTIPLEXER DRIVER.
  10. *
  11. * P. D. FARRELL 81/11/18.
  12. ITM SPACE 4,10
  13. *** *1TM* PROVIDES THE PPU INTERFACE BETWEEN THE
  14. * REMOTE DIAGNOSTIC FACILITY, *RDF*, AND THE
  15. * CYBER 170-8X5 TWO-PORT MULTIPLEXER.
  16. *
  17. * *1TM* COMMUNICATES WITH THE TWO-PORT MULTIPLEXER
  18. * AND WITH THE *RDF* CPU INTERFACE, EITHER *RDF*
  19. * OR *IAF*.
  20. ITM SPACE 4,10
  21. *** PROGRAM CALL -
  22. *
  23. *T IR 18/*1TM*, 6/0, 12/RCC, 12/RTS, 12/CTL WD PTR
  24. *
  25. * RCC = RECALL CONTROL.
  26. * = 0, IF NOT PP RECALL AND NOT *2TM* CALL.
  27. * = 10/EQ, 1/S, 1/P, IF PP RECALL OR *2TM* CALL.
  28. * EQ = RESERVED EQUIPMENT NUMBER.
  29. * S = 1, IF PORT CURRENTLY IS RESERVED FOR
  30. * *1TM*.
  31. * P = PORT NUMBER.
  32. *
  33. * RTS = REAL-TIME CLOCK (SECONDS) AT START
  34. * OF DRIVER INACTIVITY TIME-OUT.
  35. * = 0 ON INITIAL CALL OR ON EXECUTIVE
  36. * RECALL.
  37. *
  38. * CTL WD PTR = POINTER TO DRIVER CONTROL WORD
  39. * IN CM EXECUTIVE TABLE *VDRL*.
  40. *
  41. *
  42. * (DRIVER CONTROL WORD) = ON INITIAL DRIVER CALL -
  43. *
  44. *T, 12/0, 24/ DRIVER NAME (*1TM*), 24/0
  45. *
  46. * (DRIVER CONTROL WORD) = ON DRIVER RECALL OR ON
  47. * EXECUTIVE RECALL -
  48. *
  49. *T, 12/IL, 24/SA, 12/TC, 12/TN.
  50. *
  51. * IL = DRIVER INTERLOCK.
  52. * SA = DRIVER STACK ADDRESS.
  53. * TC = DRIVER TERMINAL COUNT.
  54. * TN = TERMINAL NUMBER OF DRIVER PORT.
  55. *
  56. * AFTER INITIALIZATION, *1TM* WILL WAIT FOR FOUR SECONDS
  57. * FOR TERMINAL LOGIN. IF THE TERMINAL DOES NOT ATTEMPT
  58. * TO LOGIN WITHIN FOUR SECONDS, *1TM* WILL DROP FROM
  59. * THE PPU AND RETURN VIA PPU RECALL AFTER 5 SECONDS.
  60. *
  61. * IF THE USER HAS NOT ATTEMPTED TO LOGIN WITHIN 15
  62. * MINUTES, *1TM* WILL DROP FROM THE PPU WITHOUT RE-
  63. * CALLING ITSELF UNLESS THE *DEDICATED RDF* FLAG IS
  64. * SET. IF THE *DEDICATED RDF* FLAG IS SET, *1TM* WILL
  65. * CONTINUE TO LOOK FOR LOGIN FOR 4 SECONDS AND DROP
  66. * FOR 5 SECONDS.
  67. *
  68. * ONCE *1TM* HAS DROPPED FROM THE PPU AFTER 15 MINUTES
  69. * OF NO TERMINAL ACTIVITY, *1TM* MUST BE REACTIVATED
  70. * BY ENTERING THE *DSD* CONSOLE COMMAND TO REQUEST
  71. * THAT *RDF* RESTART *1TM* (EXECUTIVE RECALL).
  72. SPACE 4,15
  73. *** OPERATOR TERMINAL CONTROL.
  74. *
  75. *
  76. * EXCEPT FOR THE TOGGLE FUNCTION OF THE *F7* KEY OF A CDC
  77. * 721 TERMINAL (SEE ITEM 7 BELOW), *1TM* TERMINAL PROTOCOL
  78. * IS IDENTICAL TO IAF STIMULATOR PROTOCOL. IN GENERAL, ALL
  79. * INPUT AND OUTPUT IS PROCESSED ON A LINE-BY-LINE BASIS AND
  80. * THE UNIT OF INPUT IS THE LOGICAL LINE.
  81. *
  82. * (1) TO LOGIN, POWER UP THE TERMINAL IF HARDWIRED
  83. * OR DIAL-IN IF DIAL UP LINE, THEN ENTER THE
  84. * CHARACTER *B* IF BLOCK-EDIT TERMINAL OR *CR*
  85. * IF NOT. IF THE CENTRAL SITE DOES NOT REPLY
  86. * IMMEDIATELY WITH THE LOGIN MESSAGE, WAIT ONE
  87. * OR TWO SECONDS AND TRY AGAIN.
  88. *
  89. * (2) TO COMPLETE AN INPUT LINE, DEPRESS THE *RETURN*
  90. * KEY. IT IS NOT NECESSARY TO ENTER A *LINE
  91. * FEED* SINCE THE DRIVER WILL SUPPLY ONE.
  92. *
  93. * (3) TO DELETE OR IGNORE AN INPUT LINE, ENTER
  94. * *ESC*. THE DRIVER WILL DISCARD THE LINE
  95. * AND WILL REPLY WITH THE MESSAGE *DEL*.
  96. *
  97. * (4) TO DELETE A PREVIOUSLY ENTERED CHARACTER,
  98. * DEPRESS THE *BACKSPACE* CHARACTER (LEFT
  99. * ARROW ON SOME KEYBOARDS).
  100. *
  101. * (5) TO TERMINATE OUTPUT, DEPRESS THE *BREAK* KEY
  102. * OR THE *S* KEY.
  103. *
  104. * (6) TO INTERRUPT OUTPUT, DEPRESS THE *I* KEY.
  105. * OUTPUT MAY BE RESUMED BY ENTERING *P*
  106. * FOLLOWED BY *RETURN*.
  107. *
  108. * (7) TO TOGGLE TO ANOTHER TWO PORT MUX DRIVER (*MDD*
  109. * OR *SCD*) WHICH HAS ALREADY BEEN BROUGHT UP ON
  110. * THE PORT USED BY *1TM*, DEPRESS THE *F7* KEY
  111. * ON A CDC 721 TERMINAL. NOTE THAT THIS SHARING
  112. * CAPABILITY DOES NOT EXIST ON A CYBER 170-865/875.
  113. SPACE 4,15
  114. *** DAYFILE MESSAGES -
  115. *
  116. *
  117. * * 1TM - RDF TIME-OUT.*
  118. * THIS MESSAGE INDICATES THAT NO TERMINAL ACTIVITY
  119. * HAS OCCURRED FOR 15 MINUTES (ASSEMBLY PARAMETER)
  120. * AND THAT *RDF* IS NOT IN *DEDICATED* MODE. *1TM*
  121. * HAS DROPPED FROM THE PPU WITHOUT RECALL AND HAS
  122. * SIGNALLED DRIVER-DROP TO *RDF*.
  123. *
  124. * * 1TM - NO TPM RESPONSE.*
  125. * THE TWO-PORT MULTIPLEXER FAILED TO RESPOND
  126. * TO A STATUS REQUEST FUNCTION.
  127. *
  128. * * 1TM - RDF CANNOT BE RUN ON MAINFRAME.*
  129. * THE MAINFRAME DOES NOT HAVE THE NECESSARY HARDWARE
  130. * TO SUPPORT USAGE OF *RDF*.
  131. *
  132. * * 1TM - NO TPM AVAILABLE.*
  133. * EITHER THERE IS NO TWO-PORT MULTIPLEXER AVAILABLE
  134. * IN THE EQUIPMENT STATUS TABLE OR THE MULTIPLEXER
  135. * CHANNEL IS NOT AVAILABLE.
  136. *
  137. * * 1TM - RMEEE CXX PNN FYYYY REJECT.*
  138. * TWO-PORT MULTIPLEXER, EST ORDINAL *EEE*,
  139. * CHANNEL NUMBER *XX*, PORT NUMBER *NN*, HAS
  140. * REJECTED FUNCTION *YYYY.
  141. *
  142. * * 1TM - RDF TERMINATED.*
  143. * *RDF* IS NOT ENABLED. *1TM* WILL ISSUE THIS
  144. * MESSAGE, THEN DROP AFTER SIGNALLING DRIVER DROP
  145. * TO *RDF*. *1TM* MAY BE RESTARTED BY ENABLING
  146. * *RDF* AND BY ENTERING THE CONSOLE COMMAND TO
  147. * RESTART *1TM*.
  148. ITM SPACE 4,15
  149. *** ERROR LOG MESSAGES -
  150. *
  151. *
  152. * * RMEEE CXX PNN FYYYY REJECT.*
  153. * TWO-PORT MULTIPLEXER, EST ORDINAL *EEE*,
  154. * CHANNEL NUMBER *XX*, PORT NUMBER *NN*, HAS
  155. * REJECTED FUNCTION *YYYY.
  156. *
  157. * * RDF CARRIER LOST.*
  158. * INDICATES THAT THE CARRIER HAS DROPPED ON AN
  159. * ACTIVE TERMINAL. THE TERMINAL IS IMMEDIATELY
  160. * LOGGED OUT WHEN THIS OCCURS.
  161. *
  162. * * RDF INITIATED.*
  163. * ISSUED WHEN TERMINAL INITATES LOGIN.
  164. *
  165. * * RDF TERMINATED.*
  166. * *RDF* IS NOT ENABLED. *1TM* WILL ISSUE THIS
  167. * MESSAGE, THEN DROP AFTER SIGNALLING DRIVER DROP
  168. * TO *RDF*. *1TM* MAY BE RESTARTED BY ENABLING
  169. * *RDF* AND BY ENTERING THE CONSOLE COMMAND TO
  170. * RESTART *1TM*.
  171. *
  172. * * RDF TIME-OUT.*
  173. * THIS MESSAGE ACCOMPANIES THE * 1TM - RDF
  174. * TIME-OUT.* DAYFILE MESSAGE AND INDICATES THAT NO
  175. * TEMINAL ACTIVITY HAS OCCURRED FOR 15 MINUTES
  176. * (ASSEMBLY PARAMETER) AND THAT *RDF* IS IS NOT IN
  177. * DEDICATED MODE. *1TM* HAS DROPPED FROM THE PPU
  178. * WITHOUT RECALL AND HAS SIGNALLED DRIVER-DROP TO
  179. * *RDF*.
  180. ITM TITLE INTERNAL DOCUMENTATION.
  181. ITM SPACE 4,40
  182. ** TWO-PORT MULTIPLEXER FUNCTION CODES.
  183. *
  184. * THE FOLLOWING IS A DESCIPTION OF TWO-PORT MULTIPLEXER
  185. * STATUS AND DATA FORMATS.
  186. *
  187. *
  188. * TWO-PORT MULTIPLEXER STATUS CODES-
  189. *
  190. * BIT DESCRIPTION
  191. * --- -----------
  192. *
  193. * 11-5 NOT USED.
  194. * 4 OUTPUT BUFFER READY (NOT FULL).
  195. * 3 INPUT READY.
  196. * 2 CARRIER ON.
  197. * 1 DATA SET READY.
  198. * 0 RING INDICATOR.
  199. *
  200. *
  201. * TWO-PORT MULTIPLEXER MODE SELECTION FUNCTION CODES-
  202. *
  203. * BIT DESCRIPTION
  204. * --- -----------
  205. *
  206. * 11-6 NOT USED.
  207. * 5 ENABLE LOOP-BACK.
  208. * 4 DISABLE PARITY.
  209. * 3 NUMBER OF STOP BITS-
  210. * 0 = 1 STOP BIT.
  211. * 1 = 2 STOP BITS.
  212. * 2-1 DATA BITS PER CHARACTER-
  213. * 00 = 5 BITS.
  214. * 01 = 6 BITS.
  215. * 10 = 7 BITS.
  216. * 11 = 8 BITS.
  217. * 0 PARITY-
  218. * 0 = ODD PARITY.
  219. * 1 = EVEN PARITY.
  220. *
  221. *
  222. * INPUT DATA BYTE FORMAT-
  223. *
  224. * BIT DESCRIPTION
  225. * --- -----------
  226. *
  227. * 11 DATA SET READY.
  228. * 10 DATA SET READY .AND. CARRIER ON.
  229. * 9 LOST DATA.
  230. * 8 FRAMING ERROR OR PARITY ERROR.
  231. * 7-0 DATA BITS.
  232. *
  233. *
  234. * OUTPUT DATA BYTE FORMAT-
  235. *
  236. * BIT DESCRIPTION
  237. * --- -----------
  238. *
  239. * 11-8 NOT USED.
  240. * 7 DATA PARITY.
  241. * 6-0 DATA BITS (LEAST SIGNIFICANT DATA BIT
  242. * IN BIT POSITION 0).
  243. ITM SPACE 4,25
  244. ** TWO-PORT MULTIPLEXER EST ENTRY.
  245. *
  246. * THE FORMAT OF THE TWO-PORT MULTIPLEXER EQUIPMENT STATUS
  247. * TABLE ENTRY IS AS SHOWN BELOW.
  248. *
  249. *T EST 12/0, 12/CH, 12/0, 12/RM, 11/0, 1/N
  250. *
  251. * CH = CHANNEL NUMBER.
  252. *
  253. * RM = MNEMONIC *RM*.
  254. *
  255. * N = PORT NUMBER, 0 OR 1.
  256. *
  257. *
  258. * THE FORMAT OF THE *EQPDECK* ENTRY FOR THE TWO-PORT
  259. * MULTIPLEXER IS AS SHOWN BELOW.
  260. *
  261. * EQXXX=RM,ST=ON/OFF,CH=NN,PT=N.
  262. *
  263. * *EQ* = MNEMONIC *EQ*.
  264. *
  265. * *RM* = MNEMONIC *RM*.
  266. *
  267. * ST = STATUS, *ON* OR *OFF*.
  268. *
  269. * PN = PORT NUMBER, *0* OR *1*.
  270. *
  271. * CH = CHANNEL NUMBER.
  272. *
  273. * EXAMPLE -
  274. *
  275. * EQ765=RM,ST=ON,CH=15,PT=0.
  276. *
  277. * THE ABOVE ENTRY DEFINES EST ORDINAL 765 AS PORT 0 OF
  278. * THE TWO-PORT MULTIPLEXER, LOGICALLY *ON* IN THE EST.
  279. ITM TITLE TERMINAL TABLE USAGE.
  280. ITM SPACE 4,25
  281. ** *1TM* TERMINAL TABLE USAGE.
  282. *
  283. * *1TM* USES THE *RDF* TERMINAL TABLE IN THE SAME
  284. * MANNER AS DOES THE 6671/6676 MULTIPLEXER DRIVER,
  285. * *1TD*, WITH THE EXCEPTION THAT TERMINAL TYPES
  286. * ARE NOT SIGNIFICANT (SINCE ONLY ONE TERMINAL TYPE
  287. * AND ONE TRANSLATION TABLE ARE SUPPORTED).
  288. VFST SPACE 4,15
  289. ** TERMINAL TABLE WORD *VFST*.
  290. *
  291. * NOTE - ONLY THOSE FIELDS REFERENCED BY *1TM*
  292. * ARE DESCRIBED.
  293. *
  294. *T 12/FS, 12/FS+1, 12/FS+2, 12/FS+3, 12/FS+4
  295. *
  296. * FS = 12/ UPPER 12 BITS OF JSN.
  297. *
  298. * FS+1 = 12/ LOWER 12 BITS OF JSN.
  299. VROT SPACE 4,15
  300. ** TERMINAL TABLE WORD *VROT*.
  301. *
  302. * NOTE - ONLY THOSE FIELDS REFERENCED BY *1TM*
  303. * ARE DESCRIBED.
  304. *
  305. *T 12/RO, 12/RO+1, 12/RO+2, 12/RO+3, 12/RO+4
  306. *
  307. * RO+4 = JOB STATUS BITS -
  308. *
  309. * BIT DESCRIPTION
  310. * --- -----------
  311. * 6 LIST IN PROGRESS.
  312. * 4 OUTPUT ON MASS STORAGE.
  313. * 0 JOB BUSY IF ZERO.
  314. VDPT SPACE 4,15
  315. ** TERMINAL TABLE WORD *VDPT*.
  316. *
  317. *T 12/DP, 12/DP+1, 12/DP+2, 12/DP+3, 12/DP+4
  318. *
  319. * DP = 12/ FIRST POT OF LINE.
  320. *
  321. * DP+1 = 12/ CURRENT POT OF LINE.
  322. *
  323. * DP+2 = 3/ FIRST WORD OF LINE IN FIRST POT.
  324. * 1/ INPUT INITIATED IF SET.
  325. * 1/ NEXT POT REQUESTED IF SET.
  326. * 3/ CURRENT WORD OF LINE IN CURRENT POT.
  327. * 4/ CURRENT CHARACTER OF LINE.
  328. *
  329. * DP+3 = FLAG BITS -
  330. *
  331. * BIT DESCRIPTION
  332. * --- -----------
  333. * 11-8 NOT USED.
  334. * 7 TERMINAL MODE-
  335. * 0 = *TTY*.
  336. * 1 = *BLKEDIT*.
  337. * 6 FULL DUPLEX.
  338. * 5-4 NOT USED.
  339. * 3 BINARY INPUT.
  340. * 2 TRANSPARENT INPUT MODE.
  341. * 1 EXTENDED MODE.
  342. * 0 ODD PARITY.
  343. *
  344. * DP+4 = 12/ CURRENT REENTRY ADDRESS.
  345. VCHT SPACE 4,15
  346. ** TERMINAL TABLE WORD *VCHT*.
  347. *
  348. *T 12/CH, 12/CH+1, 12/CH+2, 12/CH+3, 12/CH+4
  349. *
  350. * CH = IF INPUT -
  351. * 12/ UPPER CHARACTER OF INPUT BYTE.
  352. * = IF OUTPUT -
  353. * 12/ STACK FOR ROUTINE ADDRESS.
  354. *
  355. * CH+1 = IF INPUT -
  356. * 12/ CHARACTER COUNT OF LINE.
  357. * = IF OUTPUT -
  358. * 12/ SCRATCH.
  359. *
  360. * CH+2 = IF INPUT -
  361. * 12/SCRATCH.
  362. * = IF OUTPUT -
  363. * 12/ PARTIALLY PROCESSED CONTROL BYTE.
  364. *
  365. * CH+3 = 12/ INPUT CHARACTER COUNT ACCUMULATOR.
  366. *
  367. * CH+4 = 12/ OUTPUT CHARACTER COUNT ACCUMULATOR.
  368. *
  369. * *VCHT* IS WRITTEN BY *IAF*/*RDF* DURING JOB RECOVERY AFTER
  370. * SUSPENDING *1TM*. *1TM* WAITS FOR INTERRUPT ACKNOWLEDGE
  371. * BEFORE WRITING *VCHT*.
  372. VDCT SPACE 4,15
  373. ** TERMINAL TABLE WORD *VDCT*.
  374. *
  375. * NOTE - ONLY THOSE BITS AND FIELDS DIRECTLY USED BY *1TM*
  376. * ARE DESCRIBED.
  377. *
  378. *T 12/DC, 12/DC+1, 12/DC+2, 12/DC+3, 12/DC+4
  379. *
  380. * DC = FLAG BITS -
  381. *
  382. * BIT DESCRIPTION
  383. * --- -----------
  384. * 11 DRIVER REQUEST IN BYTE 4.
  385. * 10 INTERRUPT ACKNOWLEDGE.
  386. * 9 LOGGED IN.
  387. * 6 READ DATA.
  388. * 3 EXTENDED (ASCII 6/12) MODE.
  389. * 2 TEXT MODE.
  390. * 1 AUTO MODE.
  391. * 0 TAPE MODE.
  392. *
  393. * DC+1 = CONTROL FIELDS -
  394. *
  395. * BIT DESCRIPTION
  396. * --- -----------
  397. * 7-3 USER DELAY COUNT.
  398. * 2-0 FWA IN OUTPUT POT.
  399. *
  400. * DC+3 = ACCESS CONTROL -
  401. *
  402. * BIT DESCRIPTION
  403. * --- -----------
  404. * 10 NO TIME-OUT.
  405. *
  406. * DC+4 = INTERLOCK BYTE. IF NONZERO, ONLY *1TM*
  407. * MAY MODIFY *VDCT*. IF ZERO, ONLY *RDF*
  408. * MAY MODIFY *VDCT*.
  409. * = 12/ DRIVER REQUEST IF BIT 2**11 OF BYTE
  410. * 0 IS SET,
  411. * = 12/ OUTPUT POT IF BIT 2**11 OF BYTE
  412. * 0 IS NOT SET.
  413. VSTT SPACE 4,15
  414. ** TERMINAL TABLE WORD *VSTT*.
  415. *
  416. * NOTE - ONLY THOSE FIELDS REFERENCED BY *1TM*
  417. * ARE DESCRIBED.
  418. *
  419. *T 12/ST, 12/ST+1, 12/ST+2, 12/ST+3, 12/ST+4
  420. *
  421. * ST = FLAG BITS -
  422. *
  423. * BIT DESCRIPTION
  424. * --- -----------
  425. * 8 DETACH IN PROGRESS.
  426. * 0 LOGOUT IN PROGRESS.
  427.  
  428. TITLE DEFINITION COMMON DECKS.
  429. ITM SPACE 4,10
  430. ** DEFINE *QUAL* BLOCK ORDER.
  431.  
  432.  
  433. QUAL CTL CONTROL BLOCK
  434. QUAL RDM READ MODE
  435. QUAL WTM WRITE MODE
  436. QUAL TRN TRANSLATION TABLES
  437. QUAL TLX DRIVER-TO-EXECUTIVE FUNCTIONS
  438. QUAL 1TD EXECUTIVE-TO-DRIVER FUNCTIONS
  439. QUAL MACRO$ MACRO CALLS
  440. QUAL
  441. ITM SPACE 4,10
  442. ** DEFINITION COMMON DECKS.
  443.  
  444.  
  445. *CALL COMPMAC
  446. *CALL COMPMRM
  447. *CALL COMSCPS
  448. *CALL COMSIOU
  449. *CALL COMSPIM
  450. *CALL COMSREM
  451. *CALL COMSSSD
  452. *CALL COMSTCM
  453. LIST X
  454. *CALL COMSTDR
  455. LIST *
  456. TITLE MACRO DEFINITIONS.
  457. ADCM SPACE 4,10
  458. ** ADCM - GENERATE ADD CONSTANT MACRO.
  459. *
  460. * ADCM OPC,TBL
  461. *
  462. * ENTRY *OPC* = MACRO NAME TO BE GENERATED.
  463. * *TBL* = TABLE NAME OF ADDRESSES OF MACRO CALLS.
  464. *
  465. * MACROS MACREF.
  466.  
  467.  
  468. ADCM MACRO OPC,TBL,INST
  469. OPC MACRO CNST
  470. LOCAL A
  471. MACREF OPC
  472. QUAL
  473. IFC EQ,$INST$$
  474. A ADC CNST
  475. ELSE 1
  476. A INST CNST
  477. ENDIF
  478. QUAL *
  479. TBL RMT
  480. CON A
  481. TBL RMT
  482. OPC ENDM
  483. ADCM ENDM
  484.  
  485.  
  486. * DEFINE MACROS.
  487.  
  488.  
  489. ADCM ADCRA,TRAA
  490. ADCM LDCRA,TRAA,LDC
  491. ADCM ADCTR,TTRA
  492. ADCM ADCPT,TPTA
  493. ADCM ADCPL,TPLA
  494. ADCM LDCDQ,TDQA,LDC
  495. ADCM LMCDQ,TDQA,LMC
  496. ADCM ADCBM,TBMA
  497. ADCM LDCTN,TTNA,LDC
  498. ASCO SPACE 4,10
  499. ** ASCO - GENERATE MULTIPLEXER OUTPUT FOR *ASCII* CODE.
  500. *
  501. *NAME ASCO CH,EQU
  502. *
  503. * ENTRY *NAME* = NAME FOR ASSIGNMENT OF CODE.
  504. * *CH* = *ASCII* CHARACTER VALUE IN HEXIDECIMAL.
  505. * *EQU* = ASSIGNMENT PSEUDO OP.
  506. *
  507. * MACROS PAR.
  508.  
  509.  
  510. MACRO ASCO,A,C,D
  511. NOREF .1
  512. PAR 0#_C,0
  513. A D 4000+0#_C+.1*200
  514. ASCO ENDM
  515. INASC SPACE 4,10
  516. ** INASC - GENERATE *ASCII* INPUT TRANSLATION.
  517. *
  518. *CH INASC DPC,PROC
  519. *
  520. * ENTRY *CH* = *ASCII* CHARACTER VALUE IN HEXIDECIMAL.
  521. * *DPC* = DISPLAY CODE VALUE.
  522. * *PROC* = SPECIAL PROCESSOR CODE.
  523.  
  524.  
  525. MACRO INASC,A,C,D
  526. NOREF .2,.3
  527. IFC NE,*C**
  528. .2 SET D
  529. .3 SET C/100
  530. IFNE .3,0,2
  531. .2 SET D CES
  532. .3 SET .3/2-74/2
  533. VFD 5/.2,1/.3,6/C-C/100*100
  534. ELSE 2
  535. .2 SET D NLI
  536. VFD 5/.2,7/0
  537. INASC ENDM
  538. JMP SPACE 4,15
  539. ** JMP - GENERATE THREADED JUMP.
  540. *
  541. * JMP ADDR
  542. *
  543. * ENTRY *ADDR* = BRANCH ADDRESS.
  544. *
  545. * MACROS UJP.
  546.  
  547.  
  548. JMP MACRO A
  549. NOREF ._A
  550. .1 IF DEF,._A
  551. .2 IFLE *-._A,37B
  552. UJN ._A
  553. ._A SET *-1
  554. .2 ELSE
  555. ._A SET *
  556. LJM A
  557. .2 ENDIF
  558. .1 ELSE
  559. ._A SET *
  560. UJP A
  561. .1 ENDIF
  562. JMP ENDM
  563. OTASC SPACE 4,10
  564. ** OTASC - GENERATE *ASCII* OUTPUT TRANSLATION.
  565. *
  566. *DPC OTASC CH,PROC
  567. *
  568. * ENTRY *CH* = *ASCII* CHARACTER VALUE IN HEXIDECIMAL.
  569. * *DPC* = DISPLAY CODE VALUE.
  570. * *PROC* = SPECIAL PROCESSOR CODE.
  571. *
  572. * MACROS ASCO.
  573.  
  574.  
  575. MACRO OTASC,A,C,D
  576. NOREF .2
  577. IFC NE,*C**
  578. .2 ASCO C,SET
  579. CON .2
  580. ELSE 1
  581. CON D NLO
  582. OTASC ENDM
  583. PAR SPACE 4,10
  584. ** PAR - GENERATE CHARACTER PARITY BIT.
  585. *
  586. * PAR CH,OE
  587. *
  588. * ENTRY *CH* = CHARACTER VALUE.
  589. * *OE* = ODD/EVEN (0=EVEN, 1=ODD)
  590. *
  591. * EXIT *.1* = PARITY.
  592.  
  593.  
  594. PAR MACRO A,B
  595. NOREF .1
  596. P MICRO A+1,1, 011010011001011010010110011010011001011001101001011010011
  597. ,00101101001011001101001011010011001011001101001100101101001011001101001
  598. .1 SET "P"&;B
  599. PAR ENDM
  600. RETURN SPACE 4,10
  601. ** RETURN - RETURN TO MANAGER TO ADVANCE TERMINAL PROCESSING.
  602. *
  603. * RETURN ADDR
  604. *
  605. * ENTRY *ADDR* = NEXT PROCESSSING ADDRESS. IF NULL
  606. * OR IF "*", RETURN TO NEXT PROGRAM
  607. * ADDRESS.
  608. *
  609. * MACROS JMP, MACREF.
  610.  
  611.  
  612. PURGMAC RETURN
  613. RETURN MACRO A
  614. MACREF RETURN
  615. .1 IFC EQ,$A$$
  616. RJM MGR$
  617. .1 ELSE
  618. .2 IFC EQ,$A$*$
  619. RJM MGR$
  620. .2 ELSE
  621. LDC A
  622. JMP MGR=
  623. .2 ENDIF
  624. .1 ENDIF
  625. RETURN ENDM
  626. TTADD SPACE 4,10
  627. ** TTADD - GENERATE TERMINAL TABLE ADDRESS.
  628. *
  629. *TAG TTADD NAM,OPR,TNUM
  630. *
  631. * ENTRY *NAM* = DESIRED WORD OF TERMINAL TABLE ENTRY.
  632. * *OPR* = OPERAND TO LOAD A. (IF NULL *LDD*)
  633. * *TNUM* = TAG NAME OF TERMINAL NUMBER. (IF NULL *TN*)
  634. *
  635. * EXIT (A) = DESIRED ADDRESS.
  636.  
  637.  
  638. MACRO TTADD,TAG,NAM,OPR,TNUM
  639. LOCAL A
  640. MACREF TTADD
  641. TAG TTAP OPR,TNUM
  642. QUAL
  643. A ADC NAM
  644. QUAL *
  645. TTTA RMT
  646. CON A
  647. TTTA RMT
  648. TTADD ENDM
  649. TITLE SYMBOLIC EQUIVALENCES.
  650. SPACE 4,10
  651. **** DIRECT LOCATION ASSIGNMENTS.
  652.  
  653.  
  654. DI EQU 16 MULTIPLEXER INPUT DATA
  655. DO EQU 17 MULTIPLEXER OUTPUT DATA
  656.  
  657. DP EQU 20 - 24 TERMINAL TABLE WORD *VDPT*
  658. * 12/ FIRST POT OF CURRENT LINE
  659. * 12/ CURRENT POT OF CURRENT LINE
  660. * 12/ CURRENT WORD AND BYTE OF CURRENT POT
  661. * 12/ TERMINAL MODE FLAGS
  662. * 12/ DRIVER CONTROL ADDRESS
  663.  
  664. CH EQU 25 - 31 TERMINAL TABLE WORD *VCHT*
  665. * 12/ TEMPORARY STORAGE
  666. * 12/ LINE CHARACTER COUNT
  667. * 12/ PARTIALLY PROCESSED CONTROL BYTE
  668. * 12/ INPUT CHARACTER COUNT
  669. * 12/ OUTPUT CHARACTER COUNT
  670.  
  671. DC EQU 32 - 36 TERMINAL TABLE WORD *VDCT*
  672. RN EQU 37 REGISTER NUMBER
  673. LF EQU 40 LINE ACTIVITY FLAG
  674. F7 EQU 41 START OF *F7* SEQUENCE/NO TIME-OUT = 1
  675. IN EQU 42 - 46 CIRCULAR QUEUE *IN* POINTER
  676. PN EQU 47 PORT NUMBER - 0 OR 1
  677. PY EQU 57 PARITY - BIT 2**7 SET IF ODD PARITY
  678. RQ EQU 60 - 64 *RDF* REQUEST WORD
  679. TN EQU 64 TERMINAL NUMBER
  680. EQ EQU 65 EST ORDINAL
  681. HS EQU 66 HALF-SECOND FLAG - SET TO 1 FOR
  682. ONE DRIVER CYCLE EACH HALF-SECOND
  683. IT EQU 67 HALF-SECOND INTERVAL TIMER - DECREMENTED
  684. BY 1 EACH HALF-SECOND IF NONZERO
  685. ITM SPACE 4,10
  686. ** TIME-OUT VALUES.
  687.  
  688.  
  689. COTIO EQU 2*2 *CARRIER ON* TIME-OUT (1/2 SECONDS)
  690. DSRTIO EQU 2*2 *DATA SET READY* TIME-OUT (1/2 SECONDS)
  691. HUPTIO EQU 3*2 HANG-UP-PHONE DELAY (1/2 SECONDS)
  692. INATIO EQU 15D*60D INACTIVITY TIME-OUT (SECONDS)
  693. LINTIO EQU 5*2 LOGIN TIME-OUT (1/2 SECONDS)
  694. NTIO EQU 10D*60D*2 NORMAL TIME-OUT (1/2 SECONDS)
  695. RINGTIO EQU 4*2 RING INDICATOR TIME-OUT (1/2 SECONDS)
  696. RPATIO EQU 2*2 REGAIN PORT ACCESS TIME-OUT (1/2 SECONDS)
  697. UTIO EQU 30D*2 USER NUMBER TIME-OUT (1/2 SECONDS)
  698.  
  699. PRTO EQU 3*60D*10D INITIAL PORT RESERVATION TIME-OUT
  700. ITM SPACE 4,10
  701. ** PROGRAM EQUIVALENCES.
  702.  
  703.  
  704. BDRATE EQU 9600D MAXIMUM BAUD RATE
  705. CHRATE EQU BDRATE/10D CHARACTER RATE/SEC
  706. LODS EQU 10 OPERATOR DISPLAY BUFFER LENGTH
  707. MNCT EQU 1000D/CHRATE MINIMUM CYCLE TIME (MSECS)
  708. OMBUFL EQU 37D OPERATOR MESSAGE BUFFER LENGTH
  709. RCLDLY EQU 2 PP RECALL DELAY (SECONDS)
  710. NRPR EQU 77 DELAY FOR REGAINING PORT ACCESS
  711. SPACE 4,10
  712. ** CHARACTER EQUIVALENCES.
  713.  
  714.  
  715. * INTERNAL CODES.
  716.  
  717. .ICR EQU 210 CARRIAGE RETURN
  718. .ILF EQU 211 LINE FEED
  719. .INL EQU 212 NEW LINE (CR/LF)
  720. .ECP EQU 770001 END OF CURRENT POT
  721.  
  722. * CARRIAGE CONTROL MICROS.
  723.  
  724. CR MICRO 1,, @H CARRIAGE RETURN
  725. LF MICRO 1,, @I LINE FEED
  726. NL MICRO 1,, @J NEW LINE (CR/LF)
  727.  
  728. * ASCII CHARACTER (7 DATA BITS).
  729.  
  730. .ABRK EQU 0#00 (BRK) BREAK
  731. .ACLN EQU 0#3A (CLN) COLON
  732. .AESC EQU 0#1B (ESC) ESCAPE
  733. .APCT EQU 0#25 (PCT) PERCENT
  734. .ASP EQU 0#20 (CR) SPACE
  735.  
  736. * *ASCII* TERMINAL CONTROL CHARACTERS.
  737.  
  738. .CCAN ASCO 18,EQU (CAN) CANCEL (CTL-X)
  739. .CCLN ASCO 3A,EQU (CLN) COLON
  740. .CCR ASCO 0D,EQU (CR) CARRIAGE RETURN
  741. .CDC1 ASCO 11,EQU (DC1) DEVICE CONTOL 1
  742. .CDC4 ASCO 14,EQU (DC4) DEVICE CONTROL 4
  743. .CDEL ASCO 7F,EQU (DEL) DELETE
  744. .CLF ASCO 0A,EQU (LF) LINE FEED
  745. .CNUL ASCO 00,EQU (NUL) NULL
  746. .CPCT ASCO 25,EQU (PCT) PERCENT
  747. .CRS ASCO 1E,EQU (RS) RECORD SEPARATOR
  748. ITM SPACE 4,10
  749. ** TWO-PORT MULTIPLEXER PORT OPERATING MODE.
  750. *
  751. * DISABLE PARITY = NOT SELECTED.
  752. * NUMBER OF STOP BITS = 1.
  753. * NUMBER OF DATA BITS = 7.
  754. * PARITY = EVEN.
  755.  
  756. TPMODE EQU 5 SELECT OPERATING MODE
  757.  
  758. ****
  759. ITM TITLE GLOBAL DATA STORAGE.
  760. FWA SPACE 4,15
  761. ** FWA - DRIVER ENTRY POINT.
  762.  
  763.  
  764. ORG PPFW
  765.  
  766. FWA UJN FWA1 EXECUTE PRESET ON INITIAL LOAD
  767. BSS 1
  768. * SUBR (*2TM* CALL OF *1TM*)
  769.  
  770. FWA1 LJM PRS EXECUTE PRESET
  771. * UJN ITM ENTER DRIVER MAIN PROGRAM
  772.  
  773. FWAE EQU * LWA+1 OF ENTRY CODE
  774. ITM SPACE 4,10
  775. ** 1TM - GLOBAL DATA STORAGE.
  776.  
  777.  
  778. ORG FWA
  779.  
  780. OMCC BSS 1 OPERATOR MESSAGE CHARACTER COUNT
  781. RDAT BSS 1 REPEATED DATA
  782.  
  783. GLBSE EQU * LWA+1 OF GLOBAL DATA STORAGE
  784. ITM SPACE 4,10
  785. CTL MAX FWAE,GLBSE LWA+1 OF ENTRY CODE AND GLOBAL DATA
  786. ITM TITLE MAIN CONTROL LOOP.
  787. QUAL CTL
  788. ORG CTL
  789. ITM SPACE 4,20
  790. ** ITM - TWO-PORT MULTIPLEXER DRIVER MAIN CONTROL LOOP.
  791. *
  792. * SEQUENTIALLY EXECUTES THE MAIN PROCESSES OF THE
  793. * MULTIPLEXER DRIVER.
  794. *
  795. * ENTRY FROM *PRS* -
  796. * EQUIPMENT AND CHANNEL RESERVED.
  797. * MULTIPLEXER AND PORT SELECTED.
  798. * (IR+3) = REAL-TIME CLOCK (SECONDS) AT START
  799. * OF DRIVER INACTIVITY TIME-OUT.
  800. * (SSMX) = PORT STATUS.
  801. * (LF) = SET *ON* FOR INITIAL CONNECT ATTEMPT.
  802. *
  803. * EXIT TO *RCL* TO RECALL PPU IF NO MULTIPLEXER ACTIVITY.
  804. * TO *IMT* TO DROP PPU IF TIMED-OUT.
  805. *
  806. * CALLS AVT, CAR, CCQ, CEF, CIT, CMF, MGR., RPI, SVM, *3TM*.
  807. *
  808. * MACROS EXECUTE.
  809.  
  810.  
  811. ITM BSS 0 DRIVER ENTRY
  812. EXECUTE 3TM
  813. ITM1 RJM CEF CHECK ERROR FLAG
  814. RJM CMF CHECK *RDF* STATUS
  815. RJM AVT ADVANCE TIMERS
  816. RJM SVM SERVICE MULTIPLEXER
  817. RJM MGR. PROCESS TERMINALS
  818. RJM CAR CHECK FOR REQUEST OF PORT AND RELEASE
  819. NJN ITM2 IF PORT WAS NOT RELEASED
  820. STD F7 CLEAR POSSIBLE START OF *F7* SEQUENCE
  821. RJM RPI INITIALIZE FOR REGAINING PORT
  822. ITM2 RJM CCQ CHECK CIRCULAR QUEUE
  823. LDD LF CHECK LINE ACTIVITY FLAG
  824. NJN ITM1 IF LINE ACTIVITY
  825.  
  826. * EXIT MAIN CONTROL LOOP.
  827.  
  828. RJM CIT CHECK INACTIVITY TIME-OUT
  829. NJN ITM3 IF TIMED-OUT
  830. LJM RCL RECALL PPU
  831.  
  832. * THE DRIVER HAS TIMED OUT BECAUSE OF NO LINE
  833. * ACTIVITY. ERROR LOG AND DAYFILE MESSAGES WILL BE
  834. * ISSUED AND THE PP WILL BE DROPPED WITHOUT RECALL.
  835.  
  836. ITM3 LDN MTIO+40 * RDF TIME-OUT.*
  837. JMP IMT ISSUE MESSAGES AND TERMINATE
  838. MGR TITLE MGR - TERMINAL MANAGER.
  839. MGR SPACE 4,20
  840. ** MGR - TERMINAL MANAGER.
  841. *
  842. * THE TERMINAL MANAGER PERFORMS THE STATUS CHECKS UPON THE
  843. * PORT AND EXECUTES THE REENTRANT PROCESSOR FOR THE LINE.
  844. *
  845. * ENTRY (DP+4) = REENTRANT PROCESSING ADDRESS.
  846. * (SSMX) = PORT STATUS.
  847. * (DI) = TERMINAL INPUT.
  848. * (DO) = TERMINAL OUTPUT.
  849. *
  850. * EXIT TO (DP+4) -
  851. * (A) = INPUT DATA.
  852. * (DI) = INPUT DATA.
  853. * (DC - DC+4) = TERMINAL TABLE WORD *VDCT*.
  854. * TO *CIS* IF INPUT RECEIVED WHILE IN *WRITE* MODE.
  855. * TO *OFL* IF TERMINAL DROPS OFF LINE.
  856. *
  857. * CALLS STA.
  858.  
  859.  
  860. MGR. SUBR ENTRY/EXIT
  861. LDM SSMX GET PORT STATUS
  862. SHN 21-2
  863. MJN MGR1 IF ON-LINE (CARRIER ON)
  864.  
  865. * CHECK STATUS OF OFF-LINE TERMINAL.
  866.  
  867. LDD DP+4 CHECK PROCESSOR ADDRESS
  868. SBK LINPE
  869. MJN MGR2 IF LINE PROCESSING
  870. LJM OFL SET TERMINAL OFF-LINE
  871.  
  872. * PROCESS ON-LINE TERMINAL.
  873.  
  874. MGR1 LDD DI CHECK INPUT DATA
  875. NJN MGR3 IF INPUT RECEIVED
  876. LDD DO CHECK OUTPUT
  877. SHN 21-13
  878. PJN MGR2 IF NO OUTPUT IN BUFFER
  879. LDD DP+4 CHECK PROCESSING ADDRESS
  880. SBK WTM
  881. PJN MGR.X IF IN *WRITE* MODE
  882.  
  883. * ENTER TERMINAL PROCESSING ROUTINE.
  884.  
  885. MGR2 RJM STA SET FWA OF TERMINAL TABLE
  886. ADN VDCT READ *VDCT*
  887. CRD DC
  888. LDD DI GET INPUT DATA
  889. LJM 0,DP+4 ENTER PROCESSING ROUTINE
  890.  
  891. * CHECK INPUT RECEIVED.
  892.  
  893. MGR3 LDD DP+4 CHECK PROCESSING ADDRESS
  894. SBK WTM
  895. MJN MGR2 IF NOT IN *WRITE* MODE
  896. LJM CIS CHECK INTERRUPT STATUS
  897. MGR SPACE 4,15
  898. ** MGR - RETURNS FROM REENTRY PROCESSORS.
  899. MGR SPACE 4,15
  900. ** MGR$ - RETURN FROM *RETURN* MACRO (NULL OR * ADDRESS FIELD).
  901. *
  902. * ENTRY (MGR$) = REENTRY ADDRESS.
  903.  
  904.  
  905. MGR$ CON 0 (REENTRY ADDRESS)
  906. LDM MGR$ GET REENTRY ADDRESS
  907. * UJN MGR= SET REENTRY ADDRESS
  908. MGR= SPACE 4,15
  909. ** MGR= - RETURN FROM *RETURN ADDR* MACRO.
  910. *
  911. * ENTRY (A) = REENTRY ADDRESS.
  912.  
  913.  
  914. MGR= STD DP+4 SET REENTRY ADDRESS
  915. * UJN MGR WRITE TERMINAL TABLE WORDS AND EXIT
  916. MGR SPACE 4,15
  917. ** MGR - RETURN WITH NO CHANGE OF REENTRY ADDRESS.
  918. *
  919. * ENTRY (DP+4) = REENTRY ADDRESS.
  920.  
  921.  
  922. MGR RJM STA SET FWA OF TERMINAL TABLE
  923. ADN VDPT WRITE *VDPT* AND *VCHT* TO CM
  924. CWD DP
  925. ADK VCHT-VDPT
  926. CWD CH
  927. UJP MGR.X EXIT FROM MANAGER
  928. ITM TITLE CTL - LINE PROCESSING ROUTINES.
  929. DIN SPACE 4,25
  930. ** DIN - PROCESS PORT DIALED-IN.
  931. *
  932. * WAITS FOR TERMINAL OPERATOR TO IDENTIFY TERMINAL,
  933. * THEN NOTIFIES *RDF* THAT THE TERMINAL HAS DIALED
  934. * IN AND REQUESTS LOGIN PROCESSING.
  935. *
  936. * ENTRY (A) = INPUT DATA.
  937. * (DP+4) = *DIN*.
  938. *
  939. * EXIT TO *LIN* TO PROCESS LOGIN -
  940. * ERROR LOG MESSAGE ISSUED.
  941. * *CAN* ISSUED TO CLEAR SCREEN.
  942. * (CH - CH+4) = 0.
  943. * (DP - DP+2) = 0.
  944. * (DP+3) = *BLKEDIT* OR *TTY* SET.
  945. * (IR+3) = CURRENT REAL-TIME CLOCK (SECONDS).
  946. * TO *MGR* IF TERMINAL FAILS TO INITIATE LOGIN.
  947. * (LF) = ZERO TO FORCE DRIVER DROP.
  948. *
  949. * USES IT, T7.
  950. *
  951. * CALLS DFM, ERQ.
  952. *
  953. * MACROS RETURN.
  954.  
  955.  
  956. DIN BSS 0 ENTRY
  957. LDD DC CHECK *VDCT* TERMINAL STATUS
  958. NJP MGR IF LAST USER NOT OFF, RETURN
  959. RJM SPA
  960. RJM CTM CLEAR TERMINAL
  961. RJM RMA
  962. LDK LINTIO SET LOGIN TIME-OUT
  963. STD IT
  964. RETURN * REENTER
  965. NJN DIN1 IF INPUT RECEIVED
  966. LDD IT GET TIMER
  967. STD LF SET/CLEAR LINE ACTIVITY FLAG
  968. JMP MGR EXIT/REENTER
  969.  
  970. * CHECK INPUT FOR TERMINAL TYPE INDICATOR.
  971. *
  972. * ENTRY (A) = INPUT DATA.
  973. * (DI) = INPUT DATA.
  974.  
  975. DIN1 LPC 177 MASK CHARACTER
  976. STD T7
  977. LDN ZERL CLEAR DIRECT CELLS
  978. CRD CH
  979. CRD DP
  980. LDN /TLX/DIN REQUEST DIAL-IN PROCESSING
  981. RJM ERQ
  982. LDM TINT,T7 TRANSLATE INPUT CHARACTER
  983. LPN 77
  984. LMN 1RB
  985. NJN DIN2 IF NOT *B*
  986. LDC 200 SET *BLKEDIT* TERMINAL TYPE
  987. RAD DP+3
  988. DIN2 LDC =C* RDF INITIATED.*+ERLN
  989. RJM DFM ISSUE ERROR LOG MESSAGE
  990. LDC .CCAN ISSUE *CAN* TO CLEAR SCREEN
  991. LMD PY TOGGLE ODD PARITY
  992. STD DO
  993. RETURN LIN PROCESS LOGIN
  994. HUP SPACE 4,25
  995. ** HUP - HANG UP PHONE LINE.
  996. *
  997. * ISSUES *DC4* TO TERMINATE SESSION IF *PACER*
  998. * TERMINAL. DISCONNECTS THE COMMUNICATIONS LINE
  999. * TO TERMINATE THE CONNECTION.
  1000. *
  1001. * EXIT TO *MGR* TO DROP/RECALL DRIVER -
  1002. * *DC4* ISSUED IF *PACER* TERMINAL.
  1003. * MULTIPLEXER CLEARED IF PORT IS NEITHER BEING
  1004. * REQUESTED NOR RE-REQUESTED.
  1005. * TERMINAL TABLE CLEANED UP.
  1006. * (IR+3) = CURRENT REAL-TIME CLOCK (SECONDS).
  1007. * (DP) = 0.
  1008. * (LF) = ZERO TO FORCE DROP/RECALL.
  1009. *
  1010. * USES IT.
  1011. *
  1012. * CALLS AMA, CUT, ERQ, IFN, RPI, RMA, SAT.
  1013. *
  1014. * MACROS RETURN.
  1015.  
  1016.  
  1017. HUP BSS 0 ENTRY
  1018.  
  1019. * ISSUE *DC4* TO TERMINATE SESSION IF *PACER* TERMINAL.
  1020.  
  1021. LDC .CDC4 ISSUE *DC4*
  1022. LMD PY TOGGLE ODD PARITY
  1023. STD DO
  1024.  
  1025. * DELAY TO ALLOW OUTPUT BUFFER TO CLEAR.
  1026.  
  1027. LDK HUPTIO SET DELAY
  1028. STD IT
  1029. RETURN * REENTER
  1030. LDD IT CHECK TIMER
  1031. ZJN HUP1 IF DELAY COMPLETE
  1032. JMP MGR REENTER
  1033.  
  1034. * DISCONNECT COMMUNICATIONS LINE IF IT IS NOT BEING
  1035. * RE-REQUESTED BY ANOTHER DRIVER.
  1036.  
  1037. HUP1 RJM CRR CHECK RE-REQUESTED AND REQUESTED
  1038. STD T7 SAVE STATUS
  1039. NJN HUP2 IF ANOTHER PROCESSOR NEEDS PORT
  1040. RJM AMA ACQUIRE MULTIPLEXER ACCESS
  1041. LDK MXMC CLEAR MULTIPLEXER I/O BUFFERS
  1042. RJM IFN
  1043. LDK MXDR CLEAR *DATA TERMINAL READY*
  1044. RJM IFN
  1045. LDK MXRTS CLEAR *REQUEST TO SEND*
  1046. RJM IFN
  1047. RJM RMA RELEASE MULTIPLEXER ACCESS
  1048.  
  1049. * DROP POTS AND CLEAN UP TERMINAL TABLE.
  1050.  
  1051. HUP2 LDD DP CHECK IF POTS ASSIGNED
  1052. ZJN HUP3 IF NO POTS ASSIGNED
  1053. STD RQ+3 DROP POTS
  1054. LDN /TLX/DRT
  1055. RJM ERQ
  1056. HUP3 STD DP CLEAR POT POINTER
  1057. STD LF CLEAR LINE ACTIVITY FLAG
  1058. RJM CUT CLEAN UP TERMINAL TABLE
  1059. LDD T7 RE-REQUESTED AND REQUESTED STATUS
  1060. ZJN HUP4 IF ANOTHER PROCESSOR DOES NOT NEED PORT
  1061. RJM RTD RELEASE MULTIPLEXER AND DELAY
  1062. LDC ONL SET REENTRY ADDRESS
  1063. STD DP+4
  1064. RJM RPI INITIALIZE FOR REGAINING PORT ACCESS
  1065. HUP4 RJM SAT SET ACTIVITY TIMER
  1066. JMP MGR EXIT TO MANAGER
  1067. OFL SPACE 4,15
  1068. ** OFL - PROCESS USER OFF LINE.
  1069. *
  1070. * DROPS ALL POTS ASSOCIATED WITH THE TERMINAL AND NOTIFIES
  1071. * *RDF* TO LOGICALLY DISCONNECT THE TERMINAL.
  1072. *
  1073. * EXIT TO *MGR* FORCE DRIVER DROP/RECALL -
  1074. * ERROR LOG MESSAGE ISSUED.
  1075. * (LF) = ZERO TO FORCE DRIVER DROP/RECALL.
  1076. * (DP) = 0.
  1077. *
  1078. * CALLS DFM, ERQ.
  1079.  
  1080.  
  1081. OFL BSS 0 ENTRY
  1082. LDC =C* RDF CARRIER LOST.*+ERLN
  1083. RJM DFM ISSUE ERROR LOG MESSAGE
  1084. LDD DP SET ASSIGNED POTS TO BE DROPPED
  1085. STD RQ+3
  1086. LDN /TLX/HUP REQUEST HUNG UP PHONE PROCESSING
  1087. RJM ERQ
  1088. STD DP CLEAR POT POINTER
  1089. UJP HUP DISCONNECT LINE
  1090. ONL SPACE 4,25
  1091. ** ONL - WAIT FOR TERMINAL TO COME ON-LINE.
  1092. *
  1093. * WAITS FOR INDICATION THAT THE MULTIPLEXER PORT
  1094. * HAS CONNECTED TO AN ACTIVE LINE, THEN PROCESSES
  1095. * THE INTERFACE PROTOCOL. *ONL* EXITS TO *DIN* FOR
  1096. * DIAL-IN WHEN THE CONNECTION HAS BEEN ESTABLISHED
  1097. * AND WHEN THE TERMINAL OPERATOR ENTERS A CHARACTER
  1098. * (ANY CHARACTER IS ACCEPTED) TO INITIATE LOGIN.
  1099. *
  1100. * ENTRY (LF) = NONZERO FOR INITIAL DRIVER ENTRY.
  1101. * MULTIPLEXER AND PORT SELECTED.
  1102. *
  1103. * EXIT TO *DIN* WHEN PORT IS ON-LINE -
  1104. * (LF) = NONZERO.
  1105. * TO *MGR* IF PORT DOES NOT COME ON-LINE -
  1106. * (LF) = ZERO TO FORCE DRIVER DROP/RECALL.
  1107. *
  1108. * USES IT.
  1109. *
  1110. * CALLS IFN, RMA, SPA.
  1111. *
  1112. * MACROS RETURN.
  1113.  
  1114.  
  1115. ONL BSS 0 ENTRY
  1116. LDK RINGTIO SET RING TIME-OUT
  1117. STD IT
  1118. RETURN * SET REENTRY
  1119.  
  1120. * WAIT FOR *RING INDICATOR* (DIAL-UP LINE) OR FOR
  1121. * *CARRIER ON* AND *DATA SET READY* (HARD-WIRED
  1122. * LINE).
  1123.  
  1124. LDM SSMX CHECK PORT STATUS
  1125. SHN 21-0 CHECK *RING INDICATOR*
  1126. MJN ONL1 IF SET
  1127. RJM SPA SET PORT ACCESS
  1128. LDK MXDR+1 SET *DATA TERMINAL READY*
  1129. RJM IFN
  1130. RJM RMA
  1131. LDK DSRTIO SET *DATA SET READY* TIME-OUT
  1132. STD IT
  1133. RETURN *
  1134. LDM SSMX CHECK PORT STATUS
  1135. LPN 6 CHECK *CARRIER ON* & *DATA SET READY*
  1136. LMN 6
  1137. NJP ONL3 IF NOT *DATA SET READY* AND *CARRIER ON*
  1138.  
  1139. * SET *DATA TERMINAL READY* AND WAIT FOR *DATA SET READY*.
  1140.  
  1141. ONL1 RJM SPA
  1142. LDK MXDR+1 SET *DATA TERMINAL READY*
  1143. RJM IFN
  1144. RJM RMA
  1145. LDK DSRTIO SET *DATA SET READY* TIME-OUT
  1146. STD IT
  1147. RETURN * SET REENTRY
  1148. LDM SSMX CHECK PORT STATUS
  1149. LPN 2
  1150. ZJN ONL3 IF NOT *DATA SET READY*
  1151.  
  1152. * SET *REQUEST TO SEND* AND WAIT FOR *CARRIER ON*.
  1153.  
  1154. RJM SPA
  1155. LDK MXRTS+1 ISSUE *REQUEST TO SEND*
  1156. RJM IFN
  1157. RJM RMA
  1158. LDK COTIO SET *CARRIER ON* TIME-OUT
  1159. STD IT
  1160. RETURN * SET REENTRY
  1161. LDM SSMX CHECK PORT STATUS
  1162. LPN 4
  1163. ZJN ONL3 IF NOT *CARRIER ON*
  1164.  
  1165. * TERMINAL IS ON-LINE. EXIT TO DIAL-IN PROCESSOR.
  1166.  
  1167. RETURN DIN ENTER DIAL-IN PROCESSOR
  1168.  
  1169. * TERMINAL HAS FAILED TO RESPOND. EXIT TO MANAGER
  1170. * FOR REENTRY OR DRIVER DROP/RECALL.
  1171. *
  1172. * EXIT (LF) = (IT). IF ZERO, THE LINE FUNCTION HAS
  1173. * TIMED-OUT AND THE DRIVER WILL BE FORCED
  1174. * TO DROP/RECALL.
  1175.  
  1176. ONL3 LDD IT SET/CLEAR LINE ACTIVITY
  1177. STD LF
  1178. JMP MGR REENTER
  1179. RPA SPACE 4,15
  1180. ** RPA - REGAIN PORT ACCESS.
  1181. *
  1182. * ENTRY (NT) = 0, IF TIME-OUT ALLOWED.
  1183. * = 1, IF NO TIME-OUT.
  1184. * (IT) = DELAY IF (NT) = 0.
  1185. * WAIT *DELAY* SECONDS BEFORE PP RECALL OR
  1186. * TIME-OUT CHECK.
  1187. * (RPAA) = REENTRY ADDRESS WHEN ACCESS OBTAINED.
  1188. *
  1189. * USES F7, LF.
  1190. *
  1191. * CALLS CTM, IFN, RMA, STM.
  1192.  
  1193.  
  1194. RPA BSS 0 ENTRY
  1195. RPA1 RETURN *
  1196. SOM RPAC
  1197. NJN RPA1 IF DELAY PERIOD NOT YET EXPIRED
  1198. LDK NRPR
  1199. STM RPAC RESET DELAY PERIOD
  1200. RJM STM SELECT TERMINAL ON MUX
  1201. NJN RPA2 IF PORT RESERVED
  1202. LDD F7
  1203. NJN RPA1 IF NO TIME-OUT
  1204. LDD IT SET/CLEAR LINE ACTIVITY
  1205. STD LF
  1206. UJN RPA1 RETURN
  1207.  
  1208. * INITIALIZE MULTIPLEXER AND TERMINAL.
  1209.  
  1210. RPA2 LDK MXSM+TPMODE SET PORT OPERATING MODE
  1211. RJM IFN
  1212. LDK MXMC CLEAR PORT I/O BUFFERS
  1213. RJM IFN
  1214. RJM CTM CLEAR TERMINAL
  1215. RJM RMA RELEASE MULTIPLEXER ACCESS
  1216. LDN 77
  1217. STD LF
  1218. LDN 0 SET NO TIME-OUT
  1219. STD F7
  1220. LDC ONL SET NEXT REENTRY ADDRESS
  1221. RPAA EQU *-1
  1222. JMP MGR= SET REENTRY ADDRESS
  1223.  
  1224.  
  1225. RPAC CON NRPR DELAY PERIOD COUNTER
  1226. RPI SPACE 4,15
  1227. ** RPI - REGAIN PORT ACCESS INITIALIZATION.
  1228. *
  1229. * ENTRY (DP+4) = CURRENT REENTRY ADDRESS.
  1230. *
  1231. * EXIT (DP+4) = NEW REENTRY ADDRESS.
  1232. * (IT) = DELAY IF (F7) = 0.
  1233. * WAIT *DELAY* SECONDS BEFORE PP RECALL OR
  1234. * TIME-OUT CHECK.
  1235. * (F7) = 1, IF IN MIDDLE OF RDF SESSION.
  1236. * (RPAA) = (DP+4) ON ENTRY IF (F7) HAS BEEN SET TO 1,
  1237. * OTHERWISE, IT IS SET TO /CTL/ONL.
  1238. *
  1239. * USES F7, IT.
  1240.  
  1241.  
  1242. RPI SUBR ENTRY/EXIT
  1243. LDD DP+4
  1244. SBK LINPE
  1245. MJN RPI3 IF LINE PROCESSING
  1246.  
  1247. * INITIALIZE *RPA* TO NOT GIVE UP THE PP.
  1248.  
  1249. RPI1 LDN 1 NO TIME-OUT SELECTED
  1250. STD F7
  1251. LDD DP+4 SAVE CURRENT RE-ENTRY ADDRESS
  1252. RPI2 STM RPAA
  1253. LDC RPA NEW REENTRY IS *RPA*
  1254. STD DP+4
  1255. UJN RPIX RETURN
  1256.  
  1257. * CHECK FOR *HUP* PROCESSING.
  1258.  
  1259. RPI3 ADC LINPE-HUP
  1260. MJN RPI4 IF NOT IN *HUP*
  1261. SBK HUP3-HUP
  1262. MJN RPI1 IF IN *HUP*
  1263.  
  1264. * INITIALIZE *RPA* TO TIME-OUT AND RECALL PP.
  1265.  
  1266. RPI4 LDK RPATIO SET TIME-OUT BEFORE RECALL/DROP
  1267. STD IT
  1268. LDC ONL
  1269. UJN RPI2 SET REENTRY
  1270. SPACE 4
  1271. LINPE BSS 0 END OF LINE PROCESSING
  1272. ITM TITLE CTL - TERMINAL CONTROL ROUTINES.
  1273. CIS SPACE 4,25
  1274. ** CIS - CHECK INTERRUPT STATUS.
  1275. *
  1276. * CIS DETERMINES THE STATUS OF A SUSPECTED INTERRUPT INPUT
  1277. * CHARACTER. THE CHARACTER *S* IS A LEVEL 0 INTERRUPT TO
  1278. * *RDF*. AN *INTERRUPT* AND THE CHARACTER *I* ARE LEVEL 1
  1279. * INTERRUPTS TO *RDF*.
  1280. *
  1281. * ENTRY (A) = INPUT DATA.
  1282. * (DI) = INPUT DATA.
  1283. * (DP+4) = PROCESSING ADDRESS.
  1284. *
  1285. * EXIT TO *MGR* IF INTERRUPT IGNORED.
  1286. * TO *INT* IF INTERRUPT -
  1287. * (A) = *TIET* IF *BREAK* OR *I* KEY.
  1288. * = *TAET* IF *S* KEY.
  1289. * TO *AWT* IF TERMINAL MESSAGE IN PROGRESS.
  1290. *
  1291. * USES (CH) = BREAK TIMER.
  1292. *
  1293. * MACROS RETURN.
  1294.  
  1295.  
  1296. CIS BSS 0 ENTRY
  1297. LDD DP+1 CHECK FOR TERMINAL MESSAGE
  1298. SHN -6
  1299. LMN 77
  1300. NJN CIS1 IF NOT ISSUING MESSAGE
  1301. LJM /WTM/AWT CONTINUE TERMINAL OUTPUT
  1302.  
  1303. CIS1 LDD DC CHECK TERMINAL STATUS
  1304. SHN 21-11 CHECK *LOGGED IN* BIT
  1305. PJN CIS5 IF NOT LOGGED IN, IGNORE CHARACTER
  1306.  
  1307. * PROCESS ASCII *BRK* CHARACTER.
  1308.  
  1309. LDD DI CHECK INPUT CHARACTER
  1310. LPC 177
  1311. LMK .ABRK
  1312. NJN CIS4 IF NOT START OF BREAK
  1313. CIS2 LDK 100D/MNCT+1 START TIMER FOR BREAK
  1314. STD CH
  1315. CIS3 RETURN * REENTER
  1316. NJN CIS2 IF BREAK STILL IN PROGRESS
  1317. SOD CH DECREMENT TIMER
  1318. NJN CIS3 IF NOT TIMED-OUT
  1319. UJN CIS6 PROCESS AS INTERRUPT
  1320.  
  1321. * PROCESS CHARACTER OTHER THAN ASCII *BRK*.
  1322.  
  1323. CIS4 STD T7 TRANSLATE INPUT CHARACTER
  1324. LDM TINT,T7
  1325. LPN 77
  1326. LMN 1RS
  1327. ZJP CIS7 IF *S* KEY
  1328. LMN 1RI&1RS
  1329. ZJP CIS6 IF *I* KEY
  1330. CIS5 JMP MGR IGNORE INVALID CHARACTER
  1331.  
  1332. * PROCESS INTERRUPT CHARACTER.
  1333.  
  1334. CIS6 LDN TIET&TAET SET *TIET* INTERRUPT CODE
  1335. CIS7 LMN TAET SET *TAET* INTERRUPT CODE
  1336. LJM INT ENTER INTERRUPT
  1337. CTO SPACE 4,20
  1338. ** CTO - CHECK TIME-OUT.
  1339. *
  1340. * *CTO* IS ENTERED WHEN AN INPUT CHARACTER HAS NOT BEEN
  1341. * RECEIVED FROM A TERMINAL. THE ELAPSED TIME IS CHECKED, AND
  1342. * IF EXCEEDED, THE USER IS LOGGED OFF.
  1343. *
  1344. * ENTRY (DP+4) = PROCESSING ADDRESS.
  1345. *
  1346. * EXIT TO *MGR* IF TIME NOT ELAPSED.
  1347. * TO *RWC* IF TIMED-OUT -
  1348. * TIME-OUT LOGOUT REQUEST ENTERED.
  1349. * SOURCE DUMP FORCED IF READ ACTIVE.
  1350. * TO *TFR* IF FUNCTION REQUEST FROM EXECUTIVE.
  1351. * TO *RWC* IF OUTPUT ASSIGNED -
  1352. * (DP+2) = 0.
  1353. *
  1354. * USES DO, CM - CM+4.
  1355. *
  1356. * CALLS ERQ, STA.
  1357.  
  1358.  
  1359. CTO BSS 0 ENTRY
  1360. LDD DO CHECK OUTPUT BUFFER
  1361. SHN 21-13
  1362. MJN CTO1 IF OUTPUT DATA
  1363. LDD HS CHECK HALF-SECOND FLAG
  1364. ZJN CTO1 IF HALF-SECOND NOT ELAPSED
  1365. RAD DO ADVANCE TIMER
  1366. LMC NTIO
  1367. ZJN CTO2 IF NORMAL TIME-OUT ELAPSED
  1368. RJM STA SET FWA OF TERMINAL TABLE
  1369. ADN VROT READ *VROT*
  1370. CRD CM
  1371. LDD CM+4 CHECK JOB STATUS
  1372. LPN 1
  1373. NJN CTO3 IF JOB NOT ACTIVE
  1374. STD DO CLEAR TIMER
  1375. CTO1 JMP MGR EXIT
  1376.  
  1377. * CHECK FOR *NO TIME-OUT*.
  1378.  
  1379. CTO2 LDD DC+3 CHECK USER ACCESS
  1380. SHN 21-12 CHECK NO-TIME-OUT BIT
  1381. PJN CTO4 IF NOT SET
  1382. LDN 0
  1383. STD DO CLEAR TIMER
  1384. UJN CTO1 EXIT
  1385.  
  1386. * PROCESS INACTIVE JOB.
  1387.  
  1388. CTO3 LDD DC+4 CHECK MESSAGE ASSIGNMENT
  1389. NJN CTO6 IF MESSAGE ASSIGNED
  1390. LDD DC CHECK *LOGGED IN*
  1391. SHN 21-11
  1392. MJN CTO1 IF SET
  1393. LDD DO CHECK TIMER
  1394. LMC UTIO
  1395. NJN CTO1 IF LOGIN TIME-OUT NOT ELAPSED
  1396.  
  1397. * LOG OFF USER.
  1398.  
  1399. CTO4 LDC CTO5 SET REENTRY ADDRESS
  1400. UJN CTO8 FORCE SOURCE INPUT DUMP
  1401.  
  1402. CTO5 LDN /TLX/TOT REQUEST TIME-OUT LOGOUT
  1403. RJM ERQ
  1404. STD DP+2 CLEAR READ STATUS
  1405. JMP RWC ENTER READ/WRITE CONTROL
  1406.  
  1407. * CHECK FOR FUNCTION REQUEST.
  1408.  
  1409. CTO6 LDD DC CHECK MESSAGE TYPE
  1410. SHN 21-13
  1411. PJN CTO7 IF NOT FUNCTION REQUEST
  1412. LJM TFR PROCESS *RDF* FUNCTION REQUEST
  1413.  
  1414. CTO7 LDC RWC SET REENTRY ADDRESS
  1415.  
  1416. * FORCE SOURCE DUMP IF READ ACTIVE.
  1417. *
  1418. * ENTRY (A) = REENTRY ADDRESS.
  1419.  
  1420. CTO8 STD DP+4 SET REENTRY ADDRESS
  1421. LDD DP+2 GET INPUT STATUS
  1422. SHN 21-10
  1423. PJN CTO9 IF INPUT NOT INITIATED
  1424. LPN 7 SET POT LENGTH
  1425. LMN 40 SET FORCED DUMP FLAG
  1426. STD RQ+1
  1427. LDD DP SET FIRST, CURRENT POT
  1428. STD RQ+2
  1429. STD RQ+3
  1430. LDN /TLX/RIN REQUEST SOURCE INPUT DUMP
  1431. RJM ERQ
  1432. STD DP CLEAR POINTERS
  1433. STD DP+2
  1434. CTO9 JMP MGR RETURN TO MANAGER
  1435. INT SPACE 4,20
  1436. ** INT - PROCESS INTERRUPT.
  1437. *
  1438. * *INT* REQUESTS *RDF* TO TERMINATE OUTPUT AND THE USER
  1439. * PROGRAM IN RESPONSE TO AN INTERRUPT FROM THE TERMINAL.
  1440. *
  1441. * ENTRY (A) = INTERRUPT CODE-
  1442. * = *TIET* IF *I* KEY OR *BREAK*.
  1443. * = *TAET* IF *S* KEY.
  1444. *
  1445. * EXIT TO *RWC* IF HANG-UP-PHONE REQUIRED.
  1446. * TO *SUS* TO SUSPEND TERMINAL AFTER INTERRUPT -
  1447. * (DP) = 0.
  1448. *
  1449. * USES T7, CM - CM+4.
  1450. *
  1451. * CALLS ERQ, STA.
  1452.  
  1453.  
  1454. INT BSS 0 ENTRY
  1455. STD T7 SAVE INTERRUPT CODE
  1456. RJM STA SET FWA OF TERMINAL TABLE
  1457. ADK VSTT READ *VSTT*
  1458. CRD CM
  1459. LDD CM CHECK LOGOUT AND DETACH STATUS
  1460. LPC 0401
  1461. NJN INT1 IF LOGOUT OR DETACH IN PROGRESS
  1462. LDD DC CHECK FOR DRIVER REQUEST
  1463. SHN 21-13
  1464. PJN INT2 IF NO REQUEST
  1465. LDD DC+4 CHECK REQUEST
  1466. LMN /1TD/HUP
  1467. NJN INT2 IF NOT HANG UP PHONE
  1468. INT1 UJN RWC ENTER READ/WRITE CONTROL
  1469.  
  1470. INT2 LDD DP SET POTS TO BE DROPPED
  1471. STD RQ+3
  1472. LDD T7 SET INTERRUPT CODE
  1473. STD RQ+2
  1474. LDN /TLX/PUB PROCESS USER BREAK
  1475. RJM ERQ
  1476. STD DP CLEAR POT POINTER
  1477. LJM SUS SUSPEND TERMINAL
  1478. LIN SPACE 4,15
  1479. ** LIN - PROCESS LOGIN.
  1480. *
  1481. * EXIT TO *CLI* WHEN *RDF* RESPONDS TO LOGIN REQUEST -
  1482. * (DP) = POT ASSIGNMENT.
  1483. * (DP+1) = (DP).
  1484. * (VDCT) BYTE 4 = 0.
  1485. *
  1486. * CALLS WDC.
  1487.  
  1488.  
  1489. LIN BSS 0 ENTRY
  1490. LDD DC CHECK TERMINAL STATUS
  1491. LMD HN
  1492. ZJN LIN1 IF *RDF* READY
  1493. JMP MGR EXIT
  1494.  
  1495. LIN1 LDD DC+4 SET POT ASSIGNMENT
  1496. STD DP
  1497. STD DP+1
  1498. LDN 0 CLEAR POT ASSIGNMENT
  1499. STD DC+4
  1500. RJM WDC REWRITE VDCT
  1501. LJM /RDM/CLI PROCESS COMMAND LINE INPUT
  1502. RWC SPACE 4,20
  1503. ** RWC - READ/WRITE CONTROL.
  1504. *
  1505. * ENTRY COMPLETION OF READ OR WRITE OPERATION.
  1506. *
  1507. * EXIT TO *RDM* IF INPUT RECEIVED FROM TERMINAL.
  1508. * TO *WTM* IF MESSAGE ASSIGNED BY *RDF* -
  1509. * (DP) = OUTPUT POT ASSIGNMENT.
  1510. * (DP+1) = (DP).
  1511. * (DP+2) = FIRST WORD INDEX.
  1512. * (VDCT) BYTE 4 = 0.
  1513. * TO *TFR* IF FUNCTION REQUEST RECEIVED FROM *RDF*.
  1514. * TO *CTO* IF TERMINAL IDLE.
  1515. *
  1516. * CALLS CEM, ERQ, WDC.
  1517. *
  1518. * MACROS RETURN.
  1519.  
  1520.  
  1521. RWC BSS 0 ENTRY
  1522. RJM CEM CLEAR EXTENDED MODE
  1523.  
  1524. * ENTRY TO PREVENT TRANSMISSION MODE CHANGE.
  1525. * CHECK FOR INPUT FROM TERMINAL.
  1526.  
  1527. RWC1 RETURN * SET REENTRY
  1528. LDD DI CHECK FOR INPUT DATA
  1529. ZJN RWC2 IF NO DATA RECEIVED
  1530. LJM RDM ENTER READ MODE
  1531.  
  1532. * CHECK FOR MESSAGE ASSIGNMENT OR FUNCTION REQUEST.
  1533.  
  1534. RWC2 LDD DC+4 CHECK OUTPUT ASSIGNMENT
  1535. NJN RWC3 IF MESSAGE ASSIGNED
  1536. LJM CTO CHECK TIME-OUT
  1537.  
  1538. RWC3 LDD DC CHECK MESSAGE TYPE
  1539. SHN 21-13
  1540. PJN RWC4 IF NOT FUNCTION REQUEST
  1541. LJM TFR PROCESS *RDF* FUNCTION REQUEST
  1542.  
  1543. * PREPARE NEW OUTPUT.
  1544.  
  1545. RWC4 LDD DP CHECK FIRST POT
  1546. ZJN RWC5 IF NOT ASSIGNED
  1547. STD RQ+3 SET POT
  1548. LDN /TLX/DRT REQUEST DROP POT CHAIN
  1549. RJM ERQ
  1550. RWC5 LDD DC+4 CURRENT POT = ASSIGNMENT
  1551. STD DP
  1552. STD DP+1
  1553. LDD DC+1 CURRENT WORD = FIRST WORD OF ASSIGNMENT
  1554. LPN 7
  1555. SHN 4
  1556. STD DP+2
  1557. LDD DC+1 CLEAR STARTING WORD
  1558. SCN 7
  1559. STD DC+1
  1560. LDN 0 CLEAR ASSIGNMENT
  1561. STD DC+4
  1562. RJM WDC REWRITE VDCT
  1563. JMP WTM ENTER WRITE MODE
  1564. SUS SPACE 4,15
  1565. ** SUS - SUSPEND DRIVER FOR *RDF* INTERRUPT ACKNOWLEDGE.
  1566. *
  1567. * WAITS UNTIL *RDF* SETS THE INTERRUPT ACKNOWLEDGE
  1568. * BIT IN THE TERMINAL TABLE.
  1569. *
  1570. * EXIT TO *RWC* AFTER ACKNOWLEDGE SET -
  1571. * *VDCT* INTERRUPT ACKNOWLEDGE BIT CLEARED.
  1572. * TO *MGR.* WITHOUT TERMINAL TABLE WRITE UNTIL INTERRUPT
  1573. * ACKNOWLEDGE SET. *IAF* CAN WRITE *VDCT* AND *VCHT*
  1574. * UNTIL THIS TIME.
  1575. *
  1576. * CALLS ERQ, STA, WDC.
  1577.  
  1578.  
  1579. SUS BSS 0 ENTRY
  1580. LDD DC GET TERMINAL STATUS
  1581. SHN 21-12 CHECK INTERRUPT ACKNOWLEDGE BIT
  1582. MJN SUS1 IF SET
  1583. LDC SUS SET REENTRY ADDRESS
  1584. STD DP+4
  1585. RJM STA SET TERMINAL TABLE ADDRESS
  1586. ADN VDPT WRITE *VDPT*
  1587. CWD DP
  1588. LJM MGR. EXIT WITHOUT TERMINAL TABLE WRITE
  1589.  
  1590. SUS1 SHN 1 CLEAR INTERRUPT ACKNOWLEDGE BIT
  1591. SCN 1
  1592. SHN 12-0
  1593. STD DC
  1594. RJM WDC REWRITE *VDCT*
  1595. SBN VDCT-VCHT READ *VCHT* FOR CHARACTER COUNT RECOVERY
  1596. CRD CH
  1597. LDD DC+4 CHECK FOR DRIVER ASSIGNMENT
  1598. NJN SUS2 IF PRESENT
  1599. LDN /TLX/RES REQUEST NEW ASSIGNMENT
  1600. RJM ERQ
  1601. SUS2 JMP RWC ENTER READ/WRITE CONTROL
  1602. TITLE *RDF* FUNCTION REQUEST PROCESSORS.
  1603. TFR SPACE 4,15
  1604. ** TFR - PROCESS *RDF* FUNCTION REQUEST.
  1605. *
  1606. * EXIT TO FUNCTION REQUEST PROCESSOR -
  1607. * (A) = (DP+3)-
  1608. * (T3) = FUNCTION REQUEST.
  1609. * (VDCT) = FUNCTION REQUEST CLEARED.
  1610. *
  1611. * USES T1, T2, T3.
  1612. *
  1613. * CALLS ERQ, WDC.
  1614.  
  1615.  
  1616. TFR BSS 0 ENTRY
  1617. LDD DC+4 SAVE REQUEST CODE
  1618. STD T3
  1619. LPN 77
  1620. SBN TTFRL
  1621. MJN TFR1 IF LEGAL FUNCTION
  1622. LCN TTFRL SET ILLEGAL FUNCTION
  1623. TFR1 ADN TTFRL
  1624. STD T1
  1625. LDN /TLX/RES REQUEST ADDITIONAL OUTPUT
  1626. RJM ERQ
  1627. STD DC+4 CLEAR FUNCTION REQUEST
  1628. LDD DC CLEAR DRIVER REQUEST BIT
  1629. LPC 3777
  1630. STD DC
  1631. RJM WDC WRITE VDCT
  1632. LDM TTFR,T1 SET FUNCTION PROCESSOR ADDRESS
  1633. STD T2
  1634. NJN TFR2 IF A VALID ENTRY
  1635. JMP MGR EXIT
  1636.  
  1637. TFR2 LDD DP+3 SET (A) = TERMINAL MODE FLAGS
  1638. LJM 0,T2 ENTER PROCESSOR
  1639. TTFR SPACE 4,10
  1640. ** TTFR - TABLE OF *RDF* FUNCTION REQUESTS.
  1641.  
  1642.  
  1643. TTFR INDEX
  1644.  
  1645. INDEX /1TD/BGI,BGI BEGIN INPUT
  1646. INDEX /1TD/CFD,CFD CLEAR FULL DUPLEX
  1647. INDEX /1TD/HUP,HUP HANG UP THE PHONE
  1648. INDEX /1TD/IIP,IIP ISSUE INPUT PROMPT
  1649. INDEX /1TD/LGI,LGI PROCESS LOGIN
  1650. INDEX /1TD/SCE,SCE SET/CLEAR EXTENDED MODE
  1651. INDEX /1TD/SDU,SUS SUSPEND DRIVER FOR USER BREAK
  1652. INDEX /1TD/SEP,SEP SET EVEN PARITY
  1653. INDEX /1TD/SFD,SFD SET FULL DUPLEX
  1654. INDEX /1TD/SNM,SNM SET NORMAL MODES
  1655. INDEX /1TD/SOP,SOP SET ODD PARITY
  1656. INDEX /1TD/STT,STT SET TERMINAL TYPE
  1657.  
  1658. INDEX /1TD/REQL
  1659. TTFRL EQU *-TTFR
  1660. BGI SPACE 4,15
  1661. ** BGI - BEGIN INPUT.
  1662. *
  1663. * ISSUES *START TAPE READER* CONTROL CODE IF TERMINAL
  1664. * IS IN *TAPE* MODE. CONTROL IS THEN TRANSFERRED
  1665. * TO THE *READ* PROCESSOR.
  1666. *
  1667. * ENTRY (DC) = BIT 2**0 SET IF *TAPE* MODE.
  1668. *
  1669. * EXIT TO *RDM* -
  1670. * *DC1* ISSUED IF TERMINAL IN *TAPE* MODE.
  1671. *
  1672. * MACROS RETURN.
  1673.  
  1674.  
  1675. BGI BSS 0 ENTRY
  1676. LDD DC CHECK FOR *TAPE* MODE
  1677. LPN 1
  1678. ZJN BGI1 IF NOT IN *TAPE* MODE
  1679. LDC .CDC1 ISSUE *DC1* TO START TAPE READER
  1680. LMD PY TOGGLE ODD PARITY
  1681. STD DO
  1682. BGI1 RETURN RDM ENTER *READ* MODE
  1683. CFD SPACE 4,15
  1684. ** CFD - CLEAR *FULL DUPLEX* FLAG.
  1685. *
  1686. * ENTRY (A) = (DP+3).
  1687. *
  1688. * EXIT TO *MGR* -
  1689. * (DP+3) = *FULL DUPLEX* CLEARED.
  1690.  
  1691.  
  1692. CFD BSS 0 ENTRY
  1693. LPC 7677 CLEAR *FULL DUPLEX* FLAG
  1694. STD DP+3
  1695. JMP MGR EXIT
  1696. IIP SPACE 4,20
  1697. ** IIP - ISSUE INPUT PROMPT.
  1698. *
  1699. * ISSUE INPUT PROMPT CHARACTER IF TRANSPARENT, BINARY,
  1700. * OR AUTO MODE IS NOT SET.
  1701. *
  1702. * ENTRY (A) = (DP+3).
  1703. *
  1704. * EXIT TO *WTM* TO ISSUE PROMPT MESSAGE -
  1705. * PROMPT MESSAGE WRITTEN TO POT.
  1706. * (DP+2) = 0.
  1707. * (CH+2) = 0.
  1708. * TO *RWC* IF *TRANSPARENT*, *AUTO*, OR
  1709. * *BINARY* MODE.
  1710. * /TLX/RES EXECUTIVE REQUEST ISSUED.
  1711. *
  1712. * USES T0 - T4.
  1713. *
  1714. * CALLS ERQ, STA, SWA.
  1715.  
  1716.  
  1717. IIP BSS 0 ENTRY
  1718. SHN 21-2 CHECK TERMINAL MODE
  1719. MJN IIP1 IF *TRANSPARENT* MODE
  1720. LPN 1
  1721. NJN IIP2 IF *BINARY* MODE
  1722. LDD DC
  1723. LPN 2
  1724. NJN IIP2 IF *AUTO* MODE
  1725. RJM STA SET FWA OF TERMINAL TABLE
  1726. ADK VSTT READ *VSTT*
  1727. CRD T0
  1728. LDD T0 CHECK FOR NO-PROMPT MODE
  1729. LPN 40
  1730. NJN IIP2 IF NO-PROMPT MODE
  1731. STD CH+2 CLEAR ESCAPE CONTROL
  1732. STD DP+2 CLEAR WORD POINTER
  1733. RJM SWA SET WORD ADDRESS IN OUTPUT POT
  1734. CWM IIPA,ON WRITE PROMPT TO POT
  1735. JMP WTM ENTER WRITE MODE
  1736.  
  1737. IIP1 LDN 0 CLEAR INPUT POINTER
  1738. STD DP+2
  1739. IIP2 LDN /TLX/RES REQUEST NEXT MESSAGE
  1740. RJM ERQ
  1741. JMP RWC WAIT FOR *BGI* REQUEST
  1742.  
  1743.  
  1744. IIPA DATA 4L? "EB" INPUT PROMPT
  1745. CON 0,0,0
  1746. LGI SPACE 4,15
  1747. ** LGI - PROCESS USER LOGIN.
  1748. *
  1749. * ENTRY (A) = (DP+3).
  1750. *
  1751. * EXIT TO *LIN* TO COMPLETE LOGIN -
  1752. * (DP - DP+2) = 0.
  1753. * (CH - CH+4) = 0.
  1754. *
  1755. * USES T7.
  1756. *
  1757. * CALLS ERQ.
  1758. *
  1759. * MACROS RETURN.
  1760.  
  1761.  
  1762. LGI BSS 0 ENTRY
  1763. LPC 200 RETAIN *BLKEDIT* TERMINAL TYPE
  1764. STD T7
  1765. LDD DP CHECK POT ASSIGNMENT
  1766. ZJN LGI1 IF NONE
  1767. STD RQ+3 DROP POTS
  1768. LDN /TLX/DRT
  1769. RJM ERQ
  1770. LGI1 LDN ZERL CLEAR CONTROL WORDS
  1771. CRD DP
  1772. CRD CH
  1773. LDD T7 RESET TERMINAL TYPE
  1774. STD DP+3
  1775. RETURN LIN ENTER LOGIN
  1776. SCE SPACE 4,15
  1777. ** SCE - SET/CLEAR EXTENDED MODE.
  1778. *
  1779. * SET/CLEAR EXTENDED TRANSMISSION MODE DEPENDING
  1780. * UPON MODE IN *VDCT*.
  1781. *
  1782. * CALLS CEM.
  1783.  
  1784.  
  1785. SCE BSS 0 ENTRY
  1786. RJM CEM
  1787. JMP MGR EXIT
  1788. SEP SPACE 4,15
  1789. ** SEP - SET *EVEN* PARITY.
  1790. *
  1791. * ENTRY (A) = (DP+3).
  1792. *
  1793. * EXIT TO *MGR* -
  1794. * (DP+3) = PARITY RESET TO *EVEN*.
  1795. * (PY) = PARITY RESET TO *EVEN*.
  1796.  
  1797.  
  1798. SEP BSS 0 ENTRY
  1799. SCN 1 CLEAR *ODD* PARITY FLAG
  1800. STD DP+3
  1801. LDN 0 CLEAR *ODD* PARITY BIT
  1802. STD PY
  1803. JMP MGR EXIT
  1804. SFD SPACE 4,15
  1805. ** SFD - SET *FULL DUPLEX* FLAG.
  1806. *
  1807. * ENTRY (A) = (DP+3).
  1808. *
  1809. * EXIT TO *MGR* -
  1810. * (DP+3) = *FULL DUPLEX* SET
  1811.  
  1812.  
  1813. SFD BSS 0 ENTRY
  1814. LPC 7677 SET FULL-DUPLEX FLAG
  1815. LMD HN
  1816. STD DP+3
  1817. JMP MGR EXIT
  1818. SNM SPACE 4,15
  1819. ** SNM - SET NORMAL MODES.
  1820. *
  1821. * CLEARS EXTENDED MODE AND ODD PARITY.
  1822. *
  1823. * ENTRY (A) = (DP+3).
  1824. *
  1825. * EXIT TO *SEP* -
  1826. * (A) = (DP+3), *EXTENDED MODE* CLEARED.
  1827.  
  1828.  
  1829. SNM BSS 0 ENTRY
  1830. SCN 2 CLEAR *EXTENDED* MODE
  1831. JMP SEP SET EVEN PARITY
  1832. SOP SPACE 4,15
  1833. ** SOP - SET *ODD* PARITY.
  1834. *
  1835. * ENTRY (A) = (DP+3).
  1836. *
  1837. * EXIT TO *MGR* -
  1838. * (DP+3) = PARITY SET TO *ODD*.
  1839. * (PY) = PARITY SET TO *ODD*.
  1840.  
  1841.  
  1842. SOP BSS 0 ENTRY
  1843. SCN 1 SET *ODD* PARITY FLAG
  1844. LMN 1
  1845. STD DP+3
  1846. LDC 1S7 SET *ODD* PARITY BIT
  1847. STD PY
  1848. JMP MGR EXIT
  1849. STT SPACE 4,15
  1850. ** STT - SET TERMINAL TYPE.
  1851. *
  1852. * SET TERMINAL TYPE TO *BLKEDIT* OR TO *TTY*.
  1853. *
  1854. * ENTRY (A) = (DP+3).
  1855. * (T3) = FUNCTION REQUEST -
  1856. * = 6/TYPE, 6/.
  1857. * TYPE = 0 IF *TTY*
  1858. * = 1 IF *BLKEDIT*.
  1859. *
  1860. * EXIT TO *MGR* -
  1861. * (DP+3) = NEW TERMINAL TYPE.
  1862.  
  1863.  
  1864. STT BSS 0 ENTRY
  1865. LPC -200 CLEAR CURRENT TERMINAL TYPE
  1866. STD DP+3
  1867. LDD T3 CHECK TYPE REQUESTED
  1868. SHN -6
  1869. ZJN STT1 IF *TTY*
  1870. LDC 200 SET *BLKEDIT*
  1871. RAD DP+3
  1872. STT1 JMP MGR EXIT
  1873. SPACE 4,10
  1874. QUAL
  1875.  
  1876. CTO EQU /CTL/CTO
  1877. LINPE EQU /CTL/LINPE
  1878. MGR EQU /CTL/MGR
  1879. MGR$ EQU /CTL/MGR$
  1880. MGR= EQU /CTL/MGR=
  1881. RWC EQU /CTL/RWC
  1882. RDM TITLE READ MODE.
  1883. QUAL RDM
  1884. RDM SPACE 4,30
  1885. ** RDM - READ MODE ENTRY PROCESSOR.
  1886. *
  1887. * ENTRY (DP+1) = FIRST POT FOR INPUT LINE.
  1888. * (DP+2) = 3/FIRST WORD OF LINE,
  1889. * 1/INPUT INITIATED,
  1890. * 1/POT REQUESTED,
  1891. * 3/CURRENT WORD OF LINE,
  1892. * 4/CURRENT CHARACTER OF LINE.
  1893. *
  1894. * FOR SPECIAL INPUT PROCESSING -
  1895. * (DP+3) *TRANSPARENT INPUT* STATUS.
  1896. * (DP+3) *BINARY INPUT* STATUS.
  1897. *
  1898. * (CH) = BINARY INPUT TERMINATION CHARACTER.
  1899. * (CH+1) = BINARY INPUT TERMINATION COUNT.
  1900. *
  1901. * EXIT TO *ARD* IF *ASCII* FORMAT READ -
  1902. * (A) = INPUT DATA.
  1903. * (DI) = INPUT DATA.
  1904. * (DP+4) = *ARD*.
  1905. * TO *BRD* IF NOS *BINARY* FORMAT READ -
  1906. * (A) = INPUT DATA.
  1907. * (DI) = INPUT DATA.
  1908. * (DP+4) = *BRD*.
  1909. * TO *TTM* IF NO INPUT POT AVAILABLE FOR DATA.
  1910.  
  1911.  
  1912. RDM BSS 0 ENTRY
  1913. LDD DP CHECK FIRST POT ASSIGNED
  1914. ZJN RDM4 IF NO INPUT POT
  1915. LDD DP+3 CHECK BINARY TRANSMISSION
  1916. SHN 21-3
  1917. PJN RDM2 IF NOT SET
  1918. LDD CH+1 CHECK BINARY COUNT
  1919. NJN RDM1 IF SET
  1920. LCN 10
  1921. RAD DP+3 CLEAR BINARY MODE
  1922. UJN RDM2
  1923.  
  1924. RDM1 LDC BRD SET BINARY READ
  1925. UJN RDM3
  1926.  
  1927. RDM2 LDC ARD SELECT READ PROCESSOR
  1928. RDM3 STD DP+4 SET PROCESSOR ADDRESS
  1929. LDD DI SET (A) = INPUT DATA
  1930. LJM 0,DP+4 ENTER PROCESSOR
  1931.  
  1932. * PROCESS LACK OF INPUT POT. IF THE INPUT DATA HAS
  1933. * NO NEED TO BE TRANSLATED AND STORED IT WILL BE IGNORED.
  1934. * IF THE DATA IS VALID, A DIAGNOSTIC MESSAGE WILL BE
  1935. * ISSUED TO THE TERMINAL OPERATOR.
  1936.  
  1937. RDM4 LDD DI GET INPUT CHARACTER
  1938. LPC 177
  1939. STD T7
  1940. LDM TINT,T7 TRANSLATE CHARACTER
  1941. SHN -7
  1942. ZJN RDM5 IF NOT SPECIAL CHARACTER
  1943. LMN /TRN/NLI
  1944. NJN RDM5 IF NOT NULL INPUT
  1945. JMP MGR IGNORE CHARACTER
  1946.  
  1947. RDM5 LDN RILM *RE-ENTER LAST LINE*
  1948. LJM TTM ISSUE TERMINAL MESSAGE
  1949. ARD TITLE READ MODE - *ASCII* READ PROCESSOR.
  1950. ARD SPACE 4,25
  1951. ** ARD - *ASCII* TERMINAL READ.
  1952. *
  1953. * PROCESSES INPUT DATA FROM *ASCII* MODE TERMINAL.
  1954. *
  1955. * ENTRY (A) = INPUT DATA.
  1956. * (DI) = INPUT DATA.
  1957. * (DP+4) = *ARD*.
  1958. *
  1959. * EXIT TO *EIC* IF INPUT RECEIVED -
  1960. * (DI) = INPUT DATA.
  1961. * (T7) = LOWER 7 BITS OF INPUT.
  1962. * (DO) = 0 IF NOT FULL DUPLEX.
  1963. * = INPUT DATA IF FULL DUPLEX.
  1964. * TO *CTO* IF NO INPUT RECEIVED -
  1965. * (DP+4) = *ARD*.
  1966. * TO *DLO* IF LOST-DATA CONDITION ON LINE.
  1967. * TO PROCESSOR IF SPECIAL CHARACTER RECEIVED.
  1968. *
  1969. * USES T1, T2.
  1970. *
  1971. * CALLS EMD.
  1972.  
  1973.  
  1974. ARD BSS 0 ENTRY
  1975. NJN ARD1 IF CHARACTER RECEIVED
  1976. LJM CTO CHECK TIME-OUT
  1977.  
  1978. ARD1 SHN 21-11 CHECK CHARACTER STATUS
  1979. PJN ARD2 IF NOT LOST DATA
  1980. LJM DLO PROCESS LOST DATA
  1981.  
  1982. * ISSUE INPUT TO OUTPUT OR CLEAR (DO), DEPENDING
  1983. * UPON TERMINAL DUPLEX MODE.
  1984.  
  1985. ARD2 SHN 11-21 EXTRACT CHARACTER
  1986. LPC 4377 ASSUME ECHOPLEX MODE
  1987. STD DO
  1988. LPC 177 EXTRACT DATA BITS
  1989. STD T7
  1990. RJM EMD ENTER OPERATOR MESSAGE DATA
  1991. LDD DP+3 CHECK ECHOPLEX MODE
  1992. LPC 100
  1993. NJN ARD3 IF SET
  1994. STD DO CLEAR OUTPUT
  1995.  
  1996. * TRANSLATE INPUT CHARACTER.
  1997.  
  1998. ARD3 LDM TINT,T7 READ TRANSLATION TABLE ENTRY
  1999. STD T7 SAVE TRANSLATION
  2000. SHN -7 CHECK FOR SPECIAL PROCESSING
  2001. NJN ARD5 IF SPECIAL PROCESSING REQUIRED
  2002. LDD F7
  2003. NJN ARD7 IF START OF *F7* SEQUENCE DETECTED
  2004. ARD4 LJM EIC ENTER INPUT CHARACTER
  2005.  
  2006.  
  2007. * PROCESS SPECIAL READ CHARACTER.
  2008.  
  2009. ARD5 STD T1 SET PROCESSOR INDEX
  2010. LMN /TRN/CLW
  2011. ZJN ARD6 IF LOWER CASE *W*
  2012. LDD F7
  2013. NJN ARD7 IF START OF *F7* SEQUENCE DETECTED
  2014. ARD6 LDM TRSP-1,T1 SET PROCESSOR ADDRESS
  2015. STD T2
  2016. LDD DP+3 SET (A) = (DP+3)
  2017. LJM 0,T2 ENTER PROCESSOR
  2018.  
  2019. * START OF *F7* SEQUENCE DETECTED BUT NOT FINISHED.
  2020. * THAT IS, FOLLOWING THE 1E (HEX), A 77 (HEX) WAS NOT
  2021. * RECEIVED.
  2022.  
  2023. ARD7 SBN 2
  2024. ZJN ARD8 IF PREVIOUS CHARACTER IS SET UP
  2025. LDD DI CURRENT CHARACTER WILL BE NEXT
  2026. STM SVMA
  2027. AOD F7
  2028. LDK .CRS PROCESS PREVIOUS CHARACTER
  2029. STD DI
  2030. UJP ARD1 EXTRACT CHARACTER
  2031.  
  2032. ARD8 STD F7 CLEAR *F7* FLAG
  2033. UJN ARD4 ENTER INPUT CHARACTER
  2034. TRSP SPACE 4,10
  2035. ** TRSP - TABLE OF SPECIAL READ CHARACTER PROCESSORS.
  2036.  
  2037.  
  2038. TRSP BSS 0
  2039. QUAL TRN
  2040. LOC 1
  2041.  
  2042. CES CON /RDM/CES CHECK ESCAPE STATUS
  2043. CLW CON /RDM/CLW CHECK LOWER CASE *W*
  2044. CRS CON /RDM/CRS CHECK *RS*
  2045. CRT CON /RDM/CRT CARRIAGE RETURN
  2046. DEL CON /RDM/DEL DELETE (RUBOUT)
  2047. DLN CON /RDM/DLN LINE DELETE
  2048. DPC CON /RDM/DPC DELETE PREVIOUS CHARACTER
  2049. EOT CON /RDM/EOT END OF TRANSMISSION
  2050. NLI CON /RDM/NLI NULL INPUT
  2051. ECI CON /RDM/ECI ESCAPE CHARACTER INPUT
  2052. CLN CON /RDM/CLN COLON
  2053. BRK CON /RDM/BRK BREAK
  2054. ETX CON /RDM/ETX ETX
  2055.  
  2056. LOC *O
  2057. NOREF CES,NLI
  2058. QUAL *
  2059. RDM TITLE READ MODE - *BINARY* READ PROCESSOR.
  2060. BRD SPACE 4,15
  2061. ** BRD - BINARY READ PROCESSOR.
  2062. *
  2063. * ENTRY (A) = INPUT DATA CHARACTER.
  2064. * (DI) = INPUT DATA CHARACTER.
  2065. * (CH) = INPUT TERMINATION CHARACTER.
  2066. * (CH+1) = INPUT LINE CHARACTER COUNT.
  2067. * (DP+4) = *BRD*.
  2068. *
  2069. * EXIT TO *CLI* TO PROCESS COMMAND LINE.
  2070. * TO *DLO* IF LOST DATA.
  2071. * TO *SLI* TO PROCESS SOURCE LINE.
  2072. *
  2073. * CALLS ERQ, WDC.
  2074.  
  2075.  
  2076. BRD BSS 0 ENTRY
  2077. NJN BRD1 IF INPUT RECEIVED
  2078. LJM CTO CHECK TIME-OUT
  2079.  
  2080. BRD1 STD T7 SAVE INPUT CHARACTER
  2081. SHN 21-11 CHECK *LOST DATA* BIT
  2082. PJN BRD2 IF *LOST DATA* NOT SET
  2083. LJM DLO PROCESS DATA LOST
  2084.  
  2085. BRD2 LDD DP+3 CHECK *FULL DUPLEX*
  2086. LPC 100
  2087. ZJN BRD3 IF NOT SET
  2088. LDD DI ISSUE INPUT CHARACTER TO OUTPUT
  2089. LPC 4377
  2090. BRD3 STD DO SET/CLEAR OUTPUT BUFFER
  2091. LDD CH SAVE INPUT TERMINATOR CHARACTER
  2092. STD CH+2
  2093. LDD T7 FORMAT INPUT CHARACTER
  2094. LPC 4300
  2095. STD CH SET UPPER HALF FOR *WIC*
  2096. LDD T7 SET LOWER HALF FOR *WIC*
  2097. LPN 77
  2098. STD T7
  2099. AOD DP+2 ADVANCE INPUT BYTE NUMBER
  2100. RJM WIC WRITE INPUT CHARACTER
  2101. AOD CH+3 ADVANCE INPUT CHARACTER COUNT
  2102. SHN -14
  2103. ZJN BRD4 IF NO OVERFLOW
  2104. STD RQ+2 REQUEST ACCOUNTING MESSAGE
  2105. LDN /TLX/IAM
  2106. RJM ERQ
  2107. BRD4 LDD CH+2 RESTORE TERMINATOR
  2108. STD CH
  2109. SHN 6
  2110. MJN BRD5 IF NO TERMINATOR SPECIFIED
  2111. SHN -6
  2112. LMD T7
  2113. LPC 177
  2114. ZJN BRD6 IF TERMINATOR RECIEVED
  2115. BRD5 SOD CH+1 DECREMENT CHARACTER COUNT
  2116. SBN 1
  2117. MJN BRD6 IF END OF BINARY INPUT
  2118. JMP MGR RETURN TO MANAGER
  2119.  
  2120. * TERMINATE BINARY READ OPERATION.
  2121.  
  2122. BRD6 LDN 0 ENTER END-OF-LINE
  2123. STD CH
  2124. STD DO CLEAR OUTPUT
  2125. STD T7
  2126. STD CH+1 CLEAR CHARACTER COUNT
  2127. STD CH+2 CLEAR ESCAPE CONTROL
  2128. AOD DP+2 WRITE END OF LINE
  2129. RJM WIC
  2130. LCN 10 CLEAR BINARY INPUT
  2131. RAD DP+3
  2132. LDD DC CHECK TERMINAL STATUS
  2133. SHN 21-6
  2134. MJN CLI IF *READ DATA*
  2135. LJM SLI PROCESS SOURCE LINE INPUT
  2136. TITLE READ MODE - MAIN ROUTINES.
  2137. CLI SPACE 4,15
  2138. ** CLI - PROCESS COMMAND LINE INPUT.
  2139. *
  2140. * TRANSMITS THE COMMAND LINE TO *RDF*.
  2141. *
  2142. * CALLS ERQ.
  2143. *
  2144. * EXIT TO *RWC* -
  2145. * (DO) = *LF* IF *TAPE* MODE.
  2146. * INPUT POTS RELEASED TO EXECUTIVE.
  2147. * (DP) = 0.
  2148.  
  2149.  
  2150. CLI BSS 0 ENTRY
  2151. LDD DP SET FIRST POT OF LINE
  2152. STD RQ+3
  2153. LDD DP+2 SET FIRST WORD
  2154. SHN -11
  2155. STD RQ+2
  2156. LDN /TLX/CLI REQUEST COMMAND LINE INPUT
  2157. RJM ERQ
  2158. STD DP CLEAR FIRST POT
  2159. STD DP+2 CLEAR POINTERS
  2160. LDD DC CHECK TERMINAL STATUS
  2161. LPN 1
  2162. ZJN CLI1 IF NOT IN *TAPE* MODE
  2163. LDK .CLF ISSUE *LF* TO TERMINAL
  2164. STD DO
  2165. CLI1 JMP RWC ENTER READ/WRITE CONTROL
  2166. DLO SPACE 4,15
  2167. ** DLO - PROCESS LOST DATA.
  2168. *
  2169. * NOTIFY *RDF* THAT A LOST DATA CONDITION OCCURRED ON THE
  2170. * TERMINAL LINE.
  2171. *
  2172. * EXIT TO *NIP* TO PROCESS LOST DATA -
  2173. * (RQ+2) = 1.
  2174.  
  2175.  
  2176. DLO BSS 0 ENTRY
  2177. LDN 1 SET LOST-DATA BIT
  2178. STD RQ+2
  2179. LJM NIP PROCESS LOST DATA
  2180. EIC SPACE 4,20
  2181. ** EIC - ENTER INPUT CHARACTER.
  2182. *
  2183. * ENTERS INPUT CHARACTER IN INPUT AND COUNTS CHARACTER.
  2184. * IF THE LINE CHARACTER COUNT EXCEEDS THE MAXIMUM, AN
  2185. * OVERFLOW MESSAGE WILL BE ISSUED.
  2186. *
  2187. * ENTRY (T7) = CHARACTER TO BE ENTERED.
  2188. * (DP+4) = *ARD*.
  2189. *
  2190. * EXIT TO *MGR* IF NO OVERFLOW -
  2191. * (CH+1) = LINE CHARACTER COUNT INCREMENTED.
  2192. * TO *TTM* IF LINE OVERFLOW.
  2193. *
  2194. * CALLS WIC.
  2195.  
  2196.  
  2197. EIC BSS 0 ENTRY
  2198. RJM WIC WRITE INPUT CHARACTER TO INPUT POT
  2199. AOD CH+1 INCREMENT LINE CHARACTER COUNT
  2200. SBK VXLL
  2201. PJN EIC1 IF LINE OVERFLOW
  2202. JMP MGR REENTER ASCII READ PROCESSOR
  2203.  
  2204. * PROCESS INPUT LINE OVERFLOW.
  2205.  
  2206. EIC1 LDN LOFM SET MESSAGE POINTER
  2207. LJM TTM ISSUE TERMINAL MESSAGE
  2208. EIL SPACE 4,15
  2209. ** EIL - END OF INPUT LINE.
  2210. *
  2211. * TERMINATES INPUT FOR THE CURRENT LINE AND CALLS
  2212. * THE APPROPRIATE END OF LINE PROCESSOR.
  2213. *
  2214. * EXIT (CH+1) = 0.
  2215. * (CH+2) = 0.
  2216. * (DP+3) = *TRANSPARENT* MODE CLEARED.
  2217. * TO *CLI* IF COMMAND LINE INPUT.
  2218. * TO *RDM* IF OPERATOR MESSAGE ISSUED.
  2219. * TO *SLI* IF SOURCE LINE INPUT.
  2220. *
  2221. * CALLS EOM, ERQ, RPC, WIC.
  2222. *
  2223. * MACROS ADCBM.
  2224.  
  2225.  
  2226. EIL BSS 0 ENTRY
  2227. RJM EOM ENTER OPERATOR MESSAGE
  2228. LDD DP+2 CHECK CHARACTER POSITION
  2229. LPN 1
  2230. NJN EIL1 IF LOWER CHARACTER
  2231.  
  2232. * ENTER *BLANK* AS UPPER CHARACTER IF PREVIOUS CHARACTER
  2233. * IS A *COLON* (00).
  2234.  
  2235. LDD CH+1 CHECK LINE CHARACTER COUNT
  2236. ZJN EIL3 IF START OF LINE
  2237. LDD MA SAVE POINTER WORD
  2238. CWD DP
  2239. RJM RPC READ PRECEDING CHARACTER
  2240. STD T7
  2241. LDD MA RESTORE POINTER WORD
  2242. CRD DP
  2243. LDD T7 CHECK PRECEDING CHARACTER
  2244. NJN EIL3 IF NOT COLON
  2245. LDN 1R ENTER BLANK
  2246. STD T7
  2247. RJM WIC
  2248.  
  2249. * ENTER *BLANK* AS LOWER CHARACTER IF NOT IN *TRANSPARENT*
  2250. * MODE, ELSE ENTER NULL (00).
  2251.  
  2252. EIL1 LDD DP+3 CHECK FOR TRANSPARENT MODE
  2253. LPN 4
  2254. ZJN EIL2 IF NOT TRANSPARENT MODE
  2255. LDN 1R
  2256. EIL2 LMN 1R
  2257. STD T7
  2258. RJM WIC
  2259.  
  2260. * ENTER NULL (00) AS UPPER CHARACTER TO FORCE END-OF-LINE.
  2261.  
  2262. EIL3 LDN 0 ENTER END OF LINE
  2263. STD T7
  2264. RJM WIC
  2265. LDD DP+3 CLEAR *TRANSPARENT* MODE
  2266. SCN 4
  2267. STD DP+3
  2268.  
  2269. * COMPLETE END OF LINE PROCESSING.
  2270.  
  2271. LDD CH+1 ADVANCE INPUT CHARACTER COUNT
  2272. RAD CH+3
  2273. SHN -14
  2274. ZJN EIL4 IF NO OVERFLOW
  2275. STD RQ+2
  2276. LDN /TLX/IAM REQUEST ISSUE ACCOUNTING MESSAGE
  2277. RJM ERQ
  2278. EIL4 STD CH+1 CLEAR INPUT LINE CHARACTER COUNT
  2279. STD CH+2 CLEAR ESCAPE CONTROL
  2280. LDD DC CHECK TERMINAL STATUS
  2281. SHN 21-6
  2282. MJN EIL6 IF *READ DATA*, PROCESS AS COMMAND
  2283. SHN 6-2
  2284. MJN EIL5 IF *TEXT* MODE, PROCESS AS SOURCE
  2285. LDD DP+2 READ FIRST WORD OF LINE
  2286. LPC 7000
  2287. SHN 6
  2288. ADD DP
  2289. SHN 3
  2290. ADCBM
  2291. CRD CM
  2292. LDD CM CHECK FIRST CHARACTER
  2293. SHN -6
  2294. SBN 1R0
  2295. MJN EIL6 IF NOT DIGIT
  2296. SBN 1R9+1-1R0
  2297. EIL5 MJN SLI IF DIGIT
  2298. EIL6 LJM CLI PROCESS COMMAND LINE
  2299. ESC SPACE 4,20
  2300. ** ESC - PROCESS ESCAPE CODES.
  2301. *
  2302. * ENTERS UPPER AND LOWER HALVES OF ESCAPE
  2303. * CHARACTER (74XX OR 76XX).
  2304. *
  2305. * ENTRY (T7) = ESCAPE CODE CHARACTER.
  2306. * BIT 2**6 SET IF ESCAPE 1 (76XX).
  2307. * BIT 2**6 CLEAR IF ESCAPE 2 (74XX).
  2308. * (DP+4) = *ARD*.
  2309. *
  2310. * EXIT ESCAPE CODE WRITTEN TO INPUT POT.
  2311. * TO *EIC* TO COMPLETE LOWER 6 BITS OF CHARACTER -
  2312. * (T7) = CHARACTER.
  2313. *
  2314. * USES CH+2.
  2315. *
  2316. * CALLS WIC.
  2317.  
  2318.  
  2319. ESC BSS 0 ENTRY
  2320. LDD T7 SAVE CHARACTER
  2321. STD CH+2
  2322. SHN -5 SET PROPER ESCAPE CODE
  2323. LPN 2
  2324. ADN 74
  2325. STD T7
  2326. RJM WIC WRITE ESCAPE CODE
  2327. LDD CH+2 SET DISPLAY CODE
  2328. LPC 177 PRESERVE ESCAPE BIAS
  2329. STD T7
  2330. JMP EIC ENTER REMAINDER OF CHARACTER
  2331. NIP SPACE 4,15
  2332. ** NIP - NO INPUT POT AVAILABLE.
  2333. *
  2334. * NOTIFY *RDF* THAT NO INPUT WAS AVAILABLE AND
  2335. * ISSUE *RE-ENTER LAST LINE* MESSAGE TO TERMINAL.
  2336. *
  2337. * ENTRY (RQ+2) = 0 IF NO INPUT POT AVAILABLE.
  2338. * = 1 IF DATA LOST ON LINE.
  2339. *
  2340. * EXIT TO *TTM* TO ISSUE MESSAGE.
  2341. *
  2342. * CALLS ERQ.
  2343.  
  2344.  
  2345. NIP BSS 0 ENTRY
  2346. LDN /TLX/DLO REQUEST LOST DATA PROCESSING
  2347. RJM ERQ
  2348. LDN RILM SET RE-ENTER LINE MESSAGE
  2349. LJM TTM ISSUE TERMINAL MESSAGE
  2350. SLI SPACE 4,15
  2351. ** SLI - SOURCE LINE INPUT.
  2352. *
  2353. * TRANSMITS FIRST POT OF DATA TO EXECUTIVE AS SOURCE
  2354. * INPUT IF MORE THAN ONE POT OF SOURCE LINE(S).
  2355. *
  2356. * EXIT TO *ARD* TO WAIT FOR ADDITIONAL INPUT -
  2357. * DATA TRANSMITTED TO EXECUTIVE AS SOURCE INPUT.
  2358. *
  2359. * CALLS RIN.
  2360. *
  2361. * MACROS RETURN.
  2362.  
  2363.  
  2364. SLI BSS 0 ENTRY
  2365. LDD DP+2 SAVE *POT REQUESTED* FLAG
  2366. LPC 360
  2367. LMC 400 SET *INPUT INITIATED*
  2368. STD DP+2
  2369. SHN 5
  2370. RAD DP+2
  2371. RJM RIN RELEASE INPUT DATA
  2372. RETURN ARD REENTER READ PROCESSOR
  2373. TITLE READ MODE - SPECIAL CHARACTER PROCESSORS.
  2374. BRK SPACE 4,20
  2375. ** BRK - PROCESS BREAK.
  2376. *
  2377. * (1) IGNORE BREAK IF IN *TAPE* MODE.
  2378. * (2) INTERRUPT JOB IF ACTIVE.
  2379. * (3) DELETE LINE IF INPUT ACTIVE AND IF NOT
  2380. * IN *TRANSPARENT* MODE.
  2381. * (4) ENTER *BRK* CHARACTER AND TERMINATE LINE
  2382. * IF IN *TRANSPARENT* MODE.
  2383. * (5) EXIT FROM *TEXT* MODE IF IN *TEXT* MODE.
  2384. *
  2385. * EXIT TO *RDM* IF IN *TAPE* MODE.
  2386. * TO */CTL/INT* TO INTERRUPT JOB.
  2387. * TO *TTM* TO ISSUE *DEL* MESSAGE.
  2388. * TO *EIL* TO TERMINATE INPUT LINE.
  2389. * TO *ETX2* TO EXIT FROM *TEXT* MODE.
  2390. *
  2391. * CALLS STA, WIC.
  2392. *
  2393. * MACROS RETURN.
  2394.  
  2395.  
  2396. BRK BSS 0 ENTRY
  2397. LDD DC CHECK TERMINAL STATUS
  2398. LPN 1
  2399. ZJN BRK1 IF NOT IN *TAPE* MODE
  2400. JMP RDM IGNORE CHARACTER
  2401.  
  2402. BRK1 LDK 100D/MNCT+1 START TIMER FOR BREAK
  2403. STD DO
  2404. BRK2 RETURN * REENTER
  2405. NJN BRK1 IF BREAK STILL IN PROGRESS
  2406. SOD DO
  2407. NJN BRK2 IF NOT TIMED-OUT
  2408. LDD CH+1 CHECK INPUT LINE
  2409. NJN BRK4 IF LINE NOT EMPTY
  2410.  
  2411. * PROCESS EMPTY INPUT LINE.
  2412.  
  2413. LDD DC CHECK TERMINAL STATUS
  2414. LPN 4
  2415. ZJN BRK3 IF NOT *TEXT* MODE
  2416. LJM ETX2 EXIT *TEXT* MODE
  2417.  
  2418. * INTERRUPT JOB IF ACTIVE.
  2419.  
  2420. BRK3 RJM STA SET FWA OF TERMINAL TABLE
  2421. ADN VROT READ *VROT*
  2422. CRD CM
  2423. LDD CM+4 CHECK JOB ACTIVITY
  2424. LMN 1
  2425. ZJN BRK5 IF NO JOB ACTIVITY
  2426. LDK TIET SET INTERRUPT CODE
  2427. LJM /CTL/INT INTERRUPT JOB
  2428.  
  2429. * PROCESS NON-EMPTY INPUT LINE.
  2430.  
  2431. BRK4 LDD DP+3 CHECK MODE
  2432. LPN 4
  2433. NJN BRK6 IF TRANSPARENT MODE
  2434. BRK5 LDN DELM SET *DEL* MESSAGE
  2435. LJM TTM ISSUE TERMINAL MESSAGE
  2436.  
  2437. * ENTER TRANSPARENT MODE DATA.
  2438.  
  2439. BRK6 LDN 76 STORE ESCAPE
  2440. STD T7
  2441. RJM WIC
  2442. LDN 40 STORE DISPLAY CODE
  2443. STD T7
  2444. RJM WIC
  2445. RETURN EIL ENTER END-OF-LINE PROCESSING
  2446. CES SPACE 4,20
  2447. ** CES - CHECK ESCAPE STATUS.
  2448. *
  2449. * DETERMINES WHETHER AN ESCAPE CHARACTER IS TO
  2450. * BE ENTERED AS AN ESCAPE CHARACTER, AS AN UPPER
  2451. * CASE CHARACTER, OR IS TO BE IGNORED.
  2452. *
  2453. * ENTRY (T7) = TRANSLATED CHARACTER.
  2454. * (DP+4) = *ARD*.
  2455. *
  2456. * EXIT TO *ESC* TO ENTER ESCAPE CHARACTER IF
  2457. * TERMINAL IS IN EXTENDED MODE.
  2458. * TO *EIC* TO ENTER UPPER CASE CHARACTER IF NOT
  2459. * IN EXTENDED MODE AND ALPHA CHARACTER.
  2460. *
  2461.  
  2462.  
  2463. CES BSS 0 ENTRY
  2464. LDD DP+3 CHECK TERMINAL MODE
  2465. LPN 6
  2466. ZJN CES1 IF NOT EXTENDED MODE
  2467. JMP ESC ENTER ESCAPE CHARACTER
  2468.  
  2469. CES1 LDD T7 CHECK CHARACTER TRANSLATION
  2470. SHN 21-6
  2471. PJN CES2 IF ESCAPE 2
  2472. LDD T7 CHECK LOWER SIX BITS
  2473. LPN 77
  2474. ZJN CES2 IF *7600*
  2475. SBN 1RZ+1
  2476. PJN CES2 IF NOT LOWER CASE ALPHA
  2477. JMP EIC ENTER AS UPPER CASE ALPHA
  2478.  
  2479. CES2 JMP MGR IGNORE CHARACTER
  2480. CLN SPACE 4,20
  2481. ** CLN - PROCESS *COLON* INPUT (64 CHARACTER SET).
  2482. *
  2483. * ENTERS *COLON* CHARACTER AS *00* IF IN NORMAL INPUT
  2484. * MODE OR AS *7604* IF IN EXTENDED INPUT MODE.
  2485. *
  2486. * ENTRY (A) = (DP+3).
  2487. * (T7) = CHARACTER.
  2488. *
  2489. * EXIT COLON *00* WRITTEN IF NORMAL MODE.
  2490. * TO *ESC* TO ENTER *7604* IF EXTENDED MODE -
  2491. * (T7) = 204B.
  2492. *
  2493. * CALLS WIC.
  2494. *
  2495. * NOTE IF THE SYSTEM IS IN 63 CHARACTER SET MODE,
  2496. * A COLON WILL BE BE AUTOMATICALLY ENTERED AS
  2497. * *63* AND THIS ROUTINE WILL NOT BE CALLED.
  2498.  
  2499.  
  2500. CLN BSS 0 ENTRY
  2501. LPN 6 CHECK TERMINAL MODE
  2502. NJN CLN1 IF *ASCII* OR *TRANSPARENT*
  2503. LDC 200 SET UP *00* CHARACTER
  2504. STD T7
  2505. RJM WIC WRITE INPUT CHARACTER
  2506. JMP MGR EXIT
  2507.  
  2508. CLN1 LDC 204 SET UP *7604* CHARACTER
  2509. STD T7
  2510. JMP ESC ENTER ESCAPE CHARACTER
  2511. CLW SPACE 4,15
  2512. ** CLW - CHECK LOWER CASE *W*.
  2513. *
  2514. * THE SEQUENCE NORMALLY ISSUED BY THE *F7* KEY ON
  2515. * A CDC 721 TERMINAL IS *RS*, LOWER CASE W. THIS
  2516. * ROUTINE DETECTS THE SECOND CHARACTER IN THE SEQUENCE.
  2517. *
  2518. * ENTRY (F7) = 0, IF *RS* NOT PREVIOUSLY DETECTED.
  2519. * .NE. 0 IF *RS* HAS BEEN DETECTED.
  2520. *
  2521. * EXIT TO *EIC* IF *F7* SEQUENCE NOT DETECTED.
  2522. * TO *MGR* IF *F7* SEQUENCE HAS BEEN DETECTED.
  2523. *
  2524. * USES DO.
  2525. *
  2526. * CALLS RTD, RPI.
  2527.  
  2528.  
  2529. CLW BSS 0 ENTRY
  2530. LDD F7
  2531. NJN CLW1 IF *F7*
  2532. JMP EIC ENTER INPUT CHARACTER
  2533.  
  2534. CLW1 LDN 0
  2535. STD DO
  2536. STD F7
  2537. RJM CRR CHECK RE-REQUESTED BIT
  2538. LPN 20
  2539. ZJN CLW2 IF NOT RE-REQUESTED
  2540. RJM RTD RELEASE AND DELAY
  2541. RJM /CTL/RPI INITIALIZE FOR REGAINING PORT ACCESS
  2542. CLW2 JMP MGR RETURN
  2543. CRS SPACE 4,15
  2544. ** CRS - CHECK *RS*.
  2545. *
  2546. * THE SEQUENCE NORMALLY ISSUED BY THE *F7* KEY ON
  2547. * A CDC 721 TERMINAL IS *RS*, LOWER CASE W. THIS
  2548. * ROUTINE DETECTS THE FIRST CHARACTER IN THE SEQUENCE
  2549. * AND SETS A FLAG IF IT IS NOT ALREADY SET.
  2550. *
  2551. * ENTRY (F7) = 0, IF *RS* NOT PREVIOUSLY DETECTED.
  2552. * .NE. 0 IF *RS* HAS BEEN DETECTED.
  2553. *
  2554. * EXIT TO *EIC* IF *RS* HAS ALREADY BEEN DETECTED.
  2555. * TO *MGR* IF *RS* WAS NOT DETECTED BEFORE.
  2556.  
  2557.  
  2558. CRS BSS 0 ENTRY
  2559. LDD F7
  2560. ZJN CRS1 IF *RS* NOT DETECTED
  2561. JMP EIC ENTER INPUT CHARACTER
  2562.  
  2563. CRS1 STD DO CLEAR INPUT CHARACTER IN ECHOPLEX MODE
  2564. AOD F7 SET START OF *F7* SEQUENCE
  2565. JMP MGR RETURN
  2566. CRT SPACE 4,15
  2567. ** CRT - PROCESS CARRIAGE RETURN.
  2568. *
  2569. * ISSUE *LINE FEED* TO TERMINAL AND ENTER END-OF-LINE
  2570. * PROCESSOR.
  2571. *
  2572. * ENTRY (CH+1) = INPUT LINE CHARACTER COUNT.
  2573. * (DP+4) = *ARD*.
  2574. *
  2575. * EXIT ASCII *LF* ISSUED TO TERMINAL IF NOT IN
  2576. * *TAPE* MODE.
  2577. * TO *EIL* TO TERMINATE INPUT LINE.
  2578. * TO *MGR* IF CHARACTER TO BE IGNORED.
  2579.  
  2580.  
  2581. CRT BSS 0 ENTRY
  2582. LDD DP+3 CHECK TERMINAL TYPE
  2583. SHN 21-7
  2584. MJN CRT2 IF *BLKEDIT*
  2585. LDD DC CHECK TERMINAL STATUS
  2586. LPN 1
  2587. ZJN CRT1 IF NOT IN *TAPE* MODE
  2588. LDD CH+1 CHECK LINE CHARACTER COUNT
  2589. NJN CRT2 IF NOT EMPTY INPUT LINE
  2590. JMP MGR IGNORE CHARACTER
  2591.  
  2592. CRT1 LDC .CLF ISSUE LINE FEED
  2593. LMD PY TOGGLE ODD PARITY
  2594. STD DO
  2595. CRT2 JMP EIL ENTER END-OF-LINE PROCESSOR
  2596. DEL SPACE 4,15
  2597. ** DEL - PROCESS *DEL* CHARACTER.
  2598. *
  2599. * PROCESS *DEL* AS ESCAPE CHARACTER IF *BLKEDIT* TERMINAL,
  2600. * ELSE PROCESS AS NULL INPUT.
  2601. *
  2602. * ENTRY (A) = (DP+3).
  2603. *
  2604. * EXIT TO *CES* IF *BLKEDIT* TERMINAL.
  2605. * TO *NLI* IF NOT *BLKEDIT* TERMINAL -
  2606. * (A) = (DP+3).
  2607.  
  2608.  
  2609. DEL BSS 0 ENTRY
  2610. SHN 21-7 CHECK TERMINAL TYPE
  2611. MJP CES IF *BLKEDIT*
  2612. LDD DP+3
  2613. JMP NLI PROCESS AS NULL INPUT
  2614. DLN SPACE 4,20
  2615. ** DLN - PROCESS DELETE LINE.
  2616. *
  2617. * ENTRY (A) = (DP+3).
  2618. * (CH+1) = INPUT LINE LENGTH.
  2619. * (DP+4) = *ARD*.
  2620. *
  2621. * EXIT TO *CES* IF *BLKEDIT* TERMINAL.
  2622. * TO *ESC* TO ENTER CHARACTER.
  2623. * TO *MGR* TO IGNORE CHARACTER.
  2624. * TO *TTM* TO ISSUE LINE DELETE MESSAGE.
  2625.  
  2626.  
  2627. DLN BSS 0 ENTRY
  2628.  
  2629. * PROCESS AS ESCAPE CHARACTER IF *BLKEDIT* TERMINAL.
  2630.  
  2631. SHN 21-7 CHECK TERMINAL TYPE
  2632. MJP CES IF *BLKEDIT*
  2633.  
  2634. * ENTER CHARACTER IF IN *TRANSPARENT* MODE.
  2635.  
  2636. LDD DP+3 CHECK FOR *TRANSPARENT* MODE
  2637. LPN 4
  2638. ZJN DLN1 IF NOT SET
  2639. JMP ESC ENTER ESCAPE CHARACTER
  2640.  
  2641. * IGNORE CHARACTER IF NULL INPUT LINE.
  2642.  
  2643. DLN1 STD DO SUPPRESS DUPLEX ECHO-BACK
  2644. LDD CH+1 CHECK INPUT LINE LENGTH
  2645. NJN DLN2 IF NOT NULL LINE
  2646. JMP MGR IGNORE CHARACTER
  2647.  
  2648. * DELETE INPUT LINE.
  2649.  
  2650. DLN2 LDN DELM *DEL*
  2651. JMP TTM ISSUE TERMINAL MESSAGE
  2652. DPC SPACE 4,15
  2653. ** DPC - DELETE PRECEEDING CHARACTER.
  2654. *
  2655. * DELETE CHARACTER PRECEDING CHARACTER IF NOT *BLKEDIT*
  2656. * TERMINAL. ENTER CHARACTER IF *BLKEDIT*.
  2657. *
  2658. * ENTRY (A) = (DP+3).
  2659. *
  2660. * EXIT TO *CES* IF *BLKEDIT* TERMINAL.
  2661. * TO *MGR* IF CHARACTER DELETED-
  2662. * (DP+1) = CURRENT POT BACKED UP.
  2663. * (DP+2) = CURRENT WORD AND CHARACTER BACKED UP.
  2664. * (CH+1) = CHARACTER COUNT DECREMENTED.
  2665. * (OMCC) = CHARACTER COUNT DECREMENTED.
  2666. *
  2667. * USES T0 - T5.
  2668. *
  2669. * CALLS BUP, RPC, SWA.
  2670.  
  2671.  
  2672. DPC BSS 0 ENTRY
  2673. SHN 21-7 CHECK TERMINAL TYPE
  2674. MJP CES IF *BLKEDIT*
  2675. LDM OMCC DECREMENT OPERATOR MESSAGE CHARACTER COUNT
  2676. ZJN DPC1 IF ZERO
  2677. SOM OMCC
  2678. DPC1 LDD CH+1 CHECK LINE CHARACTER COUNT
  2679. NJN DPC2 IF NONZERO
  2680. JMP MGR EXIT
  2681.  
  2682. DPC2 SOD CH+1 DECREMENT LINE CHARACTER COUNT
  2683. RJM BUP BACK UP POINTERS
  2684. LDD DP+2 CHECK CHARACTER NUMBER
  2685. SHN 21
  2686. PJN DPC3 IF UPPER CHARACTER
  2687. LPN 7 SET BYTE
  2688. STD T5
  2689. RJM SWA SET WORD ADDRESS
  2690. CRD T0 READ WORD
  2691. LDI T5 EXTRACT UPPER CHARACTER
  2692. SCN 77
  2693. STD CH
  2694. LDN 0 CLEAR BYTE
  2695. STI T5
  2696. RJM SWA SET WORD ADDRESS
  2697. CWD T0 STORE WORD
  2698. DPC3 LDD DP+3 CHECK *ASCII* MODE
  2699. LPN 6
  2700. ZJN DPC5 IF NOT SET
  2701. LDD MA SAVE POINTER WORD
  2702. CWD DP
  2703. RJM RPC READ PREVIOUS CHARACTER
  2704. SBN 74
  2705. MJN DPC4 IF NOT ESCAPE
  2706. ZJN DPC6 IF ESCAPE 2
  2707. SBN 76-74
  2708. ZJN DPC6 IF ESCAPE 1
  2709. DPC4 LDD MA RESTORE POINTER WORD
  2710. CRD DP
  2711. DPC5 JMP MGR EXIT
  2712.  
  2713. DPC6 LDD DP+2 CHECK CHARACTER NUMBER
  2714. SHN 21-0
  2715. PJN DPC5 IF UPPER CHARACTER
  2716. LDI T5 EXTRACT UPPER CHARACTER
  2717. SCN 77
  2718. STD CH
  2719. LDN 0 CLEAR BYTE
  2720. STI T5
  2721. RJM SWA SET WORD ADDRESS
  2722. CWD T0 STORE WORD
  2723. JMP MGR EXIT
  2724. EOT SPACE 4,15
  2725. ** EOT - END OF TRANSMISSION (*BLKEDIT* TERMINAL).
  2726. *
  2727. * PROCESS *EOT* TERMINATOR OF INPUT LINE. IF THE
  2728. * LINE IS NOT NULL, A CARRIAGE RETURN WILL BE TRANS-
  2729. * MITTED TO THE TERMINAL. IF THE LINE IS EMPTY, THE
  2730. * LINE WILL BE IGNORED.
  2731. *
  2732. * ENTRY (A) = DP+3.
  2733. *
  2734. * EXIT TO *CES* IF NOT *BLKEDIT* TERMINAL.
  2735. * TO *EIL* IF *BLKEDIT* TERMINAL AND NOT NULL
  2736. * INPUT LINE.
  2737. * TO *MGR* IF *BLKEDIT* TERMINAL AND NULL INPUT
  2738. * LINE.
  2739. *
  2740. * MACROS RETURN.
  2741.  
  2742.  
  2743. EOT BSS 0 ENTRY
  2744. SHN 21-7 CHECK TERMINAL TYPE
  2745. PJP CES IF NOT *BLKEDIT*
  2746. LDD CH+1 CHECK LINE LENGTH
  2747. ZJP MGR IF NULL
  2748. LDC .CCR ISSUE *CR*
  2749. LMD PY TOGGLE ODD PARITY
  2750. STD DO
  2751. RETURN * REENTER
  2752. LDC .CLF ISSUE *LF*
  2753. LMD PY TOGGLE ODD PARITY
  2754. STD DO
  2755. RETURN EIL ENTER INPUT LINE
  2756. ECI SPACE 4,20
  2757. ** ECI - ESCAPE CHARACTER INPUT.
  2758. *
  2759. * DIRECTS PROCESSING OF *74* AND *76* INPUT CHARACTERS.
  2760. * IF IN EXTENDED OR TRANSPARENT MODE, THE *74* CODE IS
  2761. * STORED AS *7401* AND THE *76* CODE IS STORED AS
  2762. * *7402*.
  2763. *
  2764. * ENTRY (A) = (DP+3).
  2765. * (T7) = CHARACTER.
  2766. *
  2767. * EXIT TO *EIC* TO ENTER SINGLE CHARACTER CODE IF
  2768. * NOT IN EXTENDED MODE.
  2769. * TO *ESC* TO ENTER ESCAPE CODE (7401 OR 7401)
  2770. * IF IN EXTENDED MODE.
  2771.  
  2772.  
  2773. ECI BSS 0 ENTRY
  2774. LPN 6 CHECK TERMINAL MODE
  2775. ZJN ECI1 IF NEITHER *ASCII* NOR TRANSPARENT
  2776. JMP ESC ENTER ESCAPE CODE CHARACTERS
  2777.  
  2778. ECI1 LDD T7 CONVERT TO SINGLE DISPLAY CODE
  2779. LPN 3
  2780. SHN 1
  2781. ADN 72
  2782. STD T7
  2783. JMP EIC ENTER INPUT CHARACTER
  2784. ETX SPACE 4,15
  2785. ** ETX - END OF TEXT.
  2786. *
  2787. * EXIT TO *CES* IF INPUT LINE NOT EMPTY.
  2788. * TO *CES* IF NOT IN TEXT MODE.
  2789. * TO *RWC* AFTER EXITTING FROM *TEXT* MODE.
  2790. *
  2791. * CALLS ERQ, WDC.
  2792.  
  2793.  
  2794. ETX BSS 0 ENTRY
  2795. LDD CH+1 CHECK INPUT LINE CHARACTER COUNT
  2796. NJN ETX1 IF LINE NOT EMPTY
  2797. LDD DC CHECK TERMINAL STATUS
  2798. LPN 4
  2799. NJN ETX2 IF *TEXT* MODE
  2800. ETX1 LDD DP+3
  2801. LJM CES CHECK ESCAPE STATUS
  2802.  
  2803. ETX2 LDD DC CLEAR *INPUT REQUESTED*, *TEXT* MODE
  2804. LPC 7373
  2805. STD DC
  2806. RJM WDC REWRITE *VDCT*
  2807. LDD DP+1 GET POT TO BE DUMPED
  2808. STD RQ+3
  2809. LDD DP+2 EXTRACT WORD COUNT OF POT
  2810. SHN -4
  2811. LPN 7
  2812. STD RQ+2
  2813. LDN /TLX/ETX EXIT TEXT MODE REQUEST
  2814. RJM ERQ
  2815. STD DP CLEAR FIRST POT POINTER
  2816. STD DP+1 CLEAR CURRENT POT POINTER
  2817. STD DP+2 CLEAR POSITION WITHIN CURRENT POT
  2818. JMP RWC ENTER READ/WRITE CONTROL
  2819. NLI SPACE 4,15
  2820. ** NLI - PROCESS NULL INPUT.
  2821. *
  2822. * ENTRY (A) = (DP+3).
  2823. * (DP+4) = PROCESSING ADDRESS.
  2824. *
  2825. * EXIT TO *MGR* IF CHARACTER TO BE IGNORED.
  2826. * TO *EIC* IF CHARACTER TO BE ENTERED.
  2827. * TO *ESC* IF ESCAPE CHARACTER TO BE ENTERED.
  2828.  
  2829.  
  2830. NLI BSS 0 ENTRY
  2831. LPN 4 CHECK *TRANSPARENT* MODE
  2832. ZJN NLI1 IF NOT SET
  2833. LDD CH+2
  2834. LPC 177
  2835. ZJN NLI1 IF NO CHARACTER DEFINED
  2836. STD T7 ENTER CHARACTER
  2837. SHN 21-6 CHECK FOR ESCAPE 2
  2838. MJN NLI2 IF ESCAPE 2
  2839. LJM EIC ENTER INPUT CHARACTER
  2840.  
  2841. NLI1 JMP MGR IGNORE CHARACTER
  2842.  
  2843. NLI2 LJM ESC ENTER ESCAPE CHARACTER
  2844. RDM TITLE READ MODE - SUBROUTINES.
  2845. EMD SPACE 4,25
  2846. ** EMD - ENTER OPERATOR MESSAGE DATA.
  2847. *
  2848. * ENTERS DATA FOR POSSIBLE OPERATOR MESSAGE INTO
  2849. * THE OPERATOR MESSAGE BUFFER. IN ORDER FOR THE
  2850. * INPUT DATA TO BE CONSIDERED A CANDIDATE FOR AN
  2851. * OPERATOR MESSAGE, THE FIRST CHARACTER OF INPUT
  2852. * MUST BE AN ASCII *ESC* CHARACTER. RECEIPT OF AN
  2853. * ADDITIONAL ASCII *ESC* CHARACTER AFTER THE START OF
  2854. * THE MESSAGE WILL CAUSE THE MESSAGE TO BE NO LONGER
  2855. * CONSIDERED A CANDIDATE FOR AN OPERATOR MESSAGE.
  2856. *
  2857. * ENTRY (T7) = LOWER 7 BITS OF INPUT DATA.
  2858. * (CH+1) = LINE CHARACTER COUNT.
  2859. * (F7) = 0 IF START OF *F7* SEQUENCE NOT DETECTED.
  2860. * (OMCC) = OPERATOR MESSAGE CHARACTER COUNT.
  2861. * = NONZERO IF POSSIBLE OPERATOR MESSAGE.
  2862. *
  2863. * EXIT DATA ENTERED IN OPERATOR MESSAGE BUFFER.
  2864. * (OMCC) = INCREMENTED IF POSSIBLE MESSAGE
  2865. * CHARACTER.
  2866. * = 0 IF *ESC* RECEIVED AFTER START OF
  2867. * MESSAGE.
  2868. *
  2869. * USES T1, T2.
  2870.  
  2871.  
  2872. EMD SUBR ENTRY/EXIT
  2873. LDD F7 CHECK FOR START OF *F7* SEQUENCE DETECTED
  2874. NJN EMDX IF DETECTED
  2875. LDD CH+1 CHECK LINE CHARACTER COUNT
  2876. ADM OMCC ADD MESSAGE CHARACTER COUNT
  2877. NJN EMD2 IF EITHER IS NONZERO
  2878.  
  2879. * CHECK FIRST INPUT CHARACTER FOR *ESC* CODE.
  2880.  
  2881. LDD T7 GET INPUT CHARACTER
  2882. LMK .AESC
  2883. NJN EMDX IF NOT *ESC*
  2884. LDC 2L SET BLANK IN BUFFER
  2885. STM OMBUF
  2886. EMD1 AOM OMCC INCREMENT MESSAGE CHARACTER COUNT
  2887. UJN EMDX RETURN
  2888.  
  2889. * CHECK FOR *ESC* AFTER START OF INPUT.
  2890.  
  2891. EMD2 SBD CH+1 CHECK VALUE OF *OMCC*
  2892. ZJN EMDX IF ZERO
  2893. LDD T7 GET INPUT CHARACTER
  2894. SBK .AESC
  2895. NJN EMD3 IF NOT *ESC*
  2896. STM OMCC CLEAR MESSAGE CHARACTER COUNT
  2897. UJN EMDX RETURN
  2898.  
  2899. * TRANSLATE INPUT CHARACTER TO MESSAGE BUFFER.
  2900.  
  2901. EMD3 ADK .AESC-.ASP CHECK CHARACTER VALUE
  2902. MJN EMDX IF NOT TRANSLATABLE
  2903. LDM OMCC CHECK BUFFER LENGTH
  2904. SBK 68D
  2905. PJP EMDX IF OVERFLOW, IGNORE CHARACTER
  2906. LDM TINT,T7 GET TRANSLATION
  2907. LPN 77 MASK UPPER CASE BITS
  2908. STD T1 SAVE TRANSLATION
  2909.  
  2910. * ENTER CHARACTER IN MESSAGE BUFFER.
  2911.  
  2912. LDM OMCC GET BUFFER CHARACTER COUNT
  2913. SHN 22-1 SET CURRENT BYTE
  2914. STD T2
  2915. SHN 1 SHIFT CHARACTER POSITION
  2916. LPN 1
  2917. NJN EMD4 IF LOWER CHARACTER
  2918. LDD T1 STORE AS UPPER CHARACTER
  2919. SHN 6
  2920. STM OMBUF,T2
  2921. JMP EMD1 INCREMENT CHARACTER COUNT
  2922.  
  2923. EMD4 LDD T1 STORE AS LOWER CHARACTER
  2924. RAM OMBUF,T2
  2925. JMP EMD1 INCREMENT CHARACTER COUNT
  2926. EOM SPACE 4,40
  2927. ** EOM - ENTER OPERATOR MESSAGE.
  2928. *
  2929. * CHECKS THE CONTENTS OF THE OPERATOR MESSAGE BUFFER
  2930. * FOR A VALID OPERATOR MESSAGE. IF THE BUFFER CONTENTS
  2931. * CONSTITUTE AN OPERATOR MESSAGE, THE MESSAGE WILL BE
  2932. * TRANSMITTED TO THE DSD *A,OPERATOR* DISPLAY BUFFER
  2933. * AND THE INPUT LINE FROM WHICH THE MESSAGE WAS EX-
  2934. * TRACTED WILL BE DISCARDED.
  2935. *
  2936. * ENTRY (OMCC) = MESSAGE CHARACTER COUNT.
  2937. * = ZERO IF NO POSSIBLE MESSAGE IN
  2938. * BUFFER.
  2939. * (OMBUF) = TRANSLATED MESSAGE.
  2940. *
  2941. * EXIT TO CALLER IF NO MESSAGE ISSUED -
  2942. * (OMCC) = 0.
  2943. * TO *TTM* IF MESSAGE HAS BEEN ISSUED.
  2944. * (A) = ADDRESS OF *READY* MESSAGE.
  2945. * (CH+1) = 0.
  2946. *
  2947. * ERROR TO *TTM* TO ISSUE *CONSOLE BUSY* MESSAGE IF
  2948. * OPERATOR DISPLAY BUFFER BUSY.
  2949. *
  2950. * USES T1, T2, CM - CM+4.
  2951. *
  2952. * CALLS STA, ZOM.
  2953. *
  2954. * MACROS MONITOR.
  2955.  
  2956.  
  2957. EOM SUBR ENTRY/EXIT
  2958. LDM OMCC CHECK MESSAGE LENGTH
  2959. ZJN EOMX IF ZERO
  2960. SBN 4
  2961. MJN EOM1 IF TOO SHORT
  2962.  
  2963. * VALIDATE MESSAGE FORMAT.
  2964.  
  2965. LDM OMBUF CHECK FIRST 2 CHARACTERS
  2966. LMC 2R M
  2967. NJN EOM1 IF NOT * M*
  2968. LDM OMBUF+1 CHECK SECOND 2 CHARACTERS
  2969. LMC 2RS=
  2970. ZJN EOM2 IF *S=*
  2971. EOM1 LDN 0 CLEAR MESSAGE LENGTH
  2972. STM OMCC
  2973. JMP EOMX RETURN TO CALLER
  2974.  
  2975. * INTERLOCK OPERATOR DISPLAY BUFFER.
  2976.  
  2977. EOM2 LDK LDSP READ *L* DISPLAY POINTER
  2978. CRD CM
  2979. LDD CM+2 GET *L* DISPLAY BUFFER ADDRESS
  2980. SHN 14
  2981. LMD CM+3
  2982. SBK LODS SET FWA OF OPERATOR DISPLAY BUFFER
  2983. STD CM+4
  2984. STM EOMA+1
  2985. SHN -14
  2986. STD CM+3
  2987. ADC LDCI
  2988. STM EOMA
  2989. LDN 0 FORMAT INTERLOCK REQUEST
  2990. STD CM+1
  2991. STD CM+2
  2992. MONITOR UTEM ISSUE INTERLOCK REQUEST
  2993. LDD CM+1
  2994. ZJN EOM3 IF INTERLOCK GRANTED
  2995. LDN MBSY * CONSOLE BUSY*
  2996. LJM TTM ISSUE TERMINAL MESSAGE
  2997.  
  2998. * FORMAT DISPLAY BUFFER HEADER WORD.
  2999.  
  3000. EOM3 RJM ZOM ZERO-FILL MESSAGE
  3001. RJM STA SET FWA OF TERMINAL TABLE
  3002. ADK VFST READ *VFST* TO GET JSN
  3003. CRD CM
  3004. LDD TN SET TERMINAL NUMBER IN HEADER
  3005. ADC 2R00
  3006. STD CM+2
  3007. LDN 0
  3008. STD CM+3
  3009. LDN 1 SET BUFFER BUSY BIT
  3010. STD CM+4
  3011.  
  3012. * COPY BUFFER HEADER AND MESSAGE TO DISPLAY BUFFER.
  3013.  
  3014. LDN 7 SET MESSAGE DATA LENGTH
  3015. STD T1
  3016. EOMA LDC * WRITE BUFFER HEADER
  3017. CWD CM
  3018. ADN 1 WRITE BUFFER MESSAGE DATA
  3019. CWM OMBUF+2,T1
  3020.  
  3021. * SET OPERATOR MESSAGE FLAG IN DISPLAY BUFFER
  3022.  
  3023. LDN 1 FORMAT *UTEM* REQUEST
  3024. STD CM+1
  3025. LDN 0
  3026. STD CM+2
  3027. STD CM+3
  3028. LDK OPRL
  3029. STD CM+4
  3030. LDD MA WRITE MESSAGE PARAMETERS
  3031. CWM EOMB,ON
  3032. MONITOR UTEM ISSUE MONITOR REQUEST
  3033.  
  3034. * EXIT TO *TTM* TO ISSUE *READY* MESSAGE.
  3035. *
  3036. * ENTRY (A) = ZERO (FROM *MONITOR* REQUEST).
  3037.  
  3038. STD CH+1 CLEAR INPUT CHARACTER COUNT
  3039. LDN RDYM SET MESSAGE ADDRESS
  3040. JMP TTM ISSUE TERMINAL MESSAGE
  3041.  
  3042.  
  3043. EOMB VFD 6/0,6/1,6/59D,42/1 *UTEM* PARAMETER WORD
  3044. RIN SPACE 4,15
  3045. ** RIN - RELEASE INPUT POTS TO EXECUTIVE.
  3046. *
  3047. * TRANSMITS FILLED INPUT POTS TO *RDF* EXECUTIVE
  3048. * VIA *RIN* REQUEST.
  3049. *
  3050. * ENTRY (DP) = FIRST POT OF INPUT LINE.
  3051. * (DP+1) = CURRENT POT OF INPUT.
  3052. *
  3053. * EXIT FIRST THROUGH CURRENT POT RELEASED IF
  3054. * FIRST IS NOT THE CURRENT POT.
  3055. * (DP) = (DP+1).
  3056. *
  3057. * CALLS ERQ.
  3058.  
  3059.  
  3060. RIN SUBR ENTRY/EXIT
  3061. LDD DP SET FIRST POT
  3062. STD RQ+3
  3063. LMD DP+1
  3064. ZJN RIN1 IF FIRST POT .EQ. CURRENT POT
  3065. LDD DP+1 SET CURRENT POT
  3066. STD DP
  3067. STD RQ+2
  3068. LDN /TLX/RIN RELEASE POT
  3069. RJM ERQ
  3070. RIN1 STD RQ+3 CLEAR REQUEST
  3071. UJN RINX RETURN
  3072. RPC SPACE 4,15
  3073. ** RPC - READ PREVIOUS CHARACTER.
  3074. *
  3075. * ENTRY NONE.
  3076. *
  3077. * EXIT (A) = PREVIOUS CHARACTER.
  3078. * IF PREVIOUS CHARACTER IS LOWER-
  3079. * (T0 - T0+4) = DATA WORD.
  3080. * (T5) = BYTE NUMBER.
  3081. * (T6) = WORD NUMBER.
  3082. *
  3083. * USES T0 - T5.
  3084. *
  3085. * CALLS BUP, SWA.
  3086.  
  3087.  
  3088. RPC1 LDD CH SET CHARACTER
  3089. SHN -6
  3090.  
  3091. RPC SUBR ENTRY/EXIT
  3092. RJM BUP BACK UP POINTERS
  3093. LDD DP+2 CHECK CHARACTER NUMBER
  3094. SHN 21
  3095. PJN RPC1 IF UPPER CHARACTER
  3096. LPN 7 SET BYTE
  3097. STD T5
  3098. RJM SWA SET WORD ADDRESS
  3099. CRD T0
  3100. LDI T5 SET CHARACTER
  3101. LPN 77
  3102. UJN RPCX RETURN
  3103. WIC SPACE 4,25
  3104. ** WIC - WRITE INPUT CHARACTER.
  3105. *
  3106. * ENTRY (T7) = CHARACTER.
  3107. * (CH) = UPPER CHARACTER IF LOWER CHARACTER IS
  3108. * TO BE STORED.
  3109. * IF (T7) = 0, AND UPPER CHARACTER IS TO BE PROCESSED,
  3110. * END OF LINE IS ASSUMED. IN ORDER TO PREVENT
  3111. * CONFUSION BETWEEN THE DISPLAY CODE COLON *00* AND
  3112. * END OF LINE, A *00* COLON IS PASSED TO *WIC* AS A
  3113. * *200* CODE.
  3114. *
  3115. * EXIT TO *NIP* IF NO INPUT POT.
  3116. *
  3117. * USES T0 - T5.
  3118. *
  3119. * CALLS ERQ, RLT, SWA.
  3120. *
  3121. * MACROS RETURN.
  3122.  
  3123.  
  3124. WIC6 LPN 7 SET CURRENT BYTE
  3125. STD T5
  3126. NJN WIC7 IF NOT START OF NEW WORD
  3127. LDN ZERL
  3128. UJN WIC8
  3129.  
  3130. WIC7 RJM SWA SET CURRENT WORD ADDRESS
  3131. WIC8 CRD T0
  3132. LDD T7 MERGE UPPER AND LOWER CHARACTERS
  3133. LPN 77 MASK FOR COLON
  3134. LMD CH
  3135. STI T5 STORE BYTE
  3136. RJM SWA WRITE WORD TO CM POT
  3137. CWD T0
  3138. LDI T5
  3139. ADD T7
  3140. ZJN WIC2 IF END OF LINE
  3141. AOD DP+2 ADVANCE CHARACTER
  3142. LPN 17
  3143. LMN 12
  3144. ZJN WIC2 IF END OF WORD
  3145. * UJN WICX RETURN
  3146.  
  3147. * WIC - ENTRY/EXIT.
  3148.  
  3149. WIC SUBR ENTRY/EXIT
  3150. WIC1 LDD DP+2 CHECK CHARACTER NUMBER
  3151. SHN 21
  3152. MJN WIC6 IF LOWER
  3153.  
  3154. * PROCESS UPPER CHARACTER.
  3155.  
  3156. AOD DP+2 ADVANCE CHARACTER POINTER
  3157. LDD T7 CHECK CHARACTER
  3158. SHN 6 STORE UPPER CHARACTER
  3159. STD CH
  3160. NJN WICX IF NOT END OF LINE
  3161. UJN WIC1 FORCE END OF LINE
  3162.  
  3163. * PROCESS END OF WORD.
  3164.  
  3165. WIC2 LDD DP+2 CHECK WORD NUMBER
  3166. SHN -4
  3167. LPN 7
  3168. LMN 7
  3169. ZJN WIC4 IF END OF POT
  3170. LDD DP+2 ADVANCE WORD NUMBER, RESET CHARACTER
  3171. SCN 17
  3172. ADN 20
  3173. STD DP+2
  3174. SHN -4 CHECK WORD NUMBER
  3175. LPN 17
  3176. SBN 5
  3177. MJN WICX RETURN IF WORD 5 NOT REACHED
  3178. SBN 3
  3179. PJN WICX RETURN IF POT REQUESTED
  3180. LDC 200 SET *POT REQUESTED*
  3181. RAD DP+2
  3182. RJM RLT READ NEXT POT LINK
  3183. NJN WIC3 IF POT LINKED
  3184. LDD DP+1 SET CURRENT POT
  3185. STD RQ+3
  3186. LDN /TLX/LPT REQUEST POT
  3187. RJM ERQ
  3188. WIC3 JMP WICX RETURN
  3189.  
  3190. * PROCESS END OF POT.
  3191.  
  3192. WIC4 LDD DP+2 RESET WORD AND CHARACTER
  3193. LPC 7400
  3194. STD DP+2
  3195. RJM RLT GET NEXT POT LINK
  3196. ZJN WIC5 IF POT NOT LINKED
  3197. STD DP+1 SET NEW CURRENT POT
  3198. LDD DP+3
  3199. LPN 10
  3200. ZJN WIC3 IF NOT BINARY MODE, RETURN
  3201. LDD DC CHECK TERMINAL STATUS
  3202. SHN 21-6
  3203. MJN WIC3 IF *READ DATA* SET
  3204. RJM RIN RELEASE INPUT DATA
  3205. JMP WICX RETURN
  3206.  
  3207. WIC5 RETURN NIP PROCESS NO-INPUT-POT
  3208. ZOM SPACE 4,15
  3209. ** ZOM - ZERO-FILL OPERATOR MESSAGE BUFFER.
  3210. *
  3211. * ZERO-FILLS THE OPERATOR MESSAGE BUFFER FROM THE LAST
  3212. * CHARACTER ENTERED INTO THE BUFFER TO THE END OF THE
  3213. * BUFFER.
  3214. *
  3215. * ENTRY (OMCC) = NUMBER OF CHARACTERS IN BUFFER.
  3216. *
  3217. * EXIT BUFFER ZERO-FILLED.
  3218. *
  3219. * USES T1.
  3220.  
  3221.  
  3222. ZOM SUBR ENTRY/EXIT
  3223. LDM OMCC GET BUFFER CHARACTER COUNT
  3224. SHN 22-1 SET PPU BYTE COUNT
  3225. STD T1
  3226. SHN 1 ADD LAST CHARACTER INDEX
  3227. LPN 1
  3228. RAD T1
  3229. ZOM1 SBK 37D CHECK FOR END OF BUFFER
  3230. PJN ZOMX IF BUFFER COMPLETE
  3231. LDN 0 CLEAR BUFFER BYTE
  3232. STM OMBUF,T1
  3233. AOD T1 INCREMENT BUFFER INDEX
  3234. UJN ZOM1 LOOP TO END OF BUFFER
  3235. SPACE 4,10
  3236. QUAL
  3237.  
  3238. RDM EQU /RDM/RDM
  3239. WTM TITLE WRITE MODE.
  3240. QUAL WTM
  3241. WTM SPACE 4,20
  3242. ** WTM - WRITE MODE CONTROL.
  3243. *
  3244. * DETERMINES WHETHER A WRITE OPERATION SHOULD BE IN NOS
  3245. * *BINARY* OR IN *ASCII* FORMAT AND BRANCHES TO THE FORMAT
  3246. * WRITE PROCESSOR.
  3247. *
  3248. * ENTRY (DP+1) = FIRST POT OF OUTPUT.
  3249. * (DP+2), CURRENT WORD = FIRST WORD OF OUTPUT.
  3250. * (DP+3) *BINARY TRANSMISSION* STATUS
  3251. * (CH+2) = ESCAPE CONTROL.
  3252. *
  3253. * EXIT TO *AWT* FOR *ASCII* FORMAT WRITE.
  3254. * TO *BWT* FOR NOS *BINARY* FORMAT WRITE.
  3255. *
  3256. * CALLS ERQ, RLT.
  3257.  
  3258.  
  3259. WTM BSS 0 ENTRY
  3260. RJM RLT CHECK POT LINK
  3261. NJN WTM1 IF POT LINKED
  3262. LDN /TLX/RES REQUEST MORE OUTPUT
  3263. RJM ERQ
  3264. WTM1 LDD DP+3 CHECK *BINARY TRANSMISSION*
  3265. LPN 10
  3266. ZJN AWT IF *ASCII* WRITE
  3267. LJM BWT ENTER *BINARY* WRITE
  3268. AWT TITLE WRITE MODE - *ASCII* WRITE PROCESSOR.
  3269. AWT SPACE 4,50
  3270. ** AWT - *ASCII* WRITE PROCESSOR.
  3271. *
  3272. * ISSUES *ASCII* CHARACTER DATA TO TERMINAL.
  3273. *
  3274. * ENTRY (CH+2) = ESCAPE CONTROL.
  3275. *
  3276. * EXIT (CH+2) = ESCAPE CONTROL UPDATED.
  3277. *
  3278. * ESCAPE CONTROL -
  3279. *
  3280. * 4XXX = VALID CHARACTER POINTER XXX.
  3281. * 0100 = ESCAPE 1.
  3282. * 0200 = ESCAPE 2.
  3283. * 0300 = *00* (POSSIBLE EOL) BYTE HAS BEEN
  3284. * DETECTED. THIS SITUATION WILL OCCUR
  3285. * WHEN THE LOWER CHARACTER OF AN
  3286. * OUTPUT BYTE IS FOUND TO BE ZERO.
  3287. * AT THIS POINT, FURTHER TESTING MUST
  3288. * BE DONE TO DETERMINE WHETHER OR NOT
  3289. * THIS ZERO CHARACTER IS PART OF
  3290. * AN END OF LINE OR IS FOLLOWED BY
  3291. * DATA. THIS LATTER CONDITION IS A
  3292. * FALSE END OF LINE AND THE ZERO
  3293. * CHARACTER MUST BE PROCESSED AS A
  3294. * COLON.
  3295. * 04XX = FALSE EOL HAS BEEN DETECTED.
  3296. * XX = NEXT OUTPUT CHARACTER.
  3297. * 05XX = SUSPENDED CONTROL PROCESSING. THIS
  3298. * SITUATION OCCURS WHEN A CONTROL
  3299. * CHARACTER PROCESSOR IS UNABLE TO
  3300. * TO DETERMINE WHETHER OR NOT A
  3301. * SUSPECTED CONTROL CHARACTER IS
  3302. * FOLLOWED BY AN END OF LINE.
  3303. * THIS WILL OCCUR WHEN THERE IS
  3304. * NO FURTHER DATA IN THE CURRENT
  3305. * OUTPUT POTS AND THE DRIVER MUST
  3306. * WAIT FOR FURTHER OUTPUT TO BE
  3307. * ASSIGNED.
  3308.  
  3309.  
  3310. AWT BSS 0 ENTRY
  3311. RETURN * REENTER
  3312.  
  3313. * CHECK ESCAPE CONTROL.
  3314.  
  3315. LDD CH+2 GET ESCAPE CONTROL
  3316. SHN -6
  3317. ZJN AWT1 IF NULL
  3318. STD T1
  3319. SBN TECPL TEST FOR VALID DATA BIT
  3320. PJN AWT1 IF VALID DATA SET
  3321. LDM TECP-1,T1 SET PROCESSOR ADDRESS
  3322. STD T2
  3323. LDD CH+2 SAVE LOWER SIX BITS
  3324. LPN 77
  3325. STD T7
  3326. LJM 0,T2 PROCESS ESCAPE CONTROL
  3327.  
  3328. * GET NEXT OUTPUT CHARACTER.
  3329.  
  3330. AWT1 RJM ROC GET NEXT CHARACTER
  3331. PJN AWT3 IF NOT CONTROL BYTE
  3332. AWT2 LJM SOC PROCESS CONTROL BYTE
  3333.  
  3334. AWT3 NJN AWT4 IF NON-ZERO
  3335. LJM AWT11 CHECK POSSIBLE END OF LINE
  3336.  
  3337. * CHECK OUTPUT CHARACTER.
  3338.  
  3339. AWT4 SBN 74 CHECK FOR ESCAPE CHARACTER
  3340. MJN AWT7 IF NOT ESCAPE 1 OR 2
  3341. ZJN AWT5 IF ESCAPE 2
  3342. SBN 76-74
  3343. NJN AWT7 IF NOT ESCAPE 1
  3344. LCN 1
  3345.  
  3346. * PROCESS ESCAPE CHARACTER.
  3347.  
  3348. AWT5 ADN 2 SET ESCAPE CHARACTER BIAS
  3349. SHN 6
  3350. STD CH+2
  3351. LDD DP+3
  3352. LPN 2
  3353. ZJN AWT7 IF NOT EXTENDED MODE
  3354. AWT6 RJM ROC GET NEXT OUTPUT CHARACTER
  3355. MJN AWT2 IF CONTROL BYTE
  3356. ADD CH+2 ADD ESCAPE CHARACTER BIAS
  3357. STD T7
  3358. ADC -214
  3359. MJN AWT7 IF LEGAL CHARACTER
  3360. LDN 0 IGNORE INVALID CHARACTER
  3361. STD CH+2
  3362. LJM AWT LOOP FOR NEXT CHARACTER
  3363.  
  3364. * CLEAR ESCAPE CONTROL.
  3365. *
  3366. * (T7) = OUTPUT CHARACTER PLUS ESCAPE BIAS.
  3367.  
  3368. AWT7 LDN 0 CLEAR ESCAPE CONTROL
  3369. STD CH+2
  3370.  
  3371. * TRANSLATE AND ISSUE OUTPUT CHARACTER.
  3372. *
  3373. * (T7) = OUTPUT CHARACTER PLUS ESCAPE BIAS.
  3374.  
  3375. AWT8 RJM TOC TRANSLATE OUTPUT CHARACTER
  3376. SHN 6
  3377. PJN AWT10 IF SPECIAL PROCESSING REQUIRED
  3378. AOD CH+1 ADVANCE CHARACTER COUNT/LINE
  3379. AOD CH+4 ADVANCE OUTPUT CHARACTER COUNT
  3380. SHN -14
  3381. ZJN AWT9 IF NO OVERFLOW (4096 CHARACTERS)
  3382. LDN /TLX/IAM REQUEST ISSUE ACCOUNTING MESSAGE
  3383. RJM ERQ
  3384.  
  3385. * ISSUE TRANSLATED CHARACTER TO OUTPUT.
  3386.  
  3387. AWT9 LDD T7 GET TRANSLATED CHARACTER
  3388. STD DO ISSUE CHARACTER TO OUTPUT
  3389. LJM AWT LOOP FOR NEXT CHARACTER
  3390.  
  3391. * PERFORM SPECIAL PROCESSING.
  3392.  
  3393. AWT10 SHN -6 SET SPECIAL PROCESSOR INDEX
  3394. STD T1
  3395. LDM TWSP,T1 GET CHARACTER PROCESSOR ADDRESS
  3396. LJM MGR= ENTER CHARACTER PROCESSOR
  3397.  
  3398. * PROCESS POSSIBLE END OF LINE.
  3399.  
  3400. AWT11 LDC 300 SET OUTPUT CONTROL
  3401. STD CH+2
  3402. AWT12 RJM ROC GET NEXT CHARACTER
  3403. PJN AWT15 IF NOT CONTROL BYTE
  3404. LJM SOC
  3405.  
  3406. * ENTRY FROM CONTROL CHARACTER PROCESSORS.
  3407. *
  3408. * (A) = FALSE CONTROL BYTE VALUE.
  3409.  
  3410. AWT13 STD CM SAVE FALSE CONTROL BYTE
  3411. LDD CH+2 CHECK OUTPUT CONTROL
  3412. LMC 300
  3413. NJN AWT14 IF NOT SUSPENDED COLON
  3414. STD CM
  3415. SOD DP+2 BACK UP CHARACTER
  3416. AWT14 LDD CM
  3417. AWT15 ADC 400 SET ESCAPE CONTROL
  3418. STD CH+2
  3419. LDN 00 SET COLON
  3420. STD T7
  3421. LJM AWT8 TRANSLATE AND ISSUE CHARACTER
  3422. TECP SPACE 4,10
  3423. ** TECP - TABLE OF ESCAPE CONTROL PROCESSORS.
  3424.  
  3425.  
  3426. TECP BSS 0
  3427. LOC 1
  3428.  
  3429. CON AWT6 *0100* - ESCAPE 1.
  3430. CON AWT6 *0200* - ESCAPE 2.
  3431. CON AWT12 *0300* - POSSIBLE *EOL*.
  3432. CON AWT4 *04XX* - FALSE *EOL*.
  3433. CON SOC1 *05XX* - SUSPENDED OUTPUT CONTROL.
  3434.  
  3435. TECPL BSS 0
  3436. LOC *O
  3437. TWSP SPACE 4,10
  3438. ** TWSP - TABLE OF SPECIAL WRITE PROCESSORS.
  3439.  
  3440.  
  3441. TWSP BSS 0
  3442. QUAL TRN
  3443. LOC 0
  3444.  
  3445. NLO CON /WTM/AWT NULL CHARACTER (IGNORED)
  3446. ACR CON /WTM/ACR CARRIAGE RETURN
  3447. ANL CON /WTM/ANL NEW LINE (CR/LF)
  3448.  
  3449. LOC *O
  3450. NOREF NLO
  3451. QUAL *
  3452. BWT TITLE WRITE MODE - *BINARY* WRITE PROCESSOR.
  3453. BWT SPACE 4,15
  3454. ** BWT - BINARY WRITE.
  3455. *
  3456. * WRITES NOS *BINARY* MODE DATA TO TERMINAL.
  3457. *
  3458. * CALLS ROC, ERQ.
  3459.  
  3460.  
  3461. BWT BSS 0 ENTRY
  3462. RETURN * REENTER
  3463. RJM ROC READ OUTPUT CHARACTER
  3464. MJP SOC IF CONTROL BYTE
  3465. LDI T5 READ ENTIRE 12-BIT CHARACTER
  3466. STD DO STORE OUTPUT
  3467. SHN 21-13 CHECK FORMAT
  3468. PJN BWT2 IF NOT BINARY FORMAT
  3469. AOD DP+2 ADVANCE CHARACTER COUNT
  3470. AOD CH+4
  3471. SHN -14
  3472. ZJN BWT1 IF NO OVERFLOW
  3473. LDN /TLX/IAM ISSUE ACCOUNTING MESSAGE
  3474. RJM ERQ
  3475. BWT1 JMP MGR REENTER
  3476.  
  3477. * TERMINATE BINARY MODE OUTPUT.
  3478.  
  3479. BWT2 LCN 10 CLEAR BINARY MODE BIT
  3480. RAD DP+3
  3481. SOD DP+2 RESET CHARACTER POSITION
  3482. LDN 0 CLEAR ESCAPE CONTROL
  3483. STD CH+2
  3484. LDN 1 SET CHARACTER COUNT NON-ZERO
  3485. STD CH+1
  3486. JMP AWT ENTER *ASCII* WRITE
  3487. WTM TITLE WRITE MODE - MAIN ROUTINES.
  3488. ISN SPACE 4,15
  3489. ** ISN - ISSUE ASCII *NUL* CHARACTERS.
  3490. *
  3491. * ENTRY (A) = DEFAULT REPEAT COUNT.
  3492. *
  3493. * EXIT TO *AWT* TO CONTINUE WRITE OPERATION.
  3494. *
  3495. * CALLS DDC, SRC.
  3496.  
  3497.  
  3498. ISN BSS 0 ENTRY
  3499. RJM DDC DETERMINE DELAY COUNT
  3500. SHN 14
  3501. ADK .CNUL SET *NUL* CHARACTER
  3502. LMD PY TOGGLE ODD PARITY
  3503. RJM SRC SEND REPEATED CHARACTER
  3504. JMP AWT CONTINUE WRITE
  3505. SOC SPACE 4,15
  3506. ** SOC - SET OUTPUT CONTROL.
  3507. *
  3508. * ENTRY (A) = OUTPUT CONTROL BYTE SET BY *ROC*.
  3509. * (T7) = LOWER 12 BITS OF *ROC* CONTROL BYTE.
  3510. *
  3511. * EXIT TO CONTROL BYTE PROCESSOR.
  3512. *
  3513. * CALLS ERQ, RLT.
  3514.  
  3515.  
  3516. SOC4 RJM RLT CHECK POT LINK
  3517. NJN SOC5 IF LINKED
  3518. LDC /CTL/RWC1 SET REENTRY ADDRESS
  3519. STD DP+4
  3520. UJN SOC6
  3521.  
  3522. * SET NEXT POT.
  3523.  
  3524. SOC5 STD DP SET POT POINTER
  3525. LDD DP+1 DROP CURRENT POT
  3526. STD RQ+3
  3527. LDN /TLX/DRP
  3528. RJM ERQ
  3529. LDD DP SET CURRENT POT
  3530. STD DP+1
  3531. RJM RLT CHECK THIS POT LINK
  3532. NJN SOC7 IF POT LINKED
  3533.  
  3534. * REQUEST ADDITIONAL OUTPUT.
  3535.  
  3536. SOC6 LDN /TLX/RES REQUEST ADDITIONAL OUTPUT
  3537. RJM ERQ
  3538. SOC7 LDN 0 CLEAR LINE POSITION
  3539. STD DP+2
  3540. STD DO CLEAR OUTPUT
  3541. JMP MGR EXIT
  3542.  
  3543.  
  3544. * SOC - ENTRY.
  3545.  
  3546. SOC BSS 0 ENTRY
  3547. SHN 21-20 CHECK BIT 20
  3548. MJN SOC4 IF SET, THEN END OF POT
  3549. AOD DP+2 ADVANCE CHARACTER POINTER
  3550.  
  3551. * CHECK CONTROL BYTE.
  3552.  
  3553. SOC1 LDD T7 CHECK CONTROL BYTE
  3554. ZJN SOC3 IF END OF LINE
  3555. LMN 2R"IB"
  3556. ZJN SOC2 IF INTERNAL END OF BLOCK
  3557. LDD DP+3 CHECK MODE
  3558. SHN 21-3
  3559. PJN SOC2 IF NOT BINARY
  3560. SOD DP+2 TERMINATE BINARY MODE
  3561. LJM BWT2
  3562.  
  3563. * EXIT TO CONTROL BYTE PROCESSOR.
  3564.  
  3565. SOC2 LDN /TLX/RES REQUEST ADDITIONAL OUTPUT
  3566. RJM ERQ
  3567. SOC3 LDM TSOC,T7 SET REENTRY ADDRESS
  3568. LJM MGR= REENTER
  3569. TTM SPACE 4,25
  3570. ** TTM - ISSUE TERMINAL MESSAGE.
  3571. *
  3572. * ISSUES MESSAGE TO TERMINAL.
  3573. *
  3574. * ENTRY (A) = ADDRESS OF FORMATTED MESSAGE.
  3575. *
  3576. * EXIT (CM+2) = 0.
  3577. * (OMCC) = 0.
  3578. * TO *RDM* AFTER MESSAGE IS COMPLETE IF THERE
  3579. * ARE INPUT POTS AVAILABLE -
  3580. * (DP+1) = CURRENT POT RESET TO START OF LINE.
  3581. * (DP+2) = CURRENT WORD RESET TO START OF LINE.
  3582. * TO *RWC* AFTER MESSAGE IS COMPLETE IF THERE
  3583. * IS NO INPUT POT AVAILABLE.
  3584. *
  3585. * USES (DP+1) = MESSAGE ADDRESS POINTER.
  3586. * (DP+2) = MESSAGE BYTE POINTER.
  3587. *
  3588. * CALLS SEM.
  3589. *
  3590. * MACROS RETURN.
  3591.  
  3592.  
  3593. TTM BSS 0 ENTRY
  3594. ADC 7700 SET MESSAGE PSEUDO-POT-POINTER
  3595. STD DP+1
  3596. LDD DP+2 CLEAR BYTE POINTER
  3597. LPC 7600
  3598. STD DP+2
  3599. LDN 0 CLEAR OUTPUT CONTROL
  3600. STD CH+2
  3601. STM OMCC CLEAR OPERATOR MESSAGE
  3602. RJM SEM SET EXTENDED MODE
  3603. RETURN AWT ENTER WRITE MODE
  3604.  
  3605.  
  3606. * ENTERED HERE FROM SUBROUTINE *ROC* TO EXTRACT NEXT
  3607. * MESSAGE CHARACTER TO BE RETURNED TO WRITE PROCESSOR.
  3608.  
  3609. TTM1 LDM TTMA-7700,DP+1 GET NEXT CHARACTER
  3610. STD T7
  3611. LDD DP+2 TOGGLE BYTE INDEX
  3612. LMN 1
  3613. STD DP+2
  3614. LPN 1
  3615. NJN TTM2 IF UPPER CHARACTER
  3616. AOD DP+1 INCREMENT MESSAGE ADDRESS
  3617. LDD T7
  3618. LPN 77 EXTRACT LOWER CHARACTER
  3619. UJN TTM3
  3620.  
  3621. TTM2 LDD T7 EXTRACT UPPER CHARACTER
  3622. SHN -6
  3623. TTM3 STD T7 SET CHARACTER
  3624. ZJN TTM5 IF END OF MESSAGE
  3625. SOD CH+4 PREVENT CHARACTER COUNT ON MESSAGE
  3626. LDD T7
  3627. LJM ROCX ISSUE CHARACTER
  3628.  
  3629. * RESET LINE POINTERS AND EXIT.
  3630.  
  3631. TTM5 LDD DP+2 RESET CURRENT WORD
  3632. SHN -5
  3633. LMD DP+2
  3634. SCN 17
  3635. STD DP+2
  3636. LDD DP RESET CURRENT POT
  3637. STD DP+1
  3638. ZJN TTM6 IF NO INPUT POT
  3639. RJM CEM CLEAR EXTENDED MODE
  3640. LJM RDM RE-ENTER READ MODE
  3641.  
  3642. TTM6 LDN /TLX/RES RESTART JOB
  3643. RJM ERQ
  3644. JMP RWC ENTER READ/WRITE CONTROL
  3645.  
  3646.  
  3647. ** TABLE OF TERMINAL MESSAGES.
  3648.  
  3649. TTMA BSS 0
  3650. LOC 0
  3651.  
  3652. DELM DATA Z+ *DEL*"NL"+
  3653. LOFM DATA Z+"NL" *OVL*"NL"+
  3654. MBSY DATA Z+"NL" *CONSOLE BUSY*"NL"+
  3655. RDYM DATA Z+"NL" *READY*"NL"+
  3656. RILM DATA Z+"NL" *RE-ENTER LAST LINE*"NL"+
  3657.  
  3658. LOC *O
  3659. TITLE WRITE MODE - OUTPUT CONTROL BYTE PROCESSORS.
  3660. TSOC SPACE 4,10
  3661. ** TSOC - TABLE OF OUTPUT CONTROL BYTE PROCESSORS.
  3662. * INDEXED BY CONTROL CODE.
  3663.  
  3664.  
  3665. TSOC BSS 0
  3666. LOC 0
  3667.  
  3668. CON EOL END OF LINE
  3669. CON EOB END OF BLOCK
  3670. CON ECB END OF CORRESPONDENCE BLOCK
  3671. CON ATI AUTO INPUT
  3672. CON LOF LOG OFF USER
  3673. CON TPI TRANSPARENT INPUT
  3674. CON BNI BINARY INPUT
  3675. CON BNO BEGIN BINARY OUTPUT
  3676. CON EOL UNUSED - TREAT AS END OF LINE
  3677. CON BEO BEGIN EXTENDED OUTPUT
  3678. CON EOL UNUSED - TREAT AS END OF LINE
  3679. CON EOS END OF STRING
  3680. CON IEB INTERNAL END OF BLOCK
  3681. CON ETI EXECUTIVE AUTO MODE INPUT
  3682.  
  3683. TSOCL BSS 0
  3684. LOC *O
  3685. EOL SPACE 4,15
  3686. *** 0000 END OF OUTPUT LINE.
  3687. *
  3688. * THIS CONTROL BYTE CAUSES THE TERMINAL TO BE POSITIONED TO
  3689. * THE BEGINNING OF THE NEXT LINE. THE REMAINDER OF THE WORD
  3690. * IN WHICH THE *END OF LINE* OCCURS IS DISCARDED.
  3691. *
  3692. * EXIT (CH+1) = 0.
  3693. * (CH+2) = 0.
  3694. * TO *ANL* IF IN *ASCII* MODE.
  3695. * TO *AWT* IF IN BINARY MODE.
  3696. *
  3697. * CALLS CEM.
  3698.  
  3699.  
  3700. EOL BSS 0 ENTRY
  3701. LDN 0 CLEAR LINE CHARACTER COUNT
  3702. STD CH+1
  3703. STD CH+2 CLEAR ESCAPE CONTROL
  3704. LDD DP+2 CLEAR WORD AND CHARACTER POINTERS
  3705. SCN 17
  3706. LMN 12
  3707. STD DP+2
  3708. LDD DP+3 CHECK FOR BINARY MODE
  3709. LPN 10
  3710. NJN EOL1 IF BINARY MODE
  3711. RJM CEM CLEAR/RESET EXTENDED MODE
  3712. JMP ANL ISSUE *NEW LINE*
  3713.  
  3714. EOL1 LMD DP+3 CLEAR BINARY MODE
  3715. STD DP+3
  3716. JMP AWT CONTINUE OUTPUT
  3717. EOB SPACE 4,20
  3718. *** 0001 END OF OUTPUT BLOCK.
  3719. *
  3720. * THIS CONTROL BYTE IS USED TO TERMINATE OUTPUT BEFORE
  3721. * THE END OF POT IS REACHED. THE REMAINDER OF THE POT IS
  3722. * DISCARDED AND THE TERMINAL IS NOT POSITIONED TO THE
  3723. * START OF THE NEXT LINE.
  3724. *
  3725. * THIS CONTROL BYTE MUST BE FOLLOWED BY AN END-OF-LINE.
  3726. *
  3727. * EXIT TO *RWC* FOR NEXT OPERATION -
  3728. * (DP+2) = 0.
  3729. * (CH+1) = 0.
  3730. * (CH+2) = 0.
  3731. *
  3732. * CALLS CLT.
  3733.  
  3734.  
  3735. EOB BSS 0 ENTRY
  3736. LDN 1RA
  3737. RJM CLT CHECK FOR LINE TERMINATION
  3738. EOB1 LDN 0 CLEAR CHARACTER POSITION
  3739. STD DP+2
  3740. STD CH+1 RESET CHARACTER COUNT
  3741. STD CH+2 CLEAR ESCAPE CONTROL
  3742. JMP RWC
  3743. ECB SPACE 4,20
  3744. *** 0002 END OF CORRESPONDENCE BLOCK.
  3745. *
  3746. * SPECIAL END OF BLOCK PROCESSING FOR POSSIBLE
  3747. * CORRESPONDENCE TERMINALS.
  3748. * THIS CODE ENABLES INPUT IF CORRESPONDENCE TERMINAL,
  3749. * OTHERWISE IT IS TREATED AS A *0001* BYTE.
  3750. *
  3751. * THIS CONTROL BYTE MUST BE FOLLOWED BY AN END-OF-LINE.
  3752. *
  3753. * NOTE THIS CONTROL BYTE IS NOT MEANINGFUL TO THE
  3754. * THE TWO-PORT MULTIPLEXER DRIVER.
  3755. *
  3756. * EXIT TO *EOB1* TO TERMINATE OUTPUT BLOCK.
  3757. *
  3758. * CALLS CLT.
  3759.  
  3760.  
  3761.  
  3762. ECB BSS 0 ENTRY
  3763. LDN 1RB CHECK FOR LINE TERMINATOR
  3764. RJM CLT
  3765. JMP EOB1 PROCESS AS *EOB*
  3766. ATI SPACE 4,20
  3767. *** 0003 INITIATE AUTO-MODE INPUT.
  3768. *
  3769. * THIS CONTROL BYTE MUST BE FOLLOWED BY AN END OF LINE
  3770. * AND TERMINATES OUTPUT.
  3771. * THE WORD CONTAINING THE AUTO INPUT CONTROL BYTE IS
  3772. * MOVED TO THE FIRST WORD OF THE POT FOR SUBSEQUENT
  3773. * INPUT WHICH MUST FOLLOW IMMEDIATELY.
  3774. *
  3775. * EXIT TO *RDM* TO READ IN AUTO MODE.
  3776. * TO *RWC* TO PROCESS DRIVER REQUEST.
  3777. *
  3778. * ERROR TO *AWT13* IF INVALID REQUEST.
  3779. *
  3780. * CALLS CLT, CKL, ERQ, MDS, RSW, SWA.
  3781. *
  3782. * MACROS RETURN.
  3783.  
  3784.  
  3785. ATI7 LDN 1RC REENTER WRITE MODE
  3786. * LDN 1RM (CONTROL BYTE 0015B)
  3787. ATIB EQU *-1
  3788. JMP AWT13 CONTINUE WRITE
  3789.  
  3790. * ATI - ENTRY.
  3791.  
  3792. ATI BSS 0 ENTRY
  3793. LDC LDNI+1RC CONTROL BYTE TO REENTER WRITE MODE
  3794. STM ATIB
  3795. LDC MDS SET UP CALL TO SUBROUTINE MDS
  3796. STM ATIA
  3797. LDN 1RC
  3798.  
  3799. * ATI1 - ENTRY FROM *ATI* AND *ETI*.
  3800. *
  3801. * ENTRY (ATIA) = *MDS* IF CALLED FROM *ATI*.
  3802. * = *WDS* IF CALLED FROM *ETI*.
  3803. * (ATIB) = DISPLAY CHARACTER FOR ERROR PROCESSING.
  3804.  
  3805. ATI1 RJM CLT CHECK FOR LINE TERMINATION
  3806. RJM CKL CHECK *LIST* STATUS
  3807. MJN ATI7 IF FILE BEING LISTED
  3808. LDD DC CHECK TERMINAL STATUS
  3809. LPN 2
  3810. NJN ATI3 IF AUTO INPUT MODE SET
  3811. LDD DC+4 CHECK VDCT INTERLOCK
  3812. ZJN ATI2 IF NOT INTERLOCKED
  3813. LDN 2 SET AUTO INPUT MODE
  3814. RAD DC
  3815. RJM WDC WRITE VDCT
  3816. UJN ATI3 SET WORD/BYTE NUMBER
  3817.  
  3818. ATI2 LDN /TLX/SAI REQUEST SET AUTO INPUT
  3819. RJM ERQ
  3820. ATI3 LDD DP+2 SET BYTE NUMBER
  3821. SHN -1
  3822. LPN 7
  3823. STD T5
  3824. RJM SWA SET WORD ADDRESS
  3825. CRD T0 READ DATA WORD
  3826. LDN 0 CLEAR BYTE
  3827. STI T5
  3828. STD CH+2 CLEAR ESCAPE CONTROL
  3829. RJM MDS RESTORE WORD AND SET FIRST WORD
  3830. * RJM RSW (CONTROL BYTE 0015)
  3831. ATIA EQU *-1
  3832. LDD DP+2
  3833. SCN 17
  3834. SHN 5
  3835. LMD DP+2
  3836. SBN 2 DECREMENT CHARACTER NUMBER
  3837. STD DP+2
  3838. LPN 17
  3839. STD CH+1 SET INPUT LINE CHARACTER COUNT
  3840. LDD DP+3 CLEAR BINARY AND EXTENDED MODES
  3841. SCN 12
  3842. STD DP+3
  3843.  
  3844. * WAIT FOR EXECUTIVE TO SET *AUTO* MODE.
  3845.  
  3846. ATI4 RETURN * REENTER
  3847. LDD DC CHECK TERMINAL STATUS
  3848. SHN 21-1
  3849. MJN ATI5 IF AUTO MODE SET
  3850. LDD DC+4 CHECK FOR DRIVER REQUEST
  3851. NJP RWC IF DRIVER REQUEST
  3852. JMP MGR REENTER
  3853.  
  3854. ATI5 LPN 2 SET NORMAL/EXTENDED MODE BIT
  3855. RAD DP+3
  3856. RETURN RDM ENTER READ MODE
  3857. LOF SPACE 4,15
  3858. *** 0004 LOGOFF TERMINAL USER.
  3859. *
  3860. * THIS BYTE LOGS-OFF THE USER. IT MUST BE THE FIRST
  3861. * BYTE OF OUTPUT AND MUST BE FOLLOWED BY AN END-OF-LINE.
  3862. *
  3863. * CALLS ERQ, CKL, CLT.
  3864.  
  3865.  
  3866. LOF BSS 0 ENTRY
  3867. RJM CKL CHECK *LIST* STATUS
  3868. MJN LOF1 IF FILE BEING LISTED
  3869. LDD CH+1 CHECK LINE CHARACTER COUNT
  3870. NJN LOF1 IF NOT FIRST BYTE
  3871. LDN 1RD
  3872. RJM CLT CHECK FOR LINE TERMINATION
  3873. LDN 1 SET NORMAL LOGOFF
  3874. STD RQ+2
  3875. LDN /TLX/FLO FORCE LOGOUT
  3876. RJM ERQ
  3877. LJM EOB1
  3878.  
  3879. LOF1 LDN 1RD
  3880. JMP AWT13 REENTER WRITE MODE
  3881. TPI SPACE 4,15
  3882. *** 0005 INITIATE TRANSPARENT MODE INPUT.
  3883. *
  3884. * THIS CONTROL BYTE SETS TRANSPARENT INPUT FOR THE NEXT INPUT
  3885. * REQUEST. IT MUST APPEAR IN THE FIRST BYTE OF A WORD
  3886. * AND BE FOLLOWED BY AN END-OF-LINE.
  3887. *
  3888. * TRANSPARENT INPUT ALLOWS ALL CHARACTERS TO BE TRANSMITTED
  3889. * TO THE CPU PROGRAM.
  3890. *
  3891. * CALLS CKL, CLT.
  3892.  
  3893.  
  3894. TPI BSS 0 ENTRY
  3895. RJM CKL CHECK *LIST* STATUS
  3896. MJN TPI1 IF FILE BEING LISTED
  3897. LDD DP+2 CHECK BYTE
  3898. LPN 17
  3899. LMN 2
  3900. NJN TPI1 IF NOT FIRST BYTE
  3901. LDN 1RE
  3902. RJM CLT CHECK FOR LINE TERMINATION
  3903. LDD DP+3 SET TRANSPARENT MODE
  3904. SCN 14
  3905. LMN 4
  3906. STD DP+3
  3907. JMP EOB1 TERMINATE OUTPUT BLOCK
  3908.  
  3909. TPI1 LDN 1RE
  3910. JMP AWT13 REENTER WRITE MODE
  3911. BNI SPACE 4,25
  3912. *** 0006 INITIATE BINARY MODE INPUT.
  3913. *
  3914. * THIS CONTROL BYTE SETS BINARY INPUT FOR THE NEXT INPUT
  3915. * REQUEST. THE CONTROL BYTE MUST BE THE FIRST BYTE OF A WORD.
  3916. * THE NEXT 2 BYTES ARE THE TERMINATION CONDITIONS AS FOLLOWS -
  3917. *
  3918. * THE FIRST BYTE (BYTE 1) IS THE MAXIMUM NUMBER OF CHARACTERS
  3919. * TO BE RECEIVED BEFORE THE INPUT IS TERMINATED. IF THE
  3920. * VALUE IS 0, 1 IS ASSUMED.
  3921. *
  3922. * THE SECOND CONTROL BYTE (BYTE 2) IS A TERMINATION CODE.
  3923. * WHEN A CHARACTER IS RECEIVED FROM THE TERMINAL WHICH
  3924. * MATCHES THE BOTTOM 8 BITS OF THIS BYTE, THE INPUT OPERATION
  3925. * IS TERMINATED. IF BIT 13 OF THIS BYTE IS SET, NO TERMINATION
  3926. * CHARACTER IS ASSUMED.
  3927. *
  3928. * EXIT (CH) = TERMINATION CHARACTER.
  3929. * (CH+1) = INPUT LINE CHARACTER COUNT.
  3930. *
  3931. * CALLS CKL, SWA.
  3932.  
  3933.  
  3934. BNI5 LDN 1RF
  3935. JMP AWT13 CONTINUE WRITE MODE
  3936.  
  3937. * BNI - ENTRY.
  3938.  
  3939. BNI BSS 0 ENTRY
  3940. RJM CKL CHECK *LIST* STATUS
  3941. MJN BNI5 IF FILE BEING LISTED
  3942. LDD DP+3 CLEAR BINARY MODE
  3943. SCN 10
  3944. STD DP+3
  3945. LDD CH+1 CHECK CHARACTER COUNT
  3946. NJN BNI5 IF NOT FIRST BYTE
  3947. RJM SWA SET WORD ADDRESS
  3948. CRD CM READ DATA WORD
  3949. LDD CM+3 CHECK FOR TERMINATION
  3950. ADD CM+4
  3951. NJN BNI5 IF NOT TERMINATED
  3952. LDD CM+1 SET CHARACTER COUNT
  3953. NJN BNI2
  3954. BNI1 LDN 1
  3955. BNI2 STD CH+1
  3956. ADC -VXLL-1
  3957. MJN BNI3 IF NOT MORE THAN INTERACTIVE MAXIMUM
  3958. LDD DC CHECK TERMINAL STATUS
  3959. SHN 21-6
  3960. MJN BNI1 IF *READ DATA* SET
  3961. BNI3 LDD CM+2 SET TERMINATION CHARACTER
  3962. STD CH
  3963. LDN 2 SET CHARACTER 2
  3964. STD DP+2
  3965. LDN 10 SET BINARY MODE
  3966. RAD DP+3
  3967. RJM SWA WRITE FIRST WORD
  3968. CWM BNIA,ON
  3969. LDN 0 CLEAR START OF *F7* SEQUENCE
  3970. STD F7
  3971. JMP RWC ENTER READ/WRITE CONTROL
  3972.  
  3973.  
  3974. BNIA DATA 0007,0,0,0,0 BINARY MODE HEADER
  3975. BNO SPACE 4,15
  3976. *** 0007 INITIATE BINARY MODE OUTPUT.
  3977. *
  3978. * THIS CONTROL BYTE INITIATES BINARY OUTPUT. IT MUST
  3979. * APPEAR IN THE FIRST BYTE OF OUTPUT.
  3980. *
  3981. * EXIT TO *BWT* IF VALID CONTROL BYTE.
  3982. * TO *AWT13* IF INVALID CONTROL BYTE.
  3983.  
  3984.  
  3985. BNO BSS 0 ENTRY
  3986. LDD DP+3 CLEAR BINARY MODE
  3987. SCN 10
  3988. STD DP+3
  3989. LDD CH+1 CHECK CHARACTER COUNT
  3990. NJN BNO1 IF NOT FIRST BYTE
  3991. LDN 10 SET BINARY TRANSMISSION
  3992. RAD DP+3
  3993. LJM BWT ENTER BINARY WRITE MODE
  3994.  
  3995. BNO1 LDN 1RG
  3996. JMP AWT13 CONTINUE WRITE MODE
  3997. BEO SPACE 4,15
  3998. *** 0011 BEGIN EXENDED OUTPUT.
  3999. *
  4000. * THIS CONTROL BYTE INITIATES EXTENDED MODE OUTPUT.
  4001. * IT MUST APPEAR IN THE FIRST BYTE OF THE OUTPUT LINE.
  4002. *
  4003. * EXIT TO *AWT* TO INITIATE EXTENDED OUTPUT.
  4004. * TO *AWT13* IF INVALID CONTROL BYTE.
  4005. *
  4006. * CALLS SEM.
  4007.  
  4008.  
  4009. BEO BSS 0 ENTRY
  4010. LDD CH+1
  4011. NJN BEO1 IF NOT FIRST BYTE
  4012. RJM SEM SET EXTENDED MODE
  4013. JMP AWT INITIATE OUTPUT
  4014.  
  4015. BEO1 LDN 1RI
  4016. JMP AWT13 CONTINUE WRITE MODE
  4017. EOS SPACE 4,15
  4018. *** 0013 END OF STRING.
  4019. *
  4020. * THIS BYTE ACTS AS A LOGICAL LINE TERMINATOR WHEN
  4021. * FOLLOWED BY AN END OF LINE. THE TERMINAL CARRIAGE
  4022. * WILL NOT BE REPOSITIONED AND OUTPUT WILL CONTINUE
  4023. * WITH THE NEXT LINE OF DATA.
  4024. *
  4025. * EXIT (CH+1) = 0.
  4026. * (CH+2) = 0.
  4027. * TO *SOC* IF END OF CURRENT POT -
  4028. * (A) = *.ECP*.
  4029. * TO *AWT* TO CONTINUE WRITE IF NOT END OF POT.
  4030. *
  4031. * CALLS CEM, CLT, ROC.
  4032.  
  4033.  
  4034. EOS BSS 0 ENTRY
  4035. LDN 1RK CHECK FOR LINE TERMINATION
  4036. RJM CLT
  4037. STD CH+1 CLEAR CHARACTER COUNT
  4038. STD CH+2 CLEAR CONTROL BYTE
  4039. RJM ROC FORCE LINE SKIP IF IN BYTE 4
  4040. LMC .ECP CHECK IF END OF POT REACHED
  4041. NJN EOS1 IF NOT END OF CURRENT POT
  4042. LMC .ECP
  4043. LJM SOC SET OUTPUT CONTROL
  4044.  
  4045. EOS1 LDD DP+2 REPOSITION TO READ NEXT WORD
  4046. SCN 17
  4047. LMN 12
  4048. STD DP+2
  4049. RJM CEM CLEAR EXTENDED MODE
  4050. JMP AWT CONTINUE OUTPUT
  4051. IEB SPACE 4,20
  4052. *** 0014 INTERNAL END OF BLOCK.
  4053. *
  4054. * THIS CONTROL BYTE IS USED INTERNALLY BY *1TO* ONLY TO
  4055. * TERMINATE OUTPUT BEFORE THE END OF POT IS REACHED. THE
  4056. * REMAINDER OF THE POT IS DISCARDED, THE TERMINAL IS NOT
  4057. * REPOSITIONED TO THE BEGINNING OF THE NEXT LINE, AND ANY
  4058. * SPECIAL MODES (E.G., EXTENDED OR BINARY TRANSMISSION)
  4059. * WILL REMAIN SET. THIS BYTE MUST APPEAR AS THE FIRST BYTE
  4060. * OF A WORD, AND MUST BE FOLLOWED BY AN END OF LINE.
  4061. *
  4062. * EXIT TO *RWC1* IF VALID CONTROL BYTE.
  4063. * TO *AWT13* IF INVALID CONTROL BYTE.
  4064. *
  4065. * CALLS CLT.
  4066. *
  4067. * MACROS RETURN.
  4068.  
  4069.  
  4070. IEB BSS 0 ENTRY
  4071. LDD DP+2 CHECK CHARACTER POSITION
  4072. LPN 17
  4073. LMN 2
  4074. NJN IEB1 IF NOT FIRST BYTE IN WORD
  4075. LDN 1RL CHECK FOR LINE TERMINATION
  4076. RJM CLT
  4077. STD DP+2 CLEAR CHARACTER POSITION
  4078. RETURN /CTL/RWC1 ENTER READ/WRITE CONTROL
  4079.  
  4080. IEB1 LDN 1RL
  4081. JMP AWT13 REENTER WRITE MODE
  4082. ETI SPACE 4,15
  4083. *** 0015 EXECUTIVE AUTO INPUT.
  4084. *
  4085. * THIS CONTROL BYTE IS INTENDED TO BE USED BY *RDF* FOR
  4086. * AUTO MODE INPUT. THE WORD IN WHICH THE CONTROL BYTE OCCURS
  4087. * IS USED AS THE FIRST N CHARACTERS OF THE INPUT LINE.
  4088. * N MUST BE EVEN AND LESS THAN 9.
  4089. *
  4090. * THIS CONTROL BYTE MUST BE FOLLOWED BY AN END-OF-LINE.
  4091. *
  4092. * EXIT TO *ATI1* TO INITIATE AUTO MODE INPUT -
  4093. * (A) = 1RM.
  4094. * (RTIA) = *RSW*.
  4095. * (RTIB) = *LDNI+1RM*.
  4096.  
  4097.  
  4098. ETI BSS 0 ENTRY
  4099. LDC LDNI+1RM SET CONTROL TO REENTER WRITE MODE
  4100. STM ATIB
  4101. LDC RSW SET UP CALL TO SUBROUTINE RSW
  4102. STM ATIA
  4103. LDN 1RM
  4104. LJM ATI1 AUTO MODE INPUT PROCESSING
  4105. TITLE WRITE MODE - SPECIAL CHARACTER PROCESSORS.
  4106. ACR SPACE 4,15
  4107. ** ACR - PROCESS *CARRIAGE RETURN* OUTPUT.
  4108. *
  4109. * ISSUES *CARRIAGE RETURN* TO THE TERMINAL, FOLLOWED
  4110. * BY *NUL* CHARACTERS IF IN KEYBOARD MODE OR BY
  4111. * *DEL* CHARACTERS IF IN TAPE MODE.
  4112. *
  4113. * EXIT TO *AWT* TO CONTINUE WRITE OPERATION.
  4114. *
  4115. * USES T7.
  4116. *
  4117. * CALLS DDC, SRC.
  4118. *
  4119. * MACROS RETURN.
  4120.  
  4121.  
  4122. ACR BSS 0 ENTRY
  4123. LDC .CCR ISSUE *CR* TO OUTPUT
  4124. LMD PY TOGGLE ODD PARITY
  4125. STD DO
  4126. RETURN * REENTER
  4127. LDN 3 SET DEFAULT DELAY COUNT
  4128. RJM DDC DETERMINE TERMINAL DELAY COUNT
  4129. STD T7
  4130. LDD DC CHECK TERMINAL STATUS
  4131. LPN 1
  4132. ZJN ACR1 IF NOT IN *TAPE* MODE
  4133. LDK .CDEL SET ASCII *DEL* CODE
  4134. UJN ACR2
  4135.  
  4136. ACR1 LDK .CNUL SET ASCII *NUL* CODE
  4137. ACR2 SHN 6 ADD DELAY COUNT
  4138. ADD T7
  4139. SHN 14
  4140. LMD PY TOGGLE ODD PARITY
  4141. RJM SRC SEND REPEATED CHARACTERS
  4142. JMP AWT REENTER WRITE MODE
  4143. ANL SPACE 4,15
  4144. ** ANL - PROCESS *NEW LINE* OUTPUT.
  4145. *
  4146. * ISSUES *CARRIAGE RETURN* FOLLOWED BY *LINE FEED*
  4147. * TO THE TERMINAL, THEN FOLLOWED BY *NULL* CHARACTERS.
  4148. *
  4149. * EXIT TO *ISN* TO ISSUE *NULL* CHARACTERS.
  4150. *
  4151. * MACROS RETURN.
  4152.  
  4153.  
  4154. ANL BSS 0 ENTRY
  4155. LDC .CCR ISSUE *CR* TO OUTPUT
  4156. LMD PY TOGGLE ODD PARITY
  4157. STD DO
  4158. RETURN * REENTER
  4159. LDC .CLF ISSUE *LF* TO OUTPUT
  4160. LMD PY TOGGLE ODD PARITY
  4161. STD DO
  4162. RETURN * REENTER
  4163. LDN 2 SET DEFAULT REPEAT COUNT
  4164. JMP ISN ISSUE *NUL*S
  4165. WTM TITLE WRITE MODE - SUBROUTINES.
  4166. CKL SPACE 4,15
  4167. ** CKL - CHECK LIST STATUS.
  4168. *
  4169. * EXIT (A) = NEGATIVE IF FILE LIST IN PROGRESS.
  4170. *
  4171. * USES T1 - T5.
  4172. *
  4173. * CALLS STA.
  4174.  
  4175.  
  4176. CKL SUBR ENTRY/EXIT
  4177. RJM STA SET FWA OF TERMINAL TABLE
  4178. ADN VROT READ *VROT*
  4179. CRD T1
  4180. LDD T1+4 LOAD STATUS BYTE
  4181. SHN 21-6 SHIFT *LIST* STATUS BIT
  4182. UJN CKLX RETURN
  4183. CLT SPACE 4,25
  4184. ** CLT - CHECK FOR LINE TERMINATION.
  4185. *
  4186. * CHECKS CURRENT OUTPUT FOR LINE TERMINATION.
  4187. *
  4188. * ENTRY (A) = NEXT OUTPUT CHARACTER IF NOT END OF LINE.
  4189. *
  4190. * EXIT TO CALLING ROUTINE IF LINE TERMINATED.
  4191. * TO WRITE MODE IF LINE NOT TERMINATED.
  4192. * LINE TERMINATION CAN BE EXPLICIT IN THE CASE OF
  4193. * A VALID END OF LINE FOLLOWING THE CURRENT LINE
  4194. * POSITION, OR IT MAY BE IMPLICIT IN THE CASE OF THERE
  4195. * BEING NO FURTHER DATA, EITHER ASSIGNED OR ON
  4196. * MASS STORAGE.
  4197. * IN THE EVENT THAT NO DETERMINATION CAN BE MADE
  4198. * BECAUSE THE DRIVER IS AT THE END OF THE CURRENT
  4199. * POT STRING BUT OUTPUT IS WAITING ON MASS STORAGE,
  4200. * OR IF THE JOB IS CURRENTLY IN EXECUTION,
  4201. * EXIT IS TO READ/WRITE CONTROL WITH SUSPENDED CONTROL
  4202. * STATUS SET IN (CH+2).
  4203. *
  4204. * USES T0 - T5, CM, CM+1, (MA)-(MA)+5.
  4205. *
  4206. * CALLS RLT, ROC, STA.
  4207. *
  4208. * MACROS RETURN.
  4209.  
  4210.  
  4211. CLT SUBR ENTRY/EXIT
  4212. STD CM SAVE CALLING CODE
  4213. LDD MA SAVE POINTER WORD
  4214. CWD DP
  4215. RJM ROC READ NEXT CHARACTER
  4216. LMC .ECP
  4217. ZJN CLT3 IF END OF CURRENT POT
  4218. LMC .ECP
  4219.  
  4220. * CHECK NEXT OUTPUT BYTE FOR END OF LINE.
  4221.  
  4222. CLT1 SHN 1 CHECK FOR END OF LINE
  4223. LMN 1
  4224. STD CM+1 STORE FLAG (ZERO IF END OF LINE)
  4225. CLT2 LDD MA RESTORE POINTER WORD
  4226. CRD DP
  4227. LDD CM+1 CHECK FLAG
  4228. ZJN CLTX IF END OF LINE
  4229. LJM CLT6
  4230.  
  4231. * ADVANCE TO NEXT POT.
  4232.  
  4233. CLT3 STD DP+2 CLEAR POINTERS
  4234. STD CM+1
  4235. RJM RLT CHECK POT LINK
  4236. ZJN CLT4 IF POT NOT LINKED
  4237. STD DP+1 SET NEXT POT
  4238. RJM ROC READ NEXT CHARACTER
  4239. UJN CLT1
  4240.  
  4241. * CHECK FOR ADDITIONAL OUTPUT.
  4242.  
  4243. CLT4 LDD DC CHECK FOR DRIVER REQUEST
  4244. SHN 21-13
  4245. MJN CLT2 IF DRIVER REQUEST
  4246. LDD DC+4
  4247. NJN CLT5 IF OUTPUT ASSIGNED
  4248. RJM STA SET FWA OF TERMINAL TABLE
  4249. ADN VROT READ *VROT*
  4250. CRD T0
  4251. LDD T0+4 CHECK JOB STATUS
  4252. LPN 21
  4253. LMN 1
  4254. ZJN CLT2 IF NOT EXECUTING AND NO OUTPUT
  4255.  
  4256. * SUSPEND CONTROL UNTIL FURTHER OUTPUT IS ASSIGNED.
  4257.  
  4258. CLT5 LDD MA RESET POINTER WORD
  4259. CRD DP
  4260. LDD CM SET SUSPENDED CONTROL
  4261. ADC 600
  4262. STD CH+2
  4263. RETURN /CTL/RWC1 ENTER READ/WRITE CONTROL
  4264.  
  4265. * REENTER WRITE MODE IF NO TERMINATOR.
  4266.  
  4267. CLT6 LDD DP+3 CHECK *BINARY* MODE
  4268. SHN 21-3
  4269. MJN CLT7 IF SET
  4270. LDD CM SET OUTPUT CHARACTER
  4271. LJM AWT13 REENTER WRITE MODE
  4272.  
  4273. CLT7 SOD DP+2 BACK UP CHARACTER
  4274. LJM BWT2 EXIT BINARY MODE
  4275. MDS SPACE 4,15
  4276. ** MDS - MOVE DATA WORD TO START OF POT.
  4277. *
  4278. * MOVE THE WORD CONTAINING THE AUTO INPUT CONTROL BYTE
  4279. * TO THE FIRST WORD OF THE POT FOR SUBSEQUENT INPUT.
  4280. *
  4281. * ENTRY (TO - T4) = DATA WORD.
  4282. *
  4283. * CALLS SWA.
  4284.  
  4285.  
  4286. MDS SUBR ENTRY/EXIT
  4287. LDD DP+2 CLEAR POT WORD POINTER
  4288. LPC 0617
  4289. STD DP+2
  4290. RJM SWA SET WORD ADDRESS
  4291. CWD T0 WRITE WORD TO POT
  4292. UJN MDSX RETURN
  4293. ROC SPACE 4,20
  4294. ** ROC - READ OUTPUT CHARACTER.
  4295. *
  4296. * EXIT (T5) = OUTPUT BYTE ADDRESS.
  4297. * (T7) = LOWER 12 BITS OF (A).
  4298. * (A) = POSITIVE -
  4299. * (A) = OUTPUT CHARACTER.
  4300. * = NEGATIVE -
  4301. * (A) = 400000B + CONTROL BYTE VALUE, OR,
  4302. * 770001 (END OF POT).
  4303. *
  4304. * USES DP+2, T7, T0 - T5.
  4305. *
  4306. * CALLS SWA.
  4307. *
  4308. * MACROS ADCBM.
  4309.  
  4310.  
  4311. * PROCESS ODD (LOWER) CHARACTER.
  4312.  
  4313. ROC9 LPN 7 SET BYTE NUMBER
  4314. STD T5
  4315. AOD DP+2 ADVANCE CHARACTER NUMBER
  4316. RJM SWA READ DATA WORD
  4317. CRD T0
  4318. LDI T5 EXTRACT LOWER CHARACTER
  4319. LPN 77
  4320. ROC10 STD T7 SET CHARACTER
  4321. * UJN ROCX
  4322.  
  4323.  
  4324. * ROC - ENTRY.
  4325.  
  4326. ROC SUBR ENTRY/EXIT
  4327. LDD DP+1 CHECK CURRENT POT POINTER
  4328. SHN -6
  4329. LMN 77
  4330. NJN ROC1 IF NOT MESSAGE PSEUDO-POT POINTER
  4331. LJM TTM1 GET MESSAGE CHARACTER
  4332.  
  4333. ROC1 LDD DP+2 CHECK CHARACTER NUMBER
  4334. SHN 21
  4335. MJN ROC9 IF ODD CHARACTER
  4336.  
  4337. * PROCESS EVEN (UPPER) CHARACTER.
  4338.  
  4339. LPN 77 CHECK WORD STATUS
  4340. LMN 75
  4341. NJN ROC2 IF NOT END OF WORD AND END OF POT
  4342. LDC .ECP
  4343. UJN ROCX
  4344.  
  4345. ROC2 LPN 7
  4346. NJN ROC3 IF NOT END OF WORD
  4347. STD T5 SET BYTE 0
  4348. LDN 21-12 ADVANCE WORD AND SET ODD CHARACTER
  4349. RAD DP+2
  4350. UJN ROC4
  4351.  
  4352. ROC3 LMN 5 SET BYTE NUMBER
  4353. STD T5
  4354. AOD DP+2 ADVANCE CHARACTER
  4355. ROC4 RJM SWA SET WORD ADDRESS
  4356. CRD T0 READ WORD
  4357. LDI T5 EXTRACT UPPER CHARACTER
  4358. SHN -6
  4359. NJN ROC6 IF NOT CONTROL BYTE
  4360. LDI T5
  4361. ZJN ROC7 IF ZERO BYTE
  4362. SBN TSOCL
  4363. PJN ROC8 IF NOT CONTROL BYTE
  4364. ADN TSOCL
  4365. ROC5 LMC 400000
  4366. ROC6 LJM ROC10
  4367.  
  4368. * CHECK FOR END OF LINE.
  4369.  
  4370. ROC7 AOD T5 ADVANCE BYTE POINTER
  4371. LMN 5
  4372. ZJN ROC5 IF END OF WORD
  4373. LDI T5
  4374. ZJN ROC7 IF NO DATA IN NEXT BYTE
  4375. ROC8 LDN 0 ISSUE COLON
  4376. UJN ROC6
  4377. RSW SPACE 4,15
  4378. ** RSW - RESTORE WORD.
  4379. *
  4380. * THE WORD IN WHICH THE CONTROL BYTE 0015 OCCURS IS USED
  4381. * AS THE FIRST N CHARACTERS OF THE INPUT LINE.
  4382. *
  4383. * ENTRY (T0 - T4) = DATA WORD.
  4384. *
  4385. * CALLS SWA.
  4386.  
  4387.  
  4388. RSW SUBR ENTRY/EXIT
  4389. RJM SWA SET WORD ADDRESS
  4390. CWD T0 WRITE WORD TO POT
  4391. UJN RSWX RETURN
  4392. SRC SPACE 4,15
  4393. ** SRC - SEND REPEATED CHARACTER.
  4394. *
  4395. * ENTRY (A) = 6/REPEAT COUNT, 12/CHARACTER.
  4396. *
  4397. * EXIT CHARACTER TRANSMITTED (A) TIMES.
  4398. *
  4399. * USES (CH) = RETURN ADDRESS.
  4400. * (CH+1) = REPEAT COUNT.
  4401. *
  4402. * MACROS RETURN.
  4403.  
  4404.  
  4405. SRC SUBR ENTRY/EXIT
  4406. LPC -4000 SET OUTPUT CHARACTER BIT
  4407. LMC 4000
  4408. STM RDAT SAVE CHARACTER
  4409. SHN -14 SET REPEAT COUNT
  4410. STD CH+1
  4411. ZJN SRCX IF ZERO
  4412. LDM SRC SET RETURN ADDRESS
  4413. STD CH
  4414. SRC1 LDM RDAT TRANSMIT OUTPUT
  4415. STD DO
  4416. RETURN * REENTER
  4417. SOD CH+1 DECREMENT REPEAT COUNT
  4418. NJN SRC1 IF NOT EXHAUSTED
  4419. LJM 0,CH REENTER CALLING ROUTINE
  4420. TOC SPACE 4,15
  4421. ** TOC - TRANSLATE ASCII OUTPUT CHARACTER.
  4422. *
  4423. * TRANSLATES OUTPUT DATA CHARACTER AND SETS THE
  4424. * PROPER PARITY (EVEN OR ODD) ON THE TRANSLATED
  4425. * OUTPUT CHARACTER.
  4426. *
  4427. * ENTRY (T7) = CHARACTER TO BE TRANSLATED.
  4428. *
  4429. * EXIT (A) = 4000B+CHARACTER IF SPECIAL PROCESOR
  4430. * NOT DEFINED.
  4431. * = SPECIAL PROCESSOR INDEX IF DEFINED.
  4432. * (T7) = (A).
  4433.  
  4434.  
  4435. TOC SUBR ENTRY/EXIT
  4436. LDM TOTP,T7 READ TRANSLATION TABLE ENTRY
  4437. STD T7
  4438. SHN 21-13 CHECK FOR VALID CHARACTER
  4439. PJN TOC1 IF IF SPECIAL PROCESSOR
  4440. LDD T7 TOGGLE PARITY
  4441. LMD PY TOGGLE ODD PARITY
  4442. STD T7
  4443. TOC1 LDD T7 RETURN (A) = TRANSLATION
  4444. UJN TOCX RETURN
  4445. SPACE 4,10
  4446. QUAL
  4447.  
  4448. WTM EQU /WTM/WTM
  4449. TTM EQU /WTM/TTM
  4450. DELM EQU /WTM/DELM
  4451. LOFM EQU /WTM/LOFM
  4452. MBSY EQU /WTM/MBSY
  4453. RDYM EQU /WTM/RDYM
  4454. RILM EQU /WTM/RILM
  4455. ITM TITLE GENERAL SUBROUTINES.
  4456. AVT SPACE 4,15
  4457. ** AVT - ADVANCE TIMERS.
  4458. *
  4459. * EXIT (HS) = NONZERO IF 1/2 SECOND ELAPSED.
  4460. * = CLEARED BETWEEN 1/2 SECOND CYCLES.
  4461. * (IT) = DECREMENTED BY ONE EACH 1/2
  4462. * SECOND IF NONZERO.
  4463. *
  4464. * USES CM - CM+4.
  4465. *
  4466. * MACROS DELAY.
  4467.  
  4468.  
  4469. AVT SUBR ENTRY/EXIT
  4470. AVT1 LDK RTCL READ REAL-TIME CLOCK
  4471. CRD CM
  4472. LDD CM+4 CHECK CYCLE TIME
  4473. SBM AVTA
  4474. PJN AVT2 IF NO OVERFLOW
  4475. ADC 10000
  4476. AVT2 SBK MNCT
  4477. PJN AVT3 IF MINIMUM CYCLE TIME ELAPSED
  4478. DELAY
  4479. UJN AVT1 LOOP
  4480.  
  4481. AVT3 LDD CM+4 UPDATE MSECS BITS 11-0
  4482. STM AVTA
  4483. SHN -11 CHECK INTERVAL
  4484. SHN 17
  4485. LMD CM+3
  4486. SHN 3
  4487. LPC 7777
  4488. SBM AVTB CHECK MSECS BITS 20-9
  4489. ZJN AVT4 IF NO CHANGE
  4490. RAM AVTB UPDATE MSECS BITS 20-9
  4491. LDN 1
  4492. AVT4 STD HS SET/CLEAR HALF-SECOND FLAG
  4493. ZJN AVT5 IF NOT 1/2 SECOND INTERVAL
  4494. LDD IT CHECK 1/2 SECOND TIMER
  4495. ZJN AVT5 IF ZERO
  4496. SOD IT DECREMENT TIMER
  4497. AVT5 UJP AVTX RETURN
  4498.  
  4499.  
  4500. AVTA CON 0 PREVIOUS REAL-TIME MSECS (BITS 11-0)
  4501. AVTB CON 0 PREVIOUS REAL-TIME MSECS (BITS 20-9)
  4502. BUP SPACE 4,15
  4503. ** BUP - BACK UP POINTERS.
  4504. *
  4505. * BACKS UP THE CURRENT CHARACTER, CURRENT WORD,
  4506. * AND CURRENT POT POINTERS TO THE IMMEDIATELY
  4507. * PRECEDING CHARACTER POSITION.
  4508. *
  4509. * EXIT (DP+1) = NEW CURRENT POT.
  4510. * (DP+2) = NEW CURRENT WORD AND CHARACTER.
  4511. *
  4512. * USES T5, T6.
  4513. *
  4514. * CALLS RLT.
  4515.  
  4516.  
  4517. BUP5 SOD DP+2 DECREMENT CHARACTER NUMBER
  4518.  
  4519. BUP SUBR ENTRY/EXIT
  4520. LDD DP+2 CHECK CHARACTER NUMBER
  4521. LPN 17
  4522. NJN BUP5 IF NOT FIRST CHARACTER OF WORD
  4523. LDD DP+1 CHECK CURRENT POT
  4524. LMD DP
  4525. NJN BUP2 IF NOT FIRST POT
  4526. LDD DP+2 CHECK WORD NUMBER
  4527. SHN 5
  4528. LMD DP+2
  4529. LPC 7000
  4530. ZJN BUPX IF FIRST WORD
  4531. BUP1 LCN 20-11 DECREMENT WORD NUMBER, SET LAST CHARACTER
  4532. RAD DP+2
  4533. UJN BUPX
  4534.  
  4535. BUP2 LDD DP+2 CHECK CURRENT WORD
  4536. LPC 160
  4537. NJN BUP1 IF NOT FIRST WORD OF POT
  4538. LDD DP+1 SAVE CURRENT POT
  4539. STD T6
  4540. LDD DP SET FIRST POT
  4541. BUP3 STD DP+1
  4542. RJM RLT READ LINK TABLE
  4543. LMD T6
  4544. ZJN BUP4 IF CURRENT POT REACHED
  4545. LMD T6 SET NEXT POT
  4546. UJN BUP3 LOOP
  4547.  
  4548. BUP4 LDD DP+2 SET LAST WORD, LAST CHARACTER
  4549. LPC 7000
  4550. LMC 371 SET *POT REQUESTED*
  4551. STD DP+2
  4552. LJM BUPX RETURN
  4553. CCQ SPACE 4,15
  4554. ** CCQ - CHECK CIRCULAR REQUEST QUEUE.
  4555. *
  4556. * CHECKS THE DRIVER CIRCULAR REQUEST QUEUE FOR
  4557. * AMOUNT OF FREE SPACE REMAINING AND RECALLS THE
  4558. * CPU IF THE QUEUE IS MORE THAN HALF FULL.
  4559. *
  4560. * USES CM - CM+4.
  4561. *
  4562. * MACROS LDCDQ, MONITOR.
  4563.  
  4564.  
  4565. CCQ SUBR ENTRY/EXIT
  4566. LDCDQ 3 READ CIRCULAR QUEUE *OUT* POINTER
  4567. CRD CM
  4568. LDD IN+3 CHECK *IN* - *OUT*
  4569. SBD CM+3
  4570. SHN 14
  4571. ADD IN+4
  4572. SBD CM+4
  4573. PJN CCQ1 IF *IN* .GE. *OUT*
  4574. ADK VDSL
  4575. CCQ1 SBK VDSL/2
  4576. MJN CCQX IF QUEUE .LE. HALF FULL
  4577. MONITOR RCLM RECALL CPU
  4578. UJN CCQX RETURN
  4579. CEF SPACE 4,15
  4580. ** CEF - CHECK ERROR FLAG.
  4581. *
  4582. * CHECKS CPU ERROR FLAG. IF SET, DROPS EQUIPMENT
  4583. * AND CHANNEL AND DROPS THE PPU.
  4584. *
  4585. * EXIT TO *DPP* IF ERROR FLAG SET.
  4586. *
  4587. * USES CM - CM+4.
  4588.  
  4589.  
  4590. CEF SUBR ENTRY/EXIT
  4591. LDD CP READ CP STATUS WORD
  4592. ADK STSW
  4593. CRD CM
  4594. LDD CM+1 CHECK ERROR FLAG
  4595. ZJN CEFX IF NO ERROR FLAG
  4596. LJM DPP DROP PPU
  4597. CEM SPACE 4,15
  4598. ** CEM - CLEAR EXTENDED TRANSMISSION MODE.
  4599. *
  4600. * SET/RESET EXTENDED TRANSMISSION MODE DEPENDING
  4601. * UPON MODE IN *VDCT*.
  4602. *
  4603. * EXIT (A) = (DP+3).
  4604. * (DP+3) = EXTENDED MODE CLEARED OR SET.
  4605.  
  4606.  
  4607. CEM SUBR ENTRY/EXIT
  4608. LDD DP+3 CLEAR EXTENDED MODE
  4609. SCN 2
  4610. STD DP+3
  4611. LDD DC GET TERMINAL STATUS
  4612. SHN 1-3 SET EXTENDED/NORMAL MODE
  4613. LPN 2
  4614. RAD DP+3
  4615. UJN CEMX RETURN
  4616. CIT SPACE 4,15
  4617. ** CIT - CHECK FOR INACTIVITY TIME-OUT.
  4618. *
  4619. * ENTRY (IR+3) = REAL-TIME CLOCK (SECONDS) AT START
  4620. * OF DRIVER INACTIVITY TIME-OUT.
  4621. *
  4622. * EXIT (A) = NONZERO IF DRIVER TIMED-OUT.
  4623. * = ZERO IF NOT TIMED-OUT.
  4624. *
  4625. * USES CM - CM+4.
  4626.  
  4627.  
  4628. CIT SUBR ENTRY/EXIT
  4629. LDK SSTL READ SUBSYSTEM CONTROL WORD
  4630. CRD CM
  4631. LDD CM+3 CHECK *RDF* STATUS
  4632. SHN 21-10
  4633. PJN CIT2 IF *RDF* IN DEDICATED STATUS
  4634. LDK RTCL READ REAL-TIME CLOCK
  4635. CRD CM
  4636. LDD CM+1 CHECK ELAPSED TIME
  4637. SBD IR+3
  4638. PJN CIT1 IF NO ROLLOVER
  4639. ADC 10000
  4640. CIT1 SBK INATIO SUBTRACT TIME-OUT INTERVAL
  4641. MJN CIT2 IF INTERVAL NOT EXCEEDED
  4642. LDN 77 (A) STATUS = TIMED-OUT
  4643. UJN CITX RETURN
  4644.  
  4645. CIT2 LDN 0 (A) STATUS = NOT TIMED-OUT
  4646. UJN CITX RETURN
  4647. CMF SPACE 4,15
  4648. ** CMF - CHECK *RDF* STATUS.
  4649. *
  4650. * CHECKS TO SEE THAT *RDF* IS ENABLED. IF NOT,
  4651. * ISSUE ERROR LOG MESSAGE AND EXIT TO *ERR*.
  4652. *
  4653. * EXIT RETURN TO CALLER IF *RDF* ENABLED.
  4654. * TO *ERR* IF *RDF* DISABLED -
  4655. * ERROR LOG MESSAGE ISSUED.
  4656. * (A) = ADDRESS OF DAYFILE MESSAGE.
  4657. *
  4658. * USES T1, CM - CM+4.
  4659. *
  4660. * CALLS DFM.
  4661.  
  4662.  
  4663. CMF SUBR ENTRY/EXIT
  4664. LDK SSSL READ SUBSYSTEM STATUS
  4665. CRD CM
  4666. LDM CMFB+1 SET MASK
  4667. STM CMFC
  4668. LDM CMFB GET *SSSL* BYTE NUMBER
  4669. STD T1
  4670. LDM CM,T1 READ BYTE
  4671. LPC **
  4672. CMFC EQU *-1 (*RDF* MASK BIT)
  4673. ZJN CMFX IF *RDF* NOT DISABLED
  4674. LDN MTER * RDF TERMINATED.*
  4675. JMP IMT ISSUE MESSAGE AND TERMINATE
  4676.  
  4677. * CALCULATE *SSSL* BYTE AND MASK FOR *RDF*.
  4678.  
  4679. .1 SET MXSI-RDSI
  4680. .2 SET .1/12D
  4681. .3 SET 4-.2
  4682. .4 DECMIC .1-12D*.2
  4683. .5 SET 1S".4"
  4684.  
  4685. CMFB CON .3 *SSSL* BYTE NUMBER
  4686. CON .5 *SSSL* MASK
  4687. CUT SPACE 4,15
  4688. ** CUT - CLEAN UP TERMINAL TABLE.
  4689. *
  4690. * CLEARS ALL INFORMATION FROM THE TERMINAL TABLE OF THE
  4691. * LOGGED OUT USER, LEAVING VROT SET COMPLETE.
  4692. *
  4693. * EXIT TERMINAL TABLE WORDS ZEROED OUT. (VROT), BIT
  4694. * ZERO, SET.
  4695. *
  4696. * USES T0 - T5.
  4697. *
  4698. * CALLS STA.
  4699.  
  4700.  
  4701. CUT SUBR ENTRY/EXIT
  4702. LDN ZERL
  4703. CRD T0
  4704. LDN 0
  4705. STD T5
  4706. CUT1 RJM STA SET FWA OF TERMINAL TABLE
  4707. ADD T5
  4708. CWD T0 CLEAR OUT TERMINAL TABLE
  4709. AOD T5
  4710. SBN VTTL
  4711. NJN CUT1 IF MORE WORDS TO CLEAR
  4712. AOD T4 SET COMPLETE BIT IN VROT
  4713. RJM STA SET FWA OF TERMINAL TABLE
  4714. ADN VROT WRITE *VROT*
  4715. CWD T0
  4716. UJN CUTX EXIT
  4717. CWA SPACE 4,15
  4718. ** CWA - SET DRIVER CONTROL WORD ADDRESS.
  4719. *
  4720. * RETURNS THE ABSOLUTE CM ADDRESS OF THE DRIVER CONTROL
  4721. * WORD WITHIN *RDF* FIELD LENGTH.
  4722. *
  4723. * ENTRY (IR+4) = DRIVER CONTROL WORD POINTER.
  4724. *
  4725. * EXIT (A) = CM ADDRESS OF DRIVER CONTROL WORD.
  4726.  
  4727.  
  4728. CWA SUBR ENTRY/EXIT
  4729. LDD RA SET CM ADDRESS
  4730. SHN 6
  4731. ADD IR+4 ADD DRIVER CONTROL WORD POINTER
  4732. UJN CWAX RETURN
  4733. DCE SPACE 4,15
  4734. ** DCE - DROP CHANNEL AND EQUIPMENT.
  4735. *
  4736. * ENTRY (EQ) = BIT 2**9 SET IF EQUIPMENT RESERVED.
  4737. *
  4738. * EXIT CHANNEL AND EQUIPMENT DROPPED.
  4739. * (EQ) = BIT 2**9 RESET.
  4740. *
  4741. * USES CM - CM+4.
  4742. *
  4743. * CALLS CLR, RTM.
  4744. *
  4745. * MACROS DCHAN, MONITOR.
  4746.  
  4747.  
  4748. DCE SUBR ENTRY/EXIT
  4749. LDD EQ CHECK EQUIPMENT
  4750. SBD TH
  4751. MJN DCEX IF NOT RESERVED
  4752. STD EQ CLEAR BIT 2**9
  4753. STD CM+1 DROP EQUIPMENT
  4754. MONITOR DEQM
  4755. LDN MX DROP MULTIPLEXER CHANNEL
  4756. DCHAN
  4757. RJM RTM RELEASE TERMINAL ON MULTIPLEXER
  4758. RJM CLR CLEAR LAST REQUEST
  4759. UJN DCEX RETURN
  4760. DDC SPACE 4,20
  4761. ** DDC - DETERMINE DELAY COUNT.
  4762. *
  4763. * DETERMINES THE TERMINAL NULL CHARACTER (*NUL* OR
  4764. * *DEL*) COUNT BASED UPON THE DELAY COUNT IN THE
  4765. * USER'S TERMINAL TABLE AND UPON THE DEFAULT COUNT
  4766. * PRESENTED TO THE ROUTINE. IF THERE IS NO COUNT
  4767. * DEFINED IN THE TERMINAL TABLE, THE DEFAULT COUNT
  4768. * WILL BE USED.
  4769. *
  4770. * ENTRY (A) = DEFAULT COUNT.
  4771. *
  4772. * EXIT (A) = DELAY COUNT.
  4773.  
  4774.  
  4775. DDC SUBR ENTRY/EXIT
  4776. STD T0 SAVE DEFAULT COUNT
  4777. LDD DC+1 GET USER DELAY COUNT
  4778. SHN -3
  4779. LPN 37
  4780. ZJN DDC1 IF NO USER DELAY COUNT DEFINED
  4781. STD T0
  4782. DDC1 LDD T0 GET DELAY COUNT
  4783. UJN DDCX RETURN
  4784. DPP SPACE 4,15
  4785. ** DPP - DROP PPU.
  4786. *
  4787. * DROPS CHANNEL AND EQUIPMENT, SIGNALS DRIVER SHUTDOWN
  4788. * TO *RDF*, AND DROPS THE PPU.
  4789. *
  4790. * EXIT TO *PPR*.
  4791. *
  4792. * CALLS DCE, SDS.
  4793. *
  4794. * MACROS MONITOR.
  4795.  
  4796.  
  4797. DPP BSS 0 ENTRY
  4798. RJM DCE DISCONNECT CHANNEL AND EQUIPMENT
  4799. RJM SDS SIGNAL DRIVER SHUTDOWN
  4800. MONITOR DPPM DROP PPU
  4801. LJM PPR EXIT TO PPU RESIDENT
  4802. ERQ SPACE 4,20
  4803. ** ERQ - ENTER CIRCULAR REQUEST QUEUE.
  4804. *
  4805. * ERQ IS USED TO PLACE AN ENTRY IN THE DRIVER CIRCULAR REQUEST
  4806. * QUEUE FOR *RDF* TO PROCESS.
  4807. *
  4808. * ENTRY (A) = REQUEST CODE.
  4809. * (RQ+1 - RQ+3) = PARAMETERS.
  4810. * (TN) = TERMINAL NUMBER.
  4811. *
  4812. * EXIT IN UPDATED.
  4813. * (A) = 0.
  4814. * (RQ+1 - RQ+3) = 0.
  4815. *
  4816. * USES IN+3, IN+4, RQ - RQ+3.
  4817. *
  4818. * MACROS LDCDQ, LMCDQ.
  4819.  
  4820.  
  4821. ERQ1 AOD IN+4 ADVANCE IN
  4822. SHN -14
  4823. RAD IN+3 ADD OVERFLOW
  4824. ERQ2 LDCDQ 2 UPDATE IN
  4825. CWD IN
  4826. LDN 0 EXIT ERQ WITH A=0
  4827. STD RQ+1 CLEAR REQUEST BUFFER
  4828. STD RQ+2
  4829. STD RQ+3
  4830.  
  4831. * ERQ - ENTRY.
  4832.  
  4833. ERQ SUBR ENTRY/EXIT
  4834. ADC 2000 ADD FUNCTION BIAS
  4835. STD RQ
  4836. LDD IN+3 ENTER REQUEST
  4837. SHN 6
  4838. ADD RA
  4839. SHN 6
  4840. ADD IN+4
  4841. CWD RQ
  4842. LMCDQ 4+VDSL
  4843. NJN ERQ1 IF *IN* NOT EQUAL TO LIMIT-1
  4844. LDCDQ 1 RESET IN = FIRST
  4845. CRD IN
  4846. UJN ERQ2
  4847. FTER SPACE 4,10
  4848. ** FTER - FUNCTION TIME-OUT ERROR PROCESSOR.
  4849. *
  4850. * ENTRY (A) = FUNCTION CODE.
  4851. *
  4852. * EXIT (A) = 1/ERROR LOG FLAG, 5/MESSAGE NUMBER.
  4853.  
  4854.  
  4855. FTER BSS 0 ENTRY
  4856. STM IMTB SAVE FUNCTION CODE
  4857. LDN MFTO+40 * RMEEE CXX PYY FNNNN REJECT.*
  4858. * JMP IMT ISSUE MESSAGE AND TERMINATE
  4859. IMT SPACE 4,10
  4860. ** IMT - ISSUE MESSAGE AND TERMINATE.
  4861. *
  4862. * ENTRY (A) = 1/ERROR LOG FLAG, 5/MESSAGE NUMBER.
  4863. *
  4864. * EXIT TO *4TM*.
  4865. *
  4866. * MACROS EXECUTE.
  4867.  
  4868.  
  4869. IMT BSS 0 ENTRY
  4870. STM IMTA SAVE MESSAGE REQUEST
  4871. EXECUTE 4TM
  4872. LJM DPP DROP PP
  4873.  
  4874.  
  4875. IMTA BSS 1 MESSAGE REQUEST
  4876. IMTB BSS 1 FUNCTION CODE
  4877. MRER SPACE 4,10
  4878. ** MRER - NORMAL ERROR PROCESSOR FOR *COMPMRA*.
  4879. *
  4880. * EXIT (A) = MESSAGE NUMBER.
  4881.  
  4882.  
  4883. MRER BSS 0 ENTRY
  4884. LDN MNTA * NO TPM AVAILABLE.*
  4885. UJN IMT ISSUE MESSAGE AND TERMINATE
  4886. RCL SPACE 4,15
  4887. ** RCL - RECALL PPU.
  4888. *
  4889. * REQUESTS PPU RECALL AFTER DEFINED DELAY PERIOD,
  4890. * THEN EXITS TO PPU RESIDENT.
  4891. *
  4892. * ENTRY (IR - IR+4) = PPU INPUT REGISTER.
  4893. *
  4894. * EXIT TO *PPR*.
  4895. * (IR+2) = 10/EQ, 1/S, 1/P.
  4896. * EQ = RESERVED EQUIPMENT NUMBER.
  4897. * S = 1, IF PORT CURRENTLY IS RESERVED FOR
  4898. * *1TM*.
  4899. * P = PORT NUMBER.
  4900. *
  4901. * USES CM - CM+4.
  4902. *
  4903. * MACROS DCHAN, MONITOR.
  4904.  
  4905.  
  4906. RCL BSS 0 ENTRY
  4907. LDN MX DROP CHANNEL
  4908. DCHAN
  4909. LDD EQ SAVE RECALL STATUS INFORMATION
  4910. SHN 2
  4911. LMD PN
  4912. STD IR+2
  4913. LDM SFMX
  4914. ZJN RCL1 IF PORT NOT ATTACHED
  4915. LDD IR+2
  4916. LMN 2
  4917. STD IR+2
  4918. RCL1 LDD MA WRITE INPUT REGISTER TO MESSAGE BUFFER
  4919. CWD IR
  4920. LDN ZERL CLEAR REQUEST PARAMETERS
  4921. CRD CM
  4922. LDK PTMF SET TIMED RECALL REQUEST
  4923. STD CM+1
  4924. LDC RCLDLY*1000D SET RECALL DELAY (MILLISECONDS)
  4925. STD CM+4
  4926. SHN -14
  4927. STD CM+3
  4928. MONITOR RECM REQUEST PPU RECALL
  4929. JMP PPR EXIT TO PPU RESIDENT
  4930. RLT SPACE 4,15
  4931. ** RLT - READ LINK TABLE.
  4932. *
  4933. * READS THE POT LINK TABLE.
  4934. *
  4935. * ENTRY (DP+1) = POT POINTER IN LINK TABLE.
  4936. *
  4937. * EXIT (A) = NEXT POT.
  4938. *
  4939. * USES T0 - T5.
  4940. *
  4941. * MACROS ADCPL.
  4942.  
  4943.  
  4944. RLT SUBR ENTRY/EXIT
  4945. LDD DP+1 SET BYTE NUMBER
  4946. LPN 3
  4947. STD T5
  4948. LDD DP+1 READ LINK WORD
  4949. SHN -2
  4950. ADCPL
  4951. CRD T0
  4952. LDI T5 RETURN WITH NEXT LINK
  4953. UJN RLTX
  4954. SAT SPACE 4,15
  4955. ** SAT - SET ACTIVITY TIME.
  4956. *
  4957. * SETS THE LOWER 12 BITS OF THE REAL-TIME SECONDS
  4958. * CLOCK INTO (IR+3).
  4959. *
  4960. * EXIT (IR+3) = CURRENT REAL-TIME SECONDS.
  4961. *
  4962. * USES CM - CM+4.
  4963.  
  4964.  
  4965. SAT SUBR ENTRY/EXIT
  4966. LDK RTCL READ REAL-TIME CLOCK
  4967. CRD CM
  4968. LDD CM+1 SET SECONDS
  4969. STD IR+3
  4970. UJN SATX RETURN
  4971. SDS SPACE 4,15
  4972. ** SDS - SIGNAL DRIVER SHUTDOWN.
  4973. *
  4974. * SIGNALS DRIVER SHUTDOWN BY SETTING THE DRIVER
  4975. * SHUTDOWN FLAG IN THE DRIVER CONTROL WORD.
  4976. *
  4977. * EXIT DRIVER SHUTDOWN FLAG SET IN DRIVER
  4978. * CONTROL WORD.
  4979. *
  4980. * USES CM - CM+4.
  4981. *
  4982. * CALLS CWA.
  4983.  
  4984.  
  4985. SDS SUBR ENTRY/EXIT
  4986. RJM CWA SET DRIVER CONTROL WORD ADDRESS
  4987. CRD CM READ DRIVER CONTROL WORD
  4988. LDD CM CHECK SHUTDOWN FLAG
  4989. NJN SDSX IF DRIVER SHUTDOWN ALREADY SET, RETURN
  4990. LDN 1 SET DRIVER SHUTDOWN FLAG
  4991. STD CM
  4992. RJM CWA REWRITE DRIVER CONTROL WORD
  4993. CWD CM
  4994. UJN SDSX RETURN
  4995. SEM SPACE 4,15
  4996. ** SEM - SET EXTENDED MODE.
  4997. *
  4998. * SETS THE EXTENDED *ASCII* MODE BIT IN DP+3.
  4999. *
  5000. * EXIT (DP+3) = EXTENDED (*ASCII*) MODE SET.
  5001.  
  5002.  
  5003. SEM SUBR ENTRY/EXIT
  5004. LDD DP+3 SET *ASCII* MODE
  5005. SCN 2
  5006. LMN 2
  5007. STD DP+3
  5008. UJN SEMX RETURN
  5009. STA SPACE 4,15
  5010. ** STA - SET TERMINAL TABLE ADDRESS.
  5011. *
  5012. * SETS THE ABSOLUTE CM FWA OF TERMINAL TABLE.
  5013. *
  5014. * ENTRY (TN) = TERMINAL NUMBER.
  5015. *
  5016. * EXIT (A) = ABSOLUTE FWA OF TERMINAL TABLE.
  5017. *
  5018. * MACROS TTADD.
  5019.  
  5020.  
  5021. STA SUBR ENTRY/EXIT
  5022. TTADD 0 SET FWA OF TERMINAL TABLE
  5023. UJN STAX RETURN
  5024. SVM SPACE 4,15
  5025. ** SVM - SERVICE MULTIPLEXER.
  5026. *
  5027. * PERFORMS DATA OUTPUT AND INPUT OPERATIONS ON THE
  5028. * TWO-PORT MULTIPLEXER.
  5029. *
  5030. * ENTRY (DO) = OUTPUT DATA IF BIT 2**11 SET.
  5031. *
  5032. * EXIT (DO) = ZERO IF DATA SENT.
  5033. * = OUTPUT DATA IF OUTPUT BUFFER FULL.
  5034. * (DI) = INPUT DATA.
  5035. * = ZERO IF NO INPUT DATA.
  5036. *
  5037. * CALLS IFN, RMA, SPA.
  5038.  
  5039.  
  5040. SVM4 LDN 0
  5041. STM SVMA
  5042. SVM5 RJM RMA RELEASE MULTIPLEXER ACCESS
  5043.  
  5044. SVM SUBR ENTRY/EXIT
  5045. LDN 0 CLEAR INPUT DATA
  5046. STD DI
  5047. LDM SFMX
  5048. ZJN SVMX IF PORT NOT SELECTED
  5049. RJM SPA START PORT ACCESS
  5050. LPN 6 CHECK *CARRIER ON* AND *DATA SET READY*
  5051. LMN 6
  5052. NJN SVM5 IF NOT *CARRIER ON* AND *DATA SET READY*
  5053.  
  5054. * WRITE OUTPUT DATA TO MULTIPLEXER PORT.
  5055.  
  5056. LDM SSMX GET PORT STATUS
  5057. LPN 20
  5058. ZJN SVM1 IF NOT *OUTPUT BUFFER READY*
  5059. LDD DO CHECK OUTPUT DATA
  5060. SHN 21-13
  5061. PJN SVM1 IF NO OUTPUT DATA
  5062. LDC MXWT SELECT *WRITE* FUNCTION
  5063. RJM IFN
  5064. LDD DO TRANSMIT DATA TO PORT
  5065. LPC 377
  5066. ACN MX
  5067. OAN MX
  5068. DCN MX+40
  5069. LDN 0 CLEAR OUTPUT DATA POINTER
  5070. STD DO
  5071.  
  5072. * READ INPUT DATA FROM MULTIPLEXER PORT.
  5073.  
  5074. SVM1 LDC **
  5075. SVMA EQU *-1
  5076. ZJN SVM2 IF NO PREVIOUS CHARACTER
  5077. STD DI RETURN PREVIOUS CHARACTER
  5078. UJP SVM4 RELEASE MULTIPLEXER ACCESS
  5079.  
  5080. SVM2 LDM SSMX CHECK PORT STATUS
  5081. LPN 10
  5082. ZJN SVM3 IF NOT *INPUT DATA READY*
  5083. LDD HN SELECT *READ* FUNCTION
  5084. ERRNZ MXRD-100 *MXRD* CHANGED
  5085. RJM IFN
  5086. ACN MX
  5087. IAN MX INPUT DATA FROM PORT
  5088. DCN MX+40
  5089. SVM3 STD DI STORE INPUT DATA
  5090. UJP SVM5 RELEASE MULTIPLEXER ACCESS
  5091. SWA SPACE 4,15
  5092. ** SWA - SET WORD ADDRESS.
  5093. *
  5094. * SET ADDRESS OF CURRENT WORD OF CURRENT POT.
  5095. *
  5096. * ENTRY (DP+1) = CURRENT POT.
  5097. * (DP+2) = WORD POINTER.
  5098. *
  5099. * EXIT (A) = CM ADDRESS OF CURRENT WORD (ABSOLUTE).
  5100. *
  5101. * MACROS ADCBM.
  5102.  
  5103.  
  5104. SWA SUBR ENTRY/EXIT
  5105. LDD DP+2 SET WORD
  5106. LPC 160
  5107. SHN 21-6
  5108. LMD DP+1 SET POT POINTER
  5109. SHN 3 TIMES 10B
  5110. ADCBM ADD POT BUFFER ADDRESS
  5111. UJN SWAX
  5112. WDC SPACE 4,15
  5113. ** WDC - WRITE TERMINAL TABLE WORD *VDCT*.
  5114. *
  5115. * WRITES TERMINAL TABLE WORD *VDCT* TO CENTRAL MEMORY.
  5116. *
  5117. * ENTRY (DC - DC+4) = TERMINAL TABLE WORD *VDCT*.
  5118. *
  5119. * EXIT (A) = ADDRESS OF *VDCT* WORD.
  5120. *
  5121. * CALLS STA.
  5122.  
  5123.  
  5124. WDC SUBR ENTRY/EXIT
  5125. RJM STA SET FWA OF TERMINAL TABLE
  5126. ADN VDCT WRITE *VDCT* TO CM
  5127. CWD DC
  5128. UJN WDCX RETURN
  5129. SPACE 4,10
  5130. ** COMMON DECKS
  5131.  
  5132. MRA$ EQU 0
  5133. LIST X
  5134. QUAL$ EQU 0
  5135. *CALL COMPMRA
  5136.  
  5137. APA$ EQU 0
  5138. PMA$ EQU 0
  5139. *CALL COMPTMA
  5140. LIST -X
  5141. OMBUF SPACE 4,15
  5142. ** OMBUF - OPERATOR MESSAGE BUFFER.
  5143.  
  5144.  
  5145. OMBUF BSS 0 OPERATOR MESSAGE BUFFER
  5146.  
  5147. OVLA EQU OMBUF+OMBUFL+5 OVERLAY LOAD ADDRESS
  5148. PRS TITLE DRIVER PRESET.
  5149. USE PRESET
  5150. PRS SPACE 4,30
  5151. ** PRS - PRESET DRIVER.
  5152. *
  5153. * ENTRY (IR+2) = 0, IF NOT PP RECALL AND NOT *2TM* CALL.
  5154. * = 10/EQ, 1/S, 1/P, IF PP RECALL OR *2TM* CALL.
  5155. * EQ = RESERVED EQUIPMENT NUMBER.
  5156. * S = 1, IF PORT CURRENTLY IS RESERVED FOR
  5157. * *1TM*.
  5158. * P = PORT NUMBER.
  5159. * (IR+3) = REAL-TIME CLOCK (SECONDS) AT START
  5160. * OF DRIVER INACTIVITY TIME-OUT.
  5161. * = ZERO ON INITIAL CALL OR EXECUTIVE RECALL.
  5162. * (IR+4) = DRIVER CONTROL WORD POINTER.
  5163. * (DRIVER CONTROL WORD) INITIAL CALL =
  5164. * 12/0, 6/0, 18/DRN, 24/0
  5165. * DRN = DRIVER NAME.
  5166. * (DRIVER CONTROL WORD) PP OR EXECUTIVE RECALL =
  5167. * 12/3, 24/CSA, 12/TC, 12/TN
  5168. * CSA = CIRCULAR STACK ADDRESS.
  5169. * TC = TERMINAL COUNT.
  5170. * TN = DRIVER TERMINAL NUMBER.
  5171. *
  5172. * EXIT TO *ITM*, DRIVER CONTROL LOOP -
  5173. * CHANNEL AND EQUIPMENT RESERVED.
  5174. * (EQ) = EST ORDINAL + 2**9.
  5175. * (LF) = NONZERO FOR INITIAL CONNECTION ATTEMPT.
  5176. * (PN) = MULTIPLEXER PORT NUMBER - 0 OR 1.
  5177. * (IR+3) = CURRENT REAL-TIME CLOCK (SECONDS)
  5178. * IF INITIAL CALL OR EXECUTIVE RECALL.
  5179. * = INPUT REGISTER CONTENTS IF PP RECALL.
  5180. * (OMCC) = 0.
  5181. * (SF7D) = 0.
  5182. * TRANSLATION TABLES MODIFIED IF SYSTEM IS IN
  5183. * 63 CHARACTER SET MODE.
  5184. *
  5185. * CALLS CEF, CWA, PMA, SAD, SAT, SPN, STA.
  5186. *
  5187. * MACROS EXECUTE, LDCDQ, RCHAN.
  5188.  
  5189.  
  5190. PRS BSS 0 ENTRY
  5191. RJM PMA PRESET MULTIPLEXER ACCESS
  5192. LDD IR+2
  5193. NJN PRS1 IF RECALL
  5194. EXECUTE 2TM PRESET NON-RECALL LOAD
  5195.  
  5196. * PRESET VALUES FROM RECALL.
  5197.  
  5198. PRS1 LPN 1
  5199. STD PN SET PORT NUMBER
  5200. RJM SPN
  5201. STD IT CLEAR INTERVAL TIMER
  5202. LDD IR+2
  5203. LPN 2
  5204. ZJN PRS2 IF PORT WAS NOT SELECTED
  5205. LDD PN
  5206. ADC MXPT
  5207. STM SFMX
  5208. PRS2 LDD IR+2 RESTORE EQUIPMENT NUMBER
  5209. SHN -2
  5210. STD EQ
  5211. LDN MX REQUEST CHANNEL
  5212. RCHAN
  5213. LDN 2 SET PORT ACQUIRED BEFORE FLAG
  5214. STM STMC
  5215. RJM CEF CHECK ERROR FLAG
  5216. LDM SFMX
  5217. NJN PRS3 IF PORT SELECTED
  5218. LDC /CTL/RPA SET REENTRY ADDRESS TO REGAIN PORT
  5219. STM PRSA
  5220. LDN RPATIO SET TIME-OUT
  5221. STD IT
  5222.  
  5223. * SET ABSOLUTE ADDRESSES AND SIGNAL INITIALIZATION COMPLETE.
  5224.  
  5225. PRS3 RJM SAD SET ABSOLUTE CM ADDRESSES
  5226. RJM CWA READ DRIVER CONTROL WORD
  5227. CRD DC
  5228. LDD DC+4
  5229. STD TN
  5230. LDN 0 CLEAR INTERLOCK
  5231. STD DC
  5232. RJM CWA REWRITE DRIVER CONTROL WORD
  5233. CWD DC
  5234.  
  5235. * PRESET TERMINAL ROUTINE ADDRESS.
  5236.  
  5237. LDN ZERL CLEAR *VDPT* IMAGE
  5238. CRD DP
  5239. CRD CH CLEAR *VCHT* IMAGE
  5240. LDC /CTL/ONL SET STARTING ADDRESS
  5241. PRSA EQU *-1
  5242. * LDC /CTL/RPA (PP RECALL AND PORT NOT SELECTED)
  5243. STD DP+4
  5244. RJM STA SET FWA OF TERMINAL TABLE
  5245. ADN VDPT WRITE *VDPT*
  5246. CWD DP
  5247. ADN VCHT-VDPT WRITE *VCHT*
  5248. CWD CH
  5249.  
  5250. * INITIALIZE MISCELLANEOUS POINTERS.
  5251.  
  5252. LDN 0 CLEAR INPUT AND OUTPUT DATA
  5253. STD DI
  5254. STD DO
  5255. STD F7 CLEAR START OF *F7* SEQUENCE DETECTED
  5256. STD HS CLEAR HALF-SECOND FLAG
  5257. STD PY CLEAR ODD PARITY
  5258. STM OMCC CLEAR OPERATOR MESSAGE CHARACTER COUNT
  5259. LDN 77
  5260. STD LF
  5261. LDCDQ 2 SET CIRCULAR QUEUE *IN*
  5262. CRD IN
  5263.  
  5264. * SET TIME-OUT IF INITIAL CALL OR EXECUTIVE RECALL.
  5265.  
  5266. LDD IR+3 CHECK TIME-OUT
  5267. NJN PRS4 IF DRIVER RECALL
  5268. RJM SAT SET ACTIVITY TIME-OUT
  5269. PRS4 LJM /CTL/ITM ENTER DRIVER MAIN LOOP
  5270. TITLE DRIVER PRESET SUBROUTINES.
  5271. SAD SPACE 4,15
  5272. ** SAD - SET ABSOLUTE ADDRESSES.
  5273. *
  5274. * DETERMINES ABSOLUTE CM ADDRESS AND CALLS *SIA*
  5275. * TO INSERT THEM INTO PP INSTRUCTIONS.
  5276. *
  5277. * USES T1, CM - CM+4.
  5278. *
  5279. * CALLS CWA, SIA.
  5280.  
  5281.  
  5282. SAD SUBR ENTRY/EXIT
  5283.  
  5284. * SET BUFFER MEMORY ADDRESS REFERENCES.
  5285.  
  5286. LDC TBMA SET INSTRUCTION ADDRESS TABLE POINTER
  5287. STD T1
  5288. LDD RA READ BUFFER MEMORY POINTER
  5289. SHN 6
  5290. ADK VBMP
  5291. CRD CM
  5292. LDN CM+3 SET FWA BUFFER MEMORY
  5293. RJM SIA SET INSTRUCTION ADDRESSES
  5294.  
  5295. * SET DRIVER REQUEST QUEUE REFERENCES.
  5296.  
  5297. LDC TDQA SET INSTRUCTION ADDRESS TABLE POINTER
  5298. STD T1
  5299. RJM CWA READ DRIVER CONTROL WORD
  5300. CRD CM
  5301. LDN CM+1 SET FWA DRIVER REQUEST QUEUE
  5302. RJM SIA SET INSTRUCTION ADDRESSES
  5303.  
  5304. * SET POT LINK TABLE REFERENCES.
  5305.  
  5306. LDC TPLA SET INSTRUCTION ADDRESS TABLE POINTER
  5307. STD T1
  5308. LDD RA READ POT LINK TABLE POINTER
  5309. SHN 6
  5310. ADK VPLP
  5311. CRD CM
  5312. LDN CM+1 SET FWA POT LINK TABLE
  5313. RJM SIA SET INSTRUCTION ADDRESSES
  5314.  
  5315.  
  5316. * SET TERMINAL TABLE REFERENCES.
  5317.  
  5318. LDC TTTA SET INSTRUCTION ADDRESS TABLE POINTER
  5319. STD T1
  5320. LDD RA READ TERMINAL TABLE ADDRESS POINTER
  5321. SHN 6
  5322. ADK VTTP
  5323. CRD CM
  5324. LDN CM+1 SET FWA OF TERMINAL TABLES
  5325. RJM SIA SET INSTRUCTION ADDRESSES
  5326. UJP SADX RETURN
  5327. SIA SPACE 4,15
  5328. ** SIA - SET INSTRUCTION ADDRESSES.
  5329. *
  5330. * SETS ABSOLUTE ADDRESSES IN INSTRUCTION ADDRESS
  5331. * FIELDS.
  5332. *
  5333. * ENTRY (T1) = ADDRESS OF TABLE OF INSTRUCTION
  5334. * ADDRESSES.
  5335. * (A) = ADDRESS IN PP OF CM ADDRESS.
  5336. *
  5337. * USES T2, T6, T7.
  5338.  
  5339.  
  5340. SIA SUBR ENTRY/EXIT
  5341. STD T2 SAVE ADDRESS POINTER
  5342. LDI T2 GET ABSOLUTE ADDRESS
  5343. SHN 6 ABSOLUTE RELATIVE ADDRESS
  5344. ADD RA
  5345. SHN 6
  5346. ADM 1,T2
  5347. STD T7 SAVE LOWER 12 BITS
  5348. SHN -14
  5349. STD T6
  5350.  
  5351. SIA1 LDI T1 READ INSTRUCTION ADDRESS
  5352. ZJP SIAX IF END OF ADDRESS TABLE
  5353. STD T2
  5354. LDD T7 SET LOWER 12 BITS
  5355. RAM 1,T2
  5356. SHN -14
  5357. ADD T6 ADD OVERFLOW
  5358. RAI T2 SET UPPER 6 BITS
  5359. AOD T1 ADVANCE TABLE INDEX
  5360. UJN SIA1 LOOP TO END OF TABLE
  5361. SPACE 4,10
  5362. QUAL
  5363. PMA HERE
  5364. ITM TITLE INITIALIZATION TABLES.
  5365. ITM SPACE 4,15
  5366. ** TABLES OF CENTRAL MEMORY REFERENCE INSTRUCTION
  5367. * ADDRESSES.
  5368.  
  5369.  
  5370. TBMA BSS 0 BUFFER MEMORY REFERENCES
  5371. TBMA HERE
  5372. CON 0
  5373.  
  5374. TDQA BSS 0 DRIVER REQUEST QUEUE REFERENCES
  5375. TDQA HERE
  5376. CON 0
  5377.  
  5378. TPLA BSS 0 POT LINK TABLE REFERENCES
  5379. TPLA HERE
  5380. CON 0
  5381.  
  5382. TTTA BSS 0 TERMINAL TABLE REFERENCES
  5383. TTTA HERE
  5384. CON 0
  5385. SPACE 4,10
  5386. USE *
  5387. QUAL
  5388.  
  5389. OVERFLOW
  5390. TTL 1TM/2TM - NON-PP RECALL PRESET.
  5391. TITLE INITIAL DRIVER PRESET.
  5392. IDENT 2TM,PREX
  5393. *COMMENT 1TM - PRESET.
  5394. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  5395. 2TM SPACE 4,10
  5396. *** INITIAL DRIVER PRESET.
  5397. SPACE 4,10
  5398. ORG PPFW
  5399. QUAL PRE
  5400. PRE SPACE 4,30
  5401. ** PRE - PRESET DRIVER.
  5402. *
  5403. * (IR+3) = REAL-TIME CLOCK (SECONDS) AT START
  5404. * OF DRIVER INACTIVITY TIME-OUT.
  5405. * = ZERO ON INITIAL CALL OR EXECUTIVE RECALL.
  5406. * (IR+4) = DRIVER CONTROL WORD POINTER.
  5407. * (DRIVER CONTROL WORD) INITIAL CALL =
  5408. * 12/0, 6/0, 18/DRN, 24/0
  5409. * DRN = DRIVER NAME.
  5410. * (DRIVER CONTROL WORD) PP OR EXECUTIVE RECALL =
  5411. * 12/3, 24/CSA, 12/TC, 12/TN
  5412. * CSA = CIRCULAR STACK ADDRESS.
  5413. * TC = TERMINAL COUNT.
  5414. * TN = DRIVER TERMINAL NUMBER.
  5415. *
  5416. * EXIT TO *ITM*, PRESET -
  5417. * EQUIPMENT RESERVED.
  5418. * MULTIPLEXER AND PORT SELECTED.
  5419. * (IR+2) = 10/EQ, 1/S, 1/P.
  5420. * EQ = RESERVED EQUIPMENT NUMBER.
  5421. * S = 1, IF PORT CURRENTLY IS RESERVED FOR
  5422. * *1TM*.
  5423. * P = PORT NUMBER.
  5424. * (IR+3) = CURRENT REAL-TIME CLOCK (SECONDS)
  5425. * IF INITIAL CALL OR EXECUTIVE RECALL.
  5426. * = INPUT REGISTER CONTENTS IF PP RECALL.
  5427. * TO *MRER* IF NO TPM AVAILABLE.
  5428. *
  5429. * CALLS CEF, CEQ, CWA, INI, RCE, SEL.
  5430. *
  5431. * MACROS EXECUTE, LDCDQ.
  5432.  
  5433.  
  5434. PRE SUBR ENTRY
  5435. LDN 0
  5436. STD EQ
  5437. RJM CEF CHECK ERROR FLAG
  5438. RJM CWA SET DRIVER CONTROL WORD ADDRESS
  5439. CRD DC READ DRIVER CONTROL WORD
  5440.  
  5441. * PROCESS INITIAL DRIVER LOAD.
  5442.  
  5443. RJM CEQ CHECK EQUIPMENT
  5444. LDD DC+4 CHECK TERMINAL NUMBER
  5445. STD TN
  5446. NJN PRE1 IF DEFINED - DRIVER RECALL
  5447. RJM INI PROCESS INITIAL DRIVER LOAD
  5448.  
  5449. * RESERVE TWO-PORT MULITPLEXER AND SELECT PORT.
  5450.  
  5451. PRE1 LDD EQ CHECK IF EQUIPMENT AVAILABLE
  5452. NJN PRE2 IF EQUIPMENT AVAILABLE
  5453. LJM MRER * 1TM - NO TPM AVAILABLE.*
  5454.  
  5455. PRE2 RJM CMF CHECK RDF STATUS
  5456. RJM RCE RESERVE CHANNEL AND EQUIPMENT
  5457. RJM SEL SELECT MULTIPLEXER PORT
  5458.  
  5459. * LOAD MAIN OVERLAY.
  5460.  
  5461. LDN MX RELEASE CHANNEL
  5462. DCHAN
  5463. LDD EQ SAVE RECALL STATUS INFORMATION
  5464. SHN 2
  5465. LMD PN
  5466. STD IR+2
  5467. LDM SFMX
  5468. ZJN PRE3 IF PORT NOT ATTACHED
  5469. LDD IR+2
  5470. LMN 2
  5471. STD IR+2
  5472. PRE3 EXECUTE 1TM
  5473.  
  5474.  
  5475. QUAL *
  5476. PREX EQU /PRE/PREX
  5477. QUAL PRE
  5478. TITLE DRIVER PRESET SUBROUTINES.
  5479. CEF SPACE 4,15
  5480. ** CEF - CHECK ERROR FLAG.
  5481. *
  5482. * CHECKS CPU ERROR FLAG. IF SET, DROPS EQUIPMENT
  5483. * AND CHANNEL AND DROPS THE PPU.
  5484. *
  5485. * EXIT TO *DPP* IF ERROR FLAG SET.
  5486. *
  5487. * USES CM - CM+4.
  5488.  
  5489.  
  5490. CEF SUBR ENTRY/EXIT
  5491. LDD CP READ CP STATUS WORD
  5492. ADK STSW
  5493. CRD CM
  5494. LDD CM+1 CHECK ERROR FLAG
  5495. ZJN CEFX IF NO ERROR FLAG
  5496. LJM DPP DROP PPU
  5497. CEQ SPACE 4,20
  5498. ** CEQ - CHECK EQUIPMENT.
  5499. *
  5500. * CHECKS FOR EQUIPMENT TYPE *RM* IN THE EST.
  5501. * SETS THE EST ORDINAL.
  5502. *
  5503. * EXIT (A) = EST ORDINAL IF NONZERO.
  5504. * = ZERO IF EQUIPMENT NOT FOUND.
  5505. * (EQ) = EST ORDINAL IF NONZERO.
  5506. * = ZERO IF EQUIPMENT NOT FOUND.
  5507. * (PN) = PORT NUMBER IF EQUIPMENT FOUND.
  5508. * (RCEA) = UPPER ACCESS LEVEL LIMIT FOR TWO-PORT MUX.
  5509. *
  5510. * USES CM - CM+4, DP - DP+4, T0 - T0+4.
  5511. *
  5512. * MACROS SFA.
  5513.  
  5514.  
  5515. CEQ SUBR ENTRY/EXIT
  5516. LDN 0 PRESET NOT FOUND
  5517. STD EQ
  5518. LDK ESTP READ EST POINTER
  5519. CRD DP
  5520. LDN NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH
  5521. STD DP
  5522. CEQ1 AOD DP ADVANCE EST ORDINAL
  5523. LMD DP+2
  5524. ZJN CEQX IF END OF EST
  5525. SFA EST,DP READ EST ENTRY
  5526. ADK EQDE
  5527. CRD CM
  5528. ADK EQAE-EQDE
  5529. CRD T0
  5530. LDD CM+3 CHECK EQUIPMENT MNEMONIC
  5531. LMC 2RRM
  5532. NJN CEQ1 IF NOT EQUIPMENT TYPE *RM*
  5533. LDD CM
  5534. LPN 3
  5535. NJN CEQ1 IF *RM* EQUIPMENT NOT *ON*
  5536. LDD T0+3 SAVE UPPER ACCESS LEVEL LIMIT
  5537. LPN 7
  5538. STM RCEA
  5539. LDD CM+4 SET PORT NUMBER
  5540. LPN 1
  5541. STD PN
  5542. LDD DP EXIT WITH (A) = (EQ) = EST ORDINAL
  5543. STD EQ
  5544. UJP CEQX RETURN
  5545. CMF SPACE 4,15
  5546. ** CMF - CHECK *RDF* STATUS.
  5547. *
  5548. * CHECKS TO SEE THAT *RDF* IS ENABLED. IF NOT,
  5549. * ISSUE ERROR LOG MESSAGE AND EXIT TO *ERR*.
  5550. *
  5551. * EXIT RETURN TO CALLER IF *RDF* ENABLED.
  5552. * TO *ERR* IF *RDF* DISABLED -
  5553. * ERROR LOG MESSAGE ISSUED.
  5554. * (A) = ADDRESS OF DAYFILE MESSAGE.
  5555. *
  5556. * USES T1, CM - CM+4.
  5557. *
  5558. * CALLS DFM.
  5559.  
  5560.  
  5561. CMF SUBR ENTRY/EXIT
  5562. LDK SSSL READ SUBSYSTEM STATUS
  5563. CRD CM
  5564. LDM CMFB+1 SET MASK
  5565. STM CMFC
  5566. LDM CMFB GET *SSSL* BYTE NUMBER
  5567. STD T1
  5568. LDM CM,T1 READ BYTE
  5569. LPC **
  5570. CMFC EQU *-1 (*RDF* MASK BIT)
  5571. ZJN CMFX IF *RDF* NOT DISABLED
  5572. LDN MTER * RDF TERMINATED.*
  5573. LJM IMT ISSUE MESSAGE AND TERMINATE
  5574.  
  5575. * CALCULATE *SSSL* BYTE AND MASK FOR *RDF*.
  5576.  
  5577. .1 SET MXSI-RDSI
  5578. .2 SET .1/12D
  5579. .3 SET 4-.2
  5580. .4 DECMIC .1-12D*.2
  5581. .5 SET 1S".4"
  5582.  
  5583. CMFB CON .3 *SSSL* BYTE NUMBER
  5584. CON .5 *SSSL* MASK
  5585. CWA SPACE 4,15
  5586. ** CWA - SET DRIVER CONTROL WORD ADDRESS.
  5587. *
  5588. * RETURNS THE ABSOLUTE CM ADDRESS OF THE DRIVER CONTROL
  5589. * WORD WITHIN *RDF* FIELD LENGTH.
  5590. *
  5591. * ENTRY (IR+4) = DRIVER CONTROL WORD POINTER.
  5592. *
  5593. * EXIT (A) = CM ADDRESS OF DRIVER CONTROL WORD.
  5594.  
  5595.  
  5596. CWA SUBR ENTRY/EXIT
  5597. LDD RA SET CM ADDRESS
  5598. SHN 6
  5599. ADD IR+4 ADD DRIVER CONTROL WORD POINTER
  5600. UJN CWAX RETURN
  5601. DCE SPACE 4,15
  5602. ** DCE - DROP CHANNEL AND EQUIPMENT.
  5603. *
  5604. * ENTRY (EQ) = BIT 2**9 SET IF EQUIPMENT RESERVED.
  5605. *
  5606. * EXIT CHANNEL AND EQUIPMENT DROPPED.
  5607. * (EQ) = BIT 2**9 RESET.
  5608. *
  5609. * USES CM - CM+4.
  5610. *
  5611. * CALLS CLR, RTM.
  5612. *
  5613. * MACROS DCHAN, MONITOR.
  5614.  
  5615.  
  5616. DCE SUBR ENTRY/EXIT
  5617. LDD EQ CHECK EQUIPMENT
  5618. SBD TH
  5619. MJN DCEX IF NOT RESERVED
  5620. STD EQ CLEAR BIT 2**9
  5621. STD CM+1 DROP EQUIPMENT
  5622. MONITOR DEQM
  5623. LDN MX DROP MULTIPLEXER CHANNEL
  5624. DCHAN
  5625. RJM RTM RELEASE TERMINAL ON MULTIPLEXER
  5626. RJM CLR CLEAR LAST REQUEST
  5627. UJN DCEX RETURN
  5628. DPP SPACE 4,15
  5629. ** DPP - DROP PPU.
  5630. *
  5631. * DROPS CHANNEL AND EQUIPMENT, SIGNALS DRIVER SHUTDOWN
  5632. * TO *RDF*, AND DROPS THE PPU.
  5633. *
  5634. * EXIT TO *PPR*.
  5635. *
  5636. * CALLS DCE, SDS.
  5637. *
  5638. * MACROS MONITOR.
  5639.  
  5640.  
  5641. DPP BSS 0 ENTRY
  5642. RJM DCE DISCONNECT CHANNEL AND EQUIPMENT
  5643. RJM SDS SIGNAL DRIVER SHUTDOWN
  5644. MONITOR DPPM DROP PPU
  5645. LJM PPR EXIT TO PPU RESIDENT
  5646. INI SPACE 4,25
  5647. ** INI - PROCESS INITIAL LOAD.
  5648. *
  5649. * PROCESSES THE INITIAL LOAD OF THE DRIVER DURING
  5650. * *RDF* INITIALIZATION.
  5651. *
  5652. * ENTRY (IR+4) = DRIVER CONTROL WORD POINTER.
  5653. * (DC - DC+4) = DRIVER CONTROL WORD.
  5654. *
  5655. * EXIT *VDRL* DRIVER CONTROL WORD INITIALIZED.
  5656. * MUX TABLE ENTRY INITIALIZED.
  5657. * (DC - DC+4) = DRIVER CONTROL WORD.
  5658. * (TN) = DRIVER TERMINAL NUMBER.
  5659. *
  5660. * ERROR TO *ERR* IF NOT CYBER 170-8XX.
  5661. * (A) = ADDRESS OF ERROR MESSAGE.
  5662. *
  5663. * USES CM - CM+4, DC - DC+4.
  5664. *
  5665. * CALLS CEF, CWA, TID.
  5666.  
  5667.  
  5668. INI SUBR ENTRY/EXIT
  5669. RJM STP SYNCHRONIZE *TSEM* PROCESSING
  5670.  
  5671. * TRANSMIT PORT COUNT TO EXECUTIVE INITIALIZATION.
  5672.  
  5673. LDN ZERL
  5674. CRD CM
  5675. LDN 1 SET TERMINAL COUNT
  5676. STD CM+3
  5677. STD DC+3
  5678. STD DC SET REPLY INTERLOCK NON-ZERO
  5679. LDN 2 SET TERMINAL ID TABLE LENGTH
  5680. STD DC+4
  5681. LDD RA WRITE MUX TABLE ENTRY
  5682. SHN 6
  5683. ADC MUXP+VMTM
  5684. CWD CM
  5685. RJM CWA SET DRIVER CONTROL WORD ADDRESS
  5686. CWD DC WRITE DRIVER CONTROL WORD
  5687.  
  5688. * WAIT FOR CP EXECUTIVE INITIALIZATION TO REPLY.
  5689.  
  5690. INI2 DELAY PAUSE FOR 128 USECS
  5691. RJM CEF CHECK ERROR FLAG
  5692. RJM CWA SET DRIVER CONTROL WORD ADDRESS
  5693. CRD DC READ DRIVER CONTROL WORD
  5694. LDD DC CHECK FOR EXECUTIVE RESPONSE
  5695. NJN INI2 IF NO RESPONSE FROM EXECUTIVE
  5696.  
  5697. * SET TERMINAL NUMBER AND TERMINAL ID TABLE.
  5698.  
  5699. LDD DC+4 SET ASSIGNED TERMINAL NUMBER
  5700. STD TN
  5701. RJM TID SET TERMINAL ID TABLE
  5702.  
  5703. * DROP PP IF NOT CYBER 170-8XX MAINFRAME.
  5704.  
  5705. LDK MABL CHECK MAINFRAME TYPE
  5706. CRD CM
  5707. LDD CM+1
  5708. SHN 21-13
  5709. PJP INIX IF CYBER 170-8XX MAINFRAME
  5710. LDN MCBR * RDF CANNOT BE RUN ON MAINFRAME.*
  5711. LJM IMT ISSUE MESSAGE AND TERMINATE
  5712. RCE SPACE 4,15
  5713. ** RCE - RESERVE CHANNEL AND EQUIPMENT.
  5714. *
  5715. * ENTRY (RCEA) = UPPER ACCESS LEVEL LIMIT OF TPM.
  5716. *
  5717. * EXIT EQUIPMENT AND CHANNEL RESERVED.
  5718. * (EQ) = BIT 2**49 SET TO INDICATE THAT EQUIPMENT
  5719. * IS RESERVED.
  5720. * MUX TABLE ENTRY UPDATED WITH CH, PN, AND UAL.
  5721. *
  5722. * ERROR TO *MRER* IF EQUIPMENT NOT ASSIGNED.
  5723. *
  5724. * USES CM - CM+4.
  5725. *
  5726. * MACROS RCHAN, MONITOR.
  5727.  
  5728.  
  5729. RCE SUBR ENTRY/EXIT
  5730. LDD EQ CHECK EQUIPMENT
  5731. STD CM+1
  5732. SBD TH
  5733. PJN RCEX IF ALREADY RESERVED
  5734. LDK REQS REQUEST ACTIVE EQUIPMENT
  5735. STD CM+2
  5736. MONITOR REQM REQUEST EQUIPMENT
  5737. LDD CM+1
  5738. NJN RCE1 IF EQUIPMENT ASSIGNED
  5739. LJM MRER * 1TM - NO TPM AVAILABLE.*
  5740.  
  5741. RCE1 LDN MX REQUEST CHANNEL
  5742. RCHAN
  5743. LDD TH SET BIT 2**9 ON EST ORDINAL
  5744. RAD EQ
  5745. LDD RA READ MUX TABLE ENTRY
  5746. SHN 6
  5747. ADC MUXP+VMTM
  5748. CRD CM
  5749. LDN MX SET CHANNEL
  5750. SHN 6
  5751. LMD PN SET PORT NUMBER
  5752. STD CM
  5753. LDC * SET UPPER ACCESS LEVEL LIMIT FOR MUX
  5754. RCEA EQU *-1
  5755. STD CM+2
  5756. LDD RA REWRITE MUX TABLE ENTRY
  5757. SHN 6
  5758. ADC MUXP+VMTM
  5759. CWD CM
  5760. UJP RCEX RETURN
  5761. SDS SPACE 4,15
  5762. ** SDS - SIGNAL DRIVER SHUTDOWN.
  5763. *
  5764. * SIGNALS DRIVER SHUTDOWN BY SETTING THE DRIVER
  5765. * SHUTDOWN FLAG IN THE DRIVER CONTROL WORD.
  5766. *
  5767. * EXIT DRIVER SHUTDOWN FLAG SET IN DRIVER
  5768. * CONTROL WORD.
  5769. *
  5770. * USES CM - CM+4.
  5771. *
  5772. * CALLS CWA.
  5773.  
  5774.  
  5775. SDS SUBR ENTRY/EXIT
  5776. RJM CWA SET DRIVER CONTROL WORD ADDRESS
  5777. CRD CM READ DRIVER CONTROL WORD
  5778. LDD CM CHECK SHUTDOWN FLAG
  5779. NJN SDSX IF DRIVER SHUTDOWN ALREADY SET, RETURN
  5780. LDN 1 SET DRIVER SHUTDOWN FLAG
  5781. STD CM
  5782. RJM CWA REWRITE DRIVER CONTROL WORD
  5783. CWD CM
  5784. UJN SDSX RETURN
  5785. SEL SPACE 4,15
  5786. ** SEL - SELECT MULTIPLEXER PORT.
  5787. *
  5788. * CALLS *STM* TO SELECT THE TPM PORT, TO GET
  5789. * AND STORE THE PORT STATUS AND ISSUES TPM
  5790. * FUNCTION CODES TO SET THE PORT OPERATING MODE,
  5791. * SET *DATA TERMINAL READY*, AND *REQUEST TO SEND*.
  5792. *
  5793. * ENTRY (PN) = PORT NUMBER.
  5794. *
  5795. * EXIT PORT SELECTED.
  5796. * (SSMX) = PORT STATUS.
  5797. * TO *MRER* IF PORT NOT RESERVED.
  5798. *
  5799. * CALLS IFN, PMA, RMA, STM.
  5800.  
  5801.  
  5802. SEL SUBR ENTRY/EXIT
  5803. RJM PMA PRESET MUX ACCESS
  5804. LDD PN GET PORT NUMBER
  5805. LDC PRTO SET TIME OUT DELAY
  5806. STD T2
  5807. LDD PN GET PORT NUMBER
  5808. RJM SPN SET PORT NUMBER
  5809. SEL1 RJM STM
  5810. NJN SEL3 IF PORT RESERVED
  5811. LDN 100D/4 DELAY 100 MILLISECONDS
  5812. STD T0
  5813. SEL2 DELAY
  5814. RJM CEF CHECK ERROR FLAG
  5815. RJM CTE
  5816. PJN SEL2 IF 100 MILLISECONDS NOT EXPIRED
  5817. SOD T2
  5818. NJN SEL1 IF TIME OUT NOT EXPIRED
  5819. LJM MRER * 1TM - NO TPM AVAILABLE.*
  5820.  
  5821. SEL3 LDC MXSM+TPMODE SET PORT OPERATING MODE
  5822. RJM IFN
  5823. LDK MXDR+1 SET *DATA TERMINAL READY*
  5824. RJM IFN
  5825. LDK MXRTS+1 SET *REQUEST TO SEND*
  5826. RJM IFN
  5827. LDK MXMC CLEAR PORT I/O BUFFERS
  5828. RJM IFN
  5829. RJM RMA RELEASE MULTIPLEXER ACCESS
  5830. UJP SELX RETURN
  5831. STP SPACE 4,15
  5832. ** STP - SYNCHRONIZE MONITOR *TSEM* PROCESSING.
  5833. *
  5834. * ISSUE SPECIAL *TSEM* REQUEST TO ENABLE
  5835. * *TSEM* REQUEST PROCESSING.
  5836. *
  5837. * ENTRY (IR+4) = DRIVER CONTROL WORD POINTER.
  5838. *
  5839. * USES CM - CM+4.
  5840. *
  5841. * MACROS MONITOR.
  5842.  
  5843.  
  5844. STP SUBR ENTRY/EXIT
  5845. LDK ZERL CLEAR ZERO WORD
  5846. CRD CM
  5847. LCN 0 SET *TSEM* REQUEST
  5848. STD CM
  5849. LDD MA WRITE REQUEST TO MESSAGE BUFFER
  5850. CWD CM
  5851. MONITOR TSEM ISSUE *TSEM* REQUEST
  5852. UJN STPX RETURN
  5853. TID SPACE 4,15
  5854. ** TID - SET TERMINAL ID TABLE.
  5855. *
  5856. * WRITES DRIVER TERMINAL ID TABLE TO CM.
  5857. *
  5858. * ENTRY (DC - DC+4) = DRIVER CONTROL WORD.
  5859. *
  5860. * EXIT DRIVER TERMINAL ID TABLE WRITTEN TO CM.
  5861. *
  5862. * USES CM - CM+4.
  5863.  
  5864.  
  5865. TID SUBR ENTRY/EXIT
  5866. LDD DC+1 SET DRIVER STACK ADDRESS
  5867. SHN 6
  5868. ADD RA
  5869. SHN 6
  5870. ADD DC+2
  5871. ADN 4 READ *LIMIT* POINTER
  5872. CRD CM
  5873. LDD CM+3 SET ADDRESS FOR ID TABLE
  5874. SHN 6
  5875. ADD RA
  5876. SHN 6
  5877. ADD CM+4
  5878. CWM TIDA,ON WRITE ID TABLE TO CM
  5879. CWM TIDB,ON
  5880. UJN TIDX RETURN
  5881.  
  5882.  
  5883. TIDA VFD 60/3LTPM TPM TERMINAL ID
  5884. TIDB VFD 60/6LBLKTPM BLKEDIT TPM TERMINAL ID
  5885. TITLE ERROR PROCESSING ROUTINES.
  5886. FTER SPACE 4,10
  5887. ** FTER - FUNCTION TIME-OUT ERROR PROCESSOR.
  5888. *
  5889. * ENTRY (A) = FUNCTION CODE.
  5890. *
  5891. * EXIT (A) = 1/ERROR LOG FLAG, 5/MESSAGE NUMBER.
  5892.  
  5893.  
  5894. FTER BSS 0 ENTRY
  5895. STM //IMTB SAVE FUNCTION CODE
  5896. LDN MFTO+40 * RMEEE CXX PYY FNNNN REJECT.*
  5897. * JMP IMT ISSUE MESSAGE AND TERMINATE
  5898. IMT SPACE 4,10
  5899. ** IMT - ISSUE MESSAGE AND TERMINATE.
  5900. *
  5901. * ENTRY (A) = 1/ERROR LOG FLAG, 5/MESSAGE NUMBER.
  5902. *
  5903. * EXIT TO *4TM*.
  5904. *
  5905. * MACROS EXECUTE.
  5906.  
  5907.  
  5908. IMT BSS 0 ENTRY
  5909. STM //IMTA SAVE MESSAGE REQUEST
  5910. EXECUTE 4TM
  5911. LJM DPP DROP PP
  5912. MRER SPACE 4,10
  5913. ** MRER - NORMAL ERROR PROCESSOR FOR *COMPMRA*.
  5914. *
  5915. * EXIT (A) = MESSAGE NUMBER.
  5916.  
  5917.  
  5918. MRER BSS 0 ENTRY
  5919. LDN MNTA * NO TPM AVAILABLE.*
  5920. UJN IMT ISSUE MESSAGE AND TERMINATE
  5921. SPACE 4,10
  5922. * COMMON DECKS.
  5923.  
  5924. *CALL COMPMRA
  5925. *CALL COMPTMA
  5926. PMA HERE
  5927. SPACE 4,10
  5928. QUAL *
  5929. SPACE 4,10
  5930. OVERFLOW PPFW,IMTA
  5931. TITLE
  5932. TTL 1TM/3TM - MODIFY TRANSLATION TABLES.
  5933. IDENT 3TM,MTTX
  5934. *COMMENT 1TM - MODIFY TRANSLATION TABLES.
  5935. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  5936. 3TM SPACE 4,10
  5937. *** 3TM - MODIFY TRANSLATION TABLES.
  5938. SPACE 4,10
  5939. ORG OVLA
  5940. MTT SPACE 4,15
  5941. ** MTT - MODIFY TRANSLATION TABLES.
  5942. *
  5943. * MODIFIES TRANSLATION TABLES FOR 63 CHARACTER SET.
  5944. *
  5945. * EXIT TRANSLATION TABLES MODIFIED IF THE SYSTEM
  5946. * IS IN 63 CHARACTER SET MODE.
  5947. *
  5948. * USES CM - CM+4.
  5949.  
  5950.  
  5951. MTT SUBR ENTRY/EXIT
  5952. LDK IPRL CHECK SYSTEM CHARACTER SET MODE
  5953. CRD CM
  5954. LDD CM+2
  5955. LPN 1
  5956. NJN MTTX IF SYSTEM IN 64 CHARACTER SET MODE
  5957.  
  5958. * MODIFY INPUT CONVERSION TABLE.
  5959.  
  5960. LDN 63 SET *COLON*
  5961. STM TINT+.ACLN
  5962. LDC 204 SET *PERCENT*
  5963. STM TINT+.APCT
  5964.  
  5965. * MODIFY OUTPUT CONVERSION TABLE.
  5966.  
  5967. LDC .CCLN SET *COLON*
  5968. STM TOTP+63
  5969. LDC .CPCT SET *PERCENT*
  5970. STM TOTP+204
  5971. JMP MTTX RETURN
  5972. TITLE INPUT TRANSLATION TABLE.
  5973. TTY SPACE 4,15
  5974. *** TTY - *ASCII* TERMINAL, 64 CHARACTER SET.
  5975. *
  5976. * USA STANDARD CODE FOR INFORMATION INTERCHANGE.
  5977. * USAS X3.4-1968 REVISION OF X3.4-1967.
  5978.  
  5979.  
  5980. ** INPUT CONVERSION.
  5981. *
  5982. * INDEXED BY *ASCII* CHARACTER VALUE.
  5983.  
  5984.  
  5985. TINT BSS 0 FWA OF INPUT TRANSLATION TABLE
  5986. QUAL TRN
  5987. LOC 0
  5988.  
  5989. 00 INASC 7640,BRK NUL FIRST CHARACTER OF A BREAK
  5990. 01 INASC 7641 SOH START OF HEADING
  5991. 02 INASC 7642 STX START OF TEXT
  5992. 03 INASC 7643,ETX ETX END OF TEXT
  5993. 04 INASC 7644,EOT EOT END OF TRANSMISSION
  5994. 05 INASC 7645 ENQ ENQUIRY
  5995. 06 INASC 7646 ACK ACKNOWLEDGE
  5996. 07 INASC 7647 BEL BELL
  5997. 08 INASC 7650,DPC BS BACKSPACE
  5998. 09 INASC 7651 HT HORIZONTAL TABULATION
  5999. 0A INASC 7652,NLI LF LINE FEED
  6000. 0B INASC 7653 VT VERTICAL TABULATION
  6001. 0C INASC 7654 FF FORM FEED
  6002. 0D INASC 7655,CRT CR CARRIAGE RETURN
  6003. 0E INASC 7656 SO SHIFT OUT
  6004. 0F INASC 7657 SI SHIFT IN
  6005.  
  6006. 10 INASC 7660 DLE DATA LINK ESCAPE
  6007. 11 INASC 7661 DC1 DEVICE CONTROL 1 (X-ON)
  6008. 12 INASC 7662 DC2 DEVICE CONTROL 2
  6009. 13 INASC 7663 DC3 DEVICE CONTROL 3 (X-OFF)
  6010. 14 INASC 7664 DC4 DEVICE CONTROL 4 (STOP)
  6011. 15 INASC 7665 NAK NEGATIVE ACKNOWLEDGE
  6012. 16 INASC 7666 SYN SYNCHRONOUS IDLE
  6013. 17 INASC 7667 ETB END OF TRANSMISSION BLOCK
  6014. 18 INASC 7670 CAN CANCEL
  6015. 19 INASC 7671 EM END OF MEDIUM
  6016. 1A INASC 7672 SUB SUBSTITUTE
  6017. 1B INASC 7673,DLN ESC ESCAPE
  6018. 1C INASC 7674 FS FILE SEPARATOR
  6019. 1D INASC 7675 GS GROUP SEPARATOR
  6020. 1E INASC 7676,CRS RS RECORD SEPARATOR
  6021. 1F INASC 7677 US UNIT SEPARATOR
  6022.  
  6023. 20 INASC 55 SP SPACE
  6024. 21 INASC 66 EX EXCLAMATION POINT
  6025. 22 INASC 64 DQ DOUBLE QUOTE (DIARESIS)
  6026. 23 INASC 60 NM NUMBER SIGN
  6027. 24 INASC 53 DS DOLLAR SIGN
  6028. 25 INASC 63 PCT PERCENT
  6029. * 25 INASC 7404 PCT PERCENT (63 CHARACTER SET)
  6030. 26 INASC 67 AM AMPERSAND
  6031. 27 INASC 70 AP APOSTROPHE
  6032. 28 INASC 51 OP OPENING PARENTHESIS
  6033. 29 INASC 52 CP CLOSING PARENTHESIS
  6034. 2A INASC 47 AS ASTERISK
  6035. 2B INASC 45 PL PLUS
  6036. 2C INASC 56 CM COMMA (CEDILLA)
  6037. 2D INASC 46 MI MINUS (HYPHEN)
  6038. 2E INASC 57 PD PERIOD (DECIMAL POINT)
  6039. 2F INASC 50 SL SLANT
  6040.  
  6041. 30 INASC 33 0
  6042. 31 INASC 34 1
  6043. 32 INASC 35 2
  6044. 33 INASC 36 3
  6045. 34 INASC 37 4
  6046. 35 INASC 40 5
  6047. 36 INASC 41 6
  6048. 37 INASC 42 7
  6049. 38 INASC 43 8
  6050. 39 INASC 44 9
  6051. 3A INASC ,CLN CL COLON
  6052. * 3A INASC 63 CL COLON (63 CHARACTER SET)
  6053. 3B INASC 77 SC SEMICOLON
  6054. 3C INASC 72 LT LESS THAN
  6055. 3D INASC 54 EQ EQUALS
  6056. 3E INASC 73 GT GREATER THAN
  6057. 3F INASC 71 QM QUESTION MARK
  6058.  
  6059. 40 INASC 7401,ECI AT COMMERCIAL AT
  6060. 41 INASC 01 A
  6061. 42 INASC 02 B
  6062. 43 INASC 03 C
  6063. 44 INASC 04 D
  6064. 45 INASC 05 E
  6065. 46 INASC 06 F
  6066. 47 INASC 07 G
  6067. 48 INASC 10 H
  6068. 49 INASC 11 I
  6069. 4A INASC 12 J
  6070. 4B INASC 13 K
  6071. 4C INASC 14 L
  6072. 4D INASC 15 M
  6073. 4E INASC 16 N
  6074. 4F INASC 17 O
  6075.  
  6076. 50 INASC 20 P
  6077. 51 INASC 21 Q
  6078. 52 INASC 22 R
  6079. 53 INASC 23 S
  6080. 54 INASC 24 T
  6081. 55 INASC 25 U
  6082. 56 INASC 26 V
  6083. 57 INASC 27 W
  6084. 58 INASC 30 X
  6085. 59 INASC 31 Y
  6086. 5A INASC 32 Z
  6087. 5B INASC 61 OB OPENING BRACKET
  6088. 5C INASC 75 RVS REVERSE SLANT
  6089. 5D INASC 62 CB CLOSING BRACKET
  6090. 5E INASC 7402,ECI CF CIRCUMFLEX
  6091. 5F INASC 65 UL UNDERLINE
  6092.  
  6093. 60 INASC 7407 GV GRAVE ACCENT
  6094. 61 INASC 7601 A LC
  6095. 62 INASC 7602 B LC
  6096. 63 INASC 7603 C LC
  6097. 64 INASC 7604 D LC
  6098. 65 INASC 7605 E LC
  6099. 66 INASC 7606 F LC
  6100. 67 INASC 7607 G LC
  6101. 68 INASC 7610 H LC
  6102. 69 INASC 7611 I LC
  6103. 6A INASC 7612 J LC
  6104. 6B INASC 7613 K LC
  6105. 6C INASC 7614 L LC
  6106. 6D INASC 7615 M LC
  6107. 6E INASC 7616 N LC
  6108. 6F INASC 7617 O LC
  6109.  
  6110. 70 INASC 7620 P LC
  6111. 71 INASC 7621 Q LC
  6112. 72 INASC 7622 R LC
  6113. 73 INASC 7623 S LC
  6114. 74 INASC 7624 T LC
  6115. 75 INASC 7625 U LC
  6116. 76 INASC 7626 V LC
  6117. 77 INASC 7627,CLW W LC
  6118. 78 INASC 7630 X LC
  6119. 79 INASC 7631 Y LC
  6120. 7A INASC 7632 Z LC
  6121. 7B INASC 7633 LB LEFT BRACE
  6122. 7C INASC 7634 VL VERTICAL LINE
  6123. 7D INASC 7635 RB RIGHT BRACE
  6124. 7E INASC 7636 TL TILDE (OVERLINE)
  6125. 7F INASC 7637,DEL DEL DELETE (RUBOUT)
  6126. QUAL *
  6127. LOC *O
  6128. TITLE OUTPUT TRANSLATION TABLE.
  6129. ** OUTPUT CONVERSION.
  6130. * INDEXED BY DISPLAY CODE VALUE.
  6131.  
  6132.  
  6133. TOTP BSS 0 FWA OF OUTPUT TRANSLATION TABLE
  6134. QUAL TRN
  6135. LOC 0
  6136.  
  6137. 00 OTASC 3A COLON
  6138. 01 OTASC 41 A
  6139. 02 OTASC 42 B
  6140. 03 OTASC 43 C
  6141. 04 OTASC 44 D
  6142. 05 OTASC 45 E
  6143. 06 OTASC 46 F
  6144. 07 OTASC 47 G
  6145.  
  6146. 10 OTASC 48 H
  6147. 11 OTASC 49 I
  6148. 12 OTASC 4A J
  6149. 13 OTASC 4B K
  6150. 14 OTASC 4C L
  6151. 15 OTASC 4D M
  6152. 16 OTASC 4E N
  6153. 17 OTASC 4F O
  6154.  
  6155. 20 OTASC 50 P
  6156. 21 OTASC 51 Q
  6157. 22 OTASC 52 R
  6158. 23 OTASC 53 S
  6159. 24 OTASC 54 T
  6160. 25 OTASC 55 U
  6161. 26 OTASC 56 V
  6162. 27 OTASC 57 W
  6163.  
  6164. 30 OTASC 58 X
  6165. 31 OTASC 59 Y
  6166. 32 OTASC 5A Z
  6167. 33 OTASC 30 0
  6168. 34 OTASC 31 1
  6169. 35 OTASC 32 2
  6170. 36 OTASC 33 3
  6171. 37 OTASC 34 4
  6172.  
  6173. 40 OTASC 35 5
  6174. 41 OTASC 36 6
  6175. 42 OTASC 37 7
  6176. 43 OTASC 38 8
  6177. 44 OTASC 39 9
  6178. 45 OTASC 2B PL PLUS
  6179. 46 OTASC 2D MI MINUS (HYPHEN)
  6180. 47 OTASC 2A AS ASTERISK
  6181.  
  6182. 50 OTASC 2F SL SLANT
  6183. 51 OTASC 28 OP OPENING PARENTHESIS
  6184. 52 OTASC 29 CP CLOSING PARENTHESIS
  6185. 53 OTASC 24 DS DOLLAR SIGN
  6186. 54 OTASC 3D EQ EQUALS
  6187. 55 OTASC 20 SP SPACE
  6188. 56 OTASC 2C CM COMMA (CEDILLA)
  6189. 57 OTASC 2E PD PERIOD (DECIMAL POINT)
  6190.  
  6191. 60 OTASC 23 NM NUMBER SIGN
  6192. 61 OTASC 5B OB OPENING BRACKET
  6193. 62 OTASC 5D CB CLOSING BRACKET
  6194. 63 OTASC 25 PCT PERCENT
  6195. * 63 OTASC 30 CLN COLON (63 CHARACTER SET)
  6196. 64 OTASC 22 DQ DOUBLE QUOTE (DIARESIS)
  6197. 65 OTASC 5F UL UNDERLINE
  6198. 66 OTASC 21 EX EXCLAMATION POINT
  6199. 67 OTASC 26 AM AMPERSAND
  6200.  
  6201. 70 OTASC 27 AP APOSTROPHE
  6202. 71 OTASC 3F QM QUESTION MARK
  6203. 72 OTASC 3C LT LESS THAN
  6204. 73 OTASC 3E GT GREATER THAN
  6205. 74 OTASC 40 AT COMMERCIAL AT
  6206. 75 OTASC 5C RVS REVERSE SLANT
  6207. 76 OTASC 5E CF CIRCUMFLEX
  6208. 77 OTASC 3B SC SEMICOLON
  6209.  
  6210. * EXTENDED CHARACTER SET (ESCAPE 1).
  6211.  
  6212. 7600 OTASC NULL
  6213. 7601 OTASC 61 A LC
  6214. 7602 OTASC 62 B LC
  6215. 7603 OTASC 63 C LC
  6216. 7604 OTASC 64 D LC
  6217. 7605 OTASC 65 E LC
  6218. 7606 OTASC 66 F LC
  6219. 7607 OTASC 67 G LC
  6220.  
  6221. 7610 OTASC 68 H LC
  6222. 7611 OTASC 69 I LC
  6223. 7612 OTASC 6A J LC
  6224. 7613 OTASC 6B K LC
  6225. 7614 OTASC 6C L LC
  6226. 7615 OTASC 6D M LC
  6227. 7616 OTASC 6E N LC
  6228. 7617 OTASC 6F O LC
  6229.  
  6230. 7620 OTASC 70 P LC
  6231. 7621 OTASC 71 Q LC
  6232. 7622 OTASC 72 R LC
  6233. 7623 OTASC 73 S LC
  6234. 7624 OTASC 74 T LC
  6235. 7625 OTASC 75 U LC
  6236. 7626 OTASC 76 V LC
  6237. 7627 OTASC 77 W LC
  6238.  
  6239. 7630 OTASC 78 X LC
  6240. 7631 OTASC 79 Y LC
  6241. 7632 OTASC 7A Z LC
  6242. 7633 OTASC 7B LB LEFT BRACE
  6243. 7634 OTASC 7C VL VERTICAL LINE
  6244. 7635 OTASC 7D RB RIGHT BRACE
  6245. 7636 OTASC 7E TL TILDE (OVERLINE)
  6246. 7637 OTASC 7F DEL DELETE
  6247.  
  6248. 7640 OTASC 00 NUL NULL (MEDIA FILL)
  6249. 7641 OTASC 01 SOH START OF HEADING
  6250. 7642 OTASC 02 STX START OF TEXT
  6251. 7643 OTASC 03 ETX END OF TEXT
  6252. 7644 OTASC 04 EOT END OF TRANSMISSION
  6253. 7645 OTASC 05 ENQ ENQUIRY
  6254. 7646 OTASC 06 ACK ACKOWLEDGE
  6255. 7647 OTASC 07 BEL BELL
  6256.  
  6257. 7650 OTASC 08 BS BACKSPACE
  6258. 7651 OTASC 09 HT HORIZONTAL TABULATION
  6259. 7652 OTASC 0A LF LINE FEED
  6260. 7653 OTASC 0B VT VERTICAL TABULATION
  6261. 7654 OTASC 0C FF FORM FEED
  6262. 7655 OTASC ,ACR CR CARRIAGE RETURN
  6263. 7656 OTASC 0E SO SHIFT OUT
  6264. 7657 OTASC 0F SI SHIFT IN
  6265.  
  6266. 7660 OTASC 10 DLE DATA LINK ESCAPE
  6267. 7661 OTASC 11 DC1 DEVICE CONTROL 1 (X-ON)
  6268. 7662 OTASC 12 DC2 DEVICE CONTROL 2
  6269. 7663 OTASC 13 DC3 DEVICE CONTROL 3 (X-OFF)
  6270. 7664 OTASC 14 DC4 DEVICE CONTROL 4 (STOP)
  6271. 7665 OTASC 15 NAK NEGATIVE ACKNOWLEDGE
  6272. 7666 OTASC 16 SYN SYNCHRONOUS IDLE
  6273. 7667 OTASC 17 ETB END OF TRANSMISSION BLOCK
  6274.  
  6275. 7670 OTASC 18 CAN CANCEL
  6276. 7671 OTASC 19 EM END OF MEDIUM
  6277. 7672 OTASC 1A SUB SUBSTITUTE
  6278. 7673 OTASC 1B ESC ESCAPE
  6279. 7674 OTASC 1C FS FILE SEPARATOR
  6280. 7675 OTASC 1D GS GROUP SEPARATOR
  6281. 7676 OTASC 1E RS RECORD SEPARATOR
  6282. 7677 OTASC 1F US UNIT SEPARATOR
  6283.  
  6284. * EXTENDED CHARACTER SET (ESCAPE 2).
  6285.  
  6286. 7400 OTASC NULL
  6287. 7401 OTASC 40 AT COMMERCIAL AT
  6288. 7402 OTASC 5E CF CIRCUMFLEX
  6289. 7403 OTASC NULL
  6290. 7404 OTASC 3A CL COLON
  6291. * 7404 OTASC 25 PCT PERCENT (63 CHARACTER SET)
  6292. 7405 OTASC 11 DC1 DEVICE CONTROL 1 (X-ON)
  6293. 7406 OTASC 13 DC3 DEVICE CONTROL 3 (X-OFF)
  6294. 7407 OTASC 60 GV GRAVE ACCENT
  6295.  
  6296. 7410 OTASC ,ACR CR CARRIAGE RETURN
  6297. 7411 OTASC 0A LF LINE FEED
  6298. 7412 OTASC ,ANL NL NEW LINE (CR/LF)
  6299.  
  6300. QUAL *
  6301. LOC *O
  6302.  
  6303. OVERFLOW OVLA
  6304. TTL 1TM/4TM - MESSAGE PROCESSOR.
  6305. TITLE MESSAGE PROCESSOR.
  6306. IDENT 4TM,MGPX
  6307. *COMMENT 1TM - MESSAGE PROCESSOR.
  6308. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  6309. SPACE 4,10
  6310. ORG OVLA
  6311. MGP SPACE 4,15
  6312. ** MGP - MESSAGE PROCESSOR.
  6313. *
  6314. * ENTRY (A) = 1/E,5/N.
  6315. * E = 1, IF MESSAGE IS TO GO TO ERROR LOG ALSO.
  6316. * N = ERROR MESSAGE NUMBER FROM TABLE *TMSG*.
  6317. *
  6318. * USES T0, T1, T2.
  6319. *
  6320. * CALLS DFM, O2D.
  6321. *
  6322. * NOTES WHEN A MESSAGE IS ISSUED TO THE ERROR LOG, THE
  6323. * FIRST SIX CHARACTERS (* 1TM -*) ARE NOT SENT.
  6324.  
  6325.  
  6326. MGP SUBR ENTRY/EXIT
  6327. LDM IMTA MESSAGE REQUEST
  6328. STD T0
  6329. LPN 37
  6330. ADC TMSG-1
  6331. STD T1 ADDRESS OF ADDRESS OF MESSAGE
  6332. LDI T1 SAVE MESSAGE ADDRESS
  6333. STM MGPA
  6334. LDD T1
  6335. LMC TMSG+MFTO-1
  6336. ZJN MGP3 IF FUNCTION TIME-OUT
  6337. MGP1 LDD T0
  6338. SHN 21-5
  6339. PJN MGP2 IF NOT TO BE ISSUED TO THE ERROR LOG
  6340. LDI T1
  6341. ADC 3+ERLN
  6342. RJM DFM ISSUE ERROR LOG MESSAGE
  6343. MGP2 LDC **
  6344. MGPA EQU *-1
  6345. RJM DFM ISSUE DAYFILE MESSAGE
  6346. JMP MGPX RETURN
  6347.  
  6348. * FORMAT EST ORDINAL INTO DAYFILE MESSAGE.
  6349.  
  6350. MGP3 LDI T1 SET FWA OF MESSAGE
  6351. STD T2
  6352. LDD EQ CONVERT UPPER 3 BITS
  6353. SHN -6
  6354. LPN 7
  6355. ADC 2RM0
  6356. STM 4,T2
  6357. LDD EQ CONVERT LOWER 6 BITS
  6358. RJM O2D
  6359. STM 5,T2
  6360.  
  6361. * FORMAT CHANNEL AND PORT NUMBERS INTO DAYFILE MESSAGE.
  6362.  
  6363. LDN MX CONVERT CHANNEL NUMBER
  6364. RJM O2D
  6365. STM 7,T2
  6366. LDD PN CONVERT PORT NUMBER
  6367. RJM O2D
  6368. STM 11,T2
  6369.  
  6370. * FORMAT FUNCTION CODE INTO DAYFILE MESSAGE.
  6371.  
  6372. LDM IMTB CONVERT UPPER TWO DIGITS
  6373. SHN -6
  6374. RJM O2D
  6375. STM 13,T2
  6376. LDM IMTB CONVERT LOWER TWO DIGITS
  6377. RJM O2D
  6378. STM 14,T2
  6379. UJP MGP1 ISSUE MESSAGES
  6380.  
  6381.  
  6382. TMSG BSS 0 TABLE OF ERROR MESSAGES
  6383. LOC 1
  6384.  
  6385. MCBR CON =C* 1TM - RDF CANNOT BE RUN ON MAINFRAME.*
  6386. MFTO CON =C* 1TM - RMEEE CXX PYY FNNNN REJECT.*
  6387. MNTA CON =C* 1TM - NO TPM AVAILABLE.*
  6388. MTIO CON =C* 1TM - RDF TIME-OUT.*
  6389. MTER CON =C* 1TM - RDF TERMINATED.*
  6390.  
  6391. LOC *O
  6392. O2D SPACE 4,15
  6393. ** O2D - CONVERT TWO DIGITS TO OCTAL DISPLAY CODE.
  6394. *
  6395. * ENTRY (A) = TWO OCTAL DIGITS TO BE CONVERTED.
  6396. *
  6397. * EXIT (A) = DISPLAY CODE CONVERSION.
  6398.  
  6399.  
  6400. O2D SUBR ENTRY/EXIT
  6401. LPN 77 MASK EXTRANEOUS BITS
  6402. STD T0 SAVE OCTAL VALUE
  6403. SHN 3 SPLIT UPPER AND LOWER 3-BIT VALUES
  6404. LMD T0
  6405. SCN 70
  6406. ADC 2R00 CONVERT DIGITS
  6407. UJN O2DX RETURN
  6408.  
  6409.  
  6410. OVERFLOW OVLA
  6411. TTL 1TM - RDF TWO-PORT MULTIPLEXER DRIVER.
  6412. ITM SPACE 4
  6413. END