📄 userlist_add.lst
字号:
\ 0146 DD6E02 LD L,(IX+2)
\ 0149 DD6603 LD H,(IX+3)
\ 014C CB3C SRL H
\ 014E CB1D RR L
\ 0150 CB3C SRL H
\ 0152 CB1D RR L
\ 0154 220E02 LD (save_offset),HL
84 }
85 else
\ 0157 ?0022:
86 {
87 output8(0x27,IO27);
88 return TRUE;
89 }
\ 0157 ?0023:
\ 0157 ?0020:
90 }
91 if(FS_FSeek(1+offset/4,FS_SEEK_FFROMSTART,fp))
\ 0157 2A0C02 LD HL,(fp)
\ 015A E5 PUSH HL
\ 015B 0E00 LD C,0
\ 015D C5 PUSH BC
\ 015E DD5E02 LD E,(IX+2)
\ 0161 DD5603 LD D,(IX+3)
\ 0164 CB3A SRL D
\ 0166 CB1B RR E
\ 0168 CB3A SRL D
\ 016A CB1B RR E
\ 016C 13 INC DE
\ 016D 41 LD B,C
\ 016E CD0000 CALL LWRD FS_FSeek
\ 0171 E1 POP HL
\ 0172 E1 POP HL
\ 0173 B7 OR A
\ 0174 2811 JR Z,?0025
\ 0176 ?0024:
92 {
93 FS_FRead(buffer_list,1,fp);
\ 0176 2A0C02 LD HL,(fp)
\ 0179 E5 PUSH HL
\ 017A CDEF00 CALL LWRD ?0075
\ 017D E1 POP HL
94 output8(0x27,IO27);
\ 017E ?0067:
\ 017E DD7EFE LD A,(IX-2)
\ 0181 D327 OUT (39),A
95 return TRUE;
\ 0183 2E01 LD L,1
96 }
\ 0185 1807 JR ?0026
\ 0187 ?0025:
97 else
98 {
99 output8(0x27,IO27);
\ 0187 DD7EFE LD A,(IX-2)
\ 018A D327 OUT (39),A
100 return FALSE;
\ 018C 2E00 LD L,0
101 }
\ 018E ?0026:
\ 018E C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
102 }
\ 0191 check_playlist:
103
104 BOOL check_playlist(file_location_t *location)
105 {
\ 0191 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0194 0000 DEFW 0
\ 0196 FDE5 PUSH IY
106 WORD next;
107 next = FirstOffset;
\ 0198 FD2A0000 LD IY,(FirstOffset)
\ 019C ?0029:
108 do
109 {
110 if(Read_DataA(next))
\ 019C FDE5 PUSH IY
\ 019E D1 POP DE
\ 019F CD0102 CALL LWRD ?0079
\ 01A2 2C INC L
\ 01A3 2D DEC L
\ 01A4 28F6 JR Z,?0029
\ 01A6 ?0030:
111 {
112 memcpy(&temp_list,buffer_list+(next%8)*64,2); //prev
\ 01A6 010200 LD BC,2
\ 01A9 FDE5 PUSH IY
\ 01AB E1 POP HL
\ 01AC 7D LD A,L
\ 01AD E607 AND 7
\ 01AF 5F LD E,A
\ 01B0 AF XOR A
\ 01B1 57 LD D,A
\ 01B2 0606 LD B,6
\ 01B4 CD0000 CALL LWRD ?S_LSH_L02
\ 01B7 210000 LD HL,buffer_list
\ 01BA 19 ADD HL,DE
\ 01BB 111002 LD DE,temp_list
\ 01BE 47 LD B,A
\ 01BF EDB0 LDIR
113
114 if(strcmp(temp_list.filename,location->filename)==0)
\ 01C1 112B02 LD DE,temp_list+27
\ 01C4 211A00 LD HL,26
\ 01C7 DD4E02 LD C,(IX+2)
\ 01CA DD4603 LD B,(IX+3)
\ 01CD 09 ADD HL,BC
\ 01CE CD0000 CALL LWRD ?STRCMP_L11
\ 01D1 7D LD A,L
\ 01D2 B4 OR H
\ 01D3 2004 JR NZ,?0033
\ 01D5 ?0032:
115 {
116 return TRUE;
\ 01D5 2E01 LD L,1
117 }
\ 01D7 1814 JR ?0036
\ 01D9 ?0033:
118 if(next==LastOffset)
\ 01D9 2A0000 LD HL,(LastOffset)
\ 01DC FDE5 PUSH IY
\ 01DE C1 POP BC
\ 01DF ED42 SBC HL,BC
\ 01E1 2004 JR NZ,?0035
\ 01E3 ?0034:
119 return FALSE;
\ 01E3 2E00 LD L,0
\ 01E5 1806 JR ?0036
\ 01E7 ?0035:
120 next = temp_list.NextOffset;
\ 01E7 FD2A3902 LD IY,(temp_list+41)
\ 01EB ?0031:
121 }
122 }while(1);
\ 01EB 18AF JR ?0029
123 return FALSE;
124
125 }
\ 01ED ?0036:
\ 01ED FDE1 POP IY
\ 01EF C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 01F2 ?0080:
\ 01F2 0607 LD B,7
\ 01F4 CD0000 CALL LWRD ?S_LSH_L02
\ 01F7 DD73F8 LD (IX-8),E
\ 01FA DD72F9 LD (IX-7),D
\ 01FD ED5B0000 LD DE,(LastOffset)
\ 0201 ?0079:
\ 0201 3E00 LD A,BYTE3 Read_DataA
\ 0203 211201 LD HL,LWRD Read_DataA
\ 0206 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0209 Add_UserPL:
126
127 BOOL Add_UserPL(file_location_t *location)
128 {
\ 0209 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 020C F8FF DEFW 65528
129
130
131
132 WORD next;
133 WORD prev;
134 WORD Offset;
135 char IO27 = input8(0x27);
\ 020E DB27 IN A,(39)
\ 0210 DD77FE LD (IX-2),A
136 if(PlaylistCount>100)
\ 0213 ED4B0000 LD BC,(PlaylistCount)
\ 0217 216400 LD HL,100
\ 021A A7 AND A
\ 021B ED42 SBC HL,BC
\ 021D 382C JR C,?0071
\ 021F ?0037:
137 return FALSE;
\ 021F ?0038:
138 need_WPL=TRUE;
\ 021F 3E01 LD A,1
\ 0221 320000 LD (need_WPL),A
139 save_offset=0xffff;
\ 0224 21FFFF LD HL,65535
\ 0227 220E02 LD (save_offset),HL
140 memset(buffer_list,0,512);
\ 022A 010002 LD BC,512
\ 022D 110000 LD DE,buffer_list
\ 0230 23 INC HL
\ 0231 CD0000 CALL LWRD ?MEMSET_L11
141 memset(file,0x20,12);
\ 0234 010C00 LD BC,12
\ 0237 110002 LD DE,file
\ 023A 2E20 LD L,32
\ 023C CDAB00 CALL LWRD ?0073
142 file[0]='U';
143 file[1]='S';
144 file[2]='E';
145 file[3]='R';
146 file[4]='P';
147 file[5]='L';
148 file[8]='P';
149 file[9]='L';
150 file[11]=0;
151 output8(0x27,0x00);
\ 023F D327 OUT (39),A
152 FS_CD(FS_CD_ROOT);
\ 0241 CDDB00 CALL LWRD ?0074
153 fp=FS_FOpen(file,0);
154 if(fp==NULL)
\ 0244 200A JR NZ,?0040
\ 0246 ?0039:
155 {
156 output8(0x27,IO27);
\ 0246 DD7EFE LD A,(IX-2)
\ 0249 D327 OUT (39),A
157 return FALSE ;
\ 024B ?0071:
\ 024B 2E00 LD L,0
158
159 }
\ 024D C36A03 JP LWRD ?0050
\ 0250 ?0040:
160
161 if(PlaylistCount==0)
\ 0250 2A0000 LD HL,(PlaylistCount)
\ 0253 7D LD A,L
\ 0254 B4 OR H
\ 0255 23 INC HL
\ 0256 220000 LD (PlaylistCount),HL
\ 0259 204A JR NZ,?0042
\ 025B ?0041:
162 {
163 PlaylistCount++;
164 FirstOffset = 0;
\ 025B 6F LD L,A
\ 025C 67 LD H,A
\ 025D 220000 LD (FirstOffset),HL
165 LastOffset = 1;
\ 0260 23 INC HL
\ 0261 220000 LD (LastOffset),HL
166 if(Read_DataA(0))
\ 0264 5C LD E,H
\ 0265 54 LD D,H
\ 0266 CD0102 CALL LWRD ?0079
\ 0269 2C INC L
\ 026A 2D DEC L
\ 026B 2835 JR Z,?0044
\ 026D ?0043:
167 {
168
169 buffer_list[0]=1; //flag
\ 026D 3E01 LD A,1
\ 026F 320000 LD (buffer_list),A
170 memcpy(buffer_list+1,location,38); //location
\ 0272 012600 LD BC,38
\ 0275 110100 LD DE,buffer_list+1
\ 0278 DD6E02 LD L,(IX+2)
\ 027B DD6603 LD H,(IX+3)
\ 027E EDB0 LDIR
171 memcpy(buffer_list+43,g_TagInfoBuf,64);
\ 0280 0E40 LD C,64
\ 0282 112B00 LD DE,buffer_list+43
\ 0285 210000 LD HL,g_TagInfoBuf
\ 0288 EDB0 LDIR
172 memcpy(buffer_list+38+1,&FirstOffset,2); //prev
\ 028A 03 INC BC
\ 028B 03 INC BC
\ 028C 112700 LD DE,buffer_list+39
\ 028F 210000 LD HL,FirstOffset
\ 0292 EDB0 LDIR
173 memcpy(buffer_list+38+2+1,&LastOffset,2); //next
\ 0294 03 INC BC
\ 0295 03 INC BC
\ 0296 112900 LD DE,buffer_list+41
\ 0299 210000 LD HL,LastOffset
\ 029C EDB0 LDIR
174 LastOffset = 0;
\ 029E ED430000 LD (LastOffset),BC
\ 02A2 ?0044:
175
176 }
177
178 }
179 else
\ 02A2 C35803 JP LWRD ?0047
\ 02A5 ?0042:
180 {
181
182
183 PlaylistCount++;
184 Offset = (LastOffset%4)*USER_PLAYLIST_SIZE;
\ 02A5 2A0000 LD HL,(LastOffset)
\ 02A8 7D LD A,L
\ 02A9 E603 AND 3
\ 02AB 6F LD L,A
\ 02AC 2600 LD H,0
\ 02AE EB EX DE,HL
185 if(Read_DataA(LastOffset))
\ 02AF CDF201 CALL LWRD ?0080
\ 02B2 2C INC L
\ 02B3 2D DEC L
\ 02B4 CA5803 JP Z,?0047
\ 02B7 ?0046:
186 {
187 //处理最后item
188 memcpy(&next,buffer_list+Offset+38+2+1,2); //next
\ 02B7 210200 LD HL,2
\ 02BA 39 ADD HL,SP
\ 02BB EB EX DE,HL
\ 02BC 212900 LD HL,buffer_list+41
\ 02BF DD4EF8 LD C,(IX-8)
\ 02C2 DD46F9 LD B,(IX-7)
\ 02C5 09 ADD HL,BC
\ 02C6 010200 LD BC,2
\ 02C9 EDB0 LDIR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -