Cleaned up the VGA video mode source code.
This commit is contained in:
@@ -1039,7 +1039,7 @@ db ' ',0
|
|||||||
; Left side starts with Video Mode 0
|
; Left side starts with Video Mode 0
|
||||||
NEWSYM GUI16VID, db 0,0,0,0,1,0,1,0,1,0,1,0,1,0 ; 16-bit mode
|
NEWSYM GUI16VID, db 0,0,0,0,1,0,1,0,1,0,1,0,1,0 ; 16-bit mode
|
||||||
NEWSYM GUINGVID, db 1,1,1,1,1,1,1,1,0,1,1,1,1,0 ; New Graphics Mode Available
|
NEWSYM GUINGVID, db 1,1,1,1,1,1,1,1,0,1,1,1,1,0 ; New Graphics Mode Available
|
||||||
NEWSYM GUISLVID, db 0,0,0,0,1,0,0,1,1,0,0,1,1,0 ; Scanlines
|
NEWSYM GUISLVID, db 0,0,1,0,1,0,0,1,1,0,0,1,1,0 ; Scanlines
|
||||||
NEWSYM GUIINVID, db 0,0,0,0,0,0,0,0,0,0,0,0,1,0 ; Interpolation
|
NEWSYM GUIINVID, db 0,0,0,0,0,0,0,0,0,0,0,0,1,0 ; Interpolation
|
||||||
NEWSYM GUIEAVID, db 0,0,0,0,0,0,0,0,0,0,0,1,0,0 ; Eagle
|
NEWSYM GUIEAVID, db 0,0,0,0,0,0,0,0,0,0,0,1,0,0 ; Eagle
|
||||||
NEWSYM GUIIEVID, db 0,0,0,0,0,0,0,0,0,0,0,1,1,0 ; (Interp | Eagle)
|
NEWSYM GUIIEVID, db 0,0,0,0,0,0,0,0,0,0,0,1,1,0 ; (Interp | Eagle)
|
||||||
|
|||||||
@@ -21,19 +21,14 @@ EXTSYM AddSub256,InitVesa2,cbitmode,cvidmode,makepal
|
|||||||
EXTSYM scanlines,selcA000,vesa2_bits,vesa2_bpos,vesa2_clbit
|
EXTSYM scanlines,selcA000,vesa2_bits,vesa2_bpos,vesa2_clbit
|
||||||
EXTSYM vesa2_gpos,vesa2_rpos,vesa2_usbit,vesa2_x,vesa2_y
|
EXTSYM vesa2_gpos,vesa2_rpos,vesa2_usbit,vesa2_x,vesa2_y
|
||||||
EXTSYM vesa2selec,InitVesa12,videotroub
|
EXTSYM vesa2selec,InitVesa12,videotroub
|
||||||
|
|
||||||
%ifdef __MSDOS__
|
%ifdef __MSDOS__
|
||||||
EXTSYM cscopymodeq
|
EXTSYM cscopymodeq,cscopymodex
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
NEWSYM InitVidAsmStart
|
NEWSYM InitVidAsmStart
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;NEWSYM clearfilter, dw 0
|
|
||||||
;NEWSYM res640, db 0
|
|
||||||
;NEWSYM res480, db 0
|
|
||||||
|
|
||||||
SECTION .bss
|
SECTION .bss
|
||||||
|
|
||||||
NEWSYM clearfilter, resw 1
|
NEWSYM clearfilter, resw 1
|
||||||
@@ -44,7 +39,7 @@ NEWSYM res480, resb 1
|
|||||||
SECTION .text
|
SECTION .text
|
||||||
|
|
||||||
NEWSYM dosinitvideo2
|
NEWSYM dosinitvideo2
|
||||||
jmp dosinitvideo.noaddsub
|
; jmp dosinitvideo.noaddsub
|
||||||
|
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
; InitVideo
|
; InitVideo
|
||||||
@@ -81,63 +76,42 @@ NEWSYM dosinitvideo
|
|||||||
je near .initvesa2640x480x16
|
je near .initvesa2640x480x16
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
%include "dos/vga.inc"
|
||||||
|
|
||||||
|
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
; InitModeX Sets up 320x240 unchained mode
|
; InitModeX Sets up 320x240 unchained mode
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
|
|
||||||
.initmodex
|
.initmodex
|
||||||
mov byte[cbitmode],0
|
%ifdef __MSDOS__
|
||||||
mov ax,0013h
|
SetVGAMode .Mode320x240
|
||||||
int 10h
|
call cscopymodex
|
||||||
|
%endif
|
||||||
|
call makepal
|
||||||
|
ret
|
||||||
|
|
||||||
mov dx,03C4h
|
;*******************************************************
|
||||||
mov ax,0604h
|
; InitModeQ224 Sets up 256x224 chained mode
|
||||||
out dx,ax
|
;*******************************************************
|
||||||
mov dx,03D4h
|
|
||||||
mov ax,0E317h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,0014h
|
|
||||||
out dx,ax
|
|
||||||
mov dx,03C4h
|
|
||||||
mov ax,0F02h
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03C2h
|
.initmodeq224
|
||||||
mov al,0E3h
|
%ifdef __MSDOS__
|
||||||
out dx,al
|
SetVGAMode .Mode256x224c
|
||||||
mov dx,03D4h
|
call cscopymodeq
|
||||||
mov ax,2C11h
|
%endif
|
||||||
out dx,ax
|
call makepal
|
||||||
mov ax,0D06h
|
ret
|
||||||
out dx,ax
|
|
||||||
mov ax,3E07h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,0EA10h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,0AC11h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,0DF12h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,0E715h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,0616h
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03C6h
|
;*******************************************************
|
||||||
mov al,0FFh
|
; InitModeQ240 Sets up 256x240 chained mode
|
||||||
out dx,al
|
;*******************************************************
|
||||||
mov dx,03C4h
|
|
||||||
; select all 4 planes and clear
|
.initmodeq240
|
||||||
mov ax,0F02h
|
%ifdef __MSDOS__
|
||||||
out dx,ax
|
SetVGAMode .Mode256x240c
|
||||||
push es
|
call cscopymodeq
|
||||||
mov ax,[selcA000]
|
%endif
|
||||||
mov es,ax
|
|
||||||
xor edi,edi
|
|
||||||
mov ecx,65536/4
|
|
||||||
xor eax,eax
|
|
||||||
rep stosd
|
|
||||||
pop es
|
|
||||||
call makepal
|
call makepal
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@@ -146,481 +120,20 @@ NEWSYM dosinitvideo
|
|||||||
;*******************************************************
|
;*******************************************************
|
||||||
|
|
||||||
.initmodeq
|
.initmodeq
|
||||||
mov byte[cbitmode],0
|
|
||||||
cmp byte[AddSub256],1
|
|
||||||
jne .noaddsub
|
|
||||||
mov byte[cbitmode],1
|
|
||||||
.noaddsub
|
|
||||||
mov byte[vesa2_rpos],11 ; Red bit position 128,256,512,1024,2048
|
|
||||||
mov byte[vesa2_gpos],6 ; Green bit position 2^6 = 64
|
|
||||||
mov byte[vesa2_bpos],0 ; Blue bit position
|
|
||||||
mov word[vesa2_usbit],0020h ; Unused bit in proper bit location
|
|
||||||
mov word[vesa2_clbit],0F7DFh ; clear all bit 0's if AND is used
|
|
||||||
mov word[clearfilter],0F7DFh ; Filter out unnecessary bits
|
|
||||||
|
|
||||||
; cmp byte[scanlines],1
|
|
||||||
; je near .scanlines
|
|
||||||
mov ax,0013h
|
|
||||||
int 10h
|
|
||||||
mov dx,03D4h
|
|
||||||
mov al,11h
|
|
||||||
out dx,al
|
|
||||||
|
|
||||||
inc dx
|
|
||||||
in al,dx
|
|
||||||
and al,7Fh
|
|
||||||
mov ah,al
|
|
||||||
dec dx
|
|
||||||
mov al,11h
|
|
||||||
out dx,al
|
|
||||||
inc dx
|
|
||||||
mov al,ah
|
|
||||||
out dx,al
|
|
||||||
|
|
||||||
mov dx,03C2h
|
|
||||||
mov al,0E3h
|
|
||||||
out dx,al
|
|
||||||
mov dx,03D4h
|
|
||||||
mov ax,5F00h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,3F01h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,4002h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,8203h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,4A04h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,9A05h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,2306h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,0B207h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,0008h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,6109h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,0A10h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,0AC11h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,0FF12h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,2013h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,4014h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,0715h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,1A16h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,0A317h
|
|
||||||
out dx,ax
|
|
||||||
mov dx,03C4h
|
|
||||||
mov ax,0101h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,0E04h
|
|
||||||
out dx,ax
|
|
||||||
mov dx,03CEh
|
|
||||||
mov ax,4005h
|
|
||||||
out dx,ax
|
|
||||||
mov ax,0506h
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03DAh
|
|
||||||
in al,dx
|
|
||||||
mov dx,03C0h
|
|
||||||
mov al,30h
|
|
||||||
out dx,al
|
|
||||||
mov al,41h
|
|
||||||
out dx,al
|
|
||||||
|
|
||||||
mov dx,03DAh
|
|
||||||
in al,dx
|
|
||||||
mov dx,03C0h
|
|
||||||
mov al,33h
|
|
||||||
out dx,al
|
|
||||||
mov al,0h
|
|
||||||
out dx,al
|
|
||||||
|
|
||||||
mov dx,03C6h
|
|
||||||
mov al,0FFh
|
|
||||||
out dx,al
|
|
||||||
cmp byte[cbitmode],1
|
|
||||||
je .nopal
|
|
||||||
call makepal
|
|
||||||
.nopal
|
|
||||||
; clear screen
|
|
||||||
push es
|
|
||||||
mov ax,[selcA000]
|
|
||||||
mov es,ax
|
|
||||||
xor edi,edi
|
|
||||||
mov ecx,256*64
|
|
||||||
xor eax,eax
|
|
||||||
rep stosd
|
|
||||||
pop es
|
|
||||||
ret
|
|
||||||
|
|
||||||
;.scanlines
|
|
||||||
; mov ax,0013h
|
|
||||||
; int 10h
|
|
||||||
; mov dx,03D4h
|
|
||||||
; mov al,11h
|
|
||||||
; out dx,al
|
|
||||||
;
|
|
||||||
; inc dx
|
|
||||||
; in al,dx
|
|
||||||
; and al,7Fh
|
|
||||||
; mov ah,al
|
|
||||||
; dec dx
|
|
||||||
; mov al,11h
|
|
||||||
; out dx,al
|
|
||||||
; inc dx
|
|
||||||
; mov al,ah
|
|
||||||
; out dx,al
|
|
||||||
;
|
|
||||||
; mov dx,03C2h
|
|
||||||
; mov al,0E3h
|
|
||||||
; out dx,al
|
|
||||||
; mov dx,03D4h
|
|
||||||
; mov ax,5F00h
|
|
||||||
; out dx,ax
|
|
||||||
; mov ax,3F01h
|
|
||||||
; out dx,ax
|
|
||||||
; mov ax,4002h
|
|
||||||
; out dx,ax
|
|
||||||
; mov ax,8203h
|
|
||||||
; out dx,ax
|
|
||||||
; mov ax,4A04h
|
|
||||||
; out dx,ax
|
|
||||||
; mov ax,9A05h
|
|
||||||
; out dx,ax
|
|
||||||
; mov ax,2306h
|
|
||||||
; out dx,ax
|
|
||||||
; mov ax,01D07h
|
|
||||||
; out dx,ax
|
|
||||||
; mov ax,0008h
|
|
||||||
; out dx,ax
|
|
||||||
; mov ax,6009h
|
|
||||||
; out dx,ax
|
|
||||||
; mov ax,0A10h
|
|
||||||
; out dx,ax
|
|
||||||
; mov ax,0AC11h
|
|
||||||
; out dx,ax
|
|
||||||
; mov ax,0FF12h
|
|
||||||
; out dx,ax
|
|
||||||
; mov ax,2013h
|
|
||||||
; out dx,ax
|
|
||||||
; mov ax,4014h
|
|
||||||
; out dx,ax
|
|
||||||
; mov ax,0715h
|
|
||||||
; out dx,ax
|
|
||||||
; mov ax,1A16h
|
|
||||||
; out dx,ax
|
|
||||||
; mov ax,0A317h
|
|
||||||
; out dx,ax
|
|
||||||
; mov dx,03C4h
|
|
||||||
; mov ax,0101h
|
|
||||||
; out dx,ax
|
|
||||||
; mov ax,0E04h
|
|
||||||
; out dx,ax
|
|
||||||
; mov dx,03CEh
|
|
||||||
; mov ax,4005h
|
|
||||||
; out dx,ax
|
|
||||||
; mov ax,0506h
|
|
||||||
; out dx,ax
|
|
||||||
;
|
|
||||||
; mov dx,03DAh
|
|
||||||
; in al,dx
|
|
||||||
; mov dx,03C0h
|
|
||||||
; mov al,30h
|
|
||||||
; out dx,al
|
|
||||||
; mov al,41h
|
|
||||||
; out dx,al
|
|
||||||
;
|
|
||||||
; mov dx,03DAh
|
|
||||||
; in al,dx
|
|
||||||
; mov dx,03C0h
|
|
||||||
; mov al,33h
|
|
||||||
; out dx,al
|
|
||||||
; mov al,0h
|
|
||||||
; out dx,al
|
|
||||||
;
|
|
||||||
; mov dx,03C6h
|
|
||||||
; mov al,0FFh
|
|
||||||
; out dx,al
|
|
||||||
; cmp byte[cbitmode],1
|
|
||||||
; je .nopalb
|
|
||||||
; call makepal
|
|
||||||
;.nopalb
|
|
||||||
; ; clear screen
|
|
||||||
; push es
|
|
||||||
; mov ax,[selcA000]
|
|
||||||
; mov es,ax
|
|
||||||
; xor edi,edi
|
|
||||||
; mov ecx,256*64
|
|
||||||
; xor eax,eax
|
|
||||||
; rep stosd
|
|
||||||
; pop es
|
|
||||||
; ret
|
|
||||||
|
|
||||||
;*******************************************************
|
|
||||||
; InitModeQ224 Sets up 256x224 chained mode
|
|
||||||
;*******************************************************
|
|
||||||
|
|
||||||
.initmodeq224
|
|
||||||
mov byte[cbitmode],0
|
|
||||||
|
|
||||||
mov ax,0013h
|
|
||||||
int 10h
|
|
||||||
|
|
||||||
; enable writes
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,0011h
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
in ax,dx
|
|
||||||
and ax,007fh
|
|
||||||
push ax
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,0011h
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
pop ax
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
; tweak regs
|
|
||||||
mov dx,03c2h
|
|
||||||
mov ax,00e3h
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,1
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,003fh
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,2
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,0040h
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,4
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,004ah
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,5
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,009ah
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,6
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,000bh
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,7
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,003eh
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,9
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,0061h
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,0010h
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,00dah
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,0011h
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,009ah
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,0012h
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,00bfh
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,0013h
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,0020h
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,0015h
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,0007h
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,0016h
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,001ah
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
%ifdef __MSDOS__
|
%ifdef __MSDOS__
|
||||||
|
cmp byte[scanlines],1
|
||||||
|
jnz .noscanlines
|
||||||
|
jmp .scanlines
|
||||||
|
.noscanlines
|
||||||
|
SetVGAMode .Mode256x256c
|
||||||
|
jmp .done
|
||||||
|
.scanlines
|
||||||
|
SetVGAMode .Mode256x256cs
|
||||||
|
jmp .done
|
||||||
|
.done
|
||||||
call cscopymodeq
|
call cscopymodeq
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
call makepal
|
call makepal
|
||||||
|
|
||||||
ret
|
|
||||||
|
|
||||||
;*******************************************************
|
|
||||||
; InitModeQ240 Sets up 256x240 chained mode
|
|
||||||
;*******************************************************
|
|
||||||
|
|
||||||
.initmodeq240
|
|
||||||
mov byte[cbitmode],0
|
|
||||||
|
|
||||||
mov ax,0013h
|
|
||||||
int 10h
|
|
||||||
|
|
||||||
; enable writes
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,0011h
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
in ax,dx
|
|
||||||
and ax,007fh
|
|
||||||
push ax
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,0011h
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
pop ax
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
; tweak regs
|
|
||||||
mov dx,03c2h
|
|
||||||
mov ax,00e3h
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,1
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,003fh
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,2
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,0040h
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,4
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,004ah
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,5
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,009ah
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,6
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,000dh
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,7
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,003eh
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,9
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,0041h
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,0010h
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,00eah
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,0011h
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,00ach
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,0012h
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,00dfh
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,0013h
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,0020h
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,0015h
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,00e7h
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
mov dx,03d4h
|
|
||||||
mov ax,0016h
|
|
||||||
out dx,ax
|
|
||||||
inc dx
|
|
||||||
mov ax,0006h
|
|
||||||
out dx,ax
|
|
||||||
|
|
||||||
%ifdef __MSDOS__
|
|
||||||
call cscopymodeq
|
|
||||||
%endif
|
|
||||||
|
|
||||||
call makepal
|
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
|
|||||||
110
zsnes/src/dos/vga.inc
Normal file
110
zsnes/src/dos/vga.inc
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
|
||||||
|
%ifdef __MSDOS__
|
||||||
|
%macro SetVGAMode 1
|
||||||
|
mov byte[cbitmode],0
|
||||||
|
|
||||||
|
mov ax,0013h
|
||||||
|
int 10h
|
||||||
|
|
||||||
|
mov dx,03d4h
|
||||||
|
mov ax,0011h
|
||||||
|
out dx,ax
|
||||||
|
inc edx
|
||||||
|
in al,dx
|
||||||
|
and al,07fh
|
||||||
|
mov ah,al
|
||||||
|
mov al,11h
|
||||||
|
dec edx
|
||||||
|
out dx,ax
|
||||||
|
|
||||||
|
xor ecx,ecx
|
||||||
|
jmp %%start
|
||||||
|
|
||||||
|
%%loop
|
||||||
|
add ecx,4
|
||||||
|
|
||||||
|
%%start
|
||||||
|
mov eax,[%1+ecx]
|
||||||
|
or eax,eax
|
||||||
|
jz %%end
|
||||||
|
|
||||||
|
cmp ax,03c0h
|
||||||
|
je %%3c0
|
||||||
|
cmp ax,03c2h
|
||||||
|
je %%3c2
|
||||||
|
cmp ax,03c3h
|
||||||
|
je %%3c2
|
||||||
|
jmp %%default
|
||||||
|
|
||||||
|
%%3c0
|
||||||
|
mov dx,03dah
|
||||||
|
in al,dx
|
||||||
|
mov dl,0c0h
|
||||||
|
shr eax,16
|
||||||
|
or al,20h
|
||||||
|
out dx,al
|
||||||
|
shr eax,8
|
||||||
|
out dx,al
|
||||||
|
jmp %%loop
|
||||||
|
|
||||||
|
%%3c2
|
||||||
|
mov dx,ax
|
||||||
|
rol eax,8
|
||||||
|
out dx,al
|
||||||
|
jmp %%loop
|
||||||
|
|
||||||
|
%%default
|
||||||
|
mov dx,ax
|
||||||
|
shr eax,16
|
||||||
|
out dx,ax
|
||||||
|
jmp %%loop
|
||||||
|
|
||||||
|
%%end
|
||||||
|
%endmacro
|
||||||
|
|
||||||
|
|
||||||
|
SECTION .data
|
||||||
|
|
||||||
|
.Mode256x224c
|
||||||
|
dw 03c2h,0e300h,03d4h,05f00h,03d4h,03f01h,03d4h,04002h,03d4h,08203h
|
||||||
|
dw 03d4h,04a04h,03d4h,09a05h,03d4h,00b06h,03d4h,03e07h,03d4h,00008h
|
||||||
|
dw 03d4h,06109h,03d4h,0da10h,03d4h,0ac11h,03d4h,0bf12h,03d4h,02013h
|
||||||
|
dw 03d4h,04014h,03d4h,00715h,03d4h,01a16h,03d4h,0a317h,03c4h,00101h
|
||||||
|
dw 03c4h,00e04h,03cEh,04005h,03ceh,00506h,03c0h,04110h,03c0h,00013h
|
||||||
|
dd 0
|
||||||
|
|
||||||
|
.Mode256x240c
|
||||||
|
dw 03c2h,0e300h,03d4h,05f00h,03d4h,03f01h,03d4h,04002h,03d4h,08203h
|
||||||
|
dw 03d4h,04a04h,03d4h,09a05h,03d4h,00d06h,03d4h,03e07h,03d4h,00008h
|
||||||
|
dw 03d4h,04109h,03d4h,0ea10h,03d4h,0ac11h,03d4h,0df12h,03d4h,02013h
|
||||||
|
dw 03d4h,04014h,03d4h,0e715h,03d4h,00616h,03d4h,0a317h,03c4h,00101h
|
||||||
|
dw 03c4h,00e04h,03ceh,04005h,03ceh,00506h,03c0h,04110h,03c0h,00013h
|
||||||
|
dd 0
|
||||||
|
|
||||||
|
.Mode256x256c
|
||||||
|
dw 03c2h,0e300h,03d4h,05f00h,03d4h,03f01h,03d4h,04002h,03d4h,08203h
|
||||||
|
dw 03d4h,04a04h,03d4h,09a05h,03d4h,02306h,03d4h,0b207h,03d4h,00008h
|
||||||
|
dw 03d4h,06109h,03d4h,00a10h,03d4h,0ac11h,03d4h,0FF12h,03d4h,02013h
|
||||||
|
dw 03d4h,04014h,03d4h,00715h,03d4h,01a16h,03d4h,0a317h,03c4h,00101h
|
||||||
|
dw 03c4h,00e04h,03ceh,04005h,03ceh,00506h,03c0h,04110h,03c0h,00013h
|
||||||
|
dd 0
|
||||||
|
|
||||||
|
.Mode256x256cs
|
||||||
|
dw 03c2h,0e300h,03d4h,05f00h,03d4h,03f01h,03d4h,04002h,03d4h,08203h
|
||||||
|
dw 03d4h,04a04h,03d4h,09a05h,03d4h,02306h,03d4h,01d07h,03d4h,00008h
|
||||||
|
dw 03d4h,06009h,03d4h,00a10h,03d4h,0ac11h,03d4h,0ff12h,03d4h,02013h
|
||||||
|
dw 03d4h,04014h,03d4h,00715h,03d4h,01a16h,03d4h,0a317h,03c4h,00101h
|
||||||
|
dw 03c4h,00e04h,03ceh,04005h,03cEh,00506h,03c0h,04110h,03c0h,00013h
|
||||||
|
dd 0
|
||||||
|
|
||||||
|
.Mode320x240
|
||||||
|
dw 03c2h,0e300h,03d4h,05f00h,03d4h,04f01h,03d4h,05002h,03d4h,08203h
|
||||||
|
dw 03d4h,05404h,03d4h,08005h,03d4h,00d06h,03d4h,03e07h,03d4h,00008h
|
||||||
|
dw 03d4h,04109h,03d4h,0ea10h,03d4h,0ac11h,03d4h,0df12h,03d4h,02813h
|
||||||
|
dw 03d4h,00014h,03d4h,0e715h,03d4h,00616h,03d4h,0e317h,03c4h,00101h
|
||||||
|
dw 03c4h,00604h,03ceh,04005h,03ceh,00506h,03c0h,04110h,03c0h,00013h
|
||||||
|
dd 0
|
||||||
|
|
||||||
|
|
||||||
|
SECTION .text
|
||||||
|
%endif
|
||||||
@@ -59,7 +59,7 @@ MAINOBJ=cfgload.o endmem.o fixsin.o init.o ui.o vcache.o water.o
|
|||||||
|
|
||||||
OBJS=${CHIPSOBJ} ${CPUOBJ} ${DOSOBJ} ${GUIOBJ} ${VIDEOBJ} ${PREOBJ} ${MAINOBJ} ${ZIPOBJ}
|
OBJS=${CHIPSOBJ} ${CPUOBJ} ${DOSOBJ} ${GUIOBJ} ${VIDEOBJ} ${PREOBJ} ${MAINOBJ} ${ZIPOBJ}
|
||||||
LIBS=-Lobj -lz -lm -lpng
|
LIBS=-Lobj -lz -lm -lpng
|
||||||
CFLAGS=-O2 -g -Wall -D__MSDOS__
|
CFLAGS=-Id:/zsnes/zlib -O2 -g -Wall -D__MSDOS__
|
||||||
ASM=nasm
|
ASM=nasm
|
||||||
ASMFLAGS=-f coff -g -D__MSDOS__
|
ASMFLAGS=-f coff -g -D__MSDOS__
|
||||||
CC=gcc
|
CC=gcc
|
||||||
@@ -123,7 +123,7 @@ ${CPUDIR}/memory.o: ${CPUDIR}/memory.asm macros.mac
|
|||||||
${CPUDIR}/dma.o: ${CPUDIR}/dma.asm macros.mac
|
${CPUDIR}/dma.o: ${CPUDIR}/dma.asm macros.mac
|
||||||
${DOSDIR}/dosintrf.o: ${DOSDIR}/dosintrf.asm macros.mac
|
${DOSDIR}/dosintrf.o: ${DOSDIR}/dosintrf.asm macros.mac
|
||||||
vcache.o:vcache.asm macros.mac
|
vcache.o:vcache.asm macros.mac
|
||||||
${DOSDIR}/initvid.o:${DOSDIR}/initvid.asm macros.mac
|
${DOSDIR}/initvid.o:${DOSDIR}/initvid.asm macros.mac ${DOSDIR}/vga.inc
|
||||||
${VIDEODIR}/makevid.o: ${VIDEODIR}/makevid.asm ${VIDEODIR}/vidmacro.mac\
|
${VIDEODIR}/makevid.o: ${VIDEODIR}/makevid.asm ${VIDEODIR}/vidmacro.mac\
|
||||||
macros.mac
|
macros.mac
|
||||||
${VIDEODIR}/makev16b.o: ${VIDEODIR}/makev16b.asm ${VIDEODIR}/vidmacro.mac\
|
${VIDEODIR}/makev16b.o: ${VIDEODIR}/makev16b.asm ${VIDEODIR}/vidmacro.mac\
|
||||||
|
|||||||
Reference in New Issue
Block a user