segaloco (summarized) wrote: ↑Wed Sep 20, 2023 12:42 pm
Don Knuth's "The Art of Computer Programming" successfully employs a hypothetical CPU architecture to explain low-level computing concepts without tying to specific implementations.
A middle-ground approach involves designing a console using existing components in novel ways, like using Western Electric's WE32000 CPU and DSPs for graphics and audio.
This concept could be embedded in a Single Board Computer (SBC) for scaled production, simplifying the operating logic with an RTOS-like setup. The emulator would serve as an OS kernel using binary opcodes for entry interfaces.
I am not familiar with the book you mention, but I find it a very nice idea to use an abstract set of instructions (pretty much like pseudocode) to ilustrate architecture-agnostic implementations. It reminds me of one of the assembly programming books I read many years ago where the author used an actual diagram of the CPU/registers/RAM to explain step-by-step what is going on with each instruction. Offcourse, that was based on a real CPU, but nonetheless, the visual of that was very clear.
I 'think' I also visited that middle of the road at some point, or at least a variation of. That was well before Continuum 93 was even a concept in my mind. I was playing around with some microcontrollers, namely ESP8266, ESP32 and some compact versions of, along with others. I wanted to be able to poke their memory and get how I could "take ownership" with a minimal OS I could natively write in (or something) so I could make a retro machine there, by using their proprietary assembly architecture. I could then connect two or three microcontrollers, one would act as a video board, the other as a sound board, and I could use a modular approach in my software to create an interesting, "native" retro computer.
It turned out to be quite a challenge, even with all the documentation at hand. I got how the memory fragmentation was designed, what steps to do for various tasks, but there were some quirks I didn't got around of. Still haven't given up the idea of doing so, but after a month of exploration, I chose to park it and think of other ways.
So, a while after that (a year ago), I layed down the first concept of Continuum 93 and started working on it. I pretty much had the same idea, make it a native thing on some single board computers, but start from an existing kernel. It sounded simple in my mind, so I even tried to contract someone to write some... bootstrap platform where I could deploy this emulator that would take over the machine and act as the omni commander of all.
Then, a seasoned programmer, versed in linux (unlike me) explained to me what that entails. It wasn't impossible. Just very expensive and time consuming.
So, as practical as I could get, I first wrote this for Windows, as it is today. And I established a strategy to run it also as an application on some existing linux distributions, including (or starting with) the Raspberry Pi series.
On such sistems, this emulator could (in some future) also provide an interesting way of accessing pins and that could be nice for some projects/games/custom hardware/prototyping and others.
I mean, who doesn't like (?):
Code: Select all
LD A, 4 ; some analogue pin
LD B, 5 ; some other analogue pin
OUT A, 128 ; Set analogue pin (0 - 1023)
IN EF, B ; Get (0 - 1023) from pin into register EF
But, yeah, that's for the future.
As for today, now, I am happy to say that the last few days I was able to deploy the Continuum Emulator (as an application) onto Raspberry Pi models: 2 A+, B, 3, 4, Zero 2W. And that on Raspberry Pi OS (aarch64 architecture) and RetroPie (armv71 architecture).
So, one step closer, I guess.
