Jspice3
main.c File Reference
#include "spice.h"
#include "misc.h"
#include "ftedefs.h"
#include "inpdefs.h"
#include "iferrmsg.h"
#include "plotdev.h"
#include "ftedebug.h"
#include "const.h"
#include "scedio.h"
#include <setjmp.h>
Include dependency graph for main.c:

Go to the source code of this file.

Macros

#define CURHT   0
 
#define FontWidth   currentgraph->fontwidth
 

Typedefs

typedef RETSIGTYPE(* SigType) ()
 

Functions

RETSIGTYPE ft_sigintr ()
 
RETSIGTYPE sigfloat ()
 
RETSIGTYPE sigstop ()
 
RETSIGTYPE sigquit ()
 
RETSIGTYPE sigill ()
 
RETSIGTYPE sigbus ()
 
RETSIGTYPE sigsegv ()
 
RETSIGTYPE sig_sys ()
 
void inp_spsource (FILE *fp, bool i, char *s)
 
void inp_source (char *s)
 
void ft_dorun (char *s)
 
void ft_dotsaves ()
 
void ft_savedotargs ()
 
void ft_cktcoms (bool i)
 
char * if_errstring (code)
 
void if_option (char *ckt, char *name, int type, char *value)
 
struct variableif_getstat (char *n, char *c, wordlist **w)
 
wordlistGetAnalysisFromDeck ()
 
void inp_list (FILE *fp, struct line *l1, struct line *l2, int i)
 
static void textcursor (int x, int y)
 
char * KbEdit (char *s, int x, int y, int bg, int fg, int cc)
 
int main (int ac, char **av)
 
static void clear_previous ()
 
int SPIinit (IFfrontEnd *frtEnd, IFsimulator **description)
 
int SIMinit (IFfrontEnd *frontEnd, IFsimulator **simulator)
 

Variables

char * ft_rawfile = "rawspice.raw"
 
char * errRtn
 
char * errMsg
 
char * cp_program
 
char * cp_display
 
bool ft_servermode = false
 
bool ft_intrpt = false
 
bool ft_setflag = false
 
struct variable *(* if_getparam )()
 
bool ft_batchmode = false
 
jmp_buf jbuf
 
static char * usage
 
struct options * exitoption
 
struct options * helpoption
 
static started = false
 
IFsimulatorft_sim
 
IFsimulator SIMinfo
 
char * hlp_filelist [] = {"spice", "sced", 0 }
 
bool ft_nutmeg = true
 
struct comm nutcp_coms []
 
struct commcp_coms = nutcp_coms
 
static IFfrontEnd nutmeginfo
 
static struct sSCEDitf sc_itf
 
struct circft_curckt
 
struct circft_circuits
 
struct dbcommdbiplot = NULL
 
bool ft_listprint
 
bool ft_optsprint
 
bool ft_nodesprint
 
bool ft_acctprint
 
struct sSCEDitfft_sced = &sc_itf
 
double CONSTroot2
 
double CONSTvt0
 
double CONSTKoverQ
 
double CONSTe
 
IFfrontEndSPfrontEnd = NULL
 

Macro Definition Documentation

#define CURHT   0

Definition at line 268 of file main.c.

#define FontWidth   currentgraph->fontwidth

Definition at line 269 of file main.c.

Typedef Documentation

typedef RETSIGTYPE(* SigType) ()

Definition at line 439 of file main.c.

Function Documentation

static void clear_previous ( )
static

Definition at line 900 of file main.c.

902 {
903  /* for SCED, we don't save old circuits or plots */
904 #ifdef SIMULATOR
905  if_cktclear();
907 #endif
908 }
void if_cktclear()
Definition: spiceif.c:476
#define NULL
Definition: spdefs.h:121
Definition: cpstd.h:21
void com_destroy()
void ft_cktcoms ( bool  i)

Definition at line 231 of file main.c.

233 { return; }
void ft_dorun ( char *  s)

Definition at line 215 of file main.c.

217 { return; }
void ft_dotsaves ( )

Definition at line 221 of file main.c.

222 { return; }
void ft_savedotargs ( )

Definition at line 226 of file main.c.

