Alto Hardware Manual
Section
7:
Ethernet
49
7.0
ETHERNET
An
Ethernet
is
the principal means
of
communications between an Alto and the outside world. The
object
was
to
design a communication
system
which
could grow smoothly to accommodate several
buildings
full
of
personal computers and the
facilities
needed for their support. The Ethernet
is
a
broadcast, multi-drop, packet-switching, bit serial, digital communications network: it connects up to
256
nodes, separated by
as
much
as
1 kilometer, with a
2.94
megabits/sec channel. Control
of
the Ethernet
is
distributed among the communicating computers
to
eliminate the reliability problems
of
an active central
controller,
to
avoid a bottleneck in a
system
rich
in
parallelism, and to reduce the flxed costs which make
small systems uneconomical.
The Ethernet
is
intended
to
be anĀ· efficient,
low-level
Ā·packet transport mechanism which gives its best
efforts to delivering packets, but
it
is
not
error
free.
Even when transmitted without source-detected
interference, a packet
may
not reach its destination without error; thus, packets are delivered only with
high probability.
Stations requiring a residual error rate lower than that provided by this bare packet
transport mechanism must
follow
mutually agreed upon packet protocols.
Alto
Ethernets
come
in three pieces: the transceiver, the interface, and the microcode. The transceiver
is
a small device
which
taps into the passing Ether, inserting and extracting bits under the control
of
the
interface while disturbing the Ether
as
little
as
possible. The same device
is
used
to
connect all types
of
Ethernet interfaces
to
the Ether,
so
the transceiver design
is
not specific to the Alto, and
will
not be
described here. The
following
sections describe
the
programming characteristics
of
the Alto Ethernet,
and then the implementations.
of
the interface
a..'ld
microprogram.
7.1
Programming
Characteristics
Programs communicate
with
the interface and
the
microcode via the emulator instruction SIO and 9
reserved locations in page
1.
Word counts, buffer addresses,
etc.,
are put in the appropriate locations and
then
SIO
is
executed
with
an Ethernet command in
ACO.
The special page 1
EPLOC = 600B:
EBLOC
= 601B:
EELOC
= 602B:
ELLOC
= 603B:
EICLOC
= 604B:
EIPLOC
= 605B:
memory locations and their functions are:
~ost
location. Microcode and interface status information is posted in this
location when a command completes.
Interrupt
Qit
location. The contents
of
this location
is
ORed into NWW when
a command completes, thereby causing interrupt(s)
on
the channels
corresponding
to
the
one
bits in EBLOC.
gnd
count location. The number
of
words remaining in the main memory
buffer at command completion
is
stored here
as
part
of
the posting
operation.
Load location. This location
is
used
by
the microcode to hold a mask
of
ones shifted in from the right for generating random retransmission intervals.
ELLOC should be zeroed before starting the transmitter.
Input
fount location. The emulator program should
put
the size
of
the
input buffer (in
words)
into this location before starting the receiver.
If
a
packet arrives that
is
longer than EICLOC, the receiver will post an Input
Buffer Overrun error status.
Input
120inter
location. The emulator program should
put
a pointer to the
beginning
of
the input buffer into this location before starting the receiver.