|
|
| version 1.10, 2005/02/12 12:40:39 | version 1.11, 2005/03/05 06:02:29 |
|---|---|
| Line 1 | Line 1 |
| #if defined(SUPPORT_SCSI) | #if defined(SUPPORT_SCSI) |
| enum { | enum { |
| SASIHDD_MAX = 2, | SASIHDD_MAX = 4, |
| SCSIHDD_MAX = 4 | SCSIHDD_MAX = 8 |
| }; | }; |
| #else | #else |
| enum { | enum { |
| SASIHDD_MAX = 2, | SASIHDD_MAX = 4, |
| SCSIHDD_MAX = 0 | SCSIHDD_MAX = 0 |
| }; | }; |
| #endif | #endif |
| enum { | enum { |
| SXSITYPE_NONE = 0x0000, | SXSIDRV_UNITMASK = 0x0f, |
| SXSIDRV_SASI = 0x00, | |
| SXSIDRV_SCSI = 0x20, | |
| SXSIDRV_IFMASK = 0x20, | |
| SXSIDEV_NC = 0x00, | |
| SXSIDEV_HDD = 0x01, | |
| SXSIDEV_CDROM = 0x02, | |
| SXSIDEV_MO = 0x03, | |
| SXSIDEV_SCANNER = 0x04, | |
| SXSITYPE_HDD = 0x0001, | SXSIFLAG_READY = 0x01 |
| SXSITYPE_CDROM = 0x0002, | |
| SXSITYPE_MO = 0x0003, | |
| SXSITYPE_SCANNER = 0x0004, | |
| SXSITYPE_DEVMASK = 0x000f, | |
| SXSITYPE_REMOVE = 0x0010, | |
| SXSITYPE_SASIMASK = 0x0700, | |
| SXSITYPE_SASI = 0x1000, | |
| SXSITYPE_IDE = 0x2000, | |
| SXSITYPE_SCSI = 0x3000, | |
| SXSITYPE_IFMASK = 0xf000 | |
| }; | }; |
| typedef struct { | struct _sxsidev; |
| UINT8 sectors; | typedef struct _sxsidev _SXSIDEV; |
| UINT8 surfaces; | typedef struct _sxsidev *SXSIDEV; |
| UINT16 cylinders; | |
| } SASIHDD; | #include "sxsihdd.h" |
| #include "sxsicd.h" | |
| struct _sxsidev { | |
| UINT8 drv; | |
| UINT8 devtype; | |
| UINT8 flag; | |
| UINT8 __caps; | |
| INTPTR fh; | |
| REG8 (*read)(SXSIDEV sxsi, long pos, UINT8 *buf, UINT size); | |
| REG8 (*write)(SXSIDEV sxsi, long pos, const UINT8 *buf, UINT size); | |
| REG8 (*format)(SXSIDEV sxsi, long pos); | |
| typedef struct { | |
| UINT8 cylinders[2]; | |
| } THDHDR; | |
| typedef struct { | |
| char sig[16]; | |
| char comment[0x100]; | |
| UINT8 headersize[4]; | |
| UINT8 cylinders[4]; | |
| UINT8 surfaces[2]; | |
| UINT8 sectors[2]; | |
| UINT8 sectorsize[2]; | |
| UINT8 reserved[0xe2]; | |
| } NHDHDR; | |
| typedef struct { | |
| UINT8 dummy[4]; | |
| UINT8 hddtype[4]; | |
| UINT8 headersize[4]; | |
| UINT8 hddsize[4]; | |
| UINT8 sectorsize[4]; | |
| UINT8 sectors[4]; | |
| UINT8 surfaces[4]; | |
| UINT8 cylinders[4]; | |
| } HDIHDR; | |
| typedef struct { | |
| char sig[3]; | |
| char ver[4]; | |
| char delimita; | |
| char comment[128]; | |
| UINT8 padding1[4]; | |
| UINT8 mbsize[2]; | |
| UINT8 sectorsize[2]; | |
| UINT8 sectors; | |
| UINT8 surfaces; | |
| UINT8 cylinders[2]; | |
| UINT8 totals[4]; | |
| UINT8 padding2[0x44]; | |
| } VHDHDR; | |
| typedef struct { | |
| long totals; | long totals; |
| UINT16 cylinders; | UINT16 cylinders; |
| UINT16 size; | UINT16 size; |
| UINT8 sectors; | UINT8 sectors; |
| UINT8 surfaces; | UINT8 surfaces; |
| UINT16 type; | UINT8 mediatype; |
| UINT8 padding; | |
| UINT32 headersize; | UINT32 headersize; |
| long fh; | |
| OEMCHAR fname[MAX_PATH]; | OEMCHAR filename[MAX_PATH]; |
| } _SXSIDEV, *SXSIDEV; | }; |
| #ifdef __cplusplus | #ifdef __cplusplus |
| extern "C" { | extern "C" { |
| #endif | #endif |
| extern const char sig_vhd[8]; | |
| extern const char sig_nhd[15]; | |
| extern const SASIHDD sasihdd[7]; | |
| void sxsi_initialize(void); | void sxsi_initialize(void); |
| void sxsi_allflash(void); | |
| void sxsi_alltrash(void); | |
| BOOL sxsi_isconnect(SXSIDEV sxsi); | |
| BRESULT sxsi_prepare(SXSIDEV sxsi); | |
| SXSIDEV sxsi_getptr(REG8 drv); | SXSIDEV sxsi_getptr(REG8 drv); |
| const OEMCHAR *sxsi_getname(REG8 drv); | const OEMCHAR *sxsi_getfilename(REG8 drv); |
| BRESULT sxsi_hddopen(REG8 drv, const OEMCHAR *file); | BRESULT sxsi_setdevtype(REG8 drv, UINT8 dev); |
| BRESULT sxsi_devopen(REG8 drv, const OEMCHAR *file); | |
| void sxsi_open(void); | void sxsi_devclose(REG8 drv); |
| void sxsi_flash(void); | REG8 sxsi_read(REG8 drv, long pos, UINT8 *buf, UINT size); |
| void sxsi_trash(void); | REG8 sxsi_write(REG8 drv, long pos, const UINT8 *buf, UINT size); |
| REG8 sxsi_format(REG8 drv, long pos); | |
| BOOL sxsi_issasi(void); | BOOL sxsi_issasi(void); |
| BOOL sxsi_isscsi(void); | BOOL sxsi_isscsi(void); |
| BOOL sxsi_iside(void); | BOOL sxsi_iside(void); |
| REG8 sxsi_read(REG8 drv, long pos, UINT8 *buf, UINT size); | |
| REG8 sxsi_write(REG8 drv, long pos, const UINT8 *buf, UINT size); | |
| REG8 sxsi_format(REG8 drv, long pos); | |
| #ifdef __cplusplus | #ifdef __cplusplus |
| } | } |
| #endif | #endif |