|
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. |