Personal Computer News


Commodore 64 Epson Printer Driver

 
Published in Personal Computer News #091

Adapt your Commodore 64 to run with an Epson printer thanks to Simon Taylor.

The Epson Connection

Adapt your Commodore 64 to run with an Epson printer thanks to Simon Taylor

Not many people want to use the Commodore printers on their Commodore 64, but are forced to by the lack of a Centronics or RS232 standard interface on the machine. This article describes the user of an Epson or similar printer with a Commodore 64 by using the user port as a Centronics interface.

When using an Epson standard printer, all of the program control codes such as clear screen or cursor controls are printed as if the Epson was a CBM 1515 or one of the other Commodore printers.

The normal allows the use of the normal CBM printer syntax, i.e.

   OPEN 4,4:CMD 4:LIST

to list a problem, and

   PRINT#4:CLOSE 4

when the program has listed.

All output is in lower case, and unlike other Centronics interfaces for the Commodore 64, graphics characters such as the reverse heart symbol for clear screen are supported. The hash sign (shifted 3) is depicted as a pound sign on UK printers, but the Epson user manual will show you how to change the printer to print US ASCII.

Connection Details

You will need a connector for the user port and one for the Centronics end. The connections are as follows:

User Port Signal Centronics
A Gnd 16
B Acknowledge 10
C Data 0 2
D Data 1 3
E Data 2 4
F Data 3 5
H Data 4 6
J Data 5 7
K Data 6 8
L Data 7 9
M Strobe 1

Some careful soldering is needed on the Centronics connector, but if you ask your lcal computer shop nicely, they may even have a cable of this configuration. Even if they don't you should be able to get the bits.

Entering The Program

There are two methods for entering the program into your Commodore 64- with assembler utilities if you have a disk (I use the Commodore development pacakge) or with the Basic loader listed here. You will need to use the Basic loader if you do not have a disk system.

The assembler program is in several parts including a one-time copier to make a working copy of the program (more on this later), the lines of Basic used in the fina program, an up-copier, the interface itself and the data tables used by the interface.

If you are using the assembler, enter the program in the normal manner using the text editor or something like Easyscript and assemble the program.

Then, using the low-loader, load the program into the $C000 memory area. Call the one-time loader by SYS 49152, this copies the whole program into pages $08 to $0B. The program can be saved onto disk by using the following:

   POKE 45,255:POKE 46,11:SAVE "FILENAME",8

The pokes set the Basic text pointers to make the computer able to save the whole program as if it were a normal Basic program. When you wish to use the loader simply load this file and run it. The program first coppies the interface into its working area and then deletes itself.

Those wishing to use the Basic loader or using a cassette only, type in the Basic loader, save it for future use, and simply run it.

If you have made any typing errors in the DATA statements the program should let us know.

Non-Standard Use Of Printer

Not all CHR$ codes will be printed. Allowable codes are:

5, 10, 13, 15, 17, - 20, 27 - 95, 133 - 140, 144 - 160

Codes 5, 7 - 20, 28 - 31, 129, 133 - 140 and 144 - 159 are not true printable codes as these are the ASCII values of the graphics characters. If an Escape sequence uses either these codes or non-printable codes then something like Program 1 will need to be used. The example shown is to print high-resolution graphics which may send out values to the printer such as 0, 1, 128.

Simon Taylor