2018.5.18
前へ
次へ
ホームページトップへ戻る


16ビットマイコンボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
いつか使ってみるつもりで入手してそのまま置いてあった16ビットCPUのことを思い出しました。
AMD社のAM188です。
その名の通り、CPUコアは80188互換の16ビットCPUです。
そのAM188を使った16ビットマイコンボードの製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第19回]


●モニタROMの作成

本当は「KL5C80A12マイコンボードの製作」の続きを書かなければいけないのですけれど...。
そちらの記事で書いておりますように、今製作中のKL5C80A12マイコンボードはCPU基板を交換することで、AM188マイコンボードにもなってしまいます。
そういうコンセプトのボードですので、どうしてもあっちの記事とこっちの記事を行ったり来たりしながら交互に書いたりすることになってしまいます。
読む立場にしてみればまことに面倒なことと思いますが、当記事は私自身の製作ノート、備忘録を兼ねておりますので、曲げてご了承をお願いいたします。

AM188について最後に書きましたのは今年の2月13日でしたから、それから3ヶ月も経ってしまいました。
私の場合、3ヶ月もありますと、完全に記憶がなくなります。
記事を読み直してみても、細かいところについては、はて、どうだったかなあ、と疑問に思ってしまうことがあちこちに出てきます。
それでまた、そのときと同じことをやって確認するという羽目になってしまいます。
なかなかに困ったことです。

それで3ヶ月振りに確認してみましたところ、記事によれば即席で作り上げたはずのTK−80風モニタプログラムなのですが、意外にも良く出来ております(しっかり自画自賛です)。
ここは多分駄目だろうから悩みながら作らなければならないだろうなあ、と思ったところも意外にもしっかりできていました。
その部分はやっと書き上げたらしく、ちょいとしたバグがみつかりましたので、まだ動作確認はしていないふうでした。
バグを直して動作テストをしてみたところ、おお、ちゃんと動作したではありませんか。
もううれしくなってしまって、さっそく金麦で祝杯をあげました。

そういう次第で、そのあたりについて、これはもうぜひ書かなくては、ということになりました。
が。
そこはそれ、備忘録も兼ねております関係もありますので、ものには順序がありまする。
なかなか本筋に入れないのが、本人としてももどかしいのですけれど、どうかお許しを。

バグを直して動作テストをするというからには、当然TK−80風モニタROMを書き直すことになります。
おそらく当記事をお読みいただいてみえる方の多くは、8080、Z80についてある程度の知識をお持ちなのではないかと思います。
しかし8086についてはいかがでしょうか?
8080と8086は同じINTELの製品で、8ビットと16ビットの違いはありますが、命令はかなり似ております。
8080の知識があれば8086の命令も割りと簡単に理解できてしまいます。
しかしハードがらみとなると、これはもうかなり違っています。
「KL5C80A12マイコンボードの製作」[第22回]で説明しましたように、メモリマップは8080(Z80)と8086とではROMとRAMの位置関係がまったく逆になっています。
8080(Z80)はリセット後のプログラムの開始アドレスは0000です。
これに対して8086の場合には、FFFF0がリセット後のプログラム開始アドレスです。
そんなプログラムをどうやって書くのだ?
それについては[第3回]にプログラムリストがありますので、ご参照ください。
モニタプログラムのとりあえずの開始アドレスはF000にしてあります。
リセット後のプログラム開始アドレスFFF0は、そのリストの最後のところにあります。
そのリストでは
JMP START0
になっていますが、ここは[第8回]で書きましたように
JMPF START0
にしなければなりません。
現在テスト中のモニタプログラムは訂正済みです。

さて今のところプログラムサイズはわずか1KB程度(F000〜FFFFとしても4KB)ですから、27C256で十分です。
しかし[第3回]でお見せしているプログラムリストのようなプログラムをどうやってROMに書くのか、疑問に思われませんでしょうか。
0000から始まるプログラムならば27C256の先頭から書けばよいのですけれど、F000から始まるプログラムはどうやって27C256に書けばよいのでしょうか?
これはしかし、それほど難しいことではありません。
ND80Z3.5+27C256WRITERがあれば簡単にAM188用のモニタROMを作成することができます。
下はROMを作成しているところの画像です。

最初に8000からロードしていますが、これはちょっと確認しただけです。
マシン語プログラム(バイナリファイル)はN16MON0L.COMです。
8086の場合実行ファイルの拡張子はCOMですが、実体はバイナリファイルです。
ND80Z3.5+27C256WRITERの場合RAMバッファは裏RAMの0000〜7FFFです。
ですからF000が開始アドレスのプログラムは7000からロードします。
そのあと
/W256 7000,7FF4
を実行すれば正しく書き込みが行なわれます。

ちょっと手順が逆ですが、8086用のソースプログラムをアセンブルするところも見ていただきましょう。

ご覧の通りめちゃめちゃ簡単です。
当社の8086アセンブラは1パスでオブジェクトファイルを生成します。
ASM86 N16MON0L.TXT
だけで、もう出来上がりです。
この8086アセンブラはAM188マイコンボードセットに同梱する予定です。

16ビットマイコンボードの製作[第19回]
2018.5.18upload

前へ
次へ
ホームページトップへ戻る