
I built an 8‑bit CPU, assembler, and emulator – now I need collaborators to finish the C compiler backend and make a usable computer
I’m a 17‑year‑old solo developer, and I’ve spent the last while designing and building a complete custom 8‑bit CPU architecture. The CPU has a 24‑bit address bus, a flat memory model, and a custom instruction set. It’s all implemented in a cycle‑accurate emulator written in C. I also have an assembler and a 40×24 text screen device (ASCII framebuffer, no terminal emulation), all working.
I’ve just pushed everything to GitLab as three separate repositories:
- CPU emulator: https://gitlab.com/DavidMik/dcpu-emulator
- Assembler: https://gitlab.com/DavidMik/dasm-assembler
- TMS text screen emulator: https://gitlab.com/DavidMik/dcpu-tms9918-module
Planned interrupt system
The CPU will support both internal and external interrupts. An internal interrupt instruction saves all ALU flags, register state, and a return address onto the stack, then jumps to an address held in dedicated address registers. return from interrupt restores everything and returns. External interrupts (e.g., from a keyboard) use input ports 0‑2 for the interrupt vector address and port 3 for data input. The hardware side still needs to be implemented in the emulator, but the specification is firm.
What I need help with
My goal is to turn this into a usable computer, and for that I need a C compiler. I’ve been writing a backend for the Fuzix Compiler Kit (FCC), targeting my CPU. It’s close — arithmetic, control flow, inline assembly, and variable storage all work. I’m currently implementing function calls. After that, there’s global variables, structs, and maybe floating point to do.
The problem: I’m exhausted working alone, and the compiler backend is the last big mountain. I’m looking for people who’d like to collaborate on this project with me.
How you could help (any of these):
- Help finish the FCC backend (function calls, global variables, structs). The backend code isn’t public yet, but I can share it privately with serious collaborators.
- Write a small ROM monitor or bootloader in assembly.
- Add a keyboard input device to the emulator (that triggers those external interrupts).
- Implement the interrupt hardware in the emulator (spec ready).
- Test the toolchain (assembler, emulator, compiler) as features come online.
- Just bounce ideas around — I’ve been working in a bubble and would love to talk shop.
If you’re into custom CPUs, retargetable compilers, or 8‑bit systems in general, I think you’ll find this a really fun challenge.
Comment here or DM me if you’re interested. Links to the repos are above. Thanks for reading!