A kind-of-emulator software, created for my experiments and development for Foenix machines.
Warning: m68k mode is slow and memory map doesn't fit current specifications! See MORFE/O for better m68k emulator!
At this moment You should also consider following factors:
-
MOST IMPORTANT: it is unofficial work and features/lack of features or emulator design does not correspond to features or design of real FMX/U/GenX machine!
Do not make any unauthorized assumptions about real hardware!
-
In this branch m68k is easily able to achieve 25Mhz, although now it is capped at 20Mhz. I have a plan for making all setting easily configurable, but first things (like debug facilities for both cpus) first...
First, clone repo by git clone https://github.com/aniou/morfe
Type make morfe
for a 65c816-only version or make morfe-m68k
for dual, 65c816/m68k one (but You should stick with 65c816 and use
MORFE/O for m68k).
There is also make help
that shows actual targets.
Typical session:
git clone https://github.com/aniou/morfe
cd morfe
make morfe
./morfe conf/c256.ini
For m68k a Musashi core
is used, built-in into emulator with some black magic around cgo
.
Standard makefile should build all object files for You, although
working gcc will be necessary.
Emulator requires config file, that defines platform behaviour, files to be loaded at start and some other parameters.
Binaries should be run from project directory (all paths are relative to top-directory of project), i.e.:
./morfe conf/c256.ini
./morfe-m68k conf/a2560k.ini
Use F8
to change active screen! By default FoenixMCP
shows debug on head0 and console on head1
Debugger interface is available for m68k only. Press F9
to call
debug window in terminal. Preferred terminal size is 132x42
(interface can be scaled on fly).
List of supported commands will be displayed in log frame.
- a preliminary DIP-switch support exists, so far only DIP6 (HI/LO graphics mode
selector) is implemented, see
conf/c256.ini
for examples
At this moment a sort-of FMX memory map is available, but GenX is on the horizont: it is fast moving target, so stay tuned!
See here for VICKY II spec
- preliminary PATA HDD support (r/o, only for a2560k, very rudimentary)
- 640x480 mode
- 800x600 mode (from 19.09.2021)
- 1024x768, 640x400 - only for m68k-based machines
- double pixel mode
- fullscreen mode
- border support (partial, no scroll)
- text mode
- text LUT
- cursor
- fonts
- bm0 bitmap
- bm1 bitmap
- bitmap LUT
- overlay and background support
- tiles
- sprites
- GAMMA LUT
- 8-bit writes (Vicky writes are 8-bit even if A/X/Y are 16-bits wide)
See here for GABE spec
- math coprocessor
- PS/2 keyboard input
- mouse
- all other
- IRQ (partial: only 65c816 mode)
- NMI
- reset button
There are few keybindings now. Warning: following keys aren't passed to emulator!
Key | Effect |
---|---|
F8 | Change active head in multi-head setups |
F9 | Enter m68k debugger |
F10 | - (nothing) |
F11 | Toggle full-screen |
F12 | Exit emulator |
I owe thankful word for too many people. Excuse me if I omitted someone.
First at all: all hail to Stefany Allaire, a Dark Mistress that brought to life all Foenix Family! We all praise her brilliant work, persistence and vision!
Project was inspired by NES emulator created by Michael Fogleman and general layout as well as architectural concepts are based on that project. I'm very grateful to Michael for inspiration and all things I learned from their code.
During development a 65c816 emulation I draw inspiration and concepts from Michael's project as well as from MOS 6502 emulator by Paul Annesley. Some algorithms and behaviours are modeled on the C++ 65c816 emulator by Andrew Jacobs.
Project also draws inspirations, knowledge about Foenix's behaviour and even whole code snippets from Foenix IDE by Daniel Tremblay.
When I was in doubt (usually) I was able to find solution and hints in Foenix Kernel Code created and maintained by https://github.com/pweingar/
All code for Motorola is provided by Musashi core.
Finally: daschewie - thanks for Your support!