IBMBIO.COM
![](https://upload.wikimedia.org/wikipedia/commons/thumb/a/ac/IBM_PC_DOS_1.0_screenshot.png/300px-IBM_PC_DOS_1.0_screenshot.png)
IBMBIO.COM
(at the top of the listing ofCOM files) inIBM PC DOS1.0.IBMBIO.COMis asystem filein manyDOSoperating 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 fordisk compressionor security),[1][2]displays boot menus, processes configuration files (likeCONFIG.SYS) and launches the shell (likeCOMMAND.COM).
The file is part ofIBM'sPC DOS(all versions) as well as ofDR DOS 5.0and higher (with the exception ofDR-DOS 7.06).[2][3]It serves the same purpose as the fileIO.SYSinMS-DOS,or DRBIOS.SYS inDR DOS 3.31to3.41.[2][3](For compatibility purposes with some DOS applications the IBMBIO.COM file name was briefly also used by the IBM version ofOS/2 1.0,where it resembled theOS2BIO.COMfile as used byMicrosoft.)
The file is located in theroot directoryof the bootableFAT-formatted drive/partition (typically C:\) and typically has thesystem,hidden,and (since DOS 2.0 also the)read-onlyfile attributesset.[4][5][6][2][3]Under DR-DOS the file may be optionallypassword-protectedas well.[3][nb 1]Under PC DOS, thesystemattribute 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 trueCOM-style program, thehiddenattribute 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 forDR-DOS 7.02and higher, because under these systems the file is afat binaryalso containing a tiny COM-style stub just displaying some version info and exiting gracefully when not being loaded by aboot sector.[2][5][9]
In thePCbootupsequence, the first sector of the boot volume contains aboot loadercalled thevolume 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 theSYSutility must take care of.[4][10]
If the loaded boot sector is aPC 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. BeforePC DOS 5.0the 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 inIBMDOS.COM.
- Initializes each defaultdevice driverin turn (console,disk,serial port,et cetera). At this point, the default devices are available.
- Calls the DOS kernel's initialization routine.
UnderDR DOS 5.0and 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 thesystemattribute.[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 theBasic Input/Output System). The term BIOS was originally coined byGary Kildallin 1975 forCP/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 asDOSorCP/Min order to contrast it with the built-in ROM BIOS of a machine.[21]
See also
[edit]Notes
[edit]- ^In addition to theread-onlyattribute being set, the system files can be optionallypassword-protectedunderDR-DOSusing the PASSWORD command or the
/R[:password]
option available in some versions of theSYScommand.[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.) - ^abThePC DOS 5.0manual 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]SYScontinues to take care of these requirements.
- ^There is one exception to the rule thatDR-DOSVBRswill 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 tooverwritethestackandrelocatedDisk Parameter Table(DPT/FDPB). Therefore, aDR-DOS 7.07VBR 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 aPC DOSVBR, which would load only the first three sectors of the file into memory.
- ^The extended functionality of the DR-DOSvolume boot recordto mountFAT12andFAT16file systems viaCHS,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 conventionalcode optimizationtechniques inassembly languageup to7.05,even while maintaining the minimum requirements of a 32 KB memory system with only8088/8086processor 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,FAT32and the optional facility to also bootPC DOS/MS-DOSin addition to DR-DOS, the7.07sectors had to resort toself-modifying code,opcode-level programming inmachine language,controlled utilization of (documented)side effects,multi-level data/codeoverlappingand algorithmicfoldingtechniques to still squeeze everything into the 423 bytes available for code in a single physical sector of 512 bytes, as it was a requirement forbackward- and cross-compatibility with other operating systems inmulti bootandchain loadscenarios.
References
[edit]- ^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.ISBN0-201-63287-X.(xviii+856+vi pages, 3.5 "-floppy) Errata:[1][2]
- ^abcdefghPaul, 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 fromthe originalon 2003-10-04.Retrieved2009-03-29.[3]
- ^abcdefghiPaul, 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.Archivedfrom the original on 2017-10-06.Retrieved2017-10-06.
[…] the DR-DOSFDISKdoes 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 forFORMAT/S orSYS.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. […]
- ^abcdZbikowski, 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.ISBN1-55615-049-0.LCCN87-21452.OCLC16581341.(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.[4])
- ^abcdefghPaul, 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.).Archivedfrom the original on 2016-11-05.Retrieved2012-01-11.(NB.
NWDOSTIP.TXT
is a comprehensive work onNovell DOS 7andOpenDOS 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.)[5] - ^abcdPaul, 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.).
- ^abcRosch, 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.Archivedfrom the original on 2019-07-25.Retrieved2019-07-26.
[…]SYShas been improved underDR DOS 5.0so 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 theSYSutility while in fact this is a feature of the advanced bootstrap loader in the boot sector. SYS just plants this sector onto the disk.) - ^abcdPaul, Matthias R. (2002-02-20)."Can't copy".opendos@delorie.Archivedfrom the original on 2017-10-06.Retrieved2017-10-06.
[…] TheDR-DOSboot sector loads the whole IBMBIO.COM file into memory before it executes it. It does not care at all about theIBMDOS.COMfile, 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 simpleCOPY), 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-OSLOADERutility to work. TheMS-DOSkernel 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 forSYS,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 theBOOT.LSTfile. […]
- ^DR-DOS 7.03 WHATSNEW.TXT - Changes from DR-DOS 7.02 to DR-DOS 7.03.Caldera, Inc.1998-12-24. Archived fromthe originalon 2019-04-08.Retrieved2019-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. […]
- ^abcdChappell, 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.ISBN978-0-201-60835-9.(xxvi+738+iv pages, 3.5 "-floppy[6][7]) Errata:[8][9][10]
- ^Paul, Matthias R. (2001-01-17)."FAT32 in DR-DOS".opendos@delorie.Archivedfrom the original on 2017-10-06.Retrieved2017-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.5(4).Novell.Archived fromthe originalon 2012-03-22.Retrieved2013-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.8(13).MicroDesign Resources(MDR).ISSN0899-9341.Archived fromthe original(PDF)on 2012-05-31.
- ^Paterson, Tim(2007-09-30)."Design of DOS".DosMan Drivel.Archived fromthe originalon 2013-01-20.Retrieved2011-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 thePL/Msource code ofCP/M 1.1orCP/M 1.2forLawrence 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.Archivedfrom the original on 2016-11-24.Retrieved2013-06-03.
[…] The first commercial licensing ofCP/Mtook place in 1975 with contracts betweenDigital SystemsandOmron of Americafor use in their intelligent terminal, and withLawrence Livermore Laboratorieswhere CP/M was used to monitor programs in theOctopus 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 Ewingapproached 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 distributeCP/M version 1.3,which eventually evolved into an operating system calledIMDOS.[…]
- ^Shustek, Len (2016-08-02)."In His Own Words: Gary Kildall".Remarkable People.Computer History Museum.Archivedfrom the original on 2020-03-24.Retrieved2020-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.Retrieved2016-11-17.
- ^Killian, A. Joseph "Joe"(2001)."Gary Kildall's CP/M: Some early CP/M history - 1976–1977".Thomas "Todd" Fischer,IMSAI.Archivedfrom the original on 2020-03-24.Retrieved2013-06-03.
[…] Whenwefailed to produce an operating system in a timely manner,Glennstarted talking with Gary aboutCPM[…] 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 theIMSAI 8080(which he did). So CPM on theIMSAIwas 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 fromthe original(PDF)on 2014-07-14.Retrieved2013-06-03.
Killian:"[…]Glenn[…] would be talking withGary,and he started twisting Gary's arm. He said, "Hey Gary, why can't we run this in thisIMSAI?""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 theBIOS,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 thanBillwas down there making arrangements with Gary Kildall to licenseCP/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 companyDigital Researchthat he formed and did quite well. "
- ^Apricot Portable - Technical Reference Manual.Vol. Section 3: Software.ACT (International) Limited.1984.Retrieved2020-01-13.(228 pages)