ui_stop.lst
来自「MP3 整个 SDK」· LST 代码 · 共 1,133 行 · 第 1/4 页
LST
1,133 行
\ 027B ?0042:
154 {
155 StartIntro(TRUE);
\ 027B 3E01 LD A,1
\ 027D 1801 JR ?0112
156 }
157 else
\ 027F ?0043:
158 {
159 StartIntro(FALSE);
\ 027F AF XOR A
\ 0280 ?0112:
\ 0280 320000 LD (g_introCntMode),A
\ 0283 3A4D00 LD A,(g_music_vars+77)
\ 0286 320000 LD (g_OldSecTempBackup),A
\ 0289 AF XOR A
\ 028A 320000 LD (g_introCNT),A
\ 028D ?0044:
160 }
161 if ((!CaltimeFlag) && (!ifSelBuffToltalTimeFlag))
\ 028D 3A0100 LD A,(CaltimeFlag)
\ 0290 B7 OR A
\ 0291 2009 JR NZ,?0046
\ 0293 3A0000 LD A,(ifSelBuffToltalTimeFlag)
\ 0296 B7 OR A
\ 0297 2003 JR NZ,?0046
\ 0299 ?0048:
\ 0299 ?0047:
\ 0299 ?0045:
162 {
163 musicpSendCommand(MC_CALTIME, NULL);
\ 0299 CDA301 CALL LWRD ?0145
\ 029C ?0046:
164 }
165
166 //判断是否刚断电完而没有重设时间
167 if (g_PowerOffFlag == 0x55)
\ 029C 3A0000 LD A,(g_PowerOffFlag)
\ 029F FE55 CP 85
\ 02A1 200D JR NZ,?0052
\ 02A3 ?0049:
168 {
169 if (!DisplayTimeRollback())
\ 02A3 3E00 LD A,BYTE3 DisplayTimeRollback
\ 02A5 210000 LD HL,LWRD DisplayTimeRollback
\ 02A8 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 02AB 2C INC L
\ 02AC 2D DEC L
\ 02AD CA4304 JP Z,?0123
\ 02B0 ?0051:
170 {
171 SetFullInterface();
172 need_draw = TRUE;
173 break;
\ 02B0 ?0052:
\ 02B0 ?0050:
174 }
175 }
176
177 UpDisplayFlag = UpDisplayFlag | up_musictotaltime | up_musicbitrate;
\ 02B0 210000 LD HL,UpDisplayFlag
\ 02B3 23 INC HL
\ 02B4 7E LD A,(HL)
\ 02B5 F621 OR 33
\ 02B7 77 LD (HL),A
178 need_draw = TRUE;
\ 02B8 3E01 LD A,1
\ 02BA 320000 LD (need_draw),A
179
180
181 output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
\ 02BD DB4E IN A,(78)
\ 02BF CBDF SET 3,A
\ 02C1 D34E OUT (78),A
182 if (!musicpSendCommand(MC_PLAY, g_music_vars.MusicOpenMod))
\ 02C3 ED4B0600 LD BC,(g_music_vars+6)
\ 02C7 0600 LD B,0
\ 02C9 1E04 LD E,4
\ 02CB CDA701 CALL LWRD ?0143
\ 02CE 2C INC L
\ 02CF 2D DEC L
\ 02D0 200F JR NZ,?0054
\ 02D2 ?0053:
183 {
184 ErrReport(PlayStatus);// playStatus 并未改变
\ 02D2 ED5B0000 LD DE,(PlayStatus)
\ 02D6 3E00 LD A,BYTE3 ErrReport
\ 02D8 210000 LD HL,LWRD ErrReport
\ 02DB CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
185 break;
\ 02DE C36604 JP LWRD ?0027
\ 02E1 ?0054:
186 }
187 output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
\ 02E1 DB4E IN A,(78)
\ 02E3 CBDF SET 3,A
\ 02E5 D34E OUT (78),A
188
189 g_result = ui_play();
\ 02E7 3E00 LD A,BYTE3 ui_play
\ 02E9 210000 LD HL,LWRD ui_play
\ 02EC CD5B01 CALL LWRD ?0138
190
191 ap_message_init(NULL);//开始算STANDBY 时间
\ 02EF CDDD00 CALL LWRD ?0136
192 if (g_result != 0)
\ 02F2 2A0000 LD HL,(g_result)
\ 02F5 7D LD A,L
\ 02F6 B4 OR H
\ 02F7 2843 JR Z,?0056
\ 02F9 ?0055:
193 {
194 int i;
195 i = g_result;
\ 02F9 DD75FD LD (IX-3),L
\ 02FC DD74FE LD (IX-2),H
196 if(PlayStatus != StopSta)
\ 02FF 3A0000 LD A,(PlayStatus)
\ 0302 B7 OR A
\ 0303 282C JR Z,?0058
\ 0305 ?0057:
197 {
198 #ifdef OPT_Sup_FadeOut_fun
199 if (!g_FCexitflag)
\ 0305 3A0000 LD A,(g_FCexitflag)
\ 0308 B7 OR A
\ 0309 2009 JR NZ,?0060
\ 030B ?0059:
200 { //如从跟读对录音或对比放音出,不淡出
201 FadeOut(FALSE);
\ 030B 5F LD E,A
\ 030C 3E00 LD A,BYTE3 FadeOut
\ 030E 210000 LD HL,LWRD FadeOut
\ 0311 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0314 ?0060:
202 }
203 #endif
204 BackupCurrentTime();
\ 0314 3E00 LD A,BYTE3 BackupCurrentTime
\ 0316 210000 LD HL,LWRD BackupCurrentTime
\ 0319 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
205 musicpSendCommand(MC_STOP, NULL);
\ 031C 010000 LD BC,0
\ 031F 1E06 LD E,6
\ 0321 CDA701 CALL LWRD ?0143
206 musicpSendCommand(MC_BACKUP, NULL);
\ 0324 010000 LD BC,0
\ 0327 1E44 LD E,68
\ 0329 CDA701 CALL LWRD ?0143
207 g_music_vars.MusicOpenMod = Nor_Break_open;//保证退出后从断点进来
\ 032C 3E01 LD A,1
\ 032E 320600 LD (g_music_vars+6),A
\ 0331 ?0058:
208 }
209 g_result = i;
\ 0331 DD6EFD LD L,(IX-3)
\ 0334 DD66FE LD H,(IX-2)
\ 0337 220000 LD (g_result),HL
210 }
211 else
\ 033A 1806 JR ?0062
\ 033C ?0056:
\ 033C ?0063:
212 while(ap_get_message() != 0); //清空消息池
\ 033C CD0000 CALL LWRD ap_get_message
\ 033F B7 OR A
\ 0340 20FA JR NZ,?0056
\ 0342 ?0064:
\ 0342 ?0062:
\ 0342 ?0061:
213 g_FCexitflag = FALSE;
\ 0342 AF XOR A
\ 0343 320000 LD (g_FCexitflag),A
214
215 return g_result;
\ 0346 1835 JR ?0114
216
217 case AP_KEY_EQ | AP_KEY_UP:
\ 0348 ?0065:
218 break;
\ 0348 ?0066:
219
220 case AP_KEY_MODE:
221 modekeystore = key;
\ 0348 DD73F9 LD (IX-7),E
222 break;
\ 034B C36604 JP LWRD ?0027
\ 034E ?0067:
223
224 case AP_KEY_MODE | AP_KEY_UP: //短按MODE
225 if (modekeystore != AP_KEY_MODE)
\ 034E DD7EF9 LD A,(IX-7)
\ 0351 FE10 CP 16
\ 0353 2807 JR Z,?0069
\ 0355 ?0068:
226 { //要先按了AP_KEY_MODE 键后up才算有效
227 modekeystore = NULL;
\ 0355 DD36F900 LD (IX-7),0
228 break;
\ 0359 C36604 JP LWRD ?0027
\ 035C ?0069:
229 }
230 g_result = ui_stop_menu();
\ 035C 3E00 LD A,BYTE3 ui_stop_menu
\ 035E 210000 LD HL,LWRD ui_stop_menu
\ 0361 CD5B01 CALL LWRD ?0138
231
232
233 if (g_result == RESULT_IGNORE)
\ 0364 3E34 LD A,52
\ 0366 AD XOR L
\ 0367 B4 OR H
\ 0368 CA4304 JP Z,?0123
\ 036B ?0070:
234 {
235 SetFullInterface();
236 need_draw = TRUE;
237 break;
\ 036B ?0071:
238 }
239 CaltimeFlag = FALSE;
\ 036B AF XOR A
\ 036C 320100 LD (CaltimeFlag),A
240 ifSelBuffToltalTimeFlag = FALSE;
\ 036F 320000 LD (ifSelBuffToltalTimeFlag),A
241
242 if (g_result == RESULT_SD_OUT)
\ 0372 3E36 LD A,54
\ 0374 AD XOR L
\ 0375 B4 OR H
\ 0376 CA3504 JP Z,?0115
\ 0379 ?0072:
243 {
244 return RESULT_CURR_UI;
245 }
\ 0379 ?0073:
246 PlayStatus=StopSta;
\ 0379 AF XOR A
\ 037A 320000 LD (PlayStatus),A
247 return g_result;//热键或等于0时返回
\ 037D ?0114:
\ 037D C31504 JP LWRD ?0116
248
249
250
251 case AP_KEY_PREV | AP_KEY_UP:
\ 0380 ?0074:
\ 0380 ?0076:
252 while(ap_get_message() != 0);
\ 0380 CD0000 CALL LWRD ap_get_message
\ 0383 B7 OR A
\ 0384 20FA JR NZ,?0074
\ 0386 ?0077:
253 break;
\ 0386 ?0075:
\ 0386 C36604 JP LWRD ?0027
\ 0389 ?0078:
254
255 case AP_KEY_PREV:
256 case AP_KEY_PREV | AP_KEY_HOLD:
257 musicpSendCommand(MC_CLOSE, NULL);
\ 0389 4F LD C,A
\ 038A 47 LD B,A
\ 038B 1E02 LD E,2
\ 038D CDA701 CALL LWRD ?0143
258 g_result = ChangeMusic(Music_Prev, Stop_key);
\ 0390 0E00 LD C,0
\ 0392 1E04 LD E,4
259 FSELSetMode( FSEL_ALL_REPEATALL );
260 FSELGetNext(g_music_vars.location.filename);
261 fselGetLocation(& g_music_vars.location);
262 GetInformation();
\ 0394 CD6201 CALL LWRD ?0141
263 memcpy(g_TagInfoBuf1,g_TagInfoBuf,20);
264 FSELGetPrev(g_music_vars.location.filename);
265 fselGetLocation(& g_music_vars.location);
266 FSELSetMode(g_music_vars.repeat_mode);
267 GetInformation(); //取文件信息
\ 0397 CDE800 CALL LWRD ?0137
268 musicpSendCommand( MC_OPEN, (int)& g_Openparam );//这个可不用
269 g_result = musicpSendCommand(MC_LOAD, NULL);
270 CaltimeFlag = FALSE;//等待计时间
271 WaitForCaltimeCNT = 0;
272 SetFullInterface();
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?