#0092/9999 Q&A集 ★タイトル (88VAUSER) 95/11/01 00:00 (308) VAシリーズすべてで動くプログラムを作るために ★内容 プログラム編 Q>VAシリーズすべてで動くプログラムを作るために注意することは? VA2/3でプログラムを作った場合、特にBASICでは、初代VAで動作確 認してみるとエラーがでたり動作しないといったことが多々あります。 ここでは、VAシリーズすべてで動くプログラムを作るために必要となる情報を いくつか挙げてみます。 ■■一般編 ■0.VA2/3で拡張されたハードウエアを使用するとき 機種判定をしたり、使用するハードウエアの有無を確認したりする必要がありま す。何がVA2/3で拡張されたかは、「VAとVA2/3の違いはなんですか?」 をご覧ください。 また、ROMの内容もVA、VA+バージョンアップボード、VA2/3で、か なり異なるようです。ROMの内容を参照したり、ROM内ルーチンを直接呼び出 すような場合は(これはあまり好ましくありませんが)、各機種について調査する 必要があります。 ■1.MUSIC/ADPCM BIOS MUSIC BIOS、ADPCM BIOSはVA2/3やサウンドボード? で登載される音源をサポートするBIOSです。前者は初代VAがもっている SOUND BIOSを拡張したもので音楽演奏を担当し、後者はADPCM機能 を担当します。 これらのBIOSは ・PC−Engine V1.1 ・PC−Engine V1.05(サウンドボード?対応のもの) で使用できます。初代VAでサウンドボード?を付けていても上に挙げた PC−Engineを使わないとこれらのBIOSは使用できません。 これらのBIOSが存在するかどうかは、次のようにして調べられます。 -------------------------------------------------------------------------- ADPCM BIOSのファンクション01h(V$GetV)を呼ぶ。 AH=01h INT 86h ↓ AH=01hか?????? ↓ Yes ↓ No ADPCM BIOS はない。 ある。 ADPCM BIOSが存在すれば、ファンクション01h実行後、AXに 00hか21hが帰ってくるはずなので、それを利用している。 -------------------------------------------------------------------------- ADPCM BIOSが存在するならMUSIC BIOSも存在すると考える のが自然でしょう。 ■2.PC−Engine V1.1で新設されたBIOS等 これらのBIOSでADPCMBIOS以外は、仕様が今のところ公開されてい ないので使用されることも少ないと思いますが、一応資料をあげておきます。 3.フォーラム − 3.OS研究 − #3227(92/3/24) より引用 ========================================================================== FREE> 割り込みベクタ くるみ PC-Engine v1.1で追加されたBIOS等をかいておきます。 割込ベクタ 1.PC-Engine v1.1で追加されたもの ???????????????????????????????? ?割込番号 ユーザ:機 能 ? ???????????????????????????????? ? B 8259-1: UINT0 (Bus #0)/外部接続 9.3M FDD ? ? D 8259-1: UINT1 (Bus #1)/内蔵 9.3M FDD (*) ? ? 86 ADPCM BIOS ? ? A9 10進単精度型実数演算 ? ? AA 2進実数演算 ? ? B8 メニューマネージャー ? ? BA 拡張ファンシーフォントサービス ? ? BB Draw BIOS ? ? BD PR801 BIOS ? ? BE SHELL 内部使用 ? ? BF ダイアログマネージャー ? ???????????????????????????????? (*) VA3 ではスロット端子には出ていない ========================================================================== ほかにもPC−Engine V1.1では、割り込みベクタのD0h〜D8h をBASICが使用しているようです。 ■3.グラフィック画面設定 初代VAでは以下の制限があります。VA2/3にはありません。 -------------------------------------------------------------------------- シングルプレーンモードでグラフィックを2画面表示したとき、グラフィック画 面0で水平ラップアラウンドを行なうと、グラフィック画面1の表示画面設定に対 して制限が加わる。 ??????????????????????? ?グラフィック1の ? グラフィック1のピクセルサイズ ? ?水平解像度 ???????????????? ? ? 1 ? 4 ? 8 ? ??????????????????????? ?640ドット? ○ ? △ ? × ? ??????????????????????? ?320ドット? ○ ? ○ ? △ ? ??????????????????????? ○:制限なし △:表示スタートアドレスとフレームバッファの横幅が128バイト単位でしか 設定できない ×:使用不可 -------------------------------------------------------------------------- これに伴い、VAとVA2/3ではグラフィック画面制御BIOSでの設定にも 違いが出てきます。この項目の「BASIC編−3.SCREEN WIDTH命 令等」をご覧ください。 ■4.モノクロスプライト モノクロスプライトパターンについては、幅が32〜256ドットとなっていま す。 スプライトBIOSのファンクション02h「VIEWの定義」で、これより幅 の大きいパターンを登録しようとすると、PC−Engine V1.0/1.05 では登録されませんが、V1.1では登録もされますし、表示も正しく行なわれま す。 しかし、スプライトの座標がハード的には0〜1023で指定されるため、 幅が384ドット(=1024−640)を越えるパターンを表示させた場合は、 画面の左の外や右の外にスプライトを追い出すことはできません。 初代VA(PC−Engine V1.0/1.05)でも、ハード的には幅が 256ドットを越えるモノクロスプライトが表示可能です。(ただし、グラフィッ ク画面の設定がマルチプレーン・1ビットピクセルのときは表示できない可能性が あります。(未確認)) ■■BASIC編 ■0.V3.1で新たに設けられた命令 これはBASICのリファレンスマニュアルに明記されています。これらの命令 を使ったプログラムは、V3.0ではロードすらできません。当然、動作もしませ ん。(アスキーセーブした場合はロードはできます。) ■1.DSKF関数 V3.1では -------------------------------------------------------------------------- DSKF (<ファイルディスクリプタ>) -------------------------------------------------------------------------- で、指定したファイルの大きさをバイト数で得られますが、V3.0ではこの使用 法はなくType mismatchエラーになります。 ■2.INT命令(ソフトウエア割り込み) V3.1では、レジスタの値を受け取ることができますが、V3.0ではできま せん。 (詳細は「V3 BASICでソフトウエア割り込みを使う方法はありますか?」 をご覧ください。) ■3.SCREEN WIDTH命令 BUFFER命令 SCREEN WINDOWS命令 ROLL/ROLL TO命令 V3.0ではV3.1に比べ画面モード6・7でのページ1のピクセルサイズ・ フレームバッファのサイズ・表示フレームバッファ・表示領域において制限が加わ ります。V3.0での設定は以下に従います。 -------------------------------------------------------------------------- ??????????????????? ?画面モード?ページ1 ? ? ????????????? ? ? 幅 ?ピクセルサイズ? ??????????????????? ? ?320?1,4,5,8? ? 6 ????????????? ? ?640?1,4 ?←ピクセルサイズ5,8が使えない ??????????????????? ? ?320?1,4 ?←ピクセルサイズ5,8が使えない ? 7 ????????????? ? ?640?1 ?←ピクセルサイズ4が使えない ??????????????????? ページ1の設定が幅320ドットでピクセルサイズが5か8の時 ・表示できるフレームバッファはバッファ8のみ ・ROLL命令の第2パラメータは常に0 ・ROLL TO命令のXパラメータは常に0 ・フレームバッファの幅は128の倍数 ページ1の設定が幅640ドットでピクセルサイズが4の時 ・表示できるフレームバッファはバッファ8のみ ・ROLL命令の第2パラメータは常に0 ・ROLL TO命令のXパラメータは常に0 ・フレームバッファの幅は256の倍数 -------------------------------------------------------------------------- また、BIOSのバグのためと思われますが、V3.0では「画面モード6、ペ ージ1の幅320ドット、ピクセルサイズ5(32色)」の設定ができないようで す。これと同等の設定をするには、以下のようにするとよいでしょう。 -------------------------------------------------------------------------- 100 'ページ0のピクセルサイズが1、4、5のとき 105 ' SCREEN WIDTH 6,?,?,320,5 の代替法 106 ' この例は SCREEN WIDTH 6,320,4,320,5 107 ' ページ0の幅、ピクセルサイズは必要に応じて変更してください。 108 ' 110 SCREEN WIDTH 6,320,4,320,8 120 DEF SEG=&H40 130 OUT2 &H108,0: OUT2 &H106,&HBA89 140 POKE2 2,0: POKE2 0,&HBA89 150 DEF SEG=&H338 160 POKE &H12,5 100 'ページ0のピクセルサイズが8のとき 105 ' SCREEN WIDTH 6,?,8,320,5 の代替法 106 ' この例は SCREEN WIDTH 6,320,8,320,5 107 ' ページ0の幅は必要に応じて変更してください。 108 ' 110 SCREEN WIDTH 6,320,8,320,8 120 DEF SEG=&H40 130 OUT2 &H108,8: OUT2 &H106,&HB89 140 POKE2 2,8: POKE2 0,&HB89 150 DEF SEG=&H338 160 POKE &H12,5 -------------------------------------------------------------------------- ■4.内蔵音色 PC−Engineのバージョンによって、使える内蔵音色の数が異なります。 ・PC−Engine V1.0 ・PC−Engine V1.05 (古いもの) 音色番号は @0〜@61 ・PC−Engine V1.05 (サウンドボード?に対応のもの) ・PC−Engine V1.1 音色番号は @0〜@126 ■5.プルダウンメニュー プルダウンメニューの機能はV3.1で追加されたものですが、VA+バージョ ンアップボードでは以下の制限があります。 -------------------------------------------------------------------------- プルダウンメメニューに関するコマンド(MENU等)は、グラフィック画面が マルチプレーンモードで、モノクロモードのときには使用できません。"IIllegal function call" エラーが発生します。 このモード以外のモードを使用してください。 -------------------------------------------------------------------------- ■6.モノクロスプライト モノクロスプライトパターンについては、幅が32〜256ドットとなっていま すが、V3.1ではそれ以上の幅のパターンでも登録することができますし、表示 も正しく行なわれます。 しかし、スプライトの座標がハード的には0〜1023で指定されるため、 幅が384ドット(=1024−640)を越えるパターンを表示させた場合は、 画面の左の外や右の外にスプライトを追い出すことはできません。 ■7.実行速度に依存するもの BASICで時間待ちをするのに -------------------------------------------------------------------------- FOR I=0 TO 1000: NEXT -------------------------------------------------------------------------- のようなのをよく使いますが、同じループ回数でもV3.1ではV3.0より待時 間が短くなってしまいます。 ■8.V3.0でプログラムするときの注意 V3.0でプログラムする場合、V3.1で新たに予約語となった次のような語 を変数やラベルに使わないように注意する必要があります。 -------------------------------------------------------------------------- ANIMATE,CVSBCD,CVDBCD,MENU,FRAME,BGM,PIC,MODE,MKSBCD$,MKDBCD$,PCM,RECORD, PEN,RHYTHM,SHELL,STATUS -------------------------------------------------------------------------- <<< end of article >>>