#!/mit/perl/perl
# takes two .bm files, runs them through bmtoa, "or"s them, and writes
# out a new bm (via atobm.)

sub merge {
    local($base,$new)=@_;
    local(@bline,@nline,@oline);
    @bline = split("",$base);
    @nline = split("",$new);
    for $i (1+$[ .. $#bline) {
	push(@oline, (shift @bline) || (shift @nline));
    }
    join("",@oline);
}

sub mergecards {
    local($inbase,$outbase,@names)=@_;
    local($catname)="";
    local(@basefile);
    while($_ = shift @names) {
	print "merging $_\n";
	if ($catname eq "") { $catname = $_; } 
	else { $catname .= "_".$_; }
	$i = $[;
	open(INASC,"bmtoa -chars 01 $inbase/$_|");
	while(<INASC>) {
	    if(defined($basefile[$i])) {
		$basefile[$i] = &merge($basefile[$i],$_);
	    } else {
		$basefile[$i] = $_;
	    }
	    $i++;
	}
	close(INASC);
    }
    open(OUTBM,"|atobm -chars 01 -name $catname > $outbase/$catname");
    for (@basefile) {
	print OUTBM $_,"\n";
    }
    close(OUTBM);
}

foreach $card (ace, 2, 3, 4, 5, 6, 7, 8, 9, 10, jack, queen, king) {
    foreach $suit (heart, spade, club, diamond) {
	print "$card, $suit\n";
	&mergecards("deck","play",$card,$suit);
    }
}

