# Postprocessor for dsp56k bootstrap code. # # Copyright Ben Hutchings 2011. # # 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. use strict; use warnings; my @memory; my %symbol; # Reconstruct memory image and symbol table while (<>) { if (/^P ([0-9A-F]{4}) ([0-9A-F]{6})\n/) { $memory[hex($1)] = hex($2); } elsif (/^I ([0-9A-F]{6}) (\w+)\n/) { $symbol{$2} = hex($1); } else { print STDERR "W: did not recognise line $.\n"; } } # Concatenate first and second stage. Second stage is assembled # between 'upload' and 'upload_end', but initially loaded at # 'real' (end of the first stage). for (0 .. ($symbol{real} - 1), $symbol{upload} .. ($symbol{upload_end} - 1)) { my $word = $memory[$_] || 0; print pack('CCC', $word / 65536, ($word / 256) % 256, $word % 256); }