ref: cd779b951147c9b3c37e4d8201f736e8fba397ce
parent: 26150fa9d4203737d5dff5ba3d4dc5239d93c6e7
author: Vegard Nossum <[email protected]>
date: Thu Jun 11 05:14:19 EDT 2009
asm: moved includes to include/asm/ Signed-off-by: Vegard Nossum <[email protected]>
--- /dev/null
+++ b/include/asm/asm.h
@@ -1,0 +1,36 @@
+/* asm.h
+ *
+ * Contains some assembler-wide defines and externs
+ *
+ * Copyright 1997 Carsten Sorensen
+ *
+ */
+
+#ifndef ASMOTOR_ASM_ASM_H
+#define ASMOTOR_ASM_ASM_H
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "asm/types.h"
+#include "asm/symbol.h"
+
+#include "localasm.h"
+
+#include "asmotor.h"
+
+extern SLONG nLineNo;
+extern ULONG nTotalLines;
+extern ULONG nPC;
+extern ULONG nPass;
+extern ULONG nIFDepth;
+extern char tzCurrentFileName[_MAX_PATH + 1];
+extern struct Section *pCurrentSection;
+extern struct sSymbol *tHashedSymbols[HASHSIZE];
+extern struct sSymbol *pPCSymbol;
+extern UBYTE oDontExpandStrings;
+
+#define MAXMACROARGS 9
+#define MAXINCPATHS 16
+
+#endif // ASM_H
--- /dev/null
+++ b/include/asm/fstack.h
@@ -1,0 +1,41 @@
+/* fstack.h
+ *
+ * Contains some assembler-wide defines and externs
+ *
+ * Copyright 1997 Carsten Sorensen
+ *
+ */
+
+#ifndef ASMOTOR_ASM_FSTACK_H
+#define ASMOTOR_ASM_FSTACK_H
+
+#include "asm/asm.h"
+#include "asm/types.h"
+#include "asm/lexer.h"
+
+struct sContext {
+ YY_BUFFER_STATE FlexHandle;
+ struct sSymbol *pMacro;
+ struct sContext *pNext;
+ char tzFileName[_MAX_PATH + 1];
+ char *tzMacroArgs[MAXMACROARGS + 1];
+ SLONG nLine;
+ ULONG nStatus;
+ FILE *pFile;
+ char *pREPTBlock;
+ ULONG nREPTBlockCount;
+ ULONG nREPTBlockSize;
+};
+
+extern ULONG fstk_RunInclude(char *s);
+extern void fstk_RunMacroArg(SLONG s);
+extern ULONG fstk_Init(char *s);
+extern void fstk_Dump(void);
+extern void fstk_AddIncludePath(char *s);
+extern ULONG fstk_RunMacro(char *s);
+extern void fstk_RunRept(ULONG count);
+extern void fstk_FindFile(char *s);
+
+extern int yywrap(void);
+
+#endif
--- /dev/null
+++ b/include/asm/lexer.h
@@ -1,0 +1,65 @@
+#ifndef ASMOTOR_ASM_LEXER_H
+#define ASMOTOR_ASM_LEXER_H
+
+#include <stdio.h>
+
+#include "asm/types.h"
+
+#define LEXHASHSIZE 512
+
+struct sLexInitString {
+ char *tzName;
+ ULONG nToken;
+};
+
+struct sLexFloat {
+ ULONG(*Callback) (char *s, ULONG size);
+ ULONG nToken;
+};
+
+struct yy_buffer_state {
+ char *pBufferStart;
+ char *pBuffer;
+ ULONG nBufferSize;
+ ULONG oAtLineStart;
+};
+
+enum eLexerState {
+ LEX_STATE_NORMAL,
+ LEX_STATE_MACROARGS
+};
+
+#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, ULONG size);
+extern void yy_delete_buffer(YY_BUFFER_STATE);
+extern void yy_switch_to_buffer(YY_BUFFER_STATE);
+extern ULONG lex_FloatAlloc(struct sLexFloat *tok);
+extern void lex_FloatAddRange(ULONG id, UWORD start, UWORD end);
+extern void lex_FloatDeleteRange(ULONG id, UWORD start, UWORD end);
+extern void lex_FloatAddFirstRange(ULONG id, UWORD start, UWORD end);
+extern void lex_FloatDeleteFirstRange(ULONG id, UWORD start, UWORD end);
+extern void lex_FloatAddSecondRange(ULONG id, UWORD start, UWORD end);
+extern void lex_FloatDeleteSecondRange(ULONG id, UWORD start, UWORD end);
+extern void lex_Init(void);
+extern void lex_AddStrings(struct sLexInitString *lex);
+extern void lex_SetBuffer(char *buffer, ULONG len);
+extern ULONG yylex(void);
+extern void yyunput(char c);
+extern void yyunputstr(char *s);
+extern void yyskipbytes(ULONG count);
+extern void yyunputbytes(ULONG count);
+
+extern YY_BUFFER_STATE pCurrentBuffer;
+
+#ifdef __GNUC__
+extern void strupr(char *s);
+extern void strlwr(char *s);
+#endif
+
+#endif
--- /dev/null
+++ b/include/asm/main.h
@@ -1,0 +1,34 @@
+#ifndef ASMOTOR_MAIN_H
+#define ASMOTOR_MAIN_H
+
+struct sOptions {
+ ULONG endian;
+ char gbgfx[4];
+ char binary[2];
+ SLONG fillchar; // -1 == random
+};
+
+extern char *tzNewMacro;
+extern ULONG ulNewMacroSize;
+extern SLONG nGBGfxID;
+extern SLONG nBinaryID;
+
+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 fatalerror(char *s);
+void yyerror(char *s);
+
+extern char temptext[1024];
+
+#define YY_FATAL_ERROR fatalerror
+
+#ifdef YYLMAX
+#undef YYLMAX
+#endif
+#define YYLMAX 65536
+
+#endif
--- /dev/null
+++ b/include/asm/mylink.h
@@ -1,0 +1,119 @@
+#ifndef ASMOTOR_ASM_LINK_H
+#define ASMOTOR_ASM_LINK_H
+
+/* RGB0 .obj format:
+ *
+ * Header
+ * Symbols
+ * Sections
+ *
+ * Header:
+ * "RGB0"
+ * LONG NumberOfSymbols
+ * LONG NumberOfSections
+ *
+ * Symbols:
+ * Symbol[NumberOfSymbols]
+ *
+ * Symbol:
+ * char Name (NULL terminated)
+ * char nType
+ * if( nType!=SYM_IMPORT )
+ * {
+ * LONG SectionID
+ * LONG Offset
+ * }
+ *
+ * Sections:
+ * Section[NumberOfSections]
+ *
+ * Section:
+ * LONG SizeInBytes
+ * char Type
+ * if( Type!=BSS )
+ * {
+ * char Data[SizeInBytes]
+ * Patches
+ * }
+ *
+ * Patches:
+ * LONG NumberOfPatches
+ * Patch[NumberOfPatches]
+ *
+ * Patch:
+ * char Filename NULL-terminated
+ * LONG LineNo
+ * LONG Offset
+ * char Type
+ * LONG RpnByteSize
+ * Rpn[RpnByteSize]
+ *
+ * Rpn:
+ * Operators: 0x00-0x7F
+ * Constants: 0x80 0x00000000
+ * Symbols : 0x81 0x00000000
+ *
+ */
+
+enum {
+ RPN_ADD = 0,
+ RPN_SUB,
+ RPN_MUL,
+ RPN_DIV,
+ RPN_MOD,
+ RPN_UNSUB,
+
+ RPN_OR,
+ RPN_AND,
+ RPN_XOR,
+ RPN_UNNOT,
+
+ RPN_LOGAND,
+ RPN_LOGOR,
+ RPN_LOGUNNOT,
+
+ RPN_LOGEQ,
+ RPN_LOGNE,
+ RPN_LOGGT,
+ RPN_LOGLT,
+ RPN_LOGGE,
+ RPN_LOGLE,
+
+ RPN_SHL,
+ RPN_SHR,
+
+ RPN_BANK,
+
+ RPN_HRAM,
+
+ RPN_PCEZP,
+
+ RPN_RANGECHECK,
+
+ RPN_CONST = 0x80,
+ RPN_SYM = 0x81
+};
+
+enum {
+ SECT_BSS = 0,
+ SECT_VRAM,
+ SECT_CODE,
+ SECT_HOME,
+ SECT_HRAM
+};
+
+enum {
+ SYM_LOCAL = 0,
+ SYM_IMPORT,
+ SYM_EXPORT
+};
+
+enum {
+ PATCH_BYTE = 0,
+ PATCH_WORD_L,
+ PATCH_LONG_L,
+ PATCH_WORD_B,
+ PATCH_LONG_B
+};
+
+#endif
--- /dev/null
+++ b/include/asm/mymath.h
@@ -1,0 +1,18 @@
+#ifndef ASMOTOR_ASM_MATH_H
+#define ASMOTOR_ASM_MATH_H
+
+#include "asm/types.h"
+
+void math_DefinePI(void);
+void math_Print(SLONG i);
+SLONG math_Sin(SLONG i);
+SLONG math_Cos(SLONG i);
+SLONG math_Tan(SLONG i);
+SLONG math_ASin(SLONG i);
+SLONG math_ACos(SLONG i);
+SLONG math_ATan(SLONG i);
+SLONG math_ATan2(SLONG i, SLONG j);
+SLONG math_Mul(SLONG i, SLONG j);
+SLONG math_Div(SLONG i, SLONG j);
+
+#endif
--- /dev/null
+++ b/include/asm/output.h
@@ -1,0 +1,35 @@
+#ifndef ASMOTOR_ASM_OUTPUT_H
+#define ASMOTOR_ASM_OUTPUT_H
+
+#include "asm/rpn.h"
+#include "asm/types.h"
+
+struct Section {
+ char *pzName;
+ UBYTE nType;
+ ULONG nPC;
+ ULONG nOrg;
+ ULONG nBank;
+ struct Section *pNext;
+ struct Patch *pPatches;
+ UBYTE *tData;
+};
+
+void out_PrepPass2(void);
+void out_SetFileName(char *s);
+void out_NewSection(char *pzName, ULONG secttype);
+void out_NewAbsSection(char *pzName, ULONG secttype, SLONG org, SLONG bank);
+void out_AbsByte(int b);
+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(int skip);
+void out_BinaryFile(char *s);
+void out_String(char *s);
+void out_AbsLong(SLONG b);
+void out_RelLong(struct Expression *expr);
+void out_PushSection(void);
+void out_PopSection(void);
+
+#endif
--- /dev/null
+++ b/include/asm/rpn.h
@@ -1,0 +1,68 @@
+#ifndef ASMOTOR_ASM_RPN_H
+#define ASMOTOR_ASM_RPN_H
+
+struct Expression {
+ SLONG nVal;
+ UBYTE tRPN[256];
+ ULONG nRPNLength;
+ ULONG nRPNOut;
+ ULONG isReloc;
+ ULONG isPCRel;
+};
+
+ULONG rpn_isReloc(struct Expression *expr);
+ULONG rpn_isPCRelative(struct Expression *expr);
+void rpn_Symbol(struct Expression *expr, char *tzSym);
+void rpn_Number(struct Expression *expr, ULONG 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_UNNEG(struct Expression *expr, struct Expression *src);
+void rpn_UNNOT(struct Expression *expr, struct Expression *src);
+UWORD rpn_PopByte(struct Expression *expr);
+void rpn_Bank(struct Expression *expr, char *tzSym);
+void rpn_Reset(struct Expression *expr);
+int rpn_RangeCheck(struct Expression *expr, struct Expression *src, SLONG low,
+ SLONG high);
+#ifdef GAMEBOY
+void rpn_CheckHRAM(struct Expression *expr, struct Expression *src1);
+#endif
+#ifdef PCENGINE
+void rpn_CheckZP(struct Expression *expr, struct Expression *src);
+#endif
+
+#endif
--- /dev/null
+++ b/include/asm/symbol.h
@@ -1,0 +1,67 @@
+#ifndef ASMOTOR_SYMBOL_H
+#define ASMOTOR_SYMBOL_H
+
+#include "asm/types.h"
+
+#define HASHSIZE 73
+#define MAXSYMLEN 256
+
+struct sSymbol {
+ char tzName[MAXSYMLEN + 1];
+ SLONG nValue;
+ ULONG nType;
+ struct sSymbol *pScope;
+ struct sSymbol *pNext;
+ struct Section *pSection;
+ ULONG ulMacroSize;
+ char *pMacro;
+ SLONG(*Callback) (struct sSymbol *);
+};
+
+#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 */
+
+void sym_PrepPass1(void);
+void sym_PrepPass2(void);
+void sym_AddLocalReloc(char *tzSym);
+void sym_AddReloc(char *tzSym);
+void sym_Export(char *tzSym);
+void sym_PrintSymbolTable(void);
+struct sSymbol *sym_FindMacro(char *s);
+void sym_InitNewMacroArgs(void);
+void sym_AddNewMacroArg(char *s);
+void sym_SaveCurrentMacroArgs(char *save[]);
+void sym_RestoreCurrentMacroArgs(char *save[]);
+void sym_UseNewMacroArgs(void);
+void sym_FreeCurrentMacroArgs(void);
+void sym_AddEqu(char *tzSym, SLONG value);
+void sym_AddSet(char *tzSym, SLONG value);
+void sym_Init(void);
+ULONG sym_GetConstantValue(char *s);
+void sym_Import(char *tzSym);
+ULONG sym_isConstant(char *s);
+struct sSymbol *sym_FindSymbol(char *tzName);
+void sym_Global(char *tzSym);
+char *sym_FindMacroArg(SLONG i);
+char *sym_GetStringValue(char *tzSym);
+void sym_UseCurrentMacroArgs(void);
+void sym_SetMacroArgID(ULONG nMacroCount);
+ULONG sym_isString(char *tzSym);
+void sym_AddMacro(char *tzSym);
+void sym_ShiftCurrentMacroArgs(void);
+void sym_AddString(char *tzSym, char *tzValue);
+ULONG sym_GetValue(char *s);
+ULONG sym_GetDefinedValue(char *s);
+ULONG sym_isDefined(char *tzName);
+void sym_Purge(char *tzName);
+ULONG sym_isConstDefined(char *tzName);
+
+#endif
--- /dev/null
+++ b/include/asm/types.h
@@ -1,0 +1,18 @@
+#ifndef ASMOTOR_ASM_TYPES_H
+#define ASMOTOR_ASM_TYPES_H
+
+#if defined(AMIGA) || defined(__GNUC__)
+#define _MAX_PATH 512
+#endif
+
+typedef unsigned char UBYTE;
+typedef signed char SBYTE;
+typedef unsigned short UWORD;
+typedef signed short SWORD;
+typedef unsigned long ULONG;
+typedef signed long SLONG;
+
+#define ASM_LITTLE_ENDIAN 0
+#define ASM_BIG_ENDIAN 1
+
+#endif
--- a/src/asm/Makefile
+++ b/src/asm/Makefile
@@ -20,7 +20,7 @@
gcc -Wall -o $@ $^ -lm
.c.o:
- gcc -Wall -DGAMEBOY -I. -I.. -Iinclude -Igameboy -g -c -o $@ $<
+ gcc -Wall -DGAMEBOY -I. -I.. -I../../include -Igameboy -g -c -o $@ $<
.y.c:
bison -d -o $@ $^
--- a/src/asm/fstack.c
+++ b/src/asm/fstack.c
@@ -8,11 +8,12 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include "symbol.h"
-#include "fstack.h"
-#include "types.h"
-#include "main.h"
-#include "lexer.h"
+
+#include "asm/symbol.h"
+#include "asm/fstack.h"
+#include "asm/types.h"
+#include "asm/main.h"
+#include "asm/lexer.h"
/*
* RGBAsm - FSTACK.C (FileStack routines)
--- a/src/asm/gameboy/locallex.c
+++ b/src/asm/gameboy/locallex.c
@@ -1,7 +1,7 @@
-#include "symbol.h"
-#include "lexer.h"
-#include "rpn.h"
-#include "asmy.h"
+#include "asm/symbol.h"
+#include "asm/lexer.h"
+#include "asm/rpn.h"
+#include "asm/asmy.h"
struct sLexInitString localstrings[] = {
{ "adc", T_Z80_ADC },
--- a/src/asm/globlex.c
+++ b/src/asm/globlex.c
@@ -1,10 +1,11 @@
-#include "asm.h"
-#include "symbol.h"
-#include "rpn.h"
-#include "asmy.h"
-#include "symbol.h"
-#include "main.h"
-#include "lexer.h"
+#include "asm/asm.h"
+#include "asm/symbol.h"
+#include "asm/rpn.h"
+#include "asm/asmy.h"
+#include "asm/symbol.h"
+#include "asm/main.h"
+#include "asm/lexer.h"
+
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
--- a/src/asm/include/asm.h
+++ /dev/null
@@ -1,33 +1,0 @@
-/* asm.h
- *
- * Contains some assembler-wide defines and externs
- *
- * Copyright 1997 Carsten Sorensen
- *
- */
-
-#ifndef ASM_H
-#define ASM_H
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "types.h"
-#include "symbol.h"
-#include "localasm.h"
-#include "asmotor.h"
-
-extern SLONG nLineNo;
-extern ULONG nTotalLines;
-extern ULONG nPC;
-extern ULONG nPass;
-extern ULONG nIFDepth;
-extern char tzCurrentFileName[_MAX_PATH + 1];
-extern struct Section *pCurrentSection;
-extern struct sSymbol *tHashedSymbols[HASHSIZE];
-extern struct sSymbol *pPCSymbol;
-extern UBYTE oDontExpandStrings;
-
-#define MAXMACROARGS 9
-#define MAXINCPATHS 16
-
-#endif // ASM_H
--- a/src/asm/include/fstack.h
+++ /dev/null
@@ -1,41 +1,0 @@
-/* fstack.h
- *
- * Contains some assembler-wide defines and externs
- *
- * Copyright 1997 Carsten Sorensen
- *
- */
-
-#ifndef FSTACK_H
-#define FSTACK_H
-
-#include "asm.h"
-#include "types.h"
-#include "lexer.h"
-
-struct sContext {
- YY_BUFFER_STATE FlexHandle;
- struct sSymbol *pMacro;
- struct sContext *pNext;
- char tzFileName[_MAX_PATH + 1];
- char *tzMacroArgs[MAXMACROARGS + 1];
- SLONG nLine;
- ULONG nStatus;
- FILE *pFile;
- char *pREPTBlock;
- ULONG nREPTBlockCount;
- ULONG nREPTBlockSize;
-};
-
-extern ULONG fstk_RunInclude(char *s);
-extern void fstk_RunMacroArg(SLONG s);
-extern ULONG fstk_Init(char *s);
-extern void fstk_Dump(void);
-extern void fstk_AddIncludePath(char *s);
-extern ULONG fstk_RunMacro(char *s);
-extern void fstk_RunRept(ULONG count);
-extern void fstk_FindFile(char *s);
-
-extern int yywrap(void);
-
-#endif
--- a/src/asm/include/gbasmy.h
+++ /dev/null
@@ -1,151 +1,0 @@
-typedef union {
- char tzSym[MAXSYMLEN + 1];
- char tzString[256];
- struct Expression sVal;
- SLONG nConstValue;
-} YYSTYPE;
-#define T_NUMBER 258
-#define T_STRING 259
-#define T_OP_LOGICNOT 260
-#define T_OP_LOGICOR 261
-#define T_OP_LOGICAND 262
-#define T_OP_LOGICEQU 263
-#define T_OP_LOGICGT 264
-#define T_OP_LOGICLT 265
-#define T_OP_LOGICGE 266
-#define T_OP_LOGICLE 267
-#define T_OP_LOGICNE 268
-#define T_OP_ADD 269
-#define T_OP_SUB 270
-#define T_OP_OR 271
-#define T_OP_XOR 272
-#define T_OP_AND 273
-#define T_OP_SHL 274
-#define T_OP_SHR 275
-#define T_OP_MUL 276
-#define T_OP_DIV 277
-#define T_OP_MOD 278
-#define T_OP_NOT 279
-#define T_OP_DEF 280
-#define T_OP_BANK 281
-#define T_OP_SIN 282
-#define T_OP_COS 283
-#define T_OP_TAN 284
-#define T_OP_ASIN 285
-#define T_OP_ACOS 286
-#define T_OP_ATAN 287
-#define T_OP_ATAN2 288
-#define T_OP_FDIV 289
-#define T_OP_FMUL 290
-#define T_OP_STRCMP 291
-#define T_OP_STRIN 292
-#define T_OP_STRSUB 293
-#define T_OP_STRLEN 294
-#define T_OP_STRCAT 295
-#define T_OP_STRUPR 296
-#define T_OP_STRLWR 297
-#define NEG 298
-#define T_LABEL 299
-#define T_ID 300
-#define T_POP_EQU 301
-#define T_POP_SET 302
-#define T_POP_EQUS 303
-#define T_POP_INCLUDE 304
-#define T_POP_PRINTF 305
-#define T_POP_PRINTT 306
-#define T_POP_PRINTV 307
-#define T_POP_IF 308
-#define T_POP_ELSE 309
-#define T_POP_ENDC 310
-#define T_POP_IMPORT 311
-#define T_POP_EXPORT 312
-#define T_POP_GLOBAL 313
-#define T_POP_DB 314
-#define T_POP_DS 315
-#define T_POP_DW 316
-#define T_POP_SECTION 317
-#define T_POP_RB 318
-#define T_POP_RW 319
-#define T_POP_MACRO 320
-#define T_POP_ENDM 321
-#define T_POP_RSRESET 322
-#define T_POP_RSSET 323
-#define T_POP_INCBIN 324
-#define T_POP_REPT 325
-#define T_POP_SHIFT 326
-#define T_POP_ENDR 327
-#define T_POP_FAIL 328
-#define T_POP_WARN 329
-#define T_SECT_BSS 330
-#define T_SECT_VRAM 331
-#define T_SECT_CODE 332
-#define T_SECT_HOME 333
-#define T_SECT_HRAM 334
-#define T_Z80_ADC 335
-#define T_Z80_ADD 336
-#define T_Z80_AND 337
-#define T_Z80_BIT 338
-#define T_Z80_CALL 339
-#define T_Z80_CCF 340
-#define T_Z80_CP 341
-#define T_Z80_CPL 342
-#define T_Z80_DAA 343
-#define T_Z80_DEC 344
-#define T_Z80_DI 345
-#define T_Z80_EI 346
-#define T_Z80_EX 347
-#define T_Z80_HALT 348
-#define T_Z80_INC 349
-#define T_Z80_JP 350
-#define T_Z80_JR 351
-#define T_Z80_LD 352
-#define T_Z80_LDIO 353
-#define T_Z80_NOP 354
-#define T_Z80_OR 355
-#define T_Z80_POP 356
-#define T_Z80_PUSH 357
-#define T_Z80_RES 358
-#define T_Z80_RET 359
-#define T_Z80_RETI 360
-#define T_Z80_RST 361
-#define T_Z80_RL 362
-#define T_Z80_RLA 363
-#define T_Z80_RLC 364
-#define T_Z80_RLCA 365
-#define T_Z80_RR 366
-#define T_Z80_RRA 367
-#define T_Z80_RRC 368
-#define T_Z80_RRCA 369
-#define T_Z80_SBC 370
-#define T_Z80_SCF 371
-#define T_Z80_STOP 372
-#define T_Z80_SLA 373
-#define T_Z80_SRA 374
-#define T_Z80_SRL 375
-#define T_Z80_SUB 376
-#define T_Z80_SWAP 377
-#define T_Z80_XOR 378
-#define T_MODE_A 379
-#define T_MODE_B 380
-#define T_MODE_C 381
-#define T_MODE_C_IND 382
-#define T_MODE_D 383
-#define T_MODE_E 384
-#define T_MODE_H 385
-#define T_MODE_L 386
-#define T_MODE_AF 387
-#define T_MODE_BC 388
-#define T_MODE_BC_IND 389
-#define T_MODE_DE 390
-#define T_MODE_DE_IND 391
-#define T_MODE_SP 392
-#define T_MODE_SP_IND 393
-#define T_MODE_HL 394
-#define T_MODE_HL_IND 395
-#define T_MODE_HL_INDDEC 396
-#define T_MODE_HL_INDINC 397
-#define T_CC_NZ 398
-#define T_CC_Z 399
-#define T_CC_NC 400
-
-extern YYSTYPE yylval;
--- a/src/asm/include/lexer.h
+++ /dev/null
@@ -1,64 +1,0 @@
-#ifndef LEXER_H
-#define LEXER_H
-
-#include "types.h"
-#include <stdio.h>
-
-#define LEXHASHSIZE 512
-
-struct sLexInitString {
- char *tzName;
- ULONG nToken;
-};
-
-struct sLexFloat {
- ULONG(*Callback) (char *s, ULONG size);
- ULONG nToken;
-};
-
-struct yy_buffer_state {
- char *pBufferStart;
- char *pBuffer;
- ULONG nBufferSize;
- ULONG oAtLineStart;
-};
-
-enum eLexerState {
- LEX_STATE_NORMAL,
- LEX_STATE_MACROARGS
-};
-
-#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, ULONG size);
-extern void yy_delete_buffer(YY_BUFFER_STATE);
-extern void yy_switch_to_buffer(YY_BUFFER_STATE);
-extern ULONG lex_FloatAlloc(struct sLexFloat *tok);
-extern void lex_FloatAddRange(ULONG id, UWORD start, UWORD end);
-extern void lex_FloatDeleteRange(ULONG id, UWORD start, UWORD end);
-extern void lex_FloatAddFirstRange(ULONG id, UWORD start, UWORD end);
-extern void lex_FloatDeleteFirstRange(ULONG id, UWORD start, UWORD end);
-extern void lex_FloatAddSecondRange(ULONG id, UWORD start, UWORD end);
-extern void lex_FloatDeleteSecondRange(ULONG id, UWORD start, UWORD end);
-extern void lex_Init(void);
-extern void lex_AddStrings(struct sLexInitString *lex);
-extern void lex_SetBuffer(char *buffer, ULONG len);
-extern ULONG yylex(void);
-extern void yyunput(char c);
-extern void yyunputstr(char *s);
-extern void yyskipbytes(ULONG count);
-extern void yyunputbytes(ULONG count);
-
-extern YY_BUFFER_STATE pCurrentBuffer;
-
-#ifdef __GNUC__
-extern void strupr(char *s);
-extern void strlwr(char *s);
-#endif
-
-#endif
--- a/src/asm/include/main.h
+++ /dev/null
@@ -1,34 +1,0 @@
-#ifndef MAIN_H
-#define MAIN_H
-
-struct sOptions {
- ULONG endian;
- char gbgfx[4];
- char binary[2];
- SLONG fillchar; // -1 == random
-};
-
-extern char *tzNewMacro;
-extern ULONG ulNewMacroSize;
-extern SLONG nGBGfxID;
-extern SLONG nBinaryID;
-
-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 fatalerror(char *s);
-void yyerror(char *s);
-
-extern char temptext[1024];
-
-#define YY_FATAL_ERROR fatalerror
-
-#ifdef YYLMAX
-#undef YYLMAX
-#endif
-#define YYLMAX 65536
-
-#endif
--- a/src/asm/include/mylink.h
+++ /dev/null
@@ -1,119 +1,0 @@
-#ifndef LINK_H
-#define LINK_H 1
-
-/* RGB0 .obj format:
- *
- * Header
- * Symbols
- * Sections
- *
- * Header:
- * "RGB0"
- * LONG NumberOfSymbols
- * LONG NumberOfSections
- *
- * Symbols:
- * Symbol[NumberOfSymbols]
- *
- * Symbol:
- * char Name (NULL terminated)
- * char nType
- * if( nType!=SYM_IMPORT )
- * {
- * LONG SectionID
- * LONG Offset
- * }
- *
- * Sections:
- * Section[NumberOfSections]
- *
- * Section:
- * LONG SizeInBytes
- * char Type
- * if( Type!=BSS )
- * {
- * char Data[SizeInBytes]
- * Patches
- * }
- *
- * Patches:
- * LONG NumberOfPatches
- * Patch[NumberOfPatches]
- *
- * Patch:
- * char Filename NULL-terminated
- * LONG LineNo
- * LONG Offset
- * char Type
- * LONG RpnByteSize
- * Rpn[RpnByteSize]
- *
- * Rpn:
- * Operators: 0x00-0x7F
- * Constants: 0x80 0x00000000
- * Symbols : 0x81 0x00000000
- *
- */
-
-enum {
- RPN_ADD = 0,
- RPN_SUB,
- RPN_MUL,
- RPN_DIV,
- RPN_MOD,
- RPN_UNSUB,
-
- RPN_OR,
- RPN_AND,
- RPN_XOR,
- RPN_UNNOT,
-
- RPN_LOGAND,
- RPN_LOGOR,
- RPN_LOGUNNOT,
-
- RPN_LOGEQ,
- RPN_LOGNE,
- RPN_LOGGT,
- RPN_LOGLT,
- RPN_LOGGE,
- RPN_LOGLE,
-
- RPN_SHL,
- RPN_SHR,
-
- RPN_BANK,
-
- RPN_HRAM,
-
- RPN_PCEZP,
-
- RPN_RANGECHECK,
-
- RPN_CONST = 0x80,
- RPN_SYM = 0x81
-};
-
-enum {
- SECT_BSS = 0,
- SECT_VRAM,
- SECT_CODE,
- SECT_HOME,
- SECT_HRAM
-};
-
-enum {
- SYM_LOCAL = 0,
- SYM_IMPORT,
- SYM_EXPORT
-};
-
-enum {
- PATCH_BYTE = 0,
- PATCH_WORD_L,
- PATCH_LONG_L,
- PATCH_WORD_B,
- PATCH_LONG_B
-};
-
-#endif
--- a/src/asm/include/mymath.h
+++ /dev/null
@@ -1,18 +1,0 @@
-#ifndef MATH_H
-#define MATH_H
-
-#include "types.h"
-
-void math_DefinePI(void);
-void math_Print(SLONG i);
-SLONG math_Sin(SLONG i);
-SLONG math_Cos(SLONG i);
-SLONG math_Tan(SLONG i);
-SLONG math_ASin(SLONG i);
-SLONG math_ACos(SLONG i);
-SLONG math_ATan(SLONG i);
-SLONG math_ATan2(SLONG i, SLONG j);
-SLONG math_Mul(SLONG i, SLONG j);
-SLONG math_Div(SLONG i, SLONG j);
-
-#endif
--- a/src/asm/include/output.h
+++ /dev/null
@@ -1,35 +1,0 @@
-#ifndef OUTPUT_H
-#define OUTPUT_H 1
-
-#include "rpn.h"
-#include "types.h"
-
-struct Section {
- char *pzName;
- UBYTE nType;
- ULONG nPC;
- ULONG nOrg;
- ULONG nBank;
- struct Section *pNext;
- struct Patch *pPatches;
- UBYTE *tData;
-};
-
-void out_PrepPass2(void);
-void out_SetFileName(char *s);
-void out_NewSection(char *pzName, ULONG secttype);
-void out_NewAbsSection(char *pzName, ULONG secttype, SLONG org, SLONG bank);
-void out_AbsByte(int b);
-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(int skip);
-void out_BinaryFile(char *s);
-void out_String(char *s);
-void out_AbsLong(SLONG b);
-void out_RelLong(struct Expression *expr);
-void out_PushSection(void);
-void out_PopSection(void);
-
-#endif
--- a/src/asm/include/rpn.h
+++ /dev/null
@@ -1,68 +1,0 @@
-#ifndef RPN_H
-#define RPN_H 1
-
-struct Expression {
- SLONG nVal;
- UBYTE tRPN[256];
- ULONG nRPNLength;
- ULONG nRPNOut;
- ULONG isReloc;
- ULONG isPCRel;
-};
-
-ULONG rpn_isReloc(struct Expression *expr);
-ULONG rpn_isPCRelative(struct Expression *expr);
-void rpn_Symbol(struct Expression *expr, char *tzSym);
-void rpn_Number(struct Expression *expr, ULONG 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_UNNEG(struct Expression *expr, struct Expression *src);
-void rpn_UNNOT(struct Expression *expr, struct Expression *src);
-UWORD rpn_PopByte(struct Expression *expr);
-void rpn_Bank(struct Expression *expr, char *tzSym);
-void rpn_Reset(struct Expression *expr);
-int rpn_RangeCheck(struct Expression *expr, struct Expression *src, SLONG low,
- SLONG high);
-#ifdef GAMEBOY
-void rpn_CheckHRAM(struct Expression *expr, struct Expression *src1);
-#endif
-#ifdef PCENGINE
-void rpn_CheckZP(struct Expression *expr, struct Expression *src);
-#endif
-
-#endif
--- a/src/asm/include/symbol.h
+++ /dev/null
@@ -1,67 +1,0 @@
-#ifndef SYMBOL_H
-#define SYMBOL_H 1
-
-#include "types.h"
-
-#define HASHSIZE 73
-#define MAXSYMLEN 256
-
-struct sSymbol {
- char tzName[MAXSYMLEN + 1];
- SLONG nValue;
- ULONG nType;
- struct sSymbol *pScope;
- struct sSymbol *pNext;
- struct Section *pSection;
- ULONG ulMacroSize;
- char *pMacro;
- SLONG(*Callback) (struct sSymbol *);
-};
-
-#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 */
-
-void sym_PrepPass1(void);
-void sym_PrepPass2(void);
-void sym_AddLocalReloc(char *tzSym);
-void sym_AddReloc(char *tzSym);
-void sym_Export(char *tzSym);
-void sym_PrintSymbolTable(void);
-struct sSymbol *sym_FindMacro(char *s);
-void sym_InitNewMacroArgs(void);
-void sym_AddNewMacroArg(char *s);
-void sym_SaveCurrentMacroArgs(char *save[]);
-void sym_RestoreCurrentMacroArgs(char *save[]);
-void sym_UseNewMacroArgs(void);
-void sym_FreeCurrentMacroArgs(void);
-void sym_AddEqu(char *tzSym, SLONG value);
-void sym_AddSet(char *tzSym, SLONG value);
-void sym_Init(void);
-ULONG sym_GetConstantValue(char *s);
-void sym_Import(char *tzSym);
-ULONG sym_isConstant(char *s);
-struct sSymbol *sym_FindSymbol(char *tzName);
-void sym_Global(char *tzSym);
-char *sym_FindMacroArg(SLONG i);
-char *sym_GetStringValue(char *tzSym);
-void sym_UseCurrentMacroArgs(void);
-void sym_SetMacroArgID(ULONG nMacroCount);
-ULONG sym_isString(char *tzSym);
-void sym_AddMacro(char *tzSym);
-void sym_ShiftCurrentMacroArgs(void);
-void sym_AddString(char *tzSym, char *tzValue);
-ULONG sym_GetValue(char *s);
-ULONG sym_GetDefinedValue(char *s);
-ULONG sym_isDefined(char *tzName);
-void sym_Purge(char *tzName);
-ULONG sym_isConstDefined(char *tzName);
-
-#endif
--- a/src/asm/include/types.h
+++ /dev/null
@@ -1,18 +1,0 @@
-#ifndef TYPES_H
-#define TYPES_H 1
-
-#if defined(AMIGA) || defined(__GNUC__)
-#define _MAX_PATH 512
-#endif
-
-typedef unsigned char UBYTE;
-typedef signed char SBYTE;
-typedef unsigned short UWORD;
-typedef signed short SWORD;
-typedef unsigned long ULONG;
-typedef signed long SLONG;
-
-#define ASM_LITTLE_ENDIAN 0
-#define ASM_BIG_ENDIAN 1
-
-#endif
--- a/src/asm/lexer.c
+++ b/src/asm/lexer.c
@@ -1,10 +1,11 @@
-#include "asm.h"
-#include "lexer.h"
-#include "types.h"
-#include "main.h"
-#include "rpn.h"
-#include "asmy.h"
-#include "fstack.h"
+#include "asm/asm.h"
+#include "asm/lexer.h"
+#include "asm/types.h"
+#include "asm/main.h"
+#include "asm/rpn.h"
+#include "asm/asmy.h"
+#include "asm/fstack.h"
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
--- a/src/asm/main.c
+++ b/src/asm/main.c
@@ -10,10 +10,11 @@
#include <time.h>
#include <math.h>
#include <string.h>
-#include "symbol.h"
-#include "fstack.h"
-#include "output.h"
-#include "main.h"
+
+#include "asm/symbol.h"
+#include "asm/fstack.h"
+#include "asm/output.h"
+#include "asm/main.h"
int yyparse(void);
void setuplex(void);
--- a/src/asm/math.c
+++ b/src/asm/math.c
@@ -7,9 +7,10 @@
#include <math.h>
#include <stdio.h>
-#include "types.h"
-#include "mymath.h"
-#include "symbol.h"
+
+#include "asm/types.h"
+#include "asm/mymath.h"
+#include "asm/symbol.h"
#define fix2double(i) ((double)(i/65536.0))
#define double2fix(d) ((SLONG)(d*65536.0))
--- a/src/asm/output.c
+++ b/src/asm/output.c
@@ -8,13 +8,14 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include "asm.h"
-#include "output.h"
-#include "symbol.h"
-#include "mylink.h"
-#include "main.h"
-#include "rpn.h"
-#include "fstack.h"
+
+#include "asm/asm.h"
+#include "asm/output.h"
+#include "asm/symbol.h"
+#include "asm/mylink.h"
+#include "asm/main.h"
+#include "asm/rpn.h"
+#include "asm/fstack.h"
#define SECTIONCHUNK 0x4000
--- a/src/asm/rpn.c
+++ b/src/asm/rpn.c
@@ -5,15 +5,15 @@
*
*/
-#include "mylink.h"
-#include "types.h"
-#include "symbol.h"
-#include "asm.h"
-#include "main.h"
-#include "rpn.h"
-
#include <stdio.h>
#include <string.h>
+
+#include "asm/mylink.h"
+#include "asm/types.h"
+#include "asm/symbol.h"
+#include "asm/asm.h"
+#include "asm/main.h"
+#include "asm/rpn.h"
void mergetwoexpressions(struct Expression *expr, struct Expression *src1,
struct Expression *src2)
--- a/src/asm/symbol.c
+++ b/src/asm/symbol.c
@@ -8,11 +8,12 @@
#include <stdio.h>
#include <string.h>
#include <time.h>
-#include "asm.h"
-#include "symbol.h"
-#include "main.h"
-#include "mymath.h"
-#include "output.h"
+
+#include "asm/asm.h"
+#include "asm/symbol.h"
+#include "asm/main.h"
+#include "asm/mymath.h"
+#include "asm/output.h"
/*
* RGBAsm - SYMBOL.C - Symboltable stuff
--- a/src/asm/yaccprt1.y
+++ b/src/asm/yaccprt1.y
@@ -1,17 +1,18 @@
%{
-#include "symbol.h"
-#include "asm.h"
-#include "output.h"
-#include "mylink.h"
-#include "fstack.h"
-#include "mymath.h"
-#include "rpn.h"
-#include "main.h"
-#include "lexer.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
+
+#include "asm/symbol.h"
+#include "asm/asm.h"
+#include "asm/output.h"
+#include "asm/mylink.h"
+#include "asm/fstack.h"
+#include "asm/mymath.h"
+#include "asm/rpn.h"
+#include "asm/main.h"
+#include "asm/lexer.h"
char *tzNewMacro;
ULONG ulNewMacroSize;