[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[WitchTech 00319] Re: VBLANK カウント割り込みが上手くいきません
- Subject: [WitchTech 00319] Re: VBLANK カウント割り込みが上手くいきません
- From: よこやえりな <yoko@aomori-ths.gr.jp>
- Date: Wed, 16 Aug 2000 14:43:54 +0900
void vSyncCount(void)
はfar関数にしなくてはなりません。正確な宣言文は知りませんが、たぶん
void far vSYncCount(void)
でいいと思います。(免責
とゆか、わざわざこんな関数作らなくてもシステムティックで代用できると
思うのですが・・・(^^;
Tooru Watanabe wrote:
>
> えるぴと申します。
> またしても質問です。
>
> 下記のようなコードを書いて、VSYNCの回数を変数vSyncでカウントするように
> したつもりなのですが、このコードをコンパイルして実行させると、
> "TEST2"を表示した直後(多分VSYNCタイマー割り込み発生時)に暴走してしまいます。
>
> しばらくコードを見直してみたのですが、一体どこが間違っているのかわかりません。
> どこが間違っているのでしょうか?
>
> なお、コンパイラはLSI-C86を使用しています。
>
> ----
> #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 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 = 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);
> }
>
> void vSyncCount(void)
> {
> vSync++;
> }
> ----
>
> --------
> えるぴ(渡邉 徹) E-mail address : erupi@fa2.so-net.ne.jp
ML Archives