The unified diff between revisions [abcf284a..] and [34f8050e..] is displayed below. It can also be downloaded as a raw diff.

This diff has been restricted to the following files: 'disassem.pl'

#
# old_revision [abcf284afd29d344048f9b85810ae6c45a749373]
# new_revision [34f8050e1dacbf46115264d7077d7a0098397e5f]
#
# patch "disassem.pl"
#  from [0c00d5d43fc3648c697a2380e358275828b2e5b9]
#    to [02870da1e88f2384ce53dafaa61e56202225c42d]
#
============================================================
--- disassem.pl	0c00d5d43fc3648c697a2380e358275828b2e5b9
+++ disassem.pl	02870da1e88f2384ce53dafaa61e56202225c42d
@@ -56,6 +56,21 @@ $labelnum = 0;
 %labels = {};
 $labelnum = 0;
 
+if (open LABELS, "<input.labels") {
+    while (<LABELS>) {
+	chomp;
+	if (($name, $addr) = /(.*): (.*)/) {
+	    $addr = hex $addr;
+	    $labels{$addr} = $name;
+	    if ($name =~ /^L(\d+)$/) {
+		$labelnum = $1 + 1 if ($labelnum >= $1);
+	    }
+	}
+    }
+}
+
+close LABELS;
+
 $output = 0;
 
 %io = (
@@ -147,6 +162,20 @@ $output = 0;
 	0xBD => "ICR33",
 	0xBE => "ICR44",
 	0xBF => "ICR15",
+# Specific to LC2412
+	0xC0 => "KEY0",
+	0xC1 => "KEY1",
+	0xC2 => "KEY2",
+	0xC3 => "KEY3",
+	0xC4 => "KEY4",
+	0xC5 => "LEDC",
+	0xC6 => "LCD",
+	0xC8 => "PC_ADL",
+	0xC9 => "PC_ADM",
+	0xCA => "PC_ADH",
+	0xCB => "PC_DW",
+	0xCC => "PC_DR",
+	0xCD => "PC_CR",
 );
 
 
@@ -178,6 +207,15 @@ for my $pass (0..1) {
     }
 }
 
+open LABELS, ">input.labels" or die $!;
+
+foreach my $addr (sort keys %labels) {
+    printf LABELS "%s: %.6x\n", $labels{$addr}, $addr
+	if defined($labels{$addr});
+}
+
+close LABELS;
+
 sub disassemble
 {
     my ($start) = @_;