845 lines
35 KiB
C
845 lines
35 KiB
C
/* NG-SPICE -- An electrical circuit simulator
|
|
* $Id$
|
|
*
|
|
* Copyright (c) 1990 University of California
|
|
* Copyright (c) 2000 Arno W. Peters
|
|
*
|
|
* Permission to use, copy, modify, and distribute this software and
|
|
* its documentation without fee, and without a written agreement is
|
|
* hereby granted, provided that the above copyright notice, this
|
|
* paragraph and the following three paragraphs appear in all copies.
|
|
*
|
|
* This software program and documentation are copyrighted by their
|
|
* authors. The software program and documentation are supplied "as
|
|
* is", without any accompanying services from the authors. The
|
|
* authors do not warrant that the operation of the program will be
|
|
* uninterrupted or error-free. The end-user understands that the
|
|
* program was developed for research purposes and is advised not to
|
|
* rely exclusively on the program for any reason.
|
|
*
|
|
* IN NO EVENT SHALL THE AUTHORS BE LIABLE TO ANY PARTY FOR DIRECT,
|
|
* INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
|
|
* LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
|
|
* DOCUMENTATION, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE. THE AUTHORS SPECIFICALLY DISCLAIMS ANY
|
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
|
|
* SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE AUTHORS
|
|
* HAVE NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
|
|
* ENHANCEMENTS, OR MODIFICATIONS. */
|
|
|
|
/* Table of available commands. Note that they're sorted so that the
|
|
* commands that appear in the spiceinit file are at the top. */
|
|
|
|
#include <ngspice.h>
|
|
#include <ftedefs.h>
|
|
#include <cpdefs.h>
|
|
|
|
#include "ftehelp.h"
|
|
#include "commands.h"
|
|
|
|
#include "com_ahelp.h"
|
|
#include "com_asciiplot.h"
|
|
#include "com_compose.h"
|
|
#include "com_display.h"
|
|
#include "com_hardcopy.h"
|
|
#include "com_help.h"
|
|
#include "com_let.h"
|
|
#include "com_plot.h"
|
|
#include "com_setscale.h"
|
|
#include "com_xgraph.h"
|
|
#include "com_gnuplot.h"
|
|
#include "com_state.h"
|
|
#include "com_chdir.h"
|
|
#include "com_echo.h"
|
|
#include "com_rehash.h"
|
|
#include "com_shell.h"
|
|
#include "com_shift.h"
|
|
#include "com_unset.h"
|
|
#include "fourier.h"
|
|
|
|
#ifdef EXPERIMENTAL_CODE
|
|
#include "com_option.h"
|
|
#include "spiceif.h" /* for com_loadsnap() and com_savesnap() */
|
|
#endif
|
|
|
|
#include "com_dl.h"
|
|
|
|
#ifdef XSPICE
|
|
/* gtri - begin - wbk - add include files */
|
|
#include "evtproto.h"
|
|
/* gtri - end - wbk - add include files */
|
|
#endif
|
|
|
|
/* FIXME: Integrate spcp_coms and nutcp_coms into one variable. */
|
|
|
|
|
|
/* Bool fields: stringargs, spiceonly, major */
|
|
|
|
struct comm spcp_coms[] = {
|
|
{ "let", com_let, FALSE, FALSE, TRUE,
|
|
{ 040000, 040000, 040000, 040000 }, E_DEFHMASK, 0, LOTS,
|
|
arg_let,
|
|
"varname = expr : Assign vector variables." } ,
|
|
{ "reshape", com_reshape, FALSE, FALSE, TRUE,
|
|
{ 040000, 040000, 040000, 040000 }, E_DEFHMASK, 1, LOTS,
|
|
arg_let,
|
|
"vector ... [ shape ] : change the dimensions of a vector." } ,
|
|
{ "define", com_define, FALSE, FALSE, TRUE,
|
|
{ 010000, 040000, 040000, 040000 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[[func (args)] stuff] : Define a user-definable function." } ,
|
|
{ "set", com_set, FALSE, FALSE, TRUE,
|
|
{ 020000, 020000, 020000, 020000 }, E_DEFHMASK, 0, LOTS,
|
|
arg_set,
|
|
"[option] [option = value] ... : Set a variable." } ,
|
|
|
|
#ifdef EXPERIMENTAL_CODE
|
|
/* PN support for altering options in interactive mode */
|
|
{ "option", com_option, FALSE, TRUE, TRUE,
|
|
{ 020000, 020000, 020000, 020000 }, E_DEFHMASK, 0, LOTS,
|
|
arg_set,
|
|
"[option] [option = value] ... : Set a simulator option." } ,
|
|
{ "savesnap", com_savesnap, FALSE, FALSE, TRUE,
|
|
{ 1, 040000, 040000, 040000 }, E_DEFHMASK, 1, 1,
|
|
(void (*)()) NULL,
|
|
"file : Save a snapshot." } ,
|
|
{ "loadsnap", com_loadsnap, FALSE, FALSE, TRUE,
|
|
{ 1, 040000, 040000, 040000 }, E_DEFHMASK, 2, 2,
|
|
(void (*)()) NULL,
|
|
"file : Load a snapshot." } ,
|
|
#endif
|
|
|
|
{ "alias", com_alias, FALSE, FALSE, FALSE,
|
|
{ 02, 04, 04, 04 }, E_ADVANCED, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[[word] alias] : Define an alias." } ,
|
|
{ "deftype", com_dftype, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 3, LOTS,
|
|
(void (*)()) NULL,
|
|
"spec name pat ... : Redefine vector and plot types.\n" } ,
|
|
#ifdef TCL_MODULE
|
|
{ "bltplot", com_bltplot, FALSE, FALSE, TRUE,
|
|
{ 041000, 041000, 041000, 041000 }, E_BEGINNING | E_HASPLOTS, 1, LOTS,
|
|
arg_plot,
|
|
"expr ... [vs expr] [xl xlo xhi] [yl ylo yhi] : Plot things." },
|
|
{ "plot", com_bltplot, FALSE, FALSE, TRUE,
|
|
{ 041000, 041000, 041000, 041000 }, E_BEGINNING | E_HASPLOTS, 1, LOTS,
|
|
arg_plot,
|
|
"expr ... [vs expr] [xl xlo xhi] [yl ylo yhi] : Plot things." },
|
|
#else
|
|
{ "plot", com_plot, FALSE, FALSE, TRUE,
|
|
{ 041000, 041000, 041000, 041000 }, E_BEGINNING | E_HASPLOTS, 1, LOTS,
|
|
arg_plot,
|
|
"expr ... [vs expr] [xl xlo xhi] [yl ylo yhi] : Plot things." },
|
|
#endif
|
|
{ "display", com_display, FALSE, FALSE, TRUE,
|
|
{ 040000, 040000, 040000, 040000 }, E_BEGINNING, 0, LOTS,
|
|
arg_display,
|
|
": Display vector status." } ,
|
|
{ "destroy", com_destroy, FALSE, FALSE, FALSE,
|
|
{ 0400, 0400, 0400, 0400 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[plotname] ... : Throw away all the data in the plot." } ,
|
|
{ "setplot", com_splot, FALSE, FALSE, TRUE,
|
|
{ 0400, 0, 0, 0 }, E_DEFHMASK, 0, 1,
|
|
(void (*)()) NULL,
|
|
"[plotname] : Change the current working plot." } ,
|
|
{ "setcirc", com_scirc, FALSE, TRUE, FALSE,
|
|
{ 04, 0, 0, 0 }, E_DEFHMASK, 0, 1,
|
|
(void (*)()) NULL,
|
|
"[circuit name] : Change the current circuit." } ,
|
|
{ "setscale", com_setscale, FALSE, FALSE, FALSE,
|
|
{ 040000, 0, 0, 0 }, E_DEFHMASK, 0, 1,
|
|
(void (*)()) NULL,
|
|
"[vecname] : Change default scale of current working plot." } ,
|
|
{ "transpose", com_transpose, FALSE, FALSE, FALSE,
|
|
{ 040000, 040000, 040000, 040000 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"varname ... : Perform matrix transposition on multi-D vectors." } ,
|
|
{ "xgraph", com_xgraph, FALSE, FALSE, TRUE,
|
|
{ 1, 041000, 041000, 041000 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"file plotargs : Send plot to Xgraph-11." } ,
|
|
{ "gnuplot", com_gnuplot, FALSE, FALSE, TRUE,
|
|
{ 1, 041000, 041000, 041000 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"file plotargs : Send plot to gnuplot." } ,
|
|
{ "hardcopy", com_hardcopy, FALSE, FALSE, TRUE,
|
|
{ 1, 041000, 041000, 041000 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"file plotargs : Produce hardcopy plots." } ,
|
|
{ "asciiplot", com_asciiplot, FALSE, FALSE, TRUE,
|
|
{ 041000, 041000, 041000, 041000 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"plotargs : Produce ascii plots." } ,
|
|
{ "write", com_write, FALSE, FALSE, TRUE,
|
|
{ 1, 040000, 040000, 040000 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"file expr ... : Write data to a file." } ,
|
|
{ "compose", com_compose, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 2, LOTS,
|
|
(void (*)()) NULL,
|
|
"var parm=val ... : Compose a vector." } ,
|
|
{ "unlet", com_unlet, FALSE, FALSE, FALSE,
|
|
{ 040000, 040000, 040000, 040000 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"varname ... : Undefine vectors." } ,
|
|
{ "print", com_print, FALSE, FALSE, TRUE,
|
|
{ 040000, 040000, 040000, 040000 }, E_BEGINNING, 1, LOTS,
|
|
arg_print,
|
|
"[col] expr ... : Print vector values." } ,
|
|
#ifdef XSPICE
|
|
/* gtri - begin - wbk - add event print command */
|
|
{ "eprint", EVTprint, FALSE, FALSE, TRUE,
|
|
{ 040000, 040000, 040000, 040000 }, E_BEGINNING, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"node node ... : Print event values." } ,
|
|
/* gtri - end - wbk - add event print command */
|
|
{ "codemodel", com_codemodel, FALSE, FALSE, TRUE,
|
|
{ 040000, 040000, 040000, 040000 }, E_BEGINNING, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"library library ... : Loads the opus librarys." } ,
|
|
#endif
|
|
#ifdef DEVLIB
|
|
{ "use", com_use, FALSE, FALSE, TRUE,
|
|
{ 040000, 040000, 040000, 040000 }, E_BEGINNING, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"library library ... : Loads the device librarys." } ,
|
|
#endif
|
|
{ "load", com_load, FALSE, FALSE, TRUE,
|
|
{ 1, 1, 1, 1 }, E_BEGINNING | E_NOPLOTS, 1, LOTS,
|
|
arg_load,
|
|
"file ... : Load in data." } ,
|
|
{ "cross", com_cross, FALSE, FALSE, TRUE,
|
|
{ 040000, 0, 040000, 040000 }, E_DEFHMASK, 2, LOTS,
|
|
(void (*)()) NULL,
|
|
"vecname number [ vector ... ] : Make a vector in a strange way." } ,
|
|
{ "undefine", com_undefine, FALSE, FALSE, FALSE,
|
|
{ 010000, 010000, 010000, 010000 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[func ...] : Undefine a user-definable function." } ,
|
|
{ "op", com_op, FALSE, TRUE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[.op line args] : Determine the operating point of the circuit." } ,
|
|
{ "tf", com_tf, FALSE, TRUE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[.tran line args] : Do a transient analysis." } ,
|
|
{ "tran", com_tran, FALSE, TRUE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[.tran line args] : Do a transient analysis." } ,
|
|
{ "ac", com_ac, FALSE, TRUE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[.ac line args] : Do an ac analysis." } ,
|
|
{ "dc", com_dc, FALSE, TRUE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[.dc line args] : Do a dc analysis." } ,
|
|
{ "pz", com_pz, FALSE, TRUE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[.pz line args] : Do a pole / zero analysis." } ,
|
|
{ "sens", com_sens, FALSE, TRUE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[.sens line args] : Do a sensitivity analysis." } ,
|
|
{ "disto", com_disto, FALSE, TRUE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[.disto line args] : Do an distortion analysis." } ,
|
|
{ "noise", com_noise, FALSE, TRUE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[.noise line args] : Do a noise analysis." } ,
|
|
{ "listing", com_listing, FALSE, TRUE, TRUE,
|
|
{ 0100, 0100, 0100, 0100 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[logical] [physical] [deck] : Print the current circuit." } ,
|
|
{ "edit", com_edit, FALSE, TRUE, TRUE,
|
|
{ 1, 0, 0, 0 }, E_DEFHMASK, 0, 1,
|
|
(void (*)()) NULL,
|
|
"[filename] : Edit a spice deck and then load it in." } ,
|
|
{ "dump", com_dump, FALSE, TRUE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Print a dump of the current circuit." } ,
|
|
{ "fft", com_fft, FALSE, FALSE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"vector ... : Create a frequency domain plot with FFT." } ,
|
|
{ "fourier", com_fourier, FALSE, FALSE, TRUE,
|
|
{ 0, 040000, 040000, 040000 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"fund_freq vector ... : Do a fourier analysis of some data." } ,
|
|
{ "spec", com_spec, FALSE, FALSE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 4, LOTS,
|
|
(void (*)()) NULL,
|
|
"start_freq stop_freq step_freq vector ... : Create a frequency domain plot." } ,
|
|
{ "show", com_show, FALSE, TRUE, FALSE,
|
|
{ 040, 040, 040, 040 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"devices ... : parameters ... : Print out device summary." } ,
|
|
{ "showmod", com_showmod, FALSE, TRUE, FALSE,
|
|
{ 040, 040, 040, 040 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"models ... : parameters ... : Print out model summary." } ,
|
|
{ "alter", com_alter, FALSE, TRUE, FALSE,
|
|
{ 040, 040, 040, 040 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"devspecs : parmname value : Alter device parameters." } ,
|
|
{ "altermod", com_altermod, FALSE, TRUE, FALSE,
|
|
{ 040, 040, 040, 040 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"devspecs : parmname value : Alter model parameters." } ,
|
|
{ "resume", com_resume, FALSE, TRUE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Continue after a stop." } ,
|
|
{ "state", com_state, FALSE, TRUE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"(unimplemented) : Print the state of the circuit." },
|
|
{ "stop", com_stop, FALSE, TRUE, FALSE,
|
|
{ 04200, 04200, 04200, 04200 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[stop args] : Set a breakpoint." } ,
|
|
{ "trace", com_trce, FALSE, TRUE, FALSE,
|
|
{ 0200, 0200, 0200, 0200 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[all] [node ...] : Trace a node." } ,
|
|
{ "save", com_save, FALSE, TRUE, FALSE,
|
|
{ 0200, 0200, 0200, 0200 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[all] [node ...] : Save a spice output." } ,
|
|
{ "iplot", com_iplot, FALSE, TRUE, TRUE,
|
|
{ 0200, 0200, 0200, 0200 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[all] [node ...] : Incrementally plot a node." } ,
|
|
{ "status", com_sttus, FALSE, TRUE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Print the current breakpoints and traces." } ,
|
|
{ "delete", com_delete, FALSE, TRUE, FALSE,
|
|
{ 020, 020, 020, 020 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[all] [break number ...] : Delete breakpoints and traces." } ,
|
|
{ "step", com_step, FALSE, TRUE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 1,
|
|
(void (*)()) NULL,
|
|
"[number] : Iterate number times, or one." } ,
|
|
{ "reset", com_rset, FALSE, TRUE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Terminate a simulation after a breakpoint (formerly 'end')." } ,
|
|
{ "run", com_run, FALSE, TRUE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 1,
|
|
(void (*)()) NULL,
|
|
"[rawfile] : Run the simulation as specified in the input file." } ,
|
|
{ "aspice", com_aspice, FALSE, FALSE, FALSE,
|
|
{ 1, 1, 1, 1 }, E_DEFHMASK, 1, 2,
|
|
(void (*)()) NULL,
|
|
"file [outfile] : Run a spice job asynchronously." } ,
|
|
{ "jobs", com_jobs, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Report on asynchronous spice jobs." } ,
|
|
{ "rspice", com_rspice, FALSE, FALSE, FALSE,
|
|
{ 1, 1, 1, 1 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[input file] : Run a spice job remotely." } ,
|
|
{ "bug", com_bug, FALSE, FALSE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Report a %s bug." } ,
|
|
{ "where", com_where, FALSE, TRUE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Print last non-converging node or device" } ,
|
|
{ "newhelp", com_ahelp, FALSE, FALSE, TRUE,
|
|
{ 010, 010, 010, 010 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[command name] ... : help." },
|
|
{ "tutorial", com_ghelp, FALSE, FALSE, TRUE,
|
|
{ 023010, 023010, 023010, 023010 }, E_BEGINNING, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[subject] ... : Hierarchical documentation browser." } ,
|
|
{ "help", com_ghelp, FALSE, FALSE, TRUE,
|
|
{ 023010, 023010, 023010, 023010 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[subject] ... : Hierarchical documentation browser." } ,
|
|
{ "oldhelp", com_help, FALSE, FALSE, TRUE,
|
|
{ 010, 010, 010, 010 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[command name] ... : Print help." } ,
|
|
{ "quit", com_quit, FALSE, FALSE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_BEGINNING, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Quit %s." } ,
|
|
{ "source", com_source, FALSE, FALSE, TRUE,
|
|
{ 1, 1, 1, 1 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"file : Source a %s file." } ,
|
|
{ "shift", com_shift, FALSE, FALSE, FALSE,
|
|
{ 020000, 0, 0, 0 }, E_DEFHMASK, 0, 2,
|
|
(void (*)()) NULL,
|
|
"[var] [number] : Shift argv or the named list var to the left." } ,
|
|
{ "unset", com_unset, FALSE, FALSE, FALSE,
|
|
{ 020000, 020000, 020000, 020000 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"varname ... : Unset a variable." } ,
|
|
{ "unalias", com_unalias, FALSE, FALSE, FALSE,
|
|
{ 02, 02, 02, 02 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"word ... : Undefine an alias." } ,
|
|
{ "history", com_history, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 2,
|
|
(void (*)()) NULL,
|
|
"[-r] [number] : Print command history." } ,
|
|
{ "echo", com_echo, FALSE, FALSE, FALSE,
|
|
{ 1, 1, 1, 1 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[stuff ...] : Print stuff." } ,
|
|
{ "shell", com_shell, FALSE, FALSE, TRUE,
|
|
{ 1, 1, 1, 1 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[args] : Fork a shell, or execute the command." } ,
|
|
{ "rusage", com_rusage, FALSE, FALSE, FALSE,
|
|
{ 02000, 02000, 02000, 02000 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[resource ...] : Print current resource usage." } ,
|
|
{ "cd", com_chdir, FALSE, FALSE, FALSE,
|
|
{ 1, 0, 0, 0 }, E_DEFHMASK, 0, 1,
|
|
(void (*)()) NULL,
|
|
"[directory] : Change working directory." } ,
|
|
{ "version", com_version, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[number] : Print the version number." } ,
|
|
{ "diff", com_diff, FALSE, FALSE, FALSE,
|
|
{ 0400, 0400, 040000, 040000 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"plotname plotname [vec ...] : 'diff' two plots." } ,
|
|
{ "rehash", com_rehash, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Rebuild the unix command database." } ,
|
|
{ "while", NULL, FALSE, FALSE, FALSE,
|
|
{ 040000, 040000, 040000, 040000 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"condition : Execute while the condition is TRUE." } ,
|
|
{ "repeat", NULL, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0}, E_DEFHMASK, 0, 1,
|
|
(void (*)()) NULL,
|
|
"[number] : Repeat number times, or forever." } ,
|
|
{ "dowhile", NULL, FALSE, FALSE, FALSE,
|
|
{ 040000, 040000, 040000, 040000 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"condition : Execute while the condition is TRUE." } ,
|
|
{ "foreach", NULL, FALSE, FALSE, FALSE,
|
|
{ 0, 040000, 040000, 040000 }, E_DEFHMASK, 2, LOTS,
|
|
(void (*)()) NULL,
|
|
"variable value ... : Do once for each value." } ,
|
|
{ "if", NULL, FALSE, FALSE, FALSE,
|
|
{ 040000, 040000, 040000, 040000 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"condition : Execute if the condition is TRUE." } ,
|
|
{ "else", NULL, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Goes with if." } ,
|
|
{ "end", NULL, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": End a block." } ,
|
|
{ "break", NULL, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Break out of a block." } ,
|
|
{ "continue", NULL, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Continue a loop." } ,
|
|
{ "label", NULL, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 1, 1,
|
|
(void (*)()) NULL,
|
|
"word : Create someplace to go to." } ,
|
|
{ "goto", NULL, FALSE, FALSE, FALSE,
|
|
{ 0100000, 0, 0, 0 }, E_DEFHMASK, 1, 1,
|
|
(void (*)()) NULL,
|
|
"word : Go to a label." } ,
|
|
{ "cdump", com_cdump, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Dump the current control structures." } ,
|
|
{ "settype", com_stype, FALSE, FALSE, FALSE,
|
|
{ 0200000, 040000, 040000, 040000 }, E_DEFHMASK, 2, LOTS,
|
|
(void (*)()) NULL,
|
|
"type vec ... : Change the type of a vector." } ,
|
|
{ "strcmp", com_strcmp, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 3, 3,
|
|
(void (*)()) NULL,
|
|
"varname s1 s2 : Set $varname to strcmp(s1, s2)." } ,
|
|
{ "linearize", com_linearize, FALSE, TRUE, FALSE,
|
|
{ 040000, 040000, 040000, 040000 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
" [ vec ... ] : Convert plot into one with linear scale." } ,
|
|
{ 0, NULL, FALSE, FALSE, FALSE, { 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
NULL }
|
|
};
|
|
|
|
|
|
/* Bool fields: stringargs, spiceonly, major */
|
|
struct comm nutcp_coms[] = {
|
|
{ "let", com_let, FALSE, FALSE, TRUE,
|
|
{ 040000, 040000, 040000, 040000 }, E_DEFHMASK, 0, LOTS,
|
|
arg_let,
|
|
"varname = expr : Assign vector variables." } ,
|
|
{ "reshape", com_reshape, FALSE, FALSE, TRUE,
|
|
{ 040000, 040000, 040000, 040000 }, E_DEFHMASK, 1, LOTS,
|
|
arg_let,
|
|
"vector ... [ shape ] : change the dimensions of a vector." } ,
|
|
{ "define", com_define, FALSE, FALSE, TRUE,
|
|
{ 010000, 040000, 040000, 040000 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[[func (args)] stuff] : Define a user-definable function." } ,
|
|
{ "set", com_set, FALSE, FALSE, TRUE,
|
|
{ 020000, 020000, 020000, 020000 }, E_DEFHMASK, 0, LOTS,
|
|
arg_set,
|
|
"[option] [option = value] ... : Set a variable." } ,
|
|
|
|
#ifdef EXPERIMENTAL_CODE
|
|
/* PN support for altering options in interactive mode */
|
|
{ "option", com_option, FALSE, TRUE, TRUE,
|
|
{ 020000, 020000, 020000, 020000 }, E_DEFHMASK, 0, LOTS,
|
|
arg_set,
|
|
"[option] [option = value] ... : Set a simulator option." } ,
|
|
#endif
|
|
|
|
{ "alias", com_alias, FALSE, FALSE, FALSE,
|
|
{ 02, 04, 04, 04 }, E_ADVANCED, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[[word] alias] : Define an alias." } ,
|
|
{ "deftype", com_dftype, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 3, LOTS,
|
|
(void (*)()) NULL,
|
|
"spec name pat ... : Redefine vector and plot types.\n" } ,
|
|
{ "plot", com_plot, FALSE, FALSE, TRUE,
|
|
{ 041000, 041000, 041000, 041000 }, E_BEGINNING | E_HASPLOTS, 1, LOTS,
|
|
arg_plot,
|
|
"expr ... [vs expr] [xl xlo xhi] [yl ylo yhi] : Plot things." },
|
|
{ "display", com_display, FALSE, FALSE, TRUE,
|
|
{ 040000, 040000, 040000, 040000 }, E_BEGINNING, 0, LOTS,
|
|
arg_display,
|
|
": Display vector status." } ,
|
|
{ "destroy", com_destroy, FALSE, FALSE, FALSE,
|
|
{ 0400, 0400, 0400, 0400 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[plotname] ... : Throw away all the data in the plot." } ,
|
|
{ "setplot", com_splot, FALSE, FALSE, TRUE,
|
|
{ 0400, 0, 0, 0 }, E_DEFHMASK, 0, 1,
|
|
(void (*)()) NULL,
|
|
"[plotname] : Change the current working plot." } ,
|
|
{ "setcirc", NULL, FALSE, TRUE, FALSE,
|
|
{ 04, 0, 0, 0 }, E_DEFHMASK, 0, 1,
|
|
(void (*)()) NULL,
|
|
"[circuit name] : Change the current circuit." } ,
|
|
{ "setscale", com_setscale, FALSE, FALSE, FALSE,
|
|
{ 040000, 0, 0, 0 }, E_DEFHMASK, 0, 1,
|
|
(void (*)()) NULL,
|
|
"[vecname] : Change default scale of current working plot." } ,
|
|
{ "transpose", com_transpose, FALSE, FALSE, FALSE,
|
|
{ 040000, 040000, 040000, 040000 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"varname ... : Perform matrix transposition on multi-D vectors." } ,
|
|
{ "xgraph", com_xgraph, FALSE, FALSE, TRUE,
|
|
{ 1, 041000, 041000, 041000 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"file plotargs : Send plot to Xgraph-11." } ,
|
|
{ "gnuplot", com_gnuplot, FALSE, FALSE, TRUE,
|
|
{ 1, 041000, 041000, 041000 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"file plotargs : Send plot to gnuplot." } ,
|
|
{ "hardcopy", com_hardcopy, FALSE, FALSE, TRUE,
|
|
{ 1, 041000, 041000, 041000 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"file plotargs : Produce hardcopy plots." } ,
|
|
{ "asciiplot", com_asciiplot, FALSE, FALSE, TRUE,
|
|
{ 041000, 041000, 041000, 041000 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"plotargs : Produce ascii plots." } ,
|
|
{ "write", com_write, FALSE, FALSE, TRUE,
|
|
{ 1, 040000, 040000, 040000 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"file expr ... : Write data to a file." } ,
|
|
{ "compose", com_compose, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 2, LOTS,
|
|
(void (*)()) NULL,
|
|
"var parm=val ... : Compose a vector." } ,
|
|
{ "unlet", com_unlet, FALSE, FALSE, FALSE,
|
|
{ 040000, 040000, 040000, 040000 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"varname ... : Undefine vectors." } ,
|
|
{ "print", com_print, FALSE, FALSE, TRUE,
|
|
{ 040000, 040000, 040000, 040000 }, E_BEGINNING, 1, LOTS,
|
|
arg_print,
|
|
"[col] expr ... : Print vector values." } ,
|
|
{ "load", com_load, FALSE, FALSE, TRUE,
|
|
{ 1, 1, 1, 1 }, E_BEGINNING | E_NOPLOTS, 1, LOTS,
|
|
arg_load,
|
|
"file ... : Load in data." } ,
|
|
{ "cross", com_cross, FALSE, FALSE, TRUE,
|
|
{ 040000, 0, 040000, 040000 }, E_DEFHMASK, 2, LOTS,
|
|
(void (*)()) NULL,
|
|
"vecname number [ vector ... ] : Make a vector in a strange way." } ,
|
|
{ "undefine", com_undefine, FALSE, FALSE, FALSE,
|
|
{ 010000, 010000, 010000, 010000 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[func ...] : Undefine a user-definable function." } ,
|
|
{ "op", NULL, FALSE, TRUE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[.op line args] : Determine the operating point of the circuit." } ,
|
|
{ "tran", NULL, FALSE, TRUE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[.tran line args] : Do a transient analysis." } ,
|
|
{ "ac", NULL, FALSE, TRUE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[.ac line args] : Do an ac analysis." } ,
|
|
{ "dc", NULL, FALSE, TRUE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[.dc line args] : Do a dc analysis." } ,
|
|
{ "pz", NULL, FALSE, TRUE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[.pz line args] : Do a pole / zero analysis." } ,
|
|
{ "sens", NULL, FALSE, TRUE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[.ac line args] : Do a sensitivity analysis." } ,
|
|
{ "disto", NULL, FALSE, TRUE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[.disto line args] : Do an distortion analysis." } ,
|
|
{ "noise", NULL, FALSE, TRUE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[.noise line args] : Do a noise analysis." } ,
|
|
{ "listing", NULL, FALSE, TRUE, TRUE,
|
|
{ 0100, 0100, 0100, 0100 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[logical] [physical] [deck] : Print the current circuit." } ,
|
|
{ "edit", NULL, FALSE, TRUE, TRUE,
|
|
{ 1, 0, 0, 0 }, E_DEFHMASK, 0, 1,
|
|
(void (*)()) NULL,
|
|
"[filename] : Edit a spice deck and then load it in." } ,
|
|
{ "dump", NULL, FALSE, TRUE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Print a dump of the current circuit." } ,
|
|
{ "fourier", com_fourier, FALSE, FALSE, TRUE,
|
|
{ 0, 040000, 040000, 040000 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"fund_freq vector ... : Do a fourier analysis of some data." } ,
|
|
{ "show", NULL, FALSE, TRUE, FALSE,
|
|
{ 040, 040, 040, 040 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"devspecs ... : parmspecs ... : Print out device parameters." } ,
|
|
{ "alter", NULL, FALSE, TRUE, FALSE,
|
|
{ 040, 040, 040, 040 }, E_DEFHMASK, 3, LOTS,
|
|
(void (*)()) NULL,
|
|
"devspecs : parmname value : Alter device parameters." } ,
|
|
{ "altermod", NULL, FALSE, TRUE, FALSE,
|
|
{ 040, 040, 040, 040 }, E_DEFHMASK, 3, LOTS,
|
|
(void (*)()) NULL,
|
|
"devspecs : parmname value : Alter model parameters." } ,
|
|
{ "resume", NULL, FALSE, TRUE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Continue after a stop." } ,
|
|
{ "state", NULL, FALSE, TRUE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"(unimplemented) : Print the state of the circuit." },
|
|
{ "stop", NULL, FALSE, TRUE, FALSE,
|
|
{ 04200, 04200, 04200, 04200 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[stop args] : Set a breakpoint." } ,
|
|
{ "trace", NULL, FALSE, TRUE, FALSE,
|
|
{ 0200, 0200, 0200, 0200 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[all] [node ...] : Trace a node." } ,
|
|
{ "save", NULL, FALSE, TRUE, FALSE,
|
|
{ 0200, 0200, 0200, 0200 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[all] [node ...] : Save a spice output." } ,
|
|
{ "iplot", NULL, FALSE, TRUE, TRUE,
|
|
{ 0200, 0200, 0200, 0200 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[all] [node ...] : Incrementally plot a node." } ,
|
|
{ "status", NULL, FALSE, TRUE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Print the current breakpoints and traces." } ,
|
|
{ "delete", NULL, FALSE, TRUE, FALSE,
|
|
{ 020, 020, 020, 020 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[all] [break number ...] : Delete breakpoints and traces." } ,
|
|
{ "step", NULL, FALSE, TRUE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 1,
|
|
(void (*)()) NULL,
|
|
"[number] : Iterate number times, or one." } ,
|
|
{ "reset", NULL, FALSE, TRUE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Terminate a simulation after a breakpoint (formerly 'end')." } ,
|
|
{ "run", NULL, FALSE, TRUE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 1,
|
|
(void (*)()) NULL,
|
|
"[rawfile] : Run the simulation as specified in the input file." } ,
|
|
{ "bug", com_bug, FALSE, FALSE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Report a %s bug." } ,
|
|
{ "newhelp", com_ahelp, FALSE, FALSE, TRUE,
|
|
{ 010, 010, 010, 010 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[command name] ... : help." },
|
|
{ "tutorial", com_ghelp, FALSE, FALSE, TRUE,
|
|
{ 023010, 023010, 023010, 023010 }, E_BEGINNING, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[subject] ... : Hierarchical documentation browser." } ,
|
|
{ "help", com_ghelp, FALSE, FALSE, TRUE,
|
|
{ 023010, 023010, 023010, 023010 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[subject] ... : Hierarchical documentation browser." } ,
|
|
{ "oldhelp", com_help, FALSE, FALSE, TRUE,
|
|
{ 010, 010, 010, 010 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[command name] ... : Print help." } ,
|
|
{ "quit", com_quit, FALSE, FALSE, TRUE,
|
|
{ 0, 0, 0, 0 }, E_BEGINNING, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Quit %s." } ,
|
|
{ "source", nutcom_source, FALSE, FALSE, TRUE,
|
|
{ 1, 1, 1, 1 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"file : Source a %s file." } ,
|
|
{ "shift", com_shift, FALSE, FALSE, FALSE,
|
|
{ 020000, 0, 0, 0 }, E_DEFHMASK, 0, 2,
|
|
(void (*)()) NULL,
|
|
"[var] [number] : Shift argv or the named list var to the left." } ,
|
|
{ "unset", com_unset, FALSE, FALSE, FALSE,
|
|
{ 020000, 020000, 020000, 020000 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"varname ... : Unset a variable." } ,
|
|
{ "unalias", com_unalias, FALSE, FALSE, FALSE,
|
|
{ 02, 02, 02, 02 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"word ... : Undefine an alias." } ,
|
|
{ "history", com_history, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 2,
|
|
(void (*)()) NULL,
|
|
"[-r] [number] : Print command history." } ,
|
|
{ "echo", com_echo, FALSE, FALSE, FALSE,
|
|
{ 1, 1, 1, 1 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[stuff ...] : Print stuff." } ,
|
|
{ "shell", com_shell, FALSE, FALSE, TRUE,
|
|
{ 1, 1, 1, 1 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[args] : Fork a shell, or execute the command." } ,
|
|
{ "rusage", com_rusage, FALSE, FALSE, FALSE,
|
|
{ 02000, 02000, 02000, 02000 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[resource ...] : Print current resource usage." } ,
|
|
{ "cd", com_chdir, FALSE, FALSE, FALSE,
|
|
{ 1, 0, 0, 0 }, E_DEFHMASK, 0, 1,
|
|
(void (*)()) NULL,
|
|
"[directory] : Change working directory." } ,
|
|
{ "version", com_version, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"[number] : Print the version number." } ,
|
|
{ "diff", com_diff, FALSE, FALSE, FALSE,
|
|
{ 0400, 0400, 040000, 040000 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
"plotname plotname [vec ...] : 'diff' two plots." } ,
|
|
{ "rehash", com_rehash, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Rebuild the unix command database." } ,
|
|
{ "while", NULL, FALSE, FALSE, FALSE,
|
|
{ 040000, 040000, 040000, 040000 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"condition : Execute while the condition is TRUE." } ,
|
|
{ "repeat", NULL, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0}, E_DEFHMASK, 0, 1,
|
|
(void (*)()) NULL,
|
|
"[number] : Repeat number times, or forever." } ,
|
|
{ "dowhile", NULL, FALSE, FALSE, FALSE,
|
|
{ 040000, 040000, 040000, 040000 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"condition : Execute while the condition is TRUE." } ,
|
|
{ "foreach", NULL, FALSE, FALSE, FALSE,
|
|
{ 0, 040000, 040000, 040000 }, E_DEFHMASK, 2, LOTS,
|
|
(void (*)()) NULL,
|
|
"variable value ... : Do once for each value." } ,
|
|
{ "if", NULL, FALSE, FALSE, FALSE,
|
|
{ 040000, 040000, 040000, 040000 }, E_DEFHMASK, 1, LOTS,
|
|
(void (*)()) NULL,
|
|
"condition : Execute if the condition is TRUE." } ,
|
|
{ "else", NULL, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Goes with if." } ,
|
|
{ "end", NULL, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": End a block." } ,
|
|
{ "break", NULL, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Break out of a block." } ,
|
|
{ "continue", NULL, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Continue a loop." } ,
|
|
{ "label", NULL, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 1, 1,
|
|
(void (*)()) NULL,
|
|
"word : Create someplace to go to." } ,
|
|
{ "goto", NULL, FALSE, FALSE, FALSE,
|
|
{ 0100000, 0, 0, 0 }, E_DEFHMASK, 1, 1,
|
|
(void (*)()) NULL,
|
|
"word : Go to a label." } ,
|
|
{ "cdump", com_cdump, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
|
|
(void (*)()) NULL,
|
|
": Dump the current control structures." } ,
|
|
{ "settype", com_stype, FALSE, FALSE, FALSE,
|
|
{ 0200000, 040000, 040000, 040000 }, E_DEFHMASK, 2, LOTS,
|
|
(void (*)()) NULL,
|
|
"type vec ... : Change the type of a vector." } ,
|
|
{ "strcmp", com_strcmp, FALSE, FALSE, FALSE,
|
|
{ 0, 0, 0, 0 }, E_DEFHMASK, 3, 3,
|
|
(void (*)()) NULL,
|
|
"varname s1 s2 : Set $varname to strcmp(s1, s2)." } ,
|
|
{ "linearize", NULL, FALSE, TRUE, FALSE,
|
|
{ 040000, 040000, 040000, 040000 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
" [ vec ... ] : Convert plot into one with linear scale." } ,
|
|
|
|
{ 0, NULL, FALSE, FALSE, FALSE, { 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
|
|
(void (*)()) NULL,
|
|
NULL }
|
|
|
|
} ;
|