[comp.sys.encore] Annex TCP Printer ports

HMILLER@SCU.BITNET ("Henry W. Miller") (06/29/90)

        The Bureau is in the process of acquiring a number of Encores.
The unit destined to arrive here is a Multimax 310 running UMAX V.
It will be highly desirable to be able to utilize the printer attached
to the Annex as a network printer.  From what I have read, it should be
possible to spool a job to the Encore using TCP port 515, and have the
output go to the network printer.  However, it is also desirable to be
able to bypass the Encore and use the printer directly.  From what I have
read, the Encore prints to the Annex by opening a TCP connection to the
Annex on port 5000+N, where N is the port number on the Annex for the
printer.  Can someone confirm this for me?  It also appears that (from
reading the aprint code) that the Encore continues to dump 512 byte
buffers to the Annex until it's done.
 
        Is there some form of specification on how the Encore and the
Annex handle network printing?  Our eventual goal, BTW, is to allow
the Vaxes to spool to the Annex printer via a user written (i.e., me)
symbiont.
 
        Any help would be appreciated.
 
-HWM
 
----------
Henry W. Miller
Assistant Systems Manager, Mid Pacific Region
U.S. Bureau of Reclamation
2800 Cottage Way MP1100
Sacramento, CA 95825
(916) 978-5108 / FTS 460-5108
Inet:   "sanj!henrym@caldwr.water.ca.gov"
BITNET: "hmiller@scu"
UUCP:   "...caldwr!sanj!henrym"
 
"Bad guys abuse public land, good guys save it."

clyde@ut-emx.Berkeley.EDU (Clyde W. Hoover) (06/29/90)

In article <71BEEEE171DF601A63@UMNACVX.BITNET>, HMILLER@SCU.BITNET
("Henry W. Miller") writes:
|> 
|>         The Bureau is in the process of acquiring a number of Encores.
|> The unit destined to arrive here is a Multimax 310 running UMAX V.
|> It will be highly desirable to be able to utilize the printer attached
|> to the Annex as a network printer.  From what I have read, it should be
|> possible to spool a job to the Encore using TCP port 515, and have the
|> output go to the network printer.  However, it is also desirable to be
|> able to bypass the Encore and use the printer directly.  From what I have
|> read, the Encore prints to the Annex by opening a TCP connection to the
|> Annex on port 5000+N, where N is the port number on the Annex for the
|> printer.  Can someone confirm this for me?  It also appears that (from
|> reading the aprint code) that the Encore continues to dump 512 byte
|> buffers to the Annex until it's done.

First, use TCP port 7000+serial line number.  That avoids the telnet
option negoiation that Annex tries to do.  (Sends crap down the serial
line that can mess the minds of printers).

|>         Is there some form of specification on how the Encore and the
|> Annex handle network printing?  Our eventual goal, BTW, is to allow
|> the Vaxes to spool to the Annex printer via a user written (i.e., me)
|> symbiont.

If you use port 515, then there is a protocol one-way involved.  If
you go straight to port 7000+, you get a bi-directional TCP stream - no
intervention by the Annex.

	-Clyde Hoover

Shouter-To-Dead-Parrots @ Univ. of Texas Computation Center; Austin, Texas  
	clyde@emx.utexas.edu; ...!cs.utexas.edu!ut-emx!clyde

Tip #268: Don't feel insecure or inferior! Remember, you're ORGANIC!!
	  You could win an argument with almost any rock!

loverso@Xylogics.COM (John Robert LoVerso) (07/02/90)

Henry W. Miller writes:
>         The Bureau is in the process of acquiring a number of Encores.
> The unit destined to arrive here is a Multimax 310 running UMAX V.
> It will be highly desirable to be able to utilize the printer attached
> to the Annex as a network printer.  From what I have read, it should be
> possible to spool a job to the Encore using TCP port 515, and have the
> output go to the network printer.  However, it is also desirable to be
> able to bypass the Encore and use the printer directly.  From what I have
> read, the Encore prints to the Annex by opening a TCP connection to the
> Annex on port 5000+N, where N is the port number on the Annex for the
> printer.  Can someone confirm this for me?  It also appears that (from
> reading the aprint code) that the Encore continues to dump 512 byte
> buffers to the Annex until it's done.
>         Is there some form of specification on how the Encore and the
> Annex handle network printing?  Our eventual goal, BTW, is to allow
> the Vaxes to spool to the Annex printer via a user written (i.e., me)
> symbiont.

