(set @default-dest "")
(set DISK_NAME "DMZ04")
(set NO_HELP "")

(set AGW 1)
(set prg_1 "")
(set AGW_size 44000)

(set ALARM 2)
(set prg_2 "")
(set ALARM_size 29000)

(set DEGRADER 4)
(set prg_3 "")
(set DEGRADER_SIZE 35000)

(set DISKTEST 8)
(set prg_4 "")
(set DISKTEST_SIZE 90000)

(set DOSTRACE 16)
(set prg_5 "")
(set DOSTRACE_SIZE 45000)

(set GBLANKER 32)
(set prg_6 "")
(set GBLANKER_SIZE 344000)

(set GF2 64)
(set prg_7 "")
(set GF2_SIZE 425000)

(set LUFFAR 128)
(set prg_8 "")
(set LUFFAR_SIZE 39000)

(set MUCHMORE 256)
(set prg_9 "")
(set MUCHMORE_SIZE 91000)

(set PATHS 512)
(set prg_10 "")
(set PATHS_SIZE 95000)

(set FUSK 1024)
(set prg_11 "")
(set FUSK_SIZE 12945)

(set WBRAIN 2048)
(set prg_12 "")
(set WBRAIN_SIZE 47500)

(procedure UnPackLHA
	(message (cat ("Nu ska programmet %s packas upp. I nästa steg kommer " prg_name)
			  "installationsprogrammet att fråga dig efter ett lämpligt ställe att packa upp till. "
			  ("Installationsprogrammet kontrollerar även om det finns plats för %s.\n\n" prg_name)
			  "OBS! Väljer du RAM-disken kan programmet inte kontrollera om det finns plats "
			  "Du får själv se till att utrymmet är tillräckligt.\n\n"
			  ("%s behöver ca. %ld Bytes" prg_name prg_size)))
    (set directory
        (askdir
            (prompt "Välj ett ställe där det färdigt uppackde programmet ska hamna. Du "
                    "behöver inte skapa en låda för programmet. Det görs automatiskt.")
            (help "Här ska du välja ett ställe som programmet ska packas upp till. "
                  "Om det inte finns plats nog för detta meddelar installationsprogrammet detta "
                  "och ger dig möjlighet att välja ett annat ställe.")
            (default "RAM:")
        );askdir
    )

	(if (<> (getdevice directory) "RAM")
    (while (> prg_size (getdiskspace directory))(
        (message (Cat ("Det finns inte tillräckligt med plats på enhet %s: för att " (getdevice directory))
                      ("installera %s. Det lediga utrymmet på enheten är %ld Bytes " prg_name (getdiskspace directory))
                      ("Programmet behöver ca. %ld Bytes. Klicka på proceed och försök med ett annat ställe." prg_size)))

        (set directory
            (askdir
                (prompt "Välj ett ställe där det färdigt uppackde programmet ska hamna. Du "
                        "behöver inte skapa en låda för programmet. Det görs automatiskt.")
      			(help 	"Här ska du välja ett ställe som programmet ska packas upp till. "
                  		"Om det inte finns plats nog för detta meddelar installationsprogrammet detta "
                  		"och ger dig möjlighet att välja ett annat ställe.")
                (default "RAM:")
            );askdir
        );set directory
        (if (= directory "RAM:")
        	(set prg_size 0))
        )
    );while
	);if ram:

    (if (<> directory "")
        (   ; Lha vill ha ett '/'-tecken bakom en sökväg som inte är rooten till ett device
            (set space (getdiskspace directory))
            (if (<> (getdevice directory) "RAM")
                (if (< space prg_size)
                    (message "Här borde man ha kod för att välja ett annat ställe")
                )
            )

            (set str_len (strlen directory))
            (set last_letter (substr directory (- str_len 1)))
            (if (<> last_letter ":") (set directory (cat directory "/")))

            (working ("Packar upp programet %s\nDet tar bara en kort stund..." prg_name))
            (run ("%s:c/lha x %s:%s #? \"%s\"" DISK_NAME DISK_NAME lha_name directory))
        )

        (abort ("Hoppar över programmet %s" prg_name))
    )
)

; main

(set prgbitmap
  (askoptions
    (prompt "Vilket/Vilka program vill du packa upp?")
    (help   "Vill du bara packa upp ett program så bockar du bara för just det "
            "programmet. Det går naturligtvis att packa upp alla på en gång. "
            "Var beredd på att du behöver två eller tre tomma disketter för "
            "att få plats med allt.")
    (choices	"AmigaGuideWrite"
    			"AlarmClock"
                "Degrader"
                "DiskTest"
                "DOSTrace"
                "GBlanker"
                "GravityForce"
                "Luffar"
                "MuchMore"
                "Paths"
                "Spelfusk"
                "WBrain")
    (default 0) ; inga program förbockade från början
  )
)

(if (BITAND prgbitmap AGW)
	(
    	(set prg_name "AmigaGuideWriter")
       	(set prg_1 (cat prg_name "\n"))
       	(set prg_size AGW_SIZE)
       	(set lha_name "AGW.lha")
	   	(UnPackLHA)
    )
)

(if (BITAND prgbitmap ALARM)
	(
   		(set prg_name "AlarmClock")
   		(set prg_2 (cat prg_name "\n"))
   		(set prg_size ALARM_SIZE)
       	(set lha_name "AlarmClock.lha")
	   	(UnPackLHA)
   	)
)

(if (BITAND prgbitmap DEGRADER)
	(
   		(set prg_name "Degrader")
   		(set prg_3 (cat prg_name "\n"))
   		(set prg_size DEGRADER_SIZE)
   		(set lha_name "Degrader.lha")
	   	(UnPackLHA)
   	)
)

(if (BITAND prgbitmap DISKTEST)
	(
   		(set prg_name "DiskTest")
   		(set prg_4 (cat prg_name "\n"))
   		(set prg_size DISKTEST_SIZE)
   		(set lha_name "DiskTest.lha")
	   	(UnPackLHA)
   	)
)

(if (BITAND prgbitmap DOSTRACE)
	(
   		(set prg_name "DOSTrace")
   		(set prg_5 (cat prg_name "\n"))
   		(set prg_size DOSTRACE_SIZE)
   		(set lha_name "DOSTrace.lha")
	   	(UnPackLHA)
   	)
)

(if (BITAND prgbitmap GBLANKER)
	(
   		(set prg_name "GBlanker")
   		(set prg_6 (cat prg_name "\n"))
   		(set prg_size GBLANKER_SIZE)
   		(set lha_name "GBlanker.lha")
	   	(UnPackLHA)
   	)
)

(if (BITAND prgbitmap GF2)
	(
   		(set prg_name "GravityForce")
   		(set prg_7 (cat prg_name "\n"))
   		(set prg_size GF2_SIZE)
   		(set lha_name "GF2.lha")
	   	(UnPackLHA)
   	)
)

(if (BITAND prgbitmap LUFFAR)
	(
   		(set prg_name "Luffar")
   		(set prg_8 (cat prg_name "\n"))
   		(set prg_size LUFFAR_SIZE)
   		(set lha_name "Luffar.lha")
	   	(UnPackLHA)
   	)
)

(if (BITAND prgbitmap MUCHMORE)
	(
   		(set prg_name "MuchMore")
   		(set prg_9 (cat prg_name "\n"))
   		(set prg_size MUCHMORE_SIZE)
   		(set lha_name "Muchmore.lha")
	   	(UnPackLHA)
   	)
)

(if (BITAND prgbitmap PATHS)
	(
   		(set prg_name "Paths")
   		(set prg_10 (cat prg_name "\n"))
   		(set prg_size PATHS_SIZE)
   		(set lha_name "Paths.lha")
	   	(UnPackLHA)
   	)
)

(if (BITAND prgbitmap FUSK)
	(
   		(set prg_name "Spelfusk")
   		(set prg_11 (cat prg_name "\n"))
   		(set prg_size FUSK_SIZE)
   		(set lha_name "Spelfusk.lha")
	   	(UnPackLHA)
   	)
)

(if (BITAND prgbitmap WBRAIN)
	(
   		(set prg_name "WBrain")
   		(set prg_12 (cat prg_name "\n"))
   		(set prg_size WBRAIN_SIZE)
   		(set lha_name "WBrain.lha")
	   	(UnPackLHA)
   	)
)

(message ("Följande program blev installerade:\n\n%s%s%s%s%s%s%s%s%s%s%s%s" prg_1 prg_2 prg_3 prg_4 prg_5 prg_6 prg_7 prg_8 prg_9 prg_10 prg_11 prg_12))
(exit (quiet))
