IBMBIO.COM
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
- Schulman, Andrew; Brown, Ralf D.; Maxey, David; Michels, Raymond J.; Kyle, Jim (1994) [November 1993]. Undocumented DOS: A programmer's guide to reserved MS-DOS functions and data structures - expanded to include MS-DOS 6, Novell DOS and Windows 3.1 (2 ed.). Reading, Massachusetts: Addison Wesley. ISBN 0-201-63287-X. (xviii+856+vi pages, 3.5"-floppy) Errata:
- Paul, Matthias R. (1997-10-02) [1997-09-29]. "Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM - README.TXT and BOOT.TXT - A short description of how OpenDOS is booted". Archived from the original on 2003-10-04. Retrieved 2009-03-29.
- Paul, Matthias R. (2017-08-14) [2017-08-07]. "The continuing saga of Windows 3.1 in enhanced mode on OmniBook 300". MoHPC - the Museum of HP Calculators. Archived from the original on 2017-10-06. Retrieved 2017-10-06.
[…] the DR-DOS FDISK does not only partition a disk, but can also format the freshly created volumes and initialize their boot sectors in one go, so there's no risk to accidentally mess up the wrong volume and no need for FORMAT /S or SYS. Afterwards, you could just copy over the remaining DR-DOS files, including the system files. It is important to know that, in contrast to MS-DOS/PC DOS, DR-DOS has "smart" boot sectors which will actually "mount" the file-system to search for and load the system files in the root directory instead of expecting them to be placed at a certain location. Physically, the system files can be located anywhere and also can be fragmented. […]
- Zbikowski, Mark; Allen, Paul; Ballmer, Steve; Borman, Reuben; Borman, Rob; Butler, John; Carroll, Chuck; Chamberlain, Mark; Chell, David; Colee, Mike; Courtney, Mike; Dryfoos, Mike; Duncan, Rachel; Eckhardt, Kurt; Evans, Eric; Farmer, Rick; Gates, Bill; Geary, Michael; Griffin, Bob; Hogarth, Doug; Johnson, James W.; Kermaani, Kaamel; King, Adrian; Koch, Reed; Landowski, James; Larson, Chris; Lennon, Thomas; Lipkie, Dan; McDonald, Marc; McKinney, Bruce; Martin, Pascal; Mathers, Estelle; Matthews, Bob; Melin, David; Mergentime, Charles; Nevin, Randy; Newell, Dan; Newell, Tani; Norris, David; O'Leary, Mike; O'Rear, Bob; Olsson, Mike; Osterman, Larry; Ostling, Ridge; Pai, Sunil; Paterson, Tim; Perez, Gary; Peters, Chris; Petzold, Charles; Pollock, John; Reynolds, Aaron; Rubin, Darryl; Ryan, Ralph; Schulmeisters, Karl; Shah, Rajen; Shaw, Barry; Short, Anthony; Slivka, Ben; Smirl, Jon; Stillmaker, Betty; Stoddard, John; Tillman, Dennis; Whitten, Greg; Yount, Natalie; Zeck, Steve (1988). "Technical advisors". The MS-DOS Encyclopedia: versions 1.0 through 3.2. By Duncan, Ray; Bostwick, Steve; Burgoyne, Keith; Byers, Robert A.; Hogan, Thom; Kyle, Jim; Letwin, Gordon; Petzold, Charles; Rabinowitz, Chip; Tomlin, Jim; Wilton, Richard; Wolverton, Van; Wong, William; Woodcock, JoAnne (Completely reworked ed.). Redmond, Washington, USA: Microsoft Press. ISBN 1-55615-049-0. LCCN 87-21452. OCLC 16581341. (xix+1570 pages; 26 cm) (NB. This edition was published in 1988 after extensive rework of the withdrawn 1986 first edition by a different team of authors. )
- Paul, Matthias R. (1997-07-30) [1994-05-01]. NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds. MPDOSTIP (in German) (3 ed.). Archived from the original on 2016-11-05. Retrieved 2012-01-11. (NB.
NWDOSTIP.TXT
is a comprehensive work on Novell DOS 7 and OpenDOS 7.01, including the description of many undocumented features and internals. It is part of the author's yet largerMPDOSTIP.ZIP
collection maintained up to 2001 and distributed on many sites at the time. The provided link points to a HTML-converted older version of the file.) - Paul, Matthias R. (2001-04-09). NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds. MPDOSTIP (in German) (3 ed.).
- Rosch, Winn L. (1991-02-12). "DR DOS 5.0 - The better operating system?". PC Magazine. Vol. 10, no. 3. pp. 241–246, 257, 264, 266. Archived from the original on 2019-07-25. Retrieved 2019-07-26.
[…] SYS has been improved under DR DOS 5.0 so you don't have to worry about leaving the first cluster free on a disk that you want to make bootable. The DR DOS system files can be located anywhere on the disk, so any disk with enough free space can be set to boot your system. […]
(NB. The source attributes this to the SYS utility while in fact this is a feature of the advanced bootstrap loader in the boot sector. SYS just plants this sector onto the disk.) - Paul, Matthias R. (2002-02-20). "Can't copy". opendos@delorie. Archived from the original on 2017-10-06. Retrieved 2017-10-06.
[…] The DR-DOS boot sector loads the whole IBMBIO.COM file into memory before it executes it. It does not care at all about the IBMDOS.COM file, which is loaded by IBMBIO.COM. […] The DR-DOS boot sector […] will find the […] kernel files as long as they are logically stored in the root directory. Their physical location on the disk, and if they are fragmented or not, is don't care for the DR-DOS boot sector. Hence, you can just copy the kernel files to the disk (even with a simple COPY), and as soon as the boot sector is a DR-DOS sector, it will find and load them. Of course, it is difficult to put all this into just 512 bytes, the size of a single sector, but this is a major convenience improvement if you have to set up a DR-DOS system, and it is also the key for the DR-DOS multi-OS LOADER utility to work. The MS-DOS kernel files must reside on specific locations, but the DR-DOS files can be anywhere, so you don't have to physically swap them around each time you boot the other OS. Also, it allows to upgrade a DR-DOS system simply by copying the kernel files over the old ones, no need for SYS, no difficult setup procedures as required for MS-DOS/PC DOS. You can even have multiple DR-DOS kernel files under different file names stored on the same drive, and LOADER will switch between them according to the file names listed in the BOOT.LST file. […]
- DR-DOS 7.03 WHATSNEW.TXT - Changes from DR-DOS 7.02 to DR-DOS 7.03. Caldera, Inc. 1998-12-24. Archived from the original on 2019-04-08. Retrieved 2019-04-08.
[…] Added a stub which displays the build info if COUNTRY.SYS was erroneously considered being an device driver (DEVICE=COUNTRY.SYS). Also displays the same info if started as .COM program. […] Added a second compression method to further decrease the size of IBMBIO.COM. […]
- Chappell, Geoff (January 1994). "Chapter 2: The System Footprint". In Schulman, Andrew; Pedersen, Amorette (eds.). DOS Internals. The Andrew Schulman Programming Series (1st printing, 1st ed.). Addison Wesley Publishing Company. ISBN 978-0-201-60835-9. (xxvi+738+iv pages, 3.5"-floppy ) Errata:
- Paul, Matthias R. (2001-01-17). "FAT32 in DR-DOS". opendos@delorie. Archived from the original on 2017-10-06. Retrieved 2017-10-06.
[…] The DR-DOS boot sector […] searches for the IBMBIO.COM (DRBIOS.SYS) file and then loads the *whole* file into memory before it passes control to it. […]
- Poarch, Mad (April 1993). "Booting Multiple Operating Systems with the DR Multiuser DOS LOADER Utility". Developer Support Bullets. Novell. 5 (4). Archived from the original on 2012-03-22. Retrieved 2013-06-28.
- Paterson, Tim (1994-10-03). "The Origins of DOS: DOS Creator Gives His View of Relationship Between CP/M, MS-DOS" (PDF). Microprocessor Report. MicroDesign Resources (MDR). 8 (13). ISSN 0899-9341. Archived from the original (PDF) on 2012-05-31.
- Paterson, Tim (2007-09-30). "Design of DOS". DosMan Drivel. Archived from the original on 2013-01-20. Retrieved 2011-07-04.
- Kildall, Gary Arlen (June 1975). CP/M 1.1 or 1.2 BIOS and BDOS for Lawrence Livermore Laboratories.
An excerpt of the BDOS.PLM file header in the PL/M source code of CP/M 1.1 or CP/M 1.2 for Lawrence Livermore Laboratories (LLL)
[…] /* C P / M B A S I C I / O S Y S T E M (B I O S) COPYRIGHT (C) GARY A. KILDALL JUNE, 1975 */ […] /* B A S I C D I S K O P E R A T I N G S Y S T E M (B D O S) COPYRIGHT (C) GARY A. KILDALL JUNE, 1975 */ […]
- Kildall, Gary Arlen (January 1980). "The History of CP/M, The Evolution of an Industry: One Person's Viewpoint". Dr. Dobb's Journal of Computer Calisthenics & Orthodontia. 5 (1): 6–7. Archived from the original on 2016-11-24. Retrieved 2013-06-03.
[…] The first commercial licensing of CP/M took place in 1975 with contracts between Digital Systems and Omron of America for use in their intelligent terminal, and with Lawrence Livermore Laboratories where CP/M was used to monitor programs in the Octopus network. Little attention was paid to CP/M for about a year. In my spare time, I worked to improve overall facilities […] By this time, CP/M had been adapted for four different controllers. […] In 1976, Glenn Ewing approached me with a problem: Imsai, Incorporated, for whom Glenn consulted, had shipped a large number of disk subsystems with a promise that an operating system would follow. I was somewhat reluctant to adapt CP/M to yet another controller, and thus the notion of a separated Basic I/O System (BIOS) evolved. In principle, the hardware dependent portions of CP/M were concentrated in the BIOS, thus allowing Glenn, or anyone else, to adapt CP/M to the Imsai equipment. Imsai was subsequently licensed to distribute CP/M version 1.3, which eventually evolved into an operating system called IMDOS. […]
- Shustek, Len (2016-08-02). "In His Own Words: Gary Kildall". Remarkable People. Computer History Museum. Archived from the original on 2020-03-24. Retrieved 2020-02-24.
- Kildall, Gary Arlen (2016-08-02) [1993]. Kildall, Scott; Kildall, Kristin (eds.). Computer Connections: People, Places, and Events in the Evolution of the Personal Computer Industry (Manuscript, part 1). Kildall Family. Archived (PDF) from the original on 2016-11-17. Retrieved 2016-11-17.
- Killian, A. Joseph "Joe" (2001). "Gary Kildall's CP/M: Some early CP/M history - 1976–1977". Thomas "Todd" Fischer, IMSAI. Archived from the original on 2020-03-24. Retrieved 2013-06-03.
[…] When we failed to produce an operating system in a timely manner, Glenn started talking with Gary about CPM […] It took several months of twisting Gary's arm to get Gary to port it to the 8080. The final success came when Glenn talked Gary into just separating the I/O from the rest of it, with Glenn promising to re-write the I/O module for the IMSAI 8080 (which he did). So CPM on the IMSAI was a joint effort between Glenn and Gary. […]
- Fraley, Bob; Spicer, Dag (2007-01-26). "Oral History of Joseph Killian, Interviewed by: Bob Fraley, Edited by: Dag Spicer, Recorded: 2007-01-26" (PDF). Mountain View, California: Computer History Museum. CHM Reference number: X3879.2007. Archived from the original (PDF) on 2014-07-14. Retrieved 2013-06-03.
Killian: "[…] Glenn […] would be talking with Gary, and he started twisting Gary's arm. He said, "Hey Gary, why can't we run this in this IMSAI?" "The I/O's all different, won't run." But Glenn persists and finally makes a deal with Gary. He says, "Okay Gary, if you split out the I/O, I'll write the BIOS, basic I/O's system," and Glenn named it then. "We'll split it out separately. I'll write that part, as long as you can make a division in the program there." And he got Gary to do that and Glenn put those two pieces together and was running Gary's CP/M on an IMSAI. Glenn let us know that, and it wasn't too much later than Bill was down there making arrangements with Gary Kildall to license CP/M. […] Now that the BIOS is separated out, anybody could write a BIOS for their machine, if it was 8080-based, and run this, so he started selling that separately under the company Digital Research that he formed and did quite well."
- Apricot Portable - Technical Reference Manual. Vol. Section 3: Software. ACT (International) Limited. 1984. Retrieved 2020-01-13. (228 pages)