===============================
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/arch/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/arch/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>
