www.pudn.com > bak22.rar > dsl.asm, change:2007-06-12,size:14138b


dEditFinish:            .EQU 1 
dEditPlayGiven:         .EQU 2 
dEditHint2:             .EQU 3 
dEditRecord:            .EQU 4 
dEditHint:              .EQU 5 
 
PlayDSLSoundGroup: 
         R1=[_PlayBlock] 
         JE PlayDSLSoundGroupEnd 
         R4=[_SoundGroupBank] 
         R3=[_SoundGroupAddr] 
         R1-=1 
         R1=R1 LSL 1 
         CALL NandAddrAdd 
         CALL ReadNandWord 
         R4=[_SoundGroupBank] 
         R3=[_SoundGroupAddr] 
         CALL NandAddrAdd        
         [_PlayAddr]=R3 
         [_PlayBank]=R4 
         CALL SearchByteFF 
         R3=[_PlayAddr] 
         R4=[_PlayBank] 
         TEST R5, Bit0 
         JNE PlayDSLSoundGroup2 
PlayDSLSoundGroup1: 
         PC=GetDSLBlock_ 
PlayDSLSoundGroup2: 
         PC=GetDSLBlock 
PlayDSLSoundGroupEnd: 
         RETF 
 
PlayDSLSys: 
         R2=R1 LSL 1 
         R1+=R2 
         R1+=0x53 
         R3=R1 
         R4=0 
         CALL AddBookAddr 
         CALL ReadNandAddr 
         R4&=0xff 
         CALL AddBookAddr 
GetDSLBlock: 
         [_PlayAddr]=R3 
         [_PlayBank]=R4 
         R2=_CommBuf 
         R5=0x40 
         CALL ReadNandByteBuf 
         CALL PrintDSLCommBlock 
         R3=[_PlayAddr] 
         R4=[_PlayBank] 
         CALL ReadNandByte 
         CMP R1, 0 
         JE GetDSLBlockEnd 
         R2=[_SeriousCount] 
         CALL GetMod 
         R1=R1 LSL 1 
         R1+=1 
         CALL NandAddrAdd 
         CALL ReadNandWord 
         R3=[_PlayAddr] 
         R4=[_PlayBank] 
         CALL NandAddrAdd 
GetDSLBlock_: 
         [_PlayAddr]=R3 
         [_PlayBank]=R4 
         R1=1 
         [_InPlayBlock]=R1 
GetDSLBlockEnd: 
         RETF 
 
GetDSLIndex: 
         R1=0 
         [_FileOk]=R1 
         R3=[_PlayAddr] 
         R4=[_PlayBank] 
         [_NandAddrL]=R3 
         [_NandAddrH]=R4 
         CALL SetSearchingAddr 
         R5=R3|0xfe00 
         JMP GetDSLIndex1 
GetDSLIndex0: 
         R5+=1 
         JCC GetDSLIndex1 
         CALL ChgSearchingAddr 
GetDSLIndex1: 
         RBYTE_ 
         [_Tmp1]=R1 
         R5+=1 
         JCC GetDSLIndex2 
         CALL ChgSearchingAddr 
GetDSLIndex2: 
         RBYTE_ 
         [_Tmp3]=R1 
         R1 = R1 LSL 4 
         R1 = R1 LSL 4 
         R1|=[_Tmp1] 
         [_Tmp2]=R1 
         R1=[_Tmp1] 
         CMP R1, 0xc8 
         JNB GetDSLIndexSpc 
         PC=GetDSLIndexNor 
GetDSLIndexSpc: 
         CMP R1, 0xff 
         JNE GetDSLIndexSpc_1 
         PC=GetDSLIndexFinish 
GetDSLIndexSpc_1: 
         CMP R1, 0xc8 
         JNE GetDSLIndexSpc_2 
GetDSLIndexSpcC8: 
         R1=[_Tmp3] 
         R1=R1 LSR 1 
         [_BackDelayTime]=R1 
         PC=GetDSLIndex0 
