diff options
author | Volker Ruppert <info@vruppert.de> | 2003-04-18 07:23:36 +0000 |
---|---|---|
committer | Volker Ruppert <info@vruppert.de> | 2003-04-18 07:23:36 +0000 |
commit | c58361bc320f285829cfe898fdb3e8760fb2c916 (patch) | |
tree | 59bd7498473bdde49b10b856f066a83091f6a988 | |
parent | a0154ee941433e9c04ffc058cf54eaa513eaf34c (diff) | |
download | vgabios-c58361bc320f285829cfe898fdb3e8760fb2c916.tar.gz |
- applied patch #1331
* new function dispi_set_bank_farcall()
* VBE mode info item WinFuncPtr points to the new function if the flag
VBE_WINDOW_ATTRIBUTE_RELOCATABLE is set
* flag VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE added
-rw-r--r-- | vbe.c | 33 | ||||
-rw-r--r-- | vbe.h | 1 | ||||
-rw-r--r-- | vbetables.h | 26 |
3 files changed, 54 insertions, 6 deletions
@@ -192,6 +192,35 @@ static void dispi_set_bank(bank) outw(VBE_DISPI_IOPORT_DATA,bank); } +static void dispi_set_bank_farcall() +{ +ASM_START + cmp bx,#0x0100 + je dispi_set_bank_farcall_get + or bx,bx + jnz dispi_set_bank_farcall_error + push dx + mov ax,# VBE_DISPI_INDEX_BANK + mov dx,# VBE_DISPI_IOPORT_INDEX + out dx,ax + pop ax + mov dx,# VBE_DISPI_IOPORT_DATA + out dx,ax + retf +dispi_set_bank_farcall_get: + mov ax,# VBE_DISPI_INDEX_BANK + mov dx,# VBE_DISPI_IOPORT_INDEX + out dx,ax + mov dx,# VBE_DISPI_IOPORT_DATA + in ax,dx + mov dx,ax + retf +dispi_set_bank_farcall_error: + mov ax,#0x014F + retf +ASM_END +} + static void dispi_set_x_offset(offset) Bit16u offset; { @@ -510,6 +539,10 @@ Bit16u *AX;Bit16u CX; Bit16u ES;Bit16u DI; #endif memsetb(ss, &info, 0, sizeof(ModeInfoBlock)); memcpyb(ss, &info, 0xc000, &(cur_info->info), sizeof(ModeInfoBlockCompact)); + if (info.WinAAttributes & VBE_WINDOW_ATTRIBUTE_RELOCATABLE) { + info.WinFuncPtr = 0xC0000000UL; + *(Bit16u *)&(info.WinFuncPtr) = (Bit16u)(dispi_set_bank_farcall); + } result = 0x4f; } @@ -225,6 +225,7 @@ typedef struct ModeInfoBlock // Mode Attributes #define VBE_MODE_ATTRIBUTE_SUPPORTED 0x0001 +#define VBE_MODE_ATTRIBUTE_EXTENDED_INFORMATION_AVAILABLE 0x0002 #define VBE_MODE_ATTRIBUTE_TTY_BIOS_SUPPORT 0x0004 #define VBE_MODE_ATTRIBUTE_COLOR_MODE 0x0008 #define VBE_MODE_ATTRIBUTE_GRAPHICS_MODE 0x0010 diff --git a/vbetables.h b/vbetables.h index 2f2e5c5..326977d 100644 --- a/vbetables.h +++ b/vbetables.h @@ -27,6 +27,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_GRAPHICS_MODE | VBE_MODE_ATTRIBUTE_COLOR_MODE | #ifdef VBE_HAVE_LFB @@ -96,13 +97,15 @@ 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_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 | + /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | + VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, /*Bit8u WinBAttributes*/ 0, /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, @@ -165,6 +168,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_GRAPHICS_MODE | VBE_MODE_ATTRIBUTE_COLOR_MODE | #ifdef VBE_HAVE_LFB @@ -234,12 +238,13 @@ 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_GRAPHICS_MODE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_GRAPHICS_MODE, - /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_READABLE | - VBE_WINDOW_ATTRIBUTE_WRITEABLE | - VBE_WINDOW_ATTRIBUTE_RELOCATABLE, + /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | + VBE_WINDOW_ATTRIBUTE_READABLE | + VBE_WINDOW_ATTRIBUTE_WRITEABLE, /*Bit8u WinBAttributes*/ 0, /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, /*Bit16u WinSize*/ VBE_DISPI_BANK_SIZE_KB, @@ -297,13 +302,15 @@ 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_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 | + /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | + VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, /*Bit8u WinBAttributes*/ 0, /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, @@ -366,13 +373,15 @@ 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_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 | + /*Bit8u WinAAttributes*/ VBE_WINDOW_ATTRIBUTE_RELOCATABLE | + VBE_WINDOW_ATTRIBUTE_READABLE | VBE_WINDOW_ATTRIBUTE_WRITEABLE, /*Bit8u WinBAttributes*/ 0, /*Bit16u WinGranularity*/ VBE_DISPI_BANK_SIZE_KB, @@ -436,6 +445,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_GRAPHICS_MODE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | @@ -560,6 +570,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_GRAPHICS_MODE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | @@ -622,6 +633,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_GRAPHICS_MODE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | @@ -684,6 +696,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_GRAPHICS_MODE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | @@ -746,6 +759,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_GRAPHICS_MODE | VBE_MODE_ATTRIBUTE_COLOR_MODE | VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE | |