TRS-80 Color Computer Emulator v1.20
Copyright 2000, 2001 by David Keil
Last updated March, 14 2001


Contents:

Return to Color Computer Emulator Page

Return to TRS-80 Computer Emulator Pages


Introduction:

This program emulates the TRS-80 Color Computer popular in the 1980s.

The emulators are written in 80386 assembly language with a C++ front-end to provide a user friendly interface. All the COCO emulation runs in assembly language for maximum speed. The start-up, configuration and virtual disk selection screens are written in C++.

The Color Computer emulator currently supports a standard configuration including:

Hardware Cartridges Emulated
Disk BASIC & FDC Cartridge
  • 100% compatible WD1793 floppy disk controller
  • NMI & HALT supported
Orchestra-90 Music Synthesizer Cartridge
  • Sound output to PC speaker, SoundBlaster or Wave file
RS-232 Cartridge (coming soon)

In addition to the standard Color Computer configuration the emulator also supports:

Version 1.xx of the emulator is the result of hundreds of hours of programming and there are still updates to be made and COCO hardware to add support for. You are welcome to download a full working copy of the emulator without cost or obligation to experience the 1980's again. I'm trusting you to decide if the program is worthwhile and that if you continue to use the emulator beyond an introductory period that you will send $10 US to:

David Keil
P.O. Box 143
Alma Center, WI 54611

Failure to contribute to a program you find worthwhile and make use of will result in two things happening. 1) You will have nothing but restless nights until you contribute. 2) Continued upgrades and hardware support for the emulator will never be written.

Enjoy the emulator,

David Keil
dmkeil@discover-net.net
../../~dmkeil/

 Return to contents: 


Installation:

Unzip the Color Computer emulator program distribution zip into a directory. You should also download and unzip the support distribution zip into the same directory. Included in the zip is a Disk BASIC cartridge which will need to be inserted into a multi-pak slot before COCO disk can be accessed.

To start the Color Computer emulator type:

COCO

To access a virtual disk push F9 to select a virtual disk, select disk #0 and push ENTER to select a virtual disk file, then highlight and push ENTER to select a virtual disk, then push F9 to return to the enulation screen and type:

DIR

The directory of the disk you inserted should be displayed. If a syntax error was reported or the boot-up message didn't show 'DISK BASIC' you will need to insert the Disk BASIC cartridge into the Multi-Pak Interface, set the select switch to the correct slot and reboot the emulator.

Return to contents: 


Command line options:

The emulator has only one command line option. The option is to select a configuration file to use. This option is in the form:

COCO /@filename

replace filename with the name of the configuration file you wish to use. If the config file doesn't already exist it will be created. If you don't enter a /@ option then the filename defaults to COCO.CFG. All configuration changes, virtual disks, cartridges & cassettes you have selected are saved in this file when you exit the emulator. When you restart the emulator again using the same configuration name the emulator's configuration is loaded from this file.


Operation:

Once you have started the emulator operation is for the most part exactly like operating a real Color Computer. However, because there are no physical drives, floppies, reset & power switches and the need for configuration options and other enhancements beyond a normal COCO there is additional operation information the user will need to understand in order to use the emulator effectively.

Return to contents: 


Operation - ROM Images:

The emulators come with various Color Computer ROM images. The ROM image loaded at emulator startup depends on which "Computer Type" is configured in the "Configuration Screen".

The emulator uses:

The last ROM listed is actually a cartridge and will need to be inserted into the Multi-Pak Interface to be used.

The emulator also support cartridge ROM images. These images are raw dumps of an actual cartridge ROM. The load address is assumed to be $C000 and the length is assumed to be the actual file length with a maximum length of $3F00.

The emulator creates and maintains .CAR files which contains other important information about a cartridge ROM. This file is created when a cartridge ROM is first loaded and some of its information can be changed by the user. Check the section on the Multi-Pak Interface and the .CAR file technical information for more info about these files.

Return to contents:


Operation - The emulator keyboard:

The emulator has two keyboard layouts. Layout one is the PC layout where each PC key is translated and send to the emulator as labeled on the PC. Layout two is the COCO layout where each PC key sent according to the relative position on a real COCO keyboard. The best way to understand the difference is. In the PC layout a shift-2 will cause an '@' to be entered in the emulator. In the COCO layout a shift-2 will cause a double quote to be entered. Most of the time the user will want to run the emulator in the PC layout since the values labeled on the PC key is what is sent to the emulator. However, some COCO programs require key combinations using the few keys that get re-mapped and will not work with the translated layout. This is when the user would use the COCO layout. 

ESCAPE COCO break key
F1, F2 Mapped to keys of the same name on the COCO 3
CTRL Works like Shift-Down arrow in the COCO emulator and as CTRL in the COCO 3 emulator.

Right joystick button when keyboard joystick emulation is enabled.
ALT Mapped to key of the same name on the COCO 3

Left joystick button when keyboard joystick emulation is enabled.
' The `/~ key pushed un-shifted is the same as shift-@ on real COCO keyboard
F3 & Page-Down COCO clear key
F4 Hot-key to bring up Multi-Pak Interface screen
Shift-F4 Hot-key to do a Power-Up reset of the COCO.
Use this reset when changing cartridges and when the normal reset doesn't reset the COCO system.
F5 Hot-key to bring up system configuration screen
Shift-F5 Suspend emulator and drop to a DOS prompt.
F6 Hot-key to force a change in the emulator CPU speed.
Shift-F6 Lock the CPU speed. Locking the CPU speed prevents the COCO operating systems from changing the CPU speed.
F7 Hot-key to save a snapshot of the COCO program currently running
Shift-F7 Hot-key to:
  • load a snapshot of a saved COCO program
  • load a .BIN file from a PC directory
  • load a .PAK cartridge ROM image file from a PC directory
    This function will load the ROM image into cartridge slot #1

