Added my last two video modes to the DOS port.
This commit is contained in:
@@ -49,7 +49,7 @@ NEWSYM cfgStereoSound, db 0
|
|||||||
NEWSYM cfgguioff, db 0
|
NEWSYM cfgguioff, db 0
|
||||||
NEWSYM cfgper2exec, db 100
|
NEWSYM cfgper2exec, db 100
|
||||||
%ifdef __MSDOS__
|
%ifdef __MSDOS__
|
||||||
NEWSYM cfgcvidmode, db 3
|
NEWSYM cfgcvidmode, db 4
|
||||||
%else
|
%else
|
||||||
NEWSYM cfgcvidmode, db 1
|
NEWSYM cfgcvidmode, db 1
|
||||||
%endif
|
%endif
|
||||||
@@ -626,12 +626,13 @@ db '',13,10
|
|||||||
%ifdef __MSDOS__
|
%ifdef __MSDOS__
|
||||||
db '; Video Mode, 0 - 10',13,10
|
db '; Video Mode, 0 - 10',13,10
|
||||||
db '; 0 = 256x224x8B (MODEQ) 1 = 256x240x8B (MODEQ)',13,10
|
db '; 0 = 256x224x8B (MODEQ) 1 = 256x240x8B (MODEQ)',13,10
|
||||||
db '; 2 = 256x256x8B (MODEQ) 3 = 320x240x8B (MODEX)',13,10
|
db '; 2 = 256x256x8B (MODEQ) 3 = 320x224x8B (MODEX)',13,10
|
||||||
db '; 4 = 640x480x16B (VESA1) 5 = 320x240x8B (VESA2)',13,10
|
db '; 4 = 320x240x8B (MODEX) 5 = 320x256x8B (MODEX)',13,10
|
||||||
db '; 6 = 320x240x16B (VESA2) 7 = 320x480x8B (VESA2)',13,10
|
db '; 6 = 640x480x16B (VESA1) 7 = 320x240x8B (VESA2)',13,10
|
||||||
db '; 8 = 320x480x16B (VESA2) 9 = 512x384x8B (VESA2)',13,10
|
db '; 8 = 320x240x16B (VESA2) 9 = 320x480x8B (VESA2)',13,10
|
||||||
db '; 10 = 512x384x16B (VESA2) 11 = 640x480x8B (VESA2)',13,10
|
db '; 10 = 320x480x16B (VESA2) 11 = 512x384x8B (VESA2)',13,10
|
||||||
db '; 12 = 640x480x16B (VESA2)',13,10
|
db '; 12 = 512x384x16B (VESA2) 13 = 640x480x8B (VESA2)',13,10
|
||||||
|
db '; 14 = 640x480x16B (VESA2)',13,10
|
||||||
db '',13,10
|
db '',13,10
|
||||||
db 'VideoModeDos = %U',13,10
|
db 'VideoModeDos = %U',13,10
|
||||||
db '',13,10
|
db '',13,10
|
||||||
|
|||||||
@@ -1015,7 +1015,7 @@ NEWSYM ClearScreen
|
|||||||
SECTION .data
|
SECTION .data
|
||||||
|
|
||||||
; Total Number of Video Modes
|
; Total Number of Video Modes
|
||||||
NEWSYM NumVideoModes, dd 13
|
NEWSYM NumVideoModes, dd 15
|
||||||
|
|
||||||
; GUI Video Mode Names - Make sure that all names are of the same length
|
; GUI Video Mode Names - Make sure that all names are of the same length
|
||||||
; and end with a NULL terminator
|
; and end with a NULL terminator
|
||||||
@@ -1023,36 +1023,38 @@ NEWSYM GUIVideoModeNames
|
|||||||
db '256X224X8B MODEQ',0 ; 0
|
db '256X224X8B MODEQ',0 ; 0
|
||||||
db '256X240X8B MODEQ',0 ; 1
|
db '256X240X8B MODEQ',0 ; 1
|
||||||
db '256X256X8B MODEQ',0 ; 2
|
db '256X256X8B MODEQ',0 ; 2
|
||||||
db '320X240X8B MODEX',0 ; 3
|
db '320X224X8B MODEX',0 ; 3
|
||||||
db '640X480X16B VESA1',0 ; 4
|
db '320X240X8B MODEX',0 ; 4
|
||||||
db '320X240X8B VESA2',0 ; 5
|
db '320X256X8B MODEX',0 ; 5
|
||||||
db '320X240X16B VESA2',0 ; 6
|
db '640X480X16B VESA1',0 ; 6
|
||||||
db '320X480X8B VESA2',0 ; 7
|
db '320X240X8B VESA2',0 ; 7
|
||||||
db '320X480X16B VESA2',0 ; 8
|
db '320X240X16B VESA2',0 ; 8
|
||||||
db '512X384X8B VESA2',0 ; 9
|
db '320X480X8B VESA2',0 ; 9
|
||||||
db '512X384X16B VESA2',0 ; 10
|
db '320X480X16B VESA2',0 ; 10
|
||||||
db '640X480X8B VESA2',0 ; 11
|
db '512X384X8B VESA2',0 ; 11
|
||||||
db '640X480X16B VESA2',0 ; 12
|
db '512X384X16B VESA2',0 ; 12
|
||||||
|
db '640X480X8B VESA2',0 ; 13
|
||||||
|
db '640X480X16B VESA2',0 ; 14
|
||||||
db ' ',0
|
db ' ',0
|
||||||
|
|
||||||
; Video Mode Feature Availability (1 = Available, 0 = Not Available)
|
; Video Mode Feature Availability (1 = Available, 0 = Not Available)
|
||||||
; 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,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,1,1,0,1,1,1,1,0 ; New Graphics Mode Available
|
||||||
NEWSYM GUISLVID, db 0,0,1,0,1,0,0,1,1,0,0,1,1,0 ; Scanlines
|
NEWSYM GUISLVID, db 0,0,1,0,0,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,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,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,0,0,1,1,0 ; (Interp | Eagle)
|
||||||
NEWSYM GUIFSVID, db 0,0,0,0,0,1,1,0,0,0,0,1,1,0 ; Full Screen
|
NEWSYM GUIFSVID, db 0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0 ; Full Screen
|
||||||
NEWSYM GUISSVID, db 0,0,0,0,1,0,0,0,0,0,0,1,1,0 ; Small Screen
|
NEWSYM GUISSVID, db 0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0 ; Small Screen
|
||||||
NEWSYM GUITBVID, db 0,0,0,0,0,1,1,1,1,1,1,1,1,0 ; Triple Buffering
|
NEWSYM GUITBVID, db 0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0 ; Triple Buffering
|
||||||
NEWSYM GUIHSVID, db 0,0,0,0,0,0,0,0,1,0,0,0,1,0 ; Half/Quarter Scanlines
|
NEWSYM GUIHSVID, db 0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0 ; Half/Quarter Scanlines
|
||||||
NEWSYM GUI2xVID, db 0,0,0,0,0,0,0,0,0,0,0,0,1,0 ; 2xSaI/Super Eagle Engines
|
NEWSYM GUI2xVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0 ; 2xSaI/Super Eagle Engines
|
||||||
NEWSYM GUIWFVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; If Windows Full Screen
|
NEWSYM GUIWFVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; If Windows Full Screen
|
||||||
NEWSYM GUII2VID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Interpolation
|
NEWSYM GUII2VID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Interpolation
|
||||||
NEWSYM GUIM7VID, db 0,0,0,0,0,0,0,0,0,0,0,0,1,0 ; Interpolation
|
NEWSYM GUIM7VID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0 ; Interpolation
|
||||||
NEWSYM GUIBIFIL, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Bilinear Filtering
|
NEWSYM GUIBIFIL, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Bilinear Filtering
|
||||||
NEWSYM GUITBWVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Triple Buffering (Win)
|
NEWSYM GUITBWVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Triple Buffering (Win)
|
||||||
SECTION .text
|
SECTION .text
|
||||||
|
|
||||||
; ****************************
|
; ****************************
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ SECTION .text
|
|||||||
NEWSYM dosinitvideo2
|
NEWSYM dosinitvideo2
|
||||||
cmp byte[cvidmode],2
|
cmp byte[cvidmode],2
|
||||||
jne .nomodeq
|
jne .nomodeq
|
||||||
jmp dosinitvideo.initmodeq
|
jmp dosinitvideo.initmodeq256
|
||||||
.nomodeq
|
.nomodeq
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@@ -57,26 +57,30 @@ NEWSYM dosinitvideo
|
|||||||
cmp byte[cvidmode],1
|
cmp byte[cvidmode],1
|
||||||
je near .initmodeq240
|
je near .initmodeq240
|
||||||
cmp byte[cvidmode],2
|
cmp byte[cvidmode],2
|
||||||
je near .initmodeq
|
je near .initmodeq256
|
||||||
cmp byte[cvidmode],3
|
cmp byte[cvidmode],3
|
||||||
je near .initmodex
|
je near .initmodex224
|
||||||
cmp byte[cvidmode],4
|
cmp byte[cvidmode],4
|
||||||
je near .initvesa12640x480x16
|
je near .initmodex240
|
||||||
cmp byte[cvidmode],5
|
cmp byte[cvidmode],5
|
||||||
je near .initvesa2320x240x8
|
je near .initmodex256
|
||||||
cmp byte[cvidmode],6
|
cmp byte[cvidmode],6
|
||||||
je near .initvesa2320x240x16
|
je near .initvesa12640x480x16
|
||||||
cmp byte[cvidmode],7
|
cmp byte[cvidmode],7
|
||||||
je near .initvesa2320x480x8
|
je near .initvesa2320x240x8
|
||||||
cmp byte[cvidmode],8
|
cmp byte[cvidmode],8
|
||||||
je near .initvesa2320x480x16
|
je near .initvesa2320x240x16
|
||||||
cmp byte[cvidmode],9
|
cmp byte[cvidmode],9
|
||||||
je near .initvesa2512x384x8
|
je near .initvesa2320x480x8
|
||||||
cmp byte[cvidmode],10
|
cmp byte[cvidmode],10
|
||||||
je near .initvesa2512x384x16
|
je near .initvesa2320x480x16
|
||||||
cmp byte[cvidmode],11
|
cmp byte[cvidmode],11
|
||||||
je near .initvesa2640x480x8
|
je near .initvesa2512x384x8
|
||||||
cmp byte[cvidmode],12
|
cmp byte[cvidmode],12
|
||||||
|
je near .initvesa2512x384x16
|
||||||
|
cmp byte[cvidmode],13
|
||||||
|
je near .initvesa2640x480x8
|
||||||
|
cmp byte[cvidmode],14
|
||||||
je near .initvesa2640x480x16
|
je near .initvesa2640x480x16
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@@ -84,19 +88,7 @@ NEWSYM dosinitvideo
|
|||||||
|
|
||||||
|
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
; InitModeX Sets up 320x240 unchained mode
|
; InitModeQ 224 Sets up 256x224 chained mode
|
||||||
;*******************************************************
|
|
||||||
|
|
||||||
.initmodex
|
|
||||||
%ifdef __MSDOS__
|
|
||||||
SetVGAMode .Mode320x240
|
|
||||||
call cscopymodex
|
|
||||||
%endif
|
|
||||||
call makepal
|
|
||||||
ret
|
|
||||||
|
|
||||||
;*******************************************************
|
|
||||||
; InitModeQ224 Sets up 256x224 chained mode
|
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
|
|
||||||
.initmodeq224
|
.initmodeq224
|
||||||
@@ -108,7 +100,7 @@ NEWSYM dosinitvideo
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
; InitModeQ240 Sets up 256x240 chained mode
|
; InitModeQ 240 Sets up 256x240 chained mode
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
|
|
||||||
.initmodeq240
|
.initmodeq240
|
||||||
@@ -120,10 +112,10 @@ NEWSYM dosinitvideo
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
; InitModeQ Sets up 256x256 chained mode
|
; InitModeQ 256 Sets up 256x256 chained mode
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
|
|
||||||
.initmodeq
|
.initmodeq256
|
||||||
%ifdef __MSDOS__
|
%ifdef __MSDOS__
|
||||||
cmp byte[scanlines],1
|
cmp byte[scanlines],1
|
||||||
jne .noscanlines
|
jne .noscanlines
|
||||||
@@ -140,6 +132,44 @@ NEWSYM dosinitvideo
|
|||||||
call makepal
|
call makepal
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
;*******************************************************
|
||||||
|
; InitModeX 224 Sets up 320x224 unchained mode
|
||||||
|
;*******************************************************
|
||||||
|
|
||||||
|
.initmodex224
|
||||||
|
%ifdef __MSDOS__
|
||||||
|
SetVGAMode .Mode320x224
|
||||||
|
call cscopymodex
|
||||||
|
%endif
|
||||||
|
call makepal
|
||||||
|
ret
|
||||||
|
|
||||||
|
;*******************************************************
|
||||||
|
; InitModeX 240 Sets up 320x240 unchained mode
|
||||||
|
;*******************************************************
|
||||||
|
|
||||||
|
.initmodex240
|
||||||
|
%ifdef __MSDOS__
|
||||||
|
SetVGAMode .Mode320x240
|
||||||
|
call cscopymodex
|
||||||
|
%endif
|
||||||
|
call makepal
|
||||||
|
ret
|
||||||
|
|
||||||
|
;*******************************************************
|
||||||
|
; InitModeX 256 Sets up 320x256 unchained mode
|
||||||
|
;*******************************************************
|
||||||
|
|
||||||
|
.initmodex256
|
||||||
|
%ifdef __MSDOS__
|
||||||
|
SetVGAMode .Mode320x256
|
||||||
|
call cscopymodex
|
||||||
|
%endif
|
||||||
|
call makepal
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
; InitVESA2 320x240x8 Set up Linear 320x240x8b
|
; InitVESA2 320x240x8 Set up Linear 320x240x8b
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
|
|
||||||
|
; by kode54, stainless
|
||||||
|
|
||||||
%ifdef __MSDOS__
|
%ifdef __MSDOS__
|
||||||
%macro SetVGAMode 1
|
%macro SetVGAMode 1
|
||||||
mov byte[cbitmode],0
|
mov byte[cbitmode],0
|
||||||
@@ -97,6 +99,14 @@ SECTION .data
|
|||||||
dw 03c4h,00e04h,03ceh,04005h,03cEh,00506h,03c0h,04110h,03c0h,00013h
|
dw 03c4h,00e04h,03ceh,04005h,03cEh,00506h,03c0h,04110h,03c0h,00013h
|
||||||
dd 0
|
dd 0
|
||||||
|
|
||||||
|
.Mode320x224
|
||||||
|
dw 03c2h,0e300h,03d4h,05f00h,03d4h,04f01h,03d4h,05002h,03d4h,08203h
|
||||||
|
dw 03d4h,05404h,03d4h,08005h,03d4h,00b06h,03d4h,03e07h,03d4h,00008h
|
||||||
|
dw 03d4h,04109h,03d4h,0da10h,03d4h,09c11h,03d4h,0c012h,03d4h,02813h
|
||||||
|
dw 03d4h,00014h,03d4h,0c715h,03d4h,00416h,03d4h,0e317h,03c4h,00101h
|
||||||
|
dw 03c4h,00604h,03ceh,04005h,03ceh,00506h,03c0h,04110h,03c0h,00013h
|
||||||
|
dd 0
|
||||||
|
|
||||||
.Mode320x240
|
.Mode320x240
|
||||||
dw 03c2h,0e300h,03d4h,05f00h,03d4h,04f01h,03d4h,05002h,03d4h,08203h
|
dw 03c2h,0e300h,03d4h,05f00h,03d4h,04f01h,03d4h,05002h,03d4h,08203h
|
||||||
dw 03d4h,05404h,03d4h,08005h,03d4h,00d06h,03d4h,03e07h,03d4h,00008h
|
dw 03d4h,05404h,03d4h,08005h,03d4h,00d06h,03d4h,03e07h,03d4h,00008h
|
||||||
@@ -105,6 +115,14 @@ SECTION .data
|
|||||||
dw 03c4h,00604h,03ceh,04005h,03ceh,00506h,03c0h,04110h,03c0h,00013h
|
dw 03c4h,00604h,03ceh,04005h,03ceh,00506h,03c0h,04110h,03c0h,00013h
|
||||||
dd 0
|
dd 0
|
||||||
|
|
||||||
|
.Mode320x256
|
||||||
|
dw 03c2h,0e300h,03d4h,05f00h,03d4h,04f01h,03d4h,05002h,03d4h,08203h
|
||||||
|
dw 03d4h,05404h,03d4h,08005h,03d4h,02306h,03d4h,0b207h,03d4h,00008h
|
||||||
|
dw 03d4h,06109h,03d4h,00a10h,03d4h,0ac11h,03d4h,0ff12h,03d4h,02813h
|
||||||
|
dw 03d4h,00014h,03d4h,00715h,03d4h,01a16h,03d4h,0e317h,03c4h,00101h
|
||||||
|
dw 03c4h,00604h,03ceh,04005h,03ceh,00506h,03c0h,04110h,03c0h,00013h
|
||||||
|
dd 0
|
||||||
|
|
||||||
|
|
||||||
SECTION .text
|
SECTION .text
|
||||||
%endif
|
%endif
|
||||||
|
|||||||
@@ -198,7 +198,7 @@ int pccmdline(void)
|
|||||||
{
|
{
|
||||||
if(!hasroom) return 4;
|
if(!hasroom) return 4;
|
||||||
cvidmode=my_atoi(argv[p+1]);
|
cvidmode=my_atoi(argv[p+1]);
|
||||||
if(cvidmode > 12) return 13;
|
if(cvidmode > 14) return 13;
|
||||||
p++;
|
p++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -223,7 +223,7 @@ NEWSYM BitConv32Ptr, dd 0
|
|||||||
|
|
||||||
NEWSYM previdmode, db 0 ; previous video mode
|
NEWSYM previdmode, db 0 ; previous video mode
|
||||||
%ifdef __MSDOS__
|
%ifdef __MSDOS__
|
||||||
NEWSYM cvidmode, db 3 ; video mode, 0=320x240, 1=256x256
|
NEWSYM cvidmode, db 4 ; video mode, 0=320x240, 1=256x256
|
||||||
%else
|
%else
|
||||||
NEWSYM cvidmode, db 1 ; video mode, 0=320x240, 1=256x256
|
NEWSYM cvidmode, db 1 ; video mode, 0=320x240, 1=256x256
|
||||||
%endif
|
%endif
|
||||||
@@ -1455,12 +1455,13 @@ SECTION .data
|
|||||||
%ifndef __LINUX__
|
%ifndef __LINUX__
|
||||||
db ' -v # Select Video Mode :',13,10
|
db ' -v # Select Video Mode :',13,10
|
||||||
db ' 0 = 256x224x8B (MODEQ) 1 = 256x240x8B (MODEQ)',13,10
|
db ' 0 = 256x224x8B (MODEQ) 1 = 256x240x8B (MODEQ)',13,10
|
||||||
db ' 2 = 256x256x8B (MODEQ) 3 = 320x240x8B (MODEX)',13,10
|
db ' 2 = 256x256x8B (MODEQ) 3 = 320x224x8B (MODEX)',13,10
|
||||||
db ' 4 = 640x480x16B (VESA1) 5 = 320x240x8B (VESA2)',13,10
|
db ' 4 = 320x240x8B (MODEX) 5 = 320x256x8B (MODEX)',13,10
|
||||||
db ' 6 = 320x240x16B (VESA2) 7 = 320x480x8B (VESA2)',13,10
|
db ' 6 = 640x480x16B (VESA1) 7 = 320x240x8B (VESA2)',13,10
|
||||||
db ' 8 = 320x480x16B (VESA2) 9 = 512x384x8B (VESA2)',13,10
|
db ' 8 = 320x240x16B (VESA2) 9 = 320x480x8B (VESA2)',13,10
|
||||||
db ' 10 = 512x384x16B (VESA2) 11 = 640x480x8B (VESA2)',13,10
|
db ' 10 = 320x480x16B (VESA2) 11 = 512x384x8B (VESA2)',13,10
|
||||||
db ' 12 = 640x480x16B (VESA2)',13,10
|
db ' 12 = 512x384x16B (VESA2) 13 = 640x480x8B (VESA2)',13,10
|
||||||
|
db ' 14 = 640x480x16B (VESA2)',13,10
|
||||||
%endif
|
%endif
|
||||||
db ' -w Enable VSync',13,10
|
db ' -w Enable VSync',13,10
|
||||||
db 'Press any key to continue.',0
|
db 'Press any key to continue.',0
|
||||||
|
|||||||
@@ -271,9 +271,9 @@ NEWSYM cachevideo
|
|||||||
je .nohires
|
je .nohires
|
||||||
cmp byte[scanlines],1
|
cmp byte[scanlines],1
|
||||||
je .nohires
|
je .nohires
|
||||||
cmp byte[cvidmode],7
|
cmp byte[cvidmode],9
|
||||||
je .yeshires
|
je .yeshires
|
||||||
cmp byte[cvidmode],11
|
cmp byte[cvidmode],13
|
||||||
jne .nohires
|
jne .nohires
|
||||||
.yeshires
|
.yeshires
|
||||||
mov byte[Mode7HiRes],1
|
mov byte[Mode7HiRes],1
|
||||||
|
|||||||
@@ -224,12 +224,11 @@ PreTripleBuffer:
|
|||||||
ret
|
ret
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
; stupid fix :)
|
VidModeSize dd 0,0,0,0,0,0,320*240,320*240*2,0,320*480,320*480*2
|
||||||
VidModeSize dd 0,0,0,0,320*240,320*240*2,0,320*480,320*480*2
|
|
||||||
dd 512*384,512*384*2,640*480,640*480*2
|
dd 512*384,512*384*2,640*480,640*480*2
|
||||||
VidModeLine dd 0,0,0,0,240,240,0,480,480,384,384,480,480
|
VidModeLine dd 0,0,0,0,0,0,240,240,0,480,480,384,384,480,480
|
||||||
NEWSYM VidStartDraw, dd 0
|
NEWSYM VidStartDraw, dd 0
|
||||||
VidModeComp db 0,0,0,0,0,1,1,1,1,1,1,1,1
|
VidModeComp db 0,0,0,0,0,0,0,1,1,1,1,1,1,1,1
|
||||||
CVidStartAd db 0
|
CVidStartAd db 0
|
||||||
ApplyStart db 4
|
ApplyStart db 4
|
||||||
NEWSYM NextLineStart, dd 0
|
NEWSYM NextLineStart, dd 0
|
||||||
@@ -260,31 +259,35 @@ ScreenShow:
|
|||||||
cmp byte[debugdisble],0
|
cmp byte[debugdisble],0
|
||||||
je .debug
|
je .debug
|
||||||
cmp byte[cvidmode],2
|
cmp byte[cvidmode],2
|
||||||
je near copymodeq
|
je near copymodeq256
|
||||||
.debug
|
.debug
|
||||||
cmp byte[cvidmode],0
|
cmp byte[cvidmode],0
|
||||||
je near copymodeq224
|
je near copymodeq224
|
||||||
cmp byte[cvidmode],1
|
cmp byte[cvidmode],1
|
||||||
je near copymodeq240
|
je near copymodeq240
|
||||||
cmp byte[cvidmode],3
|
cmp byte[cvidmode],3
|
||||||
je near copymodex
|
je near copymodex224
|
||||||
cmp byte[cvidmode],4
|
cmp byte[cvidmode],4
|
||||||
je near copyvesa12640x480x16b
|
je near copymodex240
|
||||||
cmp byte[cvidmode],5
|
cmp byte[cvidmode],5
|
||||||
je near copyvesa2320x240x8b
|
je near copymodex256
|
||||||
cmp byte[cvidmode],6
|
cmp byte[cvidmode],6
|
||||||
je near copyvesa2320x240x16b
|
je near copyvesa12640x480x16b
|
||||||
cmp byte[cvidmode],7
|
cmp byte[cvidmode],7
|
||||||
je near copyvesa2320x480x8b
|
je near copyvesa2320x240x8b
|
||||||
cmp byte[cvidmode],8
|
cmp byte[cvidmode],8
|
||||||
je near copyvesa2320x480x16b
|
je near copyvesa2320x240x16b
|
||||||
cmp byte[cvidmode],9
|
cmp byte[cvidmode],9
|
||||||
je near copyvesa2512x384x8b
|
je near copyvesa2320x480x8b
|
||||||
cmp byte[cvidmode],10
|
cmp byte[cvidmode],10
|
||||||
je near copyvesa2512x384x16b
|
je near copyvesa2320x480x16b
|
||||||
cmp byte[cvidmode],11
|
cmp byte[cvidmode],11
|
||||||
je near copyvesa2640x480x8b
|
je near copyvesa2512x384x8b
|
||||||
cmp byte[cvidmode],12
|
cmp byte[cvidmode],12
|
||||||
|
je near copyvesa2512x384x16b
|
||||||
|
cmp byte[cvidmode],13
|
||||||
|
je near copyvesa2640x480x8b
|
||||||
|
cmp byte[cvidmode],14
|
||||||
je near copyvesa2640x480x16b
|
je near copyvesa2640x480x16b
|
||||||
cmp byte[curblank],40h
|
cmp byte[curblank],40h
|
||||||
je .startcopy
|
je .startcopy
|
||||||
@@ -292,7 +295,7 @@ ScreenShow:
|
|||||||
; call sounddisplay
|
; call sounddisplay
|
||||||
call hextestoutput
|
call hextestoutput
|
||||||
.startcopy
|
.startcopy
|
||||||
jmp copymodeq
|
jmp copymodeq256
|
||||||
|
|
||||||
NEWSYM dosvidpastecopyscr
|
NEWSYM dosvidpastecopyscr
|
||||||
cmp byte[curblank],40h
|
cmp byte[curblank],40h
|
||||||
@@ -308,50 +311,204 @@ ScreenShowGUI:
|
|||||||
cmp byte[cvidmode],1
|
cmp byte[cvidmode],1
|
||||||
je near copymodeq240
|
je near copymodeq240
|
||||||
cmp byte[cvidmode],2
|
cmp byte[cvidmode],2
|
||||||
je near copymodeq
|
je near copymodeq256
|
||||||
cmp byte[cvidmode],3
|
cmp byte[cvidmode],3
|
||||||
je near copymodex
|
je near copymodex224
|
||||||
cmp byte[cvidmode],4
|
cmp byte[cvidmode],4
|
||||||
je near copyvesa12640x480x16bgui
|
je near copymodex240
|
||||||
cmp byte[cvidmode],5
|
cmp byte[cvidmode],5
|
||||||
je near copyvesa2320x240x8b
|
je near copymodex256
|
||||||
cmp byte[cvidmode],6
|
cmp byte[cvidmode],6
|
||||||
je near copyvesa2320x240x16bgui
|
je near copyvesa12640x480x16bgui
|
||||||
cmp byte[cvidmode],7
|
cmp byte[cvidmode],7
|
||||||
je near copyvesa2320x480x8bgui
|
je near copyvesa2320x240x8b
|
||||||
cmp byte[cvidmode],8
|
cmp byte[cvidmode],8
|
||||||
je near copyvesa2320x480x16bgui
|
je near copyvesa2320x240x16bgui
|
||||||
cmp byte[cvidmode],9
|
cmp byte[cvidmode],9
|
||||||
je near copyvesa2512x384x8b
|
je near copyvesa2320x480x8bgui
|
||||||
cmp byte[cvidmode],10
|
cmp byte[cvidmode],10
|
||||||
je near copyvesa2512x384x16bgui
|
je near copyvesa2320x480x16bgui
|
||||||
cmp byte[cvidmode],11
|
cmp byte[cvidmode],11
|
||||||
je near copyvesa2640x480x8bgui
|
je near copyvesa2512x384x8b
|
||||||
cmp byte[cvidmode],12
|
cmp byte[cvidmode],12
|
||||||
|
je near copyvesa2512x384x16bgui
|
||||||
|
cmp byte[cvidmode],13
|
||||||
|
je near copyvesa2640x480x8bgui
|
||||||
|
cmp byte[cvidmode],14
|
||||||
je near copyvesa2640x480x16bgui
|
je near copyvesa2640x480x16bgui
|
||||||
jmp copymodeq
|
jmp copymodeq256
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
|
||||||
;*******************************************************
|
|
||||||
; CopyModeX Copies buffer into unchained 320x240
|
|
||||||
;*******************************************************
|
|
||||||
%ifdef __MSDOS__
|
%ifdef __MSDOS__
|
||||||
NEWSYM copymodex
|
;*******************************************************
|
||||||
|
; CopyModeX 224 Copies buffer into unchained 320x224
|
||||||
|
;*******************************************************
|
||||||
|
|
||||||
|
NEWSYM copymodex224
|
||||||
cmp byte[curblank],40h
|
cmp byte[curblank],40h
|
||||||
jne .startcopy
|
jne .startcopy
|
||||||
ret
|
ret
|
||||||
.startcopy
|
.startcopy
|
||||||
; select plane 1
|
|
||||||
mov dx,03C4h
|
mov dx,03C4h
|
||||||
mov ax,0102h ; set as plane 1
|
mov ax,0102h
|
||||||
|
out dx,ax
|
||||||
|
push es
|
||||||
|
mov ax,[selcA000]
|
||||||
|
mov es,ax
|
||||||
|
mov esi,[vidbuffer]
|
||||||
|
mov edi,8
|
||||||
|
add esi,16+256+32
|
||||||
|
cmp byte[whichpage],0
|
||||||
|
jne .pageb
|
||||||
|
add edi,19200
|
||||||
|
.pageb
|
||||||
|
mov [.startesi],esi
|
||||||
|
mov [.startedi],edi
|
||||||
|
mov dl,222
|
||||||
|
.loopa1
|
||||||
|
mov ecx,16
|
||||||
|
.loopb1
|
||||||
|
mov ah,[esi+12]
|
||||||
|
mov al,[esi+8]
|
||||||
|
shl eax,16
|
||||||
|
mov ah,[esi+4]
|
||||||
|
mov al,[esi+0]
|
||||||
|
mov [es:edi],eax
|
||||||
|
add esi,16
|
||||||
|
add edi,4
|
||||||
|
dec ecx
|
||||||
|
jnz .loopb1
|
||||||
|
add esi,32
|
||||||
|
add edi,16
|
||||||
|
dec dl
|
||||||
|
jnz .loopa1
|
||||||
|
mov dx,03C4h
|
||||||
|
mov ax,0202h
|
||||||
|
out dx,ax
|
||||||
|
mov esi,[.startesi]
|
||||||
|
inc esi
|
||||||
|
mov edi,[.startedi]
|
||||||
|
mov dl,222
|
||||||
|
.loopa2
|
||||||
|
mov ecx,16
|
||||||
|
.loopb2
|
||||||
|
mov ah,[esi+12]
|
||||||
|
mov al,[esi+8]
|
||||||
|
shl eax,16
|
||||||
|
mov ah,[esi+4]
|
||||||
|
mov al,[esi+0]
|
||||||
|
mov [es:edi],eax
|
||||||
|
add esi,16
|
||||||
|
add edi,4
|
||||||
|
dec ecx
|
||||||
|
jnz .loopb2
|
||||||
|
add esi,32
|
||||||
|
add edi,16
|
||||||
|
dec dl
|
||||||
|
jnz .loopa2
|
||||||
|
mov dx,03C4h
|
||||||
|
mov ax,0402h
|
||||||
|
out dx,ax
|
||||||
|
mov esi,[.startesi]
|
||||||
|
add esi,2
|
||||||
|
mov edi,[.startedi]
|
||||||
|
mov dl,222
|
||||||
|
.loopa3
|
||||||
|
mov ecx,16
|
||||||
|
.loopb3
|
||||||
|
mov ah,[esi+12]
|
||||||
|
mov al,[esi+8]
|
||||||
|
shl eax,16
|
||||||
|
mov ah,[esi+4]
|
||||||
|
mov al,[esi+0]
|
||||||
|
mov [es:edi],eax
|
||||||
|
add esi,16
|
||||||
|
add edi,4
|
||||||
|
dec ecx
|
||||||
|
jnz .loopb3
|
||||||
|
add esi,32
|
||||||
|
add edi,16
|
||||||
|
dec dl
|
||||||
|
jnz .loopa3
|
||||||
|
mov dx,03C4h
|
||||||
|
mov ax,0802h
|
||||||
|
out dx,ax
|
||||||
|
mov esi,[.startesi]
|
||||||
|
add esi,3
|
||||||
|
mov edi,[.startedi]
|
||||||
|
mov dl,222
|
||||||
|
.loopa4
|
||||||
|
mov ecx,16
|
||||||
|
.loopb4
|
||||||
|
mov ah,[esi+12]
|
||||||
|
mov al,[esi+8]
|
||||||
|
shl eax,16
|
||||||
|
mov ah,[esi+4]
|
||||||
|
mov al,[esi+0]
|
||||||
|
mov [es:edi],eax
|
||||||
|
add esi,16
|
||||||
|
add edi,4
|
||||||
|
dec ecx
|
||||||
|
jnz .loopb4
|
||||||
|
add esi,32
|
||||||
|
add edi,16
|
||||||
|
dec dl
|
||||||
|
jnz .loopa4
|
||||||
|
pop es
|
||||||
|
cmp byte[whichpage],0
|
||||||
|
jne .setpageb
|
||||||
|
mov dx,03D4h
|
||||||
|
mov al,0Ch
|
||||||
|
out dx,al
|
||||||
|
inc dx
|
||||||
|
mov al,75
|
||||||
|
out dx,al
|
||||||
|
dec dx
|
||||||
|
mov al,0Dh
|
||||||
|
out dx,al
|
||||||
|
inc dx
|
||||||
|
xor al,al
|
||||||
|
out dx,al
|
||||||
|
mov byte[whichpage],1
|
||||||
|
ret
|
||||||
|
.setpageb
|
||||||
|
mov dx,03D4h
|
||||||
|
mov al,0Ch
|
||||||
|
out dx,al
|
||||||
|
inc dx
|
||||||
|
xor al,al
|
||||||
|
out dx,al
|
||||||
|
dec dx
|
||||||
|
mov al,0Dh
|
||||||
|
out dx,al
|
||||||
|
inc dx
|
||||||
|
xor al,al
|
||||||
|
out dx,al
|
||||||
|
mov byte[whichpage],0
|
||||||
|
ret
|
||||||
|
.startesi dd 0
|
||||||
|
.startedi dd 0
|
||||||
|
|
||||||
|
;*******************************************************
|
||||||
|
; CopyModeX 240 Copies buffer into unchained 320x240
|
||||||
|
;*******************************************************
|
||||||
|
|
||||||
|
NEWSYM copymodex240
|
||||||
|
cmp byte[curblank],40h
|
||||||
|
jne .startcopy
|
||||||
|
ret
|
||||||
|
.startcopy
|
||||||
|
; select 1st plane
|
||||||
|
mov dx,03C4h
|
||||||
|
mov ax,0102h
|
||||||
out dx,ax
|
out dx,ax
|
||||||
push es
|
push es
|
||||||
mov ax,[selcA000]
|
mov ax,[selcA000]
|
||||||
mov es,ax
|
mov es,ax
|
||||||
|
|
||||||
mov esi,[vidbuffer]
|
mov esi,[vidbuffer]
|
||||||
mov edi,8 ; Draw @ Y from 9 to 247
|
mov edi,8
|
||||||
cmp word[resolutn],224
|
cmp word[resolutn],224
|
||||||
jne .res239
|
jne .res239
|
||||||
mov edi,8*80+8
|
mov edi,8*80+8
|
||||||
@@ -496,13 +653,248 @@ NEWSYM copymodex
|
|||||||
.startesi dd 0
|
.startesi dd 0
|
||||||
.startedi dd 0
|
.startedi dd 0
|
||||||
|
|
||||||
|
;*******************************************************
|
||||||
|
; CopyModeX 256 Copies buffer into unchained 320x256
|
||||||
|
;*******************************************************
|
||||||
|
|
||||||
|
NEWSYM copymodex256
|
||||||
|
cmp byte[curblank],40h
|
||||||
|
jne .startcopy
|
||||||
|
ret
|
||||||
|
.startcopy
|
||||||
|
mov dx,03C4h
|
||||||
|
mov ax,0102h
|
||||||
|
out dx,ax
|
||||||
|
push es
|
||||||
|
mov ax,[selcA000]
|
||||||
|
mov es,ax
|
||||||
|
mov esi,[vidbuffer]
|
||||||
|
mov edi,8*80+8
|
||||||
|
cmp word[resolutn],224
|
||||||
|
jne .res239
|
||||||
|
add edi,8*80
|
||||||
|
.res239
|
||||||
|
add esi,16+256+32
|
||||||
|
cmp byte[whichpage],0
|
||||||
|
jne .pageb
|
||||||
|
add edi,19200
|
||||||
|
.pageb
|
||||||
|
mov [.startesi],esi
|
||||||
|
mov [.startedi],edi
|
||||||
|
mov dl,[resolutn]
|
||||||
|
sub dl,2
|
||||||
|
.loopa1
|
||||||
|
mov ecx,16
|
||||||
|
.loopb1
|
||||||
|
mov ah,[esi+12]
|
||||||
|
mov al,[esi+8]
|
||||||
|
shl eax,16
|
||||||
|
mov ah,[esi+4]
|
||||||
|
mov al,[esi+0]
|
||||||
|
mov [es:edi],eax
|
||||||
|
add esi,16
|
||||||
|
add edi,4
|
||||||
|
dec ecx
|
||||||
|
jnz .loopb1
|
||||||
|
add esi,32
|
||||||
|
add edi,16
|
||||||
|
dec dl
|
||||||
|
jnz .loopa1
|
||||||
|
mov dx,03C4h
|
||||||
|
mov ax,0202h
|
||||||
|
out dx,ax
|
||||||
|
mov esi,[.startesi]
|
||||||
|
inc esi
|
||||||
|
mov edi,[.startedi]
|
||||||
|
mov dl,[resolutn]
|
||||||
|
sub dl,2
|
||||||
|
.loopa2
|
||||||
|
mov ecx,16
|
||||||
|
.loopb2
|
||||||
|
mov ah,[esi+12]
|
||||||
|
mov al,[esi+8]
|
||||||
|
shl eax,16
|
||||||
|
mov ah,[esi+4]
|
||||||
|
mov al,[esi+0]
|
||||||
|
mov [es:edi],eax
|
||||||
|
add esi,16
|
||||||
|
add edi,4
|
||||||
|
dec ecx
|
||||||
|
jnz .loopb2
|
||||||
|
add esi,32
|
||||||
|
add edi,16
|
||||||
|
dec dl
|
||||||
|
jnz .loopa2
|
||||||
|
mov dx,03C4h
|
||||||
|
mov ax,0402h
|
||||||
|
out dx,ax
|
||||||
|
mov esi,[.startesi]
|
||||||
|
add esi,2
|
||||||
|
mov edi,[.startedi]
|
||||||
|
mov dl,[resolutn]
|
||||||
|
sub dl,2
|
||||||
|
.loopa3
|
||||||
|
mov ecx,16
|
||||||
|
.loopb3
|
||||||
|
mov ah,[esi+12]
|
||||||
|
mov al,[esi+8]
|
||||||
|
shl eax,16
|
||||||
|
mov ah,[esi+4]
|
||||||
|
mov al,[esi+0]
|
||||||
|
mov [es:edi],eax
|
||||||
|
add esi,16
|
||||||
|
add edi,4
|
||||||
|
dec ecx
|
||||||
|
jnz .loopb3
|
||||||
|
add esi,32
|
||||||
|
add edi,16
|
||||||
|
dec dl
|
||||||
|
jnz .loopa3
|
||||||
|
mov dx,03C4h
|
||||||
|
mov ax,0802h
|
||||||
|
out dx,ax
|
||||||
|
mov esi,[.startesi]
|
||||||
|
add esi,3
|
||||||
|
mov edi,[.startedi]
|
||||||
|
mov dl,[resolutn]
|
||||||
|
sub dl,2
|
||||||
|
.loopa4
|
||||||
|
mov ecx,16
|
||||||
|
.loopb4
|
||||||
|
mov ah,[esi+12]
|
||||||
|
mov al,[esi+8]
|
||||||
|
shl eax,16
|
||||||
|
mov ah,[esi+4]
|
||||||
|
mov al,[esi+0]
|
||||||
|
mov [es:edi],eax
|
||||||
|
add esi,16
|
||||||
|
add edi,4
|
||||||
|
dec ecx
|
||||||
|
jnz .loopb4
|
||||||
|
add esi,32
|
||||||
|
add edi,16
|
||||||
|
dec dl
|
||||||
|
jnz .loopa4
|
||||||
|
pop es
|
||||||
|
cmp byte[whichpage],0
|
||||||
|
jne .setpageb
|
||||||
|
mov dx,03D4h
|
||||||
|
mov al,0Ch
|
||||||
|
out dx,al
|
||||||
|
inc dx
|
||||||
|
mov al,75
|
||||||
|
out dx,al
|
||||||
|
dec dx
|
||||||
|
mov al,0Dh
|
||||||
|
out dx,al
|
||||||
|
inc dx
|
||||||
|
xor al,al
|
||||||
|
out dx,al
|
||||||
|
mov byte[whichpage],1
|
||||||
|
ret
|
||||||
|
.setpageb
|
||||||
|
mov dx,03D4h
|
||||||
|
mov al,0Ch
|
||||||
|
out dx,al
|
||||||
|
inc dx
|
||||||
|
xor al,al
|
||||||
|
out dx,al
|
||||||
|
dec dx
|
||||||
|
mov al,0Dh
|
||||||
|
out dx,al
|
||||||
|
inc dx
|
||||||
|
xor al,al
|
||||||
|
out dx,al
|
||||||
|
mov byte[whichpage],0
|
||||||
|
ret
|
||||||
|
.startesi dd 0
|
||||||
|
.startedi dd 0
|
||||||
|
|
||||||
NEWSYM whichpage, db 0 ; active page and visual page locations
|
NEWSYM whichpage, db 0 ; active page and visual page locations
|
||||||
|
|
||||||
|
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
; CopyModeQ Copies buffer into chained 256x256
|
; CopyModeQ 224 Copies buffer into chained 256x224
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
|
|
||||||
NEWSYM copymodeq
|
NEWSYM copymodeq224
|
||||||
|
cmp byte[curblank],40h
|
||||||
|
jne .startcopy
|
||||||
|
ret
|
||||||
|
.startcopy
|
||||||
|
push es
|
||||||
|
mov ax,[selcA000]
|
||||||
|
mov es,ax
|
||||||
|
mov esi,[vidbuffer]
|
||||||
|
add esi,16+256+32
|
||||||
|
mov edi,256
|
||||||
|
mov dl,222
|
||||||
|
cmp byte[FPUCopy],2
|
||||||
|
je near .loopb
|
||||||
|
.loopa
|
||||||
|
mov ecx,64
|
||||||
|
rep movsd
|
||||||
|
add esi,32
|
||||||
|
dec dl
|
||||||
|
jnz .loopa
|
||||||
|
jmp .done
|
||||||
|
.loopb
|
||||||
|
mov ecx,16
|
||||||
|
MMXStuff
|
||||||
|
add esi,32
|
||||||
|
dec dl
|
||||||
|
jnz .loopb
|
||||||
|
emms
|
||||||
|
.done
|
||||||
|
pop es
|
||||||
|
ret
|
||||||
|
|
||||||
|
;*******************************************************
|
||||||
|
; CopyModeQ 240 Copies buffer into chained 256x240
|
||||||
|
;*******************************************************
|
||||||
|
|
||||||
|
NEWSYM copymodeq240
|
||||||
|
cmp byte[curblank],40h
|
||||||
|
jne .startcopy
|
||||||
|
ret
|
||||||
|
.startcopy
|
||||||
|
push es
|
||||||
|
mov ax,[selcA000]
|
||||||
|
mov es,ax
|
||||||
|
mov esi,[vidbuffer]
|
||||||
|
mov edi,256
|
||||||
|
cmp word[resolutn],224
|
||||||
|
jne .res239
|
||||||
|
add edi,8*256
|
||||||
|
.res239
|
||||||
|
add esi,16+256+32
|
||||||
|
mov dl,[resolutn]
|
||||||
|
sub dl,2
|
||||||
|
cmp byte[FPUCopy],2
|
||||||
|
je near .loopb
|
||||||
|
.loopa
|
||||||
|
mov ecx,64
|
||||||
|
rep movsd
|
||||||
|
add esi,32
|
||||||
|
dec dl
|
||||||
|
jnz .loopa
|
||||||
|
jmp .done
|
||||||
|
.loopb
|
||||||
|
mov ecx,16
|
||||||
|
MMXStuff
|
||||||
|
add esi,32
|
||||||
|
dec dl
|
||||||
|
jnz .loopb
|
||||||
|
emms
|
||||||
|
.done
|
||||||
|
pop es
|
||||||
|
ret
|
||||||
|
|
||||||
|
;********************************************************
|
||||||
|
; CopyModeQ 256 Copies buffer into chained 256x256
|
||||||
|
;********************************************************
|
||||||
|
|
||||||
|
NEWSYM copymodeq256
|
||||||
cmp byte[curblank],40h
|
cmp byte[curblank],40h
|
||||||
jne .startcopy
|
jne .startcopy
|
||||||
ret
|
ret
|
||||||
@@ -524,109 +916,26 @@ NEWSYM copymodeq
|
|||||||
dec dl
|
dec dl
|
||||||
dec dl
|
dec dl
|
||||||
cmp byte[FPUCopy],2
|
cmp byte[FPUCopy],2
|
||||||
je near .loopc
|
je near .loopb
|
||||||
.loopa
|
.loopa
|
||||||
mov ecx,64
|
mov ecx,64
|
||||||
rep movsd
|
rep movsd
|
||||||
add esi,32
|
add esi,32
|
||||||
dec dl
|
dec dl
|
||||||
jnz .loopa
|
jnz .loopa
|
||||||
pop es
|
jmp .done
|
||||||
ret
|
.loopb
|
||||||
|
|
||||||
.loopc
|
|
||||||
mov ecx,16
|
mov ecx,16
|
||||||
MMXStuff
|
MMXStuff
|
||||||
add esi,32
|
add esi,32
|
||||||
dec dl
|
dec dl
|
||||||
jnz .loopc
|
|
||||||
emms
|
|
||||||
pop es
|
|
||||||
ret
|
|
||||||
|
|
||||||
;*******************************************************
|
|
||||||
; CopyModeQ224 Copies buffer into chained 256x224
|
|
||||||
;*******************************************************
|
|
||||||
|
|
||||||
NEWSYM copymodeq224
|
|
||||||
cmp byte[curblank],40h ; Check for VBlank.
|
|
||||||
jne .startcopy ; OK, no VBlank...
|
|
||||||
ret
|
|
||||||
.startcopy
|
|
||||||
push es ; Backup ES register.
|
|
||||||
; mov ax,[selcA000]
|
|
||||||
; mov es,ax
|
|
||||||
mov es,[selcA000] ; Get 0xA000 selector.
|
|
||||||
mov esi,[vidbuffer] ; vidbuffer to source.
|
|
||||||
; mov ebp,[vidbufferm]
|
|
||||||
add esi,16+256+32 ; Skip top+bottom lines.
|
|
||||||
; add ebp,16+256+32
|
|
||||||
mov edi,256 ; Start at second line.
|
|
||||||
mov edx,222 ; Only copy 222 lines.
|
|
||||||
cmp byte[FPUCopy],2 ; Check for MMX enable.
|
|
||||||
je near .loopb
|
|
||||||
.loopa
|
|
||||||
mov ecx,64
|
|
||||||
rep movsd ; Copy 64 32-bit words.
|
|
||||||
add esi,32 ; Skip vidbuffer margins.
|
|
||||||
dec edx
|
|
||||||
jnz .loopa ; Loop for each line.
|
|
||||||
jmp .done
|
|
||||||
.loopb
|
|
||||||
mov ecx,16
|
|
||||||
MMXStuff ; Copy 16 64-bit words.
|
|
||||||
add esi,32 ; ...
|
|
||||||
dec edx
|
|
||||||
jnz .loopb ; ...
|
|
||||||
emms ; Empty MMX state.
|
|
||||||
.done
|
|
||||||
pop es ; Restore ES register.
|
|
||||||
ret
|
|
||||||
|
|
||||||
;*******************************************************
|
|
||||||
; CopyModeQ240 Copies buffer into chained 256x240
|
|
||||||
;*******************************************************
|
|
||||||
|
|
||||||
NEWSYM copymodeq240
|
|
||||||
cmp byte[curblank],40h
|
|
||||||
jne .startcopy
|
|
||||||
ret
|
|
||||||
.startcopy
|
|
||||||
push es
|
|
||||||
; mov ax,[selcA000]
|
|
||||||
; mov es,ax
|
|
||||||
mov es,[selcA000]
|
|
||||||
mov esi,[vidbuffer]
|
|
||||||
; mov ebp,[vidbufferm]
|
|
||||||
mov edi,256
|
|
||||||
cmp word[resolutn],224
|
|
||||||
jne .res239
|
|
||||||
add edi,8*256
|
|
||||||
.res239
|
|
||||||
add esi,16+256+32
|
|
||||||
; add ebp,16+256+32
|
|
||||||
mov edx,[resolutn]
|
|
||||||
sub edx,2
|
|
||||||
cmp byte[FPUCopy],2
|
|
||||||
je near .loopb
|
|
||||||
.loopa
|
|
||||||
mov ecx,64
|
|
||||||
rep movsd
|
|
||||||
add esi,32
|
|
||||||
dec edx
|
|
||||||
jnz .loopa
|
|
||||||
jmp .done
|
|
||||||
.loopb
|
|
||||||
mov ecx,16
|
|
||||||
MMXStuff
|
|
||||||
add esi,32
|
|
||||||
dec edx
|
|
||||||
jnz .loopb
|
jnz .loopb
|
||||||
emms
|
emms
|
||||||
.done
|
.done
|
||||||
pop es
|
pop es
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
; Copy VESA2 320x240x8b Copies buffer to 320x240x8bVBE2
|
; Copy VESA2 320x240x8b Copies buffer to 320x240x8bVBE2
|
||||||
;*******************************************************
|
;*******************************************************
|
||||||
@@ -5506,22 +5815,26 @@ NEWSYM DOSClearScreen
|
|||||||
cmp byte[cvidmode],3
|
cmp byte[cvidmode],3
|
||||||
je near cscopymodex
|
je near cscopymodex
|
||||||
cmp byte[cvidmode],4
|
cmp byte[cvidmode],4
|
||||||
je near cscopyvesa12640x480x16b
|
je near cscopymodex
|
||||||
cmp byte[cvidmode],5
|
cmp byte[cvidmode],5
|
||||||
je near cscopyvesa2320x240x8b
|
je near cscopymodex
|
||||||
cmp byte[cvidmode],6
|
cmp byte[cvidmode],6
|
||||||
je near cscopyvesa2320x240x16b
|
je near cscopyvesa12640x480x16b
|
||||||
cmp byte[cvidmode],7
|
cmp byte[cvidmode],7
|
||||||
je near cscopyvesa2320x480x8b
|
je near cscopyvesa2320x240x8b
|
||||||
cmp byte[cvidmode],8
|
cmp byte[cvidmode],8
|
||||||
je near cscopyvesa2320x480x16b
|
je near cscopyvesa2320x240x16b
|
||||||
cmp byte[cvidmode],9
|
cmp byte[cvidmode],9
|
||||||
je near cscopyvesa2512x384x8b
|
je near cscopyvesa2320x480x8b
|
||||||
cmp byte[cvidmode],10
|
cmp byte[cvidmode],10
|
||||||
je near cscopyvesa2512x384x16b
|
je near cscopyvesa2320x480x16b
|
||||||
cmp byte[cvidmode],11
|
cmp byte[cvidmode],11
|
||||||
je near cscopyvesa2640x480x8b
|
je near cscopyvesa2512x384x8b
|
||||||
cmp byte[cvidmode],12
|
cmp byte[cvidmode],12
|
||||||
|
je near cscopyvesa2512x384x16b
|
||||||
|
cmp byte[cvidmode],13
|
||||||
|
je near cscopyvesa2640x480x8b
|
||||||
|
cmp byte[cvidmode],14
|
||||||
je near cscopyvesa2640x480x16b
|
je near cscopyvesa2640x480x16b
|
||||||
%endif
|
%endif
|
||||||
ret
|
ret
|
||||||
|
|||||||
Reference in New Issue
Block a user