📄 sub_function3.lst
字号:
123 if (FSELInit(FSEL_TYPE_AMV, 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 119301 LD DE,403
\ 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 1E05 LD E,5
\ 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 119201 LD DE,402
\ 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_amv_vars.location);
\ 0136 110500 LD DE,g_amv_vars+5
\ 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_amv_vars.location.filename[0] != '\0')
\ 014B 3A1F00 LD A,(g_amv_vars+31)
\ 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 21CF01 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 185F 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 21CF01 LD HL,LWRD StartFileSelector
\ 0169 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 016C 7D LD A,L
\ 016D B4 OR H
\ 016E 284E JR Z,?0141
\ 0170 ?0049:
183 {
184 return 0;
185 }
\ 0170 ?0050:
186 return 1;
\ 0170 210100 LD HL,1
187
188 }
\ 0173 1854 JR ?0060
\ 0175 ?0048:
189
190 ClearTimePara();//时间断点参数从0开始
\ 0175 3E00 LD A,BYTE3 ClearTimePara
\ 0177 210000 LD HL,LWRD ClearTimePara
\ 017A CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
191 g_amv_vars.location.filename[0] = '\0';//找不到对应文件时要回到目录第一个文件
\ 017D AF XOR A
\ 017E 321F00 LD (g_amv_vars+31),A
192 output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
\ 0181 DB4E IN A,(78)
\ 0183 CBDF SET 3,A
\ 0185 D34E OUT (78),A
193
194 result = FSELSetLocation(& g_amv_vars.location);
\ 0187 110500 LD DE,g_amv_vars+5
\ 018A 3E00 LD A,BYTE3 fselSetLocation
\ 018C 210000 LD HL,LWRD fselSetLocation
\ 018F CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0192 E5 PUSH HL
\ 0193 C1 POP BC
195
196 if (result != 0)//set 目录
\ 0194 AF XOR A
\ 0195 B1 OR C
\ 0196 280E JR Z,?0052
\ 0198 ?0051:
197 {
198 //找到目录的第一个文件
199 if (StartFileSelector() == 0)
\ 0198 3E00 LD A,BYTE3 StartFileSelector
\ 019A 21CF01 LD HL,LWRD StartFileSelector
\ 019D CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01A0 7D LD A,L
\ 01A1 B4 OR H
\ 01A2 201F JR NZ,?0059
\ 01A4 ?0053:
200 {
201 return 0;
\ 01A4 1818 JR ?0141
202 }
\ 01A6 ?0054:
203 }
204
205 else
\ 01A6 ?0052:
206 {
207 // 初始化文件选择器
208 if (InitFileSelector() == 0)
\ 01A6 3E00 LD A,BYTE3 InitFileSelector
\ 01A8 212C00 LD HL,LWRD InitFileSelector
\ 01AB CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01AE 7D LD A,L
\ 01AF B4 OR H
\ 01B0 280C JR Z,?0141
\ 01B2 ?0056:
209 {
210 return 0;
211 }
\ 01B2 ?0057:
212 //找到目录的第一个文件
213 if (StartFileSelector() == 0)
\ 01B2 3E00 LD A,BYTE3 StartFileSelector
\ 01B4 21CF01 LD HL,LWRD StartFileSelector
\ 01B7 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01BA 7D LD A,L
\ 01BB B4 OR H
\ 01BC 2005 JR NZ,?0059
\ 01BE ?0058:
214 {
215 return 0;
\ 01BE ?0141:
\ 01BE 210000 LD HL,0
216 }
\ 01C1 1806 JR ?0060
\ 01C3 ?0059:
\ 01C3 ?0055:
217 }
218
219 output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
\ 01C3 DB4E IN A,(78)
\ 01C5 CBDF SET 3,A
\ 01C7 D34E OUT (78),A
220 }
\ 01C9 ?0060:
\ 01C9 F1 POP AF
\ 01CA D1 POP DE
\ 01CB C1 POP BC
\ 01CC C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 01CF StartFileSelector:
221
222
223
224 /******************************************************************************
225 ** 名字:
226 ** 接口:
227 ** 描述:
228 ** 输入参数:
229 ** 输出参数:
230 ** 使用说明: //注,这函数是在初始化完文件选择器或set 完目录后调用的
231 ********************************************************************************/
232 int StartFileSelector(void)
233 {
\ 01CF C5 PUSH BC
\ 01D0 D5 PUSH DE
\ 01D1 DDE5 PUSH IX
234 int result;
235
236 if (g_amv_vars.location.disk == 'C')
\ 01D3 3A0500 LD A,(g_amv_vars+5)
\ 01D6 FE43 CP 67
\ 01D8 111F00 LD DE,g_amv_vars+31
\ 01DB 3E00 LD A,BYTE3 fselGetNextFile
\ 01DD 210000 LD HL,LWRD fselGetNextFile
\ 01E0 2072 JR NZ,?0062
\ 01E2 ?0061:
237 {
238 if (FSELGetNext(g_amv_vars.location.filename) != 0)
\ 01E2 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01E5 2C INC L
\ 01E6 2D DEC L
\ 01E7 C2B702 JP NZ,?0186
\ 01EA ?0063:
239 {
240 return 1;
241 }
\ 01EA ?0064:
242
243 if (FSELGetErrID() == 0)
\ 01EA CD1401 CALL LWRD ?0196
\ 01ED 2C INC L
\ 01EE 2D DEC L
\ 01EF CACB02 JP Z,?0106
\ 01F2 ?0065:
244 {
245 return 0;//非法
246 }
\ 01F2 ?0066:
247 //再查一次,因为可能这目录前面还有文件
248 if (InitFileSelector() == 0)
\ 01F2 3E00 LD A,BYTE3 InitFileSelector
\ 01F4 212C00 LD HL,LWRD InitFileSelector
\ 01F7 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01FA 7D LD A,L
\ 01FB B4 OR H
\ 01FC CACB02 JP Z,?0106
\ 01FF ?0067:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -