Following the specification of the range of characters to be defined in this command is one number (al) that specifies the width of the character and whether it uses the top eight pins or the bottom eight pins.

The last part of the character definition is the actual data that defines the dot patterns for each column of each character. Since a character can use up to eleven columns, you must supply eleven data numbers for each character even if some of the columns are blank.

An example character definition program should make the process clear:

100 LPRINT CHR$(27);"x0";

110LPRINT CHR$(27);"&";CHR$(0);

120LPRINT "@@";

130LPRINT CHR$(l36);

140FOR I = 1 to 11

150READ A: LPRINT CHR$(A);

160NEXT I

170LPRINT "@ @ @ @ @"

180LPRINT CHR$(27);"%l";CHR$(1);

190LPRINT "@ @ @ @ @"

200LPRINT CHR$(27);"%";CHR$(0);

210LPRINT "@ @ @ @ @"

220END

230DATA 32,80,168,84,42,84,168,80,32,0,0

In line 100, the ESC x 0 command selects draft style printing. The actual character definition starts in line 110. The two at signs (@) in line 120 are nl and n2, the range of characters being defined (in this case, a range of one). Line 130 contains a1.

The information about the character design (which is contained in the data statements at the end of the program) is sent to the printer in the loop between lines 140 and 160.

This example program defines a heart and places it in the area of RAM reserved for ASCII code 64, which corresponds to the at sign in the characters in the ROM. The next part of the program (lines

170-210) prints out a three-line sample. The first and third lines contain at signs; the second line contains the heart that was defined.

Graphics and User-defined Characters

5 - 1 5