[comp.sys.apollo] tn3270

oliveria@caen.engin.umich.edu (ROQUE DONIZETE DE OLIVEIRA) (07/20/89)

Has anyone ported version 4.1.1 of tn3270 on apollos under sr10.1/BSD4.3 ?
If so, could you send me the diffs or let me know where I can get it ?
I'm specially having problems with the keyboard mapping file map3270.
Any help will be appreciated.

    Roque D. Oliveira
    oliveria@caen.engin.umich.edu

obrennan@CC3.CC.UMR.EDU (obrennan) (08/30/90)

Has anyone had luck in porting TN3270 to the Apollo at 
SR10.x ?


Gerry O'Brennan
Computing Services
University of Missouri - Rolla
------------------------------
obrennan@apollo.cc.umr.edu
c0022@umrvmb.umr.edu          
------------------------------

obrennan@CC3.CC.UMR.EDU (obrennan) (10/19/90)

Since I have received many requests for the TN3270 details I 
decided to post it to the net. Here goes:

---------------------------------------------------------------------
The source came from uunet.uu.net and was under anonymous FTP
as networking/tn3270.4.1.1.tar.z. To build the tn3270 module
here are most, if not all, of the changes needed:

  NOTE: I only have this working at SR10.2

   1) you need to uncompress the file, then tar extract it (which
      will restore a disttn3270 directory and subdirectories in 
      the current directory.

   2) change directory to disttn3270/tn3270 and change the files
      "makefile" and "tools/makefile" to include "-Dsun" option on the
      "DEFINES = " statement. 

   3) in the "telnet/Makefile" file delete the "trap.h" entry and
      change "/lib/libc.a" to "/lib/libc".

   4) in the "disttn370/tn3270" directory issue "make makefile"
      to build the "tn3270" executable module in that directory.
      
Under X-windows, tn3270 works pretty
slick. I tend to use xterm options "-geometry 80xrows+xpos+ypos"
for window size and "-fn fg-18 -fb fg-18" for font definitions.
Changing the font will also change the size of the window opened
by xterm. Row sizes recognized by the IBM are (I believe) 24, 32,
and 43. So, using a combination of row size and font size you should
be able to build a window to your liking. Be sure and choose a fixed
size font (not proportional by character), otherwise the screen could
look scrambled at times. Also, using Apollo_15_color, if the window 
is a bit larger than needed, you may get lines that wrap or look funny. 
Also, if the window is not big enough, you will end up in line-mode. 
Choosing 80 characters for columns under X-windows solves both problems.

Here is the /etc/map3270 file I have built so far (NOTE: not all
of the DM keys are mapped). 

