From 3a8712202e6957df2382a310327873c7c2988085 Mon Sep 17 00:00:00 2001 From: ripsaw8080 Date: Tue, 29 Mar 2016 21:08:40 +0000 Subject: [PATCH] Add support for mode 8 row copy/fill. Fixes Tandy GW-BASIC interpreter SCREEN 3 scrolling/clearing. Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3973 --- src/ints/int10_char.cpp | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/ints/int10_char.cpp b/src/ints/int10_char.cpp index 6a610f31..478fa1da 100644 --- a/src/ints/int10_char.cpp +++ b/src/ints/int10_char.cpp @@ -54,14 +54,12 @@ static void CGA4_CopyRow(Bit8u cleft,Bit8u cright,Bit8u rold,Bit8u rnew,PhysPt b static void TANDY16_CopyRow(Bit8u cleft,Bit8u cright,Bit8u rold,Bit8u rnew,PhysPt base) { Bit8u cheight = real_readb(BIOSMEM_SEG,BIOSMEM_CHAR_HEIGHT); - PhysPt dest=base+((CurMode->twidth*rnew)*(cheight/4)+cleft)*4; - PhysPt src=base+((CurMode->twidth*rold)*(cheight/4)+cleft)*4; + Bit8u banks=CurMode->twidth/10; + PhysPt dest=base+((CurMode->twidth*rnew)*(cheight/banks)+cleft)*4; + PhysPt src=base+((CurMode->twidth*rold)*(cheight/banks)+cleft)*4; Bitu copy=(cright-cleft)*4;Bitu nextline=CurMode->twidth*4; - for (Bitu i=0;itwidth*row)*(cheight/4)+cleft)*4; + Bit8u banks=CurMode->twidth/10; + PhysPt dest=base+((CurMode->twidth*row)*(cheight/banks)+cleft)*4; Bitu copy=(cright-cleft)*4;Bitu nextline=CurMode->twidth*4; attr=(attr & 0xf) | (attr & 0xf) << 4; - for (Bitu i=0;i