GSSquared feature catalog
A catalog of user-visible capabilities, host integrations, and emulator-specific behavior. It is not a list of normal Apple II hardware fidelity (see baseline below).
Audience: casual users and power users (custom configs, debug protocol, automation).
Maintainers: table columns (id, hosts, verify, automation) are designed so a release checklist or automated tests can be filtered from this doc later. See Suggested smoke tiers.
How to read this document
Status
| Value |
Meaning |
| Complete |
Shipped and intended for regular use |
| Partial |
Usable with known gaps |
| Planned |
Documented intent; not shipped or incomplete |
| By choice (omitted) |
Intentionally out of scope |
Catalog table columns
| Column |
Purpose |
id |
Stable slug for tests and checklists (do not reuse when behavior changes) |
feature |
Short name |
status |
See above |
hosts |
all, macOS, win, linux, web, or combinations |
preconditions |
Machine state, platform, or hardware needed |
verify |
Observable confirmation (human or automated) |
automation |
manual, cli, debug-socket, or both (cli + debug-socket) |
notes |
Deviations, limits, links |
Inclusion rubric (what belongs here)
Include host integration, GSSquared workflow (System Select, menus, OSD, speed, shaders), automation surfaces, per-device user capabilities (formats, mounts, attachments), and deviations from real hardware.
Exclude generic “Apple II has text mode” fidelity unless GSSquared adds an angle (engine choice, optional card, known limit).
Fidelity baseline
GSSquared models standard Apple II / IIgs behavior for supported machines and video modes. For CPU, memory, and mode matrices see Documentation.md.
At a glance
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
platform.host.macos |
macOS app bundle (DMG) |
Complete |
macOS |
— |
Launch .app; ROMs/assets included |
manual |
README.md |
platform.host.win |
Windows portable ZIP |
Complete |
win |
— |
Run GSSquared.exe |
manual |
MSYS2 build; no installer required |
platform.host.linux |
Linux AppImage |
Complete |
linux |
— |
Run AppImage |
manual |
|
platform.host.web |
Browser WebAssembly build |
Complete |
web |
COOP/COEP server |
Load /live or local serve.py |
manual |
Web.md, Emscripten.md |
machine.apple2 |
Apple ][ |
Complete |
all |
— |
Boot built-in tile or -p 0 |
cli |
|
machine.apple2plus |
Apple II Plus |
Complete |
all |
— |
Boot tile or -p 1 |
cli |
|
machine.apple2e |
Apple IIe |
Complete |
all |
— |
-p 2 |
cli |
|
machine.apple2e-enh |
Apple IIe Enhanced |
Complete |
all |
— |
-p 3 |
cli |
|
machine.apple2e-65816 |
Apple IIe with 65816 |
Complete |
all |
— |
-p 4 |
cli |
Optional VIDHD card in custom configs |
machine.apple2gs |
Apple IIgs (ROM 01 / ROM 03 tiles) |
Complete |
all |
— |
-p 5; pick ROM tile |
cli |
Separate ROM 01 vs ROM 03 platforms |
diff.8-and-16-bit |
8-bit and IIgs in one app |
Complete |
all |
— |
Switch machines via System Select |
manual |
|
diff.ready-to-run |
ROMs and assets bundled |
Complete |
all |
— |
No separate ROM download |
manual |
|
Getting started and machines
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
start.system-select |
System Select tile row |
Complete |
all |
App launch |
“Choose your retro experience” |
manual |
Select.md |
start.custom-plus |
Create custom machine (+ tile) |
Complete |
all |
— |
Opens config editor |
manual |
ConfigEditor.md |
start.recent-configs |
Recent custom config tiles |
Complete |
all |
Prior .gs2 use |
Tile appears after open |
manual |
Documents/GSSquared/ |
start.launch-config-menu |
File → Launch Config… |
Complete |
all |
Machine off |
Picks .gs2 / Settings.txt; boots |
manual |
|
start.launch-config-arg |
CLI: config path argument |
Complete |
all |
— |
GSSquared Foo.gs2 skips selector |
cli |
Closes to quit, not selector; CommandLine.md |
start.cli-platform |
CLI: -p N auto-launch |
Complete |
all |
— |
get_status → platform_id |
both |
-p 0…5; CommandLine.md |
start.cli-mount |
CLI: -dsXdY=path mount |
Complete |
all |
Config with slot X |
Disk mounted at boot; MOUNT protocol |
both |
Overrides same slot/drive in .gs2; CommandLine.md |
start.cli-sleep |
CLI: -s sleep vs busy-wait |
Complete |
all |
— |
Lower CPU when idle |
cli |
Same as Settings → Sleep/Busy Wait; CommandLine.md |
start.cli-crt-boot |
CLI: -g CRT shader at boot |
Complete |
all |
Native GPU |
Shader on when guest starts |
cli |
Same as F7 at boot; CommandLine.md |
start.cli-debug-socket |
CLI: --debug PATH |
Complete |
macOS, linux, win |
AF_UNIX path |
HELLO on socket |
debug-socket |
CommandLine.md, DebugProtocol.md |
start.cli-no-quit-confirm |
CLI: --no-quit-confirm |
Complete |
all |
— |
SIGTERM exits without Quit modal |
cli |
For harnesses; CommandLine.md |
start.power-off-on |
Power off / on virtual machine |
Complete |
all |
— |
System Select vs running |
manual |
File → Close Emulation; Select.md |
start.shipped-gs2-seed |
Default .gs2 copied to Documents |
Complete |
macOS, win, linux |
First run |
Files in Documents/GSSquared/ |
manual |
Migration from old prefs path |
Native menus: Menus.md. Control Panel / hover strip / drives: OSD.md. CLI flags: CommandLine.md.
File
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
workflow.file.new-disk-525-unfmt |
New Disk Image → 5.25 Unformatted |
Complete |
macOS, win, linux |
— |
.woz on disk; not auto-mounted |
manual |
BlankFloppy.md |
workflow.file.new-disk-525-dos33 |
New Disk → 5.25 DOS 3.3 |
Complete |
macOS, win, linux |
— |
Formatted template file |
manual |
|
workflow.file.new-disk-525-prodos |
New Disk → 5.25 ProDOS |
Complete |
macOS, win, linux |
— |
Formatted template |
manual |
|
workflow.file.new-disk-35-prodos |
New Disk → 3.5 ProDOS |
Complete |
macOS, win, linux |
— |
800K template |
manual |
|
workflow.file.new-disk-hdv-empty |
New Disk → 32M HD unformatted |
Complete |
macOS, win, linux |
— |
32M .hdv zeros |
manual |
|
workflow.file.new-disk-hdv-prodos |
New Disk → 32M HD ProDOS |
Complete |
macOS, win, linux |
— |
Formatted 32M volume |
manual |
|
workflow.file.drives-submenu |
File → Drives (per-drive mount) |
Complete |
all |
Emulation running |
Same as OSD mount |
manual |
Dynamic drive list; Menus.md |
workflow.file.open-disk |
File → Drives mount picker |
Complete |
all |
Emulation running |
Mount via picker |
manual |
Same as Drives submenu (no “Open Disk Image” item) |
workflow.file.open-system |
Launch Config / System Select |
Complete |
all |
Machine off |
Loads saved config |
manual |
Not a File → Open System item; Select.md |
workflow.file.save-system |
Config editor Save / Save As |
Complete |
all |
— |
.gs2 written; mounts only |
manual |
No CPU/RAM state; ConfigEditor.md |
workflow.file.mount-drivers |
File → Mount Drivers |
Complete |
all |
IIgs + BazFast + free drive |
/GS2.DRIVERS RO volume |
manual |
Storage.md |
workflow.file.screenshot |
File → Save Screenshot |
Complete |
macOS, win, linux |
— |
PNG on Desktop |
manual |
Shift+PrintScreen |
workflow.file.close-emulation |
File → Close Emulation |
Complete |
all |
Machine running |
Returns to System Select |
manual |
Win: required before Quit |
workflow.file.quit |
Quit application |
Complete |
all |
Win: machine off |
Process exits |
manual |
Dirty-disk prompts unless --no-quit-confirm |
Edit
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
workflow.edit.copy-screen |
Copy Screen to clipboard |
Complete |
all |
— |
Paste image in host app |
manual |
PrintScreen |
workflow.edit.paste-text |
Paste Text into guest |
Complete |
all |
II / IIe / IIgs ADB |
Characters appear; one/frame |
both |
Shift+Insert; PASTE_TEXT |
Machine
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
workflow.machine.reset |
Reset (Ctrl-Reset) |
Complete |
all |
Running |
Guest reboot |
both |
reset / key injection |
workflow.machine.restart |
Restart (Ctrl-OA-Reset) |
Complete |
all |
Running |
Hard reset |
both |
|
workflow.machine.pause |
Pause / Resume emulator |
Complete |
all |
— |
Execution frozen |
both |
pause / continue_exec |
workflow.machine.capture-mouse |
Capture Mouse |
Complete |
all |
— |
Relative mouse mode |
manual |
Mouse.md |
Settings
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
workflow.settings.speed |
System Speed presets |
Complete |
all |
— |
1.0 / 2.8 / 7.1 / 14.3 / Unlimited |
manual |
Menu is 1.0–14.3; Unlimited via F9 / OSD / hover; Menus.md |
workflow.settings.sleep |
Sleep / busy-wait |
Complete |
all |
— |
CPU usage changes |
cli |
-s |
workflow.settings.gamepad-mode |
Game Controller modes |
Complete |
all |
— |
Joyport / mouse-as-stick / gamepad |
manual |
Joysticks.md |
workflow.settings.joyport-select |
Joyport Controller Select L/C/R |
Complete |
all |
Joyport mode |
AN0 behavior |
manual |
|
workflow.settings.no-gamepad-float |
Disconnected When No Gamepad |
Complete |
all |
— |
Paddles float vs centered |
manual |
Total Replay visibility |
workflow.settings.modifier-swap |
OA/CA modifier mapping swap |
Planned |
all |
— |
— |
— |
No host menu; mappings are fixed in KeyboardShortcuts.md |
workflow.settings.mono-helper |
Mono Helper (audio) |
Complete |
all |
— |
Menu toggle |
manual |
Settings → Mono Helper; Menus.md |
workflow.settings.rmb-accel |
Right Mouse Button Accelerate |
Complete |
all |
— |
Faster CPU while RMB held |
manual |
Settings menu; Mouse.md |
Keyboard shortcuts (emulator)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
input.shortcut.f1-release-mouse |
F1 release captured mouse |
Complete |
all |
Capture on |
Cursor free |
manual |
KeyboardShortcuts.md |
input.shortcut.f2-display-cycle |
F2 cycle display engine |
Complete |
all |
— |
Composite/RGB/mono |
manual |
|
input.shortcut.f3-fullscreen |
F3 fullscreen toggle |
Complete |
all |
— |
Window borderless |
manual |
|
input.shortcut.f4-osd |
F4 Control Panel |
Complete |
all |
— |
Panel opens |
manual |
|
input.shortcut.f5-ntsc-mode |
F5 pixel-blur vs rectangular |
Complete |
all |
— |
Picture changes |
manual |
Scaling, not NTSC vs legacy; Displays.md |
input.shortcut.ctrl-f5-filter |
Ctrl+F5 linear vs nearest |
Planned |
all |
— |
— |
— |
Not implemented; F5 is the scale-mode toggle |
input.shortcut.f6-joyport-cycle |
F6 joystick mode cycle |
Complete |
all |
— |
Joyport/gamepad/mouse |
manual |
|
input.shortcut.f7-crt |
F7 CRT shader |
Complete |
all |
— |
Shader toggles |
manual |
|
input.shortcut.f9-speed |
F9 / Shift+F9 speed |
Complete |
all |
— |
Speed changes |
manual |
|
input.shortcut.f10-debugger |
F10 debugger |
Complete |
all |
— |
Debugger window |
manual |
|
input.shortcut.gs-french-layout |
IIgs French AZERTY via guest CP |
Complete |
all |
Guest set to French |
French characters |
manual |
Host menu does not pick layout |
Display and HUD
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
display.engine.composite |
Composite (NTSC) monitor |
Complete |
all |
— |
Color artifacting |
manual |
Cycle-accurate path |
display.engine.rgb |
GS RGB monitor |
Complete |
all |
IIgs default RGB |
Exact GS palette mapping |
manual |
Displays.md |
display.engine.mono |
Monochrome green/amber/white |
Complete |
all |
— |
HUD + menu switch |
manual |
|
display.hud.stats |
HUD → Stats overlay |
Complete |
all |
— |
FPS/stats visible |
manual |
Off by default |
display.hud.drives |
HUD → Drives strip |
Complete |
all |
— |
Activity strip |
manual |
On by default |
display.fullscreen |
Full Screen |
Complete |
all |
— |
Borderless window |
manual |
|
display.second-sight-text |
Second Sight Text mode |
Complete |
all |
IIgs + Second Sight |
Menu enabled |
manual |
Cards_SecondSight.md |
display.crt-shader |
CRT GPU shader |
Complete |
all |
Native GL/D3D12 |
F7 toggles |
cli |
-g at boot; Displays.md |
display.hover-controls |
Hover speed/display widgets |
Complete |
all |
Mouse not captured |
Face buttons + pickers |
manual |
Automatic left strip; OSD.md |
display.pal-timing |
PAL video timing |
Complete |
all |
PAL .gs2 / clock |
50 Hz behavior |
manual |
Displays.md, ConfigFiles.md |
display.floating-bus |
Floating-bus reads |
Complete |
all |
— |
Demoscene titles |
debug-socket |
Displays.md |
display.cycle-accurate-video |
Cycle-accurate mode switches |
Complete |
all |
— |
Titles that count cycles |
manual |
Frame-organized CPU; Displays.md |
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
audio.menu.fx-toggle |
Drive seek sound effects |
Complete |
all |
— |
Drive seek sounds |
manual |
Always on; stereo pan by drive; no Sound menu |
audio.menu.volume |
Master volume |
By choice (omitted) |
all |
— |
— |
— |
Use host OS volume; no in-app slider |
audio.menu.mb-decorrelate |
Mockingboard decorrelation |
Complete |
all |
Mockingboard |
Wider stereo image |
manual |
Settings → Mono Helper |
Debug menu and OSD
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
debug.ui.window |
Debugger window (F10 / OSD) |
Complete |
all |
— |
ImGui debugger opens |
manual |
UsingTheDebugger.md |
debug.trace-on-quit |
Auto instruction trace on quit |
Complete |
macOS, win, linux |
— |
gssquared-trace.bin in Documents |
manual |
|
debug.osd-button |
OSD Debug button |
Complete |
all |
Hover/OSD visible |
Same as F10 |
manual |
|
OSD / Control Panel (F4)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
workflow.osd.open |
Open Control Panel |
Complete |
all |
— |
F4 or tab button |
manual |
|
workflow.osd.mount-drive |
Mount/unmount via drive icons |
Complete |
all |
— |
Picker; dirty save prompt |
both |
MOUNT / UNMOUNT |
workflow.osd.drag-drop-disk |
Drag disk image onto window |
Complete |
all |
— |
Panel opens; drop on drive |
manual |
|
workflow.osd.serial-buttons |
Serial/parallel attachment UI |
Complete |
all |
Ports present |
File/modem/clipboard/serial |
manual |
SerialConnections.md |
workflow.osd.host-folder |
Host Folder… (Host FST) |
Complete |
macOS, win, linux |
IIgs running |
:Host path changes |
manual |
Not on web |
workflow.osd.slot-view |
Slot card display |
Complete |
all |
— |
Cards listed |
manual |
Editable when configuring |
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
workflow.docs.online |
Online Documentation |
Complete |
all |
Network |
Browser opens docs |
manual |
Menus.md |
workflow.docs.donate |
Donate link |
Complete |
all |
Network |
Browser opens |
manual |
|
workflow.docs.check-updates |
Check For Updates |
Complete |
all |
Network |
Releases page |
manual |
Docs menu |
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
input.keyboard.iiplus |
II+ keyboard mapping |
Complete |
all |
II+ platform |
Keys match doc |
manual |
No REPT key; host autorepeat |
input.keyboard.iie |
IIe keyboard (incl. Delete→0x7F) |
Complete |
all |
IIe |
OA/CA mapped |
manual |
KeyboardShortcuts.md |
input.keyboard.gs-adb |
IIgs ADB keyboard |
Complete |
all |
IIgs |
GS/OS input |
manual |
Full intl keyboard: Planned |
input.deviation.iiplus-hard-reset |
Ctrl-OA-Reset on II+ |
Complete |
all |
II+ |
Hard reset works |
manual |
Not on real II+ game ports |
input.mouse.gs-tracking |
GS/OS mouse tracking |
Complete |
all |
IIgs |
Pointer moves |
manual |
ADB path |
input.mouse.card-iie |
Apple Mouse III card |
Complete |
all |
Card in slot |
Cards_AppleMouse.md |
manual |
|
input.joystick.gamepad |
USB gamepad as joystick |
Complete |
all |
— |
Paddle/button lines |
manual |
|
input.joystick.mouse-as-stick |
Mouse emulates joystick |
Complete |
all |
— |
Stick from mouse |
manual |
|
input.joystick.sirius-joyport |
Sirius / Atari Joyport (F6) |
Complete |
all |
— |
Two sticks via AN0 |
manual |
Joyport.md |
Storage and disk images
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
storage.writeback-unmount |
Buffered writes until unmount |
Complete |
all |
Writable image |
Save/discard dialog |
manual |
Host workflow |
storage.drag-drop |
OS drag-drop onto emulator |
Complete |
all |
— |
Mount on chosen drive |
manual |
Web: in-memory only |
storage.smartport-panel |
BazFast / SmartPort drive panel |
Complete |
all |
bazfast3 card |
Six drive icons |
manual |
“Hard drive” CP |
storage.iso-apm |
ISO with APM → multiple units |
Complete |
all |
ISO + APM |
Partitions mount |
manual |
Read-only ISO |
storage.pmap |
Partition map sidecar mount |
Complete |
all |
.pmap |
Multiple HD images |
manual |
Storage.md |
storage.format.woz21 |
WOZ 2.1 images |
Planned |
all |
— |
— |
— |
Storage.md |
| Format |
R/W |
Typical size |
id |
notes |
.do / .dsk |
RW |
140K |
storage.format.dsk |
|
.po |
RW |
140K |
storage.format.po |
|
.nib |
RO |
140K |
storage.format.nib |
No safe write path |
.woz 1.0/2.0 |
RW |
140K/800K |
storage.format.woz |
Copy protection, half/quarter tracks |
.2mg |
RW |
varies |
storage.format.2mg |
|
.hdv / .img / .hda |
RW |
any |
storage.format.block |
Block devices |
.iso |
RO |
any |
storage.format.iso |
|
WOZ-focused floppy emulation speeds with host CPU throttle (disk “runs faster” in fast modes).
Serial, parallel, and networking
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
conn.file-capture |
Serial/parallel → file |
Complete |
macOS, win, linux |
Port |
Bytes in file |
manual |
|
conn.clipboard |
Serial/parallel → clipboard |
Complete |
macOS, win, linux |
Port |
Text on host clipboard |
manual |
Strip bit 7; CR→LF |
conn.modem |
Hayes modem (SCC / SSC) |
Complete |
macOS, win, linux |
Not web |
TCP via SDL_net |
manual |
Documentation.md; web: web.no-modem |
conn.host-serial |
Attach host UART |
Complete |
macOS, win, linux |
device=serial |
Data to real port |
manual |
SerialPortSpec.md |
conn.gs-scc-ab |
IIgs built-in SCC ports A/B |
Complete |
all |
IIgs |
OSD buttons slot 1/2 |
manual |
|
net.uthernet2-slirp |
Uthernet II via SLIRP |
Complete |
macOS, win, linux |
Card + driver |
TCP/IP in guest |
manual |
Cards_UthernetII.md |
.gs2 [[connections]]: file, modem, echo, clipboard, serial, none — SystemConfigTOML.md.
Audio (emulator angles)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
audio.speaker.fx |
Drive/speaker sound effects |
Complete |
all |
FX on |
Seek clicks |
manual |
Filtered speaker path |
audio.ensoniq |
IIgs Ensoniq DOC |
Complete |
all |
IIgs |
Sound in GS titles |
manual |
Documentation.md |
audio.mockingboard |
Mockingboard AY/6522 |
Complete |
all |
Card(s) |
mb-audit; games |
manual |
Cards_Mockingboard.md |
audio.ensoniq-stereo |
Stereo when guest uses stereo |
Complete |
all |
IIgs |
Pan in headphones |
manual |
Mono → both channels |
Time, NVRAM, and configuration
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
config.editor |
Visual config editor (+ tile) |
Complete |
all |
— |
Slots, disks, connections |
manual |
ConfigEditor.md |
config.gs2-toml |
.gs2 TOML on disk |
Complete |
all |
— |
Load/save round trip |
manual |
SystemConfigTOML.md |
config.bram-in-gs2 |
IIgs battery RAM in .gs2 |
Complete |
all |
IIgs ran |
bram= hex on close |
manual |
Replaces sidecar .bram import |
config.neil-settings |
Import Neil Settings.txt |
Complete |
all |
— |
Opens in editor / launch |
manual |
|
clock.thunderclock |
Thunderclock Plus card |
Complete |
all |
Card |
ProDOS time / TIME SET |
manual |
Cards_Clock.md |
clock.prodos-generic |
Generic ProDOS clock card |
Complete |
all |
Card |
Read-only time |
manual |
Cards_Clock.md |
clock.gs-rtc |
IIgs realtime clock |
Complete |
all |
IIgs |
Matches host TZ |
manual |
ConfigFiles.md |
state.save-restore |
Full machine save states |
Planned |
all |
— |
— |
— |
Design: SaveAndRestore.md; not shipped |
Debugger, tracing, and automation
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
debug.protocol.hello |
Debug protocol handshake |
Complete |
macOS, linux, win |
--debug PATH |
HELLO reply |
debug-socket |
DebugProtocol.md |
debug.protocol.run-control |
Pause / step / continue |
Complete |
macOS, linux, win |
Socket |
EVT_STOPPED |
debug-socket |
|
debug.protocol.mem-regs |
READMEM / WRITEMEM / GET_REGS |
Complete |
macOS, linux, win |
Socket |
Bytes match |
debug-socket |
|
debug.protocol.breakpoints |
Breakpoints |
Complete |
macOS, linux, win |
Socket |
Stop at PC |
debug-socket |
|
debug.protocol.keys |
KEYEVENT / PASTE_TEXT |
Complete |
macOS, linux, win |
Socket |
Guest sees input |
debug-socket |
|
debug.protocol.video-text |
VIDEO_TEXT snapshot |
Complete |
macOS, linux, win |
Socket |
40-col text bytes |
debug-socket |
Not bitmap |
debug.protocol.mount |
MOUNT / UNMOUNT |
Complete |
macOS, linux, win |
Socket |
status code |
debug-socket |
|
debug.protocol.state-get |
STATE_GET (e.g. Ensoniq) |
Complete |
macOS, linux, win |
Socket |
Device blob |
debug-socket |
|
debug.python-client |
In-tree Python gs2debug |
Complete |
macOS, linux, win |
PYTHONPATH |
Examples run |
debug-socket |
gs2debug.md |
debug.mcp-server |
Go MCP sidecar (external) |
Complete |
macOS, linux, win |
Separate binary |
MCP tools → protocol |
debug-socket |
Not in app bundle; UsingTheDebugger.md, McpServer.md |
debug.tracing-ui |
CPU tracing in debugger |
Complete |
all |
— |
Trace panes |
manual |
Tracing.md |
Use c.quit() / protocol QUIT in harnesses — avoid SIGKILL without --no-quit-confirm (AGENTS.md).
Web build vs native
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
web.play-in-browser |
Run emulator in browser |
Complete |
web |
COOP/COEP |
Canvas runs |
manual |
Web.md, Emscripten.md |
web.mount-picker |
File picker instead of native dialog |
Complete |
web |
— |
Mount from picker |
manual |
|
web.no-persist-mounts |
Mounts lost on reload |
Complete |
web |
— |
Refresh clears |
manual |
MEMFS |
web.no-modem |
No SCC modem / SDL_net |
Complete |
web |
— |
Modem option absent |
manual |
Compiled out |
web.no-host-fst-picker |
No Host Folder… |
Complete |
web |
— |
Control absent |
manual |
|
web.audio-gesture |
Audio after user gesture |
Complete |
web |
— |
Click to start overlay |
manual |
Browser policy |
web.deploy-live |
gssquared.net/live deploy |
Complete |
web |
Server |
/live loads |
manual |
scripts/deploy-web.sh |
Desktop Collection download and writeback are in. Web play and Title fetch are not. See arqyv-gs2pack.md.
Slot cards and devices
Each subsection: hardware role, how to use it in GSSquared, then a capabilities table. TOML card strings from SystemConfigTOML.md.
Disk II (disk_ii)
Woz-based 5.25″ controller card. Mount via OSD, File → Drives, drag-drop, -dsXdY=, or [[storage]].
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.diskii.mount-525 |
Mount 140K images |
Complete |
all |
Slot 6 typical |
Boot guest |
both |
Multiple controllers allowed |
device.diskii.woz-protected |
WOZ copy protection |
Complete |
all |
.woz |
Protected titles run |
manual |
Weak bits, half tracks |
device.diskii.no-half-track |
Half/quarter track seek |
Partial |
all |
— |
Some images only |
manual |
Storage.md |
Integrated Woz Machine — IWM (iwm motherboard, IIgs)
Built-in Apple IIgs floppy controller (5.25″ and 3.5″).
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.iwm.mount-525-woz |
5.25″ WOZ/DSK |
Complete |
all |
IIgs |
Boot 5.25 |
both |
|
device.iwm.mount-35 |
3.5″ 800K |
Complete |
all |
IIgs |
Boot 3.5 |
both |
|
device.iwm.apple-disk-ui |
AppleDisk drive icons on GS |
Complete |
all |
IIgs |
HUD drives |
manual |
|
Deep dive: src/devices/iwm/IWM2.md.
BazFast 3 / SmartPort (bazfast3, aliases smartport, pdblock3)
DMA SmartPort-style block storage (up to six drives).
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.bazfast.multi-drive |
Up to six SmartPort units |
Complete |
all |
Card |
CP shows 6 icons |
manual |
|
device.bazfast.block-images |
HDV/IMG/HDA/2MG |
Complete |
all |
— |
Format/partition |
both |
|
device.bazfast.mount-drivers-vol |
/GS2.DRIVERS RO volume |
Complete |
all |
Free drive |
Installer runs |
manual |
File → Mount Drivers |
ProDOS block (prodos_block, prodos_block2)
Generic ProDOS block devices (older/smaller interfaces).
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.pdblock.mount |
Block image mount |
Complete |
all |
Card in slot |
ProDOS sees volume |
both |
Multiple prodos_block allowed |
Language Card (language_card)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.language-card.slot0 |
16K language card |
Complete |
all |
Slot 0 only |
LC programs |
manual |
Standard hardware; listed for config |
Memory Expansion — Slinky (mem_expansion)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.memexpansion.bank |
Up to 1MB expansion |
Complete |
all |
Card |
RAM tests / programs |
manual |
|
Thunderclock Plus (thunder_clock)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.thunderclock.prodos-time |
ProDOS clock + TIME SET |
Complete |
all |
Card |
Timestamps |
manual |
Cards_Clock.md |
Generic ProDOS clock (prodos_clock)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.prodos-clock.readonly |
Read-only ProDOS clock |
Complete |
all |
Card |
Date in ProDOS |
manual |
|
Videx VideoTerm (videx)
80-column card for II / II+ (slot 3).
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.videx.80col |
80-column text |
Complete |
all |
II/II+ |
80-col software |
manual |
Cards_Videx.md |
Mockingboard (mockingboard)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.mockingboard.dual |
Two cards / four voices |
Complete |
all |
Slots |
Ultima V etc. |
manual |
Cards_Mockingboard.md |
device.mockingboard.decorrelate |
Menu decorrelation |
Complete |
all |
Card |
Wider stereo |
manual |
Settings → Mono Helper |
Apple Mouse III (mouse, applemouseiii)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.mouseiii.iie |
Mouse card for //e |
Complete |
all |
IIe + card |
Cards_AppleMouse.md |
manual |
|
Parallel Interface (parallel)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.parallel.capture |
Printer data to file/clipboard |
Partial |
all |
[[connections]] |
Raw bytes captured |
manual |
No ImageWriter emulation |
device.parallel.no-printer-emul |
ImageWriter / Epson emulation |
Planned |
all |
— |
— |
— |
Capture only; Cards_Parallel.md |
See Cards_Parallel.md.
Super Serial Card (super_serial)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.ssc.connections |
Same virtual devices as SCC |
Complete |
all |
Card + [[connections]] |
Modem/file/serial |
manual |
Cards_SuperSerial.md |
Uthernet II (uthernet2)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.uthernet2.slirp |
Ethernet via user-space stack |
Complete |
macOS, win, linux |
Card + Marinetti/driver |
Ping / telnet |
manual |
Not raw TAP |
Video Overlay Card — VOC (voc)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.voc.interlace |
640×400 SHR interlace |
Complete |
all |
IIgs slot 3 |
Desktop patterns |
manual |
Cards_VOC.md |
Second Sight (second_sight)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.secondsight.vga |
VGA output path |
Complete |
all |
IIgs slot 3 |
External monitor modes |
manual |
Cards_SecondSight.md |
device.secondsight.text-menu |
Display → Second Sight Text |
Complete |
all |
Card |
Text via VGA |
manual |
Cards_SecondSight.md |
VIDHD (vidhd)
65816 //e high-density video (custom platform variant).
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.vidhd.65816e |
VIDHD on //e 65816 |
Complete |
all |
apple2e_65816 |
HD modes |
manual |
Cards_VIDHD.md |
Host FST (host_fst motherboard, IIgs)
Share host folder as GS/OS :Host.
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.hostfst.install |
Install FST from /GS2.DRIVERS |
Complete |
macOS, win, linux |
GS/OS + BazFast |
Installer |
manual |
One-time per boot volume |
device.hostfst.pick-folder |
Host Folder… |
Complete |
macOS, win, linux |
IIgs running |
Finder shows :Host |
manual |
Default: Documents |
device.hostfst.windows-ads |
NTFS ADS metadata on Windows |
Complete |
win |
NTFS folder |
Forks preserved |
manual |
HostFST.md |
Motherboard: display (display)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.display.engines |
NTSC / RGB / mono engines |
Complete |
all |
— |
Menu switch |
manual |
Not a slot card |
device.display.scanner-pal |
PAL scanner variant |
Complete |
all |
PAL config |
50 Hz |
manual |
|
Motherboard: speaker (speaker)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.speaker.toggle |
$C030 speaker bit |
Complete |
all |
— |
Click in BASIC |
manual |
Standard; FX are GS2 addition |
Motherboard: game port (game_controller)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.gameport.paddles |
Paddles / buttons |
Complete |
all |
— |
Games respond |
manual |
Settings control source |
Motherboard: keyboards (keyboard_iiplus, keyboard_iie)
Composed per platform; mapping docs are the user surface (KeyboardShortcuts.md). No separate slot config.
Motherboard: IIe memory (iie_memory)
Aux / main memory layout for //e family — platform-composed, not user-pluggable.
Motherboard: cassette (cassette)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.cassette.omitted |
Cassette load/save |
By choice (omitted) |
all |
— |
— |
— |
Unimplemented.md |
Motherboard: IIgs ADB (adb / Keygloo)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.adb.keyboard-mouse |
ADB keyboard + mouse |
Complete |
all |
IIgs |
GS/OS input |
manual |
|
Motherboard: Ensoniq (ensoniq)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.ensoniq.doc |
DOC sound synthesis |
Complete |
all |
IIgs |
GS audio titles |
manual |
No more known bugs per status doc |
Motherboard: SCC8530 (scc8530)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.scc.printer-port |
GS printer on serial |
Partial |
all |
IIgs |
Print to file |
manual |
Not full printer |
device.scc.modem-b |
Modem on port B |
Complete |
macOS, win, linux |
IIgs |
Hayes TCP |
manual |
Absent on web |
Motherboard: RTC / PRAM (rtc_pram)
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
device.rtc.host-sync |
Clock synced to host TZ |
Complete |
all |
IIgs |
Control Panel clock |
manual |
BRAM also in .gs2 |
File associations and host launch
id |
feature |
status |
hosts |
preconditions |
verify |
automation |
notes |
host.open.gs2-macos-drop |
macOS Open → existing instance |
Complete |
macOS |
Installed .app |
DROP_FILE |
manual |
ProtocolHandlers.md |
host.open.gs2-windows-argv |
Windows double-click → argv |
Complete |
win |
— |
Second instance |
manual |
ProtocolHandlers.md |
host.open.gs2-associations |
Full OS file-type registration |
Planned |
all |
— |
— |
— |
Roadmap 1.0 |
host.url.gssquared-scheme |
gssquared: pack download |
Partial |
macOS, win, linux |
— |
Confirm host and filename, then the pack boots |
manual |
Upload and multi-file .gs2 URLs are later. Web uses fetch(). |
Intentionally not offered
User-language summary of Unimplemented.md:
| Topic |
User impact |
| Cassette tape |
No load/save of tape images or WAV |
| REPT key |
Use host keyboard repeat |
| IIgs ROMBANK softswitch |
No effect; matches unused ROM 01 behavior |
| IIgs DMABank register |
Unimplemented |
| IIgs diagnostic register |
Unimplemented |
| RAMfast SCSI |
Not emulated |
Planned and partial (product roadmap)
From Roadmap.md and status docs:
id |
feature |
status |
notes |
roadmap.hud-cleanup |
HUD button polish |
Planned |
Roadmap 1.0 |
roadmap.file-associations |
File/URL associations |
Planned |
ProtocolHandlers.md |
roadmap.intl-keyboard-gs |
Full GS international keyboard |
Planned |
Post-1.0 |
roadmap.save-state |
Save/load full machine state |
Planned |
SaveAndRestore.md |
roadmap.printer-emulation |
ImageWriter-class printing |
Planned |
Parallel/serial dump only today |
roadmap.appletalk-host-folder |
AppleTalk-shaped host server |
Planned |
Post-1.0 |
Appendix: doc vs code (maintainer)
Rows flagged during catalog authoring — reconcile in Documentation.md or code before treating as Complete in a release matrix.
| Topic |
Catalog says |
Other doc / note |
| IWM 3.5″ |
Complete in catalog |
Documentation.md still lists “3.5 Pending” — reconcile when convenient |
| WOZ 2.1 |
Planned |
Documentation.md ❌ |
| 5.25 half/quarter track |
Partial limit |
Documentation.md footnote |
| SystemConfigTOML header |
Implemented schema |
Banner updated to match shipped .gs2 / editor |
| Save states |
Planned |
ControlOverlay.md mentions save state; no implementation in tree |
Appendix: suggested smoke tiers
Not a release checklist — rules for deriving one later:
| Tier |
Filter on catalog rows |
| Tier 1 automation |
status=Complete AND automation ∈ {debug-socket, cli, both} AND hosts contains target OS |
| Tier 1 manual smoke |
status=Complete AND hosts=all OR includes target OS AND user-visible workflow |
| Tier 2 |
status=Partial — manual only before release |
| Exclude |
Planned, By choice (omitted) |
Example Tier 1 automated script: launch with --debug + --no-quit-confirm, HELLO, -p 3, MOUNT, video_text, quit.
See also