#!/bin/sh
#for 16bit Verilog Memory Model
usage() {
echo "$0 binary_file_name start_address"
}

if [ "$#" -ne 3 ]
then
	usage
	exit 1
elif [ ! -f $1 ]
then
	echo "cannot open $1"
	exit 1
fi
ENDIAN=$3
START_ADDRESS=$2
BINARY_FILE=$1
SOURCE_FILE=${BINARY_FILE}.txt
SOURCE_FILE2=${BINARY_FILE}.test.txt

#generate the ascii-representd binary file
#echo "@"$START_ADDRESS >${SOURCE_FILE}
hexdump -v -e '4/1 "%02x""\n"' ${BINARY_FILE} >${SOURCE_FILE}
hexdump -v -e '8/1 "%02x""\n"' ${BINARY_FILE} >${SOURCE_FILE2}

rm -f ${SOURCE_FILE}.00
rm -f ${SOURCE_FILE}.01
rm -f ${SOURCE_FILE}.02
echo "@"$START_ADDRESS>${SOURCE_FILE}.00
echo "@"$START_ADDRESS>${SOURCE_FILE}.01
echo "@"$START_ADDRESS>${SOURCE_FILE}.02
#change to 8 bit
#awk -F ""  '{printf("%s%s\n", $5,$6); printf("%s%s\n", $1,$2)}' < ${SOURCE_FILE} >> ${SOURCE_FILE}.00
#awk -F ""  '{printf("%s%s\n", $7,$8); printf("%s%s\n", $3,$4)}' < ${SOURCE_FILE} >> ${SOURCE_FILE}.01

if [ $ENDIAN = 'EL' ]
then
echo "Building asc for little endian..."
awk -F ""  '{printf("%s%s\n", $7,$8); printf("%s%s\n", $5,$6); printf("%s%s\n", $3,$4); printf("%s%s\n", $1,$2)}' < ${SOURCE_FILE2} >> ${SOURCE_FILE}.00
awk -F ""  '{printf("%s%s\n", $15,$16); printf("%s%s\n", $13,$14); printf("%s%s\n", $11,$12); printf("%s%s\n", $9,$10)}' < ${SOURCE_FILE2} >> ${SOURCE_FILE}.01
awk -F ""  '{printf("%s%s%s%s\n", $9,$10,$1,$2); printf("%s%s%s%s\n", $11,$12,$3,$4); printf("%s%s%s%s\n", $13,$14,$5,$6); printf("%s%s%s%s\n", $15,$16,$7,$8)}' <${SOURCE_FILE2} >> ${SOURCE_FILE}.02
else
echo "Building asc for big endian..."
awk -F ""  '{printf("%s%s\n", $7,$8); printf("%s%s\n", $5,$6); printf("%s%s\n", $3,$4); printf("%s%s\n", $1,$2)}' < ${SOURCE_FILE2} >> ${SOURCE_FILE}.00
awk -F ""  '{printf("%s%s\n", $15,$16); printf("%s%s\n", $13,$14); printf("%s%s\n", $11,$12); printf("%s%s\n", $9,$10)}' < ${SOURCE_FILE2} >> ${SOURCE_FILE}.01
awk -F ""  '{printf("%s%s%s%s\n", $7,$8,$15,$16); printf("%s%s%s%s\n", $5,$6,$13,$14); printf("%s%s%s%s\n", $3,$4,$11,$12); printf("%s%s%s%s\n", $1,$2,$9,$10)}' <${SOURCE_FILE2} >> ${SOURCE_FILE}.02
fi

rm -f {SOURCE_FILE}.asc
echo "@4000">${SOURCE_FILE}.asc
cat ${SOURCE_FILE2}>>${SOURCE_FILE}.asc

