Windows 7の中に眠る 42年前の遺伝子についての個人的な考察
- yamate_yokohama
- 21137
- 214
- 13
- 34
昨日 勤務先で windows 7上において “prn.txt”というファイルを作成できないと言っている人がいた。 実は prn だけではなく con とか nul とか aux というファイルも作成できない。 pic.twitter.com/K9HOLyiemp
2016-03-10 01:48:54いまどきの若いもん は シェルと コマンドラインというものをご存知でない。 prn , con , nul そして aux はファイルではなく それぞれ\dev\prn \dev\con \dev\nul \dev\aux などのデバイス名なのである。
2016-03-10 01:50:28これは 1983年にMS-DOS 2.*がリリースされたときに 同じマイクロソフトのXENIX286から影響を受けて導入された概念である。 MS-DOS時代の遺伝子である。
2016-03-10 01:51:43ちなみに Windows 7には 1974年にリリースされた 8080用のOS CP/Mの遺伝子も残っている。 画像を見ていただきたい。 pic.twitter.com/IFHztTD0TV
2016-03-10 01:52:44****:0000 に “CD 20” と書かれている。 これは アセンブラの “INT 0x20” つまりプロセス終了のコードである。
2016-03-10 01:53:32CP/M時代には “CALL 0”を実行して 、プロセスを終了する仕組みになっていた。 つまり Windows 7は 42年前のCP/Mと アセンブラレベルでの 互換性を一部残している。
2016-03-10 01:54:15****:0080 には “FOO.BAR”と書かれているが 、これは起動したアプリケーションに引数を渡す FCB ( ファイルコントロールブロック)と呼ばれる領域である。 これも CP/Mとの互換性を維持している。
2016-03-10 01:57:03CP/Mの場合 メモリイメージ上のコードは 0x0100 から始まるので FCBも128バイトに制限される。
MS-DOSでも COMモデルにおいて この形式を引き継いだので 、原則としてコマンドラインは128文字に制限された。
いわゆる void main(int argc, char *argv[]) を書けば FCBに書かれた引数が得られる。
2016-03-10 01:57:49Windowsは 、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
食事休憩。 Windows 7と 42年前の CP/Mの関係に これほど多くの人が興味を示すとは思わなかった。 最近はスマホしか持ってないという人もいると思うけど、スマホにも シェルと コマンドラインがあるので遊んでみてください。 pic.twitter.com/vo4UYZP4EA
2016-03-10 15:19:09