Next Previous Contents

1.4 Cables

Since the last opencbm release, the PC market has changed considerably. Modern PCs do not contain parallel ports anymore, nor do they have ISA type connectors for extension cards. Additionally, parallel port cards connected via PCI, PCIe or other modern replacements are reported not to work with OpenCBM.

Also, devices that allow you to connect your parallel port printer to the USB port of your PC cannot work, either.

Thus, there was a need for newer cable replacements. While OpenCBM still supports parallel port based cables, more modern USB variants are supported, too, and they should be preferred to the parallel port based ones.

USB cables

There are two types of USB cables currently supported. The XU1541 cable is a simple cable, optimised for ease of building and low costs. Its big downside is that transfers with this cable are very slow. In fact, the parallel port based solutions for the XA1541 or XM1541 (a.k.a. XAP1541 or XMP1541) were faster than the XU1541 cable. Thus, it can be recommended only if you do not plan to use the XU1541 regularly, but only for a limited time.

If you have the money to spend and plan to use your CBM equipment regularly, it is highly suggested to use a XUM1541 cable, for example, in the incarnation of the ZoomFloppy.

Building these cables is beyond the scope of this document. We refer to the appropriate links on the web for instrutions how to build or order them.

Parallel port based cables

As parallel ports more and more vanish from modern PC hardware, it is recommended not to use these cables for new projects, but to use USB based cables instead.

Another problem for Windows machines is that using such cables requires a kernel mode driver. For 64 bit Windows machines (with the exception of Win XP 64 bit), in order to load kernel mode drivers, these drivers have to be signed. Signing a driver not only costs money; it also requires you to have a company in order to get the needed certificate. Thus, the OpenCBM drivers currently are not signed, thus, you will not be able to use parallel port based cables with 64 bit versions of Windows.

This is not completely true, as you can switch off the driver signature enforcement in windows. Normally, this is used for driver development only. Use at your own risk! Instructions on disabling the driver signature enforcement can be found on the web.

These cables are still supported on 32 bit Windows variants, and they will remain as long as the developers have access to the necessary infrastructure.

Please note that USB-to-parallel converters that are designed to let you access your parallel port based printers on the PC will definitely not work! If your PC does not have a native parallel port, please consider using an XU1541 or XUM1541 cable instead!

Also note that a standard X(E)1541 cable won't work with _this_ driver. In fact, there will probably never be a multitasking OS which works with one of these, that's why we call it XM1541, M for Multitasking. Anyway, if you have a XE1541, the necessary modification is simple:

Exchange pins 5 & 6 on the Commodore DIN plug

The ACK line is the only line on a PC parallel port that can generate a hardware interrupt. This way, we get an interrupt when the device releases the DATA line to signal "ready to receive". Without an interrupt, you would have to poll for this signal about every 100us, which is inacceptable for any multitasking system.

Be sure to have your parallel port configured to use an IRQ, usually 7 or 5, but both are often also used by soundcards.

(ASCII art taken from the StarCommander README :))

The PC parallel plug (male DB-25 connector):

        PaperEnd   Busy
    SelectIn   |   |   Ack        Data 7 - Data 0       Strobe
           |   |   |   |   +-------------+-------------+   |
           V   V   V   V   |                           |   V
        +------------------------------------------------------+
        | 13  12  11  10   9   8   7   6   5   4   3   2   1   |
        |  o   o   o   o   o   o   o   o   o   o   o   o   o   |
        +-+                                                  +-+
          |  o   o   o   o   o   o   o   o   o   o   o   o   |
          | 25  24  23  22  21  20  19  18  17  16  15  14   |
          +--------------------------------------------------+
             |                           |   ^   ^   ^   ^
             +-------------+-------------+   |   |   |   |
                        Ground          Select   |   |   AutoFeed
                                              Init   Error

The Commodore drive serial bus plug (male 6-pin DIN connector) looks like:

                                 Reset
                                   |
                                   V
                          +-------+ +-------+
                        +-+       +-+       +-+
                        |     5         1     |
               Data --> |     o    6    o     | <-- SrqIn
                        |          o          |
                        |     4         2     |
                Clk --> |     o    3    o     | <-- Gnd
                        |          o          |
                        +-+                 +-+
                          +-----------------+
                                   ^
                                   |
                                  Atn

This is the XE1541 cable (won't work with this driver):

    CBM drive serial port   PC parallel port

        2  Gnd ---------- 18-25  Ground
        3  Atn --------+---- 13  SelectIn
                       +->|-- 1  Strobe
        4  Clk --------+---- 12  PaperEnd
                       +->|- 14  AutoFeed
        5  Data -------+---- 11  Busy
                       +->|- 17  SelectIn
        6  Reset ------+---- 10  Ack
                       +->|- 16  Init

This is the XM1541 (pins 5 & 6 on the CBM end exchanged)

    CBM drive serial port   PC parallel port

        2  Gnd ---------- 18-25  Ground
        3  Atn --------+---- 13  SelectIn
                       +->|-- 1  Strobe
        4  Clk --------+---- 12  PaperEnd
                       +->|- 14  AutoFeed
        6  Reset ------+---- 11  Busy   
                       +->|- 17  SelectIn
        5  Data -------+---- 10  Ack
                       +->|- 16  Init

Besides the XM1541, a XA1541 cable is also supported. That cable consists of the same connections as the XM1541, but instead of using diodes, it uses transistors which drive the lines better. Because of this difference, the logic for outputs is reversed between the XA1541 and the XM1541.

Additionally to the cable types above, opencbm also supports XP1541 and XP1571 parallel cables, which have to be used in conjunction with the XM1541 or XA1541 cable.

For more information about the different supported cables (XM1541, XA1541, XP1541, XP1571) can be obtained on the Star Commander homepage ( http://sta.c64.org/xcables.html)


Next Previous Contents