/*****************************************************
sample.c : 
  μITRONトレーナcmtoy サンプルプログラム
  Copyright(C) 2002 佐々木芳
	Revised at 2026,4,1

タイマタスクの実装


Windowsのシミュレーション環境上で動作するアプリケーションプログラムのコンパイル時には以下のマクロ定義が必要
	_CMTOY
*****************************************************/

#include "hal.h"
#include "itron.h"


/*システム起動時からのカウント値*/
DWORD	TimerCount;

//各セグメントの位置を計算する
//	==0==
//	5	1
//	==6==
//	4	2
//	==3== 7
//					    0     1     2     3     4     5     6     7     8     9
BYTE num_pattern[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x27, 0x7f, 0x6f};
void DisplayDecimal(int num)
{
	WORD stat = num_pattern[(num/10)%10]<<8 | num_pattern[num%10];
	halSetSegLED(stat);
}

void DisplayContext(void)
{
	BOOL ctx = sns_ctx();
	if(ctx)
		CMTRACE("app: handler context.\n");
	else
		CMTRACE("app: task context.\n");
}




/*****************************************************
//初期化ルーチン（カーネルコンテキストで実行）
*****************************************************/
void InitHandler(void)
{
	ER ercd;
	CMTRACE("app: InitHandler invoked.\n");
	DisplayDecimal(0);
	ercd = ena_int(1);	//カーネルコンテキスト内ではサービスコールは使えない
	iwup_tsk(1);		//カーネルコンテキスト内ではサービスコールは使えない
	slp_tsk();			//カーネルコンテキスト内ではサービスコールは使えない
//	if(ercd != E_OK) CMTRACE("InitHandler ena_int: ercd = %d\n", ercd);

}

