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

📄 ui_progress.lst

📁 action mp3 devo,eki e,eikf, kdife l
💻 LST
字号:
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       12/Apr/106  09:56:16 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  banked                                              #
#       Source file   =  d:\case_i_d35f\ap\common\ui_progress.c              #
#       List file     =  d:\case_i_d35f\ap\ap_main\list\ui_progress.lst      #
#       Object file   =  d:\case_i_d35f\ap\ap_main\release\obj\ui_progress.r01#
#       Command line  =  -v0 -mb -OD:\case_i_d35f\ap\ap_main\release\Obj\    #
#                        -e -K -w -gA -s9 -RCODE -r0 -DNAPDEBUG              #
#                        -LD:\case_i_d35f\ap\ap_main\List\ -q -t8 -X         #
#                        -Id:\sdk_i_35f\inc\ -Id:\case_i_d35f\inc\           #
#                        d:\case_i_d35f\AP\COMMON\ui_progress.c              #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    ui_progress(17)
   \   0000                    RSEG    COM_CTRL(0)
   \   0000                    RSEG    CONST(0)
   \   0000                    EXTERN  ClearScreen
   \   0000                    EXTERN  ResShowPic
   \   0000                    EXTERN  UpdateScreen
   \   0000                    EXTERN  ui_auto_update
   \   0000                    PUBLIC  ui_show_progress
   \   0000                    EXTERN  ?CLZ80B_4_04_L00
   \   0000                    EXTERN  ?SS_DIV_L02
   \   0000                    EXTERN  ?S_MUL_L02
   \   0000                    EXTERN  ?BANK_CALL_DIRECT_L08
   \   0000                    EXTERN  ?BANK_FAST_LEAVE_L08
   \   0000                    RSEG    COM_CTRL
   \   0000            ui_show_progress:
      1          /*
      2          *******************************************************************************
      3          *                ACTOS AP
      4          *        ap common lib, progress control file 
      5          *
      6          *        (c) Copyright, Actions Co,Ld.                             
      7          *             All Right Reserved                          
      8          *
      9          *******************************************************************************
     10          */ 
     11          #pragma codeseg(COM_CTRL)
     12          
     13          #include "ap_common.h"
     14          
     15          /*
     16          ********************************************************************************
     17          * Description : 进度条控件
     18          *
     19          * Arguments   : progress, 进度条结构
     20          *
     21          * Returns     : 0
     22          *
     23          * Notes       : 这个控件没有自己的消息循环
     24          *
     25          ********************************************************************************
     26          */
     27          int ui_show_progress(const progress_t *progress)
     28          {
   \   0000  C5                PUSH    BC
   \   0001  FDE5              PUSH    IY
   \   0003  DDE5              PUSH    IX
   \   0005  F5                PUSH    AF
   \   0006  F5                PUSH    AF
   \   0007  F5                PUSH    AF
   \   0008  F5                PUSH    AF
   \   0009  D5                PUSH    DE
   \   000A  FDE1              POP     IY
     29                  int start, end;
     30          //      char buf[5];    //注意可能含符号
     31          //      char key;
     32                  const region_t region={0, 16, SCR_WIDTH, 16};   //控件所在区域  
   \   000C  210200            LD      HL,2
   \   000F  39                ADD     HL,SP
   \   0010  EB                EX      DE,HL
   \   0011  210000            LD      HL,?0002
   \   0014  010400            LD      BC,4
   \   0017  EDB0              LDIR
     33                  BOOL need_draw=TRUE;
   \   0019  69                LD      L,C
   \   001A  60                LD      H,B
   \   001B  39                ADD     HL,SP
   \   001C  3601              LD      (HL),1
   \   001E            ?0004:
     34          
     35                  ASSERT(progress->value <= progress->max);
     36                  ASSERT(progress->value >= progress->min);
     37          
     38                  
     39                  while(1)
     40                  {
     41                          if(need_draw)
   \   001E  210000            LD      HL,0
   \   0021  39                ADD     HL,SP
   \   0022  AF                XOR     A
   \   0023  B6                OR      (HL)
   \   0024  CABD00            JP      Z,?0012
   \   0027            ?0006:
     42                          {
     43                                  //clear screen
     44                                  ClearScreen(&region);
   \   0027  23                INC     HL
   \   0028  23                INC     HL
   \   0029  EB                EX      DE,HL
   \   002A  CD0000            CALL    LWRD ClearScreen
     45          
     46                                  //show pic
     47                                  ResShowPic(PBAR, POSITION_PROGRESSBAR, 16);
   \   002D  0E10              LD      C,16
   \   002F  C5                PUSH    BC
   \   0030  0E0F              LD      C,15
   \   0032  110601            LD      DE,262
   \   0035  3E00              LD      A,BYTE3 ResShowPic
   \   0037  210000            LD      HL,LWRD ResShowPic
   \   003A  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   003D  F1                POP     AF
     48                                  start = POSITION_PROGRESSBAR + 1;
     49                                  end = (POSITION_PROGRESSBAR -1) + 
     50                                          PROGRESS_BAR_WIDTH * (progress->value - progress->min)/ (progress->max - progress->min);
   \   003E  210600            LD      HL,6
   \   0041  39                ADD     HL,SP
   \   0042  E5                PUSH    HL
   \   0043  FD4E00            LD      C,(IY+0)
   \   0046  FD4601            LD      B,(IY+1)
   \   0049  FD6E04            LD      L,(IY+4)
   \   004C  FD6605            LD      H,(IY+5)
   \   004F  A7                AND     A
   \   0050  ED42              SBC     HL,BC
   \   0052  4D                LD      C,L
   \   0053  44                LD      B,H
   \   0054  116200            LD      DE,98
   \   0057  CD0000            CALL    LWRD ?S_MUL_L02
   \   005A  FD4E00            LD      C,(IY+0)
   \   005D  FD4601            LD      B,(IY+1)
   \   0060  FD6E02            LD      L,(IY+2)
   \   0063  FD6603            LD      H,(IY+3)
   \   0066  A7                AND     A
   \   0067  ED42              SBC     HL,BC
   \   0069  4D                LD      C,L
   \   006A  44                LD      B,H
   \   006B  CD0000            CALL    LWRD ?SS_DIV_L02
   \   006E  210E00            LD      HL,14
   \   0071  19                ADD     HL,DE
   \   0072  4D                LD      C,L
   \   0073  44                LD      B,H
   \   0074  E1                POP     HL
   \   0075  71                LD      (HL),C
   \   0076  23                INC     HL
   \   0077  70                LD      (HL),B
   \   0078  DD211000          LD      IX,16
   \   007C            ?0009:
     51                                  ASSERT(end < SCR_WIDTH);        
     52                                  //分段显示背景
     53                                  while(start+PROGRESS_BG_WIDTH <= end)
   \   007C  210400            LD      HL,4
   \   007F  DDE5              PUSH    IX
   \   0081  C1                POP     BC
   \   0082  09                ADD     HL,BC
   \   0083  4D                LD      C,L
   \   0084  44                LD      B,H
   \   0085  210600            LD      HL,6
   \   0088  39                ADD     HL,SP
   \   0089  56                LD      D,(HL)
   \   008A  23                INC     HL
   \   008B  66                LD      H,(HL)
   \   008C  6A                LD      L,D
   \   008D  F680              OR      128
   \   008F  ED42              SBC     HL,BC
   \   0091  E29500            JP      PO,?0014
   \   0094  AC                XOR     H
   \   0095            ?0014:
   \   0095  FAB200            JP      M,?0008
   \   0098            ?0010:
     54                                  {
     55                                          ResShowPic(PBKGRD, start, 16);
   \   0098  0E10              LD      C,16
   \   009A  C5                PUSH    BC
   \   009B  DDE5              PUSH    IX
   \   009D  E1                POP     HL
   \   009E  4D                LD      C,L
   \   009F  114C00            LD      DE,76
   \   00A2  3E00              LD      A,BYTE3 ResShowPic
   \   00A4  210000            LD      HL,LWRD ResShowPic
   \   00A7  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   00AA  F1                POP     AF
     56                                          start += PROGRESS_BG_WIDTH;
   \   00AB  010400            LD      BC,4
   \   00AE  DD09              ADD     IX,BC
   \   00B0  18CA              JR      ?0009
   \   00B2            ?0008:
     57                                  }       
     58          
     59          #if 0
     60                                  //show text
     61                                  if(progress->value < 0)
     62                                  {
     63                                          buf[0] = '-';
     64                                          itoa3(-(progress->value), buf+1);
     65                                  }
     66                                  else itoa3(progress->value, buf);
     67                                  SetTextPos( (SCR_WIDTH - (BYTE)get_text_width(buf)) /2, 8);
     68                                  PutS(buf, 255);
     69          #endif                  
     70          
     71                                  //check if auto_update
     72                                  if(!ui_auto_update) UpdateScreen(NULL);
   \   00B2  3A0000            LD      A,(ui_auto_update)
   \   00B5  B7                OR      A
   \   00B6  2005              JR      NZ,?0012
   \   00B8            ?0011:
   \   00B8  5F                LD      E,A
   \   00B9  57                LD      D,A
   \   00BA  CD0000            CALL    LWRD UpdateScreen
   \   00BD            ?0012:
     73          
     74                                  need_draw = FALSE;
   \   00BD            ?0007:
     75                          }//need_draw
     76          
     77          #if 0
     78                          //handle message
     79                          key = ap_get_message();
     80                          switch( key)
     81                          {
     82                          case AP_KEY_MODE | AP_KEY_UP:
     83                          case AP_KEY_PLAY | AP_KEY_UP:
     84                          case AP_MSG_WAIT_TIMEOUT:
     85                                  return 0;               //exit
     86                          default:
     87                                  key = ap_handle_hotkey(key);
     88                                  if(key == RESULT_REDRAW) need_draw = TRUE;
     89                                  else if(key != 0) return key;
     90                           }//switch()
     91          #else
     92                          //direct return
     93                          return 0;
   \   00BD  210000            LD      HL,0
     94          #endif
     95                  }//while(1)
   \   00C0  F1                POP     AF
   \   00C1  F1                POP     AF
   \   00C2  F1                POP     AF
   \   00C3  F1                POP     AF
   \   00C4  DDE1              POP     IX
   \   00C6  FDE1              POP     IY
   \   00C8  C1                POP     BC
   \   00C9  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
     96          }
   \   00CC  C31E00            JP      LWRD ?0004
     97          
   \   0000                    RSEG    CONST
   \   0000            ?0002:
   \   0000  00                DEFB    0
   \   0001  10                DEFB    16
   \   0002  80                DEFB    128
   \   0003  10                DEFB    16
   \   0004                    END

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

⌨️ 快捷键说明

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