;************************************************************
;*                                                          *
;*                 EGS Installation-Script                  *
;*                                                          *
;*                                                          *
;*              Script written by G.Hagedorn                *
;*        A. Pratsch, J. Ringelberg  and F. Neumann         *
;*                       08.12.1993                         *
;*                                                          *
;*           $VER: Install-Script 2.0  (08.12.93)           *
;*                ©1993 by Ing.Büro Helfrich                *
;*                                                          *
;************************************************************

;**** To see the indenting correctly, use a Tabsize of 4.

;**** Global variables and definitons ****

(set Disk1 "Piccolo_Disk1")		;Diskname 1
(set Disk2 "Piccolo_Disk2")		;Diskname 2
(set Disk3 "Piccolo_Disk3")		;Diskname 3
(set Disk4 "TVPaintJr." )		;Diskname 4

;CPUVer     "68000" "68010" "68020" "68030" "68040"
;VideoM     "50" "60"
;InstSystem 0= Dont' Install EGS-System  1=Install EGS-System
;EGSSysDir  Path for Installation EGS-System
;Monitor    0=One Monitor 1=Two Monitors
;Direction  0=Top 1=Left 2=Right 3=Bottom
;EGSSoftDir Path for PicoPainter, Dia and TVPaintJr.
;EGSApp     Bit 0=Prefs Bit 1=Tools Bit 2=Demos Bit 3=Patterns Bit 4=AGETools Bit 5=Goodies
;EGSApp2    Bit 0=Painter Bit 1=Dia Bit 2=TVPaintJr.
;Drivers    Bit 0=Real3D Bit 1=ADPro Bit 2=Imagemaster

;**** Check Amiga for processor and videomode ****

(set CpuVer (database "cpu"))
(set VideoM (database "vblank"))

;*** First thing to do anyway - is this system at least running 2.0 ?
(if
	(< (/ (getversion) 65536) 37)
	(
	    (abort "Sie benötigen mindestens AmigaOS 2.0, um die EGS-Software installieren zu können.")
	)
)


;*** Now, let's check for the very old EGS system that resided in libs:
; If it exists, it should really be removed - otherwise it might cause lots
; of trouble for the user.
(if (= 0 (exists "EGS:" (noreq)))
	(if (exists "libs:egs.library")
	(
		(set InstSystem
			(askbool
			(prompt "Es wurde die 'egs.library' im 'LIBS:'-Verzeichnis gefunden!\n"
				"Es scheint, als wäre bereits ein altes EGS-System "
				"auf Ihrem Rechner installiert.\n\nWARNUNG: Dieses alte EGS-System wird "
				"jetzt gelöscht, um Versionskonflikten vorzubeugen.")
			(help   "In Ihrem System wurde eine (alte) 'egs.library' in 'LIBS:' gefunden. "
  	    	            "Dies kann zu Kollisionen der verschiedenen Versionen der Bibliotheken "
      	    	        "führen; es ist darum dringend anzuraten, die alten Bibliotheken zu löschen.")
			(default 1)
    	  			)
		)
		(if (= 0 InstSystem)
		(
			(message  "Die alte existierende EGS-Software wurde nicht verändert! "
				"Sie können den Installer neustarten, nachdem Sie "
				"von Ihrer EGS-Software ein Backup gemacht haben.")
			(exit (quiet))
		)
		)
		(if (= 1 InstSystem)
   		(
			(delete "libs:egs.library")
			(delete "libs:egsblit.library")
			(delete "libs:egsintui.library")
			(delete "libs:egsgfx.library")
			(delete "libs:egsrequest.library")
			(delete "libs:gbrequest.library")			;*** old name for egsrequest
			(delete "libs:egslayers.library")
			(delete "libs:egs_r3d2.library")
			(delete "libs:egsgadbox.library")
			(run "delete libs:egb all")
		)
		)
	)
	)
)


;*** now, check for the newer version of EGS with an EGS: assignment
(if (exists "EGS:" (noreq))
(
	(set oldfound 1)
	(set InstSystem
		(askbool
		(prompt "Es wurde das logische Gerät 'EGS:' in Ihrem System gefunden.\n"
				"Es scheint, als wäre bereits eine (ältere ?) EGS-Version in Ihrem System vorhanden.\n\n"
                "Wollen Sie das neue EGS-System trotzdem installieren?\n\n"
                "WARNUNG: Das bereits existierende EGS-System "
			    "(einschließlich Libraries und Voreinstellungen "
			    "in Ihrem ENVARC:-Verzeichnis) wird dabei überschrieben!")
		(help "In Ihrem System wurde ein logisches Gerät mit dem Namen 'EGS' entdeckt.\n"
                      "Das EGS-System nutzt dasselbe Gerät, so daß anzunehmen ist, "
                      "daß Sie das EGS-System eventuell bereits installiert hatten.")
		(default 1)
        	)
	)
	(if (= 0 InstSystem)
    (
		(message  "Die alte existierende EGS-Software wurde nicht verändert! "
			"Sie können den Installer neustarten, nachdem Sie "
			"von Ihrer EGS-Software ein Backup gemacht haben.")
		(exit (quiet))
	)
	)
)
; else...install for sure
	(
		(set InstSystem 1)
		(set oldfound 0)
	)
)


;*** if an EGS: assignment did exist, the user might want to backup his
;*** self-created monitor definitions and prefs first...
(if (= oldfound 1)
	(
		(set backupold
			(askbool
				(prompt "Wollen Sie, daß von den Monitor-Definitionen und "
						"Voreinstellungen Ihrer alten EGS-Installation eine "
						"Sicherheitskopie gemacht wird, bevor das neue System "
						"installiert wird ?")
				(help "Sie haben möglicherweise bei Ihrer alten EGS-Installation "
                      "selber Monitor-Definitionen erzeugt oder die Voreinstellungen "
                      "(Farben, Bildschirmmodus) verändert - da durch die neue "
                      "Installation diese alten Dateien überschrieben werden, können "
                      "Sie sich vor der Neuinstallation eine Sicherheitskopie der "
                      "alten Dateien anlegen lassen.")
                (default 1)
            )
        )
    )
    ; else...
    (set backupold 0)
)

