Mirai's Miscellaneous Misadventures

M19 / 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_boot