Island Life

< Congratulations | obsolete - 黎明日記: >

2008/06/03

昔話

普段はネットで若い世代のプログラマと自然に話してるんで世代間ギャップを 忘れそうになるんだけど、なんでターミナルでCtrl-Dを打つとEOFになるのかみたいな話を読むと 歳の差を感じてしまうなあ。

私が研究室に入った時の環境は、大きめの冷蔵庫くらいのMicroVAXで BSDが走ってて、私が確保したのはVT-220だったかな、オレンジ色の 文字が出る端末だった。あとはDOS PCをがしがしシリアル接続して 端末エミュレータにしてたかな。RS232Cのケーブルはよく作ったなあ。 (PCにEthernetなんてついてなかった。そもそもEthernetといえば直径1cm くらいある太くて黄色いケーブルにぐりぐり錐で穴をあけてつなぐものだった のだ。)

シリアルポートでの端末接続はサーバマシン管理には重宝するんで、 そんなにobsoleteな技術でも無いとは思っていたのだけれど、考えてみたら 最後に使ったのは2000年か? SIGGRAPHの展示会場で最終調整する時に ノートPCからシリアルでつないだ覚えがあるが。もう過去の技術なのかなあ。 うちの押入れには未だに非常用にD-sub 9pinや25pinのコネクタの買い置きが 埋まってるのだが。

あと、上記ひげぽんさんのところのコメントで書ききれなかったことの 補足:

  • 端末ドライバでEOFのデフォルトがctrl-Dなのは、ASCII codeの0x04が EOT (end of transmission) だからだと思う。 
  • DOSのテキストファイルでctrl-ZがEOFになるのは、本当の起源は どこだろう。私が知ったのはCP/M-80のファイルシステムで、あれは ファイルサイズがセクタ単位でしか管理できなかったので、セクタの 途中で終わるファイルのためにEOFマーカーが必要で、0x1aがそれに 使われていた。多分CP/Mもどっかからそれを継承したんだと思うが。
  • DOSのctrl-ZとUnixのctrl-D、どちらもEOFに関係してるが、前者が アプリケーションレイヤでの対応なのに対し、後者は通信プロトコル レベル(アプリケーションデータの外側)の話で、レイヤが違うことに注意。 設計的には後者の方が正しい。

(なおこの話題がおじさんホイホイであることは承知している。語りたい人は 各自、自分のページで語るように。)

(追記@2008/06/04 14:04:00 PDT: WiLiKi:びさんの「シリアル端末」見るまで気づかなかった んだけど確かに最近のノートPCにRS232C出てないな。今使ってるX60sは もちろん、先代のX22も無いや。上記のSIGGRAPHの時はその前の代だったから、 東芝のサブノート(portegeとかなんとか)だった。今世紀初頭に USBの普及で取って代わられたってことかな。)

Tags: Hack, PC