summaryrefslogtreecommitdiffstats
path: root/private/mvdm/vdd/samples/mscdex/vdd/mscdex.h
diff options
context:
space:
mode:
Diffstat (limited to 'private/mvdm/vdd/samples/mscdex/vdd/mscdex.h')
-rw-r--r--private/mvdm/vdd/samples/mscdex/vdd/mscdex.h313
1 files changed, 313 insertions, 0 deletions
diff --git a/private/mvdm/vdd/samples/mscdex/vdd/mscdex.h b/private/mvdm/vdd/samples/mscdex/vdd/mscdex.h
new file mode 100644
index 000000000..8d86db882
--- /dev/null
+++ b/private/mvdm/vdd/samples/mscdex/vdd/mscdex.h
@@ -0,0 +1,313 @@
+/*
+ The following definitions were derived from the "CD-ROM Programmer's
+ Guide for MS-DOS CD-ROM Extensions, Version 2.21" January 1992
+ */
+#define MSCDEX_VERSION 0x0215
+
+#define CDSTAT_ERROR 0X8000
+#define CDSTAT_BUSY 0X0200
+#define CDSTAT_DONE 0X0100
+
+#define CDERR_WRITE_PROTECT 0
+#define CDERR_UNKNOWN_UNIT 1
+#define CDERR_NOT_READY 2
+#define CDERR_UNKNOWN_CMD 3
+#define CDERR_CRC 4
+#define CDERR_STRUCT_LENGTH 5
+#define CDERR_SEEK 6
+#define CDERR_UNKNOWN_MEDIA 7
+#define CDERR_SECT_NOTFOUND 8
+#define CDERR_WRITE_FAULT 10
+#define CDERR_READ_FAULT 11
+#define CDERR_GENERAL 12
+#define CDERR_PARAMETER 13 // Per mscdex spec
+#define CDERR_DISK_CHANGE 15
+
+#define DEVICE_INIT 0
+#define IOCTL_READ 3
+#define INPUT_FLUSH 7
+#define OUTPUT_FLUSH 11
+#define IOCTL_WRITE 12
+#define DEVICE_OPEN 13
+#define DEVICE_CLOSE 14
+#define READ_LONG 128
+#define READ_LONG_PREFETCH 130
+#define SEEK 131
+#define PLAY_AUDIO 132
+#define STOP_AUDIO 133
+#define WRITE_LONG 134
+#define WRITE_LONG_VERIFY 135
+#define RESUME_AUDIO 136
+
+
+#define IOCTLR_RADDR 0
+#define IOCTLR_LOCHEAD 1
+#define IOCTLR_ERRSTAT 3
+#define IOCTLR_AUDINFO 4
+#define IOCTLR_DRVBYTES 5
+#define IOCTLR_DEVSTAT 6
+#define IOCTLR_SECTSIZE 7
+#define IOCTLR_VOLSIZE 8
+#define IOCTLR_MEDCHNG 9
+#define IOCTLR_DISKINFO 10
+#define IOCTLR_TNOINFO 11
+#define IOCTLR_QINFO 12
+#define IOCTLR_SUBCHANINFO 13
+#define IOCTLR_UPCCODE 14
+#define IOCTLR_AUDSTAT 15
+
+#define IOCTLW_EJECT 0
+#define IOCTLW_LOCKDOOR 1
+#define IOCTLW_RESETDRV 2
+#define IOCTLW_AUDINFO 3
+#define IOCTLW_DRVBYTES 4
+#define IOCTLW_CLOSETRAY 5
+
+#define MODE_HSG 0
+#define MODE_REDBOOK 1
+
+typedef union _SECTOR_ADDR {
+ BYTE b[4];
+ ULONG dw;
+} SECTOR_ADDR;
+
+
+#pragma pack(1)
+
+typedef struct _REQUESTHEADER {
+ BYTE rhLength;
+ BYTE rhUnit;
+ BYTE rhFunction;
+ WORD rhStatus;
+ BYTE rhReserved[8];
+
+ BYTE irwrData;
+ LPBYTE irwrBuffer;
+ WORD irwrBytes;
+} REQUESTHEADER, *LPREQUESTHEADER;
+
+typedef struct _DEVICE_HEADER {
+ DWORD link;
+ WORD attributes;
+ WORD strategy;
+ WORD interrupt;
+ BYTE name[8];
+ WORD reserved;
+ BYTE drive;
+ BYTE numunits;
+ BYTE reserved2[10];
+} DEVICE_HEADER, *PDEVICE_HEADER;
+
+typedef struct _DRIVE_DEVICE_LIST {
+ BYTE Unit;
+ DWORD DeviceHeader;
+} DRIVE_DEVICE_LIST, *PDRIVE_DEVICE_LIST;
+
+
+typedef struct _IOCTLR_RADDR_BLOCK {
+ BYTE ctlcode; // 0
+ DWORD devheader;
+} IOCTLR_RADDR_BLOCK, *PIOCTLR_RADDR_BLOCK;
+
+
+typedef struct _IOCTLR_LOCHEAD_BLOCK {
+ BYTE ctlcode; // 1
+ BYTE addrmode;
+ SECTOR_ADDR headlocation;
+} IOCTLR_LOCHEAD_BLOCK, *PIOCTLR_LOCHEAD_BLOCK;
+
+
+typedef struct _IOCTLR_ERRSTAT_BLOCK {
+ BYTE ctlcode; // 3
+ BYTE statistics; // array of undefined length
+} IOCTLR_ERRSTAT_BLOCK, *PIOCTLR_ERRSTAT_BLOCK;
+
+
+typedef struct _IOCTLR_AUDINFO_BLOCK {
+ BYTE ctlcode; // 4
+ BYTE chan0;
+ BYTE vol0;
+ BYTE chan1;
+ BYTE vol1;
+ BYTE chan2;
+ BYTE vol2;
+ BYTE chan3;
+ BYTE vol3;
+} IOCTLR_AUDINFO_BLOCK, *PIOCTLR_AUDINFO_BLOCK;
+
+
+typedef struct _IOCTLR_DRVBYTES_BLOCK {
+ BYTE ctlcode; // 5
+ BYTE numbytes;
+ BYTE buffer[128];
+} IOCTLR_DRVBYTES_BLOCK, *PIOCTLR_DRVBYTES_BLOCK;
+
+
+typedef struct _IOCTLR_DEVSTAT_BLOCK {
+ BYTE ctlcode; // 6
+ DWORD devparms;
+} IOCTLR_DEVSTAT_BLOCK, *PIOCTLR_DEVSTAT_BLOCK;
+
+#define DEVSTAT_DOOR_OPEN 0X00000001
+#define DEVSTAT_DOOR_UNLOCKED 0X00000002
+#define DEVSTAT_SUPPORTS_COOKED 0X00000004
+#define DEVSTAT_READ_WRITE 0X00000008
+#define DEVSTAT_PLAYS_AV 0X00000010
+#define DEVSTAT_SUPPORTS_ILEAVE 0X00000020
+#define DEVSTAT_SUPPORTS_PRFTCH 0X00000080
+#define DEVSTAT_SUPPORTS_CHMAN 0X00000100
+#define DEVSTAT_SUPPORTS_RBOOK 0X00000200
+#define DEVSTAT_NO_DISC 0X00000800
+#define DEVSTAT_SUPPORTS_RWSCH 0X00001000
+
+
+typedef struct _IOCTLR_SECTSIZE_BLOCK {
+ BYTE ctlcode; // 7
+ BYTE readmode;
+ WORD sectsize;
+} IOCTLR_SECTSIZE_BLOCK, *PIOCTLR_SECTSIZE_BLOCK;
+
+
+typedef struct _IOCTLR_VOLSIZE_BLOCK {
+ BYTE ctlcode; // 8
+ DWORD size;
+} IOCTLR_VOLSIZE_BLOCK, *PIOCTLR_VOLSIZE_BLOCK;
+
+
+typedef struct _IOCTLR_MEDCHNG_BLOCK {
+ BYTE ctlcode; // 9
+ BYTE medbyte;
+} IOCTLR_MEDCHNG_BLOCK, *PIOCTLR_MEDCHNG_BLOCK;
+
+#define MEDCHNG_NOT_CHANGED 1
+#define MEDCHNG_DONT_KNOW 0
+#define MEDCHNG_CHANGED 0XFF
+
+
+typedef struct _IOCTLR_DISKINFO_BLOCK {
+ BYTE ctlcode; // 10
+ BYTE tracklow;
+ BYTE trackhigh;
+ SECTOR_ADDR startleadout;
+} IOCTLR_DISKINFO_BLOCK, *PIOCTLR_DISKINFO_BLOCK;
+
+
+typedef struct _IOCTLR_TNOINFO_BLOCK {
+ BYTE ctlcode; // 11
+ BYTE trknum;
+ SECTOR_ADDR start;
+ BYTE trkctl;
+} IOCTLR_TNOINFO_BLOCK, *PIOCTLR_TNOINFO_BLOCK;
+
+
+typedef struct _IOCTLR_QINFO_BLOCK {
+ BYTE ctlcode; // 12
+ BYTE ctladr;
+ BYTE trknum;
+ BYTE pointx;
+ BYTE min;
+ BYTE sec;
+ BYTE frame;
+ BYTE zero;
+ BYTE apmin;
+ BYTE apsec;
+ BYTE apframe;
+} IOCTLR_QINFO_BLOCK, *PIOCTLR_QINFO_BLOCK;
+
+
+typedef struct _IOCTLR_SUBCHANINFO_BLOCK {
+ BYTE ctlcode; // 13
+ SECTOR_ADDR startsect;
+ DWORD transaddr;
+ DWORD numsect;
+} IOCTLR_SUBCHANINFO_BLOCK, *PIOCTLR_SUBCHANINFO_BLOCK;
+
+
+typedef struct _IOCTLR_UPCCODE_BLOCK {
+ BYTE ctlcode; // 14
+ BYTE ctladr;
+ BYTE upcean[7];
+ BYTE zero;
+ BYTE aframe;
+} IOCTLR_UPCCODE_BLOCK, *PIOCTLR_UPCCODE_BLOCK;
+
+
+typedef struct _IOCTLR_AUDSTAT_BLOCK {
+ BYTE ctlcode; // 15
+ WORD audstatbits;
+ SECTOR_ADDR startloc;
+ SECTOR_ADDR endloc;
+} IOCTLR_AUDSTAT_BLOCK, *PIOCTLR_AUDSTAT_BLOCK;
+
+#define AUDSTAT_PAUSED 1
+
+
+typedef struct _IOCTLW_LOCKDOOR_BLOCK {
+ BYTE ctlcode; // 1
+ BYTE lockfunc;
+} IOCTLW_LOCKDOOR_BLOCK, *PIOCTLW_LOCKDOOR_BLOCK;
+
+
+typedef struct _IOCTLW_AUDINFO_BLOCK {
+ BYTE ctlcode; // 3
+ BYTE chan0;
+ BYTE vol0;
+ BYTE chan1;
+ BYTE vol1;
+ BYTE chan2;
+ BYTE vol2;
+ BYTE chan3;
+ BYTE vol3;
+} IOCTLW_AUDINFO_BLOCK, *PIOCTLW_AUDINFO_BLOCK;
+
+
+typedef struct _IOCTLW_DRVBYTES_BLOCK {
+ BYTE ctlcode; // 4
+ BYTE buffer;
+} IOCTLW_DRVBYTES_BLOCK, *PIOCTLW_DRVBYTES_BLOCK;
+
+
+
+typedef struct _READ_LONG_BLOCK {
+ BYTE header[13];
+ BYTE addrmode;
+ DWORD transaddr;
+ WORD numsect;
+ SECTOR_ADDR startsect;
+ BYTE readmode;
+ BYTE ileavesize;
+ BYTE ileaveskip;
+} READ_LONG_BLOCK, *PREAD_LONG_BLOCK;
+
+
+typedef struct _SEEK_BLOCK {
+ BYTE header[13];
+ BYTE addrmode;
+ DWORD transaddr;
+ WORD numsect;
+ SECTOR_ADDR startsect;
+} SEEK_BLOCK, *PSEEK_BLOCK;
+
+
+typedef struct _PLAY_AUDIO_BLOCK {
+ BYTE header[13];
+ BYTE addrmode;
+ SECTOR_ADDR startsect;
+ DWORD numsect;
+} PLAY_AUDIO_BLOCK, *PPLAY_AUDIO_BLOCK;
+
+
+typedef struct _WRITE_LONG_BLOCK {
+ BYTE header[13];
+ BYTE addrmode;
+ DWORD transaddr;
+ WORD numsect;
+ SECTOR_ADDR startsect;
+ BYTE readmode;
+ BYTE ileavesize;
+ BYTE ileaveskip;
+} WRITE_LONG_BLOCK, *PWRITE_LONG_BLOCK;
+
+
+#pragma pack()
+