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

📄 print.asm

📁 完整的方案
💻 ASM
字号:
PrID:
         CALL EnUart
         CALL TxChg
         R1='I'
         CALL TxByte
         R1='D'
         CALL TxByte
         R1='='
         CALL TxByte
         R1=' '
         CALL TxByte
         PC=DiUart

PrReset:
         CALL EnUart
         CALL TxChg
         R1='R'
         CALL TxByte
         R1='e'
         CALL TxByte
         R1='s'
         CALL TxByte
         R1='e'
         CALL TxByte
         R1='t'
         CALL TxByte
         PC=DiUart

PrOff:
         CALL EnUart
         CALL TxChg
         R1='O'
         CALL TxByte
         R1='f'
         CALL TxByte
         R1='f'
         CALL TxByte
         PC=DiUart

PrVerify:
         CALL EnUart
         CALL TxChg
         R1='V'
         CALL TxByte
         R1='e'
         CALL TxByte
         R1='r'
         CALL TxByte
         R1='i'
         CALL TxByte
         R1='f'
         CALL TxByte
         R1='y'
         CALL TxByte
         PC=DiUart

PrPgm:
         CALL EnUart
         CALL TxChg
         R1='P'
         CALL TxByte
         R1='G'
         CALL TxByte
         R1='M'
         CALL TxByte
         PC=DiUart

PrErase:
         CALL EnUart
         CALL TxChg
         R1='E'
         CALL TxByte
         R1='r'
         CALL TxByte
         R1='a'
         CALL TxByte
         R1='s'
         CALL TxByte
         R1='e'
         CALL TxByte
         PC=DiUart

PrOk:
         CALL EnUart
         CALL TxChg
PrOk_:
         R1='O'
         CALL TxByte
         R1='K'
         CALL TxByte
         PC=DiUart

PrintDetail:
         R1=[_TestCnt]
         R1+=1
         CMP R1, [_MaxTestCnt]
         JNB PrintDetailAdj
         [_TestCnt]=R1
         RETF
PrintDetailAdj:
         R1=0
         [_TestCnt]=R1
         R4=0x18
         CALL AdjCommBuf
         R4=0x10
         CALL PrintWordBuf
         CALL EnUart
PrintDetailSub:
         R3=_CommBuf+PV0H
         R4=_CommBuf+PV0L
         R5=8
PrintDetailSub0:
         R1=[R4++]
         R1-=[R3++]
         CALL TxSWord
         R5-=1
         JNE PrintDetailSub0
         CALL TxChg
PrintDetail_:
         R2=7
         CALL TxMNull
         R1='Y'
         CALL TxByte
         CALL TxNull
         CALL TxEQU
         CALL TxNull
         R1=[_CommBuf+YBase]
         CALL TxWord
         R2=9
         CALL TxMNull
         R1='X'
         CALL TxByte
         CALL TxNull
         CALL TxEQU
         CALL TxNull
         R1=[_CommBuf+XBase]
         CALL TxWord
         CALL TxChg
         PC=DiUart

PrintBlockMess:
         CALL EnUart
         CALL TxChg
         R1='B'
         CALL TxByte
         CALL TxNull
         CALL TxLine
         CALL TxLine
         CALL TxNull
         R1=[_MaxDealLevel]
         JNE PrintBlockMess_
PrintBlockMessBlank:
         R1='B'
         CALL TxByte
         R1='l'
         CALL TxByte
         R1='a'
         CALL TxByte
         R1='n'
         CALL TxByte
         R1='k'
         CALL TxByte
         CALL TxChg
         PC=DiUart

PrintBlockMess_:
         R1='B'
         CALL TxByte
         CALL TxDD
         R1=[_PlayBlock]
         CALL TxHex

         R1='F'
         CALL TxByte
         CALL TxDD
         R1=[_FileNumber]
         CALL TxHex

         R1='A'
         CALL TxByte
         CALL TxDD
         R1=[_PlayBank]
         CALL TxHex
         CALL TxLine
         CALL TxNull
         R1=[_PlayAddr]
         CALL TxWord
         R4=[_FileNumber]
         JNE PrintBlockMessBlockFile
