• An assembler and an emulator

    Buzz Pendarvis03/22/2021 at 06:13 0 comments

    bemu: A W-4096/0 Emulator

    While developing the ALU board (video coming soon, assuming the boards I ordered work), I created an emulator in C++ that will execute code like the W-4096/0 will. It takes a binary file full of 12-bit little-endian values that are loaded into memory and then executed. 

    You can choose to have the accumulator or all of the registers printed to the console either after a halt or after every instruction execution. There's also an option to display a 24-bit number at 4004q whenever 4010q is set to 1.

    Currently, the emulator doesn't emulate any of the actual hardware or busses, it just immediately modifies memory based on the instruction that is fed to it. I might change this later, as it makes I/O difficult to emulate. This may also help me fix any bugs that currently exist

    The source code can be found here, though I'm not sure if it will work on Windows:


    basm: A W-4096/0 Assembler

    Without knowledge of the instruction set or an assembler, the emulator would be difficult to use. That's why my friend pythondude on my Discord server created an assembler written in Racket, a variant of Lisp. Documentation for the instruction set and assembly language can be found in the git repo below.

    The source code can be found here:


    included in /test_files is demo.asm, a test program that will calculate the Fibonacci sequence using 24 bits until it overflows.

    What's next:

    Assuming the ALU board design works, there could be a video and post on the ALU within a few days. If it doesn't work, it could be up to a few months before I have a working design. 

    Thanks for reading

  • A Working Register Card

    Buzz Pendarvis01/19/2021 at 09:21 0 comments

    Sorry for the long break! Since the last log, I've designed most of the CPU on a logic gate level, and I'm now working on converting that into actual resistor-transistor logic on circuit boards. In fact, I've already completed the board design for one of the most important components of the computer: the register. Using 12 D latches, 12 open collector IMPLIES gates, and an AND gate, I've made a register with inputs for output enable, write enable, clock, and reset. To demonstrate the functions of this card, I've made this video:

  • Some RTL circuits

    Buzz Pendarvis09/23/2020 at 05:50 0 comments

    Here are a few of the circuits that I'll be using to make this computer. Here you can see a NAND, AND, NOR, and OR gate, as well as a D latch.