; proDAD
; $VER: pOS_Install 1.0 (07.08.1997) (Copyright by proDAD, All Rights Reserved)
; V1.1 (07.08.1997) angepaßte Version, die bei Fast-Ram-Mangel nach Rückfrage weiter installiert

(if (<> @language "english")
  (if (<> @language "deutsch")
    (set @language "deutsch")
  )
)


;=============================================================================
; Deutsche Texte  (default)

(if (= @language "deutsch")
(
  (set #welcome               (cat "\n\nWillkommen zum Installationsprogramm für p.OS.\n\n"
                                   "Für die vollständige Installation von p.OS benötigen Sie 4 MByte freies Ram und 16 MByte freien Festplattenspeicher. Außerdem muß ein 68020 Prozessor (oder besser) vorhanden sein.\n\n"
                                   "Installation fortsetzen ?"))

  (set #abort_version         (cat "p.OS Prerelease benötigt mindestens das\nAmigaOS OS 2.04 (V37)\noder größer.\n\n\nINSTALLATION WIRD ABGEBROCHEN"))
  (set #abort_cpu             (cat "p.OS benötigt mindestens einen\n68020 Prozessor oder besser.\n(Vorhanden ist nur ein %s)\n\n\nINSTALLATION WIRD ABGEBROCHEN"))
  (set #abort_memory          (cat "p.OS benötigt mindestens\n4 MByte freien Hauptspeicher.\n(Vorhanden sind nur %ld MBytes)\n\n\nINSTALLATION WIRD ABGEBROCHEN"))
  (set #warn_memory           (cat "\np.OS benötigt mindestens\n4 MByte freien Hauptspeicher.\n(Vorhanden sind nur %ld MBytes)\n\n\nSoll die Installation trotzdem fortgesetzt werden ?"))
  (set #memchoise1            (cat "Installation fortsetzen"))
  (set #memchoise2            (cat "Installation abbrechen"))
  (set #abort_diskname        (cat "\nLaufwerk\n\"%s\"\nist nicht gültig !!!\n\n\nINSTALLATION WIRD ABGEBROCHEN"))
  (set #abort_diskspace       (cat "\nDas ausgewählte Laufwerk\n\"%s\"\nkann kein vollständiges p.OS aufnehmen !!!\n(Nur noch %ld kByte frei.)\n\n\nINSTALLATION WIRD ABGEBROCHEN"))

  (set #needinstalcd          (cat "\nBenötige die Installations-CD\n\"%s\"\nin einem Laufwerk,\num mit der Installation fortfahren zu können."))
  (set #needinstalcdhelp      (cat "Ohne die Installations-CD kann p.OS nicht installiert werden!\n\n" @askdisk-help))

  (set #selectdrawer          (cat ("Bitte wählen Sie das LAUFWERK aus, in dem p.OS installiert werden soll.")))
  (set #selectdrawerhelp      (cat "Wählen Sie das LAUFWERK aus, in dem p.OS installiert werden soll.\n"
                                   "Es muß sich um ein Hauptverzeichnis handeln!\n"
                                   "Es wird automatisch eine Schublade \"pOS\" erzeugt.\nBereits bestehende Daten bleiben unverändert erhalten und werden NICHT gelöscht.\n\n"
                                   @askdir-help))
  (set #startinstall          (cat "\n\nDas pOS-Verzeichnis \"%s\"\nwird jetzt erstellt und die Daten werden dorthin installiert ..."))
  (set #assignedpos           (cat "\n\nAssign \"pOS:\" wird in die \"User-Startup\"-Datei eingetragen."))

  (set #reqchoices1           (cat "Weiter"))
  (set #reqchoices2           (cat "Diesen Teil überspringen"))

  (set #checksystem           (cat "\nEs wird nun geprüft, ob Programme installiert sind, die im Parallelbetrieb mit p.OS zu Schwierigkeiten führen können. Diese Programme werden nach Rückfrage automatisch deaktiviert."))
  (set #checksystemhelp       (cat "" @askbool-help))
  (set #checksystemworking    (cat "Das Programm \"Check System\"\nwird aktiviert."))

  (set #mountamigavol         (cat "\nSie können festlegen, welche Amiga-Laufwerke auch unter p.OS eingesetzt werden sollen. Diese Laufwerke müssen Sie im nächsten Fenster abhaken."))
  (set #mountamigavolhelp     (cat "" @askbool-help))
  (set #mountamigavolworking  (cat "Das Programm \"MountAmigaVol\"\nwird aktiviert."))

  (set #startparameter        (cat "\nNachfolgend können Sie einige Parameter zu Ihrem System einstellen. "
                                   "Vor allem der Bildschirmmodus und der Zeichensatz sollten entsprechend der vorhandenen Hardware "
                                   "(ESC, AGA, Grafikkarte) angepaßt werden.\n\nZusätzlich wird ein Icon zum Start von p.OS eingerichtet."))
  (set #startparameterhelp    (cat "" @askbool-help))
  (set #startparameterworking (cat "Das Programm \"StartParameter\"\nwird aktiviert."))

  (set #activate              (cat "\nEs existieren verschiedene Möglichkeiten zur Aktivierung von p.OS.\nBitte wählen Sie die gewünschte Art aus."))
  (set #activatehelp          (cat "" @askchoice-help))
  (set #activatechoices0      (cat "Start-Icon auf die Amiga-Workbench auslagern"))
  (set #activatechoices1      (cat "Automatisch mit dem Amiga starten"))
  (set #activatechoices2      (cat "p.OS von Hand aus dem pOS-Verzeichnis starten"))
  (set #activate0work         (cat "\nStart-Icon für p.OS wird ausgelagert\n..."))
  (set #activate2work         (cat "\nStart-Icon für p.OS wird in die WBStartup-Schublade der Amiga-Workbench kopiert\n..."))

  (set #complete              (cat "Installation abgeschlossen!\n\p.OS finden Sie nun in Ihrer Schublade \"%s\".\n\n"))
)
)


;=============================================================================
; Englische Texte

(if (= @language "english")
(

  (set #welcome               (cat "\n\nWelcome to the p.OS installation.\n\n"
                                   "For a complete installation you will need at least 4 MByte free "
                                   "memory and 16 MByte free disk space. In addition a 68020 "
                                   "cpu (or better) is required.\n\n"
                                   "Continue installation ?"))

  (set #abort_version         (cat "This p.OS prerelease needs the\n"
                                   "AmigaOS 2.04 (V37) or greater.\n\n\n"
                                   "ABORT INSTALLATION"))
  (set #abort_cpu             (cat "p.OS needs at least a 68020 cpu.\n"
                                   "(%s found)\n\n\n"
                                   "ABORT INSTALLATION"))
  (set #abort_memory          (cat "p.OS needs 4 MByte memory.\n"
                                   "(%ld MByte memory found)\n\n\n"
                                   "ABORT INSTALLATION"))
  (set #warn_memory           (cat "\np.OS needs 4 MByte memory.\n"
                                   "(%ld MByte memory found)\n\n\n"
                                   "Continue with installation ?"))
  (set #memchoise1            (cat "Continue Install"))
  (set #memchoise2            (cat "Abort Install"))
  (set #abort_diskname        (cat "Drive\n"
                                   "\"%s\"\n"
                                   "is invalid !!!\n\n\n"
                                   "ABORT INSTALLATION"))
  (set #abort_diskspace       (cat "\nThere is not enough free space\n"
                                   "for a complete p.OS installation on drive\n"
                                   "\"%s\" !!!\n\n\n"
                                   "(Only %ld kByte free.)\n\n\n"
                                   "ABORT INSTALLATION"))

  (set #needinstalcd          (cat "Need the installation CD\n"
                                   "\"%s\"\n"
                                   "to continue with the installation process."))
  (set #needinstalcdhelp      (cat "p.OS cannot be installed without the installation CD !\n\n" @askdisk-help))

  (set #selectdrawer          (cat "Please choose the DRIVE for the p.OS installation."))

  (set #selectdrawerhelp      (cat "Please choose a DRIVE for the p.OS installation.\n"
                                   "A root directory is needed !\n"
                                   "A drawer \"pOS\" will be created automatically.\n"
                                   "Old data will remain unchanged. Nothing will be deleted.\n\n" @askdir-help))

  (set #startinstall          (cat "\n\nCreate drawer \"%s\" and\n"
                                   "install all data there..."))

  (set #assignedpos           (cat "\n\nInsert assign \"pOS:\" into the \"User-Startup\" file."))

  (set #reqchoices1           (cat "Continue"))
  (set #reqchoices2           (cat "Skip this part."))

  (set #checksystem           (cat "\nChecking for installed tools, which can make trouble, if they run together with p.OS. "
                                   "These tools will be deactivated automatically after a confirmation request." ))
  (set #checksystemhelp       (cat "" @askbool-help))
  (set #checksystemworking    (cat "Tool \"CheckSystem\" is now active."))

  (set #mountamigavol         (cat "\nYou can choose some Amiga drives for use in p.OS. "
                                   "Please select these drives in the next window." ))

  (set #mountamigavolhelp     (cat "" @askbool-help))
  (set #mountamigavolworking  (cat "Tool \"MountAmigaVol\" is now active."))

  (set #startparameter        (cat "Now you can set some system options. "
                                   "Please choose the screen mode and font according to your hardware "
                                   "(ESC, AGA or graphics card).\n\n"
                                   "A p.OS start icon will also be created."))
  (set #startparameterhelp    (cat "" @askbool-help))
  (set #startparameterworking (cat "Tool \"StartParameter\" is now active."))

  (set #activate              (cat "There are different possibilities to start p.OS.\n"
                                   "Please choose your most prefered method."))
  (set #activatehelp          (cat "" @askchoice-help))
  (set #activatechoices0      (cat "A start icon on Amiga Workbench"))
  (set #activatechoices1      (cat "Start automatically with Amiga system"))
  (set #activatechoices2      (cat "Start p.OS from its drawer by hand"))
  (set #activate0work         (cat "\nLeave out the p.OS start icon\n..."))
  (set #activate2work         (cat "\nCopy the p.OS start icon into the WBStartup drawer\n..."))
  (set #complete              (cat "Installation complete !\n"
                                   "You can find p.OS at the \"%s\" drawer.\n\n\n"))
)
)



;=============================================================================

;-----------------------------------------------------------------------------
; hier die Vorbelegungen:

  (set @default-dest "Work:")
  (set #Installdisk "p.OS-PreRelease:")
  (set #NEED_HDmem 16400)     ; freier Festplattenspeicher
  (set @execute-dir "p.OS-PreRelease:install")  ; Verzeichnis bei Aufruf von externen Programmen

  (complete 0)


;-----------------------------------------------------------------------------
; Begrüßung ausgeben

  (user 2) ; immer als Experte installieren
  (message #welcome)


;-----------------------------------------------------------------------------
; Versionsnummer des AmigaOS überprüfen

  (set #OS_Version (/ (getversion "libs:version.library") 65536))
  (if (= #OS_Version 0) (set #OS_Version (/ (getversion "exec.library" (resident)) 65536)))
  (if (< #OS_Version 37) (abort #abort_version))


;-----------------------------------------------------------------------------
; Korrekte CPU überprüfen

  (set #Cpu (database "cpu"))
(debug "CPU: " #Cpu)
  (if (< #Cpu "68020") (abort (#abort_cpu #Cpu)))


;-----------------------------------------------------------------------------
; Genug freies Fast-Ram überprüfen

  (set #Mem (database "total-mem"))
  (set #GfxMem (database "graphics-mem"))
(debug "Memory: " (- #Mem #GfxMem))
;  (if (< (- #Mem #GfxMem) 4200000) (abort (#abort_memory  (/(- #Mem #GfxMem)1048576))))

  (if (< (- #Mem #GfxMem) 4000000)
      (if (askbool
          (prompt (#warn_memory  (/(- #Mem #GfxMem)1048576)))
          (help #warn_memoryhelp)
          (default 0)
          (choices #memchoise1 #memchoise2)
          )
        (
          (working "")  ; Continue installation
        )
        (
          (exit (quiet))   ; Installation abort
        )
      )
  )


;-----------------------------------------------------------------------------
; Installations-Diskette muß in einem Laufwerk liegen
;(debug "Punkt-A2 (Installdisk verlangen)")

(debug "Install-CD: " (substr #Installdisk 0 (- (strlen #Installdisk) 1)))
  (askdisk
    (prompt (#needinstalcd #Installdisk))
    (help #needinstalcdhelp)
    (dest (substr #Installdisk 0 (- (strlen #Installdisk) 1)))
  )
  (working)

  (complete 5)


; ======================== pOS ======================================


;-----------------------------------------------------------------------------
; prüfen ob Zielverzeichnis existiert, sonst Verzeichnisauswahl vornehmen

  (set #pos-volume
    (askdir
      (prompt #selectdrawer)
      (help #selectdrawerhelp)
      (default @default-dest)
      (disk)
    )
  )
  (set #pos-volume (cat (getdevice #pos-volume) ":"))  ; Doppelpunkt vom Laufwerksname geht verloren
(debug "Zielverzeichnis: " #pos-volume)


;-----------------------------------------------------------------------------
; existiert jetzt das Ziel-Verzeichnis nicht, wird die Installation
; abgebrochen

  (if (< (exists #pos-volume (noreq)) 2) (abort (#abort_diskname #pos-volume)))


;-----------------------------------------------------------------------------
; prüfen, ob genug Platz für die Installation vorhanden ist

  (set #diskmem (/ (getdiskspace #pos-volume) 1024))  ;in kByte umrechnen
(debug "diskspace: " #diskmem " benötigt wird: " #NEED_HDmem)
  (if (< #diskmem #NEED_HDmem) (abort (#abort_diskspace #pos-volume #diskmem)))


;-----------------------------------------------------------------------------
; dann das pOS-Verzeichnis erstellen und die gewünschten Daten kopieren

  (set @default-dest (tackon #pos-volume "pOS"))
  (message (#startinstall @default-dest))

  (makedir @default-dest (infos))


  (copyfiles
    (source (tackon #Installdisk "pOS/"))
    (dest @default-dest)
    (pattern "#?")
  )
  (complete 50)


;-----------------------------------------------------------------------------
; jetzt noch den Assign für pOS setzen und ...

  (makeassign "pOS" #pos-volume)

  (user 0)
  (startup @app-name
    (command (cat " Assign pOS: " #pos-volume))
    (prompt #assignedpos)
    (help @startup-help)
  )
  (user 2)
  (complete 60)


;-----------------------------------------------------------------------------
; ... und die Systemcheck-Programme aufrufen

  (if (askbool
        (prompt #checksystem)
        (help #checksystemhelp)
        (default 1)
        (choices #reqchoices1 #reqchoices2)
      )
      (
        (working #checksystemworking)
        (run ("CheckSystem %s" @language) )
(debug "Returncode von CheckSystem: " @ioerr)
      )
  )
  (complete 70)



  (if (askbool
        (prompt #mountamigavol)
        (help #mountamigavolhelp)
        (default 1)
        (choices #reqchoices1 #reqchoices2)
      )
      (
        (working #mountamigavolworking)
        (run ("MountAmigaVol %s" @language) )
(debug "Returncode von MountAmigaVol: " @ioerr)
      )
  )
  (complete 80)


  (if (askbool
        (prompt #startparameter)
        (help #startparameterhelp)
        (default 1)
        (choices #reqchoices1 #reqchoices2)
      )
      (
        (working #startparameterworking)
        (run ("StartParameter %s" @language) )
(debug "Returncode von StartParameter: " @ioerr)
      )
  )
  (complete 90)


;-----------------------------------------------------------------------------
; auf Wunsch pOS automatisch beim Amiga-Start mit aktivieren
; oder auf die Amiga-Workbench auslagern


  (set auswahl
    (askchoice
      (prompt #activate)
      (help #activatehelp)
      (default 0)
      (choices #activatechoices0 #activatechoices1 #activatechoices2)
    )
  )

  (if (= auswahl 0)
    (
      (working #activate0work)

      ; existiert die backdrop-Datei noch nicht, erst eine leere anlegen
      (if (= (exists (tackon #pos-volume ".backdrop") (noreq)) 0)
          (textfile (append "") (dest (tackon #pos-volume ".backdrop")))
      )

      (textfile
        (include (tackon #pos-volume ".backdrop"))
        (append ":Start p.OS")
        (dest (tackon #pos-volume ".backdrop"))
      )
    )
  )
  (if (= auswahl 1)
    (
      (working #activate1work)

      (copyfiles
        (source #pos-volume)
        (dest "SYS:WBStartup")
        (pattern "Start p.OS(%|.info)")
      )
    )
  )
  ;auswahl=2 => keine Änderung notwendig


;-----------------------------------------------------------------------------
; Fertig

(if (= @language "english")
(
  (copyfiles
    (source (tackon #Installdisk "english/"))
    (dest @default-dest)
    (pattern "#?")
  )
)
)

  (working)

  (complete 100)

  (user 2)
  (message (#complete @default-dest))

;  (run "Reboot")

;=============================================================================

