📄 sub_function1.lst
字号:
123 if (FSELInit(FSEL_TYPE_TXT, FSEL_ALL_SEQUENCE, FSEL_TYPE_COMMONDIR, 'H'))
\ 00DE 4F LD C,A
\ 00DF C5 PUSH BC
\ 00E0 0E00 LD C,0
\ 00E2 C5 PUSH BC
\ 00E3 CD0A01 CALL LWRD ?0195
\ 00E6 F1 POP AF
\ 00E7 F1 POP AF
\ 00E8 2C INC L
\ 00E9 2D DEC L
\ 00EA 2805 JR Z,?0037
\ 00EC ?0036:
124 {
125 return 1;
\ 00EC ?0128:
\ 00EC 210100 LD HL,1
126 }
\ 00EF 1813 JR ?0040
\ 00F1 ?0037:
127 result = FSELGetErrID();
\ 00F1 CD1401 CALL LWRD ?0196
128 if (FSELGetErrID() != 0)
\ 00F4 CD1401 CALL LWRD ?0196
\ 00F7 2C INC L
\ 00F8 2D DEC L
\ 00F9 2806 JR Z,?0033
\ 00FB ?0038:
129 {
130 DisplayErrInfor(CFILEOUT);//显示卡无文件
\ 00FB 117502 LD DE,629
\ 00FE ?0129:
\ 00FE CD1F01 CALL LWRD ?0197
131 return 0;
132 }
\ 0101 ?0039:
133 return 0;//非法
134 }
\ 0101 ?0033:
135 else
136 {
137 return 0;//没卡退出
\ 0101 210000 LD HL,0
138 }
\ 0104 ?0040:
\ 0104 F1 POP AF
\ 0105 D1 POP DE
\ 0106 C1 POP BC
\ 0107 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 010A ?0195:
\ 010A 1E04 LD E,4
\ 010C 3E00 LD A,BYTE3 fselInit
\ 010E 210000 LD HL,LWRD fselInit
\ 0111 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0114 ?0196:
\ 0114 3E00 LD A,BYTE3 fselGetErrID
\ 0116 210000 LD HL,LWRD fselGetErrID
\ 0119 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 011C ?0198:
\ 011C 117402 LD DE,628
\ 011F ?0197:
\ 011F 3E00 LD A,BYTE3 DisplayErrInfor
\ 0121 210000 LD HL,LWRD DisplayErrInfor
\ 0124 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
139
140 }
141
142 }
\ 0127 UpdateFileSelector:
143
144
145 /******************************************************************************
146 ** 名字:
147 ** 接口: int UpdateFileSelector(void)
148 ** 描述: 更新文件选择器
149 ** 输入参数: void
150 ** 输出参数:
151 0: 更新不成功,要退出AP
152 1: 更新成功,已可用
153 ** 使用说明:
154 ********************************************************************************/
155 int UpdateFileSelector(void)
156 {
\ 0127 C5 PUSH BC
\ 0128 D5 PUSH DE
\ 0129 F5 PUSH AF
157
158 BYTE result;
159
160 output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
\ 012A DB4E IN A,(78)
\ 012C CBDF SET 3,A
\ 012E D34E OUT (78),A
161 BankSwitch((unsigned long)FSELSetLocation >> 16);
\ 0130 0E00 LD C,BYTE3 fselSetLocation
\ 0132 59 LD E,C
\ 0133 CD0000 CALL LWRD BankSwitch
162
163 result = FSELSetLocation(& g_reader_vars.location);
\ 0136 110600 LD DE,g_reader_vars+6
\ 0139 79 LD A,C
\ 013A 210000 LD HL,LWRD fselSetLocation
\ 013D CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0140 E5 PUSH HL
\ 0141 210200 LD HL,2
\ 0144 39 ADD HL,SP
\ 0145 C1 POP BC
\ 0146 71 LD (HL),C
164
165 if (result == 1)
\ 0147 41 LD B,C
\ 0148 05 DEC B
\ 0149 2014 JR NZ,?0042
\ 014B ?0041:
166 {
167 if (g_reader_vars.location.filename[0] != '\0')
\ 014B 3A2000 LD A,(g_reader_vars+32)
\ 014E B7 OR A
\ 014F 201F JR NZ,?0050
\ 0151 ?0043:
168 {
169 return 1;
170 }
\ 0151 ?0044:
171
172 //找到目录的第一个文件
173 if (StartFileSelector() == 0)
\ 0151 3E00 LD A,BYTE3 StartFileSelector
\ 0153 21C701 LD HL,LWRD StartFileSelector
\ 0156 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0159 7D LD A,L
\ 015A B4 OR H
\ 015B 2013 JR NZ,?0050
\ 015D ?0045:
174 {
175 return 0;
\ 015D 1857 JR ?0141
176 }
\ 015F ?0046:
177 return 1;
178 }
\ 015F ?0042:
179 else if (result == 2) // == 2 表示该目录是空
\ 015F 46 LD B,(HL)
\ 0160 05 DEC B
\ 0161 05 DEC B
\ 0162 2011 JR NZ,?0048
\ 0164 ?0047:
180 {
181 //找到目录的第一个文件
182 if (StartFileSelector() == 0)
\ 0164 3E00 LD A,BYTE3 StartFileSelector
\ 0166 21C701 LD HL,LWRD StartFileSelector
\ 0169 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 016C 7D LD A,L
\ 016D B4 OR H
\ 016E 2846 JR Z,?0141
\ 0170 ?0049:
183 {
184 return 0;
185 }
\ 0170 ?0050:
186 return 1;
\ 0170 210100 LD HL,1
187
188 }
\ 0173 184C JR ?0060
\ 0175 ?0048:
189
190 //ClearTimePara();//时间断点参数从0开始
191 g_reader_vars.location.filename[0] = '\0';//找不到对应文件时要回到目录第一个文件
\ 0175 AF XOR A
\ 0176 322000 LD (g_reader_vars+32),A
192 output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
\ 0179 DB4E IN A,(78)
\ 017B CBDF SET 3,A
\ 017D D34E OUT (78),A
193
194 result = FSELSetLocation(& g_reader_vars.location);
\ 017F 110600 LD DE,g_reader_vars+6
\ 0182 3E00 LD A,BYTE3 fselSetLocation
\ 0184 210000 LD HL,LWRD fselSetLocation
\ 0187 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 018A E5 PUSH HL
\ 018B C1 POP BC
195
196 if (result != 0)//set 目录
\ 018C AF XOR A
\ 018D B1 OR C
\ 018E 280E JR Z,?0052
\ 0190 ?0051:
197 {
198 //找到目录的第一个文件
199 if (StartFileSelector() == 0)
\ 0190 3E00 LD A,BYTE3 StartFileSelector
\ 0192 21C701 LD HL,LWRD StartFileSelector
\ 0195 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0198 7D LD A,L
\ 0199 B4 OR H
\ 019A 201F JR NZ,?0059
\ 019C ?0053:
200 {
201 return 0;
\ 019C 1818 JR ?0141
202 }
\ 019E ?0054:
203 }
204
205 else
\ 019E ?0052:
206 {
207 // 初始化文件选择器
208 if (InitFileSelector() == 0)
\ 019E 3E00 LD A,BYTE3 InitFileSelector
\ 01A0 212C00 LD HL,LWRD InitFileSelector
\ 01A3 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01A6 7D LD A,L
\ 01A7 B4 OR H
\ 01A8 280C JR Z,?0141
\ 01AA ?0056:
209 {
210 return 0;
211 }
\ 01AA ?0057:
212 //找到目录的第一个文件
213 if (StartFileSelector() == 0)
\ 01AA 3E00 LD A,BYTE3 StartFileSelector
\ 01AC 21C701 LD HL,LWRD StartFileSelector
\ 01AF CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01B2 7D LD A,L
\ 01B3 B4 OR H
\ 01B4 2005 JR NZ,?0059
\ 01B6 ?0058:
214 {
215 return 0;
\ 01B6 ?0141:
\ 01B6 210000 LD HL,0
216 }
\ 01B9 1806 JR ?0060
\ 01BB ?0059:
\ 01BB ?0055:
217 }
218
219 output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
\ 01BB DB4E IN A,(78)
\ 01BD CBDF SET 3,A
\ 01BF D34E OUT (78),A
220 }
\ 01C1 ?0060:
\ 01C1 F1 POP AF
\ 01C2 D1 POP DE
\ 01C3 C1 POP BC
\ 01C4 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 01C7 StartFileSelector:
221
222
223
224 /******************************************************************************
225 ** 名字:
226 ** 接口:
227 ** 描述:
228 ** 输入参数:
229 ** 输出参数:
230 ** 使用说明: //注,这函数是在初始化完文件选择器或set 完目录后调用的
231 ********************************************************************************/
232 int StartFileSelector(void)
233 {
\ 01C7 C5 PUSH BC
\ 01C8 D5 PUSH DE
\ 01C9 DDE5 PUSH IX
234 int result;
235
236 if (g_reader_vars.location.disk == 'C')
\ 01CB 3A0600 LD A,(g_reader_vars+6)
\ 01CE FE43 CP 67
\ 01D0 112000 LD DE,g_reader_vars+32
\ 01D3 3E00 LD A,BYTE3 fselGetNextFile
\ 01D5 210000 LD HL,LWRD fselGetNextFile
\ 01D8 2072 JR NZ,?0062
\ 01DA ?0061:
237 {
238 if (FSELGetNext(g_reader_vars.location.filename) != 0)
\ 01DA CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01DD 2C INC L
\ 01DE 2D DEC L
\ 01DF C2AF02 JP NZ,?0186
\ 01E2 ?0063:
239 {
240 return 1;
241 }
\ 01E2 ?0064:
242
243 if (FSELGetErrID() == 0)
\ 01E2 CD1401 CALL LWRD ?0196
\ 01E5 2C INC L
\ 01E6 2D DEC L
\ 01E7 CAC302 JP Z,?0106
\ 01EA ?0065:
244 {
245 return 0;//非法
246 }
\ 01EA ?0066:
247 //再查一次,因为可能这目录前面还有文件
248 if (InitFileSelector() == 0)
\ 01EA 3E00 LD A,BYTE3 InitFileSelector
\ 01EC 212C00 LD HL,LWRD InitFileSelector
\ 01EF CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01F2 7D LD A,L
\ 01F3 B4 OR H
\ 01F4 CAC302 JP Z,?0106
\ 01F7 ?0067:
249 {
250 return 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -