|
|
1.1 root 1: #include "asm.h"
2:
3: /*
4: * Copy a block of source and code to
5: * the listing file. If no listing file or
6: * the current line is not to be listed
7: * just return. Multiple code bytes get
8: * put out on extra lines after the source
9: * line.
10: */
11: list()
12: {
13: register char *wp;
14: register nb;
15:
16: if (lflag==0 || lmode==NLIST)
17: return;
18: slew();
19: while (ep < &eb[NERR])
20: *ep++ = ' ';
21: printf("%.10s", eb);
22: if (lmode == SLIST) {
23: printf("%31s %5d %s\n", "", line, ib);
24: return;
25: }
26: printf(ADRFMT, laddr);
27: if (lmode == ALIST) {
28: printf("%24s %5d %s\n", "", line, ib);
29: return;
30: }
31: wp = cb;
32: nb = cp - cb;
33: list1(wp, nb, 1);
34: printf(" %5d %s\n", line, ib);
35: while ((nb -= NBOL) > 0) {
36: wp += NBOL;
37: slew();
38: printf("%17s", "");
39: list1(wp, nb, 0);
40: putchar('\n');
41: }
42: }
43:
44: list1(wp, nb, f)
45: register char *wp;
46: register nb;
47: {
48: register d, i;
49:
50: if (nb > NBOL)
51: nb = NBOL;
52: for (i=0; i<nb; ++i) {
53: d = (*wp++)&0377;
54: if (lmode == BLIST)
55: printf(BFMT, d);
56: else {
57: #if LOHI
58: d |= ((*wp++) << 8);
59: #else
60: d = (d<<8) | ((*wp++)&0377);
61: #endif
62: printf(WFMT, d);
63: ++i;
64: }
65: }
66: if (f) {
67: while (i < NBOL) {
68: printf(SKIP);
69: ++i;
70: }
71: }
72: }
73:
74: slew()
75: {
76: if (lop++ >= NLPP) {
77: if (page)
78: putchar('\f');
79: printf("Coherent assembler (%s), page %d\n", CPU, ++page);
80: printf("%s\n\n", tb);
81: lop = 4;
82: }
83: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.