xroar(1)

๐Ÿ“ฆ version 1.13.0.dev-unstable-2026-08, in nixpkgs unstable

๐Ÿ’– NAME ๐Ÿ’–

xroar(1) โ€” from the General Commands Manual โ€” is the Dragon and Tandy 8-bit computer emulator, bestie. Thatโ€™s the whole main-character vibe. ๐Ÿ’…

๐ŸŽฎ SYNOPSIS ๐ŸŽฎ

xroar [-c conffile] [OPTION]โ€ฆ [FILENAME]โ€ฆ

๐ŸŒˆ DESCRIPTION ๐ŸŒˆ

Okay so XRoar emulates the Dragon 32/64; Tandy Colour Computers 1, 2 and 3; the Tandy MC-10; and some other similar machines or clones. It runs on a wide variety of platforms. Literally versatile icon behavior. โœจ

โœจ OPTIONS โœจ

Real talk: options are first read from a configuration file (by default, $HOME/.xroar/xroar.conf). Options on the command line override any found in the configuration file. CLI is the boss, periodt. ๐Ÿ’…

  • -C โ€” Allocate a console window (Windows only).
  • -c conffile โ€” Specify a configuration file.

๐Ÿ‰ Machines ๐Ÿ‰

  • -m name, -default-machine name โ€” Default machine profile to select on startup.
  • -machine name โ€” Create or modify named machine profile. -machine help lists currently defined profiles.

The remaining options configure the currently selected machine โ€” yes, these next ones, bestie:

  • -machine-desc text โ€” Machine description shown in -machine help and menu options.
  • -machine-arch arch โ€” Machine architecture (dragon64, dragon32, coco, coco3 or mc10).
  • -machine-keyboard layout โ€” Keyboard layout (dragon, dragon200e, coco or coco3).
  • -machine-cpu cpu โ€” Machine CPU (6809 or 6309). Not applicable to the MC-10.
  • -bas rom โ€” ROM image for Colour BASIC (CoCo) or Microcolour BASIC (MC-10).
  • -extbas rom โ€” ROM image for Extended BASIC (Super Extended BASIC on the CoCo 3).
  • -altbas rom โ€” ROM image for 64K-mode Extended BASIC (Dragon 64, Dragon 200-E).
  • -nobas, -noextbas, -noaltbas โ€” Indicate the corresponding ROM is not fitted in this machine.
  • -ext-charset rom โ€” External character generator ROM to use.
  • -tv-type type โ€” TV type (pal, ntsc or pal-m).
  • -tv-input input โ€” One of cmp (composite video, no cross-colour), cmp-br (composite video, blue-red cross-colour), cmp-rb (composite video, red-blue cross-colour) or rgb (RGB video, CoCo 3 only).
  • -vdg-type type โ€” Indicate the VDG variant fitted. One of 6847 or 6847t1.
  • -ram-org organisation โ€” RAM organisation (-ram-org help for list).
  • -ram kbytes โ€” Amount of RAM fitted in kilobytes. Valid sizes are 4โ€“64K for Dragon and Tandy CoCo 1/2; 128K or 512K for the Tandy CoCo 3; 2K, 4K or 20K for the Tandy MC-10.
  • -ram-init pattern โ€” RAM start pattern (-ram-init help for list).
  • -machine-cart name โ€” Default cartridge to attach. -no-machine-cart to inhibit the default behaviour of searching for a workign DOS cartridge.

๐Ÿงฉ Cartridges ๐Ÿงฉ

  • -cart name โ€” Create or modify named cartridge profile. -cart help lists currently defined profiles.

The remaining options configure the currently selected cartridge:

  • -cart-desc text โ€” Cartridge description shown in -cart help and menu options.
  • -cart-type type โ€” Cartridge base type (-cart-type help for list).
  • -cart-rom rom โ€” ROM image to load ($C000-).
  • -cart-rom2 rom โ€” Second ROM image to load ($E000-).
  • -cart-autorun โ€” Autorun cartridge.
  • -cart-becker โ€” Enable becker port where supported.
  • -mpi-slot slot โ€” (MPI) initially select slot (0โ€“3).
  • -mpi-load-cart [slot=]name โ€” (MPI) insert cartridge into next or numbered slot.

