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

📄 ap_message2.lst

📁 action mp3 devo,eki e,eikf, kdife l
💻 LST
📖 第 1 页 / 共 3 页
字号:
   \   01BE            ?0055:
   \   01BE            ?0091:
   \   01BE  2A0700            LD      HL,(g_ap_event)
   \   01C1  1803              JR      ?0057
   \   01C3            ?0056:
    285                  else return 0;
    286              }
   \   01C3            ?0054:
    287              else return 0;
   \   01C3  210000            LD      HL,0
    288          }
   \   01C6            ?0057:
   \   01C6  DDE1              POP     IX
   \   01C8  FDE1              POP     IY
   \   01CA  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   01CD            ap_del_event:
    289          
    290          /*
    291          ********************************************************************************
    292          * Description : 清除事件发生标志
    293          *
    294          * Arguments   : event, 事件集合
    295          *
    296          * Returns     :
    297          *
    298          * Notes       :
    299          *
    300          ********************************************************************************
    301          */
    302          void ap_del_event(WORD event)
    303          {
   \   01CD  C5                PUSH    BC
   \   01CE  D5                PUSH    DE
    304              g_ap_event &= (~event);
   \   01CF  7B                LD      A,E
   \   01D0  42                LD      B,D
   \   01D1  2F                CPL
   \   01D2  4F                LD      C,A
   \   01D3  78                LD      A,B
   \   01D4  2F                CPL
   \   01D5  47                LD      B,A
   \   01D6  210700            LD      HL,g_ap_event
   \   01D9  7E                LD      A,(HL)
   \   01DA  A1                AND     C
   \   01DB  77                LD      (HL),A
   \   01DC  23                INC     HL
   \   01DD  7E                LD      A,(HL)
   \   01DE  A0                AND     B
   \   01DF  77                LD      (HL),A
    305          }
   \   01E0  E1                POP     HL
   \   01E1  C1                POP     BC
   \   01E2  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   01E5            ap_sleep:
    306          
    307          /*
    308          ********************************************************************************
    309          * Description : 睡眠指定的时间
    310          *
    311          * Arguments   : half_sec, 时间, 0.5秒为单位
    312          *
    313          * Returns     : 如果指定的时间内没有其他消息产生, 返回0
    314                  如果指定的时间内有其他消息产生, 返回该消息
    315          * Notes       : 如果指定的时间内有其他消息产生, 睡眠的时间将< 指定的时间
    316          *
    317          ********************************************************************************
    318          */
    319          char ap_sleep(int half_sec)
    320          {
   \   01E5  C5                PUSH    BC
   \   01E6  FDE5              PUSH    IY
   \   01E8  DDE5              PUSH    IX
   \   01EA  F5                PUSH    AF
   \   01EB  D5                PUSH    DE
   \   01EC  FDE1              POP     IY
    321              int n=0;    //rtc counter
   \   01EE  DD210000          LD      IX,0
   \   01F2            ?0059:
    322              char key;
    323          
    324              while(1)
    325              {
    326                  key = ap_get_message();
   \   01F2  CD0000            CALL    LWRD ap_get_message
   \   01F5  210000            LD      HL,0
   \   01F8  39                ADD     HL,SP
   \   01F9  77                LD      (HL),A
    327                  if(key == AP_MSG_RTC ||
    328                      key == AP_MSG_CHARGING ||
    329                      key == AP_MSG_WAIT_TIMEOUT)    //sleep 时不管timeout
   \   01FA  FE1C              CP      28
   \   01FC  2808              JR      Z,?0063
   \   01FE  FE1B              CP      27
   \   0200  2804              JR      Z,?0063
   \   0202  FE1E              CP      30
   \   0204  2017              JR      NZ,?0062
   \   0206            ?0063:
   \   0206            ?0064:
   \   0206            ?0061:
    330                  {
    331                      n++;
    332                      if(n >= half_sec) return 0;
   \   0206  FDE5              PUSH    IY
   \   0208  C1                POP     BC
   \   0209  DD23              INC     IX
   \   020B  DDE5              PUSH    IX
   \   020D  E1                POP     HL
   \   020E  F680              OR      128
   \   0210  ED42              SBC     HL,BC
   \   0212  E21602            JP      PO,?0093
   \   0215  AC                XOR     H
   \   0216            ?0093:
   \   0216  FAF201            JP      M,?0059
   \   0219            ?0065:
   \   0219  2E00              LD      L,0
    333                  }
   \   021B  1811              JR      ?0072
   \   021D            ?0066:
   \   021D            ?0062:
    334                  else if(key == AP_KEY_NULL ||
    335                      key == AP_MSG_LOCK ||
    336                      key == (AP_MSG_LOCK | AP_KEY_UP))    //lock 只有up, 没有long/hold
   \   021D  AF                XOR     A
   \   021E  B6                OR      (HL)
   \   021F  28D1              JR      Z,?0059
   \   0221  FE19              CP      25
   \   0223  28CD              JR      Z,?0059
   \   0225  FE39              CP      57
   \   0227  28C9              JR      Z,?0059
   \   0229            ?0070:
   \   0229            ?0071:
   \   0229            ?0068:
    337                  {
    338                      continue;
   \   0229            ?0069:
    339                  }
    340                  else
    341                  {
    342                      //here maybe hotkey
    343                      return ap_handle_hotkey(key);
   \   0229  5F                LD      E,A
   \   022A  CD0000            CALL    LWRD ap_handle_hotkey
   \   022D  6F                LD      L,A
    344                  }
   \   022E            ?0072:
   \   022E  F1                POP     AF
   \   022F  DDE1              POP     IX
   \   0231  FDE1              POP     IY
   \   0233  C1                POP     BC
   \   0234  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   0237            ?0067:
    345              }
    346          
    347          }
   \   0237            ap_handle_hotkey_core:
    348          
    349          /*
    350          ********************************************************************************
    351          * Description : 处理热键消息, 返回结果消息
    352          *
    353          * Arguments   : key, 按键消息
    354          *
    355          * Returns     : 如果有可识别的热键消息,  返回结果消息
    356                  如果没有可识别的热键消息,  返回0
    357          *
    358          * Notes       :
    359          *
    360          ********************************************************************************
    361          */
    362          char ap_handle_hotkey_core(char key)
    363          {
   \   0237  D5                PUSH    DE
    364              switch( key )
   \   0238  CD0000            CALL    LWRD ?C_V_SWITCH_L06
   \   023B  0700              DEFW    7
   \   023D  19                DEFB    25
   \   023E  1A                DEFB    26
   \   023F  1D                DEFB    29
   \   0240  1F                DEFB    31
   \   0241  31                DEFB    49
   \   0242  81                DEFB    129
   \   0243  90                DEFB    144
   \   0244  9602              DEFW    ?0081
   \   0246  5E02              DEFW    ?0075
   \   0248  5402              DEFW    ?0074
   \   024A  6802              DEFW    ?0076
   \   024C  5402              DEFW    ?0074
   \   024E  5402              DEFW    ?0074
   \   0250  7202              DEFW    ?0077
   \   0252  7C02              DEFW    ?0078
   \   0254            ?0074:
    365              {
    366              case AP_KEY_PLAY | AP_KEY_LONG:    //长按play发standby
    367              case AP_MSG_STANDBY:        //自动关机
    368              //case AP_MSG_SLEEP:        //睡眠
    369              //case AP_MSG_LOW_POWER:    //低电自动关机
    370              case AP_MSG_FORCE_STANDBY:    //使用上两个会报label duplicate
    371                  ap_set_event(AP_EVENT_STANDBY);
   \   0254  110200            LD      DE,2
   \   0257  CD9C02            CALL    LWRD ?0096
    372                  return RESULT_STANDBY;
   \   025A  2E02              LD      L,2
    373              case AP_KEY_MODE | AP_KEY_LONG:    //长按menu进入main
   \   025C  183A              JR      ?0082
   \   025E            ?0075:
    374                  ap_set_event(AP_EVENT_MAIN);
   \   025E  110100            LD      DE,1
   \   0261  CD9C02            CALL    LWRD ?0096
    375                  return RESULT_MAIN;
   \   0264  2E0A              LD      L,10
    376                  //break;
    377              case AP_KEY_AB | AP_KEY_UP:    //进入录音
   \   0266  1830              JR      ?0082
   \   0268            ?0076:
    378                  ap_set_event(AP_EVENT_RECORD);
   \   0268  110400            LD      DE,4
   \   026B  CD9C02            CALL    LWRD ?0096
    379                  return RESULT_RECORD;
   \   026E  2E09              LD      L,9
    380              case AP_MSG_USB_PLUGIN:        //进入udisk 模式
   \   0270  1826              JR      ?0082
   \   0272            ?0077:
    381                  ap_set_event(AP_EVENT_UDISK);
   \   0272  110800            LD      DE,8
   \   0275  CD9C02            CALL    LWRD ?0096
    382                  return RESULT_UDISK;
   \   0278  2E04              LD      L,4
    383              case AP_MSG_LOCK:        //locked
   \   027A  181C              JR      ?0082
   \   027C            ?0078:
    384                  if(ui_run_realtime)    //实时模式不显示lock
   \   027C  3A0000            LD      A,(ui_run_realtime)
   \   027F  B7                OR      A
   \   0280  2014              JR      NZ,?0081
   \   0282            ?0079:
    385                  {
    386                      //TODO: send lock message to message queue
    387                      return 0;
    388                  }
   \   0282            ?0080:
    389                  else
    390                  {
    391                      ui_show_lock(1);    //这里不处理热键,防止嵌套
   \   0282  1E01              LD      E,1
   \   0284  3E00              LD      A,BYTE3 ui_show_lock
   \   0286  210000            LD      HL,LWRD ui_show_lock
   \   0289  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
    392                      ap_set_event(AP_EVENT_REDRAW);
   \   028C  111000            LD      DE,16
   \   028F  CD9C02            CALL    LWRD ?0096
    393                      return RESULT_REDRAW;
   \   0292  2E32              LD      L,50
    394                  }
   \   0294  1802              JR      ?0082
   \   0296            ?0081:
    395          //    case AP_KEY_UNLOCK:
    396          //        return ui_show_lock(0);
    397              default:
    398                  //here just drop the key
    399                  return 0;
   \   0296  2E00              LD      L,0
    400              }
   \   0298            ?0082:
   \   0298  F1                POP     AF
   \   0299  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   029C            ?0096:
   \   029C  3E00              LD      A,BYTE3 ap_set_event
   \   029E  217401            LD      HL,LWRD ap_set_event
   \   02A1  C30000            JP      LWRD ?BANK_CALL_DIRECT_L08
   \   02A4            ?0073:
    401          }
    402          
   \   0000                    RSEG    IDATA0
   \   0000            g_light_time:
   \   0001                    DEFS    1
   \   0001            g_sleep_time:
   \   0003                    DEFS    2
   \   0003            g_standby_time:
   \   0005                    DEFS    2
   \   0005            g_rtc_counter:
   \   0007                    DEFS    2
   \   0007            g_ap_event:
   \   0009                    DEFS    2
   \   0009            ?0006:
   \   000B                    DEFS    2
   \   000B            ?0007:
   \   000C                    DEFS    1
   \   0000                    RSEG    CDATA0
   \   0000  00                DEFB    0
   \   0001  0000              DEFW    0
   \   0003  0000              DEFW    0
   \   0005  0000              DEFW    0
   \   0007  0000              DEFW    0
   \   0009  0000              DEFW    0
   \   000B  00                DEFB    0
   \   000C                    END

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

⌨️ 快捷键说明

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