Ruud's Commodore Site: The PC1-bus Home Email

The PC-1 bus and the expansion of it



What is it

The PC-1 - bus is the bus used by the Commodore PC-1. The PC-1 is a small PC with just one 360 KB drive and all devices integrated on the motherboard. Being very small, it has no internal PC slots but an external expansion bus. I wanted to add some extra connectors to this bus so I could add extra memory and an hard disk drive.

Then I found out that the expansion bus only has 60 pins. And this simply means it isn't ISA bus compatible. Having no schematic or manuals, making an adapter didn't seem to be simple. But I was very lucky to be given an external hard disk for this PC1. It appeared to be nothing more then a metal box containing a power supply, a Seagate ST-225 20 MB disk, an Omti controller and a flatcable connecting the card with the expansion bus. And this flatcable was my stone of Rosetta!


The pins

Signals seen from RIGHT to LEFT at the back of the computer !!!
top row                   bottom row                        
pin  Signal   I/O         pin  Signal  I/O            

1    GND      Ground      2    SD7     I/O
3    RESET    O           4    SD6     I/O
5    GND      Ground      6    SD5     I/O
7    IRQ2     I           8    SD4     I/O
9    GND      Ground      10   SD3     I/O
11   DRQ2     I           12   SD2     I/O
13   GND      Ground      14   SD1     I/O
15   GND      Ground      16   SD0     I/O
17   IOCHCK   I           18   IOCHRDY I
19   GND      Ground      20   AEN     O
21   MEMW     O           22   SA19    I/O
23   MEMR     O           24   SA18    I/O
25   IOWR     I/O         26   SA17    I/O
27   IORD     I/O         28   SA16    I/O
29   DACK3    O           30   SA15    I/O
31   DRQ3     I           32   SA14    I/O
33   DACK1    O           34   SA13    I/O
35   DRQ1     I           36   SA12    I/O
37   REFRESH  I/O         38   SA11    I/O
39   CLK      O           40   SA10    I/O
41   IRQ7     I           42   SA9     I/O
43   IRQ6     I           44   SA8     I/O
45   IRQ5     I           46   SA7     I/O
47   IRQ4     I           48   SA6     I/O
49   IRQ3     I           50   SA5     I/O
51   DACK2    O           52   SA4     I/O
53   T/C      O           54   SA3     I/O
55   BALE     O           56   SA2     I/O
57   GND      Ground      58   SA1     I/O
59   OSC      O           60   SA0     I/O

Signal descriptions

SA0-A19 (I/O) Address bits 0 through 19 are used to address memory and I/O devices within the system. These 20 address lines, in addition to LA17 through LA23, allow access of up to 16Mb of memory. These signals are generated by microprocessor (CPU) or DMA controller.

CLK (O) This is system clock. It is synchronous microprocessor cycle with 50% duty cycle. This signal should be used only for synchronisation.

RESET (O) This active (H) signal is used to reset or initialize system logic at powerup time.

SD0-SD7 (I/O) These signals provide data bus bits 0 through 7 for the microprocessor, memory, and I/O devices.

BALE (O) "Bus Address Latch Enable" is provided by the Bus controller and is used on system board to latch valid addresses. CPU address lines A0..19 are latched with falling edge of "BALE". "BALE" is forced high during DMA cycles.

IOCHCK (I) "I/O Channel Check", active (L), activates the NMI input of the CPU Mostly used to provide the system board with parity (error) information about memory or devices on the I/O channel.

IOCHRDY (I) "I/O channel ready", active (L), is used by devices to lengthen I/O or memory cycles. Any slow device using this line should drive it low immediately upon detecting its valid address and a READ or WRITE command. Machine cycles are extended by an integral number of clock cycles.

IRQ2..7 (I) Interrupt requests 3 through 7, 9..12 and 14..15 are used to signal microprocessor that an I/O device needs attention. The IRQs are prioritized, with IRQ0 having the highest priority and IRQ15 having the lowest priority. Active (H).

IORD (I/O) "I/O Read", active (L), instructs an I/O device to drive its data onto the data bus.

