Add trap list from old palm emu, list current problem

This commit is contained in:
meepingsnesroms
2018-04-18 17:18:13 -07:00
parent 3577016ba8
commit 1df7d7d3ac
6 changed files with 1209 additions and 9 deletions

25
currentProblem.txt Normal file
View File

@@ -0,0 +1,25 @@
Endless waiting while trying to poll the usb chip
ROM:10003A14 move.b #$F4,d0
ROM:10003A18 move.b d0,($10400002).l
ROM:10003A1E nop
ROM:10003A20 nop
ROM:10003A22 nop
ROM:10003A24 move.b ($10400000).l,d0
ROM:10003A2A nop
ROM:10003A2C nop
ROM:10003A2E nop
ROM:10003A30 moveq #0,d1
ROM:10003A32 move.b d0,d1
ROM:10003A34 cmp.w d1,d4
ROM:10003A36 bne.s loc_10003A4E
ROM:10003A38 pea (unk_64).w
ROM:10003A3C trap #$F
ROM:10003A3C dc.w $A249
ROM:10003A40 moveq #$64,d0 ; 'd'
ROM:10003A42 add.l d0,d3
ROM:10003A44 addq.w #4,sp
ROM:10003A46
ROM:10003A46 loc_10003A46: ; CODE XREF: sub_100038C0+152↑j
ROM:10003A46 cmpi.l #$3A98,d3
ROM:10003A4C bcs.s loc_10003A14

View File

@@ -40,17 +40,16 @@ SOURCES += \
src/m68k/m68kopdm.c \
src/m68k/m68kopnz.c \
src/m68k/m68kops.c \
src/68328Functions.c \
src/emulator.c \
src/hardwareRegisters.c \
src/memoryAccess.c \
src/sdcard.c \
src/sed1376.c \
src/silkscreen.c \
src/68328Functions.c
src/trapNumToName.c
HEADERS += \
mainwindow.h \
touchscreen.h \
qt-common/include/boolean.h \
qt-common/include/retro_endianness.h \
qt-common/include/retro_inline.h \
@@ -61,6 +60,7 @@ HEADERS += \
src/m68k/m68kconf.h \
src/m68k/m68kcpu.h \
src/m68k/m68kops.h \
src/68328Functions.h \
src/emuFeatureRegistersSpec.h \
src/emulator.h \
src/hardwareRegisterNames.h \
@@ -70,7 +70,8 @@ HEADERS += \
src/sdcard.h \
src/sed1376.h \
src/silkscreen.h \
src/68328Functions.h
mainwindow.h \
touchscreen.h
FORMS += \
mainwindow.ui

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.6.0, 2018-04-17T17:57:15. -->
<!-- Written by QtCreator 4.6.0, 2018-04-18T17:16:44. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>

View File

@@ -58,6 +58,8 @@ static inline bool allSdCardCallbacksPresent(){
static bool invalidBehaviorAbort;
static char disassemblyBuffer[LOGGED_OPCODES][100];//store the opcode and program counter for the last 10 opcodes
const char* lookupTrap(uint16_t trap);
static char* takeStackDump(uint32_t bytes){
char* textBytes = malloc(bytes * 2);
uint32_t textBytesOffset = 0;
@@ -84,12 +86,12 @@ static void invalidBehaviorCheck(){
//get current opcode
if(!invalidBank){
//must dissasemble as 68020 to prevent address masking, is also more descriptive for invalid opcodes
m68k_disassemble(opcodeName, programCounter, M68K_CPU_TYPE_68020);
m68k_disassemble(opcodeName, lastProgramCounter, M68K_CPU_TYPE_68020);
}
else{
strcpy(opcodeName, "Invalid bank, cant read");
}
sprintf(opcodeName + strlen(opcodeName), " at PC:0x%08X", programCounter);
sprintf(opcodeName + strlen(opcodeName), " at PC:0x%08X", lastProgramCounter);
//shift opcode buffer
for(uint32_t i = 0; i < LOGGED_OPCODES - 1; i++)
@@ -107,7 +109,7 @@ static void invalidBehaviorCheck(){
for(uint32_t i = 0; i < LOGGED_OPCODES; i++)
debugLog("%s\n", disassemblyBuffer[i]);
//currently CPU32 opcodes will be listed as "unknown", I cant change that properly unless I directly edit musashi source, something I want to avoid doing
debugLog("Instruction:\"%s\", instruction value:0x%04X, bank type:%d\n", invalidInstruction ? "unknown" : opcodeName, instruction, bankType[START_BANK(programCounter)]);
debugLog("Instruction:\"%s\", instruction value:0x%04X, bank type:%d\n", invalidInstruction ? "unknown" : opcodeName, instruction, bankType[START_BANK(lastProgramCounter)]);
}
//custom debug operations
@@ -127,6 +129,12 @@ static void invalidBehaviorCheck(){
default:
break;
}
if(instruction == 0x4E4F){
//Trap F/api call
uint16_t trap = m68k_read_memory_16(lastProgramCounter + 2);
debugLog("Trap F API:%s, API number:0x%04X, PC:0x%08X\n", lookupTrap(trap), trap, lastProgramCounter);
}
}
#endif

View File

@@ -4,7 +4,8 @@ EMU_SOURCES_C := $(EMU_PATH)/emulator.c \
$(EMU_PATH)/sed1376.c \
$(EMU_PATH)/sdcard.c \
$(EMU_PATH)/silkscreen.c \
$(EMU_PATH)/68328Functions.c \
$(EMU_PATH)/68328Functions.c \
$(EMU_PATH)/trapNumToName.c \
$(EMU_PATH)/m68k/m68kops.c \
$(EMU_PATH)/m68k/m68kopnz.c \
$(EMU_PATH)/m68k/m68kopdm.c \

1165
src/trapNumToName.c Normal file

File diff suppressed because it is too large Load Diff