User Tools

Site Tools


cdc:nos2.source:opl871:1xd

Table of Contents

1XD

Table Of Contents

  • [00002] 1XD - NOS XMD (9853) DRIVER.
  • [00010] CM3/XMD3 (9853) DRIVER.
  • [00202] CONSTANTS AND DEFINITIONS.
  • [00536] MACROS.
  • [00540] TBLM - CREATE TABLE ENTRY MACRO.
  • [00563] CBTE - CONTROL BUFFER TABLE ENTRY.
  • [00578] CCTE - CHANNEL CONTROL TABLE ENTRY.
  • [00593] CHTE - CHANNEL TABLE ENTRY.
  • [00608] EMBE - ERROR MESSAGE TABLE ENTRY.
  • [00623] EXPE - EXCHANGE PACKAGE ADDRESS ENTRY.
  • [00638] PUTE - PHYSICAL UNIT TABLE ENTRY.
  • [00653] MONITOR - REQUEST MONITOR FUNCTION.
  • [00671] WAIT - DO NOTHING FOR SPECIFIED TIME.
  • [00701] MAIN PROGRAM.
  • [00703] XMD - MAIN PROGRAM.
  • [00743] READ / WRITE PROCESSING.
  • [00745] PIO - READ / WRITE PROCESSING.
  • [00858] LIST DEVICE ATTRIBUTE.
  • [00860] LDA - LIST DEVICE ATTRIBUTE IN DAYFILE.
  • [01007] DIAGNOSTIC PROCESSING.
  • [01009] RND - RUN DIAGNOSTICS.
  • [01044] SELECTIVE RESET PROCESSING.
  • [01046] SRS - SELECTIVE RESET PROCESSING.
  • [01185] INTERRUPT DRIVEN SUBROUTINES.
  • [01187] BOR - BREAK OPPOSITE RESERVE.
  • [01218] EDR - EXECUTE DRIVE (POWER ON) RESET.
  • [01256] GDS - GET DRIVE STATUS.
  • [01293] RTC - RETURN TO CALLER.
  • [01306] SCA - SET CONTROLLER ATTRIBUTES.
  • [01348] SDA - SET DRIVE ATTRIBUTES.
  • [01440] SUBROUTINES.
  • [01442] ACE - ANALYZE CHANNEL ERROR.
  • [01469] AME - ATTEMPT MONITOR EXCHANGE.
  • [01503] ATT - PROCESS ATTENTION.
  • [01564] CCO - CHECK FOR CONTROLLER OVER TEMPERATURE.
  • [01641] CCR - CHECK FOR CHANNEL REQUEST.
  • [01686] CDA - CONVERT PHYSICAL TO LOGICAL DISK ADDRESS.
  • [01740] CEA - CLEAR *ENABLE CONTROLLER ACTIVITY* REQUEST.
  • [01782] CFR - CHECK *PUT* FOR REQUEST.
  • [01837] CMC - CHECK MONITOR COMPLETE.
  • [01864] CMP - COMPLETE PROCESSING.
  • [01934] CPF - CLEAR *PUT* FLAG IN *PILL*.
  • [01968] CSR - CLEAR SPECIAL REQUEST.
  • [01987] CTO - CHECK TIMEOUT.
  • [02004] DCR - DROP CHANNEL RESERVATION.
  • [02026] ECA - ENABLE CONTROLLER ACTIVITY.
  • [02056] EIO - ENTER I/O REQUEST QUEUE.
  • [02097] ERR - PROCESS ERRORS.
  • [02551] ICR - ISSUE CONTROLLER RESET.
  • [02598] IDM - ISSUE DAYFILE MESSAGE.
  • [02643] IDU - INTERLOCK DISK UNIT.
  • [02705] IIO - INITIATE I/O.
  • [02769] IMF - ISSUE MONITOR FUNCTION.
  • [02788] IMR - INITIATE MONITOR REQUEST.
  • [02815] IOM - ISSUE OPERATOR MESSAGE.
  • [02851] ISR - IDENTIFY AND PROCESS SPECIAL REQUEST.
  • [02985] LDP - LOAD DEVICE PARAMETERS.
  • [03029] LND - LOCATE NEXT DRIVE (ON SPECIFIED CONTROLLER).
  • [03063] LSD - LOCATE SELECTED DRIVE IN *DSTB*.
  • [03091] PEF - PROCESS ERROR FLAGS.
  • [03126] RCS - REMOVE CHANNEL FROM SYSTEM USE.
  • [03153] RCT - READ CHANNEL TABLE.
  • [03169] RLB - READ LINKAGE BITS.
  • [03212] RMR - READ CHANNEL STATUS REGISTER.
  • [03238] SCD - STORE *CPD* DATA.
  • [03262] SEC - SET ERROR CODE.
  • [03327] SFR - SEARCH FOR CONSECUTIVE REQUEST.
  • [03398] SLB - SET LINKAGE BITS.
  • [03451] SMC - SEARCH FOR MAJOR CATEGORY SUBSTATUS.
  • [03476] SRF - SET DRIVER RELOAD FLAG.
  • [03507] SRP - SEARCH RESPONSE PACKET.
  • [03542] STF - SET TRACK FLAW, IF TRACK WITHIN USER AREA.
  • [03600] STO - SET TIMEOUT.
  • [03619] SUA - SET UEM ADDRESS.
  • [03649] SUI - SET UNIT INTERLOCK.
  • [03682] TMSE - TABLE OF MASS STORAGE ERROR CODES.
  • [03708] TMSK - TABLE OF UNIT MASKS.
  • [03726] UBP - UPDATE *BDLL* PARAMETER.
  • [03757] UEC - UPDATE MST ERROR COUNT.
  • [03783] UHD - UNPACK HEX DATA.
  • [03840] VIS - VERIFY INTERRUPT SOURCE.
  • [03894] WLB - WRITE LINKAGE BITS.
  • [03936] WMC - WAIT MAINTENANCE CHANNEL EMPTY.
  • [03959] WTC - WAIT TRANSMISSION COMPLETE.
  • [03984] CHANNEL SUBROUTINES.
  • [03986] BCS - DEFINE INFORMATION TRANSFER.
  • [04012] CFE - CHECK FOR I/O ERROR.
  • [04031] CTC - CHECK TRANSFER COMPLETE.
  • [04058] DCM - DESELECT CONTROL MODULE.
  • [04090] DTM - DETERMINE TRANSFER MODE.
  • [04120] ECI - EXAMINE CONTROLLER INTERRUPTS.
  • [04203] FCN - ISSUE FUNCTION.
  • [04230] GIS - GET INTERRUPT STATUS.
  • [04257] GSS - GET SLAVE STATUS.
  • [04313] IHD - INTERRUPT HANDLER.
  • [04376] RCR - RESET CHANNEL REGISTERS.
  • [04401] RIF - RESET INTERFACE.
  • [04442] RRP - READ RESPONSE PACKET.
  • [04477] RSR - READ SLAVE RESPONSE.
  • [04496] RTR - READ *T* REGISTER.
  • [04511] SAP - SELECT ADAPTOR PORT.
  • [04525] SCM - SELECT CONTROL MODULE.
  • [04555] WCB - WRITE COMMAND BLOCK (PACKET).
  • [04598] WTR - WRITE *T* PRIME REGISTER.
  • [04640] MISCELLANEOUS.
  • [04686] INSTRUCTION MODIFICATION TABLES.
  • [04739] PRESET.
  • [04741] PRS - PRESET DRIVER FOR PROCESSING.
  • [04829] PRESET SUBROUTINES.
  • [04831] CCP - CHECK CALLING PROGRAM.
  • [04854] IST - INITIALIZE DEVICE STATE TABLE.
  • [04933] MCI - MODIFY CHANNEL INSTRUCTIONS.
  • [04963] MRS - MASTER RESET SLAVES.
  • [04991] SCT - SET CHANNEL TABLE ENTRY ADDRESSES.
  • [05036] SPA - SET PP EXCHANGE PACKAGE ADDRESSES.
  • [05070] STA - SET TABLE ADDRESSES.

Source Code

