16 Bit DOS Programme erstellen



  • Wie ? Du hast noch nie was von Doom, quake1, duke nukem 3d und Tomb Raider 1 gehört ? Sind alles 32bit Spiele und trotzdem Dos Programme.

    Das Dos Betriebssystem muss keine 32bit unterstützen. Da ein Dos Programm vollen Zugriff auf die Hardware hat, kann es machen was es will, also auch in den 32bit Modus schalten.

    Der normale DJGPP Compiler kann nur 32bit Dos Programme erstellen(steht auch auf deren Website).



  • Hmm, da hast du offenbar recht.

    MfG SideWinder



  • Ähm ... Hallo Leute !

    Wie ich sehe, habe ich ja endlich mal ein zum Diskutieren anregendes Thema in dieses Board gestellt.

    Doch leider bin ich jetzt ganz schön durcheinander, gerade, was die letzten Beiträge betrifft.

    Wenn man also auch 32Bit Programme unter DOS ausführen kann, warum hat das dann bei mir nicht funktioniert ?
    Und warum funktionieren Programme, die ich mit dem Turbo C++ Compiler(16Bit) von Borland erstellt habe ?
    Also für mich sieht es klipp und klar so aus, dass unter DOS NUR 16 Bit kompilierte Programme laufen.

    Wenn es doch auch anders geht, dann hätte ich mir ja die Mühe umsonst gemacht mein schon komplett fertiges 32Bit Programm nochmal komplett neu zu schreiben, und das mit einer Entwicklungsumgebung, und Klassenbibliothek, die nicht so komfortabel ist.

    MFG Kiamur 😕



  • Es gibt aber einen Unterschied zwischen 32bit-DOS und 32bit-Windows. Da liegen zwei verschiedene Betriebssysteme vor - wer führt auch Win-Code unter Unix aus. 32bit heißt ja grundsätzlich nur, wieviel Speicher man direkt adressieren kann.

    MfG SideWinder



  • Wenn man also auch 32Bit Programme unter DOS ausführen kann, warum hat das dann bei mir nicht funktioniert ?

    Weil Du keinen DosExtender benutzt hast. Stichwort: DPMI
    (http://www.dosextender.com/)

    Also für mich sieht es klipp und klar so aus, dass unter DOS NUR 16 Bit kompilierte Programme laufen.

    Falsch... Mit DOS-Extender geht's ...

    32bit heißt ja grundsätzlich nur, wieviel Speicher man direkt adressieren kann.

    Falsch ... 32 Bit bedeutet auch, dass der 32-Bit Befehlssatz des Rechners ausgenutzt wird ...



  • Original erstellt von <quaker>:
    quake 1, 2 oder 3? 😃

    Überleg mal welches in DOS lief! Als Quaker müsstes du das wissen....



  • Original erstellt von Kiamur:

    Wenn man also auch 32Bit Programme unter DOS ausführen kann, warum hat das dann bei mir nicht funktioniert ?

    Weil das wahrscheinlich ein Windows Programm war und keines für Dos.
    Ob ein Programm für Windows oder Dos ist hat nichts damit zu tun ob es 16 oder 32 bit ist.

    Und warum funktionieren Programme, die ich mit dem Turbo C++ Compiler(16Bit) von Borland erstellt habe ?

    Weil das ein Dos Compiler ist, der Dos Programme erzeugt.

    Also für mich sieht es klipp und klar so aus, dass unter DOS NUR 16 Bit kompilierte Programme laufen.

    Und wieso läuft Doom dann unter Dos ? Das wurde 32bit kompiliert.

    Wenn es doch auch anders geht, dann hätte ich mir ja die Mühe umsonst gemacht mein schon komplett fertiges 32Bit Programm nochmal komplett neu zu schreiben, und das mit einer Entwicklungsumgebung, und Klassenbibliothek, die nicht so komfortabel ist.

    Ich nehme mal an, dass du dein Programm erst für Windows geschrieben hast. Dann war das neu schreiben nicht umsonst, denn unter Dos kannst du keine Windows Funktionen benutzen, egal wieviel bit dein Programm hat.

    [ Dieser Beitrag wurde am 09.08.2002 um 23:43 Uhr von DrZoidberg editiert. ]



  • @ DrZoidberg

    Für mich ist ein Windows-Programm eins, wofür ich die Windows API, oder MFC, oder sonst eine Windows-Bibliothek benutzt habe.
    Dies ist nicht der Fall !

    Ich habe für mein Programm die ganz normale aktuelle STL benutzt, da ich ja auch kein Windows-Programm geschrieben habe, sondern eins, das von vornherein nur für den Zweck bestimmt war von der Autoexec.bat aus aufgerufen zu werden, um dem Anwender einige Eingaben abzuverlangen, die dann in einer Textdatei gespeichert werden. Eine ganz einfache Geschichte also.

    So, als nächstes muss ich dir sagen, dass ich keine Ahnung habe, mit wie vielen Bits DOOM kompiliert wurde.
    Wenn du sagst, dass es mit 32Bit kompiliert wurde, dann glaube ich dir das, weil ich davon keine Ahnung habe. Mir ging es aber ursprünglich nicht darum zu wissen, mit wie vielen Bits DOOM kompiliert wurde, sondern um die Frage, ob mir hier irgendjemand einen Tip, oder sogar eine definitive Assage darüber geben kann, wie ich mein auf einem 32 Bit Compiler kompilerites, und mit einer neueren (c++)-STL (die Strings als Datentyp kennt) geschriebenes Programm am einfachsten so umstricke, dass ich es von der Autoexec.bat aus erfolgreich starten kann.

    Wenn das angeblich mit einem 32Bit Compiler funktioniert, dann wäre ich echt dankbar dafür, wenn mir jemand von euch dann einfach mal sagt, mit welchem, und ob es mit dem möglich ist eine moderne STL zu benutzen. Denn das ist alles, was ich wissen möchte.

    Ich habe ja nun schon mit dem Turbo C++ Compiler von Anno 1991 begonnen mein Programm zu schreiben, komme aber mit seiner Bibliothek nicht so richtig klar, da ich KEIN Profi bin, und schon mal froh war, dass ich mein anderes (32 Bit)-Programm mit der moderneren STL fertig hatte.

    So, ich hoffe, dass mir nun jemand eine konkrete Antwort schreiben kann, und will, und nicht solche Dinge wie "DOOM ist auch in 32 Bit kompiliert, und läuft trotzdem unter DOS". Damit kann ich nichts anfangen.

    MFG



  • Hier wurde ja schon der DJGPP erwähnt. Er basiert auf dem GCC, könnte daher eine halbwegs aktuelle STL haben.



  • @Kiamur: Es ist z.B. auch möglich ein 32bit-Unix-Programm zu erstellen. Ob es auf Windows läuft ist eine andere Frage ;).

    DJGPP ist letztlich wahrscheinlich der richtige Compiler für dich.

    MfG SideWinder


Anmelden zum Antworten