DOS Programm mit Parallel Dongle unter Windows (BOSCH Professional Integrator)
Ich hatte kürzlich die Anforderung, dass ein uraltes DOS Programm (aus dem Februar 1997) unter Windows laufen sollte. Problem an der ganzen Sache war aber, dass die Software mit einem Hardware-Dongle am Parallelport geschützt war. Ich nehme gleich mal vorweg, dass dieser Typ Dongle definitiv nicht über ein USB-to-Parallel-Kabel funktioniert. Es war also schon mal ein Rechner mit einem physikalischen Parallelport notwendig (oder über Dockingstation, nativ durchgeschleift). Ich hatte ein Testlaptop mit Windows XP Professional und einem „echten“ Parallelport.
Ich dachte sofort in Richtung DOSBox, da ich damit früher die „guten“ DOS-Spiele wunderbar unter Windows zum Laufen bekommen habe, leider ist in der aktuellen Version aber eine Einbindung der Parallelschnittstelle nicht implementiert. Durch ein wenig „rumgooglen“ bekam ich dann aber heraus, dass es diverse Modifikationen der DOSBox gibt, zum einen die SVN-Builds und erstmal erwähnt wurde eine Dongle-/Parallelport-Emulation in den sogenannten „Megabuilds von ha-a-l-9000„. Ich habe mich dann entschieden, die Version DOSBox SVN Daum (1. 7. 2013) For Windows zu nutzen, da sie ein nettes grafische Frontend und die Unterstützung für Netzwerk, Parallelport und Dongle implementiert hat.
Die Einrichtung ging ganz problemlos über das mitgelieferte GUI, letztendlich landen aber alle Informationen in der Konfigurationsdatei „dosbox.conf“. Bei meiner speziellen Software (BOSCH Professional Integrator), funktionierte der Dongle aber nur dann, wenn ich die oben erwähnte Dongle-Funktion nicht aktiviert habe, aber sei es drum. Der Dongle am Parallelport wurde durch folgende Einträge in der Konfigurationsdatei perfekt erkannt und die Software lief perfekt!
[parallel]
parallel1=reallpt realbase 378
parallel2=disabled
parallel3=disabled
dongle=false
Im BIOS muss der Parallelport auf ECP-Modus stehen und unter Windows waren folgende Einstellungen gesetzt:
Device Manager –> Ports (COM & LPT) –> ECP Printer Port (LPT1) –> Port Settings
[ ] Try not to use an interrupt
[x] never use an interrupt
[ ] Use any interrupt assigned to the port
[ ] Enable legay Plug and Play detection
LPT Port Number: LPT1
Device Manager –> Ports (COM & LPT) –> ECP Printer Port (LPT1) –> Resources
I/O Range 0378 – 037F
I/O Range 0778 – 077A
Hier noch ein Screenshot.
Was definitiv nicht geht (und das wird wohl mit den meisten Parallel-Dongles so sein), ist die Benutzung eines USB-2-Parallel-Adapters für den Dongle und der Versuch diesen dann als nativen LPT-Port in die DOSBox zu mappen.
Update 29.05.2015
Mit der oben beschriebenen Version von DOSBox konnte ich mit einem HP-Laptop (EliteBook 8560w) in Verbindung mit einer passenden Original-HP-Dockingstation die Bosch „profi.exe“ mit einem am Parallelport der Dockingstation angeschlossenen Parallel-Dongle nutzen und über die serielle Schnittstelle (ebenfalls an der Dockingstation) sauber mit einer SPS kommunizieren.
Nebenbei erwähnt, das Ganze unter Windows 8.1 Enterprise (DOSBox muss als Administrator gestartet werden).
Es ist also möglich (passender Dongle vorausgesetzt) mit Windows 8 + DOSBox auch im Jahre 2015 noch diese alten Steuerungen zu programmieren!
Update 13.01.2017
Ein Leser meines Blogs (Roger) hinterließ mir einen Kommentar, dass er Probleme hat einen Windows Drucker mit DOSBox zum Laufen zu bringen. Nach einigen Emails konnte Roger das Problem dann aber lösen und ich möchte hier kurz die Lösung aufzeigen. Wichtiger Hinweis vorweg, es gibt verschiedene Builds von DOSBox, besonders die „Megabuilds“ von hier enthalten spezielle Patche z.B. auch für „Parallel Port passthrough, file rediredtion and Virtual Printer patch, logging enabled“. Roger konnte durch den Einsatz eines solchen „Megabuilds“ und der richtigen Einstellung in dosbox.conf einen Drucker in Funktion bringen, der am Hostsystem (Windows 7) über eine PCI-Parallel-Karte am System steckt.
Der Windows 7 Gerätemanager zeigte unter „Anschlüsse (COM & LPT)“, „PCI ECP Parallel Port (LPT1)“ folgende Werte:
In die dosbox.conf mussten (lt. Auskunft Roger) folgende Werte hinein:
parallel1=reallpt realbase:e800 ecpbase:e800
und es funktioniert nun.
Danke Roger fürs Feedback!