// create processor, organize devices void zx_init() { zxcpu = z80ex_create(zxcpu_memread, NULL, zxcpu_memwrite, NULL, zxcpu_portread, NULL, zxcpu_portwrite, NULL, zxcpu_intread, NULL); //z80ex_set_tstate_callback(zxcpu, zxcpu_tstate, NULL); // init device mechanism zx_device_count = 0; zx_device = NULL; // construct machine SDevice *zxtest[] = { &zxdevice_pentagon128, //&zxdevice_gmx, //&zxdevice_sid, &zxdevice_ay, //&zxdevice_megaay, &zxdevice_kempston_mouse, &zxdevice_saa, &zxdevice_tape, }; zx_create_machine(zxtest, sizeof(zxtest) / sizeof(SDevice*)); }
void InitAll(void) { int i; for (i = 0; devs[i]; i++) devs[i]->Init(); InitDevMaps(); for (i = 0; i < 0x10; i++) colors[i] = colors_base[i]; InitSurfaces(); InitFont(); FileDialogInit(); C_Tape::Init(); for (i = 0; i < 0x10000; i++) breakpoints[i] = false; cpu = z80ex_create( ReadByte, NULL, WriteByte, NULL, InputByte, NULL, OutputByte, NULL, ReadIntVec, NULL ); #if defined(__APPLE__) updateScreenThreadSem = SDL_CreateSemaphore(0); upadteScreenThread = SDL_CreateThread(UpdateScreenThreadFunc, NULL); #endif }
Z80CPUBase::Z80CPUBase() : m_isHalted(true), m_intPending(false) { m_context = z80ex_create( ex_readMemory, this, ex_writeMemory, this, ex_readIO, this, ex_writeIO, this, ex_int, this ); }
int main() { Z80EX_CONTEXT *cpu; MACHINE machine; load("a.bin", machine.mem, 0xffff); cpu = z80ex_create( read_memory, &machine, write_memory, &machine, read_port, &machine, write_port, &machine, interrupt_vector_read, &machine ); for(int i = 0; i < 64; i++) { z80ex_step(cpu); } return 0; }