ui_scroll2.lst

来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 308 行

LST
308
字号
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       18/Nov/107  23:49:00 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  banked                                              #
#       Source file   =  d:\case_i_d913f\ap\common\ui_scroll2.c              #
#       List file     =  d:\case_i_d913f\ap\ap_music\list\ui_scroll2.lst     #
#       Object file   =  d:\case_i_d913f\ap\ap_music\obj\ui_scroll2.r01      #
#       ASM file      =  d:\case_i_d913f\ap\ap_music\list\ui_scroll2.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_scroll2.c              #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    ui_scroll2(17)
   \   0000                    RSEG    CODE(0)
   \   0000                    EXTERN  CharOutRect
   \   0000                    EXTERN  GetOutPutErr
   \   0000                    EXTERN  GetTextPos
   \   0000                    EXTERN  PutS
   \   0000                    PUBLIC  ScrollInit
   \   0000                    PUBLIC  ScrollInit_sub
   \   0000                    EXTERN  SetAsciiFont
   \   0000                    EXTERN  SetBackgdColor
   \   0000                    EXTERN  SetTextPos
   \   0000                    EXTERN  TextOutRect
   \   0000                    EXTERN  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    CODE
   \   0000            ScrollInit:
      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          #include "actos.h"
     15          #include "ap_common.h"
     16          
     17          ///-extern char *str_pt;//字符串当前指针
     18          ///-extern char *strhead_pt;//字串首址记录   
     19          ///-extern BYTE scroll_cnt;
     20          
     21          extern char rTmp;
     22          
     23          void ScrollInit_sub(char *str,char language);
     24          
     25          /* (字符串首址,是否初始化true为要初始化) */
     26          void ScrollInit( char * scrollstr, char language) 
     27          {
   \   0000  CD0000            CALL    LWRD ?ENT_AUTO_DIRECT_L09
   \   0003  FCFF              DEFW    65532
     28                    region_t tregion;
     29                    
     30                    tregion.x = scrollregionx_def;
   \   0005  DD36FC30          LD      (IX-4),48
     31              tregion.y = scrollregiony_def;
   \   0009  DD36FD2D          LD      (IX-3),45
     32              tregion.width = scrollregionw_def;
   \   000D  DD36FE80          LD      (IX-2),128
     33              tregion.height = scrollregionh_def;
   \   0011  DD36FF10          LD      (IX-1),16
     34                    
     35              SetAsciiFont(FONT_TYPE_LARGE);
   \   0015  1E04              LD      E,4
   \   0017  CD0000            CALL    LWRD SetAsciiFont
     36              SetBackgdColor(Color_MENU_def);
   \   001A  010000            LD      BC,0
   \   001D  11FFFF            LD      DE,65535
   \   0020  CD0000            CALL    LWRD SetBackgdColor
     37              
     38              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
     39              ScrollInit_sub(scrollstr,language);
   \   002D  DD4E04            LD      C,(IX+4)
   \   0030  DD5E02            LD      E,(IX+2)
   \   0033  DD5603            LD      D,(IX+3)
   \   0036  3E00              LD      A,BYTE3 ScrollInit_sub
   \   0038  214F00            LD      HL,LWRD ScrollInit_sub
   \   003B  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
     40              TextOutRect(&tregion ,0);
   \   003E  0E00              LD      C,0
   \   0040  69                LD      L,C
   \   0041  61                LD      H,C
   \   0042  39                ADD     HL,SP
   \   0043  EB                EX      DE,HL
   \   0044  CD0000            CALL    LWRD TextOutRect
     41              
     42              ///-SetBackgdColor(Color_MENU_def);
     43              SetAsciiFont(FONT_TYPE_DEFAULT);
   \   0047  1E04              LD      E,4
   \   0049  CD0000            CALL    LWRD SetAsciiFont
     44              return;
     45          }
   \   004C  C30000            JP      LWRD ?BANK_LEAVE_DIRECT_L08
   \   004F            ScrollInit_sub:
     46          /*
     47          int ReadCode_sub(char *str_pt,char language)
     48          {
     49                                          int code;
     50          
     51                  if((language>4)||(language==1))
     52                  {//ASCII
     53                          code = *str_pt;
     54                  }
     55                  else if(language==3)
     56                  {//jap
     57                      if (*str_pt >= 0x81)        
     58                      {
     59                                          code = *(int *)str_pt;
     60                      }    
     61                      else
     62                      {//ASCII
     63                                          code = *str_pt;
     64                      }
     65                  }
     66                  else if (*str_pt >= FirstSectionCode)
     67                  {//汉字
     68                          code = *(int *)str_pt;
     69                  }
     70                  else
     71                  {//ASCII
     72                          code = *str_pt;
     73                  }
     74                  return code;
     75          }
     76          */
     77          void ScrollInit_sub(char *str,char language)
     78          {
   \   004F  CD0000            CALL    LWRD ?ENT_AUTO_DIRECT_L09
   \   0052  FAFF              DEFW    65530
     79              int code;
     80              region_t kregion;//余下部分区域
     81              
     82              SetTextPos(scrollregionx_def, scrollregiony_def);
   \   0054  0E2D              LD      C,45
   \   0056  1E30              LD      E,48
   \   0058  CD0000            CALL    LWRD SetTextPos
     83              strhead_pt = str_pt = str;
   \   005B  DD6E02            LD      L,(IX+2)
   \   005E  DD6603            LD      H,(IX+3)
   \   0061  220000            LD      (str_pt),HL
   \   0064  220000            LD      (strhead_pt),HL
     84                          
     85              str_pt = PutS(str_pt, -1);
   \   0067  0EFF              LD      C,255
   \   0069  EB                EX      DE,HL
   \   006A  CD0000            CALL    LWRD PutS
   \   006D  220000            LD      (str_pt),HL
     86              
     87              if (GetOutPutErr() == RESULT_PUTCHAR_X_ERR)
   \   0070  CD0000            CALL    LWRD GetOutPutErr
   \   0073  3D                DEC     A
   \   0074  206D              JR      NZ,?0003
   \   0076            ?0002:
     88              {//x超限
     89                                          
     90                                          ///code = ReadCode_sub(str_pt, language);
     91                                          //---------------------------------------
     92                                          if((language>4)||(language==1))
   \   0076  3E04              LD      A,4
   \   0078  DDBE04            CP      (IX+4)
   \   007B  3826              JR      C,?0016
   \   007D  DD4604            LD      B,(IX+4)
   \   0080  05                DEC     B
   \   0081  2820              JR      Z,?0016
   \   0083            ?0006:
   \   0083            ?0007:
   \   0083            ?0004:
     93                  {//ASCII
     94                          code = *str_pt;
   \   0083            ?0005:
     95                  }
     96                  else if(language==3)
   \   0083  DD7E04            LD      A,(IX+4)
   \   0086  FE03              CP      3
   \   0088  2A0000            LD      HL,(str_pt)
   \   008B  7E                LD      A,(HL)
   \   008C  2006              JR      NZ,?0010
   \   008E            ?0009:
     97                  {//jap
     98                      if (*str_pt >= 0x81)        
   \   008E  FE81              CP      129
   \   0090  3814              JR      C,?0019
   \   0092            ?0011:
     99                      {
    100                                          code = *(int *)str_pt;
   \   0092  1804              JR      ?0020
    101                      }    
    102                      else
   \   0094            ?0012:
    103                      {//ASCII
    104                                          code = *str_pt;
   \   0094            ?0013:
   \   0094            ?0010:
    105                      }
    106                  }
    107                  else if (*str_pt >= FirstSectionCode)
   \   0094  FEA1              CP      161
   \   0096  380B              JR      C,?0016
   \   0098            ?0015:
    108                  {//汉字
    109                          code = *(int *)str_pt;
   \   0098            ?0020:
   \   0098  46                LD      B,(HL)
   \   0099  DD70FE            LD      (IX-2),B
   \   009C  23                INC     HL
   \   009D  66                LD      H,(HL)
   \   009E  DD74FF            LD      (IX-1),H
    110                  }
    111                  else
   \   00A1  180B              JR      ?0017
   \   00A3            ?0016:
    112                  {//ASCII
    113                          code = *str_pt;
   \   00A3  2A0000            LD      HL,(str_pt)
   \   00A6            ?0019:
   \   00A6  4E                LD      C,(HL)
   \   00A7  DD71FE            LD      (IX-2),C
   \   00AA  DD36FF00          LD      (IX-1),0
   \   00AE            ?0017:
   \   00AE            ?0014:
   \   00AE            ?0008:
    114                  }
    115                                          //---------------------------------------
    116                                          
    117                  GetTextPos(&kregion.x, &kregion.y);
   \   00AE  210000            LD      HL,0
   \   00B1  39                ADD     HL,SP
   \   00B2  010100            LD      BC,1
   \   00B5  09                ADD     HL,BC
   \   00B6  4D                LD      C,L
   \   00B7  44                LD      B,H
   \   00B8  2B                DEC     HL
   \   00B9  EB                EX      DE,HL
   \   00BA  CD0000            CALL    LWRD GetTextPos
    118                                          
    119                  kregion.width = scrollregionw_def+scrollregionx_def - kregion.x;
   \   00BD  3EB0              LD      A,176
   \   00BF  DD96FA            SUB     (IX-6)
   \   00C2  DD77FC            LD      (IX-4),A
    120                  kregion.height = scrollregionh_def;
   \   00C5  DD36FD10          LD      (IX-3),16
    121                                          
    122                  //输出最后一个字
    123                  CharOutRect(code, *(str_pt+1), &kregion, 0);
   \   00C9  0E00              LD      C,0
   \   00CB  C5                PUSH    BC
   \   00CC  210200            LD      HL,2
   \   00CF  39                ADD     HL,SP
   \   00D0  E5                PUSH    HL
   \   00D1  2A0000            LD      HL,(str_pt)
   \   00D4  23                INC     HL
   \   00D5  4E                LD      C,(HL)
   \   00D6  0600              LD      B,0
   \   00D8  DD5EFE            LD      E,(IX-2)
   \   00DB  DD56FF            LD      D,(IX-1)
   \   00DE  CD0000            CALL    LWRD CharOutRect
   \   00E1  E1                POP     HL
   \   00E2  E1                POP     HL
   \   00E3            ?0003:
    124              }
    125              str_pt = strhead_pt;
   \   00E3  2A0000            LD      HL,(strhead_pt)
   \   00E6  220000            LD      (str_pt),HL
    126              scroll_cnt = 0;
   \   00E9  AF                XOR     A
   \   00EA  320000            LD      (scroll_cnt),A
    127              rTmp = 0;
   \   00ED  320000            LD      (rTmp),A
    128          }
   \   00F0  C30000            JP      LWRD ?BANK_LEAVE_DIRECT_L08
   \   00F3                    END

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

⌨️ 快捷键说明

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