diff lwasm/lwasm.h @ 432:58cafa61ab40

Add support for undocumented custom module format (for LW) Nothing to see here. Move along. These are not the droids you are looking for.
author William Astle <lost@l-w.ca>
date Fri, 18 Nov 2016 21:25:43 -0700
parents 4411a6123716
children 61580fc48f98
line wrap: on
line diff
--- a/lwasm/lwasm.h	Wed Nov 16 19:36:16 2016 -0700
+++ b/lwasm/lwasm.h	Fri Nov 18 21:25:43 2016 -0700
@@ -61,7 +61,8 @@
 	OUTPUT_OS9,			// os9 module target
 	OUTPUT_SREC,		// motorola SREC format
 	OUTPUT_IHEX,		// intel hex format
-	OUTPUT_HEX			// generic hexadecimal format
+	OUTPUT_HEX,			// generic hexadecimal format
+	OUTPUT_LWMOD        // special module format for LW
 };
 
 enum lwasm_flags_e
@@ -131,6 +132,7 @@
 	lw_expr_t offset;					// offset for next instance
 	int oblen;							// size of section output
 	int obsize;							// size of output buffer
+	int tbase;                          // temporary base value for resolution
 	unsigned char *obytes;				// output buffer
 	reloctab_t *reloctab;				// table of relocations
 	sectiontab_t *next;
@@ -201,7 +203,8 @@
 	E_UNKNOWN_OPERATION			= 55,
 	E_USER_SPECIFIED			= 56,
 	E_ORG_NOT_FOUND				= 57,
-
+	E_COMPLEX_INCOMPLETE        = 58,
+	
 	/* warnings must be 1000 or greater */
 
 	W_DUPLICATE_SECTION			= 1000,
@@ -380,6 +383,7 @@
 	int skipmacro;						// are we skipping in a macro?	
 	int endseen;						// have we seen an "end" pseudo?
 	int execaddr;						// address from "end"
+	lw_expr_t execaddr_expr;            // address from "end" but as an expression
 	int inmod;							// inside an os9 module?
 	int undefzero;						// used for handling "condundefzero"
 	int pretendmax;						// set if we need to pretend the instruction is max length