104 Z80_STATUS_ED_UNDEFINED,
118 #ifdef Z80_BIG_ENDIAN 165 #define Z80_S_FLAG_SHIFT 7 166 #define Z80_Z_FLAG_SHIFT 6 167 #define Z80_Y_FLAG_SHIFT 5 168 #define Z80_H_FLAG_SHIFT 4 169 #define Z80_X_FLAG_SHIFT 3 170 #define Z80_PV_FLAG_SHIFT 2 171 #define Z80_N_FLAG_SHIFT 1 172 #define Z80_C_FLAG_SHIFT 0 174 #define Z80_S_FLAG (1 << Z80_S_FLAG_SHIFT) 175 #define Z80_Z_FLAG (1 << Z80_Z_FLAG_SHIFT) 176 #define Z80_Y_FLAG (1 << Z80_Y_FLAG_SHIFT) 177 #define Z80_H_FLAG (1 << Z80_H_FLAG_SHIFT) 178 #define Z80_X_FLAG (1 << Z80_X_FLAG_SHIFT) 179 #define Z80_PV_FLAG (1 << Z80_PV_FLAG_SHIFT) 180 #define Z80_N_FLAG (1 << Z80_N_FLAG_SHIFT) 181 #define Z80_C_FLAG (1 << Z80_C_FLAG_SHIFT) 183 #define Z80_P_FLAG_SHIFT Z80_PV_FLAG_SHIFT 184 #define Z80_V_FLAG_SHIFT Z80_PV_FLAG_SHIFT 185 #define Z80_P_FLAG Z80_PV_FLAG 186 #define Z80_V_FLAG Z80_PV_FLAG 193 Z80_INTERRUPT_MODE_0,
194 Z80_INTERRUPT_MODE_1,
204 unsigned char byte[14];
205 unsigned short word[7];
208 unsigned short alternates[4];
210 int i, r, pc, iff1, iff2, im;
214 void * register_table[16];
215 void * dd_register_table[16];
216 void * fd_register_table[16];
228 typedef int (*ReadByteCallback)(
void * context,
int addr);
229 typedef void (*WriteByteCallback)(
void * context,
int addr,
int value);
230 typedef int (*ReadWordCallback)(
void * context,
int addr);
231 typedef void (*WriteWordCallback)(
void * context,
int addr,
int value);
232 typedef int (*ReadIOCallback)(
void * context,
int addr);
233 typedef void (*WriteIOCallback)(
void * context,
int addr,
int value);
235 void setCallbacks(
void * context, ReadByteCallback readByte, WriteByteCallback writeByte, ReadWordCallback readWord, WriteWordCallback writeWord, ReadIOCallback readIO, WriteIOCallback writeIO) {
237 m_readByte = readByte;
238 m_writeByte = writeByte;
239 m_readWord = readWord;
240 m_writeWord = writeWord;
253 int IRQ(
int data_on_bus);
265 uint8_t readRegByte(
int reg) {
return state.registers.byte[reg]; }
266 void writeRegByte(
int reg, uint8_t value) { state.registers.byte[reg] = value; }
268 uint16_t readRegWord(
int reg) {
return state.registers.word[reg]; }
269 void writeRegWord(
int reg, uint16_t value) { state.registers.word[reg] = value; }
271 uint16_t getPC() {
return state.pc; }
272 void setPC(uint16_t value) { state.pc = value; }
277 int intemulate(
int opcode,
int elapsed_cycles);
286 ReadByteCallback m_readByte;
287 WriteByteCallback m_writeByte;
288 ReadWordCallback m_readWord;
289 WriteWordCallback m_writeWord;
290 ReadIOCallback m_readIO;
291 WriteIOCallback m_writeIO;