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

📄 ui_dialog.lst

📁 MP3 整个 SDK
💻 LST
字号:
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       25/Dec/106  17:01:11 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  banked                                              #
#       Source file   =  d:\case_i_d90f\ap\ap_music\ui_dialog.c              #
#       List file     =  d:\case_i_d90f\ap\ap_music\list\ui_dialog.lst       #
#       Object file   =  d:\case_i_d90f\ap\ap_music\obj\ui_dialog.r01        #
#       ASM file      =  d:\case_i_d90f\ap\ap_music\list\ui_dialog.s01       #
#       Command line  =  -v0 -mb -OD:\case_i_d90f\ap\ap_music\Obj\ -e -K -w  #
#                        -gA -z9 -RCODE -r0 -DNAPDEBUG                       #
#                        -LD:\case_i_d90f\ap\ap_music\List\ -q -t8           #
#                        -AD:\case_i_d90f\ap\ap_music\List\                  #
#                        -ND:\case_i_d90f\ap\ap_music\List\ -X               #
#                        -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\           #
#                        d:\case_i_d90f\AP\AP_MUSIC\ui_dialog.c              #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    ui_dialog(17)
   \   0000                    RSEG    COM_CTRL(0)
   \   0000                    EXTERN  ClearScreen
   \   0000                    EXTERN  PutS
   \   0000                    EXTERN  ResShowMultiString
   \   0000                    EXTERN  ResShowPic
   \   0000                    EXTERN  SetTextPos
   \   0000                    EXTERN  UpdateScreen
   \   0000                    EXTERN  ap_get_message
   \   0000                    EXTERN  ap_handle_hotkey
   \   0000                    EXTERN  ui_auto_update
   \   0000                    PUBLIC  ui_dialog
   \   0000                    EXTERN  ?CLZ80B_4_04_L00
   \   0000                    EXTERN  ?C_V_SWITCH_L06
   \   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_CTRL
   \   0000            ui_dialog:
      1          /*
      2          *******************************************************************************
      3          *                ACTOS AP
      4          *        ap common lib, file/folder delete control file 
      5          *
      6          *        (c) Copyright, Actions Co,Ld.                             
      7          *             All Right Reserved                          
      8          *
      9          *  $Id: ui_dialog.c,v 1.1.1.1 2006/05/22 03:24:01 selina Exp $
     10          *******************************************************************************
     11          */ 
     12          #pragma codeseg(COM_CTRL)
     13          
     14          #include "ap_music.h"
     15          
     16          /*
     17          //===================================================================
     18          接口: int ui_dialog(dialog_t *dialog, int string_id)
     19          input:
     20              typedef struct
     21              {
     22              WORD HeadIcon;//头部图标的ID值
     23              WORD HeadStr;//头部信息的ID值
     24              char *string;//信息显示区的显示的字串首址
     25              }dialog_t;
     26          
     27              dialog_t dialog: 要显示的对话框的信息
     28              int string_id: 显示用的语言
     29          
     30          output:
     31              return int:  NULL: 选中了OK
     32                           RESULT_IGNORE: 时间到了未按确定,按了PLAY键,或选中了NO
     33                           其他非0的值: 当热键返回    
     34          //===================================================================
     35          */
     36          
     37          int ui_dialog(dialog_t *dialog,int string_id)
     38          {
   \   0000  CD0000            CALL    LWRD ?ENT_AUTO_DIRECT_L09
   \   0003  FCFF              DEFW    65532
   \   0005  FDE5              PUSH    IY
   \   0007  DD6E02            LD      L,(IX+2)
   \   000A  DD6603            LD      H,(IX+3)
   \   000D  E5                PUSH    HL
   \   000E  FDE1              POP     IY
     39              char key;
     40              bool Selectflag = FALSE; //false(NO); true(YES)
     41              bool need_draw = TRUE;
     42              
     43          //    SetAsciiFont(FONT_TYPE_LARGE); //ASCII码用大字体
     44              ClearScreen(NULL);
   \   0010  110000            LD      DE,0
   \   0013  CD0000            CALL    LWRD ClearScreen
     45              ui_auto_update = FALSE;  
   \   0016  AF                XOR     A
   \   0017  320000            LD      (ui_auto_update),A
     46          
     47          
     48              //显示要求显示的信息
     49              if (dialog->string != NULL)
   \   001A  DD77FD            LD      (IX-3),A
   \   001D  FD7E04            LD      A,(IY+4)
   \   0020  FDB605            OR      (IY+5)
   \   0023  2812              JR      Z,?0003
   \   0025            ?0002:
     50              {
     51                  SetTextPos(0, 16);
   \   0025  0E10              LD      C,16
   \   0027  1E00              LD      E,0
   \   0029  CD0000            CALL    LWRD SetTextPos
     52                  PutS(dialog->string, -1);
   \   002C  0EFF              LD      C,255
   \   002E  FD5E04            LD      E,(IY+4)
   \   0031  FD5605            LD      D,(IY+5)
   \   0034  CD0000            CALL    LWRD PutS
   \   0037            ?0003:
     53              }
     54              
     55              //显示头部图标    
     56              if (dialog->HeadIcon != NULL)
   \   0037  FD7E00            LD      A,(IY+0)
   \   003A  FDB601            OR      (IY+1)
   \   003D  280D              JR      Z,?0005
   \   003F            ?0004:
     57              {
     58                  ResShowPic(dialog->HeadIcon, 0, 0);
   \   003F  0E00              LD      C,0
   \   0041  C5                PUSH    BC
   \   0042  FD5E00            LD      E,(IY+0)
   \   0045  FD5601            LD      D,(IY+1)
   \   0048  CDE000            CALL    LWRD ?0030
   \   004B  F1                POP     AF
   \   004C            ?0005:
     59              }
     60          
     61              //显示头部的信息
     62              if (dialog->HeadStr != NULL)
   \   004C  FD7E02            LD      A,(IY+2)
   \   004F  FDB603            OR      (IY+3)
   \   0052  2819              JR      Z,?0007
   \   0054            ?0006:
     63              {
     64                  ResShowMultiString(dialog->HeadStr, string_id, 16, 0);            
   \   0054  0E00              LD      C,0
   \   0056  C5                PUSH    BC
   \   0057  0E10              LD      C,16
   \   0059  C5                PUSH    BC
   \   005A  DD4E04            LD      C,(IX+4)
   \   005D  FD5E02            LD      E,(IY+2)
   \   0060  FD5603            LD      D,(IY+3)
   \   0063  3E00              LD      A,BYTE3 ResShowMultiString
   \   0065  210000            LD      HL,LWRD ResShowMultiString
   \   0068  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   006B  F1                POP     AF
   \   006C  F1                POP     AF
   \   006D            ?0007:
     65              }
     66          
     67              //显示选择按钮(默认N0)
     68              ResShowPic(DELNO,100,0);
   \   006D  0E00              LD      C,0
   \   006F  C5                PUSH    BC
   \   0070  CDDB00            CALL    LWRD ?0031
   \   0073  F1                POP     AF
   \   0074            ?0009:
     69          
     70              while(1)
     71              {
     72                  UpdateScreen(NULL);
   \   0074  110000            LD      DE,0
   \   0077  CD0000            CALL    LWRD UpdateScreen
     73                  key = ap_get_message();                          //获取消息
   \   007A  CD0000            CALL    LWRD ap_get_message
     74                  
     75                  switch (key)
   \   007D  5F                LD      E,A
   \   007E  CD0000            CALL    LWRD ?C_V_SWITCH_L06
   \   0081  0700              DEFW    7
   \   0083  05                DEFB    5
   \   0084  06                DEFB    6
   \   0085  1E                DEFB    30
   \   0086  21                DEFB    33
   \   0087  30                DEFB    48
   \   0088  45                DEFB    69
   \   0089  46                DEFB    70
   \   008A  C300              DEFW    ?0021
   \   008C  9A00              DEFW    ?0012
   \   008E  9A00              DEFW    ?0012
   \   0090  BE00              DEFW    ?0016
   \   0092  BE00              DEFW    ?0016
   \   0094  BE00              DEFW    ?0016
   \   0096  9A00              DEFW    ?0012
   \   0098  9A00              DEFW    ?0012
   \   009A            ?0012:
     76                  {
     77                  case AP_KEY_NEXT:                            //YES和NO之间切换
     78                  case AP_KEY_PREV:
     79                  case AP_KEY_NEXT | AP_KEY_HOLD:
     80                  case AP_KEY_PREV | AP_KEY_HOLD:
     81                      if(Selectflag)
   \   009A  AF                XOR     A
   \   009B  DDB6FD            OR      (IX-3)
   \   009E  280D              JR      Z,?0014
   \   00A0            ?0013:
     82                      {
     83                          Selectflag = FALSE;
     84                          ResShowPic(DELNO,100,0);
   \   00A0  0E00              LD      C,0
   \   00A2  C5                PUSH    BC
   \   00A3  CDDB00            CALL    LWRD ?0031
   \   00A6  F1                POP     AF
   \   00A7  DD36FD00          LD      (IX-3),0
     85                      }
     86                      else
   \   00AB  18C7              JR      ?0009
   \   00AD            ?0014:
     87                      {
     88                          Selectflag = TRUE;
     89                          ResShowPic(DELYES,100,0);
   \   00AD  4F                LD      C,A
   \   00AE  C5                PUSH    BC
   \   00AF  0E64              LD      C,100
   \   00B1  110200            LD      DE,2
   \   00B4  CDE000            CALL    LWRD ?0030
   \   00B7  F1                POP     AF
   \   00B8  DD36FD01          LD      (IX-3),1
   \   00BC            ?0015:
     90                      }
     91                      break;
   \   00BC  18B6              JR      ?0009
   \   00BE            ?0016:
     92                  
     93                  case AP_KEY_MODE | AP_KEY_UP:
     94                      if(Selectflag)            
   \   00BE            ?0017:
     95                      {//YES时按下MODE键的处理
     96                      }
     97                      else
   \   00BE            ?0018:
     98                      {    
     99                          return RESULT_IGNORE;//NO时按下MODE键的处理
    100                      }
   \   00BE            ?0019:
   \   00BE            ?0020:
    101                  
    102                  case AP_MSG_WAIT_TIMEOUT://8秒退出    
    103                  case AP_KEY_PLAY | AP_KEY_UP:
    104                       return RESULT_IGNORE;
   \   00BE  213400            LD      HL,52
    105                  
    106                  
    107                  default:
   \   00C1  1813              JR      ?0027
   \   00C3            ?0021:
    108                      key=ap_handle_hotkey(key);//热键处理
   \   00C3  CD0000            CALL    LWRD ap_handle_hotkey
   \   00C6  DD77FC            LD      (IX-4),A
    109                      if(key == RESULT_REDRAW)
   \   00C9  FE32              CP      50
   \   00CB  28A7              JR      Z,?0009
   \   00CD            ?0022:
    110                      {
    111                          need_draw=TRUE;
   \   00CD            ?0023:
    112                      }
    113                      else if(key!=0)
   \   00CD  AF                XOR     A
   \   00CE  DDB6FC            OR      (IX-4)
   \   00D1  28A1              JR      Z,?0009
   \   00D3            ?0025:
    114                      {
    115                          return key;                                              
   \   00D3  6F                LD      L,A
   \   00D4  2600              LD      H,0
    116                      }
   \   00D6            ?0027:
   \   00D6  FDE1              POP     IY
   \   00D8  C30000            JP      LWRD ?BANK_LEAVE_DIRECT_L08
   \   00DB            ?0031:
   \   00DB  0E64              LD      C,100
   \   00DD  110100            LD      DE,1
   \   00E0            ?0030:
   \   00E0  3E00              LD      A,BYTE3 ResShowPic
   \   00E2  210000            LD      HL,LWRD ResShowPic
   \   00E5  C30000            JP      LWRD ?BANK_CALL_DIRECT_L08
   \   00E8            ?0026:
   \   00E8            ?0024:
   \   00E8            ?0011:
    117                  }//switch(key)            
    118              }//while(1)
    119          }
    120          
   \   00E8                    END

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

⌨️ 快捷键说明

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