;*** if the user is a novice, we will always make a backup of his prefs..
(if (= oldfound 1)
	(if (= @user-level 0)
		(set backupold 1)
	)
)

;*** Selection of EGS-System-drawer ***

(if (= 1 InstSystem)
(
	(set EGSSysDir
		(askdir
		(prompt "Bitte wählen Sie ein Verzeichnis, in das der "
			"EGS-System-Ordner installiert werden kann. "
			"Bedenken Sie: der Installer erzeugt darin den EGS-Ordner!")
		(help   "Hier wählen Sie das Verzeichnis, in das der EGS-System-"
			"Ordner kopiert wird. "
			"Sie müssen KEINEN neuen Ordner anlegen! Dieser wird "
			"automatisch in dem gewählten Verzeichnis unter dem Namen\n"
            "'EGS' erzeugt.\n\n"
			HELPTEXT "\n\n" @askdir-help)
		(default "WORK:")
		)
	)
)
)

(set @default-dest EGSSysDir)

;*** Ask for One or Two monitor solution ***

(set Monitor
	  (askchoice
		(prompt "Wollen Sie Ihr System auf ein oder zwei Monitore "
                        "konfigurieren?")
		(help   "EIN Monitor:\nDer Piccolo Monitor-Umschalter wird benutzt, um automatisch "
						"zwischen Amiga- und Piccolo-Grafikausgabe umzuschalten.\n\n"
						"ZWEI Monitore:\nZwei Monitore werden benutzt, einer "
						"wird mit dem Amiga-Ausgang verbunden und einer mit dem Piccolo-Ausgang. "
						"In diesem Fall können Sie mit der Maus zwischen Amiga- und "
						"Piccolo-Monitor hin- und her fahren.")
		(choices "EIN Monitor"
			 "ZWEI Monitore")
		(default 0)
          )
)

(if (= 1 MONITOR)
	(set DIRECTION
		(askchoice
		(prompt "Sie haben 'Zwei Monitore' ausgewählt. \n"
                        "Auf welcher Seite vom Amiga-Monitor aus gesehen\n"
                        "soll der Piccolo-Monitor stehen ?")
		(help   @askchoice-help)
		(choices "Oben"
			 "Links"
			 "Rechts"
			 "Unten")
		(default 1)
		)
	)
)

(set MONITORCLASS
	(askchoice
	(prompt "Bitte geben Sie den Typ des Monitors an,"
		"den Sie an die Piccolo angeschlossen haben.")
	(help   "Weiteres hierzu finden Sie im Handbuch  "
		"unter Software-Installation: Monitor-Typen.\n\n"
		HELPTEXT "\n\n" @askchoice-help)
	(choices "PAL/NTSC-Monitor (15kHz, 50/60Hz)"
		 "VGA-Monitor (31kHz, 60Hz)"
		 "MultiScan (30-38kHz)"
		 "MultiScan (30-48kHz)"
		 "MultiScan (30-57kHz)"
		 "MultiScan (30-64kHz)"
		 "MultiScan (30-76kHz)")
	(default 2)
        )
)

;*** Ask choices for application stuff ***
(set EGSApp
	(askoptions
		(prompt "Welche Programme sollen installiert werden?")
		(help   "EGS-Prefs (Voreinsteller):\n"
				"Diese Voreinsteller werden benötigt, um das EGS-"
				"System nach Ihren Wünschen zu konfigurieren.\n\n"
				"EGS-Tools (Hilfsprogramme):\n"
				"Hier finden Sie nützliche kleine Hilfsprogramme.\n\n"
				"EGS-Demos:\n"
				"Ein paar kleine Programme, die die Geschwindigkeit und "
				"die Fähigkeiten von EGS demonstrieren.\n\n"
				"EGS-Patterns: (Hintergrundgrafiken)\n"
				"Hier finden Sie Hintergrundgrafiken für Ihren "
				"EGS-Default-Screen.\n\n"
				"EGS-Age_Tools:\n"
				"Programme, die das Arbeiten mit der 'Amiga Graphics "
				"Emulation' (AGE) verbessern (PicoRetarget)\n\n"
				"EGS-Goodies:\n"
				"Diverse Programme, für die keine Dokumentation existiert "
				"oder die nicht vom Ingenieurbüro Helfrich unterstützt "
				"werden."
                "\n\n" @askoptions-help)
		(choices	"EGS-Prefs (Voreinsteller)"
 				"EGS-Tools (Hilfsprogramme)"
				"EGS-Demos"
				"EGS-Patterns (Hintergrundgrafiken)"
				"EGS-AGE_Tools (PicoRetarget)"
				"EGS-Goodies")
		(default 63)
	)
)

;*** Ask choices for Dia, Painter and TV-Paint jr. ***
(set EGSApp2
	(askoptions
		(prompt "Welche Anwenderprogramme sollen installiert werden? ")
		(help   "PicoPainter:\n"
				"PicoPainter ist ein umfangreiches Multi-Window-Malprogramm "
				"für das EGS-Window-System.\n\n"
				"Dia:\n"
				"Dia ist ein Programm zur Bildanzeige, mit dem "
				"Sie auch Präsentationen und Diashows erstellen "
				"können (ARexx erforderlich).\n\n"
				"TV-Paint Jr.:\n"
				"TV-Paint Jr. ist die kleine Version des bekannten "
				"Malprogramms TV-Paint. Zu diesem Programm "
				"braucht man eigentlich keine Worte mehr zu verlieren.\n\n")

		(choices "PicoPainter"
			 "Dia"
			 "TV-Paint Jr.")
		(default 7)

	)
)

;*** Ask which drivers should be installed ***

(set Drivers
	(askoptions
		(prompt "Welche Anzeige-Treiber wollen Sie installieren?")
		(help   "Real3D:\n"
			"Dies ist eine Funktionsbibliothek für externe Bildschirme "
			"für Real3D V2 von Realsoft.\n\n"
			"ADPro:\n"
			"Dies sind einige 'Savers' (Speichermodule) für Art Department Professional von ASDG.\n\n"
			"ImageMaster:\n"
			"Dies ist der Treiber für ImageMaster von BlackBelt-Systems (Renderland).\n\n"
			@askoptions-help)
		(choices "Real3D"
			 "ADPro"
			 "ImageMaster")
		(default 15)
	)
)

;**************** Now the installation itself begins ******************

(complete 0)

;*** Create directory for NOVICE user ***

(if (= 0 @user-level)
	(
	    (set Monitor 0)
    	(set EGSApp 63)
	    (set EGSApp2 7)
		(set EGSSysDir "WORK:")
	)
)

; *** Enough harddisk space left ??
(message "\n\nSoll jetzt mit der eigentlichen Installation begonnen werden ?\n\n"
         "Es sind dafür mindestens etwa 2 MByte für die EGS-Systemsoftware "
		 "erforderlich; für eine komplette Installation der gesamten Software "
		 "werden aber bis zu 6 MByte auf dem angegebenen Datenträger benötigt.")

(set diskfree (getdiskspace EGSSysDir))
(if (< diskfree 4000000)
	(abort "Fehler: Sie benötigen für eine minimale Installation der "
         "EGS-Software mindestens 6 MByte freien Plattenplatz. Soviel Platz "
		 "ist auf der angegebenen Festplatte/Partition aber anscheinend nicht mehr "
		 "frei.")
)


;*** create EGS top level directory
(makedir (tackon EGSSysDir "EGS")
	(confirm "expert")
    (prompt "Erzeuge EGS-Systemsoftware-Verzeichnis")
    (help "Jetzt wird das Hauptverzeichnis für die EGS-Systemsoftware angelegt. ")
)

