IBMBIO.COM

IBMBIO.COM (at the top of the listing of COM files) in IBM PC DOS 1.0.

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:

  1. 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]
  2. Loads the DOS kernel. The kernel is stored in IBMDOS.COM.
  3. Initializes each default device driver in turn (console, disk, serial port, et cetera). At this point, the default devices are available.
  4. 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]

  1. ^ Cite error: The named reference Schulman_1994_Undocumented-DOS was invoked but never defined (see the help page).
  2. ^ a b c d e f g h Cite error: The named reference Paul_1997_OD-A3 was invoked but never defined (see the help page).
  3. ^ a b c d e f g h i Cite error: The named reference Paul_2017 was invoked but never defined (see the help page).
  4. ^ a b c d Cite error: The named reference Duncan_1988_MS-DOS_Encyclopedia was invoked but never defined (see the help page).
  5. ^ a b c d e f g h Cite error: The named reference Paul_1997_NWDOSTIP was invoked but never defined (see the help page).
  6. ^ a b c d Cite error: The named reference Paul_2001_NWDOSTIP was invoked but never defined (see the help page).
  7. ^ a b c Cite error: The named reference Rosch_1991_SYS was invoked but never defined (see the help page).
  8. ^ a b c d Cite error: The named reference Paul_2002 was invoked but never defined (see the help page).
  9. ^ Cite error: The named reference Caldera_1998_NEW703 was invoked but never defined (see the help page).
  10. ^ a b c d Cite error: The named reference Chappell_1994_DOS-Internals was invoked but never defined (see the help page).
  11. ^ Cite error: The named reference Paul_2001 was invoked but never defined (see the help page).
  12. ^ Cite error: The named reference Novell_1993_LOADER was invoked but never defined (see the help page).
  13. ^ Cite error: The named reference Paterson_1994_Origins_DOS was invoked but never defined (see the help page).
  14. ^ Cite error: The named reference Paterson_2007_Design-DOS was invoked but never defined (see the help page).
  15. ^ Cite error: The named reference Kildall_1975_BIOS was invoked but never defined (see the help page).
  16. ^ Cite error: The named reference Kildall_1980_CPM was invoked but never defined (see the help page).
  17. ^ Cite error: The named reference Shustek_2016 was invoked but never defined (see the help page).
  18. ^ Cite error: The named reference Kildall_1993 was invoked but never defined (see the help page).
  19. ^ Cite error: The named reference Fischer_2001_Ewing was invoked but never defined (see the help page).
  20. ^ Cite error: The named reference Fraley_2007_Killian was invoked but never defined (see the help page).
  21. ^ Cite error: The named reference ACT_1984_Apricot-Portable was invoked but never defined (see the help page).


Cite error: There are <ref group=nb> tags on this page, but the references will not show without a {{reflist|group=nb}} template (see the help page).