Jspice3
spcmdtab.c
Go to the documentation of this file.
1 /***************************************************************************
2 JSPICE3 adaptation of Spice3e2 - Copyright (c) Stephen R. Whiteley 1992
3 Copyright 1990 Regents of the University of California. All rights reserved.
4 Authors: 1985 Wayne A. Christopher
5  1992 Stephen R. Whiteley
6 ****************************************************************************/
7 
8 /*
9  * Table of available commands. Note that they're sorted so that the commands
10  * that appear in the spiceinit file are at the top.
11  */
12 
13 #include "spice.h"
14 #include "ftedefs.h"
15 #include "ftehelp.h"
16 #include "ftegraph.h"
17 #include "spfteext.h"
18 #include "plotext.h"
19 
20 
21 #ifdef HAVE_STIM
22 extern void com_testsys();
23 #endif
24 
25 /* Bool fields: stringargs, spiceonly, major */
26 
27 struct comm spcp_coms[] = {
28 
29  { "let", com_let, false, false, true,
30  { 040000, 040000, 040000, 040000 }, E_DEFHMASK, 0, LOTS,
31  arg_let,
32  "varname = expr : Assign vector variables." } ,
33  { "define", com_define, false, false, true,
34  { 010000, 040000, 040000, 040000 }, E_DEFHMASK, 0, LOTS,
35  (int (*)()) NULL,
36  "[[func (args)] stuff] : Define a user-definable function." } ,
37  { "set", com_set, false, false, true,
38  { 020000, 020000, 020000, 020000 }, E_DEFHMASK, 0, LOTS,
39  arg_set,
40  "[option] [option = value] ... : Set a variable." } ,
41  { "alias", com_alias, false, false, false,
42  { 02, 04, 04, 04 }, E_ADVANCED, 0, LOTS,
43  (int (*)()) NULL,
44  "[[word] alias] : Define an alias." } ,
45  { "deftype", com_dftype, false, false, false,
46  { 0, 0, 0, 0 }, E_DEFHMASK, 3, LOTS,
47  (int (*)()) NULL,
48  "spec name pat ... : Redefine vector and plot types.\n" } ,
49  { "plot", com_plot, false, false, true,
50  { 041000, 041000, 041000, 041000 }, E_BEGINNING | E_HASPLOTS, 1, LOTS,
51  arg_plot,
52  "expr ... [vs expr] [xl xlo xhi] [yl ylo yhi] : Plot things." },
53 
54  /* SRW */
55  { "graf", com_graf, false, false, true,
56  { 040000, 040000, 040000, 040000 }, E_BEGINNING | E_HASPLOTS, 0, LOTS,
57  (int (*)()) NULL,
58  "[options] expr ... : Plot vectors." },
59  { "usrset", com_usrset, false, false, false,
60  { 020000, 020000, 020000, 020000 }, E_DEFHMASK, 0, LOTS,
61  (int (*)()) NULL,
62  ": Display list of option keywords." } ,
63  { "mplot", com_mplot, false, false, false,
64  { 1, 1, 1, 1 }, E_DEFHMASK, 0, LOTS,
65  (int (*)()) NULL,
66  ": plot results from margin analysis." } ,
67  { "free", com_free, false, false, true,
68  {0, 0, 0, 0,}, E_DEFHMASK, 0, LOTS,
69  (int (*)()) NULL,
70  ": delete current plot, circuit." } ,
71  { "sced", com_sced, false, true, true,
72  { 1, 1, 1, 1 }, E_DEFHMASK, 0, 2,
73  (int (*)()) NULL,
74  "[-r/-n][filename] : Graphically edit a spice deck." } ,
75  { "check", com_check, false, true, true,
76  { 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
77  (int (*)()) NULL,
78  "[-v] [analysis]: Perform operating range analysis." } ,
79  { "loop", com_loop, false, true, true,
80  { 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
81  (int (*)()) NULL,
82  "[min max stp [min max stp]] [analysis]: run analysis over range." } ,
83  { "codeblock", com_codeblock, false, false, false,
84  { 1, 1, 1, 1 }, E_DEFHMASK, 0, 3,
85  (int (*)()) NULL,
86  "codeblock [filename] [print] [free]: Name an executable codeblock." } ,
87  { "xeditor", com_xeditor, false, true, true,
88  { 1, 0, 0, 0 }, E_DEFHMASK, 0, 1,
89  (int (*)()) NULL,
90  "[filename] : Text editor for X windows." } ,
91  { "setrdb", com_setrdb, false, false, false,
92  { 0, 0, 0, 0 }, E_DEFHMASK, 0, 2,
93  (int (*)()) NULL,
94  "[resource: value] : set resources for X windows." } ,
95 #ifdef HAVE_STIM
96  { "testsys", com_testsys, false, false, false,
97  { 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
98  (int (*)()) NULL,
99  "testsys [args]: Run the test system interface." } ,
100 #endif
101 
102  { "display", com_display, false, false, true,
103  { 040000, 040000, 040000, 040000 }, E_BEGINNING, 0, LOTS,
104  arg_display,
105  ": Display vector status." } ,
106  { "destroy", com_destroy, false, false, false,
107  { 0400, 0400, 0400, 0400 }, E_DEFHMASK, 0, LOTS,
108  (int (*)()) NULL,
109  "[plotname] ... : Throw away all the data in the plot." } ,
110  { "setplot", com_splot, false, false, true,
111  { 0400, 0, 0, 0 }, E_DEFHMASK, 0, 1,
112  (int (*)()) NULL,
113  "[plotname] : Change the current working plot." } ,
114  { "setcirc", com_scirc, false, true, false,
115  { 04, 0, 0, 0 }, E_DEFHMASK, 0, 1,
116  (int (*)()) NULL,
117  "[circuit name] : Change the current circuit." } ,
118  { "xgraph", com_xgraph, false, false, true,
119  { 1, 041000, 041000, 041000 }, E_DEFHMASK, 1, LOTS,
120  (int (*)()) NULL,
121  "file plotargs : Send plot to Xgraph-11." } ,
122  { "hardcopy", com_hardcopy, false, false, true,
123  { 1, 041000, 041000, 041000 }, E_DEFHMASK, 0, LOTS,
124  (int (*)()) NULL,
125  "file plotargs : Produce hardcopy plots." } ,
126  { "asciiplot", com_asciiplot, false, false, true,
127  { 041000, 041000, 041000, 041000 }, E_DEFHMASK, 1, LOTS,
128  (int (*)()) NULL,
129  "plotargs : Produce ascii plots." } ,
130  { "write", com_write, false, false, true,
131  { 1, 040000, 040000, 040000 }, E_DEFHMASK, 0, LOTS,
132  (int (*)()) NULL,
133  "file expr ... : Write data to a file." } ,
134  { "compose", com_compose, false, false, false,
135  { 0, 0, 0, 0 }, E_DEFHMASK, 2, LOTS,
136  (int (*)()) NULL,
137  "var parm=val ... : Compose a vector." } ,
138  { "unlet", com_unlet, false, false, false,
139  { 040000, 040000, 040000, 040000 }, E_DEFHMASK, 1, LOTS,
140  (int (*)()) NULL,
141  "varname ... : Undefine vectors." } ,
142  { "print", com_print, false, false, true,
143  { 040000, 040000, 040000, 040000 }, E_BEGINNING, 1, LOTS,
144  arg_print,
145  "[col] expr ... : Print vector values." } ,
146  { "load", com_load, false, false, true,
147  { 1, 1, 1, 1 }, E_BEGINNING | E_NOPLOTS, 1, LOTS,
148  arg_load,
149  "file ... : Load in data." } ,
150  { "cross", com_cross, false, false, true,
151  { 040000, 0, 040000, 040000 }, E_DEFHMASK, 2, LOTS,
152  (int (*)()) NULL,
153  "vecname number [ vector ... ] : Make a vector in a strange way." } ,
154  { "undefine", com_undefine, false, false, false,
155  { 010000, 010000, 010000, 010000 }, E_DEFHMASK, 0, LOTS,
156  (int (*)()) NULL,
157  "[func ...] : Undefine a user-definable function." } ,
158  { "op", com_op, false, true, true,
159  { 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
160  (int (*)()) NULL,
161  "[.op card args] : Determine the operating point of the circuit." } ,
162  { "tf", com_tf, false, true, true,
163  { 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
164  (int (*)()) NULL,
165  "[.tran card args] : Do a transient analysis." } ,
166  { "tran", com_tran, false, true, true,
167  { 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
168  (int (*)()) NULL,
169  "[.tran card args] : Do a transient analysis." } ,
170  { "ac", com_ac, false, true, true,
171  { 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
172  (int (*)()) NULL,
173  "[.ac card args] : Do an ac analysis." } ,
174  { "dc", com_dc, false, true, true,
175  { 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
176  (int (*)()) NULL,
177  "[.dc card args] : Do a dc analysis." } ,
178  { "pz", com_pz, false, true, false,
179  { 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
180  (int (*)()) NULL,
181  "[.pz card args] : Do a pole / zero analysis." } ,
182  { "sens", com_sens, false, true, true,
183  { 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
184  (int (*)()) NULL,
185  "[.ac card args] : Do a sensitivity analysis." } ,
186  { "disto", com_disto, false, true, false,
187  { 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
188  (int (*)()) NULL,
189  "[.disto card args] : Do an distortion analysis." } ,
190  { "noise", com_noise, false, true, true,
191  { 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
192  (int (*)()) NULL,
193  "[.noise card args] : Do a noise analysis." } ,
194  { "listing", com_listing, false, true, true,
195  { 0100, 0100, 0100, 0100 }, E_DEFHMASK, 0, LOTS,
196  (int (*)()) NULL,
197  "[logical] [physical] [deck] : Print the current circuit." } ,
198  { "edit", com_edit, false, true, true,
199  { 1, 0, 0, 0 }, E_DEFHMASK, 0, 3,
200  (int (*)()) NULL,
201  "[filename] : Edit a spice deck and then load it in." } ,
202  { "dump", com_dump, false, true, false,
203  { 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
204  (int (*)()) NULL,
205  ": Print a dump of the current circuit." } ,
206  { "fourier", com_fourier, false, false, true,
207  { 0, 040000, 040000, 040000 }, E_DEFHMASK, 1, LOTS,
208  (int (*)()) NULL,
209  "fund_freq vector ... : Do a fourier analysis of some data." } ,
210  { "show", com_show, false, true, false,
211  { 040, 040, 040, 040 }, E_DEFHMASK, 0, LOTS,
212  (int (*)()) NULL,
213  "devspecs ... : parmspecs ... : Print out device parameters." } ,
214  { "alter", com_alter, false, true, false,
215  { 040, 040, 040, 040 }, E_DEFHMASK, 3, LOTS,
216  (int (*)()) NULL,
217  "devspecs : parmname value : Alter device parameters." } ,
218  { "resume", com_resume, false, true, false,
219  { 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
220  (int (*)()) NULL,
221  ": Continue after a stop." } ,
222  { "state", com_state, false, true, false,
223  { 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
224  (int (*)()) NULL,
225  "(unimplemented) : Print the state of the circuit." },
226  { "stop", com_stop, false, true, false,
227  { 04200, 04200, 04200, 04200 }, E_DEFHMASK, 0, LOTS,
228  (int (*)()) NULL,
229  "[stop args] : Set a breakpoint." } ,
230  { "trace", com_trce, false, true, false,
231  { 0200, 0200, 0200, 0200 }, E_DEFHMASK, 0, LOTS,
232  (int (*)()) NULL,
233  "[all] [node ...] : Trace a node." } ,
234  { "save", com_save, false, true, false,
235  { 0200, 0200, 0200, 0200 }, E_DEFHMASK, 0, LOTS,
236  (int (*)()) NULL,
237  "[all] [node ...] : Save a spice output." } ,
238  { "iplot", com_iplot, false, true, true,
239  { 0200, 0200, 0200, 0200 }, E_DEFHMASK, 0, LOTS,
240  (int (*)()) NULL,
241  "[all] [node ...] : Incrementally plot a node." } ,
242  { "status", com_sttus, false, true, false,
243  { 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
244  (int (*)()) NULL,
245  ": Print the current breakpoints and traces." } ,
246  { "delete", com_delete, false, true, false,
247  { 020, 020, 020, 020 }, E_DEFHMASK, 0, LOTS,
248  (int (*)()) NULL,
249  "[all] [break number ...] : Delete breakpoints and traces." } ,
250  { "step", com_step, false, true, false,
251  { 0, 0, 0, 0 }, E_DEFHMASK, 0, 1,
252  (int (*)()) NULL,
253  "[number] : Iterate number times, or one." } ,
254  { "reset", com_rset, false, true, true,
255  { 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
256  (int (*)()) NULL,
257  ": Terminate a simulation after a breakpoint (formerly 'end')." } ,
258  { "run", com_run, false, true, true,
259  { 0, 0, 0, 0 }, E_DEFHMASK, 0, 1,
260  (int (*)()) NULL,
261  "[rawfile] : Run the simulation as specified in the input file." } ,
262  { "aspice", com_aspice, false, false, false,
263  { 1, 1, 1, 1 }, E_DEFHMASK, 1, 2,
264  (int (*)()) NULL,
265  "file [outfile] : Run a spice job asynchronously." } ,
266  { "jobs", com_jobs, false, false, false,
267  { 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
268  (int (*)()) NULL,
269  ": Report on asynchronous spice jobs." } ,
270  { "rspice", com_rspice, false, false, false,
271  { 1, 1, 1, 1 }, E_DEFHMASK, 0, LOTS,
272  (int (*)()) NULL,
273  "[input file] : Run a spice job remotely." } ,
274  { "bug", com_bug, false, false, true,
275  { 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
276  (int (*)()) NULL,
277  ": Report a %s bug." } ,
278  { "where", com_where, false, true, true,
279  { 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
280  (int (*)()) NULL,
281  ": Print last non-converging node or device" } ,
282  { "newhelp", com_ahelp, false, false, true,
283  { 010, 010, 010, 010 }, E_DEFHMASK, 0, LOTS,
284  (int (*)()) NULL,
285  "[command name] ... : help." },
286  { "tutorial", com_ghelp, false, false, true,
287  { 023010, 023010, 023010, 023010 }, E_BEGINNING, 0, LOTS,
288  (int (*)()) NULL,
289  "[subject] ... : Hierarchical documentation browser." } ,
290  { "help", com_ghelp, false, false, true,
291  { 023010, 023010, 023010, 023010 }, E_DEFHMASK, 0, LOTS,
292  (int (*)()) NULL,
293  "[subject] ... : Hierarchical documentation browser." } ,
294  { "oldhelp", com_help, false, false, true,
295  { 010, 010, 010, 010 }, E_DEFHMASK, 0, LOTS,
296  (int (*)()) NULL,
297  "[command name] ... : Print help." } ,
298  { "quit", com_quit, false, false, true,
299  { 0, 0, 0, 0 }, E_BEGINNING, 0, 0,
300  (int (*)()) NULL,
301  ": Quit %s." } ,
302  { "source", com_source, false, false, true,
303  { 1, 1, 1, 1 }, E_DEFHMASK, 1, LOTS,
304  (int (*)()) NULL,
305  "file : Source a %s file." } ,
306  { "shift", com_shift, false, false, false,
307  { 020000, 0, 0, 0 }, E_DEFHMASK, 0, 2,
308  (int (*)()) NULL,
309  "[var] [number] : Shift argv or the named list var to the left." } ,
310  { "unset", com_unset, false, false, false,
311  { 020000, 020000, 020000, 020000 }, E_DEFHMASK, 0, LOTS,
312  (int (*)()) NULL,
313  "varname ... : Unset a variable." } ,
314  { "unalias", com_unalias, false, false, false,
315  { 02, 02, 02, 02 }, E_DEFHMASK, 1, LOTS,
316  (int (*)()) NULL,
317  "word ... : Undefine an alias." } ,
318  { "history", com_history, false, false, false,
319  { 0, 0, 0, 0 }, E_DEFHMASK, 0, 2,
320  (int (*)()) NULL,
321  "[-r] [number] : Print command history." } ,
322  { "echo", com_echo, false, false, false,
323  { 1, 1, 1, 1 }, E_DEFHMASK, 0, LOTS,
324  (int (*)()) NULL,
325  "[stuff ...] : Print stuff." } ,
326  { "shell", com_shell, false, false, true,
327  { 1, 1, 1, 1 }, E_DEFHMASK, 0, LOTS,
328  (int (*)()) NULL,
329  "[args] : Fork a shell, or execute the command." } ,
330  { "rusage", com_rusage, false, false, false,
331  { 02000, 02000, 02000, 02000 }, E_DEFHMASK, 0, LOTS,
332  (int (*)()) NULL,
333  "[resource ...] : Print current resource usage." } ,
334  { "cd", com_chdir, false, false, false,
335  { 1, 0, 0, 0 }, E_DEFHMASK, 0, 1,
336  (int (*)()) NULL,
337  "[directory] : Change working directory." } ,
338  { "version", com_version, false, false, false,
339  { 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
340  (int (*)()) NULL,
341  "[number] : Print the version number." } ,
342  { "diff", com_diff, false, false, false,
343  { 0400, 0400, 040000, 040000 }, E_DEFHMASK, 0, LOTS,
344  (int (*)()) NULL,
345  "plotname plotname [vec ...] : 'diff' two plots." } ,
346  { "rehash", com_rehash, false, false, false,
347  { 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
348  (int (*)()) NULL,
349  ": Rebuild the unix command database." } ,
350  { "cdump", com_cdump, false, false, false,
351  { 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
352  (int (*)()) NULL,
353  ": Dump the current control structures." } ,
354  { "settype", com_stype, false, false, false,
355  { 0200000, 040000, 040000, 040000 }, E_DEFHMASK, 2, LOTS,
356  (int (*)()) NULL,
357  "type vec ... : Change the type of a vector." } ,
358  { "strcmp", com_strcmp, false, false, false,
359  { 0, 0, 0, 0 }, E_DEFHMASK, 3, 3,
360  (int (*)()) NULL,
361  "varname s1 s2 : Set $varname to strcmp(s1, s2)." } ,
362  { "linearize", com_linearize, false, true, false,
363  { 040000, 040000, 040000, 040000 }, E_DEFHMASK, 0, LOTS,
364  (int (*)()) NULL,
365  " [ vec ... ] : Convert plot into one with linear scale." } ,
366 
367  { "while", NULL, false, false, false,
368  { 040000, 040000, 040000, 040000 }, E_DEFHMASK, 1, LOTS,
369  (int (*)()) NULL,
370  "condition : Execute while the condition is true." } ,
371  { "repeat", NULL, false, false, false,
372  { 0, 0, 0, 0}, E_DEFHMASK, 0, 1,
373  (int (*)()) NULL,
374  "[number] : Repeat number times, or forever." } ,
375  { "dowhile", NULL, false, false, false,
376  { 040000, 040000, 040000, 040000 }, E_DEFHMASK, 1, LOTS,
377  (int (*)()) NULL,
378  "condition : Execute while the condition is true." } ,
379  { "foreach", NULL, false, false, false,
380  { 0, 040000, 040000, 040000 }, E_DEFHMASK, 2, LOTS,
381  (int (*)()) NULL,
382  "variable value ... : Do once for each value." } ,
383  { "if", NULL, false, false, false,
384  { 040000, 040000, 040000, 040000 }, E_DEFHMASK, 1, LOTS,
385  (int (*)()) NULL,
386  "condition : Execute if the condition is true." } ,
387  { "else", NULL, false, false, false,
388  { 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
389  (int (*)()) NULL,
390  ": Goes with if." } ,
391  { "end", NULL, false, false, false,
392  { 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
393  (int (*)()) NULL,
394  ": End a block." } ,
395  { "break", NULL, false, false, false,
396  { 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
397  (int (*)()) NULL,
398  ": Break out of a block." } ,
399  { "continue", NULL, false, false, false,
400  { 0, 0, 0, 0 }, E_DEFHMASK, 0, 0,
401  (int (*)()) NULL,
402  ": Continue a loop." } ,
403  { "label", NULL, false, false, false,
404  { 0, 0, 0, 0 }, E_DEFHMASK, 1, 1,
405  (int (*)()) NULL,
406  "word : Create someplace to go to." } ,
407  { "goto", NULL, false, false, false,
408  { 0100000, 0, 0, 0 }, E_DEFHMASK, 1, 1,
409  (int (*)()) NULL,
410  "word : Go to a label." } ,
411 
412  { 0, NULL, false, false, false, { 0, 0, 0, 0 }, E_DEFHMASK, 0, LOTS,
413  (int (*)()) NULL,
414  NULL }
415 };
416 
void com_compose()
void com_undefine()
void com_setrdb()
void com_stype()
void com_alter()
void com_linearize()
void com_load()
void com_unset()
#define LOTS
Definition: cpdefs.h:34
int arg_set()
void com_splot()
void com_delete()
void com_rusage()
#define E_HASPLOTS
Definition: ftehelp.h:10
void com_check()
void com_pz()
#define E_DEFHMASK
Definition: ftehelp.h:21
void com_unalias()
void com_define()
struct comm spcp_coms[]
Definition: spcmdtab.c:27
void com_dump()
void com_alias()
void com_save()
void com_graf()
void com_fourier()
void com_echo()
void com_diff()
void com_ahelp()
void com_sced()
void com_jobs()
void com_version()
void com_codeblock()
void com_tf()
void com_step()
void com_set()
Definition: cpdefs.h:20
void com_resume()
void com_dftype()
void com_cross()
void com_aspice()
void com_rspice()
void com_quit()
void com_mplot()
void com_sens()
void com_scirc()
#define E_ADVANCED
Definition: ftehelp.h:17
void com_state()
void com_hardcopy()
void com_plot()
void com_show()
#define NULL
Definition: spdefs.h:121
void com_chdir()
int arg_plot()
void com_display()
void com_dc()
void com_asciiplot()
void com_shell()
void com_rset()
void com_rehash()
void com_usrset()
void com_stop()
void com_print()
void com_run()
void com_noise()
int arg_load()
void com_sttus()
void com_where()
Definition: where.c:16
int arg_print()
void com_xgraph()
void com_free()
void com_unlet()
void com_edit()
void com_trce()
void com_bug()
void com_ghelp()
void com_op()
void com_listing()
void com_history()
void com_disto()
void com_write()
#define E_NOPLOTS
Definition: ftehelp.h:11
void com_ac()
int arg_display()
Definition: arg.c:91
void com_help()
void com_iplot()
void com_strcmp()
void com_loop()
void com_source()
#define E_BEGINNING
Definition: ftehelp.h:15
void com_let()
void com_tran()
void com_destroy()
int arg_let()
void com_cdump()
void com_shift()
void com_xeditor(wordlist *wl)
Definition: xeditor.c:1237