From 2fd4a98dde24bd34daeb5122e33ef846b490248f Mon Sep 17 00:00:00 2001 From: Sjoerd van der Berg Date: Thu, 4 Sep 2003 15:49:00 +0000 Subject: [PATCH] Initial font selection Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1228 --- src/hardware/vga.h | 2 ++ src/hardware/vga_seq.cpp | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/hardware/vga.h b/src/hardware/vga.h index 6f928bbb..51d0edc8 100644 --- a/src/hardware/vga.h +++ b/src/hardware/vga.h @@ -115,6 +115,8 @@ typedef struct { Bitu lines; Bit8u font_height; Bit8u font[64*1024]; + Bitu font1_start; + Bitu font2_start; Bitu rows,cols; struct { Bit8u sline,eline; diff --git a/src/hardware/vga_seq.cpp b/src/hardware/vga_seq.cpp index c608cc69..4433f765 100644 --- a/src/hardware/vga_seq.cpp +++ b/src/hardware/vga_seq.cpp @@ -67,7 +67,13 @@ void write_p3c5(Bit32u port,Bit8u val) { */ break; case 3: /* Character Map Select */ - seq(character_map_select)=val; + { + seq(character_map_select)=val; + Bit8u font1=(val & 0x3) | ((val & 0x10) >> 2); + vga.draw.font1_start=((font1&3) * 16*1024) + ((font1 > 4) ? (8*1024) : 0); + Bit8u font2=((val & 0xc) >> 2) | ((val & 0x20) >> 3); + vga.draw.font2_start=((font2&3) * 16*1024) + ((font2 > 4) ? (8*1024) : 0); + } /* 0,1,4 Selects VGA Character Map (0..7) if bit 3 of the character attribute is clear.