GetDSLIndexSpc_2: 
         CMP R1, 0xce 
         JNE GetDSLIndexSpc_3 
GetDSLIndexSpcCE: 
         PC=GetDSLIndexFinish 
GetDSLIndexSpc_3: 
         CMP R1, 0xca 
         JNE GetDSLIndexSpc_4 
GetDSLIndexSpcCA: 
         R1=[_Tmp3] 
         TEST R1, Bit1 
         JNE GetDSLIndexSpcCA2 
GetDSLIndexSpcCA1: 
         R1=[_Attrib] 
         R1&=DSLGroupBit_ 
         [_Attrib]=R1 
         JMP GetDSLIndexSpc_4 
GetDSLIndexSpcCA2: 
         R1=[_Attrib] 
         R1|=DSLGroupBit 
         [_Attrib]=R1 
GetDSLIndexSpc_4: 
         PC=GetDSLIndex0 
 
GetDSLIndexNor: 
         R1=[_FileOk] 
         CMP R1,0 
         JNE GetDSLIndexOk 
         R1=[_Tmp2] 
         [_Index]=R1 
         R1=1 
         [_FileOk]=R1 
         PC=GetDSLIndex0 
GetDSLIndexOk: 
         R3=[_NandAddrL] 
         R4=[_NandAddrH] 
         R3&=0xfe00 
         R5&=0x1ff 
         R3|=R5   
         R1=1      
         CALL NandAddrSub 
         [_PlayAddr]=R3 
         [_PlayBank]=R4 
         JMP GetDSLIndexEnd 
GetDSLIndexFinish:   
         R1=0 
         [_InPlayBlock]=R1 
         R1=[_SeriousFlag] 
         R1&=ExplainBit_ 
         [_SeriousFlag]=R1 
GetDSLIndexEnd: 
         DATAOUT 
         R1=[_Index] 
         RETF 
 
 
GetDSLQuestion: 
         R1=[_QuestionFlag] 
         TEST R1, HaveSelectionQuestionBit 
         JE GetDSLQuestion1 
         R1&=QuestionDiCoordBit_ 
         [_QuestionFlag]=R1 
         RETF 
GetDSLQuestion1:          
         R1=[_QuestionIndex] 
         CMP R1, [_QuestionNumber] 
         JNE GetDSLQuestion2 
GetDSLQuestionFinish: 
         R1=[_SeriousFlag] 
         R1&=SeriousSelectionBit_ 
         [_SeriousFlag]=R1 
         R3=[_No6Addr] 
         R4=[_No6Bank] 
         PC=GetDSLBlock_ 
 
GetDSLQuestion2: 
         R1+=1 
         [_QuestionIndex]=R1 
         R1=[_SelectionSerious] 
         R1+=1 
         CMP R1, [_QuestionNumber] 
         JNE GetDSLQuestion3 
         R1=0 
GetDSLQuestion3: 
 
         [_SelectionSerious]=R1 
         R1=3 
         [_ErrTime]=R1 
