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

📄 ui_menu.lst

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

   \   0000                    NAME    ui_menu(17)
   \   0000                    RSEG    COM_CTRL(0)
   \   0000                    RSEG    CONST(0)
   \   0000                    EXTERN  ClearScreen
   \   0000                    EXTERN  ResShowMultiString
   \   0000                    EXTERN  ResShowPic
   \   0000                    EXTERN  UpdateScreen
   \   0000                    EXTERN  ap_get_message
   \   0000                    EXTERN  ap_handle_hotkey
   \   0000                    PUBLIC  menu_pos
   \   0000                    EXTERN  ui_auto_select
   \   0000                    EXTERN  ui_auto_update
   \   0000                    PUBLIC  ui_function_menu
   \   0000                    EXTERN  ?CLZ80B_4_04_L00
   \   0000                    EXTERN  ?SS_DIV_L02
   \   0000                    EXTERN  ?SS_MOD_L02
   \   0000                    EXTERN  ?C_V_SWITCH_L06
   \   0000                    EXTERN  ?BANK_CALL_DIRECT_L08
   \   0000                    EXTERN  ?BANK_FAST_LEAVE_L08
   \   0000                    RSEG    COM_CTRL
   \   0000            ui_function_menu:
      1          /*
      2          *******************************************************************************
      3          *                ACTOS AP
      4          *        ap common lib, menu ui 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          const char menu_pos[5] = {POSITION_MENU1, POSITION_MENU2, POSITION_MENU3, 
     17                          POSITION_MENU4, POSITION_MENU5};
     18          
     19          /*
     20          ********************************************************************************
     21          * Description : 功能菜单控件
     22          *
     23          * Arguments   : menu, 功能菜单结体
     24                          callback, 功能菜单的回调函数,=NULL 表示没有回调函数
     25          *
     26          * Returns     : 结果消息, 或者0
     27          *
     28          * Notes       :
     29          *
     30          ********************************************************************************
     31          */
     32          int ui_function_menu(function_menu_t *menu, const void (*callback)(int res_id))
     33          {
   \   0000  C5                PUSH    BC
   \   0001  FDE5              PUSH    IY
   \   0003  DDE5              PUSH    IX
   \   0005  DD210000          LD      IX,0
   \   0009  DD39              ADD     IX,SP
   \   000B  21F4FF            LD      HL,65524
   \   000E  39                ADD     HL,SP
   \   000F  F9                LD      SP,HL
   \   0010  D5                PUSH    DE
   \   0011  FDE1              POP     IY
     34                  int i;
     35                  char key;
     36                  BOOL need_draw=TRUE;
     37                  BOOL value_changed=TRUE;
     38                  int max_group;  // menu->total / 5
     39                  int cur_group;  //menu->active / 5
     40                  int n;  //the item to show
     41          
     42                  ASSERT(menu->active < menu->total);
     43                  ASSERT(menu->pic_active != NULL);
     44                  ASSERT(menu->pic_inactive != NULL);
     45                  ASSERT(menu->string != NULL);
     46                  ASSERT(menu->string_id < 3);
     47          
     48                  //total pages
     49                  max_group = menu->total / 5;
   \   0013  EB                EX      DE,HL
   \   0014  5E                LD      E,(HL)
   \   0015  23                INC     HL
   \   0016  56                LD      D,(HL)
   \   0017  010500            LD      BC,5
   \   001A  CD0000            CALL    LWRD ?SS_DIV_L02
   \   001D  DD73FA            LD      (IX-6),E
   \   0020  DD72FB            LD      (IX-5),D
     50                  if((menu->total % 5) == 0) max_group--;
   \   0023  DD36F501          LD      (IX-11),1
   \   0027  DD36FE01          LD      (IX-2),1
   \   002B  FD5E00            LD      E,(IY+0)
   \   002E  FD5601            LD      D,(IY+1)
   \   0031  CD0000            CALL    LWRD ?SS_MOD_L02
   \   0034  7B                LD      A,E
   \   0035  B2                OR      D
   \   0036  200D              JR      NZ,?0003
   \   0038            ?0002:
   \   0038  DD6EFA            LD      L,(IX-6)
   \   003B  DD66FB            LD      H,(IX-5)
   \   003E  2B                DEC     HL
   \   003F  DD75FA            LD      (IX-6),L
   \   0042  DD74FB            LD      (IX-5),H
   \   0045            ?0003:
   \   0045            ?0005:
     51                  
     52                  while(1)
     53                  {
     54                          if(need_draw)
   \   0045  AF                XOR     A
   \   0046  DDB6F5            OR      (IX-11)
   \   0049  CA7E01            JP      Z,?0023
   \   004C            ?0007:
     55                          {
     56                                  //clear screen
     57                                  ClearScreen(NULL);
   \   004C  110000            LD      DE,0
   \   004F  CD0000            CALL    LWRD ClearScreen
     58          
     59          #if 1
     60                                  //what page?
     61                                  cur_group = menu->active / 5;
   \   0052  FD5E02            LD      E,(IY+2)
   \   0055  FD5603            LD      D,(IY+3)
   \   0058  010500            LD      BC,5
   \   005B  CD0000            CALL    LWRD ?SS_DIV_L02
   \   005E  DD73F8            LD      (IX-8),E
   \   0061  DD72F9            LD      (IX-7),D
     62                                  n = cur_group*5;
   \   0064  EB                EX      DE,HL
   \   0065  4D                LD      C,L
   \   0066  44                LD      B,H
   \   0067  29                ADD     HL,HL
   \   0068  29                ADD     HL,HL
   \   0069  09                ADD     HL,BC
   \   006A  DD75FC            LD      (IX-4),L
   \   006D  DD74FD            LD      (IX-3),H
     63          
     64                                  //show icons & text
     65                                  for(i=0; i<5; i++)
   \   0070  AF                XOR     A
   \   0071  DD77F6            LD      (IX-10),A
   \   0074  DD77F7            LD      (IX-9),A
   \   0077            ?0010:
   \   0077  010580            LD      BC,32773
   \   007A  DD6EF6            LD      L,(IX-10)
   \   007D  DD66F7            LD      H,(IX-9)
   \   0080  78                LD      A,B
   \   0081  AC                XOR     H
   \   0082  67                LD      H,A
   \   0083  ED42              SBC     HL,BC
   \   0085  3049              JR      NC,?0009
   \   0087            ?0011:
     66                                  {
     67                                          if(n+i >= menu->total) break;   //处理不足5个的情况
   \   0087  FD4E00            LD      C,(IY+0)
   \   008A  FD4601            LD      B,(IY+1)
   \   008D  DD6EF6            LD      L,(IX-10)
   \   0090  DD66F7            LD      H,(IX-9)
   \   0093  DD5EFC            LD      E,(IX-4)
   \   0096  DD56FD            LD      D,(IX-3)
   \   0099  19                ADD     HL,DE
   \   009A  F680              OR      128
   \   009C  ED42              SBC     HL,BC
   \   009E  E2A200            JP      PO,?0049
   \   00A1  AC                XOR     H
   \   00A2            ?0049:
   \   00A2  F2D000            JP      P,?0009
   \   00A5            ?0013:
   \   00A5            ?0014:
     68                                          ResShowPic(menu->pic_inactive[n+i], menu_pos[i], 0);
   \   00A5  0E00              LD      C,0
   \   00A7  C5                PUSH    BC
   \   00A8  210000            LD      HL,menu_pos
   \   00AB  DD4EF6            LD      C,(IX-10)
   \   00AE  DD46F7            LD      B,(IX-9)
   \   00B1  09                ADD     HL,BC
   \   00B2  4E                LD      C,(HL)
   \   00B3  FD6E04            LD      L,(IY+4)
   \   00B6  FD6605            LD      H,(IY+5)
   \   00B9  E5                PUSH    HL
   \   00BA  DD6EF6            LD      L,(IX-10)
   \   00BD  60                LD      H,B
   \   00BE  19                ADD     HL,DE
   \   00BF  29                ADD     HL,HL
   \   00C0  EB                EX      DE,HL
   \   00C1  E1                POP     HL
   \   00C2  CD4602            CALL    LWRD ?0061
   \   00C5  F1                POP     AF
   \   00C6  DD34F6            INC     (IX-10)
   \   00C9  20AC              JR      NZ,?0010
   \   00CB  DD34F7            INC     (IX-9)
   \   00CE  18A7              JR      ?0010
   \   00D0            ?0009:
     69                                  }
     70                                  //show active, 2 pixels left
     71                                  ResShowPic(menu->pic_active[menu->active], menu_pos[menu->active % 5]-2, 0);
   \   00D0  0E00              LD      C,0
   \   00D2  C5                PUSH    BC
   \   00D3  FD5E02            LD      E,(IY+2)
   \   00D6  FD5603            LD      D,(IY+3)
   \   00D9  010500            LD      BC,5
   \   00DC  CD0000            CALL    LWRD ?SS_MOD_L02
   \   00DF  210000            LD      HL,menu_pos
   \   00E2  19                ADD     HL,DE
   \   00E3  7E                LD      A,(HL)
   \   00E4  C6FE              ADD     A,254
   \   00E6  4F                LD      C,A
   \   00E7  FD6E02            LD      L,(IY+2)
   \   00EA  FD6603            LD      H,(IY+3)
   \   00ED  29                ADD     HL,HL
   \   00EE  FD5E06            LD      E,(IY+6)
   \   00F1  FD5607            LD      D,(IY+7)
   \   00F4  CD4602            CALL    LWRD ?0061
   \   00F7  F1                POP     AF
     72          
     73                                  //check if show left arrows
     74                                  if(cur_group > 0) ResShowPic(CARROWL, POSITION_MENUL, 0);
   \   00F8  DD4EF8            LD      C,(IX-8)
   \   00FB  DD46F9            LD      B,(IX-7)
   \   00FE  210000            LD      HL,0
   \   0101  F680              OR      128
   \   0103  ED42              SBC     HL,BC
   \   0105  E20901            JP      PO,?0051
   \   0108  AC                XOR     H
   \   0109            ?0051:
   \   0109  0E00              LD      C,0
   \   010B  C5                PUSH    BC
   \   010C  0E02              LD      C,2
   \   010E  F21601            JP      P,?0016
   \   0111            ?0015:
   \   0111  110C00            LD      DE,12
   \   0114  1803              JR      ?0056
   \   0116            ?0016:
     75                                  else ResShowPic(CARROWN, POSITION_MENUL, 0);
   \   0116  110D00            LD      DE,13
   \   0119            ?0056:
   \   0119  CD4A02            CALL    LWRD ?0062
   \   011C  F1                POP     AF
   \   011D            ?0017:
     76          
     77                                  //check if show right arrows
     78                                  if(cur_group < max_group) ResShowPic(CARROWR, POSITION_MENUR, 0);
   \   011D  DD4EFA            LD      C,(IX-6)
   \   0120  DD46FB            LD      B,(IX-5)
   \   0123  DD6EF8            LD      L,(IX-8)
   \   0126  DD66F9            LD      H,(IX-7)
   \   0129  F680              OR      128
   \   012B  ED42              SBC     HL,BC
   \   012D  E23101            JP      PO,?0052
   \   0130  AC                XOR     H
   \   0131            ?0052:
   \   0131  0E00              LD      C,0
   \   0133  C5                PUSH    BC
   \   0134  0E73              LD      C,115
   \   0136  F23E01            JP      P,?0019
   \   0139            ?0018:
   \   0139  110E00            LD      DE,14
   \   013C  1803              JR      ?0057
   \   013E            ?0019:
     79                                  else ResShowPic(CARROWN, POSITION_MENUR, 0);
   \   013E  110D00            LD      DE,13
   \   0141            ?0057:
   \   0141  CD4A02            CALL    LWRD ?0062
   \   0144  F1                POP     AF
   \   0145            ?0020:
     80          
     81          #else                   
     82                                  //show icons & text
     83                                  if(menu->total <= 5)    /* iiiii*/
     84                                  {

⌨️ 快捷键说明

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