J31BASICに逆移植しました。J3100で開発、運用していたので、動くようになるまで1時間も掛かりませんでした。ところが、その後の各エミュでの挙動が違いすぎてその対応は非常に困難なものでした。底なし沼に落ちたような、藻掻けば藻掻くほど深くなるその深淵は、地獄か。いうことで、地獄から生還した私の地獄巡り体験記(違う)改造遍歴を書いてみたいと思います。(^^;始めに両コンパイラの違いの説明です。J3100で運用していましたが、Windows95が出てPCもWinノートに変わりました。VGAになり、J31用のプログラムは動かない。(>_<)仕方なく手持ちのTurboBasicに移植することに。J31用の設定ですが、TurboBasicでも同じようです。含めてメタコマンドか。55行は、TurboBasic用で、J31コンパイラではエラーになります。してやっとコメントになりました。後はテキストカラー属性指定かな。英語テキストモードでしか使えないようです。J31は基本グラフィックモードだけなので、@でテキスト文字用に使い分けできます。他にもあったかもですが、僅かの変更でコンパイラは通るようになり、動き始めました。本当の地獄はこれから始まるのであった。タイマー画面を退避させています。J31用BASICコンパイラを動作させてみると、その画面がおかしい。ぐちゃぐちゃになっているのです。23行で以下のように表示されます。1行目は、d-他の受け渡しに使っています。各エミュごとに全部違っています。最初は2バイト文字が変に文字化けして、背景のスペースがヌルになっています。現在は正常表示になっていますが、ここまでするのに一苦労でした。このように、どのエミュでも2バイト文字が化けたり2重になったりしています。いう、1バイトの数字を2バイト文字に変換する関数でした。この関数を使って表示していたので元に戻してみたらこうなったということです。同じやり方に戻しました。これは、VRAM領域のメモリの状況によると思われます。VGAの領域で確保されていると思いますが、初期化の問題なのかな。メモリ拡張していると干渉すると思われるので要注意です。動くのが不思議な状態なので、このまま使うのがよろしいようです。VGAの領域で確保されていると思いますが、初期化の問題なのかな。メモリ拡張していると干渉すると思われるので要注意です。思い込みで間違えました。カラーモードが使えます。画面情報を見てみました。DOS/V(Normal)、日本語環境です。DOS/V(Normal)、日本語環境です。DOS/V(V-Text)、日本語環境です。DOS/V(V-Text)、日本語環境です。領域は使用していないようですがVRAMアドレスがバラバラですね。1ごめんなさい、ここのところがよくわからないので解説希望。いう、1バイトの数字を2バイト文字に変換する関数でした。この関数を使って表示していたので元に戻してみたらこうなったということです。同じやり方に戻しました。(1)J31BASICではCDBL$()を使っていた(2)でも何らかの理由でJ3100ではCDBL$()を使わなくなった(3)だけどやっぱりCDBL$()を使ったら文字化け(4)TurboBasicと同じCDBL$()を使わない方法に戻したという理解でよろしいのでしょうか。それとも(1)J31BASICではCDBL$()を使っていた(2')でもJ3100以外の機械で使うためにCDBL$()を使わなくなった(3)だけどやっぱりCDBL$()を使ったら文字化け(4)TurboBasicと同じCDBL$()を使わない方法に戻したこっちの理由かな。(2)なのか(2')なのかで違いがあるかも、というお話。余談ですが、N88-BASICにはCDBL$()という関数はありません。数値型のCDBL()という関数はあります。引数を倍精度型に変換するという関数です。文例としてA#=CDBL(256%)なんていうのが載っていますが、仮にA#=256%とした場合と何が違うのか、あまり知られていません。積極的には使われない関数であることは間違いありません。(2')でもJ3100以外の機械で使うためにCDBL$()を使わなくなったこちらですね。J31BASICでCDBL$()(2バイト数字文字)を使っていた。・でも、PCがWin95ノートに変わってしまい、J3100のプログラムが動かなくなったのでTurboBasicに移植して、CDBL$()が使えないので、1バイト数字文字で運用した。・今回このプログラムを公開するために、2バイト数字文字表示を実現させた。J31BASICで各種エミュで動くことが分かったので、CDBL$()(2バイト数字文字)を復活させた。CDBL$()を使ったら文字化け。VRAMへの描画形式が違うためと思われます。セグメントなので動くみたいです。実機では動かないと思っていましたが、エミュでは何故か動くのです。余談ですが、N88-BASICにはCDBL$()という関数はありません。数値型のCDBL()という関数はあります。引数を倍精度型に変換するという関数です。機能的にも同じようです。積極的には使われない関数であることは間違いありません。私も使ったことが無いです。