core, fix crash bug in DrZ80 (SP wrap)
authorkub <derkub@gmail.com>
Thu, 7 Mar 2024 19:36:00 +0000 (20:36 +0100)
committerkub <derkub@gmail.com>
Thu, 7 Mar 2024 19:36:00 +0000 (20:36 +0100)
cpu/DrZ80/drz80.S
pico/memory.c

index f047664..655814c 100644 (file)
@@ -208,6 +208,7 @@ z80_xmap_read16: @ addr
     bl z80_xmap_read8\r
     mov r9,r0\r
     add r0,r8,#1\r
+    bic r0,r0,#1<<16\r
     bl z80_xmap_read8\r
     orr r0,r9,r0,lsl #8\r
     ldmfd sp!,{r2,r8,r9,pc}\r
@@ -236,6 +237,7 @@ z80_xmap_write16: @ data, addr
     bl z80_xmap_write8\r
     mov r0,r8,lsr #8\r
     add r1,r9,#1\r
+    bic r1,r1,#1<<16\r
     bl z80_xmap_write8\r
     ldmfd sp!,{r2,r8,r9,pc}\r
 \r
index e9232d1..693f960 100644 (file)
@@ -675,7 +675,7 @@ static void PicoWrite16_sram(u32 a, u32 d)
 static u32 PicoRead8_z80(u32 a)\r
 {\r
   u32 d = 0xff;\r
-  if ((Pico.m.z80Run | Pico.m.z80_reset | (z80_cycles_from_68k() < Pico.t.z80c_cnt)) && !(PicoIn.quirks & PQUIRK_NO_Z80_BUS_LOCK)) {\r
+  if ((Pico.m.z80Run | Pico.m.z80_reset) && !(PicoIn.quirks & PQUIRK_NO_Z80_BUS_LOCK)) {\r
     elprintf(EL_ANOMALY, "68k z80 read with no bus! [%06x] @ %06x", a, SekPc);\r
     // open bus. Pulled down if MegaCD2 is attached.\r
     return (PicoIn.AHW & PAHW_MCD ? 0 : d);\r