home *** CD-ROM | disk | FTP | other *** search
- ;****************************************************************
- ;* *
- ;* C D R E A D *
- ;* Version 8a *
- ;* (C) Copyright Hitachi, Ltd. 1985,1987,1990 *
- ;* *
- ;* Specifications for the interface to CDREAD(). *
- ;* *
- ;* < INPUT > *
- ;* AH : FUNCTION CODE *
- ;* 0 ----- RESET *
- ;* 1 ----- READ *
- ;* 2 ----- SEEK WITHOUT WAIT *1 *
- ;* 3 ----- SEEK WITH WAIT *2 *
- ;* 4 ----- STATUS READ *
- ;* 5 ----- DRIVE STATUS READ *
- ;* 6 ----- reserved *
- ;* 7 ----- reserved *
- ;* 8 ----- SEEK TO LEAD-IN *
- ;* 9 ----- READ SUBCODE Q (10 bytes) *
- ;* A ----- PAUSE *
- ;* B ----- AUDIO *
- ;* C ----- STOP *
- ;* D ----- AUDIO ( extended ) *
- ;* E ----- AUDIO BY TNO *
- ;* F ----- OPEN *
- ;* 10 ----- CLOSE *
- ;* 11 ----- PRE/ALLOW MED *
- ;* 12 ----- SET POWER SAVE *
- ;* 13 ----- reserved *
- ;* 14 ----- reserved *
- ;* 15 ----- READ VERSION *
- ;* 16 ----- reserved *
- ;* 17 ----- MODE SET *
- ;* 18 ----- GENERAL (direct commu. with drive) *
- ;* *
- ;* RESET ---- all models *10 *
- ;* <INPUT> *
- ;* AH=0 *
- ;* DL=DRIVE NUMBER ( 0 TO 3 ) *
- ;* <OUTPUT> *
- ;* CY=0 -- NO ERROR *
- ;* =1 -- ERROR ( AH has error code ) *
- ;* AL=DRIVE TYPE (valid only when CY=0) *
- ;* 0FFH - unknown *
- ;* 00 - CDR-1502S *
- ;* 2XH - CDR-2500/2500S *
- ;* 3XH - CDR-1503S *
- ;* Other- New type *
- ;* * - to reset CPU clock mode flag. If you change the *
- ;* CPU clock of the computer by soft-command or *
- ;* soft-key, you must issue this command to tell *
- ;* it to CDREAD program. *
- ;* *
- ;* READ ---- all models *10 *
- ;* <INPUT> *
- ;* AH=1 *
- ;* AL=DATA BLOCK COUNT ( 1 TO 255 ) *
- ;* CH=MINUTE ( 0 TO 99 ) *
- ;* CL=SECOND ( 0 TO 59 ) *
- ;* DH=DATA BLOCK ( 0 TO 74 ) *
- ;* DL=DRIVE NUMBER ( 0 TO 3 ) *
- ;* ES:BX=DATA TRANSFER ADDRESS *
- ;* <OUTPUT> *
- ;* CY=0 -- NO ERROR *
- ;* =1 -- ERROR ( AH has error code ) *
- ;* *
- ;* SEEK ---- all models *10 *
- ;* <INPUT> *
- ;* AH=2 *
- ;* CH=MINUTE ( 0 TO 99 ) *
- ;* CL=SECOND ( 0 TO 59 ) *
- ;* DH=DATA BLOCK ( 0 TO 74 ) *
- ;* DL=DRIVE NUMBER ( 0 TO 3 ) *
- ;* <OUTPUT> *
- ;* CY=0 -- NO ERROR *
- ;* =1 -- ERROR ( AH has error code ) *
- ;* *
- ;* SEEK WITH WAIT ---- all models *10 *
- ;* <INPUT> *
- ;* AH=3 *
- ;* CH=MINUTE ( 0 TO 99 ) *
- ;* CL=SECOND ( 0 TO 59 ) *
- ;* DH=DATA BLOCK ( 0 TO 74 ) *
- ;* DL=DRIVE NUMBER ( 0 TO 3 ) *
- ;* <OUTPUT> *
- ;* CY=0 -- NO ERROR *
- ;* =1 -- ERROR ( AH has error code ) *
- ;* *
- ;* STATUS ---- all models *10 *
- ;* <INPUT> *
- ;* AH=4 *
- ;* DL=DRIVE NUMBER ( 0 TO 3 ) *
- ;* <OUTPUT> *
- ;* CY=0 -- NO ERROR *
- ;* =1 -- ERROR ( AH has error code ) *
- ;* AL=STATUS (valid only when CY=0) *
- ;* *
- ;* DRIVE STATUS ---- all models *10 *
- ;* <INPUT> *
- ;* AH=5 *
- ;* DL=DRIVE NUMBER ( 0 TO 3 ) *
- ;* <OUTPUT> *
- ;* CY=0 -- NO ERROR *
- ;* =1 -- ERROR ( AH has error code ) *
- ;* AL=DRIVE STATUS (valid only when CY=0) *
- ;* *
- ;* SEEK TO LEAD-IN ---- CDR-1503S *11 *
- ;* <INPUT> *
- ;* AH=8 *
- ;* DL=DRIVE NUMBER ( 0 TO 3 ) *
- ;* <OUTPUT> *
- ;* CY=0 -- NO ERROR *
- ;* =1 -- ERROR ( AH has error code ) *
- ;* *
- ;* READ SUBCODE Q ---- CDR-1503S *11 *
- ;* <INPUT> *
- ;* AH=9 *
- ;* DL=DRIVE NUMBER ( 0 TO 3 ) *
- ;* ES:BX=DATA TRANSFER ADDRESS *
- ;* (10 bytes buffer is requierd) *
- ;* <OUTPUT> *
- ;* CY=0 -- NO ERROR *
- ;* =1 -- ERROR ( AH has error code ) *
- ;* *
- ;* PAUSE (STOP AUDIO) ---- CDR-1503S *11 *
- ;* <INPUT> *
- ;* AH=0AH *
- ;* DL=DRIVE NUMBER ( 0 TO 3 ) *
- ;* <OUTPUT> *
- ;* CY=0 -- NO ERROR *
- ;* =1 -- ERROR ( AH has error code ) *
- ;* *
- ;* PLAY AUDIO ---- CDR-1503S *11 *
- ;* <INPUT> *
- ;* AH=0BH *
- ;* DL=DRIVE NUMBER ( 0 TO 3 ) *
- ;* ES:BX=PARAMETER ADDRESS *
- ;* [ES:BX] --> START LOCATION (MINUTE) (0 - 99) *
- ;* [ES:BX+1] " " (SECOND) (0 - 59) *
- ;* [ES:BX+2] " " (BLOCK) (0 - 74) *
- ;* [ES:BX+3] END LOCATION (MINUTE) (0 - 99) *
- ;* [ES:BX+4] " " (SECOND) (0 - 59) *
- ;* [ES:BX+5] " " (BLOCK) (0 - 74) *
- ;* <OUTPUT> *
- ;* CY=0 -- NO ERROR *
- ;* =1 -- ERROR ( AH has error code ) *
- ;* *
- ;* STOP (SPIN DOWN) ---- all models *10 *
- ;* <INPUT> *
- ;* AH=0CH *
- ;* DL=DRIVE NUMBER ( 0 TO 3 ) *
- ;* <OUTPUT> *
- ;* CY=0 -- NO ERROR *
- ;* =1 -- ERROR ( AH has error code ) *
- ;* *
- ;* PLAY AUDIO (EXTENDED) ---- CDR-1503S *11 *
- ;* <INPUT> *
- ;* AH=0DH *
- ;* AL=OUTPUT MODE *
- ;* 0 - Both channel *
- ;* 1 - Left channel only *
- ;* 2 - Right channel only *
- ;* 3 - None (mute) *
- ;* DL=DRIVE NUMBER ( 0 TO 3 ) *
- ;* ES:BX=PARAMETER ADDRESS *
- ;* [ES:BX] --> START LOCATION (MINUTE) (0 - 99) *
- ;* [ES:BX+1] " " (SECOND) (0 - 59) *
- ;* [ES:BX+2] " " (BLOCK) (0 - 74) *
- ;* [ES:BX+3] END LOCATION (MINUTE) (0 - 99) *
- ;* [ES:BX+4] " " (SECOND) (0 - 59) *
- ;* [ES:BX+5] " " (BLOCK) (0 - 74) *
- ;* <OUTPUT> *
- ;* CY=0 -- NO ERROR *
- ;* =1 -- ERROR ( AH has error code ) *
- ;* *
- ;* PLAY AUDIO BY TNO ---- CDR-1503S *11 *
- ;* <INPUT> *
- ;* AH=0EH *
- ;* CH=START TRACK NUMBER ( 0 TO 99 ) *
- ;* CL=END TRACK NUMBER ( 0 TO 99 ) *
- ;* DL=DRIVE NUMBER ( 0 TO 3 ) *
- ;* *:ZERO of TNO is treated as the first TNO *
- ;* *:99 of END TNO is treated as the last TNO *
- ;* <OUTPUT> *
- ;* CY=0 -- NO ERROR *
- ;* =1 -- ERROR ( AH has error code ) *
- ;* *
- ;* OPEN ---- CDR-1503S *11 *
- ;* <INPUT> *
- ;* AH=0FH *
- ;* DL=DRIVE NUMBER ( 0 TO 3 ) *
- ;* <OUTPUT> *
- ;* CY=0 -- NO ERROR *
- ;* =1 -- ERROR ( AH has error code ) *
- ;* *
- ;* CLOSE ---- CDR-1503S *11 *
- ;* <INPUT> *
- ;* AH=10H *
- ;* DL=DRIVE NUMBER ( 0 TO 3 ) *
- ;* <OUTPUT> *
- ;* CY=0 -- NO ERROR *
- ;* =1 -- ERROR ( AH has error code ) *
- ;* *
- ;* DOOR LOCK/UNLOCK ---- CDR-1503S *11 *
- ;* <INPUT> *
- ;* AH=11H *
- ;* AL=MODE *
- ;* 0 - READ LOCK MODE *
- ;* 1 - SET LOCK MODE *
- ;* 2 - SET UNLOCK MODE *
- ;* DL=DRIVE NUMBER ( 0 TO 3 ) *
- ;* <OUTPUT> *
- ;* CY=0 -- NO ERROR *
- ;* =1 -- ERROR ( AH has error code ) *
- ;* *
- ;* SET POWER SAVE MODE ---- CDR-1503S *11 *
- ;* <INPUT> *
- ;* AH=12H *
- ;* AL=MODE *
- ;* 0 - RELEASE POWER SAVE MODE *
- ;* 1 TO 20 - SET POWER SAVE MODE (unit:minute) *
- ;* DL=DRIVE NUMBER ( 0 TO 3 ) *
- ;* <OUTPUT> *
- ;* CY=0 -- NO ERROR *
- ;* =1 -- ERROR ( AH has error code ) *
- ;* *
- ;* READ VERSION OF DRIVE ---- CDR-1503S *11 *
- ;* <INPUT> *
- ;* AH=15H *
- ;* DL=DRIVE NUMBER ( 0 TO 3 ) *
- ;* ES:BX=DATA TRANSFER ADDRESS *
- ;* (52 bytes buffer is requierd) *
- ;* <OUTPUT> *
- ;* CY=0 -- NO ERROR *
- ;* =1 -- ERROR ( AH has error code ) *
- ;* *
- ;* SET MODE ---- all models *10 *
- ;* <INPUT> *
- ;* AH=17H *
- ;* AL=MODE *
- ;* 0 - AUTO DATA TRANS MODE (DEFAULT) *9 *
- ;* 1 - DMA DATA TRANS MODE *
- ;* 2 - CHANGE I/O ADDRESS (CX has I/O address) *
- ;* CX=I/O ADDRESS OF I/F CARD (valid only when AL=2) *
- ;* (100H TO 3F0H) *
- ;* DL=DRIVE NUMBER ( 0 TO 3 ) *
- ;* ** : Once this command is issued, this mode is applied *
- ;* for all drives(drive 0 - 3) until other mode is *
- ;* set. *
- ;* <OUTPUT> *
- ;* CY=0 -- NO ERROR *
- ;* =1 -- ERROR ( AH has error code ) *
- ;****************************************************************
- ;* Note: All commands preserve contents of all registers *
- ;* except for AL, AH and flag registers. *
- ;****************************************************************
- ;* *
- ;* < ERROR CODE > *
- ;* 01H ----- BAD COMMAND *
- ;* 02H ----- BAD PARAMETER *
- ;* 04H ----- DRIVE NOT READY *
- ;* 08H ----- SEEK ERROR *
- ;* 10H ----- TIME OUT ERROR *
- ;* 20H ----- OTHER ERROR *
- ;* 80H ----- BAD ECC *
- ;* *
- ;* < STATUS CODE > *
- ;* 7 6 5 4 3 2 1 0 *
- ;* | | | | | | | | *
- ;* | | | | | | | --- DRIVE BUSY *
- ;* | | | | | | ------- DRIVE NOT READY *
- ;* | | | | | ----------- DATA READY *
- ;* | | | ------------------- reserved *
- ;* | | ----------------------- LOST DATA *
- ;* | --------------------------- SEEK ERROR *
- ;* ------------------------------- DATA ERROR *3 *
- ;* *
- ;* < DRIVE STATUS CODE > *
- ;* 7 6 5 4 3 2 1 0 *
- ;* | | | | | | | | *
- ;* | | | | | | ------- reserved *
- ;* | | | ------------------- MODE *7 *
- ;* | | ----------------------- DISK CHANGED *4 *
- ;* | --------------------------- OPEN *8 *
- ;* ------------------------------- DRIVE ERROR *5 *
- ;* *
- ;* < LOCK STATUS > *
- ;* 7 6 5 4 3 2 1 0 *
- ;* | | | | | | | | *
- ;* | | | | | | | --- LOCK/UNLOCK *6 *
- ;* -------------------------------- reserved *
- ;* *
- ;* << NOTE >> *
- ;* *1 ISSUE SEEK COMMAND AND RETURN IMMEDIATELY WITHOUT *
- ;* WAITING SEEK COMPLETE. *
- ;* *2 ISSUE SEEK COMMAND AND WAIT UNTILL SEEK COMPLETE. *
- ;* *3 DATA ERROR MEANS SOME ERRORS WHICH CAN NOT BE *
- ;* CORRECTED BY THE DATA PROCESSING LSI OF DRIVE *
- ;* OCCURRED, AND IT IS EXPECTED THAT ECC ROUTINE WILL *
- ;* CORRECT THEM USING LAYERED ERROR CORRECTION CODE. *
- ;* *4 DISK CHANGE FLAG IS RESET WHEN DISK STATUS IS READ. *
- ;* THIS STATUS BIT IS VALID ONLY WHEN DRIVE ERROR *
- ;* (BIT 7) = 0. *
- ;* *5 DRIVE ERROR MEANS DRIVE CAN NOT READ ANY DATA FROM *
- ;* DISK. THERE MUST BE SOME MALFUNCTIONS IN DRIVE OR *
- ;* --- DISK IS UNREADABLE --- OR ---- DISK IS INSERTED *
- ;* WRONGLY. THIS BIT IS SET, THE OTHER BITS INDICATES *
- ;* ERROR MODE. *
- ;* *6 0 -- removable medium (DOOR UNLOCK) *
- ;* 1 -- not removable (DOOR LOCK) *
- ;* *7 MODE bits show drive mode as follows. *
- ;* mode b4 b3 b2 *
- ;* ------------------- *
- ;* STOP 0 0 0 *
- ;* READ 0 0 1 *
- ;* AUDIO 0 0 1 *
- ;* PAUSE 0 1 0 *
- ;* Initial 0 1 1 *
- ;* (Error stop 1 0 0 ) *
- ;* Other 1 0 1 *
- ;* *8 OPEN bit is set when the drawer is open. *
- ;* *9 If I/F card has soft-trans mode (ex. CD-IFI3), *
- ;* SOFT data transfer mode is selected. *
- ;* Otherwise (ex. CD-IFI2), DMA data transfer mode is *
- ;* selected. *
- ;* *10 This command is available for all models. *
- ;* *11 This command is available for only CDR-1503S. *
- ;* *
- ;****************************************************************
-
-