Copy Link
Add to Bookmark
Report

"DATAPUMP" THE 6551 ACIA CARD

DrWatson's profile picture
Published in 
Commodore64
 · 24 Nov 2022

(C)opyright Perry M. Grodzinski, 1991


Note: You are free to give away these documents but not to sell! SWIFTLINK is a Trademark of CMD (Creative Micro Designs).

Although this project is very simple to construct, some electronic experience would be beneficial. The author takes no responsibility for this modification as this project is to be done at the risk of the reader.

With the price of high speed modems quickly falling, home computer users can now have 9600 bits per second modems for the price that 300 BPS once cost.

Unfortunately, anything above 2400 BPS for the c64 is a problem, it just can't keep up. Most of the serial to parallel and other bit handling is done from the CIA 6526 chip and intensive code. Other Commodore's of the past like the SuperPET, B series, and +4, all used another means to achieve the serial conversion. By using an IC known as a UART (Universal Asynchronous Receiver Transmitter), These machines were able to handle a much higher bit rate than what can be achieved with a C64. The UART used is known as the R6551 ACIA (Asynchronous Communications Interface Adapter). It can also be noted that this is also the UART used in the CMD SWIFTLINKTM. The design presented here allows the C64 to communicate at speeds of up to 38,400 BPS. Although I have not tested at the higher end speeds, I do use this design to communicate with my modem at 19,200 BPS without any problems.

Purchasing a SWIFTLINK from a Canadian supplier was a tad costly for me and was not going to challenge me as an electronic project so I decided to try to build a card around the 6551. Thus the DATAPUMP! After receiving the 6551 and specification sheets, I was very pleasantly surprised to see that this was going to be a breeze. It was as though the 6551 was built for interfacing to the C64. No fancy interfacing was required at all. All that had to be done was Hook It UP! Looking further into the spec sheets I found that the maximum speed with the recommended crystal was 19,200 bits per second. Knowing that terminal programs like Fritzterm, and Novaterm had maximum speed settings of 38,400 BPS for use with Swiftlink, it quickly hit me that CMD was doubling the speed.

I quickly looked through the parts catalog and found there to be a crystal of a standard speed exactly double of the frequency on the spec sheet, so I ordered it. After getting my card built I found that indeed a double speed crystal was what was used in the design of the Swiftlink. By the way, for the record let me mention here and now, that my design, even though it may appear to be in some ways, is not a Swiftlink clone. That is to say I had never even seen what the case of one looked like, let alone the insides.

Actually at the date of this writing, I still haven't seen a Swiftlink! Now with the legality questions out of the way lets go build a DATAPUMP!

The heart and soul of the DATAPUMP is of course the 6551. I used one manufactured by Rockwell. Again interfacing the 6551 to the C64 is very simple.

The 6551 pinout is as follows:

Pin#  Label   Function                Pin#   Label   Function 
---- ----- -------- ---- ----- --------
1) GND Ground 28) R/W Read/Write
2) CS0 Chip Select High 27) Ph2 Phase 2 clock
3) /CS1 Chip Select Low 26) /IRQ Interrupt Request
4) /RES Reset 25) DB7 Data Bus 7
5) RxC Receive Clock 24) DB6 Data Bus 6
6) XTL1 Crystal leg 23) DB5 Data Bus 5
7) XTL2 Crystal leg 22) DB4 Data Bus 4
8) /RTS Request To Send 21) DB3 Data Bus 3
9) /CTS Clear To Send 20) DB2 Data Bus 2
10) TxD Transmit Data 19) DB1 Data Bus 1
11) /DTR Data Terminal Ready 18) DB0 Data Bus 0
12) RxD Receive Data 17) /DSR Data Set Ready
13) RS0 Register Select Bit 0 16) /DCD Data Carrier Detect
14) RS1 Register Select Bit 1 15) Vcc +5 Volt

I'll further explain some of these pins and their functions. To select the chip (to read/write to it) CS0 must be high and CS1 must be low. So we'll use I/O1 to select the chip as it is active low. We tie CS0 permanently high and toggle the chip by changing I/O1. I/O1 goes low whenever a read or write to $DExx takes place. Note that you can use I/O2 here and map the 6551 to $DFxx if you wish, but be aware that this will put the 6551 in conflict with a REU. /RES could be tied to the/reset signal coming from the C64, I chose not to do this for my purpose as I can do a hard reset from my C64, do whatever such as load a different communications package and be back without resetting my 6551 which would cause my modem to disconnect.

I leave this up to you but make sure this line if pulled up via R1 even if you connect your 64 /res here. A0 and A1 connected to RS0 and RS1 allow the registers of the 6551 to be selected from $DE00 through to $DE03. R2 through R4 must be in place to cause the conditions to be true on CTS, DCD, and DSR, when no modem is connected to the the 6551. If these states are not true the 6551 can generate interrupts that if not properly handled with software can cause the C64 to hang rudely. Pins 10,11,12,15,16,17 and gnd, all make up the RS232C serial output. To follow the RS232C voltage standards I used the common 1488 RS232 driver and the 1489 receiver.

The only hassle is with the fact that the 1488 requires two 9 - 15 volt power supplies. One supply ties its negative to ground and positive to pin 14 of the 1488. The other supply has its positive side tied to ground and its negative side connected to pin 1 of the 1488. To acquire the two 12 volt supplies, I used a +5 volt to +/- 12 volt dc to dc converter made by a firm called Astec. I removed this converter from an old junk board that was a serial card for a Radio Shack TRS-80 Model 1 micro.

If you have problems finding such a part, there are many alternatives to achieving these voltages. You could steal the 9v ac supply off of the user port and through a network of diodes and capacitors create two 9v dc supplies. Another would be to use an external center tap 24 volt transformer and create two 12 volt dc supplies.

To get by you could also simply use two 9 volt batteries. The reason I chose the converter was that I could then build the entire DATAPUMP, power and all on one card and use the 5v coming from the C64. C1 through to C7 and L1 and L2 are simply used for filtering on the converter.

Construction is very easy and no previous training in rocket science is necessary. however basic knowledge in electronics and soldering would be an asset. The entire project is built on a single card plugged into the expansion port of the C64. I used a Radio Shack part 276-192. It is a 72-position plug-in board with .100" contact centers. US friends should check the RS numbers as I am unsure if Radio Shack uses the same part numbers in the US as they do in Canada.

The card edge must be carefully cut down of course to match the 44 pin expansion port female on the back of the C64. Once this is done you now have a large 4.5" X 5.7" card to add more than the DATAPUMP if you wish. On my card, I have the DATAPUMP project, a couple of eproms, and another female 44 pin for my REU, and a few other goodies. I used sockets on all the IC's except for the DC-DC converter. On my external cards I always use single core copper telephone wire for circuit trace connections, and never have problems with noise.

I hope you enjoy this project as much as i did. I know you'll love the the ability to really cruise at 19,200 BPS. To date I have found few terminal programs that could really make the card hum. Terminal 1 is one terminal package that works very well. Fritzterm also flys along and keeps the C64 right up to snuff with the 6551. Novaterm 9.3 also supports the 6551 but becomes undependable at speeds higher than 2400. I mentioned this to the author so maybe we'll see this in his next release. Although this interface was designed for the C64 It could easily be adapted to the 128 as well. Of course, from what I understand, on the 128, a 6551 is not required unless the user wishes to transceiver at speeds higher than 9600 BPS.

If you have any questions comments or suggestions, please contact me at:

Perry Grodzinski
30 Fyfe Street
Regina, Sask. Canada
S4X-1J8


I also hang out on the CBM Echo and can be reached there.
GOD BLESS !

Translators note

The original DATAPUMP instructions were in geoWrite (this document) and geoPaint (the circuit itself). This document has been translated into straight ASCII, and the circuit is now in DATAPUMP.MAC, a MacPaint file, which can be printed out using almost any MacPaint to 64 utility.

DATAPUMP.MAC

DATAPUMP.MAC
Pin it
DATAPUMP.MAC
← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT