Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2006-06-30

ITSでMACLISP (3)

| 19:01 | ITSでMACLISP (3) - わだばLisperになる を含むブックマーク はてなブックマーク - ITSでMACLISP (3) - わだばLisperになる

MACLISP環境探究の旅は続きます。

さて、MACLISPとEMACSの連携については、LEDITがとい

う支援環境が存在していたということが分かり、少しづ

つではありますが、ITSのMACLISPの開発環境がどんなも

のだったのかが見えて来た気がします。

それで、MACLISP関係についてITSのディレクトリを探索

してみていると、FASLファイルが沢山あるわけなのです

が、これは一体どうやって作成するんだろうなというの

が次なる謎。

FASLファイルとは、FAST LOADの略らしく、コンパイル

されたLispプログラムのファイルの名前で、これを作成

するには、当然ながらコンパイラが必要になると。

とりあえず、MACLISPを起動して、(compile foo)とかし

ても、

(compile foo)
;COMPILE UNDEFINED FUNCTION OBJECT

;BKPT UNDF-FNCTN

となり行き止まり。

コンパイラがなければ、FASLファイルなんかできる筈が

ないので、絶対どっかにあるだろうと思って探ってみた

ら、LISP;-READ- -THIS-ファイルに

Directories with MacLISP relevance are:
	LISP;	-- FASL files
	LSPDMP;	-- Dump files
	L;	-- MIDAS sources for main lisp file, and for others
 	COMLAP;	-- COMpiler (with FASLAP) and LAP assembler
	LSPSRC; -- Various auxillary out-of-core files written in lisp
	NILCOM;	-- More LSPSRC.  Mostly lisp macros, etc.
	LSPMAI;	-- Bug mail and other notices.
	LISP20;	-- Stuff for 20X MacLisp

と記載されていたので、COMLAP;ディレクトリを探って

みると、COMPLR 936を発見。

多分これがコンパイラだと思うので、これをロードして

みることに。

しかし上手く行かないので、COMLAPディレクトリを探索

してみると、CCLOAD 193というファイルがあって、

;;;   ***** Maclisp ****** CCLOAD - Loader for COMPLR **************

という記載があるので、これをロードするのが筋なのか

と、CCLOADをロード。

大量に依存しているFASLファイルがみつかんないと文句

を言われつつ、問題になってるファイルを手動でロード

したり、変数に適当にnilを代入したりして、とりあえ

Initializing
Total Time = 39.5 secs out of 407.8
Dumping LSPDMP;CL.DMP 1137

というところまで辿り着いたけれども、それでコンパイ

ラが使えるようにもなってはいない様子。そして、何故

ダンプして終了してるんだと。

とりあえず謎だらけなので、MACLISPがちゃんと稼働し

てるサイトを参考にしてみることに。

ITSのサイトは、MACLISPウェブサーバとか立ってるので、

あんまり負荷を掛けたら迷惑かなということで、MS創設

者のポール・アレンが主催するサイトであるPDP Planet

のTOPS-20(TOAD-1)の環境をちょっと覗いてみる。

そうそう、その前になぜポール・アレンが、こんなレト

ロコンピュータのサイトを主催したりしてるのかという

と、MS草創期にビル・ゲイツとポール・アレンがALTHEA

用のBASICを書き直した時に使ったりしてたのが、ハー

バード大学計算機センターにあったDECのPDP-10なわけ

ですよ。

で、このBASICがMSの大元になっているわけなので、きっ

とアレンさんはPDP-10に思い入れがあり、かつとんでも

ない大金持ちなので惜しげもなくお金を投入してくれて

るんでしょう。PDP-10の実機を常時動かして、インター

ネットに接続できるように管理するコストは結構凄い金

額だと思います。ありがたや。

申請すれば、ここのマシンのアカウントが貰えるので、

申請してみましょう。いつも大体自分一人しかログイン

してないので、みつけたら声でも掛けてみてください。

閑話休題、全部ひまばなしだけど。

それで、このサイトでは、MACLISPmaclispとして実行

できて<maclisp>ディレクトリに本体があるようなので、

complrを探してみると、COMPLR.EXE.1があった。

EXEということは、COMPLRはもしかして単体で実行でき

