Subject: Re: Netatalk and localtalk conectivity?
To: Brian Buhrow <buhrow@cats.ucsc.edu>
From: Erik E. Fair <fair@clock.org>
List: current-users
Date: 02/08/1999 14:24:35
There are two tricks to LocalTalk support in NetBSD, one easy, one hard:

1. programming the Zilog 8530 SCC "just so"

2. handling the fusillade of serial interrupts at 237Kb/s without otherwise
compromising the responsiveness of the system.

The two computers best suited to this are the Macintosh Quadra 900/950
(25/33 MHz mc68040) and Macintosh IIfx (40 MHz mc68030), both of whom have
m6502 CPUs on the motherboard as I/O processors (Apple ][ forever!).
Properly programmed, the IOPs can handle LocalTalk packetization, and spare
the main CPU the evil serial interrupt overhead. Alas, we have no
documentation for those IOPs, last I knew.

There were also some third-party NuBus serial interface cards with mc68000
CPUs on them as IOPs; getting one of these to do the right thing would also
deal with the overhead issue. Just a SMOP.

The quick & dirty approach in the NetBSD kernel would be to simply code
this all up at interrupt level and be done with it, system performance be
damned. Depending on system hardware configuration, you'd lose clock
interrupts and other I/O would wait while LocalTalk packets were being
received. You could probably optimize this somewhat by turning the 8530
interrupts entirely off for a packet-time when a non-local packet was
detected on the interface. Woe betide the user who put his NetBSD system on
a busy LocalTalk network, though.

If you were going to "throw away" a system to do this routing function,
then other system performance wouldn't be an issue. There are, however,
cheaper alternatives in the market (~$200 LocalTalk/Ethernet router/bridge
boxes).

Moral: serial interfaces can be bludgeoned into network interfaces, but it
ain't cheap or pretty. Remind me to tell tales of BerkNet sometime. The
current CEO of Novell wrote that one...

	Erik <fair@clock.org>