I started my assembler last night and got the scanner part working with a very basic parser for initial testing. Next is full-on parsing and the beginning of code generation. What I really need to know is how each of these directives is supposed to operate:
AORG - I'm pretty sure I'm clear on this one, but it is nice to make sure.
DORG - I just got a glimpse of using this from Willsy, but having something in stone would be nice.
RORG - Again, I *think* I understand what it does, but I'd like confirmation
PSEG, DSEG, CSEG. If the AORG, DORG, RORG are working, I don't understand why these are needed?
UNL, LIST, PAGE, TITL, IDT. Is there any reason to support these other than recognizing and ignoring the tokens?
Enhancements I'm planning to add:
* Local labels between two new directives: LOCAL and LEND (Local END)
* Long label names - up to about 80 characters
* Alternate comment tokens (C and C++ style) that can be used anywhere, including commenting out blocks of code: // /* */ ;
* No fixed label, command, operand, and comment fields which means code can start at the left edge or be better indented along with comments
* Support for the even/odd byte format in separate output binary files that is required to make custom system ROMs
* Not case sensitive
I'm writing this in POSIX C and plan to make binaries available for Unix, Win, and MAC platforms, and I'll see about a GUI. Comments, suggestions, and feedback are appreciated.
Matthew















