diff --git a/sm83/tests/data/adc_a_n8.toml b/sm83/tests/data/adc_a_n8.toml new file mode 100644 index 0000000..f91c37c --- /dev/null +++ b/sm83/tests/data/adc_a_n8.toml @@ -0,0 +1,72 @@ +[no_carry] +cycles = 8 + +[no_carry.entry_state] +a = 0x12 +flags = ['Z', 'N', 'C', 'H'] + +[no_carry.exit_state] +a = 0xF7 +flags = [] +pc = 2 + +[no_carry.program] +instructions = [ + 0xCE, # adc a, 0xE4 + 0xE4, +] + + +[half_carry] +cycles = 8 + +[half_carry.entry_state] +a = 0x12 +flags = ['Z', 'N', 'C', 'H'] + +[half_carry.exit_state] +a = 0xF2 +flags = ['H'] +pc = 2 + +[half_carry.program] +instructions = [ + 0xCE, # adc a, 0xDF + 0xDF, +] + +[carry] +cycles = 8 + +[carry.entry_state] +a = 0x12 +flags = ['Z', 'N', 'C', 'H'] + +[carry.exit_state] +a = 0x07 +flags = ['C'] +pc = 2 + +[carry.program] +instructions = [ + 0xCE, # adc a, 0xF4 + 0xF4, +] + +[zero] +cycles = 8 + +[zero.entry_state] +a = 0x01 +flags = ['Z', 'N', 'C', 'H'] + +[zero.exit_state] +a = 0x00 +flags = ['C', 'H', 'Z'] +pc = 2 + +[zero.program] +instructions = [ + 0xCE, # adc a, 0xFE + 0xFE, +] diff --git a/sm83/tests/data/add_a_n8.toml b/sm83/tests/data/add_a_n8.toml new file mode 100644 index 0000000..a23a94a --- /dev/null +++ b/sm83/tests/data/add_a_n8.toml @@ -0,0 +1,72 @@ +[no_carry] +cycles = 8 + +[no_carry.entry_state] +a = 0x12 +flags = ['Z', 'N', 'C', 'H'] + +[no_carry.exit_state] +a = 0xF6 +flags = [] +pc = 2 + +[no_carry.program] +instructions = [ + 0xC6, # add a, 0xE4 + 0xE4, +] + + +[half_carry] +cycles = 8 + +[half_carry.entry_state] +a = 0x12 +flags = ['Z', 'N', 'C', 'H'] + +[half_carry.exit_state] +a = 0xF1 +flags = ['H'] +pc = 2 + +[half_carry.program] +instructions = [ + 0xC6, # add a, 0xDF + 0xDF, +] + +[carry] +cycles = 8 + +[carry.entry_state] +a = 0x12 +flags = ['Z', 'N', 'C', 'H'] + +[carry.exit_state] +a = 0x06 +flags = ['C'] +pc = 2 + +[carry.program] +instructions = [ + 0xC6, # add a, 0xF4 + 0xF4, +] + +[zero] +cycles = 8 + +[zero.entry_state] +a = 0x01 +flags = ['Z', 'N', 'C', 'H'] + +[zero.exit_state] +a = 0x00 +flags = ['C', 'H', 'Z'] +pc = 2 + +[zero.program] +instructions = [ + 0xC6, # add a, 0xFF + 0xFF, +] diff --git a/sm83/tests/data/add_sp_e8.toml b/sm83/tests/data/add_sp_e8.toml new file mode 100644 index 0000000..1075dd3 --- /dev/null +++ b/sm83/tests/data/add_sp_e8.toml @@ -0,0 +1,53 @@ +[nominal] +cycles = 16 + +[nominal.entry_state] +sp = 0xFF30 +flags = ['Z', 'N'] + +[nominal.exit_state] +sp = 0xFFAF +pc = 0x2 +flags = [] + +[nominal.program] +instructions = [ + 0xE8, # add SP, +127 + 0x7F +] + +[flags] +cycles = 16 + +[flags.entry_state] +sp = 0xFFC0 +flags = ['Z', 'N'] + +[flags.exit_state] +sp = 0xFF40 +pc = 0x2 +flags = ['C'] + +[flags.program] +instructions = [ + 0xE8, # add SP, -128 + 0x80 +] + +[half_carry] +cycles = 16 + +[half_carry.entry_state] +sp = 0xFF0F +flags = ['Z', 'N'] + +[half_carry.exit_state] +sp = 0xFF10 +pc = 0x2 +flags = ['H'] + +[half_carry.program] +instructions = [ + 0xE8, # add SP, 1 + 0x01 +] diff --git a/sm83/tests/data/and_a_n8.toml b/sm83/tests/data/and_a_n8.toml new file mode 100644 index 0000000..8311901 --- /dev/null +++ b/sm83/tests/data/and_a_n8.toml @@ -0,0 +1,35 @@ +[non_zero] +cycles = 8 + +[non_zero.entry_state] +a = 0xF0 +flags = ['Z', 'C', 'H'] + +[non_zero.exit_state] +a = 0x50 +flags = ['H'] +pc = 2 + +[non_zero.program] +instructions = [ + 0xE6, # and a, 0x5F + 0x5F +] + +[zero] +cycles = 8 + +[zero.entry_state] +a = 0xA5 +flags = ['C'] + +[zero.exit_state] +a = 0x00 +flags = ['Z', 'H'] +pc = 2 + +[zero.program] +instructions = [ + 0xE6, # and a, 0x5A + 0x5A +] diff --git a/sm83/tests/data/call_a16.toml b/sm83/tests/data/call_a16.toml new file mode 100644 index 0000000..6fa5687 --- /dev/null +++ b/sm83/tests/data/call_a16.toml @@ -0,0 +1,41 @@ +[call1] +cycles = 24 + +[call1.entry_state] +pc = 0x4054 +sp = 0x8012 +flags = ['Z', 'N', 'C', 'H'] + +[call1.exit_state] +sp = 0x8010 +pc = 0x1234 +memory = { 0x8010 = [0x57, 0x40] } +flags = ['Z', 'N', 'C', 'H'] + +[call1.program] +base = 0x4054 +instructions = [ + 0xCD, # call 0x1234 + 0x34, + 0x12, +] + +[call2] +cycles = 24 + +[call2.entry_state] +pc = 0x4054 +sp = 0x8012 + +[call2.exit_state] +sp = 0x8010 +pc = 0x1234 +memory = { 0x8010 = [0x57, 0x40] } + +[call2.program] +base = 0x4054 +instructions = [ + 0xCD, # call 0x1234 + 0x34, + 0x12, +] diff --git a/sm83/tests/data/call_c_a16.toml b/sm83/tests/data/call_c_a16.toml new file mode 100644 index 0000000..33e71b3 --- /dev/null +++ b/sm83/tests/data/call_c_a16.toml @@ -0,0 +1,40 @@ +[taken] +cycles = 24 + +[taken.entry_state] +pc = 0x4054 +sp = 0x8012 +flags = ['C'] + +[taken.exit_state] +sp = 0x8010 +pc = 0x1234 +memory = { 0x8010 = [0x57, 0x40] } +flags = ['C'] + +[taken.program] +base = 0x4054 +instructions = [ + 0xDC, # call C, 0x1234 + 0x34, + 0x12, +] + +[not_taken] +cycles = 12 + +[not_taken.entry_state] +sp = 0x8012 +pc = 0x4054 + +[not_taken.exit_state] +sp = 0x8012 +pc = 0x4057 + +[not_taken.program] +base = 0x4054 +instructions = [ + 0xDC, # call C, 0x1234 + 0x34, + 0x12, +] diff --git a/sm83/tests/data/call_nc_a16.toml b/sm83/tests/data/call_nc_a16.toml new file mode 100644 index 0000000..e560f4a --- /dev/null +++ b/sm83/tests/data/call_nc_a16.toml @@ -0,0 +1,40 @@ +[taken] +cycles = 24 + +[taken.entry_state] +pc = 0x4054 +sp = 0x8012 + +[taken.exit_state] +sp = 0x8010 +pc = 0x1234 +memory = { 0x8010 = [0x57, 0x40] } + +[taken.program] +base = 0x4054 +instructions = [ + 0xD4, # call NC, 0x1234 + 0x34, + 0x12, +] + +[not_taken] +cycles = 12 + +[not_taken.entry_state] +sp = 0x8012 +pc = 0x4054 +flags = ['C'] + +[not_taken.exit_state] +sp = 0x8012 +pc = 0x4057 +flags = ['C'] + +[not_taken.program] +base = 0x4054 +instructions = [ + 0xD4, # call NC, 0x1234 + 0x34, + 0x12, +] diff --git a/sm83/tests/data/call_nz_a16.toml b/sm83/tests/data/call_nz_a16.toml new file mode 100644 index 0000000..c502ce7 --- /dev/null +++ b/sm83/tests/data/call_nz_a16.toml @@ -0,0 +1,40 @@ +[taken] +cycles = 24 + +[taken.entry_state] +pc = 0x4054 +sp = 0x8012 + +[taken.exit_state] +sp = 0x8010 +pc = 0x1234 +memory = { 0x8010 = [0x57, 0x40] } + +[taken.program] +base = 0x4054 +instructions = [ + 0xC4, # call NZ, 0x1234 + 0x34, + 0x12, +] + +[not_taken] +cycles = 12 + +[not_taken.entry_state] +sp = 0x8012 +pc = 0x4054 +flags = ['Z'] + +[not_taken.exit_state] +sp = 0x8012 +pc = 0x4057 +flags = ['Z'] + +[not_taken.program] +base = 0x4054 +instructions = [ + 0xC4, # call NZ, 0x1234 + 0x34, + 0x12, +] diff --git a/sm83/tests/data/call_z_a16.toml b/sm83/tests/data/call_z_a16.toml new file mode 100644 index 0000000..3f1b901 --- /dev/null +++ b/sm83/tests/data/call_z_a16.toml @@ -0,0 +1,40 @@ +[taken] +cycles = 24 + +[taken.entry_state] +pc = 0x4054 +sp = 0x8012 +flags = ['Z'] + +[taken.exit_state] +sp = 0x8010 +pc = 0x1234 +memory = { 0x8010 = [0x57, 0x40] } +flags = ['Z'] + +[taken.program] +base = 0x4054 +instructions = [ + 0xCC, # call Z, 0x1234 + 0x34, + 0x12, +] + +[not_taken] +cycles = 12 + +[not_taken.entry_state] +sp = 0x8012 +pc = 0x4054 + +[not_taken.exit_state] +sp = 0x8012 +pc = 0x4057 + +[not_taken.program] +base = 0x4054 +instructions = [ + 0xCC, # call Z, 0x1234 + 0x34, + 0x12, +] diff --git a/sm83/tests/data/cp_a_n8.toml b/sm83/tests/data/cp_a_n8.toml new file mode 100644 index 0000000..5e68043 --- /dev/null +++ b/sm83/tests/data/cp_a_n8.toml @@ -0,0 +1,71 @@ +[no_carry] +cycles = 8 + +[no_carry.entry_state] +a = 0xFE +flags = ['Z', 'C', 'H'] + +[no_carry.exit_state] +a = 0xFE +flags = ['N'] +pc = 2 + +[no_carry.program] +instructions = [ + 0xFE, # cp a, 0x11 + 0x11 +] + +[half_carry] +cycles = 8 + +[half_carry.entry_state] +a = 0xF2 +flags = [] + +[half_carry.exit_state] +a = 0xF2 +flags = ['N', 'H'] +pc = 2 + +[half_carry.program] +instructions = [ + 0xFE, # cp a, 0x13 + 0x13 +] + +[carry] +cycles = 8 + +[carry.entry_state] +a = 0x00 +flags = [] + +[carry.exit_state] +a = 0x00 +flags = ['N', 'H', 'C'] +pc = 2 + +[carry.program] +instructions = [ + 0xFE, # cp a, 0x01 + 0x01 +] + +[zero] +cycles = 8 + +[zero.entry_state] +a = 0x01 +flags = [] + +[zero.exit_state] +a = 0x01 +flags = ['N', 'Z'] +pc = 2 + +[zero.program] +instructions = [ + 0xFE, # cp a, 0x01 + 0x01 +] diff --git a/sm83/tests/data/di.toml b/sm83/tests/data/di.toml new file mode 100644 index 0000000..e341325 --- /dev/null +++ b/sm83/tests/data/di.toml @@ -0,0 +1,14 @@ +[test] +cycles = 4 + +[test.entry_state] +irq_en = true + +[test.exit_state] +irq_en = false +pc = 0x1 + +[test.program] +instructions = [ + 0xF3, # di +] diff --git a/sm83/tests/data/ei.toml b/sm83/tests/data/ei.toml new file mode 100644 index 0000000..be7b349 --- /dev/null +++ b/sm83/tests/data/ei.toml @@ -0,0 +1,14 @@ +[test] +cycles = 4 + +[test.entry_state] +irq_en = false + +[test.exit_state] +irq_en = true +pc = 0x1 + +[test.program] +instructions = [ + 0xFB, # ei +] diff --git a/sm83/tests/data/jp_a16.toml b/sm83/tests/data/jp_a16.toml new file mode 100644 index 0000000..8b8c0a2 --- /dev/null +++ b/sm83/tests/data/jp_a16.toml @@ -0,0 +1,31 @@ +[taken] +cycles = 16 + +[taken.entry_state] + +[taken.exit_state] +pc = 0x1234 + +[taken.program] +instructions = [ + 0xC3, # jp 0x1234 + 0x34, + 0x12, +] + +[taken2] +cycles = 16 + +[taken2.entry_state] +flags = ['N', 'H', 'Z', 'C'] + +[taken2.exit_state] +flags = ['N', 'H', 'Z', 'C'] +pc = 0x1234 + +[taken2.program] +instructions = [ + 0xC3, # jp 0x1234 + 0x34, + 0x12, +] diff --git a/sm83/tests/data/jp_c_a16.toml b/sm83/tests/data/jp_c_a16.toml new file mode 100644 index 0000000..1665757 --- /dev/null +++ b/sm83/tests/data/jp_c_a16.toml @@ -0,0 +1,31 @@ +[taken] +cycles = 16 + +[taken.entry_state] +flags = ['C'] + +[taken.exit_state] +flags = ['C'] +pc = 0x1234 + +[taken.program] +instructions = [ + 0xDA, # jp C, 0x1234 + 0x34, + 0x12, +] + +[not_taken] +cycles = 12 + +[not_taken.entry_state] + +[not_taken.exit_state] +pc = 0x3 + +[not_taken.program] +instructions = [ + 0xDA, # jp C, 0x1234 + 0x34, + 0x12, +] diff --git a/sm83/tests/data/jp_hl.toml b/sm83/tests/data/jp_hl.toml new file mode 100644 index 0000000..95ceedf --- /dev/null +++ b/sm83/tests/data/jp_hl.toml @@ -0,0 +1,16 @@ +[test] +cycles = 4 + +[test.entry_state] +h = 0x12 +l = 0x34 + +[test.exit_state] +h = 0x12 +l = 0x34 +pc = 0x1234 + +[test.program] +instructions = [ + 0xE9, # jp HL +] diff --git a/sm83/tests/data/jp_nc_a16.toml b/sm83/tests/data/jp_nc_a16.toml new file mode 100644 index 0000000..8c1724b --- /dev/null +++ b/sm83/tests/data/jp_nc_a16.toml @@ -0,0 +1,31 @@ +[taken] +cycles = 16 + +[taken.entry_state] + +[taken.exit_state] +pc = 0x1234 + +[taken.program] +instructions = [ + 0xC2, # jp NZ, 0x1234 + 0x34, + 0x12, +] + +[not_taken] +cycles = 12 + +[not_taken.entry_state] +flags = ['C'] + +[not_taken.exit_state] +pc = 0x3 +flags = ['C'] + +[not_taken.program] +instructions = [ + 0xD2, # jp NC, 0x1234 + 0x34, + 0x12, +] diff --git a/sm83/tests/data/jp_nz_a16.toml b/sm83/tests/data/jp_nz_a16.toml new file mode 100644 index 0000000..22e6907 --- /dev/null +++ b/sm83/tests/data/jp_nz_a16.toml @@ -0,0 +1,31 @@ +[taken] +cycles = 16 + +[taken.entry_state] + +[taken.exit_state] +pc = 0x1234 + +[taken.program] +instructions = [ + 0xC2, # jp NZ, 0x1234 + 0x34, + 0x12, +] + +[not_taken] +cycles = 12 + +[not_taken.entry_state] +flags = ['Z'] + +[not_taken.exit_state] +pc = 0x3 +flags = ['Z'] + +[not_taken.program] +instructions = [ + 0xC2, # jp NZ, 0x1234 + 0x34, + 0x12, +] diff --git a/sm83/tests/data/jp_z_a16.toml b/sm83/tests/data/jp_z_a16.toml new file mode 100644 index 0000000..b0088b6 --- /dev/null +++ b/sm83/tests/data/jp_z_a16.toml @@ -0,0 +1,31 @@ +[taken] +cycles = 16 + +[taken.entry_state] +flags = ['Z'] + +[taken.exit_state] +flags = ['Z'] +pc = 0x1234 + +[taken.program] +instructions = [ + 0xCA, # jp Z, 0x1234 + 0x34, + 0x12, +] + +[not_taken] +cycles = 12 + +[not_taken.entry_state] + +[not_taken.exit_state] +pc = 0x3 + +[not_taken.program] +instructions = [ + 0xCA, # jp Z, 0x1234 + 0x34, + 0x12, +] diff --git a/sm83/tests/data/ld_a_ind_a16.toml b/sm83/tests/data/ld_a_ind_a16.toml new file mode 100644 index 0000000..8004e7d --- /dev/null +++ b/sm83/tests/data/ld_a_ind_a16.toml @@ -0,0 +1,37 @@ +[move-nonzero] +cycles = 16 + +[move-nonzero.entry_state] +memory = { 0x1234 = [ 130,] } +a = 0 + +[move-nonzero.exit_state] +a = 130 +pc = 3 +memory = { 0x1234 = [ 130,] } + +[move-nonzero.program] +instructions = [ + 0xFA, # ld a, [0x1234] + 0x34, + 0x12 +] + +[move-zero] +cycles = 16 + +[move-zero.entry_state] +a = 130 +memory = { 0x1234 = [ 0 ] } + +[move-zero.exit_state] +a = 0 +pc = 3 +memory = { 0x1234 = [ 0 ] } + +[move-zero.program] +instructions = [ + 0xFA, # ld a, [0x1234] + 0x34, + 0x12 +] diff --git a/sm83/tests/data/ld_a_ind_c.toml b/sm83/tests/data/ld_a_ind_c.toml new file mode 100644 index 0000000..58b0f52 --- /dev/null +++ b/sm83/tests/data/ld_a_ind_c.toml @@ -0,0 +1,40 @@ +[test] +cycles = 8 + +[test.entry_state] +c = 0xBB +flags = ['Z', 'C', 'H', 'N'] +memory = { 0xFFBB = [0xF3] } + +[test.exit_state] +a = 0xF3 +c = 0xBB +pc = 0x1 +flags = ['Z', 'C', 'H', 'N'] +memory = { 0xFFBB = [0xF3] } + +[test.program] +instructions = [ + 0xF2, # ld A, [C] +] + +# Check with opposite flag values. Check that they are not modified +[test2] +cycles = 8 + +[test2.entry_state] +c = 0xAA +flags = [] +memory = { 0xFFAA = [0x12] } + +[test2.exit_state] +a = 0x12 +c = 0xAA +pc = 0x1 +flags = [] +memory = { 0xFFAA = [0x12] } + +[test2.program] +instructions = [ + 0xF2, # ld A, [C] +] diff --git a/sm83/tests/data/ld_hl_sp_e8.toml b/sm83/tests/data/ld_hl_sp_e8.toml new file mode 100644 index 0000000..abbe2fc --- /dev/null +++ b/sm83/tests/data/ld_hl_sp_e8.toml @@ -0,0 +1,39 @@ +[positive_offset] +cycles = 12 + +[positive_offset.entry_state] +sp = 0x1204 +flags = ['N', 'Z'] + +[positive_offset.exit_state] +sp = 0x1204 +h = 0x12 +l = 0x83 +pc = 2 +flags = ['H'] + +[positive_offset.program] +instructions = [ + 0xF8, # ld HL, +127 + 0x7f, +] + +[negative_offset] +cycles = 12 + +[negative_offset.entry_state] +sp = 0x1294 +flags = ['N', 'Z'] + +[negative_offset.exit_state] +sp = 0x1294 +h = 0x12 +l = 0x14 +pc = 2 +flags = ['C'] + +[negative_offset.program] +instructions = [ + 0xF8, # ld HL, -128 + 0x80, +] diff --git a/sm83/tests/data/ld_ind_a16_a.toml b/sm83/tests/data/ld_ind_a16_a.toml new file mode 100644 index 0000000..3ef9cb3 --- /dev/null +++ b/sm83/tests/data/ld_ind_a16_a.toml @@ -0,0 +1,36 @@ +[move-nonzero] +cycles = 16 + +[move-nonzero.entry_state] +a = 130 + +[move-nonzero.exit_state] +a = 130 +pc = 3 +memory = { 0x1234 = [ 130,] } + +[move-nonzero.program] +instructions = [ + 0xEA, # ld [0x1234], a + 0x34, + 0x12 +] + +[move-zero] +cycles = 16 + +[move-zero.entry_state] +a = 0 +memory = { 0x1234 = [ 130 ] } + +[move-zero.exit_state] +a = 0 +pc = 3 +memory = { 0x1234 = [ 0 ] } + +[move-zero.program] +instructions = [ + 0xEA, # ld [0x1234], a + 0x34, + 0x12 +] diff --git a/sm83/tests/data/ld_ind_c_a.toml b/sm83/tests/data/ld_ind_c_a.toml new file mode 100644 index 0000000..9e45483 --- /dev/null +++ b/sm83/tests/data/ld_ind_c_a.toml @@ -0,0 +1,36 @@ +[move-nonzero] +cycles = 8 + +[move-nonzero.entry_state] +a = 0x43 +c = 0x12 + +[move-nonzero.exit_state] +a = 0x43 +c = 0x12 +pc = 1 +memory = {0xFF12 = [0x43]} + +[move-nonzero.program] +instructions = [ + 0xE2, # ld [c], a +] + +[move-zero] +cycles = 8 + +[move-zero.entry_state] +a = 0x0 +c = 0x12 +memory = {0xFF12 = [0x43]} + +[move-zero.exit_state] +a = 0x0 +c = 0x12 +pc = 1 +memory = {0xFF12 = [0x00]} + +[move-zero.program] +instructions = [ + 0xE2, # ld [c], a +] diff --git a/sm83/tests/data/ld_sp_hl.toml b/sm83/tests/data/ld_sp_hl.toml new file mode 100644 index 0000000..943c166 --- /dev/null +++ b/sm83/tests/data/ld_sp_hl.toml @@ -0,0 +1,18 @@ +[test] +cycles = 8 + +[test.entry_state] +h = 0x12 +l = 0x34 +sp = 0x8224 + +[test.exit_state] +h = 0x12 +l = 0x34 +sp = 0x1234 +pc = 0x01 + +[test.program] +instructions = [ + 0xF9, # ld SP, HL +] diff --git a/sm83/tests/data/ldh_a8_a.toml b/sm83/tests/data/ldh_a8_a.toml new file mode 100644 index 0000000..485a271 --- /dev/null +++ b/sm83/tests/data/ldh_a8_a.toml @@ -0,0 +1,32 @@ +[move-nonzero] +cycles = 12 + +[move-nonzero.entry_state] +a = 130 + +[move-nonzero.exit_state] +a = 130 +pc = 2 +memory = {0xFFE3 = [130]} + +[move-nonzero.program] +instructions = [ + 0xE0, # ldh [0xFFE3], a + 0xE3 +] + +[move-zero] +cycles = 12 + +[move-zero.entry_state] +memory = {0xFFE3 = [130]} + +[move-zero.exit_state] +pc = 2 +memory = {0xFFE3 = [0]} + +[move-zero.program] +instructions = [ + 0xE0, # ldh [0xFFE3], a + 0xE3 +] diff --git a/sm83/tests/data/ldh_a_a8.toml b/sm83/tests/data/ldh_a_a8.toml new file mode 100644 index 0000000..eddbee0 --- /dev/null +++ b/sm83/tests/data/ldh_a_a8.toml @@ -0,0 +1,37 @@ +[move-nonzero] +cycles = 12 + +[move-nonzero.entry_state] +a = 0 +pc = 0 +memory = {0xFFE3 = [130]} + +[move-nonzero.exit_state] +a = 130 +pc = 2 +memory = {0xFFE3 = [130]} + +[move-nonzero.program] +instructions = [ + 0xF0, # ldh a, [0xFFE3] + 0xE3 +] + +[move-zero] +cycles = 12 + +[move-zero.entry_state] +a = 130 +pc = 0 +memory = {0xFFE3 = [0]} + +[move-zero.exit_state] +a = 0 +pc = 2 +memory = {0xFFE3 = [0]} + +[move-zero.program] +instructions = [ + 0xF0, # ldh a, [0xFFE3] + 0xE3 +] diff --git a/sm83/tests/data/or_a_n8.toml b/sm83/tests/data/or_a_n8.toml new file mode 100644 index 0000000..b7e28e8 --- /dev/null +++ b/sm83/tests/data/or_a_n8.toml @@ -0,0 +1,35 @@ +[non_zero] +cycles = 8 + +[non_zero.entry_state] +a = 0x60 +flags = ['Z', 'C', 'H'] + +[non_zero.exit_state] +a = 0x7F +flags = [] +pc = 2 + +[non_zero.program] +instructions = [ + 0xf6, # or a, 0x5F + 0x5F +] + +[zero] +cycles = 8 + +[zero.entry_state] +a = 0x00 +flags = ['C'] + +[zero.exit_state] +a = 0x00 +flags = ['Z'] +pc = 2 + +[zero.program] +instructions = [ + 0xf6, # or a, 0x00 + 0x00 +] diff --git a/sm83/tests/data/pop_af.toml b/sm83/tests/data/pop_af.toml new file mode 100644 index 0000000..33f017b --- /dev/null +++ b/sm83/tests/data/pop_af.toml @@ -0,0 +1,109 @@ +[test] +cycles = 12 + +[test.entry_state] +a = 0x00 +sp = 0x1234 +pc = 0 +memory = { 0x1234 = [0x0F, 0x5F] } +flags = [] + +[test.exit_state] +a = 0x5f +sp = 0x1236 +pc = 1 +memory = { 0x1234 = [0x0F, 0x5F] } +flags = [] + +[test.program] +instructions = [ + 0xF1, # pop af +] + +[zero] +cycles = 12 + +[zero.entry_state] +a = 0x00 +sp = 0x1234 +pc = 0 +memory = { 0x1234 = [0x80, 0x5F] } +flags = [] + +[zero.exit_state] +a = 0x5f +sp = 0x1236 +pc = 1 +memory = { 0x1234 = [0x80, 0x5F] } +flags = ['Z'] + +[zero.program] +instructions = [ + 0xF1, # pop af +] + +[sub_flag] +cycles = 12 + +[sub_flag.entry_state] +a = 0x00 +sp = 0x1234 +pc = 0 +memory = { 0x1234 = [0x40, 0x5F] } +flags = [] + +[sub_flag.exit_state] +a = 0x5f +sp = 0x1236 +pc = 1 +memory = { 0x1234 = [0x40, 0x5F] } +flags = ['N'] + +[sub_flag.program] +instructions = [ + 0xF1, # pop af +] + +[half_carry] +cycles = 12 + +[half_carry.entry_state] +a = 0x00 +sp = 0x1234 +pc = 0 +memory = { 0x1234 = [0x20, 0x5F] } +flags = [] + +[half_carry.exit_state] +a = 0x5f +sp = 0x1236 +pc = 1 +memory = { 0x1234 = [0x20, 0x5F] } +flags = ['H'] + +[half_carry.program] +instructions = [ + 0xF1, # pop af +] + +[carry] +cycles = 12 + +[carry.entry_state] +a = 0x00 +sp = 0x1234 +pc = 0 +memory = { 0x1234 = [0x10, 0x5F] } +flags = [] + +[carry.exit_state] +a = 0x5f +sp = 0x1236 +pc = 1 +memory = { 0x1234 = [0x10, 0x5F] } +flags = ['C'] + +[carry.program] +instructions = [ + 0xF1, # pop af +] diff --git a/sm83/tests/data/pop_bc.toml b/sm83/tests/data/pop_bc.toml new file mode 100644 index 0000000..defe3bb --- /dev/null +++ b/sm83/tests/data/pop_bc.toml @@ -0,0 +1,18 @@ +[test] +cycles = 12 + +[test.entry_state] +sp = 0x1234 +memory = { 0x1234 = [0x43, 0x5F] } + +[test.exit_state] +sp = 0x1236 +b = 0x5f +c = 0x43 +pc = 1 +memory = { 0x1234 = [0x43, 0x5F] } + +[test.program] +instructions = [ + 0xC1, # pop bc +] diff --git a/sm83/tests/data/pop_de.toml b/sm83/tests/data/pop_de.toml new file mode 100644 index 0000000..e2a0e74 --- /dev/null +++ b/sm83/tests/data/pop_de.toml @@ -0,0 +1,18 @@ +[test] +cycles = 12 + +[test.entry_state] +sp = 0x1234 +memory = { 0x1234 = [0x43, 0x5F] } + +[test.exit_state] +sp = 0x1236 +d = 0x5f +e = 0x43 +pc = 1 +memory = { 0x1234 = [0x43, 0x5F] } + +[test.program] +instructions = [ + 0xD1, # pop de +] diff --git a/sm83/tests/data/pop_hl.toml b/sm83/tests/data/pop_hl.toml new file mode 100644 index 0000000..67451b6 --- /dev/null +++ b/sm83/tests/data/pop_hl.toml @@ -0,0 +1,18 @@ +[test] +cycles = 12 + +[test.entry_state] +sp = 0x1234 +memory = { 0x1234 = [0x43, 0x5F] } + +[test.exit_state] +sp = 0x1236 +h = 0x5f +l = 0x43 +pc = 1 +memory = { 0x1234 = [0x43, 0x5F] } + +[test.program] +instructions = [ + 0xE1, # pop hl +] diff --git a/sm83/tests/data/push_af.toml b/sm83/tests/data/push_af.toml new file mode 100644 index 0000000..8e3ce35 --- /dev/null +++ b/sm83/tests/data/push_af.toml @@ -0,0 +1,97 @@ +[no_flags] +cycles = 16 + +[no_flags.entry_state] +a = 0x12 +sp = 0x8012 + +[no_flags.exit_state] +a = 0x12 +sp = 0x8010 +pc = 1 +memory = { 0x8010 = [0x00, 0x12] } + +[no_flags.program] +instructions = [ + 0xF5, # push af +] + +[zero_flag] +cycles = 16 + +[zero_flag.entry_state] +a = 0x12 +sp = 0x8012 +flags = ['Z'] + +[zero_flag.exit_state] +a = 0x12 +sp = 0x8010 +pc = 1 +flags = ['Z'] +memory = { 0x8010 = [0x80, 0x12] } + +[zero_flag.program] +instructions = [ + 0xF5, # push af +] + +[sub_flag] +cycles = 16 + +[sub_flag.entry_state] +a = 0x12 +sp = 0x8012 +flags = ['N'] + +[sub_flag.exit_state] +a = 0x12 +sp = 0x8010 +pc = 1 +flags = ['N'] +memory = { 0x8010 = [0x40, 0x12] } + +[sub_flag.program] +instructions = [ + 0xF5, # push af +] + +[half_carry] +cycles = 16 + +[half_carry.entry_state] +a = 0x12 +sp = 0x8012 +flags = ['H'] + +[half_carry.exit_state] +a = 0x12 +sp = 0x8010 +pc = 1 +flags = ['H'] +memory = { 0x8010 = [0x20, 0x12] } + +[half_carry.program] +instructions = [ + 0xF5, # push af +] + +[carry] +cycles = 16 + +[carry.entry_state] +a = 0x12 +sp = 0x8012 +flags = ['C'] + +[carry.exit_state] +a = 0x12 +sp = 0x8010 +pc = 1 +flags = ['C'] +memory = { 0x8010 = [0x10, 0x12] } + +[carry.program] +instructions = [ + 0xF5, # push af +] diff --git a/sm83/tests/data/push_bc.toml b/sm83/tests/data/push_bc.toml new file mode 100644 index 0000000..6e883a9 --- /dev/null +++ b/sm83/tests/data/push_bc.toml @@ -0,0 +1,19 @@ +[push] +cycles = 16 + +[push.entry_state] +b = 0x12 +c = 0x65 +sp = 0x8012 + +[push.exit_state] +b = 0x12 +c = 0x65 +sp = 0x8010 +pc = 1 +memory = { 0x8010 = [0x65, 0x12] } + +[push.program] +instructions = [ + 0xC5, # push bc +] diff --git a/sm83/tests/data/push_de.toml b/sm83/tests/data/push_de.toml new file mode 100644 index 0000000..3ac5c1a --- /dev/null +++ b/sm83/tests/data/push_de.toml @@ -0,0 +1,19 @@ +[push] +cycles = 16 + +[push.entry_state] +d = 0x12 +e = 0x65 +sp = 0x8012 + +[push.exit_state] +d = 0x12 +e = 0x65 +sp = 0x8010 +pc = 1 +memory = { 0x8010 = [0x65, 0x12] } + +[push.program] +instructions = [ + 0xD5, # push de +] diff --git a/sm83/tests/data/push_hl.toml b/sm83/tests/data/push_hl.toml new file mode 100644 index 0000000..bfbe9f5 --- /dev/null +++ b/sm83/tests/data/push_hl.toml @@ -0,0 +1,19 @@ +[push] +cycles = 16 + +[push.entry_state] +h = 0x12 +l = 0x65 +sp = 0x8012 + +[push.exit_state] +h = 0x12 +l = 0x65 +sp = 0x8010 +pc = 1 +memory = { 0x8010 = [0x65, 0x12] } + +[push.program] +instructions = [ + 0xE5, # push hl +] diff --git a/sm83/tests/data/ret.toml b/sm83/tests/data/ret.toml new file mode 100644 index 0000000..91a5127 --- /dev/null +++ b/sm83/tests/data/ret.toml @@ -0,0 +1,35 @@ +[ret1] +cycles = 16 + +[ret1.entry_state] +sp = 0x1234 +memory = { 0x1234 = [0x43, 0x5F] } +flags = ['Z', 'N', 'H', 'C'] + +[ret1.exit_state] +sp = 0x1236 +pc = 0x5F43 +memory = { 0x1234 = [0x43, 0x5F] } +flags = ['Z', 'N', 'H', 'C'] + +[ret1.program] +instructions = [ + 0xC9, # ret +] + +[ret2] +cycles = 16 + +[ret2.entry_state] +sp = 0x1234 +memory = { 0x1234 = [0x43, 0x5F] } + +[ret2.exit_state] +sp = 0x1236 +pc = 0x5F43 +memory = { 0x1234 = [0x43, 0x5F] } + +[ret2.program] +instructions = [ + 0xC9, # ret +] diff --git a/sm83/tests/data/ret_c.toml b/sm83/tests/data/ret_c.toml new file mode 100644 index 0000000..55d7ef6 --- /dev/null +++ b/sm83/tests/data/ret_c.toml @@ -0,0 +1,35 @@ +[taken] +cycles = 20 + +[taken.entry_state] +sp = 0x1234 +memory = { 0x1234 = [0x43, 0x5F] } +flags = ['C'] + +[taken.exit_state] +sp = 0x1236 +pc = 0x5F43 +memory = { 0x1234 = [0x43, 0x5F] } +flags = ['C'] + +[taken.program] +instructions = [ + 0xD8, # ret C +] + +[not_taken] +cycles = 8 + +[not_taken.entry_state] +sp = 0x1234 +memory = { 0x1234 = [0x43, 0x5F] } + +[not_taken.exit_state] +sp = 0x1234 +pc = 0x1 +memory = { 0x1234 = [0x43, 0x5F] } + +[not_taken.program] +instructions = [ + 0xD8, # ret C +] diff --git a/sm83/tests/data/ret_nc.toml b/sm83/tests/data/ret_nc.toml new file mode 100644 index 0000000..6e5d97e --- /dev/null +++ b/sm83/tests/data/ret_nc.toml @@ -0,0 +1,35 @@ +[taken] +cycles = 20 + +[taken.entry_state] +sp = 0x1234 +memory = { 0x1234 = [0x43, 0x5F] } + +[taken.exit_state] +sp = 0x1236 +pc = 0x5F43 +memory = { 0x1234 = [0x43, 0x5F] } + +[taken.program] +instructions = [ + 0xD0, # ret NC +] + +[not_taken] +cycles = 8 + +[not_taken.entry_state] +sp = 0x1234 +flags = ['C'] +memory = { 0x1234 = [0x43, 0x5F] } + +[not_taken.exit_state] +sp = 0x1234 +pc = 0x1 +flags = ['C'] +memory = { 0x1234 = [0x43, 0x5F] } + +[not_taken.program] +instructions = [ + 0xD0, # ret NC +] diff --git a/sm83/tests/data/ret_nz.toml b/sm83/tests/data/ret_nz.toml new file mode 100644 index 0000000..7b7e2e8 --- /dev/null +++ b/sm83/tests/data/ret_nz.toml @@ -0,0 +1,35 @@ +[taken] +cycles = 20 + +[taken.entry_state] +sp = 0x1234 +memory = { 0x1234 = [0x43, 0x5F] } + +[taken.exit_state] +sp = 0x1236 +pc = 0x5F43 +memory = { 0x1234 = [0x43, 0x5F] } + +[taken.program] +instructions = [ + 0xC0, # ret NZ +] + +[not_taken] +cycles = 8 + +[not_taken.entry_state] +sp = 0x1234 +flags = ['Z'] +memory = { 0x1234 = [0x43, 0x5F] } + +[not_taken.exit_state] +sp = 0x1234 +pc = 0x1 +flags = ['Z'] +memory = { 0x1234 = [0x43, 0x5F] } + +[not_taken.program] +instructions = [ + 0xC0, # ret NZ +] diff --git a/sm83/tests/data/ret_z.toml b/sm83/tests/data/ret_z.toml new file mode 100644 index 0000000..bf2cd81 --- /dev/null +++ b/sm83/tests/data/ret_z.toml @@ -0,0 +1,35 @@ +[taken] +cycles = 20 + +[taken.entry_state] +sp = 0x1234 +memory = { 0x1234 = [0x43, 0x5F] } +flags = ['Z'] + +[taken.exit_state] +sp = 0x1236 +pc = 0x5F43 +memory = { 0x1234 = [0x43, 0x5F] } +flags = ['Z'] + +[taken.program] +instructions = [ + 0xC8, # ret Z +] + +[not_taken] +cycles = 8 + +[not_taken.entry_state] +sp = 0x1234 +memory = { 0x1234 = [0x43, 0x5F] } + +[not_taken.exit_state] +sp = 0x1234 +pc = 0x1 +memory = { 0x1234 = [0x43, 0x5F] } + +[not_taken.program] +instructions = [ + 0xC8, # ret Z +] diff --git a/sm83/tests/data/reti.toml b/sm83/tests/data/reti.toml new file mode 100644 index 0000000..a08d346 --- /dev/null +++ b/sm83/tests/data/reti.toml @@ -0,0 +1,37 @@ +[ret1] +cycles = 16 + +[ret1.entry_state] +sp = 0x1234 +memory = { 0x1234 = [0x43, 0x5F] } +flags = ['Z', 'N', 'H', 'C'] + +[ret1.exit_state] +sp = 0x1236 +pc = 0x5F43 +memory = { 0x1234 = [0x43, 0x5F] } +flags = ['Z', 'N', 'H', 'C'] +irq_en = true + +[ret1.program] +instructions = [ + 0xD9, # reti +] + +[ret2] +cycles = 16 + +[ret2.entry_state] +sp = 0x1234 +memory = { 0x1234 = [0x43, 0x5F] } + +[ret2.exit_state] +sp = 0x1236 +pc = 0x5F43 +memory = { 0x1234 = [0x43, 0x5F] } +irq_en = true + +[ret2.program] +instructions = [ + 0xD9, # reti +] diff --git a/sm83/tests/data/rst_0x00.toml b/sm83/tests/data/rst_0x00.toml new file mode 100644 index 0000000..5755a4b --- /dev/null +++ b/sm83/tests/data/rst_0x00.toml @@ -0,0 +1,19 @@ +[rst0x00] +cycles = 16 + +[rst0x00.entry_state] +pc = 0x1234 +sp = 0x8040 +flags = ['Z', 'N', 'C', 'H'] + +[rst0x00.exit_state] +sp = 0x803E +flags = ['Z', 'N', 'C', 'H'] +pc = 0 +memory = { 0x803E = [0x35, 0x12] } + +[rst0x00.program] +base = 0x1234 +instructions = [ + 0xC7, # rst 0x00 +] diff --git a/sm83/tests/data/rst_0x08.toml b/sm83/tests/data/rst_0x08.toml new file mode 100644 index 0000000..7891a2a --- /dev/null +++ b/sm83/tests/data/rst_0x08.toml @@ -0,0 +1,19 @@ +[rst0x08] +cycles = 16 + +[rst0x08.entry_state] +pc = 0x1234 +sp = 0x8040 +flags = ['Z', 'N', 'C', 'H'] + +[rst0x08.exit_state] +sp = 0x803E +flags = ['Z', 'N', 'C', 'H'] +pc = 8 +memory = { 0x803E = [0x35, 0x12] } + +[rst0x08.program] +base = 0x1234 +instructions = [ + 0xCF, # rst 0x08 +] diff --git a/sm83/tests/data/rst_0x10.toml b/sm83/tests/data/rst_0x10.toml new file mode 100644 index 0000000..38a8f6f --- /dev/null +++ b/sm83/tests/data/rst_0x10.toml @@ -0,0 +1,19 @@ +[rst0x10] +cycles = 16 + +[rst0x10.entry_state] +pc = 0x1234 +sp = 0x8040 +flags = ['Z', 'N', 'C', 'H'] + +[rst0x10.exit_state] +sp = 0x803E +flags = ['Z', 'N', 'C', 'H'] +pc = 0x10 +memory = { 0x803E = [0x35, 0x12] } + +[rst0x10.program] +base = 0x1234 +instructions = [ + 0xD7, # rst 0x10 +] diff --git a/sm83/tests/data/rst_0x18.toml b/sm83/tests/data/rst_0x18.toml new file mode 100644 index 0000000..db1e08e --- /dev/null +++ b/sm83/tests/data/rst_0x18.toml @@ -0,0 +1,19 @@ +[rst0x18] +cycles = 16 + +[rst0x18.entry_state] +pc = 0x1234 +sp = 0x8040 +flags = ['Z', 'N', 'C', 'H'] + +[rst0x18.exit_state] +sp = 0x803E +flags = ['Z', 'N', 'C', 'H'] +pc = 0x18 +memory = { 0x803E = [0x35, 0x12] } + +[rst0x18.program] +base = 0x1234 +instructions = [ + 0xDF, # rst 0x18 +] diff --git a/sm83/tests/data/rst_0x20.toml b/sm83/tests/data/rst_0x20.toml new file mode 100644 index 0000000..f63a803 --- /dev/null +++ b/sm83/tests/data/rst_0x20.toml @@ -0,0 +1,19 @@ +[rst0x20] +cycles = 16 + +[rst0x20.entry_state] +pc = 0x1234 +sp = 0x8040 +flags = ['Z', 'N', 'C', 'H'] + +[rst0x20.exit_state] +sp = 0x803E +flags = ['Z', 'N', 'C', 'H'] +pc = 0x20 +memory = { 0x803E = [0x35, 0x12] } + +[rst0x20.program] +base = 0x1234 +instructions = [ + 0xE7, # rst 0x20 +] diff --git a/sm83/tests/data/rst_0x28.toml b/sm83/tests/data/rst_0x28.toml new file mode 100644 index 0000000..8a9c7fb --- /dev/null +++ b/sm83/tests/data/rst_0x28.toml @@ -0,0 +1,19 @@ +[rst0x28] +cycles = 16 + +[rst0x28.entry_state] +pc = 0x1234 +sp = 0x8040 +flags = ['Z', 'N', 'C', 'H'] + +[rst0x28.exit_state] +sp = 0x803E +flags = ['Z', 'N', 'C', 'H'] +pc = 0x28 +memory = { 0x803E = [0x35, 0x12] } + +[rst0x28.program] +base = 0x1234 +instructions = [ + 0xEF, # rst 0x28 +] diff --git a/sm83/tests/data/rst_0x30.toml b/sm83/tests/data/rst_0x30.toml new file mode 100644 index 0000000..2dfc3b0 --- /dev/null +++ b/sm83/tests/data/rst_0x30.toml @@ -0,0 +1,19 @@ +[rst0x30] +cycles = 16 + +[rst0x30.entry_state] +pc = 0x1234 +sp = 0x8040 +flags = ['Z', 'N', 'C', 'H'] + +[rst0x30.exit_state] +sp = 0x803E +flags = ['Z', 'N', 'C', 'H'] +pc = 0x30 +memory = { 0x803E = [0x35, 0x12] } + +[rst0x30.program] +base = 0x1234 +instructions = [ + 0xF7, # rst 0x30 +] diff --git a/sm83/tests/data/rst_0x38.toml b/sm83/tests/data/rst_0x38.toml new file mode 100644 index 0000000..386ac7a --- /dev/null +++ b/sm83/tests/data/rst_0x38.toml @@ -0,0 +1,19 @@ +[rst0x38] +cycles = 16 + +[rst0x38.entry_state] +pc = 0x1234 +sp = 0x8040 +flags = ['Z', 'N', 'C', 'H'] + +[rst0x38.exit_state] +sp = 0x803E +flags = ['Z', 'N', 'C', 'H'] +pc = 0x38 +memory = { 0x803E = [0x35, 0x12] } + +[rst0x38.program] +base = 0x1234 +instructions = [ + 0xFF, # rst 0x38 +] diff --git a/sm83/tests/data/sbc_a_n8.toml b/sm83/tests/data/sbc_a_n8.toml new file mode 100644 index 0000000..8132624 --- /dev/null +++ b/sm83/tests/data/sbc_a_n8.toml @@ -0,0 +1,71 @@ +[no_carry] +cycles = 8 + +[no_carry.entry_state] +a = 0xFE +flags = ['Z', 'C', 'H'] + +[no_carry.exit_state] +a = 0xEC +flags = ['N'] +pc = 2 + +[no_carry.program] +instructions = [ + 0xDE, # sbc a, 0x11 + 0x11 +] + +[half_carry] +cycles = 8 + +[half_carry.entry_state] +a = 0xF2 +flags = ['C'] + +[half_carry.exit_state] +a = 0xDE +flags = ['N', 'H'] +pc = 2 + +[half_carry.program] +instructions = [ + 0xDE, # sbc a, 0x13 + 0x13 +] + +[carry] +cycles = 8 + +[carry.entry_state] +a = 0x00 +flags = ['C'] + +[carry.exit_state] +a = 0xFE +flags = ['N', 'H', 'C'] +pc = 2 + +[carry.program] +instructions = [ + 0xDE, # sbc a, 0x01 + 0x01 +] + +[zero] +cycles = 8 + +[zero.entry_state] +a = 0x02 +flags = ['C'] + +[zero.exit_state] +a = 0x00 +flags = ['N', 'Z'] +pc = 2 + +[zero.program] +instructions = [ + 0xDE, # sbc a, 0x01 + 0x01 +] diff --git a/sm83/tests/data/sub_a_n8.toml b/sm83/tests/data/sub_a_n8.toml new file mode 100644 index 0000000..7b93dbb --- /dev/null +++ b/sm83/tests/data/sub_a_n8.toml @@ -0,0 +1,71 @@ +[no_carry] +cycles = 8 + +[no_carry.entry_state] +a = 0xFE +flags = ['Z', 'C', 'H'] + +[no_carry.exit_state] +a = 0xED +flags = ['N'] +pc = 2 + +[no_carry.program] +instructions = [ + 0xD6, # sub a, 0x11 + 0x11 +] + +[half_carry] +cycles = 8 + +[half_carry.entry_state] +a = 0xF2 +flags = [] + +[half_carry.exit_state] +a = 0xDF +flags = ['N', 'H'] +pc = 2 + +[half_carry.program] +instructions = [ + 0xD6, # sub a, 0x13 + 0x13 +] + +[carry] +cycles = 8 + +[carry.entry_state] +a = 0x00 +flags = [] + +[carry.exit_state] +a = 0xFF +flags = ['N', 'H', 'C'] +pc = 2 + +[carry.program] +instructions = [ + 0xD6, # sub a, 0x01 + 0x01 +] + +[zero] +cycles = 8 + +[zero.entry_state] +a = 0x01 +flags = [] + +[zero.exit_state] +a = 0x00 +flags = ['N', 'Z'] +pc = 2 + +[zero.program] +instructions = [ + 0xD6, # sub a, 0x01 + 0x01 +] diff --git a/sm83/tests/data/xor_a_n8.toml b/sm83/tests/data/xor_a_n8.toml new file mode 100644 index 0000000..e040fef --- /dev/null +++ b/sm83/tests/data/xor_a_n8.toml @@ -0,0 +1,35 @@ +[non_zero] +cycles = 8 + +[non_zero.entry_state] +a = 0x60 +flags = ['Z', 'C', 'H'] + +[non_zero.exit_state] +a = 0x3F +flags = [] +pc = 2 + +[non_zero.program] +instructions = [ + 0xEE, # xor a, 0x5F + 0x5F +] + +[zero] +cycles = 8 + +[zero.entry_state] +a = 0x12 +flags = ['C'] + +[zero.exit_state] +a = 0x00 +flags = ['Z'] +pc = 2 + +[zero.program] +instructions = [ + 0xEE, # xor a, 0x12 + 0x12 +]