[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[WitchTech 00336] Re: VBLANK カウント割り込みが上手くいきません
- Subject: [WitchTech 00336] Re: VBLANK カウント割り込みが上手くいきません
- From: 山中 博 <hiro-y@ad.il24.net>
- Date: Wed, 16 Aug 2000 17:27:32 +0900
はじめまして、Manbow-Jといいます。
以下のコードで動作を確認しました(TCですが)。
変更箇所はできるだけ押さえました。
#include <sys/bios.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;
void main( void )
{
text_screen_init();
text_put_string(0, 0, "TEST1");
vSync = 0;
initInterrupt();
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)
{
#ifdef LSI_C
intVector.callback = (void (near *)())FP_OFF(vSyncCount);
#else
intVector.callback = (void (near *)())vSyncCount;
#endif
intVector.cs = _CS;
intVector.ds = _DS;
/* intVector.reserve = 0; */
sys_interrupt_set_hook(SYS_INT_VBLANK, &intVector, &lastIntVector);
timer_enable(TIMER_VBLANK, TIMER_AUTOPRESET, 1);
}
void far vSyncCount(void)
{
vSync++;
}
多分おかしかったのは、フックの設定で元のソースだと、SYS_INT_TIMER_COUNTUPと
なってました。が、マニュアルを見たらこのような設定は(この関数においては)
ないようです。ここらへんはサポートページのでのTipsなんかにも有ったような
気がします。(私も同じような子としているので同じところで悩みました)
#多分これから、vSyncCountにはスプライト転送ルーチンとかついていくのでしょうね。
それではまた。
----
Manbow-J : e-mail: hiro-y@ad.il24.net
ML Archives