CHANGES BETWEEN 7.6 and 7.7:
Chuck Martin
	-The openrow() function has been eliminated, and insertrow()
	 has been rewritten to eliminate looping.  The closerow()
	 function has also been rewritten to eliminate looping (it takes
	 a second argument specifying the number of rows to delete).
	 Also, the opencol() function has been eliminated, and its
	 functionality incorporated into insertcol().
	-New commands: insertrow, insertcol, deleterow, and deletecol for
	 use in advanced macros.
	-Added rowsinrange and colsinrange variable assignments in
	 doformat() function to eliminate potential lock-ups.
	-Changed many shorts to ints because they were actually increasing
	 the code size instead of decreasing it, and slowing things down.
	-Added a cbreak() to the closefile() function so you can now
	 "press any key" instead of "press RETURN" to continue.  Also
	 changed the main loop under "case '!'" in the same way.
	-Removed redundant v_name() declaration from write_fd().
	-New command: run, for running arbitrary programs (useful in
	 function key definitions).
	-The getnum, fgetnum, getstring, getexp, and getfmt commands may
	 now be used with a range argument to get data from more than one
	 cell at a time.
	-The index and stindex functions may now take a third argument
	 to index into a two-dimensional array as well as the old one-
	 dimensional version.  Also, the lookup, hlookup, vlookup, index,
	 and stindex commands will now accept their range argument as the
	 first argument instead of the second (the old order is still
	 accepted), which makes more sense with the new two-dimensional
	 index and stindex.
	-The goto command no longer duplicates the previous goto command
	 if there is an error in the command (accepting the WORD token
	 as an argument to mean "do nothing" fixed this).
	-"Showing" (listing) named ranges no longer pipes through sort,
	 since that also sorted the headings and the following blank line
	 with the data.  Instead, named ranges are inserted into the
	 list in sorted order as they're created.
	-Deleting a named range now updates modflg like it should.
	-The F1 key now defaults to running "man sc" if not redefined
	 with the fkey command, and the default also works in edit mode,
	 unlike the user-defined function keys.
	-When starting a range command with '/', if you change your mind
	 and press ESC or ^G, the error line is now cleared.
	-When using 'ns' to show which cells have attached notes, a message
	 is now presented informing the user what the highlighted cells
	 mean (I know it should be obvious, but a message reminds you in
	 case you get distracted, and forget your current cell isn't
	 highlighted).
	-startshow() and showdr() were moved from sc.c to vi.c, where
	 they can be used more easily.
	-RESCOL has been changed from a macro to an int, and renamed to
	 rescol (lowercase), so it can be changed when the spreadsheet
	 has too many rows for the row numbers to fit properly, causing
	 problems with the first displayed column.
	-The default value of mode_ind has been changed from '.' to 'i'.
	-Renamed navigate_mode() to toggle_navigate_mode() to better fit
	 its function.
	-Fixed history functions so that some lines aren't skipped when
	 moving forward.
	-Fixed TAB behavior in navigate mode so it doesn't exit navigate
	 mode, requiring you to press ^V to continue defining the range.
	-Implemented vi-like G, P, and p commands in edit mode, moved
	 ^I (TAB) funcionality from main loop to write_line(), and added
	 '.' as a synonym for TAB, and changed behavior of RETURN/ENTER
	 key in navigate mode to end input as it does in insert or edit
	 mode if a range is highlighted instead of entering the range into
	 the line like TAB or '.' does. xxx
	-The H, J, K, L, HOME, and page up/down keys now work in navigate
	 mode.
	-The savedot() function now checks to see that there are at least
	 two chars left in the dot buffer before saving if the last key
	 pressed requires two chars to store (cursor keys, HOME, etc.).
	-Pressing ESC or ^G now cancels the r (replace a single character)
	 command instead of being entered into the command line.
	-Implemented vi-like c0, d0, c$, and d$ commands, and fixed the
	 dw command again (was deleting an extra char).
	-Replaced loop in del_chars() with a memmove().
	-Implemented framed ranges, whereby rows or columns at the top,
	 bottom, left, and/or right of the range will remain onscreen at
	 all times whenever the cell cursor is in that range.

CHANGES BETWEEN 7.5 and 7.6:
Chuck Martin
	-Fixed error() macro so messages are displayed like they should be.
	 This should probably be rewritten as a regular function.
	-Added programmable function keys.
	-Added a navigate mode that can be switched to while editing a
	 line, which allows movement around the spreadsheet using any and
	 all cursor movement keys.  In addition to the control characters
	 and cursor control keys, this now also including 0, $, ^, #, h, j,
	 k, l, H, J, K, L, b, and w, which used to be unavailable while
	 editing.  The arg variable was made global so that cursor movement
	 keys can be given a numeric argument even when in navigate mode.
	 Since ^V is the command to enter navigate mode, it must be pressed
	 twice to get its former action: once to enter navigate mode, and
	 a second time (after moving to the cell you want) to enter the
	 cell address in the command line (the RETURN/ENTER key may be
	 substituted for the second ^V).
	-The ins_in_line() function is now global, so  it can be used
	 from the main loop in sc.c.
	-The /d command (for defining a range) doesn't automatically
	 start highlighting a range, since that would mean switching to
	 navigate mode, and a range name needs to be entered first, but
	 the rest of the range commands enter navigate mode and start a
	 range immediately.
	-Special keys, such as cursor control keys, the END, INSERT,
	 and DELETE keys, etc., are no longer converted to straight
	 ASCII equivalents in nmgetch(), but are passed as-is to the
	 functions where they're used.  Also, the conversions made in
	 nmgetch() for the wyse wy75 have been disabled because they
	 interfere with the programmable function keys.
	-Using the TAB key to highlight a range and enter it into a
	 command will now insert it at the cursor position instead of
	 appending it at the end of the line.
	-When editing, the current command line is temporarily added to
	 the end of the history so you won't lose your work if you go
	 back through the history, although it doesn't become a permanent
	 part of the history until you press the RETURN/ENTER key.
	-The savedot() and dotcmd() functions have been modified to save
	 and retrieve special keys like the INSERT and DELETE keys as two
	 consecutive bytes.
	-The default prefix in the Makefile has been changed back to /usr.

CHANGES BETWEEN 7.4 and 7.5:
Chuck Martin
	-Rewrote error() macro definition to fix segfaults in version 7.4.
	-Fixed division operator to eliminate segfaults in version 7.4.
	-Do NOT use version 7.4.  The above bugs make it unusable.  My
	 sincere apologies for not testing thoroughly after some last
	 minute changes.

CHANGES BETWEEN 7.3 and 7.4:
Chuck Martin
	-Added a BUGS file that lists known but not-yet-fixed bugs.
	-Lots of changes to allow -Wall to be used with gcc without too
	 many warnings, including additional #includes in some files,
	 parentheses around assignments used as booleans, braces in the
	 sed files, and the removal of many register declarations.  -Wall
	 is not used by default in the Makefile because a few innocuous
	 warnings remain that may worry some people if they don't under-
	 stand them.  Also changed -O to -O2 in Linux section CFLAGS.
	-Added an uninstall target to Makefile.
	-Before jumping to a new cell (any movement except simple cursor
	 movements or half-screen movements), the location is remembered,
	 and may be returned to by using either `` (to restore the cell
	 cursor to its original location on the screen) or '' (to do a
	 simple jump to the cell without regard to where it exists on the
	 screen).  This is similar to the way vi works.
	-The Write command now puts date formatted values in the correct
	 columns instead of at the beginning of the line ("pline" was
	 changed to "pline+plinelim" in printfile() function).
	-Added a check for rfd != NULL in openfile() function so /s
	 command and writing to a pipe will work again without segfaults.
	-Notes can be attached to cells, which amounts to providing a link
	 to a range that can be jumped to quickly.  See man page for details.
	-Backslash-escaped double quotes now work properly in strings,
	 such as filenames.
	-If stdin is not a tty, no attempt is made to write the data to the
	 screen.  Also, startdisp() and stopdisp() become no-ops, and the
	 first startdisp() has been moved to just before the main loop.
	 This allows sc to work better in a pipeline for non-interactive
	 use.
	-Implemented vi-like F and T commands for moving backward in
	 a command line in edit mode.
	-Deleting to a character in edit mode with dt, df, dT, or dF now
	 works properly even if the character is not found.
	-If a cell changes from ERROR or INVALID to a value of 0, the
	 cell will now be updated properly on the screen without having
	 to force an update by moving it offscreen and back on or doing
	 a ^L.
	-If the denominator of a division operation references a cell
	 with an ERROR, the result will correctly show INVALID instead
	 of ERROR.
	-More "style" changes to code for more consistency, and other
	 minor changes of little real effect or consequence.

CHANGES BETWEEN 7.2 and 7.3:
Chuck Martin
	-Fixed doend() function to prevent occasional lock-ups when using
	 ^E or the END key.
	-When outputting formatted data with Write or Tbl, dates formatted
	 with Fmt are now converted and output correctly.
	-Makefile has been rewritten, with many unused targets removed,
	 "clobber" target renamed to "distclean", ${prefix} variable
	 defined to allow installation directory ${prefix} to be specified
	 (/usr/local is now the default), among other things.
	-Added start-up files $HOME/.scrc and ./.scrc for configuration
	 commands.  New commands added for specifying default filename
	 extensions are: scext, ascext, tbl0ext, tblext, latexext,
	 slatexext, and texext.  Also added `set scrc' (see man page).
	-If the filename ends in either .sc or the user defined extension
	 for regular sc files (scext - see the man page), this extension
	 will be stripped first before a new extension is appended by the
	 Put, Write, or Tbl commands.  If scext is defined, it will also
	 be appended when saving a file with the Put command if it isn't
	 already present.
	-Created temporary string variable for manipulation of filename
	 when adding/deleting extensions before saving a file, since
	 there wasn't always room in the existing space.  This also
	 fixed a bug when expanding `~/' or `~user/' into a user's home
	 directory.
	-Expanding `~/' or `~user/' into a user's home directory now also
	 works with pipes.
	-Much longer file names are now allowed when adding extensions
	 on filesystems that allow them.  The actual length allowed is
	 filesystem dependent.
	-A filename of `-' can now be used to tell sc to read spreadsheet
	 data from the standard input.  Also, multiple files can now be
	 specified on the command line, and they will be merged, with the
	 default filename being taken from the first one if possible.
	-Added an "advanced" macro capability, where commands and data
	 are passed through pipes.  New commands added are: up, down,
	 left right, endup, enddown, endleft, endright, |whereami,
	 |getnum, |fgetnum, |getstring, |getexp, |getformat, |getfmt,
	 recalc, redraw, and quit.  Documentation is still sparse.  Only
	 available on systems which support pipes.
	-The mdir command no longer automatically appends a `\' to the
	 path you enter, so that an actual filename can now be used
	 (this is handy for advanced macros, which might contain more
	 than one macro in a file, so you can add command line switches
	 and arguments to the defined string instead of a filename).
	-Removed modflag++ from readfile() so sc doesn't assume the file
	 was changed just because a macro was run.  If a macro changes a
	 file, modflag will be updated when the change occurs.
	-Significant digits in the fractional portion of a number were
	 being lost if preceded by a 0 when the format specification used
	 #'s.  An "else break;" if a nonzero digit was found when looking
	 for trailing 0's fixed this.
	-Decimal points are now suppressed if there are no significant
	 digits after the decimal point in a formatted number.
	-The g (goto) command now has an optional second argument when
	 used for searching that can be used to specify a range to search
	 instead of always searching the whole spreadsheet.
	-Range names can now be less than three letters without being
	 mistaken for column names, and may also contain any mix of
	 letters, numbers, and underscores, as long as it isn't a valid
	 cell address and the first character isn't numeric.
	-Rewrote the evaluation of the `-' and `=' operators and added
	 an fflush(stdout) to each to force optimizing compilers like
	 gcc to pop the FPU stack so both sides of the calculation have
	 the same precision.  Otherwise, comparisons would sometimes
	 fail when they shouldn't, and subtractions that should be zero
	 sometimes wouldn't be.  This (differing precision due to the
	 FPU) also turns out to be the cause of the spurious "Still
	 changing after x iterations" message, which was fixed previously.
	-Removed toascii() in several places in nmgetch() to make sc
	 8 bit clean and suitable for international use (international
	 characters can now be entered as data in cells).  Also removed
	 -DINTERNATIONAL from Makefile and elsewhere, since it should
	 no longer be necessary.
	-Removed unused ClearScreen variable.
	-If the -e command line switch is used, rndtoeven is set both
	 before and after loading the files, so that it will override
	 the contents of any files loaded.
	-When editing a cell's existing format string, the cursor now
	 starts out at the last character instead of after the last
	 character.
	-No longer tries to center a range that's wider than the screen,
	 which was causing lock-ups.
	-If current cell highlighting is on, turn the cell pointer (<)
	 off (don't need both) and hide the hardware cursor at the lower
	 right-hand corner of the screen unless editing a command on the
	 top line.
	-Row indicators are now right- instead of left-justified.
	-Turn off highlighting on row and column indicators for the
	 current cell so they stand out.
	-Implemented vi-like e command to go to next end-of-word in edit
	 mode.  Also, cw now works just like ce, as it does in vi and its
	 variants.
	-If deleting the last character in a line, x now backs up as in
	 vi et al.
	-Many more minor changes that will probably not even be noticed.
Michael L. Hall
	-Don't quote (via a backslash) the "[" and "]" characters in
	 LaTeX table output.

CHANGES BETWEEN 7.1 and 7.2:
Chuck Martin
	-A dummy fflush(stdout) was added to the RealEvalOne() function
	 to work around a strange bug which causes spurious "Still
	 changing after x iterations" errors when automatic optimization
	 of expressions is off (the default).  This still needs a
	 proper fix.  See the BUGS file for more information.
	-The goto (g) command now accepts an optional second parameter
	 which specifies which cell is to be located in the upper lefthand
	 corner of the screen, if possible.  When saving the file, this
	 parameter is included in the goto command that brings you back
	 to where you left off.
	-The mark (m) command remembers not only which cell the cursor is
	 in, but also which cell is in the upper lefthand corner of the
	 screen.  The ` command uses this information when returning to
	 the cell, but the ' command does not, so you can decide whether
	 to center the marked cell when returning (') (assuming the cell
	 is not currently visible) or whether to try to restore it to
	 its original position on the screen (`).
	-If the destination of a goto command is a range instead of
	 a single cell, the whole range is centered on the screen,
	 if possible, instead of the upper lefthand cell of the range.
	 Named ranges in the tutorial have been adjusted to use this fact.
	-If quick numeric entry mode was enabled and you started to enter
	 a number, then changed your mind and escaped out of it, any
	 subsequent cursor movement (except h, j, k, or l; i.e. only
	 control key combinations and cursor keys) would put you back into
	 insert mode.  Setting numeric_field back to 0 in the stop_edit()
	 function in vi.c fixed this.
	-Cursor control keys now work properly while in quick numeric
	 entry mode if craction is set to other than no action (it used to
	 follow both desired cursor movement and craction direction).
	-Implemented vi-like C and s commands in edit mode.  See the man
	 page for details.
	-All instances of rndinfinity have been changed to rndtoeven and
	 all tests have been reversed to make the old rndinfinity behavior
	 the default rounding method and round-to-even (banker's rounding)
	 an option.  A new command line switch, -e, allows you to set
	 rndtoeven when sc is started.	Round-to-even may be superior
	 for some applications, but it isn't the way most people round
	 or expect rounding to be done.  Spreadsheets which explicitly
	 set rndinfinity will display an error when loading, but will
	 behave as intended and will save without it.  Those which don't
	 set rndinfinity but depend on the former default behavior will
	 have to either be started with the -e option or have rndtoeven
	 set manually the first time they are loaded.  The advantages
	 of setting rndtoeven for some applications have been added to
	 the man page.
	-The craction toggle has been redone (again) to prompt for the
	 direction you want to move after entering data in a cell.
	 See the man page for more details.  Also, craction now only
	 has an effect if data is being assigned to the current cell
	 (i.e. the command just entered starts with either "let", "label",
	 "leftstring", or "rightstring").
	-Placed parentheses around all "OP_BASE + ..." macros in sc.h
	 to stave off potential problems and increase robustness.
	-Many more additions, deletions, and changes (too numerous to
	 mention) to remove unused and unnecessary stuff, fix minor bugs,
	 and make for more uniformity of style.

CHANGES BETWEEN 6.21 and 7.1:
Chuck Martin
	-Converted function declarations and definitions from K&R style
	 to ANSI style.
	-Removed unnecessary function declarations for standard library
	 functions.
	-Multiple marks (up to 26) may now be set with m and copied with
	 c.  Marked cells may also be jumped to by using either ` or ' as
	 in vi.  For now, ` and ' work exactly alike, but this will change
	 in a later release.
	-Expressions which resolve to a constant are no longer automatically
	 optimized by default, but optimization may be turned on if desired
	 with ^To or the -o commandline option.  This allows you to edit
	 expressions instead of having to reenter them from scratch.
	-Rewrote the @dts function from scratch.  It is now Y2K compliant
	 and allows parameters to be entered in y,m,d order as well as the
	 old m,d,y order (the proper format is detected automatically).
	-Removed support for the undocumented feature added previously by
	 David Fox (sorry, David!) which allowed dates to be entered as
	 dd_mm_yy and replaced it with a similar feature which allows
	 dates to be entered as y.m.d or m.d.y.  This is actually just a
	 shorthand way of entering the @dts function using only the numeric
	 keypad, providing the year, month and day are all purely numeric
	 (no formulas), and the year must include the century.
	-Rewrote the date formatting routine to use strftime() and added a
	 second date format (format 4) identical to the regular one (format
	 3), but with a four digit year.
	-Cells may now contain date formatting strings, entered with F,
	 which work similar to the standard numeric formatting strings, but
	 allow all the same conversion specifiers as strftime() to format a
	 date.  A ^D as the first character in the string is used to
	 distinguish a date format string from a standard numeric format
	 string.
	-^L now redraws the screen as it was instead of attempting to
	 center the current row.  Added a C command for centering the
	 current row.
	-Changed main() in help.c to type int (was void).
	-Cells in columns pi, ln, fv, pv, and if may now be referred to
	 in expressions (they previously conflicted with two letter
	 function names), but the number pi now requires the @ in front
	 of it to work (@pi).
	-The Insert and End keys now work.  Insert works exactly like i
	 and End works like ^E.
	-Moving up and down half a screen at a time now works much better.
	-Pressing Escape to exit insert mode now backspaces to be more
	 consistent with the behavior of vi and its variants.
	-Moved switch (craction) from ^M/^J part of main input loop to
	 if clause in cr_line() so that pressing RETURN to enter input
	 mode won't move you to another cell if newline action is set to
	 something other than the default no action.
	-Added a test in deleterow() to prevent segfaults when deleting
	 too many rows.
	-^Tr now enters a special toggle mode instead of just toggling the
	 newline action, since there are three options instead of two.
	 That way, if you need to toggle twice in a row to get the action
	 you want you can use ^Trr<RETURN> instead of ^Tr^Tr, which I
	 think is easier (the second r can be any key except <RETURN>).
	-Removed a line from the tutorial because the first page was one
	 line two long for a 24 line screen.  This really needs to be
	 completely rewritten, IMHO.
	-There are probably many more bug fixes and other changes including
	 style changes to make the code look more consistent that I've
	 forgotten or that I was just too lazy to figure out or document
	 properly, but they're mostly minor.

CHANGES BETWEEN 6.21 and 6.19
Mark R. Rubin
	-noted a problem using bison 1.16 (use any version but 1.16)
Marco S Hyman/Ian */and others
	-Crypt/CRYPT_PATH define problem
Paul Eggert
	-sc.doc $Revision: 6.21 $ 'buglet'
Ulf Noren/Dave Lewis
	-AIX3.1/Microport System V/AT don't have notimeout()
		changed NONOTIMEOUT to NO_NOTIMEOUT, define if not present
Niels Baggesen
	-function keys may not return ascii codes that isascii() understands
	-added an A command for vi mode (add at end of row).
	-Special key support: DC='x' (del char in vi mode), FIND='g' (goto),
		HELP='?', SELECT='m'
Dave Davey
	-noted Ultrix 4.2 curses doesn't have idlok()
		[I added NO_IDLOK in Makefile]
Kim DeVaughn
	-added ${RIGHTBUG} is now passed to sc.o && screen.o
	-suggested a better fix on SunOS 4.x dont use the Sys V
	 package (CC = /usr/5bin/cc, etc), but use the BSD 4.3 defines
David Bonnell
	-scqref [will produce] TROFF output instead of plain text, 
	 [when] you define QREF_FMT=TROFF in the Makefile.
	 The resulting quick reference guide uses the MS macro set and you 
	 build with something like:
		scqref > quickref
	 	troff -ms quickref > quickref.ps
Kurt Cockrum
	- sc.h:
		If not (defined(BSD42) || defined(BSD43) && !defined(ultrix)),
		include <memory.h> for the benefit of some USG systems...
	- screen.c:
		Repaired cpp logic:
		don't mention IDLOKBAD or idlok() unless SYSV3 defined;
		idlok() does not exist for USG pre-SYSV systems (may exist for
		SYSV{2,3,4}).
	- tutorial.sc:
		Repaired a number of off-by-1 errors.
Mats Wichmann
	-cleaned up Robert E. Cousins MIF format support code which is
		compatible with FrameMaker.
Neil Skilling
	-added @numiter which returns the number of iterations performed.
	 It allows you to solve equations by direct substitution. Taking a
	 guess from another cell if the first iteration otherwise taking the
	 last best iterate. Other uses may be found.
Martin MacLaren
	-MS-DOS cleanup of Makefile
Art Mulder
	-^T toggle: don't list crypt if not available
John Amanatides
	-pointed out a possible NULL ref in interp.c
Phil Johnson
	-sc now appends: "asc", "cln", "tbl", etc. to output files
	-made the engineering format match that used by an engineer
	-deleted an unused engmult[] reference
	-added a fix to struct enode for the HP compiler
Kevin Cosgrove
	-noted sc should use any predefined PI
Jeff Buhrt
	-'make clean' now leaves the binaries and man pages [Jean-Pierre Radley]
	-'make clobber' cleans all built files (like clean used to) [""]
	-'-D' vs '-S' was needed on a XENIX2_3 line [""]
	-'quit()' -> 'doquit()', function conflict [""]
	-change xmalloc,xrealloc,xfree -> scxmalloc,scxrealloc,scxfree
		(xmalloc is a standard malloc)

CHANGES BETWEEN 6.19 and 6.18
Tom Tkacik
	-sc.doc and CHANGES changes
Edgard
	-moving right off the screen now redraws vs optimize
Sisira Jayasinghe
	- added build.com (VMS) and VMS fixes
Jonathan I. Kamen && Charlie Shub
	-noted fmod doesn't exist on BSD4.3 and Mt Xinu 
Ben Priest
	-vi compatability: ' ' moves right as well as 'l' while line editing
Jeff Buhrt
	-one more possible NULL pointer fixed
	-added NONOTIMEOUT for those that don't have notimeout() in curses
	-undef CRYPT=-DCRYPT_PATH... if crypt isn't available
	-merged simple fmod into interp.c if fmod() is not present

CHANGES BETWEEN 6.18 and 6.17
James Dugal	
	- NULL pointer fix for is_locked
Kevin Pye
	- add a new mode suitable for entry of large amounts of data.
		moves to next cell on return, maxrow/col when to start
		entering in the next row/col. (see help screens B&C)
	COMMANDS ADDED: ^Tz, ^Tr, Srowlimit=?, Scollimit=?
David Fox - added a date format so that columns whose values are the number
	of seconds since 1/1/70 will be displayed as dates in the format
	dd-mmm-yy, and a modification to the grammar so data entered in the
	format dd_mm_yy will be converted into the number of seconds since
	1/1/70.
	COMMANDS ADDED: f # # 3
Teus Hagen
	- labels are centered strings
	- constant strings with '\' preceeding character will
	  be wheeled over the column width
	- a restart of sc on an sc file will go to last used cel
	- added toupper, tolower and do proper word capitalization
	COMMANDS ADDED: @toupper(), @tolower(), @capital(), @pi, "\[String]
Jeff Buhrt
	- external functions null/previous message was backwards
	- cleaned up help.c by inserting a new screen
	- found a possible NULL pointer in screen.c

CHANGES BETWEEN 6.17 and 6.16
Ulf Noren
	- added cell locking, disallowing input, to ranges of cells
Herr Soeryantono
	- I added ifdef's around curses KEY_* functions his curses didn't have
		(Sun/OS 4 on a SPARC)
Jay Lepreau
	- changes to tutorial.sc: how to get out, should be used w/ 24 lines
	- IDLOKBAD was not passed to screen.c
	- suggested error messages if the execl of crypt fails
	- pointed out BSD's crypt is in /usr/bin/crypt
Henk P. Penning
	- suggested Makefile list the mode of the man page & tutorial.sc
	- make install will now install the psc man
	- yylval was not known in lex.c for HP-UX 7.05
Edgard
	- hitwinch fixes
	- KEY_HOME now takes you to 0,0
CHECK KEY_NPAGE/PPAGE
Stephen (Steve) M. Brooks
	- suggested the man pages should include Sc's revision
Dan Banay
	- code to set LINES and COLS after a window size change
Bart Schaefer
	- @myrow/@mycol fix
Bruce Jerrick
	- noted ln may not always work for the temporary source files
Gene H. Olson
	- fixes for SIGWINCH for Sun OS 4.1.1
Teus Hagen
	- added three functions:
		1) allow @PI as well
		2) @upper/@lower for casing characters in a string
		3) @capital for upper case first char of words in a string.
Martin Maclaren
	- added MS-DOS support
		COMPILER USED: Microsoft C, 5.1
		TOOLS USED   : NDMAKE GNUBISON GNUSED PCCURSES
Cuong Bui
	- has a working Vietnamese version of sc, noted a A_CHARTEXT
		mask problem
Jeff Buhrt
	- when numeric prescale is on: 300 -> 3.0, now 300. -> 300. not 3.0
		(numbers with a decimal aren't scaled)

CHANGES BETWEEN 6.16 and 6.15
Tom Tkacik
	-fixed a bug in ^W
Jonathan I. Kamens
	- added Makefile rules so scqref and psc don't clobber .o's
Larry Philps
	- fixed a SCO XENIX vs M_XENIX problem
	- fixed a problem where dosval() might not xmalloc enough memory
Dave Close
	- fix for Xenix 2.3 to reset terminal modes

CHANGES BETWEEN 6.15 and 6.14
Lowell Skoog
	- fixed a bug in 'F'ormat
Henk Hesselink
	- format.c double neg. sign 
	- interp.c minr/minc bug, plus modflg wasn't set
	- fixed a hardcoded path in sc.doc
	- improvement: 
		-show current cell format in top line
		-[buhrt: go into edit mode on the old format if it existed
			otherwise insert mode]
Jonathan Crompron
	- made sure doformat() does a checkbounds()
Stephen (Steve) M. Brooks
	- pointed out -s in psc was broke
Michael Richardson
	- fixed negative numbers in exponential format

CHANGES BETWEEN 6.14 and 6.13
Mats Wichmann
	- Sys V R4 patches, fixed 'Press RETURN ...' on a shell command
Tim Theisen
	- changed #define for memcpy/memset under ultrix
Rick Walker
	- Added @myrow and @mycol to give the row/col of the current cell
	'The two functions are @myrow and @mycol, which return the numerical
	row and column of the calling cell.  The cell directly above a cell
	in the D column could then be accessed by @nval("d",@myrow-1).'
	NOTE: @myrow and @mycol can't be used in specifying ranges.

CHANGES BETWEEN 6.13 and 6.12
Rick Walker
	- pointed out a move(x,y)-> (y,x) in sc.c
Glenn Barry
	- Further SunOS 4.X cleanups
Tom Tkacik
	- made sure 'J' moves downward 1/2 a screen even at the bottom
David I. Dalva
	- pointed out crypt may not be in /bin/crypt
Gregory Bond
	- allows the vi-mode editing of very long expressions
		(> 1 screen width) to work on 2nd + subsequent lines
Tom Anderson
	- "let A1 = aaa" (where aaa is defined as A0:A0) is now valid
	- added autolabeling
		'When there is an empty cell to the left of a cell that has
		just been defined (with /d), a label is created in the blank
		cell.  The label holds the definition that has just been
		created.  This labeling is only done for definitions of single
		cells (and not for ranges).'
		'The feature can be turned on and off with a toggle (^T)
		command'
Petri Wessman
	- Added support for SLaTeX, 'a Scandinavian version of LaTeX, in
		intensive use ... in Finland and in Sweden'
Jeff Buhrt
	- vmtbl.c explictly set arrays of pointers to NULL, vs memset()
	- psc   [-P] plain numbers only:a number only when there is no [-+eE]
		[-S] all numbers are strings
	- psc: a number must end in [0-9.eE] anything else makes it a string
		(4, 4., 4.5, and 4e are numbers; 4-, 4+, etc are not).
	- psc: made sure we grow enough when we call growtbl()
	- cleaned up the Makefile w/ a few suggestions
	- SIGWINCH is delt with next time the screen would update (testing)
	- added IDLOKBAD to get around a SysV curses bug (see Makefile)
	- moved screen functions into screen.c (except for one indirect
		'repaint()' call in sc.c, and help.c)

CHANGES BETWEEN 6.12 and 6.11
James Dugal
	- added format.c to SRCS in Makefile
	- noted RETURN didn't enter insert mode
Peter King
	- pointed out iscntrl is broken on some other systems as well
	- sent some lint cleanups
Michael Richardson
	- patch to stop format looping when scientific notation was selected
Glenn T. Barry
	- code to turn on hardware scrolling and added 'slow speed display'
		speedups, default for SYSV3 or see -DSUNOS41SYSV in Makefile.
Tom Tkacik
	- fixes to make sure J and K move same amount, and re-added H code
Jeff Buhrt
	- fixed a possible xfree(NULL) in getent() (found when adding K_VAL)
	- merged compiler cleanups
*	- added $(name)qref to print a Quick Reference card
	- got rid of INVALIDS that may have been left around
*	- pressing return on a empty line puts you into insert mode
		(like in <=Sc6.1). When entering you can also press ESC
		to go into the editor (no change); this is also documented
		now so it might stay around this time.

CHANGES BETWEEN 6.11 and 6.10

Jonathan I. Kamens
	- sc.doc now mentions the tutorial file in the FILES section
Andy Fyfe
	- pointed out 3 locations where a NULL should have been '\0'
Robert Bond
	- pointed out the ERROR could hide a cellerror
Piercarlo Grandi
	- H,J,I,K now move 1/2 screen
Ulf Noren
	- changes for AIX V3.1
		- defined CHTYPE and NLS for the preprocessor. CHTYPE is
		the type of every character in a curses window.
		- Added KEY_BACKSPACE to nmgetch
		- strtof ifdef
	- Iteration change: when Sc says: "Still changing after 9 iterations"
	Sc at that point will have eval'd 9 times
Chris Metcalf
	- pointed out I broke setlist when adding 'goto {error,invalid}'
James P. Dugal
	- iscntrl() wasn't handling TABS though CRs under Pyramid OSx4.1
Peter King
	- BROKENCURSES patch for nl()/nonl() bug on some BSD systems
	- backups, tutorial file, and man references now depend on $name
	- DFLTPAGER to DFLT_PAGER fix

CHANGES BETWEEN 6.10 and 6.9

Tom Tkacik
	- when moving off the current table (resizing) now move the cursor
		on 'l' or 'k'.
	- patches to sc.doc to correctly format the vi-mode notes
Jim Clausing
	- made sure / doesn't try to divide by zero.
Tom Kloos
	- correction to substr() example in help.c
Piercarlo "Peter" Grandi
	- Disable non-constant expressions while loading
	- Added extra code in dealing w/ floating point exceptions
	- #ifdef'd SAVENAME (vs hardcoded SC.SAVE) to allowing changing the
		emergency save name.
Casey Leedom
	- Makefile changes: man extension, RINT note, make values should
		never be left undefined and then referenced, don't leave
		around *.old's
Tom Anderson
	- patches to add type of column format (note format now has 3 args)
Jeff Buhrt
	- xmalloc/xfree fatal() will now call diesave()
		(MAKE SURE the saved file is ok if this were to happen)
	- history[] is now a circular queue, this will cut down on the
		number of data moves and also xmalloc/xfree calls
		(idea from Keith Bostic)
	- cells with an error (ex: divide by 0) will show 'ERROR'
	- you can 'goto error' (or 'goto') to find an ERROR (for next ERROR)
Robert Bond
	- When in numeric mode the ^B, ^F, ^N, ^P key will end a numeric entry.

CHANGES BETWEEN 6.9 and 6.8

Jim Richardson
	- pointed out vi mode was not documented in sc.doc
	- found a nasty buffer limit bug in savedot()
	- a side effect was ^D could cause a core dump (-Jeff)
Tim Wilson
	- Hints on compiling on Ultrix
Eric Putz
	-patch for printfile() (sc died on huge # of columns in a W)
Jeffrey C Honig
	-patch for lex.c which bombed on SunOS 4.1 if $TERM was not set
Tom Kloos
	-psc now calls [+-.] strings vs numbers.
	-also pointed out a format reversal problem
Jack Goral
	-changes to Makefile to compile under SCO Unix V rel 3.2.0
Mark Nagel
	-changes to allow arbitrarily complex formatting of cells 
Kim Sanders
	-^W generated an incorrect equation (line was not started at beginning)
Mike Schwartz
	-a put command will use the same encryption key as when the
	file was read.
	>I have a suggestion for making the encyrption option of "sc" more
	>usable:  Right now, if you use the -x option when you start up sc, it
	>prompts you for the key (just like "vi -x" does).  But when you try to
	>write the file out using the Put command, it asks for the key again
	>each time.  Why not make it use the same key you used before (as "vi
	>-x" does)?  That would really help, because as it is, each time you try
	>to save the file you run the risk of mistyping the key.
	>
	>You might think this causes a security problem, since the key is then
	>an argument to crypt, and hence is visible from ps.  But when crypt
	>runs, the first thing it does is to copy the key to an internal buffer
	>and then zero out the argv copy, so the window of vulnerability is
	>vanishingly small.
Adri Verhoef
	- pointed out a ^D caused a core dump (fixed)
Gene H. Olson
	- format now grows the spreadsheet before setting the column format.
	- removed an extra ';' that caused a possible column number trashing
Paul Eggert
	-sc now also has round-to-even, also known as ``banker's rounding''.
	>With round-to-even, a number exactly halfway between two values is
	>rounded to whichever is even; e.g. rnd(0.5)=0, rnd(1.5)=2,
	>rnd(2.5)=2, rnd(3.5)=4.  This is the default rounding mode for
	>IEEE floating point, for good reason: it has better numeric
	>properties.  For example, if X+Y is an integer,
	>then X+Y = rnd(X)+rnd(Y) with round-to-even,
	>but not always with sc's rounding (which is
	>round-to-positive-infinity).  I ran into this problem when trying to
	>split interest in an account to two people fairly.
	-While we're on the subject, @round(X,Y) should also work when Y
	>is negative. For example, @round(123,-2) should yield 100.


CHANGES BETWEEN 6.8 and 6.7

Jeff Buhrt (with help from some beta testers-Thank you)
	  1) added a per row memory allocation
		-runs in about 1/2 run time and 1/3 the space of 6.6vm.1
		-insert/delete row now just moves pointers (# == maxrow+1-currow)
			and blanks one row (of columns (maxcol))
		-as the number of cells grows the size is more linear
			(no more ##Meg images except for 100,000's of rows....)
		-row to column pointer translation is done by a macro (ATBL)
			that returns a pointer to the cell pointer.
			*ATBL would be a pointer to a *ent (cell).
		-the maximum # of columns is limited by ABSMAXCOLS or
			sizeof(struct ent *)*maxcols (whichever is smaller)
			(702 * 4 = 2808 is no real limit even for 286 large model)
		-the maximum # of rows is limited by the virtual memory limit or
			sizeof(struct ent **)*maxrows (whichever is smaller)
			(4*X=64k, X=16384 rows (excluding malloc overhead) on
				a '286 large model. Even w/ 3.25Meg and 10Mhz)
			(plus of course any memory used for cells)
	2) dolookup (int vs double)
	3) dolookup calling eval w/ ent * not enode *
		 (dolookup called w/ ent * not enode *)
	4) cleaned up a lot of .... *x = 0 to  (.... *)0 (cmds, interp)
	5) psc: fwidth/precision were reversed on the output
	6) Backup copy (on save) using same mode to [path/]#file~
		 (will prompt if a backup fails)
	7) put y/n prompt function into yn_ask(mesg)
	8) found a move(x,y) in sc -> move(y,x) and only move when needed
	9) we use FullUpdate || changed (to see if ANY cells changed) 
		before trying to redraw the screen in update
		(now we don't try to redraw every time a key is hit)
		-if we are stand[ing]out we do not create a cell just to force a
		 standout inside the repaint section of update()
		-only draw blank cells if we cleared it or it is standing out
		reason: the less work (what to update) curses has to do, the faster
			a screen update will be (less cpu required)
	14) {insert, delete}col replaced w/ {open,close}col(currow, numcol_to_insert)
		(limits looping)
	6.7.1.1
	15) goto nonexistant cell may loop
	16) make sure that startup size will at least fill the screen w/ cells.
	17) added version.c
	6.7.1.2
	18) When we would normally die w/o saving (SIGQUIT, etc), we now ask
		if people would like to save the current spreadsheet.
		If 'y', saves to the current file name, otherwise ~/SC.SAVE,
		then /tmp/SC.SAVE if all else fails.
	6.7.1.3
	19) don't use malloc.c for production code
	20) progname is now truncated to just the basename (systems w/ long paths
		caused problems)

CHANGES BETWEEN 6.1 and 6.7

Dave Lewis - 
	Found and fixed a null pointer derefrece in the 'R' command.

Rob McMahon -
	Changed the ctl() macro to work with ANSI style compilers.
	Cleaned up some non-readonly text problems.

Rick Linck -
	Fixed a bug in lex.c - Ann Arbor Ambassadors have long ks and ke
	termcap entries.

Sam Drake -
	A fix for undefined C_* symbols in AIX.

Peter Brower -
	Cleaned up the INTERNATIONAL ifdefs with more portable code.

Glen Ditchfield
	Cleaned up a problem in crypt.c when the encrypted file shrank.

Bob Bond -
	Vi style editing for the command line.
	A bug in range name aliases.

Jeff Buhrt -
	-Added "~" filename expansion.
	-702 columns (A-ZZ) and unlimited rows/cells based on max. memory
	-fixed a few bugs
	-slightly decreased CPU usage
	-MAKES backup copies of files
	-understands ~$HOME stuff

CHANGES BETWEEN 5.1 and 6.1:

Andy Valencia -
	xmalloc aligns data to a double boundary.

Lawrence Cipriani -
	Fixed a bug in the "do you want to save this" sequence.

Soren Lundsgaard -
	A null pointer derefrence.

Rick Perry -
	Cleaned up a problem with modchk() in sc.c.

Gregory Bond -
	Added code for multi argument versions of @min and @max.

Tad Mannes -
	Added code to save/restore hidden rows and columns when the
	data base is saved or restored.

Marius Olafsson -
	INTERNATIONAL changes.  Allows full 8 bit characters (if
	curses supports them.)

Kurt Horton -
	Added support for @pv, @fv and @pmt financial functins.
	Tested lots of different systems, linting.

John Campbell -
	Support for VMS.  See VMS_NOTES.

Peter King -
	 User selection of row or column order for recalculation.
		Also affects order of traversing regions in /f and /r
	 User setting of automatic or manual recalculation.
	 User setting of number of times to try recalculation.
	 + and - commands when in non-numeric mode to do 
		increment and decrement operations.
	@index, @stindex, @atan2, @lookup  functions.
	Save/restore options.
	Support for TeX, LaTeX, and better support for tbl in "T" cmd.
	Provision of a copyent function to copy entries (same code repeated
		in several locations)
	Forwrow, backrow, forwcol, backcol functions to replace
		repeated code
	Correct interpretation of ESCAPE or ^G as an abort when in a 
		two character command such as 'ar' or 'ac'
	Cleanup in eval() - catches non-trap function errors.

Bob Bond - 
       Added search options to "g".
       Added supression of hidden columns to "W"
       Added the mod operator "%"
       New help functions.
       Constant prescale "$"
       Added string matching to @lookup.
       Some more bug fixes.
       Testing, integration, documentation.

Alan Silverstein-
	Greatly revised the manual entry.
	Added menus for ^E command and row/column commands, which
	involved a bunch of code cleanup.

	Changed top row display to clearly indicate string labels
	versus number parts, and to distinguish string functions from
	constant labels.

	When the character cursor is on a cell (not topline), ^H
	(backspace) is like ^B (move back one cell), rather than being
	ignored.

	When the character cursor is on a cell (not topline), ^I (tab)
	is like ^F (move forward one cell), rather than being ignored.
	^R is no longer identical with ^L.  Now ^R highlights all cells
	which should be entered by a user because they contain constant
	numeric values (not the result of a numeric expression).

	Added a ^X command, similar to ^R, which highlights cells which
	have expressions.  It also displays the expressions in the
	highlighted cells as left-justified strings, instead of the
	label and/or value of the cell.

	Added indirection functions (@nval() and @sval()) for simple
	table lookups.  Given a column name and row number, they return
	the numeric or string value of the selected cell.

	Added external functions (@ext()) for non-trivial
	computations.  Given a command name and argument, it calls the
	command and reads back one output line.

	Added a ^T,e command to toggle enabling of external functions.

	Changed ^T,t to only control the top line display, and added
	^T,c to control current cell highlighting.  (Separated the
	functions.)

	"!" (shell escape) gives a vi-style warning if there were any
	changes since the last write.  (No change to manual entry.)

	Fixed some startup, error, and prompt messages to be cleaner
	and/or more consistent.  (No changes to manual entry.)

	Fixed a bug:  If @substr() upper bound (third parameter) is
	past the end of the string operand, return the substring
	through the end of the string, rather than returning a null
	string.

	Fixed a bug:  Reset SIGINT to default after forking before
	calling shell escape program and before starting pipeline (for
	commands which support this).  Didn't reset SIGINT before
	calling crypt and external functions because in both cases it
	should be irrelevant.  (No change to manual entry.)

CHANGES BETWEEN 6.1 and 6.2:


Chris Cole-
	Compatibility with Lotus 1-2-3
		a) @hlookup(expr,range,expr)
		b) @vlookup(expr,range,expr)
		c) @round(expr,expr)
		d) @if(expr,expr,expr)
		e) @abs(expr)
