AOH :: DATAPUMP.TXT
docs for datapump.gif
|
Path: ousrvr3.oulu.fi!news.csc.fi!news.eunet.fi!EU.net!newsfeed.internetmci.com!info.ucla.edu!ihnp4.ucsd.edu!sdcc12.ucsd.edu!cs!galvarez
From: galvarez@cs.ucsd.edu (Guillermo Alvarez)
Newsgroups: comp.sys.cbm
Subject: datapump.doc
Date: 10 Jan 1996 19:42:51 GMT
Organization: CSE Dept., U.C. San Diego
Lines: 164
Distribution: world
Message-ID: <4d14rr$lgs@sdcc12.ucsd.edu>
NNTP-Posting-Host: beowulf.ucsd.edu
there seem to be problems with the .zip, so I'm reposting...
----------------------------------------------------------------------------
"DATAPUMP" THE 6551 ACIA CARD
(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 inplace 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
transceive 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.
The entire AOH site is optimized to look best in Firefox® 3 on a widescreen monitor (1440x900 or better).
Site design & layout copyright © 1986- AOH
We do not send spam. If you have received spam bearing an artofhacking.com email address, please forward it with full headers to abuse@artofhacking.com.