#!/bin/perl
#
# dualBin2Octal.pl - quick hack to check two ROM dumps with the BDV11 page
#                    window as seen with ODT. Versiom 0.1
#                    fjkraan, 2014-07-03
# usage perl dualBin2Octal.pl Hi-byte-ROM Low-byte-ROM
#
use strict;

my ($fileNameHi, $fileNameLo) = @ARGV;

my $addressOffset = 259584; # this is 773000, the ODT start address for the ROM page

my ($byteHi, $byteLo, $word, $wordStr, $addrStr);

open (BFHi, "<$fileNameHi") or die ("$0: error opening binary file '$fileNameHi'");
binmode BFHi;
open (BFLo, "<$fileNameLo") or die ("$0: error opening binary file '$fileNameLo'");
binmode BFLo;

while (read(BFHi, $byteHi, 1) && read(BFLo, $byteLo, 1)) {
    $word = unpack("C", $byteHi) * 256 + unpack("C", $byteLo);
    $wordStr = octalize($word);
    $addrStr = octalize($addressOffset);
    print $addrStr . "/" . $wordStr;
#    print "  " . uc(unpack("H*", $byteHi) . unpack("H*", $byteLo) . " : " . sprintf("%04X", $addressOffset));
    print "\n";
    $addressOffset = $addressOffset + 2;
}

close BFHi;
close BFLo;

sub octalize() {
    my ($value) = @_;

    return (formatOctal(sprintf("%o", $value)));
}

sub formatOctal() {
    my ($data) = @_;
    
    return substr("00000" . $data, -6,6);
}

