sub_function1.lst
来自「MP3 整个 SDK」· LST 代码 · 共 932 行 · 第 1/3 页
LST
932 行
252 }
\ 01F7 ?0068:
253 if (FSELGetNext(g_viewpic_vars.location.filename) != 0)
\ 01F7 CDCD02 CALL LWRD ?0194
\ 01FA 2C INC L
\ 01FB 2D DEC L
\ 01FC C2AF02 JP NZ,?0186
\ 01FF ?0069:
254 {
255 return 1;
256 }
\ 01FF ?0070:
257
258 if (FSELGetErrID() == 0)
\ 01FF CD1401 CALL LWRD ?0196
\ 0202 2C INC L
\ 0203 2D DEC L
\ 0204 CAC302 JP Z,?0106
\ 0207 ?0071:
259 {
260 return 0;//非法
261 }
\ 0207 ?0072:
262
263 if (g_viewpic_vars.location.disk == 'H')
\ 0207 3A0400 LD A,(g_viewpic_vars+4)
\ 020A FE48 CP 72
\ 020C 2839 JR Z,?0187
\ 020E ?0073:
264 {
265 DisplayErrInfor(CFILEOUT);//显示卡无文件
266 return 0; //因为前面已从 'C' 查到 'H' 了,已查完,未找到文件
267 }
\ 020E ?0074:
268 else //还在 'C'
269 {
270 DisplayErrInfor(DFILEOUT);//显示磁盘无文件
\ 020E CD1C01 CALL LWRD ?0198
271
272 //检测 sd 卡是否存在
273 if ((DRV_DetectUD(1) == 0x20)&&((g_DiskStateFlag & SetCardOKFlag_def)!=0))
\ 0211 1E01 LD E,1
\ 0213 CD0000 CALL LWRD DRV_DetectUD
\ 0216 FE20 CP 32
\ 0218 C2C302 JP NZ,?0106
\ 021B 3A0000 LD A,(g_DiskStateFlag)
\ 021E CB5F BIT 3,A
\ 0220 CAC302 JP Z,?0106
\ 0223 ?0078:
\ 0223 ?0077:
\ 0223 ?0075:
274 {//有卡
275 g_viewpic_vars.location.disk = 'H';
\ 0223 3E48 LD A,72
\ 0225 320400 LD (g_viewpic_vars+4),A
276 if (FSELInit(FSEL_TYPE_DSC, FSEL_ALL_SEQUENCE, FSEL_TYPE_COMMONDIR, 'H'))
\ 0228 4F LD C,A
\ 0229 C5 PUSH BC
\ 022A 0E00 LD C,0
\ 022C C5 PUSH BC
\ 022D CD0A01 CALL LWRD ?0195
\ 0230 F1 POP AF
\ 0231 F1 POP AF
\ 0232 2C INC L
\ 0233 2D DEC L
\ 0234 2807 JR Z,?0082
\ 0236 ?0079:
277 {
278 if (FSELGetNext(g_viewpic_vars.location.filename) != 0)
\ 0236 CDCD02 CALL LWRD ?0194
\ 0239 2C INC L
\ 023A 2D DEC L
\ 023B 2072 JR NZ,?0186
\ 023D ?0081:
279 {
280 return 1;
281 }
\ 023D ?0082:
\ 023D ?0080:
282 }
283 result = FSELGetErrID();
\ 023D CD1401 CALL LWRD ?0196
284 if (FSELGetErrID() != 0)
\ 0240 CD1401 CALL LWRD ?0196
\ 0243 2C INC L
\ 0244 2D DEC L
\ 0245 287C JR Z,?0106
\ 0247 ?0083:
285 {
286 DisplayErrInfor(CFILEOUT);//显示卡无文件
\ 0247 ?0187:
\ 0247 119301 LD DE,403
\ 024A 1848 JR ?0191
287 return 0;
288 }
\ 024C ?0084:
289 return 0;//非法
290 }
\ 024C ?0076:
291 else
292 {
293 return 0;//没卡退出
294 }
295 }
296 return 0;
297 }
\ 024C ?0062:
298 else //g_viewpic_vars.location.disk == 'H'
299 {
300 if (FSELGetNext(g_viewpic_vars.location.filename) != 0)
\ 024C CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 024F 2C INC L
\ 0250 2D DEC L
\ 0251 205C JR NZ,?0186
\ 0253 ?0085:
301 {
302 return 1;//找到文件
303 }
\ 0253 ?0086:
304
305 if (FSELGetErrID() == 0)
\ 0253 CD1401 CALL LWRD ?0196
\ 0256 2C INC L
\ 0257 2D DEC L
\ 0258 2869 JR Z,?0106
\ 025A ?0087:
306 {
307 return 0;//非法
308 }
\ 025A ?0088:
309
310 //再查一次,因为可能这目录前面还有文件(虽然后面已无文件)
311 if (InitFileSelector() == 0)
\ 025A 3E00 LD A,BYTE3 InitFileSelector
\ 025C 212C00 LD HL,LWRD InitFileSelector
\ 025F CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0262 7D LD A,L
\ 0263 B4 OR H
\ 0264 285D JR Z,?0106
\ 0266 ?0089:
312 {
313 return 0;
314 }
\ 0266 ?0090:
315
316 if (FSELGetNext(g_viewpic_vars.location.filename) != 0)
\ 0266 CDCD02 CALL LWRD ?0194
\ 0269 2C INC L
\ 026A 2D DEC L
\ 026B 2042 JR NZ,?0186
\ 026D ?0091:
317 {
318 return 1;//找到文件
319 }
\ 026D ?0092:
320
321 if (FSELGetErrID() == 0)
\ 026D CD1401 CALL LWRD ?0196
\ 0270 2C INC L
\ 0271 2D DEC L
\ 0272 284F JR Z,?0106
\ 0274 ?0093:
322 {
323 return 0;//非法
324 }
\ 0274 ?0094:
325
326 if (g_viewpic_vars.location.disk == 'C')
\ 0274 3A0400 LD A,(g_viewpic_vars+4)
\ 0277 FE43 CP 67
\ 0279 2816 JR Z,?0193
\ 027B ?0095:
327 {
328 DisplayErrInfor(DFILEOUT);//显示磁盘无文件
329 return 0; //因为前面已从 'H' 查到 'C' 了,已查完,未找到文件
330 }
\ 027B ?0096:
331 DisplayErrInfor(CFILEOUT);//显示卡无文件
\ 027B 119301 LD DE,403
\ 027E CD1F01 CALL LWRD ?0197
332
333 g_viewpic_vars.location.disk = 'C';
\ 0281 3E43 LD A,67
\ 0283 320400 LD (g_viewpic_vars+4),A
334 if ((g_DiskStateFlag & SetDiskOKFlag_def) == 0)
\ 0286 3A0000 LD A,(g_DiskStateFlag)
\ 0289 CB7F BIT 7,A
\ 028B 2836 JR Z,?0106
\ 028D ?0097:
335 {
336 return 0;
337 }
\ 028D ?0098:
338
339 if ((g_DiskStateFlag & SetDiskNoFile_def) != 0)
\ 028D CB77 BIT 6,A
\ 028F 2808 JR Z,?0100
\ 0291 ?0099:
340 {
341 DisplayErrInfor(DFILEOUT);//显示磁盘无文件
\ 0291 ?0193:
\ 0291 119201 LD DE,402
\ 0294 ?0191:
\ 0294 CD1F01 CALL LWRD ?0197
342 return 0;
\ 0297 182A JR ?0106
343 }
\ 0299 ?0100:
344
345 if (FSELInit(FSEL_TYPE_DSC, FSEL_ALL_SEQUENCE, FSEL_TYPE_COMMONDIR, 'C'))
\ 0299 0E43 LD C,67
\ 029B C5 PUSH BC
\ 029C 0E00 LD C,0
\ 029E C5 PUSH BC
\ 029F CD0A01 CALL LWRD ?0195
\ 02A2 F1 POP AF
\ 02A3 F1 POP AF
\ 02A4 2C INC L
\ 02A5 2D DEC L
\ 02A6 280C JR Z,?0104
\ 02A8 ?0101:
346 {
347 if (FSELGetNext(g_viewpic_vars.location.filename) != 0)
\ 02A8 CDCD02 CALL LWRD ?0194
\ 02AB 2C INC L
\ 02AC 2D DEC L
\ 02AD 2805 JR Z,?0104
\ 02AF ?0103:
348 {
349 return 1;//找到文件
\ 02AF ?0186:
\ 02AF 210100 LD HL,1
350 }
\ 02B2 1812 JR ?0107
\ 02B4 ?0104:
\ 02B4 ?0102:
351 }
352 result = FSELGetErrID();
\ 02B4 CD1401 CALL LWRD ?0196
353
354 if (result != 0)
\ 02B7 7D LD A,L
\ 02B8 B7 OR A
\ 02B9 2808 JR Z,?0106
\ 02BB ?0105:
355 {
356 DisplayErrInfor(DFILEOUT);//显示磁盘无文件
\ 02BB CD1C01 CALL LWRD ?0198
357 g_DiskStateFlag |= SetDiskNoFile_def;//标志磁盘无文件
\ 02BE 210000 LD HL,g_DiskStateFlag
\ 02C1 CBF6 SET 6,(HL)
358 return 0;//
359 }
\ 02C3 ?0106:
360 return 0;
\ 02C3 210000 LD HL,0
361 }
\ 02C6 ?0107:
\ 02C6 DDE1 POP IX
\ 02C8 D1 POP DE
\ 02C9 C1 POP BC
\ 02CA C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 02CD ?0194:
\ 02CD 111E00 LD DE,g_viewpic_vars+30
\ 02D0 3E00 LD A,BYTE3 fselGetNextFile
\ 02D2 210000 LD HL,LWRD fselGetNextFile
\ 02D5 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
362 }
363
364
365 /*
366 // error information defines in file selector
367 #define FSEL_ERR_OUTOF 1
368 #define FSEL_ERR_EMPTY 2
369 #define FSEL_ERR_SETDIR 3
370 #define FSEL_ERR_SETFILE 4
371 #define FSEL_ERR_EXCEPTION 5
372
373
374 #define FSEL_ERR_FS 20
375 #define FSEL_ERR_FAIL 21
376 #define FSEL_ERR_DISK 22
377 #define FSEL_ERR_PLAYLIST 23
378 */
379
380 /*
381 //error information display
382 1) 磁盘错 : 在 main.c 中已报
383 2) 卡错 : 在 main.c 中已报
384
385 3) 磁盘无文件
386 4) 卡无文件
387
388 5) 空间满 :在 ui_follow.c 文件中已报
389 7) 目录已满 :在 ui_follow.c 文件中已报
390
391 6) 电量不足!:
392 8) 格式错误
393 9) 卡已拔出
394
395 */
\ 02D8 END
Errors: none
Warnings: none
Code size: 728
Constant size: 0
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?