#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <piece.h>
#include <s1c33cpu.h>
//------------------------------------------------------------------------------
unsigned char vbuff[DISP_X * DISP_Y];
//------------------------------------------------------------------------------
void pceAppInit() {
	pceAppSetProcPeriod(1);
	pceLCDSetBuffer(vbuff);
	pceLCDDispStart();
}
//------------------------------------------------------------------------------
void pceAppProc(int cnt) {
	int t;
	memset(vbuff, 0, sizeof vbuff);
	pceFontSetPos(0, 0);
	pceFontSetTxColor(3);
	pceFontSetBkColor(0);
	pceFontPrintf("割込許可 %d", cnt);
	pceLCDTrans();
	//Aボタンが押されたら、割り込みを禁止して、5秒間待つ。
	//・割り込み禁止中に、PCからP/ECEに対してUSBサスペンドが発生すると、割り込み禁止終了画面のまま、P/ECEがハングアップする。
	//  厳密には、USB割り込みが掛かりっ放しになって、メインループが回らなくなっている。
	//  復帰するためには、PCからP/ECEに対して何か通信を行い、USBサスペンドを解除しなければならない。
	//・PCの環境によっては、5秒間ぐらいUSB通信を行わなければサスペンドするので、上記を試せるのだが、
	//  また別のPCによっては、いつまで待ってもサスペンドしない場合も有り、試せない場合がある。
	//  そのようなPC環境で試すには、P/ECEに電池を入れて、USBケーブルを抜けば良い。
	//  USBサスペンド要求をP/ECE側から見ると、一定時間SOFパケットが途絶えることに相当するので、
	//  PCが明示的にSOFパケットを送信しないのも、USBケーブルを抜くのも、P/ECE側から見れば同じ。
	if(pcePadGet() & TRG_A) {
DISABLE;
		memset(vbuff, 3, sizeof vbuff);
		pceFontSetPos(0, 0);
		pceFontSetTxColor(0);
		pceFontSetBkColor(3);
		pceFontPrintf("割込禁止開始");
		pceLCDTrans();
		t = pceTimerGetCount();
		do {
			/** no job **/
		} while((pceTimerGetCount() - t) < 5000);
		memset(vbuff, 3, sizeof vbuff);
		pceFontSetPos(0, 0);
		pceFontSetTxColor(0);
		pceFontSetBkColor(3);
		pceFontPrintf("割込禁止終了");
		pceLCDTrans();
ENABLE;
	}
	//SELECTボタンが押されたら終了する。
	if(pcePadGet() & TRG_SELECT) { pceAppReqExit(0); }
}
//------------------------------------------------------------------------------
void pceAppExit() {
}
