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

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

[第456回]


●E−80ミニコンのメモリマップについて

前回までのところでE−80ミニコンのIPL(Initial Program Loader)について説明をしてきました。
E−80ミニコンにはROMはなくてRAMだけのシステムですから、起動時にUSB接続WindowsパソコンからOSプログラムをダウンロードしなければなりません。
あ。
OSを必要としない、電源ONでいきなり使えるフロントパネルモードというのもあるのですが、ここではそれ以外のモード、ZB3BASICモードとCP/Mモードについて説明をしています。
OSをダウンロードするためにIPLを使いますがIPLもプログラムですから、それもやっぱりメモリに書いておかなければ実行することができません。
E−80ミニコンではそのIPLをROMに書く代わりにPICに書いておいて、起動時にPICがRAMにIPLを書き込んで、その後にCPUが起動してIPLを実行してOSプログラムをロードします。

E−80ミニコンはND80ZV(ND80Z3.5)と同じようにZB3BASICとCP/M互換DOSの2つのOSを搭載しています。
ND80ZV(ND80Z3.5)のZB3DOSシステムはROM32KB+RAM64KBの構成ですが、E−80ミニコンはRAMのみの構成ということになりますと、一体E−80のメモリマップはどうなっているのだろう?という疑問がでてきます。
実はそのことについては実際にE−80ミニコンにZB3DOSシステムを移植する直前までどうするかはっきり決まっていませんでした。
いろいろ迷いがあったのです。
もちろん今はもうこれでいくという形を決めましたので、まだ暫定版ですけれどメモリマップも固まっています。

●ND80ZV(ND80Z3.5)のZB3DOSメモリマップ

お話の順序としまして、先にND80ZV(ND80Z3.5)のZB3DOSシステムのメモリマップについて説明をします。
ND80ZV(ND80Z3.5)のZB3DOSシステムのメモリマップについては[第160回]で説明をしています。
下の図と説明文は[第160回]からのコピーです。
詳細については[第160回]をお読みください。



図の左側はND80ZVを普通に使っているときのメモリの状態です。
I/Oアドレス9CHのビット3が0のとき、ROMが選択され、9CHのビット3が1のとき増設RAMが選択されます。
リセット後はI/Oアドレス9CHに00が出力され、ROMが選択されます。
このとき増設したRAMはメモリマップから切り離されてアクセスできません。

図の右側は9CHのビット3から1が出力されて増設RAMが選択された状態を示しています。
このときROMはメモリマップから切り離されてアクセスできません。

●E−80ミニコンのメモリマップ

E−80ミニコンはRAMだけのシステムですがRAMは512KB(キロバイト)のRAMを搭載しています。
E−80ミニコンのCPU Z8S180は最大1MB(メガバイト)のメモリをアクセスできます。
と言ってもZ80互換CPUですから通常の命令を使ってアクセスできるメモリアドレスは0000〜FFFFの64KBに限定されます。
それではどうやって64KBを越えるメモリをアクセスするかと言いますと、考え方は上で説明しましたND80ZV(ND80Z3.5)のZB3DOSシステムと同じようにメモリバンクを切り換えるという方法でアクセスします。
Z8S180では0000〜FFFFのメモリアドレスを下図左のように2つのコモンエリアと1つのバンクエリアに分割して割り当てることができます。
ここでコモンエリアとは固定しているエリアでバンクエリアはプログラムによってRAM全体の一部にこのアドレスを割り当ててアクセスすることができるようにする「窓」のエリアです。


しかしリセット時には図右のようにコモンエリア0はなく、バンクエリアとコモンエリア1との境はF000になります。

さてそこで、E−80ミニコンの場合ですが、Z8S180のメモリバンクの機能を利用して、ND80ZV(ND80Z3.5)のZB3DOSシステムのメモリマップと見かけ上同じにできれば、移植が容易になります。
ということで、下のような構成で使うことにしました。


これはZB3BASICのときのメモリマップです。
このとき0000〜FFFFにはRAMの00000〜0FFFFが割り当てられます。
この0000〜7FFFはND80ZV(ND80Z3.5)のROMに相当します。
そしてその裏にはRAMの10000〜17FFFをCP/Mモードのときの0000〜7FFFとして割り当ててあります。

下はCP/Mモードのときのメモリマップです。

RAMの10000〜17FFFがCPUがアクセスできる0000〜7FFFに割り当てられ、ZB3BASICがロードされている00000〜07FFFは裏に置かれています。

説明の途中ですが、時間がなくなってしまいました。
この続きは次回にいたします。

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

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