MoDapple (Provisional Name)

What is MoDapple?

MoDapple is an Apple ][+ and //e emulator. Unlike most emulators, it emulates most peripherals through plug-in libraries, allowing other developers to extend the emulator without touching the actual core code.

Although some plugins are under more restrictive licenses, the base emulator (modapple.exe), slot plugins and video plugins are licensed under the terms of the University of Illinois/NCSA Open Source License (basically the same as the 3-clause BSD license). Details are found in the file "copyright.txt" included with each package. Essentially everything except the "M65C02" CPU core, a version of Marat Fayzullin's 6502 emulator altered with his permission to support 65SC02 functionality, is open source (and the CPU emulation can be replaced without touching the main binary).


Current Version

0.45 (12-31-2016, 5.8 MB) Beginning of an AppleWin-like Uthernet driver supplied.

Synopsis of Revision History

0.44 (12-03-2016, 5.8 MB) Tightened some bolts in mod_diskii.

0.43 (12-02-2016, 5.8 MB) Fixed hanging bug in mod_diskii.

0.42 (12-01-2016, 5.8 MB) Added monochrome support for GR and DGR video modes in the SDL driver.

0.41 (11-29-2016, 5.8 MB) Changed the memory fill logic, and added Alt-F5 to force hard-reset. Added a couple semi-useful command line tools.

0.40 Refresh (11-25-2016, 5.7 MB) Fixed bug in RAM Works driver logic.

0.40 (11-25-2016, 5.7 MB) Implemented a 3 MB RAM Works card. Combine with the Slinky for gobs and gobs of //e RAM. (The card's own diagnostics cannot see all the memory.)

0.39 (11-24-2016, 5.7 MB) Added a ThunderClock-compatible clock device, and a driver disk to patch ProDOS 8 for the correct year. Added a way for the SDL driver to dump a BMP screenshot if PrtSc is pressed (with or without modifiers). Added hooks to allow slot devices access to additional system state (will be used by an extension presently under development).

0.38 (11-22-2016, 5.7 MB) Code pruning. Changes to SDL sound driver to avoid pops when disk speed hack is enabled.

0.37 (11-22-2016, 5.7 MB) Fixed M65C02 wedge cycle counting and got the joystick to work.

0.36 (11-19-2016, 5.7 MB) Allows disk speed hack for slot 6 to be disabled. SDL sound driver now attempts to automatically compensate for audio desynchronization (this does not always work correctly).

0.35 (11-19-2016, 5.7 MB) Allows slot modules to request IRQ. Bell can now be replaced by the Windows system beep. New SDL sound driver works reasonably well but has erratic latency.

0.34 (11-18-2016, 5.7 MB) Isolated the broken sound driver into a separate module.

0.33 (11-17-2016, 5.7 MB) No user-level changes; added initial code to support sound (disabled by default due to serious latency and buffer underrun issues).

0.32 (11-16-2016, 5.6 MB) Fixed a bug in the main CPU module that prevented "Prince of Persia" from booting.

0.31 (11-16-2016, 5.6 MB) Added color support for DHGR mode, and the ability to disable color in HGR and DHGR modes (but not currently GR or DGR mode).

0.30 (11-15-2016, 4.9 MB) Added color support for HGR mode.

0.29 (11-15-2016, 4.9 MB) Fixed SDL flashing bug and DGR colors. Slowed the CPU to half its previous speed.

0.28 (11-15-2016, 4.9 MB) Wrote a third SDL driver and entirely replaced both ttysdl and ttylamb with a new ttysdl module; this driver supports flashing text, monochrome HGR and DHGR graphics, and everything supported in the Curses library except for MouseText. Altered the core to avoid unnecessary calls to the TTY driver.

0.27 (11-14-2016, 5.0 MB) Optimized build scripts. Improved //e support. Initial support for MouseText in the Curses driver. Boot disk changed from 1980 DOS 3.3 master to the latest version of the ProDOS System Disk.

0.26 (11-13-2016, 5.0 MB) Improved slot card API. Added Slinky card emulation.

0.25 (11-12-2016, 5.0 MB) Now passes the entire RAM buffer to drivers instead of requiring them to keep their own video buffers. Changed update method to favor speed over accuracy. Added 80-column mode to SDL driver.

0.24 (11-10-2016, 4.9 MB) Improved "LAMB" second SDL driver.

0.23 (11-10-2016, 4.9 MB) Added file selector dialogs to disk modules. Added printer module. //e ROMs now pass self-test.

0.22 (11-09-2016, 4.9 MB) Fixed bug in //e support. Removed emulation of the Half Pixel Shift.

0.21 (11-06-2016, 4.9 MB) 80-column text mode works correctly in Curses driver.

0.20 (11-06-2016, 4.9 MB) Added "loop" and "cycle" capability for slot plugins. Improved //e support.

0.19 (11-04-2016, 4.9 MB) Removed spurious diagnostic. Rearranged reset function for better accuracy. Added a second disk ][ emulator.

0.18 (11-03-2016, 4.9 MB) Added trace functionality. Removed vestigial code.

0.17 (11-03-2016, 4.9 MB) Improved //e suport. Curses plugin can handle 80-column text and 80x48 graphics mode.

0.16 (11-03-2016, 4.9 MB) Improved //e support. Disabled floppy drive speed hack upon reset.

0.15 (11-02-2016, 4.9 MB) GDI module removed. Added //e support.

0.14 (11-02-2016, 4.9 MB) Added hack to speed up floppy drive emulation.

0.13 (11-02-2016, 4.9 MB) Improved SDL driver. Added speed throttling.

0.12 (11-01-2016, 4.9 MB) Core is now aware of the current scanline. SDL graphics driver added.

0.11 (11-01-2016, 254 KB) Further reduction in diagnostic messages, also grouped together for easier localization. Grouped //e variables together.

0.10 (11-01-2016, 254 KB) C8 ROM support fixed. Empty slots now detected properly. Improved Firmware Card plugin.

0.09 (10-31-2016, 252 KB) INI file now contains ROM file. DMA feature added for slot DLLs. Added hard disk support.

0.08 (10-31-2016, 267 KB) Added hook for slot DLLs to use F-keys for configuration menus. Reduced the number of diagnostics.

0.07 (10-31-2016, 279 KB) Started changelog. GDI terminal supports Ctrl-Break for reset. Fixed an off-by-one error when deinitializing slot modules. Removed allocation of extended RAM in the shell. Modules are now loaded from an INI file. Disk ][ driver can load and save the names of disk images in the INI file. Video memory is now "write-through". Stub code to decode C8 rom space. Unified build scripts.

0.06 (10-30-2016, 275 KB)

0.05 (10-30-2016, 224 KB)

0.04 (10-30-2016, 238 KB)

0.03 (10-30-2016, 211 KB)

0.02 (10-29-2016, 199 KB)

0.01 (10-29-2016, 115 KB) First release.


© 2016 Steve Nickolas. Plugins may have other copyrights.