-----------------------------------------------------------------------
   #
   # Copyright (c) 1987 Regents of the University of California.
   # All rights reserved.  The Berkeley software License Agreement
   # specifies the terms and conditions for redistribution.
   #
   #	@(#)map3270	1.1 (Berkeley) 11/20/87
   #
   #
   # /etc/map3270 (/usr/new/etc/map3270 before migration)
   # mail corrections and additions to "termcap"
   #
   # this file contains mappings between characters entered from the keyboard,
   # and 3270 keys, for use by programs (like tn3270) doing 3270 emulation
   # from unix.
   #
   # inside the single quotes, a caret ("^") introduces a control character
   # sequence (rub out = ^?, by the way).  also inside the single quotes,
   # a backslash ('\') introduces an escaped character.  Also, \n, \r, \t,
   # are all as in c, and \E is another way of representing escape.
   #
   #	NOTE that while we are defining lots of function, much of that
   # function (ie: local editing keys) may not yet be available from
   # tn3270.
   apollo_15_color | vt132 {
   enter = '^m';
   clear = '^c';
   
   tab = '^i';
   btab = '^b';
   left = '^h' | '\EOD';
   right = '^l' | '\EOC';
   up = '^k' | '\EOA';
   down = '^j' | '\EOB';
   home = '\EOn';
   
   delete = '^?';
   eeof = '^e';
   einp = '^w' |  '\E[M';
   insrt = '\E ' | '\E[4h';
   
   # pf keys                           
   pfk1  =          '\E1'; pfk2  = '\EOP' | '\E2'; pfk3  = '\EOQ' | '\E3';
   pfk4  = '\EOR' | '\E4'; pfk5  = '\EOS' | '\E5'; pfk6  = '\EOq' | '\E6';
   pfk7  = '\EOr' | '\E7'; pfk8  =          '\E8'; pfk9  =          '\E9';
   pfk10 =          '\E0'; pfk11 =          '\E!'; pfk12 = '\EOw' | '\E@';
   pfk13 = '\EOx' | '\E#'; pfk14 = '\EOy' | '\E$'; pfk15 = '\EOm' | '\E%';
   pfk16 = '\EOs' | '\E\^';pfk17 = '\EOM' | '\E&'; pfk18 =          '\E*';
   pfk19 =          '\E('; pfk20 =          '\E)'; pfk21 =          '^pf21';
   pfk22 =        '^pf22'; pfk23 =        '^pf23'; pfk24 =          '^pf24';
   
   # program attention keys
   pa1 = '^p1' | '\E-';
   pa2 = '^p2' | '\E=';
   pa3 = '^p3';
   
   # local control keys
   
   escape = '^]';	# escape to telnet command mode
   master_reset = '^g';
   
   # local editing keys
   settab = '\E;';
   deltab = '\E\'';
   clrtab = '\E:';
   setmrg = '\E,';
   sethom = '\E.';
   coltab = '\E\E[B';
   colbak = '\E\E[A';
   indent = '\E\E[C';
   undent = '\E\E[D'; 
   
   }
   xterm {
   enter = '^m';
   clear = '^c';
   
   tab = '^i';
   btab = '^b';
   left = '^h' | '\EOD';
   right = '^l' | '\EOC';
   up = '^k' | '\EOA';
   down = '^j' | '\EOB';
   home = '\EOn';
   
   delete = '^?';
   eeof = '^e';
   einp = '^w' |  '\E[M';
   insrt = '\E ' | '\E[4h';
   
   # pf keys                           
   pfk1  = '\E[11~' | '\E1'; pfk2  = '\E[12~' | '\E2'; pfk3  = '\E[13~' | '\E3';
   pfk4  = '\E[14~' | '\E4'; pfk5  = '\E[15~' | '\E5'; pfk6  = '\E[17~' | '\E6';
   pfk7  = '\E[18~' | '\E7'; pfk8  = '\E[19~' | '\E8'; pfk9  = '\E[20~' | '\E9';
   pfk10 =            '\E0'; pfk11 =            '\E!'; pfk12 =            '\E@';
   pfk13 =            '\E#'; pfk14 =            '\E$'; pfk15 =            '\E%';
   pfk16 =            '\E\^';pfk17 =            '\E&'; pfk18 =            '\E*';
   pfk19 =            '\E('; pfk20 =            '\E)'; pfk21 =          '^pf21';
   pfk22 =          '^pf22'; pfk23 =          '^pf23'; pfk24 =          '^pf24'; 
   
   
   # program attention keys
   pa1 = '^p1' | '\E-';
   pa2 = '^p2' | '\E='; 
   pa3 = '^p3';
   
   # local control keys
   
   escape = '^]';	# escape to telnet command mode
   master_reset = '^g';
   
   # local editing keys
   settab = '\E;';
   deltab = '\E\'';
   clrtab = '\E:';
   setmrg = '\E,';
   sethom = '\E.';
   coltab = '\E\E[B';
   colbak = '\E\E[A';
   indent = '\E\E[C';
   undent = '\E\E[D'; 
   
   } 

-----------------------------------------------------------------------

Hope this helps...
   


Gerry O'Brennan
Programmer/Analyst
Computing Services
University of Missouri - Rolla
------------------------------
obrennan@apollo.cc.umr.edu
c0022@umrvmb.umr.edu          
------------------------------

rees@pisa.ifs.umich.edu (Jim Rees) (10/20/90)

In article <9010182127.AA00192@cc2.cc.umr.edu>, obrennan@CC3.CC.UMR.EDU (obrennan) writes:
  Since I have received many requests for the TN3270 details I 
  decided to post it to the net...

I just grabbed this, followed Gerry's instructions, and it seems to work.  If
you want just the binaries, compiled for Apollo 68020, you can ftp them from
dabo.ifs.umich.edu.

obrennan@CC3.CC.UMR.EDU (obrennan) (03/20/91)

	  A number of folks here have a need for TN3270 to use to access our IBM
	mainframe from their Apollo's. I have seen requests for TN3270 before in
	this group but never any replies. This could be because our News feed is
	a little flakey at times. If anyone has a PD version of TN3270 could they
	perhaps email me direct.
	
	Cheers !
	--
	Richard Watts
	Systems Management Group                     E-mail: rwatts@dstos3.dsto.oz.au
	Information Systems Branch                    Phone: +61 8 259 6394
	DSTO Salisbury, SA 5108                         Fax: +61 8 259 5177
	
-----------------------------------------------------------------------------
Here is the breakdown of how I remember building TN3270 for the Apollos:

   - fetch networking/tn3270.4.1.1.tar.Z from uunet.uu.net
   - uncompress, tar extract
   - in tools subdirectory edit makefile (add -Dsun to $DEFINES)
   - in telnet subdirectory edit makefile (delete trap.h from includes, change
         /lib/libc.a to /lib/libc
   - in disttn3270/tn3270 issue: make -f makefile, which builds tn3270 executable
         in disttn3270/tn3270 directory.

I have had trouble using TN3270 in an Apollo window at SR10.1 and SR10.3 (works at
SR10.2), so I have always used Xterm at 10.2 and 10.3 which seems to work nice (especially
if you fix the window size at 80 columns and 24,32, or 43 rows and a fixed font
like oldx11/fg-20). You will need to build a key map file (default /etc/map3270). Here
is one I have working with all of the white keys, but not all function keys are mapped:

#
# Copyright (c) 1987 Regents of the University of California.
# All rights reserved.  The Berkeley software License Agreement
# specifies the terms and conditions for redistribution.
#
#	@(#)map3270	1.1 (Berkeley) 11/20/87
#
#
# /etc/map3270 (/usr/new/etc/map3270 before migration)
# mail corrections and additions to "termcap"
#
# this file contains mappings between characters entered from the keyboard,
# and 3270 keys, for use by programs (like tn3270) doing 3270 emulation
# from unix.
#
# inside the single quotes, a caret ("^") introduces a control character
# sequence (rub out = ^?, by the way).  also inside the single quotes,
# a backslash ('\') introduces an escaped character.  Also, \n, \r, \t,
# are all as in c, and \E is another way of representing escape.
#
#	NOTE that while we are defining lots of function, much of that
# function (ie: local editing keys) may not yet be available from
# tn3270.
apollo_15_color | vt132 {
enter = '^m';
clear = '^c';

tab = '^i';
btab = '^b';
left = '^h' | '\EOD';
right = '^l' | '\EOC';
up = '^k' | '\EOA';
down = '^j' | '\EOB';
home = '\EOn';

delete = '^?';
eeof = '^e';
einp = '^w' |  '\E[M';
insrt = '\E ' | '\E[4h';

# pf keys                           
pfk1  =          '\E1'; pfk2  = '\EOP' | '\E2'; pfk3  = '\EOQ' | '\E3';
pfk4  = '\EOR' | '\E4'; pfk5  = '\EOS' | '\E5'; pfk6  = '\EOq' | '\E6';
pfk7  = '\EOr' | '\E7'; pfk8  =          '\E8'; pfk9  =          '\E9';
pfk10 =          '\E0'; pfk11 =          '\E!'; pfk12 = '\EOw' | '\E@';
pfk13 = '\EOx' | '\E#'; pfk14 = '\EOy' | '\E$'; pfk15 = '\EOm' | '\E%';
pfk16 = '\EOs' | '\E\^';pfk17 = '\EOM' | '\E&'; pfk18 =          '\E*';
pfk19 =          '\E('; pfk20 =          '\E)'; pfk21 =          '^pf21';
pfk22 =        '^pf22'; pfk23 =        '^pf23'; pfk24 =          '^pf24';

# program attention keys
pa1 = '^p1' | '\E-';
pa2 = '^p2' | '\E=';
pa3 = '^p3';

# local control keys

escape = '^]';	# escape to telnet command mode
master_reset = '^g';

# local editing keys
settab = '\E;';
deltab = '\E\'';
clrtab = '\E:';
setmrg = '\E,';
sethom = '\E.';
coltab = '\E\E[B';
colbak = '\E\E[A';
indent = '\E\E[C';
undent = '\E\E[D'; 

}
xterm {
enter = '^m';
clear = '^c';

tab = '^i';
btab = '^b';
left = '^h' | '\EOD';
right = '^l' | '\EOC';
up = '^k' | '\EOA';
down = '^j' | '\EOB';
home = '\EOn';

delete = '^?';
eeof = '^e';
einp = '^w' |  '\E[M';
insrt = '\E ' | '\E[4h';

# pf keys                           
pfk1  = '\E[11~' | '\E1'; pfk2  = '\E[12~' | '\E2'; pfk3  = '\E[13~' | '\E3';
pfk4  = '\E[14~' | '\E4'; pfk5  = '\E[15~' | '\E5'; pfk6  = '\E[17~' | '\E6';
pfk7  = '\E[18~' | '\E7'; pfk8  = '\E[19~' | '\E8'; pfk9  = '\E[20~' | '\E9';
pfk10 =            '\E0'; pfk11 =            '\E!'; pfk12 =            '\E@';
pfk13 =            '\E#'; pfk14 =            '\E$'; pfk15 =            '\E%';
pfk16 =            '\E\^';pfk17 =            '\E&'; pfk18 =            '\E*';
pfk19 =            '\E('; pfk20 =            '\E)'; pfk21 =          '^pf21';
pfk22 =          '^pf22'; pfk23 =          '^pf23'; pfk24 =          '^pf24'; 


# program attention keys
pa1 = '^p1' | '\E-';
pa2 = '^p2' | '\E='; 
pa3 = '^p3';

# local control keys

escape = '^]';	# escape to telnet command mode
master_reset = '^g';

# local editing keys
settab = '\E;';
deltab = '\E\'';
clrtab = '\E:';
setmrg = '\E,';
sethom = '\E.';
coltab = '\E\E[B';
colbak = '\E\E[A';
indent = '\E\E[C';
undent = '\E\E[D'; 

}

Hope this helps...


Gerry O'Brennan
Programmer/Analyst II
Computing Services
University of Missouri - Rolla
------------------------------
obrennan@apollo.cc.umr.edu
c0022@umrvmb.umr.edu          
------------------------------