12 July 2025 - 18 July 2025
Table of Contents
- 1. LECTURES IN DISCRETE MATHEMATICS
- 2. GMPASM assembler
- 3. word lists
- 3.1. bay cay day fay gay hay jay lay may nay pay ray say way
- 3.2. bot cot dot got hot jot lot mot not pot rot sot tot wot
- 3.3. cob cod cog col com con coo cop cor cos cot cow cox coy
- 3.4. bags dags fags gags hags jags lags mags nags rags sags tags wags
- 3.5. bays cays days fays gays hays jays lays nays pays rays says ways
- 3.6. bobs cobs dobs fobs gobs hobs jobs lobs mobs nobs robs sobs yobs
- 3.7. cine dine fine kine line mine nine pine sine tine vine wine zine
- 3.8. bears dears fears gears hears nears pears rears sears tears wears years
- 3.9. bills dills fills gills hills kills mills pills rills sills tills wills
- 3.10. dines fines kines lines mines nines pines sines tines vines wines zines
- 3.11. dipped hipped kipped lipped nipped pipped ripped sipped tipped yipped zipped
- 3.12. bailing failing hailing jailing mailing nailing railing sailing tailing wailing
- 3.13. bending fending lending mending pending rending sending tending vending wending
- 3.14. dipping hipping kipping nipping pipping ripping sipping tipping yipping zipping
- 3.15. bounding founding hounding mounding pounding rounding sounding wounding
- 3.16. battering mattering nattering pattering tattering
- 3.17. dustiness fustiness lustiness mustiness rustiness
- 3.18. scattering shattering smattering spattering swattering
- 4. SJ grounds
- 5. SCZ Door Sill
- 6. Alcove light
- 7. TRNG-JB
- 8. Programmable power supply
- 9. non-Vivado xilinx workflow
- 10. Raspberry Pi Pico
- 11. Sonic Fiber
- 12. Night Light
- 13. Sparkfun Addressable LED
- 14. Stalled project review
- 15. GMPForth
- 16. Lapuz Peking/Panerus
- 17. Mill
- 18. EDA workflow
- 19. Spark/QEMU
- 20. Cross compilers
- 21. SCZ Front Step
- 22. Spacewire-like PHY
- 23. CA Root Key Generation
- 24. Compilers
- 24.1. Compiled Wikipedia PL/0 example
- 24.2. Work out overall plan.
- 24.3. Looking into LLVM MLIR.
- 24.4. ASDL
- 24.4.1. current smlnj C++ implementation incomplete
- 24.4.2. old versions asdl source fail to build with new versions of smlnj
- 24.4.3. old versions of smlnj not easily buildable on x8664
- 24.4.4. ancient binary of asdl 1.2 compiler seems to work
- 24.4.5. analyzing asdl 1.2 generated code
- 24.4.6. run in vm?
- 25. Piper dovecot
- 26. Various i686
- 27. piper
- 28. Buffalo WZR-HP-G300NH
- 29. SJC weather station
- 30. opencl
- 31. EPLDH
- 32. wktpqb
- 33. Virtual Orchestra
- 34. gat
- 35. RIOT drivers
- 36. mcd05 32 button/led box
- 37. AMD 2900 bitslice computing
- 38. Hitachi HD68B09E CPU
- 39. Rockwell R65F11
- 40. PLD programming
- 41. EPROM Programming
- 42. POSIT
- 43. MAME
- 44. More project ideas
- 45. David Davies
1. LECTURES IN DISCRETE MATHEMATICS
1.1. Continued boolean minimization
Too distracted to work on this.
2. GMPASM assembler
2.1. huge .expr mess
2.1.1. fixing various minor problems
2.1.2. main problem is current value frame doesn't work in general
Working through different approaches.
3. word lists
from "bump dump hump jump lump pump rump sump", are there longer lists?
3.1. bay cay day fay gay hay jay lay may nay pay ray say way
3.2. bot cot dot got hot jot lot mot not pot rot sot tot wot
3.3. cob cod cog col com con coo cop cor cos cot cow cox coy
3.4. bags dags fags gags hags jags lags mags nags rags sags tags wags
3.5. bays cays days fays gays hays jays lays nays pays rays says ways
3.6. bobs cobs dobs fobs gobs hobs jobs lobs mobs nobs robs sobs yobs
3.7. cine dine fine kine line mine nine pine sine tine vine wine zine
3.8. bears dears fears gears hears nears pears rears sears tears wears years
3.9. bills dills fills gills hills kills mills pills rills sills tills wills
3.10. dines fines kines lines mines nines pines sines tines vines wines zines
3.11. dipped hipped kipped lipped nipped pipped ripped sipped tipped yipped zipped
3.12. bailing failing hailing jailing mailing nailing railing sailing tailing wailing
3.13. bending fending lending mending pending rending sending tending vending wending
3.14. dipping hipping kipping nipping pipping ripping sipping tipping yipping zipping
3.15. bounding founding hounding mounding pounding rounding sounding wounding
3.16. battering mattering nattering pattering tattering
3.17. dustiness fustiness lustiness mustiness rustiness
3.18. scattering shattering smattering spattering swattering
4. SJ grounds
4.1. mulch 80% distributed
4.2. dead trees removed
4.3. 16 yd3 yard waste removed
5. SCZ Door Sill
5.1. have fix for center post
5.2. need fix for window-end
5.3. need new threshold
6. Alcove light
6.1. Color gradient with 3D Bezier in RGB space
Trying out. Seems bluish.
6.2. implemented 'knob' field adjustment interface
Probably not necessary.
6.3. ambient light detection
Also probably not necessary.
7. TRNG-JB
7.1. test flow for RO, ADC inputs
7.2. understanding test output
8. Programmable power supply
8.1. Determined that I have 3 18V 2A main power supplies
8.2. Studying various programming approaches
9. non-Vivado xilinx workflow
Looking into what the current state of this. There are claims of an end-to-end workflow:
10. Raspberry Pi Pico
Got more Pico stuff: debug dongle, different pico cards.
11. Sonic Fiber
11.1. rsyncing status page to g1
better then nothing for waiting a week to get to SJ to update the address.
11.2. exposing by hand via barelyworking.com
11.3. IP addr changes every power outage
Probably should get a UPS
11.4. and OS update
UPS doesn't help for this.
11.5. bind notifies not working
need to debug
12. Night Light
Was stuck on - now burned out. Looks like the SCR has an anode-cathode low impedance path. Amazingly enough, the SCR it uses is still available from Digikey.
13. Sparkfun Addressable LED
13.1. Prototype for Kevin. Using Arduino build system with FastLED library.
13.2. Works with RIOT OS.
14. Stalled project review
14.1. Garden orb
Can't find the glass orb, so don't worry about it until it's found.
14.2. Brini-tracker
Better to use an integrated hand-held device (pinephone64 or similar). Maybe use the GPS modules for a local NTP time server.
14.3. Coil piano
Totally a victim of analysis paralysis.
14.3.1. Investigated beagleboard
Could use PRU for PWMs or wide SPI bus. Not sure if the effort is worth it relative to other appoaches; PRU code, linux audio device driver, bandwidth between ARM core and PRU, etc. Could be interesting; is it more interesting than other stuff?
14.3.2. STM32f676zi
Could get ~26 PWMs of various quality on board. Plus two 12bit DACs, a SPI port for a SPI based DAC, and a async memory bus for discrete DACs. Haven't finished pin assignments.
14.3.3. RPi Pico
Probably the best option so far.
15. GMPForth
15.1. QEMU linux targets
…now segfault. Need to debug.
15.2. QEMU bare-metal targets
Starting to think about appoach. May start with running under u-boot to ease the inital effort of CPU initialization.
15.3. Multitasking
15.3.1. How would a classic round-robin multitasker interact with multiple cores?
15.3.2. Any insight from CSP or the Golang concurrency model?
15.3.3. Continuations?
16. Lapuz Peking/Panerus
Laid out keys. Keys are too big for Burhan's "restaraunt" cases. Ray to think about the next steps. Haven't heard anything back in months.
17. Mill
17.1. Supposedly working now.
17.2. Except I can't get it to turn on.
There's some trick I'm missing: apparently the controller is powered off the 220V, not a separate 110V like before.
18. EDA workflow
18.1. FPGA programming
18.2. RV32I
Seeing if a very simple RV32I is possible at ~600 ice40 cells. Likely not possible with a barrel shifter unless a multiplier is used. Certainly won't be fast, if possible at all at this size. This comes out to 18 gates per bit, which seems to be a ridiculously low number. Need to refine counting methodology to count LUTs and flops separately. Maybe further refinements for post-placement utilization (for example, how many LUTs get combined with a flop vs. separate LUTs and flops).
18.2.1. 'almanor' RV32I
- Three port register file, simplify decoder (~1100 LUTs, 300 FFs, 4 BRAM)
Not too happy with the result. Messier than expected.
- Refactoring
Still trying to understand what's driving the gate count. need to do some scaling experiments (FF/LUT per bit for various constructs).
- Post-synthesis testbench
Fragility much reduced after aggressive process splitting.
- Verilator testbench
Started planning.
- CSR/Debug interfaces
Seeing if it's worth it to implement minimal CSR and debug interfaces
- Picosoc analysis
Understanding picosoc implementation as a reference
- Standard tests
- riscv-arch-test
Ported and running. After changing verilog memory image generation to use objcopy, and correcting JALR masking, all RV32I tests pass.
- riscv-torture
- Used picorv32 patches to generate test cases.
Tried generalizing the Scala code, but looks like it was going to require more changes than I was comfortable with making - particularly for the E reduced register profiles.
- Regex filter
Wrote a regex based filter to change opcodes and various ranges for RV32I, RV32E and RV64E.
- Tests pass
All torture tests pass.
- Used picorv32 patches to generate test cases.
- riscv-arch-test
- Compare with a pipelined implementation
Still thinking about it.
- Debug and Interrupt architecture
Working out what's needed.
18.3. RTX-2000
Pulled out the RTX-2000 manual. Going to be a slog if I do it.
18.4. Synthesizable sparc v8
18.4.1. Seeing what it takes to make 'bs' synthesizable.
No way. Need to start fresh.
18.4.2. make smaller than picorv32?
Want to see if I can get something substantially smaller than picorv32 - although I doubt it. Better to start with RV32I though.
18.4.3. Found a bug
in load base/offset register instructions.
18.4.4. Found maybe another bug
Not sure about condition codes on 'sub'. Difficulty porting to rv32 leads to questions.
18.4.5. Cleanups
Apparently never run though verilator. Cleaned up.
18.4.6. Need legion
Need to see if the UltraSparc 10 is still running for legion tests.
18.4.7. u10
- Serial port works so boot is trying to do something.
- Doesn't seem to respond to 'break'
Enhanced 'sp' to send break command.
- NVRAM battery is dead. Not a FRU.
Needs an invasive fix or part replacement. NVRAM held MAC address, so that would be unavailable so could explain not booting. DHCP database has programmed MAC for static IP assignment so that at least is recoverable.
- Video dongle.
Dongle works with VGA monitor. Updating NVRAM parameters on console allows system to boot.
- Recovered legion
Copied off legion simulator binaries.
19. Spark/QEMU
Tested QEMU sparc simulator running Solaris 5. Probably a reasonable alternative to using u10.
20. Cross compilers
20.1. Toolchain scripts running.
20.1.1. moxie-elf c, c++, and ada.
20.1.2. sparc-elf c, c++, and ada.
20.1.3. riscv-elf c, c++, and ada.
gdb riscv simulator seems to not handle logical right shifts correctly in 32 bit mode. Arithmetic right shift has specific checks for 32 bit mode, but logical right shift does not and is clearly right shifting a 64 bit value.
21. SCZ Front Step
21.1. Starting to fit.
Hanging up on something hidden.
21.2. Need to fix mistake under window.
Have a patch piece.
22. Spacewire-like PHY
Poking that this long-standing problem. Building infrastructure to test if it's possible to construct a PHY layer with acceptable BER to 50 MBit which should be sufficient for 32 16-bit channels at 48 KHz sample rate. Need to re-establish EDA workflow.
Not sure this is practical.
23. CA Root Key Generation
Nice to have an appliance that manages keys. Need to make this simple. Really don't have time for a science project. Too, bad, though. It kind of is a science project. Could just buy something from nitrokey https://www.nitrokey.com/ but I really don't want to spend money on it of I have hardware already. Looking at nitrokey in more detail, it doesn't seem to be any simpler than what I'm doing already.
23.1. First pass done
23.1.1. Based on https://pki-tutorial.readthedocs.io/en/latest/simple/
Interesting that the certs generated fail with openssl sserver testing because the cryptographic algorithms are too weak.
23.2. Need to be clear on security properties.
Definitely protect against remote access to private keys. How strong does the protection against local access need to be?
23.3. Simple hardware.
23.3.1. Use beagleboard with local interface
23.3.2. Use some modern device TPM
Need to export data for backup.
23.3.3. Or something that uses PKCS11 interface
23.4. USB Serial interface only but no credentials across USB I/F.
But this potentially exposes the hardware to remote access via the USB I/F when connected.
23.5. Use Sneakernet
Doesn't scale. Should use something so cert updates are automatable. But that's a science project it seems.
24. Compilers
24.1. Compiled Wikipedia PL/0 example
24.2. Work out overall plan.
Lots of moving pieces.
24.3. Looking into LLVM MLIR.
Will not use immediately, but perhaps trend in that direction.
24.4. ASDL
24.4.1. current smlnj C++ implementation incomplete
24.4.2. old versions asdl source fail to build with new versions of smlnj
24.4.3. old versions of smlnj not easily buildable on x8664
24.4.4. ancient binary of asdl 1.2 compiler seems to work
but associated libraries are to old to link because of missing ctype symbol
24.4.5. analyzing asdl 1.2 generated code
Most of the code is for serialization, which is going to be replaced anyway, so can be removed by hand.
24.4.6. run in vm?
Analysis of binaries shows that it was built on some redhat os using gcc 2.8.1. Redhat-6.2? No. Tried various ancient Redhat OSs.
25. Piper dovecot
25.1. Update broke dovecot auth.
Looks PAM related, but PAM update failed to fix.
25.2. Set tuffy up as a staging server
So I don't debug on 'production'.
25.3. piper dovecot SSL certificate NOT broken
At least not obviously broken (yet). Further investigation needed.
26. Various i686
26.0.1. netbsd
was installed. But needed the box for something else.
26.0.2. buildroot
builds complete.
27. piper
27.1. dovecot
27.1.1. Raising apparmor error.
Not sure how to resolve.
27.2. pidgeonhole
27.2.1. procmail replacement.
27.2.2. Considering integration.
27.3. httpd
27.3.1. Still stable.
But seems to occassionally mis-serve files.
27.4. SSL cert
Trying letsencrypt with certbot. http problem above may be interfering.
27.5. redmine
Still not sure I want to go down this rabbit hole.
27.6. openvpn
Need to consider cert construction.
28. Buffalo WZR-HP-G300NH
28.1. Update
Sometime next year.
29. SJC weather station
29.1. Proper enclosure mostly constructed
29.1.1. Needs a redo on bottom plate
29.1.2. Seems to have improved wireless connectivity somewhat
30. opencl
30.1. Studying. Have some examples working.
30.2. Need to look at arrayfire as an alternative.
30.3. This is a bit of a hammer looking for a nail.
31. EPLDH
31.1. MPFI interval arithmetic better alternative
32. wktpqb
32.1. needs a new approach
32.2. Verifying edge construction (con't.)
32.3. 'gcd' algorithm doesn't work
33. Virtual Orchestra
33.1. sfz file tests
33.1.1. need tooling to edit sample files
33.2. increasingly skeptical whether quality results are possible
33.3. maybe should treat as platform for concatinative synthesis
33.4. maybe should just accept the limitations and work with it
One should not be disappointed that a guitar can't sound like a flute.
34. gat
34.1. spectrogram done - matches 'octave' output
35. RIOT drivers
Implemented - needs testing.
35.1. WS2801
35.2. Velleman KA03
35.3. Velleman KA05
36. mcd05 32 button/led box
36.1. Recovered schematics.
36.2. Planning software.
36.3. Received STM32F767 Nucleo144 with Ethernet.
36.3.1. Test program running.
36.3.2. Need to consider CoAP multicast discovery.
36.3.3. Consider simpler architecture with STM32F767 as a 'hub'.
36.3.4. Consider CAN interface to hub.
37. AMD 2900 bitslice computing
37.1. Probably my oldest uncompleted project
37.2. Exploring possibilities for something constructive
Create verilog models for 2903/2910 and verify against hardware?
38. Hitachi HD68B09E CPU
38.1. RAM/UART/IO
38.2. Started schematic
38.2.1. Standard peripheral set for 8 bit CPU bringups
Board schematic planned - need Kicad symbols
38.3. Arduino Mega 2560 DMA loader
…Along with standard 8 bit loader
38.4. Generate quadrature clock directly
38.5. Full Bus SW Emulation infeasible
6809 1000ns maximum cycle time too short
39. Rockwell R65F11
39.1. Still evaluating.
39.2. Dev board
Reverse engineered some of a mostly fully built development board with one part missing. As near as I can tell, that one part is some sort of programmable address decoder with a pinout that does not correspond to any part I can find. Kind of like a GAL but with inputs on top and outputs on bottom (as opposed to left and right in a standard GAL). I have no idea what the provenance of this board is and if it ever worked.
40. PLD programming
Looks like Atmel 16V8 is the last 5V PLD part left standing. Maybe not surprising that there still doesn't appear to be a fully open source tool chain for programming. How hard could it be? (!) Could next-pnr generic help? Might be easier to use espresso for logic array and program output logic bits directly for simple stuff.
41. EPROM Programming
Found some software for Needham programmer. Need to check electrolytic caps on ISA board.
42. POSIT
42.1. Use POSITs for YRX?
No. Existing library is fine.
43. MAME
43.1. Subset builds in debug mode
Full debug fails - not enough disk or memory.
43.2. gs6809 serial IO doesn't work right with PTY and other streams
43.3. ampro (Z80/Z80SIO) does work with PTY
43.4. Evaluating what is needed for other emulators.
44. More project ideas
44.1. Zuse Z3 simulation in Verilog
Good excuse for floating point ALU design. Try posit format?
44.2. GMPForth ports to simulators
44.2.1. SIMH for some targets (vax)
44.2.2. MAME looks interesting for microprocessor system emulations
How to support ersatz systems?
44.2.3. Ports to classic figFORTH targets
44.3. Extracting ISO Superboard Forth ROMS for MAME emulation
44.4. 'bwocl' OpenCL tooling
44.4.1. Offline compilation
44.4.2. Standard Kernel Running
44.5. hardware support for classic 5V CPUs
44.5.1. RTX2000, CDP1802 still available!
44.5.2. 6502, 68000, 320C30, others on hand
44.5.3. CPUs with totally async bus may be supportable without RAM
44.5.4. Could use small footprint monitor in asm (gmpmon?)
44.6. Existing 'retro' hardware still working?
44.6.1. OSI Superboard
Unknown. Composite to VGA adapter didn't seem to work. Needs analysis. Found OSI model 610 board underneath!
44.6.2. Super Jolt
No output. Needs analysis.
44.6.3. Ampro Little Board
Not booting. Needs analysis.
44.6.4. Rockwell R65F11 Demo board
UART sending "NO ROM" at 2400 7N1 as expected with 2MHz xtal. MAME emulator possibilities?
44.6.5. NMIX-0016
Works. Found original prom in a parts stash(!).