DSUB-25 FEMALE (On SGI) 1. /STROBE Pulses low to indicate valid data on D1..D8. 2. D1 Data output lines (bidirectional on some SGI's) 3. D2 4. D3 5. D4 6. D5 7. D6 8. D7 9. D8 10. /ACKNOWLEDGE Device pulses this low after receiving data. 11. BUSY High indicates that device is busy. 12. EOP (PE - PAPER EMPTY) High indicates device has run out of paper. 13. ONLINE (SELECT) Device is online (selected). 14. PR/SC Output is high for printer or low for scanner. 15. FAULT (ERROR) Low indicates fault on device. 16. RESET (INIT) Output - generates low pulse to reset device. 17. EOI (NOINK) Device has run out of ink. 18. nc. 19-25. GROUND Signal ground. Some pins may not be connected, so it's best to common all of these together. /STROBE signal -------------- The /STROBE signal pulses low to indicate valid data on D1..D8. You can use this signal to strobe the data into a latch, register or to generate an interrupt on some external hardware. On our Indy, the /STROBE signal isn't very clean, if you use very short strobe lengths the rise time of the pulse is quite long compared to the pulse duration. You might like to clean this up with a 74LS14 schmitt trigger, or similar - you get a nice square pulse this way: D1..D8 ------ These are TTL style data outputs. On some machines (Indy for example) these lines are bidirectional. When reading data, the pins go to a high impedence state. See note on PR/SC. Some machines latch these lines, some may not. The safest solution is to latch them yourself, then your hardware should work on all machines. /ACKNOWLEDGE ------------ When the external device has received data from the host (ie. after a /STROBE pulse), it should pulse /ACKNOWLEDGE low to indicate that the transfer was completed successfully. For a simple output-only interface, you can tie /STROBE to /ACKNOWLEDGE and get the interface to acknowledge itself. This means that you can write to the port as fast as you like, and use an external latch to store the results. It should be possible to ignore the acknowledge signal from the interface, using the PLPIOCIGNACK ioctl. Unfortunately, this does not appear to work on all machines. On our Indys, this call doesn't seem to make any difference to the way the port works, but I have heard that it works correctly on an Onyx. BUSY ---- The external device can take the BUSY signal high to indicate that it's busy and therefore unable to communicate. This is used in printers to indicate that some time consuming task is in progress; moving the printer head for example. If you don't want the BUSY signal, you can tie it to ground. EOP --- The printer takes this high to indicate that it has run out of paper. This input can be read using the PLPIOCSTATUS ioctl, so you can easily use it for a general purpose input. ONLINE ------ The printer takes this high to indicate that it's online (selected). Like EOP, this input can be read using the PLPIOCSTATUS ioctl. PR/SC ----- This signal appears to indicate whether the port is attempting to read or write data. The pin is normally high (printer mode), but opening the port in bidirectional mode (/dev/plpbi) and then initiating a read operation causes this pin to go low (scanner mode). FAULT ----- The printer takes this low to indicate that there is a fault. Like EOP, this input can be read using the PLPIOCSTATUS ioctl - note that the value returned is inverted. ie. if the pin is high, the relevant PLPFAULT bit will be zero, and vice versa. RESET ----- The host pulses this low to reset the external device. You can generate a reset at any time, by calling the PLPIOCRESET ioctl. EOI --- The printer takes this high to indicate that it has run out of ink. This input can be read using the PLPIOCSTATUS ioctl, so you can easily use it for a general purpose input. James Ward (j.w.ward@dcs.hull.ac.uk), 17/06/96