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