⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 register.h

📁 通过VC源代码
💻 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 + -