[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[WitchTech 00336] Re: VBLANK カウント割り込みが上手くいきません



はじめまして、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