Add consistency checking for symbol flags

while also adding some consistency.
All listings now list . (dot) as defined so they need updating.
This commit is contained in:
Olaf Seibert
2021-05-28 22:11:34 +02:00
parent 7bbcbba5f5
commit 0ab2a4fa16
52 changed files with 235 additions and 128 deletions

View File

@@ -194,7 +194,7 @@ static int assemble(
if (!express_sym_offset(value, &symb, &offset)) {
report(stack->top, "Illegal ORG (for relocatable section)\n");
} else if ((symb->flags & (SYMBOLFLAG_GLOBAL | SYMBOLFLAG_DEFINITION)) == SYMBOLFLAG_GLOBAL) {
} else if (SYM_IS_IMPORTED(symb)) {
report(stack->top, "Can't ORG to external location\n");
} else if (symb->flags & SYMBOLFLAG_UNDEFINED) {
report(stack->top, "Can't ORG to undefined sym\n");
@@ -1040,7 +1040,7 @@ static int assemble(
sect->size = 0;
sect->type = SECTION_USER;
sections[sector++] = sect;
sectsym = add_sym(label, 0, 0, sect, &section_st);
sectsym = add_sym(label, 0, SYMBOLFLAG_DEFINITION, sect, &section_st);
/* page 6-41 table 6-5 */
if (op->value == P_PSECT) {

View File

@@ -332,7 +332,7 @@ int complex_tree(
return 0;
}
if ((sym->flags & (SYMBOLFLAG_GLOBAL | SYMBOLFLAG_DEFINITION)) == SYMBOLFLAG_GLOBAL) {
if (SYM_IS_IMPORTED(sym)) {
text_complex_global(tx, sym->label);
} else {
text_complex_psect(tx, sym->section->sector, sym->value);
@@ -490,7 +490,7 @@ void mode_extension(
value. */
}
} else if (express_sym_offset(value, &sym, &offset)) {
if ((sym->flags & (SYMBOLFLAG_GLOBAL | SYMBOLFLAG_DEFINITION)) == SYMBOLFLAG_GLOBAL) {
if (SYM_IS_IMPORTED(sym)) {
/* Reference to a global symbol. */
/* Global symbol plus offset */
if (mode->rel)
@@ -635,7 +635,7 @@ void store_value(
} else if (!express_sym_offset(value, &sym, &offset)) {
store_complex(stack->top, tr, size, value);
} else {
if ((sym->flags & (SYMBOLFLAG_GLOBAL | SYMBOLFLAG_DEFINITION)) == SYMBOLFLAG_GLOBAL) {
if (SYM_IS_IMPORTED(sym)) {
store_global_offset_word(stack->top, tr, size, sym->value + offset, sym->label);
} else if (sym->section != current_pc->section) {
store_psect_offset_word(stack->top, tr, size, sym->value + offset, sym->section->label);
@@ -765,11 +765,10 @@ void write_globals(
while (sym) {
if ((sym->flags & SYMBOLFLAG_GLOBAL) && sym->section == psect) {
gsd_global(&gsd, sym->label,
(sym->
flags & SYMBOLFLAG_DEFINITION ? GLOBAL_DEF : 0) | ((sym->
flags & SYMBOLFLAG_WEAK) ?
GLOBAL_WEAK : 0)
| ((sym->section->flags & PSECT_REL) ? GLOBAL_REL : 0) | 0100,
((sym->flags & SYMBOLFLAG_DEFINITION) ? GLOBAL_DEF : 0) |
((sym->flags & SYMBOLFLAG_WEAK) ? GLOBAL_WEAK : 0) |
((sym->section->flags & PSECT_REL) ? GLOBAL_REL : 0) |
0100,
/* Looks undefined, but add it in anyway */
sym->value);
}

View File

@@ -282,25 +282,25 @@ EX_TREE *evaluate(
/* Change some symbols to "undefined" */
if (flags & EVALUATE_DEFINEDNESS) {
int change = 0;
int is_undefined = 0;
/* I'd prefer this behavior, but MACRO.SAV is a bit too primitive. */
#if 0
/* A temporary symbol defined later is "undefined." */
if (!(sym->flags & PERMANENT) && sym->stmtno > stmtno)
change = 1;
is_undefined = 1;
#endif
/* A global symbol with no assignment is "undefined." */
/* Go figure. */
if ((sym->flags & (SYMBOLFLAG_GLOBAL | SYMBOLFLAG_DEFINITION)) == SYMBOLFLAG_GLOBAL)
change = 1;
if (SYM_IS_IMPORTED(sym))
is_undefined = 1;
/* A symbol marked as undefined is undefined */
if (sym->flags & SYMBOLFLAG_UNDEFINED)
change = 1;
is_undefined = 1;
if (change) {
if (is_undefined) {
res = new_temp_sym(tp->data.symbol->label, tp->data.symbol->section,
tp->data.symbol->value);
res->type = EX_UNDEFINED_SYM;
@@ -310,7 +310,7 @@ EX_TREE *evaluate(
/* Turn defined absolute symbol to a literal */
if (!(sym->section->flags & PSECT_REL)
&& (sym->flags & (SYMBOLFLAG_GLOBAL | SYMBOLFLAG_DEFINITION)) != SYMBOLFLAG_GLOBAL
&& !SYM_IS_IMPORTED(sym)
&& sym->section->type != SECTION_REGISTER) {
res = new_ex_lit(sym->value);
break;

View File

@@ -584,7 +584,7 @@ MACRO *new_macro(
{
MACRO *mac = memcheck(malloc(sizeof(MACRO)));
mac->sym.flags = 0;
mac->sym.flags = SYMBOLFLAG_DEFINITION;
mac->sym.label = label;
mac->sym.stmtno = stmtno;
mac->sym.next = NULL;

234
symbols.c
View File

@@ -33,6 +33,96 @@ SYMBOL_TABLE implicit_st; /* The symbols which may be implicit globals */
void list_section(SECTION *sec);
static void
dump_sym(SYMBOL *sym)
{
report(NULL, "'%s': %06o, stmt %d, flags %o:%s%s%s%s%s%s\n",
sym->label,
sym->value,
sym->stmtno,
sym->flags,
((sym->flags & SYMBOLFLAG_PERMANENT)? " PERMANENT" : ""),
((sym->flags & SYMBOLFLAG_GLOBAL)? " GLOBAL" : ""),
((sym->flags & SYMBOLFLAG_WEAK)? " WEAK" : ""),
((sym->flags & SYMBOLFLAG_DEFINITION)? " DEFINITION" : ""),
((sym->flags & SYMBOLFLAG_UNDEFINED)? " UNDEFINED" : ""),
((sym->flags & SYMBOLFLAG_LOCAL)? " LOCAL" : ""),
((sym->flags & SYMBOLFLAG_IMPLICIT_GLOBAL)? " IMPLICIT_GLOBAL" : ""));
}
void
check_sym_invariants(SYMBOL *sym, char *file, int line)
{
int dump = 0;
if (sym->section == &instruction_section) {
/* The instructions use the flags field differently */
if ((sym->flags & ~OC_MASK) != 0) {
report(NULL, "%s %d: Instruction symbol %s has wrong flags\n", file, line, sym->label);
dump_sym(sym);
}
return;
}
/*
* A symbol is GLOBAL if it appears in the object file's symbol table.
* It can be either exported (if defined) or imported (if not defined).
*
* A common test like this
*
* if ((sym->flags & (SYMBOLFLAG_GLOBAL | SYMBOLFLAG_DEFINITION)) == SYMBOLFLAG_GLOBAL)
*
* tests if a symbol is imported.
*/
switch (sym->flags & (SYMBOLFLAG_PERMANENT|SYMBOLFLAG_GLOBAL|SYMBOLFLAG_DEFINITION|SYMBOLFLAG_UNDEFINED)) {
/* A DEFINITION can independently be PERMANENT and/or GLOBAL */
case SYMBOLFLAG_PERMANENT|SYMBOLFLAG_GLOBAL|SYMBOLFLAG_DEFINITION:
case SYMBOLFLAG_GLOBAL|SYMBOLFLAG_DEFINITION:
case SYMBOLFLAG_PERMANENT| SYMBOLFLAG_DEFINITION:
case SYMBOLFLAG_DEFINITION:
break;
/* A GLOBAL can also be undefined, but then it's still usable */
case SYMBOLFLAG_GLOBAL:
break;
/* A truly UNDEFINED symbol is an error to use */
/* (this seems logically equivalent to all of these flags cleared) */
case SYMBOLFLAG_UNDEFINED:
break;
default:
report(NULL, "%s %d: Symbol %s definedness is inconsistent\n", file, line, sym->label);
dump++;
}
if ( (sym->flags & SYMBOLFLAG_IMPLICIT_GLOBAL) &&
!(sym->flags & SYMBOLFLAG_GLOBAL)) {
report(NULL, "%s %d: Symbol %s globalness is inconsistent\n", file, line, sym->label);
dump++;
}
if ( (sym->flags & SYMBOLFLAG_LOCAL) &&
(sym->flags & SYMBOLFLAG_GLOBAL)) {
report(NULL, "%s %d: Symbol %s is local and global\n", file, line, sym->label);
dump++;
}
if ( (sym->flags & SYMBOLFLAG_PERMANENT) &&
!(sym->flags & SYMBOLFLAG_DEFINITION)) {
report(NULL, "%s %d: Symbol %s is permanent without definition\n", file, line, sym->label);
dump++;
}
if ( (sym->flags & SYMBOLFLAG_WEAK) &&
!(sym->flags & SYMBOLFLAG_GLOBAL)) {
report(NULL, "%s %d: Symbol %s weak/global is inconsistent\n", file, line, sym->label);
dump++;
}
if (dump) {
dump_sym(sym);
}
}
/* hash_name hashes a name into a value from 0-HASH_SIZE */
int hash_name(
@@ -91,6 +181,7 @@ void free_sym(
SYMBOL *sym)
{
if (sym->label) {
check_sym_invariants(sym, __FILE__, __LINE__);
free(sym->label);
sym->label = NULL;
}
@@ -107,6 +198,7 @@ void remove_sym(
*symp;
int hash;
check_sym_invariants(sym, __FILE__, __LINE__);
hash = hash_name(sym->label);
prevp = &table->hash[hash];
while (symp = *prevp, symp != NULL && symp != sym)
@@ -131,6 +223,9 @@ SYMBOL *lookup_sym(
while (sym && strcmp(sym->label, label) != 0)
sym = sym->next;
if (sym) {
check_sym_invariants(sym, __FILE__, __LINE__);
}
return sym;
}
@@ -176,6 +271,7 @@ void add_table(
sym->next = table->hash[hash];
table->hash[hash] = sym;
check_sym_invariants(sym, __FILE__, __LINE__);
}
/* add_sym - used throughout to add or update symbols in a symbol
@@ -204,6 +300,8 @@ SYMBOL *add_sym(
sym = lookup_sym(label, table);
if (sym != NULL) {
// A symbol registered as "undefined" can be changed.
//
check_sym_invariants(sym, __FILE__, __LINE__);
if ((sym->flags & SYMBOLFLAG_UNDEFINED) && !(flags & SYMBOLFLAG_UNDEFINED)) {
sym->flags &= ~(SYMBOLFLAG_PERMANENT | SYMBOLFLAG_UNDEFINED);
@@ -215,6 +313,7 @@ SYMBOL *add_sym(
/* Check for compatible definition */
else if (sym->section == section && sym->value == value) {
sym->flags |= flags; /* Merge flags quietly */
check_sym_invariants(sym, __FILE__, __LINE__);
return sym; /* 's okay */
}
@@ -223,6 +322,7 @@ SYMBOL *add_sym(
sym->value = value;
sym->flags |= flags;
sym->section = section;
check_sym_invariants(sym, __FILE__, __LINE__);
return sym;
}
@@ -245,73 +345,78 @@ SYMBOL *add_sym(
void add_symbols(
SECTION *current_section)
{
current_pc = add_sym(".", 0, 0, current_section, &symbol_st);
current_pc = add_sym(".", 0, SYMBOLFLAG_DEFINITION, current_section, &symbol_st);
reg_sym[0] = add_sym("R0", 0, 0, &register_section, &system_st);
reg_sym[1] = add_sym("R1", 1, 0, &register_section, &system_st);
reg_sym[2] = add_sym("R2", 2, 0, &register_section, &system_st);
reg_sym[3] = add_sym("R3", 3, 0, &register_section, &system_st);
reg_sym[4] = add_sym("R4", 4, 0, &register_section, &system_st);
reg_sym[5] = add_sym("R5", 5, 0, &register_section, &system_st);
reg_sym[6] = add_sym("SP", 6, 0, &register_section, &system_st);
reg_sym[7] = add_sym("PC", 7, 0, &register_section, &system_st);
#define S (SYMBOLFLAG_PERMANENT | SYMBOLFLAG_DEFINITION)
reg_sym[0] = add_sym("R0", 0, S, &register_section, &system_st);
reg_sym[1] = add_sym("R1", 1, S, &register_section, &system_st);
reg_sym[2] = add_sym("R2", 2, S, &register_section, &system_st);
reg_sym[3] = add_sym("R3", 3, S, &register_section, &system_st);
reg_sym[4] = add_sym("R4", 4, S, &register_section, &system_st);
reg_sym[5] = add_sym("R5", 5, S, &register_section, &system_st);
reg_sym[6] = add_sym("SP", 6, S, &register_section, &system_st);
reg_sym[7] = add_sym("PC", 7, S, &register_section, &system_st);
//JH: symbols longer than current SYMMAX will be truncated. SYMMAX=6 is minimum!
add_sym(".ASCII", P_ASCII, 0, &pseudo_section, &system_st);
add_sym(".ASCIZ", P_ASCIZ, 0, &pseudo_section, &system_st);
add_sym(".ASECT", P_ASECT, 0, &pseudo_section, &system_st);
add_sym(".BLKB", P_BLKB, 0, &pseudo_section, &system_st);
add_sym(".BLKW", P_BLKW, 0, &pseudo_section, &system_st);
add_sym(".BYTE", P_BYTE, 0, &pseudo_section, &system_st);
add_sym(".CSECT", P_CSECT, 0, &pseudo_section, &system_st);
add_sym(".DSABL", P_DSABL, 0, &pseudo_section, &system_st);
add_sym(".ENABL", P_ENABL, 0, &pseudo_section, &system_st);
add_sym(".END", P_END, 0, &pseudo_section, &system_st);
add_sym(".ENDC", P_ENDC, 0, &pseudo_section, &system_st);
add_sym(".ENDM", P_ENDM, 0, &pseudo_section, &system_st);
add_sym(".ENDR", P_ENDR, 0, &pseudo_section, &system_st);
add_sym(".EOT", P_EOT, 0, &pseudo_section, &system_st);
add_sym(".ERROR", P_ERROR, 0, &pseudo_section, &system_st);
add_sym(".EVEN", P_EVEN, 0, &pseudo_section, &system_st);
add_sym(".FLT2", P_FLT2, 0, &pseudo_section, &system_st);
add_sym(".FLT4", P_FLT4, 0, &pseudo_section, &system_st);
add_sym(".GLOBL", P_GLOBL, 0, &pseudo_section, &system_st);
add_sym(".IDENT", P_IDENT, 0, &pseudo_section, &system_st);
add_sym(".IF", P_IF, 0, &pseudo_section, &system_st);
add_sym(".IFDF", P_IFDF, 0, &pseudo_section, &system_st);
add_sym(".IFNDF", P_IFDF, 0, &pseudo_section, &system_st);
add_sym(".IFF", P_IFF, 0, &pseudo_section, &system_st);
add_sym(".IFT", P_IFT, 0, &pseudo_section, &system_st);
add_sym(".IFTF", P_IFTF, 0, &pseudo_section, &system_st);
add_sym(".IIF", P_IIF, 0, &pseudo_section, &system_st);
add_sym(".INCLUDE", P_INCLUDE, 0, &pseudo_section, &system_st);
add_sym(".IRP", P_IRP, 0, &pseudo_section, &system_st);
add_sym(".IRPC", P_IRPC, 0, &pseudo_section, &system_st);
add_sym(".LIBRARY", P_LIBRARY, 0, &pseudo_section, &system_st);
add_sym(".LIMIT", P_LIMIT, 0, &pseudo_section, &system_st);
add_sym(".LIST", P_LIST, 0, &pseudo_section, &system_st);
add_sym(".MCALL", P_MCALL, 0, &pseudo_section, &system_st);
add_sym(".MEXIT", P_MEXIT, 0, &pseudo_section, &system_st);
add_sym(".NARG", P_NARG, 0, &pseudo_section, &system_st);
add_sym(".NCHR", P_NCHR, 0, &pseudo_section, &system_st);
add_sym(".NLIST", P_NLIST, 0, &pseudo_section, &system_st);
add_sym(".NTYPE", P_NTYPE, 0, &pseudo_section, &system_st);
add_sym(".ODD", P_ODD, 0, &pseudo_section, &system_st);
add_sym(".PACKED", P_PACKED, 0, &pseudo_section, &system_st);
add_sym(".PAGE", P_PAGE, 0, &pseudo_section, &system_st);
add_sym(".PRINT", P_PRINT, 0, &pseudo_section, &system_st);
add_sym(".PSECT", P_PSECT, 0, &pseudo_section, &system_st);
add_sym(".RADIX", P_RADIX, 0, &pseudo_section, &system_st);
add_sym(".RAD50", P_RAD50, 0, &pseudo_section, &system_st);
add_sym(".REM", P_REM, 0, &pseudo_section, &system_st);
add_sym(".REPT", P_REPT, 0, &pseudo_section, &system_st);
add_sym(".RESTORE", P_RESTORE, 0, &pseudo_section, &system_st);
add_sym(".SAVE", P_SAVE, 0, &pseudo_section, &system_st);
add_sym(".SBTTL", P_SBTTL, 0, &pseudo_section, &system_st);
add_sym(".TITLE", P_TITLE, 0, &pseudo_section, &system_st);
add_sym(".WORD", P_WORD, 0, &pseudo_section, &system_st);
add_sym(".MACRO", P_MACRO, 0, &pseudo_section, &system_st);
add_sym(".WEAK", P_WEAK, 0, &pseudo_section, &system_st);
add_sym(".ASCII", P_ASCII, S, &pseudo_section, &system_st);
add_sym(".ASCIZ", P_ASCIZ, S, &pseudo_section, &system_st);
add_sym(".ASECT", P_ASECT, S, &pseudo_section, &system_st);
add_sym(".BLKB", P_BLKB, S, &pseudo_section, &system_st);
add_sym(".BLKW", P_BLKW, S, &pseudo_section, &system_st);
add_sym(".BYTE", P_BYTE, S, &pseudo_section, &system_st);
add_sym(".CSECT", P_CSECT, S, &pseudo_section, &system_st);
add_sym(".DSABL", P_DSABL, S, &pseudo_section, &system_st);
add_sym(".ENABL", P_ENABL, S, &pseudo_section, &system_st);
add_sym(".END", P_END, S, &pseudo_section, &system_st);
add_sym(".ENDC", P_ENDC, S, &pseudo_section, &system_st);
add_sym(".ENDM", P_ENDM, S, &pseudo_section, &system_st);
add_sym(".ENDR", P_ENDR, S, &pseudo_section, &system_st);
add_sym(".EOT", P_EOT, S, &pseudo_section, &system_st);
add_sym(".ERROR", P_ERROR, S, &pseudo_section, &system_st);
add_sym(".EVEN", P_EVEN, S, &pseudo_section, &system_st);
add_sym(".FLT2", P_FLT2, S, &pseudo_section, &system_st);
add_sym(".FLT4", P_FLT4, S, &pseudo_section, &system_st);
add_sym(".GLOBL", P_GLOBL, S, &pseudo_section, &system_st);
add_sym(".IDENT", P_IDENT, S, &pseudo_section, &system_st);
add_sym(".IF", P_IF, S, &pseudo_section, &system_st);
add_sym(".IFDF", P_IFDF, S, &pseudo_section, &system_st);
add_sym(".IFNDF", P_IFDF, S, &pseudo_section, &system_st);
add_sym(".IFF", P_IFF, S, &pseudo_section, &system_st);
add_sym(".IFT", P_IFT, S, &pseudo_section, &system_st);
add_sym(".IFTF", P_IFTF, S, &pseudo_section, &system_st);
add_sym(".IIF", P_IIF, S, &pseudo_section, &system_st);
add_sym(".INCLUDE", P_INCLUDE, S, &pseudo_section, &system_st);
add_sym(".IRP", P_IRP, S, &pseudo_section, &system_st);
add_sym(".IRPC", P_IRPC, S, &pseudo_section, &system_st);
add_sym(".LIBRARY", P_LIBRARY, S, &pseudo_section, &system_st);
add_sym(".LIMIT", P_LIMIT, S, &pseudo_section, &system_st);
add_sym(".LIST", P_LIST, S, &pseudo_section, &system_st);
add_sym(".MCALL", P_MCALL, S, &pseudo_section, &system_st);
add_sym(".MEXIT", P_MEXIT, S, &pseudo_section, &system_st);
add_sym(".NARG", P_NARG, S, &pseudo_section, &system_st);
add_sym(".NCHR", P_NCHR, S, &pseudo_section, &system_st);
add_sym(".NLIST", P_NLIST, S, &pseudo_section, &system_st);
add_sym(".NTYPE", P_NTYPE, S, &pseudo_section, &system_st);
add_sym(".ODD", P_ODD, S, &pseudo_section, &system_st);
add_sym(".PACKED", P_PACKED, S, &pseudo_section, &system_st);
add_sym(".PAGE", P_PAGE, S, &pseudo_section, &system_st);
add_sym(".PRINT", P_PRINT, S, &pseudo_section, &system_st);
add_sym(".PSECT", P_PSECT, S, &pseudo_section, &system_st);
add_sym(".RADIX", P_RADIX, S, &pseudo_section, &system_st);
add_sym(".RAD50", P_RAD50, S, &pseudo_section, &system_st);
add_sym(".REM", P_REM, S, &pseudo_section, &system_st);
add_sym(".REPT", P_REPT, S, &pseudo_section, &system_st);
add_sym(".RESTORE", P_RESTORE, S, &pseudo_section, &system_st);
add_sym(".SAVE", P_SAVE, S, &pseudo_section, &system_st);
add_sym(".SBTTL", P_SBTTL, S, &pseudo_section, &system_st);
add_sym(".TITLE", P_TITLE, S, &pseudo_section, &system_st);
add_sym(".WORD", P_WORD, S, &pseudo_section, &system_st);
add_sym(".MACRO", P_MACRO, S, &pseudo_section, &system_st);
add_sym(".WEAK", P_WEAK, S, &pseudo_section, &system_st);
#undef S
add_sym("ADC", I_ADC, OC_1GEN, &instruction_section, &system_st);
add_sym("ADCB", I_ADCB, OC_1GEN, &instruction_section, &system_st);
@@ -630,6 +735,7 @@ void list_symbol_table(
int i;
for (i = line; i < nsyms; i += nlines) {
sym = symbols[i];
check_sym_invariants(sym, __FILE__, __LINE__);
fprintf(lstfile,"%-*s", longest_symbol, sym->label);
fprintf(lstfile,"%c", (sym->section->flags & PSECT_REL) ? ' ' : '=');

View File

@@ -25,6 +25,8 @@ typedef struct section {
unsigned sector; /* Used for complex relocation, and naught else */
} SECTION;
#define SYM_IS_IMPORTED(sym) ((sym->flags & (SYMBOLFLAG_GLOBAL | SYMBOLFLAG_DEFINITION)) == SYMBOLFLAG_GLOBAL)
/* Symbol table entries */
typedef struct symbol {

View File

@@ -1232,7 +1232,7 @@
Symbol table
$TIMDF= 000007 4$6 001322R L 002 CLCLOC= ****** G LBLFLG= 000002 RLDTMP 000024R 008
. ******R 002 40$9 002014R L 002 CLCNAM= ****** G LF = 000012 ROLUPD= ****** G
. 002056R 002 40$9 002014R L 002 CLCNAM= ****** G LF = 000012 ROLUPD= ****** G
..Z = ****** G 5$3 000464R L 002 CLCSEC= ****** G LIMIT 000210RG 002 RSX11D= 000000
1$0 000164R L 002 6$3 000542R L 002 CNTTBL= ****** G LOCDMP 001512R 002 SAVREG= ****** G
1$1 000214R L 002 7$5 001216R L 002 CODROL= ****** G LSYROL= ****** G SECROL= ****** G

View File

@@ -626,7 +626,7 @@ Symbol table
$TIMDF= 000007 ..ZBUF 000204RG 006 DDD 000042R 002 LF = 000012 SDEBUG 000000RG 002
$WRITE= ****** G 1$0 000022R L 002 DEBUG = 000000 MK.SYM= 000001 SPACE = 000040
. ******R 006 100$1 000074R L 002 DNC = ****** G NDEBUG 000100RG 002 TAB = 000011
. 000404R 006 100$1 000074R L 002 DNC = ****** G NDEBUG 000100RG 002 TAB = 000011
..N 000000R 006 2$0 000032R L 002 FF = 000014 PDPV45= 000000 VT = 000013
..S 000004R 006 BPMB = 000020 FT.ID = 000001 RSX11D= 000000 X40 = 000000
..Z 000002RG 006 CR = 000015 FT.UNX= 000001 SAVREG= ****** G XX.FLG= ****** G

View File

@@ -1202,7 +1202,7 @@
Symbol table
$TIMDF= 000007 ERN19 000674RG 003 ERN35 001570RG 003 ERN50 002360RG 003 ERN8 000216RG 003
. ******R 003 ERN2 000033RG 003 ERN36 001624RG 003 ERN51 002403RG 003 ERN80 003010RG 003
. 003066R 003 ERN2 000033RG 003 ERN36 001624RG 003 ERN51 002403RG 003 ERN80 003010RG 003
BPMB = 000020 ERN20 000744RG 003 ERN37 001651RG 003 ERN52 002422RG 003 ERN81 003044RG 003
CR = 000015 ERN22 001007RG 003 ERN38 001703RG 003 ERN53 002445RG 003 ERN9 000247RG 003
DEBUG = 000000 ERN23 001044RG 003 ERN39 001733RG 003 ERN54 002472RG 003 ERN90 002173RG 003

View File

@@ -4607,7 +4607,7 @@ $WRBFP 000302RG 006 7$26 001702R L 002 ENDP2 = ****** G
$WRCNT 000304RG 006 7$29 002046R L 002 ERN45 = ****** G PROP2 = ****** G
$WRITE = ****** G 7$32 002644R L 002 ERN55 = ****** G PROSW = ****** G
$WRSYS = ****** G 7$44 004546R L 002 ERR.A = ****** G PSAROL = ****** G
. ******R 002 8$2 000534R L 002 ERR.BY = ****** G PSDFLT = ****** G
. 004576R 002 8$2 000534R L 002 ERR.BY = ****** G PSDFLT = ****** G
..Z = ****** G 8$35 003210R L 002 ERR.XX = ****** G PSTROL = ****** G
..ZBUF = ****** G 8$40 004072R L 002 ERRBTS = ****** G PUTKB = ****** G
1$1 000330R L 002 8$45 004574R L 002 ERRCNT = ****** G PUTKBL = ****** G

View File

@@ -1702,7 +1702,7 @@
Symbol table
$TIMDF = 000007 ABSERX 001236R 002 ERN1 = ****** G PDPV45 = 000000
. ******R 002 ABSEXP 001142RG 002 ERN2 = ****** G PSTROL = ****** G
. 003150R 002 ABSEXP 001142RG 002 ERN2 = ****** G PSTROL = ****** G
..Z = ****** G ABSTRM 001134RG 002 ERN3 = ****** G R50DOT = ****** G
..ZBUF = ****** G ABSTST 001146RG 002 ERN4 = ****** G R50GCH 002616R 002
1$0 000034R L 002 B.IDF = 000001 ERN5 = ****** G R50PRC 002662R 002

View File

@@ -959,7 +959,7 @@
Symbol table
$TIMDF = 000007 32768$3 000400R L 002 EDMASK = ****** G FLTG2W 000122R 002 FT.UNX = 000001
. ******R 002 32768$4 000650R L 002 ERN10 = ****** G FLTG3 000360R 002 GETCHR = ****** G
. 001232R 002 32768$4 000650R L 002 ERN10 = ****** G FLTG3 000360R 002 GETCHR = ****** G
..Z = ****** G 32768$5 001026R L 002 ERN11 = ****** G FLTG4W 000116R 002 GETNB = ****** G
..ZBUF = ****** G 33$3 000442R L 002 ERN9 = ****** G FLTG5 000550R 002 LF = 000012
1$2 000150R L 002 4$5 000664R L 002 ERR.A = ****** G FLTGAD 001144R 002 MK.SYM = 000001

View File

@@ -1543,7 +1543,7 @@
Symbol table
$TIMDF = 000007 BSSFLG = 000004 ED.LSB = ****** G IFNDF 001016RG 002 MK.SYM = 000001
. ******R 002 CATTRS = 000170 EDMASK = ****** G IFNE 001016RG 002 MODE = ****** G
. 002036R 002 CATTRS = 000170 EDMASK = ****** G IFNE 001016RG 002 MODE = ****** G
..Z = ****** G CDRSAV = ****** G ENDC 001122RG 002 IFNZ 001016RG 002 MSBMRP = ****** G
..ZBUF = ****** G CH.ADD = 000053 ENDCX 001140R 002 IFOER1 001254R 002 OVRFLG = 000020
1$10 001766R L 002 CH.AND = 000046 ENDFLG 000000RG 009 IFOERR 001174R 002 PAGEXT 000010RG 009

View File

@@ -2549,7 +2549,7 @@
Symbol table
$TIMDF = 000007 CH.ADD = 000053 ERR.T = 010000 G MX.ON = 066307
. ******R 006 CH.AND = 000046 ERR.U = 020000 G MX.PUT 003720R 002
. 000062R 006 CH.AND = 000046 ERR.U = 020000 G MX.PUT 003720R 002
..Z = ****** G CH.BSL = 000134 ERR.XX 000002RG 010 MX.PXX 000036R 006
..ZBUF = ****** G CH.COL = 000072 ERR.Z = 040000 G MX.SYM 000037RG 006
1$10 001464R L 002 CH.COM = 000054 ERRBTS 000000RG 010 MX.TMP 000060R 006

View File

@@ -2217,7 +2217,7 @@
Symbol table
$TIMDF = 000007 44$31 004774R L 002 ERN31 = ****** G MSBARG 000010R 008
. ******R 004 5$17 002450R L 002 ERN54 = ****** G MSBBLK 000002R 008
. 000002R 004 5$17 002450R L 002 ERN54 = ****** G MSBBLK 000002R 008
..Z = ****** G 5$31 005052R L 002 ERN56 = ****** G MSBCNT 000012R 008
..ZBUF = ****** G 6$17 002454R L 002 ERN57 = ****** G MSBEND 000020R 008
1$10 001336R L 002 61$17 002510R L 002 ERN60 = ****** G MSBMRP 000016RG 008

View File

@@ -1278,7 +1278,7 @@
Symbol table
$TIMDF= 000007 CH.MUL= 000052 ENDFLG= ****** G LET.R = 000122 ROLBAS 000000R 018
. ******R 002 CH.PCT= 000045 ENDLIN= ****** G LET.Z = 000132 ROLUPD= ****** G
. 000262R 002 CH.PCT= 000045 ENDLIN= ****** G LET.Z = 000132 ROLUPD= ****** G
2$0 000006R L 002 CH.QM = 000077 ENDP1 000110RG 002 LF = 000012 RSX11D= 000000
3$1 000062R L 002 CH.QTM= 000042 ENDP1C= ****** G LSYROL= 000010 G SAVREG= ****** G
31$2 000134R L 002 CH.RAB= 000076 ENDP2 000162RG 002 M.IDF = 000007 SCAN = ****** G

View File

@@ -1190,7 +1190,7 @@
Symbol table
$TIMDF = 000007 4$3 000360R L 002 CH.SMC = 000073 ERR.XX = ****** G PDPV45 = 000000
. ******R 002 4$4 000504R L 002 CH.SUB = 000055 ERRBTS = ****** G R50UNP 000150RG 002
. 001062R 002 4$4 000504R L 002 CH.SUB = 000055 ERRBTS = ****** G R50UNP 000150RG 002
..Z = ****** G 5$3 000364R L 002 CH.UAR = 000136 ERRREF = ****** G RSX11D = 000000
..ZBUF = ****** G 5$4 000510R L 002 CH.XCL = 000047 FF = 000014 SAVREG 000754RG 002
1$0 000072R L 002 9$5 000566R L 002 CHRPNT 000000RG 008 FT.ID = 000001 SDEBUG = ****** G

View File

@@ -697,7 +697,7 @@
Symbol table
$TIMDF= 000007 CHRPNT= ****** G GLBFLG= 000100 MACDFN= ****** G SHRFLG= 000001
. ******R 002 CR = 000015 INSFLG= 000002 MDFFLG= 000004 SPACE = 000040
. 000156R 002 CR = 000015 INSFLG= 000002 MDFFLG= 000004 SPACE = 000040
1$0 000004R L 002 CRADIX= ****** G IO.TTY= ****** G MK.SYM= 000001 TAB = 000011
1$1 000030R L 002 DEBUG = 000000 IOFTBL= ****** G OBJSEC= ****** G TITLE = ****** G
1$2 000120R L 002 DEFFLG= 000010 LBLFLG= 000002 OVRFLG= 000020 U.FLAG= ****** G

View File

@@ -3022,7 +3022,7 @@
Symbol table
$TIMDF= 000007 DSABL = ****** G IFL = ****** G NCHR = ****** G PDPV45= 000000
. ******R 002 ENABL = ****** G IFLE = ****** G NLIST = ****** G PRINT = ****** G
. 000000R 002 ENABL = ****** G IFLE = ****** G NLIST = ****** G PRINT = ****** G
AAAA = 000001 END = ****** G IFLT = ****** G NTYPE = ****** G PSECT = ****** G
ASCII = ****** G ENDC = ****** G IFNDF = ****** G ODD = ****** G RAD50 = ****** G
ASCIZ = ****** G ENDM = ****** G IFNE = ****** G OPCERR= ****** G RADIX = ****** G

View File

@@ -947,7 +947,7 @@ $BRKAD= ****** G 2$5 000556R L 002 CR = 000015 ROLND
$BRKSY= ****** G 2$6 000762R L 002 DEBUG = 000000 ROLPNT 000006R 006 SYMBOT 000014RG 006
$SBRK = ****** GX 3$1 000232R L 002 DUMROL= ****** G ROLUPD 000010RG 006 SYMHP = ****** G
$TIMDF= 000007 3$4 000432R L 002 ED.REG= ****** G RSX11D= 000000 SYMLP = ****** G
. ******R 002 3$6 001004R L 002 EDMASK= ****** G SAVREG= ****** G SYMOVF= ****** G
. 001150R 002 3$6 001004R L 002 EDMASK= ****** G SAVREG= ****** G SYMOVF= ****** G
1$0 000004R L 002 30$6 001052R L 002 FF = 000014 SCAN 000334RG 002 SYMROL= ****** G
1$1 000162R L 002 4$5 000562R L 002 FT.ID = 000001 SCANC 000320RG 002 TAB = 000011
1$2 000300R L 002 5$1 000242R L 002 FT.UNX= 000001 SCANF 000340R 002 UPBOMB 000002RG 006

View File

@@ -461,7 +461,7 @@
Symbol table
$CLOSE= 104406 G $EXIT = 104401 G $OPEN = 104405 G $SEEK = 104423 G . ******R 001
$CLOSE= 104406 G $EXIT = 104401 G $OPEN = 104405 G $SEEK = 104423 G . 000000R 001
$CREAT= 104410 G $FORK = 104402 G $READ = 104403 G $WAIT = 104524 G DEBUG = 000001
$EXECV= 104413 G $GETTO= 104564 G $SBRK = 104505 G $WRITE= 104404 G

View File

@@ -2973,7 +2973,7 @@
Symbol table
$TIMDF = 000007 32776$6 002016R L 002 CT.EOL = 000000 LET.D = 000104
. ******R 002 32777$6 002066R L 002 CT.LC = 000100 LET.E = 000105
. 006240R 002 32777$6 002066R L 002 CT.LC = 000100 LET.E = 000105
..Z = ****** G 33$2 000364R L 002 CT.NUM = 000020 LET.F = 000106
..ZBUF = ****** G 4$1 000274R L 002 CT.PC = 000271 LET.G = 000107
1$0 000040R L 002 4$11 002756R L 002 CT.PCX = 000010 LET.O = 000117

View File

@@ -461,7 +461,7 @@
Symbol table
. ******R 001 DEBUG = 000001 INICOR= 005670 G
. 013560R 001 DEBUG = 000001 INICOR= 005670 G
Program sections:

View File

@@ -49,7 +49,7 @@ test-asciz.mac:22: ***ERROR Invalid expression in .WORD
Symbol table
. ******R 001 .ASCIZ 000076R 001 CR = 000015 LF = 000012 SOH = 000001
. 000104R 001 .ASCIZ 000076R 001 CR = 000015 LF = 000012 SOH = 000001
Program sections:

View File

@@ -20,7 +20,7 @@
Symbol table
. ******R 002 LABEL 000000R 002
. 000054R 002 LABEL 000000R 002
Program sections:

View File

@@ -32,7 +32,7 @@ test-blkb.mac:25: ***ERROR .ODD must not have an argument
Symbol table
. ******R 001 LABEL 000000R 001 LABEL2 000154R 001
. 000325R 001 LABEL 000000R 001 LABEL2 000154R 001
Program sections:

View File

@@ -40,7 +40,7 @@ test-bsl-mac-arg.mac:23: ***ERROR Constant value required
Symbol table
. ******R 001 FOO = 000002 SIZE = 000010
. 000076R 001 FOO = 000002 SIZE = 000010
Program sections:

View File

@@ -82,7 +82,7 @@
Symbol table
. ******R 001 L1 000366R 001 S2 000356R 001
. 000400R 001 L1 000366R 001 S2 000356R 001
D1 000362R 001 S1 000352R 001 T1 000372R 001

View File

@@ -17,7 +17,7 @@
Symbol table
. ******R 001 IE.ITS= ****** GX IE.MON= ****** GX SPACE 000006R 001
. 000030R 001 IE.ITS= ****** GX IE.MON= ****** GX SPACE 000006R 001
Program sections:

View File

@@ -14,7 +14,7 @@
Symbol table
. ******R 002 Y 000000R 002
. 000006R 002 Y 000000R 002
Program sections:

View File

@@ -35,7 +35,7 @@
Symbol table
. ******R 001
. 000010R 001
Program sections:

View File

@@ -90,7 +90,7 @@ test-endm.mac:45: ***ERROR No conditional block active
Symbol table
. ******R 001 M8 = ****** GX
. 000020R 001 M8 = ****** GX
Program sections:

View File

@@ -200,7 +200,7 @@ test-float.mac:140: ***ERROR Junk at end of line ('5 ; bad: junk')
Symbol table
. ******R 001 AC0 =%000000 E3 = 000003
. 000640R 001 AC0 =%000000 E3 = 000003
A = 000001 AC1 =%000001 F2 =%000002

View File

@@ -17,7 +17,7 @@ test-gbl.mac:11: ***ERROR Invalid expression (complex relocation)
Symbol table
. ******R 001 LAB1 = ****** GX LAB2 = ******
. 000010R 001 LAB1 = ****** GX LAB2 = ******
Program sections:

View File

@@ -153,7 +153,7 @@ test-if.mac:143: ***ERROR Bad .IF expression
Symbol table
. ******R 001 DEFD2 = 000003 LAB2 000037R 001 ONE = 000001
. 000045R 001 DEFD2 = 000003 LAB2 000037R 001 ONE = 000001
DEFD = 000002 LAB1 000036R 001 MIN1 = 177777 ZERO = 000000

View File

@@ -17,7 +17,7 @@ test-impword.mac:10: ***ERROR Invalid expression in .WORD
Symbol table
. ******R 001 MACRO = ****** GX START 000000R 001
. 000020R 001 MACRO = ****** GX START 000000R 001
Program sections:

View File

@@ -58,7 +58,7 @@ test-include.mac:21: ***ERROR Unable to find .INCLUDE file "does-not-exist.mac"
Symbol table
. ******R 001 .INCLU 000012R 001 INCL.M= ****** GX
. 000014R 001 .INCLU 000012R 001 INCL.M= ****** GX
Program sections:

View File

@@ -108,7 +108,7 @@ test-jmp.mac:86: ***ERROR Invalid addressing mode (register expected)
Symbol table
. ******R 003 REIGHT 000010R 003 RZERO 000000R 003 THIRD 000116R 001
. 000012R 003 REIGHT 000010R 003 RZERO 000000R 003 THIRD 000116R 001
EIGHT = 000010 002 RFOUR 000004R 003 SECND 000046R 001 THREE = 000003
FOUR = 000004 002 RSIX 000006R 003 SIX = 000006 002 TWO = 000002 002
LABEL 000166R 001 RTWO 000002R 003 START 000000R 001 ZERO = 000000 002

View File

@@ -17,7 +17,7 @@
Symbol table
. ******R 001
. 000000R 001
Program sections:

View File

@@ -47,7 +47,7 @@
Symbol table
. ******R 001 12345$1 000006R L 001 3$3 000022R L 001 4$5 000050R L 001 LAB4 000026R 001
. 000052R 001 12345$1 000006R L 001 3$3 000022R L 001 4$5 000050R L 001 LAB4 000026R 001
1$0 000002R L 001 12345$2 000012R L 001 3$4 000034R L 001 LAB1 000000R 001 LAB5 000044R 001
1$3 000016R L 001 2$3 000020R L 001 3$5 000046R L 001 LAB2A 000004R 001
1$4 000030R L 001 2$4 000032R L 001 4$3 000024R L 001 LAB2B 000010R 001

View File

@@ -54,7 +54,7 @@
Symbol table
. ******R 001 LABEL = 000003 START 000000R 001
. 000000R 001 LABEL = 000003 START 000000R 001
Program sections:

View File

@@ -25,7 +25,7 @@
Symbol table
. ******R 001
. 000051R 001
Program sections:

View File

@@ -295,7 +295,7 @@
Symbol table
. ******R 001 AC1 =%000001 AC5 =%000005
. 000656R 001 AC1 =%000001 AC5 =%000005
Program sections:

View File

@@ -252,7 +252,7 @@ test-operands.mac:130: ***ERROR Invalid expression (complex relocation)
Symbol table
. ******R 001 AC1 =%000001 AC5 =%000005
. 000356R 001 AC1 =%000001 AC5 =%000005
Program sections:

View File

@@ -127,7 +127,7 @@ test-prec.mac:100: ***ERROR Invalid expression in .WORD
Symbol table
$ = ****** GX .1 = ****** GX .3 = ****** GX FIVE = 000005
. ******R 001 .2 = ****** GX A 000030R 001 NAME = ****** G
. 000164R 001 .2 = ****** GX A 000030R 001 NAME = ****** G
Program sections:

View File

@@ -15,7 +15,7 @@
Symbol table
. ******R 002
. 000000R 002
Program sections:

View File

@@ -38,7 +38,7 @@ test-rad50.mac:25: ***ERROR invalid character value 37777777777
Symbol table
. ******R 001 CHR1 = 000001 CHR2 = 000002 CHR3 = 000003
. 000030R 001 CHR1 = 000001 CHR2 = 000002 CHR3 = 000003
Program sections:

View File

@@ -79,7 +79,7 @@
Symbol table
. = ****** X = 001234 Y 000002R 002
. = 001030 X = 001234 Y 000002R 002
Program sections:

View File

@@ -30,7 +30,7 @@ test-rept.mac:22: ***ERROR No repeat block active
Symbol table
. ******R 001
. 000016R 001
Program sections:

View File

@@ -24,7 +24,7 @@
Symbol table
. ******R 003
. 000010R 003
Program sections:

View File

@@ -5,7 +5,7 @@ test-undef.mac:1: ***ERROR MACRO .TTYOU not found
Symbol table
. ******R 001
. 000000R 001
Program sections:

View File

@@ -15,7 +15,7 @@
Symbol table
. ******R 001 START 000000R 001
. 000056R 001 START 000000R 001
Program sections: