shithub: rgbds

Download patch

ref: 72f801283df68672dc568c6acd9345bb4f01d46f
parent: 2ffaf72e3904e5a81b4ab73b1f8dfcd07258a201
author: Antonio Niño Díaz <[email protected]>
date: Mon Jan 1 22:04:26 EST 2018

Cleanup code of rgbasm

Follow Linux kernel coding style.

Signed-off-by: Antonio Niño Díaz <[email protected]>

--- a/include/asm/asm.h
+++ b/include/asm/asm.h
@@ -1,9 +1,9 @@
-/*	asm.h
+/*
+ * asm.h
  *
- *	Contains some assembler-wide defines and externs
+ * Contains some assembler-wide defines and externs
  *
- *	Copyright 1997 Carsten Sorensen
- *
+ * Copyright 1997 Carsten Sorensen
  */
 
 #ifndef RGBDS_ASM_ASM_H
@@ -17,9 +17,9 @@
 #include "asm/localasm.h"
 #include "asm/symbol.h"
 
-#define MAXUNIONS		128
+#define MAXUNIONS	128
 #define MAXMACROARGS	256
-#define MAXINCPATHS		128
+#define MAXINCPATHS	128
 
 extern int32_t nLineNo;
 extern uint32_t nTotalLines;
@@ -36,4 +36,4 @@
 extern struct sSymbol *pPCSymbol;
 extern bool oDontExpandStrings;
 
-#endif	/* //       ASM_H */
+#endif /* RGBDS_ASM_ASM_H */
--- a/include/asm/charmap.h
+++ b/include/asm/charmap.h
@@ -13,8 +13,7 @@
 };
 
 int32_t readUTF8Char(char *destination, char *source);
-void charmap_Sort();
 int32_t charmap_Add(char *input, uint8_t output);
 int32_t charmap_Convert(char **input);
 
-#endif
+#endif /* RGBDS_ASM_CHARMAP_H */
--- a/include/asm/fstack.h
+++ b/include/asm/fstack.h
@@ -1,8 +1,8 @@
-/*	fstack.h
+/*  fstack.h
  *
- *	Contains some assembler-wide defines and externs
+ *  Contains some assembler-wide defines and externs
  *
- *	Copyright 1997 Carsten Sorensen
+ *  Copyright 1997 Carsten Sorensen
  *
  */
 
@@ -31,16 +31,16 @@
 	uint32_t nREPTBlockSize;
 };
 
-void fstk_RunInclude(char *);
-extern void fstk_RunMacroArg(int32_t s);
-void fstk_Init(char *);
-extern void fstk_Dump(void);
-extern void fstk_AddIncludePath(char *s);
-extern uint32_t fstk_RunMacro(char *s);
-extern void fstk_RunRept(uint32_t count);
-FILE * fstk_FindFile(char *);
+void fstk_RunInclude(char *tzFileName);
+void fstk_RunMacroArg(int32_t s);
+void fstk_Init(char *s);
+void fstk_Dump(void);
+void fstk_AddIncludePath(char *s);
+uint32_t fstk_RunMacro(char *s);
+void fstk_RunRept(uint32_t count);
+FILE *fstk_FindFile(char *fname);
 int32_t fstk_GetLine(void);
 
 extern int yywrap(void);
 
-#endif
+#endif /* RGBDS_ASM_FSTACK_H */
--- a/include/asm/lexer.h
+++ b/include/asm/lexer.h
@@ -4,8 +4,8 @@
 #include <stdint.h>
 #include <stdio.h>
 
-#define LEXHASHSIZE (1 << 11)
-#define MAXSTRLEN 255
+#define LEXHASHSIZE	(1 << 11)
+#define MAXSTRLEN	255
 
 struct sLexInitString {
 	char *tzName;
@@ -13,14 +13,15 @@
 };
 
 struct sLexFloat {
-	uint32_t(*Callback) (char *s, uint32_t size);
+	uint32_t (*Callback)(char *s, uint32_t size);
 	uint32_t nToken;
 };
 
 struct yy_buffer_state {
-	char *pBufferRealStart; // actual starting address
-	char *pBufferStart; // address where the data is initially written
-	                    // after the "safety margin"
+	/* Actual starting address */
+	char *pBufferRealStart;
+	/* Address where the data is initially written after a safety margin */
+	char *pBufferStart;
 	char *pBuffer;
 	uint32_t nBufferSize;
 	uint32_t oAtLineStart;
@@ -30,35 +31,36 @@
 	LEX_STATE_NORMAL,
 	LEX_STATE_MACROARGS
 };
-#define INITIAL			0
-#define macroarg		3
 
+#define INITIAL		0
+#define macroarg	3
+
 typedef struct yy_buffer_state *YY_BUFFER_STATE;
 
-extern void yy_set_state(enum eLexerState i);
-extern YY_BUFFER_STATE yy_create_buffer(FILE * f);
-extern YY_BUFFER_STATE yy_scan_bytes(char *mem, uint32_t size);
-extern void yy_delete_buffer(YY_BUFFER_STATE);
-extern void yy_switch_to_buffer(YY_BUFFER_STATE);
-extern uint32_t lex_FloatAlloc(struct sLexFloat * tok);
-extern void lex_FloatAddRange(uint32_t id, uint16_t start, uint16_t end);
-extern void lex_FloatDeleteRange(uint32_t id, uint16_t start, uint16_t end);
-extern void lex_FloatAddFirstRange(uint32_t id, uint16_t start, uint16_t end);
-extern void lex_FloatDeleteFirstRange(uint32_t id, uint16_t start, uint16_t end);
-extern void lex_FloatAddSecondRange(uint32_t id, uint16_t start, uint16_t end);
-extern void lex_FloatDeleteSecondRange(uint32_t id, uint16_t start, uint16_t end);
-extern void lex_Init(void);
-extern void lex_AddStrings(struct sLexInitString * lex);
-extern void lex_SetBuffer(char *buffer, uint32_t len);
-extern uint32_t yylex(void);
-extern void yyunput(char c);
-extern void yyunputstr(char *s);
-extern void yyskipbytes(uint32_t count);
-extern void yyunputbytes(uint32_t count);
+void yy_set_state(enum eLexerState i);
+YY_BUFFER_STATE yy_create_buffer(FILE *f);
+YY_BUFFER_STATE yy_scan_bytes(char *mem, uint32_t size);
+void yy_delete_buffer(YY_BUFFER_STATE buf);
+void yy_switch_to_buffer(YY_BUFFER_STATE buf);
+uint32_t lex_FloatAlloc(const struct sLexFloat *tok);
+void lex_FloatAddRange(uint32_t id, uint16_t start, uint16_t end);
+void lex_FloatDeleteRange(uint32_t id, uint16_t start, uint16_t end);
+void lex_FloatAddFirstRange(uint32_t id, uint16_t start, uint16_t end);
+void lex_FloatDeleteFirstRange(uint32_t id, uint16_t start, uint16_t end);
+void lex_FloatAddSecondRange(uint32_t id, uint16_t start, uint16_t end);
+void lex_FloatDeleteSecondRange(uint32_t id, uint16_t start, uint16_t end);
+void lex_Init(void);
+void lex_AddStrings(const struct sLexInitString *lex);
+void lex_SetBuffer(char *buffer, uint32_t len);
+uint32_t yylex(void);
+void yyunput(char c);
+void yyunputstr(char *s);
+void yyskipbytes(uint32_t count);
+void yyunputbytes(uint32_t count);
 
 extern YY_BUFFER_STATE pCurrentBuffer;
 
-extern void upperstring(char *s);
-extern void lowerstring(char *s);
+void upperstring(char *s);
+void lowerstring(char *s);
 
-#endif
+#endif /* RGBDS_ASM_LEXER_H */
--- a/include/asm/localasm.h
+++ b/include/asm/localasm.h
@@ -1,93 +1,95 @@
-/* GB Z80 instruction groups
+#ifndef RGBDS_ASM_LOCALASM_H
+#define RGBDS_ASM_LOCALASM_H
 
- n3 = 3-bit
- n  = 8-bit
- nn = 16-bit
-
-* ADC  A,n		:	0xCE
-* ADC  A,r		:	0x88|r
-* ADD  A,n		:	0xC6
-* ADD  A,r		:	0x80|r
-* ADD  HL,ss		:	0x09|(ss<<4)
-* ADD  SP,n		:	0xE8
-* AND  A,n		:	0xE6
-* AND  A,r		:	0xA0|r
-* BIT  n3,r		:	0xCB 0x40|(n3<<3)|r
-* CALL cc,nn 		:	0xC4|(cc<<3)
-* CALL nn		:	0xCD
-* CCF			:	0x3F
-* CP   A,n		:	0xFE
-* CP   A,r		:	0xB8|r
-* CPL			:	0x2F
-* DAA			:	0x27
-* DEC  r 		:	0x05|(r<<3)
-* DEC  ss		:	0x0B|(ss<<4)
-* DI			:	0xF3
-* EI			:	0xFB
-* HALT			:	0x76
-* INC  r 		:	0x04|(r<<3)
-* INC  ss		:	0x03|(ss<<4)
-* JP   HL		:	0xE9
-* JP   cc,nn 		:	0xC2|(cc<<3)
-* JP   nn 		:	0xC3|(cc<<3)
-* JR   n		:	0x18
-* JR   cc,n 		:	0x20|(cc<<3)
-* LD   (nn),SP		:	0x08
-* LD   ($FF00+C),A	:	0xE2
-* LD   ($FF00+n),A	:	0xE0
-* LD   (nn),A		:	0xEA
-* LD   (rr),A		:	0x02|(rr<<4) // HL+ and HL- included
-* LD   A,($FF00+C)	:	0xF2
-* LD   A,($FF00+n)	:	0xF0
-* LD   A,(nn)		:	0xFA
-* LD   A,(rr)		:	0x0A|(rr<<4) // HL+ and HL- included
-* LD   HL,SP+n		:	0xF8
-* LD   SP,HL		:	0xF9
-* LD   r,n		:	0x06|(r<<3)
-* LD   r,r' 		:	0x40|(r<<3)|r' // NOTE: LD (HL),(HL) not allowed
-* LD   ss,nn		:	0x01|(ss<<4)
-* NOP			:	0x00
-* OR   A,n		:	0xF6
-* OR   A,r		:	0xB0|r
-* POP  tt		:	0xC1|(tt<<4)
-* PUSH tt		:	0xC5|(tt<<4)
-* RES  n3,r		:	0xCB 0x80|(n3<<3)|r
-* RET			:	0xC9
-* RET  cc		:	0xC0|(cc<<3)
-* RETI			:	0xD9
-* RL   r		:	0xCB 0x10|r
-* RLA			:	0x17
-* RLC  r		:	0xCB 0x00|r
-* RLCA			:	0x07
-* RR   r		:	0xCB 0x18|r
-* RRA			:	0x1F
-* RRC  r		:	0xCB 0x08|r
-* RRCA			:	0x0F
-* RST  n		:	0xC7|n
-* SBC  A,n		:	0xDE
-* SBC  A,r		:	0x98|r
-* SCF			:	0x37
-* SET  n3,r		:	0xCB 0xC0|(n8<<3)|r
-* SLA  r		:	0xCB 0x20|r
-* SRA  r		:	0xCB 0x28|r
-* SRL  r		:	0xCB 0x38|r
-* STOP			:	0x10 0x00
-* SUB  A,n		:	0xD6
-* SUB  A,r		:	0x90|r
-* SWAP r		:	0xCB 0x30|r
-* XOR  A,n		:	0xEE
-* XOR  A,r		:	0xA8|r
-
+/*
+ * GB Z80 instruction groups
+ *
+ * n3 = 3-bit
+ * n  = 8-bit
+ * nn = 16-bit
+ *
+ * ADC  A,n         :   0xCE
+ * ADC  A,r         :   0x88|r
+ * ADD  A,n         :   0xC6
+ * ADD  A,r         :   0x80|r
+ * ADD  HL,ss       :   0x09|(ss<<4)
+ * ADD  SP,n        :   0xE8
+ * AND  A,n         :   0xE6
+ * AND  A,r         :   0xA0|r
+ * BIT  n3,r        :   0xCB 0x40|(n3<<3)|r
+ * CALL cc,nn       :   0xC4|(cc<<3)
+ * CALL nn          :   0xCD
+ * CCF              :   0x3F
+ * CP   A,n         :   0xFE
+ * CP   A,r         :   0xB8|r
+ * CPL              :   0x2F
+ * DAA              :   0x27
+ * DEC  r           :   0x05|(r<<3)
+ * DEC  ss          :   0x0B|(ss<<4)
+ * DI               :   0xF3
+ * EI               :   0xFB
+ * HALT             :   0x76
+ * INC  r           :   0x04|(r<<3)
+ * INC  ss          :   0x03|(ss<<4)
+ * JP   HL          :   0xE9
+ * JP   cc,nn       :   0xC2|(cc<<3)
+ * JP   nn          :   0xC3|(cc<<3)
+ * JR   n           :   0x18
+ * JR   cc,n        :   0x20|(cc<<3)
+ * LD   (nn),SP     :   0x08
+ * LD   ($FF00+C),A :   0xE2
+ * LD   ($FF00+n),A :   0xE0
+ * LD   (nn),A      :   0xEA
+ * LD   (rr),A      :   0x02|(rr<<4) // HL+ and HL- included
+ * LD   A,($FF00+C) :   0xF2
+ * LD   A,($FF00+n) :   0xF0
+ * LD   A,(nn)      :   0xFA
+ * LD   A,(rr)      :   0x0A|(rr<<4) // HL+ and HL- included
+ * LD   HL,SP+n     :   0xF8
+ * LD   SP,HL       :   0xF9
+ * LD   r,n         :   0x06|(r<<3)
+ * LD   r,r'        :   0x40|(r<<3)|r' // NOTE: LD (HL),(HL) not allowed
+ * LD   ss,nn       :   0x01|(ss<<4)
+ * NOP              :   0x00
+ * OR   A,n         :   0xF6
+ * OR   A,r         :   0xB0|r
+ * POP  tt          :   0xC1|(tt<<4)
+ * PUSH tt          :   0xC5|(tt<<4)
+ * RES  n3,r        :   0xCB 0x80|(n3<<3)|r
+ * RET              :   0xC9
+ * RET  cc          :   0xC0|(cc<<3)
+ * RETI             :   0xD9
+ * RL   r           :   0xCB 0x10|r
+ * RLA              :   0x17
+ * RLC  r           :   0xCB 0x00|r
+ * RLCA             :   0x07
+ * RR   r           :   0xCB 0x18|r
+ * RRA              :   0x1F
+ * RRC  r           :   0xCB 0x08|r
+ * RRCA             :   0x0F
+ * RST  n           :   0xC7|n
+ * SBC  A,n         :   0xDE
+ * SBC  A,r         :   0x98|r
+ * SCF              :   0x37
+ * SET  n3,r        :   0xCB 0xC0|(n8<<3)|r
+ * SLA  r           :   0xCB 0x20|r
+ * SRA  r           :   0xCB 0x28|r
+ * SRL  r           :   0xCB 0x38|r
+ * STOP             :   0x10 0x00
+ * SUB  A,n         :   0xD6
+ * SUB  A,r         :   0x90|r
+ * SWAP r           :   0xCB 0x30|r
+ * XOR  A,n         :   0xEE
+ * XOR  A,r         :   0xA8|r
  */
 
-#define	NAME_DB			"db"
-#define	NAME_DW			"dw"
-#define	NAME_DL			"dl"
-#define	NAME_RB			"rb"
-#define	NAME_RW			"rw"
+#define NAME_DB "db"
+#define NAME_DW "dw"
+#define NAME_DL "dl"
+#define NAME_RB "rb"
+#define NAME_RW "rw"
 
 /* "r" defs */
-
 enum {
 	REG_B = 0,
 	REG_C,
@@ -98,8 +100,8 @@
 	REG_HL_IND,
 	REG_A
 };
-/* "rr" defs */
 
+/* "rr" defs */
 enum {
 	REG_BC_IND = 0,
 	REG_DE_IND,
@@ -106,25 +108,17 @@
 	REG_HL_INDINC,
 	REG_HL_INDDEC,
 };
-/* "ss" defs */
 
+/* "ss" defs (SP) and "tt" defs (AF) */
 enum {
 	REG_BC = 0,
-	REG_DE,
-	REG_HL,
-	REG_SP
+	REG_DE = 1,
+	REG_HL = 2,
+	REG_SP = 3,
+	REG_AF = 3
 };
-/* "tt" defs */
 
-/*
-#define REG_BC		0
-#define REG_DE		1
-#define REG_HL		2
- */
-#define REG_AF		3
-
 /* "cc" defs */
-
 enum {
 	CC_NZ = 0,
 	CC_Z,
@@ -131,3 +125,5 @@
 	CC_NC,
 	CC_C
 };
+
+#endif /* RGBDS_ASM_LOCALASM_H */
--- a/include/asm/main.h
+++ b/include/asm/main.h
@@ -1,8 +1,9 @@
 #ifndef RGBDS_MAIN_H
 #define RGBDS_MAIN_H
 
-#include <stdint.h>
 #include <stdbool.h>
+#include <stdint.h>
+
 #include "extern/stdnoreturn.h"
 
 struct sOptions {
@@ -12,8 +13,7 @@
 	bool verbose;
 	bool haltnop;
 	bool exportall;
-	bool warnings; /* true to enable warnings, false to disable them. */
-	    //-1 == random
+	bool warnings; /* True to enable warnings, false to disable them. */
 };
 
 extern char *tzNewMacro;
@@ -23,10 +23,11 @@
 
 extern struct sOptions DefaultOptions;
 extern struct sOptions CurrentOptions;
-extern void opt_Push(void);
-extern void opt_Pop(void);
-extern void opt_Parse(char *s);
 
+void opt_Push(void);
+void opt_Pop(void);
+void opt_Parse(char *s);
+
 /*
  * Used for errors that compromise the whole assembly process by affecting the
  * folliwing code, potencially making the assembler generate errors caused by
@@ -35,6 +36,7 @@
  * when it fails to allocate memory).
  */
 noreturn void fatalerror(const char *fmt, ...);
+
 /*
  * Used for errors that make it impossible to assemble correctly, but don't
  * affect the following code. The code will fail to assemble but the user will
@@ -42,6 +44,7 @@
  * once.
  */
 void yyerror(const char *fmt, ...);
+
 /*
  * Used to warn the user about problems that don't prevent the generation of
  * valid code.
@@ -48,11 +51,11 @@
  */
 void warning(const char *fmt, ...);
 
-#define	YY_FATAL_ERROR fatalerror
+#define YY_FATAL_ERROR fatalerror
 
-#ifdef	YYLMAX
-#undef	YYLMAX
+#ifdef YYLMAX
+#undef YYLMAX
 #endif
 #define YYLMAX 65536
 
-#endif
+#endif /* RGBDS_MAIN_H */
--- a/include/asm/mylink.h
+++ b/include/asm/mylink.h
@@ -58,4 +58,5 @@
 	PATCH_WORD_L,
 	PATCH_LONG_L
 };
-#endif
+
+#endif /* RGBDS_ASM_LINK_H */
--- a/include/asm/mymath.h
+++ b/include/asm/mymath.h
@@ -18,4 +18,4 @@
 int32_t math_Ceil(int32_t i);
 int32_t math_Floor(int32_t i);
 
-#endif
+#endif /* RGBDS_ASM_MATH_H */
--- a/include/asm/output.h
+++ b/include/asm/output.h
@@ -21,13 +21,15 @@
 void out_PrepPass2(void);
 void out_SetFileName(char *s);
 void out_NewSection(char *pzName, uint32_t secttype);
-void out_NewAbsSection(char *pzName, uint32_t secttype, int32_t org, int32_t bank);
-void out_NewAlignedSection(char *pzName, uint32_t secttype, int32_t alignment, int32_t bank);
+void out_NewAbsSection(char *pzName, uint32_t secttype, int32_t org,
+		       int32_t bank);
+void out_NewAlignedSection(char *pzName, uint32_t secttype, int32_t alignment,
+			   int32_t bank);
 void out_AbsByte(int32_t b);
 void out_AbsByteGroup(char *s, int32_t length);
-void out_RelByte(struct Expression * expr);
-void out_RelWord(struct Expression * expr);
-void out_PCRelByte(struct Expression * expr);
+void out_RelByte(struct Expression *expr);
+void out_RelWord(struct Expression *expr);
+void out_PCRelByte(struct Expression *expr);
 void out_WriteObject(void);
 void out_Skip(int32_t skip);
 void out_BinaryFile(char *s);
@@ -34,8 +36,8 @@
 void out_BinaryFileSlice(char *s, int32_t start_pos, int32_t length);
 void out_String(char *s);
 void out_AbsLong(int32_t b);
-void out_RelLong(struct Expression * expr);
+void out_RelLong(struct Expression *expr);
 void out_PushSection(void);
 void out_PopSection(void);
 
-#endif
+#endif /* RGBDS_ASM_OUTPUT_H */
--- a/include/asm/rpn.h
+++ b/include/asm/rpn.h
@@ -12,36 +12,54 @@
 	uint32_t isPCRel;
 };
 
-uint32_t rpn_isReloc(struct Expression * expr);
-uint32_t rpn_isPCRelative(struct Expression * expr);
-void rpn_Symbol(struct Expression * expr, char *tzSym);
-void rpn_Number(struct Expression * expr, uint32_t i);
-void rpn_LOGNOT(struct Expression * expr, struct Expression * src1);
-void rpn_LOGOR(struct Expression * expr, struct Expression * src1, struct Expression * src2);
-void rpn_LOGAND(struct Expression * expr, struct Expression * src1, struct Expression * src2);
-void rpn_LOGEQU(struct Expression * expr, struct Expression * src1, struct Expression * src2);
-void rpn_LOGGT(struct Expression * expr, struct Expression * src1, struct Expression * src2);
-void rpn_LOGLT(struct Expression * expr, struct Expression * src1, struct Expression * src2);
-void rpn_LOGGE(struct Expression * expr, struct Expression * src1, struct Expression * src2);
-void rpn_LOGLE(struct Expression * expr, struct Expression * src1, struct Expression * src2);
-void rpn_LOGNE(struct Expression * expr, struct Expression * src1, struct Expression * src2);
-void rpn_ADD(struct Expression * expr, struct Expression * src1, struct Expression * src2);
-void rpn_SUB(struct Expression * expr, struct Expression * src1, struct Expression * src2);
-void rpn_XOR(struct Expression * expr, struct Expression * src1, struct Expression * src2);
-void rpn_OR(struct Expression * expr, struct Expression * src1, struct Expression * src2);
-void rpn_AND(struct Expression * expr, struct Expression * src1, struct Expression * src2);
-void rpn_SHL(struct Expression * expr, struct Expression * src1, struct Expression * src2);
-void rpn_SHR(struct Expression * expr, struct Expression * src1, struct Expression * src2);
-void rpn_MUL(struct Expression * expr, struct Expression * src1, struct Expression * src2);
-void rpn_DIV(struct Expression * expr, struct Expression * src1, struct Expression * src2);
-void rpn_MOD(struct Expression * expr, struct Expression * src1, struct Expression * src2);
-void rpn_HIGH(struct Expression * expr, struct Expression * src);
-void rpn_LOW(struct Expression * expr, struct Expression * src);
-void rpn_UNNEG(struct Expression * expr, struct Expression * src);
-void rpn_UNNOT(struct Expression * expr, struct Expression * src);
-uint16_t rpn_PopByte(struct Expression * expr);
-void rpn_Bank(struct Expression * expr, char *tzSym);
-void rpn_Reset(struct Expression * expr);
-void rpn_CheckHRAM(struct Expression * expr, struct Expression * src1);
+uint32_t rpn_isReloc(const struct Expression *expr);
+uint32_t rpn_isPCRelative(const struct Expression *expr);
+void rpn_Symbol(struct Expression *expr, char *tzSym);
+void rpn_Number(struct Expression *expr, uint32_t i);
+void rpn_LOGNOT(struct Expression *expr, const struct Expression *src);
+void rpn_LOGOR(struct Expression *expr, const struct Expression *src1,
+	       const struct Expression *src2);
+void rpn_LOGAND(struct Expression *expr, const struct Expression *src1,
+		const struct Expression *src2);
+void rpn_LOGEQU(struct Expression *expr, const struct Expression *src1,
+		const struct Expression *src2);
+void rpn_LOGGT(struct Expression *expr, const struct Expression *src1,
+	       const struct Expression *src2);
+void rpn_LOGLT(struct Expression *expr, const struct Expression *src1,
+	       const struct Expression *src2);
+void rpn_LOGGE(struct Expression *expr, const struct Expression *src1,
+	       const struct Expression *src2);
+void rpn_LOGLE(struct Expression *expr, const struct Expression *src1,
+	       const struct Expression *src2);
+void rpn_LOGNE(struct Expression *expr, const struct Expression *src1,
+	       const struct Expression *src2);
+void rpn_ADD(struct Expression *expr, const struct Expression *src1,
+	     const struct Expression *src2);
+void rpn_SUB(struct Expression *expr, const struct Expression *src1,
+	     const struct Expression *src2);
+void rpn_XOR(struct Expression *expr, const struct Expression *src1,
+	     const struct Expression *src2);
+void rpn_OR(struct Expression *expr, const struct Expression *src1,
+	    const struct Expression *src2);
+void rpn_AND(struct Expression *expr, const struct Expression *src1,
+	     const struct Expression *src2);
+void rpn_SHL(struct Expression *expr, const struct Expression *src1,
+	     const struct Expression *src2);
+void rpn_SHR(struct Expression *expr, const struct Expression *src1,
+	     const struct Expression *src2);
+void rpn_MUL(struct Expression *expr, const struct Expression *src1,
+	     const struct Expression *src2);
+void rpn_DIV(struct Expression *expr, const struct Expression *src1,
+	     const struct Expression *src2);
+void rpn_MOD(struct Expression *expr, const struct Expression *src1,
+	     const struct Expression *src2);
+void rpn_HIGH(struct Expression *expr, const struct Expression *src);
+void rpn_LOW(struct Expression *expr, const struct Expression *src);
+void rpn_UNNEG(struct Expression *expr, const struct Expression *src);
+void rpn_UNNOT(struct Expression *expr, const struct Expression *src);
+uint16_t rpn_PopByte(struct Expression *expr);
+void rpn_Bank(struct Expression *expr, char *tzSym);
+void rpn_Reset(struct Expression *expr);
+void rpn_CheckHRAM(struct Expression *expr, const struct Expression *src);
 
-#endif
+#endif /* RGBDS_ASM_RPN_H */
--- a/include/asm/symbol.h
+++ b/include/asm/symbol.h
@@ -5,8 +5,8 @@
 
 #include "types.h"
 
-#define HASHSIZE (1 << 16)
-#define MAXSYMLEN 256
+#define HASHSIZE	(1 << 16)
+#define MAXSYMLEN	256
 
 struct sSymbol {
 	char tzName[MAXSYMLEN + 1];
@@ -17,28 +17,32 @@
 	struct Section *pSection;
 	uint32_t ulMacroSize;
 	char *pMacro;
-	int32_t(*Callback) (struct sSymbol *);
+	int32_t (*Callback)(struct sSymbol *);
 	char tzFileName[_MAX_PATH + 1]; /* File where the symbol was defined. */
 	uint32_t nFileLine; /* Line where the symbol was defined. */
 };
-#define SYMF_RELOC		0x001	/* symbol will be reloc'ed during
-					 * linking, it's absolute value is
-					 * unknown */
-#define SYMF_EQU		0x002	/* symbol is defined using EQU, will
-					 * not be changed during linking */
-#define SYMF_SET		0x004	/* symbol is (re)defined using SET,
-					 * will not be changed during linking */
-#define SYMF_EXPORT		0x008	/* symbol should be exported */
-#define SYMF_IMPORT		0x010	/* symbol is imported, it's value is
-					 * unknown */
-#define SYMF_LOCAL		0x020	/* symbol is a local symbol */
-#define SYMF_DEFINED	0x040	/* symbol has been defined, not only
-				 * referenced */
-#define SYMF_MACRO		0x080	/* symbol is a macro */
-#define SYMF_STRING		0x100	/* symbol is a stringsymbol */
-#define SYMF_CONST		0x200	/* symbol has a constant value, will
-					 * not be changed during linking */
 
+/* Symbol will be relocated during linking, it's absolute value is unknown */
+#define SYMF_RELOC	0x001
+/* Symbol is defined using EQU, will not be changed during linking */
+#define SYMF_EQU	0x002
+/* Symbol is (re)defined using SET, will not be changed during linking */
+#define SYMF_SET	0x004
+/* Symbol should be exported */
+#define SYMF_EXPORT	0x008
+/* Symbol is imported, it's value is unknown */
+#define SYMF_IMPORT	0x010
+/* Symbol is a local symbol */
+#define SYMF_LOCAL	0x020
+/* Symbol has been defined, not only referenced */
+#define SYMF_DEFINED	0x040
+/* Symbol is a macro */
+#define SYMF_MACRO	0x080
+/* Symbol is a stringsymbol */
+#define SYMF_STRING	0x100
+/* Symbol has a constant value, will not be changed during linking */
+#define SYMF_CONST	0x200
+
 uint32_t calchash(char *s);
 void sym_SetExportAll(uint8_t set);
 void sym_PrepPass1(void);
@@ -76,4 +80,4 @@
 uint32_t sym_isConstDefined(char *tzName);
 int32_t sym_IsRelocDiffDefined(char *tzSym1, char *tzSym2);
 
-#endif
+#endif /* RGBDS_SYMBOL_H */
--- a/src/asm/asmy.y
+++ b/src/asm/asmy.y
@@ -7,25 +7,26 @@
 #include <string.h>
 #include <strings.h>
 
-#include "asm/symbol.h"
 #include "asm/asm.h"
 #include "asm/charmap.h"
-#include "asm/output.h"
-#include "asm/mylink.h"
 #include "asm/fstack.h"
+#include "asm/lexer.h"
+#include "asm/main.h"
+#include "asm/mylink.h"
 #include "asm/mymath.h"
+#include "asm/output.h"
 #include "asm/rpn.h"
-#include "asm/main.h"
-#include "asm/lexer.h"
+#include "asm/symbol.h"
 
 char *tzNewMacro;
 uint32_t ulNewMacroSize;
 
-void
-bankrangecheck(char *name, uint32_t secttype, int32_t org, int32_t bank)
+static void bankrangecheck(char *name, uint32_t secttype, int32_t org,
+			   int32_t bank)
 {
 	int32_t minbank = 0, maxbank = 0;
 	char *stype = NULL;
+
 	switch (secttype) {
 	case SECT_ROMX:
 		stype = "ROMX";
@@ -48,18 +49,16 @@
 		maxbank = 1;
 		break;
 	default:
-		yyerror("BANK only allowed for "
-		    "ROMX, WRAMX, SRAM, or VRAM sections");
+		yyerror("BANK only allowed for ROMX, WRAMX, SRAM, or VRAM sections");
 	}
 
 	if (stype && (bank < minbank || bank > maxbank)) {
 		yyerror("%s bank value $%x out of range ($%x to $%x)",
-		    stype, bank, minbank, maxbank);
+		        stype, bank, minbank, maxbank);
 	}
 
-	if (secttype == SECT_WRAMX) {
+	if (secttype == SECT_WRAMX)
 		bank -= minbank;
-	}
 
 	out_NewAbsSection(name, secttype, org, bank);
 }
@@ -73,25 +72,25 @@
 		size_t i;
 
 		for (i = 0; src[i] != 0; i++) {
-			if (i >= maxLength) {
+			if (i >= maxLength)
 				fatalerror("Symbol value too long to fit buffer");
-			}
+
 			dest[i] = src[i];
 		}
 
 		length = i;
+
 	} else {
 		uint32_t value = sym_GetConstantValue(sym);
-		int32_t fullLength = snprintf(dest, maxLength + 1, "$%X", value);
+		int32_t fullLength = snprintf(dest, maxLength + 1, "$%X",
+					      value);
 
 		if (fullLength < 0) {
 			fatalerror("snprintf encoding error");
 		} else {
 			length = (size_t)fullLength;
-
-			if (length > maxLength) {
+			if (length > maxLength)
 				fatalerror("Symbol value too long to fit buffer");
-			}
 		}
 	}
 
@@ -98,228 +97,210 @@
 	return length;
 }
 
