mode 13h unter Windows XP/7/8



  • Hi!

    Ich lese gerade in dem Buch Black Art of 3D Game Programming von Andre LaMothe und dort wird als Basis für Grafikoutput mode 13h verwendet. Diesen kann ich ja unter MS Visual C/C++ nicht benutzen soweit ich gehört habe. Gibt es denn einen DOS Compiler unter Windows XP/7/8 ? Ich weiß, dass der Code veraltet sein mag, da das Buch nun ja auch nicht mehr das jüngste ist, aber ich finde, dort werden grundlegende Techniken ganz gut beschrieben. Würde mich über eine Antwort freuen, ob dies möglich ist.

    Danke!

    Gruß, kimsay



  • LOL



  • C++ Compiler für DOS:
    OpenWatcom
    DigitalMars

    DOS:
    FreeDOS

    Emulatoren/Hypervisor zum DOS laufen lassen:
    QEMU
    VirtualBox
    VMware Player



  • Warum kein DosBOX? Hat das den Modus nicht?



  • Keine Ahnung, kann schon sein dass das auch geht.
    Ich kann ja nicht alles kennen 😉
    (Die Liste ist auch nicht als vollständig anzusehen, sind halt meine Vorschläge)

    ps: Wobei ich DosBOX sogar kenne, aber schon ewig nimmer verwendet habe, und daher auch nicht daran gedacht 🙂



  • Okay ich dachte ehrlich du hattest nen grund es nicht aufzuzählen^^.


  • Mod

    ich wuerde pixeltoaster nehmen, dann kann man simple windows/linux/osx programme schreiben und 99% vom code sollte eigentlich analog zu der dos version sein.



  • Vielen Dank für die Antworten. Wie ist es denn eigentlich, wenn ich zB unter MSV C++ Grafik unter Windows ausgeben will? Muss man dann auf DirectX und dergleichen zurückgreifen oder geht das auch ohne? Wäre es theoretisch auch möglich seine eigenen Grafikroutinen in Assembler zu schreiben und einzubetten?



  • kimsay schrieb:

    Vielen Dank für die Antworten. Wie ist es denn eigentlich, wenn ich zB unter MSV C++ Grafik unter Windows ausgeben will? Muss man dann auf DirectX und dergleichen zurückgreifen oder geht das auch ohne?

    Es geht auch ohne. Irgend eine Grafik API musst du aber verwenden, Windows lässt dich nicht direkt auf die Grafikkarte zugreifen.

    Wäre es theoretisch auch möglich seine eigenen Grafikroutinen in Assembler zu schreiben und einzubetten?

    Ja, sicher. Aber siehe oben: kein direkter Zugriff auf die Grafikkarte, also auch kein direkter Zugriff auf den Screen-Buffer. Du brauchst also wieder irgend eine API um das Zeug dann auch den Schirm zu bekommen.

    Gibt aber einige halbwegs einfache Möglichkeiten.
    DrawDibDraw ist nicht ganz schwer zu verwenden und *ziemlich* fix.



  • rapso schrieb:

    ich wuerde pixeltoaster nehmen, dann kann man simple windows/linux/osx programme schreiben und 99% vom code sollte eigentlich analog zu der dos version sein.

    Ich glaub, man kann jede API nehmen, und 99% bleiben gleich. Irgendwo gabs doch mal ne lange Liste mit sowas.



  • kimsay schrieb:

    Hi!

    Ich lese gerade in dem Buch Black Art of 3D Game Programming von Andre LaMothe und dort wird als Basis für Grafikoutput mode 13h verwendet. Diesen kann ich ja unter MS Visual C/C++ nicht benutzen soweit ich gehört habe. Gibt es denn einen DOS Compiler unter Windows XP/7/8 ? Ich weiß, dass der Code veraltet sein mag, da das Buch nun ja auch nicht mehr das jüngste ist, aber ich finde, dort werden grundlegende Techniken ganz gut beschrieben. Würde mich über eine Antwort freuen, ob dies möglich ist.

    Danke!

    Gruß, kimsay

    Programmier das Zeugs in einem Emulator.
    Der Bochs Emulator bietet sich hierfür an.

    Du brauchst allerdings noch nen DOS Compiler und ein DOS Betriebssystem um es im Emulator dann zu nutzen.
    Hierfür kannst du FreeDOS 1.1 nehmen, der GCC C Compiler wird dort AFAIK gleich mitgeliefert.

    Bei Windows NT basierten Betriebssystemen (also auch Vista, Win7 usw.) wird das schwierig, weil dich das OS daran hindern wird, bestimmte Hardwarenahe Tricks auszuführen.
    Deswegen wirst du den Emulator benötigen.

    Die DOSBox ist zum entwickeln nicht so gut geeigent, mit Bochs wirst du besser debuggen können, die DOSBox sollte aber auch gehen, immerhin laufen die DOS Spiele darin auch und die nutzen ja solche Funktionen.

    http://bochs.sourceforge.net/



  • kimsay schrieb:

    Vielen Dank für die Antworten. Wie ist es denn eigentlich, wenn ich zB unter MSV C++ Grafik unter Windows ausgeben will? Muss man dann auf DirectX und dergleichen zurückgreifen

    Wenn die Grafik schnell sein soll, ja.
    Alternativ gibt's noch GDI, aber auch das ist ne Windows API die du verwenden müßtest, wenn du kein OpenGL oder DirectX nutzen möchtes.

    oder geht das auch ohne?

    Nein, das OS wird dich vom direkten Zugriff auf die Hardware aussperren

    Wäre es theoretisch auch möglich seine eigenen Grafikroutinen in Assembler zu schreiben und einzubetten?

    Assembler geht nur mit Einschränkungen. Stichwort Inline Assembler.
    Den mode 13h aufrufen können wirst du nicht dürfen, das OS wird dies verhindern.



  • hustbaer schrieb:

    kimsay schrieb:

    Vielen Dank für die Antworten. Wie ist es denn eigentlich, wenn ich zB unter MSV C++ Grafik unter Windows ausgeben will? Muss man dann auf DirectX und dergleichen zurückgreifen oder geht das auch ohne?

    Es geht auch ohne. Irgend eine Grafik API musst du aber verwenden, Windows lässt dich nicht direkt auf die Grafikkarte zugreifen.

    Ein 32 Bit-Windows erlaubt doch 16 Bit-Konsolen-Anwendung den Zugriff auf den Speicher in A0000 und auch das Umschalten in den Mode 13h mit 320x200x8.
    So etwas emuliert Wondows.

    Dafür wird auch keine Grafik API benötigt, sondern man darf auch seine eigenen Routinen verwenden.

    Wäre es theoretisch auch möglich seine eigenen Grafikroutinen in Assembler zu schreiben und einzubetten?

    Ja, sicher. Aber siehe oben: kein direkter Zugriff auf die Grafikkarte, also auch kein direkter Zugriff auf den Screen-Buffer. Du brauchst also wieder irgend eine API um das Zeug dann auch den Schirm zu bekommen.

    Das stimmt nicht, weil der MCGA-Mode von Windows + GraKa-Treiber emuliert wird und der Zugriff auf den Bildspeicher dafür erlaubt ist. So kann man sehr wohl auch mit eigenen Assembler-Routinen den Bildspeicher beschreiben.

    Es ist auch möglich die VBE-Informationen von VESA-Bios abzufragen, wenn man einen GraKa-Treiber installiert hat, auch wenn man die VESA-Modi unter Windows nicht verwenden kann.
    Es werden aber trotzdem die die richtigen Werte vom VESA-Bios der Grafikkarte geholt, auch mit Emulation.

    Dirk



  • Das dürfte aber nur in 32-bit-Windows gehen, weil 16-bit-Programme unter Windows x64 garnicht erst laufen.



  • Mr X schrieb:

    Das dürfte aber nur in 32-bit-Windows gehen,

    Und auch mit einem 16 Bit Windows.

    weil 16-bit-Programme unter Windows x64 garnicht erst laufen.

    Ja stimmt, unter dem 64 Bit-Mode kann man keinen 16 Bit-Anwendungen ausführen lassen.

    Dirk


Log in to reply