#!/usr/bin/perl
###############################################################################
#
#  機能 :
#         ＲＯＭマップ・セグメントリスト(RommapSeg.lst)に未登録のセグメントを出
#       力
#  説明 :
#         RommapSeg.lst と ConvSegmentMap.pl で変換したセグメントリストの差分
#       を出力する。
#  書式 :
#         UnRommapSeg.pl  <ConvSegmentMap.plで生成したﾌｧｲﾙ> <ｾｸﾞﾒﾝﾄ名のﾘｽﾄ>
#
#  $Id: UnRommapSeg.pl,v 1.3 2000-05-26 11:07:20+09 otsuki Exp $
#
###############################################################################
{
    $delmark = "-delete-";

    $sgm_cnt = 0;
    open(SEGMAP_F, $ARGV[0]) || die "ファイル $ARGV[0] をオープンできない!!\n";
    while($_ = <SEGMAP_F>) {
	chop;
	if (!($_ =~ />>> Total/)) {
#	    s/ //g;
	    @segmapf_line[$sgm_cnt] = $_;
	    $sgm_cnt++;
	}
    }
    close SEGMAP_F;

    $kyl_cnt = 0;
    open(KEYLST_F, $ARGV[1]) || die "ファイル $ARGV[1] をオープンできない!!\n";

    $i = 0;
    while($_ = <KEYLST_F>) {
	chop;
	if (!($_ =~ /\#/) && !($_ =~ /\*/) && ($_ =~ /[a-zA-Z0-9_]/)) {
	    foreach $j (0 .. $sgm_cnt) {
		$d_line = @segmapf_line[$j];
#		print "---------------------------------\n";
#		print $d_line;
#		print $_;
		s/ //;
		if ($d_line =~ /$_/) {
		    @segmapf_line[$j] = $delmark;
#		    print "* delete * $d_line \n";
		}
	    }
	}
    }
    close KEYLST_F;

    foreach $i (0 .. $sgm_cnt) {
	$d_line = @segmapf_line[$i];
	if (!($d_line =~ /$delmark/)) {
	    $d_line =~ s/byte---/ byte ---/g;
	    @d_line = split(' ', $d_line);
	    print "$d_line \n";
	}
    }
}
