Table of Contents

MREC

Table Of Contents

  • [00011] MREC - MACHINE RECOVERY UTILITY.
  • [00013] MACHINE RECOVERY UTILITY.
  • [00193] COMMON DECKS, MACROS, AND MICROS.
  • [00261] CONSTANTS, EQUIVALENCES, AND TEMPORARY STORAGE.
  • [00341] TMID - TABLE OF MACHINE STATE ENTRIES.
  • [00365] TABLES
  • [00367] TSDV - TABLE OF SHARED DEVICES. (THIS MACHINE)
  • [00380] TRDV - TABLE OF DEVICES TO RECOVER.
  • [00394] TSEQ - TABLE OF SHARED EQUIPMENT TYPES.
  • [00404] TSFM - TABLE OF SHARED FAMILY NAMES.
  • [00414] TSMI - TABLE OF SHARED MAINFRAME IDS.
  • [00426] PAMT - PARAMETER TABLE.
  • [00440] KDCT - K-DISPLAY COMMAND TABLE.
  • [00454] TVPC - VALID PARAMETER AND COMMAND TABLE.
  • [00474] MAIN ROUTINE.
  • [00557] COMMAND AND PARAMETER PROCESSORS.
  • [00559] EQP - PROCESS *EQ* PARAMETER.
  • [00713] IDP - PROCESS *ID* PARAMETER.
  • [00760] OPP - PROCESS *OP* PARAMETER.
  • [00813] OPPA - VALID OPTIONS.
  • [00826] REP - *RERUN* PROCESSOR.
  • [00854] PARAMETER TABLE MANAGEMENT.
  • [00856] PPA - PROCESS PARAMETERS.
  • [00871] GPR - GET NEXT ENTRY FROM PARAMETER TABLE.
  • [00895] PPT - PROCESS PARAMETER TABLE.
  • [00945] STB - SEARCH TABLE.
  • [00968] CDM - CHECK DOWN MACHINES.
  • [01005] SUBROUTINES.
  • [01007] DWN - DETERMINE IF MACHINE IS DOWN.
  • [01101] IFN - ISSUE *1MR* FUNCTION AND CHECK FOR ERRORS.
  • [01190] MRD - PROCESS RESERVES, BAT-S, DAT-S, FAT-S, AND MRT-S.
  • [01246] SSD - SEARCH FOR SHARED DEVICES AND FORMAT MST
  • [01467] MWD - MOVE N WORDS.
  • [01501] K-DISPLAY CONTROL.
  • [01503] DSD - DISPLAY MACHINES SHARING DEVICE.
  • [01684] PAG - PAGE LEFT DISPLAY.
  • [01724] PKE - PROCESS KEYBOARD ENTRY.
  • [01954] PRESET.
  • [01956] PRS - PRESET PROGRAM.

Source Code

