; ************************************************
; *
; * $VER: Install-ATAPI PnP v2.00 (02.11.96)
; *
; * Installation for Atapi Package v 3.01
; *
; * Copyright © 1994-96 by Georg Campana
; *
; * Special Edition for Micronik Computer Service
; *
; *    -------   G E R M A N    SCRIPT    --------
; *
; ************************************************

;/// Variabili
; ****************************
;       Variabili
; ****************************
;

(set ProductName        "ATAPI PnP"  )  ; product name
(set ProductBaseName    "Atapi PnP")                    ; product base name
(set VersionNum         "3.00 ")                     ; product version number

(set OSVersion          (/ (getversion) 65536))
(set PkgOpts           -1)    ; di default tutti

(set CPUOpts            0)    ; 0=68000,68010; 1=68020,68030,68040

(makeassign "CDPLUSPLUS" "" (safe))

(set Disk1Name                  "CDPLUSPLUS:")

(set MemSpace 1024)   ; 1K minimo di spazio necessario su disco

(set Installed 0)     ; di default non installato
(set OtherDriver 0)   ; Non ci sono altri driver

(set InstallType 0)   ; Di default

(set DevUnit     0)   ; la Unit del Device
;///

; Domande all'utente

;/// Proc AskOverwrite
(procedure AskOverwrite
;
; ********************************************
; * Chiede se sovrascrivere o meno
; ********************************************
; setta Overwrite 0 = rinominare ; 1 = abort ; 2 = sopra
 (
  (set Overwrite

                 (askchoice
                   (prompt "Dieses Piktogram existiert schon "
                           "Du kannst entscheiden :"
                   )
                   (help "Der ausgesuchte Name ist schon vorhanden\n"
                         @askchoice-help
                   )
                   (choices
                         "Vorhandene Piktogram wird CD0.old"
                         "Installation abbrechen"
                         "Einfach überschreiben"
                   )
                   (default 0)
                 )
  )
 )
)
;///

;/// Proc AskInstallType
(procedure AskInstallType
;
; ********************************************
; * Chiede che tipo di insallazione si vuole fare
; ********************************************
; setta InstallType a 0= Normale 1 = 2 drive 2 = terzo d. ...
; e DevUnit con il numero giusto
 (
    (set InstallType

           (askchoice
                (prompt "cd.device Treiber gefunden. Wählen Sie aus,was Sie installieren möchten")
                (help
                        "Hier können Sie entscheiden, ob Sie weitere Laufwerke installieren möchten\n"
                        @askchoice-help
                )
                (choices
                        "-Neue Installation (Erstes CD-Laufwerk)"
                        "-Zweites CD-Laufwerk"
                        "-Drittes CD-Laufwerk"
                        "-Viertes CD-Laufwerk"
                )
                (default 1) ; di default il secondo drive
           )
    )

    (set DevUnit InstallType)

 )
)
;///

;/// Proc IsDevPresent
(procedure IsDevPresent
;
; ********************************************
; * Controlla se il pacchetto è già presente *
; ********************************************
;
  (
   (if (<> (getversion (tackon devdest "cd.device")) 0)
       (set Installed 1)
   )
  )
)
;///

