ui_director_rec2.lst
来自「MP3 整个 SDK」· LST 代码 · 共 1,196 行 · 第 1/4 页
LST
1,196 行
\ 00C1 3A0000 LD A,(fselDirLayer)
\ 00C4 320B00 LD (temp_record+11),A
117 }
\ 00C7 D1 POP DE
\ 00C8 C1 POP BC
\ 00C9 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 00CC TransOneRecord:
118
119 /********************************************************************************
120 * Description :用于从idm读记录或写入记录到idm
121 *
122 ** Arguments :
123 *
124 * Returns :
125 *
126 * Notes :
127 *
128 ********************************************************************************/
129 void TransOneRecord(file_record *target,file_record *source_record)
130 {
\ 00CC FDE5 PUSH IY
\ 00CE DDE5 PUSH IX
\ 00D0 F5 PUSH AF
\ 00D1 C5 PUSH BC
\ 00D2 DDE1 POP IX
\ 00D4 D5 PUSH DE
\ 00D5 FDE1 POP IY
131 byte status;
132 status = input8(0x05);
\ 00D7 DB05 IN A,(5)
\ 00D9 210000 LD HL,0
\ 00DC 39 ADD HL,SP
\ 00DD 77 LD (HL),A
133 output8(0x05, 0xf6);
\ 00DE 3EF6 LD A,246
\ 00E0 D305 OUT (5),A
134
135 target->filetype=source_record->filetype; //文件类型 0-- 目录 1 文件
\ 00E2 0A LD A,(BC)
\ 00E3 EB EX DE,HL
\ 00E4 77 LD (HL),A
136 memcpy(target->dirno,source_record->dirno,8); //目录序号
\ 00E5 010800 LD BC,8
\ 00E8 FDE5 PUSH IY
\ 00EA D1 POP DE
\ 00EB 13 INC DE
\ 00EC DDE5 PUSH IX
\ 00EE E1 POP HL
\ 00EF 23 INC HL
\ 00F0 EDB0 LDIR
137 target->fileno=source_record->fileno; //文件序号
\ 00F2 DD6E09 LD L,(IX+9)
\ 00F5 FD7509 LD (IY+9),L
\ 00F8 DD660A LD H,(IX+10)
\ 00FB FD740A LD (IY+10),H
138 target->fselExtNo=source_record->fselExtNo; //当前后缀名
\ 00FE DD460C LD B,(IX+12)
\ 0101 FD700C LD (IY+12),B
139 target->dirlayer=source_record->dirlayer; //目录层次 0--根目录
\ 0104 DD460B LD B,(IX+11)
\ 0107 FD700B LD (IY+11),B
140 memcpy(target->name,source_record->name,12);
\ 010A 210D00 LD HL,13
\ 010D FDE5 PUSH IY
\ 010F D1 POP DE
\ 0110 19 ADD HL,DE
\ 0111 EB EX DE,HL
\ 0112 210D00 LD HL,13
\ 0115 DDE5 PUSH IX
\ 0117 C1 POP BC
\ 0118 09 ADD HL,BC
\ 0119 010C00 LD BC,12
\ 011C EDB0 LDIR
141 memcpy(target->longname,source_record->longname,50);
\ 011E 211900 LD HL,25
\ 0121 FDE5 PUSH IY
\ 0123 D1 POP DE
\ 0124 19 ADD HL,DE
\ 0125 EB EX DE,HL
\ 0126 211900 LD HL,25
\ 0129 DDE5 PUSH IX
\ 012B C1 POP BC
\ 012C 09 ADD HL,BC
\ 012D 013200 LD BC,50
\ 0130 EDB0 LDIR
142
143 output8(0x05, status);
\ 0132 69 LD L,C
\ 0133 60 LD H,B
\ 0134 39 ADD HL,SP
\ 0135 7E LD A,(HL)
\ 0136 D305 OUT (5),A
144 }
\ 0138 C3A000 JP LWRD ?0066
\ 013B ShowDirectory:
145
146
147 /********************************************************************************
148 * Description : show the directory.
149 *
150 * Arguments :
151 * location: get thedisk type
152 * Invpath: the "\" or name
153 * Namebuf:the string you will display
154 * type : show file kind
155 * string_id: language type
156 * Returns :
157 * other: Successful
158 * 0: Fail, detail information in fselError
159 * Notes : only display the valid directory or file
160 *
161 ********************************************************************************/
162 void ShowDirectory(BYTE top,BYTE bottom,BYTE Old_active,BYTE active,BYTE string_id,BYTE Disk)
163 {
\ 013B DDE5 PUSH IX
\ 013D DD210000 LD IX,0
\ 0141 DD39 ADD IX,SP
\ 0143 C5 PUSH BC
\ 0144 D5 PUSH DE
\ 0145 F5 PUSH AF
164 BYTE i,tmp;
165 SetTextOutMode(1);
\ 0146 1E01 LD E,1
\ 0148 CD0000 CALL LWRD SetTextOutMode
166 SetPenColor(Color_WHITE_def);
\ 014B CD6703 CALL LWRD ?0067
167 if(Old_active!=active)
\ 014E DD7E06 LD A,(IX+6)
\ 0151 DDBE08 CP (IX+8)
\ 0154 CA4402 JP Z,?0011
\ 0157 ?0010:
168 {
169
170 //清除旧的活动菜单项
171
172 tmp = Old_active%row_count_def;
\ 0157 0606 LD B,6
\ 0159 CD0000 CALL LWRD ?UC_MOD_L01
\ 015C DD77FA LD (IX-6),A
173
174 ResShowPic(MENUBCK6-tmp, menu_ptr_x_def, menu_pos[tmp]-4); //分段刷新背景
\ 015F 4F LD C,A
\ 0160 0600 LD B,0
\ 0162 210000 LD HL,menu_pos
\ 0165 09 ADD HL,BC
\ 0166 7E LD A,(HL)
\ 0167 C6FC ADD A,252
\ 0169 4F LD C,A
\ 016A C5 PUSH BC
\ 016B 0E0A LD C,10
\ 016D DD5EFA LD E,(IX-6)
\ 0170 50 LD D,B
\ 0171 216A00 LD HL,106
\ 0174 A7 AND A
\ 0175 ED52 SBC HL,DE
\ 0177 EB EX DE,HL
\ 0178 CD9A03 CALL LWRD ?0069
\ 017B F1 POP AF
175 ResShowPic(DHT,194,8);
\ 017C 0E08 LD C,8
\ 017E C5 PUSH BC
\ 017F CD9503 CALL LWRD ?0070
\ 0182 F1 POP AF
176 //显示新的活动菜单
177
178 tmp = active%row_count_def;
\ 0183 0606 LD B,6
\ 0185 DD7E08 LD A,(IX+8)
\ 0188 CD7003 CALL LWRD ?0068
179 TransOneRecord(&temp_record,&OnePageRecord[tmp]); //将idm中记录数据读取到temp_record中
180 if(temp_record.filetype==TYPE_FILE)
\ 018B 2014 JR NZ,?0013
\ 018D ?0012:
181 ResShowPic(MFILE,13,menu_pos[tmp]-1);
\ 018D DD4EFA LD C,(IX-6)
\ 0190 47 LD B,A
\ 0191 210000 LD HL,menu_pos
\ 0194 09 ADD HL,BC
\ 0195 7E LD A,(HL)
\ 0196 C6FF ADD A,255
\ 0198 4F LD C,A
\ 0199 C5 PUSH BC
\ 019A 0E0D LD C,13
\ 019C 117900 LD DE,121
\ 019F 1818 JR ?0058
\ 01A1 ?0013:
182 else if(temp_record.filetype==TYPE_DIR)
\ 01A1 3A0000 LD A,(temp_record)
\ 01A4 B7 OR A
\ 01A5 2016 JR NZ,?0016
\ 01A7 ?0015:
183 {
184
185 ResShowPic(MDIR,10,menu_pos[tmp]-4);
\ 01A7 DD4EFA LD C,(IX-6)
\ 01AA 47 LD B,A
\ 01AB 210000 LD HL,menu_pos
\ 01AE 09 ADD HL,BC
\ 01AF 7E LD A,(HL)
\ 01B0 C6FC ADD A,252
\ 01B2 4F LD C,A
\ 01B3 C5 PUSH BC
\ 01B4 0E0A LD C,10
\ 01B6 115B00 LD DE,91
\ 01B9 ?0058:
\ 01B9 CD9A03 CALL LWRD ?0069
\ 01BC F1 POP AF
\ 01BD ?0016:
\ 01BD ?0014:
186
187 }
188
189 ResShowPic(FILEBCK, explorer_str_x_def-1, menu_pos[tmp]-4);
\ 01BD DD4EFA LD C,(IX-6)
\ 01C0 0600 LD B,0
\ 01C2 210000 LD HL,menu_pos
\ 01C5 09 ADD HL,BC
\ 01C6 7E LD A,(HL)
\ 01C7 C6FC ADD A,252
\ 01C9 4F LD C,A
\ 01CA C5 PUSH BC
\ 01CB 0E1F LD C,31
\ 01CD 113200 LD DE,50
\ 01D0 CD9A03 CALL LWRD ?0069
\ 01D3 F1 POP AF
190 ResShowPic(DHTHK,194, menu_pos[tmp]+5);
\ 01D4 DD4EFA LD C,(IX-6)
\ 01D7 0600 LD B,0
\ 01D9 210000 LD HL,menu_pos
\ 01DC 09 ADD HL,BC
\ 01DD 7E LD A,(HL)
\ 01DE C605 ADD A,5
\ 01E0 4F LD C,A
\ 01E1 C5 PUSH BC
\ 01E2 0EC2 LD C,194
\ 01E4 112E00 LD DE,46
\ 01E7 CD9A03 CALL LWRD ?0069
\ 01EA F1 POP AF
191
192 SetTextPos(explorer_str_x_def, menu_pos[tmp]-2);
\ 01EB CDA203 CALL LWRD ?0071
193 SetPenColor(Color_WHITE_def);
\ 01EE CD6703 CALL LWRD ?0067
194 PutS(temp_record.longname,-1);
\ 01F1 0EFF LD C,255
\ 01F3 111900 LD DE,temp_record+25
\ 01F6 CD0000 CALL LWRD PutS
195
196 //重新显示旧的活动菜单
197 tmp = Old_active%row_count_def;
\ 01F9 0606 LD B,6
\ 01FB DD7E06 LD A,(IX+6)
\ 01FE CD7003 CALL LWRD ?0068
198 TransOneRecord(&temp_record,&OnePageRecord[tmp]); //将idm中记录数据读取到temp_record中
199 if(temp_record.filetype==TYPE_FILE)
\ 0201 2014 JR NZ,?0018
\ 0203 ?0017:
200 ResShowPic(MFILE,13,menu_pos[tmp]-1);
\ 0203 DD4EFA LD C,(IX-6)
\ 0206 47 LD B,A
\ 0207 210000 LD HL,menu_pos
\ 020A 09 ADD HL,BC
\ 020B 7E LD A,(HL)
\ 020C C6FF ADD A,255
\ 020E 4F LD C,A
\ 020F C5 PUSH BC
\ 0210 0E0D LD C,13
\ 0212 117900 LD DE,121
\ 0215 1818 JR ?0059
\ 0217 ?0018:
201 else if(temp_record.filetype==TYPE_DIR)
\ 0217 3A0000 LD A,(temp_record)
\ 021A B7 OR A
\ 021B 2016 JR NZ,?0021
\ 021D ?0020:
202 {
203 {
204 ResShowPic(MDIR,10,menu_pos[tmp]-4);
\ 021D DD4EFA LD C,(IX-6)
\ 0220 47 LD B,A
\ 0221 210000 LD HL,menu_pos
\ 0224 09 ADD HL,BC
\ 0225 7E LD A,(HL)
\ 0226 C6FC ADD A,252
\ 0228 4F LD C,A
\ 0229 C5 PUSH BC
\ 022A 0E0A LD C,10
\ 022C 115B00 LD DE,91
\ 022F ?0059:
\ 022F CD9A03 CALL LWRD ?0069
\ 0232 F1 POP AF
\ 0233 ?0021:
\ 0233 ?0019:
205 }
206
207 }
208 SetPenColor(Color_WHITE_def);
\ 0233 CD6703 CALL LWRD ?0067
209 SetTextPos(explorer_str_x_def, menu_pos[tmp]-2);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?