Stand-alone font editor for VDC chip (C128) and VDC-II core (RC2014).

2c8e362 Fix the load-file bug.

a month ago

829c116 Save file bug fixed

a month ago

#VDC(-II) Font Editor

The contents of this README.md file is preliminary.


X> fontedit [font-file]


The VDC chip and VDC-II cores (hereafter referred to simply as "the VDC chip") support a bitmapped display mode as well as a character-cell display mode. To display characters when in character-cell mode, you must supply the VDC chip with font information.

Defining these fonts by hand can be laborious and error-prone, as the VDC chip (VDC-II core) supports character sets with 512 (256 or 512, resp.) characters. This is double what most other character-cell devices support. Moreover, each character typically consists of either 16 or 32 bytes of data, depending on the currently configured vertical screen resolution settings. The amount of effort encoding 512x32=16384 bytes of data can become prohibitive.

#Exiting the Editor

Pressing the ESC key (or CTRL-] on the Commodore 128) at any time will exit the application.

#Selecting Glyphs to Edit

Press the + or = key to advance to the next character (current character plus one). Press the - key to move to the previous character (current character minus one). To jump to a specific glyph by number, press g (go to a specific glyph).

#Cursor Movement

The cursor can be moved with W, A, S, and D. The I, J, K, L keys can be used as well. The highlighted pixel can be toggled with the spacebar.

#Loading and Saving Files

The current font can be saved by pressing Shift-S. This will bring up a file-save dialog box which will let you either overwrite the currently selected font file (if any) or select a new filename to save to. An existing font can replace the current working font with Shift-L.


  • font-file. If not provided, an empty font is assumed. Otherwise, the specified font file is loaded into the editor for processing.


The font-file is a raw memory dump of what would appear in the VDC chip's video memory. There are no headers to indicate specific format information. It is assumed that the software reading in the font file knows exactly how to process this information.

For displays with a text height of 16 pixels or less, the file contains character data in the following format:

typedef uint8_t char_tile_t[16];

with char_tile_t[0] containing graphics data for the top-most row of pixels in a character cell. For displays with text heights greater than 16 pixels, each tile is described as follows:

typedef uint8_t char_tile_t[32];

For MOS 8563 and 8568 VDC chips, you are restricted to 512 characters in the font.

struct font_file {
    char_tile_t tiles[512];

The VDC-II core supports all the display modes that the MOS 856x VDC chips do; in addition, it also supports some display modes which prevents access to the upper-half of the character map, thus restricting the font to only 256 characters. Thus, for VDC-II applications, a font file might only have 256 tiles instead of 512.

struct font_file {
    char_tile_t tiles[256];