This is a 24 bit I/O card designed to work with the parallel/printer port of an Amiga or
PC. It uses the Intel 82C55 I/O chip to facilitate this.
Design status
Breadboard prototype built and tested.
Software drivers for the Amiga written and going through final testing.
PC software drivers in progress (had to learn how to hit hardware with XP).
25th July 2003, first prototype PCBs received, ready for building.
4th May 2004 update
The parallel port drivers for the Amiga and PC versions have been written and tested. Windows 2000/XP is a bitch for I/O!
I am working on some simple applications and a GUI.
How it works
The 8255
was designed to work with the 8086 processor and the ISA bus, which
makes interfacing easy. Making it work with the parallel port took
some lateral thinking.
The device has 2 address lines, a chip
select, read and write strobe. The parallel ports of the Amiga and PC
have a limited (3) number of control lines, even then at different
pin-outs, at least the 8 data pins line up! Remembering that the 8086
bus was multiplexed, inspired my solution, use 2 data pins with
latches for the address and one control signal to control them. I
then use an inverter to create /RD and /WR from another control line
and the final control pin to control the chip select.
To access the chip requires two stages:
Phase 1, select the register you want to address and latch it into the 7474's using the CLK_LATCH pin.
Phase 2,
If it is a write operation, place the parallel port D0-D7 into output mode and write the data to the port. Then drive pins 13 (SELECT) and 11(BUSY) low, the data then gets latched into the 8255. Now set select high.
If it is a read operation, place the parallel port D0-D7 pins into input mode. Now set SELECT (pin 13) low and BUSY (pin 11) high. Read the data at the parallel port then set SELECT high.
There are jumpers on the schematic/PCB to select operation with the Amiga and PC.
Schematic
Click on the picture below for a full screen schematic.
Possible uses
With suitable interface circuits you can do many things, control LEDs, stepper motors, relays, solenoids and read many input devices.
At a later date I hope to add some circuits for A/D converters, D/A converters, relay circuits, and lamp drivers.
Design limitations
There are some limitations of this design. Accessing the device through the parallel port limits the device to around a 1 MHz/1us access time!
The 8255 can only source/sink 2.5mA of current per output, not enough to drive a standard LED at a reasonable brightness. I always buffer I/O devices like this with a 74245 bus transceiver, as it is cheaper to blow one of them up than the 8255.
Future Work
Finish the software drivers and publish the full notes.
Publish the PCB design.
Add the circuits mentioned under possible uses.
That's it for now.
Prototype pictures
(added 4th May 2004)
Here is my assembled prototype and a bare PCB.