MREC.txt
  1. IDENT MREC,ORIG
  2. ABS
  3. SST RECM
  4. ENTRY MREC
  5. ENTRY RFL=
  6. ENTRY SSJ=
  7. ENTRY UTL=
  8. SYSCOM B1
  9. *COMMENT MREC - MACHINE RECOVERY UTILITY.
  10. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  11. TITLE MREC - MACHINE RECOVERY UTILITY.
  12. SPACE 4
  13. *** MREC - MACHINE RECOVERY UTILITY.
  14. * R. J. PRIEVE. 75/02/14.
  15. * J. M. MAREK. 84/09/25.
  16. SPACE 4
  17. *** MREC CLEARS INTERLOCKS AND RELEASES MASS STORAGE
  18. * SPACE OF MACHINES THAT HAVE GONE DOWN IN A MULTI-
  19. * MAINFRAME ENVIRONMENT. THIS SPACE MAY THEN BE
  20. * UTILIZED BY REMAINING MACHINES SHARING THE DEVICE(S).
  21. *
  22. * *MREC* INTERFACES WITH OPERATOR VIA THE K-DISPLAY.
  23. * IT WILL DISPLAY THE STATUS OF ALL DEVICES THIS MACHINE
  24. * IS SHARING AND THE MID(S) OF OTHER MACHINES WITH
  25. * WHICH IT IS SHARING THEM. IT IS POSSIBLE TO BRING
  26. * UP THIS DISPLAY TO OBSERVE THE STATUS OF SHARED DEVICES
  27. * AND NOT DO ANY PROCESSING. TO DO THIS ENTER *MREC.* AND
  28. * BRING UP THE K-DISPLAY. TYPE *STOP* TO END PROGRAM IF NO
  29. * RECOVERY IS DESIRED. IF RECOVERY OF A DOWNED MACHINE IS
  30. * DESIRED, ENTER PARAMETERS AND TYPE *GO*.
  31. SPACE 4
  32. *** COMMAND.
  33. *
  34. * MREC.
  35. * MREC(ID=MID,EQ=E1,E2,...,EN)
  36. *
  37. * ID - MACHINE ID OF DOWNED MACHINE TO PROCESS.
  38. * THIS PARAMETER MUST BE ENTERED.
  39. *
  40. * EQ - EST ORDINALS OF DEVICES TO PROCESS. IF *EQ=ALL*
  41. * IS ENTERED, ALL DEVICES SHARED BETWEEN THIS MACHINE
  42. * AND DOWNED MACHINE WILL BE PROCESSED. DEFAULT = *ALL*.
  43. *
  44. * OP=R AND OP=I ARE PARAMETERS WHICH CAN ONLY BE
  45. * ENTERED VIA THE K-DISPLAY, AND THEN ONLY IF A UNIT
  46. * OR CONTROLLER RESERVE SITUATION OCCURS.
  47. * *OP=R* WILL DIRECT *1MR* TO RELEASE ALL UNIT
  48. * RESERVATIONS (844-N) FOR DEVICE BEING RECOVERED.
  49. * IS IT RECOMMENDED THAT MACHINES ACCESSING THE
  50. * DEVICE FROM THE OPPOSITE SIDE OF THE CONTROLLER THAN
  51. * THIS MACHINE BE IDLED BEFORE ENTERING THIS PARAMETER.
  52. * *OP=I* WILL DIRECT *1MR* TO IGNORE THE DEVICE.
  53. * THE MRT AND DAT WILL STILL BE PROCESSED, BUT NO
  54. * ATTEMPT WILL BE MADE TO CLEAN UP SYSTEM SECTORS
  55. * OF DIRECT ACCESS FILES ON THE DEVICE.
  56. * SEE THE DISCUSSION FOLLOWING *EQXXX, UNIT RESERVED.*
  57. * ERROR MESSAGE FOR ADDITIONAL INFORMATION.
  58. *
  59. *
  60. * IF MREC. IS ENTERED FROM THE CONSOLE, PARAMETERS AND
  61. * COMMANDS MAY BE ENTERED VIA THE K-DISPLAY.
  62. *
  63. * K-DISPLAY COMMANDS.
  64. *
  65. * *GO* - INITIATE PROCESSING OF MACHINE AND DEVICES SPECIFIED.
  66. *
  67. * *RERUN* - RE-INITIALIZE THE K-DISPLAY AND RERUN
  68. * THE PROGRAM. PARAMETERS MUST BE REENTERED.
  69. *
  70. * *STOP* - TERMINATE THE PROGRAM.
  71. *
  72. * *+* - PAGE THE LEFT DISPLAY FORWARD OR FROM THE LAST PAGE
  73. * TO THE FIRST ONE.
  74. *
  75. * *-* - PAGE THE LEFT DISPLAY BACK TO THE FIRST PAGE.
  76. *
  77. * *(* - PAGE THE RIGHT DISPLAY FORWARD.
  78. *
  79. * *)* - PAGE THE RIGHT DISPLAY BACKWARD.
  80. *
  81. * IF PARAMETERS ARE SPECIFIED ON THE COMMAND,
  82. * THE PROGRAM WILL AUTOMATICALLY *GO* IF ALL PARAMETERS
  83. * ARE IN CORRECT FORMAT AND WILL *STOP* UPON SUCCESSFUL
  84. * COMPLETION. IF AN ERROR OCCURS, THE ERROR MESSAGE WILL
  85. * APPEAR ON THE K-DISPLAY AND IT WILL THEN BE THE OPERATOR-S
  86. * RESPONSIBILITY TO REENTER PARAMETERS CORRECTLY AND TYPE
  87. * *GO* AND *STOP*.
  88. *
  89. *
  90. *
  91. * TERMINOLOGY.
  92. *
  93. * *MID* - MACHINE ID.
  94. *
  95. * *THIS MACHINE* - MACHINE WHICH *MREC* IS BEING RUN ON.
  96. SPACE 4
  97. *** DAYFILE MESSAGES.
  98. *
  99. * * NO SHARED DEVICES FOR THIS MACHINE.* - THIS
  100. * MACHINE IS NOT SHARING ANY DEVICES AND THEREFORE
  101. * COULD NOT ACCESS ANY DEVICES FOR A DOWNED MACHINE.
  102. *
  103. * * INCORRECT ORIGIN TYPE.* - MUST BE SYSTEM ORIGIN
  104. * TO RUN THIS PROGRAM.
  105. *
  106. * * MREC ABNORMAL TERMINATION.* - ERROR CONDITION OCCURRED WHICH
  107. * CAUSED *EREXIT* PROCESSING TO OCCUR.
  108. *
  109. * * PROCESSING COMPLETE.* - THIS MESSAGE IS INFORMATIVE
  110. * AND ALSO GOES TO THE K-DISPLAY.
  111. SPACE 4
  112. *** OPERATOR ERROR MESSAGES. (K-DISPLAY ONLY)
  113. *
  114. * *INCORRECT ENTRY.* - PARAMETER ENTERED IS INCORRECT.
  115. * REENTER CORRETLY.
  116. *
  117. * *INCORRECT FORMAT FOR MID.* - MACHINE ID ENTERED
  118. * WAS NOT 2 CHARACHTERS OR WAS NOT ALPHANUMERIC.
  119. * CORRECT AND REENTER.
  120. *
  121. * *INCORRECT FORMAT FOR EQ ENTRY.* - ERROR IN ENTERING
  122. * OF *EQ* PARAMETER. CORRECT AND REENTER.
  123. *
  124. * *MID SPECIFIED NOT DOWN.* - MACHINE ID WHICH WAS
  125. * SPECIFIED WAS NOT DETERMINED TO BE DOWN. REENTER
  126. * CORRECTLY OR TYPE *STOP*.
  127. *
  128. * *MID SPECIFIED NOT FOUND.* - MACHINE IS WHICH WAS
  129. * SPECIFIED IS NOT DEFINED IN THE COMPLEX. REENTER
  130. * CORRECTLY OR TYPE *STOP*.
  131. *
  132. * *MID NOT SPECIFIED.* - MID OF MACHINE TO PROCESS MUST
  133. * BE ENTERED. THEN TYPE *GO*.
  134. *
  135. * * LINK DEVICE READ ERROR.* - UNRECOVERABLE ERROR OCCURRED
  136. * WHEN ATTEMPTING TO READ LINK DEVICE. ONLY ENTRIES
  137. * ACCEPTED AFTER THIS ERROR ARE *STOP* OR *RERUN*.
  138. * (MESSAGE ALSO GOES TO DAYFILE.)
  139. *
  140. * * LINK DEVICE WRITE ERROR.* - UNRECOVERABLE ERROR OCCURRED
  141. * WHEN ATTEMPTING TO WRITE LINK DEVICE. ONLY ENTRIES
  142. * ACCEPTED AFTER THIS ERROR ARE *STOP* OR *RERUN*.
  143. * (MESSAGE ALSO GOES TO DAYFILE.)
  144. *
  145. * * EQXXX, CHXX, CONTROLLER RESERVED.*
  146. * CONTROLLER RESERVES MAY BE CLEARED BY HITTING THE
  147. * DEADSTART BUTTON ON THE DOWNED MACHINE. ONCE THE
  148. * CORRECTIVE ACTION HAS BEEN TAKEN, TYPE *GO* TO RESUME
  149. * PROCESSING.
  150. *
  151. * * EQXXX, UNXX, UNIT RESERVED.*
  152. * UNIT RESERVES MAY BE CLEARED ON 885 UNITS BY HITTING
  153. * THE DEADSTART BUTTON ON THE DOWNED MACHINE.
  154. * UNIT RESERVES MAY BE CLEARED ON 844 AND 841 DEVICES BY
  155. * TOGGLING THE DEVICE OFF LINE AND BACK ON LINE VIA A SWITCH
  156. * IN BACK OF THE DRIVE. IF THIS IS IMPOSSIBLE THE *OP=R*
  157. * OPTION MAY BE SELECTED FOR 844 DEVICES. THIS OPTION
  158. * MUST BE USED WITH DISCRETION SINCE IT AFFECTS THE
  159. * OPERATION OF ALL DRIVES CONNECTED TO THE CONTROLLERS
  160. * ACCESSING THE DRIVE WITH THE UNIT RESERVED. SPECIFICALLY
  161. * THE USE OF *OP=R* MAY CAUSE UNRECOVERABLE DISK ERRORS
  162. * ON ANY SUCH DRIVE.
  163. *
  164. * ONCE THE CORRECT ACTION HAS BEEN TAKEN, TYPE *GO* TO
  165. * RESUME PROCESSING. IF THE RESERVE IS STILL NOT CLEARED,
  166. * THE OPERATOR WILL AGAIN BE NOTIFIED, IN WHICH CASE HE CAN
  167. * REPEAT THE PROCEDURE TO CLEAR THE RESERVE.
  168. *
  169. * *INCORRECT OPTION.* - INCORRECT OPTION ENTERED ON THE
  170. * *OP* PARAMETER.
  171. *
  172. * *INCORRECT EQUIPMENT.* - *OP=R* MAY ONLY BE ENTERED FOR
  173. * 844-N DEVICES.
  174. SPACE 4,20
  175. *** K-DISPLAY FORMAT.
  176. *
  177. * 1 2 3 4 5 6
  178. * 1234567890123456789012345678901234567890123456789012345678901234
  179. * MACHINE RECOVERY UTILITY PAGE 1 OF 99
  180. *
  181. * EQ TYPE UN DN FM/PN MIDS SHARING DEVICE
  182. * --- ---- -- -- ------- -------------------------------
  183. * 6 DJ 0 40 PACK001 11 22* 33 44 55 66
  184. * 7 DJ-4 1 41 PACK002 22* 33
  185. * 111 DQ 40 40 FAMILY1 11 22*
  186. *
  187. *
  188. * ID OF DOWNED MACHINE = XX
  189. * EQ(S) TO RECOVER = ALL
  190. *
  191. * MESSAGE LINE
  192. * KEYBOARD INPUT LINE
  193. TITLE COMMON DECKS, MACROS, AND MICROS.
  194.  
  195.  
  196. *CALL COMCMAC
  197. *CALL COMCDCM
  198. QUAL MMF
  199. *CALL COMSMMF
  200. QUAL *
  201. MMPF EQU /MMF/MMPF DEFINE TAG FOR *COMSMRT*
  202. MXMF EQU /MMF/MXMF
  203. QUAL MRT
  204. *CALL COMSMRT
  205. QUAL *
  206. *CALL COMSPRD
  207. *CALL COMSSSD
  208. *CALL COMSSSJ
  209. SPACE 4
  210. *** MWORDS - MOVE N WORDS.
  211. *
  212. * MWORDS FROM,TO,COUNT
  213. *
  214. * FROM ADDRESS TO GET DATA FROM.
  215. * TO ADDRESS TO MOVE DATA TO.
  216. * COUNT NUMBER OF WORDS TO MOVE. (IF NOT SPECIFIED,
  217. * DEFAULT = 3.)
  218.  
  219.  
  220. PURGMAC MWORDS
  221.  
  222. MWORDS MACRO F,T,C
  223.  
  224. SB2 F
  225. SB3 T
  226. IFC EQ,$C$$
  227. SB4 3
  228. ELSE 1
  229. SB4 C
  230. RJ MWD
  231. ENDM
  232. SPACE 4
  233. *** BITCON - SET BIT CONSTANT.
  234. *
  235. * BITCON P
  236. *
  237. * WHERE P = (P1, P2, ..., PN)
  238. * WITH P1 - PN = BIT NUMBER TO SET IN WORD.
  239.  
  240.  
  241. PURGMAC BITCON
  242.  
  243. BITCON MACRO P
  244.  
  245. LOCAL A,B
  246. A MICRO 1,,
  247. IRP P
  248. B DECMIC P
  249. A MICRO 1,, "A"+1S"B"
  250. IRP
  251. CON "A"
  252. ENDM
  253. MICROS SPACE 4,10
  254. ** MICROS.
  255.  
  256.  
  257. 30BLANKS MICRO 1,30,$ $
  258. 40BLANKS MICRO 1,40,$"30BLANKS" $
  259. 50BLANKS MICRO 1,50,$"40BLANKS" $
  260. 60BLANKS MICRO 1,60,$"50BLANKS" $
  261. TITLE CONSTANTS, EQUIVALENCES, AND TEMPORARY STORAGE.
  262.  
  263. ORG 106B
  264. ORIG BSS 0
  265. SSJ= VFD 12/0,24/-0,12/MRCS,12/IRSI
  266. BSSZ SSJL-1
  267.  
  268.  
  269. * ASSEMBLY CONSTANTS.
  270.  
  271.  
  272. MSTBL EQU MSTXL LENGTH OF MST BUFFER
  273. PARML EQU 62B LENGTH OF PARAMETER AREA
  274. PAGLN EQU 12 NUMBER OF K-DISPLAY EQUIPMENT ENTRIES
  275. LLEN EQU 7 NUMBER OF WORDS IN K-DISPLAY LINE
  276. UTL= EQU 0 PERMIT ACCESS TO A SUSPECT DEVICE
  277.  
  278.  
  279. * LOW CORE READ STATUS WORDS.
  280.  
  281.  
  282. RESP VFD 12/0,12/1,18/ESTP,18/ESTF EST POINTER
  283. RMMF VFD 12/0,12/1,18/MMFL,18/MMFP *MMFL* WORD
  284. RMST VFD 12/0,12/MSTBL,18/0,18/MSTB MST
  285. RDIT VFD 12/0,12//MMF/MMPF,18/0,18/SCRB DIT
  286.  
  287.  
  288. * *1MR* CONTROL.
  289.  
  290.  
  291. REQW BSS 1 REQUEST WORD
  292. RDIW VFD 18/3R1MR,6/0,18//MRT/RDI,18/TSDV
  293. PMTW VFD 18/3R1MR,6/0,18//MRT/PMT,18/TRDV
  294. PRBW VFD 18/3R1MR,6/0,18//MRT/PRB,18/TRDV
  295. UMTW VFD 18/3R1MR,6/0,18//MRT/UMT,18/0
  296.  
  297.  
  298. * FLAGS AND TEMPORARY STORAGE.
  299. *
  300. * THE FOLLOWING WORDS ARE ZEROED OUT WHEN THE PROGRAM
  301. * IS INITIALIZED AND IN THE EVENT OF *RERUN*.
  302.  
  303.  
  304. CLER EQU * FIRST WORD TO ZERO
  305. AUTO BSS 1 AUTOMATIC *GO*, *STOP* FLAG
  306. CVEM BSS 1 CURRENT VALID ENTRY MASK
  307. ESTF BSS 1 EST POINTER
  308. LCSW BSS 1 LOW CORE READ STATUS WORD
  309. MIDP BSS 1 MACHINE ID OF DOWNED MACHINE
  310. NSDV BSS 1 NUMBER OF SHARED DEVICES (THIS MACHINE)
  311. PTPR BSS 1 POINTER INTO PARAMETER TABLE
  312. SORT BSS 1 TABLE SORT FLAG (SEE ROUTINE *MRD*)
  313. CLERL EQU * END OF WORDS TO ZERO
  314.  
  315. DBFA VFD 30/SDD1,30/SDD2 DOUBLE BUFFERS FOR THE *K* DISPLAY
  316. FNDV VFD 12/0,48/0 12/PAGE-1,24/CURRENT DEVICE,24/NEXT DEVICE
  317. MMFP BSS 1 *MMFL* WORD FOR THIS MACHINE
  318. NKDP BSS 1 NUMBER OF *K* DISPLAY PAGES
  319. NPAR BSS 1 NUMBER OF PARAMETERS ON COMMAND
  320. SPACE 4
  321.  
  322. ERRNG /MRT/COM-* OVERFLOW INTO COMMON STORAGE
  323. EJECT
  324.  
  325.  
  326. * THE FOLLOWING LOCATIONS ARE READ AND WRITTEN BY
  327. * *1MR*. DO NOT ADD OR DELETE ANY LOCATIONS WITHOUT ALSO
  328. * CHANGING *COMSMRT*.
  329. *
  330. * THESE LOCATIONS ARE ALSO ZEROED OUT AT INITIALIZATION
  331. * AND IN EVENT OF *RERUN*.
  332.  
  333.  
  334. ORG /MRT/COM
  335.  
  336. COM BSS 0 BEGINNING OF COMMON STORAGE
  337. MASK BSS 1 MACHINE INDEX OF DOWNED MACHINE
  338. RCLW BSS 1 *1MR* RECALL CONTROL
  339. ERRW BSS 1 ERROR RETURN WORD (BYTE 4)
  340. SPACE 4
  341. ** TMID - TABLE OF MACHINE STATE ENTRIES.
  342. *
  343. *T, 12/ MID,1/T,1/L,1/,9/ EQ,18/ 0,18/ STA
  344. *
  345. * MID MACHINE ID.
  346. * T SET IF MACHINE HAS INDEPENDENT SHARED DEVICES.
  347. * L LOW SPEED PORT LINK ON THIS MACHINE.
  348. * EQ EST ORDINAL OF LINK DEVICE.
  349. * STA STATE OF THIS MACHINE AS DEFINED IN *COMSMMF*.
  350. *
  351. * NOTE - EQ AND STA = 0, IF NOT EM MMF.
  352.  
  353.  
  354. TMID BSS 0
  355. LOC 0
  356. BSSZ /MMF/MXMF EXTENDED MEMORY MMF MAINFRAMES
  357. TMIDI BSSZ /MMF/MMPF START OF MAINFRAMES WITH ISHARE DEVICES
  358. TMIDL EQU * MAXIMUM NUMBER OF MAINFRAMES
  359. LOC *O
  360.  
  361.  
  362. COML EQU *-COM END OF COMMON STORAGE
  363.  
  364. ERRNZ /MRT/COML-COML COMMON STORAGE OUT OF SYNC
  365. TITLE TABLES
  366. TSDV SPACE 4,10
  367. ** TSDV - TABLE OF SHARED DEVICES. (THIS MACHINE)
  368. *
  369. *T, TSDV 12/ MASKS,24/,12/ TY,12/ EQ
  370. *T,SRMS 18/ 0,18/ *TSMI* POINTER,12/ 1,12/ EQ
  371. *
  372. * EQ EST ORDINAL OF SHARED DEVICE.
  373. * MASKS MACHINE MASKS OF OTHER MACHINES SHARING THE
  374. * DEVICE. RETURNED BY 1MR FUNCTION *RDI*.
  375.  
  376.  
  377. TSDV BSS 0
  378. BSS MSMX+1
  379. TRDV SPACE 4,10
  380. ** TRDV - TABLE OF DEVICES TO RECOVER.
  381. *
  382. *T, 12/ RC,24/,12/ TY,12/ EQ
  383. *
  384. * RC RETURN CODE IF UNIT OR CONTROLLER RESERVED. SEE
  385. * COMSMRT FOR CODES. THIS DEPENDS ON OPERATOR ACTION.
  386. * EQ EST ORDINAL OF DEVICE TO RECOVER.
  387. * TY TYPE OF SHARED DEVICE.
  388. * 1 = ISHARE DEVICE.
  389. * 0 = EXTENDED MEMORY MMF DEVICE.
  390.  
  391.  
  392. TRDV BSS MSMX+1
  393. TSEQ SPACE 4,10
  394. ** TSEQ - TABLE OF SHARED EQUIPMENT TYPES.
  395. *
  396. *T, 24/ DEVICE TYPE,18/ 0,12/ UNIT NUMBER, 6/ 0
  397. *
  398. * THE DEVICE TYPE AND UNIT NUMBER ARE IN DISPLAY CODE,
  399. * FORMATTED AS THEY WILL APPEAR IN THE DISPLAY.
  400.  
  401.  
  402. TSEQ BSS MSMX+1
  403. TSFM SPACE 4,10
  404. ** TSFM - TABLE OF SHARED FAMILY NAMES.
  405. *
  406. *T 12/ DEVICE NO.,6/ 0,42/ FAMILY NAME
  407. *
  408. * THE DEVICE NUMBER AND FAMILY NAME ARE IN DISPLAY CODE, BUT
  409. * MUST BE REFORMATTED BEFORE THEY ARE PUT INTO THE DISPLAY.
  410.  
  411.  
  412. TSFM BSS MSMX+1
  413. TSMI SPACE 4,10
  414. ** TSMI - TABLE OF SHARED MAINFRAME IDS.
  415. *
  416. *T 12/ MID1,12/ MID2,12/ MID3,12/ MID4,12/ MID5
  417. *
  418. * THE MIDS ARE FOR ISHARE DEVICES. A POINTER IN *TSDV* POINTS
  419. * TO THE FIRST WORD OF THAT DEVICES MIDS. THE LIST OF MIDS
  420. * ENDS WITH A ZERO BYTE OR WITH *MMPF*-1 MIDS.
  421.  
  422. .1 SET MMPF-1+4
  423. SMLX EQU .1/5 MAXIMUM WORDS PER MID LIST
  424. TSMI BSS SMLX*MSMX+1
  425. PAMT SPACE 4,10
  426. ** PAMT - PARAMETER TABLE.
  427. *
  428. *T 12/PARM,24/0,6/VOM,18/PROC
  429. *
  430. * PARM PARAMETER KEYWORD.
  431. * VOM VALID OPTION MASK.
  432. * PROC PROCESSOR ADDRESS FOR PARAMETER.
  433.  
  434.  
  435. PAMT VFD 12/2LID,24/0,6/IDPR,18/IDP *ID*
  436. VFD 12/2LEQ,24/0,6/EQPR,18/EQP *EQ*
  437. VFD 12/2LOP,24/0,6/OPPR,18/OPP *OP*
  438. CON 0 END OF TABLE
  439. KDCT SPACE 4,10
  440. ** KDCT - K-DISPLAY COMMAND TABLE.
  441. *
  442. *T, 36/COMM,6/VOM,18/PROC
  443. *
  444. * COMM COMMAND.
  445. * VOM VALID OPTION MASK.
  446. * PROC PROCESSOR ADDRESS FOR COMMAND.
  447.  
  448.  
  449. KDCT VFD 36/2LGO,6/GOCM,18/GO *GO*
  450. VFD 36/5LRERUN,6/RECM,18/REP *RERUN*
  451. VFD 36/4LSTOP,6/STCM,18/STOP *STOP*
  452. CON 0 END OF TABLE
  453. TVPC SPACE 4,5
  454. ** TVPC - VALID PARAMETER AND COMMAND TABLE.
  455.  
  456.  
  457. TVPC EQU *
  458. LOC 0
  459. IDPR BSS 1 *ID* PARAMETER
  460. EQPR BSS 1 *EQ* PARAMETER
  461. OPPR BSS 1 *OP* PARAMETER
  462. GOCM BSS 1 *GO* COMMAND
  463. RECM BSS 1 *RERUN* COMMAND
  464. STCM BSS 1 *STOP* COMMAND
  465. LOC *O
  466. ORG TVPC
  467. SPACE 4
  468. ** VALID ENTRY MASKS.
  469.  
  470.  
  471. NORP BITCON (IDPR,EQPR,GOCM,RECM,STCM) NORMAL PROCESSING
  472. ERRP BITCON (RECM,STCM) PROCESSING AFTER LINK DEVICE ERROR
  473. RSVP BITCON (OPPR,GOCM,RECM,STCM) PROCESSING AFTER RESERVE
  474. TITLE MAIN ROUTINE.
  475.  
  476. * MAIN ROUTINE.
  477.  
  478.  
  479. MREC RJ PRS PRESET
  480. RERUN RJ IBF INITIALIZE BUFFERS
  481. RJ SSD SEARCH FOR SHARED DEVICES
  482.  
  483. SA1 NSDV CHECK NUMBER OF SHARED DEVICES
  484. NZ X1,MRE1 IF SHARED DEVICES
  485. MESSAGE (=C* NO SHARED DEVICES FOR THIS MACHINE.*)
  486. EQ ABT1
  487.  
  488. MRE1 BX6 X6-X6 TERMINATE TABLE
  489. SA6 TSDV+X1
  490. SA6 TRDV+X1
  491.  
  492. * RETRIEVE ADDITIONAL DISPLAY INFORMATION FROM LINK DEVICE IF
  493. * THIS MACHINE RUNNING EXTENDED MEMORY MMF.
  494.  
  495. SA1 MMFP
  496. MX0 -9
  497. AX1 36
  498. BX1 -X0*X1
  499. ZR X1,MRE2 IF THIS MF NOT RUNNING EXTENDED MEMORY MMF
  500. SA1 RDIW SET FUNCTION *RDI*
  501. RJ IFN
  502.  
  503. * GENERATE K-DISPLAY FOR SHARED DEVICES.
  504.  
  505. MRE2 RJ DSD DISPLAY SHARED DEVICES
  506. EQ PPA PROCESS PARAMETERS
  507.  
  508. * DETERMINE IF MACHINE SPECIFIED IS DOWN.
  509.  
  510. GO SA1 MIDP
  511. NZ X1,MRE3 IF MID SPECIFIED
  512. MWORDS ERR7,MSDS+1 *MID NOT SPECIFIED.*
  513. EQ PPA PROCESS PARAMETERS
  514.  
  515. MRE3 BX0 X1
  516. LX0 48
  517. SA3 MMFP
  518. MX6 12
  519. BX3 X6*X3
  520. BX6 X3-X0
  521. SB6 B0
  522. ZR X6,MRE4 IF SPECIFIED MACHINE IS THIS MF
  523. RJ DWN
  524. NG B6,MRE5 IF MACHINE SPECIFIED IS DOWN
  525. MRE4 MWORDS ERR4,MSDS+1 *MID SPECIFIED NOT DOWN.*
  526. ZR B6,PPA IF MACHINE FOUND BUT NOT DOWN
  527. MWORDS ERR5,MSDS+1 *MID SPECIFIED NOT FOUND.*
  528. EQ PPA PROCESS PARAMETERS
  529.  
  530.  
  531. * PROCESS RESERVES, BAT-S, DAT-S, FAT-S, AND MRT-S.
  532.  
  533. MRE5 BX6 X1 SET *MMFL* WORD FOR DOWNED MACHINE
  534. SA6 MASK
  535. MESSAGE (=C* *),2,R CLEAR *REQUEST K DISPLAY*
  536. MESSAGE (=C* *),1,R
  537. RJ MRD CALL *PRB* AND *PMT* FUNCTIONS
  538. MESSAGE MES1 * PROCESSING COMPLETE.*
  539. MWORDS MES1,MSDS+1
  540. SA1 AUTO
  541. NZ X1,STOP IF AUTOMATIC *STOP*
  542. EQ PPA REQUEST INFORMATION FROM K-DISPLAY
  543. SPACE 4
  544. ** TERMINATION PROCESSOR.
  545.  
  546.  
  547. ABT SA1 B0 CHECK TYPE OF ERROR
  548. MX0 -6
  549. LX1 12
  550. BX2 -X0*X1
  551. SX3 X2-ODET
  552. ZR X3,ABT1 IF OPERATOR DROP
  553. MESSAGE (=C* MREC ABNORMAL TERMINATION.*)
  554. ABT1 ABORT
  555.  
  556. STOP ENDRUN
  557. TITLE COMMAND AND PARAMETER PROCESSORS.
  558. EQP SPACE 4
  559. ** EQP - PROCESS *EQ* PARAMETER.
  560. *
  561. * EXIT TO *PPTA* IF PROCESS NEXT PARAMETER.
  562. * TO *PPA* IF ERROR IN EQUIPMENT FORMAT.
  563. *
  564. * USES X - ALL.
  565. * A - 0, 1, 2, 3, 6, 7.
  566. * B - 2, 3, 4, 5, 6, 7.
  567. *
  568. * CALLS DXB, GPR.
  569. *
  570. * MACROS MWORDS.
  571.  
  572.  
  573. * PROCESS FIRST ARGUMENT.
  574.  
  575. EQP SB6 B0
  576. SB7 B0 SET OCTAL BASE
  577. SA3 ESTF GET LAST MASS STORAGE ORDINAL + 1
  578. MX4 -12
  579. AX3 12
  580. BX6 -X4*X3
  581. SA6 EQPA
  582. RJ GPR GET NEXT PARAMETER TABLE ENTRY
  583. ZR X2,EQP4 ERROR IF TERMINATOR
  584. NZ B2,EQP4 ERROR IF SEPARATOR
  585. MX0 36
  586. SA3 =3LALL CHECK IF *ALL* ENTERED
  587. BX4 X3-X2
  588. ZR X4,EQP5 IF *ALL*
  589. EQ EQP2 PROCESS FIRST ARGUMENT
  590.  
  591. * PROCESS REMAINDER OF ARGUMENTS.
  592.  
  593. EQP1 RJ GPR GET NEXT PARAMETER TABLE ENTRY
  594. ZR X2,EQP6 IF TERMINATOR
  595. NZ B2,EQP6 IF SEPARATOR
  596. EQP2 BX5 X2 CONVERT TO BINARY
  597. LX2 18
  598. SA0 X2+
  599. RJ DXB
  600. NZ X4,EQP4 IF CONVERSION ERROR
  601. SA3 EQPA GET LAST MASS STORAGE ORDINAL + 1
  602. SB2 X3
  603. SB3 X6+
  604. SB2 B3-B2
  605. PL B2,EQP4 IF EST ORDINAL .GT. MAXIMUM
  606. ZR X6,EQP4 IF EST ORDINAL = 0
  607. R= X3,ESTE
  608. IX3 X6*X3
  609. SA3 ESTB+X3+EQDE SET TYPE OF SHARED DEVICE
  610. LX3 59-52
  611. PL X3,EQP3 IF NOT ISHARE DEVICE
  612. MX4 -1
  613. LX4 12
  614. BX6 -X4+X6
  615. EQP3 SA6 TRDV+B6 STORE ENTRY IN TABLE OF DEVICES TO RECOVER
  616.  
  617. * (A0) = EST ORDINAL IN DISPLAY CODE, LEFT-JUSTIFIED.
  618.  
  619. SX6 A0 STORE DISPLAY CODE FOR K-DISPLAY
  620. MX3 -18
  621. BX6 -X3*X6
  622. SX3 40404B CALCULATE THE NUMBER OF DIGITS
  623. IX4 X6-X3
  624. LX3 3
  625. BX4 X4*X3
  626. PX4 X4
  627. ZX4,B2 X4 48 = 3 DIGITS, 42 = 2 DIGITS, 36 = 1 DIGIT
  628. PX6 X6,B2
  629. SA6 SCRB+B6
  630. SB6 B6+B1 INCREMENT TABLE INDEX
  631. EQ EQP1 LOOP
  632.  
  633. EQP4 MWORDS ERR3,MSDS+1 *INCORRECT FORMAT FOR EQ ENTRY.*
  634. EQ PPA REQUEST INFORMATION FROM K-DISPLAY
  635.  
  636. EQP5 SA1 TSDV+B6 SET TO PROCESS ALL SHARED DEVICES
  637. BX6 -X0*X1
  638. SB6 B6+B1
  639. SA6 TRDV-1+B6
  640. NZ X1,EQP5 IF NOT END OF TABLE
  641. SA1 DFEQ SET *ALL* IN K-DISPLAY
  642. BX7 X1
  643. SA7 EQDS
  644. MWORDS BLKW+2,EQDS+1,4
  645. MWORDS BLKW,EQDS1+1,6
  646. EQ PPTA
  647.  
  648. EQP6 BX6 X6-X6 TERMINATE TABLES
  649. SA6 SCRB+B6
  650. BX0 X0-X0
  651. SA6 TRDV+B6
  652. SA1 PTPR SET TO RECHECK LAST PARAMETER
  653. SX6 X1-1
  654. SA6 A1
  655.  
  656. * MOVE EQUIPMENT(S) TO RECOVER TO K-DISPLAY.
  657.  
  658. MX6 24
  659. SA1 EQDS CLEAR CURRENT ENTRIES IN K-DISPLAY
  660. BX6 X6*X1
  661. SA6 A1
  662. MWORDS BLKW+2,EQDS+1,4
  663. MWORDS BLKW,EQDS1+1,6
  664. SA1 EQDS-1
  665. SA2 SCRB
  666. SA3 A1+B1
  667. BX6 X1
  668. SA6 A1
  669. BX6 X3
  670. SB2 6*6 UNUSED BITS IN THE FIRST WORD
  671. SB3 4 WORDS IN FIRST LINE OF K-DISPLAY
  672. SB5 48
  673. SB6 60
  674. EQP7 ZR X2,EQP10 IF END OF TABLE
  675. UX7,B7 X2
  676. SA2 A2+B1
  677. SB4 B5-B7 TRAILING BITS OF ZEROS
  678. SB7 B7-30 NUMBER OF BITS OF EQUIPMENT NUMBER
  679. AX7 B4
  680. ZR X2,EQP8 IF END OF TABLE
  681. SX4 2R, APPEND A *, *
  682. LX7 12
  683. SB7 B7+12
  684. BX7 X7+X4
  685. EQP8 SB2 B2-B7 DECREMENT UNUSED BIT COUNT
  686. LX4 X7,B2
  687. BX6 X6+X4
  688. MX4 30
  689. GT B2,B0,EQP7 IF THIS IS NOT THE END OF THE WORD
  690. SA6 A6+B1 STORE THE CHARACTERS THAT FIT IN THE WORD
  691. SB2 B2+B6 GET THE CHARACTERS THAT DID NOT FIT
  692. LX7 B2
  693. BX6 X4*X7
  694. SB3 B3-1
  695. NZ B3,EQP7 IF THIS IS NOT THE END OF THE LINE
  696. ZR X6,EQP9 IF ALL CHARACTERS FIT INTO THE LAST WORD
  697. SA6 A6+1
  698. EQP9 SA1 EQDS1 INITIALIZE THE SECOND LINE
  699. SB2 10*6
  700. SB3 6
  701. BX6 X1
  702. SA6 A1
  703. BX6 X6-X6
  704. EQ EQP7 PROCESS NEXT LINE
  705.  
  706. EQP10 ZR X6,PPTA IF THIS WORD IS EMPTY
  707. SA6 A6+1
  708. EQ PPTA RETURN TO PROCESS NEXT PARAMETER
  709.  
  710.  
  711. EQPA CON 0 LAST MASS STORAGE ORDINAL + 1
  712. IDP SPACE 4,15
  713. ** IDP - PROCESS *ID* PARAMETER.
  714. *
  715. * EXIT TO *PPTA* IF PROCESS NEXT PARAMETER.
  716. * TO *PPA* IF ERROR IN MACHINE ID FORMAT.
  717. *
  718. * USES X - 1, 2, 3, 4, 6, 7.
  719. * A - 1, 6.
  720. * B - 2.
  721. *
  722. * CALLS GPR.
  723. *
  724. * MACROS MWORDS.
  725.  
  726.  
  727. IDP RJ GPR GET NEXT TABLE ENTRY
  728. NZ B2,IDP2 ERROR IF SEPARATOR
  729. ZR X2,IDP2 ERROR IF TERMINATOR
  730. MX3 12
  731. BX4 -X3*X2
  732. NZ X4,IDP2 ERROR IF MID MORE THAN 2 CHARACTERS
  733. BX6 X3*X2 SET MACHINE ID
  734. LX6 12
  735. MX4 -6
  736. BX7 -X4*X6
  737. ZR X7,IDP1 IF 1 CHARACTER MID
  738. SB2 X7-1RA
  739. NG B2,IDP2 IF INCORRECT MID
  740. SB2 X7-1R9
  741. GT B2,IDP2 IF INCORRECT MID
  742. IDP1 LX4 6
  743. BX7 -X4*X6
  744. SB2 X7-1RA*100B
  745. NG B2,IDP2 IF INCORRECT MID
  746. SB2 X7-1R9*100B
  747. GT B2,IDP2 IF INCORRECT MID
  748. SA6 MIDP
  749. SA1 IDDS+2 SET MID IN K-DISPLAY
  750. MX3 42
  751. LX6 6
  752. BX2 X3*X1
  753. BX6 X2+X6
  754. SA6 A1+
  755. EQ PPTA RETURN FOR NEXT PARAMETER
  756.  
  757. IDP2 MWORDS ERR2,MSDS+1 *INCORRECT FORMAT FOR MID.*
  758. EQ PPA REQUEST INFORMATION FROM K-DISPLAY
  759. OPP SPACE 4
  760. ** OPP - PROCESS *OP* PARAMETER.
  761. *
  762. * ENTRY (ERRW, 24-35) = INDEX OF EQUIPMENT IN *TRDV*.
  763. * (ERRW, 12-23) = EST ORDINAL OF DEVICE.
  764. *
  765. * EXIT BYTE 0 OF EQUIPMENT ENTRY IN *TRDV* = RETURN CODE.
  766. * TO *PPTA* IF PROCESS NEXT PARAMETER.
  767. * TO *PPA* IF FORMAT ERROR.
  768. *
  769. * USES X - ALL.
  770. * A - 1, 2, 5, 7.
  771. *
  772. * CALLS GPR, STB.
  773. *
  774. * MACROS MWORDS.
  775.  
  776.  
  777. OPP RJ GPR GET NEXT PARAMETER
  778. NZ B2,OPP2 ERROR IF SEPARATOR
  779. ZR X2,OPP2 ERROR IF TERMINATOR
  780. MX0 12 SEARCH OPTION TABLE
  781. SA5 OPPA
  782. RJ STB
  783. ZR X5,OPP2 IF OPTION NOT FOUND
  784. SA1 ERRW READ CORRECT ENTRY FROM *TRDV*
  785. MX3 -12
  786. AX1 12
  787. BX0 -X3*X1 EST ORDINAL OF DEVICE
  788. AX1 12
  789. BX4 -X3*X1
  790. SA1 TRDV+X4
  791. LX5 59-47
  792. PL X5,OPP1 IF VALID OPTION FOR ALL DEVICE TYPES
  793. R= X2,ESTE
  794. IX2 X0*X2
  795. SA2 ESTB+X2+EQDE CHECK IF *LDAM* EQUIPMENT
  796. LX2 59-55
  797. PL X2,OPP3 IF NOT *LDAM* EQUIPMENT
  798. OPP1 LX5 36 SET RETURN CODE IN *TRDV* ENTRY
  799. LX3 48
  800. BX6 X3*X1
  801. BX4 -X3*X5
  802. BX7 X6+X4
  803. SA7 A1
  804. EQ PPTA REQUEST INFORMATION FROM K-DISPLAY
  805.  
  806. OPP2 MWORDS ERR8,MSDS+1 *INCORRECT OPTION.*
  807. EQ PPA
  808.  
  809. OPP3 MWORDS ERR9,MSDS+1 *INCORRECT EQUIPMENT.*
  810. EQ PPA
  811.  
  812.  
  813. ** OPPA - VALID OPTIONS.
  814. *
  815. *T, OPPA 12/OP,1/V,35/0,12/RC
  816. *
  817. * OP OPTION
  818. * RC RETURN CODE TO *1MR*
  819. * V SET IF OPTION ONLY VALID ON 844,S.
  820.  
  821. OPPA BSS 0
  822. VFD 12/1LI,1/0,35/0,12//MRT/IGN *I*
  823. VFD 12/1LR,1/1,35/0,12//MRT/REL *R*
  824. CON 0 END OF TABLE
  825. REP SPACE 4,10
  826. ** REP - *RERUN* PROCESSOR.
  827. *
  828. * EXIT K-DISPLAY CLEARED.
  829. * TO *RERUN* TO RESTART PROGRAM.
  830. *
  831. * USES X - 1, 2, 6, 7.
  832. * A - 1, 2, 6, 7.
  833. *
  834. * MACROS MWORDS, SYSTEM.
  835.  
  836.  
  837. REP MWORDS BLKW,MSDS+1,4 CLEAR MESSAGE LINE
  838. SA2 DFEQ RESET EQ(S) TO RECOVER TO DEFAULT
  839. BX7 X2
  840. SA7 EQDS
  841. MWORDS BLKW+2,EQDS+1,4 CLEAR EQ(S) TO RECOVER
  842. MWORDS BLKW,EQDS1+1,6
  843. SA1 IDDS+2 CLEAR MID TO PROCESS
  844. MX6 42
  845. BX6 X6*X1
  846. SA6 A1
  847. SA1 RMMF RE-READ *MMFL* WORD
  848. MX7 1
  849. BX6 X1
  850. SA7 MMFP SET LOW CORE READ
  851. SA6 LCSW
  852. SYSTEM RSB,R,LCSW
  853. EQ RERUN RERUN PROGRAM
  854. TITLE PARAMETER TABLE MANAGEMENT.
  855. PPA SPACE 4,10
  856. ** PPA - PROCESS PARAMETERS.
  857. *
  858. * THE FOLLOWING ROUTINE IS THE COMMON ENTRY POINT FOR
  859. * REQUESTING INFORMATION FROM THE K-DISPLAY AND
  860. * PROCESSING PARAMETERS. EXIT FROM THIS ROUTINE OCCURS
  861. * WHEN *GO*, *RERUN*, OR *STOP* IS ENTERED.
  862.  
  863.  
  864. PPA1 RJ PPT PROCESS PARAMETER TABLE
  865.  
  866. PPA RJ PKE PROCESS KEYBOARD ENTRY
  867. NZ B6,PPA1 IF PARAMETERS
  868. MWORDS ERR1,MSDS+1 *INCORRECT ENTRY.*
  869. EQ PPA
  870. GPR SPACE 4
  871. ** GPR - GET NEXT ENTRY FROM PARAMETER TABLE.
  872. *
  873. * ENTRY (PTPR) = POINTER TO ENTRY TO BE RETURNED.
  874. *
  875. * EXIT (PTPR) = UPDATED POINTER.
  876. * (X2) = TABLE ENTRY. (0 IF TERMINATOR)
  877. * (B2) = SEPARATOR.
  878. *
  879. * USES X - 1, 2, 3, 4, 6.
  880. * A - 1, 2, 6.
  881. * B - 2.
  882.  
  883.  
  884. GPR SUBR ENTRY/EXIT
  885. SA1 PTPR GET TABLE ENTRY
  886. SA2 PARM+X1
  887. SX6 X1+B1 UPDATE POINTER
  888. SA6 A1
  889. MX3 -6 SET SEPARATOR
  890. BX4 -X3*X2
  891. SB2 X4
  892. BX2 X3*X2
  893. EQ GPRX RETURN
  894. PPT SPACE 4,20
  895. ** PPT - PROCESS PARAMETER TABLE.
  896. *
  897. * EXIT TO *PPTX* IF REQUEST FOR INFORMATION FROM K-DISPLAY.
  898. * TO PROCESSOR IF LEGAL PARAMETER OR COMMAND.
  899. * TO *GO* IF END OF PARAMETERS AND (AUTO) .NE. 0.
  900. *
  901. * CALLS GPR, STB.
  902. *
  903. * USES X - 0, 1, 2, 3, 5, 6.
  904. * A - 1, 5, 6.
  905. * B - 4, 5.
  906. *
  907. * MACROS MWORDS.
  908. *
  909. * NOTE THIS ROUTINE IS ENTERED FROM THE PARAMETER
  910. * PROCESSORS AT *PPTA* TO PROCESS THE NEXT
  911. * PARAMETER.
  912.  
  913.  
  914. PPT3 SA1 AUTO
  915. ZR X1,PPTX IF MORE POSSIBLE PARAMETERS FROM K-DISPLAY
  916. EQ GO *GO* IF PARAMETERS ENTERED BY COMMAND
  917.  
  918. PPT SUBR ENTRY/EXIT
  919. BX6 X6-X6 SET BEGINNING OF TABLE
  920. MX0 36
  921. SA6 PTPR
  922. PPTA SA5 PAMT SET TABLE TO SEARCH
  923. RJ GPR GET TABLE ENTRY
  924. ZR X2,PPT3 IF END OF PARAMETERS
  925. RJ STB SEARCH PARAMETER TABLE
  926. NZ X5,PPT1 IF ENTRY FOUND
  927. SA5 KDCT SEARCH K-DISPLAY COMMAND TABLE
  928. RJ STB
  929. ZR X5,PPT2 IF ENTRY NOT FOUND
  930. PPT1 SB5 X5
  931. AX5 18 CHECK IF VALID ENTRY
  932. MX3 -6
  933. BX1 -X3*X5
  934. SX3 B1
  935. SB4 X1
  936. SA1 CVEM
  937. LX2 B4,X3
  938. BX6 X1*X2
  939. ZR X6,PPT2 IF NOT VALID ENTRY
  940. JP B5 JUMP TO PROCESSOR
  941.  
  942. PPT2 MWORDS ERR1,MSDS+1 *INCORRECT ENTRY.*
  943. EQ PPTX RETURN TO REQUEST K-DISPLAY ENTRY
  944. STB SPACE 4,15
  945. ** STB - SEARCH TABLE.
  946. * TABLE MUST BE TERMINATED BY 0 WORD.
  947. *
  948. * ENTRY (A5) = ADDRESS OF TABLE.
  949. * (X5) = FIRST TABLE ENTRY.
  950. * (X0) = SEARCH MASK.
  951. * (X2) = ENTRY TO SEARCH FOR.
  952. *
  953. * EXIT (X5) = ENTRY, IF FOUND.
  954. * = 0, IF NOT FOUND.
  955. *
  956. * USES X - 5, 6, 7.
  957. * A - 5.
  958.  
  959.  
  960. STB SUBR ENTRY/EXIT
  961. STB1 ZR X5,STBX IF END OF TABLE
  962. BX6 X0*X5
  963. BX7 X6-X2
  964. ZR X7,STBX IF ENTRY FOUND
  965. SA5 A5+B1 GET NEXT ENTRY
  966. EQ STB1 LOOP
  967. CDM SPACE 4,15
  968. ** CDM - CHECK DOWN MACHINES.
  969. *
  970. * ENTRY (X6) = WORD TO MERGE MACHINE ID IN.
  971. * (X5) = MACHINE MASK TO CHECK.
  972. * (A1) = *TMID* ENTRY CORRESPONDING TO CURRENT BIT.
  973. *
  974. * EXIT (X6) = 5R ID* MERGED IN WORD.
  975. * (X5) = MACHINE MASK, CURRENT BIT SHIFTED TO BIT 59.
  976. * (A1) = *TMID* ENTRY CORRESPONDING TO CURRENT BIT.
  977. *
  978. * USES X - 1, 4, 5, 6, 7.
  979. * A - 1.
  980.  
  981.  
  982. CDM2 BX6 X6+X7
  983. SX7 1R
  984. BX6 X6+X7
  985.  
  986. CDM SUBR ENTRY/EXIT
  987. SX7 2R
  988. LX7 18
  989. BX6 X6+X7
  990. LX7 -12
  991. MX4 12
  992. ZR X5,CDM2 IF END OF MACHINES SHARING DEVICE
  993. CDM1 LX5 -1
  994. SA1 A1+B1
  995. PL X5,CDM1 IF MACHINE NOT FOUND
  996. SX5 X5 CLEAR BIT
  997. BX7 X4*X1 GET MID
  998. LX7 18
  999. SX1 X1-/MMF/MFDN
  1000. NZ X1,CDM2 IF MACHINE NOT DOWN
  1001. BX6 X6+X7
  1002. SX7 1R*
  1003. BX6 X6+X7
  1004. EQ CDMX RETURN
  1005. TITLE SUBROUTINES.
  1006. DWN SPACE 4,15
  1007. ** DWN - DETERMINE IF MACHINE IS DOWN.
  1008. *
  1009. * ENTRY (X0) = MID OF MACHINE TO TEST. (LEFT JUSTIFIED)
  1010. *
  1011. * EXIT (B6) = 0, IF MACHINE UP.
  1012. * (B6) .LT. 0 , IF MACHINE DOWN.
  1013. * (B6) .GT. 0 , IF MACHINE NOT FOUND.
  1014. * (X0) = UNCHANGED.
  1015. * (X1) = MMFL WORD FOR DOWNED MACHINE.
  1016. *
  1017. * USES X - 1, 3.
  1018. * A - 1, 3.
  1019. * B - 6.
  1020.  
  1021.  
  1022. DWN2 MX3 24
  1023. SB6 X1-/MMF/MFAC (B6) = 0, IF MACHINE IS ACTIVE
  1024. BX1 X3*X1
  1025. SX3 A1-TMID-TMIDI
  1026. PL X3,DWN3 IF IN ISHARE TABLE
  1027. SX3 A1-TMID+1
  1028. BX1 X1+X3
  1029. DWN3 ZR B6,DWNX IF MACHINE ACTIVE
  1030. SB6 -B1 SET MACHINE DOWN
  1031.  
  1032. DWN SUBR ENTRY/EXIT
  1033. SA1 TMID-1 INITIALIZE *TMID* SEARCH
  1034. SB6 TMIDL+1
  1035. DWN1 SA1 A1+1 GET NEXT ENTRY
  1036. SB6 B6-B1
  1037. MX3 12
  1038. BX3 X3*X1
  1039. BX3 X3-X0
  1040. ZR X3,DWN2 IF THIS ENTRY MATCHES
  1041. GT B6,B1,DWN1 IF NOT END OF TABLE
  1042. * SB6 1 SET NOT FOUND FLAG
  1043. EQ DWNX RETURN
  1044. IBF SPACE 4
  1045. * IBF - INITIALIZE BUFFERS.
  1046. *
  1047. * EXIT TEMPORARY STORAGE LOCATIONS ZEROED OUT.
  1048. * EST READ INTO LOCAL BUFFER.
  1049. *
  1050. * USES X - 1, 2, 3, 4, 6, 7.
  1051. * A - 1, 2, 3, 4, 6, 7.
  1052. * B - 2, 3.
  1053. *
  1054. * CALLS IFN, RSB=.
  1055. *
  1056. * MACROS SYSTEM.
  1057.  
  1058.  
  1059. IBF SUBR ENTRY/EXIT
  1060. SA1 MMFP
  1061. LX1 59-47
  1062. PL X1,IBF0 IF NO INDEPENDENT SHARED DEVICES
  1063. SA1 UMTW UPDATE MST ENRIES IN CM
  1064. RJ IFN
  1065. IBF0 SX6 B0+ CLEAR STORAGE LOCATIONS
  1066. SB2 CLER
  1067. SB3 CLERL
  1068. SA3 RESP
  1069. IBF1 SA6 B2
  1070. SB2 B2+B1
  1071. NE B2,B3,IBF1 IF MORE STORAGE TO CLEAR
  1072. SX6 B0+ RESET TO PAGE ONE OF THE DISPLAY
  1073. SA6 FNDV
  1074. SB2 COM CLEAR COMMON STORAGE
  1075. SB3 COM+COML
  1076. IBF2 SA6 B2
  1077. SB2 B2+B1
  1078. NE B2,B3,IBF2 IF MORE STORAGE TO CLEAR
  1079. MX7 1 READ EST POINTER
  1080. BX6 X3
  1081. SA6 LCSW
  1082. SA7 ESTF SET LOW CORE READ
  1083. SYSTEM RSB,R,LCSW
  1084. SA2 ESTF SET *COMCRSB* ENTRY CONDITIONS
  1085. MX3 -12
  1086. SX1 ESTB (X1) = ADDRESS TO TRANSFER TO
  1087. AX2 12
  1088. BX3 -X3*X2
  1089. AX2 24 (X2) = ADDRESS TO TRANSFER FROM
  1090. R= X6,ESTE
  1091. IX3 X3*X6 (X3) = WORD COUNT
  1092. SX4 B0 (X4) = SUBSYSTEM (= *CMR*)
  1093. MX6 1
  1094. SA6 X1
  1095. RJ RSB= READ EST
  1096. SA2 NORP SET NORMAL PROCESSING VALID ENTRIES
  1097. BX6 X2
  1098. SA6 CVEM
  1099. EQ IBFX RETURN
  1100. IFN SPACE 4
  1101. ** IFN - ISSUE *1MR* FUNCTION AND CHECK FOR ERRORS.
  1102. *
  1103. * ENTRY (X1) = REQUEST WORD.
  1104. *
  1105. * EXIT TO *PPA* IF LINK DEVICE ERROR OR RESERVE ERROR.
  1106. *
  1107. * USES X - ALL.
  1108. * A - 1, 2, 5, 6, 7.
  1109. *
  1110. * CALLS COD.
  1111. *
  1112. * MACROS MESSAGE, MWORDS, RECALL, SYSTEM.
  1113.  
  1114.  
  1115. IFN SUBR ENTRY/EXIT
  1116. SX7 B0 CLEAR ERROR RETURN WORD
  1117. SA7 ERRW
  1118. BX6 X1 SAVE REQUEST WORD
  1119. SA6 REQW
  1120. IFN1 SYSTEM SPC,R,REQW
  1121. SA1 REQW
  1122. NZ X1,IFN1 IF NO PP AVAILABLE
  1123. IFN2 RECALL
  1124. SA1 RCLW
  1125. ZR X1,IFN2 IF *1MR* NOT COMPLETE
  1126. SX6 B0+ CLEAR RECALL STATUS WORD
  1127. SA6 RCLW
  1128.  
  1129. * CHECK FOR ERROR RETURN.
  1130.  
  1131. SA5 ERRW
  1132. ZR X5,IFNX IF NO ERRORS
  1133. MX4 -12
  1134. BX6 -X4*X5
  1135. SX2 X6-/MRT/URS
  1136. PL X2,IFN5 IF RESERVE ERROR
  1137. SX2 IFNA ASSUME READ ERROR
  1138. SX3 X6-/MRT/RER
  1139. ZR X3,IFN3 IF READ ERROR
  1140. SX2 IFNB SET WRITE ERROR
  1141. IFN3 MESSAGE X2,,R
  1142. MWORDS X2,MSDS+1
  1143. BX6 X6-X6 SET TO REQUEST K-DISPLAY
  1144. SA6 NPAR
  1145. SA2 ERRP SET ERROR PROCESSING VALID ENTRY MASK
  1146. IFN4 BX6 X2
  1147. SA6 CVEM
  1148. EQ PPA REQUEST INFORMATION FROM K-DISPLAY.
  1149.  
  1150. IFN5 SX0 IFNC ASSUME UNIT RESERVED
  1151. SX3 X6-/MRT/URS
  1152. ZR X3,IFN6 IF UNIT RESERVED
  1153. SX0 IFND SET CONTROLLER RESERVED
  1154. IFN6 AX5 12 CONVERT EST ORDINAL
  1155. BX1 -X4*X5
  1156. RJ COD
  1157. LX6 24 SET EST ORDINAL IN MESSAGE
  1158. SA1 X0
  1159. MX4 -18
  1160. LX4 24
  1161. BX3 X4*X1 CLEAR OLD ORDINAL
  1162. BX6 -X4*X6
  1163. BX6 X6+X3 MERGE NEW ORDINAL IN MESSAGE
  1164. SA6 A1
  1165. AX5 24 CONVERT UNIT/CHANNEL TO DISPLAY CODE
  1166. MX4 -12
  1167. BX1 -X4*X5
  1168. RJ COD
  1169. MX4 -12
  1170. BX6 -X4*X6 UNIT/CHANNEL NUMBER
  1171. LX6 48 SET UNIT/CHANNEL NUMBER IN MESSAGE
  1172. SA1 X0+B1
  1173. LX4 48
  1174. BX3 X4*X1 CLEAR OLD CHANNEL/UNIT NUMBER
  1175. BX6 -X4*X6
  1176. BX6 X6+X3 MERGE NEW CHANNEL/UNIT NUMBER IN MESSAGE
  1177. SA6 A1
  1178. MWORDS X0,MSDS+1,4 WRITE MESSAGE TO K-DISPLAY
  1179. SA2 RSVP SET RESERVE PROCESSING VALID ENTRY MASK
  1180. EQ IFN4
  1181.  
  1182.  
  1183. IFNA DATA 30H LINK DEVICE READ ERROR.
  1184. BSSZ 1
  1185. IFNB DATA 30H LINK DEVICE WRITE ERROR.
  1186. BSSZ 1
  1187. IFNC DATA 40H EQ000, UN00, UNIT RESERVED.
  1188. IFND DATA 40H EQ000, CH00, CONTROLLER RESERVED.
  1189. MRD SPACE 4,10
  1190. ** MRD - PROCESS RESERVES, BAT-S, DAT-S, FAT-S, AND MRT-S.
  1191. *
  1192. * USES X - ALL.
  1193. * A - 1, 2, 3, 5, 6.
  1194. * B - 2, 3, 4, 5.
  1195. *
  1196. * CALLS IFN, STB.
  1197.  
  1198.  
  1199. MRD SUBR ENTRY/EXIT
  1200. SA2 SORT
  1201. NZ X2,MRD6 IF TABLE ALREADY SORTED
  1202.  
  1203. * EDIT TABLE OF DEVICES TO RECOVER, DELETING ENTRIES NOT
  1204. * SHARED BETWEEN DOWNED MACHINE AND THIS MACHINE.
  1205.  
  1206. SB2 B0
  1207. MX4 -12
  1208. SA3 MIDP MID OF MACHINE TO PROCESS
  1209. SB5 B0
  1210. SX6 B1 SET TABLE SORTED
  1211. SA6 SORT
  1212. MRD1 SA2 TRDV+B2
  1213. ZR X2,MRD5 IF END OF TABLE
  1214. MX0 24 SET TO SEARCH TABLE OF SHARED DEVICES
  1215. LX0 24
  1216. SA5 TSDV
  1217. SB4 B0
  1218. RJ STB SEARCH TABLE
  1219. ZR X5,MRD4 IF DEVICE NOT SHARED BY THIS MACHINE
  1220. LX5 59-12
  1221. NG X5,MRD3 IF ISHARE DEVICE
  1222. LX5 12+12-59
  1223. SA1 MASK CHECK IF DOWNED MACHINE IS SHARING DEVICE
  1224. SB4 X1
  1225. MX1 1
  1226. LX1 B4
  1227. BX7 X5*X1
  1228. ZR X7,MRD4 IF DEVICE NOT SHARED WITH DOWNED MACHINE
  1229. MRD3 SX6 X2 RESTORE GOOD ENTRY
  1230. SA6 TRDV+B5
  1231. SB5 B5+B1
  1232. MRD4 SB2 B2+B1 PROCESS NEXT TABLE ENTRY
  1233. EQ MRD1
  1234.  
  1235. MRD5 BX6 X6-X6 TERMINATE TABLE
  1236. SA6 TRDV+B5
  1237. MRD6 SA1 PRBW SET FUNCTION *PRB*
  1238. RJ IFN
  1239. SA1 PMTW SET FUNCTION *PMT*
  1240. RJ IFN
  1241. SA2 NORP SET NORMAL PROCESSING VALID OPTIONS
  1242. BX6 X2
  1243. SA6 CVEM
  1244. EQ MRDX RETURN
  1245. SSD SPACE 4,15
  1246. ** SSD - SEARCH FOR SHARED DEVICES AND FORMAT MST
  1247. * K-DISPLAY DATA.
  1248. *
  1249. * EXIT (NSDV) = NUMBER OF SHARED DEVICES.
  1250. *
  1251. * USES X - ALL.
  1252. * A - ALL.
  1253. * B - 2, 3, 4, 5, 6, 7.
  1254. *
  1255. * CALLS CDD, COD.
  1256. *
  1257. * MACROS SYSTEM.
  1258.  
  1259.  
  1260. * (B5) = NUMBER OF SHARED DEVICES.
  1261.  
  1262. SSD14 SA1 NKDP GET NUMBER OF *K* DISPLAY PAGES
  1263. SX6 B5 SAVE NUMBER OF SHARED DEVICES
  1264. SX1 X1
  1265. SA6 NSDV
  1266. RJ CDD CONVERT TO DECIMAL DISPLAY CODE
  1267. SA1 PGDS INSERT IN HEADER
  1268. LX4 12
  1269. MX6 -12
  1270. BX4 -X6*X4
  1271. BX6 X6*X1
  1272. BX6 X6+X4
  1273. SA6 A1
  1274.  
  1275. SSD SUBR ENTRY/EXIT
  1276. SA3 ESTF
  1277. MX4 -12
  1278. AX3 12
  1279. BX2 -X4*X3 LAST MASS STORAGE ORDINAL + 1
  1280. SA0 TSMI INITIALIZE COUNTERS
  1281. SX7 B1
  1282. PX7 X7
  1283. SA7 NKDP NUMBER OF *K* DISPLAY PAGES = 1
  1284. SB5 B0 NUMBER OF SHARED DEVICES
  1285. SB6 X2+
  1286. SB7 NOPE
  1287.  
  1288. * SEARCH FOR SHARED DEVICES.
  1289.  
  1290. SSD1 EQ B6,B7,SSD14 IF END OF MASS STORAGE DEVICES
  1291. R= X5,ESTE
  1292. SX6 B7 CURRENT EST ORDINAL
  1293. IX5 X6*X5
  1294. BX7 X6
  1295. SA5 ESTB+X5+EQDE READ EST ENTRY
  1296. SB7 B7+B1 INCREMENT EST INDEX
  1297. PL X5,SSD1 IF NOT MASS STORAGE DEVICE
  1298. LX5 59-57
  1299. PL X5,SSD1 IF NOT SHARED DEVICE
  1300.  
  1301. * ENTER SHARED DEVICE INTO TABLE.
  1302.  
  1303. SX1 X6
  1304. LX5 59-52-59+57
  1305. PL X5,SSD2 IF EXTENDED MEMORY MMF DEVICE
  1306. SX0 B1 SET ISHARE DEVICE STATUS
  1307. LX0 12
  1308. BX7 X6+X0
  1309. SX0 A0 SET POINTER TO *TSMI* IN *TSDV* ENTRY
  1310. LX0 24
  1311. BX6 X7+X0
  1312. SSD2 SA6 TSDV+B5
  1313. SA7 TRDV+B5
  1314.  
  1315. * READ MST FOR SHARED DEVICE.
  1316.  
  1317. LX5 52-59
  1318. MX6 -12 READ MST FOR DEVICE
  1319. BX3 -X6*X5
  1320. SA1 RMST
  1321. SA6 MSTB SET LOW CORE READ
  1322. SA6 SCRB
  1323. LX3 18+3 MST ADDRESS
  1324. BX6 X3+X1
  1325. SA6 LCSW
  1326. SYSTEM RSB,R,LCSW
  1327.  
  1328. * FORMAT UNIT NUMBER, DEVICE TYPE, AND NUMBER OF UNITS.
  1329.  
  1330. SA2 MSTB+DDLL GET UNIT COUNT AND LIST
  1331. SA1 A5
  1332. AX5 12 OBTAIN DEVICE TYPE
  1333. MX4 -11
  1334. BX0 -X4*X5 DEVICE TYPE
  1335. AX5 12 SET UNIT NUMBER
  1336. MX4 -3
  1337. LX1 59-55
  1338. LX0 48
  1339. PL X1,SSD3 IF NOT *LDAM* DEVICE
  1340. BX5 X2
  1341. MX4 -6 SET FOR MAXIMUM OF 6 BIT UNIT NUMBER
  1342. SSD3 BX1 -X4*X5
  1343. LX2 12 POSITION UNIT COUNT
  1344. BX5 X2
  1345. RJ COD CONVERT UNIT NUMBER TO DISPLAY
  1346. MX4 -12 MERGE UNIT NUMBER WITH DEVICE TYPE
  1347. BX3 -X4*X6
  1348. LX3 6
  1349. BX0 X0+X3
  1350. MX4 -3 SET NUMBER OF UNITS
  1351. BX3 -X4*X5
  1352. ZR X3,SSD4 IF ONLY 1 UNIT
  1353. SX1 X3+B1
  1354. RJ CDD CONVERT NUMBER OF UNITS
  1355. MX4 -6
  1356. BX2 -X4*X6
  1357. SX1 1R-
  1358. LX1 6
  1359. BX3 X1+X2
  1360. LX3 36
  1361. BX0 X0+X3
  1362. SSD4 BX6 X0 SAVE DEVICE TYPE AND UNIT NUMBER
  1363. SA6 TSEQ+B5
  1364.  
  1365. * FORMAT DEVICE NUMBER AND FAMILY NAME.
  1366.  
  1367. MX0 -6
  1368. SA2 MSTB+PFGL OBTAIN DEVICE NUMBER AND FAMILY NAME
  1369. AX2 12
  1370. BX1 -X0*X2
  1371. AX2 6
  1372. MX3 -42
  1373. BX0 -X3*X2 FAMILY NAME
  1374. BX6 X6-X6 INITIALIZE DEVICE NUMBER AND FAMILY NAME
  1375. ZR X0,SSD5 IF NO DEVICE PRESENT
  1376. RJ COD CONVERT DEVICE NUMBER TO DISPLAY
  1377. MX3 12
  1378. LX6 48
  1379. BX6 X3*X6
  1380. BX6 X6+X0
  1381. SSD5 SA6 TSFM+B5 STORE DEVICE NUMBER AND FAMILY NAME
  1382. SB5 B5+B1 INCREMENT NUMBER OF SHARED DEVICES
  1383.  
  1384. * PUT MID-S ACCESSING DEVICE IN *TSMI*.
  1385.  
  1386. SA4 A5 READ EST ENTRY
  1387. SB3 B1
  1388. LX4 59-52
  1389. PL X4,SSD12 IF EXTENDED MEMORY MMF DEVICE
  1390. LX4 59-54-59+52
  1391. BX7 X7-X7
  1392. NG X4,SSD11 IF DEVICE NOT AVAILABLE
  1393. SA1 MSTB+TRLL READ FWA OF TRT
  1394. MX0 -18
  1395. BX1 -X0*X1
  1396. SA3 MSTB+TDGL READ TRT LENGTH
  1397. AX3 24
  1398. MX0 -12
  1399. BX2 -X0*X3 TRT LENGTH
  1400. IX1 X1+X2 BEGINNING OF MRT
  1401. SX2 X2+7
  1402. AX2 3 MRT LENGTH
  1403. IX1 X1+X2 ADDRESS OF DIT
  1404. SA3 RDIT SET DIT ADDRESS IN *RSB* CONTROL WORD
  1405. LX1 18
  1406. BX6 X1+X3
  1407. SA6 LCSW
  1408. SYSTEM RSB,R,LCSW READ DIT
  1409. SA5 MMFP MAINFRAME ID
  1410. SB4 MMPF-1 MAXIMUM SHARED MAINFRAMES
  1411. SB2 48
  1412. BX7 X7-X7
  1413. SB3 B0 NUMBER OF MIDS FOR THIS MAINFRAME
  1414. LX5 12
  1415. BX5 -X0*X5 MID OF THIS MAINFRAME
  1416. SSD6 SA3 B4+SCRB
  1417. ZR X3,SSD10 IF NO ENTRY
  1418. BX3 -X0*X3 MID ACCESSING DEVICE
  1419. BX4 X3-X5 COMPARE MID
  1420. BX6 X3
  1421. SA2 TMID+TMIDI-1
  1422. SSD7 SA2 A2+B1 SET TABLE OF MACHINE ID-S
  1423. ZR X2,SSD8 IF END OF KNOWN MID-S
  1424. LX2 12
  1425. BX2 X2-X3 COMPARE ENTRY
  1426. BX2 -X0*X2
  1427. NZ X2,SSD7 IF NO MATCH
  1428. EQ SSD9 MID ALREADY IN TABLE
  1429.  
  1430. SSD8 LX6 48
  1431. ZR X4,SSD10 IF THIS MF
  1432. SX2 B1 SET MF RUNNING ISHARE MODE
  1433. LX2 47
  1434. BX6 X6+X2
  1435. SA6 A2+ SET MID IN TABLE
  1436. SSD9 LX3 B2,X3
  1437. BX7 X7+X3 ADD MID TO LIST WORD
  1438. SB2 B2-12
  1439. SB3 B3+B1
  1440. PL B2,SSD10 IF THIS MID LIST WORD IS NOT FULL
  1441. SA7 A0
  1442. SA0 A0+B1
  1443. SB2 48
  1444. BX7 X7-X7
  1445. SSD10 SB4 B4-1 DECREMENT MF ORDINAL
  1446. PL B4,SSD6 IF MORE MACHINES TO CHECK
  1447. SSD11 NZ X7,SSD12 IF LIST WORD IS NOT EMPTY
  1448. SX7 B1+
  1449. SSD12 SA7 A0
  1450. SA0 A0+B1
  1451. SA5 NKDP INCREMENT THE NUMBER OF LINES USED
  1452. SX6 1S18/6+1 DIVIDE NUMBER OF MIDS - 1 BY 6
  1453. SX7 B3-B1
  1454. IX7 X7*X6
  1455. AX7 18
  1456. SX7 X7+B1 INSURE AT LEAST ONE LINE
  1457. UX6,B3 X5
  1458. SB3 B3+X7
  1459. SX5 B3-PAGLN-1
  1460. NG X5,SSD13 IF THIS DEVICE WILL NOT REQUIRE A NEW PAGE
  1461. SX6 X6+1 INCREMENT THE NUMBER OF PAGES USED
  1462. SB3 X7+ SET THE NUMBER OF LINES USED ON NEW PAGE
  1463. SSD13 PX7 X6,B3
  1464. SA7 A5
  1465. EQ SSD1 LOOP FOR NEXT EQUIPMENT
  1466. MWD SPACE 4,10
  1467. ** MWD - MOVE N WORDS.
  1468. *
  1469. * ENTRY (B2) = ADDRESS TO GET DATA FROM.
  1470. * (B3) = ADDRESS TO MOVE DATA TO.
  1471. * (B4) = NUMBER OF WORDS TO MOVE.
  1472. *
  1473. * USES X - 1, 6.
  1474. * A - 1, 6.
  1475. * B - 2, 3, 5.
  1476.  
  1477.  
  1478. MWD1 SA1 B2
  1479. BX6 X1
  1480. SA6 B3
  1481. SB5 B5+B1 INCREMENT COUNTERS
  1482. SB2 B2+B1
  1483. SB3 B3+B1
  1484. NE B4,B5,MWD1 IF MORE WORDS TO MOVE
  1485.  
  1486. MWD SUBR ENTRY/EXIT
  1487. SB5 B0 INITIALIZE COUNTER
  1488. EQ MWD1
  1489. COMMON SPACE 4,10
  1490. ** COMMON DECKS.
  1491.  
  1492.  
  1493. *CALL COMCCDD
  1494. *CALL COMCCOD
  1495. *CALL COMCCPM
  1496. *CALL COMCDCP
  1497. *CALL COMCDXB
  1498. *CALL COMCRSB
  1499. *CALL COMCSYS
  1500. *CALL COMCUPC
  1501. TITLE K-DISPLAY CONTROL.
  1502. DSD SPACE 4,15
  1503. ** DSD - DISPLAY MACHINES SHARING DEVICE.
  1504. *
  1505. * ENTRY (DBFA) = 30/ BUFFER A,30/ BUFFER B.
  1506. * (FNDV) = 12/PAGE NUMBER,24/ INDEX OF FIRST DEVICE,24/.
  1507. *
  1508. * EXIT K-DISPLAY COMPLETED.
  1509. * (DBFA) IS TOGGLED.
  1510. * (FNDV) = 36/ UNCHANGED, 24/ FIRST INDEX FOR NEXT PAGE.
  1511. *
  1512. * USES X - ALL.
  1513. * A - 0, 1, 2, 5, 6, 7.
  1514. * B - 5, 6, 7.
  1515. *
  1516. * CALLS CDD, CDM, COD, DWN, PGD.
  1517.  
  1518.  
  1519. DSD11 SA1 B5 CLEAR EST ORDINAL FROM NEXT UNUSED LINE
  1520. MX4 24
  1521. BX6 X4*X1
  1522. SA6 B5
  1523. SA1 FNDV SET NEXT DEVICE INDEX
  1524. SA2 DBFA TOGGLE BUFFER ADDRESSES
  1525. SX6 HDDS TERMINATE THE BUFFER
  1526. MX4 12
  1527. BX6 X4+X6
  1528. SA6 B5+B1
  1529. MX0 36
  1530. BX6 X0*X1
  1531. BX6 X6+X5
  1532. SA6 A1
  1533. BX6 X2
  1534. LX6 30
  1535. SA6 A2
  1536. SX1 KDCW TOGGLE TO NEW BUFFER
  1537. SX2 KPAG
  1538. SX3 1R+
  1539. LX3 -6
  1540. BX4 X4-X4
  1541. RJ PGD PAGE DISPLAY
  1542.  
  1543. DSD SUBR ENTRY/EXIT
  1544. SA5 DBFA CLEAR DISPLAY BUFFER
  1545. SB7 X5+LLEN*PAGLN
  1546. SB6 X5+
  1547. DSD1 MWORDS BLKW,B6+B1,LLEN-1
  1548. SB6 B6+LLEN
  1549. LT B6,B7,DSD1 IF MORE LINES TO CLEAR
  1550. SA1 FNDV SET FIRST DEVICE INDEX
  1551. AX1 24
  1552. SA0 X1
  1553. AX1 24 GET CURRENT PAGE NUMBER
  1554. SX1 X1+B1
  1555. RJ CDD CONVERT TO DECIMAL DISPLAY CODE
  1556. SA5 DBFA SET BUFFER FWA
  1557. BX7 X4
  1558. SB5 X5
  1559. SB7 B5+PAGLN*LLEN
  1560. SA7 B5-1
  1561. ERRNZ SDD1-1-PGN1 CODE DEPENDS ON VALUE
  1562. ERRNZ SDD2-1-PGN2 CODE DEPENDS ON VALUE
  1563. DSD2 SA5 TSDV+A0 GET NEXT SHARED DEVICE
  1564. ZR X5,DSD11 IF NO MORE DEVICES
  1565. MX4 -12 GET EST ORDINAL
  1566. BX1 -X4*X5
  1567. RJ COD CONVERT EST ORDINAL TO DISPLAY CODE
  1568. LX6 18 STORE EST ORDINAL IN K-DISPLAY
  1569. SA1 B5
  1570. MX4 24
  1571. BX3 X4*X1
  1572. SA1 TSEQ+A0 GET DEVICE TYPE AND UNIT NUMBER
  1573. BX6 -X4*X6
  1574. BX6 X6+X3
  1575. SA6 B5
  1576. BX6 X1
  1577. SA1 TSFM+A0 GET DEVICE NUMBER AND PACK NAME
  1578. SA6 A6+B1
  1579. SX7 2R
  1580. MX2 12
  1581. MX3 -24
  1582. BX2 X2*X1 GET DEVICE NUMBER
  1583. BX3 -X3*X1 GET LOWER 4 CHARACTERS OF PACK NAME
  1584. BX1 X1-X2 GET UPPER 3 CHARACTERS OF PACK NAME
  1585. AX1 24
  1586. BX6 X7+X2
  1587. LX6 48
  1588. BX6 X6+X1
  1589. SA6 A6+B1
  1590. SX1 B1 BLANK FILL PACK NAME
  1591. LX7 48
  1592. IX1 X3-X1 UPPER BITS = 1 IF FILLING NECESSARY
  1593. LX3 36
  1594. BX7 X1*X7
  1595. BX3 -X1*X3
  1596. BX7 X7+X3
  1597. SX2 6000B+10B*35 SET COORDINATE OF FIRST MID
  1598. BX7 X7+X2
  1599. SA7 A6+B1
  1600. BX0 X5
  1601. LX0 59-12
  1602. SB5 B5+LLEN SET BEGINING OF NEXT LINE
  1603. NG X0,DSD3 IF ISHARE DEVICE
  1604. SA1 TMID-1 INITIALIZE MACHINE INDEX
  1605. AX5 48
  1606. BX6 X6-X6 PROCESS FIRST TWO SHARED MACHINES
  1607. RJ CDM
  1608. LX6 30
  1609. RJ CDM
  1610. SA6 A7+B1
  1611. BX6 X6-X6 PROCESS SECOND TWO SHARED MACHINES
  1612. RJ CDM
  1613. LX6 30
  1614. RJ CDM
  1615. SA6 A6+B1
  1616. BX6 X6-X6 PROCESS LAST TWO SHARED MACHINES
  1617. RJ CDM
  1618. LX6 30
  1619. RJ CDM
  1620. SA6 A6+B1
  1621. ERRNG 7-MXMF CODE CAN HANDLE UP TO 7 MAINFRAMES
  1622. EQ DSD9 ADVANCE TO NEXT DEVICE
  1623.  
  1624. DSD3 LX0 -24+12-59+60
  1625. SA5 X0 SET MID LIST ADDRESS
  1626. BX7 X7-X7 CLEAR MID ACCUMULATOR
  1627. MX4 12
  1628. DSD4 NZ X5,DSD5 IF MID LIST WORD IS NOT EXHAUSTED
  1629. SA1 TSDV+A0
  1630. AX1 24 GET FWA OF LIST
  1631. SB6 X1+SMLX-1
  1632. SB6 A5-B6
  1633. PL B6,DSD7 IF BEYOND MAXIMUM NUMBER OF MIDS
  1634. SA5 A5+1 GET NEXT LIST WORD
  1635. DSD5 BX0 X4*X5 GET NEXT MID
  1636. BX6 X7 SAVE THE CURRENT STATE OF THE ACCUMULATOR
  1637. ZR X0,DSD7 IF END OF MID LIST
  1638. SX2 1R* CHECK IF MACHINE DOWN
  1639. RJ DWN
  1640. LX1 59-47 CHECK FOR ISHARE DEVICE
  1641. LX0 18
  1642. NG X1,DSD6 IF ISHARE DEVICE
  1643. ZR B6,DSD6 IF MACHINE NOT DOWN
  1644. BX0 X2+X0
  1645. DSD6 LX0 42 POSITION MID
  1646. BX5 X4+X5
  1647. LX7 30
  1648. LX5 12
  1649. BX7 X7+X0 MERGE MIDS
  1650. ZR X6,DSD4 IF THIS IS FIRST MID IN THE ACCUMULATOR
  1651. LX7 30 REORDER THE MIDS
  1652. DSD7 ZR X7,DSD9 IF THE ACCUMULATOR IS EMPTY
  1653. SB6 A7+1
  1654. GE B6,B5,DSD8 IF A NEW LINE IS NECESSARY
  1655. SA7 A7+B1
  1656. BX7 X7-X7
  1657. EQ DSD4 GET NEXT MID
  1658.  
  1659. DSD8 SA1 B5 GET FIRST WORD OF NEXT LINE
  1660. SX2 2R
  1661. MX0 24
  1662. LX2 -12
  1663. BX6 X0*X1
  1664. SX0 6000B+10B*35
  1665. SA6 A1 CLEAR EST ORDINAL AREA
  1666. BX6 X0+X2
  1667. SA6 A6+3 CLEAR PACK NAME AREA
  1668. SA7 A6+B1 STORE MID(S)
  1669. BX7 X7-X7
  1670. SB5 B5+LLEN
  1671. EQ DSD4 GET NEXT MID
  1672.  
  1673. DSD9 SA0 A0+B1 INCREMENT DEVICE INDEX
  1674. LT B5,B7,DSD2 IF NOT END OF PAGE
  1675. SX5 A0
  1676. EQ B5,B7,DSD11 IF THE PAGE DID NOT OVERFLOW
  1677. SX5 A0-1 IGNORE LAST ENTRY
  1678. DSD10 SB5 B5-LLEN
  1679. SA1 B5
  1680. SX1 X1
  1681. ZR X1,DSD10 IF NOT THE BEGINNING OF A LINE
  1682. EQ DSD11 EXIT
  1683. PAG SPACE 4,15
  1684. ** PAG - PAGE LEFT DISPLAY.
  1685. *
  1686. * ENTRY (B7) = FORWARD/BACKWARD FLAG.
  1687. * = 0 = PAGE FORWARD.
  1688. * = 1 = PAGE BACKWARD.
  1689. * (FNDV) = CURRENT PAGE AND NEXT PAGE FIRST DEVICE.
  1690. *
  1691. * EXIT (FNDV) IS UPDATED TO REFLECT PAGE COMMAND.
  1692. *
  1693. * USES X - 4, 6.
  1694. * A - 4, 6.
  1695. *
  1696. * CALLS DSD.
  1697.  
  1698.  
  1699. PAG SUBR ENTRY/EXIT
  1700. SA4 FNDV
  1701. SX6 B7-1
  1702. ZR X6,PAG1 IF PAGING BACKWARD
  1703. SX6 X4 GET NEXT INDEX
  1704. AX4 48 GET CURRENT PAGE NUMBER
  1705. ZR X6,PAG1 IF NO MORE DEVICES
  1706. SX4 X4+1 INCREMENT THE PAGE NUMBER
  1707. LX4 24
  1708. BX6 X6+X4
  1709. LX6 24
  1710. PAG1 SA6 A4
  1711. RJ DSD DISPLAY SHARED DEVICES
  1712. EQ PAGX RETURN
  1713.  
  1714.  
  1715. PGD HERE ASSEMBLE PAGING SUBROUTINE HERE
  1716.  
  1717. KPAG PAGT LPG1 PAGING TABLE
  1718. PAGT LPG2
  1719. PAGT
  1720. PAGT RPG1
  1721. PAGT RPG2
  1722. PAGT *
  1723. PKE SPACE 4,20
  1724. ** PKE - PROCESS KEYBOARD ENTRY.
  1725. *
  1726. * ENTRY (NPAR) = NUMBER OF PARAMETERS ON COMMAND.
  1727. *
  1728. * EXIT (B6) = NUMBER OF PARAMETERS.
  1729. * (NPAR) = 0.
  1730. * COMMAND OR KEYBOARD ENTRY UNPACKED AND
  1731. * IN PARAMETER BUFFER.
  1732. *
  1733. * USES X - ALL.
  1734. * A - 2, 5, 6, 7.
  1735. * B - 3, 6, 7.
  1736. *
  1737. * CALLS PAG, PGD, UPC.
  1738. *
  1739. * MACROS CONSOLE, MWORDS, RECALL.
  1740.  
  1741.  
  1742. PKE6 MWORDS ARGR,PARM,62B MOVE PARAMETERS TO *PARM*
  1743. BX6 X6-X6
  1744. SB6 X2 NUMBER OF PARAMETERS
  1745. SA6 NPAR SET TO REQUEST K-DISPLAY ON ERROR
  1746. SX6 B1+ SET AUTOMATIC *GO*, *STOP*
  1747. SA6 AUTO
  1748.  
  1749. PKE SUBR ENTRY/EXIT
  1750. SX6 B0+ CLEAR PARAMETER AREA
  1751. SB3 PARML-1
  1752. PKE1 SA6 PARM+B3
  1753. SB3 B3-1
  1754. GE B3,PKE1 IF MORE WORDS TO CLEAR
  1755. SA6 I CLEAR INPUT BUFFER
  1756.  
  1757. * CHECK FOR INPUT IF NO PARAMETERS ON COMMAND.
  1758.  
  1759. SA2 NPAR
  1760. NZ X2,PKE6 IF PARAMETERS ON COMMAND
  1761. BX6 X2 DISABLE AUTOMATIC *GO*, *STOP*
  1762. SA6 AUTO
  1763. PKE2 SX7 B0+ CLEAR THE INPUT BUFFER
  1764. SA7 I
  1765. CONSOLE KDCW
  1766. PKE3 RECALL
  1767. SA2 I
  1768. ZR X2,PKE3 IF INPUT NOT READY
  1769.  
  1770. MWORDS I,KBDS+1,5 MOVE INPUT TO DISPLAY LINE
  1771. MWORDS BLKW,MSDS+1,4 CLEAR MESSAGE LINE
  1772.  
  1773. * CHECK FOR PAGING COMMAND.
  1774.  
  1775. MX0 6
  1776. BX3 X0*X2
  1777. LX3 6
  1778. SB7 X3-1R+
  1779. NG B7,PKE5 IF NOT A PAGING COMMAND
  1780. GT B7,B1,PKE4 IF NOT A LEFT SCREEN COMMAND
  1781. RJ PAG PAGE THE LEFT SCREEN DISPLAY
  1782. EQ PKE2 GET THE NEXT COMMAND
  1783.  
  1784. PKE4 SX1 KDCW
  1785. SX2 KPAG
  1786. LX3 -6
  1787. BX4 X4-X4
  1788. RJ PGD PAGE DISPLAY
  1789. ZR X4,PKE2 IF THE COMMAND WAS A PAGING COMMAND
  1790.  
  1791. * UNPACK COMMAND.
  1792.  
  1793. PKE5 SA5 CCARD
  1794. SB7 PARM-1
  1795. RJ UPC UNPACK COMMAND
  1796. ZR B6,PKEX IF NO ARGUMENTS
  1797. SB6 B6-B1 SKIP FIRST ARGUMENT
  1798. EQ PKEX RETURN
  1799.  
  1800.  
  1801. CCARD DIS 1,MREC, COMMAND IMAGE
  1802. I BSSZ 8 INPUT BUFFER
  1803. KDCW VFD 24/I,18/RPG1,18/LPG1 K-DISPLAY CONTROL WORD
  1804. BLKW DATA 58L
  1805. EJECT
  1806.  
  1807. ** K-DISPLAY ERROR MESSAGES.
  1808.  
  1809.  
  1810. ERR1 DIS 3,INCORRECT ENTRY.
  1811. ERR2 DIS 3,INCORRECT FORMAT FOR MID.
  1812. ERR3 DIS 3,INCORRECT FORMAT FOR EQ ENTRY.
  1813. ERR4 DIS 3,MID SPECIFIED NOT DOWN.
  1814. ERR5 DIS 3,MID SPECIFIED NOT FOUND.
  1815. ERR7 DIS 3,MID NOT SPECIFIED.
  1816. ERR8 DIS 3,INCORRECT OPTION.
  1817. ERR9 DIS 3,INCORRECT EQUIPMENT.
  1818. SPACE 4
  1819. ** K-DISPLAY INFORMATIVE MESSAGE. MESSAGE ALSO GOES
  1820. * TO THE DAYFILE.
  1821.  
  1822.  
  1823. MES1 DIS 3, PROCESSING COMPLETE.
  1824. BSSZ 1
  1825. SPACE 4
  1826. ** PARAMETER AREA.
  1827.  
  1828.  
  1829. BSS 1 COMMAND NAME (FOR *UPC*)
  1830. PARM BSS PARML
  1831. EJECT
  1832. ** COMMON LEFT SCREEN LINES FOR K-DISPLAY.
  1833.  
  1834.  
  1835. HDDS KDL 1,M,(..) DETERMINE MESSAGE LINE
  1836. M EQU K-1
  1837. ORG HDDS
  1838.  
  1839.  
  1840. HDDS KDL 1,T,(MACHINE RECOVERY UTILITY)
  1841. PGDS KDL 59,T,( OF 99)
  1842. KDL 2,,(EQ TYPE UN DN FM/PN)
  1843. KDL 40,K,(MIDS SHARING DEVICE)
  1844. KDL 1,K,(--- ---- -- -- ------- -----------------
  1845. ,--------------)
  1846. IDDS KDL 1,M-3,(ID OF DOWNED MACHINE = )
  1847. KDL 1,M-2,(EQ(S) TO RECOVER =)
  1848. EQDS KDL 20,M-2,(ALL "40BLANKS")
  1849. EQDS1 KDL 1,M-1,("60BLANKS")
  1850. MSDS KDL 1,M,("40BLANKS")
  1851. KBDS KDL 1,I,("50BLANKS")
  1852. CON 0 END OF BUFFER
  1853.  
  1854. DFEQ KDL 20,M-2,(ALL)
  1855. SPACE 4
  1856. ** GENERATE EQUIPMENT DISPLAY BUFFERS FOR K-DISPLAY.
  1857.  
  1858.  
  1859. LPG1 VFD 12/0,36/0,12/0 K-DISPLAY CONTROL WORD
  1860. KDL 52,T,( PAGE XX)
  1861. PGN1 EQU *-1
  1862. K SET K+2
  1863. SDD1 BSS 0
  1864. .A DUP PAGLN+2
  1865. KDL 1,K,("60BLANKS")
  1866. .A ENDD
  1867. KDL 1,K,() LAST LINE
  1868. VFD 12/7777B,48/HDDS
  1869.  
  1870.  
  1871. LPG2 VFD 12/0,36/0,12/0 K-DISPLAY CONTROL WORD
  1872. KDL 52,T,( PAGE XX)
  1873. PGN2 EQU *-1
  1874. K SET K+2
  1875. SDD2 BSS 0
  1876. .A DUP PAGLN+2
  1877. KDL 1,K,("60BLANKS")
  1878. .A ENDD
  1879. KDL 1,K,() LAST LINE
  1880. VFD 12/7777B,48/HDDS
  1881. EJECT
  1882. ** RIGHT SCREEN FOR K-DISPLAY.
  1883.  
  1884.  
  1885. RPG1 VFD 12/0,36/0,12/0 K-DISPLAY CONTROL WORD
  1886.  
  1887. KDL 1,T,(MREC)
  1888. KDL 54,T,(PAGE 1 OF 2)
  1889. KDL 2,H,(PARAMETER DESCRIPTIONS)
  1890. KDL 2,K,(ID MID OF DOWNED MACHINE TO PROCESS.)
  1891. KDL 2,K,(EQ EST ORDINALS OF DEVICES SHARED BETWEEN THIS
  1892. , MACHINE)
  1893. KDL 9,K,(AND DOWNED MACHINE TO PROCESS. ENTER AS)
  1894. KDL 9,K,(EQ=XXX,XXX,...,XXX. THE DEFAULT IS EQ=ALL.)
  1895. KDL 2,K,(OP MAY BE ENTERED IF 844 RESERVE SITUATIONS OC
  1896. ,CUR.)
  1897. KDL 9,K,(THE RESPONSE APPLIES ONLY TO THE CURRENT SITUATION
  1898. ,.)
  1899. KDL 13,K,(OP=I IGNORE CURRENT DEVICE.)
  1900. KDL 13,H,(OP=R CLEAR ALL UNIT RESERVES ON THAT CONTROLLE
  1901. ,R.)
  1902. KDL 2,H,(K DISPLAY COMMANDS)
  1903. KDL 2,K,(GO INITIATE PROCESSING OF DEVICES SPECIFIED.)
  1904. KDL 2,K,(RERUN REINITIALIZE K-DISPLAY AND RERUN PROGRAM.)
  1905. KDL 2,K,(STOP TERMINATE PROGRAM.)
  1906. KDL 2,K,(+ PAGE LEFT DISPLAY FORWARD.)
  1907. KDL 2,K,(- PAGE LEFT DISPLAY BACKWARD.)
  1908.  
  1909. CHAR 1R[,1R( REPLACE *[* WITH *(*
  1910. CHAR 1R],1R) REPLACE *]* WITH *)*
  1911. CODE OTHER
  1912.  
  1913. KDL 2,K,([ PAGE RIGHT DISPLAY FORWARD.)
  1914. KDL 2,K,(] PAGE RIGHT DISPLAY BACKWARD.)
  1915. CODE *
  1916. CON 0 END OF BUFFER
  1917. EJECT
  1918. ** PAGE TWO OF RIGHT SCREEN.
  1919.  
  1920.  
  1921. RPG2 VFD 12/0,36/0,12/0 K-DISPLAY CONTROL WORD
  1922.  
  1923. KDL 1,T,(MREC)
  1924. KDL 54,T,(PAGE 2 OF 2)
  1925. KDL 1,H,(DESCRIPTION OF TABLE ENTRIES.)
  1926. KDL 1,,(EQ)
  1927. KDL 24,K,(EST ORDINAL OF EQUIPMENT.)
  1928. KDL 1,,(UN)
  1929. KDL 24,K,(UNIT NUMBER.)
  1930. KDL 1,,(DN)
  1931. KDL 24,K,(DEVICE NUMBER.)
  1932. KDL 1,,(FM/PN)
  1933. KDL 24,K,(FAMILY OR PACK NAME.)
  1934. KDL 1,,(MIDS SHARING DEVICE)
  1935. KDL 24,K,(MACHINE ID-S OF OTHER MACHINES)
  1936. KDL 24,K,(CURRENTLY SHARING THE DEVICE.)
  1937. KDL 1,,(* (BESIDE MID))
  1938. KDL 24,K,(THE MACHINE IS DOWN. IT CANNOT BE)
  1939. KDL 24,K,(DETERMINED IF MACHINES RUNNING IN)
  1940. KDL 24,K,(SHARED RMS MODE ARE DOWN.)
  1941. CON 0 END OF BUFFER
  1942. EJECT
  1943.  
  1944. USE BUFFERS
  1945.  
  1946.  
  1947. ** BUFFERS.
  1948.  
  1949.  
  1950. ESTB EQU * EST BUFFER
  1951. MSTB EQU ESTB+ESMX*ESTE MST BUFFER
  1952. SCRB EQU MSTB+MSTBL SCRATCH BUFFER
  1953. RFL= EQU SCRB+ESMX+1
  1954. TITLE PRESET.
  1955.  
  1956. ** PRS - PRESET PROGRAM.
  1957. *
  1958. * EXIT (NPAR) = NUMBER OF PARAMETERS.
  1959. * (MMFP) = *MMFL* WORD FOR THIS MACHINE.
  1960. *
  1961. * USES X - 1, 3, 4, 6, 7.
  1962. * A - 1, 6, 7.
  1963. * B - 1.
  1964. *
  1965. * CALLS PRK.
  1966. *
  1967. * MACROS EREXIT, MESSAGE, SYSTEM.
  1968.  
  1969.  
  1970. PRS SUBR ENTRY/EXIT
  1971. SB1 1 INITIALIZE B1
  1972. EREXIT ABT SET ABORT PROCESSOR
  1973. SA1 JOPR CHECK ORIGIN TYPE
  1974. MX3 -12
  1975. AX1 24
  1976. BX6 -X3*X1
  1977. SX4 X6-SYOT
  1978. ZR X4,PRS1 IF SYSTEM ORIGIN
  1979. MESSAGE PRSA * INCORRECT ORIGIN TYPE.*
  1980. EQ ABT1
  1981.  
  1982. PRS1 SA1 ACTR SET NUMBER OF PARAMETERS
  1983. SX6 X1
  1984. SA6 NPAR
  1985. SA1 RMMF READ *MMFL* WORD FROM LOW CORE
  1986. MX7 1
  1987. BX6 X1
  1988. SA6 LCSW
  1989. SA7 MMFP SET LOW CORE READ
  1990. SYSTEM RSB,R,LCSW
  1991. SX3 PRSB
  1992. RJ PRK PRESET *K* DISPLAY COORDINATES
  1993. EQ PRSX RETURN
  1994.  
  1995.  
  1996. PRSA DATA C* INCORRECT ORIGIN TYPE.*
  1997. PRSB KDL * Y-COORDINATE TABLE
  1998.  
  1999. PRK HERE ASSEMBLE Y-COORDINATE PRESET CODE HERE
  2000. END