sub_function1.lst
来自「MP3 整个 SDK」· LST 代码 · 共 932 行 · 第 1/3 页
LST
932 行
\ 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:
125 {
126 return 1;
\ 00EC ?0128:
\ 00EC 210100 LD HL,1
127 }
\ 00EF 1813 JR ?0040
\ 00F1 ?0037:
128 result = FSELGetErrID();
\ 00F1 CD1401 CALL LWRD ?0196
129 if (FSELGetErrID() != 0)
\ 00F4 CD1401 CALL LWRD ?0196
\ 00F7 2C INC L
\ 00F8 2D DEC L
\ 00F9 2806 JR Z,?0033
\ 00FB ?0038:
130 {
131 DisplayErrInfor(CFILEOUT);//显示卡无文件
\ 00FB 119301 LD DE,403
\ 00FE ?0129:
\ 00FE CD1F01 CALL LWRD ?0197
132 return 0;
133 }
\ 0101 ?0039:
134 return 0;//非法
135 }
\ 0101 ?0033:
136 else
137 {
138 return 0;//没卡退出
\ 0101 210000 LD HL,0
139 }
\ 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 1E03 LD E,3
\ 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
140
141 }
142
143 }
\ 0127 UpdateFileSelector:
144
145
146 /******************************************************************************
147 ** 名字:
148 ** 接口: int UpdateFileSelector(void)
149 ** 描述: 更新文件选择器
150 ** 输入参数: void
151 ** 输出参数:
152 0: 更新不成功,要退出AP
153 1: 更新成功,已可用
154 ** 使用说明:
155 ********************************************************************************/
156 int UpdateFileSelector(void)
157 {
\ 0127 C5 PUSH BC
\ 0128 D5 PUSH DE
\ 0129 F5 PUSH AF
158
159 BYTE result;
160
161 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
162 BankSwitch((unsigned long)FSELSetLocation >> 16);
\ 0130 0E00 LD C,BYTE3 fselSetLocation
\ 0132 59 LD E,C
\ 0133 CD0000 CALL LWRD BankSwitch
163
164 result = FSELSetLocation(& g_viewpic_vars.location);
\ 0136 110400 LD DE,g_viewpic_vars+4
\ 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
165
166 if (result == 1)
\ 0147 41 LD B,C
\ 0148 05 DEC B
\ 0149 2014 JR NZ,?0042
\ 014B ?0041:
167 {
168 if (g_viewpic_vars.location.filename[0] != '\0')
\ 014B 3A1E00 LD A,(g_viewpic_vars+30)
\ 014E B7 OR A
\ 014F 201F JR NZ,?0050
\ 0151 ?0043:
169 {
170 return 1;
171 }
\ 0151 ?0044:
172
173 //找到目录的第一个文件
174 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:
175 {
176 return 0;
\ 015D 1857 JR ?0141
177 }
\ 015F ?0046:
178 return 1;
179 }
\ 015F ?0042:
180 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:
181 {
182 //找到目录的第一个文件
183 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:
184 {
185 return 0;
186 }
\ 0170 ?0050:
187 return 1;
\ 0170 210100 LD HL,1
188
189 }
\ 0173 184C JR ?0060
\ 0175 ?0048:
190
191 //ClearTimePara();//时间断点参数从0开始
192 g_viewpic_vars.location.filename[0] = '\0';//找不到对应文件时要回到目录第一个文件
\ 0175 AF XOR A
\ 0176 321E00 LD (g_viewpic_vars+30),A
193 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
194
195 result = FSELSetLocation(& g_viewpic_vars.location);
\ 017F 110400 LD DE,g_viewpic_vars+4
\ 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
196
197 if (result != 0)//set 目录
\ 018C AF XOR A
\ 018D B1 OR C
\ 018E 280E JR Z,?0052
\ 0190 ?0051:
198 {
199 //找到目录的第一个文件
200 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:
201 {
202 return 0;
\ 019C 1818 JR ?0141
203 }
\ 019E ?0054:
204 }
205
206 else
\ 019E ?0052:
207 {
208 // 初始化文件选择器
209 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:
210 {
211 return 0;
212 }
\ 01AA ?0057:
213 //找到目录的第一个文件
214 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:
215 {
216 return 0;
\ 01B6 ?0141:
\ 01B6 210000 LD HL,0
217 }
\ 01B9 1806 JR ?0060
\ 01BB ?0059:
\ 01BB ?0055:
218 }
219
220 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
221 }
\ 01C1 ?0060:
\ 01C1 F1 POP AF
\ 01C2 D1 POP DE
\ 01C3 C1 POP BC
\ 01C4 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 01C7 StartFileSelector:
222
223
224
225 /******************************************************************************
226 ** 名字:
227 ** 接口:
228 ** 描述:
229 ** 输入参数:
230 ** 输出参数:
231 ** 使用说明: //注,这函数是在初始化完文件选择器或set 完目录后调用的
232 ********************************************************************************/
233 int StartFileSelector(void)
234 {
\ 01C7 C5 PUSH BC
\ 01C8 D5 PUSH DE
\ 01C9 DDE5 PUSH IX
235 int result;
236
237 if (g_viewpic_vars.location.disk == 'C')
\ 01CB 3A0400 LD A,(g_viewpic_vars+4)
\ 01CE FE43 CP 67
\ 01D0 111E00 LD DE,g_viewpic_vars+30
\ 01D3 3E00 LD A,BYTE3 fselGetNextFile
\ 01D5 210000 LD HL,LWRD fselGetNextFile
\ 01D8 2072 JR NZ,?0062
\ 01DA ?0061:
238 {
239 if (FSELGetNext(g_viewpic_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:
240 {
241 return 1;
242 }
\ 01E2 ?0064:
243
244 if (FSELGetErrID() == 0)
\ 01E2 CD1401 CALL LWRD ?0196
\ 01E5 2C INC L
\ 01E6 2D DEC L
\ 01E7 CAC302 JP Z,?0106
\ 01EA ?0065:
245 {
246 return 0;//非法
247 }
\ 01EA ?0066:
248 //再查一次,因为可能这目录前面还有文件
249 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:
250 {
251 return 0;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?