📄 sub_function2.s01
字号:
?0086:
?0083:
; 374. {
; 375. strcpy(g_TagInfoBuf, & g_TagInfoBuf[0]);
CALL LWRD ?0147
; 376. strcat(g_TagInfoBuf, " ");
; 377. strcat(g_TagInfoBuf, & g_TagInfoBuf[30]);
; 378. strcat(g_TagInfoBuf, " ");
; 379. strcat(g_TagInfoBuf, & g_TagInfoBuf[60]);
; 380. strcat(g_TagInfoBuf, " ");
?0084:
; 381. }
; 382. }
; 383. else
JR ?0088
?0082:
; 384. {
; 385. g_TagInfoBuf[0] = 0x0;
XOR A
LD (g_TagInfoBuf),A
?0088:
; 386. }
; 387. break;
JR ?0079
?0089:
CP 1
JR NZ,?0093
; 388.
; 389. case Music_MP3:
; 390. if (mp3GetID3Info(g_music_vars.location.filename, & ID3, g_comval.langid))
LD BC,(g_comval+12)
LD B,0
PUSH BC
LD HL,6
ADD HL,SP
LD C,L
LD B,H
LD DE,g_music_vars+33
LD A,BYTE3 mp3GetID3Info
LD HL,LWRD mp3GetID3Info
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
INC L
DEC L
JR Z,?0097
?0090:
; 391. {
; 392. strcpy(g_TagInfoBuf, & g_TagInfoBuf[0]);
JR ?0140
; 393. strcat(g_TagInfoBuf, " ");
; 394. strcat(g_TagInfoBuf, & g_TagInfoBuf[30]);
; 395. strcat(g_TagInfoBuf, " ");
; 396. strcat(g_TagInfoBuf, & g_TagInfoBuf[60]);
; 397. strcat(g_TagInfoBuf, " ");
; 398. }
; 399. else
?0091:
; 400. {
; 401. g_TagInfoBuf[0] = 0x0;
?0092:
; 402. }
; 403. break;
?0093:
CP 6
JR NZ,?0097
; 404. case Music_APE:
; 405. memset(g_TagInfoBuf,0,90);
LD BC,90
LD DE,g_TagInfoBuf
LD L,B
LD H,B
CALL LWRD ?MEMSET_L11
; 406. if (GetAPEInfoByNo(g_music_vars.location.filename, &ID3, 0))
LD C,H
PUSH BC
LD L,6
ADD HL,SP
LD C,L
LD B,H
LD DE,g_music_vars+33
LD A,BYTE3 GetAPEInfoByNo
LD HL,LWRD GetAPEInfoByNo
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
INC L
DEC L
JR Z,?0097
?0094:
; 407. {
; 408. strcpy(g_TagInfoBuf, & g_TagInfoBuf[0]);
?0140:
CALL LWRD ?0147
; 409. strcat(g_TagInfoBuf, " ");
; 410. strcat(g_TagInfoBuf, & g_TagInfoBuf[30]);
; 411. strcat(g_TagInfoBuf, " ");
; 412. strcat(g_TagInfoBuf, & g_TagInfoBuf[60]);
; 413. strcat(g_TagInfoBuf, " ");
; 414. }
; 415. else
JR ?0079
?0095:
; 416. {
; 417. g_TagInfoBuf[0] = 0x0;
?0096:
; 418. }
; 419. break;
?0097:
; 420. default:
; 421. g_TagInfoBuf[0] = 0x0;
XOR A
LD (g_TagInfoBuf),A
; 422. break;
?0079:
; 423. }
; 424.
; 425.
; 426.
; 427.
; 428. // 显示信息区
; 429. //g_music_vars.location.filename[12] = 0;
; 430.
; 431. //---处理没有TAG信息的情况
; 432. if (g_TagInfoBuf[0] == 0)
LD A,(g_TagInfoBuf)
OR A
JR NZ,?0102
?0098:
; 433. {
; 434. memcpy(g_TagInfoBuf, g_music_vars.location.filename, 12);
LD BC,12
LD DE,g_TagInfoBuf
LD HL,g_music_vars+33
LDIR
; 435. {
; 436.
; 437. result = FS_GetName(g_TagInfoBuf, 31); //取出长名
LD C,31
LD DE,g_TagInfoBuf
CALL LWRD FS_GetName
LD B,0
; 438. if (result != 0)
OR A
JR Z,?0101
?0100:
; 439. {
; 440. unitochar(g_TagInfoBuf, sizeof(g_TagInfoBuf), g_comval.langid);
LD HL,g_comval+12
LD C,(HL)
PUSH BC
LD C,90
CALL LWRD ?0149
POP AF
; 441. }
; 442. else
JR ?0102
?0101:
; 443. {
; 444. memcpy(g_TagInfoBuf, g_music_vars.location.filename, 12);
LD C,12
LD DE,g_TagInfoBuf
LD HL,g_music_vars+33
LDIR
?0102:
?0099:
; 445. }
; 446. }
; 447. }
; 448.
; 449. //---在TAG信息后加个空格避免滚屏时串在一起
; 450. for (result = 0; result<sizeof(g_TagInfoBuf); result++)
XOR A
LD (IX-16),A
LD (IX-15),A
?0104:
LD BC,32858
LD L,(IX-16)
LD H,(IX-15)
LD A,B
XOR H
LD H,A
SBC HL,BC
JR NC,?0103
?0105:
; 451. {
; 452. if (g_TagInfoBuf[result] == 0)
LD HL,g_TagInfoBuf
LD C,(IX-16)
LD B,(IX-15)
ADD HL,BC
LD A,(HL)
OR A
JR NZ,?0108
?0107:
; 453. {
; 454. g_TagInfoBuf[result] = ' ';
LD HL,g_TagInfoBuf
ADD HL,BC
LD (HL),32
; 455. g_TagInfoBuf[result + 1] = 0;
LD HL,g_TagInfoBuf+1
ADD HL,BC
LD (HL),A
; 456. break;
JR ?0103
?0108:
INC (IX-16)
JR NZ,?0104
INC (IX-15)
JR ?0104
?0103:
; 457. }
; 458. }
; 459.
; 460. //清 WATCH_DOG
; 461. output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 462.
; 463. #ifdef OPT_Sup_LRC_fun//支持歌词显示功能
; 464.
; 465. BankSwitch((unsigned long)lyricQueryExist >> 16);
LD C,BYTE3 lyricQueryExist
LD E,C
CALL LWRD BankSwitch
; 466. g_lyricflag = lyricQueryExist(g_music_vars.location.filename);
LD DE,g_music_vars+33
LD A,C
LD HL,LWRD lyricQueryExist
CALL LWRD ?BANK_CALL_DIRECT_L08
LD A,L
LD (g_lyricflag),A
; 467.
; 468. if (g_lyricflag)
OR A
JR Z,?0110
?0109:
; 469. {
; 470. g_lyric_mod = lyricLoad(g_music_vars.location.filename, g_TagInfoBuf);
LD BC,g_TagInfoBuf
LD DE,g_music_vars+33
LD A,BYTE3 lyricLoad
LD HL,LWRD lyricLoad
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (IX-14),L
?0110:
; 471. }
; 472. if (g_lyric_mod == 0)
XOR A
OR (IX-14)
JR NZ,?0112
?0111:
; 473. {
; 474. g_lyricflag = FALSE;
LD (g_lyricflag),A
?0112:
; 475. }
; 476.
; 477. #endif //OPT_Sup_LRC_fun
; 478.
; 479. //清 WATCH_DOG
; 480. output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 481. }
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0147:
LD DE,g_TagInfoBuf
LD L,E
LD H,D
CALL LWRD ?STRCPY_L11
LD DE,?0087
LD HL,g_TagInfoBuf
CALL LWRD ?STRCAT_L11
LD DE,g_TagInfoBuf+30
LD HL,g_TagInfoBuf
CALL LWRD ?STRCAT_L11
LD DE,?0087
LD HL,g_TagInfoBuf
CALL LWRD ?STRCAT_L11
LD DE,g_TagInfoBuf+60
LD HL,g_TagInfoBuf
CALL LWRD ?STRCAT_L11
LD DE,?0087
LD HL,g_TagInfoBuf
CALL LWRD ?STRCAT_L11
RET
openPA:
; 482.
; 483. //==================================================================
; 484. void openPA(uchar volume)
; 485. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW -4
; 486. int i;
; 487. pa_t paattr;
; 488. if (!g_PAOpenFlag)
LD A,(g_PAOpenFlag)
OR A
JR NZ,?0115
?0113:
; 489. {
; 490. g_PAOpenFlag = TRUE;//标志PA已打开
LD A,1
LD (g_PAOpenFlag),A
; 491. paattr.pa_in.dacin = 1;
SET 0,(IX-4)
; 492. paattr.pa_in.fmin = 0;
RES 1,(IX-4)
; 493. paattr.pa_in.linein = 0;
RES 2,(IX-4)
; 494. paattr.pa_in.micin = 0;
RES 3,(IX-4)
; 495. paattr.volume = volume;
LD B,(IX+2)
LD (IX-3),B
; 496. EnablePA(& paattr);
LD HL,0
ADD HL,SP
EX DE,HL
CALL LWRD EnablePA
; 497. for (i = 0; i < 2000; i++)
LD DE,0
?0116:
LD BC,34768
LD L,E
LD H,D
LD A,128
XOR H
LD H,A
SBC HL,BC
JR NC,?0115
?0117:
; 498. {
; 499. output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
IN A,(78)
SET 3,A
OUT (78),A
INC DE
; 500. }
; 501. }
JR ?0116
?0115:
?0114:
; 502.
; 503. musicpSendCommand(MC_SETVOLUME, volume);
LD C,(IX+2)
LD B,0
LD E,64
LD A,BYTE3 musicpSendCommand
LD HL,LWRD musicpSendCommand
CALL LWRD ?BANK_CALL_DIRECT_L08
; 504. OutPutVolume(volume);
LD E,(IX+2)
LD D,0
LD A,BYTE3 OutPutVolume
LD HL,LWRD OutPutVolume
CALL LWRD ?BANK_CALL_DIRECT_L08
; 505.
; 506. }
JP LWRD ?BANK_LEAVE_DIRECT_L08
ClosePA:
; 507.
; 508. //===================================================
; 509. void ClosePA(void)
; 510. {
; 511. if (g_PAOpenFlag)
LD A,(g_PAOpenFlag)
OR A
JR Z,?0120
?0119:
; 512. {
; 513. g_PAOpenFlag = FALSE;//标志PA已关闭
XOR A
LD (g_PAOpenFlag),A
; 514. DisablePA();
CALL LWRD DisablePA
?0120:
; 515. }
; 516. }
JP LWRD ?BANK_FAST_LEAVE_L08
DisplayTimeRollback:
; 517. //===================================================
; 518.
; 519. //===================================================
; 520. /*
; 521. input: void
; 522.
; 523. output: g_result == NULL: 退出到STOP
; 524. g_result == 其他,按热键处理
; 525.
; 526. */
; 527. //===================================================
; 528. /*
; 529. int DealForDRMsong(void)
; 530. {
; 531.
; 532. dialog_t dialog;
; 533.
; 534. //进入显示是否进行授权申请对话框
; 535. dialog.HeadIcon = VOLPTR;//显示问号图标// for temp
; 536. dialog.HeadStr = REQLICEN;//显示“申请授权?”
; 537. dialog.string = g_TagInfoBuf;//显示要求显示的信息
; 538. g_result = ui_dialog(&dialog, g_comval.langid);
; 539.
; 540. if (g_result == NULL)
; 541. {
; 542. //进入申请授权应用进行申请 (USBPMD)
; 543. //return RESULT_USBPMD;
; 544. g_result = RESULT_IGNORE;//现暂时关闭
; 545. }
; 546.
; 547. if (g_result == RESULT_IGNORE)
; 548. {
; 549. //显示无播放授权
; 550. DisplayErrMsg(NOLICENS);//显示没有播放授权
; 551. musicpSendCommand(MC_CLOSE, NULL);
; 552. SetFullInterface();
; 553. return NULL;
; 554. }
; 555.
; 556. if (g_result != NULL)
; 557. {
; 558. //热键处理
; 559. return g_result;
; 560. }
; 561. }
; 562. */
; 563. /*
; 564. //==============================================
; 565. 功能:检测SYS时钟是否被回调
; 566. 接口:bool DisplayTimeRollback(void)
; 567. 输入:void
; 568. 输出:true: 正常播放
; 569. false: 显示完时钟已被回调,要进行设置退出
; 570. //==============================================
; 571. */
; 572. bool DisplayTimeRollback(void)
; 573. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW -26
; 574. wma_inf_t licensinfbuf;
; 575. unsigned long curdatesec;
; 576. date_t curdate;
; 577. time_t curtime;
; 578.
; 579. //判断是否DRM歌曲
; 580. //取lincens 信息
; 581. if (!musicpSendCommand(MC_GETINF, (int)&licensinfbuf))
LD HL,0
ADD HL,SP
LD C,L
LD B,H
LD E,16
LD A,BYTE3 musicpSendCommand
LD HL,LWRD musicpSendCommand
CALL LWRD ?BANK_CALL_DIRECT_L08
INC L
DEC L
JR Z,?0144
?0121:
; 582. {
; 583. return TRUE;//不用显示重设信息
; 584. }
?0122:
; 585.
; 586. if (licensinfbuf.drmmode == INF_NORMALWMA)
XOR A
OR (IX-26)
JR NZ,?0124
?0123:
; 587. {
; 588. //普通WMA也不用显示重设信息
; 589. return TRUE;
?0144:
LD L,1
; 590. }
JR ?0128
?0124:
; 591.
; 592. // SetAsciiFont(FONT_TYPE_SMALL);
; 593. SetBackgdColor(Color_BLACK_def);
LD BC,0
LD E,C
LD D,B
CALL LWRD SetBackgdColor
; 594. ClearScreen(NULL);//清屏
LD DE,0
CALL LWRD ClearScreen
; 595. SetPenColor(Color_WHITE_def);
LD BC,0
LD DE,65535
CALL LWRD SetPenColor
; 596. ResShowMultiString(REQSETDT, g_comval.langid, 25, 56);//显示磁盘无文件
LD C,56
PUSH BC
LD C,25
PUSH BC
LD BC,(g_comval+12)
LD DE,601
LD A,BYTE3 ResShowMultiString
LD HL,LWRD ResShowMultiString
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
?0126:
; 597. while( ap_get_message() != NULL );//清空消息池,确保DELAY时间准确
CALL LWRD ap_get_message
OR A
JR NZ,?0126
?0127:
?0125:
; 598. ap_sleep(4);
LD DE,4
LD A,BYTE3 ap_sleep
LD HL,LWRD ap_sleep
CALL LWRD ?BANK_CALL_DIRECT_L08
; 599.
; 600. return FALSE;
LD L,0
; 601. }
?0128:
JP LWRD ?BANK_LEAVE_DIRECT_L08
; 602.
RSEG CSTR
?0051:
DEFB 'ROOT'
DEFB 0
?0053:
DEFB 92,0
?0061:
DEFB ':'
DEFB 0
?0087:
DEFB ' '
DEFB 0
RSEG IDATA0
temp_buffer:
DEFS 9
RSEG CDATA0
DEFB 0
DEFB 0,0,0,0,0,0,0,0
RSEG AP_FUN2_CONST
ExtMusicstr:
DEFB 'MP3'
DEFB 0
DEFB 'WMA'
DEFB 0
DEFB 'ASF'
DEFB 0
DEFB 'WMV'
DEFB 0
DEFB 'OGG'
DEFB 0
DEFB 'APE'
DEFB 0
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -