Table of Contents

6DI

Table Of Contents

  • [00008] 6DI - “HN” DRIVER.
  • [00010] 7155-7154-7054/885-844 DRIVER.
  • [00320] 6DI - MAIN DRIVER.
  • [00340] EMS - END MASS STORAGE PROCESSING.
  • [00361] RDS - READ SECTOR.
  • [00410] WDS - WRITE SECTOR.
  • [00457] DST - DEVICE STATUS.
  • [00491] LDA - LOAD ADDRESS.
  • [00561] FNC - FUNCTION DEVICE.
  • [00598] ERR - CALL *7BI*.
  • [00614] DSW - DRIVER SEEK WAIT PROCESSING.
  • [00696] TCHA - TABLE OF CHANNEL INSTRUCTION ADDRESSES.
  • [00704] PRS - PRESET.
  • [00726] 6DJ - ISD DISK DRIVER.
  • [00785] EMS - END MASS STORAGE PROCESSING.
  • [00806] RDS - READ SECTOR.
  • [00838] WDS - WRITE SECTOR.
  • [00877] DST - DEVICE STATUS.
  • [00897] LDA - LOAD ADDRESS.
  • [00973] FNC - FUNCTION DEVICE.
  • [01006] ERR - CALL *7BI*.
  • [01019] DSW - DRIVER SEEK WAIT PROCESSING.
  • [01099] TCHA.J - TABLE OF CHANNEL INSTRUCTION ADDRESSES
  • [01108] PRS - PRESET *6DJ*.
  • [01132] DBI - INITIALIZE ERROR PROCESSING.
  • [01175] ERR2 - CALL STATUS PROCESSOR.
  • [01180] WEP - WRITE ERROR PROCESSOR.
  • [01280] DCI - OBTAIN GENERAL AND DETAILED STATUS.
  • [01448] DDI - DETAILED STATUS PROCESSOR.
  • [01653] DEI - SET ERROR CODE.
  • [01878] FTO - FUNCTION TIMEOUT PROCESSOR.
  • [02019] RCM - READ CONTROLLER MEMORY.
  • [02148] DCP - PROCESS CHANNEL/CONTROLLER ERROR.
  • [02246] PCE - PROCESS CHANNEL/CONTROLLER ERROR.
  • [02313] RCW - RELOAD CONTROLWARE PROCESSOR.
  • [02426] SCT - SET (CLEAR) CONTROLWARE LOAD REQUEST FLAG.
  • [02483] ICR - INITIATE CONTROLWARE RELOAD.
  • [02567] FCM - FIND CONTROL MODULE EST ENTRY.
  • [02629] FCT - FIND CONTROLWARE TABLE ENTRY.
  • [02675] IRM - ISSUE RELOAD MESSAGE.
  • [02766] EXD - EXECUTE LEVEL 1 DIAGNOSTICS.
  • [02924] DSI - MAIN ROUTINE.
  • [03056] 0TI - TRACK FLAW PROCESSOR.
  • [03172] POM - PROCESS ONE FLAW MAP.
  • [03212] FLT - FLAW LOGICAL TRACK.
  • [03234] PRS - PRESET FLAW PROCESSOR.
  • [03327] TALP - TABLE OF ALGORITHM INDEX DEPENDENT PARAMETERS.
  • [03367] FPI - FLAW PROCESSOR FOR *DI* EQUIPMENTS.
  • [03392] FPJ - FLAW PROCESSOR FOR *DJ* EQUIPMENTS.
  • [03410] 0TJ - TRACK FLAW PROCESSOR FOR 33502.
  • [03449] FPK - FLAW PROCESSOR FOR *DK* EQUIPMENT.
  • [03471] FPL - FLAW PROCESSOR FOR *DL* EQUIPMENTS.
  • [03492] FPM - FLAW PROCESSOR FOR *DM* EQUIPMENTS.
  • [03501] FPQ - FLAW PROCESSOR FOR *DQ* EQUIPMENTS.
  • [03548] FPA - FLAW PROCESSOR FOR *DA* EQUIPMENTS.
  • [03557] FCE - FLAW DS AND CE TRACKS FOR *DA* DEVICE.
  • [03576] FPB - FLAW PROCESSOR FOR *DB* EQUIPMENTS.
  • [03604] CHS - CONVERT HEAD AND SECTOR TO RELATIVE SECTOR IN CYLINDER.
  • [03627] PTF - PROCESS TRACK FLAW.
  • [03660] 0PI - PACK SERIAL PROCESSOR.
  • [03913] TDMA - TABLE OF DAYFILE MESSAGE ADDRESSES.
  • [03920] TALP - TABLE OF ALGORITHM INDEX PROCESSING PARAMETERS.
  • [03944] TDST - TABLE OF DEADSTART TRACK NUMBERS.
  • [03965] TDSS - TABLE OF DEADSTART SECTOR NUMBERS.
  • [03990] CBD - CONVERT BINARY CODED DECIMAL TO DISPLAY CODE.
  • [04019] CSD - CONVERT SIX BCD DIGITS TO DISPLAY CODE.
  • [04059] 0RI - UNIT RESERVE PROCESSOR.
  • [04092] RUR - RELEASE UNIT RESERVES.
  • [04129] 0SI - SERVO TIMING PROCESSOR.
  • [04176] FTC - FUNCTION SERVO DIFFERENCE TIMING COUNTER.
  • [04231] FTD - FUNCTION TIMING DIFFERENCE COUNTER.
  • [04255] 0CI - FIRMWARE IDENT PROCESSOR.
  • [04372] TDMA - TABLE OF DAYFILE MESSAGE ADDRESSES.
  • [04508] CDD - CONVERT TWO DIGITS TO DECIMAL DISPLAY CODE.
  • [04533] COD - CONVERT TWO DIGITS TO OCTAL DISPLAY CODE.
  • [04554] 0SC - SWEEP CYCLING PROCESSOR.
  • [04592] SCP - SWEEP CYCLING PROCESSOR.
  • [04702] TDVP - TABLE OF DEVICE PARAMETERS.
  • [04740] 0SD - SPIN UP/DOWN ISMD DRIVES.
  • [04765] PRS - PRESET SPINUP/DOWN PROCESSOR.
  • [04778] SUE - SPIN UP/DOWN AN ISD DRIVE.
  • [04828] ANU - ADVANCE TO NEXT PHYSICAL UNIT.
  • [04856] CGS - CHECK GENERAL STATUS.
  • [04888] PRD - PRESET DRIVER.

Source Code

