AppleWin/linux.md

77 lines
2 KiB
Markdown
Raw Normal View History

2018-02-10 17:33:54 +00:00
# Linux
## Structure
There are 3 projects
* libapple: the core emulator files
* applen: a frontend based on ncurses
* qapple: Qt frontend
The libapple interface is a *link time* interface: some functions are not defined and must be provided in order to properly link
2018-02-10 17:33:54 +00:00
the application. These functions are listed in [interface.h](source/linux/interface.h).
The main goal is to reuse the AppleWin source files without changes: only where really necessary the AppleWin source files have
been modified, mostly for
* header files issues
* const char *
* STL constructor issues (see Disk_t and HDD)
* exclude some Windows heavy blocks (source/MouseInterface.cpp)
## What works
Some key files have been completely reimplemented or discarded:
* AppleWin.cpp
* Video.cpp
* Frame.cpp
* NTSC.cpp
Some features totally ignored:
* NSTC colors
* ethernet
* serial port
* sound
* debugger
* speech
The rest is in a usable state.
### applen
Frontend based on ncurses, with a ASCII art graphic mode.
Keyboard shortcuts
* F2: terminate emulator
* F12: Load Snapshot
* ALT-RIGHT: wider hi res graphis
* ALT-LEFT: narrower hi res graphics
* ALT-UP: vertical hi res (smaller)
* ALT-DOWN: vertical hires (bigger)
2018-02-10 17:33:54 +00:00
In order to properly appreciate the wider hi res graphics, open a big terminal window and choose a small font size.
The joystick uses evdev (currently the device name is hardcoded).
2018-02-10 17:33:54 +00:00
### qapple
This is based on Qt, currently tested with 5.10
* keyboard shortcuts are listed in the menu entries
* graphics: code borrowed from linapple, no NTSC color
* lo res in color
* hi res in BW
* joystick: it uses QtGamepad (correct names will only be displayed with 5.11)
* emulator runs in the main UI thread
* Qt timers are very coarse: the emulator needs to dynamically adapt the cycles to execute
* full speed when disk spins execute up to 5 ms real wall clock of emulator code (then returns to Qt)
## Build
The project can be built using cmake.
qapple can be managed from Qt Creator as well and the 2 have coexisted so far, but YMMV.