Most of the computer's architecture has been worked out (at least on paper...)
Here is a schematic overview of the entire architecture:
Let me explain what I have in mind:
- There is an 8-bit data bus and all the registers are 8-bit.
- 64 kB of memory can be accessed using a 16-bit address bus, managed by the memory access register.
- The memory consists of 16 kB ROM and 48 kB RAM.
- The program counter is 16-bit and can be loaded using the X and Y register.
The program counter output can be loaded into the memory access register.
- The X and Y registers can also be used to load a 16-bit memory address directly into the memory access register.
- The A(ccumulator), B, X and Y registers can all be used to read and write to the data bus.
- I'm going with the 74181 for the ALU (which some will consider to be a shortcut).
- Input for the ALU comes from the Accumulator and B register, output is put on the data bus.
- The stack pointer is used while storing return addressed for CALL instructions. It's basically a 4-bit binary counter and the module outputs 16-bits in total of which the first 12-bits are always set to 1 and last 4 bits come from the counter. This means the stack is stored at FFF0-FFFF in RAM. Considering the fact that memory addresses take up 2 bytes, the stack allows for up to 8 nested subroutine calls.
- The ROM can be disabled. I want to be able to use this computer for educational purpose and have the option to manually put a program and RAM (using switches) instead of always booting from ROM.
- For the same educational purpose, but also for debugging purpose, the clock can run in several modes: single-step, slow variable mode (1 to 15 Hz) and turbo mode (1 MHz).
- Functionality for input and output modules still has to be determined.
- The computer will be driven by micro code. The instruction set is still under construction.
- Instructions consist of 1 to 3 bytes: 8-bit opcode and 16-bit data.
I really want to be able to use this machine to teach others about CPU architecture.
I'm planning to add LED indicators to all the modules in order to visualize the data flow.
Aside from that the machine can be single stepped and programs can be loaded straight into RAM using switches.