refactor: namespace restructure of entire codebase
continuous-integration/drone/push Build is passing

Reorganize all source files into a hierarchical namespace structure
with dot-separated unit names matching directory paths.

Major changes:
- src/prog/ -> src/app/ (app.*.pas)
- src/fault/ -> src/arch/x86/fault/ (arch.x86.fault.*.pas)
- src/isr/ -> src/arch/x86/isr/ (arch.x86.isr.*.pas)
- src/include/ -> src/core/ (core.*.pas) + src/arch/x86/
- src/driver/ subtree reorganized with driver.* namespace prefixes
- src/driver/storage/con/ -> src/driver/storage/ctl/ (Windows reserved name fix)
- src/driver/storage/ split into con(ctl)/fs/vol/ subdirectories
- src/driver/net/ flattened from l1-l5 layers to driver.net.*.pas
- kernel.pas -> asuro.pas, faults.pas -> arch.x86.faults.pas
- stdio.pas/syslog.pas -> io/io.stdio.pas, io/io.syslog.pas
- processmanager.pas -> proc/proc.mgr.pas
- lmemorymanager.pas -> memory/memory.heap.pas
- Build scripts moved to toolchain/
- Added compat/ shims for lmemorymanager and types
- Added doc/namespace.md tracking the refactor

197 files changed, 6292 insertions(+), 5526 deletions(-)
This commit is contained in:
2026-03-08 01:28:31 +00:00
parent e922f086c2
commit 6fa008ed79
197 changed files with 6291 additions and 5525 deletions
@@ -17,12 +17,12 @@
@author(Angus C <angus@actm.uk>)
}
unit base64_prog;
unit app.base64;
interface
uses
stdio, util, strings, tracer, base64, lmemorymanager;
io.stdio, core.util, arch.x86.util, core.strings, debug.tracer, core.enc.base64, memory.heap;
procedure init();
@@ -38,7 +38,7 @@ var
PSize : uInt32;
begin
tracer.push_trace('base64_prog.run');
debug.tracer.push_trace('base64_prog.run');
if paramCount(Params) > 1 then begin
encdec := getParam(0, Params);
if stringEquals(encdec, 'encode') then begin
@@ -58,23 +58,23 @@ begin
dec(pinput);
pinput^ := #0;
result := b64_encode_str(input);
stdio.bufWriteStrLn(stdout_buf, result);
io.stdio.bufWriteStrLn(stdout_buf, result);
kfree(void(result));
end else if stringEquals(encdec, 'decode') then begin
input := getParam(1, Params);
result := b64_decode_str(input);
stdio.bufWriteStrLn(stdout_buf, result);
io.stdio.bufWriteStrLn(stdout_buf, result);
kfree(void(result));
end else stdio.bufWriteStrLn(stderr_buf, 'Usage: base64 <encode/decode> <text>');
end else io.stdio.bufWriteStrLn(stderr_buf, 'Usage: core.enc.base64 <encode/decode> <text>');
end else begin
stdio.bufWriteStrLn(stderr_buf, 'Usage: base64 <encode/decode> <text>');
io.stdio.bufWriteStrLn(stderr_buf, 'Usage: core.enc.base64 <encode/decode> <text>');
end;
end;
procedure init();
begin
tracer.push_trace('base64_prog.init');
stdio.registerCommand('BASE64', @Run, 'Perform Base64 Encode/Decode.');
debug.tracer.push_trace('base64_prog.init');
io.stdio.registerCommand('BASE64', @Run, 'Perform Base64 Encode/Decode.');
end;
end.
@@ -17,12 +17,12 @@
@author(Kieron Morris <kjm@kieronmorris.me>)
}
unit dhclient;
unit app.dhclient;
interface
uses
stdio, util, strings, tracer, dhcp;
io.stdio, core.util, arch.x86.util, core.strings, debug.tracer, driver.net.dhcp;
procedure init();
@@ -30,14 +30,14 @@ implementation
procedure run(Params : PParamList; stdin_buf, stdout_buf, stderr_buf : POutBuf);
begin
tracer.push_trace('dhclient.run');
debug.tracer.push_trace('dhclient.run');
DHCPDiscover();
end;
procedure init();
begin
tracer.push_trace('dhclient.init');
stdio.registerCommand('DHClient', @Run, 'Run the DHCP configuration utility.');
debug.tracer.push_trace('dhclient.init');
io.stdio.registerCommand('DHClient', @Run, 'Run the DHCP configuration utility.');
end;
end.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -17,12 +17,12 @@
@author(Kieron Morris <kjm@kieronmorris.me>)
}
unit md5sum;
unit app.md5sum;
interface
uses
stdio, util, strings, tracer, md5;
io.stdio, core.util, arch.x86.util, core.strings, debug.tracer, core.enc.md5;
procedure init();
@@ -40,15 +40,15 @@ begin
wordlen:= stringSize(md5word);
MD5_Hash := MD5Buffer(puint8(md5word), wordlen);
for i:=0 to 15 do begin
stdio.bufWriteHexPair(stdout_buf, MD5_Hash^[i]);
io.stdio.bufWriteHexPair(stdout_buf, MD5_Hash^[i]);
end;
stdio.bufWriteStrLn(stdout_buf, ' ');
io.stdio.bufWriteStrLn(stdout_buf, ' ');
end;
procedure init();
begin
tracer.push_trace('md5sum.init');
stdio.registerCommand('MD5SUM', @Run, 'Perform MD5SUM on a word.');
debug.tracer.push_trace('md5sum.init');
io.stdio.registerCommand('MD5SUM', @Run, 'Perform MD5SUM on a word.');
end;
end.
+83
View File
@@ -0,0 +1,83 @@
// Copyright 2021 Kieron Morris
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
{
Prog->app.meminfo - Print memory statistics (PMM / LMM).
@author(Kieron Morris <[email protected]>)
}
unit app.meminfo;
interface
uses
io.stdio, arch.x86.multiboot, arch.x86.memory.physical, memory.heap, debug.tracer;
procedure init();
implementation
procedure run(Params : PParamList; stdin_buf, stdout_buf, stderr_buf : POutBuf);
var
pmm_total, pmm_free, pmm_used : uint32;
lmm_pages, lmm_free : uint32;
begin
{ Multiboot memory info }
io.stdio.bufWriteStrLn(stdout_buf, '--- Multiboot ---');
io.stdio.bufWriteStr(stdout_buf, 'Lower Memory : ');
io.stdio.bufWriteInt(stdout_buf, multibootinfo^.mem_lower);
io.stdio.bufWriteStrLn(stdout_buf, ' KB');
io.stdio.bufWriteStr(stdout_buf, 'Upper Memory : ');
io.stdio.bufWriteInt(stdout_buf, multibootinfo^.mem_upper);
io.stdio.bufWriteStrLn(stdout_buf, ' KB');
io.stdio.bufWriteStr(stdout_buf, 'Total Memory : ');
io.stdio.bufWriteInt(stdout_buf, ((multibootinfo^.mem_upper + 1000) div 1024) + 1);
io.stdio.bufWriteStrLn(stdout_buf, ' MB');
{ PMM stats }
io.stdio.bufWriteStrLn(stdout_buf, '--- PMM (4 MB blocks) ---');
pmm_total := arch.x86.memory.physical.pmm_total_blocks;
pmm_free := arch.x86.memory.physical.pmm_free_blocks;
pmm_used := pmm_total - pmm_free;
io.stdio.bufWriteStr(stdout_buf, 'Total Blocks : ');
io.stdio.bufWriteIntLn(stdout_buf, pmm_total);
io.stdio.bufWriteStr(stdout_buf, 'Free Blocks : ');
io.stdio.bufWriteIntLn(stdout_buf, pmm_free);
io.stdio.bufWriteStr(stdout_buf, 'Used Blocks : ');
io.stdio.bufWriteIntLn(stdout_buf, pmm_used);
io.stdio.bufWriteStr(stdout_buf, 'Free Physical : ');
io.stdio.bufWriteInt(stdout_buf, pmm_free * 4);
io.stdio.bufWriteStrLn(stdout_buf, ' MB');
{ LMM heap stats }
io.stdio.bufWriteStrLn(stdout_buf, '--- LMM (Heap) ---');
lmm_pages := memory.heap.lmm_page_count;
lmm_free := memory.heap.lmm_total_free;
io.stdio.bufWriteStr(stdout_buf, 'Heap Pages : ');
io.stdio.bufWriteIntLn(stdout_buf, lmm_pages);
io.stdio.bufWriteStr(stdout_buf, 'Heap Size : ');
io.stdio.bufWriteInt(stdout_buf, lmm_pages * 4);
io.stdio.bufWriteStrLn(stdout_buf, ' MB');
io.stdio.bufWriteStr(stdout_buf, 'Heap Free : ');
io.stdio.bufWriteInt(stdout_buf, lmm_free div 1024);
io.stdio.bufWriteStrLn(stdout_buf, ' KB');
end;
procedure init();
begin
debug.tracer.push_trace('meminfo.init');
io.stdio.registerCommand('MEMINFO', @Run, 'Print memory statistics (PMM/LMM).');
end;
end.
+86
View File
@@ -0,0 +1,86 @@
// Copyright 2021 Kieron Morris
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
{
ProgManager - Central initialization for terminal registered, baked-in programs.
@author(Kieron Morris <[email protected]>)
@author(Aaron Hance <[email protected]>)
}
unit app.mgr;
interface
uses
debug.tracer, io.stdio, proc.mgr,
//progs
app.base64, app.md5sum, app.dhclient, app.vbeinfo, app.testcmd, app.ping, app.meminfo, app.setres,
//drivers
driver.storage.ctl.ram, driver.mgr,
//network
driver.net.ipv4, driver.net.arp, driver.net.tcp,
//dispatch
driver.storage.filedispatch,
//wasm
app.wasm.runner;
{ Initialize all baked-in programs }
procedure init();
implementation
uses
core.version,
//command provider units
arch.x86.cpu,
app.diskcmd, driver.bus.usb.core, app.diskutil, app.notepad, app.partcmd, app.volcmd;
procedure init();
begin
debug.tracer.push_trace('app.mgr.init');
{ Register commands from provider units }
io.stdio.registerCommand('CPU', @arch.x86.cpu.Terminal_Command_CPU, 'CPU Info.');
io.stdio.registerCommand('DEV', @driver.mgr.terminal_command_dev, 'Driver Management Interface.');
io.stdio.registerCommand('PS', @proc.mgr.terminal_command_ps, 'List running processes.');
io.stdio.registerCommand('KILL', @proc.mgr.terminal_command_kill, 'Force-kill a process by PID.');
io.stdio.registerCommand('TERMINATE', @proc.mgr.terminal_command_terminate, 'Gracefully terminate a process by PID.');
io.stdio.registerCommand('ARP', @driver.net.arp.terminal_command_arp, 'Get ARP Table.');
io.stdio.registerCommand('IFCONFIG', @driver.net.ipv4.terminal_command_ifconfig, 'Configure Network Settings.');
io.stdio.registerCommand('TCPCONNECT', @driver.net.tcp.terminal_command_tcpconnect, 'Connect to a TCP host and send Hello World.');
io.stdio.registerCommand('TCPLISTEN', @driver.net.tcp.terminal_command_tcplisten, 'Listen on a TCP port and log received data.');
io.stdio.registerCommand('TCPHTTP', @driver.net.tcp.terminal_command_tcphttp, 'Send HTTP GET to a host IP (port 80 default).');
io.stdio.registerCommand('USB', @driver.bus.usb.core.terminal_command_usb, 'driver.bus.usb subsystem information.');
{ Initialize baked-in programs }
app.diskcmd.init();
app.partcmd.init();
app.volcmd.init();
app.diskutil.init();
app.notepad.init();
app.md5sum.init();
app.base64.init();
app.dhclient.init();
app.vbeinfo.init();
app.testcmd.init();
app.ping.init();
app.meminfo.init();
{ File dispatch & WASM integration }
driver.storage.ctl.ram.init();
driver.storage.filedispatch.init();
app.wasm.runner.init();
app.setres.init();
end;
end.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+21 -21
View File
@@ -3,28 +3,28 @@
Sends 10 ICMP echo requests to a host, printing round-trip time
for each reply. Sleeps 1 second between pings. Each invocation
uses a heap-allocated state record so multiple terminals can ping
uses a heap-allocated state record so multiple terminals can app.ping
concurrently without corrupting each other.
@author(Kieron Morris <kjm@kieronmorris.me>)
}
unit ping;
unit app.ping;
interface
uses
stdio, tracer;
io.stdio, debug.tracer;
procedure init();
implementation
uses
bios_data_area, nettypes, icmp, netutils, strings,
processmanager, util, lmemorymanager;
arch.x86.bda, driver.net.types, driver.net.icmp, driver.net.util, core.strings,
proc.mgr, core.util, arch.x86.util, memory.heap;
const
PING_TIMEOUT_MS = 5000; { 5-second timeout per ping }
PING_TIMEOUT_MS = 5000; { 5-second timeout per app.ping }
type
TPingResult = (prWaiting, prGotReply, prGotError);
@@ -74,14 +74,14 @@ var
timeoutTicks : uint32;
begin
if ParamCount(Params) < 1 then begin
stdio.bufWriteStrLn(stderr_buf, 'Usage: PING <ip>');
io.stdio.bufWriteStrLn(stderr_buf, 'Usage: PING <ip>');
exit;
end;
ip_str := getParam(0, Params);
ip := stringToIPv4(ip_str);
if ip = nil then begin
stdio.bufWriteStrLn(stderr_buf, 'Invalid IP address.');
io.stdio.bufWriteStrLn(stderr_buf, 'Invalid IP address.');
exit;
end;
@@ -93,12 +93,12 @@ begin
{ Send ICMP echo request }
st^.Result := prWaiting;
st^.SendTime := Counters.c64;
icmp.sendICMPRequest(ip, i, 128, @on_reply, @on_error, void(st));
driver.net.icmp.sendICMPRequest(ip, i, 128, @on_reply, @on_error, void(st));
{ Spin-yield until callback fires or timeout }
tStart := Counters.c32;
while st^.Result = prWaiting do begin
processmanager.proc_yield;
proc.mgr.proc_yield;
tNow := Counters.c32;
if tNow >= tStart then
elapsed := tNow - tStart
@@ -113,22 +113,22 @@ begin
{ Display result }
if st^.Result = prGotReply then begin
stdio.bufWriteStr(stdout_buf, 'Ping Reply: ');
stdio.bufWriteInt(stdout_buf, st^.ReplyTimeMS);
stdio.bufWriteStrLn(stdout_buf, 'ms.');
io.stdio.bufWriteStr(stdout_buf, 'Ping Reply: ');
io.stdio.bufWriteInt(stdout_buf, st^.ReplyTimeMS);
io.stdio.bufWriteStrLn(stdout_buf, 'ms.');
end else begin
stdio.bufWriteStr(stderr_buf, 'Ping Error: ');
io.stdio.bufWriteStr(stderr_buf, 'Ping Error: ');
case st^.ErrorReason of
aecFailedToResolveHost: stdio.bufWriteStrLn(stderr_buf, 'Failed to resolve host.');
aecNoRouteToHost: stdio.bufWriteStrLn(stderr_buf, 'No route to host.');
aecTimeout: stdio.bufWriteStrLn(stderr_buf, 'Timeout expired.');
aecTTLExpired: stdio.bufWriteStrLn(stderr_buf, 'TTL Expired.');
aecFailedToResolveHost: io.stdio.bufWriteStrLn(stderr_buf, 'Failed to resolve host.');
aecNoRouteToHost: io.stdio.bufWriteStrLn(stderr_buf, 'No route to host.');
aecTimeout: io.stdio.bufWriteStrLn(stderr_buf, 'Timeout expired.');
aecTTLExpired: io.stdio.bufWriteStrLn(stderr_buf, 'TTL Expired.');
end;
end;
{ Sleep 1 second between pings (except after last) }
if i < 9 then
processmanager.proc_sleep_ms(1000);
proc.mgr.proc_sleep_ms(1000);
end;
{ Clean up }
@@ -138,8 +138,8 @@ end;
procedure init();
begin
tracer.push_trace('ping.init');
stdio.registerCommand('PING', @run, 'Ping a host.');
debug.tracer.push_trace('ping.init');
io.stdio.registerCommand('PING', @run, 'Ping a host.');
end;
end.
+83
View File
@@ -0,0 +1,83 @@
{
Prog->app.setres - Set display resolution via GPU driver framework.
Usage: SETRES <width> <height>
Example: SETRES 1024 768
Uses the GPU driver framework to switch display modes. Tries BGA first,
then falls back to VBE/VESA.
@author(Kieron Morris <[email protected]>)
}
unit app.setres;
interface
uses
io.stdio, driver.video.gpu, core.util, arch.x86.util, core.strings, debug.tracer, io.syslog;
procedure init();
implementation
procedure run(Params : PParamList; stdin_buf, stdout_buf, stderr_buf : POutBuf);
var
w, h : uint32;
wStr, hStr : pchar;
info : TGPUModeInfo;
begin
debug.tracer.push_trace('setres.run');
if paramCount(params) < 2 then begin
io.stdio.bufWriteStrLn(stderr_buf, 'Usage: SETRES <width> <height>');
io.stdio.bufWriteStrLn(stderr_buf, 'Example: SETRES 1024 768');
debug.tracer.pop_trace;
exit;
end;
wStr := getParam(0, params);
hStr := getParam(1, params);
w := stringToInt(wStr);
h := stringToInt(hStr);
if (w = 0) or (h = 0) then begin
io.stdio.bufWriteStrLn(stderr_buf, 'Error: Invalid resolution values.');
debug.tracer.pop_trace;
exit;
end;
io.stdio.bufWriteStr(stdout_buf, 'Setting resolution to ');
io.stdio.bufWriteInt(stdout_buf, w);
io.stdio.bufWriteStr(stdout_buf, 'x');
io.stdio.bufWriteInt(stdout_buf, h);
io.stdio.bufWriteStrLn(stdout_buf, 'x32...');
{ Step 1: Set display mode via GPU framework (tries BGA first, then VBE) }
if not driver.video.gpu.setMode(w, h, 32, info) then begin
io.stdio.bufWriteStrLn(stderr_buf, 'Error: Mode switch failed. Mode may not be supported.');
debug.tracer.pop_trace;
exit;
end;
io.stdio.bufWriteStr(stdout_buf, 'Mode set via ');
io.stdio.bufWriteStrLn(stdout_buf, driver.video.gpu.activeDriverName());
io.stdio.bufWriteStr(stdout_buf, 'Resolution set to ');
io.stdio.bufWriteInt(stdout_buf, w);
io.stdio.bufWriteStr(stdout_buf, 'x');
io.stdio.bufWriteInt(stdout_buf, h);
io.stdio.bufWriteStrLn(stdout_buf, 'x32 successfully.');
debug.tracer.pop_trace;
end;
procedure init();
begin
debug.tracer.push_trace('setres.init');
io.stdio.registerCommand('SETRES', @Run, 'Set display resolution. Usage: SETRES <width> <height>');
debug.tracer.pop_trace;
end;
end.
+42
View File
@@ -0,0 +1,42 @@
{
Prog->TestCmd - Test command that prints 5 lines with 1-second delays.
Demonstrates a long-running command that writes incrementally to stdout.
@author(Kieron Morris <[email protected]>)
}
unit app.testcmd;
interface
uses
io.stdio, proc.mgr, debug.tracer;
procedure init();
implementation
procedure run(Params : PParamList; stdin_buf, stdout_buf, stderr_buf : POutBuf);
var
i : uint32;
begin
for i := 1 to 5 do begin
case i of
1: io.stdio.bufWriteStrLn(stdout_buf, 'Test output 1 of 5');
2: io.stdio.bufWriteStrLn(stdout_buf, 'Test output 2 of 5');
3: io.stdio.bufWriteStrLn(stdout_buf, 'Test output 3 of 5');
4: io.stdio.bufWriteStrLn(stdout_buf, 'Test output 4 of 5');
5: io.stdio.bufWriteStrLn(stdout_buf, 'Test output 5 of 5');
end;
if i < 5 then
proc.mgr.proc_sleep_ms(1000);
end;
end;
procedure init();
begin
debug.tracer.push_trace('testcmd.init');
io.stdio.registerCommand('TEST', @run, 'Print 5 lines with 1-second delays.');
end;
end.
@@ -3,7 +3,7 @@
Shows real-time diagnostic information:
- FPS (frames per second)
- Open windows count
- Open driver.video.windows count
- Total LVGL widget count
- Mouse position
- LVGL tick count
@@ -14,12 +14,12 @@
@author(Kieron Morris <kjm@kieronmorris.me>)
}
unit uidebug;
unit app.uidebug;
interface
uses
lvgl, windows, mouse, video, multiboot, tracer;
driver.video.lvgl, driver.video.windows, driver.hid.mouse, driver.video, arch.x86.multiboot, debug.tracer;
{ Call once per frame from the main loop (before lvgl_handler). }
procedure update;
@@ -383,8 +383,8 @@ begin
lv_label_set_text(lbl_fps, @buf[0]);
{ ---- Window count ---- }
wcount := windows.getWindowCount;
p := bufAppend('Windows: ', 0);
wcount := driver.video.windows.getWindowCount;
p := bufAppend('driver.video.windows: ', 0);
p := bufAppendInt(wcount, p);
lv_label_set_text(lbl_windows, @buf[0]);
@@ -396,8 +396,8 @@ begin
lv_label_set_text(lbl_widgets, @buf[0]);
{ ---- Mouse position ---- }
mx := mouse.getMouseX;
my := mouse.getMouseY;
mx := driver.hid.mouse.getMouseX;
my := driver.hid.mouse.getMouseY;
p := bufAppend('Mouse: ', 0);
p := bufAppendSInt(mx, p);
p := bufAppend(', ', p);
@@ -418,9 +418,9 @@ begin
{ ---- Resolution ---- }
p := bufAppend('Res: ', 0);
p := bufAppendInt(video.frontBufferWidth, p);
p := bufAppendInt(driver.video.frontBufferWidth, p);
p := bufAppend('x', p);
p := bufAppendInt(video.frontBufferHeight, p);
p := bufAppendInt(driver.video.frontBufferHeight, p);
lv_label_set_text(lbl_resolution, @buf[0]);
{ Keep overlay on top }
@@ -13,16 +13,16 @@
// limitations under the License.
{
Prog->vbeinfo - Print out vbeinfo (VESA VGA).
Prog->app.vbeinfo - Print out app.vbeinfo (VESA VGA).
@author(Kieron Morris <kjm@kieronmorris.me>)
}
unit vbeinfo;
unit app.vbeinfo;
interface
uses
stdio, video, util, strings, tracer;
io.stdio, driver.video, core.util, arch.x86.util, core.strings, debug.tracer;
procedure init();
@@ -30,18 +30,18 @@ implementation
procedure run(Params : PParamList; stdin_buf, stdout_buf, stderr_buf : POutBuf);
begin
stdio.bufWriteStr(stdout_buf, 'Pixel Width: ');
stdio.bufWriteIntLn(stdout_buf, video.frontBufferWidth);
stdio.bufWriteStr(stdout_buf, 'Pixel Height: ');
stdio.bufWriteIntLn(stdout_buf, video.frontBufferHeight);
stdio.bufWriteStr(stdout_buf, 'Bits Per Pixel: ');
stdio.bufWriteIntLn(stdout_buf, video.frontBufferBpp);
io.stdio.bufWriteStr(stdout_buf, 'Pixel Width: ');
io.stdio.bufWriteIntLn(stdout_buf, driver.video.frontBufferWidth);
io.stdio.bufWriteStr(stdout_buf, 'Pixel Height: ');
io.stdio.bufWriteIntLn(stdout_buf, driver.video.frontBufferHeight);
io.stdio.bufWriteStr(stdout_buf, 'Bits Per Pixel: ');
io.stdio.bufWriteIntLn(stdout_buf, driver.video.frontBufferBpp);
end;
procedure init();
begin
tracer.push_trace('vbeinfo.init');
stdio.registerCommand('VBEINFO', @Run, 'Print out vbeinfo (VESA VGA).');
debug.tracer.push_trace('vbeinfo.init');
io.stdio.registerCommand('VBEINFO', @Run, 'Print out app.vbeinfo (VESA VGA).');
end;
end.
+20 -20
View File
@@ -8,7 +8,7 @@
@author(Aaron Hance <ah@aaronhance.me>)
}
unit volcmd;
unit app.volcmd;
interface
@@ -17,14 +17,14 @@ procedure init();
implementation
uses
lists,
lmemorymanager,
storagemanager,
storagetypes,
strings,
stdio,
tracer,
volumemanager;
core.ds.lists,
memory.heap,
driver.storage.mgr,
driver.storage.types,
core.strings,
io.stdio,
debug.tracer,
driver.storage.vol.mgr;
var
g_out : POutBuf;
@@ -58,22 +58,22 @@ end;
procedure print(s : pchar);
begin
stdio.bufWriteStr(g_out, s);
io.stdio.bufWriteStr(g_out, s);
end;
procedure println(s : pchar);
begin
stdio.bufWriteStrLn(g_out, s);
io.stdio.bufWriteStrLn(g_out, s);
end;
procedure printint(v : uint32);
begin
stdio.bufWriteInt(g_out, integer(v));
io.stdio.bufWriteInt(g_out, integer(v));
end;
procedure printhex(v : uint32);
begin
stdio.bufWriteHex(g_out, v);
io.stdio.bufWriteHex(g_out, v);
end;
{ Print a byte count in human-readable form: B, KB, MB or GB }
@@ -102,7 +102,7 @@ var
count : uint32;
vol : PStorage_Volume;
begin
count := volumemanager.get_volume_count();
count := driver.storage.vol.mgr.get_volume_count();
if count = 0 then begin
println('No volumes registered.');
@@ -113,7 +113,7 @@ begin
println('--- ------ ---- --');
for i := 0 to count - 1 do begin
vol := volumemanager.get_volume(i);
vol := driver.storage.vol.mgr.get_volume(i);
if vol = nil then continue;
print(' ');
@@ -124,7 +124,7 @@ begin
if vol^.device <> nil then begin
printint(vol^.device^.id);
print(' (');
print(storagemanager.controller_type_2_string(vol^.device^.controller));
print(driver.storage.mgr.controller_type_2_string(vol^.device^.controller));
print(')');
end else
print('?');
@@ -162,13 +162,13 @@ begin
end;
idx := str2int(getParam(1, params));
vol := volumemanager.get_volume(idx);
vol := driver.storage.vol.mgr.get_volume(idx);
if vol = nil then begin
print('Error: volume ');
printint(idx);
print(' not found (');
printint(volumemanager.get_volume_count());
printint(driver.storage.vol.mgr.get_volume_count());
println(' volumes registered).');
exit;
end;
@@ -193,7 +193,7 @@ begin
if vol^.device <> nil then begin
printint(vol^.device^.id);
print(' (');
print(storagemanager.controller_type_2_string(vol^.device^.controller));
print(driver.storage.mgr.controller_type_2_string(vol^.device^.controller));
println(')');
end else
println('none');
@@ -233,7 +233,7 @@ end;
procedure init();
begin
stdio.registerCommand('VOL', @command_vol, 'Volume information & management.');
io.stdio.registerCommand('VOL', @command_vol, 'Volume information & management.');
end;
end.
File diff suppressed because it is too large Load Diff
@@ -1,7 +1,7 @@
{
Prog->WASM->WASMCleanup - Tears down all WASURO VM allocations.
Called via processmanager.bindResource when a WASM process exits
Called via proc.mgr.bindResource when a WASM process exits
or is killed. Walks the PWASMProcessContext and kfrees every
allocation made by the parser, VM setup, and host-function registry.
@@ -10,7 +10,7 @@
@author(Kieron Morris <kjm@kieronmorris.me>)
}
unit wasmcleanup;
unit app.wasm.cleanup;
interface
@@ -20,13 +20,13 @@ procedure wasm_resource_cleanup(handle : void);
implementation
uses
lmemorymanager,
memory.heap,
wasm.types.builtin,
wasm.types.context,
wasm.types.sections,
wasm.types.heap,
wasm.types.values,
wasmshim;
app.wasm.shim;
{ ---- Heap teardown ---- }
@@ -211,7 +211,7 @@ begin
end;
{ ---- Resolved imports teardown ---- }
{ Note: ModuleName/FieldName pointers alias ImportSection strings,
{ Note: ModuleName/FieldName pointers alias ImportSection core.strings,
so we must NOT free them here freeImportSection handles those. }
procedure freeResolvedImports(var ri : TWASMResolvedImports);

Some files were not shown because too many files have changed in this diff Show More