227 { return; }
RETSIGTYPE ft_sigintr ( )
wordlist* GetAnalysisFromDeck ( )

Definition at line 255 of file main.c.

256 { return (NULL); }
#define NULL
Definition: spdefs.h:121
char* if_errstring ( code  )

Definition at line 237 of file main.c.

238 { return ("spice error"); }
struct variable* if_getstat ( char *  n,
char *  c,
wordlist **  w 
)

Definition at line 248 of file main.c.

251 { return (NULL);}
#define NULL
Definition: spdefs.h:121
void if_option ( char *  ckt,
char *  name,
int  type,
char *  value 
)

Definition at line 242 of file main.c.

244  { }
void inp_list ( FILE *  fp,
struct line l1,
struct line l2,
int  i 
)

Definition at line 260 of file main.c.

264 { return; }
void inp_source ( char *  s)

Definition at line 203 of file main.c.

205 {
206  wordlist *wl;
207 
208  wl = cp_lexer(s);
209  nutcom_source(wl);
210  wl_free(wl);
211 }
Definition: cddefs.h:119
Definition: library.c:18
void wl_free()
void nutcom_source()
wordlist * cp_lexer()
Definition: cpstd.h:21
void inp_spsource ( FILE*  fp,
bool  i,
char *  s 
)

Definition at line 195 of file main.c.

199 { inp_nutsource(fp,i,s); }
Definition: cddefs.h:119
void inp_nutsource()
char* KbEdit ( char *  s,
int  x,
int  y,
int  bg,
int  fg,
int  cc 
)

Definition at line 280 of file main.c.

291 {
292  char tbuf[128];
293  int i, k;
294  char *end, ctmp[2];
295  int editX, editY, editFg, editCc;
296  char *editC;
297  static char editBuf[128];
298 
299  editFg = fg;
300  editCc = cc;
301  editX = x;
302  editY = y;
303 
304  DevSetColor(fg);
305  *editBuf = '\0';
306  if (s) {
307  /* s can be NULL */
308  DevText(s, editX, editY);
309  strcpy(editBuf,s);
310  }
311  ctmp[1] = '\0';
312  editC = editBuf;
313  end = strchr(editBuf,'\0');
314  *(end+1) = '\0';
315  ctmp[0] = *editC;
316  DevSetColor(cc);
317  textcursor(editX+(int)(editC-editBuf)*FontWidth,editY);
318  DevSetColor(fg);
319  DevText(ctmp, editX + (int)(editC-editBuf)*FontWidth, editY);
320  for (;;) {
321  k = DevGetchar(NULL);
322  if ((char) k == '\r') break;
323  switch (k) {
324 
325  case 333: /* right arrow */
326  if (editC >= end) continue;
327  ctmp[0] = *editC;
328  DevSetColor(bg);
329  textcursor(editX+(int)(editC-editBuf)*FontWidth,editY);
330  DevSetColor(fg);
331  DevText(ctmp,editX + (int)(editC-editBuf)*FontWidth,editY);
332  editC++;
333  ctmp[0] = *editC;
334  DevSetColor(cc);
335  textcursor(editX+(int)(editC-editBuf)*FontWidth,editY);
336  DevSetColor(fg);
337  DevText(ctmp,editX + (int)(editC-editBuf)*FontWidth,editY);
338  continue;
339 
340  case 331: /* left arrow */
341  if (editC <= editBuf) continue;
342  ctmp[0] = *editC;
343  DevSetColor(bg);
344  textcursor(editX+(int)(editC-editBuf)*FontWidth,editY);
345  DevSetColor(fg);
346  DevText(ctmp,editX + (int)(editC-editBuf)*FontWidth,editY);
347  editC--;
348  ctmp[0] = *editC;
349  DevSetColor(cc);
350  textcursor(editX+(int)(editC-editBuf)*FontWidth,editY);
351  DevSetColor(fg);
352  DevText(ctmp,editX + (int)(editC-editBuf)*FontWidth,editY);
353  continue;
354 
355  case '\b':
356  if (editC == editBuf) continue;
357  DevSetColor(bg);
358  textcursor(editX+(int)(editC-editBuf)*FontWidth,editY);
359  editC--;
360  DevText(editC,editX + (int)(editC-editBuf)*FontWidth,editY);
361  DevSetColor(fg);
362  *editC = '\0';
363  strcat(editBuf,++editC);
364  DevText(editC,editX + (int)(editC-editBuf)*FontWidth,editY);
365  editC--;
366  if (end > editBuf) end--;
367  ctmp[0] = *editC;
368  DevSetColor(cc);
369  textcursor(editX+(int)(editC-editBuf)*FontWidth,editY);
370  DevSetColor(fg);
371  DevText(ctmp,editX + (int)(editC-editBuf)*FontWidth,editY);
372  continue;
373 
374  case 339: /* DEL, in DOS */
375  case 127:
376  if (editC == end) continue;
377  DevSetColor(bg);
378  textcursor(editX+(int)(editC-editBuf)*FontWidth,editY);
379  DevText(editC,editX + (int)(editC-editBuf)*FontWidth,editY);
380  DevSetColor(fg);
381  *editC = '\0';
382  strcat(editBuf,++editC);
383  DevText(editC,editX + (int)(editC-editBuf)*FontWidth,editY);
384  editC--;
385  if (end > editBuf) end--;
386  ctmp[0] = *editC;
387  DevSetColor(cc);
388  textcursor(editX+(int)(editC-editBuf)*FontWidth,editY);
389  DevSetColor(fg);
390  DevText(ctmp,editX + (int)(editC-editBuf)*FontWidth,editY);
391  continue;
392 
393  case '\025': /* ^U */
394  case '\030': /* ^X */
395  case '\033': /* ESC */
396  DevSetColor(bg);
397  textcursor(editX+(int)(editC-editBuf)*FontWidth,editY);
398  DevText(editBuf,editX,editY);
399  editC = end = editBuf;
400  *editC = '\0';
401  if ((char) k == '\033') {
402  return (NULL);
403  }
404  DevSetColor(cc);
405  textcursor(editX,editY);
406  DevSetColor(fg);
407  continue;
408  default:
409  if (k > 255) continue;
410  if (((char) k < ' ') || ((char) k > '~')) continue;
411  DevSetColor(bg);
412  textcursor(editX+(int)(editC-editBuf)*FontWidth,editY);
413  DevText(editC,editX + (int)(editC-editBuf)*FontWidth,editY);
414  strcpy(tbuf,editC);
415  *editC = (char) k;
416  sprintf(++editC,tbuf);
417  ctmp[0] = *editC;
418  DevSetColor(fg);
419  DevText(editC-1,
420  editX+(int)(editC-1-editBuf)*FontWidth,editY);
421  DevSetColor(cc);
422  textcursor(editX+(int)(editC-editBuf)*FontWidth,editY);
423  DevSetColor(fg);
424  DevText(ctmp,editX + (int)(editC-editBuf)*FontWidth,editY);
425  end++;
426  *(end+1) = '\0';
427 
428  }
429  }
430  DevSetColor(bg);
431  textcursor(editX+(int)(editC-editBuf)*FontWidth,editY);
432  DevSetColor(fg);
433  ctmp[0] = *editC;
434  DevText(ctmp,editX + (int)(editC-editBuf)*FontWidth,editY);
435  return (editBuf);
436 }
Definition: subckt.c:18
char * strcpy()
Definition: cddefs.h:119
void DevSetColor()
void DevText()
#define FontWidth
Definition: main.c:269
static void textcursor(int x, int y)
Definition: main.c:272
#define NULL
Definition: spdefs.h:121
int DevGetchar()
int main ( int  ac,
char **  av 
)

Definition at line 445 of file main.c.