;/// Proc setPkgOPts
(procedure setPkgOpts
;
; ****************************
; * Wich Parts
; ****************************
;
  (
        (set PkgOpts
                (askoptions
                        (prompt
                           "Hier können Sie auswählen, was Sie aus dem "
                           ("Softwarepaket %s installieren wollen" ProductName)
                        )
                        (help
                                "Hier können Sie aussuchen, welche Teile (Modules) Sie vom"
                                (" Softwarepaket %s installieren wollen.\n" ProductName)
                                "\n"
                                "*** Atapi Device Driver\n"
                                "Hiermit wird der wichtige Device-Treiber"
                                " (cd.device ) ins Verzeichnis Devs: kopiert (Wichtig!!)\n"
                                "\n"
                                "*** CDplusplusFS\n"
                                "Mit dieser Option wird das spezielle Filesystem"
                                " der CD++ ins Verzeichnis L: kopiert (wird empfohlen).\n"
                                "\n"
                                "*** MAP-Mini Atapi Player\n"
                                "Mit dieser Option wird der Mini Player"
                                " für Audio-CD's ins Verzeichnis Utilities kopiert.\n"
                                "\n"
                                "*** TRKDownLoad Track-Downloader\n"
                                "Mit dieser Option wird das Program TRKDownload"
                                " (zum downloaden von CD-Spuren) nach Sys:Utilities kopiert.\n"
                                "\n"
                                "*** PlayCDXL\n"
                                "Mit dieser Option wird PlayCDXL (ein Program"
                                " zum Abspielen von CDXL Files) nach Sys:Utilities kopiert.\n"
                                "\n"
                                "*** CD_IDE\n"
                                "Hiermit wird das Preference-Programm nach Sys:Prefs kopiert.\n"
                                " Damit kann man einige Funktionen ändern.\n"
                                "\n"
                                @askoptions-help
                        )
                        (default PkgOpts)
                        (choices
                                ; bit position 0 -- todo & 1
                                ;
                                "Atapi Device Driver          (21 Kbytes)"

                                ; bit position 1 -- todo & 2
                                ;
                                "CDplusplusFS - CD Filesystem (23 Kbytes)"

                                ; bit position 2 -- todo & 4
                                ;
                                "MAP - Mini Atapi Player      (10 Kbytes)"

                                ; bit position 3 -- todo & 8
                                ;
                                "TRKDownLoad- Track DownLoader(28 Kbytes)"

                                ; bit position 4 -- todo & 16
                                ;
                                "PlayCDXL - Player für CDXL   (23 Kbytes)"

                                ; bit position 5 -- todo & 32
                                ;
                                "CD_IDE - Preferencesprogramm (8 Kbytes)"

                        )
                )
        )
  )
)
;///

;/// Proc setDirPath

(procedure setDirPath
;
; ****************************
; * Ask the user for a directory name.
; ****************************
;
; these variables must be defined before calling this procedure:
;    DirPath
;
; this procedure returns the selected directory in DirPath
;
   (

       (set DirPath
               (askdir
                       (prompt ("Wo soll das Softwarepaket installiert werden\n (Ihre BOOT-Disk. Normalerweise SYS:)")

                       )
                       (help   "Atapi Plug'n Play wird in das ausgewählte Verzeichnis"
                               " installiert.\n"
                               "Falls Sie es auf eine Diskette installieren möchten,"
                               " dann legen Sie diese in ein Laufwerk und wählen Sie"
                               " es in der Liste aus.\n"
                               "\n"
                               @askdir-help
                       )
                       (disk)
                       (default "SYS:")
               )
       )



   )
)
;///

;/// Proc AskFsIcon
;
;
(procedure AskFsIcon
;
; This procedure ask of wich cd Icon you want to install with wich Name
; It requires initialization of variables:
;
; In "DefaultIcon" ci deve essere quella accesa di default
;
; Ridà in "IconChoose" qual icona
; 0 nessuna - 1 AmiCDFilesystem
; 2 AmiCDFS - 3 CDfilesystem - 4 - AsimCDFS - 5 CDplusplusFS
;
  (
    (set IconChoose

           (askchoice
                (prompt "Wählen Sie aus, für welches CD-Filesystem Sie ein Piktogramm installieren möchten")
                (help
                        "Hier können Sie auswählen, für welches Dateisystem"
                        " Atapi Plug'n Play installiert werden soll.\n"
                        "Haben Sie schon CDplusplusFS installiert, dann wählen Sie am besten"
                        " diese Möglichkeit aus.\n"
                        "\n"
                        "Sollte Ihr CD-Filesystem nicht in der Liste"
                        " vorkommen, dann wählen Sie -Keines- aus, und"
                        " modifizieren später die Tooltypes im"
                        " Piktogramm :\n"
                        "Device wird\nDevice=cd.device\n"
                        "und Unit wird\nUnit=0\n\n"
                        @askchoice-help
                )
                (choices
                        "-Keines"
                        "-AmiCDFileSystem - by Nicola Salmoria"
                        "-CDRom-Handler   - by Frank Munkert"
                        "-CDFileSystem    - by CBM Commodore"
                        "-AsimCDFS        - by AsimWare"
                        "-QDriveFileSystem- by Amiga Tech."
                        "-CDPlusPlusFS    - by CD++"
                )
                (default DefaultIcon)
           )
    )
  )
)
;///

;/// Proc GetDevName
;
;  in DevName si ritrova il nome da usare per l'icona
;


