;
; Installer-Script for MicroDot
;

; strings

(set #install-where-msg
(cat	"Möchten Sie MicroDot auf Diskette "
		"oder auf Festplatte installieren?"
))

(set #install-where-help
(cat	"\nHier entscheiden Sie, ob MicroDot auf Disketten "
		"oder, falls vorhanden, auf Ihre Festplatte installiert "
		"werden soll.\n\n"
		"Wenn Ihr Amiga-System mit einer Festplatte ausgerüstet "
		"ist, sollten Sie MicroDot auf jeden Fall dort "
		"installieren."
))

(set #install-hd-msg
(cat	"Wohin soll das MicroDot-Verzeichnis "
		"installiert werden?"
))

(set #install-hd-help
(cat	"\nHier müßen Sie angeben, wo auf Ihrer "
		"Festplatte das MicroDot-Verzeichnis installiert werden "
		"soll.\n\n"
		"Das Installationsprogramm erzeugt dann in dem von Ihnen "
		"angegebenen Verzeichnis eine neue Schublade mit dem "
		"Namen \"MicroDot\"."
))

(set #floppy-askformat-msg
(cat	"Für eine Disketteninstallation benötigen Sie "
		"zwei formatierte Disketten mit den Namen "
		"\"MD-MAIN\" und \"MD-DATA\". Sie können die "
		"Disketten jetzt formatieren lassen oder "
		"selbst formatierte Disketten verwenden."
))

(set #floppy-askformat-help
(cat	"\nHier entscheiden Sie, ob jetzt die "
		"für die MicroDot-Installation "
		"benötigten Disketten formatiert "
		"werden sollen.\n\n"
		"Sie können problemlos auch selbst formatierte "
		"Disketten verwenden, wenn Sie ein besonderes "
		"Format oder Disketten verschiedener Größe "
		"verwenden wollen."
))

(set #format1-msg
(cat	"Bitte legen Sie die erste zu formatierende "
		"Diskette in das Laufwerk DF0:\n\n"
		"Diese Diskette ist später Ihre MicroDot-Datendiskette "
		"und trägt dann den Namen \"MD-DATA:\"."
))

(set #format2-msg
(cat	"Bitte legen Sie die zweite zu formatierende "
		"Diskette in das Laufwerk DF0:\n\n"
		"Diese wird danach ihre MicroDot-Hauptdiskette "
		"mit dem Namen \"MD-MAIN\". Auf dieser Diskette "
		"wird das Hauptprogramm installiert."
))

