- [FIX] la cpu ja actualitza el registre R com toca

- [FIX] EI no activa les interrupcions fins a després de la següent instrucció, like in real life
- [FIX] actualitzar el offset de la UI després de usar el debugger
- [ONGOING] Depurant el jittering del só. Ara executa 10 instruccions de CPu per cada bucle, per a que vaja mes apresa i no es retrase el cheneraor de só
- Afegit el TAP de Las Tres Luces de Glaurung pa provar
This commit is contained in:
2024-12-04 13:12:58 +01:00
parent 486bd648d3
commit e0bb34052f
5 changed files with 39 additions and 8 deletions

12
z80.cpp
View File

@@ -88,7 +88,8 @@ namespace z80
//uint8_t iff1, iff2, im;
bool exit_from_halt = false;
int pending_ei = 0;
#define rA (*_rA)
#define rF (*_rF)
#define rB (*_rB)
@@ -683,6 +684,11 @@ namespace z80
}
void EI()
{
pending_ei=1;
}
void actualEI()
{
iff1 = iff2 = 1;
}
@@ -1328,6 +1334,9 @@ namespace z80
case 0xFE: CP(READ_MEM_8()); break;
case 0xFF: RST(0x38); break;
}
if (pending_ei==2) { pending_ei=0; actualEI(); }
if (pending_ei==1) pending_ei=2;
return t;
}
@@ -2115,6 +2124,7 @@ namespace z80
void MISC_INSTRUCTIONS()
{
const uint8_t opcode = READ_M1();
rR = (rR&0x80) + ((rR+1) & 0x7f);
uint16_t tmp;
switch (opcode)