PDP-7版UNIX再現プロジェクト
[PDP-7で開発された最初期のUNIXを再現するプロジェクト] (https://github.com/DoctorWkt/pdp7-unix)があります。
以前より「Unixの歴史を再現したリポジトリを読む」シリーズで紹介しているUNIXリポジトリ再現プロジェクトには、このPDP-7版再現プロジェクトの成果が含まれており、その正体は複数の再現プロジェクトの複合体でした。
ありがたいことに、PDP-7版再現プロジェクトの主要メンバーの1人であるセバスチャン・ラスムセン氏からご連絡をいただきました。Google翻訳で私の記事を読んでくださったそうです。
コピー用紙からソースを復元
PDP-7版のソースコードは、当時のテープが残っているわけではなく、全米各地に残っているソースコードのコピーをかき集めて復元しているそうです。コピーは不鮮明だったり欠落したりしています。一筋縄ではなさそうです。
ベクタースキャン方式のブラウン管ディスプレイ
PDP-7にはベクタースキャン方式のディスプレイがついています(PDP-9の写真を使ってしまいましたが、だいたい同じものでしょう)。この大きなディスプレイがついているモデルと、小さなディスプレイしかついていないモデルがあったようです。ていうか恐らくオプションなのでしょう。画像を表示しなくてもよい場合はディスプレイを買わないという選択肢もあったのではないかと思われます。
60年代はタイプライター同士で遠隔通信ができるテレタイプをコンピュータの端末に流用していた時代であり、ディスプレイがなく、タイプやパンチされた紙を見て入出力を確認するのが普通でした。ディスプレイは画像を表示するために付けられたもので、ターミナルとして使うことは想定されていなかったものと思われます。しかしこのブラウン管のディスプレイがついた端末は当時としては画期的な部類だったことでしょう。
PDP-7版UNIXのフォント
この映像は再現プロジェクトの皆さんがエミュレーターを作りながら再現したものです。
このベクタースキャンのディスプレイに文字を出すのは一苦労だったに違いありません。ドットという概念がなく、ビームの軌跡で文字を描かないといけません。
謎のデータの正体
:cf
v
aa
ak
x
gh
v
ga
x
mn
r
:cg
x
gf
v
gk
nk
x
kk
v
mi
mc
ka
ca
ac
ai
dl
x
mn
r
[Unixの歴史を再現したリポジトリを読む①] (https://qiita.com/hayashida-katsutoshi/items/37afd9acbce117aa223c)で紹介した、cat.sの中にある謎のデータ文。これはB言語のスレデッドコードではないか、scope.vのvはバーチャルのvではないかという予想を書きましたが、間違っていました。
セバスチャン氏によるとこれはベクター形式のフォントデータ。ラベルのcfはFのフォント、cgはGのフォントを表しているそうです。vはベクターのvだったようです。
このフォントデータは、ケン・トンプソン自身がUNIXの開発を始める前に作っていたSpace Travelというゲームから流用したものがベースになっているようです。
そういえばこのコードはTTY(標準入出力)のコードを追っている時に見つけたものでした。フォントであればTTYのコードに混ざっているのも理解できます。ちなみにTTYはテレタイプ(TeleType)の略です。
解析プロジェクトの成果
それにしても初期UNIXのコード解析は大変です。コメントのないアセンブラですし、ディスプレイがベクタースキャンだったという驚きの事実も、コードを懸命に追うだけではわからなかったかもしれません。
cat.sをちゃんと読んで解析していないことにちょっと負い目がありましたが、PDP-7版UNIX再現プロジェクトのディスカッションなんかを見ていると、エキスパートの皆さんでも四苦八苦しており、カジュアルに読んで楽しみたいだけの私なんかがパワーを注げなくてもまぁしょうがないです。
しかしプロジェクトの皆さんの努力があって、私たちもこうして楽しめているわけで、本当にありがたい限りです。
バックナンバー
[Unixの歴史を再現したリポジトリを読む①] (https://qiita.com/hayashida-katsutoshi/items/37afd9acbce117aa223c)
[Unixの歴史を再現したリポジトリを読む②] (https://qiita.com/hayashida-katsutoshi/items/3c4bc05ab4c627286be8)
[Unixの歴史を再現したリポジトリを読む③] (https://qiita.com/hayashida-katsutoshi/items/eb80ebd5667af10193f5)
[Unixの歴史を再現したリポジトリを読む④] (https://qiita.com/hayashida-katsutoshi/items/5edde08b01b81dac26b7)
[Unixの歴史を再現したリポジトリを読む⑤] (https://qiita.com/hayashida-katsutoshi/items/df9c08c4c5011f04b45e)