1
0
mirror of https://github.com/fachat/xa65.git synced 2024-06-01 22:41:32 +00:00
xa65/xa/misc/mkrom.sh
2011-12-16 23:04:51 +01:00

93 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
#
# xa65 - 6502 cross assembler and utility suite
# mkrom.sh - assemble several 'romable' files into one binary
# Copyright (C) 1997 André Fachat (a.fachat@physik.tu-chemnitz.de)
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
XA="../xa"
FILE=../file65
start=32768
ende=65536
romfile=rom65
next=$[ start + 2 ];
pars="-A $next"
umask 077
tmp1=/tmp/mkrom65.sh.$$.a
tmp2=/tmp/mkrom65.sh.$$.b
tmp3=/tmp/mkrom65.sh.$$.c
echo -e "#include <stdio.h>\nvoid main(int argc, char *argv[]) { printf(\"%c%c\",atoi(argv[1])&255,(atoi(argv[1])/256)&255);}" \
> $tmp3;
cc $tmp3 -o $tmp2
while [ $# -ne 0 ]; do
case $1 in
-A) # get start address
start=$[ $2 ];
shift
;;
-E) # get end address
ende=$[ $2 ];
shift
;;
-R) # get ROM filename
romfile=$2;
shift
;;
-O) # xa options
XA="$XA $2";
shift
;;
-S) # segment addresses - in xa option format
pars="$pars $2";
shift
;;
*)
break;
;;
esac;
shift
done
#get file list
list="$*"
echo -n > $romfile
for i in $list; do
#echo "next=$next, start=$start, pars=$pars"
#echo "cmd= ${XA} -R $pars -o $tmp1 $i"
$XA -R $pars -o $tmp1 $i
pars=`$FILE -a 2 -P $tmp1`;
next=`$FILE -A 0 $tmp1`;
$tmp2 $next >> $romfile
cat $tmp1 >> $romfile;
done;
$tmp2 65535 >> $romfile
rm -f $tmp1 $tmp2 $tmp3