パスワードを忘れた? アカウント作成
276758 journal

yasuokaの日記: 復帰(CR)と改行(LF)

日記 by yasuoka

Steve Ouallineの『C実践プログラミング』(オライリージャパン、1998年6月)を読み直していたところ、テレタイプのCR(Carriage Return)とLF(Line Feed)について、かなり妙なことが書いてあるのに気がついた(pp.220-221)。

はるか昔、暗黒の時代であったBC (Before Computers、コンピュータ以前)に、Teletype Model 33という名前の魔法の装置がありました。この驚くべきマシンは、モータからできているシフトレジスタ、ローター、さらにレバーとバネだけでできているキーボードROMを備えていました。このテレタイプは、キーボード、プリンタ、紙テープの読み取り器/穿孔器を備えていました。そして、モデムを通して1秒間に10文字という驚嘆すべき速度で電話回線にメッセージを送信していきました。
しかし、このテレタイプには問題がありました。印字ヘッドを右端から左端に移動させるのに2/10秒もかかったのです。2/10秒といえば2文字送信できる時間です。印字ヘッドが改行中に2文字目を送信しようとすると、この文字は消失してしまいました。
テレタイプの支持者達は、この問題を解決しました。2つの行終端文字を作り上げたのです。1つは<復帰>で印字ヘッドを左端に移動させます。もう1つは<改行>で用紙を1行分上方に動かします。

『コンピュータ端末の元祖になった電信機「テレタイプ」』(電子情報通信学会誌, Vol.93, No.1 (2010年1月), pp.12-16)にも書いたが、CRとLFがテレタイプに導入されたのは、Model 33 (1963年発売)なんかより遥か昔、Morkrum Printing Telegraph (1910年完成)にまで遡る。この時点のテレタイプは、印字速度が回線速度よりかなり遅かったが、それは特に問題とはならなかった。回線直結で使う場合は、送信機と受信機の両方の動作が遅いために、送信機側の動作を待ってからでないと次の文字が送れなかったのだ。あるいは、高速な通信回線を十分に使いたい場合は、送受信には5穴の鑽孔テープを使用して、あとでゆっくりプリントアウトする、ということをおこなった。その場合は、CRの間は鑽孔テープの読み込みを止める、といういわばバッファリング処理がおこなわれたのである。

すなわち、CRに時間がかかったためにCR+LFにした、というOuallineの説には、全く根拠がない。実際には、CRとLFを別々のコードにすることで、テレタイプは、重ね打ちを可能にしていた。初期のテレタイプ(5bitコード)には、BS(Back Space)がなく、1文字だけ戻すという機構も実装されていなかった。そこで、CRとLFを別のコードに分けることで、重ね打ちを可能にしたのである。

この議論は、yasuoka (21275)によって ログインユーザだけとして作成されたが、今となっては 新たにコメントを付けることはできません。
typodupeerror

コンピュータは旧約聖書の神に似ている、規則は多く、慈悲は無い -- Joseph Campbell

読み込み中...