Decoding Convergent Technologies Fonts
Understanding the fonts used in the Burroughs B20 series of machines. Also known as the Convergent Technologies AWS, IWS or NGEN.
The AWS's video system is only capable of disaplying text and line drawing characters with no support for bitmap graphics. In this blog post I am going to look into how Convergent Technologies implemented the AWS's video.
Font ROMs: An overview
At its simplest a font ROMs accepts two inputs via its address lines: a character code (ASCII) and character row number (pixel row number). The output from the ROM is one row of pixels the width of the character, 0 and 1 determining whether or not the pixel should be enabled.
For example, take the 2732, a generic ROM chip, with 12 address lines and 8 output lines. If we use ASCII for our character code we will need to use address 7 bit to lookup a character.
Next we need to decide how big shoud our character bitmap shoud be, one of our dimensions is all ready defind by the ROM chip. Effectively the maximum width of any character is fixed at 8 pixels, the output of the ROM. We have 5 bits remaining to work with, if we used all 5 bits we woud have characters 8x32, which is much too tall. So instead if only 4 bits are used we get a much more reasonable 8x16 character bitmaps.
So far 11 of 12 address bit have been used. The remaining bit coud be left unused giving use 128 (2^7) characters with a bitmap size of 8x16. However that woud effectively waste half of the ROM, instead wel'll designate the last bit as “Font Select” bit, this in essence splits the ROM in half. This allows us to have two separate fonts each with 128 character.
Characters can be read from the ROM using the address FCCCCCCCRRRR where "F" selects the font (upper/lower), “CCCCCCC” is the character code (ASCII) and “RRRR”is the 16 character rows, ranging from 0000 to 1111.
Example
For example 0 1001000 0010 would give us the third row (0010) of the letter H (1001000) from the top most font.
AWS Font and Video System
The AWS is capable of 256 unique characters with a size of 9 x 11 pixels and a screen size of 80 columns and 28 lines. Additionally the AWS has four hardware implemented features; bright characters, character underlining, line drawing characters and a half-pixel-shift.
At the heart of the AWS’s video system sits the Intel 8275 CRT Controller, together with a character ROM and some additional hardware trickery it's responsible for generating the AWS’s video signals that get sent to the built-in CRT.
AWS Font ROM
Accessing the AWS font ROM is no different to a typical font but to correctly decode the AWS font ROM you first must understand how the AWS video system differs from a typical Intel 8275 CRT Controller implementation.
The AWS has two methods for generating characters, normal mode and line drawing mode. A typical Intel 8275 CRT Controller implementation has only one method which simply involves reading one pixel row of a single character at a time and shifting it out with a register to the display.
Normal Mode
However the AWS does things a little differently, in normal mode a character is made up of 11 rows of 9 pixels. Of those 9 pixels the 7 center most come from the ROM and the 2 outermost are left blank. The remaining last bit, bit 8, of the ROM is used to indicate if there should be a half-pixel-shift.
This half-pixel-shift moves all the pixels on the current character row by half a pixel when shifting data out to the CRT from the parallel-in/serial-out shift register. You have to remember that the characters are being drawn on a CRT, it has no understanding of pixels, either the beam is on or the beam is off.
Line Drawing Mode
The line drawing mode of the AWS is a little more complicated. In normal mode only the 7 center most pixels can be controlled by the ROM, this would result in gaps between any line characters. To make matters worse there are only 7 pixels available from the ROM to make up a cell with a width of 9 pixels. The solution, the AWS uses some of the 7 pixels more than once in some of the rows.
This solution is does solve the problem of only having 7 of the 9 bits required to create a line drawing character. However it does have the limitation that only some shapes are possible to make and complicates the design of new characters.
IWS and NGEN Fonts
Unlike the AWS the IWS and NGEN use memory mapped fonts, fonts that are keeped in a specific memory location. The system would be able to change font at any time simply by copping a font file to memory. Both the IWS and NGEN are capable of displaying 256 characters. The IWS has 10 x 15 characters and the NGEN has 9 x 12 characters.
Font Format
The format used by the IWS and NGEN is more or less the same. A .font file contains 256 characters, these characters are encoded as simple bitmaps of a size of 16x16 (32 bytes). These bitmaps are simply stored sequentially. The IWS and NGEN read from the appropriate address and crop the bitmap to the appropriate size.
At the end of the font there may be a Font Identification Segment with a length of 8 bits. It contains meta-data information describing what system a font is for, ect. This Font Identification Segment is not necessary and was only added in later versions of fonts and can be ignored.
Font Viewer
This is a tool I made for viewing fonts for the Burroughs B20 series of machines. Also known as the Convergent Technologies AWS, IWS or NGEN. You can find more information and example fonts on the Githup page.
References
Bitsavers.org - Convergent Technologies Documentation