Close

Initial thoughts

A project log for Tetra - 4-bit CPU

Experiment to create a minimal 4-bit CPU that can do something fun

kaimackaimac 08/21/2022 at 15:280 Comments

If we're going to write characters to the display we need a font, which is a lot of constant data. The easiest thing is for that constant data to reside in ROM in the form of instructions, which populate RAM:

    lda %1011    ; load accumulator with 4 bits
    sta $1       ; store at some memory location (upper 4 address bits will come from somewhere else)
    lda %0101    ; next 4 bits
    sta $2
    ...

 The next part of the program then reads the data in RAM and clocks it out serially.

Control flow: we will have something simple like "jump if accumulator is zero". Is this enough? Can you have subroutines when you can only jump to an immediate address? Maybe if you have a jump table at the end of each subroutine, selecting which caller to jump back to.

Addressing: similar question - can all addresses be immediate, or do we need the ability to store addresses in RAM?

There will be many tradeoffs to look at - if removing a couple of chips causes the code size to balloon to make up for it, it may not be worth it.

Discussions