diff --git a/Asuro.iso b/Asuro.iso index be3e040b..a215036d 100644 Binary files a/Asuro.iso and b/Asuro.iso differ diff --git a/iso/boot/asuro.bin b/iso/boot/asuro.bin index 075dc653..3e7ebd2b 100755 Binary files a/iso/boot/asuro.bin and b/iso/boot/asuro.bin differ diff --git a/lib/console.ppu b/lib/console.ppu index 2a8f1bc1..5c416903 100644 Binary files a/lib/console.ppu and b/lib/console.ppu differ diff --git a/lib/idt.ppu b/lib/idt.ppu index 07ad4788..0a206c20 100644 Binary files a/lib/idt.ppu and b/lib/idt.ppu differ diff --git a/lib/irq.ppu b/lib/irq.ppu index fca17a82..8d3bb7b8 100644 Binary files a/lib/irq.ppu and b/lib/irq.ppu differ diff --git a/lib/isr0.ppu b/lib/isr0.ppu index 2dde928f..f255977e 100644 Binary files a/lib/isr0.ppu and b/lib/isr0.ppu differ diff --git a/lib/isr1.ppu b/lib/isr1.ppu index 732df46c..b5313edd 100644 Binary files a/lib/isr1.ppu and b/lib/isr1.ppu differ diff --git a/lib/isr10.ppu b/lib/isr10.ppu index 0d3982f5..f1926922 100644 Binary files a/lib/isr10.ppu and b/lib/isr10.ppu differ diff --git a/lib/isr11.ppu b/lib/isr11.ppu index 1282659b..b775a154 100644 Binary files a/lib/isr11.ppu and b/lib/isr11.ppu differ diff --git a/lib/isr12.ppu b/lib/isr12.ppu index b6e34812..eb02d3e5 100644 Binary files a/lib/isr12.ppu and b/lib/isr12.ppu differ diff --git a/lib/isr13.ppu b/lib/isr13.ppu index 04c91d05..5221f7c6 100644 Binary files a/lib/isr13.ppu and b/lib/isr13.ppu differ diff --git a/lib/isr14.ppu b/lib/isr14.ppu index bdd9cd39..3b0fb447 100644 Binary files a/lib/isr14.ppu and b/lib/isr14.ppu differ diff --git a/lib/isr15.ppu b/lib/isr15.ppu index 03f68c7a..d7208889 100644 Binary files a/lib/isr15.ppu and b/lib/isr15.ppu differ diff --git a/lib/isr16.ppu b/lib/isr16.ppu index 65e81bf7..418a7b60 100644 Binary files a/lib/isr16.ppu and b/lib/isr16.ppu differ diff --git a/lib/isr17.ppu b/lib/isr17.ppu index f1d1a9b0..76f6c794 100644 Binary files a/lib/isr17.ppu and b/lib/isr17.ppu differ diff --git a/lib/isr18.ppu b/lib/isr18.ppu index 720459cf..940649ec 100644 Binary files a/lib/isr18.ppu and b/lib/isr18.ppu differ diff --git a/lib/isr2.ppu b/lib/isr2.ppu index 3e5e13ea..c8b0a4dd 100644 Binary files a/lib/isr2.ppu and b/lib/isr2.ppu differ diff --git a/lib/isr3.ppu b/lib/isr3.ppu index 725c0378..e8ff35a0 100644 Binary files a/lib/isr3.ppu and b/lib/isr3.ppu differ diff --git a/lib/isr32.ppu b/lib/isr32.ppu index f0aba139..db28b7ae 100644 Binary files a/lib/isr32.ppu and b/lib/isr32.ppu differ diff --git a/lib/isr33.ppu b/lib/isr33.ppu index b4a524fa..dacb7aee 100644 Binary files a/lib/isr33.ppu and b/lib/isr33.ppu differ diff --git a/lib/isr4.ppu b/lib/isr4.ppu index 0a5d950f..cef14086 100644 Binary files a/lib/isr4.ppu and b/lib/isr4.ppu differ diff --git a/lib/isr40.ppu b/lib/isr40.ppu index 9537f1eb..2d3ad2fe 100644 Binary files a/lib/isr40.ppu and b/lib/isr40.ppu differ diff --git a/lib/isr5.ppu b/lib/isr5.ppu index 6b1fa541..9850a26c 100644 Binary files a/lib/isr5.ppu and b/lib/isr5.ppu differ diff --git a/lib/isr6.ppu b/lib/isr6.ppu index 72663fb6..ee3ab42a 100644 Binary files a/lib/isr6.ppu and b/lib/isr6.ppu differ diff --git a/lib/isr7.ppu b/lib/isr7.ppu index 7a99a337..598005dd 100644 Binary files a/lib/isr7.ppu and b/lib/isr7.ppu differ diff --git a/lib/isr8.ppu b/lib/isr8.ppu index 05899f7d..e3e839e1 100644 Binary files a/lib/isr8.ppu and b/lib/isr8.ppu differ diff --git a/lib/isr9.ppu b/lib/isr9.ppu index 1e6811ac..1137442a 100644 Binary files a/lib/isr9.ppu and b/lib/isr9.ppu differ diff --git a/lib/kernel.ppu b/lib/kernel.ppu index 7638a71e..62579778 100644 Binary files a/lib/kernel.ppu and b/lib/kernel.ppu differ diff --git a/lib/keyboard.ppu b/lib/keyboard.ppu index 100b457e..740580be 100644 Binary files a/lib/keyboard.ppu and b/lib/keyboard.ppu differ diff --git a/lib/libpconsole.a b/lib/libpconsole.a index 28036a58..5ec73ab8 100644 Binary files a/lib/libpconsole.a and b/lib/libpconsole.a differ diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index 4face518..628c4421 100644 Binary files a/lib/libpmultiboot.a and b/lib/libpmultiboot.a differ diff --git a/lib/libpsystem.a b/lib/libpsystem.a index d5967f81..1ace77b8 100644 Binary files a/lib/libpsystem.a and b/lib/libpsystem.a differ diff --git a/lib/memorymanager.ppu b/lib/memorymanager.ppu deleted file mode 100644 index 8552070d..00000000 Binary files a/lib/memorymanager.ppu and /dev/null differ diff --git a/lib/paging.ppu b/lib/paging.ppu deleted file mode 100644 index 74f2d03d..00000000 Binary files a/lib/paging.ppu and /dev/null differ diff --git a/lib/pmemorymanager.ppu b/lib/pmemorymanager.ppu new file mode 100644 index 00000000..c7567ae7 Binary files /dev/null and b/lib/pmemorymanager.ppu differ diff --git a/lib/scheduler.ppu b/lib/scheduler.ppu index d0d99e34..53479f24 100644 Binary files a/lib/scheduler.ppu and b/lib/scheduler.ppu differ diff --git a/lib/stub.o b/lib/stub.o index 798765be..51bd074b 100644 Binary files a/lib/stub.o and b/lib/stub.o differ diff --git a/lib/util.ppu b/lib/util.ppu index 20e05682..02b996b8 100644 Binary files a/lib/util.ppu and b/lib/util.ppu differ diff --git a/lib/vmemorymanager.ppu b/lib/vmemorymanager.ppu new file mode 100644 index 00000000..4443d9f4 Binary files /dev/null and b/lib/vmemorymanager.ppu differ diff --git a/src/kernel.pas b/src/kernel.pas index 416590b7..8cceb3f9 100644 --- a/src/kernel.pas +++ b/src/kernel.pas @@ -13,9 +13,9 @@ uses console, bios_data_area, keyboard, - memorymanager, - scheduler, - paging; + vmemorymanager, + pmemorymanager, + scheduler; procedure kmain(mbinfo: Pmultiboot_info_t; mbmagic: uint32); stdcall; @@ -51,19 +51,21 @@ begin idt.init(); isr.init(); irq.init(); - memorymanager.init(); + pmemorymanager.init(); scheduler.init(); STI; isr32.hook(uint32(@bios_data_area.tick_update)); - {z:= 1; + z:= 1; while true do begin - console.writeintln(z); - pint:= kalloc(65000); + console.writeword(z); + console.writestring(': '); + pint:= kalloc(1024*4); + console.writewordln(uint32(pint)); if pint = nil then while true do begin end else pint^:= 1234; z:=z+1; - end;} + end; //drivers keyboard.init(keyboard_layout); diff --git a/src/memorymanager.pas b/src/pmemorymanager.pas similarity index 88% rename from src/memorymanager.pas rename to src/pmemorymanager.pas index 265a73d7..495f0f4d 100644 --- a/src/memorymanager.pas +++ b/src/pmemorymanager.pas @@ -1,14 +1,15 @@ -unit memorymanager; +unit pmemorymanager; interface uses util, - console; + console, + vmemorymanager; const ALLOC_SPACE = 8; //64-Bit Allocations - MAX_ENTRIES = $FFFF; + MAX_ENTRIES = $FFFFF; procedure init; function kalloc(size : uint32) : void; @@ -41,7 +42,7 @@ end; function kalloc(size : uint32) : void; var - blocks : uint8; + blocks : uint32; rem : uint32; i,j : uint32; miss : boolean; @@ -66,11 +67,11 @@ begin Memory_Manager[i+j].Length:= 0; if j = 0 then Memory_Manager[i+j].Length:= blocks; end; - //console.writestring('Allocated '); - //console.writeint(blocks); - //console.writestring(' Block(s). [Block: '); - //console.writeint(i); - //console.writestringln(']'); + console.writestring('Allocated '); + console.writeint(blocks); + console.writestring(' Block(s). [Block: '); + console.writeint(i); + console.writestringln(']'); break; end; end; diff --git a/src/scheduler.pas b/src/scheduler.pas index 2c90c4a0..a6225113 100644 --- a/src/scheduler.pas +++ b/src/scheduler.pas @@ -5,12 +5,16 @@ interface uses console, isr32, - memorymanager; + pmemorymanager; const Quantum = 64; type + TTask_State_Segment = packed record + + end; + TScheduler_Entry = packed record ThreadID : uint32; Priority : uint8; diff --git a/src/stub/stub.asm b/src/stub/stub.asm index b258b067..a1e66e96 100644 --- a/src/stub/stub.asm +++ b/src/stub/stub.asm @@ -97,5 +97,6 @@ section .bss ; Kernel stack location ; align 32 +global KERNEL_STACK KERNEL_STACK: resb KERNEL_STACKSIZE diff --git a/src/util.pas b/src/util.pas index 3f5d7351..2ae715dd 100644 --- a/src/util.pas +++ b/src/util.pas @@ -34,6 +34,7 @@ procedure psleep(t : uint16); var endptr : uint32; external name '__end'; + stack : uint32; external name 'KERNEL_STACK'; implementation @@ -135,7 +136,7 @@ begin asm PUSH EAX PUSH EDX - MOV DX, port + MOV DX, port$FFFF IN EAX, DX MOV inl, EAX POP EDX diff --git a/src/paging.pas b/src/vmemorymanager.pas similarity index 91% rename from src/paging.pas rename to src/vmemorymanager.pas index 6123859c..a078b05c 100644 --- a/src/paging.pas +++ b/src/vmemorymanager.pas @@ -1,10 +1,9 @@ -unit paging; +unit vmemorymanager; interface type - PPageTableEntry = ^TPageTableEntry; - + {PPageTableEntry = ^TPageTableEntry; TPageTableEntry = bitpacked record Present, Writable, @@ -17,7 +16,7 @@ type GlobalPage: Boolean; Available: UBit3; FrameAddress: UBit20; - end; + end;} PPageDirEntry = ^TPageDirEntry; TPageDirEntry = bitpacked record