dma.h

来自「Jazmyn is a 32-bit, protected mode, mult」· C头文件 代码 · 共 44 行

H
44
字号
#ifndef _DMA_H
#define _DMA_H

#include "driver.h"
#include "drvreq.h"

#define	COMMAND_REG(DMA)	((DMA==1) ? 0x08 : 0xD0)	//enable/disable DMA
#define	REQ_REG(DMA)		((DMA==1) ? 0x09 : 0xD2)	//STCL,sel1-sel0
#define	CHAN_MASK_REG(DMA)	((DMA==1) ? 0x0A : 0xD4)	//STCL,sel1-sel0
#define	MODE_REG(DMA)		((DMA==1) ? 0x0B : 0xD6)	//mode,type,sel1-sel0
#define	MASK_REG(DMA)		((DMA==1) ? 0x0F : 0xDE)	//STC3-STC0
#define	RES_FF_REG(DMA)		((DMA==1) ? 0x0C : 0xD8)	//reset internel flip-flop
#define	MASTER_CLR_REG(DMA)	((DMA==1) ? 0x0D : 0xDA)	//DMA reset
#define	CLR_MASK_REG(DMA)	((DMA==1) ? 0x0E : 0xDC)	//unmask all channels

#define LO_BYTE(x) (x & 0x00FF)
#define HI_BYTE(x) ((x & 0xFF00) >> 8)

typedef struct
{
	byte	page;
	byte	hbyte;
	byte	lbyte;
	ushort	length;
}DMA_mem;

class DMA : public driver
{
private:
	static byte ADDR_REG[8];
	static byte COUNT_REG[8];
	static byte PAGE_REG[8];
public:
        DMA(char *name);
	~DMA();
        int     set_DMA(DMA_req *req);
        void    make_DMA_addrs(DMA_mem &mem,uint addrs,ushort size);
};


int dma_main(void *req);

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?