GetDSLQuestion4: 
         R1=[_QuestionFlag] 
         R1|=HaveSelectionQuestionBit|QuestionDiCoordBit 
         [_QuestionFlag]=R1 
 
         R3=[_No3Addr] 
         R4=[_No3Bank] 
         R1=8 
         CALL NandAddrAdd 
         CALL ReadNandWord 
         R3=[_No3Addr] 
         R4=[_No3Bank] 
         CALL NandAddrAdd         
         CALL SkipWordFF 
         CALL NandAddrInc 
         [_PlayAddr]=R3 
         [_PlayBank]=R4 
            //; R1=0 
            //; [_SelectionSerious]=R1 
            //; CALL TxChg 
            //; R1=[_SelectionSerious] 
            //; CALL TxHex 
 
         R1=[_SelectionSerious] 
         R1=R1 LSL 1 
         R1+=1 
         CALL NandAddrAdd 
            //; R1=R4 
            //; CALL TxWord 
            //; R1=R3 
            //; CALL TxWord 
         CALL ReadNandWord 
         R3=[_PlayAddr] 
         R4=[_PlayBank] 
         CALL NandAddrAdd 
            //; R1=R4 
            //; CALL TxWord 
            //; R1=R3 
            //; CALL TxWord 
 
         R1=9 
         CALL NandAddrAdd 
         [_QuestionAddr]=R3 
         [_QuestionBank]=R4 
         R1=9 
         CALL NandAddrSub 
            // R1=R4 
            //; CALL TxWord 
            //; R1=R3 
            //; CALL TxWord 
         CALL ReadNandWord 
         CALL NandAddrAdd 
            //;R1=R4 
            //;CALL TxWord 
            //;R1=R3 
            //;CALL TxWord 
         CALL GetDSLBlock_ 
            //;R1=R4 
            //;CALL TxWord 
            //;R1=R3 
            //;CALL TxWord 
 
            //;R1=[_QuestionBank] 
            //;CALL TxWord 
            //;R1=[_QuestionAddr] 
            //;CALL TxWord 
         RETF 
 
 
GetRecPlayBlock: 
DSLRec: 
         R1=[_RecordFlag] 
         TEST R1, InRecModeBit 
         JNE DSLRec1 
DSLRecNo: 
DSLRecEnd: 
         R1=0 
         RETF 
DSLRec1: 
         TEST R1, ToRecordBit 
         JNE DSLRecToRecord 
         TEST R1, ToPlayRecordBit 
         JNE DSLRecPlayRecord 
         TEST R1, ToPlaySoundBit 
         JNE DSLRecPlaySound 
 
         TEST R1, InPlayRecBit 
         JNE DSLRecPlaySound 
 
         TEST R1, InPlaySoundBit 
         JE DSLRecEnd 
         R2=[_BookMark] 
         TEST R2, XYDBookBit 
         JNE DSLRecPlaySoundXYD 
 
 
DSLRecPlayRecord: 
         TEST R1, HadRecBit 
         JE DSLRecPlaySound 
         R1&=RecAllBit_ 
         R1|=InPlayBit|InPlayRecBit 
         [_RecordFlag]=R1 
         CALL DTPlayRecStatu 
         R1 = [_EndAddr] 
         [_PlayStartAddr] = R1 
         R1 = [_EndBank] 
         [_PlayStartBank] = R1 
         CALL _RecPlay 
         R1=dPlayRecord 
         RETF 
 
DSLRecToRecord: 
         R1&=RecAllBit_ 
         R1|=HadRecBit 
         [_RecordFlag]=R1 
         CALL NormalRecord 
         R1=dRecord 
         RETF 
 
DSLRecPlaySound: 
         R2=[_RepeatTime] 
         JE DSLRecPlaySound_ 
         R2-=1 
         [_RepeatTime]=R2 
         JNE DSLRecPlaySound_ 
         R1&=InRecModeBit_ 
         [_RecordFlag]=R1 
         JMP DSLRecEnd 
DSLRecPlaySound_: 
         TEST R1, HadSoundBit 
         JE DSLRecPlayRecord 
         R1&=RecAllBit_ 
         R1|=InPlayBit|InPlaySoundBit 
         [_RecordFlag]=R1 
         CALL DTSourceStatu 
         R1=[_BookMark] 
         TEST R1, XYDBookBit 
         JE DSLRecPlaySoundDSL 
DSLRecPlaySoundXYDOrg: 
         R1=[_RecordOrgFileNum] 
         [_PlayFileNum]=R1 
DSLRecPlaySoundXYD: 
         R2=[_PlayFileNum] 
         CMP R2, [_RecordFileNum] 
         JNE DSLRecPlaySoundXYD_ 
         R1=[_RecordFlag]          
         PC=DSLRecPlayRecord 
DSLRecPlaySoundXYD_: 
         R1=R2+1 
         CMP R1, RegistRecNumMax 
         JNE DSLRecPlaySoundXYD__ 
         R1=0 
DSLRecPlaySoundXYD__: 
         [_PlayFileNum]=R1 
         R2+=_RecSoundIndexBuf 
         R1=[R2] 
         [_Index]=R1 
         R1=[_SysFlagA] 
         R1|=PlayIndexBit 
         [_SysFlagA]=R1 
         R1=dPlaySound 
         RETF 
 
DSLRecPlaySoundDSL: 
         R3=[_RecRegAddr] 
         R4=[_RecRegBank] 
         CALL GetDSLBlock_ 
         R1=dPlaySound 
         RETF 
 
 
DSLEdit: 
         TEST R1, ToHintBit 
         JNE DSLEditHint 
         PC=DSLManuEdit2 
DSLEditHint: 
         R1|=ToEditBit 
         R1&=ToHintBit_ 
         [_EditFlag]=R1 
DSLEditHint_: 
         R3=[_CurrentEditAddr] 
         R4=[_CurrentEditBank] 
         [_RecOrgAddr]=R3 
         [_RecOrgBank]=R4 
         R3+=[_PlayLengthL] 
         R4+=[_PlayLengthH], Carry 
         R3+=[_PlayLengthL] 
         R4+=[_PlayLengthH], Carry 
         [_RecEndAddr]=R3 
         [_RecEndBank]=R4 
         CMP R4, [_NandMaxBank] 
         JCC DSLEditErase 
         PC=DSLEditFinish 
DSLEditErase: 
         R3=[_CurrentEditAddr] 
         R4=[_CurrentEditBank] 
         R3&=0xc000 
DSLEditErase0: 
         R3+=0x4000 
         R4+=0,Carry 
         CMP R4, [_RecEndBank] 
         JA DSLEditHintDo 
         JB DSLEditErase_ 
         CMP R3, [_RecEndAddr] 
         JNB DSLEditHintDo 
DSLEditErase_: 
         CALL EraseCurrentAddrBlock 
         R1|=[_EditBlockNumber] 
         R1+=1 
         [_EditBlockNumber]=R1 
         CALL ClearWatchDog 
         JMP DSLEditErase0 
DSLEditHintDo: 
         R3=[_RecEndAddr] 
         R4=[_RecEndBank] 
         R1=0x200 
         CALL NandAddrSub 
         [_RecEndAddr]=R3 
         [_RecEndBank]=R4 
DSLEditHintEnd: 
         R1=16 
         CALL PlayDSLSys 
         R1=dEditHint 
         RETF 
 
DSLManuEdit2: 
         TEST R1, ToEditBit 
         JE DSLManuEdit3       
DSLEditRecord: 
         R1&=ToEditBit_ 
         R1|=ToRegBit 
         [_EditFlag]=R1 
DSLEditRecord_: 
         CALL PrintEdit 
         CALL _RecStart 
         R1=dEditRecord 
         RETF 
 
DSLManuEdit3: 
         TEST R1, ToPlayGiveEditBit 
         JE DSLManuEdit4 
         R1&=ToPlayGiveEditBit_ 
         R1|=ToHintBit 
         [_EditFlag]=R1 
         PC=DSLEditPlay 
DSLManuEdit4: 
         TEST R1, ToRegBit 
         JNE DSLEditReg 
DSLManuEditEnd: 
         R1=0 
         RETF 
 
DSLEditReg: 
         R1&=ToRegBit_ 
         R1|=HaveEditBit 
         [_EditFlag]=R1 
DSLEditReg_: 
         R3=[_EditOrgAddr] 
         R4=[_EditOrgBank] 
         R1=[_FileIndex] 
         R1=R1 LSL 1 
         CALL NandAddrAdd 
         R5=1 
         R2=_PlayBlock 
         CALL WriteNandWordBuf 
 
         R3=[_EditOrgAddr] 
         R4=[_EditOrgBank] 
         R1=[_HowManyEditBlock] 
         R1=R1 LSL 1 
         CALL NandAddrAdd 
         R1=[_FileIndex] 
         R1=R1 LSL 2 
         CALL NandAddrAdd 
         R2=_CurrentEditAddr 
         R5=2 
         CALL WriteNandWordBuf 
         R3=[_RecEndAddr] 
         R4=[_RecEndBank] 
         R1=0x200 
         CALL NandAddrAdd 
         [_CurrentEditAddr]=R3 
         [_CurrentEditBank]=R4 
         R1=[_FileIndex] 
         R1+=1 
         [_FileIndex]=R1 
         R1=[_EditFlag] 
         TEST R1,AutoEditBit 
         JE DSLEditRegEnd 
