DOS Programmierung unter nicht Dos System (Emulatorenfrage)

  • Hallo!
    Ich weiß jetzt nicht, ob das hier im richtigen Bereich steht, aber ich habe mal folgendes Problem:


    Ich würde gerne ein Programm kreieren, das (mit den verschiedenen Versionen) auf möglichst vielen verschiedenen Systemen läuft.
    Dabei möchte ich allerdings nicht nur den Text Modus bedienen, sondern auch gern ein wenig Bildscrolling etc. machen.
    Anfangen wollte ich mit DOS, da ich aber noch an meinem Dos-Rechner werkel, wollte ich wissen, ob es einen Emulator gibt (und ich meine NICHT DosBox, das wird nicht funktionieren), mit dem man auf ein voll funktionales DOS-System zugriff hat. Die meisten Emulatoren von alten System funktionieren leider nur mit Win98 aufwärts, oder sind für Linux oder emulieren DOS nicht komplett. Ich bräuchte einen für Windows 7/8.


    Hat da jemand eine Lösung?


    Viele Grüße!

  • Moin :D


    wenn du jetz Dinge wie direkten Hardwarezugriff und Programmierung in Assembler (z.B. Prozessorregister usw.) meinst, dann wird das ausserhalb eines "richtigen" DOS-Rechners schwierig.
    Bestenfalls wohl noch ne Virtuelle Maschine (wie VMWare), wo zumindest ein echtes DOS installiert wird. :tasskaff


    Was den Code an sich angeht, so kannst du es so programmieren, dass es zu vielen Plattformen kompatibel ist. Fuer Pascal gibt es mit der Free Pascal IDE einen Compiler, mit dem man ein geschriebenes Programm fuer eine Vielzahl von Plattformen kompilieren kann. :Banana

  • Genau. Registerzugriffe und ähnliches hatte ich im Extremfall gemeint ;)
    Ich versuche erst einmal Assembler zu vermeiden und es auf der C bzw. C++ Ebene zu lassen (bin kein Freund von Pascal ^^) aber wäre natürlich schön ein bisschen Assemblerzugriffe in die C Umgebung einzpflegen, der Performance wegen ;)
    Ich hatte es mal mit DOS und Oracles VM Station versucht, allerdings läuft die 1. ziemlich unstabil bei mir (hatte auch schon Probleme, bei anspruchsvolleren Linuxsachen) und zum anderen ist die eigentlich nicht für DOS ausgelegt.
    Im Moment programmiere ich deshalb in DOSBox und ich muss dann gucken, sobald Probleme auftreten (im Moment läuft es noch ganz gut, habe aber auch noch nicht viel gemacht, nur getestet, ob der Graphicmodus funktioniert und ein paar Pixel gezeichnet ^^)


    Wie ich das mit dem Portablen mache, da bin ich mir noch nicht ganz sicher... werde es erstmal in ANSI C schreiben oder vielleicht in C++ (nutze Borland C++) und es vielleicht später für die neueren Systeme in eine portablere(wahrscheinlich objektorientierte) Sprache konvertieren.

  • Bochs - Der Emuliert die Hardware komplett...

    Von allen Dingen auf Erden ist die Intelligenz am gerechtesten verteilt: Jeder glaubt, er hätte genug davon.

  • Unter Linux gabs mal dosemu, habe ich früher gerne mit gearbeitet. Aber ob das noch gepflegt wird... :unno


    Dosenwares Vorschlag ist sicher eine gute Wahl.


  • Die meisten Emulatoren von alten System funktionieren leider nur mit Win98 aufwärts, oder sind für Linux oder emulieren DOS nicht komplett. Ich bräuchte einen für Windows 7/8.


    Das war bei mir einer der Hauptgründe, warum ich einen kleinen DOS-Rechner suchte, der auch noch auf meinem normalen Schreibtisch einen Platz findet.
    Unter DOSBox schmierten mir regelmäßig die Borland Entwicklungsumgeungen ab (programmiere Hauptsächlich in Pascal und manchmal in C++ oder TASM) oder nach einem Testlauf des Programms war plötzlich die Maus weg etc. Auch funktionieren direkte Hardwarezugriffe, z.B. das Lesen einzelner Sektoren, nicht.
    Mittlerweile würde ich mir eher schnell ein "On the fly" System mit alter Hardware zusammenstecken. Mainboard+Netzteil, eine kline VGA und dann eine CF-Karte (oder SD) als Festplatte, um schnell zwischen einzelnen Systemen wechseln und das eigene Programm unter verschiedenen Bedingungen testen zu können. Auch kann man dann auch immer einfach und schnell ein Backup auf seinen aktuellen Rechner packen.


    Bochs - Der Emuliert die Hardware komplett...


    Bochs kenne ich noch gar nicht. Den werde ich mir auch mal angucken. :)

    Meine DOS-Rechner:

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR 24 und SB 16 ( CT2770 ) + TNDY

    "Frankenstein" Pentium II mit 266 MHz, Elsa Winner 1000 TrioV + Voodoo I, SB 16 (CT2290) + Yamaha DB50XG


    Von mir geschriebene DOS-Programme gibt es hier.

  • Am besten arbeitet und testet man mit DOS-Programmen auch auf einem richtigen DOS-Rechner ;)


    Manchmal werden in der elektronischen Bucht so kompakte Desktop-PCs auf Basis von Sockel 7 und Intel 430TX/VX/... Chipsaetzen angeboten. Die sind kaum groesser als ne Pizzaschachtel. Mit platzsparendem TFT koennte sowas doch fast in jeder Ecke Platz finden


    Bochs kenne ich auch noch nicht. Klingt interessant. Frueher habe ich viele Pascal Programme und meine Borland Pascal 7 IDE unter Windows 2000 laufen gehabt. Das ging eig. ganz gut, selbst Assembler (TASM) Programme liefen unter Windows 2000 im Vollbild. Was ich festgestellt habe, ist, dass Inline-Assembler Anweisungen in BP7 unter einem NT-Windows nicht funktionieren.


    Was man auch noch bedenken sollte, ist der Aufwand sich mit dem Emulator an sich zu beschaeftigen und fuer die eigenen Anforderungen passend zu konfigurieren. Ehe ich mich stundenlang damit befasst habe, wie ich was einstellen muss, hab ich auch schneller den Schraubenzieher in der Hand und ein paar Platinen rausgesucht :super:Banana

  • Welche Art von software schreibst du?
    Wenn du nicht sehr exotische Sachen, die zyklenexakt sein sollen, "fertigst", dann ist das vielleicht etwas übertrieben. Ganze Spiele laufen unter Dosbox, also sollte es für Ottonormalsoftware nicht ganz so große Probleme geben.


    Würde, wenn nötig, auch eher auf authentische hardware verweisen - einfacher insgesamt.

  • Unter Linux gabs mal dosemu, habe ich früher gerne mit gearbeitet. Aber ob das noch gepflegt wird... :unno


    Dosenwares Vorschlag ist sicher eine gute Wahl.

    Möchte das mal gerade festhalten und kapern. Ich bin auch gerade aufgrund des Linux Spielekiste Projekts mit dosemu dran, habe das aber wieder verworfen, weil so ziemlich gar nichts richtig läuft. Wie hast Du das mit DPMI gemacht? Das läuft hier nur mit CPU-Emulation und die ist grottenlangsam oder es geht gar nicht. Nativ 1:1 Code geht nur bei Programmen/Spiele ohne DPMI. Manches nur mit SDL in Kombination. Spiele, die nur DOS RAM und Framebuffer brauchen laufen eigtl. alle. Naja mit vielleicht 5 getestet. Ob mit der richtigen Frequenz muss ich noch testen, als Referenz hatte ich da immer Jim Power Parallax Scrolling Titlescreen, aber das will noch nicht.
    Wobei mir gerade Pinball Dreams/Illusions einfällt, das hat kein DPMI IIRC und läuft auch nicht.


    On topic daher:
    Glaube dosemu auf Linux ist keine gute Umgebung, um selbstgebauten Code zu probieren.
    Denke mal DOSBOX wird am unkompliziertesten sein, wie genau dieser die Register etc. umsetzt müssen andere weiterhelfen. Bochs kenne ich noch nicht, war mir zu kompliziert bis jetzt. Wenn das aber so hardwarenah ist wie "versprochen" bzw. gesagt, dann sollte das die 1. Wahl sein.

  • Meine Erfahrung mit dosemu liegt fast zwanzig Jahre(!) zurück. DOSbox existierte da noch nicht. :D Habe das damals bei der Umstellung eines DOS-basierten Bibliotheksnetzwerkes eingesetzt. Die Bibliothekssoftware lief da ohne irgendwelche Probleme. Spiele haben wir darauf allerdings nicht getestet.

  • Schon etwas alt... aber :D DosBox basiert in teilen auf Bochs und emuliert auch nur soviel wie nötig... natürlich kann man nicht alles exakt emulieren und auf
    viele technische details wird auch wegen Speed verzichtet (Ram interleaving, Cache interleaving, emulation Tag Ram, und tausend andere Dinge..)
    Letzten Ende ist es wichtig, dass die Software drin läuft, welche man zum laufen bringen möchte.


    In erster Linie setzt man sich dann zum Vorwand :
    - Alles muss drin laufen
    - Original HW hab ich noch nicht
    - Eigentlich hab ich garkeinen plan was ich überhaupt coden will


    Ergo erstmal wissen was man machen will, dann kann man über Abstraktion philosophieren,
    Aber ohne genaue Vorstellung die Eierlegendewollmilchsau von nem dosEmu erwarten ist irgendwie der falsche Ansatz.
    CrossPlattform Entwicklung ist immer ein Kompromiss - ihr wisst schon, das Ding wo nicht alles geht :D selbst auf nativer Hardware. Je mehr HW man unterstützen will, desto weniger Möglichkeiten bleiben am Ende übrig.
    Deshalb erst genau überlegen was laufen MUSS.
    Ich empfehle aber wie die Vorredner, ein günstiges System anzuschaffen und dann erstmal zu schauen was man damit anfangen kann/will/darf/muss, bevor man portiert.

    [ SUCHTLISTE ] [ WD-40 ]

    :bump:Face:bump

    C:\>format c: /y_
    ____________________________________________

    8|

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!