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