diff --git a/qtBuildSystem/Mu/Mu.pro b/qtBuildSystem/Mu/Mu.pro index 06d3916..476aad0 100644 --- a/qtBuildSystem/Mu/Mu.pro +++ b/qtBuildSystem/Mu/Mu.pro @@ -32,7 +32,6 @@ windows{ macx{ # QMAKE_CFLAGS += -std=c89 -D__STDBOOL_H -Dinline= -Dbool=char -Dtrue=1 -Dfalse=0 # tests C89 mode - # CONFIG += sdk_no_version_check # using 10.14 SDK which Qt only unofficialy supports ICON = macos/Mu.icns QMAKE_INFO_PLIST = macos/Info.plist DEFINES += EMU_MULTITHREADED diff --git a/src/flx68000.c b/src/flx68000.c index 8784db0..532740f 100755 --- a/src/flx68000.c +++ b/src/flx68000.c @@ -18,15 +18,25 @@ void flx68000PcLongJump(uint32_t newPc){ uint32_t dataBufferGuest; uint32_t windowSize; - if(chips[CHIP_A0_ROM].inBootMode || newPc >= chips[CHIP_A0_ROM].start && newPc < chips[CHIP_A0_ROM].start + chips[CHIP_A0_ROM].lineSize){ - dataBufferHost = (uintptr_t)palmRom; - dataBufferGuest = chips[CHIP_A0_ROM].start; - windowSize = chips[CHIP_A0_ROM].mask + 1; - } - else if(newPc >= chips[CHIP_DX_RAM].start && newPc < chips[CHIP_DX_RAM].start + chips[CHIP_DX_RAM].lineSize){ - dataBufferHost = (uintptr_t)palmRam; - dataBufferGuest = chips[CHIP_DX_RAM].start; - windowSize = chips[CHIP_DX_RAM].mask + 1; + switch(bankType[START_BANK(newPc)]){ + case CHIP_A0_ROM: + dataBufferHost = (uintptr_t)palmRom; + dataBufferGuest = chips[CHIP_A0_ROM].start; + windowSize = chips[CHIP_A0_ROM].mask + 1; + break; + + case CHIP_DX_RAM: + dataBufferHost = (uintptr_t)palmRam; + dataBufferGuest = chips[CHIP_DX_RAM].start; + windowSize = chips[CHIP_DX_RAM].mask + 1; + break; + + case CHIP_REGISTERS: + //needed for when EMU_NO_SAFETY is set and a function is run in the sandbox + dataBufferHost = (uintptr_t)palmReg; + dataBufferGuest = BANK_ADDRESS(START_BANK(newPc)); + windowSize = REG_SIZE; + break; } memBase = dataBufferHost - dataBufferGuest - windowSize * ((newPc - dataBufferGuest) / windowSize); diff --git a/src/hardwareRegisters.c b/src/hardwareRegisters.c index e80d8b0..ad7909c 100644 --- a/src/hardwareRegisters.c +++ b/src/hardwareRegisters.c @@ -294,8 +294,12 @@ void setEmuRegister(uint32_t address, uint32_t value){ } uint8_t getHwRegister8(uint32_t address){ - if((address & 0x0000F000) != 0x0000F000) +#if !defined(EMU_NO_SAFETY) + if((address & 0x0000F000) != 0x0000F000){ + setBusErrorTimeOut(address, false); return 0x00; + } +#endif address &= 0x00000FFF; @@ -401,8 +405,12 @@ uint8_t getHwRegister8(uint32_t address){ } uint16_t getHwRegister16(uint32_t address){ - if((address & 0x0000F000) != 0x0000F000) +#if !defined(EMU_NO_SAFETY) + if((address & 0x0000F000) != 0x0000F000){ + setBusErrorTimeOut(address, false); return 0x0000; + } +#endif address &= 0x00000FFF; @@ -489,8 +497,12 @@ uint16_t getHwRegister16(uint32_t address){ } uint32_t getHwRegister32(uint32_t address){ - if((address & 0x0000F000) != 0x0000F000) +#if !defined(EMU_NO_SAFETY) + if((address & 0x0000F000) != 0x0000F000){ + setBusErrorTimeOut(address, false); return 0x00000000; + } +#endif address &= 0x00000FFF; @@ -516,10 +528,13 @@ uint32_t getHwRegister32(uint32_t address){ } } - void setHwRegister8(uint32_t address, uint8_t value){ - if((address & 0x0000F000) != 0x0000F000) +#if !defined(EMU_NO_SAFETY) + if((address & 0x0000F000) != 0x0000F000){ + setBusErrorTimeOut(address, true); return; + } +#endif address &= 0x00000FFF; @@ -669,8 +684,12 @@ void setHwRegister8(uint32_t address, uint8_t value){ } void setHwRegister16(uint32_t address, uint16_t value){ - if((address & 0x0000F000) != 0x0000F000) +#if !defined(EMU_NO_SAFETY) + if((address & 0x0000F000) != 0x0000F000){ + setBusErrorTimeOut(address, true); return; + } +#endif address &= 0x00000FFF; @@ -957,8 +976,12 @@ void setHwRegister16(uint32_t address, uint16_t value){ } void setHwRegister32(uint32_t address, uint32_t value){ - if((address & 0x0000F000) != 0x0000F000) +#if !defined(EMU_NO_SAFETY) + if((address & 0x0000F000) != 0x0000F000){ + setBusErrorTimeOut(address, true); return; + } +#endif address &= 0x00000FFF;