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

📄 ui_slider.lst

📁 炬力方案176*132软件源码,适用于AK1025
💻 LST
📖 第 1 页 / 共 3 页
字号:
   \   0301  77                LD      (HL),A
   \   0302  23                INC     HL
   \   0303  7E                LD      A,(HL)
   \   0304  FD9E09            SBC     A,(IY+9)
   \   0307            ?0107:
   \   0307  77                LD      (HL),A
    183                          value_changed = TRUE;
    184                          need_draw = TRUE;
   \   0308  DD36FA01          LD      (IX-6),1
   \   030C  DD36FB01          LD      (IX-5),1
   \   0310            ?0048:
    185                      }
    186                      
    187                      break;
   \   0310  1848              JR      ?0064
   \   0312            ?0049:
    188          
    189                  //hold 用来控制加速开关
    190                  case AP_KEY_NEXT | AP_KEY_HOLD:
    191                  case AP_KEY_VOLADD | AP_KEY_HOLD:
    192                      if(hold_state == 0) hold_state = 1;
   \   0312  AF                XOR     A
   \   0313  DDB6F9            OR      (IX-7)
   \   0316  2042              JR      NZ,?0064
   \   0318            ?0050:
   \   0318  DD36F901          LD      (IX-7),1
   \   031C            ?0051:
    193          
    194                      break;
   \   031C  183C              JR      ?0064
   \   031E            ?0052:
    195          
    196          
    197                  case AP_KEY_PREV | AP_KEY_HOLD:
    198                  case AP_KEY_VOLSUB | AP_KEY_HOLD:
    199                      if(hold_state == 0) hold_state = 2;
   \   031E  AF                XOR     A
   \   031F  DDB6F9            OR      (IX-7)
   \   0322  2036              JR      NZ,?0064
   \   0324            ?0053:
   \   0324  DD36F902          LD      (IX-7),2
   \   0328            ?0054:
    200                      
    201                      break;
   \   0328  1830              JR      ?0064
   \   032A            ?0055:
    202                      
    203          
    204                  case AP_KEY_NEXT | AP_KEY_UP:
    205                  case AP_KEY_VOLADD | AP_KEY_UP:
    206                  case AP_KEY_PREV | AP_KEY_UP:
    207                  case AP_KEY_VOLSUB | AP_KEY_UP:
    208                      hold_state = 0;
   \   032A  DD36F900          LD      (IX-7),0
    209                      
    210                      break;
   \   032E  182A              JR      ?0064
   \   0330            ?0056:
    211                      
    212                      
    213                  case AP_KEY_MODE | AP_KEY_UP:
    214                  case AP_KEY_PLAY | AP_KEY_UP:
    215                      return 0;        //ok and return
    216          
    217                      
    218                  case AP_MSG_WAIT_TIMEOUT:
   \   0330            ?0057:
    219                      if(ui_auto_select) return 0;
   \   0330  3A0000            LD      A,(ui_auto_select)
   \   0333  B7                OR      A
   \   0334  2824              JR      Z,?0064
   \   0336            ?0058:
   \   0336  180A              JR      ?0104
    220                  
    221                      break;
   \   0338            ?0059:
   \   0338            ?0060:
    222          
    223                      
    224                  default:
    225                      key = ap_handle_hotkey(key);
   \   0338  CD0000            CALL    LWRD ap_handle_hotkey
   \   033B  DD77F8            LD      (IX-8),A
    226                      if(key == RESULT_REDRAW) //need_draw = TRUE;
   \   033E  FE32              CP      50
   \   0340  2005              JR      NZ,?0062
   \   0342            ?0061:
    227                      {
    228                          //直接退出,因为控件不能重画背景
    229                          return 0;
   \   0342            ?0104:
   \   0342  210000            LD      HL,0
    230                      }
   \   0345  1809              JR      ?0090
   \   0347            ?0062:
    231                      else if(key != 0) return key;
   \   0347  AF                XOR     A
   \   0348  DDB6F8            OR      (IX-8)
   \   034B  280D              JR      Z,?0064
   \   034D            ?0063:
   \   034D  6F                LD      L,A
   \   034E  2600              LD      H,0
    232                  }
   \   0350            ?0090:
   \   0350  DDF9              LD      SP,IX
   \   0352  DDE1              POP     IX
   \   0354  FDE1              POP     IY
   \   0356  C1                POP     BC
   \   0357  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   035A            ?0064:
   \   035A            ?0042:
    233           
    234          
    235                  //check if holding
    236                  if(hold_state == 1)        //holding up
   \   035A  DD46F9            LD      B,(IX-7)
   \   035D  05                DEC     B
   \   035E  205B              JR      NZ,?0066
   \   0360            ?0065:
    237                  {
    238                      if((slider->value + slider->step) <= slider->max)
   \   0360  FD6E08            LD      L,(IY+8)
   \   0363  FD6609            LD      H,(IY+9)
   \   0366  FD4E06            LD      C,(IY+6)
   \   0369  FD4607            LD      B,(IY+7)
   \   036C  09                ADD     HL,BC
   \   036D  4D                LD      C,L
   \   036E  44                LD      B,H
   \   036F  FD6E04            LD      L,(IY+4)
   \   0372  FD6605            LD      H,(IY+5)
   \   0375  F680              OR      128
   \   0377  ED42              SBC     HL,BC
   \   0379  E27D03            JP      PO,?0096
   \   037C  AC                XOR     H
   \   037D            ?0096:
   \   037D  FAB303            JP      M,?0068
   \   0380            ?0067:
    239                      {
    240                          slider->value += slider->step;
   \   0380  210600            LD      HL,6
   \   0383  FDE5              PUSH    IY
   \   0385  C1                POP     BC
   \   0386  09                ADD     HL,BC
   \   0387  7E                LD      A,(HL)
   \   0388  FD8608            ADD     A,(IY+8)
   \   038B  77                LD      (HL),A
   \   038C  23                INC     HL
   \   038D  7E                LD      A,(HL)
   \   038E  FD8E09            ADC     A,(IY+9)
   \   0391  77                LD      (HL),A
    241                          value_changed = TRUE;
    242                          need_draw = TRUE;
   \   0392  DD36FA01          LD      (IX-6),1
   \   0396  DD36FB01          LD      (IX-5),1
   \   039A            ?0070:
    243           
    244                          while(key != NULL)
   \   039A  AF                XOR     A
   \   039B  DDB6F8            OR      (IX-8)
   \   039E  CA2404            JP      Z,?0085
   \   03A1            ?0071:
    245                          {
    246                              if((key & AP_KEY_UP) != NULL)
   \   03A1  DDCBF86E          BIT     5,(IX-8)
   \   03A5  2804              JR      Z,?0073
   \   03A7            ?0072:
    247                                  hold_state = 0;
   \   03A7  DD36F900          LD      (IX-7),0
   \   03AB            ?0073:
    248                              key = ap_get_message();
   \   03AB  CD0000            CALL    LWRD ap_get_message
   \   03AE  DD77F8            LD      (IX-8),A
    249                          }       
    250                      }
   \   03B1  18E7              JR      ?0070
   \   03B3            ?0069:
    251                      else
   \   03B3            ?0068:
    252                      {
    253                                          hold_state = 0;    //disable holding
    254                                          slider->value=slider->max;
   \   03B3  FD6E04            LD      L,(IY+4)
   \   03B6  FD6605            LD      H,(IY+5)
   \   03B9  185F              JR      ?0108
   \   03BB            ?0074:
   \   03BB            ?0066:
    255                      }
    256                  }
    257                  else if(hold_state == 2)    //holding down
   \   03BB  DD46F9            LD      B,(IX-7)
   \   03BE  05                DEC     B
   \   03BF  05                DEC     B
   \   03C0  2062              JR      NZ,?0085
   \   03C2            ?0076:
    258                  {
    259                      if((slider->value - slider->step) >= slider->min)
   \   03C2  FD4E02            LD      C,(IY+2)
   \   03C5  FD4603            LD      B,(IY+3)
   \   03C8  FD5E08            LD      E,(IY+8)
   \   03CB  FD5609            LD      D,(IY+9)
   \   03CE  FD6E06            LD      L,(IY+6)
   \   03D1  FD6607            LD      H,(IY+7)
   \   03D4  A7                AND     A
   \   03D5  ED52              SBC     HL,DE
   \   03D7  F680              OR      128
   \   03D9  ED42              SBC     HL,BC
   \   03DB  E2DF03            JP      PO,?0097
   \   03DE  AC                XOR     H
   \   03DF            ?0097:
   \   03DF  FA1404            JP      M,?0079
   \   03E2            ?0078:
    260                      {
    261                          slider->value -= slider->step;
   \   03E2  210600            LD      HL,6
   \   03E5  FDE5              PUSH    IY
   \   03E7  C1                POP     BC
   \   03E8  09                ADD     HL,BC
   \   03E9  7E                LD      A,(HL)
   \   03EA  FD9608            SUB     (IY+8)
   \   03ED  77                LD      (HL),A
   \   03EE  23                INC     HL
   \   03EF  7E                LD      A,(HL)
   \   03F0  FD9E09            SBC     A,(IY+9)
   \   03F3  77                LD      (HL),A
    262                          value_changed = TRUE;
    263                          need_draw = TRUE;
   \   03F4  DD36FA01          LD      (IX-6),1
   \   03F8  DD36FB01          LD      (IX-5),1
   \   03FC            ?0081:
    264           
    265                          while(key != NULL)
   \   03FC  AF                XOR     A
   \   03FD  DDB6F8            OR      (IX-8)
   \   0400  2822              JR      Z,?0085
   \   0402            ?0082:
    266                          { 
    267                              if((key & AP_KEY_UP) != NULL)
   \   0402  DDCBF86E          BIT     5,(IX-8)
   \   0406  2804              JR      Z,?0084
   \   0408            ?0083:
    268                                  hold_state = 0; 
   \   0408  DD36F900          LD      (IX-7),0
   \   040C            ?0084:
    269                              key = ap_get_message();
   \   040C  CD0000            CALL    LWRD ap_get_message
   \   040F  DD77F8            LD      (IX-8),A
    270                          }
    271                      }
   \   0412  18E8              JR      ?0081
   \   0414            ?0080:
    272                      else
   \   0414            ?0079:
    273                                  {
    274                                          hold_state = 0;    //disable holding  
    275                                          slider->value=slider->min;
   \   0414  FD6E02            LD      L,(IY+2)
   \   0417  FD6603            LD      H,(IY+3)
   \   041A            ?0108:
   \   041A  FD7506            LD      (IY+6),L
   \   041D  FD7407            LD      (IY+7),H
   \   0420  DD36F900          LD      (IX-7),0
   \   0424            ?0085:
   \   0424            ?0077:
   \   0424            ?0075:
    276                      }
    277                  }
    278          
    279                  //handle callback
    280                  if(callback != NULL && value_changed)
   \   0424  DD7E0A            LD      A,(IX+10)
   \   0427  DDB60B            OR      (IX+11)
   \   042A  DDB60C            OR      (IX+12)
   \   042D  CA2301            JP      Z,?0020
   \   0430  AF                XOR     A
   \   0431  DDB6FA            OR      (IX-6)
   \   0434  CA2301            JP      Z,?0020
   \   0437            ?0089:
   \   0437            ?0088:
   \   0437            ?0086:
    281                  {
    282                      callback(slider->value);
   \   0437  FD5E06            LD      E,(IY+6)
   \   043A  FD5607            LD      D,(IY+7)
   \   043D  DD7E0C            LD      A,(IX+12)
   \   0440  DD6E0A            LD      L,(IX+10)
   \   0443  DD660B            LD      H,(IX+11)
   \   0446  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
    283                      value_changed = FALSE;
   \   0449  DD36FA00          LD      (IX-6),0
   \   044D            ?0087:
    284                  }
    285                  
    286              }//while(1)
    287          }
   \   044D  C32301            JP      LWRD ?0020
   \   0450            ?0112:
   \   0450  1600              LD      D,0
   \   0452            ?0111:
   \   0452  215A00            LD      HL,90
   \   0455  19                ADD     HL,DE
   \   0456  EB                EX      DE,HL
   \   0457            ?0110:
   \   0457  3E00              LD      A,BYTE3 main_ResShowPic
   \   0459  210000            LD      HL,LWRD main_ResShowPic
   \   045C  C30000            JP      LWRD ?BANK_CALL_DIRECT_L08
    288          
    289          
   \   045F                    END

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

⌨️ 快捷键说明

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