VolksForth/6502/C64/emulator/run-in-vice.sh

67 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
set -e
test -n "$VICE" || VICE=x64
test -n "$DISK9" || DISK9=empty
test -n "$DISK10" || DISK10=empty
test -n "$DISK11" || DISK11=empty
emulatordir="$(realpath --relative-to="$PWD" "$(dirname "${BASH_SOURCE[0]}")")"
basedir="$(realpath --relative-to="$PWD" "${emulatordir}/..")"
executable="${1}"
keybuf="${2}"
autostart=""
if [ -n "${executable}" ]
then
autostart="-autostart ${emulatordir}/${executable}.T64"
fi
warp=""
if [ -n "${keybuf}" ]
then
# keybuf="${2}"
# The following could also just be a cp.
ascii2petscii "${emulatordir}/notdone" "${basedir}/cbmfiles/notdone"
warp="-warp"
# Magic env variable KEEPEMU: Only if not set, send in the final CR.
if [ -z "${KEEPEMU}" ]; then
keybuf="${keybuf}\n"
fi
fi
"$VICE" \
-virtualdev \
+truedrive \
-drive8type 1541 \
-drive9type 1541 \
-drive10type 1541 \
-drive11type 1541 \
-fs8 "${basedir}/cbmfiles" \
-9 "${basedir}/disks/${DISK9}.d64" \
-10 "${basedir}/disks/${DISK10}.d64" \
-11 "${basedir}/disks/${DISK11}.d64" \
-symkeymap "${emulatordir}/x11_sym_vf_de.vkm" \
-keymap 2 \
$autostart \
-keybuf "$keybuf" \
$warp \
&
if [ -n "$keybuf" ]
then
while [ -f "${basedir}/cbmfiles/notdone" ]
do sleep 1
done
sleep 0.5
kill9log="${basedir}/kill-9.log"
vicepid="$(jobs -p %1)"
kill %1
(sleep 20; ps -q "${vicepid}" -f --no-headers && \
(kill -9 "${vicepid}" ; date)) >> "${kill9log}" 2>&1 &
fi
wait %1 || echo "x64 returned $?"