Forum: PC-Programmierung Parallel-Port Adresse "umbiegen"


von Paul Baumann (Gast)


Lesenswert?

Vorgeschichte:
Ich habe hier einen sogenannten Willem-Programmer aufgebaut. Dieser wird
über die parallele Schnittstelle betrieben.

Leider ist mein Rechner nur noch mit USB-Schnittstellen ausgerüstet, so
daß ich eine Parallelportkarte kaufte. Diese hat allerdings die Basis-
adresse xB800. Das Steuerprogramm für den Eprommer ist aber nur auf
die "Standardadressen" (x278)geeicht. Mit diesem Problem war ich aber
nicht allein und fand hier eine Lösung, welche auch prima funktioniert:
http://www.benryves.com/products/remappediodll

Damit wird durch Änderung der Adresse und die Bnutzung der Datei 
"remappedio.dll" dem System "weisgemacht", daß der Prgrammer auf LPT1 
sitzt.



Dadurch kam bei mir die Frage auf: Ist es möglich, ein "alleinstehendes"
Programm zu schreiben, welches solche "schrägen" Portadressen auf 
"normale"
Adressen umweisen kann? Ich stelle mir ein Fenster mit 2 Eingabefeldern
vor:
1. "Basisadresse aus dem Gerätemanager abgelesen"
2. "Wunschadresse (x278, x378...)

unter Verwendung dieser remappedio.dll


Die Leute habe ja entweder gar keine oder nur LPT1 in ihren Rechnern
und wenn sie die Basisadressen wie z.B. xB800 auf x278 umweisen könnten,
wäre vielen Leuten sehr geholfen und einen Crash könnte es auch nicht
geben, da ja nichts auf den Originaladressen sitzt.

MfG Paul

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sinnvoller wäre es, wenn die den Frickelport nutzende Software das 
Betriebssystem nach der verwendeten I/O-Adresse fragen würde, statt 
falsche Annahmen zu treffen und irgendwelche fest codierten Adressen zu 
verwenden.

Die meisten Frickelportprogramme bekommen das auch hin.

von Paul Baumann (Gast)


Lesenswert?

@Rufus

Da gebe ich Dir selbstverfreilch Recht. Nur: Was nützt das, wenn man
z.B. Winpic800 oder die Willem-Software nutzen muß?

MfG Paul

von Spade, Sam (Gast)


Lesenswert?

>Programm zu schreiben, welches solche "schrägen" Portadressen auf
>"normale"
>Adressen umweisen kann? Ich stelle mir ein Fenster mit 2 Eingabefeldern
>vor:
>1. "Basisadresse aus dem Gerätemanager abgelesen"
>2. "Wunschadresse (x278, x378...)

Das geht schon und ist, wenn du das Verständniss hast, gar nicht mal so 
schwierig. Damit meine ich, dass das Programm weniger als 50 Zeilen 
Codelänge hat. Man fängt dazu den Zugriff auf die IO-Adresse mittells 
der Debugbefehle ab und "topft" dann ganz simpel um. Mann kann natürlich 
auch direkt patchen. (Beides hat Vor- und Nachteile) Ich habe sowas 
ähnliches mal mit einem Windows-Programm unter Linux gemacht. Das 
Programm hatte ich aber selbst geschrieben, so dass ich die IO-Zugriffe 
durch Interrupt-Aufrufe ersetzen konnte. Damals ging es mir um eine 
schnelle Umsetzung in Wine, denn die Alternative alles neu zu schreiben 
hätte zu lange gedauert. Danach hatte ich mit einem Kernelmodul die 
entsprechende Vektortabelle in Linux manipuliert und damit direkten 
IO-Zugriff über Wine.

Du kannst auch ganz einfach im Gerätemangaer die Adresse ändern. Bei PCI 
muss das möglich sein. Falls nicht, kannst du dich eines 
Zusatzprogrammes bedienen, welches Zugriff auf die PCI-Adressen 
ermöglicht. Die Parallelportadresse müsste unter Base0 (Base0-4) stehen. 
Die anderen sind jeweils für den Steuerport bzw. MM-IO.

von Paul Baumann (Gast)


Lesenswert?

@Sam Spade

Ja, das ist bei mir das Problem, daß ich mit der PC-Programmierung
Schwierigkeiten habe. Seit dieser ganze Visual xxx-Kram im Gange ist,
habe ich mich mit Grauen davon abgewandt.

Im Gerätemanager ist die Adresse fest, d.h. ich kann nichts verstellen,
denn die betreffenden Schaltflächen sind ausgegraut. (So, wie meine 
Haare)
;-)

>Falls nicht, kannst du dich eines
>Zusatzprogrammes bedienen, welches Zugriff auf die PCI-Adressen
>ermöglicht.

Würde ich gerne, wenn ich nur Eines fände...

Wie gesagt: Dank der Seite
http://www.benryves.com/products/remappediodll
geht es ja mit dem Willem-Programmer. Das Programm "WinPic800" hingegen
funktioniert so nicht, weil: Wenn ich dort in der .ini-Datei die 
Adressen
ändere, ändert das Programm sie gleich nach dem Start wieder zurück.

MfG Paul

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Paul Baumann schrieb:
> ändert das Programm sie gleich nach dem Start wieder zurück.
Datei schreibgeschützt machen? ;)

von Paul Baumann (Gast)


Lesenswert?

@Läubi
>Datei schreibgeschützt machen
Habe ich. Als Dank kommt von "WinPic800"die Meldung, daß er nicht in
diese Datei schreiben kann und es geht nicht weiter, bis der 
Schreibschutz
wieder entfernt ist.
:-(
MfG Paul

von Spade, Sam (Gast)


Lesenswert?

>geht es ja mit dem Willem-Programmer. Das Programm "WinPic800" hingegen
>funktioniert so nicht, weil: Wenn ich dort in der .ini-Datei die
>Adressen
Wenn das Programm seinen eigenen sys-Treiber mitbringen sollte, so 
funktioniert die Notlösung über die neue io.dll auf jeden Fall nicht.

>Würde ich gerne, wenn ich nur Eines fände...
Vereinzelt lassen sich noch welche für Dos finden aber nicht für 
Windows. 98 Prozent der Programmierer sind auf Endlösungen, also 
Anwendungsprogrammierung, ausgerichtet. Deswegen findet man auch keine 
Tutorials, Beispiele oder Hilfsprogramme freier Entwickler dazu. Die 
Specs zum PCI-Zugriff und die Debugbefehle findet man bei Intel oder 
AMD. Zur Treiberprogrammierung gibt es einige wenige englische Tutorials 
und auch freie (zumindest für XP) Dokus bei M$.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.