Top > 88VAユーザーズクラブ > Q&A集 > 92
#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 >>>
Top > 88VAユーザーズクラブ > Q&A集 > 92