Use the F1 key to toggle the type of file that is loaded.

F8 Hot-key to stop Wave file recording, start or re-start playing recorded Orchestra 90 music
Shift-F8 Hot-key to stop playing recorded Orchestra 90 music
F9 Hot-key to bring up the virtual floppy drive status screen
Shift-F9 Hot-key to bring up the virtual hard drive status screen
F10 COCO reset key
Shift-F10 Exit the emulator (like the COCO power switch)
F11 Hot-key to bring up the virtual cassette control screen
Shift-F11 Hot-key to bring up the Audio/Wave cassette control screen
F12 Stop the MC6809 CPU and display MC6809 registers on status line.
Each time F12 is pushed the CPU executes one MC6809 instruction (single step mode).
Shift F12 Stop the MC6809 CPU and display MC6809 registers on status line.
Pushing when the CPU is stopped will re-start the CPU (ends single step mode).
Insert / Home / Page-Up / Delete / End The [0],[ : *], [- =], [; +] & [@]
These COCO keys are re-mapped on these PC keys to eliminate some of the problems with translating the PC layout. For example, for programs that don't recognize caps-lock and use shift-0 as cap-lock instead, the user can use shift-Insert to enter the shift-0 key combination.
Caps-Lock Works like Shift-0 in the COCO emulator and as Caps-Lock in the COCO 3 emulator.
Num-Lock When keyboard emulation of COCO joysticks is enabled pushing Num-Lock toggles the joystick keys between joystick and keyboard input.
Arrow keys Changes COCO joystick values when keyboard joystick emulation is enabled.

When the keyboard is in 'PC' mode the keys not defined above send keystrokes to the emulator corresponding to the character labeled on the PC's keyboard. The following are a few exceptions.

When the keyboard is in 'COCO' mode the keys not defined above send keystrokes to the emulator corresponding to its relative location on a COCO keyboard. In most cases this is the same character labeled on the PC's keyboard. The following are some of the major differences.

The following conditions apply to both keyboard modes.

Return to contents: 


Operation - The emulator display screen:

The emulator operates in 640x480x16 VGA mode. The, up to 8, colors the COCO uses are defined in a palette file (COCO.PAL).

At the bottom of the display screen is a status line. The four boxes on the left represent the 4 floppy drive select lights. Between drive lights 1 and 2 is the track number of the currently selected drive.

Following the drives lights is where is cassette counter is displayed. The same counter is used for the Virtual & Audio/Wave recorders.

Approximately in the center of the screen is the CPU speed. The available speeds are .447, .895, 1.79, 3.58 and turbo. The turbo speed is represented by question marks. If the speed message is in reverse-video then the speed is locked.

If a RS-232 or Modem pak is installed then the RS-232/Modem status indicators are displayed following the CPU speed. The 7 lights correspond to RX, TX, DTR, RTS, CTS, DSR & CD. The 8th light is unused. The first set of lights, closest to the CPU speed, are for the RS-232 pak and the second set is for the Modem Pak.

The four boxes on the left represent the 4 hard drive access lights. Between drive lights 1 and 2 is the cylinder number the hard drive is currently accessing.

When the CPU is in single step mode the section of the status line following the speed is the MC6809 register display. The MC6809 registers PC AB X Y U S DP CC are displayed here.

The Status line can be turned off in the configuration screen.

Return to contents: 


Operation - The virtual floppy disk selection screens:

Since the emulator doesn't have actual floppy drives a way to remove, insert and create new virtual floppies from within the emulator is needed. The virtual disk selection screens are for that purpose.

To bring up the first of the selection screens push the F9 key. The emulator display screen will be replaced by the virtual drive status screen. This screen displays the 4 floppy drives and shows if a disk is inserted, what the virtual disk's name is and if the virtual disk is write protected.

Here is a table of the functions available once the drive status screen is displayed: 

Tab & arrow keys Change which drive is selected. The selected drive's drive number is in reverse video.
0 - 3 Selects the drive corresponding to the number pushed
Escape or F9 Return to the emulator.
Shift-F4 Power-Up reset the COCO and return to the emulator.
F10 Reset the COCO and return to the emulator.
Enter Insert or change the virtual floppy inserted in the currently selected virtual drive. This key will bring up the virtual disk selection screen. A virtual drive that has a virtual floppy inserted will have it's door closed and will display the virtual floppy's filename.
Insert Insert or change the virtual floppy inserted in the currently selected virtual drive. This will bring up a box where the user can enter the virtual disk file to be mounted. Enter a filename or path+filename with or without an extension. By default the file will be loaded from the current default drive path (shown when selecting virtual disks), with a default extension of .DSK.
Delete Remove the virtual floppy from the currently selected virtual drive (this function does not delete the virtual floppy file).
Home Toggle the write protect status of the virtual floppy in the currently selected virtual drive. If a virtual floppy is write protected then the virtual floppy's filename is displayed in reverse video.

If the user pushes [Enter] to insert a virtual floppy in a drive the drive status screen will be replaced by the floppy disk selection screen.
Here is a table of the functions available once the floppy disk selection screen is displayed: 

Arrow keys Change which filename is highlighted.
Enter, JV[1] or JV[3] If a virtual floppy filename is highlighted then that disk will be mounted and the drive status screen will return showing the new floppy mounted or an error message. 
If [Enter] is pushed the emulator will try to determine if the virtual floppy is in the emulator's native format or in JV1 format and open the file accordingly. 
If [1] is pushed the emulator will assume the virtual floppy is in JV1 format.
If [3] is pushed the emulator will assume the virtual floppy is in JV3 format. (pushing [3] is the only way to open a JV1 type virtual disk)

