Mirai's Miscellaneous Misadventures
M26 / x86 / boot.s
# copyright 2022 zamfofex
# license: AGPLv3 or later
.intel_syntax noprefix
.code16
.section boot
jmp 0:begin
begin:
mov eax, 0
mov ebx, 0
mov ecx, 0
mov edx, 0
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
mov ss, ax
mov esp, 0x7C00
mov ebp, esp
# prepare to read
mov ch, 0
mov dh, 0
mov dl, 0x80
mov ecx, 6
load_loop:
dec ecx
jz main
push ecx
# load first part before the bootloader
mov ah, 2
mov al, 0x20
mov cl, 2
mov bx, 0x500
int 0x13
jc begin
cmp ah, 0
jne begin
cmp al, 0x20
jne begin
# load second part before the bootloader
mov ah, 2
mov al, 0x1B
mov cl, 0x22
mov bx, 0x4500
int 0x13
jc begin
cmp ah, 0
jne begin
cmp al, 0x1B
jne begin
# load loop end
pop ecx
cmp ah, 0
jne load_loop
main:
jmp mimimi_x86_boot