APDA版 Smalltalk-80

3回にわたってMacintosh上で動作するSmalltalkをご紹介しようと思います。

1979年,XEROXパルアルト研究所を訪問したスティーブ・ジョブスらは,Alto上で動作するSmalltalkを見てインスピレーションを得て,LisaやMacintoshの開発につながったといわれています。温故知新をコンセプトにしているBellwood-Labにおいては,Smalltalkを動かすことはぜひ取り組んでおきたい作業の一つです。

APDA版Smalltalk-80は,Apple社がXEROX社の技術供与を受けてLisa用に開発したSmalltalkをMacintosh用に移植したものといわれています。当時LisaのMacWorks環境で一度動かした経験があるので,30年ぶりに再挑戦してみました。

APDA版Smalltalk-80は,400KBフロッピーディスク7枚組で供給されていました。Bellwood-Labでは,DiskCopyのイメージファイルとして保管しています。次回ご紹介する予定のParcPlace版Smalltalk-80はなぜかインストール済みの状態で保管されていました。

最初にDiskCopy 4.2を使って400KBのインストールフロッピーディスクを作成しました。次にLisaにインストール作業を行う前に,30年前のことなのですっかり忘れてしまっているインストール手順の確認作業を,PowerBook 170で行ってみました。Smalltalkはおおまかに,Smalltalkの実行環境を保存しているイメージファイルと,ソースコードと,イメージファイルを読み込んで実行するインタープリタで構成されています。イメージファイルとソースコードは400KBフロッピーディスク1枚には収まりきらず,イメージファイルは2枚,ソースコードは4枚に分割されて供給されています。分割されたデータはDivJoinプログラムを使って結合する必要があります。このDivJoinプログラムはLisaのProFile(容量5MB)時代の古いプログラムなので,1GBという大容量のCFメモリーカードを考慮しておらず,ファイル結合を行おうとすると空き容量不足のエラーが発生し,ファイルの結合を行うことができません。そこで作業環境をPowerBook 520cに変更し,5MBのRAMディスクを準備して対処することにしました。

イメージとソースが5MBのRAMディスクに無事作成されました。

分割されていたイメージとソースを,結合済みのイメージとソースで入れ替えて作業は完了です。

CFメモリーカードをPowerBook 170に戻して,Smalltalkが動作するかどうか念のためにやってみました。無理だろうな…と思った通りシステムエラー(爆弾)です。漢字Talk 6.0.7.1ではシステムが新しすぎるのでしかたがありません。インストールの手順は思い出せたので,今度はLisaのMacWorks Plus環境にインストールを行ってみます。X/ProFileは10MB容量なので,DivJoinプログラムはエラーを出さずに問題なく分割ファイルを結合してくれます。

実行してみます。

スタートアップ画面はでるのですが,直後にメモリー不足のエラーが発生して起動できません。スタートアップ画面で気球にぶら下がっているのがMacになっていますね。Lisaで実行したときは,気球にぶら下がっているのはLisaになるのが正解です。ResEditでSmalltalkインタプリタの中のリソースを表示させてみたので,ごらんください。

MacWorks PlusはMacintosh Plusのエミュレータなので,SmalltalkインタープリタはMacintosh Plusだと思って起動しているようです。そしてLisaはメモリを1MBしか搭載していないので,メモリ不足になってしまうのかもしれません。30年前に動作させた時は,MacWorks PlusではなくMacWorks XL環境を使ったような記憶があります。その時気球にぶら下がっていたのはLisaでした。どうやらMacWorks XL環境を準備しなければならないようです。そこでLisaにMacWorks XL環境を構築する作業に取り掛かったのですが,これが一筋縄では行きません。X/ProFileの初期化とブートイメージの転送を行い,デスクトップにX/ProFileのアイコンが表示されるところまでは成功するのですが,システムフォルダをX/ProFileにコピーする途中で画面が乱れてクラッシュしてしまうのです。MacWorks XLのフロッピーディスクを,保管してあるDiskCopy 4.2のイメージファイルから新たに作成してトライしてみたり,いろいろ試したのですが,どうしても環境を構築することができませんでした。

Bellwood-Labのコンセプト「エミュレータを使わない」から外れてしまうのですが,Macintosh PlusエミュレータであるMini vMacの力を借りてAPDA版Smalltalk-80を起動してみることにしました。PowerBook 520cで作業してできあがっているAPDA Smalltalk-80の実行に必要なファイル群を,DiskCopy 6.1.3を使ってイメージファイルにまとめます。システムフォルダはAPDA Smalltalk-80のフロッピーディスクに初めから格納されていたものを使用します。Mini vMacは問題なく起動できました。Smalltalk.interp(Smalltalkインタプリタ本体)とSmalltalk.image(イメージファイル)を同時に選択して,Cmd+oでSmalltalk-80を起動します。

APDA版Smalltalk-80の起動画面です。

起動直後にファイルシステムにアクセスできないという内容と思われるエラーが発生しますが,それ以外は問題ないようです。

デモンストレーションの"Mac funPicture"をマウスで選択し,opt+クリックしてポップアップメニューを表示させ,do itします。

APDA版Smalltalk-80の開発者たちの画像が表示されました。

"QDPen new mandala: 30 diameter: 360"をdo itします。

おなじみのマンダラが表示されました。

他にもいくつかのサンプルが準備されているのですが,open file listに失敗してしまうので,実際に試してみることができなくて残念です…。

1979年にスティーブ・ジョブスらが,これらのスナップショットに近いイメージを実際に目撃したのであれば,Apple IIやApple IIIのCUIが中心だった当時相当衝撃的なものだったのではないでしょうか。その結果,ビットマップディスプレイと3ボタンマウスを活用するオーバーラップウィンドウ,スクロールバー,ポップアップメニューなどのGUIがLisaやMacintoshに受け継がれることになりました。1970年代のパソコン黎明期に,すでにこんな素晴らしいものができ上がっていたとは,実に感動的ですね。