48年前のコンピュータ

###昔あるところ
　昭和４７年、都心の古い建物の、明るく広い実験室。コンピュータは、その部屋の一角の空調されたコーナーにガラス張りのパーティションで囲われていました。
　高さ180cm、幅60cmほどのキャビネット３つほどがその本体。中央キャビネット正面には手前に突き出た操作卓に、ピアノの黒鍵のように並び美しく色分けされたシーソースイッチが印象的でした。
　パネル正面にはたくさんのランプが並び、その上側にＣＲＴディスプレイ、小型の磁気テープドライブ。ＳＦ映画にでてくるコンピュータのような魅力的なデザイン、黒いキャビネットにグリーンのラインとスイッチの色合いもエレガントで、アメリカの会社ってなんでこんなにきれいに作れるのだろうと思いました。
　正面の椅子に座り腕を操作台にのせ、演奏するようにパチパチとスイッチを操作するのが毎日の楽しみでした。操作卓の横にはASR-33テレタイプライタが置かれ、プリントを始めると、ガシャガシャと音をたてながら円筒形の活字車を器用に動かしていました。
　パネルにはメーカである digital のロゴとその下にはその本社所在地、Maynard, Massachusettsと書かれていたのを覚えています。

###その名はPDP-12
　コンピュータは、米DEC社(Digital Equipment Corporation)のPDP-12という機種で、1969～1973年の間に７００台以上が製造されたようです。最小構成で3万ドル程(当時の為替1$=￥360で、初任給５万円程度）と今の金額換算で5,000万円くらいでしょうか。当時科学技術、医療など非事務系ではミニコンが全盛で、DEC社は世界的に成功してきていました。
　論理素子には当時まだ新しいTTL素子が使われていたようですが、残念ながら内部をのぞき込む機会がありませんでした。メモリは磁気コアメモリ（写真）でした。この写真はPDPのものではなく70年代にジャンク屋で手に入れたコアメモリの写真。コアの直径は1mmにも満たない程。各コアには磁化を反転させるためのXドライブ線、Yドライブ線、インヒビット線、そして一筆書きのセンス線合計４本の細い銅線を通して（編んで？）あり、どうやって作るのだろうと不思議がったものです。後年、会社の実験室で使ったNECのM4というミニコンにもコアメモリが使われ、電源を切ってもメモリが消えないのは当時とても便利でした。奇しくもこのミニコンも1969年の製造開始だったようです。半導体メモりは数年のうちに主流になっていきます。
![coreMemory_trim.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229600/c1fe09d6-4dfe-a8e2-0020-88e60513656f.png)

###立ち上げる
#####時間割
　研究所では、コンピュータを時間で割り振って使用していました。電源をＯＮしても、単にハードウエアに電源が供給されるだけで、CPUは完全な停止状態でした。磁気ディスクからBOOTする設定では使っていなかったと思います。そもそも当時は現在イメージされるOSのようなものは一般にはまだありませんでした。さて、割り当て時間に自分専用の小型磁気テープとプログラムリストの厚いバインダーを抱えて部屋に入り、パネルの前に座ると、停止したコンピュータに息を吹き込む儀式の始まりです。
#####供え物
　自分の小型磁気テープをドライブにセットし、もう一つのドライブにはモニタプログラムの入ったテープをセットします。
#####儀式
　右手の人差し指、中指の爪側を、操作卓の24個のシーソースイッチの左端から右端迄ピアノの鍵盤をパラパラとなぜるようにして押し込みます。これがキーをAll"0"にする儀式。続いてそのうち12個のleftスイッチに8進で'0701'、同じくrightスイッチに'7300'をセットします。シーソースイッチは、奥側へ押し込むと０を、手前を押すと１を表し、8進数がセットし易いように3ビットずつ色分けされていました。スイッチの軽やかな感触は今だに残っています。先ほどの、'0701'は機械命令コードで確かRead Tape 1 Block、'7300'はテープブロック番号と読み込むメモリブロック番号。
　ついで、ModeスイッチをLINC側に倒し、IO Preset次いでDOキーを押すとスイッチで指定した命令コードが実行され、テープがサ、サと左右に動き、DIAL( Display Interactive Assembly Language)と呼ぶモニタプログラムがメモリにロードされます。
#####動き出す
　あとはStart20キーを押すとモニタが走り、テレタイプライタがガシャ、といってプロンプト文字を打ち出しました。CRTにもカーソルが点滅していたように思います。スピーカのボリュームが上げてあれば、じゃらじゃら音をたてはじめていたと記憶しています。モニタにはアセンブラはじめ結構機能があったように思うので、読み込んだ1ブロックのプログラムがStart20によって走り、より大きなモニタを読み込むBootstrapをしていたのかもしれません。
#####日々の作業
　プログラムは机上でアセンブラコーディングして、時間割り当てが来ると先ほどの一連の操作の後、タイプライタからアセンブラを入力してソースコードをテープに格納します。アセンブリが完了すると走らせてテスト。デバッグはパネルのスイッチを操作してシングルステップ実行したり、メモリ番地の内容をランプで確認したりすることで行っていました。特定番地でのトラップなどもスイッチから操作できたと記憶しています。　一切ソフトウェアの介入なしで、スイッチで直接レジスタやメモリにアクセスできたのは当時のコンピュータの醍醐味でした。
###アーキテクチャ
　PDP-12は、12ビットマシンで、演算で使えるレジスタはアキュムレータ(12b)、乗除算用レジスタ(12b)、リンクビット(1b)だけ。メモリアドレスは15bit扱えたので、メモリは最大32キロワードまで拡張可能でしたが、使用したマシンは4キロワードのフェライト・コアメモリが実装され、後に増設されました。
　命令セットは、LINCモードとPDP-8モードと呼ぶ2つの体系を持つ変わり種。通常のアルゴリズム（メモリ、アキュムレータ・オペレーション）には、非常にシンプルな命令セットのPDP-8モード、周辺機器との入出力命令はLINCモードで作成し、プログラムでモード切替して使いました。8モードの命令コードは上位3ビットがOPコード、間接指定とページ指定に各1bit、残りの7bitで下位のメモリアドレスを指定。よくつかう命令はTAD, DCA, ANDの３つのメモリ－レジスタ演算と12bitエンコードされたレジスタ操作命令、そしてISZ, JMP, JMSの３つの分岐命令から成り、1日で覚えられるほどシンプルでした。プログラミングはアセンブラ。
　PDP-12の最小命令実行時間は1.6μSでしたので最大MIPS値は0.6MIPS程度、昨今のＰＣをざっくり100,000MIPSで見積もるとスピード差は十数万倍あります。価格も考慮すると比較になりません。

###入出力装置
　入出力装置は、磁気テープドライブ、磁気ディスク、ＣＲＴディスプレイ、タイプライタ、実験用パラレルポートとアナログポート、リンクビットにつながれたスピーカ、紙テープリーダ・パンチ、それにラインプリンタ。ラインプリンタが、活字ベルトをブン回しながらプログラムリストをパリパリと打ち出すのを見た時は感動でした。テープドライブで使う磁気テープは、外径が10cm、内径7-8cmくらいの手のひらに乗るくらいの白いプラスチック枠に、幅2cm程の磁気テープが巻かれたものでした。この扱い易い小型のテープにはファイルシステムがあって、丁度フロッピーディスク（当時まだ存在しない）のように使える優れモノでした。
###Vector graphics
　PDP-12にはCRTディスプレーがありましたが、現在のラスタ方式のディスプレイとは異なり、１つの命令により指定した位置に点を表示する、というものでした。線分を表示するには命令をたくさん実行する必要があり、表示が多くなるとちらつきが増加せざるを得ませんでしたし、計算処理に専念すると当然ですが表示はできなくなりました。当時メモリは高価でしたから、VRAMが不要なコストパフォーマンスの良いグラフィックの実現方法だったのだと思います。文字は、12ビットのビットパタン列と座標を指定して描画する命令を使用して表示したと記憶しています。
###作ったプログラム
　プログラミングの主目的はロボット制御でしたが、その合間にスピーカを使って音楽を鳴らしたり、ＣＲＴ上で三目並べゲームを作ったりしました。
　ロボット制御では、ロボットアームの腕を制御するための座標計算を、許容される時間と精度で、できるだけコンパクトなメモリサイズで実現するのが主な目標でした。最終的にメモリ上に作成した三角関数表から補間計算して計算スループットと精度とを確保しました。補間計算はリアルタイム計算のためアセンブラで作りましたが、三角関数表はアセンブラでなくFORTRANに似たFOCALというインタプリタ言語でATAN関数を使ってオフラインで作り、アセンブラのプログラムにデータをリンクしました。この頃既にBASIC言語が登場してきており、まもなくパソコンの世界が幕を開けます。時代はミニコンの時代からパソコンに変わっていき、DEC社は1980年代にコンピュータ市場でIBMに次ぐ地位を得る繁栄の後に消えていく運命となります。80年代に、UNIXが普及し始めた頃、端末を通して使ったのは繁栄の頃のDEC社のVAXシリーズでした。
##５０年の進歩
　このコンピュータは１９インチ（多分）ラック３本で性能が１MIPSに満たないものでした。今日のデータセンタではその数万倍以上の性能のサーバがラック１本に２００以上搭載されネットワークを通じてどこからでも使えるという驚異的な進歩を遂げています。