IBMBIO.COM is a system file in many DOS operating systems. It contains the system initialization code and all built-in device drivers. It also loads the DOS kernel (IBMDOS.COM) and optional pre-loadable system components (like for disk compression or security),[1][2] displays boot menus, processes configuration files (like CONFIG.SYS) and launches the shell (like COMMAND.COM).
The file is part of IBM's PC DOS (all versions) as well as of DR DOS 5.0 and higher (with the exception of DR-DOS 7.06).[2][3] It serves the same purpose as the file IO.SYS in MS-DOS, or DRBIOS.SYS in DR DOS 3.31 to 3.41.[2][3] (For compatibility purposes with some DOS applications the IBMBIO.COM file name was briefly also used by the IBM version of OS/2 1.0, where it resembled the OS2BIO.COM file as used by Microsoft.)
The file is located in the root directory of the bootable FAT-formatted drive/partition (typically C:\) and typically has the system, hidden, and (since DOS 2.0 also the) read-only file attributes set.[4][5][6][2][3] Under DR-DOS the file may be optionally password-protected as well.[3][nb 1] Under PC DOS, the system attribute is set in order to mark the file as non-movable, a restriction technically not necessary under DR-DOS.[7][5][6][8][3] As IBMBIO.COM is a binary image containing executable code rather than a true COM-style program, the hidden attribute is set to keep the file from being accidentally invoked at the command prompt, which would lead to a crash.[5] This is no longer necessary for DR-DOS 7.02 and higher, because under these systems the file is a fat binary also containing a tiny COM-style stub just displaying some version info and exiting gracefully when not being loaded by a boot sector.[2][5][9]
In the PC bootup sequence, the first sector of the boot volume contains a boot loader called the volume boot record (VBR) and is loaded into memory and executed.
If this is a VBR of PC DOS before 3.3 it would load both system files into memory by itself.[4][10] As the PC DOS VBR cannot mount the FAT file system, the system files have to be stored in the first directory entries on the disk and be located at fixed physical positions on the disk stored in consecutive sectors, conditions of which the SYS utility must take care of.[4][10]
If the loaded boot sector is a PC DOS 3.3 (or newer) VBR, the requirements are slightly relaxed. The system files still have to be stored in the first two root directory entries on the disk, but the VBR will use only the first entry to load the first three sectors of IBMBIO.COM into memory and transfer control to it.[10][nb 2] This part of IBMBIO.COM then contains a somewhat larger boot loader which:
- Loads the rest of itself into memory. Before PC DOS 5.0 the system files still had to be stored at fixed physical positions on the disk and stored in consecutive sectors. With PC DOS 5.0 (and higher) this requirement was reduced down to the first three sectors of IBMBIO.COM only.[10][nb 2]
- Loads the DOS kernel. The kernel is stored in IBMDOS.COM.
- Initializes each default device driver in turn (console, disk, serial port, et cetera). At this point, the default devices are available.
- Calls the DOS kernel's initialization routine.
Under DR DOS 5.0 and higher, the first step is skipped, since a DR-DOS VBR is capable of mounting the FAT file system, locate the IBMBIO.COM (or DRBIOS.SYS) file anywhere in the root directory and load it into memory by itself.[7][2][5][11][8][3][nb 3][nb 4] The filename of the IBMBIO.COM file to be loaded by the boot sector is stored in the boot sector rather than necessarily in the first root directory entry, likewise the filename of the IBMDOS.COM file to be loaded by IBMBIO.COM is stored in IBMBIO.COM itself rather than necessarily in the second directory entry on the disk.[12][2][5][3] Also, similar to the IBMBIO.COM loader in the VBR, the IBMDOS.COM loader in IBMBIO.COM is capable of rudimentarily mounting the filesystem as well, therefore it is not necessary for the system files to be stored in the first two directory entries, to reside at fixed physical positions or be stored in consecutive sectors. Consequently, it is also no longer necessary to set the system attribute.[7][5][6][8][3] Instead, the system files can be simply copied to the disk (without SYS), given a DR-DOS boot sector already resides on the disk.[5][6][2][8][3]
Microsoft sometimes calls this component the I/O system,[4][13][14] but it is generally known as DOS BIOS (the DOS-related part of the Basic Input/Output System). The term BIOS was originally coined by Gary Kildall in 1975 for CP/M,[15][16][17][18][19][20] but is also used to describe a similar component or layer in other operating systems by Digital Research, IBM, Microsoft and many others.
In a more generic sense, some vendors refer to this portion as the RAM BIOS of operating systems such as DOS or CP/M in order to contrast it with the built-in ROM BIOS of a machine.[21]
See also
Notes
- In addition to the read-only attribute being set, the system files can be optionally password-protected under DR-DOS using the PASSWORD command or the
/R[:password]
option available in some versions of the SYS command.[a] The boot loader would simply ignore a set file password while loading the file, but once the system has been booted, the system files could not be accessed without knowing the password, thereby providing an additional level of protection from accidental attempts to delete or modify the system files. (This file password feature is independent of volume or boot passwords also provided by DR-DOS in certain configurations.) - The PC DOS 5.0 manual incorrectly states that the system files no longer need to be contiguous. However, for the boot process to work the system files still need to occupy the first two directory entries and the first three sectors of IBMBIO.COM still need to be stored contiguously.[b] SYS continues to take care of these requirements.
- There is one exception to the rule that DR-DOS VBRs will load the whole IBMBIO.COM file into memory: If the IBMBIO.COM file is larger than 29 KB, trying to load the whole file into memory would result in the boot loader to overwrite the stack and relocated Disk Parameter Table (DPT/FDPB). Therefore, a DR-DOS 7.07 VBR would only load the first 29 KB of the file into memory, relying on another loader embedded into the first part of IBMBIO.COM to check for this condition and load the remainder of the file into memory by itself if necessary. This does not cause compatibility problems, as due to internal compression[c][d] the IBMBIO.COM's size never exceeded this limit in previous versions without this loader. Combined with a dual entry structure this also allows the system to be loaded by a PC DOS VBR, which would load only the first three sectors of the file into memory.
- The extended functionality of the DR-DOS volume boot record to mount FAT12 and FAT16 file systems via CHS, search for the boot file IBMBIO.COM and load it into memory as a whole, even if not stored at a fixed location and in consecutive sectors,[e][f][g][h][i][j] could still be included utilizing conventional code optimization techniques in assembly language up to 7.05, even while maintaining the minimum requirements of a 32 KB memory system with only 8088/8086 processor and continuing to support larger sector sizes and the
SYS /DR:ext
multi-boot feature.[f] For the further addition of alternative boot units, LBA, FAT32 and the optional facility to also boot PC DOS/MS-DOS in addition to DR-DOS, the 7.07 sectors had to resort to self-modifying code, opcode-level programming in machine language, controlled utilization of (documented) side effects, multi-level data/code overlapping and algorithmic folding techniques to still squeeze everything into the 423 bytes available for code in a single physical sector of 512 bytes, as it was a requirement for backward- and cross-compatibility with other operating systems in multi boot and chain load scenarios.
References
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.