?? disp.asm
字號:
//Page: .EQU 0x0000 // Max page
DTVMHead: .EQU 0x1000 // Volume & Max mode
//Attrib: .EQU 0x2000
DTStatuHead: .EQU 0x3000 // Statu
DTPageHead: .EQU 0x4000
DTModeHead: .EQU 0x5000
DTRepeatTimeHead: .EQU 0x6000
DTBookHead: .EQU 0x7000
DTxWait: .EQU 0
DTDly: .EQU 0x8000
DRDly: .EQU 0x4000
dRDNoSignErr: .EQU 1
dRDWLErr: .EQU 2
dRDWHErr: .EQU 3
dRdCheckErr: .EQU 4
dRDInvalidErr: .EQU 5
dDTBodyBusy: .EQU 1
dDTAckErr: .EQU 2
dDTxWaitLoErr: .EQU 3
dDTxWaitHiErr: .EQU 4
//0 RDPage
//1 RDMode
//2 RDVolume
//3 RDSet
//4 RDKey
//5 RDMaxRep
//6 RDSet2
//7 RD
.INCLUDE DPTX.ASM
ComRD:
R1=[P_IOA_Data]
TEST R1, DClkB
JE ComRD_
ComRDErr1:
R1=dRDNoSignErr
RETF
ComRD_:
R3=0
R5=0
R4=16
JMP ComRD2
ComRD0:
R3=R3 LSL 1
R1= DRDly
ComRD1:
R1-=1
JNE ComRD1_
R1=dRDWLErr
PC=RDErr
ComRD1_:
R2=[P_IOA_Data]
TEST R2, DClkB // Clk=0
JNE ComRD1
ComRD2:
R2=[P_IOA_Data]
TEST R2, DDatB
JNE ComRDHi
ComRDLo:
R3&=Bit0_
CMP R4, 16
JE ComRD2_
CMP R4, 3
JB ComRD2_
R5^=Bit0
JMP ComRD2_
ComRDHi:
R3|=Bit0
CMP R4, 16
JE ComRD2_
CMP R4, 3
JB ComRD2_
R5^=Bit1
JB ComRD2_
ComRD2_:
R2=[P_IOA_Buffer]
R2&=DAckB_ // Ack=0
[P_IOA_Buffer]=R2
R1= DRDly
ComRD3:
R1-=1
JNE ComRD3_
R1=dRDWHErr
JMP RDErr
ComRD3_:
R2=[P_IOA_Data]
TEST R2, DClkB // Clk=1
JE ComRD3
R2=[P_IOA_Buffer]
R2|=DAckB // Ack=1
[P_IOA_Buffer]=R2
R4-=1
JNE ComRD0
R5^=R3
R5&=0x03
JE RDDeal
R1=dRdCheckErr
RDErr:
R4=R1
R2=[P_IOA_Buffer]
R2|=DAckB // Ack=1
[P_IOA_Buffer]=R2
RDErr_:
R1= DRDly
RDErr0:
R2=[P_IOA_Data]
TEST R2, DClkB // Clk=1
JE RDErr_
R1-=1
JNE RDErr0
CALL PrintRDErr
R1=R4
RETF
RDDeal:
[_Tmp1]=R3
R1=0xffff
[_PlayBlock]=R1
CALL SoundAllStop
CALL CanselDSLEdit
CALL CanselDSLQuestion
CALL PrintRDData
CALL CanselDSLExplain
CALL CanselDSLInt
R1=0
[_TimeCtrCount]=R1
[_AutoOffTime]=R1
[_BlockFlag]=R1
R1=[_Statu]
R1&=DynamicBit_
[_Statu]=R1
R3=[_Tmp1]
R1=R3&0x7000
R1=R1 LSR 4
R1=R1 LSR 4
R1=R1 LSR 4
R1+=RDDealTab
PC=[R1]
RDDealTab:
.DW RDPage
.DW RDMode
.DW RDVolume
.DW RDSet
.DW RDKey
.DW RDMaxRep
.DW RDBook
.DW RDSoundSpeed
RDBook:
R1=R3&0x00f0
R1=R1 LSR 4
CMP R1, [_HowManyBook]
JA RDBookEnd
[_Book]=R1
CALL InitBook
CALL InitBookPageMode
R1=0
[_RecordFlag]=R1
R4=[_HowManyPage]
R4=R4 LSL 2
CALL DTBody
CALL Delay50ms
CALL Delay16ms
CALL DTVM
CALL Delay50ms
CALL Delay16ms
R1=0
CALL PlayDSLSys
RDBookEnd:
RETF
RDPage:
R1=R3&0x0ffc
R1=R1 LSR 2
CMP R1, [_HowManyPage]
JCC RDPage0
R1=[_HowManyPage]
RDPage0:
CALL GetRealPage
[_Page]=R1
R1=1
[_PlayMode]=R1
CALL InitBookPageMode
CALL DTVM
CALL Delay50ms
CALL Delay50ms
R1=[_BookMark]
TEST R1, XYDBookBit
JNE RDPageXYD
RDPageDSL:
R1=0
[_RecordFlag]=R1
R3=[_No1Addr]
R4=[_No1Bank]
CALL GetDSLBlock_
RETF
RDPageXYD:
R4=[_CurrentBookBank]
R3=[_CurrentBookAddr]
R3+=0x43
CALL ReadNandAddr
R4&=0xff
CALL AddrChg
CALL AddBookAddr
R1=3
CALL NandAddrAdd
CALL ReadNandAddr
R4&=0xff
CALL AddrChg
CALL AddBookAddr
R1=16
CALL NandAddrAdd
CALL PlayXYDBlock
RETF
RDVolume:
R1=R3&0x0ffc
R1=R1 LSR 4
[_SoundVolume]=R1
R1=2
CALL PlayDSLSys
RETF
RDSoundSpeed:
R1=R3&0x0ff0
R1=R1 LSR 4
TEST R1, Bit7
JE RDSoundSpeedAdd
RDSoundSpeedSub:
R1&=0xff
CMP R1, 0xf5
JA RDSoundSpeedSub_
R1=0xf5
RDSoundSpeedSub_:
R1|=0xff00
JMP RDSoundSpeed_
RDSoundSpeedAdd:
R1=R1 LSR 1
CMP R1, 7
JB RDSoundSpeed_
R1=6
RDSoundSpeed_:
[_SoundSpeed]=R1
RETF
RDSet:
RDMaxRep:
RDMode:
RETF
RDKey:
R1=R3&0x0ffc
R1=R1 LSR 4
R1+=KeyTable
PC=[R1]
.ifdef HSH
KeyTable:
.DW RDErr
.DW RDKeyEdit
.DW RDKeyRepeat
.DW RDKeyGame
.DW RDKeyPlayEdit
.DW RDKeyRecPlay
.DW RDKeyRec
.DW RDKeyPlay
.DW RDKeyI0 // page chg
.DW RDKeyI1 // book chg
.DW RDKeyI2 // volume chg
.DW RDKeyI3 // speed chg
.DW RDKeyI4
.DW RDKeyExplain
.DW RDKeyInt
.DW RDKeyNor
.endif
.ifdef WM
KeyTable:
.DW RDErr
.DW RDKeyEdit
.DW RDKeyRepeat
.DW RDKeyGame
.DW RDKeyPlayEdit
.DW RDKeyRecPlay
.DW RDKeyRec
.DW RDKeyPlay
.DW RDKeyI0 // page chg
.DW RDKeyI1 // book chg
.DW RDKeyI2 // volume chg
.DW RDKeyI3 // speed chg
.DW RDKeyI4
.DW RDKeyExplain
.DW RDKeyInt
.DW RDKeyNor
.endif
.ifdef DBL
KeyTable:
.DW RDErr
.DW RDKeyEdit
.DW RDKeyRepeat
.DW RDKeyGame
.DW RDKeyPlayEdit
.DW RDKeyRec
.DW RDKeyPlay
.DW RDKeyRecPlay
.DW RDKeyI0 // page chg
.DW RDKeyI1 // book chg
.DW RDKeyI2 // volume chg
.DW RDKeyI3 // speed chg
.DW RDKeyI4
.DW RDKeyExplain
.DW RDKeyInt
.DW RDKeyNor
.endif
RDKeyEdit:
R1=0
[_RecordFlag]=R1
R1=[_EditFlag]
TEST R1, HaveEditBlockBit
JNE RDKeyEdit2
R1=24
PC=PlayDSLSys
RDKeyEdit2:
TEST R1, NoEditSpaceBit|PageEditFullBit
JE RDKeyEdit3
R1=23
PC=PlayDSLSys
RDKeyEdit3:
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]
RDKeyEdit30:
R1=0xfffe
[R3++]=R1
R1=[R3]
CMP R1, 0xfffd
JE RDKeyEdit30
R2=_ContentBuf
R5=0x400
R3=[_EndAddr]
R4=[_EndBank]
R4+=1
CALL WriteNandWordBuf
R3=[_EditOrgAddr]
R4=[_EditOrgBank]
R2=[_HowManyEditBlock]
R1=R2 LSL 2
R1+=R2
R1+=R2
CALL NandAddrAdd
[_CurrentEditAddr]=R3
[_CurrentEditBank]=R4
CALL EraseCurrentAddrBlock
R1=0
[_FileIndex]=R1
R1=1
[_EditBlockNumber]=R1
R1=[_EditFlag]
R1|=InEditBit
R1&=HaveEditBit_&ToEditBit_&ToHintBit_&ToRegBit_
R1|=AutoEditBit|ToPlayGiveEditBit
[_EditFlag]=R1
R1=15
PC=PlayDSLSys
RDKeyPlayEdit:
R1=0
[_RecordFlag]=R1
CALL EndEdit
R1=0
[_InPlayBlock]=R1
R1=[_EditFlag]
R1&=InEditBit_
[_EditFlag]=R1
// TEST R1, HaveEditBlockBit
// JNE RDKeyPlayEdit2
// R1=24
// PC=PlayDSLSys
RDKeyPlayEdit2:
TEST R1, HaveEditBit
JNE RDKeyPlayEdit3
R1=17
PC=PlayDSLSys
RDKeyPlayEdit3:
R1=[_EditFlag]
R1|=EditModeBit
[_EditFlag]=R1
R3=[_No3Addr]
R4=[_No3Bank]
R1=8
CALL NandAddrAdd
CALL ReadNandWord
R3=[_No3Addr]
R4=[_No3Bank]
CALL NandAddrAdd
CALL GetDSLBlock_
RETF
.ifdef HSH
RDKeyRecPlay:
R1=[_RecordFlag]
TEST R1, HadRecBit
JE RDKeyRec
TEST R1, InRecModeBit
JE RDKeyRec
TEST R1, InPlayBit
JNE RDKeyRec
RDKeyPlay:
R1=[_RecordFlag]
R1&=RecAllBit_
R1|=InRecModeBit|RecordBlockBit|ToPlaySoundBit
[_RecordFlag]=R1
R1=[_MaxRepeatTime]
R1+=1
R1=2
[_RepeatTime]=R1
RETF
RDKeyRec:
R4=[_EndBank]
CMP R4, [_NandMaxBank]
JCS RDKeyRecEnd
R1=[_RecordFlag]
R1&=RecAllBit_
R1|=RecordBlockBit|InRecModeBit|ToRecordBit
[_RecordFlag]=R1
RDKeyRecEnd:
RETF
RDKeyRepeat:
R1=[_RecordFlag]
TEST R1, HadSoundBit
JE RDKeyRepeatEnd
R1&=RecAllBit_
[_RecordFlag]=R1
CALL DTSourceStatu
R3=[_RecRegAddr]
R4=[_RecRegBank]
PC=GetDSLBlock_
RDKeyRepeatEnd:
PC=RDKeyNor
.endif
.ifdef WM
RDKeyRecPlay:
RDKeyRec:
R1=[_RecordFlag]
R1&=RecAllBit_
R1|=RecordBlockBit|InRecModeBit|ToRecordBit
[_RecordFlag]=R1
RETF
RDKeyRepeat:
RDKeyPlay:
R1=[_RecordFlag]
TEST R1, HadRecBit
JNE RDKeyPlay_
TEST R1, HadSoundBit
JNE RDKeyPlay_
RETF
RDKeyPlay_:
R1&=RecAllBit_
R1|=InRecModeBit|RecordBlockBit|ToPlaySoundBit
[_RecordFlag]=R1
R1=[_MaxRepeatTime]
R1+=1
R1=2
[_RepeatTime]=R1
RETF
.endif
.ifdef DBL
RDKeyRecPlay:
RDKeyRec:
R1=[_RecordFlag]
R1&=RecAllBit_
R1|=RecordBlockBit|InRecModeBit|ToRecordBit
[_RecordFlag]=R1
RETF
RDKeyPlay:
R1=[_RecordFlag]
TEST R1, HadRecBit
JNE RDKeyPlay_
TEST R1, HadSoundBit
JNE RDKeyPlay_
RETF
RDKeyPlay_:
R1&=RecAllBit_
R1|=InRecModeBit|RecordBlockBit|ToPlaySoundBit
[_RecordFlag]=R1
R1=[_MaxRepeatTime]
R1+=1
R1=2
[_RepeatTime]=R1
RETF
RDKeyRepeat:
R1=[_RecordFlag]
TEST R1, HadSoundBit
JE RDKeyRepeatEnd
R1&=RecAllBit_
[_RecordFlag]=R1
CALL DTSourceStatu
R3=[_RecRegAddr]
R4=[_RecRegBank]
PC=GetDSLBlock_
RDKeyRepeatEnd:
PC=RDKeyNor
.endif
RDKeyGame:
R1=[_BookMark]
TEST R1, XYDBookBit
JE RDKeyGameDSL
RDKeyGameXYD:
R3=[_CurrentPMAddr]
R4=[_CurrentPMBank]
R1=2
CALL NandAddrSub
CALL ReadNandWord
R1&=0x3fff
R3&=0xc000
R3|=R1
R1=16
CALL NandAddrAdd
CALL PlayXYDBlockWithRec
RETF
RDKeyGameDSL:
R1=0
[_RecordFlag]=R1
R3=[_No3Addr]
R4=[_No3Bank]
R1=8
CALL NandAddrAdd
CALL ReadNandWord
R3=[_No3Addr]
R4=[_No3Bank]
CALL NandAddrAdd
CALL SkipWordFF
CALL NandAddrInc
CALL ReadNandByte
CMP R1, 0
JE RDKeyNoGame
[_QuestionNumber]=R1
CALL GetRandomData
[_SelectionSerious]=R1
R1=0
[_QuestionIndex]=R1
R1=[_SeriousFlag]
R1|=SeriousSelectionBit
[_SeriousFlag]=R1
R1=[_QuestionFlag]
R1&=HaveSelectionQuestionBit_
R1|=QuestionDiCoordBit
[_QuestionFlag]=R1
RDKeyNoGame:
R3=[_No3Addr]
R4=[_No3Bank]
R1=4
CALL NandAddrAdd
CALL ReadNandWord
CALL NandAddrAdd
R1=4
CALL NandAddrSub
CALL GetDSLBlock_
RETF
RDKeyI0: // page chg
R1=0
[_RecordFlag]=R1
R1=22
CALL PlayDSLSys
RETF
RDKeyI1: // volume chg
R1=0
[_RecordFlag]=R1
R1=19
CALL PlayDSLSys
RETF
RDKeyI2: // speed
R1=0
[_RecordFlag]=R1
R1=20
CALL PlayDSLSys
RETF
RDKeyI3: // book chg
R1=0
[_RecordFlag]=R1
R1=21
CALL PlayDSLSys
RETF
RDKeyI4:
RDKeyI5:
RETF
RDKeyExplain:
R1=0
[_RecordFlag]=R1
R3=[_No3Addr]
R4=[_No3Bank]
R1=2
CALL NandAddrAdd
CALL ReadNandWord
R3=[_No3Addr]
R4=[_No3Bank]
CALL NandAddrAdd
CALL GetDSLBlock_
R1=[_SeriousFlag]
R1|=ExplainBit
[_SeriousFlag]=R1
RETF
RDKeyInt:
R1=0
[_RecordFlag]=R1
R3=[_No7Addr]
R4=[_No7Bank]
CALL ReadNandWord
CMP R1, 0xffff
JNE RDKeyInt_
R1=0
[_IntFileIndex]=R1
R1=25
CALL PlayDSLSys
RETF
RDKeyInt_:
R1=1
[_IntFileIndex]=R1
RETF
RDKeyNor:
R1=0
[_RecordFlag]=R1
R3=[_No3Addr]
R4=[_No3Bank]
CALL ReadNandWord
R3=[_No3Addr]
R4=[_No3Bank]
CALL NandAddrAdd
CALL GetDSLBlock_
RETF
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -