Compile your own IBM 8088 XT BIOS!
Two weeks ago the first version (v1.0.0
) of the BIOS for systems based on the Intel 8088 processor was tagged on GitHub! [8088_bios on GitHub].
What does this mean in practice?
- 8088: The Intel 8088 is an version of the Intel 8086, from which the 286 and 386 processors known from PCs in the 80s derived, when instead of “PCs” they were often called “IBM compatibles”. The Intel 8088 appeared on the market on June 1, 1979. It was in the first IBM PC! It operates at 5 to 16 MHz, can address up to a megabyte of memory, but unlike the 8086 has not 16- but an 8-bit data bus (which means that like the Z80, it communicates with other devices by exchanging at most one byte at a time). Produced in 3μm technology, meaning this was the size of the transistors inside the chip. For comparison, the iPhone 15 Pro is the first consumer device on the market based on a processor in which the transistors are a thousand times smaller (3nm) and exchange signals almost 700 times faster (3.5GHz vs 5MHz). I would avoid saying “they work 700 times faster”, because modern processors have many other optimizations and solutions that increase their complexity, but also the speed of operation at the same clock speed.
- BIOS stands for Basic Input Output System – responsible for booting the most basic computer components, detecting and handling the keyboard (later also mouse and its equivalents), preparing the graphics system to display anything, handling the real-time clock (thanks to which the computer “knows” what date and time it is), disk or floppy drive (especially to be able to boot the system from floppy). Usually the firmware of PC computers responsible for these things was not openly available, which leads to the last point:
- Open Source. This is the first open source code that can serve as a BIOS for these computers (IBM XT 8088, Xi 8088, Micro 8088…), so we are dealing with open source software under the GPL license, which can be freely analyzed and modified. The whole thing is coded directly in 8088 assembler to maintain full control over each system operation and fit within limited resources.
Now you can see exactly how the IBM XT enters text mode, sets the cursor shape, and detects and handles the serial port, and even what commands are sent to the floppy drive controller while formatting a single track.