What does it mean for a computer to be an "IBM Compatible PC"?
A couple questions about this:
1) Is this term even relevant any more?
2) Does this mean anything from a developer's stand point?
It is not exactly clear to me if this is a BIOS, architecture, bus or a combination. A piece of software I'm working on expects to see a "Description" of the system and currently windows machines report "AT/AT Compatible". Having been tasked to port this to Mac, I really don't know what a proper "Description" would be - this will most likely be omitted but I was wondering if anyone could provide some insight on the modern usage of this term.
1) Is this term even relevant any more?
Not really. In the early days of home/personal computing, there were several computing platforms using various microprocessors. Hardware and software were typically incompatible between these platforms. As HW and SW manufacturers and users gravitated towards the IBM PC, computers (know as IBM clones) that were both hardware and software compatible to the original IBM PC were produced to take advantage of its popularity. Today the term "PC" is pretty much means an IBM-compatible or Wintel computer, and excludes other personal computers like Mac.
2) Does this mean anything from a developer's stand point?
Not really. Today all of the essential parameters for PCs are now standardized and agreed upon by most manufacturers, the most significant alliance being Microsoft and Intel, aka Wintel. Today new features like PCI or SATA are agreed to by some standards committee and/or hardware and software manufacturers/associations. New hardware products are typically introduced with full OS and application support. The boundary between the hardware and OS and application programs is much better defined and kept separate with DKIs (driver kernel interfaces) and APIs (application program interfaces), so that strict hardware imitation is not required any more.