39 #define CZ80_FETCH_BITS 4 // [4-12] default = 8
41 #define CZ80_FETCH_SFT (16 - CZ80_FETCH_BITS)
42 #define CZ80_FETCH_BANK (1 << CZ80_FETCH_BITS)
44 #ifdef WORDS_BIGENDIAN
45 #define CZ80_LITTLE_ENDIAN 0
47 #define CZ80_LITTLE_ENDIAN 1
49 #define CZ80_USE_JUMPTABLE 0
50 #define CZ80_SIZE_OPT 0
51 #define CZ80_USE_WORD_HANDLER 0
58 #if CZ80_LITTLE_ENDIAN
59 #define zR8(A) CPU->creg.r8[(A) ^ 1]
61 #define zR8(A) CPU->creg.r8[(A)]
63 #define zR16(A) CPU->creg.r16[A].W
64 #define pzR16(A) &(CPU->creg.r16[A])
66 #define pzFA &(CPU->creg.name.FA)
67 #define zFA CPU->creg.name.FA.W
68 #define zlFA CPU->creg.name.FA.B.L
69 #define zhFA CPU->creg.name.FA.B.H
73 #define pzBC &(CPU->creg.name.BC)
74 #define zBC CPU->creg.name.BC.W
75 #define zlBC CPU->creg.name.BC.B.L
76 #define zhBC CPU->creg.name.BC.B.H
80 #define pzDE &(CPU->creg.name.DE)
81 #define zDE CPU->creg.name.DE.W
82 #define zlDE CPU->creg.name.DE.B.L
83 #define zhDE CPU->creg.name.DE.B.H
87 #define pzHL &(CPU->creg.name.HL)
88 #define zHL CPU->creg.name.HL.W
89 #define zlHL CPU->creg.name.HL.B.L
90 #define zhHL CPU->creg.name.HL.B.H
94 #define zFA2 CPU->FA2.W
95 #define zlFA2 CPU->FA2.B.L
96 #define zhFA2 CPU->FA2.B.H
100 #define zBC2 CPU->BC2.W
101 #define zDE2 CPU->DE2.W
102 #define zHL2 CPU->HL2.W
104 #define pzIX &(CPU->IX)
105 #define zIX CPU->IX.W
106 #define zlIX CPU->IX.B.L
107 #define zhIX CPU->IX.B.H
109 #define pzIY &(CPU->IY)
110 #define zIY CPU->IY.W
111 #define zlIY CPU->IY.B.L
112 #define zhIY CPU->IY.B.H
114 #define pzSP &(CPU->SP)
115 #define zSP CPU->SP.W
116 #define zlSP CPU->SP.B.L
117 #define zhSP CPU->SP.B.H
125 #define zR1 CPU->R.B.L
126 #define zR2 CPU->R.B.H
129 #define zIFF CPU->IFF.W
130 #define zIFF1 CPU->IFF.B.L
131 #define zIFF2 CPU->IFF.B.H
133 #define CZ80_SF_SFT 7
134 #define CZ80_ZF_SFT 6
135 #define CZ80_YF_SFT 5
136 #define CZ80_HF_SFT 4
137 #define CZ80_XF_SFT 3
138 #define CZ80_PF_SFT 2
139 #define CZ80_VF_SFT 2
140 #define CZ80_NF_SFT 1
141 #define CZ80_CF_SFT 0
143 #define CZ80_SF (1 << CZ80_SF_SFT)
144 #define CZ80_ZF (1 << CZ80_ZF_SFT)
145 #define CZ80_YF (1 << CZ80_YF_SFT)
146 #define CZ80_HF (1 << CZ80_HF_SFT)
147 #define CZ80_XF (1 << CZ80_XF_SFT)
148 #define CZ80_PF (1 << CZ80_PF_SFT)
149 #define CZ80_VF (1 << CZ80_VF_SFT)
150 #define CZ80_NF (1 << CZ80_NF_SFT)
151 #define CZ80_CF (1 << CZ80_CF_SFT)
153 #define CZ80_IFF_SFT CZ80_PF_SFT
154 #define CZ80_IFF CZ80_PF
156 #define CZ80_HAS_INT CZ80_IFF
157 #define CZ80_HAS_NMI 0x08
159 #define CZ80_RUNNING 0x10
160 #define CZ80_HALTED 0x20
161 #define CZ80_FAULTED 0x80
162 #define CZ80_DISABLE 0x40
168 #if CZ80_USE_WORD_HANDLER
169 typedef uint16_t
FASTCALL CZ80_READ_WORD(
void *
ctx, uint16_t adr);
170 typedef void FASTCALL CZ80_WRITE_WORD(
void *
ctx, uint16_t adr, uint16_t data);
180 #if CZ80_LITTLE_ENDIAN
234 #if CZ80_USE_WORD_HANDLER
235 CZ80_READ_WORD *Read_Word;
236 CZ80_WRITE_WORD *Write_Word;
268 #if CZ80_USE_WORD_HANDLER
269 void Cz80_Set_ReadW(
cz80_struc *cpu, CZ80_READ_WORD *Func);
270 void Cz80_Set_WriteW(
cz80_struc *cpu, CZ80_WRITE_WORD *Func);