WWIの命令と画面
目次
後期のもの
1954年9月に書かれたプログラムガイドでは、CRT にはキャラクタ表示機能やライン機能が追加されています。
中期と比較して、なぜか縦横の指定方法が逆になりました。si で縦を決め、rc で横を決めます。縦線を引くよりも、横線を引くほうが需要として多かった、ということでしょうか。
WWI の開発を行ったサーボ研究所では、WWI と並行して、複雑な形状の金属部品を加工できる機械を研究していた。現代では CNC(Computer Numeric Control:コンピューター数値制御)加工機と呼ばれるものの元祖だ。
最初のころは、CNC加工機を直接プログラムして制御していた。しかしやがて、形状データを数式で示すと、その形状を削り出すためのCNC加工機のプログラムを紙テープに生成するコンパイラが作成された。
画像は、そのコンパイラが CRT 上に示した、加工機の「刃」の移動経路と、それによって作り出される形状の概要だ。
この形状で問題がなければ、あとは CNC加工機に紙テープを読み込ませれば、設計した通りの 3D 形状が取り出せる。
最近話題の「3D プリンタ」を、60年も前に実現していたわけだ。
キャラクタを書くには、si 命令でキャラクタ描画用の機器番号を指定します。(通常は機器番号は8進数3桁ですが、CRT の特別機能のために最上位の4桁目が準備されました)
縦横位置の指定は同じですが、rc 命令でアドレスを指定し、そのメモリ内容が送られます。CRT 側では、この上位 8bit を取り出し、7セグに類似する表示を行います。(最上位ビットは無視。ここは普通に考えると符号ビットだから避けたと思われる)
工夫次第でアルファベットも書けるし、おかしな文字や見分けがつかない文字でも、文脈次第で読めてしまうものだ。
それに、これは「簡単に文字を書く機能」なのだから、どうしても書けない文字だけ、別の機能を使って自分で描いたってよいのだ。
線も、キャラクタと類似の方法で書かれます。まず線描画の機器番号を指定し、縦横位置を指定します。この際、rc 命令でアドレスを指定し、そのメモリ内容が送られます。
CRT 側では、これを上位8bit と下位8bit にわけ縦横への相対位置データとします。データの内容は、上位 6bitだけを取り出し、先頭を符号、残り5bit を座標と考え、先頭位置からの線を引きます。
つまり、指定した点から、縦横に ± 31 ドットの位置までの短い線が描けることになります。
中期の CRT では、線を引くのには、点をたくさん描く必要がありました。その 31回分を1回の操作で行えるのだから、非常に強力な命令です。
80年代のパソコンでは文字の拡大なんかできなかったのに、すごいもんだ。
文字ごとに拡大率も変えられるので、結構にぎやかな画面が作れたのではないかと思う。
…というところで、ハードウェアの詳細は終わりにします。
これくらいで終わりたいところだったけど、WWI は非常に興味深いし、資料も大量に公開されている。
調べているうちに、語りたいことがどんどん増えてきました。
というわけで、次はアセンブラの仕様や、実際のプログラムでの自己書き換えがどのように行われていたかを紹介します。
参考文献 | |||
WHIRLWIND I COMPUTER BLOCK DIAGRAMS | R.R. Everett & F.E. Swain | 1947 | MIT |
Review of electronic digital computers | R.R. Everett | 1951 | AIEE-IRE |
WHIRLWIND SUBROUTINE SPECIFICATION | 1952 | MIT | |
WHIRLWIND (メモ) | |||
Programing for In Out Units | Philip R. Bagley | 1952 | MIT |
Programing for In Out Units | Philip R. Bagley & H. H. Denman | 1954 | MIT |
Automatic Program Tools | Douglas T. Ross | 1958 | MIT |