diff --git a/bin/kernel.bin b/bin/kernel.bin index 0544c08f..b14424ca 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 0544c08f..b14424ca 100755 Binary files a/iso/boot/asuro.bin and b/iso/boot/asuro.bin differ diff --git a/lib/PCI.ppu b/lib/PCI.ppu index 715e1862..0e2ac6b5 100644 Binary files a/lib/PCI.ppu and b/lib/PCI.ppu differ diff --git a/lib/kernel.ppu b/lib/kernel.ppu index 3a3dbbdf..709ef74c 100644 Binary files a/lib/kernel.ppu and b/lib/kernel.ppu differ diff --git a/lib/libpconsole.a b/lib/libpconsole.a index 7c871360..9e8583ad 100644 Binary files a/lib/libpconsole.a and b/lib/libpconsole.a differ diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index bbd4bf7c..9635fbf3 100644 Binary files a/lib/libpmultiboot.a and b/lib/libpmultiboot.a differ diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 1470376a..0383ea50 100644 Binary files a/lib/libpsystem.a and b/lib/libpsystem.a differ diff --git a/src/driver/PCI.pas b/src/driver/PCI.pas index 793230f0..ef812fb4 100644 --- a/src/driver/PCI.pas +++ b/src/driver/PCI.pas @@ -326,15 +326,12 @@ begin console.writestring(' '); console.writehexln(device.prog_if); - drivermanagement.register_device('PCI Device', DevID, @device); - - kfree(void(DevID)); - devices[device_count] := device; device_count := device_count + 1; - //if device.class_code = 1 then ata.init(device); - + drivermanagement.register_device('PCI Device', DevID, @device); + kfree(void(DevID)); + //if device.class_code = 1 then ata.init(device); end; function getDeviceInfo(class_code : uint8; subclass_code : uint8; prog_if : uint8; var count : uint32) : TDeviceArray; @@ -343,27 +340,25 @@ var devices_out : array[0..31] of TPCI_Device; begin - console.writestring('DEV COUNT: '); - console.writeintln(device_count); count := 0; - if prog_if <> $FF then begin - for i:=0 to device_count+1 do begin - if (devices[i].class_code = class_code) and (devices[i].subclass_class = subclass_code) and (devices[i].prog_if = prog_if) then begin - devices_out[count] := devices[i]; - count := count + 1; - end; - end; - end else begin - for i:=0 to device_count+1 do begin - if (devices[i].class_code = class_code) and (devices[i].subclass_class = subclass_code) then begin - devices_out[count] := devices[i]; - count := count + 1; - end; + for i:=0 to device_count do begin + {writehex(devices[i].class_code); + writestring(' ?= '); + writehex(class_code); + writestring(' && '); + writehex(devices[i].subclass_class); + writestring(' ?= '); + writehex(subclass_code); + writestring(' && '); + writehex(devices[i].prog_if); + writestring(' ?= '); + writehex(prog_if);} + if (devices[i].class_code = class_code) and (devices[i].subclass_class = subclass_code) and ((devices[i].prog_if = prog_if) or (prog_if = $FF)) then begin + devices_out[count] := devices[i]; + count := count + 1; end; end; - getDeviceInfo := devices_out; - end; end. \ No newline at end of file diff --git a/src/kernel.pas b/src/kernel.pas index de3aa2e2..f3104b8f 100644 --- a/src/kernel.pas +++ b/src/kernel.pas @@ -117,12 +117,13 @@ begin //drivers console.writestringln('DRIVERS: INIT BEGIN.'); - keyboard.init(keyboard_layout); - mouse.init(); - AHCI.init(); - testdriver.init(); + //keyboard.init(keyboard_layout); + //mouse.init(); + //AHCI.init(); + //testdriver.init(); USB.init(); pci.init(); + halt_and_catch_fire; console.writestringln('DRIVERS: INIT END.'); console.writestringln('');