My system with the c16 CPU and Gpu1

Feed

date: 2026-03-30 19:45:55

categories: hardware

firstPublishDate: 2026-03-30 19:45:55

My system has 2 devices: the 32bit c16 CPU and Gpu1 and I call it the `nova system`.

C16 CPU

Gpu1

Verilog tools

The c16 is connected to Gpu1 with a 32 bit bus (point to point) and there is an interrupt line connected from the GPU to the CPU.

The GPU triggers an interrupt (interrupt 8 in the CPU) at the end of each frame, 60 times per second.

Address map from the CPU, starting from higher addresses:

The system runs at 100mhz in an ARTIX7 FPGA, 512KB RAM is divided between the CPU and the GPU and the LCD resolution is 720x480 pixels.

I created an emulator of this system, it uses SDL to display the images from the GPU.

There are 3 demos, these demos have sprites on the 4 planes. The first one is stars scrolling vertically.

Stars demo [IMG]

In the second demo, the TREX from the offline chrome game is animated on screen.

Trex demo [IMG]

The third demo is the word `NOVA` and a big star scrolling down.

Nova demo [IMG]

Each sprite has 2 colors and there are 16 palettes, so the GPU can display 32 colors simultaneously.

Programing this system

In the hardware implementation, the CPU boots at address 0x0 and in the emulator, it boots at address 0xE0000000 and the boot rom jumps to address 0x0.

Usually my programs start with a jump instruction and the interrupt handler for the GPU interrupt is at address 0x2.

Then the stacks are setup:

Then, the interrupt handler is setup in the interrupt table:

The interrupts are masked in the CPU after boot, after setting up the sprites in GPU, the interrupts have to be unmasked:

In verilator simulations and in the emulator, the simulations are stopped by writting anything to the simulation controler (address 0xE0060040):

Feed

Guestbook

Proxied content from gemini://gmi.noulin.net/2026-03-30-my-system-with-the-c16-cpu-and-gpu1.gmi (external content)

Gemini request details:

Original URL
gemini://gmi.noulin.net/2026-03-30-my-system-with-the-c16-cpu-and-gpu1.gmi
Status code
Success
Meta
text/gemini
Proxied by
kineto

Be advised that no attempt was made to verify the remote SSL certificate.