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

📄 starcpu.h

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 H
字号:
/*** Starscream 680x0 emulation library** Copyright 1997, 1998, 1999 Neill Corlett**** Refer to STARDOC.TXT for terms of use, API reference, and directions on** how to compile.*/#ifndef __STARCPU_H__#define __STARCPU_H__#ifdef __cplusplusextern "C" {#endif/* Remember to byte-swap these regions. (read STARDOC.TXT for details) */struct STARSCREAM_PROGRAMREGION {	unsigned lowaddr;	unsigned highaddr;	unsigned offset;};struct STARSCREAM_DATAREGION {	unsigned lowaddr;	unsigned highaddr;	void    *memorycall;	void    *userdata;};/* Memory structures for 16-bit data path */#define STARSCREAM_CONTEXTINFO_MEM16                          \	struct STARSCREAM_PROGRAMREGION *fetch;               \	struct STARSCREAM_DATAREGION    *readbyte;            \	struct STARSCREAM_DATAREGION    *readword;            \	struct STARSCREAM_DATAREGION    *writebyte;           \	struct STARSCREAM_DATAREGION    *writeword;           \	struct STARSCREAM_PROGRAMREGION *s_fetch;             \	struct STARSCREAM_DATAREGION    *s_readbyte;          \	struct STARSCREAM_DATAREGION    *s_readword;          \	struct STARSCREAM_DATAREGION    *s_writebyte;         \	struct STARSCREAM_DATAREGION    *s_writeword;         \	struct STARSCREAM_PROGRAMREGION *u_fetch;             \	struct STARSCREAM_DATAREGION    *u_readbyte;          \	struct STARSCREAM_DATAREGION    *u_readword;          \	struct STARSCREAM_DATAREGION    *u_writebyte;         \	struct STARSCREAM_DATAREGION    *u_writeword;         \/* Memory structures for 16-bit data path with function code support */#define STARSCREAM_CONTEXTINFO_MEM16FC                        \	unsigned     (*f_readbyte) (unsigned f, unsigned a);  \	unsigned     (*f_readword) (unsigned f, unsigned a);  \	unsigned     (*f_writebyte)(unsigned f, unsigned a);  \	unsigned     (*f_writeword)(unsigned f, unsigned a);  \/* Memory structures for 32-bit sizable data path */#define STARSCREAM_CONTEXTINFO_MEM32                          \	struct STARSCREAM_PROGRAMREGION *fetch;               \	struct STARSCREAM_DATAREGION    *readbus;             \	struct STARSCREAM_DATAREGION    *writebus;            \	struct STARSCREAM_PROGRAMREGION *s_fetch;             \	struct STARSCREAM_DATAREGION    *s_readbus;           \	struct STARSCREAM_DATAREGION    *s_writebus;          \	struct STARSCREAM_PROGRAMREGION *u_fetch;             \	struct STARSCREAM_DATAREGION    *u_readbus;           \	struct STARSCREAM_DATAREGION    *u_writebus;          \	unsigned     (*f_readbus) (unsigned f, unsigned a);   \	unsigned     (*f_writebus)(unsigned f, unsigned a);   \/* Common context info for all 680x0 types */#define STARSCREAM_CONTEXTINFO_COMMON                         \	void         (*resethandler)(void);                   \	unsigned       dreg[8];                               \	unsigned       areg[8];                               \	unsigned       asp;                                   \	unsigned       pc;                                    \	unsigned       odometer;                              \	unsigned char  interrupts[8];                         \	unsigned short sr;                                    \/* 68000-specific context info */#define STARSCREAM_CONTEXTINFO_68000SPECIFIC                  \	unsigned short contextfiller00;                       \/* Context info for 68010 and higher */#define STARSCREAM_CONTEXTINFO_68010                          \	unsigned char  sfc;                                   \	unsigned char  dfc;                                   \	unsigned       vbr;                                   \	void         (*bkpthandler)(void);                    \/* 68010-specific context info */#define STARSCREAM_CONTEXTINFO_68010SPECIFIC                  \	unsigned char  loopmode;                              \	unsigned char  contextfiller10[3];                    \/* Context info for 68020 and higher */#define STARSCREAM_CONTEXTINFO_68020                          \	unsigned       asp2;                                  \struct S68000CONTEXT {	STARSCREAM_CONTEXTINFO_MEM16	STARSCREAM_CONTEXTINFO_COMMON	STARSCREAM_CONTEXTINFO_68000SPECIFIC};struct S68010CONTEXT {	STARSCREAM_CONTEXTINFO_MEM16	STARSCREAM_CONTEXTINFO_MEM16FC	STARSCREAM_CONTEXTINFO_COMMON	STARSCREAM_CONTEXTINFO_68010	STARSCREAM_CONTEXTINFO_68010SPECIFIC};struct S68020CONTEXT {	STARSCREAM_CONTEXTINFO_MEM32	STARSCREAM_CONTEXTINFO_COMMON	STARSCREAM_CONTEXTINFO_68010	STARSCREAM_CONTEXTINFO_68020};#define STARSCREAM_IDENTIFIERS(SNC,SN)                        \                                                              \extern struct SNC##CONTEXT SN##context;                       \                                                              \int      SN##init             (void);                         \unsigned SN##reset            (void);                         \unsigned SN##exec             (int n);                        \int      SN##interrupt        (int level, int vector);        \void     SN##flushInterrupts  (void);                         \int      SN##GetContextSize   (void);                         \void     SN##GetContext       (void *context);                \void     SN##SetContext       (void *context);                \int      SN##fetch            (unsigned address);             \unsigned SN##readOdometer     (void);                         \unsigned SN##tripOdometer     (void);                         \unsigned SN##controlOdometer  (int n);                        \void     SN##releaseTimeslice (void);                         \unsigned SN##readPC           (void);                         \STARSCREAM_IDENTIFIERS(S68000,s68000)STARSCREAM_IDENTIFIERS(S68010,s68010)STARSCREAM_IDENTIFIERS(S68020,s68020)#ifdef __cplusplus}#endif#endif

⌨️ 快捷键说明

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