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

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

[第156回]


●64KBフルRAMシステムと仮想FDDシステム

ND80ZVを一部改造して64KBフルRAM化にすることは、この企画の初期の段階(今年1月終わり)で、すでに行なっています。
[第21回]から[第29回]で説明をしております。

ND80ZVはメモリマップの前半32KBがROMになっています。
しかしCP/Mを走らせるためには、メモリマップの先頭アドレス0000Hから少なくとも50KB程度はRAMである必要があります。
そこで最終的には、ND80ZVを改造して、Z80がアクセスできる全メモリアドレス64KBの全てをRAMにしてしまいます。

ハードとしては[第21回]から[第29回]で説明をしましたようにすることで、64KBをフルRAMにすることはそれほど難しいことではありません。
しかしソフトには工夫が必要です。

最初から全てがRAMでは、CPUが暴走してしまいます。
CPUがリセットからスタートするときは、最初に0000H番地から命令を読み込んで実行を開始します。
そこでRAMだけしかないマシンでは、最初にCPUを停止させておいて、トグルスイッチなどでRAMの0000H番地から短いプログラムを直接書き込みます。

最初にCPUは、RAMの0000H番地から書かれたプログラムを実行し、そのプログラムによって外部記憶装置からシステムプログラムをロードして、それから本格的にシステムプログラムを実行します。

この最初にRAMに書き込む短いプログラムのことをIPL(Initial Program Loader)とかブートストラップローダーなどといいます。
ブートストラップは靴紐のことです。
力持ちが自分のはいている靴の紐をつかんでそれをひっぱって自分の体を宙に浮かせたというお話からきているようです(んなことはできるはずはありませんけれど)。

たとえばWindowsでも、最初はROMに書かれている低レベルのローダーからスタートします。
だんだんと複雑な動作ができるプログラムをロードしながら自分で自分を構築していきます。

このような仕組みを作り上げることはなかなかに面倒なことです。
それに、ND80ZVの場合、ROMには開発やデバッグに使えるいろいろな機能が入っています。
64KBをフルRAMにしてしまったら、そのROMにある機能を使うことができなくなってしまいます。

そんなこともあって、もう何ヶ月も前に、ハードとしてはND80ZVの64KBフルRAM化もできていたのですけれど、その後のCP/M2.2の検証と、CP/M互換DOS(仮RAMディスク版)は、フルRAMではなくて、ROM32KB+RAM32KBの構成で行なってきました。
デバッグのためには、そのほうが都合がよかったからです。

今まではそういうことでやってきたのですけれど、いよいよND80ZVを64KBフルRAMで使うときが来ました。
それだけではなくて、Windowsのハードディスク内に仮想フロッピーディスクを作って、あたかもそれが外部フロッピードライブであるかのようにアクセスすることで動く、CP/M互換DOSシステムを作り上げなければなりません。
いよいよ第3段階、最終段階です。
難易度がぐっと高くなります。

もともとは64KBフルRAMシステムと仮想フロッピーディスクシステムは別々のものですから、いきなり両方を手がけなくても、片方ずつ完成させていくという選択もあったのですけれど、この際ですから、両方を同時にやってしまうことにいたしました。

[第153回]にも少し書きましたように、すでにその作業に着手してから10日余りが経過しています。
これは相当にホネな作業で、最初はせっかく作り上げた仮RAMディスクのシステムを一度壊して、それを作り直す過程で全く機能しなくなってしまうところからの再スタートでした。
現在ももちろん作業は継続中ですが、やっとなんとか動作するところまでできてきました。

以後はその作業を続けつつ、最終的なCP/M互換DOSシステムについての説明と、開発作業の実際についての報告などをUPしていく予定です。
今までに増してやらなければならないことがいっぱいありますので、またまた記事のほうは遅れがちになってしまいそうです。
気長にお付き合いをお願いいたします。

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

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