📄 sub_function2.lst
字号:
\ 01A4 EDB0 LDIR
184 result = FS_GetName(dir_name, 14); //取出长名
\ 01A6 0E0E LD C,14
\ 01A8 110000 LD DE,dir_name
\ 01AB CD0000 CALL LWRD FS_GetName
\ 01AE 0600 LD B,0
185 if (result != 0)
\ 01B0 B7 OR A
\ 01B1 2810 JR Z,?0056
\ 01B3 ?0055:
186 {
187 unitochar(dir_name, sizeof(dir_name), g_comval.langid);
\ 01B3 210C00 LD HL,g_comval+12
\ 01B6 4E LD C,(HL)
\ 01B7 C5 PUSH BC
\ 01B8 0E1E LD C,30
\ 01BA 110000 LD DE,dir_name
\ 01BD CDE701 CALL LWRD ?0155
\ 01C0 F1 POP AF
188 }
189 else
\ 01C1 1810 JR ?0057
\ 01C3 ?0056:
190 {
191 memcpy(dir_name, g_music_vars.location.path, 12);
\ 01C3 0E0C LD C,12
\ 01C5 110000 LD DE,dir_name
\ 01C8 211500 LD HL,g_music_vars+21
\ 01CB EDB0 LDIR
192 dir_name[8]=0;
\ 01CD 320800 LD (dir_name+8),A
193 dir_name[9]=0;
\ 01D0 320900 LD (dir_name+9),A
\ 01D3 ?0057:
194 }
195 FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
\ 01D3 210000 LD HL,0
\ 01D6 E5 PUSH HL
\ 01D7 0E02 LD C,2
\ 01D9 2E04 LD L,4
\ 01DB 39 ADD HL,SP
\ 01DC EB EX DE,HL
\ 01DD CD0000 CALL LWRD FS_Restore
\ 01E0 E1 POP HL
\ 01E1 ?0053:
196 }
197
198 }
\ 01E1 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 01E4 ?0156:
\ 01E4 110000 LD DE,g_TagInfoBuf
\ 01E7 ?0155:
\ 01E7 3E00 LD A,BYTE3 unitochar
\ 01E9 210000 LD HL,LWRD unitochar
\ 01EC C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 01EF read_var:
199 void read_var( void )
200 {
\ 01EF CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 01F2 F2FF DEFW 65522
201 int result;
202 kval_t kval;
203
204 //读出是否刚上电,如是,则要重调时间。
205 VMRead(& kval, VM_KERNEL, sizeof(kval_t));
\ 01F4 210B00 LD HL,11
\ 01F7 E5 PUSH HL
\ 01F8 4C LD C,H
\ 01F9 44 LD B,H
\ 01FA 2E04 LD L,4
\ 01FC 39 ADD HL,SP
\ 01FD EB EX DE,HL
\ 01FE CD0000 CALL LWRD VMRead
\ 0201 E1 POP HL
206 g_PowerOffFlag = kval.rtcresetflag;
\ 0202 DD7EFE LD A,(IX-2)
\ 0205 320000 LD (g_PowerOffFlag),A
207
208 //read comval
209 result = VMRead(& g_comval, VM_SYSTEM, sizeof(g_comval));
\ 0208 212000 LD HL,32
\ 020B E5 PUSH HL
\ 020C 010002 LD BC,512
\ 020F 110000 LD DE,g_comval
\ 0212 CD0000 CALL LWRD VMRead
\ 0215 E1 POP HL
210 ASSERT(result);
211
212 //check if valid
213 if (g_comval.magic != MAGIC_COMVAL)
\ 0216 21ADDE LD HL,57005
\ 0219 ED4B0000 LD BC,(g_comval)
\ 021D A7 AND A
\ 021E ED42 SBC HL,BC
\ 0220 2806 JR Z,?0059
\ 0222 ?0058:
214 {
215 DUMP_STRING("comval init-ed!");
216 //COMVAL_INIT(g_comval);
217 GetDefaultComval(&g_comval);
\ 0222 110000 LD DE,g_comval
\ 0225 CD0000 CALL LWRD GetDefaultComval
\ 0228 ?0059:
218 }
219
220 ap_message_init(& g_comval);
\ 0228 110000 LD DE,g_comval
\ 022B 3E00 LD A,BYTE3 ap_message_init
\ 022D 210000 LD HL,LWRD ap_message_init
\ 0230 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
221
222 //read ap vars
223 result = VMRead(& g_music_vars, VM_AP_MUSIC, sizeof(g_music_vars));
\ 0233 215600 LD HL,86
\ 0236 E5 PUSH HL
\ 0237 010010 LD BC,4096
\ 023A 110000 LD DE,g_music_vars
\ 023D CD0000 CALL LWRD VMRead
\ 0240 E1 POP HL
224 ASSERT(result);
225
226 //check if valid
227 if (g_music_vars.magic != MAGIC_MUSIC)
\ 0241 2A5400 LD HL,(g_music_vars+84)
\ 0244 01EFBE LD BC,48879
\ 0247 A7 AND A
\ 0248 ED42 SBC HL,BC
\ 024A 284D JR Z,?0061
\ 024C ?0060:
228 {
229 BYTE i;
230
231 DUMP_STRING("vars init-ed!");
232 g_music_vars.magic = MAGIC_MUSIC;
\ 024C ED435400 LD (g_music_vars+84),BC
233 g_music_vars.volume = 24;
\ 0250 3E18 LD A,24
\ 0252 320000 LD (g_music_vars),A
234 g_music_vars.eq_type = 0;
\ 0255 AF XOR A
\ 0256 320200 LD (g_music_vars+2),A
235 g_music_vars.replaytimes = 5;
\ 0259 3E05 LD A,5
\ 025B 320400 LD (g_music_vars+4),A
236 g_music_vars.replaygap = 1;
\ 025E 3E01 LD A,1
\ 0260 320500 LD (g_music_vars+5),A
237 g_music_vars.repeat_mode = FSEL_ALL_SEQUENCE;
\ 0263 AF XOR A
\ 0264 320100 LD (g_music_vars+1),A
238 g_music_vars.play_rate = 0;
\ 0267 320300 LD (g_music_vars+3),A
239 g_music_vars.location.disk = 'C';
\ 026A 3E43 LD A,67
\ 026C 320700 LD (g_music_vars+7),A
240 g_music_vars.play_listmod = mlistnor;
\ 026F 3E05 LD A,5
\ 0271 324E00 LD (g_music_vars+78),A
241 g_music_vars.fselmod = FSEL_TYPE_COMMONDIR;
\ 0274 AF XOR A
\ 0275 324F00 LD (g_music_vars+79),A
242 g_music_vars.MusicOpenMod = Nor_open;
\ 0278 320600 LD (g_music_vars+6),A
243 g_music_vars.SRSMod.Wow=8;
\ 027B 3E08 LD A,8
\ 027D 325100 LD (g_music_vars+81),A
244 g_music_vars.SRSMod.Bass=8;
\ 0280 325200 LD (g_music_vars+82),A
245 g_music_vars.SRSMod.Srs=4;
\ 0283 3E04 LD A,4
\ 0285 325300 LD (g_music_vars+83),A
246 strcpy(g_music_vars.location.path, FS_CD_ROOT);
\ 0288 110700 LD DE,?0062
\ 028B 211500 LD HL,g_music_vars+21
\ 028E CD0000 CALL LWRD ?STRCPY_L11
247 ClearTimePara();
\ 0291 3E00 LD A,BYTE3 ClearTimePara
\ 0293 21BF02 LD HL,LWRD ClearTimePara
\ 0296 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0299 ?0061:
248 }
249
250 // menu.string_id = g_comval.langid;
251
252
253 }
\ 0299 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 029C openDAC:
254
255
256
257 void openDAC(void)
258 {
\ 029C D5 PUSH DE
\ 029D F5 PUSH AF
\ 029E F5 PUSH AF
259 dac_t dacattr;
260 sfr IO80_dac = 0x80;
261 sfr IO8B_dac = 0x8b;
262 dacattr.dacselect = 0;
\ 029F 210000 LD HL,0
\ 02A2 39 ADD HL,SP
\ 02A3 3600 LD (HL),0
263 dacattr.rate = FS_8K;
\ 02A5 23 INC HL
\ 02A6 3608 LD (HL),8
264 EnableDAC(& dacattr);
\ 02A8 2B DEC HL
\ 02A9 EB EX DE,HL
\ 02AA CD0000 CALL LWRD EnableDAC
265 IO80_dac = IO80_dac | 0x08; //test
\ 02AD DB80 IN A,(128)
\ 02AF F608 OR 8
\ 02B1 D380 OUT (128),A
266 IO8B_dac = IO8B_dac | 0x10; //test
\ 02B3 DB8B IN A,(139)
\ 02B5 F610 OR 16
\ 02B7 D38B OUT (139),A
267 }
\ 02B9 E1 POP HL
\ 02BA E1 POP HL
\ 02BB D1 POP DE
\ 02BC C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 02BF ClearTimePara:
268
269 void ClearTimePara(void)
270 {
\ 02BF C5 PUSH BC
\ 02C0 D5 PUSH DE
271 BYTE i;
272 g_music_vars.MusicOpenMod = Nor_open;
\ 02C1 AF XOR A
\ 02C2 320600 LD (g_music_vars+6),A
273 g_music_vars.BreakPTSave.breakPT = 0; //开始断点为0
\ 02C5 4F LD C,A
\ 02C6 69 LD L,C
\ 02C7 47 LD B,A
\ 02C8 60 LD H,B
\ 02C9 223000 LD (g_music_vars+48),HL
\ 02CC ED433200 LD (g_music_vars+50),BC
274 g_music_vars.BreakPTDisTime.hour = 0;
\ 02D0 324B00 LD (g_music_vars+75),A
275 g_music_vars.BreakPTDisTime.minute = 0;
\ 02D3 324C00 LD (g_music_vars+76),A
276 g_music_vars.BreakPTDisTime.second = 0;
\ 02D6 324D00 LD (g_music_vars+77),A
277 g_music_vars.BreakPTSave.ApointSave = 0; //开始断点为0
\ 02D9 223400 LD (g_music_vars+52),HL
\ 02DC ED433600 LD (g_music_vars+54),BC
278 g_music_vars.BreakPTSave.BpointSave = 0; //开始断点为0
\ 02E0 223800 LD (g_music_vars+56),HL
\ 02E3 ED433A00 LD (g_music_vars+58),BC
279 for (i = 0; i<12; i++)
\ 02E7 1E00 LD E,0
\ 02E9 ?0064:
\ 02E9 7B LD A,E
\ 02EA FE0C CP 12
\ 02EC 3009 JR NC,?0063
\ 02EE ?0065:
280 { //清0时间记录
281 g_music_vars.BreakPTSave.breakPTTime[i] = 0;
\ 02EE 213C00 LD HL,g_music_vars+60
\ 02F1 4B LD C,E
\ 02F2 09 ADD HL,BC
\ 02F3 70 LD (HL),B
\ 02F4 1C INC E
\ 02F5 18F2 JR ?0064
\ 02F7 ?0063:
282 }
283 StartIntro(TRUE)//因为时间清0了,所以浏览要从头开始
\ 02F7 3E01 LD A,1
\ 02F9 320000 LD (g_introCntMode),A
\ 02FC 3A4D00 LD A,(g_music_vars+77)
\ 02FF 320000 LD (g_OldSecTempBackup),A
\ 0302 AF XOR A
\ 0303 320000 LD (g_introCNT),A
284 }
\ 0306 D1 POP DE
\ 0307 C1 POP BC
\ 0308 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 030B ChangeVolume:
285
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -