--- hatari/src/debug/debugcpu.c 2019/04/09 08:54:20 1.1.1.6 +++ hatari/src/debug/debugcpu.c 2019/04/09 08:55:33 1.1.1.7 @@ -66,7 +66,6 @@ static int DebugCpu_LoadBin(int nArgc, c fprintf(stderr, "Invalid address!\n"); return DEBUGGER_CMDDONE; } - address &= 0x00FFFFFF; if ((fp = fopen(psArgs[1], "rb")) == NULL) { @@ -74,6 +73,12 @@ static int DebugCpu_LoadBin(int nArgc, c return DEBUGGER_CMDDONE; } + /* TODO: more efficient would be to: + * - check file size + * - verify that it fits into valid memory area + * - flush emulated CPU data cache + * - read file contents directly into memory + */ c = fgetc(fp); while (!feof(fp)) { @@ -108,7 +113,6 @@ static int DebugCpu_SaveBin(int nArgc, c fprintf(stderr, " Invalid address!\n"); return DEBUGGER_CMDDONE; } - address &= 0x00FFFFFF; if (!Eval_Number(psArgs[3], &bytes)) { @@ -167,7 +171,6 @@ int DebugCpu_DisAsm(int nArgc, char *psA break; case 1: /* range */ - disasm_upper &= 0x00FFFFFF; break; } } @@ -177,7 +180,6 @@ int DebugCpu_DisAsm(int nArgc, char *psA if(!disasm_addr) disasm_addr = M68000_GetPC(); } - disasm_addr &= 0x00FFFFFF; /* limit is topmost address or instruction count */ if (disasm_upper) @@ -186,7 +188,7 @@ int DebugCpu_DisAsm(int nArgc, char *psA } else { - disasm_upper = 0x00FFFFFF; + disasm_upper = 0xFFFFFFFF; max_insts = ConfigureParams.Debugger.nDisasmLines; } @@ -272,7 +274,11 @@ int DebugCpu_Register(int nArgc, char *p { uaecptr nextpc; /* use the UAE function instead */ +#ifdef WINUAE_FOR_HATARI + m68k_dumpstate_file(debugOutput, &nextpc); +#else m68k_dumpstate(debugOutput, &nextpc); +#endif fflush(debugOutput); return DEBUGGER_CMDDONE; } @@ -381,17 +387,15 @@ int DebugCpu_MemDump(int nArgc, char *ps break; } } /* continue */ - memdump_addr &= 0x00FFFFFF; if (!memdump_upper) { memdump_upper = memdump_addr + MEMDUMP_COLS * ConfigureParams.Debugger.nMemdumpLines; } - memdump_upper &= 0x00FFFFFF; while (memdump_addr < memdump_upper) { - fprintf(debugOutput, "%6.6X: ", memdump_addr); /* print address */ + fprintf(debugOutput, "%8.8X: ", memdump_addr); /* print address */ for (i = 0; i < MEMDUMP_COLS; i++) /* print hex data */ fprintf(debugOutput, "%2.2x ", STMemory_ReadByte(memdump_addr++)); fprintf(debugOutput, " "); /* print ASCII data */ @@ -431,7 +435,6 @@ static int DebugCpu_MemWrite(int nArgc, return DEBUGGER_CMDDONE; } - write_addr &= 0x00FFFFFF; numBytes = 0; /* get bytes data */ @@ -586,7 +589,7 @@ Uint32 DebugCpu_OpcodeType(void) /* TODO: fbcc, fdbcc */ if ((opcode & 0xf000) == 0x6000 || /* BRA / BCC */ (opcode & 0xffc0) == 0x4ec0 || /* JMP */ - (opcode & 0xf080) == 0x50c8) /* DBCC */ + (opcode & 0xf0f8) == 0x50c8) /* DBCC */ return CALL_BRANCH; return CALL_UNKNOWN; @@ -652,7 +655,7 @@ void DebugCpu_Check(void) void DebugCpu_SetDebugging(void) { bCpuProfiling = Profile_CpuStart(); - nCpuActiveCBs = BreakCond_BreakPointCount(false); + nCpuActiveCBs = BreakCond_CpuBreakPointCount(); if (nCpuActiveCBs || nCpuSteps || bCpuProfiling || History_TrackCpu() || LOG_TRACE_LEVEL((TRACE_CPU_DISASM|TRACE_CPU_SYMBOLS))