User Tools

Site Tools


cdc:nos2.source:opl871:1hy

Table of Contents

1HY

Table Of Contents

  • [00002] 1HY - HYDRA (887) DRIVER.
  • [00009] HYDRA (887) DRIVER.
  • [00168] CONSTANTS AND DEFINITIONS.
  • [00437] MACROS.
  • [00441] TBLM - CREATE TABLE ENTRY MACRO.
  • [00464] CBTE - CONTROL BUFFER TABLE ENTRY.
  • [00479] CCTE - CHANNEL CONTROL TABLE ENTRY.
  • [00494] CHTE - CHANNEL TABLE ENTRY.
  • [00509] EMBE - ERROR MESSAGE TABLE ENTRY.
  • [00524] EXPE - EXCHANGE PACKAGE ADDRESS ENTRY.
  • [00539] FTTE - FUNCTION TIMEOUT TABLE ENTRY.
  • [00554] PUTE - PHYSICAL UNIT TABLE ENTRY.
  • [00568] MAIN PROGRAM.
  • [00570] HYD - MAIN PROGRAM.
  • [00615] READ / WRITE PROCESSING.
  • [00617] PIO - READ / WRITE PROCESSING.
  • [00706] DOCUMENT UNIT CHARACTERISTICS.
  • [00708] DUC - DAYFILE UNIT CHARACTERISTICS.
  • [00758] LOG *IHD* ERRORS.
  • [00760] LGE - LOG *IHD* ERRORS.
  • [00874] LOAD OPERATING PARAMETERS.
  • [00876] LOP - LOAD OPERATING PARAMETERS.
  • [00917] DIAGNOSTIC PROCESSING.
  • [00919] RND - RUN DIAGNOSTICS.
  • [00985] SPIN-DOWN PROCESSING.
  • [00987] SPD - SPIN DOWN DRIVE.
  • [01003] SPIN-UP PROCESSING.
  • [01005] SPU - SPIN UP DRIVE.
  • [01075] SELECTIVE RESET PROCESSING.
  • [01077] SRS - PROCESS SELECTIVE RESET.
  • [01109] SUBROUTINES.
  • [01111] ACE - ANALYZE CHANNEL ERROR.
  • [01136] AME - ATTEMPT MONITOR EXCHANGE.
  • [01170] AMR - ACCESS MAINTENANCE REGISTER.
  • [01211] ATT - PROCESS ATTENTION.
  • [01251] CCR - CHECK FOR CHANNEL REQUEST.
  • [01293] CFE - CHECK FOR I/O ERROR.
  • [01322] CFR - CHECK *PUT* FOR REQUEST.
  • [01412] CMC - CHECK MONITOR COMPLETE.
  • [01439] CMP - COMPLETE PROCESSING.
  • [01493] COS - CHECK OPERATIONAL STATUS.
  • [01566] CSD - CONNECT TO SLAVE DEVICE.
  • [01639] CSR - CLEAR SPECIAL REQUEST.
  • [01652] CTO - CHECK TIMEOUT.
  • [01679] DCB - DELINK CONTROL BUFFERS.
  • [01747] EIO - ENTER I/O REQUEST QUEUE.
  • [01783] ERR - PROCESS ERRORS.
  • [02085] FCN - ISSUE FUNCTION.
  • [02113] GDS - GET DEVICE STATUS.
  • [02129] GSS - GET SLAVE STATUS.
  • [02174] IBM - ISSUE BML MESSAGE.
  • [02264] IEM - ISSUE BML ERROR MESSAGE.
  • [02288] IIO - INITIATE I/O.
  • [02347] IMR - INITIATE MONITOR REQUEST.
  • [02374] IOM - ISSUE OPERATOR MESSAGE.
  • [02406] ISF - ISSUE *SEQM* FUNCTION.
  • [02434] ISR - IDENTIFY SPECIAL REQUEST.
  • [02472] PEF - PROCESS ERROR FLAGS.
  • [02547] RBD - READ BUFFERED DISK.
  • [02569] RCR - RESET CHANNEL REGISTERS.
  • [02584] RCS - REMOVE CHANNEL FROM SYSTEM USE.
  • [02612] RCT - READ CHANNEL TABLE.
  • [02628] RLB - READ LINKAGE BITS.
  • [02671] R1B - READ ONE BYTE.
  • [02690] SAP - SELECT ADAPTOR PORT.
  • [02705] SCD - STORE *CPD* DATA.
  • [02727] SEC - SET ERROR CODE.
  • [02761] SFR - SEARCH FOR CONSECUTIVE REQUEST.
  • [02837] SLB - SET LINKAGE BITS.
  • [02890] SRF - SET DRIVER RELOAD FLAG.
  • [02922] SSD - SELECT SLAVE DEVICE.
  • [02967] STF - REQUEST TRACK FLAW.
  • [03034] STO - SET TIMEOUT.
  • [03063] SUA - SET UEM ADDRESS.
  • [03093] SUI - SET UNIT INTERLOCK.
  • [03122] TMSE - TABLE OF MASS STORAGE ERROR CODES.
  • [03144] TMSK - TABLE OF UNIT MASKS.
  • [03162] UEC - UPDATE MST ERROR COUNT.
  • [03188] UHD - UNPACK HEX DATA.
  • [03249] WBD - WRITE BUFFERED DISK.
  • [03272] WCB - WRITE COMMAND BLOCK.
  • [03318] WFC - WRITE FUNCTION WORD AND CLEAR.
  • [03331] WFW - WRITE FUNCTION WORD.
  • [03353] WLB - WRITE LINKAGE BITS.
  • [03395] WMC - WAIT MAINTENANCE CHANNEL EMPTY.
  • [03432] WTC - WAIT TRANSMISSION COMPLETE.
  • [03461] WTR - WRITE *T* REGISTER.
  • [03495] MISCELLANEOUS.
  • [03537] PRESET ROUTINES.
  • [03539] CCP - CHECK CALLING PROGRAM.
  • [03565] IST - INITIALIZE DEVICE STATE TABLE.
  • [03624] MCI - MODIFY CHANNEL INSTRUCTIONS.
  • [03709] PRS - PRESET *1HY* FOR PROCESSING.
  • [03784] SCT - SET CHANNEL TABLE ENTRY ADDRESSES.
  • [03829] SPA - SET PP EXCHANGE PACKAGE ADDRESSES.
  • [03863] STA - SET TABLE ADDRESSES.

Source Code