PrintBlockMessBlockNoFile:
         CALL TxChg
         R1='N'
         CALL TxByte
         R1='o'
         CALL TxByte
         JMP PrintBlockMessBlockFileEnd
PrintBlockMessBlockFile:
         R3=[_PlayAddr]
         R4=[_PlayBank]
PrintBlockMessBlockFile0:
PrintBlockMessBlockFileEnd:         
         CALL TxChg
         PC=DiUart

PrintCoord:
         CALL EnUart
         R1=[_PrintFlag]
         R1+=1
         R1&=0xff0f
         [_PrintFlag]=R1
         R1-=1
         R1&=0x03
         JNE PrintCoord_
         CALL TxChg
PrintCoord_:
         R1='X'
         CALL TxByte
         CALL TxEQU
         R1=[_XCoord]
         CALL HexDec
         CALL TxWord
         R1='Y'
         CALL TxByte
         CALL TxEQU
         R1=[_YCoord]
         CALL HexDec
         CALL TxWord
         CALL TxNull
         CALL TxNull
         PC=DiUart

PrintErr:
         R2=R1
         CALL EnUart
         CALL TxChg
         R1='E'
         CALL TxByte
         R1='r'
         CALL TxByte
         R1='r'
         CALL TxByte
         CALL TxDD
         R1=R2
         CALL TxHex
         PC=DiUart

PrintAdjResult:
         R4=3
         CALL AdjCommBuf2
         CALL EnUart
         CALL TxChg
         R1='X'
         CALL TxByte
         CALL TxEQU
         R1=[_CommBuf+AdjXBi]
         CALL TxWord
         R1='Y'
         CALL TxByte
         CALL TxEQU
         R1=[_CommBuf+AdjYBi]
         CALL TxWord
         R1='A'
         CALL TxByte
         CALL TxEQU
         R1=[_CommBuf+AdjABi]
         CALL TxWord
         R1='P'
         CALL TxByte
         CALL TxEQU
         R1=[_CommBuf+RAdjP]
         CALL TxHex
         R1='N'
         CALL TxByte
         CALL TxEQU
         R1=[_CommBuf+RAdjN]
         CALL TxHex
         PC=DiUart

TxPlay:
         R4=R1
         CALL EnUart
         CALL TxChg
         R1='P'
         CALL TxByte
         CALL TxDD
         R1=R4
         CALL TxWord
         PC=DiUart

PrintDealMess:
         R3=R1
         CALL EnUart
         CALL TxChg
         R1='D'
         CALL TxByte
         CALL TxDD
         CALL TxNull
         R1='X'
         CALL TxByte
         CALL TxEQU
         R1=[_XValue]
         CALL HexDec
         CALL Tx3Nibble
         R1='Y'
         CALL TxByte
         CALL TxEQU
         R1=[_YValue]
         CALL HexDec
         CALL Tx3Nibble
         CMP R3, 0
         JNE PrintDealMessBlank
         R1='S'
         CALL TxByte
         CALL TxEQU
         R1=[_PrevDealBlock]
         CALL TxWord
         PC=DiUart
PrintDealMessBlank:
         R1='B'
         CALL TxByte
         R1='l'
         CALL TxByte
         R1='a'
         CALL TxByte
         R1='n'
         CALL TxByte
         R1='k'
         CALL TxByte
         PC=DiUart

PrintByteBuf:
         CALL EnUart
         CALL TxChg
         R3=_CommBuf
PrintByteBuf0:
         R1=R3 XOR _CommBuf
         R1&=0x0f
         JNE PrintByteBuf_
         CALL TxChg
PrintByteBuf_:
         R1=[R3]
         CALL TxHex
         R3+=1
         R4-=1
         JNE PrintByteBuf0
         CALL TxChg
         PC=DiUart

PrintBaseData:
         R4=0x21
         CALL AdjCommBuf
         CALL EnUart
         CALL TxChg
         R4=0x21
PrintWordBuf:
         CALL EnUart
         R3=_CommBuf
PrintWordBuf0:
         R1=R3 XOR _CommBuf
         R1&=0x07
         JNE PrintWordBuf_
         CALL TxChg
PrintWordBuf_:
         CALL TxNull
         R1=[R3]
         CALL TxWord
         R3+=1
         R4-=1
         JNE PrintWordBuf0
         CALL TxChg
         PC=DiUart

AdjCommBuf2:
         R2=_CommBuf+2
         R3=_CommBuf+2
         JMP AdjCommBuf0
AdjCommBuf:
         R2=_CommBuf
         R3=_CommBuf
AdjCommBuf0:
         R1=[R3++]
         R1=R1 LSL 4
         R1=R1 LSL 4
         R1|=[R3++]
         [R2++]=R1
         R4-=1
         JNE AdjCommBuf0
         RETF

HexDec:
         R2=R1
         R1=0
HexDec1000:
         CMP R2, 1000
         JB HexDec100
         R1+=0x1000
         R2-=1000
         JMP HexDec1000
HexDec100:
         CMP R2, 100
         JB HexDec10
         R1+=0x100
         R2-=100
         JMP HexDec100
HexDec10:
         CMP R2, 10
         JB HexDecE
         R1+=0x10
         R2-=10
         JMP HexDec10
HexDecE:         
         R1+=R2
         RETF

         .ifdef TRACE
PrintHe:
         R2=R1
         CALL EnUart
         R1=R2
         CALL TxHex1
         PC=DiUart
         .endif


PrintHe:
         R4=R1
         CALL EnUart
         R1=R4
         CALL TxHex1
         PC=DiUart


PrintDTData:
         .ifdef CDDEBUG
         CALL EnUart
         R1=0x0d
         CALL TxByte
         R1='T'
         CALL TxByte
         R1='x'
         CALL TxByte
         R1=' '
         CALL TxByte
         R1=R4 LSR 4
         R1=R1 LSR 4
         CALL TxHex
         R1=R4&0xff
         CALL TxHex
         PC=DiUart
         .endif
         RETF

PrintDTErr:
         .ifdef CDDEBUG
         CALL EnUart
         R1=0x0d
         CALL TxByte
         R1='T'
         CALL TxByte
         R1='x'
         CALL TxByte
         R1=' '
         CALL TxByte
         R1='E'
         CALL TxByte
         R1='r'
         CALL TxByte
         R1='r'
         CALL TxByte
         R1=R4
         CALL TxHex
         R1=R3
         CALL TxHex
         PC=DiUart
         .endif
         RETF

PrintRDErr:
         .ifdef CDDEBUG
         CALL EnUart
         R1=0x0d
         CALL TxByte
         R1='R'
         CALL TxByte
         R1='x'
         CALL TxByte
         R1=' '
         CALL TxByte
         R1='E'
         CALL TxByte
         R1='r'
         CALL TxByte
         R1='r'
         CALL TxByte
         R1=R4
         CALL TxHex
         PC=DiUart
         .endif
         RETF

PrintRDData:
         .ifdef CDDEBUG
         CALL EnUart
         R1=0x0d
         CALL TxByte
         R1='R'
         CALL TxByte
         R1='x'
         CALL TxByte
         R1=' '
         CALL TxByte
         R1=R3 LSR 4
         R1=R1 LSR 4
         CALL TxHex
         R1=R3&0xff
         CALL TxHex
         PC=DiUart
         .endif
         RETF

PrintDSLCommBlock:
         CALL EnUart
         CALL TxChg
         R1='B'
         CALL TxByte
         R1=':'
         CALL TxByte
         R1=[_PlayBlock]
         CALL TxHex
         R1=' '
         CALL TxByte
         R5=_CommBuf
         R4=[R5++]
         R1=R4
         CALL TxHex
         CMP R4, 0
         JE PrintDSLCommBlockEnd
PrintDSLCommBlock10:
         R1=[R5++]
         CALL TxHex
         R1=[R5++]
         CALL TxHex
         R4-=1
         JNE PrintDSLCommBlock10
PrintDSLCommBlock2:
         R4=[_CommBuf]
