head     1.1;
branch   1.1.1;
access   ;
symbols  start:1.1.1.1 webdox:1.1.1;
locks    ; strict;
comment  @# @;


1.1
date     2003.03.15.00.57.44;  author redpain;  state Exp;
branches 1.1.1.1;
next     ;

1.1.1.1
date     2003.03.15.00.57.44;  author redpain;  state Exp;
branches ;
next     ;


desc
@@



1.1
log
@Initial revision
@
text
@#! /usr/bin/perl

# From a binary image containing a user program, generate
# C code initializing a User_Program struct.

# $Revision: 1.2 $

use strict qw(refs vars);
use FileHandle;

if ( scalar(@@ARGV) != 3 ) {
    print STDERR "usage: mkuprog <filename> <progname> <entry addr>\n";
    exit 1;
}

my $filename = shift @@ARGV;
my $progname = shift @@ARGV;
my $entryAddr = shift @@ARGV;

my $fh = new FileHandle("<$filename");
(defined $fh) || die "Couldn't open $filename: $!\n";
binmode $fh;

my $dataArrayName = $progname . "Data";
my $structName = $progname . "Prog";
print "const unsigned char $dataArrayName"."[] = {\n";

my $LINEWIDTH = 10;

my $buf = chr(0) x $LINEWIDTH;
my $n;
my $size = 0;
while ( ($n = read( $fh, $buf, $LINEWIDTH )) > 0 ) {
    $size += $n;
    my $i;
    print "    ";
    for ( $i = 0; $i < $n; $i++ ) {
	my $c = ord( substr($buf, $i, 1) );
	printf( "0x%x,", $c );
    }
    print "\n";
}

print "};\n";

$fh->close();

print << "END";
const struct User_Program $structName = {
    "$progname",
    $size,
    $entryAddr,
    $dataArrayName
};
END
@


1.1.1.1
log
@Project Start
@
text
@@
