Part I – The Hardware
I finally got around to looking into connecting an old Connectix Greyscale QuickCam (QC) to an Apple II by way of the Apple Parallel Interface Card (APIC). I had a couple of QuickCams lying around from my webcam astronomy days and bought some APICs off the ePay in anticipation of hooking them together someday. I chose the APIC because it was the only parallel interface card I could find that implemented a full 8-bit input port.
Someday finally came. I pulled out the programming specs on the QC and the APIC Installation and Operation Manual and went about figuring out the details of mapping the PC parallel port pinouts of the QC to the APIC. This is the cable magic required to connect them together:
APIC Signal/Pin QuickCam Signal/Pin
Strobe 15 PCAck 17
Ack 16 CamRDY 15
Input D7 18 Nybble3 11
Input D6 21 Nybble2 10
Input D5 19 Nybble1 12
Input D4 14 Nybble0 13
Input D3 25 Nybble3 11
Input D2 3 Nybble2 10
Input D1 17 Nybble1 12
Input D0 1 Nybble0 13
Output D7 13 Cmd7 9
Output D6 12 Cmd6 8
Output D5 11 Cmd5 7
Output D4 23 Cmd4 6
Output D3 22 Cmd3 5
Output D2 8 Cmd2 4
Output D1 6 Cmd1 3
Output D0 5 Cmd0 2
Aux Strobe 7 *Reset 16
GND 24,20,4,2 GND 18-25
There are a few things to take note of. First, the output from the QC, Nybble3-0 is mapped to both to the most significant and the least significant nybble of the APICs 8 bit input port. Since there are only enough I/O pins to implement the 4 bit communications protocol, I decided to map the one QC nybble to a full byte of input to the APIC. The 6502 isn’t very good at shifting, so this alleviates the need to shift the nybble around for certain algorithms. The second thing to note is the output strobe of the APIC connected to the PCAck of the QC. This is one of the major handshake lines that works in conjunction with the CamRDY line for transferring data. The host needs to hold this line high until the QC signals data is ready by raising CamRDY. However, the APICs strobe is pulsed for a short duration, automatically returning to its previous state based upon switch settings on the APIC. The strobe duration can be set using the first three switches on the APIC, from 1 us to 15 us. Luckily, by maxing out the strobe duration to 15 us gives the 6502 just enough time to check the PCAck from the QC and re-triggering the strobe if it isn’t ready, or reading the data input port if it is – all before the strobe falls. The second nybble from the QC quickly follows the first, so there was no need to check the handshaking signals again if the 6502 did enough work in-between nybble reads. The last fortuitous connection was the Aux Strobe to *Reset. The Aux Strobe isn’t really documented in the APIC manual except for the block diagram. It delivers a short pulse whenever a certain address is accessed, and just happens to be active low, matching the requirements for the *Reset on the QC. The APIC allows for the selection of active high or low for the regular strobe signal, thus matching the QCs PCAck signal. The switch settings required on the APIC are thus:
APIC SWITCH BLOCK
1 2 3 4 5 6 7
ON ON ON OFF ON OFF OFF
As this is a fairly delicate connection that I didn’t want to have to re-solder, I wanted to get a DB-25 dual ended hood to create a professional, reliable dongle. However, those parts are no longer made, so I had to buy two DB-25 hoods and take a hack saw to them to create the piece I wanted. Ultimately, I ended up with this:
Finally, the QuickCam takes its power from the PS/2->AT keyboard connector since the parallel port doesn’t provide any. I went through the parts bin, found an old +5V power adapter, an old keyboard cable to hack up, and along with a trip to Radio Shack for the power plug, created this:
The only lines required to connect are the +5V and ground. Here is a link to a nice diagram showing which pins are power for the two connector types: http://www.bbdsoft.com/keyboard.html
Continue on to Connectix QuickCam and the Apple II, Part II – The Software