User Tools

Site Tools


cdc:nos2.source:opl871:6de

Table of Contents

6DE

Table Of Contents

  • [00007] 6DE - *PIOM* DEVICE DRIVER.
  • [00009] *PIOM* DEVICE DRIVER.
  • [00059] EMS - END MASS STORAGE OPERATION.
  • [00092] RDS - READ SECTOR.
  • [00133] WDS - WRITE SECTOR.
  • [00185] CST - CHECK STATUS.
  • [00209] ECS - ECS TRANSFER.
  • [00276] SEA - SET ECS ADDRESS.
  • [00288] PRS - PRESET DRIVER.
  • [00324] MSG - PROCESS MASS STORAGE ERROR.

Source Code

6DE.txt
  1. IDENT 6DE,MSFW
  2. PERIPH
  3. BASE MIXED
  4. SST
  5. *COMMENT 6DE - *PIOM* DEVICE DRIVER.
  6. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  7. TITLE 6DE - *PIOM* DEVICE DRIVER.
  8. SPACE 4,10
  9. *** 6DE - *PIOM* DEVICE DRIVER.
  10. * G. R. MANSFIELD. 70/04/07.
  11. * W. E. GOEBEL. 78/04/29.
  12. SPACE 4,10
  13. *** *6DE* PROVIDES ACCESS TO EXTENDED MEMORY AND BUFFERED DISK
  14. * DEVICES THROUGH THE *PIOM* *CPUMTR* INTERFACE.
  15. SPACE 4,10
  16. ** ENTRY CONDITIONS.
  17. *
  18. *
  19. * (T5) = EST ORDINAL.
  20. * (T6) = TRACK.
  21. * (T7) = SECTOR.
  22. SPACE 4,10
  23. ** EXIT CONDITIONS.
  24. *
  25. *
  26. * NONE.
  27. SPACE 4
  28. ** COMMON DECKS.
  29.  
  30.  
  31. *CALL COMPMAC
  32. *CALL COMSCPS
  33. *CALL COMSDFS
  34. LIST X
  35. *CALL COMSMSP
  36. LIST *
  37. *CALL COMSPIM
  38. SPACE 4,10
  39. ** ASSEMBLY CONSTANTS.
  40.  
  41.  
  42. DEC MICRO 1,, 6DE DECK NAME
  43. TITLE
  44. ORG MSFW
  45. SPACE 4
  46. ** ENTRY POINT TRANSFERS.
  47.  
  48.  
  49. CON PRS PRESET ADDRESS
  50.  
  51.  
  52. RDS CON 0 ENTRY
  53. UJN RDS. ENTER DRIVER
  54.  
  55.  
  56. WDS CON 0 ENTRY
  57. UJN WDS0 ENTER DRIVER
  58. EMS SPACE 4,20
  59. ** EMS - END MASS STORAGE OPERATION.
  60. *
  61. * ENTRY (CHRV, BIT 6) = 0, IF NO PP BUFFER TO RELEASE.
  62. * (T4) = INCREMENT OF PP BUFFER IF ASSIGNED.
  63. *
  64. * EXIT PP I/O BUFFER RELEASED.
  65. * (CHRV) = 0.
  66. * (A) = 0.
  67. *
  68. * CALLS SEA.
  69. *
  70. * NOTE - THE *.EMS* ENTRY POINT IS SUPPORTED ONLY VIA THE
  71. * *ENDMS* MACRO DEFINED IN *COMPMAC*. IF THIS LOCATION
  72. * CHANGES, THE DEFINITION OF *.EMS* MUST BE CHANGED IN
  73. * *PPCOM* AND ALL PROGRAMS USING THE *ENDMS*
  74. * MACRO MUST BE REASSEMBLED.
  75.  
  76.  
  77. .EMS SUBR ENTRY/EXIT
  78. LDM CHRV
  79. LPN 1
  80. ZJN EMS1 IF BUFFER NOT RESERVED
  81. RJM SEA SET ECS BUFFER ADDRESS
  82. CWM ZERO,ON CLEAR BUFFER RESERVATION
  83. EMS1 LDM CHRV CLEAR BUFFER RESERVATION/LINK FLAGS
  84. LPC -201
  85. STM CHRV
  86. LDN 0 SET EXIT CONDITION
  87. UJN .EMSX RETURN
  88.  
  89.  
  90. WDS0 LJM WDS. ENTER DRIVER
  91. RDS SPACE 4,10
  92. ** RDS - READ SECTOR.
  93. *
  94. * ENTRY (A) = 5/0, 1/S, 12/ BA.
  95. * S = SKIP TRANSFER OF DATA IF SET.
  96. * BA = BUFFER ADDRESS FOR SECTOR.
  97. *
  98. * EXIT (A) .LT. 0 IF UNRECOVERED ERROR.
  99. *
  100. * CALLS ECS, SEA.
  101.  
  102.  
  103. RDS. STM RDSA SET BUFFER ADDRESS
  104. ADN 2
  105. STM RDSC
  106. SHN -14
  107. ERRNZ DTSF-10000 ERROR IF VALUE CHANGES
  108. ZJN RDS1 IF NOT SKIP DATA TRANSFER
  109. LDC UJNI+RDS2-RDSB
  110. ERRPL RDS2-RDSB-37 CHECK JUMP IN RANGE
  111. RDS1 STM RDSB MODIFY CODE FOR SKIP
  112. LDD HN READ SECTOR
  113. ERRNZ RESS*100B-100B ERROR IF VALUE CHANGES
  114. RJM ECS
  115. LDM CHRV CHECK IF BUFFER ASSIGNED
  116. SHN 21-0
  117. PJN RDS3 IF BUFFER NOT ASSIGNED
  118. RJM SEA SET ECS BUFFER ADDRESS
  119. ADN 1
  120. CRM *,ON
  121. RDSA EQU *-1
  122. RDSB PSN
  123. * UJN RDS2 (SKIP DATA TRANSFER)
  124. CRM *,HN
  125. RDSC EQU *-1
  126. SBD HN
  127. RDS2 SBN 2
  128. CWM ZERO,ON CLEAR BUFFER RESERVATION
  129. SOM CHRV CLEAR BUFFER RESERVATION FLAG
  130. RDS3 LDM RDS RETURN ADDRESS
  131. LJM CST CHECK STATUS
  132. WDS SPACE 4,10
  133. ** WDS - WRITE SECTOR.
  134. *
  135. * ENTRY (A) = 6/ LSI, 12/ BA.
  136. * LSI = WLSF, IF LAST SECTOR WRITE.
  137. * = WCSF, IF CONSECUTIVE SECTOR WRITE.
  138. * BA = BUFFER ADDRESS FOR SECTOR.
  139. *
  140. * EXIT (A) .LT. 0 IF UNRECOVERED ERROR.
  141. *
  142. * CALLS ECS, SEA.
  143.  
  144.  
  145. WDS. STM WDSB SET BUFFER ADDRESS
  146. ADN 2
  147. STM WDSC
  148. SHN -16 SAVE WRITE LAST SECTOR FLAG
  149. LPN 3
  150. LMN 3
  151. STM WDSA
  152. ERRNZ WLSF ERROR IF VALUE CHANGES
  153. ERRNZ WCSF-300000 ERROR IF VALUE CHANGES
  154. LDM UERR GET REWRITE AND DISABLE BUFFER FLUSH FLAGS
  155. SHN -6
  156. ERRNZ EPRW-100 ADJUST IF VALUE CHANGES
  157. ERRNZ EPNF-200 ADJUST IF VALUE CHANGES
  158. LMN 2
  159. LPC **
  160. * LPC 3 (WRITE LAST SECTOR)
  161. * LPC 1 (WRITE CONSECUTIVE SECTOR)
  162. WDSA EQU *-1
  163. STM WDSD
  164. LDM CHRV
  165. SHN 21-0
  166. MJN WDS3 IF BUFFER RESERVED
  167. WDS2 LDC **
  168. WDSD EQU *-1
  169. ADK REBS*100 RESERVE WRITE BUFFER
  170. RJM ECS
  171. LDD CM+1
  172. NJN CST1 IF ERROR STATUS SET
  173. WDS3 RJM SEA SET ECS BUFFER ADDRESS
  174. ADN 1
  175. CWM *,ON
  176. WDSB EQU *-1
  177. CWM *,HN
  178. WDSC EQU *-1
  179. LDM WDSD
  180. ADC WESS*100 WRITE SECTOR
  181. RJM ECS
  182. LDM WDS RETURN ADDRESS
  183. * UJN CST CHECK STATUS
  184. CST SPACE 4,15
  185. ** CST - CHECK STATUS.
  186. *
  187. * ENTRY (A) = RETURN ADDRESS.
  188. * (CM+1) = STATUS RETURNED BY *PIOM* TRANSFER.
  189. * (MB+1) = PHYSICAL DATA RETURNED BY *PIOM* IF ERROR.
  190. *
  191. * EXIT RETURN TO CALLER IF NO ERROR.
  192. *
  193. * EREXIT TO *7DE*.
  194. *
  195. * USES T1, T2.
  196.  
  197.  
  198. CST BSS 0 ENTRY
  199. STD T1 SAVE BIAS FOR EXIT ADDRESS
  200. LDD CM+1
  201. NJN CST1 IF ERROR
  202. LJM 0,T1 RETURN
  203.  
  204. * PROCESS ERROR.
  205.  
  206. CST1 STM STSA SAVE STATUS
  207. MSERR 7DE
  208. ECS SPACE 4,15
  209. ** ECS - ECS TRANSFER.
  210. *
  211. * ENTRY (A) = 6/ *PIOM* SUBFUNCTION, 6/ FUNCTION FLAGS.
  212. *
  213. * EXIT (A) = 0.
  214. * (CM+1) = ERROR CODE IF NONZERO.
  215. * (CM+3 - CM+4) = PHYSICAL DATA IF ERROR.
  216. * TO *WDS2* IF WRITE BUFFER MUST BE RE-RESERVED.
  217. *
  218. * USES T4, T5, T6, T7, CM - CM+4.
  219. *
  220. * MACROS DELAY, MONITOR, PAUSE.
  221.  
  222.  
  223. ECS5 LDM CHRV
  224. STD CM
  225. LPN 20
  226. ZJN ECS6 IF CHANNEL NOT SELECTED BY CALLER
  227. LDM STSB STORE CHANNEL NUMBER
  228. STD CM+4
  229. ECS6 LDD MA STORE PARAMETERS IN MESSAGE BUFFER
  230. CWD T4
  231. LDC ** SET FUNCTION CODE
  232. ECSA EQU *-1
  233. STD CM+1 SET FUNCTION CODE AND FLAGS
  234. MONITOR PIOM
  235. LDD MA UPDATE PARAMETERS
  236. CRD T4
  237. LDD CM
  238. STM CHRV
  239. LDD CM+1 CHECK RETURN STATUS
  240. SHN -13
  241. NJN ECS4 IF RETRY REQUIRED
  242.  
  243. ECS SUBR ENTRY/EXIT
  244. STM ECSA SAVE FUNCTION CODE
  245. ECS1 LDD OA WAIT OUTPUT REGISTER CLEAR
  246. CRD CM
  247. LDD CM
  248. ZJP ECS5 IF NO MONITOR FUNCTION PENDING
  249. DELAY
  250. UJN ECS1 LOOP
  251.  
  252. * RETRY FUNCTION.
  253.  
  254. ECS2 LDM ECSA CHECK FOR WRITE REJECT
  255. SHN -7
  256. ZJN ECS1 IF RESERVE BUFFER OR READ SECTOR
  257. LDM CHRV
  258. SHN 21-6
  259. MJN ECS1 IF RECALL AFTER FLUSH
  260. SHN 21-0-21+6
  261. MJN ECS1 IF WRITE BUFFER RESERVED
  262. LJM WDS2 RE-RESERVE WRITE BUFFER
  263.  
  264. * WAIT FOR PENDING BUFFERED I/O.
  265.  
  266. ECS3 DELAY 1*8D DELAY 1 MILLISECOND
  267. ECS4 PAUSE NE
  268. LDD OA WAIT FOR REISSUE ALLOWED STATUS
  269. ADN 2
  270. CRD CM
  271. LDD CM+1
  272. SHN 21-12
  273. PJN ECS3 IF PENDING I/O NOT COMPLETE
  274. UJN ECS2 RETRY FUNCTION
  275. SEA SPACE 4,10
  276. ** SEA - SET ECS ADDRESS.
  277. *
  278. * ENTRY (T4) = RELATIVE ECS BUFFER ADDRESS.
  279. *
  280. * EXIT (A) = ECS BUFFER ADDRESS.
  281.  
  282.  
  283. SEA SUBR ENTRY/EXIT
  284. SEAA LDC **
  285. ADD T4
  286. UJN SEAX RETURN
  287. PRS SPACE 4,10
  288. ** PRS - PRESET DRIVER.
  289. *
  290. * ENTRY (CM - CM+4) = EST ENTRY.
  291. *
  292. * EXIT NONE.
  293.  
  294.  
  295. PRS LDC EPBP GET FWA ECS PP BUFFERS
  296. CRM ZERO,ON
  297. LDM ZERO+4
  298. STM SEAA+1
  299. LDM ZERO+3
  300. LPN 77
  301. ADC LDCI
  302. STM SEAA
  303. LDN ZERL ZERO BUFFER
  304. CRM ZERO,ON
  305. LJM SMSX RETURN
  306.  
  307. ZERO BSS 0 FIVE BYTES FOR READING BUFFER ADDRESS
  308. .1 SET *+5+4-MSFW CHECK FOR OVERFLOW
  309. .1 SET .1/5
  310. .1 SET MSFW+.1*5
  311. .2 SET PPFW-5-*-5 BYTES AVAILABLE BEFORE OVERFLOW
  312. ERRNG PPFW-5-.1 DRIVER OVERFLOWS INTO *PPFW*-5
  313.  
  314.  
  315. * THE FOLLOWING CHECK VERIFIES THAT CELLS *ZERO* - *ZERO*+4
  316. * ARE NOT DESTROYED BY THE ERROR PROCESSOR.
  317.  
  318. ERRPL ZERO+4-DEFW CODE IS DESTROYED BY ERROR PROCESSOR
  319. 7DE MSOVL 7644,T2,EPFW-1,(MASS STORAGE ERROR PROCESSOR.)
  320. SPACE 4
  321. *** *7DE* IS CALLED BY *6DE* WHEN AN UNRECOVERED ERROR HAS
  322. * OCCURRED.
  323. MSE SPACE 4,35
  324. ** MSG - PROCESS MASS STORAGE ERROR.
  325. *
  326. * ENTRY (T1) = RDCT.
  327. * (T2) = DEST.
  328. * (T4 - T7) = DRIVER PARAMETERS.
  329. * (RDCT) = ERROR PROCESSOR INTERFACE WORD.
  330. * BIT 4 = 0 IF FIRST RETRY ATTEMPT.
  331. * (STSA) = ERROR CODE RETURNED BY *CPUMTR*.
  332. * (MB+1) = PHYSICAL DATA RETURNED BY *PIOM* FUNCTION.
  333. *
  334. * EXIT TO *7EK*.
  335. * (T2) = READ BUFFER ADDRESS.
  336. * (T4 - T7) = UNCHANGED.
  337. * (DEDT) = 8/0, 4/*6DE* DRIVER TYPE.
  338. * (DEEC) = ERROR CODE.
  339. * (DENR) = 0 IF NOT 819 DEVICE OR IF 819 DEVICE AND *NOT
  340. * READY* ERROR.
  341. * (DENR) = 1 IF 819 DEVICE AND NOT *NOT READY* ERROR.
  342. * (DERC) = 0 IF FIRST RETRY ATTEMPT, ELSE UNCHANGED.
  343. * (DERW) = 1 IF WRITE REQUEST, 0 IF READ REQUEST.
  344. * (DEST) = 2000 (UNRECOVERED ERROR).
  345. * (DEWR) = 0 IF FIRST RETRY ATTEMPT, ELSE UNCHANGED.
  346. * (DEXA) = ERROR PROCESSOR EXIT ADDRESS.
  347. * (RDCT) = ERROR PROCESSOR INTERFACE WORD.
  348. * BITS AFFECTED BY THIS OVERLAY -
  349. * BIT 4 = 1 IF FIRST RETRY ATTEMPT, OTHERS 0.
  350. * (MB+2) = DRIVER DEPENDENT PART OF BML MESSAGE.
  351. * 12/, 12/S, 12/W, 24/E.
  352. * S = ERROR STATUS.
  353. * W = WORD COUNT.
  354. * E = EXTENDED MEMORY ADDRESS.
  355. *
  356. * USES T1, T2, CM - CM+4.
  357. *
  358. * MACROS MSERR.
  359.  
  360.  
  361. MSG ENTRY *7DE* ENTRY
  362.  
  363. * PRESET ERROR PROCESSING CELLS. THE *DEST* UNRECOVERED ERROR
  364. * FLAG IS PRESET *ON* TO AVOID ERROR RETRIES ON BUFFERED DISK
  365. * OR EXTENDED MEMORY DEVICES. THE BUFFERED DISK DRIVER OR
  366. * *CPUMTR* WILL HAVE ALREADY PERFORMED ANY APPROPRIATE RETRY
  367. * SEQUENCE FOR THE ERROR.
  368.  
  369. SFA EST,T5 GET EST ENTRY
  370. ADK EQDE
  371. CRD CM
  372. LDM STSA PRESET ERROR CODE
  373. STM DEEC
  374. ERRPL DEEC-* CODE DESTROYED
  375. LDC 2000 SET UNRECOVERED FLAG
  376. STI T2
  377. LDK /COMSDFS/D6DE SAVE DRIVER TYPE
  378. STM DEDT
  379. ERRPL DEDT-* STORE DESTROYS CODE
  380. LDM ECSA SET READ/WRITE FLAG
  381. SHN -6
  382. LPN 1
  383. LMN 1
  384. STM DERW SAVE READ/WRITE FLAG
  385. ERRPL DERW-* STORE DESTROYS CODE
  386. ERRNZ REBS
  387. ERRNZ RESS-1
  388. ERRNZ WESS-2
  389. ERRNZ WRIP-1
  390. ERRNZ REDP
  391. LDI T1
  392. LPC 100
  393. NJN MSG2 IF ERROR RECOVERY ALREADY IN PROGRESS
  394. STM DERC INITIALIZE RETRY COUNT
  395. STM DENR INITIALIZE NON-RECOVERABLE FLAG
  396. LDD HN SET RECOVERY IN PROGRESS FLAG
  397. STI T1
  398. MSG2 LDM DERW SET/CLEAR DATA WRITTEN FLAG
  399. STM DEWR
  400.  
  401. * SINCE THE 819 INTERRUPT HANDLER DOES NOT ATTEMPT TO
  402. * ACCURATELY ASSESS THE RECOVERABILITY OF THE FAILURE, FORCE
  403. * THE ERROR NON-RECOVERABLE UNLESS IT-S A *NOT READY*
  404. * CONDITION.
  405.  
  406. LDD CM+3
  407. LPN 77
  408. LMN 1RV
  409. ZJN MSG3 IF 819 DEVICE
  410. LMN 1RW&1RV
  411. NJN MSG4 IF NOT 819 DEVICE
  412. MSG3 LDM DEEC
  413. LMK NRDE
  414. ZJN MSG4 IF DEVICE NOT READY ERROR
  415. LMK LNRE&NRDE
  416. ZJN MSG4 IF LOGICAL NOT READY ERROR
  417. AOM DENR SET ERROR NOT RECOVERABLE
  418. MSG4 LDC ECS2 SET RETURN ADDRESS
  419. STM DEXA
  420. ERRPL DEXA-* STORE DESTROYS CODE
  421. LDD CM+3 CHECK EQUIPMENT TYPE
  422. LPN 77
  423. LMN 1RE
  424.  
  425. * *7DE* AND ASSOCIATED *PPR* ERROR PROCESSING OVERLAYS ISSUE NO
  426. * BML, ERROR LOG OR DAYFILE MESSAGES FOR BUFFERED DISK DEVICES.
  427. * BUFFERED DEVICE DRIVERS ISSUE ALL SUCH MESSAGES.
  428.  
  429. NJN MSG8 IF BUFFERED DISK
  430. LDD MA GET PHYSICAL DATA FOR MESSAGE
  431. ADN 1
  432. CRD CM
  433. LDN 0 CLEAR UNUSED FIELDS IN BML MESSAGE
  434. STD CM
  435. LDM STSA ADD *PIOM* STATUS TO MESSAGE
  436. LMK ADDE
  437. ZJN MSG7 IF ADDRESS ERROR
  438. LDN 1&10 SET *HARDWARE ERROR* FLAG
  439. MSG7 LMN 10
  440. STD CM+1
  441. LDC 101 SAVE WORD COUNT
  442. STD CM+2
  443. MSG8 LDM RDSA SET READ BUFFER ADDRESS
  444. STD T2
  445. LDD MA WRITE *7EK* PARAMETERS
  446. ADN 2
  447. CWD CM
  448. MSERR 7EK EXECUTE *7EK*
  449. SPACE 4,10
  450. ERRNG 10000-* *7DE* HAS OVERFLOWED
  451. BSS 10000-* SPARES (ADJUST ORIGIN BY 5 AS REQUIRED)
  452. CON MSG-1 (T0) = ENTRY ADDRESS - 1
  453. CON RDCT (T1) = RDCT
  454. CON DEST (T2) = DEST
  455. ERRNZ LN-* INCORRECT OVERLAY LENGTH
  456. QUAL *
  457. SPACE 4
  458. END
cdc/nos2.source/opl871/6de.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator