Fixed a problem with the REP instruction

This commit is contained in:
davehein 2018-06-19 08:58:19 -05:00
parent 95c5d9d22e
commit 495b9778fc
1 changed files with 7 additions and 3 deletions

View File

@ -1372,6 +1372,7 @@ int32_t ExecutePasmInstruction2(PasmVarsT *pasmvars)
{ {
if (!pasmvars->repforever) pasmvars->repcnt--; if (!pasmvars->repforever) pasmvars->repcnt--;
pasmvars->pc = pasmvars->repbot; pasmvars->pc = pasmvars->repbot;
check_hubexec_mode(pasmvars);
} }
else else
{ {
@ -3107,9 +3108,12 @@ if (streamflag) printf("\nSTREAM COLLISION\n");
case 6: // xcont, rep case 6: // xcont, rep
if (czi & 4) // rep if (czi & 4) // rep
{ {
pasmvars->repcnt = value2; pasmvars->repcnt = value2 - 1;
pasmvars->repbot = pasmvars->pc; pasmvars->repbot = pasmvars->pc1;
pasmvars->reptop = (pasmvars->pc + value1) & ADDR_MASK; if (value2 == 0) pasmvars->repforever = 1;
if (pasmvars->pc >= 0x400) value1 <<= 2;
pasmvars->reptop = (pasmvars->pc2 + value1) & ADDR_MASK;
write_czr = 0;
} }
else // xcont else // xcont
NotImplemented(instruct); NotImplemented(instruct);