📄 dma.h
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -