This ISA IO card was spawned from the Fourm on this thread
This diagram was created by Thrashbarg. If you have any comments / suggestions then please post them on this board
Note: I haven't resized the images for obvious purposes. To get the the most detailed image just click on the one you want
From Thrashbarg himself:
Some more detail about that card.
Write to ports 2B8h-2BBh and read from 2BCh-2BFh. The inputs
act as tri-state buffers but they can be latch if you disconnect pin 11 from
+5v and connect it to whatever. Low = latch, high = transparent.
Further modification - Parallel interface
Thrashbarg advised the modification below to interface the IO card with a parallel port
The data pins are attached to the data lines of the parallel
port. No need for shift registers, just make sure your parallel port is
bidirectional if you want to read the registers. The register select lines are
attached to the control lines with the inverters to make things easier for the
Programming the data line is easy but the control lines are more tricky. Have a look at http://www.doc.ic.ac.uk/~ih/doc/par/doc/regpins.html, specificly the control register. Bit zero of the control port is attached to the enable input of the 74LS138, so if you want to program a register make sure this is a 1. Bits 1-3 select the register.
This could be done like this (using a sort of Basic Pseudo code):
register = 4 (say we wanted to program the 4th register)
register = register * 2 (shift the bits left by one bit)
register = register + 1 (set the enable bit)
OUT 0x37A, register
OUT 0x378, data (set your data)
That should write your data to the 4th register. Remember also the registers are transparent, that is to say as long as they are selected they will always be the same as the data present on the parallel port. While a register is selected you can OUT anything to the data register and it will change on the card. When the register is deselected it'll latch to whatever the outputs where. This is very usefull.
To read a register is similar.
register = 4
register = register * 2
register = register + 1
register = register + 32 (this sets the 5th bit on the control register, which sets the parallel port into read mode)
OUT 0x37A, register
data = IN (0x378)