-----------------------------------------*/\r
\r
OPED(0xb0): // LDIR\r
- if (zBC != 1)\r
- PC -= 2;\r
do\r
{\r
val = READ_MEM8(zHL++);\r
WRITE_MEM8(zDE++, val);\r
zBC--;\r
USE_CYCLES(21)\r
- } while (zBC > 1 && (CPU->ICount > 0) && !CPU->Status);\r
+ } while (zBC && (CPU->ICount > -4) && !CPU->Status);\r
goto OP_LDXR;\r
\r
OPED(0xb8): // LDDR\r
- if (zBC != 1)\r
- PC -= 2;\r
do\r
{\r
val = READ_MEM8(zHL--);\r
WRITE_MEM8(zDE--, val);\r
zBC--;\r
USE_CYCLES(21)\r
- } while (zBC > 1 && (CPU->ICount > 0) && !CPU->Status);\r
+ } while (zBC && (CPU->ICount > -4) && !CPU->Status);\r
\r
OP_LDXR:\r
F = zF & (SF | ZF | CF);\r
if (zBC)\r
{\r
zF = F | VF;\r
+ PC -= 2;\r
#if CZ80_EMULATE_R_EXACTLY\r
zR--;\r
#endif\r
-----------------------------------------*/\r
\r
OPED(0xb1): // CPIR\r
- if (zBC != 1)\r
- PC -= 2;\r
do\r
{\r
val = READ_MEM8(zHL++);\r
if (zBC) F |= VF;\r
zF = F;\r
USE_CYCLES(21)\r
- } while (zBC > 1 && !(F & ZF) && (CPU->ICount > 0) && !CPU->Status);\r
+ } while (zBC && !(F & ZF) && (CPU->ICount > -4) && !CPU->Status);\r
goto OP_CPXR;\r
\r
OPED(0xb9): // CPDR\r
- if (zBC != 1)\r
- PC -= 2;\r
do\r
{\r
val = READ_MEM8(zHL--);\r
if (zBC) F |= VF;\r
zF = F;\r
USE_CYCLES(21)\r
- } while (zBC > 1 && !(F & ZF) && (CPU->ICount > 0) && !CPU->Status);\r
+ } while (zBC && !(F & ZF) && (CPU->ICount > -4) && !CPU->Status);\r
\r
OP_CPXR:\r
if (zBC && !(F & ZF))\r
{\r
+ PC -= 2;\r
#if CZ80_EMULATE_R_EXACTLY\r
zR--;\r
#endif\r
-----------------------------------------*/\r
\r
OPED(0xb2): // INIR\r
- if (zB != 1)\r
- PC -= 2;\r
do\r
{\r
val = IN(zBC);\r
zB--;\r
WRITE_MEM8(zHL++, val);\r
USE_CYCLES(21)\r
- } while (zB > 1 && (CPU->ICount > 0) && !CPU->Status);\r
+ } while (zB && (CPU->ICount > -4) && !CPU->Status);\r
goto OP_INXR;\r
\r
OPED(0xba): // INDR\r
- if (zB != 1)\r
- PC -= 2;\r
do\r
{\r
val = IN(zBC);\r
zB--;\r
WRITE_MEM8(zHL--, val);\r
USE_CYCLES(21)\r
- } while (zB > 1 && (CPU->ICount > 0) && !CPU->Status);\r
+ } while (zB && (CPU->ICount > -4) && !CPU->Status);\r
\r
OP_INXR:\r
F = SZ[zB];\r
zF = F;\r
if (zB)\r
{\r
+ PC -= 2;\r
#if CZ80_EMULATE_R_EXACTLY\r
zR--;\r
#endif\r
-----------------------------------------*/\r
\r
OPED(0xb3): // OTIR\r
- if (zB != 1)\r
- PC -= 2;\r
do\r
{\r
val = READ_MEM8(zHL++);\r
zB--;\r
OUT(zBC, val);\r
USE_CYCLES(21)\r
- } while (zB > 1 && (CPU->ICount > 0) && !CPU->Status);\r
+ } while (zB && (CPU->ICount > -4) && !CPU->Status);\r
goto OP_OTXR;\r
\r
OPED(0xbb): // OTDR\r
- if (zB != 1)\r
- PC -= 2;\r
do\r
{\r
val = READ_MEM8(zHL--);\r
zB--;\r
OUT(zBC, val);\r
USE_CYCLES(21)\r
- } while (zB > 1 && (CPU->ICount > 0) && !CPU->Status);\r
+ } while (zB && (CPU->ICount > -4) && !CPU->Status);\r
\r
OP_OTXR:\r
F = SZ[zB];\r
zF = F;\r
if (zB)\r
{\r
+ PC -= 2;\r
#if CZ80_EMULATE_R_EXACTLY\r
zR--;\r
#endif\r