88 lines
982 B
NASM
88 lines
982 B
NASM
IDEAL
|
|
MODEL large
|
|
P386
|
|
|
|
CODESEG
|
|
|
|
PUBLIC C frame_count, C init_copper, C close_copper, C cop_pal, C do_pal
|
|
|
|
twait dw 0
|
|
frame_count dw 0
|
|
cop_pal dd 0
|
|
do_pal dw 0
|
|
|
|
PROC close_copper
|
|
|
|
mov bx, 7
|
|
mov ax, 0
|
|
mov cx, 0
|
|
mov dx, 0
|
|
int 0fch
|
|
|
|
mov bx, 7
|
|
mov ax, 1
|
|
mov cx, 0
|
|
mov dx, 0
|
|
int 0fch
|
|
|
|
mov bx, 7
|
|
mov ax, 2
|
|
mov cx, 0
|
|
mov dx, 0
|
|
int 0fch
|
|
|
|
ret
|
|
ENDP
|
|
|
|
PROC init_copper
|
|
|
|
mov bx, 7
|
|
mov ax, 1
|
|
mov cx, OFFSET copper3
|
|
mov dx, SEG copper3
|
|
int 0fch
|
|
|
|
mov bx, 7
|
|
mov ax, 2
|
|
mov cx, OFFSET copper2
|
|
mov dx, SEG copper2
|
|
int 0fch
|
|
|
|
mov bx, 7
|
|
mov ax, 0
|
|
mov cx, OFFSET copper3
|
|
mov dx, SEG copper3
|
|
int 0fch
|
|
|
|
ret
|
|
ENDP
|
|
|
|
PROC copper2
|
|
|
|
inc [cs:frame_count]
|
|
|
|
cmp [cs:do_pal], 0d
|
|
je @@no_pal
|
|
|
|
pusha
|
|
push ds
|
|
lds si, [cs:cop_pal]
|
|
mov cx, 768d
|
|
mov dx, 3c8h
|
|
mov al, 0d
|
|
out dx, al
|
|
inc dx
|
|
rep outsb
|
|
mov [cs:do_pal], 0d
|
|
pop ds
|
|
popa
|
|
@@no_pal:
|
|
retf
|
|
ENDP
|
|
|
|
PROC copper3
|
|
retf
|
|
ENDP
|
|
|
|
END
|
|
|