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

📄 ui_scroll.lst

📁 MP3 整个 SDK
💻 LST
📖 第 1 页 / 共 2 页
字号:
     91          滚动屏幕
     92          */
     93          void HoriScroll(signed char step,char language)
     94          {
   \   00CC  CD0000            CALL    LWRD ?ENT_AUTO_DIRECT_L09
   \   00CF  F2FF              DEFW    -14
   \   00D1  FDE5              PUSH    IY
     95              int code;
     96              char *tmpstrpt;
     97              region_t tregion;
     98              region_t sregion;
     99              region_t kregion;//余下部分区域
    100          
    101              tmpstrpt = str_pt;
   \   00D3  FD2A0000          LD      IY,(str_pt)
    102          
    103              //余下部分区域
    104             // kregion.x = scrollregionx_def+scrollregionw_def-step;
    105              kregion.x = scrollregionx_def+scrollregionw_def-step;
   \   00D7  3EB9              LD      A,185
   \   00D9  DD9602            SUB     (IX+2)
   \   00DC  DD77F2            LD      (IX-14),A
    106              kregion.y = scrollregiony_def;
   \   00DF  DD36F36E          LD      (IX-13),110
    107              kregion.width = step;
   \   00E3  DD4602            LD      B,(IX+2)
   \   00E6  DD70F4            LD      (IX-12),B
    108              kregion.height = scrollregionh_def;
   \   00E9  DD36F510          LD      (IX-11),16
    109          
    110              //设定移动的源,目标区域
    111              sregion.x = scrollregionx_def+step;//暂时未考虑为负数的情况
   \   00ED  78                LD      A,B
   \   00EE  C62D              ADD     A,45
   \   00F0  DD77F6            LD      (IX-10),A
    112              tregion.x = scrollregionx_def;
   \   00F3  DD36FA2D          LD      (IX-6),45
    113              tregion.y = sregion.y = scrollregiony_def;
   \   00F7  DD36F76E          LD      (IX-9),110
   \   00FB  DD36FB6E          LD      (IX-5),110
    114              sregion.width = scrollregionw_def-step;
   \   00FF  3E8C              LD      A,140
   \   0101  90                SUB     B
   \   0102  DD77F8            LD      (IX-8),A
    115              sregion.height = scrollregionh_def;
   \   0105  DD36F910          LD      (IX-7),16
    116          
    117              //向左移step列
    118              RegionCopy(&sregion, &tregion);
   \   0109  210A00            LD      HL,10
   \   010C  39                ADD     HL,SP
   \   010D  4D                LD      C,L
   \   010E  44                LD      B,H
   \   010F  210600            LD      HL,6
   \   0112  39                ADD     HL,SP
   \   0113  EB                EX      DE,HL
   \   0114  CD0000            CALL    LWRD RegionCopy
   \   0117            ?0016:
    119          
    120          
    121          
    122          test:
    123              if (*str_pt == '\0')
   \   0117  2A0000            LD      HL,(str_pt)
   \   011A  AF                XOR     A
   \   011B  B6                OR      (HL)
   \   011C  200A              JR      NZ,?0018
   \   011E            ?0017:
    124              {
    125                  tmpstrpt = str_pt = strhead_pt;
   \   011E  2A0200            LD      HL,(strhead_pt)
   \   0121  220000            LD      (str_pt),HL
   \   0124  FD2A0200          LD      IY,(strhead_pt)
   \   0128            ?0018:
    126              }
    127          
    128              //汉字和ASCII的不同处理
    129              if ((*str_pt >= FirstSectionCode)&&(language!=1))
   \   0128  7E                LD      A,(HL)
   \   0129  FEA1              CP      161
   \   012B  3813              JR      C,?0020
   \   012D  DD4604            LD      B,(IX+4)
   \   0130  05                DEC     B
   \   0131  280D              JR      Z,?0020
   \   0133            ?0022:
   \   0133            ?0021:
   \   0133            ?0019:
    130              {//汉字
    131                  code = *(int *)str_pt;
   \   0133  46                LD      B,(HL)
   \   0134  DD70FE            LD      (IX-2),B
   \   0137  23                INC     HL
   \   0138  66                LD      H,(HL)
   \   0139  DD74FF            LD      (IX-1),H
    132                  tmpstrpt++;
    133              }
    134              else
   \   013C  FD23              INC     IY
   \   013E  1809              JR      ?0023
   \   0140            ?0020:
    135              {//ASCII
    136                  code = *str_pt;
   \   0140  4E                LD      C,(HL)
   \   0141  DD71FE            LD      (IX-2),C
   \   0144  0600              LD      B,0
   \   0146  DD70FF            LD      (IX-1),B
   \   0149            ?0023:
    137              }
    138              tmpstrpt++;
    139          
    140              if (!CharOutRect(code, &kregion, scroll_cnt))
   \   0149  3A0400            LD      A,(scroll_cnt)
   \   014C  4F                LD      C,A
   \   014D  C5                PUSH    BC
   \   014E  210400            LD      HL,4
   \   0151  39                ADD     HL,SP
   \   0152  4D                LD      C,L
   \   0153  44                LD      B,H
   \   0154  DD5EFE            LD      E,(IX-2)
   \   0157  DD56FF            LD      D,(IX-1)
   \   015A  CD0000            CALL    LWRD CharOutRect
   \   015D  E1                POP     HL
   \   015E  B7                OR      A
   \   015F  FD23              INC     IY
   \   0161  2009              JR      NZ,?0025
   \   0163            ?0024:
    141              {
    142                  //strhead_pt = str_pt;
    143                  str_pt = tmpstrpt;
   \   0163  FD220000          LD      (str_pt),IY
    144                  scroll_cnt = 0;
   \   0167  320400            LD      (scroll_cnt),A
    145                  goto test;
   \   016A  18AB              JR      ?0016
   \   016C            ?0025:
    146              }
    147                  scroll_cnt += step;//未支持负数
   \   016C  3A0400            LD      A,(scroll_cnt)
   \   016F  DD8602            ADD     A,(IX+2)
   \   0172  320400            LD      (scroll_cnt),A
    148          
    149          }
   \   0175  FDE1              POP     IY
   \   0177  C30000            JP      LWRD ?BANK_LEAVE_DIRECT_L08
   \   017A            Count:
    150          
    151          int Count(char *str,char language)   //统计字数
    152          {
   \   017A  CD0000            CALL    LWRD ?ENT_AUTO_DIRECT_L09
   \   017D  0000              DEFW    0
   \   017F  FDE5              PUSH    IY
    153              int n=0;
    154              int m=0;
   \   0181  110000            LD      DE,0
   \   0184  FD210000          LD      IY,0
   \   0188            ?0027:
    155              while(*str!=0)
   \   0188  DD6E02            LD      L,(IX+2)
   \   018B  DD6603            LD      H,(IX+3)
   \   018E  AF                XOR     A
   \   018F  B6                OR      (HL)
   \   0190  2841              JR      Z,?0026
   \   0192            ?0028:
    156              {
    157               if((*str >= FirstSectionCode)&&(language!=1))
   \   0192  7E                LD      A,(HL)
   \   0193  FEA1              CP      161
   \   0195  3824              JR      C,?0030
   \   0197  DD4604            LD      B,(IX+4)
   \   019A  05                DEC     B
   \   019B  281E              JR      Z,?0030
   \   019D            ?0032:
   \   019D            ?0031:
   \   019D            ?0029:
    158               {
    159                   if(m+16>scrollregionw_def)break;
   \   019D  211000            LD      HL,16
   \   01A0  CDD901            CALL    LWRD ?0045
   \   01A3  382E              JR      C,?0026
   \   01A5            ?0033:
   \   01A5            ?0034:
    160                   *str++;
   \   01A5  DD3402            INC     (IX+2)
   \   01A8  2003              JR      NZ,?0038
   \   01AA  DD3403            INC     (IX+3)
   \   01AD            ?0038:
    161                   *str++;
   \   01AD  DD3402            INC     (IX+2)
   \   01B0  2003              JR      NZ,?0039
   \   01B2  DD3403            INC     (IX+3)
   \   01B5            ?0039:
    162                   n++;
   \   01B5  13                INC     DE
    163                   m=m+16;
   \   01B6  011000            LD      BC,16
   \   01B9  1814              JR      ?0041
    164               }
    165               else
   \   01BB            ?0030:
    166               {
    167                  if(m+8>scrollregionw_def)break;
   \   01BB  210800            LD      HL,8
   \   01BE  CDD901            CALL    LWRD ?0045
   \   01C1  3810              JR      C,?0026
   \   01C3            ?0036:
   \   01C3            ?0037:
    168                  *str++;
   \   01C3  DD3402            INC     (IX+2)
   \   01C6  2003              JR      NZ,?0040
   \   01C8  DD3403            INC     (IX+3)
   \   01CB            ?0040:
    169                   n++;
   \   01CB  13                INC     DE
    170                   m=m+8;
   \   01CC  010800            LD      BC,8
   \   01CF            ?0041:
   \   01CF  FD09              ADD     IY,BC
   \   01D1            ?0035:
   \   01D1  18B5              JR      ?0027
   \   01D3            ?0026:
    171               }
    172              }
    173              return n;
   \   01D3  EB                EX      DE,HL
    174          }
   \   01D4  FDE1              POP     IY
   \   01D6  C30000            JP      LWRD ?BANK_LEAVE_DIRECT_L08
   \   01D9            ?0045:
   \   01D9  FDE5              PUSH    IY
   \   01DB  C1                POP     BC
   \   01DC  09                ADD     HL,BC
   \   01DD  4D                LD      C,L
   \   01DE  44                LD      B,H
   \   01DF  218C00            LD      HL,140
   \   01E2  C30000            JP      LWRD ?SS_CMP_L02
    175          
   \   0000                    RSEG    UDATA0
   \   0000            str_pt:
   \   0002                    DEFS    2
   \   0002            strhead_pt:
   \   0004                    DEFS    2
   \   0004            scroll_cnt:
   \   0005                    DEFS    1
   \   0005                    END

Errors: none
Warnings: none
Code size: 485
Constant size: 0
Static variable size: Data(5) Iram(0)

⌨️ 快捷键说明

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