Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I'm assuming your master-64tass is the correct branch to be working from (you had mentioned keeping the Ophis version as master for bugfixes only). After we take care of some of the open issues, we could look at how we want to manage the repository when we do a v1.1 kind of release. I think eventually master should become the tass64 version, but I understand that it could be a large disruption for folks already using Tali2 and it would probably be best to wait until releasing a new version to do that.
tass64 has a bunch of good features and I think it's a good fit for conditional compilation. I created a
TALI_OPTIONAL_WORDS
variable that has a list of the words you can remove. See the py65mon platform file for details. If you omit this variable (eg. all of the other current platform files) then it just compiles everything.So far, the following words and sets of words can be optionally selected or deselected:
"ed", "editor", "ramdrive", "block", "environment?", "assembler", "wordlist"
If you deselect everything, Tali2 shrinks from 22K to just under 15K. Now that I have the hang of it, we could make other sets of words optional as well, but I think this is a good start. There's enough room to have a basic kernel for I/O and still fit in a 16K ROM.
I did have to turn several of the word lists around in headers.asm, as the method I used to make words optional works best with each word linking to the one after it. The assembler already looked to be in that order, and I just made the entire thing optional.
I also updated generate_wordlist.py to gracefully handle missing words (it just marks them "missing" when reporting their size).
This is leaning pretty heavily on the tass64 feature set and won't be super easy to port to another assembler - I think I'm OK with that because tass64 is super-easy to compile from source and has almost no dependancies, so it will actually be easier to get running than Ophis in that regard.