VGA - Bildschirm löschen



  • Kann ich dann eigentlich unter DOS mit dem TASM ein Programm im protectec Mode schreiben.
    Ich müsste doch nur, bevor ich den Prozessor in den protectect Mode
    schalte, den GTDR initialisieren und dann Deskriptoren von meinen Datenbereich
    dem Stackbereich sowie Codebereich mit entsprechenden Privilegien anlegen.
    Ausserdem möchte ich einen Deskriptor anlegen um schreib lese Rechte
    für die Grafig-Karte im 1024*768 256 Farben (VESA) zu erhalten(A000:0), der dann z.B. über das ES Register erreichbar ist (endlich linearer Grafigspeicher ohne
    Bankswitching).
    Müßte eventuell auch noch den INT Vector für die Exeption Behandlung auf meine
    Routine verbiegen.
    Kann man im Prinzip so vorgehen?



  • hermes schrieb:

    Kann ich dann eigentlich unter DOS mit dem TASM ein Programm im protectec Mode schreiben.[?]

    Jup, das geht sogar sehr gut. 😃

    hermes schrieb:

    Ich müsste doch nur, bevor ich den Prozessor in den protectect Mode
    schalte, den GTDR initialisieren und dann Deskriptoren von meinen Datenbereich
    dem Stackbereich sowie Codebereich mit entsprechenden Privilegien anlegen.

    Jo, theoretisch schon - dabei solltest du aber nicht vergessen, dass sgoar DOS teilweise schon ProtectedMode-Komponenten hat (zB. EMM386), die es dir uU. nicht erlauben, einfach so direkt in den PM zu schalten.
    Wenn du also ein DOS-Programm schreiben willst, das im PM laeuft, solltest du in Betracht ziehen, einen DOS-Extender/DPMI zu benutzen, um in den PM zu wechseln. Der DPMI-Host richtet dann beim Wechsel in den PM soweit schon alles fuer dein Programm ein und erleichtert im Allg. die Arbeit im PM unter DOS.
    DPMI-Spezifikationen und weitere Infos zu DOS-Extendern gibt's auch auf der Seite mit dem PM-Tutorial.

    hermes schrieb:

    Ausserdem möchte ich einen Deskriptor anlegen um schreib lese Rechte
    für die Grafig-Karte im 1024*768 256 Farben (VESA) zu erhalten(A000:0), der dann z.B. über das ES Register erreichbar ist (endlich linearer Grafigspeicher ohne
    Bankswitching).

    Jo, blieben 2Dinge zu beachten:
    1.Der FrameBuffer bei A0000 ist auch im PM nur 64KByte gross. Der LFB liegt an einer anderen Adresse, die dir die VESA-Funktion 01h zurueckgibt.
    2.Um VESA-Funktionen aufrufen zu koennen, musst du idR. erstmal wieder in den RM (oder V86) zurueckschalten.

    hermes schrieb:

    Müßte eventuell auch noch den INT Vector für die Exeption Behandlung auf meine
    Routine verbiegen.

    Klingt sinnvoll...

    Wie gesagt, ein DOS-Extender nimmt dir einen Grossteil der Arbeit ab:

    • Mode-Switching(RM<->PM)
    • Weiterleiten von Ints/IRQs von PM zu RM oder
      teilweise auch umgekehrt 😉
    • Speichermanagement (Einrichten von IDT,GDT usw.)
    • Exception-Behandlung

    ...Nachteil ist, dass du aufgeschmissen bist, wenn da irgendwo der Wurm drin steckt 😃 (mir ist bisher noch kein bugfreies Exemplar untergekommen *grml* - mal abgesehen vom Win9x DPMI-Host; Der funktioniert eigentlich ganz gut...). Die Dinger sind schlecht zu debuggen und Support kriegst du dafuer praktisch auch nicht mehr. 😡



  • Nobuo T schrieb:

    2.Um VESA-Funktionen aufrufen zu koennen, musst du idR. erstmal wieder in den RM (oder V86) zurueckschalten.

    Ist so nicht ganz richtig. Es gibt ja auch ein Protected-Mode Interface in der VESA Schnittstelle. schon seit der Revision 2.1 (oder noch eher) und mit der Version 3.0 sogar ein richtig gutes. 😃

    EDIT: Hat jemand nen Link, wo man sich noch die VESA VBE 2.0/2.1 Dokumentation laden kann? Weil die haben meines Wissens nach ja noch ein anderes PM-Interface als die Version 3.0 oder?



  • IMHO beschraenkt sich die PM-Unterstuetzung von VBE2.0 auf den LFB und die Funktionen 05h, 07h und 09h (entry-Point ueber Funktion 0Ah). Bei aelteren Versionen gibt es gar keine PM-Unterstuetzung.
    Wenn man bedenkt, dass auch funktionen fuer buffering und bankswitching verfuegbar sind, habe ich wohl in der Tat unrecht, da der Grossteil der Funktionsaufrufe auch direkt vom PM aus erledigt werden kann.
    Spaetestens wenn's dann aber ans Wechseln des Grafikmodus geht, stimmt die Aussage wieder - VBE3 ist schliesslich nicht unbedingt weit verbreitet. :p

    BTW:
    In den VBE3-Docs stehen auch Infos zu allen Vorgaengerversionen. 😉



  • Danke für die lehrreiche Diskussion zum Thema Protectec Mode.
    Heißt DPMI "Dos Protectect Mode Interface"?



  • Korrekt.


Anmelden zum Antworten