Apple //e emulator
Go to file
2019-06-09 11:14:28 -07:00
Android Allow Android device sensor portrait mode 2019-06-09 11:14:28 -07:00
Apple2Mac Lite refactor/rename keys internal API 2019-03-10 12:17:06 -07:00
disks Fix testdisplay after video scanner upheaval 2018-11-17 10:39:28 -08:00
docs
external Rename external directory to something GitHub recognizes 2016-09-24 12:44:50 -07:00
src Correctly handle shifted keys in JSON touch keypad joystick and simplify associated JSON preferences 2019-06-09 10:53:31 -07:00
.gitignore Upgraded Android Studio 2019-06-01 17:17:20 -07:00
AUTHORS
configure.ac First cut at implementing conformant video scanner 2018-07-29 18:33:17 -07:00
COPYING
external-disks
externals Rename external directory to something GitHub recognizes 2016-09-24 12:44:50 -07:00
Makefile.am Enable Chromium systrace for all platforms 2018-11-24 15:15:34 -08:00
README.md Update README.md 2018-11-21 13:02:21 -08:00
reconf.sh
valgrind.suppress

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 macOS 10.9+, and x64 GNU/Linux

Project Goals

  • Portability and code resilience across a wide range of modern POSIXy systems including macOS, 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)

Maintained Ports

  • Android 4.0+ (Android Studio & NDK build)
  • Desktop GNU/Linux (GNU tools build)
  • macOS/iOS (Xcode build)

Published Android App

Available on Google Play.

Running at 60FPS on Android 4.0+ devices: Apple2ix on Nexus 6

Semi-Ordered TODO

  • Emulation feature implementations ... (mouse, printer, 3.5" disk, AppleHD, Phasor, ethernet?, ...)
  • OS Ports : Net/Open/Free-BSD ports
  • CPU arch ports: aarch64, RISC-V, Clang IR (bitcode)
  • Port to web assembly

DOS 3.3