diff --git a/Source/DSPSpy/DSPSpy.vcproj b/Source/DSPSpy/DSPSpy.vcproj
index a38481c29f..67c8c803c7 100644
--- a/Source/DSPSpy/DSPSpy.vcproj
+++ b/Source/DSPSpy/DSPSpy.vcproj
@@ -137,6 +137,10 @@
RelativePath=".\tests\ir_test.ds"
>
+
+
diff --git a/Source/DSPSpy/main_spy.cpp b/Source/DSPSpy/main_spy.cpp
index 5d75966ce9..da4f978b23 100644
--- a/Source/DSPSpy/main_spy.cpp
+++ b/Source/DSPSpy/main_spy.cpp
@@ -331,13 +331,14 @@ void handle_dsp_mail(void)
real_dsp.SendTask((void *)MEM_VIRTUAL_TO_PHYSICAL(dsp_code[curUcode]), 0, 4000, 0x10);
runningUcode = curUcode + 1;
+
+ // Clear exception status since we've loaded a new ucode
+ CON_BlankRow(25);
}
else if ((mail & 0xffff0000) == 0x8bad0000)
{
// dsp_base.inc is reporting an exception happened
- char temp[100];
- sprintf(temp, "Exception %x", mail & 0xff);
- UpdateLastMessage(temp);
+ CON_PrintRow(4, 25, "%s caused exception %x", UCODE_NAMES[curUcode], mail & 0xff);
}
else if (mail == 0x8888dead)
{
@@ -387,7 +388,7 @@ void handle_dsp_mail(void)
DumpDSP_ROMs(dspbufP, &dspbufP[0x1000]);
}
- CON_Printf(2, 1, "UCode: %d/%d %s, Last mail: %08x",
+ CON_PrintRow(2, 1, "UCode: %d/%d %s, Last mail: %08x",
curUcode + 1, NUM_UCODES, UCODE_NAMES[curUcode], mail);
}
}
diff --git a/Source/DSPSpy/tests/dsp_base.inc b/Source/DSPSpy/tests/dsp_base.inc
index 6860a64f96..9d2782d9a7 100644
--- a/Source/DSPSpy/tests/dsp_base.inc
+++ b/Source/DSPSpy/tests/dsp_base.inc
@@ -207,7 +207,8 @@ irq:
;sr @DMBL, $wr3 ; ???
sr @DMBL, $ac0.m ; Exception number
si @DIRQ, #0x0001
- halt
+ halt ; Through some magic this allows us to properly ack the exception in dspspy
+ ;rti ; allow dumping of ucodes which cause exceptions...probably not safe at all
; DMA:s the current state of the registers back to the PowerPC. To do this,
; it must write the contents of all regs to DRAM.
diff --git a/Source/DSPTool/Src/main.cpp b/Source/DSPTool/Src/main.cpp
index 06ffb50b6a..626ddb9ef8 100644
--- a/Source/DSPTool/Src/main.cpp
+++ b/Source/DSPTool/Src/main.cpp
@@ -402,7 +402,7 @@ int main(int argc, const char *argv[])
}
else
{
- if(!Assemble(currentSource.c_str(), codes[i]))
+ if(!Assemble(currentSource.c_str(), codes[i], force))
{
printf("Assemble: Assembly of %s failed due to errors\n",
files[i].c_str());