--- previous/src/ioMem.c 2018/04/24 19:25:10 1.1.1.1 +++ previous/src/ioMem.c 2018/04/24 19:31:26 1.1.1.5 @@ -14,6 +14,7 @@ const char IoMem_fileid[] = "Hatari ioMe #include "ioMemTables.h" #include "m68000.h" #include "sysdeps.h" +#include "shortcut.h" #define IO_SEG_MASK 0x0001FFFF #define IO_MASK 0x0001FFFF @@ -65,7 +66,11 @@ void IoMem_Init(void) /* Set default IO access handler (-> bus error) */ IoMem_SetBusErrorRegion(0x02000000, 0x0201FFFF); - pInterceptAccessFuncs=IoMemTable_NEXT; + if (ConfigureParams.System.bTurbo) { + pInterceptAccessFuncs = IoMemTable_Turbo; + } else { + pInterceptAccessFuncs = IoMemTable_NEXT; + } /* Now set the correct handlers */ for (addr=0x02000000; addr <= 0x0201FFFF; addr++) @@ -113,7 +118,7 @@ uae_u32 IoMem_bget(uaecptr addr) if ((addr & IO_SEG_MASK) >= IO_SIZE) { /* invalid memory addressing --> bus error */ - M68000_BusError(addr, 1); + M68000_BusError(addr, BUS_ERROR_READ); return -1; } @@ -127,7 +132,7 @@ uae_u32 IoMem_bget(uaecptr addr) /* Check if we read from a bus-error region */ if (nBusErrorAccesses == 1) { - M68000_BusError(addr, 1); + M68000_BusError(addr, BUS_ERROR_READ); return -1; } @@ -152,7 +157,7 @@ uae_u32 IoMem_wget(uaecptr addr) if ((addr & IO_SEG_MASK) >= IO_SIZE) { /* invalid memory addressing --> bus error */ - M68000_BusError(addr, 1); + M68000_BusError(addr, BUS_ERROR_READ); return -1; } @@ -173,7 +178,7 @@ uae_u32 IoMem_wget(uaecptr addr) /* Check if we completely read from a bus-error region */ if (nBusErrorAccesses == 2) { - M68000_BusError(addr, 1); + M68000_BusError(addr, BUS_ERROR_READ); return -1; } @@ -198,7 +203,7 @@ uae_u32 IoMem_lget(uaecptr addr) if ((addr & IO_SEG_MASK) >= IO_SIZE) { /* invalid memory addressing --> bus error */ - M68000_BusError(addr, 1); + M68000_BusError(addr, BUS_ERROR_READ); return -1; } @@ -231,7 +236,7 @@ uae_u32 IoMem_lget(uaecptr addr) /* Check if we completely read from a bus-error region */ if (nBusErrorAccesses == 4) { - M68000_BusError(addr, 1); + M68000_BusError(addr, BUS_ERROR_READ); return -1; } @@ -255,7 +260,7 @@ void IoMem_bput(uaecptr addr, uae_u32 va if ((addr & IO_SEG_MASK) >= IO_SIZE) { /* invalid memory addressing --> bus error */ - M68000_BusError(addr, 0); + M68000_BusError(addr, BUS_ERROR_WRITE); return; } @@ -271,7 +276,7 @@ void IoMem_bput(uaecptr addr, uae_u32 va /* Check if we wrote to a bus-error region */ if (nBusErrorAccesses == 1) { - M68000_BusError(addr, 0); + M68000_BusError(addr, BUS_ERROR_WRITE); } } @@ -290,7 +295,7 @@ void IoMem_wput(uaecptr addr, uae_u32 va if ((addr & IO_SEG_MASK) >= IO_SIZE) { /* invalid memory addressing --> bus error */ - M68000_BusError(addr, 0); + M68000_BusError(addr, BUS_ERROR_WRITE); return; } @@ -313,7 +318,7 @@ void IoMem_wput(uaecptr addr, uae_u32 va /* Check if we wrote to a bus-error region */ if (nBusErrorAccesses == 2) { - M68000_BusError(addr, 0); + M68000_BusError(addr, BUS_ERROR_WRITE); } } @@ -331,7 +336,7 @@ void IoMem_lput(uaecptr addr, uae_u32 va if ((addr & IO_SEG_MASK) >= IO_SIZE) { /* invalid memory addressing --> bus error */ - M68000_BusError(addr, 0); + M68000_BusError(addr, BUS_ERROR_WRITE); return; } @@ -366,7 +371,7 @@ void IoMem_lput(uaecptr addr, uae_u32 va /* Check if we wrote to a bus-error region */ if (nBusErrorAccesses == 4) { - M68000_BusError(addr, 0); + M68000_BusError(addr, BUS_ERROR_WRITE); } } @@ -383,7 +388,8 @@ void IoMem_lput(uaecptr addr, uae_u32 va void IoMem_BusErrorEvenReadAccess(void) { nBusErrorAccesses += 1; - IoMem[IoAccessCurrentAddress& IO_SEG_MASK] = 0xff; + // IoMem[IoAccessCurrentAddress& IO_SEG_MASK] = 0xff; + Log_Printf(LOG_WARN,"Bus error $%08x PC=$%08x %s at %d", IoAccessCurrentAddress,regs.pc,__FILE__,__LINE__); } /** @@ -393,7 +399,8 @@ void IoMem_BusErrorEvenReadAccess(void) void IoMem_BusErrorOddReadAccess(void) { nBusErrorAccesses += 1; - IoMem[IoAccessCurrentAddress& IO_SEG_MASK] = 0xff; + // IoMem[IoAccessCurrentAddress& IO_SEG_MASK] = 0xff; + Log_Printf(LOG_WARN,"Bus error $%08x PC=$%08x %s at %d", IoAccessCurrentAddress,regs.pc,__FILE__,__LINE__); } /*-------------------------------------------------------------------------*/ @@ -403,6 +410,7 @@ void IoMem_BusErrorOddReadAccess(void) void IoMem_BusErrorEvenWriteAccess(void) { nBusErrorAccesses += 1; + Log_Printf(LOG_WARN,"Bus error $%08x PC=$%08x %s at %d", IoAccessCurrentAddress,regs.pc,__FILE__,__LINE__); } /** @@ -412,6 +420,7 @@ void IoMem_BusErrorEvenWriteAccess(void) void IoMem_BusErrorOddWriteAccess(void) { nBusErrorAccesses += 1; + Log_Printf(LOG_WARN,"Bus error $%08x PC=$%08x %s at %d", IoAccessCurrentAddress,regs.pc,__FILE__,__LINE__); } @@ -433,6 +442,7 @@ void IoMem_VoidRead(void) IoMem[a & IO_SEG_MASK] = 0xff; } } + Log_Printf(LOG_WARN,"IO read at $%08x PC=$%08x\n", IoAccessCurrentAddress,regs.pc); } /*-------------------------------------------------------------------------*/ @@ -444,6 +454,7 @@ void IoMem_VoidRead(void) void IoMem_VoidWrite(void) { /* Nothing... */ + Log_Printf(LOG_WARN,"IO write at $%08x PC=$%08x\n", IoAccessCurrentAddress,regs.pc); } @@ -486,3 +497,10 @@ void IoMem_WriteWithoutInterceptionButTr { Log_Printf(LOG_WARN,"IO write at $%08x val=%02x PC=$%08x\n", IoAccessCurrentAddress,IoMem[IoAccessCurrentAddress & IO_SEG_MASK],regs.pc); } + +/*-------------------------------------------------------------------------*/ +/* Jump into debugger upon access + */ +void IoMem_Debug(void) { + ShortCut_Debug_M68K(); +}