diff lwlink/readfiles.c @ 204:048ebb85f6ef

Added 8 bit external references for base page addressing mode
author lost
date Sun, 29 Mar 2009 14:52:28 +0000
parents 6ebb93b409ba
children 42df94f30d82
line wrap: on
line diff
--- a/lwlink/readfiles.c	Sun Mar 22 22:11:12 2009 +0000
+++ b/lwlink/readfiles.c	Sun Mar 29 14:52:28 2009 +0000
@@ -266,6 +266,7 @@
 			s -> incompletes = rp;
 			rp -> offset = 0;
 			rp -> expr = lw_expr_stack_create();
+			rp -> flags = RELOC_NORM;
 			
 			// parse the expression
 			while (CURBYTE())
@@ -274,6 +275,12 @@
 				NEXTBYTE();
 				switch (tt)
 				{
+				case 0xFF:
+					// a flag specifier
+					tt = CURBYTE();
+					rp -> flags = tt;
+					term = NULL;
+					
 				case 0x01:
 					// 16 bit integer
 					tt = CURBYTE() << 8;
@@ -312,8 +319,11 @@
 					fprintf(stderr, "%s (%s): bad relocation expression\n", fn -> filename, s -> name);
 					exit(1);
 				}
-				lw_expr_stack_push(rp -> expr, term);
-				lw_expr_term_free(term);
+				if (term)
+				{
+					lw_expr_stack_push(rp -> expr, term);
+					lw_expr_term_free(term);
+				}
 			}
 			// skip the NUL
 			NEXTBYTE();