This is the first version of a TRS-80 Emulator for Android.
It is based on sdltrs that is itself derived from the popular xtrs
emulator originally written for X-Windows. This port adds a layer for Android.
It is recommended to use Android Studio for compiling the sources. You will
need to install the Android SDK and NDK.
Next clone the TRS-80 Emulator sources via git:
git clone git://git.code.sf.net/p/trs80/code TRS-80
Next import the project into Android Studio via File -> Import Project...
At this point you should be able to compile the sources. Note that running
the TRS-80 emulator inside the Android emulator is very slow and Chromecast
is also not supported by the Android emulator. It is recommended to use a real
device for testing and debugging.
sdk.dir=/Users/johndoe/Downloads/android-sdk-macosx
ndk.dir=/Users/johndoe/Downloads/android-ndk-r9d
build-tools
directory or check the SDK./gradlew assembleDebug
adb install -d -r app/build/outputs/apk/app-debug.apk
The original C sources of sdltrs reside in the 'jni' folder. The Android
layer uses JNI (Java Native Interface) to access the C sources from
Java. Whenever I made a change to the original sdltrs sources, I used
#ifdef ANDROID to annotate my changes. This should make it easy to see
what was changed.
Some of the key files:
The emulator features different keyboard layouts (original, compact, etc).
The XML layout resources can be found in res/layout/keyboard_*.xml. Class Key
implements the behavior of one key of the keyboard. Class Key is a custom
Android widget that is referenced from the aforementioned XML layout files.
Whenever the user 'clicks' on a key, class Key uses the KeyboardManager to
add a key event which will eventually be delivered to xtrs via SDL_PollEvent.
File res/values/attrs.xml defines an enum for all the keys available on a TRS
machine. The TK_* constants in class Key mirror the definitions in attrs.xml.
When a user presses a key, the TK_* ID needs to be mapped to a
SDL_KeyboardEvent. Specifically, the SDL virtual key code and the unicode
character are needed to populate SDL_KeyboardEvent. This mapping is achieved
with file res/xml/keymap_us.xml. Once the virtual key code and unicode
character are determined, KeyboardManager uses XTRS.addKeyEvent() to fill a
key buffer in the native layer.
The following resources have been used for this project: