7 fmtinstall('R', Rconv);
8 fmtinstall('A', Aconv);
9 fmtinstall('D', Dconv);
10 fmtinstall('S', Sconv);
11 fmtinstall('P', Pconv);
22 p = va_arg(fp->args, Prog*);
27 sprint(str, "(%ld) %A %D,%d,%D",
28 p->line, p->as, &p->from, p->from.scale, &p->to);
32 sprint(str, "(%ld) %A %D,%D",
33 p->line, p->as, &p->from, &p->to);
38 sprint(str, "(%ld) %A %D/%d,%D",
39 p->line, p->as, &p->from, p->from.scale, &p->to);
43 return fmtstrcpy(fp, str);
51 i = va_arg(fp->args, int);
52 return fmtstrcpy(fp, anames[i]);
62 a = va_arg(fp->args, Adr*);
66 sprint(str, "%ld(%R)", a->offset, i-D_INDIR);
68 sprint(str, "(%R)", i-D_INDIR);
82 if(bigP != P && bigP->pcond != P)
84 sprint(str, "%lux+%s", bigP->pcond->pc,
87 sprint(str, "%lux", bigP->pcond->pc);
89 sprint(str, "%ld(PC)", a->offset);
93 sprint(str, "%s+%ld(SB)", a->sym->name, a->offset);
97 sprint(str, "%s<%d>+%ld(SB)", a->sym->name,
98 a->sym->version, a->offset);
102 sprint(str, "%s+%ld(SP)", a->sym->name, a->offset);
107 sprint(str, "%s+%ld(FP)", a->sym->name, a->offset);
109 sprint(str, "%ld(FP)", a->offset);
113 sprint(str, "$%ld", a->offset);
117 sprint(str, "$(%.8lux,%.8lux)", a->ieee.h, a->ieee.l);
121 sprint(str, "$\"%S\"", a->scon);
127 sprint(str, "$%D", a);
133 if(a->index != D_NONE) {
134 sprint(s, "(%R*%d)", a->index, a->scale);
138 return fmtstrcpy(fp, str);
177 "GDTR", /* [D_GDTR] */
178 "IDTR", /* [D_IDTR] */
179 "LDTR", /* [D_LDTR] */
181 "TASK", /* [D_TASK] */
210 "NONE", /* [D_NONE] */
219 r = va_arg(fp->args, int);
220 if(r >= D_AL && r <= D_NONE)
221 sprint(str, "%s", regstr[r-D_AL]);
223 sprint(str, "gok(%d)", r);
225 return fmtstrcpy(fp, str);
232 char str[30], *p, *a;
234 a = va_arg(fp->args, char*);
236 for(i=0; i<sizeof(double); i++) {
238 if(c >= 'a' && c <= 'z' ||
239 c >= 'A' && c <= 'Z' ||
240 c >= '0' && c <= '9') {
247 if(c < 040 || c >= 0177)
248 break; /* not portable */
266 *p++ = ((c>>3) & 7) + '0';
267 *p++ = (c & 7) + '0';
270 return fmtstrcpy(fp, str);
276 char buf[STRINGSZ], *tn;
280 if(curtext != P && curtext->from.sym != S)
281 tn = curtext->from.sym->name;
283 vseprint(buf, buf+sizeof(buf), fmt, arg);
285 print("%s: %s\n", tn, buf);
288 if(nerrors > 20 && !debug['A']) {
289 print("too many errors\n");