From c32e90eabdacaa2834739fe83b9636e1b056e94c Mon Sep 17 00:00:00 2001 From: Sjoerd van der Berg Date: Wed, 28 Jan 2004 21:00:42 +0000 Subject: [PATCH] Fix CGA Start address and address range Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1619 --- src/hardware/vga_draw.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/hardware/vga_draw.cpp b/src/hardware/vga_draw.cpp index 343e3b3e..bc09bb1a 100644 --- a/src/hardware/vga_draw.cpp +++ b/src/hardware/vga_draw.cpp @@ -44,10 +44,9 @@ static Bit8u * VGA_HERC_Draw_Line(Bitu vidstart,Bitu panning,Bitu line) { } static Bit8u * VGA_CGA2_Draw_Line(Bitu vidstart,Bitu panning,Bitu line) { - Bit8u * reader=&vga.mem.linear[vidstart+(line * 8 * 1024)]; - Bit32u * draw=(Bit32u *)&VGA_DrawBuffer[0]; + line*=8*1024;Bit32u * draw=(Bit32u *)&VGA_DrawBuffer[0]; for (Bitu x=vga.draw.blocks;x>0;x--) { - Bitu val=*reader++; + Bitu val=vga.mem.linear[vidstart+line];vidstart=(vidstart+1)&0x1fff; *draw++=CGA_2_Table[val >> 4]; *draw++=CGA_2_Table[val & 0xf]; } @@ -55,10 +54,10 @@ static Bit8u * VGA_CGA2_Draw_Line(Bitu vidstart,Bitu panning,Bitu line) { } static Bit8u * VGA_CGA4_Draw_Line(Bitu vidstart,Bitu panning,Bitu line) { - Bit8u * reader=&vga.mem.linear[vidstart+(line * 8 * 1024)]; - Bit32u * draw=(Bit32u *)&VGA_DrawBuffer[0]; + line*=8*1024;Bit32u * draw=(Bit32u *)&VGA_DrawBuffer[0]; for (Bitu x=0;x> 4] | convert16[val & 0xf] << 16; *draw++=full|=full<<8; } @@ -217,6 +215,9 @@ static void VGA_VerticalTimer(void) { FontMask[1]=(vga.attr.mode_control & (vga.draw.cursor.count >> 1) & 0x8) ? 0 : 0xffffffff; break; + case M_CGA4:case M_CGA2:case M_CGA16: + vga.draw.address=(vga.draw.address*2)&0x1fff; + break; } if (RENDER_StartUpdate()) { VGA_DrawPart();