DOS Programme schreiben



  • Hallo,

    wie kann man in C++ noch alte DOS Programme schreiben?
    Also auch mit Grafik modus so wie in Quake 1 oder Doom 1?
    Braucht man dafür ne Grafik bibliothek, oder welche API muss man damit ansprechen.
    "Commander Keen" läuft bei mir auch noch ohne DOS-Emulator.



  • Wenn du dir es einfach machen möchtest, die Borland und die Digital-Mars Compiler haben das Graphik-Zeug für DOS bei zur Zeit bei einigen im Netz verfügbaren Versionen dabei.

    Für die Borland Compiler sollte auch noch umfangreicher Quelltext im Netz verfügbar sein.

    Die Vorgänger der Open Watcom Compiler sollen seinerzeit oft zur Spieleprogrammierung genutzt worden sein weil die damals eine gute Speicherverwaltung erlaubten. Das war damals noch extrem wichtig - da wurden in der Config.sys und in der Autoexec.bat um jedes Bit gerungen.
    Eventuell da auch heute noch was, in der IDE kannst du unter mehreren Zeilbetriebssystemen wählen.

    Heute sollte mit externen Bibliotheken mit allen Compilern was möglich sein.
    Wie du das mit dem Speicher unter DOS hinkriegst musst du halt testen.

    So weit ein kurzer Überblick
    f.-th.



  • Das Problem waren die fehlenden Standards für die Hardware.
    Nur Bibliotheken mit umfangreichen Treibersammlungen konnten es ermöglichen höhere Grafikauflösungen zu fahren. Erst mit VESA wurde das besser, aber auch da haben sich etliche Hersteller mit Implementierungen schwer getan.
    Der oben erwähnte Watcom-Compiler, (zusammen mit DOS4GW endlich 'problemlos' den ganzen Speicher nutzend) war dann ein Meilenstein. Aber das war noch sehr viel Makefile-Hackerei und sehr umständliches debuggen.
    Andere Compilersysteme wie der DJGPP oder der MingGW zusammen mit Libraries wie z.B. Allegro wurden dann langsam komfortabler. Habe damals Allegro in die Sourcen von Heretic und Hexen eingebunden, und beide in Truecolor zum Laufen gebracht.
    Übrigens - mit dem DJGPP in DOS bestimmt 5x flüssiger als mit der nicht optimierenden Version von MSVC 6.0 unter Win98.

    Aber - wenn ich Deine Arbeiten mit der SPE so sehe - nee - das willst Du alles nicht wirklich 😉
    Wenn doch, pack ich Dir mal ein Development-Paket. Wobei Du aber einen DOS-Sandkasten unter einem modernen Windows selbst aufsetzen mußt...

    [offtopic]
    bzgl. der SPE wollte ich Dich sowieso mal anmailen, denn die würde ich gerne noch mit MSVC 6.0 unter Win98 zum Laufen bringen. Das sollte eigentlich machbar sein.



  • Danke schon mal für die Antworten 🙂

    Natürlich werde ich sachen wie mit der SPE nicht unter DOS hinbekommen.
    Aber jedesmal wenn ich "Commander Keen" wieder rauskrame kommen die Gedanken der alten QBasic Zeiten wieder raus 😃

    Und so ein kleines 2D Adventure unter DOS sieht einfach lusitg aus, wenn's gut gemacht ist. Daher wollte ich das mal mit ANSI C probieren (Oder halt C++ wenn das auch damit geht).

    [offtopic]
    Meine EMail Addresse steht auf der Homepage der SPE unter Impressum 😉
    Ich wollte das mit MSVC sowieso demnächst mal machen, aber wenn du dich darum kümmern willst, gerne =). Wenn du damit ne MSCV Dll hinbekommst, kannst du auch gerne nen Eintrag auf der Seite unter Credits haben 😉
    (allerdings habe schon ein paar Leute behauptet sie wollen etwas zur Engine beitragen und hab nichts mehr von denen gehört.)
    [/offtopic]

    mfg Lukas



  • VC6 kann aber kein DOS-Programm entwickeln.

    Der letzte 16bit Compiler/Linker war MSVC 1.52c!



  • Martin Richter schrieb:

    VC6 kann aber kein DOS-Programm entwickeln.

    Der letzte 16bit Compiler/Linker war MSVC 1.52c!

    denke, das brauchst du bitsy nicht zu sagen 😉



  • #define for if (0) {} else for
    Sowas hätt's beim DJGPP und DOS nicht gegeben...

    huhu elise 😉



  • vielleicht solltest du es mit 16bit assembler versuchen (VESA);
    über

    int 10h
    

    bekommst du graphikomodes von 256

    (mov ax,13h)
    

    (VGA) Farben bis 32k

    mov ax,4F01h
    

    (VeSA)

    ab 640X480 wird der graphicspeicher dann auf banks aufgeteilt 640X480 hat 4 Banks ,nur musst du darauf achten das der graphikspeicher pro bank maximal 0xFFFF pixel hat, der 16k und 32k modus ist etwas kompilizerter,

    man kann dann über

    byte ptr 0xA0000
    

    direkt in die graphikkarten speicher schreiben was dann direkt aufm bildschirm ausegegeb wird.


Log in to reply