- bpwait(); chkerr(); readregs();
-
- /*look for bkpt*/
- IF signo==0 ANDF (bkpt=scanbkpt(endhdr[pc]-2))
- THEN /*stopped at bkpt*/
- userpc=endhdr[pc]=bkpt->loc;
- IF bkpt->flag==BKPTEXEC
- ORF ((bkpt->flag=BKPTEXEC, command(bkpt->comm,':')) ANDF --bkpt->count)
- THEN execbkpt(bkpt); execsig=0; loopcnt++;
- userpc=1;
- ELSE bkpt->count=bkpt->initcnt;
- rc=1;
- FI
- ELSE rc=0; execsig=signo; userpc=1;
+ bpwait(); chkerr(); execsig=0; delbp(); readregs();
+
+ IF (signo==0) ANDF (bkpt=scanbkpt(userpc))
+ THEN /* stopped by BPT instruction */
+#ifdef DEBUG
+ printf("\n BPT code; '%s'%o'%o'%d",
+ bkpt->comm,bkpt->comm[0],EOR,bkpt->flag);
+#endif
+ dot=bkpt->loc;
+ IF bkpt->flag==BKPTEXEC
+ ORF ((bkpt->flag=BKPTEXEC)
+ ANDF bkpt->comm[0]!=EOR
+ ANDF command(bkpt->comm,':')
+ ANDF --bkpt->count)
+ THEN execbkpt(bkpt,execsig); execsig=0; loopcnt++;
+ ELSE bkpt->count=bkpt->initcnt; rc=1;
+ FI
+ ELSE execsig=signo; rc=0;