sub_function3.s01
来自「炬力方案176*132软件源码,适用于AK1025」· S01 代码 · 共 981 行 · 第 1/2 页
S01
981 行
?0047:
; 177.
; 178. //找到目录的第一个文件
; 179. if (StartFileSelector() == 0)
CALL LWRD ?0210
JR NZ,?0053
?0048:
; 180. {
; 181. return 0;
JR ?0145
; 182. }
?0049:
; 183. return 1;
; 184. }
?0045:
; 185. else if (result == 2) // == 2 表示该目录是空
LD B,(IX-2)
DEC B
DEC B
JR NZ,?0051
?0050:
; 186. {
; 187. //找到目录的第一个文件
; 188. if (StartFileSelector() == 0)
CALL LWRD ?0210
JR Z,?0145
?0052:
; 189. {
; 190. return 0;
; 191. }
?0053:
; 192. return 1;
LD HL,1
; 193.
; 194. }
JR ?0063
?0051:
; 195.
; 196. ClearTimePara();//时间断点参数从0开始
LD A,BYTE3 ClearTimePara
LD HL,LWRD ClearTimePara
CALL LWRD ?BANK_CALL_DIRECT_L08
; 197. g_music_vars.location.filename[0] = '\0';//找不到对应文件时要回到目录第一个文件
XOR A
LD (g_music_vars+33),A
; 198. output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 199.
; 200. result = FSELSetLocation(& g_music_vars.location);
LD DE,g_music_vars+7
LD A,BYTE3 fselSetLocation
LD HL,LWRD fselSetLocation
CALL LWRD ?0203
; 201.
; 202. if (result != 0)//set 目录
JR Z,?0055
?0054:
; 203. {
; 204. //找到目录的第一个文件
; 205. if (StartFileSelector() == 0)
CALL LWRD ?0210
JR NZ,?0062
?0056:
; 206. {
; 207. return 0;
JR ?0145
; 208. }
?0057:
; 209. }
; 210.
; 211. else
?0055:
; 212. {
; 213. // 初始化文件选择器
; 214. if (InitFileSelector() == 0)
LD A,BYTE3 InitFileSelector
LD HL,LWRD InitFileSelector
CALL LWRD ?0211
JR Z,?0145
?0059:
; 215. {
; 216. return 0;
; 217. }
?0060:
; 218. //找到目录的第一个文件
; 219. if (StartFileSelector() == 0)
CALL LWRD ?0210
JR NZ,?0062
?0061:
; 220. {
; 221. return 0;
?0145:
LD L,C
LD H,C
; 222. }
JR ?0063
?0062:
?0058:
; 223. }
; 224.
; 225. output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 226. }
?0063:
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0204:
LD DE,g_music_vars+33
LD A,BYTE3 fselGetNextFile
LD HL,LWRD fselGetNextFile
?0203:
CALL LWRD ?BANK_CALL_DIRECT_L08
INC L
DEC L
RET
?0210:
LD A,BYTE3 StartFileSelector
LD HL,LWRD StartFileSelector
?0211:
CALL LWRD ?BANK_CALL_DIRECT_L08
LD A,L
OR H
RET
StartFileSelector:
; 227.
; 228.
; 229.
; 230. /******************************************************************************
; 231. ** 名字:
; 232. ** 接口:
; 233. ** 描述:
; 234. ** 输入参数:
; 235. ** 输出参数:
; 236. ** 使用说明: //注,这函数是在初始化完文件选择器或set 完目录后调用的
; 237. ********************************************************************************/
; 238. int StartFileSelector(void)
; 239. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65534
; 240. int result;
; 241.
; 242. if (g_music_vars.location.disk == 'C')
LD A,(g_music_vars+7)
CP 67
LD DE,g_music_vars+33
LD A,BYTE3 fselGetNextFile
LD HL,LWRD fselGetNextFile
JP NZ,?0065
?0064:
; 243. {
; 244. if (FSELGetNext(g_music_vars.location.filename) != 0)
CALL LWRD ?0203
JR NZ,?0169
?0066:
; 245. {
; 246. return 1;
; 247. }
?0067:
; 248.
; 249. if (FSELGetErrID() == 0)
CALL LWRD ?0206
INC L
DEC L
JP Z,?0114
?0068:
; 250. {
; 251. return 0;//非法
; 252. }
?0069:
; 253. //再查一次,因为可能这目录前面还有文件
; 254. if (InitFileSelector() == 0)
LD A,BYTE3 InitFileSelector
LD HL,LWRD InitFileSelector
CALL LWRD ?0211
JP Z,?0114
?0070:
; 255. {
; 256. return 0;
; 257. }
?0071:
; 258. if (FSELGetNext(g_music_vars.location.filename) != 0)
CALL LWRD ?0204
JR Z,?0073
?0072:
; 259. {
; 260. return 1;
?0169:
JP LWRD ?0173
; 261. }
?0073:
; 262.
; 263. if (FSELGetErrID() == 0)
CALL LWRD ?0206
INC L
DEC L
JP Z,?0114
?0074:
; 264. {
; 265. return 0;//非法
; 266. }
?0075:
; 267.
; 268. if (g_music_vars.location.disk == 'H')
LD A,(g_music_vars+7)
CP 72
JR NZ,?0077
?0076:
; 269. {
; 270. if((g_DiskStateFlag & SetCardOKFlag_def)!=0)
LD A,(g_DiskStateFlag)
BIT 3,A
JR Z,?0079
?0078:
; 271. DisplayErrInfor(CFILEOUT);//显示卡无文件
CALL LWRD ?0208
; 272. else
?0079:
; 273. g_music_vars.location.disk=='C';
?0080:
; 274. return 0; //因为前面已从 'C' 查到 'H' 了,已查完,未找到文件
JP LWRD ?0114
; 275. }
?0077:
; 276. else //还在 'C'
; 277. {
; 278. DisplayErrInfor(DFILEOUT);//显示磁盘无文件
LD DE,628
CALL LWRD ?0209
; 279.
; 280. //检测 sd 卡是否存在
; 281. if ((DRV_DetectUD(1) == 0x20)&&((g_DiskStateFlag & SetCardOKFlag_def)!=0))
LD E,1
CALL LWRD DRV_DetectUD
CP 32
JR NZ,?0082
LD A,(g_DiskStateFlag)
BIT 3,A
JR Z,?0082
?0084:
?0083:
?0081:
; 282. {//有卡
; 283. g_music_vars.location.disk = 'H';
LD A,72
LD (g_music_vars+7),A
; 284. if (FSELInit(FSEL_TYPE_MUSIC, FSEL_ALL_SEQUENCE, g_music_vars.fselmod, 'H'))
LD C,A
PUSH BC
LD HL,g_music_vars+81
LD C,(HL)
PUSH BC
CALL LWRD ?0205
POP AF
POP AF
INC L
DEC L
JR Z,?0088
?0085:
; 285. {
; 286. if (FSELGetNext(g_music_vars.location.filename) != 0)
CALL LWRD ?0204
JR NZ,?0172
?0087:
; 287. {
; 288. return 1;
; 289. }
?0088:
?0086:
; 290. }
; 291. result = FSELGetErrID();
CALL LWRD ?0206
; 292. if (FSELGetErrID() != 0)
CALL LWRD ?0206
INC L
DEC L
JR Z,?0090
?0089:
; 293. {
; 294. DisplayErrInfor(CFILEOUT);//显示卡无文件
LD DE,629
JR ?0177
; 295. return 0;
; 296. }
?0090:
; 297. return 0;//非法
JR ?0114
; 298. }
?0082:
; 299. else
; 300. {
; 301. g_music_vars.location.disk = 'C';
LD A,67
LD (g_music_vars+7),A
; 302. return 0;//没卡退出
JR ?0114
; 303. }
; 304. }
; 305. return 0;
; 306. }
?0065:
; 307. else //g_music_vars.location.disk == 'H'
; 308. {
; 309. if (FSELGetNext(g_music_vars.location.filename) != 0)
CALL LWRD ?0203
JR NZ,?0172
?0091:
; 310. {
; 311. return 1;//找到文件
; 312. }
?0092:
; 313.
; 314. if (FSELGetErrID() == 0)
CALL LWRD ?0206
INC L
DEC L
JR Z,?0114
?0093:
; 315. {
; 316. return 0;//非法
; 317. }
?0094:
; 318.
; 319. //再查一次,因为可能这目录前面还有文件(虽然后面已无文件)
; 320. if (InitFileSelector() == 0)
LD A,BYTE3 InitFileSelector
LD HL,LWRD InitFileSelector
CALL LWRD ?0211
JR Z,?0114
?0095:
; 321. {
; 322. return 0;
; 323. }
?0096:
; 324.
; 325. if (FSELGetNext(g_music_vars.location.filename) != 0)
CALL LWRD ?0204
JR Z,?0098
?0097:
; 326. {
; 327. return 1;//找到文件
?0172:
JR ?0173
; 328. }
?0098:
; 329.
; 330. if (FSELGetErrID() == 0)
CALL LWRD ?0206
INC L
DEC L
JR Z,?0114
?0099:
; 331. {
; 332. return 0;//非法
; 333. }
?0100:
; 334.
; 335. if (g_music_vars.location.disk == 'C')
LD A,(g_music_vars+7)
CP 67
JR Z,?0178
?0101:
; 336. {
; 337. DisplayErrInfor(DFILEOUT);//显示磁盘无文件
; 338. return 0; //因为前面已从 'H' 查到 'C' 了,已查完,未找到文件
; 339. }
?0102:
; 340.
; 341. if((g_DiskStateFlag & SetCardOKFlag_def)!=0)
LD A,(g_DiskStateFlag)
BIT 3,A
JR Z,?0104
?0103:
; 342. DisplayErrInfor(CFILEOUT);//显示卡无文件
CALL LWRD ?0208
?0104:
; 343.
; 344. g_music_vars.location.disk = 'C';
LD A,67
LD (g_music_vars+7),A
; 345. if ((g_DiskStateFlag & SetDiskOKFlag_def) == 0)
LD A,(g_DiskStateFlag)
BIT 7,A
JR Z,?0114
?0105:
; 346. {
; 347. return 0;
; 348. }
?0106:
; 349.
; 350. if ((g_DiskStateFlag & SetDiskNoFile_def) != 0)
BIT 6,A
JR Z,?0108
?0107:
; 351. {
; 352. DisplayErrInfor(DFILEOUT);//显示磁盘无文件
?0178:
LD DE,628
?0177:
CALL LWRD ?0209
; 353. return 0;
JR ?0114
; 354. }
?0108:
; 355.
; 356. if (FSELInit(FSEL_TYPE_MUSIC, FSEL_ALL_SEQUENCE, g_music_vars.fselmod, 'C'))
LD C,67
PUSH BC
LD HL,g_music_vars+81
LD C,(HL)
PUSH BC
CALL LWRD ?0205
POP AF
POP AF
INC L
DEC L
JR Z,?0112
?0109:
; 357. {
; 358. if (FSELGetNext(g_music_vars.location.filename) != 0)
CALL LWRD ?0204
JR Z,?0112
?0111:
; 359. {
; 360. return 1;//找到文件
?0173:
LD HL,1
; 361. }
JR ?0115
?0112:
?0110:
; 362. }
; 363. result = FSELGetErrID();
CALL LWRD ?0206
; 364.
; 365. if (result != 0)
LD A,L
OR A
JR Z,?0114
?0113:
; 366. {
; 367. DisplayErrInfor(DFILEOUT);//显示磁盘无文件
CALL LWRD ?0207
; 368. g_DiskStateFlag |= SetDiskNoFile_def;//标志磁盘无文件
; 369. return 0;//
; 370. }
?0114:
; 371. return 0;
LD HL,0
; 372. }
?0115:
JP LWRD ?BANK_LEAVE_DIRECT_L08
; 373. }
; 374.
; 375.
; 376. /*
; 377. // error information defines in file selector
; 378. #define FSEL_ERR_OUTOF 1
; 379. #define FSEL_ERR_EMPTY 2
; 380. #define FSEL_ERR_SETDIR 3
; 381. #define FSEL_ERR_SETFILE 4
; 382. #define FSEL_ERR_EXCEPTION 5
; 383.
; 384.
; 385. #define FSEL_ERR_FS 20
; 386. #define FSEL_ERR_FAIL 21
; 387. #define FSEL_ERR_DISK 22
; 388. #define FSEL_ERR_PLAYLIST 23
; 389. */
; 390.
; 391. /*
; 392. //error information display
; 393. 1) 磁盘错 : 在 main.c 中已报
; 394. 2) 卡错 : 在 main.c 中已报
; 395.
; 396. 3) 磁盘无文件
; 397. 4) 卡无文件
; 398.
; 399. 5) 空间满 :在 ui_follow.c 文件中已报
; 400. 7) 目录已满 :在 ui_follow.c 文件中已报
; 401.
; 402. 6) 电量不足!:
; 403. 8) 格式错误
; 404. 9) 卡已拔出
; 405.
; 406. */
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?