[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[WitchTech 00350] Re: VBLANK カウント割り込みが上手くいきません
- Subject: [WitchTech 00350] Re: VBLANK カウント割り込みが上手くいきません
- From: Tooru Watanabe <erupi@fa2.so-net.ne.jp>
- Date: Thu, 17 Aug 2000 22:12:24 +0900
えるぴと申します。前回の質問の続きです。
皆様のおかげで、何とかVBLANKの回数はカウント出来るようになりました。
おかげで、当初の目的は果たせるようになりました。
以下、動作を確認したプログラムです。
----
#include <sys/system.h>
#include <sys/timer.h>
#include <sys/text.h>
#include <sys/key.h>
#ifdef LSI_C_WW
#define _CS _asm_inline("mov ax, cs")
#define _DS _asm_inline("mov ax, ds")
#endif /* LSI_C_WW */
void initInterrupt(void);
void far vSyncCount(void);
volatile int vSync;
intvector_t intVector;
intvector_t lastIntVector;
int main(int argc, char *argv[])
{
text_screen_init();
text_put_string(0, 0, "TEST1");
initInterrupt();
vSync = 0;
text_put_string(0, 1, "TEST2");
text_put_numeric(8, 1, 8, 0, vSync);
sys_wait(150);
text_put_string(0, 2, "TEST3");
text_put_numeric(8, 2, 8, 0, vSync);
key_wait();
}
void initInterrupt(void)
{
intVector.callback = (void (near *)())FP_OFF(vSyncCount);
intVector.cs = _CS;
intVector.ds = _DS;
intVector.reserve = 0;
sys_interrupt_set_hook(SYS_INT_VBLANK, &intVector, &lastIntVector);
}
void far vSyncCount(void)
{
vSync++;
}
----
ところが、このプログラムのinitInterrupt()を以下のようにすると
暴走してしまいます。
----
void initInterrupt(void)
{
intVector.callback = (void (near *)())FP_OFF(vSyncCount);
intVector.cs = _CS;
intVector.ds = _DS;
intVector.reserve = 0;
sys_interrupt_set_hook(SYS_INT_TIMER_COUNTUP, &intVector, &lastIntVector);
timer_enable(TIMER_VBLANK, TIMER_AUTOPRESET, 1);
}
----
自分としてはこれで、VBLANKカウントタイマーを使ってVBLANK1回毎に
割り込みを掛けるようにしたつもりなのですが、
一体どこが間違っているのでしょうか?
#WonderWitchってムツカシイ(x_x;
--------
えるぴ(渡邉 徹) E-mail address : erupi@fa2.so-net.ne.jp
ML Archives