When configuring a Multi-Pak Interface (MPI), only the last configured DOS cartridge will end up connected to the virtual drives. MPI options also apply to the similar RACE Computer Expansion Cage. Iykyk, that detail matters. ๐Ÿซถ

๐Ÿ”Œ Becker port ๐Ÿ”Œ

  • -becker โ€” Prefer becker-enabled DOS cartridge when picked automatically.
  • -becker-ip address โ€” Address or hostname of DriveWire server [127.0.0.1]
  • -becker-port port โ€” Port of DriveWire server [65504]

๐Ÿ“ผ Cassettes ๐Ÿ“ผ

  • -load-tape file โ€” Attach file as tape image for reading.
  • -tape-write file โ€” Open file for tape writing.
  • -tape-pan panning โ€” Pan stereo input (0.0 = full left, 1.0 = full right) [0.5]
  • -tape-hysteresis percent โ€” Read hysteresis as percentage of full scale [1]
  • -no-tape-fast โ€” Disable fast tape loading.
  • -no-tape-pad-auto โ€” Disable automatic leader padding.
  • -tape-rewrite โ€” Enable tape rewriting.
  • -tape-rewrite-gap-ms ms โ€” Gap length in milliseconds to write in rewrite mode (1โ€“5000ms, default 500ms).
  • -tape-rewrite-leader bytes โ€” Length of leaders in bytes to write in rewrite mode (1โ€“2048 bytes, default 256).
  • -tape-ao-rate hz โ€” Set tape writing frame rate [9600]

๐Ÿ’พ Floppy disks ๐Ÿ’พ

  • -load-fdX file โ€” Insert disk image file into floppy drive X (0โ€“3).
  • -no-disk-write-back โ€” Don't default to enabling write-back for disk images.
  • -no-disk-auto-os9 โ€” Don't try to detect headerless OS-9 JVC disk images.
  • -no-disk-auto-sd โ€” Don't assume single density for 10 sec/track disks.

๐Ÿ—„๏ธ Hard disks ๐Ÿ—„๏ธ

  • -load-hdX file โ€” Use file as the hard disk image for drive X (0โ€“1).
  • -load-sd file โ€” Use file as the SD card image (e.g. for mooh, nx32).

โŒจ๏ธ Keyboard โŒจ๏ธ

  • -kbd-layout layout โ€” Host keyboard layout (-kbd-layout help for list).
  • -kbd-lang lang โ€” Host keyboard language (-kbd-lang help for list).
  • -kbd-bind hostkey=[pre:]emukey โ€” Map host key to emulated key. Prefixing emulated key name with 'pre:' disables translation for the bind (the bind "preempts" translation). Host key names can be determined by running with -debug-ui 1, which will log keypresses.
  • -kbd-translate โ€” Enable keyboard translation.
  • -type string โ€” Intercept ROM calls to type string into BASIC.
  • -load-text file โ€” Type file into BASIC.

๐Ÿ•น๏ธ Joysticks ๐Ÿ•น๏ธ

  • -joy-db-file file โ€” Load gamepad mappings from file.
  • -joy-right name โ€” Map right joystick.
  • -joy-left name โ€” Map left joystick.
  • -joy-virtual name โ€” Specify the 'virtual' joystick to cycle [kjoy0]
  • -joy name โ€” Configure named joystick (-joy help for list).

The remaining options configure the currently selected joystick:

  • -joy-desc text โ€” Joystick description.
  • -joy-axis axis=spec โ€” Configure joystick axis.
  • -joy-button btn=spec โ€” Configure joystick button.

Joystick specs are of the form [module:][arg[,arg]โ€ฆ], from:

  • physical โ€” axis args: joystick-index,[-]axis-index; button args: joystick-index,button-index
  • keyboard โ€” axis args: key-name0,key-name1; button args: key-name
  • mouse โ€” axis args: screen-offset0,screen-offset1; button args: button-number

For physical joysticks a - before the axis index inverts the axis. Axis 0 is the X-axis, and axis 1 the Y-axis. Buttons are numbered 0 or 1 (the second is only used when connected to a CoCo 3). No cap, thatโ€™s the whole mapping tea. ๐Ÿ“

๐Ÿ–จ๏ธ Printers ๐Ÿ–จ๏ธ

  • -lp-file file โ€” Append printer output to file.
  • -lp-pipe command โ€” Pipe printer output to command.

๐Ÿ“‚ Files ๐Ÿ“‚

  • -load file โ€” Load or attach file
  • -run file โ€” Load or attach file and attempt autorun
  • -load-fdX file โ€” Insert disk image file into floppy drive X (0โ€“3).
  • -load-hdX file โ€” Use file as the hard disk image for drive X (0โ€“1).
  • -load-sd file โ€” Use file as the SD card image (e.g. for mooh, nx32).
  • -load-tape file โ€” Attach file as tape image for reading.
  • -tape-write file โ€” Open file for tape writing.
  • -load-text file โ€” Type file into BASIC.

๐Ÿ“ผ Firmware ROM images ๐Ÿ“ผ

  • -rompath path โ€” ROM search path (colon-separated list).
  • -romlist name=list โ€” Define a ROM list.
  • -romlist-print โ€” Print defined ROM lists.
  • -crclist name=list โ€” Define a ROM CRC list.
  • -crclist-print โ€” Print defined ROM CRC lists.
  • -force-crc-match โ€” Force per-architecture CRC matches.

๐Ÿ–ฅ๏ธ User interface ๐Ÿ–ฅ๏ธ

  • -ui module โ€” User-interface module (-ui help for list).

๐ŸŒˆ Video ๐ŸŒˆ

  • -fs โ€” Start emulator full-screen if possible.
  • -fskip frames โ€” Frameskip (default: 0).
  • -ccr renderer โ€” Cross-colour renderer (simple, 5bit, partial or simulated).
  • -gl-filter filter โ€” OpenGL texture filter (auto, nearest or linear).
  • -vo-vsync โ€” Start with vsync enabled.
  • -vo-pixel-fmt format โ€” Pixel format (-vo-pixel-fmt help for list).
  • -geometry wxh+x+y โ€” Initial emulator geometry.
  • -vo-picture p โ€” Initial picture area (-vo-picture help for list).
  • -no-vo-scale-60hz โ€” Disable vertical scaling for 60Hz video.
  • -invert-text โ€” Start with text mode inverted.
  • -vo-brightness n โ€” Set TV brightness (0โ€“100) [50]
  • -vo-contrast n โ€” Set TV contrast (0โ€“100) [50]
  • -vo-colour n โ€” Set TV colour saturation (0โ€“100) [50]
  • -vo-hue n โ€” Set TV hue control (-179 to +180) [0]
  • -vo-monochrome โ€” Use a black-and-white display (disabled by default).
  • -no-vo-colour-killer โ€” Disable colour killer (enabled by default).

๐Ÿ”Š Audio ๐Ÿ”Š

  • -ao module โ€” Audio module (-ao help for list).
  • -ao-device string โ€” Device to use for audio module.
  • -ao-format fmt โ€” Set audio sample format (-ao-format help for list).
  • -ao-rate hz โ€” Set audio frame rate (if supported by module).
  • -ao-channels n โ€” Set number of audio channels, 1 or 2.
  • -ao-fragments n โ€” Set number of audio fragments.
  • -ao-fragment-ms ms โ€” Set audio fragment size in ms (if supported).
  • -ao-fragment-frames n โ€” Set audio fragment size in samples (if supported).
  • -ao-buffer-ms ms โ€” Set total audio buffer size in ms (if supported).
  • -ao-buffer-frames n โ€” Set total audio buffer size in samples (if supported).
  • -ao-gain db โ€” Audio gain in dB relative to 0 dBFS [-3.0]
  • -volume volume โ€” Older way to specify audio volume, linear (0โ€“100).

๐Ÿ› Debugging ๐Ÿ›

  • -gdb โ€” Enable GDB target.
  • -gdb-ip address โ€” Address of interface for GDB target [127.0.0.1]
  • -gdb-port port โ€” Port for GDB target to listen on [65520]
  • -gdb-pseudo-regs โ€” Enable pseudo-registers (e.g. SAM, PIA) for GDB.
  • -gdb-flags-as-struct โ€” Describe CPU flags as a struct to GDB.
  • -no-ratelimit โ€” Run CPU as fast as possible.
  • -trace โ€” Start with trace mode on.
  • -trace-timing โ€” Print timings in trace mode.
  • -debug-fdc flags โ€” FDC debugging ๐Ÿ‘€ (check the manual, or just slap -1 in there for all of it).
  • -debug-file flags โ€” File debugging (again: manual, or -1 for everything).
  • -debug-gdb flags โ€” GDB target debugging (manual / -1 for all).
  • -debug-ui flags โ€” UI debugging (manual / -1 for all).
  • -v, -verbose level โ€” general debug verbosity, 0 to 3, default is 1.
  • -q, -quiet โ€” literally just -verbose 0. Same thing, shorter vibe. ๐Ÿคซ
  • -trap condition โ€” set up a trap that fires on condition. More on those below ๐Ÿ‘‡

Okay so these next ones all change how a configured trap behaves:

  • -trap-range m-n โ€” only do the trap's action on the *m*thโ€“*n*th trigger. Not every time, bestie, just that window โœจ
  • -trap-snap file โ€” write a snapshot when the trap fires ๐Ÿ“ธ
  • -trap-timeout n โ€” quit the emulator n seconds after the trap.
  • -trap-trace โ€” start trace mode at the trap.
  • -trap-trace-n n โ€” start trace mode at the trap, but only for n instructions.
  • -trap-no-trace โ€” stop trace mode at the trap.

๐Ÿชค Trap conditions

These are the conditions you can hand to -trap, and each one is a whole mood:

  • immediate (or -) โ€” trigger immediately. No notes, just vibes.
  • pc=addr โ€” trigger at that CPU Program Counter value.
  • read=a[-b] โ€” trigger on a read from the address range.
  • write=a[-b] โ€” trigger on a write to the address range.
  • access=a[-b] โ€” trigger on either a read or a write.
  • tape-motor-off โ€” trigger when the tape motor switches off.

There's also some older options hanging around that you could honestly just do with traps now:

  • -timeout s โ€” run for s seconds, then quit.
  • -timeout-motoroff s โ€” quit s seconds after the tape motor switches off.
  • -snap-motoroff file โ€” write a snapshot every single time the tape motor switches off.

๐Ÿ› ๏ธ Other options

  • -config-print โ€” print the config to standard out, leaving out (most) default options.
  • -config-print-all โ€” same but with the defaults included, no gatekeeping ๐Ÿ’…
  • -config-auto-save โ€” write the configuration to $HOME/.xroar/xroar.conf when you exit.
  • -h, --help โ€” show help and dip.
  • -V, --version โ€” print version info and dip.

โŒจ๏ธ KEYBOARD SHORTCUTS

