Rev 878 | Details | Compare with Previous | Last modification | View Log
Rev | Author | Line No. | Line |
---|---|---|---|
8 | dimkam | 1 | compareattrib |
2 | push hl |
||
3 | push de |
||
23 | dimkam | 4 | ld bc,FCB_FATTRIB |
8 | dimkam | 5 | ex de,hl |
6 | add hl,bc |
||
7 | ex de,hl |
||
8 | add hl,bc |
||
9 | ld a,(hl) |
||
878 | alone | 10 | and FATTRIB_DIR|0x80 ;0x80=".." |
8 | dimkam | 11 | ld c,a |
658 | alone | 12 | ld a,(de) |
878 | alone | 13 | and FATTRIB_DIR|0x80 |
8 | dimkam | 14 | cp c |
15 | findmin_ccf=$ |
||
16 | ccf |
||
17 | pop de |
||
18 | pop hl |
||
19 | ret |
||
20 | |||
21 | comparedate |
||
22 | call compareattrib |
||
23 | ret nz |
||
23 | dimkam | 24 | ld bc,FCB_FDATE+1 |
8 | dimkam | 25 | ex de,hl |
26 | add hl,bc |
||
27 | ex de,hl |
||
28 | add hl,bc |
||
29 | ld a,(de) |
||
30 | cp (hl) |
||
31 | ret nz |
||
32 | dec hl |
||
33 | dec de |
||
34 | ld a,(de) |
||
35 | cp (hl) |
||
36 | ret nz |
||
37 | |||
23 | dimkam | 38 | ld bc,FCB_FTIME+1-FCB_FDATE |
8 | dimkam | 39 | ex de,hl |
40 | add hl,bc |
||
41 | ex de,hl |
||
42 | add hl,bc |
||
43 | ld a,(de) |
||
44 | cp (hl) |
||
45 | ret nz |
||
46 | dec hl |
||
47 | dec de |
||
48 | ld a,(de) |
||
49 | cp (hl) |
||
50 | ret nz |
||
51 | |||
23 | dimkam | 52 | ld bc,-FCB_FTIME |
8 | dimkam | 53 | ex de,hl |
54 | add hl,bc |
||
55 | ex de,hl |
||
56 | add hl,bc |
||
57 | jr compareext_go |
||
58 | |||
59 | comparesize |
||
60 | call compareattrib |
||
61 | ret nz |
||
23 | dimkam | 62 | ld bc,FCB_FSIZE+3 |
8 | dimkam | 63 | ex de,hl |
64 | add hl,bc |
||
65 | ex de,hl |
||
66 | add hl,bc |
||
67 | ld a,(de) |
||
68 | cp (hl) |
||
69 | ret nz |
||
70 | dec hl |
||
71 | dec de |
||
72 | ld a,(de) |
||
73 | cp (hl) |
||
74 | ret nz |
||
75 | dec hl |
||
76 | dec de |
||
77 | ld a,(de) |
||
78 | cp (hl) |
||
79 | ret nz |
||
80 | dec hl |
||
81 | dec de |
||
82 | ld a,(de) |
||
83 | cp (hl) |
||
84 | ret nz |
||
23 | dimkam | 85 | ld bc,-FCB_FSIZE |
8 | dimkam | 86 | ex de,hl |
87 | add hl,bc |
||
88 | ex de,hl |
||
89 | add hl,bc |
||
90 | jr compareext_go |
||
91 | |||
92 | compareext |
||
93 | call compareattrib |
||
94 | ret nz |
||
95 | compareext_go |
||
96 | ld bc,8 |
||
97 | ex de,hl |
||
98 | add hl,bc |
||
99 | ex de,hl |
||
100 | add hl,bc |
||
101 | ld b,3 |
||
102 | compareext0 |
||
103 | inc hl |
||
104 | inc de |
||
105 | ld a,(de) |
||
106 | cp (hl) |
||
658 | alone | 107 | jr nz,casecompareext;ret nz |
108 | casecompareextq |
||
8 | dimkam | 109 | djnz compareext0 |
110 | ld bc,-11 |
||
111 | ex de,hl |
||
112 | add hl,bc |
||
113 | ex de,hl |
||
114 | add hl,bc |
||
115 | ld b,8 |
||
116 | jp comparefilename0 |
||
117 | |||
658 | alone | 118 | casecompareext |
119 | ld a,(de) |
||
120 | ld c,(hl) |
||
121 | or 0x20 |
||
122 | set 5,c |
||
123 | cp c |
||
124 | jr z,casecompareextq |
||
125 | ret |
||
126 | |||
8 | dimkam | 127 | comparefilename |
128 | ;hl=fcb1 |
||
658 | alone | 129 | ;de=fcb2 |
8 | dimkam | 130 | ;out: NC = *de>=*hl |
131 | call compareattrib |
||
658 | alone | 132 | ret nz |
8 | dimkam | 133 | ld b,11 |
134 | comparefilename0 |
||
135 | inc hl |
||
136 | inc de |
||
137 | ld a,(de) |
||
138 | cp (hl) |
||
658 | alone | 139 | jr nz,casecompare;ret nz |
140 | casecompareq |
||
8 | dimkam | 141 | djnz comparefilename0 |
142 | ret |
||
658 | alone | 143 | |
144 | casecompare |
||
145 | ld a,(de) |
||
146 | ld c,(hl) |
||
147 | or 0x20 |
||
148 | set 5,c |
||
149 | cp c |
||
150 | jr z,casecompareq |
||
151 | ret |
||
152 | |||
8 | dimkam | 153 | compareempty |
154 | scf |
||
155 | ret |
||
156 | |||
109 | demige | 157 | comparer |
158 | ;hl = FCB1, de = FCB2 |
||
8 | dimkam | 159 | findmin_proc=$+1 |
160 | call compareext |
||
161 | ;NC = *de>=*hl |
||
109 | demige | 162 | findmin_ccf2=$ |
163 | ccf ;/nop |
||
164 | ret |
||
8 | dimkam | 165 | |
166 | sortfiles |
||
167 | ;ix=panel |
||
168 | ld l,(ix+PANEL.dirsortproc) |
||
169 | ld h,(ix+PANEL.dirsortproc+1) |
||
170 | ld (findmin_proc),hl |
||
171 | |||
172 | ld a,(ix+PANEL.dirsortmode) |
||
173 | or a |
||
658 | alone | 174 | ld bc,0x3f38 |
8 | dimkam | 175 | jr z,$+5 |
658 | alone | 176 | ld bc,0x0030 |
109 | demige | 177 | ;ld a,c |
178 | ;ld (findmin_jrc),a |
||
8 | dimkam | 179 | ld a,b |
180 | ld (findmin_ccf),a |
||
109 | demige | 181 | ld (findmin_ccf2),a |
182 | |||
183 | ;jp (ix) |
||
184 | |||
185 | sorter2 |
||
186 | ;jr $ |
||
658 | alone | 187 | call HPSRT_init |
109 | demige | 188 | |
189 | ld c,(ix+PANEL.files) |
||
190 | ld b,(ix+PANEL.files+1) |
||
191 | ld a,b |
||
192 | or c |
||
193 | ret z |
||
194 | ;ld l,(ix+PANEL.pointers) |
||
195 | ;ld h,(ix+PANEL.pointers+1) |
||
196 | ld e,(ix+PANEL.catbuf) |
||
197 | ld d,(ix+PANEL.catbuf+1) |
||
198 | sorter2_add0 |
||
199 | push bc |
||
200 | push de |
||
201 | ;call getfilepointer_de_fromhl |
||
202 | ;push hl ;hl=next pointer |
||
203 | ;de=fcb (mangled addr) |
||
204 | ;exd |
||
205 | ;push hl |
||
206 | ;ld d,h |
||
207 | ;ld e,l |
||
208 | ;res 6,d |
||
209 | ;ld a,3 ;TODO remove copy |
||
210 | ;PGW2strpg |
||
344 | alone | 211 | ; c000 PANEL.pg |
109 | demige | 212 | ;ld bc,32 |
213 | ;ldir |
||
214 | ;pop hl |
||
215 | ;ld de,0 |
||
216 | ;hl=addr to add |
||
217 | ;exd |
||
658 | alone | 218 | call HPSRT_add |
109 | demige | 219 | ;pop hl |
220 | pop de |
||
221 | ex de,hl |
||
222 | ld bc,32 |
||
223 | add hl,bc |
||
224 | ex hl,de |
||
225 | jr nc,$+3 |
||
226 | inc de ;next page |
||
227 | set 7,d |
||
228 | set 6,d |
||
229 | pop bc |
||
230 | dec bc |
||
231 | ld a,b |
||
232 | or c |
||
233 | jr nz,sorter2_add0 |
||
234 | |||
235 | jp HPSRT_sort |
||
236 | |||
237 | if 1==0 |
||
238 | sorter1 |
||
239 | |||
73 | Alone | 240 | ;ld a,(ix+PANEL.pg) |
1410 | alone | 241 | ;SETPGC000 |
8 | dimkam | 242 | |
243 | ld c,(ix+PANEL.files) |
||
244 | ld b,(ix+PANEL.files+1) |
||
245 | ld a,b |
||
246 | or c |
||
247 | ret z |
||
248 | ld l,(ix+PANEL.pointers) |
||
249 | ld h,(ix+PANEL.pointers+1) |
||
344 | alone | 250 | ; ⭮ ० " " 室 ᯨ᪠ 䠩, 饬 । 砫, .. ⠭ ⭮ 浪 멤 |
8 | dimkam | 251 | sortfiles_pass0 |
252 | push bc |
||
73 | Alone | 253 | push hl ;hl=start (in pointers) |
8 | dimkam | 254 | ;bc=files!=0 |
255 | call findmin |
||
256 | ;de=min (pointer) |
||
257 | ld hl,(findmin_proc) |
||
258 | ld bc,compareempty |
||
259 | or a |
||
260 | sbc hl,bc |
||
73 | Alone | 261 | pop hl ;hl=start (in pointers) |
8 | dimkam | 262 | ;copy pointer into hl, move to next pointer |
73 | Alone | 263 | push af |
264 | call swapfilepointers_hl_de ;out: hl=next pointer |
||
265 | pop af |
||
8 | dimkam | 266 | pop bc |
267 | jr nz,$+6 ;not compareempty |
||
344 | alone | 268 | dec bc ; compareempty |
8 | dimkam | 269 | ld a,b |
270 | or c |
||
271 | ret z |
||
272 | dec bc |
||
273 | ld a,b |
||
274 | or c |
||
275 | jr nz,sortfiles_pass0 |
||
276 | ret |
||
109 | demige | 277 | |
278 | findmin |
||
279 | ;hl=start (in pointers) |
||
280 | ;bc=files!=0 |
||
281 | ;out: de=min (pointer) |
||
282 | ld e,l |
||
283 | ld d,h ;de=current min (pointer) |
||
284 | findmin0 |
||
285 | ;de=current min (pointer) |
||
286 | dec bc |
||
287 | ld a,b |
||
288 | or c |
||
289 | ret z |
||
290 | inc hl |
||
291 | inc hl |
||
292 | |||
293 | push bc |
||
294 | push de ;de=current min (pointer) |
||
295 | push hl |
||
296 | |||
297 | push de ;de=current min (pointer) |
||
298 | call getfilepointer_de_fromhl |
||
1410 | alone | 299 | SETPG8000 ; ᥩ current min 砥 PGC000 |
109 | demige | 300 | res 6,d |
301 | ex de,hl ;hl=FCB |
||
302 | ex (sp),hl ;hl=current min (pointer) |
||
303 | call getfilepointer_de_fromhl |
||
304 | |||
305 | ;de=current min (FCB) |
||
306 | pop hl ;hl=FCB |
||
307 | |||
308 | call comparer |
||
309 | |||
310 | pop hl |
||
311 | pop de ;de=current min (pointer) |
||
312 | pop bc |
||
313 | ;NC = *de>=*hl |
||
314 | ;findmin_jrc=$ |
||
315 | jr nc,findmin0;findmin_nomin |
||
316 | ld e,l |
||
317 | ld d,h ;de=current min (pointer) |
||
318 | findmin_nomin |
||
319 | jr findmin0 |
||
320 | |||
658 | alone | 321 | endif |