[comp.sys.ibm.pc.misc] amiga<->ibm centronics link

xbrown@sheoak.bcae (Andrew Brown) (04/16/91)

gidday,
      I have just bought an ibm compatible AT (286-16) and would 
like to connect it up to my amiga 500 via the centronics port. 
Something like laplink is what I need however the laplink cable
seems to use _STRANGE_ pin connections (which would probably
cause clouds of smoke to emit from my ibm as the amiga supplies
+5v on pin 14? I think it's that one). What I need is books,
advice, source code, possible pin connections, etc.

Thanks is advance.

     Andrew Brown          | I know you believe you understand 
maddog@ironbark.bcae.oz.au | what you think I said but I'm not
xbrown@sheoak.bcae.oz.au   | sure you realise that what you heard
731114@sheoak.bcae.oz.au   | is not what you think I mean't. 

d89-zke@dront.nada.kth.se (Zoltan Kelemen) (04/17/91)

I've done something similar when writing a transfer program for my good old
Commodore 64. The problem is, that most PCs are not able to receive data using
the normal data port (03bc or 0378 or 0278), only PS/2 systems can do that.

Printer data register, port 03bc / 0378 / 0278:

bit 7 = data bit 7, pin 9
bit 6 = data bit 6, pin 8
bit 5 = data bit 5, pin 7
bit 4 = data bit 4, pin 6
bit 3 = data bit 3, pin 5
bit 2 = data bit 2, pin 4
bit 1 = data bit 1, pin 3
bit 0 = data bit 0, pin 2


Printer status register, port 03bd / 0379 / 0279:

bit 7 = busy, pin 11
bit 6 = acknowledege, pin 10
bit 5 = out of paper, pin 12
bit 4 = online, pin 13
bit 3 = error, pin 15
bit 2 = unused
bit 1 = unused
bit 0 = unused


Printer control register, port 03be / 037a / 027a:

bit 7 = unused
bit 6 = unused
bit 5 = unused
bit 4 = enable IRQ7 for printer acknowledge
bit 3 = select input, pin 17			; inverted
bit 2 = initialize printer, pin 16
bit 1 = auto linefeed, pin 14			; inverted
bit 0 = strobe, pin 1				; inverted


Now, the printer data register may be used for output, and on PS/2 systems also
for input. The printer status register may only be used for input. The printer
control register may be used for both input/output on all PC systems.

When waiting for input, you have to ensure that none of the output lines are
pulled to ground. If an output line IS pulled to ground, no input is accepted
on that line.

For example, before inputting from the printer control register, you have to
output value 00000100 binary, or 4 decimal.

Hope this will help you a bit.

Zoltan Kelemen
d89-zke@nada.kth.se