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

📄 ui_scroll.lst

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

   \   0000                    NAME    ui_scroll(17)
   \   0000                    RSEG    COM_SCROLL(0)
   \   0000                    EXTERN  CharOutRect
   \   0000                    EXTERN  GetOutPutErr
   \   0000                    EXTERN  GetTextPos
   \   0000                    PUBLIC  HoriScroll
   \   0000                    EXTERN  PutS
   \   0000                    PUBLIC  ReadCode
   \   0000                    PUBLIC  Scroll
   \   0000                    EXTERN  SetAsciiFont
   \   0000                    EXTERN  SetBackgdColor
   \   0000                    EXTERN  SetTextPos
   \   0000                    EXTERN  TextOutRect
   \   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_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.3 2004/12/30 09:22:32 ybfu Exp $
      9          *******************************************************************************
     10          */
     11          /*
     12          这个函数的作用是在汇编程序外包一层 C ,这样汇编在C中用BANK方式CALL 
     13          */
     14          #pragma codeseg(COM_SCROLL)
     15          #include "actos.h"
     16          #include "ap_common.h"
     17          
     18          ///-char *str_pt;//字符串当前指针
     19          ///-char *strhead_pt;//字串首址记录   
     20          ///-BYTE scroll_cnt;
     21          
     22          //好像有八个点的误差在scroll开头
     23          
     24          void HoriScroll(signed char step,char language);
     25          
     26          /* (字符串首址,是否初始化true为要初始化) */
     27          void Scroll( char * scrollstr, char language) 
     28          {
   \   0000  C5                PUSH    BC
   \   0001  D5                PUSH    DE
   \   0002  F5                PUSH    AF
   \   0003  F5                PUSH    AF
     29                    region_t tregion;
     30                    
     31                    tregion.x = scrollregionx_def;
   \   0004  210000            LD      HL,0
   \   0007  39                ADD     HL,SP
   \   0008  3630              LD      (HL),48
     32              tregion.y = scrollregiony_def;
   \   000A  23                INC     HL
   \   000B  362D              LD      (HL),45
     33              tregion.width = scrollregionw_def;
   \   000D  23                INC     HL
   \   000E  3680              LD      (HL),128
     34              tregion.height = scrollregionh_def;
   \   0010  23                INC     HL
   \   0011  3610              LD      (HL),16
     35                    
     36              SetAsciiFont(FONT_TYPE_LARGE);
   \   0013  1E04              LD      E,4
   \   0015  CD0000            CALL    LWRD SetAsciiFont
     37              SetBackgdColor(Color_MENU_def);
   \   0018  010000            LD      BC,0
   \   001B  11FFFF            LD      DE,65535
   \   001E  CD0000            CALL    LWRD SetBackgdColor
     38              
     39              TextOutRect(&tregion ,1);
   \   0021  0E01              LD      C,1
   \   0023  210000            LD      HL,0
   \   0026  39                ADD     HL,SP
   \   0027  EB                EX      DE,HL
   \   0028  CD0000            CALL    LWRD TextOutRect
     40              HoriScroll(1,language);
   \   002B  210600            LD      HL,6
   \   002E  39                ADD     HL,SP
   \   002F  4E                LD      C,(HL)
   \   0030  1E01              LD      E,1
   \   0032  3E00              LD      A,BYTE3 HoriScroll
   \   0034  219400            LD      HL,LWRD HoriScroll
   \   0037  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
     41              TextOutRect(&tregion ,0);
   \   003A  0E00              LD      C,0
   \   003C  69                LD      L,C
   \   003D  61                LD      H,C
   \   003E  39                ADD     HL,SP
   \   003F  EB                EX      DE,HL
   \   0040  CD0000            CALL    LWRD TextOutRect
     42              
     43              ///-SetBackgdColor(Color_MENU_def);
     44              SetAsciiFont(FONT_TYPE_DEFAULT);
   \   0043  1E04              LD      E,4
   \   0045  CD0000            CALL    LWRD SetAsciiFont
     45          }
   \   0048  E1                POP     HL
   \   0049  E1                POP     HL
   \   004A  E1                POP     HL
   \   004B  E1                POP     HL
   \   004C  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   004F            ReadCode:
     46          
     47          int ReadCode(char *tmpstrpt1,char language)
     48          {
   \   004F  FDE5              PUSH    IY
   \   0051  DDE5              PUSH    IX
   \   0053  C5                PUSH    BC
   \   0054  D5                PUSH    DE
   \   0055  DDE1              POP     IX
     49                                          int code;
     50          
     51                  if((language>4)||(language==1))
   \   0057  3E04              LD      A,4
   \   0059  B9                CP      C
   \   005A  3825              JR      C,?0014
   \   005C  41                LD      B,C
   \   005D  05                DEC     B
   \   005E  2821              JR      Z,?0014
   \   0060            ?0004:
   \   0060            ?0005:
   \   0060            ?0002:
     52                  {//ASCII
     53                          code = *tmpstrpt1;
   \   0060            ?0003:
     54                  }
     55                  else if(language==3)
   \   0060  210000            LD      HL,0
   \   0063  39                ADD     HL,SP
   \   0064  7E                LD      A,(HL)
   \   0065  FE03              CP      3
   \   0067  DD7E00            LD      A,(IX+0)
   \   006A  2006              JR      NZ,?0008
   \   006C            ?0007:
     56                  {//jap
     57                      if (*tmpstrpt1 >= 0x81)
   \   006C  FE81              CP      129
   \   006E  3811              JR      C,?0014
   \   0070            ?0009:
     58                      {
     59                                          code = *(int *)tmpstrpt1;
   \   0070  1804              JR      ?0059
     60                      }    
     61                      else
   \   0072            ?0010:
     62                      {//ASCII
     63                                          code = *tmpstrpt1;
   \   0072            ?0011:
   \   0072            ?0008:
     64                      }
     65                  }
     66                  else if (*tmpstrpt1 >= FirstSectionCode)
   \   0072  FEA1              CP      161
   \   0074  380B              JR      C,?0014
   \   0076            ?0013:
     67                  {//汉字
     68                          code = *(int *)tmpstrpt1;
   \   0076            ?0059:
   \   0076  DD6E00            LD      L,(IX+0)
   \   0079  DD6601            LD      H,(IX+1)
   \   007C  E5                PUSH    HL
   \   007D  FDE1              POP     IY
     69                  }
     70                  else
   \   007F  1808              JR      ?0015
   \   0081            ?0014:
     71                  {//ASCII
     72                          code = *tmpstrpt1;
   \   0081  DD4E00            LD      C,(IX+0)
   \   0084  0600              LD      B,0
   \   0086  C5                PUSH    BC
   \   0087  FDE1              POP     IY
   \   0089            ?0015:
   \   0089            ?0012:
   \   0089            ?0006:
     73                  }
     74                  return code;
   \   0089  FDE5              PUSH    IY
   \   008B  E1                POP     HL
     75          }
   \   008C  F1                POP     AF
   \   008D  DDE1              POP     IX
   \   008F  FDE1              POP     IY
   \   0091  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   0094            HoriScroll:
     76          
     77          
     78          //==========================================================
     79          /*
     80          滚动屏幕
     81          */
     82          void HoriScroll(signed char step,char language)
     83          {
   \   0094  FDE5              PUSH    IY
   \   0096  DDE5              PUSH    IX
   \   0098  DD210000          LD      IX,0
   \   009C  DD39              ADD     IX,SP
   \   009E  C5                PUSH    BC
   \   009F  D5                PUSH    DE
   \   00A0  F5                PUSH    AF
   \   00A1  F5                PUSH    AF
   \   00A2  F5                PUSH    AF
   \   00A3  F5                PUSH    AF
     84              int code;
     85              char *tmpstrpt,*tmpstrpt1;
     86              region_t kregion;//余下部分区域
     87              ///bool result;   
     88                          
     89              
     90              if (*str_pt == '\0')
   \   00A4  2A0000            LD      HL,(str_pt)
   \   00A7  AF                XOR     A
   \   00A8  B6                OR      (HL)
   \   00A9  2009              JR      NZ,?0017
   \   00AB            ?0016:
     91              {
     92                    scroll_cnt = 0;
   \   00AB  320000            LD      (scroll_cnt),A
     93                  str_pt = strhead_pt;
   \   00AE  2A0000            LD      HL,(strhead_pt)
   \   00B1  220000            LD      (str_pt),HL
   \   00B4            ?0017:
     94              }
     95              
     96              tmpstrpt = str_pt;
   \   00B4  DD75FA            LD      (IX-6),L
   \   00B7  DD74FB            LD      (IX-5),H
     97                          
     98              if((language>4)||(language==1))
   \   00BA  3E04              LD      A,4
   \   00BC  B9                CP      C
   \   00BD  3847              JR      C,?0030
   \   00BF  41                LD      B,C
   \   00C0  05                DEC     B
   \   00C1  2843              JR      Z,?0030
   \   00C3            ?0020:
   \   00C3            ?0021:
   \   00C3            ?0018:
     99              {//ASCII
    100                  code = *str_pt;
    101                  kregion.width = 8 - scroll_cnt; 
   \   00C3            ?0019:
    102              }
    103              else if(language==3)
   \   00C3  DD7EFE            LD      A,(IX-2)
   \   00C6  FE03              CP      3
   \   00C8  7E                LD      A,(HL)
   \   00C9  201C              JR      NZ,?0024
   \   00CB            ?0023:
    104              {//jap
    105                  if (*str_pt >= 0x81)    
   \   00CB  FE81              CP      129
   \   00CD  3837              JR      C,?0030
   \   00CF            ?0025:
    106                  {
    107                                  code = *(int *)str_pt;
   \   00CF  46                LD      B,(HL)
   \   00D0  23                INC     HL
   \   00D1  66                LD      H,(HL)
   \   00D2  68                LD      L,B
   \   00D3  E5                PUSH    HL
   \   00D4  FDE1              POP     IY
    108                                  kregion.width = 16 - scroll_cnt;     
   \   00D6  3A0000            LD      A,(scroll_cnt)
   \   00D9  47                LD      B,A
   \   00DA  3E10              LD      A,16
   \   00DC  90                SUB     B
   \   00DD  DD77F6            LD      (IX-10),A
    109                                  tmpstrpt++;
   \   00E0  DD34FA            INC     (IX-6)
   \   00E3  2031              JR      NZ,?0031
   \   00E5  181A              JR      ?0070
    110                  }
    111                  else
   \   00E7            ?0026:
    112                  {//ASCII
    113                                  code = *str_pt;
    114                                  kregion.width = 8 - scroll_cnt; 
   \   00E7            ?0027:
   \   00E7            ?0024:
    115                  }
    116              }
    117              else if (*str_pt >= FirstSectionCode)
   \   00E7  FEA1              CP      161
   \   00E9  381B              JR      C,?0030
   \   00EB            ?0029:
    118              {//汉字

⌨️ 快捷键说明

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