The build journal
The decisions behind the computer.
My record of designing, testing, soldering, and programming Tomato. These entries capture the project at the time they were written—including ideas that changed along the way.
Envelop × Tomato
Virtual Tomato,
not an invented answer.
Bounded compute, explicit targets, and why a hardware timeout never becomes an automatic virtual replay.
Read the dispatch
The build record
NEWEST FIRSTNo journal entries match that search.
15 Sep 2026Virtual Tomato, Not an Invented Answer
Bounded compute keeps the program visible and the execution target explicit.
15 Sep 2026Do Not Discard the Preview
The development preview becomes a browser journey built from the generated OS image.
14 Sep 2026Synthesis Bypass
A local preview shortens software iteration without pretending to be physical execution.
14 Sep 2026Multiple Participants
The messenger grows from a two-party demonstration into conversations with named participants.
14 Sep 2026Envelop — Tomato Gets a Message App
A messenger becomes a real Tomato OS application, not merely a host-side mockup.
13 Sep 2026ISA Upgrade: Nine New Tricks
Nine new instruction names exposed work the Dual-LUT datapath could already perform.
11 Sep 2026HDMI, Properly Captured
An HDMI capture card and OBS—record the stream, not the monitor with a phone.
11 Sep 2026Of Course Tomato Needs Sudoku
Arrows plus a digit-cycle button. The game does not wait on the full keyboard matrix.
11 Sep 2026Wallpaper, Polish, and the Rest of the Computer
TomatoOS grows a wallpaper; the site gets less overwhelming; ~2,987 lines locked as a cut.
11 Sep 2026When assembly is still too high-level
Growing past 52 burns: named mnemonics can hide what Dual-LUT already computes.
29 Aug 2026Register Upgrade
32,768 General Purpose Register File — 15-bit depth; half a Blackwell SM; using less wastes the SRAMs.
29 Aug 2026Tomato works beautifully!
HDMI signal and a GUI on a TV, running over 2,300 lines of assembly.
28 Aug 2026One Press, One Key
Fixing the keyboard matrix bounce and growing the vocabulary with pseudo-instructions.
28 Aug 2026Exploring Beyond Vivado
Open-source FPGA synthesis: Yosys, nextpnr-xilinx, Project X-Ray, openFPGALoader.
28 Aug 2026Pixels on the glass
12-bit DVI PMOD soldered and flashed. Color bars on HDMI from the Nexys.
26 Aug 2026The PMOD pivot
VGA adapters failed. A Digilent PMOD is in transit for FPGA pixels.
23 Aug 2026The invisible logic
No on-board FSM. Drive A/B/C and opcodes from outside — about 1 Hz.
21 Aug 2026First lights and flux
Muxes, adders, LEDs, headers down. The board lights up — nothing shorted.
20 Aug 2026The gallery paradox
A slideshow with captions beat the magazine-inside-a-magazine layouts.
18 Aug 2026First phase of assembly
DigiKey on the desk. Every 74ACT151 down. The board next to the sim.
16 Aug 2026Web optimization
Shrinking the KiCad GLB to 1.26 MB Draco, correcting the first draft, and what the stack is now.
15 Aug 2026PCBs arrive
Five boards. Continuity on power is clean. No islands.
15 Aug 2026ISA as a Wire
Parametric datapath, not an emulator. About 37 family maps — the number moves as the copper does.
13 Aug 2026Solder station arrives
Through-hole assembly begins. Tomato waits on copper and DigiKey.
13 Aug 2026Front-page news in Ashtown Valley
The paper is a 90s broadsheet. Ashtown Valley, the Bay Perimeter.
07 Aug 2026Ordered Tomato
Boards on JLCPCB. Parts on DigiKey. The dual-LUT ALU left the screen.
02 Aug 2026Designing additional boards
The ALU was the hard part. The rest is 32-bit plumbing while fab runs.
31 Jul 2026Falling back to 32b
A 40-bit word doubled the explanation without doubling silicon on the bench.
31 Jul 2026The lingering catch
A throwaway FSM that becomes Tomato anyway — or build the rest of the machine.
30 Jul 2026Redesign into 40b
The bottleneck was the instruction word, not the ALU. The next day takes it back.
13 Jul 2026Truth table latch
If the next op is still ADD, pass operands. Keep the opcode latched.
13 Jul 2026Pipelined FPGA — what if
If the winds stop, then we die. Flexibility has a physics.
13 Jul 2026Downgrade for an upgrade
Do not fab one 240 mm monster. Cascade 16-bit cells.
13 Jul 2026Demo ideas
Fibonacci is too small. A self-programming FSM on a 4-bit slice.
13 Jul 2026Architecture upgrade
If LUT2 costs four chips, build the second LUT3.
27 Jun 2026Elimination of mode multiplexers
LUT3 feeds the adder. Logic rides the arithmetic path instead of racing it.
26 Jun 2026ALU refinement
NAND the generate. Spare gates as inverters. 74283 per nibble.
26 Jun 2026Redesign with 74251
Three chips for a cell was the wrong optimization. Same logic, no contention.
19 Jun 2026ALU segment display
Thirty-two digits. One ROM. Latches so they stay bright.
16 Jun 2026Microcode control modularization
Split decode onto small boards with local EEPROMs so ribbons stay short.
15 Jun 2026Multiplication and division
Naïve shift-add is slow. A Wallace tree eats the board. Priority-encoder loop.
11 Jun 2026Load/store pipeline
Every opcode indexes a 48-bit microcode word. Two phases, or three if memory waits.
10 Jun 2026Implementing the mul-div engine
Multiply in four cycles. Divide is the trick. 74xx284/85 sequenced.
OriginWelcome to Tomato 32
The first page of the vault. From simple gates to a parametric datapath.