📄 z80stb.h
字号:
/* extra declarations for z80stb.c to make life easier. */#ifndef h_z80stb_h#define h_z80stb_h/* RC hack */#define DWORD UINT32#define WORD UINT16#define BYTE UINT8#define LPBYTE UINT8*#define ULONG unsigned long#define BOOL UINT8/* accessors */#define LOWORD(x) ( x & 0xFFFF )#define HIWORD(x) ( x >> 16 )#define LOBYTE(x) ( x & 0xFF )#define HIBYTE(x) ( x >> 8 )#define MAKEWORD(lo,hi) ( lo | ( hi << 8 ) )/* execz80.h */#define S_FLAG 0x80#define Z_FLAG 0x40#define H_FLAG 0x10#define V_FLAG 0x04#define N_FLAG 0x02#define C_FLAG 0x01typedef struct { WORD AF,BC,DE,HL,IX,IY,PC,SP; WORD AF2,BC2,DE2,HL2; unsigned IFF1,IFF2,HALT,IM,I,R,R2;} EXECZ80_CONTEXT;// typedef BYTE (*EXECZ80_MEMREAD_PROC)(WORD);// typedef void (*EXECZ80_MEMWRITE_PROC)(WORD, BYTE);// typedef BYTE (*EXECZ80_PORTREAD_PROC)(BYTE);// typedef void (*EXECZ80_PORTWRITE_PROC)(BYTE, BYTE);// #define Z80_END_TABLE ((EXECZ80_MEMREAD_PROC) 0xFFFFFFFF)// #define Z80_IGNORE_READ ((EXECZ80_MEMREAD_PROC) 0xFFFFFFFE)// #define Z80_IGNORE_WRITE ((EXECZ80_MEMWRITE_PROC)0xFFFFFFFE)// #define Z80_ILLEGAL_READ ((EXECZ80_MEMREAD_PROC) 0xFFFFFFFD)// #define Z80_ILLEGAL_WRITE ((EXECZ80_MEMWRITE_PROC)0xFFFFFFFD)// typedef struct {// DWORD dwAddrMin;// DWORD dwAddrMax;// DWORD dwFlags;// EXECZ80_MEMREAD_PROC pfnMemRead;// EXECZ80_MEMWRITE_PROC pfnMemWrite;// } EXECZ80_MEM_DESCRIPTOR;// typedef struct {// DWORD dwFlags;// LPBYTE rgbMemory;// const BYTE *rgbInstructions;// EXECZ80_MEMREAD_PROC pfnMemRead;// EXECZ80_MEMWRITE_PROC pfnMemWrite;// EXECZ80_PORTREAD_PROC pfnPortRead;// EXECZ80_PORTWRITE_PROC pfnPortWrite;// const EXECZ80_MEM_DESCRIPTOR *pmd;// } EXECZ80_CREATE;/* execz80i.h */#define ARITH_TABLES/* int Create ( EXECZ80_CREATE &cs, IExecZ80 *&pExec ); *//* int CExecZ80 ( EXECZ80_CREATE &cs ); *//* int ~CExecZ80(); */int Irq(BYTE bVal);int Nmi();int Exec(int cCyclesArg);/* inline */ BYTE ImmedByte();/* inline */ WORD ImmedWord();/* inline */ WORD GetPC();/* inline */ void SetPC(WORD wAddr);/* inline */ void AdjustPC(signed char cb);/* inline */ void Push(WORD wArg);/* inline */ WORD Pop();/* inline */ WORD GetSP();/* inline */ void SetSP(WORD wAddr); /* inline */ int Jr0(int f);/* inline */ int Jr1(int f);/* inline */ int Call0(int f);/* inline */ int Call1(int f);/* inline */ int Ret0(int f);/* inline */ int Ret1(int f);/* inline */ int Jp0(int f);/* inline */ int Jp1(int f); /* inline */ void Rst(WORD wAddr);/* inline */ WORD MemReadWord(WORD wAddr);/* inline */ BYTE MemReadByte(WORD wAddr);/* inline */ void MemWriteByte(WORD wAddr, BYTE bVal);/* inline */ void MemWriteWord(WORD wAddr, WORD wVal);WORD CallbackMemReadWord(WORD wAddr);BYTE CallbackMemReadByte(WORD wAddr);void CallbackMemWriteByte(WORD wAddr, BYTE bVal);void CallbackMemWriteWord(WORD wAddr, WORD wVal); /* inline */ void Add_1(BYTE b);/* inline */ void Adc_1(BYTE b);/* inline */ void Sub(BYTE b);/* inline */ void Sbc_1(BYTE b);/* inline */ void And(BYTE b);/* inline */ void Or(BYTE b);/* inline */ void Xor(BYTE b);/* inline */ void Cp(BYTE b);/* inline */ BYTE Set(BYTE b,int);/* inline */ BYTE Res(BYTE b,int);/* inline */ void Bit(BYTE b,int);/* inline */ void Rlca();/* inline */ void Rrca();/* inline */ void Rla();/* inline */ void Rra();/* inline */ BYTE Rlc(BYTE b);/* inline */ BYTE Rrc(BYTE b);/* inline */ BYTE Rl(BYTE b);/* inline */ BYTE Rr(BYTE b);/* inline */ BYTE Sll(BYTE b);/* inline */ BYTE Srl(BYTE b);/* inline */ BYTE Sla(BYTE b);/* inline */ BYTE Sra(BYTE b);/* inline */ BYTE Inc(BYTE b);/* inline */ BYTE Dec(BYTE b);/* inline */ WORD Add_2(WORD wArg1, WORD wArg2);/* inline */ WORD Adc_2(WORD wArg1, WORD wArg2);/* inline */ WORD Sbc_2(WORD wArg1, WORD wArg2);int Ei();void Di();int HandleCB();int HandleDD();int HandleED(int cCycles);int HandleFD();int HandleDDCB();int HandleFDCB();void Out(BYTE bPort, BYTE bVal);BYTE In(BYTE bPort);void Exx();/* inline */ WORD IndirectIX();/* inline */ WORD IndirectIY();void Dump();extern BYTE ZSTable[256];extern BYTE ZSPTable[256];extern short DAATable[2048];extern BYTE rgfAdd[256][256];extern BYTE rgfAddc[256][256][2];extern BYTE rgfSub[256][256];extern BYTE rgfSubc[256][256][2];extern BYTE rgfInc[256];extern BYTE rgfDec[256];extern BYTE rgfBit[256][8];#define ISF_PENDING 0x00000008#define ISF_MODE_MASK 0x00000003#define ISF_HALT 0x00000004#define ISF_IFF1 0x00000010#define ISF_IFF2 0x00000020#define ISF_IREG_MASK 0x00000F00#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -