R8BEmu's goal is to emulate the Tandy's Color Computer family but could be the base of any other type of emulator.
This projet emerged from nostalgia, nothing more, there is no real need for another emulator of the Color Computer. Many of them exist and support more feature than what you'll se here. So why should I build yet another emulator? Just for fun!
$ ./r8bemu --help
Usage: r8bemu [options]
--coco2 [true|false] Use Color Computer 2 hardware emulation
--coco3 [true|false] Use Color Computer 3 hardware emulation
--terminal-graphic [true|false] Activate the terminal interface in graphic mode
--terminal [true|false] Activate the terminal interface in text mode
--window [true|false] Activate the windowed graphic interface
--window-width <number> Width of the windowed graphic interface
--window-height <number> Height of the windowed graphic interface
--composite [true|false] Composite blue/red color emulation
--home <path> Home directory (location of ROM files) (default: ~/.r8bemu)
--disk <path> Insert the diskette image file in drive 0 (default: ~/.r8bemu/disk.dsk)
--disk1 <path> Insert the diskette image file in drive 1 (default: ~/.r8bemu/disk.dsk)
--disk2 <path> Insert the diskette image file in drive 2 (default: ~/.r8bemu/disk.dsk)
--disk3 <path> Insert the diskette image file in drive 3 (default: ~/.r8bemu/disk.dsk)
--playback <path> Define the audio file used for playback (default: ~/.r8bemu/playback.wav)
--recording <path> Define the audio file used for recording (default: ~/.r8bemu/recording.wav)
--script <path> Load a script file at boot (default: ~/.r8bemu/autorun.bas)
--script-text <text> Type the following keys at boot
--mouse [true|false] Use the mouse as the left joystick
--dpad-left [true|false] Use the keyboard arrow keys as the left joystick
--dpad-right [true|false] Use the keyboard arrow keys as the right joystick
--keyboard [true|false] Disable keyboard input buffering and translation
--mute [true|false] Mute the speaker
--disassembler [true|false] Enable the disassembler
--trace [true|false] Enable the execution trace on error
--trace-size <number> Limit the size of the execution trace
--help [true|false] Show help
In order to use this emulator, you must provide the ROM to boot on. You can download it from an actual Color Computer 2
you own and put the content of Color Basic
in bas13.rom
, Extended Color Basic
in extbas11.rom
and
Disk Extended Color Basic
in disk11.rom
or craft your own :
bas13.rom
starting at 0xA000 ending at 0xBFFF, boot vector must be at 0xBFFE ;extbas11.rom
starting at 0x8000 ending at 0x9FFF .disk11.rom
starting at 0xC000 ending at 0xFF00 .
For Color Computer 3 emulation, you need to provide the image of Extended Color Basic 2.0
in BASIC3.ROM
and Disk Extended Color Basic
in disk11.rom
.
To load a program from a .wav
file, start the application with --playback <path-to-file>
and type CLOAD
or
CLOADM
at the prompt. To save on tape, start the application with --recording <path-to-file>
and type
CSAVE "<file-name>"
.
Disk support is much faster than the cassette support as the CPU does not have to decode the data on the disk and waits for the controller to feed sector bytes.
To load a program from a .dsk
file, choose a disk by clicking on the disk icon and then :
- type
DIR
to list the files, - type
LOAD
" to load a basic file, - type
RUN
" to load and run a basic file, - type
LOADM
" to load a binary file.
In order to perform integration tests the content of a script may be is typed on the emulator keyboard.
To do so, start the application with --script <path-to-file>
.
- https://colorcomputerarchive.com/
- https://nowhereman999.wordpress.com/2017/06/19/coco-6809-assembly-on-a-modern-computer/
- https://www.maddes.net/m6809pm/
- http://tlindner.macmess.org/?page_id=86
- https://techheap.packetizer.com/processors/6809/6809Instructions.html
- https://www.lomont.org/software/misc/coco/
- https://exstructus.com/tags/coco/australia-colour-palette/
- JS Mocha : https://www.haplessgenius.com/mocha/
- XRoaR : http://www.6809.org.uk/xroar/
- VCC : https://sourceforge.net/projects/vcce/