LPT-zu-ISA-Konverter

Haben Sie eine ISA-Karte, und Ihr neuer PC hat keinen geeigneten Slot?

Hiermit können Sie alte Karten an beliebig neuen Rechnern betreiben. Freilich lohnt sich das nur bei preisintensiven Spezialkarten (typischerweise Messtechnik und Industrieelektronik), die es nicht anderweitig neu zu kaufen gibt.

Hinweis: In aller Regel wird die Zugriffs-Software ohne Quelltext vorliegen und 16-bittrig (DOS oder Windows) sein. Eine solche Situation schließt die Verwendung von 64-Bit-Windows von vornherein aus!

Lösung 1: lptisa

Dann wäre es immer noch möglich, diese Karte am Druckerport (25-polige SubD-Buchse) zu betreiben; vorausgesetzt, Ihr Rechner hat das noch: ein bidirektionales Parallel-Interface, auch als ECP und EPP bekannt.
Hat man kein Druckerport, kann man eine entsprechende PCI-, PCIexpress- oder ExpressCard-Karte für vergleichsweise wenig Geld kaufen. Nur bei Notebooks ohne ExpressCard-Slot sieht's finster aus.

Diese wenigen Gatter erlauben den Anschluss einer ISA-Karte an ein Parallelport. Es muss nur bidirektional sein, das sind faktisch alle. Der Trick ist, dass die Daten am Datenbus zappeln dürfen, solange IOWR oder IORD inaktiv sind. Damit ist das Laden der beiden Adress-Latches ('574) einfach realisierbar.
Beachte: Ein USB-zu-ISA-Umsetzer ist zwar aus heutiger Sicht naheliegender; durch die Paketorientierung ist die Emulation von ISA-Karten jedoch um ein Vielfaches langsamer. (Faktor 100 bis 1000.) Lösen lässt sich ein derartiges Problem nur mit dem Quelltext der Zugriffssoftware. (Bei gescheit konstruierter Software genügt der Quelltext der Hardwareabstraktionsschicht, sofern in einer DLL ausgelagert.)

An die ISA-Karte werden bestimmte Voraussetzungen gestellt:

Klar: Am besten wäre open-source. Dann kann man auch über USB gehen. Aber das ist bei den Karten eher unwahrscheinlich.

Damit könnten Sie unter anderem die folgenden Karten betreiben:

Der parallele Betrieb von solchen Karten ist problemlos möglich.

Der vorgestellte Treiber ist für Windows 3.x/9x/Me. Für Windows NT/2k/XP/Vista/7 ist der Aufwand für 16-Bit-Programme noch geringer: Es wird nur ein VDD benötigt, der im Userspace läuft. Lässt sich leicht selbst bewerkstelligen.

Bei 32-Bit-Programmen (eher selten in Verbindung mit ISA-Karten) wird's kniffliger: Entweder werden die Portzugriffe wie beim USB2LPT abgefangen (wenn ein NT-Treiber dabei ist) oder der Prozess im Debug-Modus betrieben mittels meiner InpOut32.dll. (mit oder ohne Treiber). Letzteres ist der einzige Weg unter 64-Bit-Betriebssystemen.

Der Schaltungsaufwand ist geradezu lächerlich: 3 Standard-Schaltkreise, keine GAL, kein FPGA, kein Mikrocontroller!

Bei bekannter Karte verringert sich der Aufwand auf gerade einen 74HC/HCT374/574, mit ein paar Jumpern ließe sich der High-Teil festlegen. Bei Verzicht auf den NAND-Gatterschaltkreis 74HC/HCT00 wird allerdings die Softwareschnittstelle inkompatibel, d.h. der Redirektionstreiber muss etwas modifiziert werden.

Stromversorgung

Beachten Sie aber die Stromversorgung der Karte; im Idealfall begnügen sie sich mit +5 V und +12 V, dann genügt ein Verlängerungskabel aus dem Computergehäuse heraus. Ansonsten müssten Sie Ihr Netzteil anzapfen, oder benutzen ein altes Computernetzteil. Bei geringem Stromverbrauch können Sie einen Netztrafo auf der Leiterplatte mit unterbringen.

Der oben angegebene Schaltplan und das Board-Layout setzt stillschweigend voraus, dass die Karte nur +5 V und +12 V benötigt! Die Einspeisung erfolgt mit einem Floppy-Stecker. Werden weitere Spannungen benötigt, ist eine problemspezifische Stromversorgung sicherlich am besten.

Anschlusskabel

Das Druckerkabel (ein SubD-Verlängerungskabel) muss bei dem angegebenen Schaltplänen so kurz wie möglich, maximal 50 cm lang sein. Am besten erfolgt der Anschluss direkt, ohne Kabel, direkt am PC oder an der Dockingstation.

Sind längere Kabel gewünscht, müssen:

Lösung 2: eppisa

Diese Variante benötigt ein paar Gatter mehr und ist inkompatibel, hat aber den Vorteil mit nur einem E/A-Befehl pro E/A-Befehl (bei gleich bleibender Adresse) auszukommen. Bei Karten mit hohem Datendurchsatz, deren Software den Befehl rep insb bzw. rep outsb verwendet, kann das von großem Vorteil sein!

Mehr Gatter für mehr Durchsatz

Dazu wird zwingend ein EPP-Port vorausgesetzt. Das sind heutzutage faktisch alle Parallelports — ggf. muss man in der Spezifikation vor dem Kauf nachgucken. Bei BeyondLogic ist deren Programmierung sehr gut erläutert.

Beim lptisa muss SELIN bzw. STROBE bei jedem Byte „zu Fuß“ (= Bit-Banging) gesteuert werden. (= langsamer aber leichter kontrollierbar)

Software

Der zur Virtualisierung der Hardware erforderliche Treiber LPTISA.386 (für Windows 3.1, 95, 98 und Me) ermöglicht den Hardware-Zugriff ohne Änderung der Software! Allerdings verlängert sich die Zugriffszeit auf das drei- bis siebenfache, Exception-Behandlung von Windows nicht eingerechnet.

Für NT-basierte Systeme ist vorgesehen, mein InpOut32.dll entsprechend zu erweitern, wenn Bedarf besteht. Dies wäre dann sowohl für 16- als auch für 32-Bit-Programme wirksam.

Angenehmer Sonderfall: DOS und Win16

Um Portzugriffe aus DOS- und 16-bit-Windows-Programmen unter NT-basierten 32-Bit-Betriebssystemen (2k/XP/Vista/7) abzufangen benötigt man nur einen einfachen Virtuellen Gerätetreiber. Dieser läuft im User Mode. Damit ließen sich beispielsweise Portzugriffe auf eine GPIB-Karte abfangen und auf einen USB-GPIB-Adapter umleiten (der hoffentlich der USB-TMC entspricht).

Wie man einen solchen Treiber schreibt war hier dokumentiert. Internetquellen sind elend vergänglich; hier habe ich selbst so etwas ähnliches programmiert, was eine sinnvolle Quelltextvorlage darstellt. Das Stichwort auf einer älteren MSDN-CD ist InstallIOHook. In der aktuellen MSDN-Ausgabe und im Internet sind sämtliche Infos dazu verschwunden, es funktioniert trotzdem noch.

Dateien

 eppisa.psz      2003-06-04 11:35   27K  Als PDF im Querformat Als Bild
 lptisa.psz      2003-01-20 19:49   23K  Als PDF im Querformat Als Bild
 lptisa.scz      2003-01-20 19:49  7.8K  UltiCap [ausgepackt]
 lptisa.zip      2003-05-12 00:06   27K  VxD [Einsicht]
 eagle.zip       2015-12-20 00:06   27K  Eagle-Layoutdaten [Einsicht]

Siehe auch: Wie man mit Software gänzlich fehlende Hardware emuliert