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

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

[第220回]


●前回の最後を書き換えました

前回はちょいと時間が無くなってしまいましたので、最後のところがやっつけといいますか、舌足らずな文になってしまいました。
今朝になりましてから読み直してみましたら、余りに舌足らずでしたのでそこのところを全面的に加筆いたしました。
本日(9月21日)のAM8:00以前に前回([第219回])をお読みいただきました深夜早朝族の皆様は、ご面倒でも加筆部分をご再読いただければ幸いです。

●仮想FDDの構造(その2)

さて。
そのように加筆いたしましたのですけれど、それでも肝心のところが抜け落ちておりました。
説明図には記入してありますから、おそらくご賢察いただけたこととは思いますが。

つまり。
ここのところずっとテストを続けております、CP/M互換DOSの仮想FDDは容量2MBで、a〜dドライブの4基を搭載する構成になっています。
全てWindowsパソコンの通常Cドライブの上に、CP/M互換DOSプログラムをインストールしたディレクトリ(フォルダ)内に構築されます。
2MBの内容は1セクタが128バイト、1トラック(ブロック)が16セクタで1024トラック(ブロック)から成ります。
ここでいうトラック(ブロック)もセクタも論理的なもので、Windowsのハードディスクの実際のトラック、セクタとは何の関わりもありません。

なお上記のセクタ、トラック(ブロック)の数値から全体の容量を計算しますと、
128×16×1024=2097152バイトになります。
それのどこが2MBやねん?と疑問に思われるかも知れませんが、それを2MBと表記するのが慣習であります。

数値が大きくなればなるほど実際の数値と名目の数値との乖離が激しくなります。
しかしこれも先人の智恵でありまして、2097KBではどうもピンとこないところがあります。
128×16=2048バイトなのですけれど、たとえばこれがメモリでありますと普通はこれを「2048バイトのメモリ」とは言いません(言う場合もあります)。
大体は、2KBのメモリである、と言います。
その半分の1024バイトも同様に端数を切って1KBである、と言います。
ですので、2048×1024=2K×1K=2Mなのです。

ちなみにご存知のように、もとは2進数(16進数)から来ておりまして、2097152は16進数に直しますと200000Hです。
たまたま上位に2がありますが、これはたまたまで、だから2MBというわけではありません。

よくよく考えてみましたら、この慣習は2進数(16進数)と深く関わっているようです。
メモリ容量を慣習的な呼称と実際の容量(10進数)とそしてその16進数表現とを並べて表記してみましょう。

慣習による表現  正確な10進数  16進数
      1           1        1
      2           2        2
      4           4        4
      8           8        8
     16          16       10
     32          32       20
     64          64       40
    128         128       80
    256         256      100
    512         512      200
     1K        1024      400
     2K        2048      800
     4K        4096     1000
     8K        8192     2000
    16K       16384     4000
    32K       32768     8000
    64K       65536    10000
   128K      131072    20000
   256K      262144    40000
   512K      524288    80000
     1M     1048576   100000
     2M     2097152   200000

慣習によるメモリ容量の表現が1、2、4、8…というように倍倍に増えていっているのは、メモリ容量そのものがそのように倍倍に増加していったことに起因しているようです。
KB、MBのような大きいサイズではKB以下の数1、2、4、8、…、256、512にKB、やMBをつけて表すことが通例のようです。
なかには1024、2048、4096というように実際の数値をそのまま用いることもあるようですが、1MBの代わりに1024KB、16GBの代わりに16384MBというような使い方をすることはあっても、それを1048576B、17179869184Bなどと言うことはちょっと無いようです。

うーん。
しかし。
16384MBと言うよりも16GBと言うほうがなんとなく大体の大きさがわかるような気がしませんでしょうか。
ちなみに1MBや16GBからその正確な数値を換算するのは簡単で、1MB=1024×1024、16GB=16×1024×1024×1024を計算すればよいのです。
Windowsの電卓で計算して、ついでに16進数に変換してみてください。

あ。
16GBはWindows98の電卓では16進数に変換しようとするとこけてしまいます。
さすがWindows7の電卓ではきちんと変換できました(16進数は表示をプログラマにすると使えます)。
16GBは16進数では400000000Hです。

え…と。
つい、横道にそれてしまいました。
余計なことを書いているうちに時間がなくなってしまいましたので、この続きは次回にすることにいたします。

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

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