Apple //e Enhanced · Reference Manual

The Owner's Manual.

Everything the emulator does — from booting your first disk to driving the 65C02 debugger, the virtual printer, and the AI agent. Press F1 inside the emulator to open this same help at any time.

Section 01

Getting Started

Welcome to the Apple //e Emulator! This web-based emulator faithfully recreates the Apple //e Enhanced computer from 1983, allowing you to run classic Apple II software directly in your browser.

Quick Start

  1. Click the Power button to turn on the emulator
  2. Click on the screen to give it keyboard focus
  3. Insert a disk image using the Insert button on either drive
  4. Type PR#6 and press Return to boot from drive 1

What is the Apple //e?

The Apple //e (Enhanced) was Apple's most popular Apple II model, released in 1983. It featured 128KB of RAM with auxiliary memory, 80-column text display, double hi-res graphics (560x192), and ran thousands of educational, productivity, and entertainment programs.

Emulated Hardware

  • CPU: 65C02 processor at 1.023 MHz (cycle-accurate)
  • Memory: 128KB RAM (64KB main + 64KB auxiliary)
  • Video: All Apple //e display modes including Double Hi-Res
  • Storage: Two Disk II floppy drives, SmartPort hard drives
  • Audio: Speaker with accurate timing, Mockingboard (dual AY-3-8910)
  • Expansion: Mockingboard, Mouse Card, Thunderclock Plus, SmartPort
  • ROM: Apple //e Enhanced ROM set

Tip: Press F1 at any time to open this help window. All windows can be moved and resized.

Section 02

Install as App

This emulator is a Progressive Web App (PWA) that can be installed on your device for offline use and a native app-like experience.

Chrome / Edge (Desktop)

  1. Click the install icon in the address bar (right side)
  2. Or click the three dots menu (⋮) and select "Install Apple //e Emulator"
  3. Click Install in the dialog
  4. The app will open in its own window and appear in your applications

Chrome (Android)

  1. Tap the three dots menu (⋮)
  2. Select "Add to Home screen" or "Install app"
  3. Tap Install to confirm
  4. The app icon will appear on your home screen

Safari (iOS / macOS)

  1. Tap the Share button (square with arrow)
  2. Scroll down and tap "Add to Home Screen"
  3. Tap Add to confirm
  4. The app will appear on your home screen

Firefox

Firefox supports PWAs on Android. On desktop, you can bookmark the page for quick access, though full PWA installation is not yet supported.

Benefits of Installing

  • Offline Use: Run the emulator without an internet connection
  • Own Window: Opens in a dedicated window without browser UI
  • Quick Access: Launch from your taskbar, dock, or home screen
  • Auto Updates: Automatically receives updates when online
  • Full Screen: Better fullscreen experience

Automatic Updates

The emulator automatically checks for updates when you open it while connected to the internet. When a new version is available, you'll see a brief notification and the page will refresh with the latest version.

You can also manually check for updates using the refresh button in the toolbar, which clears the cache and reloads the latest version.

Note: Your saved state, disk images, and settings are preserved across updates.

Section 03

Keyboard Reference

The Apple //e keyboard is mapped to your modern keyboard. Some keys have special mappings to match the original layout.

Basic Keys

Your KeyboardApple //e KeyNotes
EnterReturnConfirm input, run commands
BackspaceDeleteDelete character left
EscEscapeCancel, exit menus
TabTabTab character
Arrow KeysCursor movement, game controls

Special Keys

Your KeyboardApple //e KeyNotes
Alt (Left)Open Apple ()Modifier key, joystick button 0
Alt (Right) / WinClosed AppleModifier key, joystick button 1
CtrlControlControl key modifier
Ctrl+Pause/BreakResetWarm reset (Ctrl+Reset)

Control Key Combinations

CombinationFunction
Ctrl+CBreak - stop running program
Ctrl+SPause output (Ctrl+Q to resume)
Ctrl+GBell (beep)
Ctrl+ResetWarm reset (keeps memory)

Emulator Shortcuts

ShortcutFunction
F1Open/close this Help window
Ctrl+EscapeExit full page mode
Ctrl+VPaste text into emulator
Ctrl+`Open window switcher
Option+TabCycle to next window
Option+Shift+TabCycle to previous window

Debugger Shortcuts

ShortcutFunction
F5Run / Continue execution
F10Step Over (skip subroutine calls)
F11Step Into (single instruction)
Shift+F11Step Out (run until current subroutine returns)

Text Selection & Copy

You can select and copy text directly from the emulator screen:

  • Click and drag on the screen to select text
  • Selected text is automatically copied when you release the mouse
  • Use Ctrl+C (or Cmd+C on Mac) while selecting

Paste Support

You can paste text into the emulator using Ctrl+V. The emulator will type the text character by character at the appropriate speed. This is useful for entering BASIC programs.

Section 04

Display Settings

Open from View > Display to access extensive CRT simulation options.

Display Modes

  • Color: Full NTSC artifact color rendering
  • Green: Classic green phosphor monochrome
  • Amber: Amber phosphor monochrome
  • White: White phosphor monochrome

CRT Effects

  • Screen Curvature: Simulate curved CRT glass
  • Overscan: Add border/overscan area
  • Scanlines: Horizontal CRT scanline effect
  • Shadow Mask: RGB phosphor dot pattern
  • Phosphor Glow: Bloom/glow around bright pixels
  • Vignette: Darker corners effect
  • RGB Offset: Chromatic aberration
  • Flicker: CRT refresh flicker simulation

Analog Effects

  • Static: Random noise/grain
  • Jitter: Random pixel displacement
  • H-Sync: Horizontal sync distortion
  • Scan Beam: Moving scan line effect
  • Ambient: Screen surface reflection
  • Burn-in: Phosphor persistence

Image Quality

  • Brightness: Overall brightness level
  • Contrast: Contrast adjustment
  • Saturation: Color saturation (color mode only)

Rendering Options

  • Sharp Pixels: Nearest-neighbor scaling (crisp pixels)
  • NTSC Fringing: Color fringing on hi-res graphics edges

Resizing the Display

Drag any corner of the monitor frame to resize. The 4:3 aspect ratio is maintained. A lock icon appears when using custom sizing - click it to return to auto-fit mode.

Full Page Mode

Click the fullscreen button for an immersive experience. Press Ctrl+Escape to exit.

Character Set

Toggle between US and UK character sets using the switch in the screen window header. The UK set replaces some symbols with British variants.

Section 05

Disk Drives

The emulator includes two Disk II floppy drives, just like a real Apple //e system. Open from View > Disk Drives.

Supported Formats

.DSKDOS 3.3 sector order (140KB)
.DODOS order (same as .DSK)
.POProDOS sector order (140KB)
.WOZWOZ format with copy protection

Drive Controls

  • Insert: Load a disk image from your computer
  • Recent: Quick access to recently used disks (per drive)
  • Blank: Create a new formatted blank disk
  • Eject: Remove the disk (prompts to save if modified)
  • Browse: Open the file explorer to view disk contents

Drive Information

  • Filename: Shown on the drive (scrolls if long)
  • Track: Current head position (T00-T34)
  • LED: Glows when drive is active

Drag and Drop

You can drag disk image files directly onto a drive to insert them.

Booting from Disk

  • Type PR#6 and press Return to boot from Drive 1
  • Or use the Reboot button for a cold boot
  • Many games auto-boot when inserted and the machine is reset

Saving Modified Disks

When you eject a disk that has been modified, you'll be prompted to save it. You can also use the File Explorer to export disks.

Disk Persistence

Disk contents are automatically saved in your browser's storage. When you return to the emulator, your disks will be exactly as you left them.

Tip: The Recent disks list is maintained separately for each drive, making it easy to quickly swap disks for multi-disk software.

Section 06

SmartPort Drives

The emulator supports SmartPort hard drive emulation, providing high-capacity storage. Open from View > SmartPort Drives.

Supported Formats

.HDVHard disk volume image
.POProDOS order image
.2MGUniversal disk image (2IMG)

Device Controls

  • Insert: Load a SmartPort image from your computer
  • Recent: Quick access to recently used images (per device)
  • Eject: Remove the image (prompts to save if modified)
  • Browse: Open the file explorer to view image contents

Setup

The SmartPort card must be installed in an expansion slot before images can be loaded. Configure this in View > Expansion Slots.

Activity LED

Each device has an LED indicator that glows green when the drive is being accessed.

Tip: SmartPort drives provide much larger storage than floppy disks and are commonly used with ProDOS.

Section 07

File Explorer

The File Explorer lets you browse the contents of disk images and view files without running programs.

Opening the File Explorer

Open from View > File Explorer or click the folder icon in the toolbar. Select which drive to browse using the drive selector at the top.

Supported Disk Formats

  • DOS 3.3: Standard Apple II DOS catalog browsing
  • ProDOS: Full directory navigation with subdirectories
  • WOZ: Catalog extraction from WOZ format disks

File Types

  • A (Applesoft BASIC): Displayed with full detokenization, indentation, and syntax highlighting
  • I (Integer BASIC): Detokenized and formatted
  • B (Binary): Disassembled as 6502 machine code with:
    • Recursive descent flow analysis
    • Clickable jump/branch targets
    • Symbol tooltips (ROM routines, zero page, I/O)
    • Operand highlighting
  • T (Text): Plain text display
  • Other: Hex dump view

Navigation

  • Click file/folder names to open them
  • Use the breadcrumb path for ProDOS directory navigation
  • Click addresses in disassembly to jump to targets
  • Use the back button to return to the catalog

Disk Information

The header shows disk format, volume name, and free space (for ProDOS disks).

Tip: The File Explorer uses virtual scrolling for large files, so even massive disassemblies load instantly.

Section 08

State Management

The emulator automatically saves your session so you can pick up exactly where you left off. You also have 5 manual save slots for organizing different states.

What Gets Saved

  • CPU State: All registers (A, X, Y, SP, PC) and flags
  • Memory: Full 128KB RAM (main + auxiliary)
  • Language Card: 16KB Language Card RAM
  • Soft Switches: All memory banking and display modes
  • Disk Drives: Complete disk images with modifications
  • Settings: Display, sound, and window positions

Auto-Save

When enabled (default), state is saved every 5 seconds while the emulator is running. Auto-save also triggers when:

  • You switch to another tab or window
  • You close the browser
  • You power off the emulator

Toggle auto-save on or off from the File menu.

Save States Window

Open the Save States window from File > Save States... to manage all your saved states in one place.

Autosave Slot

The top row shows the current autosave with a screenshot thumbnail and timestamp. Use the Load button to restore it, or DL to download it as a file. This slot updates automatically while the window is open.

Manual Slots (1–5)

Below the autosave are 5 numbered slots for manual saves. Each slot has:

  • Save: Capture the current emulator state with a screenshot thumbnail
  • Load: Restore the emulator to this saved state
  • Clear: Delete the saved state from this slot
  • DL: Download the state as an .a2state file

Load from File

Click Load from File... at the bottom of the Save States window to restore a previously downloaded .a2state file. The file is validated before loading.

How Restore Works

Restoring any state (autosave, slot, or file) performs a complete power cycle and then loads the saved state. This ensures a clean restoration with no leftover state from the current session.

Tip: Use slots to save before difficult parts of a game, or to keep multiple program states. Download slots to back up important states or transfer them to another device.

Section 09

Sound Settings

Click the speaker icon in the toolbar to access audio controls.

Audio Controls

  • Volume Slider: Adjust master volume (0-100%)
  • Mute Toggle: Quickly mute/unmute all sound
  • Drive Sounds: Enable/disable disk drive sound effects

Sound Sources

  • Speaker: The Apple II's built-in speaker for music and sound effects
  • Mockingboard: Dual AY-3-8910 sound chips for rich stereo music and sound
  • Disk Seek: Stepper motor sounds when the drive head moves

Audio Technology

The emulator uses the Web Audio API with an AudioWorklet for real-time audio synthesis. Audio timing drives the emulator's frame rate, ensuring accurate 1.023 MHz CPU timing.

Note: Some browsers require a user interaction (click) before audio can play. Click anywhere on the page if you don't hear sound initially.

Section 10

Virtual Printer

The emulator includes a faithful dot-matrix printer that catches output from your Apple II programs and renders it to an on-screen sheet of fanfold paper, dot by dot, in true carriage travel order. Open it from View > Printer... in the toolbar.

Printer Models

Pick a model from the model selector in the printer toolbar. Each emulates its real protocol, fonts, and timing.

  • ImageWriter II: Apple's colour-capable 9-pin printer. Draft, correspondence, and NLQ fonts, MouseText, and a four-band colour ribbon.
  • ImageWriter I: The earlier black-only ImageWriter. Single correspondence font.
  • Epson FX-80: The classic ESC/P 9-pin printer used by countless non-Apple programs. Black-only, Roman and Italic fonts.

Connecting From the Apple II

The printer attaches through an interface card, just like real hardware. Install one in the Expansion Slots window:

  • ImageWriter I / II: typically a serial card (Super Serial Card).
  • Epson FX-80: a parallel (Centronics) card.

Then send output to that slot from your program — for example PR#1 from Applesoft (or PRINT CHR$(4)"PR#1" under ProDOS / BASIC.SYSTEM) to route printing to slot 1. The cards are generic byte transports; the printer model alone interprets the data stream.

Toolbar Controls

  • Power: Printer mains power. When off, incoming bytes are ignored and the head parks — already-printed paper is kept.
  • Model: Switch the emulated printer (clears the current sheet).
  • Ribbon: Choose B/W or Colour. The colour option only appears for the ImageWriter II.
  • Paper size: Choose from standard presets (11″, 12″, Legal, A4, and more) or drag the paper edges to set a custom size. The dropdown updates to show the current dimensions when a custom size is in use.
  • PNG: Export the printed output as a PNG image.
  • PDF: Print or save the output as a PDF (one sheet per page).

Operator Panel

Click the panel tab (☰) on the paper to reveal the operator controls, mirroring a real printer's front panel. You can also drag the print-head marker directly to roll the paper (it snaps to line spacing).

ButtonFunction
FitToggle fit-to-width versus actual size
TOPReseat the head at the top of the first page
FFForm feed to the next page top
LF▲ / LF▼Line feed up (reverse) / down (advance) one line
Auto LFDIP SW2-1 — automatic line feed on carriage return
Dump ScreenPrint the current //e screen as a graphics bit-image dump
ClearClear the printed output

Auto Line Feed

The Auto LF toggle decides what a carriage return does, exactly like the real DIP switch:

  • On: A CR also feeds the paper one line. Use this for plain text and Applesoft listings, which send CR only.
  • Off: A CR returns the head without feeding, so colour graphics passes overprint in register on the same band — needed by titles like DazzleDraw and Print Shop colour.

Paper Size & Visual Resizing

The paper size can be changed at any time without losing printed output. Use the paper size dropdown for common presets, or resize the paper visually:

  • Height (form length): Drag the page-break handle — the arrow marker on the right edge of the paper at the bottom of each page — up or down to set a custom form length. A guide line shows the current position as you drag.
  • Width: Drag the right edge of the paper left or right to narrow or widen the sheet within the carriage limits of the selected printer model.

The dropdown shows the active preset name, or displays the exact dimensions (e.g. 8.5″×11″) when a custom size is in use. Programs can also set the form length via printer control codes; the page-break handle tracks those changes automatically.

Ruler

A ruler runs along the left edge of the paper showing inch markings. It is always visible when the ruler toggle is on and appears automatically during a resize drag even when hidden, so you can read the exact position while adjusting the paper. The ruler origin (0) is at the top of the printable body; tractor-strip margins are shown outside that range.

Standard Paper Sizes

PresetWidthHeight
11 in (default)8″Standard fanfold
12 in8″Tall fanfold
14 in (Legal)8.5″US legal
A4 (11.69 in)8.27″ISO A4

Print History & Print Browser

Every page is captured automatically as it exits the printer and stored in your browser, so output survives closing the window or reloading the page. Open View > Print Browser... to review your full print history:

  • Browse jobs and individual pages as thumbnails.
  • Re-preview any page on the virtual printer paper.
  • Export a single page or an entire job as PNG or PDF.
  • Download a complete job as a ZIP archive of per-page PNGs.
  • Delete individual pages or whole jobs to free storage.

Tip: Leave the Printer window closed and output is still captured in the background — reopen it any time to see what your program printed.

Section 11

Debug Tools

Professional debugging tools for software development, reverse engineering, and exploration. Access via the Debug menu in the toolbar.

CPU Debugger Overview

The CPU Debugger provides full control over 65C02 execution with registers, disassembly, breakpoints, watch expressions, and beam position breakpoints. Open it from Debug > CPU Debugger.

Execution Controls

ButtonShortcutFunction
RunF5Resume execution (or continue from breakpoint)
PausePause execution immediately
StepF11Execute one instruction, stepping into subroutines
Step OverF10Execute one instruction, skipping over JSR calls
Step OutShift+F11Run until the current subroutine returns (RTS/RTI)

Registers & Flags

The top panel displays all CPU registers and status flags in real time.

  • Registers: A, X, Y (accumulator and index), SP (stack pointer), PC (program counter) — all shown in hexadecimal
  • Flags: N (negative), V (overflow), B (break), D (decimal), I (interrupt disable), Z (zero), C (carry) — active flags are highlighted
  • Editing: Double-click any register value while paused to enter a new hex value

Cycle & Beam Position

  • CYC: Total CPU cycle count since power-on
  • IRQ / NMI / EDGE: Indicators for pending interrupt requests
  • SCAN: Current scanline (0–261), H: horizontal position, COL: column (0–39)
  • FCYC: Cycle within the current frame
  • A badge shows the beam region: VISIBLE, HBLANK, or VBL

Disassembly View

The scrollable disassembly view shows decoded 65C02 instructions around the current PC.

  • Go to Address: Enter a hex address or symbol name in the input field and click Go to jump the disassembly view
  • Follow PC: Click Follow PC to re-center the view on the current program counter. When the CPU is running, the view automatically follows PC
  • Click a line: Toggle an execution breakpoint at that address
  • Ctrl+Click (or Cmd+Click): Toggle a bookmark on that line (highlighted in yellow)
  • Double-click a line: Add or edit an inline comment that appears next to the instruction
  • Right-click a line: Context menu with Run to Cursor, Go to Address, and Toggle Breakpoint

Branch and jump instructions are color-coded. When symbols are loaded, known addresses are annotated with their symbol names.

Symbol Import

Click Import Symbols in the disassembly toolbar to load a symbol file. Supported formats:

  • .dbg — cc65 debug info files
  • .sym — Symbol table files (label = address)
  • .labels — Label files (address label)
  • .map — Map files
  • .txt — Plain text symbol lists

Once imported, symbols appear in the disassembly as annotations and can be used in the address input field.

Breakpoints Tab

The Breakpoints tab lets you manage all breakpoints. Click Add to create a new breakpoint.

  • Type: Choose from Exec (execution), Read (memory read), Write (memory write), or R/W (read or write)
  • Address: Enter a hex address (e.g., FF69) or a symbol name if symbols are loaded
  • Conditions: Optionally add a condition expression. Click the condition cell to open the Rule Builder, or type expressions directly:
    • A==#$FF — break when accumulator equals $FF
    • X>#$10 — break when X register exceeds $10
    • PEEK($00)==#$42 — break when zero page location $00 equals $42
  • Hit Count: Set a hit count target — the breakpoint only fires after being hit that many times
  • Enable/Disable: Use the checkbox to temporarily disable a breakpoint without deleting it
  • Remove: Click the × button to delete a breakpoint

Breakpoints are persisted to localStorage and survive page reloads.

Watch Tab

The Watch tab monitors values in real time, highlighting changes. Click Add Watch and choose a source:

  • Register: Watch A, X, Y, SP, PC, or P (status byte)
  • Flag: Watch individual status flags (N, V, B, D, I, Z, C)
  • Byte: Watch a memory byte — displays as PEEK($addr)
  • Word: Watch a 16-bit value (little-endian) — displays as DEEK($addr)

When a watched value changes, it briefly highlights to draw attention. Watch entries are persisted between sessions.

Beam Breakpoints Tab

Beam breakpoints pause execution based on the CRT beam position rather than the program counter. This is useful for debugging display timing and raster effects.

  • VBL Start: Break at the start of vertical blanking (scanline 192)
  • HBLANK: Break at the start of each horizontal blanking period
  • Scanline: Break when the beam reaches a specific scanline (0–261)
  • Column: Break when the beam reaches a specific column (0–39)
  • Scan+Col: Break at a specific scanline and column combination

Use the Enable checkbox to activate or deactivate beam breakpoints. When hit, the breakpoint row highlights briefly.

Memory Browser

  • Full 64KB hex dump with ASCII column
  • Quick jump buttons for key memory regions
  • Direct address entry for navigation
  • Changed bytes highlighted with fade animation
  • Search for hex byte sequences
  • Click any byte to edit its value

Memory Heat Map

  • 256×256 visualization of memory access
  • Left panel: Main RAM + ROM
  • Right panel: Auxiliary RAM
  • View modes: Combined, Reads only, Writes only
  • Click to jump to address in Memory Browser

Memory Map

  • Visual representation of memory bank configuration
  • Shows which banks are active for each region
  • Displays read/write bank status
  • Color-coded legend

Soft Switches

  • Display: TEXT, MIXED, PAGE2, HIRES, 80COL, ALTCHAR, DHIRES
  • Memory: 80STORE, RAMRD, RAMWRT, INTCXROM, ALTZP, SLOTC3ROM
  • Language Card: LCRAM, LCBANK2, LCWRITE, LCPREWRT
  • I/O: Annunciators, buttons, cassette

Stack Viewer

Visual representation of the 6502 stack showing return addresses and saved values.

Zero Page Watch

  • Predefined watch groups: BASIC, Screen, Graphics, DOS, System
  • Add custom watch addresses
  • Live value updates

Mockingboard Monitor

Open from Debug > Mockingboard to inspect the dual AY-3-8910 sound chips:

  • Channel-centric view with inline waveforms
  • AY-3-8910 and VIA 6522 register states
  • Level meters for each channel
  • Per-channel mute controls

Mouse Card Monitor

Open from Debug > Mouse Card to inspect the Apple Mouse Interface Card:

  • PIA registers and protocol activity
  • Position, mode, and interrupt state

Tip: All debug windows can be moved and resized. Their positions and settings are saved between sessions.

Section 12

Dev Tools

Development tools for writing and testing software. Access via the Dev menu in the toolbar.

Applesoft BASIC Window

Write, edit, debug, and load Applesoft BASIC programs. Open from Dev > Applesoft BASIC.

Editor Features
  • New: Clear the editor and start a new program
  • Syntax Highlighting: BASIC keywords, line numbers, strings, and comments are color-coded
  • Autocomplete: Type to see suggestions for BASIC commands
Debugger Controls
  • Run: Execute the BASIC program
  • Pause: Pause execution
  • Step: Step through one BASIC line at a time
Program Operations
  • Read: Read the current BASIC program from emulator memory into the editor
  • Write: Type the program into the running emulator
  • Format: Auto-format the program text
  • Renum: Renumber BASIC line numbers
File Operations
  • New: Start a new program
  • Open: Open a BASIC program file from your computer
  • Save: Save the current program to a file

Note: The Read and Write buttons require the emulator to be powered on.

Assembler

Write 65C02 assembly code using Merlin-style syntax. Open from Dev > Assembler.

Editor Features
  • Syntax Highlighting: Opcodes, directives, labels, operands, and comments
  • Column Guides: Visual guides for Merlin's column-based format (Label, Opcode, Operand, Comment)
  • Tab Navigation: Press Tab to jump between columns
  • Live Validation: Syntax errors shown as you type
  • Breakpoints: Click the gutter or press F9 to toggle breakpoints
File Operations
ButtonShortcutFunction
NewCtrl/⌘+NStart a new file
OpenCtrl/⌘+OOpen a .s, .asm, or .a65 file
SaveCtrl/⌘+SSave current file
Assembly & Loading
  • Assemble: Click or press Ctrl/⌘+Enter to assemble the code
  • Write: After successful assembly, click Write to copy the machine code into emulator memory (requires emulator to be powered on)
  • ORG Directive: Your code must include an ORG directive before any instructions
ROM Routines Reference

Press F2 or click ROM to open the ROM routines panel:

  • Search and browse Apple II ROM routines
  • View input/output requirements and examples
  • Insert EQU definitions or JSR calls directly into your code
Output Panels
  • Symbols: Lists all defined labels and their addresses
  • Hex Output: Shows assembled machine code bytes
Section 13

AI Agent

The AI Agent integration allows LLMs like Claude to control the emulator through natural language commands. The agent can show/hide windows, manage disks, read/write BASIC programs, and inspect emulator state in real time using the AG-UI protocol over an MCP server.

Connection Status

The agent connection status is shown by a sparkle icon in the toolbar header:

IconStatusDescription
Disconnected MCP server is not running or not reachable
Connected Agent is connected and ready to receive commands
Interrupted Connection error or server unavailable

Click the sparkle icon to open the agent connection panel and view detailed status information.

Connection Names & Multiple Emulators

Every browser tab that connects is assigned a unique name from a name pool — short, memorable words like Bingo, Wozulator, or Pixel. The name appears in the sparkle button label so you always know which tab is which. Names persist across server restarts within the same browser session.

To rename: Double-click the name label on the sparkle button (connected state only). Type a new name and press Enter to confirm, or Escape to cancel. Valid characters: Unicode letters, hyphens, underscores — no numbers or spaces.

Multiple tabs: More than one browser tab can connect at once. Claude routes commands based on context:

  • One connected — routes to it automatically
  • Multiple, one is default — routes to the default
  • Named target — "Take a screenshot of Bingo"
  • Broadcast — "Reboot all connected emulators"

Setting Up the MCP Server

The AI Agent uses the Model Context Protocol (MCP) to communicate with LLM clients like Claude Code. Add the following to your MCP configuration file (e.g., .mcp.json in your project or ~/.claude/mcp.json globally):

Using bunx (recommended):

{
  "mcpServers": {
    "appleii-agent": {
      "type": "stdio",
      "command": "bunx",
      "args": ["-y", "@retrotech71/appleii-agent"],
      "env": {
        "APPLEII_AGENT_SANDBOX": "/path/to/sandbox.config"
      }
    }
  }
}

No installation required — the package downloads automatically. Bun is recommended; replace bunx with npx if you prefer Node.js. The server listens on http://localhost:3033 by default.

Sandbox Configuration

The sandbox controls which directories the agent can access on your filesystem. Without it the server starts but all file operations are blocked.

1. Create the config file (~/.appleii/sandbox.config):

# Lines starting with # are comments
# Format: [key]@/path/to/directory

[disks]@~/Documents/Apple2/Disks
[games]@~/Documents/Apple2/Games
[basic]@~/Documents/Apple2/BASIC
  • Key: alphanumeric, underscores, hyphens — used as [key] in requests
  • Path: absolute or ~-prefixed home-relative directory
  • Empty lines and # comments are ignored

2. Set APPLEII_AGENT_SANDBOX in the env block of your .mcp.json (shown above).

3. Use sandbox paths in requests using [key]/relative/path syntax:

  • "Load [disks]/ProDOS.dsk into drive 1"
  • "Save the BASIC program to [basic]/hello.bas"
  • "Load [games]/Zork/zork1.dsk into drive 2"

4. After editing the config, ask the agent to "reload the sandbox configuration" — no restart needed.

Tip: Full ~/ paths also work as long as they fall inside a configured sandbox directory. Path traversal and out-of-sandbox access are blocked automatically.

Port Conflict Management

The MCP server includes graceful port conflict handling when multiple instances attempt to use port 3033:

  • Automatic Detection: When port 3033 is already in use, the MCP server stays alive without failing
  • Status Reporting: The status tool reports port conflicts and provides clear guidance
  • Port Reclamation: Any instance can take over the port using a two-step process:
    1. Ask the agent to "shutdown the remote server on port 3033"
    2. Ask the agent to "start this server"

This allows multiple Claude Code sessions or MCP instances to coordinate gracefully without manual process management.

Example Prompts

Multi-Emulator
  • List connected emulators: "Show me all connected emulators"
  • Set the default: "Set Bingo as the default emulator"
  • Target by name: "Take a screenshot of Wozulator" or "Reboot Bingo"
  • Broadcast: "Reboot all connected emulators"
  • Send BASIC to specific tab: "Write this program to Bingo: 10 PRINT "HELLO""
Window Management
  • Show a window: "Show the CPU debugger window"
  • Hide a window: "Hide the disk drives window"
  • Focus a window: "Bring the BASIC program window to the front"
Disk Management
  • Insert from filesystem: "Load ~/Documents/Apple_II/ProDOS_2_4_2.dsk into drive 1"
  • List recent disks: "What disks are in the recent list for drive 1?"
  • Load from recent: "Insert the disk named Zork_1.dsk from recent disks into drive 2"
  • Eject a disk: "Eject the disk from drive 1"
BASIC Programs
  • Read from memory: "Load the BASIC program from memory and show it in the editor"
  • Write to memory: "Write this BASIC program to emulator memory: 10 PRINT \"HELLO\" 20 GOTO 10"
  • Get listing: "What BASIC program is currently in memory?"
  • Save to file: "Save the BASIC program from the editor to ~/Documents/myprogram.bas"
Assembly Programs
  • Get status: "What's the status of the assembler?" or "Get the assembly origin address"
  • Execute program: "Run the assembled program" or "Execute the code at the origin"
  • Execute at address: "Execute the code at $0800" or "Run code at address 2048"
  • Execute with return: "Execute $0800 and return to BASIC" or "Run $0800 and return to monitor"
  • Set PC without executing: "Set PC to $0800 but don't execute yet"
Memory Operations
  • Load binary to memory: "Load the file ~/program.bin into memory at address $2000"
  • Save memory range: "Save 256 bytes from memory address $0800 to ~/output.bin"
  • Save memory region: "Read 1024 bytes starting at $4000 and save them to ~/dump.bin"
Screen Capture
  • Capture screenshot: "Take a screenshot of the current screen"
  • Save screenshot to file: "Capture the screen and save it as ~/screenshot.png"
  • Read screen text: "What text is currently displayed on the screen?"
  • Read specific region: "Read the text from rows 5 to 15 on the screen"
  • Read CATALOG output: "Read the text from the screen after running CATALOG"
SmartPort Hard Drives
  • Insert image: "Load ~/Images/Total_Replay.hdv into SmartPort device 1"
  • List recent images: "What images are in the recent list for SmartPort device 1?"
  • Load from recent: "Insert Apple Pascal from recent SmartPort images"
  • Clear recent: "Clear the recent images list for SmartPort device 1"
Slot Configuration
  • List all slots: "Show me the current expansion slot configuration"
  • Install a card: "Install the Mockingboard in slot 4"
  • Remove a card: "Remove the card from slot 5"
  • Move a card: "Move the SmartPort card from slot 7 to slot 5"
Emulator Control
  • Power on: "Turn on the emulator" or "Power on the Apple //e"
  • Power off: "Turn off the emulator" or "Power off"
  • Reboot: "Reboot the emulator" or "Do a cold reset"
  • Warm reset: "Send Ctrl+Reset to the emulator" or "Press Ctrl+Reset"
  • Break program: "Send Ctrl+C to the emulator" or "Stop the running program"

Note: The MCP server must be running for the agent to connect. The server starts automatically when your MCP client connects.

Section 14

Tips & Troubleshooting

Getting Software

Search for "Apple II disk images" to find archives of classic software. Popular archives include:

  • Asimov Apple II Archive
  • What Is The Apple IIGS?
  • Internet Archive Apple II Library

Common BASIC Commands

CATALOG - List files on disk
RUN filename - Run a BASIC program
LOAD filename - Load a program into memory
LIST - Show program listing
NEW - Clear current program
PR#6 - Boot from disk in slot 6

Keyboard Not Working?

Click directly on the monitor screen to give it keyboard focus. The emulator needs focus to receive keyboard input.

No Sound?

  • Check that the volume is turned up in Sound Settings
  • Check that your system volume is not muted
  • Click anywhere on the page - browsers require user interaction before playing audio

Disk Won't Boot?

  • Make sure the emulator is powered on
  • Try typing PR#6 and pressing Return
  • Try the Reboot button for a cold start
  • Check that the disk is a bootable system disk

Performance Issues?

  • Disable some CRT effects in Display Settings
  • Close unused debug windows
  • Try a different browser (Chrome recommended)

Saving Your Work

  • State auto-saves every 5 seconds by default
  • Use File > Save States... to save to manual slots or download states
  • Modified disks are saved when ejected
  • Export disks via File Explorer for backup

Release Notes

Click "Release Notes" in the footer to see the version history and recent changes.

Need more help? The Apple II has extensive documentation available online. Search for "Apple II Reference Manual" or "Applesoft BASIC Programming Guide" for detailed information.

Back to computing.

Press F1 inside the emulator to open this manual any time.

Launch Emulator

RetroTech71 · Mike's personal projects & experiments · © 2026