Subject: Re: Same problem again: 400t with Domain keyboard
To: None <joost@cadlab.de>
From: Herb Peyerl <hpeyerl@beer.org>
List: port-hp300
Date: 08/08/1995 20:36:19
Michael Joosten <joost@ori.cadlab.de>  wrote:
 > Somewhat unrelated: There doesn't seem to be a built-in way to specify the
 > timezone in /etc/rc, I put in the common SYSV method of source'ing an
 > /etc/TIMEZONE file.

I'm not exactly sure what you mean here but this is the way it's done:

lrwxr-xr-x   1 root     wheel         35 Jul  7 11:25 /etc/localtime@ -> /usr/share/zoneinfo/Canada/Mountain

 > program, where one could exchange the Domain keyboard+mouse with a HP set. Is
 > that still alive? 

That's a new one on me.  I've not heard of that but I'm not an authority either.

 > X server) support for the Domain keyboard. On a DN3000 board, I was able to
 > find out that the keyboard is attached to the Dual UART 2681. But it seems
 > that on the 400t board, the situation is quite different. No 2681 to see,
 > there is only a single 16550 for the DCA RS232 interface. Perhaps HP had
 > radically changed the keyboard interface from the original Apollo design...
 > Futhermore, the Extended Test reveals that the 'Utility Chip at 41' bears 4
 > SIOs, so it might be possible that the 2 2681 of a DN3500/4500 are integrated
 > in that ASIC.

Why does it matter which UART you use to talk to it? It's just a serial 
device.  Just as it doesn't matter to a modem whether it's plugged into a
16550, 2681, 8530, whatever..

 > Is it possible to get any information about this? Who knows about the data
 > format of the keyboard/mouse, besides being at 1200,e,8,1 ?

Here's some code I had from way back:

struct ap_translation {
    int c, value;
};

struct ap_translation table[] = {
    {0xcb, 0x0d}, {0xdb, 0x0d}, {0xfb, 0x1b}, {0xc8, 0x5c},
    {0xd8, 0x5c}, {0xf8, 0x1c}, {0xc9, 0x7c}, {0xd9, 0x7c},
    {0xf9, 0x7f}, {0x5b, 0x7b}, {0x5d, 0x7d}, {0x7b, 0x5b},
    {0x7d, 0x5d}, {0xca, 0x09}, {0xda, 0x09}, {0xfa, 0x09},   
    {0xcc, 0x2f}, {0xdc, 0x3f}, {0xfc, 0x3f}, {0xde, 0x08}, 
    {0x00, 0x00}
};          

char 
ap_translate(c)
	char c;
{
	struct ap_translation *p;

	p = ap_translation_table;

	for ( ; p->c ; p++)
		if (p->c == c) {
			c = p->value;
			break;
		}
	return(c & 0xff);
}


I didn't play with the mouse so I have no code for that.