1HY.txt
  1. IDENT 1HY,HYDD
  2. TITLE 1HY - HYDRA (887) DRIVER.
  3. CIPPU ,S
  4. BASE M
  5. SST
  6. *COMMENT 1HY - HYDRA (887) DRIVER.
  7. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  8. SPACE 4,10
  9. *** 1HY - HYDRA (887) DRIVER.
  10. *
  11. * P. D. HAAS. 85/12/16.
  12. SPACE 4,10
  13. *** *1HY* IS THE DRIVER FOR THE 887 DISK STORAGE SUBSYSTEM.
  14. *
  15. * THE 887 DISK DRIVES ARE SUPPORTED AS BUFFERED I/O
  16. * DEVICES. REQUESTS THAT ARE PROCESSED BY *1HY* ARE
  17. * POSTED BY *CPUMTR* IN THE BUFFERED I/O TABLES IN *CMR*.
  18. * *1HY* INTERLOCKS UNITS, DELINKS BUFFERS, AND COMPLETES
  19. * SAID REQUESTS BY ISSUING APPROPRIATE *BIOM* FUNCTIONS.
  20. *
  21. * EACH COPY OF *1HY* WILL SUPPORT ONE CONCURRENT CHANNEL AND
  22. * IS THE SOLE DRIVER FOR ALL HYDRA DISKS ON THAT CHANNEL.
  23. * *1HY* MUST BE LOADED INTO A CONCURRENT PP, IN THE SAME
  24. * BANK AS THE CHANNEL IT IS TO SERVICE.
  25. *
  26. * *1HY* SCANS THROUGH THE *PUT* ENTRIES IN A CIRCULAR FASHION
  27. * LOOKING FOR REQUESTS TO PROCESS. ONCE A REQUEST IS FOUND,
  28. * *1HY* USES THE PHYSICAL DISK AND UEM ADDRESSES IN THE
  29. * CORRESPONDING *CBT* ENTRY TO DETERMINE THE ACTION TO BE
  30. * TAKEN. *1HY* WILL ATTEMPT TO PROCESS CONSECUTIVE REQUESTS
  31. * ON THE CURRENT UNIT UNTIL THE END OF THE UNIT I/O QUEUE,
  32. * OR A CONSECUTIVE REQUEST WAS NOT FOUND. AT THIS POINT
  33. * *1HY* WILL RESUME ITS SEARCH THROUGH THE *PUT* WITH THE
  34. * *PUT* ENTRY IMMEDIATELY FOLLOWING THE ONE JUST PROCESSED.
  35. SPACE 4,10
  36. *** CALL.
  37. *
  38. *T 18/ *1HY*, 6/ CP, 6/ CO, 18/, 7/ 1, 5/ CH
  39. *
  40. * CP CONTROL POINT NUMBER (MUST BE SYSTEM CP).
  41. * CO CHANNEL TABLE ORDINAL (SET BY *CPUMTR*).
  42. * CH CHANNEL NUMBER BEING SERVICED BY THIS PP.
  43. SPACE 4,10
  44. *** DAYFILE MESSAGES.
  45. *
  46. * 1HY - UNAUTHORIZED CALL.
  47. *
  48. * *1HY* WILL ISSUE THIS MESSAGE AND ABORT IF
  49. * NOT ASSIGNED TO THE SYSTEM CONTROL POINT.
  50. SPACE 4,10
  51. *** ERRLOG MESSAGES.
  52. *
  53. * EQORD,TKNNNN, MEDIA DEFECT ENCOUNTERED.
  54. *
  55. * A MEDIA DEFECT HAS BEEN ENCOUNTERED ON EQUIPMENT WITH EST
  56. * ORDINAL ORD, LOGICAL TRACK NNNN. A REQUEST HAS BEEN ISSUED
  57. * TO AUTOMATICALLY FLAW THIS TRACK WHEN IT IS DROPPED.
  58. SPACE 4,10
  59. *** OPERATOR MESSAGES.
  60. *
  61. * EQORD, DIAGNOSTICS RUNNING.
  62. *
  63. * EQORD, SPIN UP PENDING.
  64. SPACE 4,10
  65. *** ORGANIZATION OF THE 887 (MEASUREMENTS IN DECIMAL).
  66. *
  67. * EQUIPMENT TYPE *DF*
  68. *
  69. * UNITS/LOGICAL DEVICE (N) 1 - 3
  70. *
  71. * PHYSICAL ORGANIZATION:
  72. *
  73. * WORDS/PHYSICAL SECTOR 512
  74. * PHYSICAL SECTORS/TRACK 38
  75. * PHYSICAL TRACKS/CYLINDER 4
  76. * CYLINDERS/DEVICE 884 * N
  77. * WORDS/DEVICE 68,796,416 * N
  78. *
  79. * LOGICAL ORGANIZATION:
  80. *
  81. * WORDS/LOGICAL SECTOR 64
  82. * LOGICAL SECTORS/PHYSICAL SECTOR 8
  83. * LOGICAL SECTORS/LOGICAL TRACK 608 * N
  84. * LOGICAL TRACKS/CYLINDER 2
  85. * LOGICAL TRACKS/DEVICE 1768
  86. *
  87. * MAXIMUM SUSTAINED DATA RATE 983 K WORDS/SECOND
  88. *
  89. *
  90. * EQUIPMENT TYPE *DH*
  91. *
  92. * UNITS/LOGICAL DEVICE (N) 1 - 2
  93. *
  94. * PHYSICAL ORGANIZATION:
  95. *
  96. * WORDS/PHYSICAL SECTOR 2048
  97. * PHYSICAL SECTORS/TRACK 11
  98. * PHYSICAL TRACKS/CYLINDER 4
  99. * CYLINDERS/DEVICE 884 * N
  100. * WORDS/DEVICE 79,659,008 * N
  101. *
  102. * LOGICAL ORGANIZATION:
  103. *
  104. * WORDS/LOGICAL SECTOR 64
  105. * LOGICAL SECTORS/PHYSICAL SECTOR 32
  106. * LOGICAL SECTORS/LOGICAL TRACK 704 * N
  107. * LOGICAL TRACKS/CYLINDER 2
  108. * LOGICAL TRACKS/DEVICE 1768
  109. *
  110. * MAXIMUM SUSTAINED DATA RATE 1122 K WORDS/SECOND
  111. SPACE 4,10
  112. *** DISK ERROR PROCESSING DONE BY *1HY*.
  113. *
  114. * FOR EACH REQUEST THAT IS PROCESSED, *1HY* KEEPS A COUNTER
  115. * WHICH CONTAINS THE NUMBER OF RETRIES THAT HAVE BEEN
  116. * ATTEMPTED WHILE TRYING TO SUCCESSFULLY PROCESS THE REQUEST.
  117. * WHEN A REQUEST IS COMPLETED *1HY* CHECKS TO SEE IF THE
  118. * ERROR COUNT IS NON-ZERO. *1HY* WILL LOG A BML MESSAGE
  119. * AND INCREMENT THE RECOVERED ERROR COUNT IN THE MST IF THE
  120. * ERROR COUNT IS NON-ZERO.
  121. *
  122. * IF THE ERROR COUNT REACHES *MERC* BEFORE THE REQUEST IS
  123. * SUCCESSFULLY COMPLETED, *1HY* WILL SET THE ERROR FLAGS IN
  124. * THE *CBT*, LOG A FATAL ERROR IN THE BML, AND INCREMENT THE
  125. * UNRECOVERED ERROR COUNT IN THE MST.
  126. SPACE 4,10
  127. *** SPECIAL PROGRAMMING NOTES.
  128. *
  129. * THE FOLLOWING IS A LIST OF SPECIAL NOTES THAT SHOULD BE
  130. * READ AND UNDERSTOOD BEFORE ANY MODIFICATIONS ARE MADE TO
  131. * THIS PROGRAM.
  132. *
  133. *
  134. * 1) WHERE POSSIBLE, *CMR* POINTERS HAVE BEEN PLUGGED BY THE
  135. * PRESET ROUTINE TO IMPROVE THE EXECUTION SPEED OF THE
  136. * PROGRAM AND TO MINIMIZE THE AMOUNT OF CODE.
  137. *
  138. * 2) THIS PROGRAM EXCHANGES *CPUMTR* WITHOUT WAITING FOR
  139. * THE REQUEST TO COMPLETE. ROUTINE *CMC* SHOULD BE CALLED
  140. * IF THE *MONITOR* MACRO IS TO BE USED WHILE THERE IS A
  141. * POSSIBILITY OF AN OUTSTANDING MONITOR REQUEST.
  142. *
  143. * 3) THE DEVICE STATE TABLE IS BUILT AT LOCATION *EXR* IN
  144. * PP RESIDENT, THEREFORE IT IS NOT POSSIBLE TO USE THE
  145. * *EXR* AND *SMS* ROUTINES.
  146. SPACE 4,10
  147.  
  148. ** COMMON DECKS.
  149.  
  150.  
  151. *CALL COMPMAC
  152. RICHI$ EQU 1 SELECT DEFERRED INSTRUCTION MODIFICATION
  153. *CALL COMPCHI
  154. *CALL COMSCPS
  155. QUAL$S SET 0 REMOVE QUALIFICATION OF COMSDFS CONSTANTS
  156. *CALL COMSDFS
  157. LIST X
  158. *CALL COMSHIO
  159. LIST *
  160. QUAL IOU
  161. *CALL COMSIOU
  162. QUAL *
  163. *CALL COMSLSD
  164. *CALL COMSMSC
  165. *CALL COMSMSP
  166. *CALL COMSPIM
  167. *CALL COMS1DS
  168. TITLE CONSTANTS AND DEFINITIONS.
  169. SPACE 4,10
  170. **** DIRECT CELL ALLOCATION.
  171.  
  172.  
  173. NR EQU 15 - 21 NEXT REQUEST
  174. WB EQU 22 - 26 CM WORD BUFFER
  175.  
  176. * THE NEXT FIVE LOCATIONS ARE ORDER DEPENDENT.
  177.  
  178. PB EQU 27 PREVIOUS CONTROL BUFFER ORDINAL
  179. CB EQU 30 CURRENT CONTROL BUFFER ORDINAL
  180. NB EQU 31 NEXT CONTROL BUFFER ORDINAL
  181. EO EQU 32 EST ORDINAL
  182. UN EQU 33 UNIT NUMBER
  183.  
  184. UA EQU 34 - 35 UEM ADDRESS / 100
  185. RC EQU 36 REQUEST COUNT
  186. DT EQU 37 DEVICE TYPE
  187. SS EQU 40 SLAVE STATUS FLAGS
  188. PO EQU 41 CURRENT *PUT* ORDINAL
  189. TO EQU 42 COMMAND TIMEOUT
  190. SF EQU 43 DEVICE SELECTED FLAG
  191. UC EQU 44 UNIT ACTIVITY COUNT
  192. ERRNZ SF+1-UC CODE DEPENDS ON VALUE
  193. RW EQU 45 READ / WRITE FLAG
  194. PA EQU 46 PROCESSOR ADDRESS
  195. DI EQU 47 DEVICE INDEX
  196. CR EQU 57 CHANNEL RESERVED STATUS
  197. ML EQU 60 MESSAGE LENGTH
  198. FC EQU 61 FAULT CODE
  199. CD EQU 62 CHANNEL DATA
  200. RF EQU 63 SPECIAL REQUEST FLAGS
  201.  
  202. ****
  203. SPACE 4,10
  204. ** ISI ADAPTOR FUNCTION CODES.
  205.  
  206.  
  207. FCMC EQU 0#000 MASTER CLEAR
  208. FCRC EQU 0#100 READ CONTROL REGISTER
  209. FCWC EQU 0#101 WRITE CONTROL REGISTER
  210. FCRM EQU 0#200 READ MASK REGISTER
  211. FCWM EQU 0#201 WRITE MASK REGISTER
  212. FCRE EQU 0#300 READ ERROR STATUS
  213. FCRO EQU 0#400 READ OPERATIONAL STATUS
  214. FCIS EQU 0#500 REQUEST IDLE STATUS
  215. FCRT EQU 0#600 READ *T* REGISTERS
  216. FCWT EQU 0#601 WRITE *T* REGISTERS
  217. FCRS EQU 0#700 READ TEST SEED
  218. FCWS EQU 0#701 WRITE TEST SEED
  219. FCCH EQU 0#800 CLEAR SELECT HOLD
  220. FCSH EQU 0#801 SET SELECT HOLD
  221. FCCS EQU 0#900 CLEAR COMMAND SEQUENCE
  222. FCSS EQU 0#901 SET COMMAND SEQUENCE
  223. FCSO EQU 0#A00 FORCE SYNC OUT
  224. FCPM EQU 0#B00 SET PP MODE
  225. FCCD EQU 0#C00 CLEAR DMA MODE
  226. FCSD EQU 0#C01 SET DMA MODE
  227. FCCE EQU 0#D00 CLEAR ECHO MODE
  228. FCSE EQU 0#D01 SET ECHO MODE
  229. FCCT EQU 0#E00 CLEAR *T* REGISTERS
  230. SPACE 4,10
  231. ** FUNCTION WORD OPTION FLAGS.
  232.  
  233.  
  234. FOBS EQU 1S8 BUS SLAVE (IHD) SELECT
  235. FONI EQU 1S9 NON-INTERLOCKED MODE
  236. FOTT EQU 1S10 TERMINATE I/O TRANSFER
  237. FOZI EQU 1S11 ZERO-FILL INHIBIT
  238. FOCA EQU 1S12 CLEAR ATTENTION
  239. FODE EQU 1S13 DATA EXCHANGE
  240. FOSR EQU 1S14 SELECTIVE RESET
  241. FOWR EQU 1S15 WRITE SELECT
  242. SPACE 4,10
  243. ** *IHD* FUNCTION WORDS.
  244.  
  245.  
  246. FWSB EQU 0#80 READ STATUS BLOCK
  247. FWDS EQU 0#90 READ DEVICE STATUS
  248. FWBS EQU FOBS BUS SLAVE (IHD) SELECT
  249. FWCA EQU FOCA CLEAR ATTENTION
  250. FWSN EQU FOCA+FOTT+0#D0 READ SERIAL NUMBER
  251. FWRL EQU FOCA+FOTT+0#FA READ REVISION LEVEL
  252. FWEP EQU FODE+FOCA+FOTT ERROR PROCESSING
  253. FWEL EQU FODE+FOCA+FOTT READ ERROR LOG
  254. FWER EQU FODE+FOCA+FOTT READ ERROR REGISTER
  255. FWRE EQU FODE+FOTT+FONI+FOCA READ EXCHANGE
  256. FWSR EQU FOSR+FOCA SELECTIVE RESET
  257. FWCB EQU FOWR+FOCA WRITE COMMAND BLOCK
  258. FWWE EQU FOWR+FWRE+FOZI WRITE EXCHANGE
  259. SPACE 4,10
  260. ** *IHD* COMMAND CODES.
  261.  
  262.  
  263. CCRL EQU 0#01+1S15 READ ERROR LOG
  264. CCRI EQU 0#02+1S15 READ ERROR REGISTER IMAGE
  265. CCNO EQU 0#05+1S15 NO OPERATION
  266. CCSD EQU 0#12+1S15 SPIN-DOWN DRIVE
  267. CCSU EQU 0#13+1S15 SPIN-UP DRIVE
  268. CCOW EQU 0#23+1S15 INITIATE OPEN-ENDED WRITE
  269. CCOR EQU 0#35+1S15 INITIATE OPEN-ENDED READ
  270. CCLM EQU 0#53+1S15 LOAD OPERATING MODE PARAMETERS
  271. CCLD EQU 0#54+1S15 LOAD ATTENTION DELAY PARAMETERS
  272. CCD2 EQU 0#70+1S15 EXECUTE LEVEL 2 DIAGNOSTICS
  273. CCRT EQU 0#78+1S15 EXECUTE READ TEST
  274. CCWT EQU 0#79+1S15 EXECUTE WRITE TEST
  275. CCD1 EQU 0#7A+1S15 EXECUTE LEVEL 1 DIAGNOSTICS
  276. SPACE 4,10
  277. ** *IHD* COMMAND EXECUTION STATUS.
  278.  
  279.  
  280. ESUI EQU 00 *IHD* UNIT IDLE
  281. ESRD EQU 10 READ DATA AVAILABLE
  282. ESBS EQU 20 BUFFER SPACE AVAILABLE
  283. ESCB EQU 40 COMMAND BLOCK INDEPENDENT
  284. ESUA EQU 60 UNSOLICITED ATTENTION
  285. ESCC EQU 70 COMMAND COMPLETE
  286. SPACE 4,10
  287. ** *IHD* COMMAND BLOCK PARAMETER WORD VALUES.
  288.  
  289.  
  290. PWIT EQU 0#0000 INTEGRITY TEST
  291. PWWT EQU 0#0005 WRITE TEST
  292. PWRT EQU 0#0006 READ TEST
  293. PWADDF EQU 0#0401 ATTENTION DELAY (4KB SECTOR)
  294. PWADDH EQU 0#0101 ATTENTION DELAY (16KB SECTOR)
  295. PWOM EQU 0#3D02 OPERATING MODE
  296. SPACE 4,10
  297. ** MAINTENANCE REGISTER REQUEST CODE SYMBOLS.
  298.  
  299.  
  300. MR EQU /IOU/MR MAINTENANCE CHANNEL
  301. IOUC EQU /IOU/IOUC+/IOU/MRRD READ CONNECT CODE
  302. RMRF EQU /IOU/MRRD-/IOU/MRRD READ REGISTER
  303. WMRF EQU /IOU/MRWT-/IOU/MRRD WRITE REGISTER
  304.  
  305. RFMR EQU RMRF*10000+/IOU/FMCR READ FAULT MASK REGISTER
  306. RCSR EQU RMRF*10000+/IOU/C0CR READ CHANNEL STATUS REGISTER
  307. WFMR EQU WMRF*10000+/IOU/FMCR WRITE FAULT MASK REGISTER
  308. SPACE 4,10
  309. ** FAULT ANALYSIS CODES.
  310.  
  311.  
  312. ECPE EQU 1 CHANNEL PARITY ERROR
  313.  
  314. ECER EQU 4 CHANNEL DETECTED ERROR
  315. ECCM EQU 5 CHANNEL DETECTED CM ERROR
  316. ECIE EQU 6 ISI CHANNEL ERROR
  317. ECHF EQU 7 CHANNEL HUNG FULL
  318.  
  319. ETAT EQU 10 ATTENTION TIMEOUT
  320. ETFN EQU 11 CHANNEL FUNCTION TIMEOUT
  321.  
  322. EDPE EQU 14 DATA PARITY ERROR
  323.  
  324. EDNR EQU 20 DEVICE NOT READY
  325. EOTC EQU 21 OVER TEMP CONDITION
  326.  
  327. EIDT EQU 24 INCOMPLETE DATA TRANSFER
  328.  
  329. EIRQ EQU 30 *IHD* FAILURE
  330. ECBN EQU 31 COMMAND BLOCK NUMBER
  331. EICU EQU 32 INCORRECT UNIT SELECTED
  332. ETSL EQU 33 SELECT TIMEOUT
  333.  
  334. ESUF EQU 34 SPIN-UP FAILURE
  335. ESDF EQU 35 SPIN-DOWN FAILURE
  336. ETTC EQU 36 TRANSFER COMPLETE TIMEOUT
  337. EUES EQU 37 UNEXPECTED EXECUTION STATUS
  338.  
  339. ETCB EQU 40 COMMAND BLOCK TIMEOUT
  340. EUDS EQU 41 UNEXPECTED DELAY STATUS
  341. ELOP EQU 42 LOAD OPERATING PARAMETERS FAILURE
  342. EDSA EQU 43 SELECT ACTIVE DROPPED
  343.  
  344. ETTR EQU 44 *T* REGISTER EMPTY TIMEOUT
  345. EIOS EQU 45 I/O INITIATION ERROR
  346. EIOC EQU 46 I/O COMPLETE ERROR
  347.  
  348. EDTF EQU 50 DIAGNOSTIC FAULT
  349.  
  350. EDRA EQU 54 DRIVE RESERVED TO ALTERNATE ACCESS
  351. SPACE 4,10
  352. ** DEVICE STATE TABLE DEFINITIONS.
  353.  
  354.  
  355. LOC 0
  356. PUTO BSS 1 *PUT* ORDINAL
  357. CREG BSS 1 CONTROL REGISTER IMAGE
  358. ADDR BSS 1 PROCESSOR ADDRESS
  359. RADD BSS 1 RETURN ADDRESS
  360. ATTN BSS 1 ATTENTION RETURN
  361. EEST BSS 1 EXPECTED EXECUTION STATUS
  362. RWST BSS 1 READ / WRITE STATUS
  363. RQIN BSS 1 REQUEST QUEUE INDEX
  364. RQLN EQU 10 REQUEST QUEUE LENGTH
  365. IORQ BSS RQLN I/O REQUEST QUEUE
  366. CBCT BSS 1 CUMULATIVE BUFFER COUNT
  367. CYLN BSS 1 CYLINDER ON SEEK
  368. TKSN BSS 1 TRACK + SECTOR ON SEEK
  369. ERCT BSS 1 ERROR COUNT
  370. ELEN BSS 1 ERROR LOG ENTRY NUMBER
  371. ELRC BSS 1 ERROR LOG REPETITION COUNT
  372. EREN BSS 1 ERROR REGISTER ENTRY NUMBER
  373. SREQ BSS 1 SPECIAL REQUEST
  374. IPPS BSS 1 I/O PREPROCESSING STATUS
  375. LCMD BSS 1 LAST *IHD* COMMAND
  376. ESAD BSS 1 ERROR STEP ADDRESS
  377.  
  378. DSTBE BSS 0 LENGTH OF STATE TABLE ENTRY
  379. LOC 0
  380. SPACE 4,15
  381. **** ASSEMBLY CONSTANTS.
  382.  
  383.  
  384. CH EQU 16 CHANNEL NUMBER
  385. MXND EQU 10*2 MAXIMUM NUMBER OF UNITS / DRIVER
  386. DSTB EQU EXR START OF DEVICE STATE TABLES
  387. DSTBL EQU DSTB+DSTBE*MXND LWA+1 OF DEVICE STATE TABLES
  388. OHYD MAX PPFW,DSTBL DRIVER ORIGIN
  389.  
  390. * THE FOLLOWING SYMBOLS DEFINE LOCATIONS IN THE I/O
  391. * REQUEST QUEUE (IORQ) OF THE DEVICE STATE TABLE.
  392. * THESE LOCATIONS MAY BE USED ONLY DURING ERROR AND
  393. * SPECIAL REQUEST PROCESSING (NOT DURING I/O PROCESSING).
  394.  
  395. ENAD EQU IORQ+RQLN-1 ERROR NEXT ADDRESS
  396. CACT EQU ENAD-1 CLEAR ATTENTION COUNT
  397. SIST EQU CACT-1 SYSTEM INTERVENTION STATUS
  398. MIST EQU SIST-1 MANUAL INTERVENTION STATUS
  399. GSST EQU MIST-1 GENERAL SLAVE STATUS
  400. IOST EQU GSST-1 READ WRITE STATUS
  401. ERAD EQU IOST-1 ERROR RETURN ADDRESS
  402. ERRNG ERAD-IORQ CODE DEPENDS ON VALUE
  403.  
  404. * THE FOLLOWING VALUE IS USED AS A SHIFT COUNT
  405. * TO DETERMINE THE FUNCTION TIMEOUT DELAY (2**N).
  406.  
  407. FTOS EQU 0 1 MILLISECOND
  408. ERRNG 8D-FTOS VALUE TOO LARGE
  409. .2 DECMIC FTOS+2
  410. FTOD EQU 370S".2" FUNCTION TIMEOUT DELAY
  411.  
  412. DRFM EQU 1000 DIRECTION FLAG MASK
  413. ILFM EQU 4000 INTERLOCK FLAG MASK
  414. MERC EQU 7 ERROR PROCESSING RETRY COUNT
  415. CSRC EQU MERC/2+1 CHANNEL SWITCH RETRY COUNT
  416. FTRC EQU 3 FUNCTION TIMEOUT RETRY COUNT
  417. DSRC EQU 20D DEVICE SELECT RETRY COUNT
  418. ERLGL EQU 48D ERROR LOG LENGTH
  419. ERRGL EQU 48D ERROR REGISTER LENGTH
  420. SLSTL EQU 7 SLAVE STATUS BLOCK LENGTH
  421. DVSTL EQU 10 DEVICE STATUS BLOCK LENGTH
  422. STSBL EQU SLSTL+DVSTL COMBINED STATUS BLOCK LENGTH
  423. DBUFL MAX ERLGL,ERRGL DATA BUFFER LENGTH
  424. EBUFL EQU 5*10D ERROR MESSAGE BUFFER LENGTH
  425.  
  426. ****
  427. SPACE 4,10
  428. * THE FOLLOWING SYMBOL DEFINITION CONTROLS WHICH (IF ANY)
  429. * OF THE DIAGNOSTICS ARE USED FOR DEVICE VERIFICATION.
  430.  
  431.  
  432. *CCVD EQU CCNO NO DIAGNOSTICS
  433. *CCVD EQU CCD1 LEVEL 1 DIAGNOSTICS
  434. *CCVD EQU CCD2 LEVEL 2 DIAGNOSTICS
  435.  
  436. CCVD EQU CCD2 LEVEL 2 DIAGNOSTICS
  437. TITLE MACROS.
  438. SPACE 4,10
  439. ** MACRO DEFINITIONS.
  440. TBLM SPACE 4,10
  441. ** TBLM - CREATE TABLE ENTRY MACRO.
  442. *
  443. *NAM TBLM
  444. *
  445. * ENTRY NAM = TABLE NAME.
  446. *
  447. * EXIT NAM_E MACRO DEFINED.
  448.  
  449.  
  450. PURGMAC TBLM
  451.  
  452. MACRO TBLM,NAM
  453. PURGMAC NAM_E
  454. NAM_E MACRO ADDR
  455. LOCAL A
  456. MACREF NAM_E
  457. NOREF A
  458. A EQU ADDR
  459. T_NAM RMT
  460. CON A
  461. RMT
  462. TBLM ENDM
  463. CBTE SPACE 4,10
  464. ** CBTE - CONTROL BUFFER TABLE ENTRY.
  465. *
  466. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TCBT*
  467. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  468. * REQUIRES THE FWA OF THE CONTROL BUFFER TABLE.
  469. *
  470. * CBTE ADDR
  471. *
  472. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  473. *
  474. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TCBT*.
  475.  
  476.  
  477. CBT TBLM
  478. CCTE SPACE 4,10
  479. ** CCTE - CHANNEL CONTROL TABLE ENTRY.
  480. *
  481. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TCCT*
  482. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  483. * REQUIRES THE FWA OF THE CHANNEL CONTROL TABLE.
  484. *
  485. * CCTE ADDR
  486. *
  487. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  488. *
  489. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TCCT*.
  490.  
  491.  
  492. CCT TBLM
  493. CHTE SPACE 4,10
  494. ** CHTE - CHANNEL TABLE ENTRY.
  495. *
  496. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TCHT*
  497. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  498. * REQUIRES THE FWA OF THE CHANNEL TABLE.
  499. *
  500. * CHTE ADDR
  501. *
  502. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  503. *
  504. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TCHT*.
  505.  
  506.  
  507. CHT TBLM
  508. EMBE SPACE 4,10
  509. ** EMBE - ERROR MESSAGE TABLE ENTRY.
  510. *
  511. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TEMB*
  512. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  513. * REQUIRES THE FWA OF THE ERROR MESSAGE TABLE.
  514. *
  515. * EMBE ADDR
  516. *
  517. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  518. *
  519. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TEMB*.
  520.  
  521.  
  522. EMB TBLM
  523. EXPE SPACE 4,10
  524. ** EXPE - EXCHANGE PACKAGE ADDRESS ENTRY.
  525. *
  526. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TEXP*
  527. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  528. * REQUIRES THE FWA OF THE PP EXCHANGE PACKAGE.
  529. *
  530. * EXPE ADDR
  531. *
  532. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  533. *
  534. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TEXP*.
  535.  
  536.  
  537. EXP TBLM
  538. FTTE SPACE 4,10
  539. ** FTTE - FUNCTION TIMEOUT TABLE ENTRY.
  540. *
  541. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TFTT*
  542. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  543. * REQUIRES THE FWA OF THE FUNCTION TIMEOUT TABLE.
  544. *
  545. * FTTE ADDR
  546. *
  547. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  548. *
  549. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TFTT*.
  550.  
  551.  
  552. FTT TBLM
  553. PUTE SPACE 4,10
  554. ** PUTE - PHYSICAL UNIT TABLE ENTRY.
  555. *
  556. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TPUT*
  557. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  558. * REQUIRES THE FWA OF THE PHYSICAL UNIT TABLE.
  559. *
  560. * PUTE ADDR
  561. *
  562. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  563. *
  564. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TPUT*.
  565.  
  566.  
  567. PUT TBLM
  568. TITLE MAIN PROGRAM.
  569. HYD SPACE 4,10
  570. ** HYD - MAIN PROGRAM.
  571.  
  572.  
  573. ORG OHYD
  574. RICHI BEGIN CHANNEL INSTRUCTION MODIFICATION
  575.  
  576. HYDD LJM PRS PRESET DRIVER
  577. HYD EQU *-1
  578. LDM HYD PRESERVE RETURN ADDRESS
  579. STM ADDR,DI
  580. HYD1 LDD SF
  581. ZJN HYD3 IF DEVICE NOT SELECTED
  582. LDC FCCH
  583. RJM FCN CLEAR SELECT HOLD
  584. SOD SF
  585. HYD3 BSS 0
  586. LDC 0 CHECK ERROR PROCESSING
  587. UNSW EQU *-1
  588. NJN HYD5 IF UNIT SWITCH DISABLED
  589. LDN DSTBE
  590. RAD DI ADVANCE DEVICE INDEX
  591. LMC DSTBL
  592. HYDA EQU *-1
  593. NJN HYD5 IF NOT END OF STATUS BLOCK
  594. RJM CCR
  595. ZJN HYD7 IF CHANNEL DOWN
  596. HYD4 LDC DSTB
  597. STD DI RESET START OF STATUS BLOCK
  598. HYD5 RJM CFR
  599. UJN HYD3 CHECK NEXT DEVICE
  600.  
  601. HYD7 UJN *+2 FIRST PASS
  602. HYDB EQU HYD7
  603. UJN HYD8 DROP PP ON SECOND PASS
  604. SOM HYDB
  605. LDN 0 ENABLE UNIT SWITCH
  606. STM UNSW
  607. LDN PSNI CHANGE PATH THRU *CFR*
  608. STM CFRA
  609. LDC CMP7 RELEASE *PUT* INTERLOCKS
  610. STM CFRB
  611. UJN HYD4 LOOP THRU DEVICE STATE TABLE
  612.  
  613. HYD8 MONITOR DPPM DROP PP
  614. LJM PPR EXIT TO PPR
  615. TITLE READ / WRITE PROCESSING.
  616. PIO SPACE 4,10
  617. ** PIO - READ / WRITE PROCESSING.
  618.  
  619.  
  620. PIO BSS 0
  621. LDML PIOB,RW ISSUE SEEK COMMAND
  622. LMC 1S17
  623. RJM WCB WRITE COMMAND BLOCK
  624.  
  625. * WAIT UNTIL *IHD* HAS RAISED ATTENTION.
  626.  
  627. LDM PIOC,RW PROCESS ATTENTION
  628. RJM ATT
  629. ZJN PIO2 IF EXPECTED STATUS
  630. LDN EIOS
  631. PIO1 RJM ERR PROCESS ERROR
  632.  
  633. * INITIATE DATA TRANSFER.
  634.  
  635. PIO2 LDN 1 SET CHANNEL ACTIVE FOR *CPD*
  636. RJM SCD
  637. LDML PIOD,RW SELECT INFORMATION EXCHANGE
  638. RJM WFW
  639. LDC FCSD SET DMA MODE
  640. RJM FCN
  641. LDM PIOE,RW SET PROCESSOR ADDRESS
  642. STM PIOA
  643. PIO3 RJM 0 PROCESS I/O REQUEST
  644. PIOA EQU *-1
  645. PIO6 NJN PIO1 IF TIMEOUT ERROR
  646.  
  647. * WAIT - TRANSFER COMPLETE.
  648.  
  649. PIO7 LCN 1 CHECK OPERATIONAL STATUS
  650. RJM COS
  651. ZJN PIO8 IF TRANSFER COMPLETE
  652. LDN ETTC
  653. UJN PIO1 TRANSFER IN PROGRESS TIMEOUT
  654.  
  655. PIO8 RJM SFR CHECK FOR CONSECUTIVE REQUEST
  656. STD CB
  657. NJN PIO3 IF ONE MORE REQUEST
  658.  
  659. * COMPLETE READ / WRITE OPERATIONS.
  660.  
  661. LDC FCCS CLEAR COMMAND SEQUENCE
  662. RJM FCN
  663. LDN 0 CLEAR CHANNEL ACTIVE
  664. RJM SCD
  665. LDN ESCC PROCESS ATTENTION
  666. RJM ATT
  667. ZJN PIO9 IF *COMMAND COMPLETE*
  668. LDN EIOC
  669. UJN PIO6 ERROR IN I/O COMPLETE STATUS
  670.  
  671. PIO9 LDD SS CHECK FOR DELAY STATUS
  672. LPN 1
  673. ZJN PIO11 IF NO DELAY STATUS
  674. LDD RW
  675. STM IPPS,DI SAVE READ / WRITE STATUS
  676. LDN 0
  677. STD RW SELECT *IHD* ERROR LOG
  678. STM RWST,DI
  679. LDC PIO10 SET RETURN ADDRESS
  680. STM ESAD,DI
  681. LJM LGE1 DUMP ERROR LOG
  682.  
  683. PIO10 LDM IPPS,DI RESTORE READ / WRITE STATUS
  684. STD RW
  685. STM RWST,DI
  686. LDN 0 ENABLE ERROR PROCESSING
  687. STM ESAD,DI
  688. PIO11 LJM CMP COMPLETE PROCESSING
  689.  
  690.  
  691. PIOB BSS 0 COMMAND CODES
  692. CONL CCOR
  693. CONL CCOW
  694.  
  695. PIOC BSS 0 EXPECTED EXECUTION STATUS
  696. CON ESRD
  697. CON ESBS
  698.  
  699. PIOD BSS 0 INFORMATION EXCHANGE FUNCTION WORDS
  700. CONL FWRE
  701. CONL FWWE
  702.  
  703. PIOE BSS 0 PROCESSOR ADDRESSES
  704. CON RBD
  705. CON WBD
  706. TITLE DOCUMENT UNIT CHARACTERISTICS.
  707. DUC SPACE 4,10
  708. ** DUC - DAYFILE UNIT CHARACTERISTICS.
  709.  
  710.  
  711. DUC BSS 0
  712. LDN ZERL CLEAR MESSAGE HEADER
  713. CRD WB
  714. LDN MLDY SET DAYFILE CODE
  715. STD WB+4
  716. LDC FWSN
  717. RJM WFW REQUEST SERIAL NUMBER
  718. LDN 2
  719. STD T7 SET BLOCK SIZE
  720. ACN CH
  721. IAM DBUF,CH READ SERIAL NUMBER
  722. RJM CFE
  723. LDC FWRL REQUEST OTHER CHARACTERISTICS
  724. RJM WFW
  725. LDN 6 READ CHARACTERISTICS
  726. ACN CH
  727. IAM DBUF+2,CH READ REVISION LEVEL
  728. RJM CFE
  729. LDC SBUF SET MESSAGE ADDRESS
  730. STM MAD1
  731. ADN 2*5 ASSEMBLY BUFFER ADDRESS
  732. STD T3
  733. LDC 10S12+DBUF UNPACK HEX DATA
  734. RJM UHD
  735. ADN 2 SET MESSAGE LENGTH
  736. STD WB+3
  737. LDM MSGL RESIDUAL BYTE COUNT
  738. STD WB+2
  739. LDC DM0401 MESSAGE ID
  740. STD PB
  741. LDC HI0107 SET SYMPTOM CODE
  742. STD PB+1
  743. LDD DT DEVICE TYPE
  744. SHN 1
  745. ERRNZ PB+3-EO CODE DEPENDS ON VALUE
  746. ADC 2RDF
  747. ERRNZ PB+4-UN CODE DEPENDS ON VALUE
  748. STD PB+2
  749. LDD MA MOVE BASIC MESSAGE DATA
  750. CWM WB,T7
  751. ERRNZ WB+5-PB CODE DEPENDS ON VALUE
  752. SBN 2
  753. CRM SBUF,T7
  754. LDN 0
  755. STD RW ISSUE BML MESSAGE
  756. RJM IBM
  757. LJM CSR CLEAR SPECIAL REQUEST FLAG
  758. TITLE LOG *IHD* ERRORS.
  759. LGE SPACE 4,10
  760. ** LGE - LOG *IHD* ERRORS.
  761. *
  762. * ENTRY (RW) = 0 TO LOG ERROR LOG.
  763. * = 1 TO LOG ERROR REGISTER.
  764.  
  765.  
  766. LGE BSS 0
  767. LDC CMP SET RETURN ADDRESS
  768. LGE1 STM RADD,DI
  769. LDN 3 SET TIMEOUT VALUE = 3 SECONDS
  770. STD TO
  771. LDML LGEA,RW REQUEST LOG / REGISTER DUMP
  772. RJM WCB
  773.  
  774. * WAIT UNTIL *IHD* HAS RAISED ATTENTION.
  775.  
  776. LDN ESRD PROCESS ATTENTION
  777. RJM ATT
  778. ZJN LGE3 IF EXPECTED RESPONSE
  779. LDN EIOS
  780. RJM ERR PROCESS ERROR
  781.  
  782. * INITIATE DATA TRANSFER.
  783.  
  784. LGE3 LDML LGEB,RW WRITE FUNCTION WORD
  785. RJM WFW
  786. ACN CH
  787. LDM LGEC,RW SET DUMP LENGTH
  788. STD T7
  789. IAM DBUF,CH INPUT ERROR DATA
  790. RJM CFE
  791. LCN 0 PRESET SEARCH INDEX
  792. STD T6
  793. LDD RW
  794. ZJN LGE5 IF DUMPING ERROR LOG
  795. LDML DBUF
  796. SBML EREN,DI
  797. ZJN LGE7 IF NO CHANGE IN ERROR REGISTER
  798. RAML EREN,DI
  799. UJN LGE9 PROCESS ERROR REGISTER DATA
  800.  
  801. * SCAN ERROR LOG DATA FOR NEW ENTRIES.
  802.  
  803. LGE4 SHN -12 POSITION ERROR COUNT
  804. LMM ELEN,DI
  805. ZJN LGE10 IF END OF NEW ENTRIES
  806. LGE5 AOD T6
  807. SHN 2 ADVANCE INDICES
  808. STD T7
  809. ERRNZ ERLGL-ERLGL/4*4 CODE DEPENDS ON VALUE
  810. LMK ERLGL
  811. ZJN LGE8 IF END OF ERROR LOG
  812. LDML DBUF,T7
  813. NJN LGE4 IF NOT EMPTY ENTRY
  814. LGE6 LDD T6
  815. NJN LGE8 IF NEW ENTRIES FOUND
  816. LGE7 LJM LGE12 CLEAR COMMAND SEQUENCE
  817.  
  818. LGE8 LDML DBUF
  819. SHN -12 RESET ENTRY NUMBER
  820. STM ELEN,DI
  821. LDML DBUF+3 SET REPETITION COUNT
  822. STML ELRC,DI
  823. LGE9 UJN LGE11 PROCESS ERROR DATA
  824.  
  825. LGE10 LDML DBUF+3,T7 CHECK REPEAT COUNT
  826. SBML ELRC,DI
  827. ZJN LGE6 IF NO CHANGE IN REPETITION COUNT
  828. STML DBUF+3,T7
  829. RAML ELRC,DI UPDATE ERROR LOG REPEAT COUNT
  830. LDN 4
  831. RAD T7 INCLUDE THIS ERROR LOG ENTRY
  832.  
  833. * PROCESS ERROR INFORMATION.
  834.  
  835. LGE11 LDC MBUF SET MESSAGE BUFFER ADDRESS
  836. STD T3
  837. LDD T7 ERROR DATA BYTE COUNT
  838. SHN 14
  839. LMC DBUF
  840. RJM UHD UNPACK HEX DATA
  841. SHN 14
  842. LMM LGED,RW ISSUE BML MESSAGE
  843. RJM IBM
  844. LGE12 LDC FCCS CLEAR COMMAND SEQUENCE
  845. RJM FCN
  846. LDN ESCC PROCESS ATTENTION
  847. RJM ATT
  848. ZJN LGE13 IF *COMMAND COMPLETE*
  849. LDN EIOC
  850. RJM ERR ERROR IN I/O COMPLETE STATUS
  851.  
  852. LGE13 LDC FWCA CLEAR ATTENTION
  853. RJM WFC
  854. LDM RADD,DI SET RETURN ADDRESS
  855. STD PA
  856. LJM 0,PA RETURN TO CALLER
  857.  
  858.  
  859. LGEA BSS 0 LOG / REGISTER SELECT OPTIONS
  860. CONL CCRL
  861. CONL CCRI
  862.  
  863. LGEB BSS 0 DUMP FUNCTION WORDS
  864. CONL FWEL
  865. CONL FWER
  866.  
  867. LGEC BSS 0 DUMP LENGTHS
  868. CON ERLGL
  869. CON ERRGL
  870.  
  871. LGED BSS 0 BML SYMPTOM CODES
  872. CON HD0104
  873. CON HD0103
  874. TITLE LOAD OPERATING PARAMETERS.
  875. LOP SPACE 4,10
  876. ** LOP - LOAD OPERATING PARAMETERS.
  877. *
  878. * ENTRY (RW) = 0 TO LOAD ATTENTION DELAY PARAMETERS.
  879. * = 1 TO LOAD OPERATING MODE PARAMETERS.
  880.  
  881.  
  882. LOP BSS 0
  883. LDC CMP SET RETURN ADDRESS
  884. LOP1 STM RADD,DI
  885. LDD RW
  886. NJN LOP2 IF SETTING OPERATING MODE
  887. LDML LOPA,DT
  888. UJN LOP3 SET ATTENTION DELAY PARAMETERS
  889.  
  890. LOP2 LDC PWOM SET OPERATING MODE PARAMETERS
  891. LOP3 STML WCBA+4
  892. LDN 3 SET TIMEOUT VALUE = 3 SECONDS
  893. STD TO
  894. LDML LOPB,RW LOAD PARAMETERS
  895. RJM WCB
  896.  
  897. * WAIT UNTIL *IHD* HAS RAISED ATTENTION.
  898.  
  899. LDN ESCC PROCESS ATTENTION
  900. RJM ATT
  901. ZJN LOP4 IF NORMAL COMPLETION
  902. LDN ELOP
  903. RJM ERR PROCESS ERROR
  904.  
  905. LOP4 LDM RADD,DI SET RETURN ADDRESS
  906. STD PA
  907. LJM 0,PA RETURN TO CALLER
  908.  
  909.  
  910. LOPA BSS 0 ATTENTION DELAY PARAMETER WORDS
  911. CONL PWADDF
  912. CONL PWADDH
  913.  
  914. LOPB BSS 0 COMMAND CODES
  915. CONL CCLD
  916. CONL CCLM
  917. TITLE DIAGNOSTIC PROCESSING.
  918. RND SPACE 4,10
  919. ** RND - RUN DIAGNOSTICS.
  920. *
  921. * ENTRY (RW) = 0 TO EXECUTE READ TEST.
  922. * = 1 TO EXECUTE WRITE TEST.
  923. * = 2 TO RUN VERIFICATION DIAGNOSTICS.
  924.  
  925.  
  926. RND BSS 0
  927. LDC CSR SET RETURN ADDRESS
  928. RND1 STM RADD,DI
  929. LDC RNDD ISSUE OPERATOR MESSAGE
  930. RJM IOM
  931. LDML RNDA,RW SET PARAMETER WORD
  932. STML WCBA+4
  933. LDM RNDB,RW SET TIMEOUT VALUE
  934. STD TO
  935. LDML RNDC,RW INITIATE TEST
  936. RJM WCB
  937.  
  938. * WAIT UNTIL *IHD* HAS RAISED ATTENTION.
  939.  
  940. LDN 0 PROCESS ATTENTION
  941. RJM ATT
  942. RND2 LDC MBUF SET ASSEMBLY BUFFER ADDRESS
  943. STD T3
  944. LDC SLSTL*10000+SLST UNPACK HEX DATA
  945. RJM UHD
  946. SHN 14 ISSUE BML MESSAGE
  947. LMC HD0106
  948. ADD RW
  949. ERRNZ HD0106+1-HD0107 CODE DEPENDS ON VALUE
  950. ERRNZ HD0107+1-HD0110 CODE DEPENDS ON VALUE
  951. RJM IBM
  952. LDD RW CHECK OPERATION
  953. SBN 2
  954. ZJN RND3 IF VERIFICATION DIAGNOSTICS
  955. LDD SS
  956. LMN ESCC
  957. LPN 70
  958. ZJN RND3 IF NORMAL COMPLETION
  959. LDN EDTF
  960. RJM ERR PROCESS ERROR
  961.  
  962. *RND3 LDN 0 CLEAR OPERATOR MESSAGE
  963. RND3 RJM IOM
  964. LDM RADD,DI SET RETURN ADDRESS
  965. STD PA
  966. LJM 0,PA RETURN TO CALLER
  967.  
  968.  
  969. RNDA BSS 0 PARAMETER WORDS
  970. CONL PWRT
  971. CONL PWWT
  972. CONL PWIT
  973.  
  974. RNDB BSS 0 TIMEOUT VALUES (IN SECONDS)
  975. CON 1*60D
  976. CON 1*60D
  977. CON 4*60D+20D
  978.  
  979. RNDC BSS 0 COMMAND CODES
  980. CONL CCRT
  981. CONL CCWT
  982. CONL CCVD
  983.  
  984. RNDD DATA C* EQ000, DIAGNOSTIC RUNNING.*
  985. TITLE SPIN-DOWN PROCESSING.
  986. SPD SPACE 4,10
  987. ** SPD - SPIN DOWN DRIVE.
  988.  
  989.  
  990. SPD BSS 0
  991. LDN 1*60D SET TIMEOUT VALUE = 1 MINUTE
  992. STD TO
  993. LDC CCSD SPIN-DOWN DRIVE
  994. RJM WCB
  995.  
  996. * WAIT UNTIL *IHD* HAS RAISED ATTENTION.
  997.  
  998. LDN ESCC PROCESS ATTENTION
  999. RJM ATT
  1000. ZJP CSR IF NORMAL COMPLETION
  1001. LDN ESDF
  1002. RJM ERR PROCESS ERROR
  1003. TITLE SPIN-UP PROCESSING.
  1004. SPU SPACE 4,10
  1005. ** SPU - SPIN UP DRIVE.
  1006.  
  1007.  
  1008. SPU BSS 0
  1009. LDC CSR SET RETURN ADDRESS
  1010. SPU1 STM ERAD,DI
  1011. LDN 0 GET SLAVE STATUS
  1012. RJM GSS
  1013. LDML SLST+5 CHECK DEVICE READY
  1014. SHN 0-17
  1015. ZJN SPU2 IF DISK NOT SPINNING
  1016. LDN SPU5-SPU4
  1017. SPU2 ADC SPU4 PROCESS SELECTIVE RESET
  1018. LJM SRS1
  1019.  
  1020. SPU3 RJM HYD RETURN TO MAIN LOOP
  1021.  
  1022. * CHECK TIME INTERVAL SINCE LAST SPIN-UP.
  1023.  
  1024. SPU4 RJM CMC CHECK MONITOR COMPLETE
  1025. LDK HSUEI
  1026. STD CM+4 SET SPIN-UP INTERVAL
  1027. SHN -14
  1028. STD CM+3
  1029. LDN UHSS UPDATE EVENT TIME
  1030. STD CM+1
  1031. MONITOR EATM CHECK EVENT TIME
  1032. LDD CM+1
  1033. NJN SPU3 IF EVENT INTERVAL NOT ELAPSED
  1034.  
  1035. * WRITE COMMAND BLOCK TO POWER UP SPINDLE.
  1036.  
  1037. RJM SSD
  1038. LDC 3*60D SET TIMEOUT VALUE = 3 MINUTES
  1039. STD TO
  1040. LDC SPUA ISSUE OPERATOR MESSAGE
  1041. RJM IOM
  1042. LDC CCSU SPIN-UP DRIVE
  1043. RJM WCB
  1044.  
  1045. * WAIT UNTIL *IHD* HAS RAISED ATTENTION.
  1046.  
  1047. LDN ESCC PROCESS ATTENTION
  1048. RJM ATT
  1049. ZJN SPU5 IF NORMAL COMPLETION
  1050. LDN ESUF
  1051. RJM ERR PROCESS ERROR
  1052.  
  1053. SPU5 LDN 1 SELECT LOAD OF MODE PARAMETERS
  1054. STM RWST,DI
  1055. SPU6 STD RW SET PROCESSOR INDEX
  1056. LDC SPU7
  1057. LJM LOP1 LOAD OPERATING PARAMETERS
  1058.  
  1059. SPU7 SOM RWST,DI
  1060. PJN SPU6 IF YET TO LOAD DELAY PARAMETERS
  1061. LDM SREQ,DI
  1062. ZJN SPU8 IF SPIN-UP INITIATED BY DRIVER
  1063. LDN DUNF
  1064. RJM CPF CLEAR DEVICE UNAVAILABLE
  1065.  
  1066. * COMPLETE DEVICE INITIALIZATION.
  1067.  
  1068. SPU8 LDM ERAD,DI SET RETURN ADDRESS
  1069. STD PA
  1070. LDN 0 CLEAR OPERATOR MESSAGE
  1071. RJM IOM
  1072. LJM 0,PA RETURN TO CALLER
  1073.  
  1074. SPUA DATA C* EQ000, SPIN UP PENDING.*
  1075. TITLE SELECTIVE RESET PROCESSING.
  1076. SRS SPACE 4,10
  1077. ** SRS - PROCESS SELECTIVE RESET.
  1078.  
  1079.  
  1080. SRS BSS 0
  1081. LDC CMP4 SET RETURN ADDRESS
  1082. SRS1 STM RADD,DI
  1083. LDC FWSR ISSUE SELECTIVE RESET
  1084. RJM WFW
  1085. LDN 6 SET TIMEOUT TO 6 SECONDS
  1086. RJM STO
  1087. LDN ESCB PROCESS ATTENTION
  1088. RJM ATT
  1089. ZJN SRS3 IF *COMMAND BLOCK INDEPENDENT*
  1090. LDN EUES
  1091. SRS2 RJM ERR PROCESS ERROR
  1092.  
  1093. SRS3 LDD SS CHECK DELAY STATUS PRESENT
  1094. LPN 1
  1095. ZJN SRS4 IF NO DELAY STATUS
  1096. LDM SLST+3
  1097. LPC 377 CHECK DELAY STATUS
  1098. LMC 0#83
  1099. ZJN SRS5 IF HOST GENERATED RESET
  1100. SRS4 LDN EUDS
  1101. UJN SRS2 UNEXPECTED DELAY STATUS
  1102.  
  1103. SRS5 STM ELEN,DI
  1104. STM ELRC,DI CLEAR INTERNAL ERROR COUNTERS
  1105. STM EREN,DI
  1106. LDM RADD,DI SET RETURN ADDRESS
  1107. STD PA
  1108. LJM 0,PA RETURN TO CALLER
  1109. TITLE SUBROUTINES.
  1110. ACE SPACE 4,10
  1111. ** ACE - ANALYZE CHANNEL ERROR.
  1112. *
  1113. * ENTRY (RBUF) = CHANNEL STATUS REGISTER.
  1114.  
  1115.  
  1116. ACE3 LDN ECCM SET CHANNEL DETECTED CM ERROR
  1117. ACE4 STM FALT
  1118.  
  1119. ACE SUBR ENTRY/EXIT
  1120. LDM RBUF+5
  1121. LPN 2
  1122. ZJN ACEX IF NO CHANNEL ERROR
  1123. LDM RBUF
  1124. LPN 76
  1125. NJN ACE3 IF ERROR IN MEMORY
  1126. LDM RBUF+1
  1127. SHN -5
  1128. ZJN ACE2 IF NOT PARITY / ISI CHANNEL ERROR
  1129. LPN 2
  1130. ZJN ACE1 IF NOT PARITY ERROR
  1131. LDN ECPE&ECIE
  1132. ACE1 LMN ECIE&ECER FAULT ANALYSIS CODE
  1133. ACE2 LMN ECER
  1134. UJN ACE4 SAVE FAULT CODE
  1135. AME SPACE 4,10
  1136. ** AME - ATTEMPT MONITOR EXCHANGE.
  1137. *
  1138. * EXIT (A) = 0.
  1139. *
  1140. * USES CM - CM+4.
  1141. *
  1142. * MACROS EXPE.
  1143.  
  1144.  
  1145. AME SUBR ENTRY/EXIT
  1146. EXPE *
  1147. AME1 LDC 6 CHECK FOR (MA) NON-ZERO
  1148. CRD CM
  1149. LDD CM
  1150. ADD CM+1
  1151. NJN AME1 IF EXCHANGE PACKAGE NOT READY
  1152. EXPE *
  1153. AME2 LDC 0 SET (B0) NON-ZERO
  1154. CWM AMEA,ON
  1155. SBN 1 EXCHANGE MONITOR
  1156. MXN 0
  1157. CRD CM
  1158. LDD CM+4
  1159. ZJN AMEX IF EXCHANGE TAKEN
  1160. LDN 28D
  1161. SBN 1 WAIT 20 MICROSECONDS ELAPSED
  1162. NJN *-1
  1163. UJN AME2 RETRY EXCHANGE
  1164.  
  1165.  
  1166. AMEA VFD 24/0 (P)
  1167. VFD 18/0 (A0)
  1168. VFD 18/0 (B0)
  1169. AMR SPACE 4,15
  1170. ** AMR - ACCESS MAINTENANCE REGISTER.
  1171. *
  1172. * ENTRY (A) = 6/ OC, 12/ RN
  1173. * OC = *RMRF* TO READ REGISTER.
  1174. * = *WMRF* TO WRITE REGISTER.
  1175. * RN = *IOU* REGISTER NUMBER.
  1176. *
  1177. * EXIT (A) = 0 IF NO CHANNEL ERROR.
  1178. * (RBUF) = REGISTER CONTENTS.
  1179. *
  1180. * USES T4.
  1181. *
  1182. * CALLS WMC.
  1183.  
  1184.  
  1185. AMR1 ACN. MR
  1186. LDN 0 OUTPUT NULL PARAMETER
  1187. OAN. MR
  1188. LDD T4 TRANSMIT REGISTER NUMBER
  1189. OAN. MR
  1190. LDN 0 WAIT CHANNEL EMPTY
  1191. RJM WMC
  1192. DCN. MR+40
  1193. NJN AMRX IF CHANNEL HUNG FULL
  1194. ACN. MR
  1195. LDN 10 READ / WRITE REGISTER
  1196. AMRA IAM. RBUF,MR
  1197.  
  1198. AMR SUBR ENTRY/EXIT
  1199. STD T4
  1200. SHN -14 POSITION OP CODE
  1201. LMD HN
  1202. ERRNZ IOUC-100 CODE DEPENDS ON VALUE
  1203. FAN. MR
  1204. LPN 20
  1205. ERRNZ RMRF+20-WMRF CODE DEPENDS ON VALUE
  1206. SHN 3
  1207. LMC IAMI+MR FORM I/O INSTRUCTION
  1208. STM AMRA
  1209. UJP AMR1 ACCESS MAINTENANCE REGISTER
  1210. ATT SPACE 4,15
  1211. ** ATT - PROCESS ATTENTION.
  1212. *
  1213. * ENTRY (A) = EXPECTED EXECUTION STATUS.
  1214. *
  1215. * EXIT (A) = 0 IF EXPECTED EXECUTION STATUS.
  1216. * (SS) = SLAVE STATUS (SET BY *GSS*).
  1217. *
  1218. * ERROR TO *ERR* IF TIMEOUT.
  1219. *
  1220. * USES PA.
  1221. *
  1222. * CALLS CTO, GSS, HYD, R1B, SSD.
  1223.  
  1224.  
  1225. ATT CON 0 ENTRY
  1226. STM EEST,DI
  1227. LDM ATT SAVE RETURN ADDRESS
  1228. STM ATTN,DI
  1229. ATT1 RJM HYD RETURN TO MAIN LOOP
  1230. LDC FCIS
  1231. RJM R1B REQUEST IDLE STATUS
  1232. STML IDST
  1233. LPML TMSK,UN
  1234. ZJN ATT2 IF ATTENTION NOT SET
  1235. LDM ATTN,DI
  1236. STD PA
  1237. RJM SSD SELECT SLAVE DEVICE
  1238.  
  1239. * RETURN TO CALLER WITH *IHD* STATUS.
  1240.  
  1241. LDM EEST,DI
  1242. RJM GSS GET SLAVE STATUS
  1243. LMM EEST,DI
  1244. LJM 0,PA RETURN TO CALLER
  1245.  
  1246. ATT2 RJM CTO
  1247. MJN ATT1 IF NOT TIMEOUT
  1248. LDN ETAT
  1249. RJM ERR PROCESS ERROR
  1250. CCR SPACE 4,15
  1251. ** CCR - CHECK FOR CHANNEL REQUEST.
  1252. *
  1253. * ENTRY (UC) = UNIT ACTIVITY COUNT.
  1254. * (IR+4) = CHANNEL NUMBER.
  1255. *
  1256. * EXIT (A) = 0 IF CHANNEL DOWN.
  1257. *
  1258. * USES CM - CM+4.
  1259. *
  1260. * CALLS DCR, RCT, SRF.
  1261. *
  1262. * MACROS DELAY, MONITOR.
  1263.  
  1264.  
  1265. CCR3 RJM SRF SET DRIVER RELOAD FLAG
  1266. CCR4 LDD CR
  1267.  
  1268. CCR SUBR ENTRY/EXIT
  1269. RJM RCT READ CHANNEL TABLE
  1270. SHN 21-5
  1271. MJN CCR3 IF CHANNEL GLOBALLY DOWN
  1272. LPN 40
  1273. ZJN CCR4 IF CHANNEL NOT REQUESTED
  1274. STM CHRQ DISABLE NEW ACTIVITY
  1275. LDD UC
  1276. NJN CCRX IF CURRENT ACTIVITY
  1277. RJM DCR DROP CHANNEL RESERVATION
  1278. * LDN 0
  1279. STM CHRQ ENABLE NEW ACTIVITY
  1280. CCR1 LDD CR
  1281. NJN CCRX IF CHANNEL RESERVED
  1282. CCR2 DELAY
  1283. LDD IR+4
  1284. STD CM+1 ATTEMPT TO RESERVE CHANNEL
  1285. MONITOR CCHM
  1286. LDD CM+2 SET RESERVATION STATUS
  1287. STD CR
  1288. RJM RCT READ CHANNEL TABLE
  1289. LPN 40
  1290. ZJN CCR1 IF CHANNEL NOT DOWN
  1291. LJM CCR3 SET DRIVER RELOAD FLAG
  1292. CFE SPACE 4,10
  1293. ** CFE - CHECK FOR I/O ERROR.
  1294. *
  1295. * EXIT (A) = 0.
  1296. *
  1297. * ERROR TO *ERR*.
  1298.  
  1299.  
  1300. CFE3 LDC FCRE ACCESS ERROR REGISTER
  1301. RJM FCN
  1302. ACN CH SIMULATE REGISTER READ
  1303. DCN CH+40
  1304. CFM *+2,CH CLEAR CHANNEL ERROR FLAG
  1305. LDD T1
  1306. CFE4 NJN CFE2 IF INCOMPLETE DATA TRANSFER
  1307.  
  1308. CFE SUBR ENTRY/EXIT
  1309. DCN CH+40
  1310. CFM CFE4,CH IF CHANNEL ERROR FLAG CLEAR
  1311. STD T1
  1312. LDML WFWA CHECK OPERATION IN PROGRESS
  1313. LMC FWSR
  1314. ZJN CFE3 IF SELECTIVE RESET
  1315. LDN ECIE
  1316. CFE1 RJM ERR PROCESS CHANNEL ERROR
  1317.  
  1318. CFE2 STM RBCT SAVE RESIDUAL BYTE COUNT
  1319. LDN EIDT
  1320. UJN CFE1 PROCESS ERROR
  1321. CFR SPACE 4,10
  1322. ** CFR - CHECK *PUT* FOR REQUEST.
  1323. *
  1324. * ENTRY (DI) = DEVICE STATUS BLOCK ADDRESS.
  1325. *
  1326. * USES T2, CM - CM+4.
  1327. *
  1328. * CALLS CSD, IIO, ISR, SAP.
  1329. *
  1330. * MACROS PUTE, SFA.
  1331.  
  1332.  
  1333. CFR3 LDD WB EXTRACT UNIT NUMBER
  1334. LPN 77
  1335. STD UN
  1336. LDD WB+1
  1337. STD EO SET EST ORDINAL
  1338. SFA EST
  1339. ADK EQDE READ EST ENTRY
  1340. CRD CM
  1341. LDD CM+3
  1342. LPN 77
  1343. SBN 1RF SET DEVICE TYPE
  1344. SHN 0-1
  1345. STD DT
  1346. LDD WB+3 SET *CBT* ORDINAL
  1347. STD CB
  1348. LDD PA
  1349. ZJN CFR4 IF NO REQUEST IN PROGRESS
  1350. RJM SAP SELECT ADAPTOR PORT
  1351. LDM RWST,DI
  1352. STD RW SET READ / WRITE STATUS
  1353. UJN CFR6 RETURN TO PROCESSOR
  1354.  
  1355. CFR4 LDD T2
  1356. ZJN CFR7 IF NO SPECIAL REQUEST
  1357. RJM ISR IDENTIFY SPECIAL REQUEST
  1358. ZJN CFRX IF UNKNOWN REQUEST
  1359. LDN 0
  1360. STD CB
  1361. CFR5 RJM CSD CONNECT TO *IHD*
  1362. ZJN CFRX IF UNIT UNAVAILABLE
  1363.  
  1364. * EXIT TO PROCESSOR AS APPLICABLE WITH -
  1365. * (PO) = *PUT* ORDINAL.
  1366. * (CB) = *CBT* ORDINAL.
  1367. * (EO) = EST ORDINAL.
  1368. * (RW) = READ / WRITE STATUS.
  1369. * (DT) = DEVICE TYPE.
  1370. * (UN) = UNIT NUMBER.
  1371. * (RF) = SPECIAL REQUEST FLAGS.
  1372. * (WB - WB+4) = *UNCT* WORD OF *PUT* ENTRY.
  1373.  
  1374. CFR6 LJM 0,PA RETURN TO PROCESSOR
  1375.  
  1376. CFR7 LDD CB INITIATE I/O
  1377. RJM IIO
  1378. NJN CFR5 IF I/O ENABLED ON THIS ACCESS
  1379.  
  1380. CFR SUBR ENTRY/EXIT
  1381. LDI DI
  1382. ERRNZ PUTO CODE DEPENDS ON VALUE
  1383. STD PO
  1384. SHN PUTLS READ *PUT* ENTRY
  1385. PUTE *
  1386. ADC PILL GET INTERLOCK STATUS
  1387. CRD CM
  1388. SBN PILL-UNCT FETCH UNIT CONTROL WORD
  1389. CRD WB
  1390. LDM ADDR,DI CHECK REQUEST PRESENT
  1391. STD PA
  1392. NJN CFR2 IF REQUEST IN PROGRESS
  1393. LDD CM+3
  1394. STD RF SET SPECIAL REQUESTS
  1395. DVRF BITSET DVDF-DVDF/12D*12D
  1396. LPN 77&DVRF EXTRACT OPERATOR REQUESTS
  1397. STD CM+3
  1398. SCN 1 CLEAR DEVICE UNAVAILABLE
  1399. STD T2
  1400. NJN CFR1 IF SPECIAL REQUEST PRESENT
  1401. LMD CM+3
  1402. NJN CFRX IF DEVICE UNAVAILABLE FOR I/O
  1403. ADD WB+3
  1404. ZJN CFRX IF NO I/O REQUEST
  1405. CFR1 LDD CM+4
  1406. CFRA ZJN CFR2 IF UNIT NOT INTERLOCKED
  1407. LMD OA
  1408. NJN CFRX IF NOT INTERLOCKED BY THIS DRIVER
  1409. CFR2 LJM CFR3
  1410. CFRB EQU *-1 (MODIFIED FOR TERMINATION PROCESSING)
  1411. CMC SPACE 4,10
  1412. ** CMC - CHECK MONITOR COMPLETE.
  1413. *
  1414. * EXIT (A) = (CM) = 0.
  1415. *
  1416. * USES CM - CM+4.
  1417. *
  1418. * CALLS AME.
  1419. *
  1420. * MACROS DELAY.
  1421.  
  1422.  
  1423. CMC SUBR ENTRY/EXIT
  1424. CMC1 LDD OA
  1425. CRD CM
  1426. LDD CM
  1427. ZJN CMCX IF NO REQUEST WAITING FOR RESPONSE
  1428. SHN 21-13
  1429. PJN CMC2 IF NOT TO RETRY REQUEST
  1430. SHN 13-21
  1431. LPC 177 CLEAR FLAGS
  1432. STD CM
  1433. LDD OA UPDATE OUTPUT REGISTER
  1434. CWD CM
  1435. RJM AME REISSUE REQUEST
  1436. CMC2 DELAY
  1437. UJN CMC1 RECHECK OUTPUT REGISTER
  1438. CMP SPACE 4,15
  1439. ** CMP - COMPLETE PROCESSING.
  1440. *
  1441. * ENTRY (SF) = DEVICE SELECTED STATUS.
  1442. * (UC) = UNIT ACTIVITY COUNT.
  1443. * (RW) = READ / WRITE STATUS.
  1444. *
  1445. * EXIT TO *HYD3*.
  1446. * (SF) = 0.
  1447. * (UC) = UNIT ACTIVITY COUNT DECREMENTED.
  1448. *
  1449. * USES WB+4.
  1450. *
  1451. * CALLS CMC, DCB, FCN, IEM, WFC.
  1452.  
  1453.  
  1454. CMP LDM ERCT,DI
  1455. ZJN CMP3 IF NO ERRORS
  1456. AOM ERCT,DI
  1457. CMP1 LDN HD0111-HD0100
  1458. RJM IEM ISSUE FINAL MESSAGE
  1459. * LDN 0
  1460. CMP2 STM ERCT,DI CLEAR ERROR COUNT
  1461. CMP3 STM IPPS,DI
  1462. CMP4 LDD SF
  1463. ZJN CMP5 IF DEVICE NOT SELECTED
  1464. LDC FWCA
  1465. RJM WFC CLEAR ATTENTION
  1466. LDC FCCH
  1467. RJM FCN CLEAR SELECT HOLD
  1468. SOD SF
  1469. CMP5 LDD RW SET DATA TRANSFER DIRECTION
  1470. SHN 13-0
  1471. LMM CBCT,DI APPEND CUMULATIVE BUFFER COUNT
  1472. STD WB+4
  1473. LDM RQIN,DI SET UP *CBT* LIST
  1474. LMC 4000
  1475. RJM DCB DELINK BUFFERS / RELEASE UNIT INTERLOCK
  1476. LDD WB+3
  1477. SHN 0-13
  1478. ZJN CMP6 IF UNIT INTERLOCK NOT RELEASED
  1479. SOD UC
  1480. LDN 0 CLEAR REQUEST IN PROGRESS
  1481. CMP6 STM ADDR,DI
  1482. STM CBCT,DI CLEAR *CBT* COUNT
  1483. STM RQIN,DI
  1484. STM SREQ,DI
  1485. RJM CMC
  1486. LJM HYD3 RETURN
  1487. CMPA EQU *-1
  1488.  
  1489. CMP7 LDN 0 SET REQUEST QUEUE EMPTY
  1490. STM RQIN,DI
  1491. UJP CMP5 RELEASE UNIT INTERLOCK
  1492. COS SPACE 4,10
  1493. ** COS - CHECK OPERATIONAL STATUS.
  1494. *
  1495. * ENTRY (A) = POSITIVE MASK TO RETURN ON BIT(S) SET.
  1496. * = NEGATIVE MASK TO RETURN ON BIT(S) CLEAR.
  1497. *
  1498. * EXIT (A) = 0 IF CONDITION SET.
  1499. * .LT. 0 IF TIMEOUT.
  1500. *
  1501. * ERROR TO *ERR* IF ADAPTOR DROPPED SELECT ACTIVE.
  1502. *
  1503. * USES T2, T3.
  1504. *
  1505. * CALLS CTO, R1B.
  1506.  
  1507.  
  1508. COS3 SHN 12
  1509. LPDL T2 CHECK CONDITION MET
  1510. LMDL T3
  1511. ZJN COSX IF CONDITION SET
  1512. RJM CTO
  1513. MJN COS2 IF NOT TIMEOUT
  1514. LCN 0
  1515.  
  1516. COS SUBR ENTRY/EXIT
  1517. STDL T2
  1518. PJN COS1 IF RETURN ON BIT(S) SET
  1519. LMC -0
  1520. STDL T2 COMPLEMENT MASK
  1521. LDN 0
  1522. COS1 STDL T3
  1523. COS2 LDC FCRO GET OPERATIONAL STATUS
  1524. RJM R1B
  1525. SHN 21-11
  1526. MJN COS3 IF *SELECT* ACTIVE
  1527. LDN EDSA
  1528. RJM ERR PROCESS ERROR
  1529. CPF SPACE 4,10
  1530. ** CLEAR *PUT* FLAG.
  1531. *
  1532. * ENTRY (A) = BIT NUMBER TO CLEAR IN *PILL* WORD.
  1533. *
  1534. * EXIT (A) = 0.
  1535. *
  1536. * USES T6, T7, CM - CM+4.
  1537. *
  1538. * CALLS CMC.
  1539. *
  1540. * MACROS MONITOR, PUTE.
  1541.  
  1542.  
  1543. CPF SUBR ENTRY/EXIT
  1544. SHN 6
  1545. STD T7 SET BIT NUMBER
  1546. LDC PILL*100+1
  1547. STD T6 WORD OFFSET + FIELD WIDTH
  1548. RJM CMC
  1549. * LDN 0 CLEAR UNUSED BYTE
  1550. STD CM+2
  1551. LDD MA STORE MESSAGE BUFFER PARAMETERS
  1552. CWD T6
  1553. LDN 1 PARAMETER WORD COUNT
  1554. STD CM+1
  1555. LDD PO
  1556. SHN PUTLS
  1557. PUTE *
  1558. ADC 0 SET BASE *PUT* ENTRY ADDRESS
  1559. STD CM+4
  1560. SHN -14
  1561. STD CM+3
  1562. MONITOR UTEM CLEAR *PUT* FLAG
  1563. * LDN 0
  1564. UJN CPFX RETURN
  1565. CSD SPACE 4,15
  1566. ** CSD - CONNECT TO SLAVE DEVICE.
  1567. *
  1568. * ENTRY (UN) = UNIT NUMBER.
  1569. * (CB) = *CBT* ORDINAL IF I/O REQUEST.
  1570. * (CM - CM+4) = EST ENTRY.
  1571. *
  1572. * EXIT (A) .NE. 0 IF UNIT CONNECTED.
  1573. *
  1574. * USES T2, T7, CM - CM+4.
  1575. *
  1576. * ERROR TO *ERR* IF SELECT REJECT.
  1577. *
  1578. * CALLS R1B, SSD, SUI.
  1579. *
  1580. * MACROS CBTE.
  1581.  
  1582.  
  1583. CSD SUBR ENTRY/EXIT
  1584. LDC 0
  1585. CHRQ EQU *-1
  1586. NJN CSD4 IF CHANNEL REQUESTED
  1587. STM LCMD,DI
  1588.  
  1589. * CHECK EST ENTRY FOR CHANNEL DOWN.
  1590.  
  1591. LDD CM+1 EXTRACT CHANNEL
  1592. LMD IR+4
  1593. LPN 77
  1594. ZJN CSD1 IF PATH SERVICED BY THIS DRIVER
  1595. LDN 1
  1596. CSD1 ADN CM+1 SET CHANNEL BYTE ADDRESS
  1597. STD T2
  1598. LDI T2 CHECK CHANNEL STATE
  1599. SHN -11
  1600. LMN 4
  1601. ZJN CSD6 IF CHANNEL UP AND AVAILABLE
  1602. SCN 1
  1603. NJN CSD4 IF CHANNEL DOWN OR NOT ENABLED
  1604. LDD CB
  1605. ZJN CSDX IF NOT I/O REQUEST
  1606. SHN CBTLS
  1607. CBTE *
  1608. ADC PAD4 GET CHANNEL FROM CBT ENTRY
  1609. CRD T7
  1610. ADN HSLK-PAD4 GET CHANNEL SELECT STATUS
  1611. CRD CM
  1612. LDD CM CHECK ERROR FLAGS
  1613. SHN 0-12
  1614. ZJN CSDX IF NOT CHANNEL SPECIFIC REQUEST
  1615. LDD T7 CHECK CHANNEL
  1616. SHN -6
  1617. LMD IR+4
  1618. ZJN CSD6 IF REQUEST FOR THIS DRIVER
  1619. CSD4 LDN 0
  1620. CSD5 UJP CSDX RETURN
  1621.  
  1622. CSD6 RJM SUI SET UNIT INTERLOCK
  1623. NJN CSD4 IF ASSIGNED ELSEWHERE
  1624. LDC FCIS
  1625. RJM R1B READ IDLE STATUS
  1626. STML IDST
  1627. RJM SSD SELECT *IHD*
  1628.  
  1629. * READ BIT SIGNIFICANT RESPONSE.
  1630.  
  1631. LDC FCSO FORCE SYNC OUT
  1632. RJM R1B
  1633. STML BSRN SAVE RESPONSE
  1634. LPML TMSK,UN
  1635. NJN CSD5 IF CORRECT UNIT SELECTED
  1636. LDN EICU
  1637. RJM ERR PROCESS ERROR
  1638. CSR SPACE 4,10
  1639. ** CSR - CLEAR SPECIAL REQUEST.
  1640. *
  1641. * EXIT TO *CMP*.
  1642. *
  1643. * CALLS CPF.
  1644.  
  1645.  
  1646. CSR BSS 0 ENTRY
  1647. LDM SREQ,DI
  1648. ZJN CSR1 IF REQUEST SELECTED BY DRIVER
  1649. RJM CPF
  1650. CSR1 LJM CMP COMPLETE PROCESSING
  1651. CTO SPACE 4,10
  1652. ** CTO - CHECK TIMEOUT.
  1653. *
  1654. * ENTRY (PO) = *PUT* ORDINAL.
  1655. *
  1656. * EXIT (A) .LT. 0 IF NOT TIMEOUT.
  1657. *
  1658. * USES T6, T7, CM - CM+4.
  1659. *
  1660. * MACROS FTTE.
  1661.  
  1662.  
  1663. CTO SUBR ENTRY/EXIT
  1664. LDD PO
  1665. SHK FTTLS READ *FTT* ENTRY
  1666. FTTE *
  1667. ADC 0
  1668. CRD CM
  1669. LDC RTCL FETCH CURRENT CLOCK VALUE
  1670. CRD T6
  1671. LDD T6 CHECK ELAPSED TIME
  1672. SBD CM+3
  1673. MJN CTOX IF NOT TIMEOUT
  1674. SHN 14
  1675. ADD T7
  1676. SBD CM+4
  1677. UJN CTOX RETURN
  1678. DCB SPACE 4,15
  1679. ** DCB - DELINK CONTROL BUFFERS.
  1680. *
  1681. * ENTRY (A) = VALUE FOR BYTE 3 OF *BIOM* REQUEST.
  1682. * (RW) = READ / WRITE STATUS.
  1683. *
  1684. * EXIT (A) = 0.
  1685. * (WB+3) = BYTE 3 OF *BIOM* REQUEST.
  1686. *
  1687. * USES RC, T2, T3, WB+3.
  1688. *
  1689. * CALLS IMR, SLB.
  1690.  
  1691.  
  1692. DCB1 LDM IORQ,DI EXTRACT *CBT* ORDINAL
  1693. STD PB
  1694. RJM SLB SET LINKAGE BITS
  1695. SOM RQIN,DI
  1696. ZJN DCB3 IF QUEUE NOW EMPTY
  1697. STD T3
  1698. LDD DI ADDRESS OF FIRST QUEUE ENTRY
  1699. ADN IORQ+1
  1700. STD T2
  1701. DCB2 LDI T2 MOVE STACK DOWN
  1702. STM -1,T2
  1703. AOD T2 ADVANCE LIST ADDRESS
  1704. SOD T3
  1705. NJN DCB2 IF NOT END OF MOVE
  1706. SOD RC
  1707. NJN DCB1 IF BUFFER COUNT NOT SATISFIED
  1708. DCB3 LDN DCBS
  1709. RJM IMR INITIATE MONITOR REQUEST
  1710. * LDN 0
  1711.  
  1712. DCB SUBR ENTRY/EXIT
  1713. STD WB+3
  1714. ZJN DCBX IF NULL REQUEST
  1715. LPN 77
  1716. ZJN DCB3 IF NO BUFFERS TO PROCESS
  1717. STD RC
  1718. LDD RW
  1719. ZJN DCB1 IF READ OPERATION
  1720. LDN 0
  1721. SBD RC ADJUST REQUEST QUEUE ENTRY COUNT
  1722. RAM RQIN,DI
  1723. UJN DCB3 ISSUE MONITOR REQUEST
  1724. DCR SPACE 4,10
  1725. ** DCR DROP CHANNEL RESERVATION.
  1726. *
  1727. * ENTRY (CR) = 1 IF CHANNEL RESERVED.
  1728. * (IR+4) = CHANNEL NUMBER.
  1729. *
  1730. * EXIT (A) = (CR) = 0.
  1731. *
  1732. * USES CM - CM+4.
  1733. *
  1734. * MACROS MONITOR.
  1735.  
  1736.  
  1737. DCR SUBR ENTRY/EXIT
  1738. LDD CR
  1739. ZJN DCRX IF CHANNEL NOT RESERVED
  1740. LDD IR+4
  1741. STD CM+1 DROP CHANNEL
  1742. MONITOR DCHM
  1743. * LDN 0 SET CHANNEL NOT RESERVED
  1744. STD CR
  1745. UJN DCRX RETURN
  1746. EIO SPACE 4,10
  1747. ** EIO - ENTER I/O REQUEST QUEUE.
  1748. *
  1749. * ENTRY (A) = *CBT* ORDINAL.
  1750. * (RW) = READ / WRITE STATUS.
  1751. *
  1752. * EXIT (PB) = *CBT* ORDINAL.
  1753. *
  1754. * USES T5.
  1755. *
  1756. * CALLS DCB, SLB.
  1757.  
  1758.  
  1759. EIO1 RJM SLB SET LINKAGE BITS
  1760. EIO2 AOM CBCT,DI
  1761. AOM RQIN,DI ADVANCE ENTRY COUNT
  1762. SBM EIOA,RW
  1763. MJN EIOX IF QUEUE NOT FULL
  1764. LDN 1
  1765. RJM DCB DELINK 1ST BUFFER IN LIST
  1766.  
  1767. EIO SUBR ENTRY/EXIT
  1768. STD PB
  1769. LDD RW
  1770. NJN EIO1 IF WRITE OPERATION
  1771. LDM RQIN,DI
  1772. ADD DI ADDRESS OF NEXT AVAILABLE SLOT
  1773. STD T5
  1774. LDD PB ENTER *CBT* ORDINAL IN QUEUE
  1775. STM IORQ,T5
  1776. UJN EIO2 ADVANCE ENTRY COUNT
  1777.  
  1778.  
  1779. EIOA BSS 0 DELINKING CRITERIA
  1780. CON 3
  1781. CON 10
  1782. ERR SPACE 4,15
  1783. ** ERR - PROCESS ERRORS.
  1784. *
  1785. * ENTRY (A) = FAULT ANALYSIS CODE.
  1786. * (CR) = CHANNEL RESERVATION STATUS.
  1787. *
  1788. * EXIT TO *CMP*.
  1789. *
  1790. * USES PA, T2, T3, T5, CM - CM+4, WB - WB+4.
  1791. *
  1792. * CALLS ACE, AMR, GDS, GSS, IEM, IMR, ISF, RCR, SCD, SET,
  1793. * SRS, STF, STO, UHD, WFC.
  1794.  
  1795.  
  1796. ERR CON 0 ENTRY
  1797. STD FC
  1798. LDM ESAD,DI
  1799. ZJN ERR1 IF NEW PASS THRU PROCESSOR
  1800. STD PA
  1801. LJM 0,PA CONTINUE
  1802.  
  1803. ERR1 STD T5 CLEAR CHANNEL ACTIVE
  1804. RJM SCD
  1805. AOM UNSW DISABLE UNIT SWITCH
  1806. LDC ERR5
  1807. STM ESAD,DI SET ERROR STEP ADDRESS
  1808.  
  1809. * GENERATE BML ERROR MESSAGE.
  1810.  
  1811. LDD FC SET INITIAL FAULT CODE
  1812. STM CODE
  1813. STM FALT
  1814. LDD DT SET SECTORS TRANSFERED COUNT
  1815. SHN 21-0
  1816. LMM CBCT,DI
  1817. MJN ERR2 IF LARGE SECTOR DEVICE
  1818. SHN 2
  1819. ERRNZ PSBFDH*4-PSBFDF CODE DEPENDS ON VALUE
  1820. ERR2 STM STCT
  1821. LDM CYLN,DI SET SEEK ADDRESS - CYLINDER
  1822. STM ICYL
  1823. LDM TKSN,DI SEEK ADDRESS - TRACK AND SECTOR
  1824. STM ITAS
  1825. ERR3 LCN 0 PRESET INTERMEDIATE FAULT CODES
  1826. STM FCS1
  1827. STM FCS2
  1828. STM FCS3
  1829. LDML LCMD,DI SET LAST *IHD* COMMAND
  1830. STML LSCC
  1831. LDM FCNA MOVE LAST CHANNEL FUNCTION
  1832. STM LCFN
  1833. SCF. ERR3,MR ACQUIRE MAINTENANCE REGISTER ACCESS
  1834. CON LDCI
  1835. IAN CH (FORCE CHANNEL TABLE ENTRY)
  1836. ORG *-1
  1837. CON RCSR+CH
  1838. RJM AMR READ CHANNEL STATUS REGISTER
  1839. DCN. MR+40
  1840. CCF. *+2,MR CLEAR CHANNEL FLAG
  1841. LDN 0
  1842. STD T2 CLEAR INDICES
  1843. STD T3
  1844. RJM ACE ANALYZE CHANNEL ERROR
  1845. ERR4 LDM RBUF,T2
  1846. SHN 10 PACK 8-BIT DATA
  1847. LMM RBUF+1,T2
  1848. STML RBUF,T3
  1849. AOD T3 ADVANCE INDEX
  1850. SHN 1
  1851. STD T2 SET INDEX
  1852. LMN 10
  1853. NJN ERR4 IF MORE REGISTER DATA
  1854. LDN ZERL
  1855. CRM RBUF+4,ON CLEAR UNUSED BYTES
  1856. LDD CR
  1857. ZJN ERR6 IF FUNCTION TIMEOUT
  1858. LDN 0
  1859. STD FC CLEAR PRESENT FAULT CODE
  1860. LDC FCRT
  1861. RJM FCN ISSUE READ *T* REGISTER FUNCTION
  1862. ACN CH
  1863. LDN 3 INPUT REGISTER CONTENTS
  1864. IAM RBUF+7,CH
  1865. DCN CH+40
  1866. ERR5 LDD FC SET INTERMEDIATE FAULT CODE
  1867. STM FCS1
  1868. ERR6 LDC EBUF+2*5 SET MESSAGE ASSEMBLY ADDRESS
  1869. STD T3
  1870. LDC 17S12+DBUF UNPACK HEX DATA
  1871. RJM UHD
  1872. ADN 2 APPEND LENGTH OF NON-HEX DATA
  1873. STD ML
  1874. LDC ERR28 SET NEXT ERROR STEP
  1875. STM ESAD,DI
  1876. LDN 0 CLEAR CHECK ATTENTION COUNT
  1877. STM CACT,DI
  1878. STM RSVD CLEAR RESERVED FIELD
  1879. STD FC
  1880. LDM RWST,DI SAVE READ / WRITE STATUS
  1881. STM IOST,DI
  1882. LDD CR
  1883. ZJP ERR51 IF FUNCTION TIMEOUT
  1884. RJM RCR
  1885. LDM LCMD,DI
  1886. ZJN ERR14 IF NO ACTIVE COMMAND
  1887. ERR10 AOM CACT,DI ADVANCE CHECK ATTENTION COUNT
  1888. LMN 6
  1889. ZJN ERR14 IF DEVICE LOCKED UP
  1890. LDN 3
  1891. RJM STO SET TIMEOUT = 3 SECONDS
  1892. LDN 0
  1893. RJM ATT PROCESS ATTENTION
  1894. ERR11 SHN -3
  1895. STD PA
  1896. LDM ERRB,PA SET PROCESSOR ADDRESS
  1897. ERR12 STD PA
  1898. LJM 0,PA EXIT TO PROCESSOR
  1899.  
  1900. ERR13 LDC FWEP CLEAR ATTENTION
  1901. RJM WFC
  1902. UJN ERR10 LOOP FOR NEXT ATTENTION
  1903.  
  1904. ERR14 RJM SSD SELECT SLAVE DEVICE
  1905. LDC ERR51
  1906. LJM SRS1 PROCESS SELECTIVE RESET
  1907.  
  1908. ERR16 LDC ERR51
  1909. UJN ERR20 SET POST PROCESSING ADDRESS
  1910.  
  1911. ERR17 LDC ERR38
  1912. UJN ERR20 SET POST PROCESSING ADDRESS
  1913.  
  1914. ERR18 LDN 0 CLEAR INTERMEDIATE FAULT CODE
  1915. STM FCS2
  1916. LDM ENAD,DI
  1917. UJN ERR12 EXIT TO POST PROCESSOR
  1918.  
  1919. ERR19 LDC ERR30 SET POST PROCESSING ADDRESS
  1920. ERR20 STM ENAD,DI
  1921. LDM SLST+1 SAVE SYSTEM INTERVENTION CODE
  1922. STM SIST,DI
  1923. LDM SLST+2 SAVE MANUAL INTERVENTION CODE
  1924. STM MIST,DI
  1925. LDD SS SAVE EXECUTION STATUS
  1926. STM GSST,DI
  1927. RJM GDS GET DEVICE STATUS
  1928. LDC FWCA
  1929. RJM WFC CLEAR ATTENTION
  1930. LDC EBUF+6*5
  1931. STD T3 SET DESTINATION DATA ADDRESS
  1932. LDC STSBL*10000+SLST
  1933. RJM UHD UNPACK HEX DATA
  1934. RAD ML
  1935. LDN 1 SELECT DUMP OF ERROR REGISTER
  1936. STM RWST,DI
  1937. ERR24 STD RW SET PROCESSOR INDEX
  1938. LDC ERR25
  1939. LJM LGE1 LOG *IHD* ERRORS
  1940.  
  1941. ERR25 SOM RWST,DI
  1942. PJN ERR24 IF YET TO DUMP ERROR LOG
  1943. LJM ERR18 EXIT TO POST PROCESSOR
  1944.  
  1945. ERR28 LDD FC SET INTERMEDIATE FAULT CODE
  1946. STM FCS2
  1947. LDC ERR50 SET ERROR STEP
  1948. STM ESAD,DI
  1949. LJM ERR14 PROCESS SELECTIVE RESET
  1950.  
  1951. ERR30 LDM GSST,DI CHECK EXECUTION STATUS
  1952. LPN 6
  1953. ZJP ERR51 IF NO INTERVENTION FLAGS
  1954.  
  1955. * ANALYZE INTERVENTION STATUS.
  1956.  
  1957. SHN -2 SET LIST INDEX
  1958. STD T2
  1959. ADN MIST SET STATUS WORD ADDRESS
  1960. ADD DI
  1961. STD T3
  1962. LDM ERRE,T2 SET LIST ADDRESS
  1963. STD T2
  1964. ERR31 LDN 2 ADVANCE LIST ADDRESS
  1965. RAD T2
  1966. LDI T2
  1967. ZJN ERR32 IF END OF LIST
  1968. LMI T3
  1969. LPC 377
  1970. NJN ERR31 IF NOT MATCHING INTERVENTION CODE
  1971.  
  1972. * ATTEMPT ERROR SPECIFIC RECOVERY.
  1973.  
  1974. ERR32 LDM 1,T2 SET PROCESSOR ADDRESS
  1975. STD T2
  1976. LDC ERR50 SET NEXT ERROR STEP
  1977. STM ESAD,DI
  1978. LDN 0
  1979. LJM 0,T2 EXIT TO PROCESSOR
  1980.  
  1981. ERR36 LDN EDNR SET NOT READY ERROR
  1982. STM FALT
  1983. LDML SLST+5 CHECK SLAVE STATUS
  1984. SHN 0-17
  1985. NJN ERR50 IF DISK SPINNING
  1986. LDM ERCT,DI
  1987. ZJN ERR38 IF INITIAL RETRY
  1988. LMN CSRC
  1989. NJN ERR50 IF NOT FIRST ALTERNATE RETRY
  1990. ERR38 LDC ERR50
  1991. LJM SPU1 PROCESS SPIN UP
  1992.  
  1993. ERR40 LDM IOST,DI RESTORE READ / WRITE STATUS
  1994. STM RWST,DI
  1995. STD RW
  1996. LDC ERR44 RUN DIAGNOSTIC
  1997. LJM RND1
  1998.  
  1999. ERR44 RJM STF PROCESS MEDIA ERROR
  2000. LDN EDPE&EOTC
  2001. * UJN ERR46 SET DATA PARITY ERROR
  2002.  
  2003. ERR46 LMN EOTC&ECPE
  2004. * UJN ERR47 SET OVER-TEMP CONDITION ERROR
  2005.  
  2006. ERR47 LMN ECPE&EDTF
  2007. * UJN ERR48 SET CHANNEL PARITY ERROR
  2008.  
  2009. ERR48 LMN EDTF SET DIAGNOSTIC TIMEOUT ERROR
  2010. ERR49 STM FALT
  2011.  
  2012. * COMPLETE ERROR PROCESSING.
  2013.  
  2014. ERR50 LDD FC SET INTERMEDIATE FAULT CODE
  2015. STM FCS3
  2016. ERR51 LDM IOST,DI RESTORE READ / WRITE STATUS
  2017. STD RW
  2018. LDN 0 CLEAR ERROR STEP
  2019. STM ESAD,DI
  2020. STM UNSW ENABLE UNIT SWITCH
  2021. AOM ERCT,DI ADVANCE ERROR COUNT
  2022. LMN MERC
  2023. NJN ERR53 IF NOT RETRY LIMIT
  2024. ERR52 AOM MISC
  2025. RJM SEC SET ERROR CODE IN *CBT*
  2026. LJM CMP1 COMPLETE PROCESSING
  2027.  
  2028. ERR53 LDN HD0100-HD0100
  2029. RJM IEM ISSUE ERROR MESSAGE
  2030. LDM FALT
  2031. LMN ETFN
  2032. ZJN ERR52 IF FUNCTION TIMEOUT ERROR
  2033. LMN EDTF&ETFN
  2034. ZJN ERR52 IF DIAGNOSTIC FAILURE
  2035. LDM SREQ,DI
  2036. NJN ERR54 IF NOT I/O PROCESSING
  2037. LDM ERCT,DI
  2038. LMN CSRC
  2039. ZJN ERR56 IF TIME FOR CHANNEL SWAP
  2040. LMN 1&CSRC
  2041. NJN ERR54 IF NOT FIRST RETRY
  2042. LDM RQIN,DI
  2043. STD WB+3
  2044. LDN IDSS INHIBIT DATA STREAMING
  2045. RJM IMR
  2046. ERR54 LDC 4000 DISABLE RELEASE OF UNIT INTERLOCK
  2047. STM RQIN,DI
  2048. LJM CMP4 RETRY REQUEST
  2049.  
  2050. ERR56 RJM SEC FORCE ALTERNATE CHANNEL SELECTION
  2051. LDN SSES
  2052. RJM ISF SET SUSPECT STATE
  2053. * LDN 0
  2054. LJM CMP2 COMPLETE PROCESSING
  2055.  
  2056.  
  2057. ERRB BSS 0
  2058. CON ERR14 (IHD IDLE)
  2059. CON ERR13 READ DATA AVAILABLE
  2060. CON ERR13 BUFFER SPACE AVAILABLE
  2061. CON ERR14 (UNDEFINED)
  2062. CON ERR16 COMMAND BLOCK INDEPENDENT
  2063. CON ERR14 (UNDEFINED)
  2064. CON ERR17 UNSOLICITED ATTENTION
  2065. CON ERR19 COMMAND COMPLETE
  2066.  
  2067. ERRC BSS 0 MANUAL INTERVENTION CODES
  2068. CON 0#C1,ERR36 DISK NOT READY
  2069. CON 0#63,ERR47 ISI I/O PARITY ERROR
  2070. CON 0#6A,ERR48 DIAGNOSTIC FAILURE
  2071. CON 0#6B,ERR46 TEMPERATURE FAULT
  2072. CON 0000,ERR51
  2073.  
  2074. ERRD BSS 0 SYSTEM INTERVENTION CODES
  2075. CON 0#41,ERR40 UNABLE TO READ HEADER
  2076. CON 0#42,ERR40 HEADER ERROR
  2077. CON 0#43,ERR40 UNABLE TO READ DATA
  2078. CON 0#A6,ERR48 DIAGNOSTIC FAILURE
  2079. CON 0000,ERR51
  2080.  
  2081. ERRE BSS 0 LIST ADDRESSES
  2082. CON ERRC-2 MANUAL INTERVENTION CODES
  2083. CON ERRD-2 SYSTEM INTERVENTION CODES
  2084. FCN SPACE 4,10
  2085. ** FCN - ISSUE FUNCTION.
  2086. *
  2087. * ENTRY (A) = FUNCTION CODE.
  2088. *
  2089. * ERROR TO *ERR*.
  2090. *
  2091. * CALLS RCS.
  2092.  
  2093.  
  2094. FCN SUBR ENTRY/EXIT
  2095. STM FCNA
  2096. LDN FTRC SET INTERNAL REPEAT COUNT
  2097. STD T0
  2098. FCN1 FNC 0,CH ISSUE FUNCTION
  2099. FCNA EQU *-1
  2100. LDC FTOD
  2101. FCN2 IJM FCNX,CH IF FUNCTION ACCEPTED
  2102. SBN 1
  2103. NJN FCN2 IF NOT TIMED OUT
  2104. DCN CH+40
  2105. SOD T0
  2106. NJN FCN1 IF RETRY COUNT NOT SATISFIED
  2107. STD SF
  2108. * LDN 0
  2109. RJM RCS GLOBALLY DOWN CHANNEL
  2110. LDN ETFN
  2111. RJM ERR PROCESS ERROR
  2112. GDS SPACE 4,10
  2113. ** GDS - GET DEVICE STATUS.
  2114. *
  2115. * CALLS CFE, FCN, WFW.
  2116.  
  2117.  
  2118. GDS SUBR ENTRY/EXIT
  2119. LDC FWDS
  2120. RJM WFW WRITE FUNCTION WORD
  2121. ACN CH
  2122. LDN DVSTL INPUT DEVICE STATUS
  2123. IAM DVST,CH
  2124. RJM CFE
  2125. LDC FCCS CLEAR COMMAND SEQUENCE
  2126. RJM FCN
  2127. UJN GDSX RETURN
  2128. GSS SPACE 4,15
  2129. ** GSS - GET SLAVE STATUS.
  2130. *
  2131. * ENTRY (A) = 0 TO IGNORE INTERVENTION STATUS.
  2132. *
  2133. * EXIT (A) = EXECUTION STATUS.
  2134. * (SS) = STATUS FLAGS.
  2135. *
  2136. * ERROR TO *ERR* IF *INTERVENTION REQUIRED*.
  2137. *
  2138. * USES T2.
  2139. *
  2140. * CALLS CFE, WFW.
  2141.  
  2142.  
  2143. GSS5 LMN ESCC RESTORE EXECUTION STATUS
  2144.  
  2145. GSS SUBR ENTRY/EXIT
  2146. STD T2
  2147. LDC FWSB
  2148. RJM WFW WRITE FUNCTION WORD
  2149. ACN CH
  2150. LDN SLSTL INPUT STATUS BLOCK
  2151. IAM SLST,CH
  2152. RJM CFE
  2153. LDML SLST CHECK COMMAND BLOCK NUMBER
  2154. LPN 17
  2155. NJN GSS4 IF INVALID BLOCK NUMBER
  2156. LDML SLST
  2157. STML EXST
  2158. SHN 0-10 EXTRACT STATUS FLAGS
  2159. STD SS
  2160. LPN 70 CHECK EXECUTION STATUS
  2161. LMN ESCC
  2162. NJN GSS5 IF NOT *COMMAND COMPLETE*
  2163. LDD T2
  2164. GSS1 ZJN GSS5 IF NO INTERVENTION STATUS ANALYSIS
  2165. LDD SS
  2166. LPN 6
  2167. ZJN GSS5 IF NO INTERVENTION FLAGS
  2168. GSS2 LDN EIRQ
  2169. GSS3 RJM ERR PROCESS ERROR
  2170.  
  2171. GSS4 LDN ECBN
  2172. UJN GSS3 COMMAND BLOCK NUMBER
  2173. IBM SPACE 4,20
  2174. ** IBM - ISSUE BML MESSAGE.
  2175. *
  2176. * ENTRY (A) = 6/ ML, 12/ SC
  2177. * ML = MESSAGE LENGTH (CM WORD COUNT).
  2178. * SC = MESSAGE SYMPTOM CODE.
  2179. * (RW) = READ / WRITE FLAG.
  2180. * (DT) = DEVICE TYPE.
  2181. * (EO) = EST ORDINAL.
  2182. * (UN) = UNIT NUMBER.
  2183. * (MISC) = 1 IF UNRECOVERED ERROR.
  2184. *
  2185. * EXIT (A) = (MISC) = 0.
  2186. *
  2187. * USES T2, T3.
  2188. *
  2189. * CALLS CMC, IMB, UEC.
  2190.  
  2191.  
  2192. IBM SUBR ENTRY/EXIT
  2193. LMC D1HY*400
  2194. STM BMLM+1
  2195. SHN -14 SET MESSAGE LENGTH
  2196. STD T2
  2197. ZJN IBM1 IF BASIC MESSAGE ONLY
  2198. LDN 1
  2199. IBM1 STD T3
  2200. LDD DT
  2201. ADC RM0120 SET MESSAGE ID
  2202. STM BMLM
  2203. LDML CREG,DI SET PORT NUMBER
  2204. SHN 6-16
  2205. * LPC 100
  2206. STM PORT
  2207. LDD UN SET UNIT NUMBER
  2208. STM UNIT
  2209. LDD EO SET EST ORDINAL
  2210. STM ESTO
  2211. LDM ERCT,DI SET RETRY COUNT
  2212. SHN 5
  2213. LMD RW MERGE READ / WRITE FLAG
  2214. SHN 1
  2215. RAM MISC
  2216. RJM CMC CHECK MONITOR COMPLETE
  2217. LDM MAD1
  2218. NJN IBM3 IF HEADER NOT REQUIRED
  2219. LDD T2 PARTIAL MESSAGE LENGTH
  2220. ADN 3 HEADER LENGTH
  2221. STM MSGL+1 COMPLETE MESSAGE LENGTH
  2222. LDM MAD2 MESSAGE ADDRESS
  2223. STD T0
  2224. LDN 3*5-1
  2225. STD T3
  2226. IBM2 SOD T0 MOVE HEADER TO MESSAGE
  2227. LDM MSGP,T3
  2228. STI T0
  2229. SOD T3
  2230. PJN IBM2 IF MOVE NOT COMPLETE
  2231. LDD T0
  2232. IBM3 RJM IMB ISSUE MESSAGE TO BUFFER
  2233. RJM UEC UPDATE MST ERROR COUNT
  2234. LDC MBUF
  2235. STM MAD2 RESTORE MESSAGE ADDRESS
  2236. LDN 0
  2237. STM MAD1
  2238. STM MISC CLEAR UNRECOVERED ERROR STATUS
  2239. * LDN 0
  2240. LJM IBMX RETURN
  2241.  
  2242.  
  2243. MAD1 CON 0 MESSAGE ADDRESS IF MESSAGE HAS HEADER.
  2244. MAD2 CON MBUF MESSAGE ADDRESS IF HEADER MUST BE ADDED.
  2245.  
  2246. MSGP CON 0 MESSAGE PREFIX
  2247. CON 0
  2248. MSGL CON 0,0 MESSAGE LENGTH
  2249. CON MLDY MESSAGE TYPE
  2250.  
  2251. BMLM BSS 0 BML MESSAGE PREFIX
  2252. VFD 12/RM0120 887 MESSAGE ID
  2253. VFD 12/ SYMPTOM CODE
  2254. VFD 6/,6/ CPP NUMBER, CHANNEL NUMBER
  2255. UNIT VFD 6/0,6/ UNUSED, UNIT NUMBER
  2256. PORT VFD 6/,6/0 PORT NUMBER, UNUSED
  2257.  
  2258. ESTO VFD 12/ EST ORDINAL
  2259. MISC VFD 6/,4/0,2/ RETRY COUNT, UNUSED, WRITE + REC FLAGS
  2260. VFD 12/0 UNUSED
  2261. MFID VFD 12/ MAINFRAME ID
  2262. VFD 12/0 UNUSED
  2263. IEM SPACE 4,10
  2264. ** IEM - ISSUE BML ERROR MESSAGE.
  2265. *
  2266. * ENTRY (A) = SYMPTOM CODE OFFSET FROM *HD0100*.
  2267. * (ML) = MESSAGE LENGTH (CM WORD COUNT).
  2268. *
  2269. * EXIT (A) = (ML) = 0.
  2270. *
  2271. * CALLS IBM.
  2272.  
  2273.  
  2274. IEM SUBR ENTRY/EXIT
  2275. ADD HN
  2276. ERRNZ HD0100-100 CODE DEPENDS ON VALUE
  2277. STD T0
  2278. LDC EBUF SET MESSAGE ADDRESS
  2279. STM MAD2
  2280. LDD ML MESSAGE LENGTH
  2281. SHN 14
  2282. LMD T0
  2283. RJM IBM ISSUE ERROR MESSAGE
  2284. * LDN 0
  2285. STD ML
  2286. UJN IEMX RETURN
  2287. IIO SPACE 4,15
  2288. ** IIO - INITIATE I/O.
  2289. *
  2290. * ENTRY (A) = (CB) = *CBT* ORDINAL.
  2291. *
  2292. * EXIT (A) = 0 IF I/O DISABLED ON THIS CHANNEL.
  2293. * (RW) = READ / WRITE STATUS.
  2294. * (PA) = PROCESSOR ADDRESS.
  2295. * (TO) = SEEK TIMEOUT VALUE.
  2296. * (NR - NR+4) = PHYSICAL ADDRESS OF REQUEST.
  2297. *
  2298. * USES T1 - T7.
  2299. *
  2300. * CALLS PEF.
  2301. *
  2302. * MACROS CBTE.
  2303.  
  2304.  
  2305. IIO3 STD PA
  2306. SCN 77 SET I/O DISABLED STATUS
  2307.  
  2308. IIO SUBR ENTRY/EXIT
  2309. SHN CBTLS
  2310. CBTE *
  2311. ADC PAD1 FETCH SEEK PARAMETERS FROM *CBT*
  2312. CRD NR
  2313. ADN PAD4-PAD1 GET CHANNEL FROM CBT ENTRY
  2314. CRD T1
  2315. ADN HSLK-PAD4 GET CHANNEL SELECT STATUS
  2316. CRD T2
  2317. SBN HSLK-IOLK GET READ / WRITE FLAG
  2318. CRD T3
  2319. LDD T2 CHECK ERROR FLAGS
  2320. SHN 0-12
  2321. ZJN IIO2 IF NO FLAGS
  2322. SHN -1
  2323. STD RW PROCESS ERROR FLAGS
  2324. RJM PEF
  2325. IIO1 NJN IIO3 IF I/O PREPROCESSING INDICATED
  2326. IIO2 LDD NR+1
  2327. STM WCBA+5 SET CYLINDER IN COMMAND BLOCK
  2328. STM CYLN,DI
  2329. LDD NR+2
  2330. STM TKSN,DI TRACK + SECTOR
  2331. SCN 77
  2332. SHN 2
  2333. LMD NR+2 SEPARATE INTO 8 BIT FIELDS
  2334. SCN 77
  2335. LMD NR+2 SET IN COMMAND BLOCK
  2336. STML WCBA+6
  2337. LDD T3
  2338. SHN 22-11 EXTRACT WRITE DATA FLAG
  2339. LPN 1
  2340. STM RWST,DI SET READ / WRITE STATUS
  2341. STD RW
  2342. LDN 3
  2343. STD TO SEEK TIMEOUT = 3 SECONDS
  2344. LDC PIO
  2345. UJN IIO1 SET PROCESSOR ADDRESS
  2346. IMR SPACE 4,15
  2347. ** IMR - INITIATE MONITOR REQUEST.
  2348. *
  2349. * ENTRY (A) = *BIOM* SUBFUNCTION.
  2350. * (PO) = *PUT* ORDINAL.
  2351. * (WB+3 - WB+4) = *BIOM* PARAMETERS.
  2352. *
  2353. * EXIT (A) = 0.
  2354. *
  2355. * USES WB - WB+2.
  2356. *
  2357. * CALLS AME, CMC.
  2358.  
  2359.  
  2360. IMR2 RJM AME ATTEMPT MONITOR EXCHANGE
  2361. * LDN 0
  2362.  
  2363. IMR SUBR ENTRY/EXIT
  2364. STD WB+1
  2365. LDD PO SET *PUT* ORDINAL
  2366. STD WB+2
  2367. LDN BIOM SET MONITOR FUNCTION
  2368. STD WB
  2369. RJM CMC CHECK MONITOR COMPLETE
  2370. LDD OA
  2371. CWD WB
  2372. UJN IMR2 ATTEMPT EXCHANGE
  2373. IOM SPACE 4,10
  2374. ** IOM - ISSUE OPERATOR MESSAGE.
  2375. *
  2376. * ENTRY (A) = ADDRESS OF MESSAGE.
  2377. * = 0 TO CLEAR MESSAGE.
  2378. * (EO) = EST ORDINAL.
  2379. *
  2380. * USES T1.
  2381. *
  2382. * CALLS C2D.
  2383.  
  2384.  
  2385. IOM1 LDD CP CLEAR THE MESSAGE
  2386. ADN MS2W
  2387. CWD T1
  2388.  
  2389. IOM SUBR ENTRY/EXIT
  2390. STD T1
  2391. ZJN IOM1 IF CLEAR MESSAGE CALL
  2392. STM IOMA
  2393. LDD EO CONVERT EST ORDINAL
  2394. RJM C2D
  2395. STM 2,T1 SET IN MESSAGE
  2396. LDD EO
  2397. SHN -6
  2398. LMC 2RQ0
  2399. STM 1,T1
  2400. LDD CP STORE OPERATOR MESSAGE
  2401. ADN MS2W
  2402. CWM **,TR
  2403. IOMA EQU *-1
  2404. UJN IOMX RETURN
  2405. ISF SPACE 4,15
  2406. ** ISF - ISSUE *SEQM* FUNCTION.
  2407. *
  2408. * ENTRY (A) = *SEQM* SUBFUNCTION.
  2409. * (EO) = EST ORDINAL.
  2410. * (IR+4) = CHANNEL NUMBER.
  2411. *
  2412. * EXIT (A) = 0.
  2413. *
  2414. * USES T2, CM - CM+4.
  2415. *
  2416. * CALLS CMC.
  2417. *
  2418. * MACROS MONITOR.
  2419.  
  2420.  
  2421. ISF SUBR ENTRY/EXIT
  2422. STD T2
  2423. RJM CMC CHECK MONITOR COMPLETE
  2424. LDD EO
  2425. STD CM+1 SET EST ORDINAL
  2426. LDD T2
  2427. STD CM+2 SET *SEQM* SUBFUNCTION
  2428. LDD IR+4
  2429. STD CM+3 SET CHANNEL NUMBER
  2430. MONITOR SEQM
  2431. * LDN 0
  2432. UJN ISFX RETURN
  2433. ISR SPACE 4,10
  2434. ** ISR - IDENTIFY SPECIAL REQUEST.
  2435. *
  2436. * ENTRY (A) = SPECIAL REQUEST FLAGS.
  2437. *
  2438. * EXIT (A) = 0 IF UNIDENTIFIED FLAG.
  2439. * (PA) = PROCESSOR ADDRESS.
  2440. * (RW) = SPECIAL REQUEST INDEX.
  2441.  
  2442.  
  2443. ISR2 LDM ISRA,RW SET SPECIAL REQUEST PROCESSOR
  2444. STD PA
  2445.  
  2446. ISR SUBR ENTRY/EXIT
  2447. SHN -1
  2448. STD T0 SAVE FLAGS
  2449. LCN 0
  2450. ERRNZ DUNF+1-SPDF CODE DEPENDS ON VALUE
  2451. STD RW
  2452. ISR1 AOD RW ADVANCE INDEX
  2453. LDD T0
  2454. SHN 21-0 CHECK NEXT FLAG
  2455. STD T0
  2456. PJN ISR1 IF NOT SET
  2457. LDD RW
  2458. STM RWST,DI SET INDEX FOR DIAGNOSTICS
  2459. ADN SPDF
  2460. STM SREQ,DI SET SPECIAL REQUEST FLAG
  2461. SBN DUCF+1
  2462. MJN ISR2 IF VALID REQUEST
  2463. LDN 0
  2464. UJN ISRX RETURN
  2465.  
  2466.  
  2467. ISRA BSS 0 SPECIAL REQUEST PROCESSORS
  2468. CON SPD SPIN-DOWN DRIVE
  2469. CON SPU SPIN-UP DRIVE
  2470. CON DUC DAYFILE UNIT CHARACTERISTICS
  2471. PEF SPACE 4,15
  2472. ** PEF - PROCESS ERROR FLAGS.
  2473. *
  2474. * ENTRY (RW) = ERROR INDEX.
  2475. * (CB) = *CBT* ORDINAL.
  2476. * (T1) = BYTE 0 OF *PAD4* WORD OF CBT ENTRY.
  2477. * (RF) = SPECIAL REQUEST FLAGS.
  2478. * (NR - NR+4) = *PAD1* WORD OF *CBT* ENTRY.
  2479. *
  2480. * EXIT (A) = 0 IF OK TO INITIATE I/O.
  2481. * = I/O PREPROCESSOR ADDRESS.
  2482. *
  2483. * USES RW, PA.
  2484. *
  2485. * CALLS CPF, IIO, WFC.
  2486.  
  2487.  
  2488. PEF6 LDN 0 INDICATE I/O IN ORDER
  2489.  
  2490. PEF SUBR ENTRY/EXIT
  2491. LDD T1
  2492. SHN -6
  2493. LMD IR+4 CHECK CHANNEL NUMBER
  2494. NJN PEFX IF I/O DISABLED ON THIS ACCESS
  2495. LDM ERCT,DI
  2496. NJN PEF1 IF PATH VERIFICATION INITIATED
  2497. LDM PEFA,RW
  2498. STM ERCT,DI SET INITIAL ERROR COUNT
  2499. PEF1 LDM IPPS,DI
  2500. NJN PEF6 IF I/O PREPROCESSING COMPLETE
  2501. LDD RW
  2502. SHN 14-0
  2503. NJN PEF2 IF NOT *1MV* DEVICE VERIFICATION
  2504.  
  2505. * CHECK DISK ADDRESS AT BEGINNING OF MAINTENANCE CYLINDER.
  2506.  
  2507. LDD NR+1 CHECK CURRENT CYLINDER
  2508. .CY SET MCLTDF-4000
  2509. ERRNZ MCLTDH-MCLTDF CODE DEPENDS ON VALUE
  2510. LMC .CY/2
  2511. NJN PEF6 IF NOT MAINTENANCE CYLINDER
  2512. LDD NR+2
  2513. NJN PEF6 IF DEVICE VERIFICATION IN PROGRESS
  2514. LDD RF
  2515. LPN DVRF
  2516. ZJN PEFX IF NO VERIFICATION DIAGNOSTICS
  2517. LCN PEF4-PEF3
  2518. PEF2 ADC PEF4
  2519. UJP PEFX RETURN
  2520.  
  2521. PEF3 LDN DVDF CLEAR DIAGNOSTICS REQUESTED FLAG
  2522. RJM CPF
  2523. PEF4 LDM PEFB,RW SET I/O PREPROCESSOR ADDRESS
  2524. STD PA
  2525. LDN 2 SELECT VERIFICATION DIAGNOSTICS
  2526. STD RW
  2527. STM RWST,DI SAVE AS READ / WRITE STATUS
  2528. LDC PEF5
  2529. LJM 0,PA EXIT TO PREPROCESSOR
  2530.  
  2531. PEF5 LDC FWCA CLEAR ATTENTION
  2532. RJM WFC
  2533. LDD CB INITIATE I/O
  2534. STM IPPS,DI
  2535. RJM IIO
  2536. LJM 0,PA EXIT TO PROCESSOR
  2537.  
  2538.  
  2539. PEFA BSS 0 INITIAL ERROR COUNT
  2540. CON 0
  2541. CON CSRC
  2542.  
  2543. PEFB BSS 0 I/O PREPROCESSOR
  2544. CON RND1
  2545. CON SRS1
  2546. RBD SPACE 4,10
  2547. ** RBD - READ BUFFERED DISK.
  2548. *
  2549. * ENTRY (CB) = CURRENT *CBT* ORDINAL.
  2550. *
  2551. * EXIT (A) = *ETTC* IF TRANSFER COMPLETE TIMEOUT.
  2552. *
  2553. * CALLS COS, EIO, SFR, WTR.
  2554.  
  2555.  
  2556. RBD SUBR ENTRY/EXIT
  2557. RBD1 RJM WTR WRITE *T* REGISTER
  2558. LDD CB
  2559. RJM EIO ENTER REQUEST IN I/O QUEUE
  2560. RJM SFR
  2561. ZJN RBDX IF NO CONSECUTIVE REQUEST FOUND
  2562. STD CB
  2563. LCN 1 CHECK OPERATIONAL STATUS
  2564. RJM COS
  2565. ZJN RBD1 IF TRANSFER COMPLETE
  2566. LDN ETTR
  2567. UJN RBDX RETURN ERROR
  2568. RCR SPACE 4,10
  2569. ** RCR - RESET CHANNEL REGISTERS.
  2570. *
  2571. * EXIT (SF) = 0 (DEVICE NOT SELECTED).
  2572. *
  2573. * CALLS FCN.
  2574.  
  2575.  
  2576. RCR SUBR HYD4 ENTRY/EXIT
  2577. DCN CH+40
  2578. LDK FCMC MASTER CLEAR THE ADAPTOR
  2579. RJM FCN
  2580. LDN 0 SET DEVICE NOT SELECTED
  2581. STD SF
  2582. UJN RCRX RETURN
  2583. RCS SPACE 4,10
  2584. ** RCS - REMOVE CHANNEL FROM SYSTEM USE.
  2585. *
  2586. * ENTRY (A) = EST ORDINAL IF CHANNEL IS TO BE DOWNED ON A
  2587. * PARTICULAR DEVICE.
  2588. * = 0 IF CHANNEL IS TO BE GLOBALLY DOWNED.
  2589. *
  2590. * USES CM - CM+4.
  2591. *
  2592. * MACROS DELAY, EXECUTE, MONITOR.
  2593.  
  2594.  
  2595. RCS SUBR ENTRY/EXIT
  2596. LMC 4000 SET DRIVER CALL FLAG, EST ORDINAL
  2597. STM RCSA+4
  2598. LDD MA WRITE *1DS* CALL IN MESSAGE BUFFER
  2599. CWM RCSA,ON
  2600. RCS1 LDN 0 SET NON-PRIORITY REQUEST
  2601. STD CM+1
  2602. EXECUTE 1DS,=
  2603. MONITOR RPPM
  2604. LDD CM+1
  2605. NJN RCSX IF *1DS* STARTED
  2606. DELAY
  2607. UJN RCS1 RETRY CALL
  2608.  
  2609.  
  2610. RCSA VFD 18/3L1DS,6/,12/DWNF,12/0,12/4000
  2611. RCT SPACE 4,10
  2612. ** RCT - READ CHANNEL TABLE.
  2613. *
  2614. * EXIT (A) = CHANNEL TABLE STATUS BYTE.
  2615. *
  2616. * USES NR - NR+4.
  2617. *
  2618. * MACROS CHTE.
  2619.  
  2620.  
  2621. RCT SUBR ENTRY/EXIT
  2622. CHTE *
  2623. LDC 0 READ CHANNEL TABLE ENTRY
  2624. CRD NR
  2625. RCTA LDD NR+0
  2626. UJN RCTX RETURN
  2627. RLB SPACE 4,15
  2628. ** RLB - READ LINKAGE BITS.
  2629. *
  2630. * ENTRY (A) = (T6) = ADDRESS FOR LINKAGE IN (CM - CM+4).
  2631. * (PB) = CONTROL BUFFER ORDINAL.
  2632. * (T1) = DATA BUFFER ADDRESS.
  2633. * (T2) = CONTROL BUFFER WORD NUMBER.
  2634. * (CM - CM+4) = *PAD* WORD OF *CBT* ENTRY.
  2635. *
  2636. * EXIT SECTOR LINKAGE SET IN *CBT* ENTRY.
  2637. *
  2638. * USES T6.
  2639. *
  2640. * MACROS CBTE.
  2641.  
  2642.  
  2643. RLB1 LDN 10+4 ADVANCE BUFFER ADDRESS
  2644. RAD T1
  2645. LDIL T1 EXTRACT LINKAGE FROM BUFFER
  2646. RLB2 SHN -14
  2647. SHN 10 POSITION FOR *CBT* ENTRY
  2648. STI T6
  2649. LDML 4,T1 EXTRACT LINKAGE FROM BUFFER
  2650. SHN -14
  2651. SHN 4 POSITION FOR *CBT* ENTRY
  2652. RAI T6
  2653. LDML 10,T1 EXTRACT LINKAGE FROM BUFFER
  2654. SHN -14
  2655. * SHN 0 POSITION FOR *CBT* ENTRY
  2656. RAI T6
  2657. AOD T6 ADVANCE *CBT* WORD ADDRESS
  2658. LMN CM+5
  2659. NJN RLB1 IF MORE LINKAGE
  2660. LDD PB
  2661. SHN CBTLS
  2662. CBTE *
  2663. ADC 0 FWA OF *CBT*
  2664. ADD T2
  2665. CWD CM UPDATE CONTROL BUFFER ENTRY
  2666.  
  2667. RLB SUBR ENTRY/EXIT
  2668. * LDD T6
  2669. UJN RLB2 MOVE SECTOR LINKAGE
  2670. R1B SPACE 4,10
  2671. ** R1B - READ ONE BYTE.
  2672. *
  2673. * ENTRY (A) = FUNCTION CODE.
  2674. *
  2675. * EXIT (A) = (CD) = CHANNEL DATA.
  2676. *
  2677. * CALLS CFE, FCN.
  2678.  
  2679.  
  2680. R1B SUBR ENTRY/EXIT
  2681. RJM FCN
  2682. ACN CH
  2683. IAN CH
  2684. STDL CD SAVE INPUT
  2685. LDN 0
  2686. RJM CFE CHECK FOR ERROR
  2687. LDDL CD
  2688. UJN R1BX RETURN
  2689. SAP SPACE 4,10
  2690. ** SAP - SELECT ADAPTOR PORT.
  2691. *
  2692. * CALLS FCN, WTC.
  2693.  
  2694.  
  2695. SAP SUBR ENTRY/EXIT
  2696. LDC FCWC
  2697. RJM FCN WRITE CONTROL REGISTER
  2698. ACN CH
  2699. LDML CREG,DI OUTPUT PORT SELECT
  2700. OAN CH
  2701. LDN 0 WAIT - TRANSMISSION COMPLETE
  2702. RJM WTC
  2703. UJN SAPX RETURN
  2704. SCD SPACE 4,10
  2705. ** SCD - STORE *CPD* DATA.
  2706. *
  2707. * ENTRY (A) = 0 TO INDICATE CHANNEL INACTIVE.
  2708. * = 1 TO INDICATE CHANNEL ACTIVE.
  2709. * (UC) = UNIT ACTIVITY COUNT.
  2710. *
  2711. * USES T7, CM - CM+4.
  2712. *
  2713. * MACROS CCTE.
  2714.  
  2715.  
  2716. SCD SUBR ENTRY/EXIT
  2717. STD T7
  2718. LDN ZERL CLEAR UNUSED BYTES
  2719. CRD CM
  2720. LDD UC INSERT UNIT COUNT
  2721. STD CM
  2722. CCTE *
  2723. LDC CREQ STORE *CPD* DATA
  2724. CWD T7
  2725. UJN SCDX RETURN
  2726. SEC SPACE 4,10
  2727. ** SEC - SET ERROR CODE.
  2728. *
  2729. * ENTRY (EO) = EST ORDINAL.
  2730. *
  2731. * USES T5, WB+3 - WB+4.
  2732. *
  2733. * CALLS IMR, RCR, RCS, SES.
  2734.  
  2735.  
  2736. SEC1 LDN 1 *CBT* COUNT TO BE DELINKED
  2737. STD WB+3
  2738. SHN 13-0 SET INTERLOCK RELEASED (FOR *CMP*)
  2739. STM RQIN,DI
  2740. LDM FALT
  2741. SHN -2 CREATE INDEX FROM FAULT CODE
  2742. STD T5
  2743. LDM TMSE,T5 SET MASS STORAGE ERROR CODE
  2744. STD WB+4
  2745. LDN SETS INSERT CODE IN *CBT*
  2746. RJM IMR
  2747. SOD UC DECREMENT UNIT ACTIVITY COUNT
  2748.  
  2749. SEC SUBR ENTRY/EXIT
  2750. RJM RCR RESET CHANNEL REGISTERS
  2751. LDD EO
  2752. STD T5 EST ORDINAL FOR *SES*
  2753. LDN STDE
  2754. RJM SES SET ERROR STATUS IN MST
  2755. LDM SREQ,DI
  2756. ZJN SEC1 IF I/O PROCESSING
  2757. LDD EO DOWN CHANNEL ON THIS DEVICE
  2758. RJM RCS
  2759. LJM CMP1 COMPLETE PROCESSING
  2760. SFR SPACE 4,15
  2761. ** SFR - SEARCH FOR CONSECUTIVE REQUEST.
  2762. *
  2763. * ENTRY (CB) = CURRENT *CBT* ORDINAL.
  2764. * (DT) = DEVICE TYPE.
  2765. *
  2766. * EXIT (A) = 0 IF NO CONSECUTIVE REQUEST FOUND.
  2767. * = (NB) = *CBT* ORDINAL OF NEXT REQUEST.
  2768. * (NR - NR+4) = PHYSICAL ADDRESS OF NEXT REQUEST.
  2769. *
  2770. * USES CM - CM+4, T1 - T6.
  2771. *
  2772. * MACROS CBTE.
  2773.  
  2774.  
  2775. SFR SUBR ENTRY/EXIT
  2776. LDD CB
  2777. SHN CBTLS FETCH SEEK PARAMETERS FROM *CBT*
  2778. CBTE *
  2779. ADC PAD1
  2780. CRD CM
  2781. ADN IOLK-PAD1 (T1) = I/O LINK-UP FLAGS
  2782. CRD T1
  2783. LDD T1 CHECK STREAMING ENABLED
  2784. LPN 40
  2785. NJN SFR1 IF DATA STREAMING DISABLED
  2786. LDD T1+2
  2787. ZJN SFRX IF NO REQUEST AVAILABLE
  2788. STD NB
  2789. SHN CBTLS
  2790. CBTE *
  2791. ADC PAD1 PHYSICAL ADDRESS OF NEXT REQUEST
  2792. CRD NR
  2793. ADN IOLK-PAD1 I/O LINK-UP WORD OF NEXT REQUEST
  2794. CRD T2
  2795. LDD T2 COMPARE LINK-UP FLAGS
  2796. LMD T1
  2797. LPC DRFM+ILFM
  2798. ZJN SFR3 IF SAME DIRECTION AND INTERLOCKED
  2799. SFR1 LDN 0
  2800. STD NB
  2801. SFR2 UJN SFRX RETURN
  2802.  
  2803. SFR3 LDD NR+1 CHECK SEEK PARAMETERS
  2804. SBD CM+1
  2805. ZJN SFR4 IF SAME CYLINDER
  2806. SBN 1
  2807. NJN SFR1 IF NOT NEXT CYLINDER
  2808. LDD NR+2
  2809. NJN SFR1 IF NOT CONSECUTIVE CYLINDER REQUEST
  2810. SBK PTCYDF*100
  2811. UJN SFR5 CHECK NEXT TRACK / SECTOR
  2812.  
  2813. ERRNZ PTCYDH-PTCYDF CODE DEPENDS ON VALUE
  2814.  
  2815. SFR4 LDD CM+2 CHECK NEXT SECTOR
  2816. ADM SFRA,DT
  2817. LMD NR+2
  2818. ZJN SFR6 IF NEXT SECTOR ON SAME TRACK
  2819. LDN 0
  2820. SFR5 ADD CM+2 SET NEXT TRACK
  2821. ADD HN
  2822. SBM SFRB,DT CHECK NEXT SECTOR
  2823. LMD NR+2
  2824. NJN SFR1 IF NOT NEXT SECTOR ON CONSECUTIVE TRACKS
  2825. SFR6 LDD NB
  2826. UJN SFR2 RETURN
  2827.  
  2828.  
  2829. SFRA BSS 0 PHYSICAL SECTORS PER I/O BUFFER
  2830. CON PSBFDF
  2831. CON PSBFDH
  2832.  
  2833. SFRB BSS 0 FACTOR FOR NEXT SECTOR CALCULATION
  2834. CON PSPTDF-PSBFDF
  2835. CON PSPTDH-PSBFDH
  2836. SLB SPACE 4,15
  2837. ** SLB - SET LINKAGE BITS.
  2838. *
  2839. * ENTRY (PB) = *CBT* ORDINAL.
  2840. * (RW) = READ / WRITE STATUS.
  2841. *
  2842. * EXIT LINKAGE BITS SET IN *CBT* ENTRY / UEM BUFFER.
  2843. *
  2844. * USES CM - CM+4, T0 - T6, UA - UA+1.
  2845. *
  2846. * CALLS RLB, SUA, WLB.
  2847. *
  2848. * MACROS CBTE.
  2849.  
  2850.  
  2851. SLB SUBR ENTRY/EXIT
  2852. LDD PB
  2853. RJM SUA SET UEM ADDRESS
  2854. LDN PAD1
  2855. STD T2
  2856. SRD T3
  2857. LDN 5 UEM WORD COUNT
  2858. STD T5
  2859. LDM SLBB,RW SET PROCESSOR ADDRESS
  2860. STM SLBA
  2861. SLB1 LRD UA LOAD *R* REGISTER
  2862. LDD PB
  2863. SHN CBTLS READ CONTROL BUFFER WORD
  2864. CBTE *
  2865. ADC 0 FWA OF *CBT*
  2866. ADD T2
  2867. CRD CM
  2868. LDC SBUF-4 SET BUFFER ADDRESS
  2869. STD T1
  2870. LDC 1S17 READ START OF BUFFER SEGMENT
  2871. CRML SBUF,T5
  2872. LDN CM+3 SET *CBT* ENTRY ADDRESS
  2873. STD T6
  2874. RJM 0 MOVE LINKAGE BITS
  2875. SLBA EQU *-1
  2876. LDN 10 ADVANCE *R* REGISTER IMAGE
  2877. RAD UA+1
  2878. SHN -14
  2879. RAD UA
  2880. AOD T2 ADVANCE CONTROL BUFFER WORD
  2881. LMN PAD4+1
  2882. NJN SLB1 IF NOT COMPLETE
  2883. LRD T3
  2884. UJP SLBX RETURN
  2885.  
  2886.  
  2887. SLBB CON RLB
  2888. CON WLB
  2889. SRF SPACE 4,10
  2890. ** SRF - SET DRIVER RELOAD FLAG.
  2891. *
  2892. * EXIT (A) = 0.
  2893. *
  2894. * USES CM - CM+4.
  2895. *
  2896. * CALLS CMC, DCR.
  2897. *
  2898. * MACROS CHTE, MONITOR.
  2899.  
  2900.  
  2901. SRF SUBR ENTRY/EXIT
  2902. RJM CMC
  2903. RJM DCR DROP CHANNEL RESERVATION
  2904. * LDN 0
  2905. STD CM+2 CLEAR UNUSED BYTE
  2906. CHTE *
  2907. LDC CTALL*2 ADDRESS OF CHANNEL CONTROLWARE TABLE ENTRY
  2908. STD CM+4
  2909. SHN -14
  2910. STD CM+3
  2911. LDN 1 SET NUMBER OF REQUESTS
  2912. STD CM+1
  2913. LDD MA STORE REQUEST IN MESSAGE BUFFER
  2914. CWM SRFA,CM+1
  2915. MONITOR UTEM SET RELOAD FLAG
  2916. * LDN 0
  2917. UJN SRFX RETURN
  2918.  
  2919.  
  2920. SRFA VFD 1/0,5/0,6/1,6/,42/1
  2921. SSD SPACE 4,15
  2922. ** SSD - SELECT SLAVE DEVICE.
  2923. *
  2924. * ENTRY (SF) = 1 IF DEVICE PREVIOUSLY SELECTED.
  2925. * (UN) = UNIT NUMBER.
  2926. *
  2927. * EXIT (A) .NE. 0 IF DEVICE SELECTED.
  2928. * (SF) = 1 IF DEVICE SELECTED.
  2929. *
  2930. * ERROR TO *ERR* IF SELECT REJECT.
  2931. *
  2932. * USES T2.
  2933. *
  2934. * CALLS FCN, R1B, SAP, WFW.
  2935.  
  2936.  
  2937. SSD4 AOD SF SET DEVICE SELECTED
  2938.  
  2939. SSD SUBR ENTRY/EXIT
  2940. LDD SF
  2941. NJN SSDX IF DEVICE PREVIOUSLY SELECTED
  2942. LDN DSRC
  2943. STD T2
  2944. RJM SAP SELECT ADAPTOR PORT
  2945. SSD1 LDD UN
  2946. LMC FWBS WRITE FUNCTION WORD
  2947. RJM WFW
  2948. SSD2 LDC FCRO GET OPERATIONAL STATUS
  2949. RJM R1B
  2950. SHN 0-11
  2951. LPN 35 EXTRACT PAUSE, SYNC IN/OUT, SELECT ACTIVE
  2952. LMN 1
  2953. ZJN SSD4 IF DEVICE SELECTED
  2954. LDC FCCH
  2955. RJM FCN CLEAR SELECT HOLD
  2956. SOD T2
  2957. NJN SSD1 IF RETRY COUNT NOT EXHAUSTED
  2958. LDC FCIS
  2959. RJM R1B CHECK IDLE STATUS
  2960. SHN -10
  2961. LPML TMSK,UN
  2962. ZJN SSD3 IF DRIVE NOT BUSY
  2963. LDN EDRA&ETSL
  2964. SSD3 LMN ETSL
  2965. RJM ERR PROCESS ERROR
  2966. STF SPACE 4,15
  2967. ** STF - REQUEST TRACK FLAW.
  2968. *
  2969. * ENTRY (CB) = CURRENT *CBT* ORDINAL.
  2970. * (EO) = EST ORDINAL.
  2971. *
  2972. * USES CM - CM+4, T3 - T3+4.
  2973. *
  2974. * CALLS CMC, C2D, IBM.
  2975. *
  2976. * MACROS CBTE, MONITOR.
  2977.  
  2978.  
  2979. STF SUBR ENTRY/EXIT
  2980. RJM CMC
  2981. LDD EO CONVERT EST ORDINAL
  2982. SHN -3
  2983. RJM C2D
  2984. STM STFB+1 SET ORDINAL IN MESSAGE
  2985. LDD EO
  2986. STD CM+1
  2987. LPN 7
  2988. SHN 6
  2989. ADC 2R0,
  2990. STM STFB+2
  2991. LDD CB FETCH *CBT* INFORMATION
  2992. SHN CBTLS
  2993. CBTE *
  2994. ADC PAD1
  2995. CRD T3
  2996. LDD T3+1 DETERMINE LOGICAL TRACK NUMBER
  2997. SHN 1
  2998. ERRNZ LTCYDF-2 CODE DEPENDS ON VALUE
  2999. ADC 4000
  3000. ERRNZ LTCYDH-LTCYDF CODE DEPENDS ON VALUE
  3001. STD CM+2
  3002. LDD T3+2
  3003. ERRNZ PTCYDF-4 CODE DEPENDS ON VALUE
  3004. SHN -7
  3005. ERRNZ PTCYDH-PTCYDF CODE DEPENDS ON VALUE
  3006. RAD CM+2
  3007. RJM C2D CONVERT TRACK NUMBER FOR MESSAGE
  3008. STM STFB+5
  3009. LDD CM+2
  3010. SHN -6
  3011. RJM C2D
  3012. STM STFB+4
  3013. LDK SFTS INSERT SUBFUNCTION
  3014. STD CM+3
  3015. MONITOR SMDM SET TRACK FLAW REQUEST IN MST
  3016. LDD CM+1
  3017. NJN STF2 IF THIS FLAW ALREADY REQUESTED
  3018. LDC STFA
  3019. STM MAD1 ISSUE ERROR LOG MESSAGE
  3020. RJM IBM
  3021. STF2 LJM STFX RETURN
  3022.  
  3023.  
  3024. STFA VFD 24/0 RESERVED
  3025. VFD 12/1 ERRLOG ALERT FLAG
  3026. VFD 12/STFAL MESSAGE LENGTH
  3027. VFD 12/ELDY ERRLOG DAYFILE
  3028.  
  3029. STFB DATA C*EQXXX,TKNNNN, MEDIA DEFECT ENCOUNTERED.*
  3030.  
  3031. .1 SET *-STFA+4
  3032. STFAL EQU .1/5
  3033. STO SPACE 4,10
  3034. ** STO - SET TIMEOUT.
  3035. *
  3036. * ENTRY (A) = TIMEOUT VALUE (IN SECONDS).
  3037. * (PO) = *PUT* ORDINAL.
  3038. *
  3039. * USES T5, T6, T7, CM - CM+4.
  3040. *
  3041. * MACROS FTTE.
  3042.  
  3043.  
  3044. STO SUBR ENTRY/EXIT
  3045. STD T6
  3046. LDC RTCL FETCH CURRENT TIME
  3047. CRD CM
  3048. LDD T6
  3049. RAD CM+1 SET TIME LIMIT
  3050. SHN -14
  3051. RAD CM
  3052. LDM STO SET CALLERS ADDRESS
  3053. STD T7
  3054. LDN 0
  3055. STD T5
  3056. LDD PO STORE TABLE ENTRY
  3057. SHK FTTLS
  3058. FTTE *
  3059. ADC 0
  3060. CWD T5
  3061. UJN STOX RETURN
  3062. SUA SPACE 4,10
  3063. ** SUA - SET UEM ADDRESS.
  3064. *
  3065. * ENTRY (A) = *CBT* ORDINAL.
  3066. *
  3067. * EXIT (UA - UA+1) = UEM ADDRESS / 100.
  3068. *
  3069. * USES CM - CM+4.
  3070. *
  3071. * MACROS CBTE.
  3072.  
  3073.  
  3074. SUA SUBR ENTRY/EXIT
  3075. SHN CBTLS
  3076. CBTE *
  3077. ADC IOLK READ *CBT* ENTRY
  3078. CRD CM
  3079. LDD CM+4 EXTRACT RELATIVE UEM ADDRESS
  3080. ADC 0
  3081. SUAA EQU *-1
  3082. SHN -6
  3083. STD UA+1 SET ABSOLUTE ADDRESS / 100
  3084. LDD CM+3
  3085. ADC 0
  3086. SUAB EQU *-1
  3087. SHN 6
  3088. RAD UA+1
  3089. SHN -14
  3090. STD UA
  3091. UJN SUAX RETURN
  3092. SUI SPACE 4,15
  3093. ** SUI - SET UNIT INTERLOCK.
  3094. *
  3095. * ENTRY (PO) = *PUT ORDINAL.
  3096. *
  3097. * EXIT (A) = 0 IF *PUT* ENTRY INTERLOCKED.
  3098. * (UC) = UNIT ACTIVITY COUNT INCREMENTED.
  3099. *
  3100. * USES CM - CM+4.
  3101. *
  3102. * CALLS CMC.
  3103. *
  3104. * MACROS MONITOR.
  3105.  
  3106.  
  3107. SUI1 AOD UC ADVANCE UNIT ASSIGNED COUNT
  3108. LDN 0
  3109.  
  3110. SUI SUBR ENTRY/EXIT
  3111. RJM CMC
  3112. LDD PO SET *PUT* ORDINAL
  3113. STD CM+2
  3114. LDN SUIS SET SUBFUNCTION
  3115. STD CM+1
  3116. MONITOR BIOM INTERLOCK DEVICE
  3117. LDD CM+1
  3118. ZJN SUI1 IF INTERLOCK ACQUIRED
  3119. LMD OA
  3120. UJN SUIX RETURN
  3121. TMSE SPACE 4,10
  3122. ** TMSE - TABLE OF MASS STORAGE ERROR CODES.
  3123. *
  3124. * INDEXED BY FAULT CODE / 4.
  3125.  
  3126.  
  3127. TMSE BSS 0
  3128. LOC 0
  3129.  
  3130. CON CHPE CHANNEL PARITY
  3131. CON CHFE CHANNEL FAILURE
  3132. CON FTOE FUNCTION TIMEOUT
  3133. CON PARE DATA PARITY (MEDIA)
  3134. CON NRDE DEVICE NOT READY
  3135. CON IDTE DATA TRANSFER
  3136. CON DSTE DEVICE STATUS
  3137. CON DSTE DEVICE STATUS
  3138. CON DSTE DEVICE STATUS
  3139. CON DSTE DEVICE STATUS
  3140. CON DDFE DIAGNOSTIC FAILURE
  3141. CON DRVE DRIVE RESERVED
  3142. LOC *O
  3143. TMSK SPACE 4,10
  3144. ** TMSK - TABLE OF UNIT MASKS.
  3145. *
  3146. * INDEXED BY UNIT NUMBER.
  3147.  
  3148.  
  3149. TMSK BSS 0
  3150. LOC 0
  3151.  
  3152. CON 200
  3153. CON 100
  3154. CON 040
  3155. CON 020
  3156. CON 010
  3157. CON 004
  3158. CON 002
  3159. CON 001
  3160. LOC *O
  3161. UEC SPACE 4,15
  3162. ** UEC - UPDATE MST ERROR COUNT.
  3163. *
  3164. * ENTRY (EO) = EST ORDINAL.
  3165. * (BMLM+2) = BML MESSAGE SYMPTOM CODE.
  3166. * (MISC - BIT 0) = 1 IF UNRECOVERED ERROR.
  3167. *
  3168. * USES CM - CM+4.
  3169. *
  3170. * MACROS MONITOR.
  3171.  
  3172.  
  3173. UEC SUBR ENTRY/EXIT
  3174. LDM BMLM+1
  3175. LMC D1HY*400+HD0111
  3176. NJN UECX IF NOT COMPLETION MESSAGE
  3177. LDD EO
  3178. STD CM+1 SET EST ORDINAL
  3179. LDM MISC
  3180. LPN 1 SET BYTE NUMBER
  3181. ADN 3
  3182. STD CM+2
  3183. LDN ICTS INCREMENT ERROR COUNT
  3184. STD CM+3
  3185. MONITOR SMDM
  3186. UJN UECX RETURN
  3187. UHD SPACE 4,15
  3188. ** UHD - UNPACK HEX DATA.
  3189. *
  3190. * ENTRY (A) = 6/ BC, 12/ SA
  3191. * BC = BYTE COUNT OF HEX DATA.
  3192. * SA = SOURCE DATA ADDRESS.
  3193. * (T3) = DESTINATION DATA ADDRESS.
  3194. *
  3195. * EXIT (A) = CM WORD COUNT OF 12 BIT DATA.
  3196. *
  3197. * USES T2, T4, T5.
  3198. *
  3199. * CALLS DV5.
  3200.  
  3201.  
  3202. UHD3 AOD T3 SET END OF 12 BIT DATA
  3203. STM UHDA
  3204. LDN ZERL ENSURE ZERO FILL TO CM WORD BOUNDARY
  3205. CRM *,ON
  3206. UHDA EQU *-1
  3207. LDD T3 SET BYTE COUNT OF 12 BIT DATA
  3208. SBD T5
  3209. RJM DV5 CONVERT TO CM WORD COUNT
  3210.  
  3211. UHD SUBR ENTRY/EXIT
  3212. STD T2
  3213. SHN -14 SET BYTE COUNT
  3214. STD T4
  3215. LDD T3 PRESERVE DESTINATION BUFFER ADDRESS
  3216. STD T5
  3217. UHD1 LDIL T2 UNPACK N+3RD BYTE
  3218. SHN 16
  3219. STI T3
  3220. SHN -6
  3221. SCN 77
  3222. STM 1,T3
  3223. AOD T3
  3224. SOD T4
  3225. UHD2 ZJN UHD3 IF END OF HEX DATA
  3226. AOD T2
  3227. LDIL T2 UNPACK N+4TH BYTE
  3228. SHN -10
  3229. RAI T3
  3230. AOD T3
  3231. LDIL T2
  3232. SHN 4
  3233. SCN 17
  3234. STI T3
  3235. SOD T4
  3236. ZJN UHD2 IF END OF HEX DATA
  3237. AOD T2
  3238. LDIL T2 UNPACK N+5TH BYTE
  3239. STM 1,T3
  3240. SHN -14
  3241. RAI T3
  3242. AOD T3
  3243. SOD T4
  3244. ZJN UHD2 IF END OF HEX DATA
  3245. AOD T2
  3246. AOD T3
  3247. UJP UHD1 CONTINUE UNPACK
  3248. WBD SPACE 4,10
  3249. ** WBD - WRITE BUFFERED DISK.
  3250. *
  3251. * ENTRY (CB) = CURRENT *CBT* ORDINAL.
  3252. *
  3253. * EXIT (A) = *ETTR* IF *T* REGISTER EMPTY TIMEOUT.
  3254. *
  3255. * CALLS COS, EIO, SFR, WTR.
  3256.  
  3257.  
  3258. WBD2 RJM WTR WRITE *T* REGISTER
  3259. RJM SFR
  3260. NJN WBD1 IF CONSECUTIVE REQUEST FOUND
  3261.  
  3262. WBD SUBR ENTRY/EXIT
  3263. LDD CB
  3264. WBD1 STD CB ENTER REQUEST IN I/O QUEUE
  3265. RJM EIO
  3266. LDN 2 CHECK OPERATIONAL STATUS
  3267. RJM COS
  3268. ZJN WBD2 IF *T* REGISTER EMPTY
  3269. LDN ETTR
  3270. UJN WBDX RETURN ERROR
  3271. WCB SPACE 4,15
  3272. ** WCB - WRITE COMMAND BLOCK.
  3273. *
  3274. * ENTRY (A) = 1/ CA, 1/, 16/ CC
  3275. * CA = 1 IF NOT CLEARING ATTENTION.
  3276. * CC = COMMAND CODE.
  3277. * (TO) = TIMEOUT VALUE FOR *FTT*.
  3278. *
  3279. * USES T3.
  3280. *
  3281. * CALLS FCN, R1B, STO, WFW, WTC.
  3282.  
  3283.  
  3284. WCB SUBR ENTRY/EXIT
  3285. STML WCBA+7
  3286. STML LCMD,DI
  3287. SHN 0-21 EXTRACT *CLEAR ATTENTION* STATUS
  3288. SHN 14-0
  3289. LMC FWCB INITIATE COMMAND BLOCK WRITE
  3290. WCB1 RJM WFW
  3291. LDN 10 SET LENGTH OF BLOCK
  3292. ACN CH
  3293. OAM WCBA,CH OUTPUT COMMAND BLOCK
  3294. RJM WTC
  3295. LDC 250D SET LOCAL TIMEOUT
  3296. STD T3
  3297. WCB2 LDC FCRO GET OPERATIONAL STATUS
  3298. RJM R1B
  3299. LPN 1
  3300. NJN WCB4 IF COMMAND BLOCK TRANSFER INCOMPLETE
  3301. * LDN 0
  3302. STM WCBA+4 CLEAR PARAMETER WORD
  3303. LDC FCCS
  3304. RJM FCN CLEAR COMMAND SEQUENCE
  3305. LDD TO
  3306. RJM STO SET REQUEST TIMEOUT
  3307. WCB3 UJP WCBX RETURN
  3308.  
  3309. WCB4 DELAY 7 WAIT AWHILE
  3310. SOD T3
  3311. NJN WCB2 IF NOT TIMEOUT
  3312. LDN ETCB
  3313. RJM ERR PROCESS ERROR
  3314.  
  3315.  
  3316. WCBA BSS 10 COMMAND BLOCK
  3317. WFC SPACE 4,10
  3318. ** WFC - WRITE FUNCTION WORD AND CLEAR.
  3319. *
  3320. * ENTRY (A) = FUNCTION WORD.
  3321. *
  3322. * CALLS FCN, WFW.
  3323.  
  3324.  
  3325. WFC SUBR ENTRY/EXIT
  3326. RJM WFW WRITE FUNCTION WORD
  3327. LDC FCCS CLEAR COMMAND SEQUENCE
  3328. RJM FCN
  3329. UJN WFCX RETURN
  3330. WFW SPACE 4,10
  3331. ** WFW - WRITE FUNCTION WORD.
  3332. *
  3333. * ENTRY (A) = FUNCTION WORD.
  3334. *
  3335. * CALLS FCN, WTC.
  3336.  
  3337.  
  3338. WFW SUBR ENTRY/EXIT
  3339. STML WFWA
  3340. LDC FCCS CLEAR COMMAND SEQUENCE
  3341. RJM FCN
  3342. LDC FCSS SET COMMAND SEQUENCE / SELECT HOLD
  3343. RJM FCN
  3344. LDN 1 SET BYTE COUNT
  3345. ACN CH
  3346. OAM WFWA,CH OUTPUT FUNCTION WORD
  3347. RJM WTC
  3348. UJN WFWX RETURN
  3349.  
  3350.  
  3351. WFWA CON 0 FUNCTION WORD BUFFER
  3352. WLB SPACE 4,10
  3353. ** WLB - WRITE LINKAGE BITS.
  3354. *
  3355. * ENTRY (A) = (T6) = ADDRESS FOR LINKAGE IN (CM - CM+4).
  3356. * (T1) = DATA BUFFER ADDRESS.
  3357. * (T5) = NUMBER OF WORDS TO WRITE.
  3358. * (CM - CM+4) = *PAD* WORD OF *CBT* ENTRY.
  3359. *
  3360. * EXIT SECTOR LINKAGE SET IN DATA BUFFER.
  3361. *
  3362. * USES T6.
  3363.  
  3364.  
  3365. WLB1 LDN 10+4 ADVANCE BUFFER ADDRESS
  3366. RAD T1
  3367. LDI T6 EXTRACT LINKAGE FROM *CBT* ENTRY
  3368. SHN -10
  3369. * LPN 17
  3370. SHN 14 POSITION FOR DATA BUFFER
  3371. LMI T1
  3372. STIL T1
  3373. WLB2 LDI T6 EXTRACT LINKAGE FROM *CBT* ENTRY
  3374. SHN -4
  3375. LPN 17
  3376. SHN 14 POSITION FOR DATA BUFFER
  3377. LMM 4,T1
  3378. STML 4,T1
  3379. LDI T6 EXTRACT LINKAGE FROM *CBT* ENTRY
  3380. * SHN 0
  3381. LPN 17
  3382. SHN 14 POSITION FOR DATA BUFFER
  3383. LMM 10,T1
  3384. STML 10,T1
  3385. AOD T6 ADVANCE *CBT* WORD ADDRESS
  3386. LMN CM+5
  3387. NJN WLB1 IF MORE LINKAGE
  3388. LDC 1S17
  3389. CWML SBUF,T5 UPDATE DATA BUFFER
  3390.  
  3391. WLB SUBR ENTRY/EXIT
  3392. * LDD T6
  3393. UJN WLB2 MOVE SECTOR LINKAGE
  3394. WMC SPACE 4,10
  3395. ** WMC - WAIT MAINTENANCE CHANNEL EMPTY.
  3396. *
  3397. * ENTRY (A) = 0 IF TRANSFER COMPLETE.
  3398. * (T5) = 0 IF INITIAL ENTRY.
  3399. *
  3400. * EXIT (A) = 0 IF CHANNEL EMPTY.
  3401. * = (T5) IF CHANNEL HUNG FULL.
  3402. *
  3403. * USES CM - CM+4.
  3404.  
  3405.  
  3406. WMC3 LDD T5
  3407. ZJN WMCX IF NO ERRORS
  3408. LDN ZERL
  3409. CRD CM CLEAR BUFFER
  3410. LDD CP
  3411. ADN MS2W CLEAR CP MESSAGE
  3412. CWD CM
  3413. LDN 0 INDICATE CHANNEL EMPTY
  3414.  
  3415. WMC SUBR ENTRY/EXIT
  3416. NJN WMC2 IF INCOMPLETE TRANSFER
  3417. LDD TH
  3418. WMC1 EJM. WMC3,MR IF TRANSMISSION COMPLETE
  3419. SBN 1
  3420. NJN WMC1 IF NOT TIMED OUT
  3421. WMC2 DCN. MR+40
  3422. CCF. *+2,MR CLEAR CHANNEL FLAG
  3423. LDD CP
  3424. ADN MS2W STORE CP MESSAGE
  3425. CWM WMCA,TR
  3426. STD T5
  3427. UJN WMCX RETURN
  3428.  
  3429.  
  3430. WMCA DATA C*MR ERROR.*
  3431. WTC SPACE 4,10
  3432. ** WTC - WAIT TRANSMISSION COMPLETE.
  3433. *
  3434. * EXIT (A) = 0.
  3435. *
  3436. * ERROR TO *ERR*.
  3437. *
  3438. * USES T1.
  3439. *
  3440. * CALLS CFE.
  3441.  
  3442.  
  3443. WTC3 LDD T1 CHECK FOR I/O ERROR
  3444. RJM CFE
  3445. * LDN 0 EXIT CONDITION FROM *CFE*
  3446.  
  3447. WTC SUBR ENTRY/EXIT
  3448. STD T1
  3449. LDN 5 SET TIMEOUT = 5*262 MILLISECONDS
  3450. STD T0
  3451. WTC1 LDN 0
  3452. WTC2 EJM WTC3,CH IF LAST BYTE TAKEN OFF CHANNEL
  3453. SBN 1
  3454. NJN WTC2 IF NOT TIMED OUT
  3455. SOD T0
  3456. NJN WTC1 IF NOT TIMEOUT
  3457. DCN CH+40
  3458. LDN ECHF
  3459. RJM ERR PROCESS CHANNEL ERROR
  3460. WTR SPACE 4,10
  3461. ** WTR - WRITE *T* REGISTER.
  3462. *
  3463. * ENTRY (CB) = *CBT* ORDINAL.
  3464. * (TO) = TIMEOUT VALUE FOR *FTT*.
  3465. *
  3466. * CALLS FCN, STO, SUA, WTC.
  3467.  
  3468.  
  3469. WTR SUBR ENTRY/EXIT
  3470. LDD CB
  3471. RJM SUA SET UEM ADDRESS
  3472. LDD UA+1
  3473. SHN 11
  3474. SCN 7
  3475. STML WTRA+2 FORM ABSOLUTE UEM ADDRESS
  3476. LDD UA
  3477. SHN 14
  3478. LMD UA+1
  3479. SHN 11-20 SET IN *T* REGISTER
  3480. STM WTRA+1
  3481. LDC FCWT ISSUE WRITE *T* REGISTER FUNCTION
  3482. RJM FCN
  3483. LDN 3 SET BLOCK LENGTH
  3484. ACN CH
  3485. OAM WTRA,CH OUTPUT BUFFER PARAMETERS
  3486. RJM WTC
  3487. LDD TO SET REQUEST TIMEOUT
  3488. RJM STO
  3489. UJP WTRX RETURN
  3490.  
  3491.  
  3492. WTRA BSS 0 *T* REGISTER BUFFER
  3493. CONL 40000 BYTE LENGTH OF I/O TRANSFER
  3494. CONL 0,0 UEM ADDRESS OF BUFFER
  3495. TITLE MISCELLANEOUS.
  3496. SPACE 4,10
  3497. ** COMMON DECKS.
  3498.  
  3499.  
  3500. *CALL COMPC2D
  3501. RND$ EQU 0 DEFINE ROUNDING FOR *COMPDV5*
  3502. *CALL COMPDV5
  3503. M8K$ EQU 1 USE LONG INSTRUCTIONS
  3504. *CALL COMPIMB
  3505. *CALL COMPSES
  3506. SPACE 4,10
  3507. ** BUFFERS.
  3508.  
  3509.  
  3510. SLST BSS 0 SLAVE STATUS
  3511. DVST EQU SLST+SLSTL DEVICE STATUS
  3512.  
  3513. EHDR EQU DVST+DVSTL ERROR MESSAGE HEADER BUFFER
  3514. EBUF EQU EHDR+5*3 ERROR MESSAGE ASSEMBLY BUFFER
  3515. CODE EQU EBUF INITIAL FAULT CODE
  3516. FCS1 EQU EBUF+1 FAULT CODE - ERROR STEP 1
  3517. FCS2 EQU EBUF+2 FAULT CODE - ERROR STEP 2
  3518. FCS3 EQU EBUF+3 FAULT CODE - ERROR STEP 3
  3519. FALT EQU EBUF+4 FINAL FAULT CODE
  3520. RSVD EQU EBUF+5 RESERVED
  3521. RBCT EQU EBUF+6 RESIDUAL BYTE COUNT
  3522. STCT EQU EBUF+7 SECTORS TRANSFERED COUNT
  3523. ICYL EQU EBUF+10 CYLINDER ON INITIAL SEEK
  3524. ITAS EQU EBUF+11 TRACK + SECTOR ON INITIAL SEEK
  3525.  
  3526. DBUF EQU EBUF+EBUFL DATA BUFFER
  3527. EXST EQU DBUF EXECUTION STATUS
  3528. IDST EQU DBUF+1 IDLE STATUS
  3529. BSRN EQU DBUF+2 BIT SIGNIFICANT RESPONSE
  3530. LSCC EQU DBUF+3 LAST SLAVE COMMAND
  3531. LCFN EQU DBUF+4 LAST CHANNEL FUNCTION
  3532. RBUF EQU DBUF+5 REGISTER BUFFER
  3533.  
  3534. SBUF EQU DBUF+DBUFL SCRATCH BUFFER
  3535.  
  3536. MBUF EQU SBUF+5*3 MESSAGE ASSEMBLY BUFFER
  3537. TITLE PRESET ROUTINES.
  3538. CCP SPACE 4,10
  3539. ** CCP - CHECK CALLING PROGRAM.
  3540. *
  3541. * EXIT (A) = 0.
  3542. *
  3543. * USES CM - CM+4.
  3544. *
  3545. * CALLS DFM.
  3546. *
  3547. * MACROS MONITOR.
  3548.  
  3549.  
  3550. CCP SUBR ENTRY/EXIT
  3551. LDK NCPL
  3552. CRD CM GET NUMBER OF CONTROL POINTS
  3553. AOD CM+1
  3554. SHN 7
  3555. LMD CP
  3556. ZJN CCPX IF DRIVER AT SYSTEM CP
  3557. LDC CCPA
  3558. RJM DFM ISSUE DAYFILE MESSAGE
  3559. MONITOR ABTM
  3560. LJM PPR EXIT TO PP RESIDENT
  3561.  
  3562.  
  3563. CCPA DATA C* 1HY - UNAUTHORIZED CALL.*
  3564. IST SPACE 4,15
  3565. ** IST - INITIALIZE DEVICE STATE TABLE.
  3566. *
  3567. * ENTRY (PO) = 0.
  3568. * (RC) = NUMBER OF ENTRIES IN *PUT*.
  3569. *
  3570. * EXIT (A) = 0 IF NO DEVICES FOR THIS DRIVER.
  3571. *
  3572. * USES DI, PO, CM - CM+4.
  3573. *
  3574. * MACROS PUTE, SFA.
  3575.  
  3576.  
  3577. IST6 LDD DI DEFINE END OF DEVICES
  3578. STM HYDA
  3579. LMC DSTB SET EXIT CONDITION
  3580.  
  3581. IST SUBR ENTRY/EXIT
  3582. LDC DSTBL-1
  3583. STD DI
  3584. IST1 LDN 0 CLEAR DEVICE STATE TABLE
  3585. STI DI
  3586. SOD DI
  3587. LMC DSTB
  3588. NJN IST1 IF MORE TO CLEAR
  3589. IST2 AOD PO
  3590. LMD RC
  3591. ZJN IST6 IF END OF PHYSICAL UNIT TABLE
  3592. LDD PO
  3593. SHN PUTLS READ *PUT* ENTRY
  3594. PUTE *
  3595. ADC UNCT GET UNIT CONTROL WORD
  3596. CRD CM
  3597. SFA EST,CM+1 FETCH EST ENTRY
  3598. ADK EQDE
  3599. CRD CM
  3600. LDN CM INITIALIZE CHANNEL BYTE ADDRESS
  3601. STD CM
  3602. IST3 AOD CM ADVANCE PATH DESCRIPTOR ADDRESS
  3603. LMN CM+3
  3604. ZJN IST2 IF TWO POSSIBLE CHANNELS CHECKED
  3605. LDI CM
  3606. ZJN IST3 IF NULL ACCESS
  3607. LMD IR+4
  3608. LPN 77
  3609. IST4 NJN IST3 IF NOT THIS DRIVERS CHANNEL
  3610.  
  3611. IST5 LDD PO SET *PUT* ORDINAL IN STATE TABLE
  3612. STI DI
  3613. ERRNZ PUTO CODE DEPENDS ON VALUE
  3614. LDI CM
  3615. LPC 200 SET PORT SELECT IN CONTROL REGISTER
  3616. SHN 16-7
  3617. STML CREG,DI
  3618. LDN DSTBE ADVANCE STATE TABLE ADDRESS
  3619. RAD DI
  3620. LMC DSTBL
  3621. NJN IST4 IF NOT AT BLOCK LIMIT
  3622. LJM IST6 SET INITIAL STATE TABLE ADDRESS
  3623. MCI SPACE 4,10
  3624. ** MCI - MODIFY CHANNEL INSTRUCTIONS.
  3625. *
  3626. * ENTRY (IR+4) = CONCURRENT CHANNEL NUMBER.
  3627. *
  3628. * EXIT (A) = 0.
  3629. *
  3630. * USES T1, T2.
  3631.  
  3632.  
  3633. MCI1 RAIL T2 MODIFY CHANNEL INSTRUCTION
  3634. AOD T1
  3635. MCI2 LDM TCHA,T1 EXTRACT NEXT ADDRESS
  3636. STD T2
  3637. LDD T0 CHECK END OF LIST
  3638. CHTL *
  3639. SBN CH
  3640. NJN MCI1 IF MORE INSTRUCTIONS TO MODIFY
  3641.  
  3642. MCI SUBR ENTRY/EXIT
  3643. LDD IR+4
  3644. LPN 37 EXTRACT CHANNEL NUMBER
  3645. STD T0
  3646. LDN 0 INITIALIZE REMOTE TABLE INDEX
  3647. STD T1
  3648. UJN MCI2 ENTER LOOP
  3649. TCHA SPACE 4,10
  3650. ** TABLE OF CHANNEL INSTRUCTIONS ADDRESSES.
  3651.  
  3652.  
  3653. TCHA CHTB
  3654. RSTC RESTORE CHANNEL INSTRUCTIONS
  3655. TCBT SPACE 4,10
  3656. ** TABLE OF INSTRUCTIONS REQUIRING FWA OF *CBT*.
  3657.  
  3658.  
  3659. TCBT BSS 0
  3660. TCBT HERE
  3661. CON 0 TERMINATE TABLE
  3662. TCCT SPACE 4,10
  3663. ** TABLE OF INSTRUCTIONS REQUIRING ADDRESS OF *CCT* ENTRY.
  3664.  
  3665.  
  3666. TCCT BSS 0
  3667. TCCT HERE
  3668. CON 0 TERMINATE TABLE
  3669. TCHT SPACE 4,10
  3670. ** TABLE OF INSTRUCTIONS REQUIRING FWA OF CHANNEL TABLE.
  3671.  
  3672.  
  3673. TCHT BSS 0
  3674. TCHT HERE
  3675. CON 0 TERMINATE TABLE
  3676. TEMB SPACE 4,10
  3677. ** TABLE OF INSTRUCTIONS REQUIRING FWA OF *EMB*.
  3678.  
  3679.  
  3680. TEMB BSS 0
  3681. QUAL COMPIMB
  3682. TEMB HERE
  3683. QUAL *
  3684. CON 0 TERMINATE TABLE
  3685. TEXP SPACE 4,10
  3686. ** TABLE OF INSTRUCTIONS REQUIRING FWA OF PP EXCHANGE PACKAGE.
  3687.  
  3688.  
  3689. TEXP BSS 0
  3690. TEXP HERE
  3691. CON 0 TERMINATE TABLE
  3692. TFTT SPACE 4,10
  3693. ** TABLE OF INSTRUCTIONS REQUIRING FWA OF *FTT*.
  3694.  
  3695.  
  3696. TFTT BSS 0
  3697. TFTT HERE
  3698. CON 0 TERMINATE TABLE
  3699. TPUT SPACE 4,10
  3700. ** TABLE OF INSTRUCTIONS REQUIRING FWA OF *PUT*.
  3701.  
  3702.  
  3703. TPUT BSS 0
  3704. TPUT HERE
  3705. CON 0 TERMINATE TABLE
  3706. SPACE 4,10
  3707. ERRPL *-10000 CODE DEPENDS ON VALUE
  3708. PRS SPACE 4,20
  3709. ** PRS - PRESET *1HY* FOR PROCESSING.
  3710. *
  3711. * EXIT (UC) = 0.
  3712. *
  3713. * CALLS CCP, CCR, MCI, IST, PCT, RCR, SPA, STA.
  3714.  
  3715.  
  3716. PRS RJM CCP CHECK CALLING PROGRAM
  3717. * LDN 0
  3718. STD UC SET NO UNITS RESERVED
  3719. STD PO
  3720. RJM MCI MODIFY CHANNEL INSTRUCTIONS
  3721. STD CR
  3722. RJM SPA SET PP EXCHANGE PACKAGE ADDRESSES
  3723. PRS1 RJM SCT SET CHANNEL TABLE ADDRESSES
  3724. LDK BIOL
  3725. CRD CM READ BUFFERED I/O POINTERS
  3726. LDD CM+1
  3727. SHN 14
  3728. LMD CM+2
  3729. ADN FTTP READ *FTT* POINTER
  3730. CRD T6
  3731. SBN FTTP-CCTP READ *CCT* POINTER
  3732. CRD T4
  3733. ADN PUTP-CCTP READ *PUT* POINTER
  3734. CRD T2
  3735. ADN CBTP-PUTP READ *CBT* POINTER
  3736. CRD WB
  3737. AOD T2 SET NUMBER OF *PUT* ENTRIES
  3738. STD RC
  3739. LDC T5*10000+TPUT SET *PUT* ADDRESSES
  3740. RJM STA
  3741. LDD IR+2 ADJUST CHANNEL CONTROL TABLE POINTER
  3742. SHN CCTLS-6
  3743. RAD CM
  3744. SHN -14
  3745. RAD T7
  3746. LDC T7*10000+TCCT SET *CCT* ADDRESSES
  3747. RJM STA
  3748. .CM1 EQU CM+1
  3749. LDC .CM1*10000+TFTT SET *FTT* ADDRESSES
  3750. RJM STA
  3751. .WB3 EQU WB+3
  3752. LDC .WB3*10000+TCBT SET *CBT* ADDRESSES
  3753. RJM STA
  3754. LDN EMBP FETCH *EMB* POINTER
  3755. CRD CM
  3756. LDC .CM1*10000+TEMB SET *EMB* ADDRESSES
  3757. RJM STA
  3758. LDK UEML
  3759. CRD CM READ UEM POINTERS
  3760. LDD CM
  3761. PRSA SHN 11
  3762. * SHN 11+EMSC
  3763. SCN 77
  3764. STM SUAA SET FWA OF UEM
  3765. LDD CM
  3766. PRSB SHN -3
  3767. * SHN EMSC-3
  3768. STM SUAB
  3769. LDK MMFL FETCH MACHINE ID
  3770. CRD CM
  3771. LDD CM SET MAINFRAME ID FOR BML MESSAGES
  3772. STM MFID
  3773. LDC PRS3 SET RETURN ADDRESS
  3774. STM CCR
  3775. RJM IST INITIALIZE DEVICE STATE TABLE
  3776. ZJN PRS4 IF NO DEVICES FOR THIS DRIVER
  3777. LDN 0 CLEAR RESIDUAL BYTE COUNT
  3778. STM RBCT
  3779. LJM CCR2 RESERVE CHANNEL
  3780.  
  3781. PRS3 NJP RCR+1 IF CHANNEL NOT DOWN
  3782. PRS4 LJM HYD8 DROP CPP
  3783. SCT SPACE 4,10
  3784. ** SCT - SET CHANNEL TABLE ENTRY ADDRESSES.
  3785. *
  3786. * ENTRY (IR+4) = CHANNEL NUMBER.
  3787. *
  3788. * USES T1, T2, CM - CM+4.
  3789. *
  3790. * CALLS STA.
  3791.  
  3792.  
  3793. SCT SUBR ENTRY/EXIT
  3794. LDD IR+4
  3795. STD T1 SET CHANNEL NUMBER
  3796. STM RCSA+3
  3797. RAM BMLM+2
  3798. * SHN 6 SAVE RECOVERY CHANNEL FOR *BML*
  3799. * STM BMLM+7
  3800. LCN 0 WORD OFFSET
  3801. STD T2
  3802. SCT1 AOD T2 INCREMENT WORD OFFSET
  3803. LCN 5
  3804. RAD T1
  3805. PJN SCT1 IF CHANNEL NOT IN THIS WORD
  3806. ADN 5
  3807. STD T1
  3808. RAM RCTA SET BYTE OFFSET
  3809. LDD T1
  3810. SHN 1 BYTE OFFSET * 2
  3811. ADD T1 BYTE OFFSET * 3
  3812. SHN 2 BYTE OFFSET * 12
  3813. SBN 59D (BYTE OFFSET * 12) - 59
  3814. LMC -0 59 - (BYTE OFFSET * 12)
  3815. SBN 2
  3816. SHN 6
  3817. STM SRFA+1 SET DRIVER FLAG BIT POSITION
  3818. LDK CHTP
  3819. CRD CM
  3820. LDD T2 SET ADDRESS OF WORD IN CHANNEL TABLE
  3821. RAD CM+3
  3822. SHN -14
  3823. RAD CM+2
  3824. .CM2 EQU CM+2
  3825. LDC .CM2*10000+TCHT SET CHANNEL TABLE ADDRESSES
  3826. RJM STA
  3827. LJM SCTX RETURN
  3828. SPA SPACE 4,10
  3829. ** SPA - SET PP EXCHANGE PACKAGE ADDRESSES.
  3830. *
  3831. * USES T1 - T5, CM - CM+4.
  3832. *
  3833. * CALLS STA.
  3834.  
  3835.  
  3836. SPA SUBR ENTRY/EXIT
  3837. LDN PXPP
  3838. CRD CM FETCH FWA OF PP EXCHANGE PACKAGE AREA
  3839. ADN 1
  3840. CRM AMEA,ON SET FIRST WORD OF PP EXCHANGE PACKAGE
  3841. ADN PPCP-PXPP-2
  3842. CRD T1 READ PP COMMUNICATION AREA POINTER
  3843. LDD IA
  3844. STM AMEA+4 SET (B0) NON-ZERO FOR EXCHANGE TEST
  3845. SBD T1+4
  3846. SHN -3 (A) = CPP NUMBER
  3847. SBN 24
  3848. SHN 6
  3849. STM BMLM+2 INSERT CPP NUMBER IN BML MESSAGE
  3850. SHN -6
  3851. ADN 24-2
  3852. STD T1 CPP NUMBER - 2
  3853. SHN 4
  3854. ADD T1 (CPP NUMBER - 2) * 21B
  3855. RAD CM+4
  3856. SHN -14
  3857. RAD CM+3
  3858. .CM3 EQU CM+3
  3859. LDC .CM3*10000+TEXP SET EXCHANGE PACKAGE ADDRESSES
  3860. RJM STA
  3861. LJM SPAX RETURN
  3862. STA SPACE 4,10
  3863. ** STA - SET TABLE ADDRESSES.
  3864. *
  3865. * ENTRY (A) = 6/ TP, 12/ TA
  3866. * TP = TABLE POINTER.
  3867. * TA = INSTRUCTION TABLE ADDRESS.
  3868. *
  3869. * EXIT (A) = 0.
  3870. *
  3871. * USES T1, T2, T3.
  3872.  
  3873.  
  3874. STA1 STD T2 SET INSTRUCTION ADDRESS
  3875. LDM 1,T1
  3876. RAM 1,T2 SET LOWER 12 BITS OF ADDRESS
  3877. SHN -14
  3878. ADI T1 SET UPPER 6 BITS OF ADDRESS
  3879. LPN 37
  3880. RAI T2
  3881. AOD T3 ADVANCE INSTRUCTION LIST
  3882. STA2 LDI T3
  3883. NJN STA1 IF NOT END OF TABLE
  3884.  
  3885. STA SUBR ENTRY/EXIT
  3886. STD T3
  3887. SHN -14 SET ADDRESS POINTER
  3888. STD T1
  3889. UJN STA2 ENTER LOOP
  3890.  
  3891.  
  3892. OVERFLOW OHYD,20000
  3893.  
  3894. END
cdc/nos2.source/opl871/1hy.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator