2014年08月31日

リトルバンパイアforP6(8)

  リトルバンパイアを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はありましたか?
配布フリー宣言の規約に

※改造は一切禁止です。

とあります。これが個人使用でも禁止なのか、改造したものの配布が禁止なのか、改造した物自体の配布は禁止でもパッチならOKなのかが不明です。
配布フリーの段落の外にあるのが微妙なところです。

確認がまだでしたら一旦配布を停止して、確認をとられた方がよろしいかと思います。
Posted by 通りすがり at 2014年08月31日 19:56
> N66SR-BASICの未定義命令を使う方法に関しては、
> 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
使っているか?は知りません。
Posted by かかっくん at 2014年08月31日 20:19
3文字以上の変数名は使っているようですね。N88なら使うのが普通ですか
予約語を含む変数名もありそうな...
Posted by かかっくん at 2014年08月31日 20:51
>通りすがりさんへ
 ご指摘ありがとうございます。確認いたします。
Posted by えすび at 2014年08月31日 21:01
>>
>>ネット上にはありませんか?
>>N88とかNほどではないにせよ、N60の情報は結構ありますがN66SRの情報はあまりない
>>ですね
>>

 多分ないと思います。N60の情報もほとんど無いかと思います。
 私が知らないだけかも知れませんが。


>>
>>DEFINT/DEFSTRはあまり問題にならないのでは?
>>

 話題がずれているというか、別の意味で書いたつもりなんですが...

 ユーザが新しい命令を作るときに、その新しい命令として、DEFINTやDEFSTRは使えませんよ、という意味です。

>>
>>3文字以上の変数名は使っているようですね。N88なら使うのが普通ですか
>>予約語を含む変数名もありそうな...

 全部変換したつもりですが、まだ残っていましたか?

 元の88版のプログラムなら、あるのが当然なんですが。

Posted by えすび at 2014年08月31日 21:08
先日オフ会でお目にかかりました武田です。

アリスの配布フリー関係で、MSXやDOS時代のソフトを
Windowsに移植したものを配布していますが、
このときは申請すればすぐに許可を頂けました。

配布フリーの条件にある、

>プログラムの最新OSへの対応
>※音楽データを正規の収録方式から何かしらの改変をして配布したい場合は事前に弊社までご連絡いただき許可をとってください。

というのは、私が申請したときに追加して頂いた項目
だったりします。

過去の環境への対応となると、どうなんでしょう。
私が許可いただけたのは、UNITBASEでの活動実績が
あったからという面もあるでしょうし。
Posted by 武田 at 2014年08月31日 23:52
>  ユーザが新しい命令を作るときに、その新しい命令として、DEFINTやDEFSTRは使えませんよ、という意味です。

DEFって何だろう?と思って調べたらDEF FNですね。なるほど

N88(86)にはさらにDEF SEGというものも追加されています。
PEEK/POKEなどの対象セグメントを指定するものです。VRAMにBLOADするときなどに
使います。多分VA用のN88-V3にもあると思います。
Posted by かかっくん at 2014年09月01日 01:30

>武田さん

先日はどうもでした。亀レスですみません。


>>過去の環境への対応となると、どうなんでしょう。

アリスさんの回答は、「下位機種への移植は想定していなかった」との事でした。そら、そうですね(^^;)


逆に今だからできる移植でもありますが。
Posted by えすび at 2014年09月23日 22:12
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。