VOGONS


Reply 21 of 26, by jefferl

User metadata
Rank Newbie
Rank
Newbie

In the current CVS version still exist video mode 6
mov al,'x'
mov ah,0ah
mov bl,80h ; xor
int 10h
no have the xor's behaviour.

In AT-bios document not mention the bl register,
But in real machine behaviour make affect by bl's bit7
We like to emulate the real machine, not the document.

The below code change in int10_char.cpp resolve
my favorite 2 chinese chess game's corrupt issue.
If someone need game to debug/test this issue, I will mail to him.

If someone had the same issue can modify below code snips

========= in int10_char.cpp =========

switch(CurMode->type) {
case M_CGA4:
attr = 0x1;
break;
case M_CGA2:
// attr=(attr&0x80)|1;
break;
case M_TANDY16:
case M_EGA16:
default:
attr = 0xf;
break;
}
	//Some weird behavior of mode 6 (and 11) 
if ((CurMode->mode == 0x6)/* || (CurMode->mode==0x11)*/) attr = (attr&0x80)|1;
//(same fix for 11 fixes vgatest2, but it's not entirely correct according to wd)

Last edited by jefferl on 2008-03-19, 04:33. Edited 1 time in total.

Reply 22 of 26, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

> and use special case to process rather than to use pixel_function

Yes, the BIOS tty functions don't use setpixel at all, but using setpixel
seems easier to me.
Also the only special cases are mode6+11 i'd say, so the changes
could be done in one line (just the mode11 additionally), but i
did not test the xoring-functionality of mode11 yet.

Reply 25 of 26, by jefferl

User metadata
Rank Newbie
Rank
Newbie

I edit the post 15 ,

Re: int10 function write char xor' to current graphic screen :: 2006-1-18 @ 09:18 am
........do some modify ......
Last edited by jefferl on 2008-3-19 @ 04:33 am; edited 1 time in total

When I finish edit the post and submit it ,
I can't find this thread appear in the recently changed thread lists.