;;-
;;- $Id$
;;-
;;- Squirrel SCSI 1.05/1.06-1.07 update script
;;-
;;- Copyright © 1995 HiSoft. All Rights Reserved.
;;-

;;- parameters for this update
(set gSquirrelPatchRelease "1.05/1.06")

(set gSquirrelDevXVersion 2425564)
(set gSquirrelDevNVersion 2425569)
(set gSquirrelDevXCheckSum68000 -1041758342)
(set gSquirrelDevXCheckSum68020 -697631332)

(set gCDDevXVersion 2621910)
(set gCDDevNVersion 2622010)
(set gCDDevXCheckSum -1924144406)

;;- generic update procedures
(procedure UpdateSquirrelSCSIDevice
	(if (exists "DEVS:squirrelscsi.device" (noreq))
		(	(set gSquirrelDevCheckSum (getsum "DEVS:squirrelscsi.device"))
			(set gSquirrelDevVersion (getversion "DEVS:squirrelscsi.device"))
			(if (<> gSquirrelDevVersion gSquirrelDevXVersion)
				(abort
					"This patch is designed for version "
					gSquirrelPatchRelease
					"; if you are using an earlier version you should first apply "
					"all preceding patches then try this patch again."
				)
			)
			(if (= gSquirrelDevCheckSum gSquirrelDevXCheckSum68000)
				(	(if
						(run
							"spatch -oDEVS:squirrelscsi.new -pDevs.68000/squirrelscsi.device.pch DEVS:squirrelscsi.device"
							(confirm)
							(prompt
								(	"Update 68000 compatible \"DEVS:squirrelscsi.device\" from version %ld.%ld to version %ld.%ld?"
									(/ gSquirrelDevXVersion 65536)
									(- gSquirrelDevXVersion (* (/ gSquirrelDevXVersion 65536) 65536))
									(/ gSquirrelDevNVersion 65536)
									(- gSquirrelDevNVersion (* (/ gSquirrelDevNVersion 65536) 65536))
								)
							)
							(help "")
						)
						(abort
							"An error has occured whilst patching the file "
							"\"DEVS:squirrelscsi.device\"; reinstalling from the master disk "
							"and trying the update again may rectify the problem."
						)
						(	(rename "DEVS:squirrelscsi.device" "DEVS:squirrelscsi.old")
							(rename "DEVS:squirrelscsi.new" "DEVS:squirrelscsi.device")
							(delete "DEVS:squirrelscsi.old")
						)
					)
				)
				(if (= gSquirrelDevCheckSum gSquirrelDevXCheckSum68020)
					(	(if
							(run
								"spatch -oDEVS:squirrelscsi.new -pDevs.68020/squirrelscsi.device.pch DEVS:squirrelscsi.device"
								(confirm)
								(prompt
									(	"Update 68020 optimised \"DEVS:squirrelscsi.device\" from version %ld.%ld to version %ld.%ld?"
										(/ gSquirrelDevXVersion 65536)
										(- gSquirrelDevXVersion (* (/ gSquirrelDevXVersion 65536) 65536))
										(/ gSquirrelDevNVersion 65536)
										(- gSquirrelDevNVersion (* (/ gSquirrelDevNVersion 65536) 65536))
									)
								)
								(help "")
							)
							(abort
								"An error has occured whilst patching the file "
								"\"DEVS:squirrelscsi.device\"; reinstalling from the master disk "
								"and trying the update again may rectify the problem."
							)
							(	(rename "DEVS:squirrelscsi.device" "DEVS:squirrelscsi.old")
								(rename "DEVS:squirrelscsi.new" "DEVS:squirrelscsi.device")
								(delete "DEVS:squirrelscsi.old")
							)
						)
					)
					(abort
						"The updater could not identify which version of the SCSI driver "
						"you are using; reinstalling from the master disk and trying "
						"the update again may rectify the problem."
					)
				)
			)
		)
		(abort
			"The Squirrel SCSI device driver, \"DEVS:squirrelscsi.device\" "
			"could not be found; reinstalling from the master disk and trying "
			"the update again may rectify the problem."
		)
	)
)

(procedure UpdateCDDevice
	(if (exists "DEVS:cd.device" (noreq))
		(	(set gCDDevCheckSum (getsum "DEVS:cd.device"))
			(set gCDDevVersion (getversion "DEVS:cd.device"))
			(if (<> gCDDevVersion gCDDevXVersion)
				(abort
					"This patch is designed for version "
					gSquirrelPatchRelease
					"; if you are using an earlier version you should first apply "
					"all preceding patches then try this patch again."
				)
			)
			(if (= gCDDevCheckSum gCDDevXCheckSum)
				(	(if
						(run
							"spatch -oDEVS:cd.new -pDevs/cd.device.pch DEVS:cd.device"
							(confirm)
							(prompt
								(	"Update CD device, \"DEVS:cd.device\", from version %ld.%ld to version %ld.%ld?"
									(/ gCDDevXVersion 65536)
									(- gCDDevXVersion (* (/ gCDDevXVersion 65536) 65536))
									(/ gCDDevNVersion 65536)
									(- gCDDevNVersion (* (/ gCDDevNVersion 65536) 65536))
								)
							)
							(help "")
						)
						(abort
							"An error has occured whilst patching the file "
							"\"DEVS:cd.device\"; reinstalling from the master disk "
							"and trying the update again may rectify the problem."
						)
						(	(rename "DEVS:cd.device" "DEVS:cd.old")
							(rename "DEVS:cd.new" "DEVS:cd.device")
							(delete "DEVS:cd.old")
						)
					)
				)
				(abort
					"The updater could not identify which version of the SCSI driver "
					"you are using; reinstalling from the master disk and trying "
					"the update again may rectify the problem."
				)
			)
		)
		(abort
			"The CD device driver, \"DEVS:cd.device\" "
			"could not be found; reinstalling from the master disk and trying "
			"the update again may rectify the problem."
		)
	)
)

(procedure OutdateCD32Drawer
	(if (<> (getassign "CD32" 'a') "")
		(	(set n 0)
			(while
				(set file
					(select n
						"TitleSetup/Bundle"
						"TitleSetup/TOWERASSAULT"
						""
					)
				)
				(set n (+ n 1))
				(delete (tackon "CD32:" file))
			)
		)
		(abort
			"The CD32 support drawer, \"CD32:\" "
			"could not be found; reinstalling from the master disk and trying "
			"the update again may rectify the problem."
		)
	)
)

(procedure UpdateCD32Drawer
	(if (<> (getassign "CD32" 'a') "")
		(copyfiles
			(source "CD32/")
			(dest "CD32:")
			(all)
		)
		(abort
			"The CD32 support drawer, \"CD32:\" "
			"could not be found; reinstalling from the master disk and trying "
			"the update again may rectify the problem."
		)
	)
)

(procedure UpdateCD32Startup
	(copylib
		(source "S/CD32-Startup")
		(dest "S:")
		(optional "askuser")
		(confirm)
		(prompt "Updating CD32 startup script")
		(help @copylib-help)
	)
)

(procedure UpdateToolsDrawer
	(copyfiles
		(source "Tools/")
		(dest "SYS:Tools")
		(all)
	)
)
;;- invoke the procedures for this update
(UpdateSquirrelSCSIDevice)
(UpdateCDDevice)
(OutdateCD32Drawer)
(UpdateCD32Drawer)
(UpdateCD32Startup)
(UpdateToolsDrawer)