る形式になるってことかしらん(TOPS-20の実行形式の拡

張子は、EXEでDOSは、TOPS-20から沢山影響を受けてい

る)、と思い公開ITSサイトでも確認してみたところ、

SYS;TS COMPLRとかがあって、LSPDMP;CL.DMPにリンクし

ているではないか。

なるほど! 自分はコンパイラを作る作業をしていたのか

ということで、LSPDMP;CL.DMPをSYS;TS COMPLRにリンク

してみて実行し、適当なファイルをコンパイルすると、

FASLファイル生成完了。

なるほど! これで、FASLファイルも作れるようになった

ぞと。

そして探索は続く。

2006-06-27

ITSでMACLISP (2)

| 19:12 | ITSでMACLISP (2) - わだばLisperになる を含むブックマーク はてなブックマーク - ITSでMACLISP (2) - わだばLisperになる

MACLISP/ITSの探究を続けています。

とりあえず、MACLISPは使えるようになりましたが、開

発環境としては、どんな感じに整備されていたのかが気

になります。

Lispのインタープリタ内からは、

(load "foo")

等でfoo >(fooというファイルの最新版)が呼び出される

ので、EMACSで、foo >を編集してロードすれば、開発は

できそうなもんですが、これだとインタープリタとエディ

タを行き来しないと行けないので、もっと便利な環境だっ

た筈と思って、ちょっと調べてみたところ、LEDITとい

う支援環境が用意されている様子。

インタープリタから(ledit)でエディタを呼び出し、

EMACSからは、C-xzで戻ってくるってものらしいです。

なるほど。ちなみに、EMACSだけじゃなくて、TECOも使

えます。

それはともかく、MACLISPを起動する度に初期設定する

のが面倒なので、初期設定の方法も探ってみたところ、

LSPDOC;INTRO 24に記述がありました。

サンプルを適当にホームディレクトリに初期化ファイル

を作ってみました。

; MacLisp init file
;;
;; 7:02pm Tuesday,27 June 2006
;; See lspdoc;intro 24

(comment)         ;magic

(PROGN ; real init file stuff
 (ALLOC NIL)
 (SETQ BASE 10. IBASE 10. *NOPOINT NIL) ;change radix
 (SETQ NOUUO T *RSET T) ;these make debugging easier
 (SETQ LEDIT-JNAME 'E)
 '*)            ;return an asterisk for Lisp to print out

(comment)っていうのが大事で、これが無いとちゃんと

読み込んでくれないという謎の記述です。

ALLOCはなんのことだか良く分かってないのですが、nil

にしてみています。

それで、サンプルを見て初めて分かったのですが、出力

と入力の数字の表記は、環境変数のBASEとIBASEで制御

するらしいことが分かりました。10.とすることで、10

進となります。*NOPOINTは、10進の場合に、数字の後に、

点を付けないで表示するかどうかの変数。Tなら、表示

されません。

それと、LEDIT-JNAMEにEを設定していますが、うちは、

EでEMACSが呼び出されるようになっているため。

これで、なんとなく前よりは、環境が整いました!

という感じで、探究は続きます。

2006-06-25

ITSでMACLISP (1)

| 21:32 | ITSでMACLISP (1) - わだばLisperになる を含むブックマーク はてなブックマーク - ITSでMACLISP (1) - わだばLisperになる

あまりにマニアックな内容なので、なんの説明もなしに

つっぱしって逝きます。

SIMHでITSを動かして遊んだりしているわけですが、ITS

で動くLISPの処理系としては、元祖とも言うべき

MACLISPがあります。

それで、SIMHの環境でも当然動きそうなもんなんですが、

lisp^K

と起動させてみようとしても

Alloc? n
.VAL 0; 66745>>HRLM 1,114017   1/   0   114017/   114020

と、Allocに答えたところで終了のようになっていまし

た。(Allocは良く分かんないけども、メモリの割り当て

かなと適当に憶測)

自分が知ってる限りでは、公開ITSサイトは、世界に2サ

イトあるのですが、すんなり起動します。

どっちも、KLH10で動いていて、こっちの環境なら動く

のかなあ、とかぼんやり考える程度で放置していたので

すが、ふと、ジョブを眺めてみると、

*$$v
* LISP P 4

となり、バックグラウンドでは、LISPは動いている様子

なので、$pでフォアグラウンドに持ってきてみたら、

動いてましたヽ(゚∀゚)ノ

適当にテスト

*
(defun fib(n)
(cond((< n 2) n)
(t (+ (fib (1- n)) (fib (- n 2))))))
FIB

(fib 10)
25

あれ?もしかして、8進数表記なのかしら。

10のフィボナッチ数は、55な訳ですが、多分8進数なの

で、10(8進)→8と入力したことになって、25(8進)→21

な訳でしょう。

という訳でちょっとMACLISPを動かして遊んでみようと

いう感じです。

--

SIMH

ITS

MACLISP

KLH10 PDP-10 Emulator

2006-06-16

CADRの巻 (1)

| 04:43 | CADRの巻 (1) - わだばLisperになる を含むブックマーク はてなブックマーク - CADRの巻 (1) - わだばLisperになる

なんで急にLinuxをインストールしたりしているかとい

うと実はLisp Machine(リスプ・マシン:以下LispM)のエ

ミュレータの実行環境を整備したかったというのが最大

の理由で、その開発プラットホームがLinuxなので、何

かと便利かなと思ってLinux環境を整備したのだった。

それで、その目的のLispMのエミュレータだけども、MIT

で、開発されてたCADRというマシン。

CADRが使われていた年代がいまいち分からないけど、大

体1976年から1980年代初頭のもの。

去年そのCADRのソースコードがBSDライセンス風で公開

され、エミュレータもホストマシンと通信してファイル

を書き出したりできるようになっていたのだが、ちょっ

と試した感じでは、環境の所為か上手く動かなかったり

して放置していたのだった。

(ちなみに、エミュレータはこれです。)

で、とりあえず、CADRのエミュレータを拾ってきて起動

してみる。

説明が非常に分かりづらいが、これに興味を持っていじ

る様な人は、開発もするような人だろうから、しょうが

ない。

とりあえず、Linux用のバイナリファイルがあるので、

素直に起動。

そして、ホストマシンのファイルシステムのマウントだ

が、今度は、簡単に動いた。というより、前回ちゃんと

説明を読んでなくて、chaosdを起動した後に、serverを

起動させるってところを、chaosdを起動させただけで、

うーん、動かない、とか思っていたらしい。

ホストマシンファイルシステムがマウントできたので、

色々遊んでみた結果を保存することができるようになっ

た。

それで、

You can also make a local file system in the FILE partition with

(lmfs:fsmaint-fs-initialize)

ということなので、ローカルのファイルシステムを作成

してみる。

しかし、

There is no FILE partition on this disk.

Will not initialize FILE partition CADR diskmaker image.

となってしまう。

どうやら、ディスクイメージにFILEパーティションが用

意されてないみたいなので、ディスクイメージを作り直

してみることにした。

ディスクイメージを作り直すには、配布されているエミュ

レータのソースのdiskmakerというのを実行すれば良い

らしい。

diskmakerを実行してみるとdisk.imgができるのだが、

作成したものだと、エミュレータが正常に起動してくれ

ない。diskmakerのソースをちらちらみてみたら、

ucadr.mcr.841、partition-78.48.lod1、

partition-sys210.lod2の各ファイルを合成したりして、

disk.imgというものを作成していることが分かった。

それで、実体のファイルなのだが、

usim/ucadr.lisp.841

usim/partition-78.48.lod1 -> /work6/oldtapes/partition-78.48-LOD1

usim/partition-sys210.lod2 -> /work6/oldtapes/partition-sys210-LOD2

ということで、リンク先が行方不明(本体は作成者の

Bradさん家)となっており、多分これが原因じゃないか

なとか思うのだった。

で、打開策だけれども、

1) LispMのML(メールの流量3ヶ月に1通くらい)で質問し

てみる。

2) Bradさんに直接訊いてみる。

3) ddで0で埋めつくしたファイルを作成し無理矢理読ま

せてみる。

等が考えられるが、自分は英語ができないので、とりあ

えず3番を試してみようと思うのだった。