# HG changeset patch # User lost # Date 1231054639 0 # Node ID 21ae0fab469b68e4eb9a1ca0f68799e281aafaab # Parent 6de358e7903f18df23b789e7946c67c71436f072 Added needed infra for useful listing of EQU and ORG type statements diff -r 6de358e7903f -r 21ae0fab469b src/list.c --- a/src/list.c Sun Jan 04 07:31:20 2009 +0000 +++ b/src/list.c Sun Jan 04 07:37:19 2009 +0000 @@ -67,7 +67,14 @@ for (l = as -> lineshead; l; l = l -> next) { - fprintf(lf, "%04X ", l -> codeaddr); + if (l -> addrset == 1 || l -> codelen > 0 || l -> nocodelen > 0) + { + fprintf(lf, "%04X ", l -> codeaddr); + } + else + { + fprintf(lf, " "); + } for (c = 0; c < l -> codelen && c < 5; c++) { diff -r 6de358e7903f -r 21ae0fab469b src/lwasm.h --- a/src/lwasm.h Sun Jan 04 07:31:20 2009 +0000 +++ b/src/lwasm.h Sun Jan 04 07:37:19 2009 +0000 @@ -55,6 +55,8 @@ int codesize; // the size of the code buffer int codeaddr; // address the code goes at int nocodelen; // for "RMB" type instructions + int addrset; // set if this instruction sets the assembly address + int symaddr; // set if this instruction sets a symbol addr with EQU or the like }; // for keeping track of symbols diff -r 6de358e7903f -r 21ae0fab469b src/pass1.c --- a/src/pass1.c Sun Jan 04 07:31:20 2009 +0000 +++ b/src/pass1.c Sun Jan 04 07:37:19 2009 +0000 @@ -140,6 +140,8 @@ nl -> codelen = 0; nl -> codesize = 0; nl -> nocodelen = 0; + nl -> addrset = 0; + nl -> symaddr = -1; if (as -> linestail) as -> linestail -> next = nl; as -> linestail = nl; diff -r 6de358e7903f -r 21ae0fab469b src/pseudo.c --- a/src/pseudo.c Sun Jan 04 07:31:20 2009 +0000 +++ b/src/pseudo.c Sun Jan 04 07:37:19 2009 +0000 @@ -47,8 +47,9 @@ register_error(as, l, 1, "Illegal incomplete reference (pass 1)"); return; } - rval = lwasm_expr_get_value(s); + rval = lwasm_expr_get_value(s) & 0xffff; l -> codeaddr = rval; + l -> addrset = 1; as -> addr = rval; }