1802 Membership Cardは動作していますが、EEPROMでモニタが動かなかったのが気になります。なぜ動かないのかを調べてみました。

まず、モニタが起動しなかったEEPROMを取り外し、ROMライタで読み出したファイルを元のMCSMP20Jモニタプログラムをハッシュで比較してみました。
公式サイトのMCSMP20Jモニタプログラム
| |
EEPROMから読み出したデータ
| |
明らかに内容が異なります。
どこが書き変わっているのか差分を確認します。
| |
cmpコマンドではオフセットの値は10進数、データの値は8進数で表示されているので、16進数のアドレスとデータにしてみると以下のようになります。
| |
この2バイトの差分がみつかりました。念のためダンプして確認してみます。
公式サイトのMCSMP20Jモニタプログラム
| |
EEPROMから読み出したデータ
| |
確かにこの2バイトが書き変わっています。
しかし、ほとんどの部分は元のモニタプログラムと一致しています。これぐらいの差であればある程度モニタが動いても良いように思えます。
また気になるのは$7FFF、つまり実際のアドレスだと$FFFFというメモリエリアの終端のバイトが書き変わっていることです。
ここからは推測ですが、モニタが起動する際にメモリマップがどのようになっているかを確認するために$FFFFにデータを書きこんで調べているのではないかと。
$FFFFに正常に書き込めたので$8000-$FFFFをRAMと誤判断し、初期化処理をしている可能性もあります。
そこでEEPROMに書き込めないようにEEPROMの/WEがVDDに接続されるようにジャンパーピンを設定してみました。
回路図のTABLE 1に記載されている標準のジャンパーピン設定
| |
今回試したジャンパーピン設定
| |
もう一度MCSMP20JモニタプログラムをEEPROMに書き込んでフロントパネルから起動したところ、無事モニタが立ち上がりました。
あとでCOSMAC ELF Groupでコメントをいただいたのですが、同様な問題に遭遇して同じようなジャンパーにされたかたがいました。この問題は報告済みだとのことです。
これでEEPROMが安心して使えるようになりました。
