割り込みでNTB BASICプログラム実行を中断させる
🔁割り込み処理の試験プログラム🔁
🔁NAKAMOZI TINY BASIC に組み込む🔁
1. 割り込み処理の試験プログラム
- 6800の割り込みの実践プログラムはググってもあまり見当たらない。そこで「Old MC6800」さんのHPを参考にして、アセンブルソース(irqv1.asm)で試験した。6850の割り込み出力を6800が検出して処理を行う。
- ソースリスト
- irqv1.zip ファイル
- irqv1.asm irqv1.LST irqv1.S irqv1.MAP
★ MC6850 ACIAコントロールレジスタに$95を書き込み、割込み出力モードにする。
【 http://www.swtpc.com/mholley/Notebook/Hardware_ACIA.pdf より引用】
- Main Routine:割込み待ちのループで、ワークメモリIRQCHR ($1F17)がNULL($00)で無ければ「IRQ OK」のメッセージを出力する。
- MIXDBUGで $1F14 - $1F16 はブレークポイントのワークメモリ
- そのため、IRQCHRはMIXDBUGの空きである $1F17 とした。
- 割込み Routine:CTL C($03)が入力された時に、ワークメモリ($1F17)に$03を書き込む。
2. NAKAMOZU TINY BASICに組込む
- BASICプログラム実行時にステートメント1行を読む毎に割込を受け付ける。
- サブRoutine(IRQON)は、ACIA(MC6850)のコントロールレジスタ($8108)に$95を書き込み、CLIを実行する。
- 割込RoutineでCTL C($03)の入力があればNTBのHOT STARTにジャンプする。
- プログラムテキストをRAMから読み込む時に1行に複数のステートメントを記述するための「:」を出力していたために発生していた。
- ソースリストの変更部分
- ソースリスト置き棚のntbv7.asmを下記のように書き換え、再アセンブルした。
以上
SBC6800データパックのTESTINT.ASMが割り込み受信をやっています。夢七Leoさんがやろうとしているのは何か別のことなのかな。
返信削除