aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVolker Ruppert <info@vruppert.de>2002-10-20 15:12:32 +0000
committerVolker Ruppert <info@vruppert.de>2002-10-20 15:12:32 +0000
commit4e3a25a7107f80e63f87cae8de52d35ddc711672 (patch)
treeb71d41c9a304532b5555cce42fc17fe2b2a5e48e
parent3d99ff40076d51eed6eb01187a9cb60813ba7f7e (diff)
downloadvgabios-4e3a25a7107f80e63f87cae8de52d35ddc711672.tar.gz
- new function set_scan_lines() for the font size change (patch from Hartmut Birr)
- cursor shape start and end must be updated in set_scan_lines() - set_scan_lines() is called by the functions 0x1110, 0x1111, 0x1112 and 0x1114 after copying the font data
-rw-r--r--vgabios.c26
1 files changed, 22 insertions, 4 deletions
diff --git a/vgabios.c b/vgabios.c
index 99ed085..8ef5640 100644
--- a/vgabios.c
+++ b/vgabios.c
@@ -1649,6 +1649,24 @@ static void release_font_access()
outw( VGAREG_GRDC_ADDRESS, 0x0e06 );
}
+static void set_scan_lines(lines) Bit8u lines;
+{
+ Bit8u crtc9;
+
+ outb(read_word(BIOSMEM_SEG,BIOSMEM_CRTC_ADDRESS), 0x09);
+ crtc9 = inb(read_word(BIOSMEM_SEG,BIOSMEM_CRTC_ADDRESS)+1);
+ crtc9 = (crtc9 & 0xe0) | (lines - 1);
+ outb(read_word(BIOSMEM_SEG,BIOSMEM_CRTC_ADDRESS)+1, crtc9);
+ if(lines==8)
+ {
+ biosfn_set_cursor_shape(0x06,0x07);
+ }
+ else
+ {
+ biosfn_set_cursor_shape(lines-4,lines-3);
+ }
+}
+
static void biosfn_load_text_user_pat (AL,ES,BP,CX,DX,BL,BH) Bit8u AL;Bit16u ES;Bit16u BP;Bit16u CX;Bit16u DX;Bit8u BL;Bit8u BH;
{
Bit16u blockaddr,dest,i,j,src;
@@ -1667,7 +1685,7 @@ static void biosfn_load_text_user_pat (AL,ES,BP,CX,DX,BL,BH) Bit8u AL;Bit16u ES;
release_font_access();
if(AL>=0x10)
{
- printf("Function 0x1110 not finished\n");
+ set_scan_lines(BH);
}
}
@@ -1689,7 +1707,7 @@ static void biosfn_load_text_8_14_pat (AL,BL) Bit8u AL;Bit8u BL;
release_font_access();
if(AL>=0x10)
{
- printf("Function 0x1111 not finished\n");
+ set_scan_lines(14);
}
}
@@ -1711,7 +1729,7 @@ static void biosfn_load_text_8_8_pat (AL,BL) Bit8u AL;Bit8u BL;
release_font_access();
if(AL>=0x10)
{
- printf("Function 0x1112 not finished\n");
+ set_scan_lines(8);
}
}
@@ -1739,7 +1757,7 @@ static void biosfn_load_text_8_16_pat (AL,BL) Bit8u AL;Bit8u BL;
release_font_access();
if(AL>=0x10)
{
- printf("Function 0x1114 not finished\n");
+ set_scan_lines(16);
}
}