2011年5月28日土曜日
DSでinferno
Infernoの動く環境をいくつか確保しておきたいということで、
DSでのInfernoの起動を試してみました。
必要なものは、ユーザープログラムをDSにロードする装置ですが、
今回試したのは
・R4i SDHC
・R4DS
の二種類です。前者はよくわからず最新ぽいのを買ってみたのですが、
残念ながら動きませんでした。
DSLinuxも駄目だったので、どうしょうもない。
無駄な出費でした。
R4DSではLinux、Inferno どちらも動作しました。
infernoは http://code.google.com/p/inferno-ds/で公開されているバイナリを使用しました。
icds.ndsというファイルです。
これをSDカードに入れてロードすると、infernoが立ち上がります。
上の画面には画像が表示されます。
下の画面はWMが表示され、タッチパネルでの操作ができます。
ボタン1,2,3の区別はL/Rボタンで行うようです。
起動時になにか音が出るので、サウンドも有効みたいですね。
keyboardというソフトウェアキーボードプログラムがあるので、
文字入力も可能です。
かっこよすぎ。
さて、次に行いたいのは自分でビルドして動かすことですが、
なぜか自分でビルドしたバイナリでは起動しませんでした(画面が白いまま)。
困った。
これを追うのは大変そうです。
2011年5月27日金曜日
infernoはjslinuxで動くか?
jslinuxというものがあります。
なんと、ウェブブラウザのJavascriptで386のエミュレーションをし、
その上でlinuxが動くというのです。
http://bellard.org/jslinux/
素晴らしいです。
さて、新しい環境が出てきたら、そこでinfernoが動くのか考察するのが礼儀です。
この環境は386上のLinuxということで、普通にLinux上でビルドすると動くような気がしますね。
結論から言うと、FPUが原因で動かなかったのですが。
キャラクターコンソールオンリー、ディスクスペースが全部で最大4Mbyteなどの制限があり、
ミニマムなビルドにしないと動かなそうです。
・手順
1. ローカル環境、ディスクの用意
http://blog.livedoor.jp/dankogai/archives/51683749.html
を参考にローカル環境と4Mbyteのディスクを作ります。
cpux86.js, cpux86-ta.js, index.html, jslinux.js, linuxstart.bin, root.bin, term.js, vmlinux26.binがあれば動くようです。
2. mkconfig の編集
普通にセルフビルドする設定にしておく。
SYSHOST=Linux, OBJTYPE=386。
3. ミニマムなビルドのためにいらないものを削る
emu/Linux/emu-gを編集。
dev: env, prof, dup, ssl, cap, indir, ip, eia, mem
mod: math, srv, keyring, crypt, ipints, loader
あたりをコメントアウト。
4. ビルド、strip
mk CONF=emu-g install
こうすると、GUIを持たないemu-gというプログラムが出来る。
strip emu-g でダイエットしておく。
5. 必要なファイルをディスクイメージにコピー
作ったemu-g、必要なライブラリ、必要なdisをコピーしておく。
emu-gは/binに、ライブラリは/libに、disは/root/inferno/dis/においた。
ライブラリはldd emu-gで表示されるライブラリをコピー(ホストのlinuxのものをコピー)。
libpthread.so.0も元々あるやつだとダメっぽいのでこれもコピー。
必要なdis は
lib/bufio.dis, lib/filepat.dis, lib/arg.dis, lib/string.dis, sh.dis, emuinit.dis。
6. 実行
jslinuxを立ち上げて(ブラウザでindex.htmlを開く)、
emu-g -r /root/inferno を実行すると・・・
うーん、動かず。
どうやらFPinit()でだめになるっぽいです。
そもそもCPUエミュレーターはFPUには対応していないようで、
inferno emuはFPU必須なのかも。
起動の流れが追えて勉強になりましたが、動かなかったのは残念。
ちなみに、emu-gのサイズは291kbyte、disは合わせて58kbyte。
共有ライブラリはでかいですが(全部で2Mbyteほど、ミニマムは不明)、
結構小さいですね。
私の技量ではここまで。
Native infernoをやるのはおそらく無理かと。
動けば、ブラウザ上でinfernoができてすごくいいんですけどね。
IEのプラグインはあるようですが、他のブラウザではまだなので、動くと良いのですが。
なんと、ウェブブラウザのJavascriptで386のエミュレーションをし、
その上でlinuxが動くというのです。
http://bellard.org/jslinux/
素晴らしいです。
さて、新しい環境が出てきたら、そこでinfernoが動くのか考察するのが礼儀です。
この環境は386上のLinuxということで、普通にLinux上でビルドすると動くような気がしますね。
結論から言うと、FPUが原因で動かなかったのですが。
キャラクターコンソールオンリー、ディスクスペースが全部で最大4Mbyteなどの制限があり、
ミニマムなビルドにしないと動かなそうです。
・手順
1. ローカル環境、ディスクの用意
http://blog.livedoor.jp/dankogai/archives/51683749.html
を参考にローカル環境と4Mbyteのディスクを作ります。
cpux86.js, cpux86-ta.js, index.html, jslinux.js, linuxstart.bin, root.bin, term.js, vmlinux26.binがあれば動くようです。
2. mkconfig の編集
普通にセルフビルドする設定にしておく。
SYSHOST=Linux, OBJTYPE=386。
3. ミニマムなビルドのためにいらないものを削る
emu/Linux/emu-gを編集。
dev: env, prof, dup, ssl, cap, indir, ip, eia, mem
mod: math, srv, keyring, crypt, ipints, loader
あたりをコメントアウト。
4. ビルド、strip
mk CONF=emu-g install
こうすると、GUIを持たないemu-gというプログラムが出来る。
strip emu-g でダイエットしておく。
5. 必要なファイルをディスクイメージにコピー
作ったemu-g、必要なライブラリ、必要なdisをコピーしておく。
emu-gは/binに、ライブラリは/libに、disは/root/inferno/dis/においた。
ライブラリはldd emu-gで表示されるライブラリをコピー(ホストのlinuxのものをコピー)。
libpthread.so.0も元々あるやつだとダメっぽいのでこれもコピー。
必要なdis は
lib/bufio.dis, lib/filepat.dis, lib/arg.dis, lib/string.dis, sh.dis, emuinit.dis。
6. 実行
jslinuxを立ち上げて(ブラウザでindex.htmlを開く)、
emu-g -r /root/inferno を実行すると・・・
うーん、動かず。
どうやらFPinit()でだめになるっぽいです。
そもそもCPUエミュレーターはFPUには対応していないようで、
inferno emuはFPU必須なのかも。
起動の流れが追えて勉強になりましたが、動かなかったのは残念。
ちなみに、emu-gのサイズは291kbyte、disは合わせて58kbyte。
共有ライブラリはでかいですが(全部で2Mbyteほど、ミニマムは不明)、
結構小さいですね。
私の技量ではここまで。
Native infernoをやるのはおそらく無理かと。
動けば、ブラウザ上でinfernoができてすごくいいんですけどね。
IEのプラグインはあるようですが、他のブラウザではまだなので、動くと良いのですが。
2011年5月26日木曜日
Acmeを使い込んでみる
最近脱emacsを計り、Acme-sacを使っています。
ちょっとずつコツが掴めてきました。
なお、windowsでの使用を想定しています。
OSXでもそれっぽいことができるとは思いますが、まだ試してはいません。
落ちることがあるので注意
Zeroxというコマンドでウィンドウを二重化できますが、
それをしたあと、片方のウィンドウをいじるとAcmeが固まるようです。
カーソルキーをおして、ctrl-s とかctrl-gとかおすと出ます。
条件はまだはっきりとしないのですが、zeroxした時だけ出るようです。
メーリングリストにはまだ報告していません。
なお、落ちたときに$home/acme.dumpというダンプファイルができることに気づきました。
もしエラーがでたら前バッファのバックアップを残してくれるようです。
知らなかった。
Acmeでメールの現実解
Acme上でMailを使うのは厳しいです。日本語がだめなので。
現実解としては、Thunderbirdの外部エディタにAcmeを指定することですね。
特に文字化けもなく使えることは確認しました。
Thunderbirdにはexternal editorとかいうアドオンをいれて、
外部エディタとして後述のバッチファイルを指定すればOK。
まだメインのエディタとしてmewを使っていますが、ゆくゆくは完全に移行したい。
Acmeにエクスプローラーからファイルを送る
エクスプローラーでファイルをAcmeでオープンできるように頑張ってみました。
やり方は、
・AcmeでWinのパス名をInferno上のパス名に変更するプログラムを作成
・Acme起動時にrstyxサーバーを立てる
・Acmeに対しrstyxでコマンドを送るバッチファイルを作成(emuをコールする)。
といった感じです。
無駄にHosted Infernoを使っています。
rstyxがいい感じです。
こうすると、メーラーから外部エディタとしてAcmeが使えたり、
バッチファイルのショートカットをデスクトップに置いておいて、そこにドラッグアンドドロップでファイルがAcmeで開けるようになったり、コンテキストメニューの「送る」に登録してみたり、といろいろできます。
残念ながら開いているAcmeへのドラッグアンドドロップは無理ですが。
やり方の説明は面倒なので、subversionのリポジトリをお知らせします。
http://www.assembla.com/code/yosinori_public/subversion/nodes/trunk/limbo/cmd/openwithacme
index.txt に説明があります。
Goog、Pediaを日本語対応に
Goog word、Pedia word、で単語のグーグル検索、Wikipedia検索が出来ます。
が、日本語に対応していないので、日本語対応をしてみました。
urlencodeというプログラムを作成し、それを挟むことで
日本語がコード変換されて、情報のgetが可能になります。
なお、プログラム名はurlencodeという大層な名前ですが、
ちゃんとはしておらず、ただ渡された文字列を%xx という形に書き出すだけです。
http://www.assembla.com/code/yosinori_public/subversion/nodes/trunk/limbo/cmd/urlencode.b
においておきます。
Acmeでテキストブラウズなかなかいい感じ。
矩形切り取り
バッファで矩形に切り取りたい箇所を選択し、rect を実行。簡単。
残念ながら、貼付けはできないっぽい。
固定幅フォント
Fontを実行するとそのバッファが固定幅・プロポーショナルが切り替わります。
Fontにフォントパスを引数として付けると、フォントの切り替えも可能です。
いっぱいバッファを開くとSortが便利
次々バッファを開くと訳が分からなくなりますが、
Sortを実行するとバッファがファイル名で並ぶので、
ソートされたバッファリストとして使えます。
ちょっとずつコツが掴めてきました。
なお、windowsでの使用を想定しています。
OSXでもそれっぽいことができるとは思いますが、まだ試してはいません。
落ちることがあるので注意
Zeroxというコマンドでウィンドウを二重化できますが、
それをしたあと、片方のウィンドウをいじるとAcmeが固まるようです。
カーソルキーをおして、ctrl-s とかctrl-gとかおすと出ます。
条件はまだはっきりとしないのですが、zeroxした時だけ出るようです。
メーリングリストにはまだ報告していません。
なお、落ちたときに$home/acme.dumpというダンプファイルができることに気づきました。
もしエラーがでたら前バッファのバックアップを残してくれるようです。
知らなかった。
Acmeでメールの現実解
Acme上でMailを使うのは厳しいです。日本語がだめなので。
現実解としては、Thunderbirdの外部エディタにAcmeを指定することですね。
特に文字化けもなく使えることは確認しました。
Thunderbirdにはexternal editorとかいうアドオンをいれて、
外部エディタとして後述のバッチファイルを指定すればOK。
まだメインのエディタとしてmewを使っていますが、ゆくゆくは完全に移行したい。
Acmeにエクスプローラーからファイルを送る
エクスプローラーでファイルをAcmeでオープンできるように頑張ってみました。
やり方は、
・AcmeでWinのパス名をInferno上のパス名に変更するプログラムを作成
・Acme起動時にrstyxサーバーを立てる
・Acmeに対しrstyxでコマンドを送るバッチファイルを作成(emuをコールする)。
といった感じです。
無駄にHosted Infernoを使っています。
rstyxがいい感じです。
こうすると、メーラーから外部エディタとしてAcmeが使えたり、
バッチファイルのショートカットをデスクトップに置いておいて、そこにドラッグアンドドロップでファイルがAcmeで開けるようになったり、コンテキストメニューの「送る」に登録してみたり、といろいろできます。
残念ながら開いているAcmeへのドラッグアンドドロップは無理ですが。
やり方の説明は面倒なので、subversionのリポジトリをお知らせします。
http://www.assembla.com/code/yosinori_public/subversion/nodes/trunk/limbo/cmd/openwithacme
index.txt に説明があります。
Goog、Pediaを日本語対応に
Goog word、Pedia word、で単語のグーグル検索、Wikipedia検索が出来ます。
が、日本語に対応していないので、日本語対応をしてみました。
urlencodeというプログラムを作成し、それを挟むことで
日本語がコード変換されて、情報のgetが可能になります。
なお、プログラム名はurlencodeという大層な名前ですが、
ちゃんとはしておらず、ただ渡された文字列を%xx という形に書き出すだけです。
http://www.assembla.com/code/yosinori_public/subversion/nodes/trunk/limbo/cmd/urlencode.b
においておきます。
Acmeでテキストブラウズなかなかいい感じ。
矩形切り取り
バッファで矩形に切り取りたい箇所を選択し、rect を実行。簡単。
残念ながら、貼付けはできないっぽい。
固定幅フォント
Fontを実行するとそのバッファが固定幅・プロポーショナルが切り替わります。
Fontにフォントパスを引数として付けると、フォントの切り替えも可能です。
いっぱいバッファを開くとSortが便利
次々バッファを開くと訳が分からなくなりますが、
Sortを実行するとバッファがファイル名で並ぶので、
ソートされたバッファリストとして使えます。
登録:
投稿 (Atom)