You can dump data to printers connected to an Annex by several ways.
One is the Annex LPD (as used by "aprint" and/or the supplied diffs
for BSD LPD).  Its main disadvantage is that it can only be used for
unidirectional data.  Its main advantages are the simplicity (usually
you *are* only sending unidirectional data!) and the fact that it is
still the only way to talk to the parallel port.  (This is a major
limitation I had hoped would be fixed in either R5.0 or R6.0 by allowing
access to the parallel port via the port server and/or direct mapped TCP
port).

There is no limitation to the "buffer size" used here.  aprint just uses
BUFSIZ blocks; never-the-less, these bytes are just being sent over a TCP
stream and as such, there is no concept of blocking on the wire (or in
the protocol).  The protocol used is fairly simple but has some wrinkles
due to the use of OOB data.  It should be fairly obvious from aprint.c.
It is not otherwise documented because that would then cause it to be
a required/supported item forever.  As it is now, the "aprint" interface
can be pasted onto a program like "rtelnet" (described below), and then
this special-case interface would be able to go away (always a big win).

A second way is by using a direct mapped TCP port (and/or the port server).
This is by using a TCP connection to either a 5000+N or 7000+N port.  The
5000 port gets you TELNET while the 7000 port gets you a plain TCP stream.
Using TELNET is good because then things like a TELNET timing mark can be
used to make sure that data has been flushed out the serial port.  This can
be advantageous to just half-closing the TCP connection.

To send data to a printer, for the 7000+N port you'd just be able to
send the un-modified data stream to the Annex.  For the 5000+N port, you'd
have to be sure to follow TELNET specifications, such as doubling IACs,
adding a NUL after a CR, and responding to option negotiations.  This can
be a pain, but see the next paragraph!

As part of the general Annex software release, we supply a program called
"rtelnet" (not all OEMs may supply this with their re-wrapping of the
software).  This allows, for BSD-ish UNIX machines, the ability to 
provide a /dev entry that is directly connected to an Annex port.
This uses the 5000+N approach.  The existing version (part of R5.0)
currently only allows a 1-to-1 mapping, as the connection to the Annex
is maintained as long as the rtelnet daemon is running.  A new version
that will be part of R6.0 allows on-the-fly connections so that several
hosts can share the same Annex port.

The main disadvantage to rtelnet is that it uses up additional host overhead
(i.e., as much as a normal rlogind or telnetd).  This can be fixed by either
using the in-kernel (or, as I call it, kernel-assisted) telnetd code, or
by using a `better' network-services abstraction.  By which I mean something
along the lines of streams ttys and streams TCP, which would allow you
to push a TELNET streams module directly on a streams TCP connection, and
incur no overhead via a user-level switching process.  I know of several
vendors now selling such solutions.  A major advantage to rtelnet is if
you are forced to use a pre-existing package that can only print via a
/dev/ttyxx.

A third way, and one which is restricted to your Encore Multimax, is to
use Encore's proprietary RDP protocol.  This will provide all the same
benifits of using something like rtelnet (actually, rtelnet was created
to provides the benefits of RDP to non-Encore hosts).  This even allows
you access to the parallel port.  It also provides seamless (or nearly
so) utilization of an Annex port.  However, a major disadvantage is that
this feature is only available on Encore Multimaxes!  Also, use of RDP
limits the overall throughput to a printer connected to the Annex, due
to the complexity of RDP and the burden of running the TTY driver on
such a skimpy processor as in the Annex (its still only a 32CG16).
Finally, the Annex-MX version of R5.0 has not been released by Encore
as of yet (although the Annex-UX version has been shipping from Xylogics
for several months).

Clyde Hoover writes:
> First, use TCP port 7000+serial line number.  That avoids the telnet
> option negoiation that Annex tries to do.  (Sends crap down the serial
> line that can mess the minds of printers).

Hmm - this is *very* odd, as the Annex only goes option negotiation with
the other end of the TCP connection; I have no idea how such data is getting
sent down the serial line!

John
-- 
John Robert LoVerso			Xylogics, Inc.  617/272-8140 x284
loverso@Xylogics.COM			Annex Terminal Server Development Group