Mercurial > repos > blastem
comparison z80inst.c @ 256:ce7ce2b9c2df
Fix decoding of address in JP and JPCC instructions in the Z80 core
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 29 Apr 2013 22:58:45 -0700 |
parents | 682e505f5757 |
children | df5bf4c113dc |
comparison
equal
deleted
inserted
replaced
255:572b935dd030 | 256:ce7ce2b9c2df |
---|---|
1247 memcpy(decoded, z80_tbl_a + *istream, sizeof(z80inst)); | 1247 memcpy(decoded, z80_tbl_a + *istream, sizeof(z80inst)); |
1248 | 1248 |
1249 } | 1249 } |
1250 if ((decoded->addr_mode & 0x1F) == Z80_IMMED && decoded->op != Z80_RST && decoded->op != Z80_IM) { | 1250 if ((decoded->addr_mode & 0x1F) == Z80_IMMED && decoded->op != Z80_RST && decoded->op != Z80_IM) { |
1251 decoded->immed = *(++istream); | 1251 decoded->immed = *(++istream); |
1252 if ((decoded->reg >= Z80_BC && decoded->reg < Z80_UNUSED) || decoded->op == Z80_CALL || decoded->op == Z80_CALLCC) { | 1252 if ((decoded->reg >= Z80_BC && decoded->reg < Z80_UNUSED) || decoded->op == Z80_CALL || decoded->op == Z80_CALLCC || decoded->op == Z80_JP || decoded->op == Z80_JPCC) { |
1253 decoded->immed |= *(++istream) << 8; | 1253 decoded->immed |= *(++istream) << 8; |
1254 } else if (decoded->immed & 0x80) { | 1254 } else if (decoded->immed & 0x80) { |
1255 decoded->immed |= 0xFF00; | 1255 decoded->immed |= 0xFF00; |
1256 } | 1256 } |
1257 } else if ((decoded->addr_mode & 0x1F) == Z80_IMMED_INDIRECT) { | 1257 } else if ((decoded->addr_mode & 0x1F) == Z80_IMMED_INDIRECT) { |