[hatari-devel] behaviour when RS232 is not emulated

[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]


Hello

some games ('Treasure Trap' and 'The Deep' for example) are writing messages or debug informations to the rs232 port. Those are not required to play the game, but the program will loop until it can successfully send the bytes.

It's not obvious for users to know that settings should be changed to enable RS232, especially since it has no real purpose (and this kind of option can confuse the user).

So, it would not be a problem if bytes written to $fffa2d were lost (RS232_TransferBytesTo() already handle this), but the problem is when reading the status in $fffa2d.

for example, this is the code in "The Deep" :

000033e2:  MOVE.B $00fffa2d,D0
000033e8:  AND.B #$80,D0
000033ec:  BEQ.B #$fffffff4 == 000033e2 (TRUE)
000033ee:  MOVE.B (A7,$0001) == $00003b8f,$00fffa2f

So, unless bit 7 in $fffa2d is set to 1 (buffer empty), this will loop forever.

In the case where rs232 is not enabled, we do :

void RS232_TSR_ReadByte(void)
{
        if (ConfigureParams.RS232.bEnableRS232)
                IoMem[0xfffa2d] |= 0x80;        /* Buffer empty */
        else
                IoMem[0xfffa2d] &= ~0x80;       /* Buffer not empty */
}

I think it would be better do always "|= 0x80" to report an empty buffer (which is more or less the case when rs232 is disabled).

This way, programs will consider bytes are always sent and games that don't require send/receive capabilities will still work without enabling rs232.


As I didn't write this part, does someone have any objection on this, any side effect I don't know ?

Regards

Nicolas



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/