⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nor.asm

📁 完整的方案
💻 ASM
字号:
DSLNormal:
XYDNormal:
         R1=64
         [_RxErrCnt]=R1
         R1=[P_INT_Mask]
         R1|=C_IRQ6_TMB1               // Bit1
         [R_InterruptStatus]=R1
         [P_INT_Ctrl]=R1
         IRQ ON
.ifndef  TTTEMP
         R1=[_BookMark]
         TEST R1, XYDBookBit
         JNE XYDNormal0
         PC=DSLNormal0
XYDNormal0:
         CALL ClearWatchDog
         R1=[_ErrType]
         JE XYDNormal1
         PC=DealSysError
XYDNormal1:
         R1=[_RxErrCnt]
         JNE XYDNormal1_
         R1=ErrPenNoFunction
         [_ErrType]=R1
         PC=DealSysError
XYDNormal1_:
         R1=[_SysFlagA]
         TEST R1, CoordBit
         JNE XYDNormal2

XYDNormalRx:
         CALL ComRx
         CMP R1, 0
         JNE XYDNormal2
         R1=32
         [_RxErrCnt]=R1
         PC=XYDNormal4


XYDNormal2:
         R1=[_SysFlagA]
         TEST R1, KeyBit
         JE XYDNormal3
         R1&=KeyBit_
         [_SysFlagA]=R1
         TEST R1, UnitOffBit
         JNE XYDNormal3
         R1|=UnitOffBit
         [_SysFlagA]=R1
         CALL SoundAllStop
         R1=[_UnitOffSound]
         CALL PlaySoundGroup

XYDNormal3:
         R1=[_SysFlagA]
         TEST R1, CoordBit
         JE XYDNormal4
         R1&=CoordBit_
         [_SysFlagA]=R1
         TEST R1, UnitOffBit
         JNE  XYDNormal4
         CALL DealCoord

XYDNormal4:
         CALL ComRD
         R1=[_PrevDelayTime]
         JE XYDNormal5
         PC=XYDNormal0

XYDNormal5:
         R1=[_SacmStatus]
         JE XYDNormal6
         CALL _ServiceLoop
         PC=XYDNormal0

XYDNormal6:
XYDNormal6_:
         R1=[_SysFlagA]
         TEST R1, PlayIndexBit
         JE XYDNormal7
         R1&=PlayIndexBit_
         [_SysFlagA]=R1
         R1=[_Index]
         CALL _PlaySound
         PC=XYDNormal0

XYDNormal7:
         R1=[_InsMode]
         JE XYDNormal8
         CMP R1, 2
         JA XYDNormal7E
         JNE XYDNormalInsSound
XYDNormalInsSoundGroup:
         CALL GetInsPlayIndex
         CMP R1, 0
         JE XYDNormal7E
         R1=[_Index]
         CALL _PlaySound
         PC=XYDNormal0
XYDNormalInsSound:
         R1=[_Index]
         CALL _PlaySound
XYDNormal7E:
         R1=0
         [_InsMode]=R1
         PC=XYDNormal0

XYDNormal8:
         R1=[_SysFlagA]
         TEST R1, ReadyPlayBit
         JE XYDNormal9
         R1&=ReadyPlayBit_
         [_SysFlagA]=R1
         R2=[_SoundMode]        
         TEST R2,0xfffc
         JNE XYDNormal8E
         R1=[_Index]
         R2+=ReadyPlayTab
         PC=[R2]
XYDNormal8E:
         PC=XYDNormal0

XYDNormal9:
         R1=[_InPlayBlock]
         JE XYDNormalA
         CALL GetPlayIndex
         CMP R1, 0
         JE XYDNormal9E
         R1=[_Index]
         CALL _PlaySound
XYDNormal9E:
         PC=XYDNormal0

XYDNormalA:
XYDNormalB:
XYDNormalC:
         R1=[_SysFlagA]
         TEST R1, UnitOffBit
         JE XYDNormalD
         PC=UnitOff

XYDNormalD:
         CALL GetRecPlayBlock
         CMP R1, 0
         JE XYDNormalE
         PC=XYDNormal0

XYDNormalE:
         R1=[_Statu]
         TEST R1, DynamicBit
         JE XYDNormalF
         CALL DTStop
XYDNormalF:
         PC=XYDNormal0


ReadyPlayTab:
         .DW  ReadyPlayNormalSoundMode
         .DW  ReadyPlaySoundGroupMode
         .DW  ReadyPlayRandomSoundMode
         .DW  ReadyPlayRandomSoundGroupMode
ReadyPlayNormalSoundMode:
         CALL _PlaySound
         JMP ReadyPlayEnd
ReadyPlaySoundGroupMode:
         CALL PlaySoundGroup
         JMP ReadyPlayEnd
ReadyPlayRandomSoundMode:
         CALL GetRandomSoundIndex
         R1=[_Index]
         CALL _PlaySound
         JMP ReadyPlayEnd
ReadyPlayRandomSoundGroupMode:
         CALL PlayRamdomSoundGroup
ReadyPlayEnd:
         PC=XYDNormal0



