#!/usr/bin/perl

# använd t(ip), m(iddle), h(and), 0(ingen column...)
# första tecken är nedersta tangent..

open FIL, "<chord.conf";
if (!FIL) {
    die "Error opening \"chord.conf\"\n";
}
    
@taba = (1 .. 256);
@tabb = (1 .. 256);
for($n =0; $n < 256; $n++) {
    $taba[$n] = " ";
    $tabb[$n] = " ";
}

while (<FIL>) {
    / (.*)$/;
    $value = $1;
    if (/^.*t.* /) {
        $col = 0;
    } else {
        $col = 1;
    }
    
    my $pos = 0;
    
    if (/^;.*$/ || /^[ \t]*$/) {
        next;
    }
    
    if (/^[th]/) {
        $pos |= 8;
    }
    if (/^.[th]/) {
        $pos |= 4;
    }
    if (/^..[th]/) {
        $pos |= 2;
    }
    if (/^...[th]/) {
        $pos |= 1;
    }
    
    if (/^m/) {
        $pos |= 128;
    }
    if (/^.m/) {
        $pos |= 64;
    }
    if (/^..m/) {
        $pos |= 32;
    }
    if (/^...m/) {
        $pos |= 16;
    }
    
    print "col $col, pos $pos\n";
    
    if ($col) {
        $tabb[$pos] = $value;
    } else {
        $taba[$pos] = $value;
    }
}
    
close FIL;

open OUT, ">chord.data";
if (!OUT) {
    die "Couldn't open outfile!\n";
}


# nu ska vi formatera det på nåt smart sätt...

$str = "KTA:\n\tDB\t'";
#foreach $foo (@taba) {
for ($n=0; $n < 256; $n++) {
    if ($taba[$n] =~ /0(\d*)$/) {    # nuffror 0nnn
        $str .= "',$1,'";
    } else {                    # nej, vanligt tecken..
        $str .= $taba[$n];
    }
    
    if ($n && $n%64 == 0) { # gör ny rad var 64'e tecken så inte 705asm blir sur..
        $str .= "'\n\tDB\t'";
    }
}

$str =~ s/\n\tDB\t'$//m; # ta bort det sista vi la till som inte skall vara där..
$str .= "'\nKTB:\n\tDB\t'";
#foreach $foo (@tabb) {
for ($n=0; $n < 256; $n++) {
    if ($tabb[$n] =~ /0(\d*)$/) {    # nuffror 0nnn
        $str .= "',$1,'";
    } else {                    # nej, vanligt tecken..
        $str .= $tabb[$n];
    }
    
    if ($n && $n%64 == 0) { # gör ny rad var 64'e tecken så inte 705asm blir sur..
        $str .= "'\n\tDB\t'";
    }
}

$str =~ s/\n\tDB\t'$//; # ta bort det sista vi la till som inte skall vara där..
$str .= "'";

print OUT $str;

close OUT;
