#!/bin/sh prg=$(basename "$0") # parse arguments while getopts f:h optname do case $optname in f) port="$OPTARG" ;; *) help=1 ;; esac done shift `expr $OPTIND - 1` old="$1" new="$2" if [ -z "$old" -o "$help" = "-h" -o "$#" -gt 2 ] then echo "usage: $0 [-f ] []" >&2 echo "Convert to instructions to update instructions." >&2 echo "With , generate instructions to update EEPROM changes only." >&2 echo "Optionally write such changes directly if if given." >&2 exit 1 fi set -e instr=$(mktemp) trap "rm -f \"$instr\"" EXIT convert() { sed -ne 's/^\([0-9a-f]\{4\}\) \([0-9a-f ]*\)$/D3 Ax\1 C16 X\2/p' "$@" } if [ -z "$new" ]; then # convert the instructions to updates convert "$old" > "$instr" else tmp1=$(mktemp) tmp2=$(mktemp) trap "rm -f \"$tmp1\" \"$tmp2\"" EXIT convert "$old" > "$tmp1" convert "$new" > "$tmp2" comm -13 "$tmp1" "$tmp2" > "$instr" fi # write the instructions if requested if [ -z "$port" ]; then cat "$instr" else printcore -v "$port" "$instr" fi