sub_function1.lst
来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 1,380 行 · 第 1/5 页
LST
1,380 行
178 fselGetLocation(& g_music_vars.location);
\ 01D2 CDE202 CALL LWRD ?0224
179 return FALSE;
\ 01D5 1822 JR ?0053
180 }
\ 01D7 ?0051:
181 break;
\ 01D7 ?0049:
182 }
183 ifSelBuffToltalTimeFlag = FALSE;
\ 01D7 AF XOR A
\ 01D8 320000 LD (ifSelBuffToltalTimeFlag),A
184 result = FSELGetNext(g_music_vars.location.filename);
\ 01DB 112100 LD DE,g_music_vars+33
\ 01DE 3E00 LD A,BYTE3 fselGetNextFile
\ 01E0 210000 LD HL,LWRD fselGetNextFile
\ 01E3 180C JR ?0184
185 break;
\ 01E5 ?0052:
186
187 case Music_Prev:
188 ifSelBuffToltalTimeFlag = FALSE;
\ 01E5 AF XOR A
\ 01E6 320000 LD (ifSelBuffToltalTimeFlag),A
189 result = FSELGetPrev(g_music_vars.location.filename);
\ 01E9 112100 LD DE,g_music_vars+33
\ 01EC 3E00 LD A,BYTE3 fselGetPrevFile
\ 01EE 210000 LD HL,LWRD fselGetPrevFile
\ 01F1 ?0184:
\ 01F1 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01F4 DD75FE LD (IX-2),L
190 break;
\ 01F7 1803 JR ?0043
\ 01F9 ?0053:
191
192 default:
193 return FALSE;
\ 01F9 C39A02 JP LWRD ?0190
194 }
\ 01FC ?0043:
195
196 if (!result)
\ 01FC AF XOR A
\ 01FD DDB6FE OR (IX-2)
\ 0200 2009 JR NZ,?0055
\ 0202 ?0054:
197 {
198 fselSetLocation(& g_music_vars.location);
\ 0202 CDF802 CALL LWRD ?0226
199 return result;
\ 0205 DD6EFE LD L,(IX-2)
200 }
\ 0208 C3CA02 JP LWRD ?0076
\ 020B ?0055:
201
202 #ifdef ACTIVE_USERPL
203 bList_Flag = FALSE;
\ 020B AF XOR A
\ 020C 320000 LD (bList_Flag),A
204 #endif
205 //取当前歌曲数状态
206 g_musicamount = FSELGetTotal();
\ 020F 3E00 LD A,BYTE3 fselGetTotal
\ 0211 210000 LD HL,LWRD fselGetTotal
\ 0214 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0217 220000 LD (g_musicamount),HL
207 g_musicsequence = FSELGetNo();
\ 021A 3E00 LD A,BYTE3 fselGetNo
\ 021C 210000 LD HL,LWRD fselGetNo
\ 021F CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0222 220000 LD (g_musicsequence),HL
208 FSELSetMode(g_music_vars.repeat_mode);
\ 0225 CDD602 CALL LWRD ?0223
209
210 //确保选择器与AP的目录对应
211 fselGetLocation(& g_music_vars.location);
\ 0228 CDED02 CALL LWRD ?0225
212 } //没有选择列表
213
214 else //选择列表
\ 022B 187E JR ?0056
\ 022D ?0033:
215 {
216 switch (Direct)
\ 022D DD7E02 LD A,(IX+2)
\ 0230 FE02 CP 2
\ 0232 2006 JR NZ,?0059
\ 0234 ?0058:
217 {
218 case Music_Cur:
219 result = TRUE;
\ 0234 DD36FE01 LD (IX-2),1
220 break;
\ 0238 184F JR ?0057
\ 023A ?0059:
\ 023A FE03 CP 3
\ 023C 2028 JR NZ,?0066
221
222 case Music_Next:
223 if(mod==list_key) //从播放列表选择文件模式
\ 023E DD7E04 LD A,(IX+4)
\ 0241 FE03 CP 3
\ 0243 2844 JR Z,?0057
\ 0245 ?0060:
224 {
225 break;
\ 0245 ?0061:
226 }
227 if((mod==Play_key) &&(g_music_vars.file_list_num ==g_file_list_total-1)) //最后一首停止
\ 0245 47 LD B,A
\ 0246 05 DEC B
\ 0247 05 DEC B
\ 0248 2014 JR NZ,?0063
\ 024A 2A5A00 LD HL,(g_music_vars+90)
\ 024D E5 PUSH HL
\ 024E 21FFFF LD HL,65535
\ 0251 ED4B0000 LD BC,(g_file_list_total)
\ 0255 09 ADD HL,BC
\ 0256 4D LD C,L
\ 0257 44 LD B,H
\ 0258 E1 POP HL
\ 0259 A7 AND A
\ 025A ED42 SBC HL,BC
\ 025C 283C JR Z,?0190
\ 025E ?0065:
\ 025E ?0064:
\ 025E ?0062:
228 return FALSE;
\ 025E ?0063:
229 ifSelBuffToltalTimeFlag = FALSE;
\ 025E AF XOR A
\ 025F 320000 LD (ifSelBuffToltalTimeFlag),A
230 result = select_music_list(Music_Next); //选择下一首
\ 0262 1E03 LD E,3
\ 0264 1818 JR ?0185
231 break;
\ 0266 ?0066:
\ 0266 FE04 CP 4
\ 0268 201F JR NZ,?0057
232
233 case Music_Prev:
234 if((mod==Play_key) &&(g_music_vars.file_list_num ==0))
\ 026A DD4604 LD B,(IX+4)
\ 026D 05 DEC B
\ 026E 05 DEC B
\ 026F 2007 JR NZ,?0068
\ 0271 2A5A00 LD HL,(g_music_vars+90)
\ 0274 7D LD A,L
\ 0275 B4 OR H
\ 0276 2822 JR Z,?0190
\ 0278 ?0070:
\ 0278 ?0069:
\ 0278 ?0067:
235 return FALSE;
\ 0278 ?0068:
236
237 ifSelBuffToltalTimeFlag = FALSE;
\ 0278 AF XOR A
\ 0279 320000 LD (ifSelBuffToltalTimeFlag),A
238 result = select_music_list(Music_Prev); //选择上一首
\ 027C 1E04 LD E,4
\ 027E ?0185:
\ 027E 3E00 LD A,BYTE3 select_music_list
\ 0280 210000 LD HL,LWRD select_music_list
\ 0283 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0286 DD75FE LD (IX-2),L
239 break;
\ 0289 ?0071:
240
241 default:
242 break;
\ 0289 ?0057:
243 }
244 if(result==RESULT_LIST_ERR) //列表不存在
\ 0289 DD7EFE LD A,(IX-2)
\ 028C FE6A CP 106
\ 028E 280A JR Z,?0190
\ 0290 ?0072:
245 {
246 return FALSE;
247 }
\ 0290 ?0073:
248 if(!fselSetLocation(& g_music_vars.location)) //文件已被删除
\ 0290 CDF802 CALL LWRD ?0226
\ 0293 2C INC L
\ 0294 2D DEC L
\ 0295 2007 JR NZ,?0075
\ 0297 ?0074:
249 {
250 DisplayErrMsg(MFILEOUT); //没有文件
251 fselGetLocation(& g_music_vars.location);
\ 0297 CDE202 CALL LWRD ?0224
252 return FALSE;
\ 029A ?0190:
\ 029A 2E00 LD L,0
253 }
\ 029C 182C JR ?0076
\ 029E ?0075:
254 else
255 {
256 g_musicamount = g_file_list_total;
\ 029E 2A0000 LD HL,(g_file_list_total)
\ 02A1 220000 LD (g_musicamount),HL
257 g_musicsequence = g_music_vars.file_list_num+1; //当前列表编号
\ 02A4 2A5A00 LD HL,(g_music_vars+90)
\ 02A7 23 INC HL
\ 02A8 220000 LD (g_musicsequence),HL
\ 02AB ?0056:
258 }
259 }
260 //检测Music的类型
261 make_dirname(); //取目录名
\ 02AB 3E00 LD A,BYTE3 make_dirname
\ 02AD 210000 LD HL,LWRD make_dirname
\ 02B0 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
262 g_currentMusicType = CheckMusicType(g_music_vars.location.filename);
\ 02B3 112100 LD DE,g_music_vars+33
\ 02B6 3E00 LD A,BYTE3 CheckMusicType
\ 02B8 210000 LD HL,LWRD CheckMusicType
\ 02BB CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 02BE 7D LD A,L
\ 02BF 320000 LD (g_currentMusicType),A
263 //找歌词文件并打开
264 //清 WATCH_DOG
265 output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
\ 02C2 DB4E IN A,(78)
\ 02C4 CBDF SET 3,A
\ 02C6 D34E OUT (78),A
266 return TRUE;
\ 02C8 2E01 LD L,1
267 }
\ 02CA ?0076:
\ 02CA C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 02CD ?0221:
\ 02CD 59 LD E,C
\ 02CE ?0220:
\ 02CE 3E00 LD A,BYTE3 fselInit
\ 02D0 210000 LD HL,LWRD fselInit
\ 02D3 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 02D6 ?0223:
\ 02D6 ED5B0100 LD DE,(g_music_vars+1)
\ 02DA ?0222:
\ 02DA 3E00 LD A,BYTE3 fselSetMode
\ 02DC 210000 LD HL,LWRD fselSetMode
\ 02DF C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 02E2 ?0224:
\ 02E2 111702 LD DE,535
\ 02E5 3E00 LD A,BYTE3 DisplayErrMsg
\ 02E7 210000 LD HL,LWRD DisplayErrMsg
\ 02EA CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 02ED ?0225:
\ 02ED 110700 LD DE,g_music_vars+7
\ 02F0 3E00 LD A,BYTE3 fselGetLocation
\ 02F2 210000 LD HL,LWRD fselGetLocation
\ 02F5 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 02F8 ?0226:
\ 02F8 110700 LD DE,g_music_vars+7
\ 02FB 3E00 LD A,BYTE3 fselSetLocation
\ 02FD 210000 LD HL,LWRD fselSetLocation
\ 0300 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0303 musicpSendCommand_bank:
268
269 //==================================================================
270 bool musicpSendCommand_bank( BYTE cmd, int param )
271 {
\ 0303 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0306 FEFF DEFW 65534
\ 0308 FDE5 PUSH IY
\ 030A C5 PUSH BC
\ 030B FDE1 POP IY
272 bool result = FALSE;
273 //根据不同的音乐类型发不同的命令
274 output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
\ 030D DB4E IN A,(78)
\ 030F CBDF SET 3,A
\ 0311 D34E OUT (78),A
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?