表計算ソフト、結局ダメ。 横が7列しかない、とかはともかく、セルをコピーしてペーストするときに相 対でセル番号を変えてくれないとか、一度セーブしたことのあるファイルを再 度セーブする時にさっきのファイル名を忘れているとか、NewtonWorks Spreatsheet と計算結果が違うんで変だなぁと思ったらなんでか割算を間違え るとか。Pentium じゃないんだから。 NO$GMB はすごい。 完全にデバッガになってるもんね。作者のページにはアセンブラと逆アセンブ ラもあるし、Java とかじゃなくて "Gameboy Emulator" というある意味「仮 想マシン」としていろいろな機械で動くソフトのプラットフォームとして使え るかもね。んー GB の開発もやってみたくなってしまった。 さて、djgpp のデバッグは... errlog.txt に出ているスタックトレースは、djgpp の組み込みの機能らしい。 だから、allegro と squeak を -g 付きで作り直す。squeak の方はなぜか "-version" を解釈している辺りでextern 変数の実体を宣言しているところが ないとかいって作れない。配布版も実はそんなオプションを理解しない(なん でだ?)ので、思い切ってそんなものコメントアウトしてしまった。(だって ソース中で他にそんな変数出てこないんだもん。) で、symify というプログラムを使うと、スタックトレースの出力にソースプ ログラムの注が付くそうな。ということでさっそくやってみても、errlog.txt にはあいかわらずの結果しか出ない。"errlog.txt" というファイルを開いて いるところを探すと、freopen で stderr を横流ししているだけだったので、 そこもコメントアウトして、普通の djgpp プログラムと同様にエラーは画面 に出るようにした。 でも、出ない。メモリが足らないのかと起動時 F8 押しで日本語関係やラムディ スク関係を殺して立ち上げてやっても出ない。いろいろやっているうちに、 simify というプログラムは、エラー出力をリアルタイムに注釈付きにするの ではなくて一度エラーを画面に出して、その直後に simify を動かすことで 「画面上に出ているエラーログに注釈を後付けする」という妙なプログラムで あることを偶然発見。これでやっとどこで落ちているかわかる。 「画面上に」というのがあるので、chev us しないと動かないのはご愛嬌? 結局、カレントディレクトリに allegro.cfg をさがすところの strcpy でコ ケているということまではつかんだけど、そのプログラムは Win95 ではちゃ んと動いているんだよねー。なんでかなぁ。DOS6.2 のバグとか相性かなぁ。 でもバイナリ配布バージョンはなんの問題もなく動いているところも不思議、 ということで結局この先どうしたいいのかわかりません。ハイ。 どうせカレントにそんなもの置かないなら、さらにそこのコードもコメントで 殺してしまえばいいのかなぁ...でも allegro 内部だしねぇ... もういちど DR-DOS とか DOS2k にしてみる、というのもアリなんだけどなぁ... DOS2k のカードサービスをちゃんと使うと SRAM もハンドルしてくれるみたいだし。 4MB の swap がとれる。 .....って、試してみたら、7MB くらい空きのあるディスクを swap に 指定しないと squeak は failed to allocate といって終わってしまう。 そりゃないだろ。そのあたりの数値も無理矢理削ってみよう。 3MB にしてみた。 なんか、4MB SRAM はひっこぬいてまたすぐさしたら認識したよ。 粕谷の IO-DATA スロットの方がバグってんのかなぁ。 NT では使えないやつだったし。 話かわるけど、D: のフォントをオンデマンドで読むフォントドライバは、マ トモにやったら作れないね。DOS のシステムコールはリエントラントじゃない し、文字表示なんてもっと低位のルーチンだから、そこからファイルを読むな んて芸当ができるわけがない。D: の ROM を、DOS 通さずに読む方法がないか ぎり作れないんだね。残念。 djgpp な jnethack というのも見つけたけど、メモリ/swap がまるで不足。 グラフィックモードで遊べたらファンキーなのにねぇ。 .... -g 切ってやらないと、バイナリがでかいせいで、interpIn.c 側の failed to allocate meap memory になってしまう。 ということで、allegro から DEBUGMODE=0 で作り直して、 *************************   やっと俺のコンパイルしたコードで起動した! ************************* "squeak.SRC" でねぇぞ、の OK をタップしたとところで死んだけど。 でもとにかくこれで、先に進める。へっへっへっ。 ...今日はもう遅いから、また今度ね。 といいつつ、allegro\src\djgpp\mouse.c の mouseint() がキーらしいところ まで追い掛けたけど、INT33H で結局何が行われるのか、さっぱりわからん。 ザウ版とか Pilot 版とか、ホントよくやるねぇ...かなわんわ。