I would like to take this chance to mention the excellent https://github.com/rust-console/gba crate, which is a very useful zero-cost Rust abstraction layer you can use instead of the C compiler in the devkitPro GBA toolchain (and would be especially good for programming systems things like emulators, for the GBA.)
If you have some low-level C knowledge, but have never seen bare-metal programming done in Rust, it’s really quite a difference in approach; despite your statements compiling down to banging physical memory pointers and MMIO registers together, it feels quite safe—with a proper library helping you out, it becomes quite hard to put the system into a wedged state, for no runtime cost. You can’t even put bitflag registers into invalid states!
6502asm is a neat little project. I'm not sure it's early enough to be the first "fantasy console", though. :)
While the term was popularized by PICO-8[0], I think you could make a case for the CHIP-8[1] virtual machine circa 1977. I've built some tools[2] and games for CHIP-8, so I'm admittedly a bit biased. My user community is even running a CHIP-8 themed game jam this month- I can plug the details if anyone is interested.
Firstly with regards to the article, this is a neat environment and simple project, but lacks niceties even basic hardware such as the Atari VCS featured, including sprite handling and collisions thereof. When I start developing 6502 games, I expect to start with the Atari VCS or NES/Famicom platform, neither of which I believe have a true framebuffer. One noteworthy and fundamental difference between these sets of environments that's particularly interesting is that this 6502asm is capable of modifying its own code, whereas the other two environments mentioned use ROM and so lack this. As for its age, it seems younger than twenty years and so certainly wouldn't qualify as a first.
Secondly, with regards to RodgerTheGreat, it's interesting to see one of your messages here. I'm not certain I'd mark CHIP-8 as the first, but that's due primarily to my not being aware of any older virtual machines used for games, discounting any games on, say, the DEUCE. I've participated in this game jam, as well as the last, so I expect my submission has been properly submitted; here's to at least one other game I submit.
If you have some low-level C knowledge, but have never seen bare-metal programming done in Rust, it’s really quite a difference in approach; despite your statements compiling down to banging physical memory pointers and MMIO registers together, it feels quite safe—with a proper library helping you out, it becomes quite hard to put the system into a wedged state, for no runtime cost. You can’t even put bitflag registers into invalid states!