ui_scroll.lst

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

LST
613
字号
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       19/Nov/107  00:08:24 #
# 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_music\list\ui_scroll.lst      #
#       Object file   =  d:\case_i_d913f\ap\ap_music\obj\ui_scroll.r01       #
#       ASM file      =  d:\case_i_d913f\ap\ap_music\list\ui_scroll.s01      #
#       Command line  =  -v0 -mb -OD:\case_i_d913f\ap\ap_music\Obj\ -e -K    #
#                        -w -gA -z9 -RCODE -r0 -DNAPDEBUG                    #
#                        -LD:\case_i_d913f\ap\ap_music\List\ -q -t8          #
#                        -AD:\case_i_d913f\ap\ap_music\List\                 #
#                        -ND:\case_i_d913f\ap\ap_music\List\ -X              #
#                        -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                    RSEG    IDATA0(0)
   \   0000                    RSEG    CDATA0(0)
   \   0000                    EXTERN  CharOutRect
   \   0000                    EXTERN  GetOutPutErr
   \   0000                    EXTERN  GetTextPos
   \   0000                    PUBLIC  HoriScroll
   \   0000                    EXTERN  PutS
   \   0000                    PUBLIC  Scroll
   \   0000                    EXTERN  SetAsciiFont
   \   0000                    EXTERN  SetBackgdColor
   \   0000                    EXTERN  SetTextPos
   \   0000                    EXTERN  TextOutRect
   \   0000                    PUBLIC  rTmp
   \   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_LEAVE_DIRECT_L08
   \   0000                    EXTERN  ?BANK_FAST_LEAVE_L08
   \   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.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          char rTmp=0;
     23          
     24          //好像有八个点的误差在scroll开头
     25          
     26          void HoriScroll(signed char step,char language);
     27          
     28          /* (字符串首址,是否初始化true为要初始化) */
     29          void Scroll( char * scrollstr, char language) 
     30          {
   \   0000  CD0000            CALL    LWRD ?ENT_AUTO_DIRECT_L09
   \   0003  FCFF              DEFW    65532
     31                    region_t tregion;
     32                    
     33                    tregion.x = scrollregionx_def;
   \   0005  DD36FC30          LD      (IX-4),48
     34              tregion.y = scrollregiony_def;
   \   0009  DD36FD2D          LD      (IX-3),45
     35              tregion.width = scrollregionw_def;
   \   000D  DD36FE80          LD      (IX-2),128
     36              tregion.height = scrollregionh_def;
   \   0011  DD36FF10          LD      (IX-1),16
     37                    
     38              SetAsciiFont(FONT_TYPE_LARGE);
   \   0015  1E04              LD      E,4
   \   0017  CD0000            CALL    LWRD SetAsciiFont
     39              SetBackgdColor(Color_MENU_def);
   \   001A  010000            LD      BC,0
   \   001D  11FFFF            LD      DE,65535
   \   0020  CD0000            CALL    LWRD SetBackgdColor
     40              
     41              TextOutRect(&tregion ,1);
   \   0023  0E01              LD      C,1
   \   0025  210000            LD      HL,0
   \   0028  39                ADD     HL,SP
   \   0029  EB                EX      DE,HL
   \   002A  CD0000            CALL    LWRD TextOutRect
     42              HoriScroll(1,language);
   \   002D  DD4E04            LD      C,(IX+4)
   \   0030  1E01              LD      E,1
   \   0032  3E00              LD      A,BYTE3 HoriScroll
   \   0034  214B00            LD      HL,LWRD HoriScroll
   \   0037  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
     43              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
     44              
     45              ///-SetBackgdColor(Color_MENU_def);
     46              SetAsciiFont(FONT_TYPE_DEFAULT);
   \   0043  1E04              LD      E,4
   \   0045  CD0000            CALL    LWRD SetAsciiFont
     47          }
   \   0048  C30000            JP      LWRD ?BANK_LEAVE_DIRECT_L08
   \   004B            HoriScroll:
     48          /*
     49          int ReadCode(char *tmpstrpt1,char language)
     50          {
     51                                          int code;
     52                                          
     53                  if((language>4)||(language==1))
     54                  {//ASCII
     55                          code = *tmpstrpt1;
     56                  }
     57                  else if(language==3)
     58                  {//jap
     59                      if (*tmpstrpt1 >= 0x81)
     60                      {
     61                                          code = *(int *)tmpstrpt1;
     62                      }    
     63                      else
     64                      {//ASCII
     65                                          code = *tmpstrpt1;
     66                      }
     67                  }
     68                  else if (*tmpstrpt1 >= FirstSectionCode)
     69                  {//汉字
     70                          code = *(int *)tmpstrpt1;
     71                  }
     72                  else
     73                  {//ASCII
     74                          code = *tmpstrpt1;
     75                  }
     76                  return code;
     77          }
     78          */
     79          
     80          //==========================================================
     81          /*
     82          滚动屏幕
     83          */
     84          void HoriScroll(signed char step,char language)
     85          {
   \   004B  CD0000            CALL    LWRD ?ENT_AUTO_DIRECT_L09
   \   004E  F8FF              DEFW    -8
   \   0050  FDE5              PUSH    IY
     86              int code;
     87              char *tmpstrpt,*tmpstrpt1;
     88              region_t kregion;//余下部分区域
     89              
     90              if (*str_pt == '\0')
   \   0052  2A0000            LD      HL,(str_pt)
   \   0055  AF                XOR     A
   \   0056  B6                OR      (HL)
   \   0057  200C              JR      NZ,?0003
   \   0059            ?0002:
     91              {
     92                    scroll_cnt = 0;
   \   0059  320000            LD      (scroll_cnt),A
     93                    rTmp = 0;
   \   005C  320000            LD      (rTmp),A
     94                  str_pt = strhead_pt;
   \   005F  2A0000            LD      HL,(strhead_pt)
   \   0062  220000            LD      (str_pt),HL
   \   0065            ?0003:
     95              }
     96              
     97              tmpstrpt = str_pt;
   \   0065  DD75FC            LD      (IX-4),L
   \   0068  DD74FD            LD      (IX-3),H
     98                          
     99              if((language>4)||(language==1))
   \   006B  3E04              LD      A,4
   \   006D  B9                CP      C
   \   006E  3831              JR      C,?0015
   \   0070  41                LD      B,C
   \   0071  05                DEC     B
   \   0072  282D              JR      Z,?0015
   \   0074            ?0006:
   \   0074            ?0007:
   \   0074            ?0004:
    100              {//ASCII
    101                  ///code = *str_pt;
    102                  ///kregion.width = 8 - scroll_cnt;
    103                  goto L_ASCII_COMMON;
   \   0074            ?0005:
    104              }
    105              else if(language==3)
   \   0074  DD7E04            LD      A,(IX+4)
   \   0077  FE03              CP      3
   \   0079  7E                LD      A,(HL)
   \   007A  2006              JR      NZ,?0010
   \   007C            ?0009:
    106              {//jap
    107                  if (*str_pt >= 0x81)    
   \   007C  FE81              CP      129
   \   007E  3821              JR      C,?0015
   \   0080            ?0011:
    108                  {
    109                                  ///code = *(int *)str_pt;
    110                                  ///kregion.width = 16 - scroll_cnt;
    111                                  ///tmpstrpt++;
    112                                  goto L_2BYTE_COMMON;
   \   0080  1804              JR      ?0014
   \   0082            ?0012:
    113                  }
    114                  else
    115                  {//ASCII
    116                                  ///code = *str_pt;
    117                                  ///kregion.width = 8 - scroll_cnt;
    118                                  goto L_ASCII_COMMON;
   \   0082            ?0010:
    119                  }
    120              }
    121              else if (*str_pt >= FirstSectionCode)
   \   0082  FEA1              CP      161
   \   0084  381B              JR      C,?0015
   \   0086            ?0014:
   \   0086            ?0013:
    122              {//汉字
    123          L_2BYTE_COMMON:
    124                  code = *(int *)str_pt;
   \   0086  46                LD      B,(HL)
   \   0087  23                INC     HL
   \   0088  66                LD      H,(HL)
   \   0089  68                LD      L,B
   \   008A  E5                PUSH    HL
   \   008B  FDE1              POP     IY
    125                  kregion.width = 16 - scroll_cnt;
   \   008D  3A0000            LD      A,(scroll_cnt)
   \   0090  47                LD      B,A
   \   0091  3E10              LD      A,16
   \   0093  90                SUB     B
   \   0094  DD77FA            LD      (IX-6),A
    126                  tmpstrpt++;
   \   0097  DD34FC            INC     (IX-4)
   \   009A  2015              JR      NZ,?0016
   \   009C  DD34FD            INC     (IX-3)
    127              }
    128              else
   \   009F  1810              JR      ?0016
   \   00A1            ?0015:
   \   00A1            ?0008:
    129              {//ASCII
    130          L_ASCII_COMMON:
    131                  code = *str_pt;
   \   00A1  4E                LD      C,(HL)
   \   00A2  0600              LD      B,0
   \   00A4  C5                PUSH    BC
   \   00A5  FDE1              POP     IY
    132                  kregion.width = 8 - scroll_cnt; 
   \   00A7  3A0000            LD      A,(scroll_cnt)
   \   00AA  47                LD      B,A
   \   00AB  3E08              LD      A,8
   \   00AD  90                SUB     B
   \   00AE  DD77FA            LD      (IX-6),A
   \   00B1            ?0016:
    133              }
    134              
    135              tmpstrpt++;
   \   00B1  DD34FC            INC     (IX-4)
   \   00B4  2003              JR      NZ,?0056
   \   00B6  DD34FD            INC     (IX-3)
   \   00B9            ?0056:
    136              
    137              kregion.x = scrollregionx_def;
   \   00B9  DD36F830          LD      (IX-8),48
    138              kregion.y = scrollregiony_def;
   \   00BD  DD36F92D          LD      (IX-7),45
    139              kregion.height = scrollregionh_def;    
   \   00C1  DD36FB10          LD      (IX-5),16
    140              
    141              if(!CharOutRect(code, *(str_pt+1), &kregion, scroll_cnt))
   \   00C5  48                LD      C,B
   \   00C6  C5                PUSH    BC
   \   00C7  210400            LD      HL,4
   \   00CA  39                ADD     HL,SP
   \   00CB  E5                PUSH    HL
   \   00CC  2A0000            LD      HL,(str_pt)
   \   00CF  CDFE01            CALL    LWRD ?0061
   \   00D2  E1                POP     HL
   \   00D3  E1                POP     HL
   \   00D4  B7                OR      A
   \   00D5  2020              JR      NZ,?0018
   \   00D7            ?0017:
    142              {

⌨️ 快捷键说明

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