16 Bit DOS Programme erstellen
-
Die 16bit Variante des DJGPP ist aber sehr instabil und unterstützt viele Dinge nicht (32 bit integer, float, double).
Ist also völlig inaktzeptabel. Steht alles hier: http://www.delorie.com/djgpp/[ Dieser Beitrag wurde am 04.08.2002 um 01:38 Uhr von DrZoidberg editiert. ]
-
quake 1, 2 oder 3?
-
@DrZoiberg
Das Problem ist nur, dass er unbedingt einen 16Bit Compiler haben will und da ist der djgpp 16Bit wahrscheinlich das beste, wenn er ein aktueller gcc Port ist.
-
Mit dem Watcom-C Compiler oder Digital Mars sollte man problemlos 16-Bit-DOS Programme erstellen können.
-
@Kiamur: Die Header-Datei <string.h> des Borland-Compilers enthält nur Funktionen für Char-Array-Strings - sollte übrigens jeder Compiler so halten. Die std::strings findest du in der Header-Datei <string> von neueren C++-Compilern. Ich würde dir raten den Borland-Compiler zu nehmen und dir irgendwo eine "Standard C++ Libary" zu holen.
Trotzdem wirst du kaum Dinge wie Templates oder Schlüsselwörter wie mutable in solchen Compilern vorfinden.
MfG SideWinder
-
@Side:
ich bezweifle, dass der Borland C++ von 1991 namespaces kenntNaja, ich wuerde wie mady den Digital Mars empfehlen!
-
Der Borland C++ Compiler ist imho kompatibel zur AT&T Sprachbeschreibung Nr.2.
Dh. eigentlich ist es C mit Klassen (C with Classes, wie C++ am Anfang genannt wurde).
Keine Namespaces, Templates (also auch keine std::strings), Fehlerbehandlung uvm.
-
Original erstellt von kingruedi:
**@DrZoibergDas Problem ist nur, dass er unbedingt einen 16Bit Compiler haben will und da ist der djgpp 16Bit wahrscheinlich das beste, wenn er ein aktueller gcc Port ist.**
nein, er will einen Compiler, der Dos Programme erstellt, damit er sie in der Autoexec.bat ausführen kann. 32bit ist also völlig in Ordnung.
-
Das Problem ist nur, dass wenn die autoexec beim start abgearbeitet ist, ist windows noch nicht gestartet -> keine 32 bit
-
Ich glaube du verwechselst 32bit mit Windows.
Es gibt 16bit Dos Programme, 32bit Dos Programme, 16bit Windows Programme(Win 3.1) und 32bit Windows Programme.
Ein 32bit Dos Programm kann man problemlos von der Autoexec.bat aus starten.
-
32bit-DOS-Programme? Von denen hab ich noch nie gehört...sicher, dass es ein DOS gibt, welches 32bit-Speicheradressierung unterstützt?
MfG SideWinder
-
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.