home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FreeWare Collection 2
/
FreeSoftwareCollection2pd199x-jp.img
/
prnout
/
src
/
vram.asm
< prev
next >
Wrap
Assembly Source File
|
1990-06-14
|
8KB
|
318 lines
;*****************************************************************
;
;void wrtank(ch,x,y,ccol,bcol)
;
;void wrtkanji(ch,x,y,ccol,bcol)
;
;*****************************************************************
v_para struc
v_ebp dd ?
v_pcr dd ?
v_ch dd ?
v_x dd ?
v_y dd ?
v_ccol dd ?
v_bcol dd ?
v_off dd ?
v_para ends
;*************************************
; VRAM Direct Access Program
;*************************************
bitptn segment 'DATA'
colptn:
dd 000000000h,011111111h,022222222h,033333333h
dd 044444444h,055555555h,066666666h,077777777h
dd 088888888h,099999999h,0AAAAAAAAh,0BBBBBBBBh
dd 0CCCCCCCCh,0DDDDDDDDh,0EEEEEEEEh,0FFFFFFFFh
fntptn:
dd 000000000h,0F0000000h,00F000000h,0FF000000h
dd 000F00000h,0F0F00000h,00FF00000h,0FFF00000h
dd 0000F0000h,0F00F0000h,00F0F0000h,0FF0F0000h
dd 000FF0000h,0F0FF0000h,00FFF0000h,0FFFF0000h
dd 00000F000h,0F000F000h,00F00F000h,0FF00F000h
dd 000F0F000h,0F0F0F000h,00FF0F000h,0FFF0F000h
dd 0000FF000h,0F00FF000h,00F0FF000h,0FF0FF000h
dd 000FFF000h,0F0FFF000h,00FFFF000h,0FFFFF000h
dd 000000F00h,0F0000F00h,00F000F00h,0FF000F00h
dd 000F00F00h,0F0F00F00h,00FF00F00h,0FFF00F00h
dd 0000F0F00h,0F00F0F00h,00F0F0F00h,0FF0F0F00h
dd 000FF0F00h,0F0FF0F00h,00FFF0F00h,0FFFF0F00h
dd 00000FF00h,0F000FF00h,00F00FF00h,0FF00FF00h
dd 000F0FF00h,0F0F0FF00h,00FF0FF00h,0FFF0FF00h
dd 0000FFF00h,0F00FFF00h,00F0FFF00h,0FF0FFF00h
dd 000FFFF00h,0F0FFFF00h,00FFFFF00h,0FFFFFF00h
dd 0000000F0h,0F00000F0h,00F0000F0h,0FF0000F0h
dd 000F000F0h,0F0F000F0h,00FF000F0h,0FFF000F0h
dd 0000F00F0h,0F00F00F0h,00F0F00F0h,0FF0F00F0h
dd 000FF00F0h,0F0FF00F0h,00FFF00F0h,0FFFF00F0h
dd 00000F0F0h,0F000F0F0h,00F00F0F0h,0FF00F0F0h
dd 000F0F0F0h,0F0F0F0F0h,00FF0F0F0h,0FFF0F0F0h
dd 0000FF0F0h,0F00FF0F0h,00F0FF0F0h,0FF0FF0F0h
dd 000FFF0F0h,0F0FFF0F0h,00FFFF0F0h,0FFFFF0F0h
dd 000000FF0h,0F0000FF0h,00F000FF0h,0FF000FF0h
dd 000F00FF0h,0F0F00FF0h,00FF00FF0h,0FFF00FF0h
dd 0000F0FF0h,0F00F0FF0h,00F0F0FF0h,0FF0F0FF0h
dd 000FF0FF0h,0F0FF0FF0h,00FFF0FF0h,0FFFF0FF0h
dd 00000FFF0h,0F000FFF0h,00F00FFF0h,0FF00FFF0h
dd 000F0FFF0h,0F0F0FFF0h,00FF0FFF0h,0FFF0FFF0h
dd 0000FFFF0h,0F00FFFF0h,00F0FFFF0h,0FF0FFFF0h
dd 000FFFFF0h,0F0FFFFF0h,00FFFFFF0h,0FFFFFFF0h
dd 00000000Fh,0F000000Fh,00F00000Fh,0FF00000Fh
dd 000F0000Fh,0F0F0000Fh,00FF0000Fh,0FFF0000Fh
dd 0000F000Fh,0F00F000Fh,00F0F000Fh,0FF0F000Fh
dd 000FF000Fh,0F0FF000Fh,00FFF000Fh,0FFFF000Fh
dd 00000F00Fh,0F000F00Fh,00F00F00Fh,0FF00F00Fh
dd 000F0F00Fh,0F0F0F00Fh,00FF0F00Fh,0FFF0F00Fh
dd 0000FF00Fh,0F00FF00Fh,00F0FF00Fh,0FF0FF00Fh
dd 000FFF00Fh,0F0FFF00Fh,00FFFF00Fh,0FFFFF00Fh
dd 000000F0Fh,0F0000F0Fh,00F000F0Fh,0FF000F0Fh
dd 000F00F0Fh,0F0F00F0Fh,00FF00F0Fh,0FFF00F0Fh
dd 0000F0F0Fh,0F00F0F0Fh,00F0F0F0Fh,0FF0F0F0Fh
dd 000FF0F0Fh,0F0FF0F0Fh,00FFF0F0Fh,0FFFF0F0Fh
dd 00000FF0Fh,0F000FF0Fh,00F00FF0Fh,0FF00FF0Fh
dd 000F0FF0Fh,0F0F0FF0Fh,00FF0FF0Fh,0FFF0FF0Fh
dd 0000FFF0Fh,0F00FFF0Fh,00F0FFF0Fh,0FF0FFF0Fh
dd 000FFFF0Fh,0F0FFFF0Fh,00FFFFF0Fh,0FFFFFF0Fh
dd 0000000FFh,0F00000FFh,00F0000FFh,0FF0000FFh
dd 000F000FFh,0F0F000FFh,00FF000FFh,0FFF000FFh
dd 0000F00FFh,0F00F00FFh,00F0F00FFh,0FF0F00FFh
dd 000FF00FFh,0F0FF00FFh,00FFF00FFh,0FFFF00FFh
dd 00000F0FFh,0F000F0FFh,00F00F0FFh,0FF00F0FFh
dd 000F0F0FFh,0F0F0F0FFh,00FF0F0FFh,0FFF0F0FFh
dd 0000FF0FFh,0F00FF0FFh,00F0FF0FFh,0FF0FF0FFh
dd 000FFF0FFh,0F0FFF0FFh,00FFFF0FFh,0FFFFF0FFh
dd 000000FFFh,0F0000FFFh,00F000FFFh,0FF000FFFh
dd 000F00FFFh,0F0F00FFFh,00FF00FFFh,0FFF00FFFh
dd 0000F0FFFh,0F00F0FFFh,00F0F0FFFh,0FF0F0FFFh
dd 000FF0FFFh,0F0FF0FFFh,00FFF0FFFh,0FFFF0FFFh
dd 00000FFFFh,0F000FFFFh,00F00FFFFh,0FF00FFFFh
dd 000F0FFFFh,0F0F0FFFFh,00FF0FFFFh,0FFF0FFFFh
dd 0000FFFFFh,0F00FFFFFh,00F0FFFFFh,0FF0FFFFFh
dd 000FFFFFFh,0F0FFFFFFh,00FFFFFFFh,0FFFFFFFFh
bitptn ends
VRAM segment 'CODE'
assume cs:VRAM
;**************************************
; Write Kanji Code (JIS or SJIS)
;**************************************
public wrtkan
wrtkan proc near
push ebp
mov ebp,esp
push esi
push edi
push ebx
push es
push fs
mov edi,[ebp].v_y
shl edi,13 ; 128 * 4 * 16 * v_y = 8192 * v_x
mov eax,[ebp].v_x
shl eax,2 ; v_x * 4
add edi,eax
and edi,03FFFFh
add edi,[ebp].v_off
mov eax,[ebp].v_ccol
and eax,0fh
mov eax,ds:[eax*4+offset colptn]
mov [ebp].v_ccol,eax
mov eax,[ebp].v_bcol
and eax,0fh
mov eax,ds:[eax*4+offset colptn]
mov [ebp].v_bcol,eax
mov eax,104h
mov fs,ax
mov ebx,[ebp].v_ch
bt ebx,15
jnc sjto4
cmp bh,9fh
jbe sjto1
sub bh,0B1h-071h
sjto1: sub bh,071h
shl bh,1
inc bh
cmp bl,7fh
jbe sjto2
dec bl
sjto2: cmp bl,9eh
jb sjto3
sub bl,7dh
inc bh
jmp sjto4
sjto3: sub bl,1fh
sjto4: mov dx,0FF94h
mov al,bh
out dx,al
inc dx
mov al,bl
out dx,al
mov ecx,16
wrtkn1: mov dx,0FF96h
sub eax,eax
in al,dx
mov eax,ds:[eax*4+offset fntptn]
mov ebx,eax
not ebx
and eax,[ebp].v_ccol
and ebx,[ebp].v_bcol
or eax,ebx
mov fs:[edi],eax
inc dx
sub eax,eax
in al,dx
mov eax,ds:[eax*4+offset fntptn]
mov ebx,eax
not ebx
and eax,[ebp].v_ccol
and ebx,[ebp].v_bcol
or eax,ebx
mov fs:[edi+4],eax
add edi,512
and edi,03FFFFh
add edi,[ebp].v_off
loop wrtkn1
pop fs
pop es
pop ebx
pop edi
pop esi
pop ebp
ret
wrtkan endp
;***********************************
; Write ANK code
;***********************************
public wrtank
wrtank proc near
push ebp
mov ebp,esp
push esi
push edi
push ebx
push es
push fs
mov edi,[ebp].v_y
shl edi,13
mov eax,[ebp].v_x
shl eax,2
add edi,eax
and edi,03FFFFh
add edi,[ebp].v_off
mov eax,[ebp].v_ccol
and eax,0fh
mov eax,ds:[eax*4+offset colptn]
mov [ebp].v_ccol,eax
mov eax,[ebp].v_bcol
and eax,0fh
mov eax,ds:[eax*4+offset colptn]
mov [ebp].v_bcol,eax
mov ax,138h
mov es,ax
mov ax,104h
mov fs,ax
mov esi,[ebp].v_ch
and esi,0ffh
shl esi,4
add esi,3D800h
mov ecx,16
wrtak2: movzx eax,byte ptr es:[esi]
inc esi
mov eax,ds:[eax*4+offset fntptn]
mov ebx,eax
not ebx
and eax,[ebp].v_ccol
and ebx,[ebp].v_bcol
or eax,ebx
mov fs:[edi],eax
add edi,512
and edi,03FFFFh
add edi,[ebp].v_off
loop wrtak2
pop fs
pop es
pop ebx
pop edi
pop esi
pop ebp
ret
wrtank endp
;***********************************
; Displry CurSol
;***********************************
public disp_cur
disp_cur proc near
push ebp
mov ebp,esp
push edi
push ds
mov edi,[ebp+12]
shl edi,13
mov eax,[ebp+8]
shl eax,2
add edi,eax
and edi,03FFFFh
add edi,[ebp+16]
mov eax,104h
mov ds,ax
mov ecx,16
disp_1: not dword ptr ds:[edi]
add edi,512
and edi,03FFFFh
add edi,[ebp+16]
loop disp_1
pop ds
pop edi
pop ebp
ret
disp_cur endp
;***********************************
; Printer BIOS
;***********************************
public sub_PRB_chr
sub_PRB_chr proc near
mov ax,0100h
mov dl,[esp+4]
int 94h
mov al,ah
and eax,0FFh
ret
sub_PRB_chr endp
public inp
inp proc near
mov dx,[esp+4]
in al,dx
and eax,0FFh
ret
inp endp
public outp
outp proc near
mov dx,[esp+4]
mov ax,[esp+8]
out dx,al
ret
outp endp
VRAM ends
end