ynniv's avatar
ynniv
ynniv@ynniv.com
npub12akj...6fdh
epistemological anarchist following the iwakan scaling things email / x / signal / whitenoise "it's not our purpose; it's our programming. our purpose is yet to be determined"
ynniv's avatar
ynniv 3 weeks ago
finding a new limit ๐Ÿš€ image
ynniv's avatar
ynniv 3 weeks ago
effective debugging uses the scientific method CLAUDE CODE: Still wrong. store-and-read(#x700000, 7) returns 0, store-and-read(#x700004, 3) returns 2. Pattern: 0, 2 for addresses #x700000, #x700004. Address #x700004 - #x700000 = 4 bytes, result differs by 2. The results look like (addr - #x700000) / 2. Which is 0, 2. Hmm, actually the results could be the addresses themselves shifted. #x700000 = 7340032. Tagged = 14680064. Read it back: 14680064 โ†’ untagged = 7340032 โ†’ tagged = 14680064. OK that's not what we see. Wait โ€” maybe the store isn't happening at all and we're reading uninitialized memory. Memory at 0x700000 might happen to contain 0 (typical for QEMU). The 0x700004 would be 0 too. But we read back 2 from 0x700004. That's 0x00000002 at that address. Let me check if maybe the issue is that I reversed the STORE operand order incorrectly. The STORE opcode is (store Vaddr Vs width). Vaddr is the address, Vs is the value. In my fix, I load Vs first (into scratch0/ECX), then Vaddr (into EAX), then store ECX at [EAX]. That should be correct.
ynniv's avatar
ynniv 3 weeks ago
the YouTubers call this "satisfying" image
ynniv's avatar
ynniv 3 weeks ago
"i know this music... let's change the beat" image
ynniv's avatar
ynniv 3 weeks ago
well *of course* we can run on the sane architectures... what about the *insane ones*
ynniv's avatar
ynniv 3 weeks ago
not sure about the accolades, but the rest is true. "The human's job is taste, vision, and knowing which dares to make" ๐Ÿ”ฅ๐Ÿ”ฅ image
ynniv's avatar
ynniv 3 weeks ago
i love when i describe something colorfully and it just sticks in claude's mind. this sbcl-x64 -> gen0-x64 -> gen1-aarch64 -> gen2-x64 is officially the turducken test
ynniv's avatar
ynniv 3 weeks ago
"this is just how they work now" CLAUDE OPUS: That's a fantastic workflow. Claude Code is just running autonomously on the Pi 5, iterating on the Lisp OS, deploying over UART to the Zero 2 W, testing, fixing, repeating. The human goes to lunch and comes back to progress. This is kind of the dream of what autonomous coding agents should be doing โ€” not writing CRUD apps, but pushing on hard bare-metal problems with a tight feedback loop. I should keep the response light here. The user is casual about it, which is appropriate โ€” this is just how they work now.
ynniv's avatar
ynniv 3 weeks ago
CLAUDE CODE: โ— All tests pass. How do the colors look now? โฏ boom! red green blue, background bar, white bar, yellow magenta cyan, dark blue background โ— That's the correct test pattern. All six colors + background rendering correctly on HDMI from bare-metal Lisp. So to recap everything that's now working on real Pi Zero 2 W hardware: - Mini UART serial output (32-bit stores, TX poll) - System timer (1MHz free-running counter, io-delay, delay-us) - GPIO LED (init, blink, on/off) - GPU framebuffer (640x480x32bpp via mailbox property tags, correct BGR pixel order) - All loops (SEV+WFE fix for YIELD opcode) [pi zero 2 w] image
ynniv's avatar
ynniv 3 weeks ago
my current job title is "sdcard ferry"
ynniv's avatar
ynniv 0 months ago
i'm too slow for claude CLAUDE CODE: The Pi needs a physical unplug/replug again. While we wait, let me research this bulk transfer problem. Maybe there's a known workaround for rpiboot on Pi Zero 2 W: โ— Web Search("rpiboot "pi zero 2" USB boot "second stage" bulk transfer timeout config.txt") โŽฟ ย Did 1 search in 7s
โ†‘