Tämä asiakirja on saatavilla myös suomeksi. Dieses Dokument ist auch auf Deutsch erhältlich.
The C2N232 is a small RS-232 interface that can be plugged to the cassette port of an 8-bit Commodore computer:
C2N232 is composed of two parts:
232. The C2N is the original model name of the Commodore tape
deck, also known as the datassette. The number 232 refers to RS-232, the dominating
standard for asynchronous serial communication.
The device can be connected to all Commodore 8-bit computers that are equipped with a cassette port. The Commodore 264 series requires an adapter, as the connector is different.
The device can also be used with other 8-bit computers. The driver software supports the Tangerine Oric-1 tape format.
The RS-232 connector is a female 9-pin D-sub connector, designed to match the IBM PC/AT style serial connector.
Normally, an extension cable is connected to the RS-232 end of the C2N232.
Three wires are strictly needed: pins 5 (ground), 2 (transmitted data)
and 3 (received data). On a 25-pin connector, these signals can be
found on the pins 7, 3, and 2, respectively. The connector on the
C2N232 is wired as a DCE, that is, a
null modem cable must not be
The following procedures assume that you have a Commodore 64.
LOADand press RETURN.
PRESS PLAY ON TAPE.
big computer, start the transfer as follows. You may want to adjust the file name, the name of the serial device and the computer model.
c2nload -c serial.device -m 64 file.prg
c2nload -c com1 -m 64 file.prg
c2nload -c /dev/ttyS0 -m 64 file.prg
FOUNDmessage flashes on the screen, so that the computer will not miss the rest of the program, as the C2N232 ignores the motor control signal. Do not press the space bar, or the computer may skip the rest and look for the next program header.
If the program is started with a
SYS command, you can
SYS address with the
cbmlinkserver as described in previous section, e.g.,
c2nload -c /dev/ttyS0 -m 64 -j 52224 cbmprg/c2n232/c64/plain.prg.
cbmlinkcan be invoked on the
cbmlink -c c2n232 serial.device
cbmlink -c c2n232 com1
cbmlink -c c2n232 /dev/ttyS0
cbmlinkserver to disk or to create a Commodore 128 boot sector to avoid using the slow tape protocol in the future. Note that in the current version of
-fwoptions do not translate character sets nor remove directory name prefixes or file name suffixes. You may want to rename the file to upper case first, for example,
C64 SYS52224. The Commodore 64 server program can be copied to disk as follows.
cbmlink -c c2n232 serial.device -fw cbmprg/c64/plain.prg
cbmlink -c c2n232 com1 -fw cbmprg\c64\plain.prg
cbmlink -c c2n232 /dev/ttyS0 -fw cbmprg/c64/plain.prg
Yes, but the tape protocol is only needed for loading the
c2nload fastloader, for a few seconds. The transfer
speed of actual programs is limited by the RS-232 to 38,400 bits or
approximately 3,840 bytes per second.
.tapfiles) be loaded?
faucet program works for some files.
Unfortunately, with the current firmware, the C2N232 can only be controlled via the RS-232 interface. In the future, new firmware and sample code will be released that allow the C2N232 to accept commands from the Commodore side.
Are you sure that the hardware FIFO of the serial interface has been enabled in the Device Manager?
You can find the Device Manager via the
There, double click on the icon
System in order to open the
System Properties. Finally, click on the tab
Manager. In Windows 2000, there is no such tab in the window.
Instead, you must select the tab
Hardware and click on the
A list of device drivers appears. Under
Ports (COM &
LPT), double click on the serial device where the C2N232 is
Communications Port (COMx) Properties
appears. Click on the tab
Port Settings, select
Hardware flow control and click on the button
to open the window
Advanced Settings for COMx. Make
sure that the check box
Use FIFO buffers is activated.
All other settings should be configured properly by the C2N232
software. Should the software still fail, click the button
Defaults in the window
Advanced Settings or the button
Restore Defaults in the tab
Port Settings in the
Communications Port Properties window.
The drivers of USB-RS-232-adapters are generally faulty. Adapters manufactured by Keyspan have been reported to work under Mac OS X. Adapters based on the Prolific PL-2303 work both under Windows and under GNU/Linux with some modifications. Despite their high prices, the products of FTDI cannot be recommended, because the Linux driver does not implement any flow control when sending. Also the Windows driver seems to ignore flow control most of the time.
The Windows driver by Prolific from August 2005 can crash the computer. The Linux driver does not implement XON/XOFF flow control, but luckily it does support CTS/RTS correctly.
The firmware can be upgraded via the RS-232 port by using a computer running Unix or Microsoft Windows.
Four active signals (RxD, TxD, CTS and RTS) must be connected and the RESET line of the AT90S2313 microcontroller (pin 1) must be wired to ground (pin 10 on the microcontroller, pin 5 on the RS-232 connector, or pin 1 of the card edge connector), and power must be supplied to the board.
There are two jumper wire pads on the production version of the board. One is almost under the microcontroller, and it can remain closed at all times. The other is located next to the cassette port connector. This RESET switch of the AT90S2313 is the jumper that must be closed in order to upgrade the firmware.
At first you may type the following command to make a back up copy of the old firmware.
cisphas not been ported to the Amiga yet.
cisp -c c2n232 com1 -s firm-old.s19
cisp -c c2n232 /dev/ttyS0 -s firm-old.s19
Now you should either remove the RESET jumper of the AT90S2313, or power off the C2N232 for a short moment. After that, you can upload the new firmware with the following command sequence.
cisphas not been ported to the Amiga yet.
cisp -c c2n232 com1 -e -l firmware.s19
cisp -c c2n232 /dev/ttyS0 -e -l firmware.s19
cisp: failed to enable the programming mode
Did you forget to pull RESET to ground and power the C2N232 on? Are the RS-232 wires connected properly? Does your Unix box support CTS/RTS handshaking?
detect: device is locked
As the RESET line is not in the control of the
software, it is difficult to cure this misfeature. Most notably, the
AT90S2313 will refuse to co-operate after a firmware upload with
cisp -l. In order to verify the firmware, you will need
to power the C2N232 off and on, or maybe alternatively disconnect and
connect the RESET jumper.
Unless you want to build a C2N232 yourself according to one of the circuit board layouts, contact Nicolas Welte. The adapters produced by Marko Mäkelä (130 units) have now been sold out. For the latest production run, the price—including shipping to anywhere in the world—was 20 €.
Have a look at our picture gallery for more pictures. Marko sells the devices without case, but you can do what Nicolas Welte did. He adapted a DB9-to-DB25 case for the C2N232 and glued the bottom side of the cassette connector to it:
|c2nload||A small auto-starting fastloader for the C2N232||Commodore AmigaOS, Microsoft Windows and Unix-like systems; all Commodores that can load from tape|
|c2n||Tape deck emulator front-end for the C2N232||Commodore AmigaOS, Microsoft Windows and Unix-like systems|
|cbmlink||File transfer and remote management of Commodore computers||Commodore AmigaOS, Microsoft Windows and Unix-like systems|
All Commodore-side programs have been written in 6502 assembler, while everything else is C. For the convenience of Amiga and Windows users, precompiled executables have been supplied. Users of Unix-like systems must fire up their C compilers.
The C2N232 firmware page contains the firmware source code and some documentation. If you modify the code, you will need GNU Binutils to translate it.
cisp program for transferring firmware to the
AT90S2313 microcontroller, also available from the firmware page, has
been tested on FreeBSD, Linux and on Microsoft Windows. You
may also be able to use other software instead.
The idea of designing the C2N232 arised on the 30th of June 2001, when Marko Mäkelä visited a fellow Commodore hacker in Newcastle upon Tyne, Christopher Phillips. Christopher had no data connection between his Commodore 64 and his main computer, an Apple Macintosh. The only feasible interface of the Mac is RS-232, and existing solutions that require a parallel port were clearly out of question.
The first prototype was assembled on a Vero board in July or August, and the software development started at the same time.
First, some code was written for reading the pulse widths of the
cassette write signal, to reverse engineer the details of the
Commodore cassette format, as the information supplied in the title
Commodore 64 Whole Memory Guide by Tim Arnot turned out to be
c2n program that encodes and decodes
Commodore cassette pulses was written, and the
utility was enhanced with the high-level Commodore cassette
Second, the function for playing back cassette pulses was developed. It was made to work on the 11th of September 2001 when Juha Kouri and Turo Heikkinen were visiting Marko’s place in Espoo and measuring the circuit with a digital oscilloscope.
Designing the custom transfer protocol took several months due to other activities. The protocol was designed in such a way that it works on all 8-bit Commodores. In the idle state of the bus, both the cassette read and write lines are on the logical high level. Both receiving and sending is initiated by the Commodore pulling the cassette write line low. This ensures proper operation of the protocol even if the computer clears the input register that records high-to-low transitions of the cassette read line. The send operation is extremely timing-sensitive: the processor clock speed must remain constant during it.
The digital oscilloscope was needed again in October or November for debugging the custom transfer routines on the Commodore 264 series, whose cassette read input is level-sensitive and not high-to-low sensitive like in all other Commodores.
A prototype run of twenty C2N232 units was produced before entering
mass production. On 22nd of May 2002, the first
unit was assembled on a professionally manufactured circuit board.
The electronic components that were ordered in April 2002 arrived in early July. The first devices of the second batch were delivered in July or August of 2002. All 110 units were sold out in 2004.
In the summer of 2003, I developed a Commodore serial bus connection for the C2N232. It does successfully emulate a peripheral, such as a disk drive, but for some reason, it fails to work as a controller, i.e., to send commands to a disk drive. I stopped working on this in December 2003. You can have a look at the most recent firmware with partial serial bus support and short notes on how to test it.
I do not have interest to produce another batch of the C2N232 at this time. Nicolas Welte has some plans, including hardware support for the serial bus connection, but these hobby projects tend to take time.
Juha Kouri and Turo Heikkinen assisted me in making the prototype circuit boards and in measurements. Nicolas Welte helped me in obtaining some rare components.
Nicolas Welte and Wolfgang Moser have suggested improvements to this document.