out PIT_DATA0 + %1, al
%endmacro
-start: xor eax, eax
+start: xor ax, ax
mov ds, ax
mov es, ax
mov ss, ax
push backbuf_seg
pop es
- ; setup palette
- mov cx, 128
- mov dx, 3c8h
- mov al, 16
- out dx, al
- inc dx
-.cmapsetup:
- mov al, cl
- shr al, 2
- out dx, al
- neg al
- and al, 03fh
- shr al, 1
- mov ah, al
- shr al, 2
- out dx, al
- mov al, ah
- out dx, al
- dec cx
- jnz .cmapsetup
sti
mainloop:
pop es
pop ds
- setcursor 10, 12
+ setcursor 10, 0
mov si, str1
call textout
- setcursor 12, 13
+ setcursor 12, 1
mov si, str2
call textout
drawbg:
mov bx, 200
- xor di, di
+ mov di, 5120
.fillgrad:
mov ax, bx
- add ax, 16
mov ah, al
- mov cx, 320
+ mov cx, 2400 ; 15 lines
rep stosw
- dec bx
+ inc bx
+ cmp bx, 208
jnz .fillgrad
+
+ ; mountains
+ mov cx, 320
+ mov bp, sp
+.mnt: mov [bp - 2], cx
+ fild word [bp - 2]
+ fidiv word [w30]
+ fsincos
+ fiadd word [w5]
+ fimul word [w5]
+ fistp word [bp - 2]
+ ;fistp word [bp - 4]
+ mov bx, [bp - 2]
+ add bx, 100
+ imul bx, bx, 320
+ add bx, cx
+.mntcol:
+ mov byte [es:bx], 0
+ add bx, 320
+ cmp bx, 64000
+ jb .mntcol
+
+ dec cx
+ jnz .mnt
+
ret
and al, al
jz .done
mov ah, 0eh
- mov bx, 0fh
+ mov bx, 82
int 10h
inc si
jmp textout
cmp ax, cx
jb .eoi
- inc dword [muscur]
+ inc word [muscur]
mov ax, [music + 2 + bx] ; event counter reload
test ax, ax
jz .off
str1: db 'message message blah',0
-str2: db 'Michael & Athina',0
+str2: db 'Michael & Athena',0
G2 equ 24351/2
C3 equ 18243/2
dd 0820280ch
dd 00000800h
dd 0001f800h
+
+w5: dw 5
+w30: dw 30
times 510-($-$$) db 0
dw 0aa55h