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

📄 ui_slider.lst

📁 action mp3 devo,eki e,eikf, kdife l
💻 LST
📖 第 1 页 / 共 4 页
字号:
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       12/Apr/106  09:56:17 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  banked                                              #
#       Source file   =  d:\case_i_d35f\ap\common\ui_slider.c                #
#       List file     =  d:\case_i_d35f\ap\ap_main\list\ui_slider.lst        #
#       Object file   =  d:\case_i_d35f\ap\ap_main\release\obj\ui_slider.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_slider.c                #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    ui_slider(17)
   \   0000                    RSEG    COM_CTRL(0)
   \   0000                    RSEG    CONST(0)
   \   0000                    EXTERN  ClearScreen
   \   0000                    EXTERN  PutS
   \   0000                    EXTERN  PutSDImage
   \   0000                    EXTERN  SD_FRead
   \   0000                    EXTERN  SD_FSeek
   \   0000                    EXTERN  SetTextPos
   \   0000                    EXTERN  UpdateScreen
   \   0000                    EXTERN  ap_get_message
   \   0000                    EXTERN  ap_handle_hotkey
   \   0000                    EXTERN  get_text_width
   \   0000                    EXTERN  itoa1
   \   0000                    EXTERN  itoa2
   \   0000                    EXTERN  itoa3
   \   0000                    EXTERN  itoa4
   \   0000                    EXTERN  res_entry
   \   0000                    EXTERN  res_fp
   \   0000                    EXTERN  res_region
   \   0000                    PUBLIC  slider_ResShowPic
   \   0000                    EXTERN  ui_auto_select
   \   0000                    EXTERN  ui_auto_update
   \   0000                    PUBLIC  ui_slider
   \   0000                    EXTERN  ?CLZ80B_4_04_L00
   \   0000                    EXTERN  ?SS_DIV_L02
   \   0000                    EXTERN  ?S_MUL_L02
   \   0000                    EXTERN  ?L_LSH_L03
   \   0000                    EXTERN  ?C_V_SWITCH_L06
   \   0000                    EXTERN  ?BANK_CALL_DIRECT_L08
   \   0000                    EXTERN  ?BANK_FAST_LEAVE_L08
   \   0000                    RSEG    COM_CTRL
   \   0000            slider_ResShowPic:
      1          /*
      2          *******************************************************************************
      3          *                ACTOS AP
      4          *        ap common lib, slider 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          //为了不用bank切换而使用 ResShowPic()
     16          extern res_entry_t res_entry;
     17          extern region_t res_region;
     18          
     19          //只有这个界面使用
     20          int slider_ResShowPic(WORD id, uchar x, uchar y)
     21          {
   \   0000  C5                PUSH    BC
   \   0001  D5                PUSH    DE
   \   0002  F5                PUSH    AF
   \   0003  F5                PUSH    AF
     22              WORD buf[2];    //buffer for sd read
     23          
     24              ASSERT(id <= UIID_MAX);
     25              
     26              //读entry
     27              SD_FSeek(res_fp, SEEK_SET, (long)id * sizeof(res_entry_t));
   \   0004  6B                LD      L,E
   \   0005  62                LD      H,D
   \   0006  010000            LD      BC,0
   \   0009  3E04              LD      A,4
   \   000B  CD0000            CALL    LWRD ?L_LSH_L03
   \   000E  C5                PUSH    BC
   \   000F  E5                PUSH    HL
   \   0010  0E00              LD      C,0
   \   0012  ED5B0000          LD      DE,(res_fp)
   \   0016  CD0000            CALL    LWRD SD_FSeek
   \   0019  E1                POP     HL
   \   001A  E1                POP     HL
     28              SD_FRead(res_fp, &res_entry, sizeof(res_entry_t));
   \   001B  211000            LD      HL,16
   \   001E  E5                PUSH    HL
   \   001F  010000            LD      BC,res_entry
   \   0022  ED5B0000          LD      DE,(res_fp)
   \   0026  CD0000            CALL    LWRD SD_FRead
   \   0029  F1                POP     AF
     29              if(res_entry.type != RES_TYPE_PIC) return 0;
   \   002A  3A0600            LD      A,(res_entry+6)
   \   002D  3D                DEC     A
   \   002E  2805              JR      Z,?0003
   \   0030            ?0002:
   \   0030  210000            LD      HL,0
     30              ASSERT(res_entry.length <= 512);
   \   0033  1869              JR      ?0006
   \   0035            ?0003:
     31          
     32              //读数据
     33              SD_FSeek(res_fp, SEEK_SET, res_entry.offset);
   \   0035  2A0200            LD      HL,(res_entry+2)
   \   0038  E5                PUSH    HL
   \   0039  2A0000            LD      HL,(res_entry)
   \   003C  E5                PUSH    HL
   \   003D  4F                LD      C,A
   \   003E  ED5B0000          LD      DE,(res_fp)
   \   0042  CD0000            CALL    LWRD SD_FSeek
   \   0045  E1                POP     HL
   \   0046  E1                POP     HL
     34              //SD_FRead(res_fp, &(res_region.width), 2);
     35              //SD_FRead(res_fp, &(res_region.height), 2);
     36              SD_FRead(res_fp, buf, sizeof(buf));
   \   0047  210400            LD      HL,4
   \   004A  E5                PUSH    HL
   \   004B  2B                DEC     HL
   \   004C  2B                DEC     HL
   \   004D  39                ADD     HL,SP
   \   004E  4D                LD      C,L
   \   004F  44                LD      B,H
   \   0050  ED5B0000          LD      DE,(res_fp)
   \   0054  CD0000            CALL    LWRD SD_FRead
   \   0057  F1                POP     AF
     37              //ASSERT(buf[0] <= 128);
     38              //ASSERT(buf[1] <= 32);    
     39              res_region.width = (char)buf[0];
   \   0058  210000            LD      HL,0
   \   005B  39                ADD     HL,SP
   \   005C  7E                LD      A,(HL)
   \   005D  320200            LD      (res_region+2),A
     40              res_region.height = (char)buf[1];
   \   0060  23                INC     HL
   \   0061  23                INC     HL
   \   0062  7E                LD      A,(HL)
   \   0063  320300            LD      (res_region+3),A
     41              
     42              //显示
     43              res_region.x = x;
   \   0066  210600            LD      HL,6
   \   0069  39                ADD     HL,SP
   \   006A  7E                LD      A,(HL)
   \   006B  320000            LD      (res_region),A
     44              res_region.y = y;
   \   006E  210C00            LD      HL,12
   \   0071  39                ADD     HL,SP
   \   0072  7E                LD      A,(HL)
   \   0073  320100            LD      (res_region+1),A
     45              PutSDImage(&res_region, res_fp->rwpointer);
   \   0076  211400            LD      HL,20
   \   0079  ED4B0000          LD      BC,(res_fp)
   \   007D  09                ADD     HL,BC
   \   007E  4E                LD      C,(HL)
   \   007F  23                INC     HL
   \   0080  46                LD      B,(HL)
   \   0081  23                INC     HL
   \   0082  5E                LD      E,(HL)
   \   0083  23                INC     HL
   \   0084  56                LD      D,(HL)
   \   0085  D5                PUSH    DE
   \   0086  C5                PUSH    BC
   \   0087  110000            LD      DE,res_region
   \   008A  CD0000            CALL    LWRD PutSDImage
   \   008D  E1                POP     HL
   \   008E  E1                POP     HL
     46              if(ui_auto_update) UpdateScreen(&res_region);
   \   008F  3A0000            LD      A,(ui_auto_update)
   \   0092  B7                OR      A
   \   0093  2806              JR      Z,?0005
   \   0095            ?0004:
   \   0095  110000            LD      DE,res_region
   \   0098  CD0000            CALL    LWRD UpdateScreen
   \   009B            ?0005:
     47              return 1;
   \   009B  210100            LD      HL,1
     48          }
   \   009E            ?0006:
   \   009E  F1                POP     AF
   \   009F  F1                POP     AF
   \   00A0  F1                POP     AF
   \   00A1  F1                POP     AF
   \   00A2  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   00A5            ui_slider:
     49          
     50          /*
     51          ********************************************************************************
     52          * Description : 滑动杆控件
     53          *
     54          * Arguments   : slider, 滑动杆结构
     55                  callback, 滑动杆的回调函数,=NULL 表示没有回调函数
     56          *
     57          * Returns     : 结果消息, 或者0
     58          *
     59          * Notes       : 控件本身没有重画功能, 因为控件不能重画背景
     60          *
     61          ********************************************************************************
     62          */
     63          int ui_slider(slider_t *slider, const void (*callback)(int res_id))
     64          {
   \   00A5  C5                PUSH    BC
   \   00A6  FDE5              PUSH    IY
   \   00A8  DDE5              PUSH    IX
   \   00AA  DD210000          LD      IX,0
   \   00AE  DD39              ADD     IX,SP
   \   00B0  21E2FF            LD      HL,65506
   \   00B3  39                ADD     HL,SP
   \   00B4  F9                LD      SP,HL
   \   00B5  D5                PUSH    DE
   \   00B6  FDE1              POP     IY
     65              int start, end;        //x坐标
     66              char buf[10];    //注意可能含符号 <<-0000>>
     67              char *p;    //格式化buf时使用
     68              char key;
     69              BOOL need_draw=TRUE;
     70              BOOL value_changed=TRUE;    //值是否改变, 需要callback
     71              const region_t bar_region={0, 16, SCR_WIDTH, 16};    //控件所在区域
   \   00B8  210A00            LD      HL,10
   \   00BB  39                ADD     HL,SP
   \   00BC  EB                EX      DE,HL
   \   00BD  210000            LD      HL,?0007
   \   00C0  010400            LD      BC,4
   \   00C3  EDB0              LDIR
     72              const region_t num_region={44, 8, 40, 8};    //数字区域
   \   00C5  210600            LD      HL,6
   \   00C8  39                ADD     HL,SP
   \   00C9  EB                EX      DE,HL
   \   00CA  210400            LD      HL,?0008
   \   00CD  0E04              LD      C,4
   \   00CF  EDB0              LDIR
     73              WORD value;    //to keep slider->value
     74              BYTE hold_state=0;    //按住状态,为了加快控件改变的速度
   \   00D1  DD36F501          LD      (IX-11),1
   \   00D5  DD36F401          LD      (IX-12),1
   \   00D9  DD70F3            LD      (IX-13),B
   \   00DC            ?0010:
     75                          //0:normal; 1:holding up, 2:holding down
     76                  
     77              ASSERT(slider->value <= slider->max);
     78              ASSERT(slider->value >= slider->min);

⌨️ 快捷键说明

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