X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=token.h;h=88d278f11db5f240aa793ac4570e7d4fa83a3147;hp=eaa7edbf25d5b1a5748f1f34bed8e8ea14d854d4;hb=5f23454f7155f0c77ea1bede3f9e60b39da99fa8;hpb=daf2f61a3664329ae7f9609e1e14da2b8780fd10 diff --git a/token.h b/token.h index eaa7edb..88d278f 100644 --- a/token.h +++ b/token.h @@ -1,16 +1,15 @@ // // RMAC - Reboot's Macro Assembler for the Atari Jaguar Console System // TOKEN.H - Token Handling -// Copyright (C) 199x Landon Dyer, 2011 Reboot and Friends +// Copyright (C) 199x Landon Dyer, 2017 Reboot and Friends // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986 -// Source Utilised with the Kind Permission of Landon Dyer +// Source utilised with the kind permission of Landon Dyer // #ifndef __TOKEN_H__ #define __TOKEN_H__ #include "rmac.h" -//#include "risca.h" // Include Files and Macros #define SRC_IFILE 0 // Input source is IFILE @@ -26,7 +25,7 @@ #define IFENT struct _ifent // Tunable definitions -#define LNSIZ 256 // Maximum size of a line of text +#define LNSIZ 1024 // Maximum size of a line of text #define TOKBUFSIZE 400 // Size of token-line buffer #define QUANTUM 4096L // # bytes to eat at a time from a file #define LNBUFSIZ (QUANTUM*2) // Size of file's buffer @@ -44,17 +43,21 @@ #define SET 149 // Set #define REG 'R' // Reg #define DCOLON 'h' // :: -#define GE 'i' // >= -#define LE 'j' // <= -#define NE 'k' // <> or != -#define SHR 'l' // >> -#define SHL 'm' // << -#define UNMINUS 'n' // Unary '-' -#define DOTB 'B' // .b or .B or .s or .S -#define DOTW 'W' // .w or .W -#define DOTL 'L' // .l or .L -#define DOTI 'I' // .l or .L -#define ENDEXPR 'E' // End of expression +#define GE 'i' // >= +#define LE 'j' // <= +#define NE 'k' // <> or != +#define SHR 'l' // >> +#define SHL 'm' // << +#define UNMINUS 'n' // Unary '-' +#define DOTB 'B' // .b or .B or .s or .S +#define DOTW 'W' // .w or .W +#define DOTL 'L' // .l or .L +#define DOTI 'I' // .l or .L +#define DOTX 'X' // .x or .X +#define DOTD 'D' // .d or .D +#define DOTP 'P' // .p or .P +#define DOTQ 'Q' // .q or .Q (essentially an alias for P) +#define ENDEXPR 'E' // End of expression // ^^ operators #define CR_DEFINED 'p' // ^^defined - is symbol defined? @@ -63,6 +66,7 @@ #define CR_MACDEF 'w' // ^^macdef - is macro defined? #define CR_TIME 'x' // ^^time - DOS format time #define CR_DATE 'y' // ^^date - DOS format date +#define CR_ABSCOUNT 'z' // ^^abscount - count the number of bytes defined in curent .abs section // Character Attributes #define ILLEG 0 // Illegal character (unused) @@ -104,7 +108,7 @@ IFILE { char * ifoldfname; // Old file's name int ifoldlineno; // Old line number int ifind; // Position in file buffer - int ifcnt; // #chars left in file buffer + int ifcnt; // #chars left in file buffer int ifhandle; // File's descriptor WORD ifno; // File number char ifbuf[LNBUFSIZ]; // Line buffer @@ -112,14 +116,13 @@ IFILE { #define TOKENSTREAM struct _tokenstream TOKENSTREAM { - TOKEN token[10]; // 10 ought to be enough for anybody - char * string[10]; // same for attached strings + TOKEN token[32]; // 32 ought to be enough for anybody (including XiA!) + char * string[32]; // same for attached strings }; // Information about a macro invocation IMACRO { IMACRO * im_link; // Pointer to ancient IMACROs -// LONG * im_nextln; // Next line to include struct LineList * im_nextln; // Next line to include WORD im_nargs; // # of arguments supplied on invocation WORD im_siz; // Size suffix supplied on invocation @@ -137,9 +140,9 @@ IREPT { VALUE ir_count; // Repeat count (decrements) }; -// Globals, externals etc +// Exported variables extern int lnsave; -extern int curlineno; +extern uint16_t curlineno; extern char * curfname; extern WORD cfileno; extern TOKEN * tok; @@ -147,21 +150,18 @@ extern char lnbuf[]; extern char lntag; extern char tolowertab[]; extern INOBJ * cur_inobj; -extern unsigned orgactive; -extern unsigned orgaddr; -extern LONG sloc; extern int mjump_align; extern char * string[]; -// Prototypes +// Exported functions int include(int, char *); -void init_token(void); -void setfnum(WORD); -int tokln(void); +void InitTokenizer(void); +void SetFilenameForErrorReporting(void); +int TokenizeLine(void); int fpop(void); int d_goto(WORD); -//int d_goto(void); INOBJ * a_inobj(int); void DumpTokenBuffer(void); #endif // __TOKEN_H__ +