📄 sub_function2.s01
字号:
CALL LWRD FS_Restore
POP HL
?0053:
; 196. }
; 197.
; 198. }
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0156:
LD DE,g_TagInfoBuf
?0155:
LD A,BYTE3 unitochar
LD HL,LWRD unitochar
JP LWRD ?BANK_CALL_DIRECT_L08
read_var:
; 199. void read_var( void )
; 200. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65522
; 201. int result;
; 202. kval_t kval;
; 203.
; 204. //读出是否刚上电,如是,则要重调时间。
; 205. VMRead(& kval, VM_KERNEL, sizeof(kval_t));
LD HL,11
PUSH HL
LD C,H
LD B,H
LD L,4
ADD HL,SP
EX DE,HL
CALL LWRD VMRead
POP HL
; 206. g_PowerOffFlag = kval.rtcresetflag;
LD A,(IX-2)
LD (g_PowerOffFlag),A
; 207.
; 208. //read comval
; 209. result = VMRead(& g_comval, VM_SYSTEM, sizeof(g_comval));
LD HL,32
PUSH HL
LD BC,512
LD DE,g_comval
CALL LWRD VMRead
POP HL
; 210. ASSERT(result);
; 211.
; 212. //check if valid
; 213. if (g_comval.magic != MAGIC_COMVAL)
LD HL,57005
LD BC,(g_comval)
AND A
SBC HL,BC
JR Z,?0059
?0058:
; 214. {
; 215. DUMP_STRING("comval init-ed!");
; 216. //COMVAL_INIT(g_comval);
; 217. GetDefaultComval(&g_comval);
LD DE,g_comval
CALL LWRD GetDefaultComval
?0059:
; 218. }
; 219.
; 220. ap_message_init(& g_comval);
LD DE,g_comval
LD A,BYTE3 ap_message_init
LD HL,LWRD ap_message_init
CALL LWRD ?BANK_CALL_DIRECT_L08
; 221.
; 222. //read ap vars
; 223. result = VMRead(& g_music_vars, VM_AP_MUSIC, sizeof(g_music_vars));
LD HL,86
PUSH HL
LD BC,4096
LD DE,g_music_vars
CALL LWRD VMRead
POP HL
; 224. ASSERT(result);
; 225.
; 226. //check if valid
; 227. if (g_music_vars.magic != MAGIC_MUSIC)
LD HL,(g_music_vars+84)
LD BC,48879
AND A
SBC HL,BC
JR Z,?0061
?0060:
; 228. {
; 229. BYTE i;
; 230.
; 231. DUMP_STRING("vars init-ed!");
; 232. g_music_vars.magic = MAGIC_MUSIC;
LD (g_music_vars+84),BC
; 233. g_music_vars.volume = 24;
LD A,24
LD (g_music_vars),A
; 234. g_music_vars.eq_type = 0;
XOR A
LD (g_music_vars+2),A
; 235. g_music_vars.replaytimes = 5;
LD A,5
LD (g_music_vars+4),A
; 236. g_music_vars.replaygap = 1;
LD A,1
LD (g_music_vars+5),A
; 237. g_music_vars.repeat_mode = FSEL_ALL_SEQUENCE;
XOR A
LD (g_music_vars+1),A
; 238. g_music_vars.play_rate = 0;
LD (g_music_vars+3),A
; 239. g_music_vars.location.disk = 'C';
LD A,67
LD (g_music_vars+7),A
; 240. g_music_vars.play_listmod = mlistnor;
LD A,5
LD (g_music_vars+78),A
; 241. g_music_vars.fselmod = FSEL_TYPE_COMMONDIR;
XOR A
LD (g_music_vars+79),A
; 242. g_music_vars.MusicOpenMod = Nor_open;
LD (g_music_vars+6),A
; 243. g_music_vars.SRSMod.Wow=8;
LD A,8
LD (g_music_vars+81),A
; 244. g_music_vars.SRSMod.Bass=8;
LD (g_music_vars+82),A
; 245. g_music_vars.SRSMod.Srs=4;
LD A,4
LD (g_music_vars+83),A
; 246. strcpy(g_music_vars.location.path, FS_CD_ROOT);
LD DE,?0062
LD HL,g_music_vars+21
CALL LWRD ?STRCPY_L11
; 247. ClearTimePara();
LD A,BYTE3 ClearTimePara
LD HL,LWRD ClearTimePara
CALL LWRD ?BANK_CALL_DIRECT_L08
?0061:
; 248. }
; 249.
; 250. // menu.string_id = g_comval.langid;
; 251.
; 252.
; 253. }
JP LWRD ?BANK_LEAVE_DIRECT_L08
openDAC:
; 254.
; 255.
; 256.
; 257. void openDAC(void)
; 258. {
PUSH DE
PUSH AF
PUSH AF
; 259. dac_t dacattr;
; 260. sfr IO80_dac = 0x80;
; 261. sfr IO8B_dac = 0x8b;
; 262. dacattr.dacselect = 0;
LD HL,0
ADD HL,SP
LD (HL),0
; 263. dacattr.rate = FS_8K;
INC HL
LD (HL),8
; 264. EnableDAC(& dacattr);
DEC HL
EX DE,HL
CALL LWRD EnableDAC
; 265. IO80_dac = IO80_dac | 0x08; //test
IN A,(128)
OR 8
OUT (128),A
; 266. IO8B_dac = IO8B_dac | 0x10; //test
IN A,(139)
OR 16
OUT (139),A
; 267. }
POP HL
POP HL
POP DE
JP LWRD ?BANK_FAST_LEAVE_L08
ClearTimePara:
; 268.
; 269. void ClearTimePara(void)
; 270. {
PUSH BC
PUSH DE
; 271. BYTE i;
; 272. g_music_vars.MusicOpenMod = Nor_open;
XOR A
LD (g_music_vars+6),A
; 273. g_music_vars.BreakPTSave.breakPT = 0; //开始断点为0
LD C,A
LD L,C
LD B,A
LD H,B
LD (g_music_vars+48),HL
LD (g_music_vars+50),BC
; 274. g_music_vars.BreakPTDisTime.hour = 0;
LD (g_music_vars+75),A
; 275. g_music_vars.BreakPTDisTime.minute = 0;
LD (g_music_vars+76),A
; 276. g_music_vars.BreakPTDisTime.second = 0;
LD (g_music_vars+77),A
; 277. g_music_vars.BreakPTSave.ApointSave = 0; //开始断点为0
LD (g_music_vars+52),HL
LD (g_music_vars+54),BC
; 278. g_music_vars.BreakPTSave.BpointSave = 0; //开始断点为0
LD (g_music_vars+56),HL
LD (g_music_vars+58),BC
; 279. for (i = 0; i<12; i++)
LD E,0
?0064:
LD A,E
CP 12
JR NC,?0063
?0065:
; 280. { //清0时间记录
; 281. g_music_vars.BreakPTSave.breakPTTime[i] = 0;
LD HL,g_music_vars+60
LD C,E
ADD HL,BC
LD (HL),B
INC E
JR ?0064
?0063:
; 282. }
; 283. StartIntro(TRUE)//因为时间清0了,所以浏览要从头开始
LD A,1
LD (g_introCntMode),A
LD A,(g_music_vars+77)
LD (g_OldSecTempBackup),A
XOR A
LD (g_introCNT),A
; 284. }
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
ChangeVolume:
; 285.
; 286. //============改变音量================
; 287. int ChangeVolume( void )
; 288. {
PUSH BC
PUSH DE
PUSH IY
; 289. wma_play_status_t status_buf;
; 290. int key;
; 291. return_to_play=1;
LD A,1
LD (return_to_play),A
; 292. slider.string_id=g_comval.langid;
LD A,(g_comval+12)
LD (slider+10),A
; 293. if (RePlayStatus != NormalPlay)
LD A,(RePlayStatus)
OR A
JR Z,?0068
?0067:
; 294. {
; 295. if (g_currentMusicType == Music_MP3)
LD A,(g_currentMusicType)
DEC A
JP NZ,?0140
?0069:
; 296. {
; 297.
; 298. if (g_music_vars.location.disk != 'C')
LD A,(g_music_vars+7)
CP 67
JP NZ,?0140
?0071:
; 299. {
; 300. //如不是“C”盘就不进行速度调节
; 301. return 0;
; 302. }
?0072:
; 303. //show background
; 304. ClearScreen(NULL);
LD DE,0
CALL LWRD ClearScreen
; 305. slider.max = 8;
LD HL,8
LD (slider+4),HL
; 306. slider.min = -8;
LD HL,65528
LD (slider+2),HL
; 307. slider.step = 1;
LD HL,1
LD (slider+8),HL
; 308. slider.title=MPLAY3;
LD HL,288
LD (slider),HL
; 309. CheckPlayrateLimit();
LD A,BYTE3 CheckPlayrateLimit
LD HL,LWRD CheckPlayrateLimit
CALL LWRD ?BANK_CALL_DIRECT_L08
; 310. slider.value = g_music_vars.play_rate;
LD BC,(g_music_vars+3)
LD A,C
RLCA
SBC A,A
LD B,A
LD (slider+6),BC
; 311. ui_auto_update=FALSE;
XOR A
LD (ui_auto_update),A
; 312. g_result = ui_slider(& slider, speed_callback);
LD C,BYTE3 speed_callback
PUSH BC
LD HL,LWRD speed_callback
PUSH HL
CALL LWRD ?0157
POP AF
POP AF
LD (g_result),HL
; 313. ui_auto_update = TRUE;
; 314. g_music_vars.play_rate = slider.value;
LD A,(slider+6)
LD (g_music_vars+3),A
; 315.
; 316. SetFullInterface();
XOR A
LD (ui_auto_update),A
LD IY,UpDisplayFlag
LD A,(IY+0)
OR 193
LD (IY+0),A
LD (IY+1),255
; 317. need_draw = TRUE;
LD A,1
LD (need_draw),A
; 318.
; 319. //if (g_result != RESULT_RECORD)//不响应单键录音
; 320. //{
; 321. if (g_result != 0)
LD A,L
OR H
JR Z,?0140
?0073:
; 322. {
; 323. return g_result;
JR ?0077
; 324. }
?0074:
?0070:
; 325. //}
; 326.
; 327. }
; 328. return 0;
; 329. }
?0068:
; 330.
; 331. //show background
; 332. slider.min = 0;
LD L,A
LD H,A
LD (slider+2),HL
; 333. slider.max = 31;
LD L,31
LD (slider+4),HL
; 334. //g_music_vars.volume = GetPAVolume();
; 335. slider.value = g_music_vars.volume;
LD BC,(g_music_vars)
LD A,C
RLCA
SBC A,A
LD B,A
LD (slider+6),BC
; 336. slider.step = 1;
LD L,1
LD (slider+8),HL
; 337. slider.title=CHANGEVO;
LD HL,489
LD (slider),HL
; 338. g_result = ui_slider(& slider, volume_callback);
LD C,BYTE3 volume_callback
PUSH BC
LD HL,LWRD volume_callback
PUSH HL
CALL LWRD ?0157
POP AF
POP AF
LD (g_result),HL
; 339. ui_auto_update = TRUE;
LD A,1
LD (ui_auto_update),A
; 340. StartIntro(FALSE);
XOR A
LD (g_introCntMode),A
LD A,(g_music_vars+77)
LD (g_OldSecTempBackup),A
XOR A
LD (g_introCNT),A
; 341.
; 342. if (g_result != 0)
LD A,L
OR H
JR NZ,?0077
?0075:
; 343. {
; 344. return g_result;
; 345. }
?0076:
; 346. SetFullInterface();
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
; 347. need_draw = TRUE;
LD A,1
LD (need_draw),A
; 348. return 0;
?0140:
LD HL,0
; 349. }
?0077:
POP IY
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
?0157:
LD DE,slider
LD A,BYTE3 ui_slider
LD HL,LWRD ui_slider
JP LWRD ?BANK_CALL_DIRECT_L08
GetInformation:
; 350.
; 351.
; 352. /*
; 353. ********************************************************************************
; 354. * int GetInformation(void)
; 355. *
; 356. * Description : 读取歌曲信息,歌词
; 357. *
; 358. * Arguments : void
; 359. *
; 360. * Returns : int
; 361. *
; 362. * Notes :
; 363. *
; 364. ********************************************************************************
; 365. */
; 366. int GetInformation( void )
; 367. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65520
; 368. char g_lyric_mod;
; 369. int result;
; 370. ID3Info_t ID3;
; 371.
; 372. //清 WATCH_DOG
; 373. output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 374. g_currentMusicType = CheckMusicType(g_music_vars.location.filename);
LD DE,g_music_vars+33
LD A,BYTE3 CheckMusicType
LD HL,LWRD CheckMusicType
CALL LWRD ?BANK_CALL_DIRECT_L08
LD A,L
LD (g_currentMusicType),A
; 375. ID3.TIT2_length = 30;
LD (IX-12),30
; 376. ID3.TPE1_length = 30;
LD (IX-9),30
; 377. ID3.TALB_length = 30;
LD (IX-6),30
; 378. ID3.TENC_length = 0;
LD (IX-3),0
; 379. ID3.TIT2_buffer = & g_TagInfoBuf[0];
LD (IX-11),LOW(g_TagInfoBuf)
LD (IX-10),HIGH(g_TagInfoBuf)
; 380. ID3.TPE1_buffer = & g_TagInfoBuf[30];
LD (IX-8),LOW(g_TagInfoBuf+30)
LD (IX-7),HIGH(g_TagInfoBuf+30)
; 381. ID3.TALB_buffer = & g_TagInfoBuf[60];
LD (IX-5),LOW(g_TagInfoBuf+60)
LD (IX-4),HIGH(g_TagInfoBuf+60)
; 382. ID3.TENC_buffer = & g_TagInfoBuf[90];
LD (IX-2),LOW(g_TagInfoBuf+90)
LD (IX-1),HIGH(g_TagInfoBuf+90)
; 383.
; 384. switch (g_currentMusicType)
CP 2
JR C,?0088
CP 5
JR NC,?0088
?0079:
; 385. {
; 386. case Music_WMA:
; 387. case Music_WMV:
; 388. case Music_ASF:
; 389. ID3.TALB_length = 0;
LD (IX-6),0
; 390. if (wmaGetTAGInfo(g_music_vars.location.filename, &ID3))
LD HL,4
ADD HL,SP
LD C,L
LD B,H
LD DE,g_music_vars+33
LD A,BYTE3 wmaGetTAGInfo
LD HL,LWRD wmaGetTAGInfo
CALL LWRD ?BANK_CALL_DIRECT_L08
INC L
DEC L
JR Z,?0081
?0080:
; 391. {
; 392. unitochar(g_TagInfoBuf, 30, g_comval.langid);
LD HL,g_comval+12
LD C,(HL)
PUSH BC
LD BC,30
CALL LWRD ?0156
POP AF
; 393. unitochar(&g_TagInfoBuf[30], 30, g_comval.langid);
LD HL,g_comval+12
LD C,(HL)
PUSH BC
LD BC,30
LD DE,g_TagInfoBuf+30
CALL LWRD ?0155
POP AF
; 394. if ( (g_TagInfoBuf[0] !=0)
; 395. || (g_TagInfoBuf[30] !=0) )
LD A,(g_TagInfoBuf)
OR A
JR NZ,?0084
LD A,(g_TagInfoBuf+30)
OR A
JR Z,?0087
?0084:
?0085:
?0082:
; 396. {
; 397. strcpy(g_TagInfoBuf, & g_TagInfoBuf[0]);
CALL LWRD ?0154
; 398. strcat(g_TagInfoBuf, " ");
; 399. strcat(g_TagInfoBuf, & g_TagInfoBuf[30]);
; 400. strcat(g_TagInfoBuf, " ");
?0083:
; 401. }
; 402. }
; 403. else
JR ?0087
?0081:
; 404. {
; 405. g_TagInfoBuf[0] = 0x0;
XOR A
LD (g_TagInfoBuf),A
?0087:
; 406. }
; 407. break;
JR ?0078
?0088:
CP 1
JR NZ,?0092
; 408.
; 409. case Music_MP3:
; 410. 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,?0096
?0089:
; 411. {
; 412. strcpy(g_TagInfoBuf, & g_TagInfoBuf[0]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -