Atari Logo
Atari Computer

Hauptseite -
Welches System? -
Hardware -
Software -
Emulatoren -
Internet
MausNet
Programmieren
Verweise
Über

MetaDOS Treiber

Home long (*ioctl)(unsigned long magic, unsigned short opcode, void *buffer) long (*ioctl)(unsigned long magic, unsigned short opcode, void *buffer) long (*startaudio)(unsigned short flag, unsigned char *tracks)

3.3.8.1 Opcode für Metaioctl

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 */

Home long (*ioctl)(unsigned long magic, unsigned short opcode, void *buffer) long (*ioctl)(unsigned long magic, unsigned short opcode, void *buffer) long (*startaudio)(unsigned short flag, unsigned char *tracks)


Best viewed with any browser English version not yet available.

Änderungen und Irrtümer vorbehalten. Letzte Änderung:
14 September 2001.
Home - Mail an den Webmaster - Impressum