I think I actually used some of the diagnosis/test suite ROMs that the author linked to smooth out the last few issues my implementation had.
I also implemented the quirk flags and made them GUI-toggleable.
loop stmt1; while condA; stmt2; while condB; stmt again
loop while condA; stmt again
loop stmt; while condA again
How do you fit that into {}-bracketed blocks elegantly?More on the topic of the article itself, don't you just love quirks of the older emulators that you, as an emulator writer, now have to support because everybody else expects them? What about the quirks that half of those "everybody" expect to exist, while the other half expects the opposite behaviour? And of course, as the application writer, you know have to know about and stay away from those quirks. Arcane trivia FTW!
Producing something that can actually run some full games in a first/second year undergrad class would do so much for how seriously students might take the CS/CE curriculum.
It had a JIT recompiler based on sljit.
These sorts of things are loads of fun to implement to get a closer feel to bare-metal programming. XKCD published a 16-bit “CPU” machine language 15ish years ago and I remember everyone was rushing to do code golf implementations of it, although I think a slower-paced approach to the project is better for the educational aspects.