xroar(1)
๐ 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).-cconffile โ Specify a configuration file.
๐ Machines ๐
-mname,-default-machinename โ Default machine profile to select on startup.-machinename โ Create or modify named machine profile.-machine helplists currently defined profiles.
The remaining options configure the currently selected machine โ yes, these next ones, bestie:
-machine-desctext โ Machine description shown in-machine helpand menu options.-machine-archarch โ Machine architecture (dragon64,dragon32,coco,coco3ormc10).-machine-keyboardlayout โ Keyboard layout (dragon,dragon200e,cocoorcoco3).-machine-cpucpu โ Machine CPU (6809or6309). Not applicable to the MC-10.-basrom โ ROM image for Colour BASIC (CoCo) or Microcolour BASIC (MC-10).-extbasrom โ ROM image for Extended BASIC (Super Extended BASIC on the CoCo 3).-altbasrom โ 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-charsetrom โ External character generator ROM to use.-tv-typetype โ TV type (pal,ntscorpal-m).-tv-inputinput โ One ofcmp(composite video, no cross-colour),cmp-br(composite video, blue-red cross-colour),cmp-rb(composite video, red-blue cross-colour) orrgb(RGB video, CoCo 3 only).-vdg-typetype โ Indicate the VDG variant fitted. One of6847or6847t1.-ram-orgorganisation โ RAM organisation (-ram-org helpfor list).-ramkbytes โ Amount of RAM fitted in kilobytes. Valid sizes are4โ64Kfor Dragon and Tandy CoCo 1/2;128Kor512Kfor the Tandy CoCo 3;2K,4Kor20Kfor the Tandy MC-10.-ram-initpattern โ RAM start pattern (-ram-init helpfor list).-machine-cartname โ Default cartridge to attach.-no-machine-cartto inhibit the default behaviour of searching for a workign DOS cartridge.
๐งฉ Cartridges ๐งฉ
-cartname โ Create or modify named cartridge profile.-cart helplists currently defined profiles.
The remaining options configure the currently selected cartridge:
-cart-desctext โ Cartridge description shown in-cart helpand menu options.-cart-typetype โ Cartridge base type (-cart-type helpfor list).-cart-romrom โ ROM image to load ($C000-).-cart-rom2rom โ Second ROM image to load ($E000-).-cart-autorunโ Autorun cartridge.-cart-beckerโ Enable becker port where supported.-mpi-slotslot โ (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-ipaddress โ Address or hostname of DriveWire server [127.0.0.1]-becker-portport โ Port of DriveWire server [65504]
๐ผ Cassettes ๐ผ
-load-tapefile โ Attach file as tape image for reading.-tape-writefile โ Open file for tape writing.-tape-panpanning โ Pan stereo input (0.0= full left,1.0= full right) [0.5]-tape-hysteresispercent โ 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-msms โ Gap length in milliseconds to write in rewrite mode (1โ5000ms, default500ms).-tape-rewrite-leaderbytes โ Length of leaders in bytes to write in rewrite mode (1โ2048bytes, default256).-tape-ao-ratehz โ Set tape writing frame rate [9600]
๐พ Floppy disks ๐พ
-load-fdXfile โ 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-hdXfile โ Use file as the hard disk image for drive X (0โ1).-load-sdfile โ Use file as the SD card image (e.g. formooh,nx32).
โจ๏ธ Keyboard โจ๏ธ
-kbd-layoutlayout โ Host keyboard layout (-kbd-layout helpfor list).-kbd-langlang โ Host keyboard language (-kbd-lang helpfor list).-kbd-bindhostkey=[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.-typestring โ Intercept ROM calls to type string into BASIC.-load-textfile โ Type file into BASIC.
๐น๏ธ Joysticks ๐น๏ธ
-joy-db-filefile โ Load gamepad mappings from file.-joy-rightname โ Map right joystick.-joy-leftname โ Map left joystick.-joy-virtualname โ Specify the 'virtual' joystick to cycle [kjoy0]-joyname โ Configure named joystick (-joy helpfor list).
The remaining options configure the currently selected joystick:
-joy-desctext โ Joystick description.-joy-axisaxis=spec โ Configure joystick axis.-joy-buttonbtn=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-indexkeyboardโ axis args:key-name0,key-name1; button args:key-namemouseโ 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-filefile โ Append printer output to file.-lp-pipecommand โ Pipe printer output to command.
๐ Files ๐
-loadfile โ Load or attach file-runfile โ Load or attach file and attempt autorun-load-fdXfile โ Insert disk image file into floppy drive X (0โ3).-load-hdXfile โ Use file as the hard disk image for drive X (0โ1).-load-sdfile โ Use file as the SD card image (e.g. formooh,nx32).-load-tapefile โ Attach file as tape image for reading.-tape-writefile โ Open file for tape writing.-load-textfile โ Type file into BASIC.
๐ผ Firmware ROM images ๐ผ
-rompathpath โ ROM search path (colon-separated list).-romlistname=list โ Define a ROM list.-romlist-printโ Print defined ROM lists.-crclistname=list โ Define a ROM CRC list.-crclist-printโ Print defined ROM CRC lists.-force-crc-matchโ Force per-architecture CRC matches.
๐ฅ๏ธ User interface ๐ฅ๏ธ
-uimodule โ User-interface module (-ui helpfor list).
๐ Video ๐
-fsโ Start emulator full-screen if possible.-fskipframes โ Frameskip (default:0).-ccrrenderer โ Cross-colour renderer (simple,5bit,partialorsimulated).-gl-filterfilter โ OpenGL texture filter (auto,nearestorlinear).-vo-vsyncโ Start with vsync enabled.-vo-pixel-fmtformat โ Pixel format (-vo-pixel-fmt helpfor list).-geometrywxh+x+y โ Initial emulator geometry.-vo-picturep โ Initial picture area (-vo-picture helpfor list).-no-vo-scale-60hzโ Disable vertical scaling for 60Hz video.-invert-textโ Start with text mode inverted.-vo-brightnessn โ Set TV brightness (0โ100) [50]-vo-contrastn โ Set TV contrast (0โ100) [50]-vo-colourn โ Set TV colour saturation (0โ100) [50]-vo-huen โ Set TV hue control (-179to+180) [0]-vo-monochromeโ Use a black-and-white display (disabled by default).-no-vo-colour-killerโ Disable colour killer (enabled by default).
๐ Audio ๐
-aomodule โ Audio module (-ao helpfor list).-ao-devicestring โ Device to use for audio module.-ao-formatfmt โ Set audio sample format (-ao-format helpfor list).-ao-ratehz โ Set audio frame rate (if supported by module).-ao-channelsn โ Set number of audio channels,1or2.-ao-fragmentsn โ Set number of audio fragments.-ao-fragment-msms โ Set audio fragment size in ms (if supported).-ao-fragment-framesn โ Set audio fragment size in samples (if supported).-ao-buffer-msms โ Set total audio buffer size in ms (if supported).-ao-buffer-framesn โ Set total audio buffer size in samples (if supported).-ao-gaindb โ Audio gain in dB relative to0 dBFS[-3.0]-volumevolume โ Older way to specify audio volume, linear (0โ100).
๐ Debugging ๐
-gdbโ Enable GDB target.-gdb-ipaddress โ Address of interface for GDB target [127.0.0.1]-gdb-portport โ 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-fdcflags โ FDC debugging ๐ (check the manual, or just slap-1in there for all of it).-debug-fileflags โ File debugging (again: manual, or-1for everything).-debug-gdbflags โ GDB target debugging (manual /-1for all).-debug-uiflags โ UI debugging (manual /-1for all).-v,-verboselevel โ general debug verbosity,0to3, default is1.-q,-quietโ literally just-verbose 0. Same thing, shorter vibe. ๐คซ-trapcondition โ 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-rangem-n โ only do the trap's action on the *m*thโ*n*th trigger. Not every time, bestie, just that window โจ-trap-snapfile โ write a snapshot when the trap fires ๐ธ-trap-timeoutn โ quit the emulator n seconds after the trap.-trap-traceโ start trace mode at the trap.-trap-trace-nn โ 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:
-timeouts โ run for s seconds, then quit.-timeout-motoroffs โ quit s seconds after the tape motor switches off.-snap-motorofffile โ 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.confwhen 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
- nixpkgs unstable: xroar 1.13.0.dev-unstable-2026-08-07
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms