diff --git a/Asuro.iso b/Asuro.iso index bc99ecf1..e3b75eb4 100644 Binary files a/Asuro.iso and b/Asuro.iso differ diff --git a/bin/kernel.bin b/bin/kernel.bin index b5af3b26..958b6517 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 b5af3b26..958b6517 100755 Binary files a/iso/boot/asuro.bin and b/iso/boot/asuro.bin differ diff --git a/lib/ACE.ppu b/lib/ACE.ppu index 9419cf16..eb45ec08 100644 Binary files a/lib/ACE.ppu and b/lib/ACE.ppu differ diff --git a/lib/BPE.ppu b/lib/BPE.ppu index 2ad8cff7..e54582ad 100644 Binary files a/lib/BPE.ppu and b/lib/BPE.ppu differ diff --git a/lib/BTSSE.ppu b/lib/BTSSE.ppu index 3400fede..064784cd 100644 Binary files a/lib/BTSSE.ppu and b/lib/BTSSE.ppu differ diff --git a/lib/CFE.ppu b/lib/CFE.ppu index fe947b4c..2961085e 100644 Binary files a/lib/CFE.ppu and b/lib/CFE.ppu differ diff --git a/lib/CSOE.ppu b/lib/CSOE.ppu index 6e177e3a..e21ee5f7 100644 Binary files a/lib/CSOE.ppu and b/lib/CSOE.ppu differ diff --git a/lib/DBGE.ppu b/lib/DBGE.ppu index fecc5c1d..d44bcee1 100644 Binary files a/lib/DBGE.ppu and b/lib/DBGE.ppu differ diff --git a/lib/DBZ.ppu b/lib/DBZ.ppu index ff316040..7c07662a 100644 Binary files a/lib/DBZ.ppu and b/lib/DBZ.ppu differ diff --git a/lib/DFE.ppu b/lib/DFE.ppu index 0db5bf14..615b4f42 100644 Binary files a/lib/DFE.ppu and b/lib/DFE.ppu differ diff --git a/lib/E1000.ppu b/lib/E1000.ppu index d5c31c0c..1a14c503 100644 Binary files a/lib/E1000.ppu and b/lib/E1000.ppu differ diff --git a/lib/GPF.ppu b/lib/GPF.ppu index 045883d5..ccfb44e2 100644 Binary files a/lib/GPF.ppu and b/lib/GPF.ppu differ diff --git a/lib/IDE.ppu b/lib/IDE.ppu index f30ca956..ea5a2509 100644 Binary files a/lib/IDE.ppu and b/lib/IDE.ppu differ diff --git a/lib/IDOE.ppu b/lib/IDOE.ppu index 3fd2be6f..ddf53446 100644 Binary files a/lib/IDOE.ppu and b/lib/IDOE.ppu differ diff --git a/lib/IOPE.ppu b/lib/IOPE.ppu index 4a83dcb1..a047d183 100644 Binary files a/lib/IOPE.ppu and b/lib/IOPE.ppu differ diff --git a/lib/MCE.ppu b/lib/MCE.ppu index 0b882da3..231b0c56 100644 Binary files a/lib/MCE.ppu and b/lib/MCE.ppu differ diff --git a/lib/NCE.ppu b/lib/NCE.ppu index 7e9e22a1..9cd1a84a 100644 Binary files a/lib/NCE.ppu and b/lib/NCE.ppu differ diff --git a/lib/NMIE.ppu b/lib/NMIE.ppu index cc161738..ea1ec51f 100644 Binary files a/lib/NMIE.ppu and b/lib/NMIE.ppu differ diff --git a/lib/OOBE.ppu b/lib/OOBE.ppu index 76c58d65..55262c46 100644 Binary files a/lib/OOBE.ppu and b/lib/OOBE.ppu differ diff --git a/lib/PCI.ppu b/lib/PCI.ppu index cc293d41..0c3aea76 100644 Binary files a/lib/PCI.ppu and b/lib/PCI.ppu differ diff --git a/lib/PF.ppu b/lib/PF.ppu index 1860d43b..bc583034 100644 Binary files a/lib/PF.ppu and b/lib/PF.ppu differ diff --git a/lib/PS2_KEYBOARD_ISR.ppu b/lib/PS2_KEYBOARD_ISR.ppu index 58b17e7b..aec5a294 100644 Binary files a/lib/PS2_KEYBOARD_ISR.ppu and b/lib/PS2_KEYBOARD_ISR.ppu differ diff --git a/lib/RTC.ppu b/lib/RTC.ppu index add97530..04321b94 100644 Binary files a/lib/RTC.ppu and b/lib/RTC.ppu differ diff --git a/lib/SFE.ppu b/lib/SFE.ppu index 52ff98fb..166e91a1 100644 Binary files a/lib/SFE.ppu and b/lib/SFE.ppu differ diff --git a/lib/SNPE.ppu b/lib/SNPE.ppu index 66b53445..a0874f8e 100644 Binary files a/lib/SNPE.ppu and b/lib/SNPE.ppu differ diff --git a/lib/TMR_0_ISR.ppu b/lib/TMR_0_ISR.ppu index 3a098106..632004bf 100644 Binary files a/lib/TMR_0_ISR.ppu and b/lib/TMR_0_ISR.ppu differ diff --git a/lib/UIE.ppu b/lib/UIE.ppu index 43f6e49c..35afe69d 100644 Binary files a/lib/UIE.ppu and b/lib/UIE.ppu differ diff --git a/lib/USB.ppu b/lib/USB.ppu index 14b34e6c..bc704618 100644 Binary files a/lib/USB.ppu and b/lib/USB.ppu differ diff --git a/lib/arp.ppu b/lib/arp.ppu index 703b72bb..7a72f582 100644 Binary files a/lib/arp.ppu and b/lib/arp.ppu differ diff --git a/lib/asuro.ppu b/lib/asuro.ppu index 034249a3..7d650df7 100644 Binary files a/lib/asuro.ppu and b/lib/asuro.ppu differ diff --git a/lib/bios_data_area.ppu b/lib/bios_data_area.ppu index 3ecfe26e..c818b467 100644 Binary files a/lib/bios_data_area.ppu and b/lib/bios_data_area.ppu differ diff --git a/lib/console.ppu b/lib/console.ppu index d61276c6..6a013be6 100644 Binary files a/lib/console.ppu and b/lib/console.ppu differ diff --git a/lib/drivermanagement.ppu b/lib/drivermanagement.ppu index b6f0acda..97d7f92c 100644 Binary files a/lib/drivermanagement.ppu and b/lib/drivermanagement.ppu differ diff --git a/lib/drivertypes.ppu b/lib/drivertypes.ppu index fa6774a5..93d5a92d 100644 Binary files a/lib/drivertypes.ppu and b/lib/drivertypes.ppu differ diff --git a/lib/eth2.ppu b/lib/eth2.ppu index aa3b0595..55df0062 100644 Binary files a/lib/eth2.ppu and b/lib/eth2.ppu differ diff --git a/lib/fat32.ppu b/lib/fat32.ppu index 26ef51c9..9074a0dc 100644 Binary files a/lib/fat32.ppu and b/lib/fat32.ppu differ diff --git a/lib/faults.ppu b/lib/faults.ppu index 825a52e7..27c01826 100644 Binary files a/lib/faults.ppu and b/lib/faults.ppu differ diff --git a/lib/fonts.ppu b/lib/fonts.ppu index 1c165d93..a82b9113 100644 Binary files a/lib/fonts.ppu and b/lib/fonts.ppu differ diff --git a/lib/gdt.ppu b/lib/gdt.ppu index 4b5c33ef..a9c9ef34 100644 Binary files a/lib/gdt.ppu and b/lib/gdt.ppu differ diff --git a/lib/idt.ppu b/lib/idt.ppu index 9492333a..a2ff9244 100644 Binary files a/lib/idt.ppu and b/lib/idt.ppu differ diff --git a/lib/ipv4.ppu b/lib/ipv4.ppu index b1960e04..49222cb6 100644 Binary files a/lib/ipv4.ppu and b/lib/ipv4.ppu differ diff --git a/lib/irq.ppu b/lib/irq.ppu index 7b36f23a..1089dfc7 100644 Binary files a/lib/irq.ppu and b/lib/irq.ppu differ diff --git a/lib/isr.ppu b/lib/isr.ppu index f5054f98..4ab52e9b 100644 Binary files a/lib/isr.ppu and b/lib/isr.ppu differ diff --git a/lib/isr_types.ppu b/lib/isr_types.ppu index 544bbcf9..dc4e0138 100644 Binary files a/lib/isr_types.ppu and b/lib/isr_types.ppu differ diff --git a/lib/isrmanager.ppu b/lib/isrmanager.ppu index 84b16f02..5d7fcf8b 100644 Binary files a/lib/isrmanager.ppu and b/lib/isrmanager.ppu differ diff --git a/lib/kernel.ppu b/lib/kernel.ppu index 779bdbc8..57073302 100644 Binary files a/lib/kernel.ppu and b/lib/kernel.ppu differ diff --git a/lib/keyboard.ppu b/lib/keyboard.ppu index fcdc5b78..4fe7cd3a 100644 Binary files a/lib/keyboard.ppu and b/lib/keyboard.ppu differ diff --git a/lib/libpconsole.a b/lib/libpconsole.a index e7cae0a6..fb0b9657 100644 Binary files a/lib/libpconsole.a and b/lib/libpconsole.a differ diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index 937e51fd..82365089 100644 Binary files a/lib/libpmultiboot.a and b/lib/libpmultiboot.a differ diff --git a/lib/libpsystem.a b/lib/libpsystem.a index ebe7e389..b6eea8bd 100644 Binary files a/lib/libpsystem.a and b/lib/libpsystem.a differ diff --git a/lib/lists.ppu b/lib/lists.ppu index 1f6f5710..12614fd0 100644 Binary files a/lib/lists.ppu and b/lib/lists.ppu differ diff --git a/lib/lmemorymanager.ppu b/lib/lmemorymanager.ppu index 6a0466a2..fd12426a 100644 Binary files a/lib/lmemorymanager.ppu and b/lib/lmemorymanager.ppu differ diff --git a/lib/mouse.ppu b/lib/mouse.ppu index d033f167..5238dff9 100644 Binary files a/lib/mouse.ppu and b/lib/mouse.ppu differ diff --git a/lib/multiboot.ppu b/lib/multiboot.ppu index a4701097..cd83ad5b 100644 Binary files a/lib/multiboot.ppu and b/lib/multiboot.ppu differ diff --git a/lib/net.ppu b/lib/net.ppu index 8a0b10ac..145d409b 100644 Binary files a/lib/net.ppu and b/lib/net.ppu differ diff --git a/lib/nettypes.ppu b/lib/nettypes.ppu index c1408ef6..aaf5d503 100644 Binary files a/lib/nettypes.ppu and b/lib/nettypes.ppu differ diff --git a/lib/netutils.ppu b/lib/netutils.ppu index f2df250a..c4b9f295 100644 Binary files a/lib/netutils.ppu and b/lib/netutils.ppu differ diff --git a/lib/pmemorymanager.ppu b/lib/pmemorymanager.ppu index c175c11a..ef788382 100644 Binary files a/lib/pmemorymanager.ppu and b/lib/pmemorymanager.ppu differ diff --git a/lib/scheduler.ppu b/lib/scheduler.ppu index a657a719..5822b65f 100644 Binary files a/lib/scheduler.ppu and b/lib/scheduler.ppu differ diff --git a/lib/serial.ppu b/lib/serial.ppu index 1d114475..cd6afa45 100644 Binary files a/lib/serial.ppu and b/lib/serial.ppu differ diff --git a/lib/storagemanagement.ppu b/lib/storagemanagement.ppu index 044ee7e9..eeecf5f5 100644 Binary files a/lib/storagemanagement.ppu and b/lib/storagemanagement.ppu differ diff --git a/lib/strings.ppu b/lib/strings.ppu index 4ba6b487..68809fe6 100644 Binary files a/lib/strings.ppu and b/lib/strings.ppu differ diff --git a/lib/system.o b/lib/system.o index 16260189..9d7a5eb5 100644 Binary files a/lib/system.o and b/lib/system.o differ diff --git a/lib/system.ppu b/lib/system.ppu index 7079880d..704d4a22 100644 Binary files a/lib/system.ppu and b/lib/system.ppu differ diff --git a/lib/terminal.ppu b/lib/terminal.ppu index 13ce1cd5..c21835ec 100644 Binary files a/lib/terminal.ppu and b/lib/terminal.ppu differ diff --git a/lib/testdriver.ppu b/lib/testdriver.ppu index 4fed0128..82231cc5 100644 Binary files a/lib/testdriver.ppu and b/lib/testdriver.ppu differ diff --git a/lib/tracer.ppu b/lib/tracer.ppu index c1a2d716..77ae3b3f 100644 Binary files a/lib/tracer.ppu and b/lib/tracer.ppu differ diff --git a/lib/tss.ppu b/lib/tss.ppu index 432329b1..86bac141 100644 Binary files a/lib/tss.ppu and b/lib/tss.ppu differ diff --git a/lib/util.ppu b/lib/util.ppu index 59d5fed3..c4fc030d 100644 Binary files a/lib/util.ppu and b/lib/util.ppu differ diff --git a/lib/vmemorymanager.ppu b/lib/vmemorymanager.ppu index 5516cdc1..2dcca155 100644 Binary files a/lib/vmemorymanager.ppu and b/lib/vmemorymanager.ppu differ diff --git a/src/include/asuro.pas b/src/include/asuro.pas index 97a8ec7b..3dcaba46 100644 --- a/src/include/asuro.pas +++ b/src/include/asuro.pas @@ -3,11 +3,11 @@ unit asuro; interface const - VERSION = '1.0.0-596a'; + VERSION = '1.0.0-599a'; VERSION_MAJOR = '1'; VERSION_MINOR = '0'; VERSION_SUB = '0'; - REVISION = '596'; + REVISION = '599'; RELEASE = 'a'; implementation diff --git a/src/include/system.pas b/src/include/system.pas index 68762376..1f1ee81c 100644 --- a/src/include/system.pas +++ b/src/include/system.pas @@ -14,9 +14,10 @@ interface const KERNEL_VIRTUAL_BASE = $C0000000; KERNEL_PAGE_NUMBER = KERNEL_VIRTUAL_BASE SHR 22; - BSOD_ENABLE = false; + BSOD_ENABLE = true; TRACER_ENABLE = true; CONSOLE_SLOW_REDRAW = false; //Redraws the Window manager after every character, but slows performance. + TRACE_TO_SERIAL = true; type //internal types diff --git a/src/include/util.pas b/src/include/util.pas index 2d8e1b8e..d41dfd76 100644 --- a/src/include/util.pas +++ b/src/include/util.pas @@ -372,7 +372,7 @@ begin if trace <> nil then begin console.writestring('[-0] '); console.writestringln(trace); - for i:=1 to 6 do begin + for i:=1 to tracer.get_trace_count-1 do begin trace:= tracer.get_trace_N(i); if trace <> nil then begin console.writestring(' ['); diff --git a/src/tracer.pas b/src/tracer.pas index b40ae469..83ba3eb4 100644 --- a/src/tracer.pas +++ b/src/tracer.pas @@ -13,12 +13,17 @@ function get_trace_N(idx : uint32) : pchar; implementation uses - console, util, lists, strings; + console, util, lists, strings, serial; + +const + MAX_TRACE = 40; + SERIALID = '[TRACER] '; var t_ready : Boolean; Locked : Boolean; TraceStack : PLinkedListBase; + Traces : Array[0..MAX_TRACE-1] of PChar; procedure freeze; begin @@ -27,16 +32,24 @@ end; procedure push_trace(t_name : pchar); var - mem : void; + i : uint32; begin if TRACER_ENABLE then begin if t_ready then begin if not Locked then begin Locked:= true; - mem:= LL_Insert(TraceStack, 0); - memset(uint32(mem), 0, StringSize(t_name) + 5); - memcpy(uint32(t_name), uint32(mem), StringSize(t_name) + 1); + for i:=MAX_TRACE-1 downto 1 do begin + Traces[i]:= Traces[i-1]; + end; + Traces[0]:= StringCopy(t_name); + for i:=0 to StringSize(SERIALID)-1 do begin + serial.send(COM1, uint8(SERIALID[i]), 10); + end; + for i:=0 to StringSize(t_name)-1 do begin + serial.send(COM1, uint8(t_name[i]), 10); + end; + serial.send(COM1, 10, 10); Locked:= false; end; end; @@ -45,31 +58,17 @@ end; procedure pop_trace; begin - if TRACER_ENABLE then begin - if t_ready then begin - if not Locked then begin - Locked:= true; - LL_Delete(TraceStack, 0); - Locked:= false; - end; - end; - end; + end; function get_last_trace : pchar; begin - get_last_trace:= nil; - if TRACER_ENABLE then begin - if t_ready then begin - get_last_trace:= pchar(LL_Get(TraceStack, 0)); - end; - end; + get_last_trace:= Traces[0]; end; procedure init; begin if TRACER_ENABLE then begin - TraceStack:= LL_New(255); t_ready:= true; push_trace('kmain'); end; @@ -78,14 +77,15 @@ end; function get_trace_count : uint32; begin if TRACER_ENABLE then begin - get_trace_count:= LL_Size(TraceStack); + get_trace_count:= MAX_TRACE; end; end; function get_trace_N(idx : uint32) : pchar; begin + if idx > MAX_TRACE-1 then exit; if TRACER_ENABLE then begin - get_trace_N:= pchar(LL_Get(TraceStack, idx)); + get_trace_N:= traces[idx]; end; end;