Apple //e emulator
Go to file
Aaron Culliney 6b901dff07 Avoid thread race with testprefs.c 2017-12-03 11:34:11 -08:00
Android Avoid thread race with testprefs.c 2017-12-03 11:34:11 -08:00
Apple2Mac Clean up a number of Xcode build warnings 2017-09-28 16:27:12 -07:00
disks Refactor Disk ][ API to improve tracing conformance with AppleWin 2016-10-02 13:55:05 -07:00
docs Merge branch 'develop' ... latest Linux, Android, and Mac variant 2015-11-14 11:10:11 -08:00
external Rename external directory to something GitHub recognizes 2016-09-24 12:44:50 -07:00
src Use "inverse" for keyboard selection color... 2017-11-26 16:20:05 -08:00
.gitignore Reference external ROM directory 2016-09-10 16:21:38 -06:00
ASM Refactor to use GNU build tools 2014-01-22 20:51:50 -08:00
AUTHORS Refactor to use GNU build tools 2014-01-22 20:51:50 -08:00
COPYING Upgrade to GPLv3 "or later" and update copyrights 2015-10-22 21:09:13 -07:00
ChangeLog Refactor to use GNU build tools 2014-01-22 20:51:50 -08:00
Makefile.am First cut at CLI ncurses video renderer 2017-09-09 18:06:43 -10:00
NEWS Refactor to use GNU build tools 2014-01-22 20:51:50 -08:00
PROBLEMS Refactor to use GNU build tools 2014-01-22 20:51:50 -08:00
README initial source drop, apple2-emul-0.7.4.tar.gz 2013-06-11 00:08:15 -07:00
README.debugger initial source drop, apple2-emul-0.7.4.tar.gz 2013-06-11 00:08:15 -07:00
README.md Update README.md 2016-10-26 21:31:42 -07:00
TODO initial source drop, apple2-emul-0.7.4.tar.gz 2013-06-11 00:08:15 -07:00
configure.ac Streamline configure checks and display disabled A/V systems 2017-09-28 16:28:10 -07:00
external-disks Enable testing of 3rd-party disk images 2016-08-27 09:17:23 -07:00
externals Rename external directory to something GitHub recognizes 2016-09-24 12:44:50 -07:00
reconf.sh Refactor to use GNU build tools 2014-01-22 20:51:50 -08:00
valgrind.suppress Fix shutdown codepaths 2015-05-31 13:43:51 -07:00

README.md

Apple //ix

Apple2ix is an Apple //e (8bit 65c02 CPU) emulator designed to work on various POSIX platforms.

Lineage

Apple2ix derives from the apple2-emul-linux project originally coded by various developers in the mid 1990's and FTP-uploaded as source tarballs to the original tsx-11.mit.edu Linux archive.

The original software was designed to work from the Linux console rendering via SVGAlib. It ran on par to the 1MHz Apple //e on an i386 (Pentium 100 class) or better machine. Later ports added X11 graphics support based on the original X11 DOOM source code drop, ty JC!

As of October 2016, the resurrected Apple2ix runs on x86 and ARM Android devices, x64 MacOSX 10.9+, and x64 GNU/Linux

Project Goals

  • Portability and code resilience across a wide range of modern POSIXy systems including MacOSX, desktop Linux/BSD, iOS, Android. If you are on Windows, just use the excellent AppleWin emulator!
  • Language/platform/API minimalism for core emulation modules (prefer coding to POSIX APIs and using C99 over all other choices)
  • Reasonable emulation fidelity to the original Apple //e machine (timing, video, audio, etc...)
  • Good platform citizenship for each port (prefer coding in language-of-choice promoted by platform--e.g.: Objective-C/Swift on Darwin, Java on Android, ...)

Project Tech

  • C99 dialect of the C programming language for the majority of the project
  • x86 and ARM assembly language for 65c02 CPU emulation loop
  • Extensive tests for 65c02 CPU, Apple //e VM, disks, and display (expected framebuffer output)
  • OpenGLES 2.x graphics with simple portable GLSL shaders
  • OpenAL and OpenSLES audio (emulated speaker and emulated Mockingboard/Phasor soundcards)
  • Objective-C and Cocoa APIs (Mac/iOS variant)
  • Java and Android APIs (Android app)

Android

Available on Google Play.

Running at 30FPS on ancient Gingerbread (Android 2.3.3) devices: Apple2ix on Samsung Galaxy Y running Gingerbread

Running at 60FPS on modern Android devices: Apple2ix on Nexus 6

Other Maintained Ports

  • Desktop GNU/Linux (GNU build)
  • macOS/iOS (Xcode build)

Semi-Ordered TODO

  • Double-LORES graphics (used in Dagen Brock's Flappy Bird clone) are ugly/incorrect ... fix 'em
  • Double-HIRES graphics are also ugly/icorrect ... fix 'em
  • Improve VBL timing and vSync matching to the device/system refresh rate
  • CPU module ports: aarch64, Clang IR (bitcode)
  • iOS/iDevice ports. (in progress)
  • Net/Open/Free-BSD port
  • OpenGL shaders/tricks for style (emulating of various NTSC screen artifacts)
  • Emulation features ... (3.5" disk, AppleHD, Phasor, printer, ethernet, ...)
  • Debugger rewrite with tests ... improved debugger routines (CLI/curses debugger? GDB/LLDB module?)
  • Port to web ... emscripten/asmjs/web assembly

DOS 3.3