The JV3 format is used with the TRS-80 emulators and is provided for compatibility and the ability to use COCO programs to transfer files between TRS-80 and COCO disks.

If a sub directory is highlighted then that directory is opened and it's contents are displayed according to the current search file spec. (the [..] directory will backup one sub-directory
[C]reate Allows the user to create a new virtual floppy. After pushing [C] the user will be prompted for a filename. The file will be created in the currently displayed directory. The default file extension is .DSK but the user can override this. 
After entering a valid filename the user will be prompted for 2 more parameters.
 
  • [S]ingle or [D]ouble density? The default is double.

Note: if double is selected the floppy can actually be formatted either single or double density. If single is selected the floppy can only be formatted single density. This option is to save space only. 

  • [S]ingle or [D]ouble sided? The default is double.

Note: if double is selected the floppy can actually be formatted either single or double sided. If single is selected the floppy can only be formatted single sided. This option is to save space only.

Pushing [Enter] for the above prompts will accept the default. Pushing [Escape] at any of the above prompts will abort the creation process. 

After entering the above information, if the file doesn't exist, it will be created. Then that disk will be mounted and the drive status screen will return showing the new floppy mounted or an error message if the file was unable to be created. 
If the file does exist then the user will be prompted whether the user wishes to overwrite it. If the user answers yes the file will be created as above, all data currently on the virtual floppy will be lost. If you answer no then the floppy's creation is aborted.
[D]rive Allows the user to enter a new PC drive to select a virtual floppy from. After pushing [D] the users will be prompted to enter a new drive letter. Enter a letter A-Z or nothing to leave the drive unchanged.
[S]earch Allows the user to enter a new search file spec. The default file spec is [*.DSK]. After pushing [S] the user will be prompted to enter a new search file spec. Wildcards are allowed. Enter nothing to leave the search file spec unchanged.

 
Be careful not to select non-virtual floppy files to mount, doing so could cause the file selected to be corrupted.

Type JV3 virtual disk files must be mounted by pushing [3] when selecting. This type cannot be determined automatically.

The current path and file spec being displayed is shown at the top of the screen.

Virtual floppies cannot be deleted from within the emulator. The user must delete files from the MSDOS prompt or windows.

Return to contents:


Operation - The virtual cassette control screen:

The COCO emulator supports 1500 baud virtual cassette tapes. Support is at the hardware level so any program that reads or writes to cassette should be supported. The emulator does not use ROM traps to provide cassette support so all cassette routines will work. Because the virtual cassette works exactly like a real cassette it takes the same amount of time to CSAVE a file in the emulator as it does on a real COCO. The virtual tape drive, unlike a real one, will work without error 100% of the time.

To save PC disk space the emulator converts the analog data output to the cassette port to digital bits and then stores them to disk serially. Because the cassette signals are converted to digital form for saving the files are usually readable with a PC hex editor. The cassette CSAVE format saves a byte in 8 bits so as long as the first bit saved by the COCO is also the first bit written by the emulator the file will be byte aligned and therefore readable.

To bring up the cassette control screen push the F11 key. The emulator display screen will be replaced by the virtual cassette control screen. This screen displays a CCR-81 cassette recorder and shows if a tape is inserted, what the virtual tape's name is, the baud rate, the tape counter (current byte offset in virtual cassette file) and whether the cassette is stopped or in record/play mode.

Here is a table of the functions available once the cassette control screen is displayed: 

Escape or F11 Return to the emulator
Insert or Enter Insert or change the virtual cassette mounted in the tape drive. This will bring up a box where the user can enter the virtual cassette file to be mounted. Enter a filename or path+filename with or without an extension. By default the file will be created in the current default drive path (shown when selecting virtual disks), with a default extension of .CAS. If the file entered does not exist it will be created.
Delete or [E]ject Removes the virtual cassette file from the tape drive.
[R]ecord Puts the tape drive in record mode (for saving COCO data).
[P]lay Puts the tape drive in play mode (for loading COCO data).
[S]top Stops the tape drive. The user must stop the tape drive before they can change from play to record or vice versa.
[W]rite Write 10 bytes of blank tape. It's a good idea to put a little blank space between cassette files, it's also handy for aligning the next file to be saved to an even byte count. The write command is like pulling the remote plug out on a real COCO tape drive to record a bit of blank tape between files on a cassette. 
This function only works when the recorder is in record mode.
[F]orce motor on Toggle whether the cassette motor is always on or controlled by COCO software. Forcing the motor on is like pulling out the remote cable on a real cassette drive. (with the motor forced on the cassette will continue to play forever when in play mode)
Left arrow Rewind the cassette 10 bytes.
Right arrow Fast forward the cassette 10 bytes (you cannot advance past end of the virtual cassette file).
Up arrow Rewind the cassette 100 bytes.
Down arrow Fast forward the cassette 100 bytes (you cannot advance past end of the virtual cassette file).
Home Rewind the cassette to the beginning.
End Fast forward the cassette to the end (ideal for adding a new file to an existing virtual cassette).

A virtual cassette file works much like a real cassette tape. If you rewind a virtual cassette to the beginning and record a file, that file will overwrite any data already stored in that area. The data beyond where the cassette stopped however is not overwritten. If you wrote a file from 0-500 on the counter and another from 1000-1500 and then rewound the tape and wrote a new file from 0-800 the file from 1000-1500 would still be there. Unlike a real cassette however as you write beyond the end of an existing virtual cassette the file will automatically grow. A single virtual cassette could easily contain over a megabyte of files. A virtual cassette file will always expand to hold the data written to it, it will never shrink. The only way to reduce the size of a virtual cassette file that has become to big to manage is to delete the file from MSDOS.

Unlike a real tape drive the counter is absolutely accurate. The counter actually shows the position the next byte will be written to or read from within the virtual cassette file. To read a file written from 1000-??? you fast forward to 1000, the data will start exactly where it was written (wouldn't have this been nice with real tape drives).

Just like a real tape deck data will only be saved when a program turns on the tape drive motor. The emulator will turn on the motor when a program uses the COCO motor control bit so all cassette based programs should work. Since some programs don't turn off the tape and some programs aren't careful about modifying unused bits and also since cassette emulation adds lots of overhead to the emulator and it won't produce cassette sound while in record mode, you should always stop the tape drive when you finish saving or loading data (if you notice the tape counter running while playing a game, you forgot to stop the tape drive).

Unlike the real thing you can be running at any speed CPU speed when you save to tape. This way, if you save while operating at 3.58mhz a CSAVE or CLOAD will be 4 times faster.

During saving or loading of data a counter will be displayed on the status line. It displays how many bytes that have been read from or written to the cassette. If you start to load a program and the counter doesn't start then check the cassette control screen to be sure a cassette is loaded, in play mode and at the matching baud rate. You can start the tape drive after you give a load command (like CLOAD) and the program will start loading when you return to the emulator screen. If however you go to the cassette control screen (or do any emulator control functions) while a program is saving or loading data the data will be corrupt or you'll get a load error. The tape drive must be in record mode before you execute any cassette write I/O (just like the real thing).

Return to contents:


Operation - The Audio/Wave cassette control screen:

The COCO emulator supports the direct loading of COCO cassette tapes using the Line-Input on a compatible sound card and the saving and loading of cassette port sound to Windows compatible Wave files. The emulator can also load Wave files of program tapes made by Windows sound utilities. The emulator can record and load Wave files even in PC systems without compatible sound cards. Cassette sound files made by the emulator are 23000 samples/sec 8bit mono. A file created using Windows programs must have saved the Wave file at 23000 samples/sec 8bit mono also in order for it to be loaded by the emulator.

Files saved using the audio/wave recorder will be huge compared to those saved using the virtual recorder (over 1meg per minute). The audio/wave recorder can also record any COCO cassette port sound (unlike the virtual record), even music and game program sound effects. During the recording of cassette port sound the emulator will still play sound using the PC speaker if sound is enabled.

To bring up the cassette control screen push the Shift-F11 key. The emulator display screen will be replaced by the audio/wave cassette control screen. This screen displays a CCR-81 cassette recorder and shows if a tape is inserted, what the virtual tape's name is, the tape counter (current second offset in wave cassette file) and whether the cassette is stopped or in record/play mode. If no tape is inserted and a compatible sound card is available the words "SB Audio Input" will be displayed in the cassette tape area.

Here is a table of the functions available once the cassette control screen is displayed: 

Escape or F11 Return to the emulator
Insert or Enter Insert or change the virtual cassette mounted in the tape drive. This will bring up a box where the user can enter the Wave cassette file to be mounted. Enter a filename or path+filename with or without an extension. By default the file will be created in the current default drive path (shown when selecting virtual disks), with a default extension of .WAV. If the file entered does not exist it will be created.
Delete or [E]ject Removes the Wave cassette file from the tape drive.
[R]ecord Puts the tape drive in record mode (for saving COCO cassette port output to file).
[P]lay Puts the tape drive in play mode (for loading COCO data).

If no tape is loaded but the words "SB Audio Input" are displayed in the tape area, pushing play will allow input from a real cassette player connected to the Line-Input of the PC's sound card.

[S]top Stops the tape drive. The user must stop the tape drive before they can change from play to record or vice versa.
[F]orce motor on Toggle whether the cassette motor is always on or controlled by COCO software. Forcing the motor on is like pulling out the remote cable on a real cassette drive. (with the motor forced on the cassette will continue to play forever when in play or record mode)
Left arrow Rewind the cassette 1 seconds.
Right arrow Fast forward the cassette 1 seconds (you cannot advance past end of the Wave cassette file).
Up arrow Rewind the cassette 10 seconds.
Down arrow Fast forward the cassette 10 seconds (you cannot advance past end of the virtual cassette file).
Home Rewind the cassette to the beginning.
End Fast forward the cassette to the end (ideal for adding a new file to an existing Wave cassette).

A wave cassette file works much like a real cassette tape. If you rewind a wave cassette to the beginning and record a file, that file will overwrite any data already stored in that area. The data beyond where the cassette stopped however is not overwritten. If you wrote a file from 0-10 on the counter and another from 10-15 and then rewound the tape and wrote a new file from 0-8 the file from 10-15 would still be there. Unlike a real cassette however as you write beyond the end of an existing wave cassette the file will automatically grow. A single wave cassette could easily contain hours of cassette port sound. A wave cassette file will always expand to hold the data written to it, it will never shrink. The only way to reduce the size of a wave cassette file that has become to big to manage is to delete the file from MSDOS.

Unlike a real tape drive the counter is absolutely accurate. The counter actually shows the position the tape within the wave cassette file in seconds. To read a file written from 10-?? you fast forward to 10, the data will start exactly where it was written (wouldn't have this been nice with real tape drives).

Just like a real tape deck cassette port sound will only be saved when a program turns on the tape drive motor. The emulator will turn on the motor when a program uses the COCO motor control bit so all cassette based programs should work. Since some programs don't turn off the tape you should always stop the tape drive when you finish saving or loading data (if you notice the tape counter running while playing a game, you forgot to stop the tape drive). If you want to save music or game sound effects you will probably need to remove the remote plug to force the cassette recorder motor on.

Unlike the real thing you can be running at 1.79mhz or 3.58mhz speed when you load or save to tape (you cannot do this if you are loading directly from the SB Line-Input). This way, if you save while operating at 3.58mhz a CSAVE or CLOAD will be 4 times faster.

During saving or loading of data a counter will be displayed on the status line. It displays how many seconds that have been played from or recorded to the cassette. If you start to load a program and the counter doesn't start then check the cassette control screen to be sure a cassette is loaded and in play mode. You can start the tape drive after you give a load command (like CLOAD) and the program will start loading when you return to the emulator screen. If however you go to the cassette control screen (or do any emulator control functions) while a program is saving or loading data the data will be corrupt or you'll get a load error. The tape drive must be in record mode before you execute any cassette write I/O (just like the real thing).

It is also best to use a MONO recorder or only one channel of a stereo recorder.

Return to contents:


Operation - The Multi-Pak Interface screen:

The emulator has a built-in Multi-Pak Interface. The Multi-Pak allows up to 4 ROM images (cartridges) to be inserted and active using its select switch or COCO software. The emulator's Multi-Pak functions exactly like a real COCO's Multi-Pak.

The Multi-Pak also creates and maintains a special .CAR file for each ROM image loaded. The file contains the size, description and options available for each ROM image. If this file is write protected then changes made to a cartridge are temporary and will not be saved for use the next time the cartridge is inserted.

To bring up the configuration screen push the F4 key. The emulator display screen will be replaced by the Multi-Pak Interface screen. This screen displays a representation of a real Multi-Pak along with what cartridges are inserted, what hardware options are available in each loaded cartridge and which slot is active (may be overridden by software).

Here is a table of the functions available once the Multi-Pak Interface screen is displayed: 

Tab
Up/Down arrow keys
Change which slot is selected for modification. The selected slot number is in reverse video.

The list of installed cartridge options to the right of the slots will display the options enabled for the cartridge in the selected slot. These options along with the label color & description can be changed for the cartridge in the selected slot.

If the selected slot number's background is red then the inserted cartridge is write protected and the .CAR file fill not be updated with and changes made to the cartridge options.

Left/Right arrow keys Moves the cartridge selector switch. This switch selectes which cartridge is/was active when the computer was last reset (could have been changed with software).

If this switch is changed the new switch setting will take effect when the Multi-Pak Interface screen is exited. If a cartridge is inserted in that slot and its cartridge interrupt is enabled the cartridge will be booted.

Escape or F4 Return to the emulator.
Shift-F4 Power-Up reset the COCO and return to the emulator.
F10 Reset the COCO and return to the emulator.
Enter Insert or change the ROM image (cartridge) inserted in the currently selected Multi-Pak slot. This key will bring up the cartridge selection screen. Only files that have matching .CAR files will displayed (use the INSERT function to mount a ROM image the first time).
Insert Insert or change the ROM image (cartridge) inserted in the currently selected Multi-Pak slot. This will bring up a box where the user can enter the ROM image to be mounted. Enter a filename or path+filename with or without an extension. By default the file will be loaded from the current cartridge default path (shown when using the cartridge selection screen), with a default extension of ROM.

A .CAR file will also be loaded/created using the same filename with an extension of CAR.

Delete Removes the ROM image (cartridge) from the currently selected Multi-Pak slot.

Unless write protected the .CAR file that was loaded with the ROM image will be updated with the cartridge's current options.
F1/F2 Enter label description #1 or #2 for the cartridge in the currently selected slot.
F5/F6 Change the label color for the cartridge in the currently selected slot.
F7/F8 Change the label text color for the cartridge in the currently selected slot.
Cartridge [I]nt Toggles the cartridge interrupt enable for the currently selected slot. If enabled the inserted cartridge will auto-boot whenever it is inserted and active.
[F]loppy Disk Ctrl Toggles the Floppy Disk Controller interface. If enabled the inserted cartridge will contain a virtual FDC that will be enabled anytime that cartridge is inserted and active.
[O]rchestra-90 Synth Toggles the Orchestra-90 Music Synthesizer interface. If enabled the inserted cartridge will contain a virtual Orchestra-90 that will be enabled anytime that cartridge is inserted in any Multi-Pak slot, active or not.
[R]S-232 Program Pak Toggles the Deluxe RS-232 interface. If enabled the inserted cartridge will contain a virtual RS-232 interface that will be enabled anytime that cartridge is inserted in any Multi-Pak slot, active or not. There are also 3 additional options for this interface which are set by using the keys 1-3 to toggle the corresponding option.

RS-232 options:

  • [1] Serial Port
  • [2] NMI Interrupt
  • [3] FIRQ Interrupt
[M]odem Program Pak Toggles the Direct connect Modem interface. If enabled the inserted cartridge will contain a virtual Modem interface that will be enabled anytime that cartridge is inserted in any Multi-Pak slot, active or not. There are also 3 additional options for this interface which are set by using the keys 1-3 to toggle the corresponding option.

Modem options:

  • [1] Serial Port
  • [2] NMI Interrupt
  • [3] FIRQ Interrupt
Number keys 1-3 Toggles options specific to the currently enabled interface.
Home Toggles the .CAR file's write protect status. A ROM with a write protected .CAR file will show a RED select box. Write protecting the .CAR file allows temporary option changes and prevents accidental permanent changes to a cartridge's options.

If the user pushes [Enter] to insert a cartridge, the Multi-Pak Interface screen will be replaced by the cartridge selection screen. The display will show the directories in the current path plus any files matching the search file spec. and having a matching .CAR file. By default the first description line from the .CAR file will be displayed for each cartridge file found.

Here is a table of the functions available once the cartridge selection screen is displayed: 

Arrow keys Change which path or cartridge is highlighted.
Enter If a cartridge file is highlighted then that cartridge will be mounted and the Multi-Pak Interface screen will return showing the new cartridge mounted or an error message. 
If a sub directory is highlighted then that directory is opened and it's contents are displayed according to the current search file spec. (the [..] directory will backup one sub-directory
Tab Toggles the display between cartridge descriptions and the actual filenames.
[D]rive Allows the user to enter a new PC drive to select a cartridge from. After pushing [D] the users will be prompted to enter a new drive letter. Enter a letter A-Z or nothing to leave the drive unchanged.
[S]earch Allows the user to enter a new search file spec. The default file spec is [*.ROM]. After pushing [S] the user will be prompted to enter a new search file spec. Wildcards are allowed. Enter nothing to leave the search file spec unchanged.

Note:
Only ROM images with existing .CAR files will be displayed in the cartridge selection screen. To mount a ROM image for the first time use the INSERT key to mount the ROM.


Software can control which Multi-Pak slot is active. The Multi-Pak control port is at memory address $FF7F. Multi-Pak aware COCO software will be able to control the emulator's Multi-Pak just as if it were a real one.

Since changing or removing cartridges on a real COCO should only be done with the power OFF it is a good idea to use Shift-F4 to exit the Multi-Pak interface screen anytime you change what cartridges are inserted in the Multi-Pak. A currently executing program suddenly disappearing or being replaced by another program will likely lock up the COCO and require a reset anyway. Changing the select switch should also be followed by a reset.


The emulator can load ROM cartridges of up to 64k. Cartridges that are larger than 16k must be loaded into slot #1. Slots 2-4 will be used as needed to hold the large ROM. Each additional slot needed will show the same cartridge loaded as does slot #1.

These large ROMs are accessed by bank switching 16k at a time using memory addresses $FF40-$FF5F. Bits 0 & 1 of the value written to any of these addresses determines which of the, up to 4, 16k banks are readable at addresses $C000-$FEFF.

This is NOT a special feature of the emulator. These large ROM cartridges exist and the emulator is only emulating the hardware so these cartridges can be transported to the COCO emulator.

Check the technical DOCs for more information on .CAR files, the Multi-Pak control port and memory addresses $FF40-$FF5F.

Return to contents:


Operation - The configuration screen:

The emulator has many user selectable options. These options can be viewed and changed from the configuration screen. When the emulator is started for the first time and when a configuration file is specified on the command line for the first time, a .CFG file is created and initialized with default values. If no configuration file is specified at startup the default configuration [COCO.CFG is used.

To bring up the configuration screen push the F5 key. The emulator display screen will be replaced by the configuration screen. This screen displays all the user changeable configuration options.

Here is a table of the functions available once the configuration screen is displayed: 

Up & Down arrow keys Change the option that is highlighted.
Left & Right arrow keys Toggle the highlighted option through the possible options.
Home & End keys Highlight the first and last options respectively
Enter Enter a filename if the highlighted option requires a filename.
Escape Abort any changes made to options and return to the emulator.
F5 Save changes made to options and return to the emulator.

Here is a table of the available configuration options and their possible values: 

Sound Device
  • Disabled (default)
  • Recording enabled
    Setting this option enables the recording of Orchestra 85/90 music & cassette port sound to Wave files without enabling a sound card. A compatible sound card is not required to enable this option.
  • SoundBlaster Pro (also supports most compatible sound cards)
    Sound output is in Mono. Also enables Wave file & Orchestra 90 recording.
  • SoundBlaster 16/32
    Sound output is in Stereo. Also enables Wave File & Orchestra 90 recording.

Changing this option doesn't take effect until the next time you start the emulator.

Sound
  • Disabled (default)
  • PC Speaker
  • SoundBlaster
Orchestra-90
  • Disabled (default)
  • Direct (will play music directly using the current sound option)
  • Record Mono or Record Stereo
    • Will record music to a PC Wave file.
    • If a SoundBlaster card is enabled then the Wave file will be played back when recording is completed.

Push the F8 key to stop recording and begin playing file or to close the Wave file if no sound card is enabled..

Orchestra Record Filename Enter the filename that Orchestra 90 music recording should use.
Built-in Serial Port
  • Disabled (default)
  • LPT1
  • LPT2
  • LPT3
  • PC File
  • COM1
  • COM2
  • COM3
  • COM4

When a PC serial port is selected the COCO serial port I/O is bi-directional.

Due to added overhead required to handle serial communications, this setting should be disabled whenever serial communications aren't being used.

PC Printfile filename Enter the filename that print should be sent to when 'PC file' is selected for serial port.
LF after CR
  • Disabled (default)
  • Enabled

COCO printers automatically did LF's after receiving CR's, PC printer's don't. To prevent every line sent to a PC printer from printing over the previous line enable this function.

Note: When printing hi-res graphics (like Epson) this option must be disabled and the PC printer set to do LF's after CR's to produce accurate printouts. This function should also be disabled when using the serial port for computer to computer serial communications.

Baud
Word
Stop
Parity
These 4 values are used to setup the PC's serial port when using the COCO's built-in serial port to comunicate to another computer using the PC's serial ports. These settings will be used to configure the PC's serial port and to encode incoming serial data for the COCO.

These values are only used when a PC comunication port is selected for the built-in serial port. When using the built-in serial port as a printer port these settings are automatic.

Character Set The COCO emulator has 2 character sets:
  • Standard
  • Lowercase

Both sets have the COCO 2's lowercase and reverse video characters sets which are enabled when in COCO 2 emulation. The lowercase set also has lowercase characters instead of reverse video characters in the first 32 characters of the font.

Changing this option doesn't take effect until the next time you start the emulator.

Color Artifacting
  • Disabled (default)
  • Red/Blue
  • Blue/Red

The emulator can emulate the artifacting phenomeon where a color TV can produce color from the 256 x 192 B&W display. When enabled the colors black, white, blue & red will be produced dependent on the dot patterns displayed.

Keyboard Layout
  • PC (keys sent as labeled on the PC keyboard) (default)
  • COCO (keys sent according to their position relative to a real COCO keyboard)
Mouse Sensitivity This sets the sensitivity of the PC's mouse when using it to emulate a COCO joystick
  • Sensitivity 0-15
Arrow Sensitivity The sets the sensitivity and type of emulation when using the PC's arrow keys to emulate a COCO joystick
  • Switches
  • Sensitivity 1-15

When set to switches pushing an arrow key generates the extreme joystick value for that direction. Otherwise, the sensitivity sets how fast the joystick value is changed when an arrow key is pushed and held.

COCO Joystick 1
COCO Joystick 2
  • Disabled (default)
  • PC Mouse
  • PC Joystick 1
  • PC Joystick 2
  • Keyboard

The COCO has two joysticks. Each COCO joystick can be emulated by the same or different PC device. In most cases, emulation using the PC mouse works best.

When using keyboard, the 4 cursor pad arrow keys are the 4 directions of the joystick and the CTRL & ALT key are the fire buttons.

Due to added overhead required to read PC joystick values, the PC Joystick 1 & 2 settings should not be used unless a joystick is being used.

Computer Type The COCO types are:
  • COCO STD BASIC
  • COCO EXT BASIC (default)
  • COCO 2 STD BASIC
  • COCO 2 EXT BASIC

Changing from one computer type to another causes the emulator to do a Power-Up reset.

Computer Memory The memory options available in the Model 1 emulator are:
  • 4k memory
  • 16k memory
  • 32k memory
  • 64k memory (default)

Serveral combinations of computer type and memory are not valid and will cause a non-functional machine (like 4K, EXT BASIC). Also, if the STD BASIC & 32k options are selected the COCO will have the unused 8k of Extended BASIC ROM availabe for RAM.

Changing from one computer type to another causes the emulator to do a Power-Up reset.

Status Line
  • Disabled
  • Status Line (default)
Virtual HDx Filename Contains the virtual hard disk filename to be used when "HARD-x" is opened.

These filenames are used by virtual hard disk drivers.

Return to contents: 


Operation - Saving and loading snapshots :

The COCO emulator can save a snapshot of the COCO environment. This snapshot can be loaded later to restore the COCO environment to the previously saved state. This means that you can be running a COCO program, save a snapshot, exit the emulator and even shut down you PC. Then at a later time restart the emulator, load the snapshot and continue running the program exactly where you left off.

This function is great for games that don't have a save game feature (hardly any did in the COCO days). You can save a snapshot of the game you're playing then come back later to continue playing. You could also save the game at a point before a really difficult area then if you loose simply load the snapshot and try again.

To save a snapshot push F7.

To load a snapshot push shift-F7.

After pushing F7 or shift-F7 a box will appear asking for a filename. Enter the filename or path+filename with or without an extension. By default the file will be created in the current default drive path (shown when selecting virtual disks), with a default extension of .SNP. If the file entered exists it will be overwritten. Pushing ESCAPE will abort the operation.

WARNING: When loading snapshots be sure to do so with the same configuration and drives loaded in the emulator. The emulator does not keep track of what disks were loaded or what the emulator configuration was when it saved the snapshot. For example, DO NOT load a snapshot of a program that was doing disk I/O to a data disk in drive #1 when the emulator now has a different disk or no disk in drive #1. The results will very from a simple program error to all data on the disks in the drives being corrupted. This is a very powerful emulator function when used with care and dangerous when not.

Return to contents: 


Operation - Loading and executing .BIN files:

The emulator can load a .BIN or other COCO object file directly from a PC's directory. While it is better to use one of the file import utilities to copy a file from the PC directory to a COCO virtual disk this feature can be useful to quickly load a program for testing or other reason.

To load a .BIN file push shift-F7.

After pushing shift-F7 a box will appear asking for a snapshot filename (this is the same window used for loading snapshots). Now push the F1 key one time. The box should now be asking for a binary program to load. Push F1 again and the box should be asking for a program PAK to load (more about this option later). Pushing F1 one more time will return you to the snapshot question. Pushing F1 will toggle you through the three load options.

Now enter the filename or path+filename with or without an extension. By default the file will be loaded from the current default drive path (shown when selecting virtual disks), using a default extension of .BIN. Pushing ESCAPE will abort the operation.

WARNING: Loading an object file using this option may not always work. Many programs expect the proper DOS to be loaded and for memory and video option to be already configured. Generally .BIN files of cassette programs will load this way. This feature was added as a convince and should not be used as a replacement for importing files and saving them to virtual disk.

Return to contents: 


Operation - Loading and executing .PAK files:

The emulator can load other emulators program PAK files. A program PAK file should be of a program or cartridge. If the PAK load address is $C000 then the PAK file will be loaded into the Multi-Pak Interface Slot #1. Otherwise the file will be loaded into RAM.

To load a .PAK file push shift-F7.

After pushing shift-F7 a box will appear asking for a snapshot filename (this is the same window used for loading snapshots). Now push the F1 key two times. The box should now be asking for a program PAK to load. Pushing F1 one more time will return you to the snapshot question. Pushing F1 will toggle you through the three load options.

Now enter the filename or path+filename with or without an extension. By default the file will be loaded from the current default drive path (shown when selecting virtual disks), using a default extension of .PAK. Pushing ESCAPE will abort the operation.

WARNING: Loading other emulators PAK files can have unexpected results, especially if they are RAM memory dumps. In general this option should only be used to load cartridge program PAKs.

Return to contents: 


Operation - Shell to DOS:

The emulator has a shell to DOS feature that will suspend enulator operations and drop to a DOS prompt. This function allows the user to do miscellaneous DOS commands without having to exit the emulator. When the user has finished whatever DOS operations were needed the user can type EXIT and control is returned to the emulator.

To shell to DOS push shift-F5.

Due to the amount of memory the emulator requires very little is left over when shelling to DOS. The user can free up about 128k more memory for DOS operations by running the emulator with SoundBlaster DISABLED.

Return to contents: 


Operation - COCO Joystick emulation:

The emulator can emulate the COCO's 2 joysticks using 3 of the PC's input devices, mouse, joysticks & keyboard. The right & left COCO joysticks can be disabled or set to any of these devices. The 2 COCO joysticks are configured separately but can be configured to use the same device.

Using the mouse is the most convenient and works well for most games. Mouse movement translates to the the same movement of the COCO joysticks. The left mouse button responds as the joystick buttons.

The PC's joysticks require a large amount of overhead to use and should only be enabled when actually using them. Make sure the joystick is centered when starting the emulator or when exiting the configuration screen since a recalibration is done at these times and will insure the COCO joystick will be centered (a better joystick calibration routine may be added in the future).

The keyboard emulation of the COCO joysticks allows the 4 arrow keys to be used to change joystick values and CTRL & ALT are used as the buttons.

The sensitivity determines how fast the joystick value changes while the arrow key is pushed. Valid values are 1-15 with 1 being the most sensitive.

Sensitivity can also be set to 'switches'. This setting allows the COCO joystick to act like a digital joystick. When no arrows are pushed the joystick is centered. When an arrow is pushed it's like pushing the joystick in that extreme direction. This setting is like having an 8 position joystick and is perfect for games not requiring analog joystick values (I manufactured a device in the early 80's for the real COCO that did this. It was called ColorStick).

Since the keys used for joystick input are also used for keyboard input a way to switch between modes is needed. The Num-Lock key serves this need. When keyboard joysticks are enabled pushing Num-Lock toggles the joystick keys between joystick & keyboard input. The default setting at power-up and after a reset is for keyboard input.

Return to contents: 


Operation - Making Cassette tapes for loading into a real Color Computer

The COCO emulator can make real cassette tapes for loading into a real COCO. There are two methods to create compatible tapes.

Method one requires a compatible SoundBlaster card, a cassette recorder (preferably a mono recorder) and a cable to go from the line-out of the PC's sound card to the AUX-in or line-in of the recorder.

Once the recorder is correctly connected follow the following steps:

Following the above steps should result in a recording of the SB sound produced by the COCO cassette write function. This recording can now be loaded into a real COCO.

Method two requires a Windows compatible sound card, a cassette recorder (preferably a mono recorder) and a cable to go from the line-out of the PC's sound card to the AUX-in or line-in of the recorder.

Once the recorder is correctly connected follow the following steps:

Following the above steps should result in a recording of the SB sound produced by the COCO cassette write function. This recording can now be loaded into a real COCO.

For best results use the same recorder to record the tapes that will be used to load them into the COCO.

Return to contents: 


Operation - Loading Color Computer Cassette tapes into the emulator

The COCO emulator can load cassette tapes made by a real COCO. There are two methods to load tapes.

Method one requires a compatible SoundBlaster card, a cassette recorder (preferably a mono recorder) and a cable to go from the speaker-out of the recorder to the line-in of the PC's sound card.

Once the recorder is correctly connected follow the following steps:

Following the above steps should result in a cassette program being loaded by the emulator.

Method two requires a Windows compatible sound card, sound software capable of creating a 23kps Wave file, a cassette recorder (preferably a mono recorder) and a cable to go from the speaker-out of the recorder to the line-in of the PC's sound card.

Once the recorder is correctly connected follow the following steps:

Following the above steps should result in a cassette program being loaded by the emulator.

Return to contents: 


Operation - Color Computer serial ports

The COCO emulator can support 3 simultaneous serial devices:

The built in serial/printer port is enabled and configured in the Configuration screen while the program Paks are installed and configured in the Multi-Pak Interface screen. All 3 devices can be enabled independently with the only restriction being that no two devices use the same PC device.

The built-in serial device I/O and be sent to a PC printer port, a PC file or a PC serial port. When the I/O is sent to a PC serial port the I/O is bidirectional.

The RS-232 & Modem Pak I/O can be sent to any of the 4 standard PC serial ports. The COCO serial device's interrupts are also supported.

The Modem Pak is not actually a direct connect modem but another serial device. It can support baud rates from 50-19,200 just like the RS-232 Pak.

The serial devices require constant polling which adds a lot of overhead to the emulator. For maximum emulator Turbo speed the serial devices should be disabled except when serial I/O is actually being used.

Return to contents:


Credits:

Several people have assisted me in writing this emulator either directly or in-directly and I want to give credit here.

Return to contents: