diff options
author | vruppert <vruppert> | 2004-07-22 18:37:29 +0000 |
---|---|---|
committer | vruppert <vruppert> | 2004-07-22 18:37:29 +0000 |
commit | fe52d8a1468e905fb4d17eec46536aabbab341da (patch) | |
tree | 3aed301969859870affeacef1931736abd574112 /vgabios | |
parent | 5f75d72a0801b0dea40a2f16f563d24ee30f4985 (diff) |
- cirrus extension: tables for mode 1280x1024x8 added
- vbe: dispi_set_xres() and dispi_set_virt_width() now modify vga compatible registers
- vbe: mode list entry for mode 800x600x4 fixed
Diffstat (limited to 'vgabios')
-rw-r--r-- | vgabios/VGABIOS-lgpl-latest.bin | bin | 32768 -> 32768 bytes | |||
-rw-r--r-- | vgabios/VGABIOS-lgpl-latest.cirrus.bin | bin | 32768 -> 32768 bytes | |||
-rw-r--r-- | vgabios/VGABIOS-lgpl-latest.cirrus.debug.bin | bin | 32768 -> 32768 bytes | |||
-rw-r--r-- | vgabios/VGABIOS-lgpl-latest.debug.bin | bin | 32768 -> 32768 bytes | |||
-rw-r--r-- | vgabios/clext.c | 21 | ||||
-rw-r--r-- | vgabios/vbe.c | 62 | ||||
-rw-r--r-- | vgabios/vbetables.h | 4 |
7 files changed, 78 insertions, 9 deletions
diff --git a/vgabios/VGABIOS-lgpl-latest.bin b/vgabios/VGABIOS-lgpl-latest.bin Binary files differindex 097bf3af..2c92a776 100644 --- a/vgabios/VGABIOS-lgpl-latest.bin +++ b/vgabios/VGABIOS-lgpl-latest.bin diff --git a/vgabios/VGABIOS-lgpl-latest.cirrus.bin b/vgabios/VGABIOS-lgpl-latest.cirrus.bin Binary files differindex 53d51ce1..a411460a 100644 --- a/vgabios/VGABIOS-lgpl-latest.cirrus.bin +++ b/vgabios/VGABIOS-lgpl-latest.cirrus.bin diff --git a/vgabios/VGABIOS-lgpl-latest.cirrus.debug.bin b/vgabios/VGABIOS-lgpl-latest.cirrus.debug.bin Binary files differindex e87423ed..bc841d09 100644 --- a/vgabios/VGABIOS-lgpl-latest.cirrus.debug.bin +++ b/vgabios/VGABIOS-lgpl-latest.cirrus.debug.bin diff --git a/vgabios/VGABIOS-lgpl-latest.debug.bin b/vgabios/VGABIOS-lgpl-latest.debug.bin Binary files differindex 6b1bc176..bc384660 100644 --- a/vgabios/VGABIOS-lgpl-latest.debug.bin +++ b/vgabios/VGABIOS-lgpl-latest.debug.bin diff --git a/vgabios/clext.c b/vgabios/clext.c index e0ff9ac1..050e2e8b 100644 --- a/vgabios/clext.c +++ b/vgabios/clext.c @@ -207,6 +207,21 @@ unsigned short ccrtc_1024x768x24[] = { 0x001a,0x321b,0x001d, 0xffff }; +/* 1280x1024x8 */ +unsigned short cseq_1280x1024x8[] = { +0x0300,0x2101,0x0f02,0x0003,0x0e04,0x1107, +0x760b,0x760c,0x760d,0x760e, +0x0412,0x0013,0x2017, +0x341b,0x341c,0x341d,0x341e, +0xffff +}; +unsigned short ccrtc_1280x1024x8[] = { +0x2911,0xc300,0x9f01,0x9f02,0x8603,0x8304,0x9405,0x2406,0xf707, +0x6009,0x000c,0x000d, +0x0310,0xff12,0xa013,0x4014,0xff15,0x2416,0xc317,0xff18, +0x001a,0x221b,0x001d, +0xffff +}; cirrus_mode_t cirrus_modes[] = @@ -251,6 +266,10 @@ cirrus_mode_t cirrus_modes[] = cseq_1024x768x24,cgraph_svgacolor,ccrtc_1024x768x24,24, 6,8,16,8,8,8,0,0,0}, + {0x6d,1280,1024,8,0x00, + cseq_1280x1024x8,cgraph_svgacolor,ccrtc_1280x1024x8,8, + 4,0,0,0,0,0,0,0,0}, + {0xfe,0,0,0,0,cseq_vga,cgraph_vga,ccrtc_vga,0, 0xff,0,0,0,0,0,0,0,0}, {0xff,0,0,0,0,0,0,0,0, @@ -292,6 +311,8 @@ unsigned short cirrus_vesa_modelist[] = { 0x117, 0x74, // 1024x768x24 //0x118, 0x79, +// 1280x1024x8 + 0x107, 0x6d, // invalid 0xffff,0xffff }; diff --git a/vgabios/vbe.c b/vgabios/vbe.c index d257d6cf..ac917546 100644 --- a/vgabios/vbe.c +++ b/vgabios/vbe.c @@ -71,7 +71,7 @@ _vbebios_product_name: .byte 0x00 _vbebios_product_revision: -.ascii "$Id: vbe.c,v 1.44 2004/05/09 20:31:30 vruppert Exp $" +.ascii "$Id: vbe.c,v 1.45 2004/07/22 18:37:29 vruppert Exp $" .byte 0x00 _vbebios_info_string: @@ -87,7 +87,7 @@ _no_vbebios_info_string: .byte 0x00 msg_vbe_init: -.ascii "VBE Bios $Id: vbe.c,v 1.44 2004/05/09 20:31:30 vruppert Exp $" +.ascii "VBE Bios $Id: vbe.c,v 1.45 2004/07/22 18:37:29 vruppert Exp $" .byte 0x0a,0x0d, 0x00 @@ -162,8 +162,37 @@ ASM_END static void dispi_set_xres(xres) Bit16u xres; { - outw(VBE_DISPI_IOPORT_INDEX,VBE_DISPI_INDEX_XRES); - outw(VBE_DISPI_IOPORT_DATA,xres); +ASM_START + push bp + mov bp, sp + push ax + push dx + + mov dx, # VBE_DISPI_IOPORT_INDEX + mov ax, # VBE_DISPI_INDEX_XRES + out dx, ax + mov dx, # VBE_DISPI_IOPORT_DATA + mov ax, 4[bp] ; xres + out dx, ax + push ax + mov dx, #0x03d4 + mov ax, #0x0011 + out dx, ax + mov dx, #0x03d4 + pop ax + push ax + shr ax, #3 + dec ax + mov ah, al + mov al, #0x01 + out dx, ax + pop ax + call vga_set_virt_width + + pop dx + pop ax + pop bp +ASM_END } static void dispi_set_yres(yres) @@ -239,9 +268,7 @@ dispi_get_enable: in ax, dx pop dx ret -ASM_END -ASM_START _dispi_set_bank: push dx push ax @@ -339,7 +366,28 @@ dispi_get_y_offset: pop dx ret +vga_set_virt_width: + push ax + push bx + push dx + mov bx, ax + call dispi_get_bpp + cmp al, #0x04 + ja set_width_svga + shr bx, #2 +set_width_svga: + shr bx, #2 + mov dx, #0x03d4 + mov ah, bl + mov al, #0x13 + out dx, ax + pop dx + pop bx + pop ax + ret + dispi_set_virt_width: + call vga_set_virt_width push dx push ax mov dx, # VBE_DISPI_IOPORT_INDEX @@ -718,9 +766,9 @@ Bit16u *AX;Bit16u BX; Bit16u ES;Bit16u DI; biosfn_set_video_mode(0x6a); } + dispi_set_bpp(cur_info->info.BitsPerPixel); dispi_set_xres(cur_info->info.XResolution); dispi_set_yres(cur_info->info.YResolution); - dispi_set_bpp(cur_info->info.BitsPerPixel); dispi_set_bank(0); dispi_set_enable(VBE_DISPI_ENABLED | no_clear | lfb_flag); diff --git a/vgabios/vbetables.h b/vgabios/vbetables.h index c9a1a796..a742ac74 100644 --- a/vgabios/vbetables.h +++ b/vgabios/vbetables.h @@ -185,10 +185,10 @@ static ModeInfoListItem mode_info_list[]= /*Bit8u YCharSize*/ 16, /*Bit8u NumberOfPlanes*/ 4, /*Bit8u BitsPerPixel*/ 4, - /*Bit8u NumberOfBanks*/ 1, + /*Bit8u NumberOfBanks*/ 16, /*Bit8u MemoryModel*/ VBE_MEMORYMODEL_PLANAR, /*Bit8u BankSize*/ 0, - /*Bit8u NumberOfImagePages*/ 0, + /*Bit8u NumberOfImagePages*/ 15, /*Bit8u Reserved_page*/ 0, // Direct Color fields (required for direct/6 and YUV/7 memory models) /*Bit8u RedMaskSize*/ 0, |