|
Hauptseite - Welches System? - Hardware - Software - Emulatoren - |
Internet MausNet Programmieren Verweise Über |
typedef struct
{
unsigned char trackno; /* Track Nummer in BCD Kodierung */
unsigned char minute; /* BCD kodiert! */
unsigned char second; /* BCD kodiert! */
unsigned char frame; /* BCD kodiert! */
} CD_TOC_ENTRY;
typedef struct
{
unsigned char disctype; /* 0: audio, 1: data */
unsigned char firsttrack;
unsigned char lasttrack;
unsigned char curtrack;
unsigned char relposz;
unsigned char relposm;
unsigned char relposs;
unsigned char relposf;
unsigned char absposz;
unsigned char absposm;
unsigned char absposs;
unsigned char absposf;
unsigned char endposz;
unsigned char endposm;
unsigned char endposs;
unsigned char endposf;
unsigned char index;
unsigned char res[3];
unsigned long reserved[123];
} CD_DISC_INFO;
#define MD_VERSION_2_30 0x230
#define MD_MAGIC_STRING "_MET"
#define MD_MAGIC_LONG 0x5F4D4554
typedef struct
{
unsigned short mi_version; /* 0x230 == '02.30' */
long mi_magic; /* == '_MET' */
/* maps DOS-IDs to MetaDOS XBIOS device numbers */
const char *mi_log2phys;
} META_INFO_2;
typedef struct
{
unsigned long mi_drivemap;
const char *mi_version_string;
long reserved;
META_INFO_2 *mi_info;
} META_INFO_1;
typedef struct
{
char *mdr_name;
long res[3];
} META_DRVINFO;
#define MD_BOS_STATUS_BUSY 0x00000002l
#define MD_BOS_STATUS_MEDIA_CHANGE 0x00000004l
#define MD_BOS_STATUS_TIMEOUT 0x00000080l
#define MD_BOS_STATUS_ERROR 0x00008000l
typedef struct {
char status[32];
} META_BOS_STATUS;
typedef struct {
unsigned char count;
unsigned char first;
} CD_TRACKS;
typedef struct {
long (*init)(META_INFO_1 *metainit);
long (*open)(META_DRVINFO *metaopen);
long (*close)(void);
long (*read)(void *buffer, unsigned long first, unsigned short count);
long (*write)(void *buffer, unsigned long first, unsigned short count);
long (*seek)(unsigned long offset);
long (*status)(META_BOS_STATUS *extended);
long (*ioctl)(unsigned long magic, unsigned short opcode, void *buffer);
long (*undefined08)(void);
long (*undefined09)(void);
long (*undefined0a)(void);
long (*startaudio)(unsigned short dummy, unsigned char *tracks);
long (*stopaudio)(void);
long (*setsongtime)(unsigned short dummy, unsigned long start, unsigned long end);
long (*gettoc)(unsigned short dummy, CD_TOC_ENTRY *tocentry);
long (*discinfo)(CD_DISC_INFO *discinfo);
} META_BOS_FUNCTIONS;
typedef struct {
void *next; /* Zeiger auf den naechsten BOS Treiber, auf NULL setzen, wird durch MetaDOS gefuellt */
unsigned long attrib; /* Einige Attributes fuer das Device */
unsigned short phys_letter; /* Der Wert von D0, den MetaDOS in der Initialisierungsfunktion geliefert hat */
unsigned short dma_channel; /* Der Wert von D1, den MetaDOS in der Initialisierungsfunktion geliefert hat */
unsigned short sub_device; /* Ein Treiber kann verschiedene Subdevices bedienen, dieses Feld gibt an, mit welchem Subdevice MetaDOS sprechen moechte */
MdBosFunctions *functions; /* Zeiger auf eine Liste von 16 Funktionen (die den 16 Xbios MetaDOS functions traps entsprechen */
unsigned short status; /* Ein Statusfeld, um weitere Fehler zu melden */
unsigned long reserved[2];
char name[32]; /* Name des Geraetes */
} META_BOS_HEADER;
|
English version not yet available. |