[mod.protocols.tcp-ip] Installing tn3270

braden@VENERA.ISI.EDU.UUCP (07/09/86)

I have recently installed the Berkeley version of tn3270 on my Sun 3 work
station. I used the public tar file tn3270tar, mentioned in Greg Minshall's
message copied to tcp-ip on June 6; the main program file is dated 5/13/86.

The Sun environment caused some difficulties; for example, you must give
tn3270 a Sun window of exactly the size of the emulated 3278 screen (in
my case, 43*80; see below), or it just dies due to bad return code form
curses.  It also took me awhile to work out a sensible mapping of the
essential 3278 keys onto the Sun 3 keyboard, avoiding the keys that Suntools
wants to keep to itself.

In addition, there were some significant problems in tn3270 itself, when used
to access both the Wisconsin VM code and the UCLA MVS code.  These were as
follows:

1. It has been recommended that the terminal type be updated to a 3278-2,
   which has 24 lines of 80 characters.  However, both VM and MVS are prepared 
   to handle the more modern screen size of 43*80, so if you have a competant
   terminal (like a Sun), I strongly suggest you use the terminal type 3278-4. 
   In this case, it is necessary to update the defined constant NUMBERLINES
   in 3270.h to be 43.
   
   [tn3270 really should take the terminal type (or at least a Boolean 
   selecting long/short screens) from a parameter, and NUMBERLINES should
   be a variable set as a result.]
   
2. tn3270 does not support the Erase Write Alternate command, which both
   VM and MVS send.  Its effect should be exactly like Erase Write, but it
   needs to be included in the case statement in datastream.c, or it defaults
   to Write; the result is a failure to clear the screen sometimes, which is
   BAD.
   
3. tn3270 supports only the non-SNA commands, not the SNA commands.  
   
   Here's a summary of the relevant command codes:

   command        non-SNA           SNA
   ------------------------------------------
   Erase/Write     x'05'           x'f5'

   Erase/Write
      alternate    x'0d'           x'7e'

   Write           x'01'           x'f1'

   Erase All
      unprotected  x'0f'           x'6f'

   Read Buffer     x'02'           x'f2'

   Read Modified   x'06'           x'f6'

   It happens that VM and MVS use the non-SNA and SNA commands, respectively,
   as most appropriate to their system environment. I believe that IBM FSD
   intends to standardize on the SNA flavor, and update the VM code to
   send it.  In any case, any reasonable 3278 emulator should accept both
   sets (I think the VM and MVS User Telnets do so).
   
4. tn3270 does not properly return to NVT mode when the server negotiates
   back to NVT mode (although the VM code doesn't do this, the MVS code
   does).
   
5. tn3270, when in NVT mode, carries over the egregious bug from the 
   Berkeley telnet program: in local echo, it send end-of-line as
   LF instead of the CR LF dictated by the TELNET protocol spec. Why
   do we have to put up with this petty protocol anarchism?
   
Of these problems, 1-3 are the most serious and fortunately are quite
trivial to fix.  Upon request, I will send the updates I used.

________
Bob Braden

root@BU-CS.BU.EDU.UUCP (07/11/86)

I know that WiscNet supports RFC930 (Terminal Type Option) which
a version of tn3270 from Rice used successfully, it's a nice
option in that it's transparent (doesn't interfere with speaking
to hosts who don't support/need it), or at least should be (it
was with the other tn3270.)

I believe it is more like what you want in that I don't believe
you can get the 3270 servers to emulate arbitrary screen sizes,
just various specific 3278 models (which vary discretely in
size.) Which to ask for could be discerned by querying the
local screen size (either via the TERMCAP which is active or
the ioctl() on later editions, such as SUN or 4.3bsd.)

We might put this in one of these days, if we do we'll announce
it (or if anyone else does I'd appreciate a copy.)

	-Barry Shein, Boston University

milazzo@rice.edu.UUCP (07/13/86)

        "I know that WiscNet supports RFC930 (Terminal Type Option)
        which a version of tn3270 from Rice used successfully"

Barry:

The 3270 support I wrote for telnet is NOT "a version of tn3270".  I
wrote the original version of the code long before hearing of tn3270,
and possibly before tn3270 was written.  I have never seen any version
of tn3270.

My code examines the user's terminal type and chooses the largest
suitable screen size from the following list:  3278-5, 3278-4, 3278-3,
3278-2, 3278-1, 3277-1.  If the user's terminal is not a CRT or is too
small for any of these terminal types, telnet simply remains in NVT
mode.  If the user's terminal is an oddly-shaped window, such as on a
SUN, telnet uses the appropriate upper left portion of the window.  On
startup it assumes the default size for the chosen 3270 model, and
switches to the alternate size upon receipt of an EWA.

My code currently does not support SNA codes, negotiation back to NVT
mode, or light pens.  It incompletely implements the PT order, and has
problems with SYS REQ, though the last may be WISCNET's fault, not mine.
SNA codes and negotiation back to NVT mode are trivial fixes.  The
remainder present varying degrees of difficulty.  PEN SELECT would be
easy to add, but real light pen support (say with the mouse on a SUN)
is fairly difficult.

				Paul G. Milazzo
				Dept. of Computer Science
				Rice University, Houston, TX

Domain:	milazzo@rice.EDU, milazzo@rice.ARPA
BITNET:	milazzo@ricenet
UUCP:	{cbosgd,convex,hp-pcd,sun,waltz}!rice!milazzo

root@BU-CS.BU.EDU.UUCP (07/13/86)

Apologies for any misunderstanding, I knew that Paul's code
was not derivitive of the tn3270 code, I was using the term
generically ("a version of tn3270".) I only meant to bring out
that not only can various 327x's be supported via subnegotiation,
it's even been done (by Paul) and it works.

	-Barry Shein, Boston University