-; ---- boot me! ----
+; boot me!
; nasm -f bin -o bootcard.img bootcard.asm
; cat bootcard.img >/dev/<usbstick>
-; reboot
org 7c00h
bits 16
barh equ 4
nbars equ 11
-barstart equ 200 - (nbars+1) * barh
+barstart equ 152
nticks equ 7e00h
tmoffs equ 7e04h
fval equ 7e10h
cmap equ 7e14h
-%macro setcur 2
- mov dx, %1 | (%2 << 8)
- xor bx, bx
- mov ah, 2
- int 10h
-%endmacro
%macro spkon 0
in al, 61h
or al, 3
mov sp, 7c00h
mov di, nticks
- mov cx, 8
+ mov cx, 16
rep stosw
+ cli
mov word [32], tintr
mov [34], ax
push 0a000h
pop es
-
mov al, 16
mov di, barstart * 320
mov bx, nbars
dec bx
jnz .drawbars
- setcur 12, 16
+ mov dx, 100ch
+ xor bx, bx
+ mov ah, 2
+ int 10h
mov si, str1
- call textout
-
+.txout: mov al, [si]
+ and al, al
+ jz .txdone
+ mov ah, 0eh
+ mov bx, 82
+ int 10h
+ inc si
+ jmp .txout
+.txdone:
sti
mainloop:
dec cx
jnz .mnt
- test word [nticks], 0fh
- jnz mainloop
- call fadecol
-
- jmp mainloop
-
-textout:
- mov al, [si]
- and al, al
- jz .done
- mov ah, 0eh
- mov bx, 82
- int 10h
- inc si
- jmp textout
-.done: ret
-
-fadecol:
- push es
- push word 0
- pop es
- mov ax, 16
- mov dx, 3c7h
- out dx, al
- add dx, 2
- mov cx, 16 * 3
- mov di, cmap
- rep insb
- pop es
- dec dx
+ ; upd pal
+ mov dx, 3c8h
+ mov al, 16
out dx, al
inc dx
- mov cx, 16 * 3
mov si, cmap
-.fadeloop:
- lodsb
- test al, al
- jz .skipdec
- dec al
-.skipdec:
- out dx, al
- dec cx
- jnz .fadeloop
- ret
+ mov cx, 16 * 3
+ rep outsb
+
+ jmp mainloop
tintr:
pusha
mov [nticks], ax
mov bx, [musptr]
- cmp bx, 23*3
+ cmp bx, 22*3
jnz .skiploop
xor bx, bx
mov [tmoffs], ax
shl cx, 4
sub ax, [tmoffs]
cmp ax, cx
- jb .eoi
+ jb .end
mov ax, [music + 1 + bx]
add bx, 3
mov [musptr], bx
test ax, ax
jz .off
- mov bx, ax
- mov dx, 3c8h
- shr ax, 9
- add ax, 3
- out dx, al
- inc dx
- mov al, 3fh
- out dx, al
- mov al, 2fh
- out dx, al
- out dx, al
+ mov bx, ax
+ shr bx, 9
+ sub bx, 13
+ imul bx, bx, 3
+ mov byte [cmap + bx], 3fh
+ mov word [cmap + bx + 1], 2f2fh
+ mov bx, ax
stimer 2, bx
spkon
- jmp .eoi
+ jmp .end
.off: spkoff
+.end: test word [nticks], 1
+ jnz .eoi
+ mov cx, 16 * 3
+ mov si, cmap
+.fadecol:
+ lodsb
+ test al, al
+ jz .skipdec
+ dec al
+ mov [si-1], al
+.skipdec:
+ dec cx
+ jnz .fadecol
+
.eoi: mov al, 20h
out 20h, al
popa
times 510-($-$$) db 0
dw 0aa55h
-
-; vi:ft=nasm ts=8 sts=8 sw=8: