diff options
author | Mike Pavone <pavone@retrodev.com> | 2013-05-08 22:45:29 -0700 |
---|---|---|
committer | Mike Pavone <pavone@retrodev.com> | 2013-05-08 22:45:29 -0700 |
commit | 7f57adce052ed2ba556741fd6d48694e218b74da (patch) | |
tree | 91868c2bdd6b70fc596d3398ec74f19d213b9de9 /ztestgen.c | |
parent | bd3490ebb8ea68b2fb7ee3e0e81b89aa0b2f45f5 (diff) |
Fix handling of instructions that combine an IX/IY displacement with another prefix in test generator
Diffstat (limited to 'ztestgen.c')
-rw-r--r-- | ztestgen.c | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -226,8 +226,13 @@ void z80_gen_test(z80inst * inst, uint8_t *instbuf, uint8_t instlen) } //copy instruction - memcpy(cur, instbuf, instlen); - cur += instlen; + if (instlen == 3) { + memcpy(cur, instbuf, 2); + cur += 2; + } else { + memcpy(cur, instbuf, instlen); + cur += instlen; + } //immed/displacement byte(s) if (addr_mode == Z80_IX_DISPLACE || addr_mode == Z80_IY_DISPLACE) { @@ -244,6 +249,9 @@ void z80_gen_test(z80inst * inst, uint8_t *instbuf, uint8_t instlen) if (inst->reg == Z80_USE_IMMED && inst->op != Z80_BIT && inst->op != Z80_RES && inst->op != Z80_SET) { *(cur++) = inst->immed & 0xFF; } + if (instlen == 3) { + *(cur++) = instbuf[2]; + } for (char * cur = disbuf; *cur != 0; cur++) { if (*cur == ',' || *cur == ' ') { |