summaryrefslogtreecommitdiff
path: root/asmmon.h
diff options
context:
space:
mode:
Diffstat (limited to 'asmmon.h')
-rw-r--r--asmmon.h53
1 files changed, 40 insertions, 13 deletions
diff --git a/asmmon.h b/asmmon.h
index 059d801..10c52e3 100644
--- a/asmmon.h
+++ b/asmmon.h
@@ -47,7 +47,7 @@ struct ln {
struct ln *next; /* Pointer to the next line. */
struct tok *tok; /* The token(s) for this line. */
uint16_t count; /* Total tokens for this line. */
- uint16_t linenum; /* Line number. */
+ uint32_t linenum; /* Line number. */
uint64_t addr; /* The address of this line. */
uint8_t stab; /* Number of starting tabs. */
uint8_t sspace; /* Number of starting spaces. */
@@ -101,9 +101,10 @@ enum token {
TOK_LABEL,
TOK_SYM,
TOK_EXPR,
- TOK_COMMA,
+ TOK_CSV,
TOK_STRING,
TOK_CHAR,
+ TOK_IND,
TOK_IMM,
TOK_OPCODE,
TOK_RS,
@@ -114,6 +115,30 @@ enum token {
TOK_INCLUDE
};
+enum proto_token {
+ PTOK_DOT,
+ PTOK_COLON,
+ PTOK_EQU,
+ PTOK_PLUS,
+ PTOK_MINUS,
+ PTOK_GT,
+ PTOK_LT,
+ PTOK_LBRACK,
+ PTOK_RBRACK,
+ PTOK_COMMA,
+ PTOK_X,
+ PTOK_Y,
+ PTOK_DQUOTE,
+ PTOK_SQUOTE,
+ PTOK_HASH,
+ PTOK_SCOLON,
+ PTOK_DOLLAR,
+ PTOK_PERCENT,
+ PTOK_NUMBER,
+ PTOK_ALPHA,
+ PTOK_OTHER
+};
+
enum expr {
EXPR_PLUS,
EXPR_MINUS,
@@ -230,22 +255,23 @@ static const char *rs_t[4] = {
[3] = ".q"
};
-static const char *lex_tok[15] = {
+static const char *lex_tok[16] = {
[0x0] = "TOK_DIR",
[0x1] = "TOK_LABEL",
[0x2] = "TOK_SYM",
[0x3] = "TOK_EXPR",
- [0x4] = "TOK_COMMA",
+ [0x4] = "TOK_CSV",
[0x5] = "TOK_STRING",
[0x6] = "TOK_CHAR",
- [0x7] = "TOK_IMM",
- [0x8] = "TOK_OPCODE",
- [0x9] = "TOK_RS",
- [0xA] = "TOK_COMMENT",
- [0xB] = "TOK_HEX",
- [0xC] = "TOK_DEC",
- [0xD] = "TOK_BIN",
- [0xE] = "TOK_INCLUDE"
+ [0x7] = "TOK_IND",
+ [0x8] = "TOK_IMM",
+ [0x9] = "TOK_OPCODE",
+ [0xA] = "TOK_RS",
+ [0xB] = "TOK_COMMENT",
+ [0xC] = "TOK_HEX",
+ [0xD] = "TOK_DEC",
+ [0xE] = "TOK_BIN",
+ [0xF] = "TOK_INCLUDE"
};
static const char *adrmode[9] = {
@@ -466,6 +492,7 @@ extern uint16_t lineidx;
extern uint16_t stridx;
extern uint16_t comidx;
extern uint16_t inc_file; /* Number of included files. */
+extern uint16_t inc_count;
struct bc {
uint64_t progsize;
@@ -485,7 +512,7 @@ extern char *get_symname(uint16_t id, uint8_t dbg);
extern uint16_t get_symid(const char *name, uint64_t val, token *t, uint8_t dbg);
extern uint16_t get_comment(const char *cmnt, uint8_t dbg);
extern uint16_t reslv_fixups(uint8_t dbg);
-extern line *find_line(uint16_t ln, uint8_t dbg);
+extern line *find_line(uint32_t ln, uint8_t dbg);
extern uint64_t lex(char *str, uint64_t address, uint8_t dbg);
extern uint64_t parse_tokens(token *tm, bytecount *bc, uint8_t isasm, uint64_t address, uint8_t dbg);