📄 ui_lyric.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 25/Dec/106 17:01:00 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d90f\ap\ap_music\ui_lyric.c #
# List file = d:\case_i_d90f\ap\ap_music\list\ui_lyric.lst #
# Object file = d:\case_i_d90f\ap\ap_music\obj\ui_lyric.r01 #
# ASM file = d:\case_i_d90f\ap\ap_music\list\ui_lyric.s01 #
# Command line = -v0 -mb -OD:\case_i_d90f\ap\ap_music\Obj\ -e -K -w #
# -gA -z9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d90f\ap\ap_music\List\ -q -t8 #
# -AD:\case_i_d90f\ap\ap_music\List\ #
# -ND:\case_i_d90f\ap\ap_music\List\ -X #
# -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\ #
# d:\case_i_d90f\AP\AP_MUSIC\ui_lyric.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_lyric(17)
\ 0000 RSEG AP_UIA_LRC(0)
\ 0000 RSEG APD_UI_LRC(0)
\ 0000 RSEG APD_UIA_LRC(0)
\ 0000 EXTERN BackupCurrentTime
\ 0000 EXTERN DealMusicFileEnd
\ 0000 EXTERN DisInFBHead
\ 0000 EXTERN DisplayErrMsg
\ 0000 PUBLIC DisplayLyricStr
\ 0000 EXTERN FadeOut
\ 0000 PUBLIC GetNowTime
\ 0000 PUBLIC LyricStrBuf
\ 0000 EXTERN PlayStatus
\ 0000 EXTERN PrevMusicInPlay
\ 0000 EXTERN PutS
\ 0000 PUBLIC RT_buf
\ 0000 EXTERN RefreshMainScreen
\ 0000 EXTERN ResShowPic
\ 0000 EXTERN SelectCurMusic
\ 0000 EXTERN SetPenColor
\ 0000 EXTERN SetTextOutMode
\ 0000 EXTERN SetTextPos
\ 0000 EXTERN ToNextMusic
\ 0000 EXTERN UpDisplayFlag
\ 0000 EXTERN VMRead
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_handle_hotkey
\ 0000 EXTERN ap_message_init
\ 0000 EXTERN g_2HZ_CNT
\ 0000 EXTERN g_TagInfoBuf
\ 0000 EXTERN g_comval
\ 0000 EXTERN g_lyricflag
\ 0000 EXTERN g_music_vars
\ 0000 EXTERN g_result
\ 0000 EXTERN lyricGetNext
\ 0000 EXTERN lyricGetPrev
\ 0000 EXTERN lyricQueryOutof
\ 0000 EXTERN lyricSeekFor
\ 0000 EXTERN musicpSendCommand
\ 0000 EXTERN need_draw
\ 0000 EXTERN ui_auto_update
\ 0000 PUBLIC ui_lyric
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?S_V_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_LEAVE_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 EXTERN ?ENT_PARM_DIRECT_L09
\ 0000 EXTERN ?ENT_AUTO_DIRECT_L09
\ 0000 RSEG AP_UIA_LRC
\ 0000 GetNowTime:
1 /*
2 *******************************************************************************
3 * ACTOS AP
4 * voice player stop program.
5 *
6 * (c) Copyright, Actions Co,Ld.
7 * All Right Reserved
8 *
9 * $Id: ui_lyric.c,v 1.2 2006/06/26 01:14:24 tangwh Exp $
10 *******************************************************************************
11 */
12
13 #pragma codeseg(AP_UIA_LRC)
14 #include "ap_music.h"
15
16 #define ExproTimeDef 5//浏览的延时值
17
18 #pragma memory=dataseg(APD_UI_LRC)
19 char LyricStrBuf[88]; //
20 #pragma memory=default
21
22
23 #pragma memory=dataseg(APD_UIA_LRC)
24
25 //char LyricStrBuf[87];
26
27 BYTE RT_buf[4]; //当前时间
28 //wma_play_status_t status_buf;//不能开在这,因为查状态调用时要换BANK
29
30 #pragma memory=default
31
32 #pragma memory=constseg(APC_UIA_LRC)
33 #pragma memory=default
34
35 void DisInFBHead(char DisMod);
36
37
38 void GetNowTime( void )
39 {
\ 0000 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0003 FAFF DEFW 65530
40 Full_time_t curtime_buf;
41
42 BYTE temp;
43
44 if (!musicpSendCommand(MC_GETTIME, (int)& curtime_buf))
\ 0005 210000 LD HL,0
\ 0008 39 ADD HL,SP
\ 0009 4D LD C,L
\ 000A 44 LD B,H
\ 000B 1E80 LD E,128
\ 000D CD4900 CALL LWRD ?0103
\ 0010 2C INC L
\ 0011 2D DEC L
\ 0012 200C JR NZ,?0003
\ 0014 ?0002:
45 {
46 *(long *)RT_buf = 0;
\ 0014 4D LD C,L
\ 0015 45 LD B,L
\ 0016 ED430000 LD (RT_buf),BC
\ 001A ED430200 LD (RT_buf+2),BC
47 return;
48 }
\ 001E 1823 JR ?0004
\ 0020 ?0003:
49 //以下三句是把时间分,秒,毫秒合成LONG形与表中数据进行比较(只比较大小)
50 * (WORD* )RT_buf = curtime_buf.TimeMs;
\ 0020 DD6EFA LD L,(IX-6)
\ 0023 DD66FB LD H,(IX-5)
\ 0026 220000 LD (RT_buf),HL
51 //由于原来的MS不是按WORD方式送出的,所以这里要倒一下
52 temp = RT_buf[0];
\ 0029 3A0000 LD A,(RT_buf)
\ 002C 5F LD E,A
53 RT_buf[0] = RT_buf[1];
\ 002D 3A0100 LD A,(RT_buf+1)
\ 0030 320000 LD (RT_buf),A
54 RT_buf[1] = temp;
\ 0033 7B LD A,E
\ 0034 320100 LD (RT_buf+1),A
55
56 //时间格式|MIN|SEC|MS_L|MS_H| //取出实时时间表
57 RT_buf[2] = curtime_buf.TimeSecond;
\ 0037 DD7EFC LD A,(IX-4)
\ 003A 320200 LD (RT_buf+2),A
58 RT_buf[3] = curtime_buf.TimeMinute;
\ 003D DD7EFD LD A,(IX-3)
\ 0040 320300 LD (RT_buf+3),A
59 return;
60 }
\ 0043 ?0004:
\ 0043 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 0046 ?0105:
\ 0046 48 LD C,B
\ 0047 ?0104:
\ 0047 1E07 LD E,7
\ 0049 ?0103:
\ 0049 3E00 LD A,BYTE3 musicpSendCommand
\ 004B 210000 LD HL,LWRD musicpSendCommand
\ 004E C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0051 DisplayLyricStr:
61
62
63 void DisplayLyricStr( char * str ) //显示驱自动换行
64 {
\ 0051 CD0000 CALL LWRD ?ENT_PARM_DIRECT_L09
65 ResShowPic(MLRCBCK,0,0);
\ 0054 0E00 LD C,0
\ 0056 C5 PUSH BC
\ 0057 CDD200 CALL LWRD ?0106
\ 005A F1 POP AF
66 SetTextOutMode(0x0f);
\ 005B 1E0F LD E,15
\ 005D CD0000 CALL LWRD SetTextOutMode
67 SetTextPos(42, 14);
\ 0060 0E0E LD C,14
\ 0062 1E2A LD E,42
\ 0064 CD0000 CALL LWRD SetTextPos
68 SetPenColor(Color_WHITE_def);
\ 0067 010000 LD BC,0
\ 006A 11FFFF LD DE,65535
\ 006D CD0000 CALL LWRD SetPenColor
69 PutS(g_TagInfoBuf, -1);
\ 0070 0EFF LD C,255
\ 0072 110000 LD DE,g_TagInfoBuf
\ 0075 CD0000 CALL LWRD PutS
70 SetTextPos(POSITION_LRCMID, POSITIONY_LRCMID);
\ 0078 0E63 LD C,99
\ 007A 1E28 LD E,40
\ 007C CD0000 CALL LWRD SetTextPos
71 SetPenColor(Color_BULE1_def);
\ 007F 010000 LD BC,0
\ 0082 113E75 LD DE,30014
\ 0085 CD0000 CALL LWRD SetPenColor
72 PutS(str, -1);
\ 0088 0EFF LD C,255
\ 008A DD5E02 LD E,(IX+2)
\ 008D DD5603 LD D,(IX+3)
\ 0090 CD0000 CALL LWRD PutS
73
74 SetPenColor(0x00008410);
\ 0093 010000 LD BC,0
\ 0096 111084 LD DE,33808
\ 0099 CD0000 CALL LWRD SetPenColor
75 if(lyricGetPrev(LyricStrBuf, sizeof(LyricStrBuf)))//前一句
\ 009C CDF000 CALL LWRD ?0108
\ 009F 280D JR Z,?0006
\ 00A1 ?0005:
76 {
77 SetTextPos(POSITION_LRCTOP, POSITIONY_LRCTOP);
\ 00A1 0E88 LD C,136
\ 00A3 CDDD00 CALL LWRD ?0107
78 PutS(LyricStrBuf, -1);
79 lyricGetNext(LyricStrBuf, sizeof(LyricStrBuf));
\ 00A6 3E00 LD A,BYTE3 lyricGetNext
\ 00A8 210000 LD HL,LWRD lyricGetNext
\ 00AB CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00AE ?0006:
80 }
81 if(lyricGetNext(LyricStrBuf, sizeof(LyricStrBuf)))//后一句
\ 00AE 0E58 LD C,88
\ 00B0 110000 LD DE,LyricStrBuf
\ 00B3 3E00 LD A,BYTE3 lyricGetNext
\ 00B5 210000 LD HL,LWRD lyricGetNext
\ 00B8 CDFA00 CALL LWRD ?0109
\ 00BB 280D JR Z,?0008
\ 00BD ?0007:
82 {
83 SetTextPos(POSITION_LRCBOT, POSITIONY_LRCBOT);
\ 00BD 0E3C LD C,60
\ 00BF CDDD00 CALL LWRD ?0107
84 PutS(LyricStrBuf, -1);
85 lyricGetPrev(LyricStrBuf, sizeof(LyricStrBuf));
\ 00C2 3E00 LD A,BYTE3 lyricGetPrev
\ 00C4 210000 LD HL,LWRD lyricGetPrev
\ 00C7 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00CA ?0008:
86 }
87 SetTextOutMode(NOCLARITY);
\ 00CA 1E00 LD E,0
\ 00CC CD0000 CALL LWRD SetTextOutMode
88 }
\ 00CF C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 00D2 ?0106:
\ 00D2 118100 LD DE,129
\ 00D5 3E00 LD A,BYTE3 ResShowPic
\ 00D7 210000 LD HL,LWRD ResShowPic
\ 00DA C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 00DD ?0107:
\ 00DD 1E28 LD E,40
\ 00DF CD0000 CALL LWRD SetTextPos
\ 00E2 0EFF LD C,255
\ 00E4 110000 LD DE,LyricStrBuf
\ 00E7 CD0000 CALL LWRD PutS
\ 00EA 0E58 LD C,88
\ 00EC 110000 LD DE,LyricStrBuf
\ 00EF C9 RET
\ 00F0 ?0108:
\ 00F0 0E58 LD C,88
\ 00F2 110000 LD DE,LyricStrBuf
\ 00F5 3E00 LD A,BYTE3 lyricGetPrev
\ 00F7 210000 LD HL,LWRD lyricGetPrev
\ 00FA ?0109:
\ 00FA CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00FD 2C INC L
\ 00FE 2D DEC L
\ 00FF C9 RET
\ 0100 ui_lyric:
89
90
91 int ui_lyric( void )
92 {
\ 0100 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0103 F4FF DEFW 65524
93 int key;
94
95 bool KeyUpFlag = FALSE;
96 //lyric_t *LRCTimeTabPT;
97 bool ExproFlag = FALSE; //true: 在浏览模式
98
99 wma_play_status_t status_buf;
100
101 //先刷屏
102 //ResShowPic(MENUTWO,0,0);
103 //关闭背光时间
104 VMRead(& g_comval, VM_SYSTEM, sizeof(g_comval));
\ 0105 212000 LD HL,32
\ 0108 E5 PUSH HL
\ 0109 010002 LD BC,512
\ 010C 110000 LD DE,g_comval
\ 010F CD0000 CALL LWRD VMRead
\ 0112 E1 POP HL
105 g_comval.LightTime = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -