Lispマシン・シミュレータ usim とLispマシンの使い方
たけおか@AXE



2017/OCT/22初出


MITのLispマシン CADR


MIT AI Lab. は、Lispを高速に実行する、Lisp専用CPUを開発し、それを使用し た「Lispマシン」を開発していました。
Lispマシンとして、CONSや、CADRが有名です。(英語版Wikipedia)
詳しくは、私の別なページ「CADRについて.MITのLisp マシン」

MIT Lispマシンの商品版の Symblics 3600シリーズは、1000万円ぐらいしました。
私は、廃棄になる Symbolics の最後期型を貰って、所有しています。
しかし、その実機は、コンデンサが劣化して、電源を入れることが躊躇される状態です。

お手軽にLispマシンを体験するには、シミュレータがいいでしょう。


Lispマシン CADRのシミュレータ usim

MIT CADRのシミュレータ "usim" というものがあります。
Brad Parker氏が、開発されたものです。
usimは、Linux,Windows, MacOSで動作します。

usim の本家サイト http://www.unlambda.com/index.php?n=Main.Cadr

CADRのハードウェアをシミュレートするものです。
マイクロ・コードを読み込み、Lispマシンのマクロ命令を実行します。
起動は、CARDのイメージを読み込み、ブートします。

ハードウェア,マクロ命令の文書の日本語訳の情報も、 私のページ「CADRについて.MITのLisp マシン」に書いてあります


usimの準備

usimを Brad Parker's MIT CADR simulator からダウンロードして展開します。

ソースをmakeするのも、簡単です。

Linux (Ubuntu 16.04LTS x86 64bit)の場合、
ダウンロードした zip ファイルを展開し、 ディレクトリに cd し、make するだけでした。

ただし、SDLを入れる必要があるかも知れません。
(私は、以前から usim をmake しているので、SDLは、32bit版,64bit版とも入れてしまっていた)

$ sudo apt-get install libsdl1.2-dev libsdl1.2debian

のどちらかを行えばいいと思います。

$ sudo apt-get install libsdl-dev


usimの起動

usimを展開したディレクトリで、以下のように起動します。

$ ./usim

下記の画面が一瞬出て、その後、画面全体が黒くなります。

少し待ちます。


コールド・ブートの場合、日時を尋ねられます。

日時を尋ねられた場合は、
MM/DD/YY hh:mm 形式で、入力し、[enter]を押下します。
なお、1999年 以前の年しか入力できません (^^;

10/20/89 12:10

すると、入力が合っているか否かを聞かれるので、

y

を入力します。([enter]は不要)


起動すると、下記のような画面になり、Lispリスナ(トップレベル)が動作しています。

()

を入力する([enter]は不要)と、

NIL

が、表示されます。\(^^)/

・S式の入力は、[enter]は不要です。')'が、揃うとすぐに、S式が評価されます。

・エラーが発生すると、エラーレベルに入ります。
・エラーレベルから、トップレベルへ戻るには、"Abort"(ファンクション・キー4)キーを押下します。

・数の基数のデフォールトが、8進数です。 \(^^;/
例えば、

(+ 2 7) ⇒ 11 ; 表示が8進, 値は9(10進)


十進で表示するには、
(format t "~D” … )


なお、*print-base* , *read-base* は、CADRのLispにはありません。 \(^^;/
さすが、Zeta Lispだぜっ! (涙)

CADRでよく使用するキー

(下記は、usimのデフォールトです)
"Abort"(F4)
エラーでbreak levelに入ったら、abortして、top levelに戻る
"Terminal"(F1)+S
"Terminal"キーを押下して後、離し、その直後に'S' を入力する。
現在のプロセスをサスペンドして、切り替える。
ファイル・システム・メンテナンスと、Lisp窓を切り替える時などに使用する。
--Zmacsキーバインド--
C-Shift-E
カーソルの直前のS式をエバる。結果は、エディタのステータス行に、表示。そして、キー入力待ち。
C-Shift-C
カーソルがあるS式をコンパイル。
Metaキー(ALT)
Metaキーは普通に使える

usimのファンクション・キー

下に示すバインドは、デフォールトのものです。
キーバインドは、keyboard.cfgファイルを編集することで、変更できます。
esc Alt Mode
f1 Terminal
f2 System
f3 Network
f4 Abort ←breakレベルから出るのに大事。
f5 Clear Input
f6 Help ←ちょいちょい役立つ
f7 Page
f8
f9
f10
f11
f12
pgup Break
pgdn {appears to crash usim}usimがクラッシュするように見える
home Call
end End
backspace rubout
backspace Rub Out
Terminal-M Toggle **MORE** processing.
Terminal-0-M Disable **MORE** processing.

ステータス・ライン
ステータス・ラインがかっこいいですね。

ステータス・ラインには、マシンの状態や、時刻、ユーザなどが表示されます。

マシンの状態は、RUN(走行中)/TYI(ユーザインプット待ち)ぐらいが、すぐに確認できます。

時々表示されるアンダーラインがあります。
CPU,HDDアクセス,ページ・スワップなどを表しているらしいのですが、すぐに消えるので、機能を確認しづらいです。
RUNの横に表示されるアンダーラインが、CPUであろうと思われます。



エディタ付き Lispウインドウ

起動時から動作し、地になっている、lispリスナは、編集機能がありません。

エディタ付き Lispリスナは、ウインドウを開く必要があります。

エディタ付き Lispリスナの、ウインドウを開くには…
1) マウスの右ボタンを押下。
すると、下図のように、ウインドウ作りのメニューが開きます。
メニュー中の、「Create」をマウス右ボタンで選択。



2) 「Create」選択した結果、下図のように、ウインドウ作りのメニューが開きます。
メニュー中の、「Lisp (Edit)」をマウス右ボタンで選択。


3) 「Lisp (Edit)」を選択した結果、下図のように、マウス・カーソルが"┏"になります。
ウインドウを作りたい場所の左肩の位置で、マウスの左ボタンをクリックします。



4) すると、マウス・カーソルが" ┛"になります。
作りたいウインドウの右下の位置で、マウスの左ボタンをクリックします。




5) すると、ウインドウが生成されます。

このウインドウでは、emacs と同様の編集機能が使えます。

--Zmacs特有のキーバインド--
C-Shift-E
カーソルの直前のS式をエバる。結果は、エディタのステータス行に、表示。そして、キー入力待ち。
C-Shift-C
カーソルがあるS式をコンパイル。
Metaキー(ALT)
Metaキーは普通に使える

6) Lisp(Edit)ウインドウ

このウインドウでは、emacs と同様の編集機能が使え、S式の評価もできます。
下図では、apという関数を、defunしています。
このウインドウでも、")"の釣り合いが取れた途端に、S式が評価されます。

このウインドウでは、 Ctrl-Shift-E を、入力すると、
カーソルの直前のS式を評価します。
結果は、エディタのステータス行に表示し、そして、キー入力待ちになります。なにかの一文字を入力すると、通常の編集モードになります。


Lisp関数のトレース実行

Lisp関数を、トレース実行する機能があります。素敵ですね!

トレース機能を起動するには、そのウインドウを開きます。

1) マウスの右ボタンを押下。
メニューが開くので、
 メニュー中の、Programs欄の「Trace」をマウス右ボタンで選択。





2)「Trace」を選択した結果、下図のように、 Traceウインドウが開きます。


3) Traceウインドウで、トレースしたい関数名を入力します。
ここでは、"ap"を入力しました。


4) トレースしたい関数名を入力すると、 下図のようなメニューが開きます。


5) ここでは、メニューから、「Step」を選んでみました。(マウス左ボタンをクリック)


6) すると、ウインドウの上部ペインの表示が stepになります。


7) その後、メニューの「Do It」を選択。(マウス左ボタンをクリック)


8) Lisp(Edit)に移って、apの実行を開始します。
1ステップ実行すると、停止します。
[space]キー押下で、1ステップ実行して、また停止します。
9) どんどん[space]キー押下で、1ステップづつ実行していきます。







ファイル・システム・メンテナンス

Lispマシンにも、ファイル・システムは存在し、ファイル・システム・メンテナンスの機能もあります。
ファイル・システム・メンテナンス機能を使うには、ちゃんとしたユーザとしてloginしなければなりません。

ファイル・システム・メンテナンス機能を起動するには、そのウインドウを開きます。

1) マウスの右ボタンを押下。
ウインドウ作りのメニューが開くので、
メニュー中の、「FS Maintenance」をマウス右ボタンで選択。





2)「FS Maintenance」を選択した結果、下図のように、 システム画面の上方にFS Maintenaceウインドウが開きます。



「FS Maintenance」を休止して、Lisp(Edit)や、地のLispリスナに切り替えたいときは、
"Terminal"キーを押下して後、離し、その直後に'S' を入力すると、タスクが順番に切り替わります。
"Terminal"キーは、usimのデフォールトでは、ファンクションキー1"F1"にバインドされています。





CADR ドキュメントなど



たけおか(竹岡尚三)のLisp インデックス

たけおか(竹岡尚三)のホームページ
--- EOF