core, fix z80 irq handling, reset defaults (cz80, drz80)

This commit is contained in:
kub 2024-02-22 21:01:37 +01:00
parent bfe516c3a9
commit ad43165afc
6 changed files with 35 additions and 40 deletions

View file

@ -166,7 +166,7 @@ extern struct DrZ80 drZ80;
#define z80_run(cycles) ((cycles) - DrZ80Run(&drZ80, cycles))
#define z80_run_nr(cycles) DrZ80Run(&drZ80, cycles)
#define z80_int() drZ80.Z80_IRQ = 1
#define z80_int_assert(a) drZ80.Z80_IRQ = (a)
#define z80_int_assert(a) drZ80.Z80_IRQ = (a ? 2 : 0)
#define z80_nmi() drZ80.Z80IF |= 8
#define z80_cyclesLeft drZ80.cycles

View file

@ -112,10 +112,11 @@ void z80_reset(void)
drZ80.Z80IF = 0;
drZ80.z80irqvector = 0xff0000; // RST 38h
drZ80.Z80PC_BASE = drZ80.Z80PC = z80_read_map[0] << 1;
drZ80.Z80SP = 0xffff;
drZ80.Z80F = 0xff;
drZ80.Z80A = 0xff << 24;
// others not changed, undefined on cold boot
/*
drZ80.Z80F = (1<<2); // set ZFlag
drZ80.Z80F2 = (1<<2); // set ZFlag
drZ80.Z80IX = 0xFFFF << 16;
drZ80.Z80IY = 0xFFFF << 16;
*/