DataMuseum.dk

Presents historical artifacts from the history of:

Commodore CBM-900

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Commodore CBM-900

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦ebe73f8ed⟧ TextFile

    Length: 946 (0x3b2)
    Types: TextFile
    Notes: UNIX file
    Names: »subr.c«

Derivation

└─⟦f27320a65⟧ Bits:30001972 Commodore 900 hard disk image with partial source code
    └─⟦f4b8d8c84⟧ UNIX V7 Filesystem
        └─ ⟦this⟧ »cmd/as/subr.c« 

TextFile

#include "asm.h"

/*
 * Note an error.
 * If the error is a `q' just
 * give up.
 */
err(c)
{
	if (pass == 2) {
		++nerr;
		if (lflag)
			stoerr(c);
		else {
			printf("%04d %c", line, c);
			if (ifn != NULL)
				printf(" %s", ifn);
			putchar('\n');
		}
	}
	if (c == 'q')
		longjmp(env, 1);
}

/*
 * Note a `u' error.
 * Tag it with the name if not making
 * a listing file.
 */
uerr(id)
char *id;
{
	if (pass == 2) {
		++nerr;
		if (lflag)
			stoerr('u');
		else {
			printf("%04d u %.*s", line, NCPLN, id);
			if (ifn != NULL)
				printf(" %s", ifn);
			putchar('\n');
		}
	}
}

/*
 * Note an 'r' error.
 */
rerr()
{
	err('r');
}

/*
 * Note an 'a' error.
 */
aerr()
{
	err('a');
}

/*
 * Note a 'q' error.
 */
qerr()
{
	err('q');
}

/*
 * Store an error tag into the
 * listing error buffer.
 */
stoerr(c)
register c;
{
	register char *p;

	p = eb;
	while (p < ep)
		if (*p++ == c)
			return;
	if (p < &eb[NERR]) {
		*p++ = c;
		ep = p;
	}
}