カテゴリー
なにか面白いものはないかとeBayを覗いていて、こんなものを見つけてしまいました。
製品版ではないことを示す「XC」プレフィクス、以前取り上げたXC68030もそうでした。これには更に「PROTOTYPE」のマーキングまでありますね。
実は今回入手したのはXCが4つで、デートコードが1年ほど離れたものもあったのですが、どういう状況だったのでしょう? 解決できない問題があって「MC」にできないまま量産に入ったとか?
さて、この68HC05ですがソフトウェア的には6805の上位互換のようです。両者のデータシートを見比べると以下の命令が追加されていました。
MUL
MC68HC05で追加された命令
符号無し8ビット同士の乗算命令です。STOP
MC146805で追加された命令
実行を停止して低消費電力モードになります。リセットまたは外部割込みによって実行を再開します。WAIT
MC146805で追加された命令
実行を停止して低消費電力モードになりますが、STOPと異なり内部タイマは動作し続けます。タイマ割り込みによっても実行を再開できます。
これならソフトウェアはほぼ同じかなと安心していたら……
スタックポインタの有効ビット数が違っていました。このファミリのスタックポインタは下5~6ビットしか有効ではなく、上位ビットは固定されています。そのためスタックとして使えるアドレスは以下の通り。
| MC6805P2 | $61~$7F |
|---|---|
| MC146805E2 | $40~$7F |
| MC68HC05E0 | $C0~$FF |
MC6805P2で$60がなぜ使えないのかは不明、データシートを読み込めばわかるのかもしれませんが……
とはいえ実際にこの違いによって困ることはあまりなさそうです。なぜならスタックポインタを読むことも書くこともできない(リセットだけは可能)から、スタックをメモリ空間とは別に持っている一部のプロセッサと同じような使い方しかできません。
一応メモリ空間上にはあるのでスタックエリアの全ダンプは可能ですが、どこがスタックトップかわからないのであまり意味は無いでしょう。
これとMC146805E2は外部バスあるのでEMILY Boardで動かしてみたいですね。
参考文献・関連図書
MC68HC05E0データシート, Freescale semiconductor.
MC6805P2データシート, Motorola.
MC146805E2データシート, Motorola.


コメントを追加