File:  [RetroPC.NET] / np2 / fdd / sxsi.h
Revision 1.10: download - view: text, annotated - select for diffs
Sat Feb 12 21:40:39 2005 JST (20 years, 8 months ago) by yui
Branches: MAIN
CVS tags: HEAD
fix...


#if defined(SUPPORT_SCSI)
enum {
	SASIHDD_MAX		= 2,
	SCSIHDD_MAX		= 4
};
#else
enum {
	SASIHDD_MAX		= 2,
	SCSIHDD_MAX		= 0
};
#endif

enum {
	SXSITYPE_NONE		= 0x0000,

	SXSITYPE_HDD		= 0x0001,
	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 {
	UINT8	sectors;
	UINT8	surfaces;
	UINT16	cylinders;
} SASIHDD;

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;
	UINT16	cylinders;
	UINT16	size;
	UINT8	sectors;
	UINT8	surfaces;
	UINT16	type;
	UINT32	headersize;
	long	fh;
	OEMCHAR	fname[MAX_PATH];
} _SXSIDEV, *SXSIDEV;


#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);

SXSIDEV sxsi_getptr(REG8 drv);
const OEMCHAR *sxsi_getname(REG8 drv);
BRESULT sxsi_hddopen(REG8 drv, const OEMCHAR *file);

void sxsi_open(void);
void sxsi_flash(void);
void sxsi_trash(void);

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
}
#endif


RetroPC.NET-CVS <cvs@retropc.net>