First commit 09/04/1995
This commit is contained in:
163
SUPERVGA.ASM
Normal file
163
SUPERVGA.ASM
Normal file
@ -0,0 +1,163 @@
|
||||
|
||||
.MODEL COMPACT
|
||||
.286
|
||||
.CODE
|
||||
|
||||
BUFFER_SVGA DB 256 DUP (0)
|
||||
|
||||
PUBLIC _SET_VESA
|
||||
|
||||
_SET_VESA PROC NEAR
|
||||
PUSH BP
|
||||
MOV BP,SP
|
||||
PUSH DI
|
||||
PUSH ES
|
||||
|
||||
VER_SVGA: MOV AX,CS
|
||||
MOV ES,AX
|
||||
MOV DI,OFFSET CS:BUFFER_SVGA
|
||||
MOV AX,4F00h
|
||||
INT 10h
|
||||
MOV AX,2
|
||||
CMP WORD PTR CS:[BUFFER_SVGA+0],"EV"
|
||||
JNE NO_VESA
|
||||
CMP WORD PTR CS:[BUFFER_SVGA+2],"AS"
|
||||
JE SI_SVGA
|
||||
NO_VESA: MOV AX,0
|
||||
JMP NO_SVGA
|
||||
|
||||
SI_SVGA: MOV AH,4Fh
|
||||
MOV AL,02h
|
||||
MOV BX,[BP+4]
|
||||
INT 10h
|
||||
MOV AX,1
|
||||
|
||||
NO_SVGA: POP ES
|
||||
POP DI
|
||||
POP BP
|
||||
RET
|
||||
_SET_VESA ENDP
|
||||
|
||||
PUBLIC _CHANGE_BANK
|
||||
|
||||
_CHANGE_BANK PROC NEAR
|
||||
PUSH BP
|
||||
MOV BP,SP
|
||||
|
||||
MOV AH,4Fh
|
||||
MOV AL,05h
|
||||
MOV BX,0 ;ventana de acceso
|
||||
MOV DX,[BP+4] ;bank
|
||||
INT 10h
|
||||
|
||||
POP BP
|
||||
RET
|
||||
_CHANGE_BANK ENDP
|
||||
|
||||
PUBLIC _APAGA_PANTALLA
|
||||
|
||||
_APAGA_PANTALLA PROC NEAR
|
||||
PUSH BP
|
||||
MOV BP,SP
|
||||
PUSH SI
|
||||
PUSH DS
|
||||
|
||||
MOV CH,0
|
||||
MOV CL,0
|
||||
SIGUE_APAGANDO: MOV DX,3C8h
|
||||
MOV AL,0
|
||||
OUT DX,AL
|
||||
|
||||
MOV DX,3DAh
|
||||
ESPERA_FIN_RETR:IN AL,DX
|
||||
TEST AL,00001000b
|
||||
JNZ ESPERA_FIN_RETR
|
||||
ESPERA_INI_RETR:IN AL,DX
|
||||
TEST AL,00001000b
|
||||
JZ ESPERA_INI_RETR
|
||||
|
||||
MOV DX,3C9h
|
||||
LDS SI,[BP+4]
|
||||
OTRO_DAC: MOV AL,[SI]
|
||||
SUB AL,CH
|
||||
JGE DEC_ROJO
|
||||
MOV AL,0
|
||||
DEC_ROJO: OUT DX,AL
|
||||
MOV AL,[SI+1]
|
||||
SUB AL,CH
|
||||
JGE DEC_VERDE
|
||||
MOV AL,0
|
||||
DEC_VERDE: OUT DX,AL
|
||||
MOV AL,[SI+2]
|
||||
SUB AL,CH
|
||||
JGE DEC_AZUL
|
||||
MOV AL,0
|
||||
DEC_AZUL: OUT DX,AL
|
||||
ADD SI,3
|
||||
INC CL
|
||||
JNZ OTRO_DAC
|
||||
INC CH
|
||||
CMP CH,00111111b
|
||||
JL SIGUE_APAGANDO
|
||||
|
||||
POP DS
|
||||
POP SI
|
||||
POP BP
|
||||
RET
|
||||
_APAGA_PANTALLA ENDP
|
||||
|
||||
PUBLIC _ENCIENDE_PANTALLA
|
||||
|
||||
_ENCIENDE_PANTALLA PROC NEAR
|
||||
PUSH BP
|
||||
MOV BP,SP
|
||||
PUSH SI
|
||||
PUSH DS
|
||||
|
||||
MOV CH,00111111b
|
||||
MOV CL,0
|
||||
SIGUE_ENCENDIEN:MOV DX,3C8h
|
||||
MOV AL,0
|
||||
OUT DX,AL
|
||||
|
||||
MOV DX,3DAh
|
||||
ESPERA_FIN_RET: IN AL,DX
|
||||
TEST AL,00001000b
|
||||
JNZ ESPERA_FIN_RET
|
||||
ESPERA_INI_RET: IN AL,DX
|
||||
TEST AL,00001000b
|
||||
JZ ESPERA_INI_RET
|
||||
|
||||
MOV DX,3C9h
|
||||
LDS SI,[BP+4]
|
||||
OTR_DAC: MOV AL,[SI]
|
||||
SUB AL,CH
|
||||
JGE INC_ROJO
|
||||
MOV AL,0
|
||||
INC_ROJO: OUT DX,AL
|
||||
MOV AL,[SI+1]
|
||||
SUB AL,CH
|
||||
JGE INC_VERDE
|
||||
MOV AL,0
|
||||
INC_VERDE: OUT DX,AL
|
||||
MOV AL,[SI+2]
|
||||
SUB AL,CH
|
||||
JGE INC_AZUL
|
||||
MOV AL,0
|
||||
INC_AZUL: OUT DX,AL
|
||||
ADD SI,3
|
||||
DEC CL
|
||||
JNZ OTR_DAC
|
||||
CMP CH,00000000b
|
||||
JZ FIN_ENCENDER
|
||||
DEC CH
|
||||
JMP SIGUE_ENCENDIEN
|
||||
|
||||
FIN_ENCENDER: POP DS
|
||||
POP SI
|
||||
POP BP
|
||||
RET
|
||||
_ENCIENDE_PANTALLA ENDP
|
||||
|
||||
END
|
||||
|
Reference in New Issue
Block a user