.module interrupts.c .area text 0000 _ADC_handler:: 0000 ; // interrupts.c 0000 ; 0000 ; #include 0000 ; #include "kernel.h" 0000 ; 0000 ; 0000 ; 0000 ; // FUNCTION PROTOTYPES 0000 ; void _start(void); 0000 ; 0000 ; 0000 ; 0000 ; /* Example code flow for all of these handlers: 0000 ; 0000 ; // IF interrupt isn't very time critical: 0000 ; figure out who cares, if anyone, then send a msg to the caring task 0000 ; 0000 ; 0000 ; if (resource[ADC].owner != 255) 0000 ; task[resource[ADC].owner].message |= ADC_MSG; 0000 ; 0000 ; 0000 ; 0000 ; // IF interrupt is time critical: (ie, there's data that needs to be serviced) 0000 ; get the data, put it in a buffer, then put the data in the message buffer 0000 ; 0000 ; task[resource[ADC].owner].message_data[ADC_MSG] = ADC; // ADC = correct port definition? 0000 ; */ 0000 ; 0000 ; 0000 ; 0000 ; 0000 ; 0000 ; // GLOBALS 0000 ; extern unsigned int interrupt_flags_ADC; 0000 ; extern unsigned int interrupt_flags_TC; 0000 ; 0000 ; 0000 ; 0000 ; 0000 ; 0000 ; #pragma interrupt_handler ADC_handler() 0000 ; 0000 ; void ADC_handler(void) { 0000 ; 0000 ; // figure out which adc interrupted 0000 ; 0000 ; // set appropriate global interrupt adc flag 0000 ; 0000 ; 0000 ; } 0000 L1: 0000 .dbline 0 ; func end 0000 0B rti 0001 _SCI1_handler:: 0001 ; 0001 ; 0001 ; 0001 ; /* #pragma interrupt_handler SCI0_handler() 0001 ; 0001 ; void SCI0_handler(void) { 0001 ; 0001 ; 0001 ; 0001 ; } */ 0001 ; 0001 ; 0001 ; 0001 ; #pragma interrupt_handler SCI1_handler() 0001 ; 0001 ; void SCI1_handler(void) { 0001 ; 0001 ; 0001 ; 0001 ; } 0001 L2: 0001 .dbline 0 ; func end 0001 0B rti 0002 _SPI_handler:: 0002 ; 0002 ; 0002 ; 0002 ; #pragma interrupt_handler SPI_handler() 0002 ; 0002 ; void SPI_handler(void) { 0002 ; 0002 ; 0002 ; 0002 ; } 0002 L3: 0002 .dbline 0 ; func end 0002 0B rti 0003 _PAIE_handler:: 0003 ; 0003 ; 0003 ; 0003 ; #pragma interrupt_handler PAIE_handler() 0003 ; 0003 ; void PAIE_handler(void) { 0003 ; 0003 ; 0003 ; 0003 ; } 0003 L4: 0003 .dbline 0 ; func end 0003 0B rti 0004 _PAO_handler:: 0004 ; 0004 ; 0004 ; 0004 ; #pragma interrupt_handler PAO_handler() 0004 ; 0004 ; void PAO_handler(void) { 0004 ; 0004 ; 0004 ; 0004 ; } 0004 L5: 0004 .dbline 0 ; func end 0004 0B rti 0005 _TOF_handler:: 0005 ; 0005 ; 0005 ; 0005 ; #pragma interrupt_handler TOF_handler() 0005 ; 0005 ; void TOF_handler(void) { 0005 ; 0005 ; 0005 ; 0005 ; } 0005 L6: 0005 .dbline 0 ; func end 0005 0B rti 0006 _TC7_handler:: 0006 ; 0006 ; 0006 ; 0006 ; #pragma interrupt_handler TC7_handler() 0006 ; 0006 ; void TC7_handler(void) { 0006 ; 0006 ; 0006 ; 0006 ; } 0006 L7: 0006 .dbline 0 ; func end 0006 0B rti 0007 _TC6_handler:: 0007 ; 0007 ; 0007 ; 0007 ; #pragma interrupt_handler TC6_handler() 0007 ; 0007 ; void TC6_handler(void) { 0007 ; 0007 ; 0007 ; 0007 ; } 0007 L8: 0007 .dbline 0 ; func end 0007 0B rti 0008 _TC5_handler:: 0008 ; 0008 ; 0008 ; 0008 ; #pragma interrupt_handler TC5_handler() 0008 ; 0008 ; void TC5_handler(void) { 0008 ; 0008 ; 0008 ; 0008 ; } 0008 L9: 0008 .dbline 0 ; func end 0008 0B rti 0009 _TC4_handler:: 0009 ; 0009 ; 0009 ; 0009 ; #pragma interrupt_handler TC4_handler() 0009 ; 0009 ; void TC4_handler(void) { 0009 ; 0009 ; 0009 ; 0009 ; } 0009 L10: 0009 .dbline 0 ; func end 0009 0B rti 000A _TC3_handler:: 000A ; 000A ; 000A ; 000A ; #pragma interrupt_handler TC3_handler() 000A ; 000A ; void TC3_handler(void) { 000A ; 000A ; 000A ; 000A ; } 000A L11: 000A .dbline 0 ; func end 000A 0B rti 000B _TC2_handler:: 000B ; 000B ; 000B ; 000B ; #pragma interrupt_handler TC2_handler() 000B ; 000B ; void TC2_handler(void) { 000B ; 000B ; 000B ; 000B ; } 000B L12: 000B .dbline 0 ; func end 000B 0B rti 000C _TC1_handler:: 000C ; 000C ; 000C ; 000C ; #pragma interrupt_handler TC1_handler() 000C ; 000C ; void TC1_handler(void) { 000C ; 000C ; 000C ; 000C ; } 000C L13: 000C .dbline 0 ; func end 000C 0B rti 000D _TC0_handler:: 000D ; 000D ; 000D ; 000D ; #pragma interrupt_handler TC0_handler() 000D ; 000D ; void TC0_handler(void) { 000D ; 000D ; 000D ; 000D ; } 000D L14: 000D .dbline 0 ; func end 000D 0B rti 000E _IRQ_handler:: 000E ; 000E ; 000E ; 000E ; #pragma interrupt_handler IRQ_handler() 000E ; 000E ; void IRQ_handler(void) { 000E ; 000E ; 000E ; 000E ; } 000E L15: 000E .dbline 0 ; func end 000E 0B rti 000F _XIRQ_handler:: 000F ; 000F ; 000F ; 000F ; #pragma interrupt_handler XIRQ_handler() 000F ; 000F ; void XIRQ_handler(void) { 000F ; 000F ; 000F ; 000F ; } 000F L16: 000F .dbline 0 ; func end 000F 0B rti 0010 _SWI_handler:: 0010 ; 0010 ; 0010 ; 0010 ; #pragma interrupt_handler SWI_handler() 0010 ; 0010 ; void SWI_handler(void) { 0010 ; 0010 ; 0010 ; 0010 ; } 0010 L17: 0010 .dbline 0 ; func end 0010 0B rti 0011 _COP_handler:: 0011 ; 0011 ; 0011 ; 0011 ; #pragma interrupt_handler COP_handler() 0011 ; 0011 ; void COP_handler(void) { 0011 ; 0011 ; puts("COP RESET!"); 0011 CC001C ldd #L19 0014 160000 jsr _puts 0017 ; _start(); 0017 160000 jsr __start 001A ; 001A ; } 001A L18: 001A .dbline 0 ; func end 001A 0B rti 001B _CLM_handler:: 001B ; 001B ; 001B ; 001B ; #pragma interrupt_handler CLM_handler() 001B ; 001B ; void CLM_handler(void) { 001B ; 001B ; 001B ; 001B ; } 001B L20: 001B .dbline 0 ; func end 001B 0B rti 001C L19: 001C 434F502052455345542100 .byte 'C,'O,'P,32,'R,'E,'S,'E,'T,33,0