User Tools

Site Tools


cdc:nos2.source:opl871:1da

Table of Contents

1DA

Table Of Contents

  • [00002] 1DA - DISK ARRAY SUBSYSTEM (DAS) DRIVER.
  • [00011] DAS DRIVER.
  • [00560] CONSTANTS AND DEFINITIONS.
  • [00845] CSTB - CONTROLLER STATE TABLE. (LDML XXXX,CI)
  • [00935] MACROS.
  • [00938] TBLM - CREATE MASS STORAGE DEVICE TABLE ENTRIES.
  • [01013] TBLM - CREATE TABLE ENTRY MACRO.
  • [01036] CBTE - CONTROL BUFFER TABLE ENTRY.
  • [01051] CCTE - CHANNEL CONTROL TABLE ENTRY.
  • [01066] CHTE - CHANNEL TABLE ENTRY.
  • [01081] EMBE - ERROR MESSAGE TABLE ENTRY.
  • [01096] EXPE - EXCHANGE PACKAGE ADDRESS ENTRY.
  • [01111] FTTE - FUNCTION TIMEOUT TABLE ENTRY.
  • [01126] PUTE - PHYSICAL UNIT TABLE ENTRY.
  • [01141] ERRMSG - DEFINE ERROR LOG MESSAGE.
  • [01162] MONITOR - REQUEST MONITOR FUNCTION.
  • [01180] WAIT - DO NOTHING FOR SPECIFIED TIME.
  • [01208] MAIN PROGRAM.
  • [01210] DAS - MAIN PROGRAM.
  • [01280] DEVICE ATTRIBUTE TABLES.
  • [01359] READ / WRITE PROCESSING.
  • [01361] PIO - READ / WRITE PROCESSING.
  • [01464] FORMAT DRIVES AT DEADSTART.
  • [01466] CFF - CHECK FOR FORMAT.
  • [01538] SELECTIVE RESET PROCESSING.
  • [01540] SRS - SELECTIVE RESET PROCESSING.
  • [01658] SUBROUTINES.
  • [01660] ACE - ANALYZE CHANNEL ERROR.
  • [01690] AME - ATTEMPT MONITOR EXCHANGE.
  • [01724] ATT - PROCESS ATTENTION.
  • [01757] CAA - CHECK IF ACCESS TO PARITY DEVICE IS ALLOWED.
  • [01817] CAB - CHECK ACGL *MMF PARITY DEVICE ACCESS* BIT.
  • [01839] CAC - CHECK FOR ALTERNATE CHANNEL.
  • [01863] CAN - CONVERT ASCII NUMBER TO DISPLAY CODE.
  • [01893] CBB - CHECK BDLL *DISABLE ACCESS* BIT.
  • [01916] CBC - CLEAR BUFFER COUNT.
  • [01930] CBI - CLEAR *BDT* ERROR PROCESSING INTERLOCKS.
  • [01962] CCA - CHECK CONTROLLER ATTRIBUTES.
  • [02088] CCI - CALCULATE CHANNEL INDEX.
  • [02111] CCO - CHECK FOR CONTROLLER OVER TEMPERATURE.
  • [02186] CCR - CHECK FOR CHANNEL REQUEST.
  • [02233] CCS - CHECK CHANNEL STATE FOR SPECIFIED DEVICE.
  • [02250] CDA - CONVERT DISK ADDRESS.
  • [02320] CDS - CHECK DEVICE STATUS.
  • [02341] CDT - CHECK DRIVE TYPE.
  • [02419] CEA - CLEAR *ENABLE CONTROLLER ACTIVITY* REQUEST.
  • [02443] CEC - CHECK FOR *ENABLE CONTROLLER ACTIVITY* REQUEST.
  • [02472] CEP - CLEAR ERROR PROCESSING INTERLOCK.
  • [02524] CET - CHECK ELAPSED TIME.
  • [02575] CFM - CLEAR *FORMAT PENDING* FLAG IN MST(S).
  • [02612] CFR - CHECK *PUT* FOR REQUEST.
  • [02687] CLP - CLEAR *LOST PARITY* FLAGS.
  • [02716] CLU - CLUSTER LOGICAL UNIT.
  • [02833] CMC - CHECK MONITOR COMPLETE.
  • [02872] CMN - CHECK MODEL NUMBER.
  • [02920] CMP - COMPLETE PROCESSING.
  • [03013] CMR - CHECK FOR MMF *RESTORE* FLAGS.
  • [03054] COD - CHECK FOR OFF-LINE DRIVE.
  • [03086] CPC - CHECK FOR PARALLEL CONTROLLER.
  • [03115] CPE - CHECK IF PARITY DRIVE ENABLED.
  • [03174] CPF - CHANGE *PILL* FIELD IN *PUT*.
  • [03215] CRF - CLEAR RESET FLAGS.
  • [03236] CRI - CLEAR SLAVE RESET INTERLOCK.
  • [03254] CRP - CLEAR *RESTORE IN PROGRESS* FLAGS.
  • [03310] CSC - COMPUTE SECTOR COUNT FOR RESTORE.
  • [03348] CSN - COMPARE CONTROLLER SERIAL NUMBERS.
  • [03388] CSR - CLEAR SPECIAL REQUEST.
  • [03407] CTO - CHECK TIMEOUT.
  • [03435] CUF - CHECK IF UNIT FORMATTED.
  • [03471] DCA - DISABLE CONTROLLER ACTIVITY.
  • [03494] DCE - DOWN CHANNEL ON EQUIPMENT.
  • [03528] DCR - DROP CHANNEL RESERVATION.
  • [03551] DDT - DETERMINE DRIVE TYPE.
  • [03702] DLU - DECLUSTER LOGICAL UNIT.
  • [03756] DMP - DISABLE MMF PARITY DEVICE ACCESS.
  • [03807] DRT - CHECK REQUEST TYPE.
  • [03831] ECA - ENABLE CONTROLLER ACTIVITY.
  • [03862] ECI - EXAMINE CONTROLLER INTERRUPTS.
  • [03935] EDR - EXECUTE DRIVE (POWER ON) RESET.
  • [04007] EIO - ENTER I/O REQUEST QUEUE.
  • [04075] EMP - ENABLE MMF PARITY DEVICE ACCESS.
  • [04135] ERR - PROCESS ERRORS.
  • [04371] EUI - ENSURE UNIT INTERLOCKED.
  • [04408] FFD - FIND FAILING DRIVE.
  • [04473] FMU - FORMAT UNIT.
  • [04560] GBM - GENERATE BML MESSAGE.
  • [04854] GCA - GET CURRENT *ACGL*.
  • [04880] GCS - GET CONTROLLER SERIAL NUMBER.
  • [04910] IBM - ISSUE BML MESSAGE.
  • [04948] ICR - ISSUE CONTROLLER RESET.
  • [05012] IDM - ISSUE DAYFILE MESSAGE.
  • [05067] IDU - INTERLOCK DISK UNIT.
  • [05124] IEE - ISSUE E,E EVENT.
  • [05146] IEM - ISSUE ERROR LOG MESSAGE.
  • [05223] IHD - INTERRUPT HANDLER.
  • [05301] IIO - INITIATE I/O.
  • [05385] ILU - INITIALIZE LOGICAL UNIT.
  • [05464] IMF - ISSUE MONITOR FUNCTION AND WAIT FOR COMPLETION.
  • [05491] IMR - INITIATE *BIOM* MONITOR REQUEST.
  • [05518] IOM - ISSUE OPERATOR MESSAGE.
  • [05547] IPR - INITIATE PARITY RESTORE.
  • [05726] ISR - IDENTIFY AND PROCESS SPECIAL REQUEST.
  • [05855] LDP - LOAD DEVICE PARAMETERS.
  • [05920] LMR - LOG MICROCODE REVISION.
  • [05972] LND - LOCATE NEXT DRIVE (ON SPECIFIED CONTROLLER).
  • [06002] LNE - LOCATE NEXT EST/PARTITION FOR THIS DEVICE.
  • [06062] LPS - LOG PACK SERIAL NUMBER(S).
  • [06139] LSD - LOCATE SELECTED DRIVE IN *DSTB*.
  • [06169] PEF - PROCESS ERROR FLAGS.
  • [06219] PLP - PROCESS LOST PARITY.
  • [06282] PPE - PROCESS PARITY ENABLE.
  • [06305] RBD - READ *BDLL*.
  • [06324] RCA - REPORT CONTROLLER ATTRIBUTES.
  • [06343] RCT - READ CHANNEL TABLE.
  • [06359] RDO - REPORT DRIVE OFF-LINE.
  • [06377] REE - READ EST ENTRY.
  • [06395] RLB - READ LINKAGE BITS.
  • [06437] RMR - READ CHANNEL STATUS REGISTER.
  • [06463] RND - RUN DIAGNOSTICS.
  • [06505] ROD - RESTORE OFF-LINE DRIVE.
  • [06649] SCD - STORE *CPD* DATA.
  • [06673] SCP - SET COMMAND PARAMETER.
  • [06694] SDO - SET DRIVE OFF-LINE.
  • [06761] SDT - SET DATA TRANSFER MODE.
  • [06788] SEC - SET ERROR CODE.
  • [06863] SEO - SET EST ORDINAL.
  • [06897] SEP - SET ERROR PROCESSING INTERLOCK.
  • [07012] SFP - SET COMMON FORMAT PARAMETERS.
  • [07040] SFR - SEARCH FOR CONSECUTIVE REQUEST.
  • [07129] SLB - SET LINKAGE BITS.
  • [07180] SMD - SKIP MEDIA DEFECT DURING RESTORE.
  • [07232] SOC - SET OPERATION CODE AND CONTROLLER.
  • [07246] SOU - SET OPERATION CODE AND UNIT.
  • [07273] SRF - SET DRIVER RELOAD FLAG.
  • [07304] SRI - SET SLAVE RESET INTERLOCK.
  • [07355] SRP - SEARCH RESPONSE PACKET.
  • [07390] SSS - SET SUSPECT STATE ON DEVICE.
  • [07441] STF - REQUEST TRACK FLAW.
  • [07505] STO - SET TIMEOUT.
  • [07534] SUA - SET UEM ADDRESS.
  • [07564] SUD - SPIN UP DRIVE.
  • [07610] SUI - SET UNIT INTERLOCK.
  • [07638] TMSE - TABLE OF MASS STORAGE ERROR CODES.
  • [07665] TMSK - TABLE OF CONTROLLER MASKS.
  • [07682] UBP - UPDATE *BDLL* PARAMETER.
  • [07716] UEC - UPDATE MST ERROR COUNT.
  • [07742] UHD - UNPACK HEX DATA.
  • [07805] UPD - UDPATE PHYSICAL DRIVE NUMBER.
  • [07851] VDA - VERIFY DRIVE ATTRIBUTES.
  • [08015] VIS - VERIFY INTERRUPT SOURCE.
  • [08051] WAC - WAIT FOR OTHER ACTIVITY TO COMPLETE.
  • [08086] WLB - WRITE LINKAGE BITS.
  • [08127] WMC - WAIT MAINTENANCE CHANNEL EMPTY.
  • [08149] CHANNEL SUBROUTINES.
  • [08151] BCS - DEFINE INFORMATION TRANSFER.
  • [08173] CFE - CHECK FOR I/O ERROR.
  • [08192] CRC - COMMON READ CODE.
  • [08217] CTC - CHECK TRANSFER COMPLETE.
  • [08298] DCM - DESELECT CONTROLLER.
  • [08316] DCT - DETERMINE CHANNEL TYPE.
  • [08334] DTM - DETERMINE TRANSFER MODE.
  • [08373] FAN - SEND A FUNCTION TO THE IPI CHANNEL.
  • [08387] FCN - ISSUE FUNCTION.
  • [08405] GIS - GET INTERRUPT STATUS.
  • [08430] GSS - GET SLAVE STATUS.
  • [08481] IDT - INPUT DATA TO PP.
  • [08526] RCR - RESET CHANNEL REGISTERS. THIS LEAVES THE IPI
  • [08569] RDR - READ REGISTER.
  • [08587] RIF - RESET INTERFACE.
  • [08628] RRP - READ RESPONSE PACKET.
  • [08655] RSR - READ SLAVE RESPONSE.
  • [08677] RTR - READ T REGISTER.
  • [08709] SAP - SELECT ADAPTER PORT.
  • [08726] SCM - SELECT CONTROLLER.
  • [08757] WCB - WRITE COMMAND BLOCK (PACKET).
  • [08817] WTC - WAIT TRANSMISSION COMPLETE.
  • [08832] WTR - WRITE T REGISTER.
  • [08872] COMMON DECKS.
  • [08895] BUFFERS.
  • [08932] PRESET.
  • [08942] PRS - PRESET DRIVER FOR PROCESSING.
  • [09036] PRESET SUBROUTINES.
  • [09038] CCP - CHECK CALLING PROGRAM.
  • [09071] IFP - INITIALIZE MANAGED TABLE PROCESSORS.
  • [09078] MCI - MODIFY CHANNEL INSTRUCTIONS.
  • [09113] SCT - SET CHANNEL TABLE ENTRY ADDRESSES.
  • [09158] SPA - SET PP EXCHANGE PACKAGE ADDRESSES.
  • [09195] STA - SET TABLE ADDRESSES.
  • [09225] INSTRUCTION MODIFICATION TABLES.
  • [09301] BST - BUILD STATE TABLES AND BML ERROR MESSAGE BUFFER.
  • [09351] SUBROUTINES.
  • [09353] MRS - MASTER RESET SLAVES.
  • [09395] OVERLAYABLE SUBROUTINES.
  • [09397] CFD - CLEAR FLAGS AT DEADSTART.
  • [09518] DHE - DETERMINE HIGHEST EST ORDINAL.
  • [09555] IST - INITIALIZE DEVICE STATE TABLE.
  • [09688] SMC - SET MMF CONSTANTS.

Source Code

1DA.txt
  1. IDENT 1DA,DASX
  2. TITLE 1DA - DISK ARRAY SUBSYSTEM (DAS) DRIVER.
  3. CIPPU ,S
  4. MEMSEL 8
  5. LIST F
  6. BASE M
  7. SST DLYA,.DLY,.EST
  8. *COMMENT 1DA - DISK ARRAY SUBSYSTEM (DAS) DRIVER.
  9. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  10. SPACE 4,10
  11. *** 1DA - DAS DRIVER.
  12. *
  13. * C. D. ROWE. 91/03/06.
  14. * P. C. SMITH. 94/03/21.
  15. * R. E. DUNBAR. 94/07/15.
  16. * P. C. SMITH. 95/12/10.
  17. SPACE 4,40
  18. *** *1DA* IS THE DRIVER FOR THE 583X/47444 DISK ARRAY SUBSYSTEM.
  19. *
  20. * THE FOLLOWING DISK DRIVES ARE SUPPORTED,
  21. * 5832-1, 5832-2
  22. * 5833-1, 5833-1P
  23. * 5833-2, 5833-2P
  24. * 5833-3P, 5833-4
  25. * 5838-1, 5838-1P
  26. * 5838-2, 5838-2P
  27. * 5838-3P, 5838-4
  28. * 47444-1, 47444-1P
  29. * 47444-2, 47444-2P
  30. * 47444-3P, 47444-4
  31. *
  32. * THE DAS DISK DRIVES ARE SUPPORTED AS BUFFERED I/O
  33. * DEVICES. REQUESTS TO BE PROCESSED BY *1DA* ARE POSTED
  34. * BY *CPUMTR* IN THE BUFFERED I/O TABLES IN *CMR*.
  35. * *1DA* INTERLOCKS UNITS, DELINKS BUFFERS, AND COMPLETES
  36. * SAID REQUESTS BY ISSUING APPROPRIATE *BIOM* FUNCTIONS.
  37. *
  38. * EACH COPY OF *1DA* WILL SUPPORT ONE CONCURRENT CHANNEL
  39. * CONFIGURED WITH THE INTELLIGENT PERIPHERAL INTERFACE (IPI)
  40. * AND IS THE SOLE DRIVER FOR ALL DAS DISKS ON THAT CHANNEL.
  41. * *1DA* MUST BE LOADED INTO A CONCURRENT PP, IN THE SAME
  42. * BANK AS THE CHANNEL IT IS TO SERVICE. THIS DRIVER SUPPORTS
  43. * THE 10 AND THE 25 MB IPI CHANNELS. WHEN THE DRIVER IS
  44. * LOADED IT STATUSES THE CHANNEL TO DETERMINE WHICH ONE IS
  45. * PRESENT. IT WILL READ THE CHANNEL SPEED SELECTED IN THE
  46. * CONTROLLER USING INTERLOCK MODE. IF THE SPEED IS
  47. * INCORRECT, IT WILL SET THE SPEED TO BE THE SAME AS THE
  48. * CHANNEL.
  49. *
  50. * EACH COPY OF THE DRIVER CAN SERVICE UP TO 24 LOGICAL DAS
  51. * UNITS IN ANY CONFIGURATION MIX. UP TO 4 CONTROLLERS MAY
  52. * BE CONFIGURED; A CONTROLLER MAY BE COUPLED TO EITHER PORT
  53. * OF THE IPI ADAPTER.
  54. *
  55. * *1DA* SCANS THROUGH THE *PUT* ENTRIES IN A CIRCULAR FASHION
  56. * LOOKING FOR REQUESTS TO PROCESS. ONCE A REQUEST IS FOUND,
  57. * *1DA* USES THE PHYSICAL DISK AND UEM ADDRESSES IN THE
  58. * CORRESPONDING *CBT* ENTRY TO DETERMINE THE ACTION TO BE
  59. * TAKEN. *1DA* WILL ATTEMPT TO PROCESS CONSECUTIVE REQUESTS
  60. * ON THE CURRENT UNIT UNTIL THE END OF THE UNIT I/O QUEUE,
  61. * OR A CONSECUTIVE REQUEST WAS NOT FOUND. AT THIS POINT
  62. * *1DA* WILL RESUME ITS SEARCH THROUGH THE *PUT* WITH THE
  63. * *PUT* ENTRY IMMEDIATELY FOLLOWING THE ONE JUST PROCESSED.
  64. SPACE 4,40
  65. *** ORGANIZATION OF THE DAS UNITS (MEASUREMENTS IN DECIMAL).
  66. *
  67. * EQUIPMENT TYPE EA EB
  68. * PRODUCT NUMBER 5832-1 5832-2
  69. *
  70. * UNITS/LOGICAL DEVICE 1-8 1-4
  71. * PARTITIONS 1 1
  72. *
  73. * PHYSICAL ORGANIZATION
  74. *
  75. * WORDS/PHYSICAL SECTOR 2048 2048
  76. * PHYSICAL SECTORS/TRACK 3 6
  77. * SPARE SECTORS/CYLINDER 0 0
  78. * PHYSICAL TRACKS/CYLINDER 4 4
  79. * CYLINDERS/DRIVE 844 844
  80. *
  81. * LOGICAL ORGANIZATION
  82. *
  83. * WORDS/LOGICAL SECTOR 64 64
  84. * LOGICAL SECTORS/LOGICAL TRACK 160 320
  85. * LOGICAL TRACKS/DRIVE 2023 2023
  86. *
  87. *
  88. * EQUIPMENT TYPE EC/ED EE/EF
  89. * PRODUCT NUMBER 5833-1/1P 5833-2/2P
  90. *
  91. * UNITS/LOGICAL DEVICE 1-2 1
  92. * PARTITIONS 1 1
  93. *
  94. * PHYSICAL ORGANIZATION
  95. *
  96. * WORDS/PHYSICAL SECTOR 2048 2048
  97. * PHYSICAL SECTORS/TRACK 6 11
  98. * SPARE SECTORS/CYLINDER 2 2
  99. * PHYSICAL TRACKS/CYLINDER 7 7
  100. * CYLINDERS/DRIVE 1629 1629
  101. *
  102. * LOGICAL ORGANIZATION
  103. *
  104. * WORDS/LOGICAL SECTOR 64 64
  105. * LOGICAL SECTORS/LOGICAL TRACK 992 1920
  106. * LOGICAL TRACKS/DRIVE 2046 2034
  107. *
  108. *
  109. * EQUIPMENT TYPE EM EN
  110. * PRODUCT NUMBER 5833-3P 5833-4
  111. *
  112. * UNITS/LOGICAL DEVICE 1 1
  113. * PARTITIONS 2 2
  114. *
  115. * PHYSICAL ORGANIZATION
  116. *
  117. * WORDS/PHYSICAL SECTOR 2048 2048
  118. * PHYSICAL SECTORS/TRACK 17 22
  119. * SPARE SECTORS/CYLINDER 2 2
  120. * PHYSICAL TRACKS/CYLINDER 7 7
  121. * CYLINDERS/DRIVE 1629 1629
  122. * CYLINDERS/PARTITION 814 814
  123. *
  124. * LOGICAL ORGANIZATION
  125. *
  126. * WORDS/LOGICAL SECTOR 64 64
  127. * LOGICAL SECTORS/LOGICAL TRACK 1504 1952
  128. * LOGICAL TRACKS/LOGICAL DEVICE 2023 2025
  129. *
  130. *
  131. * EQUIPMENT TYPE EG/EH EI/EJ
  132. * PRODUCT NUMBER 5838-1/1P 5838-2/2P
  133. *
  134. * UNITS/LOGICAL DEVICE 1 1
  135. * PARTITIONS 1 2
  136. *
  137. * PHYSICAL ORGANIZATION
  138. *
  139. * WORDS/PHYSICAL SECTOR 2048 2048
  140. * PHYSICAL SECTORS/TRACK 5 9
  141. * SPARE SECTORS/CYLINDER 4 4
  142. * PHYSICAL TRACKS/CYLINDER 9 9
  143. * CYLINDERS/DRIVE 2620 2620
  144. * CYLINDERS/PARTITION 2620 1310
  145. *
  146. * LOGICAL ORGANIZATION
  147. *
  148. * WORDS/LOGICAL SECTOR 64 64
  149. * LOGICAL SECTORS/LOGICAL TRACK 1696 1600
  150. * LOGICAL TRACKS/LOGICAL DEVICE 2025 2015
  151. *
  152. *
  153. * EQUIPMENT TYPE EK EL
  154. * PRODUCT NUMBER 5838-3P 5838-4
  155. *
  156. * UNITS/LOGICAL DEVICE 1 1
  157. * PARTITIONS 3 4
  158. *
  159. * PHYSICAL ORGANIZATION
  160. *
  161. * WORDS/PHYSICAL SECTOR 2048 2048
  162. * PHYSICAL SECTORS/TRACK 14 18
  163. * SPARE SECTORS/CYLINDER 4 4
  164. * PHYSICAL TRACKS/CYLINDER 9 9
  165. * CYLINDERS/DRIVE 2620 2620
  166. * CYLINDERS/PARTITION 873 655
  167. *
  168. * LOGICAL ORGANIZATION
  169. *
  170. * WORDS/LOGICAL SECTOR 64 64
  171. * LOGICAL SECTORS/LOGICAL TRACK 1696 1632
  172. * LOGICAL TRACKS/LOGICAL DEVICE 2007 2026
  173. *
  174. *
  175. * EQUIPMENT TYPE EO/EP ES/EU
  176. * PRODUCT NUMBER 47444-1/1P 47444-2/2P
  177. *
  178. * UNITS/LOGICAL DEVICE 1 1
  179. * PARTITIONS 1 2
  180. *
  181. * PHYSICAL ORGANIZATION
  182. *
  183. * WORDS/PHYSICAL SECTOR 512 1024
  184. * PHYSICAL SECTORS/TRACK 13 13
  185. * SPARE SECTORS/CYLINDER 7 7
  186. * PHYSICAL TRACKS/CYLINDER 15 15
  187. * CYLINDERS/DRIVE 2290 2290
  188. * CYLINDERS/PARTITION 2290 1145
  189. *
  190. * LOGICAL ORGANIZATION
  191. *
  192. * WORDS/LOGICAL SECTOR 64 64
  193. * LOGICAL SECTORS/LOGICAL TRACK 3240B 3240B
  194. * LOGICAL TRACKS/LOGICAL DEVICE 3755B 3754B
  195. *
  196. *
  197. * EQUIPMENT TYPE EV EW
  198. * PRODUCT NUMBER 47444-3P 47444-4
  199. *
  200. * UNITS/LOGICAL DEVICE 1 1
  201. * PARTITIONS 3 4
  202. *
  203. * PHYSICAL ORGANIZATION
  204. *
  205. * WORDS/PHYSICAL SECTOR 1024 1024
  206. * PHYSICAL SECTORS/TRACK 19 25
  207. * SPARE SECTORS/CYLINDER 7 7
  208. * PHYSICAL TRACKS/CYLINDER 15 15
  209. * CYLINDERS/DRIVE 2290 2290
  210. * CYLINDERS/PARTITION 763 572
  211. *
  212. * LOGICAL ORGANIZATION
  213. *
  214. * WORDS/LOGICAL SECTOR 64 64
  215. * LOGICAL SECTORS/LOGICAL TRACK 3200B 3200B
  216. * LOGICAL TRACKS/LOGICAL DEVICE 3764B 3744B
  217. SPACE 4,20
  218. *** TRANSFER RATES
  219. *
  220. * 1. MAXIMUM TRANSFER RATE OF PP IF 10 MB IPI CHANNEL, 16 KB
  221. * SECTOR SIZE, AND CPU RESPONSE TIME IS IMMEDIATE.
  222. *
  223. * SECTORS STREAMED / PP OVERHEAD + SECTORS * (1.6384 + .150)
  224. *
  225. * USE SECTORS = 96 (8 SSD CYLINDERS)
  226. *
  227. * RATE = 96 * 16384 1572864
  228. * ----------------- = ------- = 9.06 MB/S
  229. * 2 + 96 * (1.7884) 173.686
  230. *
  231. * = 11310 KCHAR/S
  232. *
  233. * 2. MAXIMUM RATE FOR SSD IF 10 MB IPI CHANNEL, 16 KB SECTOR
  234. * SIZE, AND CPU RESPONSE TIME IS IMMEDIATE.
  235. *
  236. * BYTES FOR 8 CYLINDERS
  237. * RATE = -------------------------------------------------------
  238. * PP+CTR OVERHEAD + 8 CYL SWITCHES+SEC. * (1.6384 + 150)
  239. *
  240. *
  241. * 1572864
  242. * = -------------------------- = 8.83 MB/S
  243. * 2 + 2 + 2.4 + 96 * (1.7884)
  244. *
  245. * = 11040 KCHAR/S
  246. *
  247. * 3. MAXIMUM RATE FOR 5833-1 IF 10 MB IPI CHANNEL, 16 KB SECTOR
  248. * SIZE, AND CPU RESPONSE TIME IS IMMEDIATE.
  249. *
  250. * CYLINDER SWITCH = 5.5 MILLISECONDS
  251. *
  252. *
  253. * BYTES FOR 8 CYLINDERS
  254. * RATE = ------------------------------------------------
  255. * 8 CYL SWITCHES + ((HEADS * CYL) + 1) * 16.66666
  256. *
  257. *
  258. * 40 * 16384 * 8 5242880
  259. * RATE = ------------------ = ------------ = 5.27 MB/S
  260. * 44 + 57 * 16.6666 994
  261. *
  262. * = 6593 KCHAR/S
  263. *
  264. * 4. MAXIMUM RATE FOR 5833-2 IF 10 MB IPI CHANNEL, 16 KB SECTOR
  265. * SIZE, AND CPU RESPONSE TIME IS IMMEDIATE.
  266. *
  267. * CYLINDER SWITCH = 11 MILLISECONDS
  268. *
  269. * BYTES FOR 8 CYLINDERS
  270. * RATE = ------------------------------------------------
  271. * 8 CYL SWITCHES + ((HEADS * CYL) + 1) * 16.66666
  272. *
  273. *
  274. * 75 * 16384 * 8 9830400
  275. * RATE = ------------------ = ------------ = 9.45 MB/S
  276. * 88 + 57 * 16.6666 1040
  277. *
  278. *
  279. * = 11810 KCHAR/S
  280. *
  281. * NOTE - SINCE THIS IS GREATER THAN THE RATE THE PP CAN MAINTAIN,
  282. * YOU MUST USE THE RATE THE PP CAN MAINTAIN (11310 KCHAR/S).
  283. *
  284. * 5. MAXIMUM TRANSFER RATE OF PP IF 25 MB IPI CHANNEL, 16 KB
  285. * SECTOR SIZE, AND CPU RESPONSE TIME IS IMMEDIATE.
  286. *
  287. * SECTORS STREAMED / PP OVERHEAD + SECTORS * (.65536 + 150)
  288. *
  289. * USE SECTORS = 96 (8 SSD CYLINDERS)
  290. *
  291. * RATE = 96 * 16384 1572864
  292. * ----------------- = ------- = 20.34 MB/S
  293. * 2 + 96 * (.80536) 77.316
  294. *
  295. * = 25430 KCHAR/S
  296. SPACE 4,35
  297. *** MEASURED TRANSFER RATES.
  298. * MAINFRAME = 860/870
  299. * MST(N=400000,P=6) TO GET TIMING VALUES.
  300. *
  301. * NOTE - THE NUMBER OF DRIVES CONFIGURED PER DRIVER AND THE
  302. * INTERRUPT SIZE (PHYSICAL SECTORS) FOR WRITES COULD
  303. * AFFECT PERFORMANCE.
  304. *
  305. * NOTE- BUFFER THRESHOLD VALUES USED WERE 4,3,3. CHANGING
  306. * THE BUFFER VALUES TO 1,3,3 FOR 583X DRIVES INCREASED
  307. * RANDOM READS APPROXIMATELY 30 PERCENT AND DID NOT
  308. * HURT OTHER VALUES.
  309. *
  310. * NOTE- A FIELD LENGTH OF 60000 WAS USED WHEN RUNNING MST.
  311. * USE OF A SMALLER FIELD LENGTH COULD CAUSE PERFORMANCE
  312. * NUMBERS TO DECREASE.
  313. *
  314. * SEQ. SEQ. RANDOM RANDOM
  315. * UNITS INT. WRITE READ READ WRITE
  316. * TYPE DEFINED SIZE KC/S KC/S IO/S IO/S CHANNEL
  317. * -------------------------------------------------------------
  318. * 5832-1 1 NA 9448 9306 78.2 59.9 IPI-10
  319. * 5832-2 1 NA 10009 9980 73.6 53.9 IPI-10
  320. * 5833-1 1 2 6669 6765 31.8 25.4 IPI-10
  321. * 5833-2 1 2 9996 9379 36.3 27.0 IPI-10
  322. * 5833-3 1 2 9945 9956 36.0 26.4 IPI-10
  323. * 5833-4 1 2 9983 10078 37.2 16.4 IPI-10
  324. * 5838-1 1 2 8180 8172 44.4 27.9 IPI-10
  325. * 47444-1 1 8 4097 4232 29.1 16.4 IPI-10
  326. * 47444-2 1 4 8191 9525 33.5 17.8 IPI-10
  327. * 47444-3 1 4 8792 9594 32.1 16.6 IPI-10
  328. * 47444-4 1 4 9161 9713 32.8 17.0 IPI-10
  329. * 5832-1 1 NA 9886 10032 88.2 66.9 IPI-25
  330. * 5832-2 1 NA 12894 8157 119.1 79.8 IPI-25
  331. * 5833-1 1 2 6649 6774 32.9 25.9 IPI-25
  332. * 5833-2 1 2 11975 8078 40.4 27.5 IPI-25
  333. * 5833-3 1 2
  334. * 5833-4 1 2
  335. * 5838-1 1 2 8067 8205 44.3 26.9 IPI-25
  336. * 5838-2 1 2
  337. * 5838-3 1 2
  338. * 5838-4 1 2
  339. * 47444-1 1 8 IPI-25
  340. * 47444-2 1 4 IPI-25
  341. * 47444-3 1 4 IPI-25
  342. * 47444-4 1 4 IPI-25
  343. * 9853 1 8 3087 3130 21.7 17.2 IPI-10
  344. * 887-4K 1 11210 10958 35.3 18.9 ISI
  345. SPACE 4,10
  346. *** CALL.
  347. *
  348. *T 18/ DRN, 6/ CP, 6/ CO, 18/, 7/ 1, 5/ CH
  349. *
  350. * DRN DRIVER NAME.
  351. * CP CONTROL POINT NUMBER (MUST BE SYSTEM CP).
  352. * CO CHANNEL TABLE ORDINAL (SET BY *CPUMTR*).
  353. * CH CHANNEL NUMBER BEING SERVICED BY THIS PP.
  354. SPACE 4,10
  355. *** DAYFILE MESSAGES.
  356. *
  357. * DRN - UNAUTHORIZED CALL.
  358. *
  359. * THE DRIVER (NAMED *DRN*) WILL ISSUE THIS MESSAGE AND ABORT
  360. * IF NOT ASSIGNED TO THE SYSTEM CONTROL POINT.
  361. SPACE 4,20
  362. *** ERRLOG MESSAGES.
  363. *
  364. * EQORD,TKNNNN, MEDIA DEFECT ENCOUNTERED.
  365. *
  366. * A MEDIA DEFECT HAS BEEN ENCOUNTERED ON EQUIPMENT WITH EST
  367. * ORDINAL ORD, LOGICAL TRACK NNNN. A REQUEST HAS BEEN ISSUED
  368. * TO AUTOMATICALLY FLAW THIS TRACK WHEN IT IS DROPPED.
  369. *
  370. *
  371. * CHCC MH427-DXX,CMN.
  372. *
  373. * CONTROLLER N ON CHANNEL CC IS RUNNING MICROCODE REVISION
  374. * LEVEL XX.
  375. *
  376. *
  377. * YYZZZ, UNN, CMA CONTROLLER DISABLED, CCHBB.
  378. *
  379. * CONTROLLER A ON CONCURRENT CHANNEL BB HAS BEEN DISABLED.
  380. * THIS DRIVER WILL NO LONGER TRY TO USE THIS CONTROLLER.
  381. * THIS ACTION WAS TAKEN AS A RESULT OF ERROR PROCESSING FOR
  382. * DRIVE NN OF THE LOGICAL UNIT WITH DRIVE TYPE YY AND EST
  383. * ORDINAL ZZZ. ACCESS TO THIS CONTROLLER MAY BE REENABLED
  384. * BY ENTERING AN *UP,CCH* COMMAND FOR THE AFFECTED CHANNEL.
  385. *
  386. *
  387. * YYZZZ, UNN, CMA CONTROLLER ENABLED, CCHBB.
  388. *
  389. * CONTROLLER A ON CONCURRENT CHANNEL BB HAS BEEN REENABLED.
  390. * THIS DRIVER WILL NOW ATTEMPT TO USE THIS CONTROLLER AGAIN.
  391. * THIS ACTION WAS TAKEN IN RESPONSE TO AN *UP,CCH* COMMAND
  392. * FOR THIS CHANNEL.
  393. *
  394. *
  395. * YYZZZ, UNN, CMA RESET ON CCHBB.
  396. *
  397. * A SLAVE RESET HAS BEEN INITIATED ON CONTROLLER A ON
  398. * CONCURRENT CHANNEL BB, AS PART OF ERROR PROCESSING FOR
  399. * DRIVE NN OF THE LOGICAL UNIT WITH DRIVE TYPE YY AND EST
  400. * ORDINAL ZZZ.
  401. *
  402. *
  403. * YYZZZ, UNN, CMA RESET COMPLETE.
  404. *
  405. * THE SLAVE RESET OF CONTROLLER A, WHICH WAS INITIATED AS
  406. * PART OF ERROR PROCESSING FOR DRIVE NN OF THE LOGICAL UNIT
  407. * WITH DRIVE TYPE YY AND EST ORDINAL ZZZ, IS COMPLETE.
  408. *
  409. *
  410. * YYZZZ, UNN, CMA RESET FAILURE.
  411. *
  412. * THE SLAVE RESET OF CONTROLLER A, WHICH WAS INITIATED AS
  413. * PART OF ERROR PROCESSING FOR DRIVE NN OF THE LOGICAL UNIT
  414. * WITH DRIVE TYPE YY AND EST ORDINAL ZZZ, HAS FAILED.
  415. *
  416. *
  417. * YYZZZ, UNN, FORMAT COMPLETE.
  418. *
  419. * THE FORMAT OF DRIVE NN OF THE LOGICAL UNIT WITH DRIVE TYPE
  420. * YY AND EST ORDINAL ZZZ IS COMPLETE.
  421. *
  422. *
  423. * YYZZZ, UNN, FORMAT INITIATED.
  424. *
  425. * A FORMAT HAS BEEN INITIATED ON DRIVE NN OF THE LOGICAL UNIT
  426. * WITH DRIVE TYPE YY AND EST ORDINAL ZZZ.
  427. *
  428. *
  429. * YYZZZ, UNN,PS=XXXXXX.
  430. *
  431. * THE DAS UNIT, NN, WITH DEVICE TYPE YY AND ORDINAL ZZZ HAS
  432. * THE PACK SERIAL NUMBER XXXXXX.
  433. *
  434. *
  435. * YYZZZ, UNN, PARITY PROTECTION DISABLED.
  436. *
  437. * DRIVE NN OF THE LOGICAL UNIT WITH DRIVE TYPE YY AND ORDINAL
  438. * ZZZ HAS BEEN SET OFF LINE.
  439. *
  440. *
  441. * YYZZZ, UNN, PARITY PROTECTION RESTORED.
  442. *
  443. * DRIVE NN OF THE LOGICAL UNIT WITH DRIVE TYPE YY AND ORDINAL
  444. * ZZZ HAS BEEN RESTORED.
  445. *
  446. *
  447. * YYZZZ, UNN, PARITY RESTORE INITIATED.
  448. *
  449. * A PARITY RESTORE HAS BEEN INITIATED ON DRIVE NN OF THE
  450. * LOGICAL UNIT WITH DRIVE TYPE YY AND ORDINAL ZZZ.
  451. SPACE 4,10
  452. *** OPERATOR MESSAGES.
  453. *
  454. * EQORD, SPIN UP PENDING.
  455. *
  456. * EQORD UNN FORMATTING.
  457. *
  458. * CMX BEING RESET ON CCHNN.
  459. *
  460. * MR ERROR.
  461. SPACE 4,15
  462. *** DISK ERROR PROCESSING.
  463. *
  464. * THE DRIVER MAINTAINS A COUNTER OF THE NUMBER OF RETRIES
  465. * NECESSARY TO SUCCESSFULLY PROCESS A REQUEST. IF THE
  466. * ERROR COUNT IS NON-ZERO WHEN A REQUEST IS COMPLETED, THE
  467. * DRIVER WILL LOG A BML MESSAGE AND INCREMENT THE RECOVERED
  468. * ERROR COUNT IN THE MST.
  469. *
  470. * IF THE ERROR COUNT REACHES *MERC* BEFORE THE REQUEST IS
  471. * SUCCESSFULLY COMPLETED, THE DRIVER WILL SET AN ERROR CODE
  472. * IN THE *CBT*, LOG A FATAL ERROR IN THE BML, AND INCREMENT
  473. * THE UNRECOVERED ERROR COUNT IN THE MST.
  474. SPACE 4,10
  475. *** CONFIGURATION NOTES.
  476. *
  477. * IN A DUAL ACCESS ENVIRONMENT, THE SAME EQUIPMENT NUMBER MUST
  478. * BE SET FOR THE PORT IN USE ON EACH CONTROLLER.
  479. SPACE 4,20
  480. *** SPECIAL PROGRAMMING NOTES.
  481. *
  482. * THE FOLLOWING IS A LIST OF SPECIAL NOTES THAT SHOULD BE
  483. * READ AND UNDERSTOOD BEFORE ANY MODIFICATIONS ARE MADE TO
  484. * THIS PROGRAM.
  485. *
  486. *
  487. * 1) WHERE POSSIBLE, *CMR* POINTERS HAVE BEEN PLUGGED BY THE
  488. * PRESET ROUTINE TO IMPROVE THE EXECUTION SPEED OF THE
  489. * PROGRAM AND TO MINIMIZE THE AMOUNT OF CODE.
  490. *
  491. * 2) SUBROUTINE *IMR* ISSUES A *BIOM* REQUEST TO *CPUMTR*
  492. * WITHOUT WAITING FOR THE REQUEST TO COMPLETE. THEREFORE,
  493. * BEFORE WRITING THE OUTPUT REGISTER FOR ANY OTHER MONITOR
  494. * FUNCTION, SUBROUTINE *CMC* MUST BE CALLED TO ENSURE ANY
  495. * PREVIOUS *BIOM* REQUEST IS COMPLETE. TO ENSURE THAT THIS
  496. * LOGIC IS FOLLOWED, THE *MONITOR* MACRO IS REDEFINED TO
  497. * CALL SUBROUTINE *IMF* RATHER THAN *PPR* SUBROUTINE *FTN*.
  498. *
  499. * 3) THE DEVICE STATE TABLE COMPLETELY OVERLAYS *PPR*.
  500. * THEREFORE, IT IS NOT POSSIBLE TO CALL ANY *PPR* ENTRY
  501. * POINT AFTER SUBROUTINE *IST* IS CALLED IN *3DZ*.
  502. SPACE 4,25
  503. *** INFORMATIVE BML MESSAGES.
  504. *
  505. * SOME MESSAGES MAY BE LOGGED AT DRIVE INITIALIZATION TIME THAT
  506. * ARE INFORMATIVE RATHER THAN HARDWARE ERRORS.
  507. *
  508. * 1) IF A DRIVE IS FORMATTED FOR NOS/VE, THEN USED BY NOS IN
  509. * DUAL ACCESS MODE, THE DRIVE WILL BE FORMATTED THROUGH
  510. * ONE PATH, BUT THE CONTROLLER ON THE OTHER PATH DOES NOT
  511. * YET KNOW A FORMAT CHANGE OCCURRED. IF THE NUMBER OF
  512. * PHYSICAL DRIVES PER LOGICAL UNIT REMAINS THE SAME, A
  513. * LOGICAL RESET WILL BE REQUIRED. EXAMPLE OF RESPONSE
  514. * RETURNED.
  515. *
  516. * 0016 0132 0600 0018 0DE1 0000 0101 0000 C0FE 0000 1000
  517. *
  518. * IF THE NUMBER OF PHYSICAL DRIVES PER LOGICAL UNIT
  519. * CHANGES, A SLAVE RESET WILL BE REQUIRED ON THE SIDE THAT
  520. * DOES NOT DO THE FORMAT/CLUSTER.
  521. *
  522. * 2) IF THE SYSTEM IS DEADSTARTED WHILE I/O REQUESTS ARE IN
  523. * PROGRESS OR A CHANNEL IS DOWNED WHEN I/O IS IN PROGRESS,
  524. * A DRIVE COULD BE LEFT RESERVED. THE NEXT TIME THE DRIVE
  525. * IS ACCESSED, A RECOVERABLE ERROR MAY OCCUR. IF A DRIVE
  526. * IS BUSY, THE DRIVE RESET, STEP 2 OF ERROR RECOVERY, WILL
  527. * BREAK THE RESERVE.
  528. SPACE 4,10
  529.  
  530. ** COMMON DECKS.
  531.  
  532.  
  533. *CALL COMPMAC
  534. RICHI$ EQU 1 SELECT DEFERRED INSTRUCTION MODIFICATION
  535. LCHI$ EQU 1 SELECT CONL FOR CHANNEL ADDRESS TABLE
  536. *CALL COMPCHI
  537. *CALL COMSCPS
  538. QUAL$S SET 0 REMOVE QUALIFICATION OF COMSDFS CONSTANTS
  539. *CALL COMSDFS
  540. *CALL COMSEVT
  541. LIST X
  542. *CALL COMSHIO
  543. LIST *
  544. QUAL IOU
  545. *CALL COMSIOU
  546. QUAL *
  547. QUAL MMF
  548. *CALL COMSMMF
  549. QUAL *
  550. *CALL COMSMSC
  551. *CALL COMSMSP
  552. *CALL COMSMST
  553. *CALL COMSPIM
  554. *CALL COMS1DS
  555. SPACE 4,10
  556. ** INTERFACE SPECIFICATIONS.
  557.  
  558.  
  559. DN MICRO 1,3,*1DA* DEFAULT DRIVER NAME
  560. TITLE CONSTANTS AND DEFINITIONS.
  561. SPACE 4,10
  562. **** DIRECT CELL ALLOCATION.
  563.  
  564.  
  565. NR EQU 15 - 21 NEXT REQUEST
  566. WB EQU 22 - 26 CM WORD BUFFER
  567.  
  568. * THE NEXT FIVE LOCATIONS ARE ORDER DEPENDENT.
  569.  
  570. PB EQU 27 PREVIOUS CONTROL BUFFER ORDINAL
  571. CB EQU 30 CURRENT CONTROL BUFFER ORDINAL
  572. NB EQU 31 NEXT CONTROL BUFFER ORDINAL
  573. UA EQU 32 - 33 UEM ADDRESS / 100
  574.  
  575. EO EQU 34 EST ORDINAL
  576. DN EQU 35 DRIVE NUMBER
  577. CI EQU 36 CONTROLLER STATE TABLE ADDRESS
  578. CN EQU 37 CONTROLLER NUMBER
  579. MS EQU 40 MAJOR STATUS (RESPONSE PACKET)
  580. RT EQU 41 STATUS RESPONSE TYPE
  581. TM EQU 42 TRANSFER MODE, 0 = STREAM DATA
  582. DT EQU 43 DRIVE TYPE
  583. UC EQU 44 UNIT ACTIVITY COUNT
  584. RW EQU 45 READ / WRITE FLAG
  585. PA EQU 46 PROCESSOR ADDRESS
  586. DI EQU 47 DEVICE STATE TABLE ADDRESS
  587. CT EQU IR CHANNEL TYPE, 0 = 10 MB CHANNEL
  588. FC EQU IR+1 FORMAT COMPLETE FOR ALL UNITS IF NONZERO
  589. DD EQU IR+2 NUMBER OF DATA DRIVES IN DEVICE
  590. MF EQU IR+3 MASTER CLEAR CHANNEL ERROR IF NONZERO
  591. CR EQU 57 CHANNEL RESERVED IF NONZERO
  592. RF EQU 60 RESET IN PROGRESS IF NONZERO
  593. LF EQU 61 LAST FUNCTION
  594. PD EQU 62 NUMBER OF PARITY DRIVES IN DEVICE
  595. CW EQU 63 - 67 CM WORD BUFFER
  596. ****
  597. SPACE 4,10
  598. ** IPI ADAPTER FUNCTION CODES.
  599.  
  600.  
  601. F0000 EQU 0#0000 MASTER CLEAR
  602. F00E1 EQU 0#00E1 READ STATUS REGISTER
  603. F0100 EQU 0#0100 CLEAR DMA ERROR
  604. F0102 EQU 0#0102 READ IPI REVISION REGISTER
  605. F0300 EQU 0#0300 WRITE CONTROL REGISTER
  606. F0700 EQU 0#0700 READ OPERATIONAL STATUS
  607. F0800 EQU 0#0800 DMA TERMINATE
  608. F0A00 EQU 0#0A00 READ T REGISTER
  609. F0B00 EQU 0#0B00 WRITE T REGISTER
  610. F0C00 EQU 0#0C00 DMA READ FROM ADAPTER
  611. F0D00 EQU 0#0D00 DMA WRITE TO ADAPTER
  612. F0E00 EQU 0#0E00 CLEAR T REGISTER
  613.  
  614. F0062 EQU 0#0062 PORT A SELECT
  615. F0862 EQU 0#0862 PORT B SELECT
  616. SPACE 4,10
  617. ** IPI CHANNEL FUNCTION CODES.
  618.  
  619.  
  620. F0029 EQU 0#0029 SELECT CONTROLLER (SET SELECT OUT)
  621. F005B EQU 0#005B DEFINE INFORMATION TRANSFER (SET SYNC OUT)
  622. F0071 EQU 0#0071 DESELECT CONTROLLER (CLEAR SELECT OUT)
  623. F0711 EQU 0#0711 CLEAR MASTER OUT
  624. F0715 EQU 0#0715 ENABLE INTERRUPTS (SET MASTER OUT)
  625. F8025 EQU 0#8025 REQUEST TRANSFER MODE (SET MASTER OUT)
  626. F8039 EQU 0#8039 MASTER STATUS (CLEAR MASTER OUT)
  627. F8215 EQU 0#8215 RESET LOGICAL INTERFACE (SET MASTER OUT)
  628. F8415 EQU 0#8415 RESET SLAVE (SET MASTER OUT)
  629. F9213 EQU 0#9213 MASTER RESET SLAVES (SET SYNC OUT)
  630.  
  631. * DATA TRANSFER FUNCTIONS.
  632.  
  633. F0081 EQU 0#0081 READ INTERLOCKED
  634. F0181 EQU 0#0181 WRITE INTERLOCKED
  635. F0281 EQU 0#0281 READ STREAMING
  636. F0381 EQU 0#0381 WRITE STREAMING
  637. SPACE 4,10
  638. ** COMMAND / RESPONSE PACKET DEFINITIONS.
  639.  
  640.  
  641. PLN EQU 0 PACKET LENGTH
  642. CRN EQU 1 COMMAND REFERENCE NUMBER
  643. OPC EQU 2 OPERATION CODE
  644. CUN EQU 3 CONTROLLER + UNIT NUMBER
  645. FCP EQU 4 FIRST COMMAND PARAMETER
  646.  
  647. MST EQU 4 MAJOR STATUS
  648.  
  649. * MAJOR STATUS RESPONSE TYPES.
  650.  
  651. CMCT EQU 1 COMMAND COMPLETE
  652. ASRT EQU 4 ASYNCHRONOUS RESPONSE
  653. XFNT EQU 5 TRANSFER NOTIFICATION
  654.  
  655. * MAJOR STATUS CODES.
  656.  
  657. CMCS EQU 0#12 COMMAND COMPLETE (CONDITIONAL SUCCESS)
  658. CMSS EQU 0#18 COMMAND COMPLETE (SUCCESSFUL)
  659. ASRS EQU 0#40 ASYNCHRONOUS RESPONSE
  660. XFNS EQU 0#50 TRANSFER NOTIFICATION
  661.  
  662. IOPL EQU 20 I/O COMMAND PACKET LENGTH
  663.  
  664. RPBFL EQU 77 RESPONSE PACKET BUFFER LENGTH
  665. SPACE 4,10
  666. ** COMMAND PACKET OPERATION CODES.
  667.  
  668.  
  669. C0200 EQU 0#0200 REPORT ATTRIBUTES
  670. C0202 EQU 0#0202 RESTORE ATTRIBUTES
  671. C0209 EQU 0#0209 LOAD ATTRIBUTES
  672. C020A EQU 0#020A SAVE ATTRIBUTES
  673. C0301 EQU 0#0301 REPORT ADDRESSEE CONDITION
  674. C0302 EQU 0#0302 REPORT ADDRESSEE STATUS
  675. C0700 EQU 0#0700 SET OPERATING MODE
  676. C0800 EQU 0#0800 ABORT (DRIVE RESET)
  677. C1005 EQU 0#1005 BLOCK READ
  678. C2005 EQU 0#2005 BLOCK WRITE
  679. C280E EQU 0#280E FORMAT
  680. C8100 EQU 0#8100 DRIVE DIAGNOSTICS
  681. CE005 EQU 0#E005 RESTORE DRIVE
  682. SPACE 4,10
  683. ** COMMAND PACKET PARAMETER ID-S.
  684.  
  685.  
  686. P02D1 EQU 0#02D1 PERFORMANCE LOGGING
  687. P0254 EQU 0#0254 DRIVE RESET
  688. P02D2 EQU 0#02D2 MASTER TERMINATE
  689. P02D3 EQU 0#02D3 EXTENT RESPONSE
  690. P02D4 EQU 0#02D4 ENABLE ASYNCS
  691. P02D5 EQU 0#02D5 PHYSICAL DRIVE
  692. P0351 EQU 0#0351 DISK MODES
  693. P036C EQU 0#036C REQUEST ATTRIBUTE
  694. P0931 EQU 0#0931 COMMAND EXTENT
  695. P0568 EQU 0#0568 FACILITIES ATTACHED
  696. P0968 EQU 0#0968 FACILITIES ATTACHED
  697. P0D68 EQU 0#0D68 FACILITIES ATTACHED
  698. P1168 EQU 0#1168 FACILITIES ATTACHED
  699. SPACE 4,10
  700. ** SUBSTATUS PARAMETER ID CODES.
  701.  
  702.  
  703. ID16 EQU 0#16 MACHINE EXCEPTION FOR CONTROLLER
  704. ID17 EQU 0#17 COMMAND EXCEPTION FOR CONTROLLER
  705. ID23 EQU 0#23 MESSAGE EXCEPTION
  706. ID24 EQU 0#24 INTERVENTION REQUIRED FOR DRIVE
  707. ID26 EQU 0#26 MACHINE EXCEPTION FOR DRIVE
  708. ID29 EQU 0#29 CONDITIONAL SUCCESS
  709. ID32 EQU 0#32 RESPONSE EXTENT (COMMON)
  710. SPACE 4,10
  711. ** INFORMATION TRANSFER DEFINITIONS.
  712.  
  713.  
  714. CIOT EQU 0 COMMAND - INFORMATION OUT
  715. RIIN EQU 1 RESPONSE - INFORMATION IN
  716. DAOT EQU 2 DATA - INFORMATION OUT
  717. DAIN EQU 3 DATA - INFORMATION IN
  718. SPACE 4,10
  719. ** MAINTENANCE REGISTER REQUEST CODE SYMBOLS.
  720.  
  721.  
  722. MR EQU /IOU/MR MAINTENANCE CHANNEL
  723. IOUC EQU /IOU/IOUC+/IOU/MRRD READ CONNECT CODE
  724. RMRF EQU /IOU/MRRD-/IOU/MRRD READ REGISTER
  725. WMRF EQU /IOU/MRWT-/IOU/MRRD WRITE REGISTER
  726.  
  727. RFMR EQU RMRF*10000+/IOU/FMCR READ FAULT MASK REGISTER
  728. RCSR EQU RMRF*10000+/IOU/C0CR READ CHANNEL STATUS REGISTER
  729. WFMR EQU WMRF*10000+/IOU/FMCR WRITE FAULT MASK REGISTER
  730. SPACE 4,10
  731. ** INITIAL OR FINAL FAULT ANALYSIS CODES.
  732.  
  733.  
  734. ECIE EQU 2 IPI CHANNEL ERROR FLAG (CHPE)
  735.  
  736. ECHF EQU 7 CHANNEL HUNG FULL (CHFE)
  737.  
  738. ETIT EQU 10 CONTROLLER INTERRUPT TIMEOUT (FTOE)
  739. ETFN EQU 11 CHANNEL FUNCTION TIMEOUT
  740.  
  741. EDPE EQU 14 MEDIA ERROR (PARE)
  742.  
  743. *EDNR EQU 20 USED BY 9853 (NRDE)
  744.  
  745. EIDT EQU 24 INCOMPLETE DATA TRANSFER (IDTE)
  746.  
  747. ERSS EQU 30 RESERVED SUBSTATUS (ID X1) (DSTE)
  748. EDFM EQU 31 DEFECT MANAGEMENT ERROR (ID X2)
  749. EMME EQU 32 MESSAGE/MICROCODE EXCEPTION (ID X3)
  750. ETSL EQU 33 SELECT TIMEOUT
  751.  
  752. ESUF EQU 34 SPIN-UP FAILURE (DSTE)
  753. ESDF EQU 35 SPIN-DOWN FAILURE
  754. *ETTC EQU 36 USED BY 9853
  755. EIVR EQU 37 INTERVENTION REQUIRED (ID X4)
  756.  
  757. EAPR EQU 40 ALTERNATE PORT EVENT (ID X5) (DSTE)
  758. EMEX EQU 41 MACHINE EXCEPTION (ID X6)
  759. ECEX EQU 42 COMMAND EXCEPTION (ID X7)
  760. EFDF EQU 43 FORMAT DRIVE FAILURE
  761.  
  762. EIOS EQU 44 I/O INITIATION ERROR (DSTE)
  763. *ERPE EQU 45 USED BY 9853
  764. *ERDS EQU 46 USED BY 9853
  765. EROD EQU 47 RESTORE OFF-LINE DRIVE ERROR
  766.  
  767. ECMA EQU 50 COMMAND ABORTED (ID X8) (DSTE)
  768. ECCS EQU 51 CONDITIONAL SUCCESS (ID X9)
  769. ECIC EQU 52 COMMAND INCOMPLETE (ID XA)
  770. EUST EQU 53 SUCCESSFUL NOT SET IN ENDING STATUS
  771.  
  772. EDTF EQU 54 DIAGNOSTIC FAULT (DDFE)
  773. *EDRS EQU 55 USED BY 9853
  774.  
  775. ECNR EQU 60 SLAVE/SYNC IN SIGNAL ERROR (RAME)
  776. ELCA EQU 61 LOAD CONTROLLER ATTRIBUTES FAILURE
  777. ESRE EQU 62 SELECTIVE RESET ERROR
  778. ERDA EQU 63 REPORT DEVICE ATTRIBUTES ERROR
  779.  
  780. EBAE EQU 64 BUS ACKNOWLEDGE ERROR (RAME)
  781. ECOT EQU 65 CONTROLLER OVER TEMPERATURE
  782.  
  783. EDRE EQU 70 DRIVE RESERVE ERROR (DRVE)
  784.  
  785. ECRE EQU 74 USED BY 9853 (RAME)
  786. ECMD EQU 75 CONTROLLER DEAD
  787.  
  788. WDTP EQU 100 WRONG DRIVE TYPE (DSTE)
  789. PNSP EQU 101 PARALLEL NOT SUPPORTED
  790. PDPD EQU 102 PARITY DRIVE PROTECTION DISABLED
  791. PDPE EQU 103 PARITY DRIVE PROTECTION ENABLED
  792. SPACE 4,10
  793. ** CHANNEL STATUS FAULT CODES.
  794.  
  795.  
  796. ECPE EQU 1 CHANNEL PARITY ERROR
  797. *ECIE EQU 2 IPI CHANNEL ERROR FLAG
  798.  
  799. ECER EQU 4 CHANNEL DETECTED ERROR
  800. ECCM EQU 5 CHANNEL DETECTED CM ERROR
  801. SPACE 4,10
  802. ** DEVICE STATE TABLE DEFINITIONS. (LDM XXXX,DI)
  803.  
  804.  
  805. BEGIN BSSN 0
  806. PUTO BSSN 1 *PUT* ORDINAL
  807. PNUN BSSN 1 4/C, 3/P, 3/E, 6/U WHERE
  808. C = *CSTB* INDEX
  809. P = PORT NUMBER
  810. E = EQUIPMENT (CONTROLLER) NUMBER
  811. U = UNIT NUMBER
  812. ADDR BSSN 1 NO ATTENTION RETURN
  813. ATTN BSSN 1 ATTENTION RETURN
  814. IDTR BSSN 1 RETURN ADDRESS FROM *IDT*
  815. EEST BSSN 1 EXPECTED EXECUTION STATUS
  816. RWST BSSN 1 READ / WRITE STATUS
  817. RQLN BSSN 1 1/U, 11/R WHERE
  818. U = UNIT INTERLOCK SET (IN *PUT*)
  819. R = NUMBER OF REQUESTS PROCESSED
  820. CSCT BSSN 1 CUMULATIVE SECTOR COUNT
  821. CYLN BSSN 1 CYLINDER ON SEEK
  822. PHYD BSSN 1 PHYSICAL DRIVE
  823. TKSN BSSN 1 TRACK, SECTOR FOR I/O
  824. ERCT BSSN 1 ERROR COUNT
  825. SREQ BSSN 1 SPECIAL REQUEST
  826. IPPS BSSN 1 I/O PREPROCESSING STATUS
  827. LCMD BSSN 1 LAST COMMAND OP CODE
  828. IOST BSSN 1 READ/WRITE STATUS
  829. DVTP BSSN 1 9/XX, 1/0, 6/YY WHERE
  830. XX = BIT 15 PARTITIONED DEVICE
  831. BIT 14 PROCESS LOST PARITY
  832. BIT 13 CHECK DRIVE TYPE
  833. BIT 12 MMF RESTORE / ACCESS DISABLED
  834. BIT 11 MMF RESTORE / ACCESS ENABLED
  835. BIT 10 ENABLE MMF PARITY DEV. ACCESS
  836. BIT 09 MMF SHARED DEVICE
  837. BIT 08 MMF RESTORE INITIATION
  838. BIT 07 CHECK MMF PARITY ACCESS
  839. YY = DRIVE TYPE (0 = EA, 1 = EB, ... )
  840. OUPD BSSN 1 OFFLINE UNIT OF PARITY DEVICE
  841. SEPR BSSN 1 RETURN ADDRESS FROM *SEP* OR *WAC*
  842. DSTBE BSSN 0 LENGTH OF STATE TABLE ENTRY
  843. END BSSN
  844. SPACE 4,10
  845. ** CSTB - CONTROLLER STATE TABLE. (LDML XXXX,CI)
  846.  
  847.  
  848. BEGIN BSSN 0
  849. CTST BSSN 1 CONTROLLER STATUS
  850.  
  851. * 1/S, 1/R, 1/D, 1/0, 12/FD
  852. * S = SLAVE RESET IN PROGRESS
  853. * R = INITIAL LOGICAL RESET REQUIRED (DRIVER STARTUP)
  854. * D = CONTROLLER DEAD (SLAVE RESET FAILED)
  855. * FD = *DST* ADDRESS OF FIRST DEVICE ON CONTROLLER.
  856. *
  857. * NOTE - COMMANDS AND RESPONSES WILL BE TRANSFERRED IN
  858. * INTERLOCK MODE IF *CTST* BIT 15, 14 OR 13 IS SET.
  859.  
  860. CTSN BSSN 3 CONTROLLER SERIAL NUMBER (LAST 6 DIGITS)
  861. CSTBE BSSN 0 LENGTH OF CONTROLLER STATE TABLE ENTRY
  862. END BSSN
  863. SPACE 4,10
  864. **** ASSEMBLY CONSTANTS.
  865.  
  866. TE EQU 0 = 1 TO ENABLE COMMAND/RESPONSE TRACING
  867. DE EQU 0 = 1 TO ENABLE DEBUG MODE
  868. BPB EQU 16384D BYTES PER BUFFER / DATA BURST
  869. CH EQU 16 CHANNEL NUMBER
  870. MXCN EQU 4 MAXIMUM NUMBER OF CONTROLLERS / DRIVER
  871. MXND EQU 30 MAXIMUM NUMBER OF UNITS / DRIVER
  872. CBTO EQU 30D NORMAL COMMAND BLOCK TIMEOUT (SECONDS)
  873. FMTO EQU 12D*60D FORMAT TIMEOUT (SECONDS) (UPPED FOR 47444)
  874. SUTO EQU 8D*60D SPIN UP TIMEOUT (SECONDS)
  875. SRTO EQU 9D*60D SLAVE RESET TIMEOUT (SECONDS)
  876. DRFM EQU 1000 DIRECTION FLAG MASK
  877. ILFM EQU 4000 INTERLOCK FLAG MASK
  878. CSRC EQU 4 RETRY COUNT TO MAKE CHANNEL SWITCH
  879. SRRC EQU 2 RETRY COUNT TO ISSUE SLAVE RESET
  880. MERC EQU CSRC*2 RETRY COUNT TO SET UNRECOVERABLE
  881. IRBR EQU 3 I/O REQUESTS BEFORE NEXT RESTORE
  882. SBUR EQU 20D SECONDS BETWEEN *UTRS* REQUESTS
  883.  
  884. ****
  885. SPACE 4,10
  886. * MEMORY LAYOUT.
  887.  
  888. DSTB EQU 100 START OF DEVICE STATE TABLES
  889. DSTBL EQU DSTB+DSTBE*MXND LWA+1 OF DEVICE STATE TABLES
  890. ERRNG 7777-DSTBL DI IS IN *CTST* BITS 0-11 ONLY
  891. CSTB EQU DSTBL CONTROLLER STATE TABLE
  892. CSTBL EQU CSTB+CSTBE*MXCN LWA+1 OF CONTROLLER STATE TABLES
  893.  
  894. OCMD MAX CSTBL,MSFW+5 DRIVER ORIGIN
  895. SPACE 4,10
  896. * LAYOUT OF ERROR DATA BUFFERS.
  897.  
  898. BEGIN BSSN 0 REAL TIME ERROR DATA
  899. EXST BSSN 1 ENDING STATUS
  900. BSSN 2 RESERVED
  901. LSCC BSSN 1 LAST SLAVE COMMAND
  902. LCFN BSSN 1 LAST CHANNEL FUNCTION
  903. CREG BSSN 4 CHANNEL REGISTER DATA
  904. BSSN 3 RESERVED
  905. TREG BSSN 3 CONTENTS OF T REGISTER
  906. RTEDL EQU *
  907.  
  908. EMBF BSSN 0 ERROR MESSAGE BUFFER
  909. BSSN 3*5 BML MESSAGE PREFIX AND HEADER
  910. CODE BSSN 1 INITIAL FAULT CODE
  911. FCS1 BSSN 1 FAULT CODE - ERROR STEP 1
  912. FCS2 BSSN 1 FAULT CODE - ERROR STEP 2
  913. FCS3 BSSN 1 FAULT CODE - ERROR STEP 3
  914. FALT BSSN 1 FINAL FAULT CODE
  915. EREA BSSN 1 ERROR RECOVERY ENTRY ADDRESS
  916. RBCT BSSN 1 RESIDUAL BYTE COUNT
  917. STCT BSSN 1 SECTORS TRANSFERED COUNT
  918. ICYL BSSN 1 CYLINDER ON INITIAL SEEK
  919. ITAS BSSN 1 TRACK + SECTOR ON INITIAL SEEK
  920. .3 SET *-EMBF+4
  921. EMBFS EQU .3/5
  922. EMBF1 EQU EMBFS*5+EMBF
  923. .1 SET RTEDL*4
  924. .2 SET .1-.1/3*3+2
  925. .3 SET .1/3+.2/3+4
  926. EMBF2 EQU .3/5*5+EMBF1
  927. EMBF2L EQU EMBF2/5
  928. .1 SET RPBFL*4
  929. .2 SET .1-.1/3*3+2
  930. .3 SET .1/3+.2/3+4
  931. EMBFL EQU .3/5*5+EMBF2
  932.  
  933. END BSSN
  934. EDBFL EQU RTEDL+EMBFL
  935. TITLE MACROS.
  936. ** MACRO DEFINITIONS.
  937. TBLM SPACE 4,10
  938. ** TBLM - CREATE MASS STORAGE DEVICE TABLE ENTRIES.
  939. *
  940. PURGMAC TBLM
  941.  
  942. TBLM MACRO TY
  943. .A1 IFGE AI_TY,AIAB
  944. .A2 IFLT AI_TY,AIAE
  945.  
  946. * 1/PARITY DRIVES, 3/DATA DRIVES, 12/MNEMONIC
  947.  
  948. DM RMT
  949. EQ_TY EQU *-DM
  950. VFDL 1/BF_TY-6,3/PDD_TY,12/2R_TY
  951. DM RMT
  952.  
  953. * PHYSICAL SECTORS PER CYLINDER.
  954.  
  955. PSCY RMT
  956. CON PTCY_TY*PSPT_TY-SPSC_TY
  957. PSCY RMT
  958.  
  959. .A SET CYPN_TY-1
  960. .B SET PTCY_TY*PSPT_TY-SPSC_TY
  961. .A SET .A*.B
  962. .C SET MCLT_TY-4000B
  963. .D SET SL_TY/LSPS_TY
  964. .C SET .D*.C
  965. .A SET .A-.C+1
  966. .A SET .A/PSBF_TY*PSBF_TY
  967. IFGT .A,10B*.B,1
  968. .A SET 10B*.B
  969. STS_TY EQU .A
  970.  
  971. * 7/BML MESSAGE DEVICE CODE, 9/STREAMING END-CASE SECTORS.
  972.  
  973. STS RMT
  974. VFDL 7/MLID_TY,9/STS_TY
  975. STS RMT
  976.  
  977. * 4/LOGICAL TO PHYSICAL SHIFT, 12/LAST CYLINDER ON UNIT.
  978.  
  979. CYUN RMT
  980. VFDL 4/CFS_TY,12/CYUN_TY-1
  981. CYUN RMT
  982.  
  983. * 4/PHYSICAL SECTORS PER BUFFER, 12/MAINTENANCE CYLINDER.
  984.  
  985. MC RMT
  986. VFDL 4/PSBF_TY,12/CYPN_TY-1
  987. MC RMT
  988.  
  989. * 6/LAST TRACK ON CYLINDER, 6/LAST SECTOR ON CYLINDER + 1
  990.  
  991. LSOC RMT
  992. VFD 6/PTCY_TY-1,6/PSPT_TY-SPSC_TY
  993. LSOC RMT
  994.  
  995. * BYTES PER SECTOR + PHYSICAL SECTORS PER PHYSICAL TRACK.
  996.  
  997. BPS RMT
  998. CONL 16384D/PSBF_TY+PSPT_TY
  999. BPS RMT
  1000.  
  1001. * MODEL NUMBER (LAST TWO BYTES).
  1002.  
  1003. MN RMT
  1004. CONL MDL_TY
  1005. MN RMT
  1006.  
  1007. .A2 ENDIF
  1008. .A1 ENDIF
  1009. TBLM ENDM
  1010. SPACE 4
  1011. TBL "MSEQ" GENERATE DEVICE ATTRIBUTE TABLES
  1012. TBLM SPACE 4,10
  1013. ** TBLM - CREATE TABLE ENTRY MACRO.
  1014. *
  1015. *NAM TBLM
  1016. *
  1017. * ENTRY NAM = TABLE NAME.
  1018. *
  1019. * EXIT NAM_E MACRO DEFINED.
  1020.  
  1021.  
  1022. PURGMAC TBLM
  1023.  
  1024. MACRO TBLM,NAM
  1025. PURGMAC NAM_E
  1026. NAM_E MACRO ADDR
  1027. LOCAL A
  1028. MACREF NAM_E
  1029. NOREF A
  1030. A EQU ADDR
  1031. T_NAM RMT
  1032. CONL A
  1033. RMT
  1034. TBLM ENDM
  1035. CBTE SPACE 4,15
  1036. ** CBTE - CONTROL BUFFER TABLE ENTRY.
  1037. *
  1038. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TCBT*
  1039. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  1040. * REQUIRES THE FWA OF THE CONTROL BUFFER TABLE.
  1041. *
  1042. * CBTE ADDR
  1043. *
  1044. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  1045. *
  1046. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TCBT*.
  1047.  
  1048.  
  1049. CBT TBLM
  1050. CCTE SPACE 4,15
  1051. ** CCTE - CHANNEL CONTROL TABLE ENTRY.
  1052. *
  1053. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TCCT*
  1054. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  1055. * REQUIRES THE FWA OF THE CHANNEL CONTROL TABLE.
  1056. *
  1057. * CCTE ADDR
  1058. *
  1059. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  1060. *
  1061. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TCCT*.
  1062.  
  1063.  
  1064. CCT TBLM
  1065. CHTE SPACE 4,15
  1066. ** CHTE - CHANNEL TABLE ENTRY.
  1067. *
  1068. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TCHT*
  1069. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  1070. * REQUIRES THE FWA OF THE CHANNEL TABLE.
  1071. *
  1072. * CHTE ADDR
  1073. *
  1074. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  1075. *
  1076. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TCHT*.
  1077.  
  1078.  
  1079. CHT TBLM
  1080. EMBE SPACE 4,15
  1081. ** EMBE - ERROR MESSAGE TABLE ENTRY.
  1082. *
  1083. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TEMB*
  1084. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  1085. * REQUIRES THE FWA OF THE ERROR MESSAGE TABLE.
  1086. *
  1087. * EMBE ADDR
  1088. *
  1089. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  1090. *
  1091. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TEMB*.
  1092.  
  1093.  
  1094. EMB TBLM
  1095. EXPE SPACE 4,15
  1096. ** EXPE - EXCHANGE PACKAGE ADDRESS ENTRY.
  1097. *
  1098. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TEXP*
  1099. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  1100. * REQUIRES THE FWA OF THE PP EXCHANGE PACKAGE.
  1101. *
  1102. * EXPE ADDR
  1103. *
  1104. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  1105. *
  1106. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TEXP*.
  1107.  
  1108.  
  1109. EXP TBLM
  1110. FTTE SPACE 4,15
  1111. ** FTTE - FUNCTION TIMEOUT TABLE ENTRY.
  1112. *
  1113. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TFTT*
  1114. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  1115. * REQUIRES THE FWA OF THE FUNCTION TIMEOUT TABLE.
  1116. *
  1117. * FTTE ADDR
  1118. *
  1119. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  1120. *
  1121. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TFTT*.
  1122.  
  1123.  
  1124. FTT TBLM
  1125. PUTE SPACE 4,15
  1126. ** PUTE - PHYSICAL UNIT TABLE ENTRY.
  1127. *
  1128. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TPUT*
  1129. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  1130. * REQUIRES THE FWA OF THE PHYSICAL UNIT TABLE.
  1131. *
  1132. * PUTE ADDR
  1133. *
  1134. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  1135. *
  1136. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TPUT*.
  1137.  
  1138.  
  1139. PUT TBLM
  1140. ERRMSG SPACE 4,10
  1141. ** ERRMSG - DEFINE ERROR LOG MESSAGE.
  1142. *
  1143. * TAG ERRMSG (TEXT)
  1144. *
  1145. * *ERRMSG* DEFINES AN ERROR LOG MESSAGE, AND CALCULATES THE
  1146. * LENGTH OF THE MESSAGE IN CM WORDS. THE LENGTH IS STORED
  1147. * IN THE PP LOCATION BEFORE THE TEXT. *TAG* POINTS TO THE
  1148. * TEXT ITSELF. THE CALCULATED LENGTH IS BIASED TO INCLUDE
  1149. * THE MESSAGE HEADER CONTAINED IN SUBROUTINE *IEM*.
  1150.  
  1151.  
  1152. PURGMAC ERRMSG
  1153.  
  1154. MACRO ERRMSG,TAG,MSG
  1155. LOCAL LEN
  1156. CON LEN/5
  1157. TAG DATA C*MSG*
  1158. ERRNG 18D-*+TAG MESSAGE TOO LONG
  1159. LEN EQU *-TAG+13+4
  1160. ENDM
  1161. MONITOR SPACE 4,10
  1162. ** MONITOR - REQUEST MONITOR FUNCTION.
  1163. *
  1164. * MONITOR F
  1165. *
  1166. * ENTRY F = MONITOR FUNCTION.
  1167. * (CM+1 - CM+4) = PARAMETERS.
  1168. *
  1169. * CALLS IMF.
  1170.  
  1171.  
  1172. PURGMAC MONITOR
  1173.  
  1174. MONITOR MACRO F
  1175. MACREF MONITOR
  1176. LDK F
  1177. RJM IMF
  1178. ENDM
  1179. WAIT SPACE 4,10
  1180. ** WAIT - DO NOTHING FOR SPECIFIED TIME.
  1181. *
  1182. * WAIT N
  1183. *
  1184. * N = MICROSECOND COUNT.
  1185. *
  1186. * EXIT (A) = 0.
  1187.  
  1188.  
  1189. PURGMAC WAIT
  1190.  
  1191. WAIT MACRO N
  1192. MACREF WAIT
  1193. NOREF .2
  1194. BASE D
  1195. .2 SET N 1
  1196. IFEQ N,64,2
  1197. LDD HN
  1198. SKIP 4
  1199. IFEQ N,512,2
  1200. LDD TH
  1201. SKIP 1
  1202. LDK .2
  1203. BASE *
  1204. SBN 1
  1205. STD T0
  1206. NJN *-2 IF WAIT TIME HAS NOT ELAPSED
  1207. ENDM
  1208. TITLE MAIN PROGRAM.
  1209. DAS SPACE 4,15
  1210. ** DAS - MAIN PROGRAM.
  1211. *
  1212. * ENTRY AT *DAS* (VIA *RJM*) TO SET REENTRY ADDRESS.
  1213. * AT *DAS1* WITH (ADDR,DI) ZERO WHEN REQUEST COMPLETE.
  1214. * AT *DAS1* WITH (ADDR,DI) NONZERO TO ALLOW REENTRY.
  1215. * AT *DAS6* IF CHANNEL DOWN WHEN DRIVER LOADED.
  1216. *
  1217. * USES DI.
  1218. *
  1219. * CALLS CAA, CCR, CET, CFR, EMP, IOM, LDP, PLP, PPE, PRS.
  1220. *
  1221. * MACROS MONITOR.
  1222.  
  1223.  
  1224. ORG OCMD
  1225. RICHI BEGIN CHANNEL INSTRUCTION MODIFICATION
  1226.  
  1227. DAS SUBR PRS ENTRY (EXECUTE *PRS* ON INITIAL ENTRY)
  1228. LDML DAS SET REENTRY ADDRESS
  1229. STML ADDR,DI
  1230.  
  1231. * PROCESS NEXT DEVICE.
  1232.  
  1233. DAS1 LDC DSTB (ADDRESS OF NEXT *DST* ENTRY)
  1234. DASA EQU *-1
  1235. LMC DSTBL (LWA+1 OF *DSTB* - ADJUSTED BY *IST*)
  1236. DASB EQU *-1
  1237. ZJN DAS3 IF END OF DEVICE STATE TABLE
  1238. DAS2 LDM DASA
  1239. STD DI SET DEVICE STATE TABLE ADDRESS
  1240. ADN DSTBE
  1241. STM DASA ADVANCE TABLE ADDRESS
  1242. RJM LDP LOAD DEVICE PARAMETERS
  1243. RJM PLP PROCESS LOST PARITY, IF PENDING
  1244. RJM PPE PROCESS PARITY ENABLE, IF PENDING
  1245. RJM CAA CHECK IF ACCESS ALLOWED
  1246. NJN DAS1 IF ACCESS TO DEVICE NOT ALLOWED
  1247. RJM CFR CHECK FOR REQUEST
  1248. UJN DAS1 CHECK NEXT DEVICE
  1249.  
  1250. * END OF DEVICE STATE TABLE - CHECK FOR CHANNEL DOWN.
  1251.  
  1252. DAS3 RJM CCR CHECK FOR CHANNEL REQUEST
  1253. ZJN DAS5 IF CHANNEL DOWN
  1254. RJM CET CHECK ELAPSED TIME
  1255. MJN DAS4 IF NOT TIME TO REFRESH OPERATOR MESSAGE
  1256. LCN 0 TRY TO MAKE MULTIPLE MESSAGES VISIBLE
  1257. RJM IOM REFRESH OPERATOR MESSAGE
  1258. DAS4 LDC DSTB RESTART DEVICE STATE TABLE SCAN
  1259. STM DASA
  1260. UJP DAS2 PROCESS NEXT DEVICE
  1261.  
  1262. * CHANNEL *DOWN* DETECTED - FORCE COMPLETION ON ALL REQUESTS.
  1263.  
  1264. DAS5 UJN *+2 FIRST PASS
  1265. * UJN *+1 (SECOND PASS)
  1266. DASC EQU *-1
  1267. UJN DAS6 DROP PP ON SECOND PASS
  1268.  
  1269. SOM DASC
  1270. LDC CMP8 CHANGE PATH THRU *CFR*
  1271. STML CFRA
  1272. UJN DAS4 LOOP THROUGH DEVICE STATE TABLE
  1273.  
  1274. DAS6 MONITOR DPPM DROP PP
  1275. UJN * HANG UNTIL *CPUMTR*/*1MA* IDLES PP
  1276.  
  1277.  
  1278. .DLY CON 370 DELAY MACRO - DELAY COUNT FOR 4X PP
  1279. DLYA SBN 4 DELAY MACRO - FOR 4X PP
  1280. TITLE DEVICE ATTRIBUTE TABLES.
  1281. SPACE 4,20
  1282. ** DEVICE RELATED TABLES BUILT VIA *MSDC*.
  1283. *
  1284. * LOCATION DT IS THE INDEX TO THESE TABLES.
  1285.  
  1286. LIST G
  1287. DM SPACE 4,10
  1288. ** 1/PARITY DRIVES, 3/DATA DRIVES, 12/MNEMONIC
  1289.  
  1290.  
  1291. DM BSS 0
  1292. DM HERE
  1293. EQNS EQU *-DM
  1294. CON 0 TERMINATE DEVICE TYPE LIST
  1295. PSCY SPACE 4,10
  1296. ** PHYSICAL SECTORS PER CYLINDER.
  1297.  
  1298.  
  1299. PSCY BSS 0
  1300. PSCY HERE
  1301. STS SPACE 4,10
  1302. ** 7/BML MESSAGE DEVICE CODE, 9/STREAMING END-CASE SECTORS.
  1303.  
  1304.  
  1305. BMID BSS 0
  1306. STS BSS 0
  1307. STS HERE
  1308. CYUN SPACE 4,10
  1309. ** 4/LOGICAL TO PHYSICAL SHIFT, 12/LAST CYLINDER ON UNIT.
  1310.  
  1311.  
  1312. CFS BSS 0
  1313. CYUN BSS 0
  1314. CYUN HERE
  1315. MC SPACE 4,10
  1316. ** 4/PHYSICAL SECTORS PER BUFFER, 12/MAINTENANCE CYLINDER.
  1317.  
  1318.  
  1319. PSBF BSS 0
  1320. MC BSS 0
  1321. MC HERE
  1322. LSOC SPACE 4,10
  1323. ** 6/LAST TRACK ON CYLINDER, 6/LAST SECTOR ON CYLINDER + 1
  1324.  
  1325.  
  1326. LSOC BSS 0
  1327. LSOC HERE
  1328. BPS SPACE 4,10
  1329. ** BYTES PER SECTOR + PHYSICAL SECTORS PER PHYSICAL TRACK.
  1330.  
  1331.  
  1332. BPS BSS 0
  1333. PSPT BSS 0
  1334. BPS HERE
  1335. MN SPACE 4,10
  1336. ** MODEL NUMBER (LAST TWO BYTES).
  1337.  
  1338.  
  1339. MN BSS 0
  1340. MN HERE
  1341.  
  1342. LIST *
  1343. SPACE 4,20
  1344. ** CHANNEL TYPE RELATED TABLES.
  1345. *
  1346. * LOCATION CT IS THE INDEX INTO THESE TABLES.
  1347.  
  1348. TRAT DATA 0#7E42 10 MB CHANNEL TRANSFER RATE
  1349. DATA 0#FF42 25 MB CHANNEL TRANSFER RATE
  1350.  
  1351. PAS DATA 0#62 10 MB CHANNEL PORT A SELECT
  1352. DATA 0#362 25 MB CHANNEL PORT A SELECT
  1353.  
  1354. CTS DATA 0#F02 10 MB CHANNEL, CHANNEL TRANSFER SPEED
  1355. DATA 0 25 MB CHANNEL, CHANNEL TRANSFER SPEED
  1356.  
  1357. EDC DATA 0 10 MB CHANNEL, USE SINGLE CMI SLOT
  1358. DATA 0#4000 25 MB CHANNEL, USE DOUBLE CMI SLOT
  1359. TITLE READ / WRITE PROCESSING.
  1360. PIO SPACE 4,20
  1361. ** PIO - READ / WRITE PROCESSING.
  1362. *
  1363. * ENTRY AT *PIO* TO INITIATE REQUEST.
  1364. * AT *PIO2* FROM *CTC* IF NO DATA TRANSFERRED.
  1365. * AT *PIO6* FROM *CTC* IF NO MORE DATA.
  1366. * (RW) = 0 IF READ.
  1367. * (CB) = CONTROL BUFFER.
  1368. * (DI) = DEVICE STATE TABLE ADDRESS.
  1369. *
  1370. * EXIT TO *ERR* IF ERROR.
  1371. * TO *CMP* WHEN COMMAND COMPLETES.
  1372. *
  1373. * USES CB, T1.
  1374. *
  1375. * CALLS ATT, BCS, CTC, DCM, EIO, FCN, GSS, SCD, SFR, SOU,
  1376. * WCB, WTR.
  1377.  
  1378. PIO BSS 0 ENTRY
  1379. LDML PIOA,RW READ OR WRITE OPERATION CODE
  1380. RJM SOU SET OPERATION CODE AND UNIT
  1381.  
  1382. * COMMAND EXTENT PARAMETER SET BY *IIO*.
  1383.  
  1384. LDN IOPL COMMAND PACKET LENGTH
  1385. RJM WCB WRITE COMMAND PACKET
  1386. UJN PIO2 SET I/O IN PROGRESS
  1387.  
  1388. PIO1 RJM DCM DESELECT CONTROLLER
  1389. PIO2 LDD CB SET I/O IN PROGRESS
  1390. STM IPPS,DI
  1391. LDN XFNT PROCESS ATTENTION
  1392. RJM ATT
  1393. ZJN PIO3 IF EXPECTED STATUS
  1394. LCN EIOS I/O INITIATION ERROR
  1395. RJM ERR PROCESS ERROR
  1396.  
  1397. PIO3 STML PIOC CLEAR ENDING STATUS
  1398. LDN 1 SET CHANNEL ACTIVE FOR *CPD*
  1399. RJM SCD
  1400. LDM IPPS,DI RESTORE CURRENT BUFFER ORDINAL
  1401. PIO4 STD CB
  1402. LDML PIOC CHECK ENDING STATUS
  1403. LPN 0#30
  1404. NJN PIO1 IF PAUSE / TIME DEPENDENT OPERATION
  1405.  
  1406. * INITIATE DATA TRANSFER.
  1407.  
  1408. LDN DAIN DEFINE TRANSFER DIRECTION
  1409. SBD RW
  1410. ERRNZ DAOT+1-DAIN CODE DEPENDS ON VALUE
  1411. RJM BCS
  1412. LDML PIOB,RW SET DMA MODE
  1413. RJM FCN
  1414. RJM WTR WRITE T REGISTER
  1415. LDD CB
  1416. RJM SFR SEARCH FOR CONSECUTIVE REQUEST
  1417.  
  1418. * WAIT UNTIL ONE BURST DMA TRANSFER COMPLETE.
  1419.  
  1420. RJM CTC CHECK TRANSFER COMPLETE
  1421. * LDN 0
  1422. STD T1 CLEAR RESIDUAL BYTE COUNT
  1423. LDD NB
  1424. ZJN PIO5 IF NO MORE CONSECUTIVE REQUESTS
  1425. LDN 0#A
  1426. PIO5 LMN 0#A CHECK ENDING STATUS
  1427. RJM GSS
  1428. RJM EIO ENTER BUFFER IN I/O REQUEST QUEUE
  1429. LDD NB
  1430. NJN PIO4 IF CONSECUTIVE REQUEST PRESENT
  1431.  
  1432. * COMPLETE READ / WRITE OPERATIONS.
  1433.  
  1434. * LDN 0 CLEAR CHANNEL ACTIVE FOR *CPD*
  1435. RJM SCD
  1436. RJM DCM DESELECT CONTROLLER
  1437. LDN CMSS EXPECT COMMAND COMPLETE
  1438. PIO6 RJM ATT WAIT FOR INTERRUPT
  1439. NJN PIO7 IF NOT SUCCESSFUL
  1440. LDM RSDI CHECK IF RESTORE IN PROGRESS
  1441. LMD DI
  1442. NJN PIO6.1 IF NO RESTORE IN PROGRESS ON THIS DEVICE
  1443. SOM RMUX REQUESTS TO MULTIPLEX BETWEEN RESTORES
  1444. PIO6.1 LJM CMP COMPLETION PROCESSING
  1445.  
  1446. PIO7 LDDL MS
  1447. LMC 0#42
  1448. NJN PIO8 IF NOT CONDITIONAL SUCCESS/ASYNCH
  1449. LDDL PA
  1450. STML ATTN,DI SET ATTENTION RETURN ADDRESS
  1451. PIO8 LCN EIOS I/O INITIATION ERROR
  1452. RJM ERR PROCESS ERROR
  1453.  
  1454.  
  1455. PIOA BSS 0 COMMAND CODES
  1456. CONL C1005
  1457. CONL C2005
  1458.  
  1459. PIOB BSS 0 DATA TRANSFER FUNCTIONS
  1460. CON F0281
  1461. CON F0381
  1462.  
  1463. PIOC CON 0 ENDING STATUS (SET BY *GSS*)
  1464. TITLE FORMAT DRIVES AT DEADSTART.
  1465. CFF SPACE 4,25
  1466. ** CFF - CHECK FOR FORMAT.
  1467. *
  1468. * ENTRY FROM *CFR* AFTER INITIAL LOGICAL RESET HAS BEEN
  1469. * PERFORMED FOR ALL CONTROLLERS.
  1470. * (CI) = CONTROLLER STATE TABLE ADDRESS.
  1471. * (DI) = DEVICE STATE TABLE ADDRESS.
  1472. * (FC) = 0.
  1473. *
  1474. * EXIT TO *CMP*.
  1475. * TO *ERR* IF CONTROLLER NOT FUNCTIONING.
  1476. * (FC) = 1 IF ALL UNITS FORMATTED.
  1477. *
  1478. * USES DI, FC.
  1479. *
  1480. * CALLS CCS, CFM, CLP, CMN, CPC, CPF, IDU, ILU, LDP, SEP.
  1481.  
  1482.  
  1483. CFF5 LDN ECMD CONTROLLER DEAD
  1484. RJM ERR PROCESS ERROR
  1485.  
  1486. CFF BSS 0 ENTRY/EXIT
  1487. RJM LDP LOAD DEVICE PARAMETERS
  1488. LDD CM+3
  1489. SHN 21-FCRF+14
  1490. PJN CFF1 IF NO FORMAT REQUEST FOR THIS DEVICE
  1491. RJM IDU INTERLOCK DEVICE
  1492. NJN CFF1 IF INTERLOCK NOT AVAILABLE
  1493. RJM SEP SET ERROR PROCESSING INTERLOCK
  1494. NJN CFF1 IF ERROR IN PROGRESS ON DIFFERENT DEVICE
  1495.  
  1496. * FORMAT DEVICE.
  1497.  
  1498. LDD DI INDICATE FORMAT IN PROGRESS
  1499. STM CFFA
  1500. LDML CTST,CI CHECK FOR CONTROLLER DEAD
  1501. SHN 21-15
  1502. MJN CFF5 IF CONTROLLER NOT FUNCTIONAL
  1503. RJM CPC CHECK FOR PARALLEL CONTROLLER
  1504. RJM CMN CHECK MODEL NUMBER
  1505. RJM ILU INITIALIZE LOGICAL UNIT
  1506. LDN 0
  1507. STM CFFA INDICATE FORMAT COMPLETE
  1508. RJM CLP CLEAR *LOST PARITY* FLAGS, IF SET
  1509. RJM CFM CLEAR *FORMAT PENDING* FLAG IN MST
  1510. LDN FCRF
  1511. RJM CPF CLEAR *FORMAT* SPECIAL REQUEST IN *PUT*
  1512.  
  1513. * CHECK IF ANY FORMAT REQUESTS REMAIN.
  1514.  
  1515. CFF1 LDD DI SAVE DEVICE STATE TABLE INDEX
  1516. STM CFFB
  1517. LDC DSTB CHECK FIRST DEVICE
  1518. STD DI
  1519. CFF2 RJM LDP LOAD DEVICE PARAMETERS
  1520. LDD CM+3
  1521. SHN 21-FCRF+14
  1522. PJN CFF3 IF NO FORMAT REQUEST FOR DEVICE
  1523. RJM CCS CHECK CHANNEL STATE
  1524. ZJN CFF4 IF CHANNEL UP
  1525. CFF3 LDN DSTBE CHECK NEXT DEVICE
  1526. RAD DI
  1527. LMM DASB
  1528. NJN CFF2 IF MORE DEVICES TO CHECK
  1529. AOD FC INDICATE NO MORE DEVICES TO FORMAT
  1530. CFF4 LDC ** RESTORE DEVICE STATE TABLE INDEX
  1531. CFFB EQU *-1
  1532. STD DI
  1533. RJM LDP RELOAD DEVICE PARAMETERS
  1534. LJM CMP COMPLETE REQUEST
  1535.  
  1536.  
  1537. CFFA DATA 0 FORMAT IN PROGRESS (*DST* ADDRESS)
  1538. TITLE SELECTIVE RESET PROCESSING.
  1539. SRS SPACE 4,20
  1540. ** SRS - SELECTIVE RESET PROCESSING.
  1541. *
  1542. * ENTRY (A) = 2/X, 16/RA.
  1543. * WHERE X = 0 IF SLAVE RESET.
  1544. * = 1 IF LOGICAL RESET.
  1545. * RA = RETURN ADDRESS IF COMMAND COMPLETE.
  1546. * (CI) = CONTROLLER STATE TABLE ADDRESS.
  1547. * (CN) = CONTROLLER NUMBER.
  1548. * (DI) = DEVICE STATE TABLE ADDRESS.
  1549. * (EO) = EST ORDINAL.
  1550. * AT *SRS1* FROM *CCA* IF CHANNEL SPEED WRONG.
  1551. *
  1552. * EXIT (SRSA) = 0 IF RESET COMPLETE.
  1553. * TO *CMP* IF PROCESSING INITIAL LOGICAL RESET.
  1554. * TO *CMP10* IF RESET IN PROGRESS ON A DIFFERENT DEVICE,
  1555. * OR IF SLAVE RESET REQUIRED DURING *RESTORE*.
  1556. * TO *ERR* IF ERROR.
  1557. *
  1558. * USES PA, RW, TM, T1.
  1559. *
  1560. * CALLS ATT, CCA, CRF, CRP, GCS, IEM, IOM, RIF, SRI, SRP, STO.
  1561.  
  1562.  
  1563. SRS BSS 0 ENTRY
  1564. STDL T1 SAVE RETURN ADDRESS
  1565. SHN -20 SAVE RESET OPTION
  1566. STD RW
  1567. LDM SRSA
  1568. ZJN SRS0 IF NO RESET IN PROGRESS
  1569. LMD DI
  1570. NJP CMP10 IF RESET IN PROGRESS ON A DIFFERENT DEVICE
  1571. SRS0 LDDL T1
  1572. STML SRSB SAVE RETURN ADDRESS
  1573.  
  1574. * REENTER HERE FROM *CCA* WITH (RW) = 0 TO FORCE SLAVE RESET.
  1575.  
  1576. SRS1 RJM SRI SET SLAVE RESET INTERLOCK, IF REQUIRED
  1577. LDD RW SET RESET OPTION
  1578. STM RWST,DI
  1579. LMN 1
  1580. SHN 17-0
  1581. STDL T1
  1582. LDD DI
  1583. STM SRSA SET LOCAL RESET IN PROGRESS
  1584. LDML CTST,CI
  1585. LPC 77777
  1586. LMDL T1 SET BIT 15 IF SLAVE RESET
  1587. STML CTST,CI
  1588. LDN 1
  1589. STDL TM INTERLOCK DATA TRANSFERS
  1590. RJM RIF RESET SLAVE / LOGICAL INTERFACE
  1591. LDML SRST,RW DEFINE RESET TIMEOUT
  1592. RJM STO
  1593. LDD CN CONVERT CONTROLLER NUMBER
  1594. ADN 1R0
  1595. SHN 6 INSERT IN MESSAGE
  1596. LMN 1R
  1597. STM SRSG+1
  1598. LDD RW
  1599. NJN SRS2 IF LOGICAL RESET
  1600.  
  1601. * IF A SLAVE RESET IS REQUIRED DURING A RESTORE, THE RESTORE
  1602. * WILL BE ABANDONED. AN EXIT TO *CMP10* IS FORCED TO ENSURE
  1603. * THAT ALL INTERLOCKS ARE CLEARED.
  1604.  
  1605. LDM RSIN CHECK RESTORE INTERLOCK
  1606. LMD DI
  1607. NJN SRS1.1 IF INTERLOCK NOT SET ON THIS DEVICE
  1608. RJM CRP CLEAR *RESTORE IN PROGRESS*
  1609. LDC CMP10 FORCE COMPLETION AFTER RESET
  1610. STML SRSB
  1611. SRS1.1 LDC SRSG ISSUE OPERATOR MESSAGE
  1612. RJM IOM
  1613. LDC ERCR+100000 *EQXXX, UXX, CMX RESET ON CCHXX.*
  1614. RJM IEM ISSUE ERRORLOG MESSAGE
  1615. SRS2 LDN ASRT WAIT ON ASYNC INTERRUPT
  1616. RJM ATT
  1617. NJN SRS3 IF NOT ASYNCHRONOUS RESPONSE
  1618.  
  1619. * SEARCH RESPONSE PACKET FOR MACHINE EXCEPTION PARAMETER.
  1620.  
  1621. LDN ID16 LOOK FOR MACHINE EXCEPTION
  1622. RJM SRP
  1623. MJN SRS3 IF PARAMETER NOT FOUND
  1624. LDML RPBF+6,T3
  1625. LPC 0#FEE0 CHECK OPERATIONAL + READY TRANSITION
  1626. LMC 0#6000
  1627. ZJN SRS4 IF CONTROLLER RESET SUCCESSFUL
  1628. SRS3 LCN ESRE SELECTIVE RESET ERROR
  1629. RJM ERR PROCESS ERROR
  1630.  
  1631. SRS4 RJM CCA CHECK CONTROLLER ATTRIBUTES
  1632. RJM GCS GET CONTROLLER SERIAL NUMBER
  1633. LDM RWST,DI
  1634. NJN SRS5 IF NOT SLAVE RESET
  1635. LDC ERRC+100000 *EQXXX, UXX, CMX RESET COMPLETE.*
  1636. RJM IEM ISSUE ERRORLOG MESSAGE
  1637. SRS5 RJM CRF CLEAR RESET FLAGS
  1638. LDML CTST,CI ENABLE CONTROLLER ACTIVITY
  1639. STDL T0
  1640. LPC 37777 CLEAR BITS 15 AND 14
  1641. STML CTST,CI
  1642. LDDL T0
  1643. SHN 21-16
  1644. MJP CMP IF PROCESSING INITIAL LOGICAL RESET
  1645. LDML SRSB RETURN ADDRESS
  1646. STDL PA
  1647. LJM 0,PA RETURN TO CALLER
  1648.  
  1649.  
  1650. SRSA CON 0 DI OF CONTROLLING DRIVE FOR RESET
  1651. SRSB CON 0 RETURN ADDRESS
  1652.  
  1653. SRSG DATA C*CM3 BEING RESET ON CCHNN.*
  1654.  
  1655. SRST BSS 0
  1656. CONL SRTO SLAVE RESET TIMEOUT
  1657. CONL CBTO LOGICAL RESET TIMEOUT
  1658. TITLE SUBROUTINES.
  1659. ACE SPACE 4,10
  1660. ** ACE - ANALYZE CHANNEL ERROR.
  1661. *
  1662. * ENTRY (RBUF) = CHANNEL STATUS REGISTER.
  1663. *
  1664. * EXIT (A) = 0 IF ERROR FLAG NOT SET.
  1665. * = CHANNEL ERROR FAULT CODE.
  1666.  
  1667.  
  1668. ACE3 LDN ECCM SET CHANNEL DETECTED CM ERROR
  1669.  
  1670. ACE SUBR ENTRY/EXIT
  1671. LDM RBUF+5
  1672. LPN 2
  1673. ZJN ACEX IF CHANNEL ERROR FLAG NOT SET
  1674. LDM RBUF
  1675. LPN 76
  1676. NJN ACE3 IF ERROR IN MEMORY
  1677. LDM RBUF+1
  1678. SHN -5
  1679. ZJN ACE2 IF NOT PARITY / IPI CHANNEL ERROR
  1680. LPN 2
  1681. ZJN ACE1 IF NOT PARITY ERROR
  1682.  
  1683. * SET FAULT ANALYSIS CODE.
  1684.  
  1685. LDN ECPE&ECIE CHANNEL PARITY ERROR
  1686. ACE1 LMN ECIE&ECER IPI CHANNEL ERROR FLAG
  1687. ACE2 LMN ECER CHANNEL DETECTED ERROR
  1688. UJN ACEX RETURN
  1689. AME SPACE 4,10
  1690. ** AME - ATTEMPT MONITOR EXCHANGE.
  1691. *
  1692. * EXIT (A) = 0.
  1693. *
  1694. * USES CW - CW+4.
  1695. *
  1696. * MACROS EXPE.
  1697.  
  1698.  
  1699. AME SUBR ENTRY/EXIT
  1700. EXPE *
  1701. AME1 LDC 6 CHECK FOR (MA) NON-ZERO
  1702. CRD CW
  1703. LDD CW+1
  1704. ADD CW
  1705. NJN AME1 IF EXCHANGE PACKAGE NOT READY
  1706. EXPE *
  1707. AME2 LDC 0 SET (B0) NON-ZERO
  1708. CWM AMEA,ON
  1709. SBN 1 EXCHANGE MONITOR
  1710. MXN 0
  1711. CRD CW
  1712. LDD CW+4
  1713. ZJN AMEX IF EXCHANGE TAKEN
  1714. LDN 28D
  1715. SBN 1
  1716. NJN *-1 IF NOT 20 MICROSECONDS ELAPSED
  1717. UJN AME2 RETRY EXCHANGE
  1718.  
  1719.  
  1720. AMEA VFD 24/0 (P)
  1721. VFD 18/0 (A0)
  1722. VFD 18/0 (B0)
  1723. ATT SPACE 4,10
  1724. ** ATT - PROCESS ATTENTION.
  1725. *
  1726. * ENTRY (A) = EXPECTED STATUS RESPONSE TYPE.
  1727. * (DI) = DEVICE STATE TABLE ADDRESS.
  1728. *
  1729. * EXIT VIA *ECI* IF INTERRUPT RECEIVED.
  1730. * TO *ERR* IF NO INTERRUPT.
  1731. * (ATTA) = INTERRUPT ADDRESS FOR LAST INTERRUPT TIMEOUT.
  1732. *
  1733. * CALLS CTO, DAS.
  1734.  
  1735.  
  1736. ATT CON 0 ENTRY
  1737. STML EEST,DI
  1738. LDML ATT SAVE RETURN ADDRESS
  1739. STML ATTN,DI
  1740. ATT1 RJM DAS RETURN TO MAIN LOOP
  1741.  
  1742. * RETURN HERE THROUGH *ECI* IF NO INTERRUPT RECEIVED.
  1743.  
  1744. RJM CTO
  1745. MJN ATT1 IF NOT TIMEOUT
  1746. LDML ATTN,DI SAVE ADDRESS
  1747. STML ATTA
  1748. LDN 0
  1749. STML ATTN,DI CLEAR ATTENTION PROCESSING ADDRESS
  1750. STML ADDR,DI CLEAR REENTRY ADDRESS
  1751. LDN ETIT INTERRUPT TIMEOUT
  1752. RJM ERR PROCESS ERROR
  1753.  
  1754.  
  1755. ATTA CON 0 ADDRESS FOR INTERRUPT TIMEOUT
  1756. CAA SPACE 4,10
  1757. ** CAA - CHECK IF ACCESS TO PARITY DEVICE IS ALLOWED.
  1758. *
  1759. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  1760. * (DVTP,DI) BIT 7 SET, TIME TO CHECK FOR MMF *RESTORE*.
  1761. *
  1762. * EXIT (A) = 0, IF ACCESS ALLOWED.
  1763. *
  1764. * CALLS CMR, DMP, EMP.
  1765.  
  1766.  
  1767. CAA8 LDN 0 INDICATE ACCESS ALLOWED
  1768.  
  1769. CAA SUBR ENTRY/EXIT
  1770. LDML ADDR,DI
  1771. * UJN CAA8 (NO SHARED DEVICES CONFIGURED)
  1772. CAAA EQU *-2
  1773. NJN CAA8 IF REQUEST IN PROGRESS ON THIS DEVICE
  1774. LDM RSIN CHECK IF RESTORE INTERLOCK SET
  1775. LMD DI
  1776. ZJN CAAX IF INTERLOCK SET FOR THIS DEVICE
  1777. LDML DVTP,DI
  1778. SHN 21-7
  1779. MJN CAA2 IF TIME TO CHECK FOR MMF RESTORE
  1780. CAA1 LDML DVTP,DI CHECK IF ACCESS ALLOWED
  1781. SHN 0-10
  1782. LPN 21 *ACCESS DISABLED* AND *RESTORE INITIATION*
  1783. UJN CAAX RETURN
  1784.  
  1785. CAA2 LDML DVTP,DI CLEAR *CHECK MMF PARITY ACCESS* BIT
  1786. LPC 177577
  1787. STML DVTP,DI
  1788. SHN 21-10 CHECK MMF RESTORE BITS
  1789. MJN CAA5 IF *MMF RESTORE INITIATION* FLAG SET
  1790. RJM CMR CHECK MMF RESTORE FLAGS IN MST
  1791. PJN CAA7 IF RESTORE INITIATION NOT IN PROGRESS
  1792. LDML DVTP,DI SET *MMF RESTORE INITIATION* FLAG
  1793. LPC 177377
  1794. LMC 400
  1795. STML DVTP,DI
  1796. CAA3 RJM DMP DISABLE MMF PARITY DEVICE ACCESS
  1797. CAA4 UJN CAA1 RETURN ACCESS PERMISSION
  1798.  
  1799. CAA5 RJM CMR CHECK MMF RESTORE FLAGS IN MST
  1800. PJN CAA6 IF RESTORE INITIATION COMPLETE
  1801. LDML DVTP,DI CHECK MMF RESTORE BITS
  1802. SHN 21-14
  1803. PJN CAA3 IF *DISABLE* FLAG NOT SET
  1804. UJN CAA4 RETURN ACCESS PERMISSION
  1805.  
  1806. CAA6 RJM EMP ENABLE MMF PARITY ACCESS, IF POSSIBLE
  1807. UJN CAA4 RETURN ACCESS PERMISSION
  1808.  
  1809. CAA7 LDML DVTP,DI CHECK MMF RESTORE BITS
  1810. SHN 0-13
  1811. LPN 3
  1812. ZJN CAA4 IF NEITHER *ENABLE* OR *DISABLE* BIT SET
  1813. LDM CMRA
  1814. NJN CAA4 IF RESTORE STILL IN PROGRESS
  1815. UJN CAA6 ENABLE MMF PARITY ACCESS
  1816. CAB SPACE 4,10
  1817. ** CAB - CHECK ACGL *MMF PARITY DEVICE ACCESS* BIT.
  1818. *
  1819. * ENTRY (EO) = EST ORDINAL.
  1820. *
  1821. * EXIT (A) = 0, IF THE BIT FOR THIS MAINFRAME IS CLEAR.
  1822. *
  1823. * USES CM - CM+4.
  1824. *
  1825. * CALLS REE.
  1826.  
  1827.  
  1828. CAB SUBR ENTRY/EXIT
  1829. RJM REE READ EST ENTRY
  1830. LDD CM+4
  1831. SHN 3
  1832. ADN ACGL
  1833. CRD CM
  1834. LDD CM
  1835. LPN 0 (MACHINE MASK FOR THIS MF)
  1836. CABA EQU *-1
  1837. UJN CABX RETURN
  1838. CAC SPACE 4,15
  1839. ** CAC - CHECK FOR ALTERNATE CHANNEL.
  1840. *
  1841. * ENTRY (EO) = EST ORDINAL.
  1842. *
  1843. * EXIT (A) = 0, IF ALTERNATE CHANNEL DEFINED AND UP.
  1844. * (CM - CM+4) = *EQDE* WORD OF EST.
  1845. * (T1) = INDEX INTO (CM+1) FOR THIS CHANNEL.
  1846. * (T2) = INDEX INTO (CM+1) FOR ALTERNATE CHANNEL.
  1847. * (T6) = MST ADDRESS / 10B.
  1848. *
  1849. * USES T2.
  1850. *
  1851. * CALLS CCI.
  1852.  
  1853.  
  1854. CAC SUBR ENTRY/EXIT
  1855. RJM CCI CALCULATE CHANNEL INDEX
  1856. LMN 1
  1857. STD T2
  1858. LDM CM+1,T2 CHECK ALTERNATE CHANNEL
  1859. SHN -11 CHECK IF ALTERNATE CHANNEL DEFINED AND UP
  1860. LMN 4
  1861. UJN CACX RETURN
  1862. CAN SPACE 4,10
  1863. ** CAN - CONVERT ASCII NUMBER TO DISPLAY CODE.
  1864. *
  1865. * ENTRY (T3) = ADDRESS OF OUTPUT BUFFER.
  1866. * (T4) = ADDRESS OF 6-DIGIT ASCII NUMBER.
  1867. *
  1868. * EXIT (T3) ADVANCED.
  1869. * (T4) ADVANCED.
  1870. *
  1871. * USES T1, T3, T4.
  1872.  
  1873.  
  1874. CAN SUBR ENTRY/EXIT
  1875. LDDL T3
  1876. ADN 3
  1877. STDL T1
  1878. CAN1 LDIL T4
  1879. SHN -10
  1880. SBN 60-33 CONVERT ASCII TO DISPLAY CODE
  1881. SHN 6
  1882. STI T3 UPPER CHARACTER OF WORD
  1883. LDIL T4
  1884. LPC 377
  1885. SBN 60-33 CONVERT ASCII TO DISPLAY CODE
  1886. RAI T3 LOWER CHARACTER OF WORD
  1887. AODL T4
  1888. AODL T3
  1889. LMDL T1
  1890. NJN CAN1 IF MORE CHARACTERS TO CONVERT
  1891. UJN CANX RETURN
  1892. CBB SPACE 4,10
  1893. ** CBB - CHECK BDLL *DISABLE ACCESS* BIT.
  1894. *
  1895. * ENTRY (DI) = DEVICE STATE TABLE INDEX.
  1896. *
  1897. * EXIT (A) .LT. 0, IF THE BIT FOR THIS CHANNEL IS SET.
  1898. * (A) .GE. 0, IF THE BIT FOR THIS CHANNEL IS CLEAR.
  1899. * (T1) = CHANNEL INDEX.
  1900. *
  1901. * CALLS CCI, RBD.
  1902.  
  1903.  
  1904. CBB SUBR ENTRY/EXIT
  1905. RJM CCI CALCULATE CHANNEL INDEX
  1906. LDC SHNI+21-7
  1907. SBD T1
  1908. STM CBBA
  1909. RJM RBD READ *BDLL*
  1910. LDD CM+3 CHECK *DISABLE ACCESS* BIT IN *BDLL*
  1911. SHN 21-7 CHECK IF BIT SET FOR FIRST CHANNEL
  1912. * SHN 21-10 (CHECK IF BIT SET FOR SECOND CHANNEL)
  1913. CBBA EQU *-1
  1914. UJN CBBX RETURN
  1915. CBC SPACE 4,10
  1916. ** CBC - CLEAR BUFFER COUNT.
  1917. *
  1918. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  1919. *
  1920. * EXIT (A) = (RQLN,DI).
  1921. * BUFFER COUNT IN (RQLN,DI) CLEARED.
  1922.  
  1923.  
  1924. CBC SUBR ENTRY/EXIT
  1925. LDM RQLN,DI
  1926. LPC 4000
  1927. STM RQLN,DI
  1928. UJN CBCX RETURN
  1929. CBI SPACE 4,10
  1930. ** CBI - CLEAR *BDT* ERROR PROCESSING INTERLOCKS.
  1931. *
  1932. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  1933. * (EO) = EST ORDINAL.
  1934. *
  1935. * USES CM - CM+4.
  1936. *
  1937. * CALLS LNE, RBD, UBP.
  1938. *
  1939. * MACROS MONITOR.
  1940.  
  1941.  
  1942. CBI SUBR ENTRY/EXIT
  1943. LDN 0 INITIALIZE PARTITION SEARCH
  1944. CBI1 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
  1945. ZJN CBIX IF NO MORE PARTITIONS
  1946. RJM RBD READ *BDLL*
  1947. LDD CM+3 CHECK IF THIS MF HOLDS INTERLOCK
  1948. SHN 21-12
  1949. PJN CBI2 IF THIS MF DOES NOT HOLD INTERLOCK
  1950. LDN CEPS CLEAR ERROR PROCESSING INTERLOCK
  1951. STD CM+1
  1952. LDD EO SET EST ORDINAL
  1953. STD CM+4
  1954. MONITOR MTEM
  1955. * LDN 0 CLEAR FLAG THAT SAYS THIS MF HAS INTERLOCK
  1956. STD CM+2
  1957. LDN 26 BIT TO CHANGE
  1958. RJM UBP UPDATE *BDLL* PARAMETER
  1959. CBI2 LDD EO
  1960. UJN CBI1 CHECK FOR NEXT PARTITION
  1961. CCA SPACE 4,20
  1962. ** CCA - CHECK CONTROLLER ATTRIBUTES.
  1963. * - DISABLE USAGE STATISTIC COUNTING.
  1964. * - ENABLE MASTER TERMINATE.
  1965. * - DISABLE EXTENT RESPONSE FOR MASTER TERMINATE.
  1966. * - ENABLE REPORTING DEVICE FAULT LOG.
  1967. * - SET SPEED SELECTION TO 10 MB IF 10 MB CHANNEL.
  1968. * - SET SPEED SELECTION TO 25 MB IF 25 MB CHANNEL.
  1969. *
  1970. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  1971. * (CT) = CHANNEL TYPE.
  1972. *
  1973. * EXIT TO *SRS1* WITH (RW) = 0, IF CHANNEL SPEED WRONG.
  1974. * TO *ERR*, IF LOAD CONTROLLER ATTRIBUTES ERROR.
  1975. *
  1976. * USES RW, TM, T1 - T3.
  1977. *
  1978. * CALLS ATT, IDT, SDT, SOC, WCB.
  1979.  
  1980.  
  1981. CCA SUBR ENTRY/EXIT
  1982.  
  1983. * RESTORE CONTROLLER ATTRIBUTES.
  1984.  
  1985. LDC C0202 RESTORE ATTRIBUTES OPERATION CODE
  1986. RJM SOC SET OPERATION CODE AND CONTROLLER
  1987. LDN 6 COMMAND PACKET LENGTH
  1988. RJM WCB WRITE COMMAND PACKET
  1989. LDN CMSS
  1990. RJM ATT PROCESS ATTENTION
  1991. NJP CCA1.1 IF NOT SUCCESSFUL
  1992. RJM SDT SET DATA TRANSFER MODE FOR INTERLOCK
  1993.  
  1994. * CHECK ATTRIBUTE PARAMETERS D1, D2, D3, D4, AND D6.
  1995.  
  1996. LDC C0200 REPORT ATTRIBUTES OPERATION CODE
  1997. RJM SOC SET OPERATION CODE AND CONTROLLER
  1998. LDC 0#76C
  1999. STML CPBF+FCP
  2000. LDC 0#80D1 REPORT PARAMETERS D1,D2,D3,D4,D6
  2001. STML CPBF+FCP+1
  2002. LDC 0#D2D3
  2003. STML CPBF+FCP+2
  2004. LDC 0#D4D6
  2005. STML CPBF+FCP+3
  2006. LDN 14D COMMAND PACKET LENGTH
  2007. RJM IDT INPUT DATA TO PP
  2008. LDN 0
  2009. STDL T1
  2010. STDL T2
  2011. STDL T3
  2012. STDL TM DATA TRANSFER MODE IS STREAMING
  2013. CCA1 LDML ATTB,T1
  2014. LMML CCAA,T1
  2015. CCA1.1 NJN CCA2.1 IF PARAMETER ID NOT FOUND
  2016. AODL T1
  2017. SBN 11
  2018. PJN CCA2 IF ALL PARAMETERS CHECKED
  2019. LDML ATTB,T1
  2020. LMML CCAA,T1
  2021. NJN CCA3 IF PARAMETER SET WRONG
  2022. AODL T1
  2023. UJN CCA1 CHECK NEXT PARAMETER
  2024.  
  2025. CCA2 LDML ATTB+13
  2026. LPC 0#F02
  2027. LMML CTS,CT
  2028. NJN CCA3 IF ATTRIBUTE D6 INCORRECT
  2029. RJM ATT WAIT FOR COMPLETION RESPONSE
  2030. RJM SDT SET DATA TRANSFER MODE TO STREAMING
  2031. LJM CCAX EXIT
  2032.  
  2033. CCA2.1 LCN ELCA LOAD CONTROLLER ATTRIBUTES FAILURE
  2034. RJM ERR PROCESS ERROR
  2035.  
  2036. * LOAD/SAVE ATTRIBUTES.
  2037.  
  2038. CCA3 LDML CCAA,T3 BUILD COMMAND PACKET
  2039. STML CPBF+FCP,T3
  2040. AODL T3
  2041. LMN 11
  2042. NJN CCA3 IF MORE PARAMETER WORDS TO MOVE
  2043. LDML ATTB+11
  2044. STML CPBF+FCP+11 PORT A,B CONTROLLER ADDRESS
  2045. LDML ATTB+12
  2046. STML CPBF+FCP+12 PORT C,D CONTROLLER ADDRESS
  2047. LDML ATTB+13
  2048. LPC 0#F0FD
  2049. LMML CTS,CT
  2050. STML CPBF+FCP+13 SELECT CHANNEL TRANSFER RATE
  2051. RJM ATT WAIT FOR COMPLETION RESPONSE
  2052. LDM RPBF
  2053. LMN 10
  2054. CCA3.1 NJP CCA2.1 IF ERROR
  2055. LDC C0209 LOAD ATTRIBUTE OPERATION CODE
  2056. RJM SOC SET OPERATION CODE AND CONTROLLER
  2057. LDC P02D1
  2058. STM CPBF+FCP RESTORE WORD WIPED OUT BY *ATT*
  2059. LDN 30D COMMAND PACKET LENGTH
  2060. RJM WCB WRITE COMMAND PACKET
  2061. LDN CMSS
  2062. RJM ATT PROCESS ATTENTION
  2063. NJN CCA3.1 IF NOT SUCCESSFUL
  2064. RJM SDT SET DATA TRANSFER MODE
  2065. LDC C020A SAVE ATTRIBUTE OPERATION CODE
  2066. RJM SOC SET OPERATION CODE AND CONTROLLER
  2067. LDN 6
  2068. RJM WCB WRITE COMMAND PACKET
  2069. LDN CMSS
  2070. RJM ATT PROCESS ATTENTION
  2071. NJN CCA3.1 IF NOT SUCCESSFUL
  2072. LDML ATTB+13
  2073. LPC 0#F02
  2074. LMML CTS,CT
  2075. ZJP CCAX IF CHANNEL TRANSFER SPEED CORRECT
  2076. LDN 0
  2077. STD RW
  2078. LJM SRS1 FORCE SLAVE RESET
  2079.  
  2080.  
  2081. CCAA BSS 0 EXPECTED CONTROLLER ATTRIBUTES
  2082. CONL P02D1,0#100
  2083. CONL P02D2,0#100
  2084. CONL P02D3,0#100
  2085. CONL P02D4,0#100
  2086. CONL 0#7D6
  2087. CCI SPACE 4,15
  2088. ** CCI - CALCULATE CHANNEL INDEX.
  2089. *
  2090. * ENTRY (EO) = EST ORDINAL.
  2091. * (IR+4) = CHANNEL SERVICED BY THIS DRIVER.
  2092. *
  2093. * EXIT (A) = (T1) = INDEX INTO (CM+1) FOR THIS CHANNEL.
  2094. * (CM - CM+4) = *EQDE* WORD OF EST.
  2095. *
  2096. * USES T1.
  2097. *
  2098. * CALLS REE.
  2099.  
  2100.  
  2101. CCI SUBR ENTRY/EXIT
  2102. RJM REE READ EST ENTRY
  2103. LDD CM+1 EXTRACT CHANNEL
  2104. LMD IR+4
  2105. LPN 77
  2106. ZJN CCI1 IF PATH SERVICED BY THIS DRIVER
  2107. LDN 1
  2108. CCI1 STD T1 SET CHANNEL BYTE INDEX
  2109. UJN CCIX RETURN
  2110. CCO SPACE 4,20
  2111. ** CCO - CHECK FOR CONTROLLER OVER TEMPERATURE.
  2112. *
  2113. * THIS ROUTINE SEARCHES THE RESPONSE PACKET FOR STATUS
  2114. * INDICATING AN OVER TEMPERATURE CONDITION. IF THERE IS
  2115. * AN OVER TEMPERATURE CONDITION, AN ERROR IS OPTIONALLY
  2116. * LOGGED TO THE BML, A BIT INDICATING OVER TEMPERATURE IS
  2117. * SET IN *BDLL*, AND AN OPERATOR ACTION MESSAGE IS GENERATED.
  2118. *
  2119. * ENTRY (A) = 0 IF BML MESSAGE SHOULD NOT BE ISSUED.
  2120. * (DT) = DRIVE TYPE.
  2121. *
  2122. * USES CM+2, T7.
  2123. *
  2124. * CALLS IDM, IEE, SRP, UBP.
  2125.  
  2126.  
  2127. CCO SUBR ENTRY/EXIT
  2128. STD T7
  2129. LDN ID16
  2130. RJM SRP SEARCH RESPONSE PACKET
  2131. MJN CCOX IF PARAMETER 16 NOT FOUND
  2132. LDML RPBF+6,T3
  2133. SHN 21-11
  2134. PJN CCOX IF NOT CONTROLLER OVER TEMPERATURE
  2135. LDM MSID
  2136. STM CCOA SAVE VALUES FROM CURRENT MESSAGE
  2137. LDM EDBF+FALT
  2138. STM CCOA+1
  2139. LDM EDBF+FCS2
  2140. STM CCOA+2
  2141. LDM MSGL+1
  2142. STM CCOA+3
  2143. LDML BMID,DT
  2144. SHN -11
  2145. STM MSID ERROR MESSAGE ID
  2146. LDN ECOT CONTROLLER OVERTEMPERATURE
  2147. STM EDBF+FALT FINAL FAULT CODE
  2148. LDD T7
  2149. ZJP CCO1 IF NOT ISSUING MESSAGE TO BML
  2150.  
  2151. * *HPA* DOES NOT DISPLAY THE DATA WITH SYMPTOM 0111 WHEN THE
  2152. * ERROR IS RECOVERABLE, SO TWO MESSAGES ARE ISSUED TO THE BML.
  2153.  
  2154. LCN 0
  2155. STM EDBF+FCS2 SET NO STATUS FOR *HPA*
  2156. LDN 5
  2157. STM MSGL+1 MESSAGE LENGTH
  2158. LDD HN
  2159. ERRNZ HD0100-100 CODE DEPENDS ON VALUE
  2160. RJM IDM ISSUE INITIAL BML MESSAGE
  2161. LDN 3
  2162. STM MSGL+1 MESSAGE LENGTH
  2163. LDC HD0111
  2164. RJM IDM ISSUE FINAL BML MESSAGE
  2165. LDM CCOA
  2166. STM MSID RESTORE VALUES IN CURRENT MESSAGE
  2167. LDM CCOA+1
  2168. STM EDBF+FALT
  2169. LDM CCOA+2
  2170. STM EDBF+FCS2
  2171. LDM CCOA+3
  2172. STM MSGL+1
  2173.  
  2174. * SET OVER TEMPERATURE BIT IN *BDLL*.
  2175.  
  2176. CCO1 LDN 1 NEW VALUE
  2177. STD CM+2
  2178. LDN 63 BIT TO CHANGE
  2179. RJM UBP UPDATE *BDLL* PARAMETER
  2180. RJM IEE ISSUE *CHECK E,E DISPLAY* EVENT
  2181. UJP CCOX RETURN
  2182.  
  2183.  
  2184. CCOA BSS 4 SAVE AREA FOR VALUES FROM CURRENT MESSAGE
  2185. CCR SPACE 4,15
  2186. ** CCR - CHECK FOR CHANNEL REQUEST.
  2187. *
  2188. * ENTRY (UC) = UNIT ACTIVITY COUNT.
  2189. * (IR+4) = CHANNEL NUMBER.
  2190. * AT *CCR2* FROM */3DZ/BST*.
  2191. *
  2192. * EXIT (A) = 0 IF CHANNEL DOWN.
  2193. * TO */3DZ/BST2* IF ENTRY WAS FROM */3DZ/BST*.
  2194. *
  2195. * USES CM+1, CR.
  2196. *
  2197. * CALLS DCR, RCT, SRF.
  2198. *
  2199. * MACROS DELAY, MONITOR.
  2200.  
  2201.  
  2202. CCR3 RJM SRF SET DRIVER RELOAD FLAG
  2203. CCR4 LDD CR
  2204.  
  2205. CCR SUBR /3DZ/BST2 ENTRY/EXIT
  2206. RJM RCT READ CHANNEL TABLE
  2207. SHN 21-5
  2208. MJN CCR3 IF CHANNEL GLOBALLY DOWN
  2209. LPN 40
  2210. ZJN CCR4 IF CHANNEL NOT REQUESTED
  2211. STM CHRQ DISABLE NEW ACTIVITY
  2212. LDD UC
  2213. NJN CCRX IF CURRENT ACTIVITY
  2214. RJM DCR DROP CHANNEL RESERVATION
  2215. * LDN 0
  2216. STM CHRQ ENABLE NEW ACTIVITY
  2217. CCR1 LDD CR
  2218. NJN CCRX IF CHANNEL RESERVED
  2219.  
  2220. * ENTERED HERE FROM *PRS*.
  2221.  
  2222. CCR2 DELAY WAIT AWHILE
  2223. LDD IR+4
  2224. STD CM+1 ATTEMPT TO RESERVE CHANNEL
  2225. MONITOR CCHM
  2226. LDD CM+2 SET RESERVATION STATUS
  2227. STD CR
  2228. RJM RCT READ CHANNEL TABLE
  2229. LPN 40
  2230. ZJN CCR1 IF CHANNEL NOT DOWN
  2231. UJP CCR3 SET DRIVER RELOAD FLAG
  2232. CCS SPACE 4,10
  2233. ** CCS - CHECK CHANNEL STATE FOR SPECIFIED DEVICE.
  2234. *
  2235. * ENTRY (EO) = EST ORDINAL.
  2236. * (IR+4) = CHANNEL SERVICED BY THIS DRIVER.
  2237. *
  2238. * EXIT (A) = CHANNEL STATE.
  2239. *
  2240. * CALLS CCI.
  2241.  
  2242.  
  2243. CCS SUBR ENTRY/EXIT
  2244. RJM CCI CALCULATE CHANNEL INDEX
  2245. LDM CM+1,T1
  2246. SHN -11
  2247. SCN 4
  2248. UJN CCSX RETURN
  2249. CDA SPACE 4,15
  2250. ** CDA - CONVERT DISK ADDRESS.
  2251. *
  2252. * ENTRY (T4) = RELATIVE CYLINDER NUMBER.
  2253. * (T5) = PHYSICAL TRACK.
  2254. * (T7) = LOGICAL SECTOR WITHIN PHYSICAL TRACK.
  2255. * (DT) = DRIVE TYPE.
  2256. *
  2257. * EXIT (T6) = LOGICAL TRACK.
  2258. *
  2259. * USES T1, T3 - T7, CM - CM+4.
  2260. *
  2261. * CALLS REE.
  2262.  
  2263.  
  2264. CDA SUBR ENTRY/EXIT
  2265. RJM REE READ EST ENTRY
  2266. LDD CM+4
  2267. SHN 3
  2268. ADN MDGL
  2269. CRD CM
  2270. LDD CM+1 SINGLE UNIT SECTOR LIMIT
  2271. STD T1
  2272. LDN 0 CLEAR SECTOR COUNT ACCUMULATOR
  2273. STD T3
  2274. LDC 3777 INITIALIZE LOGICAL TRACK CALCULATION
  2275. STD T6
  2276. LDML CFS,DT SET UP PHYSICAL TO LOGICAL SHIFTS
  2277. SHN -14
  2278. ADK SHNI
  2279. STM CDAA
  2280. STM CDAB
  2281.  
  2282. * MULTIPLY THE PHYSICAL TRACK NUMBER BY THE NUMBER OF LOGICAL
  2283. * SECTORS PER PHYSICAL TRACK.
  2284.  
  2285. CDA1 SOD T5
  2286. MJN CDA3 IF END OF CONVERSION
  2287. LDM PSPT,DT
  2288. CDAA SHN ** PHYSICAL SECTORS TO LOGICAL SECTORS
  2289. RAD T7 ADVANCE LOGICAL SECTOR COUNT
  2290. SHN -14
  2291. RAD T3
  2292. UJN CDA1 LOOP ON CONVERSION
  2293.  
  2294. * MULTIPLY THE CYLINDER NUMBER BY THE NUMBER OF LOGICAL SECTORS
  2295. * PER CYLINDER.
  2296.  
  2297. CDA2 LDML PSCY,DT
  2298. CDAB SHN ** PHYSICAL SECTORS TO LOGICAL SECTORS
  2299. RAD T7 ADVANCE LOGICAL SECTOR COUNT
  2300. SHN -14
  2301. RAD T3
  2302. CDA3 SOD T4
  2303. PJN CDA2 IF NOT END OF CONVERSION
  2304.  
  2305. * DIVIDE THE ACCUMULATED LOGICAL SECTOR COUNT BY THE NUMBER OF
  2306. * LOGICAL SECTORS PER LOGICAL TRACK. THE SINGLE UNIT SECTOR
  2307. * LIMIT IS USED, BECAUSE ONLY THE LOGICAL TRACK NUMBER (AND
  2308. * NOT THE LOGICAL SECTOR NUMBER) IS OF INTEREST.
  2309.  
  2310. CDA4 AOD T6 ADVANCE LOGICAL TRACK NUMBER
  2311. LDN 0
  2312. SBD T1 SINGLE UNIT SECTOR LIMIT
  2313. RAD T7
  2314. PJN CDA4 IF NO UNDERFLOW
  2315. AOD T7
  2316. SOD T3
  2317. PJN CDA4 IF DIVISION INCOMPLETE
  2318. LJM CDAX RETURN
  2319. CDS SPACE 4,15
  2320. ** CDS - CHECK DEVICE STATUS.
  2321. *
  2322. * ENTRY (EO) = EST ORDINAL.
  2323. *
  2324. * EXIT (A) .LT. 0, IF DEVICE HAS NOT BEEN RECOVERED.
  2325. * (A) .GT. 0, IF DEVICE IS RECOVERD AND SHARED.
  2326. * (A) .EQ. 0, IF DEVICE IS RECOVERD AND NOT SHARED.
  2327. * (CM - CM+4) = *EQDE* WORD OF EST ENTRY.
  2328. *
  2329. * CALLS REE.
  2330.  
  2331.  
  2332. CDS SUBR ENTRY/EXIT
  2333. RJM REE READ EST ENTRY
  2334. LDD CM
  2335. SHN 21-6
  2336. MJN CDSX IF DEVICE UNAVAILABLE (NOT RECOVERED)
  2337. LDD CM
  2338. LPC 1000 ISOLATE *SHARED* STATUS
  2339. UJN CDSX RETURN
  2340. CDT SPACE 4,25
  2341. ** CDT - CHECK DRIVE TYPE.
  2342. *
  2343. * VERIFY THAT THE CONFIGURED DRIVE MATCHES THE ACTUAL DRIVE
  2344. * TYPE. IF A DRIVE IS ACCESSED FROM 2 CONTROLLERS, THE DRIVE
  2345. * COULD BE RECLUSTERED FROM ONE CONTROLLER AND THE OTHER ONE
  2346. * WOULD NOT KNOW THE CHANGE OCCURRED. A SLAVE RESET MUST BE
  2347. * ISSUED TO CAUSE THE CONTROLLER TO REEVALUATE THE DRIVE.
  2348. *
  2349. * ENTRY (DN) = DRIVE NUMBER.
  2350. * (DI) = DEVICE STATE TABLE ADDRESS.
  2351. * (DT) = DRIVE TYPE.
  2352. *
  2353. * EXIT TO *CMP* WITH CHECK DRIVE BIT CLEAR IF CORRECT
  2354. * NUMBER OF PHYSICAL DRIVES IN THE LOGICAL UNIT AND
  2355. * THE DRIVE ATTRIBUTES ARE CORRECT.
  2356. * TO *CMP10* IF ERROR IN PROGRESS ON A DIFFERENT DEVICE.
  2357. * TO *ERR* IF ERROR.
  2358. *
  2359. * USES CM+2, T2, T3.
  2360. *
  2361. * CALLS ATT, COD, CUF, DDT, SEP, UBP, VDA, WAC.
  2362.  
  2363.  
  2364. CDT BSS 0 ENTRY
  2365.  
  2366. * ALLOW ACTIVITY ON OTHER DRIVES TO COMPLETE BEFORE REPORTING
  2367. * ATTRIBUTE 68 FOR THE CONTROLLER. EVEN IF ISSUED, IT WOULD
  2368. * NOT BE EXECUTED UNTIL ALL COMMANDS IN PROGRESS COMPLETE.
  2369.  
  2370. RJM SEP SET ERROR PROCESSING INTERLOCK
  2371. NJP CMP10 IF ERROR IN PROGRESS ON A DIFFERENT DEVICE
  2372. RJM WAC WAIT FOR OTHER ACTIVITY TO COMPLETE
  2373.  
  2374. * CLEAR CONTROLLER OVER TEMPERATURE BIT IN *BDLL*.
  2375.  
  2376. LDN 0 SET NEW VALUE
  2377. STD CM+2
  2378. LDN 63 BIT TO CHANGE
  2379. RJM UBP UPDATE *BDLL* PARAMETER
  2380.  
  2381. * CHECK DRIVE CONFIGURATION.
  2382.  
  2383. LDD DN
  2384. STM PHYD,DI PHYSICAL DRIVE
  2385. RJM DDT DETERMINE DRIVE TYPE
  2386. MJN CDT1 IF DRIVE NOT FOUND
  2387. LDM DDTA TOTAL DRIVES FOUND
  2388. STD T2
  2389. SBD DD TOTAL DRIVES EXPECTED
  2390. SBD PD
  2391. ZJN CDT2 IF CORRECT DRIVE COUNT
  2392. CDT1 LCN ERDA REPORT DEVICE ATTRIBUTES ERROR
  2393. RJM ERR PROCESS ERROR
  2394.  
  2395. CDT2 LDD T2
  2396. SHN 1
  2397. RAD T3
  2398. LDM ATTB,T3
  2399. SHN 21-4
  2400. PJN CDT4 IF NO PARITY DRIVE
  2401. SOD T2
  2402. CDT4 LDD T2 TOTAL DATA DRIVES FOUND
  2403. LMD DD EXPECTED DATA DRIVES
  2404. NJN CDT1 IF ERROR
  2405. LDM ATTB,T3
  2406. SHN 21-11
  2407. PJN CDT1 IF NOT CLUSTERED
  2408. RJM ATT WAIT FOR COMPLETION RESPONSE
  2409. LDC C0302 REPORT ADDRESSEE STATUS OPERATION CODE
  2410. RJM CUF CHECK IF UNIT FORMATTED
  2411. NJN CDT1 IF NOT FORMATTED
  2412. RJM VDA VERIFY DRIVE ATTRIBUTES
  2413. RJM COD CHECK FOR OFFLINE DRIVE
  2414. LDML DVTP,DI
  2415. LPC 157777 CLEAR *CHECK DRIVE TYPE* FLAG
  2416. STML DVTP,DI
  2417. LJM CMP EXIT
  2418. CEA SPACE 4,15
  2419. ** CEA - CLEAR *ENABLE CONTROLLER ACTIVITY* REQUEST.
  2420. *
  2421. * ENTRY (EO) = EST ORDINAL FOR DEVICE.
  2422. * (IR+4) = CHANNEL NUMBER.
  2423. *
  2424. * EXIT CHANNEL ENABLE BIT CLEARED IN *MST* WORD *BDLL*.
  2425. * SPECIAL REQUEST BIT CLEARED.
  2426. *
  2427. * USES CM+2.
  2428. *
  2429. * CALLS CCI, CPF, UBP.
  2430.  
  2431.  
  2432. CEA SUBR ENTRY/EXIT
  2433. RJM CCI CALCULATE CHANNEL INDEX
  2434. LDN 0 NEW VALUE
  2435. STD CM+2
  2436. LDD T1 BIT TO CHANGE
  2437. ADN 49D
  2438. RJM UBP CLEAR ENABLE CHANNEL BIT IN *BDLL*
  2439. LDN ECAF CLEAR SPECIAL REQUEST IN *PUT*
  2440. RJM CPF
  2441. UJN CEAX RETURN
  2442. CEC SPACE 4,10
  2443. ** CEC - CHECK FOR *ENABLE CONTROLLER ACTIVITY* REQUEST.
  2444. *
  2445. * EXIT (A) = 0, IF REQUEST IS FOR THIS CHANNEL.
  2446. *
  2447. * USES T1 - T7, CM.
  2448. *
  2449. * MACROS SFA.
  2450.  
  2451.  
  2452. CEC SUBR ENTRY/EXIT
  2453. SFA EST,EO CHECK EST ENTRY
  2454. ADK EQDE
  2455. CRD T1
  2456. LDD T1+4
  2457. SHN 3
  2458. ADN BDLL CHECK IF REQUEST IS FOR THIS CHANNEL
  2459. CRD T4
  2460. LDD T4
  2461. SHN -1
  2462. LPN 3
  2463. STD T4
  2464. ZJN CECX IF NEITHER CHANNEL FLAG IS SET
  2465. SBN 3
  2466. ZJN CECX IF BOTH CHANNEL FLAGS ARE SET
  2467. LDM T1,T4 COMPARE REQUESTED CHANNEL TO THIS CHANNEL
  2468. LMD IR+4
  2469. LPN 77
  2470. UJN CECX RETURN
  2471. CEP SPACE 4,15
  2472. ** CEP - CLEAR ERROR PROCESSING INTERLOCK.
  2473. *
  2474. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  2475. * (EO) = EST ORDINAL.
  2476. * (ERPA) = (DI), IF ERROR PROCESSING ACTIVE ON DEVICE.
  2477. * (ERFL) = (DI), IF E.P. INTERLOCK SET FOR THIS DEVICE.
  2478. * (ERMF) = (DI), IF MMF RECOVERY INTERLOCK SET.
  2479. *
  2480. * EXIT (ERPA) = (ERRA) = 0, IF ERROR PROCESSING ACTIVE.
  2481. * (ERFL) = (ERRA) = 0, IF INTERLOCK SET.
  2482. * (ERMF) = 0, IF MMF RECOVERY INTERLOCK SET.
  2483. * MMF INTERLOCK(S) CLEARED.
  2484. *
  2485. * CALLS CBI, CDS, LNE.
  2486. *
  2487. * MACROS CMSTF, MONITOR.
  2488.  
  2489.  
  2490. CEP SUBR ENTRY/EXIT
  2491. LDM ERPA CHECK IF ERROR PROCESSING ACTIVE
  2492. LMD DI
  2493. NJN CEP1 IF NOT ACTIVE ON THIS DEVICE
  2494. STM ERPA CLEAR ERROR PROCESSING ACTIVE FLAG
  2495. STM ERRA ENABLE NEXT PASS THROUGH ERROR PROCESSOR
  2496. CEP1 LDM ERFL CHECK IF ERROR PROCESSING INTERLOCK SET
  2497. LMD DI
  2498. NJN CEPX IF NOT SET ON THIS DEVICE
  2499. STM ERFL CLEAR ERROR PROCESSING INTERLOCK FLAG
  2500.  
  2501. * CLEAR ERROR PROCESSING FLAGS IN *MST*.
  2502.  
  2503. CEP2 LDN 0 INITIALIZE PARTITION SEARCH
  2504. CEP3 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
  2505. ZJN CEP5 IF NO MORE PARTITIONS TO PROCESS
  2506. RJM CDS CHECK DEVICE STATUS
  2507. MJN CEP4 IF DEVICE NOT RECOVERED
  2508. CMSTF GDER CLEAR *ERROR RECOVERY IN PROGRESS* FLAG
  2509. CEP4 LDD EO
  2510. UJN CEP3 CHECK FOR NEXT PARTITION
  2511.  
  2512. * CLEAR MMF INTERLOCKS, IF SET.
  2513.  
  2514. CEP5 LDM ERMF CHECK IF RECOVERY ERROR INTERLOCK SET
  2515. ZJN CEP6 IF INTERLOCK NOT SET
  2516. LDN CRIS CLEAR RECOVERY ERROR PROCESSING INTERLOCK
  2517. STD CM+1
  2518. MONITOR MTEM
  2519. * LDN 0 CLEAR RECOVERY ERROR INTERLOCK FLAG
  2520. STM ERMF
  2521. CEP6 RJM CBI CLEAR *BDT* ERROR PROCESSING INTERLOCKS
  2522. UJP CEPX RETURN
  2523. CET SPACE 4,10
  2524. ** CET - CHECK ELAPSED TIME.
  2525. *
  2526. * ENTRY (CETB) = TIME OF LAST GLOBAL MST CHECK.
  2527. *
  2528. * EXIT (A) .LT. 0, IF NOT TIME TO CHECK GLOBAL MST-S.
  2529. * (DVTP) BIT 7 SET FOR SHARED PARITY DEVICES, IF TIME.
  2530. * (CETB) UPDATED, IF TIME TO CHECK GLOBAL MST-S.
  2531. *
  2532. * USES T1, T2, CM - CM+4.
  2533.  
  2534.  
  2535. CET SUBR ENTRY/EXIT
  2536. LDK RTCL GET CURRENT CLOCK
  2537. CRD CM
  2538. LDD CM+1 COMPARE LOW ORDER BYTE OF SECONDS
  2539. SBM CETB CALCULATE ELAPSED TIME
  2540. PJN CET1 IF NO UNDERFLOW
  2541. ADC 10000 CORRECT FOR UNDERFLOW
  2542. CET1 SBN SBUR
  2543. MJN CETX IF ELAPSED TIME LESS THAN *SBUR* SECONDS
  2544. LDD CM+1 SAVE CURRENT CLOCK VALUE
  2545. STM CETB
  2546.  
  2547. * SET *CHECK MMF ACCESS* FLAGS FOR ALL SHARED PARITY DEVICES.
  2548.  
  2549. LDC DSTB-DSTBE
  2550. * UJN CETX (NO SHARED DEVICES CONFIGURED)
  2551. CETA EQU *-2
  2552. STD T1
  2553. CET2 LDN DSTBE PROCESS NEXT DEVICE
  2554. RAD T1
  2555. LMM DASB
  2556. ZJN CETX IF NO MORE DEVICES TO PROCESS
  2557. LDM DVTP,T1
  2558. LPN 77
  2559. STD T2 DRIVE TYPE
  2560. LDML DM,T2
  2561. SHN 21-17
  2562. PJN CET2 IF NOT PARITY DEVICE
  2563. LDML DVTP,T1
  2564. SHN 21-11
  2565. PJN CET2 IF NOT SHARED DEVICE
  2566. SHN -21+11+22
  2567. LPC 177577
  2568. LMC 200 SET *CHECK MMF PARITY ACCESS* FLAG
  2569. STML DVTP,T1
  2570. UJN CET2 PROCESS NEXT DEVICE
  2571.  
  2572.  
  2573. CETB CON 0 TIME OF LAST GLOBAL MST CHECK (SECONDS)
  2574. CFM SPACE 4,15
  2575. ** CFM - CLEAR *FORMAT PENDING* FLAG IN MST(S).
  2576. *
  2577. * IF FORMAT IS COMPLETE ON ALL UNITS OF A DEVICE, CLEAR *FP*
  2578. * IN THE MST(S) FOR ALL PARTITIONS OF THAT DEVICE.
  2579. *
  2580. * ENTRY (EO) = EST ORDINAL FOR DEVICE.
  2581. *
  2582. * EXIT MST(S) UPDATED IF FORMAT COMPLETE.
  2583. *
  2584. * USES CM - CM+4, CW - CW+4.
  2585. *
  2586. * CALLS LNE.
  2587. *
  2588. * MACROS CMSTF, PUTE.
  2589.  
  2590.  
  2591. CFM SUBR ENTRY/EXIT
  2592. LDI DI *PUT* ORDINAL OF FIRST UNIT OF DEVICE
  2593. ERRNZ PUTO CODE DEPENDS ON VALUE
  2594. CFM1 SHN PUTLS
  2595. PUTE *
  2596. ADC HSCT GET *PUT* ORDINAL OF NEXT UNIT
  2597. CRD CM
  2598. ADN PILL-HSCT GET SPECIAL REQUEST FLAGS
  2599. CRD CW
  2600. LDD CW+3
  2601. SHN 21-FCRF-14
  2602. MJN CFMX IF FORMAT REQUEST SET FOR THIS UNIT
  2603. LDD CM+4
  2604. NJN CFM1 IF ADDITIONAL UNITS IN DEVICE
  2605. * LDN 0 INITIALIZE PARTITION SEARCH
  2606. CFM2 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
  2607. ZJN CFMX IF NO MORE PARTITIONS
  2608. CMSTF LFPR CLEAR *FORMAT PENDING* FLAG IN MST
  2609. LDD EO
  2610. UJN CFM2 SEARCH FOR NEXT PARTITION
  2611. CFR SPACE 4,25
  2612. ** CFR - CHECK *PUT* FOR REQUEST.
  2613. *
  2614. * ENTRY (CI) = CONTROLLER STATE TABLE ADDRESS.
  2615. * (DI) = DEVICE STATE TABLE ADDRESS.
  2616. * (FC) = 0 IF FORMATTING OF DRIVES NOT COMPLETE.
  2617. *
  2618. * EXIT TO SPECIAL REQUEST OR IO ROUTINE AS APPLICABLE WITH -
  2619. * (PO) = *PUT* ORDINAL.
  2620. * (CB) = *CBT* ORDINAL.
  2621. * (EO) = EST ORDINAL.
  2622. * (RW) = READ / WRITE FLAG.
  2623. * (CN) = CONTROLLER NUMBER.
  2624. * (DN) = DRIVE NUMBER.
  2625. * (WB - WB+4) = *UNCT* WORD OF *PUT* ENTRY.
  2626. * (DI) = DEVICE STATE TABLE ADDRESS.
  2627. * TO *ERR* IF CONTROLLER ERROR.
  2628. * TO *CFF* TO CHECK FOR FORMAT REQUEST.
  2629. * TO *ISR* TO PROCESS SPECIAL REQUEST.
  2630. * TO *PIO* TO PROCESS I/O REQUEST.
  2631. * TO *ROD* TO RESTORE AN OFF-LINE DRIVE.
  2632. *
  2633. * USES CM+3.
  2634. *
  2635. * CALLS CMP8, ECI, IDU, IIO, ISR, LDP, ROD.
  2636.  
  2637.  
  2638. CFR9 LDM RSDI CHECK IF RESTORE IN PROGRESS
  2639. LMD DI
  2640. NJN CFRX IF NO RESTORE IN PROGRESS ON THIS DEVICE
  2641. STM RMUX CLEAR MULTIPLEX COUNT
  2642. RJM ROD RESTORE OFF-LINE DRIVE
  2643.  
  2644. CFR SUBR ENTRY/EXIT
  2645. RJM ECI EXAMINE CONTROLLER INTERRUPTS
  2646. * RJM CMP8 (TERMINATION PROCESSING)
  2647. CFRA EQU *-1
  2648. NJN CFRX IF DEVICE SHOULD NOT BE PROCESSED
  2649. LDD FC
  2650. NJN CFR0 IF FORMAT COMPLETE
  2651. LJM CFF CHECK FOR FORMAT
  2652.  
  2653. CFR0 RJM LDP LOAD DEVICE PARAMETERS
  2654. LDML DVTP,DI CHECK FOR INTERNAL SPECIAL REQUESTS
  2655. SHN 6-15
  2656. LPC 100 ISOLATE *CHECK DRIVE TYPE* FLAG
  2657. ZJN CFR1 IF NO INTERNAL SPECIAL REQUESTS PENDING
  2658. STD CM+3 SET INTERNAL SPECIAL REQUESTS
  2659. CFR1 LDD CM+3
  2660. NJN CFR2 IF SPECIAL REQUEST
  2661. LDD WB+3
  2662. CFR1.1 ZJN CFR9 IF NO I/O REQUEST
  2663. CFR2 LDD CM+4
  2664. ZJN CFR3 IF UNIT NOT INTERLOCKED
  2665. LMD OA
  2666. CFR2.1 NJN CFRX IF UNIT INTERLOCKED BY OTHER DRIVER
  2667. CFR3 LDD CM+3
  2668. ZJN CFR5 IF NOT SPECIAL REQUEST
  2669. RJM ROD SEE IF TIME TO ISSUE RESTORE
  2670. RJM ISR IDENTIFY AND PROCESS SPECIAL REQUEST
  2671. UJN CFR1 CHECK FOR ANOTHER REQUEST
  2672.  
  2673. CFR5 LDD CB
  2674. RJM IIO INITIATE I/O
  2675. ZJN CFR1.1 IF I/O NOT ENABLED ON THIS ACCESS
  2676. RJM IDU INTERLOCK DISK UNIT
  2677. NJN CFR2.1 IF INTERLOCK NOT AVAILABLE
  2678. LDML CTST,CI
  2679. SHN 21-15
  2680. PJN CFR6 IF CONTROLLER FUNCTIONAL
  2681. LDN ECMD CONTROLLER DEAD
  2682. RJM ERR PROCESS ERROR
  2683.  
  2684. CFR6 RJM ROD SEE IF TIME TO ISSUE RESTORE
  2685. LJM PIO PROCESS I/O REQUEST
  2686. CLP SPACE 4,10
  2687. ** CLP - CLEAR *LOST PARITY* FLAGS.
  2688. *
  2689. * USES CM - CM+4.
  2690. *
  2691. * CALLS CDS, LNE.
  2692. *
  2693. * MACROS CMSTF, MONITOR.
  2694.  
  2695.  
  2696. CLP SUBR ENTRY/EXIT
  2697. LDML DVTP,DI CLEAR *PROCESS LOST PARITY* FLAG, IF SET
  2698. LPC 137777
  2699. STML DVTP,DI
  2700. LDN 0 INTIALIZE PARTITION SEARCH
  2701. CLP1 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
  2702. ZJN CLPX IF NO MORE PARTITIONS
  2703. RJM CDS CHECK DEVICE STATUS
  2704. MJN CLP2 IF DEVICE NOT RECOVERED
  2705. LDD EO SET EST ORDINAL
  2706. STD CM+1
  2707. LDN 0
  2708. STD CM+2
  2709. LDN SOUS CLEAR OFFLINE UNIT IN *ACGL*
  2710. STD CM+3
  2711. MONITOR STBM
  2712. CMSTF GDPL CLEAR *PARITY PROTECTION LOST* FROM *ACGL*
  2713. CLP2 LDD EO
  2714. UJN CLP1 PROCESS NEXT PARTITION
  2715. CLU SPACE 4,40
  2716. ** CLU - CLUSTER LOGICAL UNIT.
  2717. *
  2718. * ENTRY (DT) = DRIVE TYPE.
  2719. * (CN) = CONTROLLER NUMBER.
  2720. * (DD) = NUMBER OF DATA DRIVES IN DEVICE.
  2721. * (DN) = DRIVE NUMBER.
  2722. * (PD) = NUMBER OF PARITY DRIVES IN DEVICE.
  2723. *
  2724. * EXIT TO *ERR* IF ERROR.
  2725. * COMMAND PACKET WRITTEN THE FOLLOWING VALUES, WHERE
  2726. * X INDICATES THE UNIT NUMBER (RANK IN THE CABINET).
  2727. *
  2728. * <- 5832 -> <-------- 5833 / 5838 / 47444 --------->
  2729. * -1 -2 -1 -1P -2 -2P -3 -3P -4
  2730. *
  2731. * LENGTH 000C 0010 000C 0010 0010 0014 0014 0018 0018
  2732. *
  2733. * CPBF+FCP+0 0568 0968 0568 0968 0968 0D68 0D68 1168 1168
  2734. *
  2735. * 1 0X01 0X01 0X01 0X01 0X01 0X01 0X01 0X01 0X01
  2736. * 2 8600 8680 8A00 8A80 8A80 8A80 8A80 8A80 8A80
  2737. *
  2738. * X X X X X X X
  2739. * 3 ---- 0801 ---- 1801 0801 0801 0801 0801 0801
  2740. * 4 ---- 8680 ---- 8A10 8A80 8A80 8A80 8A80 8A80
  2741. *
  2742. * X
  2743. * 5 ---- ---- ---- ---- ---- 1801 1X01 1X01 1X01
  2744. * 6 ---- ---- ---- ---- ---- 8A10 8A80 8A80 8A80
  2745. *
  2746. * X X
  2747. * 7 ---- ---- ---- ---- ---- ---- ---- 1801 1801
  2748. * 8 ---- ---- ---- ---- ---- ---- ---- 8A10 8A80
  2749. *
  2750. * USES T1.
  2751. *
  2752. * CALLS ATT, SOU, SRP, WCB.
  2753.  
  2754.  
  2755. CLU SUBR ENTRY/EXIT
  2756. LDC C0209 LOAD ATTRIBUTE OPERATION CODE
  2757. RJM SOU SET OPERATION CODE AND UNIT
  2758. LPN 77B
  2759. SHN 10
  2760. ADN 1
  2761. STML CPBF+FCP+1 FIRST DRIVE
  2762. ADC 0#800
  2763. STML CPBF+FCP+3 SECOND DRIVE
  2764. ADC 0#800
  2765. STML CPBF+FCP+5 THIRD DRIVE
  2766. ADC 0#800
  2767. STML CPBF+FCP+7 FOURTH DRIVE
  2768. LDD DD NUMBER OF DATA DRIVES
  2769. ADD PD NUMBER OF PARITY DRIVES
  2770. SBN 1 TOTAL DRIVES LESS 1
  2771. SHN 1 SET PARAMETER BLOCK INDEX
  2772. STD T1
  2773. SHN 1+10B BUILD CLUSTER PARAMETER
  2774. ADC P0568
  2775. STML CPBF+FCP
  2776. LDD DT
  2777. IFNE EQEA,0,2
  2778. SBK EQEA
  2779. MJN CLU1 IF NOT 5832 SOLID STATE DEVICE
  2780. SBK EQEC-EQEA
  2781. PJN CLU1 IF NOT 5832 SOLID STATE DEVICE
  2782. LDC 0#8680
  2783. UJN CLU2 CONTINUE SETUP
  2784.  
  2785. CLU1 LDC 0#8A80
  2786. CLU2 STML CPBF+FCP+2
  2787. STML CPBF+FCP+4
  2788. STML CPBF+FCP+6
  2789. STML CPBF+FCP+10
  2790. LDD T1
  2791. NJN CLU3 IF NOT 1X DRIVE
  2792. LDC -0#80 CLEAR PARALLEL BIT
  2793. RAML CPBF+FCP+2
  2794. CLU3 LDD PD
  2795. ZJN CLU4 IF NOT A PARITY DEVICE
  2796. LDML CPBF+FCP+7 MAKE LAST DRIVE PARITY DRIVE
  2797. STML CPBF+FCP+1,T1
  2798. LDC 0#10-0#80 CLEAR PARALLEL BIT, SET PARITY BIT
  2799. RAML CPBF+FCP+2,T1
  2800.  
  2801. * COMMAND PACKET SETUP COMPLETE FOR ALL CONFIGURATIONS.
  2802.  
  2803. CLU4 LDD T1
  2804. SHN 1
  2805. ADK 0#C
  2806. RJM WCB WRITE COMMAND PACKET
  2807. LDN CMSS
  2808. RJM ATT PROCESS ATTENTION
  2809. NJN CLU10 IF NOT SUCCESSFUL
  2810.  
  2811. * WAIT FOR ASYNCHRONOUS RESPONSE FROM DRIVE.
  2812.  
  2813. CLU9 LDN ASRT
  2814. RJM ATT PROCESS ATTENTION
  2815. NJN CLU10 IF ERROR
  2816. LDD CN
  2817. SHN 10
  2818. ADD DN
  2819. LMML RPBF+CUN
  2820. NJN CLU9 IF WRONG UNIT
  2821. LDN ID26
  2822. RJM SRP SEARCH RESPONSE PACKET
  2823. MJN CLU10 IF ID26 NOT FOUND
  2824. LDML RPBF+5,T3
  2825. SBN 7
  2826. MJN CLU10 IF PARAMETER TOO SHORT
  2827. LDML RPBF+5+3,T3
  2828. SHN 21-13
  2829. MJP CLUX IF READ READY
  2830. CLU10 LCN ELCA LOAD CONTROLLER ATTRIBUTES FAILURE
  2831. RJM ERR PROCESS ERROR
  2832. CMC SPACE 4,10
  2833. ** CMC - CHECK MONITOR COMPLETE.
  2834. *
  2835. * EXIT (A) = (CW) = 0.
  2836. *
  2837. * USES CW - CW+4.
  2838. *
  2839. * CALLS AME.
  2840. *
  2841. * MACROS DELAY.
  2842.  
  2843.  
  2844. CMC SUBR ENTRY/EXIT
  2845. CMC1 LDD OA CHECK OUTPUT REGISTER
  2846. CRD CW
  2847. LDD CW
  2848. ZJN CMCX IF NO REQUEST WAITING FOR RESPONSE
  2849. SHN 21-13
  2850. PJN CMC2 IF REISSUE FLAG NOT SET
  2851. SHN 13-21
  2852. LPC 177 CLEAR FLAGS
  2853. STD CW
  2854. LDD OA UPDATE OUTPUT REGISTER
  2855. CWD CW
  2856. RJM AME REISSUE REQUEST
  2857. UJN CMC3 DELAY AND RECHECK
  2858.  
  2859. CMC2 SHN 13-21
  2860. LPC 177
  2861. SBN CPUM
  2862. PJN CMC3 IF NOT *MTR* REQUEST
  2863. LDK PPRL SET *MTR* REQUEST FLAG
  2864. CRD CW
  2865. LDD OA
  2866. STD CW
  2867. LDK PPRL
  2868. CWD CW
  2869. CMC3 DELAY
  2870. UJN CMC1 RECHECK OUTPUT REGISTER
  2871. CMN SPACE 4,15
  2872. ** CMN - CHECK MODEL NUMBER.
  2873. *
  2874. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  2875. * (DN) = DRIVE NUMBER.
  2876. * (DT) = DRIVE TYPE.
  2877. *
  2878. * EXIT TO *ERR* IF WRONG DRIVE TYPE.
  2879. *
  2880. * USES T1, T2.
  2881. *
  2882. * CALLS ATT, DDT, IDT, SCP, SOU.
  2883.  
  2884.  
  2885. CMN4 RJM ATT WAIT FOR COMPLETION RESPONSE
  2886.  
  2887. CMN SUBR ENTRY/EXIT
  2888. LDD DN
  2889. STM PHYD,DI PHYSICAL DRIVE
  2890. RJM DDT DETERMINE DRIVE TYPE
  2891. MJN CMN4 IF DRIVE NOT FOUND
  2892. RJM ATT WAIT FOR COMPLETION RESPONSE
  2893. LDC C0200 REPORT ATTRIBUTES OPERATION CODE
  2894. RJM SOU SET OPERATION CODE AND UNIT
  2895. LDC 0#8050
  2896. STML CPBF+FCP+1
  2897. LDC 0#36C
  2898. RJM SCP SET COMMAND PARAMETER
  2899. LDN 10D COMMAND PACKET LENGTH
  2900. RJM IDT INPUT DATA TO PP
  2901. LDM DDTA DRIVES PER LOGICAL UNIT
  2902. STDL T1
  2903. LDN 0
  2904. STDL T2
  2905. CMN1 LDML ATTB+26D,T2
  2906. NJN CMN2 IF MODEL NUMBER PRESENT
  2907. SODL T1
  2908. ZJN CMN3 IF NO MODEL NUMBER
  2909. LDN 14
  2910. RADL T2
  2911. UJN CMN1 CONTINUE SEARCH FOR MODEL NUMBER
  2912.  
  2913. CMN2 LMML MN,DT EXPECTED MODEL NUMBER
  2914. ZJN CMN3 IF CORRECT MODEL NUMBER
  2915. LDC -WDTP WRONG DRIVE TYPE
  2916. RJM ERR PROCESS ERROR
  2917.  
  2918. CMN3 UJP CMN4 WAIT FOR COMPLETION RESPONSE
  2919. CMP SPACE 4,25
  2920. ** CMP - COMPLETE PROCESSING.
  2921. *
  2922. * ENTRY AT *CMP* IF SPECIAL REQUEST OR I/O REQUEST
  2923. * COMPLETED SUCCESSFULLY.
  2924. * AT *CMP1* IF UNRECOVERED ERROR.
  2925. * AT *CMP2* FROM *ERR* IF SUSPECT STATE WAS JUST
  2926. * SET FOR THE DEVICE.
  2927. * AT *CMP8* IF PP BEING DROPPED.
  2928. * AT *CMP10* TO ABANDON REQUEST (WILL BE RETRIED LATER).
  2929. * (DI) = DEVICE STATE TABLE ADDRESS.
  2930. * (UC) = UNIT ACTIVITY COUNT.
  2931. * (RW) = READ / WRITE STATUS.
  2932. *
  2933. * EXIT TO *DAS1*.
  2934. * (UC) = UNIT ACTIVITY COUNT DECREMENTED.
  2935. *
  2936. * USES UC, WB+3, WB+4.
  2937. *
  2938. * CALLS CBC, CEP, CMC, CRF, CRP, DMP, IDM, IMR, RCR.
  2939.  
  2940.  
  2941. CMP10 RJM RCR RESET CHANNEL REGISTERS
  2942. RJM CBC CLEAR BUFFER COUNT
  2943. * UJN CMP ABANDON REQUEST
  2944.  
  2945.  
  2946. CMP LDM ERCT,DI
  2947. ZJN CMP3 IF NO ERRORS
  2948. LDN 3
  2949. STM MSGL+1 SET BASIC MESSAGE LENGTH
  2950. CMP1 AOM ERCT,DI
  2951. LDC HD0111 ISSUE FINAL BML MESSAGE
  2952. RJM IDM
  2953. CMP2 LDN 0 CLEAR ERROR COUNT
  2954. STM ERCT,DI
  2955. CMP3 RJM CEP CLEAR ERROR PROCESSING, IF SET
  2956. RJM CRF CLEAR RESET FLAGS, IF SET
  2957. LDM CFFA
  2958. LMD DI
  2959. NJN CMP4 IF NO FORMAT IN PROGRESS ON DEVICE
  2960. STM CFFA CLEAR *FORMAT IN PROGRESS* FLAG
  2961.  
  2962. * INCLUDE *PROBE* DATA IN FINAL *BIOM* REQUEST.
  2963.  
  2964. CMP4 LDD RW SET DATA TRANSFER DIRECTION
  2965. SHN 13-0
  2966. LMM CSCT,DI APPEND CUMULATIVE SECTOR COUNT
  2967. STD WB+4
  2968. LDM RQLN,DI
  2969. CMP5 ZJN CMP7 IF UNIT NOT INTERLOCKED
  2970. STD WB+3
  2971. LDM RSDI CHECK IF RESTORE IN PROGRESS
  2972. LMD DI
  2973. NJN CMP6 IF NO RESTORE IN PROGRESS ON THIS DEVICE
  2974. LDD WB+3
  2975. LPN 77
  2976. STD WB+3
  2977. ZJN CMP7 IF NO BUFFERS TO DELINK
  2978. LDN DCBS DELINK BUFFERS (LEAVE INTERLOCK SET)
  2979. RJM IMR
  2980. RJM CBC CLEAR BUFFER COUNT (LEAVE INTERLOCK SET)
  2981. UJN CMP7 CHECK MONITOR COMPLETE
  2982.  
  2983. CMP6 LDN DCBS DELINK BUFFERS / RELEASE UNIT INTERLOCK
  2984. RJM IMR
  2985. * LDN 0 CLEAR UNIT INTERLOCKED FLAG
  2986. STM RQLN,DI
  2987. SOD UC ADJUST UNIT ACTIVITY COUNT
  2988. CMP7 RJM CMC CHECK MONITOR COMPLETE
  2989. * LDN 0
  2990. STM ADDR,DI CLEAR REENTRY ADDRESS
  2991. STM ATTN,DI CLEAR INTERRUPT ADDRESS
  2992. STM CSCT,DI CLEAR CUMULATIVE SECTOR COUNT
  2993. STM SREQ,DI CLEAR SPECIAL REQUEST FLAG
  2994. LJM DAS1 PROCESS NEXT DEVICE
  2995.  
  2996. * TERMINATION PROCESSING.
  2997.  
  2998. CMP8 CON 0
  2999. RJM CRF CLEAR RESET FLAGS, IF SET
  3000. RJM CEP CLEAR ERROR PROCESSING, IF SET
  3001. RJM CRP CLEAR *RESTORE IN PROGRESS*, IF SET
  3002. LDN 0 CLEAR *PROBE* DATA
  3003. STD WB+4
  3004. LDD PD
  3005. ZJN CMP9 IF NOT PARITY DEVICE
  3006. LDML DVTP,DI
  3007. SHN 21-11
  3008. PJN CMP9 IF NOT MMF SHARED DEVICE
  3009. RJM DMP DISABLE MMF PARITY DEVICE ACCESS
  3010. CMP9 RJM CBC CLEAR BUFFER COUNT
  3011. UJP CMP5 RELEASE UNIT INTERLOCK, IF SET
  3012. CMR SPACE 4,15
  3013. ** CMR - CHECK FOR MMF *RESTORE* FLAGS.
  3014. *
  3015. * ENTRY (EO) = EST ORDINAL.
  3016. *
  3017. * EXIT (A) .EQ. 0, IF RESTORE NOT IN PROGRESS.
  3018. * (A) .GT. 0, IF RESTORE IN PROGRESS FOR ANY PARTITION.
  3019. * (A) .LT. 0, IF RESTORE INITIATION FOR ANY PARTITION.
  3020. * (CMRA) = EST ORDINAL OF DEVICE WITH RESTORE FLAG SET.
  3021. * (CMRA) = 0, IF NO EST WITH RESTORE FLAG FOUND.
  3022. *
  3023. * USES T4.
  3024. *
  3025. * CALLS CDS, GCA, LNE.
  3026.  
  3027.  
  3028. CMR3 LDD T4 RETURN STATUS
  3029. SHN 21-3
  3030.  
  3031. CMR SUBR ENTRY/EXIT
  3032. LDN 0
  3033. STD T4
  3034. STM CMRA
  3035. * LDN 0 INITIALIZE PARTITION SEARCH
  3036. CMR1 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
  3037. ZJN CMR3 IF NO MORE PARTITIONS
  3038. RJM CDS CHECK DEVICE STATUS
  3039. MJN CMR2 IF DEVICE NOT RECOVERED
  3040. ZJN CMR2 IF NOT SHARED DEVICE
  3041. RJM GCA GET CURRENT *ACGL*
  3042. LDD CM+4
  3043. LPN 11 CHECK *RESTORE* AND *RESTORE INITIATION*
  3044. ZJN CMR2 IF NEITHER BIT SET
  3045. STD T4 SAVE STATUS
  3046. LDD EO
  3047. STM CMRA SAVE EST ORDINAL
  3048. CMR2 LDD EO
  3049. UJN CMR1 CHECK FOR NEXT PARTITION
  3050.  
  3051.  
  3052. CMRA CON 0 EST ORDINAL WITH *RESTORE* SET
  3053. COD SPACE 4,10
  3054. ** COD - CHECK FOR OFF-LINE DRIVE.
  3055. *
  3056. * ENTRY (PD) = PARITY DEVICE FLAG.
  3057. *
  3058. * EXIT (A) = 0, IF NO OFFLINE DRIVE FOUND.
  3059. *
  3060. * CALLS ATT, RDO, SOU, WCB.
  3061.  
  3062.  
  3063. COD1 LDN 0 INDICATE NO OFFLINE DRIVE FOUND
  3064.  
  3065. COD SUBR ENTRY/EXIT
  3066. LDD PD
  3067. ZJN CODX IF NOT A PARITY DEVICE
  3068. LDC C0302 REPORT ADDRESSEE STATUS OPERATION CODE
  3069. RJM SOU SET OPERATION CODE AND UNIT
  3070. LDN 6 COMMAND PACKET LENGTH
  3071. RJM WCB WRITE COMMAND PACKET
  3072. LDN CMSS
  3073. RJM ATT WAIT FOR COMPLETION RESPONSE
  3074. NJN COD1 IF ERROR
  3075. LDML RPBF+11
  3076. SHN 21-11
  3077. PJN COD1 IF NO OFF-LINE DRIVE DETECTED
  3078. SHN -21+11+22 SET PHYSICAL DRIVE ID
  3079. LPN 37
  3080. STM PHYD,DI
  3081. STM OUPD,DI SET OFFLINE UNIT
  3082. RJM RDO REPORT DRIVE OFFLINE
  3083. LDN 1 INDICATE OFFLINE DRIVE FOUND
  3084. UJN CODX RETURN
  3085. CPC SPACE 4,10
  3086. ** CPC - CHECK FOR PARALLEL CONTROLLER.
  3087. *
  3088. * ENTRY (DT) = DRIVE TYPE.
  3089. *
  3090. * EXIT TO *ERR* IF CONTROLLER DOES NOT SUPPORT THIS DRIVE.
  3091. *
  3092. * CALLS ATT, IDT, SOC.
  3093.  
  3094.  
  3095. CPC1 RJM ATT WAIT FOR COMPLETION RESPONSE
  3096.  
  3097. CPC SUBR ENTRY/EXIT
  3098. LDD DD DATA DRIVES PER LOGICAL UNIT
  3099. SBN 1
  3100. ZJN CPCX IF THIS DRIVE WILL WORK IN SERIAL MODE
  3101. LDC C0200 REPORT ATTRIBUTES OPERATION CODE
  3102. RJM SOC SET OPERATION CODE AND CONTROLLER
  3103. LDC 0#36C
  3104. STML CPBF+FCP
  3105. LDC 0#80DA
  3106. STML CPBF+FCP+1 REPORT PARAMETER DA
  3107. LDN 10D COMMAND PACKET LENGTH
  3108. RJM IDT INPUT DATA TO PP
  3109. LDML ATTB+1
  3110. SHN 21-10
  3111. MJN CPC1 IF CONTROLLER SUPPORTS PARALLEL DRIVES
  3112. LDC -PNSP CONTROLLER DOES NOT SUPPORT PARALLEL
  3113. RJM ERR PROCESS ERROR
  3114. CPE SPACE 4,20
  3115. ** CPE - CHECK IF PARITY DRIVE ENABLED.
  3116. *
  3117. * ENTRY (FFDA) = 0 IF FAILING DRIVE IN RESPONSE PACKET.
  3118. * (CI) = CONTROLLER STATE TABLE ADDRESS.
  3119. * (FC) = FORMAT COMPLETE FLAG.
  3120. * (PD) = 0, IF NOT PARITY DEVICE.
  3121. * (IPPA) = 1.
  3122. *
  3123. * EXIT (CPEA) = 0 IF PARITY DRIVE AND RESPONSE HAS FAILING
  3124. * DRIVE.
  3125. * (T2) = (RPBF+9) FROM REPORT ADDRESSEE STATUS.
  3126. * TO *ERR* IF ERROR.
  3127. *
  3128. * USES T2.
  3129. *
  3130. * CALLS ATT, SOU, WCB.
  3131.  
  3132.  
  3133. CPE SUBR ENTRY/EXIT
  3134. LDD PD PARITY DRIVE INDICATOR
  3135. ZJN CPEX IF NOT A PARITY DEVICE
  3136. LDM SREQ,DI
  3137. NJN CPEX IF SPECIAL REQUEST
  3138. LDML CTST,CI
  3139. SHN 21-15
  3140. MJN CPEX IF CONTROLLER DEAD
  3141. LDD FC
  3142. ZJN CPEX IF FORMAT NOT COMPLETE
  3143. LDM FFDA
  3144. NJN CPEX IF NO FAILING DRIVE
  3145. LDC C0302 REPORT ADDRESSEE STATUS
  3146. RJM SOU SET OPERATION CODE AND UNIT
  3147. LDN 6 COMMAND PACKET LENGTH
  3148. RJM WCB WRITE COMMAND PACKET
  3149. LDN CMSS
  3150. RJM ATT PROCESS ATTENTION
  3151. ZJN CPE2 IF SUCCESSFUL
  3152. LCN ERDA REPORT DEVICE ATTRIBUTES ERROR
  3153. RJM ERR PROCESS ERROR
  3154.  
  3155. CPE2 LDML RPBF+11
  3156. STDL T2
  3157. SHN 3
  3158. PJN CPE4 IF LOGICAL UNIT NOT READ READY
  3159. SHN 1
  3160. PJN CPE4 IF NO PARITY DRIVE
  3161. SHN 4
  3162. PJN CPE3 IF NO OFF-LINE DRIVE
  3163. SHN -10 RIGHT JUSTIFY OFF-LINE UNIT NUMBER
  3164. LMM PHYD,DI
  3165. LPN 37
  3166. NJN CPE4 IF FAILING DRIVE NOT OFF-LINE
  3167. CPE3 LDN 0
  3168. STM CPEA
  3169. CPE4 UJP CPEX RETURN
  3170.  
  3171.  
  3172. CPEA CON 0
  3173. CPF SPACE 4,15
  3174. ** CPF - CHANGE *PILL* FIELD IN *PUT*.
  3175. *
  3176. * ENTRY (A) = 6/V, 6/N, 6/B.
  3177. * V = VALUE TO SET INTO SPECIFIED FIELD.
  3178. * N = NUMBER OF BITS - 1 TO CLEAR.
  3179. * B = LOW ORDER BIT NUMBER TO CHANGE.
  3180. * (DI) = DEVICE STATUS TABLE ENTRY ADDRESS.
  3181. *
  3182. * EXIT (A) = 0.
  3183. *
  3184. * USES T6, T7, CM+1 - CM+4.
  3185. *
  3186. * MACROS MONITOR, PUTE.
  3187.  
  3188.  
  3189. CPF SUBR ENTRY/EXIT
  3190. STD T6 SAVE FIELD SIZE AND LOW ORDER BIT
  3191. SHN -14
  3192. STD CM+2 NEW VALUE
  3193. LDD T6
  3194. SHN 6
  3195. STD T7 SET BIT NUMBER
  3196. SHN -14
  3197. ADC PILL*100+1 WORD OFFSET
  3198. STD T6
  3199. LDD MA
  3200. CWD T6 STORE MESSAGE BUFFER PARAMETERS
  3201. LDN 1
  3202. STD CM+1 PARAMETER WORD COUNT
  3203. LDI DI
  3204. ERRNZ PUTO CODE DEPENDS ON VALUE
  3205. SHN PUTLS
  3206. PUTE *
  3207. ADC 0 SET BASE *PUT* ENTRY ADDRESS
  3208. STD CM+4
  3209. SHN -14
  3210. STD CM+3
  3211. MONITOR UTEM CLEAR *PUT* FLAG
  3212. * LDN 0
  3213. UJN CPFX RETURN
  3214. CRF SPACE 4,10
  3215. ** CRF - CLEAR RESET FLAGS.
  3216. *
  3217. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  3218. * (SRSA) = (DI), IF RESET IN PROGRESS ON DEVICE.
  3219. *
  3220. * USES RF.
  3221. *
  3222. * CALLS CRI, IOM.
  3223.  
  3224.  
  3225. CRF SUBR ENTRY/EXIT
  3226. LDM SRSA CHECK RESET FLAG
  3227. LMD DI
  3228. NJN CRFX IF NO RESET IN PROGRESS ON THIS DEVICE
  3229. STM SRSA CLEAR RESET FLAG
  3230. STD RF CLEAR *RESET FAILED*
  3231. RJM CRI CLEAR SLAVE RESET INTERLOCK, IF SET
  3232. LDN 0 CLEAR OPERATOR MESSAGE
  3233. RJM IOM
  3234. UJN CRFX RETURN
  3235. CRI SPACE 4,10
  3236. ** CRI - CLEAR SLAVE RESET INTERLOCK.
  3237. *
  3238. * ENTRY (CRIB) = 0, IF SLAVE RESET INTERLOCK NOT SET.
  3239. *
  3240. * CALLS IFR.
  3241.  
  3242.  
  3243. CRI SUBR ENTRY/EXIT
  3244. CRIA LDC ** (SLAVE RESET INTERLOCK FLAG)
  3245. * UJN CRIX (NO SHARED BUFFERED DEVICES CONFIGURED)
  3246. CRIB EQU *-1
  3247. ZJN CRIX IF SLAVE RESET INTERLOCK NOT SET
  3248. LCN /MMF/DSRI CLEAR *DAS SLAVE RESET INTERLOCK* FLAG BIT
  3249. RJM IFR
  3250. LDN 0 CLEAR *SLAVE RESET INTERLOCK SET* FLAG
  3251. STM CRIB
  3252. UJN CRIX RETURN
  3253. CRP SPACE 4,15
  3254. ** CRP - CLEAR *RESTORE IN PROGRESS* FLAGS.
  3255. *
  3256. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  3257. * (EO) = EST ORDINAL.
  3258. * (RSIN) = (DI), IF RESTORE INTERLOCK SET ON DEVICE.
  3259. *
  3260. * USES CM - CM+4.
  3261. *
  3262. * CALLS CPF, CDS, LNE, RBD, UBP.
  3263. *
  3264. * MACROS CMSTF, MONITOR.
  3265.  
  3266.  
  3267. CRP4 LDN RSPF CLEAR *RESTORE* SPECIAL REQUEST FLAG
  3268. RJM CPF
  3269. STM SREQ,DI CLEAR SPECIAL REQUEST FLAG
  3270.  
  3271. CRP SUBR ENTRY/EXIT
  3272. LDM RSIN CHECK RESTORE INTERLOCK FLAG
  3273. LMD DI
  3274. NJN CRPX IF INTERLOCK NOT SET FOR THIS DEVICE
  3275. STM RSIN CLEAR RESTORE INTERLOCK FLAG
  3276. STM RSDI CLEAR *RESTORE IN PROGRESS* FLAG
  3277. * LDN 0 INITIALIZE PARTITION SEARCH
  3278. CRP1 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
  3279. ZJN CRP4 IF NO MORE PARTITIONS
  3280. RJM CDS CHECK DEVICE STATUS
  3281. ZJN CRP2 IF DEVICE RECOVERED BUT NOT SHARED
  3282. RJM RBD READ *BDLL*
  3283. LDD CM+3 CHECK IF THIS MF HOLDS *RESTORE* INTERLOCK
  3284. SHN 21-11
  3285. PJN CRP3 IF THIS MF DOES NOT HOLD INTERLOCK
  3286. CRP2 CMSTF GDUR CLEAR *RESTORE IN PROGRESS* FROM *ACGL*
  3287. CMSTF GDRI CLEAR *RESTORE INITIATION* FROM *ACGL*
  3288. LDD EO SET EST ORDINAL
  3289. STD CM+1
  3290. LDN 0
  3291. STD CM+2
  3292. LDN SRCS CLEAR REMAINING CYLINDERS / 100B IN *ACGL*
  3293. STD CM+3
  3294. MONITOR STBM
  3295. RJM CDS CHECK DEVICE STATUS
  3296. MJN CRP3 IF DEVICE NOT RECOVERED
  3297. ZJN CRP3 IF NOT SHARED DEVICE
  3298. LDD EO SET EST ORDINAL
  3299. STD CM+4
  3300. LDN CRPS CLEAR RESTORE PARITY INTERLOCK IN *BDT*
  3301. STD CM+1
  3302. MONITOR MTEM
  3303. * LDN 0 CLEAR FLAG THAT SAYS THIS MF HAS INTERLOCK
  3304. STD CM+2
  3305. LDN 25 BIT TO CHANGE
  3306. RJM UBP UPDATE *BDLL* PARAMETER
  3307. CRP3 LDD EO
  3308. UJP CRP1 PROCESS NEXT PARTITION
  3309. CSC SPACE 4,10
  3310. ** CSC - COMPUTE SECTOR COUNT FOR RESTORE.
  3311. *
  3312. * ENTRY (DT) = DRIVE TYPE.
  3313. * (DI) = DEVICE STATE TABLE ADDRESS.
  3314. *
  3315. * EXIT (CPBF+FCP+2) = NUMBER OF SECTORS TO RESTORE.
  3316. *
  3317. * USES T1 - T3.
  3318.  
  3319.  
  3320. CSC2 LDM PSPT,DT
  3321. SBD T2
  3322. RAD T3 ADD SECTORS FOR LAST TRACK
  3323. STM CPBF+FCP+2 SECTOR COUNT
  3324.  
  3325. CSC SUBR ENTRY/EXIT
  3326. LDM RTSN
  3327. STM TKSN,DI FOR ERROR LOGGING
  3328. SHN 14
  3329. STD T1 STARTING TRACK
  3330. SHN -14
  3331. STD T2 STARTING SECTOR
  3332. LDD T1
  3333. SHN 10
  3334. ADD T2
  3335. STML CPBF+FCP+4 STARTING TRACK, SECTOR
  3336. LDN 0
  3337. STD T3
  3338. STM CPBF+FCP+1 UPPER 2 BYTES OF SECTOR COUNT
  3339. CSC1 AOD T1
  3340. LDM LSOC,DT
  3341. SHN -6
  3342. SBD T1
  3343. MJN CSC2 IF LAST TRACK
  3344. LDM PSPT,DT
  3345. RAD T3 COMPUTE SECTOR COUNT
  3346. UJN CSC1 INCREMENT TRACK NUMBER
  3347. CSN SPACE 4,15
  3348. ** CSN - COMPARE CONTROLLER SERIAL NUMBERS.
  3349. *
  3350. * COMPARE THE CONTROLLER SERIAL NUMBER IN THE *BDT* ENTRY
  3351. * FOR THE SPECIFIED DEVICE WITH THE SERIAL NUMBER OF THE
  3352. * CONTROLLER PROCESSING THE DEVICE ON THIS CHANNEL.
  3353. *
  3354. * ENTRY (A) = EST ORDINAL.
  3355. * (CI) = CONTROLLER STATE TABLE ADDRESS.
  3356. *
  3357. * EXIT (A) = 0, IF CONTROLLER SERIAL NUMBER MATCHES.
  3358. *
  3359. * USES CM - CM+4.
  3360. *
  3361. * MACROS MONITOR.
  3362.  
  3363.  
  3364.  
  3365. CSN SUBR ENTRY/EXIT
  3366.  
  3367. * GET SERIAL NUMBER OF CONTROLLER PERFORMING *RESTORE*.
  3368.  
  3369. STD CM+4 SET EST ORDINAL
  3370. LDN GBDS GET *BDT* ENTRY
  3371. STD CM+1
  3372. MONITOR MTEM
  3373. LDD MA READ *BDT* ENTRY
  3374. CRD CM
  3375.  
  3376. * COMPARE WITH THIS CONTROLLER-S SERIAL NUMBER.
  3377.  
  3378. LDD CM+2
  3379. LMM CTSN,CI
  3380. NJN CSNX IF NOT THE SAME SERIAL NUMBER
  3381. LDD CM+3
  3382. LMM CTSN+1,CI
  3383. NJN CSNX IF NOT THE SAME SERIAL NUMBER
  3384. LDD CM+4
  3385. LMM CTSN+2,CI
  3386. UJN CSNX RETURN STATUS
  3387. CSR SPACE 4,10
  3388. ** CSR - CLEAR SPECIAL REQUEST.
  3389. *
  3390. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  3391. *
  3392. * EXIT TO *CMP*.
  3393. *
  3394. * CALLS CPF.
  3395.  
  3396.  
  3397. CSR BSS 0 ENTRY
  3398. LDM SREQ,DI
  3399. ZJN CSR1 IF NO SPECIAL REQUEST IN PROGRESS
  3400. LPN 77
  3401. SBN ECAF+ISRB-ISRA
  3402. PJN CSR1 IF INTERNAL SPECIAL REQUEST
  3403. LDM SREQ,DI
  3404. RJM CPF CLEAR SPECIAL REQUEST FROM *PUT*
  3405. CSR1 LJM CMP COMPLETE PROCESSING
  3406. CTO SPACE 4,10
  3407. ** CTO - CHECK TIMEOUT.
  3408. *
  3409. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  3410. *
  3411. * EXIT (A) .LT. 0 IF NOT TIMEOUT.
  3412. *
  3413. * USES T6, T7, CM - CM+4.
  3414. *
  3415. * MACROS FTTE.
  3416.  
  3417.  
  3418. CTO SUBR ENTRY/EXIT
  3419. LDI DI
  3420. ERRNZ PUTO CODE DEPENDS ON VALUE
  3421. SHK FTTLS
  3422. FTTE *
  3423. ADC 0 READ *FTT* ENTRY
  3424. CRD CM
  3425. LDC RTCL FETCH CURRENT CLOCK VALUE
  3426. CRD T6
  3427. LDD T6 CHECK ELAPSED TIME
  3428. SBD CM+3
  3429. MJN CTOX IF NOT TIMEOUT
  3430. SHN 14
  3431. ADD T7
  3432. SBD CM+4
  3433. UJN CTOX RETURN
  3434. CUF SPACE 4,10
  3435. ** CUF - CHECK IF UNIT FORMATTED.
  3436. *
  3437. * ENTRY (A) = OPERATION CODE.
  3438. * (DT) = DRIVE TYPE.
  3439. *
  3440. * EXIT (A) = 0 IF DRIVE FORMATTED WITH CORRECT SECTOR SIZE.
  3441. * TO *ERR* IF ERROR.
  3442. *
  3443. * CALLS ATT, SOU, WCB.
  3444.  
  3445. CUF3 LDN 1
  3446.  
  3447. CUF SUBR ENTRY/EXIT
  3448. RJM SOU SET OPERATION CODE AND UNIT
  3449. LDN 6 COMMAND PACKET LENGTH
  3450. RJM WCB WRITE COMMAND PACKET
  3451. LDN CMSS
  3452. RJM ATT PROCESS ATTENTION
  3453. ZJN CUF1 IF SUCCESSFUL
  3454. LCN ERDA REPORT DEVICE ATTRIBUTES ERROR
  3455. RJM ERR PROCESS ERROR
  3456.  
  3457. CUF1 LDML RPBF+11
  3458. SHN 21-16
  3459. PJN CUF3 IF NOT FORMATTED
  3460. SHN 21-17-21+16+22
  3461. MJN CUF2 IF CLUSTERED (DATA DRIVES ALREADY CHECKED)
  3462. LDML RPBF+7
  3463. LPN 77B MASK ACTUAL DATA DRIVES FOR FORMAT
  3464. LMD DD EXPECTED DATA DRIVES
  3465. NJN CUFX IF WRONG NUMBER OF DATA DRIVES
  3466. CUF2 LDML BPS,DT EXPECTED SECTOR SIZE
  3467. SCN 77
  3468. LMML RPBF+13 ACTUAL SECTOR SIZE
  3469. UJP CUFX RETURN
  3470. DCA SPACE 4,15
  3471. ** DCA - DISABLE CONTROLLER ACTIVITY.
  3472. *
  3473. * ENTRY (CI) = CONTROLLER STATE TABLE ADDRESS.
  3474. * (CN) = CONTROLLER NUMBER.
  3475. * (DI) = DEVICE STATE TABLE ADDRESS.
  3476. * (EO) = EST ORDINAL.
  3477. * (IR+4) = CHANNEL NUMBER.
  3478. *
  3479. * EXIT *CONTROLLER DEAD* FLAG SET IN CONTROLLER STATE TABLE.
  3480. * *CMX CONTROLLER DISABLED, CCHXX.* MESSAGE ISSUED.
  3481. *
  3482. * CALLS IEM.
  3483.  
  3484.  
  3485. DCA SUBR ENTRY/EXIT
  3486. LDML CTST,CI SET *CONTROLLER DEAD* FLAG
  3487. LPC 017777 CLEAR BITS 15, 14 AND 13
  3488. LMC 020000 SET BIT 13
  3489. STML CTST,CI
  3490. LDC ERCD+100000 *EQXXX, UXX, CMX CONTROLLER DISABLED.*
  3491. RJM IEM ISSUE ERRORLOG MESSAGE
  3492. UJN DCAX RETURN
  3493. DCE SPACE 4,10
  3494. ** DCE - DOWN CHANNEL ON EQUIPMENT.
  3495. *
  3496. * ENTRY (EO) = EST ORDINAL OF DEVICE.
  3497. *
  3498. * USES EO, CM - CM+4.
  3499. *
  3500. * CALLS DAS.
  3501. *
  3502. * MACROS DELAY, EXECUTE, MONITOR.
  3503.  
  3504.  
  3505. DCE SUBR ENTRY/EXIT
  3506. DCE1 LDD EO SET EST ORDINAL
  3507. STM DCEA
  3508. LMC 4000
  3509. STM DCEB+4 SET DRIVER CALL FLAG, EST ORDINAL
  3510. LDD MA
  3511. CWM DCEB,ON STORE *1DS* CALL IN MESSAGE BUFFER
  3512. LDN 0
  3513. STD CM+1 SET NON-PRIORITY REQUEST
  3514. EXECUTE 1DS,=
  3515. MONITOR RPPM REQUEST PP
  3516. LDD CM+1
  3517. NJN DCEX IF *1DS* STARTED
  3518. RJM DAS PROCESS ACTIVITY ON OTHER DEVICES
  3519. DELAY
  3520. LDC ** (EST ORDINAL OF CURRENT PARTITION)
  3521. DCEA EQU *-1
  3522. STD EO RESTORE EST ORDINAL
  3523. UJN DCE1 RETRY CALL
  3524.  
  3525.  
  3526. DCEB VFD 18/3L1DS,6/,12/DWNF,12/0,12/4000
  3527. DCR SPACE 4,15
  3528. ** DCR - DROP CHANNEL RESERVATION.
  3529. *
  3530. * ENTRY (CR) = 1 IF CHANNEL RESERVED.
  3531. * (IR+4) = CHANNEL NUMBER.
  3532. *
  3533. * EXIT (A) = (CR) = 0.
  3534. * CHANNEL RESERVATION DROPPED.
  3535. *
  3536. * USES CM+1, CR.
  3537. *
  3538. * MACROS MONITOR.
  3539.  
  3540.  
  3541. DCR SUBR ENTRY/EXIT
  3542. LDD CR
  3543. ZJN DCRX IF CHANNEL NOT RESERVED
  3544. LDD IR+4
  3545. STD CM+1 DROP CHANNEL
  3546. MONITOR DCHM
  3547. * LDN 0 SET CHANNEL NOT RESERVED
  3548. STD CR
  3549. UJN DCRX RETURN
  3550. DDT SPACE 4,20
  3551. ** DDT - DETERMINE DRIVE TYPE.
  3552. *
  3553. * ENTRY (PHYD,DI) = DRIVE TO DETERMINE TYPE OF.
  3554. * (DI) = DEVICE STATE TABLE ADDRESS.
  3555. *
  3556. * EXIT (A) .EQ. DRIVE TYPE (0-7) IF SUPPORTED DRIVE FOUND.
  3557. * DRIVE TYPE 8-13 AND 14-19 ARE REPORTED AS
  3558. * DRIVE TYPE 2-7.
  3559. * (A) .EQ. *EQNS* IF NON-SUPPORTED DRIVE TYPE FOUND.
  3560. * (A) .LT. 0 IF DRIVE NOT FOUND OR ERROR.
  3561. * (DDTA) = DRIVES PER LOGICAL UNIT.
  3562. * (ATTB+2,T3) HAS BIT 9 SET IF THE DRIVE IS FOUND
  3563. * AND IT IS CLUSTERED. (T3) IS ADJUSTED TO POINT
  3564. * TO THE CORRECT WORD IN THE RESPONSE.
  3565. *
  3566. * USES T1 - T4.
  3567. *
  3568. * CALLS IDT, SOC.
  3569. *
  3570. * NOTE TO ENSURE THAT THIS ROUTINE IS NOT CALLED FOR MORE
  3571. * THAN ONE DEVICE AT THE SAME TIME, THE ERROR PROCESSING
  3572. * FLAG MUST ALWAYS BE SET BEFORE CALLING THIS ROUTINE.
  3573.  
  3574.  
  3575. DDT SUBR ENTRY
  3576. LDC C0200 REPORT ATTRIBUTES OPERATION CODE
  3577. RJM SOC SET OPERATION CODE AND CONTROLLER
  3578. LDC P036C
  3579. STML CPBF+FCP PARAMETER TO READ REV NUMBER
  3580. LDC 0#8068
  3581. STML CPBF+FCP+1 REPORT PARAMETER 68
  3582. LDN 10D COMMAND PACKET LENGTH
  3583. RJM IDT INPUT DATA TO PP
  3584. LDML DDT
  3585. STDL T4 RETURN ADDRESS FROM *DDT*
  3586. LDML RPBF+5+2
  3587. SHN -1
  3588. STDL T1 LENGTH OF ATTRIBUTE DATA
  3589. LDM PHYD,DI PHYSICAL DRIVE
  3590. SHN 10
  3591. ADN 1
  3592. STDL T2 EXPECTED PARAMETER WORD WITH UNIT NUMBER
  3593. LDN 0
  3594. STDL T3 INDEX TO PARAMETER 68
  3595. LDN 1
  3596. STML DDTA PHYSICAL DRIVES PER LOGICAL UNIT
  3597. DDT1 LDML ATTB,T3
  3598. LMC 0#568
  3599. NJN DDT4 IF NOT SINGLE UNIT
  3600. LDML ATTB+1,T3
  3601. LMDL T2
  3602. NJP DDT15 IF DIFFERENT UNIT
  3603. LDML ATTB+2,T3
  3604. SHN 21-12
  3605. MJN DDT2 IF SOLID STATE DISK
  3606. LDN EQEC 5833-1 OR 5838-1 OR 47444-1
  3607. UJN DDT3 EXIT
  3608.  
  3609. DDT2 LDN EQEA 5832-1
  3610. DDT3 UJP DDTX RETURN
  3611.  
  3612. DDT4 LMC 0#968&0#568
  3613. NJN DDT9 IF NOT 2 UNITS
  3614. LDML ATTB+1,T3
  3615. LMDL T2
  3616. ZJN DDT5 IF UNIT FOUND
  3617. LDML ATTB+3,T3
  3618. LMDL T2
  3619. NJP DDT16 IF DIFFERENT UNIT
  3620. DDT5 LDN 2
  3621. STML DDTA PHYSICAL DRIVES PER LOGICAL UNIT
  3622. LDML ATTB+4,T3
  3623. SHN 21-13
  3624. MJN DDT6 IF NOT SSD
  3625. LDN EQEB 5832-2
  3626. UJN DDT3 EXIT
  3627.  
  3628. DDT6 SHN 21-4-21+13
  3629. MJN DDT7 IF PARITY DRIVE
  3630. LDN EQEE 5833-2 OR 5838-2 OR 47444-2
  3631. UJN DDT3 EXIT
  3632.  
  3633. DDT7 LDN EQED 5833-1P OR 5838-1P OR 47444-1P
  3634. DDT8 UJN DDT3 EXIT
  3635.  
  3636. DDT9 LMC 0#D68&0#968
  3637. NJN DDT12 IF NOT 3 UNITS
  3638. LDML ATTB+1,T3
  3639. LMDL T2
  3640. ZJN DDT10 IF UNIT FOUND
  3641. LDML ATTB+3,T3
  3642. LMDL T2
  3643. ZJN DDT10 IF UNIT FOUND
  3644. LDML ATTB+5,T3
  3645. LMDL T2
  3646. NJP DDT17 IF UNIT NOT FOUND
  3647. DDT10 LDN 3
  3648. STML DDTA PHYSICAL DRIVES PER LOGICAL UNIT
  3649. LDML ATTB+6,T3
  3650. SHN 21-4
  3651. PJP DDT14 IF NOT A PARITY UNIT
  3652. LDN EQEF 5833-2P OR 5838-2P OR 47444-2P
  3653. DDT11 UJN DDT8 EXIT
  3654.  
  3655. DDT12 LMC 0#1168&0#D68
  3656. NJP DDT20 IF ILLEGAL PARAMETER
  3657. LDML ATTB+1,T3
  3658. LMDL T2
  3659. ZJN DDT12.1 IF UNIT FOUND
  3660. LDML ATTB+3,T3
  3661. LMDL T2
  3662. ZJN DDT12.1 IF UNIT FOUND
  3663. LDML ATTB+5,T3
  3664. LMDL T2
  3665. ZJN DDT12.1 IF UNIT FOUND
  3666. LDML ATTB+7,T3
  3667. LMDL T2
  3668. NJN DDT18 IF DIFFERENT UNIT
  3669. DDT12.1 LDN 4
  3670. STML DDTA TOTAL DRIVES
  3671. LDML ATTB+10,T3
  3672. SHN 21-4
  3673. PJN DDT13.1 IF NOT A PARITY UNIT
  3674. LDN EQEM 5833-3P OR 5838-3P OR 47444-3P
  3675. DDT13 UJN DDT11 EXIT
  3676.  
  3677. DDT13.1 LDN EQEN 5833-4 OR 5838-4 OR 47444-4
  3678. UJN DDT13 EXIT
  3679.  
  3680. DDT14 LDN EQNS NUMBER OF DEFINED DRIVE TYPES
  3681. UJN DDT13 EXIT
  3682.  
  3683. DDT15 LDN 3
  3684. UJN DDT19 UPDATE POINTER
  3685.  
  3686. DDT16 LDN 5
  3687. UJN DDT19 UPDATE POINTER
  3688.  
  3689. DDT17 LDN 7
  3690. UJN DDT19 UPDATE POINTER
  3691.  
  3692. DDT18 LDN 11
  3693. DDT19 RADL T3 UPDATE POINTER TO PARAMETER 68
  3694. SBDL T1
  3695. MJP DDT1 IF MORE PARAMETERS TO CHECK
  3696. DDT20 LCN 0 DRIVE NOT FOUND OR ERROR
  3697. UJN DDT13 EXIT
  3698.  
  3699.  
  3700. DDTA CON 0 TOTAL NUMBER OF DRIVES IN LOGICAL UNIT
  3701. DLU SPACE 4,10
  3702. ** DLU - DECLUSTER LOGICAL UNIT.
  3703. *
  3704. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  3705. * (DDTA) = PHYSICAL DRIVES PER LOGICAL UNIT.
  3706. * (PHYD,DI) = DRIVE TO DECLUSTER.
  3707. * (DT) = DRIVE TYPE.
  3708. *
  3709. * EXIT TO *ERR* IF ERROR.
  3710. *
  3711. * CALLS ATT, SCP, SOU, SRP, WCB.
  3712.  
  3713.  
  3714. DLU SUBR ENTRY/EXIT
  3715. LDC C0209+1S17 LOAD ATTRIBUTE OPERATION CODE
  3716. RJM SOU SET OPERATION CODE AND UNIT
  3717. LDC P0568
  3718. RJM SCP SET COMMAND PARAMETER
  3719. LDML CPBF+CUN
  3720. LPN 77B MASK DRIVE NUMBER
  3721. SHN 10
  3722. ADN 1
  3723. STML CPBF+FCP+1 PARAMETER WORD WITH DRIVE NUMBER
  3724. LDD DT
  3725. IFNE EQEA,0,2
  3726. SBN EQEA
  3727. MJN DLU1 IF NOT SOLID STATE
  3728. SBN EQEC-EQEA
  3729. PJN DLU1 IF NOT SOLID STATE
  3730. LDC 0#8500 DECLUSTER 5832
  3731. UJN DLU2 SET DECLUSTER PARAMETER
  3732.  
  3733. DLU1 LDC 0#8900 DECLUSTER 5833/5838/47444
  3734. DLU2 STML CPBF+FCP+2
  3735. LDN 12D COMMAND PACKET LENGTH
  3736. RJM WCB WRITE COMMAND PACKET
  3737. LDN CMSS
  3738. RJM ATT PROCESS ATTENTION
  3739. NJN DLU4 IF NOT SUCCESSFUL
  3740.  
  3741. * IF THE NEXT COMMAND IS ISSUED BEFORE THE DECLUSTER
  3742. * COMPLETES, AN ERROR COULD OCCUR.
  3743.  
  3744. DLU3 LDN ASRT
  3745. RJM ATT PROCESS ATTENTION
  3746. LDK ID26
  3747. RJM SRP SEARCH RESPONSE PACKET
  3748. MJN DLU3 IF ID26 NOT FOUND
  3749. SOM DDTA
  3750. NJN DLU3 IF ANOTHER ASYNCHRONOUS RESPONSE EXPECTED
  3751. UJP DLUX RETURN
  3752.  
  3753. DLU4 LCN ELCA LOAD CONTROLLER ATTRIBUTES FAILURE
  3754. RJM ERR PROCESS ERROR
  3755. DMP SPACE 4,15
  3756. ** DMP - DISABLE MMF PARITY DEVICE ACCESS.
  3757. *
  3758. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  3759. * (EO) = EST ORDINAL.
  3760. *
  3761. * USES CM+2.
  3762. *
  3763. * CALLS CAB, CAC, CBB, LNE, RBD, UBP.
  3764. *
  3765. * MACROS CMSTF.
  3766.  
  3767.  
  3768. DMP5 LDC ** (UNPROCESSED PARTITION COUNT)
  3769. DMPB EQU *-1
  3770. NJN DMPX IF NOT ALL PARTITIONS PROCESSED
  3771. LDML DVTP,DI SET *ACCESS DISABLED* FLAG
  3772. LPC 167777
  3773. LMC 10000
  3774. STML DVTP,DI
  3775.  
  3776. DMP SUBR ENTRY/EXIT
  3777. LDN 0 CLEAR UNPROCESSED PARTITION COUNT
  3778. STM DMPB
  3779. * LDN 0 INITIALIZE PARTITION SEARCH
  3780. DMP1 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
  3781. ZJN DMP5 IF NO MORE PARTITIONS
  3782. RJM CAB CHECK ACGL *MMF PARITY DEVICE ACCESS* BIT
  3783. ZJN DMP4 IF BIT FOR THIS MF IS CLEAR
  3784. RJM CBB CHECK BDLL *DISABLE ACCESS* BIT
  3785. MJN DMP2 IF BIT FOR THIS DRIVER ALREADY SET
  3786. LDN 1 NEW VALUE
  3787. STD CM+2
  3788. LDD T1 BIT TO CHANGE
  3789. ADN 19D
  3790. RJM UBP SET DISABLE ACCESS BIT IN *BDLL*
  3791. DMP2 RJM CAC CHECK FOR ALTERNATE CHANNEL
  3792. NJN DMP3 IF ALTERNATE CHANNEL UNDEFINED OR DOWN
  3793. RJM RBD READ *BDLL*
  3794. LDD CM+3 CHECK IF BITS SET FOR BOTH CHANNELS
  3795. SHN -7
  3796. LPN 3
  3797. LMN 3
  3798. ZJN DMP3 IF BOTH BITS ARE NOW SET
  3799. AOM DMPB UNPROCESSED PARTITION COUNT
  3800. UJN DMP4 PROCESS NEXT PARTITION
  3801.  
  3802. DMP3 CMSTF GPDA CLEAR ACCESS FLAG BIT FOR THIS MF
  3803. DMPA EQU *-3 (BIT NUMBER FOR THIS MF)
  3804. DMP4 LDD EO
  3805. UJP DMP1 PROCESS NEXT PARTITION
  3806. DRT SPACE 4,10
  3807. ** DRT - CHECK REQUEST TYPE.
  3808. *
  3809. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  3810. * (FC) = 0 IF FORMAT NOT COMPLETE.
  3811. * (CB) = 0 IF NO I/O BUFFER PRESENT.
  3812. *
  3813. * EXIT (A) .NE. 0 IF I/O REQUEST.
  3814.  
  3815.  
  3816. DRT2 LDN 0
  3817.  
  3818. DRT SUBR ENTRY/EXIT
  3819. LDD FC
  3820. ZJN DRTX IF FORMAT NOT COMPLETE
  3821. LDM SREQ,DI
  3822. NJN DRT2 IF SPECIAL REQUEST
  3823. LDM RSDI CHECK IF RESTORE IN PROGRESS
  3824. LMD DI
  3825. NJN DRT1 IF NO RESTORE IN PROGRESS ON THIS DEVICE
  3826. LDM RMUX
  3827. ZJN DRTX IF CURRENTLY RESTORING A CYLINDER
  3828. DRT1 LDD CB
  3829. UJN DRTX
  3830. ECA SPACE 4,20
  3831. ** ECA - ENABLE CONTROLLER ACTIVITY.
  3832. *
  3833. * THIS SPECIAL REQUEST CLEARS THE CONTROLLER DEAD FLAG IN THE
  3834. * CONTROLLER STATE TABLE. THIS FUNCTION IS ISSUED BY *1MV*
  3835. * WHEN AN *UP,CCH* COMMAND IS ENTERED.
  3836. *
  3837. * ENTRY (CI) = CONTROLLER STATE TABLE ADDRESS.
  3838. * (CN) = CONTROLLER NUMBER.
  3839. * (DI) = DEVICE STATE TABLE ADDRESS.
  3840. * (EO) = EST ORDINAL.
  3841. * (IR+4) = CHANNEL NUMBER.
  3842. *
  3843. * EXIT *CONTROLLER DEAD* FLAG CLEARED IN *CTST*.
  3844. * *CMX CONTROLLER ENABLED, CCHXX* MESSAGE ISSUED.
  3845. * TO *CMP* WHEN FUNCTION COMPLETE.
  3846. *
  3847. * CALLS CEA, IEM.
  3848.  
  3849.  
  3850. ECA BSS 0 ENTRY
  3851. LDML CTST,CI ENABLE CONTROLLER ACTIVITY
  3852. SHN 21-15
  3853. PJN ECA1 IF CONTROLLER NOT DISABLED
  3854. SHN -21+15+22
  3855. LPC 17777 CLEAR BITS 15 - 13
  3856. STML CTST,CI
  3857. LDC ERCE+100000 *EQXXX, UXX, CMX CONTROLLER ENABLED.*
  3858. RJM IEM ISSUE ERRORLOG MESSAGE
  3859. ECA1 RJM CEA CLEAR ENABLE ACTIVITY REQUEST
  3860. LJM CMP COMPLETE FUNCTION
  3861. ECI SPACE 4,15
  3862. ** ECI - EXAMINE CONTROLLER INTERRUPTS.
  3863. *
  3864. * ENTRY (CI) = CONTROLLER STATE TABLE ADDRESS.
  3865. * (CN) = CONTROLLER NUMBER.
  3866. * (DI) = DEVICE STATE TABLE ADDRESS.
  3867. *
  3868. * EXIT (A) = (PA) = 0 IF NO REQUEST IN PROGRESS.
  3869. * (A) .NE. 0, IF DEVICE SHOULD NOT BE PROCESSED.
  3870. * TO (ADDR,DI) IF NO RESPONSE FOR REQUEST IN PROGRESS.
  3871. * TO (ATTN,DI) IF RESPONSE FOR REQUEST IN PROGRESS.
  3872. * TO *CMP* AFTER PERFORMING THE INITIAL LOGICAL RESET
  3873. * ON THE CONTROLLER. THIS RESET IS DONE ONCE PER
  3874. * CONTROLLER WHEN THE DRIVER IS LOADED.
  3875. *
  3876. * USES PA.
  3877. *
  3878. * CALLS FCN, GIS, IDU, IHD, LDP, SAP, SRS.
  3879.  
  3880.  
  3881. ECI SUBR ENTRY/EXIT
  3882. RJM SAP SELECT ADAPTER PORT
  3883. LDC F0715 ENABLE INTERRUPTS
  3884. RJM FCN
  3885. RJM LDP LOAD DEVICE PARAMETERS
  3886. RJM GIS GET INTERRUPT STATUS
  3887. LPML TMSK,CN
  3888. ZJN ECI2 IF NO INTERRUPT FROM THIS CONTROLLER
  3889.  
  3890. * CHECK THAT INTERRUPT BELONGS TO CURRENT DRIVE.
  3891.  
  3892. RJM IHD
  3893. ZJN ECI2 IF RESPONSE FROM INACTIVE DRIVE
  3894. * LDML ATTN,DI
  3895. STDL PA SET RETURN ADDRESS
  3896. LDN 0
  3897. STML ATTN,DI DEACTIVATE RETURN
  3898.  
  3899. * RETURN TO CALLER WITH STATUS FROM RESPONSE PACKET.
  3900.  
  3901. LDM EEST,DI EXPECTED RESPONSE TYPE
  3902. LMD RT
  3903. ZJN ECI1 IF EXPECTED RESPONSE
  3904. LMD RT
  3905. LMD MS
  3906. ZJN ECI1 IF EXPECTED STATUS
  3907. LMK CMCS&CMSS
  3908. ECI1 LJM 0,PA RETURN TO CALLER
  3909.  
  3910. * NO INTERRUPT FOUND - CHECK FOR REQUEST IN PROGRESS.
  3911.  
  3912. ECI2 LDDL PA
  3913. NJN ECI1 IF REQUEST IN PROGRESS
  3914. LDM ERFL
  3915. ZJN ECI3 IF DRIVER NOT IN ERROR PROCESSING
  3916. LMD DI
  3917. NJN ECI5 IF ERROR ON DIFFERENT DEVICE
  3918. ECI3 LDM SRSA
  3919. NJN ECI5 IF RESET IN PROGRESS
  3920. LDM CFFA
  3921. NJN ECI5 IF FORMAT IN PROGRESS
  3922. LDML CTST,CI CHECK CONTROLLER STATUS
  3923. SHN 21-16
  3924. MJN ECI6 IF INITIAL LOGICAL RESET NOT COMPLETE
  3925. LDN 0
  3926. ECI5 LJM ECIX RETURN
  3927.  
  3928. * PROCESS INITIAL LOGICAL RESET.
  3929.  
  3930. ECI6 RJM IDU INTERLOCK DISK UNIT
  3931. NJN ECI5 IF DEVICE ASSIGNED ELSEWHERE
  3932. LDC 1S16+CMP
  3933. LJM SRS INITIATE LOGICAL RESET
  3934. EDR SPACE 4,20
  3935. ** EDR - EXECUTE DRIVE (POWER ON) RESET.
  3936. *
  3937. * THIS MASTER CLEARS THE DRIVE(S), BREAKS AN OPPOSITE ACCESS
  3938. * RESERVE AND RUNS DIAGNOSTICS. IT IS ISSUED BY THE
  3939. * CONTROLLER EVEN IF THE DRIVE IS OFF-LINE OR NOT OPERATIONAL.
  3940. * IF A SLAVE RESET IS ISSUED AND AN ATTACHED DRIVE IS RESERVED
  3941. * TO ANOTHER CONTROLLER, THE CONTROLLER WILL REPORT THE DRIVE
  3942. * AS NOT OPERATIONAL.
  3943. *
  3944. * ENTRY (CN) = CONTROLLER NUMBER.
  3945. * (DD) = NUMBER OF DATA DRIVES IN DEVICE.
  3946. * (DN) = DRIVE NUMBER.
  3947. * (DI) = DEVICE STATE TABLE ADDRESS.
  3948. * (PD) = NUMBER OF PARITY DRIVES IN DEVICE.
  3949. *
  3950. * EXIT (PHYD,DI) IS NOT CHANGED.
  3951. *
  3952. * CALLS ATT, DDT, SRS, UPD, WCB.
  3953.  
  3954.  
  3955. EDR5 RJM UPD UPDATE PHYSICAL DRIVE ADDRESS
  3956. NJN EDR1 IF MORE PHYSICAL DRIVES IN LOGICAL UNIT
  3957. LDM EDRA
  3958. STM PHYD,DI RESTORE DRIVE NUMBER
  3959.  
  3960. EDR SUBR ENTRY/EXIT
  3961. LDM MSGL+1
  3962. SBN EMBF2L-1
  3963. MJN EDRX IF NO RESPONSE PACKET
  3964. LDM PHYD,DI
  3965. STM EDRA SAVE DRIVE NUMBER
  3966. LDD DN
  3967. STM PHYD,DI PHYSICAL DRIVE
  3968. EDR1 RJM DDT DETERMINE DRIVE TYPE
  3969. LDML DDTA TOTAL DRIVES IN LOGICAL UNIT
  3970. LMN 1
  3971. ZJN EDR3 IF 1X DRIVE
  3972. RJM ATT WAIT FOR COMPLETION RESPONSE
  3973. LDD DD
  3974. ADD PD
  3975. SBN 1
  3976. ZJN EDR2 IF 1X DRIVE CONFIGURED
  3977. LDM PHYD,DI
  3978. LPN 70B
  3979. NJP EDR5 IF RESET ALREADY ISSUED
  3980. EDR2 LDD CN
  3981. SHN 10
  3982. ADD DN
  3983. SCN 0#38
  3984. UJN EDR4 SAVE ADDRESS FOR COMMAND
  3985.  
  3986. EDR3 RJM ATT WAIT FOR COMPLETION RESPONSE
  3987. LDDL CN
  3988. SHN 10
  3989. ADM PHYD,DI
  3990. EDR4 STML CPBF+CUN LOGICAL ADDRESS
  3991. LDC C0800 ABORT COMMAND
  3992. STML CPBF+OPC
  3993. LDC P0254
  3994. STML CPBF+FCP
  3995. LDC 0#400 RESET AS AT POWER ON
  3996. STML CPBF+FCP+1
  3997. LDN 10D COMMAND PACKET LENGTH
  3998. RJM WCB COMMAND PACKET TRANSFER
  3999. LDN CMSS WAIT ON INTERRUPT
  4000. RJM ATT
  4001. LDC EDR5+1S16 RETURN ADDRESS/LOGICAL RESET
  4002. LJM SRS RESET IN CASE OF MULTIPLE RESPONSES
  4003.  
  4004.  
  4005. EDRA CON 0 FAILING DRIVE NUMBER
  4006. EIO SPACE 4,35
  4007. ** EIO - ENTER I/O REQUEST QUEUE.
  4008. *
  4009. * THIS ROUTINE SETS LINKAGE BITS IF THE REQUEST IS A READ.
  4010. * IT ALSO DELINKS COMPLETED BUFFERS FROM THE REQUEST QUEUE.
  4011. * ON READ REQUESTS, EACH BUFFER IS DELINKED IMMEDIATELY.
  4012. * ON WRITE REQUESTS, BUFFERS ARE ONLY DELINKED AFTER ENOUGH
  4013. * SUBSEQUENT SECTORS HAVE BEEN SENT TO THE CONTROLLER TO
  4014. * ENSURE THAT THE DATA HAS BEEN FLUSHED TO THE DISK (BASED
  4015. * ON THE FACT THAT THE CONTROLLER HAS AN INTERNAL BUFFER OF
  4016. * 128KB FOR EACH SPINDLE OF THE DEVICE).
  4017. *
  4018. * THIS ALGORITHM ENSURES THAT THE CURRENT CBT ORDINAL IN THE
  4019. * *PUT* WILL POINT TO THE SECTOR IN ERROR, WHEN AN ERROR IS
  4020. * ENCOUNTERED ON A WRITE REQUEST. SINCE (CB) IS ALWAYS RESET
  4021. * TO THE CURRENT CBT ORDINAL FROM THE *PUT* WHEN *LDP* IS
  4022. * CALLED, THIS ALLOWS CODE IN *ERR* TO ENSURE THAT THE CORRECT
  4023. * I/O REQUEST WILL BE RETRIED DURING ERROR PROCESSING.
  4024. *
  4025. * ENTRY (RW) = READ / WRITE STATUS.
  4026. * (CB) = CURRENT BUFFER ORDINAL.
  4027. * (DI) = DEVICE STATE TABLE ADDRESS.
  4028. * (DT) = DRIVE TYPE.
  4029. * (NB) = NEXT BUFFER ORDINAL.
  4030. *
  4031. * USES T1, WB+3, CM - CM+4.
  4032. *
  4033. * CALLS IMR, SLB.
  4034.  
  4035.  
  4036. EIO SUBR ENTRY/EXIT
  4037. LDD RW
  4038. NJN EIO2 IF WRITE OPERATION
  4039. LDD CB
  4040. RJM SLB SET LINKAGE BITS
  4041. LDD NB
  4042. ZJN EIO1 IF LAST BUFFER
  4043. LDN 1
  4044. UJN EIO3 DELINK AFTER ONE BUFFER READ
  4045.  
  4046. EIO1 LDN 2 LAST MONITOR REQUEST WILL DELINK AND
  4047. UJN EIO3 RELEASE UNIT INTERLOCK
  4048.  
  4049. EIO2 LDD DD CONTROLLER BUFFER IS 128K PER DATA DRIVE
  4050. SHN 3
  4051. ADN 2
  4052. EIO3 STD T1 DELINKING CRITERIA
  4053. LDML PSBF,DT
  4054. SHN -14
  4055. RAM CSCT,DI
  4056. AOM RQLN,DI ADVANCE ENTRY COUNT
  4057. LPC 3777
  4058. SBD T1
  4059. MJN EIO5 IF QUEUE NOT FULL
  4060. ADN 1
  4061. STD WB+3 NUMBER OF BUFFERS TO DELINK
  4062. SBN 14
  4063. PJN EIO4 IF TIME TO FORCE DELINK
  4064. LDD OA
  4065. CRD CM CHECK OUTPUT REGISTER
  4066. LDD CM
  4067. NJN EIO5 IF MONITOR REQUEST IN PROGRESS
  4068. EIO4 LDN DCBS
  4069. RJM IMR INITIATE MONITOR REQUEST
  4070. * LDN 0
  4071. SBD WB+3 ADJUST QUEUE ENTRY COUNT
  4072. RAM RQLN,DI
  4073. EIO5 UJP EIOX RETURN
  4074. EMP SPACE 4,15
  4075. ** EMP - ENABLE MMF PARITY DEVICE ACCESS.
  4076. *
  4077. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  4078. * (EO) = EST ORDINAL.
  4079. *
  4080. * EXIT (A) = 0, IF ALL PARTITIONS PROCESSED.
  4081. *
  4082. * USES CM+2, T4.
  4083. *
  4084. * CALLS CAB, CBB, CCI, CDS, CMR, CSN, LNE, UBP.
  4085. *
  4086. * MACROS SMSTF.
  4087.  
  4088.  
  4089. EMP6 LDC 10000 SET *MMF RESTORE / ACCESS DISABLED* FLAG
  4090. STDL T4
  4091. EMP7 LDML DVTP,DI CLEAR *ACCESS DISABLED*, *ACCESS ENABLED*,
  4092. LPC 163377 AND *RESTORE INITIATION*
  4093. LMDL T4 SET ACCESS ENABLED OR DISABLED FLAG
  4094. STML DVTP,DI
  4095. EMP8 LDC ** (COUNT OF UNPROCESSED PARTITIONS LEFT)
  4096. EMPB EQU *-1
  4097.  
  4098. EMP SUBR ENTRY/EXIT
  4099. LDN 0 CLEAR UNPROCESSED PARTITION COUNT
  4100. STM EMPB
  4101. RJM CMR CHECK MMF RESTORE FLAGS
  4102. MJN EMP8 IF RESTORE INITIATION IN PROGRESS
  4103. ZJN EMP1 IF NO RESTORE IN PROGRESS
  4104. LDM CMRA EST ORDINAL WITH RESTORE SET
  4105. RJM CSN COMPARE CONTROLLER SERIAL NUMBERS
  4106. NJN EMP6 IF RESTORE ON DIFFERENT CONTROLLER
  4107. LDC 4000 SET *MMF RESTORE / ACCESS ENABLED* FLAG
  4108. STD T4
  4109. UJN EMP7 SET FLAG AND EXIT
  4110.  
  4111. EMP1 LDN 0 CLEAR ACCESS ENABLED/DISABLED FLAG
  4112. STD T4
  4113. * LDN 0 INITIALIZE PARTITION SEARCH
  4114. EMP2 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
  4115. ZJN EMP7 IF NO MORE PARTITIONS
  4116. RJM CDS CHECK DEVICE STATUS
  4117. MJN EMP4 IF DEVICE NOT RECOVERED
  4118. RJM CBB CHECK BDLL *DISABLE ACCESS* BIT
  4119. PJN EMP3 IF BIT FOR THIS DRIVER ALREADY CLEAR
  4120. LDN 0 NEW VALUE
  4121. STD CM+2
  4122. LDD T1 BIT TO CHANGE
  4123. ADN 19D
  4124. RJM UBP CLEAR DISABLE ACCESS BIT IN *BDLL*
  4125. EMP3 RJM CAB CHECK ACGL *MMF PARITY DEVICE ACCESS* BIT
  4126. NJN EMP5 IF BIT FOR THIS MF IS ALREADY SET
  4127. SMSTF GPDA SET ACCESS FLAG BIT FOR THIS MF
  4128. EMPA EQU *-3 (BIT NUMBER FOR THIS MF)
  4129. UJN EMP5 PROCESS NEXT PARTITION
  4130.  
  4131. EMP4 AOM EMPB INCREMENT UNPROCESSED PARTITION COUNT
  4132. EMP5 LDD EO
  4133. UJP EMP2 PROCESS NEXT PARTITION
  4134. ERR SPACE 4,45
  4135. ** ERR - PROCESS ERRORS.
  4136. *
  4137. * ERROR PROCESSING FLOW IS CONTROLLED BY THE RETRY COUNT
  4138. * (ERCT,DI). EXAMPLE FLOW THROUGH RECOVERY FOR DRIVE ERROR-
  4139. *
  4140. * (ERCT,DI) COMMENT
  4141. * --------- ------------------------------------------------------
  4142. * 0 ENTER, LOGICAL RESET
  4143. * 1 ISSUE BML MESSAGE, EXIT
  4144. * 1 ENTER, LOGICAL RESET, DRIVE RESET
  4145. * 2 ISSUE BML MESSAGE, EXIT
  4146. * 2 ENTER, SLAVE RESET (OR LOGICAL RESET IF A DRIVE CAN BE
  4147. * OFF-LINE OR MEDIA ERROR)
  4148. * 3 ISSUE BML MESSAGE, EXIT
  4149. * 3 ENTER, LOGICAL RESET
  4150. * 4 ISSUE BML MESSAGE, SET SUSPECT STATE, EXIT
  4151. *
  4152. * THE REQUEST IS NOW CHANNEL SPECIFIC, AND IF DUAL ACCESS IS
  4153. * DEFINED, WILL BE FOR THE OTHER CHANNEL.
  4154. *
  4155. * 4 ENTER, LOGICAL RESET
  4156. * 5 ISSUE BML MESSAGE, EXIT
  4157. * 5 ENTER, LOGICAL RESET, DRIVE RESET
  4158. * 6 ISSUE BML MESSAGE, EXIT
  4159. * 6 ENTER, LOGICAL RESET
  4160. * 7 ISSUE BML MESSAGE, RUN DRIVE DIAGNOSTICS, EXIT
  4161. * 7 ENTER, LOGICAL RESET
  4162. * 8 IF NO DRIVE TO OFF-LINE OR THE OFF-LINE COMMAND
  4163. * FAILED, SET MISCELLANEOUS AND ISSUE THE FINAL BML
  4164. * MESSAGE. OTHERWISE, OFF-LINE THE FAILING DRIVE,
  4165. * SET ERCT TO 0, AND EXIT.
  4166. *
  4167. * NOTE - IF THE REQUEST STARTS OUT AS A CHANNEL-SPECIFIC
  4168. * REQUEST (E.G. A *1MV* I/O REQUEST), ALL RETRIES WILL
  4169. * BE DONE ON THIS CHANNEL.
  4170. *
  4171. * NOTE - IF AN ERROR OCCURS ON AN I/O REQUEST DURING A
  4172. * RESTORE, ALL RETRIES WILL BE DONE ON THIS CHANNEL.
  4173. * IF THE ERROR IS UNRECOVERABLE, I/O REQUESTS AND
  4174. * SPECIAL REQUESTS WILL BE DISABLED FOR THE DRIVE
  4175. * UNTIL THE RESTORE COMPLETES.
  4176. *
  4177. * ENTRY (A) = FAULT ANALYSIS CODE.
  4178. * (CI) = CONTROLLER STATE TABLE ADDRESS.
  4179. * (DI) = DEVICE STATE TABLE ADDRESS.
  4180. * (DN) = DRIVE NUMBER.
  4181. *
  4182. * EXIT TO *DAS1* TO RETRY REQUEST.
  4183. * TO *CMP2* AFTER SUSPECT STATE SET.
  4184. * TO *CMP1* IF RETRIES COMPLETE AND UNRECOVERABLE SET.
  4185. * TO *CMP10* IF ERROR IN PROGRESS ON DIFFERENT DEVICE.
  4186. *
  4187. * USES RW, T1 - T5.
  4188. *
  4189. * CALLS CBC, CMC, CRF, DCA, EDR, EUI, GBM, ICR, IDM, IEM, IOM,
  4190. * LDP, RCR, RND, SCD, SDO, SEC, SEP, SRS, SSS, WAC.
  4191. *
  4192. * MACROS CBTE.
  4193.  
  4194.  
  4195. ERR CON 0 ENTRY
  4196. PJN ERR1 IF NO RESPONSE PACKET
  4197. LMC 767777
  4198. ERR1 STD T4 SAVE FAULT CODE
  4199. SHN 0-14
  4200. STD T1 SET RESPONSE PACKET STATUS
  4201. RJM EUI ENSURE UNIT INTERLOCKED
  4202. LDM ERPA CHECK IF ERROR PROCESSING ALREADY ACTIVE
  4203. ZJN ERR1.1 IF ERROR PROCESSING NOT ACTIVE
  4204. LMD DI
  4205. NJN ERR2 IF ACTIVE ON DIFFERENT DEVICE
  4206. ERR1.1 LDD DI SET ERROR PROCESSING ACTIVE FLAG
  4207. STM ERPA
  4208. LDM SRSA
  4209. ZJN ERR4 IF NO RESET IN PROGRESS
  4210. LMD DI
  4211. ZJN ERR3 IF THIS UNIT CONTROLLING RESET
  4212. ERR2 LJM CMP10 ABANDON REQUEST (RETRY LATER)
  4213.  
  4214. ERR3 RJM CRF CLEAR RESET FLAGS
  4215. LDM RWST,DI
  4216. NJN ERR4 IF NOT SLAVE RESET
  4217. LDC ERRF+100000 *EQXXX, UXX, CMX RESET FAILURE.*
  4218. RJM IEM ISSUE ERRORLOG MESSAGE
  4219. LDN 0 CLEAR OPERATOR MESSAGE
  4220. RJM IOM
  4221. RJM DCA DISABLE CONTROLLER ACTIVITY
  4222. ERR4 LDN 0 CLEAR CHANNEL ACTIVE
  4223. RJM SCD
  4224. LDC ** (ZERO IF NEW PASS THROUGH ERROR PROCESSING)
  4225. ERRA EQU *-1
  4226. NJP ERR11 IF NOT NEW PASS THROUGH ERROR PROCESSING
  4227. AOM ERRA INDICATE STATUS SAVED
  4228. LDM ERCT,DI
  4229. SBN SRRC
  4230. ZJN ERR6 IF ERROR MIGHT BE FROM SLAVE RESET
  4231. LDM RWST,DI
  4232. STM IOST,DI SAVE READ/WRITE STATUS
  4233. ERR6 LDD DN SET DEFAULT FAILING DRIVE (MAY BE CHANGED
  4234. STM PHYD,DI LATER IF A RESPONSE IS PRESENT)
  4235. LCN 0
  4236. STM EDBF+FCS2 NO RESPONSE PACKET FOR *HPA*
  4237. LDD T4 INSERT INITIAL FAULT CODE
  4238. STM EDBF+CODE
  4239. STM EDBF+FALT PRESET FINAL FAULT CODE
  4240.  
  4241. * GENERATE BML MESSAGE. ON A *CONDITIONAL SUCCESS* ERROR,
  4242. * REENTER CALLING ROUTINE TO COMPLETE PROCESSING REQUEST.
  4243.  
  4244. RJM GBM GENERATE BML MESSAGE
  4245.  
  4246. * RELOAD DEVICE PARAMETERS AND CLEAR BUFFER COUNT. IF AN ERROR
  4247. * OCCURS WHILE STREAMING WRITE REQUESTS, THIS ENSURES THAT (CB)
  4248. * POINTS TO THE REQUEST IN ERROR, AND THAT NO ADDITIONAL WRITE
  4249. * REQUESTS WILL BE DELINKED. SEE DOCUMENTATION IN *EIO*.
  4250.  
  4251. RJM LDP RELOAD DEVICE PARAMETERS
  4252. RJM CBC CLEAR BUFFER COUNT
  4253.  
  4254. * SET ERROR PROCESSING INTERLOCK.
  4255.  
  4256. RJM SEP SET ERROR PROCESSING INTERLOCK
  4257. NJP CMP10 IF ERROR IN PROGRESS ON A DIFFERENT DEVICE
  4258. LDN 0 CLEAR *FORMAT IN PROGRESS* FLAG
  4259. STM CFFA
  4260. LDML CTST,CI
  4261. SHN 21-15
  4262. PJN ERR7 IF CONTROLLER STILL FUNCTIONAL
  4263. LDN 1
  4264. STM CPEA INDICATE NO DRIVE TO OFF-LINE
  4265. UJN ERR14 SLAVE RESET FAILED
  4266.  
  4267. * ALLOW ACTIVITY ON OTHER DRIVES TO COMPLETE BEFORE ISSUING
  4268. * THE RESET.
  4269.  
  4270. ERR7 RJM WAC WAIT FOR OTHER ACTIVITY TO COMPLETE
  4271. RJM ICR ISSUE CONTROLLER RESET
  4272. * UJN ERR12 (IF RESET SUCCESSFUL)
  4273. UJN ERR14 RESET FAILED
  4274.  
  4275. * REENTER HERE IF ERROR WHILE ATTEMPTING HARDWARE RECOVERY.
  4276.  
  4277. ERR11 RJM RCR RESET CHANNEL REGISTERS
  4278. UJN ERR14 SET RECOVERY FAULT CODE
  4279.  
  4280. ERR12 LDM ERCT,DI CHECK RETRY COUNT
  4281. SBN 1
  4282. ZJN ERR13 IF TIME FOR DRIVE RESET
  4283. SBN MERC-CSRC
  4284. NJN ERR14 IF NOT TIME FOR DRIVE RESET
  4285. ERR13 RJM EDR EXECUTE DRIVE RESET
  4286. ERR14 LDN 0
  4287. STM EDBF+FCS3 SET RECOVERY FAULT CODE
  4288. LDM IOST,DI
  4289. STM RWST,DI RESTORE READ/WRITE STATUS
  4290. STD RW
  4291. LDM ERCT,DI CHECK ERROR COUNT
  4292. SBN MERC-1
  4293. MJN ERR15 IF NOT TIME TO OFF-LINE DRIVE
  4294. RJM SDO SET DRIVE OFF-LINE
  4295. RJM SEC SET ERROR CODE IN *CBT*
  4296. AOM MISC MARK ERROR UNRECOVERED
  4297. LJM CMP1 COMPLETE PROCESSING
  4298.  
  4299. ERR15 AOM ERCT,DI
  4300. LDD HN
  4301. ERRNZ HD0100-100 CODE DEPENDS ON VALUE
  4302. RJM IDM ISSUE MESSAGE
  4303. LDML CTST,CI
  4304. SHN 21-15
  4305. MJN ERR16 IF CONTROLLER DEAD
  4306. LDM ERCT,DI
  4307. SBN MERC-1
  4308. NJN ERR16 IF NOT TIME TO RUN DIAGNOSTICS
  4309. RJM RND RUN DRIVE DIAGNOSTICS
  4310. ERR16 LDM SREQ,DI
  4311. NJP ERR19 IF SPECIAL REQUEST
  4312. LDD FC
  4313. ZJP ERR19 IF FORMAT NOT COMPLETE
  4314. LDM RSDI CHECK IF RESTORE IN PROGRESS
  4315. LMD DI
  4316. NJN ERR17 IF NO RESTORE IN PROGRESS ON THIS DEVICE
  4317. LDM RMUX
  4318. ZJN ERR18 IF CURRENTLY RESTORING A CYLINDER
  4319. ERR17 LDM ERCT,DI
  4320. LMN CSRC
  4321. NJN ERR18 IF NOT TIME FOR CHANNEL SWAP
  4322. LDD CB
  4323. ZJN ERR17.1 IF NO I/O BUFFER
  4324. SHN CBTLS
  4325. CBTE *
  4326. ADC HSLK GET CHANNEL SELECT STATUS
  4327. CRD T1
  4328. LDD T1
  4329. SHN 0-12
  4330. LMN 1
  4331. ZJN ERR19 IF REQUEST ALREADY CHANNEL-SPECIFIC
  4332. ERR17.1 UJP ERR20 SET SUSPECT STATE
  4333.  
  4334. ERR18 LDM EDBF+CODE
  4335. LMN EROD
  4336. NJN ERR19 IF NOT RESTORE
  4337. LDM EDBF+FALT
  4338. LMN EDPE
  4339. NJN ERR19 IF NOT MEDIA ERROR
  4340.  
  4341. * IF THE RETRY LIMIT FOR SKIPPING MEDIA ERRORS DURING A
  4342. * RESTORE IS CHANGED, CODE IN *GBM* MUST ALSO BE CHANGED.
  4343.  
  4344. LDML ERCT,DI
  4345. SBN 2
  4346. ZJP CMP IF MEDIA RETRY LIMIT FOR RESTORE
  4347. ERR19 RJM CMC CHECK MONITOR COMPLETE
  4348. * LDN 0
  4349. STM ADDR,DI CLEAR REENTRY ADDRESS
  4350. STM ATTN,DI CLEAR INTERRUPT ADDRESS
  4351. STM CSCT,DI CLEAR CUMULATIVE SECTOR COUNT
  4352. STM SREQ,DI CLEAR SPECIAL REQUEST FLAG
  4353. STM ERRA ENABLE NEXT PASS THROUGH ERROR PROCESSOR
  4354. LDD RF
  4355. NJN ERR19.2 IF RESET FAILURE
  4356. ERR19.1 LJM DAS1 RETURN TO MAIN LOOP
  4357.  
  4358. ERR19.2 LDML CTST,CI
  4359. SHN 21-15
  4360. MJN ERR19.1 IF CONTROLLER DEAD
  4361. LDC 1S16+DAS1 RETURN ADDRESS
  4362. LJM SRS ISSUE LOGICAL RESET
  4363.  
  4364. ERR20 RJM SSS SET SUSPECT STATE ON DEVICE
  4365. RJM SEC SET ERROR CODE IN *CBT*
  4366. LJM CMP2 COMPLETE PROCESSING
  4367.  
  4368.  
  4369. ERPA CON 0 ERROR PROCESSING ACTIVE FLAG (*DST* INDEX)
  4370. EUI SPACE 4,15
  4371. ** EUI - ENSURE UNIT INTERLOCKED.
  4372. *
  4373. * IF AN INTERRUPT IS PRESENT AND A CHANNEL ERROR OCCURS WHILE
  4374. * READING THE RESPONSE, (DI) MIGHT BE FOR A UNIT THAT IS NOT
  4375. * INTERLOCKED.
  4376. *
  4377. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  4378. *
  4379. * EXIT (DI) = DEVICE ADDRESS OF INTERLOCKED UNIT.
  4380. * TO *CMP7* IF NO INTERLOCKED UNIT.
  4381. *
  4382. * USES DI.
  4383. *
  4384. * CALLS LDP, LND, RCR.
  4385.  
  4386.  
  4387. EUI SUBR ENTRY/EXIT
  4388. LDM RQLN,DI
  4389. SHN 0-13
  4390. NJN EUIX IF UNIT INTERLOCKED
  4391. STML ADDR,DI CLEAR REENTRY ADDRESS
  4392. STML ATTN,DI CLEAR INTERRUPT ADDRESS
  4393. * LDN 0 LOCATE FIRST DRIVE
  4394. EUI1 RJM LND LOCATE NEXT DRIVE
  4395. ZJN EUI2 IF NO MORE DRIVES ON CONTROLLER
  4396. LDM RQLN,T7
  4397. SHN 0-13
  4398. LMN 1
  4399. NJN EUI1 IF UNIT NOT INTERLOCKED
  4400. LDD T7
  4401. STD DI
  4402. RJM LDP LOAD DEVICE PARAMETERS
  4403. UJN EUIX RETURN
  4404.  
  4405. EUI2 RJM RCR RESET CHANNEL REGISTERS
  4406. LJM CMP7 COMPLETE REQUEST
  4407. FFD SPACE 4,15
  4408. ** FFD - FIND FAILING DRIVE.
  4409. *
  4410. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  4411. *
  4412. * EXIT (FFDA) = 0 IF FAILING DRIVE.
  4413. * (PHYD,DI) = FAILING DRIVE.
  4414. *
  4415. * USES T3.
  4416. *
  4417. * CALLS SRP.
  4418.  
  4419.  
  4420. FFD SUBR ENTRY/EXIT
  4421. LDM EDBF+FALT
  4422. SBN EMME
  4423. ZJN FFD1 IF RESPONSE PRESENT
  4424. SBN EIVR-EMME
  4425. ZJN FFD1 IF RESPONSE PRESENT
  4426. SBN EMEX-EIVR
  4427. NJP FFD7 IF NO RESPONSE PACKET
  4428. FFD1 LDK ID23
  4429. RJM SRP SEARCH RESPONSE PACKET
  4430. MJN FFD2 IF ID23 NOT FOUND
  4431. LDML RPBF+5,T3
  4432. SHN -10
  4433. SBN 6
  4434. PJN FFD4 IF FAILING DRIVE FOUND
  4435. FFD2 LDK ID24
  4436. RJM SRP SEARCH RESPONSE PACKET
  4437. MJN FFD3 IF ID24 NOT FOUND
  4438. LDML RPBF+5,T3
  4439. SHN -10
  4440. SBN 7
  4441. MJN FFD3 IF NO FAILING DRIVE
  4442. LDML RPBF+5+3,T3
  4443. UJN FFD5 CHECK FOR PHYSICAL DRIVE NUMBER
  4444.  
  4445. FFD3 LDK ID26
  4446. RJM SRP SEARCH RESPONSE PACKET
  4447. MJN FFD7 IF ID26 NOT FOUND
  4448. LDML RPBF+5,T3
  4449. SHN -10
  4450. SBN 10
  4451. MJN FFD7 IF NO FAILING DRIVE
  4452. AOD T3
  4453. FFD4 LDML RPBF+5+3,T3
  4454. SHN -10
  4455. FFD5 LPC 377
  4456. LMC 0#FE
  4457. ZJN FFD7 IF NO PHYSICAL DRIVE NUMBER
  4458. LMC 0#FE
  4459. STM PHYD,DI SAVE FAILING DRIVE NUMBER
  4460. LDML RPBF+OPC
  4461. LMC C0209
  4462. ZJN FFD7 IF COMMAND THAT OFF-LINES A DRIVE
  4463. LDN 0
  4464. FFD6 STM FFDA
  4465. UJP FFDX RETURN
  4466.  
  4467. FFD7 LDN 1
  4468. UJN FFD6 RETURN
  4469.  
  4470.  
  4471. FFDA CON 0
  4472. FMU SPACE 4,15
  4473. ** FMU - FORMAT UNIT.
  4474. *
  4475. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  4476. * (PHYD,DI) = THE PHYSICAL DRIVE TO FORMAT.
  4477. * (DD) = NUMBER OF DATA DRIVES IN DEVICE.
  4478. * (DT) = DRIVE TYPE.
  4479. * (FC) = FORMAT COMPLETE FLAG.
  4480. *
  4481. * EXIT TO *ERR* IF ERROR.
  4482. *
  4483. * CALLS ATT, C2D, IEM, IOM, SFP, WCB.
  4484.  
  4485.  
  4486. FMU SUBR ENTRY/EXIT
  4487. LDC ERFI *EQXXX, UXX, FORMAT INITIATED.*
  4488. RJM IEM ISSUE ERROR LOG MESSAGE
  4489. LDM PHYD,DI
  4490. RJM C2D PUT UNIT NUMBER IN MESSAGE
  4491. STM FMUA+4
  4492. LDD EO
  4493. RJM C2D CONVERT EST ORDINAL
  4494. STM FMUA+2
  4495. LDD EO
  4496. SHN -6 SET ORDINAL IN MESSAGE
  4497. ADC 2RQ0
  4498. STM FMUA+1
  4499. LDC FMUA
  4500. RJM IOM ISSUE OPERATOR MESSAGE
  4501.  
  4502. * FORMAT THE DIAGNOSTIC CYLINDER.
  4503.  
  4504. RJM SFP SET COMMON FORMAT PARAMETERS
  4505. LDC 0#1DF
  4506. STML CPBF+FCP+3 FORMAT THE DIAGNOSTIC CYLINDER
  4507. LDD DT DRIVE TYPE
  4508. IFNE EQEA,0,2
  4509. SBN EQEA
  4510. MJN FMU0 IF NOT 5832
  4511. SBN EQEC-EQEA
  4512. MJN FMU1 IF 5832
  4513. FMU0 LDN 0#E COMMAND PACKET LENGTH
  4514. RJM WCB WRITE COMMAND PACKET
  4515. LDN CMSS
  4516. RJM ATT PROCESS ATTENTION
  4517. NJN FMU1.2 IF NOT SUCCESSFUL
  4518.  
  4519. * FORMAT THE DATA CYLINDERS.
  4520.  
  4521. FMU1 RJM SFP SET COMMON FORMAT PARAMETERS
  4522. LDML FC
  4523. NJN FMU2 IF DRIVE CLUSTERED
  4524. LDC 0#7DD FACTORY FORMAT PARAMETER
  4525. STML CPBF+FCP+3
  4526. LDD DD
  4527. STML CPBF+FCP+4 DATA DRIVES PER LOGICAL UNIT
  4528. LDN 0
  4529. STML CPBF+FCP+5 UPPER BYTES OF SECTOR SIZE
  4530. LDML BPS,DT BYTES PER SECTOR
  4531. SCN 77
  4532. STML CPBF+FCP+6
  4533. LDN 0#14 COMMAND PACKET LENGTH
  4534. UJN FMU3 WRITE COMMAND PACKET
  4535.  
  4536. FMU1.2 LCN EFDF FORMAT DRIVE FAILURE
  4537. RJM ERR PROCESS ERROR
  4538.  
  4539. FMU2 LDC 0#53B
  4540. STML CPBF+FCP+3 LOGICAL SECTOR SIZE
  4541. LDN 0
  4542. STML CPBF+FCP+4 UPPER BYTES OF SECTOR SIZE
  4543. LDML BPS,DT
  4544. SCN 77
  4545. STML CPBF+FCP+5
  4546. LDN 0#12 COMMAND PACKET LENGTH
  4547. FMU3 RJM WCB WRITE COMMAND PACKET
  4548. LDN CMSS
  4549. RJM ATT PROCESS ATTENTION
  4550. NJN FMU1.2 IF ERROR
  4551. * LDN 0 CLEAR OPERATOR MESSAGE
  4552. RJM IOM
  4553. LDC ERFC *EQXXX, UXX, FORMAT COMPLETE.*
  4554. RJM IEM ISSUE ERROR LOG MESSAGE
  4555. UJP FMUX RETURN
  4556.  
  4557.  
  4558. FMUA DATA C* EQ000 U00 FORMATTING.*
  4559. GBM SPACE 4,35
  4560. ** GBM - GENERATE BML MESSAGE.
  4561. *
  4562. * THIS ROUTINE GENERATES THE ERROR MESSAGE FOR SYMPTOM 100 OR
  4563. * 111. IF THE ERROR IS A MEDIA ERROR, THE RETRY COUNT IS ONE,
  4564. * AND THE COMMAND IS READ OR WRITE, THE TRACK FLAW WILL BE SET
  4565. * IN THE MST. IF THE ERROR IS A MEDIA ERROR, THE RETRY COUNT
  4566. * IS ONE, AND THE COMMAND IS A RESTORE, THE CYLINDER, TRACK,
  4567. * AND SECTOR VALUES WILL BE UPDATED TO POINT TO THE SECTOR
  4568. * AFTER THE ONE WITH THE MEDIA ERROR, SO THE NEXT RESTORE
  4569. * COMMAND WILL END UP SKIPPING THE MEDIA DEFECT.
  4570. *
  4571. * ENTRY (T1) .NE. 0 IF RESPONSE PACKET PRESENT.
  4572. * (DI) .EQ. DEVICE STATE TABLE ADDRESS.
  4573. * (DT) .EQ. DEVICE TYPE.
  4574. *
  4575. * EXIT TO *DAS1* IF CONDITIONAL SUCCESS. THE CONTROLLER
  4576. * RETURNS AN ASYNCHRONOUS RESPONSE WITH A PARAMETER 29
  4577. * FOR EACH PHYSICAL DRIVE OF THE LOGICAL UNIT THAT IT
  4578. * PERFORMED RECOVERY ON. IT THEN RETURNS A COMMAND
  4579. * COMPLETION RESPONSE. THIS ROUTINE LOGS THE
  4580. * ASYNCHRONOUS RESPONSE TO THE BML, THEN EXITS TO THE
  4581. * MAIN LOOP, *DAS*. SINCE (ATTN,DI) AND (ADDR,DI) ARE
  4582. * STILL SET EXPECTING THE COMMAND COMPLETION RESPONSE,
  4583. * WHEN THE COMMAND COMPLETION RESPONSE IS RECEIVED,
  4584. * THE CODE IN *PIO* WILL GO TO *CMP* AND LOG A
  4585. * RECOVERED ERROR. HOWEVER, IF THE ERROR COUNT
  4586. * REACHES THE MAXIMUM VALUE WHEN PROCESSING A
  4587. * CONDITIONAL SUCCESS, IT WILL BE TREATED AS A
  4588. * NORMAL ERROR.
  4589. *
  4590. * USES PA, T2 - T7.
  4591. *
  4592. * CALLS ACE, CCO, FFD, IDM, RCR, RMR, RTR, SMD, SRP, STF, UHD.
  4593.  
  4594.  
  4595. GBM SUBR ENTRY/EXIT
  4596. LDM CSCT,DI
  4597. STM EDBF+STCT SECTORS TRANSFERRED
  4598. LDM CYLN,DI SET SEEK ADDRESS - CYLINDER
  4599. STM EDBF+ICYL
  4600. LDM TKSN,DI SEEK ADDRESS - TRACK AND SECTOR
  4601. STM EDBF+ITAS
  4602. LDML LCMD,DI SET LAST COMMAND
  4603. STML EDBF+LSCC
  4604. LDML GSSA EXECUTION (ENDING) STATUS
  4605. STML EDBF+EXST
  4606. LDML ERR ERROR RECOVERY ENTRY ADDRESS
  4607. STML EDBF+EREA
  4608. GBM1 LDDL LF SAVE LAST CHANNEL FUNCTION
  4609. STML EDBF+LCFN
  4610. SCF. GBM1,MR ACQUIRE MAINTENANCE CHANNEL ACCESS
  4611. LDN ZERL
  4612. CRML RBUF,ON CLEAR BUFFER IN CASE OF ERROR
  4613. SBN 1
  4614. CRML RBUF+4,ON
  4615. RJM RMR READ CHANNEL STATUS REGISTER
  4616. DCN. MR+40
  4617. CCF. *+2,MR CLEAR MAINTENANCE CHANNEL FLAG
  4618. LDN 0
  4619. STD T2 INITIALIZE INDEX
  4620. RJM ACE ANALYZE CHANNEL ERROR
  4621. STML EDBF+FCS1 SAVE CHANNEL STATUS
  4622. LDC EDBF+CREG
  4623. STDL T5 SET ERROR BUFFER ADDRESS
  4624. GBM2 LDM RBUF,T2
  4625. SHN 10 PACK 8-BIT DATA
  4626. LMM RBUF+1,T2
  4627. STIL T5
  4628. AODL T5 ADVANCE ADDRESS
  4629. LDN 2
  4630. RAD T2 INCREMENT INDEX
  4631. LMN RBUFL
  4632. NJN GBM2 IF MORE REGISTER DATA
  4633. RJM RTR READ T REGISTER
  4634. LDK RTEDL
  4635. STD T4 SET LENGTH OF DATA
  4636. LDC EDBF
  4637. STDL T2 SOURCE DATA ADDRESS
  4638. ADK EMBF1
  4639. RJM UHD UNPACK HEX DATA
  4640. ADN EMBFS
  4641. STM MSGL+1 MESSAGE LENGTH INCLUDING NON-HEX DATA
  4642. LDD T1
  4643. ZJN GBM3 IF NO RESPONSE PACKET PRESENT
  4644.  
  4645. * PUT RESPONSE IN BML.
  4646.  
  4647. LDC RPBF
  4648. STDL T2 SET SOURCE DATA ADDRESS
  4649. LDIL T2
  4650. ADN 3 CALCULATE STATUS BLOCK LENGTH
  4651. SHN -1
  4652. SBK RPBFL
  4653. MJN GBM2.1 IF LESS THAN MAXIMUM SIZE
  4654. LDN 0
  4655. GBM2.1 ADK RPBFL
  4656. STD T4
  4657. LDC EDBF+EMBF2 CONVERT STATUS TO 12 BIT DATA
  4658. RJM UHD MOVE RESPONSE PACKET TO BML MESSAGE
  4659. RAM MSGL+1 INCREASE LENGTH TO INCLUDE RESPONSE
  4660. LDN 0
  4661. STM EDBF+FCS2 RESPONSE PACKET PRESENT FOR *HPA*
  4662.  
  4663. * CONVERT MAJOR STATUS TO INDEX.
  4664.  
  4665. LDDL MS UNPACK BUS A FLAGS
  4666. SHN -10
  4667. STD T2
  4668. LDD MS BUS B SUBSTATUS FLAGS
  4669. LPN 7
  4670. SHN 10 COMBINE FLAGS IN ORDER
  4671. RAD T2
  4672. GBM3 ZJP GBM27 IF NO SUBSTATUS
  4673. LCN 0
  4674. STD T3
  4675. GBM4 AOD T3 ADVANCE INDEX
  4676. LDD T2
  4677. SHN 21-0 CONVERT FLAG POSITION TO INDEX
  4678. STD T2
  4679. PJN GBM4 IF BIT NOT SET
  4680. LDML GBMA,T3
  4681. STDL PA SET PROCESSOR ADDRESS
  4682. LJM 0,PA EXIT TO PROCESSOR
  4683.  
  4684. * RESERVED SUBSTATUS (PID = X0 AND X1).
  4685.  
  4686. GBM5 LDN ERSS
  4687. UJN GBM11 SET FINAL FAULT CODE
  4688.  
  4689. * DEFECT MANAGEMENT (PID = X2).
  4690.  
  4691. GBM6 LDN EDFM
  4692. UJN GBM11 SET FINAL FAULT CODE
  4693.  
  4694. * MESSAGE / MICROCODE EXCEPTION (PID = X3).
  4695.  
  4696. GBM7 LDN EMME
  4697. UJN GBM11 SET FINAL FAULT CODE
  4698.  
  4699. * INTERVENTION REQUIRED (PID = X4).
  4700.  
  4701. GBM8 LDN ID24
  4702. RJM SRP SEARCH RESPONSE PACKET
  4703. PJN GBM10 IF ID24 FOUND
  4704. GBM9 LDN EIVR
  4705. UJN GBM11 SET FINAL FAULT CODE
  4706.  
  4707. GBM10 LDML RPBF+5+1,T3
  4708. SHN 21-11
  4709. PJN GBM9 IF NOT FACILITY BUSY
  4710. LDN EDRE
  4711. GBM11 LJM GBM26 SET FINAL FAULT CODE
  4712.  
  4713. * ALTERNATE PORT EXCEPTION (PID = X5).
  4714.  
  4715. GBM12 LDN EAPR
  4716. UJN GBM11 SET FINAL FAULT CODE
  4717.  
  4718. * MACHINE EXCEPTION (PID = X6).
  4719.  
  4720. GBM13 LDN ID26 SEARCH FOR DRIVE SUBSTATUS
  4721. RJM SRP
  4722. ZJN GBM15 IF SUBSTATUS FOUND
  4723. GBM14 LDN 0 DO NOT ISSUE SPECIAL BML MESSAGE
  4724. RJM CCO CHECK FOR CONTROLLER OVER TEMPERATURE
  4725. LDN EMEX
  4726. LJM GBM26 SET FINAL FAULT CODE
  4727.  
  4728. GBM15 LDML RPBF+5,T3 CHECK LENGTH OF PARAMETER
  4729. SHN -10
  4730. SBN 0#10+1
  4731. MJN GBM14 IF NO EXTENDED SUBSTATUS
  4732. LDML RPBF+5+4,T3
  4733. SHN -10
  4734. LMC 0#FE
  4735. ZJN GBM16 IF NO PHYSICAL DRIVE NUMBER
  4736. LMC 0#FE
  4737. STM PHYD,DI FAILING PHYSICAL DRIVE
  4738. GBM16 LDM RPBF+15,T3
  4739. LPN 77 EXAMINE COMMAND ENDING STATUS
  4740. SBN 0#11
  4741. ZJN GBM17 IF ECC ERROR
  4742. SBN 0#13-0#11
  4743. ZJN GBM17 IF MISSING SYNC
  4744. SBN 0#19-0#13
  4745. NJP GBM14 IF NOT SECTOR NOT FOUND ERROR
  4746. GBM17 LDML RPBF+OPC
  4747. SHN -14
  4748. SBN 1
  4749. ZJN GBM18 IF READ
  4750. SBN 1
  4751. ZJN GBM18 IF WRITE
  4752. SBN 14
  4753. NJP GBM14 IF NOT RESTORE (NOT MEDIA ERROR)
  4754. GBM18 LDM ERCT,DI
  4755. LMN 1
  4756. NJN GBM19 IF NOT FIRST RETRY
  4757. LDM RPBF+12,T3
  4758. STD T4 SET CYLINDER IN ERROR
  4759. GBM18.1 SBM MC,DT CHECK FOR MAINTENANCE CYLINDER
  4760. ZJN GBM19 IF NOT IN USER AREA
  4761. SBN 1
  4762. PJN GBM18.1 IF MORE TO CHECK
  4763. LDML CFS,DT
  4764. SHN -14
  4765. ADK SHNI
  4766. STM GBMB
  4767. LDML RPBF+13,T3
  4768. LPN 77
  4769. STD T6 PHYSICAL SECTOR
  4770. GBMB SHN ** CONVERT PHYSICAL TO LOGICAL
  4771. STD T7 LOGICAL SECTOR WITHIN PHYSICAL TRACK
  4772. LDML RPBF+13,T3
  4773. SHN -10
  4774. STD T5 PHYSICAL TRACK
  4775. RJM SMD SKIP MEDIA DEFECT
  4776. NJN GBM19 IF RESTORE
  4777. RJM STF INSERT TRACK FLAW IN MST
  4778. GBM19 LDN EDPE
  4779. UJN GBM22 SET FINAL FAULT CODE
  4780.  
  4781. * COMMAND EXCEPTION (PID = X7).
  4782.  
  4783. GBM20 LDN ECEX
  4784. UJN GBM22 SET FINAL FAULT CODE
  4785.  
  4786. * COMMAND ABORTED (PID = X8).
  4787.  
  4788. GBM21 LDN ECMA
  4789. GBM22 LJM GBM26 SET FINAL FAULT CODE
  4790.  
  4791. * COMMAND CONDITIONALLY SUCCESSFUL (PID = X9).
  4792.  
  4793. GBM23 LDN ECCS
  4794. STML EDBF+FALT SET FAULT CODE
  4795. LDN ID29
  4796. RJM SRP SEARCH RESPONSE PACKET
  4797. MJN GBM24 IF ID29 NOT FOUND
  4798. LDML RPBF+5,T3
  4799. SHN -10
  4800. SBN 6
  4801. MJN GBM24 IF NO FAILING DRIVE
  4802. LDML RPBF+5+3,T3
  4803. SHN -10
  4804. LMC 0#FE
  4805. ZJN GBM24 IF NO FAILING DRIVE NUMBER
  4806. LMC 0#FE
  4807. STM PHYD,DI FAILING DRIVE NUMBER
  4808. GBM24 LDN 0
  4809. STM EDBF+FCS3
  4810. LDM ERCT,DI CHECK ERROR COUNT
  4811. SBN MERC-1
  4812. MJN GBM24.1 IF MAXIMUM ERROR COUNT NOT REACHED
  4813. LDN ECCS
  4814. UJN GBM26 SET FINAL FAULT CODE
  4815.  
  4816. * ISSUE BML MESSAGE AND RETURN TO MAIN LOOP. THIS ALLOWS
  4817. * A REENTRY BASED ON THE VALUES OF (ATTN,DI) AND (ADDR,DI).
  4818.  
  4819. GBM24.1 AOM ERCT,DI INCREMENT ERROR COUNT
  4820. LDD HN
  4821. ERRNZ HD0100-100 CODE DEPENDS ON VALUE
  4822. RJM IDM ISSUE MESSAGE
  4823. LDN 0
  4824. STM ERPA CLEAR ERROR PROCESSING ACTIVE FLAG
  4825. STM ERRA ENABLE NEXT PASS THROUGH ERROR PROCESSOR
  4826. LJM DAS1 RETURN TO MAIN LOOP
  4827.  
  4828. * COMMAND INCOMPLETE (PID = XA).
  4829.  
  4830. GBM25 LDN ECIC
  4831. * LJM GBM26 SET FINAL FAULT CODE
  4832.  
  4833. * COMPLETE ERROR PROCESSING.
  4834.  
  4835. GBM26 STML EDBF+FALT SET FINAL FAULT CODE
  4836. GBM27 RJM RCR RESET CHANNEL
  4837. RJM FFD FIND FAILING DRIVE
  4838. LJM GBMX RETURN
  4839.  
  4840.  
  4841. GBMA BSS 0 SUBSTATUS PROCESSORS
  4842. CONL GBM5 RESERVED
  4843. CONL GBM5 RESERVED
  4844. CONL GBM6 DEFECT MANAGEMENT
  4845. CONL GBM7 MESSAGE / MICROCODE EXCEPTION
  4846. CONL GBM8 INTERVENTION REQUIRED
  4847. CONL GBM12 ALTERNATE PORT EXCEPTION
  4848. CONL GBM13 MACHINE EXCEPTION
  4849. CONL GBM20 COMMAND EXCEPTION
  4850. CONL GBM21 COMMAND ABORTED
  4851. CONL GBM23 COMMAND CONDITIONALLY SUCCESSFUL
  4852. CONL GBM25 COMMAND INCOMPLETE
  4853. GCA SPACE 4,15
  4854. ** GCA - GET CURRENT *ACGL*.
  4855. *
  4856. * ENTRY (EO) = EST ORDINAL.
  4857. *
  4858. * EXIT (CM - CM+4) = *ACGL* WORD FROM *MST*.
  4859. *
  4860. * USES CM - CM+4.
  4861. *
  4862. * CALLS REE.
  4863. *
  4864. * MACROS MONITOR.
  4865.  
  4866.  
  4867. GCA SUBR ENTRY/EXIT
  4868. LDD EO SET EST ORDINAL
  4869. STD CM+1
  4870. LDN UTRS GET CURRENT MST
  4871. STD CM+3
  4872. MONITOR STBM
  4873. RJM REE READ EST ENTRY
  4874. LDD CM+4
  4875. SHN 3
  4876. ADN ACGL READ *ACGL*
  4877. CRD CM
  4878. UJN GCAX RETURN
  4879. GCS SPACE 4,15
  4880. ** GCS - GET CONTROLLER SERIAL NUMBER.
  4881. *
  4882. * ENTRY (CI) = CONTROLLER STATE TABLE ADDRESS.
  4883. * (CN) = CONTROLLER NUMBER.
  4884. * (DN) = DRIVE NUMBER.
  4885. *
  4886. * EXIT CONTROLLER SERIAL NUMBER IN (CTSN - CTSN+2).
  4887. *
  4888. * USES T3, T4.
  4889. *
  4890. * CALLS ATT, CAN, IDT, RCA.
  4891.  
  4892.  
  4893. GCS SUBR ENTRY/EXIT
  4894. LDM CTSN,CI
  4895. NJN GCSX IF CONTROLLER SERIAL NUMBER ALREADY KNOWN
  4896. RJM RCA REPORT CONTROLLER ATTRIBUTES
  4897. RJM IDT INPUT DATA TO PP
  4898.  
  4899. * CONVERT RIGHT 6 OF 8 CONTROLLER SERIAL NUMBER CHARACTERS.
  4900.  
  4901. LDC ATTB+0#10 SET ADDRESS OF CONTROLLER SERIAL NUMBER
  4902. STDL T4
  4903. LDD CI SET ADDRESS FOR CONVERSION
  4904. ADN CTSN
  4905. STDL T3
  4906. RJM CAN CONVERT ASCII NUMBER TO DISPLAY CODE
  4907. RJM ATT WAIT FOR COMPLETION RESPONSE
  4908. UJN GCSX RETURN
  4909. IBM SPACE 4,10
  4910. ** IBM - ISSUE BML MESSAGE.
  4911. *
  4912. * ENTRY (A) = SYMPTOM - 100.
  4913. * (NR - NR+4, WB - WB+4) = MESSAGE PARAMETERS.
  4914. *
  4915. * EXIT (A) = 0.
  4916. *
  4917. * USES CM - CM+4, NR, NR+1.
  4918. *
  4919. * CALLS IDM.
  4920.  
  4921.  
  4922. IBM SUBR ENTRY/EXIT
  4923. ADD HN INSERT SYMPTOM CODE
  4924. ERRNZ HI0100-100 CODE DEPENDS ON VALUE
  4925. STD NR+1
  4926. LDC DM0401 DEFINE MESSAGE ID
  4927. STD NR
  4928. LDN ZERL CLEAR HEADER WORD
  4929. CRD CM
  4930. LDN 3 WORD COUNT OF MESSAGE
  4931. STD CM+3
  4932. ADK MLDY-3 DIRECT MESSAGE TO BML
  4933. STD CM+4
  4934. LDC SBUF SET MESSAGE ADDRESS
  4935. STML MAD1
  4936. LDD MA MOVE MESSAGE DATA
  4937. CWM CM,TR
  4938. ERRNZ CM+5-NR CODE DEPENDS ON VALUE
  4939. SBN 3
  4940. ERRNZ NR+5-WB CODE DEPENDS ON VALUE
  4941. CRM SBUF,TR
  4942. ERRNG SBUFL-3*5 CODE DEPENDS ON VALUE
  4943. LDN 0 ISSUE BML MESSAGE
  4944. RJM IDM
  4945. * LDN 0
  4946. UJN IBMX RETURN
  4947. ICR SPACE 4,15
  4948. ** ICR - ISSUE CONTROLLER RESET.
  4949. *
  4950. * ENTRY (RW) .NE. 0 IF PREVIOUS RESET FAILED.
  4951. * (RF) .NE. 0 IF RESET FAILURE.
  4952. * (DI) = DEVICE STATE TABLE ADDRESS.
  4953. * (PD) = 0, IF NOT PARITY DEVICE.
  4954. * (CPEA) = 0, IF TIME TO DO SLAVE RESET AND THERE
  4955. * IS A DRIVE TO OFF-LINE.
  4956. *
  4957. * EXIT TO *ERR12* IF RESET COMPLETE.
  4958. * (CPEA) = 0 IF LOGICAL RESET ISSUED AND THERE IS
  4959. * A DRIVE TO OFF-LINE.
  4960. *
  4961. * CALLS CPE, SRS.
  4962.  
  4963.  
  4964. ICR6 LDN 1
  4965. STM CPEA INDICATE NO DRIVE TO OFF-LINE
  4966. LDM RWST,DI
  4967. ZJN ICRX IF SLAVE RESET FAILED
  4968. LDM ERCT,DI
  4969. SBN CSRC-SRRC
  4970. ZJN ICR1 IF TIME TO TRY SLAVE RESET
  4971.  
  4972. ICR SUBR ENTRY/EXIT
  4973. LDD RF
  4974. NJN ICR6 IF PREVIOUS RESET FAILED
  4975. LDM ERCT,DI
  4976. SBN CSRC-SRRC
  4977. NJN ICR2 IF NOT TIME TO TRY SLAVE RESET
  4978.  
  4979. * DO NOT DO SLAVE RESET IF CHANNEL ERROR, MEDIA ERROR,
  4980. * OR CONTROLLER DEAD.
  4981.  
  4982. ICR1 LDML EDBF+FALT
  4983. SBN ETIT
  4984. ZJN ICR3 IF INTERRUPT TIMEOUT
  4985. SBN EDPE-ETIT+1
  4986. MJN ICR2 IF NOT DOING SLAVE RESET (CHANNEL ERROR)
  4987. SBN ECNR-EDPE-1
  4988. ZJN ICR3 IF SLAVE IN/SYNC IN SIGNAL ERROR
  4989. SBN ECRE-ECNR
  4990. PJN ICR2 IF NOT DOING SLAVE RESET
  4991.  
  4992. * DO NOT ISSUE SLAVE RESET (1 MINUTE) IF A DRIVE CAN
  4993. * BE SET OFF-LINE.
  4994.  
  4995. LDD PD
  4996. ZJN ICR3 IF NOT PARITY DEVICE
  4997. LDM CPEA
  4998. NJN ICR3 IF NO DRIVE TO OFF-LINE
  4999. ICR2 LDN 1
  5000. STM CPEA INDICATE NO DRIVE TO OFF-LINE
  5001. LDC 1S16+ICR5 RETURN ADDRESS
  5002. UJN ICR4 ISSUE LOGICAL RESET
  5003.  
  5004. ICR3 LDN 0 ENABLE LOGGING OF ERROR RESPONSE
  5005. STM ERRA
  5006. LDC ERR12 RETURN ADDRESS FROM SLAVE RESET
  5007. ICR4 LJM SRS ISSUE RESET
  5008.  
  5009. ICR5 RJM CPE CHECK IF PARITY DRIVE ENABLED
  5010. LJM ERR12 EXIT
  5011. IDM SPACE 4,20
  5012. ** IDM - ISSUE DAYFILE MESSAGE.
  5013. *
  5014. * ENTRY (A) = BML MESSAGE SYMPTOM CODE.
  5015. * (RW) = READ / WRITE FLAG.
  5016. * (EO) = EST ORDINAL.
  5017. * (CN) = CONTROLLER NUMBER.
  5018. * (DI) = DEVICE STATE TABLE ADDRESS.
  5019. * (DT) = DRIVE TYPE.
  5020. * (PHYD,DI) = DRIVE NUMBER.
  5021. * (MISC) = 1 IF UNRECOVERED ERROR.
  5022. * (MAD1) = MESSAGE ADDRESS.
  5023. *
  5024. * NOTE - THE CONTENTS OF THE MESSAGE DETERMINES WHETHER IT
  5025. * GOES TO THE ERROR LOG OR THE BML.
  5026. *
  5027. * EXIT (A) = (MISC) = 0.
  5028. *
  5029. * CALLS IMB, UEC.
  5030.  
  5031.  
  5032. IDM SUBR ENTRY/EXIT
  5033. LMC D"DN"*400
  5034. STM BMLM+1 INSERT SYMPTOM CODE IN MESSAGE
  5035. LDML BMID,DT
  5036. SHN -11
  5037. STM MSID ERROR MESSAGE ID
  5038. LDD CN
  5039. SHN 6
  5040. ADM PHYD,DI INSERT UNIT NUMBER
  5041. STM UNIT
  5042. LDM PNUN,DI SET PORT NUMBER
  5043. SHN -3
  5044. SCN 77
  5045. STM PORT
  5046. LDD EO INCLUDE EST ORDINAL
  5047. STM ESTO
  5048. LDD RW READ / WRITE FLAG
  5049. LPN 1
  5050. SHN 21-4
  5051. ADM ERCT,DI SET RETRY COUNT
  5052. SHN 13-5
  5053. RAM MISC APPEND TO RECOVERED/UNRECOVERED STATUS
  5054. LDML MAD1
  5055. RJM IMB ISSUE MESSAGE TO BUFFER
  5056. RJM UEC UPDATE MST ERROR COUNT
  5057. LDC MSGP
  5058. STML MAD1 RESTORE BML ERROR MESSAGE ADDRESS
  5059. LDN 0
  5060. STM MISC CLEAR UNRECOVERED ERROR STATUS
  5061. * LDN 0
  5062. LJM IDMX RETURN
  5063.  
  5064.  
  5065. MAD1 CONL MSGP MESSAGE ADDRESS (MAY BE SET BY CALLER)
  5066. IDU SPACE 4,15
  5067. ** IDU - INTERLOCK DISK UNIT.
  5068. *
  5069. * ENTRY (CB) = CBT ORDINAL, IF I/O REQUEST.
  5070. * (DI) = DEVICE STATE TABLE ADDRESS.
  5071. * (EO) = EST ORDINAL.
  5072. *
  5073. * EXIT (A) .EQ. 0, IF UNIT INTERLOCKED SUCCESSFULLY.
  5074. * (A) .LT. 0, IF CHANNEL DOWN.
  5075. * (A) .GT. 0, IF UNABLE TO INTERLOCK.
  5076. *
  5077. * USES T7, WB+3, CM - CM+4.
  5078. *
  5079. * CALLS CAC, CCS, SUI.
  5080. *
  5081. * MACROS CBTE.
  5082.  
  5083.  
  5084. IDU4 RJM SUI SET UNIT INTERLOCK
  5085.  
  5086. IDU SUBR ENTRY/EXIT
  5087. LDM RQLN,DI
  5088. SHN 0-13 CHECK UNIT RESERVED
  5089. LMN 1
  5090. ZJN IDUX IF UNIT INTERLOCKED
  5091. LDC 0
  5092. CHRQ EQU *-1
  5093. NJN IDUX IF CHANNEL REQUESTED
  5094. RJM CCS CHECK CHANNEL STATE
  5095. IDU2 ZJN IDU4 IF CHANNEL UP
  5096. SCN 1
  5097. NJN IDU3 IF CHANNEL DOWN
  5098.  
  5099. * CHANNEL IDLE. IF OTHER CHANNEL IS DEFINED AND UP, ONLY
  5100. * PROCESS CHANNEL-SPECIFIC REQUESTS ON THIS CHANNEL.
  5101.  
  5102. LDD CB
  5103. ZJN IDU3 IF NOT I/O REQUEST
  5104. SHN CBTLS
  5105. CBTE *
  5106. ADC PAD4 GET CHANNEL FROM CBT ENTRY
  5107. CRD T7
  5108. ADN HSLK-PAD4 GET CHANNEL SELECT STATUS
  5109. CRD CM
  5110. LDD CM CHECK ERROR FLAGS
  5111. SHN 0-12
  5112. NJN IDU2.1 IF CHANNEL SPECIFIC REQUEST
  5113. RJM CAC CHECK ALTERNATE CHANNEL STATUS
  5114. ZJN IDU3 IF OTHER CHANNEL DEFINED AND UP
  5115. UJP IDU4 SET UNIT INTERLOCK
  5116.  
  5117. IDU2.1 LDD T7 CHECK SPECIFIED CHANNEL
  5118. SHN -6
  5119. LMD IR+4
  5120. ZJN IDU2 IF REQUEST FOR THIS DRIVER
  5121. IDU3 LCN 0 RETURN *CHANNEL DOWN* STATUS
  5122. UJP IDUX RETURN
  5123. IEE SPACE 4,15
  5124. ** IEE - ISSUE E,E EVENT.
  5125. *
  5126. * THIS ROUTINE ISSUES A MONITOR REQUEST WHICH CAUSES AN
  5127. * OPERATOR ACTION TO VIEW THE E,E DISPLAY.
  5128. *
  5129. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  5130. *
  5131. * USES CM - CM+4.
  5132. *
  5133. * MACROS MONITOR.
  5134.  
  5135.  
  5136. IEE SUBR ENTRY/EXIT
  5137. LDN EEVS
  5138. STD CM+1 ENTER EVENT
  5139. LDN 0
  5140. STD CM+3
  5141. LDN CEDE *CHECK E,E DISPLAY* EVENT
  5142. STD CM+4
  5143. MONITOR EATM
  5144. UJN IEEX RETURN
  5145. IEM SPACE 4,15
  5146. ** IEM - ISSUE ERROR LOG MESSAGE.
  5147. *
  5148. * ENTRY (A) = 1/CF,15/ADDRESS.
  5149. * CF - SET CONTROLLER NUMBER INTO MESSAGE.
  5150. * THE MESSAGE LENGTH IS IN (ADDRESS-1).
  5151. * (CN) = CONTROLLER NUMBER.
  5152. * (DT) = DRIVE TYPE.
  5153. * (DI) = DEVICE STATE TABLE ADDRESS.
  5154. * (EO) = EST ORDINAL.
  5155. *
  5156. * USES T1, T2.
  5157. *
  5158. * CALLS C2D, IDM.
  5159.  
  5160.  
  5161. IEM SUBR ENTRY/EXIT
  5162. STDL T0 SAVE COMPLETE PARAMETER
  5163. LPC 17777
  5164. STDL T1 ADDRESS OF SPECIFIED MESSAGE
  5165. STML IEMA
  5166. LDDL T0 CHECK IF CONTROLLER NUMBER FLAG SET
  5167. SHN 21-17
  5168. PJN IEM1 IF CONTROLLER NUMBER NOT PART OF MESSAGE
  5169. LDD CN CONVERT CONTROLLER NUMBER
  5170. ADN 1R0
  5171. SHN 6 INSERT IN MESSAGE
  5172. LMN 1R
  5173. STM 1,T1
  5174. IEM1 LDM DM,DT SAVE DEVICE MNEMONIC
  5175. STM ERMH+5
  5176. LDD EO
  5177. SHN -3
  5178. RJM C2D
  5179. STM ERMH+6 UPPER 2 DIGITS OF EST ORDINAL
  5180. LDD EO
  5181. LPN 7
  5182. SHN 6
  5183. ADC 2R0,
  5184. STM ERMH+7 LOWER DIGIT OF EST ORDINAL
  5185. LDM PHYD,DI
  5186. RJM C2D
  5187. STM ERMH+11 FAILING DRIVE
  5188. LDM -1,T1 SET MESSAGE LENGTH
  5189. STM ERMH+3
  5190. LDN 4
  5191. STD T1
  5192. LDD MA
  5193. CWM **,T1 COPY MESSAGE INTO BUFFER
  5194. IEMA EQU *-1
  5195. LDD MA
  5196. CRM ERMB,T1
  5197. LDC ERMH MESSAGE HEADER ADDRESS
  5198. STML MAD1
  5199. RJM IDM ISSUE MESSAGE TO ERROR LOG
  5200. UJP IEMX RETURN
  5201.  
  5202.  
  5203. * ERROR MESSAGE HEADER AND BUFFER.
  5204.  
  5205. ERMH CON 0,0,0,**,ELDY
  5206. DATA 12H*****, U**,
  5207. ERMB BSSZ 4*5
  5208. CON 0
  5209.  
  5210. * ERROR MESSAGES.
  5211.  
  5212. ERPD ERRMSG (PARITY PROTECTION DISABLED.)
  5213. ERPR ERRMSG (PARITY PROTECTION RESTORED.)
  5214. ERRI ERRMSG (PARITY RESTORE INITIATED.)
  5215. ERFI ERRMSG (FORMAT INITIATED.)
  5216. ERFC ERRMSG (FORMAT COMPLETE.)
  5217. ERCR ERRMSG (CMX RESET ON CCHXX.)
  5218. ERRC ERRMSG (CMX RESET COMPLETE.)
  5219. ERRF ERRMSG (CMX RESET FAILURE.)
  5220. ERCD ERRMSG (CMX CONTROLLER DISABLED, CCHXX.)
  5221. ERCE ERRMSG (CMX CONTROLLER ENABLED, CCHXX.)
  5222. IHD SPACE 4,20
  5223. ** IHD - INTERRUPT HANDLER.
  5224. *
  5225. * ENTRY (CI) = CONTROLLER STATE TABLE ADDRESS.
  5226. * (DI) = DEVICE STATE TABLE ADDRESS.
  5227. * (DN) = DRIVE NUMBER.
  5228. *
  5229. * EXIT (A) = EXIT CONDITION FROM ROUTINE *VIS*.
  5230. * = 0 IF INTERRUPT FOR INACTIVE DRIVE.
  5231. * = RETURN ADDRESS TO PROCESSOR.
  5232. * (MS) = MAJOR STATUS FROM RESPONSE PACKET.
  5233. * (RT) = RESPONSE TYPE FROM STATUS BLOCK.
  5234. * (DI) = THE COMMAND REFERENCE NUMBER FROM AN EXPECTED
  5235. * RESPONSE.
  5236. * TO *DAS1* IF UNEXPECTED ASYNCH.
  5237. *
  5238. * USES DI, MS, RT, T4.
  5239. *
  5240. * CALLS DCM, LDP, LSD, RCR, RRP, SCM, VIS.
  5241.  
  5242.  
  5243. IHD6 LCN 0 INDICATE ASYNC INTERRUPT
  5244. IHD7 RJM VIS VERIFY INTERRUPT SOURCE
  5245.  
  5246. IHD SUBR ENTRY/EXIT
  5247. LDML CTST,CI
  5248. SHN -15
  5249. ZJN IHD1 IF STREAMING MODE FOR RESPONSES
  5250.  
  5251. * IF 10 MB CHANNEL AND INTERLOCK MODE, SOMETIMES AFTER SENDING
  5252. * A COMMAND PACKET, THE ERROR FLAG WILL SET DURING THE
  5253. * FOLLOWING BUS CONTROL SEQUENCE (IPI ERROR REGISTER = 0004).
  5254. * MASTER CLEARING THE CHANNEL AFTER THE COMMAND PACKET
  5255. * PREVENTS THIS PROBLEM.
  5256.  
  5257. RJM RCR RESET CHANNEL REGISTERS
  5258. IHD1 RJM SCM SELECT CONTROLLER
  5259. RJM RRP READ RESPONSE PACKET
  5260. LDML RPBF+MST
  5261. STDL MS SAVE MAJOR STATUS
  5262. SHN -4
  5263. LPN 17 EXTRACT RESPONSE TYPE
  5264. STD RT
  5265. LMN XFNT
  5266. ZJN IHD7 IF TRANSFER NOTIFICATION
  5267. RJM DCM DESELECT CONTROLLER
  5268. LDD RT CHECK RESPONSE TYPE
  5269. LMN ASRT
  5270. NJP IHD7 IF NOT ASYNC (UNSOLICITED) RESPONSE
  5271. LDM RPBF+CUN
  5272. LPC 377
  5273. STD T4 SAVE DRIVE NUMBER
  5274. LMC 377
  5275. ZJP IHD6 IF RESPONSE FOR CONTROLLER
  5276. RJM LSD LOCATE SELECTED DRIVE
  5277. ZJN IHD5 IF DRIVE UNKNOWN ON THIS CONTROLLER
  5278. STD DI
  5279. RJM LDP LOAD DEVICE PARAMETERS
  5280.  
  5281. * AN ASYNCH FOR A DRIVE CAN OCCUR BEFORE THE ASYNCH FOR THE
  5282. * CONTROLLER AFTER A SLAVE RESET.
  5283.  
  5284. LDM SRSA
  5285. NJN IHD5 IF RESET IN PROGRESS
  5286. LDM EEST,DI
  5287. LMN ASRT
  5288. ZJN IHD4 IF EXPECTED ASYNCH
  5289. LDML RPBF+CRN
  5290. LMD DI
  5291. NJN IHD5 IF NOT EXPECTED ASYNCH
  5292. IHD4 LDML ATTN,DI
  5293. LJM IHDX RETURN
  5294.  
  5295. * AN UNEXPECTED ASYNCH CAN BE THE RESULT OF A DRIVE RESET FROM
  5296. * THE OTHER ACCESS, OR BECAUSE AN OFF-LINE DRIVE HAS BEEN
  5297. * REPAIRED AND SPUN UP. SUCH UNEXPECTED ASYNCHS ARE IGNORED.
  5298.  
  5299. IHD5 LJM DAS1 RETURN TO MAIN LOOP
  5300. IIO SPACE 4,20
  5301. ** IIO - INITIATE I/O.
  5302. *
  5303. * ENTRY (A) = (CB) = *CBT* ORDINAL.
  5304. * (DI) = DEVICE STATE TABLE ADDRESS.
  5305. * (DT) = DRIVE TYPE.
  5306. *
  5307. * EXIT (A) = 0 IF I/O DISABLED ON THIS CHANNEL.
  5308. * (RW) = READ / WRITE STATUS.
  5309. * (PA) = PROCESSOR ADDRESS.
  5310. * (NR - NR+4) = PHYSICAL ADDRESS OF REQUEST.
  5311. *
  5312. * USES PA, RW, NR - NR+4, T1 - T7.
  5313. *
  5314. * CALLS PEF.
  5315. *
  5316. * MACROS CBTE.
  5317.  
  5318.  
  5319. IIO4 STDL PA
  5320. SCN 77 SET I/O DISABLED STATUS
  5321.  
  5322. IIO SUBR ENTRY/EXIT
  5323. SHN CBTLS
  5324. CBTE *
  5325. ADC PAD1 FETCH SEEK PARAMETERS FROM *CBT*
  5326. CRD NR
  5327. ADN PAD4-PAD1 GET CHANNEL FROM CBT ENTRY
  5328. CRD T1
  5329. ADN HSLK-PAD4 GET CHANNEL SELECT STATUS
  5330. CRD T2
  5331. SBN HSLK-IOLK GET READ / WRITE FLAG
  5332. CRD T3
  5333. LDD T2 CHECK ERROR FLAGS
  5334. SHN 0-12
  5335. ZJN IIO1 IF NO FLAGS
  5336. SHN -1
  5337. STD RW PROCESS ERROR FLAGS
  5338. RJM PEF
  5339. NJN IIO4 IF I/O PREPROCESSING INDICATED
  5340. *IIO1 LDN 0
  5341. IIO1 STML CPBF+FCP+1 CLEAR UPPER BYTES OF BLOCK COUNT
  5342. STML CPBF+FCP+6 CLEAR UPPER BYTES OF INTERRUPT SIZE
  5343. STML CPBF+FCP+10 CLEAR UPPER BYTES OF BURST SIZE
  5344. LDC P0931
  5345. STML CPBF+FCP COMMAND EXTENT PARAMETER
  5346. LDD NR+1
  5347. STM CPBF+FCP+3 SET CYLINDER IN COMMAND PACKET
  5348. STM CYLN,DI
  5349.  
  5350. * DETERMINE PARTITION.
  5351.  
  5352. IIO2 SBM MC,DT
  5353. MJN IIO2.1 IF IN THE CORRECT PARTITION
  5354. SBN 1
  5355. PJN IIO2 IF NOT AT MAINTENANCE CYLINDER
  5356.  
  5357. * SET BLOCK COUNT. USING A LARGER BLOCK COUNT IMPROVES
  5358. * STREAMING PERFORMANCE.
  5359.  
  5360. IIO2.1 ADN 7
  5361. PJN IIO2.2 IF WITHIN LAST 8 CYLINDERS
  5362. LDML PSCY,DT SET SECTOR COUNT FOR 8 CYLINDERS
  5363. SHN 3
  5364. UJN IIO3 RETURN
  5365.  
  5366. IIO2.2 LDM STS,DT SET SECTOR COUNT FOR .LT. 8 CYLINDERS
  5367. LPC 777
  5368. IIO3 STML CPBF+FCP+2 SECTOR COUNT
  5369. LDD NR+2
  5370. STM TKSN,DI TRACK + SECTOR
  5371. SCN 77
  5372. SHN 2
  5373. LMD NR+2 SEPARATE INTO 8 BIT FIELDS
  5374. SCN 77
  5375. LMD NR+2 SET IN COMMAND PACKET
  5376. STML CPBF+FCP+4
  5377. LDD T3
  5378. SHN 22-11 EXTRACT WRITE DATA FLAG
  5379. LPN 1
  5380. STM RWST,DI SET READ / WRITE STATUS
  5381. STD RW
  5382. LDC PIO
  5383. UJP IIO4 SET PROCESSOR ADDRESS
  5384. ILU SPACE 4,15
  5385. ** ILU - INITIALIZE LOGICAL UNIT.
  5386. *
  5387. * DECLUSTER UNIT IF CLUSTERED, FORMAT ALL THE PHYSICAL DRIVES
  5388. * OF THE LOGICAL UNIT AS NECESSARY, THEN CLUSTER THE UNIT.
  5389. *
  5390. * ENTRY (DN) = DRIVE NUMBER.
  5391. * (DT) = DRIVE TYPE.
  5392. * (DI) = DEVICE STATE TABLE ADDRESS.
  5393. *
  5394. * USES CM - CM+4.
  5395. *
  5396. * CALLS ATT, CLU, CUF, DDT, DLU, FMU, SRS, UPD.
  5397.  
  5398.  
  5399. ILU SUBR ENTRY/EXIT
  5400. LDD DN
  5401. STM PHYD,DI PHYSICAL DRIVE
  5402. ILU1 RJM DDT DETERMINE DRIVE TYPE
  5403. MJP ILU7 IF DRIVE NOT IN CONTROLLER TABLE
  5404. SBD DT
  5405. PJN ILU1.2 IF ACTUAL EQUAL OR GREATER THAN EXPECTED
  5406. ILU1.1 ADN EQEG-EQEC ADVANCE DEVICE TYPE RANGE
  5407. ERRNZ EQEO-EQEG-EQEG+EQEC (RANGES MUST BE EQUAL SIZE)
  5408. MJN ILU1.1 IF NOT TO PROPER RANGE
  5409. ILU1.2 ZJN ILU4 IF EXPECTED AND ACTUAL TYPES MATCH
  5410. LDM DDTA
  5411. SBN 1
  5412. ZJN ILU4 IF LOGICAL UNIT IS ONE DRIVE
  5413.  
  5414. * IF 2 CONTROLLERS ARE CABLED TO THE UNIT AND THE UNIT IS
  5415. * CLUSTERED DIFFERENTLY THAN IT IS CONFIGURED, THE OTHER
  5416. * CONTROLLER MAY ALREADY HAVE DECLUSTERED AND RECLUSTERED
  5417. * DIFFERENTLY. SLAVE RESET MUST BE DONE TO CAUSE THE
  5418. * CONTROLLER TO REEVALUATE THE DRIVES.
  5419.  
  5420. LDC ILU2 RETURN ADDRESS
  5421. LJM SRS INITIATE SLAVE RESET
  5422.  
  5423. * CLEAR THE ASYNCHRONOUS RESPONSES AFTER THE SLAVE RESET.
  5424. * THERE IS NORMALLY ONE ASYNCH PER PHYSICAL DRIVE AFTER A
  5425. * DECLUSTER COMMAND. IF THE DECLUSTER COMMAND IS ISSUED AFTER
  5426. * SLAVE RESET, THE ASYNCHS THAT SHOULD HAVE BEEN AFTER THE
  5427. * COMPLETION RESPONSE FOR THE DECLUSTER MAY COME BEFORE THE
  5428. * COMPLETION RESPONSE. THIS WILL CAUSE A TIMEOUT WAITING
  5429. * FOR A RESPONSE.
  5430.  
  5431. ILU2 LDC 1S16+ILU3 RETURN ADDRESS
  5432. LJM SRS ISSUE LOGICAL RESET
  5433.  
  5434. ILU3 RJM DDT DETERMINE DRIVE TYPE
  5435. MJN ILU7 IF DRIVE NOT IN CONTROLLER TABLE
  5436. ILU4 LDML ATTB+2,T3
  5437. SHN 21-11
  5438. PJN ILU5 IF UNIT NOT CLUSTERED
  5439. RJM ATT WAIT FOR COMPLETION RESPONSE
  5440. RJM DLU DECLUSTER LOGICAL UNIT
  5441. UJN ILU6 CHECK FOR CONDITIONAL FORMAT
  5442.  
  5443. ILU5 RJM ATT WAIT FOR COMPLETION RESPONSE
  5444. ILU6 LDK SSTL
  5445. CRD CM
  5446. LDD CM+1
  5447. SHN 21-12
  5448. PJN ILU8 IF UNCONDITIONAL FORMAT
  5449. RJM DDT DETERMINE DRIVE TYPE
  5450. MJN ILU7 IF DRIVE NOT IN CONTROLLER TABLE
  5451. RJM ATT WAIT FOR COMPLETION RESPONSE
  5452. LDC C0302+1S17 REPORT ADDRESSEE STATUS OPERATION CODE
  5453. RJM CUF CHECK IF UNIT FORMATTED
  5454. ZJN ILU9 IF UNIT FORMATTED
  5455. UJN ILU8 FORMAT THE UNIT
  5456.  
  5457. ILU7 RJM ATT WAIT FOR COMPLETION RESPONSE
  5458. ILU8 RJM FMU FORMAT UNIT
  5459. ILU9 RJM UPD UPDATE DRIVE NUMBER
  5460. NJP ILU1 IF MORE DRIVES TO CHECK
  5461. RJM CLU CLUSTER LOGICAL UNIT
  5462. UJP ILUX RETURN
  5463. IMF SPACE 4,10
  5464. ** IMF - ISSUE MONITOR FUNCTION AND WAIT FOR COMPLETION.
  5465. *
  5466. * ENTRY (A) = FUNCTION.
  5467. *
  5468. * EXIT (A) = 0.
  5469. * (CM - CM+4) = MONITOR FUNCTION RESPONSE.
  5470. *
  5471. * USES CM - CM+4.
  5472. *
  5473. * CALLS AME, CMC.
  5474.  
  5475.  
  5476. IMF SUBR ENTRY/EXIT
  5477. STD CM
  5478. RJM CMC WAIT MONITOR COMPLETE (PREVIOUS REQUEST)
  5479. LDD OA WRITE OUTPUT REGISTER
  5480. CWD CM
  5481. LDD CM
  5482. SBN CPUM
  5483. MJN IMF1 IF NOT *CPUMTR* REQUEST
  5484. RJM AME ATTEMPT MONITOR EXCHANGE
  5485. IMF1 RJM CMC WAIT FOR MONITOR COMPLETE (NEW REQUEST)
  5486. LDD OA READ OUTPUT REGISTER
  5487. CRD CM
  5488. LDN 0
  5489. UJN IMFX RETURN
  5490. IMR SPACE 4,15
  5491. ** IMR - INITIATE *BIOM* MONITOR REQUEST.
  5492. *
  5493. * ENTRY (A) = *BIOM* SUBFUNCTION.
  5494. * (WB+3 - WB+4) = *BIOM* PARAMETERS.
  5495. * (DI) = DEVICE STATE TABLE ADDRESS.
  5496. *
  5497. * EXIT (A) = 0.
  5498. *
  5499. * USES WB - WB+2.
  5500. *
  5501. * CALLS AME, CMC.
  5502.  
  5503.  
  5504. IMR SUBR ENTRY/EXIT
  5505. STD WB+1
  5506. LDI DI SET *PUT* ORDINAL
  5507. ERRNZ PUTO CODE DEPENDS ON VALUE
  5508. STD WB+2
  5509. LDN BIOM SET MONITOR FUNCTION
  5510. STD WB
  5511. RJM CMC CHECK MONITOR COMPLETE
  5512. LDD OA
  5513. CWD WB
  5514. RJM AME ATTEMPT MONITOR EXCHANGE
  5515. * LDN 0
  5516. UJN IMRX RETURN
  5517. IOM SPACE 4,10
  5518. ** IOM - ISSUE OPERATOR MESSAGE.
  5519. *
  5520. * ENTRY (A) = ADDRESS OF MESSAGE.
  5521. * = 0 TO CLEAR MESSAGE.
  5522. * = - TO REFRESH MESSAGE.
  5523. * (EO) = EST ORDINAL.
  5524. *
  5525. * USES T1.
  5526. *
  5527. * CALLS C2D.
  5528.  
  5529.  
  5530. IOM2 LDD CP SYSTEM CP ADDRESS
  5531. ADN MS2W
  5532. CWD T1 CLEAR THE MESSAGE
  5533. IOM3 LDML IOMA
  5534. NJN IOM1 IF MESSAGE PRESENT
  5535.  
  5536. IOM SUBR ENTRY/EXIT
  5537. STDL T1
  5538. MJN IOM3 IF MESSAGE REFRESH
  5539. STML IOMA
  5540. ZJN IOM2 IF CLEAR MESSAGE CALL
  5541. IOM1 LDD CP SYSTEM CP ADDRESS
  5542. ADN MS2W
  5543. CWM **,TR STORE OPERATOR MESSAGE
  5544. IOMA EQU *-1
  5545. UJN IOMX RETURN
  5546. IPR SPACE 4,30
  5547. ** IPR - INITIATE PARITY RESTORE.
  5548. *
  5549. * INITIATE RESTORE OF AN OFF-LINE DRIVE, IN RESPONSE TO AN
  5550. * OPERATOR *RESTORE* COMMAND.
  5551. *
  5552. * THIS ROUTINE CHECKS FOR AN OFF-LINE DRIVE OF A PARITY UNIT.
  5553. * IT WILL ISSUE A SPIN UP DRIVE COMMAND TO SEE IF THE DRIVE
  5554. * IS USEABLE, AND IF SO, FORMAT THE DRIVE IF NECESSARY, THEN
  5555. * SET UP TABLES SO THE DRIVE WILL BE RESTORED ONE CYLINDER
  5556. * AT A TIME AS A BACKGROUND OPERATION.
  5557. *
  5558. * THIS DRIVER WILL HOLD THE UNIT INTERLOCK (IN THE *PUT*)
  5559. * DURING THE ENTIRE RESTORE OPERATION. FOR A SHARED DEVICE,
  5560. * IT WILL ALSO HOLD THE ERROR PROCESSING INTERLOCK (IN THE
  5561. * *BDT*) DURING THE RESTORE INITIATION PROCESS, AND THE MMF
  5562. * RESTORE INTERLOCK (IN THE *BDT*) DURING THE ENTIRE RESTORE.
  5563. * THE MMF RESTORE INTERLOCK WILL ENSURE THAT ONLY THE
  5564. * CONTROLLER THAT IS PERFORMING THE RESTORE WILL BE ALLOWED
  5565. * TO DO I/O ON THE DEVICE DURING THE RESTORE.
  5566. *
  5567. * ENTRY (CI) = CONTROLLER STATE TABLE ADDRESS.
  5568. * (DI) = DEVICE STATE TABLE ADDRESS.
  5569. * (EO) = EST ORDINAL.
  5570. *
  5571. * EXIT TO *CSR*.
  5572. * TO *CMP*, TO LEAVE REQUEST PENDING.
  5573. *
  5574. * USES CM - CM+4.
  5575. *
  5576. * CALLS ATT, CDS, CLP, COD, CRP, DAS, FMU, GCA, IEE, IEM,
  5577. * LNE, SEP, SOU, SRS, SUD, UBP, WAC, WCB.
  5578. *
  5579. * MACROS CMSTF, DELAY, MONITOR, SMSTF.
  5580.  
  5581.  
  5582. IPR BSS 0 ENTRY
  5583. LDM RSIN CHECK RESTORE INTERLOCK FLAG
  5584. ZJN IPR1 IF INTERLOCK NOT SET
  5585. LMD DI
  5586. NJN IPR2 IF INTERLOCK SET FOR ANOTHER DEVICE
  5587. LJM IPR13 PROCESS REENTRY FOR RESTORE ON THIS DEVICE
  5588.  
  5589. * ISSUE LOGICAL RESET TO ENSURE THAT THIS CONTROLLER SEES
  5590. * THE CURRENT STATUS OF THE DRIVE IN QUESTION. ALLOW ACTIVITY
  5591. * ON OTHER DEVICES TO COMPLETE BEFORE ISSUING THE RESET.
  5592.  
  5593. IPR1 RJM SEP SET ERROR PROCESSING INTERLOCK
  5594. ZJN IPR3 IF INTERLOCK SET SUCCESSFULLY
  5595. IPR2 LJM CMP LEAVE REQUEST PENDING
  5596.  
  5597. IPR3 RJM WAC WAIT FOR OTHER ACTIVITY TO COMPLETE
  5598. LDML CSTB,CI
  5599. SHN 21-15
  5600. MJN IPR5 IF CONTROLLER NOT FUNCTIONAL
  5601. LDC IPR4+1S16 RETURN ADDRESS
  5602. LJM SRS ISSUE LOGICAL RESET
  5603.  
  5604. * CHECK FOR OFF-LINE DRIVE.
  5605.  
  5606. IPR4 RJM COD CHECK FOR OFF-LINE DRIVE
  5607. NJN IPR6 IF OFF-LINE DRIVE DETECTED
  5608. RJM CLP CLEAR *LOST PARITY* FLAGS
  5609. IPR5 RJM CRP CLEAR *RESTORE IN PROGRESS*, IF SET
  5610. LJM CSR ABANDON REQUEST
  5611.  
  5612. * SET *RESTORE IN PROGRESS* FLAGS AND INTERLOCKS.
  5613.  
  5614. IPR6 LDD DI SET RESTORE INTERLOCK FLAG
  5615. STM RSIN
  5616. LDD CI SET ADDRESS OF CONTROLLER SERIAL NUMBER
  5617. ADK CTSN-2
  5618. STM IPRA
  5619. LDN 0 INITIALIZE PARTITION SEARCH
  5620. IPR7 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
  5621. ZJP IPR9 IF NO MORE PARTITIONS
  5622. RJM CDS CHECK DEVICE STATUS
  5623. MJN IPR5 IF DEVICE NOT RECOVERED
  5624. ZJN IPR8 IF NOT SHARED DEVICE
  5625. LDD MA SET CONTROLLER SERIAL NUMBER INTO MB
  5626. CWM **,ON (ADDRESS OF *CTSN* FOR THIS CONTROLLER)
  5627. IPRA EQU *-1
  5628. LDD EO SET EST ORDINAL
  5629. STD CM+4
  5630. LDN SRPS SET RESTORE PARITY INTERLOCK IN *BDT*
  5631. STD CM+1
  5632. MONITOR MTEM
  5633. LDD CM+4
  5634. NJP IPR5 IF REJECT (OTHER MF PERFORMING RESTORE)
  5635. LDN 1 SET FLAG THAT SAYS THIS MF HAS INTERLOCK
  5636. STD CM+2
  5637. LDN 25 BIT TO CHANGE
  5638. RJM UBP UPDATE *BDLL* PARAMETER
  5639. IPR8 SMSTF GDRI SET *RESTORE INITIATION* IN *ACGL*
  5640. SMSTF GDUR SET *RESTORE IN PROGRESS* IN *ACGL*
  5641. LDC ERRI *EQXXX, UXX, PARITY RESTORE INITIATED.*
  5642. RJM IEM ISSUE ERROR LOG MESSAGE
  5643. LDD EO
  5644. UJP IPR7 PROCESS NEXT PARTITION
  5645.  
  5646. * IF SHARED DEVICE, WAIT FOR OTHER MF-S TO ACKNOWLEDGE.
  5647.  
  5648. IPR9 RJM IEE ISSUE E,E EVENT
  5649. LDN 0 INITIALIZE PARTITION SEARCH
  5650. IPR10 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
  5651. ZJN IPR13 IF NO MORE PARTITIONS
  5652. STM IPRC SAVE EST ORDINAL
  5653. RJM CDS CHECK DEVICE STATUS
  5654. ZJN IPR12 IF NOT SHARED DEVICE
  5655. IPR11 RJM GCA GET CURRENT *ACGL*
  5656. LDD CM GET ACCESS FLAGS
  5657. LPN 17
  5658. SCN ** (MACHINE MASK FOR THIS MF)
  5659. IPRB EQU *-1
  5660. ZJN IPR12 IF NO OTHER MF HAS ACCESS FLAG SET
  5661. RJM DAS PROCESS ACTIVITY ON OTHER DEVICES
  5662. DELAY
  5663. LDC ** (EST ORDINAL OF CURRENT PARTITION)
  5664. IPRC EQU *-1
  5665. STD EO RESTORE EST ORDINAL
  5666. UJN IPR11 RETRY
  5667.  
  5668. IPR12 LDD EO
  5669. UJN IPR10 PROCESS NEXT PARTITION
  5670.  
  5671. * SPIN UP DRIVE.
  5672.  
  5673. IPR13 RJM SUD SPIN UP DRIVE
  5674. ZJN IPR15 IF SUCCESSFUL
  5675. IPR14 LJM IPR5 ABANDON RESTORE
  5676.  
  5677. * FORMAT DRIVE, IF REQUIRED.
  5678.  
  5679. IPR15 LDK SSTL
  5680. CRD CM
  5681. LDD CM+1
  5682. SHN 21-12
  5683. PJN IPR16 IF UNCONDITIONAL FORMAT
  5684. LDC C0302 REPORT ADDRESSEE STATUS OPERATION CODE
  5685. RJM SOU SET OPERATION CODE AND UNIT
  5686. LDC P02D5
  5687. STML CPBF+FCP PHYSICAL DRIVE PARAMETER
  5688. LDM OUPD,DI OFFLINE UNIT NUMBER
  5689. SHN 10
  5690. STML CPBF+FCP+1 PHYSICAL DRIVE TO STATUS
  5691. LDN 12 COMMAND PACKET LENGTH
  5692. RJM WCB WRITE COMMAND PACKET
  5693. LDN CMSS
  5694. RJM ATT PROCESS ATTENTION
  5695. NJN IPR14 IF ERROR
  5696. LDML RPBF+11
  5697. SHN 21-16
  5698. IPR16 PJN IPR17 IF DRIVE NOT FORMATTED
  5699. LDM RPBF+7 CHECK NUMBER OF DATA DRIVES
  5700. LPN 77
  5701. LMD DD EXPECTED DATA DRIVES
  5702. NJN IPR17 IF WRONG NUMBER OF DATA DRIVES
  5703. LDML BPS,DT CHECK SECTOR SIZE
  5704. SCN 77
  5705. LMML RPBF+13 ACTUAL SECTOR SIZE
  5706. ZJN IPR18 IF CORRECT SECTOR SIZE
  5707. IPR17 RJM FMU FORMAT THE DRIVE
  5708.  
  5709. * SET UP RESTORE PARAMETERS.
  5710.  
  5711. IPR18 LDD DI SET *RESTORE IN PROGRESS* FLAG
  5712. STM RSDI
  5713. LDN 0
  5714. STM RCYL STARTING CYLINDER TO RESTORE
  5715. STM RTSN STARTING TRACK, SECTOR TO RESTORE
  5716. STM RMUX I/O REQUESTS TO MULTIPLEX PER RESTORE
  5717. * LDN 0 INITIALIZE PARTITION SEARCH
  5718. IPR19 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
  5719. ZJN IPR20 IF NO MORE PARTITIONS
  5720. CMSTF GDRI CLEAR *RESTORE INITIATION* FROM *ACGL*
  5721. LDD EO
  5722. UJN IPR19 PROCESS NEXT PARTITION
  5723.  
  5724. IPR20 LJM CSR CLEAR SPECIAL REQUEST FLAG / START RESTORE
  5725. ISR SPACE 4,25
  5726. ** ISR - IDENTIFY AND PROCESS SPECIAL REQUEST.
  5727. *
  5728. * ENTRY (CM+3) = SPECIAL REQUEST FLAGS.
  5729. * (CI) = CONTROLLER STATE TABLE ADDRESS.
  5730. * (DI) = DEVICE STATE TABLE ADDRESS.
  5731. * (EO) = EST ORDINAL.
  5732. *
  5733. * EXIT (CM+3) UPDATED - BITS FOR *ECAF* AND/OR *LMLF* CLEARED
  5734. * IF REQUEST IS FOR THE ALTERNATE CHANNEL.
  5735. * TO *DAS1* IF UNIT INTERLOCK NOT OBTAINED.
  5736. * TO *ERR* IF CONTROLLER FAILURE.
  5737. * TO *ECA* IF ENABLE CONTROLLER ACTIVITY AND *BDLL*
  5738. * BIT SET FOR THIS CHANNEL.
  5739. * TO SPECIAL REQUEST PROCESSOR (ADDRESS IN TABLE *ISRA*)
  5740. * IF SPECIAL REQUEST FOUND, WITH -
  5741. * (RW) = INDEX FOR SPECIAL REQUEST.
  5742. *
  5743. * USES CM+3, PA, RW.
  5744. *
  5745. * CALLS CEC, CPF, IDU, SEO.
  5746.  
  5747.  
  5748. ISR SUBR ENTRY/EXIT
  5749.  
  5750. * CHECK FOR *ENABLE CONTROLLER ACTIVITY* (*ECAF*) REQUEST.
  5751. * IF REQUEST IS FOR OTHER CHANNEL, LOOK FOR DIFFERENT REQUEST.
  5752.  
  5753. LDD CM+3
  5754. SHN 21-ECAF+ECAF/12D*12D
  5755. PJN ISR3 IF *ECAF* REQUEST NOT SET
  5756. RJM CEC CHECK IF REQUEST IS FOR THIS CHANNEL
  5757. NJN ISR2 IF REQUEST IS NOT FOR THIS CHANNEL
  5758. LJM ECA ENABLE CONTROLLER ACTIVITY
  5759.  
  5760. ISR2 LDD CM+3 LOOK FOR A DIFFERENT REQUEST TO PROCESS
  5761. SCN 1
  5762. ERRNZ ECAF-12D CODE DEPENDS ON VALUE
  5763. STD CM+3
  5764.  
  5765. * CHECK FOR *LIST FIRMWARE REVISION* (*LMLF*) REQUEST.
  5766. * IF REQUEST IS FOR OTHER CHANNEL, LOOK FOR DIFFERENT REQUEST.
  5767.  
  5768. ISR3 LDD CM+3
  5769. SHN 21-LMLF+LMLF/12D*12D
  5770. PJN ISR4 IF *LMLF* REQUEST NOT SET
  5771. LPN 77 ISOLATE CHANNEL NUMBER
  5772. LMD IR+4
  5773. ZJN ISR6 IF REQUEST FOR THIS DRIVER
  5774. LDD CM+3 LOOK FOR A DIFFERENT REQUEST TO PROCESS
  5775. LPN 37
  5776. ERRNZ LMLF-17D CODE DEPENDS ON VALUE
  5777. STD CM+3
  5778.  
  5779. * IF RESTORE ALREADY IN PROGRESS FOR ANY DEVICE, LEAVE ANY
  5780. * ADDITIONAL *RESTORE* REQUEST PENDING.
  5781.  
  5782. ISR4 LDM RSDI
  5783. ZJN ISR4.1 IF NO RESTORE IN PROGRESS
  5784. LDD CM+3 CLEAR *RESTORE* SPECIAL REQUEST FLAG
  5785. SCN 2
  5786. ERRNZ RSPF-13D CODE DEPENDS ON VALUE
  5787. STD CM+3
  5788.  
  5789. * SEARCH FOR OTHER SPECIAL REQUEST.
  5790.  
  5791. ISR4.1 LDD CM+3 ISOLATE SPECIAL REQUEST FLAGS
  5792. STD T0
  5793. ZJP ISRX IF NO SPECIAL REQUEST TO PROCESS
  5794. LDN ECAF-1
  5795. STD RW
  5796. ISR5 AOD RW ADVANCE INDEX
  5797. LDD T0
  5798. SHN 21-0 CHECK NEXT FLAG
  5799. STD T0
  5800. PJN ISR5 IF NOT SET
  5801. LDD RW
  5802. UJN ISR7 SET SPECIAL REQUEST FLAG
  5803.  
  5804. * PROCESS SPECIAL REQUEST.
  5805.  
  5806. ISR6 LDC 6S6+LMLF BITS - 1 TO CLEAR / STARTING BIT
  5807. ISR7 STM SREQ,DI SET SPECIAL REQUEST FLAG
  5808. LPN 77
  5809. SBN ECAF CALCULATE INDEX
  5810. STD RW
  5811. STM RWST,DI SAVE INDEX
  5812. RJM SEO SET EST ORDINAL
  5813. LDML ISRA,RW
  5814. STDL PA SET PROCESSOR ADDRESS
  5815. RJM IDU INTERLOCK DISK UNIT
  5816. MJN ISR8 IF CHANNEL DOWN OR NOT ENABLED
  5817. NJN ISR9 IF INTERLOCK NOT AVAILABLE
  5818. LDML CTST,CI
  5819. SHN 21-15
  5820. MJN ISR10 IF CONTROLLER DEAD
  5821. LJM 0,PA EXIT TO SPECIAL REQUEST
  5822.  
  5823. * CHANNEL DOWN OR NOT ENABLED.
  5824.  
  5825. ISR8 LDM SREQ,DI
  5826. LMC 6S6+LMLF
  5827. NJN ISR9 IF NOT LIST MICROCODE REVISION
  5828. LDC 6S6+LMLF BITS - 1 TO CLEAR / STARTING BIT
  5829. RJM CPF CLEAR SPECIAL REQUEST BIT IN *PUT*
  5830.  
  5831. * INTERLOCK NOT AVAILABLE.
  5832.  
  5833. ISR9 LDN 0
  5834. STM SREQ,DI CLEAR SPECIAL REQUEST FLAG
  5835. STM ADDR,DI CLEAR REENTRY ADDRESS
  5836. STM ATTN,DI CLEAR INTERRUPT ADDRESS
  5837. LJM DAS1 RETURN TO MAIN LOOP
  5838.  
  5839. * CONTROLLER FAILURE.
  5840.  
  5841. ISR10 LDN ECMD CONTROLLER DEAD
  5842. RJM ERR PROCESS ERROR
  5843.  
  5844.  
  5845. ISRA BSS 0 SPECIAL REQUEST PROCESSORS
  5846. CONL CSR CLEAR FLAG (ENABLE CONTROLLER ACTIVITY)
  5847. CONL IPR INITIATE PARITY RESTORE
  5848. CONL CSR CLEAR FLAG (RESERVED)
  5849. CONL LPS LIST PACK SERIAL NUMBER
  5850. CONL CSR CLEAR FLAG (FORMAT REQUEST)
  5851. CONL LMR LIST MICROCODE REVISION LEVEL
  5852. ISRB BSS 0 INTERNAL SPECIAL REQUEST PROCESSORS
  5853. CONL CDT CHECK DRIVE TYPE (INTERNAL REQUEST)
  5854. LDP SPACE 4,25
  5855. ** LDP - LOAD DEVICE PARAMETERS.
  5856. *
  5857. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  5858. *
  5859. * EXIT (A) = (EO) = EST ORDINAL.
  5860. * (CB) = *CBT* ORDINAL.
  5861. * (CI) = CONTROLLER STATE TABLE ADDRESS.
  5862. * (CN) = CONTROLLER NUMBER.
  5863. * (DD) = NUMBER OF DATA DRIVES IN DEVICE.
  5864. * (DN) = DRIVE NUMBER.
  5865. * (DT) = DRIVE TYPE.
  5866. * (PA) = REQUEST IN PROGRESS ADDRESS.
  5867. * (PD) = PARITY DEVICE FLAG.
  5868. * (RW) = READ / WRITE FLAG.
  5869. * (CM - CM+4) = *PILL* WORD OF *PUT* ENTRY.
  5870. * (WB - WB+4) = *UNCT* WORD OF *PUT* ENTRY.
  5871. *
  5872. * USES CB, CI, CN, DD, DN, DT, PA, PD, RW, CM - CM+4,
  5873. * WB - WB+4.
  5874. *
  5875. * CALLS SEO.
  5876. *
  5877. * MACROS PUTE.
  5878.  
  5879.  
  5880. LDP SUBR ENTRY/EXIT
  5881. LDM DVTP,DI
  5882. LPN 77
  5883. STD DT DRIVE TYPE
  5884. LDML DM,DT
  5885. SHN 0-17
  5886. STD PD NONZERO IF PARITY DEVICE
  5887. LDML DM,DT
  5888. SHN 0-14
  5889. LPN 7
  5890. STD DD NUMBER OF DATA DRIVES IN DEVICE
  5891. LDML PNUN,DI
  5892. SHN -14
  5893. SHN 2
  5894. ERRNZ CSTBE-4 CODE DEPENDS ON VALUE
  5895. ADC CSTB
  5896. STD CI CONTROLLER STATE TABLE ADDRESS
  5897. LDI DI
  5898. ERRNZ PUTO CODE DEPENDS ON VALUE
  5899. SHN PUTLS
  5900. PUTE *
  5901. ADC PILL GET INTERLOCK STATUS
  5902. CRD CM
  5903. SBN PILL-UNCT FETCH UNIT CONTROL WORD
  5904. CRD WB
  5905. LDD WB GET CONTROLLER AND UNIT NUMBER
  5906. LPC 777
  5907. SHN 21-5 EXTRACT CONTROLLER NUMBER
  5908. STD CN
  5909. SHN 5-21 ISOLATE DRIVE NUMBER
  5910. STD DN
  5911. LDM RWST,DI RESTORE READ / WRITE STATUS
  5912. STD RW
  5913. LDML ADDR,DI CURRENT PROCESSING ADDRESS
  5914. STDL PA
  5915. LDD WB+3 *CBT* ORDINAL
  5916. STD CB
  5917. RJM SEO SET EST ORDINAL
  5918. UJP LDPX RETURN
  5919. LMR SPACE 4,15
  5920. ** LMR - LOG MICROCODE REVISION.
  5921. *
  5922. * ENTRY (CN) = CONTROLLER NUMBER.
  5923. * (DN) = DRIVE NUMBER.
  5924. * (DI) = DEVICE STATE TABLE ADDRESS.
  5925. * (DT) = DRIVE TYPE.
  5926. *
  5927. * EXIT TO *CSR* WHEN THE REQUEST IS COMPLETE.
  5928. *
  5929. * USES NR+2, NR+3, T3, T4, WB - WB+4.
  5930. *
  5931. * CALLS ATT, CHD, IBM, IDM, IDT, RCA.
  5932.  
  5933.  
  5934. LMR BSS 0 ENTRY
  5935. RJM RCA REPORT CONTROLLER ATTRIBUTES
  5936. RJM IDT INPUT DATA TO PP
  5937.  
  5938. * GENERATE MICROCODE REVISION ERRLOG MESSAGE.
  5939.  
  5940. LDD CN SET CONTROLLER NUMBER IN BML MESSAGE
  5941. STD NR+3
  5942. ADC 2RM0 CONVERT FOR ERRLOG MESSAGE
  5943. STM LMRB+6
  5944. LDC LMRB+4 LOCATION FOR REVISION LEVEL
  5945. STDL T3
  5946. SBN LMRB+4-LMRA SET MESSAGE ADDRESS
  5947. STML MAD1
  5948. LDM ATTB+16 CONVERT REVISION LEVEL
  5949. RJM CHD
  5950. RJM IDM ISSUE MESSAGE TO ERRLOG
  5951.  
  5952. * GENERATE MICROCODE REVISION BML MESSAGE.
  5953.  
  5954. LDD MA MOVE MICROCODE REVISION LEVEL
  5955. CWM LMRB,ON
  5956. SBN 1 COPY TO BML MESSAGE
  5957. CRD WB
  5958. LDD IR+4 SET CHANNEL NUMBER
  5959. STD NR+2
  5960. LDN HI0104-HI0100
  5961. RJM IBM ISSUE BML MESSAGE
  5962. * LDN 0
  5963. RJM ATT WAIT FOR COMPLETION RESPONSE
  5964. LJM CSR CLEAR SPECIAL REQUEST FLAG
  5965.  
  5966.  
  5967. LMRA CON 0,0,0,4,ELDY MICROCODE REVISION ERRLOG MESSAGE
  5968. DATA 4HCH**
  5969. LMRB DATA 10H MH427-D**
  5970. DATA C+,CM0.+
  5971. LND SPACE 4,15
  5972. ** LND - LOCATE NEXT DRIVE (ON SPECIFIED CONTROLLER).
  5973. *
  5974. * ENTRY (A) = 0 TO LOCATE FIRST DRIVE OF STRING.
  5975. * (CI) = CONTROLLER STATE TABLE ADDRESS.
  5976. * (DI) = DEVICE STATE TABLE ADDRESS.
  5977. * (T7) = CURRENT *DST* ADDRESS, IF (A) .NE. 0.
  5978. *
  5979. * EXIT (A) = (T7) = DEVICE STATE TABLE ADDRESS OF NEXT DRIVE.
  5980. * (A) = 0 IF NO MORE DRIVES (ON CONTROLLER).
  5981. *
  5982. * USES T7.
  5983.  
  5984.  
  5985. LND2 LDM CTST,CI ADDRESS OF FIRST DRIVE IN STRING
  5986. STD T7
  5987. LND3 LDM PNUN,T7 VERIFY CONTROLLER
  5988. LMM PNUN,DI
  5989. SHN -6
  5990. NJN LND1 IF NOT SPECIFIED CONTROLLER
  5991. LDD T7
  5992.  
  5993. LND SUBR ENTRY/EXIT
  5994. ZJN LND2 IF INITIAL CALL
  5995. LND1 LDN DSTBE
  5996. RAD T7 ADVANCE DEVICE STATE TABLE ADDRESS
  5997. LMM DASB
  5998. NJN LND3 IF NOT END OF BLOCK
  5999. * LDN 0
  6000. UJN LNDX RETURN
  6001. LNE SPACE 4,25
  6002. ** LNE - LOCATE NEXT EST/PARTITION FOR THIS DEVICE.
  6003. *
  6004. * LOCATE NEXT EST ASSOCIATED WITH THE CURRENT DEVICE.
  6005. *
  6006. * ENTRY (A) .EQ. 0, START SEARCH WITH EST ORDINAL IN *PUT*.
  6007. * (A) .NE. 0, (A) = LAST EST ORDINAL PROCESSED.
  6008. * (DI) = DEVICE STATUS TABLE ADDRESS.
  6009. * (EO) = CURRENT EST ORDINAL.
  6010. *
  6011. * EXIT (A) = (EO) = EST ORDINAL OF NEXT PARTITION.
  6012. * (A) = 0, IF NO MORE PARTITIONS FOR THIS *PUT*.
  6013. * (EO) = ORIGINAL EST ORDINAL (FROM *CBT*/*PUT*).
  6014. *
  6015. * USES EO, CM - CM+4.
  6016. *
  6017. * CALLS REE, SEO.
  6018. *
  6019. * MACROS PUTE.
  6020.  
  6021.  
  6022. LNE3 RJM SEO SET EST ORDINAL FROM *CBT* OR *PUT*
  6023. LNE4 LDN 0 INDICATE NO MORE PARTITIONS
  6024.  
  6025. LNE SUBR ENTRY/EXIT
  6026. ZJN LNE1 IF INITIAL ENTRY OF SEARCH
  6027. STD EO SET EST ORDINAL
  6028. LDML DVTP,DI
  6029. SHN 21-17
  6030. PJN LNE4 IF NOT PARTITIONED DEVICE
  6031. UJN LNE2 LOCATE NEXT EST ORDINAL
  6032.  
  6033. LNE1 LDI DI *PUT* ORDINAL FROM DEVICE STATE TABLE
  6034. ERRNZ PUTO CODE DEPENDS ON VALUE
  6035. SHN PUTLS
  6036. PUTE *
  6037. ADC UNCT GET FIRST EST FOR THIS *PUT*
  6038. CRD CM
  6039. SOD CM+1 SET STARTING EST ORDINAL FOR SEARCH
  6040. STD EO
  6041. LNE2 AOD EO
  6042. LMC ** HIGHEST EST ORDINAL FOR THIS DRIVER (+1)
  6043. LNEA EQU *-1
  6044. ZJN LNE3 IF NO MORE *EST* ENTRIES TO CHECK
  6045. RJM REE READ EST ENTRY
  6046. LDD CM
  6047. SHN 21-13
  6048. PJN LNE2 IF NOT MASS STORAGE
  6049. SHN 21-5-21+13
  6050. PJN LNE2 IF NOT A BUFFERED DEVICE
  6051. LDD CM+4
  6052. SHN 3
  6053. ADK DILL
  6054. CRD CM
  6055. LDD CM+2 GET *PUT* ORDINAL FROM *MST*
  6056. LMI DI *PUT* ORDINAL FROM DEVICE STATE TABLE
  6057. ERRNZ PUTO CODE DEPENDS ON VALUE
  6058. NJN LNE2 IF NOT FOR THE DESIRED *PUT*
  6059. LDD EO
  6060. UJP LNEX RETURN NEXT EST ORDINAL
  6061. LPS SPACE 4,15
  6062. ** LPS - LOG PACK SERIAL NUMBER(S).
  6063. *
  6064. * ENTRY (CN) = CONTROLLER NUMBER.
  6065. * (DN) = DRIVE NUMBER.
  6066. * (DI) = DEVICE STATE TABLE ADDRESS.
  6067. * (DT) = DRIVE TYPE.
  6068. *
  6069. * EXIT TO *CSR* WHEN THE REQUEST IS COMPLETE.
  6070. *
  6071. * USES NR+2, NR+3, T3, T4, WB - WB+4.
  6072. *
  6073. * CALLS ATT, CAN, C2D, IBM, IDM, IDT, SOU, UPD.
  6074.  
  6075.  
  6076. LPS BSS 0 ENTRY
  6077. LDD DN
  6078. STM PHYD,DI PHYSICAL DRIVE NUMBER
  6079. LDC C0200 REPORT ATTRIBUTES OPERATION CODE
  6080. RJM SOU SET OPERATION CODE AND UNIT
  6081. LDC P036C REQUEST ATTRIBUTE PARAMETER
  6082. STM CPBF+FCP
  6083. LDC 0#8050 RETURN ATTRIBUTE ID 50 AS DATA
  6084. STML CPBF+FCP+1
  6085. LDN 12 COMMAND PACKET LENGTH
  6086. RJM IDT INPUT DATA TO PP
  6087. LDC ATTB+0#1E SET ADDRESS OF FIRST PACK SERIAL NUMBER
  6088. STDL T4
  6089.  
  6090. * GENERATE PACK SERIAL NUMBER ERRLOG MESSAGE.
  6091.  
  6092. LPS1 LDC LPSB+2 SET ADDRESS FOR CONVERSION
  6093. STDL T3
  6094. SBN LPSB+2-LPSA DEFINE MESSAGE ADDRESS
  6095. STML MAD1
  6096. RJM CAN CONVERT ASCII NUMBER TO DISPLAY CODE
  6097. LDN 11
  6098. RADL T4 UPDATE POINTER TO NEXT SERIAL NUMBER
  6099. LDM PHYD,DI
  6100. STD NR+3 PUT UNIT NUMBER IN BML MESSAGE
  6101. RJM C2D CONVERT UNIT NUMBER FOR ERRLOG MESSAGE
  6102. STM LPSA+11
  6103. LDD EO CONVERT EST ORDINAL
  6104. SHN -3
  6105. RJM C2D
  6106. STM LPSA+6 INSERT IN ERRLOG MESSAGE
  6107. LDM DM,DT
  6108. STM LPSA+5 SAVE DEVICE MNEMONIC
  6109. STD NR+2
  6110. LDD EO
  6111. LPN 7 CONVERT LOWER DIGIT
  6112. SHN 6
  6113. ADC 2R0, ADD TO ERRLOG MESSAGE
  6114. STM LPSA+7
  6115. RJM IDM ISSUE MESSAGE TO ERRLOG
  6116.  
  6117. * GENERATE PACK SERIAL NUMBER BML MESSAGE.
  6118.  
  6119. LDD MA MOVE DRIVE SERIAL NUMBER
  6120. CWM LPSB,ON
  6121. SBN 1 COPY TO BML MESSAGE
  6122. CRD WB
  6123. LDD EO INSERT EST ORDINAL
  6124. STD WB
  6125. LDN 0 CLEAR UNUSED FIELD
  6126. STD WB+1
  6127. RJM IBM ISSUE BML MESSAGE
  6128. RJM UPD UPDATE PHYSICAL DRIVE
  6129. NJP LPS1 IF MORE PHYSICAL DRIVES
  6130. * LDN 0
  6131. RJM ATT WAIT FOR COMPLETION RESPONSE
  6132. LJM CSR CLEAR SPECIAL REQUEST FLAG
  6133.  
  6134.  
  6135. LPSA CON 0,0,0,4,ELDY PACK SERIAL NUMBER ERRLOG MESSAGE
  6136. DATA 10H*****, U**
  6137. LPSB DATA C+,PS=******.+
  6138. LSD SPACE 4,15
  6139. ** LSD - LOCATE SELECTED DRIVE IN *DSTB*.
  6140. *
  6141. * ENTRY (T4) = DRIVE NUMBER.
  6142. *
  6143. * EXIT (A) = 0 IF NO RESPONSE EXPECTED.
  6144. * = DEVICE STATE TABLE ADDRESS FOR DRIVE.
  6145. *
  6146. * CALLS LND.
  6147.  
  6148.  
  6149. LSD SUBR ENTRY/EXIT
  6150. LDN 0
  6151. UJN LSD2 LOCATE FIRST DRIVE
  6152.  
  6153. LSD1 LDN 1
  6154. LSD2 RJM LND
  6155. ZJN LSDX IF END OF DRIVE STRING
  6156. LDD FC
  6157. NJN LSD3 IF FORMAT COMPLETE
  6158. LDML ATTN,T7
  6159. ZJN LSD1 IF RESPONSE NOT EXPECTED
  6160. UJN LSD4
  6161.  
  6162. LSD3 LDM PNUN,T7
  6163. LPN 77 CHECK DRIVE NUMBER
  6164. LMD T4
  6165. NJN LSD1 IF SPECIFIED DRIVE NOT FOUND
  6166. LSD4 LDD T7
  6167. UJN LSDX RETURN
  6168. PEF SPACE 4,15
  6169. ** PEF - PROCESS ERROR FLAGS.
  6170. *
  6171. * ENTRY (RW) = ERROR INDEX.
  6172. * (CB) = *CBT* ORDINAL.
  6173. * (DI) = DEVICE STATE TABLE ADDRESS.
  6174. * (DN) = DRIVE NUMBER.
  6175. * (T1) = BYTE 0 OF *PAD4* WORD OF CBT ENTRY.
  6176. * (T2) = BYTE 0 OF *HSLK* WORD OF CBT ENTRY.
  6177. * (NR - NR+4) = *PAD1* WORD OF *CBT* ENTRY.
  6178. *
  6179. * EXIT (A) = 0 IF OK TO INITIATE I/O.
  6180. * TO (0,PA) TO PROCESS A CHANNEL SPECIFIC READ OR
  6181. * WRITE REQUEST. AFTER SUSPECT STATE IS SET, THE
  6182. * REQUEST BECOMES CHANNEL SPECIFIC.
  6183. * TO *CMP10* IF ERROR IN PROGRESS ON A DIFFERENT DEVICE.
  6184. *
  6185. * CALLS IDU, IIO, LDP, SEP.
  6186.  
  6187.  
  6188. PEF1 LDN 0 INDICATE I/O IN ORDER
  6189.  
  6190. PEF SUBR ENTRY/EXIT
  6191. LDD T1
  6192. SHN -6 CHECK CHANNEL NUMBER
  6193. LMD IR+4
  6194. NJN PEFX IF I/O DISABLED ON THIS ACCESS
  6195. LDD RW
  6196. ZJN PEFX IF *1MV* DEVICE VERIFICATION
  6197. LDM ERFL
  6198. LMD DI
  6199. ZJN PEFX IF ERROR IN PROGRESS ON THIS DEVICE
  6200. LDML CTST,CI
  6201. SHN 21-15
  6202. MJN PEF1 IF CONTROLLER DEAD
  6203. LDML ERCT,DI
  6204. NJN PEF1 IF I/O INITIATED
  6205. RJM IDU INTERLOCK DEVICE
  6206. NJN PEFX IF INTERLOCK NOT AVAILABLE
  6207. LDN CSRC
  6208. STM ERCT,DI SET INITIAL ERROR COUNT
  6209. RJM LDP LOAD DEVICE PARAMETERS
  6210. LDD CM+1
  6211. SHN -6 FAILING DRIVE NUMBER
  6212. STM PHYD,DI FOR RECOVERED ERROR REPORTING
  6213. RJM SEP SET ERROR PROCESSING INTERLOCK
  6214. NJP CMP10 IF ERROR IN PROGRESS ON A DIFFERENT DEVICE
  6215. LDD CB INITIATE I/O
  6216. RJM IIO
  6217. LJM 0,PA EXIT TO PROCESSOR
  6218. PLP SPACE 4,20
  6219. ** PLP - PROCESS LOST PARITY.
  6220. *
  6221. * PLP HANDLES *PROCESS LOST PARITY* CONDITIONS, PROVIDED THAT
  6222. * THE DEVICE HAS BEEN RECOVERED. IF IT HAS, PLP SETS THE UNIT
  6223. * NUMBER AND THE *PARITY PROTECTION LOST* FLAG IN MST WORD
  6224. * *ACGL*, SO THAT THE THE E,E DISPLAY ON EACH MAINFRAME WILL
  6225. * SHOW WHICH DRIVE IS OFF-LINE.
  6226. *
  6227. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  6228. * (EO) = EST ORDINAL.
  6229. *
  6230. * USES CM - CM+4.
  6231. *
  6232. * CALLS CDS, IEE, LNE.
  6233. *
  6234. * MACROS MONITOR, SMSTF.
  6235.  
  6236.  
  6237. PLP4 LDC ** (COUNT OF NEW PARTITIONS PROCESSED)
  6238. PLPA EQU *-1
  6239. ZJN PLP5 IF NO NEW PARTITIONS PROCESSED
  6240. RJM IEE ISSUE E,E EVENT
  6241. PLP5 LDC ** (COUNT OF UNPROCESSED PARTITIONS LEFT)
  6242. PLPB EQU *-1
  6243. NJN PLPX IF NOT ALL PARTITIONS PROCESSED
  6244. LDML DVTP,DI CLEAR *PROCESS LOST PARITY* FLAG
  6245. LPC 137777
  6246. STML DVTP,DI
  6247.  
  6248. PLP SUBR ENTRY/EXIT
  6249. LDML DVTP,DI
  6250. SHN 21-16
  6251. PJN PLPX IF *PROCESS LOST PARITY* NOT SET
  6252. LDN 0 CLEAR PARTITION COUNTS
  6253. STM PLPA
  6254. STM PLPB
  6255. * LDN 0 INITIALIZE PARTITION SEARCH
  6256. PLP1 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
  6257. ZJN PLP4 IF NO MORE PARTITIONS
  6258. RJM CDS CHECK DEVICE STATUS
  6259. MJN PLP2 IF DEVICE NOT RECOVERED
  6260. LDD CM+4 CHECK IF *PARITY LOST* FLAG ALREADY SET
  6261. SHN 3
  6262. ADN ACGL
  6263. CRD CM
  6264. LDD CM+4
  6265. SHN 21-2
  6266. MJN PLP3 IF PARTITION ALREADY PROCESSED
  6267. LDD EO SET EST ORDINAL
  6268. STD CM+1
  6269. LDM OUPD,DI OFFLINE UNIT OF PARITY DEVICE
  6270. STD CM+2
  6271. LDN SOUS SET OFFLINE UNIT IN *ACGL*
  6272. STD CM+3
  6273. MONITOR STBM
  6274. SMSTF GDPL SET *PARITY PROTECTION LOST* IN *ACGL*
  6275. AOM PLPA INDICATE NEW PARTITION PROCESSED
  6276. UJN PLP3 PROCESS NEXT PARTITION
  6277.  
  6278. PLP2 AOM PLPB INCREMENT UNPROCESSED PARTITION COUNT
  6279. PLP3 LDD EO
  6280. UJP PLP1 PROCESS NEXT PARTITION
  6281. PPE SPACE 4,10
  6282. ** PPE - PROCESS PARITY ENABLE.
  6283. *
  6284. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  6285. * (EO) = EST ORDINAL.
  6286. *
  6287. * EXIT (DVTP,DI) BIT 10 CLEAR, IF PROCESSING COMPLETE.
  6288. * (DVTP,DI) BIT 7 SET, IF PROCESSING COMPLETE.
  6289. *
  6290. * CALLS EMP.
  6291.  
  6292.  
  6293. PPE SUBR ENTRY/EXIT
  6294. LDML DVTP,DI
  6295. SHN 21-12
  6296. PJN PPEX IF *ENABLE MMF PARITY ACCESS* NOT SET
  6297. RJM EMP ENABLE MMF PARITY DEVICE ACCESS
  6298. NJN PPEX IF NOT ALL PARTITIONS PROCESSED
  6299. LDML DVTP,DI CLEAR *ENABLE MMF PARITY ACCESS* FLAG
  6300. LPC 175577
  6301. LMC 200 SET *CHECK MMF PARITY ACCESS* FLAG
  6302. STML DVTP,DI
  6303. UJN PPEX RETURN
  6304. RBD SPACE 4,10
  6305. ** RBD - READ *BDLL*.
  6306. *
  6307. * ENTRY (EO) = EST ORDINAL.
  6308. *
  6309. * EXIT (CM - CM+4) = *BDLL* WORD OF MST.
  6310. *
  6311. * USES CM - CM+4.
  6312. *
  6313. * CALLS REE.
  6314.  
  6315.  
  6316. RBD SUBR ENTRY/EXIT
  6317. RJM REE READ EST ENTRY
  6318. LDD CM+4
  6319. SHN 3
  6320. ADN BDLL
  6321. CRD CM
  6322. UJN RBDX RETURN
  6323. RCA SPACE 4,10
  6324. ** RCA - REPORT CONTROLLER ATTRIBUTES.
  6325. *
  6326. * ENTRY (CN) = CONTROLLER NUMBER.
  6327. *
  6328. * EXIT PARAMETERS SET UP FOR *IDT* CALL.
  6329. *
  6330. * CALLS SOC.
  6331.  
  6332.  
  6333. RCA SUBR ENTRY/EXIT
  6334. LDC C0200 REPORT ATTRIBUTES OPERATION CODE
  6335. RJM SOC SET OPERATION CODE AND CONTROLLER
  6336. LDC P036C REQUEST ATTRIBUTE PARAMETER
  6337. STM CPBF+FCP
  6338. LDC 0#8050 RETURN ATTRIBUTE ID 50 AS DATA
  6339. STML CPBF+FCP+1
  6340. LDN 12 COMMAND PACKET LENGTH
  6341. UJN RCAX RETURN
  6342. RCT SPACE 4,10
  6343. ** RCT - READ CHANNEL TABLE.
  6344. *
  6345. * EXIT (A) = CHANNEL TABLE STATUS BYTE.
  6346. *
  6347. * USES NR - NR+4.
  6348. *
  6349. * MACROS CHTE.
  6350.  
  6351.  
  6352. RCT SUBR ENTRY/EXIT
  6353. CHTE *
  6354. LDC 0 READ CHANNEL TABLE ENTRY
  6355. CRD NR
  6356. RCTA LDD NR
  6357. UJN RCTX RETURN
  6358. RDO SPACE 4,15
  6359. ** RDO - REPORT DRIVE OFF-LINE.
  6360. *
  6361. * RDO SETS THE *PROCESS LOST PARITY* FLAG SO THAT MST WORD
  6362. * *ACGL* WILL BE UPDATED WHEN THE DEVICE HAS BEEN RECOVERED.
  6363. *
  6364. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  6365. *
  6366. * CALLS PLP.
  6367.  
  6368.  
  6369. RDO SUBR ENTRY/EXIT
  6370. LDML DVTP,DI SET *PROCESS LOST PARITY* FLAG
  6371. LPC 137777
  6372. LMC 40000
  6373. STML DVTP,DI
  6374. RJM PLP PROCESS LOST PARITY
  6375. UJN RDOX RETURN
  6376. REE SPACE 4,10
  6377. ** REE - READ EST ENTRY.
  6378. *
  6379. * ENTRY (EO) = EST ORDINAL.
  6380. *
  6381. * EXIT (A) = ADDRESS OF *EQDE* WORD OF EST ENTRY.
  6382. * (CM - CM+4) = *EQDE* WORD OF EST ENTRY.
  6383. *
  6384. * USES CM - CM+4.
  6385. *
  6386. * MACROS SFA.
  6387.  
  6388.  
  6389. REE SUBR ENTRY/EXIT
  6390. SFA EST,EO
  6391. ADK EQDE
  6392. CRD CM
  6393. UJN REEX RETURN
  6394. RLB SPACE 4,15
  6395. ** RLB - READ LINKAGE BITS.
  6396. *
  6397. * ENTRY (T6) = ADDRESS FOR LINKAGE.
  6398. * (PB) = CONTROL BUFFER ORDINAL.
  6399. * (T1) = DATA BUFFER ADDRESS.
  6400. * (T2) = CONTROL BUFFER WORD NUMBER.
  6401. * (CM - CM+4) = *PAD* WORD OF *CBT* ENTRY.
  6402. *
  6403. * EXIT SECTOR LINKAGE SET IN *CBT* ENTRY.
  6404. *
  6405. * USES T1, T6.
  6406. *
  6407. * MACROS CBTE.
  6408.  
  6409.  
  6410. RLB1 LDN 10+4 ADVANCE BUFFER ADDRESS
  6411. RADL T1
  6412. LDIL T1 EXTRACT LINKAGE FROM BUFFER
  6413. RLB2 SHN -14
  6414. SHN 10 POSITION FOR *CBT* ENTRY
  6415. STI T6
  6416. LDML 4,T1 EXTRACT LINKAGE FROM BUFFER
  6417. SHN -14
  6418. SHN 4 POSITION FOR *CBT* ENTRY
  6419. RAI T6
  6420. LDML 10,T1 EXTRACT LINKAGE FROM BUFFER
  6421. SHN -14
  6422. * SHN 0 POSITION FOR *CBT* ENTRY
  6423. RAI T6
  6424. AOD T6 ADVANCE *CBT* WORD ADDRESS
  6425. LMN CM+5
  6426. NJN RLB1 IF MORE LINKAGE
  6427. LDD PB
  6428. SHN CBTLS
  6429. CBTE *
  6430. ADC 0 FWA OF *CBT*
  6431. ADD T2
  6432. CWD CM UPDATE CONTROL BUFFER ENTRY
  6433.  
  6434. RLB SUBR ENTRY/EXIT
  6435. UJN RLB2 MOVE SECTOR LINKAGE
  6436. RMR SPACE 4,10
  6437. ** RMR - READ CHANNEL STATUS REGISTER.
  6438. *
  6439. * EXIT (A) = 0 IF NO CHANNEL ERROR.
  6440. * (RBUF) = REGISTER CONTENTS.
  6441. *
  6442. * CALLS WMC.
  6443.  
  6444.  
  6445. RMR SUBR ENTRY/EXIT
  6446. FNC. IOUC,MR
  6447. ACN. MR ACTIVATE MAINTENANCE CHANNEL
  6448. LDN 0
  6449. OAN. MR OUTPUT NULL PARAMETER
  6450. CON LDCI
  6451. IAN CH (FORCE CHANNEL TABLE ENTRY)
  6452. ORG *-1
  6453. CON RCSR+CH TRANSMIT REGISTER NUMBER
  6454. OAN. MR
  6455. RJM WMC WAIT CHANNEL EMPTY
  6456. DCN. MR+40
  6457. NJN RMRX IF CHANNEL HUNG FULL
  6458. ACN. MR
  6459. LDN RBUFL READ CHANNEL STATUS REGISTER
  6460. IAM. RBUF,MR
  6461. UJN RMRX RETURN
  6462. RND SPACE 4,15
  6463. ** RND - RUN DIAGNOSTICS.
  6464. *
  6465. * NOTE - THE DRIVE MUST BE CLUSTERED TO RUN DIAGNOSTICS.
  6466. * THE CODE WILL NOT RUN DIAGNOSTICS IF A FORMAT
  6467. * REQUEST IS PRESENT TO ENSURE THIS ROUTINE IS ONLY
  6468. * RUN WHEN THE DRIVE IS CLUSTERED.
  6469. *
  6470. * ENTRY (PHYD,DI) = DRIVE TO RUN DIAGNOSTICS.
  6471. * (FC) = 0 IF FORMAT NOT COMPLETE.
  6472. * (DI) = DEVICE STATE TABLE ADDRESS.
  6473. *
  6474. * EXIT TO *ERR* IF ERROR.
  6475. *
  6476. * CALLS ATT, SOU, WCB.
  6477.  
  6478.  
  6479. RND SUBR ENTRY/EXIT
  6480. LDD FC
  6481. ZJN RNDX IF FORMAT NOT COMPLETE
  6482. LDML EDBF+FALT
  6483. SBN EDPE
  6484. ZJN RND1 IF MEDIA ERROR
  6485. SBN EIVR-EDPE
  6486. ZJN RND1 IF ID24
  6487. SBN EMEX-EIVR
  6488. NJN RNDX IF NOT ID26
  6489. RND1 STM ERRA ENABLE LOGGING OF ERROR RESPONSE
  6490. LDC C8100 DRIVE DIAGNOSTIC COMMAND
  6491. RJM SOU SET OPERATION CODE AND UNIT
  6492. LDC P02D5
  6493. STML CPBF+FCP PARAMETER TO SELECT DRIVE
  6494. LDM PHYD,DI
  6495. SHN 10
  6496. STML CPBF+FCP+1 PHYSICAL DRIVE NUMBER
  6497. LDN 12 WRITE COMMAND PACKET
  6498. RJM WCB
  6499. LDN CMSS PROCESS ATTENTION
  6500. RJM ATT
  6501. ZJP RNDX IF DIAGNOSTICS COMPLETED SUCCESSFULLY
  6502. LCN EDTF DIAGNOSTIC FAULT
  6503. RJM ERR PROCESS ERROR
  6504. ROD SPACE 4,20
  6505. ** ROD - RESTORE OFF-LINE DRIVE.
  6506. *
  6507. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  6508. * (DT) = DRIVE TYPE.
  6509. *
  6510. * EXIT TO CALLER IF NO RESTORE OR NOT TIME TO RESTORE.
  6511. * TO *CMP* IF RESTORE CYLINDER COMMAND COMPLETE.
  6512. * TO *ERR* IF ERROR.
  6513. *
  6514. * USES T1.
  6515. *
  6516. * CALLS ATT, CLP, CRP, CSC, IDM, IEM, LNE, SOU, WCB.
  6517. *
  6518. * MACROS MONITOR.
  6519.  
  6520.  
  6521. ROD10 LDDL MS
  6522. LMC 0#42
  6523. NJN ROD11 IF NOT CONDITIONAL SUCCESS
  6524. LDDL PA SET INTERRUPT REENTRY ADDRESS
  6525. STML ATTN,DI EXPECT A COMMAND COMPLETE RESPONSE
  6526. ROD11 LCN EROD RESTORE OFF-LINE DRIVE ERROR
  6527. UJN ROD13 PROCESS ERROR
  6528.  
  6529. ROD12 LDN ECMD CONTROLLER DEAD
  6530. ROD13 RJM ERR PROCESS ERROR
  6531.  
  6532. ROD SUBR ENTRY/EXIT
  6533. LDM RSDI CHECK IF RESTORE IN PROGRESS
  6534. LMD DI
  6535. NJN RODX IF NO RESTORE IN PROGRESS ON THIS DEVICE
  6536. LDM RMUX
  6537. NJN RODX IF NOT TIME TO RESTORE A CYLINDER
  6538. LDML CTST,CI
  6539. SHN 21-15
  6540. MJN ROD12 IF CONTROLLER DEAD
  6541.  
  6542. * RESTORE NEXT CYLINDER.
  6543.  
  6544. LDC CE005 RESTORE OPERATION CODE
  6545. RJM SOU SET OPERATION CODE AND UNIT
  6546. RJM CSC COMPUTE SECTOR COUNT
  6547. LDC P0931
  6548. STML CPBF+FCP COMMAND EXTENT PARAMETER
  6549. LDC P02D5
  6550. STML CPBF+FCP+5 PHYSICAL DRIVE PARAMETER
  6551. LDM OUPD,DI
  6552. STM PHYD,DI
  6553. SHN 10
  6554. STML CPBF+FCP+6 PHYSICAL DRIVE PARAMETER
  6555. LDC 0#2E3
  6556. STML CPBF+FCP+7 RESTORE OPTION PARAMETER
  6557. LDM RCYL
  6558. STM CPBF+FCP+3 CYLINDER TO RESTORE
  6559. STM CYLN,DI FOR ERROR LOGGING
  6560. LMM CYUN,DT CHECK FOR LAST CYLINDER
  6561. NJN ROD1 IF NOT LAST CYLINDER
  6562. LDC 0#901
  6563. STML CPBF+FCP NO OP EXTENT PARAMETER
  6564. LDC 0#100
  6565. UJN ROD2 ON LINE DRIVE
  6566.  
  6567. ROD1 LDC 0#200 RESTORE DRIVE
  6568. ROD2 STML CPBF+FCP+10
  6569. LDN 30 COMMAND PACKET LENGTH
  6570. RJM WCB WRITE COMMAND PACKET
  6571. LDN CMSS
  6572. RJM ATT PROCESS ATTENTION
  6573. NJP ROD10 IF ERROR
  6574. STM RTSN NEXT TRACK, SECTOR TO RESTORE
  6575. LDML RMUX
  6576. SHN 21-17
  6577. MJN ROD3 IF MULTIPLEXING DISABLED
  6578. LDN IRBR
  6579. STM RMUX I/O REQUESTS BEFORE NEXT RESTORE
  6580.  
  6581. * CALCULATE REMAINING CYLINDERS.
  6582.  
  6583. ROD3 LDM CYUN,DT CALCULATE REMAINING CYLINDERS / 100B
  6584. SBM RCYL
  6585. ADN 77
  6586. SHN -6
  6587. STD T1
  6588. LMC ** (VALUE PREVIOUSLY CALCULATED)
  6589. RODA EQU *-1
  6590. ZJN ROD5 IF VALUE HAS NOT CHANGED
  6591. LDN 0 INITIALIZE PARTITITON SEARCH
  6592. ROD4 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
  6593. ZJN ROD5 IF NO MORE PARTITIONS
  6594. STD CM+1 SET EST ORDINAL
  6595. LDD T1 REMAINING CYLINDERS / 100B
  6596. STM RODA
  6597. STD CM+2
  6598. LDN SRCS SET REMAINING CYLINDERS / 100B IN *ACGL*
  6599. STD CM+3
  6600. MONITOR STBM
  6601. LDD EO
  6602. UJN ROD4 PROCESS NEXT PARTITION
  6603.  
  6604. ROD5 AOM RCYL INCREMENT CYLINDER TO RESTORE
  6605. SBM CYUN,DT CYLINDERS REMAINING
  6606. MJN ROD6 IF MORE CYLINDERS TO RESTORE
  6607. NJN ROD7 IF NO MORE CYLINDERS TO RESTORE
  6608. ROD6 LJM CMP COMPLETION PROCESSING
  6609.  
  6610. * RESTORE COMPLETE.
  6611.  
  6612. ROD7 RJM CRP CLEAR *RESTORE IN PROGRESS* FLAGS
  6613. RJM CLP CLEAR *LOST PARITY* FLAGS
  6614. LDM OUPD,DI DRIVE JUST RESTORED
  6615. STM PHYD,DI
  6616. LDN EROD RESTORE COMMAND
  6617. STM EDBF+CODE
  6618. LDC PDPE PARITY DRIVE PROTECTION ENABLED
  6619. STM EDBF+FALT FINAL FAULT CODE
  6620. LDN 0
  6621. STM EDBF+FCS1
  6622. STM EDBF+FCS2
  6623. STM EDBF+FCS3
  6624. * LDN 0 INITIALIZE PARTITION SEARCH
  6625. ROD8 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
  6626. ZJN ROD9 IF NO MORE PARTITIONS
  6627. LDC ERPR *EQXXX, UXX, PARITY PROTECTION RESTORED.*
  6628. RJM IEM ISSUE ERROR LOG MESSAGE
  6629. LDD EO
  6630. UJN ROD8 PROCESS NEXT PARTITION
  6631.  
  6632. ROD9 LDN 4
  6633. STM MSGL+1 SET BASIC MESSAGE LENGTH
  6634. AOM ERCT,DI
  6635. LDD HN
  6636. ERRNZ HD0100-100 CODE DEPENDS ON VALUE
  6637. RJM IDM ISSUE *PARITY RESTORED* BML MESSAGE
  6638. LJM CMP COMPLETION PROCESSING
  6639.  
  6640.  
  6641. RCYL CON 0 CURRENT CYLINDER BEING RESTORED
  6642. RMUX CON 0 1/X, 15/Y WHERE
  6643. X = 0 IF MULTIPLEXING ALLOWED
  6644. Y = REQUESTS TO MULTIPLEX PER RESTORE
  6645. RSDI CON 0 RESTORE IN PROGRESS FLAG (*DST* INDEX)
  6646. RSIN CON 0 RESTORE INTERLOCK FLAG (*DST* INDEX)
  6647. RTSN CON 0 6 / RESTORE TRACK, 6 / RESTORE SECTOR
  6648. SCD SPACE 4,15
  6649. ** SCD - STORE *CPD* DATA.
  6650. *
  6651. * ENTRY (A) = 0 TO INDICATE CHANNEL INACTIVE.
  6652. * = 1 TO INDICATE CHANNEL ACTIVE.
  6653. * (UC) = UNIT ACTIVITY COUNT.
  6654. *
  6655. * EXIT (T7) = 0.
  6656. *
  6657. * USES CM - CM+2, T5 - T7.
  6658. *
  6659. * MACROS CCTE.
  6660.  
  6661.  
  6662. SCD SUBR ENTRY/EXIT
  6663. STD T5
  6664. LDN ZERL CLEAR UNUSED BYTES
  6665. CRD T6
  6666. LDD UC INSERT UNIT COUNT
  6667. STD T6
  6668. CCTE *
  6669. LDC CREQ STORE *CPD* DATA
  6670. CWD T5
  6671. UJN SCDX RETURN
  6672. SCP SPACE 4,10
  6673. ** SCP - SET COMMAND PARAMETER.
  6674. *
  6675. * ENTRY (A) = COMMAND PARAMETER.
  6676. * (DI) = DEVICE STATE TABLE ADDRESS.
  6677. * (DDTA) = TOTAL NUMBER OF DRIVES IN LOGICAL UNIT.
  6678. *
  6679. * EXIT (A) = 0 IF 1X DRIVE.
  6680. * (CPBF+CUN) = LOGICAL ADDRESS.
  6681.  
  6682.  
  6683. SCP SUBR ENTRY/EXIT
  6684. STML CPBF+FCP
  6685. LDML DDTA TOTAL DRIVES
  6686. LMN 1
  6687. ZJN SCPX IF SINGLE DRIVE
  6688. LDML CPBF+CUN
  6689. SCN 0#38
  6690. STML CPBF+CUN ENSURE STRING BIT CLEAR
  6691. LDN 1
  6692. UJN SCPX RETURN
  6693. SDO SPACE 4,15
  6694. ** SDO - SET DRIVE OFF-LINE.
  6695. *
  6696. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  6697. * (EO) = EST ORDINAL.
  6698. * (PD) = 0, IF NOT PARITY DEVICE.
  6699. * (CPEA) = 0 IF DRIVE SHOULD BE SET OFF-LINE.
  6700. * (PHYD,DI) = FAILING DRIVE.
  6701. *
  6702. * EXIT TO CALLER IF NO DRIVE TO SET OFF-LINE.
  6703. * TO *CMP10* WITH *ERCT* CLEAR IF DRIVE SET OFF-LINE.
  6704. * TO *ERR* IF ERROR.
  6705. *
  6706. * CALLS ATT, CRP, IDM, IEM, LNE, RDO, SOU, WCB.
  6707.  
  6708.  
  6709. SDO SUBR ENTRY/EXIT
  6710. LDD PD
  6711. ZJN SDOX IF NOT PARITY DEVICE
  6712. LDM CPEA
  6713. NJN SDOX IF NO DRIVE TO SET OFF-LINE
  6714. STM ERRA ENABLE LOGGING OF ERROR
  6715. RJM CRP CLEAR *RESTORE IN PROGRESS*, IF SET
  6716. LDC C0209 LOAD ATTRIBUTE OPERATION CODE
  6717. RJM SOU SET OPERATION CODE AND UNIT
  6718. LDC P02D5
  6719. STML CPBF+FCP PARAMETER WITH FAILING DRIVE NUMBER
  6720. LDM PHYD,DI
  6721. STM OUPD,DI OFFLINE DRIVE UNIT NUMBER
  6722. SHN 10
  6723. STML CPBF+FCP+1 FAILING DRIVE NUMBER
  6724. LDC 0#1D9
  6725. STML CPBF+FCP+2 PARAMETER TO SET OFF-LINE DRIVE
  6726. LDN 14 COMMAND PACKET LENGTH
  6727. RJM WCB WRITE COMMAND BLOCK
  6728. LDN CMSS
  6729. RJM ATT WAIT FOR ATTENTION
  6730. ZJN SDO1 IF SUCCESSFUL
  6731. LCN ERDA REPORT DRIVE ATTRIBUTES ERROR
  6732. RJM ERR PROCESS ERROR
  6733.  
  6734. * *HPA* DOES NOT DISPLAY THE DATA WITH SYMPTOM 0111 WHEN THE
  6735. * ERROR IS RECOVERABLE, SO TWO MESSAGES ARE ISSUED TO THE BML.
  6736.  
  6737. SDO1 AOM ERCT,DI
  6738. LCN 0
  6739. STM EDBF+FCS2 INDICATE NO RESPONSE FOR HPA
  6740. LDC PDPD PARITY DRIVE PROTECTION DISABLED
  6741. STM EDBF+FALT FINAL FAULT CODE
  6742. LDD HN
  6743. ERRNZ HD0100-100 CODE DEPENDS ON VALUE
  6744. RJM IDM ISSUE INITIAL BML MESSAGE
  6745. LDN 3
  6746. STM MSGL+1 MESSAGE LENGTH
  6747. LDC HD0111
  6748. RJM IDM ISSUE FINAL BML MESSAGE
  6749. STM ERCT,DI CLEAR ERROR COUNT
  6750. * LDN 0 INITIALIZE PARTITION SEARCH
  6751. SDO2 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
  6752. ZJN SDO3 IF NO MORE PARTITIONS
  6753. LDC ERPD *EQXXX, UXX, PARITY PROTECTION DISABLED.*
  6754. RJM IEM ISSUE ERROR LOG MESSAGE
  6755. LDD EO
  6756. UJN SDO2 PROCESS NEXT PARTITION
  6757.  
  6758. SDO3 RJM RDO REPORT DRIVE OFF-LINE
  6759. LJM CMP10 ABANDON REQUEST (RETRY LATER)
  6760. SDT SPACE 4,10
  6761. ** SDT - SET DATA TRANSFER MODE.
  6762. *
  6763. * ENTRY (TM) = 0 TO STREAM DATA.
  6764. *
  6765. * EXIT TO *ERR* IF ERROR.
  6766. *
  6767. * CALLS ATT, SOC, WCB.
  6768.  
  6769.  
  6770. SDT SUBR ENTRY/EXIT
  6771. LDC C0209 LOAD ATTRIBUTE OPERATION CODE
  6772. RJM SOC SET OPERATION CODE AND CONTROLLER
  6773. LDC 0#46E
  6774. STML CPBF+FCP PARAMETER 6E
  6775. LDDL TM
  6776. ADC 0#C080
  6777. STML CPBF+FCP+1 MODE FOR DATA
  6778. LDN 0
  6779. STML CPBF+FCP+2
  6780. LDN 14 COMMAND PACKET LENGTH
  6781. RJM WCB WRITE COMMAND PACKET
  6782. LDN CMSS
  6783. RJM ATT PROCESS ATTENTION
  6784. ZJP SDTX IF SUCCESSFUL
  6785. LCN ELCA LOAD CONTROLLER ATTRIBUTES FAILURE
  6786. RJM ERR PROCESS ERROR
  6787. SEC SPACE 4,15
  6788. ** SEC - SET ERROR CODE.
  6789. *
  6790. * ENTRY (CI) = CONTROLLER STATE TABLE ADDRESS.
  6791. * (DI) = DEVICE STATE TABLE ADDRESS.
  6792. * (EO) = EST ORDINAL.
  6793. *
  6794. * USES RF, T5, UC, WB+3, WB+4.
  6795. *
  6796. * CALLS CAC, CEA, CEC, CFM, CPF, CRP, DCE, DRT, IMR, IOM, LDP.
  6797.  
  6798.  
  6799. * THE *SETS* MONITOR REQUEST IS USED TO MOVE THE I/O REQUEST
  6800. * TO AN ALTERNATE CHANNEL. THE I/O BUFFER IS ONLY DELINKED
  6801. * IF THE REQUEST IS CHANNEL SPECIFIC.
  6802.  
  6803. SEC6 LDM RSDI CHECK IF RESTORE IN PROGRESS
  6804. LMD DI
  6805. NJN SEC7 IF NO RESTORE IN PROGRESS ON THIS DEVICE
  6806. LDC 100000
  6807. STML RMUX DISABLE REQUEST MULTIPLEXING
  6808. UJN SECX RETURN
  6809.  
  6810. SEC7 LDN 1 BUFFER COUNT TO BE DELINKED
  6811. STD WB+3
  6812. LDN SETS INSERT CODE IN *CBT*, RELEASE INTERLOCK
  6813. RJM IMR
  6814. * LDN 0 SET INTERLOCK RELEASED (FOR *CMP*)
  6815. STM RQLN,DI
  6816. SOD UC DECREMENT UNIT ACTIVITY COUNT
  6817.  
  6818. SEC SUBR ENTRY/EXIT
  6819. LDN 0
  6820. STD RF CLEAR RESET IN PROGRESS FLAG
  6821. RJM IOM CLEAR OPERATOR MESSAGE
  6822. RJM LDP LOAD DEVICE PARAMETERS
  6823. LDML EDBF+FALT
  6824. SHN -2 CREATE INDEX FROM FAULT CODE
  6825. STD T5
  6826. LDM TMSE,T5
  6827. STD WB+4 SET MASS STORAGE ERROR CODE
  6828. RJM DRT DETERMINE REQUEST TYPE
  6829. NJP SEC6 IF I/O REQUEST
  6830. LDML CTST,CI
  6831. SHN 21-15
  6832. MJN SEC1 IF CONTROLLER DEAD
  6833. SHN -21+15+22
  6834. LPC 137777 CLEAR RESET FLAG (BIT 14)
  6835. STML CTST,CI
  6836. SEC1 RJM CRP CLEAR *RESTORE IN PROGRESS*
  6837. RJM LDP LOAD DEVICE PARAMETERS
  6838. LDD CM+3
  6839. SHN 21-LMLF+14
  6840. PJN SEC2 IF *LIST MICROCODE REVISION* NOT SET
  6841. LPN 77
  6842. LMD IR+4
  6843. NJN SEC2 IF REQUEST NOT FOR THIS DRIVER
  6844. LDC 6S6+LMLF BITS - 1 TO CLEAR / STARTING BIT
  6845. RJM CPF CLEAR SPECIAL REQUEST BIT IN *PUT*
  6846. SEC2 RJM LDP LOAD DEVICE PARAMETERS
  6847. LDD CM+3
  6848. SHN 21-ECAF+14
  6849. PJN SEC3 IF *ENABLE CONTROLLER ACTIVITY* NOT SET
  6850. RJM CEC CHECK IF REQUEST IS FOR THIS CHANNEL
  6851. NJN SEC3 IF REQUEST IS NOT FOR THIS CHANNEL
  6852. RJM CEA CLEAR REQUEST
  6853. SEC3 RJM CAC CHECK FOR ALTERNATE CHANNEL
  6854. NJN SEC4 IF NO ALTERNATE CHANNEL
  6855. RJM DCE DOWN CHANNEL ON EQUIPMENT
  6856. UJN SEC5 COMPLETE PROCESSING
  6857.  
  6858. SEC4 LDC 3S6+ECAF+1 BITS - 1 TO CLEAR / STARTING BIT
  6859. RJM CPF CLEAR SPECIAL REQUEST BITS IN *PUT*
  6860. RJM CFM ENSURE *FORMAT PENDING* CLEARED IN MST
  6861. SEC5 LJM SECX RETURN
  6862. SEO SPACE 4,15
  6863. ** SEO - SET EST ORDINAL.
  6864. *
  6865. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  6866. * (CB) = CBT ORDINAL.
  6867. *
  6868. * EXIT (A) = (EO) = EST ORDINAL.
  6869. *
  6870. * USES EO, CW - CW+4.
  6871. *
  6872. * CALLS DRT.
  6873. *
  6874. * MACROS CBTE, PUTE.
  6875.  
  6876.  
  6877. SEO1 LDD CW+1 GET EST ORDINAL FROM *PUT*
  6878. SEO2 STD EO SET EST ORDINAL
  6879.  
  6880. SEO SUBR ENTRY/EXIT
  6881. LDI DI
  6882. ERRNZ PUTO CODE DEPENDS ON VALUE
  6883. SHN PUTLS
  6884. PUTE *
  6885. ADC UNCT FETCH UNIT CONTROL WORD
  6886. CRD CW
  6887. RJM DRT DETERMINE REQUEST TYPE
  6888. ZJN SEO1 IF NOT I/O REQUEST
  6889. LDD CB *CBT* ORDINAL
  6890. SHN CBTLS
  6891. CBTE *
  6892. ADC FSTC
  6893. CRD CW GET EST ORDINAL FROM *CBT*
  6894. LDD CW
  6895. UJN SEO2 SET EST ORDINAL AND RETURN
  6896. SEP SPACE 4,30
  6897. ** SEP - SET ERROR PROCESSING INTERLOCK.
  6898. *
  6899. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  6900. * (EO) = EST ORDINAL.
  6901. *
  6902. * EXIT (A) .EQ. 0, IF INTERLOCK SET FOR THIS DEVICE.
  6903. * (A) .NE. 0, IF ALREADY SET FOR A DIFFERENT DEVICE.
  6904. * (ERFL) = DEVICE STATE TABLE OF DEVICE WITH ERROR.
  6905. * TO *CMP10*, IF RESTORE IN PROGRESS ON OTHER MF.
  6906. *
  6907. * USES T1, CM - CM+4.
  6908. *
  6909. * CALLS CBI, CDS, CMR, DAS, LNE, SEO, UBP.
  6910. *
  6911. * MACROS DELAY, SMSTF, MONITOR.
  6912.  
  6913.  
  6914. SEP CON 0 ENTRY
  6915. LDML SEP SAVE RETURN ADDRESS
  6916. STML SEPR,DI
  6917. SEP1 LDM ERFL
  6918. ZJN SEP3 IF ERROR PROCESSING FLAG NOT SET
  6919. SEP2 LDML SEPR,DI GET RETURN ADDRESS
  6920. STDL T1
  6921. LDM ERFL RETURN (A) = 0 IF ERROR IS ON THIS DEVICE
  6922. LMD DI
  6923. LJM 0,T1 RETURN
  6924.  
  6925. * SET MMF ERROR PROCESSING INTERLOCKS, IF REQUIRED.
  6926.  
  6927. SEP3 LDML DVTP,DI
  6928. SHN 21-11
  6929. PJN SEP6 IF NOT SHARED DEVICE
  6930. LDN 0 INITIALIZE PARTITION SEARCH
  6931. SEP4 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
  6932. ZJN SEP6 IF NO MORE PARTITIONS TO PROCESS
  6933. RJM CDS CHECK DEVICE STATUS
  6934. MJP SEP10 IF DEVICE NOT RECOVERED
  6935.  
  6936. * DEVICE RECOVERED. SET ERROR INTERLOCK IN *BDT*.
  6937.  
  6938. LDD EO SET EST ORDINAL
  6939. STD CM+4
  6940. LDN SEPS SET ERROR PROCESSING INTERLOCK IN *BDT*
  6941. STD CM+1
  6942. MONITOR MTEM
  6943. LDD CM+4
  6944. NJP SEP13 IF NOT SUCCESSFUL
  6945. LDN 1 SET FLAG THAT SAYS THIS MF HAS INTERLOCK
  6946. STD CM+2
  6947. LDN 26 BIT TO CHANGE
  6948. RJM UBP UPDATE *BDLL* PARAMETER
  6949. SEP5 LDD EO
  6950. UJN SEP4 PROCESS NEXT PARTITION
  6951.  
  6952. SEP6 LDD DI SET ERROR PROCESSING FLAG
  6953. STM ERFL
  6954.  
  6955. * SET ERROR PROCESSING FLAG(S) IN THE MST(S).
  6956.  
  6957. SEP7 LDN 0 INITIALIZE PARTITION SEARCH
  6958. SEP8 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
  6959. ZJP SEP2 IF NO MORE PARTITIONS
  6960. RJM CDS CHECK DEVICE STATUS
  6961. MJN SEP9 IF DEVICE NOT RECOVERED
  6962. SMSTF GDER SET *ERROR RECOVERY IN PROGRESS* FLAG
  6963. SEP9 LDD EO
  6964. UJN SEP8 CHECK FOR NEXT PARTITION
  6965.  
  6966. * DEVICE NOT RECOVERED. SET RECOVERY ERROR INTERLOCK.
  6967.  
  6968. SEP10 LDN SRIS SET RECOVERY ERROR PROCESSING INTERLOCK
  6969. SEP11 STD CM+1
  6970. MONITOR MTEM
  6971. LDD CM+4
  6972. SBN 2
  6973. ZJN SEP13 IF REJECT (ANOTHER DRIVER HOLDS INTERLOCK)
  6974. LDD DI
  6975. STM ERFL SET ERROR PROCESSING FLAG
  6976. STM ERMF SET RECOVERY INTERLOCK FLAG
  6977. LDD CM+4
  6978. NJN SEP12 IF CONFLICTING INTERLOCKS SET
  6979. RJM SEO RESTORE ORIGINAL EST ORDINAL
  6980. UJN SEP7 RETURN SUCCESSFUL STATUS
  6981.  
  6982. * THE RECOVERY ERROR PROCESSING INTERLOCK WAS SET SUCCESSFULLY,
  6983. * BUT ONE OR MORE CONFLICTING *BDT* INTERLOCKS ARE STILL SET.
  6984. * *SEP* MUST WAIT, PERIODICALLY ISSUING *MTEM*/*GRIS* REQUESTS,
  6985. * UNTIL ALL CONFLICTING INTERLOCKS HAVE BEEN RELEASED.
  6986.  
  6987. SEP12 RJM DAS PROCESS ACTIVITY ON OTHER DEVICES
  6988. DELAY
  6989. RJM CMR CHECK FOR MMF *RESTORE* FLAGS
  6990. NJN SEP14 IF RESTORE IN PROGRESS ON OTHER MF
  6991. LDN GRIS GET RECOVERY INTERLOCK STATUS
  6992. UJN SEP11 CHECK FOR CONFLICTING INTERLOCKS
  6993.  
  6994. * INTERLOCK ATTEMPT UNSUCCESSFUL. THIS MEANS THAT ANOTHER MF
  6995. * HOLDS THE INTERLOCK (OR SOME OF THE INTERLOCKS) REQUIRED.
  6996. * TO AVOID A DEADLOCK, THIS MF MUST RELEASE ANY INTERLOCK
  6997. * THAT IT HOLDS, AND THEN RETRY THE INTERLOCK ATTEMPT LATER.
  6998.  
  6999. SEP13 RJM CBI CLEAR *BDT* ERROR PROCESSING INTERLOCKS
  7000. RJM DAS PROCESS ACTIVITY ON OTHER DEVICES
  7001. DELAY
  7002. RJM CMR CHECK FOR MMF *RESTORE* FLAGS
  7003. NJN SEP14 IF RESTORE IN PROGRESS ON OTHER MF
  7004. LJM SEP1 RETRY INTERLOCK
  7005.  
  7006. SEP14 LJM CMP10 ABANDON REQUEST (RETRY LATER)
  7007.  
  7008.  
  7009. ERFL CON 0 ERROR PROCESSING FLAG
  7010. ERMF CON 0 RECOVERY INTERLOCK FLAG
  7011. SFP SPACE 4,10
  7012. ** SFP - SET COMMON FORMAT PARAMETERS.
  7013. *
  7014. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  7015. * (FC) = 0 IF DRIVE DECLUSTERED.
  7016. * (CN) = CONTROLLER NUMBER.
  7017. * (DN) = DRIVE NUMBER.
  7018. *
  7019. * CALLS SOU.
  7020.  
  7021.  
  7022. SFP SUBR ENTRY/EXIT
  7023. LDC C280E+1S17 FORMAT OPERATION CODE
  7024. RJM SOU SET OPERATION CODE AND UNIT
  7025. LDC P02D5 PARAMETER TO SELECT DRIVE
  7026. STML CPBF+FCP
  7027. LDM PHYD,DI
  7028. SHN 10
  7029. STML CPBF+FCP+1 DRIVE TO FORMAT
  7030. LDC 0#1E5
  7031. STML CPBF+FCP+2 DO NOT READ HEADERS
  7032. LDD FC
  7033. ZJN SFPX IF DRIVE DECLUSTERED
  7034. LDD CN
  7035. SHN 10
  7036. ADD DN
  7037. STML CPBF+CUN LOGICAL ADDRESS
  7038. UJP SFPX RETURN
  7039. SFR SPACE 4,15
  7040. ** SFR - SEARCH FOR CONSECUTIVE REQUEST.
  7041. *
  7042. * ENTRY (A) = CURRENT *CBT* ORDINAL.
  7043. * (DI) = DEVICE STATE TABLE ADDRESS.
  7044. * (DT) = DRIVE TYPE.
  7045. *
  7046. * EXIT (NB) = 0 IF NO CONSECUTIVE REQUEST FOUND.
  7047. * = *CBT* ORDINAL OF NEXT REQUEST.
  7048. * (NR - NR+4) = PHYSICAL ADDRESS OF NEXT REQUEST.
  7049. *
  7050. * USES NB, CM - CM+4, NR - NR+4, T1 - T6.
  7051. *
  7052. * MACROS CBTE.
  7053.  
  7054.  
  7055. SFR9 LDN 0
  7056. STD NB
  7057.  
  7058. SFR SUBR ENTRY/EXIT
  7059. SHN CBTLS
  7060. CBTE *
  7061. ADC PAD1 FETCH SEEK PARAMETERS FROM *CBT*
  7062. CRD CM
  7063. ADN IOLK-PAD1 (T1) = I/O LINK-UP FLAGS
  7064. CRD T1
  7065. LDM ERCT,DI
  7066. NJN SFR9 IF IN ERROR RECOVERY
  7067. LDML PSBF,DT SET NUMBER OF SECTORS PER BUFFER
  7068. SHN -14
  7069. STD T0
  7070. LDM CYLN,DI
  7071. SFR1 SBM MC,DT
  7072. MJN SFR1.1 IF IN THE CORRECT PARTITION
  7073. SBN 1
  7074. PJN SFR1 IF NOT AT MAINTENANCE TRACK
  7075. SFR1.1 ADN 7
  7076. PJN SFR1.2 IF WITHIN LAST 8 CYLINDERS
  7077. LDML PSCY,DT SET SECTOR COUNT FOR 8 CYLINDERS
  7078. SHN 3
  7079. UJN SFR2 CONTINUE
  7080.  
  7081. SFR1.2 LDM STS,DT SET SECTOR COUNT FOR .LT. 8 CYLINDERS
  7082. LPC 777
  7083. SFR2 SBM CSCT,DI
  7084. SBD T0 LESS NUMBER OF SECTORS PER BUFFER
  7085. ZJN SFR3 IF TIME TO CURTAIL STREAMING
  7086. LDD T1+2
  7087. ZJN SFR3 IF NO REQUEST AVAILABLE
  7088. STD NB
  7089. SHN CBTLS
  7090. CBTE *
  7091. ADC PAD1 PHYSICAL ADDRESS OF NEXT REQUEST
  7092. CRD NR
  7093. ADN IOLK-PAD1 I/O LINK-UP WORD OF NEXT REQUEST
  7094. CRD T2
  7095. LDD T2 COMPARE LINK-UP FLAGS
  7096. LMD T1
  7097. LPC DRFM+ILFM
  7098. ZJN SFR5 IF SAME DIRECTION AND INTERLOCKED
  7099. SFR3 UJP SFR9 RETURN
  7100.  
  7101. SFR5 LDML PSBF,DT CALCULATE NEXT SECTOR
  7102. SHN -14
  7103. RAD CM+2
  7104. LDD NR+1 CHECK SEEK PARAMETERS
  7105. SBD CM+1
  7106. ZJN SFR6 IF SAME CYLINDER
  7107. SBN 1
  7108. NJN SFR3 IF NOT NEXT CYLINDER
  7109. LDD CM+2 CALCULATED NEXT SECTOR
  7110. SBM LSOC,DT
  7111. PJN SFR7 IF END OF CYLINDER REACHED
  7112. UJN SFR3 RETURN WITH NO CONSECUTIVE REQUEST
  7113.  
  7114. SFR6 LDD CM+2 CHECK NEXT SECTOR
  7115. LMD NR+2
  7116. ZJN SFR8 IF NEXT SECTOR ON SAME TRACK
  7117. LDD CM+2
  7118. LPN 77
  7119. SBM PSPT,DT
  7120. MJN SFR3 IF NOT AT END OF TRACK
  7121. LMD CM+2
  7122. LPN 77
  7123. LMD CM+2
  7124. ADD HN SET NEXT TRACK
  7125. SFR7 LMD NR+2
  7126. NJN SFR3 IF NOT NEXT SECTOR ON CONSECUTIVE TRACKS
  7127. SFR8 LJM SFRX RETURN
  7128. SLB SPACE 4,15
  7129. ** SLB - SET LINKAGE BITS.
  7130. *
  7131. * ENTRY (A) = *CBT* ORDINAL.
  7132. * (RW) = READ / WRITE STATUS.
  7133. *
  7134. * EXIT LINKAGE BITS SET IN *CBT* ENTRY / UEM BUFFER.
  7135. *
  7136. * USES PB, T1, T2, T5, T6, UA, UA+1, CM - CM+4.
  7137. *
  7138. * CALLS RLB, SUA, WLB.
  7139. *
  7140. * MACROS CBTE.
  7141.  
  7142.  
  7143. SLB SUBR ENTRY/EXIT
  7144. STD PB
  7145. RJM SUA SET UEM ADDRESS
  7146. LDN PAD1
  7147. STD T2
  7148. LDN 5 UEM WORD COUNT
  7149. STD T5
  7150. LDML SLBB,RW SET PROCESSOR ADDRESS
  7151. STML SLBA
  7152. SLB1 LRD UA LOAD *R* REGISTER
  7153. LDD PB
  7154. SHN CBTLS READ CONTROL BUFFER WORD
  7155. CBTE *
  7156. ADC 0 FWA OF *CBT*
  7157. ADD T2
  7158. CRD CM
  7159. LDC SBUF-4 SET BUFFER ADDRESS
  7160. STDL T1
  7161. LDC 1S17 READ START OF BUFFER SEGMENT
  7162. CRML SBUF,T5
  7163. LDN CM+3 SET *CBT* ENTRY ADDRESS
  7164. STD T6
  7165. RJM 0 MOVE LINKAGE BITS
  7166. SLBA EQU *-1
  7167. LDN 10 ADVANCE *R* REGISTER IMAGE
  7168. RAD UA+1
  7169. SHN -14
  7170. RAD UA
  7171. AOD T2 ADVANCE CONTROL BUFFER WORD
  7172. LMN PAD4+1
  7173. NJN SLB1 IF NOT COMPLETE
  7174. UJP SLBX RETURN
  7175.  
  7176.  
  7177. SLBB CONL RLB
  7178. CONL WLB
  7179. SMD SPACE 4,15
  7180. ** SMD - SKIP MEDIA DEFECT DURING RESTORE.
  7181. *
  7182. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  7183. * (T5) = PHYSICAL TRACK.
  7184. * (T6) = PHYSICAL SECTOR.
  7185. * (DT) = DRIVE TYPE.
  7186. *
  7187. * EXIT (A) = 0 IF NOT RESTORE.
  7188. *
  7189. * USES T5, T6.
  7190.  
  7191.  
  7192. SMD4 LDN 0
  7193.  
  7194. SMD SUBR ENTRY/EXIT
  7195. LDML RPBF+OPC
  7196. LMC CE005
  7197. NJN SMD4 IF NOT RESTORE
  7198.  
  7199. * SET RCYL, RTSN TO THE PHYSICAL SECTOR AFTER THE FAILING ONE.
  7200.  
  7201. AOD T6 PHYSICAL SECTOR
  7202. SHN 14
  7203. ADD T5 PHYSICAL TRACK
  7204. SHN 6
  7205. STM RTSN
  7206. AOD T5
  7207. LDM LSOC,DT
  7208. SHN -6
  7209. SBD T5
  7210. MJN SMD1 IF LAST TRACK
  7211. LDD T6
  7212. SBM PSPT,DT
  7213. MJN SMD2 IF NEXT RESTORE ADDRESS ALREADY SET
  7214. SHN 14 POTENTIAL RESIDUAL SECTOR NUMBER
  7215. ADD T5
  7216. SHN 6
  7217. STM RTSN
  7218. UJN SMD2 SET REQUESTS TO MULTIPLEX
  7219.  
  7220. SMD1 LDM RTSN
  7221. SBM LSOC,DT
  7222. MJN SMD2 IF NEXT RESTORE ADDRESS ALREADY SET
  7223. STM RTSN
  7224. AOM RCYL
  7225. SMD2 LDML RMUX
  7226. SHN 21-17
  7227. MJN SMD3 IF MULTIPLEXING I/O REQUESTS DISABLED
  7228. LDN IRBR
  7229. STML RMUX I/O REQUESTS BEFORE NEXT RESTORE
  7230. SMD3 UJP SMDX RETURN
  7231. SOC SPACE 4,10
  7232. ** SOC - SET OPERATION CODE AND CONTROLLER.
  7233. *
  7234. * ENTRY (A) = OPERATION CODE.
  7235. * (CN) = CONTROLLER NUMBER.
  7236.  
  7237.  
  7238. SOC SUBR ENTRY/EXIT
  7239. STML CPBF+OPC
  7240. LDD CN
  7241. SHN 10
  7242. LMC 0#FF
  7243. STM CPBF+CUN
  7244. UJN SOCX RETURN
  7245. SOU SPACE 4,15
  7246. ** SOU - SET OPERATION CODE AND UNIT.
  7247. *
  7248. * ENTRY (A) = 1/X, 17/YY.
  7249. * WHERE X = 0 IF (DN) IS THE DRIVE NUMBER.
  7250. * = 1 IF (PHYD,DI) IS THE DRIVE NUMBER.
  7251. * YY = OPERATION CODE.
  7252. * (CN) = CONTROLLER NUMBER.
  7253. * (DN) = DRIVE NUMBER.
  7254. * (DI) = DEVICE STATE TABLE ADDRESS.
  7255. *
  7256. * EXIT (A) = UNIT NUMBER FOR COMMAND PACKET.
  7257.  
  7258.  
  7259. SOU SUBR ENTRY/EXIT
  7260. STML CPBF+OPC
  7261. MJN SOU1 IF USING PHYSICAL DRIVE
  7262. LDD CN MERGE CONTROLLER + DRIVE NUMBERS
  7263. SHN 10
  7264. LMD DN
  7265. UJN SOU2 SET FACILITY ADDRESS
  7266.  
  7267. SOU1 LDD CN MERGE CONTROLLER + DRIVE NUMBERS
  7268. SHN 10
  7269. ADM PHYD,DI
  7270. SOU2 STM CPBF+CUN
  7271. UJN SOUX RETURN
  7272. SRF SPACE 4,10
  7273. ** SRF - SET DRIVER RELOAD FLAG.
  7274. *
  7275. * EXIT (A) = 0.
  7276. *
  7277. * USES CM+1 - CM+4.
  7278. *
  7279. * CALLS DCR.
  7280. *
  7281. * MACROS MONITOR, CHTE.
  7282.  
  7283.  
  7284. SRF SUBR ENTRY/EXIT
  7285. RJM DCR DROP CHANNEL RESERVATION
  7286. * LDN 0
  7287. STD CM+2 CLEAR UNUSED BYTE
  7288. CHTE *
  7289. LDC CTALL*2 ADDRESS OF CHANNEL CONTROLWARE TABLE ENTRY
  7290. STD CM+4
  7291. SHN -14
  7292. STD CM+3
  7293. LDN 1 SET NUMBER OF REQUESTS
  7294. STD CM+1
  7295. LDD MA STORE REQUEST IN MESSAGE BUFFER
  7296. CWM SRFA,CM+1
  7297. MONITOR UTEM SET RELOAD FLAG
  7298. * LDN 0
  7299. UJN SRFX RETURN
  7300.  
  7301.  
  7302. SRFA VFD 1/0,5/0,6/1,6/,42/1
  7303. SRI SPACE 4,30
  7304. ** SRI - SET SLAVE RESET INTERLOCK.
  7305. *
  7306. * IN A MMF ENVIRONMENT, DAS MUST BE CONFIGURED WITH MORE
  7307. * THAN ONE DRIVER ACCESSING EACH CONTROLLER. TO PREVENT AN
  7308. * ENDLESS SEQUENCE OF SLAVE RESETS UNDER SOME ERROR CONDITIONS,
  7309. * AN EXTENDED MEMORY FLAG REGISTER INTERLOCK IS USED TO ENSURE
  7310. * THAT ONLY ONE DRIVER TRIES TO PERFORM A SLAVE RESET AT ANY
  7311. * ONE TIME. IF *1DA* ATTEMPTS TO SET THIS INTERLOCK AND
  7312. * DETERMINES THAT IT IS HELD BY ANOTHER DRIVER, IT WILL WAIT
  7313. * UNTIL THE INTERLOCK IS CLEAR, AND THEN CLEAR THE BUFFER COUNT
  7314. * AND COMPLETE THE CURRENT REQUEST. THE REQUEST WILL BE
  7315. * RETRIED ON A SUBSEQUENT PASS THROUGH THE MAIN LOOP.
  7316. *
  7317. * ENTRY (RW) = 0, IF SLAVE RESET.
  7318. * (CRIB) .NE. 0, IF SLAVE RESET INTERLOCK ALREADY SET.
  7319. *
  7320. * EXIT INTERLOCK SET, IF FIRST *IFR* CALL SUCCESSFUL.
  7321. * (CRIB) .NE. 0, IF SLAVE RESET INTERLOCK SET.
  7322. * TO *CMP10*, IF FIRST *IFR* CALL UNSUCCESSFUL.
  7323. *
  7324. * CALLS IFR.
  7325. *
  7326. * MACROS DELAY.
  7327.  
  7328.  
  7329. SRI SUBR ENTRY/EXIT
  7330. SRIA LDD RW
  7331. * UJN SRIX (NO SHARED BUFFERED DEVICES CONFIGURED)
  7332. NJN SRIX IF NOT SLAVE RESET
  7333. STM SRIB CLEAR *UNSUCCESSFUL IFR CALL* FLAG
  7334. LDM CRIB
  7335. NJN SRIX IF SLAVE RESET INTERLOCK ALREADY SET
  7336. SRI1 LDN /MMF/DSRI SET *DAS SLAVE RESET INTERLOCK* FLAG BIT
  7337. RJM IFR
  7338. NJN SRI3 IF NOT SUCCESSFUL
  7339. LDC 0
  7340. * LDC NONZERO (AT LEAST ONE UNSUCCESSFUL *IFR* CALL)
  7341. SRIB EQU *-1
  7342. NJN SRI2 IF NOT SUCCESSFUL ON FIRST TRY
  7343. LDN 1 SET *SLAVE RESET INTERLOCK SET* FLAG
  7344. STM CRIB
  7345. UJN SRIX RETURN
  7346.  
  7347. SRI2 LCN /MMF/DSRI CLEAR *DAS SLAVE RESET INTERLOCK* FLAG BIT
  7348. RJM IFR
  7349. LJM CMP10 ABANDON REQUEST (RETRY LATER)
  7350.  
  7351. SRI3 STM SRIB SET *UNSUCCESSFUL IFR CALL* FLAG
  7352. DELAY 20B DELAY TWO MILLISECONDS
  7353. UJN SRI1 RETRY INTERLOCK ATTEMPT
  7354. SRP SPACE 4,10
  7355. ** SRP - SEARCH RESPONSE PACKET.
  7356. *
  7357. * ENTRY (A) = PARAMETER ID TO SEARCH FOR.
  7358. *
  7359. * EXIT (A) .EQ. 0 IF ID FOUND.
  7360. * (A) .LT. 0 IF ID NOT FOUND.
  7361. * (RPBF+5,T3) .EQ. THE PARAMETER.
  7362. *
  7363. * USES T1 - T3.
  7364.  
  7365.  
  7366. SRP1 LDML RPBF+5,T3 EXTRACT PARAMETER BLOCK LENGTH
  7367. SHN -10-1
  7368. ADN 1 CONVERT OCTET COUNT TO BYTE COUNT
  7369. STD T0
  7370. RAD T3 ADVANCE BUFFER INDEX
  7371. LDD T2
  7372. SBD T0
  7373. SRP2 MJN SRPX IF END OF RESPONSE PACKET
  7374. STD T2
  7375. LDM RPBF+5,T3 CHECK NEXT PARAMETER BLOCK
  7376. LMD T1
  7377. LPC 377
  7378. NJN SRP1 IF NOT REQUESTED ID
  7379.  
  7380. SRP SUBR ENTRY/EXIT
  7381. STD T1
  7382. LDN 0 INITIALIZE INDEX
  7383. STD T3
  7384. LDM RPBF+PLN PACKET LENGTH
  7385. ADN 1
  7386. SHN -1 CONVERT TO PP WORD COUNT
  7387. SBN 5
  7388. UJN SRP2 CHECK MINIMUM PACKET LENGTH
  7389. SSS SPACE 4,15
  7390. ** SSS - SET SUSPECT STATE ON DEVICE.
  7391. *
  7392. * THIS ROUTINE ALSO SAVES THE FAILING DRIVE IN WORD *PILL*
  7393. * SO THAT THE ALTERNATE CHANNEL DRIVER CAN INCLUDE THE CORRECT
  7394. * UNIT NUMBER IN THE BML MESSAGE IF THE ERROR IS RECOVERED.
  7395. *
  7396. * ENTRY (EO) = EST ORDINAL.
  7397. *
  7398. * USES T6, T7, CM+1 - CM+4.
  7399. *
  7400. * CALLS REE.
  7401. *
  7402. * MACROS MONITOR, PUTE.
  7403.  
  7404.  
  7405. SSS SUBR ENTRY/EXIT
  7406. RJM REE READ EST ENTRY
  7407. LDD CM CHECK DEVICE STATUS
  7408. LPN 2
  7409. NJN SSSX IF DEVICE *OFF* OR *DOWN*
  7410. LDD EO
  7411. STD CM+1 SET EST ORDINAL
  7412. LDD IR+4
  7413. STD CM+3 INSERT CHANNEL NUMBER
  7414. LDN SSES
  7415. STD CM+2 SET SUSPECT STATE ON DEVICE
  7416. MONITOR SEQM
  7417.  
  7418. * SAVE FAILING DRIVE IN WORD *PILL* FOR THE ALTERNATE CHANNEL.
  7419.  
  7420. LDC PILL*100+6
  7421. STD T6 6/WORD, 6/BITS TO CHANGE
  7422. LDC 52*100
  7423. STD T7 LOW ORDER BIT TO CHANGE
  7424. LDM PHYD,DI
  7425. STD CM+2 NEW VALUE
  7426. LDD MA
  7427. CWD T6 STORE MESSAGE BUFFER PARAMETERS
  7428. LDN 1
  7429. STD CM+1 PARAMETER WORD COUNT
  7430. LDI DI
  7431. ERRNZ PUTO CODE DEPENDS ON VALUE
  7432. SHN PUTLS
  7433. PUTE *
  7434. ADC 0 SET BASE *PUT* ENTRY ADDRESS
  7435. STD CM+4
  7436. SHN -14
  7437. STD CM+3
  7438. MONITOR UTEM SAVE FAILING DRIVE IN *PUT*
  7439. UJP SSSX RETURN
  7440. STF SPACE 4,15
  7441. ** STF - REQUEST TRACK FLAW.
  7442. *
  7443. * ENTRY (CB) = CURRENT *CBT* ORDINAL.
  7444. * (EO) = EST ORDINAL.
  7445. * (T4) = CYLINDER NUMBER.
  7446. * (T5) = PHYSICAL TRACK.
  7447. * (T7) = LOGICAL SECTOR WITHIN PHYSICAL TRACK.
  7448. *
  7449. * USES T4, CM - CM+4.
  7450. *
  7451. * CALLS CDA, C2D, IDM, REE.
  7452. *
  7453. * MACROS MONITOR.
  7454.  
  7455.  
  7456. STF SUBR ENTRY/EXIT
  7457. RJM REE READ EST ENTRY
  7458. LDD CM+4 GET PARTITION CYLINDER OFFSET
  7459. SHN 3
  7460. ADK SCYL
  7461. CRD CM
  7462. LDD T4 CONVERT ABSOLUTE TO RELATIVE CYLINDER
  7463. SBD CM+2
  7464. STD T4
  7465. RJM CDA CONVERT DISK ADDRESS
  7466. LDD T6
  7467. STD CM+2 TRACK NUMBER FOR MONITOR REQUEST
  7468. RJM C2D SET TRACK NUMBER IN MESSAGE
  7469. STM STFB+5
  7470. LDD T6
  7471. SHN -6
  7472. RJM C2D SET TRACK NUMBER IN MESSAGE
  7473. STM STFB+4
  7474. LDD EO
  7475. SHN -3 CONVERT EST ORDINAL
  7476. RJM C2D
  7477. STM STFB+1 SET ORDINAL IN MESSAGE
  7478. LDD EO
  7479. STD CM+1
  7480. LPN 7
  7481. SHN 6 CONVERT LOW ORDER DIGIT
  7482. ADC 2R0,
  7483. STM STFB+2
  7484. LDK SFTS INSERT SUBFUNCTION
  7485. STD CM+3
  7486. MONITOR SMDM SET TRACK FLAW REQUEST IN MST
  7487. LDD CM+1
  7488. NJN STF1 IF THIS FLAW ALREADY REQUESTED
  7489. LDC STFA
  7490. STML MAD1 ISSUE ERROR LOG MESSAGE
  7491. RJM IDM
  7492. STF1 LJM STFX RETURN
  7493.  
  7494.  
  7495. STFA VFD 24/0 RESERVED
  7496. VFD 12/1 ERRLOG ALERT FLAG
  7497. VFD 12/STFAL MESSAGE LENGTH
  7498. VFD 12/ELDY ERRLOG DAYFILE
  7499.  
  7500. STFB DATA C*EQXXX,TKNNNN, MEDIA DEFECT ENCOUNTERED.*
  7501.  
  7502. .1 SET *-STFA+4
  7503. STFAL EQU .1/5
  7504. STO SPACE 4,10
  7505. ** STO - SET TIMEOUT.
  7506. *
  7507. * ENTRY (A) = TIMEOUT VALUE (IN SECONDS).
  7508. *
  7509. * USES CM - CM+4, T5 - T7.
  7510. *
  7511. * MACROS FTTE.
  7512.  
  7513.  
  7514. STO SUBR ENTRY/EXIT
  7515. STD T6
  7516. LDC RTCL FETCH CURRENT TIME
  7517. CRD CM
  7518. LDD T6
  7519. RAD CM+1 SET TIME LIMIT
  7520. SHN -14
  7521. RAD CM
  7522. LDM STO SET CALLERS ADDRESS
  7523. STD T7
  7524. LDN 0
  7525. STD T5
  7526. LDI DI
  7527. ERRNZ PUTO CODE DEPENDS ON VALUE
  7528. SHK FTTLS
  7529. FTTE *
  7530. ADC 0 STORE *FTT* ENTRY
  7531. CWD T5
  7532. UJN STOX RETURN
  7533. SUA SPACE 4,10
  7534. ** SUA - SET UEM ADDRESS.
  7535. *
  7536. * ENTRY (A) = *CBT* ORDINAL.
  7537. *
  7538. * EXIT (UA - UA+1) = UEM ADDRESS / 100.
  7539. *
  7540. * USES UA, UA+1, CM - CM+4.
  7541. *
  7542. * MACROS CBTE.
  7543.  
  7544.  
  7545. SUA SUBR ENTRY/EXIT
  7546. SHN CBTLS
  7547. CBTE *
  7548. ADC IOLK READ *CBT* ENTRY
  7549. CRD CM
  7550. LDD CM+4 EXTRACT RELATIVE UEM ADDRESS
  7551. ADC 0
  7552. SUAA EQU *-1
  7553. SHN -6
  7554. STD UA+1 SET ABSOLUTE ADDRESS / 100
  7555. LDD CM+3
  7556. ADC 0
  7557. SUAB EQU *-1
  7558. SHN 6
  7559. RAD UA+1
  7560. SHN -14
  7561. STD UA
  7562. UJN SUAX RETURN
  7563. SUD SPACE 4,10
  7564. ** SUD - SPIN UP DRIVE.
  7565. *
  7566. * ENTRY (OUPD,DI) = PHYSICAL DRIVE TO SPIN UP.
  7567. * (DI) = DEVICE STATE TABLE ADDRESS.
  7568. * (EO) = EST ORDINAL.
  7569. *
  7570. * EXIT (A) = 0 IF COMMAND SUCCESSFUL.
  7571. * (PHYD,DI) = PHYSICAL DRIVE.
  7572. *
  7573. * CALLS ATT, SOU, WCB.
  7574.  
  7575.  
  7576. SUD SUBR ENTRY/EXIT
  7577. LDM OUPD,DI SET PHYSICAL DRIVE TO SPIN UP
  7578. STM PHYD,DI
  7579. SHN 10
  7580. STML CPBF+FCP+1 DRIVE TO SPIN UP
  7581. LDC P02D5
  7582. STML CPBF+FCP PHYSICAL DRIVE PARAMETER
  7583. LDC C0301 REPORT CONDITION OPERATION CODE
  7584. RJM SOU SET OPERATION CODE AND UNIT
  7585. LDN 12 COMMAND PACKET LENGTH
  7586. RJM WCB WRITE COMMAND BLOCK
  7587. LDN CMSS
  7588. RJM ATT PROCESS ATTENTION
  7589. NJP SUD2 IF ERROR
  7590. LDML RPBF+6
  7591. SHN 21-7
  7592. MJN SUD2 IF DRIVE NOT OPERATIONAL
  7593. LDC C0700 SET OPERATING MODE OPERATION CODE
  7594. RJM SOU SET OPERATION CODE AND UNIT
  7595. LDC P02D5
  7596. STML CPBF+FCP PHYSICAL DRIVE PARAMETER
  7597. LDM OUPD,DI PHYSICAL DRIVE
  7598. SHN 10
  7599. STML CPBF+FCP+1 DRIVE TO SPIN UP
  7600. LDC P0351
  7601. STML CPBF+FCP+2
  7602. LDC 0#8000
  7603. STML CPBF+FCP+3 PARAMETER TO SELECT SPIN UP
  7604. LDN 16 COMMAND PACKET LENGTH
  7605. RJM WCB WRITE COMMAND PACKET
  7606. LDN CMSS
  7607. RJM ATT PROCESS ATTENTION
  7608. SUD2 UJP SUDX RETURN
  7609. SUI SPACE 4,15
  7610. ** SUI - SET UNIT INTERLOCK.
  7611. *
  7612. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  7613. *
  7614. * EXIT (A) = 0 IF *PUT* ENTRY INTERLOCKED.
  7615. * (UC) = UNIT ACTIVITY COUNT INCREMENTED.
  7616. * (CM+1) = *BIOM* STATUS.
  7617. *
  7618. * USES CM+1, CM+2, UC.
  7619. *
  7620. * MACROS MONITOR.
  7621.  
  7622.  
  7623. SUI SUBR ENTRY/EXIT
  7624. LDI DI SET *PUT* ORDINAL
  7625. ERRNZ PUTO CODE DEPENDS ON VALUE
  7626. STD CM+2
  7627. LDN SUIS SET SUBFUNCTION
  7628. STD CM+1
  7629. MONITOR BIOM INTERLOCK DEVICE
  7630. LDD CM+1
  7631. NJN SUIX IF INTERLOCK NOT ACQUIRED
  7632. AOD UC ADVANCE UNIT ASSIGNED COUNT
  7633. LDC 4000
  7634. STM RQLN,DI SET UNIT INTERLOCKED
  7635. LDN 0
  7636. UJN SUIX RETURN
  7637. TMSE SPACE 4,10
  7638. ** TMSE - TABLE OF MASS STORAGE ERROR CODES.
  7639. *
  7640. * INDEXED BY FAULT CODE / 4.
  7641.  
  7642.  
  7643. TMSE BSS 0
  7644. LOC 0
  7645.  
  7646. CON CHPE CHANNEL PARITY
  7647. CON CHFE CHANNEL FAILURE
  7648. CON FTOE FUNCTION TIMEOUT
  7649. CON PARE DATA PARITY (MEDIA)
  7650. CON NRDE DEVICE NOT READY
  7651. CON IDTE DATA TRANSFER
  7652. CON DSTE DEVICE STATUS
  7653. CON DSTE DEVICE STATUS
  7654. CON DSTE DEVICE STATUS
  7655. CON DSTE DEVICE STATUS
  7656. CON DSTE DEVICE STATUS
  7657. CON DDFE DIAGNOSTIC FAILURE
  7658. CON RAME CONTROLLER MEMORY
  7659. CON RAME CONTROLLER MEMORY
  7660. CON DRVE DRIVE RESERVE
  7661. CON RAME CONTROLLER MEMORY
  7662. CON DSTE DEVICE STATUS
  7663. LOC *O
  7664. TMSK SPACE 4,10
  7665. ** TMSK - TABLE OF CONTROLLER MASKS.
  7666. *
  7667. * INDEXED BY CONTROLLER NUMBER.
  7668. SPACE 2
  7669. TMSK BSS 0
  7670. LOC 0
  7671.  
  7672. CON 001
  7673. CON 002
  7674. CON 004
  7675. CON 010
  7676. CON 020
  7677. CON 040
  7678. CON 100
  7679. CON 200
  7680. LOC *O
  7681. UBP SPACE 4,20
  7682. ** UBP - UPDATE *BDLL* PARAMETER.
  7683. *
  7684. * THIS ROUTINE CHANGES A BIT IN WORD *BDLL* OF THE MST.
  7685. *
  7686. * ENTRY (A) = BIT TO CHANGE.
  7687. * (EO) = EST ORDINAL.
  7688. * (CM+2) = NEW VALUE.
  7689. *
  7690. * USES T6, T7, CM - CM+4.
  7691. *
  7692. * CALLS REE.
  7693. *
  7694. * MACROS MONITOR.
  7695.  
  7696.  
  7697. UBP SUBR ENTRY/EXIT
  7698. SHN 6
  7699. STD T7 BIT NUMBER * 100B
  7700. LDN 1
  7701. STD T6 NUMBER OF BITS TO CHANGE
  7702. LDD MA
  7703. CWD T6 STORE MESSAGE BUFFER PARAMETERS
  7704. RJM REE READ EST ENTRY
  7705. LDD CM+4
  7706. SHN 3
  7707. ADN BDLL SET ADDRESS OF *BDLL*
  7708. STD CM+4
  7709. SHN -14
  7710. STD CM+3
  7711. LDN 1
  7712. STD CM+1 PARAMETER WORD COUNT
  7713. MONITOR UTEM
  7714. UJN UBPX RETURN
  7715. UEC SPACE 4,15
  7716. ** UEC - UPDATE MST ERROR COUNT.
  7717. *
  7718. * ENTRY (EO) = EST ORDINAL.
  7719. * (BMLM+1) = BML MESSAGE SYMPTOM CODE.
  7720. * (MISC - BIT 0) = 1 IF UNRECOVERED ERROR.
  7721. *
  7722. * USES CM+1 - CM+3.
  7723. *
  7724. * MACROS MONITOR.
  7725.  
  7726.  
  7727. UEC SUBR ENTRY/EXIT
  7728. LDM BMLM+1
  7729. LMC D"DN"*400+HD0111
  7730. NJN UECX IF NOT COMPLETION MESSAGE
  7731. LDD EO
  7732. STD CM+1 SET EST ORDINAL
  7733. LDM MISC
  7734. LPN 1 SET BYTE NUMBER
  7735. ADN 3
  7736. STD CM+2
  7737. LDN ICTS INCREMENT ERROR COUNT
  7738. STD CM+3
  7739. MONITOR SMDM
  7740. UJN UECX RETURN
  7741. UHD SPACE 4,15
  7742. ** UHD - UNPACK HEX DATA.
  7743. *
  7744. * STATUS READ FROM THE IPI CHANNEL AND RESPONSES RECEIVED
  7745. * FROM THE CONTROLLER ARE IN 16-BIT WORDS. THIS ROUTINE
  7746. * MOVES CONSECUTIVE 16-BIT WORDS TO CONSECUTIVE 12-BIT
  7747. * WORDS. THUS, 3 16-BIT WORDS WOULD BE UNPACKED AND STORED
  7748. * IN 4 12-BIT WORDS IN PP MEMORY.
  7749. *
  7750. * ENTRY (A) = DESTINATION DATA ADDRESS.
  7751. * (T2) = SOURCE DATA ADDRESS.
  7752. * (T4) = 16-BIT WORD COUNT OF HEX DATA.
  7753. *
  7754. * EXIT (A) = CM WORD COUNT OF 12 BIT DATA.
  7755. *
  7756. * USES T2 - T5.
  7757. *
  7758. * CALLS DV5.
  7759.  
  7760.  
  7761. UHD3 AODL T3 SET END OF 12 BIT DATA
  7762. STML UHDA
  7763. LDN ZERL ENSURE ZERO FILL TO CM WORD BOUNDARY
  7764. CRM *,ON
  7765. UHDA EQU *-1
  7766. LDDL T3 SET BYTE COUNT OF 12 BIT DATA
  7767. SBDL T5
  7768. RJM DV5 CONVERT TO CM WORD COUNT
  7769.  
  7770. UHD SUBR ENTRY/EXIT
  7771. STDL T3
  7772. STDL T5 PRESERVE DESTINATION BUFFER ADDRESS
  7773. UHD1 LDIL T2
  7774. SHN 16
  7775. STI T3 UNPACK N+3RD BYTE
  7776. SHN -6
  7777. SCN 77
  7778. STM 1,T3
  7779. AODL T3
  7780. SOD T4
  7781. UHD2 ZJN UHD3 IF END OF HEX DATA
  7782. AODL T2
  7783. LDIL T2
  7784. SHN -10
  7785. RAI T3 UNPACK N+4TH BYTE
  7786. AODL T3
  7787. LDIL T2
  7788. SHN 4
  7789. SCN 17
  7790. STI T3
  7791. SOD T4
  7792. ZJN UHD2 IF END OF HEX DATA
  7793. AODL T2
  7794. LDIL T2
  7795. STM 1,T3
  7796. SHN -14
  7797. RAI T3 UNPACK N+5TH BYTE
  7798. AODL T3
  7799. SOD T4
  7800. ZJN UHD2 IF END OF HEX DATA
  7801. AODL T2
  7802. AODL T3
  7803. UJP UHD1 CONTINUE UNPACK
  7804. UPD SPACE 4,25
  7805. ** UPD - UDPATE PHYSICAL DRIVE NUMBER.
  7806. *
  7807. * THIS ROUTINE UPDATES (PHYD,DI) TO THE NEXT PHYSICAL DRIVE
  7808. * OF THE LOGICAL UNIT. THE PHYSICAL DRIVE PROGRESSION IS AS
  7809. * FOLLOWS, WHERE X IS THE CABINET RANK.
  7810. *
  7811. * TYPE PROGRESSION
  7812. *
  7813. * 1 NX. (N = 0-3)
  7814. * 1P 0X, 3X.
  7815. * 2 0X, 1X.
  7816. * 2P 0X, 1X, 3X.
  7817. * 3 0X, 1X, 2X.
  7818. * 3P 0X, 1X, 2X, 3X.
  7819. * 4 0X, 1X, 2X, 3X.
  7820. *
  7821. * ENTRY (DT) = DRIVE TYPE.
  7822. * (DI) = DEVICE STATE TABLE ADDRESS.
  7823. * (DD) = NUMBER OF DATA DRIVES IN DEVICE.
  7824. * (PD) = NUMBER OF PARITY DRIVES IN DEVICE.
  7825. *
  7826. * EXIT (A) = 0 IF (PHYD,DI) IS THE LAST PHYSICAL
  7827. * DRIVE OF THE LOGICAL UNIT. NO UPDATE IS
  7828. * MADE IN THIS CASE.
  7829.  
  7830.  
  7831. UPD2 LDN 0 EXIT WITH NO UPDATE
  7832.  
  7833. UPD SUBR ENTRY/EXIT
  7834. LDM PHYD,DI
  7835. SHN -3
  7836. ADN 1
  7837. SBD DD
  7838. MJN UPD4 IF NORMAL UPDATE
  7839. NJN UPD2 IF NO UPDATE NECESSARY
  7840. LDD PD
  7841. ZJN UPDX IF NO UPDATE NECESSARY
  7842. LDN 4
  7843. SBD DD
  7844. SHN 3
  7845. UJN UPD5 UPDATE TO PARITY DRIVE
  7846.  
  7847. UPD4 LDN 10B UPDATE TO NEXT STRING
  7848. UPD5 RAM PHYD,DI
  7849. UJP UPDX RETURN
  7850. VDA SPACE 4,10
  7851. ** VDA - VERIFY DRIVE ATTRIBUTES.
  7852. *
  7853. * ENTRY (DT) = DRIVE TYPE.
  7854. *
  7855. * EXIT TO *ERR* IF ERROR.
  7856. *
  7857. * USES T1.
  7858. *
  7859. * CALLS ATT, IDT, SOU, WCB.
  7860.  
  7861.  
  7862. VDA11 RJM ATT WAIT FOR COMPLETION RESPONSE
  7863.  
  7864. VDA SUBR ENTRY/EXIT
  7865.  
  7866. * RESTORE DRIVE ATTRIBUTES.
  7867.  
  7868. LDC C0202 RESTORE ATTRIBUTES OPERATION CODE
  7869. RJM SOU SET OPERATION CODE AND UNIT
  7870. LDN 6 COMMAND PACKET LENGTH
  7871. RJM WCB WRITE COMMAND PACKET
  7872. LDN CMSS
  7873. RJM ATT PROCESS ATTENTION
  7874. NJP VDA10 IF NOT SUCCESSFUL
  7875.  
  7876. * CHECK ATTRIBUTE 6E.
  7877.  
  7878. LDC C0200 REPORT ATTRIBUTE OPERATION CODE
  7879. RJM SOU SET OPERATION CODE AND UNIT
  7880. LDC P036C
  7881. STML CPBF+FCP REPORT ATTRIBUTE 6E
  7882. LDC 0#806E
  7883. STML CPBF+FCP+1
  7884. LDN 12 COMMAND PACKET LENGTH
  7885. RJM IDT INPUT DATA TO PP
  7886. LDML ATTB+1
  7887. LMC 0#C080
  7888. NJN VDA1 IF ATTRIBUTE INCORRECT
  7889. RJM ATT WAIT FOR COMPLETION RESPONSE
  7890. UJP VDA3 CHECK ATTRIBUTE 6F
  7891.  
  7892. VDA1 RJM ATT WAIT FOR COMPLETION RESPONSE
  7893. LDC C0209 LOAD ATTRIBUTE OPERATION CODE
  7894. RJM SOU SET OPERATION CODE AND UNIT
  7895. LDC 0#46E
  7896. STML CPBF+FCP PARAMETER 6E
  7897. LDC 0#C080 FOR PARITY DRIVES THIS ENABLES PARITY
  7898. STML CPBF+FCP+1 CORRECTION BEFORE ECC CORRECTION
  7899. LDN 0
  7900. STML CPBF+FCP+2
  7901. LDN 14 COMMAND PACKET LENGTH
  7902. RJM WCB WRITE COMMAND PACKET
  7903. LDN CMSS
  7904. RJM ATT PROCESS ATTENTION
  7905. NJN VDA2 IF NOT SUCCESSFUL
  7906. LDC C020A SAVE ATTRIBUTE OPERATION CODE
  7907. RJM SOU SET OPERATION CODE AND UNIT
  7908. LDN 6 COMMAND PACKET LENGTH
  7909. RJM WCB WRITE COMMAND PACKET
  7910. LDN CMSS
  7911. RJM ATT PROCESS ATTENTION
  7912. VDA2 NJP VDA10 IF NOT SUCCESSFUL
  7913.  
  7914. * CHECK ATTRIBUTE PARAMETER 6F.
  7915.  
  7916. VDA3 LDC C0200
  7917. RJM SOU SET OPERATION CODE AND UNIT
  7918. LDC P036C
  7919. STML CPBF+FCP REPORT ATTRIBUTE 6F
  7920. LDC 0#806F
  7921. STML CPBF+FCP+1
  7922. LDN 12 COMMAND PACKET LENGTH
  7923. RJM IDT INPUT DATA TO PP
  7924. LDML ATTB+13
  7925. LMC BPB
  7926. NJN VDA4 IF BURST SIZE NOT CORRECT
  7927. RJM ATT WAIT FOR COMPLETION RESPONSE
  7928. UJP VDA7 CHECK ATTRIBUTE D8
  7929.  
  7930. VDA4 RJM ATT WAIT FOR COMPLETION RESPONSE
  7931. LDN 0
  7932. STD T1
  7933. VDA5 LCN 0 PARAMETERS WITH FFFF WILL NOT BE CHANGED
  7934. STML CPBF+FCP,T1
  7935. AOD T1
  7936. LMN 24
  7937. NJN VDA5 IF MORE WORDS TO INITIALIZE
  7938. STM CPBF+FCP+10
  7939. STM CPBF+FCP+12
  7940. LDC BPB*2 SET INTERRUPT SIZE
  7941. STML CPBF+FCP+11
  7942. SHN -1 SET BURST SIZE
  7943. STML CPBF+FCP+13
  7944. LDC C0209 LOAD ATTRIBUTE OPERATION CODE
  7945. RJM SOU SET OPERATION CODE AND UNIT
  7946. LDC 0#276F
  7947. STML CPBF+FCP PARAMETER 6F
  7948. LDN 46D COMMAND PACKET LENGTH
  7949. RJM WCB WRITE COMMAND PACKET
  7950. LDN CMSS
  7951. RJM ATT PROCESS ATTENTION
  7952. NJN VDA6 IF NOT SUCCESSFUL
  7953. LDC C020A SAVE ATTRIBUTE OPERATION CODE
  7954. RJM SOU SET OPERATION CODE AND UNT
  7955. LDN 6 COMMAND PACKET LENGTH
  7956. RJM WCB WRITE COMMAND PACKET
  7957. LDN CMSS
  7958. RJM ATT PROCESS ATTENTION
  7959. VDA6 NJN VDA8 IF NOT SUCCESSFUL
  7960.  
  7961. * CHECK ATTRIBUTE D8.
  7962.  
  7963. VDA7 LDD DT
  7964. IFNE EQEA,0,2
  7965. SBN EQEA
  7966. MJN VDA7.1 IF NOT SOLID STATE 5832
  7967. SBN EQEC-EQEA
  7968. MJP VDAX IF INTERRUPT SIZE NOT USED
  7969. VDA7.1 LDC C0200 REPORT ATTRIBUTE OPERATION CODE
  7970. RJM SOU SET OPERATION CODE AND UNIT
  7971. LDC P036C REPORT PARAMETER D8
  7972. STML CPBF+FCP
  7973. LDC 0#80D8
  7974. STML CPBF+FCP+1
  7975. LDN 12 COMMAND PACKET LENGTH
  7976. RJM IDT INPUT DATA TO PP
  7977. LDML ATTB
  7978. LMC 0#9D8
  7979. VDA8 NJP VDA10 IF RESPONSE INCORRECT
  7980. LDC BPB SET INTERRUPT SIZE
  7981. LMML ATTB+2
  7982. NJN VDA9 IF INTERRUPT SIZE WRONG
  7983. LDML ATTB+4
  7984. LMC BPB
  7985. ZJP VDA11 IF BURST SIZE CORRECT
  7986. VDA9 RJM ATT WAIT FOR COMPLETION RESPONSE
  7987. LDN 0
  7988. STML CPBF+FCP+1
  7989. STML CPBF+FCP+3
  7990. LDC BPB*2 SELECT INTERRUPT SIZE
  7991. STML CPBF+FCP+2
  7992. SHN -1 SET BURST SIZE
  7993. STML CPBF+FCP+4
  7994. LDC 0#09D8
  7995. STML CPBF+FCP PARAMETER D8
  7996. LDC C0209 LOAD ATTRIBUTE OPERATION CODE
  7997. RJM SOU SET OPERATION CODE AND UNIT
  7998. LDN 20 COMMAND PACKET LENGTH
  7999. RJM WCB WRITE COMMAND PACKET
  8000. LDN CMSS
  8001. RJM ATT PROCESS ATTENTION
  8002. NJN VDA10 IF NOT SUCCESSFUL
  8003. LDC C020A SAVE ATTRIBUTES OPERATION CODE
  8004. RJM SOU SET OPERATION CODE AND UNIT
  8005. LDN 6 COMMAND PACKET LENGTH
  8006. RJM WCB WRITE COMMAND PACKET
  8007. LDN CMSS
  8008. RJM ATT PROCESS ATTENTION
  8009. NJN VDA10 IF NOT SUCCESSFUL
  8010. LJM VDAX RETURN
  8011.  
  8012. VDA10 LCN ERDA REPORT DRIVE ATTRIBUTES ERROR
  8013. RJM ERR PROCESS ERROR
  8014. VIS SPACE 4,15
  8015. ** VIS - VERIFY INTERRUPT SOURCE.
  8016. *
  8017. * ENTRY (A) .LT. 0 IF ASYNC INTERRUPT FROM CONTROLLER.
  8018. *
  8019. * EXIT (A) = 0 IF INTERRUPT FOR INACTIVE DRIVE.
  8020. * = RETURN ADDRESS TO PROCESSOR.
  8021. * (DI) = DEVICE STATE TABLE ADDRESS.
  8022. *
  8023. * USES DI.
  8024. *
  8025. * CALLS CCO, DCM, LDP.
  8026.  
  8027.  
  8028. VIS4 RJM CCO CHECK FOR CONTROLLER OVER TEMPERATURE
  8029. LDM SRSA
  8030. ZJN VISX IF NO RESET IN PROGRESS
  8031. STD DI
  8032. UJN VIS1 LOAD DEVICE PARAMETERS
  8033.  
  8034. VIS SUBR ENTRY/EXIT
  8035. MJN VIS4 IF ASYNCH FOR CONTROLLER
  8036. LDM RPBF+CRN CHECK COMMAND NUMBER
  8037. STD DI
  8038. VIS1 RJM LDP LOAD DEVICE PARAMETERS
  8039. LDM RQLN,DI
  8040. SHN 21-13
  8041. PJN VIS2 IF UNIT NOT INTERLOCKED
  8042. LDML ATTN,DI
  8043. NJN VISX IF EXPECTED RESPONSE
  8044. VIS2 LDDL RT
  8045. LMN XFNT
  8046. NJN VIS3 IF NOT TRANSFER NOTIFICATION
  8047. RJM DCM DESELECT CONTROLLER
  8048. VIS3 LDN 0
  8049. UJN VISX RETURN
  8050. WAC SPACE 4,25
  8051. ** WAC - WAIT FOR OTHER ACTIVITY TO COMPLETE.
  8052. *
  8053. * WAIT UNTIL ALL OTHER ACTIVITY ON THIS CONTROLLER IS COMPLETE.
  8054. * THE FACT THAT *ERFL* IS SET WILL PREVENT NEW ACTIVITY.
  8055. *
  8056. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  8057. *
  8058. * USES DI, T1.
  8059. *
  8060. * CALLS LND, LDP.
  8061.  
  8062.  
  8063. WAC CON 0 ENTRY
  8064. LDML WAC SAVE RETURN ADDRESS
  8065. STML SEPR,DI
  8066. LDC WAC1
  8067. STML ADDR,DI RETURN ADDRESS IF NO RESPONSE
  8068. WAC1 LDN 1
  8069. WAC2 LMN 1
  8070. RJM LND LOCATE DRIVE
  8071. ZJN WAC3 IF NO MORE DRIVES ON CONTROLLER
  8072. LDML ADDR,T7
  8073. ZJN WAC2 IF NO ACTIVITY ON DRIVE
  8074. LDD T7
  8075. LMD DI
  8076. ZJN WAC2 IF CURRENT DRIVE
  8077. LDD T7
  8078. STD DI
  8079. RJM LDP LOAD DEVICE PARAMETERS
  8080. LJM 0,PA CHECK FOR TIMEOUT ON ACTIVE DRIVE
  8081.  
  8082. WAC3 LDML SEPR,DI GET RETURN ADDRESS
  8083. STDL T1
  8084. LJM 0,T1 RETURN
  8085. WLB SPACE 4,10
  8086. ** WLB - WRITE LINKAGE BITS.
  8087. *
  8088. * ENTRY (T6) = ADDRESS FOR LINKAGE.
  8089. * (T1) = DATA BUFFER ADDRESS.
  8090. * (T5) = NUMBER OF WORDS TO WRITE.
  8091. * (CM - CM+4) = *PAD* WORD OF *CBT* ENTRY.
  8092. *
  8093. * EXIT SECTOR LINKAGE SET IN DATA BUFFER.
  8094. *
  8095. * USES T1, T6.
  8096.  
  8097.  
  8098. WLB1 LDN 10+4 ADVANCE BUFFER ADDRESS
  8099. RADL T1
  8100. LDI T6 EXTRACT LINKAGE FROM *CBT* ENTRY
  8101. SHN -10
  8102. * LPN 17
  8103. SHN 14 POSITION FOR DATA BUFFER
  8104. LMI T1
  8105. STIL T1
  8106. WLB2 LDI T6 EXTRACT LINKAGE FROM *CBT* ENTRY
  8107. SHN -4
  8108. LPN 17
  8109. SHN 14 POSITION FOR DATA BUFFER
  8110. LMM 4,T1
  8111. STML 4,T1
  8112. LDI T6 EXTRACT LINKAGE FROM *CBT* ENTRY
  8113. * SHN 0
  8114. LPN 17
  8115. SHN 14 POSITION FOR DATA BUFFER
  8116. LMM 10,T1
  8117. STML 10,T1
  8118. AOD T6 ADVANCE *CBT* WORD ADDRESS
  8119. LMN CM+5
  8120. NJN WLB1 IF MORE LINKAGE
  8121. LDC 1S17
  8122. CWML SBUF,T5 UPDATE DATA BUFFER
  8123.  
  8124. WLB SUBR ENTRY/EXIT
  8125. UJN WLB2 MOVE SECTOR LINKAGE
  8126. WMC SPACE 4,10
  8127. ** WMC - WAIT MAINTENANCE CHANNEL EMPTY.
  8128. *
  8129. * EXIT (A) .EQ. 0 IF CHANNEL EMPTY.
  8130. * (A) .NE. 0 IF CHANNEL HUNG FULL.
  8131.  
  8132.  
  8133. WMC2 LDN 0 INDICATE CHANNEL EMPTY
  8134.  
  8135. WMC SUBR ENTRY/EXIT
  8136. LDD TH
  8137. WMC1 EJM. WMC2,MR IF TRANSMISSION COMPLETE
  8138. SBN 1
  8139. NJN WMC1 IF NOT TIMED OUT
  8140. DCN. MR+40
  8141. CCF. *+2,MR CLEAR CHANNEL FLAG
  8142. LDD CP
  8143. ADN MS2W STORE CP MESSAGE
  8144. CWM WMCA,TR
  8145. UJN WMCX RETURN
  8146.  
  8147.  
  8148. WMCA DATA C*MR ERROR.*
  8149. TITLE CHANNEL SUBROUTINES.
  8150. BCS SPACE 4,10
  8151. ** BCS - DEFINE INFORMATION TRANSFER.
  8152. *
  8153. * ENTRY (A) = BUS *A* BITS 7 AND 6.
  8154. *
  8155. * EXIT TO *ERR* IF ERROR.
  8156. *
  8157. * CALLS RSR.
  8158.  
  8159.  
  8160. BCS1 LDDL LF FETCH LAST FUNCTION
  8161. LMN 0#32
  8162. RJM RSR DROP SYNC OUT
  8163.  
  8164. BCS SUBR ENTRY/EXIT
  8165. SHN 17-1
  8166. ADK F005B SET SYNC OUT
  8167. RJM RSR READ SLAVE RESPONSE
  8168. LPC 377
  8169. ZJN BCS1 IF BUS ACKNOWLEDGE CORRECT
  8170. LDN EBAE BUS ACKNOWLEDGE ERROR
  8171. RJM ERR PROCESS ERROR
  8172. CFE SPACE 4,10
  8173. ** CFE - CHECK FOR I/O ERROR.
  8174. *
  8175. * ENTRY (A) = RESIDUAL WORD COUNT.
  8176. * AT *CFE1* FROM *DCT* IF ERROR FLAG SET.
  8177. *
  8178. * EXIT (A) = 0.
  8179. * TO *ERR* IF ERROR.
  8180.  
  8181.  
  8182. CFE4 NJN CFE3 IF INCOMPLETE DATA TRANSFER
  8183.  
  8184. CFE SUBR ENTRY/EXIT
  8185. CFM CFE4,CH IF CHANNEL ERROR FLAG CLEAR
  8186. CFE1 LDN ECIE IPI CHANNEL ERROR FLAG
  8187. CFE2 RJM ERR PROCESS CHANNEL ERROR
  8188.  
  8189. CFE3 LDN EIDT INCOMPLETE DATA TRANSFER
  8190. UJN CFE2 PROCESS ERROR
  8191. CRC SPACE 4,10
  8192. ** CRC - COMMON READ CODE.
  8193. *
  8194. * ENTRY (A) = LENGTH FOR INPUT.
  8195. * (T0) = WORDS NOT TRANSFERRED.
  8196. *
  8197. * EXIT TO *ERR* IF ERROR.
  8198. *
  8199. * USES T1.
  8200. *
  8201. * CALLS GSS.
  8202.  
  8203.  
  8204. CRC2 LDN 0
  8205. RJM GSS GET ENDING STATUS
  8206.  
  8207. CRC SUBR ENTRY/EXIT
  8208. SBD T0
  8209. STD T1 WORDS NOT TRANSFERRED
  8210. LDC 50000D
  8211. CRC1 IJM CRC2,CH IF SLAVE IN
  8212. SBN 1
  8213. NJN CRC1 IF TIMEOUT NOT EXPIRED
  8214. LCN ECNR SLAVE/SYNC IN SIGNAL ERROR
  8215. RJM ERR PROCESS ERROR
  8216. CTC SPACE 4,15
  8217. ** CTC - CHECK TRANSFER COMPLETE.
  8218. *
  8219. * ENTRY (RW) = 0 IF READ.
  8220. *
  8221. * EXIT (A) = 0 TO CALLER IF NO ERROR.
  8222. * TO *PIO2* IF ENDING STATUS INDICATES PAUSE AND
  8223. * NO DATA WAS READ.
  8224. * TO *PIO6* IF ENDING STATUS INDICATES NO MORE DATA
  8225. * AND NOT ALL DATA WAS TRANSFERRED.
  8226. * TO *ERR* IF ERROR.
  8227. *
  8228. * USES T1.
  8229. *
  8230. * CALLS DCM, FAN, FCN, GSS, RCR, RDR, RTR, SCD.
  8231.  
  8232.  
  8233. CTC SUBR ENTRY/EXIT
  8234. LDC 7700D
  8235. STDL T1
  8236. CTC1 LDC F0700
  8237. RJM FCN REQUEST OPERATIONAL STATUS
  8238. ACN CH
  8239. EJM CTC2,CH IF ERROR
  8240. IAN CH READ STATUS
  8241. LPN 1
  8242. ZJN CTCX IF TRANSFER COMPLETE
  8243. CTC2 SODL T1
  8244. NJN CTC1 IF NOT TIMEOUT
  8245. RJM RTR READ T REGISTER
  8246. LDD CT
  8247. ZJN CTC2.1 IF 10 MB CHANNEL
  8248.  
  8249. * THE DMA TERMINATE FUNCTION DOES NOT CLEAR DMA MODE
  8250. * IN THE 25 MB CHANNEL.
  8251.  
  8252. SFM CTC2.0,CH CLEAR ERROR FLAG ON 25MB CHANNEL
  8253. CTC2.0 LDC F0E00
  8254. RJM FAN CLEAR T REGISTER
  8255. CTC2.1 LDC F0800 DMA TERMINATE FUNCTION
  8256. RJM FAN SEND THE FUNCTION
  8257. LDC F00E1 READ STATUS REGISTER FUNCTION
  8258. RJM RDR READ REGISTER
  8259. SHN 6
  8260. PJN CTC3 IF SLAVE IN DROPPED
  8261. LDN ECNR SLAVE/SYNC IN SIGNAL ERROR
  8262. RJM ERR PROCESS ERROR
  8263.  
  8264. CTC3 LDN 0 NO MASTER TERMINATE
  8265. * STD T1 SO LENGTH ERROR NOT REPORTED IN *CFE*
  8266. RJM GSS GET ENDING STATUS
  8267. LPN 60B
  8268. LMN 20B
  8269. ZJN CTC5 IF NO MORE DATA
  8270.  
  8271. * IF MULTIPLE PHYSICAL DRIVES PER LOGICAL UNIT, AND THERE
  8272. * IS A MEDIA ERROR FOR AT LEAST 2 DRIVES AT THE SAME SECTOR,
  8273. * THE CONTROLLER WILL TRANSFER NO DATA THEN RETURN AN ENDING
  8274. * STATUS INDICATING PAUSE, AND EXPECT THE HOST TO REREAD
  8275. * THE DATA IF IT SENDS A TRANSFER NOTIFICATION RESPONSE.
  8276.  
  8277. LDDL RW
  8278. NJN CTC4 IF WRITE
  8279. LDML EDBF+TREG
  8280. LMC BPB
  8281. NJN CTC4 IF NOT 0-BYTE TRANSFER
  8282. RJM RCR RESET CHANNEL REGISTERS
  8283. LJM PIO2 WAIT FOR ANOTHER RESPONSE
  8284.  
  8285. CTC4 LDN EIDT INCOMPLETE DATA TRANSFER
  8286. RJM ERR PROCESS ERROR
  8287.  
  8288. * THE CONTROLLER MAY DROP SLAVE IN ANYTIME DURING THE TRANSFER
  8289. * AND RETURN 90 HEX AS ENDING STATUS. THIS INDICATES COMMAND
  8290. * COMPLETE. THE RESPONSE PACKET SHOULD REPORT AN ERROR.
  8291.  
  8292. *CTC5 LDN 0
  8293. CTC5 RJM SCD CLEAR CHANNEL ACTIVE FOR *CPD*
  8294. RJM DCM DESELECT THE CONTROLLER
  8295. LCN 0 TO GUARANTEE AN ERROR IS REPORTED
  8296. LJM PIO6 WAIT FOR A RESPONSE
  8297. DCM SPACE 4,10
  8298. ** DCM - DESELECT CONTROLLER.
  8299. *
  8300. * CALLS FCN, RSR.
  8301.  
  8302.  
  8303. DCM SUBR ENTRY/EXIT
  8304. LDC F0071
  8305. RJM RSR WAIT FOR SLAVE IN TO DROP
  8306. CFM DCMX,CH IF ERROR FLAG NOT SET
  8307.  
  8308. * ON A 25 MB IPI CHANNEL, A DESELECT SEQUENCE COULD RESULT
  8309. * IN A CHANNEL SEQUENCE ERROR. THE FOLLOWING CODE CLEARS
  8310. * SUCH AN ERROR STATUS.
  8311.  
  8312. LDC F0100
  8313. RJM FCN CLEAR THE DMA ERROR
  8314. UJN DCMX RETURN
  8315. DCT SPACE 4,10
  8316. ** DCT - DETERMINE CHANNEL TYPE.
  8317. *
  8318. * EXIT (CT) = 0 IF 10 MB CHANNEL.
  8319. * 1 IF 25 MB CHANNEL.
  8320. *
  8321. * CALLS FCN.
  8322.  
  8323.  
  8324. DCT1 STDL CT
  8325. DCT SUBR ENTRY/EXIT
  8326. LDC F0102
  8327. RJM FCN READ IPI REVISION REGISTER
  8328. ACN CH
  8329. LDN 0
  8330. EJM DCT1,CH IF 10 MB/S IPI CHANNEL
  8331. LDN 1
  8332. UJN DCT1 RETURN
  8333. DTM SPACE 4,15
  8334. ** DTM - DETERMINE TRANSFER MODE.
  8335. *
  8336. * ENTRY (A) = CONTROLLER NUMBER.
  8337. * (T6) = 0 IF STREAMING COMMANDS/RESPONSES.
  8338. * (T6) = 200(16) IF INTERLOCKING COMMANDS/RESPONSES.
  8339. *
  8340. * EXIT (A) = CONTROLLER NUMBER + TRANSFER MODE CHANGE.
  8341. *
  8342. * USES T4.
  8343. *
  8344. * CALLS FCN, RSR.
  8345.  
  8346.  
  8347. DTM SUBR ENTRY/EXIT
  8348. SHN 14
  8349. STDL T4 SET CONTROLLER NUMBER IN RESPONSE
  8350. LMC F8025
  8351. RJM RSR REQUEST TRANSFER SETTINGS
  8352. LPN 0#10
  8353. LMN 0#10 COMPLEMENT TRANSFER MODE
  8354. SHN 11-4
  8355. LMDL T6 MASK FOR INTERLOCK DATA
  8356. SHN 2
  8357. RADL T4 APPEND TRANSFER MODE TO RESPONSE
  8358. SFM CFE1,CH IF ERROR FLAG SET
  8359. LDDL LF
  8360. LMC 0#54 DROP MASTER OUT
  8361. RJM RSR ENSURE SLAVE IN DROPPED
  8362. CFM DTM1,CH IF ERROR FLAG NOT SET
  8363.  
  8364. * ON A 25 MB IPI CHANNEL, A REQUEST TRANSFER SETTINGS SEQUENCE
  8365. * COULD RESULT IN A CHANNEL SEQUENCE ERROR. THE FOLLOWING CODE
  8366. * CLEARS SUCH AN ERROR STATUS.
  8367.  
  8368. LDC F0100
  8369. RJM FCN CLEAR THE DMA ERROR
  8370. DTM1 LDDL T4
  8371. UJP DTMX RETURN
  8372. FAN SPACE 4,10
  8373. ** FAN - SEND A FUNCTION TO THE IPI CHANNEL.
  8374. *
  8375. * NOTE - THE CHANNEL MAY HAVE BEEN LEFT ACTIVE BY A MASTER
  8376. * CLEAR, A ROUTINE SUCH AS DCM, OR AFTER A REPORTED
  8377. * ERROR.
  8378. *
  8379. * ENTRY (A) = FUNCTION TO ISSUE.
  8380.  
  8381.  
  8382. FAN SUBR ENTRY/EXIT
  8383. DCN CH+40 ENSURE THE CHANNEL IS INACTIVE
  8384. FAN CH SEND THE FUNCTION
  8385. UJN FANX RETURN
  8386. FCN SPACE 4,10
  8387. ** FCN - ISSUE FUNCTION.
  8388. *
  8389. * ENTRY (A) = FUNCTION CODE.
  8390. *
  8391. * EXIT (A) .NE. 0.
  8392. * (LF) = FUNCTION CODE.
  8393. * TO *ERR* IF FUNCTION TIMEOUT.
  8394.  
  8395.  
  8396. FCN SUBR ENTRY/EXIT
  8397. DCN CH+40
  8398. FAN CH ISSUE FUNCTION
  8399. STDL LF
  8400. IJM FCNX,CH IF FUNCTION ACCEPTED
  8401. RJM LDP LOAD DEVICE PARAMETERS
  8402. LDN ETFN CHANNEL FUNCTION TIMEOUT
  8403. RJM ERR PROCESS ERROR
  8404. GIS SPACE 4,10
  8405. ** GIS - GET INTERRUPT STATUS.
  8406. *
  8407. * EXIT (A) = (GISA) = INTERRUPT STATUS.
  8408. *
  8409. * CALLS FCN.
  8410.  
  8411.  
  8412. * INTERRUPTS MUST BE ENABLED AT LEAST 6 MICROSECONDS BEFORE
  8413. * THE FOLLOWING INPUT.
  8414.  
  8415. GIS1 IAN CH READ INTERRUPT STATUS
  8416. GIS2 STML GISA
  8417. LDC F0711 NEGATE MASTER OUT
  8418. RJM FCN
  8419. LDML GISA RETURN WITH (A) = STATUS
  8420.  
  8421. GIS SUBR ENTRY/EXIT
  8422. ACN CH+40
  8423. FJM GIS1,CH
  8424. LDN 0
  8425. UJN GIS2 SET NULL STATUS
  8426.  
  8427.  
  8428. GISA CON 0
  8429. GSS SPACE 4,15
  8430. ** GSS - GET SLAVE STATUS.
  8431. *
  8432. * ENTRY (A) = 0 IF STATUS W/O MASTER TERMINATE.
  8433. * = MASTER TERMINATE OPTION.
  8434. * (T1) = RESIDUAL BYTE COUNT.
  8435. *
  8436. * EXIT (A) = (PIOC) = ENDING STATUS IF TRANSFER SUCCESSFUL.
  8437. * (GSSA) = ENDING STATUS AS READ FROM CONTROLLER.
  8438. * TO *ERR* IF ERROR.
  8439. *
  8440. * CALLS RRP, RSR.
  8441.  
  8442.  
  8443. GSS5 LDML GSSA ENDING STATUS
  8444. STML PIOC
  8445.  
  8446. GSS SUBR ENTRY/EXIT
  8447. SHN 10
  8448. ADC F8039 INDICATE TRANSFER SUCCESSFUL
  8449. RJM RSR GET ENDING STATUS
  8450. STML GSSA
  8451. SFM GSS3,CH IF ERROR FLAG SET
  8452. SHN 21-7
  8453. PJN GSS1 IF TRANSFER NOT SUCCESSFUL
  8454. LDD T1
  8455. ZJN GSS5 IF ALL WORDS TRANSFERRED
  8456. LDN EIDT INCOMPLETE DATA TRANSFER
  8457. UJN GSS4 PROCESS ERROR
  8458.  
  8459. GSS1 SHN 10
  8460. LPC 117
  8461. LMN 3
  8462. NJN GSS2 IF NOT COMMAND REJECT
  8463.  
  8464. * IF CONTROLLER OVER TEMPERATURE OCCURS BEFORE THE COMMAND IS
  8465. * ISSUED, A COMMAND REJECT ERROR COULD OCCUR. A LOGICAL RESET
  8466. * WOULD CAUSE THE OVER TEMPERATURE STATUS TO BE LOST.
  8467.  
  8468. RJM RRP READ RESPONSE PACKET
  8469. LCN EUST SUCCESSFUL NOT SET IN ENDING STATUS
  8470. UJN GSS4 PROCESS ERROR
  8471.  
  8472. GSS2 LDN EUST SUCCESSFUL NOT SET IN ENDING STATUS
  8473. UJN GSS4 PROCESS ERROR
  8474.  
  8475. GSS3 LDN ECIE IPI CHANNEL ERROR FLAG
  8476. GSS4 RJM ERR PROCESS ERROR
  8477.  
  8478.  
  8479. GSSA CON 0 ENDING STATUS
  8480. IDT SPACE 4,15
  8481. ** IDT - INPUT DATA TO PP.
  8482. *
  8483. * ENTRY (A) = COMMAND PACKET LENGTH.
  8484. * (TM) = TRANSFER MODE.
  8485. * (DI) = DEVICE STATE TABLE ADDRESS.
  8486. *
  8487. * EXIT ATTRIBUTE DATA STARTS AT ATTB.
  8488. *
  8489. * USES T1.
  8490. *
  8491. * CALLS ATT, BCS, CRC, DCM, FCN, WCB.
  8492.  
  8493.  
  8494. IDT1 LCN ERDA REPORT DRIVE ATTRIBUTES ERROR
  8495. RJM ERR PROCESS ERROR
  8496.  
  8497. IDT CON 0 ENTRY
  8498. RJM WCB WRITE COMMAND PACKET
  8499. LDML IDT
  8500. STML IDTR,DI SAVE RETURN ADDRESS
  8501. LDN XFNT EXPECT TRANSFER NOTIFICATION RESPONSE
  8502. RJM ATT PROCESS ATTENTION
  8503. NJP IDT1 IF ERROR
  8504. LDN DAIN DATA TRANSFER IN
  8505. RJM BCS BUS CONTROL SEQUENCE
  8506. LDI T0 DELAY 750 NANOSECONDS
  8507. LDDL TM TRANSFER MODE
  8508. SHN 11-0
  8509. LMC F0281
  8510. RJM FCN TELL DMA LOGIC TO READ
  8511. ACN CH
  8512. LDC ATTBL
  8513. IAM ATTB,CH INPUT ATTRIBUTE DATA
  8514. STD T0 WORDS NOT TRANSFERRED
  8515. LDM RPBF+MST+3 BYTE LENGTH OF TRANSFER
  8516. ADN 1 IN CASE OF ODD BYTE LENGTH
  8517. SHN -1 EXPECTED WORDS TO TRANSFER
  8518. RAD T0
  8519. LDC ATTBL
  8520. RJM CRC COMMON READ CODE
  8521. RJM DCM DESELECT CONTROLLER
  8522. LDML IDTR,DI
  8523. STDL T1
  8524. LJM 0,T1 RETURN TO CALLER
  8525. RCR SPACE 4,10
  8526. ** RCR - RESET CHANNEL REGISTERS. THIS LEAVES THE IPI
  8527. * CHANNEL IN AN IDLE STATE.
  8528. *
  8529. * ENTRY (MF) = 0 IF PREVIOUS MASTER CLEAR SUCCESSFUL.
  8530. *
  8531. * USES MF, T1.
  8532. *
  8533. * CALLS DCT, FCN, WTC.
  8534. *
  8535. * MACROS WAIT.
  8536.  
  8537.  
  8538. RCR2 LDN 0
  8539. STD MF INDICATE MASTER CLEAR COMPLETE
  8540.  
  8541. RCR SUBR ENTRY/EXIT
  8542. LDD MF
  8543. NJN RCR2 IF MASTER CLEAR FAILED
  8544. AOD MF
  8545. LDN F0000
  8546. RJM FCN MASTER CLEAR THE ADAPTER
  8547. WAIT 100
  8548.  
  8549. * MASTER CLEAR DOES NOT CLEAR ERROR FLAG ON THE 25 MB CHANNEL,
  8550. * SO THE SFM INSTRUCTION MUST BE USED TO CLEAR IT.
  8551.  
  8552. SFM RCR1,CH
  8553. *RCR1 LDN 0 SET DEVICE NOT SELECTED
  8554. RCR1 ADK F0000-0 ENSURE NO SEQUENCE ERROR
  8555. RJM FCN
  8556. RJM DCT DETERMINE CHANNEL TYPE
  8557. LDML TRAT,CT
  8558. RJM FCN SET IPI CHANNEL TRANSFER RATE
  8559. LDC F0300
  8560. RJM FCN WRITE CONTROL REGISTER FUNCTION
  8561. ACN CH
  8562. LDML EDC,CT ENABLE DOUBLE CMI SLOT IF 25 MB CHANNEL
  8563. STDL T1
  8564. LDN 1
  8565. OAM T1,CH
  8566. RJM WTC WAIT TRANSFER COMPLETE
  8567. UJP RCR2 SET COMPLETE AND RETURN
  8568. RDR SPACE 4,10
  8569. ** RDR - READ REGISTER.
  8570. *
  8571. * ENTRY (A) = FUNCTION CODE.
  8572. *
  8573. * EXIT (A) = VALUE OF REGISTER OR 0 IF ERROR.
  8574. *
  8575. * CALLS FAN.
  8576.  
  8577.  
  8578. RDR1 LDN 0
  8579. RDR SUBR ENTRY/EXIT
  8580. RJM FAN SEND FUNCTION
  8581. AJM RDR1,CH IF NO FUNCTION REPLY
  8582. ACN CH+40B
  8583. EJM RDR1,CH IF WORD COULD NOT BE READ
  8584. IAN CH
  8585. UJN RDRX RETURN
  8586. RIF SPACE 4,15
  8587. ** RIF - RESET INTERFACE.
  8588. *
  8589. * ENTRY (RW) = 0 TO RESET SLAVE INTERFACE.
  8590. * = 1 TO RESET LOGICAL INTERFACE.
  8591. * (CN) = CONTROLLER NUMBER.
  8592. *
  8593. * EXIT (RF) = 1.
  8594. *
  8595. * USES RF.
  8596. *
  8597. * CALLS FCN, RCR, SAP.
  8598. *
  8599. * MACROS WAIT.
  8600.  
  8601.  
  8602. RIF SUBR ENTRY/EXIT
  8603. AOD RF FLAG RESET IN PROGRESS
  8604. RJM RCR RESET CHANNEL
  8605. RJM SAP SELECT ADAPTER PORT
  8606. LDD CN
  8607. SHN 14 FORM RESET FUNCTION
  8608. LMML RIFA,RW
  8609. RJM FCN ISSUE LOGICAL RESET
  8610. WAIT 20
  8611. LDDL LF
  8612. LMN 2 SET SYNC OUT
  8613. RJM FCN
  8614. WAIT 10
  8615. LDDL LF NEGATE SYNC OUT
  8616. SCN 2
  8617. RJM FCN
  8618. LDDL LF CLEAR MASTER OUT
  8619. SCN 4
  8620. RJM FCN
  8621. UJP RIFX RETURN
  8622.  
  8623.  
  8624. RIFA BSS 0 RESET FUNCTION CODES
  8625. CONL F8415
  8626. CONL F8215
  8627. RRP SPACE 4,10
  8628. ** RRP - READ RESPONSE PACKET.
  8629. *
  8630. * ENTRY (T6) = 0 IF STREAMING MODE FOR RESPONSES.
  8631. *
  8632. * CALLS BCS, CRC, FCN.
  8633.  
  8634.  
  8635. RRP SUBR ENTRY/EXIT
  8636. LDN RIIN
  8637. RJM BCS INITIATE BUS EXCHANGE (RESPONSE IN)
  8638. LDDL T6 STREAMING OR INTERLOCK MODE
  8639. LMC F0281 READ
  8640. RJM FCN RAISE MASTER OUT
  8641. ACN CH
  8642. LDN RPBFL TRANSFER RESPONSE PACKET
  8643. IAM RPBF,CH
  8644. STD T0 SAVE RESIDUE
  8645. SBN RPBFL-4
  8646. PJN RRP1 IF INVALID PACKET LENGTH
  8647. LDM RPBF+PLN
  8648. ADN 3 CONVERT OCTET COUNT TO BYTE COUNT
  8649. SHN -1
  8650. RAD T0
  8651. RRP1 LDK RPBFL COMPARE LENGTH WITH DATA READ
  8652. RJM CRC COMMON READ CODE
  8653. UJN RRPX RETURN
  8654. RSR SPACE 4,10
  8655. ** RSR - READ SLAVE RESPONSE.
  8656. *
  8657. * ENTRY (A) = FUNCTION TO ISSUE.
  8658. *
  8659. * EXIT (A) = SLAVE RESPONSE.
  8660. * TO *ERR* IF ERROR.
  8661. *
  8662. * CALLS FCN.
  8663.  
  8664.  
  8665. RSR2 IAN CH READ SLAVE RESPONSE
  8666.  
  8667. RSR SUBR ENTRY/EXIT
  8668. RJM FCN
  8669. LDC 2000
  8670. ACN CH
  8671. RSR1 FJM RSR2,CH IF SLAVE IN DROPPED
  8672. SBN 1
  8673. NJN RSR1 IF NOT TIMED OUT
  8674. LDN ECNR SLAVE/SYNC IN SIGNAL ERROR
  8675. RJM ERR PROCESS ERROR
  8676. RTR SPACE 4,10
  8677. ** RTR - READ T REGISTER.
  8678. *
  8679. * USES T2, T3.
  8680. *
  8681. * CALLS FAN.
  8682.  
  8683.  
  8684. RTR SUBR ENTRY/EXIT
  8685. LDC F0A00 READ T REGISTER FUNCTION
  8686. STD T2
  8687. RJM FAN
  8688. LDN 0
  8689. STML EDBF+TREG
  8690. STML EDBF+TREG+1 CLEAR T REGISTER BUFFER
  8691. STML EDBF+TREG+2
  8692. STD T3
  8693. ACN CH+40B ACTIVATE CHANNEL
  8694.  
  8695. * THE ONE WORD INPUT IS NECESSARY TO PREVENT THE CHANNEL
  8696. * FROM HANGING ON A 170 DMA CHANNEL.
  8697.  
  8698. RTR1 SOD T2
  8699. ZJN RTRX IF TIMEOUT
  8700. IJM RTRX,CH IF ERROR
  8701. EJM RTR1,CH IF CHANNEL NOT FULL YET
  8702. IAN CH
  8703. STML EDBF+TREG,T3 SAVE WORD FROM T REGISTER
  8704. AOD T3
  8705. LMN 3
  8706. ZJN RTRX IF TRANSFER COMPLETE
  8707. UJN RTR1 INPUT NEXT WORD
  8708. SAP SPACE 4,10
  8709. ** SAP - SELECT ADAPTER PORT.
  8710. *
  8711. * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
  8712. * (CT) = 0 IF 10 MB CHANNEL.
  8713. *
  8714. * CALLS FCN.
  8715.  
  8716.  
  8717. SAP SUBR ENTRY/EXIT
  8718. LDM PNUN,DI
  8719. SHN 0-11 ISOLATE PORT NUMBER
  8720. SHN 13-0
  8721. ERRNZ F0062+4000-F0862 CODE DEPENDS ON VALUE
  8722. ADML PAS,CT
  8723. RJM FCN
  8724. UJN SAPX RETURN
  8725. SCM SPACE 4,15
  8726. ** SCM - SELECT CONTROLLER.
  8727. *
  8728. * ENTRY (SF) = 1 IF DEVICE PREVIOUSLY SELECTED.
  8729. * (CI) = CONTROLLER STATE TABLE INDEX.
  8730. * (CN) = CONTROLLER NUMBER.
  8731. * (DI) = DEVICE STATE TABLE ADDRESS.
  8732. * (T6) = 0 IF STREAMING COMMANDS/RESPONSES.
  8733. *
  8734. * EXIT TO *ERR* IF ERROR.
  8735. *
  8736. * USES T6.
  8737. *
  8738. * CALLS DTM, RSR, SAP.
  8739.  
  8740.  
  8741. SCM SUBR ENTRY/EXIT
  8742. RJM SAP SELECT ADAPTER PORT
  8743. LDML CTST,CI
  8744. SHN -15
  8745. ZJN SCM1 IF STREAMING COMMANDS/RESPONSES
  8746. LDC 0#200
  8747. SCM1 STDL T6
  8748. LDD CN
  8749. RJM DTM DETERMINE TRANSFER MODE
  8750. LMN F0029 SET SELECT OUT
  8751. RJM RSR READ BIT SIGNIFICANT RESPONSE
  8752. LPML TMSK,CN
  8753. NJN SCMX IF CORRECT CONTROLLER
  8754. LDN ETSL SELECT TIMEOUT
  8755. RJM ERR PROCESS ERROR
  8756. WCB SPACE 4,15
  8757. ** WCB - WRITE COMMAND BLOCK (PACKET).
  8758. *
  8759. * ENTRY (A) = COMMAND PACKET LENGTH.
  8760. * (DI) = DEVICE STATE TABLE ADDRESS.
  8761. * (T6) = 0 IF STREAMING MODE.
  8762. * (DT) = DRIVE TYPE.
  8763. *
  8764. * EXIT TO *ERR* IF ERROR.
  8765. *
  8766. * USES T1.
  8767. *
  8768. * CALLS BCS, DCM, FCN, GSS, SCM, STO.
  8769.  
  8770.  
  8771. WCB2 LDN 0 GET STATUS
  8772. RJM GSS
  8773. RJM DCM DESELECT CONTROLLER
  8774. LDML CPBF+OPC OPERATION CODE
  8775. SHN -10
  8776. SBN 7
  8777. NJN WCB3 IF NOT SPIN UP/DOWN
  8778. LDC SUTO SPIN UP TIMEOUT
  8779. UJN WCB5 SET COMMAND TIMEOUT
  8780.  
  8781. WCB3 SBN 0#28-7
  8782. NJN WCB4 IF NOT FORMAT
  8783. LDML CPBF
  8784. LMN 0#E
  8785. ZJN WCB4 IF NOT FULL PACK FORMAT
  8786. LDC FMTO
  8787. UJN WCB5 SET COMMAND TIMEOUT
  8788.  
  8789. WCB4 LDC CBTO
  8790. WCB5 RJM STO SET TIMEOUT
  8791.  
  8792. WCB SUBR ENTRY/EXIT
  8793. STM CPBF+PLN
  8794. LDML CPBF+OPC
  8795. STML LCMD,DI SAVE LAST COMMAND
  8796. LDD DI SET COMMAND REFERENCE NUMBER
  8797. STM CPBF+CRN
  8798. RJM SCM SELECT CONTROLLER
  8799. LDN CIOT
  8800. RJM BCS INITIATE BUS EXCHANGE (COMMAND OUT)
  8801. LDDL T6 STREAM OR INTERLOCK MODE
  8802. LMC F0381 WRITE
  8803. RJM FCN RAISE MASTER OUT
  8804. ACN CH
  8805. LDM CPBF+PLN CONVERT OCTET COUNT TO BYTE COUNT
  8806. ADN 3
  8807. SHN -1 TRANSFER COMMAND PACKET
  8808. OAM CPBF,CH
  8809. STD T1 SAVE RESIDUAL BYTE COUNT FOR *GSS*
  8810. LDC 50000D
  8811. WCB1 IJM WCB2,CH IF SLAVE IN DROPPED
  8812. SBN 1
  8813. NJN WCB1 IF NOT TIMED OUT
  8814. LDN ECNR SLAVE/SYNC IN SIGNAL ERROR
  8815. RJM ERR PROCESS ERROR
  8816. WTC SPACE 4,10
  8817. ** WTC - WAIT TRANSMISSION COMPLETE.
  8818. *
  8819. * EXIT TO *ERR* IF ERROR.
  8820. *
  8821. * CALLS CFE.
  8822.  
  8823.  
  8824. WTC1 DCN CH+40 DEACTIVATE CHANNEL
  8825.  
  8826. WTC SUBR ENTRY/EXIT
  8827. RJM CFE CHECK FOR ERROR
  8828. EJM WTC1,CH IF LAST WORD TAKEN OFF CHANNEL
  8829. LDN ECHF CHANNEL HUNG FULL
  8830. RJM ERR PROCESS CHANNEL ERROR
  8831. WTR SPACE 4,10
  8832. ** WTR - WRITE T REGISTER.
  8833. *
  8834. * ENTRY (CB) = *CBT* ORDINAL.
  8835. * (RW) = 0 IF READ.
  8836. *
  8837. * CALLS FCN, SLB, SUA, WTC.
  8838.  
  8839.  
  8840. WTR SUBR ENTRY/EXIT
  8841. LDD RW
  8842. ZJN WTR1 IF READ REQUEST
  8843. LDD CB
  8844. RJM SLB SET LINKAGE BITS
  8845. WTR1 LDD CB
  8846. RJM SUA GET UEM BUFFER ADDRESS
  8847. LDD UA+1
  8848. SHN 11 FORMAT ADDRESS
  8849. SCN 7
  8850. STML WTRA+2 SET ABSOLUTE ADDRESS
  8851. LDD UA
  8852. SHN 14 COMPLETE BUFFER ADDRESS
  8853. LMD UA+1
  8854. SHN 11-20 INSERT IN REGISTER IMAGE
  8855. STM WTRA+1
  8856. LDML WTRB,RW ISSUE DMA FUNCTION
  8857. RJM FCN
  8858. LDN 3 SET BLOCK LENGTH
  8859. ACN CH
  8860. OAM WTRA,CH OUTPUT BUFFER PARAMETERS
  8861. RJM WTC
  8862. UJP WTRX RETURN
  8863.  
  8864.  
  8865. WTRA BSS 0 T REGISTER BUFFER
  8866. CONL BPB BYTE LENGTH OF I/O TRANSFER
  8867. CONL 0,0 UEM ADDRESS OF BUFFER
  8868.  
  8869. WTRB BSS 0 DMA I/O FUNCTIONS
  8870. CONL F0C00
  8871. CONL F0D00
  8872. TITLE COMMON DECKS.
  8873. SPACE 4,10
  8874. ** COMMON DECKS.
  8875.  
  8876.  
  8877. *CALL COMPCHD
  8878. *CALL COMPC2D
  8879. RND$ EQU 0 DEFINE ROUNDING FOR *COMPDV5*
  8880. *CALL COMPDV5
  8881. EST$ EQU 0 ASSEMBLE *EST* ACCESS ROUTINE
  8882. IFP$ EQU 0 FORCE REMOTE ASSEMBLY OF *IFP*
  8883. *CALL COMPGFP
  8884. *CALL COMPIFR
  8885. M8K$ EQU 1 USE LONG INSTRUCTIONS
  8886. *CALL COMPIMB
  8887. QUAL TEO
  8888. QUAL$ EQU 0 DO NOT FURTHER QUALIFY COMMON DECKS
  8889. T5 EQU EO USE *EO* FOR EST ORDINAL IN COMMON DECKS
  8890. *CALL COMPTGB
  8891. *CALL COMPTLB
  8892. QUAL *
  8893. TGB EQU /TEO/TGB
  8894. TLB EQU /TEO/TLB
  8895. TITLE BUFFERS.
  8896. SPACE 4,10
  8897. ** BUFFERS.
  8898.  
  8899.  
  8900. RPBF BSS 0 RESPONSE PACKET BUFFER
  8901.  
  8902. CPBF EQU RPBF+1 COMMAND PACKET BUFFER
  8903. ATTB EQU RPBF+10 ATTRIBUTE BUFFER
  8904. ATTBL EQU 0#8A
  8905.  
  8906. RBUF EQU ATTB+ATTBL REGISTER BUFFER
  8907. RBUFL EQU 2*4
  8908.  
  8909. SBUF EQU RBUF+RBUFL SCRATCH BUFFER
  8910. SBUFL EQU 4*5
  8911.  
  8912. EDBF EQU 20000-400-RTEDL ERROR DATA BUFFER
  8913. ERRNG 400-EDBFL+RTEDL CODE DEPENDS ON VALUE
  8914.  
  8915. MSGP EQU EDBF+EMBF MESSAGE PREFIX
  8916. MSGL EQU MSGP+2 MESSAGE LENGTH
  8917. MSGT EQU MSGL+2 MESSAGE TYPE
  8918.  
  8919. BMLM EQU MSGT+1 BML MESSAGE HEADER
  8920. MSID EQU BMLM MESSAGE ID
  8921. PPCH EQU MSID+2 PP NUMBER / CHANNEL NUMBER
  8922. UNIT EQU PPCH+1 UNIT NUMBER
  8923. PORT EQU UNIT+1 PORT NUMBER
  8924. ESTO EQU PORT+1 EST ORDINAL
  8925. MISC EQU ESTO+1 RETRY COUNT / WRITE + RECOVERY FLAGS
  8926. MFID EQU MISC+2 MAINFRAME ID
  8927. SPACE 4,10
  8928. * CHECK FOR BUFFER OVERLAP.
  8929.  
  8930.  
  8931. ERRNG EDBF-SBUF-SBUFL *SBUF* OVERFLOWS INTO *EDBF*
  8932. TITLE PRESET.
  8933. * PRESET DATA LOCATIONS.
  8934.  
  8935.  
  8936. CPCH CON 0 6/CPP NUMBER, 6/CHANNEL NUMBER
  8937. PUTA CON 0,0 FWA OF *PUT*
  8938. PUTN CON 0 NUMBER OF *PUT* ENTRIES
  8939.  
  8940. OVLP EQU *+5 ORIGIN FOR OVERLAY *3DZ*
  8941. PRS SPACE 4,15
  8942. ** PRS - PRESET DRIVER FOR PROCESSING.
  8943. *
  8944. * ENTRY AT *PRS* WHEN DRIVER LOADED.
  8945. *
  8946. * EXIT TO *3DZ*.
  8947. *
  8948. * USES CR, CT, PA, UC, CM - CM+4, T2 - T7, WB - WB+4.
  8949. *
  8950. * CALLS CCP, IFP, MCI, SCT, SPA, STA.
  8951. *
  8952. * MACROS EXECUTE.
  8953.  
  8954.  
  8955. PRS BSS 0 ENTRY
  8956. LDD IR+2 SAVE *CCT* ORDINAL
  8957. STM PRSA
  8958. RJM IFP INITIALIZE *COMPGFP*
  8959. LDN 0
  8960. STD UC SET NO UNITS RESERVED
  8961. STD PA SET NO REQUEST IN PROGRESS
  8962. STD CT DEFAULT TO 10 MB CHANNEL
  8963. RJM MCI MODIFY CHANNEL INSTRUCTIONS
  8964. * LDN 0
  8965. STD CR SET CHANNEL NOT RESERVED
  8966. RJM SPA SET PP EXCHANGE PACKAGE ADDRESSES
  8967.  
  8968. * SET TIME FOR NEXT GLOBAL MST CHECK, BASED ON CPP NUMBER.
  8969.  
  8970. LDK RTCL GET CURRENT CLOCK
  8971. CRD CM
  8972. LDD CM+1 CURRENT TIME (SECONDS)
  8973. SBD T4 ADJUST BY CPP NUMBER
  8974. PJN PRS1 IF NO UNDERFLOW
  8975. LDD T4
  8976. PRS1 STM CETB PRESET TIME OF PREVIOUS GLOBAL MST CHECK
  8977. RJM SCT SET CHANNEL TABLE ADDRESSES
  8978. LDK BIOL
  8979. CRD CM READ BUFFERED I/O POINTERS
  8980. LDD CM+1
  8981. SHN 14
  8982. LMD CM+2
  8983. ADN FTTP READ *FTT* POINTER
  8984. CRD T6
  8985. SBN FTTP-CCTP READ *CCT* POINTER
  8986. CRD T4
  8987. ADN CBTP-CCTP READ *CBT* POINTER
  8988. CRD WB
  8989. SBN CBTP-PUTP READ *PUT* POINTER
  8990. CRD T2
  8991. LDD T2+3 SAVE *PUT* ADDRESS
  8992. LPN 77
  8993. STM PUTA
  8994. LDD T2+4
  8995. STM PUTA+1
  8996. AOD T2
  8997. STM PUTN SAVE NUMBER OF *PUT* ENTRIES
  8998. LDC T5*20000+TPUT SET *PUT* ADDRESSES
  8999. RJM STA
  9000. LDC ** ADJUST CHANNEL CONTROL TABLE POINTER
  9001. PRSA EQU *-1
  9002. SCN 77
  9003. SHN CCTLS-6
  9004. RAD CM
  9005. SHN -14
  9006. RAD T7
  9007. LDC T7*20000+TCCT SET *CCT* ADDRESSES
  9008. RJM STA
  9009. .CM1 EQU CM+1
  9010. LDC .CM1*20000+TFTT SET *FTT* ADDRESSES
  9011. RJM STA
  9012. .WB3 EQU WB+3
  9013. LDC .WB3*20000+TCBT SET *CBT* ADDRESSES
  9014. RJM STA
  9015. LDN EMBP FETCH *EMB* POINTER
  9016. CRD CM
  9017. LDC .CM1*20000+TEMB SET *EMB* ADDRESSES
  9018. RJM STA
  9019. LDK ESTP SET ENDING EST ORDINAL FOR EST SEARCH
  9020. CRD CM
  9021. LDD CM+3
  9022. STM LNEA
  9023. LDK UEML
  9024. CRD CM READ UEM POINTERS
  9025. LDD CM
  9026. SHN 11
  9027. * SHN 11+EMSC
  9028. SCN 77
  9029. STM SUAA SET FWA OF UEM
  9030. LDD CM
  9031. SHN -3
  9032. * SHN EMSC-3
  9033. STM SUAB
  9034. RJM CCP CHECK CALLING PROGRAM
  9035. EXECUTE 3DZ CONTINUE PRESET
  9036. TITLE PRESET SUBROUTINES.
  9037. CCP SPACE 4,10
  9038. ** CCP - CHECK CALLING PROGRAM.
  9039. *
  9040. * EXIT (A) = 0.
  9041. * TO *PPR* IF UNAUTHORIZED CALL.
  9042. *
  9043. * USES CM - CM+4.
  9044. *
  9045. * CALLS DFM.
  9046. *
  9047. * MACROS MONITOR.
  9048.  
  9049.  
  9050. CCP SUBR ENTRY/EXIT
  9051. LDK NCPL
  9052. CRD CM GET NUMBER OF CONTROL POINTS
  9053. AOD CM+1
  9054. SHN 7
  9055. LMD CP
  9056. ZJN CCPX IF DRIVER AT SYSTEM CP
  9057. LDD MA MOVE MESSAGE BELOW ADDRESS 10000
  9058. CWM CCPA,TR
  9059. LDD MA
  9060. CRM CSTB,TR
  9061. ERRNG 10000-CSTB MESSAGE BUFFER MUST BE IN FIRST 4K OF PP
  9062. ERRNG CSTB-MSFW MESSAGE BUFFER MUST NOT DESTROY PPR
  9063. LDC CSTB
  9064. RJM DFM ISSUE DAYFILE MESSAGE
  9065. MONITOR ABTM
  9066. LJM PPR EXIT TO PP RESIDENT
  9067.  
  9068.  
  9069. CCPA DATA C* 1DA - UNAUTHORIZED CALL.*
  9070. IFP SPACE 4,10
  9071. ** IFP - INITIALIZE MANAGED TABLE PROCESSORS.
  9072.  
  9073.  
  9074. LIST G
  9075. IFP HERE
  9076. LIST *
  9077. MCI SPACE 4,15
  9078. ** MCI - MODIFY CHANNEL INSTRUCTIONS.
  9079. *
  9080. * ENTRY (IR+4) = CONCURRENT CHANNEL NUMBER.
  9081. *
  9082. * EXIT (A) = 0.
  9083. *
  9084. * USES T1 - T3.
  9085. *
  9086. * CALLS C2D.
  9087. *
  9088. * MACROS CHTL.
  9089.  
  9090.  
  9091. MCI1 RAIL T2 MODIFY CHANNEL INSTRUCTION
  9092. AOD T1
  9093. MCI2 LDML TCHA,T1 EXTRACT NEXT ADDRESS
  9094. STDL T2
  9095. LDD T3 CHECK END OF LIST
  9096. CHTL *
  9097. SBN CH
  9098. NJN MCI1 IF MORE INSTRUCTIONS TO MODIFY
  9099.  
  9100. MCI SUBR ENTRY/EXIT
  9101. LDD IR+4
  9102. LPN 37 EXTRACT CHANNEL NUMBER
  9103. STD T3
  9104. RJM C2D CONVERT FOR OPERATOR MESSAGES
  9105. STM SRSG+13
  9106. STM ERCR+10
  9107. STM ERCD+16
  9108. STM ERCE+16
  9109. LDN 0 INITIALIZE REMOTE TABLE INDEX
  9110. STD T1
  9111. UJN MCI2 ENTER LOOP
  9112. SCT SPACE 4,10
  9113. ** SCT - SET CHANNEL TABLE ENTRY ADDRESSES.
  9114. *
  9115. * ENTRY (IR+4) = CHANNEL NUMBER.
  9116. *
  9117. * USES T1, T2, CM - CM+4.
  9118. *
  9119. * CALLS C2D, STA.
  9120.  
  9121.  
  9122. SCT SUBR ENTRY/EXIT
  9123. LDD IR+4
  9124. STD T1 SET CHANNEL NUMBER
  9125. STM DCEB+3
  9126. RAM CPCH
  9127. RJM C2D CONVERT FOR ERROR MESSAGE
  9128. STM LMRA+6
  9129. LCN 0 WORD OFFSET
  9130. STD T2
  9131. SCT1 AOD T2 INCREMENT WORD OFFSET
  9132. LCN 5
  9133. RAD T1
  9134. PJN SCT1 IF CHANNEL NOT IN THIS WORD
  9135. ADN 5
  9136. STD T1
  9137. RAM RCTA SET BYTE OFFSET
  9138. LDD T1
  9139. SHN 1 BYTE OFFSET * 2
  9140. ADD T1 BYTE OFFSET * 3
  9141. SHN 2 BYTE OFFSET * 12
  9142. SBN 59D (BYTE OFFSET * 12) - 59
  9143. LMC -0 59 - (BYTE OFFSET * 12)
  9144. SBN 2
  9145. SHN 6
  9146. STM SRFA+1 SET DRIVER FLAG BIT POSITION
  9147. LDK CHTP
  9148. CRD CM
  9149. LDD T2 SET ADDRESS OF WORD IN CHANNEL TABLE
  9150. RAD CM+3
  9151. SHN -14
  9152. RAD CM+2
  9153. .CM2 EQU CM+2
  9154. LDC .CM2*20000+TCHT SET CHANNEL TABLE ADDRESSES
  9155. RJM STA
  9156. LJM SCTX RETURN
  9157. SPA SPACE 4,10
  9158. ** SPA - SET PP EXCHANGE PACKAGE ADDRESSES.
  9159. *
  9160. * EXIT (T4) = CPP NUMBER.
  9161. *
  9162. * USES CM - CM+4, T1 - T5.
  9163. *
  9164. * CALLS STA.
  9165.  
  9166.  
  9167. SPA SUBR ENTRY/EXIT
  9168. LDN PXPP
  9169. CRD CM FETCH FWA OF PP EXCHANGE PACKAGE AREA
  9170. ADN 1
  9171. CRM AMEA,ON SET FIRST WORD OF PP EXCHANGE PACKAGE
  9172. ADN PPCP-PXPP-2
  9173. CRD T1 READ PP COMMUNICATION AREA POINTER
  9174. LDD IA
  9175. STM AMEA+4 SET (B0) NON-ZERO FOR EXCHANGE TEST
  9176. SBD T1+4
  9177. SHN -3 PP NUMBER
  9178. SBN 24 CPP NUMBER
  9179. STD T4
  9180. SHN 6
  9181. STM CPCH SAVE CPP NUMBER FOR BML MESSAGE
  9182. SHN -6
  9183. ADN 24-2
  9184. STD T1 PP NUMBER - 2
  9185. SHN 4
  9186. ADD T1 (PP NUMBER - 2) * 21B
  9187. RAD CM+4
  9188. SHN -14
  9189. RAD CM+3
  9190. .CM3 EQU CM+3
  9191. LDC .CM3*20000+TEXP SET EXCHANGE PACKAGE ADDRESSES
  9192. RJM STA
  9193. LJM SPAX RETURN
  9194. STA SPACE 4,10
  9195. ** STA - SET TABLE ADDRESSES.
  9196. *
  9197. * ENTRY (A) = 5/ TP, 13/ TA.
  9198. * (TP) = TABLE POINTER.
  9199. * (TA) = INSTRUCTION TABLE ADDRESS.
  9200. *
  9201. * EXIT (A) = 0.
  9202. *
  9203. * USES T1 - T3.
  9204.  
  9205.  
  9206. STA1 STDL T2 SET INSTRUCTION ADDRESS
  9207. LDM 1,T1
  9208. RAM 1,T2 SET LOWER 12 BITS OF ADDRESS
  9209. SHN -14
  9210. ADI T1 SET UPPER 6 BITS OF ADDRESS
  9211. LPN 37
  9212. RAI T2
  9213. AODL T3 ADVANCE INSTRUCTION LIST
  9214. STA2 LDIL T3
  9215. NJN STA1 IF NOT END OF TABLE
  9216.  
  9217. STA SUBR ENTRY/EXIT
  9218. STDL T3
  9219. SHN -15 SET ADDRESS POINTER
  9220. STD T1
  9221. LDDL T3
  9222. LPC 17777
  9223. STDL T3
  9224. UJN STA2 ENTER LOOP
  9225. TITLE INSTRUCTION MODIFICATION TABLES.
  9226. TCHA SPACE 4,10
  9227. ** TABLE OF CHANNEL INSTRUCTIONS ADDRESSES.
  9228.  
  9229.  
  9230. TCHA CHTB
  9231. RSTC RESTORE CHANNEL INSTRUCTIONS
  9232. TCBT SPACE 4,10
  9233. ** TABLE OF INSTRUCTIONS REQUIRING FWA OF *CBT*.
  9234.  
  9235.  
  9236. TCBT BSS 0
  9237. TCBT HERE
  9238. CON 0 TERMINATE TABLE
  9239. TCCT SPACE 4,10
  9240. ** TABLE OF INSTRUCTIONS REQUIRING ADDRESS OF *CCT* ENTRY.
  9241.  
  9242.  
  9243. TCCT BSS 0
  9244. TCCT HERE
  9245. CON 0 TERMINATE TABLE
  9246. TCHT SPACE 4,10
  9247. ** TABLE OF INSTRUCTIONS REQUIRING FWA OF CHANNEL TABLE.
  9248.  
  9249.  
  9250. TCHT BSS 0
  9251. TCHT HERE
  9252. CON 0 TERMINATE TABLE
  9253. TEMB SPACE 4,10
  9254. ** TABLE OF INSTRUCTIONS REQUIRING FWA OF *EMB*.
  9255.  
  9256.  
  9257. TEMB BSS 0
  9258. QUAL COMPIMB
  9259. TEMB HERE
  9260. QUAL *
  9261. CON 0 TERMINATE TABLE
  9262. TEXP SPACE 4,10
  9263. ** TABLE OF INSTRUCTIONS REQUIRING FWA OF PP EXCHANGE PACKAGE.
  9264.  
  9265.  
  9266. TEXP BSS 0
  9267. TEXP HERE
  9268. CON 0 TERMINATE TABLE
  9269. TFTT SPACE 4,10
  9270. ** TABLE OF INSTRUCTIONS REQUIRING FWA OF *FTT*.
  9271.  
  9272.  
  9273. TFTT BSS 0
  9274. TFTT HERE
  9275. CON 0 TERMINATE TABLE
  9276. TPUT SPACE 4,10
  9277. ** TABLE OF INSTRUCTIONS REQUIRING FWA OF *PUT*.
  9278.  
  9279.  
  9280. TPUT BSS 0
  9281. TPUT HERE
  9282. CON 0 TERMINATE TABLE
  9283. SPACE 4,10
  9284. * CHECK FOR OVERFLOW.
  9285.  
  9286.  
  9287. ERRNG 17777-*-5 OVERFLOW PAST END OF PP
  9288. SPACE 4,10
  9289. TTL 1DA/3DZ - *DAS* DRIVER PRESET (PART 2).
  9290. TITLE
  9291. IDENT 3DZ,OVLP *DAS* DRIVER PRESET (PART 2).
  9292.  
  9293.  
  9294. *COMMENT 1DA - *DAS* DRIVER PRESET (PART 2).
  9295. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1995.
  9296.  
  9297.  
  9298. ORG OVLP
  9299. QUAL 3DZ
  9300. BST SPACE 4,15
  9301. ** BST - BUILD STATE TABLES AND BML ERROR MESSAGE BUFFER.
  9302. *
  9303. * ENTRY (CPCH) = CPP NUMBER AND CHANNEL NUMBER.
  9304. * (PUTA - PUTA+1) = ADDRESS OF *PUT*.
  9305. * (PUTN) = NUMBER OF *PUT* ENTRIES.
  9306. *
  9307. * EXIT TO *MRS* WHEN PRESET COMPLETE.
  9308. * TO *DAS6* IF CHANNEL DOWN.
  9309. *
  9310. * USES T4.
  9311. *
  9312. * CALLS CFD, DHE, IST, SMC.
  9313.  
  9314.  
  9315. BST SUBR ENTRY
  9316.  
  9317. * NOTE - THE FOLLOWING CALL TO *IST* DESTROYS *PPR* IN THIS PP.
  9318. * NO CALLS TO *PPR* MAY BE MADE AFTER THIS POINT.
  9319.  
  9320. RJM IST INITIALIZE DEVICE/CONTROLLER STATE TABLES
  9321. RJM DHE DETERMINE HIGHEST EST ORDINAL
  9322. RJM SMC SET MMF CONSTANTS
  9323. RJM CFD CLEAR FLAGS AT DEADSTART
  9324.  
  9325. * PRESET BML ERROR MESSAGE BUFFER.
  9326.  
  9327. LDC EDBF
  9328. STDL T4
  9329. LDN 0
  9330. BST1 STI T4
  9331. AODL T4 ADVANCE BUFFER ADDRESS
  9332. SHN 0-15
  9333. ZJN BST1 IF NOT END OF BUFFER
  9334. LDM CPCH SET CPP NUMBER AND CHANNEL NUMBER
  9335. STM PPCH
  9336. LDN MLDY SET DAYFILE CODE
  9337. STM MSGT
  9338. LDC ** (MAINFRAME ID)
  9339. BSTA EQU *-1
  9340. STM MFID
  9341.  
  9342. * RESERVE CHANNEL AND INITIATE DRIVER.
  9343.  
  9344. LDM DASB CHECK IF ANY DEVICES FOUND
  9345. LMC DSTB
  9346. ZJN BST3 IF NO DEVICES FOR THIS DRIVER
  9347. LJM CCR2 RESERVE CHANNEL (RETURN TO *BST2*)
  9348.  
  9349. BST2 NJN MRS IF CHANNEL NOT DOWN
  9350. BST3 LJM DAS6 DROP CPP
  9351. TITLE SUBROUTINES.
  9352. MRS SPACE 4,10
  9353. ** MRS - MASTER RESET SLAVES.
  9354. *
  9355. * EXIT TO *CMP* IF RESET SUCCESSFUL.
  9356. * TO *DAS1* IF NO UNIT COULD BE INTERLOCKED.
  9357. *
  9358. * USES DI, T1.
  9359. *
  9360. * CALLS FCN, IDU, LDP, RCR.
  9361. *
  9362. * MACROS WAIT.
  9363.  
  9364.  
  9365. MRS BSS 0 ENTRY
  9366. LDC DSTB-DSTBE FIRST DEVICE TABLE ADDRESS
  9367. STD DI
  9368. MRS1 LDN DSTBE
  9369. RAD DI
  9370. LMM DASB
  9371. ZJP DAS1 IF NO UNIT COULD BE INTERLOCKED
  9372. RJM LDP LOAD DEVICE PARAMETERS
  9373. RJM IDU INTERLOCK DISK UNIT
  9374. NJN MRS1 IF UNIT NOT INTERLOCKED
  9375. RJM RCR MASTER CLEAR CHANNEL
  9376. LDN 1
  9377. STD T1
  9378. SHN 13-0 POSITION PORT NUMBER
  9379. MRS3 LMML PAS,CT
  9380. RJM FCN SELECT ADAPTER PORT
  9381. LDC F9213
  9382. RJM FCN ISSUE MASTER RESET
  9383. WAIT 10
  9384. LDDL LF LAST FUNCTION
  9385. SCN 2
  9386. RJM FCN CLEAR SYNC OUT
  9387. SOD T1
  9388. ZJN MRS3 IF ANOTHER PORT TO PROCESS
  9389. LJM CMP EXIT/CLEAR UNIT INTERLOCK
  9390. SPACE 4,10
  9391. * CHECK FOR OVERFLOW.
  9392.  
  9393.  
  9394. ERRNG EDBF-* OVERFLOW INTO BML ERROR MESSAGE BUFFER
  9395. TITLE OVERLAYABLE SUBROUTINES.
  9396. CFD SPACE 4,15
  9397. ** CFD - CLEAR FLAGS AT DEADSTART.
  9398. *
  9399. * CLEAR FLAGS THAT ARE LEFT SET AFTER LEVEL 3 DEADSTART.
  9400. * THE CORRESPONDING *BDT* INTERLOCKS ARE CLEARED BY *MTE*.
  9401. *
  9402. * EXIT FLAGS CLEARED IN *BDLL* AND *ACGL*.
  9403. *
  9404. * USES DI, T4, UC, CM - CM+4, CW - CW+4.
  9405. *
  9406. * CALLS CDS, CMC, IDU, IMR, LDP, LNE, RBD, UBP.
  9407. *
  9408. * MACROS CMSTF, MONITOR.
  9409.  
  9410.  
  9411. CFD SUBR ENTRY/EXIT
  9412. LDC DSTB-DSTBE
  9413. STD DI
  9414. CFD1 LDN DSTBE PROCESS NEXT DEVICE
  9415. RAD DI
  9416. LMM DASB
  9417. ZJN CFDX IF NO MORE DEVICES TO PROCESS
  9418. RJM LDP LOAD DEVICE PARAMETERS
  9419. LDN 0 INITIALIZE PARTITION SEARCH
  9420. CFD2 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
  9421. ZJN CFD1 IF NO MORE PARTITIONS
  9422. RJM CDS CHECK DEVICE STATUS
  9423. MJN CFD3 IF DEVICE NOT RECOVERED
  9424. RJM RBD READ *BDLL*
  9425. LDD CM+3 CHECK FLAGS FOR ERROR/RESTORE INTERLOCKS
  9426. SHN 0-11
  9427. LPN 3
  9428. NJN CFD4 IF EITHER FLAG IS SET
  9429. CFD3 LJM CFD12 PROCESS NEXT PARTITION
  9430.  
  9431. * INTERLOCK DEVICE AND RECHECK FLAGS.
  9432.  
  9433. CFD4 RJM IDU INTERLOCK DEVICE
  9434. NJN CFD1 IF INTERLOCK NOT AVAILABLE
  9435. RJM RBD READ *BDLL*
  9436. LDD CM+3 CHECK FLAGS FOR ERROR/RESTORE INTERLOCKS
  9437. SHN 0-11
  9438. LPN 3
  9439. ZJP CFD11 IF NEITHER FLAG IS SET
  9440. STD T4 SAVE STATUS
  9441. LDN ZERL CLEAR *BDT* ENTRY BUFFER
  9442. CRD CW
  9443. LDML DVTP,DI
  9444. SHN 21-11
  9445. PJN CFD5 IF NOT SHARED DEVICE
  9446.  
  9447. * GET *BDT* ENTRY FROM *MTE*.
  9448.  
  9449. LDD EO SET EST ORDINAL
  9450. STD CM+4
  9451. LDN GBDS GET *BDT* ENTRY
  9452. STD CM+1
  9453. MONITOR MTEM
  9454. LDD MA READ *BDT* ENTRY
  9455. CRD CW
  9456.  
  9457. * PROCESS ERROR PROCESSING FLAG.
  9458.  
  9459. CFD5 LDD T4
  9460. LPN 2
  9461. ZJN CFD8 IF *BDLL* ERROR PROCESSING FLAG NOT SET
  9462. LDD CW CHECK IF *BDT* ERROR INTERLOCK SET
  9463. ZJN CFD6 IF NOT SET
  9464. LPN 77
  9465. LMN ** (MACHINE INDEX)
  9466. CFDA EQU *-1
  9467. NJN CFD7 IF SET FOR A DIFFERENT MF
  9468. UJN CFD8 DO NOT CLEAR FLAGS
  9469.  
  9470. CFD6 CMSTF GDER CLEAR *ERROR RECOVERY IN PROGRESS* FLAG
  9471. CFD7 LDN 0 CLEAR FLAG THAT SAYS THIS MF HAS INTERLOCK
  9472. STD CM+2
  9473. LDN 26 BIT TO CHANGE
  9474. RJM UBP UPDATE *BDLL* PARAMETER
  9475.  
  9476. * PROCESS RESTORE FLAG.
  9477.  
  9478. CFD8 LDD T4
  9479. LPN 1
  9480. ZJN CFD11 IF *BDLL* RESTORE FLAG NOT SET
  9481. LDD CW+1 CHECK IF *BDT* RESTORE SET
  9482. ZJN CFD9 IF NOT SET
  9483. LPN 77
  9484. LMN ** (MACHINE INDEX)
  9485. CFDB EQU *-1
  9486. NJN CFD10 IF SET FOR A DIFFERENT MF
  9487. UJN CFD11 DO NOT CLEAR FLAGS
  9488.  
  9489. CFD9 CMSTF GDUR CLEAR *RESTORE IN PROGRESS* FROM *ACGL*
  9490. CMSTF GDRI CLEAR *RESTORE INITIATION* FROM *ACGL*
  9491. LDD EO SET EST ORDINAL
  9492. STD CM+1
  9493. LDN 0
  9494. STD CM+2
  9495. LDN SRCS CLEAR REMAINING CYLINDERS / 100B IN *ACGL*
  9496. STD CM+3
  9497. MONITOR STBM
  9498. CFD10 LDN 0 CLEAR FLAG THAT SAYS THIS MF HAS INTERLOCK
  9499. STD CM+2
  9500. LDN 25 BIT TO CHANGE
  9501. RJM UBP UPDATE *BDLL* PARAMETER
  9502.  
  9503. * CLEAR UNIT INTERLOCK.
  9504.  
  9505. CFD11 LDN 0 RELEASE UNIT INTERLOCK
  9506. STD WB+4
  9507. LDC 4000
  9508. STD WB+3
  9509. LDN DCBS
  9510. RJM IMR
  9511. * LDN 0 CLEAR UNIT INTERLOCKED FLAG
  9512. STM RQLN,DI
  9513. SOD UC ADJUST UNIT ACTIVITY COUNT
  9514. RJM CMC CHECK MONITOR COMPLETE
  9515. CFD12 LDD EO
  9516. LJM CFD2 PROCESS NEXT PARTITION
  9517. DHE SPACE 4,10
  9518. ** DHE - DETERMINE HIGHEST EST ORDINAL.
  9519. *
  9520. * ENTRY (LNEA) = HIGHEST MASS STORAGE EST ORDINAL (+1).
  9521. *
  9522. * EXIT (LNEA) = HIGHEST EST ORDINAL FOR THIS DRIVER (+1).
  9523. *
  9524. * USES DI.
  9525. *
  9526. * CALLS LDP, LNE.
  9527.  
  9528.  
  9529. DHE SUBR ENTRY/EXIT
  9530. LDC DSTB
  9531. STD DI
  9532. DHE1 RJM LDP LOAD DEVICE PARAMETERS
  9533. LDN 0 INITIALIZE PARTITION SEARCH
  9534. DHE2 RJM LNE LOCATE NEXT EST ORDINAL
  9535. ZJN DHE4 IF NO MORE PARTITIONS
  9536. SBM DHEA
  9537. MJN DHE3 IF NOT NEW HIGHEST EST ORDINAL
  9538. LDD EO SET HIGHEST EST ORDINAL
  9539. STM DHEA
  9540. DHE3 LDD EO
  9541. UJN DHE2 PROCESS NEXT PARTITION
  9542.  
  9543. DHE4 LDN DSTBE ADVANCE DEVICE STATE TABLE ADDRESS
  9544. RAD DI
  9545. LMM DASB
  9546. NJN DHE1 IF NOT END OF DEVICE STATE TABLE
  9547. LDM DHEA SET HIGHEST EST ORDINAL FOR THIS DRIVER
  9548. ADN 1
  9549. STM LNEA
  9550. UJN DHEX RETURN
  9551.  
  9552.  
  9553. DHEA CON 0 HIGHEST EST ORDINAL FOR THIS DRIVER
  9554. IST SPACE 4,15
  9555. ** IST - INITIALIZE DEVICE STATE TABLE.
  9556. *
  9557. * ENTRY (PUTA - PUTA+1) = ADDRESS OF *PUT*.
  9558. * (PUTN) = NUMBER OF *PUT* ENTRIES.
  9559. *
  9560. * USES CI, DI, FC, T1, T2, T5, CM - CM+4, CW - CW+4,
  9561. * WB - WB+4.
  9562. *
  9563. * MACROS SFA.
  9564.  
  9565.  
  9566. IST11 LDD DI DEFINE END OF DEVICE STATE TABLE
  9567. STM DASB
  9568.  
  9569. IST SUBR ENTRY/EXIT
  9570. LDC CSTBL-1
  9571. STDL DI
  9572. IST1 LDN 0 CLEAR DEVICE AND CONTROLLER STATE TABLES
  9573. STI DI
  9574. SOD DI
  9575. LMC DSTB
  9576. NJN IST1 IF MORE TO CLEAR
  9577. * LDN 0
  9578. STD FC UNITS NOT CHECKED FOR FORMAT REQUEST
  9579. STD T5 INITIALIZE *PUT* ORDINAL
  9580.  
  9581. * PROCESS NEXT *PUT* ENTRY.
  9582.  
  9583. IST2 AOD T5 CHECK NEXT *PUT* ENTRY
  9584. LMM PUTN NUMBER OF *PUT* ENTRIES
  9585. ZJN IST11 IF END OF PHYSICAL UNIT TABLE
  9586. LDD T5
  9587. SHN PUTLS CALCULATE *PUT* ADDRESS
  9588. STD T1
  9589. LDM PUTA FWA OF *PUT*
  9590. SHN 14
  9591. LMM PUTA+1
  9592. ADD T1
  9593. ADK UNCT GET UNIT CONTROL WORD
  9594. CRD WB
  9595. SFA EST,WB+1 FETCH EST ENTRY
  9596. ADK EQDE
  9597. CRD CM
  9598. ADK EQAE-EQDE
  9599. CRD CW
  9600. LDD CM+1 CHECK FIRST CHANNEL
  9601. STD T1
  9602. LMD IR+4
  9603. LPN 77
  9604. ZJN IST3 IF CHANNEL FOR THIS DRIVER
  9605. LDD CM+2 CHECK SECOND CHANNEL
  9606. STD T1
  9607. ZJN IST2 IF SECOND CHANNEL NOT DEFINED
  9608. LMD IR+4
  9609. LPN 77
  9610. NJN IST2 IF NOT CHANNEL FOR THIS DRIVER
  9611.  
  9612. * CREATE DEVICE STATE TABLE ENTRY FOR THIS DEVICE.
  9613.  
  9614. IST3 LDD T5 SET *PUT* ORDINAL IN STATE TABLE
  9615. STI DI
  9616. ERRNZ PUTO CODE DEPENDS ON VALUE
  9617. LDD T1
  9618. LPC 200 SET PORT NUMBER
  9619. SHN 11-7
  9620. STM PNUN,DI
  9621. LDD WB GET EQUIPMENT AND UNIT NUMBERS
  9622. LPC 777
  9623. RAM PNUN,DI APPEND TO PORT NUMBER
  9624. LDN EQNS DETERMINE DEVICE TYPE
  9625. STD T1
  9626. IST4 SOD T1 CHECK NEXT DEVICE MNEMONIC
  9627. LDM DM,T1
  9628. LMD CM+3
  9629. NJN IST4 IF DEVICE MNEMONIC DOES NOT MATCH
  9630. LDD T1 SET DEVICE TYPE INDEX
  9631. LMC 1S13 SET *CHECK DRIVE TYPE* FLAG
  9632. STML DVTP,DI
  9633. LDD CM CHECK FOR SHARED DEVICE
  9634. LPC 1000
  9635. ZJN IST5 IF NOT SHARED DEVICE
  9636. RAML DVTP,DI SET *MMF SHARED DEVICE* FLAG
  9637. LDML DM,T1
  9638. SHN 0-17 NONZERO IF PARITY DEVICE
  9639. SHN 12-0
  9640. RAML DVTP,DI SET *ENABLE MMF PARITY DEVICE ACCESS* FLAG
  9641. IST5 LDD CW+3
  9642. SHN 0-13 NONZERO IF PARTITIONED DEVICE
  9643. SHN 17-0
  9644. RAML DVTP,DI SET *PARTITIONED DEVICE* FLAG
  9645.  
  9646. * FIND CONTROLLER STATE TABLE ENTRY FOR THIS DEVICE.
  9647.  
  9648. LDN 0 INITIALIZE CONTROLLER STATE TABLE INDEX
  9649. STD T1
  9650. IST6 LDD T1 CHECK NEXT CONTROLLER
  9651. SHN 2
  9652. ERRNZ CSTBE-4 CODE DEPENDS ON VALUE
  9653. ADC CSTB
  9654. STD CI SET CONTROLLER STATE TABLE ADDRESS
  9655. LDML CTST,CI
  9656. NJN IST7 IF CONTROLLER ALREADY IDENTIFIED
  9657. LDD DI SET *DSTB* ADDRESS OF FIRST DEVICE
  9658. LMC 1S14 SET *INITIAL RESET REQUIRED* FLAG
  9659. STML CTST,CI
  9660. UJN IST8 SET CONTROLLER STATE TABLE INDEX
  9661.  
  9662. IST7 LPC 7777 *DSTB* OF FIRST DEVICE ON CONTROLLER
  9663. STD T2
  9664. LDM PNUN,T2 COMPARE CONTROLLER AND PORT NUMBERS
  9665. LMM PNUN,DI
  9666. SHN -6
  9667. ZJN IST8 IF SAME CONTROLLER AND PORT NUMBERS
  9668. AOD T1 CHECK NEXT CONTROLLER
  9669. LMN MXCN
  9670. NJN IST6 IF NOT END OF CONTROLLER STATE TABLE
  9671. STI DI CLEAR DEVICE STATE TABLE ENTRY
  9672. ERRNZ PUTO CODE DEPENDS ON VALUE
  9673. STM PNUN,DI
  9674. STM DVTP,DI
  9675. UJN IST9 IGNORE DEVICE AND PROCESS NEXT *PUT*
  9676.  
  9677. IST8 LDD T1 SET CONTROLLER STATE TABLE INDEX
  9678. SHN 14
  9679. RAML PNUN,DI
  9680. LDN DSTBE ADVANCE DEVICE STATE TABLE ADDRESS
  9681. RAD DI
  9682. LMC DSTBL
  9683. ZJN IST10 IF DEVICE STATE TABLE IS FULL
  9684. IST9 LJM IST2 PROCESS NEXT *PUT* ENTRY
  9685.  
  9686. IST10 LJM IST11 DEFINE END OF DEVICE STATE TABLE
  9687. SMC SPACE 4,10
  9688. ** SMC - SET MMF CONSTANTS.
  9689. *
  9690. * PERFORM CODE MODIFICATION FOR MMF OPERATION.
  9691. *
  9692. * USES CM - CM+4.
  9693. *
  9694. * MACROS ISTORE.
  9695.  
  9696.  
  9697. SMC SUBR ENTRY/EXIT
  9698. LDK MMFL GET MMF WORD
  9699. CRD CM
  9700. LDD CM SET MAINFRAME ID
  9701. STM BSTA
  9702. LDD CM+1
  9703. SHN 21-11
  9704. MJN SMC1 IF SHARED BUFFERED DEVICES CONFIGURED
  9705. ISTORE CRIA,(UJN CRIX) DISABLE MMF SLAVE RESET INTERLOCK
  9706. ISTORE SRIA,(UJN SRIX)
  9707. ISTORE CAAA,(UJN CAA8) DISABLE CHECK FOR MMF PARITY RESTORE
  9708. ISTORE CETA,(UJN CETX)
  9709. UJN SMCX RESERVE CHANNEL
  9710.  
  9711. SMC1 LDD CM+3 SET MACHINE MASKS
  9712. RAM IPRB
  9713. LPN 77
  9714. RAM CABA
  9715. LDD CM+4 SET MACHINE INDEX
  9716. RAM CFDA
  9717. STM CFDB
  9718. LDD CM+4 MACHINE INDEX
  9719. ADN GPDA-1 *ACGL* BIT NUMBER
  9720. LMC LCNI
  9721. STM DMPA
  9722. LMC LDNI&LCNI
  9723. STM EMPA
  9724. UJP SMCX RETURN
  9725. SPACE 4,10
  9726. * CHECK FOR OVERFLOW.
  9727.  
  9728.  
  9729. ERRNG 17777-*-5 OVERFLOW PAST END OF PP
  9730.  
  9731.  
  9732. QUAL *
  9733. TTL 1DA - DISK ARRAY SUBSYSTEM (DAS) DRIVER.
  9734.  
  9735.  
  9736. END
cdc/nos2.source/opl871/1da.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator