Go to the first, previous, next, last section, table of contents.


Changes from Version 1.2 to Version 2.0

*
Fixed unix version of SM to accept redirected input. Who knows for VMS?
*
Command line is read differently. The old behaviour (read one argument, treat it as a macro file, read macro file, strip path/suffix and attempt to execute) is preserved as the -m option. Otherwise, simply execute command line after the startup macro
*
Added logfile option to command line (-l logfile), mostly for debugging
*
Allowed FOREACH var { list1 } { list2 }, to allow keywords to appear in list1
*
Fixed Interrupt handler to return control to user if requested
*
Made spaces (and tabs) within quotes non-special, so they can appear as parts of single words
*
New utility get_grammar written in C to extract grammar from yacc files
*
Added support for ~ in CHDIR
*
Made default verbosity 1 not 0
*
Made PRINT page if printing to terminal
*
The header lines written by PRINT now start with a #, so they can be read without using the LINES command
*
Added commands SAVE and RESTORE to save and restore a complete session
*
Replaced SHOW by a macro
*
Fixed READ OLD to change ERRORBAR and WINDOW to new formats
*
Allowed the use of \ to continue long lines
*
Columns of data may now be separated by commas as well as white space
*
Removed all restrictions on the number of columns in a data file
*
HELP gives the values of variables and vectors, as well as macros
*
In the unlikely event of SM detecting an internal error (e.g. a segmentation violation) a SAVE file called `panic.dmp' is now written to your current temporary directory
*
Strings in double quotes are now treated as words (e.g. "2.80 ", note space following 0)
*
TERMCAP variable is treated as the actual termcap
*
Added explicit copyright statements to the code, to clarify its status as not being public domain, but the property of its authors
*
Added WHATIS builtin function, to determine type of a string
*
Added OVERLOAD to allow overloading of keywords, also added set_overload macro to set some of them up. "compatible" also makes use of this facility to redefine commands such as points
*
Made do i=1,10 { if($?$i) { ... } } as expected
*
Allowed TeX-style labels (if $TeX_strings is defined)
*
Allowed points (of specified angle and ptype) and lines (of specified ltype) to appear in strings, if you are using TeX labels
*
Allowed you to declare an error handling macro (called error_handler) that is called after ^C interrupts
*
RESTORE can be used to read history files
*
You can now specify lists of file/graph/termcap files to be searched in order, allowing private modifications string if it can't be opened as a file Changes to do with history and the editor:
*
Made TERMTYPE with a negative number of lines turn off cursor motion
*
Changed default bindings to make ESC-q quote_next (in addition to ^Q), and ^} an emergency ^M
*
Changed editor to use termcap
*
Changed editor to follow columns past a blank line
*
Made history ignore consecutive identical commands
*
You can now repeat a search to look for a command further back in the history list (use ^TAB)
*
Changed paging of history list to allow you to search (use ? while paging to find out how)
*
Changed terminal read routine, so ^S/^Q and typeahead should now work at least under Unix. (`A la unix: characters appear as you type. Refresh the screen (^L) if it gets scribbled on)
*
The history system was deleting commands when the difference between the top and bottom numbers in use exceeded 80, rather than when there were more than 80 commands on the buffer. Fixed this, and took the opportunity to take the size of the history buffer from the `.sm' variable `history' (default : 80)
*
Added command HISTORY - to list history in backwards order
*
allowed you to move deleted words from line to line (^[h/^[u etc.)
*
made a TERMCAP environment (logical) variable override a termcap in `.sm'
*
Renumbered lines with every HISTORY command. Insert should now work
*
ESC-y will successively restore recently deleted lines, up to a current limit of 5. Changes to do with macros:
*
Macros beginning ## are not listed if VERBOSE is 0.
*
Added command RETURN to return from a macro, or to the prompt if encountered outside a macro. (Useful when fiddling with command scripts)
*
We now document that lines beginning # in macro files are comments, and are output for verbose > 0. Lines beginning # in data files now also comments, printed for verbose > 1, lines starting ! are always printed. Note also that lines ending \ are logically continued to next line in data files, as well as to the command language.
*
Macros may be declared to have variable numbers of arguments
*
When editing macros, RET in the middle of a line splits the line at that point. The behaviour of the history editor is unchanged. We now delete blank lines as we go, so typing many RET's will just get the 1 line, and it'll go away if you ^P or ^N without typing something
*
If a macro has a -ve number of args in MACRO EDIT, it is deleted
*
If VERBOSE is 3 only trace macros as they are executed, VERBOSE 4 is the full trace
*
Added command KEY to define keyboard macros. The keys PF1 - PF4 may be specified in a terminal independent way.
*
Allowed you to redefine macro arguments inside macros, including ones that weren't declared. This allows you to use numbered variables as temporaries.
*
Allowed MACRO name { DELETE } to delete macros with an uppercase "DELETE"
*
Empty macros are deleted upon leaving the macro editor Changes to do with variables:
*
Added more macros to utils, for instance arrow, wilcoxon, and smirnov
*
Changed DEFINE var ? to allow prompt string The value of the variable now consists of the complete line typed, rather than just one word. You are now offered as a default value the old value, if it is defined
*
Added uxp and uyp for user plot position to DEFINE var | rule.
*
Made variable names being defined appear on error traces
*
Added variable $date with value of the current date and time
*
Allowed you to redefine macro arguments inside macros, including ones that weren't declared. This allows you to use numbered variables as temporaries. Changes to do with vectors:
*
allowed < ... > as well as { ... } for PRINT and SORT
*
Added SET DIMEN(WORD) = expr to declare WORD, and initialise it to zero. Also a macro declare to do this for you
*
{ list } is now an expression
*
Allowed READ < list > as well as READ { list }
*
Changed verbosity in vector arithmetic to report first error in a call for VERBOSE > 0, but only report further errors for VERBOSE > 1
*
Added new operator INT(expr) to take integral part of an expression, can be used for rounding.
*
Changed precedence of CONCAT to just below `+' and `-'
*
allowed < list > as an expression
*
Allowed v1 and v2 to both be scalars in ?: statement

Changes to how plotting is done are as follows:

*
Stopped SM changing between graph and alpha modes so often, flashing the screen
*
Changed behaviour of CTYPE commands, and treatment of colour in graphcap. It is now possible to specify a private set of colours for use in drawing lines
*
Added support for plotting to terminals other than the one that your are logged onto
*
Changes to prevent plotting at above device resolution
*
Added command PTYPE { list } to plot a user defined symbol at points
*
Wherever the name of a vector is expected you can now use an expression in parentheses
*
Added support for aspect ratios in drawing characters
*
Allowed DRAW ( num num ) by analogy to RELOCATE ( num, num )
*
Fixed ERRORBAR to accept scalars for size of errors
*
Redefined IDENTIFICATION as a macro
*
Added ILABEL 3 to BOX, to omit both ticks and labels, useful in conjunction with AXIS
*
Added test in BOX for arguments to logarithmic axes out of range
*
If ANGLE is non-zero, it is used for XLABEL and YLABEL (e.g. ANGLE 360 YLABEL N)
*
Added axis(), curs(), gflush(), plotsym(), and shade() to interface.c
*
Changed ticksize in interface.c to take real arguments, not integer
*
WINDOW now ignores initial value of location and attempts to fill (almost) entire screen with little windows
*
WINDOW can be used to draw boxes that touch
*
Changed playback to allow you to optionally specify the line or range of lines to be played back, and similar changes to hcopy.
*
If the two limits given for an axis in the LIMITS command are the same, the limits for that axis are not changed.
*
When using the RANGE command, LIMITS now attempts to centre the axes on the median of the data.
*
Can now shade inside a region, or shade a histogram (see SHADE).
*
Changed fonts somewhat. Old characters in old order available as old_fonts.bin (in `.sm' file), added Old English font (\o), changing font sizes inside strings (\digit), and a number of new characters.
*
Modified filecap to understand FITS data files for contouring.
*
In a label, (e.g. PUTLABEL), @\ is printed as a real \.
*
Added ASPECT command, to allow you to override SM's choice of aspect ratio (e.g. to position labels for a plot that will finally appear on a laser printer)
*
Fixed WINDOW to allow boxes to touch. The macros wind and bo take touching into account when labelling axes.
*
made histograms draw `flanges' at ends (as had been done historically) Changes to stdgraph:
*
Changed stdgraph to accept %T for 12-bit encoded Tektronix (Also changed graphcap to reflect this: xr, yr, XY, TB, SC)
*
Removed RT capability from graphcap, and changed stdgraph to use ch and cw (the height and width of the hardware characters)
*
Added DT to graphcap to deal with funny requirements of devices
*
added support for raster devices (e.g. printronix). These actually use a combination of graphcap and a stand-alone rasteriser
*
Added support for area fill in graphcap for PTYPE n 3 Changes to drivers
*
The postscript drivers are now available landscape, postscript, or square (and work over a network for Unix users)
*
The sunwindows driver now supports a cursor
*
^C interrupts now work even if you are using sunwindows
*
Mouse buttons work with the X10 cursor
*
There is a new SunView driver (device sunview) that creates its own graphics window. Bug fixes: (only the ones most visible to users are noted)
*
Fixed bug with PTYPE n 3 for angle != 0
*
Fixed bug in CONTOUR, to do with 2 lines in one plot cell; previously always assumed lines SW-NE
*
Fixed bug in CONTOUR, that could lose last row/column of contour plot
*
Fixed occasional bad axis labels
*
Fixed rounding error in drawing ticks
*
Fixed contouring fortran files
*
Fixed precedences of logical and and or
*
Fixed bug in CONTOUR to do with point at (or beyond) right hand size of image
*
Miscellaneous postscript problems fixed


Go to the first, previous, next, last section, table of contents.