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 + -
显示快捷键?