-uint32_t str2int( char *s )
+static uint32_t str2int(char *s)
 {
-	uint32_t r=0;
-	while( *s )
-	{
-		r<<=8;
-		r|=(uint8_t)(*s++);
+	uint32_t r = 0;
+
+	while (*s) {
+		r <<= 8;
+		r |= (uint8_t)(*s++);
 	}
-	return( r );
+
+	return r;
 }
 
-uint32_t str2int2( char *s, int32_t length )
+static uint32_t str2int2(char *s, int32_t length)
 {
 	int32_t i;
-	uint32_t r=0;
-	i = (length - 4 < 0 ? 0 : length - 4);
-	while(i < length)
-	{
-		r<<=8;
-		r|=(uint8_t)(s[i]);
+	uint32_t r = 0;
+
+	i = ((length - 4) < 0) ? 0 : length - 4;
+	while (i < length) {
+		r <<= 8;
+		r |= (uint8_t)s[i];
 		i++;
 	}
-	return( r );
+
+	return r;
 }
 
-uint32_t isWhiteSpace( char s )
+static uint32_t isWhiteSpace(char s)
 {
-	return( s==' ' || s=='\t' || s=='\0' || s=='\n' );
+	return (s == ' ') || (s == '\t') || (s == '\0') || (s == '\n');
 }
 
-uint32_t isRept( char *s )
+static uint32_t isRept(char *s)
 {
-	return( (strncasecmp(s,"REPT",4)==0) && isWhiteSpace(*(s-1)) && isWhiteSpace(s[4]) );
+	return (strncasecmp(s, "REPT", 4) == 0)
+		&& isWhiteSpace(*(s - 1)) && isWhiteSpace(s[4]);
 }
 
-uint32_t isEndr( char *s )
+static uint32_t isEndr(char *s)
 {
-	return( (strncasecmp(s,"Endr",4)==0) && isWhiteSpace(*(s-1)) && isWhiteSpace(s[4]) );
+	return (strncasecmp(s, "ENDR", 4) == 0)
+		&& isWhiteSpace(*(s - 1)) && isWhiteSpace(s[4]);
 }
 
-void copyrept( void )
+static void copyrept(void)
 {
-	int32_t	level=1, len, instring=0;
-	char	*src=pCurrentBuffer->pBuffer;
-	char	*bufferEnd = pCurrentBuffer->pBufferStart + pCurrentBuffer->nBufferSize;
+	int32_t level = 1, len, instring = 0;
+	char *src = pCurrentBuffer->pBuffer;
+	char *bufferEnd = pCurrentBuffer->pBufferStart
+			+ pCurrentBuffer->nBufferSize;
 
-	while( src < bufferEnd && level )
-	{
-		if( instring==0 )
-		{
-			if( isRept(src) )
-			{
-				level+=1;
-				src+=4;
+	while (src < bufferEnd && level) {
+		if (instring == 0) {
+			if (isRept(src)) {
+				level += 1;
+				src += 4;
+			} else if (isEndr(src)) {
+				level -= 1;
+				src += 4;
+			} else {
+				if (*src == '\"')
+					instring = 1;
+				src += 1;
 			}
-			else if( isEndr(src) )
-			{
-				level-=1;
-				src+=4;
+		} else {
+			if (*src == '\\') {
+				src += 2;
+			} else if (*src == '\"') {
+				src += 1;
+				instring = 0;
+			} else {
+				src += 1;
 			}
-			else
-			{
-				if( *src=='\"' )
-					instring=1;
-				src+=1;
-			}
 		}
-		else
-		{
-			if( *src=='\\' )
-			{
-				src+=2;
-			}
-			else if( *src=='\"' )
-			{
-				src+=1;
-				instring=0;
-			}
-			else
-			{
-				src+=1;
-			}
-		}
 	}
 
-	if (level != 0) {
+	if (level != 0)
 		fatalerror("Unterminated REPT block");
-	}
 
-	len=src-pCurrentBuffer->pBuffer-4;
+	len = src - pCurrentBuffer->pBuffer - 4;
 
-	src=pCurrentBuffer->pBuffer;
-	ulNewMacroSize=len;
+	src = pCurrentBuffer->pBuffer;
+	ulNewMacroSize = len;
 
-	if ((tzNewMacro = malloc(ulNewMacroSize + 1)) != NULL) {
-		uint32_t i;
+	tzNewMacro = malloc(ulNewMacroSize + 1);
 
-		tzNewMacro[ulNewMacroSize]=0;
-		for( i=0; i<ulNewMacroSize; i+=1 )
-		{
-			if( (tzNewMacro[i]=src[i])=='\n' )
-				nLineNo+=1;
-		}
-	} else
-		fatalerror( "No mem for REPT block" );
+	if (tzNewMacro == NULL)
+		fatalerror("Not enough memory for REPT block.");
 
-	yyskipbytes( ulNewMacroSize+4 );
+	uint32_t i;
 
+	tzNewMacro[ulNewMacroSize] = 0;
+	for (i = 0; i < ulNewMacroSize; i += 1) {
+		tzNewMacro[i] = src[i];
+		if (src[i] == '\n')
+			nLineNo+=1;
+	}
+
+	yyskipbytes(ulNewMacroSize + 4);
+
 }
 
-uint32_t isMacro( char *s )
+static uint32_t isMacro(char *s)
 {
-	return( (strncasecmp(s,"MACRO",4)==0) && isWhiteSpace(*(s-1)) && isWhiteSpace(s[5]) );
+	return (strncasecmp(s, "MACRO", 4) == 0)
+		&& isWhiteSpace(*(s - 1)) && isWhiteSpace(s[5]);
 }
 
-uint32_t isEndm( char *s )
+static uint32_t isEndm(char *s)
 {
-	return( (strncasecmp(s,"Endm",4)==0) && isWhiteSpace(*(s-1)) && isWhiteSpace(s[4]) );
+	return (strncasecmp(s, "ENDM", 4) == 0)
+		&& isWhiteSpace(*(s - 1)) && isWhiteSpace(s[4]);
 }
 
-void copymacro(void)
+static void copymacro(void)
 {
-	int32_t	level=1, len, instring=0;
-	char	*src=pCurrentBuffer->pBuffer;
-	char	*bufferEnd = pCurrentBuffer->pBufferStart + pCurrentBuffer->nBufferSize;
+	int32_t level = 1, len, instring = 0;
+	char *src = pCurrentBuffer->pBuffer;
+	char *bufferEnd = pCurrentBuffer->pBufferStart
+			+ pCurrentBuffer->nBufferSize;
 
-	while( src < bufferEnd && level )
-	{
-		if( instring==0 )
-		{
-			if( isMacro(src) )
-			{
-				level+=1;
-				src+=4;
+	while (src < bufferEnd && level) {
+		if (instring == 0) {
+			if (isMacro(src)) {
+				level += 1;
+				src += 4;
+			} else if (isEndm(src)) {
+				level -= 1;
+				src += 4;
+			} else {
+				if(*src == '\"')
+					instring = 1;
+				src += 1;
 			}
-			else if( isEndm(src) )
-			{
-				level-=1;
-				src+=4;
+		} else {
+			if (*src == '\\') {
+				src += 2;
+			} else if (*src == '\"') {
+				src += 1;
+				instring = 0;
+			} else {
+				src += 1;
 			}
-			else
-			{
-				if( *src=='\"' )
-					instring=1;
-				src+=1;
-			}
 		}
-		else
-		{
-			if( *src=='\\' )
-			{
-				src+=2;
-			}
-			else if( *src=='\"' )
-			{
-				src+=1;
-				instring=0;
-			}
-			else
-			{
-				src+=1;
-			}
-		}
 	}
 
-	if (level != 0) {
-		fatalerror("Unterminated MACRO definition");
-	}
+	if (level != 0)
+		fatalerror("Unterminated MACRO definition.");
 
-	len=src-pCurrentBuffer->pBuffer-4;
+	len = src - pCurrentBuffer->pBuffer - 4;
 
-	src=pCurrentBuffer->pBuffer;
-	ulNewMacroSize=len;
+	src = pCurrentBuffer->pBuffer;
+	ulNewMacroSize = len;
 
-	if( (tzNewMacro=(char *)malloc(ulNewMacroSize+2))!=NULL )
-	{
-		uint32_t i;
+	tzNewMacro = (char *)malloc(ulNewMacroSize+2);
+	if (tzNewMacro == NULL)
+		fatalerror("Not enough memory for MACRO definition.");
 
-		tzNewMacro[ulNewMacroSize]='\n';
-		tzNewMacro[ulNewMacroSize+1]=0;
-		for( i=0; i<ulNewMacroSize; i+=1 )
-		{
-			if( (tzNewMacro[i]=src[i])=='\n' )
-				nLineNo+=1;
-		}
+	uint32_t i;
+
+	tzNewMacro[ulNewMacroSize] = '\n';
+	tzNewMacro[ulNewMacroSize+1] = 0;
+	for (i = 0; i < ulNewMacroSize; i += 1) {
+		tzNewMacro[i] = src[i];
+		if (src[i] == '\n')
+			nLineNo += 1;
 	}
-	else
-		fatalerror( "No mem for MACRO definition" );
 
-	yyskipbytes( ulNewMacroSize+4 );
+	yyskipbytes(ulNewMacroSize + 4);
 }
 
-uint32_t	isIf(char *s)
+static uint32_t isIf(char *s)
 {
-	return((strncasecmp(s,"If",2) == 0) && isWhiteSpace(s[-1]) && isWhiteSpace(s[2]));
+	return (strncasecmp(s, "IF", 2) == 0)
+		&& isWhiteSpace(s[-1]) && isWhiteSpace(s[2]);
 }
 
-uint32_t	isElif(char *s)
+static uint32_t isElif(char *s)
 {
-	return((strncasecmp(s,"Elif",4) == 0) && isWhiteSpace(s[-1]) && isWhiteSpace(s[4]));
+	return (strncasecmp(s, "ELIF", 4) == 0)
+		&& isWhiteSpace(s[-1]) && isWhiteSpace(s[4]);
 }
 
-uint32_t	isElse(char *s)
+static uint32_t isElse(char *s)
 {
-	return((strncasecmp(s,"Else",4) == 0) && isWhiteSpace(s[-1]) && isWhiteSpace(s[4]));
+	return (strncasecmp(s, "ELSE", 4) == 0)
+		&& isWhiteSpace(s[-1]) && isWhiteSpace(s[4]);
 }
 
-uint32_t	isEndc(char *s)
+static uint32_t isEndc(char *s)
 {
-	return((strncasecmp(s,"Endc",4) == 0) && isWhiteSpace(s[-1]) && isWhiteSpace(s[4]));
+	return (strncasecmp(s, "ENDC", 4) == 0)
+		&& isWhiteSpace(s[-1]) && isWhiteSpace(s[4]);
 }
 
-void	if_skip_to_else()
+static void if_skip_to_else(void)
 {
 	int32_t level = 1;
 	bool inString = false;
-	char *src=pCurrentBuffer->pBuffer;
+	char *src = pCurrentBuffer->pBuffer;
 
 	while (*src && level) {
-		if (*src == '\n') {
+		if (*src == '\n')
 			nLineNo++;
-		}
 
 		if (!inString) {
 			if (isIf(src)) {
@@ -336,14 +317,12 @@
 
 			} else if (isEndc(src)) {
 				level--;
-				if (level != 0) {
+				if (level != 0)
 					src += 4;
-				}
 
 			} else {
-				if (*src=='\"') {
+				if (*src == '\"')
 					inString = true;
-				}
 				src++;
 			}
 		} else {
@@ -363,9 +342,8 @@
 		}
 	}
 
-	if (level != 0) {
+	if (level != 0)
 		fatalerror("Unterminated IF construct");
-	}
 
 	int32_t len = src - pCurrentBuffer->pBuffer;
 
@@ -374,37 +352,32 @@
 	nLineNo--;
 }
 
-void	if_skip_to_endc()
+static void if_skip_to_endc(void)
 {
 	int32_t level = 1;
 	bool inString = false;
-	char *src=pCurrentBuffer->pBuffer;
+	char *src = pCurrentBuffer->pBuffer;
 
 	while (*src && level) {
-		if (*src == '\n') {
+		if (*src == '\n')
 			nLineNo++;
-		}
 
 		if (!inString) {
 			if (isIf(src)) {
 				level++;
 				src += 2;
-
 			} else if (isEndc(src)) {
 				level--;
-				if (level != 0) {
+				if (level != 0)
 					src += 4;
-				}
-
 			} else {
-				if (*src=='\"') {
+				if (*src == '\"')
 					inString = true;
-				}
 				src++;
 			}
-		}
-		else {
+		} else {
 			switch (*src) {
+
 			case '\\':
 				src += 2;
 				break;
@@ -421,9 +394,8 @@
 		}
 	}
 
-	if (level != 0) {
+	if (level != 0)
 		fatalerror("Unterminated IF construct");
-	}
 
 	int32_t len = src - pCurrentBuffer->pBuffer;
 
@@ -432,28 +404,28 @@
 	nLineNo--;
 }
 
-void startUnion() {
-	if (!pCurrentSection) {
+static void startUnion(void)
+{
+	if (!pCurrentSection)
 		fatalerror("UNIONs must be inside a SECTION");
-	}
 
 	uint32_t unionIndex = nUnionDepth;
+
 	nUnionDepth++;
-	if (nUnionDepth > MAXUNIONS) {
+	if (nUnionDepth > MAXUNIONS)
 		fatalerror("Too many nested UNIONs");
-	}
 
 	unionStart[unionIndex] = nPC;
 	unionSize[unionIndex] = 0;
 }
 
-void updateUnion() {
+static void updateUnion(void)
+{
 	uint32_t unionIndex = nUnionDepth - 1;
 	uint32_t size = nPC - unionStart[unionIndex];
 
-	if (size > unionSize[unionIndex]) {
+	if (size > unionSize[unionIndex])
 		unionSize[unionIndex] = size;
-	}
 
 	nPC = unionStart[unionIndex];
 	pCurrentSection->nPC = unionStart[unionIndex];
@@ -464,24 +436,24 @@
 
 %union
 {
-    char tzSym[MAXSYMLEN + 1];
-    char tzString[MAXSTRLEN + 1];
-    struct Expression sVal;
-    int32_t nConstValue;
+	char tzSym[MAXSYMLEN + 1];
+	char tzString[MAXSTRLEN + 1];
+	struct Expression sVal;
+	int32_t nConstValue;
 }
 
-%type	<sVal>	relocconst
+%type	<sVal>		relocconst
 %type	<nConstValue>	const
 %type	<nConstValue>	uconst
 %type	<nConstValue>	const_3bit
-%type	<sVal>	const_8bit
-%type	<sVal>	const_16bit
-%type	<sVal>	const_PCrel
+%type	<sVal>		const_8bit
+%type	<sVal>		const_16bit
+%type	<sVal>		const_PCrel
 %type	<nConstValue>	sectiontype
 
 %type	<tzString>	string
 
-%token	<nConstValue>		T_NUMBER
+%token	<nConstValue>	T_NUMBER
 %token	<tzString>	T_STRING
 
 %left	T_OP_LOGICNOT
@@ -517,7 +489,7 @@
 %left	T_OP_STRUPR
 %left	T_OP_STRLWR
 
-%left	NEG     /* negation--unary minus */
+%left	NEG /* negation -- unary minus */
 
 %token	<tzSym> T_LABEL
 %token	<tzSym> T_ID
@@ -525,7 +497,8 @@
 %token	<tzSym> T_POP_SET
 %token	<tzSym> T_POP_EQUS
 
-%token	T_POP_INCLUDE T_POP_PRINTF T_POP_PRINTT T_POP_PRINTV T_POP_IF T_POP_ELIF T_POP_ELSE T_POP_ENDC
+%token	T_POP_INCLUDE T_POP_PRINTF T_POP_PRINTT T_POP_PRINTV
+%token	T_POP_IF T_POP_ELIF T_POP_ELSE T_POP_ENDC
 %token	T_POP_IMPORT T_POP_EXPORT T_POP_GLOBAL
 %token	T_POP_DB T_POP_DS T_POP_DW T_POP_DL
 %token	T_POP_SECTION
@@ -548,7 +521,8 @@
 %token	T_POP_POPO
 %token	T_POP_PUSHO
 %token	T_POP_OPT
-%token	T_SECT_WRAM0 T_SECT_VRAM T_SECT_ROMX T_SECT_ROM0 T_SECT_HRAM T_SECT_WRAMX T_SECT_SRAM T_SECT_OAM
+%token	T_SECT_WRAM0 T_SECT_VRAM T_SECT_ROMX T_SECT_ROM0 T_SECT_HRAM
+%token	T_SECT_WRAMX T_SECT_SRAM T_SECT_OAM
 %token	T_SECT_HOME T_SECT_DATA T_SECT_CODE T_SECT_BSS
 
 %token	T_Z80_ADC T_Z80_ADD T_Z80_AND
@@ -587,1249 +561,1504 @@
 %type	<nConstValue>	reg_rr
 %type	<nConstValue>	reg_tt
 %type	<nConstValue>	ccode
-%type	<sVal>			op_a_n
+%type	<sVal>		op_a_n
 %type	<nConstValue>	op_a_r
 %type	<nConstValue>	op_hl_ss
-%type	<sVal>			op_mem_ind
+%type	<sVal>		op_mem_ind
 %start asmfile
 
 %%
 
-asmfile : lines;
+asmfile		: lines;
 
-/* Note: The lexer add '\n' at the end of the input */
-lines : /* empty */
-	| lines line '\n' {
-		nLineNo += 1;
-		nTotalLines += 1;
-	};
+/* Note: The lexer adds '\n' at the end of the input */
+lines		: /* empty */
+		| lines line '\n' {
+			nLineNo += 1;
+			nTotalLines += 1;
+		}
+;
 
-line : label
-	| label cpu_command
-	| label macro
-	| label simple_pseudoop
-	| pseudoop;
+line		: label
+		| label cpu_command
+		| label macro
+		| label simple_pseudoop
+		| pseudoop
+;
 
-label : /* empty */
-	| T_LABEL {
-		if ($1[0] == '.')
-			sym_AddLocalReloc($1);
-		else
-			sym_AddReloc($1);
-	} | T_LABEL ':' {
-		if ($1[0] == '.')
-			sym_AddLocalReloc($1);
-		else
-			sym_AddReloc($1);
-	} | T_LABEL ':' ':' {
-		if ($1[0] == '.') {
-			sym_AddLocalReloc($1);
-		} else {
-			sym_AddReloc($1);
+label		: /* empty */
+		| T_LABEL
+		{
+			if ($1[0] == '.')
+				sym_AddLocalReloc($1);
+			else
+				sym_AddReloc($1);
 		}
-		sym_Export($1);
-	};
+		| T_LABEL ':'
+		{
+			if ($1[0] == '.')
+				sym_AddLocalReloc($1);
+			else
+				sym_AddReloc($1);
+		}
+		| T_LABEL ':' ':'
+		{
+			if ($1[0] == '.')
+				sym_AddLocalReloc($1);
+			else
+				sym_AddReloc($1);
+			sym_Export($1);
+		}
+;
 
-macro : T_ID {
-		yy_set_state(LEX_STATE_MACROARGS);
-	} macroargs {
-		yy_set_state(LEX_STATE_NORMAL);
+macro		: T_ID {
+				yy_set_state(LEX_STATE_MACROARGS);
+			} macroargs {
+				yy_set_state(LEX_STATE_NORMAL);
+				if (!fstk_RunMacro($1))
+					fatalerror("Macro '%s' not defined", $1);
+			}
+;
 
-		if (!fstk_RunMacro($1)) {
-			fatalerror("Macro '%s' not defined", $1);
-		}
-	};
+macroargs	: /* empty */
+		| macroarg
+		| macroarg comma macroargs
+;
 
-macroargs : /* empty */
-	| macroarg
-	| macroarg ',' macroargs;
+macroarg	: T_STRING	{ sym_AddNewMacroArg($1); }
+;
 
-macroarg : T_STRING {
-		sym_AddNewMacroArg($1);
-	};
+pseudoop	: equ
+		| set
+		| rb
+		| rw
+		| rl
+		| equs
+		| macrodef
+;
 
-pseudoop : equ
-	| set
-	| rb
-	| rw
-	| rl
-	| equs
-	| macrodef;
+simple_pseudoop : include
+		| printf
+		| printt
+		| printv
+		| if
+		| elif
+		| else
+		| endc
+		| import
+		| export
+		| global
+		| db
+		| dw
+		| dl
+		| ds
+		| section
+		| rsreset
+		| rsset
+		| union
+		| nextu
+		| endu
+		| incbin
+		| charmap
+		| rept
+		| shift
+		| fail
+		| warn
+		| purge
+		| pops
+		| pushs
+		| popo
+		| pusho
+		| opt
+;
 
-simple_pseudoop	:	include
-				|	printf
-				|	printt
-				|	printv
-				|	if
-				|	elif
-				|	else
-				|	endc
-				|	import
-				|	export
-				|	global
-				|	db
-				|	dw
-				|	dl
-				|	ds
-				|	section
-				|	rsreset
-				|	rsset
-				|	union
-				|	nextu
-				|	endu
-				|	incbin
-				|	charmap
-				|	rept
-				|	shift
-				|	fail
-				|	warn
-				|	purge
-				|	pops
-				|	pushs
-				|	popo
-				|	pusho
-				|	opt;
+opt		: T_POP_OPT {
+				yy_set_state(LEX_STATE_MACROARGS);
+			} opt_list {
+				yy_set_state(LEX_STATE_NORMAL);
+			}
+;
 
-opt : T_POP_OPT {
-		yy_set_state(LEX_STATE_MACROARGS);
-	} opt_list {
-		yy_set_state(LEX_STATE_NORMAL);
-	};
+opt_list	: opt_list_entry
+		| opt_list_entry comma opt_list
+;
 
-opt_list : opt_list_entry
-	| opt_list_entry ',' opt_list;
+opt_list_entry	: T_STRING		{ opt_Parse($1); }
+;
 
-opt_list_entry : T_STRING {
-		opt_Parse($1);
-	};
+popo		: T_POP_POPO		{ opt_Pop(); }
+;
 
-popo : T_POP_POPO {
-		opt_Pop();
-	};
+pusho		: T_POP_PUSHO		{ opt_Push(); }
+;
 
-pusho : T_POP_PUSHO {
-		opt_Push();
-	};
+pops		: T_POP_POPS		{ out_PopSection(); }
+;
 
-pops : T_POP_POPS {
-		out_PopSection();
-	};
+pushs		: T_POP_PUSHS		{ out_PushSection(); }
+;
 
-pushs : T_POP_PUSHS {
-		out_PushSection();
-	};
+fail		: T_POP_FAIL string	{ fatalerror("%s", $2); }
+;
 
-fail : T_POP_FAIL string {
-		fatalerror("%s", $2);
-	};
+warn		: T_POP_WARN string	{ warning("%s", $2); }
+;
 
-warn : T_POP_WARN string {
-		warning("%s", $2);
-	};
+shift		: T_POP_SHIFT		{ sym_ShiftCurrentMacroArgs(); }
+;
 
-shift			:	T_POP_SHIFT
-					{ sym_ShiftCurrentMacroArgs(); }
+rept		: T_POP_REPT uconst
+		{
+			copyrept();
+			fstk_RunRept($2);
+		}
 ;
 
-rept			:	T_POP_REPT uconst
-					{
-						copyrept();
-						fstk_RunRept( $2 );
-					}
+macrodef	: T_LABEL ':' T_POP_MACRO
+		{
+			copymacro();
+			sym_AddMacro($1);
+		}
 ;
 
-macrodef		:	T_LABEL ':' T_POP_MACRO
-					{
-						copymacro();
-						sym_AddMacro($1);
-					}
+equs		: T_LABEL T_POP_EQUS string
+		{
+			sym_AddString($1, $3);
+		}
 ;
 
-equs			:	T_LABEL T_POP_EQUS string
-					{ sym_AddString( $1, $3 ); }
+rsset		: T_POP_RSSET uconst
+		{
+			sym_AddSet("_RS", $2);
+		}
 ;
 
-rsset			:	T_POP_RSSET uconst
-					{ sym_AddSet( "_RS", $2 ); }
+rsreset		: T_POP_RSRESET
+		{
+			sym_AddSet("_RS", 0);
+		}
 ;
 
-rsreset			:	T_POP_RSRESET
-					{ sym_AddSet( "_RS", 0 ); }
+rl		: T_LABEL T_POP_RL uconst
+		{
+			sym_AddEqu($1, sym_GetConstantValue("_RS"));
+			sym_AddSet("_RS", sym_GetConstantValue("_RS") + 4 * $3);
+		}
 ;
 
-rl				:	T_LABEL T_POP_RL uconst
-					{
-						sym_AddEqu( $1, sym_GetConstantValue("_RS") );
-						sym_AddSet( "_RS", sym_GetConstantValue("_RS")+4*$3 );
-					}
+rw		: T_LABEL T_POP_RW uconst
+		{
+			sym_AddEqu($1, sym_GetConstantValue("_RS"));
+			sym_AddSet("_RS", sym_GetConstantValue("_RS") + 2 * $3);
+		}
 ;
 
-rw				:	T_LABEL T_POP_RW uconst
-					{
-						sym_AddEqu( $1, sym_GetConstantValue("_RS") );
-						sym_AddSet( "_RS", sym_GetConstantValue("_RS")+2*$3 );
-					}
+rb		: T_LABEL T_POP_RB uconst
+		{
+			sym_AddEqu($1, sym_GetConstantValue("_RS"));
+			sym_AddSet("_RS", sym_GetConstantValue("_RS") + $3);
+		}
 ;
 
-rb				:	T_LABEL T_POP_RB uconst
-					{
-						sym_AddEqu( $1, sym_GetConstantValue("_RS") );
-						sym_AddSet( "_RS", sym_GetConstantValue("_RS")+$3 );
-					}
+union		: T_POP_UNION
+		{
+			startUnion();
+		}
 ;
 
-union			:	T_POP_UNION {
-						startUnion();
-					};
+nextu		: T_POP_NEXTU
+		{
+			if (nUnionDepth <= 0)
+				fatalerror("Found NEXTU outside of a UNION construct");
 
-nextu			:	T_POP_NEXTU {
-						if (nUnionDepth <= 0) {
-							fatalerror("Found NEXTU outside of a UNION construct");
-						}
-	
-						updateUnion();
-					};
+			updateUnion();
+		}
+;
 
-endu			:	T_POP_ENDU {
-						if (nUnionDepth <= 0) {
-							fatalerror("Found ENDU outside of a UNION construct");
-						}
+endu		: T_POP_ENDU
+		{
+			if (nUnionDepth <= 0)
+				fatalerror("Found ENDU outside of a UNION construct");
 
-						updateUnion();
+			updateUnion();
 
-						nUnionDepth--;
-						nPC = unionStart[nUnionDepth] + unionSize[nUnionDepth];
-						pCurrentSection->nPC = nPC;
-						pPCSymbol->nValue = nPC;
-					};
+			nUnionDepth--;
+			nPC = unionStart[nUnionDepth] + unionSize[nUnionDepth];
+			pCurrentSection->nPC = nPC;
+			pPCSymbol->nValue = nPC;
+		}
+;
 
-ds				:	T_POP_DS uconst
-					{ out_Skip( $2 ); }
+ds		: T_POP_DS uconst
+		{
+			out_Skip($2);
+		}
 ;
 
-db			:		T_POP_DB constlist_8bit_entry ',' constlist_8bit
-				|	T_POP_DB constlist_8bit_entry_single
+db		: T_POP_DB constlist_8bit_entry comma constlist_8bit
+		| T_POP_DB constlist_8bit_entry_single
 ;
 
-dw			:		T_POP_DW constlist_16bit_entry ',' constlist_16bit
-				|	T_POP_DW constlist_16bit_entry_single
+dw		: T_POP_DW constlist_16bit_entry comma constlist_16bit
+		| T_POP_DW constlist_16bit_entry_single
 ;
 
-dl			:		T_POP_DL constlist_32bit_entry ',' constlist_32bit
-				|	T_POP_DL constlist_32bit_entry_single
+dl		: T_POP_DL constlist_32bit_entry comma constlist_32bit
+		| T_POP_DL constlist_32bit_entry_single
 ;
 
-purge			:	T_POP_PURGE
-					{
-						oDontExpandStrings = true;
-					}
-					purge_list
-					{
-						oDontExpandStrings = false;
-					}
+purge		: T_POP_PURGE {
+				oDontExpandStrings = true;
+			} purge_list {
+				oDontExpandStrings = false;
+			}
 ;
 
-purge_list		:	purge_list_entry
-				|	purge_list_entry ',' purge_list
+purge_list	: purge_list_entry
+		| purge_list_entry comma purge_list
 ;
 
-purge_list_entry	:	T_ID	{ sym_Purge($1); }
+purge_list_entry : T_ID
+		{
+			sym_Purge($1);
+		}
 ;
 
-import			:	T_POP_IMPORT import_list
+import		: T_POP_IMPORT import_list
 ;
 
-import_list		:	import_list_entry
-				|	import_list_entry ',' import_list
+import_list	: import_list_entry
+		| import_list_entry comma import_list
 ;
 
-import_list_entry	:	T_ID	{
-						/* This is done automatically if the label isn't found
-						 * in the list of defined symbols. */
-						if( nPass==1 )
-							warning("IMPORT is a deprecated keyword with no effect: %s", $1);
-					}
+import_list_entry : T_ID
+		{
+			/*
+			 * This is done automatically if the label isn't found
+			 * in the list of defined symbols.
+			 */
+			if (nPass == 1)
+				warning("IMPORT is a deprecated keyword with no effect: %s", $1);
+		}
 ;
 
-export			:	T_POP_EXPORT export_list
+export		: T_POP_EXPORT export_list
 ;
 
-export_list		:	export_list_entry
-				|	export_list_entry ',' export_list
+export_list	: export_list_entry
+		| export_list_entry comma export_list
 ;
 
-export_list_entry	:	T_ID	{ sym_Export($1); }
+export_list_entry : T_ID
+		{
+			sym_Export($1);
+		}
 ;
 
-global			:	T_POP_GLOBAL global_list
+global		: T_POP_GLOBAL global_list
 ;
 
-global_list		:	global_list_entry
-				|	global_list_entry ',' global_list
+global_list	: global_list_entry
+		| global_list_entry comma global_list
 ;
 
-global_list_entry	:	T_ID	{ sym_Global($1); }
+global_list_entry : T_ID
+		{
+			sym_Global($1);
+		}
 ;
 
-equ				:	T_LABEL T_POP_EQU const
-					{ sym_AddEqu( $1, $3 ); }
+equ		: T_LABEL T_POP_EQU const
+		{
+			sym_AddEqu($1, $3);
+		}
 ;
 
-set				:	T_LABEL T_POP_SET const
-					{ sym_AddSet( $1, $3 ); }
+set		: T_LABEL T_POP_SET const
+		{
+			sym_AddSet($1, $3);
+		}
 ;
 
-include			:	T_POP_INCLUDE string
-					{
-						fstk_RunInclude($2);
-					}
+include		: T_POP_INCLUDE string
+		{
+			fstk_RunInclude($2);
+		}
 ;
 
-incbin			:	T_POP_INCBIN string
-					{ out_BinaryFile( $2 ); }
-				|	T_POP_INCBIN string ',' uconst ',' uconst
-					{
-						out_BinaryFileSlice( $2, $4, $6 );
-					}
+incbin		: T_POP_INCBIN string
+		{
+			out_BinaryFile($2);
+		}
+		| T_POP_INCBIN string comma uconst comma uconst
+		{
+			out_BinaryFileSlice($2, $4, $6);
+		}
 ;
 
-charmap			:	T_POP_CHARMAP string ',' string
-					{
-						if(charmap_Add($2, $4[0] & 0xFF) == -1)
-						{
-							fprintf(stderr, "Error parsing charmap. Either you've added too many (%i), or the input character length is too long (%i)' : %s\n", MAXCHARMAPS, CHARMAPLENGTH, strerror(errno));
-							yyerror("Error parsing charmap.");
-						}
-					}
-				|	T_POP_CHARMAP string ',' const
-					{
-						if(charmap_Add($2, $4 & 0xFF) == -1)
-						{
-							fprintf(stderr, "Error parsing charmap. Either you've added too many (%i), or the input character length is too long (%i)' : %s\n", MAXCHARMAPS, CHARMAPLENGTH, strerror(errno));
-							yyerror("Error parsing charmap.");
-						}
-					}
+charmap		: T_POP_CHARMAP string comma string
+		{
+			if (charmap_Add($2, $4[0] & 0xFF) == -1) {
+				fprintf(stderr, "Error parsing charmap. Either you've added too many (%i), or the input character length is too long (%i)' : %s\n", MAXCHARMAPS, CHARMAPLENGTH, strerror(errno));
+				yyerror("Error parsing charmap.");
+			}
+		}
+		| T_POP_CHARMAP string comma const
+		{
+			if (charmap_Add($2, $4 & 0xFF) == -1) {
+				fprintf(stderr, "Error parsing charmap. Either you've added too many (%i), or the input character length is too long (%i)' : %s\n", MAXCHARMAPS, CHARMAPLENGTH, strerror(errno));
+				yyerror("Error parsing charmap.");
+			}
+		}
 ;
 
-printt			:	T_POP_PRINTT string
-					{
-						if( nPass==1 )
-							printf( "%s", $2 );
-					}
+printt		: T_POP_PRINTT string
+		{
+			if (nPass == 1)
+				printf("%s", $2);
+		}
 ;
 
-printv			:	T_POP_PRINTV const
-					{
-						if( nPass==1 )
-							printf( "$%X", $2 );
-					}
+printv		: T_POP_PRINTV const
+		{
+			if (nPass == 1)
+				printf("$%X", $2);
+		}
 ;
 
-printf			:	T_POP_PRINTF const
-					{
-						if( nPass==1 )
-							math_Print( $2 );
-					}
+printf		: T_POP_PRINTF const
+		{
+			if (nPass == 1)
+				math_Print($2);
+		}
 ;
 
-if				:	T_POP_IF const {
-						nIFDepth++;
-						if (!$2) {
-							if_skip_to_else(); // Continue parsing after ELSE, or at ELIF or ENDC keyword
-						}
-					};
+if		: T_POP_IF const
+		{
+			nIFDepth++;
+			if (!$2) {
+				/*
+				 * Continue parsing after ELSE, or at ELIF or
+				 * ENDC keyword.
+				 */
+				if_skip_to_else();
+			}
+		}
+;
 
-elif			:	T_POP_ELIF const {
-						if (nIFDepth <= 0) {
-							fatalerror("Found ELIF outside an IF construct");
-						}
+elif		: T_POP_ELIF const
+		{
+			if (nIFDepth <= 0)
+				fatalerror("Found ELIF outside an IF construct");
 
-						if (skipElif) {
-							// This is for when ELIF is reached at the end of an IF or ELIF block for which the condition was true.
-							if_skip_to_endc(); // Continue parsing at ENDC keyword
+			if (skipElif) {
+				/*
+				 * Executed when ELIF is reached at the end of
+				 * an IF or ELIF block for which the condition
+				 * was true.
+				 *
+				 * Continue parsing at ENDC keyword
+				 */
+				if_skip_to_endc();
+			} else {
+				/*
+				 * Executed when ELIF is skipped to because the
+				 * condition of the previous IF or ELIF block
+				 * was false.
+				 */
+				skipElif = true;
 
-						} else {
-							// This is for when ELIF is skipped to because the condition of the previous IF or ELIF block was false.
-							skipElif = true;
+				if (!$2) {
+					/*
+					 * Continue parsing after ELSE, or at
+					 * ELIF or ENDC keyword.
+					 */
+					if_skip_to_else();
+				}
+			}
+		}
+;
 
-							if (!$2) {
-								if_skip_to_else(); // Continue parsing after ELSE, or at ELIF or ENDC keyword
-							}
-						}
-					};
+else		: T_POP_ELSE
+		{
+			if (nIFDepth <= 0)
+				fatalerror("Found ELSE outside an IF construct");
 
-else			:	T_POP_ELSE {
-						if (nIFDepth <= 0) {
-							fatalerror("Found ELSE outside an IF construct");
-						}
+			/* Continue parsing at ENDC keyword */
+			if_skip_to_endc();
+		}
+;
 
-						if_skip_to_endc(); // Continue parsing at ENDC keyword
-					};
+endc		: T_POP_ENDC
+		{
+			if (nIFDepth <= 0)
+				fatalerror("Found ENDC outside an IF construct");
 
-endc			:	T_POP_ENDC {
-						if (nIFDepth <= 0) {
-							fatalerror("Found ENDC outside an IF construct");
-						}
+			nIFDepth--;
+		}
+;
 
-						nIFDepth--;
-					};
-
-const_3bit		:	const
-					{
-						if( ($1<0) || ($1>7) )
-						{
-							yyerror("Immediate value must be 3-bit");
-						}
-						else
-							$$=$1&0x7;
-					}
+const_3bit	: const
+		{
+			if (($1 < 0) || ($1 > 7))
+				yyerror("Immediate value must be 3-bit");
+			else
+				$$ = $1 & 0x7;
+		}
 ;
 
-constlist_8bit : constlist_8bit_entry
-	| constlist_8bit_entry ',' constlist_8bit
+constlist_8bit	: constlist_8bit_entry
+		| constlist_8bit_entry comma constlist_8bit
 ;
 
-constlist_8bit_entry : /* empty */ {
-		out_Skip( 1 );
-		if( nPass==1 )
-			warning("Empty entry in list of 8-bit elements (treated as 0).");
-	} | const_8bit {
-		out_RelByte( &$1 );
-	} | string {
-		char *s = $1;
-		int32_t length = charmap_Convert(&s);
-		out_AbsByteGroup(s, length);
-		free(s);
-	}
+constlist_8bit_entry : /* empty */
+		{
+			out_Skip(1);
+			if (nPass == 1)
+				warning("Empty entry in list of 8-bit elements (treated as 0).");
+		}
+		| const_8bit
+		{
+			out_RelByte(&$1);
+		}
+		| string
+		{
+			char *s = $1;
+			int32_t length = charmap_Convert(&s);
+
+			out_AbsByteGroup(s, length);
+			free(s);
+		}
 ;
 
-constlist_8bit_entry_single : /* empty */ {
-		out_Skip( 1 );
-	} | const_8bit {
-		out_RelByte( &$1 );
-	} | string {
-		char *s = $1;
-		int32_t length = charmap_Convert(&s);
-		out_AbsByteGroup(s, length);
-		free(s);
-	}
+constlist_8bit_entry_single : /* empty */
+		{
+			out_Skip(1);
+		}
+		| const_8bit
+		{
+			out_RelByte(&$1);
+		}
+		| string
+		{
+			char *s = $1;
+			int32_t length = charmap_Convert(&s);
+
+			out_AbsByteGroup(s, length);
+			free(s);
+		}
 ;
 
 constlist_16bit : constlist_16bit_entry
-	| constlist_16bit_entry ',' constlist_16bit
+		| constlist_16bit_entry comma constlist_16bit
 ;
 
-constlist_16bit_entry : /* empty */ {
-		out_Skip( 2 );
-		if( nPass==1 )
-			warning("Empty entry in list of 16-bit elements (treated as 0).");
-	} | const_16bit {
-		out_RelWord( &$1 );
-	}
+constlist_16bit_entry : /* empty */
+		{
+			out_Skip(2);
+			if (nPass == 1)
+				warning("Empty entry in list of 16-bit elements (treated as 0).");
+		}
+		| const_16bit
+		{
+			out_RelWord(&$1);
+		}
 ;
 
-constlist_16bit_entry_single : /* empty */ {
-		out_Skip( 2 );
-	} | const_16bit {
-		out_RelWord( &$1 );
-	}
+constlist_16bit_entry_single : /* empty */
+		{
+			out_Skip(2);
+		}
+		| const_16bit
+		{
+			out_RelWord(&$1);
+		}
 ;
 
 constlist_32bit : constlist_32bit_entry
-	| constlist_32bit_entry ',' constlist_32bit
+		| constlist_32bit_entry comma constlist_32bit
 ;
 
-constlist_32bit_entry : /* empty */ {
-		out_Skip( 4 );
-		if( nPass==1 )
-			warning("Empty entry in list of 32-bit elements (treated as 0).");
-	} | relocconst {
-		out_RelLong( &$1 );
-	}
+constlist_32bit_entry : /* empty */
+		{
+			out_Skip(4);
+			if (nPass == 1)
+				warning("Empty entry in list of 32-bit elements (treated as 0).");
+		}
+		| relocconst
+		{
+			out_RelLong(&$1);
+		}
 ;
 
-constlist_32bit_entry_single : /* empty */ {
-		out_Skip( 4 );
-	} | relocconst {
-		out_RelLong( &$1 );
-	}
+constlist_32bit_entry_single : /* empty */
+		{
+			out_Skip(4);
+		}
+		| relocconst
+		{
+			out_RelLong(&$1);
+		}
 ;
 
-const_PCrel		:	relocconst
-					{
-						$$ = $1;
-						if( !rpn_isPCRelative(&$1) )
-							yyerror("Expression must be PC-relative");
-					}
+const_PCrel	: relocconst
+		{
+			if (!rpn_isPCRelative(&$1))
+				yyerror("Expression must be PC-relative");
+			$$ = $1;
+		}
 ;
 
-const_8bit		:	relocconst
-					{
-						if( (!rpn_isReloc(&$1)) && (($1.nVal<-128) || ($1.nVal>255)) )
-						{
-							yyerror("Expression must be 8-bit");
-						}
-						$$=$1;
-					}
+const_8bit	: relocconst
+		{
+			if( (!rpn_isReloc(&$1)) && (($1.nVal < -128) || ($1.nVal > 255)) )
+				yyerror("Expression must be 8-bit");
+			$$ = $1;
+		}
 ;
 
-const_16bit		:	relocconst
-					{
-						if( (!rpn_isReloc(&$1)) && (($1.nVal<-32768) || ($1.nVal>65535)) )
-						{
-							yyerror("Expression must be 16-bit");
-						}
-						$$=$1;
-					}
+const_16bit	: relocconst
+		{
+			if ((!rpn_isReloc(&$1)) && (($1.nVal < -32768) || ($1.nVal > 65535)))
+				yyerror("Expression must be 16-bit");
+			$$ = $1;
+		}
 ;
 
 
-relocconst		:	T_ID
-						{ rpn_Symbol(&$$,$1);	$$.nVal = sym_GetValue($1); }
-				|	T_NUMBER
-						{ rpn_Number(&$$,$1);	$$.nVal = $1; }
-				|	string
-						{
-							char *s = $1;
-							int32_t length = charmap_Convert(&s);
-							uint32_t r = str2int2(s, length);
-							free(s);
-							rpn_Number(&$$,r);
-							$$.nVal=r;
-						}
-				|	T_OP_LOGICNOT relocconst %prec NEG
-						{ rpn_LOGNOT(&$$,&$2); }
-				|	relocconst T_OP_LOGICOR relocconst
-						{ rpn_LOGOR(&$$,&$1,&$3); }
-				|	relocconst T_OP_LOGICAND relocconst
-						{ rpn_LOGAND(&$$,&$1,&$3); }
-				|	relocconst T_OP_LOGICEQU relocconst
-						{ rpn_LOGEQU(&$$,&$1,&$3); }
-				|	relocconst T_OP_LOGICGT relocconst
-						{ rpn_LOGGT(&$$,&$1,&$3); }
-				|	relocconst T_OP_LOGICLT relocconst
-						{ rpn_LOGLT(&$$,&$1,&$3); }
-				|	relocconst T_OP_LOGICGE relocconst
-					 	{ rpn_LOGGE(&$$,&$1,&$3); }
-				|	relocconst T_OP_LOGICLE relocconst
-					 	{ rpn_LOGLE(&$$,&$1,&$3); }
-				|	relocconst T_OP_LOGICNE relocconst
-					 	{ rpn_LOGNE(&$$,&$1,&$3); }
-				|	relocconst T_OP_ADD relocconst
-						{ rpn_ADD(&$$,&$1,&$3); }
-				|	relocconst T_OP_SUB relocconst
-						{ rpn_SUB(&$$,&$1,&$3); }
-				|	relocconst T_OP_XOR relocconst
-						{ rpn_XOR(&$$,&$1,&$3); }
-				|	relocconst T_OP_OR relocconst
-						{ rpn_OR(&$$,&$1,&$3); }
-				|	relocconst T_OP_AND relocconst
-						{ rpn_AND(&$$,&$1,&$3); }
-				|	relocconst T_OP_SHL relocconst
-						{ rpn_SHL(&$$,&$1,&$3); }
-				|	relocconst T_OP_SHR relocconst
-						{ rpn_SHR(&$$,&$1,&$3); }
-				|	relocconst T_OP_MUL relocconst
-						{ rpn_MUL(&$$,&$1,&$3); }
-				|	relocconst T_OP_DIV relocconst
-						{ rpn_DIV(&$$,&$1,&$3); }
-				|	relocconst T_OP_MOD relocconst
-						{ rpn_MOD(&$$,&$1,&$3); }
-				|	T_OP_ADD relocconst %prec NEG
-						{ $$ = $2; }
-				|	T_OP_SUB relocconst %prec NEG
-						{ rpn_UNNEG(&$$,&$2); }
-				|	T_OP_NOT relocconst %prec NEG
-						{ rpn_UNNOT(&$$,&$2); }
-				|	T_OP_HIGH '(' relocconst ')'
-						{ rpn_HIGH(&$$, &$3); }
-				|	T_OP_LOW '(' relocconst ')'
-						{ rpn_LOW(&$$, &$3); }
-				|	T_OP_BANK '(' T_ID ')'
-						{ rpn_Bank(&$$,$3); $$.nVal = 0; }
-				|	T_OP_DEF { oDontExpandStrings = true; } '(' T_ID ')'
-						{ rpn_Number(&$$,sym_isConstDefined($4)); oDontExpandStrings = false; }
-				|	T_OP_ROUND '(' const ')'			{ rpn_Number(&$$,math_Round($3)); }
-				|	T_OP_CEIL '(' const ')'			{ rpn_Number(&$$,math_Ceil($3)); }
-				|	T_OP_FLOOR '(' const ')'			{ rpn_Number(&$$,math_Floor($3)); }
-				|	T_OP_FDIV '(' const ',' const ')'			{ rpn_Number(&$$,math_Div($3,$5)); }
-				|	T_OP_FMUL '(' const ',' const ')'			{ rpn_Number(&$$,math_Mul($3,$5)); }
-				|	T_OP_SIN '(' const ')'			{ rpn_Number(&$$,math_Sin($3)); }
-				|	T_OP_COS '(' const ')'			{ rpn_Number(&$$,math_Cos($3)); }
-				|	T_OP_TAN '(' const ')'			{ rpn_Number(&$$,math_Tan($3)); }
-				|	T_OP_ASIN '(' const ')'			{ rpn_Number(&$$,math_ASin($3)); }
-				|	T_OP_ACOS '(' const ')'			{ rpn_Number(&$$,math_ACos($3)); }
-				|	T_OP_ATAN '(' const ')'			{ rpn_Number(&$$,math_ATan($3)); }
-				|	T_OP_ATAN2 '(' const ',' const ')'	{ rpn_Number(&$$,math_ATan2($3,$5)); }
-				|	T_OP_STRCMP '(' string ',' string ')'	{ rpn_Number(&$$,strcmp($3,$5)); }
-				|	T_OP_STRIN '(' string ',' string ')'
-					{
-						char	*p;
-  						if( (p=strstr($3,$5))!=NULL )
-						{
-							rpn_Number(&$$,p-$3+1);
-						}
-						else
-						{
-							rpn_Number(&$$,0);
-						}
-					}
-				|	T_OP_STRLEN '(' string ')'		{ rpn_Number(&$$,strlen($3)); }
-				|	'(' relocconst ')'
-						{ $$ = $2; }
+relocconst	: T_ID
+		{
+			rpn_Symbol(&$$, $1);
+			$$.nVal = sym_GetValue($1);
+		}
+		| T_NUMBER
+		{
+			rpn_Number(&$$, $1);
+			$$.nVal = $1;
+		}
+		| string
+		{
+			char *s = $1;
+			int32_t length = charmap_Convert(&s);
+			uint32_t r = str2int2(s, length);
+
+			free(s);
+			rpn_Number(&$$, r);
+			$$.nVal = r;
+		}
+		| T_OP_LOGICNOT relocconst %prec NEG	{ rpn_LOGNOT(&$$, &$2); }
+		| relocconst T_OP_LOGICOR relocconst	{ rpn_LOGOR(&$$, &$1, &$3); }
+		| relocconst T_OP_LOGICAND relocconst	{ rpn_LOGAND(&$$, &$1, &$3); }
+		| relocconst T_OP_LOGICEQU relocconst	{ rpn_LOGEQU(&$$, &$1, &$3); }
+		| relocconst T_OP_LOGICGT relocconst	{ rpn_LOGGT(&$$, &$1, &$3); }
+		| relocconst T_OP_LOGICLT relocconst	{ rpn_LOGLT(&$$, &$1, &$3); }
+		| relocconst T_OP_LOGICGE relocconst	{ rpn_LOGGE(&$$, &$1, &$3); }
+		| relocconst T_OP_LOGICLE relocconst	{ rpn_LOGLE(&$$, &$1, &$3); }
+		| relocconst T_OP_LOGICNE relocconst	{ rpn_LOGNE(&$$, &$1, &$3); }
+		| relocconst T_OP_ADD relocconst	{ rpn_ADD(&$$, &$1, &$3); }
+		| relocconst T_OP_SUB relocconst	{ rpn_SUB(&$$, &$1, &$3); }
+		| relocconst T_OP_XOR relocconst	{ rpn_XOR(&$$, &$1, &$3); }
+		| relocconst T_OP_OR relocconst		{ rpn_OR(&$$, &$1, &$3); }
+		| relocconst T_OP_AND relocconst	{ rpn_AND(&$$, &$1, &$3); }
+		| relocconst T_OP_SHL relocconst	{ rpn_SHL(&$$, &$1, &$3); }
+		| relocconst T_OP_SHR relocconst	{ rpn_SHR(&$$, &$1, &$3); }
+		| relocconst T_OP_MUL relocconst	{ rpn_MUL(&$$, &$1, &$3); }
+		| relocconst T_OP_DIV relocconst	{ rpn_DIV(&$$, &$1, &$3); }
+		| relocconst T_OP_MOD relocconst	{ rpn_MOD(&$$, &$1, &$3); }
+		| T_OP_ADD relocconst %prec NEG		{ $$ = $2; }
+		| T_OP_SUB relocconst %prec NEG		{ rpn_UNNEG(&$$, &$2); }
+		| T_OP_NOT relocconst %prec NEG		{ rpn_UNNOT(&$$, &$2); }
+		| T_OP_HIGH '(' relocconst ')'		{ rpn_HIGH(&$$, &$3); }
+		| T_OP_LOW '(' relocconst ')'		{ rpn_LOW(&$$, &$3); }
+		| T_OP_BANK '(' T_ID ')'
+		{
+			rpn_Bank(&$$, $3);
+			$$.nVal = 0;
+		}
+		| T_OP_DEF {
+				oDontExpandStrings = true;
+			} '(' T_ID ')'
+		{
+			rpn_Number(&$$, sym_isConstDefined($4));
+			oDontExpandStrings = false;
+		}
+		| T_OP_ROUND '(' const ')'		{ rpn_Number(&$$, math_Round($3)); }
+		| T_OP_CEIL '(' const ')'		{ rpn_Number(&$$, math_Ceil($3)); }
+		| T_OP_FLOOR '(' const ')'		{ rpn_Number(&$$, math_Floor($3)); }
+		| T_OP_FDIV '(' const comma const ')'	{ rpn_Number(&$$, math_Div($3, $5)); }
+		| T_OP_FMUL '(' const comma const ')'	{ rpn_Number(&$$, math_Mul($3, $5)); }
+		| T_OP_SIN '(' const ')'		{ rpn_Number(&$$, math_Sin($3)); }
+		| T_OP_COS '(' const ')'		{ rpn_Number(&$$, math_Cos($3)); }
+		| T_OP_TAN '(' const ')'		{ rpn_Number(&$$, math_Tan($3)); }
+		| T_OP_ASIN '(' const ')'		{ rpn_Number(&$$, math_ASin($3)); }
+		| T_OP_ACOS '(' const ')'		{ rpn_Number(&$$, math_ACos($3)); }
+		| T_OP_ATAN '(' const ')'		{ rpn_Number(&$$, math_ATan($3)); }
+		| T_OP_ATAN2 '(' const comma const ')'	{ rpn_Number(&$$, math_ATan2($3, $5)); }
+		| T_OP_STRCMP '(' string comma string ')'
+		{
+			rpn_Number(&$$, strcmp($3, $5));
+		}
+		| T_OP_STRIN '(' string comma string ')'
+		{
+			char *p = strstr($3, $5);
+
+			if (p != NULL)
+				rpn_Number(&$$, p - $3 + 1);
+			else
+				rpn_Number(&$$, 0);
+		}
+		| T_OP_STRLEN '(' string ')'		{ rpn_Number(&$$, strlen($3)); }
+		| '(' relocconst ')'			{ $$ = $2; }
 ;
 
-uconst			:	const
-					{
-						if($1 < 0)
-							fatalerror("Constant mustn't be negative: %d", $1);
-						$$=$1;
-					}
+uconst		: const
+		{
+			if ($1 < 0)
+				fatalerror("Constant mustn't be negative: %d", $1);
+			$$ = $1;
+		}
 ;
 
-const			:	T_ID							{ $$ = sym_GetConstantValue($1); }
-				|	T_NUMBER 						{ $$ = $1; }
-				|	string						{ $$ = str2int($1); }
-				|	T_OP_LOGICNOT const %prec NEG	{ $$ = !$2; }
-				|	const T_OP_LOGICOR const		{ $$ = $1 || $3; }
-				|	const T_OP_LOGICAND const		{ $$ = $1 && $3; }
-				|	const T_OP_LOGICEQU const		{ $$ = $1 == $3; }
-				|	const T_OP_LOGICGT const 		{ $$ = $1 > $3; }
-				|	const T_OP_LOGICLT const		{ $$ = $1 < $3; }
-				|	const T_OP_LOGICGE const 		{ $$ = $1 >= $3; }
-				|	const T_OP_LOGICLE const 		{ $$ = $1 <= $3; }
-				|	const T_OP_LOGICNE const 		{ $$ = $1 != $3; }
-				|	const T_OP_ADD const			{ $$ = $1 + $3; }
-				|	const T_OP_SUB const			{ $$ = $1 - $3; }
-				|	T_ID  T_OP_SUB T_ID
-					{
-						if (sym_IsRelocDiffDefined($1, $3) == 0)
-							fatalerror("'%s - %s' not defined.", $1, $3);
-						$$ = sym_GetDefinedValue($1) - sym_GetDefinedValue($3);
-					}
-				|	const T_OP_XOR const			{ $$ = $1 ^ $3; }
-				|	const T_OP_OR const			{ $$ = $1 | $3; }
-				|	const T_OP_AND const			{ $$ = $1 & $3; }
-				|	const T_OP_SHL const			{ $$ = $1 << $3; }
-				|	const T_OP_SHR const			{ $$ = $1 >> $3; }
-				|	const T_OP_MUL const			{ $$ = $1 * $3; }
-				|	const T_OP_DIV const
-					{
-						if ($3 == 0)
-							fatalerror("division by zero");
-						$$ = $1 / $3;
-					}
-				|	const T_OP_MOD const
-					{
-						if ($3 == 0)
-							fatalerror("division by zero");
-						$$ = $1 % $3;
-					}
-				|	T_OP_ADD const %prec NEG		{ $$ = +$2; }
-				|	T_OP_SUB const %prec NEG		{ $$ = -$2; }
-				|	T_OP_NOT const %prec NEG		{ $$ = ~$2; }
-				|	T_OP_ROUND '(' const ')'		{ $$ = math_Round($3); }
-				|	T_OP_CEIL '(' const ')'			{ $$ = math_Ceil($3); }
-				|	T_OP_FLOOR '(' const ')'		{ $$ = math_Floor($3); }
-				|	T_OP_FDIV '(' const ',' const ')'			{ $$ = math_Div($3,$5); }
-				|	T_OP_FMUL '(' const ',' const ')'			{ $$ = math_Mul($3,$5); }
-				|	T_OP_SIN '(' const ')'			{ $$ = math_Sin($3); }
-				|	T_OP_COS '(' const ')'			{ $$ = math_Cos($3); }
-				|	T_OP_TAN '(' const ')'			{ $$ = math_Tan($3); }
-				|	T_OP_ASIN '(' const ')'			{ $$ = math_ASin($3); }
-				|	T_OP_ACOS '(' const ')'			{ $$ = math_ACos($3); }
-				|	T_OP_ATAN '(' const ')'			{ $$ = math_ATan($3); }
-				|	T_OP_ATAN2 '(' const ',' const ')'	{ $$ = math_ATan2($3,$5); }
-				|	T_OP_DEF { oDontExpandStrings = true; } '(' T_ID ')'	{ $$ = sym_isConstDefined($4); oDontExpandStrings = false; }
-				|	T_OP_STRCMP '(' string ',' string ')'	{ $$ = strcmp( $3, $5 ); }
-				|	T_OP_STRIN '(' string ',' string ')'
-					{
-						char	*p;
-  						if( (p=strstr($3,$5))!=NULL )
-						{
-							$$ = p-$3+1;
-						}
-						else
-						{
-							$$ = 0;
-						}
-					}
-				|	T_OP_STRLEN '(' string ')'		{ $$ = strlen($3); }
-				|	'(' const ')'					{ $$ = $2; }
+const		: T_ID					{ $$ = sym_GetConstantValue($1); }
+		| T_NUMBER				{ $$ = $1; }
+		| string				{ $$ = str2int($1); }
+		| T_OP_LOGICNOT const %prec NEG		{ $$ = !$2; }
+		| const T_OP_LOGICOR const		{ $$ = $1 || $3; }
+		| const T_OP_LOGICAND const		{ $$ = $1 && $3; }
+		| const T_OP_LOGICEQU const		{ $$ = $1 == $3; }
+		| const T_OP_LOGICGT const 		{ $$ = $1 > $3; }
+		| const T_OP_LOGICLT const		{ $$ = $1 < $3; }
+		| const T_OP_LOGICGE const 		{ $$ = $1 >= $3; }
+		| const T_OP_LOGICLE const 		{ $$ = $1 <= $3; }
+		| const T_OP_LOGICNE const 		{ $$ = $1 != $3; }
+		| const T_OP_ADD const			{ $$ = $1 + $3; }
+		| const T_OP_SUB const			{ $$ = $1 - $3; }
+		| T_ID  T_OP_SUB T_ID
+		{
+			if (sym_IsRelocDiffDefined($1, $3) == 0)
+				fatalerror("'%s - %s' not defined.", $1, $3);
+			$$ = sym_GetDefinedValue($1) - sym_GetDefinedValue($3);
+		}
+		| const T_OP_XOR const			{ $$ = $1 ^ $3; }
+		| const T_OP_OR const			{ $$ = $1 | $3; }
+		| const T_OP_AND const			{ $$ = $1 & $3; }
+		| const T_OP_SHL const			{ $$ = $1 << $3; }
+		| const T_OP_SHR const			{ $$ = $1 >> $3; }
+		| const T_OP_MUL const			{ $$ = $1 * $3; }
+		| const T_OP_DIV const
+		{
+			if ($3 == 0)
+				fatalerror("division by zero");
+			$$ = $1 / $3;
+		}
+		| const T_OP_MOD const
+		{
+			if ($3 == 0)
+				fatalerror("division by zero");
+			$$ = $1 % $3;
+		}
+		| T_OP_ADD const %prec NEG		{ $$ = +$2; }
+		| T_OP_SUB const %prec NEG		{ $$ = -$2; }
+		| T_OP_NOT const %prec NEG		{ $$ = ~$2; }
+		| T_OP_ROUND '(' const ')'		{ $$ = math_Round($3); }
+		| T_OP_CEIL '(' const ')'		{ $$ = math_Ceil($3); }
+		| T_OP_FLOOR '(' const ')'		{ $$ = math_Floor($3); }
+		| T_OP_FDIV '(' const comma const ')'	{ $$ = math_Div($3,$5); }
+		| T_OP_FMUL '(' const comma const ')'	{ $$ = math_Mul($3,$5); }
+		| T_OP_SIN '(' const ')'		{ $$ = math_Sin($3); }
+		| T_OP_COS '(' const ')'		{ $$ = math_Cos($3); }
+		| T_OP_TAN '(' const ')'		{ $$ = math_Tan($3); }
+		| T_OP_ASIN '(' const ')'		{ $$ = math_ASin($3); }
+		| T_OP_ACOS '(' const ')'		{ $$ = math_ACos($3); }
+		| T_OP_ATAN '(' const ')'		{ $$ = math_ATan($3); }
+		| T_OP_ATAN2 '(' const comma const ')'	{ $$ = math_ATan2($3,$5); }
+		| T_OP_DEF {
+				oDontExpandStrings = true;
+			} '(' T_ID ')'
+		{
+			$$ = sym_isConstDefined($4);
+			oDontExpandStrings = false;
+		}
+		| T_OP_STRCMP '(' string comma string ')'
+		{
+			$$ = strcmp($3, $5);
+		}
+		| T_OP_STRIN '(' string comma string ')'
+		{
+			char *p = strstr($3, $5);
+
+			if (p != NULL)
+				$$ = p - $3 + 1;
+			else
+				$$ = 0;
+		}
+		| T_OP_STRLEN '(' string ')'		{ $$ = strlen($3); }
+		| '(' const ')'				{ $$ = $2; }
 ;
 
-string			:	T_STRING
-					{ strcpy($$,$1); }
-				|	T_OP_STRSUB '(' string ',' uconst ',' uconst ')'
-					{ strncpy($$,$3+$5-1,$7); $$[$7]=0; }
-				|	T_OP_STRCAT '(' string ',' string ')'
-					{ strcpy($$,$3); strcat($$,$5); }
-				|	T_OP_STRUPR '(' string ')'
-					{ strcpy($$,$3); upperstring($$); }
-				|	T_OP_STRLWR '(' string ')'
-					{ strcpy($$,$3); lowerstring($$); }
+string		: T_STRING
+		{
+			strcpy($$, $1);
+		}
+		| T_OP_STRSUB '(' string comma uconst comma uconst ')'
+		{
+			strncpy($$, $3 + $5 - 1, $7);
+			$$[$7] = 0;
+		}
+		| T_OP_STRCAT '(' string comma string ')'
+		{
+			strcpy($$, $3);
+			strcat($$, $5);
+		}
+		| T_OP_STRUPR '(' string ')'
+		{
+			strcpy($$, $3);
+			upperstring($$);
+		}
+		| T_OP_STRLWR '(' string ')'
+		{
+			strcpy($$, $3);
+			lowerstring($$);
+		}
 ;
-section:
-		T_POP_SECTION string ',' sectiontype
+
+section		: T_POP_SECTION string comma sectiontype
 		{
-			out_NewSection($2,$4);
+			out_NewSection($2, $4);
 		}
-	|	T_POP_SECTION string ',' sectiontype '[' uconst ']'
+		| T_POP_SECTION string comma sectiontype '[' uconst ']'
 		{
-			if( $6>=0 && $6<0x10000 )
-				out_NewAbsSection($2,$4,$6,-1);
+			if (($6 >= 0) && ($6 < 0x10000))
+				out_NewAbsSection($2, $4, $6, -1);
 			else
 				yyerror("Address $%x not 16-bit", $6);
 		}
-	|	T_POP_SECTION string ',' sectiontype ',' T_OP_ALIGN '[' uconst ']'
+		| T_POP_SECTION string comma sectiontype comma T_OP_ALIGN '[' uconst ']'
 		{
 			out_NewAlignedSection($2, $4, $8, -1);
 		}
-	|	T_POP_SECTION string ',' sectiontype ',' T_OP_BANK '[' uconst ']'
+		| T_POP_SECTION string comma sectiontype comma T_OP_BANK '[' uconst ']'
 		{
 			bankrangecheck($2, $4, -1, $8);
 		}
-	|	T_POP_SECTION string ',' sectiontype '[' uconst ']' ',' T_OP_BANK '[' uconst ']'
+		| T_POP_SECTION string comma sectiontype '[' uconst ']' comma T_OP_BANK '[' uconst ']'
 		{
-			if ($6 < 0 || $6 > 0x10000) {
+			if (($6 < 0) || ($6 > 0x10000))
 				yyerror("Address $%x not 16-bit", $6);
-			}
 			bankrangecheck($2, $4, $6, $11);
 		}
-	|	T_POP_SECTION string ',' sectiontype ',' T_OP_ALIGN '[' uconst ']' ',' T_OP_BANK '[' uconst ']'
+		| T_POP_SECTION string comma sectiontype comma T_OP_ALIGN '[' uconst ']' comma T_OP_BANK '[' uconst ']'
 		{
 			out_NewAlignedSection($2, $4, $8, $13);
 		}
-	|	T_POP_SECTION string ',' sectiontype ',' T_OP_BANK '[' uconst ']' ',' T_OP_ALIGN '[' uconst ']'
+		| T_POP_SECTION string comma sectiontype comma T_OP_BANK '[' uconst ']' comma T_OP_ALIGN '[' uconst ']'
 		{
 			out_NewAlignedSection($2, $4, $13, $8);
 		}
 ;
 
-sectiontype:
-		T_SECT_WRAM0	{ $$=SECT_WRAM0; }
-	|	T_SECT_VRAM	{ $$=SECT_VRAM; }
-	|	T_SECT_ROMX	{ $$=SECT_ROMX; }
-	|	T_SECT_ROM0	{ $$=SECT_ROM0; }
-	|	T_SECT_HRAM	{ $$=SECT_HRAM; }
-	|	T_SECT_WRAMX	{ $$=SECT_WRAMX; }
-	|	T_SECT_SRAM	{ $$=SECT_SRAM; }
-	|	T_SECT_OAM	{ $$=SECT_OAM; }
-	|	T_SECT_HOME	{
-					warning("HOME section name is deprecated, use ROM0 instead.");
-					$$=SECT_ROM0;
-				}
-	|	T_SECT_DATA	{
-					warning("DATA section name is deprecated, use ROMX instead.");
-					$$=SECT_ROMX;
-				}
-	|	T_SECT_CODE	{
-					warning("CODE section name is deprecated, use ROMX instead.");
-					$$=SECT_ROMX;
-				}
-	|	T_SECT_BSS	{
-					warning("BSS section name is deprecated, use WRAM0 instead.");
-					$$=SECT_WRAM0;
-				}
+sectiontype	: T_SECT_WRAM0	{ $$ = SECT_WRAM0; }
+		| T_SECT_VRAM	{ $$ = SECT_VRAM; }
+		| T_SECT_ROMX	{ $$ = SECT_ROMX; }
+		| T_SECT_ROM0	{ $$ = SECT_ROM0; }
+		| T_SECT_HRAM	{ $$ = SECT_HRAM; }
+		| T_SECT_WRAMX	{ $$ = SECT_WRAMX; }
+		| T_SECT_SRAM	{ $$ = SECT_SRAM; }
+		| T_SECT_OAM	{ $$ = SECT_OAM; }
+		| T_SECT_HOME
+		{
+			warning("HOME section name is deprecated, use ROM0 instead.");
+			$$ = SECT_ROM0;
+		}
+		| T_SECT_DATA
+		{
+			warning("DATA section name is deprecated, use ROMX instead.");
+			$$ = SECT_ROMX;
+		}
+		| T_SECT_CODE
+		{
+			warning("CODE section name is deprecated, use ROMX instead.");
+			$$ = SECT_ROMX;
+		}
+		| T_SECT_BSS
+		{
+			warning("BSS section name is deprecated, use WRAM0 instead.");
+			$$ = SECT_WRAM0;
+		}
 ;
 
 
-cpu_command		:	z80_adc
-				|	z80_add
-				|	z80_and
-				|	z80_bit
-				|	z80_call
-				|	z80_ccf
-				|	z80_cp
-				|	z80_cpl
-				|	z80_daa
-				|	z80_dec
-				|	z80_di
-				|	z80_ei
-				|	z80_halt
-				|	z80_inc
-				|	z80_jp
-				|	z80_jr
-				|	z80_ld
-				|	z80_ldd
-				|	z80_ldi
-				|	z80_ldio
-				|	z80_nop
-				|	z80_or
-				|	z80_pop
-				|	z80_push
-				|	z80_res
-				|	z80_ret
-				|	z80_reti
-				|	z80_rl
-				|	z80_rla
-				|	z80_rlc
-				|	z80_rlca
-				|	z80_rr
-				|	z80_rra
-				|	z80_rrc
-				|	z80_rrca
-				|	z80_rst
-				|	z80_sbc
-				|	z80_scf
-				|	z80_set
-				|	z80_sla
-				|	z80_sra
-				|	z80_srl
-				|	z80_stop
-				|	z80_sub
-				|	z80_swap
-				|	z80_xor
+cpu_command	: z80_adc
+		| z80_add
+		| z80_and
+		| z80_bit
+		| z80_call
+		| z80_ccf
+		| z80_cp
+		| z80_cpl
+		| z80_daa
+		| z80_dec
+		| z80_di
+		| z80_ei
+		| z80_halt
+		| z80_inc
+		| z80_jp
+		| z80_jr
+		| z80_ld
+		| z80_ldd
+		| z80_ldi
+		| z80_ldio
+		| z80_nop
+		| z80_or
+		| z80_pop
+		| z80_push
+		| z80_res
+		| z80_ret
+		| z80_reti
+		| z80_rl
+		| z80_rla
+		| z80_rlc
+		| z80_rlca
+		| z80_rr
+		| z80_rra
+		| z80_rrc
+		| z80_rrca
+		| z80_rst
+		| z80_sbc
+		| z80_scf
+		| z80_set
+		| z80_sla
+		| z80_sra
+		| z80_srl
+		| z80_stop
+		| z80_sub
+		| z80_swap
+		| z80_xor
 ;
 
-z80_adc			:	T_Z80_ADC op_a_n	{ out_AbsByte(0xCE); out_RelByte(&$2); }
-				|	T_Z80_ADC op_a_r	{ out_AbsByte(0x88|$2); }
+z80_adc		: T_Z80_ADC op_a_n
+		{
+			out_AbsByte(0xCE);
+			out_RelByte(&$2);
+		}
+		| T_Z80_ADC op_a_r
+		{
+			out_AbsByte(0x88 | $2);
+		}
 ;
 
-z80_add			:	T_Z80_ADD op_a_n	{ out_AbsByte(0xC6); out_RelByte(&$2); }
-				|	T_Z80_ADD op_a_r	{ out_AbsByte(0x80|$2); }
-				|	T_Z80_ADD op_hl_ss	{ out_AbsByte(0x09|($2<<4)); }
-				|	T_Z80_ADD T_MODE_SP comma const_8bit
-					{ out_AbsByte(0xE8); out_RelByte(&$4); }
+z80_add		: T_Z80_ADD op_a_n
+		{
+			out_AbsByte(0xC6);
+			out_RelByte(&$2);
+		}
+		| T_Z80_ADD op_a_r
+		{
+			out_AbsByte(0x80 | $2);
+		}
+		| T_Z80_ADD op_hl_ss
+		{
+			out_AbsByte(0x09 | ($2 << 4));
+		}
+		| T_Z80_ADD T_MODE_SP comma const_8bit
+		{
+			out_AbsByte(0xE8);
+			out_RelByte(&$4);
+		}
 
 ;
 
-z80_and			:	T_Z80_AND op_a_n	{ out_AbsByte(0xE6); out_RelByte(&$2); }
-				|	T_Z80_AND op_a_r	{ out_AbsByte(0xA0|$2); }
+z80_and		: T_Z80_AND op_a_n
+		{
+			out_AbsByte(0xE6);
+			out_RelByte(&$2);
+		}
+		| T_Z80_AND op_a_r
+		{
+			out_AbsByte(0xA0 | $2);
+		}
 ;
 
-z80_bit			:	T_Z80_BIT const_3bit comma reg_r
-					{ out_AbsByte(0xCB); out_AbsByte(0x40|($2<<3)|$4); }
+z80_bit		: T_Z80_BIT const_3bit comma reg_r
+		{
+			out_AbsByte(0xCB);
+			out_AbsByte(0x40 | ($2 << 3) | $4);
+		}
 ;
 
-z80_call		:	T_Z80_CALL const_16bit
-					{ out_AbsByte(0xCD); out_RelWord(&$2); }
-				|	T_Z80_CALL ccode comma const_16bit
-					{ out_AbsByte(0xC4|($2<<3)); out_RelWord(&$4); }
+z80_call	: T_Z80_CALL const_16bit
+		{
+			out_AbsByte(0xCD);
+			out_RelWord(&$2);
+		}
+		| T_Z80_CALL ccode comma const_16bit
+		{
+			out_AbsByte(0xC4 | ($2 << 3));
+			out_RelWord(&$4);
+		}
 ;
 
-z80_ccf			:	T_Z80_CCF
-					{ out_AbsByte(0x3F); }
+z80_ccf		: T_Z80_CCF
+		{
+			out_AbsByte(0x3F);
+		}
 ;
 
-z80_cp			:	T_Z80_CP op_a_n	{ out_AbsByte(0xFE); out_RelByte(&$2); }
-				|	T_Z80_CP op_a_r	{ out_AbsByte(0xB8|$2); }
+z80_cp		: T_Z80_CP op_a_n
+		{
+			out_AbsByte(0xFE);
+			out_RelByte(&$2);
+		}
+		| T_Z80_CP op_a_r
+		{
+			out_AbsByte(0xB8 | $2);
+		}
 ;
 
-z80_cpl			:	T_Z80_CPL { out_AbsByte(0x2F); }
+z80_cpl		: T_Z80_CPL
+		{
+			out_AbsByte(0x2F);
+		}
 ;
 
-z80_daa			:	T_Z80_DAA { out_AbsByte(0x27); }
+z80_daa		: T_Z80_DAA
+		{
+			out_AbsByte(0x27);
+		}
 ;
 
-z80_dec			:	T_Z80_DEC reg_r
-					{ out_AbsByte(0x05|($2<<3)); }
-				|	T_Z80_DEC reg_ss
-					{ out_AbsByte(0x0B|($2<<4)); }
+z80_dec		: T_Z80_DEC reg_r
+		{
+			out_AbsByte(0x05 | ($2 << 3));
+		}
+		| T_Z80_DEC reg_ss
+		{
+			out_AbsByte(0x0B | ($2 << 4));
+		}
 ;
 
-z80_di			:	T_Z80_DI
-					{ out_AbsByte(0xF3); }
+z80_di		: T_Z80_DI
+		{
+			out_AbsByte(0xF3);
+		}
 ;
 
-z80_ei			:	T_Z80_EI
-					{ out_AbsByte(0xFB); }
+z80_ei		: T_Z80_EI
+		{
+			out_AbsByte(0xFB);
+		}
 ;
 
-z80_halt: T_Z80_HALT
+z80_halt	: T_Z80_HALT
 		{
 			out_AbsByte(0x76);
-			if (CurrentOptions.haltnop) {
+			if (CurrentOptions.haltnop)
 				out_AbsByte(0x00);
-			}
 		}
 ;
 
-z80_inc			:	T_Z80_INC reg_r
-					{ out_AbsByte(0x04|($2<<3)); }
-				|	T_Z80_INC reg_ss
-					{ out_AbsByte(0x03|($2<<4)); }
+z80_inc		: T_Z80_INC reg_r
+		{
+			out_AbsByte(0x04 | ($2 << 3));
+		}
+		| T_Z80_INC reg_ss
+		{
+			out_AbsByte(0x03 | ($2 << 4));
+		}
 ;
 
-z80_jp			:	T_Z80_JP const_16bit
-					{ out_AbsByte(0xC3); out_RelWord(&$2); }
-				|	T_Z80_JP ccode comma const_16bit
-					{ out_AbsByte(0xC2|($2<<3)); out_RelWord(&$4); }
-				|	T_Z80_JP T_MODE_HL_IND
-					{
-						out_AbsByte(0xE9);
-						if( nPass==1 )
-							warning("'JP [HL]' is obsolete, use 'JP HL' instead.");
-					}
-				|	T_Z80_JP T_MODE_HL
-					{ out_AbsByte(0xE9); }
+z80_jp		: T_Z80_JP const_16bit
+		{
+			out_AbsByte(0xC3);
+			out_RelWord(&$2);
+		}
+		| T_Z80_JP ccode comma const_16bit
+		{
+			out_AbsByte(0xC2 | ($2 << 3));
+			out_RelWord(&$4);
+		}
+		| T_Z80_JP T_MODE_HL_IND
+		{
+			out_AbsByte(0xE9);
+			if (nPass == 1)
+				warning("'JP [HL]' is obsolete, use 'JP HL' instead.");
+		}
+		| T_Z80_JP T_MODE_HL
+		{
+			out_AbsByte(0xE9);
+		}
 ;
 
-z80_jr			:	T_Z80_JR const_PCrel
-					{ out_AbsByte(0x18); out_PCRelByte(&$2); }
-				|	T_Z80_JR ccode comma const_PCrel
-					{ out_AbsByte(0x20|($2<<3)); out_PCRelByte(&$4); }
+z80_jr		: T_Z80_JR const_PCrel
+		{
+			out_AbsByte(0x18);
+			out_PCRelByte(&$2);
+		}
+		| T_Z80_JR ccode comma const_PCrel
+		{
+			out_AbsByte(0x20 | ($2 << 3));
+			out_PCRelByte(&$4);
+		}
 ;
 
-z80_ldi			:	T_Z80_LDI T_MODE_HL_IND comma T_MODE_A
-					{ out_AbsByte(0x02|(2<<4)); }
-				|	T_Z80_LDI T_MODE_A comma T_MODE_HL
-					{
-						out_AbsByte(0x0A|(2<<4));
-						if( nPass==1 )
-							warning("'LDI A,HL' is obsolete, use 'LDI A,[HL]' or 'LD A,[HL+] instead.");
-					}
-				|	T_Z80_LDI T_MODE_A comma T_MODE_HL_IND
-					{ out_AbsByte(0x0A|(2<<4)); }
+z80_ldi		: T_Z80_LDI T_MODE_HL_IND comma T_MODE_A
+		{
+			out_AbsByte(0x02 | (2 << 4));
+		}
+		| T_Z80_LDI T_MODE_A comma T_MODE_HL
+		{
+			out_AbsByte(0x0A | (2 << 4));
+			if (nPass == 1)
+				warning("'LDI A,HL' is obsolete, use 'LDI A,[HL]' or 'LD A,[HL+] instead.");
+		}
+		| T_Z80_LDI T_MODE_A comma T_MODE_HL_IND
+		{
+			out_AbsByte(0x0A | (2 << 4));
+		}
 ;
 
-z80_ldd			:	T_Z80_LDD T_MODE_HL_IND comma T_MODE_A
-					{ out_AbsByte(0x02|(3<<4)); }
-				|	T_Z80_LDD T_MODE_A comma T_MODE_HL
-					{
-						out_AbsByte(0x0A|(3<<4));
-						if( nPass==1 )
-							warning("'LDD A,HL' is obsolete, use 'LDD A,[HL]' or 'LD A,[HL-] instead.");
-					}
-				|	T_Z80_LDD T_MODE_A comma T_MODE_HL_IND
-					{ out_AbsByte(0x0A|(3<<4)); }
+z80_ldd		: T_Z80_LDD T_MODE_HL_IND comma T_MODE_A
+		{
+			out_AbsByte(0x02 | (3 << 4));
+		}
+		| T_Z80_LDD T_MODE_A comma T_MODE_HL
+		{
+			out_AbsByte(0x0A | (3 << 4));
+			if (nPass == 1)
+				warning("'LDD A,HL' is obsolete, use 'LDD A,[HL]' or 'LD A,[HL-] instead.");
+		}
+		| T_Z80_LDD T_MODE_A comma T_MODE_HL_IND
+		{
+			out_AbsByte(0x0A | (3 << 4));
+		}
 ;
 
-z80_ldio		:	T_Z80_LDIO T_MODE_A comma op_mem_ind
-					{
-						rpn_CheckHRAM(&$4,&$4);
+z80_ldio	: T_Z80_LDIO T_MODE_A comma op_mem_ind
+		{
+			rpn_CheckHRAM(&$4, &$4);
 
-						if( (!rpn_isReloc(&$4))
-						&&	($4.nVal<0 || ($4.nVal>0xFF && $4.nVal<0xFF00) || $4.nVal>0xFFFF) )
-						{
-							yyerror("Source address $%x not in $FF00 to $FFFF", $4.nVal);
-						}
+			if ((!rpn_isReloc(&$4)) && ($4.nVal < 0 || ($4.nVal > 0xFF && $4.nVal < 0xFF00) || $4.nVal > 0xFFFF))
+				yyerror("Source address $%x not in $FF00 to $FFFF", $4.nVal);
 
-						out_AbsByte(0xF0);
-						$4.nVal&=0xFF;
-						out_RelByte(&$4);
-					}
-				|	T_Z80_LDIO op_mem_ind comma T_MODE_A
-					{
-						rpn_CheckHRAM(&$2,&$2);
+			out_AbsByte(0xF0);
+			$4.nVal &= 0xFF;
+			out_RelByte(&$4);
+		}
+		| T_Z80_LDIO op_mem_ind comma T_MODE_A
+		{
+			rpn_CheckHRAM(&$2, &$2);
 
-						if( (!rpn_isReloc(&$2))
-						&&	($2.nVal<0 || ($2.nVal>0xFF && $2.nVal<0xFF00) || $2.nVal>0xFFFF) )
-						{
-							yyerror("Destination address $%x not in $FF00 to $FFFF", $2.nVal);
-						}
+			if ((!rpn_isReloc(&$2)) && ($2.nVal < 0 || ($2.nVal > 0xFF && $2.nVal < 0xFF00) || $2.nVal > 0xFFFF))
+				yyerror("Destination address $%x not in $FF00 to $FFFF", $2.nVal);
 
-						out_AbsByte(0xE0);
-						$2.nVal&=0xFF;
-						out_RelByte(&$2);
-					}
+			out_AbsByte(0xE0);
+			$2.nVal &= 0xFF;
+			out_RelByte(&$2);
+		}
 ;
 
-z80_ld			:	z80_ld_mem
-				|	z80_ld_cind
-				|	z80_ld_rr
-				|	z80_ld_ss
-				|	z80_ld_hl
-				|	z80_ld_sp
-				|	z80_ld_r
-				|	z80_ld_a
+z80_ld		: z80_ld_mem
+		| z80_ld_cind
+		| z80_ld_rr
+		| z80_ld_ss
+		| z80_ld_hl
+		| z80_ld_sp
+		| z80_ld_r
+		| z80_ld_a
 ;
 
-z80_ld_hl		:	T_Z80_LD T_MODE_HL comma '[' T_MODE_SP const_8bit ']'
-					{
-						out_AbsByte(0xF8); out_RelByte(&$6);
-						warning("'LD HL,[SP+e8]' is obsolete, use 'LD HL,SP+e8' instead.");
-					}
-				|	T_Z80_LD T_MODE_HL comma T_MODE_SP const_8bit
-					{ out_AbsByte(0xF8); out_RelByte(&$5); }
-				|	T_Z80_LD T_MODE_HL comma const_16bit
-					{ out_AbsByte(0x01|(REG_HL<<4)); out_RelWord(&$4); }
+z80_ld_hl	: T_Z80_LD T_MODE_HL comma '[' T_MODE_SP const_8bit ']'
+		{
+			out_AbsByte(0xF8);
+			out_RelByte(&$6);
+			warning("'LD HL,[SP+e8]' is obsolete, use 'LD HL,SP+e8' instead.");
+		}
+		| T_Z80_LD T_MODE_HL comma T_MODE_SP const_8bit
+		{
+			out_AbsByte(0xF8);
+			out_RelByte(&$5);
+		}
+		| T_Z80_LD T_MODE_HL comma const_16bit
+		{
+			out_AbsByte(0x01 | (REG_HL << 4));
+			out_RelWord(&$4);
+		}
 ;
-z80_ld_sp		:	T_Z80_LD T_MODE_SP comma T_MODE_HL
-					{ out_AbsByte(0xF9); }
-				|	T_Z80_LD T_MODE_SP comma const_16bit
-					{ out_AbsByte(0x01|(REG_SP<<4)); out_RelWord(&$4); }
+
+z80_ld_sp	: T_Z80_LD T_MODE_SP comma T_MODE_HL
+		{
+			out_AbsByte(0xF9);
+		}
+		| T_Z80_LD T_MODE_SP comma const_16bit
+		{
+			out_AbsByte(0x01 | (REG_SP << 4));
+			out_RelWord(&$4);
+		}
 ;
 
-z80_ld_mem		:	T_Z80_LD op_mem_ind comma T_MODE_SP
-					{ out_AbsByte(0x08); out_RelWord(&$2); }
-				|	T_Z80_LD op_mem_ind comma T_MODE_A
-					{
-						if( (!rpn_isReloc(&$2)) && $2.nVal>=0xFF00)
-						{
-							out_AbsByte(0xE0);
-							out_AbsByte($2.nVal&0xFF);
-						}
-						else
-						{
-							out_AbsByte(0xEA);
-							out_RelWord(&$2);
-						}
-					}
+z80_ld_mem	: T_Z80_LD op_mem_ind comma T_MODE_SP
+		{
+			out_AbsByte(0x08);
+			out_RelWord(&$2);
+		}
+		| T_Z80_LD op_mem_ind comma T_MODE_A
+		{
+			if ((!rpn_isReloc(&$2)) && ($2.nVal >= 0xFF00)) {
+				out_AbsByte(0xE0);
+				out_AbsByte($2.nVal & 0xFF);
+			} else {
+				out_AbsByte(0xEA);
+				out_RelWord(&$2);
+			}
+		}
 ;
 
-z80_ld_cind		:	T_Z80_LD T_MODE_C_IND comma T_MODE_A
-					{ out_AbsByte(0xE2); }
+z80_ld_cind	: T_Z80_LD T_MODE_C_IND comma T_MODE_A
+		{
+			out_AbsByte(0xE2);
+		}
 ;
 
-z80_ld_rr		:	T_Z80_LD reg_rr comma T_MODE_A
-					{ out_AbsByte(0x02|($2<<4)); }
+z80_ld_rr	: T_Z80_LD reg_rr comma T_MODE_A
+		{
+			out_AbsByte(0x02 | ($2 << 4));
+		}
 ;
 
-z80_ld_r		:	T_Z80_LD reg_r comma const_8bit
-					{ out_AbsByte(0x06|($2<<3)); out_RelByte(&$4); }
-				|	T_Z80_LD reg_r comma reg_r
-					{
-						if( ($2==REG_HL_IND) && ($4==REG_HL_IND) )
-						{
-							yyerror("LD [HL],[HL] not a valid instruction");
-						}
-						else
-							out_AbsByte(0x40|($2<<3)|$4);
-					}
+z80_ld_r	: T_Z80_LD reg_r comma const_8bit
+		{
+			out_AbsByte(0x06 | ($2 << 3));
+			out_RelByte(&$4);
+		}
+		| T_Z80_LD reg_r comma reg_r
+		{
+			if (($2 == REG_HL_IND) && ($4 == REG_HL_IND))
+				yyerror("LD [HL],[HL] not a valid instruction");
+			else
+				out_AbsByte(0x40 | ($2 << 3) | $4);
+		}
 ;
 
-z80_ld_a		:	T_Z80_LD reg_r comma T_MODE_C_IND
-					{
-						if( $2==REG_A )
-							out_AbsByte(0xF2);
-						else
-						{
-							yyerror("Destination operand must be A");
-						}
-					}
-				|	T_Z80_LD reg_r comma reg_rr
-					{
-						if( $2==REG_A )
-							out_AbsByte(0x0A|($4<<4));
-						else
-						{
-							yyerror("Destination operand must be A");
-						}
-					}
-				|	T_Z80_LD reg_r comma op_mem_ind
-					{
-						if( $2==REG_A )
-						{
-							if( (!rpn_isReloc(&$4)) && $4.nVal>=0xFF00 )
-							{
-								out_AbsByte(0xF0);
-								out_AbsByte($4.nVal&0xFF);
-							}
-							else
-							{
-								out_AbsByte(0xFA);
-								out_RelWord(&$4);
-							}
-						}
-						else
-						{
-							yyerror("Destination operand must be A");
-						}
-					}
+z80_ld_a	: T_Z80_LD reg_r comma T_MODE_C_IND
+		{
+			if ($2 == REG_A)
+				out_AbsByte(0xF2);
+			else
+				yyerror("Destination operand must be A");
+		}
+		| T_Z80_LD reg_r comma reg_rr
+		{
+			if ($2 == REG_A)
+				out_AbsByte(0x0A | ($4 << 4));
+			else
+				yyerror("Destination operand must be A");
+		}
+		| T_Z80_LD reg_r comma op_mem_ind
+		{
+			if ($2 == REG_A) {
+				if ((!rpn_isReloc(&$4)) && ($4.nVal >= 0xFF00)) {
+					out_AbsByte(0xF0);
+					out_AbsByte($4.nVal & 0xFF);
+				} else {
+					out_AbsByte(0xFA);
+					out_RelWord(&$4);
+				}
+			} else {
+				yyerror("Destination operand must be A");
+			}
+		}
 ;
 
-z80_ld_ss		:	T_Z80_LD T_MODE_BC comma const_16bit
-					{ out_AbsByte(0x01|(REG_BC<<4)); out_RelWord(&$4); }
-				|	T_Z80_LD T_MODE_DE comma const_16bit
-					{ out_AbsByte(0x01|(REG_DE<<4)); out_RelWord(&$4); }
-				/*
-				 * HL is taken care of in z80_ld_hl
-				 * SP is taken care of in z80_ld_sp
-				 */
+z80_ld_ss	: T_Z80_LD T_MODE_BC comma const_16bit
+		{
+			out_AbsByte(0x01 | (REG_BC << 4));
+			out_RelWord(&$4);
+		}
+		| T_Z80_LD T_MODE_DE comma const_16bit
+		{
+			out_AbsByte(0x01 | (REG_DE << 4));
+			out_RelWord(&$4);
+		}
+		/*
+		 * HL is taken care of in z80_ld_hl
+		 * SP is taken care of in z80_ld_sp
+		 */
 ;
 
-z80_nop			:	T_Z80_NOP
-					{ out_AbsByte(0x00); }
+z80_nop		: T_Z80_NOP
+		{
+			out_AbsByte(0x00);
+		}
 ;
 
-z80_or			:	T_Z80_OR op_a_n
-					{ out_AbsByte(0xF6); out_RelByte(&$2); }
-				|	T_Z80_OR op_a_r
-					{ out_AbsByte(0xB0|$2); }
+z80_or		: T_Z80_OR op_a_n
+		{
+			out_AbsByte(0xF6);
+			out_RelByte(&$2);
+		}
+		| T_Z80_OR op_a_r
+		{
+			out_AbsByte(0xB0 | $2);
+		}
 ;
 
-z80_pop			:	T_Z80_POP reg_tt
-					{ out_AbsByte(0xC1|($2<<4)); }
+z80_pop		: T_Z80_POP reg_tt
+		{
+			out_AbsByte(0xC1 | ($2 << 4));
+		}
 ;
 
-z80_push		:	T_Z80_PUSH reg_tt
-					{ out_AbsByte(0xC5|($2<<4)); }
+z80_push	: T_Z80_PUSH reg_tt
+		{
+			out_AbsByte(0xC5 | ($2 << 4));
+		}
 ;
 
-z80_res			:	T_Z80_RES const_3bit comma reg_r
-					{ out_AbsByte(0xCB); out_AbsByte(0x80|($2<<3)|$4); }
+z80_res		: T_Z80_RES const_3bit comma reg_r
+		{
+			out_AbsByte(0xCB);
+			out_AbsByte(0x80 | ($2 << 3) | $4);
+		}
 ;
 
-z80_ret			:	T_Z80_RET
-					{ out_AbsByte(0xC9); }
-				|	T_Z80_RET ccode
-					{ out_AbsByte(0xC0|($2<<3)); }
+z80_ret		: T_Z80_RET
+		{
+			out_AbsByte(0xC9);
+		}
+		| T_Z80_RET ccode
+		{
+			out_AbsByte(0xC0 | ($2 << 3));
+		}
 ;
 
-z80_reti		:	T_Z80_RETI
-					{ out_AbsByte(0xD9); }
+z80_reti	: T_Z80_RETI
+		{
+			out_AbsByte(0xD9);
+		}
 ;
 
-z80_rl			:	T_Z80_RL reg_r
-					{ out_AbsByte(0xCB); out_AbsByte(0x10|$2); }
+z80_rl		: T_Z80_RL reg_r
+		{
+			out_AbsByte(0xCB);
+			out_AbsByte(0x10 | $2);
+		}
 ;
 
-z80_rla			:	T_Z80_RLA
-					{ out_AbsByte(0x17); }
+z80_rla		: T_Z80_RLA
+		{
+			out_AbsByte(0x17);
+		}
 ;
 
-z80_rlc			:	T_Z80_RLC reg_r
-					{ out_AbsByte(0xCB); out_AbsByte(0x00|$2); }
+z80_rlc		: T_Z80_RLC reg_r
+		{
+			out_AbsByte(0xCB);
+			out_AbsByte(0x00 | $2);
+		}
 ;
 
-z80_rlca 		:	T_Z80_RLCA
-					{ out_AbsByte(0x07); }
+z80_rlca 	: T_Z80_RLCA
+		{
+			out_AbsByte(0x07);
+		}
 ;
 
-z80_rr			:	T_Z80_RR reg_r
-					{ out_AbsByte(0xCB); out_AbsByte(0x18|$2); }
+z80_rr		: T_Z80_RR reg_r
+		{
+			out_AbsByte(0xCB);
+			out_AbsByte(0x18 | $2);
+		}
 ;
 
-z80_rra			:	T_Z80_RRA
-					{ out_AbsByte(0x1F); }
+z80_rra		: T_Z80_RRA
+		{
+			out_AbsByte(0x1F);
+		}
 ;
 
-z80_rrc			:	T_Z80_RRC reg_r
-					{ out_AbsByte(0xCB); out_AbsByte(0x08|$2); }
+z80_rrc		: T_Z80_RRC reg_r
+		{
+			out_AbsByte(0xCB);
+			out_AbsByte(0x08 | $2);
+		}
 ;
 
-z80_rrca 		:	T_Z80_RRCA
-					{ out_AbsByte(0x0F); }
+z80_rrca 	: T_Z80_RRCA
+		{
+			out_AbsByte(0x0F);
+		}
 ;
 
-z80_rst 		:	T_Z80_RST const_8bit
-					{
-						if( rpn_isReloc(&$2) )
-						{
-							yyerror("Address for RST must be absolute");
-						}
-						else if( ($2.nVal&0x38)!=$2.nVal )
-						{
-							yyerror("Invalid address $%x for RST", $2.nVal);
-						}
-						else
-							out_AbsByte(0xC7|$2.nVal);
-					}
+z80_rst 	: T_Z80_RST const_8bit
+		{
+			if (rpn_isReloc(&$2))
+				yyerror("Address for RST must be absolute");
+			else if (($2.nVal & 0x38) != $2.nVal)
+				yyerror("Invalid address $%x for RST", $2.nVal);
+			else
+				out_AbsByte(0xC7 | $2.nVal);
+		}
 ;
 
-z80_sbc			:	T_Z80_SBC op_a_n	{ out_AbsByte(0xDE); out_RelByte(&$2); }
-				|	T_Z80_SBC op_a_r	{ out_AbsByte(0x98|$2); }
+z80_sbc		: T_Z80_SBC op_a_n
+		{
+			out_AbsByte(0xDE);
+			out_RelByte(&$2);
+		}
+		| T_Z80_SBC op_a_r
+		{
+			out_AbsByte(0x98 | $2);
+		}
 ;
 
-z80_scf			:	T_Z80_SCF
-					{ out_AbsByte(0x37); }
+z80_scf		: T_Z80_SCF
+		{
+			out_AbsByte(0x37);
+		}
 ;
 
-z80_set			:	T_POP_SET const_3bit comma reg_r
-					{ out_AbsByte(0xCB); out_AbsByte(0xC0|($2<<3)|$4); }
+z80_set		: T_POP_SET const_3bit comma reg_r
+		{
+			out_AbsByte(0xCB);
+			out_AbsByte(0xC0 | ($2 << 3) | $4);
+		}
 ;
 
-z80_sla			:	T_Z80_SLA reg_r
-					{ out_AbsByte(0xCB); out_AbsByte(0x20|$2); }
+z80_sla		: T_Z80_SLA reg_r
+		{
+			out_AbsByte(0xCB);
+			out_AbsByte(0x20 | $2);
+		}
 ;
 
-z80_sra			:	T_Z80_SRA reg_r
-					{ out_AbsByte(0xCB); out_AbsByte(0x28|$2); }
+z80_sra		: T_Z80_SRA reg_r
+		{
+			out_AbsByte(0xCB);
+			out_AbsByte(0x28 | $2);
+		}
 ;
 
-z80_srl			:	T_Z80_SRL reg_r
-					{ out_AbsByte(0xCB); out_AbsByte(0x38|$2); }
+z80_srl		: T_Z80_SRL reg_r
+		{
+			out_AbsByte(0xCB);
+			out_AbsByte(0x38 | $2);
+		}
 ;
 
-z80_stop		:	T_Z80_STOP
-					{ out_AbsByte(0x10); out_AbsByte(0x00); }
+z80_stop	: T_Z80_STOP
+		{
+			out_AbsByte(0x10);
+			out_AbsByte(0x00);
+		}
 ;
 
-z80_sub			:	T_Z80_SUB op_a_n	{ out_AbsByte(0xD6); out_RelByte(&$2); }
-				|	T_Z80_SUB op_a_r	{ out_AbsByte(0x90|$2); }
+z80_sub		: T_Z80_SUB op_a_n
+		{
+			out_AbsByte(0xD6);
+			out_RelByte(&$2);
+		}
+		| T_Z80_SUB op_a_r
+		{
+			out_AbsByte(0x90 | $2);
+		}
 ;
 
-z80_swap		:	T_Z80_SWAP reg_r
-					{ out_AbsByte(0xCB); out_AbsByte(0x30|$2); }
+z80_swap	: T_Z80_SWAP reg_r
+		{
+			out_AbsByte(0xCB);
+			out_AbsByte(0x30 | $2);
+		}
 ;
 
-z80_xor			:	T_Z80_XOR op_a_n	{ out_AbsByte(0xEE); out_RelByte(&$2); }
-				|	T_Z80_XOR op_a_r	{ out_AbsByte(0xA8|$2); }
+z80_xor		: T_Z80_XOR op_a_n
+		{
+			out_AbsByte(0xEE);
+			out_RelByte(&$2);
+		}
+		| T_Z80_XOR op_a_r
+		{
+			out_AbsByte(0xA8 | $2);
+		}
 ;
 
-op_mem_ind		:	'[' const_16bit ']'	{ $$ = $2; }
+op_mem_ind	: '[' const_16bit ']'		{ $$ = $2; }
 ;
 
-op_hl_ss 		:	reg_ss					{ $$ = $1; }
-				|	T_MODE_HL comma reg_ss	{ $$ = $3; }
+op_hl_ss 	: reg_ss			{ $$ = $1; }
+		| T_MODE_HL comma reg_ss	{ $$ = $3; }
 ;
 
-op_a_r			:	reg_r				{ $$ = $1; }
-				|	T_MODE_A comma reg_r	{ $$ = $3; }
+op_a_r		: reg_r				{ $$ = $1; }
+		| T_MODE_A comma reg_r		{ $$ = $3; }
 ;
 
-op_a_n			:	const_8bit				{ $$ = $1; }
-				|	T_MODE_A comma const_8bit	{ $$ = $3; }
+op_a_n		: const_8bit			{ $$ = $1; }
+		| T_MODE_A comma const_8bit	{ $$ = $3; }
 ;
 
-comma			:	','
+comma		: ','
 ;
 
-T_MODE_A		:	T_TOKEN_A
-				|	T_OP_HIGH '(' T_MODE_AF ')'
+T_MODE_A	: T_TOKEN_A
+		| T_OP_HIGH '(' T_MODE_AF ')'
 ;
-T_MODE_B		:	T_TOKEN_B
-				|	T_OP_HIGH '(' T_MODE_BC ')'
+
+T_MODE_B	: T_TOKEN_B
+		| T_OP_HIGH '(' T_MODE_BC ')'
 ;
-T_MODE_C		:	T_TOKEN_C
-				|	T_OP_LOW '(' T_MODE_BC ')'
+
+T_MODE_C	: T_TOKEN_C
+		| T_OP_LOW '(' T_MODE_BC ')'
 ;
-T_MODE_D		:	T_TOKEN_D
-				|	T_OP_HIGH '(' T_MODE_DE ')'
+
+T_MODE_D	: T_TOKEN_D
+		| T_OP_HIGH '(' T_MODE_DE ')'
 ;
-T_MODE_E		:	T_TOKEN_E
-				|	T_OP_LOW '(' T_MODE_DE ')'
+
+T_MODE_E	: T_TOKEN_E
+		| T_OP_LOW '(' T_MODE_DE ')'
 ;
-T_MODE_H		:	T_TOKEN_H
-				|	T_OP_HIGH '(' T_MODE_HL ')'
+
+T_MODE_H	: T_TOKEN_H
+		| T_OP_HIGH '(' T_MODE_HL ')'
 ;
-T_MODE_L		:	T_TOKEN_L
-				|	T_OP_LOW '(' T_MODE_HL ')'
+
+T_MODE_L	: T_TOKEN_L
+		| T_OP_LOW '(' T_MODE_HL ')'
 ;
 
-ccode			:	T_CC_NZ		{ $$ = CC_NZ; }
-				|	T_CC_Z		{ $$ = CC_Z; }
-				|	T_CC_NC		{ $$ = CC_NC; }
-				|	T_TOKEN_C	{ $$ = CC_C; }
+ccode		: T_CC_NZ		{ $$ = CC_NZ; }
+		| T_CC_Z		{ $$ = CC_Z; }
+		| T_CC_NC		{ $$ = CC_NC; }
+		| T_TOKEN_C		{ $$ = CC_C; }
 ;
 
-reg_r			:	T_MODE_B		{ $$ = REG_B; }
-				|	T_MODE_C		{ $$ = REG_C; }
-				|	T_MODE_D		{ $$ = REG_D; }
-				|	T_MODE_E		{ $$ = REG_E; }
-				|	T_MODE_H		{ $$ = REG_H; }
-				|	T_MODE_L		{ $$ = REG_L; }
-				|	T_MODE_HL_IND	{ $$ = REG_HL_IND; }
-				|	T_MODE_A		{ $$ = REG_A; }
+reg_r		: T_MODE_B		{ $$ = REG_B; }
+		| T_MODE_C		{ $$ = REG_C; }
+		| T_MODE_D		{ $$ = REG_D; }
+		| T_MODE_E		{ $$ = REG_E; }
+		| T_MODE_H		{ $$ = REG_H; }
+		| T_MODE_L		{ $$ = REG_L; }
+		| T_MODE_HL_IND		{ $$ = REG_HL_IND; }
+		| T_MODE_A		{ $$ = REG_A; }
 ;
 
-reg_tt			:	T_MODE_BC		{ $$ = REG_BC; }
-				|	T_MODE_DE		{ $$ = REG_DE; }
-				|	T_MODE_HL		{ $$ = REG_HL; }
-				|	T_MODE_AF		{ $$ = REG_AF; }
+reg_tt		: T_MODE_BC		{ $$ = REG_BC; }
+		| T_MODE_DE		{ $$ = REG_DE; }
+		| T_MODE_HL		{ $$ = REG_HL; }
+		| T_MODE_AF		{ $$ = REG_AF; }
 ;
 
-reg_ss			:	T_MODE_BC		{ $$ = REG_BC; }
-				|	T_MODE_DE		{ $$ = REG_DE; }
-				|	T_MODE_HL		{ $$ = REG_HL; }
-				|	T_MODE_SP		{ $$ = REG_SP; }
+reg_ss		: T_MODE_BC		{ $$ = REG_BC; }
+		| T_MODE_DE		{ $$ = REG_DE; }
+		| T_MODE_HL		{ $$ = REG_HL; }
+		| T_MODE_SP		{ $$ = REG_SP; }
 ;
 
-reg_rr			:	T_MODE_BC_IND		{ $$ = REG_BC_IND; }
-				|	T_MODE_DE_IND		{ $$ = REG_DE_IND; }
-				|	T_MODE_HL_INDINC	{ $$ = REG_HL_INDINC; }
-				|	T_MODE_HL_INDDEC	{ $$ = REG_HL_INDDEC; }
+reg_rr		: T_MODE_BC_IND		{ $$ = REG_BC_IND; }
+		| T_MODE_DE_IND		{ $$ = REG_DE_IND; }
+		| T_MODE_HL_INDINC	{ $$ = REG_HL_INDINC; }
+		| T_MODE_HL_INDDEC	{ $$ = REG_HL_INDDEC; }
 ;
 
 %%
--- a/src/asm/charmap.c
+++ b/src/asm/charmap.c
@@ -24,32 +24,46 @@
 #include <stdint.h>
 
 static const uint8_t utf8d[] = {
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 00..1f
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 20..3f
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 40..5f
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 60..7f
-  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, // 80..9f
-  7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, // a0..bf
-  8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, // c0..df
-  0xa,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x4,0x3,0x3, // e0..ef
-  0xb,0x6,0x6,0x6,0x5,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8, // f0..ff
-  0x0,0x1,0x2,0x3,0x5,0x8,0x7,0x1,0x1,0x1,0x4,0x6,0x1,0x1,0x1,0x1, // s0..s0
-  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,0,1,1,1,1,1,1, // s1..s2
-  1,2,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1, // s3..s4
-  1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,1,1,1,1,1,1, // s5..s6
-  1,3,1,1,1,1,1,3,1,3,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // s7..s8
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 00..0f */
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 10..1f */
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 20..2f */
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 30..3f */
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 40..4f */
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 50..5f */
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 60..6f */
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 70..7f */
+	1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 80..8f */
+	9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, /* 90..9f */
+	7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, /* a0..af */
+	7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, /* b0..bf */
+	8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* c0..cf */
+	2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* d0..df */
+	0xa, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, /* e0..e7 */
+	0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, /* e8..ef */
+	0xb, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, /* f0..f7 */
+	0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, /* f8..ff */
+	0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, /* s0..   */
+	0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, /*   ..s0 */
+	1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* s1 */
+	1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, /* s1 */
+	1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, /* s3 */
+	1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, /* s4 */
+	1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, /* s5 */
+	1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, /* s6 */
+	1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, /* s7 */
+	1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* s8 */
 };
 
-uint32_t
-decode(uint32_t* state, uint32_t* codep, uint32_t byte) {
-  uint32_t type = utf8d[byte];
+uint32_t decode(uint32_t *state, uint32_t *codep, uint32_t byte)
+{
+	uint32_t type = utf8d[byte];
 
-  *codep = (*state != 0) ?
-    (byte & 0x3fu) | (*codep << 6) :
-    (0xff >> type) & (byte);
+	*codep = (*state != 0) ?
+			(byte & 0x3fu) | (*codep << 6) :
+			(0xff >> type) & (byte);
 
-  *state = utf8d[256 + *state*16 + type];
-  return *state;
+	*state = utf8d[256 + *state * 16 + type];
+	return *state;
 }
 
 /*
@@ -79,10 +93,7 @@
 
 struct Charmap globalCharmap = {0};
 
-extern struct Section *pCurrentSection;
-
-int32_t
-readUTF8Char(char *dest, char *src)
+int32_t readUTF8Char(char *dest, char *src)
 {
 	uint32_t state;
 	uint32_t codep;
@@ -89,9 +100,8 @@
 	int32_t i;
 
 	for (i = 0, state = 0;; i++) {
-		if (decode(&state, &codep, (uint8_t)src[i]) == 1) {
+		if (decode(&state, &codep, (uint8_t)src[i]) == 1)
 			fatalerror("invalid UTF-8 character");
-		}
 
 		dest[i] = src[i];
 
@@ -104,13 +114,12 @@
 	}
 }
 
-int32_t
-charmap_Add(char *input, uint8_t output)
+int32_t charmap_Add(char *input, uint8_t output)
 {
 	int32_t i;
 	size_t input_length;
-	char temp1i[CHARMAPLENGTH + 1], temp2i[CHARMAPLENGTH + 1], temp1o = 0,
-	    temp2o = 0;
+	char temp1i[CHARMAPLENGTH + 1], temp2i[CHARMAPLENGTH + 1];
+	char temp1o = 0, temp2o = 0;
 
 	struct Charmap *charmap;
 
@@ -118,10 +127,10 @@
 		if (pCurrentSection->charmap) {
 			charmap = pCurrentSection->charmap;
 		} else {
-			if ((charmap = calloc(1, sizeof(struct Charmap))) ==
-			    NULL) {
+			charmap = calloc(1, sizeof(struct Charmap));
+			if (charmap == NULL)
 				fatalerror("Not enough memory for charmap");
-			}
+
 			pCurrentSection->charmap = charmap;
 		}
 	} else {
@@ -128,13 +137,11 @@
 		charmap = &globalCharmap;
 	}
 
-	if (nPass == 2) {
+	if (nPass == 2)
 		return charmap->count;
-	}
 
-	if (charmap->count > MAXCHARMAPS || strlen(input) > CHARMAPLENGTH) {
+	if (charmap->count > MAXCHARMAPS || strlen(input) > CHARMAPLENGTH)
 		return -1;
-	}
 
 	input_length = strlen(input);
 	if (input_length > 1) {
@@ -142,7 +149,7 @@
 		while (i < charmap->count + 1) {
 			if (input_length > strlen(charmap->input[i])) {
 				memcpy(temp1i, charmap->input[i],
-				    CHARMAPLENGTH + 1);
+				       CHARMAPLENGTH + 1);
 				memcpy(charmap->input[i], input, input_length);
 				temp1o = charmap->output[i];
 				charmap->output[i] = output;
@@ -161,7 +168,7 @@
 			i++;
 		}
 		memcpy(charmap->input[charmap->count + 1], temp1i,
-		    CHARMAPLENGTH + 1);
+		       CHARMAPLENGTH + 1);
 		charmap->output[charmap->count + 1] = temp1o;
 	} else {
 		memcpy(charmap->input[charmap->count], input, input_length);
@@ -170,8 +177,7 @@
 	return ++charmap->count;
 }
 
-int32_t
-charmap_Convert(char **input)
+int32_t charmap_Convert(char **input)
 {
 	struct Charmap *charmap;
 
@@ -179,15 +185,14 @@
 	char *buffer;
 	int32_t i, j, length;
 
-	if (pCurrentSection && pCurrentSection->charmap) {
+	if (pCurrentSection && pCurrentSection->charmap)
 		charmap = pCurrentSection->charmap;
-	} else {
+	else
 		charmap = &globalCharmap;
-	}
 
-	if ((buffer = malloc(strlen(*input))) == NULL) {
+	buffer = malloc(strlen(*input));
+	if (buffer == NULL)
 		fatalerror("Not enough memory for buffer");
-	}
 
 	length = 0;
 	while (**input) {
@@ -201,15 +206,15 @@
 			}
 			j = 0;
 		}
-		if (!j) {
+
+		if (!j)
 			j = readUTF8Char(outchar, *input);
-		}
+
 		if (!outchar[0]) {
 			buffer[length++] = 0;
 		} else {
-			for (i = 0; outchar[i]; i++) {
+			for (i = 0; outchar[i]; i++)
 				buffer[length++] = outchar[i];
-			}
 		}
 		*input += j;
 	}
--- a/src/asm/fstack.c
+++ b/src/asm/fstack.c
@@ -19,19 +19,19 @@
 
 #include "types.h"
 
-struct sContext *pFileStack;
-struct sSymbol *pCurrentMacro;
-YY_BUFFER_STATE CurrentFlexHandle;
-FILE *pCurrentFile;
-uint32_t nCurrentStatus;
+static struct sContext *pFileStack;
+static struct sSymbol *pCurrentMacro;
+static YY_BUFFER_STATE CurrentFlexHandle;
+static FILE *pCurrentFile;
+static uint32_t nCurrentStatus;
 char tzCurrentFileName[_MAX_PATH + 1];
-char IncludePaths[MAXINCPATHS][_MAX_PATH + 1];
-int32_t NextIncPath = 0;
-uint32_t nMacroCount;
+static char IncludePaths[MAXINCPATHS][_MAX_PATH + 1];
+static int32_t NextIncPath;
+static uint32_t nMacroCount;
 
-char *pCurrentREPTBlock;
-uint32_t nCurrentREPTBlockSize;
-uint32_t nCurrentREPTBlockCount;
+static char *pCurrentREPTBlock;
+static uint32_t nCurrentREPTBlockSize;
+static uint32_t nCurrentREPTBlockCount;
 
 uint32_t ulMacroReturnValue;
 
@@ -49,8 +49,7 @@
 /*
  * Context push and pop
  */
-void
-pushcontext(void)
+static void pushcontext(void)
 {
 	struct sContext **ppFileStack;
 
@@ -58,36 +57,37 @@
 	while (*ppFileStack)
 		ppFileStack = &((*ppFileStack)->pNext);
 
-	if ((*ppFileStack = malloc(sizeof(struct sContext))) != NULL) {
-		(*ppFileStack)->FlexHandle = CurrentFlexHandle;
-		(*ppFileStack)->pNext = NULL;
-		strcpy((char *) (*ppFileStack)->tzFileName,
-		    (char *) tzCurrentFileName);
-		(*ppFileStack)->nLine = nLineNo;
-		switch ((*ppFileStack)->nStatus = nCurrentStatus) {
-		case STAT_isMacroArg:
-		case STAT_isMacro:
-			sym_SaveCurrentMacroArgs((*ppFileStack)->tzMacroArgs);
-			(*ppFileStack)->pMacro = pCurrentMacro;
-			break;
-		case STAT_isInclude:
-			(*ppFileStack)->pFile = pCurrentFile;
-			break;
-		case STAT_isREPTBlock:
-			sym_SaveCurrentMacroArgs((*ppFileStack)->tzMacroArgs);
-			(*ppFileStack)->pREPTBlock = pCurrentREPTBlock;
-			(*ppFileStack)->nREPTBlockSize = nCurrentREPTBlockSize;
-			(*ppFileStack)->nREPTBlockCount =
-			    nCurrentREPTBlockCount;
-			break;
-		}
-		nLineNo = 0;
-	} else
+	*ppFileStack = malloc(sizeof(struct sContext));
+
+	if (*ppFileStack == NULL)
 		fatalerror("No memory for context");
+
+	(*ppFileStack)->FlexHandle = CurrentFlexHandle;
+	(*ppFileStack)->pNext = NULL;
+	strcpy((char *)(*ppFileStack)->tzFileName, (char *)tzCurrentFileName);
+	(*ppFileStack)->nLine = nLineNo;
+
+	switch ((*ppFileStack)->nStatus = nCurrentStatus) {
+	case STAT_isMacroArg:
+	case STAT_isMacro:
+		sym_SaveCurrentMacroArgs((*ppFileStack)->tzMacroArgs);
+		(*ppFileStack)->pMacro = pCurrentMacro;
+		break;
+	case STAT_isInclude:
+		(*ppFileStack)->pFile = pCurrentFile;
+		break;
+	case STAT_isREPTBlock:
+		sym_SaveCurrentMacroArgs((*ppFileStack)->tzMacroArgs);
+		(*ppFileStack)->pREPTBlock = pCurrentREPTBlock;
+		(*ppFileStack)->nREPTBlockSize = nCurrentREPTBlockSize;
+		(*ppFileStack)->nREPTBlockCount = nCurrentREPTBlockCount;
+		break;
+	}
+
+	nLineNo = 0;
 }
 
-static int32_t
-popcontext(void)
+static int32_t popcontext(void)
 {
 	struct sContext *pLastFile, **ppLastFile;
 
@@ -95,63 +95,67 @@
 		if (--nCurrentREPTBlockCount) {
 			yy_delete_buffer(CurrentFlexHandle);
 			CurrentFlexHandle =
-			    yy_scan_bytes(pCurrentREPTBlock,
-			    nCurrentREPTBlockSize);
+				yy_scan_bytes(pCurrentREPTBlock,
+					      nCurrentREPTBlockSize);
 			yy_switch_to_buffer(CurrentFlexHandle);
 			sym_UseCurrentMacroArgs();
 			sym_SetMacroArgID(nMacroCount++);
 			sym_UseNewMacroArgs();
-			return (0);
+			return 0;
 		}
 	}
-	if ((pLastFile = pFileStack) != NULL) {
-		ppLastFile = &pFileStack;
-		while (pLastFile->pNext) {
-			ppLastFile = &(pLastFile->pNext);
-			pLastFile = *ppLastFile;
-		}
 
-		yy_delete_buffer(CurrentFlexHandle);
-		nLineNo = pLastFile->nLine;
-		if (nCurrentStatus == STAT_isInclude)
-			fclose(pCurrentFile);
-		if (nCurrentStatus == STAT_isMacro) {
-			sym_FreeCurrentMacroArgs();
-			nLineNo += 1;
-		}
-		if (nCurrentStatus == STAT_isREPTBlock)
-			nLineNo += 1;
+	pLastFile = pFileStack;
+	if (pLastFile == NULL)
+		return 1;
 
-		CurrentFlexHandle = pLastFile->FlexHandle;
-		strcpy((char *) tzCurrentFileName,
-		    (char *) pLastFile->tzFileName);
-		switch (nCurrentStatus = pLastFile->nStatus) {
-		case STAT_isMacroArg:
-		case STAT_isMacro:
-			sym_RestoreCurrentMacroArgs(pLastFile->tzMacroArgs);
-			pCurrentMacro = pLastFile->pMacro;
-			break;
-		case STAT_isInclude:
-			pCurrentFile = pLastFile->pFile;
-			break;
-		case STAT_isREPTBlock:
-			sym_RestoreCurrentMacroArgs(pLastFile->tzMacroArgs);
-			pCurrentREPTBlock = pLastFile->pREPTBlock;
-			nCurrentREPTBlockSize = pLastFile->nREPTBlockSize;
-			nCurrentREPTBlockCount = pLastFile->nREPTBlockCount;
-			break;
-		}
+	ppLastFile = &pFileStack;
+	while (pLastFile->pNext) {
+		ppLastFile = &(pLastFile->pNext);
+		pLastFile = *ppLastFile;
+	}
 
-		free(*ppLastFile);
-		*ppLastFile = NULL;
-		yy_switch_to_buffer(CurrentFlexHandle);
-		return (0);
-	} else
-		return (1);
+	yy_delete_buffer(CurrentFlexHandle);
+	nLineNo = pLastFile->nLine;
+
+	if (nCurrentStatus == STAT_isInclude)
+		fclose(pCurrentFile);
+
+	if (nCurrentStatus == STAT_isMacro) {
+		sym_FreeCurrentMacroArgs();
+		nLineNo += 1;
+	}
+
+	if (nCurrentStatus == STAT_isREPTBlock)
+		nLineNo += 1;
+
+	CurrentFlexHandle = pLastFile->FlexHandle;
+	strcpy((char *)tzCurrentFileName, (char *)pLastFile->tzFileName);
+
+	switch (nCurrentStatus = pLastFile->nStatus) {
+	case STAT_isMacroArg:
+	case STAT_isMacro:
+		sym_RestoreCurrentMacroArgs(pLastFile->tzMacroArgs);
+		pCurrentMacro = pLastFile->pMacro;
+		break;
+	case STAT_isInclude:
+		pCurrentFile = pLastFile->pFile;
+		break;
+	case STAT_isREPTBlock:
+		sym_RestoreCurrentMacroArgs(pLastFile->tzMacroArgs);
+		pCurrentREPTBlock = pLastFile->pREPTBlock;
+		nCurrentREPTBlockSize = pLastFile->nREPTBlockSize;
+		nCurrentREPTBlockCount = pLastFile->nREPTBlockCount;
+		break;
+	}
+
+	free(*ppLastFile);
+	*ppLastFile = NULL;
+	yy_switch_to_buffer(CurrentFlexHandle);
+	return 0;
 }
 
-int32_t
-fstk_GetLine(void)
+int32_t fstk_GetLine(void)
 {
 	struct sContext *pLastFile, **ppLastFile;
 
@@ -167,7 +171,9 @@
 		break; /* Peek top file of the stack */
 	}
 
-	if ((pLastFile = pFileStack) != NULL) {
+	pLastFile = pFileStack;
+
+	if (pLastFile != NULL) {
 		ppLastFile = &pFileStack;
 		while (pLastFile->pNext) {
 			ppLastFile = &(pLastFile->pNext);
@@ -176,24 +182,24 @@
 		return pLastFile->nLine;
 	}
 
-	/* This is only reached if the lexer is in REPT or MACRO mode but there
-	 * are no saved contexts with the origin of said REPT or MACRO. */
-	fatalerror("fstk_GetLine: Internal error.");
+	/*
+	 * This is only reached if the lexer is in REPT or MACRO mode but there
+	 * are no saved contexts with the origin of said REPT or MACRO.
+	 */
+	fatalerror("%s: Internal error.", __func__);
 }
 
-int
-yywrap(void)
+int yywrap(void)
 {
-	return (popcontext());
+	return popcontext();
 }
 
 /*
  * Dump the context stack to stderr
  */
-void
-fstk_Dump(void)
+void fstk_Dump(void)
 {
-	struct sContext *pLastFile;
+	const struct sContext *pLastFile;
 
 	pLastFile = pFileStack;
 
@@ -209,46 +215,44 @@
 /*
  * Extra includepath stuff
  */
-void
-fstk_AddIncludePath(char *s)
+void fstk_AddIncludePath(char *s)
 {
-	if (NextIncPath == MAXINCPATHS) {
+	if (NextIncPath == MAXINCPATHS)
 		fatalerror("Too many include directories passed from command line");
-		return;
-	}
 
-	if (strlcpy(IncludePaths[NextIncPath++], s, _MAX_PATH) >= _MAX_PATH) {
-		fatalerror("Include path too long '%s'",s);
-		return;
-	}
+	if (strlcpy(IncludePaths[NextIncPath++], s, _MAX_PATH) >= _MAX_PATH)
+		fatalerror("Include path too long '%s'", s);
 }
 
-FILE *
-fstk_FindFile(char *fname)
+FILE *fstk_FindFile(char *fname)
 {
 	char path[_MAX_PATH];
 	int32_t i;
 	FILE *f;
 
-	if ((f = fopen(fname, "rb")) != NULL || errno != ENOENT) {
-		if (dependfile) {
+	f = fopen(fname, "rb");
+
+	if (f != NULL || errno != ENOENT) {
+		if (dependfile)
 			fprintf(dependfile, "%s: %s\n", tzObjectname, fname);
-		}
+
 		return f;
 	}
 
 	for (i = 0; i < NextIncPath; ++i) {
-		if (strlcpy(path, IncludePaths[i], sizeof path) >=
-		    sizeof path) {
+		if (strlcpy(path, IncludePaths[i], sizeof(path))
+		    >= sizeof(path))
 			continue;
-		}
-		if (strlcat(path, fname, sizeof path) >= sizeof path) {
+
+		if (strlcat(path, fname, sizeof(path)) >= sizeof(path))
 			continue;
-		}
 
-		if ((f = fopen(path, "rb")) != NULL || errno != ENOENT) {
+		f = fopen(path, "rb");
+
+		if (f != NULL || errno != ENOENT) {
 			if (dependfile) {
-				fprintf(dependfile, "%s: %s\n", tzObjectname, path);
+				fprintf(dependfile, "%s: %s\n", tzObjectname,
+					path);
 			}
 			return f;
 		}
@@ -261,18 +265,13 @@
 /*
  * Set up an include file for parsing
  */
-void
-fstk_RunInclude(char *tzFileName)
+void fstk_RunInclude(char *tzFileName)
 {
-	FILE *f;
+	FILE *f = fstk_FindFile(tzFileName);
 
-	f = fstk_FindFile(tzFileName);
+	if (f == NULL)
+		err(1, "Unable to open included file '%s'", tzFileName);
 
-	if (f == NULL) {
-		err(1, "Unable to open included file '%s'",
-		    tzFileName);
-	}
-
 	pushcontext();
 	nLineNo = 1;
 	nCurrentStatus = STAT_isInclude;
@@ -281,7 +280,7 @@
 	CurrentFlexHandle = yy_create_buffer(pCurrentFile);
 	yy_switch_to_buffer(CurrentFlexHandle);
 
-	//Dirty hack to give the INCLUDE directive a linefeed
+	/* Dirty hack to give the INCLUDE directive a linefeed */
 
 	yyunput('\n');
 	nLineNo -= 1;
@@ -290,35 +289,35 @@
 /*
  * Set up a macro for parsing
  */
-uint32_t
-fstk_RunMacro(char *s)
+uint32_t fstk_RunMacro(char *s)
 {
-	struct sSymbol *sym;
+	struct sSymbol *sym = sym_FindMacro(s);
 
-	if ((sym = sym_FindMacro(s)) != NULL) {
-		pushcontext();
-		sym_SetMacroArgID(nMacroCount++);
-		nLineNo = -1;
-		sym_UseNewMacroArgs();
-		nCurrentStatus = STAT_isMacro;
-		strcpy(tzCurrentFileName, s);
-		if (sym->pMacro == NULL)
-			return 0;
-		pCurrentMacro = sym;
-		CurrentFlexHandle =
-		    yy_scan_bytes(pCurrentMacro->pMacro,
-		    strlen(pCurrentMacro->pMacro));
-		yy_switch_to_buffer(CurrentFlexHandle);
-		return (1);
-	} else
-		return (0);
+	if (sym == NULL)
+		return 0;
+
+	pushcontext();
+	sym_SetMacroArgID(nMacroCount++);
+	nLineNo = -1;
+	sym_UseNewMacroArgs();
+	nCurrentStatus = STAT_isMacro;
+	strcpy(tzCurrentFileName, s);
+
+	if (sym->pMacro == NULL)
+		return 0;
+
+	pCurrentMacro = sym;
+	CurrentFlexHandle = yy_scan_bytes(pCurrentMacro->pMacro,
+					  strlen(pCurrentMacro->pMacro));
+	yy_switch_to_buffer(CurrentFlexHandle);
+
+	return 1;
 }
 
 /*
  * Set up a macroargument for parsing
  */
-void
-fstk_RunMacroArg(int32_t s)
+void fstk_RunMacroArg(int32_t s)
 {
 	char *sym;
 
@@ -327,40 +326,41 @@
 	else
 		s -= '0';
 
-	if ((sym = sym_FindMacroArg(s)) != NULL) {
-		pushcontext();
-		nCurrentStatus = STAT_isMacroArg;
-		sprintf(tzCurrentFileName, "%c", (uint8_t) s);
-		CurrentFlexHandle = yy_scan_bytes(sym, strlen(sym));
-		yy_switch_to_buffer(CurrentFlexHandle);
-	} else
+	sym = sym_FindMacroArg(s);
+
+	if (sym == NULL)
 		fatalerror("No such macroargument");
+
+	pushcontext();
+	nCurrentStatus = STAT_isMacroArg;
+	sprintf(tzCurrentFileName, "%c", (uint8_t)s);
+	CurrentFlexHandle = yy_scan_bytes(sym, strlen(sym));
+	yy_switch_to_buffer(CurrentFlexHandle);
 }
 
 /*
  * Set up a stringequate for parsing
  */
-void
-fstk_RunString(char *s)
+void fstk_RunString(char *s)
 {
-	struct sSymbol *pSym;
+	const struct sSymbol *pSym = sym_FindSymbol(s);
 
-	if ((pSym = sym_FindSymbol(s)) != NULL) {
+	if (pSym != NULL) {
 		pushcontext();
 		nCurrentStatus = STAT_isMacroArg;
 		strcpy(tzCurrentFileName, s);
 		CurrentFlexHandle =
-		    yy_scan_bytes(pSym->pMacro, strlen(pSym->pMacro));
+			yy_scan_bytes(pSym->pMacro, strlen(pSym->pMacro));
 		yy_switch_to_buffer(CurrentFlexHandle);
-	} else
+	} else {
 		yyerror("No such string symbol '%s'", s);
+	}
 }
 
 /*
  * Set up a repeat block for parsing
  */
-void
-fstk_RunRept(uint32_t count)
+void fstk_RunRept(uint32_t count)
 {
 	if (count) {
 		pushcontext();
@@ -372,7 +372,7 @@
 		nCurrentREPTBlockSize = ulNewMacroSize;
 		pCurrentREPTBlock = tzNewMacro;
 		CurrentFlexHandle =
-		    yy_scan_bytes(pCurrentREPTBlock, nCurrentREPTBlockSize);
+			yy_scan_bytes(pCurrentREPTBlock, nCurrentREPTBlockSize);
 		yy_switch_to_buffer(CurrentFlexHandle);
 	}
 }
@@ -380,12 +380,11 @@
 /*
  * Initialize the filestack routines
  */
-void
-fstk_Init(char *s)
+void fstk_Init(char *s)
 {
 	char tzFileName[_MAX_PATH + 1];
-
 	char tzSymFileName[_MAX_PATH + 1 + 2];
+
 	snprintf(tzSymFileName, sizeof(tzSymFileName), "\"%s\"", s);
 	sym_AddString("__FILE__", tzSymFileName);
 
@@ -392,9 +391,8 @@
 	strcpy(tzFileName, s);
 	pFileStack = NULL;
 	pCurrentFile = fopen(tzFileName, "rb");
-	if (pCurrentFile == NULL) {
+	if (pCurrentFile == NULL)
 		err(1, "Unable to open file '%s'", tzFileName);
-	}
 
 	nMacroCount = 0;
 	nCurrentStatus = STAT_isInclude;
--- a/src/asm/globlex.c
+++ b/src/asm/globlex.c
@@ -14,40 +14,35 @@
 #include <math.h>
 #include <string.h>
 
-bool oDontExpandStrings = false;
+bool oDontExpandStrings;
 int32_t nGBGfxID = -1;
 int32_t nBinaryID = -1;
 
-int32_t
-gbgfx2bin(char ch)
+static int32_t gbgfx2bin(char ch)
 {
 	int32_t i;
 
 	for (i = 0; i <= 3; i += 1) {
-		if (CurrentOptions.gbgfx[i] == ch) {
-			return (i);
-		}
+		if (CurrentOptions.gbgfx[i] == ch)
+			return i;
 	}
 
-	return (0);
+	return 0;
 }
 
-int32_t
-binary2bin(char ch)
+static int32_t binary2bin(char ch)
 {
 	int32_t i;
 
 	for (i = 0; i <= 1; i += 1) {
-		if (CurrentOptions.binary[i] == ch) {
-			return (i);
-		}
+		if (CurrentOptions.binary[i] == ch)
+			return i;
 	}
 
-	return (0);
+	return 0;
 }
 
-int32_t
-char2bin(char ch)
+static int32_t char2bin(char ch)
 {
 	if (ch >= 'a' && ch <= 'f')
 		return (ch - 'a' + 10);
@@ -58,13 +53,12 @@
 	if (ch >= '0' && ch <= '9')
 		return (ch - '0');
 
-	return (0);
+	return 0;
 }
 
 typedef int32_t(*x2bin) (char ch);
 
-int32_t
-ascii2bin(char *s)
+static int32_t ascii2bin(char *s)
 {
 	int32_t radix = 10;
 	int32_t result = 0;
@@ -105,11 +99,10 @@
 			result = result * radix + convertfunc(*s++);
 	}
 
-	return (result);
+	return result;
 }
 
-uint32_t
-ParseFixedPoint(char *s, uint32_t size)
+uint32_t ParseFixedPoint(char *s, uint32_t size)
 {
 	uint32_t i = 0, dot = 0;
 
@@ -125,13 +118,12 @@
 
 	yyunputbytes(size);
 
-	yylval.nConstValue = (int32_t) (atof(s) * 65536);
+	yylval.nConstValue = (int32_t)(atof(s) * 65536);
 
-	return (1);
+	return 1;
 }
 
-uint32_t
-ParseNumber(char *s, uint32_t size)
+uint32_t ParseNumber(char *s, uint32_t size)
 {
 	char dest[256];
 
@@ -139,11 +131,10 @@
 	dest[size] = 0;
 	yylval.nConstValue = ascii2bin(dest);
 
-	return (1);
+	return 1;
 }
 
-uint32_t
-ParseSymbol(char *src, uint32_t size)
+uint32_t ParseSymbol(char *src, uint32_t size)
 {
 	char dest[MAXSYMLEN + 1];
 	int32_t copied = 0, size_backup = size;
@@ -155,13 +146,13 @@
 			src += 1;
 			size -= 1;
 
-			if (*src == '@')
+			if (*src == '@') {
 				marg = sym_FindMacroArg(-1);
-			else if (*src >= '0' && *src <= '9')
+			} else if (*src >= '0' && *src <= '9') {
 				marg = sym_FindMacroArg(*src - '0');
-			else {
+			} else {
 				fatalerror("Malformed ID");
-				return (0);
+				return 0;
 			}
 
 			src += 1;
@@ -189,47 +180,48 @@
 		yyunputstr(s = sym_GetStringValue(dest));
 
 		while (*s) {
-			if (*s++ == '\n') {
+			if (*s++ == '\n')
 				nLineNo -= 1;
-			}
 		}
-		return (0);
-	} else {
-		strcpy(yylval.tzString, dest);
-		return (1);
+		return 0;
 	}
+
+	strcpy(yylval.tzString, dest);
+	return 1;
 }
 
-uint32_t
-PutMacroArg(char *src, uint32_t size)
+uint32_t PutMacroArg(char *src, uint32_t size)
 {
 	char *s;
 
 	yyskipbytes(size);
 	if ((size == 2 && src[1] >= '1' && src[1] <= '9')) {
-		if ((s = sym_FindMacroArg(src[1] - '0')) != NULL) {
+		s = sym_FindMacroArg(src[1] - '0');
+
+		if (s != NULL)
 			yyunputstr(s);
-		} else {
+		else
 			yyerror("Macro argument not defined");
-		}
 	} else {
 		yyerror("Invalid macro argument");
 	}
-	return (0);
+	return 0;
 }
 
-uint32_t
-PutUniqueArg(char *src, uint32_t size)
+uint32_t PutUniqueArg(char *src, uint32_t size)
 {
 	char *s;
 
 	yyskipbytes(size);
-	if ((s = sym_FindMacroArg(-1)) != NULL) {
+
+	s = sym_FindMacroArg(-1);
+
+	if (s != NULL)
 		yyunputstr(s);
-	} else {
+	else
 		yyerror("Macro unique label string not defined");
-	}
-	return (0);
+
+	return 0;
 }
 
 enum {
@@ -237,9 +229,9 @@
 	T_LEX_MACROUNIQUE
 };
 
-extern struct sLexInitString localstrings[];
+extern const struct sLexInitString localstrings[];
 
-struct sLexInitString staticstrings[] = {
+const struct sLexInitString staticstrings[] = {
 	{"||", T_OP_LOGICOR},
 	{"&&", T_OP_LOGICAND},
 	{"==", T_OP_LOGICEQU},
@@ -329,7 +321,7 @@
 	{"else", T_POP_ELSE},
 	{"elif", T_POP_ELIF},
 	{"endc", T_POP_ENDC},
-	
+
 	{"union", T_POP_UNION},
 	{"nextu", T_POP_NEXTU},
 	{"endu", T_POP_ENDU},
@@ -367,27 +359,27 @@
 	{NULL, 0}
 };
 
-struct sLexFloat tNumberToken = {
+const struct sLexFloat tNumberToken = {
 	ParseNumber,
 	T_NUMBER
 };
 
-struct sLexFloat tFixedPointToken = {
+const struct sLexFloat tFixedPointToken = {
 	ParseFixedPoint,
 	T_NUMBER
 };
 
-struct sLexFloat tIDToken = {
+const struct sLexFloat tIDToken = {
 	ParseSymbol,
 	T_ID
 };
 
-struct sLexFloat tMacroArgToken = {
+const struct sLexFloat tMacroArgToken = {
 	PutMacroArg,
 	T_LEX_MACROARG
 };
 
-struct sLexFloat tMacroUniqueToken = {
+const struct sLexFloat tMacroUniqueToken = {
 	PutUniqueArg,
 	T_LEX_MACROUNIQUE
 };
@@ -403,7 +395,7 @@
 
 	//Macro arguments
 
-	    id = lex_FloatAlloc(&tMacroArgToken);
+	id = lex_FloatAlloc(&tMacroArgToken);
 	lex_FloatAddFirstRange(id, '\\', '\\');
 	lex_FloatAddSecondRange(id, '1', '9');
 	id = lex_FloatAlloc(&tMacroUniqueToken);
@@ -412,7 +404,7 @@
 
 	//Decimal constants
 
-	    id = lex_FloatAlloc(&tNumberToken);
+	id = lex_FloatAlloc(&tNumberToken);
 	lex_FloatAddFirstRange(id, '0', '9');
 	lex_FloatAddSecondRange(id, '0', '9');
 	lex_FloatAddRange(id, '0', '9');
@@ -419,20 +411,21 @@
 
 	//Binary constants
 
-	    nBinaryID = id = lex_FloatAlloc(&tNumberToken);
+	id = lex_FloatAlloc(&tNumberToken);
+	nBinaryID = id;
 	lex_FloatAddFirstRange(id, '%', '%');
 	lex_FloatAddSecondRange(id, CurrentOptions.binary[0],
-	    CurrentOptions.binary[0]);
+				CurrentOptions.binary[0]);
 	lex_FloatAddSecondRange(id, CurrentOptions.binary[1],
-	    CurrentOptions.binary[1]);
+				CurrentOptions.binary[1]);
 	lex_FloatAddRange(id, CurrentOptions.binary[0],
-	    CurrentOptions.binary[0]);
+			  CurrentOptions.binary[0]);
 	lex_FloatAddRange(id, CurrentOptions.binary[1],
-	    CurrentOptions.binary[1]);
+			  CurrentOptions.binary[1]);
 
 	//Octal constants
 
-	    id = lex_FloatAlloc(&tNumberToken);
+	id = lex_FloatAlloc(&tNumberToken);
 	lex_FloatAddFirstRange(id, '&', '&');
 	lex_FloatAddSecondRange(id, '0', '7');
 	lex_FloatAddRange(id, '0', '7');
@@ -439,16 +432,17 @@
 
 	//Gameboy gfx constants
 
-	    nGBGfxID = id = lex_FloatAlloc(&tNumberToken);
+	id = lex_FloatAlloc(&tNumberToken);
+	nGBGfxID = id;
 	lex_FloatAddFirstRange(id, '`', '`');
 	lex_FloatAddSecondRange(id, CurrentOptions.gbgfx[0],
-	    CurrentOptions.gbgfx[0]);
+				CurrentOptions.gbgfx[0]);
 	lex_FloatAddSecondRange(id, CurrentOptions.gbgfx[1],
-	    CurrentOptions.gbgfx[1]);
+				CurrentOptions.gbgfx[1]);
 	lex_FloatAddSecondRange(id, CurrentOptions.gbgfx[2],
-	    CurrentOptions.gbgfx[2]);
+				CurrentOptions.gbgfx[2]);
 	lex_FloatAddSecondRange(id, CurrentOptions.gbgfx[3],
-	    CurrentOptions.gbgfx[3]);
+				CurrentOptions.gbgfx[3]);
 	lex_FloatAddRange(id, CurrentOptions.gbgfx[0], CurrentOptions.gbgfx[0]);
 	lex_FloatAddRange(id, CurrentOptions.gbgfx[1], CurrentOptions.gbgfx[1]);
 	lex_FloatAddRange(id, CurrentOptions.gbgfx[2], CurrentOptions.gbgfx[2]);
@@ -456,7 +450,7 @@
 
 	//Hex constants
 
-	    id = lex_FloatAlloc(&tNumberToken);
+	id = lex_FloatAlloc(&tNumberToken);
 	lex_FloatAddFirstRange(id, '$', '$');
 	lex_FloatAddSecondRange(id, '0', '9');
 	lex_FloatAddSecondRange(id, 'A', 'F');
@@ -467,7 +461,7 @@
 
 	//ID 's
 
-	    id = lex_FloatAlloc(&tIDToken);
+	id = lex_FloatAlloc(&tIDToken);
 	lex_FloatAddFirstRange(id, 'a', 'z');
 	lex_FloatAddFirstRange(id, 'A', 'Z');
 	lex_FloatAddFirstRange(id, '_', '_');
@@ -489,7 +483,7 @@
 
 	//Local ID
 
-	    id = lex_FloatAlloc(&tIDToken);
+	id = lex_FloatAlloc(&tIDToken);
 	lex_FloatAddFirstRange(id, '.', '.');
 	lex_FloatAddSecondRange(id, 'a', 'z');
 	lex_FloatAddSecondRange(id, 'A', 'Z');
@@ -504,12 +498,12 @@
 
 	//@ID
 
-	    id = lex_FloatAlloc(&tIDToken);
+	id = lex_FloatAlloc(&tIDToken);
 	lex_FloatAddFirstRange(id, '@', '@');
 
 	//Fixed point constants
 
-	    id = lex_FloatAlloc(&tFixedPointToken);
+	id = lex_FloatAlloc(&tFixedPointToken);
 	lex_FloatAddFirstRange(id, '.', '.');
 	lex_FloatAddFirstRange(id, '0', '9');
 	lex_FloatAddSecondRange(id, '.', '.');
@@ -516,5 +510,4 @@
 	lex_FloatAddSecondRange(id, '0', '9');
 	lex_FloatAddRange(id, '.', '.');
 	lex_FloatAddRange(id, '0', '9');
-
 }
--- a/src/asm/lexer.c
+++ b/src/asm/lexer.c
@@ -21,12 +21,13 @@
 	uint32_t nNameLength;
 	struct sLexString *pNext;
 };
-#define pLexBufferRealStart (pCurrentBuffer->pBufferRealStart)
-#define pLexBuffer		    (pCurrentBuffer->pBuffer)
-#define AtLineStart	        (pCurrentBuffer->oAtLineStart)
 
-#define SAFETYMARGIN	1024
+#define pLexBufferRealStart	(pCurrentBuffer->pBufferRealStart)
+#define pLexBuffer		(pCurrentBuffer->pBuffer)
+#define AtLineStart		(pCurrentBuffer->oAtLineStart)
 
+#define SAFETYMARGIN		1024
+
 extern size_t symvaluetostring(char *dest, size_t maxLength, char *sym);
 
 struct sLexFloat tLexFloat[32];
@@ -40,8 +41,7 @@
 uint32_t nFloating;
 enum eLexerState lexerstate = LEX_STATE_NORMAL;
 
-void
-upperstring(char *s)
+void upperstring(char *s)
 {
 	while (*s) {
 		*s = toupper(*s);
@@ -49,8 +49,7 @@
 	}
 }
 
-void
-lowerstring(char *s)
+void lowerstring(char *s)
 {
 	while (*s) {
 		*s = tolower(*s);
@@ -58,20 +57,17 @@
 	}
 }
 
-void
-yyskipbytes(uint32_t count)
+void yyskipbytes(uint32_t count)
 {
 	pLexBuffer += count;
 }
 
-void
-yyunputbytes(uint32_t count)
+void yyunputbytes(uint32_t count)
 {
 	pLexBuffer -= count;
 }
 
-void
-yyunput(char c)
+void yyunput(char c)
 {
 	if (pLexBuffer <= pLexBufferRealStart)
 		fatalerror("Buffer safety margin exceeded");
@@ -79,8 +75,7 @@
 	*(--pLexBuffer) = c;
 }
 
-void
-yyunputstr(char *s)
+void yyunputstr(char *s)
 {
 	int32_t i, len;
 
@@ -93,114 +88,109 @@
 		*(--pLexBuffer) = s[i];
 }
 
-void
-yy_switch_to_buffer(YY_BUFFER_STATE buf)
+void yy_switch_to_buffer(YY_BUFFER_STATE buf)
 {
 	pCurrentBuffer = buf;
 }
 
-void
-yy_set_state(enum eLexerState i)
+void yy_set_state(enum eLexerState i)
 {
 	lexerstate = i;
 }
 
-void
-yy_delete_buffer(YY_BUFFER_STATE buf)
+void yy_delete_buffer(YY_BUFFER_STATE buf)
 {
 	free(buf->pBufferStart - SAFETYMARGIN);
 	free(buf);
 }
 
-YY_BUFFER_STATE
-yy_scan_bytes(char *mem, uint32_t size)
+YY_BUFFER_STATE yy_scan_bytes(char *mem, uint32_t size)
 {
-	YY_BUFFER_STATE pBuffer;
+	YY_BUFFER_STATE pBuffer = malloc(sizeof(struct yy_buffer_state));
 
-	if ((pBuffer = malloc(sizeof(struct yy_buffer_state))) != NULL) {
-		if ((pBuffer->pBufferRealStart =
-		    malloc(size + 1 + SAFETYMARGIN)) != NULL) {
-			pBuffer->pBufferStart = pBuffer->pBufferRealStart + SAFETYMARGIN;
-			pBuffer->pBuffer = pBuffer->pBufferRealStart + SAFETYMARGIN;
-			memcpy(pBuffer->pBuffer, mem, size);
-			pBuffer->nBufferSize = size;
-			pBuffer->oAtLineStart = 1;
-			pBuffer->pBuffer[size] = 0;
-			return (pBuffer);
-		}
-	}
-	fatalerror("Out of memory!");
-	return (NULL);
+	if (pBuffer == NULL)
+		fatalerror("%s: Out of memory!", __func__);
+
+	pBuffer->pBufferRealStart = malloc(size + 1 + SAFETYMARGIN);
+
+	if (pBuffer->pBufferRealStart == NULL)
+		fatalerror("%s: Out of memory for buffer!", __func__);
+
+	pBuffer->pBufferStart = pBuffer->pBufferRealStart + SAFETYMARGIN;
+	pBuffer->pBuffer = pBuffer->pBufferRealStart + SAFETYMARGIN;
+	memcpy(pBuffer->pBuffer, mem, size);
+	pBuffer->nBufferSize = size;
+	pBuffer->oAtLineStart = 1;
+	pBuffer->pBuffer[size] = 0;
+
+	return pBuffer;
 }
 
-YY_BUFFER_STATE
-yy_create_buffer(FILE * f)
+YY_BUFFER_STATE yy_create_buffer(FILE *f)
 {
-	YY_BUFFER_STATE pBuffer;
+	YY_BUFFER_STATE pBuffer = malloc(sizeof(struct yy_buffer_state));
 
-	if ((pBuffer = malloc(sizeof(struct yy_buffer_state))) != NULL) {
-		uint32_t size;
+	if (pBuffer == NULL)
+		fatalerror("%s: Out of memory!", __func__);
 
-		fseek(f, 0, SEEK_END);
-		size = ftell(f);
-		fseek(f, 0, SEEK_SET);
+	uint32_t size;
 
-		if ((pBuffer->pBufferRealStart =
-			malloc(size + 2 + SAFETYMARGIN)) != NULL) {
-			char *mem;
-			uint32_t instring = 0;
+	fseek(f, 0, SEEK_END);
+	size = ftell(f);
+	fseek(f, 0, SEEK_SET);
 
-			pBuffer->pBufferStart = pBuffer->pBufferRealStart + SAFETYMARGIN;
-			pBuffer->pBuffer = pBuffer->pBufferRealStart + SAFETYMARGIN;
+	pBuffer->pBufferRealStart = malloc(size + 2 + SAFETYMARGIN);
 
-			size = fread(pBuffer->pBuffer, sizeof(uint8_t), size, f);
+	if (pBuffer->pBufferRealStart == NULL)
+		fatalerror("%s: Out of memory for buffer!", __func__);
 
-			pBuffer->pBuffer[size] = '\n';
-			pBuffer->pBuffer[size + 1] = 0;
-			pBuffer->nBufferSize = size + 1;
+	pBuffer->pBufferStart = pBuffer->pBufferRealStart + SAFETYMARGIN;
+	pBuffer->pBuffer = pBuffer->pBufferRealStart + SAFETYMARGIN;
 
-			mem = pBuffer->pBuffer;
+	size = fread(pBuffer->pBuffer, sizeof(uint8_t), size, f);
 
-			while (*mem) {
-				if (*mem == '\"')
-					instring = 1 - instring;
+	pBuffer->pBuffer[size] = '\n';
+	pBuffer->pBuffer[size + 1] = 0;
+	pBuffer->nBufferSize = size + 1;
 
-				if (mem[0] == '\\' &&
-				    (mem[1] == '\"' || mem[1] == '\\')) {
-					mem += 2;
-				} else if (instring) {
-					mem += 1;
-				} else {
-					if ((mem[0] == 10 && mem[1] == 13)
-					 || (mem[0] == 13 && mem[1] == 10)) {
-						mem[0] = ' ';
-						mem[1] = '\n';
-						mem += 2;
-					} else if (mem[0] == 10 || mem[0] == 13) {
-						mem[0] = '\n';
-						mem += 1;
-					} else if (mem[0] == '\n' && mem[1] == '*') {
-						mem += 1;
-						while (!(*mem == '\n' || *mem == '\0'))
-							*mem++ = ' ';
-					} else if (*mem == ';') {
-						while (!(*mem == '\n' || *mem == '\0'))
-							*mem++ = ' ';
-					} else
-						mem += 1;
-				}
-			}
+	char *mem = pBuffer->pBuffer;
+	uint32_t instring = 0;
 
-			pBuffer->oAtLineStart = 1;
-			return (pBuffer);
+	while (*mem) {
+		if (*mem == '\"')
+			instring = 1 - instring;
+
+		if ((mem[0] == '\\') && (mem[1] == '\"' || mem[1] == '\\')) {
+			mem += 2;
+		} else if (instring) {
+			mem += 1;
+		} else {
+			if ((mem[0] == 10 && mem[1] == 13)
+				|| (mem[0] == 13 && mem[1] == 10)) {
+				mem[0] = ' ';
+				mem[1] = '\n';
+				mem += 2;
+			} else if (mem[0] == 10 || mem[0] == 13) {
+				mem[0] = '\n';
+				mem += 1;
+			} else if (mem[0] == '\n' && mem[1] == '*') {
+				mem += 1;
+				while (!(*mem == '\n' || *mem == '\0'))
+					*mem++ = ' ';
+			} else if (*mem == ';') {
+				while (!(*mem == '\n' || *mem == '\0'))
+					*mem++ = ' ';
+			} else {
+				mem += 1;
+			}
 		}
 	}
-	fatalerror("Out of memory!");
-	return (NULL);
+
+	pBuffer->oAtLineStart = 1;
+	return pBuffer;
 }
 
-uint32_t
-lex_FloatAlloc(struct sLexFloat *token)
+uint32_t lex_FloatAlloc(const struct sLexFloat *token)
 {
 	tLexFloat[nFloating] = *token;
 
@@ -211,17 +201,15 @@
  * Make sure that only non-zero ASCII characters are used. Also, check if the
  * start is greater than the end of the range.
  */
-void
-lex_CheckCharacterRange(uint16_t start, uint16_t end)
+void lex_CheckCharacterRange(uint16_t start, uint16_t end)
 {
 	if (start > end || start < 1 || end > 127) {
 		errx(1, "Invalid character range (start: %u, end: %u)",
-		        start, end);
+		     start, end);
 	}
 }
 
-void
-lex_FloatDeleteRange(uint32_t id, uint16_t start, uint16_t end)
+void lex_FloatDeleteRange(uint32_t id, uint16_t start, uint16_t end)
 {
 	lex_CheckCharacterRange(start, end);
 
@@ -231,8 +219,7 @@
 	}
 }
 
-void
-lex_FloatAddRange(uint32_t id, uint16_t start, uint16_t end)
+void lex_FloatAddRange(uint32_t id, uint16_t start, uint16_t end)
 {
 	lex_CheckCharacterRange(start, end);
 
@@ -242,8 +229,7 @@
 	}
 }
 
-void
-lex_FloatDeleteFirstRange(uint32_t id, uint16_t start, uint16_t end)
+void lex_FloatDeleteFirstRange(uint32_t id, uint16_t start, uint16_t end)
 {
 	lex_CheckCharacterRange(start, end);
 
@@ -253,8 +239,7 @@
 	}
 }
 
-void
-lex_FloatAddFirstRange(uint32_t id, uint16_t start, uint16_t end)
+void lex_FloatAddFirstRange(uint32_t id, uint16_t start, uint16_t end)
 {
 	lex_CheckCharacterRange(start, end);
 
@@ -264,8 +249,7 @@
 	}
 }
 
-void
-lex_FloatDeleteSecondRange(uint32_t id, uint16_t start, uint16_t end)
+void lex_FloatDeleteSecondRange(uint32_t id, uint16_t start, uint16_t end)
 {
 	lex_CheckCharacterRange(start, end);
 
@@ -275,8 +259,7 @@
 	}
 }
 
-void
-lex_FloatAddSecondRange(uint32_t id, uint16_t start, uint16_t end)
+void lex_FloatAddSecondRange(uint32_t id, uint16_t start, uint16_t end)
 {
 	lex_CheckCharacterRange(start, end);
 
@@ -286,12 +269,10 @@
 	}
 }
 
-struct sLexFloat *
-lexgetfloat(uint32_t nFloatMask)
+static struct sLexFloat *lexgetfloat(uint32_t nFloatMask)
 {
-	if (nFloatMask == 0) {
-		fatalerror("Internal error in lexgetfloat");
-	}
+	if (nFloatMask == 0)
+		fatalerror("Internal error in %s", __func__);
 
 	int32_t i = 0;
 
@@ -300,29 +281,25 @@
 		i++;
 	}
 
-	return (&tLexFloat[i]);
+	return &tLexFloat[i];
 }
 
-uint32_t
-lexcalchash(char *s)
+static uint32_t lexcalchash(char *s)
 {
 	uint32_t hash = 0;
 
-	while (*s) {
+	while (*s)
 		hash = (hash * 283) ^ toupper(*s++);
-	}
 
-	return (hash % LEXHASHSIZE);
+	return hash % LEXHASHSIZE;
 }
 
-void
-lex_Init(void)
+void lex_Init(void)
 {
 	uint32_t i;
 
-	for (i = 0; i < LEXHASHSIZE; i++) {
+	for (i = 0; i < LEXHASHSIZE; i++)
 		tLexHash[i] = NULL;
-	}
 
 	for (i = 0; i < 256; i++) {
 		tFloatingFirstChar[i] = 0;
@@ -334,8 +311,7 @@
 	nFloating = 0;
 }
 
-void
-lex_AddStrings(struct sLexInitString * lex)
+void lex_AddStrings(const struct sLexInitString *lex)
 {
 	while (lex->tzName) {
 		struct sLexString **ppHash;
@@ -345,23 +321,23 @@
 		while (*ppHash)
 			ppHash = &((*ppHash)->pNext);
 
-		if (((*ppHash) = malloc(sizeof(struct sLexString))) != NULL) {
-			if (((*ppHash)->tzName =
-				(char *) strdup(lex->tzName)) != NULL) {
-				(*ppHash)->nNameLength = strlen(lex->tzName);
-				(*ppHash)->nToken = lex->nToken;
-				(*ppHash)->pNext = NULL;
+		*ppHash = malloc(sizeof(struct sLexString));
+		if (*ppHash == NULL)
+			fatalerror("Out of memory!");
 
-				upperstring((*ppHash)->tzName);
+		(*ppHash)->tzName = (char *)strdup(lex->tzName);
+		if ((*ppHash)->tzName == NULL)
+			fatalerror("Out of memory!");
 
-				if ((*ppHash)->nNameLength > nLexMaxLength)
-					nLexMaxLength = (*ppHash)->nNameLength;
+		(*ppHash)->nNameLength = strlen(lex->tzName);
+		(*ppHash)->nToken = lex->nToken;
+		(*ppHash)->pNext = NULL;
 
-			} else
-				fatalerror("Out of memory!");
-		} else
-			fatalerror("Out of memory!");
+		upperstring((*ppHash)->tzName);
 
+		if ((*ppHash)->nNameLength > nLexMaxLength)
+			nLexMaxLength = (*ppHash)->nNameLength;
+
 		lex += 1;
 	}
 }
@@ -376,11 +352,12 @@
  * The token types with the longest match from the current position in the
  * buffer will have their bits set in the float mask.
  */
-void
-yylex_GetFloatMaskAndFloatLen(uint32_t *pnFloatMask, uint32_t *pnFloatLen)
+void yylex_GetFloatMaskAndFloatLen(uint32_t *pnFloatMask, uint32_t *pnFloatLen)
 {
-	// Note that '\0' should always have a bit mask of 0 in the "floating"
-	// tables, so it doesn't need to be checked for separately.
+	/*
+	 * Note that '\0' should always have a bit mask of 0 in the "floating"
+	 * tables, so it doesn't need to be checked for separately.
+	 */
 
 	char *s = pLexBuffer;
 	uint32_t nOldFloatMask = 0;
@@ -405,8 +382,7 @@
 /*
  * Gets the longest keyword/operator from the current position in the buffer.
  */
-struct sLexString *
-yylex_GetLongestFixed()
+struct sLexString *yylex_GetLongestFixed()
 {
 	struct sLexString *pLongestFixed = NULL;
 	char *s = pLexBuffer;
@@ -433,8 +409,7 @@
 	return pLongestFixed;
 }
 
-size_t
-CopyMacroArg(char *dest, size_t maxLength, char c)
+size_t CopyMacroArg(char *dest, size_t maxLength, char c)
 {
 	size_t i;
 	char *s;
@@ -459,13 +434,15 @@
 		return 0;
 	}
 
-	if ((s = sym_FindMacroArg(argNum)) == NULL)
+	s = sym_FindMacroArg(argNum);
+
+	if (s == NULL)
 		fatalerror("Macro argument not defined");
 
 	for (i = 0; s[i] != 0; i++) {
-		if (i >= maxLength) {
+		if (i >= maxLength)
 			fatalerror("Macro argument too long to fit buffer");
-		}
+
 		dest[i] = s[i];
 	}
 
@@ -472,22 +449,18 @@
 	return i;
 }
 
-static inline void
-yylex_StringWriteChar(char *s, size_t index, char c)
+static inline void yylex_StringWriteChar(char *s, size_t index, char c)
 {
-	if (index >= MAXSTRLEN) {
+	if (index >= MAXSTRLEN)
 		fatalerror("String too long");
-	}
 
 	s[index] = c;
 }
 
-static inline void
-yylex_SymbolWriteChar(char *s, size_t index, char c)
+static inline void yylex_SymbolWriteChar(char *s, size_t index, char c)
 {
-	if (index >= MAXSYMLEN) {
+	if (index >= MAXSYMLEN)
 		fatalerror("Symbol too long");
-	}
 
 	s[index] = c;
 }
@@ -498,14 +471,15 @@
  */
 void yylex_TrimEnd(char *s, size_t index)
 {
-	int32_t i;
+	int32_t i = (int32_t)index - 1;
 
-	for (i = (int32_t)index - 1; i >= 0 && (s[i] == ' ' || s[i] == '\t'); i--)
+	while ((i >= 0) && (s[i] == ' ' || s[i] == '\t')) {
 		s[i] = 0;
+		i--;
+	}
 }
 
-size_t
-yylex_ReadBracketedSymbol(char *dest, size_t index)
+size_t yylex_ReadBracketedSymbol(char *dest, size_t index)
 {
 	char sym[MAXSYMLEN + 1];
 	char ch;
@@ -524,13 +498,15 @@
 				i += length;
 			else
 				fatalerror("Illegal character escape '%c'", ch);
-		} else
+		} else {
 			yylex_SymbolWriteChar(sym, i++, ch);
+		}
 	}
 
 	yylex_SymbolWriteChar(sym, i, 0);
 
-	maxLength = MAXSTRLEN - index; // it's assumed we're writing to a T_STRING
+	/* It's assumed we're writing to a T_STRING */
+	maxLength = MAXSTRLEN - index;
 	length = symvaluetostring(&dest[index], maxLength, sym);
 
 	if (*pLexBuffer == '}')
@@ -541,8 +517,7 @@
 	return length;
 }
 
-void
-yylex_ReadQuotedString()
+static void yylex_ReadQuotedString(void)
 {
 	size_t index = 0;
 	size_t length, maxLength;
@@ -577,12 +552,14 @@
 				break;
 			default:
 				maxLength = MAXSTRLEN - index;
-				length = CopyMacroArg(&yylval.tzString[index], maxLength, ch);
+				length = CopyMacroArg(&yylval.tzString[index],
+						      maxLength, ch);
 
 				if (length != 0)
 					index += length;
 				else
-					fatalerror("Illegal character escape '%c'", ch);
+					fatalerror("Illegal character escape '%c'",
+						   ch);
 
 				ch = 0;
 				break;
@@ -589,7 +566,8 @@
 			}
 		} else if (ch == '{') {
 			// Get bracketed symbol within string.
-			index += yylex_ReadBracketedSymbol(yylval.tzString, index);
+			index += yylex_ReadBracketedSymbol(yylval.tzString,
+							   index);
 			ch = 0;
 		}
 
@@ -605,8 +583,7 @@
 		fatalerror("Unterminated string");
 }
 
-uint32_t
-yylex_NORMAL()
+static uint32_t yylex_NORMAL(void)
 {
 	struct sLexString *pLongestFixed = NULL;
 	uint32_t nFloatMask, nFloatLen;
@@ -629,15 +606,20 @@
 		}
 	}
 
-	// Try to match an identifier, macro argument (e.g. \1),
-	// or numeric literal.
+	/*
+	 * Try to match an identifier, macro argument (e.g. \1),
+	 * or numeric literal.
+	 */
 	yylex_GetFloatMaskAndFloatLen(&nFloatMask, &nFloatLen);
 
-	// Try to match a keyword or operator.
+	/* Try to match a keyword or operator. */
 	pLongestFixed = yylex_GetLongestFixed();
 
 	if (nFloatLen == 0 && pLongestFixed == NULL) {
-		// No keyword, identifier, operator, or numerical literal matches.
+		/*
+		 * No keyword, identifier, operator, or numerical literal
+		 * matches.
+		 */
 
 		if (*pLexBuffer == '"') {
 			pLexBuffer++;
@@ -647,23 +629,29 @@
 			pLexBuffer++;
 			yylex_ReadBracketedSymbol(yylval.tzString, 0);
 			return T_STRING;
-		} else {
-			// It's not a keyword, operator, identifier, macro argument,
-			// numeric literal, string, or bracketed symbol, so just return
-			// the ASCII character.
-			if (*pLexBuffer == '\n')
-				AtLineStart = 1;
-
-			return *pLexBuffer++;
 		}
+
+		/*
+		 * It's not a keyword, operator, identifier, macro argument,
+		 * numeric literal, string, or bracketed symbol, so just return
+		 * the ASCII character.
+		 */
+		if (*pLexBuffer == '\n')
+			AtLineStart = 1;
+
+		return *pLexBuffer++;
 	}
 
 	if (pLongestFixed == NULL || nFloatLen > pLongestFixed->nNameLength) {
-		// Longest match was an identifier, macro argument, or numeric literal.
+		/*
+		 * Longest match was an identifier, macro argument, or numeric
+		 * literal.
+		 */
 		struct sLexFloat *token = lexgetfloat(nFloatMask);
 
 		if (token->Callback) {
 			int32_t done = token->Callback(pLexBuffer, nFloatLen);
+
 			if (!done)
 				goto scanagain;
 		}
@@ -670,29 +658,26 @@
 
 		pLexBuffer += nFloatLen;
 
-		if (token->nToken == T_ID && linestart) {
+		if (token->nToken == T_ID && linestart)
 			return T_LABEL;
-		} else {
+		else
 			return token->nToken;
-		}
 	}
 
-	// Longest match was a keyword or operator.
+	/* Longest match was a keyword or operator. */
 	pLexBuffer += pLongestFixed->nNameLength;
 	return pLongestFixed->nToken;
 }
 
-uint32_t
-yylex_MACROARGS()
+static uint32_t yylex_MACROARGS(void)
 {
 	size_t index = 0;
 	size_t length, maxLength;
 
-	while (*pLexBuffer == ' ' || *pLexBuffer == '\t') {
+	while ((*pLexBuffer == ' ') || (*pLexBuffer == '\t'))
 		pLexBuffer++;
-	}
 
-	while (*pLexBuffer != ',' && (*pLexBuffer != '\n')) {
+	while ((*pLexBuffer != ',') && (*pLexBuffer != '\n')) {
 		char ch = *pLexBuffer++;
 
 		if (ch == '\\') {
@@ -719,18 +704,21 @@
 				break;
 			default:
 				maxLength = MAXSTRLEN - index;
-				length = CopyMacroArg(&yylval.tzString[index], maxLength, ch);
+				length = CopyMacroArg(&yylval.tzString[index],
+						      maxLength, ch);
 
 				if (length != 0)
 					index += length;
 				else
-					fatalerror("Illegal character escape '%c'", ch);
+					fatalerror("Illegal character escape '%c'",
+						   ch);
 
 				ch = 0;
 				break;
 			}
 		} else if (ch == '{') {
-			index += yylex_ReadBracketedSymbol(yylval.tzString, index);
+			index += yylex_ReadBracketedSymbol(yylval.tzString,
+							   index);
 			ch = 0;
 		}
 		if (ch)
@@ -740,7 +728,7 @@
 	if (index) {
 		yylex_StringWriteChar(yylval.tzString, index, 0);
 
-		// trim trailing white space at the end of the line
+		/* trim trailing white space at the end of the line */
 		if (*pLexBuffer == '\n')
 			yylex_TrimEnd(yylval.tzString, index);
 
@@ -754,12 +742,10 @@
 		return ',';
 	}
 
-	fatalerror("Internal error in yylex_MACROARGS");
-	return 0;
+	fatalerror("Internal error in %s", __func__);
 }
 
-uint32_t
-yylex(void)
+uint32_t yylex(void)
 {
 	switch (lexerstate) {
 	case LEX_STATE_NORMAL:
@@ -768,6 +754,5 @@
 		return yylex_MACROARGS();
 	}
 
-	fatalerror("Internal error in yylex");
-	return 0;
+	fatalerror("Internal error in %s", __func__);
 }
--- a/src/asm/locallex.c
+++ b/src/asm/locallex.c
@@ -4,7 +4,7 @@
 
 #include "asmy.h"
 
-struct sLexInitString localstrings[] = {
+const struct sLexInitString localstrings[] = {
 	{"adc", T_Z80_ADC},
 	{"add", T_Z80_ADD},
 	{"and", T_Z80_AND},
--- a/src/asm/main.c
+++ b/src/asm/main.c
@@ -11,6 +11,7 @@
 #include "asm/fstack.h"
 #include "asm/output.h"
 #include "asm/main.h"
+
 #include "extern/err.h"
 #include "extern/reallocarray.h"
 #include "extern/version.h"
@@ -28,7 +29,7 @@
 bool skipElif;
 uint32_t unionStart[128], unionSize[128];
 
-extern int yydebug;
+/* extern int yydebug; */
 
 FILE *dependfile;
 extern char *tzObjectname;
@@ -45,73 +46,71 @@
 	struct sOptionStackEntry *pNext;
 };
 
-struct sOptionStackEntry *pOptionStack = NULL;
+struct sOptionStackEntry *pOptionStack;
 
-void
-opt_SetCurrentOptions(struct sOptions * pOpt)
+void opt_SetCurrentOptions(struct sOptions *pOpt)
 {
 	if (nGBGfxID != -1) {
 		lex_FloatDeleteRange(nGBGfxID, CurrentOptions.gbgfx[0],
-		    CurrentOptions.gbgfx[0]);
+				     CurrentOptions.gbgfx[0]);
 		lex_FloatDeleteRange(nGBGfxID, CurrentOptions.gbgfx[1],
-		    CurrentOptions.gbgfx[1]);
+				     CurrentOptions.gbgfx[1]);
 		lex_FloatDeleteRange(nGBGfxID, CurrentOptions.gbgfx[2],
-		    CurrentOptions.gbgfx[2]);
+				     CurrentOptions.gbgfx[2]);
 		lex_FloatDeleteRange(nGBGfxID, CurrentOptions.gbgfx[3],
-		    CurrentOptions.gbgfx[3]);
+				     CurrentOptions.gbgfx[3]);
 		lex_FloatDeleteSecondRange(nGBGfxID, CurrentOptions.gbgfx[0],
-		    CurrentOptions.gbgfx[0]);
+					   CurrentOptions.gbgfx[0]);
 		lex_FloatDeleteSecondRange(nGBGfxID, CurrentOptions.gbgfx[1],
-		    CurrentOptions.gbgfx[1]);
+					   CurrentOptions.gbgfx[1]);
 		lex_FloatDeleteSecondRange(nGBGfxID, CurrentOptions.gbgfx[2],
-		    CurrentOptions.gbgfx[2]);
+					   CurrentOptions.gbgfx[2]);
 		lex_FloatDeleteSecondRange(nGBGfxID, CurrentOptions.gbgfx[3],
-		    CurrentOptions.gbgfx[3]);
+					   CurrentOptions.gbgfx[3]);
 	}
 	if (nBinaryID != -1) {
 		lex_FloatDeleteRange(nBinaryID, CurrentOptions.binary[0],
-		    CurrentOptions.binary[0]);
+				     CurrentOptions.binary[0]);
 		lex_FloatDeleteRange(nBinaryID, CurrentOptions.binary[1],
-		    CurrentOptions.binary[1]);
+				     CurrentOptions.binary[1]);
 		lex_FloatDeleteSecondRange(nBinaryID, CurrentOptions.binary[0],
-		    CurrentOptions.binary[0]);
+					   CurrentOptions.binary[0]);
 		lex_FloatDeleteSecondRange(nBinaryID, CurrentOptions.binary[1],
-		    CurrentOptions.binary[1]);
+					   CurrentOptions.binary[1]);
 	}
 	CurrentOptions = *pOpt;
 
 	if (nGBGfxID != -1) {
 		lex_FloatAddRange(nGBGfxID, CurrentOptions.gbgfx[0],
-		    CurrentOptions.gbgfx[0]);
+				  CurrentOptions.gbgfx[0]);
 		lex_FloatAddRange(nGBGfxID, CurrentOptions.gbgfx[1],
-		    CurrentOptions.gbgfx[1]);
+				  CurrentOptions.gbgfx[1]);
 		lex_FloatAddRange(nGBGfxID, CurrentOptions.gbgfx[2],
-		    CurrentOptions.gbgfx[2]);
+				  CurrentOptions.gbgfx[2]);
 		lex_FloatAddRange(nGBGfxID, CurrentOptions.gbgfx[3],
-		    CurrentOptions.gbgfx[3]);
+				  CurrentOptions.gbgfx[3]);
 		lex_FloatAddSecondRange(nGBGfxID, CurrentOptions.gbgfx[0],
-		    CurrentOptions.gbgfx[0]);
+					CurrentOptions.gbgfx[0]);
 		lex_FloatAddSecondRange(nGBGfxID, CurrentOptions.gbgfx[1],
-		    CurrentOptions.gbgfx[1]);
+					CurrentOptions.gbgfx[1]);
 		lex_FloatAddSecondRange(nGBGfxID, CurrentOptions.gbgfx[2],
-		    CurrentOptions.gbgfx[2]);
+					CurrentOptions.gbgfx[2]);
 		lex_FloatAddSecondRange(nGBGfxID, CurrentOptions.gbgfx[3],
-		    CurrentOptions.gbgfx[3]);
+					CurrentOptions.gbgfx[3]);
 	}
 	if (nBinaryID != -1) {
 		lex_FloatAddRange(nBinaryID, CurrentOptions.binary[0],
-		    CurrentOptions.binary[0]);
+				  CurrentOptions.binary[0]);
 		lex_FloatAddRange(nBinaryID, CurrentOptions.binary[1],
-		    CurrentOptions.binary[1]);
+				  CurrentOptions.binary[1]);
 		lex_FloatAddSecondRange(nBinaryID, CurrentOptions.binary[0],
-		    CurrentOptions.binary[0]);
+					CurrentOptions.binary[0]);
 		lex_FloatAddSecondRange(nBinaryID, CurrentOptions.binary[1],
-		    CurrentOptions.binary[1]);
+					CurrentOptions.binary[1]);
 	}
 }
 
-void
-opt_Parse(char *s)
+void opt_Parse(char *s)
 {
 	struct sOptions newopt;
 
@@ -125,8 +124,7 @@
 			newopt.gbgfx[2] = s[3];
 			newopt.gbgfx[3] = s[4];
 		} else {
-			errx(1, "Must specify exactly 4 characters for "
-			    "option 'g'");
+			errx(1, "Must specify exactly 4 characters for option 'g'");
 		}
 		break;
 	case 'b':
@@ -134,8 +132,7 @@
 			newopt.binary[0] = s[1];
 			newopt.binary[1] = s[2];
 		} else {
-			errx(1, "Must specify exactly 2 characters for option "
-			    "'b'");
+			errx(1, "Must specify exactly 2 characters for option 'b'");
 		}
 		break;
 	case 'z':
@@ -143,12 +140,10 @@
 			int32_t result;
 
 			result = sscanf(&s[1], "%x", &newopt.fillchar);
-			if (!((result == EOF) || (result == 1))) {
+			if (!((result == EOF) || (result == 1)))
 				errx(1, "Invalid argument for option 'z'");
-			}
 		} else {
 			errx(1, "Invalid argument for option 'z'");
-			exit(1);
 		}
 		break;
 	default:
@@ -159,55 +154,49 @@
 	opt_SetCurrentOptions(&newopt);
 }
 
