Annotation of researchv10no/cmd/basic/bite/src/run.c, revision 1.1

1.1     ! root        1: /* Copyright Bell Telephone Laboratories Whippany, N.J.
        !             2: 
        !             3:  *     /////////////////////////////////////
        !             4:  *     /////////////////////////////////////
        !             5:  *     /////////////// run.c ///////////////
        !             6:  *     /// J. P. Hawkins WH X4610 8C-001 ///
        !             7:  *     ///// Fri Aug 24 17:29:21 1979 //////
        !             8:  *     /////////////////////////////////////
        !             9:  *     /////////////////////////////////////
        !            10: 
        !            11:  * RUN BASIC Program
        !            12:  */
        !            13: /*   "@(#) run.c:  V 1.1  12/21/80" */
        !            14: 
        !            15: #include       "bas.h"
        !            16: #define getout(X)\
        !            17:        signal(SIGINT, quit);\
        !            18:        stpflg=0;\
        !            19:        _comflg=0;\
        !            20:        if(X < 0)\
        !            21:                error(inst.thing.linno,15);\
        !            22:        return(X)
        !            23:        int runcnt = 0; /* nest count for run */
        !            24:        char *ptr;
        !            25: extern int stopl();
        !            26: extern int singst;
        !            27: extern int stpflg;
        !            28: extern int endfcnt;    /* structured "if" nest count */
        !            29: extern int forflg;     /* nested for count */
        !            30: extern int bflag,cflag;        /* break count */
        !            31: extern int quit();
        !            32: extern int _comflg;    /* common flag */
        !            33: run()
        !            34: {
        !            35:        singst = 32767;
        !            36:        endfcnt = 0;    /* initialize "if" nest count */
        !            37:        bflag = cflag = 0;
        !            38:        forflg = 0;
        !            39:        if(!(_comflg))  /* If "common" not issued between last &
        !            40:                                this invocation of "run" */
        !            41:                expunge();      /* de-allocate cariable stack and
        !            42:                                    symbol tables to keep memory optimum */
        !            43:                restore();
        !            44:        runcnt += 1;    /* bump nest count */
        !            45:        if(expr[0] != '\0')     /* if filename specified */
        !            46:        {
        !            47:                if(load() < 0)  /* load file before running */
        !            48:                {
        !            49:                        runcnt -= 1;    /* dec nest count */
        !            50:                        getout(-1); /* return if load error */
        !            51:                }
        !            52:        } else {
        !            53:                if(runcnt > 1)
        !            54:                {
        !            55:                        error(inst.thing.linno, 6);
        !            56:                        runcnt -= 1; /* dec nest count */
        !            57:                        getout(-1);
        !            58:                }
        !            59:        }
        !            60:        if(fetch(0,&ptr) < 0)   /* any lines? */
        !            61:        {
        !            62:                error(inst.thing.linno, 5);
        !            63:                runcnt -= 1;    /* dec nest count */
        !            64:                getout(0);      /* nop, can't do anything */
        !            65:        }
        !            66:        signal(SIGINT, stopl);
        !            67:        if(bascall(inst.thing.opcode.lobyte) == -1) /* execute first instruction */
        !            68:        {
        !            69:                runcnt -= 1;            /* dec nest count */
        !            70:                getout(-1);             /*  and return if error */
        !            71:        }
        !            72: 
        !            73:        /*
        !            74:         * fetch each instruction sequentially and execute
        !            75:         * until last line.
        !            76:         * Fetch sets up the xxxxx
        !            77:         */
        !            78:        while((fetch(-1,&ptr) == 0) && (stpflg == 0))
        !            79:                if(bascall(inst.thing.opcode.lobyte) == -1)
        !            80:                {
        !            81:                        runcnt -= 1; /* dec nest count */
        !            82:                        getout(-1);
        !            83:                }
        !            84:        runcnt -= 1;    /* dec nest count */
        !            85:        getout(0);
        !            86: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.