home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: Science / Science.zip / splot184.zip / splot.hlp < prev    next >
Text File  |  1997-03-10  |  118KB  |  3,484 lines

  1. <Product Info>
  2.  This is an integrated editor, C subset interpreter,
  3.  and scientific graphics program.
  4.  
  5.  THIS PROGRAM WAS WRITTEN BY THOMAS W. STEINER
  6.  COPYRIGHT 1992 - 1997, ALL RIGHTS RESERVED
  7.  THERE IS NO WARRANTY OF ANY KIND. USE AT YOUR OWN RISK.
  8.  THIS IS NOT FREEWARE. TO REGISTER YOUR COPY SEND \$50 TO
  9.  
  10.        T.W. Steiner
  11.       2246 E. 6th Ave.
  12.      Vancouver, BC, V5N - 1R1
  13.           Canada
  14.        e-mail steiner@sfu.ca or
  15.        tsteiner@creo.bc.ca
  16.  
  17.  Registered users will be able to download
  18.  upgrades as they become available.
  19.  
  20. <Help>
  21.  Select each menu item in the help menu to get an
  22.  overview of the program capabilities. Some important
  23.  user interface details that go beyond the standard
  24.  are discussed in the menu help item.
  25.  
  26. <Cursor Motion>
  27.  The cursor may be moved around with the following keys:
  28.  #4 -- left one space
  29.  #6 -- right one space
  30.  #8 -- up one line
  31.  #2 -- down one line
  32.  #1 -- end of line
  33.  #7 -- beginning of line
  34.  #3 -- scroll down one screen
  35.  #9 -- scroll up one screen
  36.  #T -- left one word
  37.  #V -- right one word
  38.  #X -- up five lines
  39.  #R -- down five lines
  40.  #Q -- end of file
  41.  #W -- beginning of file
  42.  #S -- end of file
  43.  #Y -- beginning of file
  44.  #q -- end of page
  45.  #w -- top of page
  46.  #s -- down half a page
  47.  #y -- up half a page
  48.  
  49. <Mouse>
  50.  The mouse may be used to position the cursor as an
  51.  alternative to using the keyboard. Click on the
  52.  desired text location. The text may be scrolled using
  53.  the scroll bars at the sides.
  54.  
  55.  All three mouse buttons are used to mark regions of
  56.  text by dragging. The marking mode button assignments
  57.  are made in the editor configuration menu.
  58.  
  59.  Double clicking on a word in a regular file causes
  60.  the editor to search for this word in an *.ndx file
  61.  and if found there starts up the info viewer. This is
  62.  useful in conjunction with function reference material
  63.  from compiler vendors. The path to *.ndx files is
  64.  specified in the editor configuration menu. Once set
  65.  up this enables context sensitive help on any
  66.  recognized word in the text.
  67.  
  68.  Double clicking on a word in an "editsys.tmp" file causes
  69.  the editor to interpret that word as a file name and
  70.  loads that file. Integer numbers after the name if any
  71.  are interpreted as the line and column numbers
  72.  respectively. This is very convenient with the output
  73.  from a compiler invoked from the command line since the
  74.  output is added to the editor ring as a read only file.
  75.  
  76. <Menus>
  77.  The menus function in a somewhat non-standard way.
  78.  
  79.  The standard ALT f file menu access has not been
  80.  implemented since these keys are used for direct
  81.  accelerators. However key board menu access is still
  82.  possible by using the ALT key by itself if this is
  83.  enabled in the editor configuration.
  84.  
  85.  To get help on any menu item click on it using the
  86.  right rather than the left mouse button. This does
  87.  not work under versions of WNT previous to 4.0.
  88.  
  89.  Almost every menu item has an associated accelerator
  90.  which may be mapped to any other key or keys. Note
  91.  that if the keys are re-mapped this mapping will
  92.  appear in the menus.
  93.  
  94.  Since there are so many accelerator key definitions
  95.  the accelerators are case sensitive so look
  96.  carefully.
  97.  
  98. <Quit>
  99.  Exits from the currently displayed file. The next
  100.  file in the ring is displayed provided one exits. If
  101.  no other files are loaded the editor itself quits.
  102.  The number of loaded files is reported in the title
  103.  bar along with the current file name. If the file has
  104.  been modified a confirm dialog will be shown. To exit
  105.  from all the files and terminate the editor use the
  106.  "close" (or Alt F4) from the system menu.
  107.  
  108.  The default accelerator is Ctrl q mapped to ^Q
  109.  
  110. <Save>
  111.  The editor writes the currently displayed file to
  112.  disk using the current name and path. If a newer file
  113.  of the same name exist then a confirm dialog will be
  114.  displayed. Before over writing a file with the same name
  115.  the editor will rename the previous file to
  116.  'editfile.bak'. Thus one previous version will always be
  117.  on the disk in case a file was accidentally written. The
  118.  next write of any file however will create a new
  119.  'editfile.bak'
  120.  
  121.  The default accelerator is Ctrl w mapped to ^W
  122.  
  123. <Save As...>
  124.  The editor saves the currently displayed file to disk
  125.  using the specified name and path. A standard file
  126.  dialog is opened so that a filename can be typed or
  127.  chosen.
  128.  
  129.  The default accelerator is Ctrl W mapped to ^w
  130.  
  131. <Save All Changed>
  132.  All files loaded that have had changes made to them
  133.  are saved to disk.
  134.  
  135.  The default accelerator is Ctrl A mapped to ^a
  136.  
  137. <Open...>
  138.  A standard file dialog is displayed which allows
  139.  selection of a file to be edited. A wild card '*' in
  140.  the name will load all matching files. Files may also
  141.  be loaded from the command line by typing
  142.  '^[ e yourfile.name ^M'.
  143.  
  144.  The default accelerator is Ctrl O mapped to ^o
  145.  
  146. <Next>
  147.  The next file in the ring of loaded files is displayed.
  148.  
  149.  The default accelerator is Ctrl n mapped to ^N
  150.  
  151. <Prev>
  152.  The previous file in the ring of loaded files is
  153.  displayed.
  154.  
  155.  The default accelerator is Ctrl p mapped to ^P
  156.  
  157. <Other...>
  158.  Opens a list box dialog which displays a list of all
  159.  the files currently loaded. A file to be displayed
  160.  may be selected by double clicking on the chosen
  161.  filename. Changed files have the word changed
  162.  appended to the file name.
  163.  
  164.  The default accelerator is Ctrl H mapped to ^h
  165.  
  166. <Config...>
  167.  Opens the editor configuration notebook. Many editor
  168.  preferences such as the colours may be set. The
  169.  results are saved in the ASCII file editor.cfg so
  170.  that the next time the editor starts it will use the
  171.  selected configuration. If multiple editor instances
  172.  are started only the first one will write the
  173.  editor.cfg file.
  174.  
  175.  The default accelerator is Ctrl C  mapped to ^c
  176.  
  177. <Cmd...>
  178.  Opens a command line dialog. Commands to the
  179.  operating system as well as editor command line
  180.  commands may be entered. The list box displays a
  181.  history of the recently used command line commands
  182.  for reuse by double clicking on them. Command line
  183.  commands may also be entered without opening this
  184.  dialog by hitting the ^[ key. The editor command line
  185.  commands are as follows:
  186.  
  187.  The default accelerator is Ctrl M  mapped to ^m
  188.  
  189.  Command Line Operations
  190.  
  191.  ^[                    goto or leave command line
  192.  
  193.  Change current line.
  194.     number                goto line number n
  195.    +number                down n lines
  196.    -number                up n lines
  197.  
  198.  Change current column offset.
  199.    @number                start at column n
  200.    @+number               scroll left n columns
  201.    @-number               scroll right n columns
  202.  
  203.  Search and Replace.
  204.    /str1[/-bclrw]
  205.       find string str (/ may instead be other punct)
  206.    c/str1/str2[/-bclrw]      replace str1 with str2
  207.  
  208.    The optional search suffixes are
  209.       /-        search up (down is the default)
  210.       /b        search marked block only
  211.       /c        ignore case
  212.       /l        loop through all loaded files
  213.       /r        interpret as regular expression
  214.       /w        match whole words only
  215.  
  216.    For regular expressions the following symbols have
  217.    special meaning:
  218.       ^ start of line
  219.       \$ end of line
  220.       . any character
  221.       \\ literal next character
  222.       + match one or more times
  223.       * match zero or more times
  224.       [aei0-9]   match a,e,i and 0 through 9
  225.       [\^aei0-9] match anything but a,e,i and 0 through 9
  226.       (  )       sub expression
  227.       a(ab)*b    matches ab aabb aababb aabababb etc.
  228.  
  229.  loading additional files to edit
  230.    e name1,name2,...[-brfl]
  231.    edit name1,name2,...[-brfl]
  232.  
  233.    The optional edit suffixes are
  234.      -b        binary mode
  235.      -r        read only
  236.      -f num    first line is line number num (-r implied)
  237.      -l num    last line is line number num (-r implied)
  238.  
  239.  cfg or configure      show and modify editor config
  240.  
  241.  quit                  exit without saving changes
  242.  
  243.  m [name] or           insert named file at cur location
  244.  merge [name]
  245.  
  246.  r [name]  or          rename current file to name
  247.  rename [name]
  248.  
  249.  d [name]  or          diff between current and named file
  250.  diff [name]           diff between current and named file
  251.  
  252.  up arrow              previous command line entered
  253.  down arrow            next command line entered
  254.  
  255.  fill [string]         fill B marked block with string
  256.  
  257.  sort [col]            sort lines using field col as key
  258.  
  259.  hex [num] or hex 'c'  convert decimal num or char to hex
  260.  
  261.  dec [num] or dec 'c'  convert hex num or char to decimal
  262.  
  263.  asc [num]             convert hex or dec number to char
  264.  
  265.  g [regexp] or         passed to OS but regexp becomes
  266.  grep [regexp]         new search string
  267.  
  268.  cd [y:\path]          set default drive and path
  269.  
  270.  os [command]          send command to operating system
  271.  [command]             sent to operating system
  272.  
  273.  The results of the above operating system calls will
  274.  end up in a temp file in the ring of files. There is
  275.  a difference between the above two methods. When a
  276.  command is prefixed by "os" the command runs
  277.  synchronously i.e. the editor is blocked until the os
  278.  command completes. If the "os" prefix is absent the
  279.  system call runs in back ground. This is useful for
  280.  compiling code or doing long searches in background
  281.  for example.
  282.  
  283.  Lastly, any string that is sent to the operating system
  284.  will first have any occurrence of \$EDNAME translated to 
  285.  the current filename. In this way a generic macro that 
  286.  does an os call may be built.
  287.  
  288. <Delete Character>
  289.  Deletes the character under the cursor.
  290.  
  291.  The default accelerator is Ctrl d mapped to ^D
  292.  
  293. <Delete Prev Char>
  294.  Deletes the character to the left of the cursor. If
  295.  the cursor is at the start of a line it will join the
  296.  current line to the previous line.
  297.  
  298.  The default accelerator is Backspace mapped to ^H
  299.  
  300. <Delete Word>
  301.  Deletes all characters under and to the right of the
  302.  cursor up to the next space or punctuation.
  303.  
  304.  The default accelerator is Ctrl z mapped to ^Z
  305.  
  306. <Delete to Line end>
  307.  Deletes all characters under and to the right of the
  308.  cursor up to the end of the line.
  309.  
  310.  The default accelerator is Ctrl e mapped to ^E
  311.  
  312. <Delete Line>
  313.  Deletes the entire current line.
  314.  
  315.  The default accelerator is Ctrl Back mapped to ^?
  316.  
  317. <Insert New Line>
  318.  The behaviour of this command is dependent on the
  319.  'conventional return' configuration setting. If
  320.  conventional return is on then the current line is
  321.  split at the cursor and the remainder is put on the
  322.  next line. If however, conventional return is not
  323.  enabled then this command inserts a blank line below
  324.  the current line leaving the current line intact.
  325.  This behaviour is compatible with the 'e' series of
  326.  editors.
  327.  
  328.  The default accelerator is Enter mapped to ^M
  329.  
  330. <Change Char Case>
  331.  Changes the case of the character under the cursor.
  332.  
  333.  The default accelerator is Ctrl c mapped to ^C
  334.  
  335. <Swap two Chars>
  336.  Swaps the character under the cursor with the one
  337.  to the right of the cursor.
  338.  
  339.  The default accelerator is Ctrl s mapped to ^S
  340.  
  341. <Insert Ctrl Char>
  342.  This command starts a dialog for entering the 3 digit
  343.  ASCII code of a character to be inserted in the text.
  344.  This is useful for inputing characters without a key
  345.  board key.
  346.  
  347.  The default accelerator is Alt x mapped to %X
  348.  
  349. <Insert Literal Char>
  350.  This is only active if key mapping is turned on in
  351.  the editor configuration menu. If it is turned on
  352.  then this command will for the next key stroke
  353.  disable the translation so that the original
  354.  functionality may be accessed.
  355.  
  356.  The default accelerator is Alt k mapped to %K
  357.  
  358. <Cut Line at Cursor>
  359.  This command splits the current line at the cursor
  360.  putting the remainder of current line on the next
  361.  line. Similar to Insert New Line if conventional
  362.  return is enabled. Used to split lines if
  363.  conventional return is not enabled.
  364.  
  365.  The default accelerator is Ctrl k mapped to ^K
  366.  
  367. <Join two Lines>
  368.  This command joins the next line to the end of the
  369.  current line.
  370.  
  371.  The default accelerator is Ctrl j mapped to ^J
  372.  
  373. <Toggle Ins/Del>
  374.  This command toggles the character insertion mode
  375.  between insertion and replacement. The current status
  376.  is reported on the right end of the status line.
  377.  
  378.  The default accelerator is Ctrl t mapped to ^T
  379.  
  380. <Undo>
  381.  The last changes to a line or block of lines are
  382.  restored. The number of undo levels are essentially
  383.  unlimited but can be optionally disabled in the editor
  384.  configuration menu.
  385.  
  386.  The default accelerator is Ctrl u mapped to ^U
  387.  
  388. <Redo>
  389.  Steps undone with the undo command can be redone with
  390.  this command.
  391.  
  392.  The default accelerator is Ctrl r mapped to ^R
  393.  
  394. <Restore Current Line>
  395.  If the undo record for the current line is of the
  396.  line change type then the line can be restored to its
  397.  previous state using this command. The difference
  398.  between this command and undo is that this command
  399.  can restore a line in some cases without having to
  400.  undo changes made after the current line was
  401.  modified.
  402.  
  403.  The default accelerator is Alt q mapped to %Q
  404.  
  405. <Reflow Paragraph>
  406.  This command has two different modes of operation. If
  407.  syntax colouring is not on then this command
  408.  reformats a paragraph of text using the margins and
  409.  indentation specified in the editor configuration
  410.  notebook. The reformatting starts at the current line
  411.  and ends at the first blank line. Alternatively a
  412.  block mark may be set to specify the margins and text
  413.  to reflow.
  414.  
  415.  If syntax colouring is on then it is assumed that the
  416.  text is C code and it is reformatted with smart
  417.  indentation At this point the rules are not
  418.  configurable and may not suit everyone's taste.
  419.  
  420.  The default accelerator is Alt r mapped to %R
  421.  
  422. <Reflow Code>
  423.  This command has two different modes of operation. If
  424.  syntax colouring is not on then this command
  425.  reformats a paragraph of text using the margins and
  426.  indentation specified in the editor configuration
  427.  notebook. The reformatting starts at the current line
  428.  and ends at the first blank line. Alternatively a
  429.  block mark may be set to specify the margins and text
  430.  to reflow.
  431.  
  432.  If syntax colouring is on then it is assumed that the
  433.  text is C code and it is reformatted with smart
  434.  indentation At this point the rules are not
  435.  configurable and may not suit everyone's taste. This
  436.  feature is also not yet complete.
  437.  
  438.  The default accelerator is Alt r mapped to %R
  439.  
  440. <Reflow Block>
  441.  This command has two different modes of operation. If
  442.  syntax colouring is not on then this command
  443.  reformats a paragraph of text using the margins and
  444.  indentation specified in the editor configuration
  445.  notebook. The reformatting starts at the current line
  446.  and ends at the first blank line. Alternatively a
  447.  block mark may be set to specify the margins and text
  448.  to reflow.
  449.  
  450.  If syntax colouring is on then it is assumed that the
  451.  text is C code and it is reformatted with smart
  452.  indentation At this point the rules are not
  453.  configurable and may not suit everyone's taste. This
  454.  feature is also not yet complete.
  455.  
  456.  The default accelerator is Alt r mapped to %R
  457.  
  458.  
  459.  
  460. <First Column Lines>
  461.  This command folds up the current file so that only
  462.  those lines starting in the first column are visible.
  463.  This is useful for rapidly locating functions in a
  464.  file. If the file is already folded then this command
  465.  unfolds the file around the line current line.
  466.  
  467.  The default accelerator is Ctrl v mapped to ^V
  468.  
  469. <Lines with Search String>
  470.  This command folds up the current file so that only
  471.  those lines containing the last used search string
  472.  are visible. If the file is already folded then this
  473.  command unfolds the file around the line current
  474.  line.
  475.  
  476.  The default accelerator is Alt s mapped to %S
  477.  
  478. <Changed Lines>
  479.  This command folds up the current file so that only
  480.  those lines which have been modified since the last
  481.  save are visible. If the file is already folded then
  482.  this command unfolds the file around the line current
  483.  line.
  484.  
  485.  The default accelerator is Alt v mapped to %V
  486.  
  487. <Lines with Placemark>
  488.  This command folds up the current file so that only
  489.  those lines which contain a placemark are visible. If
  490.  the file is already folded then this command unfolds
  491.  the file around the line current line.
  492.  
  493.  The default accelerator is Alt h mapped to %H
  494.  
  495. <Tagged Foldup>
  496.  This command folds up the current file so that the
  497.  lines between the numerically greatest remaining fold
  498.  tag and the next fold tag are hidden. The fold tag is
  499.  a regular expression set in the editor configuration
  500.  dialog and should be picked to be a comment in the
  501.  language in use. For example the default regular
  502.  fold tag expression is //[ ]*L[0-9]+ which is a comment
  503.  in C++. This will match // L1 and // L21 for example.
  504.  The number represents the fold level.
  505.  
  506.  Tagged foldup is the only folding mode that requires
  507.  special entries in the file. However, a file written
  508.  with folding in mind can make use of these tags to
  509.  selectively hide details to present an overview.
  510.  
  511.  The default accelerator is Alt - mapped to %-
  512.  
  513. <Tagged Unfold>
  514.  Unfolds previously folded text by one level if folded
  515.  by tagged foldup. If folded in another mode the file
  516.  is completely unfolded. The file is unfolded around the
  517.  current line.
  518.  
  519.  The default accelerator is Alt + mapped to %+
  520.  
  521. <Tabbed Foldup>
  522.  This command folds up the current file so that the
  523.  most indented text which remains visible is hidden.
  524.  This provides a means of hiding the details of a
  525.  large switch() for example to get an overview.
  526.  
  527.  The default accelerator is Ctrl - mapped to ^-
  528.  
  529. <Tabbed Unfold>
  530.  Unfolds previously folded text by one level if folded
  531.  by tabbed foldup. If folded in another mode the file
  532.  is completely unfolded. The file is unfolded around the
  533.  current line.
  534.  
  535.  The default accelerator is Ctrl + mapped to ^+
  536.  
  537. <Split Screen>
  538.  The screen is split into an upper and lower half each
  539.  of which can show the same or a different file. If the
  540.  screen is already split then it is un split.
  541.  
  542.  The default accelerator is Ctrl y mapped to ^Y
  543.  
  544. <Unsplit Screen>
  545.  The screen is split into an upper and lower half each
  546.  of which can show the same or a different file. If the
  547.  screen is already split then it is un split.
  548.  
  549.  The default accelerator is Ctrl y mapped to ^Y
  550.  
  551. <Other Split Half>
  552.  This command is only active if the screen is split in
  553.  which case it moves the cursor to the other split half.
  554.  It is also possible to click with the mouse to select
  555.  the other half.
  556.  
  557.  The default accelerator is Ctrl o mapped to ^O.
  558.  
  559. <Alternate Binary Rep>
  560.  If the file being edited is a binary file then this
  561.  command switches from the hex representation to a text
  562.  and control key representation.
  563.  
  564.  The default accelerator is Alt a mapped to %A.
  565.  
  566. <Hex Binary Rep>
  567.  If the file being edited is a binary file then this
  568.  command switches from the hex representation to a text
  569.  and control key representation.
  570.  
  571.  The default accelerator is Alt a mapped to %A.
  572.  
  573. <Normal Mark>
  574.  This is the industry standard mode of text marking which
  575.  is of more use with standard text than with program code. 
  576.  Use this command to mark the start and end of a region. A 
  577.  region may start in the middle of a line extend over 
  578.  several lines and end in the middle of a line. 
  579.  
  580.  The default accelerator is Alt n mapped to %N.
  581.  
  582. <Unmark>
  583.  Unmark any text marked in any one of the three marking
  584.  modes.
  585.  
  586.  The default accelerator is Alt u mapped to %U.
  587.  
  588. <Delete Region>
  589.  This deletes a region marked in any one of the three
  590.  marking modes.
  591.  
  592.  The default accelerator is Alt d mapped to %D.
  593.  
  594. <Move Region>
  595.  This moves a region marked in any one of the three
  596.  marking modes to the location in the same or different
  597.  file specified by the current cursor location.
  598.  
  599.  The default accelerator is Alt m mapped to %M.
  600.  
  601. <Copy Region>
  602.  This copies a region marked in any one of the three
  603.  marking modes to the location in the same or different
  604.  file specified by the current cursor location.
  605.  
  606.  The default accelerator is Alt c mapped to %C.
  607.  
  608. <Yank Back Last Del>
  609.  The last region deleted can be restored once or many
  610.  times using this command. The last deleted text is
  611.  inserted at the current cursor location in the same
  612.  or different file. Note that the text may be brought
  613.  back in any location so that this provides a means
  614.  of moving text in a method conceptually similar to
  615.  using a clip board.
  616.  
  617.  The default accelerator is Alt y mapped to %Y.
  618.  
  619. <Write Region>
  620.  The currently marked region is written to a temp
  621.  disk file with name 'editblck.tmp' in the current
  622.  directory.
  623.  
  624.  The default accelerator is Alt w mapped to %W.
  625.  
  626. <Mark Lines>
  627.  This is the preferred marking mode for program
  628.  text. Only whole lines are marked and line marked
  629.  text when inserted on a copy does not split the
  630.  current line as in normal marked case but inserts
  631.  the marked lines below the current line.
  632.  
  633.  The default accelerator is Alt l mapped to %L.
  634.  
  635. <Justify>
  636.  This command left adjusts the current line with the
  637.  first non-blank line above and then moves the cursor
  638.  down to the next line. As a special case if the last
  639.  operation was a marked region move or copy then the
  640.  whole block is shifted left or right as necessary
  641.  to left adjust the first line.
  642.  
  643.  The default accelerator is Alt j mapped to %J.
  644.  
  645. <Mark Rect Block>
  646.  This command is used to mark a rectangular block
  647.  for column manipulations.
  648.  
  649.  The default accelerator is Alt b mapped to %B.
  650.  
  651. <Fill Rect>
  652.  A previously marked rectangle may be filled with
  653.  a single character. To fill with a word use the
  654.  command line command 'fill xyz'. Alternatively,
  655.  this command may be used to change the case of
  656.  all the characters in the marked block. Lastly,
  657.  this command may be used to fill with a sequence
  658.  of incrementing or decrementing numbers starting
  659.  with the number found at the top of the block
  660.  marked region region.
  661.  
  662.  The default accelerator is Alt f mapped to %F.
  663.  
  664. <Overlay Rect>
  665.  The block marked region is used to overwrite a
  666.  same sized region the top left corner of which
  667.  is specified by the current cursor location.
  668.  
  669.  The default accelerator is Alt o mapped to %O.
  670.  
  671. <Move Rect Left>
  672.  A block marked region may be moved to the left
  673.  by one space with this command. The contents of
  674.  the column to the left of the block is deleted.
  675.  The text to the right of the marked block moves
  676.  with the text. This command is useful for adjusting
  677.  the indentation of a section.
  678.  
  679.  The default accelerator is Alt Left mapped to #t.
  680.  
  681. <Move Rect Right>
  682.  A block marked region may be moved to the right
  683.  by one space with this command. The text to the
  684.  right of the marked block moves with the text.
  685.  This command is useful for adjusting the indentation
  686.  of a section.
  687.  
  688.  The default accelerator is Alt Right mapped to #v.
  689.  A block marked region may be shifted to the left
  690.  by one space with this command. The contents of
  691.  the left most column of the block is deleted and
  692.  the width of the block shrunk by one
  693.  The text to the right of the marked block moves
  694.  with the text. This command is useful for adjusting
  695.  the indentation of a section.
  696.  
  697.  The default accelerator is Alt Left mapped to #t.
  698.  
  699. <Move Rect Up>
  700.  A block marked region may be moved up by one line
  701.  with this command. The contents of the line above
  702.  the block is split to accommodate the block.
  703.  
  704.  The default accelerator is Alt Up mapped to #x.
  705.  
  706. <Move Rect Down>
  707.  A block marked region may be moved down by one line
  708.  with this command. The contents of the line below
  709.  the block is split to accommodate the block.
  710.  
  711.  The default accelerator is Alt Down mapped to #x.
  712.  
  713. <Shift Rect Left>
  714.  A block marked region may be shifted to the left
  715.  by one space with this command. The left most column
  716.  of the block is deleted and the marked region's width
  717.  is reduced by one provided the width of the column is
  718.  wider than one. If not the block width stays at one and
  719.  a new column is shifted in from the right. Text to the
  720.  right of the marked block shift with the text in the
  721.  block. This command is useful for adjusting
  722.  the indentation of a section.
  723.  
  724.  The default accelerator is Ctrl ^ mapped to ^^.
  725.  
  726. <Shift Rect Right>
  727.  The text in  block marked region may be shifted to the
  728.  right by one space with this command. The right most
  729.  column of the block is filled with spaces Text to the
  730.  right of the marked block shift with the text in the
  731.  block. This command is useful for adjusting
  732.  the indentation of a section.
  733.  
  734.  The default accelerator is Ctrl _ mapped to ^_.
  735.  
  736. <Copy to Clipboard>
  737.  This command copies a region marked in any one of the
  738.  three marking modes to the system clip board.
  739.  
  740.  The default accelerator is Ctrl ins mapped to #P.
  741.  
  742. <Paste from Clipbrd>
  743.  This inserts lines of text from the system clipboard
  744.  below the current line.
  745.  
  746.  The default accelerator is Shift Ins mapped to #a.
  747.  
  748. <Copy to Clip and Del>
  749.  This command copies and deleted a region marked in any
  750.  one of the three marking modes to the system clip board.
  751.  
  752.  The default accelerator is Shift Del mapped to #d.
  753.  
  754. <Set Placemark>
  755.  This command sets a placemark on the current line if
  756.  there is not already a placemark otherwise it removes
  757.  the place mark.
  758.  
  759.  The default accelerator is Ctrl a mapped to ^A.
  760.  
  761. <Clear Placemark>
  762.  This command sets a placemark on the current line if
  763.  there is not already a placemark otherwise it removes
  764.  the place mark.
  765.  
  766.  The default accelerator is Ctrl a mapped to ^A.
  767.  
  768. <Goto Last Place>
  769.  This command moves the cursor to the next location
  770.  marked by a previously set placemark.
  771.  
  772.  The default accelerator is Ctrl l mapped to ^L.
  773.  
  774. <Clear Placemarks>
  775.  This command clears all previously set placemarks.
  776.  
  777.  The default accelerator is Alt i mapped to %I.
  778.  
  779. <Goto Last Pos>
  780.  This command returns the cursor to the line it was on
  781.  previously. This command is useful in case the cursor
  782.  was accidentally removed from the region of interest
  783.  with an unintended search for example.
  784.  
  785.  The default accelerator is Alt p mapped to %P.
  786.  
  787. <Match Bracket>
  788.  This command moves the cursor to the location matching
  789.  the bracket or comment start underneath the cursor.
  790.  Note that the cursor must currently be positioned on a
  791.  bracket or comment delimiter.
  792.  
  793.  The default accelerator is Ctrl b mapped to ^B.
  794.  
  795. <Goto Line Num>
  796.  This command opens a dialog for entering the line number
  797.  of the desired current line. There is also a command
  798.  line equivalent which is:
  799.  
  800.  ^[ nnn Enter
  801.  
  802. <Start Macro Learn>
  803.  This command starts or ends the recording of keystrokes
  804.  for a macro. At the end of macro recording it may be
  805.  optionally bound to a function key for preservation
  806.  between editing sessions. Otherwise it will be stored
  807.  for re-execution with the Exec Last Macro command until
  808.  the end of the current editing session unless over
  809.  written by another recorded macro.
  810.  
  811.  Macros can be used together with command multiplication
  812.  to carry out repetitive complex editing tasks.
  813.  
  814.  The default accelerator is Alt t mapped to %T.
  815.  
  816. <Stop Macro Learn>
  817.  This command starts or ends the recording of keystrokes
  818.  for a macro. At the end of macro recording it may be
  819.  optionally bound to a function key for preservation
  820.  between editing sessions. Otherwise it will be stored
  821.  for re-execution with the Exec Last Macro command until
  822.  the end of the current editing session unless over
  823.  written by another recorded macro.
  824.  
  825.  Macros can be used together with command multiplication
  826.  to carry out repetitive complex editing tasks.
  827.  
  828.  The default accelerator is Alt t mapped to %T.
  829.  
  830. <Exec Last Macro>
  831.  This command executes the last recorded macro. Bound
  832.  macros are executed by hitting the corresponding
  833.  function key.
  834.  
  835.  The default accelerator is Alt e mapped to %E.
  836.  
  837. <Zero Cmnd Mult>
  838.  This command is used re set a previously entered
  839.  command multiplier to zero,
  840.  
  841.  The default accelerator is Alt z mapped to %Z.
  842.  
  843. <Cmnd Multiplier>
  844.  This command opens a dialog to enter a command
  845.  multiplier. Command multiplication is very useful in
  846.  conjunction with recorded macros for executing complex
  847.  repetitive editing tasks. The default accelerators are:
  848.  
  849.  Alt 0 to Alt 9 mapped to %0 to %9.
  850.  
  851. <Find...>
  852.  This command opens the search dialog used to enter the
  853.  search string and search options. Search options are:
  854.  
  855.      search up (down is the default)
  856.      search marked block only
  857.      ignore case
  858.      loop through all loaded files
  859.      interpret as regular expression
  860.      match whole words only
  861.  
  862.  For regular expressions the following symbols have
  863.  special meaning:
  864.  
  865.       ^ start of line
  866.       \$ end of line
  867.       . any character
  868.       \\ literal next character
  869.       + match one or more times
  870.       * match zero or more times
  871.       [aei0-9]   match a,e,i and 0 through 9
  872.       [\^aei0-9] match anything but a,e,i and 0 through 9
  873.       (  )       sub expression
  874.       a(ab)*b    matches ab aabb aababb aabababb etc.
  875.  
  876.  The default accelerator is CTRL S mapped to ^s.
  877.  
  878. <Replace...>
  879.  This command opens the search and replace dialog used to
  880.  enter the search and replace strings as well as the
  881.  search options. Search options are:
  882.  
  883.      search up (down is the default)
  884.      search marked block only
  885.      ignore case
  886.      loop through all loaded files
  887.      interpret as regular expression
  888.      match whole words only
  889.  
  890.  For regular expressions the following symbols have
  891.  special meaning:
  892.  
  893.       ^ start of line
  894.       \$ end of line
  895.       . any character
  896.       \\ literal next character
  897.       + match one or more times
  898.       * match zero or more times
  899.       [aei0-9]   match a,e,i and 0 through 9
  900.       [\^aei0-9] match anything but a,e,i and 0 through 9
  901.       (  )       sub expression
  902.       a(ab)*b    matches ab aabb aababb aabababb etc.
  903.  
  904.  The default accelerator is CTRL R mapped to ^r.
  905.  
  906. <Find Next>
  907.  This command uses the last set search string and option
  908.  to find the next match.
  909.  
  910.  The default accelerator is CTRL f mapped to ^F.
  911.  
  912. <Reverse and Find>
  913.  This command uses the last set search string and option
  914.  to find the next match after toggling the current
  915.  search direction
  916.  
  917.  The default accelerator is CTRL F mapped to ^f.
  918.  
  919. <Find Next Cur Word>
  920.  This command uses the word under the cursor as the
  921.  temporary search string and finds the next such match.
  922.  
  923.  The default accelerator is Alt * mapped to %*.
  924.  
  925. <Find Prev Cur Word>
  926.  This command uses the word under the cursor as the
  927.  temporary search string and finds the previous such
  928.  match.
  929.  
  930.  The default accelerator is Alt / mapped to %/.
  931.  
  932. <Margins>
  933.  The entry fields in this dialog are used to set the text
  934.  margins. The left, right and indent values are used by
  935.  the reflow (edit menu) command to reformat a paragraph if
  936.  the editor is in text mode (syntax colouring not on). If
  937.  right justify is on then the reflow command will also
  938.  introduce spaces in the line so that the right margin
  939.  lines up as well.
  940.  
  941.  If auto wrap is on then once the cursor goes past the
  942.  right margin setting then a new line is started. If auto
  943.  indent is on then the cursor is positioned so that the
  944.  left edge of the new line lines up with the previous
  945.  line. For programming it is best to have auto warp off
  946.  and auto indent on while for plain text auto wrap should
  947.  be on and auto indent off.
  948.  
  949.  The tab size entry field determines the number of spaces
  950.  per tab setting. If tab compression is turned on then
  951.  this value is used as the number of spaces corresponding
  952.  to one tab when reading or writing a file unless the
  953.  default I/O tab size is also on in which case this value
  954.  is 8.
  955.  
  956. <Miscellaneous>
  957.  The undo entry field allows setting the maximum number of
  958.  undo records saved in memory. The default setting is
  959.  30000 which is essentially unlimited for normal editing
  960.  tasks. The editor relies on the undo records for some
  961.  internal operations so do not change this except in the
  962.  following circumstance. If the editor is being used to do
  963.  column manipulation of very long columns then the memory
  964.  usage by the undo mechanism gets very high and much
  965.  better performance is attained by turning undo off by
  966.  entering a zero value.
  967.  
  968.  Conventional return. If this is on then hitting the Enter
  969.  or Return key splits the current line at the cursor as is
  970.  the case for most editors. If, however, conventional return
  971.  is not on then hitting Enter will insert a new line below
  972.  the current line while leaving the current line unchanged.
  973.  This is the standard mode of operation for many of IBM's
  974.  editors. This mode may take some getting used to but is
  975.  really very nice for programming since a new line can be
  976.  started without always having to go to the end of the
  977.  current line.
  978.  
  979.  Overwrite Warning. If this is on then you will be warned
  980.  before a file of the same name is over written.
  981.  
  982.  Error Beep. If this is on then the editor will beep when
  983.  an error occurs as well as pop up the error dialog.
  984.  
  985.  Tab Compress. If this is on then when the editor writes
  986.  a file to disk a sequence of n spaces is replaced instead
  987.  with a tab character. This reduces the size of a saved
  988.  file a bit but is not recommended since the formatting
  989.  of a file can be corrupted if multiple people are working
  990.  on a file and using different values of n. It is however
  991.  the only way to get an explicit tab character in a saved
  992.  file in text mode. This is necessary for example with
  993.  UNIX make files. The value of n is determined by the
  994.  tab size entry field in the margins dialog except if the
  995.  default I/O tab size check box is also checked in which
  996.  case n is 8. When reading a file tabs are always replaced
  997.  with n spaces regardless of the setting of the tab
  998.  compress check box.
  999.  
  1000.  Key Map. If this is on then the associated editkey.map
  1001.  file is read to redefine the actions of the specified
  1002.  keys. If exclusive map is also on then only mapped keys
  1003.  are active so this is only useful if a complete set of
  1004.  keys necessary for editor operation are mapped.
  1005.  
  1006.  Alt menu bar access. If this is on the menu bar may be
  1007.  accessed from the key board by hitting the ALT key by
  1008.  itself. The only reason for turning it off is that
  1009.  sometimes this happens accidentally and it is not always
  1010.  immediately obvious why the editor is not responding as
  1011.  expected. Thus if you only access the menus with the
  1012.  mouse turn it off.
  1013.  
  1014. <Colours>
  1015.  The entry fields in this dialog are used to select the
  1016.  text colours for both the main window and the command
  1017.  line. The colours for syntax colouring are selected in
  1018.  the syntax colouring dialog.
  1019.  
  1020. <Font>
  1021.  This dialog is used to select a font for the editor. Only
  1022.  mono spaced, image fonts are available.
  1023.  
  1024. <Mouse Buttons>
  1025.  These entry fields are used to assign one of the three
  1026.  marking modes to a mouse button so that a region may be
  1027.  marked by dragging with the mouse. An existing region is
  1028.  expanded by holding the Control key down while dragging.
  1029.  
  1030.  Regions may also be marked from the key board by
  1031.  positioning the cursor at the start, hitting the
  1032.  appropriate marking key, moving to the end and hitting the
  1033.  key again (See mark menu).
  1034.  
  1035.  A region may also be marked in the normal mode by holding
  1036.  the shift key down and moving the cursor.
  1037.  
  1038. <Syntax Colour>
  1039.  Syntax colouring is enabled by clicking on the check box.
  1040.  The bracket matching component may be separately enabled 
  1041.  with the other check box. The colours for the identified 
  1042.  elements is set with the colour entry fields. The 
  1043.  delimiters for line comments and/or comment start, end 
  1044.  are set with the entry fields at the bottom. There are 
  1045.  also entry fields for setting the escape or next 
  1046.  character literal delimiter and one for preprocessor 
  1047.  directives. The default values are for C/C++ but by 
  1048.  editing these syntax colouring may be used with other 
  1049.  languages. 
  1050.  
  1051.  With syntax colouring on the reflow command in the editor
  1052.  menu reflow using fixed formatting rules for C code
  1053.  rather than re flowing in text mode. These rules are not
  1054.  yet configurable.
  1055.  
  1056.  Syntax colouring requires significantly more from the processor
  1057.  and hence may cause the editor to be unacceptably slow on
  1058.  some systems. In this case turn syntax colouring off.
  1059.  
  1060. <Strings>
  1061.  In this dialog the path to be used to find *.ndx files
  1062.  may be specified. Ndx files contain information that
  1063.  allows a key word to be used to start the info viewer on
  1064.  that topic. These index files and corresponding *.inf
  1065.  files are often supplied by compiler vendors. Once set up
  1066.  this allows double clicking on a word in a file and
  1067.  having help on this item pop up. Note that double
  1068.  clicking in this fashion only works on files that are not
  1069.  read only otherwise the word under the cursor is
  1070.  interpreted as a file name to be loaded.
  1071.  The second string is the fold tag used by the tagged
  1072.  folding mechanism. See help for tagged folding.
  1073.  
  1074. <Splot Settings>
  1075.  The path is the path(s) to any include files needed by the
  1076.  interpreter. Most drawings include "splot.h" and hence this
  1077.  path should point to the directory containing this file.
  1078.  Mutiple paths should be separated by a semi-colon.
  1079.  If the check box Always load is selected then any data files
  1080.  are read from disk everytime the file is executed. If this
  1081.  is not selected the data is not re-read which is faster but
  1082.  means that the data may not be modified without copying.
  1083.  If the checkbox Incremental Draw is checked only the changed
  1084.  items are drawn. This is feature is however incomplete and
  1085.  not recommended.
  1086.  
  1087. <Macro List>
  1088.  This command causes all the currently defined macros to
  1089.  be listed. They may then also be edited using plain
  1090.  english although the easiest method of creating a macro
  1091.  is to use the key stroke recording menu item. In order to
  1092.  interpret any changes to the list this command needs to
  1093.  be used twice. First, load the macro list then make some
  1094.  changes and then use this command again. If the macro
  1095.  list is currently displayed this command interprets the
  1096.  list. Note that not all the function keys are actually
  1097.  available depending on the implementation. For example
  1098.  under OS/2 the Alt F4 key is the quit application system
  1099.  key and is trapped before ever reaching the editor's
  1100.  message queue. Hence these keys are unavailable despite
  1101.  appearing in the list.
  1102.  
  1103.  Note also that the macro keys must be specified in terms
  1104.  of the un mapped key strokes even if key mapping is on.
  1105.  
  1106.  The default accelerator is Ctrl L mapped to ^l
  1107.  
  1108.  The format of macro definitions is as follows: A function
  1109.  key name such as Shift F3 is followed by an arrow (->)
  1110.  and then a list of up to 128 key names each separated by
  1111.  a space. Key names may have a modifier in front of it
  1112.  again separated from the key name by a space. The
  1113.  available modifiers are Ctrl, Alt and Shift. Key names
  1114.  are any letter, punctuation or number or function key
  1115.  name as in F3. Additionally, the following special key
  1116.  names and combinations are also recognized.
  1117.  
  1118.  Ctrl Back
  1119.  Enter
  1120.  Backspace
  1121.  Tab
  1122.  Esc
  1123.  Shift Tab
  1124.  Home
  1125.  Up
  1126.  PgUp
  1127.  left
  1128.  KeyCenter
  1129.  Right
  1130.  End
  1131.  Down
  1132.  PgDn
  1133.  Ins
  1134.  Del
  1135.  Ctrl Ins
  1136.  Ctrl Del
  1137.  Ctrl Left
  1138.  Ctrl Right
  1139.  Ctrl Home
  1140.  Ctrl Pgdn
  1141.  Ctrl End
  1142.  Ctrl Pgup
  1143.  Ctrl Up
  1144.  Ctrl Down
  1145.  Alt Up
  1146.  Alt Left
  1147.  Alt Right
  1148.  Alt Down
  1149.  Alt Home
  1150.  Alt End
  1151.  Alt PgUp
  1152.  Alt PgDn
  1153.  Alt Del
  1154.  Alt Ins
  1155.  Shift Ins
  1156.  Shift Del
  1157.  Shift Home
  1158.  Shift Pgdn
  1159.  Shift End
  1160.  Shift Pgup
  1161.  Shift Left
  1162.  Shift Right
  1163.  Shift Up
  1164.  Shift Down
  1165.  Alt Back
  1166.  Alt Enter
  1167.  Shift Enter
  1168.  Ctrl Enter
  1169.  Alt Tab
  1170.  Ctrl Tab
  1171.  Ctrl Break
  1172.  Space
  1173.  
  1174. <Macro Read>
  1175.  This command causes all the currently listed macros to be
  1176.  read so that they become active. To list the current
  1177.  macro definitions use the macro list command. The macro
  1178.  definitions in the list may be edited using plain english
  1179.  although the easiest method of creating a macro is to use
  1180.  the key stroke recording menu item. Note that not all the
  1181.  function keys are actually available depending on the
  1182.  implementation. For example under OS/2 the Alt F4 key is
  1183.  the quit application system key and is trapped before
  1184.  ever reaching the editor's message queue. Hence these
  1185.  keys are unavailable despite appearing in the list.
  1186.  
  1187.  Note also that the macro keys must be specified in terms
  1188.  of the un-mapped key strokes even if key mapping is on.
  1189.  
  1190.  For a description of the macro definition format consult
  1191.  the help for the macro list command.
  1192.  
  1193.  The default accelerator is Ctrl D mapped to ^d
  1194.  
  1195. <Keymap List>
  1196.  This command causes all the currently defined key
  1197.  mappings to be listed. They may then also be edited using
  1198.  plain english In order to interpret any changes to the
  1199.  list this command needs to be used twice. First, load the
  1200.  key map list then make some changes and then use this
  1201.  command again. If the key map list is currently displayed
  1202.  this command interprets the list. In order for this
  1203.  command to be active key mapping must be enabled in the
  1204.  editor configuration notebook.
  1205.  
  1206.  The default accelerator is Ctrl K mapped to ^k
  1207.  
  1208.  The format of key map definitions is as follows: A list
  1209.  of key names (eg. Ctrl K Ctrl D) each separated by a
  1210.  space followed by an arrow (->) and then the name of the
  1211.  default key equivalent which is in all cases a single,
  1212.  possibly modified, key. As a special case the key map on
  1213.  key ^\, if mapped, must be last in the list and is
  1214.  never un mapped provided mapping itself is enabled in
  1215.  the configuration notebook. These keys are required
  1216.  for emulating a modal editor such as vi.
  1217.  
  1218.  Key names may have a modifier in front of it again
  1219.  separated from the key name by a space. The available
  1220.  modifiers are Ctrl, Alt and Shift. Key names are any
  1221.  letter, punctuation or number or function key name as
  1222.  in F3. Additionally, the following special key names
  1223.  and combinations are also recognized.
  1224.  
  1225.  Ctrl Back
  1226.  Enter
  1227.  Backspace
  1228.  Tab
  1229.  Esc
  1230.  Shift Tab
  1231.  Home
  1232.  Up
  1233.  PgUp
  1234.  left
  1235.  KeyCenter
  1236.  Right
  1237.  End
  1238.  Down
  1239.  PgDn
  1240.  Ins
  1241.  Del
  1242.  Ctrl Ins
  1243.  Ctrl Del
  1244.  Ctrl Left
  1245.  Ctrl Right
  1246.  Ctrl Home
  1247.  Ctrl Pgdn
  1248.  Ctrl End
  1249.  Ctrl Pgup
  1250.  Ctrl Up
  1251.  Ctrl Down
  1252.  Alt Up
  1253.  Alt Left
  1254.  Alt Right
  1255.  Alt Down
  1256.  Alt Home
  1257.  Alt End
  1258.  Alt PgUp
  1259.  Alt PgDn
  1260.  Alt Del
  1261.  Alt Ins
  1262.  Shift Ins
  1263.  Shift Del
  1264.  Shift Home
  1265.  Shift Pgdn
  1266.  Shift End
  1267.  Shift Pgup
  1268.  Shift Left
  1269.  Shift Right
  1270.  Shift Up
  1271.  Shift Down
  1272.  Alt Back
  1273.  Alt Enter
  1274.  Shift Enter
  1275.  Ctrl Enter
  1276.  Alt Tab
  1277.  Ctrl Tab
  1278.  Ctrl Break
  1279.  Space
  1280.  
  1281. <Keymap Read>
  1282.  This command reads the currently displayed key mappings.
  1283.  To list the current key mappings use the Keymap list
  1284.  command. The mappings may be edited before reading.
  1285.  In order for this command to be active key mapping
  1286.  must be enabled in the editor configuration notebook.
  1287.  
  1288.  For details on the key definition format consult the
  1289.  help for Keymap List
  1290.  
  1291.  The default accelerator is Ctrl Y mapped to ^y
  1292.  
  1293. <Keymap On>
  1294.  Turns key mapping on if currently off. This command is
  1295.  only available if key mapping is enabled in the editor
  1296.  configuration dialog. Note that if this key is mapped
  1297.  to another key it must be the last key in the mapping
  1298.  list and then this key is always mapped so that
  1299.  key mapping can be turned on again.
  1300.  
  1301. <Keymap Off>
  1302.  Turn key mapping off if currently on. This command is
  1303.  only available if key mapping is enabled in the editor
  1304.  configuration dialog.
  1305.  
  1306.  
  1307.  
  1308.  
  1309. <Execute>
  1310.  Starts interpretation and execution of the code starting
  1311.  at the current program line if stopped at a break point or
  1312.  at the start of the main() routine.  If not currently at a
  1313.  break point then a part of the code may be executed by
  1314.  marking the lines to be done. In this case it is imperative
  1315.  that the marked section does not contain any unbalanced
  1316.  braces otherwise an error will be generated.
  1317.  
  1318.  The default accelerator is Ctrl g  mapped to ^G
  1319.  
  1320. <Execute Marked>
  1321.  Starts interpretation and execution of the code starting
  1322.  at the current program line if stopped at a break point or
  1323.  at the start of the main() routine.  If not currently at a
  1324.  break point then a part of the code may be executed by
  1325.  marking the lines to be done. In this case it is imperative
  1326.  that the marked section does not contain any unbalanced
  1327.  braces otherwise an error will be generated.
  1328.  
  1329.  The default accelerator is Ctrl g  mapped to ^G
  1330.  
  1331. <Stop Execution>
  1332.  Terminates interpretation of the code and returns control
  1333.  to the editor without setting a break point.
  1334.  
  1335.  The default accelerator is Alt S  mapped to %s
  1336.  
  1337.  
  1338. <Break>
  1339.  Stops interpretation of the code and returns control
  1340.  to the editor after setting a break point on the currently
  1341.  executing line.
  1342.  
  1343.  The default accelerator is Ctrl Break  mapped to &^
  1344.  
  1345. <Reset>
  1346.  Resets the program counter to the beginning and causes
  1347.  the internal flags to be reset so that the next time
  1348.  the file is executed the #includes are processed again.
  1349.  This is useful if changes have been made to an included
  1350.  file. Normally #include files are read only the first time
  1351.  the file executes.
  1352.  
  1353.  The default accelerator is Alt R mapped to %r
  1354.  
  1355. <Set Breakpnt>
  1356.  Toggles on or off a break point on the current line.
  1357.  Subsequent execution of the file will then stop at
  1358.  this location allowing inspection of the variables
  1359.  etc.
  1360.  
  1361.  The default accelerator is ALT B  mapped to %b
  1362.  
  1363. <Clear Breakpnt>
  1364.  Toggles on or off a break point on the current line.
  1365.  Subsequent execution of the file will then stop at
  1366.  this location allowing inspection of the variables
  1367.  etc.
  1368.  
  1369.  The default accelerator is ALT B  mapped to %b
  1370.  
  1371. <Step into>
  1372.  Single steps the execution to the next line stepping
  1373.  into a subroutine if the current line calls a
  1374.  subroutine.
  1375.  
  1376.  The default accelerator is ALT I  mapped to %i
  1377.  
  1378. <Step over>
  1379.  Single steps the execution to the next line stepping
  1380.  over any subroutine calls on the current line.
  1381.  
  1382.  The default accelerator is ALT O  mapped to %o
  1383.  
  1384. <Global vars...>
  1385.  Opens a dialog showing the values of all the currently
  1386.  defined global variables. This dialog may be repositioned
  1387.  and left open while the code is single stepped to watch
  1388.  the variable values.
  1389.  
  1390.  The default accelerator is ALT G  mapped to %g
  1391.  
  1392. <Local vars...>
  1393.  Opens a dialog showing the values of all the currently
  1394.  defined local variables. This dialog may be repositioned
  1395.  and left open while the code is single stepped to watch
  1396.  the variable values.
  1397.  
  1398.  The default accelerator is ALT L  mapped to %l
  1399.  
  1400. <Defines...>
  1401.  Opens a dialog showing the values of all the current
  1402.  defines.
  1403.  
  1404.  The default accelerator is ALT D  mapped to %d
  1405.  
  1406.  
  1407. <abs>
  1408.  int abs(int i);
  1409.  
  1410.  Returns the absolute value of i;
  1411.  
  1412. <acos>
  1413.  double acos(double x);
  1414.  
  1415.  Returns the arc cosine of the value x. x must be
  1416.  between -1 and 1. Returns a value between 0 and pi.
  1417.  
  1418. <arraydim>
  1419.  int arraydim(void *array,int i);
  1420.  
  1421.  Returns the number of elements in the ith dimension
  1422.  of the array. Returns -1 if it is not an array or if
  1423.  i is greater than the number of dimensions of the array.
  1424.  Dimension counting starts at 0. The second parameter is
  1425.  optional and if omitted the function returns the
  1426.  dimensions of the array.
  1427.  
  1428.  This is not a standard C library function.
  1429.  
  1430. <arraydup>
  1431.  void *arraydup(void *array, int dim , int num);
  1432.  
  1433.  Returns a pointer to a duplicate of the array.
  1434.  Memory is malloced for the new array and the values
  1435.  in the old array copied to the new one.
  1436.  The last two parameters are optional and if included
  1437.  allow the size of the target array to be changed. The
  1438.  second parameter is the dimension to be changed and
  1439.  the third parameters the change in size of a the
  1440.  specified dimension. Thus for a 2D data array with
  1441.  these optional parameters it is possible to add or
  1442.  subtract some rows or columns.
  1443.  
  1444.  This is not a standard C library function.
  1445.  
  1446. <arraymalloc>
  1447.  double *arraymalloc(int dimen,int dsize,int no,...);
  1448.  
  1449.  Returns a pointer to a malloced array of elements of
  1450.  size given by dsize. If dsize is 1 char type is assumed,
  1451.  if 2 short, 4 int and 8 double. The first parameter is the
  1452.  number of dimensions, the second the base element size and
  1453.  then a series of size values one for each dimension.
  1454.  
  1455.  This is not a standard C library function.
  1456.  
  1457. <asin>
  1458.  double asin(double x);
  1459.  
  1460.  Returns the arc sine of the value x. x must be between
  1461.  -1 and 1. Returns a value between -pi/2 and pi/2. 
  1462.  
  1463. <atan>
  1464.  double atan(double x);
  1465.  
  1466.  Returns the arc tangent of the value x. Returns a value 
  1467.  between -pi/2 and pi/2. 
  1468.  
  1469. <atan2>
  1470.  double atan2(double y,double x);
  1471.  
  1472.  Returns the arc tangent of the value y/x. Returns a value 
  1473.  between -pi and pi. 
  1474.  
  1475. <atoi>
  1476.  int atoi(char *str);
  1477.  
  1478.  Converts a string to an integer. The string is converted up to
  1479.  the first non-digit.
  1480.  
  1481. <atof>
  1482.  double atof(char *str);
  1483.  
  1484.  Converts a string to a double. The string is converted up to
  1485.  the first character that is not a digit or 'e', 'E', '.', '-'
  1486.  and '+' .
  1487.  
  1488. <ceil>
  1489.  double ceil(double x);
  1490.  
  1491.  Rounds up x to nearest integer value. 
  1492.  
  1493. <cos>
  1494.  double cos(double x);
  1495.  
  1496.  Returns the cosine of x. x is specified in radians.
  1497.  
  1498. <ctime>
  1499.  char *ctime(int tim);
  1500.  
  1501.  Returns a pointer to an ASCII string containing the
  1502.  current date and time. The passed parameter should
  1503.  be the value returned by the time() function for
  1504.  the current time and date.
  1505.  
  1506.  example:
  1507.  
  1508.  puts(ctime(time()));
  1509.  
  1510.  
  1511. <exit>
  1512.  void exit(int status);
  1513.  
  1514.  Terminates the execution of the program. If the status is 0 
  1515.  then it will be considered a normal exit otherwise an error
  1516.  induced exit.
  1517.  
  1518. <exp>
  1519.  double exp(double x);
  1520.  
  1521.  Calculates the exponential function e^x.
  1522.  
  1523. <fabs>
  1524.  double fabs(double x);
  1525.  
  1526.  Returns the absolute value of x. It is like abs() but works
  1527.  with floating point numbers rather than integers.
  1528.  
  1529. <fclose>
  1530.  int fclose(FILE *fil);
  1531.  
  1532.  Closes an open file pointed to by the passed file pointer.
  1533.  Returns non-zero if any errors occurred. File buffers are
  1534.  flushed before closing.
  1535.  
  1536. <fft>
  1537.  void fft(double *data,int rcol,int icol,int inv)
  1538.  
  1539.  Does a fast Fourier transform of the data. The last
  1540.  parameter is optional and if TRUE the inverse
  1541.  transform is done. The rcol parameter specifies the
  1542.  column of data which is the real part while icol is
  1543.  the column of data which is the imaginary part. To do
  1544.  a transform of a real function just arrange to have a
  1545.  column of zeros in your data. Note that the number of
  1546.  rows in the data set must be a multiple of 2. If not
  1547.  add rows to pad. This is not a standard C library
  1548.  function.
  1549.  
  1550. <fgets>
  1551.  char *fgets(char *str,int n,FILE *fil)
  1552.  
  1553.  Reads a string from the file pointed to by fil into the
  1554.  string str. Reading ends when either a newline character
  1555.  is read or n-1 characters have been read. The newline
  1556.  character is not retained if read and a terminating '\0'
  1557.  is added to the end of the string. This function returns
  1558.  a pointer to the string str or NULL if an error occurred
  1559.  or the end of file was reached.
  1560.  
  1561. <floor>
  1562.  double floor(double x);
  1563.  
  1564.  Rounds down x to the nearest integer.
  1565.  
  1566. <fmod>
  1567.  double fmod(double x,double y);
  1568.  
  1569.  Returns the remainder of x/y.
  1570.  
  1571. <fopen>
  1572.  FILE *fopen(char *name,char *mode);
  1573.  
  1574.  Opens a file with the passed name and returns a
  1575.  FILE pointer. If the named file could not be
  1576.  opened a NULL pointer is returned. The mode string
  1577.  is one of the following:
  1578.  
  1579.  "r"   - open for read only.
  1580.  "w"   - open for write. Previous contents destroyed.
  1581.  "a"   - open for append to end of existing file.
  1582.  
  1583.  Only text mode files are supported by the interpreter.
  1584.  
  1585. <fputs>
  1586.  int fputs(char *str,FILE *fil)
  1587.  
  1588.  Writes the string str to the file pointed to by the
  1589.  passed file pointer. No new line characters are inserted
  1590.  unless a "\n" explicitly appears in the string str.
  1591.  The return value is non-zero if an error occurred.
  1592.  
  1593. <free>
  1594.  void free(char *ptr);
  1595.  
  1596.  Frees the block of memory pointed to by ptr. The memory
  1597.  must have been previously allocated using malloc().
  1598.  
  1599. <gets>
  1600.  char *gets(char *str);
  1601.  
  1602.  This function queries the user for a string by opening a
  1603.  dialog box. The entered string is returned in the char
  1604.  array str which must be previously declared and large
  1605.  enough to hold the result. The return value is a pointer
  1606.  to the same string. As an extension to the standard C
  1607.  library behaviour the value of str upon entry is used
  1608.  as the dialog title. I.e. it can be used as a prompt.
  1609.  
  1610.  
  1611. <log>
  1612.  double log(double x);
  1613.  
  1614.  Returns the natural log of x.
  1615.  
  1616. <log10>
  1617.  double log10(double x);
  1618.  
  1619.  Returns the log base 10 of x.
  1620.  
  1621. <malloc>
  1622.  char *malloc(int size);
  1623.  
  1624.  Allocates a block of memory of size bytes and returns a
  1625.  pointer to the block. malloc returns NULL if there is
  1626.  insufficient free memory.
  1627.  
  1628. <max>
  1629.  double max(double x,double y);
  1630.  
  1631.  Returns the larger of x or y. This is NOT a standard
  1632.  C library function.
  1633.  
  1634. <min>
  1635.  double min(double x,double y);
  1636.  
  1637.  Returns the smaller of x or y. This is NOT a standard
  1638.  C library function.
  1639.  
  1640. <pow>
  1641.  double pow(double x,double y);
  1642.  
  1643.  Calculates x to the power y.
  1644.  
  1645. <puts>
  1646.  int puts(char *str);
  1647.  
  1648.  This routine writes the string str to the output file and 
  1649.  starts a new line. 
  1650.  
  1651. <printf>
  1652.  int printf(char *format,...);
  1653.  
  1654.  Prints the formatted data to the output file. The format 
  1655.  string specifies the type and number of values to print.
  1656.  Some common examples include:
  1657.  
  1658.  printf("i = %d",i); prints the 
  1659.  integer value i. 
  1660.  
  1661.  printf("x = %g",x); prints the 
  1662.  floating point value x.
  1663.  
  1664.  printf("text = %s",str); prints the 
  1665.  string str. 
  1666.  
  1667.  Multiple values can be printed as in 
  1668.  printf("%d %d %g %s",i,j,x,str); 
  1669.  
  1670.  The format specifiers can also include field width 
  1671.  information and justification etc. Consult a standard C
  1672.  text for more details. 
  1673.  
  1674. <print>
  1675.  void print(v,...);
  1676.  
  1677.  Prints the value v which can be of any scalar type. i.e
  1678.  int, char, float, double or a pointer. This is not a
  1679.  function found in the standard C library.
  1680.  
  1681. <rand>
  1682.  int rand();
  1683.  
  1684.  Returns random number between 0 and
  1685.  0x7FFF. Re-seed using srand();
  1686.  
  1687. <readdata>
  1688.  void readdata(char * filename, double * data, int mod);
  1689.  
  1690.  Reads a file of name filename and puts the data into the
  1691.  array "data". The file should be in ASCII format with the x
  1692.  data in one column and the y data values next column(s).
  1693.  Any line containing non numeric characters or is blank will
  1694.  be considered a comment and ignored. WARNING! In Splot as
  1695.  an optimization data is only read from disk once if the
  1696.  configuration parameter always_load is off. Subsequent
  1697.  executions use the stored data already in memory (except
  1698.  after a reset). This means that if you modify the array
  1699.  "data" after reading in values the next time the file is
  1700.  executed you will get strange results. Similarly, if you
  1701.  reuse the same array for different plots in the same
  1702.  drawing you will have trouble. The motto is never change
  1703.  the values in the array "data". If you want to change the
  1704.  values declare another array and copy the values. Also
  1705.  remember that readdata() implicitly allocates memory for
  1706.  the data array so it is correct to declare the data array
  1707.  as double *data; at the top. If however, you are going to
  1708.  fill in a new array with calculated values you need to
  1709.  declare the array as double newdata[ysize][xsize]; so that
  1710.  space will be allocated. The last parameter is optional
  1711.  and if included and non-zero the data is read in as a
  1712.  single dimension array. Furthermore, x values are not
  1713.  generated if there is just a single column of numbers in
  1714.  the file. This modified form of readdata is useful for
  1715.  reading in numbers into an array to be used in the Splot
  1716.  function lineto() etc.
  1717.  
  1718.  
  1719. <sin>
  1720.  double sin(double x);
  1721.  
  1722.  Returns the sine of x. x must be specified in radians.
  1723.  
  1724. <sleep>
  1725.  void sleep(int millisec);
  1726.  
  1727.  Stops execution for a duration in milliseconds as
  1728.  specified by the passed parameter.
  1729.  
  1730. <smooth>
  1731.  void smooth(double *data, int ycol, int pnts, int cycl)
  1732.  
  1733.  Does a pnts point smooth on the specified column of
  1734.  the data array. The last parameter specifies that the
  1735.  data is cyclical and that to smooth the endpoints the
  1736.  algorithm should wrap around back to the beginning or
  1737.  end. The last two parameters are optional and are set
  1738.  to 5 and FALSE by default. This is not a standard C
  1739.  library function.
  1740.  
  1741. <sqrt>
  1742.  double sqrt(double x);
  1743.  
  1744.  Calculates the square root of x. x must be a positive
  1745.  number.
  1746.  
  1747. <srand>
  1748.  void srand(int seed);
  1749.  
  1750.  Re-seeds the random number generator.
  1751.  Implicitly started with a seed of 1.
  1752.  
  1753. <sizeof>
  1754.  int sizeof(t);
  1755.  
  1756.  Returns the number of bytes required to store the value of
  1757.  type t. In standard C this is not a function but here it is.
  1758.  
  1759. <sprintf>
  1760.  int sprintf(char str,char
  1761.      *format,...);
  1762.  
  1763.  Prints the formatted data to the string str. The format
  1764.  string specifies the type and number of values to print.
  1765.  Some common examples include:
  1766.  
  1767.  sprintf(str,"i = %d",i); prints the
  1768.  integer value i.
  1769.  
  1770.  sprintf(str,"x = %g",x); prints the
  1771.  floating point value x.
  1772.  
  1773.  sprintf(str,"text = %s",string); prints the
  1774.  string string.
  1775.  
  1776.  Multiple values can be printed as in
  1777.  sprintf(str,"%d %d %g %s",i,j,x,str);
  1778.  
  1779.  The format specifiers can also include field width 
  1780.  information and justification etc. Consult a standard C
  1781.  text for more details. 
  1782.  
  1783. <strcat>
  1784.  char *strcat(char *dest, char *source);
  1785.  
  1786.  Concatenates the string source to the string dest.
  1787.  Returns a pointer to the dest string.
  1788.  
  1789. <strcpy>
  1790.  char *strcpy(char *dest, char *source);
  1791.  
  1792.  Copies the string source to the string dest.
  1793.  Returns a pointer to the dest string.
  1794.  
  1795. <strindex>
  1796.  int strindex(char *str, char *sub);
  1797.  
  1798.  Look for the sub string sub in str.
  1799.  Returns the offset into the character array if the sub
  1800.  string was found otherwise -1.
  1801.  
  1802. <strcmp>
  1803.  int strcmp(char *s1, char *s2);
  1804.  
  1805.  Compares the string s1 to the string s2.
  1806.  Returns < 0 if s1 is lexically < s2
  1807.  returns   0 if s1 equals s2
  1808.  Returns > 0 if s1 is lexically > s2
  1809.  
  1810. <strlen>
  1811.  int strlen(char *str);
  1812.  
  1813.  Returns the length of the string str.
  1814.  
  1815. <tan>
  1816.  double tan(double x);
  1817.  
  1818.  Calculates the value of the tangent of x. x should be
  1819.  specified in radians.
  1820.  
  1821. <time>
  1822.  int time();
  1823.  
  1824.  Returns the number of seconds elapsed since 00:00:00
  1825.  GMT January 1, 1970. Similar to the standard C library
  1826.  function time() but does not take a parameter.
  1827.  Generally used in conjunction with ctime();
  1828.  
  1829. <writedata>
  1830.  void writedata(char *filename, double *data); or
  1831.  void writedata(FILE *fil, double *data);
  1832.  
  1833.  Writes a file of name filename with the contents of the
  1834.  data array "data". The array must be a two dimensional array.
  1835.  The format of the output is such that a file created
  1836.  using writedata() can be read in again using readdata().
  1837.  The first form overwrites an existing file of the same
  1838.  name and opens and closes the file internally. To add
  1839.  to an existing file use the second form after obtaining
  1840.  a file handle with fopen();.
  1841.  
  1842.  
  1843. <break>
  1844.  C keyword
  1845.  
  1846.  Used to prematurely terminate a loop;
  1847.  
  1848.  Example:
  1849.  
  1850.  for (i = 0;i< 100; i++)
  1851.     {
  1852.     if (cond == 1) break;
  1853.     /* if cond == 1 break out of the
  1854.     loop regardless of the value of
  1855.     i and continue at end of loop. */
  1856.     }
  1857.  
  1858. <case>
  1859.  C keyword
  1860.  
  1861.  Used in conjunction with a switch to select one of a set of 
  1862.  choices.
  1863.  
  1864.  Example:
  1865.     
  1866.   switch(code)
  1867.      {
  1868.      case 0:/* do something if code = 0*/
  1869.         break;
  1870.      case 1:/* do this if code = 1*/
  1871.         break;   
  1872.      case 2:
  1873.      case 3:/* do this if code = 1 or 2*/
  1874.         break;
  1875.      default:/* do this if none of the
  1876.            above */
  1877.        break;
  1878.      }
  1879.  
  1880. <char>
  1881.  C keyword
  1882.  
  1883.  Used to allocate memory for a variable of size one byte. 
  1884.  All chars are between -128 and 127. All variable
  1885.  declarations must be done outside of the main routine for
  1886.  of the main routine for globals. Unlike standard C and more
  1887.  like C++ local variable declarations for local variables
  1888.  can be anywhere in the routine. Also specifying the size
  1889.  of local arrays using variables rather than constants is
  1890.  acceptable for the interpreter.
  1891.  
  1892.  Example:
  1893.  
  1894.   char c;
  1895.  
  1896.  Arrays of base types can be specified using the syntax:
  1897.  
  1898.   char tmp[80];
  1899.  
  1900.  Pointers to a base type are specified as 
  1901.  
  1902.   char *tp;
  1903.  
  1904. <continue>
  1905.  C keyword
  1906.  
  1907.  Used to skip the remainder of a loop and test the condition 
  1908.  again. 
  1909.  
  1910.  Example:
  1911.  
  1912.  for (i = 0;i< 100; i++)
  1913.     {
  1914.     if (cond == 1) continue;
  1915.     /* if not cond == 1 do the rest
  1916.     of the loop below the above line
  1917.     otherwise increment i and test
  1918.     again. */
  1919.     }
  1920.  
  1921.  
  1922. <default>
  1923.  C keyword
  1924.  
  1925.  Used in conjunction with a switch to select the remaining
  1926.  not explicitly specified choices.
  1927.  
  1928.  Example:
  1929.  
  1930.  switch(code)
  1931.     {
  1932.     case 0:/* do something if code = 0*/
  1933.        break;
  1934.     case 1:/* do this if code = 1*/
  1935.        break;
  1936.     case 2:
  1937.     case 3:/* do this if code = 1 or 2*/
  1938.        break;
  1939.     default:/* do this if none of the
  1940.            above */
  1941.        break;
  1942.     }
  1943.  
  1944. <do>
  1945.  C keyword
  1946.  
  1947.  Used in conjunction with while to set up loops that are
  1948.  executed at least once. For Example:
  1949.  
  1950.  do
  1951.     {
  1952.     /* loop body */
  1953.     }
  1954.  while (cond ==  1);
  1955.  
  1956. <double>
  1957.  C keyword
  1958.  
  1959.  Used to allocate memory for a double precision floating
  1960.  point value. All variable declarations must be done outside
  1961.  of the main routine for globals. Unlike standard C and more
  1962.  like C++ local variable declarations for local variables
  1963.  can be anywhere in the routine. Also specifying the size
  1964.  of local arrays using variables rather than constants is
  1965.  acceptable for the interpreter.
  1966.  
  1967.  Example:
  1968.  
  1969.  double d;
  1970.  
  1971.  Arrays of base types can be specified using the syntax (2 x
  1972.  400 array):
  1973.  
  1974.  double data[2][400];
  1975.  
  1976.  Pointers to a base type are specified as
  1977.  
  1978.  double *tp;
  1979.  
  1980. <else>
  1981.  C keyword
  1982.  
  1983.  Used as part of an if statement to select the converse 
  1984.  case. Example 
  1985.  
  1986.  if (cond == 1)
  1987.     {
  1988.     /* execute this if cond = 1 */
  1989.     }
  1990.  else
  1991.     {
  1992.     /* execute this if cond not 1 */
  1993.     }
  1994.  
  1995. <enum>
  1996.  C Keyword
  1997.  
  1998.  Only partially implemented. Its okay to declare an enum but
  1999.  all the elements are internally stored as separate constant
  2000.  integer values. Do not try to cast a variable to an enum.
  2001.  
  2002.  
  2003. <float>
  2004.  C keyword
  2005.  
  2006.  Used to allocate memory for a single precision floating
  2007.  point value. All variable declarations must be done outside
  2008.  of the main routine for globals. Unlike standard C and more
  2009.  like C++ local variable declarations for local variables
  2010.  can be anywhere in the routine. Also specifying the size
  2011.  of local arrays using variables rather than constants is
  2012.  acceptable for the interpreter.
  2013.  
  2014.  Example:
  2015.  
  2016.  float f;
  2017.  
  2018.  Arrays of base types can be specified using the syntax (2 x
  2019.  400 array):
  2020.  
  2021.  float data[2][400];
  2022.  
  2023.  Pointers to a base type are specified as:
  2024.  
  2025.  float *tp;
  2026.  
  2027. <for>
  2028.  C keyword
  2029.  
  2030.  Used to set up loops which are meant to run for a
  2031.  predetermined number of iterations. For example: 
  2032.  
  2033.  for (i = 0;i< 100; i = i + 2)
  2034.     {
  2035.     /* execute this loop body 50 
  2036.     times. i.e. until i = 100 with
  2037.     i starting at zero and incremented
  2038.     by 2 after each iteration */
  2039.     }
  2040.  
  2041. <int>
  2042.  C keyword
  2043.  
  2044.  Used to allocate memory for a variable of size one integer.
  2045.  All variable declarations must be done outside of the main
  2046.  of the main routine for globals. Unlike standard C and more
  2047.  like C++ local variable declarations for local variables
  2048.  can be anywhere in the routine. Also specifying the size
  2049.  of local arrays using variables rather than constants is
  2050.  acceptable for the interpreter.
  2051.  
  2052.  Example:
  2053.  
  2054.  int i,j;
  2055.  
  2056.  Arrays of base types can be specified using the syntax (2 x
  2057.  400 array):
  2058.  
  2059.  int data[2][400];
  2060.  
  2061.  Pointers to a base type are specified
  2062.  as
  2063.  
  2064.  int *tp;
  2065.  
  2066. <if>
  2067.  C keyword
  2068.  
  2069.  Used to conditionally execute a block of code depending if 
  2070.  the conditional expression is true (non zero) or false
  2071.  (zero). Can be used in conjunction with the keyword else. 
  2072.  For example: 
  2073.  
  2074.  if (i > j && k != 10)
  2075.     {
  2076.     /* execute this block if i greater
  2077.     than j and k not equal to 10 */
  2078.     }
  2079.  else
  2080.     {
  2081.     /* otherwise to this block */
  2082.     }
  2083.  
  2084. <long>
  2085.  C keyword
  2086.  
  2087.  Used to allocate memory for a variable of size one long
  2088.  integer. All variable declarations must be done outside of
  2089.  the main of the main routine for globals. Unlike standard
  2090.  C and more like C++ local variable declarations for local
  2091.  variables can be anywhere in the routine. Also specifying
  2092.  the size of local arrays using variables rather than
  2093.  constants is acceptable for the interpreter. In this
  2094.  implementaton a long is 32 bits the same as an int.
  2095.  
  2096.  Example:
  2097.  long i,j;
  2098.  
  2099.  Arrays of base types can be specified using the syntax (2 x
  2100.  400 array):
  2101.  
  2102.  long data[2][400];
  2103.  
  2104.  Pointers to a base type are specified as
  2105.  
  2106.  long *tp;
  2107.  
  2108.  
  2109. <main>
  2110.  C keyword
  2111.  
  2112.  This is actually a function and is the starting point of 
  2113.  the code. The function main is called by hitting CTRL G. 
  2114.  The syntax is 
  2115.  
  2116.  main()
  2117.     {
  2118.     /* program to be executed */
  2119.     }
  2120.  
  2121. <return>
  2122.  C Keyword
  2123.  
  2124.  This exits a sub routine and returns an optional value to 
  2125.  the calling routine. For example: 
  2126.  
  2127.  main()
  2128.     {
  2129.     int x;
  2130.     i = sub(x);
  2131.     print(i);
  2132.     }
  2133.  
  2134.  int sub(int x)
  2135.     {
  2136.     /* calculate i based on input x */
  2137.     return i;
  2138.     }
  2139.  
  2140. <short>
  2141.  C keyword
  2142.  
  2143.  Used to allocate memory for a variable of size one small
  2144.  integer. All variable declarations must be done outside of
  2145.  the main of the main routine for globals. Unlike standard
  2146.  C and more like C++ local variable declarations for local
  2147.  variables can be anywhere in the routine. Also specifying
  2148.  the size of local arrays using variables rather than
  2149.  constants is acceptable for the interpreter.
  2150.  
  2151.  Example:
  2152.  short i,j;
  2153.  
  2154.  Arrays of base types can be specified using the syntax (2 x
  2155.  400 array):
  2156.  
  2157.  short data[2][400];
  2158.  
  2159.  Pointers to a base type are specified as
  2160.  
  2161.  short *tp;
  2162.  
  2163. <struct>
  2164.  C Keyword
  2165.  
  2166.  Structures are not yet implemented. Do not use.
  2167.  
  2168. <switch>
  2169.  C keyword
  2170.  
  2171.  Used to select one of a number of choices based on the
  2172.  value of the expression code.
  2173.  
  2174.  Example:
  2175.  
  2176.  switch(code)
  2177.     {
  2178.     case 0:/* do something if code = 0*/
  2179.        break;
  2180.     case 1:/* do this if code = 1*/
  2181.        break;   
  2182.     case 2:
  2183.     case 3:/* do this if code = 1 or 2*/
  2184.        break;
  2185.     default:/* do this if none of the
  2186.            above */ 
  2187.        break;
  2188.     }
  2189.  
  2190. <union>
  2191.  C Keyword
  2192.  
  2193.  Unions are not yet implemented. Do not use.
  2194.  
  2195.  
  2196. <unsigned>
  2197.  C keyword
  2198.  
  2199.  Used as a type modifier for the integer variable types
  2200.  char, short, and int.
  2201.  
  2202.  example
  2203.  
  2204.  unsigned int ui;
  2205.  
  2206. <void>
  2207.  C Keyword
  2208.  
  2209.  Only partially implemented. void pointers are internally
  2210.  changed to char pointers. Other voids are ignored.
  2211.  
  2212. <while>
  2213.  C keyword
  2214.  
  2215.  Used to construct loops which run an non predetermined
  2216.  number of times. For example:
  2217.  
  2218.  cond = 1;
  2219.  while (code == 1)
  2220.     {
  2221.     /* execute this loop body until
  2222.     something in here sets cond to 
  2223.     something other than 1. */
  2224.     }
  2225.  
  2226.  
  2227.  
  2228.  
  2229.  
  2230.  
  2231.  
  2232.  
  2233.  
  2234.  
  2235.  
  2236.  
  2237.  
  2238.  
  2239.  
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245. <Print...>
  2246.  This command opens a printer selection dialog if more
  2247.  than one printer driver is available on your installation.
  2248.  After the printer is chosen the graphics image is spooled
  2249.  to the printer. To change various printer configuration
  2250.  settings open the settings dialog of your printer object.
  2251.  
  2252. <EPSfile...>
  2253.  This command opens a filename selection dialog to start
  2254.  with. The default name is the current splot file name
  2255.  with the extension .eps. The generated file is in the
  2256.  encapsulated postscript format. This is a device
  2257.  independent format and is suitable for inclusion in a
  2258.  larger postscript document as a figure or for printing
  2259.  directly on a postscript printer. To print an eps figure
  2260.  copy it directly to the printer bypassing any printer
  2261.  drivers.
  2262.  
  2263. <Metafile...>
  2264.  This command opens a filename selection dialog to start
  2265.  with. The default name is the current splot file name
  2266.  with the extension .met. The generated file is in the
  2267.  metafile format. This is a device and resolution
  2268.  independent format and is suitable for inclusion in other
  2269.  programs that accept the metafile format.
  2270.  
  2271. <Bitmapfile...>
  2272.  This command opens a filename selection dialog to start
  2273.  with. The default name is the current splot file name
  2274.  with the extension .bmp. The generated file is in the
  2275.  bitmap format. Bitmaps unlike metafiles or eps files
  2276.  are not device and resolution idependent. The number
  2277.  of pixels in the bitmap exactly matches the number of
  2278.  pixels in the graphics window. Hence a bitmap cannot
  2279.  be scaled without loss of quality. The resulting
  2280.  bitmap file is suitable for import to any other program
  2281.  that accepts a bitmap.
  2282.  
  2283. <Redraw>
  2284.  Redraws the graphics elements in the graphics window
  2285.  without reinterpreting the code. This can be useful if
  2286.  Splot is in the incremental draw mode in order to fix up
  2287.  blemishes caused by out of order drawing and erasing.
  2288.  
  2289. <Stop Draw>
  2290.  Stops the drawing process. This is only effective once
  2291.  drawing starts after interpretation of the code. Usually
  2292.  but not always interpretation takes longer than drawing.
  2293.  To stop interpretation choose Break in the exec menu of
  2294.  the editor.
  2295.  
  2296. <Trace Only>
  2297.  This is a toggle and if on lines are drawn single pixel
  2298.  wide regardless of the specified width and filled regions
  2299.  are just drawn using single pixel outlines. This
  2300.  significantly speeds up drawing of complex figures and
  2301.  may be useful while constructing a figure.
  2302.  
  2303. <Reset Graph>
  2304.  Clears the graphics page and restores the graphics
  2305.  state to its initial start up settings. This will also
  2306.  force a complete re interpretation of the source code
  2307.  the next time the execute command is selected.
  2308.  
  2309. <Coord Match>
  2310.  The coordinates used for the graphics cursor are usually
  2311.  in terms of centimeters from the bottom left corner of
  2312.  the graphics window. If this menu item is toggled on
  2313.  however the coordinate system is changed to match that
  2314.  of the current axes box. The current axes box is the
  2315.  last drawn or right clicked axes box. Coordinates entered
  2316.  by double clicking while match is on are also in terms
  2317.  of the current axes box system. This probably requires
  2318.  a previous cmatch(ON); call in the code to provide the
  2319.  desired results.
  2320.  
  2321. <Relative Coords>
  2322.  The coordinates used for the graphics cursor is usually
  2323.  in terms of centimeters from the bottom left corner of
  2324.  the graphics window. If this menu item is toggled on
  2325.  however the reported coordinates are relative to the
  2326.  last insertion point. An insertion point is set anytime
  2327.  a mouse button is clicked in the graphics window.
  2328.  
  2329. <Snap Toggle>
  2330.  Toggles on or off the coordinate snapping. If the setting
  2331.  is on the coordinates are always rounded to the nearest
  2332.  snap point as set by the snap spacing. In this way it is
  2333.  possible to force mouse entered coordinates to always be
  2334.  an even centimeter for example.
  2335.  
  2336. <Snap Spacing...>
  2337.  Opens a dialog to set the snap spacing. If snap is
  2338.  toggled on then coordinates are always rounded to the
  2339.  nearest snap point as set by the snap spacing. In this
  2340.  way it is possible to force mouse entered coordinates
  2341.  to always be an even centimeter for example.
  2342.  
  2343. <Grid Toggle>
  2344.  Toggles on or off the drawing of grid lines on the
  2345.  graphics window. These lines are a drawing aid and
  2346.  do not appear in printed output.
  2347.  
  2348. <Grid Spacing...>
  2349.  Opens a dialog to set the grid line spacing. Grid
  2350.  lines are draw on the graphics window as a drawing
  2351.  aid if toggled on and do not appear in printed output.
  2352.  
  2353. <Copy to Clipbrd>
  2354.  This command causes the current graphics window to be
  2355.  copied to the system clipboard in both the metafile
  2356.  and bitmap formats. This may be useful for exporting
  2357.  a figure to another program.
  2358.  
  2359. <Box Zoom>
  2360.  The figure is zoomed to the size specified by the
  2361.  mouse drawn box. Drag with the left mouse button
  2362.  to set a box. If the shift key is also down then
  2363.  the box zoom will be immediately invoked without
  2364.  the need to chose this command. Note that the actual
  2365.  box used may be different from that drawn since
  2366.  the aspect ratio is never changed. To pan a zoomed
  2367.  figure use the scroll bars.
  2368.  
  2369. <Undo Zoom>
  2370.  Restores the image to the previous zoom state. Any
  2371.  number of zooms may be undone until the original
  2372.  full size image is restored.
  2373.  
  2374. <Save View>
  2375.  The current zoom/pan state may be saved for later
  2376.  restoration using the Rest View menu item. Several
  2377.  views may be saved in a ring.
  2378.  
  2379. <Rest View>
  2380.  A previously saved zoom/pan state may be restored
  2381.  using this menu item. If several views have been
  2382.  saved this command will cycle through them.
  2383.  
  2384. <Draw>
  2385.     To plot a figure load a .spt file.
  2386.  For example:
  2387.  
  2388.  <esc> edit demo\logaxes.spt or use the 'Open'
  2389.  button in the 'File' menu.
  2390.  
  2391.  then hit CTRL G or 'Execute' button.
  2392.  
  2393.     The next section explains how to use the mouse. For
  2394.  help with the editor select help in the editor window.
  2395.  
  2396.  Using The Mouse
  2397.  
  2398.     Double clicking the left mouse button with the mouse on
  2399.  the drawing page inserts the current x,y coordinates into
  2400.  the text file at the current text cursor location. If the
  2401.  mouse cursor is in the text region then hitting the left
  2402.  mouse button will move the current text cursor to the mouse
  2403.  cursor location. The left mouse button is also used to
  2404.  select items in drop down menus. A rubber band box is drawn
  2405.  by pressing the left mouse button with the mouse over the
  2406.  plot window and dragging the mouse with the left button held
  2407.  down. The second point of the box is set to the location at
  2408.  which the button is released. Double clicking the left mouse
  2409.  button in the text window results in an action depending on
  2410.  the type of file and type of word under the mouse cursor.
  2411.  If the word under the cursor is a variable the value of the
  2412.  variable or constant is displayed. If the word is a
  2413.  function then the help screen for that function will be 
  2414.  loaded. If the current file has a read only attribute then 
  2415.  the editor attempts to interpret the word under the cursor 
  2416.  as a file name and subsequently load in that file.
  2417.  
  2418.     The right mouse button is used for highlighting 
  2419.  elements of a drawing. If the mouse cursor is on top of a 
  2420.  displayed element on the drawing page and the right mouse
  2421.  button is hit then the corresponding element is highlighted 
  2422.  in intense white and the text cursor jumps to the 
  2423.  corresponding line in the text that generated that element. 
  2424.  Conversely, if the mouse cursor is on the text side hitting
  2425.  the right mouse button will highlight any graphics elements 
  2426.  generated by the line under the mouse cursor. This feature
  2427.  is very useful for finding the code associated with a
  2428.  particular element of a drawing or the reverse. Clicking the 
  2429.  right mouse button on a drop down menu item will open a
  2430.  help window for that item if available. 
  2431.  
  2432.     When the mouse cursor is on the drawing page the
  2433.  current coordinates are printed at the bottom. The units
  2434.  and origin used are those in effect at the end of the last
  2435.  program execution. The default units are cm with the origin 
  2436.  in the bottom left corner of the page. Pressing the middle 
  2437.  mouse button (or both the left and right mouse buttons
  2438.  together on two button mice) with the mouse pointer on the 
  2439.  drawing page causes the current coordinate reference point 
  2440.  to be reset so that the current coordinate line
  2441.  subsequently reports the distance from this point. 
  2442.  
  2443.  In the editor window the mouse can also be used to mark a
  2444.  region. Three types of regions are available and can be
  2445.  assigned to any one of three mouse buttons as set up in the
  2446.  "config" notebook of the "file" menu.
  2447.  
  2448.  
  2449.  
  2450.     Actions associated with the menu buttons 
  2451.  
  2452.     There are several menu buttons along the top of the 
  2453.  display. The action of these buttons is as follows. 
  2454.  Starting at the left top there are four buttons labelled 
  2455.  'Draw', 'Slib', 'Cnst', 'SetO' and 'Keyw'. These activate 
  2456.  drop down menus which allow a function to be selected and 
  2457.  inserted into the text. The 'Draw' functions are a suite of 
  2458.  drawing routines which cause lines, arcs, text etc. to be
  2459.  drawn to the page. The 'SetO' menu is a list of textual
  2460.  names for numerical constants which are used in conjunction
  2461.  with the set(); command to change attributes of the current 
  2462.  graphics state such as the current colour, line width, line
  2463.  style, axes type, etc. Choosing set from the list of 
  2464.  drawing functions automatically opens a menu with only an
  2465.  appropriate subset of these and is the recommended 
  2466.  approach. The 'Slib' button allows selection of a standard
  2467.  C library function. Most of these are math functions such
  2468.  as sin() and will not be required for making ordinary 
  2469.  plots. They are however useful for manipulating data before 
  2470.  plotting or generating data mathematically all from within 
  2471.  Splot. The 'Cnst' button opens a menu containing all the 
  2472.  constants defined in splot.h. The last button of this group 
  2473.  'KeyW' opens a list of C keywords for selection. The only 
  2474.  one of these that is of interest for ordinary plots is
  2475.  'main'. Every file that generates a plot or drawing must 
  2476.  start with 
  2477.  
  2478.  #include <splot.h>
  2479.  main()
  2480.     {
  2481.     /* List of drawing commands go here */
  2482.     /* between the braces on as many */
  2483.     /* lines as necessary. */
  2484.     }
  2485.  
  2486.     This is all automatically inserted in the text by
  2487.  selecting 'main'. The remaining keywords in this list are
  2488.  only of interest when constructing loops or branches.
  2489.  
  2490.     The next button labelled 'Misc' opens a sub menu
  2491.  containing the options 'Reset', 'Redraw' , 'Coord Match'
  2492.  and 'Relative Coord'. 'Reset' resets splot to its initial
  2493.  state and erases the current drawing. The 'Redraw' button
  2494.  can be useful if Splot is in the incremental draw mode in
  2495.  order to fix up blemishes caused by out of order drawing ad
  2496.  erasing. 'Redraw' just re draws the current plot. The button
  2497.  'Coord Match' toggles the current units from cm to units
  2498.  matching those defined in the last axes_box() and back. The
  2499.  button 'Relative Coord' toggles the coordinate display from
  2500.  reporting the absolute coordinate to reporting the distance
  2501.  between the mouse position and the current point defined
  2502.  using the middle mouse button or double clicking the left
  2503.  mouse button over the plot window.
  2504.  
  2505.     The next button along the top is concerned with
  2506.  displaying the drawing. The default size of the drawing is
  2507.  one which fits on a standard 8 x 11 inch piece of paper if
  2508.  printed. However, as the screen resolution is not as good
  2509.  as that of printers it is possible to zoom in on part of a
  2510.  drawing in order to get a better view. To zoom in on part
  2511.  of a drawing hold down the left button and drag the mouse
  2512.  to enclose the region of interest. Then select the zoom
  2513.  button and pick the drop down menu item 'Box Zoom'. The
  2514.  button 'Undo Zoom' restores the previous view. The buttons
  2515.  'Save View' and 'Rest View' allow interesting views to be
  2516.  saved on a stack and restored respectively.
  2517.  
  2518. <Input mode>
  2519.  This menu item toggles the keyboard input mode. If
  2520.  enabled then typing will automatically enable the
  2521.  command line for input and a carriage return causes
  2522.  the entered line to be sent out on the current comm
  2523.  port. If not enabled then the regular file editing
  2524.  mode is in effect.
  2525.  
  2526.  The default accelerator is ALT M  mapped to %m
  2527.  
  2528. <Port...>
  2529.  This command opens the comm port selection dialog.
  2530.  Available ports are 1-4 hardware permitting.
  2531.  
  2532. <Baud...>
  2533.  This command opens the baud rate selection dialog.
  2534.  Available baud rates for the current comm port are
  2535.  standard rates up to 38,400.
  2536.  
  2537. <Xmit cur line>
  2538.  This command causes the line that the text cursor is
  2539.  currently on to be transmitted on the current comm
  2540.  port. A carriage return is automatically appended to
  2541.  the string.
  2542.  
  2543.  The default accelerator is ALT X  mapped to %x
  2544.  
  2545. <transmit>
  2546.  int transmit(char *str);
  2547.  
  2548.  For versions with serial communication enabled this command
  2549.  sends out the passed string str on the current comm port. A
  2550.  carriage return is appended to the string and the number of
  2551.  characters actually sent is returned.
  2552.  
  2553.  This is not a standard C library function.
  2554.  
  2555. <receive>
  2556.  int receive(char *buf,int timeout);
  2557.  
  2558.  For versions with serial communication enabled this command
  2559.  receives a string from the current comm port. A string is
  2560.  considered complete when a carriage return is received. The
  2561.  received string is returned in the character array buf which
  2562.  must have been previously declared and must be large enough
  2563.  to hold the result. The timeout parameter is in seconds and
  2564.  limits the time the receive function will wait for a complete
  2565.  string. If a timeout occurs the return value is TRUE else the
  2566.  return value is 0.
  2567.  
  2568.  This is not a standard C library function.
  2569.  
  2570. <waitfor>
  2571.  int waitfor(char *pattern,int timeout);
  2572.  
  2573.  For versions with serial communication enabled this
  2574.  command waits until a string matching the passed pattern
  2575.  string has been received from the current comm port. The
  2576.  timeout parameter is in seconds and limits the time the
  2577.  receive function will wait for a match. If a timeout
  2578.  occurs the return value is TRUE else the return value is
  2579.  0.
  2580.  
  2581.  This is not a standard C library function.
  2582.  
  2583. <waitreg>
  2584.  int waitreg(char *regexp,int timeout,char *mbuf,...);
  2585.  
  2586.  For versions with serial communication enabled this
  2587.  command waits until a string matching the passed regular
  2588.  expression has been received from the current comm port.
  2589.  The timeout parameter is in seconds and limits the time
  2590.  the receive function will wait for a match. If a timeout
  2591.  occurs the return value is TRUE else the return value is
  2592.  0. If a match is found the matched string is copied to
  2593.  the buffer pointed to by mbuf which must be allocated
  2594.  before calling this function. Optional additional regular
  2595.  expressions may be added at the end in which case this
  2596.  function waits for any one of the regular expressions to
  2597.  be matched.
  2598.  
  2599.  Regular expressions allow much more complicated match
  2600.  criteria to be specified than is possible in the waitfor
  2601.  function. For example the following regular expression
  2602.  will match any floating point number followed by a non
  2603.  number.
  2604.  
  2605.  [0-9]+[\.]*[0-9]*[^0-9]
  2606.  
  2607.  For regular expressions the following symbols have
  2608.  special meaning:
  2609.     ^ start of line
  2610.     \$ end of line
  2611.     . any character
  2612.     \\ literal next character
  2613.     + match one or more times
  2614.     * match zero or more times
  2615.     [aei0-9]   match a,e,i and 0 through 9
  2616.     [\^aei0-9] match anything but a,e,i and 0 through 9
  2617.     (  )       sub expression
  2618.     a(ab)*b    matches ab aabb aababb aabababb etc.
  2619.  
  2620.  This is not a standard C library function.
  2621.  
  2622.  
  2623. <abox>
  2624.  void abox(double xsi, double
  2625.        ysi, double xorig,
  2626.        double yorig);
  2627.  
  2628.  Adds an axes box to the current path. The box is drawn with
  2629.  a size of xsi by ysi and centered on the page. No internal
  2630.  coordinate system is set up. Use ascale() for this or use
  2631.  axes_box() to combine both functions. All the parameters
  2632.  are optional and if present, specify the box size and
  2633.  position of the axes origin relative to the page origin. For
  2634.  the last two parameters the special constants XCENTER and
  2635.  YCENTER can be used for the x or y position coordinate
  2636.  respectively and will cause the axes box to be centered on
  2637.  the page along that axis. Using both XCENTER and YCENTER is
  2638.  equivalent to the default behaviour with the last two
  2639.  parameters absent. If no parameters are specified a default
  2640.  size of 12 by 16 cm is used and the box centered on the page.
  2641.  abox() is implicitly stroked.
  2642.  
  2643. <alineto>
  2644.  void alineto(double len, double ang);
  2645.  
  2646.  Adds a line of length len at an angle of ang with respect
  2647.  to the previous line to the current path. Generates an
  2648.  error if there is no current point. If there is no
  2649.  previous line then a horizontal line ending at the
  2650.  current point is assumed. The angle is in degrees and is
  2651.  the angle between an imaginary extension to the previous
  2652.  line and the current line.
  2653.  
  2654.  
  2655. <arc>
  2656.  void arc(double xcen, double ycen, double rad, double 
  2657.        alpha, double beta); 
  2658.   
  2659.  Adds a circular arc of radius rad centered at (xcen, ycen) 
  2660.  to the current path. The starting angle is alpha and the 
  2661.  stopping angle is beta. The arc is drawn in the counter 
  2662.  clockwise direction. A straight line section will be added 
  2663.  from the previous current point if any to the starting 
  2664.  point of the arc. 
  2665.   
  2666. <arcn>
  2667.  void arcn(double xcen, double ycen, double rad, double 
  2668.        alpha, double beta); 
  2669.   
  2670.  Adds a circular arc of radius rad centered at (xcen, ycen) 
  2671.  to the current path. The starting angle is alpha and the 
  2672.  stopping angle is beta. The arc is drawn in the clockwise 
  2673.  direction. A straight line section will be added from the 
  2674.  previous current point if any to the starting point of the 
  2675.  arc. Exactly as arc() but draws the arc in the opposite 
  2676.  direction. 
  2677.   
  2678. <arcto>
  2679.  void arcto(double x1, double y1, double x2, double y2, 
  2680.         double rad); 
  2681.   
  2682.  Adds a circular arc of radius rad to the current path. The 
  2683.  center and angles are chosen so that the arc is tangent to 
  2684.  the line formed by (x1,y1) and the current point at its 
  2685.  start and tangent to the line (x1,y1) - (x2,y2) at its end 
  2686.  point. A straight line segment is added from the current 
  2687.  point to the start of the arc. An error is generated is 
  2688.  there is no current point. 
  2689.   
  2690. <arrowto>
  2691.  void arrowto(double x,double y,...);
  2692.  or
  2693.  void arrowto(double *array,int first,int last);
  2694.  or
  2695.  void arrowto(double *array);
  2696.  
  2697.  
  2698.  Adds a line segment to the current path from the current
  2699.  point to (x,y). The line is terminated by drawing an arrow
  2700.  head oriented in the direction of the line. More than one
  2701.  coordinate point can be specified in the command in which
  2702.  case a series of line segments terminated by arrows
  2703.  connecting the points will be added to the current path. If
  2704.  there is no current point then an error will be generated.
  2705.  The size of the arrow head may be changed with the
  2706.  set(FONTWIDTH,...); command. The second format is a pointer
  2707.  to a 2D array of coordinate pairs followed by an optional
  2708.  pair of integers specifying the first and last pairs to be
  2709.  plotted.
  2710.  
  2711. <ascale>
  2712.  void ascale(int axes, double xstart, double ystart, double 
  2713.       xend, double yend); 
  2714.  
  2715.   or
  2716.  
  2717.  void ascale(int axes, double *data, int col,...); 
  2718.  
  2719.  An internal coordinate system is set up for subsequent 
  2720.  plotting of data within the existing axes box. The x axis 
  2721.  start and stop values are xstart and xend respectively and 
  2722.  ystart, yend for the y axis. for the y axis. If the axis 
  2723.  choice is XAXES or YAXES rather than XYAXES then only two 
  2724.  numbers follow the axes specifier rather than four. This 
  2725.  allows the x and y axes scales to be set independently of 
  2726.  each other. The alternate format allows for auto scaling to 
  2727.  the specified data. There can be more than one data array 
  2728.  in the list in which case the scales are chosen so that 
  2729.  they will all fit. Each data array can optionally be 
  2730.  followed by one or two integers specifying which columns to 
  2731.  use for the x and y values. If axes is not XYAXES only one 
  2732.  integer is allowed. 
  2733.   
  2734. <axes_box>
  2735.  void axes_box(double xsi, double ysi, double xstart, double 
  2736.        ystart, double xend, double yend,double xorig, double 
  2737.        yorig); 
  2738.   
  2739.  Adds an axes box to the current path. The box is drawn with 
  2740.  a size of xsi by ysi and centered on the page. An internal 
  2741.  coordinate system is set up for subsequent plotting of data 
  2742.  within the box. The x axis start and stop values are xstart 
  2743.  and xend respectively and ystart, yend for the y axis. for 
  2744.  the y axis. The last two parameters are optional and if 
  2745.  present specify the position of the axes origin relative to 
  2746.  the page origin. For the last two parameters the special 
  2747.  constants XCENTER and YCENTER can be used for the x or y 
  2748.  position coordinate respectively and will cause the axes 
  2749.  box to be centered on the page along that axis. Using both 
  2750.  XCENTER and YCENTER is equivalent to the default behaviour 
  2751.  with the last two parameters absent. More flexibility is 
  2752.  provided by the pair of functions abox() and ascale() which 
  2753.  provide the functionality of axes_box() in several steps. 
  2754.  axes_box() is implicitly stroked.
  2755.   
  2756. <box>
  2757.  void box(double x1, double y1, double x2, double y2); 
  2758.   
  2759.  Adds a box to the current path. The two end points of the 
  2760.  box are (x1,y1) and (x2,y2); 
  2761.   
  2762. <clear>
  2763.  void clear();
  2764.   
  2765.  Clears the screen when the program is executed. Also  
  2766.  the list of drawable elements is deleted.
  2767.  This function should not be needed for ordinary plots. 
  2768.   
  2769. <clip>
  2770.  void clip()
  2771.   
  2772.  Converts the currently defined path into a clipping path. 
  2773.  All subsequent drawing operations are then clipped against 
  2774.  this path and only portions of the drawing on the inside of 
  2775.  the clip path are displayed. What is inside and what is 
  2776.  outside depends on whether even-odd or non-zero wind has 
  2777.  been selected as the fill rule using a set(); If the 
  2778.  current path is not closed then the current path is first 
  2779.  closed. If there is no current path an error is generated. 
  2780.  Clip() is implicitly stroked and takes effect immediately.
  2781.   
  2782. <closepath>
  2783.  void closepath(); 
  2784.   
  2785.  Closes the current path. A straight line segment is added 
  2786.  from the current point to the start of the current path as 
  2787.  set by the moveto() of rmoveto() command at the beginning 
  2788.  of the path definition. Generates an error if there is no 
  2789.  current point. 
  2790.  
  2791. <cmatch>
  2792.  void cmatch(int on);
  2793.  
  2794.  If the passed parameter is TRUE then it does the necessary 
  2795.  translations and scaling so that the coordinate system for 
  2796.  the page matches that used within the axes_box. An error is 
  2797.  generated if there is no current axes_box. The font scale 
  2798.  is compensated automatically for the change in coordinate 
  2799.  system so that characters will still be the same size as 
  2800.  before. If the parameter is FALSE then the previous 
  2801.  unmatched coordinates will be restored. If there is no 
  2802.  parameter TRUE is assumed. 
  2803.  
  2804. <curveto>
  2805.  void curveto(double x1, double y1, double x2, double y2, 
  2806.           double x3, double y3); 
  2807.  or
  2808.  void curveto(double *array,int first,int last);
  2809.  or
  2810.  void curveto(double *array);
  2811.   
  2812.  Adds Bezier curve sections to the current path starting 
  2813.  at the current point. The curve starts tangent to 
  2814.  (xcur,ycur) - (x1,x2) and ends tangential to (x2,y2) - 
  2815.  (x3,y3) at (x3,y3); An error is generated if there is no 
  2816.  current point. The number of coordinate points must be 
  2817.  a multiple of three else an error is generated.
  2818.  Several formats are allowed. The first is a list 
  2819.  of coordinate pairs. The second format is a pointer to a 2D 
  2820.  array of coordinate pairs followed by an optional pair of 
  2821.  integers specifying the first and last pairs to be plotted. 
  2822.   
  2823. <drawdata>
  2824.  void drawdata(double *data, int xcol, int ycol,...);
  2825.  
  2826.  Draws the data contained in the array data in the current
  2827.  axes_box. The numbers xcol and ycol are the columns of the
  2828.  array data that are to be used for the x-axis and y-axis
  2829.  data respectively. Each row of the array data represents
  2830.  one coordinate point to be plotted. The values will be
  2831.  plotted using the internal coordinate system established by
  2832.  the the call to axes_box. If there is no current axes box
  2833.  an error will be generated. The xcol and ycol params are
  2834.  optional. If no values are given then xcol = 0 and ycol = 1
  2835.  are assumed. For the popular case of one column of x values
  2836.  and a set of y values the whole set may be plotted using
  2837.  plotdata(data,xcol,ALL_Y);. drawdata() is implicitly stroked.
  2838.  More than one data set with corresponding xcol and ycol may
  2839.  be specified.
  2840.  
  2841. <errorbars>
  2842.  void errorbars(int axes,double *data, int xcol, int ycol, 
  2843.         int errcol); 
  2844.  
  2845.  Draws error bars for the data points in the array "data". 
  2846.  The first parameter is either XVALS or YVALS indicating 
  2847.  along which axes the error bars are to be drawn. The 
  2848.  numbers xcol and ycol are the columns of the array data 
  2849.  that are to be used for the x-axis and y-axis data 
  2850.  respectively. Each row of the array data represents one 
  2851.  coordinate point to be plotted. The values will be plotted 
  2852.  using the internal coordinate system established by the the 
  2853.  call to axes_box. The last parameter "errcol" is the column 
  2854.  of the array "data" which holds the size of the error for 
  2855.  the corresponding data point in the same row. If there is 
  2856.  no current axes box an error will be generated. 
  2857.  errorbars() is implicitly stroked.
  2858.  
  2859. <epsfile>
  2860.  void epsfile(char *filename);
  2861.  
  2862.  Writes the current graphics image to a file with the
  2863.  given name. The output format is encapsulated postscript.
  2864.  Such a file can be printed on a postscript printer or
  2865.  included as a graphic in many other programs. Warning! This
  2866.  command does not check if it is over writting an existing
  2867.  file.
  2868.  
  2869. <fill>
  2870.  void fill();
  2871.  
  2872.  Closes the current path if not already closed and fills the
  2873.  interior region with the current colour as specified by the
  2874.  last set() call. What is inside and what is outside the
  2875.  path depends on the currently chosen fill rule. The fill
  2876.  rule is either even-odd or non-zero wind (the default) and
  2877.  is specified using a set() call. An error is generated if
  2878.  there is no current path.
  2879.  
  2880. <fitline>
  2881.  void fitline(double *data, int xcol, 
  2882.   int ycol,double *yint,double *slope);
  2883.  
  2884.  Fits the best straight line to the data in the array "data" 
  2885.  using the column xcol of the array as the x values and the 
  2886.  column ycol as the corresponding y values. The best line is 
  2887.  drawn constrained to the current axes box. If there is no
  2888.  current axes box an error is generated. The last two 
  2889.  parameters are the returned values giving the y intercept 
  2890.  and slope of the fitted line. Note that they are pointers 
  2891.  to doubles which must be declared at the top of the 
  2892.  program. Given a declaration of the form: 
  2893.   
  2894.      double slope,yint;
  2895.  
  2896.  Call fitline using:
  2897.  
  2898.      fitline(data,0,1,&yint,&slope);
  2899.  
  2900.  Assuming that the first and second column of data are the x 
  2901.  and y values respectively. Data points can be excluded from 
  2902.  the fit by using the set(XRANGE,xmin,xmax); or 
  2903.  set(YRANGE,ymin,ymax); commands. Only data points within 
  2904.  the limits will be used for the fit. fitline() is 
  2905.  implicitly stroked.
  2906.   
  2907. <get>
  2908.  int or double get(int option, char *str); 
  2909.  
  2910.  Returns the value of the specified option in the current 
  2911.  graphics state. The numerical value for single valued 
  2912.  elements is returned by the function otherwise the return
  2913.  value is 0. A text representation of the value is optionally 
  2914.  returned in str. If used, be sure to allocate a character 
  2915.  array with sufficient space for str before calling this 
  2916.  function as in char str[80]; at the top of the program. The 
  2917.  valid option values are defined in splot.h. See also set() 
  2918.  for a description of the various options. The returned 
  2919.  string can be printed using the command puts(str); in the 
  2920.  program where "str" is the name of the array in the call to 
  2921.  get(). Returned numerical values can be printed using 
  2922.  print(value); The second array parameter is optional and is 
  2923.  only really needed for getting options that are more than 
  2924.  just a single value such as line patterns.
  2925.  
  2926. <grestore>
  2927.  void grestore(); 
  2928.   
  2929.  Pops a graphics state off the state stack thereby restoring 
  2930.  the graphics state that was in effect at the time the 
  2931.  matching gsave() was executed. In particular, the path, the 
  2932.  clip path, the line styles, line colours etc. are restored 
  2933.  to their previous values.
  2934.   
  2935. <gsave>
  2936.  void gsave(); 
  2937.  
  2938.  Pushes the current graphics state onto the state stack. The 
  2939.  current path, clip path, line style, colour etc. are saved 
  2940.  so that they can be restored later using a grestore() 
  2941.  command. 
  2942.   
  2943. <label>
  2944.  void label(int axis, char *label); 
  2945.  
  2946.  Add labels to the axes box previously defined. The first
  2947.  parameter is which axis to label either BOTTOM, TOP, LEFT
  2948.  or RIGHT. The following parameter is the label to be
  2949.  printed. The label will be printed centered between the
  2950.  appropriate edges of the current axes box. An error is
  2951.  generated if there is no current axes box. All labels
  2952.  should be after plotdata() if used otherwise spacing from
  2953.  the axes may not be correct. The spacing can also be
  2954.  changed using set(LABELMARG,...);. label() is implicitly
  2955.  stroked.
  2956.  
  2957. <legend>
  2958.  void legend(double x, double y, double leng,
  2959.          label1,...);
  2960.  
  2961.  Creates a legend for the current axes. There should be a
  2962.  matching text label at the end of the parameter list for
  2963.  each curve plotted in the axes box. The first two parameters
  2964.  are the x and y position of the top item in the legend. The
  2965.  leng parameter is the length of the line to draw to the left
  2966.  of the text label. This line will be drawn with the same
  2967.  colour and style as was used for the data. If the data was
  2968.  plotted using the SYM_LINES style the symbol used for the
  2969.  data is also drawn at each end of this line. If, however the
  2970.  data was plotted using the SYMBOLS style then only the
  2971.  symbol is drawn and the length parameter is ignored. The
  2972.  spacing between the line and the text labels is controlled
  2973.  using the set(LABELMARG,val); statement. The size of the
  2974.  text labels and the text label colour are determined by
  2975.  the current graphics state settings and are modified with
  2976.  the appropriate set(); command.
  2977.  
  2978.  
  2979. <lineto>
  2980.  void lineto(double x,double y,...);
  2981.  or
  2982.  void lineto(double *array,int first,int last);
  2983.  or
  2984.  void lineto(double *array);
  2985.  
  2986.  Adds a line segment to the current path from the current
  2987.  point to (x,y). More than one coordinate point can be
  2988.  specified in the command in which case a series of line
  2989.  segments connecting the points will be added to the current
  2990.  path. If there is no current point then an error will be
  2991.  generated. Several formats are allowed. The first is a list
  2992.  of coordinate pairs. The second format is a pointer to a 2D
  2993.  array of coordinate pairs followed by an optional pair of
  2994.  integers specifying the first and last pairs to be plotted.
  2995.  
  2996. <moveto>
  2997.  void moveto(double x, double y);
  2998.  
  2999.  Sets the current point to (x,y). Also sets the path close 
  3000.  point to (x,y) for subsequent use with closepath(). Many 
  3001.  path building commands such as curveto() and lineto() require 
  3002.  that a current point exist before calling them. 
  3003.   
  3004. <newpath>
  3005.  void newpath(); 
  3006.   
  3007.  Resets the current path to NULL and also causes the current
  3008.  point to be undefined. Furthermore, it turns off the 
  3009.  implicit stroking of elements that are normally implicitly 
  3010.  stroked such as text();. Thus using newpath(); these 
  3011.  elements can be added to a path which must then be 
  3012.  explicitly stroked. stroke() turns on implicit stroking 
  3013.  again.
  3014.   
  3015. <plotdata>
  3016.  void plotdata(double *data, int xcol, int ycol,...);
  3017.  
  3018.  Plots the data found in array data in a box. This command
  3019.  chooses the scale sizes tick marks etc. to display the data.
  3020.  The parameters xcol and ycol specify which columns of the
  3021.  array data to use for the x and y values respectively. The
  3022.  xcol and ycol params are optional. If no values are given then
  3023.  xcol = 0 and ycol = 1 are assumed. For the popular case of one
  3024.  column of x values and a set of y values the whole set may be
  3025.  plotted using plotdata(data,xcol,ALL_Y);. If the default
  3026.  choices of plotdata are not acceptable a plot can be generated
  3027.  using the step by step method using axes_box(), tickmarks(),
  3028.  ticklabels() and drawdata(). The data must first be read in to
  3029.  array data using readdata(). plotdata() is implicitly stroked.
  3030.  More than one data, xcol, ycol triplet may be entered in which
  3031.  case the auto scaling ensures that the box is scaled to the
  3032.  max of all the data sets.
  3033.  
  3034. <rarrowto>
  3035.  void rarrowto(double x, double y,...);
  3036.  or
  3037.  void rarrowto(double *array,int first,int last);
  3038.  or
  3039.  void rarrowto(double *array);
  3040.  
  3041.  Adds a line segment to the current path from the current
  3042.  point to the current point plus x, y. The line is
  3043.  terminated by drawing an arrow head oriented in the
  3044.  direction of the line. This command is identical to arrowto
  3045.  except that the displacement is specified relative to the
  3046.  current point. More than one coordinate point can be
  3047.  specified in the command in which case a series of line
  3048.  segments terminated by arrows connecting the points will be
  3049.  added to the current path. If there is no current point
  3050.  then an error will be generated. The size of the arrow
  3051.  head may be changed with the set(FONTWIDTH,...); command.
  3052.  The second format is a pointer to a 2D array of coordinate
  3053.  pairs followed by an optional pair of integers specifying
  3054.  the first and last pairs to be plotted.
  3055.  
  3056. <rcurveto>
  3057.  void rcurveto(double x1, double y1, double x2, double y2,
  3058.           double x3, double y3);
  3059.  or
  3060.  void rcurveto(double *array,int first,int last);
  3061.  or
  3062.  void rcurveto(double *array);
  3063.  
  3064.  This is identical to curveto() except that the list of
  3065.  coordinates are all relative distances from previous point.
  3066.  Adds Bezier curve sections to the current path starting
  3067.  at the current point. The curve starts tangent to
  3068.  (xcur,ycur) - (x1,x2) and ends tangential to (x2,y2) -
  3069.  (x3,y3) at (x3,y3); An error is generated if there is no
  3070.  current point. The number of coordinate points must be
  3071.  a multiple of three else an error is generated.
  3072.  Several formats are allowed. The first is a list
  3073.  of coordinate pairs. The second format is a pointer to a 2D
  3074.  array of coordinate pairs followed by an optional pair of
  3075.  integers specifying the first and last pairs to be plotted.
  3076.  
  3077. <reset>
  3078.  void reset(); 
  3079.  
  3080.  Restores all set able parameters to their default values. 
  3081.  Clears the current path and clip path. 
  3082.   
  3083. <rlineto>
  3084.  void rlineto(double x,double y,...);
  3085.  or
  3086.  void rlineto(double *array,int first,int last);
  3087.  or
  3088.  void rlineto(double *array);
  3089.  
  3090.  Adds a line segment to the current path from the current
  3091.  point to the current point plus x, y. This command is
  3092.  identical to lineto except that the displacement is
  3093.  specified relative to the current point. More than one
  3094.  coordinate point can be specified in the command in which
  3095.  case a series of line segments connecting the points will
  3096.  be added to the current path. If there is no current point
  3097.  then an error will be generated. Several formats
  3098.  are allowed. The first is a list of coordinate pairs. The
  3099.  second format is a pointer to a 2D array of coordinate
  3100.  pairs followed by an optional pair of integers specifying
  3101.  the first and last pairs to be plotted.
  3102.  
  3103. <rmoveto>
  3104.  void rmoveto(double x, double y);
  3105.   
  3106.  Sets the current point to the current point plus x,y. This 
  3107.  command is the same as moveto except that a relative move 
  3108.  is specified. It also sets the path close point for 
  3109.  subsequent use with closepath(). Many path building 
  3110.  commands such as curveto and lineto require that a current 
  3111.  point exist before calling them. 
  3112.   
  3113. <rotate>
  3114.  void rotate(double ang); 
  3115.   
  3116.  Rotates the figure about the
  3117.  current origin by the the angle 
  3118.  specified. The angle units are
  3119.  degrees and the +ve direction
  3120.  is counterclockwise.  
  3121.  Changes in rotation are cumulative.
  3122.  
  3123. <rsplineto>
  3124.  void rsplineto(double x1,y1,x2,y2,...);
  3125.  or
  3126.  void rsplineto(double *array,int first,int last);
  3127.  or
  3128.  void rsplineto(double *array);
  3129.  
  3130.  This is identical to splineto() except that the list of
  3131.  coordinates are all relative distances from previous point.
  3132.  This function accepts a list of two or more coordinate
  3133.  pairs and using the current point as the first point draws
  3134.  a cubic spline which goes through all of the given
  3135.  coordinates. It uses Bezier curves internally but
  3136.  calculates the necessary control points in order to make
  3137.  the derivative continous everywhere. An error is generated
  3138.  if there is no current point. Specifying less than two
  3139.  additional points also generates an error. Several formats
  3140.  are allowed. The first is a list of coordinate pairs. The
  3141.  second format is a pointer to a 2D array of coordinate
  3142.  pairs followed by an optional pair of integers specifying
  3143.  the first and last pairs to be plotted.
  3144.  
  3145. <scale>
  3146.  void scale(double xs, double ys);
  3147.  
  3148.  Changes the scale of the figure
  3149.  by the factors specified for
  3150.  the x and y axes respectively.
  3151.  Changes in scale are cumulative.
  3152.   
  3153. <set>
  3154.  void set(int option, ...);
  3155.   
  3156.  All set able parameters can be set using the set command. 
  3157.  The first parameter specifies which option to set. The 
  3158.  defined constants corresponding to valid options are 
  3159.  defined in the header file splot.h. What follows is a very 
  3160.  brief description of all the values set able using set(). 
  3161.  
  3162.  set(AXESCLIP,val);
  3163.  If val is ON then the data values are clipped to the limits 
  3164.  of the axes box. This is temporarily added to the user set 
  3165.  clip limits if any. If val is OFF (the default) then the 
  3166.  user specified clip limits from the last clip() call are 
  3167.  used. 
  3168.  Alternatively the range of data values plotted can be set
  3169.  using set(XRANGE,...); set(YRANGE,...); .
  3170.  
  3171.  set(AXESTYPE,val); 
  3172.  AXESTYPE may be one of the following. LINEAR (the default), 
  3173.  LOGX, LOGY, LOGLOG, INVX, INVY, INVINV, INVXLOGY or 
  3174.  LOGXINVY. The position of data points and tickmarks are 
  3175.  automatically adjusted to account for the axes type. 
  3176.  
  3177.  set(CURSYMBOL,sym);
  3178.  Sets the symbol to use when plotting data with symbols. sym
  3179.  must be one of OCIRCLE,OSQUARE,OTRIANGLE,ODIAMOND
  3180.  OSTAR,OARROW,PLUS,CROSS,MULT,CIRCLE,SQUARE,TRIANGLE,
  3181.  DIAMOND,STAR,or ARROW. The default symbol is CIRCLE. The
  3182.  size of a symbol can be changed using set(FONTWIDTH,
  3183.  val_in_cm); since symbols are just a special font.
  3184.  The size of a symbol can be changed using set(FONTWIDTH,
  3185.  val_in_cm); since symbols are just a special font. The
  3186.  size relative to the current FONTWIDTH can be set using
  3187.  set(SYMMULT,mult);. To use symbol() to draw data points
  3188.  in an axes box call cmatch() first to change the scale to
  3189.  match that of the axes box.
  3190.  
  3191.  set(FILLRULE,type);
  3192.  Determines the rule to be used when filling a path. Type
  3193.  must be one of NONZWIND (default) or EVENODD. 
  3194.  
  3195.  set(FLATNESS,num);
  3196.  Sets the maximum allowable error in pixels when converting 
  3197.  a curve to a set of straight line segments. Smaller values 
  3198.  of num give smother curves but take longer to process. The 
  3199.  default value of num is 1.
  3200.   
  3201.  set(FONT,fonttype);
  3202.  Sets the font type to use for subsequent text written using 
  3203.  the text(); routine. fontname type be either SIMPLEX 
  3204.  (default) or COMPLEX. 
  3205.   
  3206.  set(FONTASPECT,asp);
  3207.  Sets the ratio of the glyph height to width used for text 
  3208.  written using text();. The default value is 2.0 
  3209.   
  3210.  set(FONTDIR,angle);
  3211.  Sets the rotation angle with respect to the x axis to use 
  3212.  when writing text using text(); The default is 0. 
  3213.   
  3214.  set(FONTMULT,factor);
  3215.  Multiplies the current font size by the given factor. 
  3216.   
  3217.  set(FONTWIDTH,wid);
  3218.  Sets the average width of the characters written using 
  3219.  text(). The default value is 0.7 cm. FONTWIDTH applies also 
  3220.  to symbols. 
  3221.  
  3222.  set(LABELMARG,val);
  3223.  Sets the additional margin between the axes box and the
  3224.  labels. The default is 0.0 cm. 
  3225.   
  3226.  set(LINECAP,type);
  3227.  Determines how thick lines are to be terminated. The 
  3228.  allowed types are BUTTCAP (default), ROUNDCAP and PROJCAP. 
  3229.   
  3230.  set(LINECOLOUR,col); 
  3231.  Where col is one of INVIS, BLACK, BLUE, GREEN, CYAN, RED, 
  3232.  MAGENTA, BROWN or WHITE. This set the colour to use when 
  3233.  the current path is stroked or filled. The default colour 
  3234.  is BLACK with the background WHITE. 
  3235.  
  3236.  set(LINEJOIN,type);
  3237.  Determines how thick lines are joined together. The allowed 
  3238.  join types are MITERJOIN (default), BEVELJOIN and 
  3239.  ROUNDJOIN. 
  3240.  
  3241.  set(LINESTYLE,pattern,...);
  3242.  Sets the line style to use for the path when it is stroked. 
  3243.  The constant LINESTYLE is followed by a list of floating 
  3244.  point values that define the pattern. The values are 
  3245.  interpreted as the length along the path that the line is 
  3246.  visible followed by the length that it is invisible as an 
  3247.  alternating sequence wrapping back to the beginning when 
  3248.  the pattern reaches the end. For example a pattern of 
  3249.  1.0,1.0 implies on for 1 cm followed by off for 1 cm. A 
  3250.  pattern of 1.0,0.5 is on for 1 cm followed by off for 0.5 
  3251.  cm. The predefined patterns are: SOLID 0 (default) DASHED 
  3252.  1.0,0.5 DOTTED 0.2,0.2 and DOTDASH 1.0,0.5,0.2,0.5. There
  3253.  must always be an even number of comma separated values
  3254.  in a pattern definition.
  3255.   
  3256.  set(LINEWIDTH,width);
  3257.  Sets the line width to width cm (default 0.05 cm). This 
  3258.  line width is used when the current path is stroked. 
  3259.   
  3260.  set(MITERLIMIT,maxratio);
  3261.  Sets the maximum length of spikes formed by miter joining 
  3262.  two lines at an acute angle. If the ratio of the length of 
  3263.  the spike to the width exceeds the value of maxratio then a 
  3264.  BEVELJOIN is done instead. The default value is 10.0. 
  3265.  
  3266.  set(PAGEROT,flag);
  3267.  Selects landscape orientation if flag is ON. 
  3268.  Default is portrait.
  3269.  
  3270.  set(PATTOFF,offset);
  3271.  Sets the offset into the current LINESTYLE pattern. Can be
  3272.  used to adjust the starting point of a pattern for aesthetic
  3273.  reasons.
  3274.   
  3275.  set(PLOTTYPE,type);
  3276.  Sets the current plot type. type must be one of LINES 
  3277.  (default), SYMBOLS or SYM_LINES. LINES connects data points 
  3278.  with line segments while SYMBOLS causes the current symbol 
  3279.  to be drawn at each data point. SYM_LINES does both. 
  3280.  The size of a symbol can be changed using set(FONTWIDTH, 
  3281.  val_in_cm); since symbols are just a special font. The size 
  3282.  relative to the current FONTWIDTH can be set using 
  3283.  set(SYMMULT,mult);. 
  3284.   
  3285.  set(SCALEALL,val);
  3286.  If val is ON then the XSHIFT, YSHIFT, XMULT, YMULT values
  3287.  are applied to all coordinates (i.e. in lineto, moveto etc.).
  3288.  The default is OFF in which case only data plotted using
  3289.  plotdata(); or drawdata(); is affected by these values.
  3290.  
  3291.  
  3292.  set(SCRIPTSCALE,val);
  3293.  Sets the relative height of a super/sub script as compared
  3294.  to ordinary text. The default value is 0.5.
  3295.  
  3296.  set(SCRIPTSHIFT,val);
  3297.  Sets the distance that a super/sub script is shifted
  3298.  above/below ordinary text. The value is specified as a
  3299.  fraction of the ordinary text height. The default value is
  3300.  0.7.
  3301.  
  3302.  set(SYMMULT,val)
  3303.  Sets the symbol size multiplier used when drawing symbols.
  3304.  The default value is 1.0. The actual symbol size is
  3305.  determined the current FONTWIDTH multiplied by the curent
  3306.  SYMMULT value.
  3307.  
  3308.  set(TICKLENGTH,len);
  3309.  Sets the length of axis tick marks to be used. The default
  3310.  value is 0.3 cm.
  3311.  
  3312.  set(TICKLMARG,len);
  3313.  Sets the margin between the axes box and the tick labels.
  3314.  The default is 0.0 cm.
  3315.  
  3316.  set(XMULT,xmul);
  3317.  Causes each x value to be multiplied by xmul before being
  3318.  plotted. 
  3319.   
  3320.  set(XRANGE,xmin,ymin);
  3321.  data plotted using drawdata is constrained to have x 
  3322.  values between xmin and xmax. There is also a corresponding 
  3323.  YRANGE set option. The default is no constraints. The 
  3324.  values should be specified in user coordinates i.e. those 
  3325.  established by the current axes_box() or ascale(). 
  3326.  
  3327.  set(XSHIFT,xshft);
  3328.  Causes the value xshft to be added to all x values before 
  3329.  plotting. 
  3330.   
  3331.  set(YMULT,ymul);
  3332.  Causes each y value to be multiplied by ymul before being 
  3333.  plotted. 
  3334.  
  3335.  set(YSHIFT,yshft);
  3336.  Causes the value yshft to be added to all y values before 
  3337.  plotting. 
  3338.   
  3339.  
  3340. <showpage>
  3341.  void showpage();
  3342.   
  3343.  Transfers the marked page created in memory by the stroke 
  3344.  and fill commands to the physical page. This is 
  3345.  automatically done at the end of the file and thus this
  3346.  command is only needed if it is desirable to draw parts
  3347.  of the figure before the end of execution.
  3348.  
  3349. <splineto>
  3350.  void splineto(double x1,y1,x2,y2,...);
  3351.  or
  3352.  void splineto(double *array,int first,int last);
  3353.  or
  3354.  void splineto(double *array);
  3355.  
  3356.  This function accepts a list of two or more coordinate
  3357.  pairs and using the current point as the first point draws
  3358.  a cubic spline which goes through all of the given
  3359.  coordinates. It uses Bezier curves internally but
  3360.  calculates the necessary control points in order to make
  3361.  the derivative continous everywhere. An error is generated
  3362.  if there is no current point. Specifying less than two
  3363.  additional points also generates an error. Several formats
  3364.  are allowed. The first is a list of coordinate pairs. The
  3365.  second format is a pointer to a 2D array of coordinate
  3366.  pairs followed by an optional pair of integers specifying
  3367.  the first and last pairs to be plotted.
  3368.  
  3369. <stroke>
  3370.  void stroke();
  3371.  
  3372.  Marks the page in memory with the current path. The path
  3373.  coordinates are transformed using the current coordinate
  3374.  transformation matrix and the path is fleshed out using the
  3375.  current line width, style and colour in effect at the time
  3376.  of the stroke command.
  3377.  
  3378. <symbol>
  3379.  void symbol(double x, double y, int symbol_const); 
  3380.  or
  3381.  void symbol(int symbol_const); 
  3382.  
  3383.  Plots the symbol chosen by symbol_const at the point x,y. 
  3384.  symbol_const must be one of OCIRCLE, OSQUARE, OTRIANGLE, 
  3385.  ODIAMOND OSTAR, OARROW, PLUS, CROSS, MULT, CIRCLE, SQUARE, 
  3386.  TRIANGLE, DIAMOND, STAR,or ARROW. If the point x,y is 
  3387.  omitted the symbol is drawn at the current point as set 
  3388.  by a previous moveto();. symbol() is not implicitly 
  3389.  stroked so follow with a stroke();. The size of a symbol 
  3390.  can be changed using set(FONTWIDTH, val_in_cm); since 
  3391.  symbols are just a special font. The size relative to the 
  3392.  current FONTWIDTH can be set using set(SYMMULT,mult);. 
  3393.  
  3394. <text>
  3395.  void text(double x, double y, char * str,int just); 
  3396.   
  3397.  Adds the text string str to the current path starting at 
  3398.  location (x,y). The current font, size and orientation as 
  3399.  set using the set() command are used. Super/sub scripts can 
  3400.  be entered as ^2^ and _2_ respectively. Letters surrounded 
  3401.  by '!' or '#' are printed in Greek or italics respectively. 
  3402.  For example !m! generates the Greek lower case mu. The 
  3403.  special characters "^_!#$\" can be printed by preceding them 
  3404.  with \ as in \!. The combination \b back spaces by one 
  3405.  character. Symbols may be included in the text string by 
  3406.  enclosing them with $ as in $3$.
  3407.  If the starting x,y coordinates are omitted then 
  3408.  the current string is positioned one line below the 
  3409.  previous string added to the path using text(). The last 
  3410.  parameter is the justification and must be one of LEFT, 
  3411.  RIGHT or CENTER. This last parameter can be omitted in 
  3412.  which case the default value of LEFT will be used. text() 
  3413.  is implicitly stroked.
  3414.   
  3415. <ticklabel>
  3416.  void ticklabel(int axis, double v, char *label,...); 
  3417.   
  3418.  Add tick labels to the axes box previously defined. The 
  3419.  first parameter is which axis to label either BOTTOM, TOP, 
  3420.  LEFT or RIGHT. The following parameters are paired values 
  3421.  giving the tick position in data coordinates as established 
  3422.  by a prior call to axes_box() or ascale() and the text 
  3423.  string to be placed at that location. An error is generated 
  3424.  if there is no current axes_box. There are several default 
  3425.  possibilities. If 'ticklabel();' is called without any 
  3426.  parameters then if tick marks have been generated 
  3427.  previously using 'tickmarks();' then they will be 
  3428.  selectively labelled along the left and bottom axes. If 
  3429.  only an axis parameter is given then the corresponding axis 
  3430.  tick marks if any will be labelled. If the axis parameter 
  3431.  is followed by a list of numbers only they will be 
  3432.  assumed to be both the tick position and the desired label. 
  3433.  If the numbers are paired with strings in the parameter 
  3434.  list then the number will be used as the tick label 
  3435.  position and the string will be used as the literal label. 
  3436.  The spacing between the tick labels and the axes box can be 
  3437.  changed using set(TICKLMARG,...); ticklabel() is implicitly 
  3438.  stroked.
  3439.   
  3440. <tickmarks>
  3441.  void tickmarks(int axis, double v,...); 
  3442.   
  3443.  Add tick marks to the axes box previously defined. The 
  3444.  first parameter is which axis either BOTTOM , TOP, LEFT, 
  3445.  RIGHT ,XAXES or YAXES. The following numbers are the 
  3446.  positions were tickmarks are to to be placed. The length of 
  3447.  the ticks is set using a set(TICKLENGTH,val) command. The 
  3448.  tickmarks will be drawn using the current linestyle and 
  3449.  colour. The location of the ticks is specified in data 
  3450.  coordinates as established by the prior call to axes_box(). 
  3451.  An error is generated if there is no current axes_box. All 
  3452.  the above parameters are optional. The default behaviour is 
  3453.  as follows. If all parameters are omitted tick marks will 
  3454.  be automatically generated for all axes. If only an axis 
  3455.  specifier is given then tick marks will be generated for 
  3456.  the corresponding axis or axes. In these cases 
  3457.  'tickmarks();' will try to find reasonable positions for a 
  3458.  set of tick marks. If this default behaviour is 
  3459.  unacceptable then the actual tick positions can be 
  3460.  specified as a list of values following the axis specifier. 
  3461.  If there is only one numeric value it is interpreted as a 
  3462.  tick spacing. tickmarks() is implicitly stroked. 
  3463.   
  3464. <translate>
  3465.  void translate(double tx, double ty);
  3466.   
  3467.  Translates the origin of the 
  3468.  figure by the x and y distances
  3469.  specified. Translations are 
  3470.  cumulative.
  3471.  
  3472. <whereis>
  3473.  void whereis(double *x,double *y); 
  3474.  
  3475.  Returns the coordinates of the current point as set by the 
  3476.  last moveto(), lineto() etc.
  3477.  
  3478.  
  3479.  
  3480.  
  3481.  
  3482.  
  3483.  
  3484.