2016-02-04 05:42:41 +00:00
#! /bin/bash
# vim: set tabstop=4 shiftwidth=4 expandtab filetype=sh:
2016-01-23 16:10:23 +00:00
2016-01-23 17:23:04 +00:00
# to do: replace Spectrum Deluxe (2.5.3) with Spectrum Gold (2.5.4)
2016-01-23 16:10:23 +00:00
readcharHex () {
# read one character from file & convert to corresponding hex value
# arg1: filename
# arg2: (optional) offset (# of bytes to skip before reading)
# out: two-digit hex value from 00-FF
# exit: 8=extraneous arg, 11=missing arg1,
# 21=invalid arg1, 22=invalid arg2
[[ $1 ]] || return 11
[[ $3 ]] && return 8
[[ -f $1 ]] || return 21
[[ $2 ]] && { [[ ( $(printf %d "$2" 2> /dev/null) == $2 ) \
&& ( $2 -ge 0 ) ]] || return 22; }
# args are valid
charX="$(dd if="$1" bs=1 skip=$(($2)) \
count=1 2> /dev/null; echo -n X)"
[[ ${#charX} -gt 1 ]] || { echo -n "00"; return 0; }
printf %02X $(echo -n "${charX:0:1}" | od -t u1 | \
head -1 | sed 's/[0\ ]*//' | tr -d ' \n') | tr [A-Z] [a-z]
}
readchars () {
# read one or more characters from a file
# arg1: filename
# arg2: (optional) offset (# of bytes to skip before reading)
# arg3: (optional) # of chars to read (default is until end of file)
# out: sequence of characters
# exit: 8=extraneous arg, 11=missing arg1,
# 21=invalid arg1, 22=invalid arg2, 23=invalid arg3
[[ $1 ]] || return 11
[[ $4 ]] && return 8
[[ -f $1 ]] || return 21
[[ $2 ]] && { [[ ( $(printf %d "$2" 2> /dev/null) == $2 ) \
&& ( $2 -ge 0 ) ]] || return 22; }
[[ $3 ]] && { [[ ( $(printf %d "$3" 2> /dev/null) == $3 ) \
&& ( $3 -ge 0 ) ]] || return 23; }
# args are valid
dd if="$1" bs=1 skip=$(($2)) $([[ $3 ]] && echo -n "count=$3") \
2> /dev/null
}
writecharsHex () {
# write corresponding characters of hex values into file
# arg1: filename
# arg2: offset (# of bytes to skip before writing)
# arg3: string of two-digit hexadecimal numbers from 00-FF, period delimited (not checked!)
# out: nothing
# exit: 8=extraneous arg, 11=missing arg1, 12=missing arg2,
# 13=missing arg3, 22=invalid arg2, 23=invalid arg3
[[ $1 ]] || return 11; [[ $2 ]] || return 12; [[ $3 ]] || return 13
[[ $4 ]] && return 8
[[ ( $(printf %d "$2" 2> /dev/null) == $2 ) \
&& ( $2 -ge 0 ) ]] || return 22
p=0
offset=$2
len=${#3}
while (( p < len )); do
outByte=${3:$p:2}
[[ $(printf %02X "0x$outByte" 2> /dev/null) == \
$(echo -n "$outByte" | tr [a-z] [A-Z]) ]] || return 23
# args are valid
echo -n -e "\x$outByte" | \
dd of="$1" bs=1 seek=$offset conv=notrunc 2> /dev/null
(( p += 3 ))
(( offset++ ))
done
}
### start
[[ -f /usr/bin/raspi-config ]] && isRpi=1 || isRpi=
emulatorName="GSport"
emulatorStart="gsport"
emulatorSetup="gsport-setup"
romFileName="ROM"
configFileName="config.txt"
imagesDir="/usr/local/share/gsdisks"
gsosHD="gsoshd.hdv"
gsosHDvolName="GSOS.HD"
tempDir="/tmp/gs"
rom=ROM3
slot6=
autoAnswerYes=
noDisks=
gisk=
installDisks=
kegs=
2016-02-04 05:42:41 +00:00
which acmd >/dev/null && acmdOK=1 || acmdOK=
2016-01-23 16:10:23 +00:00
2016-02-04 05:42:41 +00:00
if [[ $0 == *kegs-setup* ]]; then
kegs=1
fi
2016-01-23 16:10:23 +00:00
while { [[ $1 ]] || (( (0 + $gisk + $noDisks + $installDisks + 0) > 1 )); }; do
arg=$(tr -d '-' <<< ${1,,})
if [[ $arg == "6" ]]; then
slot6=1
shift
elif [[ $arg == "rom1" ]]; then
rom=ROM1
shift
elif [[ $arg == "rom3" ]]; then
rom=ROM3
shift
elif [[ $arg == "n" ]]; then
noDisks=1
shift
elif [[ $arg == "g" ]]; then
gisk=1
shift
elif [[ $arg == "i" ]]; then
installDisks=1
shift
elif [[ $arg == "y" ]]; then
autoAnswerYes=1
shift
elif [[ $arg == "k" ]]; then
kegs=1
shift
else
echo "Usage: $emulatorSetup [rom1|rom3] [-6] [-y [-g|-i|-n]]"
echo "rom1: use GS ROM 01"
2016-02-04 05:42:41 +00:00
echo "rom3: use GS ROM 3"
2016-01-23 16:10:23 +00:00
echo "-k: set up KEGS (rather than GSport)"
echo "-6: put blank disks in slot 6"
echo "-y: auto-answer yes (no prompting)"
echo "-i: use GS/OS and Spectrum installer disk images (use with -y)"
echo "-g: use GSport Internet Starter Kit disk image (use with -y)"
echo "-n: don't provide any disk images (use with -y)"
exit 1
fi
done
if [[ $kegs ]]; then
emulatorName="KEGS"
emulatorStart="kegs"
emulatorSetup="kegs-setup"
romFileName="rom.kegs"
configFileName="config.kegs"
fi
echo
if [[ ! -f /usr/local/lib/$romFileName ]]; then
echo "$emulatorName needs to be set up. This may take several minutes."
if [[ ! $autoAnswerYes ]]; then
echo -n "Do you want to set up $emulatorName now? ";
read
if [[ ${REPLY:0:1} != "Y" && ${REPLY:0:1} != "y" ]]; then
exit 1
fi
fi
echo "Ok, let's go!"
echo
fi
if [[ ! $autoAnswerYes ]]; then
noDisks=
gisk=
while true; do
option1=0
option2=0
echo
echo "Do you want to:"
echo
if [[ $acmdOK ]]; then
[[ $kegs ]] && andSpectrum= || andSpectrum="and Spectrum "
echo "1) install GS/OS ${andSpectrum}from the installer disk images"
option1=1
fi
if [[ ! $kegs ]]; then
echo "2) use the premade GSport Internet Starter Kit hard drive image"
option2=2
fi
echo "3) prepare $emulatorName for use but don't provide any disk images"
echo "4) do nothing and quit"
echo
echo -n "Your choice: "
read
noDisks=
if [[ ${REPLY} == "4" ]]; then
[[ $0 == "-bash" ]] && return 1 || exit 1
elif [[ ${REPLY} == "3" ]]; then
noDisks=1; break
elif [[ ${REPLY} == $option2 ]]; then
gisk=1; break
elif [[ ${REPLY} == $option1 ]]; then
gisk=; break
fi
done
fi
sudo mkdir -p "$imagesDir"
sudo chmod ugo+rw "$imagesDir"
mkdir -p "$tempDir"
cd "$tempDir"
echo "Updating package lists..."
sudo apt-get -y update > /dev/null
if [[ ! -f /usr/local/bin/unar ]]; then
echo "Installing The Unarchiver..."
sudo apt-get -y install libgnustep-base1.22
sudo apt-get -y clean
wget -qO- appleii.ivanx.com/a2cloud/setup/unar.tgz | sudo tar Pzx
fi
if [[ ! -f /usr/local/bin/mkpo ]]; then
echo "Installing mkpo..."
sudo wget -qO /usr/local/bin/mkpo appleii.ivanx.com/a2cloud/setup/mkpo.txt
sudo chmod ugo+x /usr/local/bin/mkpo
fi
if [[ ! -f /usr/local/bin/nulib2 ]]; then
echo "Installing nulib2..."
wget -qO- appleii.ivanx.com/a2cloud/setup/nulib2.tgz | sudo tar Pzx
fi
if [[ ! -f $imagesDir/ROM1 ]]; then
echo "Getting GS ROM 01..."
wget -qO ROM1.zip http://web.archive.org/web/20130216031247/http://www.whatisthe2gs.apple2.org.za/files/rom1.zip
unzip ROM1.zip &> /dev/null
mv APPLE2GS.ROM $imagesDir/ROM1
chmod ugo-w $imagesDir/ROM1
fi
if [[ ! -f $imagesDir/ROM3 ]]; then
echo "Getting GS ROM 3..."
wget -qO ROM3.zip http://web.archive.org/web/20130216031247/http://www.whatisthe2gs.apple2.org.za/files/rom3.zip
unzip ROM3.zip &> /dev/null
mv APPLE2GS.ROM2 $imagesDir/ROM3
chmod ugo-w $imagesDir/ROM3
fi
if [[ ! -f /usr/local/lib/$romFileName || $arg ]]; then
echo "Setting $emulatorName to use $rom..."
echo " (to change, use '$emulatorSetup rom1' or '$emulatorSetup rom3')"
sudo rm /usr/local/lib/$romFileName &> /dev/null
sudo ln -s $imagesDir/$rom /usr/local/lib/$romFileName &> /dev/null
sudo ln -s $romFileName /usr/local/lib/ROM &> /dev/null
fi
if [[ $slot6 ]]; then
echo "Putting blank disks in slot 6..."
sudo sed -i 's@^s6d1.*$@s6d1 = $imagesDir/slot6drive1.po@' /usr/local/lib/$configFileName
sudo sed -i 's@^s6d2.*$@s6d2 = $imagesDir/slot6drive2.po@' /usr/local/lib/$configFileName
if [[ ! -f $imagesDir/slot6drive1.po || ! -f $imagesDir/slot6drive2.po ]]; then
wget -qO- ivanx.com/a2cloud/files/slot6.tgz | sudo tar Pzx 2> /dev/null
fi
fi
if [[ ! $kegs ]]; then
# set AppleTalk to turbo (works more reliably than Normal)
echo "Setting AppleTalk to turbo..."
if ! grep -q 'g_appletalk_turbo' /usr/local/lib/$configFileName; then
if grep -q 'bram1\[00\]' /usr/local/lib/$configFileName; then
sudo sed -i 's/^\(bram1\[00\]\)/g_appletalk_turbo = 1\n\n\1/' /usr/local/lib/$configFileName
else
echo -e '\ng_appletalk_turbo = 1' | sudo tee -a /usr/local/lib/$configFileName > /dev/null
fi
fi
sudo sed -i 's/g_appletalk_turbo = 0/g_appletalk_turbo = 1/' /usr/local/lib/$configFileName
# enable Uthernet
echo "Enabling Uthernet card emulation..."
if ! grep -q 'g_ethernet[^_]' /usr/local/lib/$configFileName; then
if grep -q 'bram1\[00\]' /usr/local/lib/$configFileName; then
sudo sed -i 's/^\(bram1\[00\]\)/g_ethernet = 1\n\n\1/' /usr/local/lib/$configFileName
else
echo -e '\ng_ethernet = 1' | sudo tee -a /usr/local/lib/$configFileName > /dev/null
fi
fi
sudo sed -i 's/g_ethernet = 0/g_ethernet = 1/' /usr/local/lib/$configFileName
# GISK
if [[ $gisk ]]; then
echo "Getting GSport Internet Starter Kit..."
wget -O /tmp/GSport_Internet_Starter_Kit.zip http://sourceforge.net/projects/gsport/files/Emulator%20Software%20Images/GSport_Internet_Starter_Kit.zip
unzip -d /tmp /tmp/GSport_Internet_Starter_Kit.zip "GSport Internet Starter Kit/GSport Internet Starter Kit.2mg"
sudo mv "/tmp/GSport Internet Starter Kit/GSport Internet Starter Kit.2mg" $imagesDir
rm -r /tmp/GSport*
if [[ $(grep ^s7d1 /usr/local/lib/$configFileName) ]]; then
sudo sed -i "s:^s7d1.*$:s7d1 = $imagesDir/GSport Internet Starter Kit.2mg:" /usr/local/lib/$configFileName
else
echo "s7d1 = $imagesDir/GSport Internet Starter Kit.2mg" | tee -a /usr/local/lib/$configFileName > /dev/null
fi
noDisks=1
fi
if [[ $noDisks ]]; then
echo
echo
echo "Setup complete. You can now start $emulatorName."
echo
if [[ ! $autoAnswerYes ]]; then
echo -n "Press return to continue..."
read
fi
exit 0
fi
fi
# non-GISK; get installer disks
if [[ ! -f $imagesDir/INSTALL.HDV ]] \
|| [[ ! -f $imagesDir/SYSTEM.DISK.HDV ]] \
|| [[ ! -f $imagesDir/SYSTEMTOOLS1.HDV ]] \
|| [[ ! -f $imagesDir/SYSTEMTOOLS2.HDV ]] \
|| [[ ! -f $imagesDir/FONTS.HDV ]] \
|| [[ ! -f $imagesDir/SYNTHLAB.HDV ]] \
|| [[ ! -f $imagesDir/"$gsosHD" ]] \
|| [[ ! $kegs && ! -f $imagesDir/spectrum.hdv ]]; then
# if [[ ! $autoAnswerYes ]]; then
# echo
# echo -n "Do you want to download the GS/OS installer disks"
# if [[ ! -f $imagesDir/"$gsosHD" ]]; then
# echo -n -e "\nand create a hard disk image file"
# fi
# if [[ ! $kegs && -f /usr/local/bin/acmd && ! -f $imagesDir/spectrum.hdv ]]; then
# echo -n -e "\nand download Spectrum communications software"
# fi
# echo -n "? "
# read
# fi
REPLY="y"
if [[ $autoAnswerYes || ${REPLY:0:1} == "Y" || ${REPLY:0:1} == "y" ]]; then
echo
activeDisk=0
for diskname in Install System.Disk SystemTools1 SystemTools2 Fonts synthLAB; do
(( activeDisk++ ))
outfile="$imagesDir/$(tr [:lower:] [:upper:] <<< $diskname).HDV"
if [[ ! -f "$outfile" ]]; then
echo "Getting GS/OS disk ${activeDisk} of 6: $diskname"
wget -qO "Disk_${activeDisk}_of_7-$diskname.sea.bin" "http://archive.org/download/download.info.apple.com.2012.11/download.info.apple.com.2012.11.zip/download.info.apple.com%2FApple_Support_Area%2FApple_Software_Updates%2FEnglish-North_American%2FApple_II%2FApple_IIGS_System_6.0.1%2FDisk_${activeDisk}_of_7-$diskname.sea.bin"
unar -k skip "Disk_${activeDisk}_of_7-$diskname.sea.bin" &> /dev/null
truncate -s 819284 "Disk ${activeDisk} of 7-${diskname}.sea"
dd if="Disk ${activeDisk} of 7-${diskname}.sea" of=${outfile} bs=84 skip=1 &> /dev/null
chmod ugo-w "$outfile"
if [[ $activeDisk -eq 1 ]]; then
if [[ $(grep ^s5d1 /usr/local/lib/$configFileName) ]]; then
sudo sed -i "s:^s5d1.*$:s5d1 = $imagesDir/INSTALL.HDV:" /usr/local/lib/$configFileName
else
echo "s5d1 = $imagesDir/INSTALL.HDV" | tee -a /usr/local/lib/$configFileName > /dev/null
fi
else
if [[ $(grep ^s7d$activeDisk /usr/local/lib/$configFileName) ]]; then
sudo sed -i "s:^s7d$activeDisk.*$:s7d$activeDisk = $outfile:" /usr/local/lib/$configFileName
else
echo "s7d$activeDisk = $outfile" | tee -a /usr/local/lib/$configFileName > /dev/null
fi
fi
else
echo "GS/OS disk ${activeDisk} of 6: $diskname has already been downloaded."
fi
done
rm *.sea* &> /dev/null
if [[ ! -f $imagesDir/"$gsosHD" ]]; then
echo "Creating 32 MB blank image at $imagesDir/$gsosHD..."
if [[ -f /usr/local/bin/acmd ]]; then
# if acmd exists, make a ProDOS disk with GS-ShrinkIt and Teach
if [[ ! -f /usr/local/adtpro/lib/AppleCommander/AppleCommander-1.3.5.13id-ac.jar ]]; then
echo "Installing AppleCommander-1.3.5.13id..."
sudo mkdir -p /usr/local/adtpro/lib/AppleCommander
wget -qO /usr/local/adtpro/lib/AppleCommander/AppleCommander-1.3.5.13id-ac.jar http://downloads.sourceforge.net/project/applecommander/AppleCommander%20-%20Interim/testcase/AppleCommander-1.3.5.13id-ac.jar
rm /usr/local/adtpro/lib/AppleCommander/AppleCommander-ac.jar &> /dev/null
ln -s AppleCommander-1.3.5.13id-ac.jar /usr/local/adtpro/lib/AppleCommander/AppleCommander-ac.jar
fi
echo "Copying ProDOS..."
acmd -g "$imagesDir/INSTALL.HDV" PRODOS "PRODOS#ff0000"
#writecharsHex "PRODOS#ff0000" 0 "4C.00.C5.00"
wget -qO- ivanx.com/a2cloud/files/${emulatorName}SPLASH.SYS | dd of="PRODOS#ff0000" conv=notrunc &> /dev/null
echo "Copying Teach..."
cppo -e $imagesDir/SYSTEMTOOLS2.HDV /SYSTEMTOOLS2/TEACH . &> /dev/null
echo "Downloading GS-ShrinkIt..."
wget -qO- http://web.archive.org/web/20131031160750/http://nulib.com/library/gshk11.sea | nulib2 -x -e - GSHK &> /dev/null
nulib2 -a -e $gsosHD.shk "PRODOS#"* "GSHK#"* "TEACH#"* &> /dev/null
acmd -convert $gsosHD.shk $imagesDir/"$gsosHD" 65535
rm "PRODOS#"* "GSHK#"* "TEACH#"* $gsosHD.shk &> /dev/null
acmd -n $imagesDir/"$gsosHD" $gsosHDvolName
dd bs=512 count=1 conv=notrunc if="$imagesDir/INSTALL.HDV" of="$imagesDir/$gsosHD" 2> /dev/null
sudo chmod ugo+rw $imagesDir/"$gsosHD"
#acmd -p "$imagesDir/$gsosHD" PRODOS SYS < $tempDir/PRODOS
#rm $tempDir/PRODOS
fi
if [[ $(grep ^s7d1 /usr/local/lib/$configFileName) ]]; then
sudo sed -i "s:^s7d1.*$:s7d1 = $imagesDir/$gsosHD:" /usr/local/lib/$configFileName
else
echo "s7d1 = $imagesDir/$gsosHD" | tee -a /usr/local/lib/$configFileName > /dev/null
fi
fi
if [[ $(grep ^g_limit_speed /usr/local/lib/$configFileName) ]]; then
sudo sed -i "s:^g_limit_speed.*$:g_limit_speed = 0:" /usr/local/lib/$configFileName
else
echo "g_limit_speed = 0" | tee -a /usr/local/lib/$configFileName > /dev/null
fi
if [[ -f /usr/local/bin/acmd && ! $(acmd -ls $imagesDir/$gsosHD | grep 'GSHK') ]]; then
echo
echo "Downloading GS-ShrinkIt..."
wget -qO- http://web.archive.org/web/20131031160750/http://nulib.com/library/gshk11.sea | acmd -p $imagesDir/$gsosHD GS.SHRINKIT.SEA S16
fi
# Spectrum starts here
if [[ ! $kegs ]]; then
mkdir -p /tmp/spectrum
cd /tmp/spectrum
imageName="/tmp/spectrum/spectrum.dmg"
hfsName="/tmp/spectrum/spectrumH.dmg"
ullName="/tmp/spectrum/uthernet.bxy"
if [[ ! -f /usr/bin/hcopy || ! -f /usr/bin/macsave ]]; then
echo "Installing HFS utilities..."
sudo apt-get -y install hfsutils macutils &> /dev/null
else
echo "HFS utilities are already installed."
fi
if [[ ! -f /usr/local/adtpro/lib/AppleCommander/AppleCommander-1.3.5.13id-ac.jar ]]; then
echo "Installing AppleCommander..."
sudo mkdir -p /usr/local/adtpro/lib/AppleCommander
wget -qO /usr/local/adtpro/lib/AppleCommander/AppleCommander-1.3.5.13id-ac.jar http://downloads.sourceforge.net/project/applecommander/AppleCommander%20-%20Interim/testcase/AppleCommander-1.3.5.13id-ac.jar
rm /usr/local/adtpro/lib/AppleCommander/AppleCommander-ac.jar &> /dev/null
ln -s AppleCommander-1.3.5.13id-ac.jar /usr/local/adtpro/lib/AppleCommander/AppleCommander-ac.jar
fi
if [[ ! -f "$imageName" ]]; then
echo "Downloading Spectrum Deluxe..."
wget -qO spectrum.dmg http://www.wannop.info/speccie/software/spectrum_2.5.3_deluxe.dmg
else
echo "Spectrum Deluxe has already been downloaded."
fi
mkdir -p mnt
mkdir -p extract
mkdir -p shkstage
cp "$imageName" "$hfsName"
sudo mount -r -t hfs "$imageName" mnt
hmount "$hfsName"
IFS=''
cd /tmp/spectrum/mnt
find Spectrum.2.5.3 -type d | while read thisDirPath; do
mkdir -p /tmp/spectrum/shkstage/"$thisDirPath"
hcd
IFS='/'
for thisDir in $thisDirPath; do
hcd $thisDir
done
echo " Copying: $(hpwd)"
IFS=''
cd /tmp/spectrum/extract
hls -1 | while read thisFile; do
hcopy -m "$thisFile" - 2> /dev/null | macsave -f 2> /dev/null
if [[ -f "$thisFile".info ]]; then
if [[ $(readcharHex "$thisFile".info 65) == "70" ]]; then
fileType=$(readcharHex "$thisFile".info 66)
auxType=$(readcharHex "$thisFile".info 67)$(readcharHex "$thisFile".info 68)
else
auxType="0000"
fMac=$(readchars "$thisFile".info 65 4)
if [[ "$fMac" == "PS16" ]]; then
fileType="b3";
elif [[ "$fMac" == "PSYS" ]]; then
fileType="ff";
elif [[ "$fMac" == "BINA" ]]; then
fileType="00";
elif [[ "$fMac" == "TEXT" ]]; then
fileType="04";
elif [[ "$fMac" == "MIDI" ]]; then
fileType="D7";
elif [[ "$fMac" == "AIFF" || "$fMac" == "AIFC" ]]; then
fileType="D8";
elif [[ "$fMac" == "dImg" ]]; then
fileType="E0";
else
echo "WARNING: unknown file type '$fMac' found for file $thisFile"
fi
fi
[[ -f "$thisFile".rsrc ]] && mv "$thisFile".rsrc /tmp/spectrum/shkstage/"$thisDirPath"/"${thisFile}#${fileType}${auxType}r"
[[ -f "$thisFile".data ]] && mv "$thisFile".data /tmp/spectrum/shkstage/"$thisDirPath"/"${thisFile}#${fileType}${auxType}"
rm "$thisFile".info 2> /dev/null
fi
done
cd /tmp/spectrum/mnt
done
cd /tmp/spectrum/shkstage/Spectrum*
humount
sudo umount /tmp/spectrum/mnt
mkdir -p Marinetti/Uthernet
cp SAFE2.Archive/Link.Layers/"Uthernet#bc4083" Marinetti/Uthernet
echo -n "After installing Marinetti, put Uthernet in the TCPIP folder of your System folder, and restart GS/OS. Then open Control Panels, choose TCP/IP, and choose Setup Connection. Choose Uthernet for the link layer. Under Primary Domain Name Server, enter 8.8.8.8, then click Configure and select Slot 3 and DHCP. Then click Save." > Marinetti/Uthernet/"Uthernet.README#040000"
echo "Making archive for conversion to disk image..."
rm /tmp/spectrum/spectrum.shk 2> /dev/null
nulib2 -a -r -0 -e /tmp/spectrum/spectrum.shk * &> /dev/null
echo "Converting archive to disk image..."
acmd -convert /tmp/spectrum/spectrum.shk $imagesDir/spectrum.hdv 20480
acmd -n $imagesDir/spectrum.hdv SPECTRUM.DELUXE
if [[ $(grep ^s7d7 /usr/local/lib/$configFileName) ]]; then
sudo sed -i "s:^s7d7.*$:s7d7 = $imagesDir/spectrum.hdv:" /usr/local/lib/$configFileName
else
echo "s7d7 = $imagesDir/spectrum.hdv" | tee -a /usr/local/lib/$configFileName > /dev/null
fi
cd /tmp
rm -rf /tmp/spectrum/extract /tmp/spectrum/shkstage /tmp/spectrum/spectrum.shk /tmp/spectrum/mnt &> /dev/null
fi
# Spectrum ends here
fi
fi
cd
rm -r "$tempDir"
echo
echo
if [[ -f "$imagesDir/$gsosHD" ]]; then
echo
echo "You can now start $emulatorName."
echo "When the installer boots, you can click Easy Update or Customize"
echo "to install GS/OS, if you downloaded the installer disks aobve."
else
# if no acmd, create unformatted disk
# requires that the disk first be formatted with Advanced Disk Utility
dd bs=512 count=65535 if=/dev/zero of=$imagesDir/"$gsosHD" 2> /dev/null
writecharsHex $imagesDir/"$gsosHD" 0 "00.4C.00.C5.00"
echo
echo "You can now start $emulatorName."
echo
echo "If you downloaded the installer disks above:"
echo "When the installer boots, quit it, change to the SystemTools1 disk,"
echo "run Advanced Disk Utility, click Disk until a hard drive icon appears"
echo "that says Uninitialized, and initialize it. Then quit Advanced Disk"
echo "Utility, change to the Install Disk, and run Installer. When it loads,"
echo "click Easy Update or Customize to install GS/OS."
echo
fi
echo "When it's done, reboot."
echo "(Use Shut Down, ctrl-F12, or ctrl-solidapple-equals.)"
if [[ -f "$imagesDir/spectrum.hdv" ]]; then
echo
echo "Then on the Spectrum disk, optionally install:"
echo "Marinetti (plus update): TCP/IP driver for GS/OS"
echo "Uthernet: Ethernet driver for Marinetti"
echo "Spectrum: serial and telnet communications"
echo "SAFE: FTP client"
echo "SNAP: Usenet newsgroups (NNTP) client"
echo "SAM2: Email (POP) client"
fi
echo
echo "After installing, press F4 and choose 'Disk Configuration' to"
echo "eject all disks other than slot 7 drive 1."
echo
if [[ ! $autoAnswerYes ]]; then
echo -n "Press return to continue..."
read
fi