#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 >>>