[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MiNT] No keyboard with GEM=ROM



Konrad Kokoszkiewicz wrote:
I vaguely remember that there is some keyboard vector that is not
supported in keyboard.c - i.e. the driver is supposed to pass the
processed data further, but it does not. The first versions of keyboard.c
did that, but later it has been somehow decided that this is useless.

I have had a look at keyboard stuff, and I didn't see anything that should
require something like "passing the processed data further".

However, I have seen a very ugly thing:
In sys/arch/init_intr.c, init_intr(), the ACIA vector 0x118 is replaced by
new_acia(), implemented in sys/arch/acia.S. Compared to the standard EmuTOS
routine, that one does 2 important things:

1) It ignores any MIDI data ! So does the current FreeMiNT totally break
MIDI support ?

2) It puts syskey (result of EmuTOS Kbdvbase()) into a3, then, as a side
effect, ikbdsys_handler() use it ! Very error prone.

In order to test, I have fixed 2) above and I have removed the ACIA hooking.
I kept only the IKBDSYS hooking. It works identically as before and is much
cleaner (and should not break MIDI).

The ROM GEM probably hooks onto it

I have looked at the EmuTOS sources. The VDI cleanly hooks the mouse vector
using Initmous(). The keyboard vectors are not hooked at all, the VDI simply
calls Bconstat() and Bconin() to read the keyboard. There is no ugly hack.
So I would expect it works fine with MiNT (but it doesn't).

and at the time of writing of keyboard.c, as far as I can remember, there
was not way to run the GEM from ROM (it was thought useless as well -
honestly I don't know why anyone would do that, the ROM AES is crap).

For me, the GEM=ROM feature is one of the best features of MiNT.

--
Vincent Rivière