ui_directory_rec.lst
来自「MP3 整个 SDK」· LST 代码 · 共 1,106 行 · 第 1/4 页
LST
1,106 行
\ 021F ?0123:
\ 021F 21FFFF LD HL,65535
\ 0222 ED4B0000 LD BC,(list_total_num)
\ 0226 09 ADD HL,BC
\ 0227 E5 PUSH HL
\ 0228 FDE1 POP IY
\ 022A ?0054:
185 DecodeOnePage(top,bottom,type,string_id);
\ 022A DD6E08 LD L,(IX+8)
\ 022D E5 PUSH HL
\ 022E DD6EFE LD L,(IX-2)
\ 0231 E5 PUSH HL
\ 0232 CD2204 CALL LWRD ?0124
\ 0235 E1 POP HL
\ 0236 E1 POP HL
186 ShowDirectory(top,bottom,list_active,list_active,string_id,DiskFlag);
\ 0237 DD6EF8 LD L,(IX-8)
\ 023A E5 PUSH HL
\ 023B DD6E08 LD L,(IX+8)
\ 023E E5 PUSH HL
\ 023F 3A0000 LD A,(list_active)
\ 0242 4F LD C,A
\ 0243 C5 PUSH BC
\ 0244 ?0118:
\ 0244 4F LD C,A
\ 0245 C5 PUSH BC
\ 0246 CD3304 CALL LWRD ?0125
\ 0249 E1 POP HL
\ 024A E1 POP HL
\ 024B E1 POP HL
\ 024C E1 POP HL
\ 024D ?0052:
\ 024D ?0056:
187 }
188 while(ap_get_message() != 0);
\ 024D CD0000 CALL LWRD ap_get_message
\ 0250 B7 OR A
\ 0251 CAFF00 JP Z,?0023
\ 0254 ?0057:
189 break;
\ 0254 18F7 JR ?0052
\ 0256 ?0055:
\ 0256 ?0058:
\ 0256 ?0060:
190
191
192 case AP_KEY_PREV | AP_KEY_UP:
193 while(ap_get_message() != 0);
\ 0256 CD0000 CALL LWRD ap_get_message
\ 0259 B7 OR A
\ 025A CAFF00 JP Z,?0023
\ 025D ?0061:
194 break;
\ 025D 18F7 JR ?0058
\ 025F ?0059:
\ 025F ?0062:
195
196 case AP_KEY_PLAY | AP_KEY_UP:
197 fselSetLocationC(location);
198 return RESULT_IGNORE;
199 break;
\ 025F ?0063:
200
201 case AP_KEY_MODE | AP_KEY_LONG:
202 key = RESULT_NULL;
\ 025F DD36F900 LD (IX-7),0
\ 0263 ?0064:
203 LongTime:
204 output8(0x4e,input8(0x4e) | 0x08);
205 TransOneRecord(&temp_record,(OnePageRecord+list_active%GroupDefine));
\ 0263 CD9104 CALL LWRD ?0128
206 fselDirLayer=temp_record.dirlayer; //目录层次 0--根目录
207 fselDirNo[fselDirLayer]=temp_record.dirno[fselDirLayer]; //目录序号
\ 0266 C5 PUSH BC
\ 0267 0600 LD B,0
\ 0269 210000 LD HL,fselDirNo
\ 026C 09 ADD HL,BC
\ 026D C1 POP BC
\ 026E 70 LD (HL),B
208 fselFileNo=0;//temp_record.fileno; //文件序号
\ 026F 210000 LD HL,0
\ 0272 220000 LD (fselFileNo),HL
209 fselExtNo=temp_record.fselExtNo;
\ 0275 3A0C00 LD A,(temp_record+12)
\ 0278 320000 LD (fselExtNo),A
210
211 if(temp_record.name[0] == '\\') //当前所处子目录首,需要返回父目录
\ 027B 3A0D00 LD A,(temp_record+13)
\ 027E FE5C CP 92
\ 0280 2019 JR NZ,?0066
\ 0282 ?0065:
212 {
213 if(fselDirLayer==0)
\ 0282 3A0000 LD A,(fselDirLayer)
\ 0285 B7 OR A
\ 0286 2009 JR NZ,?0068
\ 0288 ?0067:
214 fselDirNo[fselDirLayer] = 0;
\ 0288 4F LD C,A
\ 0289 41 LD B,C
\ 028A 210000 LD HL,fselDirNo
\ 028D 09 ADD HL,BC
\ 028E 70 LD (HL),B
215 else
\ 028F 1804 JR ?0069
\ 0291 ?0068:
216 fselDirLayer--;
\ 0291 210000 LD HL,fselDirLayer
\ 0294 35 DEC (HL)
\ 0295 ?0069:
217 key=RESULT_NULL;
\ 0295 DD36F900 LD (IX-7),0
218 }
219 else //当前所处可能是子目录或文件,需要分别处理
\ 0299 1815 JR ?0075
\ 029B ?0066:
220 {
221 if(temp_record.filetype==TYPE_DIR)
\ 029B 3A0000 LD A,(temp_record)
\ 029E B7 OR A
\ 029F 200F JR NZ,?0075
\ 02A1 ?0071:
222 {
223 if (fselDirLayer <= 7)
\ 02A1 3A0000 LD A,(fselDirLayer)
\ 02A4 47 LD B,A
\ 02A5 3E07 LD A,7
\ 02A7 B8 CP B
\ 02A8 3806 JR C,?0075
\ 02AA ?0073:
224 {
225 if(FS_CD(temp_record.name))
\ 02AA 110D00 LD DE,temp_record+13
\ 02AD CD0000 CALL LWRD FS_CD
\ 02B0 ?0075:
\ 02B0 ?0076:
\ 02B0 ?0074:
226 {
227 }
228 }
229 }
230 else
\ 02B0 ?0072:
\ 02B0 ?0077:
\ 02B0 ?0070:
231 {
232 }
233 }
234 fselGetLocation(location); //更新location
\ 02B0 DD5EFC LD E,(IX-4)
\ 02B3 DD56FD LD D,(IX-3)
\ 02B6 3E00 LD A,BYTE3 fselGetLocation
\ 02B8 210000 LD HL,LWRD fselGetLocation
\ 02BB CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
235 return key;
\ 02BE DD6EF9 LD L,(IX-7)
\ 02C1 2600 LD H,0
236 case AP_KEY_MODE | AP_KEY_UP:
\ 02C3 C30F04 JP LWRD ?0112
\ 02C6 ?0078:
237 output8(0x4e,input8(0x4e) | 0x08);
238 TransOneRecord(&temp_record,(OnePageRecord+list_active%GroupDefine));
\ 02C6 CD9104 CALL LWRD ?0128
239 fselDirLayer=temp_record.dirlayer; //目录层次 0--根目录
240 fselDirNo[fselDirLayer]=temp_record.dirno[fselDirLayer]; //目录序号
\ 02C9 C5 PUSH BC
\ 02CA 0600 LD B,0
\ 02CC 210000 LD HL,fselDirNo
\ 02CF 09 ADD HL,BC
\ 02D0 C1 POP BC
\ 02D1 70 LD (HL),B
241 fselFileNo=temp_record.fileno; //文件序号
\ 02D2 2A0900 LD HL,(temp_record+9)
\ 02D5 220000 LD (fselFileNo),HL
242 fselExtNo=temp_record.fselExtNo;
\ 02D8 3A0C00 LD A,(temp_record+12)
\ 02DB 320000 LD (fselExtNo),A
243
244 if(temp_record.name[0] == '\\') //当前所处子目录首,需要返回父目录
\ 02DE 3A0D00 LD A,(temp_record+13)
\ 02E1 FE5C CP 92
\ 02E3 2041 JR NZ,?0080
\ 02E5 ?0079:
245 {
246 if ( FS_CD("\\"))
\ 02E5 110200 LD DE,?0083
\ 02E8 CD0000 CALL LWRD FS_CD
\ 02EB B7 OR A
\ 02EC CAAD03 JP Z,?0098
\ 02EF ?0081:
247 {
248 fselDirLayer--;
\ 02EF 210000 LD HL,fselDirLayer
\ 02F2 35 DEC (HL)
249 init_dir_buf();
\ 02F3 3E00 LD A,BYTE3 init_dir_buf
\ 02F5 210000 LD HL,LWRD init_dir_buf
\ 02F8 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
250
251 list_active=temp_record.dirno[fselDirLayer];
\ 02FB 210100 LD HL,temp_record+1
\ 02FE ED4B0000 LD BC,(fselDirLayer)
\ 0302 0600 LD B,0
\ 0304 09 ADD HL,BC
\ 0305 4E LD C,(HL)
\ 0306 ED430000 LD (list_active),BC
252 cur_group=list_active/GroupDefine;
\ 030A 0E06 LD C,6
\ 030C ED5B0000 LD DE,(list_active)
\ 0310 CD7604 CALL LWRD ?0127
253 top=(list_active/GroupDefine)*GroupDefine; ; //顶的序号
254 bottom=top+GroupDefine-1; //底的序号
255 if(bottom>(list_total_num-1))
\ 0313 21FFFF LD HL,65535
\ 0316 ED4B0000 LD BC,(list_total_num)
\ 031A 09 ADD HL,BC
\ 031B FDE5 PUSH IY
\ 031D C1 POP BC
\ 031E A7 AND A
\ 031F ED42 SBC HL,BC
\ 0321 D2AD03 JP NC,?0098
\ 0324 ?0084:
256 bottom=list_total_num-1;
\ 0324 185A JR ?0121
\ 0326 ?0085:
257
258 }
259 else
\ 0326 ?0082:
\ 0326 ?0086:
260 {
261 }
262 }
263 else //当前所处可能是子目录或文件,需要分别处理
\ 0326 ?0080:
264 {
265 if(temp_record.filetype==TYPE_DIR)
\ 0326 3A0000 LD A,(temp_record)
\ 0329 B7 OR A
\ 032A 3A0000 LD A,(fselDirLayer)
\ 032D 205E JR NZ,?0089
\ 032F ?0088:
266 {
267 if (fselDirLayer >= 7) //需实验看看是7还是8?
\ 032F FE07 CP 7
\ 0331 D2FF00 JP NC,?0023
\ 0334 ?0090:
268 {
269 break;
\ 0334 ?0091:
270 }
271 if (fselDirNo[fselDirLayer] > 0)
\ 0334 4F LD C,A
\ 0335 0600 LD B,0
\ 0337 210000 LD HL,fselDirNo
\ 033A 09 ADD HL,BC
\ 033B 7E LD A,(HL)
\ 033C B7 OR A
\ 033D 286E JR Z,?0098
\ 033F ?0092:
272 {
273
274 if(FS_CD(temp_record.name))
\ 033F 110D00 LD DE,temp_record+13
\ 0342 CD0000 CALL LWRD FS_CD
\ 0345 B7 OR A
\ 0346 2865 JR Z,?0098
\ 0348 ?0094:
275 {
276
277 fselDirLayer++;
\ 0348 210000 LD HL,fselDirLayer
\ 034B 34 INC (HL)
278 fselDirNo[fselDirLayer] = 0;
\ 034C ED4B0000 LD BC,(fselDirLayer)
\ 0350 0600 LD B,0
\ 0352 210000 LD HL,fselDirNo
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?