void debug (void) { if (savepc - 1 == breakpt1 || savepc - 1 == breakpt2) { print("Breakpoint\n"); savepc--; // Restore contents of breakpoint 1 if (breakpt1) mem8080[breakpt1] = brkdata1; breakpt1 = 0; // Restore contents of breakpoint 2 if (breakpt2) mem8080[breakpt2] = brkdata2; breakpt2 = 0; } xcmd(); listptr = savepc; for (;;) { int nchars; print("-"); nchars = read(0,cmdline,sizeof(cmdline)-1); if (nchars < 0) return; cmdline[nchars] = 0; for (cptr = cmdline; *cptr != '\0'; cptr++) if (*cptr >= 'a') *cptr -= 'a' - 'A'; cptr = cmdline; switch(*cptr++) { case 'G': if (gcmd()) return; return; // resume execution of 8080 program case 'D': dcmd(); break; case 'X': xcmd(); break; case 'L': lcmd(); break; case 'S': single_step (); // force single stepping return; // resume execution of 8080 program default: printf ("valid commands:\n"); printf (" g go\n"); printf (" d[NNNN] display memory [at address]\n"); printf (" x examine registers registers\n"); printf (" l[NNNN] disassemble instructions [at address]\n"); printf (" s single step\n"); } } }
// Selection from Command widget static void DoPlotCommandCB(Widget, XtPointer client_data, XtPointer call_data) { PlotWindowInfo *plot = (PlotWindowInfo *)client_data; XmCommandCallbackStruct *cbs = (XmCommandCallbackStruct *)call_data; MString xcmd(cbs->value, true); string cmd = xcmd.str(); send_and_replot(plot, cmd); }
void process(Biobuf *b, char *name) { int c, r, v, i; char *p; cno = 0; prevlineH = res; filename = name; for(;;){ c = getc(b); switch(c){ case Beof: /* go to ground state */ attr = 0; emit('\n'); return; case '\n': break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': v = c-'0'; c = getc(b); if(c<'0' || '9'<c) sysfatal("illegal character motion at %s:#%d", filename, cno); v = v*10 + (c-'0'); hp += v; /* fall through to character case */ case 'c': indent(); r = getc(b); emithtmlchar(r); break; case 'D': /* draw line; ignore */ do c = getc(b); while(c!='\n' && c!= Beof); break; case 'f': v = setnum(b, "font", 0, Nfont); switchfont(v); break; case 'h': v = setnum(b, "hpos", -20000, 20000); /* generate spaces if motion is large and within a line */ if(!atnewline && v>2*72) for(i=0; i<v; i+=72) emitstr(" "); hp += v; break; case 'n': setnum(b, "n1", -10000, 10000); //Bprint(&bout, " N1=%d", v); getc(b); /* space separates */ setnum(b, "n2", -10000, 10000); atnewline = 1; if(!didP && hp < (Wid-1)*res) /* if line is less than 19" long, probably need a line break */ emitstr("<br>"); emit('\n'); break; case 'p': page = setnum(b, "ps", -10000, 10000); break; case 's': ps = setnum(b, "ps", 1, 1000); break; case 'v': vp += setnum(b, "vpos", -10000, 10000); /* BUG: ignore motion */ break; case 'x': xcmd(b); break; case 'w': emit(' '); break; case 'C': indent(); p = getstr(b); emitstr(troffchar(p)); break; case 'H': hp = setnum(b, "hpos", 0, 20000); //Bprint(&bout, " H=%d ", hp); break; case 'V': vp = setnum(b, "vpos", 0, 10000); break; default: fprint(2, "dhtml: unknown directive %c(0x%.2ux) at %s:#%d\n", c, c, filename, cno); return; } } }