The alternative ways to start an operating system will be reviewed in the order:
At the completion of a system's Power On Self Test (POST), the BIOS bootstrap routine generates an INT 19. Usually, INT 19 tries to read a boot sector from the first floppy drive (see next section "Boot directly from diskette"). If a boot sector is found on the floppy diskette, that boot sector is read into memory at location 0000:7C00 and the BIOS checks that the last two bytes of the sector are "55 AA". If that is correct, the routine jumps to memory location 0000:7C00 to execute the boot loader program in charge of loading and starting the operating system (it starts with the kernel).
If the last two bytes do not contain the "55 AA" signature, a BIOS-dependant message such as "Non-bootable disk" or "Non-System" is issued and the machine will halt.
However, if no boot sector is found on the first floppy drive, INT 19 tries to read the MBR from the first hard drive. If an MBR is found it is read into memory at location 0000:7C00 and INT 19 jumps to memory location 0000:7C00. The small program in the MBR will attempt to locate an active (bootable) partition in its partition table in a simple case. Alternatively, it can be the starting part of a boot manager program.
INT 19 is also called when the Ctrl-Alt-Del keys are pressed. On most systems, Ctrl-Alt-Del causes a short version of the POST to be executed before INT 19 is called.
The prerequisites are:
Advantage: The possible difficulties encountered with the installation of an MBR or a boot manager are eliminated.
An OBL is written in the first 4 sectors in an Oberon partition (type 76) when a Partitions.Format command is executed. A partition occupies an entire floppy diskette. The same applies to a partition on a mass storage device. The difference is that in the latter case OBL becomes the second stage loader after the first stage loader placed in the MBR.
The structure of the boot sector is:
Offset Value Assembler Description in hex. instruction First 3 bytes 0000 EB29 JMP START 0002 90 NOP BIOS parameter block (BPB) (* the values in the fields depend on the media *) 0003 4F4245524F4E00 ;OEM ID - 'OBERON',0 000A 1F ;mask for shift status byte 000B 0000 ;bytes per sector 000D 00 ;sectors per cluster 000E 0800 ;reserved sectors 0010 04 ;table sectors 0011 0000 ;root directory size 0013 0000 ;total sectors on disk 0015 00 ;media descriptor 0016 0000 ;sectors per FAT 0018 3F00 ;sectors per track 001A 0000 ;number of heads 001C 00000000 ;hidden sectors 0020 00000000 ;total sectors of partition 0024 00 ;drive number 0025 00 ;current head ; used for checksum 0026 00 ;signature 0027 0300 ;offset of 'OBERON' 0029 00 ; 002A 00 ; Boot program 002B FA CLI ;disable interrupts 002C EA JMP ;jump 002D 3100 ... .... Message 01E4 492F4F206572726F7221 ;'I/O error!' 01EF 01F0 08040000 ;file system ofs in blocks 01F4 E7000000 ;file system size in sectors 01F8 414F5321 ;'AOS!' 01FC 01 ;version 01FD 0C ;sector size log2 01FE 55AA ;signatureWhen Oberon is running, the boot sector is displayed by executing: Partitions.ShowBlocks dev#part 0 1 ~. The same information can be obtained using the facilities of your preferred operating system or third-party software (commercial, shareware, ...).
19 Mar 2008 - Copyright © 2002 ETH Zürich. All rights reserved.