Wie kommt man denn mit Memoryzugriff statt Port-IO auf die Inputs
Ich habe keine Ahnung.
Vielleicht sind die Register mit einem Offset gemappt, vielleicht sind die Register nur mit der passenden Zugriffsbreite (8/16/32 Bit) zugreifbar, vielleicht geht es auch überhaupt nicht. Keine Ahnung. Kurzes Googeln fördert auch keine "üblichen" MMIO-Zugriffsmuster für den Parallelport zutage.
Längliches Googeln findet Dokumentation zu den EPP/ECP-Modi. Das läuft alles darauf hinaus, dass der Parallelport das Handshaking selbst macht und damit deutlich schneller betrieben werden kann als mit dem klassischen "Daten schreiben, Strobe aktivieren, Warten, Strobe deaktivieren"-Zyklus. Es geht also nicht darum, einen Logikanalysator damit zu bauen. DMA-Zugriffe auf die klassischen Register sind scheinbar nicht vorgesehen, sondern man nutzt für DMA die ECP-Register (Offset 0x400), wo ein FIFO dahinter steht. Angeblich bekommt man dadurch starken Jitter (unregelmäßiges Timing). Nur ECP-Ports sind DMA-fähig. Ferner scheint ISA-DMA immer auf 4.77 MHz festgenagelt zu sein, weswegen man z.B. IDE nicht mit ISA-DMA benutzt, sondern entweder mit PIO-Zugriffen oder Busmaster-DMA.
Ich weiß ja nicht, was du genau vorhast... aber vermutlich kommst du weiter, wenn du einen Mikrocontroller mit dem Auslesen eines GPIO-Ports beauftragst und ihn dann über eine andere Schnittstelle rausschicken lässt. Ein Atmega32U4 kann USB Full-Speed und harte Echtzeit. Ein STM32 oder anderer ARM ist zwar nur eingeschränkt 5V-kompatibel, hat aber mehr RAM.
Viel mehr dürfte es dazu nicht zu sagen geben, glaube ich.