# WHDLoad

WHDLoad is a software package for the Amiga platform to make installation of software to a hard disk easier, for such things as demos or games. Allowing for better compatibility for Amiga software, which can sometimes have hardware incompatibilities making them hard to use in emulated environments due to the widely varying hardware specifications of the Amiga product line across its history. WHDLoad basically circumvents the operating system in the Amiga for greater compatibility and preserves the original program environment.
WHDLoad makes it possible to autostart an installed floppy disk image by clicking an icon.
Two special parts are required, each one specially written for the client program: To install media, it must be read from the original disk and written to an image file on the hard drive by the "Imager". Then the installed program can be run from a virtual disk drive with the "Slave" interface.

## Slave interface

The "Slave" interface allows interaction between the program and WHDLoad, and co-ordinates the reading and writing of files. This makes it possible to run or emulate programs that are traditionally incompatible with common emulators such as WinFellow, or WinUAE. WHDLoad can be easier to use than trying to figure out the exact configuration for the aforementioned emulators as well.

## History

The primary reason for this loader is that a large number of computer games for the Amiga don't properly interact with the AmigaOS operating system, but instead run directly on the Amiga hardware, making assumptions about specific control registers, memory locations, etc. The hardware of newer Amiga models had been greatly revised, causing these assumptions to break when trying to run the same games on newer hardware, and vice versa with newer games on older hardware. WHDLoad provides a way to install such games on an AmigaOS-compatible hard drive and run on newer hardware. An added benefit is the avoidance of loading times and disk swaps, because everything the game needs is stored on the hard drive.
The first public release of WHDLoad was on September 5, 1996, and the latest available version is 18.8 released in May 2022.

## Features

WHDLoad takes over the entire operating system which may cause problems with some software (e.g. TCP/IP stack), but quitting the game or demo restores the system back into its normal working state.
WHDLoad games are stored on the AmigaOS file system as disk images, relying on driver files known as "WHDLoad slaves" to work. These slave files are freely available from the Internet (as Freeware), but the games themselves have to be acquired separately, to prevent software piracy. Additionally, many fans have made their own freeware games, which are also freely, and legally, available.

### How WHDLoad works

The WHDLoad "Slave" interface is integrated into the OS in such way that one can double-click a program icon to run the program at any time. When the user executes the program, by clicking a stored image icon, the AmigaOS operating system loads the WHDLoad executable and starts it. Then the loader checks the software and hardware environment, loads and checks the Slave interface required for that chosen demo or game and allocates required memory for the installed program. If the Preload feature is enabled into the requester page of WHDLoad, then the program attempts to load disk images and files into RAM (insofar as free memory is available).
At this point WHDLoad performs its main task of switching off the AmigaOS operating system, disables multitasking and interrupts, and copies memory regions which are used by AmigaOS and required by the installed program to an unused place until the AmigaOS is needed again.
WHDLoad also degrades the graphics hardware to OCS on original Amiga machines (this function actually can work also on emulated Amigas, but only on newer versions of WinUAE which recognizes WHDLoad and preserves its interrupts), then WHDLoad initializes all hardware with defined values and jumps into the Slave interface required for the program in question.
The Slave interface loads the main executable of the installed program by calling a WHDLoad function (resload_DiskLoad or resload_LoadFile), then patches the main executable (so that the loaded program will be capable of loading its data stored into the hard disk via the Slave, in order to fix compatibility problems, and to enable an exit from the program) and calls the main executable.
At this point, the program that has been installed can perform the task for which it has been written, loading its data as it would from a real floppy disk.
Users can break the execution of the loaded program by way of a "Quit" key (usually F10). When this action is performed, then the Slave interface returns to WHDLoad by calling a resload_Abort internal function.
The OS will be restored with all hardware registers and original display. The memory and all allocated resources are left free for any further usage.

## Requirements

A standard Amiga 1200 or Amiga 600 without any extra memory, will only work with a limited number of games. Which usually means games using OCS/ECS and one floppy disk. It is recommended to install either a 4 MB or 8 MB RAM Board in the trapdoor slot to ensure compatibility for 99% of the games.
A harddisk is required, the number of games that can be installed depend on the size of the harddisk.