sjmulder / z80

A Z80 emulator study in C++

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Z80

A Z80 emulator study in C++. By Sijmen Mulder ik@sjmulder.nl.

Input:

int main()
{
	Z80 cpu;
	cpu.ram() = {
		JR, 0x0C,                     //  -+
		'H', 'e', 'l', 'l', 'o', ' ', //   |
		'W', 'o', 'r', 'l', 'd', '!', //   |
		                              //   |
		// calculate 3 * 4            //   |
		EXT_FD, FD_LD_A_imm, 0x00,    // <-+
		EXT_DD, DD_LD_B_imm, 0x04,
		EXT_DD, DD_LD_C_imm, 0x03,
		ADD_A_C,                      // <-+
		DJNZ, 0xFD,                   //  -+

		XOR_A_imm, 0xFF,
	
		NOOP
	};
}

Output:

A: 0x00  F: 0x00  A': 0x00  F': 0x00
B: 0x00  C: 0x00  B': 0x00  C': 0x00
D: 0x00  E: 0x00  D': 0x00  E': 0x00
H: 0x00  L: 0x00  H': 0x00  L': 0x00
I: 0x00  R: 0x00
IX: 0x0000
IY: 0x0000
SP: 0x0000
PC: 0x0000
S: 0  Z: 0  H: 0  PV: 0  N: 0  C: 0

> jr 0x0c

// ...

> djnz 0xfd

A: 0x09  F: 0x08  A': 0x00  F': 0x00
B: 0x01  C: 0x03  B': 0x00  C': 0x00
D: 0x00  E: 0x00  D': 0x00  E': 0x00
H: 0x00  L: 0x00  H': 0x00  L': 0x00
I: 0x00  R: 0x00
IX: 0x0000
IY: 0x0000
SP: 0x0000
PC: 0x0017
S: 0  Z: 0  H: 1  PV: 0  N: 0  C: 0

> add a, c

A: 0x0c  F: 0x08  A': 0x00  F': 0x00
B: 0x01  C: 0x03  B': 0x00  C': 0x00
D: 0x00  E: 0x00  D': 0x00  E': 0x00
H: 0x00  L: 0x00  H': 0x00  L': 0x00
I: 0x00  R: 0x00
IX: 0x0000
IY: 0x0000
SP: 0x0000
PC: 0x0018
S: 0  Z: 0  H: 1  PV: 0  N: 0  C: 0

> djnz 0xfd

A: 0x0c  F: 0x08  A': 0x00  F': 0x00
B: 0x00  C: 0x03  B': 0x00  C': 0x00
D: 0x00  E: 0x00  D': 0x00  E': 0x00
H: 0x00  L: 0x00  H': 0x00  L': 0x00
I: 0x00  R: 0x00
IX: 0x0000
IY: 0x0000
SP: 0x0000
PC: 0x001a
S: 0  Z: 0  H: 1  PV: 0  N: 0  C: 0

> xor a, 0xff

A: 0xf3  F: 0x84  A': 0x00  F': 0x00
B: 0x00  C: 0x03  B': 0x00  C': 0x00
D: 0x00  E: 0x00  D': 0x00  E': 0x00
H: 0x00  L: 0x00  H': 0x00  L': 0x00
I: 0x00  R: 0x00
IX: 0x0000
IY: 0x0000
SP: 0x0000
PC: 0x001c
S: 1  Z: 0  H: 0  PV: 1  N: 0  C: 0

> noop

About

A Z80 emulator study in C++


Languages

Language:C++ 100.0%