📄 sub_playstatuskey.s01
字号:
; 209.
; 210. return g_result;
JR ?0174
; 211. //SetFullInterface();
; 212. //need_draw = TRUE;
; 213. #endif/* OPT_Sup_LRC_fun */
; 214. break;
?0054:
; 215.
; 216. case AP_KEY_PLAY | AP_KEY_UP:
; 217. return DealPlayKey();
LD A,BYTE3 DealPlayKey
LD HL,LWRD DealPlayKey
CALL LWRD ?BANK_CALL_DIRECT_L08
; 218.
; 219. case AP_KEY_VOLSUB:
JR ?0072
?0055:
; 220. case AP_KEY_VOLADD:
; 221. g_result = ChangeVolume();
LD A,BYTE3 ChangeVolume
LD HL,LWRD ChangeVolume
CALL LWRD ?0225
; 222.
; 223. if (g_result == RESULT_RECORD )//不响应AB键
JR NZ,?0057
?0056:
; 224. {
; 225. g_result = play_key_next(AP_KEY_AB | AP_KEY_UP);
LD DE,49
CALL LWRD ?0227
; 226. if (g_result == RESULT_UI_STOP)
LD A,102
XOR L
OR H
JR Z,?0002
?0058:
; 227. {
; 228. return 0;
; 229. }
?0059:
; 230. if (g_result != 0)
LD A,L
OR H
JR NZ,?0174
?0060:
; 231. {
; 232. return g_result;
; 233. }
?0061:
; 234. SetFullInterface();
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
; 235. need_draw = TRUE;
LD A,1
?0175:
LD (need_draw),A
; 236. }
; 237. else
JR ?0002
?0057:
; 238. {
; 239. if (g_result != 0)
LD A,L
OR H
JR Z,?0002
?0063:
; 240. {
; 241. return g_result;
?0174:
LD HL,(g_result)
; 242. }
JR ?0072
?0064:
?0062:
; 243. }
; 244.
; 245.
; 246. break;
?0065:
; 247. case AP_MSG_CHARGING:
; 248. ui_show_batt(GetBattery(), g_comval.BatteryType,0);
LD C,0
PUSH BC
LD BC,(g_comval+15)
CALL LWRD GetBattery
LD E,A
LD D,0
LD A,BYTE3 ui_show_batt
LD HL,LWRD ui_show_batt
CALL LWRD ?BANK_CALL_DIRECT_L08
POP HL
; 249. break;
JR ?0002
?0066:
; 250.
; 251. default:
; 252. key = ap_handle_hotkey(key);
CALL LWRD ap_handle_hotkey
LD (IX+2),A
; 253. if (key == RESULT_REDRAW)
CP 50
JR NZ,?0068
?0067:
; 254. {
; 255. SetFullInterface();
XOR A
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
; 256. need_draw = TRUE;
LD A,1
LD (need_draw),A
; 257. return_to_play=1;
LD (return_to_play),A
JR ?0002
?0068:
; 258. }
; 259. else if (key != 0)
XOR A
OR (IX+2)
JR Z,?0002
?0070:
; 260. {
; 261. return key;
LD L,A
LD H,0
; 262. }
JR ?0072
?0071:
?0069:
; 263. break;
?0002:
; 264. }
; 265. return NULL;
LD HL,0
; 266.
; 267. }
?0072:
POP IY
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0213:
LD BC,0
LD E,2
LD A,BYTE3 musicpSendCommand
LD HL,LWRD musicpSendCommand
CALL LWRD ?BANK_CALL_DIRECT_L08
XOR A
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
LD A,1
LD (need_draw),A
RET
?0222:
LD BC,0
?0223:
LD E,65
?0221:
LD A,BYTE3 musicpSendCommand
LD HL,LWRD musicpSendCommand
JP LWRD ?BANK_CALL_DIRECT_L08
?0225:
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_result),HL
LD A,9
XOR L
OR H
RET
?0227:
LD A,BYTE3 play_key_next
LD HL,LWRD play_key_next
?0226:
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_result),HL
RET
play_key_next:
; 268.
; 269. //============================================================
; 270. //======正常播放时的NEXT键处理========
; 271. int play_key_next( int key )
; 272. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65528
; 273. wma_play_status_t status_buf;
; 274. //停快进退
; 275. if ((PlayStatus == FFPlaySta) || (PlayStatus == FBPlaySta))
LD A,(PlayStatus)
CP 3
JR Z,?0075
CP 4
JR NZ,?0074
?0075:
?0076:
?0073:
; 276. {
; 277. musicpSendCommand(MC_STEP, 0);
LD BC,0
LD E,7
CALL LWRD ?0221
; 278. PlayStatus = PlaySta;
LD A,2
LD (PlayStatus),A
; 279. }
; 280. else
JP LWRD ?0100
?0074:
; 281. {
; 282. switch (RePlayStatus)
LD DE,(RePlayStatus)
CALL LWRD ?C_S_SWITCH_L06
DEFB 0
DEFW 4
DEFW ?0100
DEFW ?0079
DEFW ?0085
DEFW ?0086
DEFW ?0091
?0079:
; 283. {
; 284. case NormalPlay:
; 285. if (key == (AP_KEY_AB | AP_KEY_UP)) //ab key
LD A,49
XOR (IX+2)
OR (IX+3)
JR NZ,?0081
?0080:
; 286. {
; 287. musicpSendCommand(MC_SETA_B, SetAPoint); //SET_A
LD BC,1
CALL LWRD ?0223
; 288. }
; 289. else //next key
JR ?0082
?0081:
; 290. {
; 291. #ifdef OPT_Sup_FadeOut_fun
; 292. FadeOut(TRUE);
CALL LWRD ?0228
; 293. #endif
; 294. g_result = ToNextMusic(Play_key);
LD E,2
LD A,BYTE3 ToNextMusic
LD HL,LWRD ToNextMusic
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_result),HL
; 295. if(g_result != 0)
LD A,L
OR H
JP NZ,?0102
?0083:
; 296. {
; 297. return g_result;
; 298. }
?0084:
; 299. SetFullInterface();
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
; 300. UpDisplayFlag=UpDisplayFlag & clr_musicBackGDPic ; //by zxs for not refresh the bg
LD HL,UpDisplayFlag
RES 0,(HL)
?0082:
; 301. }
; 302. break;
JR ?0100
?0085:
; 303.
; 304. case WaitSetAPointForAB:
; 305. musicpSendCommand(MC_SETA_B, SetAPoint); //SET_A
LD BC,1
CALL LWRD ?0223
; 306. break;
JR ?0100
?0086:
; 307.
; 308. case WaitSetBPointForAB:
; 309. if(g_ABMinTimeCNT == 0) //要大于AB最小时间
LD A,(g_ABMinTimeCNT)
OR A
JR NZ,?0088
?0087:
; 310. {
; 311. DEBUGP(0xa1);
; 312.
; 313. if ( musicpSendCommand(MC_SETA_B, SetBPoint) ); //SET_B
LD BC,2
CALL LWRD ?0223
?0089:
?0090:
; 314. {
; 315. g_AVSetFlag = FALSE;
XOR A
LD (g_AVSetFlag),A
?0088:
; 316. }
; 317. DEBUGP(0xa2);
; 318. }
; 319. break;
JR ?0100
?0091:
; 320.
; 321. case ABLoopPlay:
; 322. #ifdef OPT_Sup_follow_fun//支持跟读对比功能
; 323. if (g_music_vars.location.disk == 'C')
LD A,(g_music_vars+7)
CP 67
JR NZ,?0093
?0092:
; 324. {
; 325. //只有当前盘为“C”时才支持跟读对比功能
; 326. musicpSendCommand(MC_GETSTATUS, (int)(& status_buf));
LD HL,0
ADD HL,SP
LD C,L
LD B,H
LD E,131
CALL LWRD ?0221
; 327. if (status_buf.status == PLAYING_REACH_A)
LD A,(IX-8)
CP 7
JR NZ,?0095
?0094:
; 328. {
; 329. musicpSendCommand(MC_CALTIME, NULL);
LD BC,0
LD E,19
CALL LWRD ?0215
; 330. musicpSendCommand(MC_PLAY, NULL);
CALL LWRD ?BANK_CALL_DIRECT_L08
?0095:
; 331. }
; 332. g_FCexitflag = FALSE;
XOR A
LD (g_FCexitflag),A
; 333. g_result = ui_follow_compare();
LD A,BYTE3 ui_follow_compare
LD HL,LWRD ui_follow_compare
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_result),HL
; 334. g_music_vars.MusicOpenMod = Nor_Break_open;//都是以断点方式退出的
LD A,1
LD (g_music_vars+6),A
; 335. g_ReplayTimeCNT = 0;
XOR A
LD (g_ReplayTimeCNT),A
; 336. if (g_result != 0)
LD A,L
OR H
JR Z,?0098
?0096:
; 337. {
; 338. return g_result;
; 339. }
JR ?0102
?0097:
; 340. }
; 341. else
?0093:
; 342. {
; 343. //当插卡时不支持跟读对比功能
; 344. musicpSendCommand(MC_SETA_B, ClrABPoint); //CLEAR_AB
CALL LWRD ?0222
; 345. RePlayStatus = WaitSetAPointForAB;
LD A,1
LD (RePlayStatus),A
?0098:
; 346. }
; 347. #else//OPT_Sup_follow_fun
; 348. musicpSendCommand(MC_SETA_B, ClrABPoint); //CLEAR_AB
; 349. RePlayStatus = WaitSetAPointForAB;
; 350. #endif//OPT_Sup_follow_fun
; 351.
; 352.
; 353. SetFullInterface();
XOR A
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
; 354. // UpDisplayFlag=UpDisplayFlag & clr_musicBackGDPic ; //by zxs for not refresh the bg
; 355. if(RePlayStatus!=NormalPlay) //zxs add for s73
LD A,(RePlayStatus)
OR A
JR Z,?0100
?0099:
; 356. UpDisplayFlag = UpDisplayFlag &clr_musicbitrate;
LD HL,UpDisplayFlag
INC HL
RES 5,(HL)
?0100:
; 357. //UpDisplayFlag=UpDisplayFlag | up_MPRLmode;
; 358. break;
?0101:
; 359.
; 360. default:
; 361. break;
?0078:
?0077:
; 362. }
; 363. }
; 364. need_draw = TRUE;
LD A,1
LD (need_draw),A
; 365. return NULL;
LD HL,0
; 366. }
?0102:
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0216:
LD BC,5
LD E,89
?0215:
LD A,BYTE3 musicpSendCommand
LD HL,LWRD musicpSendCommand
CALL LWRD ?BANK_CALL_DIRECT_L08
LD BC,0
LD E,4
LD A,BYTE3 musicpSendCommand
LD HL,LWRD musicpSendCommand
RET
?0228:
LD E,1
LD A,BYTE3 FadeOut
LD HL,LWRD FadeOut
JP LWRD ?BANK_CALL_DIRECT_L08
play_key_prev:
; 367.
; 368. //======正常播放时的PREV键处理========
; 369. int play_key_prev( int key )
; 370. {
PUSH BC
PUSH DE
; 371. wma_play_status_t status_buf;
; 372.
; 373. if (RePlayStatus != NormalPlay)
LD A,(RePlayStatus)
OR A
JR Z,?0104
?0103:
; 374. {
; 375. musicpSendCommand(MC_SETA_B, ClrABPoint); //clear AB
CALL LWRD ?0222
; 376.
; 377. RePlayStatus = WaitSetAPointForAB;
LD A,1
LD (RePlayStatus),A
; 378. UpDisplayFlag = UpDisplayFlag | up_MPRLmode;
LD HL,UpDisplayFlag
INC HL
SET 3,(HL)
; 379. need_draw = TRUE;
LD (need_draw),A
; 380. return NULL;
JR ?0105
; 381. }
?0104:
; 382.
; 383. switch (PlayStatus)
LD A,(PlayStatus)
CP 3
JR C,?0107
CP 5
JR NC,?0107
?0106:
; 384. {
; 385. case FBPlaySta:
; 386. case FFPlaySta:
; 387. musicpSendCommand(MC_STEP, 0);
LD BC,0
LD E,7
CALL LWRD ?0221
; 388. PlayStatus = PlaySta;
LD A,2
LD (PlayStatus),A
; 389. break;
JR ?0105
?0107:
CP 2
JR NZ,?0105
; 390.
; 391. case PlaySta:
; 392. #ifdef OPT_Sup_FadeOut_fun
; 393. FadeOut(TRUE);
CALL LWRD ?0228
; 394. #endif
; 395. g_result = PrevMusicInPlay();
LD A,BYTE3 PrevMusicInPlay
LD HL,LWRD PrevMusicInPlay
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_result),HL
; 396. if (g_result != 0) return g_result;
LD A,L
OR H
JR NZ,?0111
?0108:
; 397. break;
?0109:
?0110:
; 398.
; 399. default:
; 400. break;
?0105:
; 401. }
; 402. return NULL;
LD HL,0
; 403. }
?0111:
POP AF
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
ToNextMusic:
; 404.
; 405. int ToNextMusic( Music_sel_mod_t mod )
; 406. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65528
; 407. wma_play_status_t status_buf;
; 408. output8(0x27,input8(0x27)&0xbf); //For test zxs 2006.04.07
IN A,(39)
RES 6,A
OUT (39),A
; 409. musicpSendCommand(MC_STOP, NULL);
CALL LWRD ?0217
; 410. musicpSendCommand(MC_CLOSE, NULL);
CALL LWRD ?BANK_CALL_DIRECT_L08
; 411. output8(0x27,input8(0x27)|0x40); //For test zxs 2006.04.07
IN A,(39)
SET 6,A
OUT (39),A
; 412. g_result = ChangeMusic(Music_Next, mod);
LD C,(IX+2)
LD E,3
CALL LWRD ?0229
; 413. if(!g_result)
JR Z,?0195
?0112:
; 414. {
; 415. return RESULT_UI_STOP;//回到停止界面
; 416. }
?0113:
; 417. FSELSetMode( FSEL_ALL_REPEATALL );
; 418. FSELGetNext(g_music_vars.location.filename);
; 419. fselGetLocation(& g_music_vars.location);
; 420. GetInformation();
CALL LWRD ?0224
; 421. memcpy(g_TagInfoBuf1,g_TagInfoBuf,20);
; 422. //g_TagInfoBuf1[19]=0;
; 423. FSELGetPrev(g_music_vars.location.filename);
; 424. fselGetLocation(& g_music_vars.location);
; 425. FSELSetMode(g_music_vars.repeat_mode);
; 426. GetInformation(); //取文件信息
CALL LWRD ?BANK_CALL_DIRECT_L08
; 427. musicpSendCommand( MC_OPEN, (int)& g_Openparam );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -