|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.