HDDRIVER modules are a new concept introduced with HDDRIVER 11. Modules resemble programs for the AUTO folder but when booting are launched before HDDRIVER.SYS.
In particular to give HDDRIVER access to new hardware interfaces the respective SCSI Drivers have to be launched before HDDRIVER. Only then HDDRIVER has access to the buses managed by these drivers. The AUTO folder is not the right location for these extensions. Here HDDRIVER modules come into play: They are executed even before HDDRIVER.SYS is launched.
A module does not necessarily have to be a SCSI Driver. A keyboard driver, which adds support for a third-party keyboard, is another example. In this case selecting the boot drive by pressing a key on this keyboard would be possible, which would not be the case when launching the keyboard driver after HDDRIVER.
HDDRIVER modules are very similar to programs for the AUTO folder. They can be implemented in a way that they can also be launched as regular programs. Modules are placed in the root directory of the boot partition and are named HDDRMODn.SYS, with n being a digit from 0-9. This digit determines the execution order. After launching the last module HDDRIVER.SYS is executed. Modules cannot access hard disk drives because HDDRIVER has not yet been loaded at the time of module execution.
Whether modules are executed when booting, and whether they run in ST-RAM or TT-RAM, is configured with HDDRUTIL.
Detailed information on HDDRIVER modules and sample code is available on GitHub.
This is a sample module, which after displaying a message simply waits for a key to be pressed, before the boot process continues.
On the SCSI Driver page you can download other modules, namely the SCSI Driver for Linux NF_SCSI and the SCSI Driver monitor SCSI_MON.
There are also USB drivers for MiNT and USB drivers for Lightning VME and Lightning ST as HDDRIVER modules.
HDDRIVER modules can also be created with the stripex tool for MiNT.