(procedure GetDevName

   (
     (set DevName
           (askstring
                     (prompt "Schreiben Sie hier den Namen für das installierte CD-Laufwerk ohne den Doppelpunkt rein\nz.B. CD0")
                     (help
                             "Der ausgewählte Name wird der"
                             "  Name des Devices\n"
                             "Es ist ratsam, keinen langen Namen"
                             " auszuwählen\n"
                             "\nAm besten CD0 oder CD1 usw."
                             " weil viele Programme diesen"
                             " Namen suchen\n"
                     )
                     (default DevName)
           )
     )
   )
)
;///

;/// Proc AskAutoMount
;
;
(procedure AskAutoMount
;
; Chiede se l'icona deve essere inserita nel devs Dosdrivers o nel
; storage dosdrivers
;
  (
    (set AutoMount

           (askbool
                (prompt "Möchten Sie, daß das Laufwerk bei jedem Computerstart"
                        " automatisch angeschaltet wird (Mount),"
                        " statt jedesmal manuell per-Mauseklick?"
                )
                (help
                        "Wenn ja, dann wird das Piktogramm"
                        " des Devices in das Verzeichnis:\n"
                        "Devs:Dosdrivers/ kopiert\n"
                        "Bei jedem Start wird so auch automatisch das"
                        " CD-Laufwerk gestartet\n\n"
                        "Ansonsten wird es in: Storage:DosDrivers/\n"
                        " kopiert, und Sie müssen jedesmal per Hand auf das"
                        " Piktogramm klicken, um das Laufwerk zu benutzen (mounten)"
                )
                (choices
                        "Automatisch beim Start"
                        "Nein, manuell"
                )
                (default 1)
           )
    )
  )
)
;///

;/// Proc AskFSType
(procedure AskFSType
;
; ********************************************
; * Chiede che Filesystem deve usare l'icona
; ********************************************
; setta FSName con il nome diicona da usare
  (

    (set DefaultIcon 0)

    (if (= (exists (tackon fsdest "AmiCDFileSystem")) 1)
        (set DefaultIcon 1)
    )

    (if (= (exists (tackon fsdest "cdrom-handler")) 1)
        (set DefaultIcon 2)
    )

    (if (= (exists (tackon fsdest "CDFileSystem")) 1)
        (set DefaultIcon 3)
    )

    (if (= (exists (tackon fsdest "AsimCDFS")) 1)
        (set DefaultIcon 4)
    )

    (if (= (exists (tackon fsdest "QDriveFileSystem")) 1)
        (set DefaultIcon 5)
    )
    (if (= (exists (tackon fsdest "CDplusplusFS")) 1)
        (set DefaultIcon 6)
    )

    (if (IN PkgOpts 1)
        (set DefaultIcon 6)
    )

    (AskFsIcon)

    (select IconChoose
       (set FsName 0)
       (set FsName "AmiCDFS")
       (set FsName "AmiCDHandler")
       (set FsName "CbmCDFS")
       (set FsName "AsimCDFS")
       (set FsName "QDriveFileSystem")
       (set FsName "CDplusplusFS")
    )
  )
)
;///

;/// Proc SetNameDest
(procedure SetNameDest
;
; ********************************************
; * Chiede il nome del device e la sua destinazione
; ********************************************
; setta IconDest e DevName
 (

   (set AutoMount 1)

   (select DevUnit
      (set DevName "CD0")
      (set DevName "CD1")
      (set DevName "CD2")
      (set DevName "CD3")
   )

   (if (> @user-level 1)

       (if (<> IconChoose 0)
           (
            (GetDevName)
            (AskAutoMount)
           )
       )
   )

   (if (= AutoMount 1)
       (set Icondest  (tackon @default-dest "Devs"))
       (set Icondest  (tackon @default-dest "Storage"))
   )
 )
)
;///

; Azioni (copia)
;/// Proc EvalMemSize
(procedure EvalMemSize
;
; ********************************************
; * Calcola lo spazio richiesto o abortisce
; ********************************************
; richiede PkgOpts , IconChoose e DirPath settati
 (
    (if (IN PkgOpts 0)
        (set MemSpace (+ MemSpace 21000))
    )
    (if (IN PkgOpts 1)
        (set MemSpace (+ MemSpace 23000))
    )
    (if (IN PkgOpts 2)
        (set MemSpace (+ MemSpace 10000))
    )
    (if (IN PkgOpts 3)
        (set MemSpace (+ MemSpace 28000))
    )
    (if (IN PkgOpts 4)
        (set MemSpace (+ MemSpace 23000))
    )
    (if (IN PkgOpts 5)
        (set MemSpace (+ MemSpace  8000))
    )
    (if (<> IconChoose )
        (set MemSpace (+ MemSpace 1000))
    )

    (if (< (getdiskspace DirPath) MemSpace)
        (if(> (getdiskspace DirPath) 0)
           (
              (abort "ACHTUNG: Der übrige Speicherplatz\n"
                     ("auf der Platte %s\n" DirPath)
                     ("beträgt nur noch %ld Bytes\n" (getdiskspace DirPath) )
                     ("und es werden mindestens %ld benötigt\n" MemSpace)
                     "\n"
                     "Sie können nochmal auf Install klicken\n"
                     "und weniger Utilities auswählen, oder\n"
                     "unnötige Files von der Ziel-Platte\n"
                     ("%s löschen\n" DirPath)
              )
           )
        )
    )
 )
)
;///

