全返信表示
BASIC 割り込み処理
MZ80レプリカ製作
[ nag*sa_*ei ]
2010/4/2(金) 午後 4:34
BASIC 割り込み処理
MZ80レプリカ製作
[ nag*sa_*ei ]
2010/4/2(金) 午後 4:18
> test1がプログラム制御レジスタの割り込みフラグをセットして抜けてくるだけの動作なので、割り込みが発生していない場合は、すぐにつぎのprint文に入ってしまわないですか?
その通り、割り込みフラグが立っていないと、次のINSTRUCTIONを実行します。しかしtest1はフラグをセット==即ち割り込みが発生です。
割り込みが発生しない場合は、シミュレーションtest1は、無しという事で 200行は下記の通りになります。
200 : print "set interrupt-bit 1"と同じ意味になります。
test1で割り込みフラグを立てた為、200行は、等価的に下記 テキスト文になった動作をします。
200 test1:gosub 1000: print "set interrupt-bit 1"
どうですか・・
BASIC 割り込み処理
MZ80レプリカ製作
[ かの ]
2010/4/2(金) 午後 0:55
BASIC 割り込み処理
MZ80レプリカ製作
[ nag*sa_*ei ]
2010/4/1(木) 午後 7:03
BASIC 割り込み処理
MZ80レプリカ製作
[ かの ]
2010/4/1(木) 午後 6:17
BASIC言語 追加版
MZ80レプリカ製作
[ かの ]
2010/3/28(日) 午後 8:48
BASIC言語 追加版
MZ80レプリカ製作
[ nag*sa_*ei ]
2010/3/27(土) 午後 9:34
BASIC言語 追加版
MZ80レプリカ製作
[ nag*sa_*ei ]
2010/3/27(土) 午後 9:32
コメントありがとう。
MZBASICは、ハード面で3レベルの多重割り込み処理をしています。
最優先はWAVE再生データ要求(11.025KHz毎)、第二優先は、時間・タイマー関係(2KHz毎)、第三は、WAVEデータブロック(512bytes)をSDからの読み出し要求(約50msec毎)になっています。
従って、最も厳しい状況は、ファイル処理でSDにデータを書き込んでいる時に、上記3要求が重なった場合に起こります。
これ以外に、ターミナルからの入力処理は、RS232Cハード割り込みで、バッファーに溜め込み、CR,LF受信した時、受信文を実行しているインストラクションの間に、BASICソフト割り込みとして、構文解釈処理をしています。
従って for next, goto で無限ループに入っても、ターミナルのESCキーでbreakを送信すると、無限ループから脱出します。
BASIC言語 追加版
MZ80レプリカ製作
[ かの ]
2010/3/27(土) 午後 7:48