-void
-opt_Push(void)
+void opt_Push(void)
 {
 	struct sOptionStackEntry *pOpt;
 
-	if ((pOpt = malloc(sizeof(struct sOptionStackEntry))) != NULL) {
-		pOpt->Options = CurrentOptions;
-		pOpt->pNext = pOptionStack;
-		pOptionStack = pOpt;
-	} else
+	pOpt = malloc(sizeof(struct sOptionStackEntry));
+
+	if (pOpt == NULL)
 		fatalerror("No memory for option stack");
+
+	pOpt->Options = CurrentOptions;
+	pOpt->pNext = pOptionStack;
+	pOptionStack = pOpt;
 }
 
-void
-opt_Pop(void)
+void opt_Pop(void)
 {
-	if (pOptionStack) {
-		struct sOptionStackEntry *pOpt;
-
-		pOpt = pOptionStack;
-		opt_SetCurrentOptions(&(pOpt->Options));
-		pOptionStack = pOpt->pNext;
-		free(pOpt);
-	} else
+	if (pOptionStack == NULL)
 		fatalerror("No entries in the option stack");
+
+	struct sOptionStackEntry *pOpt;
+
+	pOpt = pOptionStack;
+	opt_SetCurrentOptions(&(pOpt->Options));
+	pOptionStack = pOpt->pNext;
+	free(pOpt);
 }
 
