===============================
IBM 3270 Display System support
===============================

This file describes the driver that supports local channel attachment
of IBM 3270 devices.  It consists of three sections:

	* Introduction
	* Installation
	* Operation


Introduction
============

This paper describes installing and operating 3270 devices under
Linux/390.  A 3270 device is a block-mode rows-and-columns terminal of
which I'm sure hundreds of millions were sold by IBM and clonemakers
twenty and thirty years ago.

You may have 3270s in-house and not know it.  If you're using the
VM-ESA operating system, define a 3270 to your virtual machine by using
the command "DEF GRAF <hex-address>"  This paper presumes you will be
defining four 3270s with the CP/CMS commands:

	- DEF GRAF 620
	- DEF GRAF 621
	- DEF GRAF 622
	- DEF GRAF 623

Your network connection from VM-ESA allows you to use x3270, tn3270, or
another 3270 emulator, started from an xterm window on your PC or
workstation.  With the DEF GRAF command, an application such as xterm,
and this Linux-390 3270 driver, you have another way of talking to your
Linux box.

This paper covers installation of the driver and operation of a
dialed-in x3270.


Installation
============

You install the driver by installing a patch, doing a kernel build, and
running the configuration script (config3270.sh, in this directory).

WARNING:  If you are using 3270 console support, you must rerun the
configuration script every time you change the console's address (perhaps
by using the condev= parameter in silo's /boot/parmfile).  More precisely,
you should rerun the configuration script every time your set of 3270s,
including the console 3270, changes subchannel identifier relative to
one another.  ReIPL as soon as possible after running the configuration
script and the resulting /tmp/mkdev3270.

If you have chosen to make tub3270 a module, you add a line to a
configuration file under /etc/modprobe.d/.  If you are working on a VM
virtual machine, you can use DEF GRAF to define virtual 3270 devices.

You may generate both 3270 and 3215 console support, or one or the
other, or neither.  If you generate both, the console type under VM is
not changed.  Use #CP Q TERM to see what the current console type is.
Use #CP TERM CONMODE 3270 to change it to 3270.  If you generate only
3270 console support, then the driver automatically converts your console
at boot time to a 3270 if it is a 3215.

In brief, these are the steps:

	1. Install the tub3270 patch
	2. (If a module) add a line to a file in `/etc/modprobe.d/*.conf`
	3. (If VM) define devices with DEF GRAF
	4. Reboot
	5. Configure

To test that everything works, assuming VM and x3270,

	1. Bring up an x3270 window.
	2. Use the DIAL command in that window.
	3. You should immediately see a Linux login screen.

Here are the installation steps in detail:

	1.  The 3270 driver is a part of the official Linux kernel
	source.  Build a tree with the kernel source and any necessary
	patches.  Then do::

		make oldconfig
		(If you wish to disable 3215 console support, edit
		.config; change CONFIG_TN3215's value to "n";
		and rerun "make oldconfig".)
		make image
		make modules
		make modules_install

	2. (Perform this step only if you have configured tub3270 as a
	module.)  Add a line to a file `/etc/modprobe.d/*.conf` to automatically
	load the driver when it's needed.  With this line added, you will see
	login prompts appear on your 3270s as soon as boot is complete (or
	with emulated 3270s, as soon as you dial into your vm guest using the
	command "DIAL <vmguestname>").  Since the line-mode major number is
	227, the line to add should be::

		alias char-major-227 tub3270

	3. Define graphic devices to your vm guest machine, if you
	haven't already.  Define them before you reboot (reipl):

		- DEFINE GRAF 620
		- DEFINE GRAF 621
		- DEFINE GRAF 622
		- DEFINE GRAF 623

	4. Reboot.  The reboot process scans hardware devices, including
	3270s, and this enables the tub3270 driver once loaded to respond
	correctly to the configuration requests of the next step.  If
	you have chosen 3270 console support, your console now behaves
	as a 3270, not a 3215.

	5. Run the 3270 configuration script config3270.  It is
	distributed in this same directory, Documentation/s390, as
	config3270.sh.  Inspect the output script it produces,
	/tmp/mkdev3270, and then run that script.  This will create the
	necessary character special device files and make the necessary
	changes to /etc/inittab.

	Then notify /sbin/init that /etc/inittab has changed, by issuing
	the telinit command with the q operand::

		cd Documentation/s390
		sh config3270.sh
		sh /tmp/mkdev3270
		telinit q

	This should be sufficient for your first time.  If your 3270
	configuration has changed and you're reusing config3270, you
	should follow these steps::

		Change 3270 configuration
		Reboot
		Run config3270 and /tmp/mkdev3270
		Reboot

