diff --git a/ableos/src/devices/pci/class.rs b/ableos/src/devices/pci/class.rs index 5cbddbf9..f676a8f6 100644 --- a/ableos/src/devices/pci/class.rs +++ b/ableos/src/devices/pci/class.rs @@ -184,56 +184,61 @@ impl Display for PciFullClass { write!(f, " Class: ")?; match self { - PciFullClass::Unclassified_NonVgaCompatible => write!(f, "\0LIGHTBLUE\0")?, - PciFullClass::Unclassified_VgaCompatible => write!(f, "\0LIGHTBLUE\0")?, - PciFullClass::MassStorage_ScsiBus => write!(f, "\0CYAN\0")?, - PciFullClass::MassStorage_IDE => write!(f, "\0CYAN\0")?, - PciFullClass::MassStorage_Floppy => write!(f, "\0CYAN\0")?, - PciFullClass::MassStorage_IpiBus => write!(f, "\0CYAN\0")?, - PciFullClass::MassStorage_RAID => write!(f, "\0CYAN\0")?, - PciFullClass::MassStorage_ATA => write!(f, "\0CYAN\0")?, - PciFullClass::MassStorage_SATA => write!(f, "\0CYAN\0")?, - PciFullClass::MassStorage_SerialSCSI => write!(f, "\0CYAN\0")?, - PciFullClass::MassStorage_NVM => write!(f, "\0CYAN\0")?, - PciFullClass::MassStorage_Other => write!(f, "\0CYAN\0")?, - PciFullClass::Network_Ethernet => write!(f, "\0MAGENTA\0")?, - PciFullClass::Network_TokenRing => write!(f, "\0MAGENTA\0")?, - PciFullClass::Network_FDDI => write!(f, "\0MAGENTA\0")?, - PciFullClass::Network_ATM => write!(f, "\0MAGENTA\0")?, - PciFullClass::Network_ISDN => write!(f, "\0MAGENTA\0")?, - PciFullClass::Network_WorldFlip => write!(f, "\0MAGENTA\0")?, - PciFullClass::Network_PICMG => write!(f, "\0MAGENTA\0")?, - PciFullClass::Network_Infiniband => write!(f, "\0MAGENTA\0")?, - PciFullClass::Network_Fabric => write!(f, "\0MAGENTA\0")?, - PciFullClass::Network_Other => write!(f, "\0MAGENTA\0")?, - PciFullClass::Display_VGA => write!(f, "\0YELLOW\0")?, - PciFullClass::Display_XGA => write!(f, "\0YELLOW\0")?, - PciFullClass::Display_3D => write!(f, "\0YELLOW\0")?, - PciFullClass::Display_Other => write!(f, "\0YELLOW\0")?, - PciFullClass::Multimedia_Video => write!(f, "\0LIGHTBLUE\0")?, - PciFullClass::Multimedia_AudioController => write!(f, "\0LIGHTBLUE\0")?, - PciFullClass::Multimedia_Telephony => write!(f, "\0LIGHTBLUE\0")?, - PciFullClass::Multimedia_AudioDevice => write!(f, "\0LIGHTBLUE\0")?, - PciFullClass::Multimedia_Other => write!(f, "\0LIGHTBLUE\0")?, - PciFullClass::Memory_RAM => write!(f, "\0BLUE\0")?, - PciFullClass::Memory_Flash => write!(f, "\0WHITE\0")?, - PciFullClass::Memory_Other => write!(f, "\0LIGHTGREY\0")?, - PciFullClass::Bridge_Host => write!(f, "\0GREEN\0")?, - PciFullClass::Bridge_ISA => write!(f, "\0GREEN\0")?, - PciFullClass::Bridge_EISA => write!(f, "\0GREEN\0")?, - PciFullClass::Bridge_MCA => write!(f, "\0GREEN\0")?, - PciFullClass::Bridge_PciToPci => write!(f, "\0GREEN\0")?, - PciFullClass::Bridge_PCMCIA => write!(f, "\0GREEN\0")?, - PciFullClass::Bridge_NuBus => write!(f, "\0GREEN\0")?, - PciFullClass::Bridge_CardBus => write!(f, "\0GREEN\0")?, - PciFullClass::Bridge_RACEway => write!(f, "\0GREEN\0")?, - PciFullClass::Bridge_PciToPciSemiTransparent => write!(f, "\0GREEN\0")?, - PciFullClass::Bridge_InfinibandToPci => write!(f, "\0GREEN\0")?, - PciFullClass::Bridge_Other => write!(f, "\0GREEN\0")?, - PciFullClass::Unknown => write!(f, "\0RED\0")?, + PciFullClass::Unclassified_NonVgaCompatible => write!(f, "\u{001A}LIGHTBLUE\u{001A}")?, + PciFullClass::Unclassified_VgaCompatible => write!(f, "\u{001A}LIGHTBLUE\u{001A}")?, + PciFullClass::MassStorage_ScsiBus => write!(f, "\u{001A}CYAN\u{001A}")?, + PciFullClass::MassStorage_IDE => write!(f, "\u{001A}CYAN\u{001A}")?, + PciFullClass::MassStorage_Floppy => write!(f, "\u{001A}CYAN\u{001A}")?, + PciFullClass::MassStorage_IpiBus => write!(f, "\u{001A}CYAN\u{001A}")?, + PciFullClass::MassStorage_RAID => write!(f, "\u{001A}CYAN\u{001A}")?, + PciFullClass::MassStorage_ATA => write!(f, "\u{001A}CYAN\u{001A}")?, + PciFullClass::MassStorage_SATA => write!(f, "\u{001A}CYAN\u{001A}")?, + PciFullClass::MassStorage_SerialSCSI => write!(f, "\u{001A}CYAN\u{001A}")?, + PciFullClass::MassStorage_NVM => write!(f, "\u{001A}CYAN\u{001A}")?, + PciFullClass::MassStorage_Other => write!(f, "\u{001A}CYAN\u{001A}")?, + PciFullClass::Network_Ethernet => write!(f, "\u{001A}MAGENTA\u{001A}")?, + PciFullClass::Network_TokenRing => write!(f, "\u{001A}MAGENTA\u{001A}")?, + PciFullClass::Network_FDDI => write!(f, "\u{001A}MAGENTA\u{001A}")?, + PciFullClass::Network_ATM => write!(f, "\u{001A}MAGENTA\u{001A}")?, + PciFullClass::Network_ISDN => write!(f, "\u{001A}MAGENTA\u{001A}")?, + PciFullClass::Network_WorldFlip => write!(f, "\u{001A}MAGENTA\u{001A}")?, + PciFullClass::Network_PICMG => write!(f, "\u{001A}MAGENTA\u{001A}")?, + PciFullClass::Network_Infiniband => write!(f, "\u{001A}MAGENTA\u{001A}")?, + PciFullClass::Network_Fabric => write!(f, "\u{001A}MAGENTA\u{001A}")?, + PciFullClass::Network_Other => write!(f, "\u{001A}MAGENTA\u{001A}")?, + PciFullClass::Display_VGA => write!(f, "\u{001A}YELLOW\u{001A}")?, + PciFullClass::Display_XGA => write!(f, "\u{001A}YELLOW\u{001A}")?, + PciFullClass::Display_3D => write!(f, "\u{001A}YELLOW\u{001A}")?, + PciFullClass::Display_Other => write!(f, "\u{001A}YELLOW\u{001A}")?, + PciFullClass::Multimedia_Video => write!(f, "\u{001A}LIGHTBLUE\u{001A}")?, + PciFullClass::Multimedia_AudioController => write!(f, "\u{001A}LIGHTBLUE\u{001A}")?, + PciFullClass::Multimedia_Telephony => write!(f, "\u{001A}LIGHTBLUE\u{001A}")?, + PciFullClass::Multimedia_AudioDevice => write!(f, "\u{001A}LIGHTBLUE\u{001A}")?, + PciFullClass::Multimedia_Other => write!(f, "\u{001A}LIGHTBLUE\u{001A}")?, + PciFullClass::Memory_RAM => write!(f, "\u{001A}BLUE\u{001A}")?, + PciFullClass::Memory_Flash => write!(f, "\u{001A}WHITE\u{001A}")?, + PciFullClass::Memory_Other => write!(f, "\u{001A}LIGHTGREY\u{001A}")?, + PciFullClass::Bridge_Host => write!(f, "\u{001A}GREEN\u{001A}")?, + PciFullClass::Bridge_ISA => write!(f, "\u{001A}GREEN\u{001A}")?, + PciFullClass::Bridge_EISA => write!(f, "\u{001A}GREEN\u{001A}")?, + PciFullClass::Bridge_MCA => write!(f, "\u{001A}GREEN\u{001A}")?, + PciFullClass::Bridge_PciToPci => write!(f, "\u{001A}GREEN\u{001A}")?, + PciFullClass::Bridge_PCMCIA => write!(f, "\u{001A}GREEN\u{001A}")?, + PciFullClass::Bridge_NuBus => write!(f, "\u{001A}GREEN\u{001A}")?, + PciFullClass::Bridge_CardBus => write!(f, "\u{001A}GREEN\u{001A}")?, + PciFullClass::Bridge_RACEway => write!(f, "\u{001A}GREEN\u{001A}")?, + PciFullClass::Bridge_PciToPciSemiTransparent => write!(f, "\u{001A}GREEN\u{001A}")?, + PciFullClass::Bridge_InfinibandToPci => write!(f, "\u{001A}GREEN\u{001A}")?, + PciFullClass::Bridge_Other => write!(f, "\u{001A}GREEN\u{001A}")?, + PciFullClass::Unknown => write!(f, "\u{001A}RED\u{001A}")?, } - write!(f, "{:?} ({:#06X})\0RESET\0", self, self.as_u16())?; + write!( + f, + "{:?} ({:#06X})\u{001A}RESET\u{001A}", + self, + self.as_u16() + )?; Ok(()) } diff --git a/ableos/src/devices/pci/ide.rs b/ableos/src/devices/pci/ide.rs index 60a617e4..98559646 100644 --- a/ableos/src/devices/pci/ide.rs +++ b/ableos/src/devices/pci/ide.rs @@ -84,7 +84,7 @@ const CMD_READ_DMA_EXT: u8 = 0x25; /// ATA write using LBA48 DMA command const CMD_WRITE_DMA_EXT: u8 = 0x35; - +#[derive(Debug)] pub struct PciIde { device_info: PciDeviceInfo, ide_devices: Vec, @@ -629,6 +629,7 @@ unsafe fn read_dword_buffer(port: u16, buffer: *mut u32, mut count: u32) { }); } +#[derive(Debug)] struct IdeDevice { pub channel: Channel, pub drive: Drive, diff --git a/ableos/src/devices/pci/mod.rs b/ableos/src/devices/pci/mod.rs index 12d18d08..7ab395e3 100644 --- a/ableos/src/devices/pci/mod.rs +++ b/ableos/src/devices/pci/mod.rs @@ -28,6 +28,7 @@ lazy_static! { } #[non_exhaustive] +#[derive(Debug)] pub enum PciDevice { Ide(PciIde), // Variant so that we aren't about irrefutable if-let patterns @@ -41,6 +42,7 @@ pub fn init(mapper: &mut impl Mapper, frame_allocator: &mut BootInfoFr for device in 0..32 { if let Some(device_info) = device::check_device(bus, device) { trace!("{device_info}"); + println!("{device_info}"); match device_info.device_id { // FIXME: Unknown class S3_TRIO64V2 => {} diff --git a/ableos/src/devices/pci/vendors.rs b/ableos/src/devices/pci/vendors.rs index 486b32a4..1112a400 100644 --- a/ableos/src/devices/pci/vendors.rs +++ b/ableos/src/devices/pci/vendors.rs @@ -164,17 +164,17 @@ impl Display for Vendor { use Vendor::*; match self { - Qemu => write!(f, "{}", "\0PINK\0QEMU (0x1234)"), - VirtIO => write!(f, "{}", "\0PINK\0VirtIO (0x1AF4)"), - VMWareInc => write!(f, "{}", "\0PINK\0VMWARE (0x15AD)"), - S3Inc => write!(f, "{}", "\0YELLOW\0S3 Incorporated (0x5333)"), - IntelCorp => write!(f, "{}", "\0BLUE\0Intel Corp. (0x8086)"), - ATITechnologiesInc => write!(f, "{}", "\0RED\0ATI (0x1002)"), - Unknown(id) => write!(f, "\0RED\0Unknown ({:#6})", id), + Qemu => write!(f, "{}", "\u{001A}PINK\u{001A}QEMU (0x1234)"), + VirtIO => write!(f, "{}", "\u{001A}PINK\u{001A}VirtIO (0x1AF4)"), + VMWareInc => write!(f, "{}", "\u{001A}PINK\u{001A}VMWARE (0x15AD)"), + S3Inc => write!(f, "{}", "\u{001A}YELLOW\u{001A}S3 Incorporated (0x5333)"), + IntelCorp => write!(f, "{}", "\u{001A}BLUE\u{001A}Intel Corp. (0x8086)"), + ATITechnologiesInc => write!(f, "{}", "\u{001A}RED\u{001A}ATI (0x1002)"), + Unknown(id) => write!(f, "\u{001A}RED\u{001A}Unknown ({:#6})", id), other => write!(f, "{other:?}"), }?; - write!(f, "\0RESET\0")?; + write!(f, "\u{001A}RESET\u{001A}")?; Ok(()) } } diff --git a/ableos/src/scratchpad.rs b/ableos/src/scratchpad.rs index 3a4d9356..8144910c 100644 --- a/ableos/src/scratchpad.rs +++ b/ableos/src/scratchpad.rs @@ -120,7 +120,8 @@ pub fn scratchpad() { .iter() .find_map(|device_ref| { let device = device_ref.lock(); - if let PciDevice::Ide(_) = &*device { + if let PciDevice::Ide(dev) = &*device { + println!("IDE Device found: {}", dev.device_info()); Some(device_ref.clone()) } else { None @@ -136,7 +137,7 @@ pub fn scratchpad() { device .read(Channel::Primary, Drive::Master, 0, 1, &mut first_sector) .unwrap(); - trace!("IDE Primary/Master sector 0: {first_sector:?}"); + // trace!("IDE Primary/Master sector 0: {first_sector:?}"); } } diff --git a/disk.img b/disk.img new file mode 100644 index 00000000..bbe4df9c Binary files /dev/null and b/disk.img differ