-void
-opt_AddDefine(char *s)
+void opt_AddDefine(char *s)
 {
 	char *value, *equals;
-	if(cldefines_index >= cldefines_size)
-	{
+
+	if (cldefines_index >= cldefines_size) {
 		cldefines_size *= 2;
 		cldefines = reallocarray(cldefines, cldefines_size,
-		                        2 * sizeof(void *));
-		if(!cldefines)
-		{
+					 2 * sizeof(void *));
+		if (!cldefines)
 			fatalerror("No memory for command line defines");
-		}
 	}
 	equals = strchr(s, '=');
-	if(equals)
-	{
+	if (equals) {
 		*equals = '\0';
 		value = equals + 1;
-	}
-	else
-	{
+	} else {
 		value = "1";
 	}
 	cldefines[cldefines_index++] = s;
@@ -214,22 +203,18 @@
 	cldefines[cldefines_index++] = value;
 }
 
-void
-opt_ParseDefines()
+static void opt_ParseDefines(void)
 {
 	int32_t i;
 
-	for(i = 0; i < cldefines_index; i += 2)
-	{
+	for (i = 0; i < cldefines_index; i += 2)
 		sym_AddString(cldefines[i], cldefines[i + 1]);
-	}
 }
 
 /*
  * Error handling
  */
-void
-verror(const char *fmt, va_list args)
+void verror(const char *fmt, va_list args)
 {
 	fprintf(stderr, "ERROR: ");
 	fstk_Dump();
@@ -239,32 +224,33 @@
 	nErrors += 1;
 }
 
-void
-yyerror(const char *fmt, ...)
+void yyerror(const char *fmt, ...)
 {
 	va_list args;
+
 	va_start(args, fmt);
 	verror(fmt, args);
 	va_end(args);
 }
 
-void
-fatalerror(const char *fmt, ...)
+void fatalerror(const char *fmt, ...)
 {
 	va_list args;
+
 	va_start(args, fmt);
 	verror(fmt, args);
 	va_end(args);
+
 	exit(5);
 }
 
-void
-warning(const char *fmt, ...)
+void warning(const char *fmt, ...)
 {
 	if (!CurrentOptions.warnings)
 		return;
 
 	va_list args;
+
 	va_start(args, fmt);
 
 	fprintf(stderr, "warning: ");
@@ -276,17 +262,15 @@
 	va_end(args);
 }
 
-static void
-usage(void)
+static void print_usage(void)
 {
 	printf(
-"Usage: rgbasm [-EhVvw] [-b chars] [-Dname[=value]] [-g chars] [-i path]\n"
+"usage: rgbasm [-EhVvw] [-b chars] [-Dname[=value]] [-g chars] [-i path]\n"
 "              [-M dependfile] [-o outfile] [-p pad_value] file.asm\n");
 	exit(1);
 }
 
-int
-main(int argc, char *argv[])
+int main(int argc, char *argv[])
 {
 	int ch;
 	char *ep;
@@ -298,15 +282,12 @@
 	dependfile = NULL;
 
 	cldefines_size = 32;
-	cldefines = reallocarray(cldefines, cldefines_size,
-	                        2 * sizeof(void *));
-	if(!cldefines)
-	{
+	cldefines = reallocarray(cldefines, cldefines_size, 2 * sizeof(void *));
+	if (!cldefines)
 		fatalerror("No memory for command line defines");
-	}
 
 	if (argc == 1)
-		usage();
+		print_usage();
 
 	/* yydebug=1; */
 
@@ -333,8 +314,7 @@
 				newopt.binary[0] = optarg[1];
 				newopt.binary[1] = optarg[2];
 			} else {
-				errx(1, "Must specify exactly 2 characters for "
-				    "option 'b'");
+				errx(1, "Must specify exactly 2 characters for option 'b'");
 			}
 			break;
 		case 'D':
@@ -350,8 +330,7 @@
 				newopt.gbgfx[2] = optarg[3];
 				newopt.gbgfx[3] = optarg[4];
 			} else {
-				errx(1, "Must specify exactly 4 characters for "
-				    "option 'g'");
+				errx(1, "Must specify exactly 4 characters for option 'g'");
 			}
 			break;
 		case 'h':
