[bits 32]
section .multiboot

MULTIBOOT_HEADER_MAGIC    equ 0x1BADB002
; Бит 0: выравнивание, Бит 1: meminfo, Бит 2: графический запрос
MULTIBOOT_HEADER_FLAGS    equ 0x00000007 
MULTIBOOT_HEADER_CHECKSUM equ -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)

header:
    dd MULTIBOOT_HEADER_MAGIC
    dd MULTIBOOT_HEADER_FLAGS
    dd MULTIBOOT_HEADER_CHECKSUM
    ; Эти поля обязательны для флага 0x00000004:
    dd 0    ; header_addr (0 для ELF)
    dd 0    ; load_addr
    dd 0    ; load_end_addr
    dd 0    ; bss_end_addr
    dd 0    ; entry_addr
    ; Теперь поля графики:
    dd 0    ; mode_type (0 = линейный графический режим)
    dd 1024 ; width
    dd 768  ; height
    dd 32   ; depth

section .text
global _start
extern kernel_main

_start:
    mov esp, stack_top
    push eax ; magic
    push ebx ; mbi (здесь будет указатель на структуру с инфой о видео!)
    
    call kernel_main

.hang:
    cli
    hlt
    jmp .hang

section .bss
align 16
stack_bottom:
    resb 16384
stack_top:
