Re: [hatari-devel] Hatari/EmuTOS Conflict

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


On Wednesday 12 June 2013 12:12, Nicolas Pomarède wrote:
> On 12/06/2013 00:23, Vincent Rivire wrote:
> > I see that TOS 1.2 sends the IKBD reset at 0xfc03ba. After that, it
> > waits in a CPU delay loop, then does not read anything. I guess that the
> > actual returned value will be read later by the interrupt routine, when
> > interrupts are enabled.
>
> Hello
>
> I think I found an explanation to what is happening :
>   - without patch #4566 from 9 june, we saw that emutos < 0.91 had
> problem with mouse or keyboard not responding until another reset is made
>
>   - emutos cvs includes change to wait for a byte after doing an ikbd
> reset, to be sure reset is complete before sending new commands.
>
>   - when looking at the traces, I saw that despite this, emutos still
> sent comands during the reset.
>
> ...
>
> So, what we see is that the 1st 0xf1 received that is interpreted as a
> "ikbd reset complete" doesn't come in fact from the 0x80 0x01 command,
> it comes from powering on the ikbd (when the emulation starts), which
> does an automatic reset and send 0xf1. This is the result of a hard reset..
>
> The problem is that this 0xf1 is received at the same point where emutos
> expects a byte in return to the soft reset that was just sent. Emutos
> gets a 0xf1, and considers the reset to be done. So it sends 0x1a and 0x12.
> But the soft reset is not complete in fact, as we can see we receive the
> 0xf1 later.
>
>
> When powering on, acia and ikbd are not initialized. The ikbd will
> perform an automatic reset (this is a small cpu, it can boot and init
> itself), but not the acia. This means that the ikbd will send 0xf1 on
> the serial line while this serial line is not yet initialized on the
> acia's side (0x03 and 0x96 were not written yet).
>
> On real HW, this 0xf1 should be lost, which was not the case in Hatari,
> and created later the problem we saw with emutos (note that the fix in
> emutos to wait for 0xf1 after sending a reset was needed anyway, even
> for real HW)
>
> I committed a new version that :
>   - cancel the change #4566, so acia will not default to 9600 on first
> boot. - ignore byte sent by the ikbd until the acia is correctly
> initialized with 0x03 and 0x96
>
> With this, I can boot + move mouse with emutos 0.87 or emutos cvs for
> example, without doing a reset with alt+c or alt+r.
>
> David, could you check it also works for you ?
>
> Now, Emutos should be correct regarding the byte to expect after a soft
> reset, and Hatari should be correct regarding the serial line's state
> just after a cold start.
>
>
> Nicolas

Hi Nicolas,

I tested this new Hatari with my joysticks, keyboard and mouse.
Tested OK. Excellent.

I think this fixes the problems with uncalibrated joysticks I've had
in the past too.

One more thing:

I found that ACIA_Write_CR() in hatari/src/acia.c overwrites the
Set_Line_RTS ( 1 ) made by ACIA_MasterReset( pACIA , CR )
with a Set_Line_RTS ( 0 ).

See the included patch.

Sincerely ,
David

Attachment: acia.c.diff
Description: Binary data



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