Parallel-I/O-Adapter mit dem PPI8255

Helmut Berhardt

TRS-80, GENIE und Komtek haben weder für IEC-Bus, RS232C noch sonst irgendwelche standartisierten Schnittstellen Anschlüsse vorbereitet. Das einzige (außer Stecker für Drucker und Floppy), was man vorfindet, ist der herausgeführte Systembus. Leider gibt es keinerlei Interfaces, die auf den Systembus aufgesteckt werden und dann Standard-Schnittstellen bereitstellen. Es ist auch nicht zu erwarten, daß irgendein Hersteller für unsere wenig bedeutenden Geräte sowas je anbieten wird. Wir müssen uns da schon selber helfen.

Andererseits ist der Systembus für Bastler viel inreressanter als ein IEC-Bus oder User-Port. Es stehen dabei alle Möglichkeiten offen, irgendwelche Schnittstellen selbst zu bauen und über den Systembusstecker anzuschließen. Man ist nicht auf die vom Hersteller vorgegebenen Möglichkeiten beschränkt.

Eine einfache Parallel-I/O-Schnittstelle mit 24 Leitungen läßt sich mit dem 8255 aufbauen. Neben dem 8255 werden noch 2 weitere ICs zur Portdecodierung benötigt. Die in Abb.1 vorgeschlagene Schaltung benutzt die Portadressen 98H-9BH. Sie ist so einfach, daß sich die Herstellung eines Layouts nicht lohnt. Die Schaltung läßt sich auf einem 5 cm * 8 cm Stück Lochrasterplatine aufbauen.

Der Anschluß an den Systembus des Computers ist in Tabelle 1 wiedergegeben. Für den TRS-80 ergeben sich dabei gewisse Schwierigkeiten. Die Versorgungsspannung von +5V liegt nicht auf dem Systembus-Stecker. Sie muß an geeigneter Stelle auf dem CPU-Board entnommen werden. Außerdem ist das Signal IORQ* nicht vorhanden. Anstelle von IORQ* muss dann auch an Pin 11 des 74LS02 das Signal A2 gelegt werden. Anstelle der nicht verfügbaren Signale RD* und WR* werden die Signale IN* und OUT* an die Pins 5 und 36 des 8255 gelegt.

Der 8255 hat gegenüber dem für den Z80 üblichen PIO-Baustein den Nachteil, daß er keinen IM2-Interrupt liefern kann und daß die Leitungen eines Ports nicht unabhängig voneinander als Input oder Output definiert werden können. Dafür stehen aber in der einfachsten Betriebsart (Mode 0) drei 8-Bit-Ports zur Verfügung. Beim Port C lassen sich zusätzlich noch oberes und unteres Nibble unabhängig voneinander als Input oder Output festlegen.

Ein echtes Handshaking ist mit einzelnen Leitungen des Port C für die Ports A und B ebenfalls möglich, wenn die Betriebsarten Mode 1 oder Mode 2 programmiert werden. Dann muß noch ein zusätzliches IC 74LS05 eingesetzt weden, das die Interrupt-Ausgänge des 8255, PC0 und PC3 invertiert und auf Open-Collector Ausgänge bringt. Außerdem kann darüber auch ein externes, low aktives Strobe-Signal an den INT-Eingangder CPU geführt werden, wenn das Handshaking nicht durch den 8255 erledigt werden soll.

Tabelle 1: Anschuß an den Systembus

Pin des Systembus-Steckers
SignalGENIEKomtekTRS-80
D0154630
D1144122
D2124032
D3163926
D4204218
D5113728
D6184424
D7174320
A0103425
A1  73227
A2  93040
A3  82834
A4  62631
A5  52435
A6  42238
A7  32036
IORQ*383540 #2 (A2)
RD*413819 #2 (IN*)
WR*403612 #2 (OUT*)
RESET*46  #133 #1   2 (SYSRES*)
INT*311021
+5V1917,1839 #3
GND1,2,1,2,8,29,37
49,5049,50
Tabelle 2: Pinbelegung des 40poligen I/O-Steckers

SignalPinPinSignal
PA43940PA3
PA53738PA2
PA63536PA1
PA73334PA0
GND3132GND
  -2930  -
  -2728  -
  -2526  -
  -2324  -
  -2122ext.STROBE*
  -1920  -
PC71718PC0
PC61516PC1
PC51314PC2
PC41112PC3
+5V  910+5V
PB7  7  8  -
PB6  5  6PB1
PB5  3  4PB2
PB4  1  2PB3
Anmerkungen zu Tabelle 1
#1anstelle von RESET* sollte ein durch AND-Verknüpfung aus RESET* und NMI* gebildetes SYSRES* benutzt werden
#2anstelle der nicht vorhandenen Signale IORQ*, RD* und WR* müssen A2, IN* und OUT* benutzt werden
#3Die Versorgungsspannung ist nur am Expansion-Interface und nicht am Grundgerät zu entnehmen; bei Anschluß an das Grundgerät kann sie an geeigneter Stelle auf dem CPU-Board abgenommen werden oder auch vom angeschlossenen Peripheriegerät geliefert werden, zu dem auch Masse-Verbindung bestehen muß

Abb.1: Schaltung und Verdrahtung des I/O-Boards