@@ -361,9 +340,10 @@
 			fstk_AddIncludePath(optarg);
 			break;
 		case 'M':
-			if ((dependfile = fopen(optarg, "w")) == NULL) {
+			dependfile = fopen(optarg, "w");
+			if (dependfile == NULL)
 				err(1, "Could not open dependfile %s", optarg);
-			}
+
 			break;
 		case 'o':
 			out_SetFileName(optarg);
@@ -370,13 +350,13 @@
 			break;
 		case 'p':
 			newopt.fillchar = strtoul(optarg, &ep, 0);
-			if (optarg[0] == '\0' || *ep != '\0') {
+
+			if (optarg[0] == '\0' || *ep != '\0')
 				errx(1, "Invalid argument for option 'p'");
-			}
-			if (newopt.fillchar < 0 || newopt.fillchar > 0xFF) {
-				errx(1, "Argument for option 'p' must be "
-				    "between 0 and 0xFF");
-			}
+
+			if (newopt.fillchar < 0 || newopt.fillchar > 0xFF)
+				errx(1, "Argument for option 'p' must be between 0 and 0xFF");
+
 			break;
 		case 'V':
 			printf("rgbasm %s\n", get_package_version_string());
@@ -388,7 +368,7 @@
 			newopt.warnings = false;
 			break;
 		default:
-			usage();
+			print_usage();
 			/* NOTREACHED */
 		}
 	}
@@ -400,15 +380,14 @@
 	DefaultOptions = CurrentOptions;
 
 	if (argc == 0)
-		usage();
+		print_usage();
 
 	tzMainfile = argv[argc - 1];
 
 	setuplex();
 
-	if (CurrentOptions.verbose) {
+	if (CurrentOptions.verbose)
 		printf("Assembling %s\n", tzMainfile);
-	}
 
 	if (dependfile) {
 		if (!tzObjectname)
@@ -432,23 +411,21 @@
 	fstk_Init(tzMainfile);
 	opt_ParseDefines();
 
-	if (CurrentOptions.verbose) {
+	if (CurrentOptions.verbose)
 		printf("Pass 1...\n");
-	}
 
 	yy_set_state(LEX_STATE_NORMAL);
 	opt_SetCurrentOptions(&DefaultOptions);
 
-	if (yyparse() != 0 || nErrors != 0) {
+	if (yyparse() != 0 || nErrors != 0)
 		errx(1, "Assembly aborted in pass 1 (%ld errors)!", nErrors);
-	}
 
-	if (nIFDepth != 0) {
+	if (nIFDepth != 0)
 		errx(1, "Unterminated IF construct (%ld levels)!", nIFDepth);
-	}
-	
+
 	if (nUnionDepth != 0) {
-		errx(1, "Unterminated UNION construct (%ld levels)!", nUnionDepth);
+		errx(1, "Unterminated UNION construct (%ld levels)!",
+		     nUnionDepth);
 	}
 
 	nTotalLines = 0;
@@ -466,27 +443,25 @@
 	opt_SetCurrentOptions(&DefaultOptions);
 	opt_ParseDefines();
 
-	if (CurrentOptions.verbose) {
+	if (CurrentOptions.verbose)
 		printf("Pass 2...\n");
-	}
 
-	if (yyparse() != 0 || nErrors != 0) {
+	if (yyparse() != 0 || nErrors != 0)
 		errx(1, "Assembly aborted in pass 2 (%ld errors)!", nErrors);
-	}
 
 	double timespent;
 
 	nEndClock = clock();
 	timespent = ((double)(nEndClock - nStartClock))
-	    / (double)CLOCKS_PER_SEC;
+		     / (double)CLOCKS_PER_SEC;
 	if (CurrentOptions.verbose) {
 		printf("Success! %u lines in %d.%02d seconds ", nTotalLines,
-		    (int) timespent, ((int) (timespent * 100.0)) % 100);
+		       (int)timespent, ((int)(timespent * 100.0)) % 100);
 		if (timespent == 0)
 			printf("(INFINITY lines/minute)\n");
 		else
 			printf("(%d lines/minute)\n",
-			    (int) (60 / timespent * nTotalLines));
+			       (int)(60 / timespent * nTotalLines));
 	}
 	out_WriteObject();
 	return 0;
--- a/src/asm/math.c
+++ b/src/asm/math.c
@@ -9,8 +9,8 @@
 #include "asm/mymath.h"
 #include "asm/symbol.h"
 
-#define fix2double(i)	((double)(i/65536.0))
-#define double2fix(d)	((int32_t)(d*65536.0))
+#define fx2double(i)	((double)((i) / 65536.0))
+#define double2fx(d)	((int32_t)((d) * 65536.0))
 
 #ifndef M_PI
 #define M_PI 3.14159265358979323846
@@ -19,131 +19,116 @@
 /*
  * Define the _PI symbol
  */
-void
-math_DefinePI(void)
+void math_DefinePI(void)
 {
-	sym_AddEqu("_PI", double2fix(M_PI));
+	sym_AddEqu("_PI", double2fx(M_PI));
 }
 
 /*
  * Print a fixed point value
  */
-void
-math_Print(int32_t i)
+void math_Print(int32_t i)
 {
 	if (i >= 0)
 		printf("%d.%05d", i >> 16,
-		    ((int32_t) (fix2double(i) * 100000 + 0.5)) % 100000);
+		       ((int32_t)(fx2double(i) * 100000 + 0.5)) % 100000);
 	else
 		printf("-%d.%05d", (-i) >> 16,
-		    ((int32_t) (fix2double(-i) * 100000 + 0.5)) % 100000);
+		       ((int32_t)(fx2double(-i) * 100000 + 0.5)) % 100000);
 }
 
 /*
  * Calculate sine
  */
-int32_t
-math_Sin(int32_t i)
+int32_t math_Sin(int32_t i)
 {
-	return (double2fix(sin(fix2double(i) * 2 * M_PI / 65536)));
+	return double2fx(sin(fx2double(i) * 2 * M_PI / 65536));
 }
 
 /*
  * Calculate cosine
  */
-int32_t
-math_Cos(int32_t i)
+int32_t math_Cos(int32_t i)
 {
-	return (double2fix(cos(fix2double(i) * 2 * M_PI / 65536)));
+	return double2fx(cos(fx2double(i) * 2 * M_PI / 65536));
 }
 
 /*
  * Calculate tangent
  */
-int32_t
-math_Tan(int32_t i)
+int32_t math_Tan(int32_t i)
 {
-	return (double2fix(tan(fix2double(i) * 2 * M_PI / 65536)));
+	return double2fx(tan(fx2double(i) * 2 * M_PI / 65536));
 }
 
 /*
  * Calculate arcsine
  */
-int32_t
-math_ASin(int32_t i)
+int32_t math_ASin(int32_t i)
 {
-	return (double2fix(asin(fix2double(i)) / 2 / M_PI * 65536));
+	return double2fx(asin(fx2double(i)) / 2 / M_PI * 65536);
 }
 
 /*
  * Calculate arccosine
  */
-int32_t
-math_ACos(int32_t i)
+int32_t math_ACos(int32_t i)
 {
-	return (double2fix(acos(fix2double(i)) / 2 / M_PI * 65536));
+	return double2fx(acos(fx2double(i)) / 2 / M_PI * 65536);
 }
 
 /*
  * Calculate arctangent
  */
-int32_t
-math_ATan(int32_t i)
+int32_t math_ATan(int32_t i)
 {
-	return (double2fix(atan(fix2double(i)) / 2 / M_PI * 65536));
+	return double2fx(atan(fx2double(i)) / 2 / M_PI * 65536);
 }
 
 /*
  * Calculate atan2
  */
-int32_t
-math_ATan2(int32_t i, int32_t j)
+int32_t math_ATan2(int32_t i, int32_t j)
 {
-	return (double2fix
-	    (atan2(fix2double(i), fix2double(j)) / 2 / M_PI * 65536));
+	return double2fx(atan2(fx2double(i), fx2double(j)) / 2 / M_PI * 65536);
 }
 
 /*
  * Multiplication
  */
-int32_t
-math_Mul(int32_t i, int32_t j)
+int32_t math_Mul(int32_t i, int32_t j)
 {
-	return (double2fix(fix2double(i) * fix2double(j)));
+	return double2fx(fx2double(i) * fx2double(j));
 }
 
 /*
  * Division
  */
-int32_t
-math_Div(int32_t i, int32_t j)
+int32_t math_Div(int32_t i, int32_t j)
 {
-	return (double2fix(fix2double(i) / fix2double(j)));
+	return double2fx(fx2double(i) / fx2double(j));
 }
 
 /*
  * Round
  */
