How leorivasc/a8e works
A8E is an Atari 800 XL emulator with native C/SDL and browser JavaScript implementations. The principal workflow is to start a machine, load ROMs or disk/XEX media, execute Atari software, and present video and audio; browser users can also control and inspect the machine through the UI or automation API. The browser implementation additionally documents snapshots, debugging, HostFS, and assembler-driven development. The excerpts establish selected module responsibilities but not every call path, so uncertain wiring is omitted; capability links also rely on the README.
Main entry points: a8e.js App facade · atari.js Atari machine · io.js Hardware I/O · AtariIo.c Native Atari I/O
Components 29
Browser control
- Browser UI
jsA8E/js/app/ui.js - App facade
jsA8E/js/app/a8e.js - Automation API
jsA8E/js/app/automation_api.js - Emulator worker
jsA8E/emulator_worker.js
Emulation core
- Atari machine
jsA8E/js/core/atari.js - 6502 CPU
jsA8E/js/core/cpu.js - Memory maps
jsA8E/js/core/memory.js - Hardware I/O
jsA8E/js/core/io.js - ANTIC video
jsA8E/js/core/antic.js - GTIA graphics
jsA8E/js/core/gtia.js - POKEY sound I/O
jsA8E/js/core/pokey.js - Playfield renderer
jsA8E/js/core/playfield/renderer_base.js
Media and tools
- Disk library
jsA8E/js/core/disk_library.js - Host filesystem
jsA8E/js/core/hostfs.js - Machine snapshots
jsA8E/js/core/atari_snapshot.js - Debugger
jsA8E/js/core/debugger.js - Assembler
jsA8E/js/core/assembler_core.js - Failure artifacts
jsA8E/js/app/automation/artifacts.js
Audio and display
- WebGL renderer
jsA8E/js/render/gl.js - Canvas renderer
jsA8E/js/render/software.js - Audio runtime
jsA8E/js/audio/runtime.js - Audio worklet
jsA8E/js/audio/worklet.js
Native emulator
- Native application
A8E/A8E.c - Native 6502
A8E/6502.c - Native Atari I/O
A8E/AtariIo.c - Native ANTIC
A8E/Antic.c - Native GTIA
A8E/Gtia.c - Native POKEY
A8E/Pokey.c
Other components
- User or agent
Connections 29
- User or agent → Browser UI: controls
- Browser UI → App facade: starts and configures
- User or agent → Automation API: scripts
- Automation API → App facade: controls and queries
- App facade → Emulator worker: dispatches commands
- Emulator worker → Atari machine: creates and controls
- Atari machine → 6502 CPU: executes
- Atari machine → Memory maps: configures maps
- Atari machine → Hardware I/O: coordinates devices
- Hardware I/O → ANTIC video: dispatches video
- Hardware I/O → GTIA graphics: dispatches graphics I/O
- Hardware I/O → POKEY sound I/O: dispatches sound I/O
- ANTIC video → Playfield renderer: renders scanlines
- Playfield renderer → WebGL renderer: supplies pixels
- Playfield renderer → Canvas renderer: supplies pixels
- POKEY sound I/O → Audio runtime: feeds audio
- Audio runtime → Audio worklet: queues samples
- App facade → Disk library: loads and mounts disks
- App facade → Host filesystem: accesses files
- App facade → Machine snapshots: saves and loads state
- App facade → Debugger: queries and controls
- App facade → Assembler: assembles source
- Automation API → Failure artifacts: captures failures
- User or agent → Native application: runs emulator
- Native application → Native 6502: executes machine code
- Native application → Native Atari I/O: coordinates hardware I/O
- Native Atari I/O → Native ANTIC: uses video hardware
- Native Atari I/O → Native GTIA: uses graphics hardware
- Native Atari I/O → Native POKEY: uses sound hardware