aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVolker Ruppert <info@vruppert.de>2003-11-17 21:03:42 +0000
committerVolker Ruppert <info@vruppert.de>2003-11-17 21:03:42 +0000
commitdab33735761f9650b0ae6d3c328d5de34750be00 (patch)
tree13428e81c90b2298d3afd5e47468bb9ca8dcadd3
parent9db7d0d640202ef21802f1fe7398d5ae696e624c (diff)
downloadvgabios-dab33735761f9650b0ae6d3c328d5de34750be00.tar.gz
- new VBE presence flag stored at unused BDA address 0xB9
- VBE init code rewritten - added BIOS TTY flag for VBE mode 0x0102 (TODO: scrolling) - vgabios_init_func: load and activate text font already done by set_video_mode - function biosfn_get_all_palette_reg() fixed
-rw-r--r--vbe.c14
-rw-r--r--vbetables.h1
-rw-r--r--vgabios.c16
-rw-r--r--vgatables.h1
4 files changed, 7 insertions, 25 deletions
diff --git a/vbe.c b/vbe.c
index ae2e4c1..9e345ae 100644
--- a/vbe.c
+++ b/vbe.c
@@ -323,9 +323,7 @@ static ModeInfoListItem* mode_info_find_mode(mode, using_lfb)
*/
Boolean vbe_has_vbe_display()
{
- dispi_set_id(VBE_DISPI_ID2);
-
- return (dispi_get_id()==VBE_DISPI_ID2);
+ return read_byte(BIOSMEM_SEG,BIOSMEM_VBE_FLAG);
}
/** VBE Init - Initialise the Vesa Bios Extension Code
@@ -341,16 +339,12 @@ void vbe_init()
dispi_id=inw(VBE_DISPI_IOPORT_DATA);
- if (dispi_id!=VBE_DISPI_ID0)
+ if (dispi_id==VBE_DISPI_ID0)
{
-//FIXME this results in a 'rombios.c' line panic, but it's actually a 'vbe.c' panic
-ASM_START
- HALT(__LINE__)
-ASM_END
+ write_byte(BIOSMEM_SEG,BIOSMEM_VBE_FLAG,0x01);
+ dispi_set_id(VBE_DISPI_ID2);
}
-//#ifdef DEBUG
printf("VBE Bios $Id$\n");
-//#endif
}
/** VBE Display Info - Display information on screen about the VBE
diff --git a/vbetables.h b/vbetables.h
index e9dee6f..b7ed7f9 100644
--- a/vbetables.h
+++ b/vbetables.h
@@ -234,6 +234,7 @@ static ModeInfoListItem mode_info_list[]=
// Mandatory information for all VBE revisions
/*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED |
VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE |
+ VBE_MODE_ATTRIBUTE_TTY_BIOS_SUPPORT |
VBE_MODE_ATTRIBUTE_COLOR_MODE |
VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE |
diff --git a/vgabios.c b/vgabios.c
index da20f18..187f7e5 100644
--- a/vgabios.c
+++ b/vgabios.c
@@ -236,14 +236,8 @@ vgabios_init_func:
call _init_bios_area
#ifdef VBE
- call _vbe_has_vbe_display
- cmp al, #0x00
- je init_no_vbe_display
-
;; init vbe functions
call _vbe_init
-
-init_no_vbe_display:
#endif
;; set int10 vect
@@ -256,14 +250,6 @@ init_no_vbe_display:
mov ax,#0x0003
int #0x10
-;; copy and activate 8x16 font
- mov ax, #0x1104
- mov bl, #0x00
- int #0x10
- mov ax, #0x1103
- mov bl, #0x00
- int #0x10
-
;; show info
call _display_info
@@ -1641,7 +1627,7 @@ static void biosfn_get_all_palette_reg (seg,offset) Bit16u seg;Bit16u offset;
Bit8u i;
// First the colors
- for(i=0;i<=0x10;i++)
+ for(i=0;i<0x10;i++)
{
inb(VGAREG_ACTL_RESET);
outb(VGAREG_ACTL_ADDRESS,i);
diff --git a/vgatables.h b/vgatables.h
index 7f29a13..0255fb8 100644
--- a/vgatables.h
+++ b/vgatables.h
@@ -23,6 +23,7 @@
#define BIOSMEM_MODESET_CTL 0x89
#define BIOSMEM_DCC_INDEX 0x8A
#define BIOSMEM_VS_POINTER 0xA8
+#define BIOSMEM_VBE_FLAG 0xB9
#define BIOSMEM_VBE_MODE 0xBA