About the Compucolor II Emulator
This emulator is written in javascript, and makes use of some fairly
modern browser features, namely canvas support and the
FileReader API. If your browser doesn't support those features,
the emulator may lose features or might not work at all.
This emulator is my first javascript program, and it leans heavily on
the work and encouragement of others.
- First off, thanks are due to David Jeppesen, who got this all started
by giving me his old Compucolor. I wanted one as the basis for
writing an emulator. I'm embarrassed to say that was back in 2002,
and it has taken me over a decade to make good on my intentions.
- Dr. David B. Suits
didn't realize it, but he lit a fire under me to finally make the
time to write this emulator. I had spent nearly a decade with the
intention of writing an emulator for the Compcolor II, but it never
made it to the top of my priority list. After contacting David about
permission to scan his book, he pointed me at
a more restricted javascript emulator
for a machine closely related to the Compucolor II.
Although I didn't use any of that code, its shockingly small
size made me realize that perhaps it wasn't as big of a job as
I had feared; I began writing this emulator a couple days later.
- Garry Epps has spent many hours using the emulator, diagnosing problems,
writing test programs to exercise corner cases, and even disassembling
30 year old programs to figure out what it is doing that causes the
emulator to behave incorrectly.
- This code makes use of javascript libraries generously shared by other
developers:
Version 2021.03.16
The web version of the emulator recently has been unable to run with
disk images from the vmedia.html page, due to a tightening of the webhost's
security policy. There was no actual security risk (on the server, not of
the user's computer) but I've tweaked the way the path to the virtual disk
image is communicated via the URL to avoid the error.
Version 2019.08.10
Thanks to Dr. Gergő Érdi, the TMS 5501 emulation is a bit more
accurate. Not all registers are readable, and the timers are one-shot, not
periodic. This is the first pull request I've had in the six years the
emulator has been online. Thank you Dr. Érdi.
Version 2014.09.01
In short, there are no functional differences.
- Slight change to the js8080 code speed up emulation under the
Chrome browser by about 6x
- A couple jshint linting fixes
Version 2014.03.03
- Made configuration preferences persistent
- Added an option to allow the emulator to run without speed regulation;
reworked the cpu speed regulation logic, helping the speed of both
autotyping and unregulated CPU mode.
- Added support for a 3rd party joystick (used by a few games)
- Replaced a handful of disks with a single "action games" disk
- Modified the virtual keyboard selection controls, although the overall
functionality is unchanged
- The disk selection pulldown disables the "--empty--" choice if the
drive is already empty
- Fixed a bug in the last aux carry flag in the ADC instruction
Version 2014.02.14
This release benefited greatly from Garry Epps' massive help in spotting
modeling problems, reverse engineering some misbehaving programs, and writing
incisive test programs.
- Overhauled the keyboard event handling and mapping. N-key rollover
is implemented now, allowing for faster typing and use of games
which require multiple keys to be held down simultaneously.
- Implemented basic, extended, and deluxe virtual keyboard layouts
- If a virtual floppy image has been modified and not saved, a warning
dialog pops up when exiting the page, reloading, or closing the
browser
- When feeding a file into the emulator via the "autotyping" feature,
the default is to now feed one key at a time instead of using the
hack to load the BASIC line buffer one line at a time. Autotyping
is now usable in other contexts, such as entering text into an editor.
The autotyper now recognizes three directives:
- [[[RESET]]]
- Force a hard reset
- [[[STUFFLINES]]]
- Autotype one line at a time
- [[[STUFFKEYS]]]
- Autotype one key at a time, waiting 10 field times after each end of line
- [[[STUFFKEYS;n]]]
- Autotype one key at a time, waiting 'n' field times after each end of line; 'n' can be any positive number
- Fixed some bugs in the 8080 and TMS 5501 interrupt handling
- SUB, SBB, AND, OR, and XOR opcodes were mishandling the aux carry flag;
SUB and SBB were also mishandling the carry flag; DAA had a number of
problems. The flags register wasn't respecting the fact that bits
1, 3, and 5 are constant values.
- Moved the "Help" and "About" links to a more discoverable location
- Various implementation improvements
Version 2013.12.01
- Added emulation for the Soundware audio device
- Exposed a pull-down to select the CCII ROM version
- The URI can specify initial disks, ROM version, and Auto key press
- Added a blank disk to the pull-down list of packaged disk images
- Added back support for sector-level virtual floppy disk images
- A few general code cleanups
Version 2013.11.16
- added lower case character set mod
- added option to use v8.79 ROMs, although it is disabled in order
to reduce the UI complexity
- the cursor now blinks in phase with blinking text,
like the real machine
- refreshed the set of disk images released with the emulator
- fixed some bugs in the floppy emulation
- made an incompatible change to the virtual floppy disk format,
and simultaneously re-released all the floppy images in that
new format
- virtual floppy disk images can be saved using a more convenient
mechanism on modern browsers (those supporting the File API)
- some very minor and obscure emulation modeling changes
Version 2013.04.21
- added floppy disk emulation
- sped up autotyping "download" feature
- removed 8080 monitor to simplify the UI
- unified the "Read File" button with the "Run a program:" pulldown
- added mapping of Insert key to INSCHAR and Delete key to DELCHAR
- refreshed the list of runnable programs
- a number of small fixes and improvements
Version 2013.03.30