enum {NOCOM
, PRCOM
, DSCOM
} lastcom
;
register ADDR addr
, bkaddr
;
if (reflag
) { /* search for regular expression */
if (integ
!= 0 && var
[0] != '\0') {
error("Invalid command (1)");
if (integ
!= 0) { /* print line number */
printf("Unexpected null command\n");
printf("%.8s() in \"%s\"\n",
curproc()->pname
, curfile
);
if (*p
++ == '.') goto l1
;
/* argument is procedure name */
if ((procp
->pname
[0] != '\0') && (procp
->sfptr
!= badfile
)) {
finit(adrtofilep(procp
->paddr
)->sfilename
);
else printf("Can't find %s\n", args
);
printf("%.8s() in \"%s\"\n", curproc()->pname
, curfile
);
l1
: /* argument is filename */
printf("\"%s\"\n", curfile
);
fback(integ
? integ
: 1);
fforward(integ
? integ
: 1);
oaddr
+= oincr
? oincr
: typetosize(otype
, WORDSIZE
);
dispf((ADDR
) oaddr
, odesc
,
oclass
== N_RSYM
? oclass
: N_GSYM
, otype
, 0, 0);
if (args
[0] == '\0') getargs();
if (debug
) error("calling dopcs");
if (integ
) cntval
= integ
;
if (integ
) cntval
= integ
;
if (debug
) error("exiting dopcs");
if (proc
[0] != '\0' || integ
!= 0) {
dot
= getaddr(proc
, integ
);
error("Cannot set temporary breakpoint");
f1
: if (debug
) error("calling dopcs");
if (integ
) cntval
= integ
;
if (debug
) error("exiting dopcs");
if (!signo
) printf("Breakpoint");
singstep(integ
? integ
: 1, cmd
);
error("Not stopped at breakpoint");
dot
= getaddr(proc
, integ
);
if (integ
) cntval
= integ
;
if (!signo
) printf("Breakpoint");
userpc
= dot
= *(ADDR
*)(((ADDR
)&u
)+PC
) = pcs
;
*(ADDR
*)(((ADDR
)&u
)+FP
) = fps
;
*(ADDR
*)(((ADDR
)&u
)+AP
) = aps
;
error("Procedure killed");
if (proc
[0] == '\0' && integ
== 0) {
dot
= getaddr(proc
,integ
);
if (dot
== -1 || dot
== 0) {
error("Cannot set breakpoint");
printbkpt(s
, adrtoprocp(dot
)->pname
,
if (proc
[0] == '\0' && integ
== 0) {
dot
= getaddr(proc
,integ
);
error("Non existent breakpoint");
error("All breakpoints deleted");
addr
= varaddr(proc
[0] ? proc
: curproc()->pname
, var
);
printf("stopped with value %d\n", monex(addr
, 'd'));
if (var
[0] == '.' && var
[1] == '\0') {
if (integ
== 0) integ
= oaddr
;
dispf((ADDR
) integ
, args
[0] ? args
: odesc
,
oclass
== N_RSYM
? oclass
: N_GSYM
, otype
, 0, 0);
if (integ
&& (var
[0] == '\0')) {
dispf((ADDR
) integ
, args
, N_GSYM
, 0, 0, 0);
dispvar(proc
, var
, args
);
addr
= getaddr(proc
, integ
);
error("Unknown address");
dispf(addr
, args
[0] ? args
: "x", 0, -1, 0, 0);
findvar(proc
, var
, args
[0] ? args
: "x", 2);
addr
= getaddr(proc
, integ
);
addr
= varaddr(proc
, var
);
error("Unknown variable");
if (number(args
[0]) || eqany(args
[0], ".-")) {
p
= (args
[0] == '-') ? args
+1 : args
;
for (; *p
!= '.' && *p
!= 'e'; p
++) {
if (!number(*p
)) goto l2
;
putval(addr
, 'd', dbl
.w1
);
if (typetodesc(sl_type
,0)[0] == 'g')
putval(addr
+WORDSIZE
, 'd', dbl
.w2
);
l2
: if (sl_class
== N_RSYM
&& addr
< 16)
putreg(addr
,typetodesc(sl_type
,subflag
)[0],
putval(addr
,typetodesc(sl_type
,subflag
)[0],