I'm using `cpudiag.bin` from http://www.emulator101.com/files/cpudiag.bin to test my emulator. I've already implemented the CP/M CALL function at 0x05, offset the program at `0x100` and fixed the offset at byte 112 + 0x100, as per this site: http://emulator101.com/ I get the error: CPU HAS FAILED! ERROR EXIT=78=: and added myself that there was a `JMP to 0000 from 0x698`. Here are the last 10 instructions run by the emulator before failing: Instructions Ran: 79 Program Counter: 016C Memory Immediate: 0xFA Instruction: JM adr 71 1 Registers (B/C/D/E/H/L/A): 00 02 00 3D 01 DA 0A Flags (Z/S/P/C/AC): 1 0 1 0 0 Stack Pointer: 7A7 Cycles: 724 Interrupt enabled: false Interrupt op: ------------------- Instructions Ran: 80 Program Counter: 0171 Memory Immediate: 0xC6 Instruction: ADI D8 30 Registers (B/C/D/E/H/L/A): 00 02 00 3D 01 DA 0A Flags (Z/S/P/C/AC): 1 0 1 0 0 Stack Pointer: 7A7 Cycles: 734 Interrupt enabled: false Interrupt op: ------------------- Instructions Ran: 81 Program Counter: 0173 Memory Immediate: 0xC9 Instruction: RET Registers (B/C/D/E/H/L/A): 00 02 00 3D 01 DA 3A Flags (Z/S/P/C/AC): 0 0 1 0 1 Stack Pointer: 7A7 Cycles: 741 Interrupt enabled: false Interrupt op: ------------------- Instructions Ran: 82 Program Counter: 0160 Memory Immediate: 0x5F Instruction: MOV E, A Registers (B/C/D/E/H/L/A): 00 02 00 3D 01 DA 3A Flags (Z/S/P/C/AC): 0 0 1 0 1 Stack Pointer: 7A9 Cycles: 751 Interrupt enabled: false Interrupt op: ------------------- Instructions Ran: 83 Program Counter: 0161 Memory Immediate: 0xC3 Instruction: JMP adr 4E 1 Registers (B/C/D/E/H/L/A): 00 02 00 3A 01 DA 3A Flags (Z/S/P/C/AC): 0 0 1 0 1 Stack Pointer: 7A9 Cycles: 756 Interrupt enabled: false Interrupt op: ------------------- Instructions Ran: 84 Program Counter: 014E Memory Immediate: 0x0E Instruction: MVI C, D8 2 Registers (B/C/D/E/H/L/A): 00 02 00 3A 01 DA 3A Flags (Z/S/P/C/AC): 0 0 1 0 1 Stack Pointer: 7A9 Cycles: 766 Interrupt enabled: false Interrupt op: ------------------- Instructions Ran: 85 Program Counter: 0150 Memory Immediate: 0xCD Instruction: CALL adr 5 0 Registers (B/C/D/E/H/L/A): 00 02 00 3A 01 DA 3A Flags (Z/S/P/C/AC): 0 0 1 0 1 Stack Pointer: 7A9 Cycles: 773 Interrupt enabled: false Interrupt op: ------------------- Instructions Ran: 86 Program Counter: 0005 Memory Immediate: 0xC9 Instruction: RET Registers (B/C/D/E/H/L/A): 00 02 00 3A 01 DA 3A Flags (Z/S/P/C/AC): 0 0 1 0 1 Stack Pointer: 7A7 Cycles: 790 Interrupt enabled: false Interrupt op: ------------------- :Instructions Ran: 87 Program Counter: 0153 Memory Immediate: 0xC9 Instruction: RET Registers (B/C/D/E/H/L/A): 00 02 00 3A 01 DA 3A Flags (Z/S/P/C/AC): 0 0 1 0 1 Stack Pointer: 7A9 Cycles: 800 Interrupt enabled: false Interrupt op: ------------------- Instructions Ran: 88 Program Counter: 0698 Memory Immediate: 0xC3 Instruction: JMP adr 0 0 Registers (B/C/D/E/H/L/A): 00 02 00 3A 01 DA 3A Flags (Z/S/P/C/AC): 0 0 1 0 1 Stack Pointer: 7AB Cycles: 810 Interrupt enabled: false Interrupt op: ------------------- Instructions Ran: 89 Program Counter: 0000 Memory Immediate: 0x00 Instruction: NOP Registers (B/C/D/E/H/L/A): 00 02 00 3A 01 DA 3A Flags (Z/S/P/C/AC): 0 0 1 0 1 Stack Pointer: 7AB Cycles: 820 Interrupt enabled: false Interrupt op: ------------------- JMP to 0000 from 0x698 I'm new to emulating so could anyone give me a hint or point me in the right direction on how to debug this? Edit: code https://github.com/hydratedcabbage/space-invaders