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:
parent
0d72ebd7f6
commit
01c317b355
3 changed files with 10 additions and 10 deletions
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue