Annotation of 3BSD/cmd/adb/main.c, revision 1.1.1.1

1.1       root        1: #
                      2: /*
                      3:  *
                      4:  *     UNIX debugger
                      5:  *
                      6:  */
                      7: 
                      8: #include "defs.h"
                      9: SCCSID(@(#)main.c      2.2);
                     10: 
                     11: 
                     12: MSG            NOEOR;
                     13: 
                     14: INT            mkfault;
                     15: INT            executing;
                     16: INT            infile;
                     17: CHAR           *lp;
                     18: L_INT          maxoff;
                     19: L_INT          maxpos;
                     20: ADDR           sigint;
                     21: ADDR           sigqit;
                     22: INT            wtflag;
                     23: L_INT          maxfile;
                     24: L_INT          maxstor;
                     25: L_INT          txtsiz;
                     26: L_INT          datsiz;
                     27: L_INT          datbas;
                     28: L_INT          stksiz;
                     29: STRING         errflg;
                     30: L_INT          exitflg;
                     31: INT            magic;
                     32: L_INT          entrypt;
                     33: 
                     34: CHAR           lastc;
                     35: INT            eof;
                     36: 
                     37: INT            lastcom;
                     38: L_INT          var[36];
                     39: STRING         symfil;
                     40: STRING         corfil;
                     41: CHAR           printbuf[];
                     42: CHAR           *printptr;
                     43: 
                     44: 
                     45: L_INT
                     46: round(a,b)
                     47: REG L_INT a, b;
                     48: {
                     49:        REG L_INT w;
                     50:        w = (a/b)*b;
                     51:        IF a!=w THEN w += b; FI
                     52:        return(w);
                     53: }
                     54: 
                     55: /* error handling */
                     56: 
                     57: chkerr()
                     58: {
                     59:        IF errflg ORF mkfault
                     60:        THEN    error(errflg);
                     61:        FI
                     62: }
                     63: 
                     64: error(n)
                     65:        STRING          n;
                     66: {
                     67:        errflg=n;
                     68:        iclose(); oclose();
                     69: #ifndef EDDT
                     70:        reset();
                     71: #endif
                     72: }
                     73: 
                     74: fault(a)
                     75: {
                     76:        signal(a,fault);
                     77: #ifndef EDDT
                     78:        lseek(infile,0L,2);
                     79: #endif
                     80:        mkfault++;
                     81: }
                     82: 
                     83: /* set up files and initial address mappings */
                     84: INT argcount;
                     85: 
                     86: #ifndef EDDT
                     87: main(argc, argv)
                     88: #else
                     89: eddt(argc, argv)
                     90: #endif
                     91: REG STRING     *argv;
                     92: REG INT                argc;
                     93: {
                     94:        maxfile=1L<<24; maxstor=1L<<31;
                     95:        mkioptab();
                     96: 
                     97:        WHILE argc>1
                     98:        DO      IF eqstr("-w",argv[1])
                     99:                THEN    wtflag=2; argc--; argv++;
                    100:                ELSE    break;
                    101:                FI
                    102:        OD
                    103: 
                    104:        IF argc>1 THEN symfil = argv[1]; FI
                    105:        IF argc>2 THEN corfil = argv[2]; FI
                    106:        argcount=argc;
                    107:        setsym(); setcor();
                    108: 
                    109:        /* set up variables for user */
                    110:        maxoff=MAXOFF; maxpos=MAXPOS;
                    111:        var[VARB] = datbas;
                    112:        var[VARD] = datsiz;
                    113:        var[VARE] = entrypt;
                    114:        var[VARM] = magic;
                    115:        var[VARS] = stksiz;
                    116:        var[VART] = txtsiz;
                    117: 
                    118: #ifndef EDDT
                    119:        IF (sigint=signal(SIGINT,01))!=01
                    120:        THEN    sigint=fault; signal(SIGINT,fault);
                    121:        FI
                    122:        sigqit=signal(SIGQUIT,1);
                    123:        setexit();
                    124: #endif
                    125:        IF executing THEN delbp(); FI
                    126:        executing=FALSE;
                    127: #ifdef EDDT
                    128:        prints(DBNAME);
                    129: #endif
                    130: 
                    131:        LOOP    flushbuf();
                    132:                IF errflg
                    133:                THEN printf("%s\n",errflg);
                    134:                     exitflg=errflg;
                    135:                     errflg=0;
                    136:                FI
                    137:                IF mkfault
                    138:                THEN    mkfault=0; printc(EOR); prints(DBNAME);
                    139:                FI
                    140:                lp=0; rdc(); lp--;
                    141:                IF eof
                    142:                THEN    IF infile
                    143: #ifndef EDDT
                    144:                        THEN    iclose(); eof=0; reset();
                    145: #else
                    146:                        THEN    iclose(); eof=0;
                    147: #endif
                    148:                        ELSE    done();
                    149:                        FI
                    150:                ELSE    exitflg=0;
                    151:                FI
                    152:                command(0,lastcom);
                    153:                IF lp ANDF lastc!=EOR THEN error(NOEOR); FI
                    154:        POOL
                    155: }
                    156: 
                    157: #ifndef EDDT
                    158: done()
                    159: {
                    160:        endpcs();
                    161:        exit(exitflg);
                    162: }
                    163: #endif

unix.superglobalmegacorp.com

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