IOWR (I/O) "I/O Write", active (L), instructs an I/O device to read the data on the data bus.

MEMR (I/O) This signal, active (L), instructs the memory devices to place data on the data bus to be read by the CPU.

MEMW (I/O) Same as MEMR but then for writing data.

DRQ0..3 (I) DMA Requests 0..3 are asynchronous channel requests used by peripheral devices and the I/O channel microprocessors to gain DMA services. They are prioritized, with DRQ0 having the highest priority, and DRQ3 having the lowest. They are active high, and they must be held high until the corresponding "DMA Request Acknowledge" (DACK) line goes active.

DACK0..3 (O) "DMA Request Acknowledge", active (L), are used to acknowledge DMA requests (DRQ0..3).

AEN (O) "Address enable" signal is used to signal I/O whether the CPU, AEN = (L), or the DMA controller, AEN = (H), has control of the address bus, the data bus, IORD and IOWR.

REFRESH (I/O) This signal is used to indicate a refresh cycle and can be driven by a microprocessor on the I/O channel.

T/C (O) "Terminal count" provides a pulse when the terminal count for any DMA channel is reached.

OSC (O) "Oscillator", 14.381 MHz needed for the old CGA cards.


Remarks:
- The signal "Card Select" is missing.
- Except Ground, all other power signals are missing as well.
- Compared to the ISA bus, the pins of the top row have been shifted one pin to the right.


A real card

Several times I have thought about creating a PC1-to-ISA card but there was always something that stopped me. But after seeing this YouTube movie:



I decided to design the schematic and board and have some real PCBs built. The resulting Eagle files can be found in this file.

Here are some pictures of the result:


My expansion board only has one ISA slot, the reason will be explained later. As you can see, the ISA slot of the expansioncard has been filled with a XTIDE card.
The PC-1 is standing on top of a PC20-III. You can also see two unfinished expansion cards. When trying to push the finished board into the expansion slot, I noticed I had to cut a rectangular piece of about 5x5 mm off the right bootom corner, just right of the bend connector. This has been corrected already on the board in the ZIP file.



Another problem I ran into: where to leave the cables that provide the power fot the expansion board? On the photo you can see that I cut a little piece of plastic between the expansion slot and printer port.
Remark: I only provide +5 Volt and Ground to the expansion board. The yellow cable is indeed +12 Volt, has been soldered to the bord but that's all: not connected with the +12V pin of the ISA slot. Main reasons not to connect it:
- It simplified the design of the board.
- The cards I want to use only need +5 Volt and Ground.
- See later.



This is a picture of the PC-1 and monitor so you can see things work. You can also see my self made ISA expansion with eight slots. It is part of a motherboard that was been hit by lightning. It was completely dead; those ICs that weren't soldered, like the 8088, 8255, 8237 and EPROM were goners. And having a PC around with only three slots, the idea rose to make an extension for it. Using a saw I removed the part you can see, added the edge connector I sawed off a fried MDA card and soldered it under slot 8. To make sure I have enough power for this card, I added some cables and connectors so that it could draw power from another device.
This leads to the next idea: I solder some cables and a male power plug on the PC-1 expansion board and I will use that to power that big expansion board. Power problem partly solved.
Partly because: what about -5V and -12V? The only boards that need these voltages are the ones with RS-232 interfaces, AFAIK. If you want to install an extra COM port, you have find your own way to provide the needed voltages.

The idea was to use this big 8-slot expansion card for this PC-1 expansion card as well but then I ran into a small problem: a card stuck in the ISA slot faces the other way! So I need to solder an edge connector under slot 1 first.
On top of the floppy you the another "expansion": just an ISA slot with an edge connector. I cannot use it either here, it faces the wrong way. I use it a lot with the PC20. In this way I can insert (self built) cards in slot 1 and be able to measure signals at the component side.


Something to think about.

Having that big expansion board, I decided to design a expansion board for the PC-1 with just one ISA slot. IMHO there is nothing that can stop you to expand my design with more ISA slots. Have fun!





Having questions or comment? You want more information?
You can email me here.