Table of Contents

1XY

Table Of Contents

  • [00009] 7165/895 (CCC) DMA DRIVER.
  • [00139] CONSTANTS, DEFINITIONS, AND MACROS.
  • [00249] TBLM - CREATE TABLE ENTRY MACRO.
  • [00272] CBTE - CONTROL BUFFER TABLE ENTRY.
  • [00287] CCBA - COMPUTE *CBT* ENTRY ADDRESS.
  • [00313] PUTE - PHYSICAL UNIT TABLE ENTRY.
  • [00328] CPTA - COMPUTE *PUT* ENTRY ADDRESS.
  • [00354] CSHN - GENERATE CALCULATED SHIFT INSTRUCTION.
  • [00376] EMBE - ERROR MESSAGE TABLE ENTRY.
  • [00391] MONITOR - ISSUE MONITOR FUNCTION.
  • [00417] MAIN PROGRAM.
  • [00418] MXY - 895 DMA DRIVER.
  • [00424] MST - MASTER MAIN PROGRAM.
  • [00440] TPOR - TABLE OF *PUT* ORDINALS.
  • [00457] CCR - CHECK FOR CHANNEL REQUESTED OR DOWN.
  • [00528] CCS - CHECK FOR CONSECUTIVE SECTOR REQUEST.
  • [00590] CDS - CRACK DETAILED STATUS.
  • [00676] CRL - CHECK FOR ERROR RETRY LIMIT REACHED.
  • [00735] CRQ - CHECK REQUEST QUEUE.
  • [00797] DCH - RELEASE CHANNEL.
  • [00822] ERR - PROCESS ERROR.
  • [00928] TEPF - TABLE OF ERROR PROCESSING FLAGS.
  • [00952] TMNE - TABLE OF ERROR CODE MNEMONICS.
  • [00961] TREC - TABLE OF RETRY COUNTS.
  • [00970] TSYM - TABLE OF BML SYMPTOM CODES.
  • [00979] FNC - FUNCTION CHANNEL.
  • [01031] FNN - FUNCTION CHANNEL NO ACTIVATE.
  • [01078] GDS - GET DETAILED STATUS.
  • [01115] GGS - GET GENERAL STATUS.
  • [01151] IBM - ISSUE BML MESSAGE.
  • [01323] IFI - INITIALIZE FOR I/O.
  • [01357] IIC - ISSUE I/O COMPLETION REQUEST.
  • [01392] IMF - ISSUE MONITOR FUNCTION.
  • [01412] ISF - ISSUE SEEK OPERATION.
  • [01482] MCA - MASTER CLEAR ADAPTER.
  • [01518] OVI - OBTAIN AND VERIFY *PUT* INTERLOCK.
  • [01595] PDT - PROCESS DATA TRANSFER.
  • [01642] PFR - PREPARE FOR RETRY ATTEMPT.
  • [01671] PRE - PRESET ERROR PROCESSOR.
  • [01749] RCH - REQUEST CHANNEL.
  • [01775] RHR - RELEASE HARDWARE RESERVES.
  • [01800] RIO - PERFORM READ I/O OPERATIONS.
  • [01867] RLC - RELOAD CCC CONTROLWARE IF NECESSARY.
  • [01970] RPI - RELEASE *PUT* INTERLOCK.
  • [02010] RTM - REQUEST TRACK FLAW IF MEDIA ERROR.
  • [02087] SAS - SAVE ADAPTER STATUS.
  • [02139] SCD - SET DRIVER DROPPED FLAG.
  • [02169] SSF - SET SUSPECT FLAG.
  • [02219] SUQ - SCAN UNIT QUEUE.
  • [02340] TEP - TERMINATE ERROR PROCESSING.
  • [02459] WFT - WAIT FOR TRANSFER COMPLETE.
  • [02562] WIO - PERFORM WRITE I/O OPERATIONS.
  • [02624] WTR - WRITE *T* REGISTER.
  • [02665] WTC - WRITE CONTROL INFORMATION TO THE CBT.
  • [02713] SPECIAL REQUEST PROCESSORS.
  • [02715] CBD - CONVERT BINARY CODED DECIMAL TO DISPLAY CODE.
  • [02744] CDD - CONVERT TWO DIGITS TO DECIMAL DISPLAY CODE.
  • [02769] CSD - CONVERT SIX BCD DIGITS TO DISPLAY CODE.
  • [02841] FLT - FLAW LOGICAL TRACK.
  • [02865] F8D - FORMAT 895 DEVICE.
  • [02955] PFM - PROCESS FLAW MAPS.
  • [03043] PSR - PROCESS SPECIAL REQUESTS.
  • [03157] RFS - READ FACTORY SECTORS.
  • [03222] WNB - WAIT NOT BUSY.
  • [03280] PRS - PRESET *1XY*.
  • [03621] CFR - CHECK FOR FORMAT REQUEST.
  • [03692] STA - SET TABLE ADDRESSES.

Source Code

1XY.txt
  1. IDENT 1XY,MXY
  2. 1XY TITLE 1XY - 7165/895 (CCC) DMA DRIVER.
  3. PERIPH
  4. BASE MIXED
  5. SST OSTE,OSTP
  6. *COMMENT 1XY - 7165/895 (CCC) DMA DRIVER.
  7. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  8. 1XY SPACE 4,15
  9. *** 1XY - 7165/895 (CCC) DMA DRIVER.
  10. *
  11. * G. S. ANDERSON. 04/30/84.
  12. * R. M. DANISCH. 02/01/86.
  13. * S. L. BETH. 08/01/86.
  14. 1XY SPACE 4,15
  15. *** *1XY* IS THE CYBER CHANNEL COUPLER (CCC) DMA DRIVER FOR THE
  16. * 7165/895 DISK STORAGE SUBSYSTEM.
  17. *
  18. * THE 7165/895 DISK DRIVES ARE SUPPORTED AS BUFFERED I/O
  19. * DEVICES. THE REQUESTS THAT ARE PROCESSED BY *1XY* ARE
  20. * POSTED BY *CPUMTR* IN THE BUFFERED I/O TABLES IN *CMR*.
  21. * *1XY* INTERLOCKS THE UNITS, LINKS THE REQUESTS, AND COMPLETES
  22. * THE REQUESTS BY ISSUING APPROPRIATE *BIOM* REQUESTS.
  23. *
  24. * *1XY* SCANS THROUGH THE *PUT* ENTRIES IN A CIRCULAR FASHION
  25. * LOOKING FOR REQUESTS TO PROCESS. ONCE A REQUEST IS FOUND
  26. * AND LINKED *1XY* USES THE PHYSICAL DISK AND UEM ADDRESSES IN
  27. * THE CORRESPONDING *CBT* ENTRY TO DETERMINE THE ACTION TO BE
  28. * TAKEN. *1XY* WILL ATTEMPT TO PROCESS CONSECUTIVE SECTOR
  29. * REQUESTS ON THE CURRENT UNIT UNTIL THE END OF THE CYLINDER
  30. * OR A CONSECUTIVE SECTOR REQUEST WAS NOT FOUND. AT THIS
  31. * POINT *1XY* WILL RESUME ITS SEARCH THROUGH THE *PUT* WITH THE
  32. * *PUT* ENTRY IMMEDIATELY FOLLOWING THE ONE JUST PROCESSED.
  33. SPACE 4,10
  34. ** MESSAGES.
  35. *
  36. * * 1XY - UNAUTHORIZED CALL.*
  37. * ISSUED TO THE SYSTEM DAYFILE IF *1XY* WAS NOT CALLED FROM
  38. * THE SYSTEM.
  39. *
  40. * * 1XY CHANNEL XX NOT RESPONDING.*
  41. * ISSUED TO INDICATE THE SELECTED CHANNEL DOES NOT RESPOND
  42. * TO BASIC CHANNEL FUNCTIONS.
  43. SPACE 4,10
  44. *** ERRLOG MESSAGES.
  45. *
  46. * *EQXXX,TKNNNN, MEDIA DEFECT ENCOUNTERED.*
  47. *
  48. * A MEDIA DEFECT HAS BEEN ENCOUNTERED ON EQUIPMENT WITH EST
  49. * ORDINAL ORD, LOGICAL TRACK NNNN. A REQUEST HAS BEEN ISSUED
  50. * TO AUTOMATICALLY FLAW THIS TRACK WHEN IT IS DROPPED.
  51. *
  52. * * CCHXX,MA464-DYY.*
  53. *
  54. * FIRMWARE THAT IS LOADED IN THE *CCC*.
  55. * XX = CONCURRENT CHANNEL NUMBER.
  56. * YY = LEVEL FOR FIRMWARE.
  57. *
  58. * *DCXXX, UYY,PS=ZZZZZZ.*
  59. *
  60. * PACK SERIAL NUMBER IDENTIFICATION.
  61. * XXX = EST ORDINAL.
  62. * YY = UNIT NUMBER.
  63. * ZZZZZZ = SERIAL NUMBER FOR HDA.
  64. *
  65. * * CCHXX, DCYYY, FORMAT FAILURE.*
  66. * * HUNG BUSY - GS = ZZZZ.*
  67. *
  68. * CHANNEL HUNG BUSY DURING FORMAT OPERATION.
  69. * XX = CHANNEL NUMBER.
  70. * YYY = EST ORDINAL.
  71. * ZZZZ = THE GENERAL STATUS.
  72.  
  73.  
  74. SPACE 4,10
  75. *** ORGANIZATION OF 7165/895 (MEASUREMENTS IN DECIMAL).
  76. *
  77. * EQUIPMENT TYPE *DC*
  78. *
  79. * PHYSICAL ORGANIZATION:
  80. *
  81. * CM WORDS/PHYSICAL SECTOR 2048
  82. * PHYSICAL SECTORS/PHYSICAL TRACK 3
  83. * PHYSICAL TRACKS/CYLINDER 15
  84. * CYLINDERS/DEVICE 885 * N (0<N<3)
  85. * CM WORDS/DEVICE 79,749,120 * N
  86. *
  87. * LOGICAL ORGANIZATION:
  88. *
  89. * CM WORDS/LOGICAL SECTOR 64
  90. * LOGICAL SECTORS/PHYSICAL SECTOR 32
  91. * LOGICAL SECTORS/LOGICAL TRACK 704 * N
  92. * LOGICAL TRACKS/CYLINDER 2
  93. * LOGICAL TRACKS/DEVICE 1770
  94. *
  95. * MAXIMUM DATA RATE 400.00 K CM WORDS/SECOND
  96. EJECT
  97. *** SPECIAL PROGRAMMING NOTES.
  98. *
  99. * THE FOLLOWING IS A LIST OF SPECIAL NOTES THAT SHOULD BE
  100. * READ AND UNDERSTOOD BEFORE ANY MODIFICATIONS ARE MADE TO
  101. * THIS PROGRAM.
  102. *
  103. *
  104. * 1) *1XM*, *1XY* AND *1HP* ARE VERY SIMILAR IN DESIGN. MOST
  105. * FIXES APPLIED TO ONE OF THESE DRIVERS WILL ALSO APPLY TO
  106. * THE OTHERS.
  107. *
  108. * 2) WHERE POSSIBLE, *CMR* POINTERS HAVE BEEN PLUGGED BY THE
  109. * PRESET ROUTINE TO IMPROVE THE EXECUTION SPEED OF THE
  110. * PROGRAM AND TO MINIMIZE THE AMOUNT OF CODE.
  111. *
  112. * 3) BECAUSE *1XY* ISSUES ALL *BIOM* COMPLETION REQUESTS
  113. * WITHOUT WAITING FOR FUNCTION COMPLETION, THE *MONITOR*
  114. * MACRO HAS BEEN REDEFINED TO ENSURE THERE IS NO PENDING
  115. * MONITOR REQUEST AT THE TIME ANOTHER IS ABOUT TO BE
  116. * ISSUED.
  117. EJECT
  118.  
  119. * COMMON DECKS.
  120.  
  121.  
  122. *CALL COMPMAC
  123. RICHI$ EQU 1 SELECT DEFERRED INSTRUCTION MODIFICATION
  124. *CALL COMPCHI
  125. *CALL COMPIOU
  126. *CALL COMSCPS
  127. *CALL COMSDFS
  128. LIST X
  129. *CALL COMSHIO
  130. LIST *
  131. *CALL COMSLSD
  132. *CALL COMSMSC
  133. LIST X
  134. *CALL COMSMSP
  135. LIST *
  136. *CALL COMSMST
  137. *CALL COMSPIM
  138. *CALL COMS1DS
  139. TITLE CONSTANTS, DEFINITIONS, AND MACROS.
  140. 1XY SPACE 4,10
  141. **** DIRECT CELL ASSIGNMENTS.
  142.  
  143.  
  144. BS EQU 15 BLOCK SIZE FOR DATA TRANSFER
  145. RS EQU 16 ERROR RECOVERY STATUS
  146. ER EQU 17 ERROR RECOVERY IN PROGRESS
  147. CC EQU 20 COMPLETION COUNT
  148. S1 EQU 21 SCRATCH
  149. EC EQU 22 ERROR CODE
  150. RW EQU 23 READ/WRITE FLAG
  151. IL EQU 24 *PUT* INTERLOCK FLAG
  152. SR EQU 25 - 31 SCRATCH (5 CELLS)
  153. WB EQU SR - SR+4 FOR *COMP1MD* COMPATIBILITY
  154. PR EQU 32 *PUT* REQUEST PROCESSING ACTIVE
  155. CN EQU 33 - 37 SCRATCH (5 CELLS)
  156. SC EQU 40 UNUSED
  157. FU EQU 41 - 42 UEM FWA (2 CELLS)
  158. UA EQU 43 - 44 UEM ADDRESS (2 CELLS)
  159. EP EQU 45 ERROR ON PREVIOUS SECTOR
  160. CS EQU 46 CHANNEL STATUS
  161. NB EQU 47 NEXT BUFFER ORDINAL
  162. PB EQU 50 PREVIOUS BUFFER ORDINAL
  163. CB EQU 51 CURRENT BUFFER ORDINAL
  164. TB EQU 52 TOTAL CBT COUNT
  165. GS EQU 53 GENERAL STATUS
  166. * EQU 54 CHANNEL NUMBER (FROM INPUT REGISTER)
  167. TI EQU 57 *TPOR* INDEX
  168. CA EQU 60 - 64 CURRENT PHYSICAL ADDRESS (5 CELLS)
  169. RC EQU 65 RETRY COUNT
  170. PO EQU 66 CURRENT *PUT* ORDINAL
  171. S2 EQU 67 SCRATCH
  172. 1XY SPACE 4,10
  173. ** DRIVER FUNCTION CODES.
  174.  
  175.  
  176. FCSK EQU 1 SEEK 1 TO 1 INTERLACE
  177. FCRD EQU 4 READ
  178. FCWR EQU 5 WRITE
  179. FCOC EQU 10 OPERATION COMPLETE
  180. FCGS EQU 12 GENERAL STATUS
  181. FCCO EQU 14 CONTINUE
  182. FCFP EQU 16 FORMAT PACK
  183. FCDS EQU 23 DETAILED STATUS
  184. FCRU EQU 31 READ UTILITY SECTOR
  185. FCRP EQU 34 READ PACK SERIAL NUMBER
  186. FCAL EQU 414 AUTOLOAD
  187. 1XY SPACE 4,10
  188. ** 170 DMA ADAPTER FUNCTIONS.
  189.  
  190.  
  191. FCMC EQU 100000+1S17 MASTER CLEAR ADAPTER
  192. FCCT EQU 101000+1S17 CLEAR T REGISTERS
  193. FCDI EQU 102000+1S17 DMA INPUT
  194. FCDO EQU 103000+1S17 DMA OUTPUT
  195. FCCD EQU 104000+1S17 CLEAR DMA MODE
  196. FCDT EQU 106000+1S17 DISABLE TEST MODE
  197. FCET EQU 107000+1S17 ENABLE TEST MODE
  198. FCRC EQU 110000+1S17 READ CONTROL REGISTERS
  199. FCWC EQU 111000+1S17 WRITE CONTROL REGISTERS
  200. FCRE EQU 112000+1S17 READ ERROR STATUS REGISTER
  201. FCRO EQU 114000+1S17 READ OPERATIONAL STATUS REGISTER
  202. FCRT EQU 116000+1S17 READ T REGISTER
  203. FCWT EQU 117000+1S17 WRITE T PRIME REGISTER
  204.  
  205.  
  206. * 170 DMA OPERATIONAL STATUS.
  207.  
  208. OSOF EQU 4000 OUTPUT BUFFER FULL
  209. OSIF EQU 2000 INPUT BUFFER FULL
  210. OSID EQU 1000 INPUT DATA AVAILABLE
  211. OSFT EQU 0400 FAST TRANSFER MODE
  212. OSEC EQU 0200 EXTERNAL CLOCK PRESENT
  213. OSTM EQU 0100 TEST MODE
  214. OSZC EQU 0040 PP WORD COUNT EQUAL ZERO
  215. OSDO EQU 0020 DMA OUTPUT
  216. OSDI EQU 0010 DMA INPUT
  217. OSTH EQU 0004 DMA TRANSFER HALTED
  218. OSTE EQU 0002 T PRIME REGISTER EMPTY
  219. OSTP EQU 0001 TRANSFER IN PROGRESS
  220. SPACE 4,15
  221. ** DETAILED STATUS CONSTANTS.
  222.  
  223.  
  224. SB0 EQU 0 SENSE BYTE 0
  225. SB7 EQU 4 SENSE BYTE 7 STATUS WORD OFFSET
  226. DCF EQU 1 DEVICE CHECK FORMAT
  227. FM6 EQU 6 FORMAT 6 MESSAGE
  228. SPACE 4,15
  229. ** ASSEMBLY CONSTANTS.
  230.  
  231.  
  232. BFRL EQU 10 *EMB* FLUSH RETRY LIMIT
  233. CH EQU 0 MASS STORAGE CHANNEL
  234. FCSKL EQU 4 SEEK PARAMETER WORD COUNT
  235. FPBL EQU 22 FORMAT PACK PARAMETER BLOCK LENGTH
  236. HLEN EQU 4*5 LENGTH OF SECTOR HEADER
  237. MAXU EQU 64D MAXIMUM NUMBER OF UNITS PER CHANNEL
  238. MFRL EQU 10 MONITOR FUNCTION RETRY LIMIT
  239. MMXN EQU 10D MAXIMUM NUMBER OF EXCHANGE RETRIES
  240. PCRL EQU 10 PP CALL RETRY LIMIT
  241. PSLT EQU 26 PHYSICAL SECTORS PER LOGICAL TRACK
  242. PSPT EQU 3 PHYSICAL SECTORS PER PHYSICAL TRACK
  243. SSIZ EQU 1000 SECTOR SIZE FLAG FOR SEEK
  244. TPORE EQU 1 LENGTH OF *TPOR* ENTRY
  245. ****
  246. SPACE 4,20
  247. ** MACROS.
  248. TBLM SPACE 4,10
  249. ** TBLM - CREATE TABLE ENTRY MACRO.
  250. *
  251. *NAM TBLM
  252. *
  253. * ENTRY NAM = TABLE NAME.
  254. *
  255. * EXIT NAM_E MACRO DEFINED.
  256.  
  257.  
  258. PURGMAC TBLM
  259.  
  260. MACRO TBLM,NAM
  261. PURGMAC NAM_E
  262. NAM_E MACRO ADDR
  263. LOCAL A
  264. MACREF NAM_E
  265. NOREF A
  266. A EQU ADDR
  267. T_NAM RMT
  268. CON A
  269. RMT
  270. TBLM ENDM
  271. CBTE SPACE 4,10
  272. ** CBTE - CONTROL BUFFER TABLE ENTRY.
  273. *
  274. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TCBT*
  275. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  276. * REQUIRES THE FWA OF THE CONTROL BUFFER TABLE.
  277. *
  278. * CBTE ADDR
  279. *
  280. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  281. *
  282. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TCBT*.
  283.  
  284.  
  285. CBT TBLM
  286. CCBA SPACE 4,15
  287. ** CCBA - COMPUTE *CBT* ENTRY ADDRESS.
  288. *
  289. * THIS MACRO SETS (A) TO THE REQUESTED *CBT* ENTRY ADDRESS.
  290. *
  291. * CCBA W,A
  292. *
  293. * *W* - OPTIONAL WORD OFFSET TO BE ADDED TO ADDRESS.
  294. * *A* - IF NON-BLANK, BUFFER ORDINAL IS IN ACCUMULATOR.
  295. *
  296. * ENTRY (A) = BUFFER ORDINAL IF *A* PARAMETER IS NON-BLANK.
  297. * (CB) = CURRENT BUFFER ORDINAL.
  298. *
  299. * EXIT (A) = *CBT* ENTRY ADDRESS + WORD OFFSET.
  300.  
  301.  
  302. PURGMAC CCBA
  303.  
  304. CCBA MACRO W,A
  305. MACREF CCBA
  306. IFC EQ,$A$$,1
  307. LDD CB
  308. SHN CBTLS
  309. CBTE *
  310. ADC W
  311. CCBA ENDM
  312. PUTE SPACE 4,10
  313. ** PUTE - PHYSICAL UNIT TABLE ENTRY.
  314. *
  315. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TPUT*
  316. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  317. * REQUIRES THE FWA OF THE PHYSICAL UNIT TABLE.
  318. *
  319. * PUTE ADDR
  320. *
  321. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  322. *
  323. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TPUT*.
  324.  
  325.  
  326. PUT TBLM
  327. CPTA SPACE 4,10
  328. ** CPTA - COMPUTE *PUT* ENTRY ADDRESS.
  329. *
  330. * THIS MACRO SETS (A) TO THE REQUESTED *PUT* ENTRY ADDRESS.
  331. *
  332. * CPTA W,A
  333. *
  334. * *W* - OPTIONAL WORD OFFSET TO BE ADDED TO ADDRESS.
  335. * *A* - IF NON-BLANK, *PUT* ORDINAL IS IN ACCUMULATOR.
  336. *
  337. * ENTRY (A) = *PUT* ORDINAL IF *A* PARAMETER IS NON-BLANK.
  338. * (PO) = *PUT* ORDINAL.
  339. *
  340. * EXIT (A) = *PUT* ENTRY ADDRESS + WORD OFFSET.
  341.  
  342.  
  343. PURGMAC CPTA
  344.  
  345. CPTA MACRO W,A
  346. MACREF CPTA
  347. IFC EQ,$A$$,1
  348. LDD PO
  349. SHN PUTLS
  350. PUTE *
  351. ADC W
  352. CPTA ENDM
  353. CSHN SPACE 4,10
  354. ** CSHN - GENERATE CALCULATED SHIFT INSTRUCTION.
  355. *
  356. * CSHN A
  357. *
  358. * *A* = MNEMONIC DEFINING BIT POSITION.
  359. *
  360. * ENTRY .M = SHIFT COUNT FROM PREVIOUS CALL.
  361. *
  362. * EXIT .M = SHIFT COUNT TO REALIGN ACCUMULATOR.
  363. * .N = SHIFT TO MOVE *A* TO SIGN POSITION.
  364.  
  365.  
  366. PURGMAC CSHN
  367.  
  368. CSHN MACRO A
  369. .N SET .M+21-A+A/12D*12D
  370. .M SET .M+22-.N
  371. IFGT .N,21,1
  372. .N SET .N-22
  373. SHN .N
  374. CSHN ENDM
  375. EMBE SPACE 4,10
  376. ** EMBE - ERROR MESSAGE TABLE ENTRY.
  377. *
  378. * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TEMB*
  379. * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
  380. * REQUIRES THE FWA OF THE ERROR MESSAGE TABLE.
  381. *
  382. * EMBE ADDR
  383. *
  384. * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
  385. *
  386. * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TEMB*.
  387.  
  388.  
  389. EMB TBLM
  390. MONITOR SPACE 4,15
  391. ** MONITOR - ISSUE MONITOR FUNCTION.
  392. *
  393. * THIS MACRO PROVIDES FUNCTIONALITY IDENTICAL TO THAT OF THE
  394. * *MONITOR* MACRO DEFINED IN *COMPMAC*, WHILE ENSURING ANY
  395. * PENDING *BIOM* MONITOR FUNCTION IS COMPLETED BEFORE THE NEXT
  396. * MONITOR FUNCTION IS ISSUED.
  397. *
  398. * MONITOR F
  399. *
  400. * *F* - MONITOR FUNCTION CODE.
  401. *
  402. * EXIT (A) = 0.
  403. * (CM - CM+4) = COMPLETED PP OUTPUT REGISTER IMAGE.
  404. *
  405. * CALLS IMF.
  406.  
  407.  
  408. PURGMAC MONITOR
  409.  
  410. MONITOR MACRO F
  411. MACREF MONITOR
  412. LDK F
  413. RJM IMF
  414. MONITOR ENDM
  415. 1XY SPACE 4
  416. RICHI REDEFINE CHANNEL INSTRUCTIONS
  417. TITLE MAIN PROGRAM.
  418. ** MXY - 895 DMA DRIVER.
  419.  
  420.  
  421. ORG PPFW
  422. MXY RJM PRS PRESET
  423. MXY SPACE 4
  424. ** MST - MASTER MAIN PROGRAM.
  425.  
  426.  
  427. MST RJM CCR CHECK FOR CHANNEL REQUESTED/DOWN
  428. MJN MST1 IF CHANNEL GLOBALLY DOWN
  429. RJM SUQ SCAN UNIT QUEUE
  430. ZJN MST IF NO ELIGIBLE ENTRY FOUND
  431. RJM ISF ISSUE SEEK FUNCTION
  432. NJN MST IF UNIT NOT ON CYLINDER
  433. RJM PDT PERFORM DATA TRANSFER
  434. UJN MST LOOP
  435.  
  436. MST1 RJM DCH RELEASE CHANNEL
  437. MONITOR DPPM DROP PP
  438. LJM PPR ENTER IDLE LOOP
  439. TPOR SPACE 4,10
  440. ** TPOR - TABLE OF *PUT* ORDINALS.
  441. *
  442. * THIS TABLE CONTAINS THE ORDINALS OF THE *PUT* ENTRIES FOR ALL
  443. * UNITS ACCESSED BY THIS DRIVER-S CHANNEL.
  444. *
  445. * ENTRY = 1 WORD.
  446. *
  447. *T 11/ PUT ,1/I
  448. * PUT *PUT* ORDINAL OF DEVICE.
  449. * I EST CHANNEL BYTE INDEX.
  450. *
  451. * TABLE IS TERMINATED BY A ZERO BYTE.
  452.  
  453.  
  454. TPOR BSSZ TPORE*MAXU
  455. CON 0 TERMINATE *TPOR* TABLE
  456. CCR SPACE 4,20
  457. ** CCR - CHECK FOR CHANNEL REQUESTED OR DOWN.
  458. *
  459. * THIS ROUTINE CHECKS TO SEE IF THE CHANNEL TO WHICH THIS PP IS
  460. * DEDICATED IS BEING REQUESTED BY ANOTHER PP OR IS GLOBALLY
  461. * DOWN. IF THE CHANNEL IS REQUESTED BY ANOTHER PP, IT WILL BE
  462. * RELEASED AND WILL BE REQUESTED AGAIN FOLLOWING A ONE SECOND
  463. * DELAY. IF THE CHANNEL IS GLOBALLY DOWN, THE DRIVER DROP FLAG
  464. * WILL BE SET IN THE CONTROLWARE TABLE AND THE CHANNEL WILL BE
  465. * RELEASED.
  466. *
  467. * EXIT (A) .LT. 0 IF CHANNEL IS GLOBALLY DOWN.
  468. *
  469. * USES CM - CM+4.
  470. *
  471. * CALLS DCH, FNC, RCH, SCD.
  472. *
  473. * MACROS DELAY.
  474.  
  475.  
  476. CCR4 RJM SCD SET DRIVER DROP FLAG
  477. LCN 0 SET DROPOUT REPLY
  478.  
  479. CCR SUBR ENTRY/EXIT
  480. LDC ** READ CHANNEL TABLE
  481. CCRA EQU *-1 (CM ADDRESS OF ENTRY)
  482. CRD CM
  483. LDD CM+** CHECK REQUESTED FLAG
  484. CCRB EQU *-1 (BYTE ADDRESS OF ENTRY)
  485. SHN 21-5
  486. MJN CCR4 IF CHANNEL IS GLOBALLY DOWN
  487. SHN 22+5-13
  488. PJN CCRX IF CHANNEL NOT REQUESTED
  489. RJM DCH RELEASE CHANNEL
  490. CCR1 DELAY
  491. RJM RCH REQUEST CHANNEL
  492. ZJN CCR1 IF CHANNEL NOT ASSIGNED
  493. DCN CH+40 INSURE CHANNEL IN CORRECT STATE
  494. LDC FCCT CLEAR THE T REGISTER
  495. RJM FNN
  496. MJN CCR3 IF ERROR ON CHANNEL ACCESS
  497. LDC FCWC WRITE ADAPTER CONTROL REGISTER
  498. RJM FNC
  499. MJN CCR3 IF ERROR ON CHANNEL ACCESS
  500. LDC 20400 60 BIT CM WORD ACCESS AND NO ERROR CLEAR
  501. OAN CH
  502. CCR2 SBN 1
  503. ZJN CCR3 IF TIMEOUT ON CONTROL REGISTER WRITE
  504. FJM CCR2,CH IF DATA NOT ACCEPTED
  505. CCR2.1 DCN CH+40
  506. LJM CCRX RETURN
  507.  
  508. * PREVENT ANY I/O FROM BEING PERFORMED ON THIS CHANNEL. THE
  509. * UNIT QUEUES MUST CONTINUE TO BE SERVICED BY THIS DRIVER TO
  510. * ENSURE THAT CHANNEL SPECIFIC REQUESTS ARE PROCESSED.
  511. * ALTHOUGH THIS DRIVER WILL BE FREE TO SELECT I/O REQUESTS, ANY
  512. * ATTEMPT TO ISSUE A CHANNEL FUNCTION WILL RESULT IN A *CHANNEL
  513. * FAILURE* ERROR. THE ERROR PROCESSOR WILL SET THE SUSPECT
  514. * FLAG, CAUSING *1MV* TO PERFORM A HARDWARE VERIFICATION. THE
  515. * EXPECTED RESULT OF THIS VERIFICATION IS THAT *1MV* WILL DOWN
  516. * THE CHANNEL ON THE DEVICE.
  517.  
  518. CCR3 LDC UJNI+FNC5.1-FNCC
  519. ERRNG FNC5.1-FNCC CODE DEPENDS ON VALUE
  520. ERRPL FNC5.1-FNCC-40 CODE DEPENDS ON VALUE
  521. STM FNCC
  522. LDC UJNI+FNN5.1-FNNA
  523. ERRNG FNN5.1-FNNA CODE DEPENDS ON VALUE
  524. ERRPL FNN5.1-FNNA-40 CODE DEPENDS ON VALUE
  525. STM FNNA
  526. UJN CCR2.1 RETURN
  527. CCS SPACE 4,15
  528. ** CCS - CHECK FOR CONSECUTIVE SECTOR REQUEST.
  529. *
  530. * THIS ROUTINE CHECKS THE NEXT BUFFER IN THE I/O QUEUE TO
  531. * DETERMINE IF IT IS CONSECUTIVE WITH THE REQUEST CURRENTLY
  532. * BEING PROCESSED.
  533. *
  534. * ENTRY (CB) = CURRENT BUFFER ORDINAL.
  535. * (NB) = NEXT BUFFER ORDINAL IF CONSECUTIVE REQUEST
  536. * ALREADY FOUND.
  537. * (RW) = READ/WRITE FLAG.
  538. * (TB) = TOTAL BUFFER COUNT.
  539. *
  540. * EXIT (NB) = NEXT BUFFER ORDINAL.
  541. * = 0 IF CONSECUTIVE TRANSFER NOT POSSIBLE.
  542. * (TB) = TOTAL BUFFER COUNT.
  543. *
  544. * USES NB, TB, CM - CM+4, CN - CN+4, TO - TO+4.
  545. *
  546. * MACROS CCBA.
  547.  
  548.  
  549. CCS3 LDN 0 INDICATE NO CONSECUTIVE REQUEST
  550. STD NB
  551.  
  552. CCS SUBR ENTRY/EXIT
  553. LDD NB
  554. NJN CCSX IF NEXT REQUEST ALREADY FOUND
  555. CCBA PAD4 READ CURRENT *CBT* ENTRY
  556. CRD CM
  557. ADK IOLK-PAD4
  558. CRD CN
  559. LDD CN+2 NEXT BUFFER ORDINAL
  560. ZJN CCSX IF THIS BUFFER IS LAST IN QUEUE
  561. STD NB STORE NEW CURRENT BUFFER ORDINAL
  562. CCBA PAD1,A GET DISK ADDRESS FOR THIS BUFFER
  563. CRD CN
  564. ADK IOLK-PAD1 GET WRITE FLAG
  565. CRD T0
  566. LDD T0
  567. SHN 0-11
  568. LPN 1
  569. LMD RW
  570. NJN CCS3 IF TRANSFER NOT IN SAME DIRECTION
  571. LDD CM+1
  572. LMD CN+1
  573. CCS1 NJN CCS3 IF NO CYLINDER MATCH
  574. LDD CM+2
  575. ADN 1
  576. LMD CN+2
  577. ZJN CCS2 IF CONSECUTIVE SECTOR NOT ON SAME TRACK
  578. LDD CM+2
  579. ADD HN
  580. SCN 77
  581. LMD CN+2
  582. NJN CCS1 IF NOT FIRST SECTOR OF CONSECUTIVE TRACK
  583. LDD CM+2
  584. LPN 77
  585. LMN PSPT-1
  586. NJN CCS1 IF CONSECUTIVE REQUEST
  587. CCS2 AOD TB INCREMENT TOTAL BUFFER COUNT
  588. LJM CCSX RETURN
  589. CDS SPACE 4,20
  590. ** CDS - CRACK DETAILED STATUS.
  591. *
  592. * THIS ROUTINE DETERMINES WHAT ERROR CODE TO SET BY EXAMINING
  593. * DETAILED STATUS.
  594. *
  595. * ENTRY (GS) = GENERAL STATUS.
  596. * (RW) = READ/WRITE FLAG.
  597. *
  598. * USES EC, RS, T1.
  599. *
  600. * CALLS FNC, GDS, GGS.
  601.  
  602.  
  603. CDS SUBR ENTRY/EXIT
  604. RJM GDS GET DETAILED STATUS
  605. MJN CDSX IF ERROR
  606. LDD GS
  607. SHN 21-10
  608. PJN CDS1 IF ERROR NOT RECOVERABLE BY SUBSYSTEM
  609. LDM CDSA,RW PREPARE FOR *CONTINUE* SEQUENCE
  610. STD T1
  611. LDC LDNI+FCCO
  612. STI T1
  613. LCN 1 INDICATE CONTROLLER RECOVERY IN PROGRESS
  614. STD RS
  615. UJN CDS1.1 SET STATUS ERROR CODE
  616.  
  617. CDS1 SHN 10-13+22
  618. MJN CDS2 IF ABNORMAL TERMINATION
  619. LDD EC
  620. NJN CDSX IF ERROR CODE ALREADY SET
  621. CDS1.1 UJN CDS4 SET STATUS ERROR CODE
  622.  
  623. * CHECK FOR *NOT READY* CONDITION.
  624.  
  625. CDS2 SHN 13-4
  626. PJN CDS3 IF NOT *NOT READY*
  627. LDM DST+SB0
  628. SHN 0-12
  629. LPN 1
  630. LMN 1
  631. ZJN CDS5 IF DRIVE NOT READY
  632.  
  633. * CHECK FOR STATISTICAL MESSAGE. THIS IS NOT A TRUE ERROR
  634. * CONDITION.
  635.  
  636. LDM DST+SB7
  637. LPN 17
  638. LMN FM6
  639. ZJN CDS5.1 IF FORMAT 6 MESSAGE
  640.  
  641. * CHECK FOR MEDIA ERROR.
  642.  
  643. CDS3 LDM DST
  644. LPC 210
  645. LMC 210
  646. ZJN CDS6 IF MEDIA ERROR
  647. LDM DST+21
  648. SHN 21-6
  649. MJN CDS8 IF CHANNEL PARITY ERROR ON OUTPUT
  650. SHN 6-2
  651. MJN CDS9 IF DATA TRANSFER ERROR
  652. SHN 2-21+22
  653. LPN 50
  654. NJN CDS10 IF ADAPTOR MEMORY PARITY ERROR
  655. CDS4 LDK DSTE&NRDE
  656. CDS5 LMK NRDE&STAE
  657. CDS5.1 LMK STAE&PARE
  658. CDS6 LMK PARE
  659. CDS7 STD EC
  660. LJM CDSX RETURN
  661.  
  662. CDS8 LDN CHPE SET *CHANNEL PARITY* ERROR CODE
  663. UJN CDS7 SET ERROR CODE
  664.  
  665. CDS9 LDN IDTE SET *DATA TRANSFER* ERROR CODE
  666. UJN CDS7 SET ERROR CODE
  667.  
  668. CDS10 LDN RAME SET *CONTROLLER MEMORY* ERROR CODE
  669. UJN CDS7 SET ERROR CODE
  670.  
  671.  
  672. CDSA BSS 0
  673. CON RIOA
  674. CON WIOA
  675. CRL SPACE 4,15
  676. ** CRL - CHECK FOR ERROR RETRY LIMIT REACHED.
  677. *
  678. * ENTRY (EC) = ERROR CODE.
  679. * (ER) = *RECOVERY IN PROGRESS* FLAG.
  680. * (RC) = RETRY COUNT.
  681. * (T5) = EST ORDINAL.
  682. *
  683. * EXIT (A) .GE. 0 IF RETRY LIMIT REACHED.
  684. * .LT. 0 IF NOT AT RETRY LIMIT.
  685. * (RC) INCREMENTED.
  686. * MESSAGE ISSUED TO *MS2W* OF SYSTEM CONTROL POINT FOR
  687. * B-DISPLAY PRESENTATION IF HALF WAY TO RETRY LIMIT.
  688. *
  689. * USES RC.
  690.  
  691.  
  692. CRL SUBR ENTRY/EXIT
  693. LDD ER
  694. LMC SHNI+1
  695. STM CRLA
  696. AOD RC INCREMENT RETRY COUNT
  697. LDM TREC,EC
  698. SHN -1
  699. SBD RC
  700. PJN CRL1 IF TOO EARLY TO NOTIFY OPERATOR
  701. LDD T5 STORE EST ORDINAL IN MESSAGE
  702. SHN -3
  703. RJM C2D
  704. STM CRLB+1
  705. LDD T5
  706. LPN 7
  707. SHN 6
  708. ADC 2R0
  709. STM CRLB+2
  710. LDM TMNE,EC STORE ERROR MNEMONIC IN MESSAGE
  711. STM CRLB+3
  712. LDD CP
  713. ADK MS2W
  714. CWM CRLB,TR
  715. CRL1 LDD RC
  716.  
  717. * IF *RECOVERY IN PROGRESS* IS NOT SET, THE RETRY COUNT IS
  718. * SHIFTED SO THAT THE LIMIT CHECK IS MADE AGAINST N/2 (WHERE N
  719. * IS THE RETRY LIMIT FOR THE ERROR TYPE IN CELL *EC*). THIS
  720. * CAUSES HALF OF THE RETRY ATTEMPTS TO BE PERFORMED ON EACH
  721. * CHANNEL, IF AN ALTERNATE ACCESS IS AVAILABLE. IF NO
  722. * ALTERNATE ACCESS IS AVAILABLE, ALL RETRIES WILL BE PERFORMED
  723. * ON THIS CHANNEL.
  724.  
  725. SHN 0
  726. * SHN 1 (RECOVERY NOT IN PROGRESS)
  727. CRLA EQU *-1
  728. SBM TREC,EC
  729. SBN 2
  730. UJP CRLX RETURN
  731.  
  732.  
  733. CRLB DATA C*EQ000 XX ERROR RETRY UNDERWAY.*
  734. CRQ SPACE 4,20
  735. ** CRQ - CHECK REQUEST QUEUE.
  736. *
  737. * THIS ROUTINE ATTEMPTS TO CALL *CPUMTR* TO COMPLETE REQUESTS
  738. * IN THE UNIT QUEUE THAT HAVE ALREADY BEEN PROCESSED.
  739. *
  740. * ENTRY (CC) = COMPLETION REQUEST COUNT.
  741. * (PO) = *PUT* ORDINAL.
  742. *
  743. * EXIT (A) .EQ. 0 IF NO REQUESTS PRESENT.
  744. * .NE. 0 IF *CPUMTR* IS STILL BUSY WITH PREVIOUS
  745. * FUNCTION OR AN EXCHANGE WAS JUST ISSUED
  746. * FOR THE CURRENT FUNCTION.
  747. *
  748. * USES CC, CN - CN+4, T0 - T4.
  749.  
  750.  
  751. CRQ SUBR ENTRY/EXIT
  752. LDC ** READ XP
  753. CRQA EQU *-1 FWA OF XP
  754. CRD T0
  755. LDD OA READ OUTPUT REGISTER
  756. CRD CN
  757. LDD T0+4 (B0)
  758. NJN CRQ1 IF MISSED EXCHANGE
  759. STD CN+3
  760. LDD CN
  761. SHN 21-13
  762. MJN CRQ1 IF REISSUE REQUIRED
  763. NJN CRQX IF FUNCTION NOW BEING PROCESSED
  764. LDD CC
  765. ZJN CRQX IF NO PENDING COMPLETION REQUESTS
  766. LDC **
  767. CRQE EQU *-1
  768. CRD T0
  769. LDD T0
  770. ADD T0+1
  771. NJN CRQX IF FUNCTION IN PROGRESS
  772. LDN DCBS SET *BIOM* SUBFUNCTION
  773. STD CN+1
  774. LDD PO
  775. STD CN+2
  776. CRQ1 LDD CC
  777. RAD CN+3
  778. LDN 0
  779. STD CC
  780. LDK BIOM
  781. STD CN
  782. LDD OA
  783. CWD CN
  784. LDC **
  785. CRQB EQU *-1 ADDRESS OF EXCHANGE PACKAGE
  786. CWM CRQD,ON WRITE FIRST WORD
  787. SBN 1 SET EXCHANGE ADDRESS
  788. MXN 0 EXCHANGE CPU
  789. CRQC EQU *-1 CPU NUMBER
  790. UJP CRQX RETURN
  791.  
  792.  
  793. CRQD VFD 24/0 (P)
  794. VFD 18/0 (A0)
  795. VFD 18/0 (B0)
  796. DCH SPACE 4,15
  797. ** DCH - RELEASE CHANNEL.
  798. *
  799. * THIS ROUTINE RELEASES THE CHANNEL IF IT IS CURRENTLY
  800. * RESERVED.
  801. *
  802. * ENTRY (CS) = CHANNEL RESERVATION STATUS.
  803. * (IR+4) = CHANNEL NUMBER.
  804. *
  805. * EXIT (A) = (CS) = 0.
  806. *
  807. * USES CM+1, CS.
  808. *
  809. * MACROS MONITOR.
  810.  
  811.  
  812. DCH SUBR ENTRY/EXIT
  813. LDD CS
  814. LPN 1
  815. ZJN DCHX IF CHANNEL NOT RESERVED
  816. LDD IR+4 RELEASE CHANNEL
  817. STD CM+1
  818. MONITOR DCHM
  819. SOD CS CLEAR CHANNEL RESERVATION FLAG
  820. UJN DCHX RETURN
  821. ERR SPACE 4,20
  822. ** ERR - PROCESS ERROR.
  823. *
  824. * THIS ROUTINE IS CALLED TO PERFORM ALL ERROR PROCESSING.
  825. *
  826. * ENTRY (EC) = 0 IF THIS IS THE FIRST RETRY OF A RECOVERY
  827. * SEQUENCE AND THE CALLER DID NOT SET THE ERROR
  828. * CODE.
  829. * = ERROR CODE IF NOT THE FIRST RETRY OF A RECOVERY
  830. * SEQUENCE AND NOT A CALLER SPECIFIED ERROR CODE.
  831. * = COMPLEMENT OF ERROR CODE IF SPECIFIED BY THE
  832. * CALLER.
  833. * (RC) = RETRY COUNT.
  834. *
  835. * EXIT (EC) = 0.
  836. * (RC) = 0.
  837. * TO *MST*.
  838. *
  839. * USES EC, RC, RS, T1.
  840. *
  841. * CALLS CDS, CRL, CRQ, FNN, GGS, IBM, IIC, ISF, PDT,
  842. * PFR, PRE, RLC, SAS, SSF, TEP.
  843.  
  844.  
  845. ERR SUBR ENTRY
  846. ERR1 RJM PRE PRESET ERROR PROCESSOR
  847. NJP ERR11 IF INTERLOCK/VERIFICATION FAILURE
  848. LDC FCCD CLEAR DMA MODE
  849. RJM FNN
  850. MJN ERR1.1 IF ERROR ENCOUNTERED
  851. DCN CH+40
  852. RJM GGS GET GENERAL STATUS
  853. MJN ERR1.1 IF GENERAL STATUS UNAVAILABLE
  854. RJM SAS SAVE ADAPTER STATUS
  855. MJN ERR1.1 IF ERROR ENCOUNTERED
  856. RJM CDS CHECK DETAILED STATUS
  857. ERR1.1 LDD RC
  858. ZJN ERR1.2 IF FIRST RETRY
  859. LDD ER
  860. ZJN ERR2 IF NOT RECOVERY IN PROGRESS
  861. AOM ERRA
  862. LMN 2
  863. NJN ERR2 IF NOT FIRST *ERR* CALL
  864. ERR1.2 LDD GS
  865. STM BMLGS
  866. ERR2 LCN 0
  867. LMD EC
  868. STD EC
  869. SHN 21-13
  870. MJN ERR2 IF COMPLEMENTED ERROR CODE
  871. LDD TH FORCE IMMEDIATE COMPLETION
  872. ERRNZ SHNI-1000 CODE DEPENDS ON VALUE
  873. STM IICA
  874. RJM IIC ISSUE I/O COMPLETION REQUEST
  875. ERR4.1 RJM CRQ ENSURE COMPLETION OF PENDING REQUEST
  876. NJN ERR4.1 IF FUNCTION STILL PENDING
  877. RJM IBM ISSUE BML MESSAGE IF NECESSARY
  878. AOD RS INCREMENT RECOVERY STATUS
  879. SHN 21-13
  880. MJN ERR10 IF *CCC* ERROR RECOVERY IN PROGRESS
  881.  
  882. * SET THE SUSPECT FLAG IF APPROPRIATE FOR THIS ERROR TYPE.
  883.  
  884. LDK STAE
  885. LMD EC
  886. ZJN ERR7 IF STATISTICAL DATA (NOT AN ERROR)
  887. RJM SSF SET SUSPECT FLAG (IF APPROPRIATE)
  888. RJM CRL CHECK FOR RETRY LIMIT REACHED
  889. MJN ERR7 IF RETRY LIMIT NOT REACHED
  890. SOD RC ADJUST FINAL RETRY COUNT
  891. ERR6 AOD RS SET RECOVERY STATUS
  892. UJN ERR11 TERMINATE ERROR PROCESSING
  893.  
  894. * CHECK FOR CONTROLWARE RELOAD.
  895.  
  896. ERR7 RJM RHR RELEASE HARDWARE RESERVE
  897. RJM RLC LOAD CONTROLWARE IF NECESSARY
  898.  
  899. * RETRY I/O SEQUENCE.
  900.  
  901. ERR9 RJM ISF ISSUE SEEK FUNCTION
  902. ZJN ERR10 IF ON CYLINDER AND NO ERROR
  903. LDD GS
  904. LMN 2
  905. ZJN ERR9 IF POSITIONER BUSY
  906. UJP ERR1 RESTART ERROR PROCESSING
  907.  
  908. ERR10 RJM PFR PREPARE FOR RETRY ATTEMPT
  909. RJM PDT PERFORM READ/WRITE OPERATION
  910.  
  911. * CONTROL RETURNS TO THIS POINT ONLY IF THE ERROR WAS
  912. * RECOVERED.
  913.  
  914. ERR11 AOD RS SET RECOVERY STATUS
  915. SHN 6
  916. RAD RC ADJUST FOR CONTROLLER RECOVERY
  917.  
  918. * TERMINATE ERROR PROCESSING. INSTRUCTIONS MODIFIED FOR ERROR
  919. * PROCESSING WILL BE RESTORED TO THEIR ORIGINAL VALUES, VARIOUS
  920. * DATA CELLS WILL BE RESTORED TO THEIR INITIAL STATES, ETC.
  921.  
  922. RJM TEP TERMINATE ERROR PROCESSING
  923. LJM MST EXIT ERROR PROCESSOR
  924.  
  925.  
  926. ERRA CON 0 RECOVERY IN PROGRESS PASS COUNTER
  927. TEPF SPACE 4,30
  928. ** TEPF - TABLE OF ERROR PROCESSING FLAGS.
  929. *
  930. * THIS TABLE CONTAINS INFORMATION RELATED TO EACH ERROR TYPE.
  931. * EACH ENTRY HAS THE FOLLOWING FORMAT -
  932. * VFD 2/ERROR COUNT INCREMENT, BML MESSAGE INDICATOR
  933. * 0 DO NOT INCREMENT ERROR COUNTS AND DO
  934. * NOT ISSUE BML MESSAGE.
  935. * 1 INCREMENT ERROR COUNTS AND ISSUE BML
  936. * MESSAGE.
  937. * 2 INCREMENT ERROR COUNTS AND ISSUE BML
  938. * MESSAGE IF UNRECOVERED ERROR.
  939. * VFD 2/UNUSED (ZERO)
  940. * VFD 1/SUSPECT FLAG
  941. * 0 DO NOT SET SUSPECT FLAG.
  942. * 1 SET SUSPECT FLAG.
  943. * VFD 7/UNUSED (ZERO)
  944.  
  945.  
  946. LIST G
  947. TEPF EQU *-1
  948. ECHO 1,EC=("DREC")
  949. VFD 2/IEC._EC,2/0,1/SUS._EC,7/0
  950. LIST *
  951. TMNE SPACE 4,10
  952. ** TMNE - TABLE OF ERROR CODE MNEMONICS.
  953.  
  954.  
  955. LIST G
  956. TMNE EQU *-1
  957. ECHO 1,ERRCODE=("DREC")
  958. CON EMN._ERRCODE "TXT._ERRCODE" ERROR
  959. LIST *
  960. TREC SPACE 4,10
  961. ** TREC - TABLE OF RETRY COUNTS.
  962.  
  963.  
  964. LIST G
  965. TREC EQU *-1
  966. ECHO 1,ERRCODE=("DREC")
  967. CON RTC._ERRCODE "TXT._ERRCODE" ERROR
  968. LIST *
  969. TSYM SPACE 4,10
  970. ** TSYM - TABLE OF BML SYMPTOM CODES.
  971.  
  972.  
  973. LIST G
  974. TSYM EQU *-1
  975. ECHO 1,ERRCODE=("DREC")
  976. CON SYM._ERRCODE "TXT._ERRCODE" ERROR
  977. LIST *
  978. FNC SPACE 4,10
  979. ** FNC - FUNCTION CHANNEL.
  980. *
  981. * ENTRY (A) = FUNCTION CODE.
  982. *
  983. * EXIT (A) .LT. 0 IF CHANNEL ACTIVE UPON ENTRY OR FUNCTION
  984. * TIMEOUT. (EC) = COMPLEMENT OF ERROR CODE.
  985. * .EQ. 0 IF NO ERROR, CHANNEL ACTIVE.
  986. *
  987. * USES EC.
  988.  
  989.  
  990. FNC6 ACN CH ACTIVATE CHANNEL
  991. LDN 0 SET REPLY STATUS
  992.  
  993. FNC SUBR ENTRY/EXIT
  994. PJN FNC0 IF CONTROLLER FUNCTION
  995. LPC 177777
  996. STML FNCB
  997. UJN FNC0.1 CONTINUE
  998.  
  999. FNC0 STM FNCA SAVE FUNCTION CODE
  1000. FNC0.1 AJM FNC5,CH IF CHANNEL IS STILL ACTIVE
  1001. * UJN FNC5.1 (CHANNEL INITIALIZATION ERROR)
  1002. FNCC EQU *-2
  1003. FAN CH FUNCTION CHANNEL
  1004.  
  1005. * THE DRIVER MUST WAIT AT LEAST 300 MS BEFORE TIMING OUT THE
  1006. * FUNCTION.
  1007.  
  1008. FNC1 ADD ON
  1009. IJM FNC6,CH IF FUNCTION ACCEPTED
  1010. NJN FNC1 IF NOT TIMEOUT YET
  1011. LCN FTOE
  1012. FNC3 STD EC
  1013. EJM FNC4,CH IF CHANNEL IS EMPTY
  1014. LDN 1 SAVE LAST FUNCTION ISSUED
  1015. IAM FNCA,CH
  1016. FNC4 LCN 0 SET ERROR REPLY STATUS
  1017. DCN CH+40
  1018. UJN FNCX RETURN
  1019.  
  1020. FNC5 LCN CHFE SET *CHANNEL FAILURE* ERROR CODE
  1021. UJN FNC3 INPUT DATA/FUNCTION FROM CHANNEL
  1022.  
  1023. FNC5.1 LCN CHFE SET *CHANNEL FAILURE* ERROR CODE
  1024. STD EC
  1025. UJN FNCX RETURN
  1026.  
  1027.  
  1028. FNCA CON -0 CURRENT FUNCTION
  1029. FNCB CON -0 CURRENT ADAPTER FUNCTION
  1030. FNN SPACE 4,10
  1031. ** FNN - FUNCTION CHANNEL NO ACTIVATE.
  1032. *
  1033. * ENTRY (A) = FUNCTION CODE.
  1034. *
  1035. * EXIT (A) .LT. 0 IF CHANNEL ACTIVE UPON ENTRY OR FUNCTION
  1036. * TIMEOUT. (EC) = COMPLEMENT OF ERROR CODE.
  1037. * .GE. 0 IF NO ERROR.
  1038. *
  1039. * USES EC.
  1040.  
  1041.  
  1042. FNN6 LDN 0 SET REPLY STATUS
  1043.  
  1044. FNN SUBR ENTRY/EXIT
  1045. PJN FNN0 IF CONTROLLER FUNCTION
  1046. LPC 177777
  1047. STML FNCB
  1048. UJN FNN0.1 CONTINUE
  1049.  
  1050. FNN0 STM FNCA SAVE FUNCTION CODE
  1051. FNN0.1 AJM FNN5,CH IF CHANNEL IS STILL ACTIVE
  1052. * UJN FNN5.1 (CHANNEL INITIALIZATION ERROR)
  1053. FNNA EQU *-2
  1054. FAN CH FUNCTION CHANNEL
  1055.  
  1056. * THE DRIVER MUST WAIT AT LEAST 300 MS BEFORE TIMING OUT THE
  1057. * FUNCTION.
  1058.  
  1059. FNN1 ADD ON
  1060. IJM FNN6,CH IF FUNCTION ACCEPTED
  1061. NJN FNN1 IF NOT TIMEOUT YET
  1062. LCN FTOE SET COMPLEMENT OF *FTOE* ERROR CODE
  1063. FNN3 STD EC
  1064. EJM FNN4,CH IF CHANNEL IS EMPTY
  1065. LDN 1 SAVE LAST FUNCTION ISSUED
  1066. IAM FNCA,CH
  1067. FNN4 LCN 0 SET ERROR REPLY STATUS
  1068. DCN CH+40
  1069. UJN FNNX RETURN
  1070.  
  1071. FNN5 LCN CHFE SET *CHANNEL FAILURE* ERROR CODE
  1072. UJN FNN3 INPUT DATA/FUNCTION FROM CHANNEL
  1073.  
  1074. FNN5.1 LCN CHFE SET *CHANNEL FAILURE* ERROR CODE
  1075. STD EC
  1076. UJN FNNX RETURN
  1077. GDS SPACE 4,15
  1078. ** GDS - GET DETAILED STATUS.
  1079. *
  1080. * THIS ROUTINE OBTAINS THE DETAILED STATUS FROM THE CONTROLLER.
  1081. *
  1082. * EXIT (A) .EQ. 0 IF STATUS OBTAINED.
  1083. * .LT. 0 IF STATUS NOT OBTAINED.
  1084. * (EC) = COMPLEMENT OF ERROR CODE IF STATUS NOT
  1085. * OBTAINED.
  1086. *
  1087. * USES EC, T1.
  1088. *
  1089. * CALLS FNC.
  1090.  
  1091.  
  1092. GDS2 LCN IDTE SET *INCOMPLETE DATA TRANSFER* ERROR CODE
  1093. GDS3 STD EC
  1094. GDS4 LDN MXSL-1 INVALIDATE DETAILED STATUS
  1095. STD T1
  1096. GDS5 LCN 0
  1097. STM DST,T1
  1098. SOD T1
  1099. PJN GDS5 IF MORE BYTES
  1100. GDS6 DCN CH+40
  1101.  
  1102. GDS SUBR ENTRY/EXIT
  1103. LDN FCDS ISSUE DETAILED STATUS FUNCTION
  1104. RJM FNC
  1105. MJN GDS4 IF ERROR
  1106. LDN MXSL
  1107. IAM DST,CH INPUT DETAILED STATUS
  1108. NJN GDS2 IF INCOMPLETE DATA TRANSFER
  1109. SFM GDS1,CH IF CHANNEL PARITY ERROR
  1110. UJN GDS6 RETURN
  1111.  
  1112. GDS1 LCN CHPE SET *CHANNEL PARITY* ERROR CODE
  1113. UJN GDS3 SET ERROR CODE
  1114. GGS SPACE 4,20
  1115. ** GGS - GET GENERAL STATUS.
  1116. *
  1117. * THIS ROUTINE OBTAINS GENERAL STATUS FROM THE CONTROLLER.
  1118. *
  1119. * EXIT (A) .EQ. 0 IF GENERAL STATUS OBTAINED. (GS) = STATUS.
  1120. * .LT. 0 IF STATUS NOT OBTAINED. (GS) = 7777.
  1121. * (EC) = COMPLEMENT OF *IDET* ERROR CODE IF INCOMPLETE
  1122. * DATA TRANSFER OCCURRED.
  1123. * = COMPLEMENT OF *CHPE* ERROR CODE IF CHANNEL
  1124. * PARITY ERROR OCCURRED.
  1125. *
  1126. * USES EC, GS.
  1127. *
  1128. * CALLS FNC.
  1129.  
  1130.  
  1131. GGS1 LCN CHPE SET *CHANNEL PARITY* ERROR CODE
  1132. UJN GGS3 SET ERROR CODE
  1133.  
  1134. GGS2 LCN IDTE SET *INCOMPLETE DATA TRANSFER* ERROR CODE
  1135. GGS3 STD EC
  1136. GGS4 LCN 0 INVALIDATE GENERAL STATUS
  1137. STD GS
  1138. GGS5 DCN CH+40
  1139.  
  1140. GGS SUBR ENTRY/EXIT
  1141. LDN FCGS ISSUE GENERAL STATUS FUNCTION
  1142. RJM FNC
  1143. MJN GGS4 IF FUNCTION TIMEOUT
  1144. LDN 1 INPUT STATUS
  1145. IAM GS,CH
  1146. NJN GGS2 IF INCOMPLETE TRANSFER
  1147. SFM GGS1,CH IF CHANNEL PARITY ERROR
  1148. LDD GS
  1149. UJN GGS5 RETURN
  1150. IBM SPACE 4,25
  1151. ** IBM - ISSUE BML MESSAGE.
  1152. *
  1153. * THIS ROUTINE BUILDS A BML MESSAGE AND CALLS ROUTINE *IMB* TO
  1154. * ISSUE THE MESSAGE TO THE BML.
  1155. *
  1156. * ENTRY (CA - CA+3) = SEEK PARAMETERS.
  1157. * (EC) = ERROR CODE.
  1158. * (ER) = RECOVERY IN PROGRESS FLAG.
  1159. * (RC) = RETRY COUNT.
  1160. * (RS) = RECOVERY STATUS.
  1161. * 777X INITIAL RETRY.
  1162. * 0 RECOVERED BY CONTROLLER.
  1163. * 1 RECOVERED BY DRIVER.
  1164. * 2 UNRESOLVED.
  1165. * 3 UNRECOVERED.
  1166. * (RW) = READ/WRITE FLAG.
  1167. * (T5) = EST ORDINAL.
  1168. * (BMLGS) = GENERAL STATUS.
  1169. * (DST - DST+23) = DETAILED STATUS IF APPLICABLE.
  1170. *
  1171. * EXIT (RC) INCREMENTED IF FIRST RETRY.
  1172. *
  1173. * USES RC, T1, CM+1 - CM+3.
  1174. *
  1175. * CALLS IMB.
  1176. *
  1177. * MACROS MONITOR.
  1178.  
  1179.  
  1180. IBM SUBR ENTRY/EXIT
  1181. LDM TEPF,EC
  1182. SHN 0-12
  1183. ZJN IBMX IF NO BML MESSAGE/ERROR COUNT INCREMENT
  1184. LDD RS
  1185. LMN 2
  1186. ZJN IBMX IF UNRESOLVED ERROR
  1187. SHN 21-13
  1188. PJN IBM1 IF FINAL RETRY
  1189. LDD RC
  1190. NJN IBMX IF NOT INITIAL RETRY
  1191. AOD RC INCREMENT RETRY COUNT
  1192. UJN IBM3 CONTINUE
  1193.  
  1194. IBM1 SHN 13-1
  1195. PJN IBM2 IF UNRECOVERED
  1196. LDN 2
  1197. SBD RC
  1198. MJN IBM2 IF NOT RECOVERED ON FIRST RETRY
  1199. LDK STAE
  1200. LMD EC
  1201. ZJN IBM3 IF ERROR NOT TO BE COUNTED
  1202.  
  1203. * INCREMENT ERROR COUNTER.
  1204.  
  1205. IBM2 LDD T5 SET EST ORDINAL
  1206. STD CM+1
  1207. LDD RS SET BYTE NUMBER
  1208. SHN -1
  1209. ADN 3
  1210. STD CM+2
  1211. LDK ICTS SET SUBFUNCTION
  1212. STD CM+3
  1213. MONITOR SMDM
  1214. IBM3 LDD RS SET RECOVERED/UNRECOVERED FLAG
  1215. ADN 5
  1216. SHN -3
  1217. LPN 1
  1218. STD T1
  1219. LDC /COMSDFS/D1XY*400 STORE SYMPTOM CODE
  1220. LMM TSYM,EC
  1221. STM BMLSC
  1222. LMK /COMSDFS/HS0040+/COMSDFS/D1XY*400
  1223. NJN IBM4 IF NOT A MEDIA ERROR
  1224. LDD RW
  1225. ERRNZ /COMSDFS/HS0041-/COMSDFS/HS0040-1 ERROR
  1226. RAM BMLSC
  1227. IBM4 LDD RC STORE RETRY COUNT
  1228. SHN 6-1
  1229. ADD RW ADD READ/WRITE FLAG
  1230. SHN 1
  1231. ADD T1 ADD RECOVERY STATUS
  1232. STM BMLRC
  1233. LDD CA UNIT NUMBER
  1234. LPN 77
  1235. STM BMLUN
  1236. LDD T5 EST ORDINAL
  1237. STM BMLEO
  1238. LDD EC ERROR CODE
  1239. STM BMLEC
  1240. LDD CA+1 CYLINDER
  1241. STM BMLCY
  1242. LDD CA+2 TRACK AND SECTOR
  1243. SHN 6
  1244. LMD CA+3
  1245. STM BMLTS
  1246. LDC BML ISSUE *BML* MESSAGE
  1247. RJM IMB ISSUE MESSAGE TO BUFFER
  1248. UJP IBMX RETURN
  1249. BML SPACE 4,10
  1250. * BINARY MAINTENANCE LOG MESSAGE.
  1251.  
  1252. BML BSS 0
  1253.  
  1254. HDR1 VFD 36/0 RESERVED
  1255. VFD 12/BMS1LC LENGTH OF MESSAGE
  1256. VFD 12/MLDY MESSAGE TYPE
  1257.  
  1258. VFD 12//COMSDFS/RM0115 MESSAGE ID
  1259.  
  1260. BMLSC VFD 4//COMSDFS/D1XY DRIVER TYPE
  1261. VFD 1/0 RESERVED
  1262. VFD 7/0 SYMPTOM CODE
  1263.  
  1264. BMLPP VFD 6/ PP NUMBER
  1265. VFD 6/ CHANNEL NUMBER
  1266.  
  1267. BMLUN VFD 6/0 EQUIPMENT NUMBER
  1268. VFD 6/ UNIT NUMBER
  1269.  
  1270. VFD 12/0 RESERVED
  1271.  
  1272. BMLEO VFD 12/ EST ORDINAL
  1273.  
  1274. BMLRC VFD 6/ RETRY COUNT
  1275. VFD 4/0 RESERVED
  1276. VFD 1/0 READ OPERATION
  1277. * VFD 1/1 WRITE OPERATION
  1278. VFD 1/0 RECOVERED ERROR
  1279. * VFD 1/1 UNRECOVERED ERROR
  1280.  
  1281. BMLCR VFD 6/ CHANNEL USED FOR RECOVERY
  1282. VFD 6/0 RESERVED
  1283.  
  1284. BMLMF VFD 12/ MAINFRAME ID
  1285.  
  1286. VFD 12/0 RESERVED
  1287.  
  1288. HDR1L EQU *-HDR1 HEADER LENGTH (PP WORDS)
  1289. HDR1LC EQU HDR1L/5 HEADER LENGTH (CM WORDS)
  1290.  
  1291. BMLEC VFD 12/ ERROR CODE
  1292.  
  1293. BMLCY VFD 12/ CYLINDER
  1294.  
  1295. BMLTS VFD 12/ TRACK AND SECTOR
  1296.  
  1297. BMLLF VFD 12/ LAST FUNCTION
  1298.  
  1299. BMLGS VFD 12/ GENERAL STATUS
  1300.  
  1301. * DETAILED STATUS.
  1302.  
  1303. DST BSS MXSL
  1304.  
  1305.  
  1306. * ADAPTER STATUS.
  1307.  
  1308. BMLAS VFD 6/ UPPER BITS OF FUNCTION CODE
  1309. VFD 18/ OPERATIONAL STATUS REGISTER
  1310. VFD 18/ ADAPTER CONTROL REGISTER
  1311. VFD 18/ ERROR STATUS REGISTER
  1312.  
  1313. * DRIVER TRACE DATA.
  1314.  
  1315. BMLTD VFD 12/0 LAST CALL TO *ERR*
  1316. VFD 12/0 LAST CALL TO *FNC*
  1317. VFD 12/0 LAST CALL TO *FNN*
  1318. VFD 24/0
  1319. BMS1L EQU *-BML LENGTH OF MESSAGE (PP WORDS)
  1320. .A SET BMS1L+4
  1321. BMS1LC EQU .A/5 LENGTH OF MESSAGE (CM WORDS)
  1322. IFI SPACE 4,30
  1323. ** IFI - INITIALIZE FOR I/O.
  1324. *
  1325. * THIS ROUTINE IS CALLED BY THE READ AND WRITE PROCESSORS TO
  1326. * PREPARE FOR THE READ OR WRITE OPERATION.
  1327. *
  1328. * ENTRY (CB) = BUFFER ORDINAL.
  1329. * (FU - FU+1) = FIRST WORD ADDRESS OF UEM.
  1330. * (RW) = READ/WRITE FLAG.
  1331. *
  1332. * EXIT (UA - UA+1) = UEM ADDRESS.
  1333. *
  1334. * USES CM - CM+4, UA - UA+1.
  1335. *
  1336. * MACROS CCBA.
  1337.  
  1338.  
  1339. IFI SUBR ENTRY/EXIT
  1340.  
  1341. * SET UEM ADDRESS.
  1342.  
  1343. CCBA IOLK
  1344. CRD CM
  1345. LDD CM+4
  1346. ADD FU+1
  1347. SHN -6
  1348. STD UA+1
  1349. LDD CM+3
  1350. ADD FU
  1351. SHN 6
  1352. RAD UA+1
  1353. SHN -14
  1354. STD UA
  1355. UJP IFIX RETURN
  1356. IIC SPACE 4,10
  1357. ** IIC - ISSUE I/O COMPLETION REQUEST.
  1358. *
  1359. * ENTRY (CC) = COMPLETION COUNT.
  1360. * (PB) = PREVIOUS BUFFER ORDINAL, IF ANY.
  1361. *
  1362. * EXIT (PB) = 0.
  1363. *
  1364. * USES CC, PB, S1.
  1365. *
  1366. * CALLS CRQ.
  1367.  
  1368.  
  1369. IIC SUBR ENTRY/EXIT
  1370. LDD PB
  1371. ZJN IIC1 IF NO PREVIOUS BUFFER ORDINAL
  1372. AOD CC INCREMENT COMPLETION COUNT
  1373. LDN 0 CLEAR PREVIOUS BUFFER ORDINAL
  1374. STD PB
  1375. IIC1 LDD CC
  1376. SHN **
  1377. IICA EQU *-1
  1378. ZJN IICX IF NOT AT THRESHOLD
  1379. LDK MMXN SET EXCHANGE RETRY LIMIT
  1380. STD S1
  1381. IIC2 RJM CRQ ISSUE COMPLETION REQUEST
  1382. ZJN IICX IF NO PENDING REQUEST
  1383. SOD S1
  1384. PJN IIC2 IF NOT AT EXCHANGE RETRY LIMIT
  1385. UJN IICX RETURN
  1386.  
  1387.  
  1388. IICB BSS 0
  1389. CON SHNI+77-0
  1390. CON SHNI+77-1
  1391. IMF SPACE 4,10
  1392. ** IMF - ISSUE MONITOR FUNCTION.
  1393. *
  1394. * ENTRY (A) = MONITOR FUNCTION CODE.
  1395. *
  1396. * EXIT (A) = 0.
  1397. * (CM - CM+4) = COMPLETED PP OUTPUT REGISTER IMAGE.
  1398. *
  1399. * USES S1.
  1400. *
  1401. * CALLS CRQ, FTN.
  1402.  
  1403.  
  1404. IMF SUBR ENTRY/EXIT
  1405. STD S1 SAVE MONITOR FUNCTION CODE
  1406. IMF1 RJM CRQ CHECK FOR FUNCTION REISSUE REQUIRED
  1407. NJN IMF1 IF PREVIOUS FUNCTION NOT YET COMPLETE
  1408. LDD S1
  1409. RJM FTN ISSUE MONITOR FUNCTION
  1410. UJN IMFX RETURN
  1411. ISF SPACE 4,25
  1412. ** ISF - ISSUE SEEK OPERATION.
  1413. *
  1414. * THIS ROUTINE ISSUES THE SEEK FUNCTION.
  1415. *
  1416. * ENTRY (CB) = BUFFER ORDINAL.
  1417. * (CS) = CHANNEL RESERVATION STATUS.
  1418. *
  1419. * EXIT (A) .EQ. 0 IF UNIT ON-CYLINDER.
  1420. * .NE. 0 IF DRIVE RESERVED TO OTHER CONTROLLER, OR
  1421. * POSITIONER BUSY.
  1422. * (CS) = BIT 3 SET IF CONTROLLER HARDWARE RESERVE IS
  1423. * HELD. BIT 3 IS CLEAR IF *OPERATION COMPLETE*
  1424. * FUNCTION WAS ISSUED.
  1425. * (CA - CA+2) = PHYSICAL ADDRESS OF SECTOR.
  1426. * TO *ERR* IF ERROR.
  1427. *
  1428. * USES CS, EC, CA - CA+4.
  1429. *
  1430. * CALLS ERR, FNC, GGS, RHR.
  1431. *
  1432. * MACROS CCBA.
  1433.  
  1434.  
  1435. ISF SUBR ENTRY/EXIT
  1436. CCBA PAD1 GET PHYSICAL ADDRESS FROM CBT ENTRY
  1437. CRD CA
  1438. LDD CA+2 SET HEAD NUMBER
  1439. SHN 14
  1440. LMD TH SET SECTOR SIZE FIELD
  1441. ERRNZ SSIZ-1000 CODE DEPENDS ON VALUE
  1442. STD CA+2
  1443. SHN -14 SET SECTOR NUMBER
  1444. STD CA+3
  1445. LDN FCSK ISSUE SEEK FUNCTION
  1446. RJM FNC
  1447. MJN ISF3 IF FUNCTION TIMEOUT
  1448. LDN FCSKL OUTPUT SEEK PARAMETERS
  1449. OAM CA,CH
  1450. ZJN ISF1 IF ALL DATA WAS TAKEN
  1451. LCN IDTE SET *INCOMPLETE DATA TRANSFER* ERROR CODE
  1452. UJN ISF2 PROCESS ERROR
  1453.  
  1454. ISF1 EJM ISF4,CH IF LAST BYTE TRANSFERRED
  1455. SBN 1
  1456. NJN ISF1 IF NOT TIMEOUT
  1457. LCN CHFE SET *CHANNEL FAILURE* ERROR CODE
  1458. ISF2 STD EC
  1459. ISF3 RJM ERR PROCESS ERROR
  1460.  
  1461. ISF4 DCN CH+40
  1462. RJM GGS GET GENERAL STATUS
  1463. MJN ISF3 IF STATUS WAS NOT OBTAINED
  1464. ZJN ISF5 IF NO ERROR AND ON-CYLINDER
  1465. SHN 21-13
  1466. MJN ISF3 IF ABNORMAL TERMINATION
  1467. SHN 21-3-21+13
  1468. MJN ISF6 IF DRIVE RESERVED TO OPPOSITE ACCESS
  1469. ISF5 LDD CS SET HARDWARE RESERVE FLAG
  1470. SCN 10
  1471. LMN 10
  1472. STD CS
  1473. LDD GS
  1474. ZJN ISF6 IF ON-CYLINDER
  1475. SHN 21-1
  1476. PJN ISF3 IF NOT BUSY STATUS
  1477. RJM RHR RELEASE HARDWARE RESERVES
  1478. NJN ISF3 IF ERROR
  1479. LDN 1 SET EXIT STATUS
  1480. ISF6 LJM ISFX RETURN
  1481. MCA SPACE 4,10
  1482. ** MCA - MASTER CLEAR ADAPTER.
  1483. *
  1484. * EXIT (A) .EQ. 0, IF MASTER CLEAR SUCCESSFUL.
  1485. * .LT. 0, IF MASTER CLEAR FAILED.
  1486. *
  1487. * USES T1.
  1488. *
  1489. * CALLS FNC, FNN, GGS.
  1490. *
  1491. * MACROS DELAY.
  1492.  
  1493.  
  1494. MCA SUBR ENTRY/EXIT
  1495. LDN 1
  1496. STD T1
  1497. DCN CH+40 INSURE CHANNEL IN CORRECT STATE
  1498. MCA1 LDC FCMC MASTER CLEAR THE CHANNEL ADAPTER
  1499. RJM FNN
  1500. MJN MCA3 IF ERROR ON CHANNEL ACCESS
  1501. LDC FCWC WRITE ADAPTER CONTROL REGISTER
  1502. RJM FNC
  1503. MJN MCA3 IF ERROR ON CHANNEL ACCESS
  1504. LDC 20400 60 BIT CM WORD ACCESS AND NO ERROR CLEAR
  1505. OAN CH
  1506. MCA2 SBN 2
  1507. MJN MCA3 IF TIMEOUT ON CONTROL REGISTER WRITE
  1508. FJM MCA2,CH IF DATA NOT ACCEPTED
  1509. DCN CH+40
  1510. DELAY
  1511. RJM GGS GET GENERAL STATUS
  1512. ZJN MCAX IF STATUS OK
  1513. SOD T1
  1514. PJN MCA1 IF NEED TO TRY AGAIN
  1515. MCA3 DCN CH+40
  1516. UJP MCAX RETURN WITH ERROR INDICATION
  1517. OVI SPACE 4,25
  1518. ** OVI - OBTAIN AND VERIFY *PUT* INTERLOCK.
  1519. *
  1520. * THIS ROUTINE ATTEMPTS TO OBTAIN THE *PUT* INTERLOCK AND IF
  1521. * SUCCESSFUL, VERIFIES THAT THE BUFFER FOR WHICH THE SEEK WAS
  1522. * ISSUED IS STILL CURRENT IN THE QUEUE.
  1523. *
  1524. * ENTRY (CA+1 - CA+3) = ADDRESS USED FOR SEEK.
  1525. * (CB) = BUFFER ORDINAL.
  1526. * (ER) = RECOVERY IN PROGRESS FLAG.
  1527. * (IL) = NONZERO IF THE *PUT* INTERLOCK IS ALREADY HELD.
  1528. * (PO) = *PUT* ORDINAL.
  1529. * (PR) = SPECIAL *PUT* REQUEST PROCESSING FLAG.
  1530. *
  1531. * EXIT (A) = 0 IF *PUT* ENTRY IS INTERLOCKED AND BUFFER IS
  1532. * STILL CURRENT IN QUEUE.
  1533. * = NONZERO IF *PUT* ENTRY IS INTERLOCKED BY OTHER
  1534. * DRIVER OR THE BUFFER FOR WHICH THE SEEK WAS
  1535. * PERFORMED HAS ALREADY BEEN PROCESSED BY THE
  1536. * OTHER DRIVER.
  1537. * (IL) = 1 IF (A) = 0.
  1538. *
  1539. * USES IL, CM+1 - CM+2, CN - CN+4.
  1540. *
  1541. * CALLS RPI.
  1542. *
  1543. * MACROS CCBA, CPTA, MONITOR.
  1544.  
  1545.  
  1546. OVI2 LDN 0 INDICATE *PUT* INTERLOCKED AND BUFFER OK
  1547.  
  1548. OVI SUBR ENTRY/EXIT
  1549. LDD IL
  1550. NJN OVI2 IF THIS DRIVER ALREADY HAS *PUT* INTERLOCK
  1551. LDK SUIS
  1552. STD CM+1
  1553. LDD PO
  1554. STD CM+2
  1555. MONITOR BIOM ISSUE INTERLOCK REQUEST
  1556. LDD CM+1
  1557. NJN OVIX IF *PUT* IS INTERLOCKED BY OTHER DRIVER
  1558. AOD IL SET *PUT* INTERLOCK FLAG
  1559. LDC CREQ UPDATE *CCT* TABLE
  1560. OVIA EQU *-2 (*CCT* FWA SET BY *PRS*)
  1561. CWD IL
  1562. LDD ER
  1563. NJN OVI2 IF RECOVERY IN PROGRESS
  1564. LDD PR
  1565. NJN OVI2 IF SPECIAL PUT REQUEST PROCESSING
  1566.  
  1567. * VERIFY THAT THE BUFFER FOR WHICH THE SEEK WAS ISSUED IS STILL
  1568. * CURRENT IN THE QUEUE.
  1569.  
  1570. CPTA UNCT
  1571. CRD CN
  1572. LDD CN+3
  1573. LMD CB
  1574. NJN OVI1 IF CURRENT CBT ORDINAL CHANGED
  1575. CCBA HSLK GET *PUT* ORDINAL FROM CBT ENTRY
  1576. CRD CN
  1577. LDD CN+4
  1578. LMD PO
  1579. NJN OVI1 IF *PUT* ORDINALS DO NOT MATCH
  1580. CCBA PAD1 GET PHYSICAL ADDRESS FROM CBT ENTRY
  1581. CRD CN
  1582. LDD CN+1
  1583. LMD CA+1
  1584. NJN OVI1 IF NO CYLINDER MATCH
  1585. LDD CA+2 TRACK
  1586. LPN 77
  1587. SHN 6
  1588. LMD CA+3 SECTOR
  1589. LMD CN+2
  1590. ZJN OVI1.1 IF BUFFER OK
  1591. OVI1 RJM RPI RELEASE *PUT* INTERLOCK
  1592. LDN 1 INDICATE VERIFICATION FAILURE
  1593. OVI1.1 UJP OVIX RETURN
  1594. PDT SPACE 4,20
  1595. ** PDT - PROCESS DATA TRANSFER.
  1596. *
  1597. * THIS ROUTINE PREPARES FOR AND STARTS THE DATA TRANSFER WHEN A
  1598. * REQUEST IS FOUND IN THE *PUT* AND THE SEEK HAS COMPLETED. IT
  1599. * WILL CALL THE PROPER ROUTINE FOR THE DIRECTION OF THE I/O.
  1600. * THIS ROUTINE WILL RETURN TO THE MAIN LOOP ONLY WHEN THE
  1601. * TRANSFER CANNOT CONTINUE ON THE CURRENT UNIT.
  1602. *
  1603. * ENTRY (EC) = ERROR CODE IF ERROR RECOVERY IS IN PROGRESS.
  1604. * (PO) = *PUT* ORDINAL.
  1605. * (RW) = READ/WRITE FLAG.
  1606. *
  1607. * USES NB, PB, TB, T1.
  1608. *
  1609. * CALLS ERR, FNN, OVI, RHR, RIO, RPI, WIO.
  1610.  
  1611.  
  1612. PDT SUBR ENTRY/EXIT
  1613. RJM OVI OBTAIN *PUT* INTERLOCK AND VERIFY BUFFER
  1614. NJN PDT1 IF UNABLE TO INTERLOCK *PUT*/WRONG BUFFER
  1615. STD NB CLEAR NEXT BUFFER ORDINAL
  1616. STD PB CLEAR PREVIOUS BUFFER ORDINAL
  1617. LDC FCCT CLEAR THE T REGISTERS
  1618. RJM FNN
  1619. MJN PDT2 IF ERROR ENCOUNTERED
  1620. LDM IICB,RW SET COMPLETION REQUEST THRESHOLD
  1621. STM IICA
  1622. LDM PDTA,RW STORE SUBROUTINE ADDRESS
  1623. STD T1
  1624. RJM 0,T1 ENTER DATA TRANSFER ROUTINE
  1625.  
  1626. * CONTROL RETURNS HERE AFTER THE DATA TRANSFER IS COMPLETED.
  1627.  
  1628. PDT1 RJM RHR RELEASE HARDWARE RESERVES
  1629. ZJN PDT3 IF NO ERROR
  1630. LDD EC
  1631. NJN PDT3 IF ERROR RECOVERY IS IN PROGRESS
  1632. PDT2 RJM ERR CALL ERROR PROCESSOR
  1633.  
  1634. PDT3 RJM RPI RELEASE *PUT* INTERLOCK
  1635. UJP PDTX RETURN
  1636.  
  1637.  
  1638. PDTA BSS 0 PROCESSOR ADDRESS TABLE
  1639. CON RIO
  1640. CON WIO
  1641. PFR SPACE 4,15
  1642. ** PFR - PREPARE FOR RETRY ATTEMPT.
  1643. *
  1644. * THIS ROUTINE DOES WHATEVER IS NECESSARY TO PREPARE FOR THE
  1645. * NEXT RETRY ATTEMPT. ITS DUTIES INCLUDE PLUGGING INSTRUCTIONS
  1646. * TO FORCE RETURN TO THE ERROR PROCESSOR FOLLOWING RECOVERY.
  1647. *
  1648. * ENTRY (RW) = READ/WRITE FLAG.
  1649. *
  1650. * USES T1, T2.
  1651.  
  1652.  
  1653. PFR SUBR ENTRY/EXIT
  1654. LDD RW
  1655. SHN 1
  1656. STD T1
  1657. LDM PFRA,T1
  1658. STD T2
  1659. LDM PFRA+1,T1
  1660. STI T2
  1661. UJN PFRX RETURN
  1662.  
  1663.  
  1664. PFRA BSS 0
  1665. CON RIOC,UJNI+RIO12-RIOC
  1666. CON WIOC,UJNI+WIO8-WIOC
  1667.  
  1668. ERRNG RIO12-RIOC CODE DEPENDS ON VALUE
  1669. ERRNG WIO8-WIOC CODE DEPENDS ON VALUE
  1670. PRE SPACE 4,20
  1671. ** PRE - PRESET ERROR PROCESSOR.
  1672. *
  1673. * THIS ROUTINE PERFORMS OPERATIONS NECESSARY TO PREPARE THE
  1674. * DRIVER FOR ERROR PROCESSOR EXECUTION.
  1675. *
  1676. * EXIT (A) = 0 IF ERROR PROCESSING SHOULD CONTINUE.
  1677. * (EC) = 1 IF ERROR ON PREVIOUS SECTOR.
  1678. * (PB) = PREVIOUS BUFFER ORDINAL.
  1679. * (RS) = RECOVERY STATUS.
  1680. * (T5) = EST ORDINAL.
  1681. * (TEPA) = 1 IF VERIFICATION/INTERLOCK REJECT.
  1682. *
  1683. * USES CB, EC, GS, PB, RS, T5, CM - CM+4.
  1684. *
  1685. * CALLS CRQ, FNN, OVI.
  1686. *
  1687. * MACROS CPTA.
  1688.  
  1689.  
  1690. PRE4 AOM TEPA SET VERIFICATION/INTERLOCK FAILURE FLAG
  1691.  
  1692. PRE SUBR ENTRY/EXIT
  1693. DCN CH+40 DISCONNECT CHANNEL
  1694. LDML FNCA SAVE CURRENT FUNCTION
  1695. STM BMLLF
  1696. SHN -6
  1697. SCN 77
  1698. STM BMLAS
  1699. LDML FNCB SAVE LAST ADAPTER FUNCTION
  1700. STM BMLTD+4
  1701. SHN -14
  1702. STM BMLTD+3
  1703. LDD EC SAVE CURRENT ERROR CODE
  1704. SHN 21-13
  1705. PJN PRE1 IF NOT COMPLEMENTED
  1706. LDD EC
  1707. LMC 7777
  1708. UJN PRE2 CONTINUE
  1709.  
  1710. PRE1 LDD EC
  1711. PRE2 SHN 6
  1712. RAM BMLTD+3
  1713. LDM ERR SAVE LAST CALL TO *ERR*
  1714. STM BMLTD
  1715. LDM FNC SAVE LAST CALL TO *FNC*
  1716. STM BMLTD+1
  1717. LDM FNN SAVE LAST CALL TO *FNN*
  1718. STM BMLTD+2
  1719. LCN 0 INITIALIZE RECOVERY STATUS
  1720. STD RS
  1721. STD GS PRESET GENERAL STATUS = 7777
  1722. RJM OVI GET *PUT* INTERLOCK (IF NOT ALREADY HELD)
  1723. NJP PRE4 IF INTERLOCK NOT OBTAINED
  1724. LDC LDNI+FCRD
  1725. STM RIOA
  1726. ADN FCWR-FCRD
  1727. STM WIOA
  1728. CPTA UNCT GET EST ORDINAL
  1729. CRD CM
  1730. LDD CM+1
  1731. STD T5
  1732. LDD EP
  1733. ZJN PRE3 IF NOT PREVIOUS SECTOR ERROR
  1734. LDD EC
  1735. LMC 7777-FTOE
  1736. NJN PRE3 IF NOT PREVIOUS SECTOR ERROR
  1737. LDN FTOE
  1738. STD EC
  1739. LDD PB RESET CURRENT BUFFER TO PREVIOUS
  1740. ZJN PRE3 IF NO PREVIOUS BUFFER
  1741. STD CB
  1742. LDN 0 CLEAR PREVIOUS BUFFER ORDINAL
  1743. STD PB
  1744. PRE3 RJM CRQ IDLE PENDING MONITOR FUNCTIONS
  1745. NJN PRE3 IF FUNCTION PENDING
  1746. STD EP CLEAR PREVIOUS SECTOR ERROR FLAG
  1747. LJM PREX RETURN
  1748. RCH SPACE 4,15
  1749. ** RCH - REQUEST CHANNEL.
  1750. *
  1751. * ENTRY (IR+4) = CHANNEL NUMBER.
  1752. * (CS) = CHANNEL RESERVATION STATUS.
  1753. *
  1754. * EXIT (A) .NE. 0 IF CHANNEL ASSIGNED.
  1755. * .EQ. 0 IF CHANNEL NOT ASSIGNED.
  1756. *
  1757. * USES CM+1, CS.
  1758. *
  1759. * MACROS MONITOR.
  1760.  
  1761.  
  1762. RCH SUBR ENTRY/EXIT
  1763. LDD CS
  1764. LPN 1
  1765. NJN RCHX IF CHANNEL ALREADY ASSIGNED
  1766. LDD IR+4
  1767. STD CM+1
  1768. MONITOR CCHM
  1769. LDD CM+2
  1770. ZJN RCHX IF CHANNEL NOT ASSIGNED
  1771. SCF *+2,CH UNCONDITIONALLY SET CHANNEL FLAG
  1772. AOD CS SET CHANNEL RESERVED FLAG
  1773. UJN RCHX RETURN
  1774. RHR SPACE 4,10
  1775. ** RHR - RELEASE HARDWARE RESERVES.
  1776. *
  1777. * ENTRY (CS) = CHANNEL STATUS.
  1778. *
  1779. * EXIT (A) = 0 IF NO ERROR.
  1780. *
  1781. * USES CS, S1.
  1782. *
  1783. * CALLS FNC.
  1784.  
  1785.  
  1786. RHR SUBR ENTRY/EXIT
  1787. LDD CS
  1788. LPN 10
  1789. ZJN RHRX IF CONTROLLER NOT RESERVED
  1790. LDN FCOC ISSUE *OPERATION COMPLETE* FUNCTION
  1791. RJM FNC
  1792. SHN 0-21 SAVE ERROR STATUS
  1793. STD S1
  1794. DCN CH+40
  1795. LCN 10 CLEAR CONTROLLER RESERVE FLAG
  1796. RAD CS
  1797. LDD S1 SET REPLY STATUS
  1798. UJN RHRX RETURN
  1799. RIO SPACE 4,40
  1800. ** RIO - PERFORM READ I/O OPERATIONS.
  1801. *
  1802. * ENTRY (CB) = CURRENT BUFFER ORDINAL.
  1803. * (EP) = 0.
  1804. * (NB) = 0.
  1805. * (PB) = 0.
  1806. *
  1807. * EXIT (PB) = ORDINAL OF LAST BUFFER PROCESSED.
  1808. *
  1809. * USES CB, EC, EP, NB, PB, SR+2.
  1810. *
  1811. * CALLS ERR, FNC, FNN, GGS, IFI, WFT, WTC, WTR.
  1812. *
  1813. * MACROS CCBA.
  1814.  
  1815.  
  1816. RIO SUBR ENTRY/EXIT
  1817. RJM IFI INITIALIZE FOR I/O
  1818. RIO1 RJM WTR WRITE T PRIME REGISTER
  1819. MJN RIO5 IF ERROR WRITING T REGISTER
  1820. LDN FCRD ISSUE READ FUNCTION
  1821. * LDN FCCO (CONTROLLER ERROR RECOVERY IN PROGRESS)
  1822. RIOA EQU *-1
  1823. RJM FNN
  1824. PJN RIO2 IF NO ERROR
  1825. AOD EP SET PREVIOUS SECTOR ERROR FLAG
  1826. UJN RIO5 CALL ERROR PROCESSOR
  1827.  
  1828. RIO2 LDC FCDI+HLEN INITIATE DMA TRANSFER
  1829. RJM FNC
  1830. MJN RIO5 IF ERROR ON FUNCTION
  1831. RIO3 FJM RIO6,CH IF CHANNEL FULL
  1832. SBN 1
  1833. NJN RIO3 IF NOT TIMEOUT
  1834. LCN IDTE SET *INCOMPLETE DATA TRANSFER* ERROR CODE
  1835. RIO4 STD EC
  1836. RIO5 RJM ERR CALL ERROR PROCESSOR
  1837.  
  1838. RIO6 LDN HLEN INPUT HEADER DATA
  1839. IAM BUFF,CH
  1840. ZJN RIO8 IF DATA TRANSFER COMPLETE
  1841. SFM RIO7,CH IF CHANNEL PARITY ERROR
  1842. LCN IDTE SET *INCOMPLETE DATA TRANSFER* ERROR CODE
  1843. UJN RIO4 SET ERROR CODE
  1844.  
  1845. RIO7 LCN CHPE SET *CHANNEL PARITY* ERROR CODE
  1846. UJN RIO4 SET ERROR CODE
  1847.  
  1848. RIO8 DCN CH+40 INPUT TO PP COMPLETE
  1849. RJM WTC STORE LINKAGE BYTES
  1850. RJM WFT WAIT FOR TRANSFER COMPLETION
  1851. MJN RIO4 IF ERROR ENCOUNTERED
  1852. ZJN RIO12 IF NO CONSECUTIVE REQUEST
  1853. * UJN RIO12 (ERROR RECOVERY IN PROGRESS)
  1854. RIOC EQU *-1
  1855. LDN 0 CLEAR NEXT BUFFER ORDINAL
  1856. STD NB
  1857. LJM RIO1 PROCESS NEXT REQUEST
  1858.  
  1859. RIO12 RJM GGS GET GENERAL STATUS
  1860. ZJP RIOX IF NO ERROR
  1861. LDD PB BACKUP TO PREVIOUS BUFFER
  1862. STD CB
  1863. LDN 0 AVOID BUFFER COMPLETION
  1864. STD PB
  1865. LJM RIO5 CALL ERROR PROCESSOR
  1866. RLC SPACE 4,10
  1867. ** RLC - RELOAD CCC CONTROLWARE IF NECESSARY.
  1868. *
  1869. * RLC WILL RELOAD CONTROLWARE BEFORE THE FINAL RETRY FOR EACH
  1870. * ACCESS, PROVIDED THAT THE ERROR CODE IS LESS THAN *NRVE*.
  1871. *
  1872. * EXIT (A) .EQ. 0 IF LOAD WAS SUCCESSFUL OR UNNECESSARY.
  1873. * .NE. 0 IF LOAD WAS ATTEMPTED AND FAILED.
  1874. *
  1875. * USES T1, CM - CM+4, CN - CN+4.
  1876. *
  1877. * CALLS FNC, GGS, MCA.
  1878. *
  1879. * MACROS DELAY, MONITOR.
  1880.  
  1881.  
  1882. RLC8 LDN 0 INDICATE NO ERROR
  1883. RLC9 DCN CH+40
  1884.  
  1885. RLC SUBR ENTRY/EXIT
  1886. LDD EC
  1887. SBK NRVE
  1888. PJN RLC8 IF NOT A CANDIDATE FOR CONTROLWARE RELOAD
  1889. LDM TREC,EC
  1890. SBD RC
  1891. ZJN RLC1 IF TIME FOR RELOAD ON SECONDARY ACCESS
  1892. SBD RC
  1893. NJN RLC2 IF NOT TIME FOR RELOAD ON PRIMARY ACCESS
  1894. RLC1 RJM MCA MASTER CLEAR ADAPTOR
  1895.  
  1896. * CHECK FOR SYSEDIT IN PROGRESS AND DELAY IF NECESSARY.
  1897.  
  1898. RLC2 LDK PLDP CHECK PERIPHERAL DIRECTORY POINTER
  1899. CRD CM
  1900. LDD CM
  1901. ADD CM+1
  1902. NJN RLC3 IF SYSEDIT NOT IN PROGRESS
  1903. DELAY
  1904. UJN RLC2 RECHECK SYSEDIT IN PROGRESS
  1905.  
  1906. * FIND CONTROLWARE.
  1907.  
  1908. RLC3 LDN ZERL
  1909. CRD CM
  1910. LDD MA PUT CONTROLWARE ID IN MESSAGE BUFFER
  1911. CWM RLCA,ON
  1912. MONITOR SCDM SEARCH CENTRAL DIRECTORY
  1913. LDD CM+3
  1914. SHN 14
  1915. LMD CM+4
  1916. CRD CM READ *PST* ENTRY
  1917. LDD CM+1
  1918. SHN 21-12
  1919. PJN RLC4 IF NOT CM RESIDENT
  1920. LDD CM+3 GET ADDRESS OF *RCL* ENTRY
  1921. SHN 14
  1922. LMD CM+4
  1923. ADN 1
  1924. CRD CN READ 5200 RECORD HEADER
  1925. ADN 1 SET FWA OF 5200 RECORD DATA
  1926. STD CM+4
  1927. SHN -14
  1928. STD CM+3
  1929. LCN 1 ADJUST WORD COUNT FOR HEADER
  1930. RAD CN+4
  1931.  
  1932. * LOAD CONTROLWARE.
  1933.  
  1934. LDK FCAL AUTOLOAD FUNCTION
  1935. RJM FNC ISSUE FUNCTION AND ACTIVATE CHANNEL
  1936. ZJN RLC5 IF NO ERROR ON FUNCTION
  1937. RLC4 UJP RLC9 RETURN WITH ERROR INDICATION
  1938.  
  1939. RLC5 LDD CN+4
  1940. RLC6 SBD HN
  1941. MJN RLC7 IF LESS THAN 100B WORDS LEFT
  1942. LDN 0
  1943. RLC7 ADD HN
  1944. STD T1
  1945. LDD CM+3
  1946. SHN 14
  1947. LMD CM+4
  1948. CRM BUFF,T1 READ BLOCK OF CONTROLWARE FROM CM
  1949. STD CM+4 UPDATE BLOCK ADDRESS
  1950. SHN -14
  1951. STD CM+3
  1952. LDD T1 SET BYTES TO TRANSFER
  1953. SHN 2
  1954. ADD T1
  1955. OAM BUFF,CH LOAD BLOCK OF CONTROLWARE TO CCC
  1956. FJM *,CH IF TRANSFER NOT COMPLETE
  1957. NJN RLC4 IF INCOMPLETE TRANSFER
  1958. LDD CN+4
  1959. SBD T1
  1960. STD CN+4
  1961. NJN RLC6 IF MORE WORDS TO TRANSFER
  1962. DCN CH+40
  1963. DELAY
  1964. RJM GGS GET GENERAL STATUS
  1965. UJP RLCX RETURN
  1966.  
  1967.  
  1968. RLCA VFD 42/0LMA464,18/0 CONTROLWARE NAME
  1969. RPI SPACE 4,10
  1970. ** RPI - RELEASE *PUT* INTERLOCK.
  1971. *
  1972. * ENTRY (CC) = COMPLETION COUNT.
  1973. * (IL) = *PUT* INTERLOCK FLAG.
  1974. * (PB) = PREVIOUS BUFFER ORDINAL.
  1975. * (PO) = *PUT* ORDINAL.
  1976. * (RW) = READ/WRITE FLAG.
  1977. * (TB) = TOTAL BUFFER COUNT.
  1978. *
  1979. * USES CC, IL, PB, CM - CM+4.
  1980. *
  1981. * MACROS MONITOR.
  1982.  
  1983.  
  1984. RPI SUBR ENTRY/EXIT
  1985. LDD IL
  1986. ZJN RPIX IF *PUT* NOT INTERLOCKED
  1987. LDD PB
  1988. ZJN RPI1 IF NO PREVIOUS BUFFER
  1989. LDN 1 ACCOUNT FOR PREVIOUS BUFFER
  1990. RPI1 ADD CC
  1991. LMC 4000 SET *RELEASE INTERLOCK* FLAG
  1992. STD CM+3
  1993. LDD TB SET TOTAL BUFFER COUNT
  1994. STD CM+4
  1995. LDD PO
  1996. STD CM+2
  1997. LDN DCBS CLEAR UNIT INTERLOCK
  1998. STD CM+1
  1999. LDN 0 CLEAR COMPLETION COUNT BEFORE *CRQ* CALL
  2000. STD CC
  2001. MONITOR BIOM
  2002. * LDN 0
  2003. STD IL CLEAR *PUT* INTERLOCK FLAG
  2004. STD PB CLEAR PREVIOUS BUFFER ORDINAL
  2005. LDC CREQ UPDATE *CCT* TABLE
  2006. RPIA EQU *-2 (*CCT* FWA SET BY *PRS*)
  2007. CWD IL
  2008. UJP RPIX RETURN
  2009. RTM SPACE 4,25
  2010. ** RTM - REQUEST TRACK FLAW IF MEDIA ERROR.
  2011. *
  2012. * THIS ROUTINE DETERMINES IF THE ERROR RESULTED FROM A MEDIA
  2013. * FAILURE. IF IT DID, *CPUMTR* WILL BE CALLED TO PLACE THE
  2014. * LOGICAL TRACK NUMBER IN THE MST SO *1MV* CAN PERFORM A MEDIA
  2015. * VERIFICATION WHEN THE TRACK IS RELEASED. AN ERROR LOG
  2016. * MESSAGE IS ISSUED INFORMING THE OPERATOR THAT A MEDIA FAILURE
  2017. * OCCURRED BUT THE TRACK HAS NOT YET BEEN FLAWED BY THE SYSTEM.
  2018. *
  2019. * ENTRY (CA - CA+3) = PHYSICAL ADDRESS.
  2020. * (CB) = BUFFER ORDINAL.
  2021. * (EC) = ERROR CODE.
  2022. * (T5) = EST ORDINAL.
  2023. *
  2024. * USES T1, CM - CM+4.
  2025. *
  2026. * CALLS C2D, IMB.
  2027. *
  2028. * MACROS MONITOR.
  2029.  
  2030.  
  2031. RTM SUBR ENTRY/EXIT
  2032. LDD EC
  2033. LMK PARE
  2034. NJN RTMX IF NOT MEDIA ERROR
  2035. LDD T5 CONVERT AND STORE EST ORDINAL IN MESSAGE
  2036. SHN -3
  2037. RJM C2D
  2038. STM RTMB+1
  2039. LDD T5
  2040. STD CM+1 STORE EST ORDINAL FOR *SMDM*
  2041. LPN 7
  2042. SHN 6
  2043. ADC 2R0,
  2044. STM RTMB+2
  2045. LDD CA+1
  2046. SHN 1
  2047. ADC 4000
  2048. STD CM+2
  2049. LDD CA+2 PHYSICAL TRACK
  2050. LPN 77
  2051. STD T1
  2052. SHN 1
  2053. ADD T1
  2054. ERRNZ PSPT-3 CODE DEPENDS ON VALUE
  2055. ADD CA+3
  2056. SBK PSLT
  2057. MJN RTM1 IF FIRST LOGICAL TRACK OF CYLINDER
  2058. AOD CM+2
  2059. RTM1 LDD CM+2 CONVERT AND STORE TRACK NUMBER IN MESSAGE
  2060. SHN -6 CONVERT UPPER 6 BITS
  2061. RJM C2D
  2062. STM RTMB+4 STORE RESULT IN DISPLAY BUFFER
  2063. LDD CM+2 CONVERT LOWER 6 BITS
  2064. LPN 77
  2065. RJM C2D
  2066. STM RTMB+5 STORE RESULT IN DISPLAY BUFFER
  2067. LDK SFTS SET SUBFUNCTION
  2068. STD CM+3
  2069. MONITOR SMDM
  2070. LDD CM+1
  2071. NJN RTM2 IF THIS TRACK FLAW ALREADY REQUESTED
  2072. LDC RTMA ISSUE ERROR LOG MESSAGE
  2073. RJM IMB
  2074. RTM2 UJP RTMX RETURN
  2075.  
  2076.  
  2077. RTMA VFD 24/0 RESERVED
  2078. VFD 12/1 ERRLOG ALERT FLAG
  2079. VFD 12/RTMAL MESSAGE LENGTH
  2080. VFD 12/ELDY ERRLOG DAYFILE
  2081.  
  2082. RTMB DATA C*EQXXX,TKNNNN, MEDIA DEFECT ENCOUNTERED.*
  2083.  
  2084. .1 SET *-RTMA+4
  2085. RTMAL EQU .1/5
  2086. SAS SPACE 4,10
  2087. ** SAS - SAVE ADAPTER STATUS.
  2088. *
  2089. * EXIT (A) .LT. 0, IF ERRORS READING STATUS.
  2090. *
  2091. * USES T1, CM - CM+4.
  2092. *
  2093. * CALLS FNC.
  2094.  
  2095.  
  2096. SAS5 DCN CH+40
  2097. LCN 0 INDICATE ERRORS OCCURRED
  2098.  
  2099. SAS SUBR ENTRY/EXIT
  2100. LDN SASAL+1 SET UP READ LOOP
  2101. STD T1
  2102. SAS1 SOD T1
  2103. ZJN SAS4 IF END OF SAVE LOOP
  2104. LDML SASA-1,T1 FUNCTION FOR REGISTER READ
  2105. LMC 400000 INDICATE ADAPTER FUNCTION
  2106. RJM FNC
  2107. MJN SASX IF ERROR ENCOUNTERED
  2108. SAS2 FJM SAS3,CH IF DATA PRESENT
  2109. SBN 1
  2110. ZJN SAS5 IF END OF DELAY
  2111. UJN SAS2 LOOP WAITING FOR DATA
  2112.  
  2113. SAS3 IAN CH
  2114. STML CM-1,T1 SAVE REGISTER DATA
  2115. DCN CH+40
  2116. UJN SAS1 LOOP FOR NEXT REGISTER
  2117.  
  2118. SAS4 LDDL CM+2 SAVE 16 BIT DATA IN BML MESSAGE
  2119. STM BMLAS+4
  2120. SHN -14
  2121. STM BMLAS+3
  2122. LDDL CM+1
  2123. SHN 14
  2124. STM BMLAS+2
  2125. SHN -6
  2126. SCN 77
  2127. RAM BMLAS+3
  2128. LDDL CM
  2129. STM BMLAS+1
  2130. SHN -14
  2131. RAM BMLAS
  2132. LJM SASX RETURN
  2133.  
  2134. SASA CON 0 READ OPERATION STATUS
  2135. CON 0 READ CONTROL REGISTER
  2136. CON 0 READ ERROR STATUS REGISTER
  2137. SASAL EQU *-SASA
  2138. SCD SPACE 4,10
  2139. ** SCD - SET DRIVER DROPPED FLAG.
  2140. *
  2141. * THIS ROUTINE SETS A FLAG IN THE CONTROLWARE TABLE INDICATING
  2142. * THAT THE DRIVER OF THIS CHANNEL HAS DROPPED.
  2143. *
  2144. * EXIT (A) = 0.
  2145. *
  2146. * USES CM+1 - CM+4.
  2147. *
  2148. * MACROS MONITOR.
  2149.  
  2150.  
  2151. SCD SUBR ENTRY/EXIT
  2152. LDD MA STORE *UTEM* PARAMETERS
  2153. CWM SCDB,ON
  2154. LDC **
  2155. SCDA EQU *-1 (CONTROLWARE TABLE ADDRESS)
  2156. STD CM+4
  2157. SHN -14
  2158. STD CM+3
  2159. LDN 1
  2160. STD CM+1
  2161. LDN 0
  2162. STD CM+2
  2163. MONITOR UTEM SET DRIVER DROP FLAG
  2164. UJN SCDX RETURN
  2165.  
  2166.  
  2167. SCDB VFD 1/0,5/0,6/1,6/,42/1
  2168. SSF SPACE 4,15
  2169. ** SSF - SET SUSPECT FLAG.
  2170. *
  2171. * THIS ROUTINE SETS THE SUSPECT FLAG AND THE *E,M* DISPLAY
  2172. * ERROR CODE IN THE MST ENTRY VIA *SEQM* FUNCTIONS, PROVIDED
  2173. * THAT THE *SET SUSPECT* FLAG IS SET IN TABLE *TEPF* FOR THE
  2174. * PARTICULAR TYPE OF ERROR ENCOUNTERED.
  2175. *
  2176. * ENTRY (EC) = ERROR CODE.
  2177. * (RC) = RETRY COUNT.
  2178. * (T5) = EST ORDINAL.
  2179. *
  2180. * USES CM+1 - CM+3.
  2181. *
  2182. * CALLS RTM.
  2183. *
  2184. * MACROS MONITOR.
  2185.  
  2186.  
  2187. SSF SUBR ENTRY/EXIT
  2188. LDD ER
  2189. NJN SSFX IF RECOVERY IN PROGRESS
  2190. LDD EC
  2191. SBK NRVE
  2192. PJN SSF1 IF NO CONTROLWARE RELOAD
  2193. LDM TREC,EC
  2194. SHN -1
  2195. ADN 1
  2196. UJN SSF2 SEE IF TIME TO SET SUSPECT
  2197.  
  2198. SSF1 LDK SURT
  2199. SSF2 SBD RC
  2200. NJN SSFX IF NOT TIME TO SET SUSPECT FLAG
  2201. RJM RTM CHECK FOR MEDIA FAILURE
  2202. LDM TEPF,EC
  2203. SHN 21-7
  2204. PJN SSFX IF SUSPECT FLAG NOT TO BE SET
  2205. LDD T5 SET SUSPECT FLAG
  2206. STD CM+1
  2207. LDN SSES
  2208. STD CM+2
  2209. MONITOR SEQM
  2210. LDD T5 SET ERROR CODE IN MST
  2211. STD CM+1
  2212. LDN STDE
  2213. STD CM+2
  2214. LDN SERS
  2215. STD CM+3
  2216. MONITOR SMDM
  2217. UJP SSFX RETURN
  2218. SUQ SPACE 4,30
  2219. ** SUQ - SCAN UNIT QUEUE.
  2220. *
  2221. * THIS ROUTINE SCANS THE *PUT* ENTRIES OF UNITS ACCESSED BY
  2222. * THIS CHANNEL UNTIL IT HAS SCANNED THE ENTIRE TABLE OR FINDS
  2223. * AN ENTRY ELIGIBLE FOR PROCESSING.
  2224. *
  2225. * ENTRY (TI) = CURRENT *TPOR* INDEX.
  2226. *
  2227. * EXIT (A) .EQ. 0 IF ENTIRE TABLE SCANNED AND NO ELIGIBLE
  2228. * ENTRY FOUND.
  2229. * .NE. 0 IF ENTRY SELECTED.
  2230. * (CB) = CURRENT BUFFER ORDINAL.
  2231. * (ER) = 1 IF ERROR RECOVERY IS IN PROGRESS.
  2232. * (PO) = ORDINAL OF SELECTED *PUT* ENTRY.
  2233. * (RC) = 0 IF ELIGIBLE ENTRY FOUND AND *RECOVERY IN
  2234. * PROGRESS* FLAG IS CLEAR.
  2235. * = N/2+1 WHERE N IS THE RETRY LIMIT FOR THE ERROR
  2236. * CODE SET IN *EC* IF *RECOVERY IN PROGRESS*
  2237. * FLAG IS SET.
  2238. * (RW) = READ/WRITE FLAG.
  2239. * TO *ERR* IF ERROR RECOVERY IS IN PROGRESS FOR
  2240. * SELECTED BUFFER.
  2241. * (TB) = TOTAL BUFFER COUNT.
  2242. *
  2243. * USES CB, EC, ER, PO, RC, RW, S1, TB, TI, CM - CM+4,
  2244. * CN - CN+4, T1 - T5.
  2245. *
  2246. * CALLS ERR, PSR.
  2247. *
  2248. * MACROS CCBA, CPTA, PSR, SFA.
  2249.  
  2250.  
  2251. SUQ8 RJM PSR PROCESS SPECIAL REQUESTS
  2252. SUQ7 LDD TI
  2253. LMN 1
  2254. SUQA EQU *-1
  2255. NJN SUQ1 IF NOT FINISHED WITH *PUT* SCAN
  2256.  
  2257. SUQ SUBR ENTRY/EXIT
  2258. SUQ1 AOD TI ADVANCE *TPOR* INDEX
  2259. ERRNZ TPORE-1 CODE IS VALUE DEPENDENT
  2260. LDM TPOR-1,TI
  2261. NJN SUQ2 IF NOT END OF *TPOR* TABLE
  2262. STD TI RESET INDEX
  2263. UJN SUQ1 CONTINUE
  2264.  
  2265. SUQ2 SHN 21 SET *PUT* ORDINAL
  2266. STD PO
  2267. SHN -21
  2268. STD S1 SET CHANNEL BYTE INDEX
  2269. CPTA UNCT READ *PUT* ENTRY
  2270. CRD CM
  2271. ADK PILL-UNCT
  2272. CRD CN
  2273. LDD CN+3
  2274. LPN 76
  2275. NJN SUQ8 IF SPECIAL REQUESTS PRESENT
  2276. LDD CM
  2277. SHN 21-13
  2278. MJN SUQ7 IF UNIT INTERLOCK SET
  2279. LDD CM+3
  2280. NJN SUQ3 IF REQUEST IN QUEUE
  2281. SUQ2.1 UJN SUQ7 PROCESS NEXT *PUT*
  2282.  
  2283. SUQ3 STD CB SAVE BUFFER ORDINAL
  2284. CCBA IOLK,A READ *CBT* ENTRY
  2285. CRD CN
  2286. ADK HSLK-IOLK
  2287. CRD T1
  2288. SFA EST,CM+1 READ EST ENTRY
  2289. ADK EQDE
  2290. CRD CM
  2291. LDM CM+1,S1
  2292. SHN -11
  2293. LPN 3
  2294. STD T2 SAVE CHANNEL STATE INDICATOR
  2295. LMN 3
  2296. NJN SUQ4 IF CHANNEL NOT DOWN
  2297. SUQ3.1 UJN SUQ2.1 PROCESS NEXT *PUT*
  2298.  
  2299. SUQ4 LDD T1
  2300. SHN 0-12
  2301. ZJN SUQ4.1 IF NOT CHANNEL SPECIFIC REQUEST
  2302. CCBA PAD4 GET CHANNEL FROM CBT ENTRY
  2303. CRD CM
  2304. LDD CM
  2305. SHN -6
  2306. LMD IR+4
  2307. STD T2
  2308. SUQ4.1 LDD T2
  2309. NJN SUQ3.1 IF THIS CHANNEL IN IDLE STATE
  2310. LDD CN SET/CLEAR READ/WRITE FLAG
  2311. SHN 0-11
  2312. LPN 1
  2313. STD RW
  2314. SHN 13-0
  2315. ADN 1
  2316. STD TB
  2317. LDD T1
  2318. SHN 0-13
  2319. STD ER SET/CLEAR RECOVERY IN PROGRESS FLAG
  2320. ZJN SUQ6 IF NOT ERROR RECOVERY
  2321. LDD T1 SAVE ERROR CODE
  2322. LPN 77
  2323. STD T1
  2324. LMC 7777 COMPLEMENT ERROR CODE
  2325. STD EC
  2326. LDM TREC,T1 SET RETRY COUNT = LIMIT/2+1
  2327. SHN -1
  2328. ADN 1
  2329. STD RC INITIALIZE RETRY COUNT
  2330. LDN 0 INITIALIZE PASS COUNTER
  2331. STM ERRA
  2332. RJM ERR CALL ERROR PROCESSOR
  2333. * LJM MST ERROR PROCESSOR RETURNS TO *MST*
  2334.  
  2335. SUQ6 LDD TI SET SCAN LIMIT
  2336. LMC LMNI
  2337. STM SUQA
  2338. LJM SUQX RETURN
  2339. TEP SPACE 4,30
  2340. ** TEP - TERMINATE ERROR PROCESSING.
  2341. *
  2342. * THIS ROUTINE PERFORMS OPERATIONS NECESSARY TO RESTORE THE
  2343. * DRIVER TO ITS NORMAL STATE (NON-ERROR PROCESSING).
  2344. *
  2345. * ENTRY (EC) = ERROR CODE.
  2346. * (PO) = *PUT* ORDINAL.
  2347. * (RS) = RECOVERY STATUS.
  2348. * (RW) = READ/WRITE FLAG.
  2349. *
  2350. * EXIT (EC) = 0.
  2351. * (ER) = 0.
  2352. * (RC) = 0.
  2353. * (RS) = RECOVERY STATUS.
  2354. * 0 RECOVERED BY CONTROLLER.
  2355. * 1 RECOVERED BY DRIVER.
  2356. * 2 UNRESOLVED.
  2357. * 3 UNRECOVERED.
  2358. *
  2359. * USES EC, ER, IL, RC, RS, S2, T1, T2, CM - CM+4.
  2360. *
  2361. * CALLS IBM, RHR, RPI.
  2362. *
  2363. * MACROS MONITOR.
  2364.  
  2365.  
  2366. TEP4 LDN 0
  2367. STD EC CLEAR ERROR CODE
  2368. STD ER CLEAR RECOVERY IN PROGRESS FLAG
  2369. STD RC CLEAR RETRY COUNT
  2370. STM TEPA CLEAR VERIFICATION/INTERLOCK REJECT FLAG
  2371.  
  2372. TEP SUBR ENTRY/EXIT
  2373. LDD RW
  2374. SHN 1
  2375. STD T1
  2376. LDM TEPB,T1 RESTORE INSTRUCTIONS
  2377. STD T2
  2378. LDM TEPB+1,T1
  2379. STI T2
  2380. LDM TEPC,T1
  2381. STD T2
  2382. LDM TEPC+1,T1
  2383. STI T2
  2384. LDC **
  2385. TEPA EQU *-1
  2386. NJP TEP4 IF OTHER DRIVER IS HANDLING ERROR
  2387. LDD EC SAVE ERROR CODE IN CASE FUNCTION TIMEOUT
  2388. STD S2
  2389. RJM RHR RELEASE HARDWARE RESERVES
  2390. LDD S2 RESTORE ERROR CODE
  2391. STD EC
  2392. LDD RS
  2393. LMN 2
  2394. NJN TEP2 IF NOT UNRESOLVED ERROR
  2395.  
  2396. * ISSUING SUBFUNCTION *IOES* OF THE *BIOM* MONITOR FUNCTION
  2397. * CAUSES ONE OF THE FOLLOWING TO OCCUR -
  2398. * A. IF THE RECOVERY IN PROGRESS FLAG IS SET IN THE CBT
  2399. * ENTRY, THE REQUEST WILL BE TERMINATED WITH STATUS
  2400. * RETURNED TO THE PROGRAM THAT ISSUED THE REQUEST.
  2401. * IN THIS CASE IT IS THE RESPONSIBILITY OF THIS
  2402. * DRIVER TO ISSUE MESSAGES TO THE BML, ERROR LOG, JOB
  2403. * DAYFILE AND SYSTEM DAYFILE INDICATING AN
  2404. * UNRECOVERED ERROR OCCURRED.
  2405. * B. IF THE RECOVERY IN PROGRESS FLAG IS CLEAR AND AN
  2406. * ALTERNATE CHANNEL EXISTS (WITH AN ACTIVE DRIVER),
  2407. * THE REQUEST WILL BE MODIFIED TO FORCE CONTINUATION
  2408. * OF ERROR RECOVERY BY THE OTHER DRIVER.
  2409. * C. IF THE RECOVERY IN PROGRESS FLAG IS CLEAR BUT
  2410. * EITHER THERE IS NO ALTERNATE ACCESS PATH OR IT HAS
  2411. * BEEN DOWNED, THE REQUEST WILL BE MODIFIED TO FORCE
  2412. * CONTINUATION OF ERROR PROCESSING ON THIS CHANNEL.
  2413.  
  2414. LDN SETS SET SUBFUNCTION
  2415. STD CM+1
  2416. LDD PO SET *PUT* ORDINAL
  2417. STD CM+2
  2418. LDN 1
  2419. STD CM+3
  2420. LDD EC SET ERROR CODE
  2421. STD CM+4
  2422. MONITOR BIOM
  2423. STD IL CLEAR *PUT* INTERLOCK FLAG
  2424. LDD CM+1
  2425. ZJN TEP2 IF PROCESSING WILL RESUME ON OTHER CHANNEL
  2426. AOD RS SET UNRECOVERED STATUS
  2427.  
  2428. * ISSUE THE BML MESSAGE AND INCREMENT ERROR COUNTERS IF
  2429. * APPROPRIATE FOR THIS ERROR TYPE AND RESOLUTION OF THE ERROR
  2430. * HAS BEEN DETERMINED.
  2431.  
  2432. TEP2 LDD RS
  2433. LMN 2
  2434. ZJN TEP3 IF UNRESOLVED ERROR
  2435. RJM RPI RELEASE *PUT* INTERLOCK
  2436. TEP3 RJM IBM ISSUE BML MESSAGE
  2437.  
  2438. * CLEAR B-DISPLAY MESSAGE.
  2439.  
  2440. LDK ZERL
  2441. CRD CM
  2442. LDD CP
  2443. ADK MS2W
  2444. CWD CM
  2445. UJP TEP4 CONTINUE CLEARING AND RETURN
  2446.  
  2447.  
  2448. TEPB BSS 0
  2449. CON RIOC,ZJNI+RIO12-RIOC
  2450. CON WIOC,ZJNI+WIO8-WIOC
  2451.  
  2452. ERRNG RIO12-RIOC CODE DEPENDS ON VALUE
  2453. ERRNG WIO8-WIOC CODE DEPENDS ON VALUE
  2454.  
  2455. TEPC BSS 0
  2456. CON RIOA,LDNI+FCRD
  2457. CON WIOA,LDNI+FCWR
  2458. WFT SPACE 4,25
  2459. ** WFT - WAIT FOR TRANSFER COMPLETE.
  2460. *
  2461. * ENTRY (RW) = READ/WRITE FLAG.
  2462. *
  2463. * EXIT (A) .LT. 0 IF ERROR ENCOUNTERED.
  2464. * .EQ. 0 IF NO CONSECUTIVE REQUEST FOUND.
  2465. * .GT. 0 IF CONSECUTIVE REQUEST FOUND.
  2466. *
  2467. * USES CB, PB, T1, CM - CM+4, CN - CN+4.
  2468. *
  2469. * CALLS CCS, FNC, FNN, IFI, IIC.
  2470.  
  2471.  
  2472. WFT10 LDC FCCD CLEAR DMA MODE
  2473. RJM FNN
  2474. MJN WFTX IF ERROR ENCOUNTERED
  2475. LDD NB
  2476.  
  2477. WFT SUBR ENTRY/EXIT
  2478. RJM IIC ISSUE I/O COMPLETION REQUEST IF NECESSARY
  2479. RJM CCS CHECK FOR CONSECUTIVE REQUEST
  2480. LDD CB ADVANCE BUFFER POINTERS
  2481. STD PB
  2482. LDD NB
  2483. STD CB
  2484. RJM IFI INITIALIZE FOR NEXT REQUEST
  2485. LDK RTCL
  2486. CRD CN
  2487. LDD NB
  2488. ZJN WFT1 IF NO CONSECUTIVE REQUEST
  2489. LDD RW
  2490. ZJN WFT1 IF READ OPERATION
  2491. LDN HLEN/5
  2492. STD T1 SET LENGTH OF HEADER
  2493. CCBA PAD1 READ HEADER INTO BUFFER
  2494. CRM BUFF,T1
  2495. WFT1 LDC RTCL CHECK TIMEOUT ON TRANSFER
  2496. CRD CM
  2497. LDD CM+4
  2498. SBD CN+4
  2499. PJN WFT2 IF NO UNDERFLOW
  2500. ADC 10000
  2501. WFT2 SBN 60
  2502. SHN 21-13 ALLOW FOR CLOCK ADJUSTMENT
  2503. PJN WFT4 IF TIMEOUT ON TRANSFER
  2504. LDC FCRO READ OPERATIONAL STATUS
  2505. RJM FNC
  2506. PJN WFT2.2 IF NO ERROR PROCESSING FUNCTION
  2507. WFT2.1 LMD EC
  2508. UJN WFT4.1 PROCESS THE ERROR
  2509.  
  2510. WFT2.2 LDC 1701
  2511. WFT3 EQU *-1
  2512. FJM WFT5,CH IF CHANNEL FULL
  2513. NJN WFT3 IF NOT TIMEOUT
  2514. WFT4 LDN CHFE INDICATE CHANNEL ERROR
  2515. WFT4.1 LJM WFT9 PROCESS THE ERROR
  2516.  
  2517. WFT5 IAN CH READ OPERATIONAL STATUS
  2518. STD CM+1
  2519. DCN CH+40
  2520. SHN 21-0
  2521. MJP WFT1 IF TRANSFER IN PROGRESS
  2522. WFT6 LDN CHPE
  2523. SFM WFT9,CH IF CHANNEL PARITY ERROR
  2524. LDC FCRT READ T REGISTER
  2525. RJM FNC
  2526. MJN WFT2.1 IF ERROR ENCOUNTERED
  2527. LDC 1701
  2528. WFT7 EQU *-1
  2529. FJM WFT8,CH IF DATA PRESENT
  2530. NJN WFT7 IF NOT END OF DELAY
  2531. LDN CHFE INDICATE CHANNEL ERROR
  2532. UJN WFT9 PROCESS THE ERROR
  2533.  
  2534. WFT8 LDN 3
  2535. IAM CM,CH
  2536. LDN CHPE
  2537. SFM WFT9,CH IF CHANNEL PARITY ERROR
  2538. DCN CH+40
  2539. LDML WTRA+2
  2540. ADC 40000 INCREMENT TRANSFER ADDRESS
  2541. STDL CM+4
  2542. SHN -20
  2543. ADML WTRA+1
  2544. STDL CM+3
  2545. LMDL CM+1
  2546. NJN WFT8.1 IF NOT THE CORRECT ADDRESS
  2547. LDDL CM+2
  2548. LMDL CM+4
  2549. NJN WFT8.1 IF NOT THE CORRECT ADDRESS
  2550. LDDL CM
  2551. ZJP WFT10 IF BYTE COUNT IS ZERO
  2552. WFT8.1 LDN IDTE INDICATE INCOMPLETE DATA TRANSFER
  2553. WFT9 STD CM SAVE ERROR CODE
  2554. LDD PB RESTORE CURRENT BUFFER ORDINAL
  2555. STD CB
  2556. LDN 0 AVOID COMPLETION OF CURRENT REQUEST
  2557. STD PB
  2558. LCN 0
  2559. LMD CM COMPLEMENT ERROR CODE
  2560. LJM WFTX RETURN
  2561. WIO SPACE 4,40
  2562. ** WIO - PERFORM WRITE I/O OPERATIONS.
  2563. *
  2564. * ENTRY (CB) = CURRENT BUFFER ORDINAL.
  2565. * (EP) = 0.
  2566. * (PB) = 0.
  2567. *
  2568. * EXIT (PB) = ORDINAL OF LAST BUFFER PROCESSED.
  2569. *
  2570. * USES CB, EC, EP, NB, PB, T1.
  2571. *
  2572. * CALLS ERR, FNC, FNN, GGS, IFI, WFT, WTR.
  2573. *
  2574. * MACROS CCBA.
  2575.  
  2576.  
  2577. WIO SUBR ENTRY/EXIT
  2578. RJM IFI INITIALIZE FOR I/O
  2579. LDN HLEN/5
  2580. STD T1 SET LENGTH OF HEADER
  2581. CCBA PAD1 READ HEADER INTO BUFFER
  2582. CRM BUFF,T1
  2583. WIO1 RJM WTR WRITE T PRIME REGISTER
  2584. MJN WIO3 IF ERROR ENCOUNTERED
  2585. LDN FCWR ISSUE WRITE FUNCTION
  2586. * LDN FCCO (CONTROLLER ERROR RECOVERY IN PROGRESS)
  2587. WIOA EQU *-1
  2588. RJM FNN
  2589. PJN WIO2 IF NO ERROR
  2590. AOD EP SET PREVIOUS SECTOR ERROR FLAG
  2591. UJN WIO3 CALL ERROR PROCESSOR
  2592.  
  2593. WIO2 LDC FCDO+HLEN INITIATE THE DMA TRANSFER
  2594. RJM FNC
  2595. MJN WIO3 IF ERROR ENCOUNTERED
  2596. LDN HLEN OUTPUT HEADER DATA
  2597. OAM BUFF,CH
  2598. ZJN WIO4 IF NO DATA TRANSFER ERROR
  2599. LCN IDTE SET *INCOMPLETE DATA TRANSFER* ERROR CODE
  2600. STD EC
  2601. WIO3 RJM ERR CALL ERROR PROCESSOR
  2602.  
  2603. WIO4 DCN CH+40
  2604. RJM WFT WAIT TRANSFER TO COMPLETE
  2605. PJN WIO7 IF NO ERRORS ENCOUNTERED
  2606. STD EC SET ERROR CODE
  2607. WIO5 UJN WIO3 CALL ERROR PROCESSOR
  2608.  
  2609. WIO7 ZJN WIO8 IF NO CONSECUTIVE REQUEST
  2610. * UJN WIO8 (ERROR RECOVERY IN PROGRESS)
  2611. WIOC EQU *-1
  2612. LDN 0 CLEAR NEXT BUFFER ORDINAL
  2613. STD NB
  2614. LJM WIO1 PROCESS NEXT REQUEST
  2615.  
  2616. WIO8 RJM GGS GET GENERAL STATUS
  2617. ZJP WIOX IF NO ERROR
  2618. LDD PB BACK UP TO PREVIOUS BUFFER
  2619. STD CB
  2620. LDN 0 AVOID BUFFER COMPLETION
  2621. STD PB
  2622. UJN WIO5 CALL ERROR PROCESSOR
  2623. WTR SPACE 4,10
  2624. ** WTR - WRITE *T* REGISTER.
  2625. *
  2626. * ENTRY (UA - UA+1) = UEM ADDRESS/100B TO TRANSFER TO/FROM.
  2627. *
  2628. * EXIT (A) .LT. 0, IF CHANNEL ERROR.
  2629. *
  2630. * CALLS FNC.
  2631.  
  2632.  
  2633. WTR SUBR ENTRY/EXIT
  2634. LDD UA+1
  2635. SHN 11
  2636. SCN 7
  2637. STML WTRA+2 FORM ABSOLUTE UEM ADDRESS
  2638. LDD UA
  2639. SHN 14
  2640. LMD UA+1
  2641. SHN 11-20 SET IN *T* REGISTER
  2642. STM WTRA+1
  2643. LDC FCWT ISSUE WRITE *T* REGISTER FUNCTION
  2644. RJM FNC
  2645. MJN WTRX IF ERROR ENCOUNTERED
  2646. LDN 3 SET BLOCK LENGTH
  2647. OAM WTRA,CH OUTPUT BUFFER PARAMETERS
  2648. NJN WTR5 IF TRANSFER NOT COMPLETE
  2649. WTR1 ADD ON
  2650. EJM WTR4,CH IF DATA ACCEPTED
  2651. NJN WTR1 IF TIMEOUT NOT COMPLETE
  2652. WTR2 DCN CH+40
  2653. LCN CHFE INDICATE *CHANNEL FAILURE* ERROR
  2654. WTR3 STD EC
  2655. WTR4 DCN CH+40
  2656. UJP WTRX RETURN
  2657.  
  2658. WTR5 LCN IDTE INDICATE *INCOMPLETE DATA TRANSFER* ERROR
  2659. UJN WTR3 PROCESS THE ERROR
  2660.  
  2661. WTRA BSS 0 *T* REGISTER BUFFER
  2662. CON 0000 BYTE LENGTH OF I/O TRANSFER
  2663. CON 0,0 UEM ADDRESS OF BUFFER
  2664. WTC SPACE 4,25
  2665. ** WTC - WRITE CONTROL INFORMATION TO THE CBT.
  2666. *
  2667. * THIS ROUTINE WRITES THE LINKAGE BYTES AND SHORT PRU FLAGS
  2668. * IN THE CBT ENTRY.
  2669. *
  2670. * ENTRY (BUFF) = HEADER DATA.
  2671. * (UA - UA+1) = UEM ADDRESS.
  2672. *
  2673. * USES CM - CM+4, T1 - T4.
  2674.  
  2675.  
  2676. WTC SUBR ENTRY/EXIT
  2677. LDN 0
  2678. ERRNZ PAD1 CODE DEPENDS ON VALUE
  2679. STD T1
  2680. LDC BUFF+3-4
  2681. STD T2
  2682.  
  2683. * GET SHORT PRU FLAGS, VALID DATA FLAGS AND LINKAGE BYTES FROM
  2684. * SECTOR HEADER AND STORE THEM IN THE CBT ENTRY.
  2685.  
  2686. WTC1 LDN 4 ADVANCE SECTOR BUFFER ADDRESS
  2687. RAD T2
  2688. CCBA PAD1
  2689. ADD T1
  2690. CRD CM
  2691. STD T4
  2692. SHN -14
  2693. STD T3
  2694. LDI T2 STORE SHORT PRU AND VALID DATA FLAGS
  2695. STD CM+3
  2696. AOD T2
  2697. LDI T2 STORE LINKAGE BYTE
  2698. STD CM+4
  2699. LDD T3
  2700. SHN 14
  2701. LMD T4
  2702. CWD CM
  2703. AOD T1 INCREMENT WORD INDEX
  2704. LMN PAD4+1
  2705. NJN WTC1 IF NOT FINISHED
  2706. UJN WTCX RETURN
  2707. 1XY SPACE 4,10
  2708. * COMMON DECKS.
  2709.  
  2710.  
  2711. *CALL COMPC2D
  2712. *CALL COMPIMB
  2713. TITLE SPECIAL REQUEST PROCESSORS.
  2714. CBD SPACE 4,15
  2715. ** CBD - CONVERT BINARY CODED DECIMAL TO DISPLAY CODE.
  2716. *
  2717. * ENTRY (A) = 10/,8/ 2 BCD DIGITS.
  2718. * (CM+1) = ADDRESS IN ERRLOG MESSAGE WHERE RESULT IS
  2719. * TO BE STORED.
  2720. * (CM+2) = ADDRESS IN BML MESSAGE WHERE RESULT IS TO
  2721. * BE STORED.
  2722. *
  2723. * EXIT CONVERTED DIGITS ADDED TO ERRLOG AND BML MESSAGES.
  2724. * (CM+1) AND (CM+2) INCREMENTED.
  2725. *
  2726. * USES T0.
  2727.  
  2728.  
  2729. CBD SUBR ENTRY/EXIT
  2730. LPC 377 UNPACK DIGITS
  2731. SHN 16 SAVE HIGH ORDER DIGIT
  2732. STD T0
  2733. SCN 17
  2734. SHN -2 POSITION LOW ORDER DIGIT
  2735. LMD T0 MERGE HIGH ORDER DIGIT
  2736. SHN 6
  2737. ADC 2R00 CONVERT TO DISPLAY CODE
  2738. STI CM+1
  2739. STI CM+2
  2740. AOD CM+1
  2741. AOD CM+2
  2742. UJN CBDX EXIT
  2743. CDD SPACE 4,10
  2744. ** CDD - CONVERT TWO DIGITS TO DECIMAL DISPLAY CODE.
  2745. *
  2746. * ENTRY (A) = NUMBER TO CONVERT.
  2747. *
  2748. * EXIT (A) = DISPLAY CODE VALUE.
  2749. *
  2750. * USES T0 - T1.
  2751.  
  2752.  
  2753. CDD2 ADN 10D+1R0
  2754. SHN 14 POSITION UNITS
  2755. ADD T0
  2756. SHN 6
  2757.  
  2758. CDD SUBR ENTRY/EXIT
  2759. STD T1 SAVE NUMBER
  2760. LDN 1R0 PRESET TENS
  2761. STD T0
  2762. CDD1 LDD T1 COUNT 10
  2763. SBN 10D
  2764. MJN CDD2 IF CONVERSION COMPLETE
  2765. STD T1
  2766. AOD T0
  2767. UJN CDD1 LOOP TO END OF CONVERSION
  2768. CSD SPACE 4,15
  2769. ** CSD - CONVERT SIX BCD DIGITS TO DISPLAY CODE.
  2770. *
  2771. * ENTRY (CM) = ADDRESS OF BCD DIGITS.
  2772. * (CM+1) = STARTING ADDRESS IN ERRLOG MESSAGE WHERE
  2773. * RESULT IS TO BE STORED.
  2774. * (CM+2) = STARTING ADDRESS IN BML MESSAGE WHERE RESULT
  2775. * IS TO BE STORED.
  2776. *
  2777. * EXIT DIGITS ADDED TO ERRLOG AND BML MESSAGES.
  2778. * (CM - CM+2) EACH INCREMENTED TO POINT TO THE FIRST
  2779. * BYTE AFTER THE ADDED DIGITS.
  2780. *
  2781. * USES CM.
  2782. *
  2783. * CALLS CBD.
  2784.  
  2785.  
  2786. CSD SUBR ENTRY/EXIT
  2787. LDI CM CONVERT BCD DIGITS ONE AND TWO
  2788. SHN -4
  2789. RJM CBD
  2790. LDI CM CONVERT BCD DIGITS THREE AND FOUR
  2791. LPN 17
  2792. SHN 14
  2793. LMM 1,CM
  2794. SHN -10
  2795. RJM CBD
  2796. AOD CM
  2797. LDI CM CONVERT BCD DIGITS FIVE AND SIX
  2798. RJM CBD
  2799. AOD CM
  2800. UJN CSDX EXIT
  2801. FIP SPACE 4,10
  2802. *** FIP - FIRMWARE IDENTIFICATION PROCESSOR.
  2803. *
  2804. * ENTRY (IR+4) = CHANNEL.
  2805. *
  2806. * EXIT (A) .LT. 0 IF MASS STORAGE ERROR.
  2807. *
  2808. * CALLS CDD, DFM, GDS.
  2809.  
  2810.  
  2811. FIP SUBR ENTRY/EXIT
  2812. RJM GDS GET DETAILED STATUS
  2813. MJN FIPX IF ERROR
  2814.  
  2815. * ADD REVISION NUMBER TO ERRLOG AND BML MESSAGES.
  2816.  
  2817. LDM DST+20
  2818. SHN -6
  2819. LPN 17
  2820. RJM CDD
  2821. STM FIPA+6
  2822. STM FIPB+11
  2823. LDC FIPA+ERLN+400000 ISSUE ERRLOG MESSAGE
  2824. RJM DFM
  2825. LDC FIPBL SET BML MESSAGE LENGTH
  2826. STD CM+1
  2827. LDC FIPB+BMLN+400000 ISSUE BML MESSAGE
  2828. RJM DFM
  2829. LJM FIPX RETURN
  2830.  
  2831. FIPA DATA C*CH00 MA464-D00.*
  2832.  
  2833. FIPB CON DM0401 MESSAGE ID
  2834. CON HI0101 MESSAGE SYMPTOM
  2835. CON 0 CHANNEL (OCTAL)
  2836. CON 0
  2837. CON 0 RESERVED FOR CDC
  2838. DATA 10A MA464-DYY FIRMWARE REVISION LEVEL (DISPLAY CODE)
  2839. FIPBL EQU *-FIPB BML MESSAGE LENGTH
  2840. FLT SPACE 4,10
  2841. ** FLT - FLAW LOGICAL TRACK.
  2842. *
  2843. * ENTRY (T5) = EST ORDINAL.
  2844. * (T6) = LOGICAL TRACK.
  2845. *
  2846. * EXIT LOGICAL TRACK FLAWED IF WITHIN TRT.
  2847. *
  2848. * USES CM+1 - CM+3.
  2849. *
  2850. * MACROS MONITOR.
  2851.  
  2852.  
  2853. FLT SUBR ENTRY/EXIT
  2854. LDD T6 CHECK IF TRACK WITHIN TRT
  2855. STD CM+2
  2856. ADC -NTDC NUMBER OF TRACKS
  2857. PJN FLTX IF BEYOND TRT
  2858. LDN STFS SELECT TRACK FLAW FUNCTION
  2859. STD CM+3
  2860. LDD T5 SET EQUIPMENT
  2861. STD CM+1
  2862. MONITOR STBM SET TRACK FLAW
  2863. UJN FLTX EXIT
  2864. F8D SPACE 4,10
  2865. ** F8D - FORMAT 895 DEVICE.
  2866. *
  2867. * ENTRY (T5) = EST ORDINAL.
  2868. * (SR - SR+2) = FORMAT PARAMETER BLOCK.
  2869. *
  2870. * EXIT (A) .LT. 0, IF ERRORS OCCURRED.
  2871. *
  2872. * USES SR, SR+2, SR+3, T2, CM - CM+4.
  2873. *
  2874. * CALLS C2D, FNC, WNB.
  2875.  
  2876.  
  2877. F8D2 LDD T2
  2878. ZJN F8D2.1 IF NOT DISPLAYING THE FORMATTING MESSAGE
  2879. LDD CP UPDATE CYLINDER NUMBER IN MESSAGE
  2880. ADN MS2W+2
  2881. CWD CM
  2882. F8D2.1 LDK FCFP ISSUE FORMAT FUNCTION
  2883. RJM FNC
  2884. MJN F8D3.2 IF ERRORS ENCOUNTERED
  2885. LDN FPBL OUTPUT PARAMETER BLOCK
  2886. OAM SR,CH
  2887. NJN F8D3.1 IF INCOMPLETE DATA TRANSFER
  2888. F8D3 EJM F8D4,CH IF TRANSMISSION COMPLETE
  2889. SBN 1
  2890. NJN F8D3 IF NOT END OF DELAY
  2891. F8D3.1 DCN CH+40
  2892. LCN 1
  2893. F8D3.2 LJM F8DX EXIT WITH ERROR
  2894.  
  2895. F8D4 DCN CH+40
  2896. RJM WNB WAIT NOT BUSY
  2897. MJN F8DX IF ERRORS ENCOUNTERED
  2898. LDD T2
  2899. NJN F8D5 IF FORMATTING ALL CYLINDERS
  2900. AOD SR+2
  2901. LPN 77
  2902. LMN PTCYDC
  2903. NJN F8D2 IF ALL TRACKS NOT FORMATTED
  2904. UJN F8D7 RETURN
  2905.  
  2906. F8D5 AOD SR ADVANCE CYLINDER NUMBER
  2907. F8D6 RJM C2D
  2908. STD CM+2
  2909. LDD SR CONVERT VALUE FOR MESSAGE
  2910. SHN -6
  2911. RJM C2D
  2912. STD CM+1
  2913. LDD SR
  2914. LMD SR+3
  2915. NJP F8D2 IF MORE CYLINDERS TO FORMAT
  2916. F8D7 LDD T2
  2917. ZJN F8DX IF NO MESSAGE DISPLAYED
  2918. LDN 0 CLEAR THE MESSAGE
  2919. STD CM
  2920. LDD CP
  2921. ADN MS2W
  2922. CWD CM
  2923.  
  2924. F8D SUBR ENTRY/EXIT
  2925. LDD SR+1
  2926. RJM C2D CONVERT UNIT NUMBER
  2927. STM F8DB+4
  2928. LDD T5 SET EQUIPMENT IN MESSAGE
  2929. RJM C2D
  2930. STM F8DB+2 INSERT UNIT DESIGNATOR
  2931. LDD T5
  2932. SHN -6
  2933. ADC 2RC0
  2934. STM F8DB+1
  2935. LDD SR+1
  2936. SHN 0-12
  2937. LPN 1
  2938. STD T2
  2939. ZJN F8D1 IF NOT DISPLAYING THE FORMATTING MESSAGE
  2940. LDD CP
  2941. ADN MS2W
  2942. CWM F8DA,TR SET MESSAGE
  2943. SBN 1
  2944. CRD CM
  2945. LDC NTDC/2
  2946. ERRNZ TTDC CODE DEPENDS ON VALUE
  2947. STD SR+3
  2948. LDD SR
  2949. F8D1 LJM F8D6 FORMAT DEVICE
  2950.  
  2951. F8DA DATA H*FORMATTING*
  2952. F8DB DATA H* DC U *
  2953. DATA C* C0000.*
  2954. PFM SPACE 4,10
  2955. ** PFM - PROCESS FLAW MAPS.
  2956. *
  2957. * ENTRY (S2) = UNIT NUMBER.
  2958. *
  2959. * EXIT (A) .LT. 0, IF ERRORS OCCURRED.
  2960. *
  2961. * USES T4, T6.
  2962. *
  2963. * CALLS FLT, RFS.
  2964.  
  2965.  
  2966. PFM SUBR
  2967. LDD S2
  2968. SHN 14
  2969. LMC FCRU+100
  2970. RJM RFS READ UTILITY SECTOR
  2971. MJN PFMX IF ERROR
  2972.  
  2973. * CONVERT FLAWS FROM PHYSICAL TO LOGICAL.
  2974.  
  2975. LDC BUFF
  2976. STD T4
  2977. PFM1 LDI T4 READ TRACK ADDRESS
  2978. ZJN PFMX IF NO MORE FLAWS
  2979. LPC 1777
  2980. SHN 1
  2981. STD T6
  2982. LDM 1,T4
  2983. SHN -6
  2984. SBN 7
  2985. MJN PFM3 IF IN FIRST TRACK
  2986. NJN PFM2 IF IN SECOND TRACK
  2987. RJM FLT FLAW BOTH TRACKS
  2988. PFM2 AOD T6
  2989. PFM3 RJM FLT FLAW LOGICAL TRACK
  2990. LDN 2 ADVANCE UTILITY SECTOR INDEX
  2991. RAD T4
  2992. UJN PFM1 CONTINUE PROCESSING
  2993. PSP SPACE 4,10
  2994. *** PSP - PACK SERIAL NUMBER PROCESSOR.
  2995. *
  2996. * ENTRY (S2) = UNIT NUMBER.
  2997. *
  2998. * EXIT (A) .LT. 0, IF ERRORS OCCURRED.
  2999. *
  3000. * USES T4, CM - CM+4.
  3001. *
  3002. * CALLS CSD, C2D, RFS.
  3003.  
  3004.  
  3005. PSP SUBR ENTRY/EXIT
  3006. LDD S2
  3007. SHN 14
  3008. LMC FCRP READ FACTORY SECTOR
  3009. RJM RFS
  3010. MJN PSPX IF ERROR
  3011. LDD S2
  3012. STM PSPB+3 PUT PHYSICAL UNIT NUMBER IN MESSAGE
  3013. RJM C2D
  3014. STM PSPA+4
  3015. LDC BUFF SET ADDRESS OF PACK SERIAL NUMBER
  3016. STD CM
  3017. LDC PSPA+7 SET ERRLOG MESSAGE DESTINATION ADDRESS
  3018. STD CM+1
  3019. LDC PSPB+7 SET BML MESSAGE DESTINATION ADDRESS
  3020. STD CM+2
  3021. RJM CSD CONVERT 6 BCD DIGITS TO DISPLAY
  3022. LDC PSPA+ERLN+400000 ISSUE MESSAGE TO ERRLOG
  3023. RJM DFM
  3024. LDC PSPBL
  3025. STD CM+1
  3026. LDC PSPB+BMLN+400000 ISSUE MESSAGE TO BML
  3027. RJM DFM
  3028. LJM PSPX EXIT
  3029.  
  3030.  
  3031. PSPA DATA C*DC000, U00,PS=000000.*
  3032.  
  3033. PSPB CON DM0401 MESSAGE ID
  3034. CON HI0100 MESSAGE SYMPTOM
  3035. CON 2RDC DEVICE TYPE (DISPLAY CODE)
  3036. CON 0 UNIT NUMBER (BINARY)
  3037. CON 0 RESERVED FOR CDC
  3038. CON 0 EST ORDINAL (BINARY)
  3039. CON 0 RESERVED FOR CDC
  3040. DATA 6AXXXXXX PACK SERIAL NUMBER (DISPLAY CODE)
  3041. PSPBL EQU *-PSPB REGULAR BML MESSAGE LENGTH
  3042. PSR SPACE 4,10
  3043. ** PSR - PROCESS SPECIAL REQUESTS.
  3044. *
  3045. * ENTRY (CM - CM+4) = *PUT* WORD *UNCT*.
  3046. *
  3047. * EXIT SPECIAL REQUESTS PROCESSED.
  3048. *
  3049. * USES CS, PR, S2, T5, CM - CM+4, CN - CN+4, SR - SR+4.
  3050. *
  3051. * CALLS C2D, FIP, F8D, OVI, PFM, PSP, RHR, RPI.
  3052. *
  3053. * MACROS CPTA, MONITOR.
  3054.  
  3055.  
  3056. PSR9 RJM RPI RELEASE *PUT* INTERLOCK
  3057. PSR10 LDN 0 CLEAR SPECIAL REQUEST IN PROGRESS FLAG
  3058. STD PR
  3059.  
  3060. PSR SUBR ENTRY/EXIT
  3061. LDD CM
  3062. LPN 77 SAVE UNIT NUMBER
  3063. STD S2
  3064. LDD CM+1 SET EST ORDINAL IN BML MESSAGE
  3065. STM PSPB+5
  3066. STD T5
  3067. SHN -3 CONVERT FOR ERRLOG MESSAGE
  3068. RJM C2D
  3069. STM PSPA+1
  3070. LDD CM+1
  3071. LPN 7
  3072. SHN 6
  3073. ADC 2R0,
  3074. STM PSPA+2
  3075. LDN 1 SET SPECIAL REQUESTS IN PROGRESS
  3076. STD PR
  3077. RJM OVI INTERLOCK THE *PUT*
  3078. NJN PSR10 IF *PUT* NOT INTERLOCKED
  3079. CPTA PILL REREAD SPECIAL REQUEST FLAGS
  3080. CRD CN
  3081. LDD CN+3
  3082.  
  3083. * CHECK FOR FORMAT PACK REQUEST.
  3084.  
  3085. .M SET 0 INITIALIZE SHIFT COUNT CALCULATION
  3086. CSHN FMMC
  3087. PJN PSR1 IF NOT FORMAT REQUEST
  3088. LDN FMMC
  3089. SHN 6 SET *UTEM* PARAMETER
  3090. STM PSRA+1
  3091. LDC MCLTDC/2-4000/2 MAINTENANCE CYLINDER
  3092. STD SR
  3093. LDD TH SET LARGE RECORD SIZE
  3094. STD SR+2
  3095. LDD S2 UNIT + OPERATION STATUS
  3096. LMC 3S6
  3097. STD SR+1
  3098. RJM F8D PROCESS THE FORMAT REQUEST
  3099. UJN PSR4 COMPLETE THE REQUEST
  3100.  
  3101. * CHECK FOR FIRMWARE IDENTIFICATION REQUEST.
  3102.  
  3103. PSR1 CSHN LFMI
  3104. PJN PSR2 IF NOT FIRMWARE IDENT REQUEST
  3105. * LDD CN+3
  3106. ERRNZ .M-6 CODE DEPENDS ON VALUE
  3107. * SHN 14
  3108. LPN 77 CHECK CHANNEL NUMBER
  3109. LMD IR+4
  3110. NJN PSR6 IF REQUEST NOT FOR THIS DRIVER
  3111. LDN LFMI
  3112. SHN 6 SET *UTEM* PARAMETER
  3113. STM PSRA+1
  3114. RJM FIP PROCESS FIRMWARE IDENT MESSAGE
  3115. UJN PSR7 COMPLETE THE REQUEST
  3116.  
  3117. * CHECK FOR PACK SERIAL NUMBER REQUEST.
  3118.  
  3119. PSR2 CSHN LPSN
  3120. PJN PSR5 IF NOT SERIAL NUMBER REQUEST
  3121. LDN LPSN
  3122. SHN 6 SET *UTEM* PARAMETER
  3123. STM PSRA+1
  3124. RJM PSP LIST PACK SERIAL NUMBER
  3125. PSR4 UJN PSR7 COMPLETE THE REQUEST
  3126.  
  3127. * CHECK FOR FLAW MAP REQUEST.
  3128.  
  3129. PSR5 CSHN PRFM
  3130. PSR6 PJP PSR9 IF NOT FLAW MAP REQUEST
  3131. LDN PRFM
  3132. SHN 6 SET *UTEM* PARAMETER
  3133. STM PSRA+1
  3134. RJM PFM PROCESS THE FLAW MAPS
  3135. PSR7 SHN 0-21
  3136. STM PSRA+5+4
  3137. CPTA UNCT CLEAR REQUEST BIT SET RESPONSE
  3138. STD CM+4
  3139. SHN -14
  3140. STD CM+3
  3141. LDN 2
  3142. STD CM+1
  3143. LDD MA
  3144. CWM PSRA,CM+1
  3145. MONITOR UTEM
  3146. LDD CS
  3147. SCN 10
  3148. LMN 10
  3149. STD CS
  3150. RJM RHR RELEASE DRIVES
  3151. LJM PSR9 CLEAR *PUT* INTERLOCK
  3152.  
  3153.  
  3154. PSRA VFD 6/PILL,6/1,6/0,42/0
  3155. VFD 6/PILL,6/1,6/PERR,42/0
  3156. RFS SPACE 4,10
  3157. ** RFS - READ FACTORY SECTORS.
  3158. *
  3159. * ENTRY (A) = 6/UN, 6/SC, 6/ FCN.
  3160. *
  3161. * EXIT (A) .LT. 0, IF ERRORS.
  3162. *
  3163. * CALLS FNC, GGS.
  3164.  
  3165.  
  3166. RFS SUBR ENTRY/EXIT
  3167. STM RFSA SAVE FUNCTION
  3168. SCN 77
  3169. SHN 6
  3170. STM RFSB SET UNIT IN SEEK PARAMETER BLOCK
  3171. SHN 6
  3172. LPN 77
  3173. STM RFSC SET SECTOR IN SEEK PARAMETER BLOCK
  3174. RFS1 LDN FCSK ISSUE SEEK FUNCTION
  3175. RJM FNC
  3176. MJN RFSX IF ERROR ENCOUNTERED
  3177. LDN FCSKL OUTPUT SEEK PARAMETERS
  3178. OAM RFSB,CH
  3179. ZJN RFS4 IF ALL DATA TAKEN
  3180. RFS2 DCN CH+40
  3181. RFS3 LCN 1 INDICATE ERROR
  3182. UJN RFSX RETURN ERROR STATUS
  3183.  
  3184. RFS4 EJM RFS5,CH IF ALL DATA TAKEN
  3185. SBN 1
  3186. NJN RFS4 IF NOT END OF DELAY
  3187. UJN RFS2 REPORT ERROR STATUS
  3188.  
  3189. RFS5 DCN CH+40
  3190. RJM GGS GET GENERAL STATUS
  3191. MJN RFSX IF ERROR OCCURRED
  3192. LDD GS
  3193. SHN 21-13
  3194. MJN RFS3 IF ERROR STATUS
  3195. NJN RFS1 IF NOT ON CYLINDER
  3196. LDC ** ISSUE SPECIAL READ FUNCTION
  3197. RFSA EQU *-1
  3198. LPN 77
  3199. RJM FNC
  3200. MJN RFS3 IF ERROR
  3201. RFS6 FJM RFS7,CH IF DATA PRESENT
  3202. SBN 1
  3203. NJN RFS6 IF NOT END OF DELAY
  3204. UJN RFS2 REPORT ERROR
  3205.  
  3206. RFS7 LDC 502 READ SPECIAL SECTOR
  3207. IAM BUFF,CH
  3208. NJN RFS2 IF ALL DATA NOT RECEIVED
  3209. SFM RFS2,CH IF CHANNEL PARITY ERROR
  3210. DCN CH+40
  3211. RJM GGS GET GENERAL STATUS
  3212. MJN RFS8 IF ERROR ENCOUNTERED
  3213. LDD GS
  3214. SHN 21-13
  3215. RFS8 LJM RFSX RETURN
  3216.  
  3217. RFSB CON 0 UNIT
  3218. CON 3352/2 CYLINDER
  3219. CON 0 TRACK
  3220. RFSC CON 0 SECTOR
  3221. WNB SPACE 4,10
  3222. ** WNB - WAIT NOT BUSY.
  3223. *
  3224. * ENTRY (T5) = EST ORDINAL.
  3225. * (IR+4) = CHANNEL.
  3226. *
  3227. * EXIT (A) .LT. 0, IF CONTROLLER HUNG BUSY.
  3228. *
  3229. * USES GS, T4.
  3230. *
  3231. * CALLS C2D, DFM, GGS.
  3232.  
  3233.  
  3234. WNB SUBR ENTRY/EXIT
  3235. LCN 0 SET 4 SECOND TIMEOUT
  3236. STD T4
  3237. WNB1 DELAY 10
  3238. RJM GGS GET GENERAL STATUS
  3239. MJN WNB2 IF ERROR OCCURRED
  3240. LPN 2
  3241. ZJN WNBX IF NOT BUSY
  3242. SOD T4
  3243. NJN WNB1 IF NOT TIMEOUT
  3244. WNB2 LDD GS
  3245. SHN -6
  3246. RJM C2D CONVERT GENERAL STATUS
  3247. STM WNBB+11
  3248. LDD GS
  3249. RJM C2D
  3250. STM WNBB+12 STORE IN MESSAGE
  3251. LDD IR+4 SET CHANNEL IN MESSAGE
  3252. LPN 37
  3253. RJM C2D
  3254. STM WNBA+2
  3255. LDD T5 SET EST ORDINAL IN MESSAGE
  3256. SHN -3
  3257. RJM C2D
  3258. STM WNBA+5
  3259. LDD T5
  3260. LPN 7
  3261. SHN 6
  3262. ADC 2R0,
  3263. STM WNBA+6
  3264. LDC ERLN+WNBA+400000
  3265. RJM DFM
  3266. LDC ERLN+WNBB+400000
  3267. RJM DFM
  3268. LCN 1
  3269. LJM WNBX EXIT WITH ERROR FLAG
  3270.  
  3271. WNBA DATA C* CCHXX, DCYYY, FORMAT FAILURE.*
  3272. WNBB DATA C* HUNG BUSY - GS = ZZZZ.*
  3273. 1XY SPACE 4
  3274. USE PRESET DEFINE LITERAL BLOCK BEFORE PRESET
  3275. BUFF EQU * DATA BUFFER
  3276. BUFFL MAX 502B,HLEN
  3277. ERRPL BUFF+BUFFL-10000 BUFFER OVERFLOWS PP
  3278. PRS TITLE PRESET PROGRAM.
  3279. PRS SPACE 4,10
  3280. ** PRS - PRESET *1XY*.
  3281. *
  3282. * EXIT (CC) = 0.
  3283. * (CS) = 1.
  3284. * (EC) = 0.
  3285. * (EP) = 0.
  3286. * (ER) = 0.
  3287. * (FU - FU+1) = UEM BASE ADDRESS.
  3288. * (IL) = 0.
  3289. * (RC) = 0.
  3290. * (TI) = 0.
  3291. * (BMLCR) = 6/ CHANNEL, 6/0.
  3292. * (BMLMF) = MAINFRAME ID.
  3293. * (BMLPP) = 6/ PP NUMBER, 6/ CHANNEL.
  3294. * (CCRA) = WORD ADDRESS OF CHANNEL TABLE ENTRY.
  3295. * (CCRB) = BYTE ADDRESS OF CHANNEL TABLE ENTRY + LDDI.
  3296. * (CRQA) = FWA OF PP EXCHANGE PACKAGE.
  3297. * (CRQB) = FWA OF PP EXCHANGE PACKAGE.
  3298. * (CRQC) = CPU EXCHANGE INSTRUCTION (MXN).
  3299. * (CRQD) = FIRST WORD OF PP EXCHANGE PACKAGE.
  3300. * (SASA) = LONG CONSTANTS.
  3301. * (WTRA) = BYTE LENGTH OF I/O TRANSFER.
  3302. * (MSD) = 0.
  3303. * (SCDA) = WORD ADDRESS OF CONTROLWARE TABLE ENTRY.
  3304. * (SCDB) = BIT NUMBER OF DRIVER DROP FLAG.
  3305. * ALL *CCBA* REFERENCES TO *CBT* PLUGGED.
  3306. * ALL *CPTA* REFERENCES TO *PUT* PLUGGED.
  3307. * ALL *EMBE* REFERENCES TO *EMB* PLUGGED.
  3308. *
  3309. * USES BL, CC, CS, EC, EP, ER, IL, RC, TI, CM - CM+4,
  3310. * CN - CN+4, T0 - T7.
  3311. *
  3312. * CALLS CFR, DFM, FNC, FNN, RCH, SCD.
  3313. *
  3314. * MACROS CPTA, MONITOR, SETMS, SFA.
  3315.  
  3316.  
  3317. PRS SUBR ENTRY/EXIT
  3318. SETMS NODRIVER FORCE DRIVER LOAD ON NEXT *SETMS*
  3319. LDK NCPL VALIDATE CALLER
  3320. CRD CM
  3321. AOD CM+1 NUMBER OF CONTROL POINTS
  3322. SHN 7
  3323. LMD CP
  3324. ZJN PRS1 IF SYSTEM CONTROL POINT
  3325. LDC =C* 1XY - UNAUTHORIZED CALL.*
  3326. RJM DFM ISSUE DAYFILE MESSAGE
  3327. MONITOR ABTM ABORT CONTROL POINT
  3328. LJM PPR RETURN
  3329.  
  3330. PRS1 LDC PRSE SETUP LONG INSTRUCTIONS
  3331. STD CM+4
  3332. PRS2 LDI CM+4 GET NEXT INSTRUCTION
  3333. ZJN PRS2.1 IF END OF LIST
  3334. STD T3
  3335. BLI T3 BUILD LONG INSTRUCTION
  3336. AOD CM+4
  3337. UJN PRS2 LOOP
  3338.  
  3339. PRS2.1 STD CB CLEAR CURRENT BUFFER ORDINAL
  3340. STD CC CLEAR COMPLETION REQUEST COUNT
  3341. STD CS CLEAR CHANNEL STATUS
  3342. STD EC CLEAR ERROR CODE
  3343. STD EP CLEAR ERROR ON PREVIOUS SECTOR FLAG
  3344. STD ER CLEAR RECOVERY IN PROGRESS FLAG
  3345. STD IL CLEAR *PUT* INTERLOCK FLAG
  3346. STD PB CLEAR PREVIOUS BUFFER
  3347. STD PR CLEAR SPECIAL REQUEST FLAG
  3348. STD RC CLEAR RETRY COUNT
  3349. STD TI INITIALIZE *TPOR* INDEX
  3350. LDD IR+4 CHANNEL NUMBER
  3351. STM BMLPP
  3352. STM FIPB+2
  3353. RJM C2D CONVERT FOR CODED MESSAGES
  3354. STM FIPA+1
  3355.  
  3356. * PLUG LONG CONSTANTS.
  3357.  
  3358. LDC FCRO
  3359. STML SASA
  3360. LDC FCRC
  3361. STML SASA+1
  3362. LDC FCRE
  3363. STML SASA+2
  3364. LDC 40000
  3365. STML WTRA
  3366.  
  3367. * PLUG CHANNEL INSTRUCTIONS.
  3368.  
  3369. LDC PRSD SET FWA OF CHANNEL TABLE
  3370. STD T1
  3371. PRS3 LDI T1
  3372. ZJN PRS4 IF END OF CHANNEL TABLE
  3373. STD T2
  3374. LDD IR+4 CHANNEL
  3375. LPN 37
  3376. RAI T2 STORE CHANNEL IN INSTRUCTION
  3377. AOD T1 ADVANCE CHANNEL TABLE POINTER
  3378. UJN PRS3 CONTINUE
  3379.  
  3380. * REQUEST CHANNEL AND SET CHANNEL FLAG.
  3381.  
  3382. PRS4 RJM RCH REQUEST CHANNEL
  3383. ZJN PRS4 IF CHANNEL NOT ASSIGNED
  3384.  
  3385. * PLUG EXCHANGE PACKAGE LOCATIONS.
  3386.  
  3387. LDK PXPP READ PPU STATUS
  3388. CRD CN
  3389. ADN 1
  3390. CRM CRQD,ON READ FIRST WORD OF PP XP
  3391. AOM CRQD+4
  3392. LDK PPCP READ PP COMMUNICATIONS AREA POINTER
  3393. CRD CM
  3394. ADK MMFL-PPCP
  3395. CRD T1
  3396. LDD T1 SAVE MAINFRAME ID
  3397. STM BMLMF
  3398. LDD IA GET ((PP NUMBER - 2) * 10B)
  3399. SBD CM+4
  3400. SBN 20
  3401. SHN -3
  3402. STD T1 PP NUMBER - 2
  3403. ADN 16 ADJUST FOR CONCURRENT PP NUMBER
  3404. SHN 6
  3405. RAM BMLPP SET PP NUMBER
  3406. SHN 6
  3407. STM BMLCR SET RECOVERY CHANNEL
  3408. LDD T1 PP NUMBER - 2
  3409. SHN 4
  3410. ADD T1 (PP NUMBER - 2) * 21B
  3411. RAD CN+4 SET EXCHANGE ADDRESS
  3412. STM CRQA
  3413. STM CRQB
  3414. SHN -14
  3415. RAD CN+3
  3416. RAM CRQA-1
  3417. STM CRQB-1
  3418. LDD CN+4 SET *MA* ADDRESS
  3419. ADN 6
  3420. STM CRQE
  3421. SHN -14
  3422. ADD CN+3
  3423. RAM CRQE-1
  3424. LDD IR+4
  3425. STD T2
  3426. LDK ACPL CHECK CPU STATUS
  3427. CRD CM
  3428. LCN 0
  3429. STD T1 PRESET CHANNEL TABLE WORD INDEX
  3430. LDN 60D PRESET BIT POSITION FOR LOAD REQUEST
  3431. STD T3
  3432. LDD CM
  3433. SHN 21-13
  3434. PJN PRS6 IF CPU 0 ON
  3435. AOM CRQC SET EXCHANGE TO CPU 1
  3436. LDD HN
  3437. RAM CRQD+3 SET (A0) TO 1
  3438.  
  3439. * PLUG CHANNEL TABLE ADDRESSES.
  3440.  
  3441. PRS6 AOD T1 ADVANCE CM TABLE INDEX
  3442. LCN 5
  3443. RAD T2
  3444. PJN PRS6 IF NOT TO PROPER INDEX
  3445. ADN 5
  3446. RAM CCRB PRESET CHANNEL TABLE BYTE INDEX
  3447. LPN 7 BYTE ADDRESS
  3448. STD T2
  3449. PRS7 LCN 12D
  3450. RAD T3 DECREMENT POSITION
  3451. SOD T2
  3452. PJN PRS7 IF NOT TO PROPER POSITION
  3453. LDD T3 BIT POSITION
  3454. ADN 13 ADD OFFSET WITHIN BYTE
  3455. SHN 6
  3456. SBK 200
  3457. STM SCDB+1
  3458. LDK CHTP CHANNEL TABLE(S) POINTER
  3459. CRD CM
  3460. LDD CM+2 FWA OF CHANNEL TABLE
  3461. SHN 14
  3462. LMD CM+3
  3463. ADD T1 ADD WORD INDEX
  3464. STM CCRA CM ADDRESS OF CHANNEL TABLE ENTRY
  3465. SHN -14
  3466. RAM CCRA-1
  3467. LDD CM+2 COMPUTE FWA OF CONTROLWARE TABLE
  3468. SHN 14
  3469. LMD CM+3
  3470. ADN CTALL*2
  3471. ADD T1 ADD WORD INDEX
  3472. STM SCDA
  3473. SHN -14
  3474. RAM SCDA-1
  3475.  
  3476. * SET UEM BASE ADDRESS.
  3477.  
  3478. LDK UEML
  3479. CRD CM
  3480. LDD CM
  3481. SHN 21-2
  3482. STD FU
  3483. SHN 2-21
  3484. SHN 11
  3485. STD FU+1
  3486.  
  3487. * PLUG *EMB* ADDRESSES.
  3488.  
  3489. LDN EMBP FETCH *EMB* POINTER
  3490. CRD CM
  3491. .CM1 EQU CM+1
  3492. LDC .CM1*10000+PRSC
  3493. RJM STA SET *EMB* ADDRESSES
  3494.  
  3495. * READ BUFFERED I/O TABLE POINTERS.
  3496.  
  3497. LDK BIOL
  3498. CRD CM
  3499. LDD CM+1
  3500. SHN 14
  3501. LMD CM+2
  3502. ADK CCTP GET *CCT* DESCRIPTOR
  3503. CRD CA
  3504. ADK PUTP-CCTP GET *PUT* DESCRIPTOR
  3505. CRD T3
  3506. ADN CBTP-PUTP GET *CBT* DESCRIPTOR
  3507. CRD CN
  3508. AOD T3
  3509.  
  3510. * PLUG *CCT* ADDRESS.
  3511.  
  3512. LDD IR+2 SET ADDRESS OF *CCT*
  3513. SHN CCTLS-6
  3514. ADD CA+4
  3515. RAM OVIA+1
  3516. STM RPIA+1
  3517. SHN -14
  3518. ADD CA+3
  3519. RAM OVIA
  3520. STM RPIA
  3521.  
  3522. * PLUG *CBT* ADDRESSES.
  3523.  
  3524. .CN3 EQU CN+3
  3525. LDC .CN3*10000+PRSA
  3526. RJM STA SET *CBT* ADDRESSES
  3527.  
  3528. * PLUG *PUT* ADDRESSES.
  3529.  
  3530. LDC T6*10000+PRSB
  3531. RJM STA SET *PUT* ADDRESSES
  3532.  
  3533. * LDN 0
  3534. STD TB CLEAR TOTAL BUFFER COUNT
  3535. RJM MCA MASTER CLEAR ADAPTER
  3536. PJN PRS11 IF MASTER CLEAR WAS SUCCESSFUL
  3537.  
  3538. * PREVENT ANY I/O FROM BEING PERFORMED ON THIS CHANNEL. THE
  3539. * UNIT QUEUES MUST CONTINUE TO BE SERVICED BY THIS DRIVER TO
  3540. * ENSURE THAT CHANNEL SPECIFIC REQUESTS ARE PROCESSED.
  3541. * ALTHOUGH THIS DRIVER WILL BE FREE TO SELECT I/O REQUESTS, ANY
  3542. * ATTEMPT TO ISSUE A CHANNEL FUNCTION WILL RESULT IN A *CHANNEL
  3543. * FAILURE* ERROR. THE ERROR PROCESSOR WILL SET THE SUSPECT
  3544. * FLAG, CAUSING *1MV* TO PERFORM A HARDWARE VERIFICATION. THE
  3545. * EXPECTED RESULT OF THIS VERIFICATION IS THAT *1MV* WILL DOWN
  3546. * THE CHANNEL ON THE DEVICE.
  3547.  
  3548. ISTORE FNCC,(UJN FNC5.1)
  3549. ISTORE FNNA,(UJN FNN5.1)
  3550. PRS11 LDN 0 INITIALIZE *TPOR* INDEX
  3551. STD T1
  3552.  
  3553. * BUILD *TPOR* TABLE.
  3554.  
  3555. PRS12 SOD T3 DECREMENT *PUT* ORDINAL
  3556. STD PO SET *PUT* ORDINAL
  3557. ZJP PRSX IF SCAN COMPLETE
  3558. CPTA UNCT,A READ *PUT* ENTRY
  3559. CRD CM
  3560. LDD CM+1 SAVE THE EST ORDINAL
  3561. STD T5
  3562. SFA EST,CM+1 READ EST ENTRY
  3563. ADK EQDE
  3564. CRD CM
  3565. LDN 0 INITIALIZE EST CHANNEL BYTE INDEX
  3566. STD T2
  3567. LDD CM+1
  3568. LPN 77
  3569. LMD IR+4
  3570. ZJN PRS13 IF DEVICE SUPPORTED BY THIS DRIVER
  3571. LDD CM+2
  3572. ZJN PRS14 IF SINGLE ACCESS DEVICE
  3573. LPN 77
  3574. LMD IR+4
  3575. NJN PRS14 IF DEVICE NOT SUPPORTED BY THIS DRIVER
  3576. AOD T2 INCREMENT CHANNEL BYTE INDEX
  3577. PRS13 AOD T1 INCREMENT *TPOR* INDEX
  3578. ERRNZ TPORE-1 CODE DEPENDS ON VALUE
  3579. LMK MAXU+1
  3580. ZJN PRS15 IF TOO MANY UNITS ON CHANNEL
  3581. LDD T3 POSITION *PUT* ORDINAL
  3582. SHN 1
  3583. LMD T2 SET CHANNEL BYTE INDEX
  3584. STM TPOR-1,T1
  3585. LDD MA SAVE (T1), (T2) AND (T3)
  3586. CWD T1
  3587. CRM PRSF,ON
  3588. RJM CFR CHECK FOR FORMAT REQUESTED
  3589. LDD MA
  3590. CWM PRSF,ON RESTORE (T1), (T2) AND (T3)
  3591. SBN 1
  3592. CRD T1
  3593. PRS14 LJM PRS12 CONTINUE SCAN
  3594.  
  3595. PRS15 LDC =C* 1XM - TOO MANY UNITS ON CHANNEL.*
  3596. RJM DFM ISSUE SYSTEM DAYFILE MESSAGE
  3597. MONITOR HNGM
  3598. UJN * HANG
  3599. 1XM SPACE 4
  3600. PRSA BSS 0 TABLE OF *CBT* ADDRESSES
  3601. TCBT HERE
  3602. CON 0 TERMINATE TABLE
  3603.  
  3604. PRSB BSS 0 TABLE OF *PUT* ADDRESSES
  3605. TPUT HERE
  3606. CON 0 TERMINATE TABLE
  3607.  
  3608. PRSC BSS 0 TABLE OF *EMB* ADDRESSES
  3609. QUAL COMPIMB
  3610. TEMB HERE
  3611. QUAL *
  3612. CON 0 TERMINATE TABLE
  3613.  
  3614. PRSD BSS 0 TABLE OF CHANNEL INSTRUCTION ADDRESSES
  3615. CHTB
  3616.  
  3617. PRSE BSS 0 16 BIT INSTRUCTION ADDRESSES
  3618. LIST16
  3619. PRSF BSS 5 DIRECT CELL SAVE AREA
  3620. CFR SPACE 4,10
  3621. ** CFR - CHECK FOR FORMAT REQUEST.
  3622. *
  3623. * ENTRY (CM - CM+4) = EST ENTRY.
  3624. *
  3625. * EXIT DISK FORMATTTED IF REQUIRED.
  3626. * PP HUNG IF FORMATTING ERRORS.
  3627. *
  3628. * USES CS, PR, CA - CA+4, CN - CN+4, SR - SR+4.
  3629. *
  3630. * CALLS F8D, OVI, RHR, RPI, TLB.
  3631.  
  3632.  
  3633. CFR SUBR ENTRY/EXIT
  3634. LDD CM+1
  3635. SHN 21-5
  3636. PJN CFRX IF CHANNEL IS NOT CONCURRENT
  3637. LDD CM+2
  3638. SHN 21-13
  3639. PJN CFR1 IF ONLY ONE CHANNEL
  3640. SHN 21-5-21+13
  3641. PJN CFRX IF SECOND CHANNEL IS NOT CONCURRENT
  3642. CFR1 LDD CM+4
  3643. STM CFRA SAVE MST ADDRESS
  3644. CFR2 LDC **
  3645. CFRA EQU *-1
  3646. SHN 3
  3647. ADN STLL
  3648. CRD CN
  3649. ADN DDLL-STLL
  3650. CRD CA
  3651. LDD CN
  3652. SHN 21-13
  3653. PJN CFRX IF NO FORMAT REQUEST
  3654. LDD MA
  3655. CWM CFRB,TR
  3656. LDN 1 SET *PUT* REQUEST ACTIVE
  3657. STD PR
  3658. RJM OVI INTERLOCK THE *PUT*
  3659. NJN CFR2 IF *PUT* NOT INTERLOCKED
  3660. CFR3 LDN 0 SET FIRST CYLINDER
  3661. STD SR
  3662. LDD TH SET LARGE RECORD SIZE
  3663. STD SR+2
  3664. LDD CA+4 SET UNIT
  3665. SHN 14
  3666. STD CA+4
  3667. SHN -14
  3668. LMC 1S10+3S6
  3669. STD SR+1
  3670. RJM F8D FORMAT DISK
  3671. PJN CFR4 IF NO ERRORS
  3672. MONITOR HNGM
  3673. CFR4 LDD CS
  3674. SCN 10
  3675. LMN 10
  3676. STD CS
  3677. RJM RHR RELEASE DRIVES
  3678. LDD CA CHECK FOR MULTIPLE UNITS
  3679. LPN 7
  3680. SBN 1
  3681. STD CA
  3682. PJN CFR3 IF MORE UNITS
  3683. LCN LFPR CLEAR FORMAT REQUEST
  3684. RJM TLB
  3685. RJM RPI CLEAR *PUT* INTERLOCK
  3686. LDN 0 CLEAR *PUT* REQUEST ACTIVE
  3687. STD PR
  3688. LJM CFRX RETURN
  3689.  
  3690. CFRB DATA C*INTERLOCKING PUT.*
  3691. STA SPACE 4,10
  3692. ** STA - SET TABLE ADDRESSES.
  3693. *
  3694. * ENTRY (A) = 6/ TP, 12/ TA
  3695. * TP = TABLE POINTER.
  3696. * TA = INSTRUCTION TABLE ADDRESS.
  3697. *
  3698. * EXIT (A) = 0.
  3699. *
  3700. * USES T0, T1, T2.
  3701.  
  3702.  
  3703. STA1 STD T2 SET INSTRUCTION ADDRESS
  3704. LDM 1,T1
  3705. RAM 1,T2 SET LOWER 12 BITS OF ADDRESS
  3706. SHN -14
  3707. ADI T1 SET UPPER 6 BITS OF ADDRESS
  3708. LPN 37
  3709. RAI T2
  3710. AOD T0 ADVANCE INSTRUCTION LIST
  3711. STA2 LDI T0
  3712. NJN STA1 IF NOT END OF TABLE
  3713.  
  3714. STA SUBR ENTRY/EXIT
  3715. STD T0
  3716. SHN -14 SET ADDRESS POINTER
  3717. STD T1
  3718. UJN STA2 ENTER LOOP
  3719. 1XY SPACE 4
  3720.  
  3721. * PRESET COMMON DECKS.
  3722.  
  3723. *CALL COMPTLB
  3724. 1XY SPACE 4
  3725. OVERFLOW
  3726.  
  3727. USE *
  3728.  
  3729. END