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

1.1     ! root        1: /* Copyright Bell Telephone Laboratories Whippany, N.J.
        !             2: 
        !             3:  *     ***********************************
        !             4:  *     ***********************************
        !             5:  *     ***** SINGLE STEP CONTROLLER ******
        !             6:  *     *** R. B. Drake WH 8C-005 X4163 ***
        !             7:  *     **** Sun Aug 26 11:35:49 1979 *****
        !             8:  *     ***********************************
        !             9:  *     ***********************************
        !            10: 
        !            11: */
        !            12: /*   "@(#) sing.c:  V 1.1  12/21/80" */
        !            13: 
        !            14: /* single step monitor */
        !            15: #include "bas.h"
        !            16: extern char _string[];
        !            17: extern int stpflg;
        !            18: int singst = 32767;
        !            19: int singflg;
        !            20: extern char *ptr;
        !            21: int stopl(),quit();
        !            22: sing()
        !            23: {
        !            24:        char *ch;
        !            25:        ch = expr;
        !            26:        singflg = -1; /* control from sing but not single stepping */
        !            27:        expunge();
        !            28:        restore();
        !            29:        signal(2,stopl);
        !            30:        if(fetch(0,&ptr) < 0)
        !            31:        {
        !            32:                error(0,5);
        !            33:                singflg = 0;
        !            34:                signal(2,quit);
        !            35:                return(-1);
        !            36:        }
        !            37:        if(ch[0] != '\0')
        !            38:                singst = atoi(ch);
        !            39:        else
        !            40:                singst = inst.thing.linno;
        !            41:        while(singex() == 0 && stpflg == 0)
        !            42:                if(fetch(-1,&ptr) < 0)
        !            43:                {
        !            44:                        singflg = 0; /* done single stepping */
        !            45:                        signal(SIGINT, quit);
        !            46:                         return(0);
        !            47:                }
        !            48:        singflg=stpflg=0;
        !            49:        signal(SIGINT, quit);
        !            50:        return(0);
        !            51: }
        !            52: extern int subog;
        !            53: singex()
        !            54: {
        !            55:        char *save;
        !            56:        int hold;
        !            57:        if(inst.thing.linno == singst)
        !            58:                singflg = 1;
        !            59:        if(singflg == 1)
        !            60:        {
        !            61:        save = expr;
        !            62:        prin();
        !            63:        expr = save;
        !            64:        hold = inst.thing.opcode.lobyte;
        !            65:        }
        !            66:        if(bascall(inst.thing.opcode.lobyte) != 0)
        !            67:                error(inst.thing.opcode.lobyte,15); /* execution error */
        !            68:        if(singflg == -1)
        !            69:                return(0);
        !            70:        if(hold == subog)
        !            71:                return(0);
        !            72:        return(singwt());
        !            73: }
        !            74: singwt()
        !            75: {
        !            76:        char *save;
        !            77:        if(singflg == 0) return(-1);
        !            78:        while(1)
        !            79:        {
        !            80:                printf("%c",'^');
        !            81:                if(fgets(_string,LINMAX,stdin) == 0) return(-1); /* ctl d */
        !            82:                if(_string[0] == '\n') return(0);
        !            83:                save = ptr;
        !            84:                bed((FILE *)0);
        !            85:                ptr = save;
        !            86:                if(singflg == -1) break;
        !            87:        }
        !            88:        return(0);
        !            89: }
        !            90: con()
        !            91: {
        !            92:        if(expr[0] != 0)
        !            93:                singst = atoi(expr);
        !            94:        else
        !            95:                singst = 32767;
        !            96:        singflg = -1;
        !            97: }

unix.superglobalmegacorp.com

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