]> Shamusworld >> Repos - virtualjaguar/blobdiff - src/m68000/cpuextra.c
Minor update to debugger; added autoupdating to CPU/MEM windows.
[virtualjaguar] / src / m68000 / cpuextra.c
index e165dd202610e196425fde74cc07a8662e51ab6e..e98f1da8120f957a220e2d69898064165add532e 100644 (file)
@@ -110,6 +110,43 @@ NB: Seems that when an address exception occurs, it doesn't get handled properly
 // on Atari ST, because it's possible to change the MFP's vector base
 // and get a conflict with 'normal' cpu exceptions.
 //
+#if 0
+/*
+This is the STOP # function. Dunno if exception handling occurs when it hits here or not, because don't know if the regs.s bit is set or not!
+Seems to be...
+
+SR-----------------
+1111 11
+5432 1098 7654 3210
+---- ---- ---- ----
+  1    1
+
+
+*/
+unsigned long CPUFUNC(op_4e72_5)(uint32_t opcode) /* STOP */
+{
+       OpcodeFamily = 44;
+       CurrentInstrCycles = 4;
+
+       if (!regs.s)
+       {
+               Exception(8, 0, M68000_EXC_SRC_CPU);
+       }
+       else
+       {
+               int16_t src = get_iword_prefetch(2);
+               regs.sr = src;
+               MakeFromSR();
+               m68k_setstopped(1);
+               m68k_incpc(4);
+               fill_prefetch_0();
+       }
+
+       return 4;
+}
+#endif
+//tmp...
+void WriteLog(const char * text, ...);
 void Exception(int nr, uint32_t oldpc, int ExceptionSource)
 {
        uint32_t currpc = m68k_getpc(), newpc;
@@ -128,15 +165,15 @@ char excNames[33][64] = {
        "Trap #"
 };
 
-printf("Exception #%i occurred! (%s)\n", nr, (nr < 32 ? excNames[nr] : (nr < 48 ? "Trap #" : "????")));
-printf("Vector @ #%i = %08X\n", nr, m68k_read_memory_32(nr * 4));
+WriteLog("Exception #%i occurred! (%s)\n", nr, (nr < 32 ? excNames[nr] : (nr < 48 ? "Trap #" : "????")));
+WriteLog("Vector @ #%i = %08X\n", nr, m68k_read_memory_32(nr * 4));
 //abort();
-printf("PC = $%08X\n", currpc);
-printf("A0 = $%08X A1 = $%08X A2 = $%08X A3 = $%08X\n", m68k_areg(regs, 0), m68k_areg(regs, 1), m68k_areg(regs, 2), m68k_areg(regs, 3));
-printf("A4 = $%08X A5 = $%08X A6 = $%08X A7 = $%08X\n", m68k_areg(regs, 4), m68k_areg(regs, 5), m68k_areg(regs, 6), m68k_areg(regs, 7));
-printf("D0 = $%08X D1 = $%08X D2 = $%08X D3 = $%08X\n", m68k_dreg(regs, 0), m68k_dreg(regs, 1), m68k_dreg(regs, 2), m68k_dreg(regs, 3));
-printf("D4 = $%08X D5 = $%08X D6 = $%08X D7 = $%08X\n", m68k_dreg(regs, 4), m68k_dreg(regs, 5), m68k_dreg(regs, 6), m68k_dreg(regs, 7));
-printf("\n");
+WriteLog("PC = $%08X\n", currpc);
+WriteLog("A0 = $%08X A1 = $%08X A2 = $%08X A3 = $%08X\n", m68k_areg(regs, 0), m68k_areg(regs, 1), m68k_areg(regs, 2), m68k_areg(regs, 3));
+WriteLog("A4 = $%08X A5 = $%08X A6 = $%08X A7 = $%08X\n", m68k_areg(regs, 4), m68k_areg(regs, 5), m68k_areg(regs, 6), m68k_areg(regs, 7));
+WriteLog("D0 = $%08X D1 = $%08X D2 = $%08X D3 = $%08X\n", m68k_dreg(regs, 0), m68k_dreg(regs, 1), m68k_dreg(regs, 2), m68k_dreg(regs, 3));
+WriteLog("D4 = $%08X D5 = $%08X D6 = $%08X D7 = $%08X\n", m68k_dreg(regs, 4), m68k_dreg(regs, 5), m68k_dreg(regs, 6), m68k_dreg(regs, 7));
+WriteLog("\n");
 
 uint32_t disPC = currpc - 10;
 char buffer[128];
@@ -145,7 +182,7 @@ do
 {
        uint32_t oldpc = disPC;
        disPC += m68k_disassemble(buffer, disPC, 0);
-       printf("%s%08X: %s\n", (oldpc == currpc ? ">" : " "), oldpc, buffer);
+       WriteLog("%s%08X: %s\n", (oldpc == currpc ? ">" : " "), oldpc, buffer);
 }
 while (disPC < (currpc + 10));
 #endif