mirror of
https://github.com/ondra-novak/gates_of_skeldal.git
synced 2025-07-08 15:40:28 -04:00
101 lines
2 KiB
NASM
101 lines
2 KiB
NASM
.model small
|
|
.386
|
|
|
|
SEGB800 equ 0b8000h
|
|
|
|
_TEXT segment byte public 'CODE' use32
|
|
assume CS:_TEXT
|
|
assume DS:DGROUP
|
|
|
|
public load_font_
|
|
load_font_: ;esi font
|
|
mov esi,offset fonttable
|
|
mov edx,3c4h
|
|
mov eax,0402h
|
|
out dx,ax
|
|
mov eax,0704h
|
|
out dx,ax
|
|
Mov edx,3ceh
|
|
mov eax,0204h
|
|
out dx,ax
|
|
mov eax,0005h
|
|
out dx,ax
|
|
mov eax,0406h
|
|
out dx,ax
|
|
mov edi,0xA0000h
|
|
mov edx,256
|
|
lfOpk: mov ecx,16
|
|
rep movsb
|
|
add edi,16
|
|
dec edx
|
|
jne lfopk
|
|
mov edx,3c4h
|
|
mov eax,0302h
|
|
out dx,ax
|
|
mov eax,0304h
|
|
out dx,ax
|
|
Mov edx,3ceh
|
|
mov eax,0004h
|
|
out dx,ax
|
|
mov eax,1005h
|
|
out dx,ax
|
|
mov eax,0E06h
|
|
out dx,ax
|
|
ret
|
|
|
|
public set_font_8x8_
|
|
set_font_8x8_:
|
|
cli
|
|
mov edx,3d4h
|
|
mov eax,0100h
|
|
out dx,ax
|
|
mov edx,3c4h
|
|
mov al,1
|
|
out dx,al
|
|
inc edx
|
|
in al,dx
|
|
or al,1
|
|
out dx,al
|
|
mov edx,03dah
|
|
in al,dx
|
|
mov edx,03c0h
|
|
mov al,13h
|
|
out dx,al
|
|
mov al,0
|
|
out dx,ax
|
|
mov al,32
|
|
out dx,al
|
|
mov edx,3d4h
|
|
mov eax,0300h
|
|
out dx,ax
|
|
sti
|
|
ret
|
|
|
|
public turn_flashing_ ;ebx - ON/OFF
|
|
turn_flashing_:
|
|
mov eax,1003h
|
|
int 10h
|
|
ret
|
|
|
|
|
|
public get_window_size_ ;eax,edx-velikost
|
|
get_window_size_:
|
|
imul eax,edx
|
|
shl eax,1
|
|
add eax,4
|
|
ret
|
|
|
|
public save_window_ ;eax,edx-pozice
|
|
;ecx,ebx-velikost
|
|
;edi - buffer
|
|
save_window_
|
|
stosb
|
|
imul eax,160
|
|
lea eax,[eax+edx*2]
|
|
lea esi,[eax+SEGB800]
|
|
mov al,dl
|
|
stosb
|
|
mov al,bl
|
|
mov ah,cl
|
|
stosw
|
|
mov edx,ebx
|