aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeroen Janssen <japj@xs4all.nl>2002-03-13 20:47:07 +0000
committerJeroen Janssen <japj@xs4all.nl>2002-03-13 20:47:07 +0000
commit293fbe9c067389a42aafd0159b70c332520d88a1 (patch)
tree6449ea2a589d7ceb07f076813330cf872ae0909a
parentea8fb81851222e297c0419338b539fccf7cd0aee (diff)
downloadvgabios-293fbe9c067389a42aafd0159b70c332520d88a1.tar.gz
- made LFB dependant upon define
- not implement vbe functions return failure - updated todo & docs for things after bochs 1.4
-rw-r--r--ChangeLog2
-rw-r--r--TODO14
-rw-r--r--vbe.c3
-rw-r--r--vbetables.h38
-rw-r--r--vgabios.c16
5 files changed, 65 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 41b6c33..585fa26 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,8 @@
vgabios-????
- "Jeroen Janssen" <japj@darius.demon.nl>
. Added LFB modes (to be used with the vbe-lfb patch in bochs)
+ see VBE_HAVE_LFB in vbe.c
+ . updated TODO & docs for changes after bochs 1.4
vgabios-0.3a
- "Christophe Bothamy" <cbothamy@free.fr>: Mar 10 2002
diff --git a/TODO b/TODO
index 16fd912..96de01c 100644
--- a/TODO
+++ b/TODO
@@ -35,13 +35,21 @@ v2.0
- upload the fonts to the "card" memory
- display fonts from the "card" memory (plex86/bochs vga card needs update)
+=================================================================================================
VBE:
----
Short term:
-- LFB mode support
-
+- bugfixes for bochs 1.4 support
+- LFB mode support (bochs patch available + VBE_HAVE_LFB in vbe.c)
+- implement remaining functions that can be done with DISPI 0xb0c0 interface
+ (get functions for mode?, window)
Long term:
+- extend DISPI interface (see also bochs bug [ 529554 ] unsupported VBE features DISPI update)
+ . clear / preserve display memory upon set vbe
+ . set/get logical scanline length (4f06)
+ . set/get display start (4f07)
- have plex86 host side display interface
-- support more modi
+- support more modi (16bit/32bit modi support)
- have text io functions in vbe mode
+
diff --git a/vbe.c b/vbe.c
index 02fe769..b6c8140 100644
--- a/vbe.c
+++ b/vbe.c
@@ -33,6 +33,9 @@
// defines available
+// enable LFB support (depends upon bochs-vbe-lfb patch)
+//#define VBE_HAVE_LFB
+
// disable VESA/VBE2 check in vbe info
//#define VBE2_NO_VESA_CHECK
diff --git a/vbetables.h b/vbetables.h
index 84d1957..c800ce0 100644
--- a/vbetables.h
+++ b/vbetables.h
@@ -29,7 +29,9 @@ static ModeInfoListItem mode_info_list[]=
/*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED |
VBE_MODE_ATTRIBUTE_GRAPHICS_MODE |
VBE_MODE_ATTRIBUTE_COLOR_MODE |
+#ifdef VBE_HAVE_LFB
VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
+#endif
VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_READABLE |
VBE_WINDOW_ATTRIBUTE_WRITEABLE,
@@ -63,7 +65,11 @@ static ModeInfoListItem mode_info_list[]=
/*Bit8u RsvdFieldPosition*/ 0,
/*Bit8u DirectColorModeInfo*/ 0,
// Mandatory information for VBE 2.0 and above
+#ifdef VBE_HAVE_LFB
/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
+#else
+ /*Bit32u PhysBasePtr*/ 0,
+#endif
/*Bit32u OffScreenMemOffset*/ 0,
/*Bit16u OffScreenMemSize*/ 0,
// Mandatory information for VBE 3.0 and above
@@ -92,7 +98,9 @@ static ModeInfoListItem mode_info_list[]=
/*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED |
VBE_MODE_ATTRIBUTE_GRAPHICS_MODE |
VBE_MODE_ATTRIBUTE_COLOR_MODE |
- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
+#ifdef VBE_HAVE_LFB
+ VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
+#endif
VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_READABLE |
VBE_WINDOW_ATTRIBUTE_WRITEABLE,
@@ -126,7 +134,11 @@ static ModeInfoListItem mode_info_list[]=
/*Bit8u RsvdFieldPosition*/ 0,
/*Bit8u DirectColorModeInfo*/ 0,
// Mandatory information for VBE 2.0 and above
+#ifdef VBE_HAVE_LFB
/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
+#else
+ /*Bit32u PhysBasePtr*/ 0,
+#endif
/*Bit32u OffScreenMemOffset*/ 0,
/*Bit16u OffScreenMemSize*/ 0,
// Mandatory information for VBE 3.0 and above
@@ -155,7 +167,9 @@ static ModeInfoListItem mode_info_list[]=
/*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED |
VBE_MODE_ATTRIBUTE_GRAPHICS_MODE |
VBE_MODE_ATTRIBUTE_COLOR_MODE |
- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
+#ifdef VBE_HAVE_LFB
+ VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
+#endif
VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_READABLE |
VBE_WINDOW_ATTRIBUTE_WRITEABLE,
@@ -189,7 +203,11 @@ static ModeInfoListItem mode_info_list[]=
/*Bit8u RsvdFieldPosition*/ 0,
/*Bit8u DirectColorModeInfo*/ 0,
// Mandatory information for VBE 2.0 and above
+#ifdef VBE_HAVE_LFB
/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
+#else
+ /*Bit32u PhysBasePtr*/ 0,
+#endif
/*Bit32u OffScreenMemOffset*/ 0,
/*Bit16u OffScreenMemSize*/ 0,
// Mandatory information for VBE 3.0 and above
@@ -218,7 +236,9 @@ static ModeInfoListItem mode_info_list[]=
/*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED |
VBE_MODE_ATTRIBUTE_GRAPHICS_MODE |
VBE_MODE_ATTRIBUTE_COLOR_MODE |
- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
+#ifdef VBE_HAVE_LFB
+ VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
+#endif
VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_READABLE |
VBE_WINDOW_ATTRIBUTE_WRITEABLE,
@@ -252,7 +272,11 @@ static ModeInfoListItem mode_info_list[]=
/*Bit8u RsvdFieldPosition*/ 0,
/*Bit8u DirectColorModeInfo*/ 0,
// Mandatory information for VBE 2.0 and above
+ #ifdef VBE_HAVE_LFB
/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
+#else
+ /*Bit32u PhysBasePtr*/ 0,
+#endif
/*Bit32u OffScreenMemOffset*/ 0,
/*Bit16u OffScreenMemSize*/ 0,
// Mandatory information for VBE 3.0 and above
@@ -281,7 +305,9 @@ static ModeInfoListItem mode_info_list[]=
/*Bit16u ModeAttributes*/ VBE_MODE_ATTRIBUTE_SUPPORTED |
VBE_MODE_ATTRIBUTE_GRAPHICS_MODE |
VBE_MODE_ATTRIBUTE_COLOR_MODE |
- VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
+#ifdef VBE_HAVE_LFB
+ VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE |
+#endif
VBE_MODE_ATTRIBUTE_GRAPHICS_MODE,
/*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_READABLE |
VBE_WINDOW_ATTRIBUTE_WRITEABLE,
@@ -315,7 +341,11 @@ static ModeInfoListItem mode_info_list[]=
/*Bit8u RsvdFieldPosition*/ 0,
/*Bit8u DirectColorModeInfo*/ 0,
// Mandatory information for VBE 2.0 and above
+#ifdef VBE_HAVE_LFB
/*Bit32u PhysBasePtr*/ VBE_DISPI_LFB_PHYSICAL_ADDRESS,
+#else
+ /*Bit32u PhysBasePtr*/ 0,
+#endif
/*Bit32u OffScreenMemOffset*/ 0,
/*Bit16u OffScreenMemSize*/ 0,
// Mandatory information for VBE 3.0 and above
diff --git a/vgabios.c b/vgabios.c
index e937c79..05733a1 100644
--- a/vgabios.c
+++ b/vgabios.c
@@ -710,6 +710,8 @@ static void int10_func(DI, SI, BP, SP, BX, DX, CX, AX, DS, ES, FLAGS)
#ifdef DEBUG
unimplemented();
#endif
+ // function failed
+ AX=0x100;
break;
case 0x05:
vbe_biosfn_display_window_control(&AX,BX,&DX);
@@ -719,40 +721,52 @@ static void int10_func(DI, SI, BP, SP, BX, DX, CX, AX, DS, ES, FLAGS)
#ifdef DEBUG
unimplemented();
#endif
+ // function failed
+ AX=0x100;
break;
case 0x07:
//FIXME
#ifdef DEBUG
unimplemented();
#endif
+ // function failed
+ AX=0x100;
break;
case 0x08:
//FIXME
#ifdef DEBUG
unimplemented();
#endif
+ // function failed
+ AX=0x100;
break;
case 0x09:
//FIXME
#ifdef DEBUG
unimplemented();
#endif
+ // function failed
+ AX=0x100;
break;
case 0x0A:
//FIXME
#ifdef DEBUG
unimplemented();
#endif
+ // function failed
+ AX=0x100;
break;
#ifdef DEBUG
default:
unknown();
#endif
+ // function failed
+ AX=0x100;
}
}
else {
// No VBE display
- SET_AH(0x01);
+ AX=0x0100;
}
break;
#endif