Virtual machine for 8-bit systems.
For some time now I have been developing a certain system, which I have tentatively named Virtual Machine for 8-bit systems. The name seems to me, at least for now, to reflect well what it is intended to be used for.
.
.
The project is based on the STM32H750, although in principle it can be ported to almost any Cortex-ARM, which I think I will probably do in the future. For now, it's on this chip because it basically meets my needs at least at the moment.
What this chip does, at the moment it simulates a computer with a 65816 processor. This processor was the most advanced development version of a family of processors derived from the MOS6502 known from ATARI 8-bit computers, COMMODORE, or NES consoles.
Currently, the system simulates a 65816 processor and can execute its code at a speed equivalent to a 65816 processor with a clock of about 4.5MHz.
At this point I have run the 65816 compatibility test, which passes in its entirety including simulation of all known 65816 anomalies.
By the way, I managed to run j. BASIC and a simple operating system, exactly it is EhBASIC2.22, which runs on many DIY systems based on 6502.
In the video is a fractal drawing program written in the dialect of this BASIC.
I am also attaching a listing, maybe someone would like to help and run it on their 8-bit computer, which might help me to better estimate the performance of this machine of mine.
Porting the program shouldn't be too complicated, as it uses text mode and simple calculations. In order for the test to make any sense, I ask that you do not make any changes that might distort the results, such as not removing spaces or combining several lines into one to increase its execution speed. It is best to run as is or, if necessary, make only the necessary changes for the dialect if the program in this version would not run on the machine in question. if the system does not show the time you can remove lines 290 and 510.
As of today, the chip provides access to 2 serial ports and several 8/16-bit parallel ports.
It has a built-in program to track the TRACE of the emulated system. All in all, for its operation it is sufficient to connect to some serial terminal.
I want to develop the system by adding simulators for more processors.
The system at the moment has 3 blocks of RAM 512kB, 384kB and 64kB.
And it has 2 serial hardware ports for communication. Their number can be expanded if required. In principle, it is supposed to be possible to map all STM32 I/O chips.
The program in BASIC and a video of how it works attached, as I had trouble adjusting the format of the video to make it visible in the message.
If anyone has any ideas what should be included in such a system, please write. The Virtual Machine is still under construction
.


The project is based on the STM32H750, although in principle it can be ported to almost any Cortex-ARM, which I think I will probably do in the future. For now, it's on this chip because it basically meets my needs at least at the moment.
What this chip does, at the moment it simulates a computer with a 65816 processor. This processor was the most advanced development version of a family of processors derived from the MOS6502 known from ATARI 8-bit computers, COMMODORE, or NES consoles.
Currently, the system simulates a 65816 processor and can execute its code at a speed equivalent to a 65816 processor with a clock of about 4.5MHz.
At this point I have run the 65816 compatibility test, which passes in its entirety including simulation of all known 65816 anomalies.

By the way, I managed to run j. BASIC and a simple operating system, exactly it is EhBASIC2.22, which runs on many DIY systems based on 6502.
In the video is a fractal drawing program written in the dialect of this BASIC.
I am also attaching a listing, maybe someone would like to help and run it on their 8-bit computer, which might help me to better estimate the performance of this machine of mine.
Porting the program shouldn't be too complicated, as it uses text mode and simple calculations. In order for the test to make any sense, I ask that you do not make any changes that might distort the results, such as not removing spaces or combining several lines into one to increase its execution speed. It is best to run as is or, if necessary, make only the necessary changes for the dialect if the program in this version would not run on the machine in question. if the system does not show the time you can remove lines 290 and 510.
As of today, the chip provides access to 2 serial ports and several 8/16-bit parallel ports.
It has a built-in program to track the TRACE of the emulated system. All in all, for its operation it is sufficient to connect to some serial terminal.
I want to develop the system by adding simulators for more processors.
The system at the moment has 3 blocks of RAM 512kB, 384kB and 64kB.
And it has 2 serial hardware ports for communication. Their number can be expanded if required. In principle, it is supposed to be possible to map all STM32 I/O chips.
The program in BASIC and a video of how it works attached, as I had trouble adjusting the format of the video to make it visible in the message.
If anyone has any ideas what should be included in such a system, please write. The Virtual Machine is still under construction

Comments
Thanks for sharing the information about starting to build an emulator. I've noticed on foreign language portals that it always sparks interest to run some game, or program popular at the time. A video... [Read more]
The initial aim of the project was an accelerator for my Apple II computer. During implementation, due to ad hoc needs, mainly to find bugs in the emulation, other modules were gradually added. For example,... [Read more]
A very interesting topic, but unfortunately very overdue - now for a few hundred bucks you can buy ready-made chips on FPGAs that hardware-encompass emulation of everything from x86 inclusive (up to 486... [Read more]
. Unfortunately, this is the plight of modern DIY - toys with great capabilities are available but no idea what to do on them. DOOM has already been fired up on pregnancy tests :D . [Read more]
Today I managed to compile the Supermon 816. In order to get it working, I had to add some I/O routines. In general, the program uses 2 serial ports for communication, one to communicate with the VT-100... [Read more]