ui_scroll_string.lst

来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 628 行 · 第 1/2 页

LST
628
字号
    112              sregion.height = scroll->height;
   \   013D  FD4603            LD      B,(IY+3)
   \   0140  DD70F9            LD      (IX-7),B
    113          
    114              //向左移step列
    115              RegionCopy(&sregion, &tregion);
   \   0143  210C00            LD      HL,12
   \   0146  39                ADD     HL,SP
   \   0147  4D                LD      C,L
   \   0148  44                LD      B,H
   \   0149  210800            LD      HL,8
   \   014C  39                ADD     HL,SP
   \   014D  EB                EX      DE,HL
   \   014E  CD0000            CALL    LWRD RegionCopy
   \   0151            ?0016:
    116          
    117          
    118          
    119          test:
    120              if (*str_pt == '\0')
   \   0151  2A0000            LD      HL,(str_pt)
   \   0154  AF                XOR     A
   \   0155  B6                OR      (HL)
   \   0156  200C              JR      NZ,?0018
   \   0158            ?0017:
    121              {
    122                  tmpstrpt = str_pt = strhead_pt;
   \   0158  2A0000            LD      HL,(strhead_pt)
   \   015B  220000            LD      (str_pt),HL
   \   015E  DD75F0            LD      (IX-16),L
   \   0161  DD74F1            LD      (IX-15),H
   \   0164            ?0018:
    123              }
    124          
    125              //汉字和ASCII的不同处理
    126              if ((*str_pt >= FirstSectionCode)&&(language!=1))
   \   0164  7E                LD      A,(HL)
   \   0165  FEA1              CP      161
   \   0167  3819              JR      C,?0020
   \   0169  DD4604            LD      B,(IX+4)
   \   016C  05                DEC     B
   \   016D  2813              JR      Z,?0020
   \   016F            ?0022:
   \   016F            ?0021:
   \   016F            ?0019:
    127              {//汉字
    128                  code = *(int *)str_pt;
   \   016F  46                LD      B,(HL)
   \   0170  DD70FE            LD      (IX-2),B
   \   0173  23                INC     HL
   \   0174  66                LD      H,(HL)
   \   0175  DD74FF            LD      (IX-1),H
    129                  tmpstrpt++;
   \   0178  DD34F0            INC     (IX-16)
   \   017B  200E              JR      NZ,?0023
   \   017D  DD34F1            INC     (IX-15)
    130              }
    131              else
   \   0180  1809              JR      ?0023
   \   0182            ?0020:
    132              {//ASCII
    133                  code = *str_pt;
   \   0182  4E                LD      C,(HL)
   \   0183  DD71FE            LD      (IX-2),C
   \   0186  0600              LD      B,0
   \   0188  DD70FF            LD      (IX-1),B
   \   018B            ?0023:
    134              }
    135              tmpstrpt++;
   \   018B  DD34F0            INC     (IX-16)
   \   018E  2003              JR      NZ,?0053
   \   0190  DD34F1            INC     (IX-15)
   \   0193            ?0053:
    136          
    137              if (!CharOutRect(code, *(str_pt+1), &kregion, scroll_cnt))
   \   0193  3A0000            LD      A,(scroll_cnt)
   \   0196  4F                LD      C,A
   \   0197  C5                PUSH    BC
   \   0198  210600            LD      HL,6
   \   019B  39                ADD     HL,SP
   \   019C  E5                PUSH    HL
   \   019D  2A0000            LD      HL,(str_pt)
   \   01A0  23                INC     HL
   \   01A1  4E                LD      C,(HL)
   \   01A2  0600              LD      B,0
   \   01A4  DD5EFE            LD      E,(IX-2)
   \   01A7  DD56FF            LD      D,(IX-1)
   \   01AA  CD0000            CALL    LWRD CharOutRect
   \   01AD  E1                POP     HL
   \   01AE  E1                POP     HL
   \   01AF  B7                OR      A
   \   01B0  200E              JR      NZ,?0025
   \   01B2            ?0024:
    138              {
    139                  //strhead_pt = str_pt;
    140                  str_pt = tmpstrpt;
   \   01B2  DD6EF0            LD      L,(IX-16)
   \   01B5  DD66F1            LD      H,(IX-15)
   \   01B8  220000            LD      (str_pt),HL
    141                  scroll_cnt = 0;
   \   01BB  320000            LD      (scroll_cnt),A
    142                  goto test;
   \   01BE  1891              JR      ?0016
   \   01C0            ?0025:
    143              }
    144                  scroll_cnt += step;//未支持负数
   \   01C0  3A0000            LD      A,(scroll_cnt)
   \   01C3  DD8602            ADD     A,(IX+2)
   \   01C6  320000            LD      (scroll_cnt),A
    145          
    146          }
   \   01C9  FDE1              POP     IY
   \   01CB  C30000            JP      LWRD ?BANK_LEAVE_DIRECT_L08
   \   01CE            CountString:
    147          
    148          int CountString(char *str,char language,region_t *scroll)   //统计字数
    149          {
   \   01CE  CD0000            CALL    LWRD ?ENT_AUTO_DIRECT_L09
   \   01D1  0000              DEFW    0
   \   01D3  FDE5              PUSH    IY
    150              int n=0;
    151              int m=0;
   \   01D5  110000            LD      DE,0
   \   01D8  FD210000          LD      IY,0
   \   01DC            ?0027:
    152              while(*str!=0)
   \   01DC  DD6E02            LD      L,(IX+2)
   \   01DF  DD6603            LD      H,(IX+3)
   \   01E2  AF                XOR     A
   \   01E3  B6                OR      (HL)
   \   01E4  2841              JR      Z,?0026
   \   01E6            ?0028:
    153              {
    154               if((*str >= FirstSectionCode)&&(language!=1))
   \   01E6  7E                LD      A,(HL)
   \   01E7  FEA1              CP      161
   \   01E9  3824              JR      C,?0030
   \   01EB  DD4604            LD      B,(IX+4)
   \   01EE  05                DEC     B
   \   01EF  281E              JR      Z,?0030
   \   01F1            ?0032:
   \   01F1            ?0031:
   \   01F1            ?0029:
    155               {
    156                   if(m+16 > scroll->width)break;
   \   01F1  211000            LD      HL,16
   \   01F4  CD2D02            CALL    LWRD ?0064
   \   01F7  382E              JR      C,?0026
   \   01F9            ?0033:
   \   01F9            ?0034:
    157                   *str++;
   \   01F9  DD3402            INC     (IX+2)
   \   01FC  2003              JR      NZ,?0054
   \   01FE  DD3403            INC     (IX+3)
   \   0201            ?0054:
    158                   *str++;
   \   0201  DD3402            INC     (IX+2)
   \   0204  2003              JR      NZ,?0055
   \   0206  DD3403            INC     (IX+3)
   \   0209            ?0055:
    159                   n++;
   \   0209  13                INC     DE
    160                   m=m+16;
   \   020A  011000            LD      BC,16
   \   020D  1814              JR      ?0057
    161               }
    162               else
   \   020F            ?0030:
    163               {
    164                  if(m+8>scroll->width)break;
   \   020F  210800            LD      HL,8
   \   0212  CD2D02            CALL    LWRD ?0064
   \   0215  3810              JR      C,?0026
   \   0217            ?0036:
   \   0217            ?0037:
    165                  *str++;
   \   0217  DD3402            INC     (IX+2)
   \   021A  2003              JR      NZ,?0056
   \   021C  DD3403            INC     (IX+3)
   \   021F            ?0056:
    166                   n++;
   \   021F  13                INC     DE
    167                   m=m+8;
   \   0220  010800            LD      BC,8
   \   0223            ?0057:
   \   0223  FD09              ADD     IY,BC
   \   0225            ?0035:
   \   0225  18B5              JR      ?0027
   \   0227            ?0026:
    168               }
    169              }
    170              return n;
   \   0227  EB                EX      DE,HL
    171          }
   \   0228  FDE1              POP     IY
   \   022A  C30000            JP      LWRD ?BANK_LEAVE_DIRECT_L08
   \   022D            ?0064:
   \   022D  FDE5              PUSH    IY
   \   022F  C1                POP     BC
   \   0230  09                ADD     HL,BC
   \   0231  4D                LD      C,L
   \   0232  44                LD      B,H
   \   0233  DD6E0A            LD      L,(IX+10)
   \   0236  DD660B            LD      H,(IX+11)
   \   0239  23                INC     HL
   \   023A  23                INC     HL
   \   023B  6E                LD      L,(HL)
   \   023C  2600              LD      H,0
   \   023E  C30000            JP      LWRD ?SS_CMP_L02
   \   0241            Count_Byte:
    172          
    173          BYTE Count_Byte(char *str,char language)   //统计字数 zxs added 2007.03.26
    174          {
   \   0241  CD0000            CALL    LWRD ?ENT_AUTO_DIRECT_L09
   \   0244  FEFF              DEFW    65534
   \   0246  DD5E02            LD      E,(IX+2)
   \   0249  DD5603            LD      D,(IX+3)
    175              BYTE n=0;
    176              BYTE m=0;
   \   024C  DD36FF00          LD      (IX-1),0
   \   0250  DD36FE00          LD      (IX-2),0
   \   0254            ?0039:
    177              while(*str!=0)
   \   0254  6B                LD      L,E
   \   0255  62                LD      H,D
   \   0256  AF                XOR     A
   \   0257  B6                OR      (HL)
   \   0258  284B              JR      Z,?0038
   \   025A            ?0040:
    178              {
    179               if((*str >= FirstSectionCode)&&(language!=1))
   \   025A  7E                LD      A,(HL)
   \   025B  FEA1              CP      161
   \   025D  3825              JR      C,?0042
   \   025F  DD4604            LD      B,(IX+4)
   \   0262  05                DEC     B
   \   0263  281F              JR      Z,?0042
   \   0265            ?0044:
   \   0265            ?0043:
   \   0265            ?0041:
    180               {
    181                   if(m+16 > DISPLAYWIDTH)break;
   \   0265  DD4EFE            LD      C,(IX-2)
   \   0268  0600              LD      B,0
   \   026A  211000            LD      HL,16
   \   026D  09                ADD     HL,BC
   \   026E  4D                LD      C,L
   \   026F  44                LD      B,H
   \   0270  218000            LD      HL,128
   \   0273  CD0000            CALL    LWRD ?SS_CMP_L02
   \   0276  382D              JR      C,?0038
   \   0278            ?0045:
   \   0278            ?0046:
    182                   *str++;
   \   0278  13                INC     DE
    183                   *str++;
   \   0279  13                INC     DE
    184                   n++;
   \   027A  DD34FF            INC     (IX-1)
    185                   m=m+16;
   \   027D  DD7EFE            LD      A,(IX-2)
   \   0280  C610              ADD     A,16
   \   0282  181C              JR      ?0061
    186               }
    187               else
   \   0284            ?0042:
    188               {
    189                  if(m+8>DISPLAYWIDTH)break;
   \   0284  DD4EFE            LD      C,(IX-2)
   \   0287  0600              LD      B,0
   \   0289  210800            LD      HL,8
   \   028C  09                ADD     HL,BC
   \   028D  4D                LD      C,L
   \   028E  44                LD      B,H
   \   028F  218000            LD      HL,128
   \   0292  CD0000            CALL    LWRD ?SS_CMP_L02
   \   0295  380E              JR      C,?0038
   \   0297            ?0048:
   \   0297            ?0049:
    190                  *str++;
   \   0297  13                INC     DE
    191                   n++;
   \   0298  DD34FF            INC     (IX-1)
    192                   m=m+8;
   \   029B  DD7EFE            LD      A,(IX-2)
   \   029E  C608              ADD     A,8
   \   02A0            ?0061:
   \   02A0  DD77FE            LD      (IX-2),A
   \   02A3            ?0047:
   \   02A3  18AF              JR      ?0039
   \   02A5            ?0038:
    193               }
    194              }
    195              return n;
   \   02A5  DD6EFF            LD      L,(IX-1)
    196          }  
   \   02A8  C30000            JP      LWRD ?BANK_LEAVE_DIRECT_L08
    197          
   \   0000                    RSEG    UDATA0
   \   0000            region_scroll:
   \   0004                    DEFS    4
   \   0004            scroll_buf:
   \   0024                    DEFS    32
   \   0024            ScrollFlag:
   \   0025                    DEFS    1
   \   0025                    END

Errors: none
Warnings: none
Code size: 683
Constant size: 0
Static variable size: Data(37) Iram(0)

⌨️ 快捷键说明

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