; AlphagenCD UniversalBootScript Ver4.08 (11/6/01) Karl Frederick ©2001 MagicBox Inc.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; $VER: S-S_LD hwg.device CDROM AUTODETECT CODE! V4.08 (6.NOV.2001)
; Startup-Sequence for low-density floppies

SET AGCD32 1
ASSIGN >NIL: EXISTS ALPHAGENCD:
IF  WARN
    :C/LoadV43Module >nil:  :C/HWGATAPIFastStart REBOOT
    SET AGCD32 0
ENDIF

:C/ActivateHWGATAPI
:c/SetPatch QUIET

:C/Makedir RAM:T RAM:ENV RAM:ENV/SYS >NIL:
Resident >NIL: :c/Assign PURE
Resident >NIL: :c/Copy PURE
Resident >NIL: :c/Execute PURE
Resident >NIL: :c/Eval PURE
Resident >NIL: :c/WAIT PURE
Assign >NIL: ENV: RAM:ENV
Assign >NIL: T: RAM:T


SET CDAttempt 22
SET WorkAttempt 5
SET VolumeDetect 1
SET HardDrive -1
SET LoopVolumeDetect 1
SET VolumeDetect 1
Alias Clear "Echo *"*E[0;0H*E[J*" "
Alias Say   "Echo"  ; Debugging Tool, rename occurances of ;SAY to SAY

ECHO

LAB WaitForVolume
    ;SAY "SkipBack=" $LoopVolumeDetect

ASSIGN >NIL: EXISTS Workbench:

  IF NOT WARN
    ;Work partition detected
    SET HardDrive 1

  ELSE          
    ;
    ;Did NOT find LoopVolumeDetect.  Try again up to 5 seconds.
    WAIT  1 SEC
    SET   LoopVolumeDetect  `EVAL $LoopVolumeDetect + 1`
    IF $LoopVolumeDetect GE $WorkAttempt VAL
      ;SAY  "ERROR!  Could NOT find HardDrive."
      UNSET LoopVolumeDetect
      SET HardDrive 0
      ;QUIT 5
    ENDIF
    IF VAL $HardDrive EQ -1
       ;SAY "Skipping Back now, HardDrive EQUALS -1"
       SKIP BACK WaitForVolume
    ENDIF
  ENDIF

;SAY "Past Hard Drive Detection code."

FAILAT 21   ;Keep Mount Command from Halting Script.

ASSIGN >NIL: EXISTS AlphagenCD:

  IF WARN
    IF $HardDrive EQ 1
       :C/MOUNT >NIL: CD0: from :Devs/MountListHD
    ELSE
       :C/MOUNT >NIL: CD0: from :Devs/MountList
    ENDIF
    :C/DISKCHANGE  CD0:

  ENDIF

IF $HardDrive EQ 1
       :C/ASSIGN envarc: workbench:Prefs/Env-Archive ;NVRAM points to HD
				   ;*** VERY IMPORTANT FOR IMAGE CAPTURE
ENDIF

  ;;;;;Get AlphagenCD: Ready;;;;;;;;;;;;;;;;;;;;;;;;

  SET VolumeDetect 1
  LAB  WaitForAlphagenCD
 ;SAY "SkipBack=" $VolumeDetect

  ASSIGN >NIL: EXISTS AlphagenCD:
  IF WARN
    ;Did NOT find AlphagenCD mounted.  Try again up to 20 seconds.
    WAIT  1 SEC
    SET VolumeDetect  `EVAL $VolumeDetect + 1`

    IF $VolumeDetect EQ `EVAL $CDAttempt / 2` VAL
       C:DISKCHANGE CD0:
       ;SAY "Attempting 2nd DISKCHANGE"
    ENDIF

    IF VAL $VolumeDetect GE $CDAttempt VAL
      ECHO " CLEAR DISPLAY SCREEN "
      CLEAR
      Echo "  "
      Echo "   Could Not find AlphagenCD:"
      ask  "    ENTER for diagnostics>_"
      UNSET VolumeDetect
      EXECUTE :S/CDROMHELP
      QUIT 5  ;WARN error code  -- Execute User Help message here...
    ENDIF
    SKIP BACK WaitForAlphagenCD
  ENDIF
  UNSET VolumeDetect
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;;;NVRAM Setup for Alphagen;;;;;;;;;;;;;;;;;;;;;;;;
IF $AGCD32 VAL EQ 0
   :c/Loadresource >nil: :libs/nonvolatile.library lock
ENDIF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


cd AlphaGenCD:

:c/AddBuffers >Nil: DF0: 50
FailAt 21
assign >nil: sys: AlphaGenCD:
assign >nil: c: sys:c
assign >nil: s: sys:s
assign >nil: l: sys:l
assign >nil: devs: sys:devs
assign >nil: libs: sys:libs
assign >nil: fonts: sys:fonts
Assign >NIL: LOCALE: SYS:Locale
:C/Copy >NIL: ENVARC: RAM:ENV ALL NOREQ
:c/copy >nil: c:version ram: NOREQ

;;
SET FreeFast `avail FAST`   ;;;; ADDED TO MOVE ROM TO FASTRAM ON 68030 CPU W/ MMU
			    ;;;; 11/06/01 KJF
IF $FreeFast GT 3355443 VAL
  ; >3.2MB of FAST RAM, so move ROM to FastROM
  :C/CPU FASTROM >NIL:
ENDIF
;;

IF $AGCD32 VAL EQ 0
   :c/LoadResource >nil: libs:lowlevel.library lock
ENDIF

if EXISTS sys:IR_Exec
   copy >nil: sys:IR_Exec ram: noreq
   assign AGIR: sys:AGIR
endif

STACK 40000

path ram: c: sys:
:C/IPrefs
:checkdf0
if EXISTS ram:df0_update
   cd df0:
   Alphagen
else
   cd :
   Alphagen
endif
ECHO ""
ECHO "  SYSTEM REBOOT IMMINENT!"
WAIT 5
ECHO "   "
:C/REBOOT
endcli >nil:

