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

📄 basal_reader_de.lst

📁 炬力方案176*132软件源码,适用于AK1025
💻 LST
📖 第 1 页 / 共 5 页
字号:
     76          {
   \   00F0  C5                PUSH    BC
   \   00F1  FDE5              PUSH    IY
   \   00F3  DDE5              PUSH    IX
   \   00F5  DD210000          LD      IX,0
   \   00F9  DD39              ADD     IX,SP
   \   00FB  F5                PUSH    AF
   \   00FC  F5                PUSH    AF
   \   00FD  D5                PUSH    DE
   \   00FE  FDE1              POP     IY
     77              uint nSector, nOffset;
     78          
     79              if( (OA_LongAddr<ViewFileStructPoint->FileLengthBytes) && (ReadDataLength<FILE_SECTOR) )
   \   0100  13                INC     DE
   \   0101  13                INC     DE
   \   0102  EB                EX      DE,HL
   \   0103  5E                LD      E,(HL)
   \   0104  23                INC     HL
   \   0105  56                LD      D,(HL)
   \   0106  23                INC     HL
   \   0107  4E                LD      C,(HL)
   \   0108  23                INC     HL
   \   0109  46                LD      B,(HL)
   \   010A  C5                PUSH    BC
   \   010B  D5                PUSH    DE
   \   010C  DD4E0C            LD      C,(IX+12)
   \   010F  DD460D            LD      B,(IX+13)
   \   0112  DD6E0A            LD      L,(IX+10)
   \   0115  DD660B            LD      H,(IX+11)
   \   0118  CD0000            CALL    LWRD ?SL_CMP_L03
   \   011B  D2EE01            JP      NC,?0031
   \   011E  010002            LD      BC,512
   \   0121  DD6E0E            LD      L,(IX+14)
   \   0124  DD660F            LD      H,(IX+15)
   \   0127  A7                AND     A
   \   0128  ED42              SBC     HL,BC
   \   012A  D2EE01            JP      NC,?0031
   \   012D            ?0019:
   \   012D            ?0018:
   \   012D            ?0016:
     80              {
     81                  nSector = OA_LongAddr / FILE_SECTOR;
   \   012D  69                LD      L,C
   \   012E  61                LD      H,C
   \   012F  E5                PUSH    HL
   \   0130  C5                PUSH    BC
   \   0131  DD4E0C            LD      C,(IX+12)
   \   0134  DD460D            LD      B,(IX+13)
   \   0137  DD6E0A            LD      L,(IX+10)
   \   013A  DD660B            LD      H,(IX+11)
   \   013D  CD0000            CALL    LWRD ?SL_DIV_L03
   \   0140  DD75FE            LD      (IX-2),L
   \   0143  DD74FF            LD      (IX-1),H
     82                  nOffset = OA_LongAddr % FILE_SECTOR;
   \   0146  210000            LD      HL,0
   \   0149  E5                PUSH    HL
   \   014A  2602              LD      H,2
   \   014C  E5                PUSH    HL
   \   014D  DD4E0C            LD      C,(IX+12)
   \   0150  DD460D            LD      B,(IX+13)
   \   0153  DD6E0A            LD      L,(IX+10)
   \   0156  DD660B            LD      H,(IX+11)
   \   0159  CD0000            CALL    LWRD ?SL_MOD_L03
   \   015C  DD75FC            LD      (IX-4),L
   \   015F  DD74FD            LD      (IX-3),H
     83          
     84                  
     85                  if( nOffset + ReadDataLength <= FILE_SECTOR )    //第一种情况:不超过一块
   \   0162  DD4E0E            LD      C,(IX+14)
   \   0165  DD460F            LD      B,(IX+15)
   \   0168  09                ADD     HL,BC
   \   0169  4D                LD      C,L
   \   016A  44                LD      B,H
   \   016B  210002            LD      HL,512
   \   016E  A7                AND     A
   \   016F  ED42              SBC     HL,BC
   \   0171  3809              JR      C,?0021
   \   0173            ?0020:
     86                  {
     87                      if( !read_text(ViewFileStructPoint, nSector ) )
   \   0173  CDFB01            CALL    LWRD ?0189
   \   0176  2C                INC     L
   \   0177  2D                DEC     L
   \   0178  202E              JR      NZ,?0029
   \   017A            ?0022:
     88                          return NULL;        // 失败
   \   017A  1872              JR      ?0031
   \   017C            ?0023:
     89                      return (byte*)ViewFileStructPoint->bufFile + nOffset;
     90                  }
   \   017C            ?0021:
     91                  else if( nOffset + ReadDataLength <= FILE_SECTOR + (BUFF_ONE_ROW) ) //第二种情况:超过一块, 不超过FILE_SECTOR + BUFF_ONE_ROW  
   \   017C  DD6E0E            LD      L,(IX+14)
   \   017F  DD660F            LD      H,(IX+15)
   \   0182  DD4EFC            LD      C,(IX-4)
   \   0185  DD46FD            LD      B,(IX-3)
   \   0188  09                ADD     HL,BC
   \   0189  4D                LD      C,L
   \   018A  44                LD      B,H
   \   018B  211402            LD      HL,532
   \   018E  A7                AND     A
   \   018F  ED42              SBC     HL,BC
   \   0191  3824              JR      C,?0025
   \   0193            ?0024:
     92                  {
     93                      if( !read_text(ViewFileStructPoint, nSector+1 ) )
   \   0193  DD4EFE            LD      C,(IX-2)
   \   0196  DD46FF            LD      B,(IX-1)
   \   0199  03                INC     BC
   \   019A  CD0102            CALL    LWRD ?0190
   \   019D  2C                INC     L
   \   019E  2D                DEC     L
   \   019F  284D              JR      Z,?0031
   \   01A1            ?0026:
     94                          return NULL;        // 失败
   \   01A1            ?0027:
     95                      if( !read_text(ViewFileStructPoint, nSector ) )    //通过两次读取,将下一扇区的头部数据保存到BufNext中
   \   01A1  CDFB01            CALL    LWRD ?0189
   \   01A4  2C                INC     L
   \   01A5  2D                DEC     L
   \   01A6  2846              JR      Z,?0031
   \   01A8            ?0028:
     96                          return NULL;        // 失败
   \   01A8            ?0029:
     97                      return (byte*)ViewFileStructPoint->bufFile + nOffset;
   \   01A8  212700            LD      HL,39
   \   01AB  FDE5              PUSH    IY
   \   01AD  C1                POP     BC
   \   01AE  09                ADD     HL,BC
   \   01AF  DD4EFC            LD      C,(IX-4)
   \   01B2  DD46FD            LD      B,(IX-3)
   \   01B5  1834              JR      ?0179
     98                  }
   \   01B7            ?0025:
     99                  else if( nOffset > FILE_SECTOR - (BUFF_ONE_ROW) )    //第三种情况:处理(nOffset + ReadDataLength)>(FILE_SECTOR +BUFF_ONE_ROW)的情况
   \   01B7  DD4EFC            LD      C,(IX-4)
   \   01BA  DD46FD            LD      B,(IX-3)
   \   01BD  21EC01            LD      HL,492
   \   01C0  A7                AND     A
   \   01C1  ED42              SBC     HL,BC
   \   01C3  3029              JR      NC,?0031
   \   01C5            ?0030:
    100                  {
    101                      if( !read_text(ViewFileStructPoint, nSector ) )
   \   01C5  CDFB01            CALL    LWRD ?0189
   \   01C8  2C                INC     L
   \   01C9  2D                DEC     L
   \   01CA  2822              JR      Z,?0031
   \   01CC            ?0032:
    102                          return NULL;        // 失败
   \   01CC            ?0033:
    103                      if( !read_text(ViewFileStructPoint, nSector+1 ) )    //通过两次读取,将本扇区的尾部数据保存到BufPrev中
   \   01CC  DD4EFE            LD      C,(IX-2)
   \   01CF  DD46FF            LD      B,(IX-1)
   \   01D2  03                INC     BC
   \   01D3  CD0102            CALL    LWRD ?0190
   \   01D6  2C                INC     L
   \   01D7  2D                DEC     L
   \   01D8  2814              JR      Z,?0031
   \   01DA            ?0034:
    104                          return NULL;        // 失败
   \   01DA            ?0035:
    105                      return (byte*)ViewFileStructPoint->bufFile-(FILE_SECTOR-nOffset);
   \   01DA  212700            LD      HL,39
   \   01DD  FDE5              PUSH    IY
   \   01DF  C1                POP     BC
   \   01E0  09                ADD     HL,BC
   \   01E1  DD4EFC            LD      C,(IX-4)
   \   01E4  DD46FD            LD      B,(IX-3)
   \   01E7  09                ADD     HL,BC
   \   01E8  0100FE            LD      BC,65024
   \   01EB            ?0179:
   \   01EB  09                ADD     HL,BC
    106                  }
   \   01EC  1803              JR      ?0036
   \   01EE            ?0031:
   \   01EE            ?0017:
    107              }
    108              return NULL;    // 失败
   \   01EE  210000            LD      HL,0
    109          }
   \   01F1            ?0036:
   \   01F1  DDF9              LD      SP,IX
   \   01F3  DDE1              POP     IX
   \   01F5  FDE1              POP     IY
   \   01F7  C1                POP     BC
   \   01F8  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   01FB            ?0189:
   \   01FB  DD4EFE            LD      C,(IX-2)
   \   01FE  DD46FF            LD      B,(IX-1)
   \   0201            ?0190:
   \   0201  FDE5              PUSH    IY
   \   0203  D1                POP     DE
   \   0204  3E00              LD      A,BYTE3 read_text
   \   0206  213E00            LD      HL,LWRD read_text
   \   0209  C30000            JP      LWRD ?BANK_CALL_DIRECT_L08
   \   020C            view_page_down:
    110          
    111          
    112          //////////////////////////////////////////////////
    113          //向后翻阅
    114          // DealMode =0: 显示一屏并计算下一屏的起始位置;=1: 计算下一屏的起始位置;2 .只读取下一屏数据
    115          byte view_page_down(STRUCT_VIEW_FILE *ViewFileStructPoint, unsigned char DealMode,int BackGroundID )
    116          {
   \   020C  FDE5              PUSH    IY
   \   020E  DDE5              PUSH    IX
   \   0210  DD210000          LD      IX,0
   \   0214  DD39              ADD     IX,SP
   \   0216  C5                PUSH    BC
   \   0217  D5                PUSH    DE
   \   0218  21F0FF            LD      HL,65520
   \   021B  39                ADD     HL,SP
   \   021C  F9                LD      SP,HL
    117              long LeftFileLength;          // 文件剩余长度
    118              long ReadFileLength;        // 已读取的文件长度
    119              uint ReadLengthOneTime;    //读取一次数据的长度
    120              byte *str;            //一次读取数据的首地址
    121              uint RowHeadPosition;    //行首地址(在一次所读数据中的位置)
    122              BOOL ReReadFlag;        //是否需要重新读取数据的标志
    123              byte row, col;        //显示的行列号
    124              byte CountWords;        //一行的显示字数
    125          
    126          
    127              LeftFileLength = ViewFileStructPoint->FileLengthBytes - ViewFileStructPoint->CurrentSeek;
   \   021D  210A00            LD      HL,10
   \   0220  19                ADD     HL,DE
   \   0221  4E                LD      C,(HL)
   \   0222  23                INC     HL
   \   0223  46                LD      B,(HL)
   \   0224  23                INC     HL
   \   0225  5E                LD      E,(HL)
   \   0226  23                INC     HL
   \   0227  56                LD      D,(HL)
   \   0228  69                LD      L,C
   \   0229  60                LD      H,B
   \   022A  D5                PUSH    DE
   \   022B  E5                PUSH    HL
   \   022C  DD4EFC            LD      C,(IX-4)
   \   022F  DD46FD            LD      B,(IX-3)
   \   0232  03                INC     BC
   \   0233  03                INC     BC
   \   0234  69                LD      L,C
   \   0235  60                LD      H,B
   \   0236  4E                LD      C,(HL)
   \   0237  23                INC     HL
   \   0238  46                LD      B,(HL)
   \   0239  23                INC     HL
   \   023A  5E                LD      E,(HL)
   \   023B  23                INC     HL
   \   023C  56                LD      D,(HL)
   \   023D  69                LD      L,C
   \   023E  60                LD      H,B
   \   023F  A7                AND     A
   \   0240  C1                POP     BC
   \   0241  ED42              SBC     HL,BC
   \   0243  EB                EX      DE,HL
   \   0244  C1                POP     BC
   \   0245  ED42              SBC     HL,BC
   \   0247  4D                LD      C,L
   \   0248  44                LD      B,H
   \   0249  EB                EX      DE,HL
   \   024A  DD75F4            LD      (IX-12),L
   \   024D  DD74F5            LD      (IX-11),H
   \   0250  DD71F6            LD      (IX-10),C
   \   0253  DD70F7            LD      (IX-9),B
    128              if( LeftFileLength <= 0 )
   \   0256  C5                PUSH    BC
   \   0257  E5                PUSH    HL
   \   0258  010000            LD      BC,0
   \   025B  69                LD      L,C
   \   025C  60                LD      H,B
   \   025D  CD0000            CALL    LWRD ?SL_CMP_L03
   \   0260  3811              JR      C,?0038
   \   0262            ?0037:
    129              {
    130                  ViewFileStructPoint->CurrentSeek =0;    

⌨️ 快捷键说明

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