Hardware Reference
In-Depth Information
youdidn'taddnewhardwareforwhichtherewasn'tadriverinROM.Ifyoudid,youthen
had two choices. If the hardware you were adding was an adapter card, that card could
include a ROM onboard containing the necessary device drivers. The motherboard ROM
was programmed to scan a predetermined area of memory looking for any adapter card
ROMs, and if any were found, their code was executed, essentially adding their function-
ality to the existing BIOS. In essence, the motherboard ROM “assimilated” any adapter
card ROMs, adding to the “collective” functionality.
This method of adding drivers was required for items such as video cards, which needed
tobefunctionalimmediatelywhenthePCwaspoweredon.TheBIOScodeinthemother-
board ROM had drivers only for the IBM monochrome display adapter (MDA) and col-
or graphics adapter (CGA) video cards. If you added a video card other than those, the
drivers in the motherboard ROM would not support it. That wouldn't be a problem if the
new video card had its own drivers in an onboard ROM that would be linked into the
BIOS immediately upon throwing the power switch.
If the device did not have an on-board ROM connected to the main system bus, there
had to be another way to add the necessary driver to the BIOS collective. A scheme was
devised whereby, during the early stages of loading, the MS-DOS startup file (IO.SYS)
checked for a configuration file (called CONFIG.SYS) that specified any additional
drivers to load to support new hardware. The CONFIG.SYS file, along with any drivers
named within, would be placed on the boot drive. When booting, the IO.SYS program
would load the specified drivers into memory and link them into the rest of the BIOS,
again adding their functionality to the collective whole. In essence, these drivers were
loaded from disk into RAM and linked into the BIOS so they could be called on when
necessary.
At this point, the BIOS had grown from being entirely contained in the motherboard
ROM, to having additional drivers linked in from adapter card ROMs, to having even
more drivers linked in after being loaded into RAM during the early stages of the boot
process.TheBIOSwasnowconstructedofprogramslocatedinthreephysicallocationsin
thesystem,yetitfunctionedasasingleentitybecausealltheprogramswerelinkedviathe
BIOSsubroutinecalling system-of-software interrupts. TheOSoranapplication program
needing to talk to a specific piece of hardware (for example, to read from the CD-ROM
drive) would make a call to a specific software interrupt, and the interrupt vector table
would then route the call to the specific part of the BIOS (meaning the specific driver)
for the device being called. It did not matter whether that driver was in the motherboard
ROM, adapter ROM, or RAM. As far as the system was concerned, memory is memory,
and as long as the routine existed at a known memory address, it could be called.
Search WWH ::




Custom Search