1
0
Fork 0

Add 2nd font table support to text output

Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1830
This commit is contained in:
Sjoerd van der Berg 2004-06-11 16:18:42 +00:00
parent 0d72ebd7f6
commit 01c317b355
3 changed files with 10 additions and 10 deletions

View file

@ -121,8 +121,7 @@ typedef struct {
bool double_scan_active;
Bit8u font_height;
Bit8u font[64*1024];
Bitu font1_start;
Bitu font2_start;
Bit8u * font_tables[2];
Bitu blinking;
struct {
Bit8u sline,eline;

View file

@ -133,19 +133,20 @@ static Bit8u * VGA_Draw_VGA_Line_HWMouse(Bitu vidstart, Bitu panning, Bitu line)
static Bit32u FontMask[2]={0xffffffff,0x0};
static Bit8u * VGA_TEXT_Draw_Line(Bitu vidstart,Bitu panning,Bitu line) {
Bit32u * draw=(Bit32u *)TempLine;
Bit8u * vidmem=&vga.mem.linear[vidstart];
for (Bitu cx=0;cx<vga.draw.blocks;cx++) {
Bitu chr=vidmem[cx*2];
Bitu font=vga.draw.font[chr*32+line];
Bit32u mask1=TXT_Font_Table[font>>4];
Bit32u mask2=TXT_Font_Table[font&0xf];
Bitu col=vidmem[cx*2+1];
Bitu font=vga.draw.font_tables[(col >> 3)&1][chr*32+line];
Bit32u mask1=TXT_Font_Table[font>>4] & FontMask[col >> 7];
Bit32u mask2=TXT_Font_Table[font&0xf] & FontMask[col >> 7];
Bit32u fg=TXT_FG_Table[col&0xf];
Bit32u bg=TXT_BG_Table[col>>4];
mask1&=FontMask[col >> 7];mask2&=FontMask[col >> 7];
*draw++=fg&mask1 | bg&~mask1;
*draw++=fg&mask2 | bg&~mask2;
}

View file

@ -69,10 +69,10 @@ void write_p3c5(Bitu port,Bitu val,Bitu iolen) {
case 3: /* Character Map Select */
{
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);
Bit8u font1=((val & 0x3) << 1) | ((val & 0x10) >> 4);
vga.draw.font_tables[0]=&vga.draw.font[font1*8*1024];
Bit8u font2=((val & 0xc) >> 1) | ((val & 0x20) >> 5);
vga.draw.font_tables[1]=&vga.draw.font[font2*8*1024];
}
/*
0,1,4 Selects VGA Character Map (0..7) if bit 3 of the character