#! /usr/bin/perl # MP3 Player, Convert a STA013 configuration file to # intel hex, for downloading via PAULMON2. # Copyright (c) 2000, PJRC.COM, LLC # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. $addr = 0x3000; $num = 1; $cksum = 0; while (<>) { next unless /^([0-9]+) ([0-9]+)/; $a[$num] = $1; $v[$num] = $2; $cksum += $1; $cksum += $2; $num++; } $cksum &= 0xFFFF; # store the end memory location and a checksum # the firmware will check these to make sure there # is a valid sta013 config file available before sending # anything to the sta013 chip. $a[0] = ($addr + $num * 2) & 255; $v[0] = ($addr + $num * 2) >> 8; $a[$num] = $cksum & 255; $v[$num] = $cksum >> 8; $num++; for ($i = 0; $i < $num; $i += 16) { $n = $num - $i; $n = 16 if $n > 16; $sum = ($n * 2) + ($addr & 255) + ($addr >> 8); printf ":%02X%04X00", $n * 2, $addr; for ($j = 0; $j < $n; $j++) { printf "%02X%02X", $a[$i + $j], $v[$i + $j]; $sum += $a[$i + $j] + $v[$i + $j]; } printf "%02X\n", ($sum * -1) & 255; $addr += 32; } print ":00000001FF\n";