Mercurial > sos > sos
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