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


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

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

[第64回]



●8086BASICのユーザーエリア

ND80Z3.5に搭載しているZB3BASICのユーザーエリアはRAMの先頭アドレス$8000〜$DFFFの24KBです。
KL5C80A12版ND80KL/86に搭載予定のZBKV3BASICはKL5C80A12内蔵のMMUの機能を利用して、ユーザーエリアは$4000〜$DFFFの40KBになっています。
AM188版ND80KL/86に搭載予定の8086BASICはND80Z3.5のZB3BASICをもとにして、それを8086用のプログラムに書き直したため、ユーザーエリアはZB3BASICと同じ$8000〜$DFFFの24KBでした。

そういうことだったのですが、何かの作業をしていてふと、
KL5C80A12マイコンボードの製作[第29回]に書いたことを思い出しました。
そこでは上にも書きましたようにZBKV3BASICのユーザーエリアは$8000〜ではなくて$4000〜です、ということを書いています。

そういうことなら、8086はもっと大きい範囲を割り当てられるはず。
8086はCS(コードセグメント)とDS(データセグメント)は相互に独立して設定可能です。
AM188版の8086BASICでもシステムプログラムはCS=F000のアドレス0000〜7FFFに割り当てているので、ついZB3BASICの仕様のままに、その次のアドレス$8000〜をBASICのユーザーエリアにしたのでしたが、システムプログラムの終わりの$7FFFとユーザーエリアの$8000は、セグメントが異なっていたのでした。
そこに今頃やっと気が付きました。

システムプログラムはROMの(CS=F000の)0000〜7FFF(物理メモリアドレスF0000〜F7FFF)にあります。
ユーザーエリアはRAMですからDS=0000の0000〜FFFF(物理メモリアドレス00000〜0FFFF)の範囲に置くことができるはずでした。
CSとDSに重なりはありませんから、システムプログラムの0000〜7FFFとRAM(ユーザーエリア)の0000〜は物理的には全く別の空間です。
ただしRAMの先頭の0000〜00FFはインタラプトベクタとしてリザーブしています。
またE000〜FFFFはシステムの作業エリアになっています。
ですから8086BASICのユーザーエリアとしては0100〜DFFFを割り当てることならできるはずです。
さっそくそのようにシステムを変更して確認してみました。

こちらは変更前(ユーザーエリア$8000〜)でのテストです。

10 A=0はエリア確定のためのおまじないです。
そのうち直すつもりです。
当面のところは気にしないでください。
H.(HELP)コマンドを入力すると、そのBASICプログラムが書かれているメモリ領域とデータとして割り当てられている領域が表示されます。
その昔の名残でプログラム=TEXTとしていますが、BASICプログラムはメモリ上では内部コードに置き換えられて格納されます。
プログラムの開始アドレスが8004なのは8000〜8003がシステム用にリザーブされているからです。
ここではBASICプログラムが8000番地台に格納されていることを確認した上で、R.(RUN)コマンドで実行しました。

そしてこちらはユーザーエリアを0100〜に変更して、上と同じテストを行なったものです。

BASICプログラムが0104〜に格納されていることを確認したあと、RUNコマンドで実行しましたが、何の問題もなく普通に実行できました。

ユーザーエリアの先頭アドレスが0100というとCP/Mみたいですね。
おお。
8086だからMSDOSか。
MSDOS上で実行する8086版のCOMプログラムも先頭アドレスは0100です。

よくよく考えてみましたら。
AM188版ND80KL/86システムには512KBのRAMを搭載していますから、アドレスは00000〜7FFFFまでがRAMということになります(アドレスは違いますがKL5C80A12版でもRAMは同じ512KBです)。
そういうことになると。
マシン語コマンドのCM、DMやJP、LD、SVなども、その全範囲を対象にできるようにしたくなります。

ううう。
何とか取り急ぎ検討してみましょう。

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

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