ui_slider.lst

来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 1,032 行 · 第 1/4 页

LST
1,032
字号
   \   0411  DD36F900          LD      (IX-7),0
    209                      
    210                      break;
   \   0415  1837              JR      ?0064
   \   0417            ?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
   \   0417  210000            LD      HL,0
    216          
    217                      
    218                  case AP_MSG_WAIT_TIMEOUT:
   \   041A  1828              JR      ?0090
   \   041C            ?0057:
    219                      if(ui_auto_select) return 0;
   \   041C  3A0000            LD      A,(ui_auto_select)
   \   041F  B7                OR      A
   \   0420  282C              JR      Z,?0064
   \   0422            ?0058:
   \   0422  210000            LD      HL,0
    220                  
    221                      break;
   \   0425  181D              JR      ?0090
   \   0427            ?0059:
   \   0427            ?0060:
    222          
    223                      
    224                  default:
    225                      key = ap_handle_hotkey(key);
   \   0427  DD5EF8            LD      E,(IX-8)
   \   042A  CD0000            CALL    LWRD ap_handle_hotkey
   \   042D  DD77F8            LD      (IX-8),A
    226                      if(key == RESULT_REDRAW) //need_draw = TRUE;
   \   0430  FE32              CP      50
   \   0432  2005              JR      NZ,?0062
   \   0434            ?0061:
    227                      {
    228                          //直接退出,因为控件不能重画背景
    229                          return 0;
   \   0434  210000            LD      HL,0
    230                      }
   \   0437  180B              JR      ?0090
   \   0439            ?0062:
    231                      else if(key != 0) return key;
   \   0439  AF                XOR     A
   \   043A  DDB6F8            OR      (IX-8)
   \   043D  280F              JR      Z,?0064
   \   043F            ?0063:
   \   043F  DD6EF8            LD      L,(IX-8)
   \   0442  2600              LD      H,0
    232                  }
   \   0444            ?0090:
   \   0444  DDF9              LD      SP,IX
   \   0446  DDE1              POP     IX
   \   0448  FDE1              POP     IY
   \   044A  C1                POP     BC
   \   044B  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   044E            ?0064:
   \   044E            ?0042:
    233           
    234          
    235                  //check if holding
    236                  if(hold_state == 1)        //holding up
   \   044E  DD46F9            LD      B,(IX-7)
   \   0451  05                DEC     B
   \   0452  2065              JR      NZ,?0066
   \   0454            ?0065:
    237                  {
    238                      if((slider->value + slider->step) <= slider->max)
   \   0454  FD6E08            LD      L,(IY+8)
   \   0457  FD6609            LD      H,(IY+9)
   \   045A  FD4E06            LD      C,(IY+6)
   \   045D  FD4607            LD      B,(IY+7)
   \   0460  09                ADD     HL,BC
   \   0461  4D                LD      C,L
   \   0462  44                LD      B,H
   \   0463  FD6E04            LD      L,(IY+4)
   \   0466  FD6605            LD      H,(IY+5)
   \   0469  F680              OR      128
   \   046B  ED42              SBC     HL,BC
   \   046D  E27104            JP      PO,?0093
   \   0470  AC                XOR     H
   \   0471            ?0093:
   \   0471  FAA704            JP      M,?0068
   \   0474            ?0067:
    239                      {
    240                          slider->value += slider->step;
   \   0474  210600            LD      HL,6
   \   0477  FDE5              PUSH    IY
   \   0479  C1                POP     BC
   \   047A  09                ADD     HL,BC
   \   047B  7E                LD      A,(HL)
   \   047C  FD8608            ADD     A,(IY+8)
   \   047F  77                LD      (HL),A
   \   0480  23                INC     HL
   \   0481  7E                LD      A,(HL)
   \   0482  FD8E09            ADC     A,(IY+9)
   \   0485  77                LD      (HL),A
    241                          value_changed = TRUE;
   \   0486  DD36FA01          LD      (IX-6),1
    242                          need_draw = TRUE;
   \   048A  DD36FB01          LD      (IX-5),1
   \   048E            ?0070:
    243           
    244                          while(key != NULL)
   \   048E  AF                XOR     A
   \   048F  DDB6F8            OR      (IX-8)
   \   0492  CA2205            JP      Z,?0085
   \   0495            ?0071:
    245                          {
    246                              if((key & AP_KEY_UP) != NULL)
   \   0495  DDCBF86E          BIT     5,(IX-8)
   \   0499  2804              JR      Z,?0073
   \   049B            ?0072:
    247                                  hold_state = 0;
   \   049B  DD36F900          LD      (IX-7),0
   \   049F            ?0073:
    248                              key = ap_get_message();
   \   049F  CD0000            CALL    LWRD ap_get_message
   \   04A2  DD77F8            LD      (IX-8),A
    249                          }       
    250                      }
   \   04A5  18E7              JR      ?0070
   \   04A7            ?0069:
    251                      else
   \   04A7            ?0068:
    252                      {
    253                                          hold_state = 0;    //disable holding
   \   04A7  DD36F900          LD      (IX-7),0
    254                                          slider->value=slider->max;
   \   04AB  FD6E04            LD      L,(IY+4)
   \   04AE  FD6605            LD      H,(IY+5)
   \   04B1  FD7506            LD      (IY+6),L
   \   04B4  FD7407            LD      (IY+7),H
   \   04B7            ?0074:
   \   04B7  1869              JR      ?0085
   \   04B9            ?0066:
    255                      }
    256                  }
    257                  else if(hold_state == 2)    //holding down
   \   04B9  DD46F9            LD      B,(IX-7)
   \   04BC  05                DEC     B
   \   04BD  05                DEC     B
   \   04BE  2062              JR      NZ,?0085
   \   04C0            ?0076:
    258                  {
    259                      if((slider->value - slider->step) >= slider->min)
   \   04C0  FD4E02            LD      C,(IY+2)
   \   04C3  FD4603            LD      B,(IY+3)
   \   04C6  FD5E08            LD      E,(IY+8)
   \   04C9  FD5609            LD      D,(IY+9)
   \   04CC  FD6E06            LD      L,(IY+6)
   \   04CF  FD6607            LD      H,(IY+7)
   \   04D2  A7                AND     A
   \   04D3  ED52              SBC     HL,DE
   \   04D5  F680              OR      128
   \   04D7  ED42              SBC     HL,BC
   \   04D9  E2DD04            JP      PO,?0094
   \   04DC  AC                XOR     H
   \   04DD            ?0094:
   \   04DD  FA1205            JP      M,?0079
   \   04E0            ?0078:
    260                      {
    261                          slider->value -= slider->step;
   \   04E0  210600            LD      HL,6
   \   04E3  FDE5              PUSH    IY
   \   04E5  C1                POP     BC
   \   04E6  09                ADD     HL,BC
   \   04E7  7E                LD      A,(HL)
   \   04E8  FD9608            SUB     (IY+8)
   \   04EB  77                LD      (HL),A
   \   04EC  23                INC     HL
   \   04ED  7E                LD      A,(HL)
   \   04EE  FD9E09            SBC     A,(IY+9)
   \   04F1  77                LD      (HL),A
    262                          value_changed = TRUE;
   \   04F2  DD36FA01          LD      (IX-6),1
    263                          need_draw = TRUE;
   \   04F6  DD36FB01          LD      (IX-5),1
   \   04FA            ?0081:
    264           
    265                          while(key != NULL)
   \   04FA  AF                XOR     A
   \   04FB  DDB6F8            OR      (IX-8)
   \   04FE  2822              JR      Z,?0085
   \   0500            ?0082:
    266                          { 
    267                              if((key & AP_KEY_UP) != NULL)
   \   0500  DDCBF86E          BIT     5,(IX-8)
   \   0504  2804              JR      Z,?0084
   \   0506            ?0083:
    268                                  hold_state = 0; 
   \   0506  DD36F900          LD      (IX-7),0
   \   050A            ?0084:
    269                              key = ap_get_message();
   \   050A  CD0000            CALL    LWRD ap_get_message
   \   050D  DD77F8            LD      (IX-8),A
    270                          }
    271                      }
   \   0510  18E8              JR      ?0081
   \   0512            ?0080:
    272                      else
   \   0512            ?0079:
    273                                  {
    274                                          hold_state = 0;    //disable holding  
   \   0512  DD36F900          LD      (IX-7),0
    275                                          slider->value=slider->min;
   \   0516  FD6E02            LD      L,(IY+2)
   \   0519  FD6603            LD      H,(IY+3)
   \   051C  FD7506            LD      (IY+6),L
   \   051F  FD7407            LD      (IY+7),H
   \   0522            ?0085:
   \   0522            ?0077:
   \   0522            ?0075:
    276                      }
    277                  }
    278          
    279                  //handle callback
    280                  if(callback != NULL && value_changed)
   \   0522  DD7E0A            LD      A,(IX+10)
   \   0525  DDB60B            OR      (IX+11)
   \   0528  DDB60C            OR      (IX+12)
   \   052B  CA6401            JP      Z,?0020
   \   052E  AF                XOR     A
   \   052F  DDB6FA            OR      (IX-6)
   \   0532  CA6401            JP      Z,?0020
   \   0535            ?0089:
   \   0535            ?0088:
   \   0535            ?0086:
    281                  {
    282                      callback(slider->value);
   \   0535  FD5E06            LD      E,(IY+6)
   \   0538  FD5607            LD      D,(IY+7)
   \   053B  DD7E0C            LD      A,(IX+12)
   \   053E  DD6E0A            LD      L,(IX+10)
   \   0541  DD660B            LD      H,(IX+11)
   \   0544  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
    283                      value_changed = FALSE;
   \   0547  DD36FA00          LD      (IX-6),0
   \   054B            ?0087:
    284                  }
    285                  
    286              }//while(1)
    287          }
   \   054B  C36401            JP      LWRD ?0020
    288          
    289          
   \   054E                    END

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

⌨️ 快捷键说明

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