「逆アセンブラ他各種ソフトウェアの入手」

 ROMライタでROMの内容をPC上に持ってきても、そのままでは・・・・

00e000 86 9a 97 02 86 fe 97 00 86 0a 97 03 86 fa 97 01 ................
00e010 86 39 97 17 86 c3 97 18 cc 00 c8 dd 0b ce 00 ff .9...テ..フ.ネン.ホ..
00e020 4f a7 00 09 8c 00 39 26 f8 43 ce 00 a0 a7 00 a7 Oァ....9&.Cホ..ァ.ァ
00e030 01 a7 02 a7 03 a7 04 a7 05 86 18 97 d7 86 29 97 .ァ.ァ.ァ.ァ....ラ.).
00e040 6a 7c 00 9d 86 07 97 d4 86 02 5f dd b1 86 0e 97 j|.....ヤ.._ンア...
00e050 dc 86 ff 97 d6 97 d5 7a 00 d7 96 d4 81 07 26 0f ワ...ヨ.ユz.ラ.ヤ..&.
00e060 7f 00 d4 96 03 8a 10 97 03 84 ef 97 03 20 38 7c ..ヤ.......... 8|
00e070 00 d4 d6 d4 c1 03 24 08 ce 00 00 3a a6 d4 20 01 .ヤヨヤチ.$.ホ..:ヲヤ .
00e080 4f ce 00 08 d6 03 c4 ef d7 03 44 24 0c d6 03 ca Oホ..ヨ.ト.ラ.D$.ヨ.ハ
00e090 10 d7 03 c4 ef d7 03 20 0b d6 03 ca 10 d7 03 c6 .ラ.ト.ラ. .ヨ.ハ.ラ.ニ
00e0a0 07 5a 26 fd 09 26 dd d6 03 c4 ef d7 03 96 d7 81 .Z&..&ンヨ.ト.ラ..ラ.
00e0b0 10 27 11 81 08 27 07 81 00 27 10 7e e0 57 86 00 .'...'...'.~.W..
00e0c0 97 d6 97 d5 86 07 97 d4 7e e0 57 96 19 dc 09 dc .ヨ.ユ...ヤ~.W..ワ.ワ
00e0d0 0d dc 1e 96 19 85 40 26 28 85 80 27 f6 96 19 dc .ワ....@&(..'...ワ
00e0e0 1e 7c 00 98 96 98 81 01 26 0b 96 97 81 03 24 39 .|......&.....$9
00e0f0 7f 00 97 20 de 96 97 81 02 26 60 86 03 97 97 20 ... ゙....&`....
[後述の自作ダンプツールで出力]

 こんな状態なので、全くサッパリな状態。(-_-;)
 単に、数値の羅列でしかないので、プログラムとして人が読める形に翻訳しなければ解析するのに、あまりに時間がかかってしまう。
 これをやってくれるのが「逆アセンブラ」。

 何用の逆アセンブラでもよいかというと、そうではなくて、ちゃんとCPUに合ったものを選択する必要がある。

 222系ECUのCPUはモトローラの「MC6803U4」で、これはMC6800と命令セット互換なので、最低でも6800用の逆アセンブラを使う必要がある。ベストは6803用の物。

 で、インターネットを探してみると・・・

 「DASMx」なる逆アセンブラがあり、ドキュメント(英語)を読むと、なんとなく「フリーウェア」に見える(^_^;)。

 simtelnet/msdos/disasm/にあり、結構どこからでもダウンロード可能。
 日本だと、

 ftp://ftp.riken.go.jp/pub/simtelnet/msdos/disadm/dasmx120.zip

 や、

 ftp://ftp.iij.ad.jp/pub/simtelnet/msdos/disadm/dasmx120.zip

 等。有名どころのFTPサイトならばどこでも転がってるみたい・・・

 この「DASMx」、目的の6803の逆アセンブラだけでなく、他の6800ファミリーや6809、Z80、8080/85、6502といった超メジャーどころの8bitCPUのコードを逆アセンブルすることが可能。(・o・)

 マセのROMを逆アセンブルしてみると、こんな感じになります。

	;
	;	Disassembled by:
	;		DASMx object code disassembler
	;		(c) Copyright 1996-1998   Conquest Consultants
	;		Version 1.20 (Apr  2 1998)
	;
	;	File:	med602f.bin
	;	Date:	Mon Mar 29 11:40:22 1999
	;	CPU:	Motorola 6803 (6801/6803 family)
	;
	;
		org	$E000
	;
E000				LE000:
E000 : 86 9A 	"  "		ldaa	#$9A
E002 : 97 02 	"  "		staa	X0002
E004 : 86 FE 	"  "		ldaa	#$FE
E006 : 97 00 	"  "		staa	X0000
E008 : 86 0A 	"  "		ldaa	#$0A
E00A : 97 03 	"  "		staa	X0003
E00C : 86 FA 	"  "		ldaa	#$FA
E00E : 97 01 	"  "		staa	X0001
E010 : 86 39 	" 9"		ldaa	#$39
E012 : 97 17 	"  "		staa	X0017
E014 : 86 C3 	"  "		ldaa	#$C3
E016 : 97 18 	"  "		staa	X0018
E018 : CC 00 C8 	"   "		ldd	#$00C8
E01B : DD 0B 	"  "		std	X000B
E01D : CE 00 FF 	"   "		ldx	#$00FF
E020 : 4F 		"O"		clra
E021				LE021:
E021 : A7 00 	"  "		staa	$00,x
E023 : 09 		" "		dex
E024 : 8C 00 39 	"  9"		cpx	#$0039
E027 : 26 F8 	"& "		bne	LE021
E029 : 43 		"C"		coma
		:
		:
		:

 だいぶ「人にやさしい」状態になったと思いますが・・・まだ暗号みたいですね・・・でもコレ以上はやさしくなりません。(^_^;)

 さて、つぎに、データの編集はどうするのか?
 ROMから読み出したデータファイルは、バイナリファイルなので、Windowsの「メモ帳」等では正常に読み書きできない。(-_-;)
 なので、バイナリエディタが必要になる。
 私が使っているのは、
 「Stirling」なるフリーウェアのバイナリエディタ。複数ファイルの比較がステキなので結構お勧め。
 作者のHPは、

 http://www2c.airnet.ne.jp/dds2/

 あと、点火時期マップなどを16進表示の状態で印刷したいときなど、
 「Stirling」では、表示開始アドレスが常に「0000」なので、マセのROMのように、開始アドレスが「C000」とか「E000」だったりすると、頭の中でアドレス変換しなくてはならないので、開始アドレスを指定できるダンプツールが欲しいところ・・・ざっと探してみたところ、この要望を満たしてくれるのもは見当たらなかったので、バイナリから16進ダンプテキストを出力するプログラムを自分で作りました。(^_^;)
 よろしかったら使ってください。フリーウェア扱いとさせていただきます。
 (これを使用したことによる、障害には責任を持てませんので念のため(^_^;))

 MS-DOS用「dump.exe」(IBM-PC/AT互換機で確認、PC-98では動くかどうか・・・?)
 Windows95/98/NT用「dump32.exe

 コマンドラインで「dump」もしくは「dump32」と入力すると、使用方法が出ます。