initial commit
This commit is contained in:
commit
9ec9389bdf
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
*.o
|
||||||
|
*.err
|
||||||
|
*.exe
|
34
main.c
Normal file
34
main.c
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#include <i86.h>
|
||||||
|
#include <conio.h>
|
||||||
|
|
||||||
|
extern void __cdecl enableUnchainedVGAMode();
|
||||||
|
extern void __cdecl enableTextMode();
|
||||||
|
|
||||||
|
char far *VGA = (char*)0xA0000;
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
// activate unchained vga mode
|
||||||
|
// set up 8 very clear colors
|
||||||
|
// place some data into video memory to be latch copied
|
||||||
|
// show off the following
|
||||||
|
// * latch copies
|
||||||
|
// * masking
|
||||||
|
// * barrel shifting
|
||||||
|
|
||||||
|
int i,j;
|
||||||
|
|
||||||
|
enableUnchainedVGAMode();
|
||||||
|
|
||||||
|
outp(0x3c4, 0x02);
|
||||||
|
|
||||||
|
for (i = 0; i < 200; ++i) {
|
||||||
|
for (j = 0; j < 4; ++j) {
|
||||||
|
outp(0x3c5, 1 << j);
|
||||||
|
VGA[i] = j + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delay(5000);
|
||||||
|
|
||||||
|
enableTextMode();
|
||||||
|
}
|
10
makefile
Normal file
10
makefile
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
obj = vga.o main.o
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
wcc386 -q -bt=dos $<
|
||||||
|
|
||||||
|
.asm.o:
|
||||||
|
wasm $<
|
||||||
|
|
||||||
|
main.exe: $(obj)
|
||||||
|
wcl386 -fe=main -bt=dos -l=dos4g $(obj)
|
5
setup.sh
Normal file
5
setup.sh
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
export WATCOM=~/Applications/open-watcom-v2/rel
|
||||||
|
export INCLUDE=$WATCOM/h
|
||||||
|
export LIB=$WATCOM/lib286/dos:$WATCOM/lib286
|
||||||
|
export PATH=$WATCOM/binl64:$WATCOM/binl:$PATH
|
||||||
|
|
48
vga.asm
Normal file
48
vga.asm
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
PUBLIC _enableUnchainedVGAMode
|
||||||
|
PUBLIC _enableTextMode
|
||||||
|
|
||||||
|
DISPLAY_MODE_VGA equ 13h
|
||||||
|
DISPLAY_MODE_TEXT equ 03h
|
||||||
|
|
||||||
|
VGA_SEQUENCE_CONTROLLER_INDEX equ 0x3c4
|
||||||
|
VGA_SEQUENCE_CONTROLLER_DATA equ 0x3c5h
|
||||||
|
VGA_SEQUENCE_CONTROLLER_MEMORY_MODE equ 0x04
|
||||||
|
|
||||||
|
VGA_CRT_CONTROLLER_INDEX equ 0x03d4
|
||||||
|
VGA_CRT_CONTROLLER_DATA equ 0x03d5
|
||||||
|
VGA_CRT_CONTROLLER_UNDERLINE_LOC equ 0x14
|
||||||
|
VGA_CRT_CONTROLLER_MODE_CONTROL equ 0x17
|
||||||
|
|
||||||
|
.386
|
||||||
|
.model flat,c
|
||||||
|
|
||||||
|
.CODE
|
||||||
|
|
||||||
|
_enableUnchainedVGAMode:
|
||||||
|
mov ax,0x0013;
|
||||||
|
int 0x10
|
||||||
|
|
||||||
|
mov dx, VGA_SEQUENCE_CONTROLLER_INDEX
|
||||||
|
mov al, VGA_SEQUENCE_CONTROLLER_MEMORY_MODE
|
||||||
|
mov ah, 0x06
|
||||||
|
out dx, ax
|
||||||
|
|
||||||
|
mov dx, VGA_CRT_CONTROLLER_INDEX
|
||||||
|
mov al, VGA_CRT_CONTROLLER_MODE_CONTROL
|
||||||
|
mov ah, 0xe3
|
||||||
|
out dx, ax
|
||||||
|
|
||||||
|
mov dx, VGA_CRT_CONTROLLER_INDEX
|
||||||
|
mov al, VGA_CRT_CONTROLLER_UNDERLINE_LOC
|
||||||
|
mov ah, 0x00
|
||||||
|
out dx, ax
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
_enableTextMode:
|
||||||
|
mov ah,0h
|
||||||
|
mov al,DISPLAY_MODE_TEXT
|
||||||
|
int 10h
|
||||||
|
ret
|
||||||
|
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user