//
-// RMAC - Reboot's Macro Assembler for the Atari Jaguar Console System
+// RMAC - Renamed Macro Assembler for all Atari computers
// SYMBOL.H - Symbol Handling
-// Copyright (C) 199x Landon Dyer, 2017 Reboot and Friends
+// Copyright (C) 199x Landon Dyer, 2011-2021 Reboot and Friends
// RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986
// Source utilised with the kind permission of Landon Dyer
//
#include <inttypes.h>
// Line lists
-struct LineList
+#define LLIST struct _llist
+LLIST
{
- struct LineList * next;
+ LLIST * next;
uint8_t * line;
+ int lineno;
};
// Symbols
#define SYM struct _sym
SYM
{
- SYM * snext; // * -> Next symbol on hash-chain
- SYM * sorder; // * -> Next sym in order of reference
- SYM * sdecl; // * -> Next sym in order of declaration
- uint8_t stype; // Symbol type
- uint16_t sattr; // Attribute bits
- uint32_t sattre; // Extended attribute bits
- uint16_t senv; // Enviroment number
- uint32_t svalue; // Symbol value
- uint8_t * sname; // * -> Symbol's print-name
- struct LineList * lineList; // * -> Macro's linked list of lines
- struct LineList * last; // * -> end of macro linked list
- uint32_t uid; // Symbol's unique ID
+ SYM * snext; // * -> Next symbol on hash-chain
+ SYM * sorder; // * -> Next sym in order of reference
+ SYM * sdecl; // * -> Next sym in order of declaration
+ uint8_t stype; // Symbol type
+ uint16_t sattr; // Attribute bits
+ uint32_t sattre; // Extended attribute bits
+ uint16_t senv; // Enviroment number
+ uint64_t svalue; // Symbol value (now 64-bit)
+ uint8_t * sname; // * -> Symbol's print-name
+ LLIST * lineList; // * -> Macro's linked list of lines
+ LLIST * last; // * -> end of macro linked list
+ uint32_t uid; // Symbol's unique ID
};
// Exported variables
int symtable(void);
uint32_t sy_assign(uint8_t *, uint8_t *(*)());
uint32_t sy_assign_ELF(uint8_t *, uint8_t *(*)());
+void DumpLODSymbols(void);
uint8_t * GetSymbolNameByUID(uint32_t);
#endif // __SYMBOL_H__