fixed partial loading bug
[bootcensus] / src / boot / boot2.s
index 47121ee..86ee611 100644 (file)
@@ -2,35 +2,86 @@
        .code16
        .section .boot2,"a"
 
+       .extern print_num
+       .extern ser_putchar
+
        mov $0x13, %ax
        int $0x10
 
-       pushw $63
-       pushw $63
-       pushw $0
-       pushw $0xff
-       call set_palette
-       add $8, %sp
+       # copy palette
+       mov $logo_pal, %si
+       xor %cl, %cl
+
+0:     xor %eax, %eax
+       mov $0x3c8, %dx
+       movb %cl, %al
+       outb %al, %dx
+       #DBG
+       call print_num
+       mov $58, %al
+       call ser_putchar
+       mov $32, %al
+       call ser_putchar
+       xor %eax, %eax
+       ####
+       inc %dx
+       # red
+       movb (%si), %al
+       inc %si
+       shr $2, %al
+       outb %al, %dx
+       #DBG
+       call print_num
+       mov $32, %al
+       call ser_putchar
+       xor %eax, %eax
+       ####
+       # green
+       movb (%si), %al
+       inc %si
+       shr $2, %al
+       outb %al, %dx
+       #DBG
+       call print_num
+       mov $32, %al
+       call ser_putchar
+       xor %eax, %eax
+       ####
+       # blue
+       movb (%si), %al
+       inc %si
+       shr $2, %al
+       outb %al, %dx
+       #DBG
+       call print_num
+       mov $32, %al
+       call ser_putchar
+       mov $13, %al
+       call ser_putchar
+       mov $10, %al
+       call ser_putchar
+       xor %eax, %eax
+       ####
+       add $1, %cl
+       jnc 0b
 
+       # copy pixels
        pushw $0xa000
        pop %es
        xor %di, %di
+       mov $logo_pix, %eax
+       shr $4, %eax
+       mov %ax, %ds
+       xor %si, %si
        mov $16000, %ecx
-       mov $0xffffffff, %eax
-       rep stosl
+       rep movsl
 
+       cli
        hlt
 
-set_palette:
-       mov %sp, %bp
-       mov $0x3c8, %dx
-       movw 2(%bp), %ax
-       outb %al, %dx
-       inc %dx
-       movw 4(%bp), %ax
-       outb %al, %dx
-       movw 6(%bp), %ax
-       outb %al, %dx
-       movw 8(%bp), %ax
-       outb %al, %dx
-       ret
+logo_pal:
+       .incbin "logo.pal"
+
+       .align 16
+logo_pix:
+       .incbin "logo.raw"