File:  [RetroPC.NET] / xmil / io / fdc.h
Revision 1.15: download - view: text, annotated - select for diffs
Tue Mar 24 00:02:25 2009 JST (16 years, 7 months ago) by yui
Branches: MAIN
CVS tags: HEAD
sync local (pointer and defines 4 ds)


/* #define SUPPORT_MOTORRISEUP */

enum {
	FDCDIR_NONE			= 0x00,
	FDCDIR_TAO			= 0x01,
	FDCDIR_IN			= 0x02,
	FDCDIR_OUT			= 0x03
};

enum {
	FDCMOTOR_STOP		= 0,
	FDCMOTOR_STARTING	= 1,
	FDCMOTOR_READY		= 2,
	FDCMOTOR_STOPING	= 3
};

typedef struct {
	UINT8	cmd;
	UINT8	ctype;
	UINT8	data;
	SINT8	step;
	UINT8	drv;
	UINT8	motor;
	UINT8	creg;
	UINT8	rreg;

	UINT8	c;
	UINT8	h;
	UINT8	r;
	UINT8	n;

	UINT8	ctbl[4];

	UINT8	media;
	UINT8	stat;

	UINT8	bufmedia;
	UINT8	bufunit;
	UINT	buftrack;
	UINT8	bufsc;
	UINT8	bufdir;
	UINT8	bufwrite;
	UINT8	bufmark;
	UINT	bufsize;
	UINT	bufpos;

	UINT8	busy;
	UINT8	hole;
	UINT8	curtime;
	UINT8	equip;
	UINT	crcnum;

	SINT32	loopclock;

#if defined(SUPPORT_MOTORRISEUP)
	UINT8	motorevent[4];
	SINT32	motorclock[4];
#endif

#if !defined(CONST_DISKIMAGE)
	UINT8	wt_mode;
	UINT8	wt_sectors;
	UINT8	wt_padding[2];
	UINT	wt_ptr;
	UINT	wt_datpos;
	UINT	wt_datsize;

	UINT8	buffer[0x3000];
#else
	UINT8	crcbuf[6];
#endif
} FDCSTAT;

typedef struct {
	UINT8	diskstat[4];
#if defined(CONST_DISKIMAGE)
	UINT8	*buffer;
#endif
} FDCEXT;

typedef struct {
	FDCSTAT	s;
	FDCEXT	e;
} FDC;


#ifdef __cplusplus
extern "C" {
#endif

void neitem_fdcbusy(UINT id);
#if defined(SUPPORT_MOTORRISEUP)
void fdc_callback(void);
#else
#define	fdc_callback()
#endif

void IOOUTCALL fdc_o(UINT port, REG8 value);
REG8 IOINPCALL fdc_i(UINT port);

void fdc_reset(void);

#ifdef __cplusplus
}
#endif


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