449 {
450  char **tv;
451  int tc, i;
452  int err;
453  bool gotone = false;
454  char *p;
455  char *cmd_line_term = 0, term_1stch;
456 
457 #ifdef BATCH
458  bool st = false;
459 #else
460 
461 #ifdef HAVE_GETPWUID
462  struct passwd *pw;
463 #endif
464  char buf[BSIZE_SP];
465  bool rflag = false, ciprefix();
466  bool istty = true, iflag = false, qflag = false;
467  bool readinit = true;
468  bool gdata = true;
469  bool read_err = false;
470  FILE *fp;
471  extern char *kw_mplot_cur;
472 
473 #endif
474 
475  /* MFB tends to jump to 0 on errors. This tends to catch it. */
476  if (started) {
477  fprintf(cp_err, "main: Internal Error: jump to zero\n");
478  fatal();
479  }
480  started = true;
481 
482  ivars( );
483 
484  cp_in = stdin;
485  cp_out = stdout;
486  cp_err = stderr;
487 
488 #ifdef BATCH
489 
490  cp_curin = stdin;
491  cp_curout = stdout;
492  cp_curerr = stderr;
493 
494 #else
495 
496 #ifdef MALLOCTRACE
497  mallocTraceInit("malloc.out");
498 #endif
499 #ifdef HAVE_ISATTY
500  istty = (bool) isatty(fileno(stdin));
501 #endif
502 
503  rusage_init();
504 #endif
505 
506  err = SIMinit(&nutmeginfo,&ft_sim);
507  if(err != OK) {
508  ft_sperror(err,"SIMinit");
509  return (EXIT_BAD);
510  }
512 
513 #ifdef HAVE_GETPID
514  srandom(getpid());
515 #else
516  srandom(17);
517 #endif
518 
519  tv = av;
520  tc = ac;
521 
522  /* Pass 1 -- get options. */
523  while (--tc > 0) {
524  tv++;
525  if (**tv == Spice_OptChar) { /* Option argument. */
526  switch ((*tv)[1]) {
527 
528 #ifndef BATCH
529  case '\0': /* No raw file. */
530  gdata = false;
531  break;
532 
533  case 'b': /* Batch mode. */
534  case 'B':
535  ft_batchmode = true;
536  break;
537 
538  case 's': /* Server mode. */
539  case 'S':
540  ft_servermode = true;
541  break;
542 
543  case 'i': /* Interactive mode. */
544  case 'I':
545  iflag = true;
546  break;
547 
548  case 'q': /* No command completion. */
549  case 'Q':
550  qflag = true;
551  break;
552 
553  case 'n': /* Don't read .spiceinit. */
554  case 'N':
555  readinit = false;
556  break;
557 
558  case 't': /* Terminal type. */
559  case 'T':
560  if (tc > 1) {
561  tc--;
562  tv++;
563  cmd_line_term = *tv;
564  term_1stch = **tv;
565  **tv = Spice_OptChar;
566  }
567  else {
568  fprintf(cp_err, usage, cp_program);
569  return (EXIT_BAD);
570  }
571  break;
572  case 'd': /* X display */
573  case 'D':
574  if (tc > 1) {
575  tc--;
576  tv++;
577  cp_display = copy(*tv);
578  **tv = Spice_OptChar;
579  }
580  else {
581  fprintf(cp_err, usage, cp_program);
582  return (EXIT_BAD);
583  }
584  break;
585  case 'r': /* The rawfile. */
586  case 'R':
587  if (tc > 1) {
588  tc--;
589  tv++;
590  ft_rawfile = copy(*tv);
591  cp_vset("rawfile", VT_STRING, *tv);
592  **tv = Spice_OptChar;
593  }
594  rflag = true;
595  break;
596 
597 #else /* if BATCH */
598  case 'r': /* The rawfile. */
599  case 'R':
600  if (tc > 1) {
601  tc--;
602  tv++;
603  ft_rawfile = copy(*tv);
604  **tv = Spice_OptChar;
605  }
606  else {
607  fprintf(cp_err, usage, cp_program);
608  return (EXIT_BAD);
609  }
610 #endif
611 
612  case 'o': /* Output file. */
613  case 'O':
614  if (tc > 1) {
615  tc--;
616  tv++;
617  if (!(freopen(*tv, "w", stdout))) {
618  perror(*tv);
619  return (EXIT_BAD);
620  }
621  **tv = Spice_OptChar;
622  }
623  else {
624  fprintf(cp_err, usage, av[0]);
625  return (EXIT_BAD);
626  }
627  break;
628 
629  default:
630  fprintf(cp_err, "Error: bad option %s\n", *tv);
631  fprintf(cp_err, usage, cp_program);
632  return (EXIT_BAD);
633  }
634  }
635  }
636 
637  if (!cp_display) {
638  cp_display = getenv("DISPLAY");
639  if (cp_display)
641  }
642 
643 #ifdef SIMULATOR
645 #else
647 #endif
648 
649 #ifndef BATCH
650 
651  if ((!iflag && !istty) || ft_servermode)
652  ft_batchmode = true;
653  if ((iflag && !istty) || qflag)
654  cp_nocc = true;
655  if (!istty || ft_batchmode)
656  out_moremode = false;
657  if (ft_servermode)
658  ft_rawfile = "";
659  cp_interactive = false;
660 
661 #ifdef HAVE_SIGNAL
662  /* Set up signal handling */
663  if (!ft_batchmode) {
664  (void) signal(SIGINT, (SigType)ft_sigintr);
665  (void) signal(SIGFPE, (SigType)sigfloat);
666 #ifdef SIGTSTP
667  (void) signal(SIGTSTP, (SigType)sigstop);
668 #endif
669  }
670  /* Set up signal handling for fatal errors. */
671  (void) signal(SIGILL, (SigType)sigill);
672 
673 #ifdef SIGBUS
674  (void) signal(SIGBUS, (SigType)sigbus);
675 #endif
676 #ifdef SIGSEGV
677  (void) signal(SIGSEGV, (SigType)sigsegv);
678 #endif
679 #ifdef SIGSYS
680  (void) signal(SIGSYS, (SigType)sig_sys);
681 #endif
682 #endif
683 
684  /* To catch interrupts during .spiceinit... */
685  if (setjmp(jbuf) == 1) {
686  read_err = true;
687  goto bot;
688  }
689 
690  /* init graphics, so we can setrdb in init file */
691  if (!ft_batchmode)
692  DevInit( );
693 
694  /* Have to initialize cp now. */
695  ft_cpinit(); /* this sources the spinit file */
696 
697  if (!ft_servermode && readinit) {
698 #ifdef HAVE_GETPWUID
699  /* Try to source either .spiceinit or ~/.spiceinit. */
700  if (access(".spiceinit", 0) == 0)
701  inp_source(".spiceinit");
702  else {
703  pw = getpwuid(getuid());
704  (void) strcpy(buf, pw->pw_dir);
705  (void) strcat(buf, "/.spiceinit");
706  if (access(buf, 0) == 0)
707  inp_source(buf);
708  }
709 #else
710  /* Try to source the file "spice.rc" in the current directory. */
711  if ((fp = fopen("spice.rc", "r")) != NULL) {
712  (void) fclose(fp);
713  inp_source("spice.rc");
714  }
715 #endif
716  }
717 
718 bot:
719 
720  if (cmd_line_term) {
721  *cmd_line_term = term_1stch;
722  /* XXX oh, gross!
723  * First char got squashed scanning the
724  * command line
725  */
726  cp_vset("term", VT_STRING, cmd_line_term);
727  *cmd_line_term = Spice_OptChar;
728  }
729 
730  if (!ft_batchmode) {
731  com_version(NULL);
732  if (News_File && *News_File) {
733  fp = fopen(cp_tildexpand(News_File), "r");
734  if (fp) {
735  while (fgets(buf, BSIZE_SP, fp))
736  fputs(buf, stdout);
737  (void) fclose(fp);
738  }
739  }
740  }
741  if (read_err)
742  fprintf(cp_err, "Warning: error executing init file.\n");
743 
744  /* Pass 2 -- get the filenames. If we are spice, then this means
745  * build a circuit for this file. If this is in server mode, don't
746  * process any of these args.
747  */
748 
749  if (setjmp(jbuf) == 1) {
750  goto evl;
751  }
752 
753 #endif /* not BATCH */
754 
755  if (!ft_servermode && !ft_nutmeg) {
756  FILE *file = NULL, *tp = NULL;
757  char *tempfile = NULL, buf[BSIZE_SP], *smktemp();
758 
759  for (tv = av + 1, i = 0; *tv; tv++)
760  if (**tv != Spice_OptChar)
761  i++;
762  if (i == 1) {
763  for (tv = av + 1, i = 0; *tv; tv++)
764  if (**tv != Spice_OptChar)
765  break;
766  if (!(file = fopen(*tv, "r"))) {
767  perror(*tv);
768  i = 0;
769  }
770  }
771  else if (i) {
772  tempfile = smktemp("sp");
773  if (!(file = fopen(tempfile, "w+"))) {
774  perror(tempfile);
775  return (EXIT_BAD);
776  }
777  for (tv = av + 1, i = 0; *tv; tv++)
778  if (**tv != Spice_OptChar) {
779  if (!(tp = fopen(*tv, "r"))) {
780  perror(*tv);
781  continue;
782  }
783  while ((i = fread(buf, 1, BSIZE_SP, tp)) > 0)
784  (void) fwrite(buf, i, 1, file);
785  (void) fclose(tp);
786  }
787  (void) fseek(file, (long) 0, 0);
788  }
789  if (file) {
790  inp_spsource(file, false, tempfile ? (char *) NULL : *tv);
791  (void) fclose(file);
792  gotone = true;
793  if (tempfile)
794  (void) unlink(tempfile);
795  }
796  }
797 
798  if (!gotone && ft_batchmode && !ft_nutmeg)
799  inp_spsource(stdin, false, (char *) NULL);
800 
801 #ifndef BATCH
802  if (ft_nutmeg && gdata) {
803  /* Read in the rawfiles */
804  for (av++; *av; av++)
805  if (**av != Spice_OptChar) {
806  ft_loadfile(*av);
807  gotone = true;
808  }
809  if (!gotone)
811  }
812 
813 evl:
814  if (ft_batchmode) {
815  /* If we get back here in batch mode then something is
816  * wrong, so exit.
817  */
818  bool st = false;
819 
820  (void) setjmp(jbuf);
821 
822  if (st == true)
823  return (EXIT_BAD);
824  st = true;
825 
826  if (ft_curckt == NULL) {
827  char p;
828  if (cp_getvar(kw_mplot_cur,VT_STRING,&p))
829  /* margin analysis performed */
830  return (EXIT_NORMAL);
831  fprintf(cp_err, "Error: no circuit loaded!\n");
832  return (EXIT_BAD);
833  }
834  else if (ft_curckt->ci_runonce)
835  /* already did it */
836  return (EXIT_NORMAL);
837 
838  if (ft_servermode) {
840  return (EXIT_NORMAL);
841  }
842  /* If -r is specified, then we don't bother with the dot
843  * cards. Otherwise, we use wrd_run, but we are careful
844  * not to save too much.
845  */
846  cp_interactive = false;
847  if (rflag) {
848  ft_dotsaves();
850  ft_cktcoms(true);
851  }
852  else {
853  ft_savedotargs();
854  ft_dorun((char *) NULL);
855  ft_cktcoms(false);
856  }
857  }
858  else {
859  (void) setjmp(jbuf);
860  cp_interactive = true;
861  while (cp_evloop((char *) NULL) == 1) ;
862  }
863 
864 #else /* if BATCH */
865 
866  if (st == true)
867  return (EXIT_BAD);
868  st = true;
869  if (ft_curckt == NULL) {
870  char p;
871  if (cp_getvar(kw_mplot_cur,VT_STRING,&p))
872  /* margin analysis performed */
873  return (EXIT_NORMAL);
874  fprintf(cp_err, "Error: no circuit loaded!\n");
875  return (EXIT_BAD);
876  }
877  else if (ft_curckt->ci_runonce)
878  /* already did it */
879  return (EXIT_NORMAL);
880 #ifdef SPICE2
881  ft_savedotargs( );
882  ft_dorun(NULL);
883  ft_cktcoms(false);
884 #else
885  ft_dotsaves( );
887  ft_cktcoms(false);
888 
889  fprintf(stderr,
890  "Note: \".plot\" or \".print\" lines ignored (rawfile only)\n");
891 #endif
892 
893 #endif
894 
895  return (EXIT_NORMAL);
896 }
static char buf[MAXPROMPT]
Definition: arg.c:18
#define BSIZE_SP
Definition: misc.h:19
int ciprefix()
RETSIGTYPE sigbus()
RETSIGTYPE sigstop()
void cp_vset()
bool cp_getvar(char *n, int t, char *r)
Definition: help.c:184
IFsimulator * ft_sim
Definition: main.c:111
char * cp_tildexpand()
char * strcpy()
RETSIGTYPE sigill()
struct variable * nutif_getparam()
#define EXIT_NORMAL
Definition: misc.h:25
static started
Definition: main.c:110
void ft_dorun(char *s)
Definition: main.c:215
RETSIGTYPE sigsegv()
FILE * cp_curerr
Definition: cshpar.c:77
FILE * p
Definition: proc2mod.c:48
void com_version()
void ft_cpinit()
Definition: cpitf.c:21
char * simulator
Definition: ifsim.h:357
int bool
Definition: cpstd.h:16
RETSIGTYPE ft_sigintr()
struct variable *(* if_getparam)()
Definition: main.c:53
RETSIGTYPE sig_sys()
char * copy()
char * getenv(char *c)
Definition: libfuncs.c:106
FILE * cp_curin
Definition: cshpar.c:75
char * ft_rawfile
Definition: main.c:39
void inp_spsource(FILE *fp, bool i, char *s)
Definition: main.c:195
FILE * cp_err
Definition: help.c:101
#define OK
Definition: iferrmsg.h:17
void ivars()
Definition: ivars.c:51
void inp_source(char *s)
Definition: main.c:203
void rusage_init()
Definition: resource.c:142
RETSIGTYPE sigfloat()
bool cp_interactive
Definition: help.c:100
char * News_File
Definition: ivars.c:12
#define NULL
Definition: spdefs.h:121
struct circ * ft_curckt
Definition: main.c:184
FILE * cp_out
Definition: help.c:101
int unlink(char *fn)
Definition: libfuncs.c:96
bool ft_servermode
Definition: main.c:46
char * cp_program
Definition: main.c:43
char * smktemp()
int access(char *pth, int m)
Definition: libfuncs.c:75
void ft_sperror()
char * cp_display
Definition: main.c:44
#define VT_STRING
Definition: cpstd.h:63
void perror()
static char * usage
Definition: main.c:100
bool ci_runonce
Definition: ftedefs.h:35
void ft_cktcoms(bool i)
Definition: main.c:231
static IFfrontEnd nutmeginfo
Definition: main.c:164
char * kw_mplot_cur
Definition: options.c:376
RETSIGTYPE(* SigType)()
Definition: main.c:439
void DevInit()
Definition: display.c:168
int getpid()
Definition: libfuncs.c:137
bool cp_nocc
Definition: complete.c:75
bool ft_batchmode
Definition: main.c:98
bool ft_nutmeg
Definition: main.c:161
jmp_buf jbuf
Definition: main.c:99
Definition: mfb.h:383
struct variable * spif_getparam()
void fatal()
Definition: help.c:174
int cp_evloop()
FILE * cp_curout
Definition: cshpar.c:76
FILE * cp_in
Definition: help.c:101
#define EXIT_BAD
Definition: misc.h:26
void ft_loadfile()
void ft_dotsaves()
Definition: main.c:221
void ft_savedotargs()
Definition: main.c:226
char Spice_OptChar
bool out_moremode
Definition: output.c:44
int SIMinit(IFfrontEnd *frontEnd, IFsimulator **simulator)
Definition: main.c:938
RETSIGTYPE sig_sys ( )
RETSIGTYPE sigbus ( )
RETSIGTYPE sigfloat ( )
RETSIGTYPE sigill ( )
RETSIGTYPE sigquit ( )
RETSIGTYPE sigsegv ( )
RETSIGTYPE sigstop ( )
int SIMinit ( IFfrontEnd frontEnd,
IFsimulator **  simulator 
)

