8086: 2 Fragen: BackBuffering und Speicher



  • ProfEich schrieb:

    Sorry für den Doppelpost - damit das nicht mehr ganz so oft vorkommt bin ich ab sofort mal wieder mit nem geregtem Nick unterwegs...

    NP 😃 Das kann dir auch gereggt passieren und Beitraege loeschen kannst du so auch nicht.

    ProfEich schrieb:

    Heißt das jetzt genau, dass ich die Segmente 1D25 bis vielleicht 9FFF für mich hätte oder kann ich da noch in irgendwelche Konflikte geraten?

    Sollte keine Konflikte geben.

    ProfEich schrieb:

    (Somit währe dann PSP:0002 wohl das letzte Segment, welches ich benutzen darf?)

    Nope: Das letzte Segment, das du voll benutzen koenntest, waere 9FFFh - 1000h, weil wegen den 64KByte.
    Wuerdest du in 9FFFh beispielsweise das Offset FFFEh ansprechen, wuerdest du schon bei der physikalischen Adresse 0AFFEEh (=A000:FFEE) landen - das waere irgendwo im VGA-FrameBuffer.

    BTW: Der Stack liegt normalerweise (D)Word-Aligned. Also in .com-Programmen bei FFFEh.



  • [nerv] So, thx.
    Ist ja nichtmal nen doppelpost geworden. Hab erst gar nicht bemerkt dass du vorher schon geantwortet hattest.

    Naja.. Ich möchte noch ein (vorerst) letztes mal nerven *g*
    Bei Google und in der Forensuche nichts gefunden:

    Alsooooo: Ich möchte gerne sogesehen ein KEY_DOWN und KEY_UP Event abfangen. Soweit ich weiss brauche ich dafür wohl Interrupt 9.

    Kann mir wer vielleicht ein kleines Beispiel zeigen, wie ich ein Programmteil von mir als Int 9 benutzen kann - dort abfragen kann ob eine Taste gedrückt oder losgelassen wurde (und welche (Pfeiltasten hauptsächlich)) und dann noch den alten Interrupt aufrufen kann?

    Sogesehen ein Int 9 Hook mit kleinem Beispiel währe nett 🙂
    Ich denke mehr brauch ich dann erstmal nicht mehr für ein kleines Spiel (höchstens Timer demnächst nochmal - weil die spinnen bei mir und das mit dem VSync geht unter DOS nicht - aber dazu später *g*).

    Thx 😃 [/nerv]



  • Ich werd jetzt da kein komplettes Programm für den IRQ Handler schreiben, aber im Prinzip ist es gar nicht schwer. Alten Handlerpointer auslesen und merken. Deinen Handler installieren. Im Handler rufst du dann den alten mit far call auf, vorher musst du aber ein pushf machen. Sonst halt der übliche Dreck mit EOT (out 20h, 20h oder so). Auf welchem Port du die Scancodes einlesen kannst, weiß ich jetzt nicht auswendig (61h oder 63h glaub ich).

    V-Sync geht schon, zumindest in Mode 13h oder Mode X.



  • Na, einen EOI braucht (/sollte) er nicht machen, wenn er danach noch den original IRQ1-Handler aufruft.
    Die Scancodes der Tastatur lassen sich ueber port 60h auslesen.
    Wird eine Taste losgelassen, wird AFAIR der Scancode or 80h auf port 60h gesendet...
    BTW: AFAIR zaehlen die Pfeiltasten auch zu den Extended keys. Bei denen wird vor dem eigentlichen Scancode ein IRQ ausgeloest, bei dem port 60h E0h zurueckgibt. Erst beim naechsten IRQ steht dann der eigentliche Scancode bei port 60h.



  • Nobuo T schrieb:

    Na, einen EOI braucht (/sollte) er nicht machen, wenn er danach noch den original IRQ1-Handler aufruft.

    Stimmt.

    Der Rest deckt sich auch mit meiner Erinnerung 🙂



  • Gut, danke 😃

    Klappt jetzt 🙂

    Hab halt mit Interrupt 21h, 35h den alten Offset vom Interrupt ausgelesen und dann mit 21h, 25h den neuen gesetzt und dann mit IN AL, 60h kam man an den Scancode. Dann nur noch zum alten Interrupt springen und es funxt 🙂
    Auch wenn mans nicht vergessen sollte zurückzusetzen *g*


Anmelden zum Antworten