Commit | Line | Data |
---|---|---|
b4d2bc41 TL |
1 | # |
2 | /* | |
3 | * | |
4 | * UNIX debugger | |
5 | * | |
6 | */ | |
7 | ||
8 | #include "head.h" | |
9 | ||
10 | INT mkfault; | |
11 | INT executing; | |
12 | CHAR *lp; | |
13 | L_INT maxoff; | |
14 | L_INT maxpos; | |
15 | ADDR sigint; | |
16 | ADDR sigqit; | |
17 | INT wtflag; | |
18 | L_INT maxfile; | |
19 | L_INT maxstor; | |
20 | L_INT txtsiz; | |
21 | L_INT datsiz; | |
22 | L_INT datbas; | |
23 | L_INT stksiz; | |
24 | STRING errflg; | |
25 | INT magic; | |
26 | L_INT entrypt; | |
27 | ||
28 | CHAR lastc; | |
29 | ||
30 | STRING symfil; | |
31 | STRING corfil; | |
32 | INT argcount; | |
33 | ||
34 | ||
35 | ||
36 | main(argc, argv) | |
37 | REG STRING *argv; | |
38 | REG INT argc; | |
39 | { | |
40 | register char *p; | |
41 | maxfile=1L<<24; maxstor=1L<<31; | |
42 | ||
43 | setbuf(stdout, NULL); | |
44 | setbuf(stderr, NULL); | |
45 | ||
46 | WHILE argc>1 | |
47 | DO IF eqstr("-w",argv[1]) | |
48 | THEN wtflag=2; argc--; argv++; | |
49 | ELSE break; | |
50 | FI | |
51 | OD | |
52 | ||
53 | IF argc>1 THEN symfil = argv[1]; FI | |
54 | IF argc>2 THEN corfil = argv[2]; FI | |
55 | fp = filework; | |
56 | if (argc > 3) { | |
57 | for (p = argv[3]; *p; *fp++ = *p++) ; | |
58 | *fp++ = '/'; | |
59 | } | |
60 | ||
61 | argcount=argc; | |
62 | setsym(); setcor(); | |
63 | initfp(); | |
64 | ||
65 | /* set up variables for user */ | |
66 | maxoff=MAXOFF; maxpos=MAXPOS; | |
67 | ||
68 | IF (sigint=signal(SIGINT,01))!=01 | |
69 | THEN sigint= (ADDR) fault; signal(SIGINT,fault); | |
70 | FI | |
71 | sigqit=signal(SIGQUIT,1); | |
72 | setexit(); | |
73 | if (debug) printf("Sdb restarted\n"); | |
74 | IF executing THEN delbp(); FI | |
75 | executing=FALSE; | |
76 | ||
77 | for (;;) { | |
78 | mkfault = 0; | |
79 | printf("*"); | |
80 | if (decode() == 1) { | |
81 | printf("Error; try again\n"); | |
82 | continue; | |
83 | } | |
84 | ||
85 | if (debug) { | |
86 | printf("cmd %c:\n", cmd); | |
87 | printf("%s:%s\n", proc, var); | |
88 | printf("args-%s;re-%s;integ-%d\n", args, re, integ); | |
89 | printf("scallf-%d;reflg-%d\n\n", scallf, reflag); | |
90 | } | |
91 | ||
92 | docommand(); | |
93 | } | |
94 | } | |
95 | ||
96 | ||
97 | fault(a) | |
98 | { | |
99 | signal(a,fault); | |
100 | mkfault++; | |
101 | printf("\n"); | |
102 | reset(); | |
103 | } |