ま、とにかく、実物の写真。
上はクロック発振回路入りのHD63C09、下は外部クロック入力のHD63C09Eで、共にRマスクの3
MHzクロック版。
拡張されていた部分ですが、まずはレジスタから入ります。
MC6809と比べると7個のレジスタが追加されています。もっとも2種類はレジスタの組の別名ですが。図の中の網が入っている部分が新設のレジスタです。
MC6809にはアキュムレータがAとBの二組ありましたが、さらにEとFのふたつのレジスタも追加されています。A,
Bレジスタを対にしたものをDレジスタと呼ぶように、E, Fレジスタを対にしてWレジスタとして使用することもできます。さらに乗除算命令ではA,
B, E, Fレジスタを合わせて32 bitレジスタとして使う場合もあり、Qレジスタと呼びます。QレジスタのMSBはAレジスタのMSBに、QレジスタのLSBはFレジスタのLSBに対応します。
さらに16 bitのVレジスタがありますが、レジスタレジスタ間演算でしか使用できないという制限があります。Vレジスタの下に0と書かれたゼロレジスタがありますが、これもレジスタレジスタ間演算でだけ有効で、常に0が読み出されます。このゼロレジスタは8
bitレジスタとしても16 bitレジスタとしても利用可能です。
最後に特殊なフラグを集めたレジスタとして、モード・エラーレジスタMDがあります。このMDのビット0はエミュレーションモードとネイティブモードを切り替える実行モードビットで、0ならエミュレーションモードで1ならネイティブモードでコードを実行します。ビット1はFIRQモードビットで、0ならMC6809と同一のFIRQ動作を行い、1ならFIRQ割り込み時にIRQと同様のスタック操作を行います。この下位2
bitはプログラムから書き換えられます。ビット6とビット7の上位2 bitはHD6309が検出したエラーを表示するフラグで、MDレジスタを直接書き換える命令では変更できません。ビット6は不正命令ビットで、HD6309が使用されていないオペコードを命令として実行しようとしたときにセットされます。ビット7はゼロ除算で、除算命令実行時に0で割ろうとしたときにセットされます。このどちらの場合でもHD6309がエラートラップ割り込みを発生させて制御を割り込みハンドラに移すため、その割り込みハンドラでエラー原因を調べるのにこれらの2
bitを検査することになります。MDレジスタの残りの4 bitは使われていません。
命令セットはさらに強化されているのですが、それはまたあとで。
あ、あと、Intel系列の周辺LSIはCMOS化が順調に進んで、低消費電力化が必要な場合にも使いやすくなっていましたが、MC6800系列周辺LSIはなかなかCMOS製品が現れませんでした。しかしHD6309と同時期に日立からHD6321, HD6340, HD6350などが出荷されて、やっとというかなんというか、とにかくニュースになりました。
上はHD63A21で1.5 MHzクロック品、下はHD63B50で2 MHzクロック品。
HD6309の発表は、記憶では1984年か1985年ではないかと思いますが、正確には後で調べて書き直します。
Return to IC Collection