www.pudn.com > bak22.rar > dptx.asm, change:2006-05-30,size:5241b


EvenOdd: 
         R4&=0x7ffc 
         R3=13 
         R2=R4 
EvenOdd0: 
         TEST R2, BitE 
         JNE EvenOdd1 
         R4^=Bit0 
EvenOdd1: 
         R2=R2 LSL 1 
         R3-=1 
         JNE EvenOdd0 
         TEST R4, Bit0 
         JNE EvenOddE 
         R4|=Bit1 
EvenOddE: 
         RETF 
 
 
DTDown: 
         R3=Bit7 
         PC=DTStatu_ 
DTStop: 
         R1=[_Statu] 
         R1&=DynamicBit_ 
         [_Statu]=R1 
         JMP DTStatu 
DTNormalPlayStatu: 
         R1=[_Statu] 
         R1&=StatuMask 
         R1|=DTNormalPlayBit 
         R1|=DynamicBit 
         [_Statu]=R1 
         JMP DTStatu 
DTRecStatu: 
         R1=[_Statu] 
         R1&=StatuMask 
         R1|=DTRecBit 
         R1|=DynamicBit 
         [_Statu]=R1 
         JMP DTStatu 
DTSourceStatu: 
         R1=[_Statu] 
         R1&=StatuMask 
         R1|=DTSourceBit 
         R1|=DynamicBit 
         [_Statu]=R1 
         JMP DTStatu 
DTPlayRecStatu: 
         R1=[_Statu] 
         R1&=StatuMask 
         R1|=DTPlayRecBit 
         R1|=DynamicBit 
         [_Statu]=R1 
DTStatu: 
         R3=R1&Bit3_ 
         R1=[_EditFlag] 
         TEST R1, HaveEditBit 
         JE DTStatu0 
         R3|=Bit3 
DTStatu0: 
         R1=[_SeriousFlag] 
         TEST R1, SeriousSelectionBit 
         JE  DTStatu1 
         R3|=Bit4 
         JMP DTStatu_ 
DTStatu1: 
         R1=[_SeriousFlag] 
         TEST R1,ExplainBit 
         JE DTStatu2 
         R3|=Bit5 
         JMP DTStatu_ 
DTStatu2: 
         R1=[_IntFileIndex] 
         JE DTStatu3 
         R3|=Bit4|Bit5 
         JMP DTStatu_ 
DTStatu3: 
//         R3&=Bit3_ 
//         R1=[_EditFlag] 
//         TEST R1, HaveEditBit 
//         JE DTStatu4 
//         R3|=Bit3 
DTStatu4: 
         R1=[_EditFlag] 
         TEST R1, InEditBit 
         JE DTStatu5 
         R3|=Bit6 
         JMP DTStatu_ 
DTStatu5: 
         TEST R1, EditModeBit 
         JE DTStatu_ 
         R3|=Bit6|Bit4 
DTStatu_: 
         R4=R3 LSL 4 
         R4|=DTStatuHead 
         PC=DTBody 
 
DTRepeatTime: 
         R4=[_MaxRepeatTime] 
         R4=R4 LSL 4 
         R4|=DTRepeatTimeHead 
         JMP DTBody 
 
DTBook: 
         R4=[_HowManyBook] 
         R4=R4 LSL 4 
         R4|=DTBookHead 
         JMP DTBody 
 
DTMode: 
         R4=[_PlayMode] 
         JE DTMode_ 
         R4-=1 
DTMode_: 
         R4=R4 LSL 4 
         R4|=DTModeHead 
         JMP DTBody 
 
DTPage: 
         R4=[_Page] 
         R2=[_Attrib] 
         TEST R2, PageD2Bit 
         JE DTPage_ 
         CMP R4, 0 
         JE DTPage_ 
         R4=R4 LSL 1 
         R4-=1 
         TEST R2, PageA2Bit 
         JE DTPage_ 
         R4-=1 
         JNE DTPage_ 
         R4=1 
DTPage_: 
         R4=R4 LSL 2 
         R4|=DTPageHead 
         JMP DTBody 
 
DTVM: 
         R4=[_PageMaxMode] 
         R4=R4 LSL 4 
         R1=[_SoundVolume] 
         R1&=0x0f 
         R4|=R1 
         R4=R4 LSL 4 
         R4|=DTVMHead 
DTBody: 
         CALL EvenOdd 
         CALL PrintDTData 
 
         R1=[P_IOA_Data] 
         TEST R1, DClkB 
         JNE DTBodyDo 
         R1=dDTBodyBusy 
 
         PC=DTBodyErr 
DTBodyDo: 
         R1=[P_IOA_Buffer] 
         R1&=DAckB_ 
         [P_IOA_Buffer]=R1             //  Tx data & Ack=0 
         R1=1101011101111100B          //  port A 
         R1=[P_IOA_Dir] 
         R1|=DDatB 
         [P_IOA_Dir]=R1 
         R1=[P_IOA_Buffer] 
         R1|=DDatB 
         [P_IOA_Buffer]=R1 
 
         R3=16 
         R1=DTxWait 
DTBodyWait: 
         NOP 
         NOP 
         NOP 
         R1-=1 
         JNE DTBodyWait_ 
         R1=dDTAckErr 
         JMP DTBodyErr 
DTBodyWait_: 
         R2=[P_IOA_Data] 
         TEST R2, DClkB 
         JNE DTBodyWait 
         R2=[P_IOA_Data] 
         TEST R2, DClkB 
         JNE DTBodyWait 
         JMP DTBodyWH 
DTBody0: 
         R1=[P_IOA_Buffer] 
         TEST R4, BitF 
         JNE  DTBodyHi 
DTBodyLo: 
         R1&=DDatB_ 
         JMP DTBody_ 
DTBodyHi: 
         R1|=DDatB 
DTBody_: 
         R1&=DAckB_ 
         [P_IOA_Buffer]=R1             //  Tx data & Ack=0 
DTBodyWL: 
         R1=DTDly 
DTBodyWL0: 
         R1-=1 
         JNE DTBodyWL_ 
         R1=dDTxWaitLoErr 
         JMP DTBodyErr 
DTBodyWL_: 
         R2=[P_IOA_Data] 
         TEST R2, DClkB 
         JNE DTBodyWL0 
         R2=[P_IOA_Data] 
         TEST R2, DClkB 
         JNE DTBodyWL0 
 
DTBodyWH: 
         R2=[P_IOA_Buffer] 
         R2|=DAckB 
         [P_IOA_Buffer]=R2             //  Ack=1 
         R1=DTDly 
DTBodyWH0: 
         R1-=1 
         JNE DTBodyWH_ 
         R1=dDTxWaitHiErr 
         JMP DTBodyErr 
DTBodyWH_: 
         R2=[P_IOA_Data] 
         TEST R2, DClkB 
         JE DTBodyWH0 
         R2=[P_IOA_Data] 
         TEST R2, DClkB 
         JE DTBodyWH0 
DTBody2: 
         R4=R4 LSL 1 
         R3-=1 
         CMP R3, 0 
         JNE DTBody0 
DTBodyE: 
         R1=0 
         JMP DTBodyEnd 
DTBodyErr: 
         R4=R1 
         CALL PrintDTErr 
         R1=R4 
DTBodyEnd: 
         R4=R1 
         R1=[P_IOA_Dir] 
         R1&=DDatB_ 
         R1=0101011101111100B          // port A 
         [P_IOA_Dir]=R1 
         R1=[P_IOA_Buffer] 
         R1|=DAckB 
         [P_IOA_Buffer]=R1 
         CALL Delay10ms 
         R1=R4 
         RETF