[comp.sys.amiga.tech] Parallel-Port network preliminary specs & demonstration code

dillon@POSTGRES.BERKELEY.EDU (Matt Dillon) (09/09/89)

	At the very least you can use the demo code to transfer files
    from one amiga to another via the parallel port at about 17K/sec.

	At the very most?  Maybe somebody will implement a poor man's
    network?  I will eventually make DNet work over the parallel port
    but don't count on it happenning to quickly.

	A proper cable is one which connects ONLY D0-D7 and their grounds.

	VERY ALPHA CODE! but have fun anyway.  Source included of course.
    Comments, Questions are welcome, Arguments to /dev/null :-)

	All of this is public domain. *please* use the network code however
    you want!  I am going for robustness in this release and didn't spend
    too much time optimizing the code.

					-Matt

begin 644 parnet.zoo
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
M_0(`````````````````````````````````````````````````````````
(````````_(,`
`
end

kodiak@amiga.UUCP (Robert R. Burns) (09/12/89)

In article <8909082229.AA07771@postgres.Berkeley.EDU> dillon@POSTGRES.BERKELEY.EDU (Matt Dillon) writes:
)...to transfer files from one amiga to another via the parallel port...
)
)	A proper cable is one which connects ONLY D0-D7 and their grounds.
)
)...    Comments ... welcome...

When we used the parallel port as an IO device for the Lorraine (the Amiga
prototype), we connected it's strobe & acknowledge to acknowledge & strobe
of our Sage code development machine.  Of course, we had fewer machines
than Matt in those days, so we were not trying to network it :-).

Did you consider tying the flag input to D5?  If the network is only
sporatically busy, this would allow an interrupt wake up mechanism
for prospective clients instead of having them poll it.  That would
contribute to the loading problem, though, for which I've no spec to
refer to.

- Kodiak
-- 
Bob Burns, amiga!kodiak				   _
	| /_  _|. _ |	   Commodore __		  |_) _ |_  _ )'
	|<(_)(_)|(_\|<	    /\ |  ||| _` /\	  |_)(_\| )(_\ |
	| \ Software	___/..\|\/|||__|/..\___		   Faith

dillon@POSTGRES.BERKELEY.EDU (Matt Dillon) (09/12/89)

:When we used the parallel port as an IO device for the Lorraine (the Amiga
:prototype), we connected it's strobe & acknowledge to acknowledge & strobe
:of our Sage code development machine.  Of course, we had fewer machines
:than Matt in those days, so we were not trying to network it :-).
:
:Did you consider tying the flag input to D5?  If the network is only
:sporatically busy, this would allow an interrupt wake up mechanism
:for prospective clients instead of having them poll it.  That would
:contribute to the loading problem, though, for which I've no spec to
:refer to.
:
:- Kodiak

	Ah!  That's a great idea!  Why the !@#$ didn't I think of it! Thanks!

	My first posting will just be the ND server (two machine network).
	The server will poll continuously at priority -1.  I'll post it to
	comp.sources.amiga.

	My second posting will be a new server and nddisk.device that use
	a new device 'parnet.device' which I am working on right now.  This
	device will properly implement the network (DGRAM level).

	I think I'll use your idea 'bout the flag input ... That's a cool
	idea!  D5 is used only for line aquisition and would provide a 
	great wakeup mechanism!  And it's negative edge, perfect!

	This would mean that the network would load only the machine a
	particular packet is destined for.

						-Matt

walker@sas.UUCP (Doug Walker) (09/14/89)

In article <8909082229.AA07771@postgres.Berkeley.EDU> dillon@POSTGRES.BERKELEY.EDU (Matt Dillon) writes:
>...to transfer files from one amiga to another via the parallel port...
>
Yay Matt!  I got NET: working with Matt's parallel port routines last night,
and it's FAST FAST FAST!  It is actually FASTER to do a dir opt a of df0:
over the network than locally on my 512k 1000!  I presume this is because you 
don't have to update the display.  It took 54 seconds locally on each of two
tries, and 48 and 50 seconds remotely.

The current problem is that eventually (after 15-20 minutes of heavy use) I
get a write error on the server side.  This is fatal since I didn't put any
retry capability in the first version.  Also, I can only run one direction
at a time since I always use channel 1, but I'll take care of that.

Matt, if you're listening, how do the channels work?  If I do a ParAddress(1),
then write, why do I need to send a '1' as the first parameter (which is what
parman does?)

Expect a new posting within a few days for the parallel version.  Only three
new files to the source code, plus Matt's parallel port stuff.

--Doug

dillon@POSTGRES.BERKELEY.EDU (Matt Dillon) (09/16/89)

	The assembly I distributed as Alpha *Does* have a few bugs in it.

    I have fixed this, just need to send it to the moderator now.

				-Matt

:Matt, if you're listening, how do the channels work?  If I do a ParAddress(1),
:then write, why do I need to send a '1' as the first parameter (which is what
:parman does?)

	Each host has an address.  When you send a packet only the
    receiving host is allowed to receive it.  The sender aquires the
    line and the receiver sees it is being addressed and fullfills the
    other half of the protocol.

	I will send all this stuff to the moderator....

				-Matt