Windows 7の中に眠る 42年前の遺伝子についての個人的な考察

Windows 7の振る舞いをよく観察すると 42年前の 8bit時代のOS CP/Mとの互換性を残していることを理解できます。 Windows 7の中に残る CP/Mの遺伝子についての個人的な考察です。
83
ヒト科の幼虫 🐛 @yamate_yokohama

昨日 勤務先で windows 7上において “prn.txt”というファイルを作成できないと言っている人がいた。 実は prn だけではなく con とか nul とか aux というファイルも作成できない。 pic.twitter.com/K9HOLyiemp

2016-03-10 01:48:54
拡大
ヒト科の幼虫 🐛 @yamate_yokohama

いまどきの若いもん は シェルと コマンドラインというものをご存知でない。 prn , con , nul そして aux はファイルではなく それぞれ\dev\prn \dev\con \dev\nul \dev\aux などのデバイス名なのである。

2016-03-10 01:50:28
ヒト科の幼虫 🐛 @yamate_yokohama

これは 1983年にMS-DOS 2.*がリリースされたときに 同じマイクロソフトのXENIX286から影響を受けて導入された概念である。 MS-DOS時代の遺伝子である。

2016-03-10 01:51:43
ヒト科の幼虫 🐛 @yamate_yokohama

ちなみに Windows 7には 1974年にリリースされた 8080用のOS CP/Mの遺伝子も残っている。 画像を見ていただきたい。 pic.twitter.com/IFHztTD0TV

2016-03-10 01:52:44
拡大
ヒト科の幼虫 🐛 @yamate_yokohama

****:0000 に “CD 20” と書かれている。 これは アセンブラの “INT 0x20” つまりプロセス終了のコードである。

2016-03-10 01:53:32
ヒト科の幼虫 🐛 @yamate_yokohama

CP/M時代には “CALL 0”を実行して 、プロセスを終了する仕組みになっていた。 つまり Windows 7は 42年前のCP/Mと アセンブラレベルでの 互換性を一部残している。

2016-03-10 01:54:15
ヒト科の幼虫 🐛 @yamate_yokohama

****:0080 には “FOO.BAR”と書かれているが 、これは起動したアプリケーションに引数を渡す FCB ( ファイルコントロールブロック)と呼ばれる領域である。 これも CP/Mとの互換性を維持している。

2016-03-10 01:57:03

CP/Mの場合 メモリイメージ上のコードは 0x0100 から始まるので FCBも128バイトに制限される。
MS-DOSでも COMモデルにおいて この形式を引き継いだので 、原則としてコマンドラインは128文字に制限された。

ヒト科の幼虫 🐛 @yamate_yokohama

いわゆる void main(int argc, char *argv[]) を書けば FCBに書かれた引数が得られる。

2016-03-10 01:57:49
ヒト科の幼虫 🐛 @yamate_yokohama

Windowsは 、Windows2000を最後に 、POSIX互換システムコールを捨ててしまったが 、 どういう方針なのかはわからないが いまだに42年前の8bit時代の CP/Mの遺伝子を残している。

2016-03-10 01:58:37

ついしん

人間の遺伝子の中にも 細菌のような生物と共通する遺伝子があるのと似たような事情か。

2:10 AM
Thursday, March 10, 2016 (JST)
Time in Yokohama, Kanagawa Prefecture

ヒト科の幼虫 🐛 @yamate_yokohama

食事休憩。 Windows 7と 42年前の CP/Mの関係に これほど多くの人が興味を示すとは思わなかった。 最近はスマホしか持ってないという人もいると思うけど、スマホにも シェルと コマンドラインがあるので遊んでみてください。 pic.twitter.com/vo4UYZP4EA

2016-03-10 15:19:09
拡大