.module interrupts.c .area text 0000 _MDCOF_handler:: 0000 ; // interrupts.c 0000 ; 0000 ; #include 0000 ; #include <912D60.h> 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 MDCOF_handler() 0000 ; 0000 ; void MDCOF_handler(void) { 0000 ; 0000 ; /*// LOCAL VARIABLES 0000 ; extern unsigned long int time_tick; 0000 ; 0000 ; // acknowledge the interrupt, incriment global time_tick 0000 ; MCFLG = 0x80; 0000 ; time_tick++; 0000 ; */ 0000 ; 0000 ; } 0000 L3: 0000 .dbline 0 ; func end 0000 0B rti 0001 _KWU_handler:: 0001 ; 0001 ; 0001 ; 0001 ; #pragma interrupt_handler KWU_handler() 0001 ; 0001 ; void KWU_handler(void) {} 0001 L4: 0001 .dbline 0 ; func end 0001 0B rti 0002 _ADC_handler:: 0002 ; 0002 ; 0002 ; 0002 ; #pragma interrupt_handler ADC_handler() 0002 ; 0002 ; void ADC_handler(void) {} 0002 L5: 0002 .dbline 0 ; func end 0002 0B rti 0003 _SCI1_handler:: 0003 ; 0003 ; 0003 ; 0003 ; /* #pragma interrupt_handler SCI0_handler() 0003 ; 0003 ; void SCI0_handler(void) { 0003 ; 0003 ; 0003 ; 0003 ; } */ 0003 ; 0003 ; 0003 ; 0003 ; #pragma interrupt_handler SCI1_handler() 0003 ; 0003 ; void SCI1_handler(void) {} 0003 L6: 0003 .dbline 0 ; func end 0003 0B rti 0004 _SPI_handler:: 0004 ; 0004 ; 0004 ; 0004 ; #pragma interrupt_handler SPI_handler() 0004 ; 0004 ; void SPI_handler(void) {} 0004 L7: 0004 .dbline 0 ; func end 0004 0B rti 0005 _PAIE_handler:: 0005 ; 0005 ; 0005 ; 0005 ; #pragma interrupt_handler PAIE_handler() 0005 ; 0005 ; void PAIE_handler(void) {} 0005 L8: 0005 .dbline 0 ; func end 0005 0B rti 0006 _PAO_handler:: 0006 ; 0006 ; 0006 ; 0006 ; #pragma interrupt_handler PAO_handler() 0006 ; 0006 ; void PAO_handler(void) {} 0006 L9: 0006 .dbline 0 ; func end 0006 0B rti 0007 ; lreg1 -> -4,x 0007 ; lreg2 -> -8,x 0007 _TOF_handler:: 0007 34 pshx 0008 B775 tfr s,x 000A 1B98 leas -8,sp 000C ; 000C ; 000C ; 000C ; #pragma interrupt_handler TOF_handler() 000C ; 000C ; void TOF_handler(void) { 000C ; 000C ; // LOCAL VARIABLES 000C ; extern unsigned long int time_tick; 000C ; 000C ; // acknowledge the interrupt, incriment global time_tick 000C ; TFLG2 = 0x80; 000C C680 ldab #128 000E 7B008F stab 0x8f 0011 ; time_tick++; 0011 CD0000 ldy #_time_tick 0014 1802401C movw 0,y,-4,x 0018 1802421E movw 2,y,-2,x 001C CD005A ldy #L11 001F 18024018 movw 0,y,-8,x 0023 1802421A movw 2,y,-6,x 0027 160000 jsr __ladd 002A CD0000 ldy #_time_tick 002D 18021C40 movw -4,x,0,y 0031 18021E42 movw -2,x,2,y 0035 ; 0035 ; } 0035 L10: 0035 B757 tfr x,s 0037 30 pulx 0038 .dbline 0 ; func end 0038 0B rti 0039 _TC7_handler:: 0039 ; 0039 ; 0039 ; 0039 ; #pragma interrupt_handler TC7_handler() 0039 ; 0039 ; void TC7_handler(void) {} 0039 L12: 0039 .dbline 0 ; func end 0039 0B rti 003A _TC6_handler:: 003A ; 003A ; 003A ; 003A ; #pragma interrupt_handler TC6_handler() 003A ; 003A ; void TC6_handler(void) {} 003A L13: 003A .dbline 0 ; func end 003A 0B rti 003B _TC5_handler:: 003B ; 003B ; 003B ; 003B ; #pragma interrupt_handler TC5_handler() 003B ; 003B ; void TC5_handler(void) {} 003B L14: 003B .dbline 0 ; func end 003B 0B rti 003C _TC4_handler:: 003C ; 003C ; 003C ; 003C ; #pragma interrupt_handler TC4_handler() 003C ; 003C ; void TC4_handler(void) {} 003C L15: 003C .dbline 0 ; func end 003C 0B rti 003D _TC3_handler:: 003D ; 003D ; 003D ; 003D ; #pragma interrupt_handler TC3_handler() 003D ; 003D ; void TC3_handler(void) {} 003D L16: 003D .dbline 0 ; func end 003D 0B rti 003E _TC2_handler:: 003E ; 003E ; 003E ; 003E ; #pragma interrupt_handler TC2_handler() 003E ; 003E ; void TC2_handler(void) {} 003E L17: 003E .dbline 0 ; func end 003E 0B rti 003F _TC1_handler:: 003F ; 003F ; 003F ; 003F ; #pragma interrupt_handler TC1_handler() 003F ; 003F ; void TC1_handler(void) {} 003F L18: 003F .dbline 0 ; func end 003F 0B rti 0040 _TC0_handler:: 0040 ; 0040 ; 0040 ; 0040 ; #pragma interrupt_handler TC0_handler() 0040 ; 0040 ; void TC0_handler(void) {} 0040 L19: 0040 .dbline 0 ; func end 0040 0B rti 0041 _IRQ_handler:: 0041 ; 0041 ; 0041 ; 0041 ; #pragma interrupt_handler IRQ_handler() 0041 ; 0041 ; void IRQ_handler(void) {} 0041 L20: 0041 .dbline 0 ; func end 0041 0B rti 0042 _XIRQ_handler:: 0042 ; 0042 ; 0042 ; 0042 ; #pragma interrupt_handler XIRQ_handler() 0042 ; 0042 ; void XIRQ_handler(void) {} 0042 L21: 0042 .dbline 0 ; func end 0042 0B rti 0043 _SWI_handler:: 0043 ; 0043 ; 0043 ; 0043 ; #pragma interrupt_handler SWI_handler() 0043 ; 0043 ; void SWI_handler(void) {} 0043 L22: 0043 .dbline 0 ; func end 0043 0B rti 0044 _COP_handler:: 0044 ; 0044 ; 0044 ; 0044 ; #pragma interrupt_handler COP_handler() 0044 ; 0044 ; void COP_handler(void) { 0044 ; 0044 ; puts("COP RESET!"); 0044 CC004F ldd #L24 0047 160000 jsr _puts 004A ; _start(); 004A 160000 jsr __start 004D ; 004D ; } 004D L23: 004D .dbline 0 ; func end 004D 0B rti 004E _CLM_handler:: 004E ; 004E ; 004E ; 004E ; #pragma interrupt_handler CLM_handler() 004E ; 004E ; void CLM_handler(void) {} 004E L25: 004E .dbline 0 ; func end 004E 0B rti 004F L24: 004F 434F502052455345542100 .byte 'C,'O,'P,32,'R,'E,'S,'E,'T,33,0 005A L11: 005A 00000001 .word 0,1