#0077/9999 Q&A集 ★タイトル (88VAUSER) 95/11/01 00:00 (102) 9.2 V3 BASICでソフトウエア割り込みを使う方法はありますか? ★内容 マニュアルには載っていませんが、ソフトウエア割り込みを行なう命令がちゃんと 用意されています。 なお、ここでは「ソフトウエア割り込みとは何か」については触れません。 MS−DOS上のプログラミングや8086系CPUに関する解説書を参照してくだ さい。 また、VAの各BIOSの使用法は以下の文献を参照してください。 7.OSL − 1.VA専用OSL ============================================================================ 272.TEKUMANI.LZH UCH78101 92/ 1/23 0255872 0000242 (PC88VAテクニカルマニュアル VAクラブ版 初版(転載禁止)) ============================================================================ ---------------------------------------------------------------------------- INT 機能 ソフトウエア割り込みを発生します。 書式 1) INT <割り込み番号>(<レジスタ>=<数式>[,<レジスタ>=<数式>...]) 2) INT <割り込み番号>(<レジスタ>=<数式>[,<レジスタ>=<数式>...] ; <変数>=<レジスタ>[,<変数>=<レジスタ>...]) 解説 1) ・指定した <割り込み番号> のソフトウエア割り込みを発生します。 ・<レジスタ>=<数式> でレジスタに値を代入することができます。 ・<レジスタ> には、AX,BX,CX,DX,SI,DI,BP,DS,ES が使用できます。 2) ・書式2)とほぼ同じですが、割り込み終了時のレジスタの値を変数に得るこ とができます。<変数>=<レジスタ> でレジスタの値を変数に代入できます。 ・<レジスタ>=<数式> の並びの後に ";"(セミコロン)をはさんでから、 <変数>=<レジスタ> の並びを書きます。 ・<レジスタ> には、AX,BX,CX,DX,SI,DI,BP,DS,ES,FLAGS が使用できます。 FLAGS はフラグレジスタで、これに各フラグが次の様に割り当てられていま す。 bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ????????????????????????????????? ? ? ? ? ?OF?DF?IF?TF?SF?ZF? ?AF? ?PF? ?CF? ????????????????????????????????? 例 INT &H83(AX=0,DX=ASC("問")) ・テキストBIOSのファンクション00h「1文字表示」を使用して「問」 という文字を表示します。 ・このファンクションは、AHに0を、DXに文字コードをセットして呼び出 します。 注意:BASIC V3.0(初代VA)では以下の制限があります。 ・書式2)は使用できません。 ・書式1)を使用するにあたっては、あらかじめ、 DEF SEG=0:POKE2 &HAD*4,0 を実行しておく必要があります。これはBASIC起動後1回だけ実行すれ ば十分です。 --------- プログラム例 (1) --------------------------------------------- 100 ' INT サンプル (1) 110 CLEAR ,&H6FFF 120 DEF SEG=0: POKE2 &HAD*4,0 130 DEF SEG=&H6FFF 140 BLOAD "WINTER.BGM",0 150 STOPM 160 INT &H8B(AX=&H1B00,ES=&H7000,BP=0) ・サウンドBIOSのファンクション1Bh「ブロックデータの演奏」を使用し て、アニメフレーマー形式BGMファイルを演奏します。 ・この例では、”WINTER.BGM”をロードして演奏します。 ・BASIC V3.1(VA2/3/1+91)では120行を削除してくだ さい。 ------------------------------------------------------------------------ --------- プログラム例 (2) --------------------------------------------- 100 ' INT サンプル (2) 110 CLEAR 120 DEFINT A-Z 130 INPUT "シフトJISコード=",SJIS 140 INT &H8D(CX=&H1A,AX=SJIS;JIS=AX) 150 IF JIS=-1 THEN PRINT "無効なシフトJISコードです。": END 160 PRINT "JISコード=";HEX$(JIS) ・日本語入力フロントエンドプロセッサBIOSのファンクション1Ah「シフ トJIS→JIS変換」を使用して、漢字コードの変換を行ないます。 ・このファンクションは、CLに1Ahを、AXにシフトJISコードをセット して呼び出すと、AXにJISコードを返します。シフトJISコードが正し くないときはAXに−1を返します。 ・140行では、この返ってきた値を変数JISに代入しています。 ・このプログラムはBASIC V3.0では動作しません。 ------------------------------------------------------------------------ ---------------------------------------------------------------------------- <<< end of article >>>