view scripts/gen_ccws.sh @ 0:5d9f272f4db6

import template
author Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
date Thu, 24 Feb 2011 23:04:37 -0500
parents
children 180108494f08
line wrap: on
line source

#!/bin/bash

len=`stat -c %s ipl/setmode.rto`
len=`expr $len + $(stat -c %s ipl/loader.rto)`
dif=`expr $len % 80`

if [ $dif -ne 0 ]; then
	len=`expr $len - $dif`
	len=`expr $len + 80`
fi

len=`expr $len \/ 80`

# 13 CCWs * 80 bytes/ccw = 1040 bytes
if [ $len -gt 13 ]; then
	echo "ERROR: loader code is too long ($len CCWs needed)" >&2
	exit 1
fi

echo -n "" > "$1"

addr=8388608 # == 0x800000
flags="0x60"
for x in `seq 1 $len`; do
	high_addr=`expr $addr \/ 65536`
	mid_addr=`expr $(expr $addr \/ 256) % 256`
	low_addr=`expr $addr % 256`

	[ $x -eq $len ] && flags="0x20"

	echo "# CCW $x" >> "$1"
	echo "	.byte	0x02, $high_addr, $mid_addr, $low_addr" >> "$1"
	echo "	.byte	$flags, 0x00, 0x00, 0x50" >> "$1"
	echo "" >> "$1"

	addr=`expr $addr + 80`
done

echo "# pad" >> "$1"
for x in `seq $len 19`; do
	echo "	.byte	0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40" >> "$1"
done