So, there is - slowly evolving - emulator framework, capable for easy emulation of various sets of CPUs, GPUs and memory models.
At this moment MORFE/O supports 32bit m68k CPU (Musashi Core) and provides native implementation of 16bit WDC 65C816 and 8bit WDC W65C02S cores.
An emulator of m68k-based of Foenix machines.
Currently only a kind of a2560x
platform is supported, but morfeo
is modular and extensible...
Warning: current status should be considered as /pre-alpha/. Currently only smal subset of platform is supported and debug features, like in morfe are not implemented yet.
Warning: both screens are set to hi-res and GUI is fixed to x2 scale, because of limitation of my eyes. Scaling and DIP-switches should be implemented in near future, I hope - but in-code resolution change works well.
It is a test suite for an 65C816 core emulation.
Based on sets provided by SingleStepTests
Notes:
-
STP and WAI require implementation
-
tests for MVN and MVP are invalid and disabled
It is a test suite for an W65C02S core emulation.
Based on sets provided by SingleStepTests
Notes:
-
STP and WAI require implementation
-
there are not tests for STP and WAI
Both 65C816 and W65C02S are built on common foundation and are subjects to further improvement.
At this moment emulator was built and tested only on Ubuntu 22.04 LTS.
-
You need a working copy of Odin language - follow link and install Odin in preffered way.
A
Makefile
assumes thatodin
binary is in YourPATH
! -
A sdl2 development files:
apt install libsdl2-dev
-
Clone repo, update submodules and run binary:
git clone https://github.com/aniou/morfeo
cd morfeo
git submodule init lib/getargs
git submodule init external/Musashi
git submodule update
make
- If You want to run test programs for 65xx-based core then You need two additional modules.
WARNING: they need about 20G of additional space!
git submodule init external/tests-65816
git submodule init external/tests-6502
- Type
make
for impatient ormake help
for detailed options.
Run:
./a2560x --gpu=1 --disk0 data/test-fat32.img data/foenixmcp-a2560x.hex
At this moment only two keys are supported. See for standard output logs for unsupported functions and not-implemented-yet memory regions!
Key | Effect |
---|---|
F8 | Change active head in multi-head setups |
F12 | Exit emulator |
Because interfacing C-libraries from Go is cumbersome and excellent m68k core (Musashi) is written in C.
Because I need some fun too.
Because a proper ID bits in GABE emulation part are not implemented yet.
- clean architecture
- faster
- irq support
- timer support
- current memory map of a2560x platform
- better 65C816 implementation (new)
- an W65C02S implementation (new)
- lack of debugging tools for code
lack of 65c816 support- Golang is more portable
- more memory leaks
In future. I have limited resources and morfe/morfeo were created as development platform for system software, thus lack of support in graphics and sound
A crucial for understanding internal code and way in which modules are implemented is an union concept.
See also emulator/gpu/gpu.odin
, and routines vicky3_make
and vicky3_read
in emulator/gpu/gpu_vicky3.odin
for samples.
That project include: