Fix certain builds of infocom games. Add a warning when ansi is used.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@2898
This commit is contained in:
parent
d0c8ac8ec1
commit
dc18fb11dd
1 changed files with 12 additions and 4 deletions
|
@ -16,7 +16,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/* $Id: dev_con.h,v 1.30 2007-04-30 18:35:34 c2woody Exp $ */
|
||||
/* $Id: dev_con.h,v 1.31 2007-06-27 19:15:31 qbix79 Exp $ */
|
||||
|
||||
#include "dos_inc.h"
|
||||
#include "../ints/int10.h"
|
||||
|
@ -49,6 +49,7 @@ private:
|
|||
Bit16u ncols;
|
||||
Bit8s savecol;
|
||||
Bit8s saverow;
|
||||
bool warned;
|
||||
} ansi;
|
||||
};
|
||||
|
||||
|
@ -265,12 +266,18 @@ bool device_CON::Write(Bit8u * data,Bit16u * size) {
|
|||
break;
|
||||
case 'f':
|
||||
case 'H':/* Cursor Pos*/
|
||||
if(ansi.data[0]==0) ansi.data[0]=1;
|
||||
if(ansi.data[1]==0) ansi.data[1]=1;
|
||||
if(!ansi.warned) { //Inform the debugger that ansi is used.
|
||||
ansi.warned = true;
|
||||
LOG(LOG_IOCTL,LOG_WARN)("ANSI SEQUENCES USED");
|
||||
}
|
||||
/* Turn them into positions that are on the screen */
|
||||
if(ansi.data[0] == 0) ansi.data[0] = 1;
|
||||
if(ansi.data[1] == 0) ansi.data[1] = 1;
|
||||
if(ansi.data[0] > ansi.nrows) ansi.data[0] = ansi.nrows;
|
||||
if(ansi.data[1] > ansi.ncols) ansi.data[1] = ansi.ncols;
|
||||
INT10_SetCursorPos(--(ansi.data[0]),--(ansi.data[1]),page); /*ansi=1 based, int10 is 0 based */
|
||||
ClearAnsi();
|
||||
break;
|
||||
|
||||
/* cursor up down and forward and backward only change the row or the col not both */
|
||||
case 'A': /* cursor up*/
|
||||
col=CURSOR_POS_COL(page) ;
|
||||
|
@ -397,6 +404,7 @@ device_CON::device_CON() {
|
|||
ansi.nrows=real_readb(BIOSMEM_SEG,BIOSMEM_NB_ROWS) + 1;
|
||||
ansi.saverow=0;
|
||||
ansi.savecol=0;
|
||||
ansi.warned=false;
|
||||
ClearAnsi();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue