diff --git a/Asuro.iso b/Asuro.iso index 04037516..13033c4e 100644 Binary files a/Asuro.iso and b/Asuro.iso differ diff --git a/bin/kernel.bin b/bin/kernel.bin index a3f4aac7..0c4f6312 100755 Binary files a/bin/kernel.bin and b/bin/kernel.bin differ diff --git a/iso/boot/asuro.bin b/iso/boot/asuro.bin index a3f4aac7..0c4f6312 100755 Binary files a/iso/boot/asuro.bin and b/iso/boot/asuro.bin differ diff --git a/lib/kernel.ppu b/lib/kernel.ppu index a712b711..132d7f01 100644 Binary files a/lib/kernel.ppu and b/lib/kernel.ppu differ diff --git a/lib/libpconsole.a b/lib/libpconsole.a index be94bdd6..47edb862 100644 Binary files a/lib/libpconsole.a and b/lib/libpconsole.a differ diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index 31f3f716..cbac539e 100644 Binary files a/lib/libpmultiboot.a and b/lib/libpmultiboot.a differ diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 829bd589..bc5d3d03 100644 Binary files a/lib/libpsystem.a and b/lib/libpsystem.a differ diff --git a/src/driver/USB.pas b/src/driver/USB.pas index 1dad270c..a4ed9a27 100644 --- a/src/driver/USB.pas +++ b/src/driver/USB.pas @@ -85,9 +85,6 @@ begin force_alloc_block(block, 0); map_page(block, block); MMR:= POHCI_MMR(devices[i].address0); - MMR^.HcRevision:= 200; - console.writestring('HcRevision? '); - console.writehexln(getByte(MMR^.HcRevision, 0)); end; end; diff --git a/src/driver_management.pas b/src/driver_management.pas new file mode 100644 index 00000000..f1456262 --- /dev/null +++ b/src/driver_management.pas @@ -0,0 +1,63 @@ +{ ************************************************ + * Asuro + * Unit: Driver_Management + * Description: Manages Driver Loading + ************************************************ + * Author: K Morris + * Contributors: + ************************************************ } +unit Driver_Management; + +interface + +uses + util, strings; + +type + PDevEx = ^TDevEx; + TDevEx = record + idN : uInt32; + ex : PDevEx; + end; + + TBusIdentifier = (biUnknown, biPCI, biUSB, bii2c, biPCIe); + + PDeviceIdentifier = ^TDeviceIdentifier; + TDeviceIdentifier = record + Bus : TBusIdentifier; + id0 : uInt32; + id1 : uInt32; + id2 : uInt32; + id3 : uint32; + ex : PDevEx; + end; + + TDriverLoadCallback = procedure(); + + PDriverRegistration = ^TDriverRegistration; + TDriverRegistration = record + Identifier : TDeviceIdentifier; + Driver_Load : TDriverLoadCallback; + Loaded : Boolean; + Next : PDriverRegistration; + end; + +procedure RegisterDriver(DeviceID : PDeviceIdentifier; Load_Callback : TDriverLoadCallback); +procedure RegisterDevice(DeviceID : PDeviceIdentifier); + +var + Root : PDriverRegistration = nil; + +implementation + +procedure RegisterDriver(DeviceID : PDeviceIdentifier; Load_Callback : TDriverLoadCallback); +begin + +end; + +procedure RegisterDevice(DeviceID : PDeviceIdentifier); +begin + +end; + +end. \ No newline at end of file diff --git a/src/kernel.pas b/src/kernel.pas index 17bdfb73..34126423 100644 --- a/src/kernel.pas +++ b/src/kernel.pas @@ -26,6 +26,7 @@ uses vmemorymanager, pmemorymanager, lmemorymanager, + driver_management, tss, scheduler, PCI, @@ -115,7 +116,6 @@ begin console.writestringln('DRIVERS: INIT BEGIN.'); pci.init(); keyboard.init(keyboard_layout); - keyboard.hook(@temphook); mouse.init(); USB.init(); console.writestringln('DRIVERS: INIT END.'); @@ -137,6 +137,7 @@ begin console.setdefaultattribute(console.combinecolors(White, Black)); console.writestringln(''); console.writestringln('Press any key to boot in to Asuro Terminal...'); + keyboard.hook(@temphook); util.halt_and_dont_catch_fire; end;