Upload
This commit is contained in:
commit
43352ff262
1291 changed files with 220976 additions and 0 deletions
409
GLENZ/VID.ASM
Normal file
409
GLENZ/VID.ASM
Normal file
|
|
@ -0,0 +1,409 @@
|
|||
include asm.inc
|
||||
|
||||
;publics:
|
||||
;setvmode()
|
||||
|
||||
extrn _bgpic:far
|
||||
|
||||
text__vid SEGMENT para public 'CODE'
|
||||
ASSUME cs:text__vid
|
||||
|
||||
.386
|
||||
|
||||
modes dw OFFSET v320x200x256
|
||||
dw OFFSET v320x350x256
|
||||
dw OFFSET v320x350x256
|
||||
dw OFFSET v320x240x256
|
||||
dw OFFSET vtseng640x400x256
|
||||
|
||||
PUBLIC setvmode
|
||||
setvmode PROC FAR
|
||||
;ax=mode => ds:si
|
||||
mov bx,ax
|
||||
shl bx,1
|
||||
mov bx,cs:modes[bx]
|
||||
mov cx,16
|
||||
@@1: mov ax,cs:[bx]
|
||||
mov ds:[si],ax
|
||||
mov word ptr ds:[si+2],cs
|
||||
add si,4
|
||||
add bx,2
|
||||
loop @@1
|
||||
ret
|
||||
setvmode ENDP
|
||||
|
||||
;video mode structure
|
||||
v320x200x256 LABEL WORD
|
||||
dw OFFSET init320x200 ;init routine
|
||||
dw OFFSET switch320x200 ;page switcher
|
||||
dw OFFSET clear64k ;clear all screens
|
||||
dw OFFSET twpset
|
||||
dw OFFSET twlineto
|
||||
dw OFFSET twhline
|
||||
dw OFFSET twhlinegroup
|
||||
dw OFFSET twthlinegroup
|
||||
dw OFFSET polygroup
|
||||
dw OFFSET clearpage
|
||||
dw OFFSET fwaitborder
|
||||
v320x350x256 LABEL WORD
|
||||
dw OFFSET init320x350 ;init routine
|
||||
dw OFFSET switch320x350 ;page switcher
|
||||
dw OFFSET clear64k ;clear all screens
|
||||
dw OFFSET twpset
|
||||
dw OFFSET twlineto
|
||||
dw OFFSET twhline
|
||||
dw OFFSET twhlinegroup
|
||||
dw OFFSET twthlinegroup
|
||||
dw OFFSET polygroup
|
||||
dw OFFSET clearpage
|
||||
dw OFFSET fwaitborder
|
||||
v320x350x256unr LABEL WORD
|
||||
dw OFFSET init320x350unr ;init routine
|
||||
dw OFFSET switch320x350 ;page switcher
|
||||
dw OFFSET clear64k ;clear all screens
|
||||
dw OFFSET twpset
|
||||
dw OFFSET twlineto
|
||||
dw OFFSET twhline
|
||||
dw OFFSET twhlinegroup
|
||||
dw OFFSET twthlinegroup
|
||||
dw OFFSET polygroup
|
||||
dw OFFSET clearpage
|
||||
dw OFFSET fwaitborder
|
||||
v320x240x256 LABEL WORD
|
||||
dw OFFSET init320x240 ;init routine
|
||||
dw OFFSET switch320x240 ;page switcher
|
||||
dw OFFSET clear64k ;clear all screens
|
||||
dw OFFSET twpset
|
||||
dw OFFSET twlineto
|
||||
dw OFFSET twhline
|
||||
dw OFFSET twhlinegroup
|
||||
dw OFFSET twthlinegroup
|
||||
dw OFFSET polygroup
|
||||
dw OFFSET clearpage
|
||||
dw OFFSET fwaitborder
|
||||
vtseng640x400x256 LABEL WORD
|
||||
dw OFFSET init640x400 ;init routine
|
||||
dw OFFSET switch640x400 ;page switcher
|
||||
dw OFFSET clear640x400 ;clear all screens
|
||||
dw OFFSET twpset
|
||||
dw OFFSET twlineto
|
||||
dw OFFSET twhline
|
||||
dw OFFSET twhlinegroup
|
||||
dw OFFSET twthlinegroup
|
||||
dw OFFSET polygroup
|
||||
dw OFFSET clearpage
|
||||
dw OFFSET fwaitborder
|
||||
|
||||
include vidmisc.asm
|
||||
include vidinit.asm
|
||||
include vidtwe.asm
|
||||
include vidnrm.asm
|
||||
include vidpoly.asm
|
||||
|
||||
;****************************************************************
|
||||
|
||||
setrows PROC NEAR
|
||||
mov cs:rowsadd,dx
|
||||
mov cs:truerowsadd,dx
|
||||
xor ax,ax
|
||||
mov bx,OFFSET rows
|
||||
ain1: mov ds:[bx],ax
|
||||
add ax,dx
|
||||
add bx,2
|
||||
loop ain1
|
||||
ret
|
||||
setrows ENDP
|
||||
|
||||
ALIGN 2
|
||||
pagep dw 0
|
||||
wpage dw 0,1,2
|
||||
wpage2 dw 0,4,8
|
||||
spage dw 2,0,1
|
||||
|
||||
init640x400 PROC FAR
|
||||
LOADDS
|
||||
mov ds:projxmul,256*2
|
||||
mov ds:projymul,213*2
|
||||
mov ds:projxadd,320
|
||||
mov ds:projyadd,200
|
||||
mov ds:projminz,128
|
||||
mov ds:projminzshr,7
|
||||
mov ds:wminx,0
|
||||
mov ds:wminy,0
|
||||
mov ds:wmaxx,639
|
||||
mov ds:wmaxy,399
|
||||
mov ds:framerate10,700 ;70 frames/sec
|
||||
;
|
||||
mov ax,11h ;640x480/mono
|
||||
int 10h
|
||||
call tweak640x400
|
||||
mov cx,400
|
||||
mov dx,160
|
||||
call setrows
|
||||
ret
|
||||
init640x400 ENDP
|
||||
|
||||
switch640x400 PROC FAR
|
||||
swipa2: mov ax,0a000h
|
||||
mov cs:vram,ax
|
||||
mov cs:truevram,ax
|
||||
mov bx,cs:pagep
|
||||
inc bx
|
||||
cmp bx,3
|
||||
jb sws1
|
||||
xor bx,bx
|
||||
sws1: mov cs:pagep,bx
|
||||
shl bx,1
|
||||
mov dx,3d4h
|
||||
mov al,33h
|
||||
mov ah,byte ptr cs:spage[bx]
|
||||
out dx,ax ;spage
|
||||
;set wpage
|
||||
mov al,byte ptr cs:wpage[bx]
|
||||
mov ah,al
|
||||
rol ah,4
|
||||
or al,ah
|
||||
mov dx,3cdh
|
||||
out dx,al
|
||||
;page low offset
|
||||
mov dx,3d4h
|
||||
mov ax,000dh
|
||||
out dx,ax
|
||||
mov ax,000ch
|
||||
out dx,ax
|
||||
ret
|
||||
switch640x400 ENDP
|
||||
|
||||
clear640x400 PROC FAR
|
||||
call switch640x400
|
||||
call clear64k
|
||||
call switch640x400
|
||||
call clear64k
|
||||
call switch640x400
|
||||
call clear64k
|
||||
call switch640x400
|
||||
call clear64k
|
||||
ret
|
||||
clear640x400 ENDP
|
||||
|
||||
;****************************************************************
|
||||
|
||||
ALIGN 2
|
||||
t324v dw 0a5f0h
|
||||
t324v1 dw 0aaa0h
|
||||
t324v2 dw 0a140h
|
||||
t324vout dw 01400h
|
||||
t324vout1 dw 05f00h
|
||||
t324vout2 dw 0aa00h
|
||||
|
||||
init320x200 PROC FAR
|
||||
LOADDS
|
||||
mov ds:projxmul,256
|
||||
mov ds:projymul,213
|
||||
mov ds:projxadd,160
|
||||
mov ds:projyadd,130
|
||||
mov ds:projminz,128
|
||||
mov ds:projminzshr,7
|
||||
mov ds:wminx,0
|
||||
mov ds:wminy,0
|
||||
mov ds:wmaxx,319
|
||||
mov ds:wmaxy,199
|
||||
mov ds:framerate10,700
|
||||
;
|
||||
; call tweak320x200
|
||||
mov cx,200
|
||||
mov dx,80
|
||||
call setrows
|
||||
ret
|
||||
init320x200 ENDP
|
||||
|
||||
init320x240 PROC FAR
|
||||
LOADDS
|
||||
mov ds:projxmul,256
|
||||
mov ds:projymul,256
|
||||
mov ds:projxadd,160
|
||||
mov ds:projyadd,120
|
||||
mov ds:projminz,128
|
||||
mov ds:projminzshr,7
|
||||
mov ds:wminx,0
|
||||
mov ds:wminy,0
|
||||
mov ds:wmaxx,319
|
||||
mov ds:wmaxy,239
|
||||
mov ds:framerate10,610 ;60 frames/sec
|
||||
;
|
||||
call tweak320x200
|
||||
LOADDS
|
||||
mov si,OFFSET hseq1
|
||||
call sethseq ;to 240 mode
|
||||
mov cx,240
|
||||
mov dx,80
|
||||
call setrows
|
||||
ret
|
||||
init320x240 ENDP
|
||||
|
||||
switch320x240b PROC FAR
|
||||
LOADDS
|
||||
mov ax,cs:t324v
|
||||
mov bx,cs:t324v1
|
||||
mov cs:t324v,bx
|
||||
mov cs:t324v1,ax
|
||||
mov ds:vram,bx
|
||||
mov ds:truevram,bx
|
||||
mov bx,cs:t324vout1
|
||||
mov cx,cs:t324vout2
|
||||
mov cs:t324vout1,cx
|
||||
mov cs:t324vout2,bx
|
||||
mov dx,3d4h
|
||||
mov al,0ch
|
||||
mov ah,bh
|
||||
out dx,ax
|
||||
ret
|
||||
switch320x240b ENDP
|
||||
|
||||
switch320x240 PROC FAR
|
||||
switch320x200:
|
||||
LOADDS
|
||||
mov ax,cs:t324v
|
||||
mov bx,cs:t324v1
|
||||
mov cx,cs:t324v2
|
||||
mov cs:t324v,bx
|
||||
mov cs:t324v1,cx
|
||||
mov cs:t324v2,ax
|
||||
mov ds:vram,bx
|
||||
mov ds:truevram,bx
|
||||
mov ax,cs:t324vout
|
||||
mov bx,cs:t324vout1
|
||||
mov cx,cs:t324vout2
|
||||
mov cs:t324vout,bx
|
||||
mov cs:t324vout1,cx
|
||||
mov cs:t324vout2,ax
|
||||
mov dx,3d4h
|
||||
mov al,0ch
|
||||
mov ah,bh
|
||||
out dx,ax
|
||||
ret
|
||||
switch320x240 ENDP
|
||||
|
||||
clear64k PROC FAR
|
||||
cld
|
||||
mov dx,3c4h
|
||||
mov ax,0f02h
|
||||
out dx,ax
|
||||
mov ax,0a000h
|
||||
mov es,ax
|
||||
mov cx,32768
|
||||
xor ax,ax
|
||||
xor di,di
|
||||
rep stosw
|
||||
ret
|
||||
clear64k ENDP
|
||||
|
||||
;****************************************************************
|
||||
|
||||
init320x350unr PROC FAR
|
||||
LOADDS
|
||||
mov ds:projxmul,256
|
||||
mov ds:projymul,420
|
||||
mov ds:projxadd,180
|
||||
mov ds:projyadd,175
|
||||
mov ds:projminz,128
|
||||
mov ds:projminzshr,7
|
||||
mov ds:wminx,0
|
||||
mov ds:wminy,32
|
||||
mov ds:wmaxx,359
|
||||
mov ds:wmaxy,349-32
|
||||
mov ds:framerate10,700 ;70 frames/sec
|
||||
;
|
||||
call tweak320x350
|
||||
mov cx,350
|
||||
mov dx,92
|
||||
call setrows
|
||||
ret
|
||||
init320x350unr ENDP
|
||||
|
||||
init320x350 PROC FAR
|
||||
LOADDS
|
||||
mov ds:projxmul,256
|
||||
mov ds:projymul,420
|
||||
mov ds:projxadd,180
|
||||
mov ds:projyadd,175
|
||||
mov ds:projminz,128
|
||||
mov ds:projminzshr,7
|
||||
mov ds:wminx,0
|
||||
mov ds:wminy,0
|
||||
mov ds:wmaxx,359
|
||||
mov ds:wmaxy,349
|
||||
mov ds:framerate10,700 ;70 frames/sec
|
||||
;
|
||||
call tweak360x350
|
||||
mov cx,350
|
||||
mov dx,92
|
||||
call setrows
|
||||
ret
|
||||
init320x350 ENDP
|
||||
|
||||
ALIGN 2
|
||||
t365v dw 0a000h
|
||||
t365v1 dw 0a800h
|
||||
t365vo dw 08000h
|
||||
t365vo1 dw 00000h
|
||||
|
||||
switch320x350 PROC FAR
|
||||
LOADDS
|
||||
mov ax,cs:t365v
|
||||
xchg ax,cs:t365v1
|
||||
mov cs:t365v,ax
|
||||
mov ds:vram,ax
|
||||
mov ds:truevram,ax
|
||||
mov bx,cs:t365vo
|
||||
xchg bx,cs:t365vo1
|
||||
mov cs:t365vo,bx
|
||||
mov dx,3d4h
|
||||
mov al,0ch
|
||||
mov ah,bh
|
||||
out dx,ax
|
||||
call waitborder
|
||||
ret
|
||||
switch320x350 ENDP
|
||||
|
||||
justret PROC FAR
|
||||
ret
|
||||
justret ENDP
|
||||
|
||||
clearpage PROC FAR
|
||||
push ax
|
||||
mov dx,3c4h
|
||||
mov ax,0f02h
|
||||
out dx,ax
|
||||
mov es,ds:vram
|
||||
mov di,ds:wminy
|
||||
shl di,1
|
||||
mov di,ds:rows[di]
|
||||
mov ax,ds:wminx
|
||||
mov dx,ds:wmaxx
|
||||
sub dx,ax
|
||||
shr ax,2
|
||||
add di,ax
|
||||
add dx,7
|
||||
shr dx,4
|
||||
mov cx,ds:wmaxy
|
||||
sub cx,ds:wminy
|
||||
inc cx
|
||||
pop ax
|
||||
push ax
|
||||
shl eax,16
|
||||
pop ax
|
||||
@@1: push cx
|
||||
push di
|
||||
mov cx,dx
|
||||
rep stosd
|
||||
pop di
|
||||
pop cx
|
||||
add di,ds:rowsadd
|
||||
loop @@1
|
||||
ret
|
||||
clearpage ENDP
|
||||
|
||||
text__vid ENDS
|
||||
END
|
||||
|
||||
Loading…
Reference in a new issue