Man Linux: Main Page and Category List

NAME

       nutmeg - spice post-processor

SYNOPSIS

       nutmeg [ - ] [ -n ] [ -t term ] [ datafile ... ]

DESCRIPTION

       Nutmeg  is  a  post  processor for SPICE - it takes the raw output file
       created by spice -r and plots the data on  a  graphics  terminal  or  a
       workstation  display.   Note that the raw output file is different from
       the data that SPICE writes to the standard output.

       Arguments are:

       -      Don’t try to load the default data file ("rawspice") if no other
              files are given.

       -n (or --no-spiceinit)
              Don’t try to source the file ".spiceinit" upon startup. Normally
              nutmeg tries to find the file in the current directory,  and  if
              it is not found then in the user’s home directory.

       -t term (or --term=term)
              The program is being run on a terminal with mfb name term.

       -h (or --help)
              Display  a  verbose  help  on  the  arguments  available  to the
              program.

       -v (or --version)
              Display a  version  number  and  copyright  information  of  the
              program.

       Further  arguments are taken to be data files in binary or ascii format
       (see sconvert(1)) which are loaded into  nutmeg.  If  the  file  is  in
       binary format, it may be only partially completed (useful for examining
       SPICE ouput before the simulation is finished). One  file  may  contain
       any number of data sets from different analyses.

       Nutmeg  data is in the form of vectors: time, voltage, etc. Each vector
       has a type, and vectors can be operated on and combined algebraicly  in
       ways  consistent  with their types. Vectors are normally created when a
       data file is read in (see the load command below), and when the initial
       datafile is loaded. They can also be created with the let command.

       An  expression is an algebraic formula involving vectors and scalars (a
       scalar is a vector of length 1), and the following operations:

              +, -, *, %, /, ^, and ,.

       % is the modulo operator, and the comma operator has two  meanings:  if
       it  is  present  in  the argument list of a user-definable function, it
       serves to seperate  the  arguments.  Otherwise,  the  term  x  ,  y  is
       synonymous with x + j(y).

       Also available are the logical operations & (and), | (or), ! (not), and
       the relational operations <, >, >=, <=, =, and <> (not equal).  If used
       in  an  algebraic  expression they work like they would in C, producing
       values of  0  or  1.   The  relational  operators  have  the  following
       synonyms:  "gt"  is  >,  "lt" is <, "ge" is >=, "le" is <=, "ne" is <>,
       "eq" is =, "and" is &, "or" is |, and "not" is  !.   These  are  useful
       when  <  and  >  might be confused with IO redirection (which is almost
       always).

       The following functions are available:

              mag(vector) - The magnitude of vector.

              ph(vector) - The phase of vector.

              j(vector) - i (sqrt(-1)) times vector.

              real(vector) - The real component of vector.

              imag(vector) - The imaginary part of vector.

              db(vector) - 20 * log10(mag(vector)).

              log(vector) - The logarithm (base 10) of the vector.

              ln(vector) - The natural logarithm (base e) of vector.

              exp(vector) - e to the vector power.

              abs(vector) - The absolute value of vector.

              sqrt(vector) - The square root of vector.

              sin(vector) - The sin of vector.

              cos(vector) - The cosine of vector.

              tan(vector) - The tangent of vector.

              atan(vector) - The inverse tangent of vector.

              norm(vector) - The vector normalized  to  1  (i.e,  the  largest
              magnitude of any component will be 1).

              rnd(vector)  -  A  vector  with  each component a random integer
              between 0 and the absolute value of the vectors’s  corresponding
              component.

              mean(vector)  -  The result is a scalar (a length 1 vector) that
              is the mean of the elements of vector.

              vector(number) - The result is a vector of length  number,  with
              elements  0, 1, ...  number - 1. If number is a vector then just
              the first element is taken, and if it isn’t an integer then  the
              floor of the magnitude is used.

              length(vector) - The length of vector.

              interpolate(plot.vector) - The result of interpolating the named
              vector onto the scale of the current plot.  This  function  uses
              the   variable   polydegree   to   determine   the   degree   of
              interpolation.

       A vector may be  either  the  name  of  a  vector  already  defined,  a
       floating- point number (a scalar), or a list like [elt1 elt2 ... eltn],
       which is a vector of length n.  A number may be written in  any  format
       acceptable  to  SPICE,  such as 14.6MEG or -1.231E-4. Note that you can
       either use scientific notation or one of the abbreviations like MEG  or
       G,  but not both.  As with SPICE, a number may have trailing alphabetic
       characters after it.

       The notation expr [lower upper], where lower  and  upper  are  numbers,
       denotes  the  range of elements from expr between lower and upper.  The
       notation expr [num] denotes the num’th element of expr.   If  upper  is
       lower  than lower, the order of the elements in the vector is reversed.
       In all other cases, [ and  ]  serve  to  surround  literal  vectors  as
       described  above.   (You  may  have to use a lot of parentheses to make
       sure that you get what you want.  For instance, you have to type  print
       (foo)  ([1  2])  to  print  the  two  vectors.   Otherwise  it  will be
       interpreted as a function call or a vector with an index.)   Note  that
       the  expression  foo[10  20][5] will not yield the 15th element of foo,
       but rather the 5th.  In general  only  the  last  index  suffix  on  an
       expression will take effect.

       To  reference  vectors  in a plot that is not the current plot (see the
       setplot command, below), the notation plotname.vecname can be used.

       Either a plotname or a vector name may be the  wildcard  all.   If  the
       plotname  is all, matching vectors from all plots are specified, and if
       the vector name  is  all,  all  vectors  in  the  specified  plots  are
       referenced.  Note that you may not use binary operations on expressions
       involving wildcards - it is not obvious what all + all  should  denote,
       for instance.

       Thus some (contrived) examples of expressions are:

              cos(TIME) + db(v(3))

              sin(cos(log([1 2 3 4 5 6 7 8 9 10])))

              TIME * rnd(v(9)) - 15 * cos(vin#branch) ^ [7.9e5 8]

              not ((ac3.FREQ[32] & tran1.TIME[10]) gt 3)

       Nutmeg commands are as follows:

       plot exprs [ylimit ylo yhi] [xlimit xlo xhi] [xindices xilo xihi]
              [xcompress comp] [xdelta xdel] [ydelta ydel] [xlog] [ylog] [vs xname]
                      [xlabel word] [ylabel word] [title word] [samep]
              Plot  the  given  exprs  on the screen (if you are on a graphics
              terminal). The xlimit and ylimit arguments  determine  the  high
              and  low x- and y-limits of the axes, respectively. The xindices
              arguments determine what range of points are  to  be  plotted  -
              everything  between  the  xilo’th point and the xihi’th point is
              plotted.  The xcompress argument specifies that only one out  of
              every  comp  points  should be plotted. If an xdelta or a ydelta
              parameter is present, it  specifies  the  spacing  between  grid
              lines  on  the  X-  and  Y-axis.   These  parameter names may be
              abbreviated to xl, yl, xind, xcomp, xdel, and ydel respectively.
              The  xname  argument is an expression to use as the scale on the
              x-axis.  If  xlog  or  ylog  are  present,  the  X  or  Y  scale
              respectively   will  be  logarithmic.   The  xlabel  and  ylabel
              arguments cause the specified labels to be used for the X and  Y
              axes,  respectively.  If samep is given, the values of the other
              parameters (other than xname) from the previous plot,  hardcopy,
              or  asciiplot  command  will  be  used  unless re-defined on the
              command line.  Finally, the title argument will be used  in  the
              place of the plot name at the bottom of the graph.

       hardcopy file plotargs
              Just like plot, except creates a file called file containing the
              plot.  The file is an  image  in  plot(5)  format,  and  can  be
              printed by either the plot(1) program or lpr with the -g flag.

       asciiplot plotargs
              Produce a line printer plot of the vectors.  The plot is sent to
              the standard output,  so  you  can  put  it  into  a  file  with
              asciiplot  args  ... > file.  The set options width, height, and
              nobreak determine the width and height of the plot, and  whether
              there  are  page  breaks,  respectively. Note that you will have
              problems if you try to asciiplot something with an X-scale  that
              isn’t  monotonic  (i.e,  something  like  sin(TIME)  ),  because
              asciiplot uses a simple-minded sort of linear interpolation.

       define function(arg1, arg2, ...) expression
              Define the user-definable function with the  name  function  and
              arguments  arg1,  arg2,  ... to be expression, which may involve
              the arguments. When the function is later used, the arguments it
              is  given  are  substituted  for the formal arguments when it is
              parsed.  If  expression  is  not  present,  any  definition  for
              function  is  printed,  and  if there are no arguments to define
              then all currently active definitions are printed. Note that you
              may  have  different  functions  defined  with the same name but
              different arities.  Some useful definitions are:

              define max(x,y) (x > y) * x + (x <= y) * y
              define min(x,y) (x < y) * x + (x >= y) * y

       undefine function ...
              Definitions for the named user-defined functions are deleted.

       let name = expr
              Creates a new vector called name with  the  value  specified  by
              expr,  an  expression as described above. If expr is [] (a zero-
              length vector) then the vector becomes undefined.  If there  are
              no arguments, let is the same as display.

       print [col] [line] expr ...
              Prints  the vector described by the expression expr.  If the col
              argument is present, print the vectors named side  by  side.  If
              line is given, the vectors are printed horizontally.  col is the
              default, unless all the vectors named have a length of  one,  in
              which  case line is the default.  The options width, length, and
              nobreak are effective for this command (see asciiplot).  If  the
              expression  is  all,  all  of the vectors available are printed.
              Thus print col all > file will print everything in the  file  in
              SPICE2  format.   The scale vector (time, frequency) will always
              be in the first column unless the variable noprintscale is true.

       load [filename] ...
              Loads  the  raw  data  in either binary or ascii format from the
              files named. The default filename is rawspice, or  the  argument
              to the -r flag if there was one.

       source filename
              Reads commands from the file filename.  Lines beginning with the
              character * are considered comments and ignored.

       help [all] [command ...]
              Prints help.  If the argument all is given, a short  description
              of  everything  you could possibly type is printed.  If commands
              are  given,  descriptions  of  those   commands   are   printed.
              Otherwise help for only a few major commands is printed.

       display [varname ...]
              Prints  a  summary of currently defined vectors, or of the names
              specified.  The vectors are sorted by name unless  the  variable
              nosort is set.  The information given is the name of the vector,
              the length, the type of the vector, and whether it  is  real  or
              complex  data. Additionally, one vector will be labeled [scale].
              When a command such as plot is given without a vs argument, this
              scale is used for the X-axis. It is always the first vector in a
              rawfile, or the first vector defined  in  a  new  plot.  If  you
              undefine  the  scale  (i.e,  let  TIME = []), a random remaining
              vector will become the scale.

       setplot [plotname]
              Set the current plot to the plot with the given name, or  if  no
              name  is  given,  prompt  the  user with a menu.  (Note that the
              plots are named as they are loaded, with  names  like  tran1  or
              op2.  These  names are shown by the setplot and display commands
              and are used by  diff,  below.)   If  the  "New  plot"  item  is
              selected,  the  current  plot  will  become  one with no vectors
              defined.  Note that here the word "plot" refers to  a  group  of
              vectors  that  are  the result of one SPICE run.  When more than
              one file is loaded in, or more than one plot is present  in  one
              file,  nutmeg keeps them seperate and only shows you the vectors
              in the current plot.

       settype type vector ...
              Change the type of the named vectors to type.  Type names can be
              found in the manual page for sconvert.

       diff plot1 plot2 [vec ...]
              Compare  all  the  vectors  in  the specified plots, or only the
              named vectors if any are given. There are different  vectors  in
              the two plots, or any values in the vectors differ significantly
              the difference is reported. The variables  abstol,  reltol,  and
              vntol  are used to determine what "significantly" means (see the
              SPICE3 User’s Manual).

       quit   Quit nutmeg.

       bug    Send a bug report. (If you have defined BUGADDR, the  mail  will
              go there.)

       write [file] [exprs]
              Writes  out  the  expr’s  to  file.   First  vectors are grouped
              together by plots, and  written  out  as  such.   (I.e,  if  the
              expression  list  contained  three vectors from one plot and two
              from another, then two plots will be  written,  one  with  three
              vectors  and  one  with  two.)  Additionally, if the scale for a
              vector isn’t present, it is automatically written out  as  well.
              The  default  format  is ascii, but this can be changed with the
              set filetype command.  The default filename is rawspice, or  the
              argument  to  the -r flag on the command line, if there was one,
              and the default expression list is all.

       shell [args ...]
              Fork a shell, or execute the  arguments  as  a  command  to  the
              shell.

       alias [word] [text ...]
              Causes word to be aliased to text.  History substitutions may be
              used, as in C-shell aliases.

       unalias [word ...]
              Removes any aliases present for the words.

       history [number]
              Print out the history, or the last number commands typed at  the
              keyboard.   Note:  in   version  3a7  and  earlier, all commands
              (including ones read from files) were saved.

       set [word] [word = value] ...
              Set the value of word to be value, if it is  present.   You  can
              set any word to be any value, numeric or string.  If no value is
              given then the value is the boolean ’true’.   The value of  word
              may  be inserted into a command by writing $word.  If a variable
              is set to a list of values  that  are  enclosed  in  parentheses
              (which  must be seperated from their values by white space), the
              value of the variable is the list.  The variables meaningful  to
              nutmeg (of which there are too many) are:

                       abstol
                       The absolute tolerance used by the diff command.

                       appendwrite
                       Append  to  the file when a write command is issued, if
                       one already exists.

                       colorN
                       These variables determine the  colors  used,  if  X  is
                       being  run  on a color display.  N may be between 0 and
                       15.  Color 0 is the background, color 1 is the grid and
                       text  color,  and colors 2 through 15 are used in order
                       for vectors plotted.  The value of the color  variables
                       should  be  names  of colors, which may be found in the
                       file /usr/lib/rgb.txt.

                       combplot
                       Plot vectors by drawing a vertical line from each point
                       to  the X-axis, as opposed to joining the points.  Note
                       that this option is subsumed in  the  plottype  option,
                       below.

                       cpdebug
                       Print  cshpar  debugging information. (Must be complied
                       with the -DCPDEBUG flag.)

                       debug
                       If set then a lot of debugging information is  printed.
                       (Must be compiled with the -DFTEDEBUG flag.)

                       device
                       The  name  (/dev/tty??) of the graphics device. If this
                       variable isn’t set then the user’s terminal is used. To
                       do  plotting  on another monitor you will probably have
                       to set both the device and term variables.  (If  device
                       is  set  to  the  name  of a file, nutmeg will dump the
                       graphics control codes into this file -- this is useful
                       for saving plots.)

                       echo
                       Print out each command before it is executed.

                       filetype
                       This can be either ascii or binary, and determines what
                       the format of rawfiles will be. The default is ascii.

                       fourgridsize
                       How many points to  use  for  interpolating  into  when
                       doing fourier analysis.

                       gridsize
                       If this variable is set to an integer, this number will
                       be used as the number of equally spaced points  to  use
                       for  the  Y-axis  when plotting.  Otherwise the current
                       scale will be used (which may not have  equally  spaced
                       points).    If   the   current   scale  isn’t  strictly
                       monotonic, then this option will have no effect.

                       hcopydev
                       If this is set, when the hardcopy command  is  run  the
                       resulting  file is automatically printed on the printer
                       named hcopydev with the command lpr -Phcopydev -g file.

                       hcopydevtype
                       This  variable specifies the type of the printer output
                       to use in the hardcopy command.  If hcopydevtype is not
                       set,   plot   (5)  format  is  assumed.   The  standard
                       distribution  currently  recognizes  postscript  as  an
                       alternative  output  format.   When used in conjunction
                       with hcopydev, hcopydevtype  should  specify  a  format
                       supported by the printer.

                       height
                       The length of the page for asciiplot and print col.

                       history
                       The number of events to save in the history list.

                       nfreqs
                       The  number  of  frequencies  to compute in the fourier
                       command. (Defaults to 10.)

                       nobreak
                       Don’t have asciiplot and print col break between pages.

                       noasciiplotvalue
                       Don’t  print  the first vector plotted to the left when
                       doing an asciiplot.

                       noclobber
                       Don’t  overwrite   existing   files   when   doing   IO
                       redirection.

                       noglob
                       Don’t  expand  the global characters ‘*’, ‘?’, ‘[’, and
                       ‘]’. This is the default.

                       nogrid
                       Don’t plot a grid when graphing curves  (but  do  label
                       the axes).

                       nomoremode
                       If  nomoremode  is  not set, whenever a large amount of
                       data is being printed to the screen (e.g, the print  or
                       asciiplot  commands),  the output will be stopped every
                       screenful and will continue when a carriage  return  is
                       typed.  If  nomoremode is set then data will scroll off
                       the screen without hesitation.

                       nonomatch
                       If noglob is unset and a global  expression  cannot  be
                       matched, use the global characters literally instead of
                       complaining.

                       nosort
                       Don’t have display sort the variable names.

                       noprintscale
                       Don’t print the scale in the  leftmost  column  when  a
                       print col command is given.

                       numdgt
                       The  number  of digits to print when printing tables of
                       data (fourier, print col).  The default precision is  6
                       digits.   On  the  VAX, approximately 16 decimal digits
                       are available using double precision, so numdgt  should
                       not  be  more  than 16.  If the number is negative, one
                       fewer digit is printed to  ensure  constant  widths  in
                       tables.

                       plottype
                       This  should  be  one  of normal, comb, or point:chars.
                       normal, the  default, causes points to  be  plotted  as
                       parts  of  connected lines.  comb causes a comb plot to
                       be done (see the description of the  combplot  variable
                       above).    point   causes  each  point  to  be  plotted
                       seperately - the chars are a list  of  characters  that
                       will  be  used  for  each  vector plotted.  If they are
                       omitted then a default set is used.

                       polydegree
                       The degree of the  polynomial  that  the  plot  command
                       should fit to the data. If polydegree is N, then nutmeg
                       will fit a degree N polynomial to every set of N points
                       and   draw  10  intermediate  points  in  between  each
                       endpoint. If the points aren’t monotonic, then it  will
                       try  rotating the curve and reducing the degree until a
                       fit is achieved.

                       polysteps
                       The number of points to interpolate between every  pair
                       of  points  available  when  doing  curve  fitting. The
                       default  is   10.   (This   should   really   be   done
                       automatically.)

                       program
                       The name of the current program (argv[0]).

                       prompt
                       The  prompt,  with  the  character  ‘!’ replaced by the
                       current event number.

                       rawfile
                       The default name for rawfiles created.

                       reltol
                       The relative tolerance used by the diff command.

                       rhost
                       The machine to use for remote SPICE-3 runs, instead  of
                       the  default  one.  (See  the description of the rspice
                       command, below.)

                       rprogram
                       The name of the remote program to  use  in  the  rspice
                       command.

                       slowplot
                       Stop  between  each graph plotted and wait for the user
                       to type return before continuing.

                       sourcepath
                       A list of the  directories  to  search  when  a  source
                       command is given.  The default is the current directory
                       and the standard spice  library  (/usr/local/lib/spice,
                       or whatever LIBPATH is #defined to in the  source.

                       spicepath
                       The  program to use for the aspice command. The default
                       is /cad/bin/spice.

                       term
                       The mfb name of the current terminal.

                       units
                       If this is degrees, then all the  trig  functions  will
                       use degrees instead of radians.

                       unixcom
                       If a command isn’t defined, try to execute it as a UNIX
                       command.  Setting this option has the effect of  giving
                       a rehash command, below.  This is useful for people who
                       want to use nutmeg as a login shell.

                       verbose
                       Be verbose. This is midway between  echo  and  debug  /
                       cpdebug.

                       vntol
                       The   absolute  voltage  tolerance  used  by  the  diff
                       command.

                       width
                       The width of the page for asciiplot and print col.

                       xbrushheight
                       The height of the brush to use if X is being run.

                       xbrushwidth
                       The width of the brush to use if X is being run.

                       xfont
                       The name of the X font to use when  plotting  data  and
                       entering  labels.  The plot may not look entirely great
                       if this is a variable-width font.

       unset [word] ...
              Unset the variables word.

       shift [varname] [number]
              If varname is the name of a list variable, it is shifted to  the
              left  by number elements. (I.e, the number leftmost elements are
              removed.)  The default varname is argv, and the  default  number
              is 1.

       rusage [resource ...]
              Print  resource  usage  statistics.  If any resources are given,
              just  print  the  usage  of  that  resource.   Currently   valid
              resources are:

                       elapsed
                       The amount of time elapsed since the last rusage elaped
                       call.

                       faults
                       Number of page faults and context switches (BSD  only).

                       space
                       Data space used.

                       time
                       CPU time used so far.

                       everything
                       All of the above.

       cd [directory]  Change  the  current working directory to directory, or
                       to the user’s home directory if none is given.

       aspice [output-file]
                       Start a SPICE-3 run, and when it is finished  load  the
                       data.  The  raw  data  is  kept in a temporary file. If
                       output-file is specified then the diagnostic output  is
                       directed into that file, otherwise it is thrown away.

       jobs            Report  on  the  asynchronous  SPICE-3  jobs  currently
                       running.  Nutmeg checks to see if the jobs are finished
                       every  time  you execute a command.  If it is done then
                       the data is loaded and becomes available.

       rspice [input file]
                       Runs a SPICE-3 remotely taking  the  input  file  as  a
                       SPICE-3  input  deck,  or  the  current  circuit  if no
                       argument  is  given.  Nutmeg  waits  for  the  job   to
                       complete,  and passes output from the remote job to the
                       user’s standard output. When the job  is  finished  the
                       data is loaded in as with aspice. If the variable rhost
                       is set, nutmeg will connect to this host instead of the
                       default  remote  SPICE-3 server machine. Note that this
                       command will only work if your system administrator  is
                       running  a  SPICE-3  daemon  on the remote host. If the
                       variable rprogram is set, then rspice will use this  as
                       the pathname to the program to run.

       echo [stuff...] Echos the arguments.

       fourier fundamental_frequency [value ...]
                       Does  a  fourier  analysis of each of the given values,
                       using  the  first  10  multiples  of  the   fundamental
                       frequency (or the first nfreqs, if that variable is set
                       - see below). The output is  like  that  of  the  .four
                       card.  The  values  may  be  any valid expression.  The
                       values are interpolated onto a  fixed-space  grid  with
                       the   number   of  points  given  by  the  fourgridsize
                       variable, or 200 if it is not set.   The  interpolation
                       will  be  of degree polydegree if that variable is set,
                       or 1.  If polydegree is 0, then no  interpolation  will
                       be  done.   This is likely to give erroneous results if
                       the time scale is not monotonic, though.

       version [version id]
                       Print out the version of nutmeg that  is  running.   If
                       there  are  arguments,  it checks to make sure that the
                       arguments match the current version of SPICE. (This  is
                       mainly used as a Command: line in rawfiles.)

       rehash          Recalculate  the internal hash tables used when looking
                       up UNIX commands, and make all  UNIX  commands  in  the
                       user’s  PATH available for command completion.  This is
                       useless unless you have set unixcom first (see  above).

       The following control structures are available:

              while condition
                   statement
                   ...
              end

       While  condition,  an  arbitrary algebraic expression, is true, execute
       the statements.

              repeat [number]
                   statement
                   ...
              end

       Execute the statements number times,  or  forever  if  no  argument  is
       given.

              dowhile condition
                   statement
                   ...
              end

       The  same  as  while,  except  that  the  condition is tested after the
       statements are executed.

              foreach var value ...
                   statement
                   ...
              end

       The statements are executed once for each of the values, each time with
       the  variable  var set to the current one.  (var can be accessed by the
       $var notation - see below).

              if condition
                   statement
                   ...
              else
                   statement
                   ...
              end

       If the condition is non-zero then  the  first  set  of  statements  are
       executed,  otherwise  the  second  set.  The else and the second set of
       statements may be omitted.

              label word

       If a statement of  the  form  goto  word  is  encountered,  control  is
       transfered to this point, otherwise this is a no-op.

              goto word

       If  a  statement  of  the form label word is present in the block or an
       enclosing block, control is transfered there.  Note that if  the  label
       is  at  the  top  level,  it  must be before the goto statement (i.e, a
       forward goto may occur only within a block).

              continue

       If  there  is  a  while,  dowhile,  or  foreach  block  enclosing  this
       statement,  control  passes to the test, or in the case of foreach, the
       next value is taken.  Otherwise an error results.

              break

       If  there  is  a  while,  dowhile,  or  foreach  block  enclosing  this
       statement, control passes out of the block. Otherwise an error results.

       Of course, control structures may be nested.  When a block  is  entered
       and  the  input  is  the  terminal,  the prompt becomes a number of >’s
       equalling the number of  blocks  the  user  has  entered.  The  current
       control structures may be examined with the debugging command cdump.

       If  a word is typed as a command, and there is no built-in command with
       that name, the directories in the sourcepath list are searched in order
       for  the  file.  If it is found, it is read in as a command file (as if
       it were sourced).  Before it is read, however, the variables  argc  and
       argv  are  set  to  the  number  of words following the filename on the
       command line, and a list of those words respectively.  After  the  file
       is  finished,  these  variables are unset.  Note that if a command file
       calls another, it must save its argv  and  argc  since  they  will  get
       altered.   Also, command files may not be re-entrant since there are no
       local variables.  (Of course, the procedures may explicitly  manipulate
       a  stack...)  This way one can write scripts analogous to shell scripts
       for nutmeg and .  Note that for the script to work with , it must begin
       with  a blank line (or whatever you like, since it will be thrown away)
       and then a line with .control on it.  This is an unfortunate result  of
       the  source  command being used for both circuit input and command file
       execution.  Note also that this allows the user to merely type the name
       of a circuit file as a command, and it will be automatically run.

       There      are     various     command     scripts     installed     in
       /usr/local/lib/spice/scripts (or whatever the path is on your machine),
       and  the  default  sourcepath  includes  this directory, so you can use
       these command files (almost) like builtin commands.

       Nutmeg will use either X or MFB, depending  on  whether  it  finds  the
       variable  DISPLAY  in  the  environment.   If  you  are  using  X  on a
       workstation, it should already be present, but if you want  to  display
       graphics on a different machine than the one you are running nutmeg on,
       DISPLAY should be of the form machine:0.

       If X is being used, the cursor may be positioned at any  point  on  the
       screen  when the window is up and characters typed at the keyboard will
       be added to the window at that point.  The window may then be sent to a
       printer using the xpr(1) program.

       There are a number of pre-defined constants in nutmeg. They are:
            pi        pi
            e         The base of natural logarithms
            c         The speed of light
            i         The square root of -1
            kelvin         Absolute 0 in Centigrade
            echarge        The charge on an electron
            boltz          Boltzman’s constant
            planck         Planck’s constant (h)

       These  are  all  in MKS units. If you have another variable with a name
       that conflicts with one of these then it takes precedence.

       Nutmeg occasionally checks to see if it is getting close to running out
       of  space, and warns the user if this is the case. (This is more likely
       to be useful with the SPICE front end.)

       C-shell type quoting with "" and ’’, and backquote substitution may  be
       used.  Within  single  quotes,  no  further  substitution (like history
       substitution) is done, and within double quotes,  the  words  are  kept
       together  but further substitution is done. Any text between backquotes
       is replaced by the result of executing the text as  a  command  to  the
       shell.

       Tenex-style  (’set  filec’  in  the 4.3 C-shell) command, filename, and
       keyword completion is possible: If EOF (control-D) is typed  after  the
       first  character  on  the  line,  a  list  of  the commands or possible
       arguments is printed. (If it is alone on the line it will exit nutmeg.)
       If  escape is typed, then nutmeg will try to complete what the user has
       already typed.  To get a list of all commands,  the  user  should  type
       <space> ^D.

       The  values  of  variables  may be used in commands by writing $varname
       where the value of the variable is to appear.  The special variables $$
       and $< refer to the process ID of the program and a line of input which
       is read from the terminal when the variable is evaluated, respectively.
       If  a variable has a name of the form $&word, then word is considered a
       vector (see above), and its value is taken  to  be  the  value  of  the
       variable.   If  $foo is a valid variable, and is of type list, then the
       expression $foo[low-high] represents a range of elements.   Either  the
       upper index or the lower may be left out, and the reverse of a list may
       be obtained with $foo[len-0].  Also, the notation $?foo evaluates to  1
       if the variable foo is defined, 0 otherwise, and $#foo evaluates to the
       number of elements in foo if it is a list, 1  if  it  is  a  number  or
       string, and 0 if it is a boolean variable.

       History  substitutions,  similar  to C-shell history substitutions, are
       also available - see the C-shell manual page for all of the details.

       The characters ~, {, and } have the same effects as they do in  the  C-
       Shell,  i.e.,  home directory and alternative expansion. It is possible
       to use the wildcard characters *, ?, [, and ] also,  but  only  if  you
       unset noglob first. This makes them rather useless for typing algebraic
       expressions, so you should set noglob again after  you  are  done  with
       wildcard  expansion.  Note  that  the  pattern  [^abc]  will  match all
       characters except a, b, and c.

       IO redirection is available - the symbols >, >>, >&, >>&,  and  <  have
       the same effects as in the C-shell.

       You may type multiple commands on one line, seperated by semicolons.

       If  you  want  to use a different mfbcap file than the default (usually
       ~cad/lib/mfbcap), you have  to  set  the  environment  variable  MFBCAP
       before  you  start  nutmeg.   The  -m option and the mfbcap variable no
       longer work.

VMS NOTES

       Nutmeg can be run  under  VAX/VMS.  Some  features  like  command,  etc
       completion,  expansion  of  *,  ?,  and [], backquote substitution, the
       shell command, and so forth do not work. (In  fact  command  completion
       only works on 4.2 or 4.3 BSD.)

       Nutmeg  will  look  for  start-up  commands in the file spice.rc in the
       current directory.

       The standard suffix for rawspice files in VMS is ".raw".

       You will have to respond to  the  -more-  prompt  during  plot  with  a
       carriage return instead of any key as you can do on UNIX.

SEE ALSO

       sconvert(1), spice(1), mfb(3), writedata(3)

AUTHOR

       Wayne Christopher (faustus@cad.berkeley.edu)

BUGS

       The label entry facilities are very primitive - after all, nutmeg isn’t
       a graphics editor (yet).  You must be careful to type very slowly  when
       entering  labels  -- nutmeg checks the X event queue once every second,
       and can get very confused if characters arrive faster than that.

       If you redefine colors after creating a plot window with  X,  and  then
       cause the window to be redrawn, it will not to the right thing.

       When defining aliases like

              alias pdb plot db( !:1 - !:2 )

       you  must  be  careful to quote the argument list substitutions in this
       manner. If you quote the whole argument it might not work properly.

       In a user-defined function, the arguments cannot be part of a name that
       uses the plot.vec syntax.  I.e,

              define poke(duck) cos(tran1.duck)

       won’t do the right thing.

       If you type plot all all, or otherwise use a wildcard reference for one
       plot twice in a command, bad things will happen.

       The asciiplot command  doesn’t  deal  with  log  scales  or  the  delta
       keywords.

       There are probably some features that nutmeg doesn’t have yet.

CAVEATS

       Often the names of terminals recognised by MFB are different from those
       in /etc/termcap. Thus you may have to reset your terminal type with the
       command

              set term = termname

       where termname is the name in the mfbcap file.

       The  hardcopy  command  is useless on VMS and other systems without the
       plot command, unless the user has a program  that  understands  plot(5)
       format.