User Tools

Site Tools


cdc:nos2.source:opl871:6dc

Table of Contents

6DC

Table Of Contents

  • [00005] 6DC - CONCURRENT PP OVERLAY LOADER.
  • [00009] CONCURRENT PP OVERLAY LOADER.
  • [00070] EMS - END MASS STORAGE OPERATION.
  • [00080] WDS - WRITE SECTOR.
  • [00090] RDS - READ SECTOR.
  • [00233] PRS - PRESET.

Source Code

6DC.txt
  1. IDENT 6DC,MSFW
  2. PERIPH
  3. BASE MIXED
  4. SST
  5. TITLE 6DC - CONCURRENT PP OVERLAY LOADER.
  6. *COMMENT 6DC - CONCURRENT PP OVERLAY LOADER.
  7. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  8. 6DC SPACE 4,10
  9. *** 6DC - CONCURRENT PP OVERLAY LOADER.
  10. *
  11. * J. M. MAREK. 85/11/01.
  12. SPACE 4,20
  13. *** *6DC* LOADS 16-BIT OVERLAYS INTO CONCURRENT PPS (CPP). IT IS
  14. * EXPECTED THAT THE ONLY CPP SUBROUTINE TO CALL *6DC* WILL BE
  15. * THE PERIPHERAL LIBRARY LOADER (PLL) IN PP RESIDENT. *6DC* IS
  16. * LOADED INTO THE DRIVER OVERLAY AREA WHEN A CPP PROGRAM ISSUES
  17. * A *SETMS* REQUEST. *6DC* PROVIDES THE STANDARD DRIVER ENTRY
  18. * POINTS, *RDS*, *WDS*, AND *EMS*.
  19. *
  20. * WHEN IT IS CALLED AT *RDS*, IT EXAMINES THE PARAMETERS IN
  21. * *T5* - *T7*. IF THE PARAMETERS SPECIFY LOADING A CM RESIDENT
  22. * 16-BIT PP PROGRAM, *6DC* COMPLETES THE LOAD, PERFORMING THE
  23. * NECESSARY PACKING, AND RETURNS TO THE CALLER. IF A MASS
  24. * RESIDENT PROGRAM IS REQUESTED, *RDS* ISSUES AN ERROR LOG
  25. * MESSAGE AND RETURNS AN ERROR STATUS (-1) TO THE CALLER. IF
  26. * *T5* - *T7* DO NOT SPECIFY A 16-BIT LOAD, *6DC* HANGS THE
  27. * CPP.
  28. *
  29. * WHEN *6DC* IS CALLED AT *WDS*, IT ALSO HANGS THE *CPP*.
  30. *
  31. * WHEN IT IS CALLED AT *EMS*, IT SIMPLY RETURNS TO THE CALLER.
  32. *
  33. * NOTE. DURING EXECUTION *6DC* DESTROYS ITS PRESET CODE.
  34. * DRIVER PRESET SHOULD NEVER BE SPECIFIED WITHOUT DRIVER LOAD.
  35. SPACE 4,10
  36. *** ENTRY CONDITIONS.
  37. *
  38. * CM RESIDENT 16-BIT OVERLAY.
  39. * (T5 - T7) = 2/ ,4/ 10,18/ *RPL* ADDRESS,12/ LENGTH
  40. *
  41. * MS RESIDENT OVERLAY. (NOT SUPPORTED)
  42. * (T5 - T7) = 2/ ,4/ 14,6/ ESTO,12/ TRACK,12/ SECTOR
  43. *
  44. * MS READ. (NOT SUPPORTED)
  45. * (T5 - T7) = 3/0, 9/ ESTO,12/ TRACK,12/ SECTOR
  46. COMMON SPACE 4,10
  47. * COMMON DECKS.
  48.  
  49.  
  50. *CALL COMPMAC
  51. *CALL COMPIOU
  52. *CALL COMSMSC
  53. *CALL COMSMSP
  54. EJECT
  55. ** ENTRY POINT TRANSFERS.
  56.  
  57.  
  58. ORG MSFW
  59.  
  60. CON PRS PRESET ADDRESS
  61.  
  62.  
  63. RDS CON 0 ENTRY
  64. UJN RDS. ENTER DRIVER
  65.  
  66.  
  67. WDS CON 0 ENTRY
  68. UJN WDS. ENTER DRIVER
  69. EMS SPACE 4,10
  70. ** EMS - END MASS STORAGE OPERATION.
  71. *
  72. * EXIT (A) = 0.
  73.  
  74.  
  75. .EMS SUBR ENTRY/EXIT
  76. LDN 0
  77. STM CHRV
  78. UJN .EMSX RETURN
  79. WDS SPACE 4,10
  80. ** WDS - WRITE SECTOR.
  81. *
  82. * *WDS* HANGS THE PP WHEN IT IS CALLED.
  83. *
  84. * ENTRY (A) = BUFFER ADDRESS FOR SECTOR.
  85.  
  86.  
  87. WDS. MONITOR HNGM HANG THE PP
  88. WDS1 UJN WDS. CONTINUE HANGING
  89. RDS SPACE 4,10
  90. ** RDS - READ SECTOR.
  91. *
  92. * ENTRY (A) = BUFFER ADDRESS FOR SECTOR.
  93. *
  94. * EXIT (A) = 0 IF TRANSFER COMPLETE.
  95. * = ERROR CODE IF ERROR OCCURRED.
  96.  
  97.  
  98. RDS6 EQU WDS1
  99.  
  100. RDS7 LDM PLLA GET OVERLAY NAME
  101. STM RDSB
  102. LDM PLLB
  103. STM RDSB+1
  104. LDC RDSA+ERLN ISSUE ERROR LOG MESSAGE
  105. RJM DFM
  106. LDML RDS GET RETURN ADDRESS
  107. STDL CM
  108. LCN 1 SET ERROR FLAG
  109. LJM 0,CM RETURN
  110.  
  111. RDS. LDD T5 CHECK 16-BIT LOAD BIT
  112. SHN 21-11
  113. RDS1 PJN RDS6 IF NOT 16-BIT LOAD
  114. SHN 21-10-21+11
  115. MJN RDS7 IF MS RESIDENT OVERLAY
  116. SHN 21-5-21+10 GET RPL HEADER
  117. SCN 77
  118. LMD T6
  119. CRD CM
  120. ADN 1 SET FWA OF OVERLAY
  121. STD T6
  122. SHN -14
  123. STD T5
  124. LDD CM+1 GET LOAD ADDRESS
  125. LPN 17
  126. SHN 14
  127. LMD CM+2
  128. ZJN RDS2 IF ZERO LEVEL OVERLAY
  129. STDL LA
  130. RDS2 STML 2,LA
  131. LDDL LA
  132. ADN 5 SET FWA OF OVERLAY CODE
  133. STDL CM+2
  134. SOD T7 COMPUTE THE NUMBER OF BYTES
  135. SHN 4 BYTES = WORDS(15)/4 AND TRUNCATED
  136. SBD T7
  137. SHN -2
  138. ADDL CM+2 COMPUTE THE LAST BYTE ADDRESS
  139. STDL T7
  140. SHN -15
  141. NJN RDS1 IF OVERLAY WRAPS MEMORY
  142. LDD CM BUILD NORMAL OVERLAY HEADER
  143. STI LA
  144. LDD CM+1
  145. SCN 77
  146. STM 1,LA
  147. LDN 1
  148. STM 3,LA
  149. LDD CM+4
  150. STM 4,LA
  151. LDN 4
  152. STD T4
  153.  
  154. * START THE MAIN LOOP WITH THESE INITIAL CONDITIONS -
  155. *
  156. * (T4) = 4.
  157. * (T5 - T6) = FWA OF THE OVERLAY IN CM.
  158. * (T7) = LAST BYTE ADDRESS+1 OF THE OVERLAY IN PP MEMORY.
  159. * (CM+2) = FWA OF THE OVERLAY CODE.
  160. * (LA) = LOAD ADDRESS OF THE OVERLAY.
  161.  
  162. * GET 15 16-BIT BYTES.
  163.  
  164. RDS3 LDD T5 READ THE NEXT 4 WORDS
  165. SHN 14
  166. LMD T6
  167. CRM BUF,T4
  168. STD T6
  169. SHN -14
  170. STD T5
  171. LDC BUF
  172. STD CM
  173.  
  174. * LOAD 12 BITS FROM THE FIRST BYTE AND 4 FROM THE NEXT.
  175.  
  176. RDS4 LDI CM
  177. SHN 4
  178. STIL CM+2
  179. AOD CM
  180. LDI CM
  181. SHN -8D
  182. RAIL CM+2
  183. AODL CM+2
  184. SBDL T7
  185. PJN RDS5 IF LAST BYTE
  186.  
  187. * LOAD 8 BITS FROM THE CURRENT BYTE AND 8 FROM THE NEXT.
  188.  
  189. LDI CM
  190. SHN 8D
  191. SCN 77
  192. STIL CM+2
  193. AOD CM
  194. LDI CM
  195. SHN -4
  196. RAIL CM+2
  197. AODL CM+2
  198. SBDL T7
  199. PJN RDS5 IF LAST BYTE
  200.  
  201. * LOAD 4 BITS FROM THE CURRENT BYTE AND 12 BITS FROM THE NEXT.
  202.  
  203. LDI CM
  204. LPN 17
  205. SHN 12D
  206. STIL CM+2
  207. AOD CM
  208. LDI CM
  209. RAIL CM+2
  210. AODL CM+2
  211. SBDL T7
  212. PJN RDS5 IF LAST BYTE
  213.  
  214. * CHECK FOR MORE DATA.
  215.  
  216. AOD CM
  217. SBK BUF+4*5
  218. MJP RDS4 IF 4 WORDS HAVE NOT BEEN PROCESSED
  219. UJP RDS3 GET 4 MORE WORDS
  220.  
  221. RDS5 LDML RDS GET RETURN ADDRESS
  222. STDL CM
  223. LDN 0
  224. LJM 0,CM RETURN
  225.  
  226.  
  227. RDSA DATA H* 6DC -*
  228. RDSB DATA C* XXX IS MASS RESIDENT.*
  229.  
  230. BUF BSS 0
  231. * BSS 4*5
  232. PRS SPACE 4,10
  233. ** PRS - PRESET.
  234. *
  235. * CALLS SLI.
  236.  
  237.  
  238. PRS LDC PRSA GET TABLE OF LONG INSTRUCTIONS
  239. STD CM+4
  240. LDD T3 PRESERVE *T3*
  241. STD CM+3
  242. PRS1 LDI CM+4 GET NEXT INSTRUCTION ADDRESS
  243. ZJN PRS2 IF END OF LIST
  244. STD T3
  245. BLI T3 BUILD LONG INSTRUCTION
  246. AOD CM+4
  247. UJN PRS1 PROCESS NEXT INSTRUCTION
  248.  
  249. PRS2 LDD CM+3 RESTORE *T3*
  250. STD T3
  251. LDC SMSX ENSURE PRESET IS NOT RE-EXECUTED
  252. STM MSFW
  253. LJM SMSX RETURN
  254.  
  255.  
  256. PRSA BSS 0
  257. LIST16
  258.  
  259. .1 MAX *,BUF+4*5
  260. .1 SET .1+4-MSFW CHECK FOR OVERFLOW
  261. .1 SET .1/5
  262. .1 SET MSFW+.1*5
  263. .2 SET PPFW-5-*-5 BYTES AVAILABLE BEFORE OVERFLOW
  264. ERRNG PPFW-5-.1 DRIVER OVERFLOWS INTO *PPFW*-5
  265. END
cdc/nos2.source/opl871/6dc.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator