# DOSBox

DOSBox ist ein freier Emulator für die Spieleplattform „MS-DOS“ bzw. „DOS-PC“. Technisch ist DOSBox daher ein x86-Emulator, der PC-kompatibles DOS und die in dessen Ära gebräuchliche Hardware nachbildet. Ziel ist das Ausführen älterer, DOS-basierter Computerspiele, die auf modernen Computersystemen nicht mehr nativ laufen bzw. nicht mehr damit kompatibel sind. Auch zahlreiche weitere DOS-basierte Software, etwa Anwendungsprogramme, funktioniert mit DOSBox. Sog. „PC Booter“ werden ebenfalls unterstützt.

## Funktionen

Im Gegensatz zur mitgelieferten Virtual DOS Machine bei Windows-Betriebssystemen oder zu Emulatoren wie DOSEMU unter Linux emuliert DOSBox nicht nur die Hardware-Umgebung eines IBM-PC-kompatiblen Computers, sondern auch den Prozessor und das Betriebssystem DOS. Das erlaubt eine bessere Kontrolle über den Ablauf des emulierten Programms. Als Emulator ist die Software außerdem in der Lage, auch auf Computern mit unterschiedlicher Prozessorarchitektur sowie auf inkompatiblen PCs eine weitgehend zu MS-DOS/​PC DOS kompatible Umgebung zu schaffen. Zwar kann ein echtes DOS-Betriebssystem (wie z. B. MS-DOS, PC DOS oder DR-DOS) innerhalb von DOSBox ausgeführt werden, notwendig ist das jedoch selten.
Auch Erweiterungsspeicher (EMS) und besondere EXE-Ladeprogramme (etwa bei dem Spiel Jazz Jackrabbit) werden ab Version 0.61 unterstützt. Zudem ist DOSBox portabel oder mobil, das heißt, es ist keine Installation in das bestehende Betriebssystem nötig, da DOSBox lediglich über eine einfache Textdatei konfiguriert wird.
Die DOSBox-Entwickler haben hauptsächlich das Emulieren einer Plattform für ältere Computerspiele im Sinn, die unter Win32-Betriebssystemen entweder gar nicht oder nur fehlerhaft ausgeführt werden können. DOSBox ermöglicht aufgrund der vollständigen Emulation eines x86-Prozessors das Ausführen von DOS-Anwendungen auch unter den 64-Bit-Versionen von Windows, die selbst keine Unterstützung für 16-Bit-Software mehr anbieten. So können auch 16-Bit-Windows-Anwendungen ausgeführt werden, wenn Windows 3.x innerhalb von DOSBox installiert wurde.
Da DOSBox Simple DirectMedia Layer (SDL) verwendet, ist es vergleichsweise einfach, es auf andere Betriebssysteme oder Rechnerarchitekturen zu portieren.

## Einschränkungen
### Geschwindigkeit

DOSBox benötigt eine hohe Rechenleistung, um das emulierte System in der originalen Geschwindigkeit nachzubilden. Abhängig von der eingesetzten Software sind leistungsstärkere Prozessoren als Pentium oder 80486 erforderlich, um ursprünglich für die Intel-80486- oder Intel-Pentium-Familie geschriebene Programme flüssig ablaufen zu lassen.
Für die x86-Architektur (spezifisch für 32-Bit-x86 „IA-32“ bzw. „i386“ und für 64-Bit-x86 „x64“ bzw. „x86-64“ oder „amd64“) sowie für die Arm-Architektur existiert ein dynamischer Übersetzer (englisch Dynamic Recompilation) oder auch JIT-Compiler, wodurch der emulierte CPU-Kern von DOSBox den Programmcode direkt vom Prozessor des Hosts ausführen lässt, statt die einzelnen Befehle in Software nachzubilden. Dadurch wird auf diesen Prozessorarchitekturen die Ausführungsgeschwindigkeit innerhalb der emulierten DOS-Umgebung erhöht.
Eine weitere Möglichkeit zur teilweise drastischen Beschleunigung von Protected-Mode-Software ist das Ersetzen des häufig verwendeten DOS/4GW Protected Mode Memory Extenders durch das kompaktere und schnellere Open-Source-Derivat DOS/32A.

### Parallele Schnittstelle

In der offiziellen Version von DOSBox fehlt eine Unterstützung der parallelen Schnittstelle, die von den meisten älteren Druckern und auch manchen Steuergeräten in der produzierenden Industrie verwendet wird. Mittlerweile existiert eine inoffizielle DOSBox-Version, die die Unterstützung der parallelen Schnittstelle beinhaltet.

### Zeichensatz

Die Zeichensätze von eingehängten Partitionen auf Dateisystem-Ebene werden durch den Emulator nicht in den DOS-Zeichensatz übersetzt (siehe auch FAT – ohne Unicode-Unterstützung). Das führt dazu, dass Dateien und Ordner (z. B. mit deutschen Umlauten im Namen, die auf NTFS-Partitionen gespeichert sind) im Emulator nicht immer korrekt dargestellt werden und somit derartige Dateien (wie z. B. Bibliotheken) auch nicht von den in DOSBox ausgeführten Programmen verwendet werden können.

## Emulierte Systemeigenschaften und -Funktionen

* BIOS und (je nach Grafikstandard) EGA- oder VGA-Grafik-BIOS
* x86-Prozessor im Real Mode (16-Bit) und Protected Mode (16- und 32-Bit)
* PC-kompatibles DOS mit Dateisystem (FAT) und Kommandozeileninterpreter (COMMAND.COM)
* Arbeitsspeicher: Konventioneller Speicher, UMBs, HMA, erweiterter Speicher nach XMS- und EMS-Spezifikation sowie über INT 15; der emulierte EMS-Speicher ist Real-Mode-kompatibel, anders als beim Einsatz von EMM386.EXE auf einem echten DOS-System.
* Eingabegeräte Tastatur, Maus und Gameport-Joystick
* Grafikkartenstandards Hercules, CGA, EGA, VGA, VESA und Tandy (siehe dazu auch TRS-80); auf dem Host kann das Bild im Fenster oder als Vollbild sowie unterschiedlich skaliert ausgegeben werden.
* Audioausgabe per Systemlautsprecher, AdLib, Creative Music System/Game Blaster, Sound Blaster 1.x/​2.0/​Pro/​16, Gravis Ultrasound, MPU-401, Disney Sound Source und Tandy; die Klänge werden letztlich alle an die normale Tonausgabe des Hosts geleitet.
* IPX-Netzwerk (getunnelt über UDP/IP)
* Modem bzw. Nullmodem-Kabel (über LAN oder Internet)
* Serielle Schnittstelle
* CD-ROM-Laufwerk
* Diskettenlaufwerk
* Virtuelle Festplattenlaufwerke

## Benutzeroberflächen für DOSBox

DOSBox bietet für die Konfiguration keinerlei grafische Benutzeroberfläche, sondern lediglich eine vom Benutzer zu bearbeitende Textdatei. Obwohl diese mit Hinweisen zur Konfiguration versehen ist, sind weniger versierte Anwender damit oftmals überfordert. Einige Programmierer haben hier Abhilfe geschaffen, indem sie eine grafische Oberfläche (Frontend) als externes Programm nachgeliefert haben.
Auch für erfahrene Benutzer können solche Frontends interessant sein, weil damit einige Arbeitsschritte unnötig werden. Ein Beispiel dafür ist das Erstellen von individuellen Konfigurationen für verschiedene Spiele.
Inzwischen ist die Mehrzahl der Frontends für die meisten Betriebssysteme erhältlich. Sie werden auch direkt auf der offiziellen Website von DOSBox beworben.

## Entwicklerversionen und Erweiterungen

