projects
/
bootcensus
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed USB booting issue
[bootcensus]
/
src
/
boot
/
boot2.s
diff --git
a/src/boot/boot2.s
b/src/boot/boot2.s
index
7b8c7bb
..
ab5c6ad
100644
(file)
--- a/
src/boot/boot2.s
+++ b/
src/boot/boot2.s
@@
-2,34
+2,68
@@
.code16
.section .boot2,"a"
.code16
.section .boot2,"a"
+ .extern ser_putchar
+
mov $0x13, %ax
int $0x10
mov $0x13, %ax
int $0x10
+ movb $10, %al
+ call ser_putchar
+
# copy palette
mov $logo_pal, %si
xor %cl, %cl
# copy palette
mov $logo_pal, %si
xor %cl, %cl
-0: mov $0x3c8, %dx
+0: xor %eax, %eax
+ mov $0x3c8, %dx
movb %cl, %al
outb %al, %dx
movb %cl, %al
outb %al, %dx
+ #### DBG
+ call ser_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
inc %dx
# red
movb (%si), %al
inc %si
shr $2, %al
outb %al, %dx
+ #### DBG
+ call ser_print_num
+ mov $32, %al
+ call ser_putchar
+ xor %eax, %eax
+ ####
# green
movb (%si), %al
inc %si
shr $2, %al
outb %al, %dx
# green
movb (%si), %al
inc %si
shr $2, %al
outb %al, %dx
+ #### DBG
+ call ser_print_num
+ mov $32, %al
+ call ser_putchar
+ xor %eax, %eax
+ ####
# blue
movb (%si), %al
inc %si
shr $2, %al
outb %al, %dx
# blue
movb (%si), %al
inc %si
shr $2, %al
outb %al, %dx
- inc %cl
- jno 0b
+ #### DBG
+ call ser_print_num
+ mov $32, %al
+ call ser_putchar
+ mov $10, %al
+ call ser_putchar
+ xor %eax, %eax
+ ####
+ add $1, %cl
+ jnc 0b
# copy pixels
pushw $0xa000
# copy pixels
pushw $0xa000
@@
-45,20
+79,46
@@
cli
hlt
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
+ # expects string pointer in ds:si
+ser_print_str:
+ pusha
+
+0: mov (%si), %al
+ cmp $0, %al
+ jz .Lend
+ call ser_putchar
+ inc %si
+ jmp 0b
+
+.Lend: popa
ret
ret
+
+ # expects number in eax
+ser_print_num:
+ # save registers
+ pusha
+
+ movw $numbuf + 16, %si
+ movb $0, (%si)
+ mov $10, %ebx
+.Lconvloop:
+ xor %edx, %edx
+ div %ebx
+ add $48, %dl
+ dec %si
+ mov %dl, (%si)
+ cmp $0, %eax
+ jnz .Lconvloop
+
+ call ser_print_str
+
+ # restore regs
+ popa
+ ret
+
+numbuf: .space 16
+
logo_pal:
.incbin "logo.pal"
logo_pal:
.incbin "logo.pal"