Okay bestie, this is the hotkey lore. Memorise it, it's giving cheat sheet ๐Ÿ‘‘

  • CTRL+1โ€“4 โ€” insert a disk into drive 1โ€“4.
  • CTRL+SHIFT+1โ€“4 โ€” create a new disk in drive 1โ€“4.
  • CTRL+5โ€“8 โ€” toggle write enable on the disk in drive 1โ€“4.
  • CTRL+SHIFT+5โ€“8 โ€” toggle write back on the disk in drive 1โ€“4.
  • CTRL+A โ€” cycle through cross-colour modes (and RGB on the CoCo 3).
  • CTRL+D โ€” open the disk control tool (GTK+ & Windows only).
  • CTRL+SHIFT+D โ€” flush disk images.
  • CTRL+E โ€” toggle the cartridge on/off. Reset to make it actually take effect, fr.
  • CTRL+F โ€” toggle full screen mode.
  • or F11 โ€” same full screen toggle, pick your fave.
  • CTRL+SHIFT+H โ€” halt the CPU (not on the MC-10).
  • or PAUSE โ€” also halts the CPU.
  • CTRL+SHIFT+I โ€” toggle text mode inverse video.
  • CTRL+J โ€” cycle through joystick emulation modes (None, Right, Left).
  • CTRL+SHIFT+J โ€” swap the left and right joysticks.
  • CTRL+K โ€” toggle Dragon/CoCo keyboard layout (not on the MC-10).
  • CTRL+L โ€” load a file.
  • CTRL+SHIFT+L โ€” load a file and attempt to autorun it.
  • CTRL+M โ€” toggle the menubar.
  • CTRL+SHIFT+P โ€” flush printer output.
  • CTRL+Q โ€” quit the emulator.
  • CTRL+R โ€” soft reset the emulated machine.
  • CTRL+SHIFT+R โ€” hard reset the emulated machine.
  • CTRL+S โ€” save a snapshot.
  • CTRL+SHIFT+S โ€” write a screenshot as PNG.
  • CTRL+T โ€” open the tape control tool (GTK+ & Windows only).
  • CTRL+V โ€” toggle trace mode.
  • CTRL+SHIFT+V โ€” open the TV controls window (GTK+ & Windows only).
  • CTRL+W โ€” attach a virtual cassette file for writing.
  • CTRL+Z โ€” enable keyboard translation mode.
  • CTRL+- โ€” zoom out (smaller emulated display).
  • CTRL++ โ€” zoom in (larger emulated display).
  • CTRL+< โ€” zoom out the picture (see more border).
  • CTRL+> โ€” zoom in the picture area (see less border).
  • F12 โ€” run at maximum speed while held. Fastest fingers in the west.
  • SHIFT+F12 โ€” maximum speed toggle, so you don't have to keep holding it ๐Ÿ˜Œ

๐Ÿ“œ LICENCE

Bestie, this is free software ๐Ÿ’– You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the Licence, or (at your option) any later version.

It's distributed in the hope that it'll be useful, but WITHOUT ANY WARRANTY โ€” not even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for the full deets, ok?

You should've gotten a copy of the GNU General Public License along with this program. If not, peep <http://www.gnu.org/licenses/>. ๐Ÿ‘€


๐Ÿ—‚๏ธ FILES

  • $HOME/.xroar/xroar.conf โ€” the configuration file.
  • $HOME/.xroar/roms/ โ€” the directory where firmware ROM images live.

Here are some iconic well-known filenames for firmware ROM images. The full manual has more, so go look if you're curious:

  • Dragon 32 BASIC โ€” d32.rom
  • Dragon 64 32K BASIC โ€” d64_1.rom
  • Dragon 64 64K BASIC โ€” d64_2.rom
  • DragonDOS โ€” dplus49b.rom, sdose6.rom, ddos10.rom
  • Tandy Colour BASIC โ€” bas13.rom, bas12.rom, bas11.rom, bas10.rom
  • Tandy Extended BASIC โ€” extbas11.rom, extbas10.rom
  • RS-DOS โ€” disk11.rom, disk10.rom
  • Tandy Super ECB (CoCo 3) โ€” coco3.rom
  • Tandy Super ECB (PAL CoCo 3) โ€” coco3p.rom
  • Tandy Microcolour BASIC (MC-10) โ€” mc10.rom

That's the whole page, bestie โ€” you made it to the end ๐Ÿซถ This was xroar-1.13.0.dev, dated July 2026, and you've been reading xroar(1). Slay ๐Ÿ’…โœจ

๐Ÿ“ฆ where this page comes from