diff --git a/Asuro.iso b/Asuro.iso index b0aca997..96ee9847 100644 Binary files a/Asuro.iso and b/Asuro.iso differ diff --git a/bin/kernel.bin b/bin/kernel.bin index 88fd5cde..fcdf0b29 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 88fd5cde..fcdf0b29 100755 Binary files a/iso/boot/asuro.bin and b/iso/boot/asuro.bin differ diff --git a/lib/asuro.ppu b/lib/asuro.ppu index e3837f49..16873ef2 100644 Binary files a/lib/asuro.ppu and b/lib/asuro.ppu differ diff --git a/lib/kernel.ppu b/lib/kernel.ppu index e34a3c2e..77277d46 100644 Binary files a/lib/kernel.ppu and b/lib/kernel.ppu differ diff --git a/lib/libpconsole.a b/lib/libpconsole.a index da57e37d..8b16abd3 100644 Binary files a/lib/libpconsole.a and b/lib/libpconsole.a differ diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index a1f4e3fd..c6665ba9 100644 Binary files a/lib/libpmultiboot.a and b/lib/libpmultiboot.a differ diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 3f538b41..cfce1c01 100644 Binary files a/lib/libpsystem.a and b/lib/libpsystem.a differ diff --git a/lib/serial.ppu b/lib/serial.ppu index a457114c..0a126617 100644 Binary files a/lib/serial.ppu and b/lib/serial.ppu differ diff --git a/lib/strings.ppu b/lib/strings.ppu index c1c5b0c5..7cf819c0 100644 Binary files a/lib/strings.ppu and b/lib/strings.ppu differ diff --git a/lib/terminal.ppu b/lib/terminal.ppu index 835dc110..e5a5401b 100644 Binary files a/lib/terminal.ppu and b/lib/terminal.ppu differ diff --git a/run.sh b/run.sh index bb67c08e..e7caf8a6 100755 --- a/run.sh +++ b/run.sh @@ -8,11 +8,11 @@ echo " " echo "Running Asaro..." if [ "$1" = "-d" ] then - qemu-system-i386 -s -S -cdrom Asuro.iso& + qemu-system-i386 -serial pty -s -S -cdrom Asuro.iso& sleep 1 gdb -ex "target remote localhost:1234" else - qemu-system-i386 -monitor stdio -cdrom Asuro.iso + qemu-system-i386 -serial pty -monitor stdio -cdrom Asuro.iso fi if [ $? -ne 0 ] diff --git a/src/driver/interface/serial.pas b/src/driver/interface/serial.pas index 8d0942d1..4978e5cf 100644 --- a/src/driver/interface/serial.pas +++ b/src/driver/interface/serial.pas @@ -20,9 +20,9 @@ implementation uses console; -procedure hook(); +procedure IRQ_Hook(); begin - console.writestringln('SERIAL ISR FIRED!'); + end; procedure initPort(PORT : uint16); @@ -42,8 +42,6 @@ begin initPort(COM2); initPort(COM3); initPort(COM4); - isrmanager.registerISR(32 + 3, @Hook); - isrmanager.registerISR(32 + 4, @Hook); end; function serial_received(PORT : uint16) : uint32; @@ -63,7 +61,9 @@ var begin receive:= 0; _timeout:= timeout; - while (serial_received(PORT) = 0) do begin end; + while (serial_received(PORT) = 0) AND (_timeout > 0) do begin + dec(_timeout); + end; if _timeout <> 0 then begin receive:= inb(PORT); end; @@ -76,7 +76,9 @@ var begin send:= false; _timeout:= timeout; - while (is_transmit_empty(PORT) = 0) do begin end; + while (is_transmit_empty(PORT) = 0) and (_timeout > 0) do begin + dec(_timeout); + end; if _timeout <> 0 then begin outb(PORT, data); send:= true; diff --git a/src/include/asuro.pas b/src/include/asuro.pas index 5a4bc7db..97a8ec7b 100644 --- a/src/include/asuro.pas +++ b/src/include/asuro.pas @@ -3,11 +3,11 @@ unit asuro; interface const - VERSION = '1.0.0-594a'; + VERSION = '1.0.0-596a'; VERSION_MAJOR = '1'; VERSION_MINOR = '0'; VERSION_SUB = '0'; - REVISION = '594'; + REVISION = '596'; RELEASE = 'a'; implementation diff --git a/src/include/strings.pas b/src/include/strings.pas index 2e477913..322593d6 100644 --- a/src/include/strings.pas +++ b/src/include/strings.pas @@ -12,7 +12,7 @@ unit strings; interface uses - util, + util, lmemorymanager, lists; diff --git a/src/kernel.pas b/src/kernel.pas index 91727b7b..0e80bf69 100644 --- a/src/kernel.pas +++ b/src/kernel.pas @@ -154,7 +154,7 @@ begin { Console Init } console.init(); - serial.init(); + //serial.init(); { Call Tracer } tracer.init(); diff --git a/src/terminal.pas b/src/terminal.pas index 0cd47ec8..77fa1299 100644 --- a/src/terminal.pas +++ b/src/terminal.pas @@ -377,16 +377,16 @@ var begin success:= true; - success:= success AND Serial.Send(uint8('H'), COM1, 100000); - success:= success AND Serial.Send(uint8('E'), COM1, 100000); - success:= success AND Serial.Send(uint8('L'), COM1, 100000); - success:= success AND Serial.Send(uint8('L'), COM1, 100000); - success:= success AND Serial.Send(uint8('O'), COM1, 100000); - success:= success AND Serial.Send(uint8('W'), COM1, 100000); - success:= success AND Serial.Send(uint8('O'), COM1, 100000); - success:= success AND Serial.Send(uint8('R'), COM1, 100000); - success:= success AND Serial.Send(uint8('L'), COM1, 100000); - success:= success AND Serial.Send(uint8('D'), COM1, 100000); + success:= success AND Serial.Send(COM1, uint8('H'), 100000); + success:= success AND Serial.Send(COM1, uint8('E'), 100000); + success:= success AND Serial.Send(COM1, uint8('L'), 100000); + success:= success AND Serial.Send(COM1, uint8('L'), 100000); + success:= success AND Serial.Send(COM1, uint8('O'), 100000); + success:= success AND Serial.Send(COM1, uint8('W'), 100000); + success:= success AND Serial.Send(COM1, uint8('O'), 100000); + success:= success AND Serial.Send(COM1, uint8('R'), 100000); + success:= success AND Serial.Send(COM1, uint8('L'), 100000); + success:= success AND Serial.Send(COM1, uint8('D'), 100000); if success then begin console.writestringlnWND('Send Success!', TERMINAL_HWND); end else begin