diff options
author | Volker Ruppert <info@vruppert.de> | 2003-08-07 15:54:11 +0000 |
---|---|---|
committer | Volker Ruppert <info@vruppert.de> | 2003-08-07 15:54:11 +0000 |
commit | eec9fdf03f1ebf32bf8de79c7cf8e5a719a66154 (patch) | |
tree | d71be5e6a735e0e7152865c4b31987bcd4cde528 | |
parent | 1d897c018c814a821e8e0fb7d88cb0079b5b8a11 (diff) | |
download | vgabios-eec9fdf03f1ebf32bf8de79c7cf8e5a719a66154.tar.gz |
- current VBE mode now stored in BDA (unused address 0xBA)
-rw-r--r-- | vbe.c | 18 | ||||
-rw-r--r-- | vgatables.h | 1 |
2 files changed, 10 insertions, 9 deletions
@@ -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 /* |