-int32_t
-math_Round(int32_t i)
+int32_t math_Round(int32_t i)
 {
-	return double2fix(round(fix2double(i)));
+	return double2fx(round(fx2double(i)));
 }
 
 /*
  * Ceil
  */
-int32_t
-math_Ceil(int32_t i)
+int32_t math_Ceil(int32_t i)
 {
-	return double2fix(ceil(fix2double(i)));
+	return double2fx(ceil(fx2double(i)));
 }
 
 /*
  * Floor
  */
-int32_t
-math_Floor(int32_t i)
+int32_t math_Floor(int32_t i)
 {
-	return double2fix(floor(fix2double(i)));
+	return double2fx(floor(fx2double(i)));
 }
--- a/src/asm/output.c
+++ b/src/asm/output.c
@@ -10,16 +10,18 @@
 
 #include "asm/asm.h"
 #include "asm/charmap.h"
-#include "asm/output.h"
-#include "asm/symbol.h"
-#include "asm/mylink.h"
+#include "asm/fstack.h"
 #include "asm/main.h"
+#include "asm/mylink.h"
+#include "asm/output.h"
 #include "asm/rpn.h"
-#include "asm/fstack.h"
+#include "asm/symbol.h"
+
 #include "common.h"
+
 #include "extern/err.h"
 
-void out_SetCurrentSection(struct Section * pSect);
+void out_SetCurrentSection(struct Section *pSect);
 
 struct Patch {
 	char tzFilename[_MAX_PATH + 1];
@@ -35,7 +37,7 @@
 	uint32_t ID;
 	struct sSymbol *pSymbol;
 	struct PatchSymbol *pNext;
-	struct PatchSymbol *pBucketNext; // next symbol in hash table bucket
+	struct PatchSymbol *pBucketNext; /* next symbol in hash table bucket */
 };
 
 struct SectionStackEntry {
@@ -44,56 +46,62 @@
 };
 
 struct PatchSymbol *tHashedPatchSymbols[HASHSIZE];
-struct Section *pSectionList = NULL, *pCurrentSection = NULL;
-struct PatchSymbol *pPatchSymbols = NULL;
+struct Section *pSectionList, *pCurrentSection;
+struct PatchSymbol *pPatchSymbols;
 struct PatchSymbol **ppPatchSymbolsTail = &pPatchSymbols;
 char *tzObjectname;
-struct SectionStackEntry *pSectionStack = NULL;
+struct SectionStackEntry *pSectionStack;
 
 /*
  * Section stack routines
  */
-void
-out_PushSection(void)
+void out_PushSection(void)
 {
 	struct SectionStackEntry *pSect;
 
-	if ((pSect = malloc(sizeof(struct SectionStackEntry))) != NULL) {
-		pSect->pSection = pCurrentSection;
-		pSect->pNext = pSectionStack;
-		pSectionStack = pSect;
-	} else
+	pSect = malloc(sizeof(struct SectionStackEntry));
+	if (pSect == NULL)
 		fatalerror("No memory for section stack");
+
+	pSect->pSection = pCurrentSection;
+	pSect->pNext = pSectionStack;
+	pSectionStack = pSect;
 }
 
-void
-out_PopSection(void)
+void out_PopSection(void)
 {
-	if (pSectionStack) {
-		struct SectionStackEntry *pSect;
-
-		pSect = pSectionStack;
-		out_SetCurrentSection(pSect->pSection);
-		pSectionStack = pSect->pNext;
-		free(pSect);
-	} else
+	if (pSectionStack == NULL)
 		fatalerror("No entries in the section stack");
+
+	struct SectionStackEntry *pSect;
+
+	pSect = pSectionStack;
+	out_SetCurrentSection(pSect->pSection);
+	pSectionStack = pSect->pNext;
+	free(pSect);
 }
 
