#!/bin/sh

# $1 = implpath

# installation script for UQLX


IMPL_PATH=$1
if [ -z "$IMPL_PATH" ] ; then
  echo "syntax: $0 IMPL_PATH" 
  exit 1
fi

# prefer files in $HOME/lib/uqlx if existing

if [ -d "$HOME/lib/uqlx" ] ; then
   IMPL_PATH="$HOME/lib/uqlx"
fi

# some fallback values
if [ ! -d "$IMPL_PATH" ] ; then
    if [ -d /usr/local/lib/uqlx ] ; then
      IMPL_PATH=/usr/local/lib/uqlx
    elif [ -d /usr/lib/uqlx ] ; then
      IMPL_PATH=/usr/lib/uqlx
    elif [ -d $HOME/lib/uqlx ] ; then
      IMPL_PATH=$HOME/lib/uqlx
    fi
fi

# various helper functions
#
confirm()
{
    echo "$1"
    while true ; do
      read ans
      case $ans in
         y) return 0;;
	 n) return 1;;
	 *) echo "Please answer 'y' or 'n'"
      esac
    done
}

sys_guess_floppy()
{
   XOS=`uname`
   XOSREL=`uname -r`

   case $XOS in
	*Linux*|*linux*)
	   echo "/dev/fd0";;
   	SunOS)
	   if [ "$OSTYPE" = "solaris" ] ; then
		echo "/vol/dev/aliases/floppy0"
	   else
		echo "/dev/rfd0"
	   fi
	;;
	*) echo "don't know default name for floppy on $XOS" 1>2 
	   echo "" ;;
   esac
}

# addentry: key , complete value, command if added
#   if key in OUTFILE ask confirmation and remove old line,
#   otherwise just add value and execute command
addentry()
{
    if [ -f $OUTFILE ] ; then
	old_val=`grep $1 $OUTFILE`
	if [ -n "$old_val" ] ; then
	   confirm "replace $old_val with $2 ?" || return 
	   grep -v $1 $OUTFILE >${OUTFILE}.new; mv ${OUTFILE}.new $OUTFILE 
	fi
    fi
    echo "$2" >> $OUTFILE
    [ -n "$3" ] && `$3`
}
second()
{
    echo "$2"
}
setup_filesystems()
{
      addentry MDV1 "DEVICE = MDV1,$HOME/mdv1/,qdos-like" "mkdir -p $HOME/mdv1"
      if [ -d $HOME/mdv1 ] ; then
         [ -f $HOME/mdv1/BOOT ] || cp $IMPL_PATH/BOOT.test $HOME/mdv1/BOOT
      fi
      addentry MDV2 "DEVICE = MDV2,$HOME/mdv2/,qdos-like" "mkdir -p $HOME/mdv2"
      addentry WIN1 "DEVICE = WIN1,$HOME"
      floppy=`sys_guess_floppy`
      [ -n "$floppy" ] && 
	addentry FLP1 "DEVICE = FLP1,$floppy,qdos-fs" 
      addentry RAM1 "DEVICE = RAM1,/tmp/.ram1-%x,clean,qdos-like"
      addentry RAM2 "DEVICE = RAM2,/tmp/.ram2-%x,clean,qdos-like"
      addentry RAM8 "DEVICE = RAM8,/tmp/.ram8-%x,clean,qdos-like"
      [ -n "`grep cdrom /etc/fstab`" ] &&
	cdrom=`grep cdrom /etc/fstab`
      cdrom=`second $cdrom`
      [ -z "$cdrom" -a -d /dev/cdrom ] && cdrom=/cdrom
      [ -n "$cdrom" ] && addentry CD1 "DEVICE = CD1,$cdrom"
}
setup_roms()
{
    addentry ROMDIR "ROMDIR = $IMPL_PATH/romdir"
    addentry SYSROM "SYSROM = js_rom"
    addentry ROMIM "ROMIM = tk2_ext,0xc000"
    [ -f $IMPL_PATH/romdir/tk2_ext ] ||
	echo "$IMPL_PATH/romdir/tk2_ext not found, you need to install your own TK2"
    [ -f $IMPL_PATH/romdir/minerva_rom ] || ln -s $IMPL_PATH/romdir/min.189 $IMPL_PATH/romdir/minerva_rom
}
setup_ram()
{
    addentry RAMTOP "RAMTOP = 4096"
}
setup_other()
{
    addentry PRINT "PRINT = lpr"
    addentry CPU_HOG "CPU_HOG = 0"
    addentry XKEY_ALT "#XKEY_ALT = Mode_switch   # use this to have AltGr as QDOS altkey"
    addentry FAST_STARTUP "FAST_STARTUP = 1 "
}

## here is the main stuff

OUTFILE=$HOME/.uqlxrc
if [ -f $OUTFILE ] ; then
 confirm "Overwrite existing $OUTFILE ?" || exit
fi

[ -f $OUTFILE ] || echo -e "# Automaticaly generated configuration\n# See ${IMPL_PATH}.uqlxrc for more examples\n" >$OUTFILE

setup_roms
setup_ram
setup_other
setup_filesystems
echo -e "***********\nCreated $OUTFILE, see manual for more details\n***********"

