			Revision Log - Rev. 2.xx


			** Rev. 2.00 **

Major modifications for this revision are as follows:

Changes requiring user pgm re-write:
> SForm codes - The SForm completion codes and other global constants were
extensively modified.
> The prefix to all user pgm accesable fn's is now 'sf', not 'sf_'.
> sffldio() args - The arguments to this fn have been changed (see winio.c).
The args are a fld descriptor and the mode. A new fn, sfwfdio() has been added
which uses the args sffldio() used to use. Thus, the pgmr can pass either the
fld_desc ptr (sffldio()), or the window ptr and the fld number (sfwfdio()).
> Low level i/o - The low level i/o philosophy is completely different. The
'TIP' codes no longer exist, SForm codes are now used. The fn key translation
table is now in the stio<xx>.c module, which must be recompiled if the fn key
assignements are to be changed.
> Note that the display attribute codes are completely different. The user
chooses from pre-defined attribute combinations.
> User error handler fn - Support for the user supplied error handler is
currently withdrawn: Use this feature at your own risk. In particular, SForm
will retry fld i/o, irregardless of the return code from the user error fn.
> The sf_fldmod global var now returns a value of '-1' if no flds were
modified, or the fld number of the fld last modified. Currently, there is
no indication if the fld was 'cleared' by the user.

Other changes:
> Fld editing is supported. This includes delete, rubout, insert mode, erase
to end of field, and cursor motion (currently only left and right).
> The `mode' arg in the sfwinio() & sffldio() calls is now composed of bit
flags. This allows modes to be combined. In particular, DISPLAY and LABELS
mode can be combined, so that both labels and data flds are displayed in
one call to sfwinio().
> After an error/status message is displayed, SForm will always reposition the
cursor to the beginning of the current fld.
> Justification info (left, right, center) is only relevant during display of
the fld. When editing the fld, the fld will always be left justified.
> Interger i/o - 'Long' (2 byte) and 'Short' (1 byte) integers are now
supported. Unsigned long int's are not supported, but 'normal' (2 byte) and
'short' (1 byte) can be signed. Note that a non-decimal radix implies unsigned.
A new radix, binary, is now supported. Note that the default radix is decimal.
> Enumerators - Enum names can now be quoted (using single quotes). All chars
until the next quote are used for the name. Enum name comparisons (to user
supplied data) is now case insensitive. 'Blank enum names' are supported,
but note that, until abbreviations are supported, if the user enters new data
for an enum fld, the user must enter an exact match to the enum name supplied
to SForm by the user pgm. Note that, as currently implemented, there are limits
on the number & size of enum names supplied by the user pgm. The 'Next Enum'
and 'Prev Enum' fn keys are now legal only during enum i/o.



		**  Rev. 2.01  **

6/21	Unimplemented edit & control chars -
If the user enters an edit/control char which is not currently supported
(i.e. 'Home cursor'), the code for that char is returned to the user pgm.
Previously, stgetfld() beeped and continued.

6/21	Insert mode flag while editing a field -
When the 'Inser Mode' is entered, the cursor type is changed to flag that
the user is in 'insert mode'. The original cursor type is restored when the
user either hits the INSERT key again (toggling out of Insert mode), or 
when the stgetf() fn returns (normally due to unpend or error).
Note that there are situations when stgetf() may be immediately re-invoked,
in which case Insert mode is automatically disabled. (Also note that, when
stgetf() is re-invoked, the cursor is always reset to the 1st char).

6/22	Enumerator case sensitivity -
The user program can determine whether or not enumerator name comparisons are
case sensitive by using the SF_UCASE bit flag. If the flag is set, comparisons
are case insensitive (they are converted to upper case internally before
the comparison).

6/22	Enumerator name abbreviations -
A minimally unique abbreviation of an enumerator name can be entered by the
user when editing an enumerator data field. Note, however, that a null entry
matches only a null enumerator name (e.g. there must be a null enumerator in
the enumerator list). An exact match of an enumerator name is always accepted
(thus the enum list can include similar enum names).

6/25	Field justification during editing -
The justification (left, right, center) of the data flds is now retained during
editing. Note that the cursor is always set to the first char in the fld
when editing is initiated and re-initiated (after error, etc). NOTE that
trailing blanks and leading blanks or zeroes (if ZFILL set) are ALWAYS 
STRIPPED from the input when the user enters new data.
Note that right and (especially) center justified data flds can be strange
to edit. It is recommended that left justification (the default) be used
whenever possible.

6/26	Integer & enumerator masks -
The pgmr can now optionally specify a 'mask' for all integer and enumerator
data flds. The mask is a word value in the fld desc, where the hi byte is
the mask width and the low byte is the shift count. If this value is '0',
the int value is returned normally. If the mask word is non zero, the
original binary value is masked with the new data, and this updated value
is returned.
NOTE that this mod changed the fld desc structure, thus ALL PROGRAMS MUST
BE RECOMPILED.

6/27	Erase to end of fld & unpend -
The new 'fn key' SF_ERSNXT can be used to erase to end of fld and unpend
(returns SF_NXTFLD). The functionality is exactly the same as hitting
ERSEOF, followed by NXTFLD.
Note that the SF_ENTER code is currently being used as the SF_ERSNXT fn key.
The ENTER code is returned when the user hits \r or \n.

6/27	Negative zero filled numeric flds -
The minus sign in a zero filled numeric fld is now the first char in the fld.

6/28	SF_LJUST constant -
The SF_LJUST bit flag mask was removed from sform.h. This was a redundant 
value, since the default justification is left justify.
NOTE that programs which referenced SF_LJUST or SF_CJUST need to be recompiled
(SF_LJUST ref's should be deleted, and the value of CJUST has changed).

6/28	User queries on the status line -
Two new 'user fns' have been added: sfmsgio() and sfquery(). They are in the
module 'query.c'. These fn's allow the user pgm to query the user from the
status (bottom) line. See the query.c module and/or usrdoc for details.
Note that the size of the response string must be given in the sfquery()
call. The string buffer in the user pgm MUST be at least this big.
Note that the fn sfmsg() can be used to display a message on the status line.

6/28	Fld overflow during input.
During fld data input, sform will beep if the user tries to overflow the fld.
Note that, if insert mode is enabled, the overflow char(s) will not be
accepted, but (currently) if insert mode is disabled, the overflow char
overwrites the last char in the fld.
NOTE that the cursor will stay at the right side of the fld on fld overflow
(or a full fld) and thus, if the 'ERSNXT' key is hit, the last char is erased.

6/28	Field format help -
The SF_FLDFMT fn keys is now supported. Information pertaining to the current
fld being input is displayed. Note that the presentation format is preliminary;
currently, the fld format info is aimed at the 'intellegent user'.
Note that, after showing the fmt info, the cursor will return to the first
char of the current fld, and that insert mode will be off.
When enum fld format is shown, the enumerator string is displayed. The string
is normally displayed in double quotes but, if the string is too big to fit
on the status line, a substring, terminated by a '>' is shown.



		**  Rev. 2.02  **

7/2/84		'No echo' flds.
The 'no echo' bit flag (SF_NOECHO) is now supported. The fld is always
displayed as blanks, and user input is not echoed. This could be usefull
for passwords, etc.

7/2/84		Field wrapping -
The element 'sf_fwrap' was added to the window structure definition in sform.h.
If this value is set, fld wrapping is enabled: during editing, the last fld
will wrap to the first fld and vica-versa.

7/9/84		Query errors -
'User entry error' msgs are disabled during the 'user query' fns (sfmsgio() &
sfquery()). If an input error occurs, the bell is sounded and the input fld
restarted, but the error message is not displayed (sinced it would overwrite
the query line).
Note that entry errors are extremely unlikely during sfquery(), since any
string is accepted as input.
