`(Hello ,world)

ツッコミ、添削大歓迎です。いろいろ教えてください。

2009-04-20

「S-OS」エミュを作って「Lisp-85」を動かす

その昔「Oh! mz」というパソコン雑誌があって、清く正しいシャープユーザだった俺のとうちゃんは毎月買っていた。1985年にその紙面上でLisp-85という処理系が発表された。

当時は言語オタクじゃなかったしマシンも非力だったからZ80のアセンブラにしか興味がなかったので打ち込んだり動かしたりしたことはなくて雑誌のバックナンバーも処分してしまったんだけど、どうしても動かしたくなったので国会図書館まで行って記事をサルベージしてきた。

Lisp-85はS-OSという、これまたOh! mz紙上で発表された共通OS上で動くものとなっている。本来なら8ビットコンピュータのエミュレータを使って動かせばいいんだけどその環境を整えるのがメンドイので、fMSXで使われてるZ80エミュレータを使って、S-OSのシステムコールを真似て動かしてみた。

f:id:mokehehe:20090422160633p:image

ビルド方法

ソースはgithubに置いた。Lisp-85に限らずS-OSのアプリを動くようにしたいと思ってる。

それにfMSXZ80エミュレータのソースを持ってきてmakeすれば実行ファイルが出来上がる。

実行方法

できた実行ファイルに大石さんのところにおいてあるLisp-85.objを食わせる:

> ./s-os.exe Lisp-85.obj
処理系
  • 大石さんいわく、「MacLispを参考に作られた、CP/M用のフルセットLispに匹敵するLispインタプリタ」
  • 組み込み関数はすべて大文字
  • エラーから復帰するには (TOPLEVEL)
  • 四則演算は PLUS, DIFFERENCE, TIMES, QUOTIENT
  • IFはなくてCOND
  • 例1:ハノイの塔
(DEFUN HANOI (N A B C)
  (COND ((ZEROP N) NIL)
        (T (APPEND (HANOI (SUB1 N) A B C)
                   (CONS (LIST 'MOVE N 'FROM A 'TO C)
                         (HANOI (SUB1 N) B A C))))))
(PP (HANOI 3 'A 'B 'C))

あとまあおいおい説明します。

俺用Oh! mz言語ネタメモ

  • '85/02: Lisp入門1 リストがいっぱい(こうもと やすひこ)
  • '85/03: Lisp入門2 エバっていいとも
  • '85/04: Lisp入門3 繰り返し,くりかえし
  • '85/05: Lisp入門 最終回 そしてプログラム
  • '85/06: Lisp-85 インタプリタ
  • '85/09: Lisp-85 入門(1) いつの日かリスパー(向原 あゆむ)
  • '85/10: Lisp-85 入門(2) 明日からはリスパー
  • '85/11: Lisp-85 入門(3) 今日こそはリスパー
  • '85/09: Prolog1500
  • '85/12: Prolog-85
  • '86/02: Prolog-85 入門(1) (森学)
  • '86/03: Prolog-85 入門(2)
  • '86/04: Prolog-85 入門(3)
  • '85/06: 一気にふぉーす(清水 和人 May the "FORTH" be with you)
  • '85/07: ヨイショでふぉーす
  • '85/08: 明日のふぉーす
  • '86/03: magiFORTH
  • '86/04: 基礎からのmagiFORTH
  • '86/05: 実戦演習magiFORTH
  • '86/06: 対話で学ぶmagiFORTH
  • '86/07: 計算力アップのmagiFORTH

1985年とかに Lisp やら Prolog やらいろんな言語を紙面上で公開するってなかなかすごいと思うんだけど。国会図書館で調べたら bit誌(共立出版社)は1969年から!発刊していたらしいので、その辺をあたってみてみるとか。

g000001g0000012009/04/20 22:08これは濃いですね!
国会図書館からサルベージとか凄すぎますw

mokehehemokehehe2009/04/21 07:45Lisp-85はMacLispの系譜とのことで、g000001さんにも喜んでもらえることと思います!

トラックバック - http://cadr.g.hatena.ne.jp/mokehehe/20090420