Rendered at 23:36:07 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
Joker_vD 6 hours ago [-]
Ah, detached "while" as a replacement for if-guarded "break". A concept that, syntactically, can very easily be fitted onto ALGOL/Pascal-like languages but not onto the C-likes:
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!
ms-fellag 7 hours ago [-]
If you want a "brief" history tour of the COSMAC Hardware under Chip-8 (From the ELF to the VIP) and the man behind it all (Joseph Weisbecker) then you're in luck because @TechTimeTraveller has just dropped a video on the subject https://www.youtube.com/watch?v=H3Pdf8iRw5E (the history part ends around the 17min mark).
Froztnova 7 hours ago [-]
Hah, I wrote an interpreter for this in C years back after hearing that it was a good first project for people who have an interest in virtual machines and emulation.
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.
hgoel 7 hours ago [-]
Brings back memories of writing a Chip-8 emulator when bored out of my mind in an introductory programming class in undergrad. It's such an underrated project.
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.
enygmata 4 hours ago [-]
When I was writing my own CHIP-8 emulator I struggled to find info on timings as info on the COSMAC VIP was scarce. I resorted to arbitrary sleeping which solved most of the issued for the roms I tried back then.
I wrote an interpreter in Zig not too long ago. I’d definitely recommend more folks try it out. It’s a straight-forward enough project to dip your toes in emulation and see if it’s your jam. And it’s not a big enough project that you’ll get overwhelmed before you finish.
dhosek 6 hours ago [-]
I was thinking that this was included in the Apple ][ Integer BASIC ROM, but when I checked it was Woz’s own special instruction set, SWEET-16 which gave compact (if slow) ability to do 16-bit coding on the 6502.
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.
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!
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.
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.