X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=lib%2FApp%2FScheme79asm.pm;h=353580fd5798af43c18cc2278cfd68ef754eea1f;hb=296bac97c7ac6410c858581515ea3aebbe24fc6c;hp=1590d8568db0552bdfe41444499da12916b28db4;hpb=fe1c44b35d67e5054f8a6a8d5a76d8e3be91616d;p=app-scheme79asm.git diff --git a/lib/App/Scheme79asm.pm b/lib/App/Scheme79asm.pm index 1590d85..353580f 100644 --- a/lib/App/Scheme79asm.pm +++ b/lib/App/Scheme79asm.pm @@ -10,7 +10,7 @@ use Data::Dumper qw/Dumper/; use Data::SExpression qw/consp scalarp/; use Scalar::Util qw/looks_like_number/; -our $VERSION = '0.005'; +our $VERSION = '1.000'; our %TYPES = ( LIST => 0, @@ -71,6 +71,7 @@ sub process { die "Type too large: $type\n" if $type >= (1 << $self->{type_bits}); die "Addr too large: $addr\n" if $addr >= (1 << $self->{addr_bits}); my $result = ($type << $self->{addr_bits}) + $addr; + unless ($location) { $self->{freeptr}++; $location = $self->{freeptr} @@ -120,9 +121,9 @@ sub print_binary16 { die "addr_bits + type_bits >= 16\n"if $self->{addr_bits} + $self->{type_bits} > 16; my $length = @{$self->{memory}}; - print $fh pack 'n', $length or croak "Failed to print memory size: $!"; + print $fh pack 'n', $length or croak "Failed to print memory size: $!"; # uncoverable branch true for (@{$self->{memory}}) { - print $fh pack 'n', $_ or croak "Failed to print memory: $!" + print $fh pack 'n', $_ or croak "Failed to print memory: $!" # uncoverable branch true } } @@ -146,7 +147,7 @@ sub print_verilog { my $string = "mem[$index] <= $val;"; $string .= "$spaces // $comment" if defined $comment; - say $fh $string or croak "Failed to print verilog: $!"; + say $fh $string or croak "Failed to print verilog: $!"; # uncoverable branch true } }