ワンべぇを WonX で動かす


あなたは人目のお客様です.

ワンべぇは,川俣さん製作の,WonderWitch 用の Tiny BASIC です. 今回ワンべぇを FreeBSD 上で WonX を使ってコンパイルし,実行することが できたので,やりかたを書いておきます.

なお,ここに書いてあることはすべて無保証であり,どのようなことが起こっても, 筆者および関係者はいっさいの責任を負いません. 試すときには必ず各自の責任の下で行ってください.

やりかた

僕が試したのは FreeBSD 上でですが,Linux でもたぶんそのまま動くと思います.

まず,ワンべぇ をダウンロードします.今回はワンべぇVer0.04(wonbe004.lzh)を使用しました.

ダウンロードしたら,解凍します.

> mkdir wonbe
> cd wonbe
wonbe> lha x ../wonbe004.lzh

パッチを当てる

ワンべぇに以下のパッチを当ててください.
wonbe> patch < ../makefile.patch
wonbe> patch < ../wonbe.c.patch
wonbe.c 用のパッチでは,ファイル操作の部分(?)をごっそり #ifndef WONX で 囲ってあるので,ファイル操作(?)をすると,どのようなことになるのか, よくわかりません.このへんも筆者は一切責任を負いません.

改行コードと漢字コードの変換

ワンべぇのソースと makefile は,MS-DOS のテキスト形式なので, 改行コードは \r\n になってます. しかし,UNIX上ではテキストファイルの改行コードは \nであり,また,漢字コードは EUC です.

UNIX上では,そのままだと make が誤動作します.

たとえば makefile 中に,

	gcc wonbe.o -o wonbe -L. -L/usr/X11R6/lib -lwonx -lX11 -lXt
のような部分があった場合,行末の -lXt は実は -lXt\r のようになっているため, make しても 「-lXt に相当するファイルが無い」とおこられたりします. (しかも less や emacs でファイルを見ても,改行コードは表示されないので 原因がわからなかったりする)
wonbe> cat makefile | qkc -I -O -e -u > makefile.tmp
wonbe> mv makefile.tmp makefile
wonbe> cat wonbe.c | qkc -I -O -e -u > wonbe.c.tmp
wonbe> mv wonbe.c.tmp wonbe.c

必要なファイルは makefile と wonbe.c のみですので,それだけ変換すれば 十分です.

WonX をコンパイルする

ワンべぇとは別に,WonX もコンパイルしておく必要があります. Wonx-b04をダウンロードし,以下のパッチを 当ててください.

(以下のパッチによる修正は,Wonx-b05 以降で反映してあります. Wonx-b05 以降を使用する場合には,パッチを当てる必要はありません. とくに理由がなければ,最新の WonX を使用してください.作業の方法は, Wonx-b05 以降でも(パッチを当てなくて良いこと以外は)Wonx-b04 での場合と 同様です)

wonbe> tar xvzf ../wonx-b04.tar.gz
wonbe> cd wonx-b04
wonbe/wonx-b04> patch < ../../WWText.c.patch
wonbe/wonx-b04> patch < ../../comm.c.patch
パッチを当てたら WonX を make して,ワンべぇ用のディレクトリに, wonx_include ディレクトリと libwonx.a をコピーしてください.
wonbe/wonx-b04> make
wonbe/wonx-b04> cp -R wonx_include libwonx.a ..

make する

これでワンべぇを make すれば,wonbe という実行ファイルができあがります.
wonbe/wonx-b04> cd ..
wonbe> make

うまく make できない場合には,以下のことをチェックしてください.

実行する

wonbe> ls wonbe
wonbe
wonbe> ./wonbe
wonbe を実行してしばらく(描画に時間がかかります)すると, タイトル画面が出てきます. (kterm 上には,call : key_wait() : と表示されたところで止まっているはずです)
漢字は表示されないので注意してください.
wonbe のウインドウにマウスカーソルのフォーカスを合わせて, L キー(WonderSwan の Y2キーに相当する)を押して,シリアルポートを 使用するモードでスタートしてください. (wonbe を起動したターミナル(ktermかな?)の標準入力がシリアルポートの入力に, 標準出力がシリアルポートの出力に対応します)

スタートしてしばらくすると,シリアルポート(WonXの場合は,標準入力)からの 入力待ち状態でブロックします. (kterm 上には,call : comm_receive_char() : と表示されたところで 止まっているはずです)
そしたら kterm にマウスカーソルのフォーカスを合わせて,おもむろに,

print "HELLO!"
と入力して,Enter を押してみましょう.
どうでしょうか? ちゃんと画面に HELLO! と表示されたでしょうか?

プログラムを実行してみる

次はプログラムを入力して実行してみましょう.

ワンべぇに標準添付されているプログラム(*.wbファイル)をlessで表示させて, マウスのカットアンドペーストで,kterm にペーストしてしまいます. (ただし,漢字を含むプログラムがどう動くかは確認していません.漢字の無い プログラムで試しましょう)

WonXのばあいだと,フロー制御による文字落ちなどは考慮しなくていいので, 1行単位でなく,複数行をいっきにペーストしてしまってかまいません.

入力(時間がかかります)できたら,

run
してみましょう.ちゃんと実行できるかな?

注意点

上にも書きましたが,ファイルの改行コードと漢字コードには注意してください. うまくパッチが当てられなかったり,make がうまく動作しないときには, 改行コードを疑ってみてください.

気づいたこと

WonX でイリーガルな操作をした場合に,あっさり落ちるのでなく, なるべく実行を継続するように修正する必要がありますね.

あと WONX 用にソースコードを修正(#ifndef WONX でくくるとか)するときのために, WONX 中で,

#define WONX
のようなのが必要ですね.(Wonx-b05 以降で _WONX_ を追加した)
メールは kozos(アットマーク)kozos.jp まで