AltoエミュレーターContrAlto
July 05, 2023
emulator macOS Lisa目次
はじめに
Steve JobsがLisaやMacintoshを作る際に参考にしたといわれているAlto。AltoはXerox Palo Alto研究所で開発されたコンピューターで、製品化はされなかったので、当時は書籍や雑誌で紹介される以外には知る由はありませんでした。GUIなんて無かった当時、Altoの断片的な情報で心が踊らされていました。21世紀の今、このAltoもエミュレーターで気軽に再現できてしまいます。
本記事では、AltoエミュレーターContrAltoでAltoを再現してみます。
ContrAltoの入手
ContrAltoの入手、使い方については以下の記事を参考にしました。
http://sumim.no-ip.com/collab/83
ContrAltoによる1979年当時の暫定ダイナブック環境(Smalltalk-76)の操作画面の再現
ContrAltoの入手先は以下、
https://github.com/livingcomputermuseum/ContrAlto/releases
ContrAlto V1.2.3
ここから ContraltoSetup-Windows.zip と「Source code(zip)」のリンクから ContrAlto-1.2.3.zip をダウンロードしました。
ContraltoSetup-Windows.zipを伸長すると、インストーラーContraltoSetup.msiが取り出せます。
ContrAlto-1.2.3.zipの ContrAlto-1.2.3\ContrAlto\Disk*.dsk がディスクイメージです。容量は2.5MB程度ですが、物理的なリムーバブルディスクはたらいほどのサイズの円盤のようです。Diskフォルダー以下を取り出しておきます。
【注意】
このようなサイトを利用する場合はその危険性を十分理解してください。ウィルスが仕込まれているかもしれませんし、自分のPCのデータがごっそり抜かれるかもしれません。サラのPCで遊んで、遊び終わったらそのPCを再初期化してしまうのがよいかと。Virtualbox上のWindowsでもContrAltoは動作しますが、マウスイベントが母艦からVirtualboxを経てContrAltoまで伝わってくれません。
インストーラーContraltoSetup.msiをダブルクリックするとインストールできます。
ContrAltoの稼働
インストール先のContrAlto.exeをダブルクリックして起動。
まずはAltoの使い方の雰囲気を掴むためにいくつかゲームを試してみます。
Systemメニュー>Drive 0>Load..
Diskフォルダー中のディスクイメージallgames.dskを選択し、
Systemメニュー>Start
これでAltoがallgames.dskからブートします。AltoはグラフィカルなOSを持ったコンピューターだと思い込んでいたのですが、実はグラフィックス機能を持った普通のCLIコンピュータだったんですね。
画面中段の
>
ここがコマンドプロンプト。ここに、キーボードで「?」を入力。「?」は今風に言えば「dir」とか「ls」、つまりディスク中のファイルリストを表示させるコマンドです。
>?
拡張子「.run」が付いているものが、実行可能なアプリ。コマンドは拡張子をつけないで指示。
>invaders
これでスペースインベーダーゲームが起動。3ボタンマウスが前提ですので、プレイは真ん中ボタン(ホイール兼用でも可)がついたマウスで。マウスがContrAltoにフォーカスしてしまってWindowsに戻せなくなったら、Altキーを押すとデフォーカスします。
当時流行ったスタートレック。隠れたクリンゴンを攻撃するゲーム。
チェスもあったが、どうやらこれはAltoと対戦するものではなく、単なるチェス盤アプリのようです。
市販されなかったAltoにこんなにゲームアプリが充実していたってことはどういうことなんだろう?
Smalltalk
AltoといえばSmalltalk。オブジェクト指向言語の元祖。言語だけでなくクラスブラウザなどの開発ツールと実行環境が統合された環境。AltoがLisaやMacintoshの原点と言われているが、Altoで動いたSmalltalkがLisaやMacintoshの原点ということなんだと思う。
まずは、Smalltalk80を起動してみます。
Systemメニュー>Drive 0>Load..
Diskフォルダー中のディスクイメージst80.dskを選択し、
Systemメニュー>Start
これでAltoがst80.dskからブートします。
コマンド入力欄に
>resume small.boot
と入力するとSmalltalk80が起動します。
画面のリフレッシュがうまくいかず、ウィンドウ内が空白に見える状態だったら、マウス中央ボタンでウィンドウをクリックするとリフレッシュされます。
Diskフォルダーの中には1世代前のSmalltalk76も含まれていました。Smalltalk76のディスクイメージはxmst76.dsk44で、起動コマンドは以下です。
>resume xmsmall.boot
Smalltalk80試用
筆者は40年ほど前にPC9801用のSmalltalk/Vを購入して遊んだ経験があるのですが、今ではすっかり忘れてしまっています。当時購入したバイブルSmalltalk三部作も遥か昔にヤフオクで売っぱらってしまっています。バイブル三部作は当時とても高価な本でしたが、今ではネットを探すと自炊されたPDFが容易に見つかります。合法的なものかはわかりませんが。
ContrAlto上のSmalltalk80の操作は快適とは言い難いものです。ホイールを兼ねている現代のマウス中ボタンは使い勝手が悪く、Smalltalk80の操作には適していません。
それでも古い記憶を呼び起こして少し触ってみます。
現代のGUIに慣れ親しんだ感覚では、Smalltalk80が起動しても新たなウインドウを開いたり閉じたりすることすら出来ないと思われます。現代のGUIではマウス左クリックだけでほぼ何でもできてしまいますが、Smalltalk80ではマウスの左/中/右ボタンをフルに使い分けています。また、コンテキストメニューのポップアップはマウスボタンを押し続けている間だけという点も注意が必要です(これはClassic Macintoshのふるまいもそうですが)。
まずは”resume small.boot”直後の状態。これはこのディスクを最後に使った誰かの状態を再現しています。
この状態からworkspaceウィンドウのクローズをしてみます。workspaceウィンドウを右クリックでフォーカスし、
マウス右ボタンコンテキストメニュー>close
新たにworkspaceウィンドウのオープンするには、
背景位置でマウス中ボタンコンテキストメニュー>open a workspace
マウスポインタが”「“の形に変わるのでウインドウを配置する左上をクリック
マウスポインタが”」“の形に変わるのでそのままウインドウを配置する右下までドラッグ
けっこうまどろっこしい操作が必要です。このウインドウのリサイズや移動は、ウインドウをフォーカスし
マウス右ボタンコンテキストメニュー>frame
マウスポインタが”「“の形に変わるのでウインドウを配置する左上をクリック
マウスポインタが”」“の形に変わるのでそのままウインドウを配置する右下までドラッグ
こんなかんじです。やってられないわってかんじ。
Smalltalkでのプログラミングの最初の1歩
workspaceウィンドウ上に「1+2」と入力し、その部分を選択して
マウス中ボタンコンテキストメニュー>doit
結果の「3」が表示される。
「1」という数字クラスのオブジェクトに対し「+」というメソッドをパラメータ「2」とともに送った結果が「3」という解釈らしい。
けっこうまどろっこしい。
まとめ
LisaやMacintoshのルーツともいえるAltoをContrAltoエミュレーターで動かしてみました。