--- np2/fdd/sxsi.h 2004/01/22 01:10:04 1.3 +++ np2/fdd/sxsi.h 2005/02/07 14:46:09 1.8 @@ -1,8 +1,15 @@ +#if defined(SUPPORT_SCSI) enum { SASIHDD_MAX = 2, SCSIHDD_MAX = 4 }; +#else +enum { + SASIHDD_MAX = 2, + SCSIHDD_MAX = 0 +}; +#endif enum { SXSITYPE_NONE = 0x0000, @@ -25,36 +32,53 @@ enum { typedef struct { - char sig[3]; - char ver[4]; - char delimita; - char comment[128]; - BYTE padding1[4]; - BYTE mbsize[2]; - BYTE sectorsize[2]; - BYTE sectors; - BYTE surfaces; - BYTE cylinders[2]; - BYTE totals[4]; - BYTE padding2[0x44]; -} VHDHDR; + UINT8 sectors; + UINT8 surfaces; + UINT16 cylinders; +} SASIHDD; typedef struct { - BYTE cylinders[2]; + UINT8 cylinders[2]; } THDHDR; typedef struct { - BYTE dummy[4]; - BYTE hddtype[4]; - BYTE headersize[4]; - BYTE hddsize[4]; - BYTE sectorsize[4]; - BYTE sectors[4]; - BYTE surfaces[4]; - BYTE cylinders[4]; + 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; UINT16 cylinders; UINT16 size; @@ -66,17 +90,13 @@ typedef struct { char fname[MAX_PATH]; } _SXSIDEV, *SXSIDEV; -typedef struct { - UINT8 sectors; - UINT8 surfaces; - UINT16 cylinders; -} SASIHDD; - #ifdef __cplusplus extern "C" { #endif +extern const char sig_vhd[8]; +extern const char sig_nhd[15]; extern const SASIHDD sasihdd[7]; void sxsi_initialize(void); @@ -89,8 +109,12 @@ void sxsi_open(void); void sxsi_flash(void); void sxsi_trash(void); -REG8 sxsi_read(REG8 drv, long pos, BYTE *buf, UINT size); -REG8 sxsi_write(REG8 drv, long pos, const BYTE *buf, UINT size); +BOOL sxsi_issasi(void); +BOOL sxsi_isscsi(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