📄 dptx.asm
字号:
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -