Today feels like a historic day for me.
For around 3 years I have been working mostly in silence on a completely new 68K CPU core written in VHDL. During that time there were thousands of hours of development, simulation, debugging, failed ideas, rewritten parts of the core and an growing verification system.
In the last few months the project finally started moving from simulation into the real Amiga. First there was a simple write to the Amiga COLOR00 register. Then repeated bus transactions. Later came the first real Kickstart boot attempts: yellow screen, green screen, another yellow screen after getting further, and finally yesterday the machine was reaching almost all the way to the Kickstart screen before rebooting.
Today everything changed.
The important discovery was that the final boot problem was not where I expected it to be. The CPU had already passed 1266 regression tests plus 3 performance tests, so I was becoming suspicious that the remaining problem might not be basic instruction execution.
SignalTap finally showed what was really happening.
During a memory read, the Amiga motherboard was presenting the correct data, but my hardware interface was sampling it too late. By the time the CPU captured the value, the data bus had already changed. This produced corrupted register values, bad jump targets and eventually exceptions and resets.
The fix was to redesign the physical Amiga bus timing around a dedicated high-speed clock, synchronized to the original Amiga clock. Instead of trying to observe the 7 MHz bus from the much slower CPU clock, the bus controller now works from an exact 12× clock, giving deterministic timing for every Amiga bus phase. Basically same thing I was doing long time ago with my TG68 experiments.
After that change I compiled the core again, programmed the Vampire 600 V2 and powered the machine.
For the first time, the Kickstart screen appeared.
Even the floppy animation was there — with some wrong colors :) — but after so many months of looking at waveforms, VCD files and simulation transcripts, seeing that screen produced by my own CPU was something completely different.
And then came another surprise.
A little later the same core booted all the way into Workbench.
I opened a Shell and ran the CPU command:
System: 68000 (INST: NoCache)
At that moment this project stopped being only a CPU that passes tests in simulation.
It became a CPU running a real Amiga operating system on real Amiga hardware.
There is still a lot of work ahead. Compatibility is not complete. Some software already exposes things that still need investigation. Performance is still very low compared with where I eventually want this architecture to go. There is no cache yet, and there is a lot of architectural cleanup and optimization still planned.
But today none of that changes what happened.
A completely new 68K CPU implementation, developed from zero in VHDL, is now running Kickstart and Workbench on a Vampire 600 V2 accelerator.
For me this is an enormous morale boost.
For 3 years I kept asking myself whether this was actually possible.
Today I got the answer. :)
Kickstart screen Caption: September 24, 2026 — for the first time Majsta 68K reaches the Kickstart screen on real hardware.
Shell with CPU output
|