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;
14while (<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