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