Description and features
Perdita is a Durango Emulator that can run any ROM created for Durango. Perdita is based on the 65C02 instruction set and the Durango-X architecture, but currently does not support the Rockwell R65C02 extensions. However, the WDC
STP opcodes are emulated, the former as a breakpoint.
With Perdita you can test your developments, and use the internal development tools, like memory dump or gamepad emulation. Emulation is complete and, on a reasonably powered computer, cycle-accurate. The only current caveats are:
- Sound is emulated, but some distortion may be heard.
- Real-time video mode switching won't display properly on the emulated screen.
Perdita uses the SDL2 framework to display the screen contents, so you need to install it on your system (Linux only)
apt install sdl2-dev
You can find the source code of Perdita in the following Repository.
You can use Makefile to generate the perdita executable.
Generate Perdita for Windows
If you want to build Perdita for windows, you need to use mingw32 to generate the
.exe file, with the following make goal.
make perdita.zip # Only for generating a Windows executable
Generate Perdita using Docker
You can use the following DockerFile to generate a container with Perdita. https://github.com/zerasul/dockerretro/blob/master/sdl/Dockerfile.
To run Perdita, you can use the following instructions
./perdita [options] <path to romfile>
The options included are:
-a: load ROM at supplied address, example
-f: fast mode.
-s: safe mode (will stop on warnings and BRK).
-p: start in STEP mode
-l: enable error LED(s)
-k: keep GUI open after program end
-h: headless -- no graphics!
-v: verbose (warnings/interrupts/jumps/events/all)
-r: do NOT randomize memory at startup
-g: emulate controllers (Gamepads); you can use usb gamepads with durango emulator.
-m: do NOT emulate Minstrel-type keyboard
Also, you can execute some commands using functions keys:
F1: Stop emulation and quit.
F2: NMI Button (Non-Maskable Interrupt).
F3: IRQ (Interrupt ReQuest).
F5: Pause and display status.
F6: Dump memory (and register) contents.
F7: Single-Step execution (while paused).
F8: Resume normal execution (from pause).
F9: Load dump file (
F10: Load keystrokes file (
keystrokes.txt), emulating each keystroke every 25 interrupts (1/10 second), or 50 interrupts in case of the
Virtual Serial Port (VSP)
As a valuable debugging tool, a Virtual Serial Port is provided. It allows communication with the host environment thru a predefined I/O device occupying two addresses:
$DF93 for data exchange and
$DF94 for configuration.
Perdita includes two kind of keyboards: an "intelligent" PASK-like device (ASCII character received at
$DF9A) and the Minstrel-like 40-key keyboard provided as standard (at
$DF9B). The latter can be disabled with the
-m option for debugging purposes.
Two NES-type gamepads are emulated into the standard I/O addresses
$DF9D, using the standard protocol. If no physical gamepads are available, they can be emulated by host keystrokes via the