]> git.lizzy.rs Git - nyax.git/blob - stage1/main.asm
Force make to use bash (#1)
[nyax.git] / stage1 / main.asm
1 [org 0x7C00]
2
3 %define KSTART 0x7E00
4 %define KSECTORS (KSIZE + 511) / 512
5
6 boot:
7         ; init segment registers
8         xor ax, ax
9         mov ds, ax
10         mov es, ax
11         mov fs, ax
12         mov gs, ax
13         mov ss, ax
14
15         ; init stack
16         mov bp, KSTART ; stack grows down, overwriting MBR
17         mov sp, bp
18
19         ; print message
20         mov ebx, .msg
21         call print_str
22
23         ; load stage2 and stage3
24         call load_stages
25
26         ; jump into stage2
27         jmp KSTART
28
29 .msg: db 10, 13, "nyax stage1", 10, 13, 0
30
31
32 load_stages:
33         mov ebx, .msg
34         call print_str
35
36         mov ah, 0x02     ; read sectors from drive
37         mov al, KSECTORS ; number of sectors
38         xor ch, ch       ; cylinder=0
39         mov cl, 2        ; sector=2
40         xor dh, dh       ; head=0
41         mov bx, KSTART   ; buffer
42         int 0x13
43         jc .fail         ; CF set on error
44         cmp al, KSECTORS ; check read sectors count
45         jne .fail
46
47         ret
48
49 .fail:
50         mov ebx, .fail_msg
51         call print_str
52         hlt
53
54 .msg: db "loading stage2 and stage3 from disk", 10, 13, 0
55 .fail_msg: db "disk failure, try rebooting", 10, 13, 0
56
57 %include "stage1/print.asm"
58
59 times 510-($-$$) db 0
60 dw 0xAA55