# WHDLoad

WHDLoad ist ein Softwarepaket für die Amiga-Plattform, um die Installation von Software auf einer Festplatte zu vereinfachen, z. B. für Demos oder Spiele. Es ermöglicht eine bessere Kompatibilität für Amiga-Software, die aufgrund der sehr unterschiedlichen Hardware-Spezifikationen der Amiga-Produktlinie im Laufe ihrer Geschichte manchmal Hardware-Inkompatibilitäten aufweisen kann, die ihre Verwendung in emulierten Umgebungen erschweren. WHDLoad umgeht grundsätzlich das Betriebssystem im Amiga für mehr Kompatibilität und bewahrt die ursprüngliche Programmumgebung. Das Tool ermöglicht das automatische Starten eines installierten Disketten-Image durch Klicken auf ein Icon.
Es werden zwei spezielle Teile benötigt, die jeweils speziell für das Client-Programm geschrieben wurden: Um ein Medium zu installieren, muss es von der Originaldiskette gelesen und vom "Imager" in eine Image-Datei auf der Festplatte geschrieben werden. Danach kann das installierte Programm von einem virtuellen Laufwerk mit der "Slave"-Schnittstelle gestartet werden.

## Slave-Schnittstelle

Die "Slave"-Schnittstelle ermöglicht die Interaktion zwischen dem Programm und WHDLoad und koordiniert das Lesen und Schreiben von Dateien. Dadurch ist es möglich, Programme auszuführen oder zu emulieren, die mit herkömmlichen Emulatoren wie WinFellow oder WinUAE nicht kompatibel sind. WHDLoad kann die Benutzung vereinfachen, da die Arbeit, die genaue Konfiguration in den oben genannten Emulatoren herauszufinden, entfällt.

## Geschichte

Der Hauptgrund für diesen Loader ist, dass eine große Anzahl von Computerspielen für den Amiga nicht richtig mit dem AmigaOS Betriebssystem interagiert, direkt auf der Amiga-Hardware läuft und dabei spezifische Annahmen über die Register, Speicherorte etc. macht. Die Hardware der neueren Amiga-Modelle wurde jedoch stark überarbeitet, so dass diese Annahmen beim Versuch, die gleichen Spiele auf neuerer Hardware laufen zu lassen, scheiterten und umgekehrt bei neueren Spielen auf älterer Hardware. WHDLoad bietet eine Möglichkeit, solche Spiele auf einer AmigaOS-kompatiblen Festplatte zu installieren und auf neuerer Hardware zu betreiben. Ein weiterer Vorteil ist die Vermeidung von Ladezeiten und Diskettenwechseln, da alles, was das Spiel benötigt, auf der Festplatte gespeichert wird. Außerdem verschlechtern sich Disketten schneller als Festplatten, so dass die Installation von Spielen mit WHDLoad hilft, die Spiele weiter zu erhalten.
WHDLoad wurde am 5. September 1996 veröffentlicht, die neuste Version 18.8 stammt vom Mai 2022.

## Eigenschaften

WHDLoad übernimmt das gesamte Betriebssystem, was bei mancher Software (z. B. TCP/IP-Stack) zu Problemen führen kann, aber das Beenden des Spiels oder der Demo stellt das System wieder in den normalen Betriebszustand zurück.
WHDLoad-Spiele werden auf dem AmigaOS-Dateisystem als Disk-Images gespeichert, wobei auf Treiberdateien, die als „WHDLoad-Slaves“ bekannt sind, zurückgegriffen wird. Diese Slave-Dateien sind im Internet frei verfügbar (als Freeware), aber die Spiele selbst müssen separat erworben werden, um Softwarepiraterie zu verhindern. Zusätzlich haben viele Fans ihre eigenen Freeware-Spiele zur Verfügung gestellt, die ebenfalls frei und legal sind.
Eine Besonderheit der WHDLoad-Treiber ist, dass sie auch alte Passwortabfragen in Spielen entfernen, für die damals noch Codelisten oder die Original-Handbücher bereitgehalten werden mussten. Einige WHDLoad-Treiber entfernen auch echte Bugs in Spielen oder fügen neue Features hinzu, wie z. B. ein Umschalter für PAL/NTSC 50/60Hz, oder auch eine Unterstützung des zweiten Joystick-Knopfes, z. B. in Battle Squadron.

### Funktionsweise

Die WHDLoad "Slave"-Schnittstelle ist in das Betriebssystem integriert. Durch Doppelklick auf ein Programmsymbol kann das Programm jederzeit ausgeführt werden. Wenn der Benutzer das Programm ausführt, lädt das AmigaOS-Betriebssystem die ausführbare WHDLoad-Datei und startet sie. Dann überprüft der Loader die Soft- und Hardwareumgebung, lädt und prüft die für das gewählte Demo oder Spiel benötigte Slave-Schnittstelle und weist dem installierten Programm den benötigten Speicher zu. Wenn die Funktion 'Preload' in der Anfordererseite von WHDLoad aktiviert ist, versucht das Programm, Disk-Images und Dateien in den Arbeitsspeicher zu laden (sofern freier Speicherplatz vorhanden ist).
An diesem Punkt führt WHDLoad seine Hauptaufgabe aus, das Betriebssystem AmigaOS auszuschalten, Multitasking und Interrupt zu deaktivieren, und kopiert Speicherbereiche, die von AmigaOS verwendet und vom installierten Programm benötigt werden, auf einen unbenutzten Platz, bis das AmigaOS wieder benötigt wird.
WHDLoad degradiert auch die Grafikhardware zu OCS auf originalen Amiga-Rechnern (diese Funktion kann eigentlich auch auf emulierten Amigas funktionieren, aber nur in den neueren Versionen von WinUAE, die WHDLoad erkennen und seine Interrupts beibehalten), dann initialisiert WHDLoad alle Hardware mit definierten Werten und springt in die für das jeweilige Programm benötigte Slave-Schnittstelle.
Die Slave-Schnittstelle lädt das Hauptprogramm executable des installierten Programms durch Aufruf einer WHDLoad-Funktion (resload_DiskLoad oder resload_LoadFile), patcht dann das Hauptprogramm (so dass das geladene Programm in der Lage ist, seine über den Slave gespeicherten Daten auf die Festplatte zu laden, um Kompatibilitätsprobleme zu beheben und einen Exit aus dem Programm zu ermöglichen) und ruft das Hauptprogramm auf.
An diesem Punkt kann das Programm, das installiert wurde, die Aufgabe ausführen, für die es geschrieben wurde, und seine Daten wie von einer echten Diskette laden.
Der Benutzer kann die Ausführung des geladenen Programms über eine "Quit"-Taste (in der Regel F10) unterbrechen. Wenn diese Aktion ausgeführt wird, kehrt die Slave-Schnittstelle zu WHDLoad zurück, indem sie eine interne Funktion resload_Abort aufruft.
Das Betriebssystem wird mit allen Hardware-Registern und der Originalanzeige wiederhergestellt. Der Speicher und alle zugewiesenen Ressourcen bleiben für die weitere Verwendung frei.

## Anforderungen

Ein Standard Amiga 1200 oder Amiga 600 ohne zusätzlichen Speicher funktioniert nur mit einer begrenzten Anzahl von Spielen. Das bedeutet normalerweise Spiele mit OCS/ECS und einer Diskette. Es wird empfohlen, entweder eine 4 MB- oder 8 MB-RAM-Erweiterung im Trapdoor-Slot zu installieren, um die Kompatibilität für 99 % der Spiele zu gewährleisten.
Eine Festplatte ist erforderlich, die Anzahl der installierbaren Spiele hängt von deren Größe ab.