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

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります

[第518回]


●Legacy8080についてご質問をいただきました

E−80(Legacy8080)の評価をしていただいております大分県のH様からご質問をいただきました。
メールでご返事を差し上げようと思ったのですが、いずれLegacy8080が販売されましたときに、ユーザーから同じような質問をいただくこともあるかと思い、当記事にてご返事を差し上げることにいたしました。
またまた予定変更で申し訳ありませんが、なにとぞご容赦願います。

以下はH様からいただいたご質問と、それに対する私の回答です。

@コモンエリアとバンクエリアの境界を変更するCBARの使用できるタイミングは、64Kbの物理メモリーが全体を通じてつながっている必要がありますか。この場合、繋がっておれば、どこでも良いのでしょうか。又は、00000h〜0ffffhである必要がありますか。命令の実行位置も00000h〜0ffffhである必要がありますか。

[回答]
E−80(Legacy8080)のバンクメモリについては[第456回][第459回]で説明をいたしました。
Z8S180は最大1MBのメモリをアクセスすることができますが、プログラムで普通にアクセスできるメモリ範囲はZ80と同じ0000〜FFFFの64KBに限られます。
ご質問のCBARについては[第457回]で説明をしています。
CBARの機能であるコモンエリアとバンクエリアの境界設定は、物理メモリではなくて、論理的なメモリ(0000〜FFFFの64KB)に対して行なわれます。
ですからその範囲に物理メモリが実際に割り当てられているかどうかということは関係がありません。
ちょっとご質問の真意がいまひとつはっきりしませんが、ひょっとするとバンクメモリに割り当てる物理メモリは64KBが連続していなければならないか?という意味でしたら、必ずしも連続している必要はありません。
コモンエリアとバンクエリアにはそれぞれ別のお互いに連続していない(64KB以上離れた)アドレス範囲の物理メモリを割り当てることができます([第459回]参照)。
1MBの物理メモリをバンクを切り換えながらアクセスするサンプルプログラムが[第460回]にありますのでご参照ください。

AZB3BASICからユーザ・プログラムに移る時に、スタックポインタのアドレスを保管、帰る時(1033hへ)に復元する必要がありますか。復元しなくても動くので、復元しなくても良いような気がしますが。

[回答]
ZB3BASICのエントリアドレス(1033H)はスタックポインタをユーザースタックの先頭に再設定しますから、スタックポインタやレジスタの値はもとの値に戻す必要はありません。

B物理メモリー00100hから001ffhの間は利用してもよいですか。

E−80(Legacy8080)では現在のところ物理メモリの0003BH〜003FFHの間は未使用です。
しかしこの範囲はシステムがリザーブしている領域で、いずれシステムプログラムに割り当てられる可能性があります。
この範囲はシステム起動時にバンク0のエリアとして、ZB3BASICシステムが割り当てられるエリアの中にありますので原則としてはユーザーは使用できないとお考えください。
ユーザーが通常使用できる範囲としては物理メモリの08000〜0DFFFをお使いください。
この範囲はユーザーに開放されています。

CRS232C(E−80)の割込み時には、最初はどこに飛んでくるのでしょうか。例えば、0038hとか。又は、FF0Ehに処理ルーチンのアドレスを書いておけばよいのでしょうか。やりたいことは、RS232CでブレークコマンドをE−80に送って、E−80の実行中の処理を中断するような処理です。但し、E−80のシステム関係のルーチンは使用しない場合です。

[回答]
お考えの通り、FF0EH、FF0FHにRS232Cチャネル0の割込みプログラムへのアドレスを書きます。
Z8S180の割込みはZ80のモード2を拡張したものになっていますが、デフォルトではZ80のモード2と同じものと考えることができます。
Z80と同じように割込みテーブルへのポインタの上位アドレスはあらかじめIレジスタに与えます。
E−80(Legacy8080)ではIレジスタにはFFを与えています。
テーブルの下位アドレスは内蔵ペリフェラルの割込みは固定アドレスが与えられています。
RS232Cチャネル0の割込みはデフォルトでは0Eです。
ですので、FF0E,FF0FにRS232C割込み処理プログラムのエントリアドレスを与えておくことで、割り込み時にそのアドレスのプログラムを実行させることができます。

ワンボードマイコンでCP/Mを![第518回]
2013.12.3upload

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