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

📄 ui_scroll.lst

📁 MP3 整个 SDK
💻 LST
📖 第 1 页 / 共 2 页
字号:
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       25/Dec/106  17:00:35 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  banked                                              #
#       Source file   =  d:\case_i_d90f\ap\common\ui_scroll.c                #
#       List file     =  d:\case_i_d90f\ap\ap_music\list\ui_scroll.lst       #
#       Object file   =  d:\case_i_d90f\ap\ap_music\obj\ui_scroll.r01        #
#       ASM file      =  d:\case_i_d90f\ap\ap_music\list\ui_scroll.s01       #
#       Command line  =  -v0 -mb -OD:\case_i_d90f\ap\ap_music\Obj\ -e -K -w  #
#                        -gA -z9 -RCODE -r0 -DNAPDEBUG                       #
#                        -LD:\case_i_d90f\ap\ap_music\List\ -q -t8           #
#                        -AD:\case_i_d90f\ap\ap_music\List\                  #
#                        -ND:\case_i_d90f\ap\ap_music\List\ -X               #
#                        -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\           #
#                        D:\CASE_I_D90F\AP\COMMON\ui_scroll.c                #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    ui_scroll(17)
   \   0000                    RSEG    COM_SCROLL(0)
   \   0000                    RSEG    UDATA0(0)
   \   0000                    EXTERN  CharOutRect
   \   0000                    PUBLIC  Count
   \   0000                    EXTERN  GetTextPos
   \   0000                    PUBLIC  HoriScroll
   \   0000                    EXTERN  PutS
   \   0000                    EXTERN  RegionCopy
   \   0000                    PUBLIC  Scroll
   \   0000                    PUBLIC  ScrollInit
   \   0000                    EXTERN  SetTextPos
   \   0000                    PUBLIC  scroll_cnt
   \   0000                    PUBLIC  str_pt
   \   0000                    PUBLIC  strhead_pt
   \   0000                    EXTERN  ?CLZ80B_4_04_L00
   \   0000                    EXTERN  ?SS_CMP_L02
   \   0000                    EXTERN  ?BANK_CALL_DIRECT_L08
   \   0000                    EXTERN  ?BANK_LEAVE_DIRECT_L08
   \   0000                    EXTERN  ?BANK_FAST_LEAVE_L08
   \   0000                    EXTERN  ?ENT_PARM_DIRECT_L09
   \   0000                    EXTERN  ?ENT_AUTO_DIRECT_L09
   \   0000                    RSEG    COM_SCROLL
   \   0000            Scroll:
      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/05/22 03:23:59 selina Exp $
      9          *******************************************************************************
     10          */
     11          /*
     12          这个函数的作用是在汇编程序外包一层 C ,这样汇编在C中用BANK方式CALL
     13          */
     14          #pragma codeseg(COM_SCROLL)
     15          #include "actos.h"
     16          //#include "ap_music.h"
     17          #include "ap_common.h"
     18          
     19          char *str_pt;//字符串当前指针
     20          char *strhead_pt;//字串首址记录
     21          BYTE scroll_cnt;
     22          
     23          
     24          void ScrollInit(char *str,char language);
     25          void HoriScroll(signed char step,char language);
     26          int Count(char *str,char language);
     27          
     28          /* (字符串首址,是否初始化true为要初始化) */
     29          void Scroll( char * scrollstr, bool mode ,char language)
     30          {
   \   0000  CD0000            CALL    LWRD ?ENT_PARM_DIRECT_L09
     31              if (mode)
   \   0003  0C                INC     C
   \   0004  0D                DEC     C
   \   0005  DD4E0A            LD      C,(IX+10)
   \   0008  280A              JR      Z,?0003
   \   000A            ?0002:
     32              {
     33                  //初始化滚屏(第一次调用时先显示一串字符)
     34                  ScrollInit(scrollstr,language);
   \   000A  3E00              LD      A,BYTE3 ScrollInit
   \   000C  212100            LD      HL,LWRD ScrollInit
   \   000F  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
     35                  return;
     36              }
   \   0012  180A              JR      ?0004
   \   0014            ?0003:
     37              HoriScroll(1,language);
   \   0014  1E01              LD      E,1
   \   0016  3E00              LD      A,BYTE3 HoriScroll
   \   0018  21CC00            LD      HL,LWRD HoriScroll
   \   001B  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
     38          }
   \   001E            ?0004:
   \   001E  C30000            JP      LWRD ?BANK_LEAVE_DIRECT_L08
   \   0021            ScrollInit:
     39          
     40          
     41          void ScrollInit(char *str,char language)
     42          {
   \   0021  CD0000            CALL    LWRD ?ENT_AUTO_DIRECT_L09
   \   0024  F8FF              DEFW    -8
   \   0026  FDE5              PUSH    IY
     43              int code;
     44              int count;
     45              bool result;
     46              region_t kregion;//余下部分区域
     47              scroll_cnt = 0;
   \   0028  AF                XOR     A
   \   0029  320400            LD      (scroll_cnt),A
     48          
     49              SetTextPos(scrollregionx_def, scrollregiony_def);
   \   002C  0E6E              LD      C,110
   \   002E  1E2D              LD      E,45
   \   0030  CD0000            CALL    LWRD SetTextPos
     50              strhead_pt = str_pt = str;
   \   0033  DD6E02            LD      L,(IX+2)
   \   0036  DD6603            LD      H,(IX+3)
   \   0039  220000            LD      (str_pt),HL
   \   003C  220200            LD      (strhead_pt),HL
     51              //tmpstr = str;
     52              count=Count(str_pt,language);
   \   003F  DD4E04            LD      C,(IX+4)
   \   0042  EB                EX      DE,HL
   \   0043  3E00              LD      A,BYTE3 Count
   \   0045  217A01            LD      HL,LWRD Count
   \   0048  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
     53              //if(count > 9) count = 9;
     54              str_pt = PutS(str_pt, count);  
   \   004B  4D                LD      C,L
   \   004C  ED5B0000          LD      DE,(str_pt)
   \   0050  CD0000            CALL    LWRD PutS
   \   0053  220000            LD      (str_pt),HL
     55          
     56              if(*str_pt!=0)
   \   0056  AF                XOR     A
   \   0057  B6                OR      (HL)
   \   0058  2867              JR      Z,?0006
   \   005A            ?0005:
     57              {
     58                  GetTextPos(&kregion.x, &kregion.y);
   \   005A  210200            LD      HL,2
   \   005D  39                ADD     HL,SP
   \   005E  010100            LD      BC,1
   \   0061  09                ADD     HL,BC
   \   0062  4D                LD      C,L
   \   0063  44                LD      B,H
   \   0064  2B                DEC     HL
   \   0065  EB                EX      DE,HL
   \   0066  CD0000            CALL    LWRD GetTextPos
     59          
     60                  kregion.width = scrollregionw_def+scrollregionx_def - kregion.x;
   \   0069  3EB9              LD      A,185
   \   006B  DD96F8            SUB     (IX-8)
   \   006E  DD77FA            LD      (IX-6),A
     61                  kregion.height = scrollregionh_def;
   \   0071  DD36FB10          LD      (IX-5),16
     62                  //汉字和ASCII的不同处理
     63                  if ((*str_pt >= FirstSectionCode)&&(language!=1))
   \   0075  2A0000            LD      HL,(str_pt)
   \   0078  7E                LD      A,(HL)
   \   0079  FEA1              CP      161
   \   007B  380F              JR      C,?0008
   \   007D  DD4604            LD      B,(IX+4)
   \   0080  05                DEC     B
   \   0081  2809              JR      Z,?0008
   \   0083            ?0010:
   \   0083            ?0009:
   \   0083            ?0007:
     64                  {//汉字
     65                      code = *(int *)str_pt;
   \   0083  46                LD      B,(HL)
   \   0084  23                INC     HL
   \   0085  66                LD      H,(HL)
   \   0086  68                LD      L,B
   \   0087  E5                PUSH    HL
   \   0088  FDE1              POP     IY
     66                  }
     67                  else
   \   008A  1806              JR      ?0011
   \   008C            ?0008:
     68                  {//ASCII
     69                       code = *str_pt;
   \   008C  4E                LD      C,(HL)
   \   008D  0600              LD      B,0
   \   008F  C5                PUSH    BC
   \   0090  FDE1              POP     IY
   \   0092            ?0011:
     70                  }
     71          
     72                  //输出最后一个字
     73                  result = CharOutRect(code, &kregion, scroll_cnt);
   \   0092  3A0400            LD      A,(scroll_cnt)
   \   0095  4F                LD      C,A
   \   0096  C5                PUSH    BC
   \   0097  210400            LD      HL,4
   \   009A  39                ADD     HL,SP
   \   009B  4D                LD      C,L
   \   009C  44                LD      B,H
   \   009D  FDE5              PUSH    IY
   \   009F  D1                POP     DE
   \   00A0  CD0000            CALL    LWRD CharOutRect
   \   00A3  E1                POP     HL
     74                  result = CharOutRect(code, &kregion, scroll_cnt);
   \   00A4  3A0400            LD      A,(scroll_cnt)
   \   00A7  4F                LD      C,A
   \   00A8  C5                PUSH    BC
   \   00A9  210400            LD      HL,4
   \   00AC  39                ADD     HL,SP
   \   00AD  4D                LD      C,L
   \   00AE  44                LD      B,H
   \   00AF  FDE5              PUSH    IY
   \   00B1  D1                POP     DE
   \   00B2  CD0000            CALL    LWRD CharOutRect
   \   00B5  E1                POP     HL
     75                  if (!result)
   \   00B6  B7                OR      A
   \   00B7  280E              JR      Z,?0014
   \   00B9            ?0012:
     76                  {
     77                      return;
     78                  }
   \   00B9            ?0013:
     79                  //scroll_cnt = kregion.width-1;
     80                  scroll_cnt = kregion.width;
   \   00B9  DD7EFA            LD      A,(IX-6)
   \   00BC  320400            LD      (scroll_cnt),A
     81              }
     82              else
   \   00BF  1806              JR      ?0014
   \   00C1            ?0006:
     83              {
     84                  str_pt = strhead_pt;
   \   00C1  2A0200            LD      HL,(strhead_pt)
   \   00C4  220000            LD      (str_pt),HL
     85                  return;
     86              }
   \   00C7            ?0014:
     87          }
   \   00C7            ?0015:
   \   00C7  FDE1              POP     IY
   \   00C9  C30000            JP      LWRD ?BANK_LEAVE_DIRECT_L08
   \   00CC            HoriScroll:
     88          
     89          //==========================================================
     90          /*

⌨️ 快捷键说明

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