Fragen zu Interrupts, RM und LPT



  • Hallo,
    Ich hoffe meine Fragen sind nicht zu 'tief', hab schon im Forum gesucht aber nix gefunden was mir 100% weiterhelfen würde.

    1. Kann ich einen per Tastatur ausgelösten Interrupt (09?) so verbiegen dass er ein laufendes Programm unterbricht wenn er aufgerufen wird und zum 'Kernel' springt? Könnte man so eine Perversion auch zum Herumspringen zwischen verschiedenen Programmen verwenden?

    2. Ich habe ein Signal am LPT dass ca. 20 mal pro Sekunde zwischen High und Low abwechselt, gibt's irgendeine Möglichkeit diese Zyklen zu zählen? Kann man ein 'in' mit diesem Signal synchronisieren?

    3. Liege ich mit der Annahme richtig dass ich im RM auf einem 486 auch mit A20 Gate nicht mehr als 1 MB bekomme der auch schon teilweise durch BIOS, VGA etc. aufgebraucht ist? Mal von Tricks wie Unreal Mode abgesehen.

    Danke schon im Voraus für die Antworten.



  • Hi.

    Zu 1:
    Ich weiss zwar nicht, was du unter "zum 'Kernel' springen" verstehst, aber IMHO kannst du in jedem OS den KB-Handler irgendwie selbst belegen.
    Die genaue Vorgehensweise haengt vom laufenden OS ab.
    Ob und wie du dann "Herumspringen zwischen verschiedenen Programmen" kannst, haengt auch wieder vom verwendeten OS ab.

    Zu 2:
    Schau dir in den FAQ mal die Beitraege zum Programmieren des Parallelport an.
    Diese schnittstelle untersteutzt nicht nur DMA, sondern auch IRQ.

    Zu 3:
    Ja, da liegst du richtig.
    Mit A20 kannst du im RealMode maximal auf 1MB zugreifen. Ohne sind es AFAIK 64Kb weniger.
    Das ist aber nicht nur beim 486 und aelteren CPU so, sondern auch noch bei den neusten x86-kompatiblen CPU.



  • Hallo,
    Erstmal danke für deine Antwort, schad dass im RM nicht mehr als 1MB geht.

    Zu 1:
    Es läuft unter garkeinem OS, nur ein extrem simpler RM Versuch von mir, von daher sind mir keine Einschränkungen gegeben.
    Ich will nur, wenn sich ein Programm aufhängt zu diesem Kernel, bessergesagt einer Mini-Shell, springen. Nehmen wir an es hängt in einer Schleife und kommt nichtmehr raus, dann müsste doch der Interrupt zu der Ihm zugewiesenen Speicherstelle springen und das Programm dadurch unterbrechen?
    Zwischen 2 Programmen springen würde ich ganz simpel erledigen, Programm Nr.1 beginnt bei Speicher X und Nr.2 bei Y. Das ganze hat natürlich keinen Schutz dagegen dass irgendwas in dessen Speicher pfuscht und es überschreibt aber es soll nur ein kleiner Versuch werden.

    Zu 2:
    Hab's gefunden, zwar nicht über die FAQ in die ich genauer hätte schauen sollen aber über Google. Werden allerdings ca. 40 Signale pro Sekunde da der Lüfter dessen Drehzahl ich damit überwachen will 2 "High" pro Umdrehung schickt.

    mfg
    EinUnwissender


Anmelden zum Antworten