Modules are a concept introduced with HDDRIVER 11. They resemble programs for the AUTO folder but when booting are launched before HDDRIVER.SYS, i.e. before the hard disk driver.
Especially in order to give HDDRIVER access to new hardware interfaces (e.g. USB) the required SCSI Drivers have to be launched before HDDRIVER. Only then HDDRIVER has access to the new hardware during the boot process. Here modules come into play: They are executed 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 is possible, which would not be the case when launching the keyboard driver after HDDRIVER.
Modules are 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. The digits determine the execution order. After launching the last module HDDRIVER.SYS is executed. Modules cannot access hard disk partitions 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 proceeds.
There are free USB modules for MiNT and for Lightning VME and Lightning ST. With these modules HDDRIVER can access USB devices like any other device, as if USB support was directly integrated in HDDRIVER.
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.
HDDRIVER modules can also be created with the stripex tool for MiNT.