From 930207e20951782f9ad51411ddce084d4b9f9d5f Mon Sep 17 00:00:00 2001 From: Sjoerd van der Berg Date: Tue, 27 Jun 2006 07:32:42 +0000 Subject: [PATCH] Add support for character fonts wrapping around segment limits Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@2662 --- src/ints/int10_char.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/ints/int10_char.cpp b/src/ints/int10_char.cpp index 8dda0539..9e8b04cb 100644 --- a/src/ints/int10_char.cpp +++ b/src/ints/int10_char.cpp @@ -16,7 +16,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* $Id: int10_char.cpp,v 1.47 2006-03-27 19:31:54 c2woody Exp $ */ +/* $Id: int10_char.cpp,v 1.48 2006-06-27 07:32:42 harekiet Exp $ */ /* Character displaying moving functions */ @@ -438,7 +438,7 @@ void INT10_ReadCharAttr(Bit16u * result,Bit8u page) { } void WriteChar(Bit16u col,Bit16u row,Bit8u page,Bit8u chr,Bit8u attr,bool useattr) { /* Externally used by the mouse routine */ - PhysPt fontdata; + RealPt fontdata; Bitu x,y; Bit8u cheight = real_readb(BIOSMEM_SEG,BIOSMEM_CHAR_HEIGHT); switch (CurMode->type) { @@ -458,14 +458,17 @@ void WriteChar(Bit16u col,Bit16u row,Bit8u page,Bit8u chr,Bit8u attr,bool useatt case M_CGA4: case M_CGA2: case M_TANDY16: - if (chr<128) fontdata=Real2Phys(RealGetVec(0x43))+chr*cheight; + if (chr<128) + fontdata=RealGetVec(0x43); else { chr-=128; - fontdata=Real2Phys(RealGetVec(0x1F))+(chr)*cheight; + fontdata=RealGetVec(0x1f); } + fontdata=RealMake(RealSeg(fontdata), RealOff(fontdata) + chr*cheight); break; default: - fontdata=Real2Phys(RealGetVec(0x43))+chr*cheight; + fontdata=RealGetVec(0x43); + fontdata=RealMake(RealSeg(fontdata), RealOff(fontdata) + chr*cheight); break; } @@ -503,7 +506,8 @@ void WriteChar(Bit16u col,Bit16u row,Bit8u page,Bit8u chr,Bit8u attr,bool useatt } for (Bit8u h=0;h