コード例 #1
0
ファイル: vm.c プロジェクト: rcload/PL0-Compiler
//Execute cycle
void execute(FILE *ofp)
{
	fprintf(ofp, "%d\t%s\t%d\t%d\t", pc-1, opcodes[ir.op], ir.l, ir.m);
	switch( ir.op )
	{
		case 1 :
			LIT(ir.l, ir.m);
			break;
		case 2 :
			OPR(ir.l, ir.m);
			break;
		case 3 :
			LOD(ir.l, ir.m);
			break;
		case 4 :
			STO(ir.l, ir.m);
			break;
		case 5 :
			CAL(ir.l, ir.m);
			break;
		case 6 :
			INC(ir.l, ir.m);
			break;
		case 7 :
			JMP(ir.l, ir.m);
			break;
		case 8 :
			JPC(ir.l, ir.m);
			break;
		case 9 :
			SIO(ir.l, ir.m);
			break;
		case 10 :
			SIO(ir.l, ir.m);
			break;
		case 11 :
			SIO(ir.l, ir.m);
			break;
		
		default 	: 
			break;
	}
	fprintf(ofp, "%d\t%d\t%d\t", pc, bp, sp);
	
	int i = 1;
	int countAR = 0;
	for(i = 1; i <= sp; i++)
	{
		if(countAR < numAR && ar[countAR] < i)
		{	
			countAR++;
			fprintf(ofp, " |");
		}
		
		fprintf(ofp, " %d", stack[i]);
	}
	
	fprintf(ofp, "\n");
	
}
コード例 #2
0
ファイル: vm.c プロジェクト: cwalk/PL0-Compiler
//Execute Cycle Function: mimics execute, and contains code
//for each instruction in ISA, implemented in a switch.
//OPR is another function because it was better looking.
void executeCycle(instruction* irStruct, int* stack, int* sp, int* bp, int* pc) {

    switch(irStruct->op) {
        case 1: //LIT
            *sp=*sp+1;
            stack[*sp]=irStruct->m;
            break;
        case 2: //OPR function
            OPR(sp, bp, pc, stack, irStruct);
            break;
        case 3: //LOD
            *sp=*sp+1;
            stack[*sp]=stack[base(bp, irStruct, stack)+irStruct->m];
            break;
        case 4: //STO
            stack[base(bp, irStruct, stack)+irStruct->m]=stack[*sp];
            *sp=*sp-1;
            break;
        case 5: //CAL
            stack[*sp+1]=0; //space to return value
            stack[*sp+2]=base(bp, irStruct, stack); //static link (SL)
            stack[*sp+3]=*bp; //dynamic link (DL)
            stack[*sp+4]=*pc; //return address (RA)
            *bp=*sp+1;
            *pc=irStruct->m;
            break;
        case 6: //INC
            *sp=*sp+irStruct->m;
            break;
        case 7: //JMP
            *pc=irStruct->m;
            break;
        case 8: //JPC
            if (stack[*sp]==0) {
                *pc=irStruct->m;
            }
            *sp=*sp-1;
            break;
        case 9: //SIO1
            printf("%d\n", stack[*sp]);
            *sp=*sp-1;
            break;
        case 10: //SIO2
            *sp=*sp+1;
            scanf("%d", &stack[*sp]);
            break;
        default:
            printf("Illegal OPR!\n");
    }
}
コード例 #3
0
ファイル: ind.c プロジェクト: manasdas17/gnucap-a
Copyright 1990 Regents of the University of California.  All rights reserved.
Authors: 1985 Thomas L. Quarles
         1993 Stephen R. Whiteley
****************************************************************************/

#include "spice.h"
#include <stdio.h>
#include "inddefs.h"
#include "uflags.h"

static IFparm INDpTable[] = { /* parameters */ 
 IOPAP("inductance",IND_IND,    IF_REAL,"Inductance of inductor"),
 IOPAU("ic",        IND_IC,     IF_REAL,"Initial current through inductor"),
 OP(   "flux",      IND_FLUX,   IF_REAL,"Flux through inductor"),
 OP(   "v",         IND_VOLT,   IF_REAL,"Terminal voltage of inductor"),
 OPR(  "volt",      IND_VOLT,   IF_REAL,"Terminal voltage of inductor"),
 OP(   "i",         IND_CURRENT,IF_REAL,"Current through the inductor"),
 OPR(  "current",   IND_CURRENT,IF_REAL,"Current through the inductor"),
 OP(   "p",         IND_POWER,  IF_REAL,
                                "instantaneous power stored by the inductor")
};

/* model parameters */
/* static IFparm INDmPTable[] = { }; */

