High- and low-level features of XRoar, a Dragon and Tandy CoCo 1/2 emulator. Some features listed may only be available in the latest snapshot build. These are considered less stable than full releases.
- http://www.6809.org.uk/xroar/ - XRoar homepage
- https://launchpad.net/~sixxie/+archive/ppa - snapshot builds for Ubuntu
- http://www.6809.org.uk/tmp/xroar/ - snapshot builds for Windows and (sometimes) Mac OS X
- Most featureful user-interface is using GTK+ (2.x) on Unix.
- Mac OS X interface provides some menus.
- Windows interface provices some menus.
- Fallback SDL interface presents no menus and uses keyboard shortcuts only.
- Accelerated OpenGL output using SDL or GtkGLExt.
- YUV scaled output using SDL - should be accelerated using the Xv extension.
- Simple unscalable framebuffer output using SDL as last resort.
- All video modes supported, documented or not, due to implementing the SAM-VDG interaction.
- PAL or NTSC machines emulated.
- NTSC cross-colour simulated.
- Supports original 6847 and the later 6847T1 with true lowercase.
- Optional external character generator supported (e.g., for Dragon 200-E).
- Accurate timing for PAL and NTSC Dragons and CoCos.
- Accurate mode-switching, reflecting the timing differences between switching colour set and switching graphics mode.
- "Left over data" when switching modes part-way through a byte is good but not completely accurate yet.
- Frame skip supported for slow machines.
- Wide variety of sound drivers supported including OSS, ALSA, CoreAudio and SDL.
- Mux selection of DAC output and tape input supported.
- Output level interactions of mux selection and single-bit output measured and implemented.
- Feedback into single-bit pin configured as an input supported.
- Host keyboard positions closely mapped to emulated keyboard positions.
- Host keyboard layout can be specified to get this mapping right.
- Translated mode available - host key value mapped to emulated key value.
- Keyboard matrix ghosting.
- Most emulator functionality available through Ctrl+key or Ctrl+Shift+key.
- Physical joysticks supported through SDL or the Linux joystick API.
- Virtual joystick defaults to keyboard-based, using cursors + Left Alt.
- Mouse-based virtual joystick available. Maps screen position to joystick position. Seemingly not working in the GTK+ Windows port!
- Arbitrary configuration of each of a joystick's axes and buttons from any input source allowed.
- CAS file input and output supported.
- Audio file input and output supported with libsndfile.
- Tape used for reading is separate from tape used for writing. Imagine two tape decks being connected, one to the input lead, one to the output. The motor control applies to both.
- Accelerated tape loading by intercepting ROM calls.
- Special mode intercepts ROM calls and rewrites any data read from the input tape to the output tape.
- Reads and writes DSK (JVC), VDK and DMK format disk images.
- Supports setting write-protect on disks.
- Supports toggling write-back for disks. Disk data is held in memory and only written out on disk change or emulator shutdown, and then only if write-back is enabled.
- Disk is automatically expanded when a new track is written.
- DragonDOS, Delta and RS-DOS cartridges supported.
- WD2791, WD2793, WD2795 and WD2797 floppy controllers supported.
- "Becker port" supported for communication with Drivewire.
- OS-9 filesystems on headerless DSK (JVC) format images can provide geometry hints (sides, heads).
- Orchestra-90 stereo sound cart supported.
- ROM carts with or without FIRQ-based autostart supported.
- Code supports arbitrary interface, providing address, data and P2 select information.
- ROM images are simple binary dumps.
- DGN format also supported, but header is ignored.
- Machines are configured with BASIC ($A000-) and/or Extended BASIC ($8000-).
- Dragon 64 architecture additionally supports an alternate BASIC ROM.
- Cartridges can list up to two ROMs (e.g., for options like DOSDream resident from $E000).
- Printing to a file or via a pipe (e.g., through enscript) supported.
- Keyboard shortcut to flush output - useful when using a pipe.
- Dragon parallel port fully supported.
- CoCo printing only supported through ROM call intercept.
- DragonDOS or RSDOS binaries can be directly loaded into memory and executed.
- Similarly, Intel hex record format files can be loaded and executed.
SAM - 74LS783
- 4K, 16K and 64K RAM organisation all supported.
- Accurate simulation of video address counter - see SAM-VDG interaction.
- Accurate clock stretching on slow/fast transitions.
CPU - MC6809
- Deferred recognition of NMI, FIRQ, IRQ, latched NMI.
- HALT supported.
- Very accurate, down to which cycles are non-valid memory address and thus potentially affect the clock provided by the SAM.
CPU - HD6309
- Preliminary support based on 6809 code and various documentation.
- Some small elements of behavior clarified.
PIAs - MC6821
- I/O behaviour based on internal sink/source plus external sink/source.
- Different behaviour for A-side and B-side.
- Interrupts recognised from Cx1.
- Cx2 as interrupt source not supported.
- Trace mode prints out each instruction after it is executed.
- GDB remote target support allows more interactive debugging. Use a specially patched GDB for 6809 support.