📄 ui_directory_fun.lst
字号:
118 return k-1;
\ 0129 21FFFF LD HL,65535
\ 012C DD4EF6 LD C,(IX-10)
\ 012F DD46F7 LD B,(IX-9)
\ 0132 09 ADD HL,BC
119 }
\ 0133 ?0029:
\ 0133 DDF9 LD SP,IX
\ 0135 DDE1 POP IX
\ 0137 FDE1 POP IY
\ 0139 C1 POP BC
\ 013A C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 013D GetActiveDirFrom:
120
121 //********************************************************************************
122 //* Description :输入目录序号DirNo,输出为此目录在list表中的位置
123 //* n 最大值为999
124 //** Arguments :
125 //*
126 //* Returns : 当前目录在文件/目录列表中的序号
127 //*
128 //* Notes :
129 //*
130 //********************************************************************************
131 WORD GetActiveDirFrom(WORD n)
132 {
\ 013D C5 PUSH BC
\ 013E FDE5 PUSH IY
\ 0140 DDE5 PUSH IX
\ 0142 DD210000 LD IX,0
\ 0146 DD39 ADD IX,SP
\ 0148 D5 PUSH DE
\ 0149 F5 PUSH AF
\ 014A F5 PUSH AF
\ 014B F5 PUSH AF
\ 014C F5 PUSH AF
133 WORD h=0,k=0;
134 BYTE m,i,j;
135 BYTE needbreak=0;
136 byte status;
137
138 if(n>999)
\ 014D AF XOR A
\ 014E DD77F6 LD (IX-10),A
\ 0151 DD77F7 LD (IX-9),A
\ 0154 FD210000 LD IY,0
\ 0158 DD77FB LD (IX-5),A
\ 015B 21E703 LD HL,999
\ 015E ED52 SBC HL,DE
\ 0160 380D JR C,?0070
\ 0162 ?0030:
139 return 0;
\ 0162 ?0031:
140 status = input8(0x05);
\ 0162 DB05 IN A,(5)
\ 0164 DD77FC LD (IX-4),A
141 output8(0x05, 0xf6);
\ 0167 3EF6 LD A,246
\ 0169 D305 OUT (5),A
142
143 if(n==0)
\ 016B 7B LD A,E
\ 016C B2 OR D
\ 016D 2006 JR NZ,?0033
\ 016F ?0032:
144 return 0;
\ 016F ?0070:
\ 016F 210000 LD HL,0
\ 0172 C30202 JP LWRD ?0052
\ 0175 ?0033:
145 for(i=0;i<125;i++)
\ 0175 DD36F800 LD (IX-8),0
\ 0179 ?0035:
\ 0179 DD7EF8 LD A,(IX-8)
\ 017C FE7D CP 125
\ 017E 3077 JR NC,?0034
\ 0180 ?0036:
146 {
147 k++;
148 m=dirbuf[i];
\ 0180 4F LD C,A
\ 0181 0600 LD B,0
\ 0183 210000 LD HL,dirbuf
\ 0186 09 ADD HL,BC
\ 0187 46 LD B,(HL)
\ 0188 DD70F9 LD (IX-7),B
149 if((m&1)==1)h++;
\ 018B CB40 BIT 0,B
\ 018D FD23 INC IY
\ 018F 2808 JR Z,?0068
\ 0191 ?0038:
\ 0191 DD34F6 INC (IX-10)
\ 0194 2003 JR NZ,?0068
\ 0196 DD34F7 INC (IX-9)
\ 0199 ?0068:
\ 0199 ?0039:
150 if((k-1)==n)
\ 0199 21FFFF LD HL,65535
\ 019C FDE5 PUSH IY
\ 019E C1 POP BC
\ 019F 09 ADD HL,BC
\ 01A0 DD4EFE LD C,(IX-2)
\ 01A3 DD46FF LD B,(IX-1)
\ 01A6 A7 AND A
\ 01A7 ED42 SBC HL,BC
\ 01A9 284C JR Z,?0034
\ 01AB ?0040:
151 break;
\ 01AB ?0041:
152 for(j=0;j<7;j++)
\ 01AB DD36FA00 LD (IX-6),0
\ 01AF ?0043:
\ 01AF DD7EFA LD A,(IX-6)
\ 01B2 FE07 CP 7
\ 01B4 3036 JR NC,?0042
\ 01B6 ?0044:
153 {
154 k++;
155 m=m/2;
\ 01B6 210300 LD HL,3
\ 01B9 39 ADD HL,SP
\ 01BA 0602 LD B,2
\ 01BC 7E LD A,(HL)
\ 01BD CD0000 CALL LWRD ?UC_DIV_L01
\ 01C0 77 LD (HL),A
156 if((m&1)==1)h++;
\ 01C1 CB47 BIT 0,A
\ 01C3 FD23 INC IY
\ 01C5 2808 JR Z,?0069
\ 01C7 ?0046:
\ 01C7 DD34F6 INC (IX-10)
\ 01CA 2003 JR NZ,?0069
\ 01CC DD34F7 INC (IX-9)
\ 01CF ?0069:
\ 01CF ?0047:
157 if((k-1)==n)
\ 01CF 21FFFF LD HL,65535
\ 01D2 FDE5 PUSH IY
\ 01D4 C1 POP BC
\ 01D5 09 ADD HL,BC
\ 01D6 DD4EFE LD C,(IX-2)
\ 01D9 DD46FF LD B,(IX-1)
\ 01DC A7 AND A
\ 01DD ED42 SBC HL,BC
\ 01DF 2006 JR NZ,?0049
\ 01E1 ?0048:
158 {
159 needbreak=1;
\ 01E1 DD36FB01 LD (IX-5),1
160 break;
\ 01E5 1805 JR ?0042
\ 01E7 ?0049:
\ 01E7 DD34FA INC (IX-6)
\ 01EA 18C3 JR ?0043
\ 01EC ?0042:
161 }
162
163 }
164 if(needbreak)
\ 01EC AF XOR A
\ 01ED DDB6FB OR (IX-5)
\ 01F0 2005 JR NZ,?0034
\ 01F2 ?0050:
165 break;
\ 01F2 ?0051:
\ 01F2 DD34F8 INC (IX-8)
\ 01F5 1882 JR ?0035
\ 01F7 ?0034:
166 }
167
168 output8(0x05, status);
\ 01F7 DD7EFC LD A,(IX-4)
\ 01FA D305 OUT (5),A
169 return h;
\ 01FC DD6EF6 LD L,(IX-10)
\ 01FF DD66F7 LD H,(IX-9)
170 }
\ 0202 ?0052:
\ 0202 C33301 JP LWRD ?0029
\ 0205 count_dir_num:
171
172 /*
173 ********************************************************************************
174 * Description : 当前目录下,有效的子目录的总数
175 *
176 * Arguments :
177 *
178 * Returns : 子目录总数
179 *
180 * Notes :
181 *
182 ********************************************************************************
183 */
184 WORD count_dir_num(void)
185 {
\ 0205 C5 PUSH BC
\ 0206 D5 PUSH DE
\ 0207 FDE5 PUSH IY
\ 0209 DDE5 PUSH IX
\ 020B 21F2FF LD HL,65522
\ 020E 39 ADD HL,SP
\ 020F F9 LD SP,HL
186 WORD tmp,wtemp,total,direxist;
187 char strDir[12];
188 tmp = 0;
189 wtemp = 1;
\ 0210 FD210000 LD IY,0
\ 0214 DD210100 LD IX,1
\ 0218 ?0054:
190 while(1)
191 {
192 if (! ToDirEntry(strDir, wtemp))
\ 0218 DDE5 PUSH IX
\ 021A C1 POP BC
\ 021B 210200 LD HL,2
\ 021E 39 ADD HL,SP
\ 021F EB EX DE,HL
\ 0220 3E00 LD A,BYTE3 ToDirEntry
\ 0222 210000 LD HL,LWRD ToDirEntry
\ 0225 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0228 2C INC L
\ 0229 2D DEC L
\ 022A 2013 JR NZ,?0057
\ 022C ?0056:
193 {
194 return tmp;
\ 022C FDE5 PUSH IY
\ 022E E1 POP HL
195 }
\ 022F EB EX DE,HL
\ 0230 210E00 LD HL,14
\ 0233 39 ADD HL,SP
\ 0234 F9 LD SP,HL
\ 0235 EB EX DE,HL
\ 0236 DDE1 POP IX
\ 0238 FDE1 POP IY
\ 023A D1 POP DE
\ 023B C1 POP BC
\ 023C C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 023F ?0057:
196 else
197 {
198 // 只检查文件夹是否有效
199 total = GetFileTotal(strDir, TRUE);
\ 023F 210000 LD HL,0
\ 0242 39 ADD HL,SP
\ 0243 E5 PUSH HL
\ 0244 0E01 LD C,1
\ 0246 23 INC HL
\ 0247 23 INC HL
\ 0248 EB EX DE,HL
\ 0249 3E00 LD A,BYTE3 GetFileTotal
\ 024B 210000 LD HL,LWRD GetFileTotal
\ 024E CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0251 4D LD C,L
\ 0252 44 LD B,H
\ 0253 E1 POP HL
\ 0254 71 LD (HL),C
\ 0255 23 INC HL
\ 0256 70 LD (HL),B
200 FS_CD(strDir);
\ 0257 210200 LD HL,2
\ 025A 39 ADD HL,SP
\ 025B EB EX DE,HL
\ 025C CD0000 CALL LWRD FS_CD
201 if (ToDirEntry(strDir,1))
\ 025F 010100 LD BC,1
\ 0262 210200 LD HL,2
\ 0265 39 ADD HL,SP
\ 0266 EB EX DE,HL
\ 0267 3E00 LD A,BYTE3 ToDirEntry
\ 0269 210000 LD HL,LWRD ToDirEntry
\ 026C CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 026F 2C INC L
\ 0270 2D DEC L
\ 0271 2805 JR Z,?0059
\ 0273 ?0058:
202 {
203 direxist=1;
\ 0273 110100 LD DE,1
204 }
205 else
\ 0276 1803 JR ?0060
\ 0278 ?0059:
206 {
207 direxist=0;
\ 0278 110000 LD DE,0
\ 027B ?0060:
208 }
209 output8(0x4e,input8(0x4e)|0x8);
\ 027B DB4E IN A,(78)
\ 027D CBDF SET 3,A
\ 027F D34E OUT (78),A
210
211 FS_CD("\\");
\ 0281 D5 PUSH DE
\ 0282 110000 LD DE,?0061
\ 0285 CD0000 CALL LWRD FS_CD
\ 0288 D1 POP DE
212 }
213 output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
\ 0289 DB4E IN A,(78)
\ 028B CBDF SET 3,A
\ 028D D34E OUT (78),A
214 if((total != 0)||direxist)
\ 028F 210000 LD HL,0
\ 0292 39 ADD HL,SP
\ 0293 7E LD A,(HL)
\ 0294 23 INC HL
\ 0295 B6 OR (HL)
\ 0296 2004 JR NZ,?0064
\ 0298 7B LD A,E
\ 0299 B2 OR D
\ 029A 2802 JR Z,?0063
\ 029C ?0064:
\ 029C ?0065:
\ 029C ?0062:
215 tmp++;
\ 029C FD23 INC IY
\ 029E ?0063:
216
217 wtemp ++;
218 }
219 }
\ 029E DD23 INC IX
\ 02A0 C31802 JP LWRD ?0054
220
221
\ 0000 RSEG CSTR
\ 0000 ?0061:
\ 0000 5C00 DEFB 92,0
\ 0002 END
Errors: none
Warnings: none
Code size: 675
Constant size: 2
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -