The CoCoVGA Character Editor


CCVEDIT enables a user to create their own character or tile set and save it to disk for easy use within BASIC. Character sets may also be restored from disk for further edits. All characters are 2 color and 8x12 pixels in size and up to 256 may be specified in each set.


  • CoCo 1 or 2
  • 64k RAM
  • Disk Extended Color BASIC (or ECB with Drivewire or the CoCoSDC)
  • CoCoVGA

Getting Started

  1. Because of the features available in CCVEDIT and the amount of data it must access, it often requires a cold boot prior to use. (That means power off and back on your Color Computer.)
  2. CCVEDIT can access only drives 0 and 1, so ensure that any character sets to be loaded or a DECB formatted disk or image for saving are available in one of these drives. Character sets to be loaded are expected to have the extension .CHR.
  4. EXEC
  5. When prompted at the title screen, press any key.

CCVEDIT Screen Regions

  1. <R>epository: Displays 48 characters of the full 256 in the currently loaded. Use the arrow keys to scroll through and select a character to edit in the Editor or copy into the Pad. This is the default mode that CCVEDIT enters upon startup.
  2. <E>ditor: Displays and enables modification of the currently selected character.
  3. <P>ad: A scratch pad region for placing tiles next to each other to better visualize larger-than-1-character graphics. This region does not get saved with the character set.

General Navigation

In each of the regions, the arrow keys may be used to move the cursor.

To exit CCVEDIT from any active region, including leaving the program and returning to BASIC, use the <BREAK> key.

The <R>epository

  • <D>irectory: Display a directory listing of either drive 0 or drive 1. To abort display of a directory listing, use the <BREAK> key.
  • <L>oad: Load a .CHR file from either drive. Note that the proper .CHR format is the standard DECB binary file format including the 5 byte header and 5 byte footer. The load address in the header is ignored when CCVEDIT loads it. To abort the loading process, use the <BREAK> key.
  • <S>ave: Save a .CHR file to either drive. Note that the .CHR format is the standard DECB binary file format including the 5 byte header and 5 byte footer, so the user will be prompted for not only the filename and drive, but also the expected future load address. To abort the saving process, use the <BREAK> key.
  • <C>opy: Copy a character into the character buffer. Use in conjunction with the <V>:Paste operation.
  • <V>:Paste: Paste a previously copied character from the character buffer into the currently selected character cell. Use in conjunction with the <C>opy operation.
  • <W>ipe: Erase the entire repository, clearing all pixels of all characters.

The <E>ditor

  • <S>et/<ENTER>: Set the pixel at the current cursor location to a 1.
  • <C>lear/<CLEAR>: Clear the pixel at the current cursor location to a 0.
  • <T>oggle/<SPACE BAR>: Toggle the state of the pixel at the current cursor location. If the pixel was a 1, change it to a 0 and vice versa.
  • <I>nvert: Replace all pixels that are currently 1 with 0 and vice versa.
  • <W>ipe: Erase the character, clearing all pixels of this character.
  • <G>rid: Toggle the grid between visible and hidden to help in pixel positioning or to provide a better view of the character, respectively.

The Scratch <P>ad

  • <S>tamp: Set the current cursor location to the currently selected character.

About the .CHR file format

The .CHR file format consists of 256 x 12 bytes of data (3072 bytes) plus the standard DECB binary file header and footer, each 5 bytes for a grand total of 3082 bytes. Creating the file in this format makes it straightforward for BASIC to automatically place it in memory such that it can be uploaded to CoCoVGA FPGA character RAM, since the header contains the load address to LOADM. A reasonable location for memory placement might be $E00, especially if only a single character set is to be used for the application.