3863010d07
Change initialize_texture to return an object containing width and height, since the GUI uses textport textures of various sizes. Add scale factors to text, text80, and lores shaders and set them as Uniforms. |
||
---|---|---|
.gitignore | ||
apple2.rom | ||
apple2e.cpp | ||
apple2e.rom | ||
apple2font.ppm | ||
COLORBOUNCE.A | ||
COLORBOUNCESOUND.A | ||
cycles.py | ||
d6502.c | ||
dis6502.cpp | ||
dis6502.h | ||
diskII.c600.c67f.bin | ||
emulator.h | ||
extractglyphs.cpp | ||
fake6502.c | ||
fake6502.h | ||
FRACTAL.A | ||
genkeys.py | ||
genrows.py | ||
graph_cycles_before_new_insn.py | ||
GRCOLORS.A | ||
instructions_by_first_appearance_clock.csv | ||
interface.cpp | ||
interface.h | ||
keyboard.cpp | ||
keyboard.h | ||
Makefile | ||
QUADRADOODLE.A | ||
RAY1.A | ||
README.md | ||
sound_digitizer.dsk | ||
switches.txt | ||
testao.cpp |
Apple2e
Yet another Apple //e emulator.
I wrote this not because the world needed another //e emulator, but because I wanted to have the fun of building a thing from scratch to run my old Apple //e software.
At the time of writing, the emulator handles only 40-column text mode and no floppy.
There are several AppleSoft files in this project (*.A
) that can be copied into the clipboard and then pasted into the emulator window with CMD-V.
Thanks to Lawrence Kesteloot for the original keyboard code, and Bart Grantham for extracting all our old floppy disk images!
Thanks to Mike Chambers (miker00lz@gmail.com) for his 6502 CPU emulator, which I used as a reference when mine hung on "PRINT 5".
Requirements for building:
- GLFW
- libao
- OpenGL 3.2-compatible system
- C++11
- Currently the project only builds on MacOSX because of the linker line in
Makefile
.
On MacOSX with MacPorts, the GLFW and libao dependency can be satisfied with glfw
and libao
ports. According to https://support.apple.com/en-us/HT202823, all modern Macs have OpenGL 3.2 or later. On my machine, I've been compiling with a g++ that outputs Apple LLVM version 8.0.0 (clang-800.0.42.1)
for g++ -v
.
Usage:
apple2e [options] ROM.8000.to.FFFF.bin
Options:
-debugger # start in the debugger
-fast # start with CPU running as fast as it can run
-noaudio # stream no audio buffers
-diskII diskIIrom.bin {floppy1image.dsk|none} {floppy2image.dsk|none}
Examples of operation:
# Use original Apple ][ ROM, no floppy controller,
# at maximum available clock rate.
apple2e -fast apple2o.rom
# Use Apple //e ROM, add diskII controller with two floppies,
# put LodeRunner.dsk in drive 1 and nothing in drive 2. Attempt
# to run at 1.023 MHz.
apple2e -diskII diskII.c600.c67f.bin LodeRunner.dsk none apple2e.rom < /dev/null
# Use updated Apple ][ ROM, attempt to run at 1.023 MHz, but
# don't output audio.
apple2e -noaudio apple2.rom
Useful debugger commands:
reset # Press CTRL-RESET
reboot # Press CTRL-OpenApple-RESET
fast # run CPU as fast as it can go
slow # Approximate CPU at 1.023 MHz
debug N # Set debug flags to N (decimal). See apple2e.cpp for flags
go # Exit debugging, free-run.
# Enter a blank line to step one instruction
When the window opens, the emulator displays a user interface panel to the right of the graphics screen. The buttons and icons are as follows:
- RESET - simulate pressing CONTROL and RESET keys and releasing
- REBOOT - simulate pressing CONTROL and Open-Apple and RESET keys and releasing
- FAST - toggle between running at 1.023MHz and running the CPU as fast as possible (audio will stop in "fast" mode)
- CAPS - toggle caps lock forcibly on or off.
- COLOR - switch between color hi-res graphics and monochrome.
- PAUSE - pause or resume running the CPU.
- Floppy drive icons: Drag and drop floppy
.dsk
files onto a drive to "insert" the flopy disk. Click the drive icon to "eject" the floppy disk.
If no joystick or gamepad is configured, the Apple 2 screen acts as a joystick. To configure a joystick, store the GLFW numbers of the two axes and two buttons in "joystick.ini". A very skilled practitioner may be able to print the joysticks, axes, and buttons by modifying interface.cpp.