--- hatari/src/debug/natfeats.c 2019/04/09 08:54:24 1.1.1.2 +++ hatari/src/debug/natfeats.c 2019/04/09 08:55:37 1.1.1.3 @@ -56,8 +56,8 @@ static bool nf_name(Uint32 stack, Uint32 len = STMemory_ReadLong(stack + SIZE_LONG); LOG_TRACE(TRACE_NATFEATS, "NF_NAME[%d](0x%x, %d)\n", subid, ptr, len); - if (!STMemory_ValidArea(ptr, len)) { - M68000_BusError(ptr, BUS_ERROR_WRITE); + if ( !STMemory_CheckAreaType ( ptr, len, ABFLAG_RAM | ABFLAG_ROM ) ) { + M68000_BusError(ptr, BUS_ERROR_WRITE, BUS_ERROR_SIZE_BYTE, BUS_ERROR_ACCESS_DATA); return false; } if (subid) { @@ -65,7 +65,7 @@ static bool nf_name(Uint32 stack, Uint32 } else { str = "Hatari"; } - buf = (char *)STRAM_ADDR(ptr); + buf = (char *)STMemory_STAddrToPointer ( ptr ); *retval = snprintf(buf, len, "%s", str); return true; } @@ -94,11 +94,11 @@ static bool nf_stderr(Uint32 stack, Uint ptr = STMemory_ReadLong(stack); LOG_TRACE(TRACE_NATFEATS, "NF_STDERR(0x%x)\n", ptr); - if (!STMemory_ValidArea(ptr, 1)) { - M68000_BusError(ptr, BUS_ERROR_READ); + if ( !STMemory_CheckAreaType ( ptr, 1, ABFLAG_RAM | ABFLAG_ROM ) ) { + M68000_BusError(ptr, BUS_ERROR_READ, BUS_ERROR_SIZE_BYTE, BUS_ERROR_ACCESS_DATA); return false; } - str = (const char *)STRAM_ADDR(ptr); + str = (const char *)STMemory_STAddrToPointer ( ptr ); *retval = fprintf(stderr, "%s", str); fflush(stderr); return true; @@ -175,11 +175,11 @@ static bool nf_command(Uint32 stack, Uin ptr = STMemory_ReadLong(stack); - if (!STMemory_ValidArea(ptr, 1)) { - M68000_BusError(ptr, BUS_ERROR_READ); + if ( !STMemory_CheckAreaType ( ptr, 1, ABFLAG_RAM | ABFLAG_ROM ) ) { + M68000_BusError(ptr, BUS_ERROR_READ, BUS_ERROR_SIZE_BYTE, BUS_ERROR_ACCESS_DATA); return false; } - buffer = (const char *)STRAM_ADDR(ptr); + buffer = (const char *)STMemory_STAddrToPointer ( ptr ); LOG_TRACE(TRACE_NATFEATS, "NF_COMMAND(0x%x \"%s\")\n", ptr, buffer); Control_ProcessBuffer(buffer); @@ -229,12 +229,12 @@ bool NatFeat_ID(Uint32 stack, Uint32 *re int i; ptr = STMemory_ReadLong(stack); - if (!STMemory_ValidArea(ptr, FEATNAME_MAX)) { - M68000_BusError(ptr, BUS_ERROR_READ); + if ( !STMemory_CheckAreaType ( ptr, FEATNAME_MAX, ABFLAG_RAM | ABFLAG_ROM ) ) { + M68000_BusError(ptr, BUS_ERROR_READ, BUS_ERROR_SIZE_BYTE, BUS_ERROR_ACCESS_DATA); return false; } - name = (const char *)STRAM_ADDR(ptr); + name = (const char *)STMemory_STAddrToPointer ( ptr ); LOG_TRACE(TRACE_NATFEATS, "NF ID(0x%x \"%s\")\n", ptr, name); for (i = 0; i < ARRAYSIZE(features); i++) { @@ -267,7 +267,11 @@ bool NatFeat_Call(Uint32 stack, bool sup } if (features[idx].super && !super) { LOG_TRACE(TRACE_NATFEATS, "ERROR: NF function %d called without supervisor mode\n", idx); - Exception(8, 0, M68000_EXC_SRC_CPU); +#ifndef WINUAE_FOR_HATARI + M68000_Exception(8, M68000_EXC_SRC_CPU); +#else + M68000_Exception(8, M68000_EXC_SRC_CPU); +#endif return false; } stack += SIZE_LONG;