diff --git a/Asuro.iso b/Asuro.iso index 00aedf70..31ffc8f2 100644 Binary files a/Asuro.iso and b/Asuro.iso differ diff --git a/bin/kernel.bin b/bin/kernel.bin index b7c227ea..29c0e493 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 b7c227ea..29c0e493 100755 Binary files a/iso/boot/asuro.bin and b/iso/boot/asuro.bin differ diff --git a/lib/console.o b/lib/console.o index 41b7853d..951309c4 100644 Binary files a/lib/console.o and b/lib/console.o differ diff --git a/lib/console.ppu b/lib/console.ppu index b128182b..2c35851f 100644 Binary files a/lib/console.ppu and b/lib/console.ppu differ diff --git a/lib/gdt.ppu b/lib/gdt.ppu index 59f30ac5..d1e4ddfd 100644 Binary files a/lib/gdt.ppu and b/lib/gdt.ppu differ diff --git a/lib/idt.ppu b/lib/idt.ppu index 1380caa3..b10801da 100644 Binary files a/lib/idt.ppu and b/lib/idt.ppu differ diff --git a/lib/isr.ppu b/lib/isr.ppu index 6dcaa9cf..9b42b9d8 100644 Binary files a/lib/isr.ppu and b/lib/isr.ppu differ diff --git a/lib/isr0.ppu b/lib/isr0.ppu index 03f21de9..e4a07e3d 100644 Binary files a/lib/isr0.ppu and b/lib/isr0.ppu differ diff --git a/lib/kernel.o b/lib/kernel.o index b4cd89e2..bdeb4622 100644 Binary files a/lib/kernel.o and b/lib/kernel.o differ diff --git a/lib/kernel.ppu b/lib/kernel.ppu index 7a8d36b2..94ff3e93 100644 Binary files a/lib/kernel.ppu and b/lib/kernel.ppu differ diff --git a/lib/keyboard.ppu b/lib/keyboard.ppu index 0ce0df56..6895b552 100644 Binary files a/lib/keyboard.ppu and b/lib/keyboard.ppu differ diff --git a/lib/libpconsole.a b/lib/libpconsole.a index 675d1588..74878503 100644 Binary files a/lib/libpconsole.a and b/lib/libpconsole.a differ diff --git a/lib/libpkernel.a b/lib/libpkernel.a index d5b49a76..79d2830f 100644 Binary files a/lib/libpkernel.a and b/lib/libpkernel.a differ diff --git a/lib/util.ppu b/lib/util.ppu index 40260752..f93c6525 100644 Binary files a/lib/util.ppu and b/lib/util.ppu differ diff --git a/src/console.pas b/src/console.pas index 5b77ac40..bdb120e0 100644 --- a/src/console.pas +++ b/src/console.pas @@ -15,6 +15,8 @@ uses util, bios_data_area; +const DEBUG = FALSE; + type TColor = ( Black = $0, Blue = $1, @@ -371,7 +373,7 @@ begin end; Console_Cursor.X:= 0; console._update_cursor; - psleep(500); + if DEBUG then psleep(500); end; procedure _newline(); [public, alias: '_console_newline']; diff --git a/src/drivers/isr0.pas b/src/drivers/isr0.pas index 142b4541..66eb3ec5 100644 --- a/src/drivers/isr0.pas +++ b/src/drivers/isr0.pas @@ -23,6 +23,7 @@ implementation procedure Main(); interrupt; begin + CLI; console.writestringln('Divide by Zero Exception.'); util.halt_and_catch_fire; end; diff --git a/src/drivers/isr1.pas b/src/drivers/isr1.pas index e90f2cbb..5d13865c 100644 --- a/src/drivers/isr1.pas +++ b/src/drivers/isr1.pas @@ -23,6 +23,7 @@ implementation procedure Main(); interrupt; begin + CLI; console.writestringln('Debug Exception.'); util.halt_and_catch_fire; end; diff --git a/src/drivers/isr10.pas b/src/drivers/isr10.pas index 0fd081b3..06318f0f 100644 --- a/src/drivers/isr10.pas +++ b/src/drivers/isr10.pas @@ -23,6 +23,7 @@ implementation procedure Main(); interrupt; begin + CLI; console.writestringln('Bad TSS Exception.'); util.halt_and_catch_fire; end; diff --git a/src/drivers/isr11.pas b/src/drivers/isr11.pas index d7f58b7b..0b0ac869 100644 --- a/src/drivers/isr11.pas +++ b/src/drivers/isr11.pas @@ -23,6 +23,7 @@ implementation procedure Main(); interrupt; begin + CLI; console.writestringln('Segment Not Present Exception.'); util.halt_and_catch_fire; end; diff --git a/src/drivers/isr12.pas b/src/drivers/isr12.pas index 84fcbed2..ccf88939 100644 --- a/src/drivers/isr12.pas +++ b/src/drivers/isr12.pas @@ -23,6 +23,7 @@ implementation procedure Main(); interrupt; begin + CLI; console.writestringln('Stack Fault Exception.'); util.halt_and_catch_fire; end; diff --git a/src/drivers/isr13.pas b/src/drivers/isr13.pas index 2d7fee36..55a593b3 100644 --- a/src/drivers/isr13.pas +++ b/src/drivers/isr13.pas @@ -23,6 +23,7 @@ implementation procedure Main(); interrupt; begin + CLI; console.writestringln('General Protection Fault.'); util.halt_and_catch_fire; end; diff --git a/src/drivers/isr14.pas b/src/drivers/isr14.pas index 8759894a..ce844a05 100644 --- a/src/drivers/isr14.pas +++ b/src/drivers/isr14.pas @@ -23,6 +23,7 @@ implementation procedure Main(); interrupt; begin + CLI; console.writestringln('Page Fault.'); util.halt_and_catch_fire; end; diff --git a/src/drivers/isr15.pas b/src/drivers/isr15.pas index 32b87b93..847d8e43 100644 --- a/src/drivers/isr15.pas +++ b/src/drivers/isr15.pas @@ -23,6 +23,7 @@ implementation procedure Main(); interrupt; begin + CLI; console.writestringln('Unknown Interrupt Exception.'); util.halt_and_catch_fire; end; diff --git a/src/drivers/isr16.pas b/src/drivers/isr16.pas index 69e70a94..d8f6492d 100644 --- a/src/drivers/isr16.pas +++ b/src/drivers/isr16.pas @@ -23,6 +23,7 @@ implementation procedure Main(); interrupt; begin + CLI; console.writestringln('Coprocessor Fault Exception.'); util.halt_and_catch_fire; end; diff --git a/src/drivers/isr17.pas b/src/drivers/isr17.pas index 49960dd7..66eec4f5 100644 --- a/src/drivers/isr17.pas +++ b/src/drivers/isr17.pas @@ -23,6 +23,7 @@ implementation procedure Main(); interrupt; begin + CLI; console.writestringln('Alignment Check Exception.'); util.halt_and_catch_fire; end; diff --git a/src/drivers/isr18.pas b/src/drivers/isr18.pas index d86460ff..8de3a970 100644 --- a/src/drivers/isr18.pas +++ b/src/drivers/isr18.pas @@ -23,6 +23,7 @@ implementation procedure Main(); interrupt; begin + CLI; console.writestringln('Machine Check Exception.'); util.halt_and_catch_fire; end; diff --git a/src/drivers/isr2.pas b/src/drivers/isr2.pas index 4c86bf12..142e8465 100644 --- a/src/drivers/isr2.pas +++ b/src/drivers/isr2.pas @@ -23,6 +23,7 @@ implementation procedure Main(); interrupt; begin + CLI; console.writestringln('NMI Exception.'); util.halt_and_catch_fire; end; diff --git a/src/drivers/isr3.pas b/src/drivers/isr3.pas index a7466707..0c9883b9 100644 --- a/src/drivers/isr3.pas +++ b/src/drivers/isr3.pas @@ -23,6 +23,7 @@ implementation procedure Main(); interrupt; begin + CLI; console.writestringln('Breakpoint Exception'); util.halt_and_catch_fire; end; diff --git a/src/drivers/isr32.pas b/src/drivers/isr32.pas index 8b3f72d0..56a74f99 100644 --- a/src/drivers/isr32.pas +++ b/src/drivers/isr32.pas @@ -28,12 +28,13 @@ implementation procedure Main; interrupt; //IRQ0, called every 55ms begin - //CLI; + CLI; console.writestringln('helo1'); if(procedure_ptr <> nil) then begin procedure_ptr(); end; outb($20, $20); + STI; end; procedure register(); diff --git a/src/drivers/isr33.pas b/src/drivers/isr33.pas index bc42070d..def2c768 100644 --- a/src/drivers/isr33.pas +++ b/src/drivers/isr33.pas @@ -28,12 +28,13 @@ implementation procedure Main; interrupt; //IRQ1, Keyboard Interrupt begin - //CLI; + CLI; console.writestringln('helo2'); if(procedure_ptr <> nil) then begin procedure_ptr(inb($60)); end; outb($20, $20); + STI; end; procedure register(); diff --git a/src/drivers/isr4.pas b/src/drivers/isr4.pas index 874f6d91..940114e5 100644 --- a/src/drivers/isr4.pas +++ b/src/drivers/isr4.pas @@ -23,6 +23,7 @@ implementation procedure Main(); interrupt; begin + CLI; console.writestringln('IDO Exception.'); util.halt_and_catch_fire; end; diff --git a/src/drivers/isr40.pas b/src/drivers/isr40.pas index 690e843d..5a21e104 100644 --- a/src/drivers/isr40.pas +++ b/src/drivers/isr40.pas @@ -28,12 +28,13 @@ implementation procedure Main; interrupt; //IRQ0, called every 55ms begin - //CLI; + CLI; console.writestringln('helo3'); if(procedure_ptr <> nil) then begin procedure_ptr(); end; outb($20, $20); + STI; end; procedure register(); diff --git a/src/drivers/isr5.pas b/src/drivers/isr5.pas index f10a9cdd..9aabb386 100644 --- a/src/drivers/isr5.pas +++ b/src/drivers/isr5.pas @@ -23,6 +23,7 @@ implementation procedure Main(); interrupt; begin + CLI; console.writestringln('OOB Exception.'); util.halt_and_catch_fire; end; diff --git a/src/drivers/isr6.pas b/src/drivers/isr6.pas index 29da1834..f3f70176 100644 --- a/src/drivers/isr6.pas +++ b/src/drivers/isr6.pas @@ -23,8 +23,8 @@ implementation procedure Main(); interrupt; begin - console.writestringln('Invalid OPCode Exception.'); - + CLI; + console.writestringln('Invalid OPCode Exception.'); util.halt_and_catch_fire; end; diff --git a/src/drivers/isr7.pas b/src/drivers/isr7.pas index 13bb9d64..c51f49fa 100644 --- a/src/drivers/isr7.pas +++ b/src/drivers/isr7.pas @@ -23,6 +23,7 @@ implementation procedure Main(); interrupt; begin + CLI; console.writestringln('No Coprocessor Exception.'); util.halt_and_catch_fire; end; diff --git a/src/drivers/isr8.pas b/src/drivers/isr8.pas index b71e71f0..073aa8a8 100644 --- a/src/drivers/isr8.pas +++ b/src/drivers/isr8.pas @@ -23,6 +23,7 @@ implementation procedure Main(); interrupt; begin + CLI; console.writestringln('Double Fault.'); util.halt_and_catch_fire; end; diff --git a/src/drivers/isr9.pas b/src/drivers/isr9.pas index dfbca2f3..acc39457 100644 --- a/src/drivers/isr9.pas +++ b/src/drivers/isr9.pas @@ -23,6 +23,7 @@ implementation procedure Main(); interrupt; begin + CLI; console.writestringln('Coprocessor Seg Overrun Exception.'); util.halt_and_catch_fire; end; diff --git a/src/kernel.pas b/src/kernel.pas index 0bcaae2d..f6829d2e 100644 --- a/src/kernel.pas +++ b/src/kernel.pas @@ -44,6 +44,8 @@ begin isr.init(); irq.init(); + asm STI end; + asm MOV dds, CS end; diff --git a/src/util.pas b/src/util.pas index 4619b93e..b1d13235 100644 --- a/src/util.pas +++ b/src/util.pas @@ -14,6 +14,7 @@ unit util; interface procedure CLI(); +procedure STI(); function hi(b : uint8) : uint8; function lo(b : uint8) : uint8; function switchendian(b : uint8) : uint8; @@ -45,6 +46,11 @@ asm CLI end; +procedure STI(); assembler; nostackframe; +asm + STI +end; + function switchendian(b : uint8) : uint8; [public, alias: 'util_switchendian']; begin switchendian:= (lo(b) SHL 4) OR hi(b);