getting ready

This commit is contained in:
Aaron committed 2026-03-07 18:57:38 +00:00
1 parent 4e3acd6af7
commit 789fb7971a
25 files changed
+3102 -1053

No files matched your search

+135
View File
@@ -0,0 +1,135 @@
c1e267c6b88cab4d1e3c86fa7f2f8ab1 src//contextswitcher.pas
0be0d543ea50325c0dee1693c5854c48 src//cpu.pas
ac76654ddebbeb1d3cc16ca4c85e77ff src//drivermanagement.pas
693ca299a852a25d3d8820bb0d76dfeb src//faults.pas
eff5f36e129bc22770d643173c426cbd src//gdt.pas
42d014445ddc0fd4d01c59e690795532 src//idt.pas
b40f0c2f3ec166a0bf2ebcf8f11f5614 src//irq.pas
160ca7f01eb779595a5c90174f8d545e src//isr.pas
03963c1b5cf5f661df5598de9af51458 src//kernel.pas
71a3e1a6c21a76ff71e06e0743c0c57f src//lmemorymanager.pas
8e6a6f36c53ecd90e4669189aa9312b4 src//pmemorymanager.pas
4a5f5bf0f2ca7fff89074ad02813091c src//processloader.pas
e600e339593a8bb35964e7531c074e7b src//progmanager.pas
81d4b5c4a25a1a855d75a88c725b77fe src//scheduler.pas
1be263e53e4838f6a06d2ece86400ef2 src//stdio.pas
940a7ed5808841c6ba344b67965ecba7 src//syslog.pas
fe1dba288d3a3ab427a9dea0a9f747ae src//tracer.pas
4598f9b19f3e3748394b6f1cb8e52043 src//tss.pas
1a0461e1028921131594edae0a01e608 src//vmemorymanager.pas
44b09f7af29af7d7fb9711ee0ea5968d src/driver/bus/PCI.pas
6e970ae957a3fbc600c8ee6b42634c78 src/driver/bus/usb/EHCI.pas
181e6c09e33ff59b3eb827085591d19f src/driver/bus/usb/OHCI.pas
820defeb214b59d2329881670cbb493f src/driver/bus/usb/UHCI.pas
6edd4a1e9c92e092aea1368d9aa2724f src/driver/bus/usb/USB.pas
8588f4da48c37646c969b7d51aa28676 src/driver/bus/usb/XHCI.pas
e064e466ca4a89b2c88df80f75ab0bdc src/driver/bus/usb/usbcore.pas
e8aabf9e1ba0c09ede43ed2844802aa0 src/driver/bus/usb/usbhub.pas
631d06f67ee6af6bfdcec3279967bca0 src/driver/bus/usb/usbtypes.pas
45f1afa1170ab00ec92e52de18f1de19 src/driver/exp/testdriver.pas
28e9e1ff635893639c4442656b763d4b src/driver/hid/keyboard.pas
25a86d7379eae581d6c69ccbcfb9d722 src/driver/hid/mouse.pas
84ceeacce04bc9659c73cba838c94cca src/driver/hid/ps2/ps2_keyboard.pas
16a706312825c01b6dd13f51aa385c5f src/driver/hid/ps2/ps2_keyboard_isr.pas
d272f2bd62399a119e93118a81a74833 src/driver/hid/ps2/ps2_mouse.pas
57615a202dd2cf26c64601d86bd5e36c src/driver/hid/usb/usb_keyboard.pas
da94fe43ff22d2050ccd8eec602aa4b5 src/driver/hid/usb/usb_mouse.pas
3f6f56b05d141194fa1e48d46d441042 src/driver/include/drivertypes.pas
8a6f0bf9d2c77d32f2ce5dede4e15d9a src/driver/interface/serial.pas
2d3bcfceef94d7e1138ca465bb32aea5 src/driver/net/include/nettypes.pas
63a3fa928b17ffd31c9ea033f3443b41 src/driver/net/include/netutils.pas
9aca959358eaa2159421434a4d1855df src/driver/net/l1/net.pas
033c08a36b2e99d573e09f1e182937e0 src/driver/net/l2/eth2.pas
418cdb2657980f11172bb0c70ff4326d src/driver/net/l3/arp.pas
e71bc0e877d736be29378ecdfb91c615 src/driver/net/l3/ipv4.pas
38facb711f1153b80011e1adee8cfba5 src/driver/net/l4/icmp.pas
fd577fe3e13389f4ffddfe7480935ae1 src/driver/net/l4/tcp.pas
0cda1d5d8c298b577b49cc8f1ae031bf src/driver/net/l4/udp.pas
004a93b3d4cc1efe1172564239eaf795 src/driver/net/l5/dhcp.pas
1cf47de6c18308e1d140ce47e74bb204 src/driver/netdev/E1000.pas
bd529497b38ce6bc7697a6dcde6f7fd7 src/driver/storage/MBR.pas
333c3bb46b3ca14746281b4921a25630 src/driver/storage/iobuffer.pas
08a8280503120f3a90a9a041bc8b67d3 src/driver/storage/partitiontable.pas
2bc09f8f54dd10717440b74017bdeb3d src/driver/storage/storagemanager.pas
91d10f7ef29d62e633968d72ceeea2b1 src/driver/storage/storagetypes.pas
76e01e83220c1882dc429129c0ad937b src/driver/storage/usb_storage.pas
e42fdff36185dd92498378ab470a4b35 src/driver/storage/vfs.pas
621d834536a649b3b483016060bbfafc src/driver/storage/volumemanager.pas
0e300d4c833bab776e8d91a348a5b60c src/driver/storage/AHCI/AHCI.pas
16304358a6278c23a751e31bb464eae5 src/driver/storage/AHCI/AHCITypes.pas
b5e3bcb914b585a95ac646cfea7d016e src/driver/storage/Filesystems/asfs.pas
cb23855b8bad502999656d3121882c74 src/driver/storage/Filesystems/fat32.pas
9bceba956d3eeffe97e07bdd45a9476f src/driver/storage/Filesystems/filesystemmanager.pas
e03d028cc2915c3cb0a8245407c99b7b src/driver/storage/Filesystems/flatfs.pas
5bd48e9a8c97ea11edc2789d2ec7902a src/driver/storage/Filesystems/iso9660.pas
753c6bbb3c5f84cdd7300330456980d7 src/driver/storage/IDE/IDE.pas
f5e13673000388c7b8fa980824139163 src/driver/storage/IDE/ata.pas
5760feea5b9a4ce3fad820b542113c56 src/driver/storage/IDE/atapi.pas
900eb584e797111c1a54ca86542e71d0 src/driver/storage/IDE/idetypes.pas
6d9508503dca0543fe932c32ef8267fc src/driver/timers/RTC.pas
c025ffabb5bba2272578d04903637d11 src/driver/timers/TMR_0_ISR.pas
4a7434e5567f738b8545d56558902d9f src/driver/timers/TMR_1_ISR.pas
a4459a13e30281d020d0a8730e243b02 src/driver/timers/graphicsrefresh.pas
4503465b3f62464f25e17e1d1a67e54d src/driver/timers/usbhotplug.pas
0434cc7b77429f971d372e89a8a6972d src/driver/video/desktop.pas
fef57dc0269caad191652df07da04466 src/driver/video/doublebuffer.pas
a2c0d973e133f2624599d12fc0ec13f6 src/driver/video/lvgl.pas
dce8755865885e41c08b062c162b06c9 src/driver/video/uidebug.pas
20dc95321989d632fa4c39a5faf74733 src/driver/video/vesa.pas
19c988cfcc36bcc78e73747662672d8f src/driver/video/vesa16.pas
f6714e6972770155cf2c72822ab76128 src/driver/video/vesa24.pas
81e2f271055c2a89dfc8b7f1d19bf509 src/driver/video/vesa32.pas
8ea870a31f4a9b11b3dcd639a65d9ca8 src/driver/video/vesa8.pas
542aa1da8f8e9d6e5cb5e0b90a3c9de5 src/driver/video/video.pas
d499b828752660e1a03272eb4f63eebb src/driver/video/videotypes.pas
b9f4c8f07d26c77cb49bd032202775c0 src/driver/video/windows.pas
aadcb02abac658feec02042bf5ea4ad0 src/fault/ACE.pas
d530d3094d335ce5ab78475de5b5a39a src/fault/BPE.pas
84c5c4e3981b9718403e7fdeb9ef9f7f src/fault/BTSSE.pas
01acde61a8f3f27592e9c6d15349348d src/fault/CFE.pas
0f5db45e5979949114dba7d9ba205103 src/fault/CSOE.pas
a7565ac9d1dadc801c16758d2c4e84fe src/fault/DBGE.pas
c45fb023b19f7240a911e189c1771c41 src/fault/DBZ.pas
b5453d37dd18e375a15f50a870c6dea2 src/fault/DFE.pas
25fdec8dd1c72680acd5a6246ced55eb src/fault/GPF.pas
3c7671f86051aa727adcf547f175d338 src/fault/IDOE.pas
710aadf1e601c74a0cd8563632f35c50 src/fault/IOPE.pas
85d27bbbe7002ec3e5e73ff9e971844f src/fault/MCE.pas
3f81337468d131b0c9896a588f230772 src/fault/NCE.pas
7548539c52222f081d75841b929d439f src/fault/NMIE.pas
f6a105e5873cc14a8a5c5b05298bdfd1 src/fault/OOBE.pas
8f976f5663439e533347758cc79add39 src/fault/PF.pas
3870beacc5b322fa63f633f14b1a8320 src/fault/SFE.pas
522c6788021d8ebf966096311dd1f38d src/fault/SNPE.pas
f32ed5dffb58626b7657a24866c6af4e src/fault/UIE.pas
b6bfdc59f9962fc257e9adc7b57a3273 src/include/base64.pas
dee8388dac0ca79ee6aef73469d75f6b src/include/bios_data_area.pas
717b8c0a42983f6b8864d5deda4dd532 src/include/color.pas
1987f262a6053e02080023554d942ae1 src/include/crc.pas
7f6c812b5d7ae1a8af5ef00d42a4eb1d src/include/fonts.pas
bf9fe2883789147e08980ab4c43220f7 src/include/hashmap.pas
513d59ae08ba6d753a871e1a82b46ed4 src/include/lists.pas
c5ef14ac60dad5a32ebfa43da153d05c src/include/md5.pas
124f12d75de7ade6993ccd2f02b53ad4 src/include/multiboot.pas
d8beadde6ebb05c8a3e74aae57d61f34 src/include/rand.pas
cfa50e59e4bd9ea3a5b05c6b1275858d src/include/strings.pas
cb254f95c5e09595c90db690bf98794f src/include/system.pas
5df11e0052010580d13f1a5ce3acd60f src/include/targa.pas
833967cf14697db6da421a4be58e9044 src/include/texture.pas
635e5a8936a088a244ddfe48cd658a3f src/include/types.pas
a770014537fb6c8d70cf4bc3ec325500 src/include/util.pas
e23b0bef333262860e1f68034331e529 src/isr/ioapic.pas
63f4a330383220a5cfad0253c09afde3 src/isr/isr_types.pas
851217f90e902ca65bebb017eeb172e7 src/isr/isrmanager.pas
027f34dc6d4e67d15cf10d6db5edd514 src/prog/base64_prog.pas
2e9d0c9db496dafc3c3423deee644c83 src/prog/dhclient.pas
6c58870722f8b5fd86308123ae8c934b src/prog/diskcmd.pas
a0fa8cf89bee89802d506f2cd3a4dad7 src/prog/diskutil.pas
31c7601131e09b0dfcc427cdb14bffb6 src/prog/edit.pas
6fff6024194143a6ebbe849f9aff0326 src/prog/inio.pas
1ff556cd50088e3ee3efa3103fdc6ba0 src/prog/md5sum.pas
0f0e6dc1b2d1a6e14b2fd103826d1f12 src/prog/partcmd.pas
0c7c7f62e8bf76fc2eec7f02e7a092b7 src/prog/vbeinfo.pas
60bf159fa0a3efb34f73fa15a93acd7c src/prog/volcmd.pas
88d71b607256928831a33b363a44c006 src/prog/vterminal.pas
Binary file not shown.
+603
View File
File diff suppressed because it is too large. Load diff
-185
View File
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -20,7 +20,7 @@
unit AHCITypes; unit AHCITypes;
interface interface
uses uses
console, syslog,
drivermanagement, drivermanagement,
drivertypes, drivertypes,
idetypes, idetypes,
+2 -2
View File
@@ -22,7 +22,7 @@ unit asfs;
interface interface
uses uses
console, syslog,
lists, lists,
lmemorymanager, lmemorymanager,
rtc, rtc,
@@ -30,7 +30,7 @@ uses
storagemanagement, storagemanagement,
storagemanager, storagemanager,
strings, strings,
terminal, stdio,
tracer, tracer,
util; util;
File diff suppressed because it is too large. Load diff
+58 -10
View File
@@ -27,8 +27,8 @@ uses
strings, strings,
filesystemmanager, filesystemmanager,
lists, lists,
console, syslog,
terminal, stdio,
storagemanager, storagemanager,
storagetypes, storagetypes,
lmemorymanager, lmemorymanager,
@@ -148,7 +148,6 @@ begin
kfree(puint32(data)); kfree(puint32(data));
read_file(volume, '/logs/log.txt', PuInt32(data), status); read_file(volume, '/logs/log.txt', PuInt32(data), status);
writestringlnWND(pchar(data), getterminalhwnd());
end; end;
procedure write_directory(volume : PStorage_Volume; directory : pchar; status : PuInt32); procedure write_directory(volume : PStorage_Volume; directory : pchar; status : PuInt32);
@@ -271,14 +270,12 @@ begin
compString := stringSub(fileEntrys[i].name, 0, stringSize(directory)); compString := stringSub(fileEntrys[i].name, 0, stringSize(directory));
afterString := stringSub(fileEntrys[i].name, stringSize(directory), stringSize(fileEntrys[i].name)-1); afterString := stringSub(fileEntrys[i].name, stringSize(directory), stringSize(fileEntrys[i].name)-1);
writestringlnWND(afterString, getterminalhwnd());
push_trace('read_directory_2'); push_trace('read_directory_2');
if stringEquals(compString, directory) and if stringEquals(compString, directory) and
(not stringContains(afterString, slash)) then begin (not stringContains(afterString, slash)) then begin
writestringlnWND(fileEntrys[i].name, getterminalhwnd());
STRLL_Add(directories, afterString); STRLL_Add(directories, afterString);
end; end;
end; end;
@@ -542,6 +539,56 @@ begin
status^ := 0; status^ := 0;
end; end;
{ Count free sectors on a FlatFS volume by scanning file entries. }
function countFreeFlatFSSectors(volume : PStorage_Volume) : uint32;
var
buffer : puint32;
diskInfo : PDisk_Info;
sectorCount : uint32;
fileCount : uint32;
tableSectors : uint32;
fileEntries : PFile_Entry;
usedSectors : uint32;
overhead : uint32;
i : uint32;
begin
countFreeFlatFSSectors := 0;
buffer := puint32(kalloc(512));
memset(uint32(buffer), 0, 512);
storagemanager.storage_read(volume^.device, volume^.sectorStart, 1, buffer);
diskInfo := PDisk_Info(buffer);
sectorCount := diskInfo^.sectorCount;
fileCount := diskInfo^.fileCount;
kfree(buffer);
if sectorCount = 0 then exit;
tableSectors := (fileCount * sizeof(TFile_Entry)) div 512;
overhead := 2 + tableSectors; { header + boundary + file table }
usedSectors := 0;
if fileCount > 0 then begin
fileEntries := PFile_Entry(kalloc(sizeof(TFile_Entry) * fileCount + 512));
memset(uint32(fileEntries), 0, sizeof(TFile_Entry) * fileCount);
storagemanager.storage_read(volume^.device, volume^.sectorStart + 1,
tableSectors, puint32(fileEntries));
for i := 0 to fileCount - 1 do begin
if fileEntries[i].attribues <> 0 then
usedSectors := usedSectors + fileEntries[i].size;
end;
kfree(puint32(fileEntries));
end;
if sectorCount > (overhead + usedSectors) then
countFreeFlatFSSectors := sectorCount - overhead - usedSectors
else
countFreeFlatFSSectors := 0;
end;
procedure detect_volumes(disk : PStorage_Device); procedure detect_volumes(disk : PStorage_Device);
var var
buffer : puint32; buffer : puint32;
@@ -553,7 +600,7 @@ begin
memset(uint32(buffer), 0, 512); memset(uint32(buffer), 0, 512);
if (disk^.readCallback = nil) and (disk^.readCallbackAsync = nil) then begin if (disk^.readCallback = nil) and (disk^.readCallbackAsync = nil) then begin
console.writestringln('FlatFS: detect_volumes: device has no read callback.'); syslog.writestringln('FlatFS: detect_volumes: device has no read callback.');
kfree(buffer); kfree(buffer);
exit; exit;
end; end;
@@ -561,15 +608,15 @@ begin
storagemanager.storage_read(disk, 2, 1, buffer); storagemanager.storage_read(disk, 2, 1, buffer);
if (PDisk_Info(buffer)^.signature = $0B00B1E5) then begin if (PDisk_Info(buffer)^.signature = $0B00B1E5) then begin
console.writestringln('FlatFS: volume found!'); syslog.writestringln('FlatFS: volume found!');
volume := PStorage_volume(kalloc(sizeof(TStorage_Volume))); volume := PStorage_volume(kalloc(sizeof(TStorage_Volume)));
memset(uint32(volume), 0, sizeof(TStorage_Volume)); memset(uint32(volume), 0, sizeof(TStorage_Volume));
volume^.device := disk; volume^.device := disk;
volume^.sectorStart := 2; volume^.sectorStart := 2;
volume^.sectorSize := 512; volume^.sectorSize := 512;
volume^.sectorCount := PDisk_Info(buffer)^.sectorCount; volume^.sectorCount := PDisk_Info(buffer)^.sectorCount;
volume^.freeSectors := 0; { TODO: implement free sector count }
volume^.filesystem := @filesystem; volume^.filesystem := @filesystem;
volume^.freeSectors := countFreeFlatFSSectors(volume);
volume^.isBootDrive := false; volume^.isBootDrive := false;
volumemanager.register_volume(disk, volume); volumemanager.register_volume(disk, volume);
@@ -710,7 +757,6 @@ begin
end; end;
function identify_volume(volume : PStorage_Volume) : boolean; function identify_volume(volume : PStorage_Volume) : boolean;
var var
buffer : puint32; buffer : puint32;
@@ -724,8 +770,10 @@ begin
storagemanager.storage_read(volume^.device, volume^.sectorStart, 1, buffer); storagemanager.storage_read(volume^.device, volume^.sectorStart, 1, buffer);
if (PDisk_Info(buffer)^.signature = $0B00B1E5) then if (PDisk_Info(buffer)^.signature = $0B00B1E5) then begin
identify_volume := true; identify_volume := true;
volume^.freeSectors := countFreeFlatFSSectors(volume);
end;
kfree(buffer); kfree(buffer);
end; end;
+1 -1
View File
@@ -12,7 +12,7 @@ unit iso9660;
interface interface
uses uses
console, syslog,
filesystemmanager, filesystemmanager,
lists, lists,
lmemorymanager, lmemorymanager,
+2 -2
View File
@@ -13,13 +13,13 @@ unit partitiontable;
interface interface
uses uses
console, syslog,
lists, lists,
lmemorymanager, lmemorymanager,
rtc, rtc,
storagemanagement, storagemanagement,
strings, strings,
terminal, stdio,
tracer, tracer,
util; util;
+19 -6
View File
@@ -16,11 +16,13 @@ uses
lmemorymanager, lmemorymanager,
MBR, MBR,
storagetypes, storagetypes,
syslog,
tracer, tracer,
util; util;
var var
storageDevices : PDList; storageDevices : PDList;
nextDeviceId : uint32;
procedure init(); procedure init();
procedure register_device(device : PStorage_Device); procedure register_device(device : PStorage_Device);
@@ -40,17 +42,32 @@ procedure storage_write(device : PStorage_Device; addr : uint32; sectors : uint3
implementation implementation
uses
volumemanager;
procedure init(); procedure init();
begin begin
push_trace('StorageManager.init'); push_trace('StorageManager.init');
storageDevices := DL_New(sizeof(TStorage_Device)); storageDevices := DL_New(sizeof(TStorage_Device));
nextDeviceId := 0;
end; end;
procedure register_device(device : PStorage_Device); procedure register_device(device : PStorage_Device);
var
storedDev : PStorage_Device;
begin begin
push_trace('StorageManager.register_device'); push_trace('StorageManager.register_device');
device^.id := nextDeviceId;
nextDeviceId := nextDeviceId + 1;
DL_Add(storageDevices); DL_Add(storageDevices);
DL_Set(storageDevices, DL_Size(storageDevices) - 1, puint32(device)); DL_Set(storageDevices, DL_Size(storageDevices) - 1, puint32(device));
{ Get pointer to the DList copy so volumes reference the canonical device }
storedDev := PStorage_Device(DL_Get(storageDevices, DL_Size(storageDevices) - 1));
{ Discover partitions and register volumes automatically }
if storedDev^.maxSectorCount > 0 then
volumemanager.discover_volumes(storedDev);
end; end;
function get_device_list() : PDList; function get_device_list() : PDList;
@@ -115,10 +132,7 @@ begin
device^.readCallbackAsync(device, addr, sectors, buffer, @storage_sync_done, @done); device^.readCallbackAsync(device, addr, sectors, buffer, @storage_sync_done, @done);
asm sti end; asm sti end;
while done = 0 do begin while done = 0 do begin
asm hlt end; { sleep until next interrupt } if device^.pollCallback <> nil then
{ Fallback: if the hardware IRQ was not delivered through the PIC,
poll the driver inline so the completion fires. }
if (done = 0) and (device^.pollCallback <> nil) then
device^.pollCallback(); device^.pollCallback();
end; end;
end else if device^.readCallback <> nil then end else if device^.readCallback <> nil then
@@ -134,8 +148,7 @@ begin
device^.writeCallbackAsync(device, addr, sectors, buffer, @storage_sync_done, @done); device^.writeCallbackAsync(device, addr, sectors, buffer, @storage_sync_done, @done);
asm sti end; asm sti end;
while done = 0 do begin while done = 0 do begin
asm hlt end; { sleep until next interrupt } if device^.pollCallback <> nil then
if (done = 0) and (device^.pollCallback <> nil) then
device^.pollCallback(); device^.pollCallback();
end; end;
end else if device^.writeCallback <> nil then end else if device^.writeCallback <> nil then
File diff suppressed because it is too large. Load diff
+108 -106
View File
File diff suppressed because it is too large. Load diff
+2 -2
View File
@@ -13,7 +13,7 @@ unit volumemanager;
interface interface
uses uses
console, syslog,
filesystemmanager, filesystemmanager,
lists, lists,
lmemorymanager, lmemorymanager,
@@ -21,7 +21,7 @@ uses
storagemanager, storagemanager,
storagetypes, storagetypes,
strings, strings,
terminal, stdio,
tracer, tracer,
util; util;
+9 -9
View File
@@ -17,7 +17,7 @@ interface
uses uses
util, util,
lmemorymanager, lmemorymanager,
console; syslog;
{ Initialise IOAPIC/LAPIC support — maps MMIO regions, ensures LAPIC { Initialise IOAPIC/LAPIC support — maps MMIO regions, ensures LAPIC
is enabled. Safe to call even if the hardware doesn't have an IOAPIC is enabled. Safe to call even if the hardware doesn't have an IOAPIC
@@ -88,11 +88,11 @@ begin
{ Probe: read IOAPIC version register — should return non-zero/non-$FF } { Probe: read IOAPIC version register — should return non-zero/non-$FF }
ver := ioapic_read(IOAPIC_VER); ver := ioapic_read(IOAPIC_VER);
if (ver = 0) or (ver = $FFFFFFFF) then begin if (ver = 0) or (ver = $FFFFFFFF) then begin
console.outputln('IOAPIC', 'Not detected — PCI interrupts rely on 8259 PIC.'); syslog.logln('IOAPIC', 'Not detected — PCI interrupts rely on 8259 PIC.');
exit; exit;
end; end;
console.outputln('IOAPIC', 'Detected.'); syslog.logln('IOAPIC', 'Detected.');
{ Ensure the Local APIC is software-enabled (bit 8 of SVR). { Ensure the Local APIC is software-enabled (bit 8 of SVR).
We set the spurious vector to $FF which is unused. } We set the spurious vector to $FF which is unused. }
@@ -101,7 +101,7 @@ begin
svr := svr or $100; { Enable APIC } svr := svr or $100; { Enable APIC }
svr := (svr and $FFFFFF00) or $FF; { Spurious vector = 0xFF } svr := (svr and $FFFFFF00) or $FF; { Spurious vector = 0xFF }
puint32(LAPIC_PHYS + LAPIC_SVR)^ := svr; puint32(LAPIC_PHYS + LAPIC_SVR)^ := svr;
console.outputln('IOAPIC', 'LAPIC software-enabled.'); syslog.logln('IOAPIC', 'LAPIC software-enabled.');
end; end;
ioapic_present := true; ioapic_present := true;
@@ -128,11 +128,11 @@ begin
ioapic_write(IOAPIC_REDTBL + uint32(irq) * 2, lo); ioapic_write(IOAPIC_REDTBL + uint32(irq) * 2, lo);
ioapic_write(IOAPIC_REDTBL + uint32(irq) * 2 + 1, 0); ioapic_write(IOAPIC_REDTBL + uint32(irq) * 2 + 1, 0);
console.output('IOAPIC', 'Routed IRQ '); syslog.log('IOAPIC', 'Routed IRQ ');
console.writeint(irq); syslog.writeint(irq);
console.writestring(' -> vector '); syslog.writestring(' -> vector ');
console.writeint(vector); syslog.writeint(vector);
console.writestringln(''); syslog.writestringln('');
end; end;
procedure lapic_eoi(); procedure lapic_eoi();
+1 -1
View File
@@ -35,7 +35,7 @@ procedure dispatchHooks(INT_N : uint8);
implementation implementation
uses uses
console, ioapic; syslog, ioapic;
var var
Hooks : TISRHookArray; Hooks : TISRHookArray;
+78 -43
View File
@@ -23,56 +23,88 @@ unit kernel;
interface interface
uses uses
multiboot, bios_data_area, AHCI,
util, base64,
gdt, idt, isr, irq, bios_data_area,
TMR_0_ISR, cfifo,
syslog, stdio, cfifols,
keyboard, mouse, circ,
ps2_keyboard, ps2_mouse, color,
vmemorymanager, pmemorymanager, lmemorymanager, contextswitcher,
tracer, cpu,
desktop,
diskcmd,
diskutil,
doublebuffer,
drivermanagement, drivermanagement,
progmanager, E1000,
processmanager, contextswitcher, EHCI,
testprocs, fat32,
faults,
fifo,
filesystemmanager,
flatfs,
fonts,
gdt,
graphicsrefresh,
hashmap,
idt,
ioapic,
irq,
iso9660,
isr,
isrmanager,
keyboard,
lifo,
lists,
lmemorymanager,
lvgl,
maxh,
md5,
minh,
mouse,
multiboot,
net,
OHCI,
partcmd,
PCI, PCI,
pmemorymanager,
prio,
processmanager,
progmanager,
ps2_keyboard,
ps2_mouse,
rand,
RTC,
serial,
stdio,
storagemanager,
strings, strings,
syslog,
testdriver,
testprocs,
TMR_0_ISR,
tracer,
UHCI,
uidebug,
USB, USB,
usbtypes,
usbcore,
usbhub,
usb_keyboard, usb_keyboard,
usb_mouse, usb_mouse,
usb_storage, usb_storage,
UHCI, usbcore,
OHCI, usbhotplug,
EHCI, usbhub,
XHCI, usbtypes,
testdriver, util,
E1000, vesa,
AHCI, vfs,
storagemanager, volumemanager, filesystemmanager, video,
flatfs, iso9660, vmemorymanager,
ioapic, volcmd,
diskcmd, partcmd, volcmd, volumemanager,
lists,
net,
fat32,
isrmanager,
faults,
fonts,
RTC,
serial,
cpu,
md5,
base64,
rand,
hashmap, vfs,
video, vesa, doublebuffer, color, lvgl, desktop, uidebug, windows,
vterminal, vterminal,
graphicsrefresh, usbhotplug, Windows,
fifo, cfifo, cfifols, lifo, circ, minh, maxh, prio; XHCI;
procedure kmain(mbinfo: Pmultiboot_info_t; mbmagic: uint32); stdcall; procedure kmain(mbinfo: Pmultiboot_info_t; mbmagic: uint32); stdcall;
@@ -104,7 +136,7 @@ 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
dds : uint32; dds : uint16;
keyboard_layout : array [0..1] of TKeyInfo; keyboard_layout : array [0..1] of TKeyInfo;
i : uint32; i : uint32;
@@ -257,6 +289,9 @@ begin
{ Initialize visual terminal (registers with desktop search) } { Initialize visual terminal (registers with desktop search) }
vterminal.init; vterminal.init;
{ Initialize disk utility (registers with desktop search) }
diskutil.init;
{ Run unit tests } { Run unit tests }
strings.UnitTest; strings.UnitTest;
usbtypes.UnitTest; usbtypes.UnitTest;
+3 -3
View File
@@ -30,10 +30,10 @@ unit pmemorymanager;
interface interface
uses uses
util,
syslog,
multiboot, multiboot,
tracer; syslog,
tracer,
util;
{ Public interface — signatures unchanged from the original unit } { Public interface — signatures unchanged from the original unit }
procedure init; procedure init;
+9 -9
View File
@@ -18,13 +18,13 @@ procedure init();
implementation implementation
uses uses
console, syslog,
lists, lists,
lmemorymanager, lmemorymanager,
storagemanager, storagemanager,
storagetypes, storagetypes,
strings, strings,
terminal, stdio,
tracer, tracer,
util, util,
volumemanager; volumemanager;
@@ -33,7 +33,7 @@ uses
function wnd : uint32; function wnd : uint32;
begin begin
wnd := getTerminalHWND; wnd := 0;
end; end;
function str2int(s : pchar) : uint32; function str2int(s : pchar) : uint32;
@@ -57,22 +57,22 @@ end;
procedure print(s : pchar); procedure print(s : pchar);
begin begin
console.writestringWND(s, wnd); syslog.writestring(s);
end; end;
procedure println(s : pchar); procedure println(s : pchar);
begin begin
console.writestringlnWND(s, wnd); syslog.writestringln(s);
end; end;
procedure printint(v : uint32); procedure printint(v : uint32);
begin begin
console.writeintWND(v, wnd); syslog.writeint(v);
end; end;
procedure printhex(v : uint32); procedure printhex(v : uint32);
begin begin
console.writehexWND(v, wnd); syslog.writehex(v);
end; end;
procedure printsize(bytes : uint32); procedure printsize(bytes : uint32);
@@ -270,7 +270,7 @@ end;
{ ---------- Main dispatcher ---------- } { ---------- Main dispatcher ---------- }
procedure command_disk(params : PParamList); procedure command_disk(params : PParamList; stdin_buf, stdout_buf, stderr_buf: POutBuf);
var var
subcmd : pchar; subcmd : pchar;
begin begin
@@ -306,7 +306,7 @@ end;
procedure init(); procedure init();
begin begin
terminal.registerCommand('DISK', @command_disk, 'Storage device information.'); stdio.registerCommand('DISK', @command_disk, 'Storage device information.');
end; end;
end. end.
Loaded 20 of 25 files, more files were not shown because too many files have changed in this diff. Show more