[Coco] Re: Technical: PIA Help

Brad Grier bradgrier at cox.net
Thu Dec 1 21:09:34 EST 2005


Hi Robert,

I reached my conclusions by stepping through Mocha in debug mode. I also 
used the debugger in Jeff Vavasour's emulator (the game doesn't work 
quite right there either - it does work in David Keil's emulator). I'm 
surprised it doesn't work in MESS.

The strobing appears to be in the interrupt routine (both the write to 
$ff02 and the read of $ff00). The routine starts at $c4fe - you don't 
have to go far to see the *first* write/read of $ff02 and $ff00.

By the way, what is RTSI?

Brad



Robert Gault wrote:
> You correct in your understand of the keyboard strobing. As to the game, 
> my first question would be how do you know what the game is doing? Have 
> you disassembled the code or are you monitoring the emulated registers 
> with a built-in debugging routine.
> 
> There is a Tetris ROM image on RTSI which is 16K and works with a Coco3 
> in high res graphics and a Coco1/2 in low res graphics. A very very 
> quick scan through the code did not find the $FF02 strobing. Does the 
> store $FF02 with $FF occur during the interrupt, or is $FF00 read during 
> the interrupt, or both?
> 
> By the way, this image does not run correctly in MESS. Key presses are 
> detected but the game responds as though several wrong keys were 
> pressed. I'm not sure how or if I can test it on a real Coco without a 
> ROM pack.
> 
> Brad Grier wrote:
> 
>> Hello all,
>>
>> I'm trying to get Tetris to work in Mocha but I'm having trouble 
>> getting the emulator to recognize key presses in the game. This is the 
>> only program I've found that exhibits this behavior.
>>
>> My understanding of the CoCo PIA keyboard routine is as follows: Write 
>> a zero to the bit that corresponds to the keyboard column you're 
>> interested in (with the rest of the bits set to 1) and poke it into 
>> 0xff02. Next read 0xff00 and if a key is pressed you'll get a zero in 
>> the bit corresponding to the keyboard row.
>>
>> Tetris seems to do all of it's keyboard polling from a field sync 
>> interrupt routine. It's constantly poking 0xff into 0xff02 - normally 
>> Mocha would ignore the subsequent read at 0xff00 because no bits are 
>> zero. I've found that if I treat 0xff as a request to see if *any* key 
>> is down regardless of column, I can at least get some keys to kind of 
>> work. Maybe it all boils down to what does a 0xff into 0xff02 really 
>> do? I'm sure I'm overlooking something obvious...
>>
>> Anyway, I've been making a lot of changes to Mocha recently and this 
>> one is last on the list for the time being. That, and I like Tetris.
>>
>> Thanks,
>>
>> Brad
>> http://members.cox.net/javacoco/
>>
>>
> 




More information about the Coco mailing list