fixed partial loading bug
[bootcensus] / src / boot / boot2.s
1 # this is the second-stage boot loader
2         .code16
3         .section .boot2,"a"
4
5         .extern print_num
6         .extern ser_putchar
7
8         mov $0x13, %ax
9         int $0x10
10
11         # copy palette
12         mov $logo_pal, %si
13         xor %cl, %cl
14
15 0:      xor %eax, %eax
16         mov $0x3c8, %dx
17         movb %cl, %al
18         outb %al, %dx
19         #DBG
20         call print_num
21         mov $58, %al
22         call ser_putchar
23         mov $32, %al
24         call ser_putchar
25         xor %eax, %eax
26         ####
27         inc %dx
28         # red
29         movb (%si), %al
30         inc %si
31         shr $2, %al
32         outb %al, %dx
33         #DBG
34         call print_num
35         mov $32, %al
36         call ser_putchar
37         xor %eax, %eax
38         ####
39         # green
40         movb (%si), %al
41         inc %si
42         shr $2, %al
43         outb %al, %dx
44         #DBG
45         call print_num
46         mov $32, %al
47         call ser_putchar
48         xor %eax, %eax
49         ####
50         # blue
51         movb (%si), %al
52         inc %si
53         shr $2, %al
54         outb %al, %dx
55         #DBG
56         call print_num
57         mov $32, %al
58         call ser_putchar
59         mov $13, %al
60         call ser_putchar
61         mov $10, %al
62         call ser_putchar
63         xor %eax, %eax
64         ####
65         add $1, %cl
66         jnc 0b
67
68         # copy pixels
69         pushw $0xa000
70         pop %es
71         xor %di, %di
72         mov $logo_pix, %eax
73         shr $4, %eax
74         mov %ax, %ds
75         xor %si, %si
76         mov $16000, %ecx
77         rep movsl
78
79         cli
80         hlt
81
82 logo_pal:
83         .incbin "logo.pal"
84
85         .align 16
86 logo_pix:
87         .incbin "logo.raw"