Menu ▾ ▴

Tree [678934] master /
 History

HTTPS access


File Date Author Commit
 LibA2 2026-04-17 Brandon LaCava Brandon LaCava [d7fd10] v004 : Fix Linux build
 QA2 2026-04-17 Brandon LaCava Brandon LaCava [d7fd10] v004 : Fix Linux build
 SDL 2026-04-17 Brandon LaCava Brandon LaCava [75a689] v004 : Linux build fix, part1
 doxy 2018-10-03 Brandon LaCava Brandon LaCava [5f263e] Initial commit
 ffmpeg 2026-03-27 Brandon LaCava Brandon LaCava [5273c1] v004: Linux build fix
 libarchive 2026-03-27 Brandon LaCava Brandon LaCava [c3e135] v004: archive file support
 mac_dmg 2026-04-16 Brandon LaCava Brandon LaCava [e246b1] v004 : Mac build, arm64, fat
 zlib 2026-04-16 Brandon LaCava Brandon LaCava [e246b1] v004 : Mac build, arm64, fat
 .gitignore 2026-04-16 Brandon LaCava Brandon LaCava [e87b81] v004 : Better Mac Alt key handling
 A2.pro 2018-10-03 Brandon LaCava Brandon LaCava [5f263e] Initial commit
 INSTALL 2026-04-17 Brandon LaCava Brandon LaCava [d7fd10] v004 : Fix Linux build
 README 2026-04-16 Brandon LaCava Brandon LaCava [e87b81] v004 : Better Mac Alt key handling
 TODO 2026-04-16 Brandon LaCava Brandon LaCava [e246b1] v004 : Mac build, arm64, fat
 pkg_linux.sh 2026-04-17 Brandon LaCava Brandon LaCava [d7fd10] v004 : Fix Linux build
 pkg_macos.sh 2026-04-16 Brandon LaCava Brandon LaCava [e246b1] v004 : Mac build, arm64, fat
 pkg_macos_arm.sh 2026-04-17 Brandon LaCava Brandon LaCava [d7fd10] v004 : Fix Linux build
 pkg_macos_fat.sh 2026-04-17 Brandon LaCava Brandon LaCava [d7fd10] v004 : Fix Linux build
 pkg_macos_intel.sh 2026-04-17 Brandon LaCava Brandon LaCava [d7fd10] v004 : Fix Linux build
 pkg_windows.sh 2026-04-17 Brandon LaCava Brandon LaCava [d7fd10] v004 : Fix Linux build

Read Me

QA2
A Qt-based Apple //e emulator written in C++.
Copyright 2018-2026 by Brandon LaCava
https://sourceforge.net/projects/qa2/

Features:
* Cross-platform, based on Qt.
* Clean, commented, understandable C++ code, with full Doxygen markup.
* All text and graphics modes emulated, as well as audio.
* DSK (DOS or ProDOS ordering), NIB, and 2MB format support.
* Several archive formats supported: ZIP, 7Z, BZIP2, RAR, TGZ.
* Gamepads supported for joystick emulation.
* Serial/Parallel port emulation via serial and telnet.
* Save machine state to file.
* Mouse.
* No-Slot-Clock.
* Mockingboard A.
* Extended 80-col card with RAM up to 16MB.
* RamFactor with RAM up to 8MB.
* Visual debugger.
* RESTful API for easy remote manipulation.
* MIT-licensed source code.


Disk image loading
==================

Load disk images via the preferences dialog, or right click on the
disk controller icon for the appropriate slot in the bottom right
corner.

If loading from an archive file (zip, tgz, etc...) it will load the first
disk image file it finds inside the archive. Disk images inside archives
are considered read-only.

Use the ProdosBlockDevice peripheral card to load images > 140k.


No Slot Clock
=============
No Slot Clock is mapped to the C8 ROM space.
Enable it via the Add-ons tab in the preferences dialog.


Key mappings
============

    Common
    ------
    F1              -> Help
    F2              -> Reset
    F4              -> Emulator Run
    F5              -> Emulator Pause
    F12             -> Toggle Debugger
    Shift+Up        -> Joystick Up
    Shift+Down      -> Joystick Down
    Shift+Left      -> Joystick Left
    Shift+Right     -> Joystick Right

    Linux
    -----
    LeftControl     -> Ctrl
    RightControl    -> Ctrl
    LeftAlt         -> OpenApple
    RightAlt        -> ClosedApple

    Windows
    -------
    LeftControl     -> Ctrl
    RightControl    -> Ctrl
    LeftAlt         -> OpenApple
    RightAlt        -> ClosedApple

    Mac
    ---
    LeftControl     -> Ctrl
    RightControl    -> Ctrl
    LeftOption      -> OpenApple
    RightOption     -> ClosedApple


REST API
========
You can use these REST commands to control the machine remotely at runtime.
This is very useful for A2 development, especially assembly language.
Default port is 5555, you can change it in the app preferences.


    Set memory block
    ----------------
    PUT
    http://localhost:5555/api/setmem/<ADDR>
    Body contains binary data blob
    Data will be copied to A2 <ADDR>
    Example:
    curl -X PUT --data-binary "@file.bin" -H "Content-Type: application/octet-stream" "http://localhost:5555/api/setmem/0x300"


    Set PC
    ----------------
    PUT
    http://localhost:5555/api/setpc/<ADDR>
    PC will be set to A2 <ADDR>
    Example:
    curl -X PUT http://localhost:5555/api/setpc/0x300


    Execute code
    ----------------
    PUT
    http://localhost:5555/api/exec/<ADDR>
    Body contains binary data blob
    Data will be copied to A2 <ADDR> and PC set to A2 <ADDR>
    Example:
    curl -X PUT --data-binary "@file.bin" -H "Content-Type: application/octet-stream" "http://localhost:5555/api/exec/0x300"