diff --git a/Asuro.iso b/Asuro.iso index 1e33bad8..87783d83 100644 Binary files a/Asuro.iso and b/Asuro.iso differ diff --git a/bin/kernel.bin b/bin/kernel.bin index c39ce6b7..dea6f544 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 c39ce6b7..dea6f544 100755 Binary files a/iso/boot/asuro.bin and b/iso/boot/asuro.bin differ diff --git a/lib/bios_data_area.ppu b/lib/bios_data_area.ppu index b9d0120d..67c3eb06 100644 Binary files a/lib/bios_data_area.ppu and b/lib/bios_data_area.ppu differ diff --git a/lib/kernel.ppu b/lib/kernel.ppu index f09202b7..139ef09d 100644 Binary files a/lib/kernel.ppu and b/lib/kernel.ppu differ diff --git a/lib/libpconsole.a b/lib/libpconsole.a index 402b6715..f223ed6f 100644 Binary files a/lib/libpconsole.a and b/lib/libpconsole.a differ diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index f3e098b6..6b675a98 100644 Binary files a/lib/libpmultiboot.a and b/lib/libpmultiboot.a differ diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 1189406d..23da724a 100644 Binary files a/lib/libpsystem.a and b/lib/libpsystem.a differ diff --git a/lib/pmemorymanager.ppu b/lib/pmemorymanager.ppu index 672ab095..25c724dc 100644 Binary files a/lib/pmemorymanager.ppu and b/lib/pmemorymanager.ppu differ diff --git a/lib/vmemorymanager.ppu b/lib/vmemorymanager.ppu index ab71b462..d8495500 100644 Binary files a/lib/vmemorymanager.ppu and b/lib/vmemorymanager.ppu differ diff --git a/src/pmemorymanager.pas b/src/pmemorymanager.pas index 35c31f66..0fb55a00 100644 --- a/src/pmemorymanager.pas +++ b/src/pmemorymanager.pas @@ -97,13 +97,13 @@ procedure force_alloc_block(block : uint16; caller : uint32); begin PhysicalMemory[block].Allocated:= True; PhysicalMemory[block].MappedTo:= caller; - console.writestring('PMM: 4MiB Block Force Allocated @ '); - console.writeword(block); - console.writestring(' ['); - console.writehex(block SHL 22); - console.writestring(' - '); - console.writehex(((block+1) SHL 22)); - console.writestringln(']'); + // console.writestring('PMM: 4MiB Block Force Allocated @ '); + // console.writeword(block); + // console.writestring(' ['); + // console.writehex(block SHL 22); + // console.writestring(' - '); + // console.writehex(((block+1) SHL 22)); + // console.writestringln(']'); end; procedure init; @@ -128,13 +128,13 @@ begin end else begin PhysicalMemory[block].Allocated:= True; PhysicalMemory[block].MappedTo:= caller; - console.writestring('PMM: 4MiB Block Allocated @ '); - console.writeword(block); - console.writestring(' ['); - console.writehex(block SHL 22); - console.writestring(' - '); - console.writehex(((block+1) SHL 22)); - console.writestringln(']'); + // console.writestring('PMM: 4MiB Block Allocated @ '); + // console.writeword(block); + // console.writestring(' ['); + // console.writehex(block SHL 22); + // console.writestring(' - '); + // console.writehex(((block+1) SHL 22)); + // console.writestringln(']'); alloc_block:= true; end; end else begin diff --git a/src/terminal.pas b/src/terminal.pas index bdcda68c..2248ff1b 100644 --- a/src/terminal.pas +++ b/src/terminal.pas @@ -7,14 +7,55 @@ uses keyboard, util; +type + TCommandBuffer = array[0..1023] of byte; + TCommandMethod = procedure(buf : TCommandBuffer); + TCommand = record + registered : boolean; + command : pchar; + method : TCommandMethod; + end; + var - buffer : array[0..1023] of byte; - bIndex : uint32 = 0; + buffer : TCommandBuffer; + bIndex : uint32 = 0; + Commands : array[0..65534] of TCommand; procedure run; +procedure registerCommand(command : pchar; method : TCommandMethod); implementation +procedure version(buffer : TCommandBuffer); +begin + writestringln('Asuro v1.0'); +end; + +procedure registerCommand(command : pchar; method : TCommandMethod); +var + index : uint32; + +begin + index:= 0; + while Commands[index].registered = true do inc(index); + Commands[index].registered:= true; + Commands[index].Command:= command; + Commands[index].method:= method; +end; + +procedure upper; +var + i : uint32; + +begin + for i:=0 to bIndex do begin + if char(buffer[i]) = ' ' then exit; + if (buffer[i] >= 97) and (buffer[i] <= 122) then begin + buffer[i]:= buffer[i] - 32; + end; + end; +end; + function isCommand(command : pchar) : boolean; var i : uint32; @@ -33,18 +74,19 @@ end; procedure process_command; var fallthrough : boolean; + i : uint32; begin console.writecharln(' '); - //Process Here fallthrough:= true; - if isCommand('version') then begin - console.writestringln('Asuro v1.0'); - fallthrough:= false; - end; - if isCommand('clear') then begin - console.clear(); - fallthrough:= false; + upper; + for i:=0 to 65534 do begin + if Commands[i].registered then begin + if isCommand(Commands[i].command) then begin + Commands[i].method(buffer); + fallthrough:= false; + end; + end; end; if fallthrough then begin console.writestringln('Unknown Command.'); @@ -77,7 +119,9 @@ end; procedure run; begin + memset(uint32(@Commands[0]), 0, 65535*sizeof(TCommand)); memset(uint32(@buffer[0]), 0, 1024); + registerCommand('VERSION', @version); keyboard.hook(@key_event); console.clear(); console.writestring('Asuro#> '); diff --git a/src/vmemorymanager.pas b/src/vmemorymanager.pas index bd82a9d1..ce2e5187 100644 --- a/src/vmemorymanager.pas +++ b/src/vmemorymanager.pas @@ -112,22 +112,22 @@ begin PD^[page_number].PageSize:= true; PD^[page_number].Writable:= true; - console.writestringln('VMM: New Page Added:'); + //console.writestringln('VMM: New Page Added:'); - console.writestring('VMM: - P:'); - console.writehex(page_number); - console.writestring('-->B:'); - console.writehexln(block); + //console.writestring('VMM: - P:'); + //console.writehex(page_number); + // console.writestring('-->B:'); + // console.writehexln(block); - console.writestring('VMM: - P:['); - console.writehex(page_number SHL 22); - console.writestring(' - '); - console.writehex(((page_number+1) SHL 22)); - console.writestring(']-->B:['); - console.writehex(block SHL 22); - console.writestring(' - '); - console.writehex(((block+1) SHL 22)); - console.writestringln(']'); + // console.writestring('VMM: - P:['); + // console.writehex(page_number SHL 22); + // console.writestring(' - '); + // console.writehex(((page_number+1) SHL 22)); + // console.writestring(']-->B:['); + // console.writehex(block SHL 22); + // console.writestring(' - '); + // console.writehex(((block+1) SHL 22)); + // console.writestringln(']'); map_page_ex:= true; end;