マイクロコンピュータの創成期の話をしようとすると、Palo Alto Tiny BASICの話は外せませんね。
私は当時6800派 😛 だったので、8080用のBASICインタプリタのソースコードの直接の恩恵は受けなかったのですが、2K-4Kバイト程度のメモリがあれば、ちゃんとした言語処理系を稼働させることができるという吉報は、大変インパクトがあるものでした。4Kバイトは、当時の私にとっては、確保するのにちょっと苦労する(財源は高校生のお小遣いでしたから)広大な領地のようなものでした。(現在では、個人で256GB 🙂 のメモリを実装したマシンを使っていますが、それでも時々メモリがまだ欲しいと思う。。。一方では64Kバイトでも十分広いと満足しているのにね。)
ちなみに、6800派にとっての重大事件といえば、翌1977年5月のInterface Ageのソノシート事変(のようなインパクト)でしょうか。6800の4K BASICのコードをソノシートで配布しちゃうぞ。。。というやつで、なんとその余震が収まらないうちに、当時の日本のマイコン総合誌のASCII 1977年9月号で、そのソノシートが配布されました。(2つの雑誌は手元にあったのですが、今はどこになるのかなあ。。。)残念ながら、それらのソノシートの読み込みを行う回路の作成や読み込みは行わないままとなりましたが、大変活気のある時代でした。
開発者と雑誌
さて、話は戻って、Palo Alto Tiny BASIC。
まずは、Palo Alto Tiny BASICを公開したDr. Wangの情報です。
- https://ja.wikipedia.org/wiki/%E7%8E%8B%E7%90%86%E7%91%B1
- Dr. Li-Chen Wang
物理学の博士号を持った研究者だったのですね。当時はメインフレームなどの情報技術者なのだろうと思っていました。Wikipediaにはプログラマという表現がなされていますが、学歴や勤務先を見ると、趣味でプログラミングをたしなんでいた(余興で作った)といった方がよいように思いました。(実際の状況がわからないので断言はできませんが)
Palo Alto Tiny BASICが公開されたDr. Dobb’s Journalの情報です。
どうやって購入したのか記憶が定かではないのですが、私も購入していました。作りはこれぞ同人誌というような手作り感満載の雑誌でした。
どうでもいい話ですが、雑誌を始めて見た際に、だれが何を考えてこんなわけのわからない雑誌名にしたんだろう。。。というのが、強烈な第一印象でした。
仕様とソースコードの公開
Palo Alto Tiny BASICのソースコードを探すと、いろいろなバージョンがあって、何が何かわからないという話はよく聞きます。私もわけがわかりません。各移植者が自分用に移植した様々なバージョンが公開されていることが大きいのでしょうが、もともとのバージョンも3つにわかれるようです。
以下に、出版されたPalo Alto Tiny BASICの3種の正当な印刷出版物の情報を示します。それぞれ、PDF化されたものです。
- https://www.autometer.de/unix4fun/z80pack/ftp/altair/
- https://www.autometer.de/unix4fun/z80pack/ftp/altair/DrDobbs-1976-05-v1n5.pdf
- Palo Alto Tiny BASIC: Li-Chen Wang
- Dr. Dobb’s Journal 1976年5月号 Vol.1, No.5 pp.12-24
- https://www.autometer.de/unix4fun/z80pack/ftp/altair/TinyBASIC-2.0.pdf
- DR. WANG’S PALO ALTO TINY BASIC: Roger Rauskolb
- Interface Age 1976年10月号
- https://www.autometer.de/unix4fun/z80pack/ftp/altair/Palo%20Alto%20Tiny%20BASIC%20Version%203.pdf
- Palo Alto Tiny Basic Version Three: Li-Chen Wang
- PCC’s REFERENCE BOOK 1977年7月
- https://www.autometer.de/unix4fun/z80pack/ftp/altair/DrDobbs-1976-05-v1n5.pdf
上記の最初のリンクはftpサイトのIndexで上記のPalo Alto Tiny BASIC以外にも、価値のあるファイルが満載です。また、一つ上のディレクトリに上がることができます。
VERSION 1.0: Dr. Wangが発表したPalo Alto Tiny BASICの Version 1.0は、様々な面で画期的で大きな影響を与えましたが、独自のニモニックを利用してコードが記述されていたため、移植が難しいという問題が指摘されていました。
VERSION 2.0: Rauskolb氏は、Palo Alto Tiny BASICを自分自身の小さなコンピュータボードに移植するために、ソースコードをインテルの標準表記に書き換え、Dr. Wangの協力も得ていくつかのエラーも解消したソースコードをVersion 2.0として公開しました。
VERSION 3.0: 最後に、Dr. Wangが改良したVersion 3.0が公開されました。このコードもいろいろと改良されているのでしょうが、詳細は確認していません。すみません。ですが、本文にも書かかれているように、ゼロページのRSTエントリーで頻出する処理のサブルーチン処理を行っていたのを取りやめています。8080系のプログラムでは、コードを短くするために、RSTエントリーを使用している例を散見しますが、他のソフトウェアとの同居がしにくくなることや、外部からの割り込みのエントリ領域をサブルーチンコールの簡素化に流用する方法に問題を感じました。(ソフトウェア割り込みによるシステムコールというとらえ方もあるかもしれませんが)それに伴いコードの配置も、これまでは0000HからだったのがF000Hからに変更されています。基本的に0000H番地からの固定配置の束縛から放たれるようになり、汎用性の高い実装になったように思います。
一方で、Palo Alto Tiny BASICの特徴ともいえる乗除算処理は、Version 1.0と変わっていません。これはシグニチャみたいなものなんでしょうかね。強気だなー。
また、Version 1.0 で強烈な印象を醸していたCOPYLEFTの記述もなくなっています。
Version 1.0の2Kバイトにあまった最後の170バイト程度の領域にはDr. Wangのメッセージが書き込まれていて、お洒落だなと思っていましたが、Version 3はいろいろな修正や改良で2Kバイトをほぼ使い尽くしたため、そのようなメッセージはなくなっていました。
日本では
Palo Alto Tiny BASICのインパクトは大きく、当時様々な雑誌や書籍で、その内部処理の解説等が行われました。
私自身の例では、以下の2つの記事がとても役に立ち、45年ぐらいたった今でも身近に置いています。(といっても、途中何十年か見てなかったけどね。)
両記事、特に伊藤氏のそれは大変丁寧な紹介記事になっています。
- ASCII 1977年11月号 Vol.1 No.5
- TK-80 2KBASICと文法:飯田洋一
- インターフェース 1978年4月 No.15
- Palo Alto版 Tiny BASICのすべて:伊藤誠
一つ残念だと感じるのは、両記事とも、Palo Alto Tiny Basicという表記はあるのですが、その出典が明記されていないのです。さらには、両記事で説明に使用されているソースファイルの冒頭部分からは、Li-Chen Wang氏の名前が削除されていることです。現在の参照や引用のルールでいえば、アウトではないでしょうか。
Z80シミュレータ
上記のPalo Alto Tiny BASICの記事を取得したサイトはそもそも、Z80と8080のシミュレータの公開サイトで、その関連で、Z80と8080に関する大量の情報を管理しているようです。まだ遊べてないのですが、ぜひともトライアルしたいと思っています。
- https://www.autometer.de/unix4fun/z80pack/
- z80pack is a Zilog Z80 and Intel 8080 cross development package for UNIX and Windows systems distributed with all sources under a BSD style license.