X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pico%2Fz80if.c;h=419d061f4cd9361d4ed3a93666c7262379cef245;hb=refs%2Ftags%2Fv1.93;hp=b69495e74ae2cb1405c87f84f9214f59f0b97458;hpb=e64886365da9e882b54e06ab683ee4db60171e32;p=picodrive.git diff --git a/pico/z80if.c b/pico/z80if.c index b69495e..419d061 100644 --- a/pico/z80if.c +++ b/pico/z80if.c @@ -52,6 +52,8 @@ static unsigned int dz80_rebase_pc(unsigned short pc) return drZ80.Z80PC_BASE; } +static void dz80_noop_irq_ack(void) {} + #ifdef FAST_Z80SP static u32 drz80_sp_base; @@ -104,17 +106,20 @@ void z80_reset(void) */ #ifdef FAST_Z80SP // drZ80 is locked in single bank - drz80_sp_base = (PicoAHW & PAHW_SMS) ? 0xc000 : 0x0000; + drz80_sp_base = (PicoIn.AHW & PAHW_SMS) ? 0xc000 : 0x0000; drZ80.Z80SP_BASE = z80_read_map[drz80_sp_base >> Z80_MEM_SHIFT] << 1; #endif - if (PicoAHW & PAHW_SMS) + drZ80.z80_irq_callback = NULL; // use auto-clear + if (PicoIn.AHW & PAHW_SMS) { drZ80.Z80SP = drZ80.Z80SP_BASE + 0xdff0; // simulate BIOS + drZ80.z80_irq_callback = dz80_noop_irq_ack; + } // XXX: since we use direct SP pointer, it might make sense to force it to RAM, // but we'll rely on built-in stack protection for now #endif #ifdef _USE_CZ80 Cz80_Reset(&CZ80); - if (PicoAHW & PAHW_SMS) + if (PicoIn.AHW & PAHW_SMS) Cz80_Set_Reg(&CZ80, CZ80_SP, 0xdff0); #endif }