Post tagged: lisp

ZIL

なんとなくZ-Machine周りについて調べていたので、ZILについてメモしておきます。

ZIL(Zork Implementation Language)はZorkなどで知られるZ-Machineで動作するInteractive Fiction(IF)を記述するための言語です。

まず、Z-Machine関係の用語を説明します。

IF

IFはいわゆるテキストアドベンチャーゲームです。 テキストをコマンドとして入力して進行していくゲームで、 zorkを 見るとどんなものかはすぐわかります。

Z-Machine

Z-MachineはIFのための仮想マシンです。 Infocom社によって作られました。

多様なプラットフォームへの移植性を確保するため、Zork1などはZ-Machine上で動くようになっていました。

Z-MachineはZILをコンパイルして出力されるZ-codeと呼ばれるを命令を解釈して実行します。

Z-Machineの仕様は The Z-Machine Standards Document にまとまっていますが、フラグなどの扱いについて一部、ztoolsとの相違が見られました。

ZIL

ここから本題です。

ZILの情報はZIL Manualなどにあります。

この後に出てくるソースコードは、ZIL Manualからの引用になります。

BASIC

オリジナルのZorkは MIT Design Language(MDL)で書かれていたとあり、ZILにもその影響が強く見られます …

AllegroGraph その3

前回全然lispじゃなかった。

今回はACLから繋いでみます。

準備

Allegro CL 10.0 Free Express Editionのインストール

  • Macの場合X11とかGTKとか必要とありますが、slimeから使うならなくてもいけます

mlispをつくる

  • AllegroGraph clientはalispでは動かないのでmlispを作ります
  • faqにあるので、いちどalispを起動してから次にコードを実行します
(progn
  (build-lisp-image "sys:mlisp.dxl" :case-mode :case-sensitive-lower
          :include-ide nil :restart-app-function nil)
    (when (probe-file "sys:mlisp") (delete-file "sys:mlisp"))
      (sys:copy-file "sys:alisp" "sys:mlisp"))
  • mlispができたらslimeの設定を通します
(setq inferior-lisp-program "/Applications/AllegroCLexpress.app/Contents/Resources …

AllegroGraph その2

AllegroGraphが動くようになったので、データ作って投入します。

データはcattoyから作ります。

こんなかんじ にRDF出力コードを仕込んだので、

g = RDF::Graph.new.tap {|g| Cat.all.each {|c| g << c.to_rdf }}
File.open('/tmp/cat.ttl', 'w') {|f| f << g.to_ttl }

でファイルに吐き出します。 なかみはこんなかんじです。

@prefix schema: <http://schema.org/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://www.cattoy.info/histories …

AllegroGraph その1

AllegroGraphを動かしてみます。

  • http://franz.com/agraph/downloads/からAllegroGraph Virtual Machineをダウンロード
  • 展開してVirtualboxから読み込む
  • Virtualboxで仮想マシンを新規作成
    • type linux
    • version ubuntu 64bit
    • ディスク作成時にすでにあるディスクを使用するからAllegroGraph 6.0 Virtual Machine.vmdkを選択
    • ネットワークのポートフォワーディングでホストポート10034(なんでもいい)からゲストポート10035へフォワーディング設定する
  • VMを起動
  • franz/allegrographでログイン
  • デスクトップにあるStart AGを起動する
  • ホストマシンからブラウザでlocalhost:10034へアクセスする
  • AllegroGraph WebViewへアクセスできたら、User anonymousのところからtest/xyzzyでログイン
  • Quick-Startにしたがって
  • Create new repositoryにkennedyと入力しcreate
  • http://localhost:10034/repositories/kennedyを開く
  • from a server-side …

lmfsを見る

lsmfとはMTIのLispマシンのファイルシステムです。 unlambda.comからCADRのイメージとソースが落とせるので中身を見てみます。

ダンプしてみる

  • http://unlambda.com/index.php?n=Main.Cadr からファイルを落とす

    • CADR emulator tar file
    • system 78.48 source file partition
  • usim.tar.gzを展開してlmfs.cをコンパイルする

    • コンパイルエラーと実行時のオーバランを修正
--- a/lmfs.c    2006-07-11 07:01:32.000000000 +0900
+++ b/lmfs.c    2016-09-18 22:24:12.000000000 +0900
@@ -127,6 +127,7 …