Hardware Reference
In-Depth Information
“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 to be
functional immediately when the PC was powered on. The BIOS code in the motherboard ROM had
drivers only for the IBM monochrome display adapter (MDA) and color 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. The BIOS was now constructed of
programs located in three physical locations in the system, yet it functioned as a single entity because
all the programs were linked via the BIOS subroutine calling system-of-software interrupts. The OS
or an application 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.
The combination of the motherboard ROM, adapter card ROM, and device drivers loaded from disk
into RAM contributed to the BIOS as a whole. The portion of the BIOS contained in ROM chips, both
on the motherboard and in some adapter cards, is sometimes called firmware , which is a name given
to software stored in ROM chips rather than on disk. Of course, after you turned off the system, the
drivers in nonvolatile ROM would remain intact, but those in volatile RAM would instantly vanish.
That was not a problem, however, because the next time the system was turned back on, it went
through the boot process and loaded the necessary drivers from disk all over again.
As the PC has evolved, more and more accessories and new hardware have been devised to add to
the system. This means that more and more drivers have to be loaded to support this hardware.
Adding new drivers to the motherboard ROM is difficult because ROM chips are relatively fixed
(difficult to change), and limited space is available. The PC architecture allows only 256KB of total
ROM space. 128KB is for the motherboard ROM, and most of that was already used by the existing
drivers, POST, BIOS Setup program, and, of course, the bootstrap loader. Also, only 128KB is
allocated for adapter card ROMs, and putting drivers on adapter card ROMs is expensive, not to
mention the fact that the video card/GPU ROM takes 32KB of that space. So, most companies
developing new hardware for the PC simply wrote drivers designed to be loaded into RAM during
the boot process.
As time went on, more and more drivers were being loaded from disk—including drivers that were
 
Search WWH ::




Custom Search