MORFE - Meyer's Own Re-combinable FrankenEmulator
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...
Build instructions for this branch
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
Note about m68k
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.
Running
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
Built-in debugger
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.
Compatibility status
General
- a preliminary DIP-switch support exists, so far only DIP6 (HI/LO graphics mode
selector) is implemented, see
conf/c256.ini
for examples
Memory map
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!
Vicky II/III
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)
GABE
See here for GABE spec
- math coprocessor
- PS/2 keyboard input
- mouse
- all other
general features
- IRQ (partial: only 65c816 mode)
- NMI
- reset button
Keybindings
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 |
Foreword
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!