|
|
1.1 ! root 1: ! 2: /* extra declarations for z80stb.c to make life easier. ! 3: */ ! 4: ! 5: #ifndef h_z80stb_h ! 6: #define h_z80stb_h ! 7: ! 8: /* RC hack */ ! 9: #define DWORD UINT32 ! 10: #define WORD UINT16 ! 11: #define BYTE UINT8 ! 12: #define LPBYTE UINT8* ! 13: #define ULONG unsigned long ! 14: #define BOOL UINT8 ! 15: ! 16: /* accessors */ ! 17: #define LOWORD(x) ( x & 0xFFFF ) ! 18: #define HIWORD(x) ( x >> 16 ) ! 19: #define LOBYTE(x) ( x & 0xFF ) ! 20: #define HIBYTE(x) ( x >> 8 ) ! 21: #define MAKEWORD(lo,hi) ( lo | ( hi << 8 ) ) ! 22: ! 23: /* execz80.h */ ! 24: #define S_FLAG 0x80 ! 25: #define Z_FLAG 0x40 ! 26: #define H_FLAG 0x10 ! 27: #define V_FLAG 0x04 ! 28: #define N_FLAG 0x02 ! 29: #define C_FLAG 0x01 ! 30: ! 31: typedef struct { ! 32: WORD AF,BC,DE,HL,IX,IY,PC,SP; ! 33: WORD AF2,BC2,DE2,HL2; ! 34: unsigned IFF1,IFF2,HALT,IM,I,R,R2; ! 35: } EXECZ80_CONTEXT; ! 36: ! 37: // typedef BYTE (*EXECZ80_MEMREAD_PROC)(WORD); ! 38: // typedef void (*EXECZ80_MEMWRITE_PROC)(WORD, BYTE); ! 39: // typedef BYTE (*EXECZ80_PORTREAD_PROC)(BYTE); ! 40: // typedef void (*EXECZ80_PORTWRITE_PROC)(BYTE, BYTE); ! 41: ! 42: // #define Z80_END_TABLE ((EXECZ80_MEMREAD_PROC) 0xFFFFFFFF) ! 43: // #define Z80_IGNORE_READ ((EXECZ80_MEMREAD_PROC) 0xFFFFFFFE) ! 44: // #define Z80_IGNORE_WRITE ((EXECZ80_MEMWRITE_PROC)0xFFFFFFFE) ! 45: // #define Z80_ILLEGAL_READ ((EXECZ80_MEMREAD_PROC) 0xFFFFFFFD) ! 46: // #define Z80_ILLEGAL_WRITE ((EXECZ80_MEMWRITE_PROC)0xFFFFFFFD) ! 47: ! 48: // typedef struct { ! 49: // DWORD dwAddrMin; ! 50: // DWORD dwAddrMax; ! 51: // DWORD dwFlags; ! 52: // EXECZ80_MEMREAD_PROC pfnMemRead; ! 53: // EXECZ80_MEMWRITE_PROC pfnMemWrite; ! 54: // } EXECZ80_MEM_DESCRIPTOR; ! 55: ! 56: // typedef struct { ! 57: // DWORD dwFlags; ! 58: // LPBYTE rgbMemory; ! 59: // const BYTE *rgbInstructions; ! 60: // EXECZ80_MEMREAD_PROC pfnMemRead; ! 61: // EXECZ80_MEMWRITE_PROC pfnMemWrite; ! 62: // EXECZ80_PORTREAD_PROC pfnPortRead; ! 63: // EXECZ80_PORTWRITE_PROC pfnPortWrite; ! 64: // const EXECZ80_MEM_DESCRIPTOR *pmd; ! 65: // } EXECZ80_CREATE; ! 66: ! 67: /* execz80i.h */ ! 68: #define ARITH_TABLES ! 69: ! 70: /* int Create ( EXECZ80_CREATE &cs, IExecZ80 *&pExec ); */ ! 71: /* int CExecZ80 ( EXECZ80_CREATE &cs ); */ ! 72: /* int ~CExecZ80(); */ ! 73: ! 74: int Irq(BYTE bVal); ! 75: int Nmi(void); ! 76: int Exec(int cCyclesArg); ! 77: ! 78: /* inline */ BYTE ImmedByte(void); ! 79: /* inline */ WORD ImmedWord(void); ! 80: /* inline */ WORD GetPC(void); ! 81: /* inline */ void SetPC(WORD wAddr); ! 82: /* inline */ void AdjustPC(signed char cb); ! 83: ! 84: /* inline */ void Push(WORD wArg); ! 85: /* inline */ WORD Pop(void); ! 86: /* inline */ WORD GetSP(void); ! 87: /* inline */ void SetSP(WORD wAddr); ! 88: ! 89: /* inline */ int Jr0(int f); ! 90: /* inline */ int Jr1(int f); ! 91: /* inline */ int Call0(int f); ! 92: /* inline */ int Call1(int f); ! 93: /* inline */ int Ret0(int f); ! 94: /* inline */ int Ret1(int f); ! 95: /* inline */ int Jp0(int f); ! 96: /* inline */ int Jp1(int f); ! 97: ! 98: /* inline */ void Rst(WORD wAddr); ! 99: /* inline */ WORD MemReadWord(WORD wAddr); ! 100: /* inline */ BYTE MemReadByte(WORD wAddr); ! 101: /* inline */ void MemWriteByte(WORD wAddr, BYTE bVal); ! 102: /* inline */ void MemWriteWord(WORD wAddr, WORD wVal); ! 103: WORD CallbackMemReadWord(WORD wAddr); ! 104: BYTE CallbackMemReadByte(WORD wAddr); ! 105: void CallbackMemWriteByte(WORD wAddr, BYTE bVal); ! 106: void CallbackMemWriteWord(WORD wAddr, WORD wVal); ! 107: ! 108: /* inline */ void Add_1(BYTE b); ! 109: /* inline */ void Adc_1(BYTE b); ! 110: /* inline */ void Sub(BYTE b); ! 111: /* inline */ void Sbc_1(BYTE b); ! 112: /* inline */ void And(BYTE b); ! 113: /* inline */ void Or(BYTE b); ! 114: /* inline */ void Xor(BYTE b); ! 115: /* inline */ void Cp(BYTE b); ! 116: /* inline */ BYTE Set(BYTE b,int); ! 117: /* inline */ BYTE Res(BYTE b,int); ! 118: /* inline */ void Bit(BYTE b,int); ! 119: /* inline */ void Rlca(void); ! 120: /* inline */ void Rrca(void); ! 121: /* inline */ void Rla(void); ! 122: /* inline */ void Rra(void); ! 123: /* inline */ BYTE Rlc(BYTE b); ! 124: /* inline */ BYTE Rrc(BYTE b); ! 125: /* inline */ BYTE Rl(BYTE b); ! 126: /* inline */ BYTE Rr(BYTE b); ! 127: /* inline */ BYTE Sll(BYTE b); ! 128: /* inline */ BYTE Srl(BYTE b); ! 129: /* inline */ BYTE Sla(BYTE b); ! 130: /* inline */ BYTE Sra(BYTE b); ! 131: /* inline */ BYTE Inc(BYTE b); ! 132: /* inline */ BYTE Dec(BYTE b); ! 133: ! 134: /* inline */ WORD Add_2(WORD wArg1, WORD wArg2); ! 135: /* inline */ WORD Adc_2(WORD wArg1, WORD wArg2); ! 136: /* inline */ WORD Sbc_2(WORD wArg1, WORD wArg2); ! 137: ! 138: int Ei(void); ! 139: void Di(void); ! 140: ! 141: int HandleCB(void); ! 142: int HandleDD(void); ! 143: int HandleED(int cCycles); ! 144: int HandleFD(void); ! 145: int HandleDDCB(void); ! 146: int HandleFDCB(void); ! 147: ! 148: void Out(BYTE bPort, BYTE bVal); ! 149: BYTE In(BYTE bPort); ! 150: ! 151: void Exx(void); ! 152: ! 153: /* inline */ WORD IndirectIX(void); ! 154: /* inline */ WORD IndirectIY(void); ! 155: ! 156: void Dump(void); ! 157: ! 158: extern BYTE ZSTable[256]; ! 159: extern BYTE ZSPTable[256]; ! 160: extern short DAATable[2048]; ! 161: extern BYTE rgfAdd[256][256]; ! 162: extern BYTE rgfAddc[256][256][2]; ! 163: extern BYTE rgfSub[256][256]; ! 164: extern BYTE rgfSubc[256][256][2]; ! 165: extern BYTE rgfInc[256]; ! 166: extern BYTE rgfDec[256]; ! 167: extern BYTE rgfBit[256][8]; ! 168: ! 169: #define ISF_PENDING 0x00000008 ! 170: #define ISF_MODE_MASK 0x00000003 ! 171: #define ISF_HALT 0x00000004 ! 172: #define ISF_IFF1 0x00000010 ! 173: #define ISF_IFF2 0x00000020 ! 174: #define ISF_IREG_MASK 0x00000F00 ! 175: ! 176: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.