Port-amiga archive

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

Re: Keyboard lockup with NetBSD5




Am 11.11.2009 um 22:07 schrieb Frank Wille:

Alexander Coers wrote:

Indeed. That's interesting. The keyboard will do that when it didn't
receive
the expected handshaking pulse. Maybe there is a handshaking
problem? And
those 2000us look quite suspiscous to me.


After reading the keyboard chapter of Amiga Intern (I know, sometimes
it is really bad, but it
covers nearly all aspects of OCS/ECS Amigas),

Yes, I admit that I have one too. ;)

But the parts which are good are just copied and translated from the
hardware reference manual.


I am quite sure that my
keyboard has a sync problem.
After sync loss the keyboard sends '1' until sync is recovered
(correct handshake). This is the 0xff value seen in the capture.

Correct. I realized that too, after reading this paragraph once again.


What puzzles me is that I didn't find any code to setup the CIA-A
timer A.
The timer has to run in continuous mode for keyboard handshaking.
[...]

Strange. I thought an OS sets all registers necessary without making
assumptions
what a bootrom did before.

That's not the only point where NetBSD/amiga relies on AmigaOS.


Uh??


Can you check the handshaking timing somehow?

Yes, there is definitely a problem! CIAA timer A is used to clock out the
handshake pulse (KDAT), after switching the serial keyboard port into
output mode.

But, timer A is frozen under NetBSD! I checked it.

Under AmigaOS, it seems to run in one-shot mode, and has to be restarted continuously (don't know who does that). When NetBSD has booted, the timer
is still in one-shot mode, but nobody restarts it.

In the latest test kernel,
 ftp://ftp.netbsd.org/pub/NetBSD/misc/phx/kbdtest4.tar.gz
I'm configuring CIAA timer A into continuous runmode, so it is running now. I also decreased the ridiculous large 2000us handshake delay to the normal
85us.

Works fine for my A3000. Please give it a test on your A1200.

Okay, this one seems to work! I typed an entire screen full of characters without problems. Can you please provide a kernel without printing the chars to /var/log/ messages?
So I can test the original timing with your latest modifications.







Home | Main Index | Thread Index | Old Index