IF "<Wimp$State>"="desktop" THEN Filer_Boot <Obey$Dir>
Obey <Obey$Dir>.!Boot

| Check we're on RISC OS 3.1+
IF ADFFS$OSVersion<&31000 THEN Error ADFFS requires RISC OS 3.10 or later
IF ADFFS$OSVersion>=&50000 AND ADFFS$OSVersion<&52800 THEN Error ADFFS requires RISC OS 5.28 or later

| Pre-req module requirements for ZLib on all RISC OS versions
SetEval ADFFS$CLib 1
%ADFFS:CheckCLib
IF ADFFS$CLib THEN RMEnsure SharedCLibrary 5.17 RMLoad ADFFS:3rdParty.CLib
RMEnsure SharedCLibrary 5.17 Error ADFFS requires SharedCLibrary (aka CLib) 5.17 or later
UnSet ADFFS$CLib

| Pre-req module requirements for ZLib and ADFFS on RISC OS versions below 3.7
IF ADFFS$OSVersion<&37000 THEN RMEnsure CallASWI 0.02 RMLoad ADFFS:3rdParty.CallASWI
IF ADFFS$OSVersion<&37000 THEN RMEnsure CallASWI 0.02 Error Failed to load CallASWI Module

| RMKill ZLib on RISC OS Select as it's bugged
SetEval zlib$running 0
IF ADFFS$OSVersion>=&40000 AND ADFFS$OSVersion<&50000 THEN SetEval zlib$running 1
IF zlib$running THEN RMEnsure ZLib 0.00 SetEval zlib$running 0
IF zlib$running THEN RMKill ZLib
UnSet zlib$running

| Pre-req module requirments for ADFFS
RMEnsure ZLib 0.05 RMLoad ADFFS:3rdParty.ZLib
RMEnsure ZLib 0.05 Error Failed to load ZLib module
RMEnsure ADFS 0.00 RMLoad ADFFS:ADFS
RMEnsure BootCommands 0.0 RMLoad ADFFS:3rdParty.BootCmds

X DOSMap JFD Floppy
X DOSMap ADF Floppy
X DOSMap APD Floppy

| Update VProtect if it's running
SetEval vprotect$running 1
RMEnsure VProtect 0.0 SetEval vprotect$running 0
IF vprotect$running THEN RMEnsure VProtect 5.0 RMLoad ADFFS:3rdParty.VProtect
UnSet vprotect$running

| Load USBJoystick on capable machines
SetEval ADFFS$Joystick 1
RMEnsure USBDriver 0.0 SetEval ADFFS$Joystick 0
IF ADFFS$Joystick THEN RMEnsure USBJoystick 0.21 RMLoad ADFFS:3rdParty.USBJoystick
UnSet ADFFS$Joystick

| Load AutoVIDC on IOC
IF "<ADFFS$LCDGM>"="Y" AND ADFFS$OSVersion<&35000 THEN RMEnsure AutoVIDC 2.11 RMLoad ADFFS:3rdParty.AutoVIDC

| Set our alias commands
IF <ADFFS$Overlays>=0 THEN Set Alias$ADFClipScreen ADFDoNothing %%*0
IF <ADFFS$Overlays>=0 THEN Set Alias$ADFScreenBorders ADFDoNothing %%*0
SetMacro Alias$StoreCSD Set ADFFS$CSD X|MX DIR @|MX StoreCSD2|MIF "|<ADFFS$CSD>"="X" THEN Set ADFFS$CSD *|<FileSwitch$CurrentFilingSystem>
Set Alias$StoreCSD2 SetEval ADFFS$CSD "|<FileSwitch$CurrentFilingSystem>:"+(FileSwitch$|<FileSwitch$CurrentFilingSystem>$CSD)
Set Alias$RestoreCSD IF ("|<ADFFS$CSD>" LEFT 1)="*" THEN DO |<ADFFS$CSD> ELSE Dir |<ADFFS$CSD>

| Load the file system which isn't going to return
Obey -c ADFFS:!Loader %*0