aniou / morfe

custom 65c816/m68k computer emulator in Go
MIT License
12 stars 3 forks source link
65c816 emulator m68k retrocomputing

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:

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

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

GABE

See here for GABE spec

general features

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!