git-svn-id: https://spexeah.com:8443/svn/Asuro@651 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c
This commit is contained in:
parent
191f0a8159
commit
b42c7641e6
BIN
bin/kernel.bin
BIN
bin/kernel.bin
Binary file not shown.
Binary file not shown.
BIN
lib/E1000.ppu
BIN
lib/E1000.ppu
Binary file not shown.
BIN
lib/IDE.ppu
BIN
lib/IDE.ppu
Binary file not shown.
BIN
lib/arp.ppu
BIN
lib/arp.ppu
Binary file not shown.
BIN
lib/asuro.ppu
BIN
lib/asuro.ppu
Binary file not shown.
BIN
lib/console.ppu
BIN
lib/console.ppu
Binary file not shown.
Binary file not shown.
BIN
lib/eth2.ppu
BIN
lib/eth2.ppu
Binary file not shown.
BIN
lib/fat32.ppu
BIN
lib/fat32.ppu
Binary file not shown.
BIN
lib/ipv4.ppu
BIN
lib/ipv4.ppu
Binary file not shown.
BIN
lib/kernel.ppu
BIN
lib/kernel.ppu
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
lib/libpsystem.a
BIN
lib/libpsystem.a
Binary file not shown.
BIN
lib/memview.ppu
BIN
lib/memview.ppu
Binary file not shown.
BIN
lib/net.ppu
BIN
lib/net.ppu
Binary file not shown.
BIN
lib/netutils.ppu
BIN
lib/netutils.ppu
Binary file not shown.
Binary file not shown.
BIN
lib/shell.ppu
BIN
lib/shell.ppu
Binary file not shown.
Binary file not shown.
BIN
lib/terminal.ppu
BIN
lib/terminal.ppu
Binary file not shown.
BIN
lib/tracer.ppu
BIN
lib/tracer.ppu
Binary file not shown.
@ -7,8 +7,8 @@ uses
|
||||
|
||||
procedure copyMAC(src : puint8; dst : puint8);
|
||||
procedure copyIPv4(src : puint8; dst : puint8);
|
||||
procedure writeMACAddress(mac : puint8);
|
||||
procedure writeIPv4Address(ip : puint8);
|
||||
procedure writeMACAddress(mac : puint8; WND : HWND);
|
||||
procedure writeIPv4Address(ip : puint8; WND : HWND);
|
||||
function MACEqual(mac1 : puint8; mac2 : puint8) : boolean;
|
||||
function IPEqual(ip1 : puint8; ip2 : puint8) : boolean;
|
||||
function newPacketContext : PPacketContext;
|
||||
@ -48,33 +48,33 @@ begin
|
||||
pop_trace;
|
||||
end;
|
||||
|
||||
procedure writeIPv4Address(ip : puint8);
|
||||
procedure writeIPv4Address(ip : puint8; WND : HWND);
|
||||
var
|
||||
i : integer;
|
||||
|
||||
begin
|
||||
push_trace('netutils.writeIPv4Address');
|
||||
console.writeint(ip[0]);
|
||||
console.writeintWND(ip[0], WND);
|
||||
for i:=1 to 3 do begin
|
||||
console.writestring('.');
|
||||
console.writeint(ip[i]);
|
||||
console.writestringWND('.', WND);
|
||||
console.writeintWND(ip[i], WND);
|
||||
end;
|
||||
console.writestringln(' ');
|
||||
console.writestringlnWND(' ', WND);
|
||||
pop_trace;
|
||||
end;
|
||||
|
||||
procedure writeMACAddress(mac : puint8);
|
||||
procedure writeMACAddress(mac : puint8; WND : HWND);
|
||||
var
|
||||
i : integer;
|
||||
|
||||
begin
|
||||
push_trace('netutils.writeMACAddress');
|
||||
console.writehexpair(mac[0]);
|
||||
console.writehexpairWND(mac[0], WND);
|
||||
for i:=1 to 5 do begin
|
||||
console.writestring(':');
|
||||
console.writehexpair(mac[i]);
|
||||
console.writestringWND(':', WND);
|
||||
console.writehexpairWND(mac[i], WND);
|
||||
end;
|
||||
console.writestringln(' ');
|
||||
console.writestringlnWND(' ', WND);
|
||||
pop_trace;
|
||||
end;
|
||||
|
||||
|
@ -71,18 +71,18 @@ begin
|
||||
push_trace('ipv4.terminal_command_ifconfig');
|
||||
if paramCount(params) > 2 then begin
|
||||
end else begin
|
||||
writestring(' MAC: ');
|
||||
writeMACAddress(net.GetMAC);
|
||||
writestring(' IPv4: ');
|
||||
writeIPv4Address(@Config.Address[0]);
|
||||
writestring(' Gateway: ');
|
||||
writeIPv4Address(@Config.Gateway[0]);
|
||||
writestring(' Netmask: ');
|
||||
writeIPv4Address(@Config.Netmask[0]);
|
||||
writestringWND(' MAC: ', getTerminalHWND);
|
||||
writeMACAddress(net.GetMAC, getTerminalHWND);
|
||||
writestringWND(' IPv4: ', getTerminalHWND);
|
||||
writeIPv4Address(@Config.Address[0], getTerminalHWND);
|
||||
writestringWND(' Gateway: ', getTerminalHWND);
|
||||
writeIPv4Address(@Config.Gateway[0], getTerminalHWND);
|
||||
writestringWND(' Netmask: ', getTerminalHWND);
|
||||
writeIPv4Address(@Config.Netmask[0], getTerminalHWND);
|
||||
if Config.UP then
|
||||
writestringln(' NetUP: true')
|
||||
writestringlnWND(' NetUP: true', getTerminalHWND)
|
||||
else
|
||||
writestringln(' NetUP: false');
|
||||
writestringlnWND(' NetUP: false', getTerminalHWND);
|
||||
end;
|
||||
pop_trace;
|
||||
end;
|
||||
|
@ -438,7 +438,7 @@ end;
|
||||
procedure console_command_mac(params : PParamList);
|
||||
begin
|
||||
push_trace('E1000.console_command_mac');
|
||||
writeMACAddress(@mac[0]);
|
||||
writeMACAddress(@mac[0], getTerminalHWND);
|
||||
pop_trace;
|
||||
end;
|
||||
|
||||
@ -474,6 +474,7 @@ begin
|
||||
TestPacket[26]:= mac[4];
|
||||
TestPacket[27]:= mac[5];
|
||||
sendPacket(void(@TestPacket[0]), 42);
|
||||
writeStringlnWND('E1000 ARP Testpacket Sent.', getTerminalHWND);
|
||||
pop_trace;
|
||||
end;
|
||||
|
||||
@ -513,7 +514,7 @@ begin
|
||||
load:= false;
|
||||
end else begin
|
||||
console.output('E1000 Driver', 'MAC Address: ');
|
||||
writeMACAddress(@mac[0]);
|
||||
writeMACAddress(@mac[0], 0);
|
||||
|
||||
startLink();
|
||||
|
||||
|
@ -255,8 +255,8 @@ begin
|
||||
fileSystems:= ll_New(sizeof(TFilesystem));
|
||||
terminal.registerCommand('DISK', @disk_command, 'Disk utility');
|
||||
terminal.registerCommand('VOLUME', @volume_command, 'Volume utility');
|
||||
terminal.registerCommand('mkdir', @mkdir_command, 'Volume utility');
|
||||
terminal.registerCommand('ls', @ls_command, 'Volume utility');
|
||||
terminal.registerCommandEx('mkdir', @mkdir_command, 'Volume utility', true);
|
||||
terminal.registerCommandEx('ls', @ls_command, 'Volume utility', true);
|
||||
pop_trace();
|
||||
end;
|
||||
|
||||
|
@ -67,15 +67,15 @@ var
|
||||
|
||||
implementation
|
||||
|
||||
procedure writeBusType(Bus : TBusIdentifier);
|
||||
procedure writeBusType(Bus : TBusIdentifier; WND : HWND);
|
||||
begin
|
||||
case Bus of
|
||||
biUnknown : console.writestring('Unknown');
|
||||
biANY : console.writestring('ANY');
|
||||
bii2c : console.writestring('i2c');
|
||||
biPCI : console.writestring('PCI');
|
||||
biPCIe : console.writestring('PCIe');
|
||||
biUSB : console.writestring('USB');
|
||||
biUnknown : console.writestringWND('Unknown', WND);
|
||||
biANY : console.writestringWND('ANY', WND);
|
||||
bii2c : console.writestringWND('i2c', WND);
|
||||
biPCI : console.writestringWND('PCI', WND);
|
||||
biPCIe : console.writestringWND('PCIe', WND);
|
||||
biUSB : console.writestringWND('USB', WND);
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -93,29 +93,29 @@ begin
|
||||
i:= 1;
|
||||
while Drv <> nil do begin
|
||||
if Drv^.Loaded then begin
|
||||
console.writeint(i);
|
||||
console.writestring(') ');
|
||||
console.writestring(Drv^.Driver_Name);
|
||||
console.writestring(' - Bus: ');
|
||||
writeBusType(Drv^.Identifier^.Bus);
|
||||
console.writestringln(' ');
|
||||
console.writestring(' [');
|
||||
console.writeHex(Drv^.Identifier^.id0);
|
||||
console.writestring('-');
|
||||
console.writeHex(Drv^.Identifier^.id1);
|
||||
console.writestring('-');
|
||||
console.writeHex(Drv^.Identifier^.id2);
|
||||
console.writestring('-');
|
||||
console.writeHex(Drv^.Identifier^.id3);
|
||||
console.writestring('-');
|
||||
console.writeHex(Drv^.Identifier^.id4);
|
||||
console.writeintWND(i, getTerminalHWND);
|
||||
console.writestringWND(') ', getTerminalHWND);
|
||||
console.writestringWND(Drv^.Driver_Name, getTerminalHWND);
|
||||
console.writestringWND(' - Bus: ', getTerminalHWND);
|
||||
writeBusType(Drv^.Identifier^.Bus, getTerminalHWND);
|
||||
console.writestringlnWND(' ', getTerminalHWND);
|
||||
console.writestringWND(' [', getTerminalHWND);
|
||||
console.writeHexWND(Drv^.Identifier^.id0, getTerminalHWND);
|
||||
console.writestringWND('-', getTerminalHWND);
|
||||
console.writeHexWND(Drv^.Identifier^.id1, getTerminalHWND);
|
||||
console.writestringWND('-', getTerminalHWND);
|
||||
console.writeHexWND(Drv^.Identifier^.id2, getTerminalHWND);
|
||||
console.writestringWND('-', getTerminalHWND);
|
||||
console.writeHexWND(Drv^.Identifier^.id3, getTerminalHWND);
|
||||
console.writestringWND('-', getTerminalHWND);
|
||||
console.writeHexWND(Drv^.Identifier^.id4, getTerminalHWND);
|
||||
ex:= Drv^.Identifier^.ex;
|
||||
while ex <> nil do begin
|
||||
console.writestring('-');
|
||||
console.writeHex(ex^.idN);
|
||||
console.writestringWND('-', getTerminalHWND);
|
||||
console.writeHexWND(ex^.idN, getTerminalHWND);
|
||||
ex:= ex^.ex;
|
||||
end;
|
||||
console.writestringln(']');
|
||||
console.writestringlnWND(']', getTerminalHWND);
|
||||
i:= i + 1;
|
||||
end;
|
||||
Drv:= Drv^.Next;
|
||||
@ -134,30 +134,30 @@ begin
|
||||
Drv:= Root;
|
||||
i:= 1;
|
||||
while Drv <> nil do begin
|
||||
console.writeint(i);
|
||||
console.writestring(') ');
|
||||
console.writestring(Drv^.Driver_Name);
|
||||
console.writestring(' - Bus: ');
|
||||
writeBusType(Drv^.Identifier^.Bus);
|
||||
console.writestring(' - Loaded: ');
|
||||
if Drv^.Loaded then console.writestringln('true') else console.writestringln('false');
|
||||
console.writestring(' [');
|
||||
console.writeHex(Drv^.Identifier^.id0);
|
||||
console.writestring('-');
|
||||
console.writeHex(Drv^.Identifier^.id1);
|
||||
console.writestring('-');
|
||||
console.writeHex(Drv^.Identifier^.id2);
|
||||
console.writestring('-');
|
||||
console.writeHex(Drv^.Identifier^.id3);
|
||||
console.writestring('-');
|
||||
console.writeHex(Drv^.Identifier^.id4);
|
||||
console.writeintWND(i, getTerminalHWND);
|
||||
console.writestringWND(') ', getTerminalHWND);
|
||||
console.writestringWND(Drv^.Driver_Name, getTerminalHWND);
|
||||
console.writestringWND(' - Bus: ', getTerminalHWND);
|
||||
writeBusType(Drv^.Identifier^.Bus, getTerminalHWND);
|
||||
console.writestringWND(' - Loaded: ', getTerminalHWND);
|
||||
if Drv^.Loaded then console.writestringlnWND('true', getTerminalHWND) else console.writestringlnWND('false', getTerminalHWND);
|
||||
console.writestringWND(' [', getTerminalHWND);
|
||||
console.writeHexWND(Drv^.Identifier^.id0, getTerminalHWND);
|
||||
console.writestringWND('-', getTerminalHWND);
|
||||
console.writeHexWND(Drv^.Identifier^.id1, getTerminalHWND);
|
||||
console.writestringWND('-', getTerminalHWND);
|
||||
console.writeHexWND(Drv^.Identifier^.id2, getTerminalHWND);
|
||||
console.writestringWND('-', getTerminalHWND);
|
||||
console.writeHexWND(Drv^.Identifier^.id3, getTerminalHWND);
|
||||
console.writestringWND('-', getTerminalHWND);
|
||||
console.writeHexWND(Drv^.Identifier^.id4, getTerminalHWND);
|
||||
ex:= Drv^.Identifier^.ex;
|
||||
while ex <> nil do begin
|
||||
console.writestring('-');
|
||||
console.writeHex(ex^.idN);
|
||||
console.writestringWND('-', getTerminalHWND);
|
||||
console.writeHexWND(ex^.idN, getTerminalHWND);
|
||||
ex:= ex^.ex;
|
||||
end;
|
||||
console.writestringln(']');
|
||||
console.writestringlnWND(']', getTerminalHWND);
|
||||
i:= i + 1;
|
||||
Drv:= Drv^.Next;
|
||||
end;
|
||||
@ -175,35 +175,35 @@ begin
|
||||
Dv:= Dev;
|
||||
i:= 1;
|
||||
while Dv <> nil do begin
|
||||
console.writeint(i);
|
||||
console.writestring(') ');
|
||||
console.writestring(Dv^.Device_Name);
|
||||
console.writestring(' - Bus: ');
|
||||
writeBusType(Dv^.Identifier^.Bus);
|
||||
console.writestringln(' ');
|
||||
console.writestring(' [');
|
||||
console.writeHex(Dv^.Identifier^.id0);
|
||||
console.writestring('-');
|
||||
console.writeHex(Dv^.Identifier^.id1);
|
||||
console.writestring('-');
|
||||
console.writeHex(Dv^.Identifier^.id2);
|
||||
console.writestring('-');
|
||||
console.writeHex(Dv^.Identifier^.id3);
|
||||
console.writestring('-');
|
||||
console.writeHex(Dv^.Identifier^.id4);
|
||||
console.writeintWND(i, getTerminalHWND);
|
||||
console.writestringWND(') ', getTerminalHWND);
|
||||
console.writestringWND(Dv^.Device_Name, getTerminalHWND);
|
||||
console.writestringWND(' - Bus: ', getTerminalHWND);
|
||||
writeBusType(Dv^.Identifier^.Bus, getTerminalHWND);
|
||||
console.writestringlnWND(' ', getTerminalHWND);
|
||||
console.writestringWND(' [', getTerminalHWND);
|
||||
console.writeHexWND(Dv^.Identifier^.id0, getTerminalHWND);
|
||||
console.writestringWND('-', getTerminalHWND);
|
||||
console.writeHexWND(Dv^.Identifier^.id1, getTerminalHWND);
|
||||
console.writestringWND('-', getTerminalHWND);
|
||||
console.writeHexWND(Dv^.Identifier^.id2, getTerminalHWND);
|
||||
console.writestringWND('-', getTerminalHWND);
|
||||
console.writeHexWND(Dv^.Identifier^.id3, getTerminalHWND);
|
||||
console.writestringWND('-', getTerminalHWND);
|
||||
console.writeHexWND(Dv^.Identifier^.id4, getTerminalHWND);
|
||||
ex:= Dv^.Identifier^.ex;
|
||||
while ex <> nil do begin
|
||||
console.writestring('-');
|
||||
console.writeHex(ex^.idN);
|
||||
console.writestringWND('-', getTerminalHWND);
|
||||
console.writeHexWND(ex^.idN, getTerminalHWND);
|
||||
ex:= ex^.ex;
|
||||
end;
|
||||
console.writestringln(']');
|
||||
console.writestringlnWND(']', getTerminalHWND);
|
||||
if Dv^.Driver_Loaded then begin
|
||||
console.writestring(' Driver Loaded: ');
|
||||
console.writestringWND(' Driver Loaded: ', getTerminalHWND);
|
||||
if Dv^.Driver <> nil then begin
|
||||
console.writestringln(Dv^.Driver^.Driver_Name);
|
||||
console.writestringlnWND(Dv^.Driver^.Driver_Name, getTerminalHWND);
|
||||
end else begin
|
||||
console.writestringln('Unknown')
|
||||
console.writestringlnWND('Unknown', getTerminalHWND)
|
||||
end;
|
||||
end;
|
||||
i:= i + 1;
|
||||
@ -212,6 +212,35 @@ begin
|
||||
pop_trace;
|
||||
end;
|
||||
|
||||
procedure terminal_command_dev(Params : PParamList);
|
||||
var
|
||||
p1 : pchar;
|
||||
|
||||
begin
|
||||
if paramCount(Params) > 0 then begin
|
||||
p1:= getParam(0, Params);
|
||||
if StringEquals(p1, 'drivers') then begin
|
||||
terminal_command_drivers(Params);
|
||||
end;
|
||||
if StringEquals(p1, 'devices') then begin
|
||||
terminal_command_devices(Params);
|
||||
end;
|
||||
if StringEquals(p1, 'driverex') then begin
|
||||
terminal_command_driversex(Params);
|
||||
end;
|
||||
end else begin
|
||||
writeStringlnWND('Driver Management Interface', getTerminalHWND);
|
||||
writeStringlnWND(' ', getTerminalHWND);
|
||||
writeStringlnWND('An interface to the drivermanagement portion of the kernel.', getTerminalHWND);
|
||||
writeStringlnWND(' ', getTerminalHWND);
|
||||
writeStringlnWND('Usage: ', getTerminalHWND);
|
||||
writeStringlnWND(' dev drivers - Print a list of loaded drivers.', getTerminalHWND);
|
||||
writeStringlnWND(' dev devices - Print a list of registered devices.', getTerminalHWND);
|
||||
writeStringlnWND(' dev driverex - Print a list of all available drivers.', getTerminalHWND);
|
||||
writeStringlnWND(' ', getTerminalHWND)
|
||||
end;
|
||||
end;
|
||||
|
||||
{ Main Functions }
|
||||
|
||||
function copy_identifier(DeviceID : PDeviceIdentifier) : PDeviceIdentifier;
|
||||
@ -288,9 +317,10 @@ end;
|
||||
procedure init;
|
||||
begin
|
||||
push_trace('driver_management.init');
|
||||
terminal.registerCommand('DRIVERSEX', @terminal_command_driversex, 'List all available drivers.');
|
||||
terminal.registerCommand('DRIVERS', @terminal_command_drivers, 'List loaded drivers.');
|
||||
terminal.registerCommand('DEVICES', @terminal_command_devices, 'List devices.');
|
||||
terminal.registerCommand('DEV', @terminal_command_dev, 'Driver Management Interface.');
|
||||
//terminal.registerCommand('DRIVERSEX', @terminal_command_driversex, 'List all available drivers.');
|
||||
//terminal.registerCommand('DRIVERS', @terminal_command_drivers, 'List loaded drivers.');
|
||||
//terminal.registerCommand('DEVICES', @terminal_command_devices, 'List devices.');
|
||||
pop_trace;
|
||||
end;
|
||||
|
||||
|
@ -3,11 +3,11 @@ unit asuro;
|
||||
interface
|
||||
|
||||
const
|
||||
VERSION = '1.0.0-645a';
|
||||
VERSION = '1.0.0-649a';
|
||||
VERSION_MAJOR = '1';
|
||||
VERSION_MINOR = '0';
|
||||
VERSION_SUB = '0';
|
||||
REVISION = '645';
|
||||
REVISION = '649';
|
||||
RELEASE = 'a';
|
||||
|
||||
implementation
|
||||
|
@ -12,23 +12,15 @@ unit kernel;
|
||||
interface
|
||||
|
||||
uses
|
||||
multiboot,
|
||||
multiboot, bios_data_area,
|
||||
util,
|
||||
gdt,
|
||||
idt,
|
||||
isr,
|
||||
irq,
|
||||
gdt, idt, isr, irq, tss,
|
||||
TMR_0_ISR,
|
||||
console,
|
||||
bios_data_area,
|
||||
keyboard,
|
||||
mouse,
|
||||
vmemorymanager,
|
||||
pmemorymanager,
|
||||
lmemorymanager,
|
||||
keyboard, mouse,
|
||||
vmemorymanager, pmemorymanager, lmemorymanager,
|
||||
tracer,
|
||||
drivermanagement,
|
||||
tss,
|
||||
scheduler,
|
||||
PCI,
|
||||
Terminal,
|
||||
@ -54,24 +46,19 @@ procedure kmain(mbinfo: Pmultiboot_info_t; mbmagic: uint32); stdcall;
|
||||
|
||||
implementation
|
||||
|
||||
procedure temphook(ignored : TKeyInfo);
|
||||
begin
|
||||
Terminal.run;
|
||||
end;
|
||||
|
||||
procedure terminal_command_meminfo(params : PParamList);
|
||||
begin
|
||||
push_trace('kernel.terminal_command_meminfo');
|
||||
|
||||
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');
|
||||
console.writestringWND('Lower Memory = ', getTerminalHWND);
|
||||
console.writeintWND(multibootinfo^.mem_lower, getTerminalHWND);
|
||||
console.writestringlnWND('KB', getTerminalHWND);
|
||||
console.writestringWND('Higher Memory = ', getTerminalHWND);
|
||||
console.writeintWND(multibootinfo^.mem_upper, getTerminalHWND);
|
||||
console.writestringlnWND('KB', getTerminalHWND);
|
||||
console.writestringWND('Total Memory = ', getTerminalHWND);
|
||||
console.writeintWND(((multibootinfo^.mem_upper + 1000) div 1024) + 1, getTerminalHWND);
|
||||
console.writestringlnWND('MB', getTerminalHWND);
|
||||
|
||||
pop_trace;
|
||||
end;
|
||||
@ -83,8 +70,8 @@ begin
|
||||
if ParamCount(params) > 1 then begin
|
||||
bsod(getparam(0, params), getparam(1, params));
|
||||
end else begin
|
||||
console.writestringln('Invalid number of params.');
|
||||
console.writestringln('Usage: bsod <error> <info>');
|
||||
console.writestringlnWND('Invalid number of params.', getTerminalHWND);
|
||||
console.writestringlnWND('Usage: bsod <error> <info>', getTerminalHWND);
|
||||
end;
|
||||
|
||||
pop_trace;
|
||||
@ -157,7 +144,8 @@ begin
|
||||
{ Console Init }
|
||||
console.init();
|
||||
|
||||
//serial.init();
|
||||
{ Serial Init }
|
||||
serial.init();
|
||||
|
||||
{ Call Tracer }
|
||||
tracer.init();
|
||||
@ -209,9 +197,6 @@ begin
|
||||
console.setdefaultattribute(console.combinecolors($17E0, $0000));
|
||||
console.writestringln('Asuro Booted Correctly!');
|
||||
console.setdefaultattribute(console.combinecolors($FFFF, $0000));
|
||||
//console.writestringln('');
|
||||
//console.writestringln('Press any key to boot in to Asuro Terminal...');
|
||||
//tracer.pop_trace;
|
||||
|
||||
{ Init Progs }
|
||||
shell.init();
|
||||
@ -220,11 +205,6 @@ begin
|
||||
{ Init Splash }
|
||||
splash.init();
|
||||
|
||||
//console.writehexln(uint32(multibootinfo^.framebuffer_addr));
|
||||
//tracer.push_trace('kmain.KEYHOOK');
|
||||
//keyboard.hook(@temphook);
|
||||
//tracer.pop_trace;
|
||||
|
||||
tracer.push_trace('kmain.END');
|
||||
|
||||
while true do begin
|
||||
|
@ -80,7 +80,14 @@ var
|
||||
begin
|
||||
tracer.push_trace('memview.run');
|
||||
if ParamCount(Params) < 1 then begin
|
||||
writestringlnWND('No memory location specified!', getTerminalHWND);
|
||||
writestringlnWND('Memview Utility', getTerminalHWND);
|
||||
writestringlnWND(' ', getTerminalHWND);
|
||||
writestringlnWND('A tool to display the bytes stored at a memory location for debugging.', getTerminalHWND);
|
||||
writestringlnWND('UP/DOWN on the keyboard can be used to decrement/increment the view location by 16-bytes.', getTerminalHWND);
|
||||
writestringlnWND(' ', getTerminalHWND);
|
||||
writestringlnWND('Usage: ', getTerminalHWND);
|
||||
writestringlnWND(' memview <dLocation> - Display 176 bytes @ <dLocation>', getTerminalHWND);
|
||||
writestringlnWND(' ', getTerminalHWND);
|
||||
end else begin
|
||||
loc:= GetParam(0, Params);
|
||||
if StringEquals(loc, 'close') then begin
|
||||
|
@ -37,6 +37,7 @@ type
|
||||
TCommandMethod = procedure(params : PParamList);
|
||||
TCommand = record
|
||||
registered : boolean;
|
||||
hidden : boolean;
|
||||
command : pchar;
|
||||
method : TCommandMethod;
|
||||
description : pchar;
|
||||
@ -52,6 +53,7 @@ var
|
||||
procedure run;
|
||||
procedure init;
|
||||
procedure registerCommand(command : pchar; method : TCommandMethod; description : pchar);
|
||||
procedure registerCommandEx(command : pchar; method : TCommandMethod; description : pchar; hide : boolean);
|
||||
function getParams(buf : TCommandBuffer) : PParamList;
|
||||
function paramCount(params : PParamList) : uint32;
|
||||
function getParam(index : uint32; params : PParamList) : pchar;
|
||||
@ -209,15 +211,27 @@ end;
|
||||
|
||||
procedure help(params : PParamList);
|
||||
var
|
||||
i, j : uint32;
|
||||
longestCommand : uint32;
|
||||
len : uint32;
|
||||
|
||||
i : uint32;
|
||||
begin
|
||||
longestCommand:= 0;
|
||||
for i:=0 to 65534 do begin
|
||||
if (Commands[i].Registered) and not(Commands[i].hidden) then begin
|
||||
if stringSize(Commands[i].command) > longestCommand then longestCommand:= stringSize(Commands[i].command);
|
||||
end;
|
||||
end;
|
||||
console.writestringlnWND('Registered Commands: ', TERMINAL_HWND);
|
||||
for i:=0 to 65534 do begin
|
||||
if Commands[i].Registered then begin
|
||||
if (Commands[i].Registered) and not(Commands[i].hidden) then begin
|
||||
console.writestringWND(' ', TERMINAL_HWND);
|
||||
console.writestringWND(Commands[i].command, TERMINAL_HWND);
|
||||
console.writestringWND(' - ', TERMINAL_HWND);
|
||||
len:= longestCommand - StringSize(Commands[i].command);
|
||||
for j:=0 to len do begin
|
||||
writeStringWND(' ', TERMINAL_HWND);
|
||||
end;
|
||||
console.writestringWND('- ', TERMINAL_HWND);
|
||||
console.writestringlnWND(Commands[i].description, TERMINAL_HWND);
|
||||
end;
|
||||
end;
|
||||
@ -282,6 +296,21 @@ begin
|
||||
while Commands[index].registered = true do inc(index);
|
||||
Commands[index].registered:= true;
|
||||
Commands[index].Command:= command;
|
||||
Commands[index].hidden:= false;
|
||||
Commands[index].method:= method;
|
||||
Commands[index].description:= description;
|
||||
end;
|
||||
|
||||
procedure registerCommandEx(command : pchar; method : TCommandMethod; description : pchar; hide : boolean);
|
||||
var
|
||||
index : uint32;
|
||||
|
||||
begin
|
||||
index:= 0;
|
||||
while Commands[index].registered = true do inc(index);
|
||||
Commands[index].registered:= true;
|
||||
Commands[index].Command:= command;
|
||||
Commands[index].hidden:= hide;
|
||||
Commands[index].method:= method;
|
||||
Commands[index].description:= description;
|
||||
end;
|
||||
@ -408,12 +437,8 @@ begin
|
||||
registerCommand('CLEAR', @clear, 'Clear the Screen.');
|
||||
registerCommand('HELP', @help, 'Lists all registered commands and their description.');
|
||||
registerCommand('ECHO', @echo, 'Echo''s text to the terminal.');
|
||||
registerCommand('TESTPARAMS', @testParams, 'Tests param parsing.');
|
||||
registerCommand('TEST', @test, 'Command for testing.');
|
||||
registerCommand('CD', @change_dir, 'Change Directory test.');
|
||||
registerCommand('PATTERN', @cockwomble, 'Print an animated pattern to the screen.');
|
||||
registerCommand('TIME', @printTime, 'Print the current time.');
|
||||
registerCommand('SERIAL', @SendSerial, 'Send ''helloworld'' through COM1.');
|
||||
registerCommandEx('SERIAL', @SendSerial, 'Send ''helloworld'' through COM1.', true);
|
||||
registerCommand('REBOOT', @Reboot, 'Reboot the system.');
|
||||
console.writestringln('TERMINAL: INIT END.');
|
||||
end;
|
||||
@ -426,7 +451,7 @@ end;
|
||||
procedure run;
|
||||
begin
|
||||
if TERMINAL_HWND = 0 then begin
|
||||
TERMINAL_HWND:= newWindow(20, 10, 90, 20, 'ASURO TERMINAL');
|
||||
TERMINAL_HWND:= newWindow(20, 10, 90, 30, 'ASURO TERMINAL');
|
||||
console.registerEventHandler(TERMINAL_HWND, EVENT_KEY_PRESSED, void(@key_event));
|
||||
console.registerEventHandler(TERMINAL_HWND, EVENT_CLOSE, void(@OnClose));
|
||||
console.clearWND(TERMINAL_HWND);
|
||||
|
@ -85,20 +85,20 @@ var
|
||||
list : PScheduler_Entry;
|
||||
|
||||
begin
|
||||
console.writestringln('ThreadID - Priority - Delta');
|
||||
console.writestringlnWND('ThreadID - Priority - Delta', getTerminalHWND);
|
||||
list:= Root_Task;
|
||||
console.writeint(list^.ThreadID);
|
||||
console.writestring(' - ');
|
||||
console.writeint(list^.Priority);
|
||||
console.writestring(' - ');
|
||||
console.writeintln(list^.Delta);
|
||||
console.writeintWND(list^.ThreadID, getTerminalHWND);
|
||||
console.writestringWND(' - ', getTerminalHWND);
|
||||
console.writeintWND(list^.Priority, getTerminalHWND);
|
||||
console.writestringWND(' - ', getTerminalHWND);
|
||||
console.writeintlnWND(list^.Delta, getTerminalHWND);
|
||||
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);
|
||||
console.writeintWND(list^.ThreadID, getTerminalHWND);
|
||||
console.writestringWND(' - ', getTerminalHWND);
|
||||
console.writeintWND(list^.Priority, getTerminalHWND);
|
||||
console.writestringWND(' - ', getTerminalHWND);
|
||||
console.writeintlnWND(list^.Delta, getTerminalHWND);
|
||||
list:= PScheduler_Entry(list^.Next);
|
||||
end;
|
||||
end;
|
||||
@ -115,7 +115,7 @@ begin
|
||||
Tick:= 0;
|
||||
Active:= False;
|
||||
TMR_0_ISR.hook(uint32(@delta));
|
||||
terminal.registerCommand('TASKS', @terminal_command_tasks, 'List Active Processes.');
|
||||
//terminal.registerCommand('TASKS', @terminal_command_tasks, 'List Active Processes.');
|
||||
console.outputln('SCHEDULER','INIT END.');
|
||||
end;
|
||||
|
||||
|
@ -13,7 +13,7 @@ function get_trace_N(idx : uint32) : pchar;
|
||||
implementation
|
||||
|
||||
uses
|
||||
console, lmemorymanager, util, strings, serial;
|
||||
console, lmemorymanager, util, strings, serial, terminal;
|
||||
|
||||
const
|
||||
MAX_TRACE = 40;
|
||||
@ -22,6 +22,60 @@ var
|
||||
t_ready : Boolean;
|
||||
Locked : Boolean;
|
||||
Traces : Array[0..MAX_TRACE-1] of PChar;
|
||||
c_lock : Boolean = false;
|
||||
|
||||
|
||||
procedure terminal_command_tracer(Params : PParamList);
|
||||
var
|
||||
p1, p2 : PChar;
|
||||
count : uint32;
|
||||
i : uint32;
|
||||
t : PChar;
|
||||
|
||||
begin
|
||||
if ParamCount(Params) > 0 then begin
|
||||
p1:= getParam(0, Params);
|
||||
if StringEquals(p1, 'list') then begin
|
||||
count:= 5;
|
||||
if ParamCount(Params) > 1 then begin
|
||||
count:= stringToInt(getParam(1, Params));
|
||||
if count > MAX_TRACE-1 then count:= MAX_TRACE-1;
|
||||
end;
|
||||
for i:=0 to count do begin
|
||||
writeStringWND('[-', getTerminalHWND);
|
||||
writeintWND(i, getTerminalHWND);
|
||||
writeStringWND('] ', getTerminalHWND);
|
||||
t:= get_trace_N(i);
|
||||
if t <> nil then writeStringWND(t, getTerminalHWND);
|
||||
writeStringLnWND(' ', getTerminalHWND);
|
||||
end;
|
||||
end;
|
||||
if StringEquals(p1, 'disable') then begin
|
||||
if TRACER_ENABLE then begin
|
||||
t_ready:= false;
|
||||
writeStringLnWND('Tracer disabled.', getTerminalHWND);
|
||||
end else begin
|
||||
writeStringLnWND('Tracer is disabled by the system and it''s status cannot be changed.', getTerminalHWND);
|
||||
end;
|
||||
end;
|
||||
if StringEquals(p1, 'enable') then begin
|
||||
if TRACER_ENABLE then begin
|
||||
t_ready:= true;
|
||||
writeStringLnWND('Tracer enabled.', getTerminalHWND);
|
||||
end else begin
|
||||
writeStringLnWND('Tracer is disabled by the system and it''s status cannot be changed.', getTerminalHWND);
|
||||
end;
|
||||
end;
|
||||
end else begin
|
||||
writeStringLnWND('System Trace Utility', getTerminalHWND);
|
||||
writeStringLnWND(' ', getTerminalHWND);
|
||||
writeStringLnWND('Usage: ', getTerminalHWND);
|
||||
writeStringLnWND(' tracer list <Count> - Print the last <count> traces.', getTerminalHWND);
|
||||
writeStringLnWND(' tracer disable - Disable Tracer.', getTerminalHWND);
|
||||
writeStringLnWND(' tracer enable - Enable Tracer.', getTerminalHWND);
|
||||
writeStringLnWND(' ', getTerminalHWND);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure freeze;
|
||||
begin
|
||||
@ -36,13 +90,15 @@ begin
|
||||
if TRACER_ENABLE then begin
|
||||
if t_ready then begin
|
||||
if not Locked then begin
|
||||
Locked:= true;
|
||||
if Traces[MAX_TRACE-1] <> nil then kfree(void(Traces[MAX_TRACE-1]));
|
||||
for i:=MAX_TRACE-1 downto 1 do begin
|
||||
Traces[i]:= Traces[i-1];
|
||||
if not c_lock then begin
|
||||
Locked:= true;
|
||||
if Traces[MAX_TRACE-1] <> nil then kfree(void(Traces[MAX_TRACE-1]));
|
||||
for i:=MAX_TRACE-1 downto 1 do begin
|
||||
Traces[i]:= Traces[i-1];
|
||||
end;
|
||||
Traces[0]:= StringCopy(t_name);
|
||||
Locked:= false;
|
||||
end;
|
||||
Traces[0]:= StringCopy(t_name);
|
||||
Locked:= false;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@ -70,6 +126,7 @@ begin
|
||||
t_ready:= true;
|
||||
push_trace('kmain');
|
||||
end;
|
||||
terminal.registerCommand('TRACER', @terminal_command_tracer, 'System.Tracer Interface.');
|
||||
end;
|
||||
|
||||
function get_trace_count : uint32;
|
||||
|
Loading…
x
Reference in New Issue
Block a user