;*** now we can make a backup copy of the old settings, if the user wishes so
;*** (the novice user always wishes it - although he doesn't know :^)

(if (= backupold 1)
	(
		;*** first, create subdirectories for the old stuff..
		(makedir (tackon EGSSysDir "EGS/bak")
			(confirm "expert")
			(prompt "Erzeuge Verzeichnisse für Backup alter Einstellungen")
			(help "Es werden jetzt unter dem EGS-Hauptverzeichnis die Verzeichnisse "
				  "'bak/envarc' und 'bak/monitors' angelegt, in denen Sicherheitskopien "
				  "Ihrer alten Monitordefinitionen und Voreinstellungen abgespeichert "
				  "werden.")
        )
        (makedir (tackon EGSSysDir "EGS/bak/envarc")
        	(prompt "Erzeuge '" (tackon EGSSysDir "EGS/bak/envarc") "'")
        )
        (makedir (tackon EGSSysDir "EGS/bak/monitors")
        	(prompt "Erzeuge '" (tackon EGSSysDir "EGS/bak/monitors") "'")
        )

		(copyfiles
            (prompt "Kopiere alte ENVARC:-Einstellungen")
            (confirm "expert")
            (source "envarc:egs")
            (dest (tackon EGSSysDir "EGS/bak/envarc"))
            (all)
            (help "In diesem Schritt wird eine Sicherheitskopie der alten "
				  "ENVARC:-Einstellungen gemacht.")
		)

		(copyfiles
            (prompt "Kopiere alte Monitor-Definitionen")
            (confirm "expert")
            (source "EGS:monitors")
            (dest (tackon EGSSysDir "EGS/bak/monitors"))
            (all)
            (help "In diesem Schritt wird eine Sicherheitskopie der alten "
				  "Monitor-Definitionen gemacht.")
		)
	)
)

;*** the following operation should be confirmed by ANY type of user, so we set
;*** him to expert user for a short moment...
;*** This step deinstalls the old EGS system software package

(set olduserlevel @user-level)
(set @user-level 2)

(if (= oldfound 1)
	(
		(set DeleteOldEGS
			(askbool
				(prompt "ACHTUNG: Im nächsten Schritt wird Ihre gesamte alte EGS-Installation "
						"gelöscht. Dies ist notwendig, da sich der Aufbau von EGS geändert hat. "
						"\nFalls Sie im Verzeichnis EGS: selber weitere Software installiert "
						"haben sollten (außer der, die bei Ihrer Piccolo beilag), so sollten "
						"Sie die Installation jetzt abbrechen und diese Software sichern.\n"
						"Information: Das neue EGS-System ersetzt das alte vollständig.\n"
						"\nWollen Sie, daß jetzt die GESAMTE alte EGS-Installation gelöscht "
						"wird ?")
				(help "Wenn Sie wollen, können Sie an dieser Stelle die Installation "
                        "abbrechen, um möglicherweise selbst in EGS: installierte Software "
                        "zu sichern.")
				(choices "Ja" "Nein")
				(default 1)
			)
		)


		(if (= DeleteOldEGS 0)
			(abort ("Die Installation wurde abgebrochen."))

			; else...
			(
				; first, remove the EGS:libs assignment
				(run ("c:assign libs: EGS:libs remove"))
        	    ; next, remove the main EGS: assignment (but copy it first for the delete command)
				(set oldegspath (expandpath "EGS:"))
	            (makeassign("EGS"))

	            ; and now, the really dangerous thing..
				(set retcode (run "c:delete %s all force" oldegspath))
                (if (<> retcode 0)
                	(message "Achtung !\nEs konnte nicht das gesamte alte EGS-System "
							 "de-installiert werden. Der Grund dafür können von Ihnen "
							 "selbst erzeugte Suchpfade sein. Bitte entfernen Sie die "
							 "restlichen Dateien (unter '" oldegspath "') von Hand.")
				)
			)
		)
	)
)

;restore old user level
(set @user-level olduserlevel)



;*** remove old EGS: assignment commands from S:user-startup
(startup "EGS-System"
	(prompt "Alte EGS-spezifische Befehle aus \"S:user-startup\" wieder austragen.")
	(help "Eventuelle alte Angaben bezüglich EGS in Ihrer Datei \"S:user-startup\" müssen "
		  "wieder entfernt werden, da sie jetzt an anderer Stelle ausgeführt werden.\n"
		  "Durch diese Operation werden andere Befehle in Ihrer \"S:user-startup\"-Datei "
		  "nicht verändert.")
	(command (""))
)


;*** for reasons of completeness, (try to) remove the user-startup entries for Painter
(startup "Painter/PicoPainter"
	(prompt "Alte PicoPainter-spezifische Befehle aus \"S:user-startup\" wieder austragen.")
	(help "Eventuelle alte Angaben bezüglich PicoPainter in Ihrer Datei \"S:user-startup\" "
		  " müssen entfernt werden. Sie werden später (falls Sie das neue PicoPainter "
		  "installieren wollen) wieder mit richtigem Pfad eingefügt.\n"
		  "Durch diese Operation werden andere Befehle in Ihrer \"S:user-startup\"-Datei "
		  "nicht verändert.")
	(command (""))
)

;*** Finally, remove the old and now obsolete s:EGS-Startup
(delete "s:EGS-Startup"
	(prompt "Alte Datei 's:EGS-Startup' löschen")
	(confirm "expert")
    (help "Die Datei 'S:EGS-Startup wird jetzt nicht mehr gebraucht, da in der neuen "
		  "EGS-Version das Hochfahren der EGS-Software auf andere Weise erfolgt.")
)

;*** That's it ! We have (more or less sucessfully) de-installed the old system,
;*** now let the new one go in...

;*** Ask user to insert disk 1 ***
(askdisk
	(prompt "Bitte legen Sie " Disk1 " in ein beliebiges Laufwerk...")
	(help @askdisk-help)
	(dest Disk1)
)

;*** Copy LHARC to RAM ***
(copyfiles
	(prompt "Kopiere Datei lharc nach RAM.")
	(source "Piccolo_Disk1:c/LHARC")
	(dest   "ram:")
)


;*** check version (where is "monitors" ? SYS: (2.0) or DEVS: (2.1 && >) ?)
(set ver (getversion "libs:version.library") )
(set osver (/ Ver 65536))
; on 2.1 and above systems there is always a DEVS:Monitors directory
(if (> osver 37)
	(set MonitorDest "DEVS:Monitors" )
; else, on 2.0, there should be a SYS:Monitors; if there isn't, create one
	(
		(set MonitorDest "SYS:Monitors")
		(makedir MonitorDest)
	)
)

;*** put together the 'Piccolo' file that goes into the monitor directory
(textfile
	(dest "T:Piccolo")
;	(append "assign EGS: ")
;	(append (tackon EGSSysDir "EGS"))
;	(append "\n")
	(include "Piccolo_Disk1:monitors/Piccolo")
)

(set myassign ("\"assign EGS: %s \"" (tackon EGSSysDir "EGS") ) )
(set insertrc (run ("Piccolo_Disk1:c/insertline %s %s %s" "T:Piccolo" "EGSAssign" myassign) ) )

(if (<> insertrc 0)
	(message "Es trat ein Fehler beim Erzeugen der Monitors/Piccolo-Datei auf.")
)


;*** copy the Piccolo file to SYS:/DEVS:Monitors
(copyfiles
	(prompt "Kopiere Monitordatei T:Piccolo nach " MonitorDest)
	(confirm "expert")
	(source "T:Piccolo")
	(dest   MonitorDest)
	(help "Es wird jetzt eine Monitordatei in SYS:monitors (oder DEVS:monitors) "
		"kopiert.")
)

;*** protect +s the Piccolo file
(protect (tackon MonitorDest "Piccolo") "+s")

;*** copy the accompanying icon to SYS:/DEVS:Monitors
(copyfiles
	(prompt "Kopiere Piktogramm Piccolo.info nach " MonitorDest)
	(confirm "expert")
	(source "Piccolo_Disk1:monitors/Piccolo.info")
	(dest   MonitorDest)
    (help "Zu der gerade kopierten Monitordatei wird ein Icon kopiert.")
)

;*** install WBStartup icon
;*** Install One-Monitor-System ***
(if (= 0 Monitor)
    ((copyfiles
	(confirm "expert")
	(prompt "Kopiere Datei EGS-Startup.info nach SYS:WBStartup")
	(source "Piccolo_Disk1:WBStartup/1/EGS-Startup.info")
	(dest   "SYS:WBStartup")
	(help "Jetzt wird die EGS-Startup-Datei nach SYS:WBStartup kopiert. Damit "
        "wird ein automatisches Starten der EGS-Software bei jedem Neustart "
		"des Rechners überhaupt erst ermöglicht.")
)))

;*** Install Two-Monitor-System ***
(if (AND (= 1 Monitor) (= 0 Direction))
    ((copyfiles
	(confirm "expert")
	(prompt "Kopiere Datei EGS-Startup.info nach SYS:WBStartup")
	(source "Piccolo_Disk1:WBStartup/2/t/EGS-Startup.info")
	(dest   "SYS:WBStartup")
	(help "Jetzt wird die EGS-Startup-Datei nach SYS:WBStartup kopiert. Damit "
        "wird ein automatisches Starten der EGS-Software bei jedem Neustart "
		"des Rechners überhaupt erst ermöglicht.")
)))

(if (AND (= 1 Monitor) (= 1 Direction))
    ((copyfiles
	(confirm "expert")
	(prompt "Kopiere Datei EGS-Startup.info nach SYS:WBStartup")
	(source "Piccolo_Disk1:WBStartup/2/l/EGS-Startup.info")
	(dest   "SYS:WBStartup")
	(help "Jetzt wird die EGS-Startup-Datei nach SYS:WBStartup kopiert. Damit "
        "wird ein automatisches Starten der EGS-Software bei jedem Neustart "
		"des Rechners überhaupt erst ermöglicht.")
)))

(if (AND (= 1 Monitor) (= 2 Direction))
    ((copyfiles
	(confirm "expert")
	(prompt "Kopiere Datei EGS-Startup.info nach SYS:WBStartup")
	(source "Piccolo_Disk1:WBStartup/2/r/EGS-Startup.info")
	(dest   "SYS:WBStartup")
	(help "Jetzt wird die EGS-Startup-Datei nach SYS:WBStartup kopiert. Damit "
        "wird ein automatisches Starten der EGS-Software bei jedem Neustart "
		"des Rechners überhaupt erst ermöglicht.")
)))

(if (AND (= 1 Monitor) (= 3 Direction))
    ((copyfiles
	(confirm "expert")
	(prompt "Kopiere Datei EGS-Startup.info nach SYS:WBStartup")
	(source "Piccolo_Disk1:WBStartup/2/b/EGS-Startup.info")
	(dest   "SYS:WBStartup")
	(help "Jetzt wird die EGS-Startup-Datei nach SYS:WBStartup kopiert. Damit "
        "wird ein automatisches Starten der EGS-Software bei jedem Neustart "
		"des Rechners überhaupt erst ermöglicht.")
)))


;*** create the EGS:s directory
(makedir (tackon EGSSysDir "EGS/s")
	(confirm "expert")
    (prompt "Erzeuge EGS-s-Verzeichnis")
    (help "Jetzt wird das Verzeichnis 's' für die EGS-Startdateien angelegt.")
)

;*** install EGS.Config file in EGS:s/
;*** one monitor solution
(if (= 0 Monitor)
    ((copyfiles
	(confirm "expert")
	(prompt "Kopiere Datei EGS.config nach EGS:s")
	(source "Piccolo_Disk1:egs/s/1/EGS.config")
	(dest   (tackon EGSSysDir "EGS/s"))
	(help "Die Startdatei 'EGS.Config' wird nach " (tackon EGSSysDir "EGS/s/") " kopiert.")
)))

;*** two monitor solution
(if (= 1 Monitor)
    ((copyfiles
	(confirm "expert")
	(prompt "Kopiere Datei EGS.config nach EGS:s")
	(source "Piccolo_Disk1:egs/s/2/EGS.config")
	(dest   (tackon EGSSysDir "EGS/s"))
	(help "Die Startdatei 'EGS.Config' wird nach " (tackon EGSSysDir "EGS/s/") " kopiert.")
)))

(complete 10)

;*** create the EGS:monitors and ../prefs directories
(makedir (tackon EGSSysDir "EGS/Monitors")
	(confirm "expert")
    (prompt "Erzeuge EGS:Monitors-Verzeichnis")
    (help "Jetzt wird das Verzeichnis 'EGS:Monitors' und darin 'prefs' für die "
		  "Monitor-Definitions-Dateien angelegt.\n")
)
;I won't let the expert confirm this, I just told him what would happen...
(makedir (tackon EGSSysDir "EGS/Monitors/prefs")
    (prompt "Erzeuge EGS:Monitors/prefs-Verzeichnis")
    (help "Keine Hilfe verfügbar.")
)

;*** install the correct monitor prefs file for the selected monitor
(if (= 0 MONITORCLASS)
	(
		(set MoniDir (tackon EGSSysDir "EGS/Monitors/Prefs/"))
		(copyfiles
			(prompt "Kopiere Monitor-File")
			(source "Piccolo_Disk1:monitor/PALNTSC/PICOa.mux.map2video")
			(dest MoniDir)
			(confirm "expert")
			(help "Die Datei, die Einstellungen über die Monitorklasse enthält, "
				  "wird nach " MoniDir " kopiert.")
		)
	)
)

(if (= 1 MONITORCLASS)
	(
		(set MoniDir (tackon EGSSysDir "EGS/Monitors/Prefs/"))
		(copyfiles
			(prompt "Kopiere Monitor-File")
			(source "Piccolo_Disk1:monitor/VGA/PICOa.mux.map2video")
			(dest MoniDir)
			(confirm "expert")
			(help "Die Datei, die Einstellungen über die Monitorklasse enthält, "
				  "wird nach " MoniDir " kopiert.")
		)
	)
)

(if (= 2 MONITORCLASS)
	(
		(set MoniDir (tackon EGSSysDir "EGS/Monitors/Prefs/"))
		(copyfiles
			(prompt "Kopiere Monitor-File")
			(source "Piccolo_Disk1:monitor/MS38/PICOa.mux.map2video")
			(dest MoniDir)
			(confirm "expert")
			(help "Die Datei, die Einstellungen über die Monitorklasse enthält, "
				  "wird nach " MoniDir " kopiert.")
		)
	)
)

(if (= 3 MONITORCLASS)
	(
		(set MoniDir (tackon EGSSysDir "EGS/Monitors/Prefs/"))
		(copyfiles
			(prompt "Kopiere Monitor-File")
			(source "Piccolo_Disk1:monitor/MS48/PICOa.mux.map2video")
			(dest MoniDir)
			(confirm "expert")
			(help "Die Datei, die Einstellungen über die Monitorklasse enthält, "
				  "wird nach " MoniDir " kopiert.")
		)
	)
)

(if (= 4 MONITORCLASS)
	(
		(set MoniDir (tackon EGSSysDir "EGS/Monitors/Prefs/"))
		(copyfiles
			(prompt "Kopiere Monitor-File")
			(source "Piccolo_Disk1:monitor/MS56/PICOa.mux.map2video")
			(dest MoniDir)
			(confirm "expert")
			(help "Die Datei, die Einstellungen über die Monitorklasse enthält, "
				  "wird nach " MoniDir " kopiert.")
		)
	)
)

(if (= 5 MONITORCLASS)
	(
		(set MoniDir (tackon EGSSysDir "EGS/Monitors/Prefs/"))
		(copyfiles
			(prompt "Kopiere Monitor-File")
			(source "Piccolo_Disk1:monitor/MS64/PICOa.mux.map2video")
			(dest MoniDir)
			(confirm "expert")
			(help "Die Datei, die Einstellungen über die Monitorklasse enthält, "
				  "wird nach " MoniDir " kopiert.")
		)
	)
)

(if (= 6 MONITORCLASS)
	(
		(set MoniDir (tackon EGSSysDir "EGS/Monitors/Prefs/"))
		(copyfiles
			(prompt "Kopiere Monitor-File")
			(source "Piccolo_Disk1:monitor/MS76/PICOa.mux.map2video")
			(dest MoniDir)
			(confirm "expert")
			(help "Die Datei, die Einstellungen über die Monitorklasse enthält, "
				  "wird nach " MoniDir " kopiert.")
		)
	)
)


(complete 15)


;*** Create directory for Piccolo software under EGS: ***
(set EGSSoftDir (tackon EGSSysDir "EGS/Piccolo"))
(makedir (EGSSoftDir (infos))
	(confirm "expert")
    (prompt "Erzeuge Piccolo-Software-Verzeichnis")
    (help "Jetzt wird das Verzeichnis 'Piccolo' für die Piccolo-Software unter "
		  "dem Hauptverzeichnis für EGS-Software angelegt.")
)

;*** Install PicoPainter ***
(If (IN EGSApp2 0)
    (
		(
			(working "Installiere Painter...")
			(if (= @user-level 2)
				(
					(set ReallyInst
						(askbool
							(prompt "Archiv 'PicoPainter.lzh' nach " EGSSoftDir " auspacken ?")
							(help "Wenn Sie wollen, können Sie an dieser Stelle die "
								"Installation von PicoPainter überspringen.")
			                (choices "Ja" "Nein")
						)
	        	    )
	        	)

	            (set ReallyInst 1)
    	    )

			(if (= ReallyInst 1)
				(
					(set @execute-dir EGSSoftDir)
					(set lzrc
						(run ("RAM:LHARC -mqx x %s" "Piccolo_Disk1:PicoPainter.lzh")
							(prompt "Entpacke Archiv 'PicoPainter.lzh' nach " EGSSoftDir ".")
							(help "Keine Hilfe verfügbar.")
						)
					)
					(if (<> lzrc 0)
						(message "Fehler beim Dekomprimieren des PicoPainter-Programms." )
			 		)
				)
			)
		)
	    (startup "Painter/PicoPainter"
	    	(prompt	"Es müssen einige Anweisungen in die \"S:user-startup\" eingefügt werden, damit das Programm PicoPainter konfiguriert werden kann.")
    		(help "PicoPainter benötigt ein Assignment 'Painter:', unter dem "
              "es nach einigen Hilfsdateien (wie Convolve-Matrizen) sucht.\n"
			  "Dazu werden einige Zeilen in die Datei S:user-startup eingetragen.")
		    (set PaintAssign (tackon EGSSoftDir "PicoPainter"))
    		(command ("assign Painter: %s\n" PaintAssign))
		)
	)
)

(complete 30)

(If (IN EGSApp2 1)
	(
		(working "Installiere Dia...")
		(if (= @user-level 2)
			(
				(set ReallyInst
					(askbool
						(prompt "Archiv 'Dia.lzh' nach " EGSSoftDir " auspacken ?")
						(help "Wenn Sie wollen, können Sie an dieser Stelle die "
							"Installation von 'Dia' überspringen.")
		                (choices "Ja" "Nein")
					)
        	    )
        	)
            (set ReallyInst 1)
   	    )

		(if (= ReallyInst 1)
			(
				(set @execute-dir EGSSoftDir)
				(set lzrc
					(run ("RAM:LHARC -mqx x %s" "Piccolo_Disk1:Dia.lzh")
						(prompt "Entpacke Archiv 'Dia.lzh' nach " EGSSoftDir ".")
					)
				)

				(if (<> lzrc 0)
					(message "Fehler beim Dekomprimieren des Programms Dia.")
				)
            )
        )
	)
)

(complete 40)


;*** EGS-ENV.lzh-Archiv auspacken
(if (= 1 InstSystem)
	(
		(working "Installiere EGS-ENVARC:-Systemdateien...")
		(if (= @user-level 2)
			(
				(set ReallyInst
					(askbool
						(prompt "Archiv 'EGS-ENV.lzh' nach ENVARC: auspacken ?")
						(help "Hiermit wird das Archiv entpackt, das die mitgelieferten "
							  "Voreinstellungen für das EGS-System (Bildschirmmodus, "
							  "Farben, Blanker etc.) enthält.\n"
							  "Wenn Sie wollen, können Sie an dieser Stelle die "
							  "Installation des EGS-ENV-Archivs überspringen.")
		                (choices "Ja" "Nein")
					)
        	    )
        	)
            (set ReallyInst 1)
   	    )

		(if (= ReallyInst 1)
			(
				(set @execute-dir "ENVARC:")
				(set lzrc
					(run ("RAM:LHARC -mqx x %s" "Piccolo_Disk1:EGS-ENV.lzh")
						(prompt "Entpacke Archiv 'EGS-ENV.lzh' nach " @execute-dir ".")
					)
				)
				(if (<> lzrc 0)
					(message "Es trat ein Fehler beim Dekomprimieren von 'EGS-ENV.lzh' auf.")
		        )
			)
		)
	)
)

(complete 50)

;*** 'install' Real3D support (egs_r3d.library - part of the EGS:libs package)
(if (IN Drivers 0)
	(message "Der Treiber für Real3D V2 wird gleich bei der Installation der "
			 "EGS-Systemsoftware automatisch mit durchgeführt.")
)


;*** install the ADPro savers directly to ADPro:savers2
(If (IN Drivers 1)
	(If (exists "ADPro:" (noreq))
	(
		((working "Installiere Treiber für ADPro...")
			(copyfiles
    	        (prompt "Installiere ADPro-Treiber...")
        	    (source "Piccolo_Disk1:drivers/ADPro")
            	(dest "ADPro:")
	            (all)
				(confirm "expert")
				(help "In diesem Schritt werden die ADPro-Saver in Ihre "
					  "ADPro-Installation (nach savers2) kopiert (sofern "
					  "vorhanden).")
			)
		)
	)
	(message "Damit die ADPro-Saver installiert werden können, muß ADPro auf "
			 "Ihrem System installiert sein. Das ist anscheinend nicht der Fall "
			 "(das ADPro:-Assignment wurde nicht gefunden, und darum kann die "
			 "Position der ADPro-Software auf Ihrer Festplatte nicht festgestellt "
			 "werden). Bitte installieren Sie ADPro erst (oder setzen Sie das "
			 "logische Gerät ADPro: auf das ADPro-Software-Verzeichnis),  und "
			 "rufen Sie dann diese Installation noch einmal auf.")
	)
)

(complete 60)

(if (IN Drivers 2)
	(message "Die Installation des ImageMaster-Treibers kann nicht vom Installer "
			 "vorgenommen werden; bitte lesen Sie in Ihrer Dokumentation zu Imagemaster "
			 "nach, was dazu für Veränderungen an seinen Konfigurationsdateien "
			 "vorgenommen werden müssen. Die benötigten Dateien finden Sie auf der "
			 "ersten Piccolo-Software-Disk im Verzeichnis 'ImageMaster'.")
)

;*** Ask user to insert disk 2 ***
(askdisk
	(prompt "Bitte legen Sie " Disk2 " in ein beliebiges Laufwerk...")
	(help @askdisk-help)
	(dest Disk2)
)

;*** Install the main part of EGS - drivers, libraries, classes...
(if (= 1 InstSystem)
	(
		(working "Installiere EGS-Systemdateien...")
		(if (= @user-level 2)
			(
				(set ReallyInst
					(askbool
						(prompt "Archiv 'EGS-System.lzh' nach '" EGSSysDir "' auspacken ?")
			        	(help "Dieser Schritt installiert die wichtigsten Dateien des "
						  "EGS-Systems auf Ihrer Festplatte - Bibliotheken, Treiber "
						  "und Klassen. Ohne diese Dateien kann EGS nicht laufen.\n"
						  "Wenn Sie wollen, können Sie an dieser Stelle die Installation "
						  "der EGS-Systemdateien überspringen. Das ist aber ganz und gar "
						  "nicht zu empfehlen.")
		                (choices "Ja" "Nein")
					)
        	    )
        	)
            (set ReallyInst 1)
   	    )

		(if (= ReallyInst 1)
			(
				(set @execute-dir EGSSysDir)
				(set lzrc
					(run ("RAM:LHARC -mqx x %s" "Piccolo_Disk2:EGS-System.lzh")
						(prompt "Entpacke Archiv EGS-System.lzh nach " EGSSysDir)
					)
				)
				(if (<> lzrc 0)
					(message "Es trat ein Fehler beim Dekomprimieren von 'EGS-System' auf." )
		        )
			)
		)
	)
)

(complete 70)

;*** remove old commands from user-startup
; (jetzt weiter oben)
;(startup "EGS-System"
;	(prompt "Alte EGS-spezifische Befehle aus \"S:user-startup\" wieder austragen.")
;	(help "Eventuelle alte Angaben in Ihrer Datei \"S:user-startup\" müssen wieder "
;		  "entfernt werden, da sie jetzt an anderer Stelle ausgeführt werden. "
;		  "Durch diese Operation werden andere Befehle in Ihrer \"S:user-startup\"-Datei "
;		  "nicht verändert.")
;	(command (""))
;)

(complete 75)


;*** Ask user to insert disk 3 ***

(if (OR (IN EGSApp 0 1 2 3))
	(askdisk
		(prompt "Bitte legen Sie " Disk3 " in ein beliebiges Laufwerk...")
		(help @askdisk-help)
		(dest Disk3)
		(assigns)
	)
)

;*** Install selected EGS-Applications ***

;*** Install EGS-Prefs
(If (IN EGSApp 0)
	(
		(working "Installiere EGS-Preferences...")
		(if (= @user-level 2)
			(
				(set ReallyInst
					(askbool
						(prompt "Archiv 'EGS-Prefs.lzh' nach '" EGSSysDir "' auspacken ?")
						(help "Dieser Schritt installiert die EGS-Voreinstellungs-Programme "
			            	  "(Preferences) auf Ihrer Festplatte. Diese Programme dienen zum "
				              "Konfigurieren sehr vieler Eigenschaften von EGS.\n"
							  "Wenn Sie wollen, können Sie an dieser Stelle die Installation "
							  "der EGS-Preferences überspringen.")
		                (choices "Ja" "Nein")
					)
        	    )
        	)
            (set ReallyInst 1)
   	    )

		(if (= ReallyInst 1)
			(
				(set @execute-dir EGSSysDir)
				(set lzrc
					(run ("RAM:LHARC -mqx x %s" "Piccolo_Disk3:EGS-Prefs.lzh")
						(prompt "Entpacke Archiv 'EGS-Prefs.lzh' nach " EGSSysDir ".")

					)
				)
				(if (<> lzrc 0)
					(message "Es trat ein Fehler beim Dekomprimieren der EGS-Prefs auf.")
				)
			)
		)
	)
)

(complete 80)

;*** Install EGS-Tools
(If (IN EGSApp 1)
	(
		(working "Installiere EGS-Tools...")
		(if (= @user-level 2)
			(
				(set ReallyInst
					(askbool
						(prompt "Archiv 'EGS-Tools.lzh' nach '" EGSSysDir "' auspacken ?")
						(help "Dieser Schritt installiert die EGS-Hilfs-Programme "
			            	  "(Tools) auf Ihrer Festplatte.\n"
							  "Wenn Sie wollen, können Sie an dieser Stelle die Installation "
							  "der EGS-Tools überspringen.")
		                (choices "Ja" "Nein")
					)
        	    )
        	)
            (set ReallyInst 1)
   	    )

		(if (= ReallyInst 1)
			(
				(set @execute-dir EGSSysDir)
				(set lzrc
					(run ("RAM:LHARC -mqx x %s" "Piccolo_Disk3:EGS-Tools.lzh")
						(prompt "Entpacke Archiv 'EGS-Tools.lzh' nach " EGSSysDir ".")
					)
				)

				(if (<> lzrc 0)
					(message "Es trat ein Fehler beim Dekomprimieren der EGS-Tools auf.")
		 	   	)
            )
        )
	)
)

(complete 85)

;*** Install EGS-Demos
(If (IN EGSApp 2)
	(
		(working "Installing EGS-Demos...")
		(if (= @user-level 2)
			(
				(set ReallyInst
					(askbool
						(prompt "Archiv 'EGS-Demos.lzh' nach '" EGSSysDir "' auspacken ?")
						(help "Dieser Schritt installiert die EGS-Demoprogramme "
			            	  "auf Ihrer Festplatte. Diese Programme zeigen einen Ausschnitt "
							  "aus den Fähigkeiten von EGS.\n"
							  "Wenn Sie wollen, können Sie an dieser Stelle die Installation "
							  "der EGS-Demos überspringen.")
		                (choices "Ja" "Nein")
					)
        	    )
        	)
            (set ReallyInst 1)
   	    )

		(if (= ReallyInst 1)
			(
				(set @execute-dir EGSSysDir)
				(set lzrc
					(run ("RAM:LHARC -mqx x %s" "Piccolo_Disk3:EGS-Demos.lzh")
						(prompt "Entpacke Archiv 'EGS-Demos.lzh' nach " EGSSysDir ".")
					)
				)
				(if (<> lzrc 0)
					(message "Es trat ein Fehler beim Dekomprimieren der EGS-Demos auf.")
				)
			)
		)
	)
)

(complete 90)

;*** Install EGS-Patterns
(If (IN EGSApp 3)
	(
		(working "Installing EGS-Patterns")
		(if (= @user-level 2)
			(
				(set ReallyInst
					(askbool
						(prompt "Archiv 'EGS-Patterns.lzh' nach '" EGSSysDir "' auspacken ?")
						(help "Dieser Schritt installiert einige Hintergrundmuster "
							  "(Patterns) auf Ihrer Festplatte.\n"
							  "Wenn Sie wollen, können Sie an dieser Stelle die Installation "
							  "der EGS-Patterns überspringen.")
		                (choices "Ja" "Nein")
					)
        	    )
        	)
            (set ReallyInst 1)
   	    )

		(if (= ReallyInst 1)
			(
				(set @execute-dir EGSSysDir)
				(set lzrc
					(run ("RAM:LHARC -mqx x %s" "Piccolo_Disk3:EGS-Pattern.lzh")
						(prompt "Entpacke Archiv 'EGS-Pattern.lzh' nach " EGSSysDir ".")
					)
				)
			   	(if (<> lzrc 0)
					(message "Es trat ein Fehler beim Dekomprimieren der EGS-Patterns auf.")
		 		)
			)
		)
	)
)

(complete 92)

;*** Installiere EGS-AGE_Tools
(If (IN EGSApp 4)
	(
		(working "Installing EGS-AGE_Tools")
		(if (= @user-level 2)
			(
				(set ReallyInst
					(askbool
						(prompt "Archiv 'EGS-AGE_Tools.lzh' nach '" EGSSysDir "' auspacken ?")
						(help "Dieser Schritt installiert Hilfsprogramme für die "
							  "Amiga Graphics Emulation (AGE) auf Ihrer Festplatte.\n"
							  "Wenn Sie wollen, können Sie an dieser Stelle die Installation "
							  "der EGS-AGE_Tools überspringen.")
		                (choices "Ja" "Nein")
					)
        	    )
        	)
            (set ReallyInst 1)
   	    )

		(if (= ReallyInst 1)
			(
				(set @execute-dir EGSSysDir)
				(set lzrc
					(run ("RAM:LHARC -mqx x %s" "Piccolo_Disk3:EGS-AGE_Tools.lzh")
						(prompt "Entpacke Archiv 'EGS-AGE_Tools.lzh' nach " EGSSysDir ".")
					)
				)
			   	(if (<> lzrc 0)
					(message "Es trat ein Fehler beim Dekomprimieren der EGS-AGE_Tools auf.")
		 		)
			)
		)
	)
)

(complete 94)

;*** Installiere EGS-Goodies
(If (IN EGSApp 5)
	(
		(working "Installing EGS-Goodies")
		(if (= @user-level 2)
			(
				(set ReallyInst
					(askbool
						(prompt "Archiv 'EGS-Goodies.lzh' nach '" EGSSysDir "' auspacken ?")
						(help "Dieser Schritt installiert diverse kleine Programme, "
							  "für die keine Dokumentation existiert oder die nicht vom"
							  "Ingenieurbüro Helfrich unterstützt werden.\n"
							  "Wenn Sie wollen, können Sie an dieser Stelle die Installation "
							  "der EGS-Goodies überspringen.")
		                (choices "Ja" "Nein")
					)
        	    )
        	)
            (set ReallyInst 1)
   	    )

		(if (= ReallyInst 1)
			(
				(set @execute-dir EGSSysDir)
				(set lzrc
					(run ("RAM:LHARC -mqx x %s" "Piccolo_Disk3:EGS-Goodies.lzh")
						(prompt "Entpacke Archiv 'EGS-Goodies.lzh' nach " EGSSysDir ".")
					)
				)
			   	(if (<> lzrc 0)
					(message "Es trat ein Fehler beim Dekomprimieren der EGS-Goodies auf.")
		 		)
			)
		)
	)
)

(complete 95)


;*** Ask user to insert disk 4 ***
(if (IN EGSApp2 2)
	(askdisk
		(prompt "Bitte legen Sie " Disk4 " in ein beliebiges Laufwerk...")
		(help @askdisk-help)
		(dest Disk4)
		(assigns)
	)
)


;*** Install TV-Paint Jr. ***
(If (IN EGSApp2 2)
	((working "Installiere TV-Paint Jr...")
		(set @execute-dir EGSSoftDir)
		(set TVPaintDir (tackon EGSSoftDir "TVPaint"))
		(makedir TVPaintDir (infos))
		(copyfiles
			(prompt "Kopiere TVPaint nach " EGSSoftDir ".")
			(source "TVPaintJr.:")
			(dest TVPaintDir)
			(pattern "~disk.info")
			(confirm "expert")
			(help "Dieser letzte Schritt installiert das Mal/Zeichenprogramm "
				  "\"TV-Paint Junior\" auf Ihrer Festplatte.")
		)
	)
)

(complete 99)

;*** Delete file LHARC from RAM ***
(delete "Ram:LHARC"
	(prompt "Entferne RAM:LHARC")
)

;*** delete Piccolo 'monitor' fake file
(delete "T:Piccolo"
	(prompt "Entferne temporäre Datei T:Piccolo")
)

;*** Ask user to reboot ***
(exit    "Die System-Software für die Piccolo-Grafikkarte ist nun installiert. \n"
		 "Bitte führen Sie nun einen Reset durch, damit die gemachten Einstellungen "
		 "wirksam werden !!!\n\n Viel Spaß mit Ihrer Piccolo-Grafikkarte !!!")

(complete 100)
