www.pudn.com > bak22.rar > ISR.ASM, change:2006-05-30,size:3535b


.public _BREAK  
.public _FIQ  
.public _IRQ0  
.public _IRQ1  
.public _IRQ2  
.public _IRQ3  
.public _IRQ4  
.public _IRQ5  
.public _IRQ6  
.public _IRQ7  
 
.TEXT 
_FIQ: 
         PUSH R1,R5 TO [SP] 
         R1 = [_SacmStatus] 
         JZ FIQ_End 
         R1-=2 
         JCC FIQ_Play 
         JZ FIQ_Playback 
         CMP R1, 1 
         JNZ FIQ_End 
FIQ_Record:       
         .ifdef MOUDLE_DVR1600 
         CALL F_ISR_Service_SACM_DVR1600      // for record 
         .endif 
         JMP FIQ_End 
FIQ_Play: 
         R1=[_PlayType] 
         R1+=FIQ_Play_Branch 
         PC=[R1] 
FIQ_PlayMS01:         
         .ifdef MOUDLE_MS01 
         CALL F_ISR_Service_SACM_MS01 
         .endif 
         JMP FIQ_End 
FIQ_Playback:  
FIQ_PlayA1600: 
         .ifdef MOUDLE_DVR1600 
         CALL F_ISR_Service_SACM_DVR1600 
         .endif 
         JMP FIQ_End 
FIQ_PlayS200: 
         .ifdef MOUDLE_S200 
         CALL F_ISR_Service_SACM_S200 
         .endif 
         JMP FIQ_End 
FIQ_PlayS530: 
         .ifdef MOUDLE_S530 
         CALL F_ISR_Service_SACM_S530 
         .endif 
         JMP FIQ_End 
FIQ_PlayS480: 
FIQ_PlayS720: 
         .ifdef MOUDLE_S480 
         CALL F_ISR_Service_SACM_S480 
         .endif 
         JMP FIQ_End 
FIQ_PlayA2000: 
FIQ_PlayMS02: 
FIQ_End: 
         R1=C_FIQ_TMB 
         [P_INT_Clear] = R1 
         POP R1,R5 FROM [sp] 
         RETI 
 
FIQ_Play_Branch: 
         .DW FIQ_PlayA2000 
         .DW FIQ_PlayS480 
         .DW FIQ_PlayS720 
         .DW FIQ_PlayMS01 
         .DW FIQ_PlayA1600 
         .DW FIQ_PlayMS02 
         .DW FIQ_PlayS200 
         .DW FIQ_PlayS530 
 
_IRQ2:         
         PUSH R1,R5 TO [SP] 
         .ifdef MOUDLE_MS01 
         R1 = [_SacmStatus] 
         JZ IRQ2_Jmp_End 
         CALL F_IRQ2_Service_SACM_MS01                    //2ch drum sound 
IRQ2_Jmp_End: 
         .endif 
         R1 = C_IRQ2_TMB 
         [P_INT_Clear] = R1 
         POP R1,R5 FROM [SP] 
         RETI 
 
// --------------------------------------------------------------------------- 
_IRQ4:         
         PUSH R1,R5 TO [SP] 
         .ifdef MOUDLE_MS01 
         R1 = [_SacmStatus] 
         JZ IRQ4_Jmp_End 
         CALL F_IRQ4_Service_SACM_MS01;  // SONG Tempo control 
IRQ4_Jmp_End: 
         .endif 
         R1 = C_IRQ4_1KHz; 
         [P_INT_Clear] = R1 
         POP R1,R5 FROM [SP] 
         RETI 
// --------------------------------------------------------------------------- 
_IRQ6:         
         PUSH R1 TO [SP] 
         R1 = C_IRQ6_TMB1 
         [P_INT_Clear] = R1 
 
         R1=[_SetFlag] 
         TEST R1, DiPlayTimeBit 
         JNE IRQ61 
 
         R1=[_PlayTotalTime] 
         R1+=1 
         [_PlayTotalTime]=R1 
         JNE IRQ60 
 
         R1=0xffff 
         [_PlayTotalTime]=R1 
IRQ60: 
         R1=[_PrevDelayTime] 
         JE IRQ61 
         R1-=1 
         [_PrevDelayTime]=R1 
IRQ61: 
//         R1=[_LowVEnTime] 
//         JE IRQ62 
//         R1-=1 
//         [_LowVEnTime]=R1 
IRQ62: 
         R1=[_AutoOffRequire] 
         JNE IRQ63 
         R1=[_SacmStatus] 
         JNE IRQ63 
         R1=[_AutoOffTime] 
         R1+=1 
         [_AutoOffTime]=R1 
         JE IRQ63 
         CMP R1, [_AutoOffTimeSet] 
         JNE IRQ63 
         [_AutoOffRequire]=R1 
 
IRQ63: 
         R1=[_RxErrCnt] 
         JE IRQ6E 
         R1-=1 
         [_RxErrCnt]=R1 
IRQ6E: 
         POP R1 FROM [SP] 
         RETI 
 
_BREAK:         
_IRQ0:         
_IRQ1:         
_IRQ3:         
_IRQ5:         
_IRQ7:         
         RETI