main.lst
来自「MP3 整个 SDK」· LST 代码 · 共 1,391 行 · 第 1/5 页
LST
1,391 行
\ 0057 F9 LD SP,HL
141 int result, i;
142 long tmp;
143 BOOL status;
144 char file[12];
145
146 strcpy(g_record_vars.location.path, g_dir_voice);
\ 0058 110E00 LD DE,g_dir_voice
\ 005B 213800 LD HL,g_record_vars+24
\ 005E CD0000 CALL LWRD ?STRCPY_L11
147 g_record_vars.location.path[11] = 0x00;
\ 0061 AF XOR A
\ 0062 324300 LD (g_record_vars+35),A
148 //g_record_vars.location.disk = 'C';
149 g_record_vars.location.filename[0] = 0;
\ 0065 324400 LD (g_record_vars+36),A
150
151 FS_CD(FS_CD_ROOT);
\ 0068 110000 LD DE,?0005
\ 006B CD0000 CALL LWRD FS_CD
152 status = FS_CD(g_dir_record);
\ 006E 110200 LD DE,g_dir_record
\ 0071 CD0000 CALL LWRD FS_CD
153 if(!status)
\ 0074 B7 OR A
\ 0075 200C JR NZ,?0007
\ 0077 ?0006:
154 {
155 status = FS_MakeDir(g_dir_record);
\ 0077 110200 LD DE,g_dir_record
\ 007A CD0000 CALL LWRD FS_MakeDir
156 if(!status)return FALSE; // 创建目录失败//create directory fail
\ 007D B7 OR A
\ 007E 2009 JR NZ,?0010
\ 0080 ?0008:
\ 0080 C33801 JP LWRD ?0122
157 }
\ 0083 ?0009:
158 else
\ 0083 ?0007:
159 FS_CD("\\");
\ 0083 110200 LD DE,?0011
\ 0086 CD0000 CALL LWRD FS_CD
\ 0089 ?0010:
160 ASSERT(status);
161
162 i = 1;
163 status = FS_Dir(file, g_dir_ext, FS_DIR_DIR);
\ 0089 0E81 LD C,129
\ 008B C5 PUSH BC
\ 008C 011A00 LD BC,g_dir_ext
\ 008F 210A00 LD HL,10
\ 0092 39 ADD HL,SP
\ 0093 EB EX DE,HL
\ 0094 CD0000 CALL LWRD FS_Dir
\ 0097 E1 POP HL
\ 0098 DD77EC LD (IX-20),A
\ 009B FD210100 LD IY,1
\ 009F ?0014:
164 ASSERT(status);
165 do
166 {
167 result = memcmp(file, g_dir_record, 8);
\ 009F 010800 LD BC,8
\ 00A2 69 LD L,C
\ 00A3 60 LD H,B
\ 00A4 39 ADD HL,SP
\ 00A5 EB EX DE,HL
\ 00A6 210200 LD HL,g_dir_record
\ 00A9 CD0000 CALL LWRD ?MEMCMP_L11
168 if(result == 0)break;
\ 00AC 7D LD A,L
\ 00AD B4 OR H
\ 00AE 2817 JR Z,?0012
\ 00B0 ?0015:
\ 00B0 ?0016:
169 i++;
170 }
171 while((status = FS_Dir(file, g_dir_ext, FS_DIR_DIR_CONT)));
\ 00B0 0E01 LD C,1
\ 00B2 C5 PUSH BC
\ 00B3 011A00 LD BC,g_dir_ext
\ 00B6 210A00 LD HL,10
\ 00B9 39 ADD HL,SP
\ 00BA EB EX DE,HL
\ 00BB CD0000 CALL LWRD FS_Dir
\ 00BE E1 POP HL
\ 00BF DD77EC LD (IX-20),A
\ 00C2 B7 OR A
\ 00C3 FD23 INC IY
\ 00C5 20D8 JR NZ,?0014
\ 00C7 ?0012:
172 if(!status)
\ 00C7 AF XOR A
\ 00C8 DDB6EC OR (IX-20)
\ 00CB 286B JR Z,?0122
\ 00CD ?0017:
173 return FALSE;
\ 00CD ?0018:
174
175 g_record_vars.location.DirNo[0] = i;
\ 00CD FDE5 PUSH IY
\ 00CF E1 POP HL
\ 00D0 7D LD A,L
\ 00D1 322B00 LD (g_record_vars+11),A
176
177 FS_CD(g_dir_record);
\ 00D4 110200 LD DE,g_dir_record
\ 00D7 CD0000 CALL LWRD FS_CD
178 status = FS_CD(g_dir_voice);
\ 00DA 110E00 LD DE,g_dir_voice
\ 00DD CD0000 CALL LWRD FS_CD
179 if(!status)
\ 00E0 B7 OR A
\ 00E1 200B JR NZ,?0020
\ 00E3 ?0019:
180 {
181 status = FS_MakeDir(g_dir_voice);
\ 00E3 110E00 LD DE,g_dir_voice
\ 00E6 CD0000 CALL LWRD FS_MakeDir
182 if(!status)return FALSE; // 创建目录失败
\ 00E9 B7 OR A
\ 00EA 2008 JR NZ,?0023
\ 00EC ?0021:
\ 00EC 184A JR ?0122
183 }
\ 00EE ?0022:
184 else
\ 00EE ?0020:
185 FS_CD("\\");
\ 00EE 110200 LD DE,?0011
\ 00F1 CD0000 CALL LWRD FS_CD
\ 00F4 ?0023:
186 ASSERT(status);
187
188 i = 1;
189 status = FS_Dir(file, g_dir_ext, FS_DIR_DIR);
\ 00F4 0E81 LD C,129
\ 00F6 C5 PUSH BC
\ 00F7 011A00 LD BC,g_dir_ext
\ 00FA 210A00 LD HL,10
\ 00FD 39 ADD HL,SP
\ 00FE EB EX DE,HL
\ 00FF CD0000 CALL LWRD FS_Dir
\ 0102 E1 POP HL
\ 0103 DD77EC LD (IX-20),A
\ 0106 FD210100 LD IY,1
\ 010A ?0026:
190 ASSERT(status);
191 do
192 {
193 result = memcmp(file, g_dir_voice, 8);
\ 010A 010800 LD BC,8
\ 010D 69 LD L,C
\ 010E 60 LD H,B
\ 010F 39 ADD HL,SP
\ 0110 EB EX DE,HL
\ 0111 210E00 LD HL,g_dir_voice
\ 0114 CD0000 CALL LWRD ?MEMCMP_L11
194 if(result == 0)break;
\ 0117 7D LD A,L
\ 0118 B4 OR H
\ 0119 2817 JR Z,?0024
\ 011B ?0027:
\ 011B ?0028:
195 i++;
196 }
197 while((status = FS_Dir(file, g_dir_ext, FS_DIR_DIR_CONT)));
\ 011B 0E01 LD C,1
\ 011D C5 PUSH BC
\ 011E 011A00 LD BC,g_dir_ext
\ 0121 210A00 LD HL,10
\ 0124 39 ADD HL,SP
\ 0125 EB EX DE,HL
\ 0126 CD0000 CALL LWRD FS_Dir
\ 0129 E1 POP HL
\ 012A DD77EC LD (IX-20),A
\ 012D B7 OR A
\ 012E FD23 INC IY
\ 0130 20D8 JR NZ,?0026
\ 0132 ?0024:
198 if(!status)
\ 0132 AF XOR A
\ 0133 DDB6EC OR (IX-20)
\ 0136 2004 JR NZ,?0030
\ 0138 ?0029:
199 return FALSE;
\ 0138 ?0122:
\ 0138 2E00 LD L,0
\ 013A 1824 JR ?0031
\ 013C ?0030:
200
201 g_record_vars.location.DirNo[1] = i;
\ 013C FDE5 PUSH IY
\ 013E E1 POP HL
\ 013F 7D LD A,L
\ 0140 322C00 LD (g_record_vars+12),A
202 g_record_vars.location.dirLayer = 1;
\ 0143 3E01 LD A,1
\ 0145 323700 LD (g_record_vars+23),A
203 g_record_vars.location.ID3buffer = NULL;
\ 0148 210000 LD HL,0
\ 014B 225000 LD (g_record_vars+48),HL
204 status = FS_CD(g_dir_voice);
\ 014E 110E00 LD DE,g_dir_voice
\ 0151 CD0000 CALL LWRD FS_CD
205 tmp = FS_GetCurDir();
\ 0154 CD0000 CALL LWRD FS_GetCurDir
206 g_record_vars.location.ClusterNo = tmp;
\ 0157 223300 LD (g_record_vars+19),HL
\ 015A ED433500 LD (g_record_vars+21),BC
207 //g_record_vars.location.filename[0] = '\0';
208
209 return TRUE;
\ 015E 2E01 LD L,1
210 }
\ 0160 ?0031:
\ 0160 DDF9 LD SP,IX
\ 0162 DDE1 POP IX
\ 0164 FDE1 POP IY
\ 0166 D1 POP DE
\ 0167 C1 POP BC
\ 0168 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 016B make_dirname:
211
212 /*
213 ********************************************************************************
214 * Description : 初始化系统设定变量
215 *
216 * Arguments :
217 *
218 * Returns :
219 *
220 * Notes :
221 *
222 ********************************************************************************
223 */
224 void make_dirname(void)
225 {
\ 016B C5 PUSH BC
\ 016C D5 PUSH DE
\ 016D DDE5 PUSH IX
\ 016F 21E0FF LD HL,65504
\ 0172 39 ADD HL,SP
\ 0173 F9 LD SP,HL
226 int result;
227 char Backbuf[32];
228 //fselGetLocation(&g_record_vars.location);
229 if(g_record_vars.location.path[0]==':')
\ 0174 3A3800 LD A,(g_record_vars+24)
\ 0177 FE3A CP 58
\ 0179 200B JR NZ,?0033
\ 017B ?0032:
230 {
231 strcpy(dir_name,"ROOT");
\ 017B 110400 LD DE,?0034
\ 017E 210000 LD HL,dir_name
\ 0181 CD0000 CALL LWRD ?STRCPY_L11
232 }
233 else
\ 0184 185F JR ?0035
\ 0186 ?0033:
234 {
235
236 FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
\ 0186 210000 LD HL,0
\ 0189 E5 PUSH HL
\ 018A 0E02 LD C,2
\ 018C 23 INC HL
\ 018D 23 INC HL
\ 018E 39 ADD HL,SP
\ 018F EB EX DE,HL
\ 0190 CD0000 CALL LWRD FS_Backup
\ 0193 E1 POP HL
237 // dir_name[0] = ':';
238 // FS_CD(dir_name);
239 FS_CD("\\");
\ 0194 110200 LD DE,?0011
\ 0197 CD0000 CALL LWRD FS_CD
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?