diff --git a/Asuro.iso b/Asuro.iso index 3544c29a..495096aa 100644 Binary files a/Asuro.iso and b/Asuro.iso differ diff --git a/bin/kernel.bin b/bin/kernel.bin index 3225887c..86672054 100755 Binary files a/bin/kernel.bin and b/bin/kernel.bin differ diff --git a/iso/boot/asuro.bin b/iso/boot/asuro.bin index 3225887c..86672054 100755 Binary files a/iso/boot/asuro.bin and b/iso/boot/asuro.bin differ diff --git a/lib/libpconsole.a b/lib/libpconsole.a index 3c604337..43b7dfd3 100644 Binary files a/lib/libpconsole.a and b/lib/libpconsole.a differ diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index 9812dbb0..65475f96 100644 Binary files a/lib/libpmultiboot.a and b/lib/libpmultiboot.a differ diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 3eb721ca..1f70deb2 100644 Binary files a/lib/libpsystem.a and b/lib/libpsystem.a differ diff --git a/lib/util.ppu b/lib/util.ppu index 99159254..06790fd2 100644 Binary files a/lib/util.ppu and b/lib/util.ppu differ diff --git a/src/include/util.pas b/src/include/util.pas index 0f04146d..e0a365a6 100644 --- a/src/include/util.pas +++ b/src/include/util.pas @@ -265,6 +265,8 @@ end; procedure BSOD(fault : pchar; info : pchar); var trace : pchar; + i : uint32; + z : uint32; begin if not BSOD_ENABLE then exit; @@ -291,25 +293,33 @@ begin console.writestringln(' '); console.writestringln(' Asuro encountered an error and your computer is now a teapot.'); console.writestringln(' '); - console.writestringln(' Your data is almost certainly safe. Probably.'); - console.writestringln(' '); - console.writestringln(' The fault could have been caused by one or more of the following: '); - console.writestringln(' - The fluxonium controller malfunctioning.'); - console.writestringln(' - A devlopers inability to handle faults correctly.'); - console.writestringln(' - Spilt coffee.'); - console.writestringln(' - Monkeys inside the PC Case.'); - console.writestringln(' - Something you did.'); + console.writestringln(' Your data is almost certainly safe.'); console.writestringln(' '); console.writestringln(' Details of the fault (for those boring enough to read) are as follows: '); console.writestringln(' '); - console.writestring(' Fault ID: '); + console.writestring(' Fault ID: '); console.writestringln(fault); console.writestring(' Fault Info: '); console.writestringln(info); - console.writestring(' Faulting Module: '); - trace:= tracer.get_last_trace; - if trace <> nil then console.writestringln(tracer.get_last_trace) else console.writestringln('Unknown'); console.writestringln(' '); + console.writestring(' Call Stack: '); + trace:= tracer.get_last_trace; + if trace <> nil then begin + console.writestring('[-0] '); + console.writestringln(trace); + for i:=1 to 6 do begin + trace:= tracer.get_trace_N(i); + if trace <> nil then begin + console.writestring(' ['); + console.writestring('-'); + console.writeint(i); + console.writestring('] '); + console.writestringln(trace); + end; + end; + end else begin + console.writestringln('Unknown.') + end; halt_and_catch_fire(); end;