SSブログ

HD68P01で1チップ構成(2) [6801]

では実際にブレッドボーにくみ上げます。
主立った部品は以下のもの

・HD68P01V0P
・クリスタルオシレータ(4.9152MHz)
・USB-シリアル変換基板(Sanhayato製)

MC6801系はCPUクロックとなるEクロックからボーレートを設定でき、
なるべく簡単に動かすためにこれを利用するのですが
9600bpsにするために入力クロックを4.9152NHzにしなければいけません。
使用する石は1MHz動作品ですので入力クロックはMax4MHzで
オーバークロックとなりますがこの程度は問題なく動きますし、
業務で使うわけではありませんので気にしない事にします。

HD68P01V_breadboard_2.jpg

ブレッドボードにくみ上げると写真のような感じになりますが、
ジャンパワイヤーは特にプルアップ系は長さ適当です。
結線はシリアルポートと変換基板、クロック。
パワーONリセットはCRで生成して定数はすぐに取り出せた物(10KΩ、47μF)で適当。
割り込み関係とSTBYを+5Vに。
MC6801系はリセット中にP20~P22をチェックしてモードを切り替えるので、
ワンチップモードにするためにそれらを+5Vへ。
電源は変換基板からとります。

動作確認ソフトとして定番となるモニタソフトを使います。
これも定番であるモトローラ純正のLILBUGというものを利用。
MC6800用のモニタMikbugのMC6801版みたいなものです。
ソースはネットにありますがアセンブルする必要があり
アセンブラは、昔ちょくちょく使っていたモトローラ純正のMOTOASMというものを利用。
ネットあされば他にも色々ありますが、昔から持ってて使い慣れていますので。
MOTOASMはCPU別に6800,6801,6804,6805,6809,6811があるのですが、
今ならオプション、あるいは疑似命令でCPU指定でしょうか。
このMOTOASM、Amiga用もあって確かソースもあったような…。
ただ、これはMS-DOS向けのソフトで最近のWindowsでは動作しません。
そこで、MS-DOSのプログラムをWin32-64bit環境で動かすツール
MS-DOS Player for Win32-x64を利用します。

このモニタ、CPUクロックが1.2288MHz、あるいは0.6144MHzが前提となっていて
ボーレートはデフォルトが300、コマンドで2400および9600に
切り替えるようになっていますがデフォルト9600に変更。
くわえてボーレート切替コマンドを削除。
ボーレート関係の修正を加えてアセンブルを実行。
多少エラーでますが修正して無事アセンブル完了。

書き込みはTL866AというROMライター利用。
いざ書き込もうとするとこれに付属する書き込みソフト、
データはインテルHEXかバイナリしか受け付けません。
それに対してMOTOASMはSレコードを生成します。
しょうがないのでMOTOASM付属のバイナリ変換ソフトを使おうと思いましたが、
ROMサイズを指定してバイナリ生成できるのは良いのですが
オフセット指定はできないような感じで、
2732にあわせて4KBを指定してもアドレス0から4KBのバイナリを生成してしまいます。
生成コードはF800からなのでアドレスF000からの4KBにしたいのですができません。
しょうがないので64KB丸ごと生成しようとして65536を指定するとこれまたできません。
MS-DOS時代のソフトなんで16bitサイズなんでしょうね。
そこでサイズとして65535を指定して、
バイナリエディタでラスト1バイト付け足すことも考えましたが
vectorから別のバイナリ変換ソフトをおとし利用することにしました。
これまたMS-DOSソフトなのでMS-DOS Playerから利用します。

色々手間取りましたが、なんとかROMに書き込みHD68P01の上にのせ
PCでターミナルソフト(TeraTermPro)を起動、変換基板経由で
PCとHD68P01を接続。無事teratermにプロンプトが表示されました。

screen_shot_teraterm_1.jpg

F800からF8FFまでダンプ表示した結果です。

なんか長々だらだらとした文章になってしまいました。
今後は構成を考えていく必要ありますね。





nice!(1)  コメント(1) 
共通テーマ:趣味・カルチャー

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。