#!/bin/sh

# $1 = implpath

# installation script for UQLX


IMPL_PATH=$1
if [ -z "$IMPL_PATH" ] ; then
  echo "syntax: $0 IMPL_PATH" 
  exit 1
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 [ -e $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`
}

setup_filesystems()
{
      addentry MDV1 "DEVICE = MDV1,$HOME/mdv1/" "mkdir -p $HOME/mdv1"
      if [ -e $HOME/mdv1 ] ; then
         [ -e $HOME/mdv1/BOOT ] || cp $IMPL_PATH/BOOT.test $HOME/mdv1/BOOT
      fi
      addentry MDV2 "DEVICE = MDV2,$HOME/mdv2/" "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"
      addentry RAM2 "DEVICE = RAM2,/tmp/.ram2-%x,clean"
      addentry RAM8 "DEVICE = RAM8,/tmp/.ram8-%x,clean"
      [ -e /dev/cdrom ] &&
	addentry CD1 "DEVICE = CD1,/dev/cdrom"
}
setup_roms()
{
    addentry ROMDIR "ROMDIR = $IMPL_PATH/romdir"
    addentry SYSROM "SYSROM = js_rom"
    addentry ROMIM "ROMIM = tk2_ext,0xc000"
    [ -e $IMPL_PATH/romdir/tk2_ext ] ||
	echo "$IMPL_PATH/romdir/tk2_ext not found, you need to install your own TK2"
}
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 [ -e $OUTFILE ] ; then
 confirm "Overwrite existing $OUTFILE ?" || exit
fi

[ -e $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***********"

