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

📄 ap_message2_formusic.lst

📁 MP3 整个 SDK
💻 LST
📖 第 1 页 / 共 3 页
字号:
   \   01F8  47                LD      B,A
   \   01F9  EB                EX      DE,HL
   \   01FA  ED42              SBC     HL,BC
   \   01FC  2016              JR      NZ,?0064
   \   01FE            ?0061:
   \   01FE  180F              JR      ?0101
   \   0200            ?0062:
    285                  else return 0;
    286              }
   \   0200            ?0060:
    287              else if(condition == AP_EVENT_ANY)
   \   0200  79                LD      A,C
   \   0201  B0                OR      B
   \   0202  2010              JR      NZ,?0064
   \   0204            ?0063:
    288              {
    289                  if( (g_ap_event & event) != 0) return g_ap_event;
   \   0204  2A0900            LD      HL,(g_ap_event)
   \   0207  7D                LD      A,L
   \   0208  A3                AND     E
   \   0209  47                LD      B,A
   \   020A  7C                LD      A,H
   \   020B  A2                AND     D
   \   020C  B0                OR      B
   \   020D  2805              JR      Z,?0064
   \   020F            ?0065:
   \   020F            ?0101:
   \   020F  2A0900            LD      HL,(g_ap_event)
   \   0212  1803              JR      ?0067
   \   0214            ?0066:
    290                  else return 0;
    291              }
   \   0214            ?0064:
    292              else return 0;
   \   0214  210000            LD      HL,0
    293          }
   \   0217            ?0067:
   \   0217  C30000            JP      LWRD ?BANK_LEAVE_DIRECT_L08
   \   021A            ap_del_event:
    294          
    295          /*
    296          ********************************************************************************
    297          * Description : 清除事件发生标志
    298          *
    299          * Arguments   : event, 事件集合
    300          *
    301          * Returns     :
    302          *
    303          * Notes       :
    304          *
    305          ********************************************************************************
    306          */
    307          void ap_del_event(WORD event)
    308          {
   \   021A  CD0000            CALL    LWRD ?ENT_PARM_DIRECT_L09
    309              g_ap_event &= (~event);
   \   021D  7B                LD      A,E
   \   021E  2F                CPL
   \   021F  5F                LD      E,A
   \   0220  7A                LD      A,D
   \   0221  2F                CPL
   \   0222  57                LD      D,A
   \   0223  210900            LD      HL,g_ap_event
   \   0226  7E                LD      A,(HL)
   \   0227  A3                AND     E
   \   0228  77                LD      (HL),A
   \   0229  23                INC     HL
   \   022A  7E                LD      A,(HL)
   \   022B  A2                AND     D
   \   022C  77                LD      (HL),A
    310          }
   \   022D  C30000            JP      LWRD ?BANK_LEAVE_DIRECT_L08
   \   0230            ap_sleep:
    311          
    312          /*
    313          ********************************************************************************
    314          * Description : 睡眠指定的时间
    315          *
    316          * Arguments   : half_sec, 时间, 0.5秒为单位
    317          *
    318          * Returns     : 如果指定的时间内没有其他消息产生, 返回0
    319                  如果指定的时间内有其他消息产生, 返回该消息
    320          * Notes       : 如果指定的时间内有其他消息产生, 睡眠的时间将< 指定的时间
    321          *
    322          ********************************************************************************
    323          */
    324          char ap_sleep(int half_sec)
    325          {
   \   0230  CD0000            CALL    LWRD ?ENT_AUTO_DIRECT_L09
   \   0233  FEFF              DEFW    -2
   \   0235  FDE5              PUSH    IY
    326              int n=0;    //rtc counter
   \   0237  FD210000          LD      IY,0
   \   023B            ?0069:
    327              char key;
    328          
    329              while(1)
    330              {
    331                  key = ap_get_message();
   \   023B  CD0000            CALL    LWRD ap_get_message
   \   023E  DD77FE            LD      (IX-2),A
    332                  if(key == AP_MSG_RTC ||
    333                      key == AP_MSG_CHARGING ||
    334                      key == AP_MSG_WAIT_TIMEOUT)    //sleep 时不管timeout
   \   0241  FE1C              CP      28
   \   0243  2808              JR      Z,?0073
   \   0245  FE1B              CP      27
   \   0247  2804              JR      Z,?0073
   \   0249  FE1E              CP      30
   \   024B  2014              JR      NZ,?0072
   \   024D            ?0073:
   \   024D            ?0074:
   \   024D            ?0071:
    335                  {
    336                      n++;
    337                      if(n >= half_sec) return 0;
   \   024D  DD4E02            LD      C,(IX+2)
   \   0250  DD4603            LD      B,(IX+3)
   \   0253  FD23              INC     IY
   \   0255  FDE5              PUSH    IY
   \   0257  E1                POP     HL
   \   0258  CD0000            CALL    LWRD ?SS_CMP_L02
   \   025B  38DE              JR      C,?0069
   \   025D            ?0075:
   \   025D  2E00              LD      L,0
    338                  }
   \   025F  1813              JR      ?0082
   \   0261            ?0076:
   \   0261            ?0072:
    339                  else if(key == AP_KEY_NULL ||
    340                      key == AP_MSG_LOCK ||
    341                      key == (AP_MSG_LOCK | AP_KEY_UP))    //lock 只有up, 没有long/hold
   \   0261  AF                XOR     A
   \   0262  DDB6FE            OR      (IX-2)
   \   0265  28D4              JR      Z,?0069
   \   0267  FE19              CP      25
   \   0269  28D0              JR      Z,?0069
   \   026B  FE39              CP      57
   \   026D  28CC              JR      Z,?0069
   \   026F            ?0080:
   \   026F            ?0081:
   \   026F            ?0078:
    342                  {
    343                      continue;
   \   026F            ?0079:
    344                  }
    345                  else
    346                  {
    347                      //here maybe hotkey
    348                      return ap_handle_hotkey(key);
   \   026F  5F                LD      E,A
   \   0270  CD0000            CALL    LWRD ap_handle_hotkey
   \   0273  6F                LD      L,A
    349                  }
   \   0274            ?0082:
   \   0274  FDE1              POP     IY
   \   0276  C30000            JP      LWRD ?BANK_LEAVE_DIRECT_L08
   \   0279            ?0077:
    350              }
    351          
    352          }
   \   0279            ap_handle_hotkey_core:
    353          
    354          /*
    355          ********************************************************************************
    356          * Description : 处理热键消息, 返回结果消息
    357          *
    358          * Arguments   : key, 按键消息
    359          *
    360          * Returns     : 如果有可识别的热键消息,  返回结果消息
    361                  如果没有可识别的热键消息,  返回0
    362          *
    363          * Notes       :
    364          *
    365          ********************************************************************************
    366          */
    367          char ap_handle_hotkey_core(char key)
    368          {
   \   0279  D5                PUSH    DE
    369              switch( key )
   \   027A  CD0000            CALL    LWRD ?C_V_SWITCH_L06
   \   027D  0700              DEFW    7
   \   027F  19                DEFB    25
   \   0280  1A                DEFB    26
   \   0281  1D                DEFB    29
   \   0282  1F                DEFB    31
   \   0283  31                DEFB    49
   \   0284  81                DEFB    129
   \   0285  90                DEFB    144
   \   0286  D802              DEFW    ?0091
   \   0288  A002              DEFW    ?0085
   \   028A  9602              DEFW    ?0084
   \   028C  AA02              DEFW    ?0086
   \   028E  9602              DEFW    ?0084
   \   0290  9602              DEFW    ?0084
   \   0292  B402              DEFW    ?0087
   \   0294  BE02              DEFW    ?0088
   \   0296            ?0084:
    370              {
    371              case AP_KEY_PLAY | AP_KEY_LONG:    //长按play发standby
    372              case AP_MSG_STANDBY:        //自动关机
    373              //case AP_MSG_SLEEP:        //睡眠
    374              //case AP_MSG_LOW_POWER:    //低电自动关机
    375              case AP_MSG_FORCE_STANDBY:    //使用上两个会报label duplicate
    376                  ap_set_event(AP_EVENT_STANDBY);
   \   0296  110200            LD      DE,2
   \   0299  CDDE02            CALL    LWRD ?0108
    377                  return RESULT_STANDBY;
   \   029C  2E02              LD      L,2
    378              case AP_KEY_MODE | AP_KEY_LONG:    //长按menu进入main
   \   029E  183A              JR      ?0092
   \   02A0            ?0085:
    379                  ap_set_event(AP_EVENT_MAIN);
   \   02A0  110100            LD      DE,1
   \   02A3  CDDE02            CALL    LWRD ?0108
    380                  return RESULT_MAIN;
   \   02A6  2E0A              LD      L,10
    381                  //break;
    382              case AP_KEY_AB | AP_KEY_UP:    //进入录音
   \   02A8  1830              JR      ?0092
   \   02AA            ?0086:
    383                  ap_set_event(AP_EVENT_RECORD);
   \   02AA  110400            LD      DE,4
   \   02AD  CDDE02            CALL    LWRD ?0108
    384                  return RESULT_RECORD;
   \   02B0  2E09              LD      L,9
    385              case AP_MSG_USB_PLUGIN:        //进入udisk 模式
   \   02B2  1826              JR      ?0092
   \   02B4            ?0087:
    386                  ap_set_event(AP_EVENT_UDISK);
   \   02B4  110800            LD      DE,8
   \   02B7  CDDE02            CALL    LWRD ?0108
    387                  return RESULT_UDISK;
   \   02BA  2E04              LD      L,4
    388              case AP_MSG_LOCK:        //locked
   \   02BC  181C              JR      ?0092
   \   02BE            ?0088:
    389                  if(ui_run_realtime)    //实时模式不显示lock
   \   02BE  3A0000            LD      A,(ui_run_realtime)
   \   02C1  B7                OR      A
   \   02C2  2014              JR      NZ,?0091
   \   02C4            ?0089:
    390                  {
    391                      //TODO: send lock message to message queue
    392                      return 0;
    393                  }
   \   02C4            ?0090:
    394                  else
    395                  {
    396                      ui_show_lock(1);    //这里不处理热键,防止嵌套
   \   02C4  1E01              LD      E,1
   \   02C6  3E00              LD      A,BYTE3 ui_show_lock
   \   02C8  210000            LD      HL,LWRD ui_show_lock
   \   02CB  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
    397                      ap_set_event(AP_EVENT_REDRAW);
   \   02CE  111000            LD      DE,16
   \   02D1  CDDE02            CALL    LWRD ?0108
    398                      return RESULT_REDRAW;
   \   02D4  2E32              LD      L,50
    399                  }
   \   02D6  1802              JR      ?0092
   \   02D8            ?0091:
    400              default:
    401                  //here just drop the key
    402                  return 0;
   \   02D8  2E00              LD      L,0
    403              }
   \   02DA            ?0092:
   \   02DA  F1                POP     AF
   \   02DB  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   02DE            ?0108:
   \   02DE  3E00              LD      A,BYTE3 ap_set_event
   \   02E0  21D801            LD      HL,LWRD ap_set_event
   \   02E3  C30000            JP      LWRD ?BANK_CALL_DIRECT_L08
   \   02E6            ?0083:
    404          }
    405          
   \   0000                    RSEG    UDATA0
   \   0000            charge_flag:
   \   0001                    DEFS    1
   \   0000                    RSEG    IDATA0
   \   0000            g_light_time:
   \   0001                    DEFS    1
   \   0001            g_light_mode:
   \   0002                    DEFS    1
   \   0002            g_contrast_num:
   \   0003                    DEFS    1
   \   0003            g_sleep_time:
   \   0005                    DEFS    2
   \   0005            g_standby_time:
   \   0007                    DEFS    2
   \   0007            g_rtc_counter:
   \   0009                    DEFS    2
   \   0009            g_ap_event:
   \   000B                    DEFS    2
   \   000B            g_light_flag:
   \   000C                    DEFS    1
   \   000C            ?0012:
   \   000E                    DEFS    2
   \   000E            ?0013:
   \   000F                    DEFS    1
   \   0000                    RSEG    CDATA0
   \   0000  00                DEFB    0
   \   0001  00                DEFB    0
   \   0002  00                DEFB    0
   \   0003  0000              DEFW    0
   \   0005  0000              DEFW    0
   \   0007  0000              DEFW    0
   \   0009  0000              DEFW    0
   \   000B  01                DEFB    1
   \   000C  0000              DEFW    0
   \   000E  00                DEFB    0
   \   000F                    END

Errors: none
Warnings: none
Code size: 742
Constant size: 15
Static variable size: Data(16) Iram(0)

⌨️ 快捷键说明

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