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

BIN
Asuro.iso

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

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

View File

@ -14,7 +14,8 @@ interface
uses uses
console, console,
isr32, isr32,
lmemorymanager; lmemorymanager,
terminal;
const const
Quantum = 64; Quantum = 64;
@ -79,6 +80,29 @@ begin
end; end;
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; procedure init;
begin begin
console.writestringln('SCHEDULER: INIT BEGIN.'); console.writestringln('SCHEDULER: INIT BEGIN.');
@ -91,6 +115,7 @@ begin
Tick:= 0; Tick:= 0;
Active:= False; Active:= False;
isr32.hook(uint32(@delta)); isr32.hook(uint32(@delta));
terminal.registerCommand('TASKS', @terminal_command_tasks, 'List Active Processes.');
console.writestringln('SCHEDULER: INIT END.'); console.writestringln('SCHEDULER: INIT END.');
end; end;

View File

@ -14,6 +14,7 @@ type
registered : boolean; registered : boolean;
command : pchar; command : pchar;
method : TCommandMethod; method : TCommandMethod;
description : pchar;
end; end;
var var
@ -22,16 +23,37 @@ var
Commands : array[0..65534] of TCommand; Commands : array[0..65534] of TCommand;
procedure run; procedure run;
procedure registerCommand(command : pchar; method : TCommandMethod); procedure init;
procedure registerCommand(command : pchar; method : TCommandMethod; description : pchar);
implementation implementation
procedure version(buffer : TCommandBuffer); procedure clear(buffer : TCommandBuffer);
begin begin
writestringln('Asuro v1.0'); console.clear();
end; 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 var
index : uint32; index : uint32;
@ -41,6 +63,7 @@ begin
Commands[index].registered:= true; Commands[index].registered:= true;
Commands[index].Command:= command; Commands[index].Command:= command;
Commands[index].method:= method; Commands[index].method:= method;
Commands[index].description:= description;
end; end;
procedure upper; procedure upper;
@ -63,7 +86,10 @@ var
begin begin
isCommand:= true; isCommand:= true;
for i:=0 to bIndex do begin 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 if char(buffer[i]) <> char(command[i]) then begin
isCommand:= false; isCommand:= false;
exit; exit;
@ -117,11 +143,17 @@ begin
end; end;
end; end;
procedure run; procedure init;
begin begin
memset(uint32(@Commands[0]), 0, 65535*sizeof(TCommand)); memset(uint32(@Commands[0]), 0, 65535*sizeof(TCommand));
memset(uint32(@buffer[0]), 0, 1024); 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); keyboard.hook(@key_event);
console.clear(); console.clear();
console.writestring('Asuro#> '); console.writestring('Asuro#> ');