Mirai's Miscellaneous Misadventures

M25 / x86 / boot.s

1# copyright 2022 zamfofex
2# license: AGPLv3 or later
3
4.intel_syntax noprefix
5.code16
6
7.section boot
8	jmp 0:begin
9
10begin:
11	mov eax, 0
12	mov ebx, 0
13	mov ecx, 0
14	mov edx, 0
15	mov ds, ax
16	mov es, ax
17	mov fs, ax
18	mov gs, ax
19	mov ss, ax
20	mov esp, 0x7C00
21	mov ebp, esp
22
23# prepare to read
24	
25	mov ch, 0
26	mov dh, 0
27	mov dl, 0x80
28	
29	mov ecx, 6
30
31load_loop:
32	dec ecx
33	jz main
34	
35	push ecx
36
37# load first part before the bootloader
38	
39	mov ah, 2
40	mov al, 0x20
41	mov cl, 2
42	mov bx, 0x500
43	
44	int 0x13
45	jc begin
46	cmp ah, 0
47	jne begin
48	cmp al, 0x20
49	jne begin
50
51# load second part before the bootloader
52	
53	mov ah, 2
54	mov al, 0x1B
55	mov cl, 0x22
56	mov bx, 0x4500
57	
58	int 0x13
59	jc begin
60	cmp ah, 0
61	jne begin
62	cmp al, 0x1B
63	jne begin
64
65# load loop end
66	pop ecx
67	
68	cmp ah, 0
69	jne load_loop
70
71main:
72	jmp mimimi_boot