初めて触ったコンピュータ その1

記憶をダンプしておく」シリーズ第1号。最初に述べたように、これは主観的な記憶であって、正確性は保証しないし、いろいろ美化されていると思う。懐古厨が嫌いな人にはオススメしない。

私が最初に触れたコンピュータは、1981年発売の NECPC-6001 である。といっても、私はリアルタイムに PC-6001 を触っていたわけではない。それは、両親の世代である。私の場合は、父親が、自分の学生時代(?)に楽しんで、その後屋根裏で埃をかぶっていた機械を、好きにしていいと言って出してきてくれたのである。小学校低学年の時であった。当時自宅にあった最新のマシンは Windows 3.1 の入った FM-TOWNS II だったが、これはもちろん父親が仕事に使うわけで、小学生に触らせて壊されたらたまらない、そこで、既に無用の長物と化していた PC-6001 がまずおもちゃとして与えられたのである。

この「昔話」シリーズで少しずつ書いていくつもりだおもうが、その後、X1-turbo, All in Note, FM-TOWNS, FMV-DESKPOWER と、独自OSから MS-DOS を経て Windows へ、8bit CPU から 32bit CPU へという20年分のパソコン進化の流れを、私は小学校時代の数年間で追体験することになった。言語も、BASIC、アセンブラC言語スクリプト言語と進んだ。あとから考えると、私のコンピュータとの出会いが PC-6001 から始まったのは、とてつもなく幸運なことだった。いきなり Windows マシンから触っていたら、私は決してコンピュータを好きにはなっていなかっただろうし、プログラミングに触れることもなく終わっていたに違いない。それはそれで、まっとうな生き方だったかもしれないが、今の自分はなかっただろう。

上で、「追体験」と書いた。リアルタイムに切磋琢磨した人たちに比べれば、表面をなぞっただけに過ぎない。美味しいところだけをつまみ食い、いや、食い散らかしただけだとも言える。嗚呼、私のやることは、何もかもそうである!

リアルタイムでマイコン世代を過ごした人たちの思い出話は、ネットを検索すれば見つかるので、それらを参照されたい。といっても、実機に触れたことのない人に分かるように書かれているものはそれほど多くないように思う。私もこの記事を self-contained なものにしようと思いつつ、あの感覚を描写しつくすのは、時間的にも筆力的にも不可能であると断念せざるをえなかった。そういうことは、筆の立つ者たちに任せる。私のユニークな点は、「最後の追体験組である」ということに尽きると思う。インターネットが普及してからコンピュータに触れた世代が、レトロブームに乗って、昔のコンピュータを入手してみるということはそれなりにあると思うし、今後も起こりうるだろう。だが、最初にプログラミングした機械が NECPC-6001 だという世代は、私が最後に近いのではないか。そういう視点から、話を進めていく。

前置きが長くなった。背景説明はこのくらいにして、PC-6001 の話に入る。Wikipedia の記事によると、CPU はZ80互換の8ビット、動作クロックは 3.99MHz, メモリは16KBらしい。最近の人にとっては驚くべき低スペックかもしれないが、桁は間違っていない。

このコンピュータにはディスプレイはついていなくて、家庭用テレビにつなぐようになっていた。ゲーム機と同じである。本体はキーボードと一体化しており、今風の言葉でいうと、アイソレーション・キーボードになっていた。本体とテレビをつないで電源を入れると、起動は一瞬で完了する。当時のコンピュータは、ROM (Read only memory) にプログラムが格納されていたから、読み込みを待つ必要がなかったのである。――と書くと、今はSSDが普及しているから、再びコンピュータは一瞬で起動するもの、という時代になりつつあるのかな。

OSはない。N60-BASIC というプログラミング言語がOSを兼ねていたのである。私は、この言語の入門書で、プログラミングを学んだ。青い表紙の、横長の冊子だったと思う。タイトルを思い出せないので、どなたかご存知の方がいれば教えて欲しい。

最初に実行したのは、こんなプログラムだ。

10 I = 1
20 PRINT I
30 I = I + 1
40 GOTO 20

いや、その前には、"Hello, world" 的なプログラムやら、変数の説明とかがあったに違いない。しかし、私にとって、最初の「プログラム」として印象に残っているのは、誰がなんと言ってもこれである。

このプログラムを入力して、RUN と入力すると(あるいはF5キーだったかな)、画面には1 2 3 4 5 ... と数字が無限に表示される。これは無限ループであって、STOP ボタンを押さないかぎり止まることはない。テレビ画面は無数の数字に埋め尽くされ、それがどんどんスクロールしていく。どんどんといっても、遅いCPUでインタプリタ言語を走らせているのだから、数字が増えていくのは十分に目で追える速度だったはずだ。目に見えるというのは重要で、以前、どなたかがアマチュア無線上でのデジタル通信の思い出を書いていて、300ボーくらいでTCP/IPを流していると、パケットが再送されたり、順序が並び変わるのが目で見て分かったという話だった。今、パケットキャプチャのログを見るよりも、遙かに肉体的な体験だったことだろう。

話が逸れた。上のプログラムには、変数とループという、プログラミングの大事な要素が詰まっている。ここに条件判断を加えれば、もうなんでもできてしまうくらいだ。だから、これが「最初のプログラム」なのである。

当時のBASICの本では、必ずこのコードが最初の方に載っていて、無限ループという言葉もここで紹介されていた。それから、I = I + 1 というのは数学的にはおかしいけれど、プログラミングの世界では、右辺を左辺に代入せよという命令だから問題ないというのも決まり文句であったが、これを入力したのは小学校の低学年の頃、数学でなくて、プログラミングで文字式のことを知ったような塩梅だから、どう数学的におかしいのやら全く分からず、この文章自体に「不思議な匂い」を感じたのを覚えている。

自由帳に鉛筆でプログラムらしきものを書き付けたりもした。よくあるイディオム、例えば

10 IF INKEY$ <> CHR$(13) THEN GOTO 10

とか(これはポーリングによって、リターンキーが押されるまで待つコードである)だったりしたが、なにぶん10歳にもならぬような子供のやること、記述は時々妄想と混ざり、架空の構文が出現したりしていた。

さてさて、長くなったので、いったんここまでとする。6001 の話はまだ続く。データレコーダの話を書かないわけにはいかないからだ。