-uint32_t
-getmaxsectionsize(uint32_t secttype, char * sectname)
+static uint32_t getmaxsectionsize(uint32_t secttype, char *sectname)
 {
-	switch (secttype)
-	{
-		case SECT_ROM0:  return 0x8000; /* If ROMX sections not used. */
-		case SECT_ROMX:  return 0x4000;
-		case SECT_VRAM:  return 0x2000;
-		case SECT_SRAM:  return 0x2000;
-		case SECT_WRAM0: return 0x2000; /* If WRAMX sections not used. */
-		case SECT_WRAMX: return 0x1000;
-		case SECT_OAM:   return 0xA0;
-		case SECT_HRAM:  return 0x7F;
-		default: break;
+	switch (secttype) {
+	case SECT_ROM0:
+		return 0x8000; /* If ROMX sections not used */
+	case SECT_ROMX:
+		return 0x4000;
+	case SECT_VRAM:
+		return 0x2000;
+	case SECT_SRAM:
+		return 0x2000;
+	case SECT_WRAM0:
+		return 0x2000; /* If WRAMX sections not used */
+	case SECT_WRAMX:
+		return 0x1000;
+	case SECT_OAM:
+		return 0xA0;
+	case SECT_HRAM:
+		return 0x7F;
+	default:
+		break;
 	}
 	errx(1, "Section \"%s\" has an invalid section type.", sectname);
 }
@@ -101,8 +109,7 @@
 /*
  * Count the number of symbols used in this object
  */
-uint32_t
-countsymbols(void)
+static uint32_t countsymbols(void)
 {
 	struct PatchSymbol *pSym;
 	uint32_t count = 0;
@@ -120,8 +127,7 @@
 /*
  * Count the number of sections used in this object
  */
-uint32_t
-countsections(void)
+static uint32_t countsections(void)
 {
 	struct Section *pSect;
 	uint32_t count = 0;
@@ -139,8 +145,7 @@
 /*
  * Count the number of patches used in this object
  */
-uint32_t
-countpatches(struct Section * pSect)
+static uint32_t countpatches(struct Section *pSect)
 {
 	struct Patch *pPatch;
 	uint32_t r = 0;
@@ -157,8 +162,7 @@
 /*
  * Write a long to a file (little-endian)
  */
-void
-fputlong(uint32_t i, FILE * f)
+static void fputlong(uint32_t i, FILE *f)
 {
 	fputc(i, f);
 	fputc(i >> 8, f);
@@ -169,8 +173,7 @@
 /*
  * Write a NULL-terminated string to a file
  */
-void
-fputstring(char *s, FILE * f)
+static void fputstring(char *s, FILE *f)
 {
 	while (*s)
 		fputc(*s++, f);
@@ -180,8 +183,7 @@
 /*
  * Return a section's ID
  */
-uint32_t
-getsectid(struct Section * pSect)
+static uint32_t getsectid(struct Section *pSect)
 {
 	struct Section *sec;
 	uint32_t ID = 0;
@@ -190,20 +192,19 @@
 
 	while (sec) {
 		if (sec == pSect)
-			return (ID);
+			return ID;
 		ID += 1;
 		sec = sec->pNext;
 	}
 
 	fatalerror("INTERNAL: Unknown section");
-	return ((uint32_t) - 1);
+	return (uint32_t)(-1);
 }
 
 /*
  * Write a patch to a file
  */
-void
-writepatch(struct Patch * pPatch, FILE * f)
+static void writepatch(struct Patch *pPatch, FILE *f)
 {
 	fputstring(pPatch->tzFilename, f);
 	fputlong(pPatch->nLine, f);
@@ -216,8 +217,7 @@
 /*
  * Write a section to a file
  */
-void
-writesection(struct Section * pSect, FILE * f)
+static void writesection(struct Section *pSect, FILE *f)
 {
 	fputstring(pSect->pzName, f);
 
@@ -229,8 +229,7 @@
 	fputlong(pSect->nBank, f);
 	fputlong(pSect->nAlign, f);
 
-	if ((pSect->nType == SECT_ROM0)
-	    || (pSect->nType == SECT_ROMX)) {
+	if ((pSect->nType == SECT_ROM0) || (pSect->nType == SECT_ROMX)) {
 		struct Patch *pPatch;
 
 		fwrite(pSect->tData, 1, pSect->nPC, f);
@@ -247,8 +246,7 @@
 /*
  * Write a symbol to a file
  */
-void
-writesymbol(struct sSymbol * pSym, FILE * f)
+static void writesymbol(struct sSymbol *pSym, FILE *f)
 {
 	char symname[MAXSYMLEN * 2 + 1];
 	uint32_t type;
@@ -295,11 +293,11 @@
 /*
  * Add a symbol to the object
  */
-uint32_t
-addsymbol(struct sSymbol * pSym)
+static uint32_t nextID;
+
+static uint32_t addsymbol(struct sSymbol *pSym)
 {
 	struct PatchSymbol *pPSym, **ppPSym;
-	static uint32_t nextID = 0;
 	uint32_t hash;
 
 	hash = calchash(pSym->tzName);
@@ -311,14 +309,17 @@
 		ppPSym = &((*ppPSym)->pBucketNext);
 	}
 
-	if ((*ppPSym = pPSym = malloc(sizeof(struct PatchSymbol))) != NULL) {
-		pPSym->pNext = NULL;
-		pPSym->pBucketNext = NULL;
-		pPSym->pSymbol = pSym;
-		pPSym->ID = nextID++;
-	} else
+	pPSym = malloc(sizeof(struct PatchSymbol));
+	*ppPSym = pPSym;
+
+	if (pPSym == NULL)
 		fatalerror("No memory for patchsymbol");
 
+	pPSym->pNext = NULL;
+	pPSym->pBucketNext = NULL;
+	pPSym->pSymbol = pSym;
+	pPSym->ID = nextID++;
+
 	*ppPatchSymbolsTail = pPSym;
 	ppPatchSymbolsTail = &(pPSym->pNext);
 
@@ -328,8 +329,7 @@
 /*
  * Add all exported symbols to the object
  */
-void
-addexports(void)
+static void addexports(void)
 {
 	int32_t i;
 
@@ -348,28 +348,27 @@
 /*
  * Allocate a new patchstructure and link it into the list
  */
-struct Patch *
-allocpatch(void)
+struct Patch *allocpatch(void)
 {
 	struct Patch *pPatch;
 
-	if ((pPatch = malloc(sizeof(struct Patch))) != NULL) {
-		pPatch->pNext = pCurrentSection->pPatches;
-		pPatch->nRPNSize = 0;
-		pPatch->pRPN = NULL;
-	} else
+	pPatch = malloc(sizeof(struct Patch));
+
+	if (pPatch == NULL)
 		fatalerror("No memory for patch");
 
+	pPatch->pNext = pCurrentSection->pPatches;
+	pPatch->nRPNSize = 0;
+	pPatch->pRPN = NULL;
 	pCurrentSection->pPatches = pPatch;
 
-	return (pPatch);
+	return pPatch;
 }
 
 /*
  * Create a new patch (includes the rpn expr)
  */
-void
-createpatch(uint32_t type, struct Expression * expr)
+void createpatch(uint32_t type, struct Expression *expr)
 {
 	struct Patch *pPatch;
 	uint16_t rpndata;
@@ -394,7 +393,9 @@
 			break;
 		case RPN_SYM:
 			symptr = 0;
-			while ((tzSym[symptr++] = rpn_PopByte(expr)) != 0);
+			while ((tzSym[symptr++] = rpn_PopByte(expr)) != 0)
+				;
+
 			if (sym_isConstant(tzSym)) {
 				uint32_t value;
 
@@ -405,9 +406,11 @@
 				rpnexpr[rpnptr++] = value >> 16;
 				rpnexpr[rpnptr++] = value >> 24;
 			} else {
-				struct sSymbol *sym;
-				if ((sym = sym_FindSymbol(tzSym)) == NULL)
+				struct sSymbol *sym = sym_FindSymbol(tzSym);
+
+				if (sym == NULL)
 					break;
+
 				symptr = addsymbol(sym);
 				rpnexpr[rpnptr++] = RPN_SYM;
 				rpnexpr[rpnptr++] = symptr & 0xFF;
@@ -416,12 +419,18 @@
 				rpnexpr[rpnptr++] = symptr >> 24;
 			}
 			break;
-		case RPN_BANK: {
+		case RPN_BANK:
+		{
 			struct sSymbol *sym;
+
 			symptr = 0;
-			while ((tzSym[symptr++] = rpn_PopByte(expr)) != 0);
-			if ((sym = sym_FindSymbol(tzSym)) == NULL)
+			while ((tzSym[symptr++] = rpn_PopByte(expr)) != 0)
+				;
+
+			sym = sym_FindSymbol(tzSym);
+			if (sym == NULL)
 				break;
+
 			symptr = addsymbol(sym);
 			rpnexpr[rpnptr++] = RPN_BANK;
 			rpnexpr[rpnptr++] = symptr & 0xFF;
@@ -428,14 +437,16 @@
 			rpnexpr[rpnptr++] = symptr >> 8;
 			rpnexpr[rpnptr++] = symptr >> 16;
 			rpnexpr[rpnptr++] = symptr >> 24;
-			}
 			break;
+		}
 		default:
 			rpnexpr[rpnptr++] = rpndata;
 			break;
 		}
 	}
-	if ((pPatch->pRPN = malloc(rpnptr)) != NULL) {
+
+	pPatch->pRPN = malloc(rpnptr);
+	if (pPatch->pRPN != NULL) {
 		memcpy(pPatch->pRPN, rpnexpr, rpnptr);
 		pPatch->nRPNSize = rpnptr;
 	}
@@ -444,12 +455,9 @@
 /*
  * A quick check to see if we have an initialized section
  */
-void
-checksection(void)
+static void checksection(void)
 {
-	if (pCurrentSection)
-		return;
-	else
+	if (pCurrentSection == NULL)
 		fatalerror("Code generation before SECTION directive");
 }
 
@@ -457,14 +465,13 @@
  * A quick check to see if we have an initialized section that can contain
  * this much initialized data
  */
-void
-checkcodesection(void)
+static void checkcodesection(void)
 {
 	checksection();
 	if (pCurrentSection->nType != SECT_ROM0 &&
 	    pCurrentSection->nType != SECT_ROMX) {
 		fatalerror("Section '%s' cannot contain code or data (not ROM0 or ROMX)",
-		     pCurrentSection->pzName);
+			   pCurrentSection->pzName);
 	} else if (nUnionDepth > 0) {
 		fatalerror("UNIONs cannot contain code or data");
 	}
@@ -473,8 +480,7 @@
 /*
  * Check if the section has grown too much.
  */
-void
-checksectionoverflow(uint32_t delta_size)
+static void checksectionoverflow(uint32_t delta_size)
 {
 	uint32_t maxsize = getmaxsectionsize(pCurrentSection->nType,
 					  pCurrentSection->pzName);
@@ -488,7 +494,7 @@
 		 * The real check must be done at the linking stage.
 		 */
 		fatalerror("Section '%s' is too big (max size = 0x%X bytes).",
-			pCurrentSection->pzName, maxsize);
+			   pCurrentSection->pzName, maxsize);
 	}
 }
 
@@ -495,14 +501,14 @@
 /*
  * Write an objectfile
  */
-void
-out_WriteObject(void)
+void out_WriteObject(void)
 {
 	FILE *f;
 
 	addexports();
 
-	if ((f = fopen(tzObjectname, "wb")) != NULL) {
+	f = fopen(tzObjectname, "wb");
+	if (f != NULL) {
 		struct PatchSymbol *pSym;
 		struct Section *pSect;
 
@@ -531,8 +537,7 @@
 /*
  * Prepare for pass #2
  */
-void
-out_PrepPass2(void)
+void out_PrepPass2(void)
 {
 	struct Section *pSect;
 
@@ -548,13 +553,12 @@
 /*
  * Set the objectfilename
  */
-void
-out_SetFileName(char *s)
+void out_SetFileName(char *s)
 {
 	tzObjectname = s;
-	if (CurrentOptions.verbose) {
+	if (CurrentOptions.verbose)
 		printf("Output filename %s\n", s);
-	}
+
 	pSectionList = NULL;
 	pCurrentSection = NULL;
 	pPatchSymbols = NULL;
@@ -563,8 +567,8 @@
 /*
  * Find a section by name and type.  If it doesn't exist, create it
  */
-struct Section *
-out_FindSection(char *pzName, uint32_t secttype, int32_t org, int32_t bank, int32_t alignment)
+struct Section *out_FindSection(char *pzName, uint32_t secttype, int32_t org,
+				int32_t bank, int32_t alignment)
 {
 	struct Section *pSect, **ppSect;
 
@@ -574,58 +578,61 @@
 	while (pSect) {
 		if (strcmp(pzName, pSect->pzName) == 0) {
 			if (secttype == pSect->nType
-			    && ((uint32_t) org) == pSect->nOrg
-			    && ((uint32_t) bank) == pSect->nBank
-			    && ((uint32_t) alignment == pSect->nAlign)) {
-				return (pSect);
-			} else
-				fatalerror
-				    ("Section already exists but with a different type");
+			    && ((uint32_t)org) == pSect->nOrg
+			    && ((uint32_t)bank) == pSect->nBank
+			    && ((uint32_t)alignment == pSect->nAlign)) {
+				return pSect;
+			}
+
+			fatalerror("Section already exists but with a different type");
 		}
 		ppSect = &(pSect->pNext);
 		pSect = pSect->pNext;
 	}
 
-	if ((*ppSect = (pSect = malloc(sizeof(struct Section)))) != NULL) {
-		if ((pSect->pzName = malloc(strlen(pzName) + 1)) != NULL) {
-			strcpy(pSect->pzName, pzName);
-			pSect->nType = secttype;
-			pSect->nPC = 0;
-			pSect->nOrg = org;
-			pSect->nBank = bank;
-			pSect->nAlign = alignment;
-			pSect->pNext = NULL;
-			pSect->pPatches = NULL;
-			pSect->charmap = NULL;
-			pPatchSymbols = NULL;
-
-			pSect->tData = NULL;
-			if (secttype == SECT_ROM0 || secttype == SECT_ROMX) {
-				/* It is only needed to allocate memory for ROM
-				 * sections. */
-				uint32_t sectsize = getmaxsectionsize(secttype, pzName);
-				if ((pSect->tData = malloc(sectsize)) == NULL)
-					fatalerror("Not enough memory for section");
-			}
-			return (pSect);
-		} else
-			fatalerror("Not enough memory for sectionname");
-	} else
+	pSect = malloc(sizeof(struct Section));
+	*ppSect = pSect;
+	if (pSect == NULL)
 		fatalerror("Not enough memory for section");
 
-	return (NULL);
+	pSect->pzName = malloc(strlen(pzName) + 1);
+	if (pSect->pzName == NULL)
+		fatalerror("Not enough memory for sectionname");
+
+	strcpy(pSect->pzName, pzName);
+	pSect->nType = secttype;
+	pSect->nPC = 0;
+	pSect->nOrg = org;
+	pSect->nBank = bank;
+	pSect->nAlign = alignment;
+	pSect->pNext = NULL;
+	pSect->pPatches = NULL;
+	pSect->charmap = NULL;
+	pPatchSymbols = NULL;
+
+	/* It is only needed to allocate memory for ROM sections. */
+	if (secttype == SECT_ROM0 || secttype == SECT_ROMX) {
+		uint32_t sectsize;
+
+		sectsize = getmaxsectionsize(secttype, pzName);
+		pSect->tData = malloc(sectsize);
+		if (pSect->tData == NULL)
+			fatalerror("Not enough memory for section");
+	} else {
+		pSect->tData = NULL;
+	}
+
+	return (pSect);
 }
 
 /*
  * Set the current section
  */
-void
-out_SetCurrentSection(struct Section * pSect)
+void out_SetCurrentSection(struct Section *pSect)
 {
-	if (nUnionDepth > 0) {
+	if (nUnionDepth > 0)
 		fatalerror("Cannot change the section within a UNION");
-	}
-	
+
 	pCurrentSection = pSect;
 	nPC = pSect->nPC;
 
@@ -636,8 +643,7 @@
 /*
  * Set the current section by name and type
  */
-void
-out_NewSection(char *pzName, uint32_t secttype)
+void out_NewSection(char *pzName, uint32_t secttype)
 {
 	out_SetCurrentSection(out_FindSection(pzName, secttype, -1, -1, 1));
 }
@@ -645,8 +651,8 @@
 /*
  * Set the current section by name and type
  */
-void
-out_NewAbsSection(char *pzName, uint32_t secttype, int32_t org, int32_t bank)
+void out_NewAbsSection(char *pzName, uint32_t secttype, int32_t org,
+		       int32_t bank)
 {
 	out_SetCurrentSection(out_FindSection(pzName, secttype, org, bank, 1));
 }
@@ -654,20 +660,20 @@
 /*
  * Set the current section by name and type, using a given byte alignment
  */
-void
-out_NewAlignedSection(char *pzName, uint32_t secttype, int32_t alignment, int32_t bank)
+void out_NewAlignedSection(char *pzName, uint32_t secttype, int32_t alignment,
+			   int32_t bank)
 {
-	if (alignment < 0 || alignment > 16) {
+	if (alignment < 0 || alignment > 16)
 		yyerror("Alignment must be between 0-16 bits.");
-	}
-	out_SetCurrentSection(out_FindSection(pzName, secttype, -1, bank, 1 << alignment));
+
+	out_SetCurrentSection(out_FindSection(pzName, secttype, -1, bank,
+					      1 << alignment));
 }
 
 /*
  * Output an absolute byte (bypassing ROM/union checks)
  */
-void
-out_AbsByteBypassCheck(int32_t b)
+void out_AbsByteBypassCheck(int32_t b)
 {
 	checksectionoverflow(1);
 	b &= 0xFF;
@@ -682,15 +688,13 @@
 /*
  * Output an absolute byte
  */
-void
-out_AbsByte(int32_t b)
+void out_AbsByte(int32_t b)
 {
 	checkcodesection();
 	out_AbsByteBypassCheck(b);
 }
 
-void
-out_AbsByteGroup(char *s, int32_t length)
+void out_AbsByteGroup(char *s, int32_t length)
 {
 	checkcodesection();
 	checksectionoverflow(length);
@@ -701,8 +705,7 @@
 /*
  * Skip this many bytes
  */
-void
-out_Skip(int32_t skip)
+void out_Skip(int32_t skip)
 {
 	checksection();
 	checksectionoverflow(skip);
@@ -724,8 +727,7 @@
 /*
  * Output a NULL terminated string (excluding the NULL-character)
  */
-void
-out_String(char *s)
+void out_String(char *s)
 {
 	checkcodesection();
 	checksectionoverflow(strlen(s));
@@ -737,9 +739,7 @@
  * Output a relocatable byte.  Checking will be done to see if it
  * is an absolute value in disguise.
  */
-
-void
-out_RelByte(struct Expression * expr)
+void out_RelByte(struct Expression *expr)
 {
 	checkcodesection();
 	checksectionoverflow(1);
@@ -751,9 +751,9 @@
 		pCurrentSection->nPC += 1;
 		nPC += 1;
 		pPCSymbol->nValue += 1;
-	} else
+	} else {
 		out_AbsByte(expr->nVal);
-
+	}
 	rpn_Reset(expr);
 }
 
@@ -760,8 +760,7 @@
 /*
  * Output an absolute word
  */
-void
-out_AbsWord(int32_t b)
+void out_AbsWord(int32_t b)
 {
 	checkcodesection();
 	checksectionoverflow(2);
@@ -779,8 +778,7 @@
  * Output a relocatable word.  Checking will be done to see if
  * it's an absolute value in disguise.
  */
-void
-out_RelWord(struct Expression * expr)
+void out_RelWord(struct Expression *expr)
 {
 	uint32_t b;
 
@@ -796,8 +794,9 @@
 		pCurrentSection->nPC += 2;
 		nPC += 2;
 		pPCSymbol->nValue += 2;
-	} else
+	} else {
 		out_AbsWord(expr->nVal);
+	}
 	rpn_Reset(expr);
 }
 
@@ -804,8 +803,7 @@
 /*
  * Output an absolute longword
  */
-void
-out_AbsLong(int32_t b)
+void out_AbsLong(int32_t b)
 {
 	checkcodesection();
 	checksectionoverflow(sizeof(int32_t));
@@ -824,8 +822,7 @@
  * Output a relocatable longword.  Checking will be done to see if
  * is an absolute value in disguise.
  */
-void
-out_RelLong(struct Expression * expr)
+void out_RelLong(struct Expression *expr)
 {
 	int32_t b;
 
@@ -843,8 +840,9 @@
 		pCurrentSection->nPC += 4;
 		nPC += 4;
 		pPCSymbol->nValue += 4;
-	} else
+	} else {
 		out_AbsLong(expr->nVal);
+	}
 	rpn_Reset(expr);
 }
 
@@ -851,8 +849,7 @@
 /*
  * Output a PC-relative byte
  */
-void
-out_PCRelByte(struct Expression * expr)
+void out_PCRelByte(struct Expression *expr)
 {
 	int32_t b = expr->nVal;
 
@@ -869,15 +866,13 @@
 /*
  * Output a binary file
  */
-void
-out_BinaryFile(char *s)
+void out_BinaryFile(char *s)
 {
 	FILE *f;
 
 	f = fstk_FindFile(s);
-	if (f == NULL) {
+	if (f == NULL)
 		err(1, "Unable to open incbin file '%s'", s);
-	}
 
 	int32_t fsize;
 
@@ -901,8 +896,7 @@
 	fclose(f);
 }
 
-void
-out_BinaryFileSlice(char *s, int32_t start_pos, int32_t length)
+void out_BinaryFileSlice(char *s, int32_t start_pos, int32_t length)
 {
 	FILE *f;
 
@@ -913,9 +907,8 @@
 		fatalerror("Number of bytes to read must be greater than zero");
 
 	f = fstk_FindFile(s);
-	if (f == NULL) {
+	if (f == NULL)
 		err(1, "Unable to open included file '%s'", s);
-	}
 
 	int32_t fsize;
 
--- a/src/asm/rpn.c
+++ b/src/asm/rpn.c
@@ -12,9 +12,8 @@
 #include "asm/rpn.h"
 #include "asm/symbol.h"
 
-void
-mergetwoexpressions(struct Expression * expr, struct Expression * src1,
-    struct Expression * src2)
+void mergetwoexpressions(struct Expression *expr, const struct Expression *src1,
+			 const struct Expression *src2)
 {
 	*expr = *src1;
 	memcpy(&(expr->tRPN[expr->nRPNLength]), src2->tRPN, src2->nRPNLength);
@@ -23,13 +22,13 @@
 	expr->isReloc |= src2->isReloc;
 	expr->isPCRel |= src2->isPCRel;
 }
-#define joinexpr() mergetwoexpressions(expr,src1,src2)
 
+#define joinexpr() mergetwoexpressions(expr, src1, src2)
+
 /*
  * Add a byte to the RPN expression
  */
-void
-pushbyte(struct Expression * expr, int b)
+void pushbyte(struct Expression *expr, int b)
 {
 	expr->tRPN[expr->nRPNLength++] = b & 0xFF;
 }
@@ -37,47 +36,45 @@
 /*
  * Reset the RPN module
  */
-void
-rpn_Reset(struct Expression * expr)
+void rpn_Reset(struct Expression *expr)
 {
-	expr->nRPNLength = expr->nRPNOut = expr->isReloc = expr->isPCRel = 0;
+	expr->nRPNLength = 0;
+	expr->nRPNOut = 0;
+	expr->isReloc = 0;
+	expr->isPCRel = 0;
 }
 
 /*
  * Returns the next rpn byte in expression
  */
-uint16_t
-rpn_PopByte(struct Expression * expr)
+uint16_t rpn_PopByte(struct Expression *expr)
 {
-	if (expr->nRPNOut == expr->nRPNLength) {
-		return (0xDEAD);
-	} else
-		return (expr->tRPN[expr->nRPNOut++]);
+	if (expr->nRPNOut == expr->nRPNLength)
+		return 0xDEAD;
+
+	return expr->tRPN[expr->nRPNOut++];
 }
 
 /*
  * Determine if the current expression is relocatable
  */
-uint32_t
-rpn_isReloc(struct Expression * expr)
+uint32_t rpn_isReloc(const struct Expression *expr)
 {
-	return (expr->isReloc);
+	return expr->isReloc;
 }
 
 /*
  * Determine if the current expression can be pc-relative
  */
-uint32_t
-rpn_isPCRelative(struct Expression * expr)
+uint32_t rpn_isPCRelative(const struct Expression *expr)
 {
-	return (expr->isPCRel);
+	return expr->isPCRel;
 }
 
 /*
  * Add symbols, constants and operators to expression
  */
-void
-rpn_Number(struct Expression * expr, uint32_t i)
+void rpn_Number(struct Expression *expr, uint32_t i)
 {
 	rpn_Reset(expr);
 	pushbyte(expr, RPN_CONST);
@@ -88,11 +85,10 @@
 	expr->nVal = i;
 }
 
-void
-rpn_Symbol(struct Expression * expr, char *tzSym)
+void rpn_Symbol(struct Expression *expr, char *tzSym)
 {
 	if (!sym_isConstant(tzSym)) {
-		struct sSymbol *psym;
+		const struct sSymbol *psym;
 
 		rpn_Reset(expr);
 
@@ -106,17 +102,20 @@
 		while (*tzSym)
 			pushbyte(expr, *tzSym++);
 		pushbyte(expr, 0);
-	} else
+	} else {
 		rpn_Number(expr, sym_GetConstantValue(tzSym));
+	}
 }
 
-void
-rpn_Bank(struct Expression * expr, char *tzSym)
+void rpn_Bank(struct Expression *expr, char *tzSym)
 {
 	if (!sym_isConstant(tzSym)) {
 		rpn_Reset(expr);
 
-		/* Check that the symbol exists by evaluating and discarding the value. */
+		/*
+		 * Check that the symbol exists by evaluating and discarding the
+		 * value.
+		 */
 		sym_GetValue(tzSym);
 
 		expr->isReloc = 1;
@@ -124,27 +123,25 @@
 		while (*tzSym)
 			pushbyte(expr, *tzSym++);
 		pushbyte(expr, 0);
-	} else
+	} else {
 		yyerror("BANK argument must be a relocatable identifier");
+	}
 }
 
-void
-rpn_CheckHRAM(struct Expression * expr, struct Expression * src)
+void rpn_CheckHRAM(struct Expression *expr, const struct Expression *src)
 {
 	*expr = *src;
 	pushbyte(expr, RPN_HRAM);
 }
 
-void
-rpn_LOGNOT(struct Expression * expr, struct Expression * src)
+void rpn_LOGNOT(struct Expression *expr, const struct Expression *src)
 {
 	*expr = *src;
 	pushbyte(expr, RPN_LOGUNNOT);
 }
 
-void
-rpn_LOGOR(struct Expression * expr, struct Expression * src1,
-    struct Expression * src2)
+void rpn_LOGOR(struct Expression *expr, const struct Expression *src1,
+	       const struct Expression *src2)
 {
 	joinexpr();
 	expr->nVal = (expr->nVal || src2->nVal);
@@ -151,9 +148,8 @@
 	pushbyte(expr, RPN_LOGOR);
 }
 
-void
-rpn_LOGAND(struct Expression * expr, struct Expression * src1,
-    struct Expression * src2)
+void rpn_LOGAND(struct Expression *expr, const struct Expression *src1,
+		const struct Expression *src2)
 {
 	joinexpr();
 	expr->nVal = (expr->nVal && src2->nVal);
@@ -160,8 +156,7 @@
 	pushbyte(expr, RPN_LOGAND);
 }
 
-void
-rpn_HIGH(struct Expression * expr, struct Expression * src)
+void rpn_HIGH(struct Expression *expr, const struct Expression *src)
 {
 	*expr = *src;
 
@@ -184,8 +179,7 @@
 	pushbyte(expr, RPN_AND);
 }
 
-void
-rpn_LOW(struct Expression * expr, struct Expression * src)
+void rpn_LOW(struct Expression *expr, const struct Expression *src)
 {
 	*expr = *src;
 
@@ -200,9 +194,8 @@
 	pushbyte(expr, RPN_AND);
 }
 
-void
-rpn_LOGEQU(struct Expression * expr, struct Expression * src1,
-    struct Expression * src2)
+void rpn_LOGEQU(struct Expression *expr, const struct Expression *src1,
+		const struct Expression *src2)
 {
 	joinexpr();
 	expr->nVal = (expr->nVal == src2->nVal);
@@ -209,9 +202,8 @@
 	pushbyte(expr, RPN_LOGEQ);
 }
 
-void
-rpn_LOGGT(struct Expression * expr, struct Expression * src1,
-    struct Expression * src2)
+void rpn_LOGGT(struct Expression *expr, const struct Expression *src1,
+	       const struct Expression *src2)
 {
 	joinexpr();
 	expr->nVal = (expr->nVal > src2->nVal);
@@ -218,9 +210,8 @@
 	pushbyte(expr, RPN_LOGGT);
 }
 
-void
-rpn_LOGLT(struct Expression * expr, struct Expression * src1,
-    struct Expression * src2)
+void rpn_LOGLT(struct Expression *expr, const struct Expression *src1,
+	       const struct Expression *src2)
 {
 	joinexpr();
 	expr->nVal = (expr->nVal < src2->nVal);
@@ -227,9 +218,8 @@
 	pushbyte(expr, RPN_LOGLT);
 }
 
-void
-rpn_LOGGE(struct Expression * expr, struct Expression * src1,
-    struct Expression * src2)
+void rpn_LOGGE(struct Expression *expr, const struct Expression *src1,
+	       const struct Expression *src2)
 {
 	joinexpr();
 	expr->nVal = (expr->nVal >= src2->nVal);
@@ -236,9 +226,8 @@
 	pushbyte(expr, RPN_LOGGE);
 }
 
-void
-rpn_LOGLE(struct Expression * expr, struct Expression * src1,
-    struct Expression * src2)
+void rpn_LOGLE(struct Expression *expr, const struct Expression *src1,
+	       const struct Expression *src2)
 {
 	joinexpr();
 	expr->nVal = (expr->nVal <= src2->nVal);
@@ -245,9 +234,8 @@
 	pushbyte(expr, RPN_LOGLE);
 }
 
-void
-rpn_LOGNE(struct Expression * expr, struct Expression * src1,
-    struct Expression * src2)
+void rpn_LOGNE(struct Expression *expr, const struct Expression *src1,
+	       const struct Expression *src2)
 {
 	joinexpr();
 	expr->nVal = (expr->nVal != src2->nVal);
@@ -254,9 +242,8 @@
 	pushbyte(expr, RPN_LOGNE);
 }
 
-void
-rpn_ADD(struct Expression * expr, struct Expression * src1,
-    struct Expression * src2)
+void rpn_ADD(struct Expression *expr, const struct Expression *src1,
+	     const struct Expression *src2)
 {
 	joinexpr();
 	expr->nVal = (expr->nVal + src2->nVal);
@@ -263,9 +250,8 @@
 	pushbyte(expr, RPN_ADD);
 }
 
-void
-rpn_SUB(struct Expression * expr, struct Expression * src1,
-    struct Expression * src2)
+void rpn_SUB(struct Expression *expr, const struct Expression *src1,
+	     const struct Expression *src2)
 {
 	joinexpr();
 	expr->nVal = (expr->nVal - src2->nVal);
@@ -272,9 +258,8 @@
 	pushbyte(expr, RPN_SUB);
 }
 
-void
-rpn_XOR(struct Expression * expr, struct Expression * src1,
-    struct Expression * src2)
+void rpn_XOR(struct Expression *expr, const struct Expression *src1,
+	     const struct Expression *src2)
 {
 	joinexpr();
 	expr->nVal = (expr->nVal ^ src2->nVal);
@@ -281,9 +266,8 @@
 	pushbyte(expr, RPN_XOR);
 }
 
-void
-rpn_OR(struct Expression * expr, struct Expression * src1,
-    struct Expression * src2)
+void rpn_OR(struct Expression *expr, const struct Expression *src1,
+	    const struct Expression *src2)
 {
 	joinexpr();
 	expr->nVal = (expr->nVal | src2->nVal);
@@ -290,9 +274,8 @@
 	pushbyte(expr, RPN_OR);
 }
 
-void
-rpn_AND(struct Expression * expr, struct Expression * src1,
-    struct Expression * src2)
+void rpn_AND(struct Expression *expr, const struct Expression *src1,
+	     const struct Expression *src2)
 {
 	joinexpr();
 	expr->nVal = (expr->nVal & src2->nVal);
@@ -299,9 +282,8 @@
 	pushbyte(expr, RPN_AND);
 }
 
-void
-rpn_SHL(struct Expression * expr, struct Expression * src1,
-    struct Expression * src2)
+void rpn_SHL(struct Expression *expr, const struct Expression *src1,
+	     const struct Expression *src2)
 {
 	joinexpr();
 	expr->nVal = (expr->nVal << src2->nVal);
@@ -308,9 +290,8 @@
 	pushbyte(expr, RPN_SHL);
 }
 
-void
-rpn_SHR(struct Expression * expr, struct Expression * src1,
-    struct Expression * src2)
+void rpn_SHR(struct Expression *expr, const struct Expression *src1,
+	     const struct Expression *src2)
 {
 	joinexpr();
 	expr->nVal = (expr->nVal >> src2->nVal);
@@ -317,9 +298,8 @@
 	pushbyte(expr, RPN_SHR);
 }
 
-void
-rpn_MUL(struct Expression * expr, struct Expression * src1,
-    struct Expression * src2)
+void rpn_MUL(struct Expression *expr, const struct Expression *src1,
+	     const struct Expression *src2)
 {
 	joinexpr();
 	expr->nVal = (expr->nVal * src2->nVal);
@@ -326,32 +306,29 @@
 	pushbyte(expr, RPN_MUL);
 }
 
-void
-rpn_DIV(struct Expression * expr, struct Expression * src1,
-    struct Expression * src2)
+void rpn_DIV(struct Expression *expr, const struct Expression *src1,
+	     const struct Expression *src2)
 {
 	joinexpr();
-	if (src2->nVal == 0) {
+	if (src2->nVal == 0)
 		fatalerror("division by zero");
-	}
+
 	expr->nVal = (expr->nVal / src2->nVal);
 	pushbyte(expr, RPN_DIV);
 }
 
-void
-rpn_MOD(struct Expression * expr, struct Expression * src1,
-    struct Expression * src2)
+void rpn_MOD(struct Expression *expr, const struct Expression *src1,
+	     const struct Expression *src2)
 {
 	joinexpr();
-	if (src2->nVal == 0) {
+	if (src2->nVal == 0)
 		fatalerror("division by zero");
-	}
+
 	expr->nVal = (expr->nVal % src2->nVal);
 	pushbyte(expr, RPN_MOD);
 }
 
-void
-rpn_UNNEG(struct Expression * expr, struct Expression * src)
+void rpn_UNNEG(struct Expression *expr, const struct Expression *src)
 {
 	*expr = *src;
 	expr->nVal = -expr->nVal;
@@ -358,8 +335,7 @@
 	pushbyte(expr, RPN_UNSUB);
 }
 
-void
-rpn_UNNOT(struct Expression * expr, struct Expression * src)
+void rpn_UNNOT(struct Expression *expr, const struct Expression *src)
 {
 	*expr = *src;
 	expr->nVal = ~expr->nVal;
--- a/src/asm/symbol.c
+++ b/src/asm/symbol.c
@@ -14,45 +14,46 @@
 #include "asm/main.h"
 #include "asm/mymath.h"
 #include "asm/output.h"
+
 #include "extern/err.h"
 #include "extern/version.h"
 
 struct sSymbol *tHashedSymbols[HASHSIZE];
-struct sSymbol *pScope = NULL;
-struct sSymbol *pPCSymbol = NULL;
-struct sSymbol *p_NARGSymbol = NULL;
-struct sSymbol *p__LINE__Symbol = NULL;
-char *currentmacroargs[MAXMACROARGS + 1];
-char *newmacroargs[MAXMACROARGS + 1];
-char SavedTIME[256];
-char SavedDATE[256];
-char SavedTIMESTAMP_ISO8601_LOCAL[256];
-char SavedTIMESTAMP_ISO8601_UTC[256];
-char SavedDAY[3];
-char SavedMONTH[3];
-char SavedYEAR[5];
-char SavedHOUR[3];
-char SavedMINUTE[3];
-char SavedSECOND[3];
-bool exportall;
+static struct sSymbol *pScope;
+struct sSymbol *pPCSymbol;
+static struct sSymbol *p_NARGSymbol;
+static struct sSymbol *p__LINE__Symbol;
+static char *currentmacroargs[MAXMACROARGS + 1];
+static char *newmacroargs[MAXMACROARGS + 1];
+static char SavedTIME[256];
+static char SavedDATE[256];
+static char SavedTIMESTAMP_ISO8601_LOCAL[256];
+static char SavedTIMESTAMP_ISO8601_UTC[256];
+static char SavedDAY[3];
+static char SavedMONTH[3];
+static char SavedYEAR[5];
+static char SavedHOUR[3];
+static char SavedMINUTE[3];
+static char SavedSECOND[3];
+static bool exportall;
 
-void helper_RemoveLeadingZeros(char * string){
-	char * new_beginning = string;
+void helper_RemoveLeadingZeros(char *string)
+{
+	char *new_beginning = string;
 
-	while(*new_beginning == '0')
+	while (*new_beginning == '0')
 		new_beginning++;
 
-	if(new_beginning == string)
+	if (new_beginning == string)
 		return;
 
-	if(*new_beginning == '\0')
+	if (*new_beginning == '\0')
 		new_beginning--;
 
 	memmove(string, new_beginning, strlen(new_beginning) + 1);
 }
 
-int32_t
-Callback_NARG(struct sSymbol * sym)
+int32_t Callback_NARG(struct sSymbol *sym)
 {
 	uint32_t i = 0;
 
@@ -59,32 +60,29 @@
 	while (currentmacroargs[i] && i < MAXMACROARGS)
 		i += 1;
 
-	return (i);
+	return i;
 }
 
-int32_t
-Callback__LINE__(struct sSymbol __attribute__((unused)) * sym)
+int32_t Callback__LINE__(struct sSymbol __attribute__((unused)) *sym)
 {
-	return (nLineNo);
+	return nLineNo;
 }
 
 /*
  * Get the nValue field of a symbol
  */
-int32_t
-getvaluefield(struct sSymbol * sym)
+static int32_t getvaluefield(struct sSymbol *sym)
 {
-	if (sym->Callback) {
-		return (sym->Callback(sym));
-	} else
-		return (sym->nValue);
+	if (sym->Callback)
+		return sym->Callback(sym);
+
+	return sym->nValue;
 }
 
 /*
  * Calculate the hash value for a string
  */
-uint32_t
-calchash(char *s)
+uint32_t calchash(char *s)
 {
 	uint32_t hash = 5381;
 
@@ -91,14 +89,13 @@
 	while (*s != 0)
 		hash = (hash * 33) ^ (*s++);
 
-	return (hash % HASHSIZE);
+	return hash % HASHSIZE;
 }
 
 /*
  * Create a new symbol by name
  */
-struct sSymbol *
-createsymbol(char *s)
+struct sSymbol *createsymbol(char *s)
 {
 	struct sSymbol **ppsym;
 	uint32_t hash;
@@ -109,22 +106,24 @@
 	while ((*ppsym) != NULL)
 		ppsym = &((*ppsym)->pNext);
 
-	if (((*ppsym) = malloc(sizeof(struct sSymbol))) != NULL) {
-		strcpy((*ppsym)->tzName, s);
-		(*ppsym)->nValue = 0;
-		(*ppsym)->nType = 0;
-		(*ppsym)->pScope = NULL;
-		(*ppsym)->pNext = NULL;
-		(*ppsym)->pMacro = NULL;
-		(*ppsym)->pSection = NULL;
-		(*ppsym)->Callback = NULL;
-		strcpy((*ppsym)->tzFileName, tzCurrentFileName);
-		(*ppsym)->nFileLine = fstk_GetLine();
-		return (*ppsym);
-	} else {
+	(*ppsym) = malloc(sizeof(struct sSymbol));
+
+	if ((*ppsym) == NULL) {
 		fatalerror("No memory for symbol");
-		return (NULL);
+		return NULL;
 	}
+
+	strcpy((*ppsym)->tzName, s);
+	(*ppsym)->nValue = 0;
+	(*ppsym)->nType = 0;
+	(*ppsym)->pScope = NULL;
+	(*ppsym)->pNext = NULL;
+	(*ppsym)->pMacro = NULL;
+	(*ppsym)->pSection = NULL;
+	(*ppsym)->Callback = NULL;
+	strcpy((*ppsym)->tzFileName, tzCurrentFileName);
+	(*ppsym)->nFileLine = fstk_GetLine();
+	return *ppsym;
 }
 
 /*
@@ -131,10 +130,11 @@
  * Creates the full name of a local symbol in a given scope, by prepending
  * the name with the parent symbol's name.
  */
-size_t
-fullSymbolName(char *output, size_t outputSize, char *localName, struct sSymbol *scope)
+static size_t fullSymbolName(char *output, size_t outputSize, char *localName,
+			     const struct sSymbol *scope)
 {
-	struct sSymbol *parent = scope->pScope ? scope->pScope : scope;
+	const struct sSymbol *parent = scope->pScope ? scope->pScope : scope;
+
 	return snprintf(output, outputSize, "%s%s", parent->tzName, localName);
 }
 
@@ -141,23 +141,23 @@
 /*
  * Find the pointer to a symbol by name and scope
  */
-struct sSymbol **
-findpsymbol(char *s, struct sSymbol * scope)
+struct sSymbol **findpsymbol(char *s, struct sSymbol *scope)
 {
 	struct sSymbol **ppsym;
 	int32_t hash;
 	char fullname[MAXSYMLEN + 1];
-		
+
 	if (s[0] == '.' && scope) {
 		fullSymbolName(fullname, sizeof(fullname), s, scope);
 		s = fullname;
 	}
-	
-	char *seperator;
-	if ((seperator = strchr(s, '.'))) {
-		if (strchr(seperator + 1, '.')) {
-			fatalerror("'%s' is a nonsensical reference to a nested local symbol", s);
-		}
+
+	char *separator = strchr(s, '.');
+
+	if (separator) {
+		if (strchr(separator + 1, '.'))
+			fatalerror("'%s' is a nonsensical reference to a nested local symbol",
+				   s);
 	}
 
 	hash = calchash(s);
@@ -164,21 +164,21 @@
 	ppsym = &(tHashedSymbols[hash]);
 
 	while ((*ppsym) != NULL) {
-		if ((strcmp(s, (*ppsym)->tzName) == 0)) {
-			return (ppsym);
-		} else
-			ppsym = &((*ppsym)->pNext);
+		if ((strcmp(s, (*ppsym)->tzName) == 0))
+			return ppsym;
+
+		ppsym = &((*ppsym)->pNext);
 	}
-	return (NULL);
+	return NULL;
 }
 
 /*
  * Find a symbol by name and scope
  */
-struct sSymbol *
-findsymbol(char *s, struct sSymbol * scope)
+struct sSymbol *findsymbol(char *s, struct sSymbol *scope)
 {
 	struct sSymbol **ppsym = findpsymbol(s, scope);
+
 	return ppsym ? *ppsym : NULL;
 }
 
@@ -185,8 +185,7 @@
 /*
  * Find a symbol by name and scope
  */
-struct sSymbol *
-sym_FindSymbol(char *tzName)
+struct sSymbol *sym_FindSymbol(char *tzName)
 {
 	struct sSymbol *pscope;
 
@@ -195,14 +194,13 @@
 	else
 		pscope = NULL;
 
-	return (findsymbol(tzName, pscope));
+	return findsymbol(tzName, pscope);
 }
 
 /*
  * Purge a symbol
  */
-void
-sym_Purge(char *tzName)
+void sym_Purge(char *tzName)
 {
 	struct sSymbol **ppSym;
 	struct sSymbol *pscope;
@@ -232,8 +230,7 @@
 /*
  * Determine if a symbol has been defined
  */
-uint32_t
-sym_isConstDefined(char *tzName)
+uint32_t sym_isConstDefined(char *tzName)
 {
 	struct sSymbol *psym, *pscope;
 
@@ -245,19 +242,19 @@
 	psym = findsymbol(tzName, pscope);
 
 	if (psym && (psym->nType & SYMF_DEFINED)) {
-		if (psym->
-		    nType & (SYMF_EQU | SYMF_SET | SYMF_MACRO | SYMF_STRING)) {
-			return (1);
-		} else {
-			fatalerror("'%s' is not allowed as argument to the "
-			    "DEF function", tzName);
-		}
+		uint32_t mask = SYMF_EQU | SYMF_SET | SYMF_MACRO | SYMF_STRING;
+
+		if (psym->nType & mask)
+			return 1;
+
+		fatalerror("'%s' is not allowed as argument to the DEF function",
+			   tzName);
 	}
-	return (0);
+
+	return 0;
 }
 
-uint32_t
-sym_isDefined(char *tzName)
+uint32_t sym_isDefined(char *tzName)
 {
 	struct sSymbol *psym, *pscope;
 
@@ -269,16 +266,15 @@
 	psym = findsymbol(tzName, pscope);
 
 	if (psym && (psym->nType & SYMF_DEFINED))
-		return (1);
+		return 1;
 	else
-		return (0);
+		return 0;
 }
 
 /*
  * Determine if the symbol is a constant
  */
-uint32_t
-sym_isConstant(char *s)
+uint32_t sym_isConstant(char *s)
 {
 	struct sSymbol *psym, *pscope;
 
@@ -287,35 +283,35 @@
 	else
 		pscope = NULL;
 
-	if ((psym = findsymbol(s, pscope)) != NULL) {
+	psym = findsymbol(s, pscope);
+
+	if (psym != NULL) {
 		if (psym->nType & SYMF_CONST)
-			return (1);
+			return 1;
 	}
-	return (0);
+
+	return 0;
 }
 
 /*
  * Get a string equate's value
  */
-char *
-sym_GetStringValue(char *tzSym)
+char *sym_GetStringValue(char *tzSym)
 {
-	struct sSymbol *pSym;
+	const struct sSymbol *pSym = sym_FindSymbol(tzSym);
 
-	if ((pSym = sym_FindSymbol(tzSym)) != NULL)
-		return (pSym->pMacro);
-	else {
-		yyerror("Stringsymbol '%s' not defined", tzSym);
-	}
+	if (pSym != NULL)
+		return pSym->pMacro;
 
-	return (NULL);
+	yyerror("Stringsymbol '%s' not defined", tzSym);
+
+	return NULL;
 }
 
 /*
  * Return a constant symbols value
  */
-uint32_t
-sym_GetConstantValue(char *s)
+uint32_t sym_GetConstantValue(char *s)
 {
 	struct sSymbol *psym, *pscope;
 
@@ -324,24 +320,24 @@
 	else
 		pscope = NULL;
 
-	if ((psym = findsymbol(s, pscope)) != NULL) {
+	psym = findsymbol(s, pscope);
+
+	if (psym != NULL) {
 		if (psym->nType & SYMF_CONST)
-			return (getvaluefield(psym));
-		else {
-			fatalerror("Expression must have a constant value");
-		}
-	} else {
-		yyerror("'%s' not defined", s);
+			return getvaluefield(psym);
+
+		fatalerror("Expression must have a constant value");
 	}
 
-	return (0);
+	yyerror("'%s' not defined", s);
+
+	return 0;
 }
 
 /*
  * Return a symbols value... "estimated" if not defined yet
  */
-uint32_t
-sym_GetValue(char *s)
+uint32_t sym_GetValue(char *s)
 {
 	struct sSymbol *psym, *pscope;
 
@@ -350,37 +346,42 @@
 	else
 		pscope = NULL;
 
-	if ((psym = findsymbol(s, pscope)) != NULL) {
+	psym = findsymbol(s, pscope);
+
+	if (psym != NULL) {
 		if (psym->nType & SYMF_DEFINED) {
-			if (psym->nType & (SYMF_MACRO | SYMF_STRING)) {
+			if (psym->nType & (SYMF_MACRO | SYMF_STRING))
 				yyerror("'%s' is a macro or string symbol", s);
-			}
-			return (getvaluefield(psym));
-		} else {
-			if (nPass == 2) {
-				/* Assume undefined symbols are imported from somewhere else */
-				psym->nType |= SYMF_IMPORT;
-			}
-			/* 0x80 seems like a good default value... */
-			return (0x80);
+
+			return getvaluefield(psym);
 		}
-	} else {
-		if (nPass == 1) {
-			createsymbol(s);
-			return (0x80);
-		} else {
-			yyerror("'%s' not defined", s);
+
+		if (nPass == 2) {
+			/*
+			 * Assume undefined symbols are imported from
+			 * somwehere else
+			 */
+			psym->nType |= SYMF_IMPORT;
 		}
+
+		/* 0x80 seems like a good default value... */
+		return 0x80;
 	}
 
-	return (0);
+	if (nPass == 1) {
+		createsymbol(s);
+		return 0x80;
+	}
+
+	yyerror("'%s' not defined", s);
+
+	return 0;
 }
 
 /*
  * Return a defined symbols value... aborts if not defined yet
  */
-uint32_t
-sym_GetDefinedValue(char *s)
+uint32_t sym_GetDefinedValue(char *s)
 {
 	struct sSymbol *psym, *pscope;
 
@@ -389,51 +390,50 @@
 	else
 		pscope = NULL;
 
-	if ((psym = findsymbol(s, pscope)) != NULL) {
+	psym = findsymbol(s, pscope);
+
+	if (psym != NULL) {
 		if ((psym->nType & SYMF_DEFINED)) {
-			if (psym->nType & (SYMF_MACRO | SYMF_STRING)) {
+			if (psym->nType & (SYMF_MACRO | SYMF_STRING))
 				yyerror("'%s' is a macro or string symbol", s);
-			}
-			return (getvaluefield(psym));
-		} else {
-			yyerror("'%s' not defined", s);
+
+			return getvaluefield(psym);
 		}
-	} else {
-		yyerror("'%s' not defined", s);
 	}
 
-	return (0);
+	yyerror("'%s' not defined", s);
+
+	return 0;
 }
 
 /*
  * Macro argument stuff
  */
-void
-sym_ShiftCurrentMacroArgs(void)
+void sym_ShiftCurrentMacroArgs(void)
 {
 	int32_t i;
 
 	free(currentmacroargs[0]);
-	for (i = 0; i < MAXMACROARGS - 1; i += 1) {
+	for (i = 0; i < MAXMACROARGS - 1; i += 1)
 		currentmacroargs[i] = currentmacroargs[i + 1];
-	}
+
 	currentmacroargs[MAXMACROARGS - 1] = NULL;
 }
 
-char *
-sym_FindMacroArg(int32_t i)
+char *sym_FindMacroArg(int32_t i)
 {
 	if (i == -1)
 		i = MAXMACROARGS + 1;
 
-	assert(i-1 >= 0);
-	assert((size_t)(i-1) < sizeof(currentmacroargs)/sizeof(*currentmacroargs));
+	assert(i - 1 >= 0);
 
-	return (currentmacroargs[i - 1]);
+	assert((size_t)(i - 1)
+	       < sizeof(currentmacroargs) / sizeof(*currentmacroargs));
+
+	return currentmacroargs[i - 1];
 }
 
-void
-sym_UseNewMacroArgs(void)
+void sym_UseNewMacroArgs(void)
 {
 	int32_t i;
 
@@ -443,8 +443,7 @@
 	}
 }
 
-void
-sym_SaveCurrentMacroArgs(char *save[])
+void sym_SaveCurrentMacroArgs(char *save[])
 {
 	int32_t i;
 
@@ -452,8 +451,7 @@
 		save[i] = currentmacroargs[i];
 }
 
-void
-sym_RestoreCurrentMacroArgs(char *save[])
+void sym_RestoreCurrentMacroArgs(char *save[])
 {
 	int32_t i;
 
@@ -461,8 +459,7 @@
 		currentmacroargs[i] = save[i];
 }
 
-void
-sym_FreeCurrentMacroArgs(void)
+void sym_FreeCurrentMacroArgs(void)
 {
 	int32_t i;
 
@@ -472,8 +469,7 @@
 	}
 }
 
-void
-sym_AddNewMacroArg(char *s)
+void sym_AddNewMacroArg(char *s)
 {
 	int32_t i = 0;
 
@@ -485,12 +481,12 @@
 			newmacroargs[i] = strdup(s);
 		else
 			newmacroargs[i] = NULL;
-	} else
+	} else {
 		yyerror("A maximum of %d arguments allowed", MAXMACROARGS);
+	}
 }
 
-void
-sym_SetMacroArgID(uint32_t nMacroCount)
+void sym_SetMacroArgID(uint32_t nMacroCount)
 {
 	char s[256];
 
@@ -498,8 +494,7 @@
 	newmacroargs[MAXMACROARGS] = strdup(s);
 }
 
-void
-sym_UseCurrentMacroArgs(void)
+void sym_UseCurrentMacroArgs(void)
 {
 	int32_t i;
 
@@ -510,30 +505,28 @@
 /*
  * Find a macro by name
  */
-struct sSymbol *
-sym_FindMacro(char *s)
+struct sSymbol *sym_FindMacro(char *s)
 {
-	return (findsymbol(s, NULL));
+	return findsymbol(s, NULL);
 }
 
 /*
  * Add an equated symbol
  */
-void
-sym_AddEqu(char *tzSym, int32_t value)
+void sym_AddEqu(char *tzSym, int32_t value)
 {
-	if ((nPass == 1)
-	    || ((nPass == 2) && (sym_isDefined(tzSym) == 0))) {
+	if ((nPass == 1) || ((nPass == 2) && (sym_isDefined(tzSym) == 0))) {
 		/* only add equated symbols in pass 1 */
-		struct sSymbol *nsym;
+		struct sSymbol *nsym = findsymbol(tzSym, NULL);
 
-		if ((nsym = findsymbol(tzSym, NULL)) != NULL) {
+		if (nsym != NULL) {
 			if (nsym->nType & SYMF_DEFINED) {
-				yyerror("'%s' already defined in %s(%d)",
-					tzSym, nsym->tzFileName, nsym->nFileLine);
+				yyerror("'%s' already defined in %s(%d)", tzSym,
+					nsym->tzFileName, nsym->nFileLine);
 			}
-		} else
+		} else {
 			nsym = createsymbol(tzSym);
+		}
 
 		if (nsym) {
 			nsym->nValue = value;
@@ -555,24 +548,27 @@
  * of the string are enough: sym_AddString("M_PI", "3.1415"). This is the same
  * as ``` M_PI EQUS "3.1415" ```
  */
-void
-sym_AddString(char *tzSym, char *tzValue)
+void sym_AddString(char *tzSym, char *tzValue)
 {
-	struct sSymbol *nsym;
+	struct sSymbol *nsym = findsymbol(tzSym, NULL);
 
-	if ((nsym = findsymbol(tzSym, NULL)) != NULL) {
+	if (nsym != NULL) {
 		if (nsym->nType & SYMF_DEFINED) {
 			yyerror("'%s' already defined in %s(%d)",
 				tzSym, nsym->tzFileName, nsym->nFileLine);
 		}
-	} else
+	} else {
 		nsym = createsymbol(tzSym);
+	}
 
 	if (nsym) {
-		if ((nsym->pMacro = malloc(strlen(tzValue) + 1)) != NULL)
+		nsym->pMacro = malloc(strlen(tzValue) + 1);
+
+		if (nsym->pMacro != NULL)
 			strcpy(nsym->pMacro, tzValue);
 		else
 			fatalerror("No memory for stringequate");
+
 		nsym->nType |= SYMF_STRING | SYMF_DEFINED;
 		nsym->ulMacroSize = strlen(tzValue);
 		nsym->pScope = NULL;
@@ -582,29 +578,28 @@
 /*
  * check if symbol is a string equated symbol
  */
-uint32_t
-sym_isString(char *tzSym)
+uint32_t sym_isString(char *tzSym)
 {
-	struct sSymbol *pSym;
+	const struct sSymbol *pSym = findsymbol(tzSym, NULL);
 
-	if ((pSym = findsymbol(tzSym, NULL)) != NULL) {
+	if (pSym != NULL) {
 		if (pSym->nType & SYMF_STRING)
-			return (1);
+			return 1;
 	}
-	return (0);
+	return 0;
 }
 
 /*
  * Alter a SET symbols value
  */
-void
-sym_AddSet(char *tzSym, int32_t value)
+void sym_AddSet(char *tzSym, int32_t value)
 {
-	struct sSymbol *nsym;
+	struct sSymbol *nsym = findsymbol(tzSym, NULL);
 
-	if ((nsym = findsymbol(tzSym, NULL)) != NULL) {
-	} else
+	if (nsym == NULL) {
+		/* Symbol hasn been found, create */
 		nsym = createsymbol(tzSym);
+	}
 
 	if (nsym) {
 		nsym->nValue = value;
@@ -616,18 +611,17 @@
 /*
  * Add a local (.name) relocatable symbol
  */
-void
-sym_AddLocalReloc(char *tzSym)
+void sym_AddLocalReloc(char *tzSym)
 {
 	if (pScope) {
-		if (strlen(tzSym) + strlen(pScope->tzName) > MAXSYMLEN) {
+		if (strlen(tzSym) + strlen(pScope->tzName) > MAXSYMLEN)
 			fatalerror("Symbol too long");
-		}
-		
+
 		char fullname[MAXSYMLEN + 1];
+
 		fullSymbolName(fullname, sizeof(fullname), tzSym, pScope);
 		sym_AddReloc(fullname);
-		
+
 	} else {
 		fatalerror("Local label in main scope");
 	}
@@ -636,51 +630,56 @@
 /*
  * Add a relocatable symbol
  */
-void
-sym_AddReloc(char *tzSym)
+void sym_AddReloc(char *tzSym)
 {
-	struct sSymbol* scope = NULL;
-	
+	struct sSymbol *scope = NULL;
+
 	if ((nPass == 1)
 	    || ((nPass == 2) && (sym_isDefined(tzSym) == 0))) {
 		/* only add reloc symbols in pass 1 */
 		struct sSymbol *nsym;
-		char *localPtr = NULL;
-		
-		if ((localPtr = strchr(tzSym, '.')) != NULL) {			
-			if (!pScope) {
+		char *localPtr = strchr(tzSym, '.');
+
+		if (localPtr != NULL) {
+			if (!pScope)
 				fatalerror("Local label in main scope");
-			}
-			
-			struct sSymbol *parent = pScope->pScope ? pScope->pScope : pScope;
+
+			struct sSymbol *parent = pScope->pScope ?
+						 pScope->pScope : pScope;
 			int32_t parentLen = localPtr - tzSym;
-			
+
 			if (strchr(localPtr + 1, '.') != NULL) {
-				fatalerror("'%s' is a nonsensical reference to a nested local symbol", tzSym);
-			} else if (strlen(parent->tzName) != parentLen || strncmp(tzSym, parent->tzName, parentLen) != 0) {
-				yyerror("Not currently in the scope of '%.*s'", parentLen, tzSym);
+				fatalerror("'%s' is a nonsensical reference to a nested local symbol",
+					   tzSym);
+			} else if (strlen(parent->tzName) != parentLen
+				   || strncmp(tzSym, parent->tzName, parentLen) != 0) {
+				yyerror("Not currently in the scope of '%.*s'",
+					parentLen, tzSym);
 			}
-			
+
 			scope = parent;
 		}
 
-		if ((nsym = findsymbol(tzSym, scope)) != NULL) {
+		nsym = findsymbol(tzSym, scope);
+
+		if (nsym != NULL) {
 			if (nsym->nType & SYMF_DEFINED) {
-				yyerror("'%s' already defined in %s(%d)",
-					tzSym, nsym->tzFileName, nsym->nFileLine);
+				yyerror("'%s' already defined in %s(%d)", tzSym,
+					nsym->tzFileName, nsym->nFileLine);
 			}
-		} else
+		} else {
 			nsym = createsymbol(tzSym);
+		}
 
 		if (nsym) {
 			nsym->nValue = nPC;
 			nsym->nType |= SYMF_RELOC | SYMF_DEFINED;
-			if (localPtr) {
+			if (localPtr)
 				nsym->nType |= SYMF_LOCAL;
-			}
-			if (exportall) {
-			   nsym->nType |= SYMF_EXPORT;
-			}
+
+			if (exportall)
+				nsym->nType |= SYMF_EXPORT;
+
 			nsym->pScope = scope;
 			nsym->pSection = pCurrentSection;
 		}
@@ -695,19 +694,20 @@
  *
  * It returns 1 if the difference is defined, 0 if not.
  */
-int32_t
-sym_IsRelocDiffDefined(char *tzSym1, char *tzSym2)
+int32_t sym_IsRelocDiffDefined(char *tzSym1, char *tzSym2)
 {
 	/* Do nothing the first pass. */
 	if (nPass != 2)
 		return 1;
 
-	struct sSymbol *nsym1, *nsym2;
+	const struct sSymbol *nsym1 = sym_FindSymbol(tzSym1);
+	const struct sSymbol *nsym2 = sym_FindSymbol(tzSym2);
 
 	/* Do the symbols exist? */
-	if ((nsym1 = sym_FindSymbol(tzSym1)) == NULL)
+	if (nsym1 == NULL)
 		fatalerror("Symbol \"%s\" isn't defined.", tzSym1);
-	if ((nsym2 = sym_FindSymbol(tzSym2)) == NULL)
+
+	if (nsym2 == NULL)
 		fatalerror("Symbol \"%s\" isn't defined.", tzSym2);
 
 	int32_t s1reloc = (nsym1->nType & SYMF_RELOC) != 0;
@@ -714,20 +714,27 @@
 	int32_t s2reloc = (nsym2->nType & SYMF_RELOC) != 0;
 
 	/* Both are non-relocatable */
-	if (!s1reloc && !s2reloc) return 1;
+	if (!s1reloc && !s2reloc)
+		return 1;
 
-	/* One of them relocatable, the other one not. */
-	if (s1reloc ^ s2reloc) return 0;
+	/* One of them is relocatable, the other one is not. */
+	if (s1reloc ^ s2reloc)
+		return 0;
 
-	/* Both of them are relocatable. Make sure they are defined (internal
-         * coherency with sym_AddReloc and sym_AddLocalReloc). */
+	/*
+	 * Both of them are relocatable. Make sure they are defined (internal
+	 * coherency with sym_AddReloc and sym_AddLocalReloc).
+	 */
 	if (!(nsym1->nType & SYMF_DEFINED))
 		fatalerror("Relocatable symbol \"%s\" isn't defined.", tzSym1);
+
 	if (!(nsym2->nType & SYMF_DEFINED))
 		fatalerror("Relocatable symbol \"%s\" isn't defined.", tzSym2);
 
-	/* Both of them must be in the same section for the difference to be
-         * defined. */
+	/*
+	 * Both of them must be in the same section for the difference to be
+	 * defined.
+	 */
 	return nsym1->pSection == nsym2->pSection;
 }
 
@@ -734,42 +741,37 @@
 /*
  * Export a symbol
  */
-void
-sym_Export(char *tzSym)
+void sym_Export(char *tzSym)
 {
 	if (nPass == 1) {
 		/* only export symbols in pass 1 */
-		struct sSymbol *nsym;
+		struct sSymbol *nsym = sym_FindSymbol(tzSym);
 
-		if ((nsym = sym_FindSymbol(tzSym)) == NULL)
+		if (nsym == NULL)
 			nsym = createsymbol(tzSym);
 
 		if (nsym)
 			nsym->nType |= SYMF_EXPORT;
 	} else {
-		struct sSymbol *nsym;
+		const struct sSymbol *nsym = sym_FindSymbol(tzSym);
 
-		if ((nsym = sym_FindSymbol(tzSym)) != NULL) {
+		if (nsym != NULL) {
 			if (nsym->nType & SYMF_DEFINED)
 				return;
 		}
 		yyerror("'%s' not defined", tzSym);
 	}
-
 }
 
 /*
  * Globalize a symbol (export if defined, import if not)
  */
-void
-sym_Global(char *tzSym)
+void sym_Global(char *tzSym)
 {
 	if (nPass == 2) {
 		/* only globalize symbols in pass 2 */
-		struct sSymbol *nsym;
+		struct sSymbol *nsym = sym_FindSymbol(tzSym);
 
-		nsym = sym_FindSymbol(tzSym);
-
 		if ((nsym == NULL) || ((nsym->nType & SYMF_DEFINED) == 0)) {
 			if (nsym == NULL)
 				nsym = createsymbol(tzSym);
@@ -786,21 +788,23 @@
 /*
  * Add a macro definition
  */
-void
-sym_AddMacro(char *tzSym)
+void sym_AddMacro(char *tzSym)
 {
-	if ((nPass == 1)
-	    || ((nPass == 2) && (sym_isDefined(tzSym) == 0))) {
+	if ((nPass == 1) || ((nPass == 2) && (sym_isDefined(tzSym) == 0))) {
 		/* only add macros in pass 1 */
 		struct sSymbol *nsym;
 
-		if ((nsym = findsymbol(tzSym, NULL)) != NULL) {
+		nsym = findsymbol(tzSym, NULL);
+
+		if (nsym != NULL) {
 			if (nsym->nType & SYMF_DEFINED) {
 				yyerror("'%s' already defined in %s(%d)",
-					tzSym, nsym->tzFileName, nsym->nFileLine);
+					tzSym, nsym->tzFileName,
+					nsym->nFileLine);
 			}
-		} else
+		} else {
 			nsym = createsymbol(tzSym);
+		}
 
 		if (nsym) {
 			nsym->nValue = nPC;
@@ -815,7 +819,8 @@
 /*
  * Set whether to export all relocable symbols by default
  */
-void sym_SetExportAll(uint8_t set) {
+void sym_SetExportAll(uint8_t set)
+{
 	exportall = set;
 }
 
@@ -822,8 +827,7 @@
 /*
  * Prepare for pass #1
  */
-void
-sym_PrepPass1(void)
+void sym_PrepPass1(void)
 {
 	sym_Init();
 }
@@ -831,8 +835,7 @@
 /*
  * Prepare for pass #2
  */
-void
-sym_PrepPass2(void)
+void sym_PrepPass2(void)
 {
 	int32_t i;
 
@@ -840,15 +843,17 @@
 		struct sSymbol **ppSym = &(tHashedSymbols[i]);
 
 		while (*ppSym) {
-			if ((*ppSym)->
-			    nType & (SYMF_SET | SYMF_STRING | SYMF_EQU)) {
+			uint32_t mask = SYMF_SET | SYMF_STRING | SYMF_EQU;
+
+			if ((*ppSym)->nType & mask) {
 				struct sSymbol *pTemp;
 
 				pTemp = (*ppSym)->pNext;
 				free(*ppSym);
 				*ppSym = pTemp;
-			} else
+			} else {
 				ppSym = &((*ppSym)->pNext);
+			}
 		}
 	}
 	pScope = NULL;
@@ -882,8 +887,7 @@
 /*
  * Initialize the symboltable
  */
-void
-sym_Init(void)
+void sym_Init(void)
 {
 	int32_t i;
 	time_t now;
@@ -908,16 +912,21 @@
 	sym_AddSet("_RS", 0);
 
 	if (time(&now) != -1) {
-		struct tm *time_local = localtime(&now);
+		const struct tm *time_local = localtime(&now);
 
-		strftime(SavedTIME, sizeof(SavedTIME), "\"%H:%M:%S\"", time_local);
-		strftime(SavedDATE, sizeof(SavedDATE), "\"%d %B %Y\"", time_local);
+		strftime(SavedTIME, sizeof(SavedTIME), "\"%H:%M:%S\"",
+			 time_local);
+		strftime(SavedDATE, sizeof(SavedDATE), "\"%d %B %Y\"",
+			 time_local);
 		strftime(SavedTIMESTAMP_ISO8601_LOCAL,
-			sizeof(SavedTIMESTAMP_ISO8601_LOCAL), "\"%FT%T%z\"", time_local);
+			 sizeof(SavedTIMESTAMP_ISO8601_LOCAL), "\"%FT%T%z\"",
+			 time_local);
 
-		struct tm *time_utc = gmtime(&now);
+		const struct tm *time_utc = gmtime(&now);
+
 		strftime(SavedTIMESTAMP_ISO8601_UTC,
-			sizeof(SavedTIMESTAMP_ISO8601_UTC), "\"%FT%TZ\"", time_utc);
+			 sizeof(SavedTIMESTAMP_ISO8601_UTC), "\"%FT%TZ\"",
+			 time_utc);
 
 		strftime(SavedDAY, sizeof(SavedDAY), "%d", time_utc);
 		strftime(SavedMONTH, sizeof(SavedMONTH), "%m", time_utc);
@@ -933,8 +942,10 @@
 		helper_RemoveLeadingZeros(SavedSECOND);
 	} else {
 		warnx("Couldn't determine current time.");
-		/* The '?' have to be escaped or they will be treated as
-		 * trigraphs... */
+		/*
+		 * The '?' have to be escaped or they will be treated as
+		 * trigraphs...
+		 */
 		strcpy(SavedTIME, "\"\?\?:\?\?:\?\?\"");
 		strcpy(SavedDATE, "\"\?\? \?\?\? \?\?\?\?\"");
 		strcpy(SavedTIMESTAMP_ISO8601_LOCAL, "\"\?\?\?\?-\?\?-\?\?T\?\?:\?\?:\?\?+\?\?\?\?\"");
@@ -961,5 +972,4 @@
 	pScope = NULL;
 
 	math_DefinePI();
-
 }