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
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.
>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.
@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
@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
>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$.