#!/usr/bin/env bash

ESX_DIR=esxdos/
ESX_IMAGE=esxdos.hdf

init() {
	esxdos_url=$(curl -s https://esxdos.org/index.html | grep "Get the latest" | grep -o '<a .*href=.*>' | sed -e 's/<a/\n<a/g' | sed -e 's/<a .*href=['"'"'"]//' -e 's/["'"'"'].*$//' -e '/^$/ d')

	mkdir -p $ESX_DIR
	wget -q -P $ESX_DIR $esxdos_url
	unzip -q -d $ESX_DIR $ESX_DIR/*.zip

	git clone -q https://github.com/z00m128/diso.git $ESX_DIR/diso/

	echo -e "Actual ESXDOS downloaded\n"
}

build() {
	image_size=$(du -s -B 512 $ESX_DIR | awk '{print $1}')
	image_size=$(($image_size * 512))
	image_size=$(($image_size + 8388608)) # add 8M of free space

	echo "size: $image_size"
	fallocate -l $image_size $ESX_IMAGE.data
	/sbin/mkfs.fat -n ESXDOS -F32 $ESX_IMAGE.data

	mcopy -i "$ESX_IMAGE.data" -s $ESX_DIR/ "::"

	# /usr/sbin/fatsort $ESX_IMAGE.data

	raw2hdf -v 1.1 $ESX_IMAGE.data $ESX_IMAGE
	rm $ESX_IMAGE.data
}

run() {
	fuse --divide --divide-masterfile=$ESX_IMAGE --tape=$ESX_DIR/ESXIDE.TAP
}

cleanup() {
	rm -rf $ESX_IMAGE $ESX_DIR
}

help() {
	echo "usage: $0 <command>
Commands are:
  init:    Download actual version of ESXDOS and DISO
  build:   Create HDF file for the emulator
  run:     Run the emulator
  cleanup: Delete all data
  help:    This help
"
}

case "$1" in
'init')
  init
  ;;
'build')
  build
  ;;
'run')
  run
  ;;
'cleanup')
  cleanup
  ;;
'help')
  help
  ;;
*)
  echo "usage $0 init|build|run|cleanup|help"
esac

