/* for simulation */
/* #define THRSim11 */

void rtti_isr(void) __attribute__((interrupt));

void rtti_isr(void) {
	static unsigned char count=0;
	volatile unsigned char* porta=(unsigned char*)0x1000;
	volatile unsigned char* tflg2=(unsigned char*)0x1025;
	if (count==122) {
		count=0;
		*porta^=0x60;
	}
	else
		++count;
	*tflg2=0x40;
}

typedef void (*isr)(void);

int main() {
	volatile unsigned char* tmsk2=(unsigned char*)0x1024;
	volatile unsigned char* porta=(unsigned char*)0x1000;
	/* set vector for Simplex board */
	volatile unsigned char* rtti_ram_vector_jmp=(unsigned char*)0x00eb;
	volatile isr* rtti_ram_vector_addr=(isr*)0x00ec;
	*rtti_ram_vector_jmp=0x7e;
	*rtti_ram_vector_addr=rtti_isr;
	*tmsk2=0x40;
	*porta|=0x40;	
	while (1) ;
	return 0;
}

#ifdef THRSim11
#ifdef __cplusplus
extern "C" void _start(void);
#else
extern void _start(void);
#endif

isr vectors[32] __attribute__ ((section (".vectors"))) = {
	0, 0, 0, 0, 
	0, 0, 0, 0,
	0, 0, 0, (isr)0x00c4, 
	(isr)0x00c7, (isr)0x00ca, (isr)0x00cd, (isr)0x00d0, 
	(isr)0x00d3, (isr)0x00d6, (isr)0x00d9, (isr)0x00dc, 
	(isr)0x00df, (isr)0x00e2, (isr)0x00e5, (isr)0x00e8,
	(isr)0x00eb, (isr)0x00ee, (isr)0x00f1, (isr)0x00f4, 
	(isr)0x00f7, (isr)0x00fa, (isr)0x00fd, _start
};
#endif