PrintDSLCommBlock20:
         R1=[R5]
         CALL TxHex
         R1=[R5++]
         CMP R1, 0xff
         JNE PrintDSLCommBlock20
         R4-=1
         JNE PrintDSLCommBlock20
         CALL DiUart
PrintDSLCommBlockEnd:
         RETF

                 
PrintValue:
         CALL EnUart
         CALL TxChg
         R1='X'
         CALL TxByte
         CALL TxEQU
         R1=[_XValue]
         CALL HexDec
         CALL TxWord
         R1='Y'
         CALL TxByte
         CALL TxEQU
         R1=[_YValue]
         CALL HexDec
         CALL TxWord
         RETF

PrintEdit:
         CALL EnUart
         CALL TxChg
         R1='E'
         CALL TxByte
         R1='d'
         CALL TxByte
         R1='i'
         CALL TxByte
         R1='t'
         CALL TxByte
         R1=':'
         CALL TxByte
         R1=' '
         CALL TxByte

         R1='I'
         CALL TxByte
         R1='='
         CALL TxByte
         R1=[_FileIndex]
         CALL TxHex

         R1='B'
         CALL TxByte
         R1='='
         CALL TxByte
         R1=[_PlayBlock]
         CALL TxHex

         R1=[_RecOrgBank]
         CALL TxWord
         R1=[_RecOrgAddr]
         CALL TxWord
         CALL TxLine
         CALL TxLine
         CALL TxNull
         R1=[_RecEndBank]
         CALL TxWord
         R1=[_RecEndAddr]
         CALL TxWord
         CALL TxChg
         CALL DiUart
         RETF

PrintEditAddr:
         CALL EnUart
         CALL TxChg
         R1='E'
         CALL TxByte
         R1='d'
         CALL TxByte
         R1='i'
         CALL TxByte
         R1='t'
         CALL TxByte
         R1=' '
         CALL TxByte
         R1=[_HowManyEditBlock]
         JNE PrintEditAddr_
         R1='N'
         CALL TxByte
         R1='o'
         CALL TxByte
         RETF
PrintEditAddr_:
         R1=[_EditBlockSerious]
         CALL TxHex
         CALL TxNull
         R1=[_EditOrgBank]
         CALL TxWord
         R1=[_EditOrgAddr]
         CALL TxWord
         RETF

PrintPage:
          CALL EnUart
          R1=[_PcRecPage]
          R1&=0x0f
          JNE PrintPage_
PrintPage_:
          R1=[_PcRecPage]
          CALL TxWord
          CALL DiUart
          RETF

PrintCardMess:
         CALL EnUart
         CALL TxChg
         R1='B'
         CALL TxByte
         R1='o'
         CALL TxByte
         R1='o'
         CALL TxByte
         R1='k'
         CALL TxByte
         R1='='
         CALL TxByte
         R1=[_HowManyBook]
         CALL TxHex
         R1=[_CurrentBookBank]
         CALL TxWord
         R1=[_CurrentBookAddr]
         CALL TxWord
         CALL DiUart
         RETF

PrintEditReg:
         R2=_ContentBuf
         R5=0x80
         R3=[_EndAddr]
         R4=[_EndBank]
         R4+=1
         CALL ReadNandWordBuf
         CALL EnUart
         R4=_ContentBuf
PrintEditReg0:
         R1=R4&0x0f
         JNE PrintEditReg_
         CALL TxChg
PrintEditReg_:
         R1=[R4++]
         CALL TxWord
         CMP R4, 0xc0
         JNE PrintEditReg0
         CALL DiUart
         RETF

PrintRec:
         CALL EnUart
         R1=0x0d
         CALL TxByte
         R1='R'
         CALL TxByte
         R1='e'
         CALL TxByte
         R1='c'
         CALL TxByte
         R1=[_RecOrgBank]
         CALL TxWord
         R1=[_RecOrgAddr]
         CALL TxWord
         R1='-'
         CALL TxByte
         R1='-'
         CALL TxByte
         R1=' '
         CALL TxByte
         R1=[_RecEndBank]
         CALL TxWord
         R1=[_RecEndAddr]
         CALL TxWord
         CALL DiUart
         RETF

⌨️ 快捷键说明

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