DSLEditPlay: 
         R1=0 
         [_PlayLengthL]=R1 
         [_PlayLengthH]=R1 
         R3=[_No7Addr] 
         R4=[_No7Bank] 
         R1=[_FileIndex] 
         R1=R1 LSL 1 
         CALL NandAddrAdd 
         CALL ReadNandWord 
         CMP R1, 0xffff 
         JNE DSLEditPlay_ 
DSLEditFinish: 
         R1=[_EditFlag] 
         R1&=InEditBit_ 
         [_EditFlag]=R1 
         CALL RDKeyPlayEdit3 
         R1=dEditFinish 
         RETF 
DSLEditPlay_: 
         [_PlayBlock]=R1 
         R1=0 
         [_SeriousCount]=R1 
         CALL PlayDSLSoundGroup 
         R1=[_EditFlag] 
         R1|=ToHintBit 
         [_EditFlag]=R1 
         R1=dEditPlayGiven 
         RETF 
DSLEditRegEnd: 
         R1=16 
         CALL PlayDSLSys 
         R1=dEditHint2 
         RETF 
 
 
 
 
EndEdit: 
         R1=[_EditFlag] 
         TEST R1, InEditBit 
         JNE EndEdit_ 
         RETF 
EndEdit_: 
         R3=[_EndAddr] 
         R4=[_EndBank] 
         R4+=1 
         R2=_ContentBuf 
         R5=0x400 
         CALL ReadNandWordBuf 
         R3=[_EndAddr] 
         R4=[_EndBank] 
         R4+=1 
         CALL EraseCurrentAddrBlock 
 
         R3=_ContentBuf+8 
         R3+=[_EditBlockSerious] 
         R2=[_EditBlockNumber] 
         R1=0xfffe 
         R5=[_FileIndex] 
         JE EndEdit2 
         R1=[_Book] 
         R1=R1 LSL 4 
         R1=R1 LSL 4 
         R1=R1 LSL 4 
         R1|=[_Page] 
EndEdit2: 
         [R3++]=R1 
EndEdit20: 
         R2-=1 
         JE EndEdit5 
         R1=0xfffd 
         [R3++]=R1 
         JMP EndEdit20 
 
EndEdit5:                            // marked with 0xfffe 
         R1=[R3] 
         CMP R1, 0xffff 
         JE EndEdit6 
         CMP R1, 0xfffd 
         JCC EndEdit6 
EndEdit5_:                           // marked with 0xfffe 
         R1=0xfffe 
         [R3++]=R1 
         JMP EndEdit5 
 
EndEdit6: 
         R3=[_EndAddr] 
         R4=[_EndBank] 
         R4+=1 
         R2=_ContentBuf 
         R5=0x400 
         CALL WriteNandWordBuf 
         CALL PrintEditReg 
         RETF 
 
CanselDSLEdit: 
         CALL EndEdit 
         R1=[_EditFlag] 
         R1&=InEditBit_&EditModeBit_ 
         [_EditFlag]=R1 
         RETF 
 
CanselDSLQuestion: 
         R1=[_SeriousFlag] 
         R1&=SeriousSelectionBit_ 
         [_SeriousFlag]=R1 
         RETF 
 
CanselDSLExplain: 
         R1=[_SeriousFlag] 
         R1&=ExplainBit_ 
         [_SeriousFlag]=R1 
         RETF 
 
CanselDSLInt: 
         R1=0 
         [_IntFileIndex]=R1 
         RETF