summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Ruppert <info@vruppert.de>2006-08-18 20:39:32 +0000
committerVolker Ruppert <info@vruppert.de>2006-08-18 20:39:32 +0000
commit4eefe2c313351dd185536d23218c47aeb4642fec (patch)
tree9b4c0aaf0f8fa37ad229e7499c71301cd188e54a
parent5dd7ac73163039572829dca8b7a7eedced0af1bf (diff)
- improved VGA compatible setup for >=8bpp VBE modes (CRTC doubleword mode and
GRDC shift register setting added) - now using symbolic name for CRTC address register
-rw-r--r--vbe.c28
1 files changed, 21 insertions, 7 deletions
diff --git a/vbe.c b/vbe.c
index 1462009..801c675 100644
--- a/vbe.c
+++ b/vbe.c
@@ -473,10 +473,10 @@ vga_set_virt_width:
call dispi_get_bpp
cmp al, #0x04
ja set_width_svga
- shr bx, #2
+ shr bx, #1
set_width_svga:
- shr bx, #2
- mov dx, #0x03d4
+ shr bx, #3
+ mov dx, # VGAREG_VGA_CRTC_ADDRESS
mov ah, bl
mov al, #0x13
out dx, ax
@@ -529,10 +529,9 @@ _vga_compat_setup:
mov dx, # VBE_DISPI_IOPORT_DATA
in ax, dx
push ax
- mov dx, #0x03d4
+ mov dx, # VGAREG_VGA_CRTC_ADDRESS
mov ax, #0x0011
out dx, ax
- mov dx, #0x03d4
pop ax
push ax
shr ax, #3
@@ -551,7 +550,7 @@ _vga_compat_setup:
in ax, dx
dec ax
push ax
- mov dx, #0x03d4
+ mov dx, # VGAREG_VGA_CRTC_ADDRESS
mov ah, al
mov al, #0x12
out dx, ax
@@ -572,7 +571,7 @@ bit9_clear:
out dx, al
; other settings
- mov dx, #0x03d4
+ mov dx, # VGAREG_VGA_CRTC_ADDRESS
mov ax, #0x0009
out dx, ax
mov dx, # VGAREG_ACTL_RESET
@@ -602,6 +601,13 @@ bit9_clear:
in ax, dx
cmp al, #0x08
jb vga_compat_end
+ mov dx, # VGAREG_VGA_CRTC_ADDRESS
+ mov al, #0x14
+ out dx, al
+ mov dx, # VGAREG_VGA_CRTC_DATA
+ in al, dx
+ or al, #0x40
+ out dx, al
mov dx, # VGAREG_ACTL_RESET
in al, dx
mov dx, # VGAREG_ACTL_ADDRESS
@@ -621,6 +627,14 @@ bit9_clear:
in al, dx
or al, #0x08
out dx, al
+ mov dx, # VGAREG_GRDC_ADDRESS
+ mov al, #0x05
+ out dx, al
+ mov dx, # VGAREG_GRDC_DATA
+ in al, dx
+ and al, #0x9f
+ or al, #0x40
+ out dx, al
vga_compat_end:
pop dx