apple2048/apple2048/make/createDiskImage

209 lines
4.9 KiB
Plaintext
Raw Normal View History

2014-09-10 03:13:18 +00:00
#!/bin/sh
if [ $# -lt 5 ]
2014-09-10 03:13:18 +00:00
then
echo USAGE: $0 '<AppleCommander> <machine> <diskimage> <binary>'
exit 1
fi
2014-11-19 04:54:53 +00:00
if [ -z "$JAVA" ]
then
for item in "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home" /Library/Java/JavaVirtualMachines/*/Contents/Home /usr
do
if [ -x "$item/bin/java" ]
then
JAVA="$item/bin/java"
break
fi
done
fi
if [ -z "$JAVA" ]
then
echo Cannot find a path to a Java runtime.
echo Go to https://java.com/download if you do not have Java.
echo If you do have Java, you may need to uncomment the JAVA
echo line in the Makefile and set it to the path for your
echo Java runtime binary.
exit 1
fi
2014-09-10 03:13:18 +00:00
APPLECOMMANDER=$1
MACHINE=$2
DISKIMAGE=$3
PROGRAM=$4
STARTADDR=`echo $5 | sed 's/^0*//'`
2014-09-10 03:13:18 +00:00
if [ ! -f "$PROGRAM" ]
then
echo "Cannot file executable $PROGRAM"
exit 1
fi
case "$MACHINE" in
apple2)
TEMPLATE="make/prodos_template.dsk"
DELETELOADER=1
RENAMELOADER=0
DELETEBASIC=0
HASHEADER=1
FILETYPE="bin"
TARGETFILE=`basename $PROGRAM`
2014-11-19 04:54:53 +00:00
MAXFILENAMELEN=15
2014-09-10 03:13:18 +00:00
;;
apple2enh)
TEMPLATE="make/prodos_template.dsk"
DELETELOADER=1
RENAMELOADER=0
DELETEBASIC=0
HASHEADER=1
FILETYPE="bin"
TARGETFILE=`basename $PROGRAM`
2014-11-19 04:54:53 +00:00
MAXFILENAMELEN=15
2014-09-10 03:13:18 +00:00
;;
apple2-dos33)
TEMPLATE="make/dos33_template.dsk"
DELETELOADER=0
RENAMELOADER=0
DELETEBASIC=0
HASHEADER=1
FILETYPE="bin"
TARGETFILE=`basename $PROGRAM`
2014-11-19 04:54:53 +00:00
MAXFILENAMELEN=30
2014-09-10 03:13:18 +00:00
;;
apple2enh-dos33)
TEMPLATE="make/dos33_template.dsk"
DELETELOADER=0
RENAMELOADER=0
DELETEBASIC=0
HASHEADER=1
FILETYPE="bin"
TARGETFILE=`basename $PROGRAM`
2014-11-19 04:54:53 +00:00
MAXFILENAMELEN=30
2014-09-10 03:13:18 +00:00
;;
apple2-system)
TEMPLATE="make/prodos_template.dsk"
DELETELOADER=1
RENAMELOADER=0
DELETEBASIC=1
HASHEADER=0
FILETYPE="sys"
TARGETFILE=`basename $PROGRAM`.system
2014-11-19 04:54:53 +00:00
MAXFILENAMELEN=15
2014-09-10 03:13:18 +00:00
;;
apple2enh-system)
TEMPLATE="make/prodos_template.dsk"
DELETELOADER=1
RENAMELOADER=0
DELETEBASIC=1
HASHEADER=0
FILETYPE="sys"
TARGETFILE=`basename $PROGRAM`.system
2014-11-19 04:54:53 +00:00
MAXFILENAMELEN=15
2014-09-10 03:13:18 +00:00
;;
apple2-loader)
TEMPLATE="make/prodos_template.dsk"
DELETELOADER=0
RENAMELOADER=1
DELETEBASIC=1
HASHEADER=1
FILETYPE="bin"
TARGETFILE=`basename $PROGRAM`
2014-11-19 04:54:53 +00:00
MAXFILENAMELEN=15
2014-09-10 03:13:18 +00:00
;;
apple2-reboot)
TEMPLATE="make/prodos_template.dsk"
DELETELOADER=0
RENAMELOADER=1
DELETEBASIC=1
HASHEADER=1
FILETYPE="bin"
TARGETFILE=`basename $PROGRAM`
2014-11-19 04:54:53 +00:00
MAXFILENAMELEN=15
2014-09-10 03:13:18 +00:00
;;
apple2enh-loader)
TEMPLATE="make/prodos_template.dsk"
DELETELOADER=0
RENAMELOADER=1
DELETEBASIC=1
HASHEADER=1
FILETYPE="bin"
TARGETFILE=`basename $PROGRAM`
2014-11-19 04:54:53 +00:00
MAXFILENAMELEN=15
2014-09-10 03:13:18 +00:00
;;
apple2enh-reboot)
TEMPLATE="make/prodos_template.dsk"
DELETELOADER=0
RENAMELOADER=1
DELETEBASIC=1
HASHEADER=1
FILETYPE="bin"
TARGETFILE=`basename $PROGRAM`
2014-11-19 04:54:53 +00:00
MAXFILENAMELEN=8
2014-09-10 03:13:18 +00:00
;;
*)
echo "Invalid machine type $MACHINE"
exit 1
;;
esac
2014-11-19 04:54:53 +00:00
if [ ${#TARGETFILE} -gt $MAXFILENAMELEN ]
then
echo "The filename $TARGETFILE exceeds the max name length of the filesystem ($MAXFILENAMELEN)"
exit 1
fi
2014-09-10 03:13:18 +00:00
if [ ! -f "$TEMPLATE" ]
then
echo "Cannot file template disk image $TEMPLATE"
exit 1
fi
cp "$TEMPLATE" "$DISKIMAGE"
if [ $DELETELOADER -eq 1 ]
then
2014-11-19 04:54:53 +00:00
"$JAVA" -jar "$APPLECOMMANDER" -d "$DISKIMAGE" LOADER.SYSTEM
2014-09-10 03:13:18 +00:00
fi
if [ $RENAMELOADER -eq 1 ]
then
2014-11-19 04:54:53 +00:00
LOADERFILE=${TARGETFILE}.system
if [ ${#LOADERFILE} -gt $MAXFILENAMELEN ]
then
echo "The filename $LOADERFILE exceeds the max name length of the filesystem ($MAXFILENAMELEN)"
rm -f "$DISKIMAGE"
exit 1
fi
"$JAVA" -jar "$APPLECOMMANDER" -e "$DISKIMAGE" LOADER.SYSTEM | "$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$LOADERFILE" sys
"$JAVA" -jar "$APPLECOMMANDER" -d "$DISKIMAGE" LOADER.SYSTEM
2014-09-10 03:13:18 +00:00
fi
if [ $DELETEBASIC -eq 1 ]
then
2014-11-19 04:54:53 +00:00
"$JAVA" -jar "$APPLECOMMANDER" -d "$DISKIMAGE" BASIC.SYSTEM
2014-09-10 03:13:18 +00:00
fi
if [ $HASHEADER -eq 1 ]
then
HDR_STARTADDR=`od -t x2 -N 2 < "$PROGRAM" | head -1 | awk '{print $2}' | sed 's/^0*//'`
if [ "$HDR_STARTADDR" = "$STARTADDR" ]
then
2014-11-19 04:54:53 +00:00
dd if="$PROGRAM" bs=4 skip=1 | "$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$TARGETFILE" $FILETYPE 0x$STARTADDR
else
2014-11-19 04:54:53 +00:00
"$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$TARGETFILE" $FILETYPE 0x$STARTADDR < "$PROGRAM"
fi
2014-09-10 03:13:18 +00:00
else
2014-11-19 04:54:53 +00:00
"$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$TARGETFILE" $FILETYPE < "$PROGRAM"
2014-09-10 03:13:18 +00:00
fi