More terminal changes.

git-svn-id: https://spexeah.com:8443/svn/Asuro@223 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c
This commit is contained in:
kieron
2017-10-23 10:41:40 +00:00
parent 6fccbddc62
commit 902919fd02
13 changed files with 87 additions and 14 deletions

View File

@ -40,6 +40,19 @@ begin
Terminal.run;
end;
procedure terminal_command_meminfo(buffer : TCommandBuffer);
begin
console.writestring('Lower Memory = ');
console.writeint(multibootinfo^.mem_lower);
console.writestringln('KB');
console.writestring('Higher Memory = ');
console.writeint(multibootinfo^.mem_upper);
console.writestringln('KB');
console.writestring('Total Memory = ');
console.writeint(((multibootinfo^.mem_upper + 1000) div 1024) + 1);
console.writestringln('MB');
end;
procedure kmain(mbinfo: Pmultiboot_info_t; mbmagic: uint32); stdcall; [public, alias: 'kmain'];
var
c : uint8;
@ -55,6 +68,9 @@ begin
multibootinfo:= mbinfo;
multibootmagic:= mbmagic;
terminal.init();
terminal.registerCommand('MEMINFO', @terminal_command_meminfo, 'Print Simple Memory Information.');
console.init();
console.writestringln('Booting Asuro...');
@ -103,13 +119,13 @@ begin
console.writestringln('');
console.setdefaultattribute(console.combinecolors(White, Black));
console.writestring('Lower Memory = ');
console.writeint(mbinfo^.mem_lower);
console.writeint(multibootinfo^.mem_lower);
console.writestringln('KB');
console.writestring('Higher Memory = ');
console.writeint(mbinfo^.mem_upper);
console.writeint(multibootinfo^.mem_upper);
console.writestringln('KB');
console.writestring('Total Memory = ');
console.writeint(((mbinfo^.mem_upper + 1000) div 1024) + 1);
console.writeint(((multibootinfo^.mem_upper + 1000) div 1024) + 1);
console.writestringln('MB');
console.setdefaultattribute(console.combinecolors(White, Black));
console.writestringln('');

View File

@ -14,7 +14,8 @@ interface
uses
console,
isr32,
lmemorymanager;
lmemorymanager,
terminal;
const
Quantum = 64;
@ -79,6 +80,29 @@ begin
end;
end;
procedure terminal_command_tasks(buffer : TCommandBuffer);
var
list : PScheduler_Entry;
begin
console.writestringln('ThreadID - Priority - Delta');
list:= Root_Task;
console.writeint(list^.ThreadID);
console.writestring(' - ');
console.writeint(list^.Priority);
console.writestring(' - ');
console.writeintln(list^.Delta);
list:= PScheduler_Entry(list^.Next);
while list <> Root_Task do begin
console.writeint(list^.ThreadID);
console.writestring(' - ');
console.writeint(list^.Priority);
console.writestring(' - ');
console.writeintln(list^.Delta);
list:= PScheduler_Entry(list^.Next);
end;
end;
procedure init;
begin
console.writestringln('SCHEDULER: INIT BEGIN.');
@ -91,6 +115,7 @@ begin
Tick:= 0;
Active:= False;
isr32.hook(uint32(@delta));
terminal.registerCommand('TASKS', @terminal_command_tasks, 'List Active Processes.');
console.writestringln('SCHEDULER: INIT END.');
end;

View File

@ -11,9 +11,10 @@ type
TCommandBuffer = array[0..1023] of byte;
TCommandMethod = procedure(buf : TCommandBuffer);
TCommand = record
registered : boolean;
command : pchar;
method : TCommandMethod;
registered : boolean;
command : pchar;
method : TCommandMethod;
description : pchar;
end;
var
@ -22,16 +23,37 @@ var
Commands : array[0..65534] of TCommand;
procedure run;
procedure registerCommand(command : pchar; method : TCommandMethod);
procedure init;
procedure registerCommand(command : pchar; method : TCommandMethod; description : pchar);
implementation
procedure version(buffer : TCommandBuffer);
procedure clear(buffer : TCommandBuffer);
begin
writestringln('Asuro v1.0');
console.clear();
end;
procedure registerCommand(command : pchar; method : TCommandMethod);
procedure version(buffer : TCommandBuffer);
begin
console.writestringln('Asuro v1.0');
end;
procedure help(buffer : TCommandBuffer);
var
i : uint32;
begin
console.writestringln('Registered Commands: ');
for i:=0 to 65534 do begin
if Commands[i].Registered then begin
console.writestring(' ');
console.writestring(Commands[i].command);
console.writestring(' - ');
console.writestringln(Commands[i].description);
end;
end;
end;
procedure registerCommand(command : pchar; method : TCommandMethod; description : pchar);
var
index : uint32;
@ -41,6 +63,7 @@ begin
Commands[index].registered:= true;
Commands[index].Command:= command;
Commands[index].method:= method;
Commands[index].description:= description;
end;
procedure upper;
@ -63,7 +86,10 @@ var
begin
isCommand:= true;
for i:=0 to bIndex do begin
if char(buffer[i]) = ' ' then exit;
if char(buffer[i]) = ' ' then begin
if i = 0 then isCommand:= false;
exit;
end;
if char(buffer[i]) <> char(command[i]) then begin
isCommand:= false;
exit;
@ -117,11 +143,17 @@ begin
end;
end;
procedure run;
procedure init;
begin
memset(uint32(@Commands[0]), 0, 65535*sizeof(TCommand));
memset(uint32(@buffer[0]), 0, 1024);
registerCommand('VERSION', @version);
registerCommand('VERSION', @version, 'Display the running version of Asuro.');
registerCommand('CLEAR', @clear, 'Clear the Screen.');
registerCommand('HELP', @help, 'Lists all registered commands and their description.')
end;
procedure run;
begin
keyboard.hook(@key_event);
console.clear();
console.writestring('Asuro#> ');