'18 3A' => 'ABY',
'18 3C' => 'PSHY');
+my %onewitharg = ('63' => "COM\t\$%s,X",
+ '6A' => "DEC\t\$%s,X",
+ '6C' => "INC\t\$%s,X",
+ '6D' => "TST\t\$%s,X",
+ '6E' => "JMP\t\$%s,X",
+ '6F' => "CLR\t\$%s,X",
+ '80' => "SUBA\t#\$%s",
+ '81' => "CMPA\t#\$%s",
+ '82' => "SBCA\t#\$%s",
+ '84' => "ANDA\t#\$%s",
+ '85' => "BITA\t#\$%s",
+ '86' => "LDAA\t#\$%s",
+ '88' => "EORA\t#\$%s",
+ '8A' => "ORA\t#\$%s",
+ 'A3' => "SUBD\t\$%s,X",
+ 'A7' => "STA\t\$%s,X",
+ 'C0' => "SUBB\t#\$%s",
+ 'C1' => "CMPB\t#\$%s",
+ 'C2' => "SBCB\t#\$%s",
+ 'C4' => "ANDB\t#\$%s",
+ 'C5' => "BITB\t#\$%s",
+ 'C6' => "LDAB\t#\$%s",
+ 'C8' => "EORB\t#\$%s",
+ 'CA' => "ORB\t#\$%s",
+ 'E3' => "ADDD\t\$%s,X",
+ 'EC' => "LDD\t\$%s,X",
+ 'ED' => "STAD\t\$%s,X" );
+
+
+my %onewithword = (
+ '70' => "NEG\t%s",
+ '73' => "COM\t%s",
+ '74' => "LSR\t%s",
+ '76' => "ROR\t%s",
+ '77' => "ASR\t%s",
+ '78' => "LSL\t%s",
+# LSL == ASL
+# '78' => "ASL\t%s",
+ '79' => "ROL\t%s",
+ '7A' => "DEC\t%s",
+ '7C' => "INC\t%s",
+ '7D' => "TST\t%s",
+ '7F' => "CLR\t%s",
+ 'B0' => "SUBA\t%s",
+ 'B1' => "CMPA\t%s",
+ 'B2' => "SBCA\t%s",
+ 'B3' => "SUBD\t%s",
+ 'B4' => "ANDA\t%s",
+ 'B5' => "BITA\t%s",
+ 'B6' => "LDAA\t%s",
+ 'B7' => "STAA\t%s",
+ 'B9' => "ADCA\t%s",
+ 'BA' => "ORAA\t%s",
+ 'BB' => "ADDA\t%s",
+ 'BC' => "CPX\t%s",
+ 'BD' => "JSR\t%s",
+ 'BE' => "LDS\t%s",
+ 'BF' => "STS\t%s",
+ 'F0' => "SUBB\t%s",
+ 'F1' => "CMPB\t%s",
+ 'F2' => "SBCB\t%s",
+ 'F3' => "ADDD\t%s",
+ 'F4' => "ANDB\t%s",
+ 'F5' => "BITB\t%s",
+ 'F6' => "LDAB\t%s",
+ 'F7' => "STAB\t%s",
+ 'FA' => "ORAB\t%s",
+ 'FB' => "ADDB\t%s",
+ 'F8' => "EORB\t%s",
+ 'F9' => "ADCB\t%s",
+ 'FC' => "LDD\t%s",
+ 'FD' => "STD\t%s",
+ 'FE' => "LDX\t%s",
+ 'FF' => "STX\t%s" );
+
LINE: while (<>) {
# if blank line, print blank line
return;
}
}
+
+ if (defined $onewitharg{$instruction}) {
+ $thing = substr($line,8,2);
+
+ printf "\t$onewitharg{$instruction}", $thing;
+ $line =~ /$onewitharg{$instruction} [0-9A-F][0-9A-F](.*)$/i;
+ print "\t;$1\n";
+ return;
+ }
+
+ if (defined $onewithword{$instruction}) {
+ $thing = substr($line,8,2);
+ $thing2 = substr($line,11,2);
+ if (!($thing2 =~ /\s+/)) {
+ $curraddr = substr($line,0,4);
+ printf "FOO%s\tEQU\t\$%s%s\n", $curraddr,$thing,$thing2;
+ printf "\t$onewithword{$instruction}", ">FOO$curraddr";
+ $line =~ /$onewithword{$instruction} [0-9A-F][0-9A-F][0-9A-F][0-9A-F](.*)$/i;
+ print "\t;$1\n";
+ return;
+ }
+ }
if ($line =~ /^([A-F0-9]{4}) ((([A-F0-9]{2}) )*[A-F0-9]{2})/) {
@_=split(' ',$2);