aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVolker Ruppert <info@vruppert.de>2003-08-07 15:54:11 +0000
committerVolker Ruppert <info@vruppert.de>2003-08-07 15:54:11 +0000
commiteec9fdf03f1ebf32bf8de79c7cf8e5a719a66154 (patch)
treed71be5e6a735e0e7152865c4b31987bcd4cde528
parent1d897c018c814a821e8e0fb7d88cb0079b5b8a11 (diff)
downloadvgabios-eec9fdf03f1ebf32bf8de79c7cf8e5a719a66154.tar.gz
- current VBE mode now stored in BDA (unused address 0xBA)
-rw-r--r--vbe.c18
-rw-r--r--vgatables.h1
2 files changed, 10 insertions, 9 deletions
diff --git a/vbe.c b/vbe.c
index f7c3cd1..bc59ad6 100644
--- a/vbe.c
+++ b/vbe.c
@@ -643,7 +643,7 @@ Bit16u *AX;Bit16u BX; Bit16u ES;Bit16u DI;
dispi_set_bank(0);
dispi_set_enable(VBE_DISPI_ENABLED | no_clear | lfb_flag);
- // FIXME: store current mode in BIOS data area
+ write_word(BIOSMEM_SEG,BIOSMEM_VBE_MODE,BX);
result = 0x4f;
}
@@ -676,20 +676,20 @@ void vbe_biosfn_return_current_mode(AX, BX)
Bit16u *AX;Bit16u *BX;
{
Bit16u ss=get_SS();
- Bit16u mode=0xffff;
+ Bit16u mode;
#ifdef DEBUG
printf("VBE vbe_biosfn_return_current_mode\n");
#endif
-
+
if(dispi_get_enable())
{
- // FIXME: get current mode from BIOS data area
- }
- else
- {
- mode=read_byte(BIOSMEM_SEG,BIOSMEM_CURRENT_MODE);
- }
+ mode=read_word(BIOSMEM_SEG,BIOSMEM_VBE_MODE);
+ }
+ else
+ {
+ mode=read_byte(BIOSMEM_SEG,BIOSMEM_CURRENT_MODE);
+ }
write_word(ss, AX, 0x4f);
write_word(ss, BX, mode);
}
diff --git a/vgatables.h b/vgatables.h
index 5bf00dd..7f29a13 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_MODE 0xBA
/*