document updated 12 years ago, on Mar 31, 2012
common.c lists a lot of embedded variables (see below)
CommonPrepareMBR() is the routine that sets these embedded variables.
// 1 byte (number of timer interrupt - user or system)
#define MBLDR_TIMER_INTERRUPT1 0x30
// 1 byte (ASCII code of interrupt key)
#define MBLDR_TIMER_INTERRUPT_KEY 0x44
// 2 bytes (opcode, which chooses between ASCII and scan code)
#define MBLDR_USE_ASCII_OR_SCAN_OPCODE 0x4C
// 1 byte (base ASCII/scan code for the first OS in the list)
#define MBLDR_BASE_ASCII_OR_SCAN_CODE 0x4F
// 1 byte (number of OS entries in the boot menu)
#define MBLDR_NUMBER_OF_BOOTABLE_PARTITIONS 0x51
// 2 bytes (1/10 of number of ticks to wait for timed boot)
// (ThisValue*10*55ms=DefaultBootTimeout)
#define MBLDR_TIMEOUT 0x55
// 2 bytes (opcode for progress-bar symbol)
// Either [0x88, 0xF0] or [0xB0, 0xNN] (where NN is a progress-bar symbol)
#define MBLDR_PROGRESS_BAR_SYMBOL_OPCODE 0x5F
// 2 bytes (opcode for progress-bar switch on/off)
#define MBLDR_PROGRESS_BAR_SWITCH_OPCODE 0x61
// 1 byte (number of default entry in the boot menu)
#define MBLDR_NUMBER_OF_DEFAULT_PARTITION 0x6B
// 3 bytes (opcode, which saves new default entry in the boot menu)
#define MBLDR_MODIFY_DEFAULT_PARTITION_OPCODE 0x6C
// 1 byte (number of timer interrupt - user or system)
#define MBLDR_TIMER_INTERRUPT2 0x73
// 2 bytes (whether to mark primary partitions active or inactive depending
// on what to boot or leave "active" flag as-is)
#define MBLDR_MARK_ACTIVE_PARTITION 0x97
// 1 byte (jump offset to enable/disable hiding of other primary partitions)
#define MBLDR_HIDING_JUMP_OFFSET 0xBF
// 1 byte (opcode, which controls timer ticks)
#define MBLDR_TIMED_BOOT_ALLOWED 0xF6
// 1 byte (opcode, which controls whether to do an IRET or proceed with old vector)
#define MBLDR_IRET 0xF7
// Offset of the boot menu text, which occupies the rest of MBR
#define MBLDR_BOOT_MENU_TEXT 0x10A
// DiskSignature (or so-called NT Drive Serial Number) for Microsoft
// Windows. These bytes should not be overwritten since it breaks boot
// process under Windows Vista
// 4 bytes (the signature itself) + 2 bytes (seems to be always 0000h)
#define MBLDR_WINDOWS_DISK_SIGNATURE 0x1B8