Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Turbo-Pascal-Programme unter MS-WinNT?

  1. #1
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650

    Question Turbo-Pascal-Programme unter MS-WinNT?

    Ich habe einige Turbo-Pascal-Programme, die unter DOS u. MS-Win3.x gut liefen, aber unter MS-WinNT nicht auf die Hardware-Ports zugreifen können; das MS-WinNT (4.0, 2000, XP) liefert nur binäre Einsen (d. h. bytemäßig 0xff)
    Wie kann man die Programme wieder richtig verwenden, also so, dass die auf die Hardware zugreifen?

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    nein. Der direkte Harwarezugriff, wie er unter Win9x und Dos gang und gäbe war geht nicht mehr. Auf jeden Fall nicht mehr so wie vorher. afaik.

    Aber wie du dir schon denken kannst, gibts hier nicht wirklich nt-freaks.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477

    Re: Turbo-Pascal-Programme unter MS-WinNT?

    Original geschrieben von nobody0
    Ich habe einige Turbo-Pascal-Programme, die unter DOS u. MS-Win3.x gut liefen, aber unter MS-WinNT nicht auf die Hardware-Ports zugreifen können; das MS-WinNT (4.0, 2000, XP) liefert nur binäre Einsen (d. h. bytemäßig 0xff)
    Wie kann man die Programme wieder richtig verwenden, also so, dass die auf die Hardware zugreifen?
    Du kannst höchstens noch versuchen, die maximalsten Rechte zu vergeben.
    Wenn das nichts hilft, was zu erwarten ist, geht es nicht.

    DOS und Windows-auf-DOS hatten keine Rechtetrennung, auch nicht zwischen System und Anwendungen.
    Normale Betriebsysteme schon, meistens ist es gar nicht erlaubt, mit einer Anwendung direkt auf Hardware zuzugreifen, sondern nur über einen Teil im System, also zB ein Treiber.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  4. #4
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650

    Re: Re: Turbo-Pascal-Programme unter MS-WinNT?

    Original geschrieben von anda_skoa

    Normale Betriebsysteme schon, meistens ist es gar nicht erlaubt, mit einer Anwendung direkt auf Hardware zuzugreifen, sondern nur über einen Teil im System, also zB ein Treiber.
    Es sind Treiber; das ist ja das Problem, dass die unter NT nicht funktionieren, weil die phantom-Werte vom Windoof bekommen.
    Unter Linux ist es so einfach wie mit Turbo-Pascal, aber einige wollen es auch für Windoof haben.

  5. #5
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477

    Re: Re: Re: Turbo-Pascal-Programme unter MS-WinNT?

    Original geschrieben von nobody0
    Es sind Treiber; das ist ja das Problem, dass die unter NT nicht funktionieren, weil die phantom-Werte vom Windoof bekommen.
    Unter Linux ist es so einfach wie mit Turbo-Pascal, aber einige wollen es auch für Windoof haben.
    Hmm, sind die auch korrekt auf die WinNT Treiber API portiert?

    Die Linux Treiber werden ja auch spezielle angepasst worden sein, wahrscheinlich sogar in C geschrieben, oder?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  6. #6
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650

    Re: Re: Re: Re: Turbo-Pascal-Programme unter MS-WinNT?

    Original geschrieben von anda_skoa
    Hmm, sind die auch korrekt auf die WinNT Treiber API portiert?

    Die Linux Treiber werden ja auch spezielle angepasst worden sein, wahrscheinlich sogar in C geschrieben, oder?

    Ciao,
    _
    Die Linux-Treiber sind ganz einfach so:

    iopl(3); // open I/O-space
    outb(123, 123); // write
    input_byte = inb(0x4711); // read
    iopl(0);

    Unter TP ist es praktisch gleich, nur dass dort kein iopl nötig ist, aber sowas wie iopl / requestregion / ioperm muss es ja auch unter MS-WinNT geben, denn auch da können die Treiber natürlich nicht mehr machen als auf Ardressen im I/O-Space (bzw. spezielle Register) Lesen/Schreiben.

    Es muss doch eine einfache Möglichkeit geben die TP-Programme auch unter MS-WinNT verwenden zu können.

  7. #7
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477

    Re: Re: Re: Re: Re: Turbo-Pascal-Programme unter MS-WinNT?

    Original geschrieben von nobody0
    Die Linux-Treiber sind ganz einfach so:

    iopl(3); // open I/O-space
    outb(123, 123); // write
    input_byte = inb(0x4711); // read
    iopl(0);
    Hmm, sieht mir eher nach Userspace Code aus. Ein Kernelmodul muss normalerweise keine Permissions einholen.


    Unter TP ist es praktisch gleich, nur dass dort kein iopl nötig ist
    Ist auch in Pascal nötig, wenn das Betriebsystem das so erfordert.
    Unter DOS natürlich nicht


    aber sowas wie iopl / requestregion / ioperm muss es ja auch unter MS-WinNT geben, denn auch da können die Treiber natürlich nicht mehr machen als auf Ardressen im I/O-Space (bzw. spezielle Register) Lesen/Schreiben.
    Ja, möglicherweise ist es auch unter NT erlaubt, vom Userspace aus auf Ports zuzugreifen, aber es wäre auch möglich, dass es wirklich nur einem Treiber erlaubt ist.
    Sowas findet man sicher in der MSDN.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  8. #8
    Registrierter Benutzer
    Registriert seit
    25.01.2003
    Beiträge
    222
    Hi,
    NT erlaubt keinen direkten zugriff auf ports (für ring 3),
    hier genauere infos + mögliche lösung des problems:
    http://www.beyondlogic.org/porttalk/porttalk.htm

    gruss
    Arhur
    ---------
    irc.mrunix.de #mrunix

  9. #9
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650

    Re: Re: Re: Re: Re: Re: Turbo-Pascal-Programme unter MS-WinNT?

    Original geschrieben von anda_skoa
    Hmm, sieht mir eher nach Userspace Code aus. Ein Kernelmodul muss normalerweise keine Permissions einholen.

    Ist auch in Pascal nötig, wenn das Betriebsystem das so erfordert.
    Unter DOS natürlich nicht

    Ja, möglicherweise ist es auch unter NT erlaubt, vom Userspace aus auf Ports zuzugreifen, aber es wäre auch möglich, dass es wirklich nur einem Treiber erlaubt ist.
    Sowas findet man sicher in der MSDN.

    Ciao,
    _
    Also das hängt natürlich vom OS ab, aber unter Linux kann man beides machen - mit Anmeldung (z. B. request_region) und ohne (z. B. iopl(3)), aber ohne riskiert man Konflikte, denn ein Port kann ja nur von einem Thread zur Zeit genutzt werden und Deadlocks sind ein hartes Problem der Informatik.
    Zumind. unter Linux gibt´s aber sogar noch einen dritten Weg: Aus dem User Space am Kernel vorbei auf die Hardware zugreifen; das nennt sich Raw I/O und bringt erheblichen Performance-Schub in einigen Fällen.


    @arthur:
    Ich sehe mir das mal an, danke

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •