/* * print one line into listfile, if -l option set */ void lst_line(int val, int opanz) { register int i; if (!list_flag || sd_flag == 4) { sd_flag = 0; return; } if ((p_line >= ppl) || (c_line == 1)) { lst_header(); lst_attl(); } switch (sd_flag) { case 0: fprintf(lstfp, "%04x ", val & 0xffff); break; case 1: fprintf(lstfp, "%04x ", sd_val & 0xffff); break; case 2: fprintf(lstfp, " "); break; case 3: fprintf(lstfp, "%04x ", sd_val & 0xffff); goto no_data; default: fatal(F_INTERN, "illegal listflag for function lst_line"); break; } if (opanz >= 1) fprintf(lstfp, "%02x ", ops[0] & 0xff); else fprintf(lstfp, " "); if (opanz >= 2) fprintf(lstfp, "%02x ", ops[1] & 0xff); else fprintf(lstfp, " "); if (opanz >= 3) fprintf(lstfp, "%02x ", ops[2] & 0xff); else fprintf(lstfp, " "); if (opanz >= 4) fprintf(lstfp, "%02x ", ops[3] & 0xff); else fprintf(lstfp, " "); no_data: fprintf(lstfp, "%6d %6d %s", c_line, s_line, line); if (errnum) { fprintf(errfp, "=> %s", errmsg[errnum]); putc('\n', errfp); errnum = 0; p_line++; } sd_flag = 0; p_line++; if (opanz > 4 && sd_flag == 0) { opanz -= 4; i = 4; sd_val = val; while (opanz > 0) { if (p_line >= ppl) { lst_header(); lst_attl(); } s_line++; sd_val += 4; fprintf(lstfp, "%04x ", sd_val & 0xffff); if (opanz-- > 0) fprintf(lstfp, "%02x ", ops[i++] & 0xff); else fprintf(lstfp, " "); if (opanz-- > 0) fprintf(lstfp, "%02x ", ops[i++] & 0xff); else fprintf(lstfp, " "); if (opanz-- > 0) fprintf(lstfp, "%02x ", ops[i++] & 0xff); else fprintf(lstfp, " "); if (opanz-- > 0) fprintf(lstfp, "%02x ", ops[i++] & 0xff); else fprintf(lstfp, " "); fprintf(lstfp, "%6d %6d\n", c_line, s_line); p_line++; } } }
/* * print one line into listfile, if -l option set */ void lst_line(int val, int opanz) { register int i = 0; char *p; int tab; char code[256]; if (!list_flag || sd_flag == 4) { sd_flag = 0; return; } if ((p_line >= ppl) || (c_line == 1)) { lst_header(); lst_attl(); } p = line; memset(code, 0, sizeof(code)); while(*p != 0) { if (*p == ';') break; if (*p == '\t') { tab = 4 - i % 4; while(tab--) code[i++] = ' '; } else if (*p < '\n') code[i++] = ' '; else if (*p != '\n') { code[i++] = *p; } p++; } i = strlen(code); while(i < 40) code[i++] = ' '; fprintf(lstfp, "%s;", code); if (*p == 0) p = "\n"; // if (i > 0 && *(p-1) == ';') { // line[i] = 0; // line[i] = ';'; // } else // p = line; switch (sd_flag) { case 0: fprintf(lstfp, "%04x ", val & 0xffff); break; case 1: fprintf(lstfp, "%04x ", sd_val & 0xffff); break; case 2: fprintf(lstfp, " "); break; case 3: fprintf(lstfp, "%04x ", sd_val & 0xffff); goto no_data; default: fatal(F_INTERN, "illegal listflag for function lst_line"); break; } if (opanz >= 1) fprintf(lstfp, "%02x ", ops[0] & 0xff); else fprintf(lstfp, " "); if (opanz >= 2) fprintf(lstfp, "%02x ", ops[1] & 0xff); else fprintf(lstfp, " "); if (opanz >= 3) fprintf(lstfp, "%02x ", ops[2] & 0xff); else fprintf(lstfp, " "); if (opanz >= 4) fprintf(lstfp, "%02x ", ops[3] & 0xff); else fprintf(lstfp, " "); no_data: fprintf(lstfp, "%6d %6d %s", c_line, s_line, p); if (errnum) { fprintf(errfp, "=> %s", errmsg[errnum]); putc('\n', errfp); errnum = 0; p_line++; } sd_flag = 0; p_line++; if (opanz > 4 && sd_flag == 0) { opanz -= 4; i = 4; sd_val = val; while (opanz > 0) { if (p_line >= ppl) { lst_header(); lst_attl(); } s_line++; sd_val += 4; fprintf(lstfp, "%-40s;", " "); fprintf(lstfp, "%04x ", sd_val & 0xffff); if (opanz-- > 0) fprintf(lstfp, "%02x ", ops[i++] & 0xff); else fprintf(lstfp, " "); if (opanz-- > 0) fprintf(lstfp, "%02x ", ops[i++] & 0xff); else fprintf(lstfp, " "); if (opanz-- > 0) fprintf(lstfp, "%02x ", ops[i++] & 0xff); else fprintf(lstfp, " "); if (opanz-- > 0) fprintf(lstfp, "%02x ", ops[i++] & 0xff); else fprintf(lstfp, " "); fprintf(lstfp, "%6d %6d\n", c_line, s_line); p_line++; } } }