DOSBox wird von den Entwicklern in englischer Sprache (als Voreinstellung) ausgeliefert. Neben Deutsch sind noch weitere Sprachen verfügbar, welche als Sprachmodule von der DOSBox-Webseite (zu finden unter „Translations“) heruntergeladen werden können.
Neben der offiziellen Version von DOSBox gibt es noch zahlreiche Erweiterungen (in Form von Quelltext-Patches), die fehlende Systemfunktionen als Emulation nachrüsten oder bestehende verbessern. Auch finden sich zahlreiche Portierungen auf nicht vom offiziellen DOSBox-Entwicklerteam unterstützte Betriebssysteme und Plattformen.
Diese Erweiterungen beziehen sich in den meisten Fällen auf eine Entwicklerversion (SVN-Version) des Projekts und sind damit auf dem aktuellen Stand der Weiterentwicklung durch die DOSBox-Entwickler. Es gibt jedoch auch verbesserte Versionen, deren Entwicklung vom betreffenden Autor eingestellt wurde und die damit nicht mehr aktuell sind. Auch ist es nicht immer eindeutig, welche Qualität die zusätzlichen Programmteile aufweisen und ganz allgemein, ob sie aus einer vertrauenswürdigen Quelle stammen.
Einige Beispiele für Erweiterungen sind:
* NE2000-Netzwerkschnittstelle
* parallele Schnittstelle
* 3dfx Voodoo Graphics Emulation
* Portierungen auf Betriebssysteme:
** IRIX
** OS/2
** Palm OS
** QNX
* Portierungen auf Plattformen:
** Dreamcast
** GP2X
** Nintendo Wii
** Nintendo Switch
** Pandora
** PlayStation Portable
** Microsoft Pocket PC
** Android
** Xbox 360
** Xbox
Mit diversen zusätzlichen Emulationen wird DOSBox zu einer annähernd vollwertigen virtuellen Maschine für DOS-basierte Betriebssysteme – beispielsweise ist es mittels spezieller Erweiterungen sogar möglich, Windows 95 innerhalb von DOSBox auszuführen. Da jedoch eine vollständige Emulation niemals die Intention der DOSBox-Entwickler war, werden diese Erweiterungen vermutlich nie in den offiziellen Entwicklerzweig aufgenommen werden.

### Palm OS

Am 23. September 2006 schrieb die englische Palm-Infoseite TamsPalm über die Alpha-Version eines neuen x86-Emulators für Palm OS. Entwickelt wurde sie vom Emuboards.com-Forenmitglied voda, der bereits andere Emulatoren auf die Palm-OS-Plattform portiert hatte. Unter anderem wurden QBasic, Microsoft Word 5.5 und DOS Shell erfolgreich getestet. Während die Maus über den Touchscreen des PDAs gesteuert werden konnte, gab es keine Möglichkeit zur Texteingabe. Somit konnte man mit dieser Version die erste direkte x86-Emulation unter Palm OS präsentieren; eine produktive Nutzung war jedoch kaum möglich.
Anfang 2008 stellte der deutsche Softwareentwickler Henk Jonas eine erweiterte Version der PalmDosBox vor. Wichtigste Neuerung war, dass nun die eingebaute Tastatur von Treo-Telefonen zur Eingabe genutzt werden konnte; für andere Geräte stand eine Bildschirmtastatur zur Verfügung. Auch diese aktuelle Version kann nicht als stabil angesehen werden, da sie auf manchen Geräten nur sporadisch funktioniert.
Eine weitere Besonderheit bei der Emulation auf Palm-OS-Geräten besteht darin, dass neuere Modelle nur sehr wenig dynamischen Speicher haben und die Emulatoren oft nicht ausgeführt werden können. Programme wie UDMH (Unlimited Dynamic Memory Hack) oder das Open-Source-Tool MMH (More Heap Hack) geben auf Kosten des restlichen Datenspeichers mehr dynamischen Speicher frei und ermöglichen so das Ausführen speicherintensiver Anwendungen.

### Wine

Die Entwickler der Windows-kompatiblen Laufzeitumgebung Wine begannen bei Version 1.3.12 mit der Integration von DOSBox in Wine.

### DOSBox-X

DOSBox-X ist eine Abspaltung, die besonderen Wert auf eine möglichst akkurate Emulation von Hardware legt. Hierbei wird angestrebt, sämtliche Hardware-Konstellationen der DOS-Ära abzudecken, um damit u. a. eine Testplattform für Programmierer zu bieten. Ferner ist geplant, DOSBox-X als Grundlage für die Windowsversionen 3.x, 95, 98 und ME nutzen zu können, wobei auch Beschleunigungsmechanismen implementiert werden sollen.

## Verwendung

Um DOS-basierte Software wie Spiele unter neueren Betriebssystemen lauffähig zu machen, wird DOSBox von Digitaldistributoren mit der Software mitgebündelt. So werden beispielsweise bei Steam und GOG.com ältere Spiele mittels DOSBox ausgeführt, wobei jedoch nicht immer die neueste Version des Emulators beiliegt.
Seit dem 23. Dezember 2014 verwendet das Internet Archive eine Emscripten-konvertierte DOSBox-Version für Browser-basierte Präsentation von Tausenden archivierter DOS-Computerspiele, ausschließlich für „Schul- und Forschungszwecke“.