復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第219回]
●仮想FDDの構造
前回からの続きです。
CP/M互換DOSの仮RAMディスク版では、ブロックbヘ8ビットの数でした。
しかし最終バージョンでは2MBの仮想FDD(仮想フロッピーディスクドライブ)を制御します。
ブロックbェ8ビットということは最大でも256ブロックですから、とても2MBの容量を扱うことはできません。
仮RAMディスク版では1ブロックを8セクタまたは4セクタにしました。
1論理セクタの容量は128バイトですから128×256=32768Bytes(32KB)にしかなりません。
仮RAMディスクはND80ZVボード上のRAMエリアに構築しましたから、その容量でよかったのです。
ここで仮に1ブロックを16セクタにしたとしても256ブロックでは64KBにしかなりませんから、到底2MBにははるかに及びません。
もしも1ブロックを16セクタとして、ブロックb16ビットにしたとすると、1ブロックは128×16=2048バイトで、16ビットのブロックbナは65536個のブロックを扱えますから、
2048×65536=134217728Bytes(128MB)の容量まで扱うことができます。
そこでCP/M互換DOSの仮想FDD版ではブロックb16ビット2バイトの数としたのです。
仮想FDDの構造を図にして示します。
仮想FDDはWindowsのハードディスク上に置かれます。
上の図は仮想FDDを論理的な構造として示したもので、実際のハードディスク上でこのようになっているということではありません。
ただCP/M互換DOSから見ると、仮想FDDは図のような構造として見えます。
[以下の部分は全面的に書き直しました。2012.9.21]
なおフロッピーディスクやハードディスクではトラックの中にセクタがあります。
しかしCP/Mの場合、セクタの読み書きのためにトラックbェ必要なために、BIOSコールのときにそれを指定する、という用途以外ではトラックという概念は使われません。
OSはハードウェアの束縛からソフトウェアを開放する、というのが主な目的のひとつですから、ハードウェアによってさまざまに異なるトラックとセクタの構成からソフトウェアを開放するために、CP/Mでは「論理的な」セクタと「論理的な」ブロックという概念を導入したのだと思われます。
CP/Mでは実際に接続されるフロッピーディスクのセクタが何バイトであるかに関わらず、つねに「論理」セクタ=128バイトとして扱い、それと実際の物理的なセクタとの変換はBIOSに委ねています。
それと同様に、そのセクタを束ねるものとしてハード構成に影響されないブロックという論理的な概念を用いています。
CP/Mマシンの場合には、一般的に考えて、汎用フロッピーディスクシステムというものが先に存在して、そこにCP/Mをインストールすることになりますから、そのように論理的な構造を考えることには大きな意義がありました。
ところで、CP/M互換DOSの仮想FDDの場合について考えてみますと、「仮想」FDDそのものがすでに完全な論理的存在です。
仮想FDDはWindowsマシンのハードディスク上に構築されますが、その中で扱う、「セクタ」も「トラック」も実際のハードディスクのトラックやセクタからは完全に分離独立した論理的なものとして設計されます。
実際問題としてWindows上で、ハードディスクの本当のトラックやセクタにそのまま直接アクセスすることのほうがはるかに困難ですから、そのように論理的なものを考えるしかないのです。
考えてみれはWindowsもOSですから、一般のソフトウェアをハードウェアの束縛から開放するように構成されているのは当然のことといえます。
まあ、Windowsの場合は「ハードから開放する」というよりは「ハードへの関与を禁止している」というほうが当たっているのですけれど。
ともかく仮想FDDそのものが論理的な存在なので、そこで扱うセクタもトラックも当然どのようにでもなる論理的なものということになります。
それならば。
仮想FDDをCP/Mの論理セクタと論理ブロックに合わせて設計するのが合理的です。
ということで。
CP/M互換DOSの仮想FDD版では、1セクタは論理セクタと同じ128バイトで、1トラックもブロックと同じ16セクタとしました。
あ。
ブロックは最初から16セクタと決まったものではありませんから、これは設計上の都合から、ということになります。
ともあれ、ここではトラックをブロックと言い換えても同じことになっています。
もともとのCP/Mでは物理的なセクタと論理的なセクタがあって、さらに物理的なトラックと論理的なブロックという概念があったわけですが、CP/M互換DOSでは、セクタもトラックもそしてブロックも実際のハードウェアとは関係がない論理的なものになっているということが言えるでしょう。[書き直しここまで]
このところ時間が無くて毎日少しずつしか書くことができません。
本日も時間がなくなってしまいました。
この続きは次回にすることにいたします。
ワンボードマイコンでCP/Mを![第219回]
2012.9.20upload
2012.9.21一部を書き直し
前へ
次へ
ホームページトップへ戻る