userlist_del.lst

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

LST
527
字号
     80              save_offset1 = 0xffff;
   \   0101  21FFFF            LD      HL,65535
   \   0104  223702            LD      (save_offset1),HL
     81              if(Read_Data(LastOffset))
   \   0107  ED5B0000          LD      DE,(LastOffset)
   \   010B  CD2602            CALL    LWRD ?0037
   \   010E  284E              JR      Z,?0017
   \   0110            ?0016:
     82              {
     83                   memcpy(&pl_list,buff+(LastOffset%4)*USER_PLAYLIST_SIZE,sizeof(user_playlist_t));
   \   0110  012B00            LD      BC,43
   \   0113  2A0000            LD      HL,(LastOffset)
   \   0116  7D                LD      A,L
   \   0117  CD4802            CALL    LWRD ?0040
     84                   if(LastOffset==offset) //删除为最后一个
   \   011A  DD6E02            LD      L,(IX+2)
   \   011D  DD6603            LD      H,(IX+3)
   \   0120  ED4B0000          LD      BC,(LastOffset)
   \   0124  A7                AND     A
   \   0125  ED42              SBC     HL,BC
   \   0127  2019              JR      NZ,?0019
   \   0129            ?0018:
     85                   {
     86                       LastOffset = pl_list.PrevOffset;
   \   0129  2A3302            LD      HL,(pl_list+39)
   \   012C  220000            LD      (LastOffset),HL
     87                       pl_list.DelFlag = 2;
   \   012F  3E02              LD      A,2
   \   0131  320C02            LD      (pl_list),A
     88                       memcpy(buff+(offset%4)*USER_PLAYLIST_SIZE,&pl_list,sizeof(user_playlist_t));
   \   0134  012B00            LD      BC,43
   \   0137  DD7E02            LD      A,(IX+2)
   \   013A  E603              AND     3
   \   013C  6F                LD      L,A
   \   013D  60                LD      H,B
   \   013E  EB                EX      DE,HL
   \   013F  C30002            JP      LWRD ?0035
     89                       goto Finish;
   \   0142            ?0019:
     90                       
     91                   } 
     92                   FreeList = pl_list.NextOffset;
   \   0142  2A3502            LD      HL,(pl_list+41)
   \   0145  DD75FC            LD      (IX-4),L
   \   0148  DD74FD            LD      (IX-3),H
     93                   pl_list.NextOffset = offset;
   \   014B  DD6E02            LD      L,(IX+2)
   \   014E  DD6603            LD      H,(IX+3)
   \   0151  223502            LD      (pl_list+41),HL
     94                   memcpy(buff+(LastOffset%4)*USER_PLAYLIST_SIZE,&pl_list,sizeof(user_playlist_t));
   \   0154  012B00            LD      BC,43
   \   0157  2A0000            LD      HL,(LastOffset)
   \   015A  7D                LD      A,L
   \   015B  CD3102            CALL    LWRD ?0038
   \   015E            ?0017:
     95                    
     96                  
     97              }
     98              //处理删除item
     99              if(Read_Data(offset))
   \   015E  DD5E02            LD      E,(IX+2)
   \   0161  DD5603            LD      D,(IX+3)
   \   0164  CD2602            CALL    LWRD ?0037
   \   0167  282C              JR      Z,?0022
   \   0169            ?0021:
    100              {
    101                    
    102                   memcpy(&pl_list,buff+(offset%4)*USER_PLAYLIST_SIZE,sizeof(user_playlist_t));
   \   0169  012B00            LD      BC,43
   \   016C  DD7E02            LD      A,(IX+2)
   \   016F  CD4802            CALL    LWRD ?0040
    103                   prev = pl_list.PrevOffset;
   \   0172  2A3302            LD      HL,(pl_list+39)
   \   0175  DD75FA            LD      (IX-6),L
   \   0178  DD74FB            LD      (IX-5),H
    104                   next = pl_list.NextOffset;
   \   017B  FD2A3502          LD      IY,(pl_list+41)
    105                   pl_list.NextOffset=FreeList;
   \   017F  DD6EFC            LD      L,(IX-4)
   \   0182  DD66FD            LD      H,(IX-3)
   \   0185  223502            LD      (pl_list+41),HL
    106                   pl_list.DelFlag = 2;
   \   0188  3E02              LD      A,2
   \   018A  320C02            LD      (pl_list),A
    107                   memcpy(buff+(offset%4)*USER_PLAYLIST_SIZE,&pl_list,sizeof(user_playlist_t)); 
   \   018D  0E2B              LD      C,43
   \   018F  DD7E02            LD      A,(IX+2)
   \   0192  CD3102            CALL    LWRD ?0038
   \   0195            ?0022:
    108                  
    109              }
    110              //处理prev item
    111              if(offset==FirstOffset)
   \   0195  2A0000            LD      HL,(FirstOffset)
   \   0198  DD4E02            LD      C,(IX+2)
   \   019B  DD4603            LD      B,(IX+3)
   \   019E  A7                AND     A
   \   019F  ED42              SBC     HL,BC
   \   01A1  2006              JR      NZ,?0024
   \   01A3            ?0023:
    112              {
    113                  FirstOffset = next;
   \   01A3  FD220000          LD      (FirstOffset),IY
    114                   
    115                   
    116              }
    117              else  
   \   01A7  1820              JR      ?0027
   \   01A9            ?0024:
    118              {
    119                  if(Read_Data(prev))
   \   01A9  DD5EFA            LD      E,(IX-6)
   \   01AC  DD56FB            LD      D,(IX-5)
   \   01AF  CD2602            CALL    LWRD ?0037
   \   01B2  2815              JR      Z,?0027
   \   01B4            ?0026:
    120                  {
    121                   memcpy(&pl_list,buff+(prev%4)*USER_PLAYLIST_SIZE,sizeof(user_playlist_t));
   \   01B4  012B00            LD      BC,43
   \   01B7  DD7EFA            LD      A,(IX-6)
   \   01BA  CD4802            CALL    LWRD ?0040
    122                   pl_list.NextOffset=next;
   \   01BD  FD223502          LD      (pl_list+41),IY
    123                   memcpy(buff+(prev%4)*USER_PLAYLIST_SIZE,&pl_list,sizeof(user_playlist_t)); 
   \   01C1  0E2B              LD      C,43
   \   01C3  DD7EFA            LD      A,(IX-6)
   \   01C6  CD3102            CALL    LWRD ?0038
   \   01C9            ?0027:
   \   01C9            ?0025:
    124                  }
    125                  
    126              }
    127              //处理next item
    128              if(Read_Data(next))
   \   01C9  FDE5              PUSH    IY
   \   01CB  D1                POP     DE
   \   01CC  CD2602            CALL    LWRD ?0037
   \   01CF  2832              JR      Z,?0029
   \   01D1            ?0028:
    129              {
    130                   
    131                   memcpy(&pl_list,buff+(next%4)*USER_PLAYLIST_SIZE,sizeof(user_playlist_t));
   \   01D1  012B00            LD      BC,43
   \   01D4  FDE5              PUSH    IY
   \   01D6  E1                POP     HL
   \   01D7  7D                LD      A,L
   \   01D8  E603              AND     3
   \   01DA  5F                LD      E,A
   \   01DB  AF                XOR     A
   \   01DC  57                LD      D,A
   \   01DD  0607              LD      B,7
   \   01DF  CD0000            CALL    LWRD ?S_LSH_L02
   \   01E2  210000            LD      HL,buff
   \   01E5  19                ADD     HL,DE
   \   01E6  110C02            LD      DE,pl_list
   \   01E9  47                LD      B,A
   \   01EA  EDB0              LDIR
    132                   pl_list.PrevOffset=prev;
   \   01EC  DD6EFA            LD      L,(IX-6)
   \   01EF  DD66FB            LD      H,(IX-5)
   \   01F2  223302            LD      (pl_list+39),HL
    133                   memcpy(buff+(next%4)*USER_PLAYLIST_SIZE,&pl_list,sizeof(user_playlist_t)); 
   \   01F5  0E2B              LD      C,43
   \   01F7  FDE5              PUSH    IY
   \   01F9  E1                POP     HL
   \   01FA  7D                LD      A,L
   \   01FB  E603              AND     3
   \   01FD  5F                LD      E,A
   \   01FE  AF                XOR     A
   \   01FF  57                LD      D,A
   \   0200            ?0035:
   \   0200  CD3602            CALL    LWRD ?0039
   \   0203            ?0029:
   \   0203            ?0020:
    134                  
    135              }
    136          Finish: 
    137          //    IO27 = input8(0x27);
    138              output8(0x27,00);   
   \   0203  AF                XOR     A
   \   0204  D327              OUT     (39),A
    139              FS_FWrite(buff,1,fp1); 
   \   0206  2A3902            LD      HL,(fp1)
   \   0209  E5                PUSH    HL
   \   020A  0E01              LD      C,1
   \   020C  110000            LD      DE,buff
   \   020F  CD0000            CALL    LWRD FS_FWrite
   \   0212  E1                POP     HL
    140              FS_FClose(fp1); 
   \   0213  ED5B3902          LD      DE,(fp1)
   \   0217  CD0000            CALL    LWRD FS_FClose
    141          //    FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复   
    142              output8(0x27,IO27);       
   \   021A  DD7EFE            LD      A,(IX-2)
   \   021D  D327              OUT     (39),A
    143              return TRUE;
   \   021F  2E01              LD      L,1
    144              
    145          }   
   \   0221            ?0030:
   \   0221  FDE1              POP     IY
   \   0223  C30000            JP      LWRD ?BANK_LEAVE_DIRECT_L08
   \   0226            ?0037:
   \   0226  3E00              LD      A,BYTE3 Read_Data
   \   0228  210000            LD      HL,LWRD Read_Data
   \   022B  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   022E  2C                INC     L
   \   022F  2D                DEC     L
   \   0230  C9                RET
   \   0231            ?0038:
   \   0231  E603              AND     3
   \   0233  6F                LD      L,A
   \   0234  60                LD      H,B
   \   0235  EB                EX      DE,HL
   \   0236            ?0039:
   \   0236  0607              LD      B,7
   \   0238  CD0000            CALL    LWRD ?S_LSH_L02
   \   023B  210000            LD      HL,buff
   \   023E  19                ADD     HL,DE
   \   023F  EB                EX      DE,HL
   \   0240  210C02            LD      HL,pl_list
   \   0243  0600              LD      B,0
   \   0245  EDB0              LDIR
   \   0247  C9                RET
   \   0248            ?0040:
   \   0248  E603              AND     3
   \   024A  6F                LD      L,A
   \   024B  60                LD      H,B
   \   024C  EB                EX      DE,HL
   \   024D  0607              LD      B,7
   \   024F  CD0000            CALL    LWRD ?S_LSH_L02
   \   0252  210000            LD      HL,buff
   \   0255  19                ADD     HL,DE
   \   0256  110C02            LD      DE,pl_list
   \   0259  0600              LD      B,0
   \   025B  EDB0              LDIR
   \   025D  C9                RET
    146           
    147          #endif
   \   0000                    RSEG    CSTR
   \   0000            ?0013:
   \   0000  3A                DEFB    ':'
   \   0001  00                DEFB    0
   \   0000                    RSEG    APD_USERPL_DEL
   \   0000            buff:
   \   0200                    DEFS    512
   \   0200            fileA:
   \   020C                    DEFS    12
   \   020C            pl_list:
   \   0237                    DEFS    43
   \   0237            save_offset1:
   \   0239                    DEFS    2
   \   0239            fp1:
   \   023B                    DEFS    2
   \   023B                    END

Errors: none
Warnings: none
Code size: 606
Constant size: 2
Static variable size: Data(571) Iram(0)

⌨️ 快捷键说明

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