リトルバンパイアをP6で動かそうブログ8
前回の続きです。
○P6版のマシン語プログラムについて
P6版では、88版をベースに以下の4つのプログラムを新規に作っています。
je(オープンしているファイルに対してアクセスを行う)
mika2(グラフィックデータを画面に描画する)
skj3(漢字を表示する)
nm4(BGMを鳴らす)
このうち、nm4は普通にCALL文で呼び出していますが、他の3つはBASICから変数などのパラメータのやり取りをしています。88版と同じように未定義命令を使って、起動させています。
N66SR-BASICの未定義命令を使う方法に関しては、
Mr.PC テクニカルコレクション
ハローMr.PC
に詳しく書かれています。特に、ハローMr.PCは、BASICの内部解析の記事もありますので、非常に参考になります。
Mr.PCテクニカルコレクションは国会図書館に、ハローMr.PCは名古屋市鶴舞図書館にあります。
具体的な使い方に関しては、それぞれのソースを参照してください。je.asm などは、WINDOW という未定義命令を、ステートメントとしても、関数としても使用していますので、参考になるかと思います。
ちなみに関数ですが、
関数名(引数)
の形式しか許されていないようです。また()の処理は不要です。
今回のプログラムでは、WINDOW、WINDOW()、VIEW、SET、TERM、CHAIN、CMD、KEY()、の未定義命令を作成しています。
未定義命令ですが、DEFINT、DEFSTR、COMMON、などの命令が普通では使用できません。それは、DEFやCOMなど定義されている命令があり、先にその予約語で解釈されて、メモリにセットされるためです。直接バイナリレベルでメモリに入れるなどをする必要があります。


配布フリー宣言の規約に
※改造は一切禁止です。
とあります。これが個人使用でも禁止なのか、改造したものの配布が禁止なのか、改造した物自体の配布は禁止でもパッチならOKなのかが不明です。
配布フリーの段落の外にあるのが微妙なところです。
確認がまだでしたら一旦配布を停止して、確認をとられた方がよろしいかと思います。
> Mr.PC テクニカルコレクション
> ハローMr.PC
> に詳しく書かれています。特に、ハローMr.PCは、BASICの内部解析の記事もありますので、非常に参考になります。
ネット上にはありませんか?
N88とかNほどではないにせよ、N60の情報は結構ありますがN66SRの情報はあまりない
ですね
> 未定義命令ですが、DEFINT、DEFSTR、COMMON、などの命令が普通では使用できません。それは、DEFやCOMなど定義されている命令があり、先にその予約語で解釈されて、メモリにセットされるためです。直接バイナリレベルでメモリに入れるなどをする必要があります。
DEFINT/DEFSTRはあまり問題にならないのでは?
整数型に%、文字型に$をつければ済むのですから。
(それともDEFSTR AでAとA$を別々に使っていますか?)
どちらかというと変数名や字数が問題のような...
ex.
ATO →TOが予約語
KAISUとKAZU →先頭2文字がKA
使っているか?は知りません。
予約語を含む変数名もありそうな...
ご指摘ありがとうございます。確認いたします。
>>ネット上にはありませんか?
>>N88とかNほどではないにせよ、N60の情報は結構ありますがN66SRの情報はあまりない
>>ですね
>>
多分ないと思います。N60の情報もほとんど無いかと思います。
私が知らないだけかも知れませんが。
>>
>>DEFINT/DEFSTRはあまり問題にならないのでは?
>>
話題がずれているというか、別の意味で書いたつもりなんですが...
ユーザが新しい命令を作るときに、その新しい命令として、DEFINTやDEFSTRは使えませんよ、という意味です。
>>
>>3文字以上の変数名は使っているようですね。N88なら使うのが普通ですか
>>予約語を含む変数名もありそうな...
全部変換したつもりですが、まだ残っていましたか?
元の88版のプログラムなら、あるのが当然なんですが。
アリスの配布フリー関係で、MSXやDOS時代のソフトを
Windowsに移植したものを配布していますが、
このときは申請すればすぐに許可を頂けました。
配布フリーの条件にある、
>プログラムの最新OSへの対応
>※音楽データを正規の収録方式から何かしらの改変をして配布したい場合は事前に弊社までご連絡いただき許可をとってください。
というのは、私が申請したときに追加して頂いた項目
だったりします。
過去の環境への対応となると、どうなんでしょう。
私が許可いただけたのは、UNITBASEでの活動実績が
あったからという面もあるでしょうし。
DEFって何だろう?と思って調べたらDEF FNですね。なるほど
N88(86)にはさらにDEF SEGというものも追加されています。
PEEK/POKEなどの対象セグメントを指定するものです。VRAMにBLOADするときなどに
使います。多分VA用のN88-V3にもあると思います。
>武田さん
先日はどうもでした。亀レスですみません。
>>過去の環境への対応となると、どうなんでしょう。
アリスさんの回答は、「下位機種への移植は想定していなかった」との事でした。そら、そうですね(^^;)
逆に今だからできる移植でもありますが。