This game (still) rocks.
I binge-completed the first four chapters some time in 2014, did the next four in 2016, and then sadly let the project of finishing "Software Foundations" sit idle for almost ten years. :(
Well, any time is infinitely better than never, so here I go with the significantly expanded 2025 edition!
https://softwarefoundations.cis.upenn.edu/
Image warning: Screenshot spoils the solution to one exercise.
And we have a clock. Never mind the ringing, it'll be fine!
Aside from the wonderful jank wiring job, this took me learning how to program the CH32V003. It was a bit of a struggle because I wanted to do it in minimal plain assembly. I had to glean a lot from disassembled C code from ch32fun (which is already a boiled-down environment for it). The official datasheet and reference manual, while not terrible, are lacking in parts and not always written in clear English. I also learned to write a linker script because I wasn't going to use any of that bloated C rubbish. As for the programming software (minichlink), I just opted for now to use a Linux host via ssh for writing to the chip.
Code to follow. ;)
Neue Möglichkeiten zur Herstellung von Papierartefakten.
New possibilities for the production of paper artefacts.
Review my paper.
After three (?) years and 624 instructions, I have reached the point where the assembler actually assembles something. :)
The ASMDST routine reads the optional first part of an instruction that names the destination registers, e.g. "ADM=", and sets corresponding bits in the global variable that holds the instruction being assembled.
Finally getting back into machine code papercraft. This one even worked on the first try!
It's amazing how much "this is how you work on paper" I need to rediscover. Stuff like not caring about how much scratch paper, scribbled notes, and rough drafts are produced on the way only to be discarded. More obvious things such as how to draw a flow-chart again were not the real hurdle.
Anyway, for those not following along, this is for my solution to chapter 6 "Assembler" of the #nand2tetris book. And no, doing it with pen & paper, or in assembly for that matter, was not suggested. ![]()
call me an amateur, a luddite, or plain lame, but I got annoyed with the UI of every other reverse engineering tool available to me, so this is how I work now, OK?
(not asking for tool recommendations, thanks)
New #troff project: a character sheet for the #Lancer #RPG because I think the official one is not quite up to scratch. Aimed to mix the original "clean technofuturist" style with the monochrome paperwork aesthetics of #Traveller that I like so much. Tell me what you think.
BTW, font used is TeX Gyre Heros, a very exact stand-in for the original's Helvetica.
Next side project...
The ESP32-P4 on the #why2025 badge seems quite nice, but I am not at all fond of the enormous vendor SDK (esp-idf) and the specifics of the chip's boot process are surprisingly underdocumented.