X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=token.h;h=58ffc0a1e79623ed2f3f59149bec26c14e67e836;hp=501f1eaaca237be8c6dfec97c230c6bccbba4789;hb=03dd34951a331e0b8971195ccef1600fffaea2e6;hpb=d0c28c349ddfb8393568037f68bddbe8979ce0df diff --git a/token.h b/token.h index 501f1ea..58ffc0a 100644 --- a/token.h +++ b/token.h @@ -1,7 +1,7 @@ // -// RMAC - Reboot's Macro Assembler for the Atari Jaguar Console System +// RMAC - Reboot's Macro Assembler for all Atari computers // TOKEN.H - Token Handling -// Copyright (C) 199x Landon Dyer, 2011 Reboot and Friends +// Copyright (C) 199x Landon Dyer, 2011-2017 Reboot and Friends // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986 // Source utilised with the kind permission of Landon Dyer // @@ -25,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 @@ -43,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? @@ -62,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) @@ -103,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 @@ -111,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 @@ -136,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; @@ -146,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 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__ +