DSLNormal0:
         CALL ClearWatchDog
         R1=[_SysFlagA]
         TEST R1,UnitOffBit
         JE DSLNormal1
         PC=DSLNormal5
//         R1=[_ErrType]
//         JE DSLNormal1
//         PC=DealSysError
DSLNormal1:
         R1=[_RxErrCnt]
         JNE DSLNormal1_
         R1=ErrPenNoFunction
         [_ErrType]=R1
         PC=DealSysError
DSLNormal1_:
         R1=[_SysFlagA]
         TEST R1, CoordBit
         JNE DSLNormal2
DSLNormalRx:
         CALL ComRx
         CMP R1, 0
         JNE DSLNormal2
         R1=32
         [_RxErrCnt]=R1
         PC=DSLNormal4

DSLNormal2:
         R1=[_SysFlagA]
         TEST R1, KeyBit
         JE  DSLNormal3
         R1&=KeyBit_
         [_SysFlagA]=R1
         TEST R1, UnitOffBit
         JNE DSLNormal3
         R1|=UnitOffBit
         [_SysFlagA]=R1

         CALL SoundAllStop
         R1=[_EditFlag]
         R1&=InEditBit_
         [_EditFlag]=R1
         R1=1
         CALL PlayDSLSys
         PC=DSLNormal0

DSLNormal3:
         R1=[_SysFlagA]
         TEST R1, CoordBit
         JE DSLNormal4
         R1&=CoordBit_
         [_SysFlagA]=R1
         TEST R1, UnitOffBit
         JNE  DSLNormal4
         R1=[_PrintFlag]
         JE DSLNormal3_
         CALL PrintCoord
DSLNormal3_:
         CALL DealCoord

DSLNormal4:
         CALL ComRD

DSLNormal5:
         R1=[_PrevDelayTime]
         JE DSLNormal5_
         PC=DSLNormal0

DSLNormal5_:
         R1=[_SacmStatus]
         JE DSLNormal6
         CALL _ServiceLoop
         PC=DSLNormal0

DSLNormal6:
         R1=[_BackDelayTime]
         JE DSLNormal7
         [_PrevDelayTime]=R1
         R1=0
         [_BackDelayTime]=R1
         PC=DSLNormal0

DSLNormal7:
         R1=[_InPlayBlock]
         JE DSLNormal8
         CALL GetDSLIndex
         CALL _PlaySound
         PC=DSLNormal0

DSLNormal8:
         R1=[_SysFlagA]
         TEST R1, UnitOffBit
         JE DSLNormal9
         PC=UnitOff


DSLNormal9:
         R1=[_EditFlag]
         TEST R1, InEditBit
         JE DSLNormalA
         CALL DSLEdit
         PC=DSLNormal0

DSLNormalA:
         R1=[_SeriousFlag]
         TEST R1,SeriousSelectionBit
         JE DSLNormalB
         CALL GetDSLQuestion
         PC=DSLNormalF
        
DSLNormalB:
         R1=[_IntFileIndex]
         JE DSLNormalC
         R1-=1
         R3=[_No7Addr]
         R4=[_No7Bank]
         R1=R1 LSL 1
         CALL NandAddrAdd
         CALL ReadNandWord
         CMP R1, 0xffff
         JNE DSLNormalB_
         R1=0
         [_IntFileIndex]=R1
         JMP DSLNormalC
DSLNormalB_:
         [_PlayBlock]=R1
         R1=0
         [_SeriousCount]=R1
         CALL PlayDSLSoundGroup
         R1=[_IntFileIndex]
         R1+=1
         [_IntFileIndex]=R1
         PC=DSLNormal0

DSLNormalC:
         R1=[_SysFlagA]
         TEST R1, UnitOffBit
         JE DSLNormalD
         PC=UnitOff

DSLNormalD:
         CALL DSLRec
         CMP R1, 0
         JE DSLNormalE
         PC=DSLNormal0

DSLNormalE:
         R1=[_Statu]
         TEST R1, DynamicBit
         JE DSLNormalF
         CALL DTStop

DSLNormalF:
         R1=[_AutoOffTime]
         CMP R1, Set20s
         JB DSLNormalEnd
         R1=0
         [_AutoOffTime]=R1
         R1=[_TimeCtrCount]
         R1+=1
         [_TimeCtrCount]=R1
         R2=[_SeriousFlag]
         TEST R2,SeriousSelectionBit
         JE DSLNormalHint
DSLQuestionHint:
         CMP R1, 4
         JNE DSLQuestionHint_
         R1=0
         [_TimeCtrCount]=R1
         CALL GetDSLQuestionFinish
DSLQuestionHint_:
         CALL GetDSLQuestion4
         PC=DSLNormalEnd
DSLNormalHint:
         CMP R1, 6
         JNE DSLNormalHint_
         CALL SoundAllStop
         R1=[_SysFlagA]
         R1|=UnitOffBit
         [_SysFlagA]=R1
         R1=1
         CALL PlayDSLSys
         PC=DSLNormalEnd
DSLNormalHint_:
         R1=6
         CALL PlayDSLSys
         PC=DSLNormalEnd

DSLNormalEnd:
         PC=DSLNormal0
.endif
         PC=DSLNormal

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -