FAILAT 21
C:SetPatch QUIET
C:ClickNot

IF NOT EXISTS DH0: >NIL:
   ECHO "No DH0:!"
   QUIT
ENDIF

C:MakeDir RAM:ENV RAM:T >NIL:
C:Assign ENV: RAM:ENV >NIL:
C:Assign T: RAM:T >NIL:
CD DH0:

IF EXISTS DH0:S/Startup-Sequence
   IF EXISTS DH0:L
      C:Assign L: DH0:L ADD
   ENDIF
   IF EXISTS DH0:Libs
      C:Assign LIBS: DH0:Libs ADD
   ENDIF
   IF EXISTS DH0:Fonts
      C:Assign FONTS: DH0:Fonts ADD
   ENDIF
   IF EXISTS DH0:Devs
      C:Assign DEVS: DH0:Devs
      IF EXISTS DH0:Devs/Keymaps
         C:Assign KEYMAPS: DH0:Devs/Keymaps
      ENDIF
   ENDIF
   IF EXISTS DH0:C
      PATH DH0:C ADD 
      C:Assign C: DH0:C ADD
   ENDIF
   C:Assign S: DH0:S ADD
   C:Assign SYS: DH0:
   C:Execute DH0:S/Startup-Sequence
   QUIT
ENDIF

C:Assign EXISTS RASystem: >NIL:
IF NOT WARN
   C:Execute S:KSCopy

   IF NOT EXISTS WHDLoad:L/WHDLoad.key
      IF EXISTS RASystem:WHDLoad.key
         C:Copy RASystem:WHDLoad.key WHDLoad:L/
      ENDIF
   ENDIF

   IF EXISTS RASystem:WHDLoad.prefs
      C:Copy RASystem:WHDLoad.prefs WHDLoad:S/
   ENDIF
ENDIF



Devs:Monitors/NTSC
Devs:Monitors/PAL

IF EXISTS DH0:load
   C:Execute DH0:load
ELSE
   C:List #?.slav#? QUICK NOHEAD TO ENV:SLAVE
   IF "$SLAVE" EQ ""
      C:List #?.info QUICK NOHEAD TO ENV:INFO
      C:List #? DIRS QUICK NOHEAD TO ENV:SLAVEDIR
      IF "$INFO" EQ ""
         CD "$SLAVEDIR" >NIL:
         C:List #? DIRS QUICK NOHEAD TO ENV:SLAVEDIR
      ENDIF

      C:List #?.slav#? QUICK NOHEAD TO ENV:SLAVE
      IF "$SLAVE" EQ ""
         IF NOT "$SLAVEDIR" EQ ""
            CD "$SLAVEDIR" >NIL:
            IF EXISTS "$SLAVEDIR.slave"
               SETENV SLAVE "$SLAVEDIR.slave"
            ELSE
               C:List #?.slav#? QUICK NOHEAD TO ENV:SLAVE
            ENDIF
         ENDIF
      ENDIF
   ENDIF

   SETENV WBRUN ""
   SETENV WBDIR ""
   IF NOT "$WBSEL" EQ 1
      SETENV WBSEL ""
   ENDIF

   C:Assign EXISTS WHDSaves: >NIL:
   IF WARN
      C:Assign WHDSaves: WHDLoad:WHDSaves
   ENDIF

   IF "$WBSEL" EQ 1
      C:Execute S:WBSelect
      SKIP End
   ENDIF

   C:JoyPad RED BLUE PORT 1 QUIET >NIL:
   IF WARN
      IF EXISTS ReadMe
         C:MultiView ReadMe
      ENDIF
      IF NOT "$SLAVE" EQ ""
         C:Execute S:MkCustom
      ENDIF
   ENDIF

   C:JoyPad RED PORT 1 QUIET >NIL:
   IF WARN
      SETENV WBSEL 1
      C:Execute S:WBSelect
   ELSE
      IF EXISTS DH0:custom
         SETENV CUSTOM `type DH0:custom`
      ELSE
         SETENV CUSTOM ""
         
         IF EXISTS WHDSaves:custom_$SLAVE
            SETENV CUSTOM `type WHDSaves:custom_$SLAVE`
         ENDIF
      ENDIF

      C:JoyPad BLUE PORT 1 QUIET >NIL:
      IF WARN
         ECHO "ConfigDelay=-1" >>S:WHDLoad.prefs
      ENDIF

      C:JoyPad RED PORT 0 QUIET >NIL:
      IF WARN
         ECHO "SplashDelay=150" >>S:WHDLoad.prefs
      ENDIF

      C:JoyPad BLUE PORT 0 QUIET >NIL:
      IF WARN
         ECHO "ConfigDelay=-1" >>S:WHDLoad.prefs
         ECHO "SplashDelay=-1" >>S:WHDLoad.prefs
      ENDIF

      IF "$CUSTOM" EQ ""
         IF NOT "$SLAVE" EQ ""
            C:List $SLAVE QUICK NOHEAD LFORMAT %M TO ENV:WBRUN
         ELSE
            SETENV WBRUN notfound
         ENDIF

         IF EXISTS $WBRUN.info
            C:List $WBRUN.info QUICK NOHEAD LFORMAT %M TO ENV:WBRUN
            C:WBRun "$WBRUN" SYNC
         ELSE
            IF EXISTS game.slave
               IF EXISTS data
                  C:WHDLoad Preload game.slave Data=data $CUSTOM
               ELSE
                  C:WHDLoad Preload game.slave $CUSTOM
               ENDIF
            ELSE
               IF EXISTS "Workbench31 4 MB.info"
                  SETENV WBSEL ""
                  SETENV SLAVE ""
                  C:WBRun "Workbench31 4 MB" SYNC
                  SKIP End
               ENDIF
               IF EXISTS "Workbench31_4.info"
                  SETENV WBSEL ""
                  SETENV SLAVE ""
                  C:WBRun "Workbench31_4" SYNC
                  SKIP End
               ENDIF

               IF EXISTS "$SLAVEDIR.info"
                  SETENV WBRUN $SLAVEDIR
                  C:WBRun "$WBRUN" SYNC
               ELSE
                  SETENV WBSEL 1
                  C:Execute S:WBSelect
               ENDIF
            ENDIF
         ENDIF
      ELSE
         IF EXISTS data
            C:WHDLoad Preload $SLAVE Data=data $CUSTOM
         ELSE
            C:WHDLoad Preload $SLAVE $CUSTOM
         ENDIF
      ENDIF
   ENDIF

   LAB End
   IF NOT "$WBSEL" EQ ""
      IF NOT "$WBRUN" EQ ""
         C:List $WBRUN QUICK NOHEAD LFORMAT %M TO ENV:WBREADME
         IF "$WBREADME" EQ "Readme"
            IF NOT "$SLAVE" EQ ""
               C:Execute S:MkCustom
            ENDIF
         ENDIF
      ENDIF
   ELSE
      IF EXISTS "ReadMe"
         C:MultiView ReadMe
      ENDIF
      IF NOT "$SLAVE" EQ ""
         C:Execute S:MkCustom
      ENDIF
   ENDIF
ENDIF

C:MemClear >NIL:
C:Execute S:Startup-Sequence
