#!/bin/csh -f
# Try cassette.sh instead if you do not have /bin/csh.
# $Id: cassette,v 1.9 2008/06/26 04:39:56 mann Exp $

set done = 0
set control_file = '.cassette.ctl'
set default_format = '1'
set format_name = ( 'cas' 'cpt' 'wav' 'direct' 'debug' )

if(! -e $control_file) then
	echo "Creating" $control_file
	echo "cassette.$format_name[$default_format] 0 $default_format" \
	    > $control_file
endif

while($done != 1)
	set control = `cat $control_file`
	set filename = $control[1]
	set position = $control[2]
	if (${#control} < 3) then
	    set format = $default_format
	else
	    set format = $control[3]
	endif
	if ({ test -e $filename }) then
	    set isnew = ""
	else
	    set isnew = " (new)"
	endif
	echo ""
	echo "Tape loaded: " $filename$isnew
	echo "Type:        " $format_name[$format]
	echo "Position:    " $position
	echo ""
	echo -n "Command: "
	set command = "$<"
	set command = ( $command )

	if($#command < 1) then
	    set command = "help"
	endif
	switch($command[1])

	    case "pos":
		breaksw
	
	    case "load":
	    case "file":
		if($#command != 2) then
		    echo "Must specify a file name"
		else
		    switch($command[2])
			case *.cas:
			case *.bin:
			    set format = 1
			    breaksw
			case *.cpt:
			    set format = 2
			    breaksw
			case *.wav:
			    set format = 3
			    breaksw
			case "/dev/dsp*":
			    set format = 4
			    breaksw
			case *.debug:
			    set format = 5
			    breaksw
			default:
			    set format = $default_format
			    breaksw
		    endsw
		    echo $command[2] 0 $format > $control_file
		endif
		breaksw

	    case "type":
		if($#command != 2) then
		    echo "Types are:"
		    echo "  " $format_name
		else
		    switch($command[2])
			case "cas":
			    set format = 1
			    breaksw
			case "cpt":
			    set format = 2
			    breaksw
			case "wav":
			    set format = 3
			    breaksw
			case "direct":
			    set format = 4
			    set filename = "/dev/dsp"
			    set position = 0
			    breaksw
			case "debug":
			    set format = 5
			    breaksw
			default:
			    echo "Types are:"
			    echo "  " $format_name
			    breaksw
		    endsw
		    echo $filename $position $format > $control_file
		endif
		breaksw

	    case "rew":
		if($#command == 2) then
		    @ position = $command[2]
		else
		    @ position = 0
		endif

		echo $filename $position $format > $control_file
		breaksw

	    case "ff":
		if($#command == 2) then
		    @ position = $command[2]
		else
		    set wcout = `wc -c $filename`
		    @ position = $wcout[1]
		endif

		echo $filename $position $format > $control_file
		breaksw

	    case "quit":
	    case "exit":
	    case "done":
		set done = 1
		breaksw

	    case "help":
	    default:
		echo "Commands are:"
		echo "  pos"
		echo "  load filename"
		echo "  type {$format_name}"
		echo "  rew [position]"
		echo "  ff [position]"
		echo "  quit"
		breaksw

	endsw
end

exit 0