Here are the testing steps in detail:

	1. Bring up an x3270 window, or use an actual hardware 3278 or
	3279, or use the 3270 emulator of your choice.  You would be
	running the emulator on your PC or workstation.  You would use
	the command, for example::

		x3270 vm-esa-domain-name &

	if you wanted a 3278 Model 4 with 43 rows of 80 columns, the
	default model number.  The driver does not take advantage of
	extended attributes.

	The screen you should now see contains a VM logo with input
	lines near the bottom.  Use TAB to move to the bottom line,
	probably labeled "COMMAND  ===>".

	2. Use the DIAL command instead of the LOGIN command to connect
	to one of the virtual 3270s you defined with the DEF GRAF
	commands::

		dial my-vm-guest-name

	3. You should immediately see a login prompt from your
	Linux-390 operating system.  If that does not happen, you would
	see instead the line "DIALED TO my-vm-guest-name   0620".

	To troubleshoot:  do these things.

	A. Is the driver loaded?  Use the lsmod command (no operands)
	to find out.  Probably it isn't.  Try loading it manually, with
	the command "insmod tub3270".  Does that command give error
	messages?  Ha!  There's your problem.

	B. Is the /etc/inittab file modified as in installation step 3
	above?  Use the grep command to find out; for instance, issue
	"grep 3270 /etc/inittab".  Nothing found?  There's your
	problem!

	C. Are the device special files created, as in installation
	step 2 above?  Use the ls -l command to find out; for instance,
	issue "ls -l /dev/3270/tty620".  The output should start with the
	letter "c" meaning character device and should contain "227, 1"
	just to the left of the device name.  No such file?  no "c"?
	Wrong major number?  Wrong minor number?  There's your
	problem!

	D. Do you get the message::

		 "HCPDIA047E my-vm-guest-name 0620 does not exist"?

	If so, you must issue the command "DEF GRAF 620" from your VM
	3215 console and then reboot the system.



OPERATION.
==========

The driver defines three areas on the 3270 screen:  the log area, the
input area, and the status area.

The log area takes up all but the bottom two lines of the screen.  The
driver writes terminal output to it, starting at the top line and going
down.  When it fills, the status area changes from "Linux Running" to
"Linux More...".  After a scrolling timeout of (default) 5 sec, the
screen clears and more output is written, from the top down.

The input area extends from the beginning of the second-to-last screen
line to the start of the status area.  You type commands in this area
and hit ENTER to execute them.

The status area initializes to "Linux Running" to give you a warm
fuzzy feeling.  When the log area fills up and output awaits, it
changes to "Linux More...".  At this time you can do several things or
nothing.  If you do nothing, the screen will clear in (default) 5 sec
and more output will appear.  You may hit ENTER with nothing typed in
the input area to toggle between "Linux More..." and "Linux Holding",
which indicates no scrolling will occur.  (If you hit ENTER with "Linux
Running" and nothing typed, the application receives a newline.)

You may change the scrolling timeout value.  For example, the following
command line::

	echo scrolltime=60 > /proc/tty/driver/tty3270

changes the scrolling timeout value to 60 sec.  Set scrolltime to 0 if
you wish to prevent scrolling entirely.

Other things you may do when the log area fills up are:  hit PA2 to
clear the log area and write more output to it, or hit CLEAR to clear
the log area and the input area and write more output to the log area.

Some of the Program Function (PF) and Program Attention (PA) keys are
preassigned special functions.  The ones that are not yield an alarm
when pressed.

PA1 causes a SIGINT to the currently running application.  You may do
the same thing from the input area, by typing "^C" and hitting ENTER.

PA2 causes the log area to be cleared.  If output awaits, it is then
written to the log area.

PF3 causes an EOF to be received as input by the application.  You may
cause an EOF also by typing "^D" and hitting ENTER.

No PF key is preassigned to cause a job suspension, but you may cause a
job suspension by typing "^Z" and hitting ENTER.  You may wish to
assign this function to a PF key.  To make PF7 cause job suspension,
execute the command::

	echo pf7=^z > /proc/tty/driver/tty3270

If the input you type does not end with the two characters "^n", the
driver appends a newline character and sends it to the tty driver;
otherwise the driver strips the "^n" and does not append a newline.
The IBM 3215 driver behaves similarly.

Pf10 causes the most recent command to be retrieved from the tube's
command stack (default depth 20) and displayed in the input area.  You
may hit PF10 again for the next-most-recent command, and so on.  A
command is entered into the stack only when the input area is not made
invisible (such as for password entry) and it is not identical to the
current top entry.  PF10 rotates backward through the command stack;
PF11 rotates forward.  You may assign the backward function to any PF
key (or PA key, for that matter), say, PA3, with the command::

	echo -e pa3=\\033k > /proc/tty/driver/tty3270

This assigns the string ESC-k to PA3.  Similarly, the string ESC-j
performs the forward function.  (Rationale:  In bash with vi-mode line
editing, ESC-k and ESC-j retrieve backward and forward history.
Suggestions welcome.)

Is a stack size of twenty commands not to your liking?  Change it on
the fly.  To change to saving the last 100 commands, execute the
command::

	echo recallsize=100 > /proc/tty/driver/tty3270

Have a command you issue frequently?  Assign it to a PF or PA key!  Use
the command::

	echo pf24="mkdir foobar; cd foobar" > /proc/tty/driver/tty3270

to execute the commands mkdir foobar and cd foobar immediately when you
hit PF24.  Want to see the command line first, before you execute it?
Use the -n option of the echo command::

	echo -n pf24="mkdir foo; cd foo" > /proc/tty/driver/tty3270



Happy testing!  I welcome any and all comments about this document, the
driver, etc etc.

Dick Hitt <rbh00@utsglobal.com>
