もりやんさんのご協力で、8049のROMは何とかなりました。 ありがとうございます!
で、プログラムはもともと2kBしかないですし、それほど大きいものではないので、のんびり眺め始めています。 ただ、命令は1バイトまたは2バイトなので、コード密度はZ80より高いです。
けっこう原始的なプロセッサで、プログラムカウンタの変更が3つに分かれている(最上位ビット、中間3ビット、下位8ビット)など、扱いにくい点も多いプロセッサです。 そのため、たとえば割り込みの扱いがなかなかトリッキーなコードになっています。
- 割り込みベクタ(0x003)から割り込み処理ルーチン(0x071)に飛ぶ
- 別ページにジャンプ(0x0164)し、バスから6ビットの値を入力して、それに応じて0x100~0x13fからのベクタテーブルを引いて、0x140~0x162にジャンプする
- さらにそこから本来の処理ルーチンに飛ぶ
割り込みを起こすバス信号で意味のあるのは、以下のもののみです。 コロンの前が入力信号、後が処理ルーチンのアドレスです。
- 0x01: 0x51d
- 0x02: 0x1b1
- 0x06: 0x4a2
- 0x0a: 0x167 RxRDY入力ハンドリングらしい
- 0x0c: 0x173
- 0x19: 0x617
- 0x1a: 0x624
- 0x1d, 0x3d: 0x725
- 0x1e, 0x3e: 0x720
- 0x1f: 0x629
- 0x38: 0x700
- 0x39: 0x716
- 0x3a: 0x71b
データメモリ(0x20~0x7f)の利用状況はまだ把握し切れていません。 初期化時には以下が行われます。
- 0x20~0x7fをゼロクリア
- 0x40, 0x45, 0x5eに0x40を格納
- 0x63~0x6eの12バイトには、プログラムメモリの0x7e8~0x7f3をコピー(実際には0x6fの値によるが、ゼロのため)
アドレッシングモードが豊富ではないので、上記のようなトリッキーなところだけ気をつければ、読むこと自体はそれほど大変ではないみたいです。 書くのは大変でしょうけど。
匿名
画面が真っ暗、でもカーソルは出てる状況。
探して、ここにたどり着きました。
パスワード入力で、復活!
修理に出す寸前でした。ホントにありがとう!