Hi,
gusc wrote:What do you think about: ISA, PCI, PIC, PIT, IDE, USB 1.0 (UHCI, OHCI)?
ISA started being replaced by PCI in about 1995, and was almost gone entirely by 2000 (excluding very hard to find motherboards designed to satisfy a niche market of people with expensive/custom designed ISA cards that couldn't be replaced easily). For an OS (where you're simply not going to have drivers for the custom designed ISA cards anyway) supporting ISA cards doesn't make much sense unless you support hardware from 1997 ("Pentium II or older").
PCI was superceded by PCI Express (starting in about 2004). However, from software's perspective there's only minor/superficial differences (most differences are in the electronics not software), and it's hard to think of a reason not to support PCI if you support PCI Express anyway.
PIC chips got replaced by IO APIC; and supporting them doesn't make much sense unless you support hardware from about 2001 (e.g. "Pentium III or older").
The PIT got replaced by HPET and could be considered "ignorable" unless you support hardware from about 1999 (e.g. "Pentium II or older"). However, it's very easy to use the PIT chip and it makes a nice fall-back (e.g. in case there's something wrong with HPET) so I'd still include support for it anyway.
For IDE there's a progression (IDE, ATA 1, ATA 2, ..., ATA/ATAPI 8 ) where differences between "version n" and "version n+1" are minor. This makes it hard to really determine where you'd stop; unless you only support SATA/AHCI. SATA started in about about 2003 but took a while to catch on; so you'd want to support some sort of IDE/ATA/ATAPI if you support hardware from about 2007 or older.
The hardware for USB 2 relies on USB 1, so it's silly to support USB 2 without also supporting USB 1. USB 3 is still "too new". Basically, you should still include support for USB 1 even for "2013 or later" hardware.
gusc wrote:What about BIOS vs UEFI?
UEFI became mainstream (for "white box 80x86", not including Apple 80x86) with the introduction of Sandy Bridge. That was only a few years ago (2011). This means you need to support BIOS for hardware that's 2011 or older. More interesting is when support for legacy BIOS will stop. People don't seem to realise, but this has already started happening for 80x86 based tablets, so if you care about tablets you need to support UEFI now. For laptop/desktop/server it's going to take longer (my estimate is that it'll happen when consumers stop caring about support for Windows XP, which will probably be about 5 years).
gusc wrote:What about ACPI - is it a total mess or you can live with it? I'm having shivers when I hear AML (I really don't like overabstraction).
I have a "strong dislike" for ACPI. You can run a modern motherboard without using ACPI if you want, it's just that you lose a lot of things like power management, decent PCI IRQ support, etc. In theory you can write native motherboard drivers to do all of this instead (but that's a huge amount of work). Sadly, you probably want to support ACPI for hardware made after about 2000.
gusc wrote:What about APIC, xAPIC, x2APIC?
The "external local APIC chip" (82489DX) was used in some early Pentium systems, and 80486 systems. Back then multi-CPU was rare and most of those machines are dead now, so it doesn't make any sense bothering with 82489DX even if you do support 80486 systems. For x2APIC, there's backward compatibility and you can just use xAPIC instead; so you only really need to worry about x2APIC if you want to be able to support systems with 250 CPUs or more. Apart from that it just depends on which CPU/s you support, but it's not hard to support APIC and xAPIC anyway (the differences are too minor to worry about).
Cheers,
Brendan