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

📄 handlers.h

📁 著名ARC模拟器源码,包括多个平台
💻 H
字号:
#ifndef READ_HANDLER#ifdef __GNU__#define UNUSEDARG __attribute__((__unused__))#else#define UNUSEDARG#endif/* ----- typedefs for data and offset types ----- */typedef UINT8			data8_t;typedef UINT16			data16_t;typedef UINT32			data32_t;typedef UINT32			offs_t;/* ----- typedefs for the various common memory/port handlers ----- */typedef data8_t			(*read8_handler)  (UNUSEDARG offs_t offset);typedef void			(*write8_handler) (UNUSEDARG offs_t offset, UNUSEDARG data8_t data);typedef data16_t		(*read16_handler) (UNUSEDARG offs_t offset);typedef void			(*write16_handler)(UNUSEDARG offs_t offset, UNUSEDARG data16_t data, UNUSEDARG data16_t mem_mask);typedef data32_t		(*read32_handler) (UNUSEDARG offs_t offset);typedef void			(*write32_handler)(UNUSEDARG offs_t offset, UNUSEDARG data32_t data, UNUSEDARG data32_t mem_mask);typedef offs_t			(*opbase_handler) (UNUSEDARG offs_t address);/* From a very helpfull email from raine-dev :   move.w d0, 0x1000     Calls write handler, offset=0x800, data=0x1234, mem_mask=0x0000    ACCESSING_MSB=true, ACCESSING_LSB=true                       move.b d0, 0x1000  Calls write handler, offset=0x800, data=0x34??, mem_mask=0x00ff    ACCESSING_MSB=true, ACCESSING_LSB=false                      move.b d0, 0x1001  Calls write handler, offset=0x800, data=0x??34, mem_mask=0xff00    ACCESSING_MSB=false, ACCESSING_LSB=true                          So if you want to use these in raine, you have to handle manually    the mem_mask...*//* ----- 16-bit memory accessing ----- */#define ACCESSING_LSB16				((mem_mask & 0x00ff) == 0)#define ACCESSING_MSB16				((mem_mask & 0xff00) == 0)#define ACCESSING_LSB				ACCESSING_LSB16#define ACCESSING_MSB				ACCESSING_MSB16typedef read8_handler	mem_read_handler;typedef write8_handler	mem_write_handler;typedef read16_handler	mem_read16_handler;typedef write16_handler	mem_write16_handler;typedef read32_handler	mem_read32_handler;typedef write32_handler	mem_write32_handler;/* ----- typedefs for the various common port handlers ----- */typedef read8_handler	port_read_handler;typedef write8_handler	port_write_handler;typedef read16_handler	port_read16_handler;typedef write16_handler	port_write16_handler;typedef read32_handler	port_read32_handler;typedef write32_handler	port_write32_handler;// cpuintf#define CLEAR_LINE		0		/* clear (a fired, held or pulsed) line */#define ASSERT_LINE     1       /* assert an interrupt immediately */#define HOLD_LINE       2       /* hold interrupt line until enable is true */#define PULSE_LINE		3		/* pulse interrupt line for one instruction *//***************************************************************************	Core memory read/write/opbase handler types.***************************************************************************//* ----- macros for declaring the various common memory/port handlers ----- */#define READ_HANDLER(name) 		data8_t  name(UNUSEDARG offs_t offset)#define WRITE_HANDLER(name) 	void     name(UNUSEDARG offs_t offset, UNUSEDARG data8_t data)#define READ16_HANDLER(name)	data16_t name(UNUSEDARG offs_t offset)#define WRITE16_HANDLER(name)	void     name(UNUSEDARG offs_t offset, UNUSEDARG data16_t data, UNUSEDARG data16_t mem_mask)#define READ32_HANDLER(name)	data32_t name(UNUSEDARG offs_t offset)#define WRITE32_HANDLER(name)	void     name(UNUSEDARG offs_t offset, UNUSEDARG data32_t data, UNUSEDARG data32_t mem_mask)#define OPBASE_HANDLER(name)	offs_t   name(UNUSEDARG offs_t address)#endif

⌨️ 快捷键说明

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