Hi there,
Last year I was tempted to purchase the computer I started programming on in my childhood. It was a HC2000, a romanian clone of the ZX spectrum, 48k basic, floppy disk. I loved that machine and now they are extremely rare to come by. I struggled a lot, because the price was high. While, yes, I could afford it, I was quite torn between owning it, knowing I won’t do much with it, rather than play some old games now and then. So, after quite a bit of soul searching, I decided not to buy it, and instead chose to create a fantasy computer inspired by it. The aim of it is to function pretty much in the spirit of the original, but with some improved features, with the ability to write code easily, debug easily and eventually have a wrapper so people can release games and applications made with it.
Right now it’s a Windows exclusive, but I have plans to also be able to easily deploy it onto Mac, Linux and quite a few single board computers, such as raspberry pi’s and others, through a host lightweight OS.
So, in the last quarter of 2022, I started putting it together, as an emulator written in C# with MonoGame. So, behold! Continuum 93 is now in its infancy. A 30 Mhz single core CPU with a full set of proprietary assembly instructions (clearly inspired by the Z80 set), with 16 MB of RAM, but able to manipulate 8 bit, 16 bit, 24 bit and 32 bit registers, separate stacks for calls and registers (that have their own memory) and multiple register pages. The video architecture is a 480x270 pixels 8bbp organized on separate layers (able to set up from 1 layer up to 8 layers, each one with a 256 colors configurable palette). Yes, it is primarily designed for retro games.
The development of it is at a slow-relaxed pace, but I’d like to create a good backlog of features/additions to it.
I am already considering extending the instruction set to include the ability to work with negative numbers, floating numbers, and also include some 2D graphics acceleration features. Also, when available (on some single board computers) it would also be able to access GPIO pins.
Then, I thought that maybe I can share some of my work here, to expose it to suggestions and critique, since I do suspect some of you worked intimately with assembly at some points.
Do you have some assembly instructions that you think would be interesting to be added to this architecture? Do you have some overall suggestions or do you want to point out some mistakes you believe I made? If you have the curiosity and time, please take a look! I’ll appreciate all feedback, including the one that criticises.
I wanted to make it easier and attach the .pdf documents here directly, but the extension is not allowed. So, I would kindly invite you to download the release from here and look in the Support subdirectory where you will find the documentation I am making reference to:
The assembly reference and interrupt reference are auto-generated by a tool I have which interprets the logical primitives I use in my emulator and produce the documentation in less than a second, so there could be some weird mistakes there. Of some, I am aware. Some documents might look discouragingly lengthy, but that’s because every instruction has been disected and documented. In general, probably just looking at the table of contents would be enough to get an idea.
Thank you!