📄 register.h
字号:
/*****************************************************************************
* Change Log
* Date | Change
*-----------+-----------------------------------------------------------------
* 20-Mar-99 | Created change log
* 20-Mar-99 | Added REGISTER_OUT_COMMAND_RST, REGISTER_IN_COMMAND_RST
*****************************************************************************/
#include "HdwSimIoctl.h" // only to get declaration of HDW_SIM_REGS
// This is the user-visible set of operations on the registers.
#define REGISTER_IN_COMMAND 0
#define REGISTER_IN_STATUS 1
#define REGISTER_IN_DATA 2
#define REGISTER_OUT_COMMAND 3
#define REGISTER_OUT_STATUS 4
#define REGISTER_OUT_DATA 5
// Input command register bits
#define REGISTER_IN_COMMAND_GO 0x01
#define REGISTER_IN_COMMAND_IE 0x02
#define REGISTER_IN_COMMAND_IACK 0x04
#define REGISTER_IN_COMMAND_RST 0x08
// Input status register bits
#define REGISTER_IN_STATUS_ERR 0x80
#define REGISTER_IN_STATUS_OVR 0x40
#define REGISTER_IN_STATUS_EOP 0x04
#define REGISTER_IN_STATUS_INT 0x02
#define REGISTER_IN_STATUS_DONE 0x01
// Output command register bits
#define REGISTER_OUT_COMMAND_GO 0x01
#define REGISTER_OUT_COMMAND_IE 0x02
#define REGISTER_OUT_COMMAND_IACK 0x04
#define REGISTER_OUT_COMMAND_RST 0x08
// Output status register bits
#define REGISTER_OUT_STATUS_ERR 0x80
#define REGISTER_OUT_STATUS_UND 0x40
#define REGISTER_OUT_STATUS_BUSY 0x04
#define REGISTER_OUT_STATUS_INT 0x02
#define REGISTER_OUT_STATUS_DONE 0x01
class IORegisters {
public:
IORegisters() { simulator = NULL;
wantInterrupt = FALSE; // do not generate interrupt
ZeroMemory(&SimulatedRegisters,
sizeof(SimulatedRegisters));
#ifdef _DEBUG
valid = FALSE;
#endif
}
~IORegisters() { if(simulator != NULL)
Close();
}
BOOL Open();
void Close();
void read();
void write();
void set(UINT registerID, BYTE value);
BYTE get(UINT registerID);
void generateInterrupt();
void setIRQ(UINT irq);
void setTrace(DWORD mask);
DWORD getTrace();
protected:
HDW_SIM_REGS SimulatedRegisters;
HANDLE simulator; // simulator handle
BOOL wantInterrupt;
void DeviceIoControlFailure(UINT id, DWORD err, LPDWORD BytesRead = NULL, DWORD BytesExpected = 0);
#ifdef _DEBUG
BOOL valid; // helps us with debugging
#endif
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -