ui_userlist.lst

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

LST
1,141
字号
   \   025F  2819              JR      Z,?0050
   \   0261            ?0049:
    177                  {
    178                      Process_onePage(&CurOffset,direct,last_list);
   \   0261  DD6EFE            LD      L,(IX-2)
   \   0264  E5                PUSH    HL
   \   0265  DD4EFB            LD      C,(IX-5)
   \   0268  210C00            LD      HL,12
   \   026B  39                ADD     HL,SP
   \   026C  EB                EX      DE,HL
   \   026D  3E00              LD      A,BYTE3 Process_onePage
   \   026F  213201            LD      HL,LWRD Process_onePage
   \   0272  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   0275  E1                POP     HL
    179                      need_read= FALSE;
   \   0276  DD36F900          LD      (IX-7),0
   \   027A            ?0050:
    180                  }
    181                  if(need_draw)
   \   027A  AF                XOR     A
   \   027B  DDB6F5            OR      (IX-11)
   \   027E  2820              JR      Z,?0052
   \   0280            ?0051:
    182                  {
    183                      ui_viewlist(old_active,new_active,list_num,type,0);
   \   0280  0E00              LD      C,0
   \   0282  C5                PUSH    BC
   \   0283  DD6E04            LD      L,(IX+4)
   \   0286  E5                PUSH    HL
   \   0287  DD6EF8            LD      L,(IX-8)
   \   028A  E5                PUSH    HL
   \   028B  DD4EF4            LD      C,(IX-12)
   \   028E  DD5EF6            LD      E,(IX-10)
   \   0291  3E00              LD      A,BYTE3 ui_viewlist
   \   0293  210000            LD      HL,LWRD ui_viewlist
   \   0296  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   0299  E1                POP     HL
   \   029A  E1                POP     HL
   \   029B  E1                POP     HL
    184                         need_draw = FALSE;
   \   029C  DD36F500          LD      (IX-11),0
   \   02A0            ?0052:
    185                  }
    186              //handle msg
    187                  key = ap_get_message();
   \   02A0  CD0000            CALL    LWRD ap_get_message
    188                  old_active = new_active;
   \   02A3  DD46F4            LD      B,(IX-12)
   \   02A6  DD70F6            LD      (IX-10),B
    189                  switch(key)
   \   02A9  5F                LD      E,A
   \   02AA  CD0000            CALL    LWRD ?C_V_SWITCH_L06
   \   02AD  0700              DEFW    7
   \   02AF  05                DEFB    5
   \   02B0  06                DEFB    6
   \   02B1  1E                DEFB    30
   \   02B2  21                DEFB    33
   \   02B3  30                DEFB    48
   \   02B4  45                DEFB    69
   \   02B5  46                DEFB    70
   \   02B6  9E04              DEFW    ?0086
   \   02B8  C602              DEFW    ?0054
   \   02BA  3C03              DEFW    ?0060
   \   02BC  BB03              DEFW    ?0067
   \   02BE  9604              DEFW    ?0085
   \   02C0  9604              DEFW    ?0085
   \   02C2  C602              DEFW    ?0054
   \   02C4  3C03              DEFW    ?0060
   \   02C6            ?0054:
    190                  {
    191          
    192                  case AP_KEY_NEXT:
    193                  case AP_KEY_NEXT | AP_KEY_HOLD:
    194                       if(g_list_count<vTotal-1)
   \   02C6  21FFFF            LD      HL,65535
   \   02C9  ED4BC602          LD      BC,(vTotal)
   \   02CD  09                ADD     HL,BC
   \   02CE  4D                LD      C,L
   \   02CF  44                LD      B,H
   \   02D0  FDE5              PUSH    IY
   \   02D2  E1                POP     HL
   \   02D3  A7                AND     A
   \   02D4  ED42              SBC     HL,BC
   \   02D6  303A              JR      NC,?0056
   \   02D8            ?0055:
    195                       {
    196                           g_list_count++;
    197                           new_active++;
   \   02D8  DD34F4            INC     (IX-12)
    198                           need_draw = TRUE;
   \   02DB  DD36F501          LD      (IX-11),1
    199                           if(new_active%MENU_GROUP==0)
   \   02DF  0606              LD      B,6
   \   02E1  DD7EF4            LD      A,(IX-12)
   \   02E4  CD0000            CALL    LWRD ?UC_MOD_L01
   \   02E7  B7                OR      A
   \   02E8  FD23              INC     IY
   \   02EA  204D              JR      NZ,?0059
   \   02EC            ?0057:
    200                           {
    201                              need_read = TRUE;
    202                              new_active =0;
    203                              old_active = 0;
    204                              direct =0;
    205                              memcpy(&CurOffset,disbuff+28+30*(MENU_GROUP-1),2);
   \   02EC  010200            LD      BC,2
   \   02EF  210A00            LD      HL,10
   \   02F2  39                ADD     HL,SP
   \   02F3  EB                EX      DE,HL
   \   02F4  21B202            LD      HL,disbuff+178
   \   02F7  EDB0              LDIR
    206                              list_num =vTotal-g_list_count;
   \   02F9  FDE5              PUSH    IY
   \   02FB  E1                POP     HL
   \   02FC  3AC602            LD      A,(vTotal)
   \   02FF  95                SUB     L
   \   0300  DD77F8            LD      (IX-8),A
   \   0303  DD36F901          LD      (IX-7),1
   \   0307  DD70F4            LD      (IX-12),B
   \   030A  DD70F6            LD      (IX-10),B
   \   030D  DD70FB            LD      (IX-5),B
   \   0310            ?0058:
    207                           }
    208                        } 
    209                        else                //最后一项回到头部
   \   0310  1827              JR      ?0059
   \   0312            ?0056:
    210                        {
    211                           need_draw = TRUE;
    212                           need_read = TRUE;
    213                           new_active =0;
    214                           old_active = 0;
    215                           direct =0;
    216                           g_list_count = 0;
    217                             
    218                           CurOffset = vFirstOffset;
   \   0312  2AC202            LD      HL,(vFirstOffset)
   \   0315  DD75FC            LD      (IX-4),L
   \   0318  DD74FD            LD      (IX-3),H
    219                           list_num  = vTotal;   
   \   031B  3AC602            LD      A,(vTotal)
   \   031E  DD77F8            LD      (IX-8),A
   \   0321  DD36F501          LD      (IX-11),1
   \   0325  DD36F901          LD      (IX-7),1
   \   0329  DD36F400          LD      (IX-12),0
   \   032D  DD36F600          LD      (IX-10),0
   \   0331  DD36FB00          LD      (IX-5),0
   \   0335  FD210000          LD      IY,0
   \   0339            ?0059:
    220                         }
    221                                   
    222                       break;
   \   0339  C35B02            JP      LWRD ?0047
   \   033C            ?0060:
    223                  case AP_KEY_PREV:
    224                  case AP_KEY_PREV | AP_KEY_HOLD :
    225                       if(g_list_count>0)  
   \   033C  FDE5              PUSH    IY
   \   033E  E1                POP     HL
   \   033F  7D                LD      A,L
   \   0340  B4                OR      H
   \   0341  2836              JR      Z,?0062
   \   0343            ?0061:
    226                       {
    227                         g_list_count--;    
    228                         last_list = 0; 
    229                         need_draw = TRUE;
    230                         if(new_active==0)
   \   0343  DD36FE00          LD      (IX-2),0
   \   0347  DD36F501          LD      (IX-11),1
   \   034B  AF                XOR     A
   \   034C  B0                OR      B
   \   034D  FD2B              DEC     IY
   \   034F  2023              JR      NZ,?0064
   \   0351            ?0063:
    231                         {
    232                           need_read = TRUE;
    233                           new_active = MENU_GROUP-1;
    234                           old_active = MENU_GROUP-1;
    235                           direct =1;
    236                           memcpy(&CurOffset,disbuff+26,2);
   \   0351  0E02              LD      C,2
   \   0353  210A00            LD      HL,10
   \   0356  39                ADD     HL,SP
   \   0357  EB                EX      DE,HL
   \   0358  211A02            LD      HL,disbuff+26
   \   035B  EDB0              LDIR
    237                           list_num = MENU_GROUP;
   \   035D  DD36F901          LD      (IX-7),1
   \   0361  DD36F405          LD      (IX-12),5
   \   0365  DD36F605          LD      (IX-10),5
   \   0369  DD36FB01          LD      (IX-5),1
   \   036D  DD36F806          LD      (IX-8),6
    238                            break;
   \   0371  C35B02            JP      LWRD ?0047
   \   0374            ?0064:
    239                         }
    240                         new_active--;
   \   0374  DD35F4            DEC     (IX-12)
    241                       }
    242                       else      //从第一项跳到最后一项
   \   0377  183F              JR      ?0065
   \   0379            ?0062:
    243                       {              
    244                        need_draw = TRUE;    
    245                        need_read = TRUE;
    246                        new_active = (vTotal-1)%MENU_GROUP;  //最后一项的编号
   \   0379  21FFFF            LD      HL,65535
   \   037C  ED4BC602          LD      BC,(vTotal)
   \   0380  09                ADD     HL,BC
   \   0381  EB                EX      DE,HL
   \   0382  010600            LD      BC,6
   \   0385  CD0000            CALL    LWRD ?US_MOD_L02
   \   0388  DD73F4            LD      (IX-12),E
    247                        old_active = new_active;
    248                        last_list =  new_active+1;            //最后一项的位置 
   \   038B  1C                INC     E
   \   038C  DD73FE            LD      (IX-2),E
    249                        direct =1;    
    250                       // vsave_offset = 0xffff;  
    251                        list_num = new_active+1;
   \   038F  DD73F8            LD      (IX-8),E
    252                        g_list_count = vTotal-1;
   \   0392  21FFFF            LD      HL,65535
   \   0395  ED4BC602          LD      BC,(vTotal)
   \   0399  09                ADD     HL,BC
   \   039A  E5                PUSH    HL
   \   039B  FDE1              POP     IY
    253                        CurOffset = vLastOffset;           //最后一项的偏移
   \   039D  2AC402            LD      HL,(vLastOffset)
   \   03A0  DD75FC            LD      (IX-4),L
   \   03A3  DD74FD            LD      (IX-3),H
   \   03A6  DD46F4            LD      B,(IX-12)
   \   03A9  DD70F6            LD      (IX-10),B
   \   03AC  DD36F501          LD      (IX-11),1
   \   03B0  DD36F901          LD      (IX-7),1
   \   03B4  DD36FB01          LD      (IX-5),1
   \   03B8            ?0065:
    254                       }             
    255                        break;
   \   03B8  C35B02            JP      LWRD ?0047
   \   03BB            ?0066:
    256                  case AP_KEY_PLAY | AP_KEY_UP:
    257          
    258                       output8(0x27,00);
    259                       FS_FClose(fpview);
    260                       output8(0x27,IO27);
    261                       return RESULT_IGNORE;
    262                  case AP_KEY_MODE | AP_KEY_UP:
   \   03BB            ?0067:
    263           
    264                  if(type==0)
   \   03BB  AF                XOR     A
   \   03BC  DDB604            OR      (IX+4)
   \   03BF  2017              JR      NZ,?0069
   \   03C1            ?0068:
    265                  {
    266                       output8(0x27,00);
    267                       FS_FClose(fpview);
   \   03C1  CDE504            CALL    LWRD ?0107
    268                       output8(0x27,IO27);
    269                       location->PL_Cur = g_list_count+1;
   \   03C4  212900            LD      HL,41
   \   03C7  DD4E02            LD      C,(IX+2)
   \   03CA  DD4603            LD      B,(IX+3)
   \   03CD  09                ADD     HL,BC
   \   03CE  FDE5              PUSH    IY
   \   03D0  C1                POP     BC
   \   03D1  03                INC     BC
   \   03D2  71                LD      (HL),C
   \   03D3  23                INC     HL
   \   03D4  70                LD      (HL),B
    270                       return RESULT_NULL;
   \   03D5  C39104            JP      LWRD ?0080
    271                  }
   \   03D8            ?0069:
    272                  else
    273                  {
    274                       output8(0x27,00);
    275                       FS_FClose(fpview);
   \   03D8  CDE404            CALL    LWRD ?0108
    276                       output8(0x27,IO27);
    277                       if(new_active>0)      //从双向链表被删除项的前驱的直接后继找当前的offset
   \   03DB  AF                XOR     A
   \   03DC  B0                OR      B
   \   03DD  280F              JR      Z,?0071

⌨️ 快捷键说明

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