File:  [RetroPC.NET] / np2 / io / dmac.h
Revision 1.1: download - view: text, annotated - select for diffs
Fri Oct 17 02:57:50 2003 JST (22 years ago) by yui
Branches: MAIN
CVS tags: HEAD
Initial revision


#ifndef DMACCALL
#define	DMACCALL
#endif


enum {
	DMA_CH00			= 0,
	DMA_CH01			= 1,
	DMA_2HD				= 2,
	DMA_2DD				= 3,

	DMAEXT_START		= 0,
	DMAEXT_END			= 1,
	DMAEXT_BREAK		= 2,

	DMA_INITSIGNALONLY	= 1
};

#if defined(BYTESEX_LITTLE)
enum {
	DMA16_LOW		= 0,
	DMA16_HIGH		= 1,
	DMA32_LOW		= 0,
	DMA32_HIGH		= 2
};
#elif defined(BYTESEX_BIG)
enum {
	DMA16_LOW		= 1,
	DMA16_HIGH		= 0,
	DMA32_LOW		= 2,
	DMA32_HIGH		= 0
};
#endif

typedef struct {
	union {
		BYTE	b[4];
		UINT16	w[2];
		UINT32	d;
	} adrs;
	union {
		BYTE	b[2];
		UINT16	w;
	} leng;
	union {
		BYTE	b[2];
		UINT16	w;
	} adrsorg;
	union {
		BYTE	b[2];
		UINT16	w;
	} lengorg;
	UINT16	action;
	void	(DMACCALL * outproc)(BYTE data);
	BYTE	(DMACCALL * inproc)(void);
	BYTE	(DMACCALL * extproc)(BYTE action);
	BYTE	mode;
	BYTE	sreq;
	BYTE	ready;
	BYTE	mask;
} _DMACH, *DMACH;

typedef struct {
	_DMACH	dmach[4];
	int		lh;
	UINT	work;
	UINT	working;
	BYTE	mask;
	BYTE	stat;
} _DMAC, *DMAC;


#ifdef __cplusplus
extern "C" {
#endif

void DMACCALL dma_dummyout(BYTE data);
BYTE DMACCALL dma_dummyin(void);
BYTE DMACCALL dma_dummyproc(BYTE func);

void dmac_reset(void);
void dmac_bind(void);

void dmac_check(void);

#ifdef __cplusplus
}
#endif


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