home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Multimedia Jumpstart 1.1a / CD_ROM.BIN / develpmt / drivers / mscdex / hitachi / cdread.doc < prev    next >
Encoding:
Text File  |  1990-10-15  |  21.6 KB  |  332 lines

  1. ;****************************************************************
  2. ;*                                                              *
  3. ;*    C D R E A D                                               *
  4. ;*    Version 8a                                                *
  5. ;*    (C) Copyright Hitachi, Ltd. 1985,1987,1990                *
  6. ;*                                                              *
  7. ;*    Specifications for the interface to CDREAD().             *
  8. ;*                                                              *
  9. ;*    < INPUT >                                                 *
  10. ;*      AH : FUNCTION CODE                                      *
  11. ;*              0  -----  RESET                                 *
  12. ;*              1  -----  READ                                  *
  13. ;*              2  -----  SEEK WITHOUT WAIT     *1              *
  14. ;*              3  -----  SEEK WITH WAIT        *2              *
  15. ;*              4  -----  STATUS READ                           *
  16. ;*              5  -----  DRIVE STATUS READ                     *
  17. ;*              6  -----  reserved                              *
  18. ;*              7  -----  reserved                              *
  19. ;*              8  -----  SEEK TO LEAD-IN                       *
  20. ;*              9  -----  READ SUBCODE Q (10 bytes)             *
  21. ;*              A  -----  PAUSE                                 *
  22. ;*              B  -----  AUDIO                                 *
  23. ;*              C  -----  STOP                                  *
  24. ;*              D  -----  AUDIO ( extended )                    *
  25. ;*              E  -----  AUDIO BY TNO                          *
  26. ;*              F  -----  OPEN                                  *
  27. ;*              10 -----  CLOSE                                 *
  28. ;*              11 -----  PRE/ALLOW MED                         *
  29. ;*              12 -----  SET POWER SAVE                        *
  30. ;*              13 -----  reserved                              *
  31. ;*              14 -----  reserved                              *
  32. ;*              15 -----  READ VERSION                          *
  33. ;*              16 -----  reserved                              *
  34. ;*              17 -----  MODE SET                              *
  35. ;*              18 -----  GENERAL (direct commu. with drive)    *
  36. ;*                                                              *
  37. ;* RESET ---- all models *10                                    *
  38. ;*    <INPUT>                                                   *
  39. ;*      AH=0                                                    *
  40. ;*      DL=DRIVE NUMBER         ( 0 TO 3 )                      *
  41. ;*    <OUTPUT>                                                  *
  42. ;*      CY=0 -- NO ERROR                                        *
  43. ;*        =1 -- ERROR ( AH has error code )                     *
  44. ;*      AL=DRIVE TYPE (valid only when CY=0)                    *
  45. ;*               0FFH - unknown                                 *
  46. ;*               00   - CDR-1502S                               *
  47. ;*               2XH  - CDR-2500/2500S                          *
  48. ;*               3XH  - CDR-1503S                               *
  49. ;*               Other- New type                                *
  50. ;*         * - to reset CPU clock mode flag.  If you change the *
  51. ;*             CPU clock of the computer by soft-command or     *
  52. ;*             soft-key,  you must issue this command to tell   *
  53. ;*             it to CDREAD program.                            *
  54. ;*                                                              *
  55. ;* READ ---- all models *10                                     *
  56. ;*    <INPUT>                                                   *
  57. ;*      AH=1                                                    *
  58. ;*      AL=DATA BLOCK COUNT     ( 1 TO 255 )                    *
  59. ;*      CH=MINUTE               ( 0 TO 99  )                    *
  60. ;*      CL=SECOND               ( 0 TO 59  )                    *
  61. ;*      DH=DATA BLOCK           ( 0 TO 74  )                    *
  62. ;*      DL=DRIVE NUMBER         ( 0 TO 3 )                      *
  63. ;*      ES:BX=DATA TRANSFER ADDRESS                             *
  64. ;*    <OUTPUT>                                                  *
  65. ;*      CY=0 -- NO ERROR                                        *
  66. ;*        =1 -- ERROR ( AH has error code )                     *
  67. ;*                                                              *
  68. ;* SEEK ---- all models *10                                     *
  69. ;*    <INPUT>                                                   *
  70. ;*      AH=2                                                    *
  71. ;*      CH=MINUTE               ( 0 TO 99  )                    *
  72. ;*      CL=SECOND               ( 0 TO 59  )                    *
  73. ;*      DH=DATA BLOCK           ( 0 TO 74  )                    *
  74. ;*      DL=DRIVE NUMBER         ( 0 TO 3 )                      *
  75. ;*    <OUTPUT>                                                  *
  76. ;*      CY=0 -- NO ERROR                                        *
  77. ;*        =1 -- ERROR ( AH has error code )                     *
  78. ;*                                                              *
  79. ;* SEEK WITH WAIT ---- all models *10                           *
  80. ;*    <INPUT>                                                   *
  81. ;*      AH=3                                                    *
  82. ;*      CH=MINUTE               ( 0 TO 99  )                    *
  83. ;*      CL=SECOND               ( 0 TO 59  )                    *
  84. ;*      DH=DATA BLOCK           ( 0 TO 74  )                    *
  85. ;*      DL=DRIVE NUMBER         ( 0 TO 3 )                      *
  86. ;*    <OUTPUT>                                                  *
  87. ;*      CY=0 -- NO ERROR                                        *
  88. ;*        =1 -- ERROR ( AH has error code )                     *
  89. ;*                                                              *
  90. ;* STATUS ---- all models *10                                   *
  91. ;*    <INPUT>                                                   *
  92. ;*      AH=4                                                    *
  93. ;*      DL=DRIVE NUMBER         ( 0 TO 3 )                      *
  94. ;*    <OUTPUT>                                                  *
  95. ;*      CY=0 -- NO ERROR                                        *
  96. ;*        =1 -- ERROR ( AH has error code )                     *
  97. ;*      AL=STATUS (valid only when CY=0)                        *
  98. ;*                                                              *
  99. ;* DRIVE STATUS ---- all models *10                             *
  100. ;*    <INPUT>                                                   *
  101. ;*      AH=5                                                    *
  102. ;*      DL=DRIVE NUMBER         ( 0 TO 3 )                      *
  103. ;*    <OUTPUT>                                                  *
  104. ;*      CY=0 -- NO ERROR                                        *
  105. ;*        =1 -- ERROR ( AH has error code )                     *
  106. ;*      AL=DRIVE STATUS (valid only when CY=0)                  *
  107. ;*                                                              *
  108. ;* SEEK TO LEAD-IN ---- CDR-1503S *11                           *
  109. ;*    <INPUT>                                                   *
  110. ;*      AH=8                                                    *
  111. ;*      DL=DRIVE NUMBER         ( 0 TO 3 )                      *
  112. ;*    <OUTPUT>                                                  *
  113. ;*      CY=0 -- NO ERROR                                        *
  114. ;*        =1 -- ERROR ( AH has error code )                     *
  115. ;*                                                              *
  116. ;* READ SUBCODE Q ---- CDR-1503S *11                            *
  117. ;*    <INPUT>                                                   *
  118. ;*      AH=9                                                    *
  119. ;*      DL=DRIVE NUMBER         ( 0 TO 3 )                      *
  120. ;*      ES:BX=DATA TRANSFER ADDRESS                             *
  121. ;*              (10 bytes buffer is requierd)                   *
  122. ;*    <OUTPUT>                                                  *
  123. ;*      CY=0 -- NO ERROR                                        *
  124. ;*        =1 -- ERROR ( AH has error code )                     *
  125. ;*                                                              *
  126. ;* PAUSE (STOP AUDIO) ---- CDR-1503S *11                        *
  127. ;*    <INPUT>                                                   *
  128. ;*      AH=0AH                                                  *
  129. ;*      DL=DRIVE NUMBER         ( 0 TO 3 )                      *
  130. ;*    <OUTPUT>                                                  *
  131. ;*      CY=0 -- NO ERROR                                        *
  132. ;*        =1 -- ERROR ( AH has error code )                     *
  133. ;*                                                              *
  134. ;* PLAY AUDIO ---- CDR-1503S *11                                *
  135. ;*    <INPUT>                                                   *
  136. ;*      AH=0BH                                                  *
  137. ;*      DL=DRIVE NUMBER         ( 0 TO 3 )                      *
  138. ;*      ES:BX=PARAMETER ADDRESS                                 *
  139. ;*          [ES:BX] --> START LOCATION (MINUTE) (0 - 99)        *
  140. ;*          [ES:BX+1]     "      "     (SECOND) (0 - 59)        *
  141. ;*          [ES:BX+2]     "      "     (BLOCK)  (0 - 74)        *
  142. ;*          [ES:BX+3]   END   LOCATION (MINUTE) (0 - 99)        *
  143. ;*          [ES:BX+4]    "       "     (SECOND) (0 - 59)        *
  144. ;*          [ES:BX+5]    "       "     (BLOCK)  (0 - 74)        *
  145. ;*    <OUTPUT>                                                  *
  146. ;*      CY=0 -- NO ERROR                                        *
  147. ;*        =1 -- ERROR ( AH has error code )                     *
  148. ;*                                                              *
  149. ;* STOP (SPIN DOWN) ---- all models *10                         *
  150. ;*    <INPUT>                                                   *
  151. ;*      AH=0CH                                                  *
  152. ;*      DL=DRIVE NUMBER         ( 0 TO 3 )                      *
  153. ;*    <OUTPUT>                                                  *
  154. ;*      CY=0 -- NO ERROR                                        *
  155. ;*        =1 -- ERROR ( AH has error code )                     *
  156. ;*                                                              *
  157. ;* PLAY AUDIO (EXTENDED) ---- CDR-1503S *11                     *
  158. ;*    <INPUT>                                                   *
  159. ;*      AH=0DH                                                  *
  160. ;*      AL=OUTPUT MODE                                          *
  161. ;*              0 - Both channel                                *
  162. ;*              1 - Left channel only                           *
  163. ;*              2 - Right channel only                          *
  164. ;*              3 - None (mute)                                 *
  165. ;*      DL=DRIVE NUMBER         ( 0 TO 3 )                      *
  166. ;*      ES:BX=PARAMETER ADDRESS                                 *
  167. ;*          [ES:BX] --> START LOCATION (MINUTE) (0 - 99)        *
  168. ;*          [ES:BX+1]     "      "     (SECOND) (0 - 59)        *
  169. ;*          [ES:BX+2]     "      "     (BLOCK)  (0 - 74)        *
  170. ;*          [ES:BX+3]   END   LOCATION (MINUTE) (0 - 99)        *
  171. ;*          [ES:BX+4]    "       "     (SECOND) (0 - 59)        *
  172. ;*          [ES:BX+5]    "       "     (BLOCK)  (0 - 74)        *
  173. ;*    <OUTPUT>                                                  *
  174. ;*      CY=0 -- NO ERROR                                        *
  175. ;*        =1 -- ERROR ( AH has error code )                     *
  176. ;*                                                              *
  177. ;* PLAY AUDIO BY TNO ---- CDR-1503S *11                         *
  178. ;*    <INPUT>                                                   *
  179. ;*      AH=0EH                                                  *
  180. ;*      CH=START TRACK NUMBER   ( 0 TO 99 )                     *
  181. ;*      CL=END TRACK NUMBER     ( 0 TO 99 )                     *
  182. ;*      DL=DRIVE NUMBER         ( 0 TO 3 )                      *
  183. ;*              *:ZERO of TNO is treated as the first TNO       *
  184. ;*              *:99 of END TNO is treated as the last TNO      *
  185. ;*    <OUTPUT>                                                  *
  186. ;*      CY=0 -- NO ERROR                                        *
  187. ;*        =1 -- ERROR ( AH has error code )                     *
  188. ;*                                                              *
  189. ;* OPEN ---- CDR-1503S *11                                      *
  190. ;*    <INPUT>                                                   *
  191. ;*      AH=0FH                                                  *
  192. ;*      DL=DRIVE NUMBER         ( 0 TO 3 )                      *
  193. ;*    <OUTPUT>                                                  *
  194. ;*      CY=0 -- NO ERROR                                        *
  195. ;*        =1 -- ERROR ( AH has error code )                     *
  196. ;*                                                              *
  197. ;* CLOSE ---- CDR-1503S *11                                     *
  198. ;*    <INPUT>                                                   *
  199. ;*      AH=10H                                                  *
  200. ;*      DL=DRIVE NUMBER         ( 0 TO 3 )                      *
  201. ;*    <OUTPUT>                                                  *
  202. ;*      CY=0 -- NO ERROR                                        *
  203. ;*        =1 -- ERROR ( AH has error code )                     *
  204. ;*                                                              *
  205. ;* DOOR LOCK/UNLOCK ---- CDR-1503S *11                          *
  206. ;*    <INPUT>                                                   *
  207. ;*      AH=11H                                                  *
  208. ;*      AL=MODE                                                 *
  209. ;*              0 - READ LOCK MODE                              *
  210. ;*              1 - SET LOCK MODE                               *
  211. ;*              2 - SET UNLOCK MODE                             *
  212. ;*      DL=DRIVE NUMBER         ( 0 TO 3 )                      *
  213. ;*    <OUTPUT>                                                  *
  214. ;*      CY=0 -- NO ERROR                                        *
  215. ;*        =1 -- ERROR ( AH has error code )                     *
  216. ;*                                                              *
  217. ;* SET POWER SAVE MODE ---- CDR-1503S *11                       *
  218. ;*    <INPUT>                                                   *
  219. ;*      AH=12H                                                  *
  220. ;*      AL=MODE                                                 *
  221. ;*              0 - RELEASE POWER SAVE MODE                     *
  222. ;*              1 TO 20 - SET POWER SAVE MODE (unit:minute)     *
  223. ;*      DL=DRIVE NUMBER         ( 0 TO 3 )                      *
  224. ;*    <OUTPUT>                                                  *
  225. ;*      CY=0 -- NO ERROR                                        *
  226. ;*        =1 -- ERROR ( AH has error code )                     *
  227. ;*                                                              *
  228. ;* READ VERSION OF DRIVE ---- CDR-1503S *11                     *
  229. ;*    <INPUT>                                                   *
  230. ;*      AH=15H                                                  *
  231. ;*      DL=DRIVE NUMBER         ( 0 TO 3 )                      *
  232. ;*      ES:BX=DATA TRANSFER ADDRESS                             *
  233. ;*              (52 bytes buffer is requierd)                   *
  234. ;*    <OUTPUT>                                                  *
  235. ;*      CY=0 -- NO ERROR                                        *
  236. ;*        =1 -- ERROR ( AH has error code )                     *
  237. ;*                                                              *
  238. ;* SET MODE ---- all models *10                                 *
  239. ;*    <INPUT>                                                   *
  240. ;*      AH=17H                                                  *
  241. ;*      AL=MODE                                                 *
  242. ;*              0 - AUTO DATA TRANS MODE (DEFAULT)  *9          *
  243. ;*              1 - DMA DATA TRANS MODE                         *
  244. ;*              2 - CHANGE I/O ADDRESS (CX has I/O address)     *
  245. ;*      CX=I/O ADDRESS OF I/F CARD (valid only when AL=2)       *
  246. ;*                              (100H TO 3F0H)                  *
  247. ;*      DL=DRIVE NUMBER         ( 0 TO 3 )                      *
  248. ;*      ** : Once this command is issued, this mode is applied  *
  249. ;*           for all drives(drive 0 - 3) until other mode is    *
  250. ;*           set.                                               *
  251. ;*    <OUTPUT>                                                  *
  252. ;*      CY=0 -- NO ERROR                                        *
  253. ;*        =1 -- ERROR ( AH has error code )                     *
  254. ;****************************************************************
  255. ;*      Note: All commands preserve contents of all registers   *
  256. ;*            except for AL, AH and flag registers.             *
  257. ;****************************************************************
  258. ;*                                                              *
  259. ;*    < ERROR CODE >                                            *
  260. ;*      01H  -----  BAD COMMAND                                 *
  261. ;*      02H  -----  BAD PARAMETER                               *
  262. ;*      04H  -----  DRIVE NOT READY                             *
  263. ;*      08H  -----  SEEK ERROR                                  *
  264. ;*      10H  -----  TIME OUT ERROR                              *
  265. ;*      20H  -----  OTHER ERROR                                 *
  266. ;*      80H  -----  BAD ECC                                     *
  267. ;*                                                              *
  268. ;*    < STATUS CODE >                                           *
  269. ;*      7   6   5   4   3   2   1   0                           *
  270. ;*      |   |   |   |   |   |   |   |                           *
  271. ;*      |   |   |   |   |   |   |    ---  DRIVE BUSY            *
  272. ;*      |   |   |   |   |   |    -------  DRIVE NOT READY       *
  273. ;*      |   |   |   |   |    -----------  DATA READY            *
  274. ;*      |   |   |    -------------------  reserved              *
  275. ;*      |   |    -----------------------  LOST DATA             *
  276. ;*      |    ---------------------------  SEEK ERROR            *
  277. ;*       -------------------------------  DATA ERROR   *3       *
  278. ;*                                                              *
  279. ;*    < DRIVE STATUS CODE >                                     *
  280. ;*      7   6   5   4   3   2   1   0                           *
  281. ;*      |   |   |   |   |   |   |   |                           *
  282. ;*      |   |   |   |   |   |    -------  reserved              *
  283. ;*      |   |   |    -------------------  MODE  *7              *
  284. ;*      |   |    -----------------------  DISK CHANGED   *4     *
  285. ;*      |    ---------------------------  OPEN  *8              *
  286. ;*       -------------------------------  DRIVE ERROR   *5      *
  287. ;*                                                              *
  288. ;*    < LOCK STATUS >                                           *
  289. ;*      7   6   5   4   3   2   1   0                           *
  290. ;*      |   |   |   |   |   |   |   |                           *
  291. ;*      |   |   |   |   |   |   |     ---  LOCK/UNLOCK *6       *
  292. ;*       --------------------------------  reserved             *
  293. ;*                                                              *
  294. ;*   << NOTE >>                                                 *
  295. ;*      *1  ISSUE SEEK COMMAND AND RETURN IMMEDIATELY WITHOUT   *
  296. ;*          WAITING SEEK COMPLETE.                              *
  297. ;*      *2  ISSUE SEEK COMMAND AND WAIT UNTILL SEEK COMPLETE.   *
  298. ;*      *3  DATA ERROR MEANS SOME ERRORS WHICH CAN NOT BE       *
  299. ;*          CORRECTED BY THE DATA PROCESSING LSI OF DRIVE       *
  300. ;*          OCCURRED, AND IT IS EXPECTED THAT ECC ROUTINE WILL  *
  301. ;*          CORRECT THEM USING LAYERED ERROR CORRECTION CODE.   *
  302. ;*      *4  DISK CHANGE FLAG IS RESET WHEN DISK STATUS IS READ. *
  303. ;*          THIS STATUS BIT IS VALID ONLY WHEN DRIVE ERROR      *
  304. ;*          (BIT 7) = 0.                                        *
  305. ;*      *5  DRIVE ERROR MEANS DRIVE CAN NOT READ ANY DATA FROM  *
  306. ;*          DISK.   THERE MUST BE SOME MALFUNCTIONS IN DRIVE OR *
  307. ;*          --- DISK IS UNREADABLE --- OR ---- DISK IS INSERTED *
  308. ;*          WRONGLY.  THIS BIT IS SET, THE OTHER BITS INDICATES *
  309. ;*          ERROR MODE.                                         *
  310. ;*      *6  0 -- removable medium (DOOR UNLOCK)                 *
  311. ;*          1 -- not removable    (DOOR LOCK)                   *
  312. ;*      *7  MODE bits show drive mode as follows.               *
  313. ;*            mode       b4 b3 b2                               *
  314. ;*            -------------------                               *
  315. ;*            STOP       0  0  0                                *
  316. ;*            READ       0  0  1                                *
  317. ;*            AUDIO      0  0  1                                *
  318. ;*            PAUSE      0  1  0                                *
  319. ;*            Initial    0  1  1                                *
  320. ;*           (Error stop 1  0  0 )                              *
  321. ;*            Other      1  0  1                                *
  322. ;*      *8  OPEN bit is set when the drawer is open.            *
  323. ;*      *9  If I/F card has soft-trans mode (ex. CD-IFI3),      *
  324. ;*          SOFT data transfer mode is selected.                *
  325. ;*          Otherwise (ex. CD-IFI2), DMA data transfer mode is  *
  326. ;*          selected.                                           *
  327. ;*      *10 This command is available for all models.           *
  328. ;*      *11 This command is available for only CDR-1503S.       *
  329. ;*                                                              *
  330. ;****************************************************************
  331.  
  332.