This is an IBM 3270 emulator designed to run on Unix systems having
a termcap file: for program details see the accompanying man page.

The first version to be widely distributed is version 3.0 (see in the
Makefile for the version number). Changes in subsequent versions are
detailed at the end of this README file.

Installation requires several subsidiary files, notably the file called
map3270, which contains the mapping of whay keyboard character(s) map
to what IBM 3270 functions. Normally, this file contains entries for
the various terminal types to be found in the termcap file. However, it
also allows different mappings for the same terminal type: for this
the mapping  is <terminal type>-<mapping type>.

It is, as usual, important to change the Makefile to suit your particular
needs and environment. The main choice is as to whether the program is
to be run on a private single-user workstation or on a multi-user system.
The latter may find the time-out code (on idle users) useful.

Some of the code is CERN-specific, particularly that which allows for
graphics from a terminal/emulator offering some type of graphics
support. This is conditionally inserted, according to the Makefile.

If you have any trouble with this program then please let me know. I
can normally fix bugs in the 3270 data stream handling without too much
problem (provided they are reproducible!), but if there are oddities
on different types of workstations thinks are more difficult. Anyway,
it has been tested on Ultrix (DECstation and VAXstation), Sun and Apollo.
It needs some fixes to work under termio, more for System 5, and even more
to work on IBM 6000 (which don't appear to have a termcap file or routines).
More news later.

Good luck,

 _ _  o |             __                    |    jmg@cernvax.uucp
| | |   |     _      /  \  _   __  _   __  _|    jmg@cernvax.bitnet
| | | | |_)  /_)     |  __/_) | (___\ | (_/ |  J. M. Gerard, Div. CN, CERN,
| | |_|_| \_/\___    \__/ \___|   (_|_|   \_|_ 1211 Geneva 23, Switzerland


Version 3.0 : base version
===========

Version 3.1 : changes from previous version:-
===========

New Features :
------------

1.  Keyboard input is no longer blocked if the IBM has disabled keyboard
    input. Instead, it is either handled immediately (such as for requests
    for on-line help) or put into a circular buffer to be handled when the
    IBM unlocks the input.

2.  When input is locked then the screen cursor moves to the bottom right
    hand corner of the screen. In addition, if the user has a status line
    then a 'X' character appears in this status line to show that input is
    locked.

3.  The screen sizing routine will handle the case where the terminal is
    set up with a scrolling region which is not the whole screen.

4.  The on-line help includes an option to show what would be the effect
    of any particular key or combination. This help gives the explanation
    of the key plus an indication whether the key would be effective if
    the IBM had locked the keyboard and whether the key would cause an
    action request to the IBM or simply be handled locally.

5.  The calling sequence can include specifying the emulation mode
    (-3 for classical 3270, -7 for 7171-style emulation) and whether
    the user wants a quiet life or not (-q for quiet, -n for noisy),
    where noise means using the bell (e.g. to tell the user that he has
    switched insert mode on). It is also possible to choose whether or
    not to try to indicate fields which the IBM specifically sets as
    modifiable (reverse video is used for bold modifiable fields) with
    -f for field indication, -p for plain screens.

6.  Support for Kermit file transfers, applicable to people running on
    terminal emulators on systems connected to that on which this tn3270
    emulator is working. This is, in fact, very similar to the transparent
    I/O mode in use by CERN graphics. It is only compiled in if the TTY
    option is chosen in the Makefile.

Bug corrections:
---------------

(Note: items marked with * have been backstitched into some versions
       of 3.0 for some people's benefit)

1. *Will not go wrong when the terminal is set up to have a scrolling
    region less than the screen size: the complete screen will be used (as
    before) but will avoid scrolling on the critical last scroll line.

2. *No longer a problem when the "bl" (bell) character is not defined
    in the relevant termcap entry.

3. *Remove all checking for idle users unless symbol TTY is defined.

4. *When showing information in the normal user environment (e.g. the
    initial announcement screen or the help menus) allow for the user not
    to be in cooked mode when looking for the carriage return.

5.  Unlock keyboard and remove other status line error messages after
    the master reset function (normally ^g).

6.  Avoid getting confused (sometimes) about whether the normal or
    alternate screen is in use.

7.  Messages telling the user of errors such as "not enough columns to
    do 3270 emulation" will stay on the user screen long enough to be read.
    This also involves some different error numbers in such cases.

8.  The reset function, normally ^t, now corresponds to the reset key of
    a real 3270.

9.  Both reset and master reset (which also resets the terminal
    and redraws the screen) unlock the keyboard (as with a real 3270).
    These should, of course, be used with care, as the IBM may not expect
    to receive subsequent action requests.

10. The terminal description may include a specification of how to
    indicate to the user that the terminal is currently in insert mode.
    On an old VT100 this should be a LED; on a Falco it is done by changing
    the cursor from a block to an underline when in insert mode.
    Note, however, that if the terminal has an IBM status line, in which
    insert mode can be indicated, this specification is not used.

11. Add an extra option (in the options menu) for having a quiet mode,
    in which the bell is not used unless it is the IBM which requests
    that the bell be rung. The normal mode of operation will be quiet if
    the terminal has an IBM status line (which indicates the reason why
    a bell would be rung), noisy otherwise.

12. Add an extra option (in the options menu) for not trying to show the
    extent of the field when the IBM has sent it with the "Reset MDT"
    indication. This effectively means that the emulator will not try to
    use reverse video mode for fields which are both "reset MDT" and
    "bright".

13. Include the standard "TSO fix" to avoid problems with nulls when in
    7171 mode (such as when using CICS).

14. When a user has completely entered information into an unprotected
    field then skip to the start of the next field, even if it is protected.
    (The previous version skipped to the start of the next unprotected
    field, which is not what a real IBM 3270 does).

15. Various corrections to 3270 emulation bugs which caused some problems
    on some systems with some application programs.

16. Only reset the special characters (interrupt, quit, suspend etc.)
    if TTY defined (normally a plain terminal). In this case also keep
    the treatment of special characters X_ON and X-OFF in the ioctl
    call of TIOCSETC (which is necessary because some non-DEC terminal
    servers seem to switch to PASSALL mode as a result of this call).

17. Check for hanging when closing the socket connection (which may be
    only relevant to Ultrix but the check does no harm).

18. Use CBREAK mode in on-line help.

19. Make the code compile with the gcc compiler (which also involved
    changing the Makefile a bit, so don't try to use any previous Makefile).

20. Use allocated (malloc) buffers instead of static or stack-based
    buffers when such large buffers are required. The buffers are also
    released as soon as possible. This allows some other improvements:-

    a) The buffer for incoming data from the IBM, which has to be large
       enough for a complete screen definition, will now have an initial
       size dependent upon the screen size and will expand if necessary.

    b) The buffer for (temporarily) holding the keymap definition will
       be allocated before the map3270 file is searched (by find_def)
       and will be freed after the 3270 escape strings have been defined.

    c) The line buffers for the screen window structure will be part
       of one single allocated buffer.

21. Correct redrawing of VT300 status line after reset/reshow.

There could also be some other very minor mods to reorganise code and/or
deal with very rare errors.


Version 3.2 : changes from previous version:-
===========

(Note: items marked with * have been backstitched into some versions
       of 3.1 for some people's benefit)

New Features :
------------

1.  A new function in map3270, called "move". When the "move" escape ard
    sequence is found then the program assumes that it will be followed
    by a cursor position of the form "[Pl;PcH" (standard VT-style for
    line Pl, column Pc). The cursor is then moved to the start of the
    first unprotected field at or after this position.

2.  The on-line help mode accepts both upper and lower case.

3.  If symbol IPAD_ONLY is defined then the program will expect a direct
    IP address as parameter: it will not try to resolve a host name.
    This saves a LOT of space (~50K), since the gethostbyname routine calls
    all sorts of routines (including yellow pages stuff). It is useful
    in the CERN system where the IP address is determined by a small
    program based upon the gethostbyname routine.

4.  When the user enters data into the IBM for the first time the field
    containing the login ID is put into a message on the log file.

5.  Do not trap a Bus error (so that you can get a dump by killing with
    kill -SIGBUS <process id> (but then not restoring the terminal setup).

6.  Do not use automatic margins mode unless the termcap entry specifies
    that the terminal should have it (even if we discover that the
    terminal does have it: there may be reasons not to have it in the
    termcap entry).

Bug corrections:
---------------

1. *The direct showing of the keyboard map (usually with ^p) will wait
    for a Return.

2. *The message in the status line for an idle user (only if TTY set) was
    not cleared when he restarted work: it is now.

3. *Correction of a possible infinite loop (only if TTY set) if during
    checking for output hanging the select routine returns an exception.

4.  If in debug versions either the outf or the debug log file cannot
    be opened for write then the program changes (outf or log) to stderr
    before quitting (because the program ending routine tries to write
    to them).

5.  If the network buffer (savebuf) has to be increased in size then the
    next screen was not correctly drawn.

6.  Pick up the process number and ttyid at the start (because I have seen
    the program hanging inside ttyname() when it is trying to exit).

7.  Fix some timing problems in graphics use (only seen when running the
    TEEMTALK emulator in a PC connected via Ethernet).


Version 3.3 : changes from previous version:-
===========

(Note: items marked with * have been backstitched into some versions
       of 3.2 for some people's benefit)

New Features :
------------

1.  Console I/O has been completely rewritten to allow for either synchronous
    or asynchronous output. When in 3270 mode asynchronous output is used;
    in other cases (on-line help, graphics, line mode) synchronous output
    is used. The advantage of asynchronous output is that user action (such
    as a PF key) can be taken before the 3270 screen is complete, which
    can be useful on a connection over a slow line. This is because the
    action might cause the IBM to send an ERASEWRITE, in which case the
    program will immediately abort any hanging asynchronous output.

2. *During IBM graphics any screen information received from the IBM in
    3270 data stream format is accepted for the 3270 screen. However,
    unless it unlocks the keyboard and IBM is expected to send information
    it is merely retained for the next time that the 3270 screen will
    be shown.

3.  The "sizer" routine (to check the size of the user screen and establish
    the validity of various termcap capabilities) is split into a separate
    routine. It also provisionally assumes that the terminal answers the
    basic request to report cursor position in a standard (VT220-like) way.

4.  The sizer routine does not abort: if it cannot evaluate the lines and/or
    columns of a screen it will return zero in LINES and/or COLS, which will
    allow the calling program to use the default termcap settings. There is
    also a new compiler option NOSIZER which forces sizer simply to do this
    return of zero values (meant for workstations for which the user
    is sure that the termcap values are acceptable).

5.  When asynchronous output hangs then after some retries at short intervals
    the program reverts to checking at longer intervals. As soon as it is
    again possible to output (noticed at the end of this longer interval)
    or when the user sends some input then the user's screen and keyboard
    are cleared and refreshed (as with master reset).

6.  Eight-bit data paths can be supported. By default the program expects
    only 7-bit data or control characters. However, the receipt of either
    8-bit control characters or eight-bit data (i.e. the top bit set in
    an incoming byte) will be noticed and will be considered as allowing
    the program to use eight-bit controls or eight-bit data respectively
    on output.

7.  There is a first attempt to handle characters beyond standard 7-bit
    ASCII. The EBCDIC to ASCII mappings will assume standard ISO 8859-1,
    and the screen image will use this ISO set. Apart from some oddities
    it matches very closely to the DEC 8-bit ASCII code on VT-style
    terminals. However, terminal I/O can work on a 7-bit data path, using
    SI/SO control characters.
    There is a special help screen for "extended ASCII / full EBCDIC", and
    also an explanatory file in this distribution (called README_ALSO).

8.  For saving useful terminal control strings I always use allocated
    buffers, plus calculating their size dynamically.

9.  If the Makefile defines an options directory then it is used to save
    information on what are the user's preferences for options and what
    is the last news file seen. The filename used is normally
    <username>_<hostname>. If no username was given then use the name
    "default_options". If the hostname is any of the names in a file called
    "default_hosts" then simply use <username> as the file.

10. Assume that for terminals using a host-writeable status line the ts
    sequence defined in the termcap file does NOT clear the status line
    (i.e. does not include the \E[K). This makes things faster, since we don't
    have to rewrite the whole line.


Bug corrections:
---------------

1. *The GE (Graphics Escape) command is handled better than before, so that
    it does not cause a garbage screen (but it may not yet always be the
    desired special character).

2. *The emulator will correctly work with the Interlink SNS/TCP Access, which
    allows line-mode I/O (for the user to choose the required service)
    before going into 3270 mode.

3.  The error message for a screen which is too small is now correct and
    includes the number of rows/columns.

4.  The screen sizer no longer loops infinitely if the screen width is
    larger than 160 columns.

5.  On some systems the direct use of the keymap help (normally ^p)
    would cause the program to bomb.

6.  The telnet Timing Mark option used to bomb the emulator.

7.  Eight-bit input of a character with ASCII value > 127 used to
    cause a segment violation (shown in the log as signal 11).

8.  The conversion of help screen input to lower case is only done if
    it seems to be in upper case (avoids getting wrong answers from
    the tolower() function on some systems).

9.  The basic display model type, as sent to the IBM, is 3278-2, rather
    than 3279-2.

10. When skipping forward over an autoskip field go to the next unprotected
    field.

11. Check on writing beyond the end of the buffers used to hold the
    escape sequences of the map3270 file (and larger buffers anyway).

12. Avoid possible hangup in ioctl when output is blocked (e.g. by a user on
    a LAT connection who has switched sessions).

13. The defaults in the Makefiles have changed a bit: I now use /usr/local/lib
    rather than /usr/lib for help files etc.

Version 3.4 : changes from previous version:-
===========

(Note: items marked with * have been backstitched into some versions
       of 3.3 for some people's benefit)

New Features :
------------

1.  If the Makefile defines an options directory then it is used to save
    information on what are the user's preferences for options and what
    is the last news file seen. The filename used now depends on whether
    the symbol TTY is defined or not.
    If TTY is defined, meaning normally a TAGIBM-style general purpose
    3270 gateway or perhaps a multi-user system, then the user name is
    normally assumed to be that given in the call of the emulator, i.e.
    the name which will indicate the login id on the IBM system.
    Since, however, this is an optional parameter the alternative is
    the system name of the calling user.
    If TTY is not defined then we always take the system name of the
    calling user.
    A special case is the TAGIBM-style usage, where TTY is set and there
    is always a user name parameter in the call. To uniquely identify
    the user we must include the name of the IBM hosts system (since
    different IBM systems may have the same user VMID). We do this by
    using an options directory file name consisting of
    <user VMID>_<Host IP address string>
    However, if the Host IP address string is the default (for which we
    create a file in the options directory called default_hosts and
    containing the default host address string(s)) then we stick to
    the simple <user VMID> file name.

2.  The IBM ERASE ALL UNPROTECTED command is now supported (but the code
    is untested because I have not found out how to get the IBM to send it).

3.  There is a new option to the call, namely -d[system_to_dial_to].
    Note the lack of space between the 'd' and the optional name.
    If this option is used then the username is unused (except for
    messages to the logfile): instead the initian IBM screen will cause
    the emulator to send an Enter command followed by the string
    DIAL system_to_dial_to
    If there is a string for system_to_dial_to then another Enter command
    will follow this DIAL command.

4.  When doing output in synchronous mode the timeout on a failed write
    will be variable. It will be reasonably long for graphics, since some
    users like to use the "Hold Screen" feature of a terminal in the
    middle of graphics output.
    Remember, however, that the timeouts only apply when including -DTTY
    in the Makefile CFLAGS.

5.  Graphics characters from the IBM (those preceded by a Graphics Escape
    byte) are handled as well as possible. The tables for converting them
    to ASCII assumes the character sets available in a VT300 (although the
    simple line-drawing characters often used exist in the DEC Special
    Graphic Set, even available on an original VT100).

6.  In cases of unexpected failures, such as detection of a CP loop, the
    current user screen contents may be written onto the log file. There
    is also more (correct) information in such cases.

7.  The EINTR error return to a system call will attempt to retry the
    system call a reasonable number of times.

8.  Indicate in the status line (if one exists) when the user has switched
    to help mode.

9.  For TAGIBM-style usage (see point 1 above) only use getlogin to try to
    get the login name of the user: if this fails then assume the name
    "anonymous". The reason is that the use of getpwuid(getuid()) brings
    in vast amounts of code to cater for use of Yellow Pages and Hesiod!

Bug corrections:
---------------

1.  Output of extended ASCII over a 7-bit connection is done using single
    shift (SS2 or ESC N) to temporarily map character set G2 into GL.
    This is better when switching between terminal server sessions for
    which other sessions mess around with G0 and G1. For safety the
    termcap initialisation sequence should ensure that G2 is correct.

2.  Whenever any reset is done (often ^g after switching back into a
    3270 session on a terminal server) set back into 7-bit mode (because
    the other session might have reset the terminal state).

3.  Failure to reset terminal correctly when compiled without -DGRAPHICS and
    connecting to unknown host: now OK.

4.  Possible segmentation failure when switching back from big screen to
    standard (24*80) screen and calling redraw because of excessive output
    in output buffer queue.

5.  A call without any host name will now correctly reset the terminal
    setup after printing the usage message.

6.  Do not allow character erase in a protected field (even though it
    would remain local and cause no harm).

7.  Use virtual timer, not profile timer, to detect any CPU loop (because
    the virtual timer could interrupt system calls).

8.  The IBM ERASE ALL UNPROTECTED command is now supported (but the code
    is untested because I have not found out how to get the IBM to send it).

9.  Avoid using the savebuf IBM I/O buffer for sending stuff to the IBM
    if the IBM has unlocked input but is in the middle of sending a
    multi-packet output screen.

10. When the initial screen size is suitable for an IBM model 4 (at least
    43 lines of 80 columns) or model 3 (at least 32 lines of 80 columns)
    do not make any initial attempts to switch between 80 and 132 column
    mode. Remember, however, that if the initial screen setting is at least
    132 columns and 27 lines then a model 5 will be preferred.

11. When screen sizing fails to work do not allow any attempts to change the
    size (the termcap sn/sw sequences). This also applies if the screen
    sizing has been switched off with the NOSIZER compile option.


Version 3.5 : changes from previous version:-
===========

(Note: items marked with * have been backstitched into some versions
       of 3.4 for some people's benefit)

New Features :
------------

1.  Major modifications to the Makefile structure in order to make it more
    logical and useful. The different compile options come in a different
    order with explanations. For most types of workstation everything should
    work simply by the definition of SYSTEM_TYPE as apollo, hpux, sun etc.,
    but the options normally implied by this top-level option can be
    changed later. For more information look in any of the Makefiles or in
    the README.MAKEFILE file.

2.  Do a better job of handling workstations for which the termcap (or
    terminfo made to look like termcap) information is wrong or incomplete.
    This applies particularly to workstations which can actually handle
    some ANSI control sequences (such as switching between 80 and 132
    column modes) but do not have them in the termcap entry. It also applies
    to workstations for which the termcap entry (in particular that of xterm)
    claims to have features (in particular the host-writeable status line)
    which they do not in fact have.

3.  Change the Makefiles a bit so as to allow a general-purpose tagibm-like
    system to be made on workstations other than Ultrix (although note that
    the Makefile.tagibm specifically defines the workstation as ultrix, so
    one would have to change that setting for, e.g., a Sun).

4.  The "Home" key will now move to the first unprotected field on the
    screen, rather than simply the top left.

5.  At CERN we have the local mods such that a terminal of type IBM 3278-2,
    i.e. 24*80, can have an alternate screen of 24*132 and therefore show
    wide listings. This can cause problems on a site which does not want
    this and where some application programs specify the alternate screen.
    Therefore, these CERN mods now only go in if the symbol DENSE is defined,
    normally in the Makefile.

6.  The various Makefiles will try to make the directories specified for
    the help files, options files etc., and give them a suitable mode.


Bug corrections:
---------------

1.  Allow null characters in incoming escape sequences (seen on the
    "Home" key of an HPUX!).

2.  Check if the switch to a wide screen (132 chars) fails in the initial
    setup phase: if so then refuse to be a Model 5.

3.  Correct screen sizing routine to use termcap do sequence (if it exists)
    to check correctly for a scroll region and to allow for terminal
    emulations where this down sequence may wrap from the bottom back
    to the top line.

4.  Allow for IBM connections which seem to send the 3270 commands in
    straight EBCDIC (seen on a connection via Interlink AccesMVS).

5.  In screen sizing for workstations which have a special sequence
    only try that sequence if the terminal type matches the workstation
    type (sun, apollo, maybe others).

6.  For workstation-style usage use CBREAK mode and standard full cursor
    move sequences. This is because of a possible problem on some systems
    using the newtty interface whereby they might like to add a
    carriage return to a line feed.

7.  In skipping forward or backward to fields ignore empty ones, i.e.
    those where the next position is also a field definition.

8.  In the GRAPHICS code (requires suitable IBM drivers, not GDDM) allow
    for someone using two separate reminals via a DIAL command (because
    the transparent graphics then comes headed by WRITE, not ERASEWRITE).

9.  Kermit now may work (I don't think it has worked since version 3.3!).

10. Don't request header file <arpa/inet.h>, since it does not always
    exist. However, check whether functions inet_addr and inet_ntoa
    have their typedef and include a definition if necessary.

11. Make an effort to return to the screen size which matches the user's
    initial screen after logout, to cater for if the IBM had switched
    between different (normal and alternative) screens.

12. Set the terminal interface characters correctly to the ones which
    mean we don't want the associated special action. Provoked by systems
    which can send a NUL character, which can then make an Ultrix system
    treat them as the SIGINT interrupt.

13. Only terminate transparent I/O (graphics, kermit or whatever) when
    the IBM sends an ERASEWRITE with keyboard unlock.

14. When deleting characters in 7171 mode fill in the trailing positions
    with nulls, not spaces (spaces make the command recall go wrong).

15. Wait a bit longer for answer when asking in sizer.c for cursor position.
    This is necessary for some far-away users coming in via odd routes:
    should not affect normal use.

16. Also in sizer.c, allow for terminals which are in 8-bit controls mode
    but on a 7-bit connection. On these the normal escape sequence start
    CSI character becomes a simple ESC (not followed by '[').
    The rest of the 3270 emulator is not affected because it always uses
    7-bit mode unless it actually receives an 8-bit control character.
    Note that the qterm package which is part of the TAGIBM distribution
    has the same fix.

17. Correct message into the logfile indicating the type of IBM model
    being emulated (2, 3, 4 or 5).

18. On the initial logo screen, when the user gave a name as part of the
    call move to the next field with actions backtab and tab, instead of
    with ASCII BS and HT (which might not always work). This involves
    reordering the actions so as to put these actions in a fixed place
    (second and third) in the action list specified in 3270.c.


    Known bugs
==========

1.  When called from a socket connection it is not clear that breaking
    the socket always gets noticed.

2.  The IBM (SNA) command READ MODIFIED ALL is not (yet) implemented, nor
    the WCC flag to start the printer operation.




Version 3.6 : changes from previous version:-
===========

(Note: items marked with * have been backstitched into some versions
       of 3.5 for some people's benefit)

(Note: various code mudules have been reorganised to centralise certain
       procedures, particularly the handling of IBM write-type commands
       and orders (which can come inside structured fields also) and
       putting characters onto the user display according to their
       field style, field attributes and extended field attributes.


New Features :
------------

1.  Possibility to dump a screen to a file, including specifying (in the
    defaults) parameters to allow this file to be automatically picked
    up and printed on a chosen printer or sent to a chosen email address
    as a simple text file.

2.  The various options, such as 3270 or 7171 mode, which can be set in the
    call or in the options help menu, are set up via entries in various
    opt_<something> arrays. This includes a change: the 'p' (plain mode,
    which does not use reverse video) becomes 'j'. Adding new options
    therefore becomes much easier (but the code for them still needs to
    be written, of course!).

3.  New options are :-
	i       insert mode retained over IBM attention key
	r       insert mode reset on IBM attention key
	c       change screen dump/print qualifier
	e       email address in full

4.  Makefile changes for specifying where to put screen dump files
    (including creating this directory if it does not already exist).

5.  Extra call parameters to specify the telnet port to be used if not
    the standard one:  -p <port number> (this tells you why 'p' became 'j').

6.  Support for Field Mark and Duplicate functions. These will normally
    be defined in the map3270 as ^f and ^d (cases where ^d is already
    in use are not yet changed). On the screen they should come out as
    underlined semicolon and underlined asterisk.

7.  Inclusion of extended character attributes (8 colours plus blink,
    reverse video and underscore). Is defined in the Makefile with the
    -DEXTENDED option, but depends also on having cursor sequences for
    the colours (plus a colour screen. of course). Is far from perfect,
    yet, but does allow for user selection of extended attribute provided
    that the application program gives permission. If you run the colour
    version on a mono display I think it will work more or less OK
    IF the terminal emulator just swallows the sequences.

8.  Recognise special "7171" sequences coming from the IBM and obeying
    some of them (including set/unset of insert mode).

9.  Miscellaneous changes for SYSV and SVR4 systems, including for the
    solaris SVR4.

10. Change the name of the symbols defined in the Makefiles, and used
    in the program, which define the system type (had to be done because
    on a Sun with Solaris the symbol "sun" was already defined!).

11. Additional systems which seem to work: 3b2 and alpha.

12. Include in the on-line help keyboard scanning the actual character
    sequence received, as well as whatever the map3270 converts that into.
    This should be useful for making personalised map3270 (or trying out
    new types of keyboard or workstation).

Bug corrections:
---------------

1.  Stay in simple transparent mode, with simple sending of input lines
    (plus terminating LF) until the switch to 3270-style.
    This might affect graphics or kermit modes and/or people who already
    go via some sort of front-end if that front-end requires a 3270-style
    header enclosing the data!

2.  On reset or master reset go out of insert mode.

3.  Handle multiple structured field requests, including embedded 3270
    orders and data.

4.  Correct the rock-bottom default keyboard mapping (in finddef.c, used
    when no other mapping can be found!) and the messages that tell you
    that it is being used.

5.  Do not send trailing nulls on unformatted screens (except when the
    IBM has specifically done a READ BUFFER command).

6.  When doing a cursor move for an xterm connection compiled with
    extended character attributes rewrite the current character before
    the move (necessary because some colour xterm emulators destroy
    some of the character attributes before the move, which looks odd).


    Known bugs
==========

1.  When called from a socket connection it is not clear that breaking
    the socket always gets noticed.

2.  The IBM (SNA) command READ MODIFIED ALL is not (yet) implemented, nor
    the WCC flag to start the printer operation.