6DI.txt
  1. IDENT 6DI,MSFW 7155-7154-7054/885-844 MAIN DRIVER.
  2. HN MICRO 1,,+*LDAM* DEVICE+
  3. PERIPH J
  4. BASE MIXED
  5. SST
  6. *COMMENT 6DI - "HN" MAIN DRIVER.
  7. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  8. TITLE 6DI - "HN" DRIVER.
  9. SPACE 4
  10. *** 6DI - 7155-7154-7054/885-844 DRIVER.
  11. * R. J. THIELEN. 75/11/20.
  12. * W. E. GOEBEL. 78/01/24.
  13. SPACE 4
  14. *** 6DI PROVIDES THE CAPABILITY TO ACCESS THE 885 AND
  15. * 844-44 OR 844-41 DRIVES THROUGH THE 7155 CONTROLLER.
  16. * 6DI ALSO PROVIDES THE CAPABILITY TO ACCESS 844-21, 844-44,
  17. * 844-41 DISK DRIVES THROUGH EITHER A 7054 OR 7154 CONTROLLER.
  18. * FULL TRACKING OPERATIONS ARE ALLOWED ONLY THROUGH THE 7155
  19. * AND 7154 CONTROLLERS.
  20. *
  21. * ACCESS TO FSC 3330 AND 3350 DRIVES IN FULL TRACK MODE
  22. * IS PROVIDED THROUGH THE FSC CHANNEL ADAPTOR.
  23. *
  24. * 834 AND 836 DRIVES ARE ACCESSED THROUGH A 7255
  25. * CHANNEL ADAPTOR WHICH HAS A 7155 COMPATIBLE INTERFACE. THEY
  26. * MAY ONLY BE ACCESSED IN FULL TRACK MODE.
  27. *
  28. * CDSS SUBSYSTEMS ARE ACCESSED THROUGH A 7155 COMPATIBLE
  29. * CONTROLLER WHICH IS INCLUDED IN THE SUBSYSTEM. THEY MAY ONLY
  30. * BE ACCESSED IN FULL TRACK MODE.
  31. SPACE 4
  32. *** ORGANIZATION OF 7155/885.
  33. *
  34. * UP TO THREE 885 UNITS CAN BE COMBINED TO FORM A
  35. * LOGICAL DEVICE.
  36. *
  37. * EQUIPMENT TYPE = *DM*.
  38. *
  39. * SECTORS/TRACK = 640.
  40. *
  41. * TRACKS/UNIT = 1682.
  42. *
  43. * WORDS/UNIT = 68,894,720.
  44. *
  45. * UNITS/DEVICE = 1-3.
  46. *
  47. * WORDS/DEVICE = 68,894,720 - 206,684,160.
  48. *
  49. * MAXIMUM DATA RATE = 61.44 K WORDS/SECOND.
  50. *
  51. *
  52. * EQUIPMENT TYPE = *DQ*.
  53. *
  54. * SECTORS/TRACK = 640.
  55. *
  56. * TRACKS/UNIT = 1682.
  57. *
  58. * WORDS/UNIT = 68,894,720.
  59. *
  60. * UNITS/DEVICE = 1-3.
  61. *
  62. * WORDS/DEVICE = 68,894,720 - 206,684,160.
  63. *
  64. * MAXIMUM DATA RATE = 122.88 K WORDS/SECOND.
  65. SPACE 4
  66. *** ORGANIZATION OF 7X5X/844-XX.
  67. *
  68. * UP TO EIGHT 844-XX UNITS CAN BE COMBINED TO FORM A
  69. * LOGICAL DEVICE.
  70. *
  71. * EQUIPMENT TYPE = *DI*.
  72. *
  73. * SECTORS/TRACK = 107.
  74. *
  75. * TRACKS/UNIT = 1632.
  76. *
  77. * WORDS/UNIT = 11,175,936.
  78. *
  79. * UNITS/DEVICE = 1-8.
  80. *
  81. * WORDS/DEVICE = 11,175,936 - 89,407,488.
  82. *
  83. * MAXIMUM DATA RATE = 46.08 K WORDS/SECOND.
  84. *
  85. *
  86. * EQUIPMENT TYPE = *DJ*.
  87. *
  88. * SECTORS/TRACK = 227.
  89. *
  90. * TRACKS/UNIT = 1640.
  91. *
  92. * WORDS/UNIT = 23,825,920.
  93. *
  94. * UNITS/DEVICE = 1-8.
  95. *
  96. * WORDS/DEVICE = 23,825,920 - 190,607,360.
  97. *
  98. * MAXIMUM DATA RATE = 46.08 K WORDS/SECOND.
  99. *
  100. *
  101. * EQUIPMENT TYPE = *DK*.
  102. *
  103. * SECTORS/TRACK = 112.
  104. *
  105. * TRACKS/UNIT = 1632.
  106. *
  107. * WORDS/UNIT = 11,698,176.
  108. *
  109. * UNITS/DEVICE = 1-8.
  110. *
  111. * WORDS/DEVICE = 11,698,176 - 93,585,408.
  112. *
  113. * MAXIMUM DATA RATE = 92.16 K WORDS/SECOND.
  114. *
  115. *
  116. * EQUIPMENT TYPE = *DL*.
  117. *
  118. * SECTORS/TRACK = 227.
  119. *
  120. * TRACKS/UNIT = 1640.
  121. *
  122. * WORDS/UNIT = 23,825,920.
  123. *
  124. * UNITS/DEVICE = 1-8.
  125. *
  126. * WORDS/DEVICE = 24,825,920 - 190,607,360.
  127. *
  128. * MAXIMUM DATA RATE = 92.16 K WORDS/SECOND.
  129. SPACE 4,10
  130. *** ORGANIZATION OF FSC DEVICES.
  131. *
  132. *
  133. * MODEL = 3330-1.
  134. *
  135. * EQUIPMENT TYPE = *DX*.
  136. *
  137. * SECTORS/TRACK = 98.
  138. *
  139. * TRACKS/UNIT = 1632.
  140. *
  141. * WORDS/UNIT = 10,235,904.
  142. *
  143. * UNITS/DEVICE = 1-8.
  144. *
  145. * WORDS/DEVICE = 10,235,904 - 81,887,232.
  146. *
  147. * MAXIMUM DATA RATE = 80.64 K WORDS/SECOND.
  148. *
  149. *
  150. * MODEL = 3330-11.
  151. *
  152. * EQUIPMENT TYPE = *DY*.
  153. *
  154. * SECTORS/TRACK = 198.
  155. *
  156. * TRACKS/UNIT = 1624.
  157. *
  158. * WORDS/UNIT = 20,579,328.
  159. *
  160. * UNITS/DEVICE = 1-8.
  161. *
  162. * WORDS/DEVICE = 20,579,328 - 164,634,624.
  163. *
  164. * MAXIMUM DATA RATE = 80.64 K WORDS/SECOND.
  165. *
  166. *
  167. * MODEL = 3350.
  168. *
  169. * EQUIPMENT TYPE = *DZ*.
  170. *
  171. * SECTORS/TRACK = 420.
  172. *
  173. * TRACKS/MODULE = 1116.
  174. *
  175. * WORDS/MODULE = 30,051,840.
  176. *
  177. * MODULE/DEVICE = 1-4.
  178. *
  179. * WORDS/DEVICE = 30,051,840 - 120,207,360.
  180. *
  181. * MAXIMUM DATA RATE = 107.52 K WORDS PER SECOND.
  182. *
  183. *
  184. * MODEL = 33502.
  185. *
  186. * EQUIPMENT TYPE = *DA*.
  187. *
  188. * SECTORS/TRACK = 840.
  189. *
  190. * TRACKS/MODULE = 1116.
  191. *
  192. * WORDS/MODULE = 30,051,840.
  193. *
  194. * MODULE/DEVICE = 1-2.
  195. *
  196. * WORDS/DEVICE = 60,103,680 - 120,207,360.
  197. *
  198. * MAXIMUM DATA RATE = 107.52 K WORDS PER SECOND.
  199. SPACE 4,10
  200. *** ORGANIZATION OF 834 DEVICES.
  201. *
  202. * UP TO EIGHT 834 PHYSICAL UNITS MAY BE COMBINED TO FORM A
  203. * LOGICAL DEVICE.
  204. *
  205. * EQUIPMENT TYPE = *DD*.
  206. *
  207. * SECTORS/TRACK = 160.
  208. *
  209. * TRACKS/UNITS = 1628.
  210. *
  211. * WORDS/UNIT = 16,670,720.
  212. *
  213. * UNITS/DEVICE = 1-8.
  214. *
  215. * WORDS/DEVICE = 16,670,720 - 133,365,760.
  216. *
  217. * MAXIMUM DATA RATE = 122.88 K WORDS/SECOND.
  218. SPACE 4,10
  219. *** ORGANIZATION OF 836 DEVICES.
  220. *
  221. * UP TO THREE 836 PHYSICAL UNITS MAY BE COMBINED TO FORM A
  222. * LOGICAL DEVICE.
  223. *
  224. * EQUIPMENT TYPE = *DG*.
  225. *
  226. * SECTORS/TRACK = 564.
  227. *
  228. * TRACKS/UNIT = 1398.
  229. *
  230. * WORDS/UNIT = 50,462,208.
  231. *
  232. * UNITS/DEVICE = 1-3.
  233. *
  234. * WORDS/DEVICE = 50,462,208 - 151,386,624.
  235. *
  236. * MAXIMUM DATA RATE = 122.88 K WORDS/SECOND.
  237. SPACE 4
  238. *** ORGANIZATION OF CDSS II DEVICES.
  239. *
  240. * ONE CDSS II UNIT FORMS A SINGLE LOGICAL DEVICE.
  241. *
  242. * EQUIPMENT TYPE = *DR*.
  243. *
  244. * SECTORS/TRACK = 640.
  245. *
  246. * TRACKS/UNIT = 123,640.
  247. *
  248. * WORDS/UNIT = 253,229,056.
  249. *
  250. * UNITS/DEVICE = 1.
  251. *
  252. * WORDS/DEVICE = 253,229,056.
  253. SPACE 4
  254. ** ENTRY CONDITIONS.
  255. *
  256. *
  257. * (T4) = CHANNEL IF PREVIOUSLY RESERVED.
  258. * (T5) = EST ORDINAL.
  259. * (T6) = TRACK.
  260. * (T7) = SECTOR.
  261. SPACE 4
  262. RICHI$ EQU 1 SELECT DEFERRED INSTRUCTION REDEFINITION
  263. RICHL$ EQU 1
  264. RIREL$ EQU 1
  265. *CALL COMPMAC
  266. *CALL COMPCHI
  267. *CALL COMPCHL
  268. *CALL COMPREL
  269. *CALL COMSCPS
  270. *CALL COMSDFS
  271. *CALL COMSEVT
  272. LIST X
  273. *CALL COMSMSP
  274. LIST *
  275. *CALL COMSPIM
  276. *CALL COMSZOL
  277. *CALL COMS1DS
  278. SPACE 4,20
  279. ** DRIVER FUNCTION CODES.
  280.  
  281.  
  282. FCCN EQU 0 CONNECT FUNCTION CODE
  283. FCS1 EQU 1 SEEK 1 TO 1 INTERLACE
  284. FCS2 EQU 2 SEEK 2 TO 1 INTERLACE
  285. FCRD EQU 4 READ FUNCTION CODE
  286. FCWR EQU 5 WRITE FUNCTION CODE
  287. FCOC EQU 10 OPERATION COMPLETE FUNCTION CODE
  288. FCGR EQU 11 DISABLE RESERVES - GRENADE
  289. FCGS EQU 12 GENERAL STATUS FUNCTION CODE
  290. FCCO EQU 14 CONTINUE FUNCTION CODE
  291. FCDK EQU 15 DROP SEEKS
  292. FCDR EQU 20 DRIVE RELEASE
  293. FCDS EQU 23 DETAILED STATUS FUNCTION CODE
  294. FCRF EQU 30 READ FACTORY DATA FUNCTION CODE
  295. FCRU EQU 31 READ UTILITY SECTOR FUNCTION CODE
  296. FCRP EQU 34 READ PROTECTED SECTOR
  297. FCWL EQU 35 WRITE LAST SECTOR
  298. FCWP EQU 37 WRITE PROTECTED SECTOR
  299. FCRB EQU 43 READ BACK COUPLER BUFFER
  300. FCST EQU 52 INPUT PROCESSOR STATUS
  301. FCSU EQU 55 SPIN UP AN ISD DRIVE
  302. FCSD EQU 56 SPIN DOWN AN ISD DRIVE
  303. FCTD EQU 56 INPUT TIMING DATA
  304. FCDP EQU 61 AUTODUMP
  305. FCMP EQU 62 MANIPULATE PROCESSOR
  306. FCID EQU 63 INPUT DISPLAY DATA
  307. FCFT EQU 64 FUNCTION TIMING DIFFERENCE COUNTER
  308. FCLC EQU 71 AUTOLOAD CONTROL MODULE FROM PP
  309. FCAL EQU 414 AUTOLOAD FUNCTION CODE
  310. SPACE 4
  311. ** ASSEMBLY CONSTANTS.
  312.  
  313.  
  314. DSLN EQU 24 DETAILED STATUS LENGTH
  315. FRNW EQU 3 FIRMWARE REVISION NUMBER WORD
  316. ARNW EQU 20 FSC ADAPTOR REVISION NUMBER WORD
  317. CMNW EQU 21 CONTROL MODULE REVISION NUMBER WORD
  318. CH EQU 0 MASS STORAGE CHANNEL
  319. DEC MICRO 1,, 6DI DECK NAME
  320. TITLE 6DI - MAIN DRIVER.
  321. * REDEFINE CHANNEL INSTRUCTIONS TO PRODUCE CHANNEL TABLE.
  322.  
  323. RICHI REDEFINE CHANNEL INSTRUCTIONS
  324. SPACE 4
  325. ORG MSFW
  326. SPACE 4
  327. * ENTRY POINT TRANSFERS.
  328.  
  329.  
  330. CON PRS PRESET ADDRESS
  331.  
  332.  
  333. RDS CON 0 ENTRY
  334. UJN RDS. READ SECTOR
  335.  
  336.  
  337. WDS CON 0 ENTRY
  338. UJN WDS.
  339. EMS SPACE 4,10
  340. ** EMS - END MASS STORAGE PROCESSING.
  341. *
  342. * ENTRY (T4) = CHANNEL, IF PREVIOUSLY RESERVED.
  343. * (T5) = EQUIPMENT.
  344. *
  345. * EXIT (A) = 0.
  346. *
  347. * NOTE - THE *.EMS* ENTRY POINT IS SUPPORTED ONLY VIA THE
  348. * *ENDMS* MACRO DEFINED IN *COMPMAC*. IF THIS LOCATION
  349. * CHANGES, THE DEFINITION OF *.EMS* MUST BE CHANGED IN
  350. * *PPCOM* AND ALL PROGRAMS USING THE *ENDMS*
  351. * MACRO MUST BE REASSEMBLED.
  352.  
  353.  
  354. .EMS SUBR ENTRY/EXIT
  355. LDN 0
  356. STD CM+3
  357. STI D1 SET POSITION REQUIRED
  358. RJM DSW DROP CHANNEL VIA *DSWM*
  359. UJN .EMSX RETURN
  360. RDS SPACE 4
  361. ** RDS - READ SECTOR.
  362. *
  363. * ENTRY (A) = BUFFER ADDRESS FOR SECTOR.
  364. *
  365. * EXIT (A) .LT. 0 IF UNRECOVERED ERROR AND READ ERROR
  366. * PROCESSING SELECTED.
  367. *
  368. * CALLS DST, FNC, LDA.
  369.  
  370.  
  371. RDS. STM RDSB SET BUFFER ADDRESS
  372.  
  373. * THE CODE BETWEEN *RDSC* AND *RDSA* IS OVERLAID TO MEASURE
  374. * THE SERVO TIMING. *0SI* MEASURES THE SERVO
  375. * TIMING AND OVERLAYS *RDS*.
  376.  
  377. RDSC BSS 0
  378.  
  379. * THE FOLLOWING CODE MUST BE DUPLICATED IN BOTH *RDS* AND
  380. * *WDS* BECAUSE OF TIMING CONSTRAINTS FOR THE 885.
  381.  
  382. SOI D1
  383. MJN RDS1 IF POSITION REQUIRED
  384. ADD T7
  385. LMM WDSA
  386. ZJN RDS2 IF CONSECUTIVE SECTORS
  387. RDS1 RJM LDA LOAD ADDRESS AND ISSUE POSITION
  388. RDS2 LDN FCRD NORMAL READ
  389. RDSA EQU *-1
  390. * LDN FCRU READ UTILITY SECTOR
  391. * LDN FCRF READ FACTORY DATA
  392. * LDN FCDS (READING DETAILED STATUS)
  393. * LDN FCTD (PERFORMING SERVO ADJUSTMENT FOR 885)
  394. * UJN RDS4 (ISSUING DISABLE RESERVES)
  395.  
  396. * ENTERED HERE FROM *7SI* TO ISSUE CONTINUE FUNCTION.
  397. * ENTERED HERE TO READ BACK COUPLER BUFFER ON FULL TRACK
  398. * WRITE BUFFER TO DISK ERROR.
  399.  
  400. RDS3 RJM FNC
  401. IAM *,CH
  402. RDSB EQU *-1
  403. RDS3.1 NJN WDS5 IF TRANSFER NOT COMPLETE
  404. * LJM DEI6.0 (IF COUPLER READ BACK)
  405. RDSD EQU *-1
  406. RDS4 LDM RDS
  407. SFM LDA8,CH IF CHANNEL PARITY ERROR (LOWER 800 SERIES)
  408. UJN DST1 CHECK STATUS
  409. WDS SPACE 4
  410. ** WDS - WRITE SECTOR.
  411. *
  412. * ENTRY (A) = BUFFER ADDRESS FOR SECTOR.
  413. *
  414. * EXIT (A) = 0 IF NO ERROR.
  415. * (A) = -0 IF UNRECOVERED ERROR AND WRITE ERROR
  416. * PROCESSING SELECTED.
  417. * (A) .EQ. -1 IF UNRECOVERED ERROR ON PREVIOUS SECTOR,
  418. * NO WRITE ERROR PROCESSING BUFFER SPECIFIED IN *WDSE*
  419. * AND WRITE ERROR PROCESSING SELECTED.
  420. *
  421. * CALLS DST, FNC, LDA.
  422.  
  423.  
  424. WDS. STM WDSC SET BUFFER ADDRESS
  425. SHN -14
  426. STM WDSB SET WRITE LAST SECTOR
  427.  
  428. * THE FOLLOWING CODE MUST BE DUPLICATED IN BOTH *RDS* AND
  429. * *WDS* BECAUSE OF TIMING CONSTRAINTS FOR THE 885.
  430.  
  431. SOI D1
  432. MJN WDS1 IF POSITION REQUIRED
  433. ADD T7
  434. LMC *
  435. WDSA EQU *-1
  436. ZJN WDS2 IF CONSECUTIVE SECTORS
  437. WDS1 RJM LDA LOAD ADDRESS AND ISSUE POSITION
  438. WDS2 LDI D1 CHECK END OF UNIT/TRACK
  439. * LJM /0SD/SUE2 (SPINNING DOWN AN ISD DRIVE)
  440. * LJM /0SD/SUE4 (SPINNING UP AN ISD DRIVE)
  441. ZJN WDS3 IF END OF UNIT/TRACK
  442. LDC 0
  443. WDSB EQU *-1
  444. WDS3 LMN FCWL WRITE LAST SECTOR
  445.  
  446. * ENTERED HERE FROM *7SI* TO ISSUE CONTINUE FUNCTION.
  447. * ENTERED HERE FROM *0SD* TO ISSUE SPINUP/SPINDOWN FUNCTION.
  448.  
  449. WDS4 RJM FNC
  450. OAM *,CH
  451. WDSC EQU *-1
  452. WDS5 NJN LDA9 IF INCOMPLETE TRANSFER
  453. WDSD LDM WDS
  454. * LDC /0SD/SUE4 (SPINNING UP/DOWN AN ISD DRIVE)
  455. * UJN DST PROCESS STATUS
  456. DST SPACE 4
  457. ** DST - DEVICE STATUS.
  458. * WAITS FOR CHANNEL EMPTY, THEN DISCONNECTS.
  459. *
  460. * ENTRY (A) = EXIT ADDRESS.
  461. *
  462. * EXIT (A) = 0 AND EXIT TO EXIT ADDRESS IF NO STATUS ERROR.
  463. * EXIT TO LDA1 IF STATUS ERROR.
  464.  
  465.  
  466. DST FJM *,CH
  467. DCN CH+40
  468. DST1 STD CM SAVE EXIT ADDRESS
  469.  
  470. * THE *7155* CONTROLLER CANNOT ACCEPT THE GENERAL STATUS
  471. * FUNCTION FOR 5 MICRO SECONDS AFTER THE DATA TRANSFER
  472. * IS COMPLETE FOR READS AND 10 MICRO SECONDS FOR WRITE.
  473. * IN ORDER TO MAKE USE OF THIS TIMING CONSTRAINT THE EXIT
  474. * ADDRESS IS AN ENTRY CONDITION TO *DST*, WHICH IS STORED
  475. * IN THE EXIT INSTRUCTION DURING THE CONTROLLER OVERHEAD
  476. * PERIOD AFTER THE DATA TRANSFER. THIS ALLOWS THE SHORTEST
  477. * DELAY POSSIBLE TO RETURN TO THE CALLER AFTER GENERAL
  478. * STATUS IS RECEIVED. GENERAL STATUS IS PERFORMED AS AN
  479. * IN LINE OPERATION TO MINIMIZE OVERHEAD TIME FOR THE
  480. * *7155* CONTROLLER.
  481.  
  482. LDN FCGS GET GENERAL STATUS
  483. RJM FNC ISSUE FUNCTION
  484. IAN CH+40
  485. SFM LDA8,CH IF CHANNEL PARITY ERROR (800 SERIES)
  486. DSTA NJN LDA3 IF ERRORS
  487. * LJM /0SD/CGS (SPINNING UP/DOWN AN ISD DRIVE)
  488. DSTB LJM 0,CM RETURN
  489. * LJM /0SC/SCP8 (SWEEP CYCLING)
  490. LDA SPACE 4,10
  491. ** LDA - LOAD ADDRESS.
  492. *
  493. * ENTRY (T5) = EQUIPMENT.
  494. * (T6) = TRACK.
  495. * (T7) = SECTOR.
  496. *
  497. * ENTRY LDA3 = ENTRY POINT TO PROCESS GENERAL STATUS ERRORS.
  498. * LDA2 = ENTRY POINT TO JUMP TO ERROR PROCESSOR.
  499. *
  500. * USES CM - CM+4.
  501. *
  502. * CALLS DST, DSW, FNC.
  503. *
  504. * MACROS MONITOR.
  505.  
  506.  
  507. LDA8 LCN CHPE SET CHANNEL PARITY ERROR FLAG
  508. LDA9 LJM DSW7 CALL ERROR PROCESSOR
  509.  
  510. LDA CON 0 ENTRY
  511.  
  512. * REENTER HERE ON ERROR RETRY.
  513. * COMPUTE PHYSICAL ADDRESS.
  514.  
  515. LDA1 LDD OA WAIT OUTPUT REGISTER CLEAR
  516. CRD CM
  517. LDD CM
  518. NJN LDA1 IF NOT CLEAR
  519. STD CM+1 INDICATE A STANDARD SEEK
  520. LDD MA
  521. CWD T4
  522. MONITOR LDAM CONVERT LOGICAL TO PHYSICAL ADDRESS
  523. SOD CM+4 SET UNIT SWITCH COUNTER
  524. STI D1
  525. ADD T7 SET CONSECUTIVE SECTOR COUNT
  526. STM WDSA
  527. UJN LDA4 CHECK FOR SEEK WAIT NEEDED
  528.  
  529. * ENTER HERE TO PROCESS GENERAL STATUS ERRORS.
  530. * *DSW* WILL DETERMINE IF STATUS REQUIRES AN ERROR PROCESSOR
  531. * CALL OR A SEEK WAIT MONITOR FUNCTION.
  532.  
  533. LDA3 STD CM+3 SAVE STATUS
  534. LDA4 RJM DSW DRIVER SEEK WAIT PROCESSING
  535. LDD CM+2
  536. ZJN LDA5 IF CONTROLLER PREVIOUSLY RESERVED
  537. RJM FNC
  538. IAN CH+40
  539. SFM LDA8,CH IF CHANNEL PARITY ERROR (800 SERIES)
  540. LPC 2000
  541. NJN LDA3 IF CONTROLLER RESERVED
  542. LDN 11-1 SET CONNECTED STATUS IN CHRV
  543. RAM CHRV
  544. LDA5 LDD MA READ SEEK PARAMETERS
  545. * LJM RDS2 (GET DETAILED STATUS FOR *0CI*)
  546. LDAC EQU *-1
  547. ADN 1
  548. CRD CM
  549. LDAA LDN 0 SEEK FUNCTION
  550. * LDN FCS1 (SEEK 1 TO 1 INTERLACE)
  551. * LDN FCS2 (SEEK 2 TO 1 INTERLACE)
  552. * LDN FCGR (ISSUING DISABLE RESERVES)
  553. RJM FNC
  554. LDAB LDN 4
  555. * UJN LDA7 (ISSUING DISABLE RESERVES)
  556. OAM CM+1,CH OUTPUT UNIT, CYLINDER, TRACK AND SECTOR
  557. LDA6 NJN ERR IF ERROR
  558. LDA7 LDM LDA
  559. LJM DST CHECK STATUS
  560. FNC SPACE 4,15
  561. ** FNC - FUNCTION DEVICE.
  562. *
  563. * ENTRY (A) = FUNCTION CODE.
  564. *
  565. * EXIT (A) = 502, IF NORMAL FUNCTION.
  566. * = *DSLN*, IF READING DETAILED STATUS.
  567. * = 2, IF PERFORMING SERVO ADJUSTMENT FOR 885.
  568. * = 1, IF SPINNING UP/DOWN AN ISD DRIVE.
  569. * FUNCTION ISSUED.
  570. * CHANNEL ACTIVATED.
  571. *
  572. * CALLS ERR.
  573.  
  574.  
  575. FNC4 ACN CH
  576. LDC 502 FULL BUFFER WORD COUNT
  577. FNCA EQU *-1
  578. * LDC DSLN (READING DETAILED STATUS)
  579. * LDC 2 (PERFORMING SERVO ADJUSTMENT FOR 885)
  580. * LDC 1 (SPINNING UP/DOWN AN ISD DRIVE)
  581.  
  582. FNC SUBR ENTRY/EXIT
  583. FNC1 AJM ERR,CH IF CONTROLLER NOT READY
  584. FNCC FAN CH
  585.  
  586. * THE FOLLOWING DELAY MUST ALLOW AT LEAST 15 SECONDS.
  587.  
  588. LDD HN
  589. STD T0
  590. FNC2 ADD ON ENSURE DELAY IS SATISIFIED
  591. FNCB IJM FNC4,CH IF FUNCTION ACCEPTED
  592. NJN FNC2 IF INNER TIMEOUT LOOP NOT YET COMPLETE
  593. SOD T0
  594. NJN FNC2 IF NOT YET TIMED OUT
  595.  
  596. * UJN ERR PROCESS ERROR
  597. ERR SPACE 4,10
  598. ** ERR - CALL *7BI*.
  599.  
  600.  
  601. ERR MSERR 7BI,*
  602. LJM LEP1 CALL ERROR PROCESSOR
  603. * LJM DCI8 (DURING *7CI* PROCESSING)
  604. * LJM DEI6.1 (DURING *7EI* PROCESSING)
  605. * LJM FTO13 (DURING *7FI* PROCESSING)
  606. * LJM FTO16 (DURING *7FI* PROCESSING)
  607. * LJM DCP3 (DURING *7GI* PROCESSING)
  608. * LJM DCP5 (DURING *7GI* PROCESSING)
  609. * LJM EXD4 (DURING *7KI* PROCESSING)
  610. * LJM EXD11 (DURING *7KI* PROCESSING)
  611. * LJM /0SC/SCP9 (SWEEP CYCLING)
  612. ERRA EQU *-1 EXIT ADDRESS
  613. DSW SPACE 4,30
  614. ** DSW - DRIVER SEEK WAIT PROCESSING.
  615. *
  616. * ENTRY (CM+3) = SEEK WAIT FUNCTION. THE FOLLOWING IS A LIST
  617. * OF THE POSSIBLE VALUES AND THEIR ORIGIN.
  618. * 0 = CHANNEL RELEASE REQUEST. *ENDMS REQUEST*
  619. * 2 = SEEK IN PROGRESS. *CONTROLLER STATUS*
  620. * 4 = STORAGE MOVE REQUESTED OR *LDAM STATUS*
  621. * UNIT SWITCH REQUESTED. *LDAM STATUS*
  622. * 10 = DRIVE RESERVED. *CONTROLLER STATUS*
  623. * 11 = REQUEST CHANNEL AND UNIT. *LDAM STATUS*
  624. * 2000 = CONTROLLER RESERVED. *CONTROLLER STATUS*
  625. * 4XXX = ERROR STATUS. *CONTROLLER STATUS*
  626. * 5XXX = ERROR STATUS. *CONTROLLER STATUS*
  627. * 77YY = ERROR STATUS. *LDAM STATUS*
  628. * YY = COMPLIMENT OF ERROR CODE.
  629. * (CHRV) = DRIVER CONTROL WORD. SEE *COMSMSP*.
  630. *
  631. * EXIT (A) = 0.
  632. * (T4) = CHANNEL.
  633. * (T5) = SYSTEM DEVICE SELECTED WHEN APPROPRIATE.
  634. *
  635. * USES CM - CM+4.
  636. *
  637. * MACROS MONITOR.
  638.  
  639.  
  640. DSW4 FNC FCOC,CH+40 ISSUE RELEASE FUNCTION
  641. DSWD EQU *-1
  642. * FNC FCDR,CH+40 A DRIVE RELEASE FUNCTION IS ISSUED AS
  643. * OPPOSED TO THE OPERATION COMPLETE WHEN
  644. * A SEEK OPERATION IS OUTSTANDING ON A
  645. * SHARED DRIVE THROUGH THE SAME CHANNEL.
  646. * THE ISSUING OF THE DRIVE RELEASE PREVENTS
  647. * ANOTHER MACHINE FROM ACCESSING, THROUGH
  648. * THE SAME CONTROLLER, THE DRIVE THAT HAS
  649. * THE SEEK INITIATED.
  650. LDD HN
  651. STD T0
  652. DSW5 IJM DSW2,CH IF FUNCTION ACCEPTED
  653. ADD ON ENSURE DELAY IS SATISIFIED
  654. NJN DSW5 IF INNER TIMEOUT LOOP NOT YET COMPLETE
  655. SOD T0
  656. NJN DSW5 IF NOT YET TIMED OUT
  657. UJN DSW2 ISSUE DRIVER SEEK WAIT
  658.  
  659. DSW SUBR ENTRY/EXIT
  660. LDM CHRV CHECK CHANNEL RESERVATION
  661. STD CM
  662. LPN 11
  663. DSW1 LMD CM+3
  664. ZJN DSWX IF NO *DSWM* NEEDED
  665. DSWB SCN 77
  666. * SCN 75 (SHARED DEVICE - NO RELEASE AFTER SEEK)
  667. SHN 21-13
  668. NJN DSW6 IF NO RELEASE OR ERROR
  669. LDD CM
  670. LPN 10
  671. NJN DSW4 IF CONNECTED ISSUE RELEASE
  672. DSW2 LDD MA WRITE MESSAGE BUFFER PARAMETERS
  673. CWD T4
  674. MONITOR DSWM DRIVER SEEK WAIT
  675. * LDN 0
  676. DSW3 RAI T0 MODIFY CHANNEL INSTRUCTIONS
  677. LDM TCHA,CM
  678. STD T0
  679. AOD CM
  680. LDD CM+4
  681. DSWA SBN CH
  682. NJN DSW3 IF MORE CHANNEL INSTRUCTIONS TO MODIFY
  683. LDD MA SET T4, T5, AND CM
  684. CRD T4
  685. LDD CM+1 SET RELEASE CODE
  686. STM DSWD
  687. LDD CM SET CHANNEL STATUS
  688. STM CHRV
  689. UJN DSW1 CHECK FOR ERROR
  690.  
  691. DSW6 PJN DSW2 IF NO ERROR
  692. LDD CM+3 SET ERROR CODE
  693. DSW7 STI D1
  694. LJM ERR PROCESS ERROR
  695. TCHS SPACE 4,10
  696. ** TCHA - TABLE OF CHANNEL INSTRUCTION ADDRESSES.
  697.  
  698.  
  699. CHTL DSWA TERMINATE CHANNEL TABLE
  700. TCHA CHTB
  701. RSTC RESTORE CHANNEL INSTRUCTIONS
  702.  
  703. PRS SPACE 4,10
  704. ** PRS - PRESET.
  705. *
  706. * ENTRY (CM - CM+4) = *EQDE* WORD OF EST ENTRY.
  707. *
  708. * EXIT SEEK FUNCTION SELECTED.
  709. * SELECTION MADE FOR DRIVE RELEASE AFTER SEEK.
  710.  
  711.  
  712. PRS LDM STSB SET SEEK FUNCTION
  713. ADK LDNI+FCS1-2000
  714. STM LDAA
  715. LDI D1
  716. STM DSWB
  717. LDN 0 INITIALIZE UNIT SWITCH COUNTER
  718. STI D1
  719. LJM SMSX RETURN
  720. SPACE 4
  721. .1 SET *+4-MSFW CHECK FOR OVERFLOW
  722. .1 SET .1/5
  723. .1 SET MSFW+.1*5
  724. .2 SET PPFW-5-* BYTES AVAILABLE BEFORE OVERFLOW
  725. ERRNG PPFW-5-.1 DRIVER OVERFLOWS INTO *PPFW*-5
  726. TITLE 6DJ - ISD DISK DRIVER.
  727. IDENT 6DJ,MSFW ISD DISK DRIVER.
  728. *COMMENT 6DI - ISD DISK DRIVER.
  729. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  730. SPACE 4,10
  731. *** 6DJ - ISD DISK DRIVER.
  732. *
  733. * K. F. REHM. 85/03/11.
  734. SPACE 4,15
  735. *** *6DJ* ALLOWS ACCESS TO ISD (834 AND 836) DRIVES ONLY.
  736. * IT PROVIDES IMPROVED DISK PERFORMANCE OVER *6DI* BY MAKING
  737. * SEVERAL CHANGES TO THE DATA TRANSFER PROTOCOL. *6DJ* CAUSES
  738. * *CPUMTR* TO PASS THE DIRECTION OF THE DISK TRANSFER (READ OR
  739. * WRITE) IN PREVIOUSLY UNUSED BITS IN THE SEEK PARAMETER WORDS.
  740. * THIS ALLOWS THE ADAPTER TO REDUCE SOME OF THE OVERHEAD IN ITS
  741. * COMMUNICATIONS WITH THE CONTROL MODULE AND ALLOWS THE PP TO
  742. * GIVE UP THE CHANNEL UNTIL DATA IS AVAILABLE IN THE CONTROL
  743. * MODULE-S BUFFER, EFFECTIVELY OVERLAPPING DISK LATENCY TIME.
  744. * *6DJ* ALSO GIVES UP THE CHANNEL AFTER A *WLSF* IF THE LAST
  745. * SECTOR WRITTEN HAS NOT YET ARRIVED ON DISK. THIS ALLOWS
  746. * OTHER PP-S TO USE THE CHANNEL WHILE THE CONTROL MODULE
  747. * FINISHES WRITING THE SECTOR. FOR NON-PERFORMANCE CRITICAL
  748. * DATA TRANSFERS SUCH AS READING THE PACK SERIAL NUMBER, THE
  749. * REGULAR *6DI* DRIVER IS USED INSTEAD.
  750. *
  751. * *6DJ* USES ALL THE SAME MASS STORAGE OVERLAYS AS
  752. * *6DI*. SINCE THE OVERLAYS OFTEN READ FROM OR MODIFY THE
  753. * RESIDENT DRIVER, MANY OF THE SUBROUTINE TAGS IN *6DJ* MUST
  754. * BE DEFINED AT THE SAME ADDRESS AS THOSE IN *6DI*. THOSE
  755. * TAGS IN *6DJ* WHICH DO NOT NEED TO BE IN LINE WITH THEIR
  756. * *6DI* COUNTERPARTS HAVE A *.J* APPENDED TO THEM TO PREVENT
  757. * ASSEMBLY ERRORS.
  758. SPACE 4,10
  759. ** ENTRY CONDITIONS.
  760. *
  761. * (T4) = CHANNEL IF PREVIOUSLY RESERVED.
  762. * (T5) = EST ORDINAL.
  763. * (T6) = TRACK.
  764. * (T7) = SECTOR.
  765. SPACE 4,10
  766. * REDEFINE CHANNEL INSTRUCTIONS TO PRODUCE CHANNEL TABLE.
  767.  
  768. RICHI REDEFINE CHANNEL INSTRUCTIONS
  769. SPACE 4
  770. ORG MSFW
  771. SPACE 4
  772. * ENTRY POINT TRANSFERS.
  773.  
  774.  
  775. CON PRS PRESET *6DJ*
  776.  
  777.  
  778. RDS CON 0 ENTRY
  779. UJN RDS. READ SECTOR
  780.  
  781.  
  782. WDS CON 0 ENTRY
  783. UJN WDS. WRITE SECTOR
  784. EMS SPACE 4,10
  785. ** EMS - END MASS STORAGE PROCESSING.
  786. *
  787. * ENTRY (T4) = CHANNEL, IF PREVIOUSLY RESERVED.
  788. * (T5) = EQUIPMENT.
  789. *
  790. * EXIT (A) = 0.
  791. *
  792. * NOTE - THE *.EMS* ENTRY POINT IS SUPPORTED ONLY VIA THE
  793. * *ENDMS* MACRO DEFINED IN *COMPMAC*. IF THIS LOCATION
  794. * CHANGES, THE DEFINITION OF *.EMS* MUST BE CHANGED IN
  795. * *PPCOM* AND ALL PROGRAMS USING THE *ENDMS*
  796. * MACRO MUST BE REASSEMBLED.
  797.  
  798.  
  799. .EMS SUBR ENTRY/EXIT
  800. LDN 0
  801. STD CM+3
  802. STI D1 SET POSITION REQUIRED
  803. RJM DSW DROP CHANNEL VIA *DSWM*
  804. UJN .EMSX RETURN
  805. RDS SPACE 4,10
  806. ** RDS - READ SECTOR.
  807. *
  808. * ENTRY (A) = BUFFER ADDRESS FOR SECTOR.
  809. *
  810. * EXIT (A) .LT. 0 IF UNRECOVERED ERROR AND READ ERROR
  811. * PROCESSING SELECTED.
  812. *
  813. * CALLS DST, FNC, LDA.
  814.  
  815.  
  816. RDS. STM RDSB SET BUFFER ADDRESS
  817. SOI D1
  818. MJN RDS1 IF POSITION REQUIRED
  819. ADD T7
  820. LMM WDSA
  821. ZJN RDS2 IF CONSECUTIVE SECTORS
  822. RDS1 RJM LDA LOAD ADDRESS AND ISSUE POSITION
  823. RDS2 LDN FCRD NORMAL READ
  824. ERRNZ RDS2-.RDS2 ENSURE ADDRESS IS CORRECT FOR *LDAM* CHECK
  825.  
  826. * ENTERED HERE FROM *7SI* TO ISSUE CONTINUE FUNCTION.
  827. * ENTERED HERE TO READ BACK COUPLER BUFFER ON FULL TRACK
  828. * WRITE BUFFER TO DISK ERROR.
  829.  
  830. RDS3 RJM FNC
  831. IAM *,CH
  832. RDSB EQU *-1
  833. NJN WDS5 IF TRANSFER NOT COMPLETE
  834. SFM LDA8,CH IF CHANNEL PARITY ERROR (LOWER 800 SERIES)
  835. LDM RDS
  836. UJN DST1 CHECK STATUS
  837. WDS SPACE 4,10
  838. ** WDS - WRITE SECTOR.
  839. *
  840. * ENTRY (A) = BUFFER ADDRESS FOR SECTOR.
  841. *
  842. * EXIT (A) = 0 IF NO ERROR.
  843. * (A) = -0 IF UNRECOVERED ERROR AND WRITE ERROR
  844. * PROCESSING SELECTED.
  845. * (A) .EQ. -1 IF UNRECOVERED ERROR ON PREVIOUS SECTOR,
  846. * NO WRITE ERROR PROCESSING BUFFER SPECIFIED IN *WDSE*
  847. * AND WRITE ERROR PROCESSING SELECTED.
  848. *
  849. * CALLS DST, FNC, LDA.
  850.  
  851.  
  852. WDS. STM WDSC SET BUFFER ADDRESS
  853. SHN -14
  854. STM WDSB SET WRITE LAST SECTOR
  855. SOI D1
  856. MJN WDS1 IF POSITION REQUIRED
  857. ADD T7
  858. LMC *
  859. WDSA EQU *-1
  860. ZJN WDS2 IF CONSECUTIVE SECTORS
  861. WDS1 RJM LDA LOAD ADDRESS AND ISSUE POSITION
  862. WDS2 LDI D1 CHECK END OF UNIT/TRACK
  863. ZJN WDS3 IF END OF UNIT/TRACK
  864. LDC 0
  865. WDSB EQU *-1
  866. WDS3 LMN FCWL WRITE LAST SECTOR
  867.  
  868. * ENTERED HERE FROM *7SI* TO ISSUE CONTINUE FUNCTION.
  869.  
  870. WDS4 RJM FNC
  871. OAM *,CH
  872. WDSC EQU *-1
  873. WDS5 NJN LDA9 IF INCOMPLETE TRANSFER
  874. LDM WDS
  875. * UJN DST PROCESS STATUS
  876. DST SPACE 4,10
  877. ** DST - DEVICE STATUS.
  878. * WAITS FOR CHANNEL EMPTY, THEN DISCONNECTS.
  879. *
  880. * ENTRY (A) = EXIT ADDRESS.
  881. *
  882. * EXIT (A) = 0 AND EXIT TO EXIT ADDRESS IF NO STATUS ERROR.
  883. * EXIT TO LDA1 IF STATUS ERROR.
  884.  
  885.  
  886. DST FJM *,CH IF LAST WORD NOT YET TAKEN
  887. DCN CH+40
  888. DST1 STD CM SAVE EXIT ADDRESS
  889. ERRNZ DST1-.DST1 ENSURE ADDRESS IS CORRECT FOR *1MS* JUMP
  890. LDN FCGS GET GENERAL STATUS
  891. RJM FNC ISSUE FUNCTION
  892. IAN CH+40
  893. SFM LDA8,CH IF CHANNEL PARITY ERROR (800 SERIES)
  894. NJN LDA3.J IF ERRORS
  895. LJM 0,CM RETURN
  896. LDA SPACE 4,10
  897. ** LDA - LOAD ADDRESS.
  898. *
  899. * ENTRY (T5) = EQUIPMENT.
  900. * (T6) = TRACK.
  901. * (T7) = SECTOR.
  902. *
  903. * ENTRY LDA3 = ENTRY POINT TO PROCESS GENERAL STATUS ERRORS.
  904. * LDA2 = ENTRY POINT TO JUMP TO ERROR PROCESSOR.
  905. *
  906. * USES CM - CM+4.
  907. *
  908. * CALLS DST, DSW, FNC.
  909. *
  910. * MACROS MONITOR.
  911.  
  912.  
  913. LDA8 LCN CHPE SET CHANNEL PARITY ERROR FLAG
  914. LDA9 LJM DSW7A CALL ERROR PROCESSOR
  915.  
  916. LDA CON 0 ENTRY
  917.  
  918. * REENTER HERE ON ERROR RETRY.
  919. * COMPUTE PHYSICAL ADDRESS.
  920.  
  921. LDA1 LDD OA WAIT OUTPUT REGISTER CLEAR
  922. CRD CM
  923. LDD CM
  924. NJN LDA1 IF NOT CLEAR
  925. LDD MA
  926. CWD T4
  927. LDM LDA PASS READ/WRITE FLAG TO *CPUMTR*
  928. STD CM+1
  929. MONITOR LDAM CONVERT LOGICAL TO PHYSICAL ADDRESS
  930. SOD CM+4 SET UNIT SWITCH COUNTER
  931. STI D1
  932. ADD T7 SET CONSECUTIVE SECTOR COUNT
  933. STM WDSA
  934. UJN LDA4.J CHECK FOR SEEK WAIT NEEDED
  935.  
  936. * ENTER HERE TO PROCESS GENERAL STATUS ERRORS.
  937. * *DSW* WILL DETERMINE IF STATUS REQUIRES AN ERROR PROCESSOR
  938. * CALL OR A SEEK WAIT MONITOR FUNCTION.
  939.  
  940. LDA3.J STD CM+3 SAVE STATUS
  941. LDA4.J RJM DSW DRIVER SEEK WAIT PROCESSING
  942.  
  943. * IF (CM+2) = 1, THEN *DSW* WAS ENTERED BECAUSE A *0020*
  944. * GENERAL STATUS INDICATED THAT THE SECTOR JUST WRITTEN HAD NOT
  945. * YET ARRIVED ON DISK. IN ORDER TO ALLOW OTHER PP-S TO USE THE
  946. * CHANNEL DURING THIS DELAY, *6DJ* GIVES UP THE CHANNEL, THEN
  947. * PERIODICALLY RE-REQUESTS IT TO SEE IF THE SECTOR HAS BEEN
  948. * WRITTEN, GIVING THE CHANNEL UP AGAIN IF THE SECTOR IS STILL
  949. * NOT ON DISK. A GENERAL STATUS OF ZERO INDICATES THAT THE
  950. * SECTOR HAS ARRIVED ON DISK; BY PATCHING THE DRIVER EXIT
  951. * ADDRESS INTO *LDA*, THE ZERO GENERAL STATUS WILL CAUSE *6DJ*
  952. * TO CORRECTLY RETURN TO ITS CALLER.
  953.  
  954. LDD CM+2
  955. ZJN LDA5 IF CONTROLLER PREVIOUSLY RESERVED
  956. SBN 1
  957. NJN LDA4.1 IF NOT BACK FROM A DSWM SUBFUNCTION 20
  958. LDM WDS
  959. STM LDA
  960. LDA4.1 LDN 11-1 SET CONNECTED STATUS IN CHRV
  961. RAM CHRV
  962. LDA5 LDD MA READ SEEK PARAMETERS
  963. ADN 1
  964. CRD CM
  965. LDN FCS1 (SEEK ONE TO ONE INTERLACE)
  966. RJM FNC
  967. LDN 4
  968. OAM CM+1,CH OUTPUT UNIT, CYLINDER, TRACK AND SECTOR
  969. NJN ERR IF ERROR
  970. LDM LDA
  971. LJM DST CHECK STATUS
  972. FNC SPACE 4,10
  973. ** FNC - FUNCTION DEVICE.
  974. *
  975. * ENTRY (A) = FUNCTION CODE.
  976. *
  977. * EXIT (A) = 502.
  978. * FUNCTION ISSUED.
  979. * CHANNEL ACTIVATED.
  980. *
  981. * CALLS ERR.
  982.  
  983.  
  984. FNC4 ACN CH
  985. LDC 502 FULL BUFFER WORD COUNT
  986.  
  987. FNC SUBR ENTRY/EXIT
  988. AJM ERR,CH IF CONTROLLER NOT READY
  989. FAN CH
  990.  
  991. * NOTE - THE FOLLOWING DELAY MUST BE AT LEAST 300 MS.
  992.  
  993. FNC2A ADD ON ENSURE 300 MS DELAY IS SATISFIED
  994. IJM FNC4,CH IF FUNCTION ACCEPTED
  995. NJN FNC2A IF NOT YET TIMED OUT
  996. UJN ERR PROCESS ERROR
  997. SPACE 4,10
  998. * NOTE - THE FOLLOWING CODE IS PLACED HERE TO ALLOW *6DJ*
  999. * ADDRESSES TO REMAIN IN SYNCH WITH *6DI*
  1000.  
  1001. DSW6A PJN DSW5.1 IF NO ERROR
  1002. LDD CM+3 SET ERROR CODE
  1003. DSW7A STI D1
  1004. * UJN ERR PROCESS ERROR
  1005. ERR SPACE 4,10
  1006. ** ERR - CALL *7BI*.
  1007.  
  1008.  
  1009. ERR MSERR 7BI,*
  1010. LJM LEP1 CALL ERROR PROCESSOR
  1011. * LJM DCI8 (DURING *7CI* PROCESSING)
  1012. * LJM DEI6.1 (DURING *7EI* PROCESSING)
  1013. * LJM FTO13 (DURING *7FI* PROCESSING)
  1014. * LJM FTO16 (DURING *7FI* PROCESSING)
  1015. * LJM DCP3 (DURING *7GI* PROCESSING)
  1016. * LJM DCP5 (DURING *7GI* PROCESSING)
  1017. ERRA EQU *-1 EXIT ADDRESS
  1018. DSW SPACE 4,30
  1019. ** DSW - DRIVER SEEK WAIT PROCESSING.
  1020. *
  1021. * ENTRY (CM+3) = SEEK WAIT FUNCTION. THE FOLLOWING IS A LIST
  1022. * OF THE POSSIBLE VALUES AND THEIR ORIGIN.
  1023. * 0 = CHANNEL RELEASE REQUEST. *ENDMS REQUEST*
  1024. * 2 = SEEK IN PROGRESS. *CONTROLLER STATUS*
  1025. * 4 = STORAGE MOVE REQUESTED OR *LDAM STATUS*
  1026. * UNIT SWITCH REQUESTED. *LDAM STATUS*
  1027. * 10 = DRIVE RESERVED. *CONTROLLER STATUS*
  1028. * 11 = REQUEST CHANNEL AND UNIT. *LDAM STATUS*
  1029. * 20 = WRITE IN PROGRESS. *CONTROLLER STATUS*
  1030. * 4XXX = ERROR STATUS. *CONTROLLER STATUS*
  1031. * 5XXX = ERROR STATUS. *CONTROLLER STATUS*
  1032. * 77YY = ERROR STATUS. *LDAM STATUS*
  1033. * YY = COMPLIMENT OF ERROR CODE.
  1034. * (CHRV) = DRIVER CONTROL WORD. SEE *COMSMSP*.
  1035. *
  1036. * EXIT (A) = 0.
  1037. * (T4) = CHANNEL.
  1038. * (T5) = SYSTEM DEVICE SELECTED WHEN APPROPRIATE.
  1039. *
  1040. * USES CM - CM+4.
  1041. *
  1042. * MACROS MONITOR.
  1043.  
  1044.  
  1045. DSW4 FNC FCOC,CH+40 ISSUE RELEASE FUNCTION
  1046. DSWD EQU *-1
  1047. * FNC FCDR,CH+40 A DRIVE RELEASE FUNCTION IS ISSUED AS
  1048. * OPPOSED TO THE OPERATION COMPLETE WHEN
  1049. * A SEEK OPERATION IS OUTSTANDING ON A
  1050. * SHARED DRIVE THROUGH THE SAME CHANNEL.
  1051. * THE ISSUING OF THE DRIVE RELEASE PREVENTS
  1052. * ANOTHER MACHINE FROM ACCESSING, THROUGH
  1053. * THE SAME CONTROLLER, THE DRIVE THAT HAS
  1054. * THE SEEK INITIATED.
  1055. LDN 1
  1056. STD T0
  1057. DSW5 IJM DSW2,CH IF FUNCTION ACCEPTED
  1058. ADN 1 ENSURE DELAY IS SATISIFIED
  1059. NJN DSW5 IF INNER TIMEOUT LOOP NOT YET COMPLETE
  1060. SOD T0
  1061. NJN DSW5 IF NOT YET TIMED OUT
  1062. DSW5.1 UJN DSW2 ISSUE DRIVER SEEK WAIT
  1063.  
  1064. DSW SUBR ENTRY/EXIT
  1065. LDM CHRV CHECK CHANNEL RESERVATION
  1066. STD CM
  1067. LPN 11
  1068. DSW1 LMD CM+3
  1069. ZJN DSWX IF NO *DSWM* NEEDED
  1070. SCN 55
  1071. SHN 21-13
  1072. NJN DSW6A IF NO RELEASE OR ERROR
  1073. LDD CM
  1074. LPN 10
  1075. NJN DSW4 IF CONNECTED ISSUE RELEASE
  1076. DSW2 LDD OA CHECK IF *DRCM*/*EXCM* COMPLETED
  1077. CRM DSWC,ON
  1078. LDM DSWC
  1079. NJN DSW2 IF FUNCTION NOT YET PROCESSED
  1080. LDD MA STORE PARAMETERS
  1081. CWD T4
  1082. MONITOR DSWM DRIVER SEEK WAIT
  1083. * LDN 0
  1084. DSW3.J RAI T0 MODIFY CHANNEL INSTRUCTIONS
  1085. LDM TCHA.J,CM
  1086. STD T0
  1087. AOD CM
  1088. LDD CM+4
  1089. DSWA.J SBN CH
  1090. NJN DSW3.J IF MORE CHANNEL INSTRUCTIONS TO MODIFY
  1091. LDD MA SET T4, T5, AND CM
  1092. CRD T4
  1093. LDD CM+1 SET RELEASE CODE
  1094. STM DSWD
  1095. LDD CM SET CHANNEL STATUS
  1096. STM CHRV
  1097. LJM DSW1 CHECK FOR ERROR
  1098. TCHS SPACE 4,10
  1099. ** TCHA.J - TABLE OF CHANNEL INSTRUCTION ADDRESSES
  1100.  
  1101.  
  1102. CHTL DSWA.J TERMINATE CHANNEL TABLE
  1103. TCHA.J CHTB
  1104. RSTC RESTORE CHANNEL INSTRUCTIONS
  1105.  
  1106. ERRNG PRS-* DRIVER OVERFLOWED INTO SCRATCH AREA
  1107. PRS SPACE 4,10
  1108. ** PRS - PRESET *6DJ*.
  1109.  
  1110.  
  1111. PRS BSS 0 ENTRY
  1112. LDN 0 FORCE *LDA* CALL ON FIRST OPERATION
  1113. STI D1
  1114. LJM SMSX EXIT VIA *.SMS*
  1115.  
  1116. DSWC BSS 0 *DRCM*/*ECXM* CHECK SCRATCH AREA
  1117. SPACE 4
  1118. .1 SET *+5+4-MSFW CHECK FOR OVERFLOW
  1119. .1 SET .1/5
  1120. .1 SET MSFW+.1*5
  1121. .2 SET PPFW-5-*-5 BYTES AVAILABLE BEFORE OVERFLOW
  1122. ERRNG PPFW-5-.1 DRIVER OVERFLOWS INTO *PPFW*-5
  1123. 7BI MSOVL 7651,T2,EPFW-1,("HN" INITIAL ERROR PROCESSOR.)
  1124. 7CI SPACE 4,10
  1125. *** INITIALIZE ERROR PROCESSOR.
  1126. * K. F. REHM. 84/02/01.
  1127. 7CI SPACE 4,10
  1128. *** *7BI* IS CALLED BY *6DI*/*6DJ* WHEN AN ERROR HAS BEEN
  1129. * DETECTED. *7BI* OVERLAYS *6DI*/*6DJ* PRESET WITH RECOVERY
  1130. * CODE INITIALIZES MEMORY LOCATIONS USED BY OTHER OVERLAYS.
  1131. SPACE 4,10
  1132. ** DBI - INITIALIZE ERROR PROCESSING.
  1133. *
  1134. * ENTRY (T1) = LENGTH OF *PRS* OVERLAY CODE.
  1135. * (T2) = RDCT.
  1136. * (T4 - T7) = DRIVER PARAMETERS.
  1137. * (RDCT) = ERROR PROCESSOR INTERFACE WORD.
  1138. * BIT 6 = 0 IF FIRST RETRY ATTEMPT.
  1139. * (DRSW) = *LDAM*/*DSWM*/CHANNEL PARITY ERROR CODE
  1140. * COMPLIMENT.
  1141. *
  1142. * EXIT TO *7CI*.
  1143. * (T4 - T7) = UNCHANGED.
  1144. * (DEAI) = ALGORITHM INDEX.
  1145. * EXIT (DEDT) = ERROR PROCESSING CONTROL WORD.
  1146. * BITS AFFECTED BY THIS OVERLAY -
  1147. * BITS 3 - 0 = *6DI*/*6DJ* DRIVER TYPE.
  1148. * (DEGS) = 0.
  1149. * (DENR) = 0 IF FIRST RETRY ATTEMPT, ELSE UNCHANGED.
  1150. * (DERC) = 0 IF FIRST RETRY ATTEMPT, ELSE UNCHANGED.
  1151. * (DERW) = 1 IF WRITE REQUEST, 0 IF READ REQUEST.
  1152. * (DEST) = 0.
  1153. * (DEWR) = 0 IF FIRST RETRY ATTEMPT, ELSE UNCHANGED.
  1154. * (DEXA) = *LDA1*, *7EP* EXIT ADDRESS.
  1155. * (MSFW) = INITIAL CHANNEL.
  1156. * (RDCT) = ERROR PROCESSOR INTERFACE WORD.
  1157. * BITS AFFECTED BY THIS OVERLAY -
  1158. * BIT 4 = 1.
  1159. * (WDSB) = *WLSF* FUNCTION.
  1160. * (MB, BYTES 0-3) = T4 - T7, SAVED FOR *7FI*.
  1161. * (MB, BYTE 4) = ADDRESS OF LAST *FNC* CALL FOR *7FI*.
  1162. * (MB+1) = PHYSICAL DISK ADDRESS FROM *LDAM*.
  1163. *
  1164. * USES T1, CM - CM+4.
  1165. *
  1166. * MACROS MONITOR, MSERR.
  1167. SPACE 4,10
  1168. * *7BI* MOVES THE FOLLOWING CODE TO THE *6DI* PRESET AREA.
  1169.  
  1170.  
  1171. QUAL
  1172. DBIA BSS 0 ERROR PROCESSOR CALLS
  1173. LOC PRS
  1174.  
  1175. ** ERR2 - CALL STATUS PROCESSOR.
  1176.  
  1177. ERR2 MSERR 7SI,*
  1178. UJN WEP1 EXECUTE *7SI*
  1179.  
  1180. ** WEP - WRITE ERROR PROCESSOR.
  1181.  
  1182. WEP STD T2
  1183. MSERR 7WI,*
  1184. WEP1 LJM LEP1 EXECUTE OVERLAY
  1185.  
  1186. * THE FOLLOWING CHECK VERIFIES THAT LINKAGE BYTES ARE NOT
  1187. * DESTROYED DURING ERROR RECOVERY OF THE FIRST SECTOR OF A
  1188. * PP PROGRAM LOAD. IT ALSO VERIFIES THAT THE USE OF LONG
  1189. * TERM ERROR PROCESSOR DATA CELLS DOES NOT DESTROY THE ERROR
  1190. * PROCESSOR CALL CODE.
  1191.  
  1192. ERRNG DEFW+1-* OVERFLOW
  1193. LOC *O
  1194. DBIAL EQU *-DBIA
  1195. QUAL *
  1196. SPACE 4,10
  1197. DBI ENTRY *7BI* ENTRY
  1198.  
  1199. DBI1 LDM DBIA-1,T1 MOVE CODE TO PRESET AREA
  1200. STM PRS-1,T1
  1201. SOD T1
  1202. NJN DBI1 IF MORE TO MOVE
  1203. STM DEST INITIALIZE ERROR PROCESSING CONTROL WORD
  1204. STM DEGS INITIALIZE GENERAL STATUS
  1205. STM DEDT SET DRIVER TYPE
  1206. ERRNZ /COMSDFS/D6DI CODE REQUIRES *D6DI* = 0
  1207. ERRNZ /COMSDFS/D6DJ CODE REQUIRES *D6DJ* = 0
  1208. LCN 0
  1209. STM DELF PRESET LAST FUNCTION
  1210. SFA EST,T5
  1211. ADK EQDE
  1212. CRD CM
  1213. LDD CM+4 GET ALGORITHM INDEX FROM MST
  1214. SHN 3
  1215. ADK DILL
  1216. CRD CM
  1217. LDD CM+4
  1218. LPN 77
  1219. STM DEAI
  1220. LDM FNC PRESERVE ADDRESS OF LAST *FNC* CALL
  1221. STD CM
  1222. LDD MA SAVE (T4 - CM) IN CASE *7FI* IS CALLED
  1223. CWD T4
  1224. LDN 0
  1225. STD CM+1
  1226. MONITOR LDAM SAVE PHYSICAL DISK ADDRESS
  1227. LDC RDS2 SET READ/WRITE FLAG
  1228. SBM LDA
  1229. SHN -21
  1230. ERRNZ WRIP-1 CODE DEPENDS ON VALUE OF *WRIP*
  1231. ERRNZ REDP CODE DEPENDS ON VALUE OF *REDP*
  1232. STM DERW
  1233. LDI T2
  1234. LPC 100
  1235. NJN DBI2 IF NOT FIRST RETRY ATTEMPT
  1236. STM DERC INITIALIZE RETRY COUNT
  1237. STM DEWR INITIALIZE *DATA WRITTEN/READ* FLAG
  1238. STM DENR INITIALIZE *NON-RECOVERABLE ERROR* FLAG
  1239. LDD HN
  1240. STI T2
  1241. LDD T4 SAVE INITIAL CHANNEL
  1242. STM MSFW
  1243. LDI D1
  1244. LMC 7777&LNRE
  1245. ZJN DBI2 IF SUSPECT SET BY PREVIOUS PP
  1246. LDM CHRV
  1247. SCN EPNS
  1248. LMN EPNS PERMIT ACCESS TO SUSPECT DEVICE
  1249. STM CHRV
  1250. DBI2 LDC LDA1 SET ERROR PROCESSOR EXIT ADDRESS
  1251. STM DEXA
  1252. MSERR 7CI EXECUTE *7CI*
  1253. SPACE 4,10
  1254. ERRNG 10000-* *7BI* OVERFLOW
  1255. BSS 10000-* (SPARES)
  1256. CON DBI-1 (T0) = ENTRY ADDRESS - 1
  1257. CON DBIAL (T1) = LENGTH OF ERROR PROCESSOR CALL CODE
  1258. CON RDCT (T2) = RDCT
  1259. ERRNZ LN-* INCORRECT *7BI* OVERLAY LENGTH
  1260. QUAL *
  1261. 7CI MSOVL 7637,T2,DEXA,(OBTAIN GENERAL AND DETAILED STATUS.)
  1262. SPACE 4,10
  1263. *** OBTAIN GENERAL AND DETAILED STATUS.
  1264. * R. J. MAAS. 80/12/12.
  1265. * C. R. LUND. 81/07/30.
  1266. SPACE 4,10
  1267. * *7CI* IS CALLED BY *7BI*. IF THE ERROR IS A
  1268. * CONTROLLER REPORTED ERROR, *7CI* WILL OBTAIN GENERAL AND
  1269. * DETAILED STATUS FROM THE CONTROLLER. IF THE ERROR IS A
  1270. * *DSWM*, *LDAM* OR CHANNEL PARITY ERROR, STATUS WILL NOT BE
  1271. * TAKEN. INSTEAD, *7EI* WILL BE CALLED IMMEDIATELY. *7FI*
  1272. * WILL BE CALLED IF EITHER STATUS FUNCTION TIMES OUT OR AN
  1273. * INCOMPLETE DATA TRANSFER OCCURS ON EITHER STATUS INPUT.
  1274. 7DI SPACE 4,10
  1275. * REDEFINE CHANNEL INSTRUCTIONS TO PRODUCE LINKED LIST.
  1276.  
  1277. FWDL$ EQU 1 SELECT FORWARD LINKED CHANNEL INSTRUCTIONS
  1278. RICHL
  1279. LEO SPACE 4,10
  1280. ** DCI - OBTAIN GENERAL AND DETAILED STATUS.
  1281. *
  1282. * ENTRY (T1) = DETAILED STATUS SIZE.
  1283. * (T2) = FIRST CHANNEL INSTRUCTION ADDRESS.
  1284. * (T4 - T7) = DRIVER PARAMETERS.
  1285. * (D1) = DRSW.
  1286. * (DRSW) = *LDAM*/*DSWM*/CHANNEL PARITY ERROR CODE
  1287. * COMPLIMENT.
  1288. * (MB, BYTES 0-3) = T4 - T7, SAVED FOR *7FI*.
  1289. * (MB, BYTE 4) = ADDRESS OF LAST *FNC* CALL FOR *7FI*.
  1290. * (MB+1) = PHYSICAL DISK ADDRESS FROM *LDAM*.
  1291. *
  1292. * EXIT TO *7EI* IF NOT A CONTROLLER REPORTED ERROR OR A
  1293. * CHANNEL PARITY ERROR OCCURS WHEN ATTEMPTING TO INPUT
  1294. * STATUS.
  1295. * TO *7FI* IF FUNCTION TIMEOUT OR INCOMPLETE DATA
  1296. * TRANSFER ON STATUS INPUT.
  1297. * TO *7DI* OTHERWISE.
  1298. * (T2) = *7EI* PROCESSING INDEX IF *7EI* IS CALLED.
  1299. * (T4 - T7) = UNCHANGED.
  1300. * (DEEC) = ERROR CODE (MEANINGFUL ONLY IF CALLING *7EI*
  1301. * OR *7FI*).
  1302. * = *CSTE* IF FUNCTION TIMEOUT OR INCOMPLETE DATA
  1303. * TRANSFER.
  1304. * = *CHPE* IF CHANNEL PARITY ERROR ON STATUS
  1305. * INPUT OR CHANNEL PARITY ERROR ON INPUT IN
  1306. * DRIVER.
  1307. * = ERROR CODE REPORTED BY *DSWM* OR *LDAM*.
  1308. * (DEGS) = GENERAL STATUS.
  1309. * (DELF) = FUNCTION (COULD BE DATA) RETRIEVED FROM
  1310. * CHANNEL.
  1311. * (DERC) = *CHPE* RETRY LIMIT - 1 IF CHANNEL PARITY
  1312. * ERROR ON STATUS INPUT IN THIS OVERLAY,
  1313. * OTHERWISE UNCHANGED.
  1314. * (MB, BYTES 0-3) = UNCHANGED.
  1315. * (MB, BYTE 4) = UNCHANGED.
  1316. * (MB+1) = UNCHANGED.
  1317. * (MB+2 - MB+5) = DETAILED STATUS IF CALLING *7DI*.
  1318. *
  1319. * USES CM, T1, T2.
  1320. *
  1321. * CALLS FNC.
  1322. *
  1323. * MACROS MSERR.
  1324.  
  1325.  
  1326. DCI ENTRY *7CI* ENTRY
  1327.  
  1328. LDC DCI8 SET FUNCTION TIMEOUT ERROR ADDRESS
  1329. STM ERRA
  1330.  
  1331. * INITIALIZE TO ZEROS THE AREA WHERE DETAILED STATUS WILL BE
  1332. * READ IN.
  1333.  
  1334. ERRNG *-OFFW-DSLN DETAILED STATUS DESTROYS CODE
  1335. DCI1 LDN 0
  1336. STM OFFW-1,T1
  1337. SOD T1
  1338. NJN DCI1 IF MORE BYTES TO CLEAR
  1339.  
  1340. * MODIFY CHANNEL INSTRUCTIONS.
  1341.  
  1342. * LDN 0
  1343. DCI2 RAD T2
  1344. LDI T2 SAVE LINK TO NEXT CHANNEL INSTRUCTION
  1345. LPN 37
  1346. STD CM
  1347. LDD T4 MODIFY A CHANNEL INSTRUCTION
  1348. SBD CM
  1349. RAI T2
  1350. LDD CM
  1351. NJN DCI2 IF MORE INSTRUCTIONS TO MODIFY
  1352.  
  1353. * IF THE ERROR WAS REPORTED BY THE CONTROLLER, PROCEED TO
  1354. * TAKE GENERAL AND DETAILED STATUS. IN ALL OTHER CASES GO
  1355. * DIRECTLY TO *7EI*.
  1356.  
  1357. LDI D1
  1358. SBK 7700
  1359. MJN DCI5 IF CONTROLLER REPORTED ERROR
  1360. LMN 77
  1361. UJN DCI4 EXECUTE *7EI*
  1362.  
  1363. * PROCESS A CHANNEL PARITY ERROR (800 SERIES MACHINES)
  1364. * THAT OCCURS ON INPUT OF GENERAL OR DETAILED STATUS
  1365. * IN *7CI*. *CHRT* RETRIES WILL BE PERFORMED BEFORE
  1366. * THE ERROR IS CONSIDERED UNRECOVERED.
  1367.  
  1368. DCI3 AOD T1
  1369. SBN CHRT
  1370. MJN DCI6 IF NOT UNRECOVERED YET
  1371. LDK CHRT-1 FORCE UNRECOVERED ERROR
  1372. STM DERC
  1373. LDN CHPE SET CHANNEL PARITY ERROR FLAG
  1374. DCI4 LJM DCI9 CALL *7EI*
  1375.  
  1376. * RETRIEVE ANY FUNCTION OR DATA LEFT ON THE CHANNEL AND THEN
  1377. * TAKE BOTH GENERAL AND DETAILED STATUS. IF A FUNCTION TIMES
  1378. * OUT OR IF ALL OF GENERAL OR DETAILED STATUS IS NOT RECEIVED,
  1379. * CALL *7FI* TO DETERMINE THE CAUSE OF THE PROBLEM.
  1380.  
  1381. DCI5 IJM DCI7,CH IF NOT FUNCTION TIMEOUT
  1382. EJM DCI6,CH IF NO FUNCTION ON CHANNEL
  1383. IAN CH+40 INPUT FUNCTION
  1384. STM DELF
  1385. DCI6 DCN CH+40
  1386. DCI7 LDN FCGS GET GENERAL STATUS
  1387. RJM FNC
  1388. LDN 1
  1389. IAM DEGS,CH
  1390. SFM DCI3,CH IF CHANNEL PARITY ERROR (800 SERIES)
  1391. NJN DCI8 IF INCOMPLETE DATA TRANSFER
  1392. STD T1 RESET CHANNEL PARITY ERROR RETRY COUNT
  1393. LDM DEGS
  1394. LMC 5017
  1395. ZJN DCI8 IF CONTROL MODULE MEMORY ERROR
  1396. SHN 0-12
  1397. LPN 1
  1398. LMN 1
  1399. ERRNZ EI0 CODE ASSUMES *EI0* = 0
  1400. ZJN DCI11 IF OPPOSITE ACCESS RESERVED
  1401. LDN FCDS GET DETAILED STATUS
  1402. RJM FNC
  1403. LDN DSLN
  1404. IAM OFFW,CH
  1405. ERRNG *-OFFW-DSLN DATA READ IN DESTROYS CODE
  1406. SFM DCI3,CH IF CHANNEL PARITY ERROR (800 SERIES)
  1407. NJN DCI8 IF INCOMPLETE DATA TRANSFER
  1408. LDN 3R7DQ&3R7DI
  1409. STM DCIA
  1410. MSERR 7DI,=
  1411. UJN DCI12 EXECUTE *7DI*
  1412.  
  1413. DCI8 LDD HN
  1414. ERRNZ 3R7FI-3R7EI-100 CODE ASSUMES RELATIVE VALUES
  1415. RAM DCIA
  1416. LDN CSTE SET CONTROLLER STOP ERROR CODE
  1417. DCI9 STM DEEC
  1418. LDN EI3 SET *7EI* PROCESSOR INDEX
  1419. DCI11 STD T2
  1420. DCI12 LDN DSLN/5
  1421. STD T1
  1422. LDD MA
  1423. ADN 2
  1424. CWM OFFW,T1
  1425. ERRNZ DSLN/5-4 ADJUST IF VALUE OF *DSLN* CHANGES
  1426. MSERR 7EI,*
  1427. MSERR 7FI,= (FUNCTION TIMEOUT/DATA TRANSFER ERROR)
  1428. DCIA EQU *-1
  1429. LJM LEP1 EXECUTE *7DI*/*7EI*/*7FI*
  1430. SPACE 4
  1431. HERE TERMINATE LINKED CHANNEL INSTRUCTIONS
  1432. SPACE 4,10
  1433. ERRNG 10000-* *7CI* OVERFLOW
  1434. BSS 10000-* (SPARES)
  1435. CON DCI-1 (T0) = ENTRY ADDRESS - 1
  1436. CON DSLN (T1) = DETAILED STATUS LENGTH
  1437. CON CH01$ (T2) = FIRST CHANNEL INSTRUCTION ADDRESS
  1438. ERRNZ LN-* INCORRECT *7CI* OVERLAY LENGTH
  1439. QUAL *
  1440. 7DI MSOVL 7550,T2,DEXA,(DETAILED STATUS PROCESSOR.)
  1441. 7DI SPACE 4,10
  1442. *** DETAILED STATUS PROCESSOR.
  1443. * R. M. DANISCH. 85/02/06.
  1444. 7DI SPACE 4,10
  1445. * *7DI* IS CALLED BY *7CI* TO DETERMINE THE ERROR TYPE
  1446. * BY ANALYZING DETAILED STATUS.
  1447. 7DI SPACE 4,10
  1448. ** DDI - DETAILED STATUS PROCESSOR.
  1449. *
  1450. * ENTRY (T1) = DEST.
  1451. * (T2) = DEGS.
  1452. * (T4 - T7) = DRIVER PARAMETERS.
  1453. * (DEAI) = ALGORITHM INDEX.
  1454. * (DERW) = 1 IF WRITE REQUEST, 0 IF READ REQUEST.
  1455. * (DEGS) = GENERAL STATUS.
  1456. * (RDCT) = ERROR PROCESSING INTERFACE WORD.
  1457. * (MB+1) = PHYSICAL DISK ADDRESS FROM *LDAM*.
  1458. * (MB+2 - MB+5) = DETAILED STATUS.
  1459. *
  1460. * EXIT TO *7EI*.
  1461. * (DEST) = ERROR PROCESSING CONTROL WORD.
  1462. * BITS AFFECTED BY THIS OVERLAY -
  1463. * BIT 5 = 1 IF ISD DRIVE FAULT.
  1464. * BIT 0 = 1 IF ERROR ON PREVIOUS SECTOR.
  1465. * (DEWR) = 1 IF DATA WRITTEN TO DISK.
  1466. * (MB+1) = UNCHANGED.
  1467. * (MB+2 - MB+5) = UNCHANGED.
  1468. *
  1469. * USES CM, T2.
  1470. *
  1471. * MACROS MSERR.
  1472.  
  1473.  
  1474. DDI ENTRY *7DI* ENTRY
  1475.  
  1476. LDI T2
  1477. SHN 0-11
  1478. LMN 5
  1479. ZJN DDI1 IF GENERAL STATUS = 5XXX
  1480. LDN EI0 SET *7EI* PROCESSOR INDEX
  1481. LJM DDI22 EXECUTE *7EI*
  1482.  
  1483. DDI1 LDM DEAI IDENTIFY HARDWARE TYPE
  1484. SBN AIIB
  1485. MJN DDI3 IF 844/885 DEVICE
  1486. SBK AIIE-AIIB
  1487. PJN DDI2 IF NOT ISD DEVICE
  1488. LDN 12-10
  1489. RAM DDIE
  1490. LDC UJNI+DDI18.1-DDIH
  1491. ERRPL DDI18.1-DDIH-40 RANGE ERROR
  1492. STM DDIH
  1493. LDN 7-3
  1494. UJN DDI6 CONTINUE
  1495.  
  1496. DDI2 SBN AIDX-AIIE
  1497. PJN DDI7 IF FSC DEVICE
  1498. LJM DDI20 REPORT STATUS ERROR FOR BUFFERED DEVICE
  1499.  
  1500. DDI3 LDN PSNI ENABLE DATA WRITTEN CHECK
  1501. STM DDIC
  1502. LDM DEAI
  1503. SBN AIDQ
  1504. PJN DDI4 IF *DR* OR *DQ* DEVICE
  1505. ADN AIDQ-AIDM
  1506. NJN DDI9 IF 844 DEVICE
  1507. DDI4 LDN PSNI
  1508. STM DDID ENABLE 885 NOT READY CHECK
  1509. DDI6 UJN DDI8 CONTINUE
  1510.  
  1511. DDI7 LCN 10-0 MODIFY CODE FOR FSC DEVICE
  1512. RAM DDIE
  1513. LDC LMNI+1
  1514. STM DDIG
  1515. LDN 21-14
  1516. RAM DDIH+1
  1517. LDC UJNI+DDI23-DDII
  1518. ERRPL DDI23-DDII-40 RANGE ERROR
  1519. STM DDII
  1520. LCN 12-7
  1521. DDI8 RAM DDIF
  1522. DDI9 LDN DSLN/5 READ DETAILED STATUS FROM MESSAGE BUFFER
  1523. STD CM
  1524. LDD MA
  1525. ADN 2
  1526. CRM OFFW,CM
  1527. ERRNZ DSLN/5-4 ADJUST CODE IF VALUE OF *DSLN* CHANGES
  1528. ERRNG *-OFFW-DSLN CODE IS DESTROYED BY DETAILED STATUS
  1529.  
  1530. * CHECK FOR DATA WRITTEN TO DISK.
  1531.  
  1532. DDI13 UJN DDI15 CONTINUE FOR NON-844/885 DEVICE
  1533. * PSN (844/885)
  1534. DDIC EQU *-1
  1535. LDM OFFW+20
  1536. LPN 2
  1537. ZJN DDI14 IF NOT DATA FIELD ERROR
  1538. LDM DERW
  1539. ZJN DDI14 IF READ REQUEST
  1540. STM DEWR SET *DATA WRITTEN/READ* FLAG
  1541.  
  1542. * CHECK FOR DRIVE NOT READY.
  1543.  
  1544. DDI14 UJN DDI15 CONTINUE FOR NON-885
  1545. * PSN (885)
  1546. DDID EQU *-1
  1547. LDM OFFW+7
  1548. SHN 21-0
  1549. MJN DDI17 IF NOT *NOT READY*
  1550. DDI15 LDI T2
  1551. LMC 5020
  1552. NJN DDI17 IF NOT *NOT READY*
  1553. LDM OFFW+10
  1554. * LDM OFFW (FSC)
  1555. * LDM OFFW+12 (ISD)
  1556. DDIE EQU *-1
  1557. SHN 0-7
  1558. * SHN 0-12 (FSC)
  1559. * SHN 0-3 (ISD)
  1560. DDIF EQU *-1
  1561. LPN 1
  1562. DDIG PSN
  1563. * LMN 1 (FSC)
  1564. NJN DDI17 IF NOT *NOT READY*
  1565. LDN EI6 SET *7EI* PROCESSOR INDEX
  1566. UJN DDI18 EXECUTE *7EI*
  1567.  
  1568. * CHECK FOR ERROR ON PREVIOUS SECTOR.
  1569.  
  1570. DDI17 LDM OFFW+14
  1571. * LDM OFFW+21 (FSC)
  1572. * UJN DDI18.1 (ISD)
  1573. DDIH EQU *-2
  1574. SHN 0-13
  1575. ZJN DDI19 IF NOT ERROR ON PREVIOUS SECTOR
  1576. LDM DERW
  1577. ZJN DDI18.2 IF NOT A WRITE
  1578. AOI T1 SET *ERROR ON PREVIOUS SECTOR* FLAG
  1579. LDN EI1 SET *7EI* PROCESSOR INDEX
  1580. DDI18 LJM DDI22 EXECUTE *7EI*
  1581.  
  1582. * CHECK FOR ISD MEDIA ERROR.
  1583.  
  1584. DDI18.1 LDM OFFW+20 CHECK BOX ISOLATION STATUS
  1585. SHN 21-5
  1586. PJN DDI20 IF NOT DRIVE/MEDIA FAULT
  1587. LDM OFFW+10
  1588. SHN 0-4
  1589. LMC 101
  1590. ZJN DDI21 IF MEDIA ERROR IN HEADER
  1591. LMN 101&103
  1592. ZJN DDI21 IF MEDIA ERROR IN DATA
  1593. LDN 40 SET *EXECUTE DIAGNOSTICS* FLAG
  1594. RAI T1
  1595. DDI18.2 UJN DDI20 SET *7EI* PROCESSOR INDEX (STATUS ERROR)
  1596.  
  1597. * CHECK FOR 844/885 MEDIA ERROR.
  1598.  
  1599. DDI19 LDM OFFW
  1600. * UJN DDI23 (FSC)
  1601. DDII EQU *-2
  1602. LPN 17
  1603. LMN 10
  1604. ZJN DDI21 IF MEDIA ERROR
  1605. LDM OFFW+1
  1606. SHN 21-13
  1607. MJN DDI21 IF MEDIA ERROR
  1608. SHN 13-11
  1609. MJN DDI21 IF MEDIA ERROR
  1610. LDM OFFW+20
  1611. SHN 21-10
  1612. MJN DDI21 IF MEDIA ERROR
  1613. DDI20 SOM DDIJ
  1614. ERRNZ EI5-EI4-1 CODE ASSUMES *EI5* = *EI4* + 1
  1615. DDI21 LDN EI5 SET *7EI* PROCESSOR INDEX
  1616. * LDN EI4 (NOT A MEDIA ERROR)
  1617. DDIJ EQU *-1
  1618. DDI22 STD T2
  1619. MSERR 7EI EXECUTE *7EI*
  1620.  
  1621. * CHECK FOR FSC MEDIA ERROR.
  1622.  
  1623. DDI23 LDI T2
  1624. SHN 21-4
  1625. PJN DDI20 IF NOT MEDIA ERROR
  1626. LDM OFFW
  1627. SHN 21-7
  1628. PJN DDI20 IF NOT MEDIA ERROR
  1629. LDM OFFW+1
  1630. SHN 21-6
  1631. PJN DDI20 IF NOT MEDIA ERROR
  1632. UJN DDI21 EXECUTE *7EI*
  1633. SPACE 4,10
  1634. ERRNG 10000-* *7DI* HAS OVERFLOWED
  1635. BSS 10000-* SPARES
  1636. CON DDI-1 (T0) = ENTRY ADDRESS - 1
  1637. CON DEST (T1) = DEST
  1638. CON DEGS (T2) = DEGS
  1639. ERRNZ LN-* INCORRECT *7DI* OVERLAY LENGTH
  1640. QUAL *
  1641. 7EI MSOVL 7542,T1,DEXA,(SET ERROR CODE.)
  1642. SPACE 4
  1643. *** SET ERROR CODE.
  1644. * R. J. THIELEN. 75/11/20.
  1645. * W. E. GOEBEL. 77/01/24.
  1646. SPACE 4
  1647. * *7EI* IS CALLED BY *7CI*, *7DI* OR *7FI* TO PERFORM
  1648. * ADDITIONAL CHECKS ON GENERAL STATUS AND TO ASSIGN AN ERROR
  1649. * CODE FOR THE CURRENT ERROR. FOR COUPLER TO DISK ERRORS,
  1650. * *7EI* WILL READ BACK THE PREVIOUS SECTOR FROM THE CONTROLLER
  1651. * SO THAT THE DRIVER CAN RE-WRITE IT.
  1652. MSE SPACE 4
  1653. ** DEI - SET ERROR CODE.
  1654. *
  1655. * ENTRY (T1) = DEST.
  1656. * (T2) = INDEX TO PROCESSING ADDRESS IN *7EI*.
  1657. * (T4 - T7) = DRIVER PARAMETERS.
  1658. * (DEAI) = ALGORITHM INDEX.
  1659. * (DEEC) = ERROR CODE IF CALLED BY *7CI* OR *7FI*.
  1660. * (DEGS) = GENERAL STATUS.
  1661. * (DERW) = 1 IF WRITE REQUEST, 0 IF READ REQUEST.
  1662. * (DEST) = ERROR PROCESSING CONTROL WORD.
  1663. * (RDSB) = ADDRESS OF DATA BUFFER FOR READ.
  1664. * (WDSC) = ADDRESS OF DATA BUFFER FOR WRITE.
  1665. * (WDSE) = ADDRESS OF BUFFER FOR WRITE ERROR RETRY (IF
  1666. * SPECIFIED ON *SETMS*).
  1667. * (MB+1) = PHYSICAL DISK ADDRESS FROM *LDAM*.
  1668. * (MB+2 - MB+5) = DETAILED STATUS, IF ERROR WAS REPORTED
  1669. * BY CONTROLLER (NOT A *DSWM*/*LDAM*/
  1670. * CHANNEL PARITY ERROR.
  1671. *
  1672. * EXIT TO *7EK*
  1673. * (T2) = READ BUFFER ADDRESS.
  1674. * (T4 - T7) = UNCHANGED.
  1675. * (DEEC) = ERROR CODE.
  1676. * (DENR) = 1 IF NON-RECOVERABLE ERROR.
  1677. * (DEST) = ERROR PROCESSING CONTROL WORD.
  1678. * BITS AFFECTED BY THIS OVERLAY -
  1679. * BIT 12 = 1 IF NO RETRIES ARE ALLOWED.
  1680. * BIT 4 = 1 IF RECOVERY IN PROGRESS (BIT 10
  1681. * OF GENERAL STATUS IS SET).
  1682. * BIT 3 = 1 IF BUFFER READBACK FAILED.
  1683. * (DEWR) = 1 IF DATA MAY HAVE BEEN WRITTEN TO DISK.
  1684. * (DEXA) = ADDRESS AT WHICH TO RETRY OPERATION.
  1685. * *LDA1*, IF *7SI* WILL NOT BE CALLED.
  1686. * *ERR2*, IF *7SI* TO BE CALLED.
  1687. * (MB+1) = UNCHANGED.
  1688. * (MB+2 - MB+5) = UNCHANGED.
  1689. *
  1690. * USES T2, T7, CM.
  1691. *
  1692. * MACROS ISTORE, MSERR.
  1693.  
  1694.  
  1695. DEI ENTRY *7EI* ENTRY
  1696.  
  1697. LDM TDEI,T2
  1698. STD CM
  1699. LDN 0
  1700. LJM 0,CM ENTER PROCESSOR
  1701.  
  1702. * *EI0* - GENERAL STATUS .NE. 5XXX.
  1703.  
  1704. DEI1 LDM DEGS
  1705. SHN 21-10
  1706. PJN DEI4 IF NO RECOVERY IN PROGRESS
  1707. SHN 10-5
  1708. PJN DEI3 IF NOT A CORRECTABLE ERROR
  1709. LDM RDSB
  1710. SBK EPFW-502+1
  1711. PJN DEI4 IF ERROR PROCESSOR OVERLAYS BUFFER
  1712. DEI3 LDC ERR2 CAUSE *7EP* TO CALL *7SI*
  1713. STM DEXA
  1714. LDN 20 SET IMMEDIATE EXIT FLAG FOR *7EP*
  1715. RAI T1
  1716. DEI4 LJM DEI9 SET *DSTE* ERROR CODE
  1717.  
  1718. * *EI1* - WRITE ERROR ON PREVIOUS SECTOR.
  1719.  
  1720. DEI5 LDM ERXA
  1721. NJP DEI8 IF ERROR ON A RETRY
  1722. STM WDSB FORCE *WRITE LAST SECTOR*
  1723. ERRNZ WLSF CODE ASSUMES VALUE
  1724. LDM WDSE
  1725. NJN DEI6 IF WRITE BUFFER SPECIFIED
  1726. LDM WDSC DESTROY CURRENT SECTOR BUFFER
  1727. DEI6 STM RDSB
  1728. STD T2
  1729. SBK EPFW-502+1
  1730. PJN DEI6.1 IF BUFFER IN ERROR PROCESSOR AREA
  1731. LDC DEI7 SET RETURN FROM READ OF COUPLER BUFFER
  1732. STM RDS
  1733. LDC DEI6.1 SET ERROR RETURN
  1734. STM ERRA
  1735. LDD HN
  1736. ERRNZ LJMI-100 CODE DEPENDS ON VALUE
  1737. STM RDSD
  1738. LDC DEI6.0
  1739. STM RDSD+1
  1740. LDN FCRB READ BACK COUPLER BUFFER
  1741. LJM RDS3 USE READ PROCESSOR
  1742.  
  1743. * RETURN HERE ON ERROR IN COUPLER BUFFER READ ATTEMPT.
  1744.  
  1745. DEI6.1 LDC UJNI+DEI17-DEIA
  1746. ERRPL DEI17-DEIA-40 RANGE ERROR
  1747. STM DEIA
  1748. LDN 10 SET *ERROR ON BUFFER READBACK* FLAG
  1749. RAI T1
  1750. UJN DEI8 CONTINUE
  1751.  
  1752. * RETURN HERE TO DELAY DURING COUPLER READ BACK.
  1753.  
  1754. DEI6.0 STD T0 SAVE (A)
  1755. LDC LDMI RESTORE DRIVER CODE
  1756. STM RDSD+1
  1757. ISTORE RDSD,(NJN WDS5)
  1758. SBN 1 DELAY AT LEAST 128 MICROSECONDS
  1759. NJN *-1 IF DELAY NOT EXPIRED
  1760. LDD T0 RESTORE (A)
  1761. LJM RDS3.1 RE-ENTER DRIVER
  1762.  
  1763. * SET UP RETRY OF PREVIOUS SECTOR.
  1764.  
  1765. DEI7 LDM WDS SAVE *WDS* RETURN IN *RDS*
  1766. STM RDS
  1767. LDC WEP RETURN TO WEP AFTER RETRY
  1768. STM WDS
  1769. LDM WDSC SAVE CURRENT BUFFER ADDRESS
  1770. STM RDSB
  1771. LDD T2 SET RETRY BUFFER ADDRESS
  1772. STM WDSC
  1773. SOD T7
  1774.  
  1775. * *EI2* - FUNCTION TIMEOUT / CONTROLLER MEMORY ERROR.
  1776.  
  1777. DEI8 LDI T1
  1778. LPC 101
  1779. ZJN DEI11 IF FUNCTION TIMEOUT
  1780. LPN 1
  1781. ZJN DEI10 IF CONTROLLER MEMORY ERROR
  1782.  
  1783. * *EI4* - STATUS ERROR.
  1784.  
  1785. DEI9 LDK DSTE&RAME SET *DSTE* ERROR CODE
  1786. DEI10 LMK RAME&FTOE SET *RAME* ERROR CODE
  1787. DEI11 LMK FTOE&PARE SET *FTOE* ERROR CODE
  1788.  
  1789. * *EI5* - MEDIA ERROR.
  1790.  
  1791. DEI12 LMK PARE&NRDE SET *PARE* ERROR CODE
  1792.  
  1793. * *EI6* - DEVICE NOT READY.
  1794.  
  1795. DEI13 LMK NRDE SET *NRDE* ERROR CODE
  1796. DEI14 STM DEEC
  1797.  
  1798. * *EI3* - ERROR CODE ALREADY SET.
  1799.  
  1800. DEI15 LDM DEEC
  1801. * UJN DEI17 (ERROR ON COUPLER BUFFER READ)
  1802. DEIA EQU *-2
  1803. SBK RESE
  1804. PJN DEI18 IF RESERVE ERROR
  1805.  
  1806. * CHECK FOR A WRITE REQUEST ON AN ISD DEVICE. THIS IS
  1807. * CONSIDERED A NON-RECOVERABLE CASE FOR CONTROLLER REPORTED
  1808. * ERRORS DUE TO THE DATA BUFFERING IN THE 7255 ADAPTER AND
  1809. * CONTROL MODULE. THE ERROR IS ALSO FORCED UNRECOVERED TO
  1810. * PREVENT RETRYING THE OPERATION.
  1811.  
  1812. LDM DEAI
  1813. SBK AIIB
  1814. MJN DEI18 IF NOT ISD
  1815. SBK AIIE-AIIB
  1816. PJN DEI18 IF NOT ISD
  1817. LDC 600 SET ISD/WRITE BUFFERING FLAGS
  1818. RAI T1
  1819. SHN 21-4
  1820. MJN DEI18 IF *CONTINUE* TO BE ISSUED
  1821. DEI17 LDM DERW
  1822. ZJN DEI18 IF READ REQUEST
  1823. STM DEWR SET *DATA WRITTEN/READ* FLAG
  1824. STM DENR SET *NON-RECOVERABLE* FLAG
  1825. LDC 2000 SET *UNRECOVERED* FLAG
  1826. RAI T1
  1827. DEI18 LDC LEP1 RESET *FNC* TIMEOUT EXIT ADDRESS
  1828. STM ERRA
  1829. LDM RDSB
  1830. STD T2
  1831. MSERR 7EK EXECUTE *7EK*
  1832.  
  1833.  
  1834. QUAL
  1835. TDEI BSS 0 PROCESSOR ADDRESS TABLE
  1836. LOC 0
  1837. EI0 CON /7EI/DEI1
  1838. EI1 CON /7EI/DEI5
  1839. EI2 CON /7EI/DEI8
  1840. EI3 CON /7EI/DEI15
  1841. EI4 CON /7EI/DEI9
  1842. EI5 CON /7EI/DEI12
  1843. EI6 CON /7EI/DEI13
  1844. CON 0 FORCE LAST ENTRY OF TABLE .LT. 7777B
  1845. LOC *O
  1846. QUAL *
  1847. SPACE 4
  1848. ERRNG 10000-* *7EI* HAS OVERFLOWED
  1849. BSS 10000-* (SPARES)
  1850. CON DEI-1 (T0) = ENTRY ADDRESS - 1
  1851. CON DEST (T1) = DEST
  1852. ERRNZ LN-* INCORRECT *7EI* OVERLAY LENGTH
  1853. QUAL *
  1854. 7FI MSOVL 7517,T2,DEXA,(FUNCTION TIMEOUT PROCESSOR.)
  1855. FTO SPACE 4,10
  1856. *** PROCESS FUNCTION TIMEOUT.
  1857. * R. M. DANISCH 83/01/03.
  1858. * P. D. HAAS. 83/04/29.
  1859. FTO SPACE 4,10
  1860. *** THE FUNCTION TIMEOUT PROCESSOR IS CALLED BY *7CI*
  1861. * WHEN ONE OF THE FOLLOWING OCCURS - THE GENERAL STATUS
  1862. * FUNCTION ISSUED BY *7CI* TIMES OUT, THE DETAILED
  1863. * STATUS FUNCTION ISSUED BY *7CI* TIMES OUT, OR THERE
  1864. * IS AN INCOMPLETE DATA TRANSFER ON THE INPUT OF GENERAL
  1865. * OR DETAILED STATUS IN *7CI*.
  1866. *
  1867. * THIS OVERLAY PERFORMS THE FOLLOWING FUNCTIONS -
  1868. * 1. RESTART A 7054 CONTROLLER HUNG ON A COUPLER LOCKUP
  1869. * VIA A SHORT AUTOLOAD.
  1870. * 2. DETERMINE IF A RAM PARITY ERROR OR CONTROLLER STOP
  1871. * OCCURRED ON A 7155 CONTROLLER.
  1872. 7FI SPACE 4,10
  1873. * REDEFINE CHANNEL INSTRUCTIONS TO PRODUCE A LINKED LIST.
  1874.  
  1875. FWDL$ EQU 1 SELECT FORWARD LINKING
  1876. RICHL
  1877. FTO SPACE 4,10
  1878. ** FTO - FUNCTION TIMEOUT PROCESSOR.
  1879. *
  1880. * ENTRY (T1) = DEST.
  1881. * (T2) = FIRST CHANNEL INSTRUCTION ADDRESS.
  1882. * (T4) = CHANNEL NUMBER.
  1883. * (DEAI) = ALGORITHM INDEX.
  1884. * (DEEC) = *CSTE* ERROR CODE.
  1885. * (DEGS) = GENERAL STATUS.
  1886. * 5002 IF 7255 MEMORY ERROR.
  1887. * 5017 IF ISD CONTROL MODULE MEMORY ERROR.
  1888. * (DERW) = 1 IF WRITE REQUEST, 0 IF READ REQUEST.
  1889. * (MB, BYTES 0-3) = T4 - T7.
  1890. * (MB, BYTE 4) = ADDRESS OF LAST *FNC* CALL.
  1891. * (MB+1) = PHYSICAL DISK ADDRESS FROM *LDAM*.
  1892. * (MB+2 - MB+5) = DETAILED STATUS, IF ONE TAKEN.
  1893. *
  1894. * EXIT TO *7EI*.
  1895. * (T2) = INDEX TO PROCESSING ADDRESS IN *7EI*
  1896. * (T4 - T7) = RESTORED FROM *MB*.
  1897. * (DENR) = 1 IF ALL OF THE FOLLOWING CONDITIONS HOLD -
  1898. * A. THE CONTROLLER IS CONNECTED.
  1899. * B. NOT AN ISD DEVICE.
  1900. * C. THE OPERATION IS A WRITE.
  1901. * D. TIMEOUT OCCURRED BEFORE THE PREVIOUS
  1902. * SECTOR WAS WRITTEN TO DISK.
  1903. * (DERC) = *FTRT* IF ALL OF THE FOLLOWING ARE TRUE -
  1904. * A. THE CONTROLLER IS CONNECTED.
  1905. * B. THE DRIVE IS NOT AN ISD.
  1906. * C. THE CONTROLLER TYPE IS NOT A 7155 MODEL
  1907. * B OR C.
  1908. * D. TIMEOUT OCCURRED BEFORE THE PREVIOUS
  1909. * SECTOR WAS WRITTEN TO DISK.
  1910. * E. THE ERROR IS NOT A RAM PARITY ERROR.
  1911. * (DEST) = ERROR PROCESSING CONTROL WORD.
  1912. * BITS AFFECTED BY THIS OVERLAY -
  1913. * BIT 6 = 1 IF RAM PARITY ERROR.
  1914. * BITS 2-1 = CONTROLLER TYPE.
  1915. * 0 7155 MODEL A.
  1916. * 1 7155 MODEL B OR C.
  1917. * 2 7255 ADAPTER.
  1918. * 3 CONTROL MODULE.
  1919. * (DEWR) = 1 IF WRITE OPERATION ON NON-ISD DEVICE AND
  1920. * THE CONTROLLER IS CONNECTED.
  1921. *
  1922. * USES T0 - T2, T4 - T7, CM - CM+4.
  1923. *
  1924. * CALLS FNC, RCM.
  1925. *
  1926. * MACROS MSERR, RICHL.
  1927.  
  1928.  
  1929. DFI ENTRY *7FI* ENTRY
  1930.  
  1931. FTO LDN 0
  1932. FTO1 RAD T2 MODIFY CHANNEL INSTRUCTIONS
  1933. LDI T2
  1934. LPN 37
  1935. STD CM
  1936. LDD T4
  1937. SBD CM
  1938. RAI T2
  1939. LDD CM
  1940. NJN FTO1 IF MORE INSTRUCTIONS
  1941. ERRNZ WLSF CODE DEPENDS ON VALUE
  1942. STM WDSB
  1943. LDN EI3 PRESET *7EI* PROCESSOR INDEX
  1944. STD T2
  1945. DCN CH+40
  1946. LDM DEAI
  1947. SBK AIIB
  1948. MJN FTO4 IF NOT ISD DEVICE
  1949. SBK AIIE-AIIB
  1950. PJN FTO4 IF NOT ISD DEVICE
  1951. LDD HN SET *MEMORY ERROR* FLAG
  1952. RAI T1
  1953. LDM DEGS SET CONTROLLER TYPE
  1954. LMC 5017
  1955. ZJN FTO3 IF ISD CONTROL MODULE MEMORY ERROR
  1956. LDN 1S1
  1957. FTO3 LMN 3S1
  1958. RAI T1
  1959. LJM FTO15 CALL *7EI*
  1960.  
  1961. * ISSUE A SHORT AUTOLOAD TO RESTART THE CONTROLLER IN CASE IT
  1962. * IS HUNG, AND WAIT UNTIL THE FUNCTION HAS COMPLETED.
  1963. * DETERMINE WHETHER OR NOT THE ERROR COULD HAVE OCCURRED ON A
  1964. * PREVIOUS SECTOR.
  1965.  
  1966. FTO3.1 ADN AIDR-AIDQ
  1967. ZJN FTO6 IF 885 *DQ* DRIVE
  1968. ADN AIDQ-AIDM
  1969. UJN FTO4.1 CHECK FOR 885 *DM* DRIVE
  1970.  
  1971. FTO4 FNC FCAL,CH ISSUE SHORT AUTOLOAD FUNCTION
  1972. LDM DERW
  1973. ZJN FTO5 IF READ SEQUENCE
  1974. STM DEWR SET *DATA WRITTEN* FLAG
  1975. LDM DEAI
  1976. SBK AIDR
  1977. MJN FTO3.1 IF POSSIBLE 885 *DQ* OR *DM* DRIVE
  1978. FTO4.1 ZJN FTO6 IF CDSS II *DR* OR 885 *DM* DRIVE
  1979. LDM LDAA
  1980. LPN 77 EXTRACT INTERLACE
  1981. FTO5 LMN FCS1
  1982. ERRZR FCS1 CODE DEPENDS ON VALUE
  1983. FTO6 STD T7
  1984. LDD TH SET 5 SECOND TIMEOUT
  1985. STD T5
  1986. FTO7 DELAY 10D*8D DELAY FOR 10 MS
  1987. SOD T5
  1988. MJN RCM1 IF AUTOLOAD TIMEOUT
  1989. AJM FTO7,CH IF AUTOLOAD NOT PROCESSED
  1990.  
  1991. * ACTIVATE THE CHANNEL FOR 25 - 750 MICROSECONDS.
  1992.  
  1993. * LDC ** 0 .LE. (A) .LT. 1000B
  1994. ACN CH
  1995. SBD MA 1022B .LE. (MA) .LE. 7632B
  1996. MJN *-1 IF DELAY INCOMPLETE
  1997. DCN CH+40
  1998.  
  1999. * DETERMINE IF RAM PARITY ERROR OCCURRED. THE METHOD FOR
  2000. * DOING THIS IS TO ISSUE A MANIPULATE PROCESSOR FUNCTION
  2001. * AND SEE IF IT TIMES OUT. IF IT DOESN-T, THE CONTROLLER
  2002. * TYPE IS ESTABLISHED AS A 7155, OTHER MODELS WILL NOT ACCEPT
  2003. * THE FUNCTION. THE INPUT DISPLAY DATA FUNCTION IS USED
  2004. * TO REFERENCE EACH RAM ADDRESS IN THE CONTROLLER AND WILL
  2005. * NOT HALT IF A PARITY ERROR IS DETECTED, RATHER A BIT WILL
  2006. * BE SET IN THE CONTROLLER-S PROCESSOR STATUS THAT INDICATES
  2007. * THE ERROR. THIS BIT WILL BE INTERROGATED BY THE PP.
  2008.  
  2009. LDN ZERL
  2010. CRD CM
  2011. LDC FTO13 SET ERROR EXIT FOR FUNCTION TIMEOUT
  2012. STM ERRA
  2013. LDC 8192DS-5 SET LOOP COUNT FOR 16384 BYTE DUMP
  2014. STD T5
  2015.  
  2016. BUF EQU OFFW SCRATCH BUFFER
  2017. ERRPL BUF+77-* BUFFER OVERLAYS CODE
  2018. RCM SPACE 4,10
  2019. ** RCM - READ CONTROLLER MEMORY.
  2020. *
  2021. * ENTRY (CM+1 - CM+2) = ADDRESS IN CONTROLLER MEMORY.
  2022. *
  2023. * EXIT (CM) = 2.
  2024. * *FCID* FUNCTION ISSUED TO CONTROLLER.
  2025. * (ERRA) = *FTO16*.
  2026. *
  2027. * CALLS FNC.
  2028.  
  2029.  
  2030. RCMX LJM FTO8 ENTRY/EXIT
  2031. RCM EQU *-1
  2032. LDN 2 SET READ MODE
  2033. STD CM
  2034. LDN FCMP ISSUE *MANIPULATE PROCESSOR* FUNCTION
  2035. RJM FNC
  2036. LDN 5 OUTPUT PARAMETERS
  2037. OAM CM,CH
  2038. RCM1 NJN FTO9 IF INCOMPLETE TRANSFER
  2039. DCN CH+40
  2040. LDC FTO16 SET ERROR EXIT FOR FUNCTION TIMEOUT
  2041. STM ERRA
  2042. LDN FCID ISSUE *INPUT DISPLAY DATA* FUNCTION
  2043. RJM FNC
  2044. UJN RCMX RETURN
  2045.  
  2046. * READ OUT CONTROLLER MEMORY.
  2047.  
  2048. FTO8 RJM RCM
  2049. LDD HN INPUT 64 BYTES
  2050. IAM BUF,CH
  2051. FTO9 NJN FTO11 IF INCOMPLETE TRANSFER
  2052. LDN 40
  2053. RAD CM+2 ADVANCE CONTROLLER ADDRESS
  2054. SHN 21-10
  2055. PJN FTO10 IF NOT 8 BIT OVERFLOW
  2056. STD CM+2
  2057. AOD CM+1 ADJUST CONTROLLER ADDRESS
  2058. FTO10 SOD T5
  2059. NJN FTO8 IF MORE TO READ
  2060.  
  2061. * OBTAIN PROCESSOR STATUS.
  2062.  
  2063. LDN FCST ISSUE *INPUT PROCESSOR STATUS* FUNCTION
  2064. RJM FNC
  2065. LDN 40 INPUT STATUS
  2066. IAM BUF,CH
  2067. FTO11 NJN FTO12 IF INCOMPLETE TRANSFER
  2068. LDM BUF+23
  2069. LPN 20
  2070. SHN 1-4 SET 7155 CONTROLLER TYPE, MODEL A OR/B/C
  2071. RAI T1
  2072. LDM BUF SET *RAM PARITY ERROR* FLAG
  2073. LPN 20
  2074. SHN 6-4
  2075. RAI T1
  2076. LDD MA
  2077. CRD CM
  2078. LDD CM+4 CHECK LAST CALL TO *FNC*
  2079. LMC WDS4+2
  2080. NJN FTO15 IF NOT WRITE FUNCTION TIMEOUT
  2081. STD CM+1
  2082. LDC 321
  2083. STD CM+2 READ CONTROLLER MEMORY
  2084. RJM RCM
  2085. LDN 2 INPUT *WRITE BUFFER TO DISK* FLAG
  2086. IAM T6,CH
  2087. FTO12 NJN FTO16 IF INCOMPLETE TRANSFER
  2088. FTO13 LDD T7
  2089. NJN FTO15 IF NOT ERROR AFFECTING PREVIOUS SECTOR
  2090. LDN 1 FORCE ERROR NON-RECOVERABLE
  2091. STM DENR
  2092. LDI T1
  2093. SHN 21-1
  2094. PJN FTO14 IF NOT B/C MODEL 7155 CONTROLLER
  2095. SOD T2
  2096. ERRNZ EI1+1-EI2 CODE DEPENDS ON VALUES
  2097. UJN FTO15 ADJUST *7EI* PROCESSOR INDEX
  2098.  
  2099. FTO14 LPN 20
  2100. NJN FTO15 IF RAM PARITY ERROR
  2101. LDK FTRT-1 FORCE UNRECOVERED
  2102. STM DERC
  2103. FTO15 SOD T2
  2104. ERRNZ EI2+1-EI3 CODE DEPENDS ON VALUES
  2105. FTO16 DCN CH+40
  2106. LDD MA RESTORE DRIVER PARAMETERS
  2107. CRD T4
  2108. MSERR 7EI CALL *7EI*
  2109. FTO SPACE 4,10
  2110. HERE TERMINATE LINKED CHANNEL INSTRUCTIONS
  2111. SPACE 4,10
  2112. ERRNG 10000-* OVERFLOW
  2113. BSS 10000-* SPARES
  2114. CON DFI-1 (T0) = ENTRY ADDRESS - 1
  2115. CON DEST (T1) = DEST
  2116. CON CH01$ (T2) = FIRST CHANNEL INSTRUCTION ADDRESS
  2117. ERRNZ LN-* INCORRECT *7FI* OVERLAY LENGTH
  2118. QUAL *
  2119. 7GI MSOVL 7613,T2,DSFA+4,(CHANNEL/CONTROLLER ERROR PROCESSOR.)
  2120. DCP SPACE 4,10
  2121. *** PROCESS CHANNEL/CONTROLLER ERROR.
  2122. * R. M. DANISCH 83/01/03.
  2123. DCP SPACE 4,10
  2124. * THE CHANNEL/CONTROLLER ERROR PROCESSOR IS CALLED BY *7HI*.
  2125. * IF *7HI* WAS UNSUCCESSFUL IN ATTEMPTING THE CONTROLWARE
  2126. * RELOAD, *7GI* WILL ATTEMPT TO RELEASE DRIVES RESERVED TO THE
  2127. * FAILING CONTROLLER SO THEY MAY BE ACCESSED THROUGH AN
  2128. * ALTERNATE CHANNEL. IF THE CONTROLLER IS UNABLE TO RELEASE
  2129. * DRIVES, IT MAY BE NECESSARY TO REMOVE DRIVE RESERVATIONS
  2130. * MANUALLY IN ORDER TO GAIN ACCESS THROUGH AN ALTERNATE
  2131. * CHANNEL.
  2132. SPACE 4,10
  2133. * GENERATE LINKED LIST OF CHANNEL INSTRUCTIONS.
  2134.  
  2135. FWDL$ EQU 1 SELECT FORWARD LINKING
  2136. RICHL
  2137. SPACE 4,10
  2138. * LIST OF PROCESSOR INDICES.
  2139.  
  2140.  
  2141. QUAL
  2142. DC1 EQU 0 *DCP1* INDEX
  2143. DC6 EQU 1 *DCP6* INDEX
  2144. DC9 EQU 2 *DCP9* INDEX
  2145. DC11 EQU 3 *DCP11* INDEX
  2146. QUAL *
  2147. DCP SPACE 4,10
  2148. ** DCP - PROCESS CHANNEL/CONTROLLER ERROR.
  2149. *
  2150. * ENTRY (A) = 0.
  2151. * (T1) = RDCT.
  2152. * (T2) = CH01$.
  2153. * (T4) = CHANNEL NUMBER.
  2154. * (T5) = EST ORDINAL.
  2155. *
  2156. * USES CM, T2.
  2157. *
  2158. * CALLS FNC.
  2159. *
  2160. * MACROS ENDMS.
  2161.  
  2162.  
  2163. DCP1 RAD T2
  2164. LDI T2 MODIFY CHANNEL INSTRUCTIONS
  2165. LPN 37
  2166. STD CM
  2167. LDD T4
  2168. SBD CM
  2169. RAI T2
  2170. LDD CM
  2171. NJN DCP1 IF MORE INSTRUCTIONS
  2172. LDM CHRV PREVENT OPERATION COMPLETE
  2173. SCN 10
  2174. STM CHRV
  2175. LDM DEST
  2176. LPN 40
  2177. ZJN DCP2 IF NOT AN ISD DEVICE
  2178. LJM DCP6 AVOID DROP SEEKS AND CONTROLLER HANG
  2179.  
  2180. DCP2 AOM DCPA SET TIME-OUT FLAG
  2181. LDM UERR
  2182. ERRNZ EPDE-400-EPSM CODE ASSUMES VALUES
  2183. SHN 21-10
  2184. MJN DCP4 IF *ENDMS* IS DISABLED
  2185. LDC DCP3 SET ERROR EXIT ADDRESS
  2186. STM ERRA
  2187.  
  2188. * RELEASE ALL UNITS RESERVED TO CONTROLLER.
  2189.  
  2190. LDN FCDK RELEASE ALL BUT LAST DRIVE ACCESSED
  2191. RJM FNC
  2192. DCN CH+40
  2193. LDN FCDR RELEASE LAST DRIVE ACCESSED
  2194. RJM FNC
  2195. SOM DCPA CLEAR TIME-OUT FLAG
  2196. DCP3 DCN CH+40
  2197.  
  2198. * SINCE IT IS KNOWN THE CONTROLLER CONTAINS A RAM PARITY
  2199. * ERROR, IT IS DESIRABLE TO LEAVE THE CONTROLLER IN SUCH A
  2200. * STATE THAT THE NEXT PP TO ACCESS IT DISCOVERS THE ERROR
  2201. * ALSO. THE METHOD USED TO ACCOMPLISH THIS IS TO ISSUE A
  2202. * PROCESSOR MANIPULATION FUNCTION TO CAUSE THE CONTROLLER TO
  2203. * HANG ON A ZERO INSTRUCTION.
  2204.  
  2205. DCP4 LDC DCP5 SET ERROR EXIT ADDRESS
  2206. STM ERRA
  2207. LDN FCMP HANG CONTROLLER
  2208. RJM FNC
  2209. LDN 5
  2210. OAM DCPB,CH
  2211. DCP5 LDC LEP1 RESET ERROR EXIT ADDRESS
  2212. STM ERRA
  2213. DCN CH+40
  2214. DCP6 LDM UERR
  2215. ERRNZ EPDE-400-EPSM CODE ASSUMES VALUES
  2216. SHN 21-10
  2217. MJN DCP8 IF *ENDMS* DISABLED
  2218. ENDMS
  2219. LDM CHRV
  2220. SHN 21-4
  2221. MJN DCP11 IF CALLER SELECTED CHANNEL
  2222. DCPA LDN 0
  2223. * LDN 1 (*FCDK*/*FCDR* TIMED OUT)
  2224. DCP8 NJN DCP11 IF DRIVES NOT RELEASED
  2225. DCP9 STD CM
  2226. LDI T1
  2227. LPC 500
  2228. STI T1
  2229. SOM HEDR+6
  2230. LDM DEST
  2231. LPC -3000
  2232. STM DEST
  2233. LDD CP CLEAR CONTROL POINT MESSAGE
  2234. ADN MS2W
  2235. CWD CM
  2236. LJM LDA1 RETRY I/O
  2237.  
  2238. DCP11 LDM DEST SET UNRECOVERED FLAG
  2239. LPC -2000
  2240. LMC 2000
  2241. STM DEST
  2242. LJM LEP EXECUTE *7EQ*
  2243.  
  2244. DCPB CON 4,0,27,0,0
  2245. PCE SPACE 4,20
  2246. ** PCE - PROCESS CHANNEL/CONTROLLER ERROR.
  2247. *
  2248. * ENTRY (T3) = PROCESSOR INDEX.
  2249. * = 0 FOR *DCP1*.
  2250. * = 1 FOR *DCP6*.
  2251. * = 2 FOR *DCP9*.
  2252. * = 3 FOR *DCP11*.
  2253. * (MB+2) = ORIGINAL CELLS (T3 - T7).
  2254. * (MB+3 - MB+5) = LAST THREE WORDS OF DETAILED STATUS.
  2255. *
  2256. * EXIT (A) = 0.
  2257. * (T3 - T7) = RESTORED FROM (MB+2).
  2258. * (MB+3 - MB+5) = UNCHANGED.
  2259. *
  2260. * USES CM.
  2261. *
  2262. * NOTE IF THE TAGS IN *7GI* ARE RENAMED OR RENUMBERED,
  2263. * THE TABLE INDEX MNEMONICS DEFINED ABOVE SHOULD ALSO
  2264. * BE UPDATED TO REFLECT THOSE CHANGES (FOR CLARITY).
  2265.  
  2266.  
  2267. DGI ENTRY *7GI* ENTRY
  2268.  
  2269. PCE BSS 0
  2270. LDM TPCE,T3 SET PROCESSOR ADDRESS
  2271. STD CM
  2272. LDD MA RESTORE DIRECT CELLS
  2273. ADN 2
  2274. CRD T3
  2275. LDN 0
  2276. LJM 0,CM EXIT TO PROCESSOR
  2277.  
  2278.  
  2279. TPCE BSS 0 PROCESSOR ADDRESSES
  2280. LOC 0
  2281. DC1 CON DCP1
  2282. DC6 CON DCP6
  2283. DC9 CON DCP9
  2284. DC11 CON DCP11
  2285. LOC *O
  2286. DCP SPACE 4,10
  2287. HERE TERMINATE LINKED CHANNEL INSTRUCTIONS
  2288. SPACE 4,10
  2289. ERRNG 10000-* OVERFLOW
  2290. BSS 10000-* SPARES
  2291. CON DGI-1 (T0) = ENTRY ADDRESS - 1
  2292. CON RDCT (T1) = RDCT
  2293. CON CH01$ (T2) = CH01$
  2294. ERRNZ LN-* INCORRECT *7GI* OVERLAY LENGTH
  2295. QUAL *
  2296. 7HI MSOVL 7574,T2,DSFA+4,(CONTROLWARE RELOAD PROCESSOR.)
  2297. SPACE 4,10
  2298. *** PROCESS CONTROLWARE RELOAD.
  2299. * P. D. HAAS. 83/04/29.
  2300. 7HI SPACE 4,10
  2301. * *7HI* IS CALLED BY *7JI* TO RELOAD CHANNEL OR CONTROL
  2302. * MODULE CONTROLWARE. *7HI* SETS THE RELOAD FLAG FOR THE
  2303. * CHANNEL OR CONTROL MODULE AND THEN CALLS *1DS* TO START A
  2304. * *LOADBC* JOB WHICH RELOADS THE CONTROLWARE. *7HI* WILL WAIT
  2305. * UP TO *CRTO* SECONDS FOR THE RELOAD TO COMPLETE BEFORE GIVING
  2306. * UP.
  2307. SPACE 4,10
  2308. ** COMMON DECKS.
  2309.  
  2310.  
  2311. *CALL COMS1DS
  2312. RCW SPACE 4,25
  2313. ** RCW - RELOAD CONTROLWARE PROCESSOR.
  2314. *
  2315. * ENTRY (T1) = DEST.
  2316. * (T2) = RELOAD TIMEOUT VALUE.
  2317. * (T3) = ADDRESS + *CM* OF BYTE CONTAINING
  2318. * RELOAD FLAGS.
  2319. * (T4) = CONTROL MODULE ACCESS INDICATOR. FOR C/M
  2320. * RELOADS, 1 INDICATES PRIMARY CHANNEL SHOULD
  2321. * BE USED FOR RELOAD. 0 INDICATES SECONDARY
  2322. * CHANNEL SHOULD BE USED. THIS CELL IS
  2323. * UNUSED FOR NON-C/M RELOADS.
  2324. * (T5) = SYSTEM CP *MS2W* ADDRESS.
  2325. * (T6 - T7) = ADDRESS OF RELOAD INTERLOCK WORD.
  2326. * (DEST) = ERROR PROCESSING CONTROL WORD.
  2327. * (MB+2) = ORIGINAL CELLS (T3 - T7)
  2328. * (MB+3 - MB+5) = LAST THREE WORDS OF DETAILED STATUS.
  2329. *
  2330. * EXIT TO *7GI*.
  2331. * (T3) = *7GI* PROCESSOR INDEX.
  2332. * (MB+2) = UNCHANGED.
  2333. * (MB+3 - MB+5) = UNCHANGED.
  2334. *
  2335. * USES CM - CM+4, T0 - T7.
  2336. *
  2337. * CALLS FTN, SCT.
  2338. *
  2339. * MACROS DELAY, MONITOR, MSERR, PAUSE.
  2340.  
  2341.  
  2342. DHI ENTRY *7HI* ENTRY
  2343.  
  2344. RCW LDI T1
  2345. SHN 0-1
  2346. LPN 3
  2347. LMN 3
  2348. NJN RCW0 IF NOT CONTROL MODULE RELOAD
  2349. LDD T4 STORE C/M ACCESS INDICATOR
  2350. RAM SCTC+4 SET PRIMARY OR SECONDARY CHANNEL
  2351. SOM RCWD AVOID DOWNING CHANNEL IF RELOAD FAILS
  2352. ERRNZ RCW8-RCW7-1 CODE ASSUMES *RCW8* = RCW7* + 1
  2353. AOM RCWC+4 INDICATE CONTROL MODULE RELOAD TO *1DS*
  2354. UJN RCW0.1 BEGIN RELOAD
  2355.  
  2356. RCW0 LDM SCTA-CM,T3 DEFINE LOCATION OF LOAD FLAGS
  2357. STM SCTC+1
  2358. STM SCTB+1
  2359. SOM SCTC SET CORRECT FIELD WIDTH FOR NON-C/M LOAD
  2360. STM SCTC+4 SET CORRECT FIELD VALUE
  2361.  
  2362. * SET THE CONTROLWARE RELOAD FLAG FOR THE APPROPRIATE CHANNEL
  2363. * OR CONTROL MODULE.
  2364.  
  2365. RCW0.1 LDN 2 SET *UTEM* PARAMETER COUNT FOR *SCT*
  2366. STD T4
  2367. RJM SCT
  2368. NJN RCW3 IF RELOAD ALREADY REQUESTED OR IN PROGRESS
  2369.  
  2370. * INITIATE A CONTROLWARE RELOAD *1DS* CALL. *1DS* WILL START A
  2371. * *LOADBC* JOB TO RELOAD THE CONTROLWARE.
  2372.  
  2373. RCW1 RJM FTN
  2374. * PAUSE NE PAUSE FOR MOVE
  2375. LDD MA
  2376. CWM RCWC,ON STORE *1DS* CALL
  2377. MONITOR RPPM
  2378. LDD CM+1
  2379. ZJN RCW1 IF PP NOT ASSIGNED
  2380.  
  2381. * WAIT *CRTO* SECONDS FOR THE RELOAD TO COMPLETE.
  2382.  
  2383. LDN 0
  2384. RCW2 LPN 1
  2385. RCWA ZJN RCW3 IF RELOAD NOT INITIATED
  2386. STM RCWA
  2387. ZJN RCW4 IF RELOAD ABORTED
  2388. RCW3 SOD T2
  2389. NJN RCW5 IF NOT RELOAD TIMEOUT
  2390. RCW4 RJM SCT CLEAR LOAD REQUESTED FLAG
  2391. NJN RCW5 IF RELOAD REQUEST NOT CLEARED
  2392. LJM RCW8 CONTINUE
  2393. RCWD EQU *-1
  2394.  
  2395. RCW5 DELAY 100D*8D 100 MILLISECOND DELAY LOOP
  2396. RJM FTN
  2397. * PAUSE NE
  2398. LDD T6 CHECK RELOAD FLAGS
  2399. SHN 14
  2400. LMD T7
  2401. CRD CM
  2402. LDI T3
  2403. SHN 0-12
  2404. NJN RCW2 IF RELOAD NOT COMPLETE
  2405. LDI T1
  2406. SHN 0-1
  2407. LPN 7
  2408. LMN 1
  2409. ZJN RCW6 IF 7155 B OR C AND READBACK WORKED
  2410. LDM DENR
  2411. LMN 1
  2412. ZJN RCW7 IF UNRECOVERABLE WITH CONTROLWARE RELOAD
  2413. RCW6 LDN DC9&DC11
  2414. RCW7 LMN DC11
  2415. ERRNZ DC1 CODE DEPENDS ON VALUE
  2416. RCW8 STD T3
  2417. LDN 0
  2418. STD CM
  2419. LDD T5 CLEAR SYSTEM CP MESSAGE
  2420. CWD CM
  2421. MSERR 7GI EXECUTE *7GI*
  2422.  
  2423.  
  2424. RCWC VFD 18/0L1DS,6/0,6/0,6/ILJF,24/0
  2425. SCT SPACE 4,15
  2426. ** SCT - SET (CLEAR) CONTROLWARE LOAD REQUEST FLAG.
  2427. *
  2428. * ENTRY (T4) = 2.
  2429. * (T6 - T7) = ADDRESS OF WORD CONTAINING CONTROLWARE
  2430. * LOAD FLAGS.
  2431. *
  2432. * EXIT (A) = RESPONSE FROM *UTEM* REQUEST.
  2433. *
  2434. * USES CM - CM+4.
  2435. *
  2436. * MACROS MONITOR.
  2437.  
  2438.  
  2439. SCT SUBR ENTRY/EXIT
  2440. LDD MA SETUP OUTPUT REGISTER
  2441. CWD T7-4
  2442. CRD CM
  2443. CWM SCTB,CM+1 STORE *UTEM* PARAMETERS
  2444. MONITOR UTEM
  2445. * LDN 0 RESET PARAMETERS FOR ERROR PROCESSING
  2446. STM SCTC+4
  2447. LDN 2
  2448. STM SCTB+4
  2449. LDD CM+1
  2450. UJN SCTX RETURN
  2451.  
  2452.  
  2453. SCTA BSS 0 TABLE OF RELOAD FLAG BIT POSITIONS
  2454. CON 58DS6
  2455. CON 46DS6
  2456. CON 34DS6
  2457. CON 22DS6
  2458. CON 10DS6
  2459.  
  2460. SCTB VFD 1/1,5/0,6/2,6/34D,42/0
  2461. * VFD 1/1,5/0,6/2,6/34D,42/2
  2462. SCTC VFD 1/0,5/0,6/3,6/33D,42/4
  2463. * VFD 1/0,5/0,6/3,6/33D,42/0
  2464. SPACE 4,10
  2465. ERRNG 10000-* OVERFLOW
  2466. BSS 10000-* SPARES
  2467. CON DHI-1 (T0) = ENTRY ADDRESS - 1
  2468. CON DEST (T1) = DEST
  2469. CON CRTO*10D+1 (T2) = RELOAD TIMEOUT VALUE
  2470. ERRNZ LN-* INCORRECT *7HI* OVERLAY LENGTH
  2471. QUAL *
  2472. 7II MSOVL 7613,T2,DSFA+4,(INITIATE CONTROLWARE RELOAD.)
  2473. SPACE 4,10
  2474. *** INITIATE CONTROLWARE RELOAD.
  2475. * P. D. HAAS. 83/04/29.
  2476. * R. M. DANISCH. 83/10/17.
  2477. SPACE 4,10
  2478. *** *7II* IS CALLED BY *7EP* TO DETERMINE WHETHER OR NOT
  2479. * A CONTROLWARE RELOAD IS POSSIBLE. IF SO, *7JI* IS CALLED TO
  2480. * BEGIN THE RELOAD PROCESS. IF NOT, *7GI* IS CALLED TO TRY AND
  2481. * DOWN THE CHANNEL ON WHICH THE ERROR OCCURRED.
  2482. 7II SPACE 4,10
  2483. ** ICR - INITIATE CONTROLWARE RELOAD.
  2484. *
  2485. * ENTRY (T1) = DEST.
  2486. * (T2) = DEEC.
  2487. * (T4) = CHANNEL NUMBER.
  2488. * (DEEC) = ERROR CODE.
  2489. * (DEST) = ERROR PROCESSING CONTROL WORD.
  2490. * (MB+3 - MB+5) = LAST THREE WORDS OF DETAILED STATUS.
  2491. *
  2492. * EXIT TO *7GI* IF NO CONTROLWARE RELOAD.
  2493. * (T3) = *7GI* PROCESSOR INDEX.
  2494. * (MB+2) = ORIGINAL CELLS (T3 - T7).
  2495. * (MB+3 - MB+5) = UNCHANGED.
  2496. *
  2497. * TO *7JI* IF CONTROLWARE RELOAD.
  2498. * (T3) = ADDRESS OF BYTE CONTAINING RELOAD FLAGS.
  2499. * (T4) = CONTROL MODULE ACCESS INDICATOR. FOR C/M
  2500. * RELOADS, 1 INDICATES PRIMARY CHANNEL SHOULD BE
  2501. * USED FOR RELOAD. 0 INDICATES SECONDARY CHANNEL
  2502. * SHOULD BE USED. THIS CELL IS UNUSED FOR
  2503. * NON-C/M RELOADS.
  2504. * (T5) = CONTROL MODULE EST ORDINAL IF C/M RELOAD.
  2505. * (T6-T7) = ADDRESS OF RELOAD INTERLOCK WORD.
  2506. * (MB+2) = ORIGINAL CELLS (T3 - T7).
  2507. * (MB+3 - MB+5) = UNCHANGED.
  2508. *
  2509. * USES CM - CM+4, T0 - T7.
  2510. *
  2511. * CALLS FCM, FCT.
  2512. *
  2513. * MACROS MSERR.
  2514.  
  2515.  
  2516. DII ENTRY *7II* ENTRY
  2517.  
  2518. * IF THE ERROR IS EITHER A CHANNEL PARITY ERROR OR A CONTROLLER
  2519. * STOP, PROCEED TO *7GI* TO TRY AND DOWN THE CHANNEL.
  2520.  
  2521. ICR LDD MA SAVE DRIVER PARAMETERS
  2522. ADN 2
  2523. CWD T3
  2524. LDI T2
  2525. SBN RAME
  2526. PJN ICR2 IF FUNCTION TIMEOUT / RAM PARITY
  2527. LDN DC6&DC11
  2528. ICR0 LMN DC11
  2529. ERRNZ DC1 CODE DEPENDS ON VALUE
  2530. ICR1 STD T3
  2531. MSERR 7GI EXECUTE *7GI*
  2532.  
  2533.  
  2534. * FOR RAM PARITY ERRORS AND FUNCTION TIMEOUTS, CHECK IF THE
  2535. * CONTROLWARE RELOAD LIMIT HAS ALREADY BEEN REACHED. IF NOT,
  2536. * CALL *7JI* TO BEGIN THE RELOAD.
  2537.  
  2538. ICR2 LDI T1
  2539. SHN 0-1
  2540. LPN 3
  2541. LMN 3
  2542. ZJN ICR3 IF CONTROL MODULE RELOAD
  2543. ERRNZ ICR1-ICR0-1 CODE REQUIRES *ICR1* = *ICR0* + 1
  2544. AOM ICRB
  2545. LDC FCT STORE ADDRESS OF NON-C/M PROCESSOR
  2546. STM ICRA
  2547. ICR3 RJM FCM FIND CONTROL MODULE EST ENTRY
  2548. * RJM FCT (NOT CONTROL MODULE RELOAD)
  2549. ICRA EQU *-1
  2550. LDD CM+1
  2551. RAD T7 SET CONTROLWARE TABLE WORD ADDRESS
  2552. SHN -14
  2553. ADD CM
  2554. STD T6
  2555. SHN 14 READ RELOAD FLAGS WORD
  2556. LMD T7
  2557. CRD CM
  2558. LDI T3
  2559. SHN -6
  2560. LPN 7
  2561. LMN CRTH
  2562. ZJN ICR0 IF RELOAD THRESHOLD REACHED
  2563. * ZJN ICR1 (NOT CONTROL MODULE ERROR)
  2564. ICRB EQU *-1
  2565. MSERR 7JI EXECUTE *7JI*
  2566. FCM SPACE 4,15
  2567. ** FCM - FIND CONTROL MODULE EST ENTRY.
  2568. *
  2569. * ENTRY (T4) = CHANNEL NUMBER.
  2570. * (HEDR+3) = ISD UNIT NUMBER.
  2571. *
  2572. * EXIT (T3) = *CM* + 2.
  2573. * (T4) = 1 IF PRIMARY CHANNEL SHOULD BE USED FOR RELOAD.
  2574. * 0 IF SECONDARY CHANNEL SHOULD BE USED.
  2575. * (T5) = CONTROL MODULE EST ORDINAL.
  2576. * (T7) = RELOAD INTERLOCK WORD OFFSET FROM FWA OF EST.
  2577. * (CM - CM+1) = FWA OF EST.
  2578. *
  2579. * USES T2 - CM+4.
  2580. *
  2581. * MACROS MONITOR, SFA.
  2582.  
  2583.  
  2584. FCM CON 0 ENTRY
  2585. LDD T4 STORE CHANNEL FOR COMPARISON
  2586. RAM FCMA
  2587. STM FCMB
  2588. LDK ESTP
  2589. CRD CM
  2590. FCM1 SOD CM+2 DECREMENT EST ORDINAL
  2591. CFI EST SAVE EST ENTRY OFFSET
  2592. STD T7
  2593. NJN FCM3 IF NOT END OF SCAN
  2594. FCM2 MONITOR HNGM
  2595. UJN FCM2 HANG PP
  2596.  
  2597. FCM3 SFA EST,CM+2 READ NEXT ENTRY
  2598. ADK EQDE
  2599. CRD T2
  2600. LDD T2+3
  2601. LMC 2RCM
  2602. NJN FCM1 IF NOT CONTROL MODULE EST ENTRY
  2603. LDD T2+4
  2604. SHN 0-6
  2605. LMM HEDR+3
  2606. SCN 7
  2607. NJN FCM1 IF WRONG EQUIPMENT
  2608. LDD T2+2 SET CHANNEL INDICATOR FOR *7HI*
  2609. ZJN FCM4 IF NO SECONDARY CHANNEL
  2610. LPN 37
  2611. LMN **
  2612. FCMA EQU *-1
  2613. ZJN FCM5 IF SECONDARY CHANNEL IN USE
  2614. FCM4 LDD T2+1
  2615. LPN 37
  2616. LMN **
  2617. FCMB EQU *-1
  2618. NJN FCM2 IF CHANNEL NOT IN EST ENTRY
  2619. LDN 1
  2620. FCM5 STD T4
  2621. LDD CM+2 SAVE EST ORDINAL FOR *7HI*
  2622. STD T5
  2623. LDN CM+2 SET BYTE NUMBER
  2624. STD T3
  2625. AOD T7 ADVANCE TO *EQAE* WORD OF EST ENTRY
  2626. ERRNZ EQAE-1 CODE ASSUMES *EQAE* = 1
  2627. FCM6 LJM ICRA+1 RETURN
  2628. FCT SPACE 4,10
  2629. ** FCT - FIND CONTROLWARE TABLE ENTRY.
  2630. *
  2631. * ENTRY (T4) = CHANNEL NUMBER.
  2632. *
  2633. * EXIT (T3) = CHANNEL NUMBER MODULO 5 + *CM*.
  2634. * (T7) = WORD OFFSET RELATIVE TO FWA OF CONTROLWARE
  2635. * TABLE.
  2636. * (CM - CM+1) = FWA OF CONTROLWARE TABLE.
  2637. *
  2638. * USES T3, T4, T6 - CM+2.
  2639.  
  2640.  
  2641. FCT CON 0 ENTRY
  2642. LDD T4 STORE CHANNEL NUMBER
  2643. RAM FCTA
  2644. FNC FCAL,CH ISSUE SHORT AUTOLOAD
  2645. FCTA EQU *-2
  2646. LDC CHTP READ CHANNEL TABLE POINTER
  2647. CRD CM-2
  2648. LDN 2*CTALL-1 INITIALIZE WORD OFFSET
  2649. STD T7
  2650. FCT1 AOD T7 INCREMENT WORD OFFSET
  2651. LCN 5
  2652. RAD T4
  2653. PJN FCT1 IF CORRECT WORD NOT REACHED
  2654. ADN CM+5 SAVE BYTE NUMBER + *CM*
  2655. STD T3
  2656. UJN FCM6 RETURN
  2657. SPACE 4,10
  2658. ERRNG 10000-* OVERFLOW
  2659. BSS 10000-* SPARES
  2660. CON DII-1 (T0) = ENTRY ADDRESS - 1
  2661. CON DEST (T1) = DEST
  2662. CON DEEC (T2) = DEEC
  2663. ERRNZ LN-* INCORRECT *7II* OVERLAY LENGTH
  2664. QUAL *
  2665. 7JI MSOVL 7702,T2,DSFA+4,(ISSUE RELOAD MESSAGE.)
  2666. SPACE 4,10
  2667. *** ISSUE RELOAD MESSAGE.
  2668. * R. M. DANISCH. 83/10/11.
  2669. 7JI SPACE 4,10
  2670. *** *7JI* IS CALLED BY *7II* TO ISSUE A MESSAGE TO THE
  2671. * SYSTEM CONTROL POINT TO SHOW THE OPERATOR WHAT CHANNEL OR
  2672. * CONTROL MODULE IS HAVING ITS CONTROLWARE RELOADED. *7JI*
  2673. * THEN CALLS *7HI* TO BEGIN THE ACTUAL RELOAD.
  2674. IRM SPACE 4,30
  2675. ** IRM - ISSUE RELOAD MESSAGE.
  2676. *
  2677. * ENTRY (T1) = DEST.
  2678. * (T2) = HEDR+7.
  2679. * (T3) = ADDRESS + *CM* OF BYTE CONTAINING RELOAD FLAGS.
  2680. * (T4) = CONTROL MODULE ACCESS INDICATOR. FOR CONTROL
  2681. * MODULE RELOADS, 1 INDICATES THE PRIMARY CHANNEL
  2682. * SHOULD BE USED FOR RELOAD. 0 INDICATES
  2683. * SECONDARY CHANNEL SHOULD BE USED. THIS CELL IS
  2684. * UNUSED FOR NON-CONTROL MODULE RELOADS.
  2685. * (T5) = CONTROL MODULE EST ORDINAL IF C/M RELOAD.
  2686. * (T6 - T7) = ADDRESS OF RELOAD INTERLOCK WORD.
  2687. * (DEST) = ERROR PROCESSING CONTROL WORD.
  2688. * (MB+2) = ORIGINAL (T3 - T7).
  2689. * (MB+3 - MB+5) = LAST THREE WORDS OF DETAILED STATUS.
  2690. *
  2691. * EXIT TO *7HI*.
  2692. * (T3) = UNCHANGED.
  2693. * (T4) = UNCHANGED.
  2694. * (T5) = SYSTEM CP *MS2W* ADDRESS.
  2695. * (T6 - T7) = UNCHANGED.
  2696. * (MB+2) = UNCHANGED.
  2697. * (MB+3 - MB+5) = UNCHANGED.
  2698. *
  2699. * USES T5, CM - CM+4.
  2700. *
  2701. * MACROS MSERR.
  2702.  
  2703.  
  2704. DJI ENTRY *7JI* ENTRY
  2705.  
  2706. IRM LDI T1
  2707. SHN 0-1
  2708. LPN 3
  2709. LMN 3
  2710. NJN IRM1 IF NOT CONTROL MODULE RELOAD
  2711. LDC 2REQ CONVERT MESSAGE FOR C/M RELOAD
  2712. STM IRMA+5
  2713. UJN IRM2 CONVERT EST ORDINAL
  2714.  
  2715. IRM1 LDI T2 GET CHANNEL NUMBER
  2716. SHN -6
  2717. STD T5
  2718. LDC 2R 0
  2719. STM IRMA+6
  2720. IRM2 LDD T5 CONVERT CHANNEL OR EST ORDINAL TO DISPLAY
  2721. LPN 7
  2722. SHN 6
  2723. RAM IRMA+7
  2724. LDD T5
  2725. SHN -3
  2726. LPN 7
  2727. LMD T5
  2728. LPN 77
  2729. LMD T5
  2730. RAM IRMA+6
  2731. LDN NCPL WRITE MESSAGE TO SYSTEM CONTROL POINT
  2732. CRD CM
  2733. AOD CM+1
  2734. SHN 7
  2735. ADN MS2W
  2736. STD T5
  2737. CWM IRMA,TR
  2738. MSERR 7HI EXECUTE *7HI*
  2739.  
  2740.  
  2741. IRMA DATA C*RELOADING CH000 CONTROLWARE.*
  2742. IRM SPACE 4,10
  2743. ERRNG 10000-* OVERFLOW
  2744. BSS 10000-* SPARES
  2745. CON DJI-1 (T0) = ENTRY ADDRESS - 1
  2746. CON DEST (T1) = DEST
  2747. CON HEDR+7 (T2) = POINTER TO CHANNEL NUMBER
  2748. ERRNZ LN-* INCORRECT *7JI* OVERLAY LENGTH
  2749. QUAL *
  2750. 7KI MSOVL 7567,T2,DSFA+4,(EXECUTE LEVEL 1 DIAGNOSTICS.)
  2751. SPACE 4,10
  2752. *** EXECUTE LEVEL 1 DIAGNOSTICS.
  2753. * R. M. DANISCH. 83/10/17.
  2754. SPACE 4,10
  2755. *** *7KI* IS CALLED BY *7EO* FOR UNRECOVERED ERRORS ON
  2756. * ISD DEVICES. IT ISSUES A SPINUP COMMAND TO EXECUTE
  2757. * LEVEL 1 DIAGNOSTICS IN THE CONTROL MODULE. FOLLOWING
  2758. * COMPLETION OF THE DIAGNOSTICS EXECUTION, *7EP* IS ENTERED
  2759. * TO ISSUE A BML MESSAGE NOTING DIAGNOSTIC RESULTS FOR *HPA*.
  2760. SPACE 4,10
  2761. * GENERATE LINKED LIST OF CHANNEL INSTRUCTIONS.
  2762.  
  2763. FWDL$ EQU 1 SELECT FORWARD LINKING
  2764. RICHL
  2765. 7KI SPACE 4,10
  2766. ** EXD - EXECUTE LEVEL 1 DIAGNOSTICS.
  2767. *
  2768. * ENTRY (T1) = DEDT.
  2769. * (T2) = FIRST CHANNEL INSTRUCTION ADDRESS.
  2770. * (T4 - T7) = DRIVER PARAMETERS.
  2771. * (DEDT) = ERROR PROCESSING CONTROL WORD.
  2772. * (MSGH - MSGH+4) = *EMB* MESSAGE HEADER.
  2773. * (HEDR - HEDR+11) = BML MESSAGE HEADER.
  2774. * (DDMD - DDMD+4) = DEVICE DEPENDENT MESSAGE DATA.
  2775. * (DSFA - DSFA+4) = FIRST WORD OF DETAILED STATUS.
  2776. * (MB+2 - MB+5) = DETAILED STATUS TAKEN BY *7CI*.
  2777. *
  2778. * EXIT (T4 - T7) = UNCHANGED.
  2779. * (MSGH - MSGH+4) = UNCHANGED.
  2780. * (HEDR - HEDR+11) = BML MESSAGE HEADER.
  2781. * (DDMD - DDMD+4) = DEVICE DEPENDENT MESSAGE DATA.
  2782. * (DSFA - DSFA+23) = DETAILED STATUS TAKEN BY *7KI*.
  2783. * (MB+2 - MB+5) = DETAILED STATUS TAKEN BY *7KI*.
  2784. *
  2785. * USES T0 - T2, CM - CM+4.
  2786. *
  2787. * CALLS FNC.
  2788. *
  2789. * MACROS DELAY, MSERR, PAUSE.
  2790.  
  2791.  
  2792. DKI ENTRY *7KI* ENTRY
  2793.  
  2794. LDI T1 CHECK INITIAL CALL
  2795. LPN 20
  2796. NJN EXD1 IF FIRST FAILURE MESSAGE ISSUED
  2797. LDM ERXA
  2798. STI D1 SAVE ERROR RETURN ADDRESS
  2799. MSERR 7KI,*
  2800. STM ERR2+1 MODIFY ERROR PROCESSOR CALL
  2801. LDC ERR2
  2802. STM ERXA
  2803. LDN 20 SET RETURN TO ERROR PROCESSOR
  2804. RAI T1
  2805. LJM LEP ISSUE FIRST FAILURE MESSAGE
  2806.  
  2807. EXD1 LDI D1 RESTORE ERROR RETURN ADDRESS
  2808. STM ERXA
  2809. LCN 20 CLEAR RETURN TO ERROR PROCESSOR
  2810. RAI T1
  2811. MSERR 7SI,* RESTORE ERROR PROCESSOR CALL
  2812. STM ERR2+1
  2813. LDN 0
  2814. EXD2 RAD T2 MODIFY CHANNEL INSTRUCTIONS
  2815. LDI T2
  2816. LPN 37
  2817. STD T0
  2818. LDD T4
  2819. SBD T0
  2820. RAI T2
  2821. LDD T0
  2822. NJN EXD2 IF MORE INSTRUCTIONS TO MODIFY
  2823.  
  2824. * ISSUE SPINUP FUNCTION TO EXECUTE LEVEL ONE DIAGNOSTICS.
  2825.  
  2826. EXD3 LDN 0
  2827. STD CM INITIALIZE *FCSU* TIMEOUT FLAG
  2828. STD T2 INITIALIZE CHANNEL PARITY RETRY COUNT
  2829. LDC EXD5
  2830. STM ERRA SET ERROR EXIT ADDRESS
  2831. LDN FCSU ISSUE SPINUP FUNCTION
  2832. RJM FNC
  2833. LDN 1 OUTPUT PARAMETER
  2834. OAM HEDR+3,CH
  2835. NJN EXD5 IF INCOMPLETE TRANSFER
  2836. EXD4 SBN 1
  2837. ZJN EXD5 IF TIMEOUT
  2838. FJM EXD4,CH IF CHANNEL FULL
  2839. AOD CM INDICATE NO ERROR ON *FCSU*
  2840. EXD5 DCN CH+40
  2841.  
  2842. * TAKE GENERAL STATUS. IF STATUS SHOWS SPINUP STILL IN
  2843. * PROGRESS, LOOP ISSUING SPINUP AND GENERAL STATUS FUNCTIONS
  2844. * UNTIL DIAGNOSTICS COMPLETE. IF GENERAL STATUS CANNOT BE
  2845. * TAKEN, EXIT TO *7EP*.
  2846.  
  2847. LDC EXD11 SET ERROR EXIT ADDRESS
  2848. STM ERRA
  2849. EXD6 AOD T2 INCREMENT CHANNEL PARITY RETRY COUNT
  2850. LMN CHRT+1
  2851. ZJN EXD7 IF CHANNEL PARITY RETRY LIMIT REACHED
  2852. LDN FCGS ISSUE GENERAL STATUS FUNCTION
  2853. RJM FNC
  2854. LDN 1 INPUT GENERAL STATUS
  2855. IAM DEGS,CH
  2856. ZJN EXD9 IF DATA TRANSFER COMPLETE
  2857. EXD7 LJM EXD11 CALL *7EP*
  2858.  
  2859. EXD8 LJM EXD3 REISSUE SPINUP FUNCTION
  2860.  
  2861. EXD9 STD T2 CLEAR CHANNEL PARITY RETRY COUNT
  2862. LDD CM
  2863. SFM EXD6,CH IF CHANNEL PARITY ERROR
  2864. ZJN EXD10 IF *FCSU* TIMED OUT
  2865. LDM DEGS
  2866. STM DDMD+4 SET GENERAL STATUS IN MESSAGE
  2867. LMN 2
  2868. NJN EXD10 IF NOT BUSY STATUS
  2869. DELAY 1*8D DELAY FOR 1 MILLISECOND
  2870. PAUSE
  2871. LDD CM+1
  2872. LMN ORET
  2873. NJN EXD8 IF NOT OPERATOR OVERRIDE
  2874.  
  2875. * TAKE DETAILED STATUS.
  2876.  
  2877. EXD10 AOD T2 INCREMENT CHANNEL PARITY RETRY COUNT
  2878. LMN CHRT+1
  2879. ZJN EXD11 IF CHANNEL PARITY RETRY LIMIT REACHED
  2880. LDN FCDS ISSUE DETAILED STATUS
  2881. RJM FNC
  2882. LDN DSLN INPUT DETAILED STATUS
  2883. IAM DSFA,CH
  2884. NJN EXD11 IF DATA TRANSFER ERROR
  2885. SFM EXD10,CH IF CHANNEL PARITY ERROR
  2886. LDN DSLN/5
  2887. STD T2
  2888. LDD MA
  2889. ADN 2 SAVE NEW DETAILED STATUS
  2890. CWM DSFA,T2
  2891. LDC /COMSDFS/RS0200+/COMSDFS/D6DJ*400 SET SYMPTOM CODE
  2892. STM HEDR+1
  2893. UJN EXD12 CALL *7EP*
  2894.  
  2895. EXD11 DCN CH+40
  2896. LDM DEST INHIBIT BML MESSAGE
  2897. LPC 3777
  2898. STM DEST
  2899. EXD12 MSERR 7EP EXECUTE *7EP*
  2900. EXD SPACE 4,10
  2901. HERE TERMINATE LINKED CHANNEL INSTRUCTIONS
  2902. EXD SPACE 4,10
  2903. ERRNG 10000-* OVERFLOW
  2904. BSS 10000-* SPARES
  2905. CON DKI-1 (T0) = ENTRY ADDRESS - 1
  2906. CON DEDT (T1) = DEDT
  2907. CON CH01$ (T2) = FIRST CHANNEL INSTRUCTION ADDRESS
  2908. ERRNZ LN-* INCORRECT *7KI* OVERLAY LENGTH
  2909. QUAL *
  2910. 7SI MSOVL 7733,T2,DSFA+4,(STATUS PROCESSOR.)
  2911. SPACE 4
  2912. *** MASS STORAGE STATUS PROCESSOR.
  2913. * R. J. THIELEN. 75/11/20.
  2914. * W. E. GOEBEL. 77/01/24.
  2915. 7SI SPACE 4,10
  2916. *** *7SI* IS CALLED BY *7EP* TO PERFORM ADDITIONAL
  2917. * DETAILED STATUS PROCESSING. IF A CORRECTION VECTOR IS
  2918. * PROVIDED IN DETAILED STATUS, *7SI* CORRECTS THE ERROR IN THE
  2919. * READ BUFFER AND THEN EXITS TO *7EQ* TO COMPLETE ERROR
  2920. * RECOVERY. FOR OTHER ERRORS, *7SI* REENTERS THE DRIVER AND
  2921. * ISSUES A *CONTINUE* FUNCTION CAUSING THE CONTROLLER TO RETRY
  2922. * THE PREVIOUS OPERATION.
  2923. DSI SPACE 4
  2924. ** DSI - MAIN ROUTINE.
  2925. *
  2926. * ENTRY (T1) = DEGS.
  2927. * (T2) = DERW.
  2928. * (T4 - T7) = DRIVER PARAMETERS.
  2929. * (DERW) = 1 IF WRITE REQUEST, 0 IF READ REQUEST.
  2930. * (DEGS) = GENERAL STATUS.
  2931. * (HEDR - HEDR+11) = BML MESSAGE HEADER.
  2932. * (HEDR+12 - HEDR+16) = FIRST WORD OF DETAILED STATUS.
  2933. * (MB+3 - MB+5) = LAST THREE WORDS OF DETAILED STATUS.
  2934. *
  2935. * EXIT TO *6DI* IF CONTINUE FUNCTION TO BE ISSUED.
  2936. * TO *7EQ* IF ERROR CAN BE CORRECTED ON THE FLY.
  2937. * (T4 - T7) = UNCHANGED.
  2938. * (MB+3 - MB+5) = UNCHANGED.
  2939. *
  2940. * USES CM, CM+1.
  2941.  
  2942.  
  2943. DSI ENTRY *7SI* ENTRY
  2944.  
  2945. LDI T2
  2946. ZJN DSI1 IF READ
  2947. LDN WDS4-RDS3 SET EXIT ADDRESS FOR CONTINUE
  2948. DSI1 STD CM+1
  2949. LDI T1
  2950. LPN 40
  2951. NJN DSI2 IF CORRECTABLE ON THE FLY
  2952. LDN FCCO
  2953. LJM RDS3,CM+1 ISSUE CONTINUE FUNCTION
  2954.  
  2955. * PERFORM ERROR CORRECTION.
  2956.  
  2957. DSI2 LDD MA
  2958. ADN 3
  2959. CRM DSFA+5,TR READ IN REMAINDER OF DETAILED STATUS
  2960. ERRNG *-DSFA-DSLN DATA READ IN DESTROYS CODE
  2961. LDM DSFA+14 SET BUFFER ADDRESS
  2962. LPC 777
  2963. ADM RDSB
  2964. STD CM
  2965. LDM DSFA+15 PERFORM CORRECTION ON FIRST WORD
  2966. LMI CM
  2967. STI CM
  2968. AOD CM
  2969. LDM DSFA+16 PERFORM CORRECTION ON SECOND WORD
  2970. LMI CM
  2971. STI CM
  2972. LJM LEP CALL *7EQ* TO REPORT RECOVERY
  2973. SPACE 4
  2974. ERRNG 10000-* *7SI* HAS OVERFLOWED
  2975. BSS 10000-* SPARES (ADJUST ORIGIN BY 5 AS REQUIRED)
  2976. CON DSI-1 ENTRY ADDRESS - 1
  2977. CON DEGS (T1) = DEGS
  2978. CON DERW (T2) = DERW
  2979. ERRNZ LN-* INCORRECT *7SI* OVERLAY LENGTH
  2980. QUAL *
  2981. 7WI MSOVL 7732,T1,DEEC,(WRITE ERROR PROCESSOR.)
  2982. SPACE 4
  2983. *** WRITE ERROR PROCESSOR.
  2984. * W. E. GOEBEL. 77/01/24.
  2985. SPACE 4
  2986. *** THE WRITE ERROR PROCESSOR IS CALLED ONLY WHEN
  2987. * WRITING IN FULL TRACK MODE UTILIZING THE 715X CONTROLLER
  2988. * OR THE FSC CHANNEL ADAPTOR. *7WI* IS CALLED TO
  2989. * RETRY THE CURRENT SECTOR AFTER THE ERROR PROCESSOR
  2990. * HAS INITIATED A RETRY OF THE PREVIOUS SECTOR. THE PREVIOUS
  2991. * SECTOR HAD BEEN DETECTED TO BE IN ERROR BY A FUNCTION
  2992. * TIME OUT.
  2993. *
  2994. * IF THE PREVIOUS SECTOR WAS SUCCESSFULLY WRITTEN
  2995. * AND THE CURRENT SECTOR DATA STILL EXISTS (BUFFER SPECIFIED
  2996. * IN WDSE) NORMAL PROCESSING WILL RESUME AT THE CURRENT SECTOR.
  2997. *
  2998. * IF NO BUFFER WAS SPECIFIED VIA WDSE THE CURRENT SECTOR
  2999. * DATA DOES NOT EXIST IN THE PPU FOR RETRY. IN THIS CASE
  3000. * CONTROL WILL BE RETURNED TO THE CALLING PROGRAM WITH BIT 11
  3001. * OF THE ACCUMULATOR (AND *RDCT*) SET.
  3002. *
  3003. * ENTRY (T1) = RDS.
  3004. * (T2) = 0 IF PREVIOUS SECTOR ERROR WAS RECOVERED.
  3005. * (RDS) = *WDS* EXIT ADDRESS.
  3006. * (RDSB) = BUFFER ADDRESS.
  3007. * (WDSE) = WRITE ERROR BUFFER ADDRESS (IF ANY).
  3008. * (DEEC) = ERROR CODE.
  3009. *
  3010. * EXIT (A) = 1/1, 5/0, 12/(RDCT)
  3011. * (RDCT) = 1/0, 1/1, 1/F, 3/0, 6/E.
  3012. * F = 1 IF CURRENT SECTOR DATA WAS DESTROYED BY
  3013. * PREVIOUS SECTOR RECOVERY. CALLER SHOULD
  3014. * REISSUE CURRENT SECTOR WRITE REQUEST.
  3015. * E = ERROR CODE.
  3016. * (T7) = CURRENT SECTOR.
  3017. *
  3018. * USES T1, T7.
  3019. *
  3020. * MACROS ENDMS.
  3021. PWI SPACE 4,10
  3022. DWI ENTRY *7WI* ENTRY
  3023.  
  3024. PWI AOD T7 ADVANCE TO CURRENT SECTOR
  3025. LDM RDSB RESTORE BUFFER ADDRESS
  3026. STM WDSC
  3027. LDI T1 RESTORE EXIT ADDRESS
  3028. STD T1
  3029. STM WDS
  3030. LDD T2
  3031. NJN PWI1 IF UNRECOVERED ERROR
  3032. LDD TH SET *REISSUE CURRENT SECTOR* FLAG
  3033. RAM PWIA
  3034. LDM WDSE
  3035. NJN PWI2 IF ERROR RECOVERY BUFFER SPECIFIED
  3036. LDM UERR
  3037. ERRNZ EPDE-400-EPSM CODE ASSUMES VALUES
  3038. SHN 21-10
  3039. MJN PWI1 IF *ENDMS* DISABLED
  3040. ENDMS
  3041. PWI1 LDM DEEC SET ERROR PROCESSOR INTERFACE WORD
  3042. LMC 1S17D+1S10D
  3043. PWIA EQU *-1
  3044. STM RDCT
  3045. LJM 0,T1 RETURN
  3046.  
  3047. PWI2 LJM LDA1 RETRY CURRENT SECTOR
  3048.  
  3049.  
  3050. ERRNG 10000-* *7WI* HAS OVERFLOWED
  3051. BSS 10000-* SPARES (ADJUST ORIGIN BY 5 AS REQUIRED)
  3052. CON DWI-1 (T0) = ENTRY ADDRESS - 1
  3053. CON RDS (T1) = *RDS*
  3054. ERRNZ LN-* INCORRECT *7WI* OVERLAY LENGTH
  3055. QUAL *
  3056. TITLE 0TI - TRACK FLAW PROCESSOR.
  3057. QUAL 0TI
  3058. IDENT 0TI,FFIX "HN" TRACK FLAW PROCESSOR.
  3059. *COMMENT 6DI - "HN" TRACK FLAW PROCESSOR.
  3060. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  3061. FFI SPACE 4
  3062. *** TRACK FLAW PROCESSOR.
  3063. * R. J. THIELEN. 75/11/20.
  3064. * W. E. GOEBEL. 77/01/24.
  3065. * J. R. HILDEBRAND. 82/01/12.
  3066. FFI SPACE 4
  3067. *** THE TRACK FLAW PROCESSOR READS FLAW MAPS FROM DISK
  3068. * PACKS AND FLAWS LOGICAL TRACKS CORRESPONDING TO THE PHYSICAL
  3069. * FLAW ADDRESSES RECORDED THERE.
  3070. *
  3071. *
  3072. ** ENTRY CONDITIONS.
  3073. *
  3074. * ((LA)-1) = EQUIPMENT.
  3075. *
  3076. * THE TRACK FLAW PROCESSOR IS CALLED IN THE SAME MANNER AS
  3077. * LOCATION FREE OVERLAYS.
  3078. *
  3079. *
  3080. * EXIT CONDITIONS.
  3081. *
  3082. * (A) = NON-ZERO IF FLAWING INCOMPLETE.
  3083. * (T5) = EQUIPMENT EST ORDINAL.
  3084. * TRACKS FLAWED IN TRT IF POSSIBLE TO DO SO.
  3085. *
  3086. * CALLS RDS.
  3087. *
  3088. * USES DIRECT CELLS 00 - 17, BFMS - BFMS+501.
  3089. *
  3090. *
  3091. * NOTES -
  3092. *
  3093. * MODIFIES READ FUNCTION CODE IN MAIN DRIVER AND CLEARS
  3094. * *MSD* SO THAT DRIVER WILL BE RELOADED BY A *SMS*.
  3095. *
  3096. * PHYSICAL FLAW INFORMATION IS RECORDED IN THE UTILITY
  3097. * SECTOR IN 24 BIT FORMAT AS FOLLOWS
  3098. *
  3099. * 1/S, 1/T, 10/CY, 6/HD, 6/SC
  3100. *
  3101. * WHERE S = SECTOR FLAW IF SET = 1
  3102. * T = TRACK FLAW IF SET = 1
  3103. * CY = CYLINDER
  3104. * HD = HEAD
  3105. * SC = SECTOR
  3106. *
  3107. * THE MAIN OVERLAY, 0TI, CONTAINS COMMON SUBROUTINES AND
  3108. * PROCESSORS FOR THE FOLLOWING DEVICES -
  3109. *
  3110. * DI
  3111. * DJ
  3112. *
  3113. * AN AUXILLIARY OVERLAY, 0TJ, CONTAINS PROCESSORS FOR -
  3114. *
  3115. * DK
  3116. * DL
  3117. * DM
  3118. * DQ
  3119. * DR
  3120. * DX
  3121. * DY
  3122. * DZ
  3123. * DA
  3124. * DB
  3125. * DC
  3126. *
  3127. * THE FOLLOWING TYPES OF DEVICES DO NOT HAVE FLAW MAPS RECORDED
  3128. * ON DISK, SO *0TI* IS IMMEDIATELY EXITED -
  3129. *
  3130. * DD
  3131. * DG
  3132. SPACE 4
  3133. ** DIRECT LOCATION ASSIGNMENTS.
  3134.  
  3135.  
  3136. T8 EQU 16 TEMPORARY
  3137. T9 EQU 17 TEMPORARY
  3138. SPACE 4
  3139. * REDEFINE INSTRUCTIONS FOR LOCATION FREE EXECUTION.
  3140.  
  3141. RIREL REDEFINE INSTRUCTIONS
  3142. FFI SPACE 4,10
  3143. ORG 5
  3144. FFI SUBR ENTRY/EXIT
  3145. RJM PRS PRESET FLAW PROCESSING
  3146. ZJN FFIX IF NO FLAW MAP ON DISK TO READ
  3147. MJN FFIX IF NO ALGORITHM INDEX
  3148.  
  3149. * MAIN FLAW PROCESSING LOOP.
  3150.  
  3151. FFI1 LDC 0
  3152. * LDC NTDA/2 (DA DEVICE)
  3153. FFID EQU *-1
  3154. RJM POM PROCESS ONE FLAW MAP
  3155. FFIA UJN FFI2 CONTINUE
  3156. * LDD T9 (PROCESS SECOND *DA* FLAW MAP)
  3157. ADC -NTDA/2
  3158. STD T9
  3159. LDN 0
  3160. RJM POM PROCESS FLAW MAP FOR SECOND *DA* VOLUME
  3161. FFI2 LDC ** SINGLE UNIT SECTOR LIMIT
  3162. FFIB EQU *-1
  3163. RAD T7 ADVANCE LOGICAL SECTOR ADDRESS
  3164. SBM. SLM
  3165. MJN FFI1 IF MORE UNITS FOR THIS DEVICE
  3166. FFIC UJN *+2 CONTINUE
  3167. * RJM FCE (*DA* DEVICE)
  3168. VFD 12/FCE
  3169. LDD T8 ERROR STATUS
  3170. UJN FFIX EXIT
  3171. POM SPACE 4,10
  3172. ** POM - PROCESS ONE FLAW MAP.
  3173. *
  3174. * ENTRY (A) = *NTDA*/2, IF FIRST CALL FOR A *DA* DEVICE.
  3175. * 0 IF NOT.
  3176. * T9 = LOGICAL TRACK NUMBER OF UTILITY FLAW SECTOR.
  3177. *
  3178. * EXIT T8 INCREMENTED IF ERROR.
  3179. *
  3180. * CALLS RDS, FLAW PROCESSORS.
  3181.  
  3182.  
  3183. POM2 AOD T8 COUNT ERROR
  3184.  
  3185. POM SUBR
  3186. STM POMA+1 SET *DA* TRACK BIAS
  3187. LDD T9 SET DEADSTART CYLINDER TRACK ADDRESS
  3188. STD T6
  3189. LDC BFMS RESET UTILITY MAP INDEX
  3190. STD T3
  3191. RJM. RDS READ UTILITY SECTOR
  3192. SHN -17D
  3193. STD T6 SAVE STATUS
  3194. ENDMS
  3195. LDD T6
  3196. NJN POM2 IF ERROR IN READ
  3197.  
  3198. * CONVERT FLAWS FROM PHYSICAL TO LOGICAL.
  3199.  
  3200. POM1 LDI T3 READ TRACK ADDRESS
  3201. ZJN POMX IF NO MORE FLAWS
  3202. LPC 1777
  3203. POMA ADC 0
  3204. * ADC NTDA/2 (FIRST CALL FOR *DA* DEVICE)
  3205. SHN 1
  3206. STD T6
  3207. POMB RJM ** PROCESS FLAW
  3208. LDN 2 ADVANCE UTILITY SECTOR INDEX
  3209. RAD T3
  3210. UJN POM1 CONTINUE PROCESSING
  3211. FLT SPACE 4
  3212. ** FLT - FLAW LOGICAL TRACK.
  3213. *
  3214. * ENTRY (T6) = LOGICAL TRACK.
  3215. *
  3216. * EXIT LOGICAL TRACK FLAWED IF WITHIN TRT.
  3217. *
  3218. * USES CM+1 - CM+3.
  3219.  
  3220.  
  3221. FLT SUBR ENTRY/EXIT
  3222. LDD T6 CHECK IF TRACK WITHIN TRT
  3223. STD CM+2
  3224. ADC -**
  3225. FLTA EQU *-1 NUMBER OF TRACKS
  3226. PJN FLTX IF BEYOND TRT
  3227. LDN STFS SELECT TRACK FLAW FUNCTION
  3228. STD CM+3
  3229. LDD T5 SET EQUIPMENT
  3230. STD CM+1
  3231. MONITOR STBM SET TRACK FLAW
  3232. UJN FLTX EXIT
  3233. PRS SPACE 4,10
  3234. ** PRS - PRESET FLAW PROCESSOR.
  3235. *
  3236. * LOAD DRIVER AND PRESET FOR UTILITY SECTOR READ.
  3237. * LOAD AUXILLIARY OVERLAY IF NEEDED.
  3238. * MODIFY CODE FOR PROPER DEVICE.
  3239. *
  3240. * EXIT (T9) = LOGICAL TRACK OF UTILITY SECTOR.
  3241. * (T7) = LOGICAL SECTOR OF UTILITY SECTOR.
  3242. * (T8) = 0.
  3243. * (A) .LT. 0 IF NO ALGORITHM INDEX IN MST.
  3244. * (A) .EQ. 0 IF NO FLAW MAP ON DISK TO READ.
  3245. * (T5) = EQUIPMENT.
  3246.  
  3247.  
  3248. PRS3 RJM. EXR
  3249. EXECUTE 0TJ,= LOAD AUXILLIARY PROCESSOR OVERLAY
  3250. LDC -PFLA
  3251. RAD LA RESTORE 0TI LOAD ADDRESS
  3252. PRS4 LDM -1
  3253. STD T5 SET EST ORDINAL
  3254. SETMS PIO,(DF,NR,NS)
  3255. LDC **
  3256. PRSB EQU *-1
  3257. STD T7 SET SECTOR NUMBER
  3258. LDC **
  3259. PRSC EQU *-1
  3260. STD T9 SET TRACK NUMBER
  3261. LDN 0
  3262. STD T8 PRESET RETURN STATUS
  3263. LDC LDNI+FCRU SET UTILITY SECTOR FUNCTION CODE
  3264. STM. RDSA
  3265.  
  3266. PRS SUBR
  3267.  
  3268. PFLA BSS 0 AUXILLIARY PROCESSOR OVERLAY ORIGIN
  3269.  
  3270. LDM -1 SET EST ORDINAL
  3271. STD T5
  3272. SFA EST
  3273. ADK EQDE
  3274. CRD CM READ EST ENTRY
  3275. LDD CM+4
  3276. SHN 3
  3277. ADN DILL READ ALGORITHM INDEX
  3278. CRD CM
  3279. SBN DILL-TDGL
  3280. CRD CM-1
  3281. LCN 0 SET NUMBER OF TRACKS
  3282. LMD CM-1+2
  3283. SHN 2
  3284. STM FLTA STORE IN *FLT* SUBROUTINE
  3285.  
  3286. * SET ALGORITHM INDEX DEPENDENT PARAMETERS.
  3287.  
  3288. LDD CM+4
  3289. LPN 77
  3290. SBN 1
  3291. MJN PRSX IF NO ALGORITHM INDEX
  3292. STD T0
  3293. SHN 2 SET *TALP* OFFSET
  3294. ADD T0
  3295. ADD LA
  3296. STD T3
  3297. LDM. TALP,T3 SET LOGICAL TRACK
  3298. ZJN PRSX IF NO FLAW MAP ON DISK TO READ
  3299. STM PRSC
  3300. LDM. TALP+1,T3 SAVE LOGICAL SECTOR
  3301. STM PRSB
  3302. LDM. TALP+2,T3 SET FLAW PROCESSOR
  3303. STM POMB+1
  3304. LDM. TALP+3,T3 SET SINGLE UNIT SECTOR LIMIT
  3305. STM FFIB
  3306. LDD T0
  3307. SBN AIDA-1
  3308. NJN PRS1 IF NOT A *DA* DEVICE
  3309. LDC NTDA/2 SET UP FOR *DA* PROCESS
  3310. STM FFID
  3311. LDC LDDI+T9
  3312. STM FFIA
  3313. LDC RJMI+LA
  3314. STM FFIC
  3315. PRS1 LDM. TALP+4,T3
  3316. NJN PRS2 IF AUXILLIARY OVERLAY NEEDED
  3317. LJM PRS4 LOAD DRIVER
  3318.  
  3319. PRS2 LDC PFLA
  3320. RAD LA SET LOAD ADDRESS FOR AUXILLIARY OVERLAY
  3321. LDM. TALP+4,T3
  3322. SHN 6
  3323. ADN 1R0
  3324. SHN 18D-6
  3325. LJM PRS3-PFLA LOAD AUXILLIARY PROCESSOR OVERLAY
  3326. TALP SPACE 4
  3327. ** TALP - TABLE OF ALGORITHM INDEX DEPENDENT PARAMETERS.
  3328. *
  3329. * ENTRY = 5 BYTES.
  3330. * WORD 1 = LOGICAL TRACK OF FLAW INFORMATION.
  3331. * WORD 2 = LOGICAL SECTOR OF FLAW INFORMATION.
  3332. * WORD 3 = FLAW PROCESSOR ADDRESS.
  3333. * WORD 4 = SINGLE UNIT SECTOR LIMIT.
  3334. * WORD 5 = PROCESSOR OVERLAY NAME.
  3335.  
  3336.  
  3337. TALP INDEX
  3338. INDEX 5*AIDI-5,(7150,1,FPI,SLDI,0)
  3339. INDEX 5*AIDJ-5,(7154,1,FPJ,SLDJ,0)
  3340. INDEX 5*AIDK-5,(7150,2,FPK,SLDK,2RTJ)
  3341. INDEX 5*AIDL-5,(7154,2,FPL,SLDL,2RTJ)
  3342. INDEX 5*AIDM-5,(7223,20,FPM,SLDM,2RTJ)
  3343. INDEX 5*AIDQ-5,(7222,41,FPQ,SLDQ,2RTJ)
  3344. INDEX 5*AIDR-5,(0,0,0,0,0)
  3345. INDEX 5*AIDD-5,(0,0,0,0,0)
  3346. INDEX 5*AIDG-5,(0,0,0,0,0)
  3347. INDEX 5*AIDX-5,(7150,1,FPX,SLDX,2RTJ)
  3348. INDEX 5*AIDY-5,(7134,1,FPY,SLDY,2RTJ)
  3349. INDEX 5*AIDZ-5,(6136,1,FPZ,SLDZ,2RTJ)
  3350. INDEX 5*AIDA-5,(6137,1,FPA,SLDA,2RTJ)
  3351. INDEX 5*AIDB-5,(7222,204,FPB,SLDB,2RTJ)
  3352. INDEX 5*AIDC-5,(7352,1,FPC,SLDC,2RTJ)
  3353. INDEX 5*AIDS-5
  3354. FPX SPACE 4,10
  3355. ** FLAW PROCESSORS.
  3356. *
  3357. * ENTRY (T3) = ADDRESS OF PHYSICAL ADDRESS.
  3358. * (A) = (T6) = CYLINDER * 2.
  3359. *
  3360. * EXIT LOGICAL TRACK CORRESPONDING TO THE PHYSICAL ADDRESS
  3361. * FLAWED IN THE TRT.
  3362. *
  3363. * MAY USE T1, T2, T6, T7, CM - CM+4.
  3364. *
  3365. * CALLS FLT.
  3366. FPI SPACE 4
  3367. ** FPI - FLAW PROCESSOR FOR *DI* EQUIPMENTS.
  3368.  
  3369.  
  3370. FPI SUBR ENTRY/EXIT
  3371. RAD T6
  3372. LDM. 1,T3 TRACK AND SECTOR
  3373. STD T2
  3374. SHN -6
  3375. SBN 11
  3376. MJN FPI1 IF LOWER HALF OF CYLINDER
  3377. AOD T6
  3378. FPI1 LDD T2 SET EVEN ODD PHYSICAL SECTOR
  3379. LPN 1
  3380. SHN 1
  3381. RAD T6
  3382. RJM FLT FLAW TRACK
  3383. LDI T3 CHECK FOR TRACK MODE FLAW
  3384. SHN 21-12
  3385. PJN FPIX IF NOT TRACK MODE FLAW
  3386. LDD T6
  3387. LMN 2 SELECT OTHER LOGICAL TRACK
  3388. STD T6
  3389. RJM FLT FLAW LOGICAL TRACK
  3390. UJN FPIX EXIT
  3391. FPJ SPACE 4,10
  3392. ** FPJ - FLAW PROCESSOR FOR *DJ* EQUIPMENTS.
  3393.  
  3394.  
  3395. FPJ SUBR ENTRY/EXIT
  3396. LDM. 1,T3 SET EVEN/ODD TRACK
  3397. LPN 1
  3398. RAD T6
  3399. RJM FLT FLAW LOGICAL TRACK
  3400. LDI T3 CHECK FOR TRACK MODE FLAW
  3401. SHN 21-12
  3402. PJN FPJX IF NOT TRACK MODE FLAW
  3403. LDD T6 SELECT OTHER LOGICAL TRACK
  3404. LMN 1
  3405. STD T6
  3406. RJM FLT FLAW LOGICAL TRACK
  3407. UJN FPJX EXIT
  3408. SPACE 4
  3409. ERRNG 473-* OVERLAY OVERFLOWS PRU
  3410. TITLE 0TJ - TRACK FLAW PROCESSOR FOR 33502.
  3411. IDENT 0TJ,FFIX "HN" TRACK FLAW PROCESSOR.
  3412. *COMMENT 6DI - "HN" TRACK FLAW PROCESSOR.
  3413. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  3414. ZTJ SPACE 4,10
  3415. *** TRACK FLAW PROCESSOR AUXILLIARY OVERLAY.
  3416. * J. D. MEYER 80/12/12.
  3417. * J. R. HILDEBRAND 82/01/12.
  3418. ZTJ SPACE 4,10
  3419. *** ADDITIONAL FLAW PROCESSORS FOR *0TI*.
  3420. *
  3421. * CONTAINS FLAW PROCESSORS FOR THE FOLLOWING EQUIPMENTS -
  3422. *
  3423. * DK
  3424. * DL
  3425. * DM
  3426. * DQ
  3427. * DX
  3428. * DY
  3429. * DZ
  3430. * DA
  3431. * DB
  3432. * DC
  3433. *
  3434. * ENTRY (T3) = ADDRESS OF PHYSICAL ADDRESS.
  3435. * (A) = (T6) = CYLINDER * 2.
  3436. *
  3437. * EXIT LOGICAL TRACK CORRESPONDING TO THE PHYSICAL ADDRESS
  3438. * FLAWED IN THE TRT.
  3439. *
  3440. * MAY USE T1, T2, T6, T7, CM - CM+4.
  3441. *
  3442. * CALLS CHS, FLT, PTF.
  3443. SPACE 4
  3444. ORG 5
  3445. LOC PFLA+5
  3446. ZTJ SUBR
  3447. UJN ZTJX RETURN AFTER LOADING ROUTINES
  3448. FPK SPACE 4
  3449. ** FPK - FLAW PROCESSOR FOR *DK* EQUIPMENT.
  3450.  
  3451.  
  3452. FPK5 ADN 2
  3453. PJN FPKX IF IN GAP SECTOR
  3454. FPK6 RJM FLT FLAW LOGICAL TRACK
  3455.  
  3456. FPK SUBR ENTRY/EXIT
  3457. RAD T6
  3458. LDI T3
  3459. SHN 21-12
  3460. MJN FPK2 IF TRACK MODE FLAW
  3461. RJM CHS CONVERT HEAD GROUP AND SECTOR
  3462. FPK1 LDC -SLDK-2
  3463. RAD T2
  3464. MJN FPK5 IF IN PREVIOUS TRACK
  3465. AOD T6 ADVANCE TRACK
  3466. UJN FPK1
  3467.  
  3468. FPK2 RJM PTF PROCESS TRACK FLAW
  3469. UJN FPKX RETURN
  3470. FPL SPACE 4
  3471. ** FPL - FLAW PROCESSOR FOR *DL* EQUIPMENTS.
  3472.  
  3473.  
  3474. FPL4 ADN 2
  3475. PJN FPLX IF IN GAP SECTOR
  3476. FPL5 RJM FLT FLAW LOGICAL TRACK
  3477.  
  3478. FPL SUBR ENTRY/EXIT
  3479. LDI T3
  3480. SHN 21-12
  3481. MJN FPL2 IF TRACK MODE FLAW
  3482. RJM CHS CONVERT HEAD GROUP AND SECTOR
  3483. FPL1 LDC -SLDL-2
  3484. RAD T2
  3485. MJN FPL4 IF IN PREVIOUS TRACK
  3486. AOD T6 ADVANCE TRACK
  3487. UJN FPL1
  3488.  
  3489. FPL2 RJM FPY PROCESS TRACK FLAW
  3490. UJN FPLX RETURN
  3491. FPM SPACE 4,10
  3492. ** FPM - FLAW PROCESSOR FOR *DM* EQUIPMENTS.
  3493.  
  3494.  
  3495. FPM SUBR ENTRY/EXIT
  3496. RJM FLT FLAW TRACK
  3497. AOD T6
  3498. RJM FLT FLAW TRACK
  3499. UJN FPMX RETURN
  3500. FPQ SPACE 4,10
  3501. ** FPQ - FLAW PROCESSOR FOR *DQ* EQUIPMENTS.
  3502.  
  3503.  
  3504. FPQ SUBR ENTRY/EXIT
  3505. LDM. 1,T3
  3506. SHN -6
  3507. SBN 24
  3508. MJN FPQ1 IF IN FIRST HALF OF CYLINDER
  3509. AOD T6
  3510. FPQ1 RJM FLT FLAW TRACK
  3511. UJN FPQX RETURN
  3512. FPX SPACE 4,10
  3513. ** FLAW PROCESSOR FOR *DX* EQUIPMENTS.
  3514.  
  3515.  
  3516. FPX SUBR ENTRY/EXIT
  3517. RAD T6
  3518. RJM PTF PROCESS TRACK FLAW
  3519. UJN FPXX RETURN
  3520. FPY SPACE 4,10
  3521. ** FLAW PROCESSOR FOR *DY* EQUIPMENTS.
  3522.  
  3523.  
  3524. FPY2 RJM FLT FLAW LOGICAL TRACK
  3525.  
  3526. FPY SUBR ENTRY/EXIT
  3527. LDM. 1,T3
  3528. SHN -6
  3529. SBN 11
  3530. MJN FPY2 IF IN FIRST TRACK
  3531. NJN FPY1 IF IN SECOND TRACK
  3532. RJM FLT FLAW BOTH TRACKS
  3533. FPY1 AOD T6
  3534. UJN FPY2 FLAW SECOND TRACK
  3535. FPZ SPACE 4,10
  3536. ** FLAW PROCESSOR FOR *DZ* EQUIPMENTS.
  3537.  
  3538.  
  3539. FPZ SUBR ENTRY/EXIT
  3540. LDM. 1,T3
  3541. SHN -6
  3542. SBN 17
  3543. MJN FPZ1 IF FIRST TRACK IN CYLINDER
  3544. AOD T6 ADVANCE TRACK
  3545. FPZ1 RJM FLT FLAW LOGICAL TRACK
  3546. UJN FPZX RETURN
  3547. FPA SPACE 4,10
  3548. ** FPA - FLAW PROCESSOR FOR *DA* EQUIPMENTS.
  3549.  
  3550.  
  3551. FPA SUBR
  3552. SHN -1
  3553. STD T6 SET LOGICAL TRACK = PHYSICAL CYLINDER
  3554. RJM FLT PROCESS FLAW
  3555. UJN FPAX EXIT
  3556. FCE SPACE 4,10
  3557. ** FCE - FLAW DS AND CE TRACKS FOR *DA* DEVICE.
  3558.  
  3559.  
  3560. FCE SUBR
  3561. LDD T9
  3562. ADC NTDA/2
  3563. LPC 3777
  3564. STD T6 SET DEAD START TRACK ADDRESS
  3565. RJM FLT FLAW TRACK
  3566. SOD T6
  3567. RJM FLT
  3568. LDD T6
  3569. SHN -1
  3570. STD T6
  3571. RJM FLT
  3572. SOD T6
  3573. RJM FLT
  3574. UJN FCEX RETURN
  3575. FPB SPACE 4,10
  3576. ** FPB - FLAW PROCESSOR FOR *DB* EQUIPMENTS.
  3577.  
  3578.  
  3579. FPB SUBR
  3580. LDM. 1,T3
  3581. SHN -6
  3582. SBN 5
  3583. MJN FPB1 IF FIRST HALF OF CYLINDER
  3584. AOD T6
  3585. FPB1 RJM FLT ENTER FLAW
  3586. UJN FPBX RETURN
  3587. FPC SPACE 4,10
  3588. ** FLAW PROCESSOR FOR *DC* EQUIPMENTS.
  3589.  
  3590.  
  3591. FPC SUBR ENTRY/EXIT
  3592. LDM. 1,T3
  3593. SHN -6
  3594. SBN 7
  3595. MJN FPC2 IF IN FIRST TRACK
  3596. NJN FPC1 IF IN SECOND TRACK
  3597. RJM FLT FLAW BOTH TRACKS
  3598. FPC1 AOD T6
  3599. FPC2 RJM FLT FLAW LOGICAL TRACK
  3600. UJN FPCX FLAW SECOND TRACK
  3601. SPACE 4,10
  3602. ** FLAW SUBROUTINES.
  3603. CHS SPACE 4,10
  3604. ** CHS - CONVERT HEAD AND SECTOR TO RELATIVE SECTOR IN CYLINDER.
  3605. *
  3606. * ENTRY ((T3)+1) = 6/ HEAD,6/ SECTOR.
  3607. *
  3608. * EXIT (T2) = RELATIVE SECTOR IN CYLINDER.
  3609. * = HEAD * 30B + SECTOR.
  3610. *
  3611. * USES T1, T2.
  3612.  
  3613.  
  3614. CHS SUBR ENTRY/EXIT
  3615. LDM. 1,T3 SET HEAD GROUP
  3616. SHN -6
  3617. STD T1
  3618. LDM. 1,T3 SET SECTOR
  3619. LPN 77
  3620. STD T2
  3621. CHS1 SOD T1
  3622. MJN CHSX IF END OF MULTIPLY
  3623. LDN 30
  3624. RAD T2
  3625. UJN CHS1 LOOP
  3626. PTF SPACE 4,10
  3627. ** PTF - PROCESS TRACK FLAW.
  3628. *
  3629. * ENTRY (T3) = ADDRESS OF PHYSICAL ADDRESS.
  3630. * (T6) = PHYSICAL CYLINDER * 4.
  3631. *
  3632. * EXIT LOGICAL TRACK FLAWED.
  3633. *
  3634. * USES T1.
  3635. *
  3636. * CALLS FLT.
  3637.  
  3638.  
  3639. PTF3 RJM FLT FLAW LOGICAL TRACK
  3640.  
  3641. PTF SUBR ENTRY/EXIT
  3642. LDM. 1,T3
  3643. SHN -6
  3644. ADN 1
  3645. STD T1 HEAD GROUP + 1
  3646. UJN PTF2 CONTINUE PROCESSING
  3647.  
  3648. PTF1 AOD T6 ADVANCE TRACK
  3649. PTF2 LCN 5
  3650. RAD T1
  3651. MJN PTF3 IF IN PREVIOUS TRACK
  3652. NJN PTF1 IF NOT HEAD GROUP CROSSING TRACK BOUNDARY
  3653. RJM FLT FLAW LOGICAL TRACK
  3654. AOD T6
  3655. UJN PTF3 FLAW SECOND TRACK
  3656. SPACE 4
  3657. ERRNG 473-* OVERLAY OVERFLOWS PRU
  3658.  
  3659. RSTR RESTORE INSTRUCTIONS
  3660. TITLE 0PI - PACK SERIAL PROCESSOR.
  3661. QUAL 0PI
  3662. IDENT 0PI,PRSX "HN" PACK SERIAL PROCESSOR.
  3663. *COMMENT 6DI - "HN" PACK SERIAL PROCESSOR.
  3664. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  3665. SPACE 4
  3666. *** PACK SERIAL PROCESSOR.
  3667. * R. J. THIELEN. 75/11/20.
  3668. * W. E. GOEBEL. 78/03/06.
  3669. SPACE 4
  3670. *** THE PACK SERIAL PROCESSOR PERFORMS ANY ONE OF THREE
  3671. * DIFFERENT FUNCTIONS, DEPENDING UPON THE OPTION CHOSEN BY THE
  3672. * CALLER.
  3673. * 1) IT READS THE PACK SERIAL NUMBER FROM A SPECIFIED DISK
  3674. * PACK AND PLACES IT INTO BOTH ERRLOG AND BML MESSAGES
  3675. * WHICH ARE RETURNED TO THE CALLING PROGRAM.
  3676. * 2) IT LOADS AND MODIFIES THE MASS STORAGE DRIVER TO ALLOW
  3677. * THE CALLER TO READ AND WRITE PROTECTED SECTORS.
  3678. * 3) IT READS THE DEADSTART SECTOR FROM A SPECIFIED DISK
  3679. * DRIVE AND VERIFIES THAT IT IS VALID BY CHECKING THOSE
  3680. * FIELDS IN THE SECTOR WHOSE CONTENTS ARE KNOWN AND
  3681. * CONSTANT. AN *ENDMS* IS NOT ISSUED IF THE SECTOR IS
  3682. * VALID, ALLOWING THE CALLER TO UPDATE AND REWRITE THE
  3683. * SECTOR BEFORE ANOTHER MAINFRAME CAN GAIN ACCESS TO THE
  3684. * DRIVE.
  3685. SPACE 4
  3686. * REDEFINE INSTRUCTIONS FOR LOCATION FREE EXECUTION.
  3687.  
  3688. RIREL REDEFINE INSTRUCTIONS
  3689. SPACE 4,10
  3690. * COMMON DECKS.
  3691.  
  3692.  
  3693. *CALL COMSDFS
  3694. PRS EJECT
  3695. *** PRS - PRESET PACK SERIAL PROCESSOR.
  3696. *
  3697. * ENTRY ((LA)-1) = 3/ FC,9/ EQ.
  3698. * EQ = EST ORDINAL.
  3699. * FC = 0 IF TO READ PACK SERIAL NUMBER.
  3700. * FC = 1 IF TO MODIFY DRIVER TO READ AND WRITE PROTECTED
  3701. * SECTORS.
  3702. * FC = 4 IF TO READ AND VERIFY THE DEADSTART SECTOR.
  3703. *
  3704. * EXIT (T5) = EST ORDINAL.
  3705. *
  3706. * FOR FC = 0,
  3707. * (A) = MAIN PROCESSOR ENTRY ADDRESS.
  3708. * (T6) = LOGICAL TRACK OF PACK SERIAL NUMBER.
  3709. * (T7) = LOGICAL SECTOR OF PACK SERIAL NUMBER.
  3710. * PACK SERIAL NUMBER PROCESSOR INITIALIZED.
  3711. *
  3712. * FOR FC = 1,
  3713. * DRIVER MODIFIED TO READ AND WRITE PROTECTED SECTORS.
  3714. *
  3715. * FOR FC = 4,
  3716. * (A) = 0 IF DEADSTART SECTOR LOADED AND VERIFIED.
  3717. * = 1 IF MASS STORAGE ERROR OCCURRED WHILE READING
  3718. * DEADSTART SECTOR.
  3719. * = 2 IF DEADSTART SECTOR FIELDS WERE NOT CORRECT.
  3720. * (T6) = LOGICAL TRACK OF DEADSTART SECTOR.
  3721. * (T7) = LOGICAL SECTOR OF DEADSTART SECTOR.
  3722. * (BFMS - BFMS+501) = DEADSTART SECTOR, IF (A) = 0.
  3723. *
  3724. * USES T3, T5 - T7, CM - CM+4.
  3725. *
  3726. * CALLS C2D, RDS.
  3727. *
  3728. * MACROS ENDMS, SETMS.
  3729.  
  3730.  
  3731. ORG 5
  3732. PRS SUBR ENTRY/EXIT
  3733. LDD LA ABSOLUTIZE MESSAGE ADDRESSES
  3734. RAM TDMA
  3735. LDD LA
  3736. RAM TDMA+1
  3737. LDM -1 SET EST ORDINAL
  3738. LPC 777
  3739. STD T5
  3740. STM MSGB+5
  3741. SHN -3 CONVERT UPPER TWO DIGITS OF EST ORDINAL
  3742. RJM C2D
  3743. STM MSGA+1
  3744. LDD T5 CONVERT LOWER DIGIT OF EST ORDINAL
  3745. LPN 7
  3746. SHN 6
  3747. RAM MSGA+2
  3748.  
  3749. * *SETMS* IS CHANGED TO SUPPRESS ERROR REPORTING OF NORMAL AND
  3750. * NOT READY ERRORS WHILE READING BOTH THE DEADSTART SECTOR AND
  3751. * THE PACK SERIAL NUMBER, PREVENTING UNNECESSARY ERROR MESSAGES
  3752. * FROM BEING ISSUED TO THE OPERATOR. EXAMPLES OF UNNEEDED
  3753. * ERROR MESSAGES ARE 1) READING THE DEADSTART SECTOR ON ISD AND
  3754. * 844 PACKS WHICH HAVE NEVER HAD *CIP* INSTALLED, AND 2) TRYING
  3755. * TO READ THE PACK SERIAL NUMBER ON AN ISD PACK THAT DOES NOT
  3756. * HAVE ONE.
  3757.  
  3758. SETMS PIO
  3759. SETMS =,PIO,(AR,DF,-RR,SM)
  3760. LDK EPAR&EPDF&EPRR&EPSM
  3761. STM. UERR
  3762. LDM. CHRV SET ACCESS TO A DOWN DEVICE
  3763. SCN EPAD
  3764. LMN EPAD
  3765. STM. CHRV
  3766. LDC LDNI+FCRF SET READ FACTORY DATA FUNCTION
  3767. STM. RDSA
  3768. LDD CM+3 SET EQUIPMENT NAME IN MESSAGE
  3769. LPC 3777
  3770. STM MSGA
  3771. STM MSGB+2
  3772. LDD CM+4
  3773. SHN 3
  3774. ADN DILL READ ALGORITHM INDEX
  3775. CRD CM
  3776. SBN DILL-MDGL READ SECTOR LIMIT
  3777. CRD CM-1
  3778. LDD CM-1+1 SET SINGLE UNIT SECTOR LIMIT
  3779. LPC 3777
  3780. STM PSPB
  3781.  
  3782. * SET ALGORITHM INDEX DEPENDENT PROCESSING.
  3783.  
  3784. LDD CM+4
  3785. LPN 77
  3786. ADC TALP
  3787. ADD LA
  3788. STD T3
  3789. LDI T3 SET TRACK
  3790. STD T6
  3791.  
  3792. * NOTE - THE FOLLOWING CODE SETS THE CORRECT *FACTORY* SECTOR
  3793. * NUMBER FOR ALL DEVICES (ZERO FOR ALL EXCEPT CDSS II). IF A
  3794. * NEW DEVICE IS TO BE ADDED WITH A *DEADSTART* SECTOR NUMBER
  3795. * EXCEEDING 377, THIS CODE MAY REQUIRE ALTERATION.
  3796.  
  3797. LDM. TDSS-TALP,T3 SET FACTORY SECTOR NUMBER
  3798. LPC 7400 CLEAR BITS 7-0
  3799. STD T7
  3800. LDM -1 CHECK OPTION TYPE
  3801. SHN 0-11
  3802. NJN PRS2 IF NOT READING PACK SERIAL NUMBER
  3803. LDC PSP RETURN MAIN PROCESSOR ENTRY ADDRESS
  3804. ADD LA
  3805. PRS1 LJM PRSX EXIT
  3806.  
  3807. PRS2 LDC LDNI+FCRP
  3808. STM. RDSA
  3809. LDC LDNI+FCWP
  3810. STM. WDS3
  3811. LDM -1
  3812. SHN 0-12
  3813. ZJN PRS1 IF SETTING FOR PROTECTED READS AND WRITES
  3814. LDM. TDST-TALP,T3 SET DEADSTART TRACK
  3815. STD T6
  3816. LDM. TDSS-TALP,T3 SET DEADSTART SECTOR NUMBER
  3817. STD T7
  3818. LDC BFMS READ THE DEADSTART SECTOR
  3819. RJM. RDS
  3820. SHN 0-21
  3821. NJN PRS4 IF DEADSTART SECTOR CANNOT BE READ
  3822. LDN PRSBL+1
  3823. STD CM
  3824. LDD LA
  3825. RAM PRSA
  3826. PRS3 SOD CM CHECK NEXT BYTE
  3827. ZJN PRS4 IF ALL KNOWN BYTES IN SECTOR ARE CORRECT
  3828. LDM. BFMS-1,CM
  3829. LMM. PRSB-1,CM VERIFY BYTE AGAINST EXPECTED VALUE
  3830. PRSA EQU *-1
  3831. ZJN PRS3 IF BYTE CONTENTS ARE CORRECT
  3832. ENDMS
  3833. LDN 2
  3834. PRS4 LJM PRSX EXIT
  3835.  
  3836.  
  3837. PRSB CON 0500,0016 CONTROL BYTES
  3838. CON 0000,0000,0000,1120,1400 FIRST WORD OF SECTOR
  3839. CON 0000,0000,0000 BEGINNING OF SECOND WORD
  3840. PRSBL EQU *-PRSB
  3841. PSP SPACE 4
  3842. *** PSP - PACK SERIAL PROCESSOR.
  3843. *
  3844. * ENTRY (A) = LOGICAL UNIT.
  3845. * (T5) = EQUIPMENT.
  3846. * (T6) = TRACK.
  3847. * (T7) = SECTOR.
  3848. *
  3849. * EXIT (A) = 6/BL, 12/TA.
  3850. * BL = BML MESSAGE LENGTH.
  3851. * TA = DAYFILE MESSAGE TABLE ADDRESS.
  3852. * (A) = 0 IF DISK ERROR DETECTED.
  3853. * (BFMS - BFMS+1) = PACK SERIAL NUMBER IF NO DISK ERROR.
  3854. *
  3855. * USES T0, T3 - T7, CM - CM+4.
  3856. *
  3857. * CALLS CBD, CHB, CSD, CTD, RDS.
  3858. *
  3859. * MACROS ENDMS.
  3860.  
  3861.  
  3862. PSP4 LDN 0 RETURN ERROR STATUS
  3863.  
  3864. PSP SUBR ENTRY/EXIT
  3865. STD T1 SAVE LOGICAL UNIT
  3866. PSP1 SOD T1 FORM LOGICAL UNIT * SECTOR LIMIT
  3867. MJN PSP2 IF MULTIPLICATION COMPLETE
  3868. LDC 0 ADD SINGLE UNIT SECTOR LIMIT
  3869. PSPB EQU *-1
  3870. RAD T7
  3871. UJN PSP1
  3872.  
  3873. PSP2 LDC BFMS READ FACTORY SECTOR
  3874. RJM. RDS
  3875. MJN PSP4 IF ERROR
  3876. LDD MA GET PHYSICAL UNIT NUMBER
  3877. CWD T4
  3878. MONITOR LDAM CONVERT ADDRESS
  3879. ENDMS
  3880. LDD MA
  3881. ADN 1
  3882. CRD CM
  3883. LDD CM+1 PUT PHYSICAL UNIT NUMBER IN MESSAGE
  3884. STM MSGB+3
  3885. RJM C2D
  3886. STM MSGA+4
  3887. LDC BFMS SET ADDRESS OF PACK SERIAL NUMBER
  3888. STD CM
  3889. LDC MSGA+7 SET ERRLOG MESSAGE DESTINATION ADDRESS
  3890. ADD LA
  3891. STD CM+1
  3892. LDC MSGB+7 SET BML MESSAGE DESTINATION ADDRESS
  3893. ADD LA
  3894. STD CM+2
  3895. RJM CSD CONVERT 6 BCD DIGITS TO DISPLAY
  3896. LDC TDMA+MSG1L*10000
  3897. ADD LA
  3898. LJM PSPX EXIT
  3899.  
  3900.  
  3901. MSGA DATA C*EQ000, U00,PS=000000.*
  3902.  
  3903. MSGB CON DM0401 MESSAGE ID
  3904. CON HI0100 MESSAGE SYMPTOM
  3905. CON 0 DEVICE TYPE (DISPLAY CODE)
  3906. CON 0 UNIT NUMBER (BINARY)
  3907. CON 0 RESERVED FOR CDC
  3908. CON 0 EST ORDINAL (BINARY)
  3909. CON 0 RESERVED FOR CDC
  3910. DATA 6AXXXXXX PACK SERIAL NUMBER (DISPLAY CODE)
  3911. MSG1L EQU *-MSGB REGULAR BML MESSAGE LENGTH
  3912. TDMA SPACE 4,10
  3913. ** TDMA - TABLE OF DAYFILE MESSAGE ADDRESSES.
  3914.  
  3915.  
  3916. TDMA BSS 0
  3917. CON MSGA ERRLOG MESSAGE ADDRESS
  3918. CON MSGB BML MESSAGE ADDRESS
  3919. TALP SPACE 4
  3920. ** TALP - TABLE OF ALGORITHM INDEX PROCESSING PARAMETERS.
  3921. *
  3922. * ENTRY = 1 WORDS.
  3923. * WORD 1 = LOGICAL TRACK OF MANUFACTURING SECTOR.
  3924.  
  3925.  
  3926. TALP INDEX
  3927. INDEX AIDI,(7150)
  3928. INDEX AIDJ,(7154)
  3929. INDEX AIDK,(7150)
  3930. INDEX AIDL,(7154)
  3931. INDEX AIDM,(7222)
  3932. INDEX AIDQ,(7222)
  3933. INDEX AIDR,(5060)
  3934. INDEX AIDX,(7150)
  3935. INDEX AIDY,(7134)
  3936. INDEX AIDZ,(6136)
  3937. INDEX AIDA,(6137)
  3938. INDEX AIDB,(7222)
  3939. INDEX AIDC,(7352)
  3940. INDEX AIDD,(0)
  3941. INDEX AIDG,(0)
  3942. INDEX AIDS
  3943. TDST SPACE 4,10
  3944. ** TDST - TABLE OF DEADSTART TRACK NUMBERS.
  3945.  
  3946.  
  3947. TDST INDEX
  3948. INDEX AIDI,7152
  3949. INDEX AIDJ,7155
  3950. INDEX AIDK,7150
  3951. INDEX AIDL,7154
  3952. INDEX AIDM,7222
  3953. INDEX AIDQ,7222
  3954. INDEX AIDR,5060
  3955. INDEX AIDX,7150
  3956. INDEX AIDY,7134
  3957. INDEX AIDZ,6136
  3958. INDEX AIDA,6137
  3959. INDEX AIDB,7222
  3960. INDEX AIDC,(7352)
  3961. INDEX AIDD,7140
  3962. INDEX AIDG,6570
  3963. INDEX AIDS
  3964. TDSS SPACE 4,10
  3965. ** TDSS - TABLE OF DEADSTART SECTOR NUMBERS.
  3966. *
  3967. * NOTE - IF A NEW DEVICE WITH A DEADSTART SECTOR NUMBER GREATER
  3968. * THAN 377 IS ADDED TO THIS TABLE, CODE IN THE AREA JUST BEFORE
  3969. * TAG *PRS1* MAY REQUIRE ALTERATION.
  3970.  
  3971.  
  3972. TDSS INDEX
  3973. INDEX AIDI,1
  3974. INDEX AIDJ,1
  3975. INDEX AIDK,3
  3976. INDEX AIDL,3
  3977. INDEX AIDM,37B
  3978. INDEX AIDQ,76B
  3979. INDEX AIDR,2476B
  3980. INDEX AIDX,2
  3981. INDEX AIDY,2
  3982. INDEX AIDZ,2
  3983. INDEX AIDA,2
  3984. INDEX AIDB,370B
  3985. INDEX AIDC,2
  3986. INDEX AIDD,0
  3987. INDEX AIDG,0
  3988. INDEX AIDS
  3989. CBD SPACE 4
  3990. ** CBD - CONVERT BINARY CODED DECIMAL TO DISPLAY CODE.
  3991. *
  3992. * ENTRY (A) = 10/,8/ 2 BCD DIGITS.
  3993. * (CM+1) = ADDRESS IN ERRLOG MESSAGE WHERE RESULT IS
  3994. * TO BE STORED.
  3995. * (CM+2) = ADDRESS IN BML MESSAGE WHERE RESULT IS TO
  3996. * BE STORED.
  3997. *
  3998. * EXIT CONVERTED DIGITS ADDED TO ERRLOG AND BML MESSAGES.
  3999. * (CM+1) AND (CM+2) INCREMENTED.
  4000. *
  4001. * USES T0.
  4002.  
  4003.  
  4004. CBD SUBR ENTRY/EXIT
  4005. LPC 377 UNPACK DIGITS
  4006. SHN 16 SAVE HIGH ORDER DIGIT
  4007. STD T0
  4008. SCN 17
  4009. SHN -2 POSITION LOW ORDER DIGIT
  4010. LMD T0 MERGE HIGH ORDER DIGIT
  4011. SHN 6
  4012. ADC 2R00 CONVERT TO DISPLAY CODE
  4013. STI CM+1
  4014. STI CM+2
  4015. AOD CM+1
  4016. AOD CM+2
  4017. UJN CBDX EXIT
  4018. CSD SPACE 4,10
  4019. ** CSD - CONVERT SIX BCD DIGITS TO DISPLAY CODE.
  4020. *
  4021. * ENTRY (CM) = ADDRESS OF BCD DIGITS.
  4022. * (CM+1) = STARTING ADDRESS IN ERRLOG MESSAGE WHERE
  4023. * RESULT IS TO BE STORED.
  4024. * (CM+2) = STARTING ADDRESS IN BML MESSAGE WHERE RESULT
  4025. * IS TO BE STORED.
  4026. *
  4027. * EXIT DIGITS ADDED TO ERRLOG AND BML MESSAGES.
  4028. * (CM - CM+2) EACH INCREMENTED TO POINT TO THE FIRST
  4029. * BYTE AFTER THE ADDED DIGITS.
  4030. *
  4031. * USES CM.
  4032. *
  4033. * CALLS CBD.
  4034.  
  4035.  
  4036. CSD SUBR ENTRY/EXIT
  4037. LDI CM CONVERT BCD DIGITS ONE AND TWO
  4038. SHN -4
  4039. RJM CBD
  4040. LDI CM CONVERT BCD DIGITS THREE AND FOUR
  4041. LPN 17
  4042. SHN 14
  4043. LMM. 1,CM
  4044. SHN -10
  4045. RJM CBD
  4046. AOD CM
  4047. LDI CM CONVERT BCD DIGITS FIVE AND SIX
  4048. RJM CBD
  4049. AOD CM
  4050. UJN CSDX EXIT
  4051. SPACE 4
  4052. ** COMMON DECKS.
  4053.  
  4054.  
  4055. *CALL COMPC2D
  4056. SPACE 4
  4057. ERRNG 473-* OVERLAY OVERFLOWS PRU
  4058. RSTR RESTORE INSTRUCTIONS
  4059. TITLE 0RI - UNIT RESERVE PROCESSOR.
  4060. QUAL 0RI
  4061. IDENT 0RI,PRSX "HN" UNIT RESERVE PROCESSOR.
  4062. *COMMENT 6DI - "HN" UNIT RESERVE PROCESSOR.
  4063. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  4064. SPACE 4
  4065. *** UNIT RESERVE PROCESSOR.
  4066. * R. J. THIELEN. 75/11/20.
  4067. * W. E. GOEBEL. 78/03/06.
  4068. * K. F. REHM. 84/07/12.
  4069. SPACE 4
  4070. *** THE UNIT RESERVE PROCESSOR IS USED IN CASES WHERE 844
  4071. * DRIVES ARE CONNECTED TO MORE THAN ONE CONTROLLER, AND THE
  4072. * CONTROLLER WHICH IS CURRENTLY HOLDING DRIVES RESERVED IS
  4073. * INOPERATIVE. THE PROCESSOR ISSUES A *GRENADE* FUNCTION TO
  4074. * THE FUNCTIONING CONTROLLER, WHICH RELEASES ALL 844 DRIVES
  4075. * RESERVED BY THE INOPERATIVE CONTROLLER.
  4076. SPACE 4
  4077. * REDEFINE INSTRUCTIONS FOR LOCATION FREE EXECUTION.
  4078.  
  4079. RIREL REDEFINE INSTRUCTIONS
  4080. PRS SPACE 4,10
  4081. *** PRS - PRESET UNIT RESERVE PROCESSOR.
  4082. *
  4083. * EXIT (A) = MAIN PROCESSOR ENTRY ADDRESS.
  4084.  
  4085.  
  4086. ORG 5
  4087. PRS SUBR ENTRY/EXIT
  4088. LDC RUR
  4089. ADD LA
  4090. UJN PRSX EXIT
  4091. RUR SPACE 4,10
  4092. ** RUR - RELEASE UNIT RESERVES.
  4093. *
  4094. * ENTRY (T5) = EST ORDINAL OF EQUIPMENT.
  4095. * (T6) = LEGAL TRACK NUMBER.
  4096. * (T7) = LEGAL SECTOR NUMBER.
  4097. *
  4098. * CALLS RDS.
  4099. *
  4100. * MACROS SETMS.
  4101.  
  4102.  
  4103. RUR SUBR ENTRY/EXIT
  4104. SETMS PIO,(DF,NS)
  4105. LDC LDNI+FCGR
  4106. STM. LDAA
  4107. LDM RURA
  4108. STM. LDAB
  4109. LDM RURB
  4110. STM. RDSA
  4111. RJM. RDS ISSUE GRENADE FUNCTION
  4112. ENDMS
  4113. UJN RURX RETURN
  4114.  
  4115. RURA BSS 0
  4116. LOC LDAB
  4117. UJN LDA7 AVOID OUTPUT OF DISK ADDRESS
  4118. LOC *O
  4119.  
  4120. RURB BSS 0
  4121. LOC RDSA
  4122. UJN RDS4 AVOID ISSUING FURTHER FUNCTIONS
  4123. LOC *O
  4124.  
  4125.  
  4126. BSS 0
  4127. ERRNG 473-* OVERLAY OVERFLOWS PRU
  4128. RSTR RESTORE INSTRUCTIONS
  4129. TITLE 0SI - SERVO TIMING PROCESSOR.
  4130. QUAL 0SI
  4131. IDENT 0SI,PRSX "HN" SERVO TIMING PROCESSOR.
  4132. COMMENT 82/02/26. 82/10/23. 6DI - "HN" SERVO TIMING PROCESSOR.
  4133. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  4134. SPACE 4,10
  4135. *** SERVO TIMING PROCESSOR.
  4136. * R. J. THIELEN. 75/11/20.
  4137. * W. E. GOEBEL. 78/03/06.
  4138. * T. J. CALLAGHAN. 83/03/09.
  4139. SPACE 4,10
  4140. *** THE SERVO TIMING PROCESSOR PERFORMS SERVO
  4141. * ADJUSTMENTS FOR 885 DRIVES.
  4142. SPACE 4,10
  4143. * REDEFINE INSTRUCTIONS FOR LOCATION FREE EXECUTION.
  4144.  
  4145. RIREL REDEFINE INSTRUCTIONS
  4146. PRS SPACE 4,10
  4147. *** PRS - PRESET PACK SERIAL PROCESSOR.
  4148. *
  4149. * ENTRY ((LA)-1) = 3/,9/ EQ.
  4150. * EQ = EST ORDINAL.
  4151. *
  4152. * EXIT (A) = MAIN PROCESSOR ENTRY ADDRESS.
  4153. * (T5) = EST ORDINAL.
  4154. * (T6) = TRACK.
  4155. * (T7) = SECTOR.
  4156. * PACK SERIAL PROCESSOR INITIALIZED.
  4157. * MASS STORAGE DRIVER INITIALIZED AND MODIFIED TO READ
  4158. * THE APPROPRIATE SECTOR.
  4159. *
  4160. * USES T5.
  4161. *
  4162. * MACROS SETMS.
  4163.  
  4164.  
  4165. ORG 5
  4166. PRS SUBR ENTRY/EXIT
  4167. LDM -1 SET EST ORDINAL
  4168. LPC 777
  4169. STD T5
  4170. SETMS PIO,(DF,NS)
  4171. LDD LA ABSOLUTIZE ADDRESS
  4172. RAM FTCA
  4173. SBN TFTC-FTC RETURN PROCESSOR ADDRESS
  4174. UJN PRSX RETURN
  4175. FTC SPACE 4,10
  4176. ** FTC - FUNCTION SERVO DIFFERENCE TIMING COUNTER.
  4177. *
  4178. * ENTRY (T7) = LOGICAL UNIT * SINGLE UNIT SECTOR LIMIT.
  4179. *
  4180. * EXIT (A) = 0 IF TIMING TOO LARGE.
  4181. * (A) .LT. 0 IF DISK ERROR.
  4182. * (A) = SERVO TIMING AVERAGED OVER 20 SAMPLES.
  4183. *
  4184. * USES T1, T3.
  4185. *
  4186. * CALLS RDS.
  4187. *
  4188. * MACROS ENDMS, SETMS.
  4189.  
  4190.  
  4191. FTC3 ENDMS
  4192.  
  4193. FTC SUBR ENTRY/EXIT
  4194. LDN 2 SET DRIVER
  4195. STM. FNCA
  4196. LDN TFTCL-1 MOVE CODE TO *RDS*
  4197. STD T1
  4198. FTC1 LDM. TFTC,T1
  4199. FTCA EQU *-1
  4200. STM. RDSC,T1
  4201. SOD T1
  4202. PJN FTC1 IF MORE TO MOVE
  4203. LDN 20 SET TIMING LOOP COUNTER
  4204. STD T3
  4205. FTC2 LDC BFMS INPUT TIMING SAMPLE
  4206. RJM. RDS
  4207. MJN FTCX IF ERROR
  4208. LDM. BFMS
  4209. NJN FTC3 IF TIMING DATA TOO LARGE
  4210. LDM. BFMS+1 PROCESS TIMING SAMPLE
  4211. RAM FTCB+1
  4212. SHN -14
  4213. RAM FTCB
  4214. SOD T3
  4215. NJN FTC2 IF MORE SAMPLES TO PROCESS
  4216. ENDMS
  4217. FTCB LDC 0 TOTAL OF TIMING SAMPLES
  4218. SHN -4
  4219. LJM FTCX RETURN
  4220.  
  4221. TFTC BSS 0 CODE TO OVERLAY *RDS*
  4222. LOC RDSC
  4223. RJM. LDA SEEK TO CYLINDER 0
  4224. RJM FTD FUNCTION TIMING DIFFERENCE COUNTER
  4225. UJN RDSA INPUT TIMING DATA
  4226. BSS RDSA-* SPARES
  4227. RDSA LDN FCTD INPUT TIMING DATA
  4228. LOC *O
  4229. TFTCL EQU *-TFTC
  4230. FTC SPACE 4,10
  4231. ** FTD - FUNCTION TIMING DIFFERENCE COUNTER.
  4232.  
  4233.  
  4234. FTD SUBR ENTRY/EXIT
  4235. LDM. FNCC SET FUNCTION
  4236. ADN 40
  4237. STM FTDA
  4238. LDM. FNCB SET TEST
  4239. STM FTDB
  4240. LDN FCFT FUNCTION TIMING DIFFERENCE COUNTER
  4241. FTDA FAN 0+40
  4242. LDD TH
  4243. STD T1
  4244. STD T2
  4245. FTDB CON 0,RDSA
  4246. * IJM RDSA,CH IF FUNCTION ACCEPTED
  4247. SOD T1
  4248. PJN FTDB IF NOT TIME OUT
  4249. SOD T2
  4250. PJN FTDB IF NOT TIME OUT
  4251. UJN FTDX RETURN
  4252. SPACE 4
  4253. ERRNG 473-* OVERLAY OVERFLOWS PRU
  4254. RSTR RESTORE INSTRUCTIONS
  4255. TITLE 0CI - FIRMWARE IDENT PROCESSOR.
  4256. QUAL 0CI
  4257. IDENT 0CI,PRSX "HN" FIRMWARE IDENT PROCESSOR.
  4258. *COMMENT 6DI - "HN" FIRMWARE IDENT PROCESSOR.
  4259. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  4260. SPACE 4
  4261. *** FIRMWARE IDENT PROCESSOR.
  4262. * R. J. THIELEN. 75/11/20.
  4263. * W. E. GOEBEL. 78/03/06.
  4264. SPACE 4
  4265. *** THE FIRMWARE IDENT PROCESSOR OBTAINS DETAILED STATUS
  4266. * FOR A SPECIFIED EQUIPMENT, CHANNEL AND LOGICAL UNIT, EXTRACTS
  4267. * THE FIRMWARE REVISION NUMBER AND PLACES THAT INFORMATION IN A
  4268. * DAYFILE MESSAGE THAT IT RETURNS TO THE CALLING PROGRAM.
  4269. SPACE 4
  4270. * REDEFINE INSTRUCTIONS FOR LOCATION FREE EXECUTION.
  4271.  
  4272. RIREL REDEFINE INSTRUCTIONS
  4273. SPACE 4,10
  4274. ** COMMON DECKS.
  4275.  
  4276.  
  4277. *CALL COMSDFS
  4278. PRS SPACE 4,10
  4279. *** PRS - PRESET FIRMWARE IDENTIFICATION PROCESSOR.
  4280. *
  4281. * ENTRY ((LA)-1) = 3/ FN,9/ EQ.
  4282. * FN = FUNCTION NUMBER.
  4283. * 0 = CHANNEL CONTROLWARE IDENTIFICATION.
  4284. * 1 = CONTROL MODULE CONTROLWARE IDENTIFICATION.
  4285. *
  4286. * EXIT (A) = MAIN PROCESSOR ENTRY ADDRESS.
  4287. * (T5) = EST ORDINAL.
  4288. * FIRMWARE IDENTIFICATION PROCESSOR INITIALIZED.
  4289. *
  4290. * USES T5, T7, CM - CM+4.
  4291. *
  4292. * MACROS SETMS.
  4293.  
  4294.  
  4295. ORG 5
  4296. PRS SUBR ENTRY/EXIT
  4297. LDD LA ABSOLUTIZE MESSAGE ADDRESSES
  4298. RAM TDMA
  4299. RAM TDMA+1
  4300. LDM -1 SET EST ORDINAL
  4301. LPC 777
  4302. STD T5
  4303. SETMS PIOCH,(DF,NR,NS)
  4304. LDD CM+4 GET ALGORITHM INDEX FROM MST
  4305. SHN 3
  4306. ADN DILL
  4307. CRD CM
  4308. LDD CM+4
  4309. LPN 77
  4310. RAM FIPC
  4311. STM PRSA
  4312. ADC -AIIB-TDAI
  4313. MJN PRS2 IF NOT ISD
  4314. SBK AIIE-AIIB
  4315. MJN PRS3 IF ISD
  4316. SBK AIDC-AIIE
  4317. ERRNG AIDC-AIIE ALGORITHM INDEXES OUT OF ORDER
  4318. MJN PRS2 IF NOT FSC, 7165 NOR ISD
  4319. STD T0
  4320. LDN ARNW-FRNW SET ADAPTOR REVISION NUMBER WORD
  4321. RAM FIPF
  4322. LDD T0
  4323. ZJN PRS5 IF 7165/895 EQUIPMENT
  4324. PRS2 UJN PRS6 MODIFY DRIVER
  4325.  
  4326. * MODIFY OVERLAY FOR EITHER THE 7255 ADAPTOR OR FOR A CONTROL
  4327. * MODULE.
  4328.  
  4329. PRS3 LDM -1
  4330. SHN 0-11
  4331. ZJN PRS5 IF 7255 ADAPTOR
  4332. LDM PRSA
  4333. ADK -AIDD-TDAI
  4334. ZJN PRS4 IF *DD* DEVICE TYPE
  4335. LDN /CNTL/T424-/CNTL/T422 (CONTROL MODULE II)
  4336. PRS4 ADN /CNTL/T422 (CONTROL MODULE I)
  4337. STM **
  4338. PRSA EQU *-1 (MODIFY CONTROLWARE INDEX TABLE CONTENTS)
  4339. LDN PSNI
  4340. STM FIPE
  4341. LDN HI0104-HI0101
  4342. RAM MSGB+1
  4343. PRS5 LDN 1RD-1RA
  4344. RAM MSGA+5
  4345. STM MSGB+10
  4346. PRS6 LDC LDNI+FCDS SET DRIVER TO READ *DETAILED STATUS*
  4347. STM. RDSA
  4348. LDM -1
  4349. SHN 0-11
  4350. NJN PRS7 IF CONTROL MODULE FIRMWARE IDENTIFICATION
  4351. LDD HN ENABLE A BRANCH TO READ *DETAILED STATUS*
  4352. ERRNZ LJMI-100 ADJUST IF VALUE CHANGES
  4353. STM. LDAC
  4354. LDC RDS2
  4355. STM. LDAC+1
  4356. PRS7 LDN DSLN
  4357. STM. FNCA
  4358. LDC FIP
  4359. ADD LA
  4360. LJM PRSX EXIT
  4361.  
  4362. MSGA DATA C*CH00 MA722-A00,CM0.*
  4363.  
  4364. MSGB CON DM0401 MESSAGE ID
  4365. CON HI0101 MESSAGE SYMPTOM
  4366. CON 0 CHANNEL (OCTAL)
  4367. CON 0 (CONTROL MODULE EQUIPMENT NUMBER)
  4368. CON 0 RESERVED FOR CDC
  4369. DATA 10A MA722-AYY FIRMWARE REVISION LEVEL (DISPLAY CODE)
  4370. MSGBL EQU *-MSGB BML MESSAGE LENGTH
  4371. TDMA SPACE 4,10
  4372. ** TDMA - TABLE OF DAYFILE MESSAGE ADDRESSES.
  4373.  
  4374.  
  4375. TDMA BSS 0
  4376. CON MSGA ERRLOG MESSAGE ADDRESS
  4377. CON MSGB-MSGA BML MESSAGE ADDRESS
  4378. FIP SPACE 4
  4379. *** FIP - FIRMWARE IDENTIFICATION PROCESSOR.
  4380. *
  4381. * ENTRY (T4) = CHANNEL.
  4382. * (T5) = EST ORDINAL.
  4383. *
  4384. * EXIT (A) = 6/BL, 12/TA.
  4385. * BL = BML MESSAGE LENGTH.
  4386. * TA = ADDRESS OF MESSAGE PARAMETER BLOCK.
  4387. * .LT. 0 IF MASS STORAGE ERROR.
  4388. * (T5) = UNCHANGED.
  4389. * (BFMS) = DETAILED STATUS.
  4390. *
  4391. * USES T3, T6, T7.
  4392. *
  4393. * CALLS CDD, COD, RDS.
  4394. *
  4395. * MACROS ENDMS.
  4396.  
  4397.  
  4398. FIP SUBR ENTRY/EXIT
  4399. LDN 0
  4400. STD T6 CLEAR LOGICAL ADDRESS
  4401. STD T7
  4402. LDC BFMS READ DETAILED STATUS
  4403. RJM. RDS
  4404. MJN FIPX IF ERROR
  4405. ENDMS
  4406.  
  4407. * ADD CHANNEL NUMBER TO THE ERRLOG AND BML MESSAGES.
  4408.  
  4409. LDD T4 PUT CHANNEL IN MESSAGE
  4410. STM MSGB+2
  4411. RJM COD
  4412. STM MSGA+1
  4413.  
  4414. * ADD FIRMWARE TYPE TO ERRLOG AND BML MESSAGES.
  4415.  
  4416. LDM TDAI
  4417. FIPC EQU *-1
  4418. NJN FIP4 IF CONTROLWARE TYPE ALREADY KNOWN
  4419. LDM. BFMS+FRNW
  4420. SHN -12
  4421. SHN 1
  4422. FIP4 ADD LA
  4423. ADC FIPH
  4424. STD T3
  4425. LDI T3
  4426. STM MSGA+3
  4427. STM MSGB+6
  4428. LDM. 1,T3
  4429. STM MSGA+4
  4430. STM MSGB+7
  4431.  
  4432. * ADD REVISION NUMBER TO ERRLOG AND BML MESSAGES. IF
  4433. * PROCESSING A CONTROL MODULE, ADD THE CONTROL MODULE
  4434. * EQUIPMENT NUMBER TO THE MESSAGES.
  4435.  
  4436. LDC MSGA+7
  4437. ADD LA
  4438. STD T3
  4439. UJN FIP6 CHANNEL FIRMWARE IDENTIFICATION
  4440. * PSN (CONTROL MODULE FIRMWARE IDENTIFICATION)
  4441. FIPE EQU *-1
  4442. LDM. BFMS+FRNW GET CONTROL MODULE EQUIPMENT NUMBER
  4443. SHN -3
  4444. LPN 7
  4445. STM MSGB+3
  4446. ADC 2RM0
  4447. STM MSGA+10
  4448. LDN 11-7
  4449. RAD T3
  4450. LDM. BFMS+CMNW
  4451. LPN 37
  4452. UJN FIP7 ADD REVISION NUMBER
  4453.  
  4454. FIP6 LDM. BFMS+FRNW
  4455. * LDM. BFMS+ARNW (FSC AND 7165 EQUIPMENTS)
  4456. FIPF EQU *-1
  4457. SHN -6
  4458. LPN 17
  4459. FIP7 RJM CDD
  4460. STM MSGA+6
  4461. STM MSGB+11
  4462.  
  4463. * TERMINATE THE ERROR LOG MESSAGE.
  4464.  
  4465. LDC 2R.
  4466. STI T3
  4467. LDN 0
  4468. STM. 1,T3
  4469. LDC TDMA+MSGBL*10000 SET TABLE ADDRESS, BML MSG LENGTH
  4470. ADD LA
  4471. LJM FIPX RETURN
  4472.  
  4473.  
  4474. FIPH BSS 0
  4475. LOC 0
  4476. QUAL CNTL
  4477. T710 DATA 4RA710 HALF TRACK CONTROLWARE
  4478. T454 DATA 4RA454 FSC ADAPTOR CONTROLWARE
  4479. T401 DATA 4RA401 FULL TRACK CONTROLWARE
  4480. T721 DATA 4RA721 FMD CONTROLWARE
  4481. T722 DATA 4RA722 DEMA/PFMD CONTROLWARE
  4482. T462 DATA 4RA462 7255 ADAPTOR CONTROLWARE
  4483. T422 DATA 4RH422 CONTROL MODULE I CONTROLWARE
  4484. T424 DATA 4RH424 CONTROL MODULE II CONTROLWARE
  4485. T464 DATA 4RA464 7165 CONTROLWARE
  4486. QUAL *
  4487. LOC *O
  4488.  
  4489.  
  4490. TDAI INDEX
  4491. INDEX AIDI,0
  4492. INDEX AIDJ,0
  4493. INDEX AIDM,0
  4494. INDEX AIDK,0
  4495. INDEX AIDL,0
  4496. INDEX AIDQ,0
  4497. INDEX AIDR,0
  4498. INDEX AIDD,/CNTL/T462
  4499. INDEX AIDG,/CNTL/T462
  4500. INDEX AIDB,/CNTL/T722
  4501. INDEX AIDC,/CNTL/T464
  4502. INDEX AIDX,/CNTL/T401
  4503. INDEX AIDY,/CNTL/T401
  4504. INDEX AIDZ,/CNTL/T401
  4505. INDEX AIDA,/CNTL/T401
  4506. INDEX AIDS
  4507. CDD SPACE 4,10
  4508. ** CDD - CONVERT TWO DIGITS TO DECIMAL DISPLAY CODE.
  4509. *
  4510. * ENTRY (A) = NUMBER TO CONVERT.
  4511. *
  4512. * EXIT (A) = DISPLAY CODE VALUE.
  4513. *
  4514. * USES T0 - T1.
  4515.  
  4516.  
  4517. CDD2 ADN 10D+1R0
  4518. SHN 14 POSITION UNITS
  4519. ADD T0
  4520. SHN 6
  4521.  
  4522. CDD SUBR ENTRY/EXIT
  4523. STD T1 SAVE NUMBER
  4524. LDN 1R0 PRESET TENS
  4525. STD T0
  4526. CDD1 LDD T1 COUNT 10
  4527. SBN 10D
  4528. MJN CDD2 IF CONVERSION COMPLETE
  4529. STD T1
  4530. AOD T0
  4531. UJN CDD1 LOOP TO END OF CONVERSION
  4532. COD SPACE 4,10
  4533. ** COD - CONVERT TWO DIGITS TO OCTAL DISPLAY CODE.
  4534. *
  4535. * ENTRY (A) = NUMBER TO CONVERT.
  4536. *
  4537. * EXIT (A) = DISPLAY CODE VALUE.
  4538. *
  4539. * USES T0.
  4540.  
  4541.  
  4542. COD SUBR ENTRY/EXIT
  4543. STD T0
  4544. SHN 3
  4545. LMD T0
  4546. SCN 70
  4547. ADC 2R00
  4548. UJN CODX RETURN
  4549.  
  4550.  
  4551. BSS 0
  4552. ERRNG 473-* OVERLAY OVERFLOWS PRU
  4553. RSTR RESTORE INSTRUCTIONS
  4554. TITLE 0SC - SWEEP CYCLING PROCESSOR.
  4555. QUAL 0SC
  4556. IDENT 0SC,SCPX
  4557. *COMMENT 6DI - SWEEP CYCLING PROCESSOR.
  4558. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  4559. 0SC SPACE 4,10
  4560. *** 0SC - SWEEP CYCLING PROCESSOR.
  4561. * R. M. DANISCH. 87/01/01.
  4562. 0SC SPACE 4,10
  4563. *** *0SC* IS CALLED BY *1MV* TO EXECUTE THE NEXT SWEEP CYCLING
  4564. * SEEK SEQUENCE FOR A SPECIFIED MASS STORAGE DEVICE. THE SEEK
  4565. * SEQUENCE WILL BE EXECUTED FOR EACH PHYSICAL UNIT OF A
  4566. * MULTI-UNIT DEVICE. WORD *SCLL* OF THE MST ENTRY CONTAINS THE
  4567. * CYLINDER NUMBER USED FOR THE LAST SEEK IN THE PREVIOUS
  4568. * SEQUENCE.
  4569. 0SC SPACE 4,10
  4570. *** ENTRY CONDITIONS.
  4571. *
  4572. *
  4573. * (IR+2) = EST ORDINAL.
  4574. 0SC SPACE 4,10
  4575. * DIRECT CELL ASSIGNMENTS.
  4576.  
  4577.  
  4578. CN EQU 20 - 24 CM WORD BUFFER
  4579. AB EQU 25 - 31 CM WORD BUFFER
  4580. SU EQU 32 SINGLE UNIT SECTOR LIMIT
  4581. SC EQU 33 SEEK COUNT
  4582. SI EQU 34 SEEK INCREMENT
  4583. TI EQU 35 *TDVP* TABLE INDEX
  4584. MS EQU 36 MST ENTRY ADDRESS / 10B
  4585. 0SC SPACE 4,10
  4586. * REDEFINE INSTRUCTIONS FOR LOCATION FREE EXECUTION.
  4587.  
  4588. RIREL
  4589. SCP SPACE 4,10
  4590. ORG 5
  4591.  
  4592. ** SCP - SWEEP CYCLING PROCESSOR.
  4593.  
  4594.  
  4595. SCP SUBR ENTRY/EXIT
  4596.  
  4597. * PRESET *0SC*.
  4598.  
  4599. LDD IR+2
  4600. STD T5
  4601. SETMS PIO,(NS)
  4602. LDD CM+4 SAVE MST ENTRY ADDRESS
  4603. STD MS
  4604. SHN 3
  4605. ADN MDGL READ SINGLE UNIT SECTOR LIMIT
  4606. CRD AB
  4607. ADK SCLL-MDGL READ SWEEP CYCLING CONTROL WORD
  4608. CRD CN
  4609. LDD AB+1 SET SINGLE UNIT SECTOR LIMIT
  4610. LPC 3777
  4611. STD SU
  4612. LDD LA INITIALIZE *TDVP* TABLE INDEX
  4613. SBN 5
  4614. STD TI
  4615. SCP1 LDN 5 ADVANCE TO NEXT TABLE ENTRY
  4616. RAD TI
  4617. SBD LA
  4618. LMC TDVPL
  4619. ZJP SCPX IF SWEEP CYCLING NOT SUPPORTED ON DEVICE
  4620. LDM. TDVP,TI
  4621. LMD CM+3
  4622. NJN SCP1 IF NOT DEVICE TYPE MATCH
  4623. STD T7
  4624. LDC SCP9 DISABLE ERROR PROCESSING
  4625. ADD LA
  4626. STM. ERRA
  4627. LDD HN AVOID DATA TRANSFER
  4628. STM. DSTB
  4629. ERRNZ LJMI-100 CODE DEPENDS ON VALUE
  4630.  
  4631. * POSITION TO STARTING CYLINDER.
  4632.  
  4633. SCP2 LDN 0 CAUSE IMMEDIATE EXIT IF ERROR ON 1ST SEEK
  4634. STD SC
  4635. LDN SCP4 AVOID DATA TRANSFER
  4636. ADD LA
  4637. STM. DSTB+1
  4638. LDD CN
  4639. ADN 1
  4640. LMM. TDVP+1,TI
  4641. ZJN SCP3 IF PRIOR SEQUENCE ENDED ON LAST CYLINDER
  4642. LDD CN SET INITIAL POSITION
  4643. SHN 1 CONVERT CYLINDER TO LOGICAL TRACK
  4644. SCP3 STD T6
  4645. * LDC BFMS ISSUE READ REQUEST FOR SEEK EXECUTION
  4646. RJM. RDS CALL DRIVER TO ISSUE SEEK
  4647. SCP4 DELAY 8D*17D DELAY FOR ONE DISK REVOLUTION
  4648.  
  4649. * ISSUE SEEK SEQUENCE.
  4650.  
  4651. LDC SCP8 AVOID DATA TRANSFER
  4652. ADD LA
  4653. STM. DSTB+1
  4654. LDM. TDVP+2,TI SET SMALL SEEK COUNT
  4655. STD SC
  4656. LDM. TDVP+3,TI SET SMALL SEEK INCREMENT
  4657. SCP5 STD SI
  4658. SCP6 LDD SI ADVANCE POSITION BY SEEK INCREMENT
  4659. SHN 1
  4660. RAD T6
  4661. SHN -1
  4662. SBM. TDVP+1,TI
  4663. MJN SCP7 IF NOT BEYOND END OF DEVICE
  4664. LDN 0 PERFORM ONLY ONE SEEK AT END OF DEVICE
  4665. STD SC
  4666. LDM. TDVP+1,TI SEEK TO LAST CYLINDER
  4667. SBN 1
  4668. SHN 1
  4669. STD T6
  4670. * LDC BFMS ISSUE READ REQUEST WITH NO DATA TRANSFER
  4671. SCP7 RJM. RDS CALL DRIVER TO ISSUE SEEK
  4672. SCP8 DELAY 8D*17D DELAY FOR ONE DISK REVOLUTION
  4673. SCP9 SOD SC DECREMENT SEEK COUNT
  4674. MJN SCP10 IF POSITIONING COMPLETE
  4675. NJN SCP6 IF SMALL SEEK SEQUENCE INCOMPLETE
  4676. LDM. TDVP+4,TI SET MAJOR POSITION INCREMENT
  4677. UJN SCP5 CALCULATE NEXT SEEK ADDRESS
  4678.  
  4679. * RELEASE THE CURRENT DRIVE AND CHECK FOR ANOTHER (MULTI-UNIT).
  4680.  
  4681. SCP10 ENDMS
  4682. LDD SU ADVANCE TO NEXT UNIT
  4683. RAD T7
  4684. SBM. SLM
  4685. MJP SCP2 IF MORE UNITS TO PROCESS
  4686.  
  4687. * UPDATE THE SWEEP CYCLING CONTROL WORD IN THE MST ENTRY.
  4688.  
  4689. LDD T6 STORE FINAL POSITION IN *SCLL*
  4690. SHN -1
  4691. STD CN
  4692. LDK RTCL STORE NEW TIME STAMP IN *SCLL*
  4693. CRD CM
  4694. LDD CM+1
  4695. STD CN+1
  4696. LDD MS UPDATE *SCLL*
  4697. SHN 3
  4698. ADN SCLL
  4699. CWD CN
  4700. LJM SCPX RETURN
  4701. TDVP SPACE 4,10
  4702. ** TDVP - TABLE OF DEVICE PARAMETERS.
  4703.  
  4704.  
  4705. TDVP BSS 0
  4706.  
  4707. CON 2RDB DEVICE TYPE *DB*
  4708. CON CYUNDB NUMBER OF CYLINDERS ON DEVICE
  4709. CON 3 NUMBER OF SMALL INCREMENT SEEKS
  4710. CON 12D SIZE OF SMALL INCREMENT SEEK
  4711. CON 93D SIZE OF LARGE INCREMENT SEEK
  4712.  
  4713. CON 2RDD DEVICE TYPE *DD*
  4714. CON CYUNDD NUMBER OF CYLINDERS ON DEVICE
  4715. CON 4 NUMBER OF SMALL INCREMENT SEEKS
  4716. CON 13D SIZE OF SMALL INCREMENT SEEK
  4717. CON 50D SIZE OF LARGE INCREMENT SEEK
  4718.  
  4719. CON 2RDG DEVICE TYPE *DG*
  4720. CON CYUNDG NUMBER OF CYLINDERS ON DEVICE
  4721. CON 6 NUMBER OF SMALL INCREMENT SEEKS
  4722. CON 16D SIZE OF SMALL INCREMENT SEEK
  4723. CON 80D SIZE OF LARGE INCREMENT SEEK
  4724.  
  4725. CON 2RDM DEVICE TYPE *DM*
  4726. CON CYUNDM NUMBER OF CYLINDERS ON DEVICE
  4727. CON 3 NUMBER OF SMALL INCREMENT SEEKS
  4728. CON 12D SIZE OF SMALL INCREMENT SEEK
  4729. CON 93D SIZE OF LARGE INCREMENT SEEK
  4730.  
  4731. CON 2RDQ DEVICE TYPE *DQ*
  4732. CON CYUNDQ NUMBER OF CYLINDERS ON DEVICE
  4733. CON 3 NUMBER OF SMALL INCREMENT SEEKS
  4734. CON 12D SIZE OF SMALL INCREMENT SEEK
  4735. CON 93D SIZE OF LARGE INCREMENT SEEK
  4736.  
  4737. TDVPL BSS 0 LWA+1 OF TABLE
  4738. 0SC SPACE 4
  4739. OVERFLOW 5,ZSCL *0SC* OVERFLOWS PRU
  4740. TITLE 0SD - SPIN UP/DOWN ISMD DRIVES.
  4741. QUAL 0SD
  4742. IDENT 0SD,PRSX "HN" SPIN UP/DOWN MS DRIVES.
  4743. *COMMENT 6DI - SPIN UP/DOWN MS DRIVES.
  4744. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  4745. SPACE 4,10
  4746. *** 0SD - SPIN UP/DOWN MASS STORAGE DRIVES.
  4747. * K. F. REHM. 83/06/16.
  4748. SPACE 4,10
  4749. *** *0SD* IS USED TO SPINUP OR SPINDOWN THOSE MASS STORAGE
  4750. * DEVICES THAT SUPPORT SAID CAPABILITY. FOR ISMD TYPE
  4751. * DEVICES, THE DRIVER IS MODIFIED TO ISSUE A SPINUP OR
  4752. * SPINDOWN FUNCTION. FOR BUFFERED DEVICES, A FLAG IS
  4753. * SET IN THE BUFFERED I/O PHYSICAL UNIT TABLE TO BE
  4754. * PROCESSED BY DEVICE SPECIFIC DRIVERS.
  4755. SPACE 4,10
  4756. ** COMMON DECKS.
  4757.  
  4758.  
  4759. *CALL COMSHIO
  4760. SPACE 4,10
  4761. * REDEFINE INSTRUCTIONS FOR LOCATION FREE EXECUTION.
  4762.  
  4763. RIREL REDEFINE INSTRUCTIONS
  4764. PRS SPACE 4,10
  4765. ** PRS - PRESET SPINUP/DOWN PROCESSOR.
  4766. *
  4767. * EXIT (A) = PROCESSOR ENTRY ADDRESS.
  4768.  
  4769.  
  4770. ORG 5
  4771. PRS SUBR ENTRY/EXIT
  4772. LDD LA
  4773. RAM PRDC
  4774. LDN SUE RETURN SPINUP/SPINDOWN PROCESSOR ADDRESS
  4775. ADD LA
  4776. UJN PRSX EXIT
  4777. SUE SPACE 4,10
  4778. ** SUE - SPIN UP/DOWN AN ISD DRIVE.
  4779. *
  4780. * ENTRY ((LA)-1) = EST ORDINAL OF EQUIPMENT TO SPIN UP/DOWN.
  4781. * ((LA)-2) = 7/0,1/SF,4/0, WHERE
  4782. * SF = 0, IF TO SPIN UP EQUIPMENT.
  4783. * = 1, IF TO SPIN DOWN EQUIPMENT.
  4784. *
  4785. * EXIT ((LA)-1) = UNCHANGED.
  4786. * ((LA)-2) = UNCHANGED.
  4787. *
  4788. * USES CM - CM+4.
  4789. *
  4790. * CALLS ANU, PRD, WDS.
  4791. *
  4792. * MACROS MONITOR.
  4793.  
  4794.  
  4795. SUE4 RJM ANU ADVANCE TO THE NEXT PHYSICAL UNIT
  4796. NJN SUE1 IF MORE UNITS TO SPIN UP
  4797.  
  4798. SUE SUBR ENTRY/EXIT
  4799. RJM PRD PRESET DRIVER
  4800. ZJN SUEX IF NOT AN ISD DRIVE
  4801. SUE1 LDN 0
  4802. STM CGSA
  4803. LDN CM+1
  4804. RJM. WDS
  4805. LPN 17
  4806. LMN NRDE
  4807. NJN SUE4 IF HARDWARE FAILURE
  4808. STD CM CLEAR FLASHING *MS2W* MESSAGE
  4809. LDD CP
  4810. ADK MS2W
  4811. CWD CM
  4812. LDM -2
  4813. NJN SUE4 IF SPINDOWN REQUEST
  4814. SUE2 LDD MA
  4815. CWD T4
  4816. MONITOR LDAM
  4817. LDD MA
  4818. ADN 1
  4819. CRD CM
  4820. LDN 2 IGNORE *DRIVE BUSY* GENERAL STATUS
  4821. STM CGSA
  4822. LDM -2
  4823. ZJN SUE3 IF SPINUP REQUEST
  4824. LDN FCSD&FCSU SET SPINDOWN
  4825. SUE3 LMK FCSU SET SPINUP
  4826. LJM. WDS4 ISSUE SPINUP/DOWN FUNCTION
  4827. ANU SPACE 4,10
  4828. ** ANU - ADVANCE TO NEXT PHYSICAL UNIT.
  4829. *
  4830. * *ANU* WILL DELAY AT LEAST 10 MSEC TO AVOID POWER FLUCTUATIONS
  4831. * WHEN MORE THAN ONE UNIT IS TO BE SPUN UP/DOWN.
  4832. *
  4833. * ENTRY (T6) = NUMBER OF UNITS REMAINING TO BE SPUN UP/DOWN.
  4834. *
  4835. * EXIT (A) .NE. 0, IF NEXT UNIT EXISTS.
  4836. *
  4837. * USES CM.
  4838. *
  4839. * MACROS DELAY, ENDMS.
  4840.  
  4841.  
  4842. ANU2 ENDMS
  4843. * LDN 0 (A) = 0 IS *ENDMS* EXIT CONDITION
  4844.  
  4845. ANU SUBR ENTRY/EXIT
  4846. LDC 0 (SINGLE UNIT SECTOR LIMIT)
  4847. ANUA EQU *-1 SET BY *PRD*
  4848. RAD T7
  4849. SOD T6
  4850. MJN ANU2 IF NO MORE UNITS IN EQUIPMENT
  4851. DELAY 10D*8D DELAY 10 MILLISECONDS
  4852. PAUSE ST
  4853. LDN 1
  4854. UJN ANUX EXIT
  4855. CGS SPACE 4,10
  4856. ** CGS - CHECK GENERAL STATUS.
  4857. *
  4858. * *CGS* TRAPS ALL GENERAL STATUS FUNCTIONS ISSUED BY *6DI* TO
  4859. * THE CONTROLLER AND RETURNS TO CALLER IF EITHER A *0000*
  4860. * (OPERATION SUCCESSFUL) OR *0002* (DRIVE BUSY) STATUS IS
  4861. * ISSUED. THIS ALLOWS *0SD* TO CONTINUE SPINNING UP/DOWN
  4862. * OTHER DRIVES WITHOUT HAVING TO WAIT IN *DSWM* PROCESSING
  4863. * UNTIL THE CURRENT DRIVE FINISHES SPINNING UP/DOWN.
  4864. *
  4865. * ENTRY (A) = GENERAL STATUS.
  4866. *
  4867. * EXIT TO *SUE4* IF SPINUP AND NON-ERROR GENERAL STATUS.
  4868. * TO *SUE2* IF SPINDOWN AND NON-ERROR GENERAL STATUS.
  4869. * TO *LDA1* IF ERROR GENERAL STATUS.
  4870.  
  4871.  
  4872. CGS BSS 0 ENTRY
  4873. NJN CGS2 IF NOT *0000* GENERAL STATUS
  4874. CGS1 LJM. 0,CM RETURN TO CALLER
  4875.  
  4876. CGS2 STD CM+3 SAVE STATUS
  4877. LMC 0
  4878. * LMC 2 (IGNORE *DRIVE BUSY* GENERAL STATUS)
  4879. CGSA EQU *-1
  4880. ZJN CGS1 IF *DRIVE BUSY*
  4881. SHN 21-13
  4882. PJN CGS3 IF NO ERROR
  4883. LDN 0
  4884. STM CGSA
  4885. CGS3 LDD CM+3 RESTORE STATUS
  4886. LJM. LDA3 PROCESS STATUS
  4887. PRD SPACE 4,10
  4888. ** PRD - PRESET DRIVER.
  4889. *
  4890. * EXIT (A) = 0 IF DEVICE NOT CANDIDATE FOR SPINUP/SPINDOWN.
  4891. * (T5) = EST ORDINAL.
  4892. * (T6) = NUMBER OF UNITS - 1 IN EQUIPMENT.
  4893. *
  4894. * USES T6, T7, CM - CM+4.
  4895. *
  4896. * MACROS SETMS, SFA.
  4897.  
  4898.  
  4899. PRD6 LDM -2 SET FLAG VALUE
  4900. SHN -3
  4901. NJN PRD7 IF SPINDOWN REQUEST
  4902. LDN 4
  4903. ERRNZ SPDF+1-SPUF CODE DEPENDS ON VALUE
  4904. PRD7 LMN 1
  4905. ERRNZ DUNF+1-SPDF CODE DEPENDS ON VALUE
  4906. STM PRDA+4
  4907. LDC BIOL GET POINTER TO BUFFERED I/O TABLES
  4908. CRD CM
  4909. LDD CM+1 FETCH *PUT* TABLE POINTER WORD
  4910. SHN 14
  4911. LMD CM+2
  4912. ADN PUTP
  4913. CRD CM
  4914. LDD CM+4 SET FWA OF *UNCT* WORD IN *PUT*
  4915. ADK UNCT
  4916. STM PRDB
  4917. SHN -14
  4918. ADD CM+3
  4919. LPN 77 CLEAR FLAGS
  4920. LMC ADCI
  4921. STM PRDB-1
  4922. LDD CM NUMBER OF ENTRIES IN TABLE
  4923. STD T7
  4924. PRD8 SHN PUTLS READ UNIT DESCRIPTOR WORD
  4925. ADC 0
  4926. PRDB EQU *-1
  4927. CRD CM
  4928. STD CM+4 SAVE ADDRESS FOR MONITOR CALL
  4929. SHN -14
  4930. STD CM+3
  4931. LDD CM+1 CHECK EST ORDINAL
  4932. LMD T5
  4933. NJN PRD9 IF NOT REQUESTED DEVICE
  4934. LDN 1
  4935. STD CM+1
  4936. LDD MA STORE *UTEM* REQUEST IN MESSAGE BUFFER
  4937. CWM. PRDA,CM+1
  4938. PRDC EQU *-1
  4939. MONITOR UTEM SET FLAG FOR BUFFERED DEVICE DRIVER
  4940. SOD T6
  4941. MJN PRD10 IF NO MORE UNITS
  4942. PRD9 SOD T7
  4943. NJN PRD8 IF NOT END OF *PUT*
  4944. PRD10 LDN 0 DEVICE NOT CANDIDATE FOR SPINUP/SPINDOWN
  4945.  
  4946. PRD SUBR ENTRY/EXIT
  4947. LDM -1 SET EQUIPMENT
  4948. STD T5
  4949. SFA EST GET EST ENTRY
  4950. ADK EQDE
  4951. CRD CM
  4952. LDD CM
  4953. SHN 21-13
  4954. PJN PRD10 IF NOT A MASS STORAGE DEVICE
  4955. LDC TPRD-1 CHECK DEVICE TYPE
  4956. ADD LA
  4957. STD T1
  4958. PRD1 AOD T1
  4959. LDI T1
  4960. ZJN PRD10 IF NOT CANDIDATE FOR SPINUP/SPINDOWN
  4961. LMD CM+3
  4962. NJN PRD1 IF DEVICE TYPE DOES NOT MATCH
  4963. PRD2 LDD CM+4
  4964. SHN 3
  4965. ADN DDLL FETCH DEVICE UNIT COUNT
  4966. CRD T6
  4967. SBN DDLL-DILL GET DEVICE DEPENDENT PARAMETERS
  4968. CRD T7
  4969. LDD T6 CHECK FOR NULL EQUIPMENT
  4970. LPC 2007
  4971. STD T6 SAVE UNIT COUNT
  4972. SHN 21-12
  4973. MJP PRD10 IF NULL EQUIPMENT
  4974. LDD T7+3
  4975. SHN 21-12
  4976. MJP PRD6 IF BUFFERED DEVICE
  4977. LDD CM+4
  4978. SHN 3
  4979. ADN MDGL GET SINGLE UNIT SECTOR LIMIT
  4980. CRD CM
  4981. LDD CM+1 SECTOR LIMIT
  4982. LPC 3777
  4983. STM ANUA
  4984. SETMS PIO,(AD,DE,DF,NR,NS)
  4985. LDN 0
  4986. STD T7
  4987. LDD HN
  4988. ERRNZ LJMI-100B CODE USES *HN* TO CREATE *LJM*
  4989. STM. DSTA
  4990. STM. WDS2 MODIFY ROUTINES *WDS* AND *DST*
  4991. LDC CGS
  4992. ADD LA
  4993. STM. DSTA+1
  4994. LDM -2
  4995. ZJN PRD5 IF SPINUP REQUEST
  4996. LDK SUE2&SUE4
  4997. PRD5 LMK SUE4
  4998. ADD LA
  4999. STM. WDS2+1
  5000. LDC LDCI
  5001. STM. WDSD
  5002. LDK SUE4
  5003. ADD LA
  5004. STM. WDSD+1
  5005. LDN 1
  5006. STM. FNCA
  5007. LJM PRDX EXIT
  5008.  
  5009.  
  5010. PRDA VFD 1/0,5/PILL-UNCT,6/3,6/DUNF,42/0 *UTEM* REQUEST
  5011.  
  5012. TPRD BSS 0 CANDIDATE DEVICES FOR SPINUP/SPINDOWN
  5013. CON 2RDD 834
  5014. CON 2RDG 836
  5015. CON 2RDF 887 (4KB SECTOR)
  5016. CON 2RDH 887 (16KB SECTOR)
  5017. CON 0
  5018. SPACE 4,10
  5019. ERRNG 473-* OVERLAY OVERFLOWS PRU
  5020. RSTR RESTORE INSTRUCTIONS
  5021. SPACE 4
  5022. END