;/// Proc InstallIcon
(procedure InstallIcon
;
; ********************************************
; * Installa l'icona con il Filesystem giusto
; ********************************************
; richiede diverse variabili settate
; IconChoose , Icondest , AutoMount , DevName , DevUnit etc
 (
    (if (> IconChoose 0)
        (
           (if (> (exists (tackon (tackon Icondest "Dosdrivers") DevName ) (noreq)) 0)
               (
                 (AskOverwrite)

                 (select Overwrite
                    (
                     (rename (tackon (tackon Icondest "Dosdrivers") DevName)
                             (cat (tackon (tackon Icondest "Dosdrivers") DevName) ".old")
                     )
                     (rename (cat (tackon (tackon Icondest "Dosdrivers") DevName) ".info")
                             (cat(cat (tackon (tackon Icondest "Dosdrivers") DevName) ".old") ".info")
                     )
                    )
                    (exit)
                    (if 0) ; Non fa niente
                 )
               )
           )

           (if (< (exists Icondest (noreq)) 2)

               (makedir Icondest
                  (prompt "Neues Verzeichnis Devs oder Storage")
                  (infos)
               )
           )

           (set Icondest  (tackon Icondest "Dosdrivers"))

           (copyfiles
               (prompt "Installiere Device-Piktogramm")
               (source (tackon Disk1Name (tackon "Devs/Storage" FsName)))
               (dest Icondest)
               (newname  DevName)
               (infos)
               (optional force)
           )

           (if (> DevUnit 0)
               (
                 (tooltype
                    (dest (tackon Icondest DevName))
                    (settooltype "UNIT" ("%ld" DevUnit))
                 )
               )
           )


           (if (= AutoMount 1)
               ( message "\n" "\n"
                      "Bei jedem Start des Computers wird\n"
                      "das CD-Laufwerk automatisch ins System\n"
                      "eingebunden!\n"
                      "\n"
                      "Sie können dieses jederzeit verändern\n"
                      ("indem Sie das Piktogramm %s vom Verzeichnis" DevName)
                      "Devs/Dosdrivers ins Verzeichnis Storage/Dosdrivers\n"
                      "verschieben\n"
               )
               ( message "\n" "\n"
                      "Sie können jederzeit das CD-ROM Laufwerk einbinden\n"
                      ("indem Sie zweimal auf %s\n" DevName)
                      "im Verzeichnis Storage/Dosdrivers klicken\n"
                      "Soll es automatisch eingebunden werden, dann\n"
                      "verschieben Sie das Piktogramm ins Verzeichnis Devs/Dosdrivers"
               )
           )


        )
        ( message "\n" "\n"
               "Es wurde kein Piktogramm für das\n"
               "CD-ROM Laufwerk ausgewählt.\n"
               "Sie müssen es sich deshalb selber kreiern!\n"
               "\n"
               "Sie können auch nochmal auf -Install- klicken\n"
               "und sich ein CD-Filesystem auswählen\n"
        )

    )
 )
)
;///


; *************************************************************************
; *                         ACTUAL START OF SCRIPT
; *
; * Ask all questions for the user now, do all of the work later.
; *************************************************************************
;
;/// MAIN SCRIPT
(onerror

)
; ****************************
;  Check for OS Version
; ****************************


(message "\n" "\n"
         "Achtung: Das hier ist die volle\n"
         "Version der Atapi PnP SE von\n\n"
         "Micronik Computer Service Leverkusen!\n\n"
         "ES IST VERBOTEN IRGENDEINE DATEI\n"
         "AUS DIESEM ARCHIV WEITERZUGEBEN\n"
         "(Die Files haben Signs)\n\n"

         "Copyright by Georg Campana ©1994-96\n\n"

         (help "Um Freunde zu registrieren rufen Sie Micronik an" )
)




; ****************************
; ****************************
;

(set DirPath "SYS:")

(setDirPath)

(set @default-dest DirPath)

(set devdest  (tackon @default-dest "Devs"))
(set fsdest   (tackon @default-dest "L"))
(set utildest (tackon @default-dest "Utilities"))
(set prefdest (tackon @default-dest "Prefs"))

(IsDevPresent)

(if (= Installed 1)
    (
      (AskInstallType)

      (select InstallType
        (set PkgOpts 0)   ; New Install (cd.device present)
        (
          (AskFSType)
          (SetNameDest)
          (InstallIcon)
          (exit)
        )
        (
          (AskFSType)
          (SetNameDest)
          (InstallIcon)
          (exit)
        )
        (
          (AskFSType)
          (SetNameDest)
          (InstallIcon)
          (exit)
        )
      )

    )
)


(setPkgOpts)

(AskFSType)

(SetNameDest)

(EvalMemSize)

; if bit position 0 is on  Installa device
(if (IN PkgOpts 0)

     (

       (if (< (exists devdest (noreq)) 2)

           (makedir devdest
              (prompt "Neues Verzeichnis -Devs-")
              (infos)
           )

           (

            (set newver (getversion (tackon Disk1Name "devs/cd.device")))
            (set oldver (getversion (tackon devdest   "cd.device")))

            (if (= newver oldver)
                (delete (tackon devdest   "cd.device"))
            )
           )

       )

       (if (< OSVersion 39)
         (
           (copylib
               (prompt "Installiere Device Driver")
               (source (tackon Disk1Name "devs/cd_a600.device"))
               (newname "cd.device")
               (dest  devdest)
               (optional force)
           )
         )

         (
           (copylib
               (prompt "Installiere Device Driver")
               (source (tackon Disk1Name "devs/cd.device"))
               (dest devdest)
               (optional force)
           )
         )
       )
     )
)


; if bit position 1 is on Installa FileSystem
(if (IN PkgOpts 1)
     (

        
        (if (< (exists fsdest (noreq)) 2)

            (makedir fsdest
               (prompt "Neues Verzeichnis -L-")
            )
        )


        (copylib
            (prompt "Installiere FileSystem von CD++")
            (source (tackon Disk1Name "l/CDplusplusFS"))
            (dest fsdest)
            (optional force)
        )
        

     )
)

; if bit position 2 is on Installa MAP
(if (IN PkgOpts 2)
     (

        
        (if (< (exists utildest (noreq)) 2)

            (makedir utildest
               (prompt "Neues Verzeichnis -Utilities-")
               (infos)
            )
        )


        (copyfiles
            (prompt "Installiere Mini Atapi Player")
            (source (tackon Disk1Name "utilities/MAP"))
            (dest utildest)
            (infos)
            (optional force)
        )
        

     )
)

; if bit position 3 is on Installa TRKDownLoad
(if (IN PkgOpts 3)
     (

        
        (if (< (exists utildest (noreq)) 2)

            (makedir utildest
               (prompt "Neues Verzeichnis -Utilities-")
               (infos)
            )
        )


        (copyfiles
            (prompt "Installiere TrkDownLoader")
            (source (tackon Disk1Name "utilities/TRKDownLoad"))
            (dest utildest)
            (infos)
            (optional force)
        )
        

     )
)

; if bit position 4 is on Installa PlayCDXL

(if (IN PkgOpts 4)
     (


        (if (< (exists utildest (noreq)) 2)

            (makedir utildest
               (prompt "Neues Verzeichnis -Utilities-")
               (infos)
            )
        )


        (copyfiles
            (prompt "Installiere PlayCDXL")
            (source (tackon Disk1Name "utilities/PlayCDXL"))
            (dest utildest)
            (infos)
            (optional force)
        )


     )
)


; if bit position 5 is on  Installa CD_IDE
(if (IN PkgOpts 5)
     (


        (if (< (exists prefdest (noreq)) 2)

            (makedir prefdest
               (prompt "Neues Verzeichnis -Prefs-")
               (infos)
            )
        )


        (copyfiles
            (prompt "Installiere CD_IDE")
            (source (tackon Disk1Name "prefs/CD_IDE"))
            (dest prefdest)
            (infos)
            (optional force)
        )


     )
)

(InstallIcon)


(exit)
;///
