x3270 3.0 =============================================================================== 0. Introduction x3270 3.0 is an IBM 3278 terminal emulator for X windows. It can be used to communicate with any IBM host that supports 3270-style connections over TELNET. It can also communcate with hosts that use line-by-line ASCII mode to do initial login negotiation before switching to full-screen 3270 mode. It uses its own special fonts to fully emulate the special symbols displayed on a 3278. If you grow tired of using a modern workstation to do an exact emulation of the appearance of a terminal, you can use any constant-width X font. 0. History x3270 3.0 is a heavy revision of Jeff Sparkes' x3270 1.2. It incorporates almost all of the enhancements already available in other improved versions of x3270 (cut and paste, hollowing cursor, etc.) and a number of significant changes and improvements. Thanks to -- Robert Viduya, for the original SunView 3270tool; Jeff Sparkes, for the original X port and for inspiring so many of us to improve on it; Peter Johnston, for insisting that each new function he wanted was just an itty bitty change, honest; Thomas Vogler, for requesting the original ASCII functionality and helping debug it; Pekka Nikander, for helpful advice in internationalization and X trivia, and yet more porting and debug help; and everyone else who has put up with my naive stumblings through X. 1. Enhancements from Release 1.2 1.1 Performance Screen painting is faster. Much faster. 1.2 Connect/Disconnect You do not need to specify a hostname on the command line. x3270 no longer exits when the host disconnects. You can put a list of common IBM host names in a file. You can specify a string to be be sent to a host when you connect to it. This string can include TABs to enter data into multiple fields, and ENTER keys (newlines) to send an ENTER AID and wait for the keyboard to unlock. 1.3 Menu Bar There is a menu bar with the following options: Quit... Disconnect break the current connection Exit x3270 terminate the application Options... About x3270... friendly informational pop-up --- Keypad (optional) pop up (or down) the 3270 keypad --- Monocase Blinking cursor Show Timing display time between sending an AID and the keyboard unlocking Track Cursor show cursor position on status line --- Trace 3270 DS trace 3270 data semi-readably on stdout Trace TELNET trace TELNET negotiations and data on stdout --- Underline Cursor Block Cursor --- 3270 Font the original 3270 font (14-point) 3270-12 Font a smaller 3270 font (12-point) Other Font... pop-up to enter another font name --- Line Mode change TELNET modes (if ASCII) Character Mode --- Model 2 change 3270 model Model 3 Model 4 Model 5 Connect... (list of hosts) Other... (popup window) The menu bar is turned off with "*menuBar: false" or if the size of the emulator font makes the window too small to hold it. The menus can also be popped up with Ctrl and the mouse buttons. 1.4 Keypad There is a mouse-clickable keypad containing all of the PF, PA, cursor control and miscellaneous 3270 keys. It can be toggled on and off with a button in the upper right of the window. The command-line option "-keypad" or the "*keypad" resource determines where it goes: right separate window, to the right of the main window (default) bottom separate window, below the main window integral integrated into the bottom of the main window The keypad can be displayed at startup with "*keypadOn: true". 1.5 Fonts The font used by x3270 is configurable with the command-line option "-efont" or the resource "emulatorFont." An additional 3270 font (3270-12) is provided. Separate bold fonts are provided (3270bold and 3270-12bold) for speed. x3270 can use any standard constant-spaced X font, but some of the cute stuff on the status line might not look as nice. Many perfectly good constant-spaced fonts are misconfigured and x3270 doesn't like them; try a '!' in front of the name to override some of the checking. The font can be changed at any time with a menu option or the SetFont action. 1.6 Cut/Paste Xterm-like mouse selection is supported. The selection region is a rectangle, rather than a continuous band on the screen, because this is more "3270-like." The middle mouse button performs a "paste" action like xterm's. The mouse can be configured to act more like OpenWindows with a keymap option. 1.7 ANSI Emulation Placing "a:" in front of a host name causes x3270 to emulate an ANSI terminal (more or less a VT100 or xterm) until the remote host negotiates 3270 emulation. Un-negotiating 3270 mode causes a disconnect. Line mode / character mode is negotiable with a menu option. 1.8 Status Line The cursor position is reported in the lower-right corner. The resource "*cursorPos: false" or a menu option will turn it off. The time between sending an AID key and the host unlocking the keyboard can be displayed next to the cursor position. The resource "*timing: true" or a menu option will turn it on. If the transaction takes more than 1 second, the timing display is updated once a second. 1.9 Internationalization This version of x3270 supports international EBCDIC character sets and keyboards in a manner similar (but not quite identical) to version 1.3. The "-charset" option or "*charset" resource specifies an alternative mapping between EBCDIC codes and displayed graphics. Character sets supported include "us" (the default), german, finnish, uk, norwegian and french. The character set name "oldibm" is also supported to deal with older U.S. hosts that use different EBCDIC codes for the square bracket characters. Unlike version 1.3, specifying a "charset" does not modify your keyboard mapping. Instead, the "-keymap" option and "*keymap" resource accept modifiers, that is, they can be specified as a comma-separated list of keymap names. The keymap modifiers "finnish7" and "norwegian7" are defined, as is the modifier "ow", which swaps the middle and right mouse buttons to make them operate more like OpenWindows. (For example, to speficy a Sun-4 keyboard with 7-bit Finnish key mappings and OpenWindows mouse buttons, speficy "-keymap sun-k4,finnish7,ow". Character sets and keymap modifiers are implemented entirely in resources, so it is easy to add or correct definitions. 1.10 Icons The icon can either be a cute bitmap or a miniature of the screen image. The -activeicon switch or "*activeIcon: true" resource turns on active icons. The default font for the icon (*iconFont) is nil2. Window manager dependencies abound. Twm doesn't label application-supplied icon windows. x3270 will supply its own icon label if "*labelIcon" is true. The icon label font is controlled by "*iconLabelFont". 1.11 Miscellany The block cursor hollows out when the mouse cursor leaves the x3270 window. The cursor can be made to blink with a resource (*blink: true) or a menu option. For debugging, the TELNET and 3270 data streams can be traced on standard output. The window and icon labels contain useful information. The model number (screen size) may be changed while running, so long as you are disconnected. The PA3 and 3270 ATTN keys (from v1.3) are implemented. 2. Some Bugs Fixed The last line of the display was not being refreshed on an expose event. ERASE WRITE was not properly implemented (it is supposed to put the terminal in 24x80 mode until an ERASE WRITE ALTERNATE is received). The "SYSTEM" wait condition on the status line was being displayed at inappropriate times. A TAB key on a screen with no unprotected fields caused an infinite loop. A field from which data had been deleted (with the DELETE key) was not marked as modified. If the 3270 font could not be found, x3270 used the wrong font and painted the screen with garbage. If there was a "*font" entry in the user's .Xdefaults, x3270 would find that font instead of its own font, with similarly unpleasant results. If the host sent an invalid 3270 command, x3270 crashed silently. If the host was not an IBM host, x3270 would either hang or fail cryptically. Screen updates on ordinary field input were jerky and slow. The 3270 READ MODIFIED command returned incorrect values for attribute bytes, causing all fields to appear to be nondisplayed. Characters that changed attributes (but not character codes) were not always redisplayed properly. The shift-key display was wrong if the mouse entered or left the window with a shift key pressed. 3. Problems 3.1 Missing Stuff This code is distantly based on the 1.2 release of x3270. It includes many of the features and fixes (but different implementations) of the subsequent releases (1.3 BETA and 2.54-apl). The primary feature of those releases that is missing from 3.0 is APL support. 3.2 Incompatibilities This code *cannot* use the 3270 font supplied with the 2.54-apl release (and neither can any of the other versions of x3270). It can use the font supplied with 1.2 and 1.3 BETA, or any constant-width X font. I strongly disagree with 2.54's author's decision to re-order the 3270 font. The X3270 app-defaults file must be updated in order to run this version. The new file is backwards-compatible with 1.2. I have not tested it with 1.3 BETA or 2.54-apl. 4. Build Hints To build on HP boxes, you may need to uncomment the following in Imakefile: EXTRA_DEFINES = -D_HPUX_SOURCE If for some reason you are missing the font alias for the "nil2" font, you can uncomment the following in X3270.ad: x3270.iconFont: -misc-nil-medium-r-normal--2-20-75-75-c-10-misc-fontspecific ===== Have fun. Paul Mattes pdm@cray.com