Definition at line 938 of file main.c.

942 {
943  return (SPIinit(frontEnd,simulator));
944 }
int SPIinit(IFfrontEnd *frtEnd, IFsimulator **description)
Definition: main.c:920
int SPIinit ( IFfrontEnd frtEnd,
IFsimulator **  description 
)

Definition at line 920 of file main.c.

924 {
925 
926  SPfrontEnd = frtEnd;
927  *description = &SIMinfo;
928  CONSTroot2 = sqrt(2.);
929  CONSTvt0 = CONSTboltz * (27 /* deg c */ + CONSTCtoK ) / CHARGE;
931  CONSTe = exp((double)1.0);
932  return (OK);
933 }
double CONSTroot2
Definition: main.c:913
#define CONSTCtoK
Definition: const.h:11
#define CHARGE
Definition: const.h:10
IFsimulator SIMinfo
Definition: nconfig.c:12
IFfrontEnd * SPfrontEnd
Definition: main.c:917
double CONSTKoverQ
Definition: main.c:915
#define OK
Definition: iferrmsg.h:17
double CONSTe
Definition: main.c:916
#define CONSTboltz
Definition: const.h:12
double CONSTvt0
Definition: main.c:914
static void textcursor ( int  x,
int  y 
)
static

Definition at line 272 of file main.c.

275 {
276  DevBox(x,y-1,x+FontWidth,y+CURHT);
277 }
#define CURHT
Definition: main.c:268
#define FontWidth
Definition: main.c:269
void DevBox()

Variable Documentation

double CONSTe

Definition at line 916 of file main.c.

double CONSTKoverQ

Definition at line 915 of file main.c.

double CONSTroot2

Definition at line 913 of file main.c.

double CONSTvt0

Definition at line 914 of file main.c.

struct comm* cp_coms = nutcp_coms

Definition at line 163 of file main.c.

char* cp_display

Definition at line 44 of file main.c.

char* cp_program

Definition at line 43 of file main.c.

struct dbcomm* dbiplot = NULL

Definition at line 186 of file main.c.

char* errMsg

Definition at line 42 of file main.c.

char* errRtn

Definition at line 41 of file main.c.

struct options* exitoption

Definition at line 103 of file main.c.

bool ft_acctprint

Definition at line 191 of file main.c.

bool ft_batchmode = false

Definition at line 98 of file main.c.

struct circ* ft_circuits

Definition at line 185 of file main.c.

struct circ* ft_curckt

Definition at line 184 of file main.c.

bool ft_intrpt = false

Definition at line 47 of file main.c.

bool ft_listprint

Definition at line 188 of file main.c.

bool ft_nodesprint

Definition at line 190 of file main.c.

bool ft_nutmeg = true

Definition at line 161 of file main.c.

bool ft_optsprint

Definition at line 189 of file main.c.

char* ft_rawfile = "rawspice.raw"

Definition at line 39 of file main.c.

struct sSCEDitf* ft_sced = &sc_itf

Definition at line 441 of file main.c.

bool ft_servermode = false

Definition at line 46 of file main.c.

bool ft_setflag = false

Definition at line 48 of file main.c.

IFsimulator* ft_sim

Definition at line 111 of file main.c.

struct options* helpoption

Definition at line 104 of file main.c.

char* hlp_filelist[] = {"spice", "sced", 0 }

Definition at line 116 of file main.c.

struct variable*(* if_getparam) ()

Definition at line 53 of file main.c.

jmp_buf jbuf

Definition at line 99 of file main.c.

struct comm nutcp_coms[]

Definition at line 21 of file nutctab.c.

IFfrontEnd nutmeginfo
static

Definition at line 164 of file main.c.

struct sSCEDitf sc_itf
static
Initial value:
=
{
NULL
}
#define NULL
Definition: spdefs.h:121

Definition at line 168 of file main.c.

IFsimulator SIMinfo

Definition at line 12 of file nconfig.c.

IFfrontEnd* SPfrontEnd = NULL

Definition at line 917 of file main.c.

started = false
static

Definition at line 110 of file main.c.

char* usage
static
Initial value:
=
"Usage: %s [-] [-b] [-i] [-s] [-n] [-o outfile] [-r rawfile]\n\
\t[-t term] [file ...]\n"

Definition at line 100 of file main.c.