second stage loader loading semi-works
[bootcensus] / src / boot / boot2.s
1 # this is the second-stage boot loader
2         .code16
3         .section .boot2,"a"
4
5         mov $0x13, %ax
6         int $0x10
7
8         # copy palette
9         mov $logo_pal, %si
10         xor %cl, %cl
11
12 0:      mov $0x3c8, %dx
13         movb %cl, %al
14         outb %al, %dx
15         inc %dx
16         # red
17         movb (%si), %al
18         inc %si
19         shr $2, %al
20         outb %al, %dx
21         # green
22         movb (%si), %al
23         inc %si
24         shr $2, %al
25         outb %al, %dx
26         # blue
27         movb (%si), %al
28         inc %si
29         shr $2, %al
30         outb %al, %dx
31         inc %cl
32         jno 0b
33
34         # copy pixels
35         pushw $0xa000
36         pop %es
37         xor %di, %di
38         mov $logo_pix, %eax
39         shr $4, %eax
40         mov %ax, %ds
41         xor %si, %si
42         mov $16000, %ecx
43         rep movsl
44
45         cli
46         hlt
47
48 set_palette:
49         mov %sp, %bp
50         mov $0x3c8, %dx
51         movw 2(%bp), %ax
52         outb %al, %dx
53         inc %dx
54         movw 4(%bp), %ax
55         outb %al, %dx
56         movw 6(%bp), %ax
57         outb %al, %dx
58         movw 8(%bp), %ax
59         outb %al, %dx
60         ret
61
62 logo_pal:
63         .incbin "logo.pal"
64
65         .align 16
66 logo_pix:
67         .incbin "logo.raw"