The BX-8 has a custom ISA with 60+ instructions, an 8-bit data bus, a 16-bit address bus, and 128 KB of addressable ROM and RAM split between program storage a…
The BX-8 has a custom ISA with 60+ instructions, an 8-bit data bus, a 16-bit address bus, and 128 KB of addressable ROM and RAM split between program storage and external devices through memory-mapped I/O. Instructions are decoded through a ROM-based microcode unit with a 33-bit control word that directly drives every signal in the CPU, things like clocking the PC, selecting registers, enabling the ALU, controlling the stack, and picking between ROM and RAM on the bus.
There are 7 registers. A is the accumulator and the only one that feeds into the ALU, so every arithmetic and logic result comes back through A. B, C, D, and E are general purpose and also used for memory addressing. F and G form a 16-bit address pair called FG, which is used for indirect jumps, subroutine calls, and memory-mapped I/O, basically the same idea as HL on the Z80. The ALU runs on an FPGA and supports ADD, SUB, ADC, SBC, AND, OR, XOR, complement, shift left, and shift right, selected through a 3-bit control input. It sets three flags: Z for zero, C for carry, and N for negative.
The instruction set covers immediate loads, direct memory loads, a full 7x7 register to register move matrix, arithmetic with and without carry, logic operations, two types of compare and jump instructions, conditional jumps on flags, and register exchange. The hardware stack is 16 entries deep and 16 bits wide, stored as two separate 8-bit halves with independent clock signals for push and pop. It's used by CALL and RET to save and restore the program counter during subroutine calls.
The ALU, program counter, and register file are all built and running on real hardware. Everything else is still being integrated.
I have a Youtube video about this project and this is the Intro, Part 1: Program Counters, and Part 2: Registers
Bohan Xu


Pavel
Tim
Ruud van Falier
That’s absolutely amazing for your age!