Home | History | Annotate | Download | only in bios
      1 #!/usr/bin/perl
      2 #
      3 # $Id$
      4 #
      5 # Read output file from as86 (e.g. rombios.txt) and write out a symbol
      6 # table suitable for the Bochs debugger.
      7 #
      8 
      9 $WHERE_BEFORE_SYM_TABLE = 0;
     10 $WHERE_IN_SYM_TABLE = 1;
     11 $WHERE_AFTER_SYM_TABLE = 2;
     12 
     13 $where = $WHERE_BEFORE_SYM_TABLE;
     14 while (<STDIN>) {
     15   chop;
     16   if ($where == WHERE_BEFORE_SYM_TABLE && /^Symbols:/) {
     17     $where = $WHERE_IN_SYM_TABLE;
     18   } elsif ($where == $WHERE_IN_SYM_TABLE && /^$/) {
     19     $where = $WHERE_AFTER_SYM_TABLE;
     20   }
     21   if ($where == $WHERE_IN_SYM_TABLE) {
     22     @F = split (/\s+/);
     23     ($name[0], $junk, $addr[0], $junk, $name[1], $junk, $addr[1]) = @F;
     24     foreach $col (0,1) {
     25       next if length $addr[$col] < 1;
     26       $addr[$col] =~ tr/A-Z/a-z/;
     27       $addr[$col] = "000f" . $addr[$col];
     28       print "$addr[$col] $name[$col]\n";
     29     }
     30   }
     31 }
     32