TODO ---- While functional, there's a lot still to be added or considered. This list is not necessarily complete, and in some regards just acts as a scratch pad for me to remember things that need doing. ### Medium priority * **ENDM** argument could match the opening MACRO if specified. * Check all symbols are valid. After variable substitution (e.g., in macros), they might end up containing invalid characters. * Structs. * Functions. I already have an expression evaluator, so why not? * Replace simple opcode strings with a new opcode node type - eliminate many strcasecmp()s. * **SET** should perhaps be incompatible with other assignments. ### Low priority * **INCLUDE** could push arguments as new positional variables. * **EQU** could permit any value, including lists. A list could expand in-place somehow. * Should **DP** default to zero, not disabled? * Ability to specify maximum number of passes. * As it stands, section names need to be quoted - can this requirement be lifted? Similarly when pasting macro args - maybe pass a simplified ID? * 6800, 6801, 6803 ISA support. * Support the extended syntax pseudo-ops from the Perl version. * For CoCo3 and others, destination addresses could usefully be outside the 64K range. * The limitation on inclusion and macro expansion occurring in the first pass could be lifted. Should just be able to clear all local label tables whenever an expansion occurs in a later pass, and then trigger another one.