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

📄 ui_scroll_string.lst

📁 炬力方案176*132软件源码,适用于AK1025
💻 LST
📖 第 1 页 / 共 3 页
字号:
     71                  if (!result)
   \   00DC  B7                OR      A
   \   00DD  280E              JR      Z,?0014
   \   00DF            ?0012:
     72                    {
     73                      return;
     74                    }
   \   00DF            ?0013:
     75                  //scroll_cnt = kregion.width-1;
     76              scroll_cnt = kregion.width;
   \   00DF  DD7EF4            LD      A,(IX-12)
   \   00E2  320000            LD      (scroll_cnt),A
     77          
     78              }
     79              else
   \   00E5  1806              JR      ?0014
   \   00E7            ?0006:
     80              {
     81                  str_pt = strhead_pt;
   \   00E7  2A0000            LD      HL,(strhead_pt)
   \   00EA  220000            LD      (str_pt),HL
     82                  return;
     83              }
   \   00ED            ?0014:
     84          
     85          }
   \   00ED            ?0015:
   \   00ED  DDF9              LD      SP,IX
   \   00EF  DDE1              POP     IX
   \   00F1  FDE1              POP     IY
   \   00F3  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   00F6            HoriScrollString:
     86          
     87          //==========================================================
     88          /*
     89          滚动屏幕
     90          */
     91          void HoriScrollString(signed char step,char language,region_t *scroll)
     92          {
   \   00F6  FDE5              PUSH    IY
   \   00F8  DDE5              PUSH    IX
   \   00FA  DD210000          LD      IX,0
   \   00FE  DD39              ADD     IX,SP
   \   0100  C5                PUSH    BC
   \   0101  D5                PUSH    DE
   \   0102  21F0FF            LD      HL,65520
   \   0105  39                ADD     HL,SP
   \   0106  F9                LD      SP,HL
   \   0107  DD6E08            LD      L,(IX+8)
   \   010A  DD6609            LD      H,(IX+9)
   \   010D  E5                PUSH    HL
   \   010E  FDE1              POP     IY
     93              int code;
     94              char *tmpstrpt;
     95              region_t tregion;
     96              region_t sregion;
     97              region_t kregion;//余下部分区域
     98          
     99              tmpstrpt = str_pt;
   \   0110  2A0000            LD      HL,(str_pt)
   \   0113  DD75EC            LD      (IX-20),L
   \   0116  DD74ED            LD      (IX-19),H
    100          
    101              //余下部分区域
    102              kregion.x = scroll->x + scroll->width - step;
   \   0119  FD7E02            LD      A,(IY+2)
   \   011C  FD8600            ADD     A,(IY+0)
   \   011F  93                SUB     E
   \   0120  DD77EE            LD      (IX-18),A
    103              kregion.y = scroll->y;
   \   0123  FD4601            LD      B,(IY+1)
   \   0126  DD70EF            LD      (IX-17),B
    104              kregion.width = step;
   \   0129  DD73F0            LD      (IX-16),E
    105              kregion.height = scroll->height;
   \   012C  FD4603            LD      B,(IY+3)
   \   012F  DD70F1            LD      (IX-15),B
    106          
    107              //设定移动的源,目标区域
    108              sregion.x = scroll->x + step;//暂时未考虑为负数的情况
   \   0132  FD7E00            LD      A,(IY+0)
   \   0135  DD86FC            ADD     A,(IX-4)
   \   0138  DD77F2            LD      (IX-14),A
    109              tregion.x = scroll->x;
   \   013B  FD4600            LD      B,(IY+0)
   \   013E  DD70F6            LD      (IX-10),B
    110              tregion.y = sregion.y = scroll->y;
   \   0141  FD4601            LD      B,(IY+1)
   \   0144  DD70F3            LD      (IX-13),B
   \   0147  DD70F7            LD      (IX-9),B
    111              sregion.width = scroll->width - step;
   \   014A  FD7E02            LD      A,(IY+2)
   \   014D  93                SUB     E
   \   014E  DD77F4            LD      (IX-12),A
    112              sregion.height = scroll->height;
   \   0151  FD4603            LD      B,(IY+3)
   \   0154  DD70F5            LD      (IX-11),B
    113          
    114              //向左移step列
    115              RegionCopy(&sregion, &tregion);
   \   0157  210A00            LD      HL,10
   \   015A  39                ADD     HL,SP
   \   015B  4D                LD      C,L
   \   015C  44                LD      B,H
   \   015D  210600            LD      HL,6
   \   0160  39                ADD     HL,SP
   \   0161  EB                EX      DE,HL
   \   0162  CD0000            CALL    LWRD RegionCopy
   \   0165            ?0016:
    116          
    117          
    118          
    119          test:
    120              if (*str_pt == '\0')
   \   0165  2A0000            LD      HL,(str_pt)
   \   0168  AF                XOR     A
   \   0169  B6                OR      (HL)
   \   016A  200C              JR      NZ,?0018
   \   016C            ?0017:
    121              {
    122                  tmpstrpt = str_pt = strhead_pt;
   \   016C  2A0000            LD      HL,(strhead_pt)
   \   016F  220000            LD      (str_pt),HL
   \   0172  DD75EC            LD      (IX-20),L
   \   0175  DD74ED            LD      (IX-19),H
   \   0178            ?0018:
    123              }
    124          
    125              //汉字和ASCII的不同处理
    126              if ((*str_pt >= FirstSectionCode)&&(language!=1))
   \   0178  7E                LD      A,(HL)
   \   0179  FEA1              CP      161
   \   017B  3819              JR      C,?0020
   \   017D  DD46FE            LD      B,(IX-2)
   \   0180  05                DEC     B
   \   0181  2813              JR      Z,?0020
   \   0183            ?0022:
   \   0183            ?0021:
   \   0183            ?0019:
    127              {//汉字
    128                  code = *(int *)str_pt;
   \   0183  46                LD      B,(HL)
   \   0184  DD70FA            LD      (IX-6),B
   \   0187  23                INC     HL
   \   0188  66                LD      H,(HL)
   \   0189  DD74FB            LD      (IX-5),H
    129                  tmpstrpt++;
   \   018C  DD34EC            INC     (IX-20)
   \   018F  200E              JR      NZ,?0023
   \   0191  DD34ED            INC     (IX-19)
    130              }
    131              else
   \   0194  1809              JR      ?0023
   \   0196            ?0020:
    132              {//ASCII
    133                  code = *str_pt;
   \   0196  4E                LD      C,(HL)
   \   0197  DD71FA            LD      (IX-6),C
   \   019A  0600              LD      B,0
   \   019C  DD70FB            LD      (IX-5),B
   \   019F            ?0023:
    134              }
    135              tmpstrpt++;
   \   019F  DD34EC            INC     (IX-20)
   \   01A2  2003              JR      NZ,?0053
   \   01A4  DD34ED            INC     (IX-19)
   \   01A7            ?0053:
    136          
    137              if (!CharOutRect(code, *(str_pt+1), &kregion, scroll_cnt))
   \   01A7  3A0000            LD      A,(scroll_cnt)
   \   01AA  4F                LD      C,A
   \   01AB  C5                PUSH    BC
   \   01AC  210400            LD      HL,4
   \   01AF  39                ADD     HL,SP
   \   01B0  E5                PUSH    HL
   \   01B1  2A0000            LD      HL,(str_pt)
   \   01B4  23                INC     HL
   \   01B5  4E                LD      C,(HL)
   \   01B6  0600              LD      B,0
   \   01B8  DD5EFA            LD      E,(IX-6)
   \   01BB  DD56FB            LD      D,(IX-5)
   \   01BE  CD0000            CALL    LWRD CharOutRect
   \   01C1  E1                POP     HL
   \   01C2  E1                POP     HL
   \   01C3  B7                OR      A
   \   01C4  200E              JR      NZ,?0025
   \   01C6            ?0024:
    138              {
    139                  //strhead_pt = str_pt;
    140                  str_pt = tmpstrpt;
   \   01C6  DD6EEC            LD      L,(IX-20)
   \   01C9  DD66ED            LD      H,(IX-19)
   \   01CC  220000            LD      (str_pt),HL
    141                  scroll_cnt = 0;
   \   01CF  320000            LD      (scroll_cnt),A
    142                  goto test;
   \   01D2  1891              JR      ?0016
   \   01D4            ?0025:
    143              }
    144                  scroll_cnt += step;//未支持负数
   \   01D4  3A0000            LD      A,(scroll_cnt)
   \   01D7  DD86FC            ADD     A,(IX-4)
   \   01DA  320000            LD      (scroll_cnt),A
    145          
    146          }
   \   01DD  C3ED00            JP      LWRD ?0014
   \   01E0            CountString:
    147          
    148          int CountString(char *str,char language,region_t *scroll)   //统计字数
    149          {
   \   01E0  FDE5              PUSH    IY
   \   01E2  DDE5              PUSH    IX
   \   01E4  C5                PUSH    BC
   \   01E5  F5                PUSH    AF
   \   01E6  D5                PUSH    DE
   \   01E7  DDE1              POP     IX
    150              int n=0;
    151              int m=0;
   \   01E9  210000            LD      HL,0
   \   01EC  39                ADD     HL,SP
   \   01ED  AF                XOR     A
   \   01EE  77                LD      (HL),A
   \   01EF  23                INC     HL
   \   01F0  77                LD      (HL),A
   \   01F1  FD210000          LD      IY,0
   \   01F5            ?0027:
    152              while(*str!=0)
   \   01F5  AF                XOR     A
   \   01F6  DDB600            OR      (IX+0)
   \   01F9  2872              JR      Z,?0026
   \   01FB            ?0028:
    153              {
    154               if((*str >= FirstSectionCode)&&(language!=1))
   \   01FB  DD7E00            LD      A,(IX+0)
   \   01FE  FEA1              CP      161
   \   0200  3838              JR      C,?0030
   \   0202  23                INC     HL
   \   0203  46                LD      B,(HL)

⌨️ 快捷键说明

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