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

Re: NadaNet (was Re: brad w. Re: Ethernet & Internet on Apple 2)



Ed Eastman wrote:

>Michael J. Mahon wrote:
>> The master machine _does_ assign ID numbers.
>> 
>> The problem is that the machines must be distinguished in order
>> to communicate at all, since both arbitration and addressing
>> are based on an ID (temporary for boot, permanent after).
>> 
>> Otherwise, if two boards choose the same temporary ID, they
>> will forever attempt to communicate simultaneously and will
>> respond in lockstep to any message addressed to them,
>> preventing later disambiguation.
>> 
>> My problem was in obtaining a unique temporary ID so that
>> the master could assign a permanent one through protocols.
>
>Again my apologies as there are random thoughts...
>
>Why not have each machine have a consistent temporary ID, all boot up 
>with a temp ID of 1, then assign 'valid' IDs thereafter.  Now you are 
>thinking, what if I boot up three machines at once?
>
>Don't.  Light each board in turn.
>Turn on "master"  (#0?)

(Actually, 0 is reserved as the broadcast destination, but
your idea is perfectly clear.)

>turn on "Msg server"  (#1?)
>Turn on drone (#255 temp?)
>Wait... (Assigned valid number)
>Turn on drone... (#255 temp?)
>Wait... (assigned valid number)
>etc...n drone...
>
>Sorry this thought may not be practicle with your crate PCs, but by 
>puttting a 'reset button' on each, it could conceivably be 'easily' done 
>to cascade the 'boot' process.
>
>IE:
>Boot server and load OS.
>Boot 2nd IIe and have the server give it OS and function of "msg server".
>Boot 3rd IIe and have the server give it OS and drone function... Repeat 
>drone boot for finite number of computers.

The scheme you suggest is practical, but it is not consistent with
my desire to have a single power supply and "auto-start" style
booting for the boards in the AppleCrate.

I want to switch it on and have it come up ready to run, with as
little human interaction as possible (and it's now doing it with
all eight boards installed ;-).

I considered various "cascading" signalling schemes, to make
the physical ordering of the boards impose the GETID priority, but
the addition of a "daisy chain" between boards seemed unnecessary
if a random ID could be generated, and if an occasional temporary
ID collision could be cleaned up.

As it turns out, it is not so easy to get a random ID, and not
at all easy to clean up an ID "coincidence" if one occurs.
Perhaps I will return to the daisy chain approach at some
point.  (It has the additional value of allowing "static"
assignment of permanent IDs to boards by physical
location, which makes it a bit simpler to have a couple
of machines with video displays attached doing predictable
functions.)

The scheme I have adopted, creating unique temporary IDs
by choosing appropriate paddle timer resistors, requires
"personalizing" the boards, but not the boot ROMs. It makes
it possible to assign unique permanent IDs in a fraction of
a second, and broadcast boot all boards in another second.
(During testing, I find myself doing this a couple of times
a minute!  ;-)

I really appreciate your interest in the project, Ed.  You
have clearly internalized the problem, and it is very
interesting to hear your thoughts.

-michael

Check out amazing quality sound for 8-bit Apples on my
Home page:  http://members.aol.com/MJMahon/