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

📄 ui_scroll_string.lst

📁 炬力方案176*132软件源码,适用于AK1025
💻 LST
📖 第 1 页 / 共 3 页
字号:
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       27/Sep/107  17:30:54 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  banked                                              #
#       Source file   =  d:\case_i_d913f\ap\common\ui_scroll_string.c        #
#       List file     =  d:\case_i_d913f\ap\ap_browser\list\ui_scroll_string.lst#
#       Object file   =  d:\case_i_d913f\ap\ap_browser\obj\ui_scroll_string.r01#
#       ASM file      =  d:\case_i_d913f\ap\ap_browser\list\ui_scroll_string.s01#
#       Command line  =  -v0 -mb -OD:\case_i_d913f\ap\ap_browser\Obj\ -e -K  #
#                        -w -gA -s9 -RCODE -r0 -DNAPDEBUG -DAMV_JPG_TXT      #
#                        -LD:\case_i_d913f\ap\ap_browser\List\ -q -t8        #
#                        -AD:\case_i_d913f\ap\ap_browser\List\               #
#                        -ND:\case_i_d913f\ap\ap_browser\List\ -X            #
#                        -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\         #
#                        D:\CASE_I_D913F\AP\COMMON\ui_scroll_string.c        #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    ui_scroll_string(17)
   \   0000                    RSEG    COM_RES(0)
   \   0000                    RSEG    UDATA0(0)
   \   0000                    EXTERN  CharOutRect
   \   0000                    PUBLIC  CountString
   \   0000                    PUBLIC  Count_Byte
   \   0000                    EXTERN  GetTextPos
   \   0000                    PUBLIC  HoriScrollString
   \   0000                    EXTERN  PutS
   \   0000                    EXTERN  RegionCopy
   \   0000                    PUBLIC  ScrollFlag
   \   0000                    PUBLIC  ScrollString
   \   0000                    PUBLIC  ScrollStringInit
   \   0000                    EXTERN  SetTextPos
   \   0000                    PUBLIC  region_scroll
   \   0000                    PUBLIC  scroll_buf
   \   0000                    EXTERN  scroll_cnt
   \   0000                    EXTERN  str_pt
   \   0000                    EXTERN  strhead_pt
   \   0000                    EXTERN  ?CLZ80B_4_04_L00
   \   0000                    EXTERN  ?BANK_CALL_DIRECT_L08
   \   0000                    EXTERN  ?BANK_FAST_LEAVE_L08
   \   0000                    RSEG    COM_RES
   \   0000            ScrollString:
      1          /*
      2          *******************************************************************************
      3          *                ACTOS AP
      4          *        wma player basal module implementation
      5          *
      6          *        (c) Copyright Actions Co,Ld.
      7          *
      8          *  $Id: ui_scroll.c,v 1.1.1.1 2006/04/21 08:22:43 selina Exp $
      9          *******************************************************************************
     10          */
     11          /*
     12          这个函数的作用是在汇编程序外包一层 C ,这样汇编在C中用BANK方式CALL
     13          */
     14          #pragma codeseg(COM_RES)
     15          #include "actos.h"
     16          #include "ap_common.h"     
     17          #define  DISPLAYWIDTH  128      //显示一行字符的宽度 
     18          region_t  region_scroll; 
     19          char  scroll_buf[32];
     20          char  ScrollFlag;
     21           
     22          void ScrollStringInit(char *str,char language,region_t *scroll);
     23          void HoriScrollString(signed char step,char language,region_t *scroll);
     24          int CountString(char *str,char language,region_t *scroll);
     25          
     26          /* (字符串首址,是否初始化true为要初始化) */
     27          void ScrollString( char * scrollstr, bool mode ,char language,region_t *scroll)
     28          {
   \   0000  C5                PUSH    BC
   \   0001  D5                PUSH    DE
     29              if (mode)
   \   0002  AF                XOR     A
   \   0003  B1                OR      C
   \   0004  210A00            LD      HL,10
   \   0007  39                ADD     HL,SP
   \   0008  4E                LD      C,(HL)
   \   0009  23                INC     HL
   \   000A  46                LD      B,(HL)
   \   000B  C5                PUSH    BC
   \   000C  2B                DEC     HL
   \   000D  2B                DEC     HL
   \   000E  2B                DEC     HL
   \   000F  4E                LD      C,(HL)
   \   0010  280A              JR      Z,?0003
   \   0012            ?0002:
     30              {
     31                  //初始化滚屏(第一次调用时先显示一串字符)
     32                  ScrollStringInit(scrollstr,language,scroll);
   \   0012  3E00              LD      A,BYTE3 ScrollStringInit
   \   0014  212C00            LD      HL,LWRD ScrollStringInit
   \   0017  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   001A  180A              JR      ?0051
     33                  return;
     34              }
   \   001C            ?0003:
     35              HoriScrollString(1,language,scroll);
   \   001C  1E01              LD      E,1
   \   001E  3E00              LD      A,BYTE3 HoriScrollString
   \   0020  21F600            LD      HL,LWRD HoriScrollString
   \   0023  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   0026            ?0051:
   \   0026  E1                POP     HL
     36          }
   \   0027            ?0004:
   \   0027  E1                POP     HL
   \   0028  E1                POP     HL
   \   0029  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   002C            ScrollStringInit:
     37          
     38          void ScrollStringInit(char *str,char language,region_t *scroll)
     39          {
   \   002C  FDE5              PUSH    IY
   \   002E  DDE5              PUSH    IX
   \   0030  DD210000          LD      IX,0
   \   0034  DD39              ADD     IX,SP
   \   0036  C5                PUSH    BC
   \   0037  D5                PUSH    DE
   \   0038  21F6FF            LD      HL,65526
   \   003B  39                ADD     HL,SP
   \   003C  F9                LD      SP,HL
   \   003D  DD6E08            LD      L,(IX+8)
   \   0040  DD6609            LD      H,(IX+9)
   \   0043  E5                PUSH    HL
   \   0044  FDE1              POP     IY
     40              int code;
     41              int count;
     42              bool result;
     43              region_t kregion;//余下部分区域                      
     44              scroll_cnt = 0;
   \   0046  AF                XOR     A
   \   0047  320000            LD      (scroll_cnt),A
     45           
     46              SetTextPos(scroll->x, scroll->y);
   \   004A  FD4E01            LD      C,(IY+1)
   \   004D  FD5E00            LD      E,(IY+0)
   \   0050  CD0000            CALL    LWRD SetTextPos
     47              strhead_pt = str_pt = str;
   \   0053  DD6EFC            LD      L,(IX-4)
   \   0056  DD66FD            LD      H,(IX-3)
   \   0059  220000            LD      (str_pt),HL
   \   005C  220000            LD      (strhead_pt),HL
     48              //tmpstr = str;
     49              count=CountString(str_pt,language,scroll); 
   \   005F  FDE5              PUSH    IY
   \   0061  DD4EFE            LD      C,(IX-2)
   \   0064  EB                EX      DE,HL
   \   0065  3E00              LD      A,BYTE3 CountString
   \   0067  21E001            LD      HL,LWRD CountString
   \   006A  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   006D  F1                POP     AF
     50              str_pt = PutS(str_pt, count);
   \   006E  4D                LD      C,L
   \   006F  ED5B0000          LD      DE,(str_pt)
   \   0073  CD0000            CALL    LWRD PutS
   \   0076  220000            LD      (str_pt),HL
     51           
     52           
     53          
     54                if(*str_pt!=0)
   \   0079  AF                XOR     A
   \   007A  B6                OR      (HL)
   \   007B  286A              JR      Z,?0006
   \   007D            ?0005:
     55                {
     56                  GetTextPos(&kregion.x, &kregion.y);
   \   007D  210000            LD      HL,0
   \   0080  39                ADD     HL,SP
   \   0081  010100            LD      BC,1
   \   0084  09                ADD     HL,BC
   \   0085  4D                LD      C,L
   \   0086  44                LD      B,H
   \   0087  2B                DEC     HL
   \   0088  EB                EX      DE,HL
   \   0089  CD0000            CALL    LWRD GetTextPos
     57                  kregion.width = scroll->width+scroll->x - kregion.x;
   \   008C  FD7E00            LD      A,(IY+0)
   \   008F  FD8602            ADD     A,(IY+2)
   \   0092  DD96F2            SUB     (IX-14)
   \   0095  DD77F4            LD      (IX-12),A
     58                  kregion.height = scroll->height;
   \   0098  FD4603            LD      B,(IY+3)
   \   009B  DD70F5            LD      (IX-11),B
     59                  //汉字和ASCII的不同处理
     60                  if ((*str_pt >= FirstSectionCode)&&(language!=1))
   \   009E  2A0000            LD      HL,(str_pt)
   \   00A1  7E                LD      A,(HL)
   \   00A2  FEA1              CP      161
   \   00A4  3811              JR      C,?0008
   \   00A6  DD46FE            LD      B,(IX-2)
   \   00A9  05                DEC     B
   \   00AA  280B              JR      Z,?0008
   \   00AC            ?0010:
   \   00AC            ?0009:
   \   00AC            ?0007:
     61                    {//汉字
     62                      code = *(int *)str_pt;
   \   00AC  46                LD      B,(HL)
   \   00AD  DD70F6            LD      (IX-10),B
   \   00B0  23                INC     HL
   \   00B1  66                LD      H,(HL)
   \   00B2  DD74F7            LD      (IX-9),H
     63                    }
     64                  else
   \   00B5  1809              JR      ?0011
   \   00B7            ?0008:
     65                    {//ASCII
     66                       code = *str_pt;
   \   00B7  4E                LD      C,(HL)
   \   00B8  DD71F6            LD      (IX-10),C
   \   00BB  0600              LD      B,0
   \   00BD  DD70F7            LD      (IX-9),B
   \   00C0            ?0011:
     67                    }
     68          
     69                  //输出最后一个字
     70                  result = CharOutRect(code, *(str_pt+1), &kregion, scroll_cnt);
   \   00C0  3A0000            LD      A,(scroll_cnt)
   \   00C3  4F                LD      C,A
   \   00C4  C5                PUSH    BC
   \   00C5  210200            LD      HL,2
   \   00C8  39                ADD     HL,SP
   \   00C9  E5                PUSH    HL
   \   00CA  2A0000            LD      HL,(str_pt)
   \   00CD  23                INC     HL
   \   00CE  4E                LD      C,(HL)
   \   00CF  0600              LD      B,0
   \   00D1  DD5EF6            LD      E,(IX-10)
   \   00D4  DD56F7            LD      D,(IX-9)
   \   00D7  CD0000            CALL    LWRD CharOutRect
   \   00DA  E1                POP     HL
   \   00DB  E1                POP     HL

⌨️ 快捷键说明

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