IBMBIO.COM
Template:Short description Template:Use dmy dates Template:Use list-defined references
IBMBIO.COM (at the top of the listing of COM files) in IBM PC DOS 1.0.Template:Mono 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 (Template:Mono) and optional pre-loadable system components (like for disk compression or security),[1][2] displays boot menus, processes configuration files (like Template:Mono) and launches the shell (like Template:Mono).
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 Template:Mono in MS-DOS, or Template:Mono in DR DOS 3.31 to 3.41.[2][3] (For compatibility purposes with some DOS applications the Template:Mono file name was briefly also used by the IBM version of OS/2 1.0, where it resembled the Template:Mono 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 Template:Mono 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 (DOS command)|Template:Mono]] 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 Template:Mono into memory and transfer control to it.[10][nb 2] This part of Template:Mono 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 Template:Mono only.[10][nb 2]
- Loads the DOS kernel. The kernel is stored in Template:Mono.
- 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 Template:Mono (or Template:Mono) 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 Template:Mono 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 Template:Mono file to be loaded by Template:Mono is stored in Template:Mono itself rather than necessarily in the second directory entry on the disk.[12][2][5][3] Also, similar to the Template:Mono loader in the VBR, the Template:Mono loader in Template:Mono 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
<templatestyles src="Reflist/styles.css" />
- ↑ In addition to the read-only attribute being set, the system files can be optionally password-protected under DR-DOS using the Template:Mono command or the
/R[:password]option available in some versions of the [[SYS (DOS command)|Template:Mono]] command.Template:Citeref 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.) - ↑ a b 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.Template:Citeref [[SYS (DOS command)|Template:Mono]] continues to take care of these requirements.
- ↑ There is one exception to the rule that DR-DOS VBRs will load the whole Template:Mono file into memory: If the Template:Mono 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 Template:Mono 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 compressionTemplate:CiterefTemplate:Citeref the Template:Mono'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 Template:Mono and load it into memory as a whole, even if not stored at a fixed location and in consecutive sectors,Template:CiterefTemplate:CiterefTemplate:CiterefTemplate:CiterefTemplate:CiterefTemplate:Citeref 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:extmulti-boot feature.Template:Citeref 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.
Script error: No such module "Check for unknown parameters".
References
<templatestyles src="Reflist/styles.css" />
- ↑ Script error: No such module "citation/CS1". (xviii+856+vi pages, 3.5"-floppy) Errata: [1][2]
- ↑ a b c d e f g h Script error: No such module "anchor".Script error: No such module "citation/CS1". [3]
- ↑ a b c d e f g h i Script error: No such module "citation/CS1".
- ↑ a b c d Script error: No such module "citation/CS1". (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])
- ↑ a b c d e f g h Script error: No such module "anchor".Script error: No such module "citation/CS1". (NB.
NWDOSTIP.TXTis 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.ZIPcollection 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] - ↑ a b c d Script error: No such module "citation/CS1".
- ↑ a b c Script error: No such module "Citation/CS1". (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.)
- ↑ a b c d Script error: No such module "anchor".Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ a b c d Script error: No such module "citation/CS1". (xxvi+738+iv pages, 3.5"-floppy [6][7]) Errata: [8][9][10]
- ↑ Script error: No such module "anchor".Script error: No such module "citation/CS1".
- ↑ Script error: No such module "Citation/CS1".
- ↑ Script error: No such module "Citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
[…] /* 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 */ […] - ↑ Script error: No such module "Citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1". (228 pages)
Script error: No such module "Check for unknown parameters".