; Multiboot macros to make a few lines later more readable
MULTIBOOT_PAGE_ALIGN equ 1<<0
MULTIBOOT_MEMORY_INFO equ 1<<1
+ MULTIBOOT_REQVIDMODE equ 1<<2
MULTIBOOT_HEADER_MAGIC equ 0x1BADB002
- MULTIBOOT_HEADER_FLAGS equ MULTIBOOT_PAGE_ALIGN | MULTIBOOT_MEMORY_INFO
+ MULTIBOOT_HEADER_FLAGS equ MULTIBOOT_PAGE_ALIGN | MULTIBOOT_MEMORY_INFO | MULTIBOOT_REQVIDMODE
MULTIBOOT_CHECKSUM equ -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)
; This is the GRUB Multiboot header. A boot signature
dd MULTIBOOT_HEADER_MAGIC
dd MULTIBOOT_HEADER_FLAGS
dd MULTIBOOT_CHECKSUM
+
dd mboot; - KERNEL_BASE ;Location of Multiboot Header
+ dd 0 ; load_addr
+ dd 0 ; load_end_addr
+ dd 0 ; bss_end_addr
+ dd 0 ; entry_addr
+
+; dd 0 ; Mode type (0: LFB)
+; dd 1024 ; Width
+; dd 768 ; Height
+; dd 0 ; Depth (no preference)
; Multiboot 2 Header
;mboot2:
// === TYPES ===
typedef struct {
Uint32 Flags;
+ // flags[0]
Uint32 LowMem;
Uint32 HighMem;
+ // flags[1]
Uint32 BootDevice;
+ // flags[2]
Uint32 CommandLine;
+ // flags[3]
Uint32 ModuleCount;
Uint32 Modules;
+ // flags[4] or flags[5]
Uint32 SymbolInfo[4]; // #32 UNUSED
+ // flags[6]
Uint32 MMapLength;
Uint32 MMapAddr; // #40
+ // flags[7]
+ Uint32 drives_length;
+ Uint32 drives_addr;
+ // flags[8]
+ Uint32 config_table;
+ // flags[9]
+ Uint32 boot_loader_name;
+ // flags[10]
+ Uint32 apm_table;
+ // flags[11]
+ Uint32 vbe_control_info;
+ Uint32 vbe_mode_info;
+ Uint32 vbe_mode;
+ Uint32 vbe_interface_seg;
+ Uint32 vbe_interface_off;
+ Uint32 vbe_interface_len;
} tMBoot_Info;
typedef struct {