1XD.txt
  1. IDENT 1XD,CM3D
  2. TITLE 1XD - NOS XMD (9853) DRIVER.
  3. CIPPU ,S
  4. MEMSEL 8
  5. BASE M
  6. SST
  7. *COMMENT 1XD - CM3/XMD3 (9853) DRIVER.
  8. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  9. SPACE 4,10
  10. *** 1XD - CM3/XMD3 (9853) DRIVER.
  11. *
  12. * P. D. HAAS. 88/02/26.
  13. SPACE 4,10
  14. *** *1XD* IS THE DRIVER FOR THE XMD (9853) DISK STORAGE SUBSYSTEM.
  15. *
  16. * THE XMD DISK DRIVES ARE SUPPORTED AS BUFFERED I/O
  17. * DEVICES. REQUESTS TO BE PROCESSED BY *1XD* ARE POSTED
  18. * BY *CPUMTR* IN THE BUFFERED I/O TABLES IN *CMR*.
  19. * *1XD* INTERLOCKS UNITS, DELINKS BUFFERS, AND COMPLETES
  20. * SAID REQUESTS BY ISSUING APPROPRIATE *BIOM* FUNCTIONS.
  21. *
  22. * EACH COPY OF *1XD* WILL SUPPORT ONE CONCURRENT CHANNEL
  23. * CONFIGURED WITH THE INTELLIGENT PERIPHERAL INTERFACE (IPI)
  24. * AND IS THE SOLE DRIVER FOR ALL XMD DISKS ON THAT CHANNEL.
  25. * *1XD* MUST BE LOADED INTO A CONCURRENT PP, IN THE SAME
  26. * BANK AS THE CHANNEL IT IS TO SERVICE.
  27. *
  28. * EACH COPY OF THE DRIVER CAN SERVICE UP TO SIXTEEN XMD
  29. * UNITS IN ANY CONFIGURATION MIX OF CONTROL MODULES AND
  30. * DRIVES COUPLED TO EITHER PORT OF THE IPI ADAPTOR.
  31. *
  32. * *1XD* SCANS THROUGH THE *PUT* ENTRIES IN A CIRCULAR FASHION
  33. * LOOKING FOR REQUESTS TO PROCESS. ONCE A REQUEST IS FOUND,
  34. * *1XD* USES THE PHYSICAL DISK AND UEM ADDRESSES IN THE
  35. * CORRESPONDING *CBT* ENTRY TO DETERMINE THE ACTION TO BE
  36. * TAKEN. *1XD* WILL ATTEMPT TO PROCESS CONSECUTIVE REQUESTS
  37. * ON THE CURRENT UNIT UNTIL THE END OF THE UNIT I/O QUEUE,
  38. * OR A CONSECUTIVE REQUEST WAS NOT FOUND. AT THIS POINT
  39. * *1XD* WILL RESUME ITS SEARCH THROUGH THE *PUT* WITH THE
  40. * *PUT* ENTRY IMMEDIATELY FOLLOWING THE ONE JUST PROCESSED.
  41. SPACE 4,10
  42. *** ORGANIZATION OF THE 9853 (MEASUREMENTS IN DECIMAL).
  43. *
  44. * EQUIPMENT TYPE *DN*
  45. *
  46. * UNITS/LOGICAL DEVICE 1
  47. *
  48. * PHYSICAL ORGANIZATION:
  49. *
  50. * WORDS/PHYSICAL SECTOR 256
  51. * PHYSICAL SECTORS/TRACK 21
  52. * PHYSICAL TRACKS/CYLINDER 19
  53. * CYLINDERS/DEVICE 1409
  54. * WORDS/DEVICE 143,861,760
  55. *
  56. * LOGICAL ORGANIZATION:
  57. *
  58. * WORDS/LOGICAL SECTOR 64
  59. * LOGICAL SECTORS/PHYSICAL SECTOR 4
  60. * LOGICAL SECTORS/LOGICAL TRACK 1120
  61. * LOGICAL TRACKS/DEVICE 2007
  62. *
  63. * MAXIMUM SUSTAINED DATA RATE 312 K WORDS/SECOND
  64. SPACE 4,10
  65. *** CALL.
  66. *
  67. *T 18/ DRN, 6/ CP, 6/ CO, 18/, 7/ 1, 5/ CH
  68. *
  69. * DRN DRIVER NAME.
  70. * CP CONTROL POINT NUMBER (MUST BE SYSTEM CP).
  71. * CO CHANNEL TABLE ORDINAL (SET BY *CPUMTR*).
  72. * CH CHANNEL NUMBER BEING SERVICED BY THIS PP.
  73. SPACE 4,10
  74. *** DAYFILE MESSAGES.
  75. *
  76. * DRN - UNAUTHORIZED CALL.
  77. *
  78. * THE DRIVER (NAMED *DRN*) WILL ISSUE THIS MESSAGE AND ABORT
  79. * IF NOT ASSIGNED TO THE SYSTEM CONTROL POINT.
  80. SPACE 4,10
  81. *** ERRLOG MESSAGES.
  82. *
  83. * EQORD,TKNNNN, MEDIA DEFECT ENCOUNTERED.
  84. *
  85. * A MEDIA DEFECT HAS BEEN ENCOUNTERED ON EQUIPMENT WITH EST
  86. * ORDINAL ORD, LOGICAL TRACK NNNN. A REQUEST HAS BEEN ISSUED
  87. * TO AUTOMATICALLY FLAW THIS TRACK WHEN IT IS DROPPED.
  88. *
  89. *
  90. * CHCC MH426-DXX,CMN.
  91. *
  92. * CONTROL MODULE N ON CHANNEL CC IS RUNNING MICROCODE REVISION
  93. * LEVEL XX.
  94. *
  95. *
  96. * DNEEE, UNN,PS=XXXXXX.
  97. *
  98. * UNIT NN OF THE 9853 DEVICE WITH EST ORDINAL EEE HAS THE PACK
  99. * SERIAL NUMBER XXXXXX.
  100. SPACE 4,10
  101. *** OPERATOR MESSAGES.
  102. *
  103. * EQORD, DIAGNOSTICS RUNNING.
  104. *
  105. * EQORD, SPIN UP PENDING.
  106. *
  107. * CM3 BEING RESET ON CCHNN.
  108. *
  109. * CM3 RESET FAILURE ON CCHNN.
  110. *
  111. * MR ERROR.
  112. SPACE 4,10
  113. *** DISK ERROR PROCESSING.
  114. *
  115. * THE DRIVER MAINTAINS A COUNTER OF THE NUMBER OF RETRIES
  116. * NECESSARY TO SUCCESSFULLY PROCESS A REQUEST. IF THE
  117. * ERROR COUNT IS NON-ZERO WHEN A REQUEST IS COMPLETED, THE
  118. * DRIVER WILL LOG A BML MESSAGE AND INCREMENT THE RECOVERED
  119. * ERROR COUNT IN THE MST.
  120. *
  121. * IF THE ERROR COUNT REACHES *MERC* BEFORE THE REQUEST IS
  122. * SUCCESSFULLY COMPLETED, THE DRIVER WILL SET AN ERROR CODE
  123. * IN THE *CBT*, LOG A FATAL ERROR IN THE BML, AND INCREMENT
  124. * THE UNRECOVERED ERROR COUNT IN THE MST.
  125. SPACE 4,10
  126. *** CONFIGURATION NOTES.
  127. *
  128. * IN A DUAL ACCESS ENVIRONMENT, THE SAME EQUIPMENT NUMBER MUST
  129. * BE DIALED INTO THE PORT IN USE ON EACH CONTROL MODULE.
  130. SPACE 4,10
  131. *** SPECIAL PROGRAMMING NOTES.
  132. *
  133. * THE FOLLOWING IS A LIST OF SPECIAL NOTES THAT SHOULD BE
  134. * READ AND UNDERSTOOD BEFORE ANY MODIFICATIONS ARE MADE TO
  135. * THIS PROGRAM.
  136. *
  137. *
  138. * 1) WHERE POSSIBLE, *CMR* POINTERS HAVE BEEN PLUGGED BY THE
  139. * PRESET ROUTINE TO IMPROVE THE EXECUTION SPEED OF THE
  140. * PROGRAM AND TO MINIMIZE THE AMOUNT OF CODE.
  141. *
  142. * 2) THIS PROGRAM EXCHANGES *CPUMTR* WITHOUT WAITING FOR
  143. * THE REQUEST TO COMPLETE. ROUTINE *CMC* SHOULD BE CALLED
  144. * IF THE *MONITOR* MACRO IS TO BE USED WHILE THERE IS A
  145. * POSSIBILITY OF AN OUTSTANDING MONITOR REQUEST.
  146. *
  147. * 3) THE DEVICE STATE TABLE IS BUILT AT LOCATION *EXR* IN
  148. * PP RESIDENT, THEREFORE IT IS NOT POSSIBLE TO USE THE
  149. * *EXR* AND *SMS* ROUTINES.
  150. SPACE 4,10
  151.  
  152. ** COMMON DECKS.
  153.  
  154.  
  155. *CALL COMPMAC
  156. RICHI$ EQU 1 SELECT DEFERRED INSTRUCTION MODIFICATION
  157. LCHI$ EQU 1 SELECT *CONL* FOR CHANNEL ADDRESS TABLE
  158. *CALL COMPCHI
  159. *CALL COMSCPS
  160. QUAL$S SET 0 REMOVE QUALIFICATION OF COMSDFS CONSTANTS
  161. *CALL COMSDFS
  162. *CALL COMSEVT
  163. LIST X
  164. *CALL COMSHIO
  165. LIST *
  166. QUAL IOU
  167. *CALL COMSIOU
  168. QUAL *
  169. *CALL COMSLSD
  170. *CALL COMSMSC
  171. *CALL COMSMSP
  172. *CALL COMSPIM
  173. *CALL COMS1DS
  174. SPACE 4,10
  175. ** INTERFACE SPECIFICATIONS.
  176.  
  177.  
  178. IF -MIC,DM,2
  179. DM MICRO 1,2,*DN* DEFAULT DEVICE MNEMONIC
  180. DN MICRO 1,3,*1XD* DEFAULT DRIVER NAME
  181.  
  182. .1 SET 0
  183. .A ECHO ,TY=(DN),MI=(RM0124)
  184. .B IFC EQ,*TY*"DM"*
  185. .1 SET 1
  186. BMID EQU MI BML ERROR MESSAGE ID
  187. STOPDUP
  188. .B ENDIF
  189. .A ENDD
  190. IFEQ .1,0,1
  191. ERR UNKNOWN DEVICE TYPE - "DM"
  192.  
  193. CYUN EQU CYUN"DM" CYLINDERS / UNIT
  194. PSBF EQU PSBF"DM" PHYSICAL SECTORS / CONTROL BUFFER
  195. PTCY EQU PTCY"DM" PHYSICAL TRACKS / CYLINDER
  196. PSPT EQU PSPT"DM" PHYSICAL SECTORS / PHYSICAL TRACK
  197. CFLP EQU CFS"DM" LOGICAL - PHYSICAL CONVERSION FACTOR
  198. LSCY EQU PSPT*PTCY*LSPS"DM" LOGICAL SECTORS / CYLINDER
  199. LSLT EQU SL"DM"+GS"DM" LOGICAL SECTORS / LOGICAL TRACK
  200. LSPT EQU LSPT"DM" LOGICAL SECTORS / PHYSICAL TRACK
  201. MCLT EQU MCLT"DM" MAINTENANCE CYLINDER LOGICAL TRACK
  202. TITLE CONSTANTS AND DEFINITIONS.
  203. SPACE 4,10
  204. **** DIRECT CELL ALLOCATION.
  205.  
  206.  
  207. NR EQU 15 - 21 NEXT REQUEST
  208. WB EQU 22 - 26 CM WORD BUFFER
  209.  
  210. * THE NEXT FIVE LOCATIONS ARE ORDER DEPENDENT.
  211.  
  212. PB EQU 27 PREVIOUS CONTROL BUFFER ORDINAL
  213. CB EQU 30 CURRENT CONTROL BUFFER ORDINAL
  214. NB EQU 31 NEXT CONTROL BUFFER ORDINAL
  215. UA EQU 32 - 33 UEM ADDRESS / 100
  216.  
  217. EO EQU 34 EST ORDINAL
  218. DN EQU 35 DRIVE NUMBER
  219. RC EQU 36 REQUEST COUNT
  220. CN EQU 37 CONTROLLER NUMBER
  221. MS EQU 40 MAJOR STATUS (RESPONSE PACKET)
  222. RT EQU 41 STATUS RESPONSE TYPE
  223. TO EQU 42 COMMAND TIMEOUT
  224. SF EQU 43 DEVICE SELECTED FLAG
  225. UC EQU 44 UNIT ACTIVITY COUNT
  226. ERRNZ SF+1-UC CODE DEPENDS ON VALUE
  227. RW EQU 45 READ / WRITE FLAG
  228. PA EQU 46 PROCESSOR ADDRESS
  229. DI EQU 47 DEVICE INDEX
  230. CR EQU 57 CHANNEL RESERVED STATUS
  231. RF EQU 60 RESET IN PROGRESS FLAG
  232. LF EQU 61 LAST FUNCTION
  233. TA EQU 62 DEVICE STATE TABLE ADDRESS
  234. CW EQU 63 - 67 CM WORD BUFFER
  235.  
  236. ****
  237. SPACE 4,10
  238. ** IPI ADAPTOR FUNCTION CODES.
  239.  
  240.  
  241. F0000 EQU 0#0000 MASTER CLEAR
  242. F0200 EQU 0#0200 READ CONTROL REGISTER
  243. F0300 EQU 0#0300 WRITE CONTROL REGISTER
  244. F0600 EQU 0#0600 READ ERROR REGISTER
  245. F0700 EQU 0#0700 READ OPERATIONAL STATUS
  246. F0800 EQU 0#0800 DMA TERMINATE
  247. F0A00 EQU 0#0A00 READ *T* REGISTER
  248. F0B00 EQU 0#0B00 WRITE *T* PRIME REGISTER
  249. F0C00 EQU 0#0C00 DMA READ FROM ADAPTOR
  250. F0D00 EQU 0#0D00 DMA WRITE TO ADAPTOR
  251. F0E00 EQU 0#0E00 CLEAR *T* REGISTERS
  252.  
  253. F0062 EQU 0#0062 PORT A SELECT
  254. F0862 EQU 0#0862 PORT B SELECT
  255. F7E42 EQU 0#7E42 CHANNEL TRANSFER RATE
  256. SPACE 4,10
  257. ** IPI CHANNEL FUNCTION CODES.
  258.  
  259.  
  260. F00F1 EQU 0#00F1 READ ERROR REGISTER
  261.  
  262. * BUS CONTROL FUNCTIONS.
  263.  
  264. F0029 EQU 0#0029 SELECT CONTROLLER (SET SELECT OUT)
  265. F005B EQU 0#005B DEFINE INFORMATION TRANSFER (SET SYNC OUT)
  266. F0071 EQU 0#0071 DESELECT CONTROLLER (CLEAR SELECT OUT)
  267. F0711 EQU 0#0711 CLEAR MASTER OUT
  268. F0715 EQU 0#0715 ENABLE INTERRUPTS (SET MASTER OUT)
  269. F8025 EQU 0#8025 REQUEST TRANSFER MODE (SET MASTER OUT)
  270. F8039 EQU 0#8039 MASTER STATUS (CLEAR MASTER OUT)
  271. F8215 EQU 0#8215 RESET LOGICAL INTERFACE (SET MASTER OUT)
  272. F8415 EQU 0#8415 RESET SLAVE (SET MASTER OUT)
  273. F9213 EQU 0#9213 MASTER RESET SLAVES (SET SYNC OUT)
  274.  
  275. * DATA TRANSFER FUNCTIONS.
  276.  
  277. F0081 EQU 0#0081 READ INTERLOCKED
  278. F0181 EQU 0#0181 WRITE INTERLOCKED
  279. F0281 EQU 0#0281 READ STREAMING
  280. F0381 EQU 0#0381 WRITE STREAMING
  281. SPACE 4,10
  282. ** COMMAND / RESPONSE PACKET DEFINITIONS.
  283.  
  284.  
  285. PLN EQU 0 PACKET LENGTH
  286. CRN EQU 1 COMMAND REFERENCE NUMBER
  287. OPC EQU 2 OPERATION CODE
  288. CUN EQU 3 CONTROLLER + UNIT NUMBER
  289. FCP EQU 4 FIRST COMMAND PARAMETER
  290.  
  291. MST EQU 4 MAJOR STATUS
  292.  
  293. * MAJOR STATUS RESPONSE TYPES.
  294.  
  295. CMCT EQU 1 COMMAND COMPLETE
  296. ASRT EQU 4 ASYNCHRONOUS RESPONSE
  297. XFNT EQU 5 TRANSFER NOTIFICATION
  298.  
  299. * MAJOR STATUS CODES.
  300.  
  301. CMCS EQU 0#12 COMMAND COMPLETE (CONDITIONAL SUCCESS)
  302. CMSS EQU 0#18 COMMAND COMPLETE (SUCCESSFUL)
  303. ASRS EQU 0#40 ASYNCHRONOUS RESPONSE
  304. XFNS EQU 0#50 TRANSFER NOTIFICATION
  305.  
  306. BCPL EQU 06 BASIC COMMAND PACKET LENGTH
  307. BRPL EQU 10 BASIC RESPONSE PACKET LENGTH
  308. IOPL EQU 20 I/O COMMAND PACKET LENGTH
  309.  
  310. CPBFL EQU 32 COMMAND PACKET BUFFER LENGTH
  311. RPBFL EQU 77 RESPONSE PACKET BUFFER LENGTH
  312. SPACE 4,10
  313. ** COMMAND PACKET OPERATION CODES.
  314.  
  315.  
  316. C0200 EQU 0#0200 REPORT ATTRIBUTES
  317. C0209 EQU 0#0209 LOAD ATTRIBUTES
  318. C020A EQU 0#020A SAVE ATTRIBUTES
  319. C0301 EQU 0#0301 REPORT ADDRESSEE STATUS
  320. C0401 EQU 0#0401 RELEASE RESERVE
  321. C0402 EQU 0#0402 PRIORITY RESERVE
  322. C0700 EQU 0#0700 SET OPERATING MODE
  323. C0800 EQU 0#0800 ABORT COMMAND
  324. C1005 EQU 0#1005 BLOCK READ
  325. C2005 EQU 0#2005 BLOCK WRITE
  326. C8100 EQU 0#8100 DRIVE DIAGNOSTICS
  327. SPACE 4,10
  328. ** COMMAND PACKET PARAMETER ID-S.
  329.  
  330.  
  331. P01D1 EQU 0#01D1 PERFORMANCE LOG
  332. P0254 EQU 0#0254 DRIVE RESET
  333. P02D2 EQU 0#02D2 MASTER TERMINATE
  334. P02D3 EQU 0#02D3 EXTENT RESPONSE
  335. P0351 EQU 0#0351 DISK MODES
  336. P036C EQU 0#036C REQUEST ATTRIBUTE
  337. P0551 EQU 0#0551 DISK DATA BLOCK SIZE
  338. P0931 EQU 0#0931 COMMAND EXTENT
  339. P0951 EQU 0#0951 TRANSFER SIZE OVERRIDE
  340. SPACE 4,10
  341. ** SUBSTATUS PARAMETER ID CODES.
  342.  
  343.  
  344. ID16 EQU 0#16 MACHINE EXCEPTION FOR CONTROLLER
  345. ID17 EQU 0#17 COMMAND EXCEPTION FOR CONTROLLER
  346. ID19 EQU 0#19 CONDITIONAL SUCCESS FOR CONTROLLER
  347. ID24 EQU 0#24 INTERVENTION REQUIRED FOR DRIVE
  348. ID26 EQU 0#26 MACHINE EXCEPTION FOR DRIVE
  349. ID32 EQU 0#32 RESPONSE EXTENT (COMMON)
  350. SPACE 4,10
  351. ** INFORMATION TRANSFER DEFINITIONS.
  352.  
  353.  
  354. CIOT EQU 0 COMMAND - INFORMATION OUT
  355. RIIN EQU 1 RESPONSE - INFORMATION IN
  356. DAOT EQU 2 DATA - INFORMATION OUT
  357. DAIN EQU 3 DATA - INFORMATION IN
  358. SPACE 4,10
  359. ** MAINTENANCE REGISTER REQUEST CODE SYMBOLS.
  360.  
  361.  
  362. MR EQU /IOU/MR MAINTENANCE CHANNEL
  363. IOUC EQU /IOU/IOUC+/IOU/MRRD READ CONNECT CODE
  364. RMRF EQU /IOU/MRRD-/IOU/MRRD READ REGISTER
  365. WMRF EQU /IOU/MRWT-/IOU/MRRD WRITE REGISTER
  366.  
  367. RFMR EQU RMRF*10000+/IOU/FMCR READ FAULT MASK REGISTER
  368. RCSR EQU RMRF*10000+/IOU/C0CR READ CHANNEL STATUS REGISTER
  369. WFMR EQU WMRF*10000+/IOU/FMCR WRITE FAULT MASK REGISTER
  370. SPACE 4,10
  371. ** FAULT ANALYSIS CODES.
  372.  
  373.  
  374. ECPE EQU 1 CHANNEL PARITY ERROR (CHPE)
  375. ECIE EQU 2 IPI CHANNEL ERROR
  376.  
  377. ECER EQU 4 CHANNEL DETECTED ERROR (CHFE)
  378. ECCM EQU 5 CHANNEL DETECTED CM ERROR
  379. ECHF EQU 7 CHANNEL HUNG FULL
  380.  
  381. ETIT EQU 10 INTERRUPT TIMEOUT (FTOE)
  382. ETFN EQU 11 CHANNEL FUNCTION TIMEOUT
  383.  
  384. EDPE EQU 14 DATA PARITY ERROR (PARE)
  385.  
  386. EDNR EQU 20 DEVICE NOT READY (NRDE)
  387.  
  388. EIDT EQU 24 INCOMPLETE DATA TRANSFER (IDTE)
  389.  
  390. ERSS EQU 30 RESERVED SUBSTATUS (DSTE)
  391. EDFM EQU 31 DEFECT MANAGEMENT ERROR
  392. EMME EQU 32 MESSAGE/MICROCODE EXCEPTION
  393. ETSL EQU 33 SELECT TIMEOUT
  394.  
  395. ESUF EQU 34 SPIN-UP FAILURE (DSTE)
  396. ESDF EQU 35 SPIN-DOWN FAILURE
  397. ETTC EQU 36 TRANSFER COMPLETE TIMEOUT
  398. EIVR EQU 37 INTERVENTION REQUIRED
  399.  
  400. EAPR EQU 40 ALTERNATE PORT EXCEPTION (DSTE)
  401. EMEX EQU 41 MACHINE EXCEPTION ERROR
  402. ECEX EQU 42 COMMAND EXCEPTION ERROR
  403.  
  404. EIOS EQU 44 I/O INITIATION ERROR (DSTE)
  405. ERPE EQU 45 REGISTER PARITY ERROR
  406. ERDS EQU 46 REPORT DRIVE STATUS ERROR
  407.  
  408. ECMA EQU 50 COMMAND ABORTED ERROR (DSTE)
  409. ECCS EQU 51 CONDITIONAL SUCCESS
  410. ECIC EQU 52 COMMAND INCOMPLETE
  411. EUST EQU 53 TRANSFER UNSUCCESSFUL
  412.  
  413. EDTF EQU 54 DIAGNOSTIC FAULT (DDFE)
  414. EDRS EQU 55 DRIVE RESET FAILURE
  415.  
  416. ECNR EQU 60 SLAVE IN DID NOT DROP (RAME)
  417. ELCA EQU 61 LOAD CONTROLLER ATTRIBUTES FAILURE
  418. ESRE EQU 62 SELECTIVE RESET ERROR
  419. ERDA EQU 63 REPORT DEVICE ATTRIBUTES ERROR
  420.  
  421. EBAE EQU 64 BUS ACKNOWLEDGE ERROR (CHFE)
  422. ECOT EQU 65 CONTROLLER OVER TEMPERATURE
  423.  
  424. EDRE EQU 70 DRIVE RESERVE ERROR (DRVE)
  425.  
  426. ECRE EQU 74 CONTROLLER RESET ERROR (RAME)
  427. ECMD EQU 75 CONTROL MODULE DEAD
  428. SPACE 4,10
  429. ** DEVICE STATE TABLE DEFINITIONS.
  430.  
  431.  
  432. LOC 0
  433. PUTO BSS 1 *PUT* ORDINAL
  434. PNUN BSS 1 PORT/EQUIPMENT/UNIT NUMBERS (3/P,3/E,6/U)
  435. ADDR BSS 1 PROCESSOR ADDRESS
  436. RADD BSS 1 RETURN ADDRESS
  437. ATTN BSS 1 ATTENTION RETURN
  438. EEST BSS 1 EXPECTED EXECUTION STATUS
  439. RWST BSS 1 READ / WRITE STATUS
  440. RQLN BSS 1 REQUEST QUEUE LENGTH
  441. CBCT BSS 1 CUMULATIVE BUFFER COUNT
  442. CYLN BSS 1 CYLINDER ON SEEK
  443. TKSN BSS 1 TRACK + SECTOR ON SEEK
  444. ERCT BSS 1 ERROR COUNT
  445. SREQ BSS 1 SPECIAL REQUEST
  446. * IPPS - I/O PREPROCESSING STATUS.
  447. * BIT 15 = DRIVE DIAGNOSTICS IN PROGRESS.
  448. * BIT 14 = *SET DRIVE ATTRIBUTES* REQUIRED.
  449. * BIT 13 = *BREAK OPPOSITE RESERVE* REQUIRED.
  450. * BITS 11-0 = CBT ORDINAL FOR CURRENT I/O REQUEST.
  451. IPPS BSS 1 I/O PREPROCESSING STATUS
  452. LCMD BSS 1 LAST COMMAND OP CODE
  453. ESAD BSS 1 ERROR STEP ADDRESS
  454. ENAD BSS 1 ERROR NEXT ADDRESS
  455. RPST BSS 1 RESPONSE PACKET STATUS
  456. IOST BSS 1 READ/WRITE STATUS
  457. ERAD BSS 1 ERROR RETURN ADDRESS
  458. FTOC BSS 2 FUNCTION TIMEOUT CLOCK VALUE
  459.  
  460. DSTBE BSS 0 LENGTH OF STATE TABLE ENTRY
  461. LOC 0
  462. SPACE 4,15
  463. **** ASSEMBLY CONSTANTS.
  464.  
  465.  
  466. CH EQU 16 CHANNEL NUMBER
  467. NRAP EQU 2 NUMBER OF IPI ADAPTOR PORTS
  468. MXCN EQU 10 MAXIMUM NUMBER OF CONTROLLERS / PORT
  469. MXDC EQU 10 MAXIMUM NUMBER OF DRIVES / CONTROLLER
  470. MXND EQU 10*2 MAXIMUM NUMBER OF UNITS / DRIVER
  471. DSTB EQU EXR START OF DEVICE STATE TABLES
  472. DSTBL EQU DSTB+DSTBE*MXND LWA+1 OF DEVICE STATE TABLES
  473.  
  474. * CSTB - CONTROLLER STATUS BLOCK.
  475. * ONE ENTRY PER CONTROLLER NUMBER PER PORT.
  476. *
  477. * BIT 15 SLAVE RESET IN PROGRESS
  478. * BIT 14 LOGICAL RESET PENDING
  479. * BITS 0-11 DEVICE INDEX OF FIRST DRIVE ON CONTROLLER
  480.  
  481. CSTB EQU DSTBL CONTROLLER STATUS BLOCK
  482. CSTBS EQU 10*2 LENGTH OF CONTROLLER STATUS BLOCK
  483. OCMD MAX PPFW,CSTB+CSTBS DRIVER ORIGIN
  484.  
  485. MNCS EQU 1 MINIMUM NUMBER OF CYLINDERS / STREAM
  486. MXCS EQU 2 MAXIMUM NUMBER OF CYLINDERS / STREAM
  487. MNSS EQU MNCS*PSPT*PTCY MINIMUM SECTORS / STREAM
  488. MXSS EQU MXCS*PSPT*PTCY MAXIMUM SECTORS / STREAM
  489. MNBS EQU MNSS/PSBF-1 MINIMUM NUMBER OF BUFFERS / STREAM
  490. MXBS EQU MXSS/PSBF-1 MAXIMUM NUMBER OF BUFFERS / STREAM
  491. DRFM EQU 1000 DIRECTION FLAG MASK
  492. ILFM EQU 4000 INTERLOCK FLAG MASK
  493. CSRC EQU 4 CHANNEL SWITCH RETRY COUNT
  494. MERC EQU CSRC*2 ERROR PROCESSING RETRY COUNT
  495.  
  496. * LAYOUT OF ERROR DATA BUFFERS.
  497.  
  498. BEGIN BSSN 0 REAL TIME ERROR DATA
  499. EXST BSSN 1 ENDING STATUS
  500. BSSN 2 RESERVED
  501. LSCC BSSN 1 LAST SLAVE COMMAND
  502. LCFN BSSN 1 LAST CHANNEL FUNCTION
  503. CREG BSSN 4 CHANNEL REGISTER DATA
  504. BSSN 3 RESERVED
  505. TREG BSSN 3 CONTENTS OF *T* REGISTER
  506. RTEDL EQU *
  507.  
  508. EMBF BSSN 0 ERROR MESSAGE BUFFER
  509. BSSN 3*5 BML MESSAGE PREFIX AND HEADER
  510. CODE BSSN 1 INITIAL FAULT CODE
  511. FCS1 BSSN 1 FAULT CODE - ERROR STEP 1
  512. FCS2 BSSN 1 FAULT CODE - ERROR STEP 2
  513. FCS3 BSSN 1 FAULT CODE - ERROR STEP 3
  514. FALT BSSN 1 FINAL FAULT CODE
  515. BSSN 1 RESERVED
  516. RBCT BSSN 1 RESIDUAL BYTE COUNT
  517. STCT BSSN 1 SECTORS TRANSFERED COUNT
  518. ICYL BSSN 1 CYLINDER ON INITIAL SEEK
  519. ITAS BSSN 1 TRACK + SECTOR ON INITIAL SEEK
  520. .3 SET *-EMBF+4
  521. EMBFS EQU .3/5
  522. EMBF1 EQU EMBFS*5+EMBF
  523. .1 SET RTEDL*4
  524. .2 SET .1-.1/3*3+2
  525. .3 SET .1/3+.2/3+4
  526. EMBF2 EQU .3/5*5+EMBF1
  527. .1 SET RPBFL*4
  528. .2 SET .1-.1/3*3+2
  529. .3 SET .1/3+.2/3+4
  530. EMBFL EQU .3/5*5+EMBF2
  531.  
  532. END BSSN
  533. EDBFL EQU RTEDL+EMBFL
  534.  
  535. ****
  536. TITLE MACROS.
  537. SPACE 4,10
  538. ** MACRO DEFINITIONS.
  539. TBLM SPACE 4,10
  540. ** TBLM - CREATE TABLE ENTRY MACRO.
  541. *
  542. *NAM TBLM
  543. *
  544. * ENTRY NAM = TABLE NAME.
  545. *
  546. * EXIT NAM_E MACRO DEFINED.
  547.  
  548.  
  549. PURGMAC TBLM
  550.  
  551. MACRO TBLM,NAM
  552. PURGMAC NAM_E
  553. NAM_E MACRO ADDR
  554. LOCAL A
  555. MACREF NAM_E
  556. NOREF A
  557. A EQU ADDR
  558. T_NAM RMT
  559. CONL A
  560. RMT
  561. TBLM ENDM
  562. CBTE SPACE 4,10
  563. ** CBTE - CONTROL BUFFER TABLE ENTRY.
  564. *
  565. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TCBT*
  566. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  567. * REQUIRES THE FWA OF THE CONTROL BUFFER TABLE.
  568. *
  569. * CBTE ADDR
  570. *
  571. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  572. *
  573. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TCBT*.
  574.  
  575.  
  576. CBT TBLM
  577. CCTE SPACE 4,10
  578. ** CCTE - CHANNEL CONTROL TABLE ENTRY.
  579. *
  580. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TCCT*
  581. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  582. * REQUIRES THE FWA OF THE CHANNEL CONTROL TABLE.
  583. *
  584. * CCTE ADDR
  585. *
  586. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  587. *
  588. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TCCT*.
  589.  
  590.  
  591. CCT TBLM
  592. CHTE SPACE 4,10
  593. ** CHTE - CHANNEL TABLE ENTRY.
  594. *
  595. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TCHT*
  596. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  597. * REQUIRES THE FWA OF THE CHANNEL TABLE.
  598. *
  599. * CHTE ADDR
  600. *
  601. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  602. *
  603. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TCHT*.
  604.  
  605.  
  606. CHT TBLM
  607. EMBE SPACE 4,10
  608. ** EMBE - ERROR MESSAGE TABLE ENTRY.
  609. *
  610. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TEMB*
  611. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  612. * REQUIRES THE FWA OF THE ERROR MESSAGE TABLE.
  613. *
  614. * EMBE ADDR
  615. *
  616. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  617. *
  618. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TEMB*.
  619.  
  620.  
  621. EMB TBLM
  622. EXPE SPACE 4,10
  623. ** EXPE - EXCHANGE PACKAGE ADDRESS ENTRY.
  624. *
  625. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TEXP*
  626. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  627. * REQUIRES THE FWA OF THE PP EXCHANGE PACKAGE.
  628. *
  629. * EXPE ADDR
  630. *
  631. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  632. *
  633. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TEXP*.
  634.  
  635.  
  636. EXP TBLM
  637. PUTE SPACE 4,10
  638. ** PUTE - PHYSICAL UNIT TABLE ENTRY.
  639. *
  640. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TPUT*
  641. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  642. * REQUIRES THE FWA OF THE PHYSICAL UNIT TABLE.
  643. *
  644. * PUTE ADDR
  645. *
  646. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  647. *
  648. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TPUT*.
  649.  
  650.  
  651. PUT TBLM
  652. MONITOR SPACE 4,10
  653. ** MONITOR - REQUEST MONITOR FUNCTION.
  654. *
  655. * MONITOR F
  656. *
  657. * ENTRY F = MONITOR FUNCTION.
  658. * (CM+1 - CM+4) = PARAMETERS.
  659. *
  660. * CALLS IMF.
  661.  
  662.  
  663. PURGMAC MONITOR
  664.  
  665. MONITOR MACRO F
  666. MACREF MONITOR
  667. LDK F
  668. RJM IMF
  669. ENDM
  670. WAIT SPACE 4,10
  671. ** WAIT - DO NOTHING FOR SPECIFIED TIME.
  672. *
  673. * WAIT N
  674. *
  675. * N = MICROSECOND COUNT.
  676. *
  677. * EXIT (A) = 0.
  678. *
  679. * USES T0.
  680.  
  681.  
  682. PURGMAC WAIT
  683.  
  684. WAIT MACRO N
  685. MACREF WAIT
  686. NOREF .2
  687. BASE D
  688. .2 SET N 1
  689. IFEQ N,64,2
  690. LDD HN
  691. SKIP 4
  692. IFEQ N,512,2
  693. LDD TH
  694. SKIP 1
  695. LDK .2
  696. BASE *
  697. SBN 1
  698. STD T0
  699. NJN *-2
  700. ENDM
  701. TITLE MAIN PROGRAM.
  702. XMD SPACE 4,10
  703. ** XMD - MAIN PROGRAM.
  704.  
  705.  
  706. ORG OCMD
  707. RICHI BEGIN CHANNEL INSTRUCTION MODIFICATION
  708.  
  709. CM3D LJM PRS PRESET DRIVER
  710. XMD EQU *-1
  711. LDM XMD PRESERVE RETURN ADDRESS
  712. STM ADDR,DI
  713. XMD1 RJM DCM DESELECT CONTROLLER
  714. XMD2 LDD TA
  715. LMC DSTBL (ADJUSTED BY *IST*)
  716. XMDA EQU *-1
  717. NJN XMD5 IF NOT END OF DEVICE STATE TABLE
  718. RJM CCR
  719. ZJN XMD7 IF CHANNEL DOWN
  720. LCN 0
  721. RJM IOM REFRESH OPERATOR MESSAGE
  722. XMD4 LDC DSTB
  723. STD TA RESTART STATE TABLE SCAN
  724. XMD5 LDD TA
  725. STD DI SET DEVICE INDEX
  726. ADN DSTBE
  727. STD TA ADVANCE TABLE ADDRESS
  728. RJM CFR
  729. UJN XMD2 CHECK NEXT DEVICE
  730.  
  731. XMD7 UJN *+2 FIRST PASS
  732. XMDB EQU XMD7
  733. UJN XMD8 DROP PP ON SECOND PASS
  734. SOM XMDB
  735. LDC CMP8 CHANGE PATH THRU *CFR*
  736. STM CFRA
  737. UJN XMD4 LOOP THRU DEVICE STATE TABLE
  738.  
  739. XMD8 MONITOR DPPM DROP PP
  740. LJM PPR EXIT TO PPR
  741.  
  742. MSG1 DATA C* "DN" - UNAUTHORIZED CALL.*
  743. TITLE READ / WRITE PROCESSING.
  744. PIO SPACE 4,10
  745. ** PIO - READ / WRITE PROCESSING.
  746.  
  747.  
  748. PIO BSS 0
  749. LDML PIOB,RW SETUP SEEK COMMAND
  750. STML CPBF+OPC
  751. LDD CN MERGE CONTROLLER + DRIVE NUMBERS
  752. SHN 10
  753. LMD DN SET FACILITY ADDRESS
  754. STM CPBF+CUN
  755. LDC P0931 COMMAND EXTENT PARAMETER
  756. STM CPBF+FCP
  757. LDN 0 UPPER SECTOR COUNT
  758. STM CPBF+FCP+1
  759.  
  760. * SET UP COMMAND PARAMETERS.
  761. * NOTE THAT PARAMETERS CPBF+FCP+2 - CPBF+FCP+4 HAVE ALREADY
  762. * BEEN SET BY SUBROUTINE *IIO*.
  763.  
  764. LDC P0951 TRANSFER SIZE OVERRIDE PARAMETER
  765. STM CPBF+FCP+5
  766. LDC 40000 CHANGE BURST SIZE
  767. STML CPBF+FCP+11
  768. STML CPBF+FCP+7 CHANGE INTERRUPT SIZE
  769. SHN 0-20
  770. STM CPBF+FCP+10 SET LEADING DIGITS
  771. STM CPBF+FCP+6
  772. LDN 40D SEEK TIMEOUT = 40 SECONDS
  773. STD TO
  774. LDN IOPL+12 WRITE COMMAND BLOCK
  775. RJM WCB
  776.  
  777. * WAIT UNTIL CONTROLLER RETURNS TRANSFER NOTIFICATION.
  778.  
  779. PIO1 LDD CB SET I/O IN PROGRESS
  780. STM IPPS,DI
  781. LDN XFNT PROCESS ATTENTION
  782. RJM ATT
  783. ZJN PIO2 IF EXPECTED STATUS
  784. LCN EIOS
  785. RJM ERR PROCESS ERROR
  786.  
  787. PIO2 LDN 1 SET CHANNEL ACTIVE FOR *CPD*
  788. RJM SCD
  789. LDM IPPS,DI RESTORE CURRENT BUFFER ORDINAL
  790. PIO3 STD CB
  791. LDDL T7 CHECK ENDING STATUS
  792. LPN 0#30
  793. NJN PIO1 IF PAUSE / TIME DEPENDENT OPERATION
  794.  
  795. * INITIATE DATA TRANSFER.
  796.  
  797. LDN DAIN DEFINE TRANSFER DIRECTION
  798. SBD RW
  799. ERRNZ DAOT+1-DAIN CODE DEPENDS ON VALUE
  800. RJM BCS
  801. LDML PIOD,RW SET DMA MODE
  802. RJM FCN
  803. RJM WTR WRITE *T* REGISTER
  804. LDD CB
  805. RJM SFR SEARCH FOR CONSECUTIVE REQUEST
  806.  
  807. * WAIT UNTIL ONE BURST DMA TRANSFER COMPLETE.
  808.  
  809. LDN 2 TIMEOUT = 2 SECONDS
  810. RJM STO
  811. RJM CTC CHECK TRANSFER COMPLETE
  812. * LDN 0
  813. STD T1 CLEAR RESIDUAL BYTE COUNT
  814. LDD NB
  815. ZJN PIO5 IF NO MORE CONSECUTIVE REQUESTS
  816. LDN 0#A
  817. PIO5 LMN 0#A CHECK ENDING STATUS
  818. RJM GSS
  819. RJM EIO ENTER BUFFER IN I/O REQUEST QUEUE
  820. LDD NB
  821. NJP PIO3 IF CONSECUTIVE REQUEST PRESENT
  822.  
  823. * COMPLETE READ / WRITE OPERATIONS.
  824.  
  825. * LDN 0 CLEAR CHANNEL ACTIVE FOR *CPD*
  826. RJM SCD
  827. LDN 40D TIMEOUT = 40 SECONDS
  828. RJM STO
  829. LDN CMSS WAIT ON INTERRUPT
  830. RJM ATT
  831. NJN PIO7 IF ERROR
  832. LDDL MS
  833. LMN CMCS
  834. NJN PIO6 IF NOT CONDITIONAL SUCCESS
  835. LDML RPBF+5
  836. LPC 377
  837. LMN ID19
  838. NJN PIO7 IF RESPONSE NOT DUE TO MASTER TERMINATE
  839. LDML RPBF
  840. SBN 17
  841. PJN PIO7 IF RESPONSE TOO LONG
  842. LDML RPBF+7
  843. SHN 21-10
  844. PJN PIO7 IF NOT MASTER TERMINATE
  845. PIO6 LJM CMP COMPLETE PROCESSING
  846.  
  847. PIO7 LCN EIOS
  848. RJM ERR PROCESS ERROR
  849.  
  850.  
  851. PIOB BSS 0 COMMAND CODES
  852. CONL C1005
  853. CONL C2005
  854.  
  855. PIOD BSS 0 DATA TRANSFER FUNCTIONS
  856. CONL F0281
  857. CONL F0381
  858. TITLE LIST DEVICE ATTRIBUTE.
  859. LDA SPACE 4,10
  860. ** LDA - LIST DEVICE ATTRIBUTE IN DAYFILE.
  861.  
  862.  
  863. LDA BSS 0
  864. LDC C0200 SETUP REPORT ATTRIBUTES COMMAND
  865. STM CPBF+OPC
  866. LDD CN MERGE CONTROLLER + UNIT NUMBERS
  867. SHN 10
  868. LMD DN SET FACILITY ADDRESS
  869. STM CPBF+CUN
  870. LDC P036C REQUEST ATTRIBUTE PARAMETER
  871. STM CPBF+FCP
  872. LDC 0#4050 RETURN ATTRIBUTE ID 50 IN RESPONSE
  873. STML CPBF+FCP+1
  874. LDN 2 TIMEOUT = 2 SECONDS
  875. STD TO
  876. LDN BCPL+4 WRITE COMMAND BLOCK
  877. RJM WCB
  878.  
  879. * WAIT UNTIL CONTROLLER HAS RETURNED INTERRUPT.
  880.  
  881. LDN CMSS WAIT ON INTERRUPT
  882. RJM ATT
  883. ZJN LDA1 IF COMMAND COMPLETE
  884. LCN ERDA
  885. RJM ERR PROCESS ERROR
  886.  
  887. LDA1 LDD RW CHECK REQUEST INDEX
  888. SBN LDIF-ECAF
  889. ZJN LDA2 IF FOR DRIVE SERIAL NUMBER
  890.  
  891. * GENERATE MICROCODE REVISION ERRLOG MESSAGE.
  892.  
  893. LDD CN SET CONTROL MODULE NUMBER IN BML MESSAGE
  894. STD NR+3
  895. ADC 2RM0 CONVERT FOR ERRLOG MESSAGE
  896. STM LDAB+6
  897. LDC LDAB+4 LOCATION FOR REVISION LEVEL
  898. STD T3
  899. SBN LDAB+4-LDAA SET MESSAGE ADDRESS
  900. STML MAD1
  901. LDM RPBF+6+0#1B/2 CONVERT REVISION LEVEL
  902. RJM CHD
  903. RJM IDM ISSUE MESSAGE TO ERRLOG
  904.  
  905. * GENERATE MICROCODE REVISION BML MESSAGE.
  906.  
  907. LDD MA MOVE MICROCODE REVISION LEVEL
  908. CWM LDAB,ON
  909. SBN 1 COPY TO BML MESSAGE
  910. CRD WB
  911. LDD IR+4 SET CHANNEL NUMBER
  912. STD NR+2
  913. LDN HI0104-HI0100
  914. LJM LDA4 COMPLETE BML MESSAGE
  915.  
  916. * GENERATE PACK SERIAL NUMBER ERRLOG MESSAGE.
  917.  
  918. LDA2 LDN 0
  919. STD T2
  920. LDC LDAE+2 SET ADDRESS FOR CONVERSION
  921. STD T3
  922. SBN -LDAD+LDAE+2 DEFINE MESSAGE ADDRESS
  923. STML MAD1
  924.  
  925. * CONVERT RIGHTMOST 6 DIGITS OF 8 DIGIT PACK SERIAL NUMBER.
  926.  
  927. LDA3 LDML RPBF+FCP+1+0#1E,T2
  928. SHN -10
  929. ZJN LDA3.1 IF SERIAL NUMBER NOT PRESENT
  930. SBN 60 CONVERT ASCII TO DISPLAY CODE
  931. LDA3.1 ADN 1R0
  932. SHN 6
  933. STD T0 UPPER CHARACTER OF WORD
  934. LDML RPBF+FCP+1+0#1E,T2
  935. LPN 77
  936. ZJN LDA3.2 IF SERIAL NUMBER NOT PRESENT
  937. SBN 60 CONVERT ASCII TO DISPLAY CODE
  938. LDA3.2 ADN 1R0
  939. LMD T0
  940. STI T3 LOWER CHARACTER OF WORD
  941. AOD T2
  942. AOD T3
  943. LMC LDAE+2+3
  944. NJN LDA3 IF MORE CHARACTERS TO CONVERT
  945. LDM PNUN,DI
  946. LPN 77 PUT UNIT NUMBER IN BML MESSAGE
  947. STD NR+3
  948. RJM C2D CONVERT FOR ERRLOG MESSAGE
  949. STM LDAD+11
  950. LDD EO CONVERT EST ORDINAL
  951. SHN -3
  952. RJM C2D
  953. STM LDAD+6 INSERT IN ERRLOG MESSAGE
  954. LDD EO
  955. LPN 7 CONVERT LOWER DIGIT
  956. SHN 6
  957. ADC 2R0, ADD TO ERRLOG MESSAGE
  958. STM LDAD+7
  959. RJM IDM ISSUE MESSAGE TO ERRLOG
  960.  
  961. * GENERATE PACK SERIAL NUMBER BML MESSAGE.
  962.  
  963. LDD MA MOVE DRIVE SERIAL NUMBER
  964. CWM LDAE,ON
  965. SBN 1 COPY TO BML MESSAGE
  966. CRD WB
  967. LDD EO INSERT EST ORDINAL
  968. STD WB
  969. LDC 2R"DM" SET DEVICE MNEMONIC
  970. STD NR+2
  971. LDN 0 CLEAR UNUSED FIELD
  972. STD WB+1
  973. LDA4 ADD HN INSERT SYMPTOM CODE
  974. ERRNZ HI0100-100 CODE DEPENDS ON VALUE
  975. STD NR+1
  976. LDC DM0401 DEFINE MESSAGE ID
  977. STD NR
  978. LDN ZERL CLEAR HEADER WORD
  979. CRD CM
  980. LDN 3 WORD COUNT OF MESSAGE
  981. STD CM+3
  982. ADK MLDY-3 DIRECT MESSAGE TO BML
  983. STD CM+4
  984. LDC SBUF SET MESSAGE ADDRESS
  985. STML MAD1
  986. LDD MA MOVE MESSAGE DATA
  987. CWM CM,TR
  988. ERRNZ CM+5-NR CODE DEPENDS ON VALUE
  989. SBN 3
  990. ERRNZ NR+5-WB CODE DEPENDS ON VALUE
  991. CRM SBUF,TR
  992. ERRNG SBUFL-3*5 CODE DEPENDS ON VALUE
  993. LDN 0
  994. STD RW ISSUE BML MESSAGE
  995. RJM IDM
  996. LJM CSR CLEAR SPECIAL REQUEST FLAG
  997.  
  998.  
  999. LDAA CON 0,0,0,4,ELDY MICROCODE REVSION ERRLOG MESSAGE
  1000. DATA 4HCH**
  1001. LDAB DATA 10H MH426-D**
  1002. DATA C+,CM0.+
  1003.  
  1004. LDAD CON 0,0,0,4,ELDY PACK SERIAL NUMBER ERRLOG MESSAGE
  1005. DATA 10H"DM"***, U**
  1006. LDAE DATA C+,PS=******.+
  1007. TITLE DIAGNOSTIC PROCESSING.
  1008. RND SPACE 4,10
  1009. ** RND - RUN DIAGNOSTICS.
  1010.  
  1011.  
  1012. RND SUBR ENTRY/EXIT
  1013. LDM ENAD,DI
  1014. NJN RNDX IF DRIVE DISABLED (SLAVE RESET FAILURE)
  1015. LDC C8100 SETUP DRIVE DIAGNOSTIC COMMAND
  1016. STML CPBF+OPC
  1017. LDD CN MERGE CONTROLLER + DRIVE NUMBERS
  1018. SHN 10
  1019. LMD DN SET FACILITY ADDRESS
  1020. STM CPBF+CUN
  1021. LDN 60D TIMEOUT VALUE = 1 MINUTE
  1022. STD TO
  1023. LDN BCPL WRITE COMMAND BLOCK
  1024. RJM WCB
  1025. LDML IPPS,DI FLAG DIAGNOSTICS INITIATED
  1026. LPC -1S15
  1027. LMC 1S15
  1028. STML IPPS,DI
  1029.  
  1030. * WAIT UNTIL CONTROLLER HAS RETURNED INTERRUPT.
  1031.  
  1032. LDN CMSS PROCESS ATTENTION
  1033. RJM ATT
  1034. ZJN RND1 IF DIAGNOSTICS COMPLETED SUCCESSFULLY
  1035. LDN 0 CLEAR ERROR STEP ADDRESS
  1036. STM ESAD,DI
  1037. LCN EDTF
  1038. RJM ERR PROCESS ERROR
  1039.  
  1040. RND1 LDML IPPS,DI CLEAR DIAGNOSTICS FLAG
  1041. LPC -1S15
  1042. STML IPPS,DI
  1043. UJP RNDX RETURN
  1044. TITLE SELECTIVE RESET PROCESSING.
  1045. SRS SPACE 4,20
  1046. ** SRS - SELECTIVE RESET PROCESSING.
  1047. *
  1048. * ENTRY (A) = 6/FLAG,12/RADD.
  1049. * (FLAG) = 0 FOR SLAVE RESET.
  1050. * (FLAG) = 1 FOR LOGICAL RESET.
  1051. * (RADD) = RETURN ADDRESS.
  1052. * (CN) = CONTROLLER NUMBER.
  1053. * (ADDR,DI) = 0 FOR ALL DRIVES ON CONTROL MODULE.
  1054. *
  1055. * EXIT TO *ERR* IF ERROR.
  1056. * TO *CMP9* FOR NON-CONTROLLING DRIVES ON SLAVE RESET.
  1057. *
  1058. * USES PA, RF, RW, T1, T5.
  1059. *
  1060. * CALLS ATT, C2D, IOM, LND, RIF, SCA, SRP, STO, XMD.
  1061.  
  1062.  
  1063. SRS BSS 0 ENTRY
  1064. STM ERAD,DI SET RETURN ADDRESS
  1065. SHN -14
  1066. STD RW SAVE RESET OPTION
  1067. STM RWST,DI
  1068. SRS2 LDC 0 CHECK RESET ACTIVITY
  1069. SRSA EQU *-1
  1070. ZJN SRS4 IF NONE IN PROGRESS
  1071. SRS3 RJM XMD RETURN TO MAIN LOOP
  1072. UJN SRS2 CHECK RESET IN PROGRESS
  1073.  
  1074. SRS4 LDD DI
  1075. STM SRSA SET LOCAL RESET IN PROGRESS
  1076. LDN 0
  1077. SRS5 RJM LND LOCATE NEXT DRIVE
  1078. ZJN SRS7 IF NO MORE DRIVES ON CONTROLLER
  1079. LDM SRSE,RW
  1080. STM ADDR,T7 SET DRIVE PROCESSING ADDRESS
  1081. STM SRSC
  1082. LDN 1
  1083. UJN SRS5 CHECK FOR NEXT DRIVE
  1084.  
  1085. SRS7 LDM PNUN,DI
  1086. SHN -6 CONTROLLER BLOCK INDEX
  1087. STD T5
  1088. LDD RW
  1089. LMN 1
  1090. SHN 17-0 BIT 15 SET IF SLAVE RESET
  1091. STDL T1
  1092. LDML CSTB,T5 SET / CLEAR SLAVE RESET IN PROGRESS FLAG
  1093. LPC -1S15
  1094. LMDL T1
  1095. STML CSTB,T5
  1096. RJM RIF RESET SLAVE / LOGICAL INTERFACE
  1097. LDN 60D RESET TIMEOUT = 1 MINUTE
  1098. RJM STO
  1099. LDD CN CONVERT CONTROL MODULE NUMBER
  1100. RJM C2D
  1101. SHN 6 INSERT IN MESSAGE
  1102. LMN 1R
  1103. STM SRSH+1 INSERT IN FAILURE MESSAGE
  1104. STM SRSG+1
  1105. LDD RW
  1106. NJN SRS7.1 IF LOGICAL RESET
  1107. LDC SRSG ACTIVATE OPERATOR MESSAGE
  1108. STM IOMA
  1109. LCN 1
  1110. RJM IOM
  1111. SRS7.1 LDN ASRT WAIT ON ASYNC INTERRUPT
  1112. RJM ATT
  1113. NJN SRS8 IF ERROR
  1114.  
  1115. * SEARCH RESPONSE PACKET FOR MACHINE EXCEPTION PARAMETER.
  1116.  
  1117. LDN ID16 LOOK FOR MACHINE EXCEPTION
  1118. RJM SRP
  1119. MJN SRS8 IF PARAMETER NOT FOUND
  1120. LDML RPBF+6,T3
  1121. LPC 0#FEE0 CHECK OPERATIONAL + READY TRANSITION
  1122. LMC 0#6000
  1123. ZJN SRS9 IF CONTROLLER RESET SUCCESSFUL
  1124. SRS8 LCN ESRE
  1125. RJM ERR PROCESS ERROR
  1126.  
  1127. SRS9 RJM SCA SET CONTROLLER ATTRIBUTES
  1128. * LDN 0 CLEAR RESET INTERLOCK
  1129. STM SRSA
  1130. STD RF CLEAR RESET IN PROGRESS FLAG
  1131. RJM IOM CLEAR OPERATOR MESSAGE
  1132. LDM PNUN,DI
  1133. SHN -6 CONTROLLER BLOCK INDEX
  1134. STD T5
  1135. LDML CSTB,T5 ENABLE CONTROLLER ACTIVITY
  1136. LPC -1S14-1S15
  1137. STML CSTB,T5
  1138.  
  1139. * SLAVE RESET - WAIT FOR ASYNC INTERRUPT ON CONTROLLING UNIT.
  1140. * IF THE DRIVE INTERRUPT FOR THE CONTROLLING UNIT IS RECEIVED
  1141. * BEFORE THE CONTROLLER INTERRUPT, *IHD* WILL CLEAR *SRSC*
  1142. * AND THROW AWAY THE INTERRUPT.
  1143.  
  1144. SRS10 LDC 0 CHECK RESET COMPLETION
  1145. * LDC (NONZERO) (SLAVE RESET - MAY BE CLEARED BY *IHD*)
  1146. SRSC EQU *-1
  1147. ZJN SRS11 IF CONTROLLING DRIVE COMPLETE
  1148. LDC 7*60D TIMEOUT = 7 MINUTES
  1149. RJM STO
  1150. LDN ASRT WAIT ON ASYNC INTERRUPT
  1151. RJM ATT (RETURN TO *SRS11* IF INTERRUPT TIMEOUT)
  1152.  
  1153. * COMPLETE RESET PROCESSING.
  1154.  
  1155. SRS11 LDN 0 REENABLE ACCESS TO CONTROLLING DEVICE
  1156. STM ADDR,DI
  1157. STM ATTN,DI
  1158. RJM IOM CLEAR OPERATOR MESSAGE
  1159. LDM ERAD,DI
  1160. STD PA
  1161. LJM 0,PA RETURN TO CALLER
  1162.  
  1163. * SLAVE RESET - WAIT FOR ASYNC INTERRUPTS ON OTHER UNITS.
  1164. * ENTRY TO THIS CODE IS FORCED BY CODE AT *SRS5*.
  1165. * IF A DRIVE INTERRUPT FOR A NONCONTROLLING UNIT IS RECEIVED
  1166. * BEFORE ENTRY AT *SRS12*, *VIS* WILL CLEAR *ADDR* FOR THE
  1167. * DRIVE AND THROW AWAY THE INTERRUPT.
  1168.  
  1169. SRS12 LDC 8D*60D TIMEOUT = 8 MINUTES
  1170. RJM STO
  1171. LDN ASRT WAIT FOR ASYNC INTERRUPT
  1172. RJM ATT (RETURN TO *SRS13* IF INTERRUPT TIMEOUT)
  1173. SRS13 LDN 0
  1174. RJM IOM CLEAR OPERATOR MESSAGE
  1175. LJM CMP9 REENABLE ACCESS TO DRIVE
  1176.  
  1177.  
  1178. SRSE BSS 0 DRIVE PROCESSING ADDRESSES
  1179. CON SRS12 SLAVE RESET
  1180. CON 0 LOGICAL RESET
  1181.  
  1182. SRSG DATA C*CM3 BEING RESET ON CCHNN.*
  1183.  
  1184. SRSH DATA C*CM3 RESET FAILURE ON CCHNN.*
  1185. TITLE INTERRUPT DRIVEN SUBROUTINES.
  1186. BOR SPACE 4,20
  1187. ** BOR - BREAK OPPOSITE RESERVE.
  1188. *
  1189. * EXECUTE A DRIVE RESET FOR THE SPECIFIED DRIVE. THIS IS DONE
  1190. * FOR EACH DRIVE AT DRIVER INITIALIZATION TIME TO BREAK ANY
  1191. * DRIVE RESERVES WHICH MAY BE HELD BY THE OPPOSITE ACCESS.
  1192. * ALSO CLEAR CONTROLLER OVER TEMPERATURE STATUS IN MST WORD
  1193. * *BDLL*.
  1194. *
  1195. * ENTRY (CN) = CONTROLLER NUMBER.
  1196. * (DN) = DRIVE NUMBER.
  1197. *
  1198. * EXIT TO *CMP*.
  1199. *
  1200. * USES CM+2, T7.
  1201. *
  1202. * CALLS EDR, UBP.
  1203.  
  1204.  
  1205. BOR BSS 0 ENTRY
  1206. LDN 0 CLEAR CONTROLLER OVER TEMPERATURE FLAG
  1207. STD CM+2
  1208. LDC 63*100 LOW ORDER BIT TO CHANGE TIMES 100
  1209. STD T7
  1210. LDC BDLL*100+1 6/WORD, 6/BITS TO CHANGE
  1211. RJM UBP UPDATE *BDLL* PARAMETER
  1212. RJM EDR EXECUTE DRIVE RESET
  1213. LDML IPPS,DI CLEAR *BREAK OPPOSITE RESERVE* FLAG
  1214. LPC -1S13
  1215. STML IPPS,DI
  1216. LJM CMP COMPLETE REQUEST
  1217. EDR SPACE 4,15
  1218. ** EDR - EXECUTE DRIVE (POWER ON) RESET.
  1219. *
  1220. * ENTRY (CN) = CONTROLLER NUMBER.
  1221. * (DN) = DRIVE NUMBER.
  1222. *
  1223. * EXIT (A) = 0 IF COMMAND COMPLETED.
  1224. * TO CALLER VIA *RTC*.
  1225. *
  1226. * ERROR TO *ERR* IF NOT COMMAND COMPLETED.
  1227. *
  1228. * USES TO.
  1229. *
  1230. * CALLS ATT, WCB.
  1231.  
  1232.  
  1233. EDR CON 0
  1234. LDM EDR SET RETURN ADDRESS
  1235. STM RADD,DI
  1236. LDC C0800 SETUP ABORT COMMAND
  1237. STM CPBF+OPC
  1238. LDD CN CONTROLLER NUMBER
  1239. SHN 10
  1240. LMD DN APPEND FACILITY ADDRESS
  1241. STM CPBF+CUN
  1242. LDC P0254 PARAMETER ID = DRIVE RESET
  1243. STM CPBF+FCP
  1244. LDC 0#400 SELECT POWER ON RESET
  1245. STM CPBF+FCP+1
  1246. LDN 30D TIMEOUT = 30 SECONDS
  1247. STD TO
  1248. LDN BCPL+3 WRITE COMMAND BLOCK
  1249. RJM WCB
  1250. LDN CMSS WAIT ON INTERRUPT
  1251. RJM ATT
  1252. ZJP RTC IF COMMAND COMPLETE
  1253. LCN EDRS
  1254. RJM ERR PROCESS ERROR
  1255. GDS SPACE 4,15
  1256. ** GDS - GET DRIVE STATUS.
  1257. *
  1258. * ENTRY (CN) = CONTROLLER NUMBER.
  1259. * (DN) = DRIVE NUMBER.
  1260. *
  1261. * EXIT (A) = DRIVE CONDITION FLAGS.
  1262. * TO CALLER VIA *RTC*.
  1263. *
  1264. * ERROR TO *ERR* IF COMMAND COMPLETE NOT RECEIVED.
  1265. *
  1266. * USES TO.
  1267. *
  1268. * CALLS ATT, WCB.
  1269.  
  1270.  
  1271. GDS CON 0
  1272. LDM GDS SET RETURN ADDRESS
  1273. STM RADD,DI
  1274. LDC C0301 SETUP REPORT STATUS COMMAND
  1275. STML CPBF+OPC
  1276. LDD CN CONTROLLER NUMBER
  1277. SHN 10
  1278. LMD DN FORM FACILITY ADDRESS
  1279. STM CPBF+CUN
  1280. LDN 2 TIMEOUT = 2 SECONDS
  1281. STD TO
  1282. LDN BCPL WRITE COMMAND BLOCK
  1283. RJM WCB
  1284. LDN CMSS WAIT ON INTERRUPT
  1285. RJM ATT
  1286. ZJN GDS2 IF COMMAND COMPLETE
  1287. LCN ERDS
  1288. RJM ERR PROCESS ERROR
  1289.  
  1290. GDS2 LDML RPBF+6 RETURN DRIVE CONDITION TO CALLER
  1291. * LJM RTC
  1292. RTC SPACE 4,10
  1293. ** RTC - RETURN TO CALLER.
  1294. *
  1295. * USES PA.
  1296.  
  1297.  
  1298. RTC STD T0 SAVE 12 BITS OF *A* REGISTER
  1299. LMD T0
  1300. LMM RADD,DI SET RETURN ADDRESS
  1301. STD PA
  1302. LMD PA RESTORE *A* REGISTER
  1303. LMD T0
  1304. LJM 0,PA RETURN TO CALLER
  1305. SCA SPACE 4,15
  1306. ** SCA - SET CONTROLLER ATTRIBUTES.
  1307. *
  1308. * ENTRY (CN) = CONTROLLER NUMBER.
  1309. *
  1310. * EXIT (A) = 0 IF COMMAND COMPLETED.
  1311. * TO CALLER VIA *RTC*.
  1312. *
  1313. * ERROR TO *ERR* IF NOT COMMAND COMPLETED.
  1314. *
  1315. * USES TO.
  1316. *
  1317. * CALLS ATT, WCB.
  1318.  
  1319.  
  1320. SCA CON 0
  1321. LDM SCA SET RETURN ADDRESS
  1322. STM RADD,DI
  1323. LDC C0209 SETUP LOAD ATTRIBUTES COMMAND
  1324. STM CPBF+OPC
  1325. LDD CN CONTROLLER NUMBER
  1326. SHN 10
  1327. LMC 0#FF APPEND FACILITY ADDRESS
  1328. STM CPBF+CUN
  1329. LDC P01D1 DISABLE PERFORMANCE LOG
  1330. STM CPBF+FCP
  1331. ADK P02D2-P01D1 ENABLE MASTER TERMINATE
  1332. STM CPBF+FCP+1
  1333. ADK P02D3-P02D2 DISABLE EXTENT RESPONSE
  1334. STM CPBF+FCP+3
  1335. LDC 0#100 SET PARAMETERS
  1336. STM CPBF+FCP+2
  1337. STM CPBF+FCP+4
  1338. LDN 2 TIMEOUT = 2 SECONDS
  1339. STD TO
  1340. LDN BCPL+11 WRITE COMMAND BLOCK
  1341. RJM WCB
  1342. LDN CMSS WAIT ON INTERRUPT
  1343. RJM ATT
  1344. ZJP RTC IF COMMAND COMPLETE
  1345. LCN ELCA
  1346. RJM ERR PROCESS ERROR
  1347. SDA SPACE 4,20
  1348. ** SDA - SET DRIVE ATTRIBUTES.
  1349. *
  1350. * SET THE FACILITY BUSY TIMEOUT FOR THE SPECIFIED DRIVE TO
  1351. * 15 SECONDS. THIS IS DONE TO PREVENT ERRORS WHEN ANOTHER
  1352. * CONTROL MODULE ACCESSES A DRIVE TO PERFORM SWEEP CYCLING,
  1353. * OR WHEN A DRIVE IS TIED UP RUNNING DIAGNOSTICS AFTER A
  1354. * SLAVE RESET FROM THE OTHER ACCESS.
  1355. *
  1356. * ENTRY (CN) = CONTROLLER NUMBER.
  1357. * (DN) = DRIVE NUMBER.
  1358. *
  1359. * EXIT TO *CMP* IF COMMAND COMPLETED.
  1360. *
  1361. * ERROR TO *ERR* IF ERROR.
  1362. *
  1363. * USES TO.
  1364. *
  1365. * CALLS ATT, WCB.
  1366.  
  1367.  
  1368. SDA BSS 0 ENTRY
  1369.  
  1370. * REPORT DEVICE ATTRIBUTES.
  1371.  
  1372. LDC C0200 SETUP REPORT ATTRIBUTES COMMAND
  1373. STML CPBF+OPC
  1374. LDD CN SET FACILITY ADDRESS
  1375. SHN 10
  1376. LMD DN
  1377. STM CPBF+CUN
  1378. LDC P036C REQUEST ATTRIBUTE PARAMETER
  1379. STML CPBF+FCP
  1380. LDC 0#406F REQUEST ATTRIBUTE 6F
  1381. STML CPBF+FCP+1
  1382. LDN 40D TIMEOUT = 40 SECONDS
  1383. STD TO
  1384. LDN BCPL+4 WRITE COMMAND BLOCK
  1385. RJM WCB
  1386. LDN CMSS WAIT FOR INTERRUPT
  1387. RJM ATT
  1388. NJP SDA2 IF ERROR
  1389.  
  1390. * SET FACILITY BUSY TIMEOUT TO 15 SECONDS.
  1391.  
  1392. LDML RPBF+25 CHECK CURRENT TIMEOUT VALUE
  1393. LMC 0#E4
  1394. NJN SDA1 IF TIMEOUT VALUE NOT CORRECT
  1395. LDML RPBF+26
  1396. LMC 0#E1C0
  1397. ZJP SDA4 IF TIMEOUT VALUE ALREADY CORRECT
  1398. SDA1 LDC 0#E4 SET TIMEOUT VALUE TO 15 SECONDS
  1399. STML RPBF+25
  1400. LDC 0#E1C0
  1401. STML RPBF+26
  1402.  
  1403. * LOAD DEVICE ATTRIBUTES.
  1404.  
  1405. LDC C0209 SETUP LOAD ATTRIBUTES COMMAND
  1406. STML CPBF+OPC
  1407. LDD CN SET FACILITY ADDRESS
  1408. SHN 10
  1409. LMD DN
  1410. STM CPBF+CUN
  1411. LDN 40D TIMEOUT = 40 SECONDS
  1412. STD TO
  1413. LDN BCPL+50 WRITE COMMAND BLOCK
  1414. RJM WCB
  1415. LDN CMSS WAIT FOR INTERRUPT
  1416. RJM ATT
  1417. ZJN SDA3 IF COMMAND COMPLETE
  1418. SDA2 LCN ERDA
  1419. RJM ERR PROCESS ERROR
  1420.  
  1421. * SAVE NEW ATTRIBUTES IN EEPROM.
  1422.  
  1423. SDA3 LDC C020A SETUP SAVE ATTRIBUTES COMMAND
  1424. STML CPBF+OPC
  1425. LDD CN SET FACILITY ADDRESS
  1426. SHN 10
  1427. LMC 0#FF
  1428. STM CPBF+CUN
  1429. LDN 40D TIMEOUT = 40 SECONDS
  1430. STD TO
  1431. LDN BCPL WRITE COMMAND BLOCK
  1432. RJM WCB
  1433. LDN CMSS WAIT FOR INTERRUPT
  1434. RJM ATT
  1435. NJN SDA2 IF ERROR
  1436. SDA4 LDML IPPS,DI CLEAR *SET DRIVE ATTRIBUTES* FLAG
  1437. LPC -1S14
  1438. STML IPPS,DI
  1439. LJM CMP COMPLETE REQUEST
  1440. TITLE SUBROUTINES.
  1441. ACE SPACE 4,10
  1442. ** ACE - ANALYZE CHANNEL ERROR.
  1443. *
  1444. * ENTRY (RBUF) = CHANNEL STATUS REGISTER.
  1445. *
  1446. * EXIT (A) = 0 IF NO CHANNEL ERROR.
  1447. * = CHANNEL ERROR FAULT CODE.
  1448.  
  1449.  
  1450. ACE3 LDN ECCM SET CHANNEL DETECTED CM ERROR
  1451.  
  1452. ACE SUBR ENTRY/EXIT
  1453. LDM RBUF+5
  1454. LPN 2
  1455. ZJN ACEX IF NO CHANNEL ERROR
  1456. LDM RBUF
  1457. LPN 76
  1458. NJN ACE3 IF ERROR IN MEMORY
  1459. LDM RBUF+1
  1460. SHN -5
  1461. ZJN ACE2 IF NOT PARITY / IPI CHANNEL ERROR
  1462. LPN 2
  1463. ZJN ACE1 IF NOT PARITY ERROR
  1464. LDN ECPE&ECIE
  1465. ACE1 LMN ECIE&ECER FAULT ANALYSIS CODE
  1466. ACE2 LMN ECER
  1467. UJN ACEX RETURN
  1468. AME SPACE 4,10
  1469. ** AME - ATTEMPT MONITOR EXCHANGE.
  1470. *
  1471. * EXIT (A) = 0.
  1472. *
  1473. * USES CW - CW+4.
  1474. *
  1475. * MACROS EXPE.
  1476.  
  1477.  
  1478. AME SUBR ENTRY/EXIT
  1479. EXPE *
  1480. AME1 LDC 6 CHECK FOR (MA) NON-ZERO
  1481. CRD CW
  1482. LDD CW+1
  1483. ADD CW
  1484. NJN AME1 IF EXCHANGE PACKAGE NOT READY
  1485. EXPE *
  1486. AME2 LDC 0 SET (B0) NON-ZERO
  1487. CWM AMEA,ON
  1488. SBN 1 EXCHANGE MONITOR
  1489. MXN 0
  1490. CRD CW
  1491. LDD CW+4
  1492. ZJN AMEX IF EXCHANGE TAKEN
  1493. LDN 28D
  1494. SBN 1
  1495. NJN *-1 IF NOT 20 MICROSECONDS ELAPSED
  1496. UJN AME2 RETRY EXCHANGE
  1497.  
  1498.  
  1499. AMEA VFD 24/0 (P)
  1500. VFD 18/0 (A0)
  1501. VFD 18/0 (B0)
  1502. ATT SPACE 4,10
  1503. ** ATT - PROCESS ATTENTION.
  1504. *
  1505. * ENTRY (A) = EXPECTED STATUS RESPONSE TYPE.
  1506. * (DI) = DEVICE STATUS BLOCK ADDRESS.
  1507. *
  1508. * EXIT VIA ROUTINE *ECI*.
  1509. *
  1510. * ERROR TO *ERR* IF INTERRUPT TIMEOUT.
  1511. * TO *SRS11* IF TIMEOUT OF SLAVE RESET INTERRUPT FOR
  1512. * CONTROLLING DRIVE.
  1513. * TO *SRS13* IF TIMEOUT OF SLAVE RESET INTERRUPT FOR
  1514. * NON-CONTROLLING DRIVE.
  1515. *
  1516. * USES T5.
  1517. *
  1518. * CALLS CTO, IOM, XMD.
  1519.  
  1520.  
  1521. ATT CON 0 ENTRY
  1522. STM EEST,DI
  1523. LDM ATT SAVE RETURN ADDRESS
  1524. STM ATTN,DI
  1525. ATT1 RJM XMD RETURN TO MAIN LOOP
  1526. ATT2 RJM CTO CHECK FOR TIMEOUT
  1527. PJP ATT5 IF TIMEOUT
  1528. LDM PNUN,DI CHECK FOR SLAVE RESET
  1529. SHN -6
  1530. STD T5
  1531. LDML CSTB,T5
  1532. SHN 21-17
  1533. PJN ATT2.1 IF NO SLAVE RESET IN PROGRESS
  1534. LDC SRSG *CM3 BEING RESET ON CCHNN.*
  1535. STM IOMA
  1536. LCN 1
  1537. UJN ATT4 ISSUE OPERATOR MESSAGE
  1538.  
  1539. ATT2.1 LDM ATTN,DI CHECK INTERRUPT RETURN ADDRESS
  1540. LMC SRS13
  1541. ZJN ATT3 IF WAITING FOR ASYNCH AFTER RESET
  1542. LMC SRS11&SRS13
  1543. ZJN ATT3 IF WAITING FOR ASYNCH AFTER RESET
  1544. UJN ATT1 RETURN TO MAIN LOOP
  1545.  
  1546. ATT3 LDC SPDA SPIN UP PENDING MESSAGE
  1547. ATT4 RJM IOM ISSUE OPERATOR MESSAGE
  1548. UJP ATT1 RETURN TO MAIN LOOP
  1549.  
  1550. ATT5 LDM ATTN,DI
  1551. LMC SRS13
  1552. ZJP SRS13 IF WAITING FOR SLAVE RESET INTERRUPT
  1553. LMC SRS11&SRS13
  1554. ZJP SRS11 IF WAITING FOR SLAVE RESET INTERRUPT
  1555. LDN 0 CLEAR INTERRUPT AND REENTRY ADDRESSES
  1556. STM ATTN,DI
  1557. STM ADDR,DI
  1558. LDN ETIT
  1559. RJM ERR PROCESS ERROR
  1560.  
  1561.  
  1562. SPDA DATA C* EQ000, SPIN UP PENDING.*
  1563. CCO SPACE 4,20
  1564. ** CCO - CHECK FOR CONTROLLER OVER TEMPERATURE.
  1565. *
  1566. * THIS ROUTINE SEARCHES THE RESPONSE PACKET FOR STATUS
  1567. * INDICATING AN OVER TEMPERATURE CONDITION. IF THERE IS
  1568. * AN OVER TEMPERATURE CONDITION, AN ERROR IS OPTIONALLY
  1569. * LOGGED TO THE BML, A BIT INDICATING OVER TEMPERATURE IS
  1570. * SET IN *BDLL*, AND AN OPERATOR ACTION MESSAGE IS GENERATED.
  1571. *
  1572. * ENTRY (A) = 0 IF BML MESSAGE SHOULD NOT BE ISSUED.
  1573. *
  1574. * USES CM+1 - CM+4, T7.
  1575. *
  1576. * CALLS IDM, SRP, UBP.
  1577. *
  1578. * MACROS MONITOR.
  1579.  
  1580.  
  1581. CCO SUBR ENTRY/EXIT
  1582. STD T7
  1583. LDN ID16
  1584. RJM SRP SEARCH RESPONSE PACKET
  1585. MJN CCOX IF PARAMETER 16 NOT FOUND
  1586. LDML RPBF+6,T3
  1587. SHN 21-11
  1588. PJN CCOX IF NOT CONTROLLER OVER TEMPERATURE
  1589. LDM EDBF+FALT
  1590. STM CCOA SAVE VALUES FROM CURRENT MESSAGE
  1591. LDM EDBF+FCS2
  1592. STM CCOA+1
  1593. LDM MSGL+1
  1594. STM CCOA+2
  1595. LDN ECOT
  1596. STM EDBF+FALT FINAL FAULT CODE
  1597. LDD T7
  1598. ZJN CCO1 IF NOT ISSUING MESSAGE TO BML
  1599.  
  1600. * HPA DOES NOT DISPLAY THE DATA WITH SYMPTOM 0111 WHEN THE
  1601. * ERROR IS RECOVERABLE, SO TWO MESSAGES ARE ISSUED TO THE BML.
  1602.  
  1603. LCN 0
  1604. STM EDBF+FCS2 SET NO STATUS FOR *HPA*
  1605. LDN 5
  1606. STM MSGL+1 MESSAGE LENGTH
  1607. LDD HN
  1608. ERRNZ HD0100-100 CODE DEPENDS ON VALUE
  1609. RJM IDM ISSUE INITIAL BML MESSAGE
  1610. LDN 3
  1611. STM MSGL+1 MESSAGE LENGTH
  1612. LDC HD0111
  1613. RJM IDM ISSUE FINAL BML MESSAGE
  1614. LDM CCOA
  1615. STM EDBF+FALT RESTORE VALUES IN MESSAGE
  1616. LDM CCOA+1
  1617. STM EDBF+FCS2
  1618. LDM CCOA+2
  1619. STM MSGL+1
  1620.  
  1621. * SET OVER TEMPERATURE BIT IN *BDLL*.
  1622.  
  1623. CCO1 LDN 1 NEW VALUE
  1624. STD CM+2
  1625. LDC 63*100 LOW ORDER BIT TO CHANGE TIMES 100
  1626. STD T7
  1627. LDC BDLL*100+1 6/WORD, 6/BITS TO CHANGE
  1628. RJM UBP UPDATE *BDLL* PARAMETER
  1629. LDN EEVS
  1630. STD CM+1 ENTER EVENT
  1631. LDN 0
  1632. STD CM+3
  1633. LDN CEDE *CHECK E,E DISPLAY* EVENT
  1634. STD CM+4
  1635. MONITOR EATM
  1636. UJP CCOX RETURN
  1637.  
  1638.  
  1639. CCOA BSS 3 SAVE AREA FOR VALUES FROM CURRENT MESSAGE
  1640. CCR SPACE 4,15
  1641. ** CCR - CHECK FOR CHANNEL REQUEST.
  1642. *
  1643. * ENTRY (UC) = UNIT ACTIVITY COUNT.
  1644. * (IR+4) = CHANNEL NUMBER.
  1645. *
  1646. * EXIT (A) = 0 IF CHANNEL DOWN.
  1647. *
  1648. * USES CM - CM+4.
  1649. *
  1650. * CALLS DCR, RCT, SRF.
  1651. *
  1652. * MACROS DELAY, MONITOR.
  1653.  
  1654.  
  1655. CCR3 RJM SRF SET DRIVER RELOAD FLAG
  1656. CCR4 LDD CR
  1657.  
  1658. CCR SUBR PRS3 ENTRY/EXIT
  1659. RJM RCT READ CHANNEL TABLE
  1660. SHN 21-5
  1661. MJN CCR3 IF CHANNEL GLOBALLY DOWN
  1662. LPN 40
  1663. ZJN CCR4 IF CHANNEL NOT REQUESTED
  1664. STM CHRQ DISABLE NEW ACTIVITY
  1665. LDD UC
  1666. NJN CCRX IF CURRENT ACTIVITY
  1667. RJM DCR DROP CHANNEL RESERVATION
  1668. * LDN 0
  1669. STM CHRQ ENABLE NEW ACTIVITY
  1670. CCR1 LDD CR
  1671. NJN CCRX IF CHANNEL RESERVED
  1672.  
  1673. * ENTERED HERE FROM *PRS*.
  1674.  
  1675. CCR2 DELAY WAIT AWHILE
  1676. LDD IR+4
  1677. STD CM+1 ATTEMPT TO RESERVE CHANNEL
  1678. MONITOR CCHM
  1679. LDD CM+2 SET RESERVATION STATUS
  1680. STD CR
  1681. RJM RCT READ CHANNEL TABLE
  1682. LPN 40
  1683. ZJN CCR1 IF CHANNEL NOT DOWN
  1684. LJM CCR3 SET DRIVER RELOAD FLAG
  1685. CDA SPACE 4,10
  1686. ** CDA - CONVERT PHYSICAL TO LOGICAL DISK ADDRESS.
  1687. *
  1688. * ENTRY (T4) = CYLINDER NUMBER.
  1689. * (T5) = PHYSICAL TRACK + SECTOR.
  1690. *
  1691. * EXIT (T6) = LOGICAL TRACK.
  1692. * (T7) = LOGICAL SECTOR.
  1693. *
  1694. * USES T3, T4, T5.
  1695.  
  1696.  
  1697. * MULTIPLY THE CYLINDER VALUE BY THE NUMBER OF LOGICAL
  1698. * SECTORS PER CYLINDER.
  1699.  
  1700. CDA2 LDK LSCY
  1701. RAD T7 ADVANCE LOGICAL SECTOR COUNT
  1702. SHN -14
  1703. RAD T3
  1704. CDA3 SOD T4
  1705. PJN CDA2 IF NOT END OF CONVERSION
  1706.  
  1707. * DIVIDE THE ACCUMULATED LOGICAL SECTOR COUNT BY THE
  1708. * SUM OF (LOGICAL + GAP) SECTORS PER LOGICAL TRACK.
  1709.  
  1710. CDA4 AOD T6 ADVANCE LOGICAL TRACK NUMBER
  1711. LDK -LSLT
  1712. RAD T7
  1713. PJN CDA4 IF NO UNDERFLOW
  1714. AOD T7
  1715. SOD T3
  1716. PJN CDA4 IF DIVISION INCOMPLETE
  1717.  
  1718. CDA SUBR ENTRY/EXIT
  1719. LDD T5
  1720. SHN 14 EXTRACT PHYSICAL TRACK
  1721. STD T5
  1722. SHN CFLP-14 CONVERT PHYSICAL TO LOGICAL SECTOR
  1723. STD T7
  1724. LDN 0 CLEAR SECTOR COUNT ACCUMULATOR
  1725. STD T3
  1726. LDC 4000-1 INITIALIZE LOGICAL TRACK CALCULATION
  1727. STD T6
  1728.  
  1729. * MULTIPLY THE TRACK VALUE BY THE NUMBER OF LOGICAL
  1730. * SECTORS PER PHYSICAL TRACK.
  1731.  
  1732. CDA1 SOD T5
  1733. MJN CDA3 IF END OF CONVERSION
  1734. LDK LSPT
  1735. RAD T7 ADVANCE LOGICAL SECTOR COUNT
  1736. SHN -14
  1737. RAD T3
  1738. UJN CDA1 LOOP ON CONVERSION
  1739. CEA SPACE 4,15
  1740. ** CEA - CLEAR *ENABLE CONTROLLER ACTIVITY* REQUEST.
  1741. *
  1742. * ENTRY (EO) = EST ORDINAL FOR DEVICE.
  1743. * (IR+4) = CHANNEL NUMBER.
  1744. *
  1745. * EXIT CHANNEL ENABLE BIT CLEARED IN *MST* WORD *BDLL*.
  1746. * SPECIAL REQUEST BIT CLEARED IF BOTH CHANNELS ENABLED.
  1747. *
  1748. * USES CM - CM+4, T1 - T1+4, T7.
  1749. *
  1750. * CALLS CPF, UBP.
  1751. *
  1752. * MACROS SFA.
  1753.  
  1754.  
  1755. CEA SUBR ENTRY/EXIT
  1756. SFA EST,EO
  1757. ADK EQDE
  1758. CRD T1 READ *EQDE* WORD
  1759. LDD T1+1
  1760. LMD IR+4
  1761. LPN 77
  1762. ZJN CEA1 IF THIS IS THE FIRST CHANNEL
  1763. LDN 1
  1764. CEA1 ADN 49D
  1765. SHN 6 LOW ORDER BIT TO CHANGE TIMES 100
  1766. STD T7
  1767. LDN 0 NEW VALUE
  1768. STD CM+2
  1769. LDC BDLL*100+1 6/WORD, 6/BITS TO CHANGE
  1770. RJM UBP CLEAR ENABLE CHANNEL BIT IN *BDLL*
  1771. LDD T1+4
  1772. SHN 3
  1773. ADN BDLL
  1774. CRD CM
  1775. LDD CM
  1776. LPN 6
  1777. NJN CEAX IF OTHER CHANNEL STILL NOT ENABLED
  1778. LDN ECAF CLEAR SPECIAL REQUEST IN *PUT*
  1779. RJM CPF
  1780. UJN CEAX RETURN
  1781. CFR SPACE 4,10
  1782. ** CFR - CHECK *PUT* FOR REQUEST.
  1783. *
  1784. * ENTRY (DI) = DEVICE STATUS BLOCK ADDRESS.
  1785. *
  1786. * ERROR TO *ERR*.
  1787. *
  1788. * USES CM+3.
  1789. *
  1790. * CALLS CMP8, ECI, IDU, IIO, ISR.
  1791.  
  1792.  
  1793. CFR5 LDD CB INITIATE I/O
  1794. RJM IIO
  1795. ZJN CFRX IF I/O NOT ENABLED ON THIS ACCESS
  1796. RJM IDU INTERLOCK DISK UNIT
  1797. NJN CFRX IF INTERLOCK NOT AVAILABLE
  1798. LDM ENAD,DI
  1799. ZJN CFR6 IF CONTROLLER FUNCTIONAL
  1800. LDN ECMD
  1801. RJM ERR PROCESS ERROR
  1802.  
  1803. * EXIT TO PROCESSOR AS APPLICABLE WITH -
  1804. * (PO) = *PUT* ORDINAL.
  1805. * (CB) = *CBT* ORDINAL.
  1806. * (EO) = EST ORDINAL.
  1807. * (RW) = READ / WRITE FLAG.
  1808. * (CN) = CONTROLLER NUMBER.
  1809. * (DN) = DRIVE NUMBER.
  1810. * (WB - WB+4) = *UNCT* WORD OF *PUT* ENTRY.
  1811.  
  1812. CFR6 LJM 0,PA EXIT TO PROCESSOR
  1813.  
  1814. CFR SUBR ENTRY/EXIT
  1815. RJM ECI EXAMINE CONTROLLER INTERRUPTS
  1816. * RJM CMP8 (TERMINATION PROCESSING)
  1817. CFRA EQU *-1
  1818. NJN CFRX IF RESET OR ERROR IN PROGRESS
  1819. LDML IPPS,DI CHECK FOR INTERNAL SPECIAL REQUESTS
  1820. SHN 6-15
  1821. LPC 300
  1822. ZJN CFR1 IF ALL INTERNAL SPECIAL REQUESTS PROCESSED
  1823. STD CM+3 SET INTERNAL SPECIAL REQUESTS
  1824. CFR1 LDD CM+3 CHECK FOR SPECIAL REQUEST
  1825. NJN CFR2 IF SPECIAL REQUEST PRESENT
  1826. ADD WB+3
  1827. ZJN CFRX IF NO I/O REQUEST
  1828. CFR2 LDD CM+4
  1829. ZJN CFR3 IF UNIT NOT INTERLOCKED
  1830. LMD OA
  1831. NJN CFRX IF UNIT INTERLOCKED BY OTHER DRIVER
  1832. CFR3 LDD CM+3 CHECK FOR SPECIAL REQUEST
  1833. ZJP CFR5 IF NO SPECIAL REQUEST
  1834. RJM ISR IDENTIFY AND PROCESS SPECIAL REQUEST
  1835. UJP CFR1 CHECK FOR ANOTHER REQUEST
  1836. CMC SPACE 4,10
  1837. ** CMC - CHECK MONITOR COMPLETE.
  1838. *
  1839. * EXIT (A) = (CW) = 0.
  1840. *
  1841. * USES CW - CW+4.
  1842. *
  1843. * CALLS AME.
  1844. *
  1845. * MACROS DELAY.
  1846.  
  1847.  
  1848. CMC SUBR ENTRY/EXIT
  1849. CMC1 LDD OA
  1850. CRD CW
  1851. LDD CW
  1852. ZJN CMCX IF NO REQUEST WAITING FOR RESPONSE
  1853. SHN 21-13
  1854. PJN CMC2 IF NOT TO RETRY REQUEST
  1855. SHN 13-21
  1856. LPC 177 CLEAR FLAGS
  1857. STD CW
  1858. LDD OA UPDATE OUTPUT REGISTER
  1859. CWD CW
  1860. RJM AME REISSUE REQUEST
  1861. CMC2 DELAY
  1862. UJN CMC1 RECHECK OUTPUT REGISTER
  1863. CMP SPACE 4,15
  1864. ** CMP - COMPLETE PROCESSING.
  1865. *
  1866. * ENTRY (SF) = DEVICE SELECTED STATUS.
  1867. * (UC) = UNIT ACTIVITY COUNT.
  1868. * (RW) = READ / WRITE STATUS.
  1869. *
  1870. * EXIT TO *XMD2*.
  1871. * (UC) = UNIT ACTIVITY COUNT DECREMENTED.
  1872. *
  1873. * USES UC, WB+3, WB+4.
  1874. *
  1875. * CALLS CMC, DCM, IDM, IMR.
  1876.  
  1877.  
  1878. CMP LDM ERCT,DI
  1879. ZJN CMP4 IF NO ERRORS
  1880. LDN 3
  1881. STM MSGL+1 SET BASIC MESSAGE LENGTH
  1882. CMP1 AOM ERCT,DI
  1883. LDC HD0111 ISSUE FINAL BML MESSAGE
  1884. RJM IDM
  1885. CMP2 LDN 0 FORCE CLEAR OF ERROR COUNT / ERROR FLAG
  1886. STM CMPA
  1887. CMP4 RJM DCM DESELECT CONTROLLER
  1888.  
  1889. * INCLUDE *PROBE* DATA IN FINAL *BIOM* REQUEST.
  1890.  
  1891. LDD RW SET DATA TRANSFER DIRECTION
  1892. SHN 13-0
  1893. LMM CBCT,DI APPEND CUMULATIVE BUFFER COUNT
  1894. STD WB+4
  1895. LDM RQLN,DI
  1896. CMP5 ZJN CMP6 IF UNIT NOT INTERLOCKED
  1897. STD WB+3
  1898. LDN DCBS DELINK BUFFERS / RELEASE UNIT INTERLOCK
  1899. RJM IMR
  1900. RJM CMC CHECK FOR MONITOR COMPLETE
  1901. * LDN 0 CLEAR UNIT INTERLOCKED
  1902. STM RQLN,DI
  1903. SOD UC ADJUST UNIT ACTIVITY COUNT
  1904. CMP6 LDC 1
  1905. CMPA EQU *-1
  1906. NJN CMP7 IF ERCT/ERFL SHOULD NOT BE CLEARED
  1907. STM ERCT,DI CLEAR ERROR COUNT
  1908. AOM CMPA
  1909. LDM ERFL CHECK ERROR PROCESSING
  1910. LMD DI
  1911. NJN CMP7 IF NOT ON THIS UNIT
  1912. STM ERFL
  1913. CMP7 RJM CMC CHECK FOR MONITOR COMPLETE
  1914. * LDN 0
  1915. STM ADDR,DI CLEAR REQUEST IN PROGRESS
  1916. STM ATTN,DI
  1917. STM SREQ,DI
  1918. STM CBCT,DI
  1919. STM ESAD,DI ENABLE NEXT PASS THROUGH ERROR PROCESSOR
  1920. LDML IPPS,DI CLEAR I/O IN PROGRESS
  1921. LPC 170000
  1922. STML IPPS,DI
  1923. LJM XMD2 RETURN
  1924.  
  1925. * TERMINATION PROCESSING.
  1926.  
  1927. CMP8 CON 0
  1928. CMP9 LDN 0 CLEAR *PROBE* DATA
  1929. STD WB+4
  1930. LDM RQLN,DI SET REQUEST QUEUE EMPTY
  1931. SCN 77
  1932. UJP CMP5 RELEASE UNIT INTERLOCK
  1933. CPF SPACE 4,10
  1934. ** CPF - CLEAR *PUT* FLAG IN *PILL*.
  1935. *
  1936. * ENTRY (A) = 6/N, 6/B.
  1937. * N = NUMBER OF BITS - 1 TO CLEAR.
  1938. * B = LOW ORDER BIT NUMBER TO CLEAR.
  1939. *
  1940. * USES T6, T7, CM+1 - CM+4.
  1941. *
  1942. * MACROS MONITOR, PUTE.
  1943.  
  1944.  
  1945. CPF SUBR ENTRY/EXIT
  1946. SHN 6
  1947. STD T7 SET BIT NUMBER
  1948. SHN -14
  1949. ADC PILL*100+1 WORD OFFSET + FIELD WIDTH
  1950. STD T6
  1951. LDN 0 NEW VALUE
  1952. STD CM+2
  1953. LDD MA
  1954. CWD T6 STORE MESSAGE BUFFER PARAMETERS
  1955. LDN 1
  1956. STD CM+1 PARAMETER WORD COUNT
  1957. LDI DI
  1958. ERRNZ PUTO CODE DEPENDS ON VALUE
  1959. SHN PUTLS
  1960. PUTE *
  1961. ADC 0 SET BASE *PUT* ENTRY ADDRESS
  1962. STD CM+4
  1963. SHN -14
  1964. STD CM+3
  1965. MONITOR UTEM CLEAR *PUT* FLAG
  1966. UJN CPFX RETURN
  1967. CSR SPACE 4,10
  1968. ** CSR - CLEAR SPECIAL REQUEST.
  1969. *
  1970. * ENTRY (DI) = DEVICE STATUS BLOCK ADDRESS.
  1971. *
  1972. * EXIT TO *CMP*.
  1973. *
  1974. * CALLS CPF.
  1975.  
  1976.  
  1977. CSR BSS 0 ENTRY
  1978. LDM SREQ,DI
  1979. ZJN CSR1 IF NO SPECIAL REQUEST IN PROGRESS
  1980. LPN 77
  1981. SBN ECAF+ISRB-ISRA
  1982. PJN CSR1 IF INTERNAL SPECIAL REQUEST
  1983. LDM SREQ,DI
  1984. RJM CPF CLEAR *PUT* FLAG
  1985. CSR1 LJM CMP COMPLETE PROCESSING
  1986. CTO SPACE 4,10
  1987. ** CTO - CHECK TIMEOUT.
  1988. *
  1989. * EXIT (A) .LT. 0 IF NOT TIMEOUT.
  1990. *
  1991. * USES CM - CM+4.
  1992.  
  1993.  
  1994. CTO SUBR ENTRY/EXIT
  1995. LDC RTCL FETCH CURRENT CLOCK VALUE
  1996. CRD CM
  1997. LDD CM CHECK ELAPSED TIME
  1998. SBM FTOC,DI
  1999. NJN CTOX IF TIMEOUT PASSED OR NOT REACHED
  2000. LDD CM+1
  2001. SBM FTOC+1,DI
  2002. UJN CTOX RETURN
  2003. DCR SPACE 4,10
  2004. ** DCR - DROP CHANNEL RESERVATION.
  2005. *
  2006. * ENTRY (CR) = 1 IF CHANNEL RESERVED.
  2007. * (IR+4) = CHANNEL NUMBER.
  2008. *
  2009. * EXIT (A) = (CR) = 0.
  2010. *
  2011. * USES CM - CM+4.
  2012. *
  2013. * MACROS MONITOR.
  2014.  
  2015.  
  2016. DCR SUBR ENTRY/EXIT
  2017. LDD CR
  2018. ZJN DCRX IF CHANNEL NOT RESERVED
  2019. LDD IR+4
  2020. STD CM+1 DROP CHANNEL
  2021. MONITOR DCHM
  2022. * LDN 0 SET CHANNEL NOT RESERVED
  2023. STD CR
  2024. UJN DCRX RETURN
  2025. ECA SPACE 4,20
  2026. ** ECA - ENABLE CONTROLLER ACTIVITY.
  2027. *
  2028. * THIS SPECIAL REQUEST CLEARS THE CONTROLLER DEAD FLAGS IN
  2029. * THE CONTROLLER STATE TABLE, AND IN THE DEVICE STATE TABLE
  2030. * ENTRIES FOR ALL DEVICES ON THIS CONTROLLER. THIS FUNCTION IS
  2031. * ISSUED BY *1MV* WHEN THE STATE OF A 9853 DRIVE IS CHANGED
  2032. * TO *ON* OR *IDLE*.
  2033. *
  2034. * ENTRY (EO) = EST ORDINAL.
  2035. * (IR+4) = CHANNEL NUMBER.
  2036. *
  2037. * EXIT TO *CMP7* WHEN FUNCTION COMPLETE.
  2038. *
  2039. * CALLS CEA, LND.
  2040.  
  2041.  
  2042. ECA BSS 0 ENTRY
  2043. LDN 0 LOCATE FIRST DRIVE
  2044. ECA1 RJM LND LOCATE DRIVE
  2045. ZJN ECA2 IF NO MORE DRIVES ON CONTROLLER
  2046. LDN 0 CLEAR CONTROLLER DEAD FLAG
  2047. STM ENAD,T7
  2048. LDN 1 LOCATE NEXT DRIVE
  2049. UJN ECA1 LOCATE DRIVE
  2050.  
  2051. ECA2 LDM CSTB,T5 ENABLE CONTROLLER ACTIVITY
  2052. STM CSTB,T5 (CLEAR BITS 15 - 12)
  2053. RJM CEA CLEAR ENABLE ACTIVITY REQUEST
  2054. LJM CMP7 COMPLETE FUNCTION
  2055. EIO SPACE 4,10
  2056. ** EIO - ENTER I/O REQUEST QUEUE.
  2057. *
  2058. * ENTRY (RW) = READ / WRITE STATUS.
  2059. * (CB) = CURRENT BUFFER ORDINAL.
  2060. *
  2061. * USES WB+3, CM - CM+4.
  2062. *
  2063. * CALLS IMR, SLB.
  2064.  
  2065.  
  2066. EIO2 LDD OA
  2067. CRD CM CHECK OUTPUT REGISTER
  2068. LDD CM
  2069. NJN EIOX IF MONITOR REQUEST IN PROGRESS
  2070. EIO3 LDN DCBS
  2071. RJM IMR INITIATE MONITOR REQUEST
  2072. * LDN 0
  2073. SBD WB+3 ADJUST QUEUE ENTRY COUNT
  2074. RAM RQLN,DI
  2075.  
  2076. EIO SUBR ENTRY/EXIT
  2077. LDD RW
  2078. NJN EIO1 IF WRITE OPERATION
  2079. LDD CB
  2080. RJM SLB SET LINKAGE BITS
  2081. EIO1 AOM CBCT,DI
  2082. AOM RQLN,DI ADVANCE ENTRY COUNT
  2083. LPN 77
  2084. SBM EIOA,RW
  2085. MJN EIOX IF QUEUE NOT FULL
  2086. ADN 1
  2087. STD WB+3 NUMBER OF BUFFERS TO DELINK
  2088. SBN 14
  2089. MJN EIO2 IF NOT TIME TO FORCE DELINK
  2090. UJN EIO3 DELINK BUFFERS
  2091.  
  2092.  
  2093. EIOA BSS 0 DELINKING CRITERIA
  2094. CON 1
  2095. CON 10
  2096. ERR SPACE 4,45
  2097. ** ERR - PROCESS ERRORS.
  2098. *
  2099. * ERROR PROCESSING FLOW IS CONTROLLED BY THE RETRY COUNT, ERCT.
  2100. * EXAMPLE FLOW THROUGH RECOVERY FOR DRIVE ERROR -
  2101. *
  2102. * ERCT,DI COMMENT
  2103. * ------- ------------------------------------------------------
  2104. * 0 ENTER, LOGICAL RESET
  2105. * 1 ISSUE BML MESSAGE, EXIT
  2106. * 1 ENTER, LOGICAL RESET, DRIVE RESET
  2107. * 2 ISSUE BML MESSAGE, EXIT
  2108. * 2 ENTER, SLAVE RESET
  2109. * 3 ISSUE BML MESSAGE, EXIT
  2110. * 3 ENTER, LOGICAL RESET
  2111. * 4 ISSUE BML MESSAGE, SET SUSPECT STATE, EXIT
  2112. *
  2113. * THE REQUEST IS NOW CHANNEL SPECIFIC, AND IF DUAL ACCESS IS
  2114. * DEFINED, WILL BE FOR THE OTHER CHANNEL.
  2115. *
  2116. * 4 ENTER, LOGICAL RESET
  2117. * 5 ISSUE BML MESSAGE, EXIT
  2118. * 5 ENTER, LOGICAL RESET, DRIVE RESET
  2119. * 6 ISSUE BML MESSAGE, EXIT
  2120. * 6 ENTER, LOGICAL RESET
  2121. * 7 ISSUE BML MESSAGE, RUN DRIVE DIAGNOSTICS, EXIT
  2122. * 7 ENTER, LOGICAL RESET
  2123. * 8 SET MISCELLANEOUS AND ISSUE THE FINAL BML MESSAGE.
  2124. *
  2125. * NOTE - IF THE REQUEST STARTS OUT AS A CHANNEL-SPECIFIC
  2126. * REQUEST (E.G. A *1MV* I/O REQUEST), ALL RETRIES WILL
  2127. * BE DONE ON THIS CHANNEL.
  2128. *
  2129. * ENTRY (A) = FAULT ANALYSIS CODE.
  2130. * (RF) = RESET IN PROGRESS STATUS.
  2131. *
  2132. * EXIT TO *CMP*.
  2133. * (RF) = 0.
  2134. *
  2135. * USES DI, PA, RF, RW, WB+3, CM+1 - CM+3, CW - CW+4, T1 - T5.
  2136. *
  2137. * CALLS ACE, CCO, DCM, EDR, ICR, IDM, IMR, LDP, LND, RCR, RMR,
  2138. * RND, RTR, SCD, SEC, SMC, SRP, STF, UHD.
  2139. *
  2140. * MACROS CBTE, MONITOR, SFA.
  2141.  
  2142.  
  2143. ERR CON 0 ENTRY
  2144. PJN ERR1 IF NO RESPONSE PACKET
  2145. LMC 767777
  2146. ERR1 STD T4 SAVE FAULT CODE
  2147. SHN 0-14
  2148. STD T3
  2149. LDM RQLN,DI
  2150. SCN 77
  2151. NJN ERR1.4 IF DEVICE INTERLOCKED
  2152.  
  2153. * IF DEVICE NOT INTERLOCKED, THIS MAY BE AN ERROR ENCOUNTERED
  2154. * WHEN READING A RESPONSE PACKET FOR AN UNSOLICITED ASYNC
  2155. * INTERRUPT. IN THIS CASE, FIND ANY DEVICE ON THIS CONTROL
  2156. * MODULE WHICH IS INTERLOCKED, AND PROCESS THE ERROR AS IF IT
  2157. * WAS FROM THAT DEVICE. IF NO DEVICE ON THIS CONTROL MODULE
  2158. * IS INTERLOCKED, RESET THE CHANNEL AND DISCARD THE ERROR,
  2159. * REENTERING *ECI* AT *ECI3*.
  2160.  
  2161. LDN 0 LOCATE FIRST DRIVE
  2162. ERR1.1 RJM LND
  2163. ZJN ERR1.2 IF NO MORE DEVICES
  2164. LDM RQLN,T7 CHECK NEXT DEVICE
  2165. SCN 77
  2166. NJN ERR1.3 IF DEVICE INTERLOCKED
  2167. LDN 1
  2168. UJN ERR1.1 LOCATE NEXT DEVICE
  2169.  
  2170. ERR1.2 RJM RCR RESET CHANNEL REGISTERS
  2171. LJM ECI3 DISCARD ERROR AND LOOK FOR I/O REQUEST
  2172.  
  2173. ERR1.3 LDD T7 SET DEVICE PARAMETERS
  2174. STD DI
  2175. RJM LDP
  2176. ERR1.4 LDD T3
  2177. STM RPST,DI SET RESPONSE PACKET STATUS
  2178. LDM SRSA
  2179. ZJN ERR3 IF NO RESET IN PROGRESS
  2180. LMD DI
  2181. ERR2 ZJN ERR2.1 IF THIS UNIT CONTROLLING RESET
  2182. RJM RCR RESET CHANNEL REGISTERS
  2183. LDN 0 CLEAR BUFFER COUNTS
  2184. STM CBCT,DI
  2185. LDC 4000
  2186. STM RQLN,DI
  2187. LJM CMP RELEASE DRIVE INTERLOCK
  2188.  
  2189. ERR2.1 STM SRSA CLEAR RESET INTERLOCK
  2190. ERR3 LDM ESAD,DI
  2191. ZJN ERR4 IF NEW PASS THRU PROCESSOR
  2192. STD PA
  2193. LJM 0,PA CONTINUE
  2194.  
  2195. *ERR4 LDN 0 CLEAR CHANNEL ACTIVE
  2196. ERR4 RJM SCD
  2197. LDC 0 CHECK ERROR FLAG
  2198. ERFL EQU *-1
  2199. ZJN ERR5 IF NO ERROR IN PROGRESS
  2200. LMD DI
  2201. NJN ERR2 IF ERROR ON DIFFERENT DEVICE
  2202. ERR5 LDD DI
  2203. STM ERFL SET ERROR IN PROGRESS
  2204. LDC ERR79
  2205. STM ESAD,DI INITIAL ERROR STEP ADDRESS
  2206. LDM RWST,DI
  2207. STM IOST,DI SAVE READ/WRITE STATUS
  2208.  
  2209. * GENERATE BML ERROR MESSAGE.
  2210.  
  2211. LCN 0 SET NO STATUS FOR *HPA*
  2212. STM EDBF+FCS2
  2213. LDD T4 INSERT INITIAL FAULT CODE
  2214. STML EDBF+CODE
  2215. STML EDBF+FALT PRESET FINAL FAULT CODE
  2216. LDM CBCT,DI
  2217. SHN LSLBS-CFLP SECTORS TRANSFERED COUNT
  2218. STML EDBF+STCT
  2219. LDM CYLN,DI SET SEEK ADDRESS - CYLINDER
  2220. STML EDBF+ICYL
  2221. LDM TKSN,DI SEEK ADDRESS - TRACK AND SECTOR
  2222. STML EDBF+ITAS
  2223. LDML LCMD,DI SET LAST COMMAND
  2224. STML EDBF+LSCC
  2225. LDML GSSA EXECUTION (ENDING) STATUS
  2226. STML EDBF+EXST
  2227. LDM ERR RETAIN ENTRY ADDRESS
  2228. STML EDBF+FALT+1
  2229. ERR6 LDDL LF SAVE LAST CHANNEL FUNCTION
  2230. STML EDBF+LCFN
  2231. SCF. ERR6,MR ACQUIRE MAINTENANCE CHANNEL ACCESS
  2232. LDN ZERL
  2233. CRML RBUF,ON CLEAR BUFFER IN CASE OF ERROR
  2234. SBN 1
  2235. CRML RBUF+4,ON
  2236. RJM RMR READ CHANNEL STATUS REGISTER
  2237. DCN. MR+40
  2238. CCF. *+2,MR CLEAR MAINTENANCE CHANNEL FLAG
  2239. LDN 0
  2240. STD T2 INITIALIZE INDEX
  2241. STML EDBF+TREG
  2242. STML EDBF+TREG+1 CLEAR *T* REGISTER BUFFER
  2243. STML EDBF+TREG+2
  2244. RJM ACE ANALYZE CHANNEL ERROR
  2245. DCN CH+40
  2246. STML EDBF+FCS1 SAVE CHANNEL STATUS
  2247. LDC EDBF+CREG
  2248. STDL T5 SET ERROR BUFFER ADDRESS
  2249. ERR7 LDM RBUF,T2
  2250. SHN 10 PACK 8-BIT DATA
  2251. LMM RBUF+1,T2
  2252. STIL T5
  2253. AODL T5 ADVANCE ADDRESS
  2254. LDN 2
  2255. RAD T2 INCREMENT INDEX
  2256. LMN RBUFL
  2257. NJN ERR7 IF MORE REGISTER DATA
  2258. LDM IPPS,DI
  2259. ZJN ERR8 IF NOT I/O REQUEST
  2260. RJM RTR READ *T* REGISTER
  2261. ERR8 LDK RTEDL
  2262. STD T4 SET LENGTH OF DATA
  2263. LDC EDBF
  2264. STDL T2 SOURCE DATA ADDRESS
  2265. ADK EMBF1
  2266. RJM UHD UNPACK HEX DATA
  2267. ADN EMBFS
  2268. STM MSGL+1 MESSAGE LENGTH INCLUDING NON-HEX DATA
  2269. LDM RPST,DI
  2270. ZJN ERR13 IF NO RESPONSE PACKET PRESENT
  2271. LDC RPBF
  2272. STDL T2 SET SOURCE DATA ADDRESS
  2273. LDI T2
  2274. ADN 3 CALCULATE STATUS BLOCK LENGTH
  2275. SHN -1
  2276. STD T4
  2277. LDC EDBF+EMBF2 CONVERT STATUS TO 12 BIT DATA
  2278. RJM UHD
  2279. RAM MSGL+1 APPEND TO MESSAGE
  2280. LDN 0
  2281. STM EDBF+FCS2 INDICATE STATUS PRESENT FOR *HPA*
  2282.  
  2283. * CONVERT MAJOR STATUS TO INDEX.
  2284.  
  2285. LDDL MS UNPACK BUS A FLAGS
  2286. SHN -10
  2287. STD T2
  2288. LDD MS BUS B SUBSTATUS FLAGS
  2289. LPN 7
  2290. SHN 10 COMBINE FLAGS IN ORDER
  2291. RAD T2
  2292. ERR13 ZJP ERR71 IF NO SUBSTATUS
  2293. LCN 0
  2294. STD T3
  2295. ERR14 AOD T3 ADVANCE INDEX
  2296. LDD T2
  2297. SHN 21-0 CONVERT FLAG POSITION TO INDEX
  2298. STD T2
  2299. PJN ERR14 IF BIT NOT SET
  2300. LDM ERRB,T3
  2301. STD PA SET PROCESSOR ADDRESS
  2302. LDD T3
  2303. LJM 0,PA EXIT TO PROCESSOR
  2304.  
  2305. * RESERVED SUBSTATUS (PID = X0 AND X1).
  2306.  
  2307. ERR20 LDN ERSS
  2308. LJM ERR70 SET FINAL FAULT CODE
  2309.  
  2310. * DEFECT MANAGEMENT (PID = X2).
  2311.  
  2312. ERR24 LDN EDFM
  2313. LJM ERR70 SET FINAL FAULT CODE
  2314.  
  2315. * MESSAGE / MICROCODE EXCEPTION (PID = X3).
  2316.  
  2317. ERR26 LDN EMME
  2318. LJM ERR70 SET FINAL FAULT CODE
  2319.  
  2320. * INTERVENTION REQUIRED (PID = X4).
  2321.  
  2322. *ERR30 LDN 4 SEARCH FOR SUBSTATUS
  2323. ERR30 RJM SMC
  2324. PJN ERR32 IF SUBSTATUS FOUND
  2325. ERR31 LDN EIVR
  2326. UJN ERR39 SET FINAL FAULT CODE
  2327.  
  2328. ERR32 SHN 21-11
  2329. PJN ERR31 IF NOT FACILITY BUSY
  2330. LJM ERR51 PROCESS FACILITY BUSY ERROR
  2331.  
  2332. * ALTERNATE PORT EXCEPTION (PID = X5).
  2333.  
  2334. ERR38 LDN EAPR
  2335. ERR39 LJM ERR70 SET FINAL FAULT CODE
  2336.  
  2337. * MACHINE EXCEPTION (PID = X6).
  2338.  
  2339. ERR40 LDN ID26 SEARCH FOR DRIVE SUBSTATUS
  2340. RJM SRP
  2341. ZJN ERR42 IF SUBSTATUS FOUND
  2342. ERR41 LDN EMEX
  2343. STM EDBF+FALT SET FINAL FAULT CODE
  2344. LDN 0 DO NOT ISSUE BML MESSAGE
  2345. RJM CCO CHECK FOR CONTROLLER OVER TEMPERATURE
  2346. LJM ERR71 COMPLETE ERROR PROCESSING
  2347.  
  2348. ERR42 LDML RPBF+5,T3 CHECK LENGTH OF PARAMETER
  2349. SHN -10
  2350. SBN 0#0A+1
  2351. MJN ERR41 IF NO EXTENDED SUBSTATUS
  2352. LDM RPBF+12,T3
  2353. LPN 77 EXAMINE COMMAND ENDING STATUS
  2354. SBN 0#11
  2355. ZJN ERR43 IF ECC ERROR
  2356. SBN 0#13-0#11
  2357. ZJN ERR43 IF MISSING SYNC
  2358. SBN 0#19-0#13
  2359. NJN ERR41 IF NOT SECTOR NOT FOUND ERROR
  2360. ERR43 LDN ID32 SEARCH FOR RESPONSE EXTENT
  2361. RJM SRP
  2362. NJN ERR41 IF NOT MEDIA ERROR
  2363. LDM ERCT,DI
  2364. LMN 1
  2365. NJN ERR45 IF NOT SECOND RETRY
  2366. LDM RPBF+10,T3
  2367. STD T4 SET CYLINDER IN ERROR
  2368. LDML RPBF+11,T3
  2369. STD T0 REPACK TRACK + SECTOR
  2370. LPN 77
  2371. STD T5 PHYSICAL SECTOR
  2372. LMD T0
  2373. SHN 6-10 APPEND PHYSICAL TRACK
  2374. RAD T5
  2375. RJM STF INSERT TRACK FLAW IN MST
  2376. ERR45 LDN EDPE
  2377. LJM ERR70 SET FINAL FAULT CODE
  2378.  
  2379. * COMMAND EXCEPTION (PID = X7).
  2380.  
  2381. ERR48 LDN ID17 SEARCH FOR SUBSTATUS
  2382. RJM SRP
  2383. ZJN ERR50 IF SUBSTATUS FOUND
  2384. ERR49 LDN ECEX
  2385. UJN ERR54 SET FINAL FAULT CODE
  2386.  
  2387. ERR50 LDML RPBF+5,T3 CHECK LENGTH OF PARAMETER
  2388. SHN -10
  2389. SBN 5+1
  2390. MJN ERR49 IF NO EXTENDED SUBSTATUS
  2391. LDML RPBF+10,T3
  2392. SHN 21-13
  2393. PJN ERR49 IF NOT RESERVED TO ALTERNATE ACCESS
  2394. ERR51 LDN EDRE
  2395. ERR54 UJN ERR70 SET FINAL FAULT CODE
  2396.  
  2397. * COMMAND ABORTED (PID = X8).
  2398.  
  2399. ERR58 LDN ECMA
  2400. UJN ERR70 SET FINAL FAULT CODE
  2401.  
  2402. * COMMAND CONDITIONALLY SUCCESSFUL (PID = X9).
  2403.  
  2404. ERR60 LDN ECCS SET FINAL FAULT CODE
  2405. STML EDBF+FALT
  2406. LDM IOST,DI RESTORE READ/WRITE STATUS
  2407. STD RW
  2408. AOM ERCT,DI INCREMENT ERROR COUNT
  2409. LDD HN
  2410. ERRNZ HD0100-100 CODE DEPENDS ON VALUE
  2411. RJM IDM ISSUE MESSAGE
  2412. LJM CMP COMPLETE REQUEST
  2413.  
  2414. * COMMAND INCOMPLETE (PID = XA).
  2415.  
  2416. ERR64 LDN ECIC
  2417. * UJN ERR70 SET FINAL FAULT CODE
  2418.  
  2419. * COMPLETE ERROR PROCESSING.
  2420.  
  2421. ERR70 STML EDBF+FALT SET FINAL FAULT CODE
  2422. ERR71 LDML IPPS,DI
  2423. SHN -17
  2424. NJP ERR76 IF ERROR FROM DIAGNOSTICS
  2425. LDM ENAD,DI
  2426. NJP ERR82 IF DRIVE DISABLED (SLAVE RESET FAILURE)
  2427. RJM RCR RESET CHANNEL REGISTERS
  2428. LDC ERR72
  2429. STM ADDR,DI SET RETURN ADDRESS
  2430.  
  2431. * ALLOW ACTIVITY ON OTHER DRIVES TO COMPLETE BEFORE ISSUING
  2432. * CONTROLLER RESET.
  2433.  
  2434. ERR72 LDN 0 LOCATE FIRST DRIVE
  2435. RJM LND
  2436. ERR73 LDM ADDR,T7
  2437. ZJN ERR74 IF NO ACTIVITY ON DEVICE
  2438. LDD T7
  2439. LMD DI
  2440. ZJN ERR74 IF ERROR PROCESSING FOR THIS DRIVE
  2441. LDD T7 LOAD DEVICE PARAMETERS
  2442. STD DI
  2443. RJM LDP
  2444. LDM ADDR,DI
  2445. STD T2
  2446. LJM 0,T2 CONTINUE PROCESSING ON ACTIVE DRIVE
  2447.  
  2448. ERR74 LDN 1 LOCATE NEXT DRIVE
  2449. RJM LND
  2450. NJN ERR73 IF ANOTHER DRIVE PRESENT
  2451. RJM ICR ISSUE CONTROLLER RESET
  2452. * UJN ERR81 (IF RESET SUCCESSFUL)
  2453. NJN ERR82 IF LOGICAL RESET FAILED
  2454. ERR76 LDM EDBF+CODE
  2455. UJN ERR83 PROCESS SLAVE RESET FAILURE
  2456.  
  2457. * REENTER HERE IF ERROR WHILE ATTEMPTING HARDWARE RECOVERY.
  2458.  
  2459. ERR79 RJM RCR RESET CHANNEL REGISTERS
  2460. UJN ERR82 SET RECOVERY FAULT CODE
  2461.  
  2462. ERR81 LDM ERCT,DI CHECK RETRY COUNT
  2463. SBN 1
  2464. ZJN ERR81.1 IF DRIVE RESET IN ORDER
  2465. SBN MERC-CSRC
  2466. NJN ERR82 IF NOT TIME FOR DRIVE RESET
  2467. ERR81.1 RJM EDR EXECUTE DRIVE RESET
  2468. ERR82 LDN 0
  2469. ERR83 STM EDBF+FCS3 SET RECOVERY FAULT CODE
  2470. LDN 0
  2471. STD RF CLEAR RESET IN PROGRESS FLAG
  2472. LDM IOST,DI
  2473. STM RWST,DI RESTORE READ/WRITE STATUS
  2474. STD RW
  2475. LDM EDBF+FCS3
  2476. ZJN ERR85 IF NOT HARDWARE RECOVERY ERROR
  2477. ERR84 RJM SEC SET ERROR CODE
  2478. AOM MISC MARK ERROR UNRECOVERED
  2479. LJM CMP1 COMPLETE PROCESSING
  2480.  
  2481. ERR85 LDM ERCT,DI CHECK ERROR COUNT
  2482. SBN MERC-1
  2483. PJN ERR84 IF ERROR LIMIT
  2484. AOM ERCT,DI
  2485. LDD HN
  2486. ERRNZ HD0100-100 CODE DEPENDS ON VALUE
  2487. RJM IDM ISSUE MESSAGE
  2488. LDM ERCT,DI
  2489. SBN MERC-1
  2490. NJN ERR86 IF NOT TIME TO RUN DRIVE DIAGNOSTICS
  2491. RJM RND RUN DRIVE DIAGNOSTICS
  2492. ERR86 LDM RQLN,DI
  2493. LPN 77 EXTRACT REQUEST QUEUE COUNT
  2494. STD WB+3
  2495. LMM RQLN,DI CLEAR BUFFER COUNT
  2496. STM RQLN,DI
  2497. LDM SREQ,DI
  2498. NJN ERR87 IF NOT I/O PROCESSING
  2499. LDM ERCT,DI
  2500. LMN CSRC
  2501. ZJN ERR89 IF TIME FOR CHANNEL SWAP
  2502. LMN 1&CSRC
  2503. NJN ERR87 IF NOT FIRST RETRY
  2504. LDD WB+3
  2505. ZJN ERR87 IF NO PROCESSED BUFFERS
  2506. LDN IDSS
  2507. RJM IMR INHIBIT DATA STREAMING
  2508. ERR87 RJM DCM DESELECT CONTROL MODULE
  2509. LJM CMP7 RETRY REQUEST
  2510.  
  2511. ERR89 LDD CB
  2512. ZJN ERR89.1 IF NO I/O BUFFER
  2513. SHN CBTLS
  2514. CBTE *
  2515. ADC HSLK GET CHANNEL SELECT STATUS
  2516. CRD T1
  2517. LDD T1
  2518. SHN 0-12
  2519. LMN 1
  2520. ZJP ERR87 IF REQUEST ALREADY CHANNEL-SPECIFIC
  2521. ERR89.1 LDD EO
  2522. STD CM+1 SET EST ORDINAL
  2523. SFA EST
  2524. ADK EQDE FETCH *EQDE* WORD OF EST ENTRY
  2525. CRD CW
  2526. LDD CW CHECK DEVICE STATUS
  2527. LPN 2
  2528. NJN ERR90 IF DEVICE *OFF* OR *DOWN*
  2529. LDD IR+4
  2530. STD CM+3 INSERT CHANNEL NUMBER
  2531. LDN SSES
  2532. STD CM+2 SET SUSPECT STATE ON DEVICE
  2533. MONITOR SEQM
  2534. ERR90 RJM SEC SET ERROR CODE IN *CBT*
  2535. LJM CMP2 COMPLETE PROCESSING
  2536.  
  2537.  
  2538. ERRB BSS 0 SUBSTATUS PROCESSORS
  2539. CON ERR20 RESERVED
  2540. CON ERR20 RESERVED
  2541. CON ERR24 DEFECT MANAGEMENT
  2542. CON ERR26 MESSAGE / MICROCODE EXCEPTION
  2543. CON ERR30 INTERVENTION REQUIRED
  2544. CON ERR38 ALTERNATE PORT EXCEPTION
  2545. CON ERR40 MACHINE EXCEPTION
  2546. CON ERR48 COMMAND EXCEPTION
  2547. CON ERR58 COMMAND ABORTED
  2548. CON ERR60 COMMAND CONDITIONALLY SUCCESSFUL
  2549. CON ERR64 COMMAND INCOMPLETE
  2550. ICR SPACE 4,10
  2551. ** ICR - ISSUE CONTROLLER RESET.
  2552. *
  2553. * ENTRY (RF) .NE. 0 IF PREVIOUS RESET FAILED.
  2554. *
  2555. * EXIT (A) = 0 IF SLAVE RESET FAILED.
  2556. * (A) = 1 IF LOGICAL RESET FAILED.
  2557. * TO *ERR81* IF RESET SUCCESSFUL.
  2558. *
  2559. * CALLS SRS.
  2560.  
  2561.  
  2562. ICR4 LDM RWST,DI
  2563. ZJN ICRX IF SLAVE RESET FAILED
  2564. LDM ERCT,DI
  2565. SBN CSRC-2
  2566. ZJN ICR2 IF TIME TO TRY SLAVE RESET
  2567.  
  2568. ICR SUBR ENTRY/EXIT
  2569. LDD RF
  2570. NJN ICR4 IF PREVIOUS RESET FAILED
  2571. LDM ERCT,DI
  2572. SBN CSRC-2
  2573. NJN ICR1 IF NOT TIME TO TRY SLAVE RESET
  2574.  
  2575. * DO NOT PERFORM SLAVE RESET IF CHANNEL ERROR, MEDIA ERROR,
  2576. * RESET ERROR OR CONTROLLER DEAD.
  2577.  
  2578. LDML EDBF+FALT
  2579. SBN ETIT
  2580. ZJN ICR2 IF INTERRUPT TIMEOUT
  2581. SBN EDPE+1-ETIT
  2582. MJN ICR1 IF CHANNEL / MEDIA ERROR
  2583. SBN ECRE-EDPE-1
  2584. MJN ICR2 IF NOT RESET ERROR / CONTROLLER DEAD
  2585.  
  2586. * PERFORM LOGICAL RESET.
  2587.  
  2588. ICR1 LDC 1S12+ERR81 ISSUE LOGICAL RESET
  2589. UJN ICR3 RESET CONTROL MODULE
  2590.  
  2591. * PERFORM SLAVE RESET.
  2592.  
  2593. ICR2 LDN 0 FORCE LOGGING OF ERROR RESPONSE
  2594. STM ESAD,DI
  2595. LDC ERR81 ISSUE SLAVE RESET
  2596. ICR3 LJM SRS RESET CONTROL MODULE
  2597. IDM SPACE 4,20
  2598. ** IDM - ISSUE DAYFILE MESSAGE.
  2599. *
  2600. * ENTRY (A) = BML MESSAGE SYMPTOM CODE.
  2601. * (RW) = READ / WRITE FLAG.
  2602. * (EO) = EST ORDINAL.
  2603. * (CN) = CONTROLLER NUMBER.
  2604. * (DN) = DRIVE NUMBER.
  2605. * (MISC) = 1 IF UNRECOVERED ERROR.
  2606. *
  2607. * EXIT (A) = (MISC) = 0.
  2608. *
  2609. * USES T2, T3, CM - CM+4, WB - WB+4.
  2610. *
  2611. * CALLS IMB, UEC.
  2612.  
  2613.  
  2614. IDM SUBR ENTRY/EXIT
  2615. LMC D"DN"*400
  2616. STM BMLM+1 INSERT SYMPTOM CODE IN MESSAGE
  2617. LDM PNUN,DI
  2618. LPC 777 INSERT CONTROLLER AND UNIT NUMBERS
  2619. STM UNIT
  2620. LMM PNUN,DI SET PORT NUMBER
  2621. SHN -3
  2622. STM PORT
  2623. LDD EO INCLUDE EST ORDINAL
  2624. STM ESTO
  2625. LDM ERCT,DI SET RETRY COUNT
  2626. SHN 5
  2627. LMD RW MERGE READ / WRITE FLAG
  2628. SHN 1
  2629. RAM MISC APPEND TO RECOVERED/UNRECOVERED STATUS
  2630. LDML MAD1
  2631. RJM IMB ISSUE MESSAGE TO BUFFER
  2632. RJM UEC UPDATE MST ERROR COUNT
  2633. LDC MSGP
  2634. STML MAD1 RESTORE BML ERROR MESSAGE ADDRESS
  2635. LDN 0
  2636. STM MISC CLEAR UNRECOVERED ERROR STATUS
  2637. * LDN 0
  2638. LJM IDMX RETURN
  2639.  
  2640.  
  2641. MAD1 CONL MSGP MESSAGE ADDRESS (MAY BE SET BY CALLER)
  2642. IDU SPACE 4,15
  2643. ** IDU - INTERLOCK DISK UNIT.
  2644. *
  2645. * ENTRY (CB) = *CBT* ORDINAL IF I/O REQUEST.
  2646. * (EO) = EST ORDINAL.
  2647. *
  2648. * EXIT (A) = 0 IF UNIT INTERLOCKED.
  2649. *
  2650. * USES T2, CM - CM+4, T7 - T7+4.
  2651. *
  2652. * CALLS SUI.
  2653. *
  2654. * MACROS CBTE, SFA.
  2655.  
  2656.  
  2657. IDU6 RJM SUI SET UNIT INTERLOCK
  2658.  
  2659. IDU SUBR ENTRY/EXIT
  2660. LDM RQLN,DI
  2661. SHN 0-13 CHECK UNIT RESERVED
  2662. LMN 1
  2663. ZJN IDUX IF UNIT INTERLOCKED
  2664. LDC 0
  2665. CHRQ EQU *-1
  2666. NJN IDUX IF CHANNEL REQUESTED
  2667. STM LCMD,DI
  2668. SFA EST,EO CALCULATE EST ADDRESS
  2669. ADK EQDE
  2670. CRD CM READ *EQDE* WORD
  2671.  
  2672. * CHECK EST ENTRY FOR CHANNEL DOWN.
  2673.  
  2674. LDD CM+1 EXTRACT CHANNEL
  2675. LMD IR+4
  2676. LPN 77
  2677. ZJN IDU1 IF PATH SERVICED BY THIS DRIVER
  2678. LDN 1
  2679. IDU1 ADN CM+1 SET CHANNEL BYTE ADDRESS
  2680. STD T2
  2681. LDI T2 CHECK CHANNEL STATE
  2682. SHN -11
  2683. LMN 4
  2684. IDU2 ZJN IDU6 IF CHANNEL UP AND AVAILABLE
  2685. SCN 1
  2686. IDU3 NJN IDUX IF CHANNEL DOWN OR NOT ENABLED
  2687. LDD CB
  2688. ZJP IDU6 IF NOT I/O REQUEST
  2689. SHN CBTLS
  2690. CBTE *
  2691. ADC PAD4 GET CHANNEL FROM CBT ENTRY
  2692. CRD T7
  2693. ADN HSLK-PAD4 GET CHANNEL SELECT STATUS
  2694. CRD CM
  2695. LDD CM CHECK ERROR FLAGS
  2696. SHN 0-12
  2697. ZJN IDU4 IF NOT CHANNEL SPECIFIC REQUEST
  2698. LDD T7
  2699. SHN -6 CHECK CHANNEL
  2700. LMD IR+4
  2701. ZJN IDU2 IF REQUEST FOR THIS DRIVER
  2702. IDU4 LDN 1
  2703. UJN IDU3 RETURN
  2704. IIO SPACE 4,15
  2705. ** IIO - INITIATE I/O.
  2706. *
  2707. * ENTRY (A) = (CB) = *CBT* ORDINAL.
  2708. *
  2709. * EXIT (A) = 0 IF I/O DISABLED ON THIS CHANNEL.
  2710. * (RW) = READ / WRITE STATUS.
  2711. * (PA) = PROCESSOR ADDRESS.
  2712. * (NR - NR+4) = PHYSICAL ADDRESS OF REQUEST.
  2713. *
  2714. * USES PA, RW, NR - NR+4, T1 - T7.
  2715. *
  2716. * CALLS PEF.
  2717. *
  2718. * MACROS CBTE.
  2719.  
  2720.  
  2721. IIO4 STD PA
  2722. SCN 77 SET I/O DISABLED STATUS
  2723.  
  2724. IIO SUBR ENTRY/EXIT
  2725. SHN CBTLS
  2726. CBTE *
  2727. ADC PAD1 FETCH SEEK PARAMETERS FROM *CBT*
  2728. CRD NR
  2729. ADN PAD4-PAD1 GET CHANNEL FROM CBT ENTRY
  2730. CRD T1
  2731. ADN HSLK-PAD4 GET CHANNEL SELECT STATUS
  2732. CRD T2
  2733. SBN HSLK-IOLK GET READ / WRITE FLAG
  2734. CRD T3
  2735. LDD T2 CHECK ERROR FLAGS
  2736. SHN 0-12
  2737. ZJN IIO1 IF NO FLAGS
  2738. SHN -1
  2739. STD RW PROCESS ERROR FLAGS
  2740. RJM PEF
  2741. NJN IIO4 IF I/O PREPROCESSING INDICATED
  2742. IIO1 LDD NR+1
  2743. STM CPBF+FCP+3 SET CYLINDER IN COMMAND PACKET
  2744. STM CYLN,DI
  2745. ADN 2
  2746. SBK CYUN
  2747. PJN IIO2 IF WITHIN LAST TWO CYLINDERS OF DEVICE
  2748. LDK MXSS MAXIMUM SECTOR COUNT TO STREAM
  2749. UJN IIO3 SET SECTOR COUNT
  2750.  
  2751. IIO2 LDK MNSS MINIMUM SECTOR COUNT TO STREAM
  2752. IIO3 STML CPBF+FCP+2 SECTOR COUNT / STREAM LIMIT
  2753. LDD NR+2
  2754. STM TKSN,DI TRACK + SECTOR
  2755. SCN 77
  2756. SHN 2
  2757. LMD NR+2 SEPARATE INTO 8 BIT FIELDS
  2758. SCN 77
  2759. LMD NR+2 SET IN COMMAND PACKET
  2760. STML CPBF+FCP+4
  2761. LDD T3
  2762. SHN 22-11 EXTRACT WRITE DATA FLAG
  2763. LPN 1
  2764. STM RWST,DI SET READ / WRITE STATUS
  2765. STD RW
  2766. LDC PIO
  2767. LJM IIO4 SET PROCESSOR ADDRESS
  2768. IMF SPACE 4,10
  2769. ** IMF - ISSUE MONITOR FUNCTION.
  2770. *
  2771. * ENTRY (A) = FUNCTION.
  2772. *
  2773. * EXIT (A) = 0.
  2774. *
  2775. * USES CM.
  2776. *
  2777. * CALLS CMC, FTN.
  2778.  
  2779.  
  2780. IMF1 RJM CMC WAIT MONITOR COMPLETE
  2781. LDD CM
  2782. RJM FTN ISSUE MONITOR FUNCTION
  2783.  
  2784. IMF SUBR ENTRY/EXIT
  2785. STD CM
  2786. UJN IMF1 CHECK OUTPUT REGISTER
  2787. IMR SPACE 4,15
  2788. ** IMR - INITIATE MONITOR REQUEST.
  2789. *
  2790. * ENTRY (A) = *BIOM* SUBFUNCTION.
  2791. * (WB+3 - WB+4) = *BIOM* PARAMETERS.
  2792. *
  2793. * EXIT (A) = 0.
  2794. *
  2795. * USES WB - WB+2.
  2796. *
  2797. * CALLS AME, CMC.
  2798.  
  2799.  
  2800. IMR2 RJM AME ATTEMPT MONITOR EXCHANGE
  2801. * LDN 0
  2802.  
  2803. IMR SUBR ENTRY/EXIT
  2804. STD WB+1
  2805. LDI DI SET *PUT* ORDINAL
  2806. ERRNZ PUTO CODE DEPENDS ON VALUE
  2807. STD WB+2
  2808. LDN BIOM SET MONITOR FUNCTION
  2809. STD WB
  2810. RJM CMC CHECK MONITOR COMPLETE
  2811. LDD OA
  2812. CWD WB
  2813. UJN IMR2 ATTEMPT EXCHANGE
  2814. IOM SPACE 4,10
  2815. ** IOM - ISSUE OPERATOR MESSAGE.
  2816. *
  2817. * ENTRY (A) = ADDRESS OF MESSAGE.
  2818. * = 0 TO CLEAR MESSAGE.
  2819. * = - TO REFRESH MESSAGE.
  2820. * (EO) = EST ORDINAL.
  2821. *
  2822. * USES T1.
  2823. *
  2824. * CALLS C2D.
  2825.  
  2826.  
  2827. IOM2 LDD CP SYSTEM CP ADDRESS
  2828. ADN MS2W
  2829. CWD T1 CLEAR THE MESSAGE
  2830. IOM3 LDM IOMA
  2831. NJN IOM1 IF MESSAGE PRESENT
  2832.  
  2833. IOM SUBR ENTRY/EXIT
  2834. STD T1
  2835. MJN IOM3 IF MESSAGE REFRESH
  2836. STM IOMA
  2837. ZJN IOM2 IF CLEAR MESSAGE CALL
  2838. LDD EO
  2839. RJM C2D CONVERT EST ORDINAL
  2840. STM 2,T1
  2841. LDD EO
  2842. SHN -6 SET ORDINAL IN MESSAGE
  2843. ADC 2RQ0
  2844. STM 1,T1
  2845. IOM1 LDD CP SYSTEM CP ADDRESS
  2846. ADN MS2W
  2847. CWM **,TR STORE OPERATOR MESSAGE
  2848. IOMA EQU *-1
  2849. UJN IOMX RETURN
  2850. ISR SPACE 4,25
  2851. ** ISR - IDENTIFY AND PROCESS SPECIAL REQUEST.
  2852. *
  2853. * ENTRY (CM+3) = SPECIAL REQUEST FLAGS.
  2854. * (DI) = DEVICE STATUS BLOCK ADDRESS.
  2855. * (EO) = EST ORDINAL.
  2856. *
  2857. * EXIT (CM+3) UPDATED - BITS FOR *ECAF* AND/OR *LMLF* CLEARED
  2858. * IF REQUEST IS FOR THE ALTERNATE CHANNEL.
  2859. * TO *XMD2* IF UNIT INTERLOCK NOT OBTAINED.
  2860. * TO *ERR* IF CONTROLLER FAILURE.
  2861. * TO *ECA* IF ENABLE CONTROLLER ACTIVITY AND *BDLL*
  2862. * BIT NOT CLEAR.
  2863. * TO SPECIAL REQUEST PROCESSOR (ADDRESS IN TABLE *ISRA*)
  2864. * IF SPECIAL REQUEST FOUND WITH -
  2865. * (RW) = INDEX FOR SPECIAL REQUEST.
  2866. *
  2867. * USES CM, CM+3, PA, RW, T1 - T7.
  2868. *
  2869. * CALLS CPF, IDU.
  2870. *
  2871. * MACROS SFA.
  2872.  
  2873.  
  2874. ISR SUBR ENTRY/EXIT
  2875.  
  2876. * CHECK FOR *ENABLE CONTROLLER ACTIVITY* (*ECAF*) REQUEST.
  2877. * IF REQUEST IS FOR OTHER CHANNEL, LOOK FOR DIFFERENT REQUEST.
  2878. * IF ALREADY ENABLED ON BOTH CHANNELS, EXIT TO *CSR*.
  2879.  
  2880. LDD CM+3
  2881. SHN 21-ECAF+ECAF/12D*12D
  2882. PJN ISR3 IF *ECAF* REQUEST NOT SET
  2883. SFA EST,EO CHECK EST ENTRY
  2884. ADK EQDE
  2885. CRD T1
  2886. LDD T1+4
  2887. SHN 3
  2888. ADK BDLL CHECK WHICH CHANNEL TO ENABLE
  2889. CRD T4
  2890. LDD T4
  2891. SHN -1
  2892. LPN 3
  2893. STD T4
  2894. ZJN ISR3 IF ALREADY ENABLED ON BOTH CHANNELS
  2895. SBN 3
  2896. PJN ISR1 IF NEITHER CHANNEL IS ALREADY ENABLED
  2897. LDM T1,T4
  2898. LMD IR+4
  2899. LPN 77
  2900. NJN ISR2 IF THIS CHANNEL ALREADY ENABLED
  2901. ISR1 LJM ECA ENABLE CONTROLLER ACTIVITY
  2902.  
  2903. ISR2 LDD CM+3 LOOK FOR A DIFFERENT REQUEST TO PROCESS
  2904. SCN 1
  2905. ERRNZ ECAF-12D CODE DEPENDS ON VALUE
  2906. STD CM+3
  2907.  
  2908. * CHECK FOR *LIST FIRMWARE REVISION* (*LMLF*) REQUEST.
  2909. * IF REQUEST IS FOR OTHER CHANNEL, LOOK FOR DIFFERENT REQUEST.
  2910.  
  2911. ISR3 LDD CM+3
  2912. SHN 21-LMLF+LMLF/12D*12D
  2913. PJN ISR4 IF *LMLF* REQUEST NOT SET
  2914. LPN 77 ISOLATE CHANNEL NUMBER
  2915. LMD IR+4
  2916. ZJN ISR6 IF REQUEST FOR THIS DRIVER
  2917. LDD CM+3 LOOK FOR A DIFFERENT REQUEST TO PROCESS
  2918. LPN 37
  2919. ERRNZ LMLF-17D CODE DEPENDS ON VALUE
  2920. STD CM+3
  2921.  
  2922. * SEARCH FOR OTHER SPECIAL REQUEST.
  2923.  
  2924. ISR4 LDD CM+3 ISOLATE SPECIAL REQUEST FLAGS
  2925. STD T0
  2926. ZJP ISRX IF NO SPECIAL REQUEST TO PROCESS
  2927. LDN ECAF-1
  2928. STD RW
  2929. ISR5 AOD RW ADVANCE INDEX
  2930. LDD T0
  2931. SHN 21-0 CHECK NEXT FLAG
  2932. STD T0
  2933. PJN ISR5 IF NOT SET
  2934. LDD RW
  2935. UJN ISR7 SET SPECIAL REQUEST FLAG
  2936.  
  2937. * PROCESS SPECIAL REQUEST.
  2938.  
  2939. ISR6 LDC 6S6+LMLF BITS - 1 TO CLEAR / STARTING BIT
  2940. ISR7 STM SREQ,DI SET SPECIAL REQUEST FLAG
  2941. LPN 77
  2942. SBN ECAF CALCULATE INDEX
  2943. STD RW
  2944. STM RWST,DI SAVE INDEX
  2945. LDML ISRA,RW
  2946. STDL PA SET PROCESSOR ADDRESS
  2947. RJM IDU INTERLOCK DISK UNIT
  2948. MJN ISR8 IF CHANNEL DOWN OR NOT ENABLED
  2949. NJN ISR9 IF INTERLOCK NOT AVAILABLE
  2950. LDM ENAD,DI
  2951. NJN ISR10 IF CONTROLLER FAILURE
  2952. LJM 0,PA EXIT TO SPECIAL REQUEST
  2953.  
  2954. * CHANNEL DOWN OR NOT ENABLED.
  2955.  
  2956. ISR8 LDM SREQ,DI
  2957. LMC 6S6+LMLF
  2958. NJN ISR9 IF NOT LIST MICROCODE REVISION
  2959. LDC 6S6+LMLF BITS - 1 TO CLEAR / STARTING BIT
  2960. RJM CPF CLEAR SPECIAL REQUEST BIT IN *PUT*
  2961.  
  2962. * INTERLOCK NOT AVAILABLE.
  2963.  
  2964. ISR9 LDN 0
  2965. STM SREQ,DI
  2966. LJM XMD2 RETURN TO MAIN LOOP
  2967.  
  2968. * CONTROLLER FAILURE.
  2969.  
  2970. ISR10 LDN ECMD
  2971. RJM ERR PROCESS ERROR
  2972.  
  2973.  
  2974. ISRA BSS 0 SPECIAL REQUEST PROCESSORS
  2975. CON CSR CLEAR FLAG (ENABLE CONTROLLER ACTIVITY)
  2976. CON CSR CLEAR FLAG (RESERVED)
  2977. CON CSR CLEAR FLAG (RESERVED)
  2978. CON LDA LIST DRIVE SERIAL NUMBER
  2979. CON CSR CLEAR FLAG (RESERVED)
  2980. CON LDA LIST MICROCODE REVISION LEVEL
  2981. ISRB BSS 0 INTERNAL SPECIAL REQUEST PROCESSORS
  2982. CON BOR BREAK OPPOSITE RESERVE (INTERNAL REQUEST)
  2983. CON SDA SET DRIVE ATTRIBUTES (INTERNAL REQUEST)
  2984. LDP SPACE 4,20
  2985. ** LDP - LOAD DEVICE PARAMETERS.
  2986. *
  2987. * ENTRY (DI) = DEVICE STATUS BLOCK ADDRESS.
  2988. *
  2989. * EXIT (A) = (EO) = EST ORDINAL.
  2990. * (CB) = *CBT* ORDINAL.
  2991. * (CN) = CONTROLLER NUMBER.
  2992. * (DN) = DRIVE NUMBER.
  2993. * (EO) = EST ORDINAL.
  2994. * (PA) = REQUEST IN PROGRESS ADDRESS.
  2995. * (RW) = READ / WRITE FLAG.
  2996. * (CM - CM+4) = *PILL* WORD OF *PUT* ENTRY.
  2997. * (WB - WB+4) = *UNCT* WORD OF *PUT* ENTRY.
  2998. *
  2999. * USES CB, CN, DN, EO, PA, RW, CM - CM+4, WB - WB+4.
  3000. *
  3001. * MACROS PUTE.
  3002.  
  3003.  
  3004. LDP SUBR ENTRY/EXIT
  3005. LDI DI
  3006. ERRNZ PUTO CODE DEPENDS ON VALUE
  3007. SHN PUTLS
  3008. PUTE *
  3009. ADC PILL GET INTERLOCK STATUS
  3010. CRD CM
  3011. SBN PILL-UNCT FETCH UNIT CONTROL WORD
  3012. CRD WB
  3013. LDD WB GET CONTROLLER AND UNIT NUMBERS
  3014. LPC 777
  3015. SHN 21-5 EXTRACT CONTROLLER NUMBER
  3016. STD CN
  3017. SHN 5-21 ISOLATE DRIVE NUMBER
  3018. STD DN
  3019. LDD WB+3 *CBT* ORDINAL
  3020. STD CB
  3021. LDM RWST,DI RESTORE READ / WRITE STATUS
  3022. STD RW
  3023. LDM ADDR,DI CURRENT PROCESSING ADDRESS
  3024. STD PA
  3025. LDD WB+1 SET EST ORDINAL
  3026. STD EO
  3027. UJN LDPX RETURN
  3028. LND SPACE 4,10
  3029. ** LND - LOCATE NEXT DRIVE (ON SPECIFIED CONTROLLER).
  3030. *
  3031. * ENTRY (A) = 0 TO LOCATE FIRST DRIVE OF STRING.
  3032. * (DI) = DEVICE STATE TABLE ADDRESS.
  3033. * (T5) = CONTROLLER STATUS BLOCK INDEX, IF (A) = 0.
  3034. * (T7) = CURRENT DEVICE STATE TABLE ADDRESS.
  3035. *
  3036. * EXIT (A) = (T7) = STATE TABLE ADDRESS OF NEXT DRIVE.
  3037. * (A) = 0 IF NO MORE DRIVES (ON CONTROLLER).
  3038. * (T5) = CONTROLLER STATUS BLOCK INDEX.
  3039. *
  3040. * USES T5, T7.
  3041.  
  3042.  
  3043. LND2 LDM PNUN,DI EXTRACT CONTROLLER BLOCK INDEX
  3044. SHN -6
  3045. STD T5
  3046. LDM CSTB,T5 ADDRESS OF FIRST DRIVE IN STRING
  3047. STD T7
  3048. LND3 LDM PNUN,T7 FORM *CSTB* INDEX
  3049. SHN -6
  3050. LMD T5
  3051. NJN LND1 IF NOT SPECIFIED CONTROLLER
  3052. LDD T7
  3053.  
  3054. LND SUBR ENTRY/EXIT
  3055. ZJN LND2 IF INITIAL CALL
  3056. LND1 LDN DSTBE
  3057. RAD T7 ADVANCE DEVICE STATE TABLE ADDRESS
  3058. LMM XMDA
  3059. NJN LND3 IF NOT END OF BLOCK
  3060. * LDN 0
  3061. UJN LNDX RETURN
  3062. LSD SPACE 4,15
  3063. ** LSD - LOCATE SELECTED DRIVE IN *DSTB*.
  3064. *
  3065. * ENTRY (T4) = DRIVE NUMBER.
  3066. *
  3067. * EXIT (A) = 0 IF UNKNOWN DRIVE ON SPECIFIED CONTROLLER.
  3068. * = DEVICE STATE TABLE ADDRESS FOR DRIVE.
  3069. *
  3070. * CALLS LND.
  3071.  
  3072.  
  3073. LSD1 LDN 0 LOCATE FIRST DRIVE
  3074. LSD2 RJM LND
  3075. ZJN LSDX IF END OF DRIVE STRING
  3076. LDM PNUN,T7
  3077. LPN 77 CHECK DRIVE NUMBER
  3078. LMD T4
  3079. NJN LSD2 IF NOT SPECIFIED DRIVE
  3080. LDM ADDR,T7
  3081. ZJN LSDX IF DRIVE NOT ACTIVE
  3082. LDD T7
  3083.  
  3084. LSD SUBR ENTRY/EXIT
  3085. LDD T4
  3086. SBN 10
  3087. MJN LSD1 IF VALID DRIVE NUMBER
  3088. LDN 0
  3089. UJN LSDX RETURN
  3090. PEF SPACE 4,15
  3091. ** PEF - PROCESS ERROR FLAGS.
  3092. *
  3093. * ENTRY (RW) = ERROR INDEX.
  3094. * (CB) = *CBT* ORDINAL.
  3095. * (T1) = BYTE 0 OF *PAD4* WORD OF CBT ENTRY.
  3096. * (T2) = BYTE 0 OF *HSLK* WORD OF CBT ENTRY.
  3097. * (NR - NR+4) = *PAD1* WORD OF *CBT* ENTRY.
  3098. *
  3099. * EXIT (A) = 0 IF OK TO INITIATE I/O.
  3100. * TO PROCESSOR IF I/O INITIATED.
  3101. *
  3102. * CALLS IDU, IIO.
  3103.  
  3104.  
  3105. PEF7 LDN 0 INDICATE I/O IN ORDER
  3106.  
  3107. PEF SUBR ENTRY/EXIT
  3108. LDD T1
  3109. SHN -6 CHECK CHANNEL NUMBER
  3110. LMD IR+4
  3111. PEF1 NJN PEFX IF I/O DISABLED ON THIS ACCESS
  3112. LDD RW
  3113. ZJN PEFX IF *1MV* DEVICE VERIFICATION
  3114. LDML ERCT,DI
  3115. NJN PEF7 IF I/O INITIATED
  3116. RJM IDU INTERLOCK DISK UNIT
  3117. NJN PEFX IF INTERLOCK NOT AVAILABLE
  3118. LDN CSRC
  3119. STM ERCT,DI SET INITIAL ERROR COUNT
  3120. LDM ENAD,DI
  3121. NJN PEF7 IF CONTROLLER DEAD
  3122. LDD CB INITIATE I/O
  3123. RJM IIO
  3124. LJM 0,PA EXIT TO PROCESSOR
  3125. RCS SPACE 4,10
  3126. ** RCS - REMOVE CHANNEL FROM SYSTEM USE.
  3127. *
  3128. * ENTRY (A) = EST ORDINAL IF CHANNEL TO BE DOWNED ON DEVICE.
  3129. * = 0 IF CHANNEL TO BE GLOBALLY DOWNED.
  3130. *
  3131. * USES CM - CM+4.
  3132. *
  3133. * MACROS DELAY, EXECUTE, MONITOR.
  3134.  
  3135.  
  3136. RCS SUBR ENTRY/EXIT
  3137. LMC 4000
  3138. STM RCSA+4 SET DRIVER CALL FLAG, EST ORDINAL
  3139. LDD MA
  3140. CWM RCSA,ON STORE *1DS* CALL IN MESSAGE BUFFER
  3141. RCS1 LDN 0
  3142. STD CM+1 SET NON-PRIORITY REQUEST
  3143. EXECUTE 1DS,=
  3144. MONITOR RPPM REQUEST PP
  3145. LDD CM+1
  3146. NJN RCSX IF *1DS* STARTED
  3147. DELAY
  3148. UJN RCS1 RETRY CALL
  3149.  
  3150.  
  3151. RCSA VFD 18/3L1DS,6/,12/DWNF,12/0,12/4000
  3152. RCT SPACE 4,10
  3153. ** RCT - READ CHANNEL TABLE.
  3154. *
  3155. * EXIT (A) = CHANNEL TABLE STATUS BYTE.
  3156. *
  3157. * USES NR - NR+4.
  3158. *
  3159. * MACROS CHTE.
  3160.  
  3161.  
  3162. RCT SUBR ENTRY/EXIT
  3163. CHTE *
  3164. LDC 0 READ CHANNEL TABLE ENTRY
  3165. CRD NR
  3166. RCTA LDD NR+0
  3167. UJN RCTX RETURN
  3168. RLB SPACE 4,15
  3169. ** RLB - READ LINKAGE BITS.
  3170. *
  3171. * ENTRY (A) = (T6) = ADDRESS FOR LINKAGE IN (CM - CM+4).
  3172. * (PB) = CONTROL BUFFER ORDINAL.
  3173. * (T1) = DATA BUFFER ADDRESS.
  3174. * (T2) = CONTROL BUFFER WORD NUMBER.
  3175. * (CM - CM+4) = *PAD* WORD OF *CBT* ENTRY.
  3176. *
  3177. * EXIT SECTOR LINKAGE SET IN *CBT* ENTRY.
  3178. *
  3179. * USES T1, T6.
  3180. *
  3181. * MACROS CBTE.
  3182.  
  3183.  
  3184. RLB1 LDN 10+4 ADVANCE BUFFER ADDRESS
  3185. RADL T1
  3186. LDIL T1 EXTRACT LINKAGE FROM BUFFER
  3187. RLB2 SHN -14
  3188. SHN 10 POSITION FOR *CBT* ENTRY
  3189. STI T6
  3190. LDML 4,T1 EXTRACT LINKAGE FROM BUFFER
  3191. SHN -14
  3192. SHN 4 POSITION FOR *CBT* ENTRY
  3193. RAI T6
  3194. LDML 10,T1 EXTRACT LINKAGE FROM BUFFER
  3195. SHN -14
  3196. * SHN 0 POSITION FOR *CBT* ENTRY
  3197. RAI T6
  3198. AOD T6 ADVANCE *CBT* WORD ADDRESS
  3199. LMN CM+5
  3200. NJN RLB1 IF MORE LINKAGE
  3201. LDD PB
  3202. SHN CBTLS
  3203. CBTE *
  3204. ADC 0 FWA OF *CBT*
  3205. ADD T2
  3206. CWD CM UPDATE CONTROL BUFFER ENTRY
  3207.  
  3208. RLB SUBR ENTRY/EXIT
  3209. * LDD T6
  3210. UJN RLB2 MOVE SECTOR LINKAGE
  3211. RMR SPACE 4,10
  3212. ** RMR - READ CHANNEL STATUS REGISTER.
  3213. *
  3214. * EXIT (A) = 0 IF NO CHANNEL ERROR.
  3215. * (RBUF) = REGISTER CONTENTS.
  3216. *
  3217. * CALLS WMC.
  3218.  
  3219.  
  3220. RMR SUBR ENTRY/EXIT
  3221. FNC. IOUC,MR
  3222. ACN. MR ACTIVATE MAINTENANCE CHANNEL
  3223. LDN 0
  3224. OAN. MR OUTPUT NULL PARAMETER
  3225. CON LDCI
  3226. IAN CH (FORCE CHANNEL TABLE ENTRY)
  3227. ORG *-1
  3228. CON RCSR+CH TRANSMIT REGISTER NUMBER
  3229. OAN. MR
  3230. RJM WMC WAIT CHANNEL EMPTY
  3231. DCN. MR+40
  3232. NJN RMRX IF CHANNEL HUNG FULL
  3233. ACN. MR
  3234. LDN RBUFL READ CHANNEL STATUS REGISTER
  3235. IAM. RBUF,MR
  3236. UJN RMRX RETURN
  3237. SCD SPACE 4,15
  3238. ** SCD - STORE *CPD* DATA.
  3239. *
  3240. * ENTRY (A) = 0 TO INDICATE CHANNEL INACTIVE.
  3241. * = 1 TO INDICATE CHANNEL ACTIVE.
  3242. * (UC) = UNIT ACTIVITY COUNT.
  3243. *
  3244. * EXIT (T7) = 0.
  3245. *
  3246. * USES T5, T6, CM - CM+2.
  3247. *
  3248. * MACROS CCTE.
  3249.  
  3250.  
  3251. SCD SUBR ENTRY/EXIT
  3252. STD T5
  3253. LDN ZERL CLEAR UNUSED BYTES
  3254. CRD T6
  3255. LDD UC INSERT UNIT COUNT
  3256. STD T6
  3257. CCTE *
  3258. LDC CREQ STORE *CPD* DATA
  3259. CWD T5
  3260. UJN SCDX RETURN
  3261. SEC SPACE 4,15
  3262. ** SEC - SET ERROR CODE.
  3263. *
  3264. * ENTRY (EO) = EST ORDINAL.
  3265. *
  3266. * EXIT TO *CSR* IF PROCESSING SPECIAL REQUEST.
  3267. *
  3268. * USES T5, UC, CW - CW+4, WB+3 - WB+4.
  3269. *
  3270. * CALLS DCM, IMR, IOM, LDP, RCS, SES.
  3271. *
  3272. * MACROS CBTE.
  3273.  
  3274.  
  3275. SEC5 LDN 1 BUFFER COUNT TO BE DELINKED
  3276. STD WB+3
  3277.  
  3278. * THE *SETS* MONITOR REQUEST IS USED TO MOVE THE I/O REQUEST
  3279. * TO AN ALTERNATE CHANNEL. THE I/O BUFFER IS ONLY DELINKED
  3280. * IF THE REQUEST IS CHANNEL SPECIFIC.
  3281.  
  3282. LDN SETS INSERT CODE IN *CBT*
  3283. RJM IMR
  3284. * LDN 0 SET INTERLOCK RELEASED (FOR *CMP*)
  3285. STM RQLN,DI
  3286. SOD UC DECREMENT UNIT ACTIVITY COUNT
  3287.  
  3288. SEC SUBR ENTRY/EXIT
  3289. LDN 0
  3290. RJM IOM
  3291. RJM DCM ENSURE CONTROLLER DESELECTED
  3292. RJM LDP
  3293. LDML IPPS,DI CHECK DIAGNOSTIC FLAG
  3294. SHN -17
  3295. ZJN SEC1 IF NOT ERROR FROM DIAGNOSTIC
  3296. LDD CB
  3297. SHN CBTLS CONVERT CBT ORDINAL
  3298. CBTE *
  3299. ADC HSLK FETCH ERROR STATUS
  3300. CRD CW
  3301. LDD CW CHECK PREVIOUS ERROR
  3302. LPN 77
  3303. NJN SEC2 IF PREVIOUS ERROR
  3304. SEC1 LDML EDBF+FALT
  3305. SHN -2 CREATE INDEX FROM FAULT CODE
  3306. STD T5
  3307. LDM TMSE,T5
  3308. SEC2 STD WB+4 SET MASS STORAGE ERROR CODE
  3309. LDML IPPS,DI CLEAR *RND*, *SDA* AND *BOR* FLAGS
  3310. LPC -1S15-1S14-1S13
  3311. STML IPPS,DI
  3312. LDD WB+4 CHECK ERROR CODE
  3313. LMN NRDE
  3314. ZJN SEC3 IF NOT-READY CONDITION
  3315. LDN STDE&STNR
  3316. SEC3 LMN STNR
  3317. RJM SES SET ERROR STATUS IN MST
  3318. LDD CB
  3319. ZJN SEC4 IF SPECIAL REQUEST OR NO BUFFER
  3320. LDM SREQ,DI
  3321. ZJP SEC5 IF I/O PROCESSING
  3322. SEC4 LDD EO DOWN CHANNEL ON THIS DEVICE
  3323. RJM RCS
  3324. AOM MISC MARK ERROR UNRECOVERED
  3325. LJM CSR CLEAR SPECIAL REQUEST
  3326. SFR SPACE 4,15
  3327. ** SFR - SEARCH FOR CONSECUTIVE REQUEST.
  3328. *
  3329. * ENTRY (A) = CURRENT *CBT* ORDINAL.
  3330. *
  3331. * EXIT (A) = (NB) = 0 IF NO CONSECUTIVE REQUEST FOUND.
  3332. * = *CBT* ORDINAL OF NEXT REQUEST.
  3333. * (NR - NR+4) = PHYSICAL ADDRESS OF NEXT REQUEST.
  3334. *
  3335. * USES NB, CM - CM+4, NR - NR+4, T1 - T6.
  3336. *
  3337. * MACROS CBTE.
  3338.  
  3339.  
  3340. SFR SUBR ENTRY/EXIT
  3341. SHN CBTLS
  3342. CBTE *
  3343. ADC PAD1 FETCH SEEK PARAMETERS FROM *CBT*
  3344. CRD CM
  3345. ADN IOLK-PAD1 (T1) = I/O LINK-UP FLAGS
  3346. CRD T1
  3347. LDD T1 CHECK STREAMING ENABLED
  3348. LPN 40
  3349. NJN SFR1 IF DATA STREAMING DISABLED
  3350. LDM CYLN,DI
  3351. ADN 2
  3352. SBK CYUN
  3353. PJN SFR0 IF WITHIN LAST TWO CYLINDERS OF DEVICE
  3354. LDK MXBS MAXIMUM BUFFER COUNT TO STREAM
  3355. UJN SFR0.1 CHECK BUFFER COUNT
  3356.  
  3357. SFR0 LDK MNBS MINIMUM BUFFER COUNT TO STREAM
  3358. SFR0.1 SBM CBCT,DI
  3359. ZJN SFR2 IF TIME TO CURTAIL STREAMING
  3360. LDD T1+2
  3361. STD NB
  3362. ZJN SFRX IF NO REQUEST AVAILABLE
  3363. SHN CBTLS
  3364. CBTE *
  3365. ADC PAD1 PHYSICAL ADDRESS OF NEXT REQUEST
  3366. CRD NR
  3367. ADN IOLK-PAD1 I/O LINK-UP WORD OF NEXT REQUEST
  3368. CRD T2
  3369. LDD T2 COMPARE LINK-UP FLAGS
  3370. LMD T1
  3371. LPC DRFM+ILFM
  3372. ZJN SFR4 IF SAME DIRECTION AND INTERLOCKED
  3373. SFR1 LDN 0
  3374. SFR2 STD NB
  3375. SFR3 UJP SFRX RETURN
  3376.  
  3377. SFR4 LDD NR+1 CHECK SEEK PARAMETERS
  3378. SBD CM+1
  3379. ZJN SFR5 IF SAME CYLINDER
  3380. SBN 1
  3381. NJN SFR1 IF NOT NEXT CYLINDER
  3382. LDD CM+2
  3383. SBK PTCY*100
  3384. UJN SFR6 CHECK NEXT TRACK / SECTOR
  3385.  
  3386. SFR5 LDD CM+2 CHECK NEXT SECTOR
  3387. ADN PSBFDN
  3388. LMD NR+2
  3389. ZJN SFR7 IF NEXT SECTOR ON SAME TRACK
  3390. LDD CM+2
  3391. SFR6 ADD HN SET NEXT TRACK
  3392. SBK PSPT-PSBF
  3393. LMD NR+2
  3394. NJN SFR1 IF NOT NEXT SECTOR ON CONSECUTIVE TRACKS
  3395. SFR7 LDD NB
  3396. UJN SFR3 RETURN
  3397. SLB SPACE 4,15
  3398. ** SLB - SET LINKAGE BITS.
  3399. *
  3400. * ENTRY (A) = *CBT* ORDINAL.
  3401. * (RW) = READ / WRITE STATUS.
  3402. *
  3403. * EXIT LINKAGE BITS SET IN *CBT* ENTRY / UEM BUFFER.
  3404. *
  3405. * USES PB, CM - CM+4, T1 - T6, UA - UA+1.
  3406. *
  3407. * CALLS RLB, SUA, WLB.
  3408. *
  3409. * MACROS CBTE.
  3410.  
  3411.  
  3412. SLB SUBR ENTRY/EXIT
  3413. STD PB
  3414. RJM SUA SET UEM ADDRESS
  3415. LDN PAD1
  3416. STD T2
  3417. SRD T3
  3418. LDN 5 UEM WORD COUNT
  3419. STD T5
  3420. LDM SLBB,RW SET PROCESSOR ADDRESS
  3421. STM SLBA
  3422. SLB1 LRD UA LOAD *R* REGISTER
  3423. LDD PB
  3424. SHN CBTLS READ CONTROL BUFFER WORD
  3425. CBTE *
  3426. ADC 0 FWA OF *CBT*
  3427. ADD T2
  3428. CRD CM
  3429. LDC SBUF-4 SET BUFFER ADDRESS
  3430. STDL T1
  3431. LDC 1S17 READ START OF BUFFER SEGMENT
  3432. CRML SBUF,T5
  3433. LDN CM+3 SET *CBT* ENTRY ADDRESS
  3434. STD T6
  3435. RJM 0 MOVE LINKAGE BITS
  3436. SLBA EQU *-1
  3437. LDN 10 ADVANCE *R* REGISTER IMAGE
  3438. RAD UA+1
  3439. SHN -14
  3440. RAD UA
  3441. AOD T2 ADVANCE CONTROL BUFFER WORD
  3442. LMN PAD4+1
  3443. NJN SLB1 IF NOT COMPLETE
  3444. LRD T3
  3445. UJP SLBX RETURN
  3446.  
  3447.  
  3448. SLBB CON RLB READ LINKAGE BITS
  3449. CON WLB WRITE LINKAGE BITS
  3450. SMC SPACE 4,10
  3451. ** SMC - SEARCH FOR MAJOR CATEGORY SUBSTATUS.
  3452. *
  3453. * ENTRY (A) = MAJOR STATUS CATEGORY.
  3454. *
  3455. * EXIT (A) = FIRST TWO OCTETS OF SUBSTATUS.
  3456. * .LT. 0 IF SUBSTATUS NOT PRESENT.
  3457. * (T4) = SUBSTATUS PARAMETER ID CODE.
  3458. *
  3459. * CALLS SRP.
  3460.  
  3461.  
  3462. SMC1 LDML RPBF+6,T3 RETURN FIRST BYTE OF SUBSTATUS
  3463.  
  3464. SMC SUBR ENTRY/EXIT
  3465. LMN 0#10
  3466. STD T4 SEARCH FOR CONTROLLER SUBSTATUS
  3467. RJM SRP
  3468. ZJN SMC1 IF SUBSTATUS FOUND
  3469. LDN 0#20-0#10
  3470. RAD T4 SEARCH FOR DRIVE SUBSTATUS
  3471. RJM SRP
  3472. ZJN SMC1 IF SUBSTATUS FOUND
  3473. * LCN 0
  3474. UJN SMCX RETURN
  3475. SRF SPACE 4,10
  3476. ** SRF - SET DRIVER RELOAD FLAG.
  3477. *
  3478. * EXIT (A) = 0.
  3479. *
  3480. * USES CM - CM+4.
  3481. *
  3482. * CALLS DCR.
  3483. *
  3484. * MACROS MONITOR.
  3485.  
  3486.  
  3487. SRF SUBR ENTRY/EXIT
  3488. RJM DCR DROP CHANNEL RESERVATION
  3489. * LDN 0
  3490. STD CM+2 CLEAR UNUSED BYTE
  3491. CHTE *
  3492. LDC CTALL*2 ADDRESS OF CHANNEL CONTROLWARE TABLE ENTRY
  3493. STD CM+4
  3494. SHN -14
  3495. STD CM+3
  3496. LDN 1 SET NUMBER OF REQUESTS
  3497. STD CM+1
  3498. LDD MA STORE REQUEST IN MESSAGE BUFFER
  3499. CWM SRFA,CM+1
  3500. MONITOR UTEM SET RELOAD FLAG
  3501. * LDN 0
  3502. UJN SRFX RETURN
  3503.  
  3504.  
  3505. SRFA VFD 1/0,5/0,6/1,6/,42/1
  3506. SRP SPACE 4,10
  3507. ** SRP - SEARCH RESPONSE PACKET.
  3508. *
  3509. * ENTRY (A) = PARAMETER ID TO SEARCH FOR.
  3510. *
  3511. * EXIT (A) = 0 IF ID FOUND.
  3512. * .LT. 0 IF ID NOT FOUND.
  3513. * (T3) = *RPBF* INDEX - 5 OF PARAMETER BLOCK.
  3514. *
  3515. * USES T1, T2.
  3516.  
  3517.  
  3518. SRP1 LDML RPBF+5,T3 EXTRACT PARAMETER BLOCK LENGTH
  3519. SHN -10-1
  3520. ADN 1 CONVERT OCTET COUNT TO BYTE COUNT
  3521. STD T0
  3522. RAD T3 ADVANCE BUFFER INDEX
  3523. LDD T2
  3524. SBD T0
  3525. SRP2 MJN SRPX IF END OF RESPONSE PACKET
  3526. STD T2
  3527. LDM RPBF+5,T3 CHECK NEXT PARAMETER BLOCK
  3528. LMD T1
  3529. LPC 377
  3530. NJN SRP1 IF NOT REQUESTED ID
  3531.  
  3532. SRP SUBR ENTRY/EXIT
  3533. STD T1
  3534. LDN 0 INITIALIZE INDEX
  3535. STD T3
  3536. LDM RPBF+PLN PACKET LENGTH
  3537. ADN 1
  3538. SHN -1 CONVERT TO PP WORD COUNT
  3539. SBN 5
  3540. UJN SRP2 CHECK MINIMUM PACKET LENGTH
  3541. STF SPACE 4,15
  3542. ** STF - SET TRACK FLAW, IF TRACK WITHIN USER AREA.
  3543. *
  3544. * ENTRY (CB) = CURRENT *CBT* ORDINAL.
  3545. * (EO) = EST ORDINAL.
  3546. * (T3+1) = CYLINDER NUMBER.
  3547. * (T3+2) = PHYSICAL TRACK + SECTOR.
  3548. *
  3549. * USES CM+1 - CM+3.
  3550. *
  3551. * CALLS CDA, C2D, IDM.
  3552. *
  3553. * MACROS MONITOR.
  3554.  
  3555.  
  3556. STF SUBR ENTRY/EXIT
  3557. LDD EO
  3558. SHN -3 CONVERT EST ORDINAL
  3559. RJM C2D
  3560. STM STFB+1 SET ORDINAL IN MESSAGE
  3561. LDD EO
  3562. STD CM+1
  3563. LPN 7
  3564. SHN 6 CONVERT LOW ORDER DIGIT
  3565. ADC 2R0,
  3566. STM STFB+2
  3567. RJM CDA CONVERT DISK ADDRESS
  3568. LDD T6 SET TRACK TO FLAW
  3569. STD CM+2
  3570. SBK MCLT
  3571. PJN STFX IF TRACK NOT WITHIN USER AREA
  3572. LDD T6
  3573. RJM C2D SET TRACK NUMBER IN MESSAGE
  3574. STM STFB+5
  3575. LDD T6
  3576. SHN -6
  3577. RJM C2D SET TRACK NUMBER IN MESSAGE
  3578. STM STFB+4
  3579. LDK SFTS INSERT SUBFUNCTION
  3580. STD CM+3
  3581. MONITOR SMDM SET TRACK FLAW REQUEST IN MST
  3582. LDD CM+1
  3583. NJN STF2 IF THIS FLAW ALREADY REQUESTED
  3584. LDC STFA
  3585. STML MAD1 ISSUE ERROR LOG MESSAGE
  3586. RJM IDM
  3587. STF2 LJM STFX RETURN
  3588.  
  3589.  
  3590. STFA VFD 24/0 RESERVED
  3591. VFD 12/1 ERRLOG ALERT FLAG
  3592. VFD 12/STFAL MESSAGE LENGTH
  3593. VFD 12/ELDY ERRLOG DAYFILE
  3594.  
  3595. STFB DATA C*EQXXX,TKNNNN, MEDIA DEFECT ENCOUNTERED.*
  3596.  
  3597. .1 SET *-STFA+4
  3598. STFAL EQU .1/5
  3599. STO SPACE 4,10
  3600. ** STO - SET TIMEOUT.
  3601. *
  3602. * ENTRY (A) = TIMEOUT VALUE (IN SECONDS).
  3603. *
  3604. * USES T6, CM - CM+4.
  3605.  
  3606.  
  3607. STO SUBR ENTRY/EXIT
  3608. STD T6
  3609. LDC RTCL FETCH CURRENT TIME
  3610. CRD CM
  3611. LDD T6
  3612. ADD CM+1 SET TIME LIMIT
  3613. STM FTOC+1,DI
  3614. SHN -14
  3615. ADD CM
  3616. STM FTOC,DI
  3617. UJN STOX RETURN
  3618. SUA SPACE 4,10
  3619. ** SUA - SET UEM ADDRESS.
  3620. *
  3621. * ENTRY (A) = *CBT* ORDINAL.
  3622. *
  3623. * EXIT (UA - UA+1) = UEM ADDRESS / 100.
  3624. *
  3625. * USES CM - CM+4.
  3626. *
  3627. * MACROS CBTE.
  3628.  
  3629.  
  3630. SUA SUBR ENTRY/EXIT
  3631. SHN CBTLS
  3632. CBTE *
  3633. ADC IOLK READ *CBT* ENTRY
  3634. CRD CM
  3635. LDD CM+4 EXTRACT RELATIVE UEM ADDRESS
  3636. ADC 0
  3637. SUAA EQU *-1
  3638. SHN -6
  3639. STD UA+1 SET ABSOLUTE ADDRESS / 100
  3640. LDD CM+3
  3641. ADC 0
  3642. SUAB EQU *-1
  3643. SHN 6
  3644. RAD UA+1
  3645. SHN -14
  3646. STD UA
  3647. UJN SUAX RETURN
  3648. SUI SPACE 4,15
  3649. ** SUI - SET UNIT INTERLOCK.
  3650. *
  3651. * ENTRY (DI) = DEVICE STATUS BLOCK INDEX.
  3652. *
  3653. * EXIT (A) = 0 IF *PUT* ENTRY INTERLOCKED.
  3654. * (UC) = UNIT ACTIVITY COUNT INCREMENTED.
  3655. * (CM+1) = *BIOM* STATUS.
  3656. *
  3657. * USES CM+1, CM+2, UC.
  3658. *
  3659. * MACROS MONITOR.
  3660.  
  3661.  
  3662. SUI1 AOD UC ADVANCE UNIT ASSIGNED COUNT
  3663. LDC 4000
  3664. SUI2 STM RQLN,DI SET UNIT INTERLOCKED
  3665. LDN 0
  3666.  
  3667. SUI SUBR ENTRY/EXIT
  3668. LDM RQLN,DI
  3669. SCN 77
  3670. NJN SUI2 IF UNIT ALREADY INTERLOCKED
  3671. LDI DI SET *PUT* ORDINAL
  3672. ERRNZ PUTO CODE DEPENDS ON VALUE
  3673. STD CM+2
  3674. LDN SUIS SET SUBFUNCTION
  3675. STD CM+1
  3676. MONITOR BIOM INTERLOCK DEVICE
  3677. LDD CM+1
  3678. ZJN SUI1 IF INTERLOCK ACQUIRED
  3679. LDN 1
  3680. UJN SUIX RETURN
  3681. TMSE SPACE 4,10
  3682. ** TMSE - TABLE OF MASS STORAGE ERROR CODES.
  3683. *
  3684. * INDEXED BY FAULT CODE / 4.
  3685.  
  3686.  
  3687. TMSE BSS 0
  3688. LOC 0
  3689.  
  3690. CON CHPE CHANNEL PARITY
  3691. CON CHFE CHANNEL FAILURE
  3692. CON FTOE FUNCTION TIMEOUT
  3693. CON PARE DATA PARITY (MEDIA)
  3694. CON NRDE DEVICE NOT READY
  3695. CON IDTE DATA TRANSFER
  3696. CON DSTE DEVICE STATUS
  3697. CON DSTE DEVICE STATUS
  3698. CON DSTE DEVICE STATUS
  3699. CON DSTE DEVICE STATUS
  3700. CON DSTE DEVICE STATUS
  3701. CON DDFE DIAGNOSTIC FAILURE
  3702. CON RAME CONTROLLER MEMORY
  3703. CON CHFE CHANNEL FAILURE
  3704. CON DRVE DRIVE RESERVE
  3705. CON RAME CONTROLLER MEMORY
  3706. LOC *O
  3707. TMSK SPACE 4,10
  3708. ** TMSK - TABLE OF UNIT MASKS.
  3709. *
  3710. * INDEXED BY UNIT NUMBER.
  3711.  
  3712.  
  3713. TMSK BSS 0
  3714. LOC 0
  3715.  
  3716. CON 001
  3717. CON 002
  3718. CON 004
  3719. CON 010
  3720. CON 020
  3721. CON 040
  3722. CON 100
  3723. CON 200
  3724. LOC *O
  3725. UBP SPACE 4,20
  3726. ** UBP - UPDATE *BDLL* PARAMETER.
  3727. *
  3728. * THIS ROUTINE CHANGES A BIT/FIELD IN WORD *BDLL* OF THE MST.
  3729. *
  3730. * ENTRY (A) = 6/WORD, 6/BITS TO CHANGE.
  3731. * (EO) = EST ORDINAL.
  3732. * (CM+2) = NEW VALUE.
  3733. * (T7) = LOW ORDER BIT TO CHANGE TIMES 100.
  3734. *
  3735. * USES T6, CM - CM+4.
  3736. *
  3737. * MACROS MONITOR, SFA.
  3738.  
  3739.  
  3740. UBP SUBR ENTRY/EXIT
  3741. STD T6
  3742. LDD MA
  3743. CWD T6 STORE MESSAGE BUFFER PARAMETERS
  3744. SFA EST,EO CALCULATE EST ADDRESS
  3745. ADK EQDE
  3746. CRD CM
  3747. LDD CM+4
  3748. SHN 3
  3749. STD CM+4 SET BASE *MST* ENTRY ADDRESS
  3750. SHN -14
  3751. STD CM+3
  3752. LDN 1
  3753. STD CM+1 PARAMETER WORD COUNT
  3754. MONITOR UTEM
  3755. UJN UBPX RETURN
  3756. UEC SPACE 4,15
  3757. ** UEC - UPDATE MST ERROR COUNT.
  3758. *
  3759. * ENTRY (EO) = EST ORDINAL.
  3760. * (BMLM+1) = BML MESSAGE SYMPTOM CODE.
  3761. * (MISC - BIT 0) = 1 IF UNRECOVERED ERROR.
  3762. *
  3763. * USES CM+1 - CM+3.
  3764. *
  3765. * MACROS MONITOR.
  3766.  
  3767.  
  3768. UEC SUBR ENTRY/EXIT
  3769. LDM BMLM+1
  3770. LMC D"DN"*400+HD0111
  3771. NJN UECX IF NOT COMPLETION MESSAGE
  3772. LDD EO
  3773. STD CM+1 SET EST ORDINAL
  3774. LDM MISC
  3775. LPN 1 SET BYTE NUMBER
  3776. ADN 3
  3777. STD CM+2
  3778. LDN ICTS INCREMENT ERROR COUNT
  3779. STD CM+3
  3780. MONITOR SMDM
  3781. UJN UECX RETURN
  3782. UHD SPACE 4,15
  3783. ** UHD - UNPACK HEX DATA.
  3784. *
  3785. * ENTRY (A) = DESTINATION DATA ADDRESS.
  3786. * (T2) = SOURCE DATA ADDRESS.
  3787. * (T4) = BYTE COUNT OF HEX DATA.
  3788. *
  3789. * EXIT (A) = CM WORD COUNT OF 12 BIT DATA.
  3790. *
  3791. * USES T2, T3, T4, T5.
  3792. *
  3793. * CALLS DV5.
  3794.  
  3795.  
  3796. UHD3 AODL T3 SET END OF 12 BIT DATA
  3797. STML UHDA
  3798. LDN ZERL ENSURE ZERO FILL TO CM WORD BOUNDARY
  3799. CRM *,ON
  3800. UHDA EQU *-1
  3801. LDDL T3 SET BYTE COUNT OF 12 BIT DATA
  3802. SBDL T5
  3803. RJM DV5 CONVERT TO CM WORD COUNT
  3804.  
  3805. UHD SUBR ENTRY/EXIT
  3806. STDL T3
  3807. STDL T5 PRESERVE DESTINATION BUFFER ADDRESS
  3808. UHD1 LDIL T2
  3809. SHN 16
  3810. STI T3 UNPACK N+3RD BYTE
  3811. SHN -6
  3812. SCN 77
  3813. STM 1,T3
  3814. AODL T3
  3815. SOD T4
  3816. UHD2 ZJN UHD3 IF END OF HEX DATA
  3817. AODL T2
  3818. LDIL T2
  3819. SHN -10
  3820. RAI T3 UNPACK N+4TH BYTE
  3821. AODL T3
  3822. LDIL T2
  3823. SHN 4
  3824. SCN 17
  3825. STI T3
  3826. SOD T4
  3827. ZJN UHD2 IF END OF HEX DATA
  3828. AODL T2
  3829. LDIL T2
  3830. STM 1,T3
  3831. SHN -14
  3832. RAI T3 UNPACK N+5TH BYTE
  3833. AODL T3
  3834. SOD T4
  3835. ZJN UHD2 IF END OF HEX DATA
  3836. AODL T2
  3837. AODL T3
  3838. UJP UHD1 CONTINUE UNPACK
  3839. VIS SPACE 4,15
  3840. ** VIS - VERIFY INTERRUPT SOURCE.
  3841. *
  3842. * ENTRY (A) .LT. 0 IF ASYNC INTERRUPT.
  3843. * (DI) = DEVICE STATUS BLOCK ADDRESS.
  3844. * (PA) = REQUEST IN PROGRESS ADDRESS.
  3845. *
  3846. * EXIT (A) = 0 IF INTERRUPT FOR INACTIVE DRIVE.
  3847. * = RETURN ADDRESS TO PROCESSOR.
  3848. *
  3849. * USES DI, T4.
  3850. *
  3851. * CALLS LDP.
  3852.  
  3853.  
  3854. VIS3 LDM ATTN,DI PROCESS ASYNC INTERRUPT
  3855. ZJN VIS3.1 IF NOT WAITING FOR INTERRUPT
  3856. LDM EEST,DI
  3857. LMN ASRT
  3858. ZJN VIS6 IF WAITING FOR ASYNC INTERRUPT
  3859. VIS3.1 LDM ADDR,DI
  3860. LMC SRS12
  3861. NJN VIS3.2 IF NOT NONCONTROLLING DRIVE ON SLAVE RESET
  3862. STM ADDR,DI CLEAR REENTRY ADDRESS
  3863. VIS3.2 LDN 0
  3864. UJN VISX DISCARD UNSOLICITED ASYNC INTERRUPT
  3865.  
  3866. VIS4 LDD T4 CHANGE ADDRESS TO CORRECT DEVICE
  3867. STD DI
  3868. RJM LDP LOAD DEVICE PARAMETERS
  3869. VIS5 LDM RQLN,DI
  3870. SCN 77
  3871. ZJN VISX IF UNIT NOT INTERLOCKED
  3872. VIS6 LDD PA
  3873. LMC ATT2
  3874. NJN VIS2 IF NOT SOLICITED INTERRUPT
  3875. LDM ATTN,DI
  3876.  
  3877. VIS SUBR ENTRY/EXIT
  3878. MJP VIS3 IF ASYNC INTERRUPT
  3879. LDM RPBF+CRN CHECK COMMAND NUMBER
  3880. LMD DI
  3881. ZJN VIS5 IF INTERRUPT FROM CURRENT DEVICE
  3882. LDC DSTB
  3883. STD T4
  3884. VIS1 LDM RPBF+CRN COMPARE COMMAND NUMBER
  3885. LMD T4
  3886. ZJN VIS4 IF DEVICE FOUND
  3887. LDN DSTBE
  3888. RAD T4 ADVANCE TABLE ADDRESS
  3889. LMM XMDA
  3890. NJN VIS1 IF NOT END OF DEVICE STATE TABLE
  3891. VIS2 LDN 0
  3892. UJN VISX RETURN
  3893. WLB SPACE 4,10
  3894. ** WLB - WRITE LINKAGE BITS.
  3895. *
  3896. * ENTRY (A) = (T6) = ADDRESS FOR LINKAGE IN (CM - CM+4).
  3897. * (T1) = DATA BUFFER ADDRESS.
  3898. * (T5) = NUMBER OF WORDS TO WRITE.
  3899. * (CM - CM+4) = *PAD* WORD OF *CBT* ENTRY.
  3900. *
  3901. * EXIT SECTOR LINKAGE SET IN DATA BUFFER.
  3902. *
  3903. * USES T1, T6.
  3904.  
  3905.  
  3906. WLB1 LDN 10+4 ADVANCE BUFFER ADDRESS
  3907. RADL T1
  3908. LDI T6 EXTRACT LINKAGE FROM *CBT* ENTRY
  3909. SHN -10
  3910. * LPN 17
  3911. SHN 14 POSITION FOR DATA BUFFER
  3912. LMI T1
  3913. STIL T1
  3914. WLB2 LDI T6 EXTRACT LINKAGE FROM *CBT* ENTRY
  3915. SHN -4
  3916. LPN 17
  3917. SHN 14 POSITION FOR DATA BUFFER
  3918. LMM 4,T1
  3919. STML 4,T1
  3920. LDI T6 EXTRACT LINKAGE FROM *CBT* ENTRY
  3921. * SHN 0
  3922. LPN 17
  3923. SHN 14 POSITION FOR DATA BUFFER
  3924. LMM 10,T1
  3925. STML 10,T1
  3926. AOD T6 ADVANCE *CBT* WORD ADDRESS
  3927. LMN CM+5
  3928. NJN WLB1 IF MORE LINKAGE
  3929. LDC 1S17
  3930. CWML SBUF,T5 UPDATE DATA BUFFER
  3931.  
  3932. WLB SUBR ENTRY/EXIT
  3933. * LDD T6
  3934. UJN WLB2 MOVE SECTOR LINKAGE
  3935. WMC SPACE 4,10
  3936. ** WMC - WAIT MAINTENANCE CHANNEL EMPTY.
  3937. *
  3938. * EXIT (A) = 0 IF CHANNEL EMPTY.
  3939. * .NE. 0 IF CHANNEL HUNG FULL.
  3940.  
  3941.  
  3942. WMC3 LDN 0 INDICATE CHANNEL EMPTY
  3943.  
  3944. WMC SUBR ENTRY/EXIT
  3945. LDD TH
  3946. WMC1 EJM. WMC3,MR IF TRANSMISSION COMPLETE
  3947. SBN 1
  3948. NJN WMC1 IF NOT TIMED OUT
  3949. WMC2 DCN. MR+40
  3950. CCF. *+2,MR CLEAR CHANNEL FLAG
  3951. LDD CP
  3952. ADN MS2W STORE CP MESSAGE
  3953. CWM WMCA,TR
  3954. UJN WMCX RETURN
  3955.  
  3956.  
  3957. WMCA DATA C*MR ERROR.*
  3958. WTC SPACE 4,10
  3959. ** WTC - WAIT TRANSMISSION COMPLETE.
  3960. *
  3961. * ERROR TO *ERR*.
  3962. *
  3963. * USES T1.
  3964. *
  3965. * CALLS CFE.
  3966.  
  3967.  
  3968. WTC3 LDD T1 CHECK FOR I/O ERROR
  3969. RJM CFE
  3970. DCN CH+40 DEACTIVATE CHANNEL
  3971.  
  3972. WTC SUBR ENTRY/EXIT
  3973. STD T1
  3974. LDN 5 SET TIMEOUT = 5*262 MILLISECONDS
  3975. STD T0
  3976. WTC1 LDN 0
  3977. WTC2 EJM WTC3,CH IF LAST BYTE TAKEN OFF CHANNEL
  3978. SBN 1
  3979. NJN WTC2 IF NOT TIMED OUT
  3980. SOD T0
  3981. NJN WTC1 IF NOT TIMEOUT
  3982. LDN ECHF
  3983. RJM ERR PROCESS CHANNEL ERROR
  3984. TITLE CHANNEL SUBROUTINES.
  3985. BCS SPACE 4,10
  3986. ** BCS - DEFINE INFORMATION TRANSFER.
  3987. *
  3988. * ENTRY (A) = BUS *A* BITS 7 AND 6.
  3989. *
  3990. * ERROR TO *ERR*.
  3991. *
  3992. * CALLS FCN, RSR.
  3993.  
  3994.  
  3995. BCS2 LDDL LF FETCH LAST FUNCTION
  3996. LMN 0#32
  3997. RJM FCN DROP SYNC OUT (NO PARITY CHECK)
  3998. LDN 77
  3999. RJM RSR READ SLAVE RESPONSE
  4000.  
  4001. BCS SUBR ENTRY/EXIT
  4002. SHN 17-1
  4003. ADC F005B SET SYNC OUT
  4004. RJM FCN
  4005. LDN 77 READ SLAVE RESPONSE
  4006. RJM RSR
  4007. LPC 377
  4008. ZJN BCS2 IF BUS ACKNOWLEDGE CORRECT
  4009. LDN EBAE
  4010. RJM ERR PROCESS ERROR
  4011. CFE SPACE 4,10
  4012. ** CFE - CHECK FOR I/O ERROR.
  4013. *
  4014. * ENTRY (A) = RESIDUAL WORD COUNT.
  4015. *
  4016. * EXIT (A) = 0.
  4017. *
  4018. * ERROR TO *ERR*.
  4019.  
  4020.  
  4021. CFE5 NJN CFE3 IF INCOMPLETE DATA TRANSFER
  4022.  
  4023. CFE SUBR ENTRY/EXIT
  4024. CFM CFE5,CH IF CHANNEL ERROR FLAG CLEAR
  4025. CFE1 LDN ECIE
  4026. CFE2 RJM ERR PROCESS CHANNEL ERROR
  4027.  
  4028. CFE3 LDN EIDT
  4029. UJN CFE2 PROCESS ERROR
  4030. CTC SPACE 4,10
  4031. ** CTC - CHECK TRANSFER COMPLETE.
  4032. *
  4033. * EXIT (A) = 0.
  4034. *
  4035. * ERROR TO *ERR*.
  4036. *
  4037. * CALLS CTO.
  4038.  
  4039.  
  4040. CTC SUBR ENTRY/EXIT
  4041. CTC1 LDC F0700
  4042. RJM FCN REQUEST OPERATIONAL STATUS
  4043. ACN CH
  4044. IAN CH READ STATUS
  4045. SFM CFE1,CH IF CHANNEL ERROR FLAG SET
  4046. LPC 176001
  4047. ZJN CTCX IF TRANSFER COMPLETE
  4048. SCN 1
  4049. NJN CTC4 IF REGISTER PARITY ERROR
  4050. RJM CTO CHECK ELAPSED TIME
  4051. MJN CTC1 IF NOT TIMEOUT
  4052. LDN ETTC
  4053. CTC3 RJM ERR PROCESS ERROR
  4054.  
  4055. CTC4 LDN ERPE
  4056. UJN CTC3 PROCESS ERROR
  4057. DCM SPACE 4,10
  4058. ** DCM - DESELECT CONTROL MODULE.
  4059. *
  4060. * ENTRY (SF) = 0 IF CONTROLLER NOT SELECTED.
  4061. *
  4062. * EXIT (A) = (SF) = 0.
  4063. *
  4064. * USES SF.
  4065. *
  4066. * ERROR TO *ERR*.
  4067. *
  4068. * CALLS FCN.
  4069.  
  4070.  
  4071. DCM2 IAN CH+40 READ CONTROLLER RESPONSE
  4072. LDN 0
  4073. STD SF CLEAR SELECT FLAG
  4074.  
  4075. DCM SUBR ENTRY/EXIT
  4076. LDD SF
  4077. ZJN DCMX IF CONTROLLER NOT SELECTED
  4078. LDC F0071
  4079. RJM FCN CLEAR SELECT OUT
  4080. LDC 2000
  4081. ACN CH
  4082. DCM1 FJM DCM2,CH IF SLAVE IN DROPPED
  4083. SBN 1
  4084. NJN DCM1 IF NOT TIMED OUT
  4085. LDM ESAD,DI
  4086. NJN DCM2 IF ERROR PROCESSING
  4087. LDN ECNR
  4088. RJM ERR PROCESS ERROR
  4089. DTM SPACE 4,10
  4090. ** DTM - DETERMINE TRANSFER MODE.
  4091. *
  4092. * ENTRY (A) = CONTROLLER NUMBER.
  4093. *
  4094. * EXIT (A) = CONTROLLER NUMBER + TRANSFER MODE CHANGE.
  4095. *
  4096. * USES T4.
  4097. *
  4098. * CALLS FCN, RSR.
  4099.  
  4100.  
  4101. DTM SUBR ENTRY/EXIT
  4102. SHN 14
  4103. STDL T4 SET CONTROLLER NUMBER IN RESPONSE
  4104. LMC F8025
  4105. RJM FCN REQUEST TRANSFER MODE (SET MASTER OUT)
  4106. LDN 77
  4107. RJM RSR READ SLAVE RESPONSE
  4108. LPN 0#10
  4109. LMN 0#10 COMPLEMENT TRANSFER MODE
  4110. SHN 13-4
  4111. RADL T4 APPEND TRANSFER MODE TO RESPONSE
  4112. LDDL LF
  4113. LMC 0#54 DROP MASTER OUT
  4114. RJM FCN
  4115. LDN 77 READ SLAVE RESPONSE
  4116. RJM RSR
  4117. LDDL T4
  4118. UJP DTMX RETURN
  4119. ECI SPACE 4,20
  4120. ** ECI - EXAMINE CONTROLLER INTERRUPTS.
  4121. *
  4122. * ENTRY (DI) = DEVICE STATUS BLOCK ADDRESS.
  4123. *
  4124. * EXIT (A) .NE. 0, IF RESET OR ERROR IN PROGRESS.
  4125. * (PA) = 0 IF NO REQUEST IN PROGRESS.
  4126. * (CM - CM+4) = *PILL* WORD OF *PUT* ENTRY.
  4127. * (WB - WB+4) = *UNCT* WORD OF *PUT* ENTRY.
  4128. * TO (ATTN) IF INTERRUPT RECEIVED.
  4129. * TO *SRS* IF LOGICAL RESET NOT YET PERFORMED.
  4130. *
  4131. * USES PA, T5.
  4132. *
  4133. * CALLS FCN, GIS, IHD, LDP, SAP, SUI.
  4134.  
  4135.  
  4136. ECI SUBR ENTRY/EXIT
  4137. ECI1 RJM SAP SELECT ADAPTOR PORT
  4138. LDC F0715 ENABLE INTERRUPTS
  4139. RJM FCN
  4140. RJM LDP LOAD DEVICE PARAMETERS
  4141. RJM GIS GET INTERRUPT STATUS
  4142. LPML TMSK,CN
  4143. ZJN ECI3 IF NO INTERRUPT FROM THIS CONTROLLER
  4144.  
  4145. * CHECK THAT INTERRUPT BELONGS TO CURRENT DRIVE.
  4146.  
  4147. RJM IHD
  4148. ZJN ECI3 IF RESPONSE FROM INACTIVE DRIVE
  4149. * LDM ATTN,DI
  4150. STD PA SET RETURN ADDRESS
  4151. LDN 0
  4152. STM ATTN,DI DEACTIVATE RETURN
  4153. STM ADDR,DI CLEAR REENTRY ADDRESS
  4154.  
  4155. * RETURN TO CALLER WITH STATUS FROM RESPONSE PACKET.
  4156.  
  4157. LDM EEST,DI EXPECTED RESPONSE TYPE
  4158. LMD RT
  4159. ZJN ECI2 IF EXPECTED RESPONSE
  4160. LMD RT
  4161. LMD MS
  4162. ZJN ECI2 IF EXPECTED STATUS
  4163. LMK CMCS&CMSS
  4164. ECI2 LJM 0,PA RETURN TO CALLER
  4165.  
  4166. ECI3 LDD PA
  4167. NJN ECI2 IF REQUEST IN PROGRESS
  4168. LDM ERFL
  4169. ZJN ECI4 IF DRIVER NOT IN ERROR PROCESSING
  4170. LMD DI
  4171. NJN ECI7 IF ERROR ON DIFFERENT DEVICE
  4172. ECI4 LDM SRSA
  4173. NJN ECI7 IF RESET IN PROGRESS
  4174. LDM PNUN,DI
  4175. SHN -6 SET CONTROLLER BLOCK INDEX
  4176. STD T5
  4177. LDML CSTB,T5 CHECK CONTROLLER STATUS
  4178. SHN -16
  4179. ZJN ECI7 IF AVAILABLE
  4180. SHN -1
  4181. ZJN ECI8 IF NOT SLAVE RESET FAILURE
  4182. LDM ENAD,DI
  4183. NJN ECI6 IF DRIVE ALREADY DISABLED
  4184. LDC SRSH
  4185. STM IOMA SET ERROR MESSAGE
  4186. STM ENAD,DI DISABLE DRIVE
  4187. ECI6 LDN 0
  4188. ECI7 LJM ECIX RETURN
  4189.  
  4190. * AT DRIVER INITIATION, PERFORM LOGICAL RESET ON CONTROLLING
  4191. * DRIVE OF EACH CONTROL MODULE. NO ACTIVITY ON OTHER DRIVES
  4192. * ON THE CONTROL MODULE WILL BE ALLOWED UNTIL THE RESET IS
  4193. * COMPLETE.
  4194.  
  4195. ECI8 LDM CSTB,T5 CHECK CONTROLLING DRIVE INDEX
  4196. LMD DI
  4197. NJN ECI7 IF NOT THIS DRIVE
  4198. RJM SUI SET UNIT INTERLOCK
  4199. NJN ECI7 IF DEVICE ASSIGNED ELSEWHERE
  4200. LDC 1S12+CMP
  4201. LJM SRS INITIATE LOGICAL RESET
  4202. FCN SPACE 4,10
  4203. ** FCN - ISSUE FUNCTION.
  4204. *
  4205. * ENTRY (A) = FUNCTION CODE.
  4206. *
  4207. * EXIT (A) .NE. 0.
  4208. * (LF) = FUNCTION CODE.
  4209. *
  4210. * USES LF.
  4211. *
  4212. * ERROR TO *ERR*.
  4213.  
  4214.  
  4215. FCN2 DCN CH+40 LEAVE CHANNEL INACTIVE
  4216.  
  4217. FCN SUBR ENTRY/EXIT
  4218. DCN CH+40
  4219. STDL LF
  4220. FAN CH ISSUE FUNCTION
  4221. LDN 20D
  4222. FCN1 IJM FCNX,CH IF FUNCTION ACCEPTED
  4223. SBN 1
  4224. NJN FCN1 IF NOT TIMED OUT
  4225. LDM ESAD,DI
  4226. NJN FCN2 IF ERROR IN PROGRESS
  4227. LDN ETFN
  4228. RJM ERR PROCESS ERROR
  4229. GIS SPACE 4,10
  4230. ** GIS - GET INTERRUPT STATUS.
  4231. *
  4232. * EXIT (A) = (GISA) = INTERRUPT STATUS.
  4233. *
  4234. * CALLS FCN, RSR.
  4235.  
  4236.  
  4237. GIS2 IAN CH READ INTERRUPT STATUS
  4238. GIS3 STML GISA
  4239. LDC F0711 NEGATE MASTER OUT
  4240. RJM FCN
  4241. LDN 20D READ SLAVE RESPONSE
  4242. RJM RSR
  4243. LDML GISA RETURN WITH (A) = STATUS
  4244.  
  4245. GIS SUBR ENTRY/EXIT
  4246. LDN 20D
  4247. ACN CH+40
  4248. GIS1 FJM GIS2,CH IF SLAVE IN
  4249. SBN 1
  4250. NJN GIS1 IF NOT TIMED OUT
  4251. * LDN 0
  4252. UJP GIS3 SET NULL STATUS
  4253.  
  4254.  
  4255. GISA CON 0
  4256. GSS SPACE 4,15
  4257. ** GSS - GET SLAVE STATUS.
  4258. *
  4259. * ENTRY (A) = 0 IF STATUS W/O MASTER TERMINATE.
  4260. * = MASTER TERMINATE OPTION.
  4261. * (T1) = RESIDUAL BYTE COUNT.
  4262. *
  4263. * EXIT (A) = (T7) = SLAVE STATUS IF TRANSFER SUCCESSFUL.
  4264. * (GSSA) = SLAVE STATUS AS READ FROM CONTROLLER.
  4265. *
  4266. * ERROR TO *ERR* IF STATUS ERROR.
  4267. *
  4268. * USES T7.
  4269. *
  4270. * CALLS FCN, RRP, RSR.
  4271.  
  4272.  
  4273. GSS5 LDML GSSA ENDING STATUS
  4274. STDL T7
  4275.  
  4276. GSS SUBR ENTRY/EXIT
  4277. SHN 10
  4278. ADC F8039 INDICATE TRANSFER SUCCESSFUL
  4279. RJM FCN
  4280. LDC 2000 READ SLAVE RESPONSE
  4281. RJM RSR
  4282. STML GSSA
  4283. SFM GSS3,CH IF ERROR FLAG SET
  4284. SHN 21-7
  4285. PJN GSS1 IF TRANSFER NOT SUCCESSFUL
  4286. LDD T1
  4287. ZJN GSS5 IF ALL WORDS TRANSFERRED
  4288. LDN EIDT
  4289. UJN GSS4 PROCESS ERROR
  4290.  
  4291. GSS1 SHN 10
  4292. LPC 117
  4293. LMN 3
  4294. NJN GSS2 IF NOT COMMAND REJECT
  4295.  
  4296. * IF CONTROLLER OVER TEMPERATURE OCCURS BEFORE THE COMMAND IS
  4297. * ISSUED, A COMMAND REJECT ERROR COULD OCCUR. A LOGICAL RESET
  4298. * WOULD CAUSE THE OVER TEMPERATURE STATUS TO BE LOST.
  4299.  
  4300. RJM RRP READ RESPONSE PACKET
  4301. LCN EUST
  4302. UJN GSS4 PROCESS ERROR
  4303.  
  4304. GSS2 LDN EUST
  4305. UJN GSS4 PROCESS ERROR
  4306.  
  4307. GSS3 LDN ECIE
  4308. GSS4 RJM ERR PROCESS ERROR
  4309.  
  4310.  
  4311. GSSA CON 0 ENDING STATUS
  4312. IHD SPACE 4,15
  4313. ** IHD - INTERRUPT HANDLER.
  4314. *
  4315. * ENTRY (DI) = *DSTB* ADDRESS.
  4316. * (DN) = DRIVE NUMBER.
  4317. *
  4318. * EXIT (A) = EXIT CONDITION FROM ROUTINE *VIS*.
  4319. * = 0 IF INTERRUPT FOR INACTIVE DRIVE.
  4320. * = RETURN ADDRESS TO PROCESSOR.
  4321. * (MS) = MAJOR STATUS FROM RESPONSE PACKET.
  4322. * (RT) = RESPONSE TYPE FROM STATUS BLOCK.
  4323. *
  4324. * USES DI, MS, RT, T4.
  4325. *
  4326. * CALLS CCO, DCM, LDP, LSD, RRP, SCM, VIS.
  4327.  
  4328.  
  4329. IHD4 LCN 0 INDICATE ASYNC INTERRUPT
  4330. IHD5 RJM VIS VERIFY INTERRUPT SOURCE
  4331.  
  4332. IHD SUBR ENTRY/EXIT
  4333. RJM SCM SELECT CONTROL MODULE
  4334. RJM RRP READ RESPONSE PACKET
  4335. LDML RPBF+MST
  4336. STDL MS SAVE MAJOR STATUS
  4337. SHN -4
  4338. LPN 17 EXTRACT RESPONSE TYPE
  4339. STD RT
  4340. LMN XFNT
  4341. ZJN IHD5 IF TRANSFER NOTIFICATION
  4342. RJM DCM DESELECT CONTROL MODULE
  4343. LDD RT CHECK RESPONSE TYPE
  4344. LMN ASRT
  4345. NJN IHD5 IF NOT ASYNC (UNSOLICITED) RESPONSE
  4346. LDM RPBF+CUN
  4347. LPC 377
  4348. STD T4 SAVE DRIVE NUMBER
  4349. LMC 0#FF
  4350. NJN IHD1 IF NOT RESPONSE FROM CONTROLLER
  4351. LDN 1 ISSUE BML MESSAGE IF OVER TEMPERATURE
  4352. RJM CCO CHECK FOR CONTROLLER OVER TEMPERATURE
  4353. LDM SRSA
  4354. ZJN IHD3 IF RESET NOT IN PROGRESS
  4355. STD DI SET DEVICE INDEX
  4356. RJM LDP
  4357. IHD0 LJM IHD4 PROCESS ASYNC INTERRUPT
  4358.  
  4359. * ON SLAVE RESET, IF DRIVE INTERRUPT FOR THE CONTROLLING DRIVE
  4360. * IS RECEIVED BEFORE THE CONTROLLER INTERRUPT, CLEAR *SRSC*
  4361. * AND DISCARD DRIVE INTERRUPT.
  4362.  
  4363. IHD1 LDD T4 CHECK FACILITY ADDRESS
  4364. LMD DN
  4365. ZJN IHD2 IF INTERRUPT FROM CURRENT DRIVE
  4366. RJM LSD LOCATE SELECTED DRIVE
  4367. ZJN IHD3 IF DRIVE UNKNOWN ON THIS CONTROLLER
  4368. STD DI SET DEVICE INDEX
  4369. RJM LDP
  4370. IHD2 LDM SRSA CHECK RESET IN PROGRESS
  4371. LMD DI
  4372. NJN IHD0 IF NOT DRIVE CONTROLLING RESET
  4373. STM SRSC INDICATE DRIVE INTERRUPT RECEIVED
  4374. IHD3 LJM XMD2 RETURN TO MAIN LOOP
  4375. RCR SPACE 4,10
  4376. ** RCR - RESET CHANNEL REGISTERS.
  4377. *
  4378. * ENTRY (CR) = CHANNEL RESERVATION STATUS.
  4379. *
  4380. * EXIT (SF) = 0 (DEVICE NOT SELECTED).
  4381. *
  4382. * CALLS FCN.
  4383. *
  4384. * MACROS WAIT.
  4385.  
  4386.  
  4387. RCR SUBR ENTRY/EXIT
  4388. LDD CR
  4389. ZJN RCRX IF CHANNEL NOT RESERVED
  4390. LDN F0000
  4391. RJM FCN MASTER CLEAR THE ADAPTOR
  4392. WAIT 100
  4393. * LDN 0 SET DEVICE NOT SELECTED
  4394. STD SF
  4395. ADK F0000-0 ENSURE NO SEQUENCE ERROR
  4396. RJM FCN
  4397. LDC F7E42 FIX CHANNEL TRANSFER RATE AT 10 MB
  4398. RJM FCN
  4399. UJN RCRX RETURN
  4400. RIF SPACE 4,15
  4401. ** RIF - RESET INTERFACE.
  4402. *
  4403. * ENTRY (RW) = 0 TO RESET SLAVE INTERFACE.
  4404. * (RW) = 1 TO RESET LOGICAL INTERFACE.
  4405. * (CN) = CONTROLLER NUMBER.
  4406. *
  4407. * EXIT (RF) = 1.
  4408. *
  4409. * USES RF.
  4410. *
  4411. * CALLS FCN, RCR, SAP.
  4412. *
  4413. * MACROS WAIT.
  4414.  
  4415.  
  4416. RIF SUBR ENTRY/EXIT
  4417. AOD RF FLAG RESET IN PROGRESS
  4418. RJM RCR RESET CHANNEL REGISTERS
  4419. RJM SAP SELECT ADAPTOR PORT
  4420. LDD CN
  4421. SHN 14 FORM RESET FUNCTION
  4422. LMML RIFA,RW
  4423. RJM FCN ISSUE LOGICAL RESET
  4424. WAIT 20
  4425. LDDL LF
  4426. LMN 2 SET SYNC OUT
  4427. RJM FCN
  4428. WAIT 10
  4429. LDDL LF NEGATE SYNC OUT
  4430. SCN 2
  4431. RJM FCN
  4432. LDDL LF CLEAR MASTER OUT
  4433. SCN 4
  4434. RJM FCN
  4435. UJP RIFX RETURN
  4436.  
  4437.  
  4438. RIFA BSS 0 RESET FUNCTION CODES
  4439. CONL F8415
  4440. CONL F8215
  4441. RRP SPACE 4,10
  4442. ** RRP - READ RESPONSE PACKET.
  4443. *
  4444. * USES T1.
  4445. *
  4446. * CALLS BCS, FCN, GSS.
  4447.  
  4448.  
  4449. RRP5 LDN 0 GET ENDING STATUS
  4450. RJM GSS
  4451.  
  4452. RRP SUBR ENTRY/EXIT
  4453. LDN RIIN
  4454. RJM BCS INITIATE BUS EXCHANGE (RESPONSE IN)
  4455. LDC F0281
  4456. RJM FCN READ STREAMING
  4457. ACN CH
  4458. LDN RPBFL TRANSFER RESPONSE PACKET
  4459. IAM RPBF,CH
  4460. STD T0 SAVE RESIDUE
  4461. SBN RPBFL-4
  4462. PJN RRP2 IF INVALID PACKET LENGTH
  4463. LDM RPBF+PLN
  4464. ADN 3 CONVERT OCTET COUNT TO BYTE COUNT
  4465. SHN -1
  4466. RAD T0
  4467. RRP2 LDK RPBFL COMPARE LENGTH WITH DATA READ
  4468. SBD T0
  4469. STD T1 SET RESIDUAL BYTE COUNT
  4470. LDC 50000D
  4471. RRP3 IJM RRP5,CH IF SLAVE IN
  4472. SBN 1
  4473. NJN RRP3 IF NOT TIMED OUT
  4474. LCN ECNR
  4475. RJM ERR PROCESS ERROR
  4476. RSR SPACE 4,10
  4477. ** RSR - READ SLAVE RESPONSE.
  4478. *
  4479. * ENTRY (A) = TIMEOUT VALUE (MICROSECONDS).
  4480. *
  4481. * EXIT (A) = SLAVE RESPONSE.
  4482. *
  4483. * ERROR TO *ERR* IF SLAVE NOT RESPONDING.
  4484.  
  4485.  
  4486. RSR4 IAN CH READ SLAVE RESPONSE
  4487.  
  4488. RSR SUBR ENTRY/EXIT
  4489. ACN CH
  4490. RSR1 FJM RSR4,CH IF SLAVE IN DROPPED
  4491. SBN 1
  4492. NJN RSR1 IF NOT TIMED OUT
  4493. LDN ECNR
  4494. RJM ERR PROCESS ERROR
  4495. RTR SPACE 4,10
  4496. ** RTR - READ *T* REGISTER.
  4497.  
  4498.  
  4499. RTR2 ACN CH ACTIVATE CHANNEL
  4500. LDN 3
  4501. IAM EDBF+TREG,CH INPUT REGISTER CONTENTS
  4502.  
  4503. RTR SUBR ENTRY/EXIT
  4504. FNC F0A00,CH
  4505. RTR1 IJM RTR2,CH IF FUNCTION ACCEPTED
  4506. SBN 77
  4507. PJN RTR1 IF NOT TIMED OUT
  4508. DCN CH+40
  4509. UJN RTRX RETURN
  4510. SAP SPACE 4,10
  4511. ** SAP - SELECT ADAPTOR PORT.
  4512. *
  4513. * CALLS FCN.
  4514.  
  4515.  
  4516. SAP SUBR ENTRY/EXIT
  4517. LDM PNUN,DI
  4518. SHN 0-11 ISOLATE PORT NUMBER
  4519. SHN 13-0
  4520. ERRNZ F0062+4000-F0862 CODE DEPENDS ON VALUE
  4521. ADC F0062
  4522. RJM FCN
  4523. UJN SAPX RETURN
  4524. SCM SPACE 4,10
  4525. ** SCM - SELECT CONTROL MODULE.
  4526. *
  4527. * ENTRY (SF) = 1 IF DEVICE PREVIOUSLY SELECTED.
  4528. * (CN) = CONTROLLER (CM3) NUMBER.
  4529. *
  4530. * EXIT (A) = (SF) = 1 = DEVICE SELECTED.
  4531. *
  4532. * ERROR TO *ERR* IF SELECT REJECT.
  4533. *
  4534. * CALLS DTM, FCN, RSR, SAP.
  4535.  
  4536.  
  4537. SCM3 AOD SF SET DEVICE SELECTED
  4538.  
  4539. SCM SUBR ENTRY/EXIT
  4540. LDD SF
  4541. NJN SCMX IF DEVICE PREVIOUSLY SELECTED
  4542. STM GSSA
  4543. RJM SAP SELECT ADAPTOR PORT
  4544. LDD CN
  4545. RJM DTM DETERMINE TRANSFER MODE
  4546. LMN F0029
  4547. RJM FCN SET SELECT OUT
  4548. LDN 77
  4549. RJM RSR READ SLAVE RESPONSE
  4550. LPML TMSK,CN
  4551. NJN SCM3 IF CORRECT CONTROLLER
  4552. LDN ETSL
  4553. RJM ERR PROCESS ERROR
  4554. WCB SPACE 4,15
  4555. ** WCB - WRITE COMMAND BLOCK (PACKET).
  4556. *
  4557. * ENTRY (A) = COMMAND BLOCK LENGTH.
  4558. * (DI) = DEVICE STATE TABLE ADDRESS.
  4559. * (TO) = TIMEOUT VALUE.
  4560. *
  4561. * ERROR TO *ERR*.
  4562. *
  4563. * USES T1.
  4564. *
  4565. * CALLS BCS, DCM, FCN, GSS, SCM, STO.
  4566.  
  4567.  
  4568. WCB3 LDN 0 GET STATUS
  4569. RJM GSS
  4570. RJM DCM DESELECT CONTROL MODULE
  4571. LDD TO
  4572. RJM STO SET TIMEOUT
  4573.  
  4574. WCB SUBR ENTRY/EXIT
  4575. STM CPBF+PLN
  4576. LDD DI SET COMMAND REFERENCE NUMBER
  4577. STM CPBF+CRN
  4578. RJM SCM SELECT CONTROL MODULE
  4579. LDN CIOT
  4580. RJM BCS INITIATE BUS EXCHANGE (COMMAND OUT)
  4581. LDML CPBF+OPC
  4582. STML LCMD,DI SAVE LAST COMMAND
  4583. LDC F0381
  4584. RJM FCN WRITE STREAMING
  4585. ACN CH
  4586. LDM CPBF+PLN CONVERT OCTET COUNT TO BYTE COUNT
  4587. ADN 3
  4588. SHN -1 TRANSFER COMMAND PACKET
  4589. OAM CPBF,CH
  4590. STD T1 SAVE RESIDUAL BYTE COUNT
  4591. LDC 50000D
  4592. WCB2 IJM WCB3,CH IF SLAVE IN
  4593. SBN 1
  4594. NJN WCB2 IF NOT TIMED OUT
  4595. LDN ECNR
  4596. RJM ERR PROCESS ERROR
  4597. WTR SPACE 4,10
  4598. ** WTR - WRITE *T* PRIME REGISTER.
  4599. *
  4600. * ENTRY (CB) = *CBT* ORDINAL.
  4601. * (RW) = READ / WRITE STATUS.
  4602. *
  4603. * CALLS FCN, STO, SLB, SUA, WTC.
  4604.  
  4605.  
  4606. WTR SUBR ENTRY/EXIT
  4607. LDD RW
  4608. ZJN WTR1 IF READ REQUEST
  4609. LDD CB
  4610. RJM SLB SET LINKAGE BITS
  4611. WTR1 LDD CB
  4612. RJM SUA GET UEM BUFFER ADDRESS
  4613. LDD UA+1
  4614. SHN 11 FORMAT ADDRESS
  4615. SCN 7
  4616. STML WTRA+2 SET ABSOLUTE ADDRESS
  4617. LDD UA
  4618. SHN 14 COMPLETE BUFFER ADDRESS
  4619. LMD UA+1
  4620. SHN 11-20 INSERT IN REGISTER IMAGE
  4621. STM WTRA+1
  4622. LDML WTRB,RW ISSUE DMA FUNCTION
  4623. RJM FCN
  4624. LDN 3 SET BLOCK LENGTH
  4625. ACN CH
  4626. OAM WTRA,CH OUTPUT BUFFER PARAMETERS
  4627. RJM WTC
  4628. LDN 3 SET REQUEST TIMEOUT
  4629. RJM STO
  4630. UJP WTRX RETURN
  4631.  
  4632.  
  4633. WTRA BSS 0 *T* REGISTER BUFFER
  4634. CONL 40000 BYTE LENGTH OF I/O TRANSFER
  4635. CONL 0,0 UEM ADDRESS OF BUFFER
  4636.  
  4637. WTRB BSS 0 DMA I/O FUNCTIONS
  4638. CONL F0C00
  4639. CONL F0D00
  4640. TITLE MISCELLANEOUS.
  4641. SPACE 4,10
  4642. * COMMON DECKS.
  4643.  
  4644.  
  4645. *CALL COMPCHD
  4646. *CALL COMPC2D
  4647. RND$ EQU 0 DEFINE ROUNDING FOR *COMPDV5*
  4648. *CALL COMPDV5
  4649. M8K$ EQU 1 USE LONG INSTRUCTIONS
  4650. *CALL COMPIMB
  4651. QUAL SES
  4652. QUAL$ EQU 0 DONT FURTHER QUALIFY *SES*
  4653. T5 EQU EO
  4654. *CALL COMPSES
  4655. QUAL *
  4656. SES EQU /SES/SES
  4657. SPACE 4,10
  4658. * BUFFERS.
  4659.  
  4660.  
  4661. RPBF BSS 0 RESPONSE PACKET BUFFER
  4662.  
  4663. CPBF EQU RPBF+1 COMMAND PACKET BUFFER
  4664.  
  4665. RBUF EQU RPBF+RPBFL REGISTER BUFFER
  4666. RBUFL EQU 2*4
  4667.  
  4668. SBUF EQU RBUF+RBUFL SCRATCH BUFFER
  4669. SBUFL EQU 3*5
  4670. SPACE 4,10
  4671. EDBF EQU 20000-400-RTEDL ERROR DATA BUFFER
  4672. ERRNG 400-EDBFL+RTEDL CODE DEPENDS ON VALUE
  4673. ERRPL SBUF+SBUFL-EDBF BUFFER OVERLAP
  4674.  
  4675. MSGP EQU EDBF+EMBF MESSAGE PREFIX
  4676. MSGL EQU MSGP+2 MESSAGE LENGTH
  4677. MSGT EQU MSGL+2 MESSAGE TYPE
  4678.  
  4679. BMLM EQU MSGT+1 BML MESSAGE HEADER
  4680. MSID EQU BMLM MESSAGE ID
  4681. UNIT EQU MSID+3 UNIT NUMBER
  4682. PORT EQU UNIT+1 PORT NUMBER
  4683. ESTO EQU PORT+1 EST ORDINAL
  4684. MISC EQU ESTO+1 RETRY COUNT / WRITE + RECOVERY FLAGS
  4685. MFID EQU MISC+2 MAINFRAME ID
  4686. TITLE INSTRUCTION MODIFICATION TABLES.
  4687. TCHA SPACE 4,10
  4688. ** TABLE OF CHANNEL INSTRUCTIONS ADDRESSES.
  4689.  
  4690.  
  4691. TCHA CHTB
  4692. CON 0 END OF TABLE
  4693.  
  4694. RSTC RESTORE CHANNEL INSTRUCTIONS
  4695. TCBT SPACE 4,10
  4696. ** TABLE OF INSTRUCTIONS REQUIRING FWA OF *CBT*.
  4697.  
  4698.  
  4699. TCBT BSS 0
  4700. TCBT HERE
  4701. CON 0 TERMINATE TABLE
  4702. TCCT SPACE 4,10
  4703. ** TABLE OF INSTRUCTIONS REQUIRING ADDRESS OF *CCT* ENTRY.
  4704.  
  4705.  
  4706. TCCT BSS 0
  4707. TCCT HERE
  4708. CON 0 TERMINATE TABLE
  4709. TCHT SPACE 4,10
  4710. ** TABLE OF INSTRUCTIONS REQUIRING FWA OF CHANNEL TABLE.
  4711.  
  4712.  
  4713. TCHT BSS 0
  4714. TCHT HERE
  4715. CON 0 TERMINATE TABLE
  4716. TEMB SPACE 4,10
  4717. ** TABLE OF INSTRUCTIONS REQUIRING FWA OF *EMB*.
  4718.  
  4719.  
  4720. TEMB BSS 0
  4721. QUAL COMPIMB
  4722. TEMB HERE
  4723. QUAL *
  4724. CON 0 TERMINATE TABLE
  4725. TEXP SPACE 4,10
  4726. ** TABLE OF INSTRUCTIONS REQUIRING FWA OF PP EXCHANGE PACKAGE.
  4727.  
  4728.  
  4729. TEXP BSS 0
  4730. TEXP HERE
  4731. CON 0 TERMINATE TABLE
  4732. TPUT SPACE 4,10
  4733. ** TABLE OF INSTRUCTIONS REQUIRING FWA OF *PUT*.
  4734.  
  4735.  
  4736. TPUT BSS 0
  4737. TPUT HERE
  4738. CON 0 TERMINATE TABLE
  4739. TITLE PRESET.
  4740. PRS SPACE 4,20
  4741. ** PRS - PRESET DRIVER FOR PROCESSING.
  4742. *
  4743. * EXIT (UC) = 0.
  4744. * TO *MRS*.
  4745. * TO *XMD8* IF CHANNEL DOWN OR NO DEVICES FOR DRIVER.
  4746. *
  4747. * CALLS CCP, CCR2, IST, MCI, SCT, SPA, STA.
  4748.  
  4749.  
  4750. PRS BSS 0 ENTRY
  4751. RJM CCP CHECK CALLING PROGRAM
  4752. * LDN 0
  4753. STD UC SET NO UNITS RESERVED
  4754. LDC EDBF
  4755. ERRPL ENDD-EDBF CODE DEPENDS ON VALUE
  4756. STDL T4
  4757. RJM MCI MODIFY CHANNEL INSTRUCTIONS
  4758. * LDN 0
  4759. STD CR SET CHANNEL NOT RESERVED
  4760.  
  4761. * PRESET BML ERROR MESSAGE BUFFER.
  4762.  
  4763. PRS1 STI T4
  4764. AODL T4 ADVANCE BUFFER ADDRESS
  4765. SHN 0-15
  4766. ZJN PRS1 IF NOT END OF BUFFER
  4767. LDN MLDY
  4768. STM MSGT
  4769. LDC BMID ERROR MESSAGE ID
  4770. STM MSID
  4771. RJM SPA SET PP EXCHANGE PACKAGE ADDRESSES
  4772. RJM SCT SET CHANNEL TABLE ADDRESSES
  4773. LDK BIOL
  4774. CRD CM READ BUFFERED I/O POINTERS
  4775. LDD CM+1
  4776. SHN 14
  4777. LMD CM+2
  4778. ADN CCTP READ *CCT* POINTER
  4779. CRD T4
  4780. ADN CBTP-CCTP READ *CBT* POINTER
  4781. CRD WB
  4782. SBN -PUTP+CBTP READ *PUT* POINTER
  4783. CRD T2
  4784. LDD T2+3 SET ADDRESS OF *PUT*
  4785. LPN 77
  4786. RAM ISTA
  4787. LDD T2+4
  4788. RAM ISTA+1
  4789. AOD T2 SET NUMBER OF *PUT* ENTRIES
  4790. STD RC
  4791. LDC T5*20000+TPUT SET *PUT* ADDRESSES
  4792. RJM STA
  4793. LDD IR+2 ADJUST CHANNEL CONTROL TABLE POINTER
  4794. SHN CCTLS-6
  4795. RAD CM
  4796. SHN -14
  4797. RAD T7
  4798. LDC T7*20000+TCCT SET *CCT* ADDRESSES
  4799. RJM STA
  4800. .WB3 EQU WB+3
  4801. LDC .WB3*20000+TCBT SET *CBT* ADDRESSES
  4802. RJM STA
  4803. LDN EMBP FETCH *EMB* POINTER
  4804. CRD CM
  4805. .CM1 EQU CM+1
  4806. LDC .CM1*20000+TEMB SET *EMB* ADDRESSES
  4807. RJM STA
  4808. LDK UEML
  4809. CRD CM READ UEM POINTERS
  4810. LDD CM
  4811. PRSA SHN 11
  4812. * SHN 11+EMSC
  4813. SCN 77
  4814. STM SUAA SET FWA OF UEM
  4815. LDD CM
  4816. PRSB SHN -3
  4817. * SHN EMSC-3
  4818. STM SUAB
  4819. LDK MMFL FETCH MACHINE ID
  4820. CRD CM
  4821. LDD CM SET MAINFRAME ID FOR BML MESSAGES
  4822. STM MFID
  4823. RJM IST INITIALIZE DEVICE STATE TABLE
  4824. ZJN PRS4 IF NO DEVICES FOR THIS DRIVER
  4825. LJM CCR2 RESERVE CHANNEL (RETURN TO *PRS3*)
  4826.  
  4827. PRS3 NJP MRS IF CHANNEL NOT DOWN
  4828. PRS4 LJM XMD8 DROP CPP
  4829. TITLE PRESET SUBROUTINES.
  4830. CCP SPACE 4,10
  4831. ** CCP - CHECK CALLING PROGRAM.
  4832. *
  4833. * EXIT (A) = 0.
  4834. *
  4835. * USES CM - CM+4.
  4836. *
  4837. * CALLS DFM.
  4838. *
  4839. * MACROS MONITOR.
  4840.  
  4841.  
  4842. CCP SUBR ENTRY/EXIT
  4843. LDK NCPL
  4844. CRD CM GET NUMBER OF CONTROL POINTS
  4845. AOD CM+1
  4846. SHN 7
  4847. LMD CP
  4848. ZJN CCPX IF DRIVER AT SYSTEM CP
  4849. LDC MSG1
  4850. RJM DFM ISSUE DAYFILE MESSAGE
  4851. MONITOR ABTM
  4852. LJM PPR EXIT TO PP RESIDENT
  4853. IST SPACE 4,15
  4854. ** IST - INITIALIZE DEVICE STATE TABLE.
  4855. *
  4856. * ENTRY (RC) = NUMBER OF *PUT* ENTRIES.
  4857. *
  4858. * EXIT (A) = 0 IF NO DEVICES FOR THIS DRIVER.
  4859. * (DI) = DEVICE INDEX FOR FIRST DEVICE, IF PRESENT.
  4860. * DEVICE PARAMETERS SET FOR FIRST DEVICE, IF PRESENT.
  4861. *
  4862. * USES DI, TA, T5, CM - CM+4, WB - WB+4.
  4863. *
  4864. * CALLS LDP.
  4865. *
  4866. * MACROS SFA.
  4867.  
  4868.  
  4869. IST7 LDD DI DEFINE END OF DEVICES
  4870. STM XMDA
  4871. LMC DSTB SET EXIT CONDITION
  4872. ZJN ISTX IF NO DEVICES FOR THIS DRIVER
  4873. LDC DSTB SET DEVICE INDEX FOR FIRST DEVICE
  4874. STD DI
  4875. STD TA
  4876. RJM LDP LOAD DEVICE PARAMETERS
  4877.  
  4878. IST SUBR ENTRY/EXIT
  4879. LDC OCMD-1
  4880. STD DI
  4881. IST1 LDN 0 CLEAR DEVICE STATE TABLE
  4882. STI DI
  4883. SOD DI
  4884. LMC DSTB
  4885. NJN IST1 IF MORE TO CLEAR
  4886. * LDN 0
  4887. STD T5 INITIALIZE *PUT* ORDINAL
  4888. IST2 AOD T5
  4889. LMD RC
  4890. ZJN IST7 IF END OF PHYSICAL UNIT TABLE
  4891. LDD T5
  4892. SHN PUTLS READ *PUT* ENTRY
  4893. ISTA ADC UNCT+** GET UNIT CONTROL WORD
  4894. CRD WB
  4895. SFA EST,WB+1 FETCH EST ENTRY
  4896. ADK EQDE
  4897. CRD CM
  4898. LDN CM INITIALIZE CHANNEL BYTE ADDRESS
  4899. STD CM
  4900. IST3 AOD CM ADVANCE PATH DESCRIPTOR ADDRESS
  4901. LMN CM+3
  4902. ZJN IST2 IF TWO POSSIBLE CHANNELS CHECKED
  4903. LDI CM
  4904. ZJN IST3 IF NULL ACCESS
  4905. LMD IR+4
  4906. LPN 77
  4907. NJN IST3 IF NOT THIS DRIVERS CHANNEL
  4908. LDD T5 SET *PUT* ORDINAL IN STATE TABLE
  4909. STI DI
  4910. ERRNZ PUTO CODE DEPENDS ON VALUE
  4911. LDC 1S14+1S13 SET INTERNAL SPECIAL REQUEST FLAGS
  4912. STML IPPS,DI
  4913. LDI CM
  4914. LPC 200 SET PORT NUMBER
  4915. SHN 11-7
  4916. STM PNUN,DI
  4917. LDD WB GET CONTROLLER AND UNIT NUMBERS
  4918. LPC 777
  4919. RAM PNUN,DI APPEND TO PORT NUMBER
  4920. SHN -6
  4921. STD WB+4 SET *CSTB* INDEX
  4922. LDM CSTB,WB+4
  4923. NJN IST5 IF CONTROLLER IDENTIFIED
  4924. LDD DI
  4925. LMC 1S14 RESET FLAG + FIRST *PUT* ORDINAL
  4926. STML CSTB,WB+4
  4927. IST5 LDN DSTBE
  4928. RAD DI ADVANCE STATE TABLE ADDRESS
  4929. LMC DSTBL
  4930. NJP IST2 IF DEVICE TABLE NOT FULL
  4931. LJM IST7 SET INITIAL STATE TABLE ADDRESS
  4932. MCI SPACE 4,10
  4933. ** MCI - MODIFY CHANNEL INSTRUCTIONS.
  4934. *
  4935. * ENTRY (IR+4) = CONCURRENT CHANNEL NUMBER.
  4936. *
  4937. * EXIT (A) = 0.
  4938. *
  4939. * USES T1, T2, T3.
  4940. *
  4941. * CALLS C2D.
  4942.  
  4943.  
  4944. MCI1 LDD T3
  4945. SBN CH
  4946. RAIL T2 MODIFY CHANNEL INSTRUCTION
  4947. AOD T1
  4948. MCI2 LDML TCHA,T1 EXTRACT CHANNEL NUMBER
  4949. STDL T2
  4950. NJN MCI1 IF MORE INSTRUCTIONS TO MODIFY
  4951.  
  4952. MCI SUBR ENTRY/EXIT
  4953. LDD IR+4
  4954. LPN 37 EXTRACT CHANNEL NUMBER
  4955. STD T3
  4956. RJM C2D CONVERT FOR OPERATOR MESSAGES
  4957. STM SRSH+14
  4958. STM SRSG+13
  4959. LDN 0 INITIALIZE REMOTE TABLE INDEX
  4960. STD T1
  4961. UJN MCI2 ENTER LOOP
  4962. MRS SPACE 4,10
  4963. ** MRS - MASTER RESET SLAVES.
  4964. *
  4965. * EXIT TO *XMD4*.
  4966. *
  4967. * USES T1.
  4968. *
  4969. * CALLS FCN, RCR.
  4970. *
  4971. * MACROS WAIT.
  4972.  
  4973.  
  4974. MRS BSS 0 ENTRY
  4975. RJM RCR MASTER CLEAR CHANNEL
  4976. LDN 1
  4977. STD T1
  4978. SHN 13-0 POSITION PORT NUMBER
  4979. MRS2 LMC F0062
  4980. RJM FCN SELECT ADAPTOR PORT
  4981. LDC F9213
  4982. RJM FCN ISSUE MASTER RESET
  4983. WAIT 10
  4984. LDDL LF LAST FUNCTION
  4985. SCN 2
  4986. RJM FCN CLEAR SYNC OUT
  4987. SOD T1
  4988. ZJN MRS2 IF ANOTHER PORT TO PROCESS
  4989. LJM XMD4 ENTER MAIN LOOP
  4990. SCT SPACE 4,10
  4991. ** SCT - SET CHANNEL TABLE ENTRY ADDRESSES.
  4992. *
  4993. * ENTRY (IR+4) = CHANNEL NUMBER.
  4994. *
  4995. * USES T1, T2, CM - CM+4.
  4996. *
  4997. * CALLS C2D, STA.
  4998.  
  4999.  
  5000. SCT SUBR ENTRY/EXIT
  5001. LDD IR+4
  5002. STD T1 SET CHANNEL NUMBER
  5003. STM RCSA+3
  5004. RAM BMLM+2
  5005. RJM C2D CONVERT FOR ERROR MESSAGE
  5006. STM LDAA+6
  5007. LCN 0 WORD OFFSET
  5008. STD T2
  5009. SCT1 AOD T2 INCREMENT WORD OFFSET
  5010. LCN 5
  5011. RAD T1
  5012. PJN SCT1 IF CHANNEL NOT IN THIS WORD
  5013. ADN 5
  5014. STD T1
  5015. RAM RCTA SET BYTE OFFSET
  5016. LDD T1
  5017. SHN 1 BYTE OFFSET * 2
  5018. ADD T1 BYTE OFFSET * 3
  5019. SHN 2 BYTE OFFSET * 12
  5020. SBN 59D (BYTE OFFSET * 12) - 59
  5021. LMC -0 59 - (BYTE OFFSET * 12)
  5022. SBN 2
  5023. SHN 6
  5024. STM SRFA+1 SET DRIVER FLAG BIT POSITION
  5025. LDK CHTP
  5026. CRD CM
  5027. LDD T2 SET ADDRESS OF WORD IN CHANNEL TABLE
  5028. RAD CM+3
  5029. SHN -14
  5030. RAD CM+2
  5031. .CM2 EQU CM+2
  5032. LDC .CM2*20000+TCHT SET CHANNEL TABLE ADDRESSES
  5033. RJM STA
  5034. LJM SCTX RETURN
  5035. SPA SPACE 4,10
  5036. ** SPA - SET PP EXCHANGE PACKAGE ADDRESSES.
  5037. *
  5038. * USES T1 - T5, CM - CM+4.
  5039. *
  5040. * CALLS STA.
  5041.  
  5042.  
  5043. SPA SUBR ENTRY/EXIT
  5044. LDN PXPP
  5045. CRD CM FETCH FWA OF PP EXCHANGE PACKAGE AREA
  5046. ADN 1
  5047. CRM AMEA,ON SET FIRST WORD OF PP EXCHANGE PACKAGE
  5048. ADN PPCP-PXPP-2
  5049. CRD T1 READ PP COMMUNICATION AREA POINTER
  5050. LDD IA
  5051. STM AMEA+4 SET (B0) NON-ZERO FOR EXCHANGE TEST
  5052. SBD T1+4
  5053. SHN -3 (A) = CPP NUMBER
  5054. SBN 24
  5055. SHN 6
  5056. STM BMLM+2 INSERT CPP NUMBER IN BML MESSAGE
  5057. SHN -6
  5058. ADN 24-2
  5059. STD T1 CPP NUMBER - 2
  5060. SHN 4
  5061. ADD T1 (CPP NUMBER - 2) * 21B
  5062. RAD CM+4
  5063. SHN -14
  5064. RAD CM+3
  5065. .CM3 EQU CM+3
  5066. LDC .CM3*20000+TEXP SET EXCHANGE PACKAGE ADDRESSES
  5067. RJM STA
  5068. LJM SPAX RETURN
  5069. STA SPACE 4,10
  5070. ** STA - SET TABLE ADDRESSES.
  5071. *
  5072. * ENTRY (A) = 5/ TP, 13/ TA
  5073. * TP = TABLE POINTER.
  5074. * TA = INSTRUCTION TABLE ADDRESS.
  5075. *
  5076. * EXIT (A) = 0.
  5077. *
  5078. * USES T1, T2, T3.
  5079.  
  5080.  
  5081. STA1 STDL T2 SET INSTRUCTION ADDRESS
  5082. LDM 1,T1
  5083. RAM 1,T2 SET LOWER 12 BITS OF ADDRESS
  5084. SHN -14
  5085. ADI T1 SET UPPER 6 BITS OF ADDRESS
  5086. LPN 37
  5087. RAI T2
  5088. AODL T3 ADVANCE INSTRUCTION LIST
  5089. STA2 LDIL T3
  5090. NJN STA1 IF NOT END OF TABLE
  5091.  
  5092. STA SUBR ENTRY/EXIT
  5093. STDL T3
  5094. SHN -15 SET POINTER ADDRESS
  5095. STD T1
  5096. LDDL T3 SET INSTRUCTION TABLE ADDRESS
  5097. LPC 17777
  5098. STDL T3
  5099. UJN STA2 ENTER LOOP
  5100.  
  5101.  
  5102. ENDD BSS 0 END OF DRIVER
  5103. OVERFLOW OCMD,20000
  5104.  
  5105. END
cdc/nos2.source/opl871/1xd.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator