|
Hauptseite - Welches System? - Hardware - Software - Emulatoren - |
Internet MausNet Programmieren Verweise Über |
Die folgenden Opcodes werden schon von BOS Treibern für CDs unterstützt:
CDROMREADOFFSET 0x4300 | Abfragen der Nummer des ersten Sektors der letzten Session einer
Multisession-CD.
|
CDROMPAUSE 0x4301 | Unterbrechen des aktuellen Audio Kommandos.
|
CDROMRESUME 0x4302 | Fortsetzen des aktuellen Audio Komamndos.
|
CDROMPLAYMSF 0x4303 | Starten der Audiowiedergabe. Buffer zeigt auf eine cdrom_msf
Struktur mit den Anfangs- und Endzeiten in MSF Notation.
struct cdrom_msf { BYTE cdmsf_min0; /* start minute */ BYTE cdmsf_sec0; /* start second */ BYTE cdmsf_frame0; /* start frame */ BYTE cdmsf_min1; /* end minute */ BYTE cdmsf_sec1; /* end second */ BYTE cdmsf_frame1; /* end frame */ }; |
CDROMPLAYTRKIND 0x4304 | Starten der Audiowiedergabe. Buffer zeigt auf eine cdrom_ti
Struktur mit den Anfangs- und Endzeiten in Track/Index Notation.
struct cdrom_ti { BYTE cdti_trk0; /* start track */ BYTE cdti_ind0; /* start index */ BYTE cdti_trk1; /* end track */ BYTE cdti_ind1; /* end index */ }; |
CDROMREADTOCHDR 0x4305 | Auslesen des Inhaltsverzeichnisses. Buffer zeigt auf ein Array
aus zwei cdrom_tocdr Strukturen für den ersten und den letzten
Track.
struct cdrom_tochdr { BYTE cdth_trk0; /* start track */ BYTE cdth_trk1; /* end track */ }; |
CDROMREADTOCENTRY 0x4306 | Abfragen eines Toc Eintrags. Buffer zeigt auf eine cdrom_tocentry
Struktur. CDROM_LEADOUT (0xAA) dient als spezielle Tracknummer
für den Leadout.
struct cdrom_tocentry { /* input parametes */ BYTE cdte_track; /* track number or CDROM_LEADOUT */ BYTE cdte_format; /* CDROM_LBA or CDROM_MSF */ /* output parameters */ /* then SUBQ channel encodes 0: nothing, 1: position data, 2: MCN, 3: ISRC, else: reserved */ unsigned cdte_adr:4; /* bit 0: audio with pre-emphasis, bit 1: digital copy permitted, bit 2: data track, bit 3: four channel */ unsigned cdte_ctrl:4; BYTE cdte_datamode; /* currently not set */ cd_ad dte_addr; /* track start */ }; |
CDROMSTOP 0x4307 | Anhalten des Laufwerks
|
CDROMSTART 0x4308 | Starten des Laufwerks
|
CDROMEJECT 0x4309 | Ausfahren der Schublade
|
CDROMVOLCTRL 0x430a | Lautsträrke einstellen. Buffer zeigt auf eine cdrom_volctrl
Struktur.
struct cdrom_volctrl { BYTE channel0; /* volume level 0..255 */ BYTE channel1; BYTE channel2; BYTE channel3; }; |
CDROMSUBCHNL 0x430b | Erfragen der aktuellen Positionsdaten und des Audiostatus. Buffer
zeigt auf eine cdrom_subchnl Struktur.
struct cdrom_subchn1 { /* input parameters */ BYTE cdsc_format; /* CDROM_MSF or CDROM_LBA */ /* output parameter */ BYTE cdsc_audiostatus; /* see below */ unsigned cdsc_resvd:8; /* reserved */ unsigned cdsc_adr:4; /* see above */ unsigned cdsc_ctrl:4; /* see above */ BYTE cdsc_trk; /* current track */ BYTE cdsc_ind; /* current index */ cd_ad cdsc_absaddr; /* absolute address */ cd_ad cdsc_reladdr; /* track rel. addr. */ }; |
CDROMREADMODE2 0x430c | Lesen von Modus-2-Sektoren (2336 Bytes, XA-CDs). Buffer zeigt auf
eine cdrom_read Struktur.
struct cdrom_read { long cdread_lba; /* address */ char *cdread_bufaddr; /* buffer pointer */ long cdread_buflen; /* byte count */ }; |
CDROMREADMODE1 0x430d | Lesen von Modus-1-Sektoren (2048 Bytes, "normale" CDs).
Buffer zeigt auf eine cdrom_read Struktur.
struct cdrom_read { long cdread_lba; /* address */ char *cdread_bufaddr; /* buffer pointer */ long cdread_buflen; /* byte count */ }; |
CDROMPREVENTREMOVEAL 0x430e | Sperren des Auswurfmechanismus.
|
CDROMALLOWREMOVAL 0x430f | Freigeben des Auswurfmechanismus.
|
CDROMAUDIOCTRL 0x4310 | Lautstärke und Kanalzuordnung einstellen. Buffer zeigt auf
eine cdrom_audioctrl Struktur.
struct cdrom_audioctrl { /* input parameters */ short set; /* 0 == inquire only */ /* input/output parameters */ struct { BYTE selection; BYTE volume; } channel[4]; }; |
CDROMREADDA 0x4311 | Lesen von Audio-Sektoren (2352 Bytes). Buffer zeigt auf eine
cdrom_read Struktur.
struct cdrom_read { long cdread_lba; /* address */ char *cdread_bufaddr; /* buffer pointer */ long cdread_buflen; /* byte count */ }; |
CDROMGETMCN 0x4313 | Abfragen der "Media Catalog Number" die eine eindeutige
Identifikation der CD erlauben sollte, aber nicht auf jeder CD
vorhanden ist. Buffer zeigt auf eine cdrom_mcn Struktur.
struct cdrom_mcn { BYTE mcn_audiostatus; /* see above */ BYTE mcn_mcn[23]; /* Media catalog number as ASCII string */ }; |
CDROMGETTISRC 0x4314 | Abfragen des "Track International Standard Recording
Code" die eine eindeutige Identifizierung eines Tracks erlaubt,
aber auf nicht auf jeder CD vorhanden ist. Buffer zeigt auf eine
cdrom_tisrc Struktur.
struct cdrom_tiscr { /* input parameters */ BYTE tiscr_track; /* track number */ /* output parameters */ BYTE tiscr_audiostatus; /* see above */ BYTE tiscr_tiscr[23]; /* Track International Standard Recording Code (ASCII) */ }; |
Die Union cd_da, die in obigen Strukturen verwendet wird, ist wie folgt definiert:
typedef union { struct { BYTE reserved, minute, second, frame; } msf; long lba; } cd_ad;
Einige hilfreiche Konstanten:
/* CD-ROM address types */ #define CDROM_LBA 0x01 #define CDROM_MSF 0x02 /* SUB Q control bits */ #define CDROM_AUDIO_EMPHASIS 0x01 #define CDROM_COPY_PERMITTED 0x02 #define CDROM_DATA_TRACK 0x04 #define CDROM_FOUR_CHANNEL 0x08 /* return value from READ SUBCHANNEL DATA */ #define CDROM_AUDIO_INVALID 0x00 /* audio status not supported */ #define CDROM_AUDIO_PLAY 0x11 /* audio play operation in progress */ #define CDROM_AUDIO_PAUSED 0x12 /* audio play operation paused */ #define CDROM_AUDIO_COMPLETED 0x13 /* audio play successfully completed */ #define CDROM_AUDIO_ERROR 0x14 /* audio play stopped due to error */ #define CDROM_AUDIO_NO_STATUS 0x5 /* no current audio status to return */
![]() |
English version not yet available. |