Skip to content
tomato

Dispatch · ISA

ISA as a Wire

A historical exploration of how operations from other instruction sets might map onto Tomato’s configurable datapath—not a compatibility claim.

“We support sixty-six ISAs” was an unsupported headline. Tomato does not run foreign binaries. The profile collection records exploratory mappings between external mnemonics or operations and Tomato datapath capabilities.

The number was always a footnote. The mechanism is the story.

No interpreter. The opcode hits the muxes.

For Tomato instructions, the 9-bit opcode indexes control signals for ALU planes, immediate shape, write-back source, byte lane, and PC overlay. That direct Tomato decode says nothing about foreign instruction encoding or compatibility.

A profile asks a narrower research question: which named operations resemble paths Tomato already has, and which are blocked? Answering that question does not implement a foreign decoder, ABI, memory model, system behavior, or end-to-end binary execution.

The overlay word

The 32-bit instruction is tight on purpose. Low bits are not wasted on a fourth register they cannot hold. They overlay, depending on the mnemonic, as COND, jump mode, or an immediate fragment. Same slices of copper. Different assembly spellings. That is how a branch condition, a jump flavor, and a short literal can share a field without a pre-decode shifter sitting in front of the IR.

9bopcode 5brd 5brA 5brB 5brC 3boverlay

The 32-bit wordLow bits overlay as COND, jump mode, or immediate

The immediate box

Sixteen Tomato immediate selections are decoded on the register board: imm8, imm12, imm13, imm16, LUI, and related forms. Profiles compare those forms with literal operations described by other ISAs; matching a width does not make an external encoding native.

The dual-LUT

The custom three-source ALU resolves f(a,b,c) + g(a,b,c) + cin. Tomato instructions can select LUT truth tables for operations in that family. A mathematical match to an operation named by another ISA is useful exploration data, but it does not execute that ISA’s encoded instruction.

An ISA is no longer a rigid contract. It is a parametric mapping from an external binary onto the physical copper.

About thirty-seven, casually

The spreadsheet contains profile rows for many named architectures and extensions. Counting those files measures the breadth of the exploration database only. It does not count supported ISAs.

The profiles can identify reusable Tomato operations and gaps worth studying. They remain unclaimed until an actual implementation and end-to-end verification establish a specific scope.

What it is notWhat it is
Tomato runs 66 ISAsThe datapath is parameterized by the instruction word
It has an x86 modeProfiles compare some x86 operations with Tomato paths
Foreign binaries decode as Tomato controlsOnly Tomato’s own burned opcodes drive the implemented controls
Profile count is ISA supportProfile count is exploration-dataset coverage

The honest edge

Tomato currently claims neither foreign binary compatibility nor native execution of another ISA. Similar ALU, shift, immediate, or load/store operations are datapath comparisons, not a substitute for decoding and verifying the full architecture.

docs/isa/profiles.csv indexes the exploration data. The burned Tomato ISA and ROM tables govern implemented instruction encoding; FPGA RTL governs FPGA behavior; physical/KiCad evidence governs the discrete boards. This dated page records why the profiles were explored.

From the build

The work behind the words.

Modular microcode control schematic
Control beside the datapath

The modular control design documented in the build journal.

Tetris running in Tomato OS
Software using the machine

Tetris in Tomato OS, written for the custom instruction set.