static char *INDnames[] = {
    "L+",
    "L-"
};

static IFkeys INDkeys[] = {
コード例 #4
0
ファイル: mos2.c プロジェクト: a-mehrabian/spice-buffer
#include "spice.h"
#include <stdio.h>
#include "devdefs.h"
#include "ifsim.h"
#include "mos2defs.h"
#include "suffix.h"

IFparm MOS2pTable[] = { /* parameters */ 
 IOPU("l",       MOS2_L,     IF_REAL   , "Length"),
 IOPU("w",       MOS2_W,     IF_REAL   , "Width"),
 IOPU("ad",      MOS2_AD,    IF_REAL   , "Drain area"),
 IOPU("as",      MOS2_AS,    IF_REAL   , "Source area"),
 IOPU("pd",      MOS2_PD,    IF_REAL   , "Drain perimeter"),
 IOPU("ps",      MOS2_PS,    IF_REAL   , "Source perimeter"),
 OP( "id",          MOS2_CD,          IF_REAL,"Drain current"),
 OPR( "cd",          MOS2_CD,          IF_REAL,""),
 OP( "ibd",     MOS2_CBD,   IF_REAL,    "B-D junction current"),
 OP( "ibs",     MOS2_CBS,   IF_REAL,    "B-S junction current"),
 OP( "is",      MOS2_CS,    IF_REAL,    "Source current "),
 OP( "ig",      MOS2_CG,    IF_REAL,    "Gate current "),
 OP( "ib",      MOS2_CB,    IF_REAL,    "Bulk current "),
 OP( "vgs",     MOS2_VGS,   IF_REAL,    "Gate-Source voltage"),
 OP( "vds",     MOS2_VDS,   IF_REAL,    "Drain-Source voltage"),
 OP( "vbs",     MOS2_VBS,   IF_REAL,    "Bulk-Source voltage"),
 OPU( "vbd",     MOS2_VBD,   IF_REAL,    "Bulk-Drain voltage"),
 IOPU("nrd",     MOS2_NRD,   IF_REAL   , "Drain squares"),
 IOPU("nrs",     MOS2_NRS,   IF_REAL   , "Source squares"),
 IP("off",      MOS2_OFF,   IF_FLAG   , "Device initially off"),
 IOPAU("icvds",     MOS2_IC_VDS,IF_REAL   , "Initial D-S voltage"),
 IOPAU("icvgs",     MOS2_IC_VGS,IF_REAL   , "Initial G-S voltage"),
 IOPAU("icvbs",     MOS2_IC_VBS,IF_REAL   , "Initial B-S voltage"),
コード例 #5
0
ファイル: mos1.c プロジェクト: aesop972/ngspice-gss
 OPU( "dnodeprime", MOS1_DNODEPRIME, IF_INTEGER, "Number of int. drain node"),
 OPU( "snodeprime", MOS1_SNODEPRIME, IF_INTEGER, "Number of int. source node "),

 OP( "von",          MOS1_VON,        IF_REAL,    " "),
 OP( "vdsat",        MOS1_VDSAT,      IF_REAL,    "Saturation drain voltage"),
 OPU( "sourcevcrit",  MOS1_SOURCEVCRIT,IF_REAL,    "Critical source voltage"),
 OPU( "drainvcrit",   MOS1_DRAINVCRIT, IF_REAL,    "Critical drain voltage"),
 OP( "rs", MOS1_SOURCERESIST, IF_REAL, "Source resistance"),
 OPU("sourceconductance", MOS1_SOURCECONDUCT, IF_REAL, "Conductance of source"),
 OP( "rd",  MOS1_DRAINRESIST,  IF_REAL, "Drain conductance"),
 OPU("drainconductance",  MOS1_DRAINCONDUCT,  IF_REAL, "Conductance of drain"),

 OP( "gm",           MOS1_GM,         IF_REAL,    "Transconductance"),
 OP( "gds",          MOS1_GDS,        IF_REAL,    "Drain-Source conductance"),
 OP( "gmb",     MOS1_GMBS,   IF_REAL,    "Bulk-Source transconductance"),
 OPR( "gmbs",     MOS1_GMBS,   IF_REAL,    ""),
 OPU( "gbd",          MOS1_GBD,        IF_REAL,    "Bulk-Drain conductance"),
 OPU( "gbs",          MOS1_GBS,        IF_REAL,    "Bulk-Source conductance"),

 OP( "cbd",        MOS1_CAPBD,      IF_REAL,    "Bulk-Drain capacitance"),
 OP( "cbs",        MOS1_CAPBS,      IF_REAL,    "Bulk-Source capacitance"),
 OP( "cgs",        MOS1_CAPGS,      IF_REAL,    "Gate-Source capacitance"),
 OP( "cgd",        MOS1_CAPGD,      IF_REAL,    "Gate-Drain capacitance"),
 OP( "cgb",        MOS1_CAPGB,      IF_REAL,    "Gate-Bulk capacitance"),

 OPU( "cqgs",MOS1_CQGS,IF_REAL,"Capacitance due to gate-source charge storage"),
 OPU( "cqgd",MOS1_CQGD,IF_REAL,"Capacitance due to gate-drain charge storage"),
 OPU( "cqgb",MOS1_CQGB,IF_REAL,"Capacitance due to gate-bulk charge storage"),
 OPU( "cqbd",MOS1_CQBD,IF_REAL,"Capacitance due to bulk-drain charge storage"),
 OPU( "cqbs",MOS1_CQBS,IF_REAL,"Capacitance due to bulk-source charge storage"),
コード例 #6
0
ファイル: numd.c プロジェクト: aesop972/ngspice-gss
  IP("print", NUMD_PRINT, IF_REAL, "Print Solutions"),
  OP("vd", NUMD_VD, IF_REAL, "Voltage"),
  OP("id", NUMD_ID, IF_REAL, "Current"),
  OP("g11", NUMD_G11, IF_REAL, "Conductance"),
  OP("c11", NUMD_C11, IF_REAL, "Capacitance"),
  OP("y11", NUMD_Y11, IF_COMPLEX, "Admittance"),
  OPU("g12", NUMD_G12, IF_REAL, "Conductance"),
  OPU("c12", NUMD_C12, IF_REAL, "Capacitance"),
  OPU("y12", NUMD_Y12, IF_COMPLEX, "Admittance"),
  OPU("g21", NUMD_G21, IF_REAL, "Conductance"),
  OPU("c21", NUMD_C21, IF_REAL, "Capacitance"),
  OPU("y21", NUMD_Y21, IF_COMPLEX, "Admittance"),
  OPU("g22", NUMD_G22, IF_REAL, "Conductance"),
  OPU("c22", NUMD_C22, IF_REAL, "Capacitance"),
  OPU("y22", NUMD_Y22, IF_COMPLEX, "Admittance"),
  OPR("voltage", NUMD_VD, IF_REAL, "Voltage"),
  OPR("current", NUMD_ID, IF_REAL, "Current"),
  OPR("conductance", NUMD_G11, IF_REAL, "Conductance"),
  OPR("capacitance", NUMD_C11, IF_REAL, "Capacitance"),
  IOP("temp", NUMD_TEMP, IF_REAL, "Instance Temperature")
};

IFparm NUMDmPTable[] = {	/* model parameters */
  /* numerical-device models no longer have parameters */
  /* one is left behind to keep the table from being empty */
  IP("numd", NUMD_MOD_NUMD, IF_REAL, "Numerical Diode")
};

char *NUMDnames[] = {
  "D+",
  "D-"
コード例 #7
0
ファイル: convolute.c プロジェクト: jalkanen/ppt
int GetConvArgs( FRAME *frame, struct TagItem *tags, struct PPTBase *xd, struct convargs *cargs )
{
    Object *Win, *wtgroup, *weights[7][7], *Bias, *Frq, *Name, *Div;
    ULONG sigmask, sig, rc;
    int quit = FALSE, res = PERR_OK,i,j;
    struct Window *win;
    struct IntuitionBase *IntuitionBase = xd->lb_Intuition;
    struct ExecBase *SysBase = xd->lb_Sys;
    struct Library *BGUIBase = xd->lb_BGUI;
    char *name = "Unknown";

#ifdef DEBUG_MODE
    PDebug("\tCreating window object\n");
#endif

    Win = WindowObject,
        WINDOW_Screen,    xd->g->maindisp->scr,
        WINDOW_Title,     frame->nd.ln_Name,
        WINDOW_Font,      xd->g->userprefs->mainfont,
        WINDOW_ScreenTitle, "Convolute Tool",
        WINDOW_ScaleWidth, 20,
        WINDOW_MenuStrip, Menus,
        TAG_SKIP,         (cargs->winpos.Height == 0) ? 1 : 0,
        WINDOW_Bounds,    &(cargs->winpos),
        WINDOW_NoBufferRP, TRUE,
        WINDOW_MasterGroup,
            VGroupObject, Spacing(4), HOffset(6), VOffset(4),
                StartMember,
                    Name = InfoFixed("Name:","",NULL,1),
                EndMember,
                StartMember,
                    HGroupObject, Spacing(4), HOffset(4),
                        StartMember,
                            /* Grid */
                            wtgroup = VGroupObject,
                                StartMember,
                                    HGroupObject,
                                        StartMember,
                                            weights[0][0] = Integer(NULL,0,3,GID_W00),
                                        EndMember,
                                        StartMember,
                                            weights[0][1] = Integer(NULL,0,3,GID_W01),
                                        EndMember,
                                        StartMember,
                                            weights[0][2] = Integer(NULL,0,3,GID_W02),
                                        EndMember,
                                        StartMember,
                                            weights[0][3] = Integer(NULL,0,3,GID_W03),
                                        EndMember,
                                        StartMember,
                                            weights[0][4] = Integer(NULL,0,3,GID_W04),
                                        EndMember,
                                        StartMember,
                                            weights[0][5] = Integer(NULL,0,3,GID_W05),
                                        EndMember,
                                        StartMember,
                                            weights[0][6] = Integer(NULL,0,3,GID_W06),
                                        EndMember,
                                    EndObject,
                                EndMember,
                                StartMember,
                                    HGroupObject,
                                        StartMember,
                                            weights[1][0] = Integer(NULL,0,3,GID_W10),
                                        EndMember,
                                        StartMember,
                                            weights[1][1] = Integer(NULL,0,3,GID_W11),
                                        EndMember,
                                        StartMember,
                                            weights[1][2] = Integer(NULL,0,3,GID_W12),
                                        EndMember,
                                        StartMember,
                                            weights[1][3] = Integer(NULL,0,3,GID_W13),
                                        EndMember,
                                        StartMember,
                                            weights[1][4] = Integer(NULL,0,3,GID_W14),
                                        EndMember,
                                        StartMember,
                                            weights[1][5] = Integer(NULL,0,3,GID_W15),
                                        EndMember,
                                        StartMember,
                                            weights[1][6] = Integer(NULL,0,3,GID_W16),
                                        EndMember,
                                    EndObject,
                                EndMember,
                                StartMember,
                                    HGroupObject,
                                        StartMember,
                                            weights[2][0] = Integer(NULL,0,3,GID_W20),
                                        EndMember,
                                        StartMember,
                                            weights[2][1] = Integer(NULL,0,3,GID_W21),
                                        EndMember,
                                        StartMember,
                                            weights[2][2] = Integer(NULL,0,3,GID_W22),
                                        EndMember,
                                        StartMember,
                                            weights[2][3] = Integer(NULL,0,3,GID_W23),
                                        EndMember,
                                        StartMember,
                                            weights[2][4] = Integer(NULL,0,3,GID_W24),
                                        EndMember,
                                        StartMember,
                                            weights[2][5] = Integer(NULL,0,3,GID_W25),
                                        EndMember,
                                        StartMember,
                                            weights[2][6] = Integer(NULL,0,3,GID_W26),
                                        EndMember,
                                    EndObject,
                                EndMember,
                                StartMember,
                                    HGroupObject,
                                        StartMember,
                                            weights[3][0] = Integer(NULL,0,3,GID_W30),
                                        EndMember,
                                        StartMember,
                                            weights[3][1] = Integer(NULL,0,3,GID_W31),
                                        EndMember,
                                        StartMember,
                                            weights[3][2] = Integer(NULL,0,3,GID_W32),
                                        EndMember,
                                        StartMember,
                                            weights[3][3] = Integer(NULL,1,3,GID_W33),
                                        EndMember,
                                        StartMember,
                                            weights[3][4] = Integer(NULL,0,3,GID_W34),
                                        EndMember,
                                        StartMember,
                                            weights[3][5] = Integer(NULL,0,3,GID_W35),
                                        EndMember,
                                        StartMember,
                                            weights[3][6] = Integer(NULL,0,3,GID_W36),
                                        EndMember,
                                    EndObject,
                                EndMember,
                                StartMember,
                                    HGroupObject,
                                        StartMember,
                                            weights[4][0] = Integer(NULL,0,3,GID_W40),
                                        EndMember,
                                        StartMember,
                                            weights[4][1] = Integer(NULL,0,3,GID_W41),
                                        EndMember,
                                        StartMember,
                                            weights[4][2] = Integer(NULL,0,3,GID_W42),
                                        EndMember,
                                        StartMember,
                                            weights[4][3] = Integer(NULL,0,3,GID_W43),
                                        EndMember,
                                        StartMember,
                                            weights[4][4] = Integer(NULL,0,3,GID_W44),
                                        EndMember,
                                        StartMember,
                                            weights[4][5] = Integer(NULL,0,3,GID_W45),
                                        EndMember,
                                        StartMember,
                                            weights[4][6] = Integer(NULL,0,3,GID_W46),
                                        EndMember,
                                    EndObject,
                                EndMember,
                                StartMember,
                                    HGroupObject,
                                        StartMember,
                                            weights[5][0] = Integer(NULL,0,3,GID_W50),
                                        EndMember,
                                        StartMember,
                                            weights[5][1] = Integer(NULL,0,3,GID_W51),
                                        EndMember,
                                        StartMember,
                                            weights[5][2] = Integer(NULL,0,3,GID_W52),
                                        EndMember,
                                        StartMember,
                                            weights[5][3] = Integer(NULL,0,3,GID_W53),
                                        EndMember,
                                        StartMember,
                                            weights[5][4] = Integer(NULL,0,3,GID_W54),
                                        EndMember,
                                        StartMember,
                                            weights[5][5] = Integer(NULL,0,3,GID_W55),
                                        EndMember,
                                        StartMember,
                                            weights[5][6] = Integer(NULL,0,3,GID_W56),
                                        EndMember,
                                    EndObject,
                                EndMember,
                                StartMember,
                                    HGroupObject,
                                        StartMember,
                                            weights[6][0] = Integer(NULL,0,3,GID_W60),
                                        EndMember,
                                        StartMember,
                                            weights[6][1] = Integer(NULL,0,3,GID_W61),
                                        EndMember,
                                        StartMember,
                                            weights[6][2] = Integer(NULL,0,3,GID_W62),
                                        EndMember,
                                        StartMember,
                                            weights[6][3] = Integer(NULL,0,3,GID_W63),
                                        EndMember,
                                        StartMember,
                                            weights[6][4] = Integer(NULL,0,3,GID_W64),
                                        EndMember,
                                        StartMember,
                                            weights[6][5] = Integer(NULL,0,3,GID_W65),
                                        EndMember,
                                        StartMember,
                                            weights[6][6] = Integer(NULL,0,3,GID_W66),
                                        EndMember,
                                    EndObject,
                                EndMember,
                                StartMember,
                                    HGroupObject, Spacing(4),
                                        StartMember,
                                            Bias = Integer("Bias:",0,4,GID_BIAS),
                                        EndMember,
                                        StartMember,
                                            Div = Integer("Div:",1,4,GID_DIV),
                                        EndMember,
                                    EndObject,
                                EndMember,
                            EndObject, Weight(75),
                        EndMember,
                        StartMember,
                            VGroupObject, Spacing(4),
                                StartMember,
                                    XenButton("Load",GID_LOAD),
                                EndMember,
                                StartMember,
                                    XenButton("Save",GID_SAVE),
                                EndMember,
                                StartMember,
                                    XenButton("Clear",GID_CLEAR),
                                EndMember,
                                StartMember,
                                    XenButton("Convolute!",GID_OK),
                                EndMember,
                                StartMember,
                                    XenButton("Cancel",GID_CANCEL),
                                EndMember,
                            EndObject, Weight(10),
                        EndMember,
                    EndObject,
                EndMember,
            EndObject, /* MasterVGroup */
        EndObject; /* Window */

    if(Win) {
#ifdef DEBUG_MODE
        PDebug("\tSucceeded in creating window\n");
#endif

        for(i = 0; i < 7; i++) {
            for(j = 0; j < 7; j++) {
                SetGadgetAttrs( (struct Gadget *)weights[i][j], NULL, NULL,
                                STRINGA_LongVal, cargs->weights[i][j], TAG_DONE );
            }
        }
        SetGadgetAttrs( (struct Gadget *)Bias, NULL, NULL, STRINGA_LongVal, cargs->bias, TAG_DONE);
        SetGadgetAttrs( (struct Gadget *)Div, NULL, NULL, STRINGA_LongVal, cargs->div, TAG_DONE);
        SetGadgetAttrs( (struct Gadget *)Name, NULL, NULL, INFO_TextFormat, cargs->name, TAG_DONE);

        if( win = WindowOpen( Win ) ) {
#ifdef DEBUG_MODE
            PDebug("\tOpened window OK\n");
#endif
            Frq = FileReqObject,
                    ASLFR_Window, win,
                    ASLFR_SleepWindow, TRUE,
                    ASLFR_InitialDrawer, "PROGDIR:modules/convolutions",
                    ASLFR_InitialPattern,"~(#?.info)",
                  EndObject;
            GetAttr( WINDOW_SigMask, Win, &sigmask );

            while(!quit) {
                sig = Wait(sigmask | SIGBREAKF_CTRL_C | SIGBREAKF_CTRL_F);

                /*
                 *  Break signal
                 */

                if( sig & SIGBREAKF_CTRL_C ) {
                    quit = TRUE;
                    res = PERR_BREAK;
                }

                if( sig & SIGBREAKF_CTRL_F ) {
                    WindowToFront( win );
                    ActivateWindow( win );
                }

                /*
                 *  Gadget message
                 */

                if( sig & sigmask ) {
                    while(( rc = HandleEvent( Win )) != WMHI_NOMORE ) {
                        struct TagItem clrtable[] = { STRINGA_LongVal, 0, TAG_END };
                        struct TagItem nonametable[] = { INFO_TextFormat, (ULONG)"unnamed", TAG_END };
                        struct TagItem settable[] = {STRINGA_LongVal, 0, TAG_END };
                        struct TagItem frqloadtable[] = {ASLFR_DoSaveMode, FALSE, TAG_END };
                        struct TagItem newnametable[] = {INFO_TextFormat, NULL, TAG_END };
                        struct TagItem frqsavetable[] = {ASLFR_DoSaveMode, TRUE, TAG_END };
                        struct TagItem nametable[] = {INFO_TextFormat, NULL, TAG_END };
                        int id;

                        switch(rc) {
                            case WMHI_CLOSEWINDOW:
                            case GID_CANCEL:
                                res = PERR_CANCELED;
                                quit = TRUE;
                                WindowClose(Win);
                                break;

                            case GID_CLEAR:
                                WindowBusy(Win);
                                clrtable[0].ti_Data = 0;
                                SetGadgetAttrsA( (struct Gadget *)Bias, win, NULL, clrtable);
                                for(i = 0; i < 7; i++) {
                                    for(j = 0; j < 7; j++) {
                                        SetGadgetAttrsA( (struct Gadget *)weights[i][j], win,
                                                         NULL, clrtable );
                                        cargs->weights[i][j] = 0;
                                    }
                                }
                                clrtable[0].ti_Data = 1; /* For Divisor & Middle value. */

                                SetGadgetAttrsA( (struct Gadget *)weights[3][3], win,
                                                 NULL, clrtable );
                                cargs->weights[3][3] = 1;

                                clrtable[0].ti_Data = 1; /* For Divisor */
                                SetGadgetAttrsA( (struct Gadget *)Div, win, NULL, clrtable);
                                SetGadgetAttrsA( (struct Gadget *) Name, win, NULL, nonametable);
                                WindowReady(Win);
                                break;

                            case GID_LOAD:
                                SetAttrsA( Frq, frqloadtable );
                                if(DoRequest( Frq ) == FRQ_OK) {
                                    GetAttr( FRQ_Path, Frq, (ULONG *)&name );
                                    WindowBusy(Win);
                                    if(LoadConvFilter( xd, name, cargs ) == PERR_OK ) {
                                        for(i = 0; i < 7; i++) {
                                            for(j = 0; j < 7; j++) {
                                                settable[0].ti_Data = cargs->weights[i][j];
                                                SetGadgetAttrsA( (struct Gadget *)weights[i][j], win,
                                                    NULL, settable );
                                            }
                                        }
                                        settable[0].ti_Data = cargs->bias;
                                        SetGadgetAttrsA( (struct Gadget *)Bias, win, NULL, settable);
                                        settable[0].ti_Data = cargs->div;
                                        SetGadgetAttrsA( (struct Gadget *)Div, win, NULL, settable);
                                        GetAttr( FRQ_File, Frq, (ULONG *) &newnametable[0].ti_Data );
                                        SetGadgetAttrsA( (struct Gadget *) Name, win, NULL, newnametable);
                                    }
                                    WindowReady(Win);
                                }
                                break;

                            case GID_SAVE:
                                SetAttrsA( Frq, frqsavetable );
                                if(DoRequest(Frq) == FRQ_OK) {
                                    WindowBusy(Win);
                                    GetAttr( FRQ_Path, Frq, (ULONG *)&name );
                                    for(i = 0; i < 7; i++) {
                                        for(j = 0; j < 7; j++) {
                                            GetAttr( STRINGA_LongVal, weights[i][j], (ULONG *) &(cargs->weights[i][j]) );
                                        }
                                    }
                                    GetAttr( STRINGA_LongVal, Bias, (ULONG *) &(cargs->bias));
                                    GetAttr( STRINGA_LongVal, Div, (ULONG *) &(cargs->div));
                                    SaveConvFilter( xd, name, cargs );
                                    GetAttr( FRQ_File, Frq, &nametable[0].ti_Data );
                                    SetGadgetAttrsA( (struct Gadget *) Name, win, NULL, nametable);
                                    WindowReady(Win);
                                }
                                break;

                            case GID_OK:
                                GetAttr( STRINGA_LongVal, Bias, (ULONG *) &(cargs->bias));
                                GetAttr( STRINGA_LongVal, Div, (ULONG *) &(cargs->div));
                                GetAttr( WINDOW_Bounds, Win, (ULONG *) &(cargs->winpos) );
                                if( cargs->div != 0 ) {
                                    WindowClose(Win);
                                    for(i = 0; i < 7; i++) {
                                        for(j = 0; j < 7; j++) {
                                            GetAttr( STRINGA_LongVal, weights[i][j], (ULONG *) &(cargs->weights[i][j]) );
                                        }
                                    }
                                    GetAttr( STRINGA_LongVal, Bias, (ULONG *) &(cargs->bias));
                                    GetAttr( STRINGA_LongVal, Div, (ULONG *) &(cargs->div));
                                    strncpy( cargs->name, name, 40 );
                                    res = PERR_OK;
                                    quit = TRUE;
                                }
                                break;

                            default:

                                if(rc >= OPR(0) && rc <= OPR(1000)) { /* It's a default opr */
                                    WindowBusy(Win);
                                    for(id = 0; presets[id].id != rc && presets[id].id != 0L; id++); /* Fetch correct area. */
                                    if(presets[id].id) {
                                        for(i = 0; i < 7; i++) {
                                            for(j = 0; j < 7; j++) {
                                                settable[0].ti_Data = cargs->weights[i][j] = presets[id].weights[i][j];
                                                SetGadgetAttrsA( (struct Gadget *)weights[i][j], win,
                                                    NULL, settable );
                                            }
                                        }
                                        settable[0].ti_Data = cargs->bias = presets[id].bias;
                                        SetGadgetAttrsA( (struct Gadget *)Bias, win, NULL, settable);
                                        settable[0].ti_Data = cargs->div = presets[id].div;
                                        SetGadgetAttrsA( (struct Gadget *)Div,  win, NULL, settable);
                                        newnametable[0].ti_Data = name = (ULONG)presets[id].name;
                                        SetGadgetAttrsA( (struct Gadget *)Name, win, NULL, newnametable);
                                    }
#ifdef DEBUG_MODE
                                    else {
                                        PDebug("Serious software error!!!\n");
                                    }
#endif
                                    WindowReady(Win);
                                }
                                break;

                        } /* switch */
                    } /* while */
                } /* sig & sigmask */

            } /* while(!quit) */

            DisposeObject(Win);
            DisposeObject(Frq);
        } else {
#ifdef DEBUG_MODE
            PDebug("\tFailed to get window\n");
#endif
            DisposeObject(Win);
            return PERR_WONTOPEN;
        }
    } else {
#ifdef DEBUG_MODE
        PDebug("\tFailed to get window object\n");
#endif
        return PERR_WONTOPEN;
    }

    return res;
}
コード例 #8
0
ファイル: ind.c プロジェクト: a-mehrabian/spice-buffer
#include "spice.h"
#include "devdefs.h"
#include "ifsim.h"
#include <stdio.h>
#include "inddefs.h"
#include "suffix.h"

IFparm INDpTable[] = { /* parameters */ 
 IOPAP("inductance",IND_IND,    IF_REAL,"Inductance of inductor"),
 IOPAU("ic",        IND_IC,     IF_REAL,"Initial current through inductor"),
 IP( "sens_ind", IND_IND_SENS,IF_FLAG,
        "flag to request sensitivity WRT inductance"),
 OP( "flux",      IND_FLUX,   IF_REAL,"Flux through inductor"),
 OP( "v",         IND_VOLT,   IF_REAL,"Terminal voltage of inductor"),
 OPR("volt",      IND_VOLT,   IF_REAL,""),
 OP( "i",   	  IND_CURRENT,IF_REAL,"Current through the inductor"),
 OPR( "current",  IND_CURRENT,IF_REAL,""),
 OP( "p",         IND_POWER,  IF_REAL,
        "instantaneous power dissipated by the inductor"),
 OPU( "sens_dc", IND_QUEST_SENS_DC,     IF_REAL, "dc sensitivity sensitivity"),
 OPU( "sens_real", IND_QUEST_SENS_REAL, IF_REAL, "real part of ac sensitivity"),
 OPU( "sens_imag", IND_QUEST_SENS_IMAG, IF_REAL, 
        "dc sensitivity and imag part of ac sensitivty"),
 OPU( "sens_mag",  IND_QUEST_SENS_MAG,  IF_REAL, "sensitivity of AC magnitude"),
 OPU( "sens_ph",   IND_QUEST_SENS_PH,   IF_REAL, "sensitivity of AC phase"),
 OPU( "sens_cplx", IND_QUEST_SENS_CPLX, IF_COMPLEX,    "ac sensitivity")
};

char *INDnames[] = {
    "L+",
コード例 #9
0
ファイル: mos3.c プロジェクト: philm001/Omni-FEM
#include "mos3defs.h"
#include "suffix.h"

/*
	MOS Model - Most complicated and most accurate
*/

IFparm MOS3pTable[] = { /* parameters */
    IOPU("l",         MOS3_L,       IF_REAL   , "Length"),
    IOPU("w",         MOS3_W,       IF_REAL   , "Width"),
    IOPU("ad",        MOS3_AD,      IF_REAL   , "Drain area"),
    IOPU("as",        MOS3_AS,      IF_REAL   , "Source area"),
    IOPU("pd",        MOS3_PD,      IF_REAL   , "Drain perimeter"),
    IOPU("ps",        MOS3_PS,      IF_REAL   , "Source perimeter"),
    OP("id",    MOS3_CD,            IF_REAL, "Drain current"),
    OPR("cd",    MOS3_CD,            IF_REAL, "Drain current"),
    OPU("ibd",   MOS3_CBD,           IF_REAL, "B-D junction current"),
    OPU("ibs",   MOS3_CBS,           IF_REAL, "B-S junction current"),
    OPU("is",   MOS3_CS,    IF_REAL, "Source current"),
    OPU("ig",   MOS3_CG,    IF_REAL, "Gate current"),
    OPU("ib",   MOS3_CB,    IF_REAL, "Bulk current"),
    OP("vgs",   MOS3_VGS,            IF_REAL, "Gate-Source voltage"),
    OP("vds",   MOS3_VDS,            IF_REAL, "Drain-Source voltage"),
    OP("vbs",   MOS3_VBS,            IF_REAL, "Bulk-Source voltage"),
    OPU("vbd",   MOS3_VBD,            IF_REAL, "Bulk-Drain voltage"),
    IOPU("nrd",       MOS3_NRD,     IF_REAL   , "Drain squares"),
    IOPU("nrs",       MOS3_NRS,     IF_REAL   , "Source squares"),
    IP("off",        MOS3_OFF,     IF_FLAG   , "Device initially off"),
    IOPAU("icvds",       MOS3_IC_VDS,  IF_REAL   , "Initial D-S voltage"),
    IOPAU("icvgs",       MOS3_IC_VGS,  IF_REAL   , "Initial G-S voltage"),
    IOPAU("icvbs",       MOS3_IC_VBS,  IF_REAL   , "Initial B-S voltage"),
コード例 #10
0
ファイル: dio.c プロジェクト: manasdas17/gnucap-a
Copyright 1990 Regents of the University of California.  All rights reserved.
Authors: 1985 Thomas L. Quarles
         1993 Stephen R. Whiteley
****************************************************************************/

#include "spice.h"
#include <stdio.h>
#include "diodefs.h"
#include "uflags.h"

static IFparm DIOpTable[] = { /* parameters */ 
 IOPU( "area",    DIO_AREA,   IF_REAL, "Area factor"),
 IOPAU("ic",      DIO_IC,     IF_REAL, "Initial device voltage"),
 IOPU( "off",     DIO_OFF,    IF_FLAG, "Initially off"),
 OP(   "id",      DIO_CURRENT,IF_REAL, "Diode current"),
 OPR(  "c",       DIO_CURRENT,IF_REAL, "Diode current"),
 OP(   "vd",      DIO_VOLTAGE,IF_REAL, "Diode voltage"),
 OPR(  "voltage", DIO_VOLTAGE,IF_REAL, "Diode voltage"),
 OPU(  "charge",  DIO_CHARGE, IF_REAL, "Diode capacitor charge"),
 OPU(  "capcur",  DIO_CAPCUR, IF_REAL, "Diode capacitor current"),
 OP(   "gd",      DIO_CONDUCT,IF_REAL, "Diode conductance"),
 OPU(  "p",       DIO_POWER,  IF_REAL, "Diode power"),
 IOPU( "temp",    DIO_TEMP,   IF_REAL, "Instance temperature"),
 OP(   "cd",      DIO_CAP,    IF_REAL, "Diode capacitance")
};

static IFparm DIOmPTable[] = { /* model parameters */
 IOP( "is",  DIO_MOD_IS,  IF_REAL, "Saturation current"),
 IOP( "rs",  DIO_MOD_RS,  IF_REAL, "Ohmic resistance"),
 IOP( "n",   DIO_MOD_N,   IF_REAL, "Emission Coefficient"),
 IOPA("tt",  DIO_MOD_TT,  IF_REAL, "Transit Time"),