#!/bin/bash
rootdir=$(pwd)
[[ -z $1 ]] && zver=1.37 || zver=$1
cd $rootdir
function fetchz80pack () {
echo ""
echo "================================================"
echo " Fetching Z80Pack "
echo "================================================"
echo ""
case $zver in
master | dev ) git clone
https://github.com/udo-munk/z80pack.git
cd $rootdir/z80pack
git checkout $zver
cd $rootdir
;;
1.37 | 1.36 )
echo "--------------------------"
echo Installing zpack80-$zver.tgz
echo "--------------------------"
wget
https://www.autometer.de/unix4fun/z80pack/ftp/z80pack-$zver.tgz && tar -xvf z80pack-$zver.tgz && rm z80pack-$zver.tgz
mv z80pack-$zver z80pack
cd $rootdir
;;
* ) echo "Please specify the version of Z80Pack to install:"
echo ""
echo " ./doit xxxx"
echo ""
echo "Where 'xxxx' is one of dev master 1.36 1.37"
exit 1
;;
esac
}
function frontpanel () {
echo ""
echo "================================================"
echo " Building Frontpanel "
echo "================================================"
echo ""
cd $rootdir/z80pack/frontpanel
make -f Makefile.linux
echo "Enter your password if prompted:"
sudo cp libfrontpanel.so /usr/lib
cd $rootdir
}
function webfrontend () {
echo ""
echo "================================================"
echo " Building Webfrontend "
echo "================================================"
echo ""
cd $rootdir/z80pack/webfrontend/
rm -r civetweb/
git clone
https://github.com/civetweb/civetweb.git
cd civetweb
git checkout 7259a80
make lib WITH_WEBSOCKET=1 COPT='-DNO_SSL -DNO_CACHING'
cd $rootdir
}
function cromemco () {
echo ""
echo "================================================"
echo " Building Cromemco "
echo "================================================"
echo ""
cd $rootdir/z80pack/cromemcosim/srcsim/
sed -i '46s/.*/#define HAS_DISKMANAGER/' sim.h
sed -i '47s/.*/#define HAS_NETSERVER/' sim.h
make -f Makefile.linux
cd $rootdir
}
function imsai () {
echo ""
echo "================================================"
echo " Building Imsai "
echo "================================================"
echo ""
cd $rootdir/z80pack/imsaisim/srcsim/
sed -i '46s/.*/#define HAS_DISKMANAGER/' sim.h
sed -i '47s/.*/#define HAS_NETSERVER/' sim.h
make -f Makefile.linux
echo "Enter your password if prompted:"
sudo mkdir -p /usr/local/share/imsaisim/roms
sudo cp $rootdir/z80pack/imsaisim/roms/*.* /usr/local/share/imsaisim/roms
for i in cpm22 imdos202 imsai-cpm13 um-cpm13; do
sed -i '8s|.*|env $BOOTENV ./imsaisim -r -z $*|' $rootdir/z80pack/imsaisim/$i
done
for i in cpm3 imdos205r0 ; do
sed -i '9s|.*|env $BOOTENV ./imsaisim -r -z $*|' $rootdir/z80pack/imsaisim/$i
done
for i in ucsd ; do
sed -i '10s|.*|env $BOOTENV ./imsaisim -r -z $*|' $rootdir/z80pack/imsaisim/$i
done
cd $rootdir
}
function altair () {
echo ""
echo "================================================"
echo " Building Altair "
echo "================================================"
echo ""
cd $rootdir/z80pack/altairsim/srcsim
make -f Makefile.linux
cd $rootdir
}
function mostek () {
echo ""
echo "================================================"
echo " Building Mostek "
echo "================================================"
echo ""
cd $rootdir/z80pack/mosteksim/srcsim
make -f Makefile
cd $rootdir
}
function cpm () {
echo ""
echo "================================================"
echo " Building CP/M "
echo "================================================"
echo ""
cd $rootdir/z80pack/cpmsim/srcsim
make -f Makefile.linux
cd $rootdir
}
function tools () {
echo ""
echo "================================================"
echo " Compiling the tools dude! "
echo "================================================"
echo ""
cd $rootdir/z80pack/cpmsim/srctools
make
echo "Enter your password if prompted:"
sudo make install
mkdir -p ~/bin
PATH=$PATH:/home/nathanael/bin; export PATH
for i in bin2hex cpmr.sh cpmw.sh mkdskimg ptp2bin receive send; do cp $i ~/bin; done
chmod +777 /tmp/z80pack/cpmsim.aux*
cd $rootdir
}
function preflight () {
[[ -d ./z80pack ]] && { echo "Directory z80pack already exists. Remove it, then re-run this script."; exit 1; }
dependencies="sudo wget git build-essential libjpeg8-dev libx11-dev mesa-common-dev libglu1-mesa-dev freeglut3-dev libxmu-dev socat"
unset missing
echo ""
echo "---------------------------"
echo "Testing for dependencies..."
echo "---------------------------"
echo ""
for dependency in $dependencies; do
echo $dependency
dpkg -S $dependency >/dev/null 2>/dev/null || missing=$missing$dependency" "
done
[[ ! -z "$missing" ]] && {
echo ""
echo "-------------------------------------------------------------------------------"
echo "ERROR: Some dependencies are missing. They must be installed before continuing."
echo " They may be installed with: "
echo " "
echo " sudo apt-get install $missing "
echo " "
echo " Would you like to install these now? "
echo "-------------------------------------------------------------------------------"
echo ""
while true; do
read -p "Install now (Y/N)? " ans
case ans in
[yY]* ) sudo apt-get install $missing; exit 0 ;;
[nN]* ) echo " "
echo "-------------------------------------------------------------------------------"
echo " **** Z80Pack installation is not complete. "
echo "-------------------------------------------------------------------------------"
echo ""
exit 2
;;
* ) echo "Please answer Y or N."; break ;;
esac
done
} || {
echo ""
echo "All dependencies checked. Let's go!"
echo ""
}
}
# ==========
# MAIN
# ==========
preflight
fetchz80pack
frontpanel
[[ ! "$zver"=="1.36" ]] && webfrontend
cpm
tools
cromemco
imsai
altair
mostek
echo ""
echo "Z80Pack successfully installed! YAY!"
echo ""
exit 0