Where Can I Find Information About Ports: Difference between revisions

[unchecked revision][unchecked revision]
Content deleted Content added
m →‎Standard Interfaces: Updated usb interface number
No edit summary
Line 1:
{{Tone}}
{{FirstPerson}}
== Question: Where Can I Find Information About Ports? ==
<div style="font-size:8pt">
Line 20 ⟶ 22:
 
===== Legacy Software Interfaces =====
Also, for some devices there's a legacy software interface. This is mostly limited to video cards though (the [[VGA_Resources|VESA/VBE]] interface) because the rest is too crappy{{how}} (no sane person uses the BIOS for [[Serial_ports|serial ports]], [[Parallel_port|parallel ports]], [[PS2_Keyboard|PS/2 keyboard]], [[Floppy_Disk_Controller|floppy]], or [[ATA_PIO_Mode|hard drives]], etc,{{why}} even though it's possible in theory). Like the "legacy hardware interface", this is mostly just a short-term solution (basic functionality with no extra features and poor performance{{how}}).
 
===== Standard Interfaces =====
Line 26 ⟶ 28:
 
===== Supporting Devices Is Difficult =====
Mostly, to support all devices properly (without using legacy interfaces) you need to read through thousands of pieces of documentation and write thousands of different device drivers (and no, there isn'tare not thousands of guides, one for each device, or any other "hand holding" - you need to find, read and understand the manufacturer's documentation).
 
===== Keep It Minimal =====
Fortunately (IMHO), for a good OS design you don't actually need to write many device drivers{{according_to_who}} (a few common drivers to get things started perhaps). You only really need to design, implement and document suitable device driver interface/s, so that other programmers can easily write the device drivers later. For example, you might write one device driver for one [[ethernet]] card, and (hopefully, one day) twenty more people might use your [[documentation]] (and your first device driver, as a reference) to implement fifty more device [[drivers]] for fifty more [[ethernet]] cards.
 
Basically what I'm saying is that (IMHO) sane OS developers don't actually write an OS. Instead they write [[Bootloader]]s, [[kernels]], and [[documentation]]. Only after the [[kernels|kernel]] and [[documentation]] are entirely complete do they worry about device [[drivers]], [[File_Systems|file systems]], [[applications]], etc (except for some common/special case stuff that they need to test the kernel and the kernel's interfaces).