I can now End Pumping. 💪​

This was pretty fun, but phew - lengthy. Proving the (regular) pumping lemma in Coq.

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!

softwarefoundations.cis.upenn.

Image warning: Screenshot spoils the solution to one exercise.

This is my first program, bona fide, for the C64! Alas, not written _on_ it which y'all will hopefully excuse, given how the good old boy has neither screen nor keyboard at this time. Also, it's as yet untested, so, probably not correct. :)

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. ;)

Got my WCH programmer working. (Linux only unfortunately.) Now what did I need this for...

Neue Möglichkeiten zur Herstellung von Papierartefakten.
New possibilities for the production of paper artefacts.

Review my paper.


The box contains a BASIC programming course on audio cassette, from East Germany.

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.

For the record. My first Plan 9 installation since what must have been the year 2000. :)

SDF Plan 9 Bootcamp starts this week and I am getting ready.

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 book. And no, doing it with pen & paper, or in assembly for that matter, was not suggested. :flan_think:

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? :crt_w_prompt:

(not asking for tool recommendations, thanks)

New project: a character sheet for the 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 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 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.

Show older
BSD Network

bsd.network is a *BSD-adjacent Mastodon Instance. We have a code of conduct.