From 0c1d2529e0d037664c2cde7be944c23526a1cdb6 Mon Sep 17 00:00:00 2001 From: Peter Veenstra Date: Tue, 9 Sep 2003 19:25:04 +0000 Subject: [PATCH] changed various CurMode->cheight into cheight which is read from the bios. Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1242 --- src/ints/int10_char.cpp | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/src/ints/int10_char.cpp b/src/ints/int10_char.cpp index c0935a9a..a1723891 100644 --- a/src/ints/int10_char.cpp +++ b/src/ints/int10_char.cpp @@ -16,6 +16,8 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* $Id: int10_char.cpp,v 1.18 2003-09-09 19:25:04 qbix79 Exp $ */ + /* Character displaying moving functions */ #include "dosbox.h" @@ -25,10 +27,11 @@ #include "int10.h" static INLINE void CGA_CopyRow(Bit8u cleft,Bit8u cright,Bit8u rold,Bit8u rnew,PhysPt base) { - PhysPt dest=base+((CurMode->twidth*rnew)*(CurMode->cheight/2)+cleft)*2; - PhysPt src=base+((CurMode->twidth*rold)*(CurMode->cheight/2)+cleft)*2; + Bit8u cheight = real_readb(BIOSMEM_SEG,BIOSMEM_CHAR_HEIGHT); + PhysPt dest=base+((CurMode->twidth*rnew)*(cheight/2)+cleft)*2; + PhysPt src=base+((CurMode->twidth*rold)*(cheight/2)+cleft)*2; Bitu copy=(cright-cleft)*2;Bitu nextline=CurMode->twidth*2; - for (Bitu i=0;icheight/2;i++) { + for (Bitu i=0;itwidth*rnew)*CurMode->cheight+cleft; - src=base+(CurMode->twidth*rold)*CurMode->cheight+cleft; + Bit8u cheight = real_readb(BIOSMEM_SEG,BIOSMEM_CHAR_HEIGHT); + dest=base+(CurMode->twidth*rnew)*cheight+cleft; + src=base+(CurMode->twidth*rold)*cheight+cleft; Bitu nextline=CurMode->twidth; /* Setup registers correctly */ IO_Write(0x3ce,5);IO_Write(0x3cf,1); /* Memory transfer mode */ IO_Write(0x3c4,2);IO_Write(0x3c5,0xf); /* Enable all Write planes */ /* Do some copying */ Bitu rowsize=(cright-cleft); - copy=CurMode->cheight; + copy=cheight; for (;copy>0;copy--) { for (Bitu x=0;xtwidth*row)*(CurMode->cheight/2)+cleft)*2; + Bit8u cheight = real_readb(BIOSMEM_SEG,BIOSMEM_CHAR_HEIGHT); + PhysPt dest=base+((CurMode->twidth*row)*(cheight/2)+cleft)*2; Bitu copy=(cright-cleft)*2;Bitu nextline=CurMode->twidth*2; - for (Bitu i=0;icheight/2;i++) { + for (Bitu i=0;itwidth*row)*CurMode->cheight+cleft; + Bit8u cheight = real_readb(BIOSMEM_SEG,BIOSMEM_CHAR_HEIGHT); + dest=base+(CurMode->twidth*row)*cheight+cleft; Bitu nextline=CurMode->twidth; - Bitu copy=CurMode->cheight; Bitu rowsize=(cright-cleft); + Bitu copy = cheight; Bitu rowsize=(cright-cleft); for (;copy>0;copy--) { for (Bitu x=0;xtype) { case M_TEXT16: { @@ -298,20 +305,20 @@ static void WriteChar(Bit16u col,Bit16u row,Bit8u page,Bit8u chr,Bit8u attr,bool return; case M_CGA4: case M_CGA2: - if (chr<128) fontdata=Real2Phys(RealGetVec(0x43))+chr*8; + if (chr<128) fontdata=Real2Phys(RealGetVec(0x43))+chr*cheight; //was plain 8 else { chr-=128; - fontdata=Real2Phys(RealGetVec(0x1F))+(chr)*8; + fontdata=Real2Phys(RealGetVec(0x1F))+(chr)*cheight; //was plain 8 } break; default: - fontdata=Real2Phys(RealGetVec(0x43))+chr*real_readw(0x40,BIOSMEM_CHAR_HEIGHT); + fontdata=Real2Phys(RealGetVec(0x43))+chr*cheight; break; } x=8*col; - y=CurMode->cheight*row; + y=cheight*row; //TODO Check for out of bounds - for (Bit8u h=0;hcheight;h++) { + for (Bit8u h=0;h