apple2ix/README.md

80 lines
3.9 KiB
Markdown
Raw Normal View History

2013-12-14 18:49:15 +00:00
Apple //ix
==========
2015-03-13 07:14:44 +00:00
Apple2ix is an Apple //e emulator implemented primarily in C with x86, x86-64, and ARM assembly language for the 65c02 CPU emulation module. In addition you will find a smattering of interface code in Objective-C/Cocoa, Java/Android, and GLSL.
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!
2015-10-25 20:12:17 +00:00
As of November 2015, the resurrected Apple2ix runs on x64 MacOSX 10.9+, x64 Debian GNU/Linux, and ARM Android
2013-12-14 18:49:15 +00:00
Project Goals
-------------
2015-03-13 07:14:44 +00:00
* Portability and code resilience across a wide range of modern platforms including MacOSX, desktop Linux/BSD, iOS, Android -- *But not Windows, just use the excellent [AppleWin](https://github.com/AppleWin/AppleWin) emulator if you're on Windows!*
* Reasonable emulation fidelity to the original Apple //e machine (timing, video, audio, etc...)
2015-10-25 20:12:17 +00:00
* Language minimalism for core emulation modules (prefer coding in POSIX C over all else), except for CPU module which should be in assembly
* Good platform citizenship for menu system (prefer coding in language-of-choice promoted by platform--e.g.: Objective-C/Swift on Darwin, Java on Android, ...)
2015-04-12 23:14:04 +00:00
Android
-------
2015-10-28 07:04:03 +00:00
[Available on Google Play](https://play.google.com/store/apps/details?id=org.deadc0de.apple2ix.basic).
2015-04-12 23:14:04 +00:00
2015-10-25 20:12:17 +00:00
Running at 30FPS on Gingerbread (Android 2.3.3):
2015-10-25 20:14:28 +00:00
![Apple2ix on Samsung Galaxy Y running Gingerbread](https://raw.github.com/mauiaaron/apple2/develop/docs/android-galaxyY.png "Apple //ix")
2015-04-12 23:14:04 +00:00
2015-10-25 20:12:17 +00:00
Running at 60FPS on Nexus 6 running Lollipop (Android 5.1.1):
2015-10-25 20:14:28 +00:00
![Apple2ix on Nexus 6](https://raw.github.com/mauiaaron/apple2/develop/docs/android-nexus6.png "Apple //ix")
2014-12-07 21:41:00 +00:00
Mac Package
-----------
2014-12-07 22:14:25 +00:00
![Apple2Mac](https://raw.github.com/mauiaaron/apple2/master/docs/Apple2Mac.png "Apple2Mac")
2014-12-12 01:23:21 +00:00
A binary package for Macintosh is available at [deadc0de.org](http://deadc0de.org/Apple2Mac/Apple2Mac-0.9.dmg)
Size : 10240000 (10MB)
SHASUM : 81f2d55c2daaa0d3f9b33af9b50f69f6789738bf
2014-12-12 01:18:01 +00:00
2014-12-12 01:23:21 +00:00
Alt Size : 76820480 (75MB)
ALTSUM : 488a40d7f1187bcfd16d0045258f606a95f448cb
2014-12-07 21:41:00 +00:00
2015-03-13 07:14:44 +00:00
Linux+ Package
--------------
2013-12-14 18:49:15 +00:00
2015-03-13 07:14:44 +00:00
For Linux and *BSD, I do not personally relish being a package/port maintainer, so you should `./configure --prefix=...`, `make`, `make install` like it's 1999 ;-)
You will need GCC or Clang compiler and other tools as determined by the `configure` script. Use the source!
2013-12-14 18:49:15 +00:00
2014-12-07 22:14:25 +00:00
![Apple //ix](https://raw.github.com/mauiaaron/apple2/master/docs/Apple2ix.png "Apple //ix")
2014-12-07 21:41:00 +00:00
Project Tech
------------
2013-12-14 18:49:15 +00:00
2014-12-07 22:24:27 +00:00
* C language for the majority of the project (still the most portable/reliable language after all these years ;-)
2015-03-13 07:14:44 +00:00
* x86 and ARM assembly language for 65c02 CPU tightloop
2015-10-25 20:12:17 +00:00
* Extensive tests for 65c02 CPU, Apple //e VM, disks, and display (expected framebuffer output)
2015-03-13 07:14:44 +00:00
* OpenGLES 2.x graphics with GLSL shaders
2015-10-25 20:12:17 +00:00
* OpenAL and OpenSLES audio (emulated speaker and emulated Mockingboard/Phasor soundcards)
2014-12-07 21:52:22 +00:00
* Objective-C and Cocoa APIs (Mac/iOS variant)
2015-03-13 07:14:44 +00:00
* Java and Android APIs (Android app)
2014-12-07 21:41:00 +00:00
![DOS 3.3](https://raw.github.com/mauiaaron/apple2/master/docs/DOS33.png "DOS 3.3 Applesoft BASIC and //e monitor")
2013-12-14 19:15:27 +00:00
2013-12-14 18:49:15 +00:00
Semi-Ordered TODO
-----------------
2015-03-13 07:14:44 +00:00
* DHIRES graphics are ugly, fix 'em
2015-10-25 20:12:17 +00:00
* iOS/iWatch ports
2015-03-13 07:14:44 +00:00
* Proper VBL timing and vSync matching to the device (if available)
2014-12-21 22:10:48 +00:00
* OpenGL shaders/tricks for style (various screen artifacts) and functionality (Disk ][ status overlays, etc)
2014-12-07 21:41:00 +00:00
* Emulator save/restore and image compatibility with AppleWin
* Other feature parity with AppleWin
2015-03-13 07:14:44 +00:00
* Improved debugger routines (CLI/curses debugger?)
* CPU module variants as-needed in aarch64, plain C, Clang IR, ...
2014-12-07 21:52:22 +00:00
* Emscripten/web frontend?