Back when the 6502 was introduced, RAM was actually faster than microprocessors, so it made sense to optimize for RAM access rather than increase the number of registers on a chip.
"All problems in computer science can be solved by another level of indirection, except for the problem of too many layers of indirection." -- David John Wheeler
I think it's a false dichotomy, recall that this was a time when hand assembly was still commonplace. Regardless of what the tools, or even the documentation called something, in the end what mattered to competent low-level programmers were the capabilities, affordances, and tradeoffs on offer from ...
Welcome, Mark! An interesting quest, to be sure. And rather jumping in at the deep end of deterministic runtime, to pick the 2600. But I look forward to seeing some ingenious ideas.
You might find the resources linked here useful, if any are new to you: https://alienbill.com/2600/
Nice! I use the HP-41cx regularly. It doesn't have as many computer-science functions as the 16c, but my Advantage module has the base conversions and boolean functions, 32-bit, which is adequate for me. There is another module that just came out in the last couple of years that does the 16c stuff ...
The reason I'm keen on mask generators is that, in the display kernel of a 2600 game, I'd like to avoid branches wherever I can easily do so, since all control flow paths will need to be balanced to consume the exact same number of cycles, and ballasting branches is a pain.
What's the 00/FF thing for? [...] In Forth-83 test/query words returned -1/0, Forth-79 and Fig-Forth used 1/0. Although I'm not a fan of the later ANS-Forth, I adopted some of the controversial changes of '83, particularly the -1/0 test results and the use of floored division.
I always welcome new tricks, but I can't imagine you'll be able to do this quite the way you had hoped. C is the only flag you can do this kind of thing with, so without conditional branches or tables, you're probably confined to PHP, PLA, and shifting the desired position into the C flag ...
Welcome, Mark, and congratulations on ending your very long hiatus!
Here are two possible approaches. I'm pretty sure I understand what we're trying to achieve. But I'm less sure I've gotten all the details correct, as it's late and I'm getting sleepy! Maybe this will at least help you get started ...