/*----------------------------------------------------------------------------
@ File Name         : swi.c
@ Object            : SoftwareInterruptHandler
@
@ Autor 			: Horsch/Pester
@ Datum				: 3.12.2007/Januar2011
@----------------------------------------------------------------------------*/
void SWIHandler () __attribute__ ((interrupt ("SWI")));

void SWIHandler() 
{
	register int reg_r0 asm ("r0");
	register int *reg_14 asm ("r14");

	switch( *(reg_14 - 1) & 0x00FFFFFF) // Maskieren der oberen 8 Bits 
																			// und Verzweigen in Abh. der SWI NUmmer
	{ 
		case 0x100:
			init_ser();
			break;
		case 0x200:
			*((char *)reg_r0) = putch(*((char *)reg_r0));
			break;
		case 0x300:
			*((char *)reg_r0) = (unsigned int) getch();
			break;
	}
}