(set #format1-cmd "sys:system/format <ram:..MDINST.. drive df0: name MD-DATA noicons")
(set #format2-cmd "sys:system/format <ram:..MDINST.. drive df0: name MD-MAIN noicons")
(set #format-tmp "ram:..MDINST..")
(set #format-err-msg "Fehler Nr. %ld beim Formatieren der Diskette!")
(set #format1-busy "Formatiere erste Diskette...")
(set #format2-busy "Formatiere zweite Diskette...")

(set #copying-reqtools "Kopiere reqtools.library nach Libs:")
(set #copying-aguide "Kopiere amigaguide.library nach Libs:")

(set #want20
(cat	"Möchten Sie die spezielle MicroDot-Version für OS 2.04 "
		"und 68020+ installiert haben? "

))
(set #want20-help
(cat	"Sie haben ein Amiga-System mit OS 2.04 oder größer "
		"und einem %s Prozessor.\n\n"
		"Möchten Sie die spezielle MicroDot-Version für solche "
		"Konfigurationen installiert haben?"
))

(set #insert1-msg
(cat	"Bitte legen Sie die Diskette mit dem Namen "
		"\"MD-MAIN\" ein."
))

(set #insert1-help
(cat	"Für die weitere Installation wird jetzt die zweite "
		"vorhin formatierte Diskette mit dem Namen \"MD-MAIN\" "
		"benötigt.\n\n"
		"Falls Sie vorhin keine Disketten formatiert haben und "
		"keine selbst formatierten Disketten mit den richtigen "
		"Namen haben, brechen Sie die Installation jetzt ab "
		"und starten Sie sie danach neu."
))

(set #cfgexist-msg
(cat	"Es existiert bereits eine Prekonfigurationsdatei für "
		"ihr System, die beim ersten Start von MicroDot automatisch "
		"gelesen wird."
))

(set #cfgexist-help
(cat	"Es wurde eine Datei \"microdot.cfg\" gefunden, die "
		"die Parameter für Ihr Pointsystem, wie den Usernamen "
		"oder die Telefonnummer der Box enthält. Eine weitere "
		"Konfiguration des Points ist daher nicht notwendig."
))

(set #usertg-msg
(cat	"Benutzen Sie eine Grafikkarte oder ein "
		"anderes RTG-System? "
))

(set #usertg-help
(cat	"MicroDot hat besonders schnelle Textausgaberoutinen, "
		"die aber nicht 100% zu den normalen Textausgaberoutinen "
		"kompatibel sind. Bei normalen Amiga-Systemen ist das "
		"in der Regel kein Problem, bei Grafikkarten mit "
		"Intuition-Patches kann es aber zu Störungen kommen. "
		"MicroDot greift dann auf die normalen Routinen "
		"des Betriebssystems zurück."
))

(set #taconv-msg
(cat	"Möchten Sie die Parameter Ihrer TheAnswerII-Konfiguration "
		"übernehmen? "
))

(set #taconv-help
(cat	"Es wurde eine Datei \"S:AnswerII.cfg\" gefunden, die eine "
		"Konfiguration für das Pointprogramm The Answer enthält.\n\n"
		"Es ist möglich, die dort eingestellten Parameter in "
		"MicroDot zu übernehmen.\n\n"
))

(set #converter-msg	"Möchten Sie eine bestehende Point-Konfiguration übernehmen? " )

(set #converter-help
(cat	"Falls Sie bereits \"The Answer 2.03\" oder \"Zodiac's Point 3.3\" "
		"auf Ihrem System installiert haben, können Sie die Pointparameter "
		"und die Nachrichten der alten Installation für MicroDot "
		"übernehmen.\n\n"
))

(set #taconvfile-msg "Bitte geben Sie den Namen Ihrer \"The Answer\"-Konfigurationsdatei an.")

(set #taconvfile-help
(cat	"Sie haben sich entschieden, Ihre \"The Answer\"-Konfiguration "
		"für MicroDot zu übernehmen. Dafür wird der Pfad und Dateiname "
		"Ihrer \"The Answer\"-Konfigurationsdatei benötigt. Diese Datei "
		"befindet sich normalerweise in \"S:AnswerII.cfg\"."
))

(set #zpconvfile-msg "Bitte geben Sie den Namen Ihrer \"Zodiac's Point\"-Konfigurationsdatei an.")

(set #zpconvfile-help
(cat	"Sie haben sich entschieden, Ihre \"Zodiac's Point\"-Konfiguration "
		"für MicroDot zu übernehmen. Dafür wird der Pfad und Dateiname "
		"Ihrer \"Zodiac's Point\"-Konfigurationsdatei benötigt. Diese Datei "
		"befindet sich normalerweise in der Point-Schublade unter dem "
		"Namen \"config.zp\"."
))



;
; Procedures
;

(procedure checkv20
	(set v20-flag 0)
	(if (> (/ (getversion) 65536) 36)
		(if (exists "MDInstall/MicroDot.020" )
			(if (>= (database "cpu") 68020 )
				(set v20-flag
					(askbool
						(prompt #want20)
						(help (#want20-help (database "cpu" ) ) ) 
						(default 1)
					)
				)
			)
		)
	)
)

(procedure do_ta
	(set doconvta-flag
		(askbool
			(prompt #taconv-msg)
			(help #taconv-help)
			(default 1)
		)
	)
	(if doconvta-flag
		(
			(working "Konvertiere \"The Answer\"-Konfiguration...")
			(run ( "MDInstall/TAConv S:AnswerII.cfg %s" @default-dest ) )
		)
	)
)

(procedure do_ta_conv
	(set conffilename
		(askfile
			(prompt #taconvfile-msg)
			(help #taconvfile-help)
			(default "S:AnswerII.cfg")
		)
	)
	(if conffilename
		(
			(working "Konvertiere \"The Answer\"-Konfiguration...")
			(run ( "MDInstall/TAConv %s %s" conffilename @default-dest ) )
		)
	)
)

(procedure do_zp_conv
	(set conffilename
		(askfile
			(prompt #zpconvfile-msg)
			(help #zpconvfile-help)
			(default "convert.zp")
		)
	)
	(if (<> conffilename "")
		(
			(working "Konvertiere \"Zodiac's Point\"-Konfiguration...")
			(run ( "MDInstall/ZPConv %s %s" conffilename @default-dest ) )
		)
	)
)

(procedure do_copy
	(copyfiles
		(source "MDInstall/MicroDot.guide")
		(newname "MicroDot.guide")
		(infos)
		(dest @default-dest)
	)
	(copyfiles
		(source "MDInstall/MicroDot.info")
		(dest @default-dest)
	)
	(copyfiles
		(source "MDInstall/MicroDot-Netcall.info")
		(dest @default-dest)
	)
	(copyfiles
		(source "MDInstall/MicroDot-Terminal.info")
		(dest @default-dest)
	)
	(complete 42)
	(if (exists "LiesMich.txt" )
		(copyfiles
			(source "LiesMich.txt" )
			(dest @default-dest)
			(optional nofail)
			(infos)
		)
	)
	(if (exists "MicroDot.cfg" )
		(copyfiles
			(source "MicroDot.cfg")
			(dest @default-dest)
			(optional nofail)
		)
	)
	(complete 50)

	(checkv20)

	(if (<> v20-flag 0 )
		(copyfiles
			(source "MDInstall/MicroDot.020")
			(dest @default-dest)
			(newname "MicroDot")
		)
		(copyfiles
			(source "MDInstall/MicroDot")
			(dest @default-dest)
		)
	)
	(complete 75)
)

(procedure do_askconvert
	(set olduserlevel (user 1) )
	(set convert-mode
		(askchoice
			(prompt #converter-msg)
			(help #converter-help)
			(choices "Keine Installation" "The Answer 2.03" "Zodiac's Point 3.3")
		)
	)
	(user olduserlevel)
	(select convert-mode
		(working)
		(do_ta_conv)
		(do_zp_conv)
	)
)

(procedure do_hd 
	(set default-dest
		(askdir
			(prompt #install-hd-msg)
			(help #install-hd-help)
			(default @default-dest)
		)
	)
	(set @default-dest
		(tackon default-dest "MicroDot")
	)
	(makedir @default-dest
		(infos)
	)
	(do_copy)

	(if (exists "s:AnswerII.cfg" )
		(do_ta)
		(do_askconvert)
	)
)

(procedure do_format
	(set olduserlevel (user 1) )
	(textfile 
		(dest #format-tmp)
		(append "\n")
	)
	(message #format1-msg)
	(working #format1-busy)
	(set retval
		(run #format1-cmd
		)
	)
	(if (<> retval 0 )
		(abort (#format-err-msg retval))
	)
	(complete 15)
	(message #format2-msg)
	(working #format2-busy)
	(set retval
		(run #format2-cmd
		)
	)
	(if (<> retval 0 )
		(abort (#format-err-msg retval))
	)
	(complete 30)
	(delete #format-tmp)
	(user olduserlevel)
)

(procedure do_floppy
	(set format-flag
		(askbool
			(prompt #floppy-askformat-msg)
			(help #floppy-askformat-help)
			(default 1)
			(choices "Formatieren" "Weiter")
		)
	)

	(if (= format-flag 1)
		(do_format)
	)

	(askdisk 
		(dest "MD-MAIN")
		(prompt #insert1-msg)
		(help #insert1-help)
	)

	(set @default-dest "MD-MAIN:")
	(do_copy)
	(makedir "MD-MAIN:Transfer")
)

(procedure copy-reqtools
	(complete 93)
	(copylib
		(prompt #copying-reqtools)
		(help @copylib-help)
		(source "MDInstall/libs/reqtools.library")
		(dest "Libs:")
		(confirm)
	)
)

(procedure copy-aguide
	(complete 95)
	(copylib
		(prompt #copying-aguide)
		(help @copylib-help)
		(source "MDInstall/libs/amigaguide.library")
		(dest "Libs:")
		(confirm)
	)
	(complete 97)
	(copyfiles
		(source "MDInstall/AmigaGuide")
		(dest @default-dest)
	)
)

(procedure do_config
	(complete 80)
	(set configname (tackon @default-dest "microdot.cfg" ) )
	(if (exists configname)
			(message #cfgexist-msg)
	)
	(working)	
	(if (= floppy-install 1)
		(
			(set tmpargs ( "echo >>\"%s\" \"datadir = MD-DATA:*ntransferdir = MD-MAIN:transfer/\"" configname ) )
			(run tmpargs)
		)
	)

	(set usertg
		(askbool
			(prompt #usertg-msg)
			(help	#usertg-help)
			(default 0)
		)
	)
	(working)
	(complete 85)
	(if (= usertg 1 )
		(
			(tooltype (
				(dest (tackon @default-dest "microdot") )
				(settooltype "RTG" "TRUE")
			))
			(tooltype (
				(dest (tackon @default-dest "microdot-netcall") )
				(settooltype "RTG" "TRUE")
			))
			(tooltype (
				(dest (tackon @default-dest "microdot-terminal") )
				(settooltype "RTG" "TRUE")
			))
		)
	)
	(complete 90)
	(tooltype (
		(dest (tackon @default-dest "MicroDot") )
		(noposition)
		(setstack 4000)
		(swapcolors)
	))
	(tooltype (
		(dest (tackon @default-dest "MicroDot-Netcall") )
		(noposition)
		(setstack 4000)
		(swapcolors)
	))
	(tooltype (
		(dest (tackon @default-dest "MicroDot-Terminal") )
		(noposition)
		(setstack 4000)
		(swapcolors)
	))
	(tooltype (
		(dest (tackon @default-dest "MicroDot.guide") )
		(noposition)
		(setstack 10000)
		(swapcolors)
	))
)


;
;
; GO!
;
;

(complete 0)
(set olduserlevel (user 1) )
(set floppy-install
	(askbool
		(prompt #install-where-msg)
		(help #install-where-help)
		(choices "Festplatte" "Diskette" )
	)
)
(user olduserlevel)

(complete 1)
(if (= floppy-install 0)
	(do_floppy)
	(do_hd)
)

(do_config)

; Reqtools installieren

(copy-reqtools)
(copy-aguide)
(complete 100)
