Subversion Repositories Kolibri OS

Rev

Rev 321 | Rev 485 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 321 Rev 474
1
use32
1
use32
2
        db      'MENUET01'
2
        db      'MENUET01'
3
        dd      1
3
        dd      1
4
        dd      start
4
        dd      start
5
        dd      i_end
5
        dd      i_end
6
memsize dd      mem
6
memsize dd      mem
7
        dd      stacktop
7
        dd      stacktop
8
        dd      0, 0
8
        dd      0, app_path
9
 
9
 
10
include 'lang.inc'
10
include 'lang.inc'
11
include 'font.inc'
11
include 'font.inc'
12
include 'sort.inc'
12
include 'sort.inc'
13
include 'kglobals.inc'
13
include 'kglobals.inc'
14
include 'memalloc.inc'
-
 
15
include 'dialogs.inc'
14
include 'dialogs.inc'
16
include 'viewer.inc'
15
include 'viewer.inc'
17
include 'tools.inc'
16
include 'tools.inc'
-
 
17
include 'filetool.inc'
18
 
18
 
-
 
19
start:
-
 
20
        mov     edi, tolower_table
-
 
21
        push    'A'
19
start:
22
        pop     ecx
-
 
23
        xor     eax, eax
-
 
24
@@:
-
 
25
        stosb
-
 
26
        inc     eax
-
 
27
        loop    @b
-
 
28
        add     al, 0x20
-
 
29
        mov     cl, 'Z'-'A'+1
-
 
30
@@:
-
 
31
        stosb
-
 
32
        inc     eax
-
 
33
        loop    @b
-
 
34
        sub     al, 0x20
-
 
35
        mov     cl, '€'-'Z'-1
-
 
36
@@:
-
 
37
        stosb
-
 
38
        inc     eax
-
 
39
        loop    @b
-
 
40
        add     al, 0x20
-
 
41
        mov     cl, ''-'€'
-
 
42
@@:
-
 
43
        stosb
-
 
44
        inc     eax
-
 
45
        loop    @b
-
 
46
        add     al, 0x30
-
 
47
        mov     cl, 'Ÿ'-''+1
-
 
48
@@:
-
 
49
        stosb
-
 
50
        inc     eax
-
 
51
        loop    @b
-
 
52
        sub     al, 0x50
-
 
53
        mov     cl, 256-'Ÿ'-1
-
 
54
@@:
-
 
55
        stosb
-
 
56
        inc     eax
-
 
57
        loop    @b
-
 
58
        mov     byte [edi-256+'ð'], 'ñ'
-
 
59
        push    68
-
 
60
        pop     eax
-
 
61
        push    11
20
        mov     eax, mem
62
        pop     ebx
21
        call    mf_init
63
        int     0x40
22
        call    init_console
64
        call    init_console
23
        call    draw_window
65
        call    draw_window
24
        push    66
66
        push    66
25
        pop     eax
67
        pop     eax
26
        push    1
68
        push    1
27
        pop     ebx
69
        pop     ebx
28
        mov     ecx, ebx
70
        mov     ecx, ebx
29
        int     40h     ; set keyboard mode to scancodes
71
        int     40h     ; set keyboard mode to scancodes
30
        mov     esi, def_left_dir
-
 
31
        mov     edi, panel1_dir
-
 
32
@@:
-
 
33
        lodsb
-
 
34
        stosb
-
 
35
        test    al, al
-
 
36
        jnz     @b
-
 
37
        mov     esi, def_right_dir
-
 
38
        mov     edi, panel2_dir
-
 
39
@@:
-
 
40
        lodsb
-
 
41
        stosb
-
 
42
        test    al, al
-
 
43
        jnz     @b
-
 
44
        mov     eax, 200
72
        mov     eax, 200
45
        mov     [panel1_nfa], eax
73
        mov     [panel1_nfa], eax
46
        mov     [panel2_nfa], eax
74
        mov     [panel2_nfa], eax
47
        mov     eax, 200*4 + 32 + 200*304
75
        mov     ecx, 200*4 + 32 + 200*304
48
        push    eax
-
 
49
        call    mf_alloc
76
        call    pgalloc
50
        mov     [panel1_files], eax
77
        mov     [panel1_files], eax
51
        pop     eax
-
 
52
        call    mf_alloc
78
        call    pgalloc
53
        mov     [panel2_files], eax
79
        mov     [panel2_files], eax
54
        test    eax, eax
80
        test    eax, eax
55
        jz      exit
81
        jz      exit
56
        cmp     [panel1_files], eax
82
        cmp     [panel1_files], eax
57
        jz      exit
83
        jz      exit
58
        mov     [panel1_sortmode], 0    ; sort by name
84
        mov     [panel1_sortmode], 0    ; sort by name
59
        mov     [panel2_sortmode], 0
85
        mov     [panel2_sortmode], 0
-
 
86
        push    2                       ; "á।­¨©" ä®à¬ â
-
 
87
        pop     eax
-
 
88
        mov     [panel1_colmode], eax
-
 
89
        mov     [panel2_colmode], eax
60
        mov     [num_screens], 1
90
        mov     [num_screens], 1
61
        mov     eax, 8
91
        mov     ecx, 0x1000
62
        call    mf_alloc
92
        call    pgalloc
63
        mov     [screens], eax
93
        mov     [screens], eax
64
        test    eax, eax
94
        test    eax, eax
65
        jz      exit
95
        jz      exit
66
        mov     ecx, panels_vtable
96
        mov     ecx, panels_vtable
67
        mov     [eax], ecx
97
        mov     [eax], ecx
68
        mov     [active_screen_vtable], ecx
98
        mov     [active_screen_vtable], ecx
-
 
99
; load libini.obj and kfar.ini
-
 
100
        mov     eax, libini_name
-
 
101
        mov     esi, ini_import
-
 
102
        push    2
-
 
103
        pop     ebp     ; we use version 2 of libini
-
 
104
        call    load_dll_and_import
-
 
105
        test    eax, eax
-
 
106
        jnz     .noini
-
 
107
        mov     edi, app_path
-
 
108
        or      ecx, -1
-
 
109
        repnz   scasb
-
 
110
        mov     dword [edi-1], '.ini'
-
 
111
        mov     byte [edi+3], 0
-
 
112
        push    1
-
 
113
        push    dword aConfirmDelete
-
 
114
        push    dword aConfirmations
-
 
115
        push    dword app_path
-
 
116
        call    [ini.get_int]
-
 
117
        mov     [bConfirmDelete], al
-
 
118
        push    0
-
 
119
        push    dword aConfirmDeleteIncomplete
-
 
120
        push    dword aConfirmations
-
 
121
        push    dword app_path
-
 
122
        call    [ini.get_int]
-
 
123
        mov     [bConfirmDeleteIncomplete], al
-
 
124
        mov     ecx, 0x1000
-
 
125
        call    xpgalloc
-
 
126
        test    eax, eax
-
 
127
        jz      .skip_assoc
-
 
128
@@:
-
 
129
        mov     edx, eax
-
 
130
        push    edx ecx
-
 
131
        push    ecx
-
 
132
        push    edx
-
 
133
        push    dword aAssociations
-
 
134
        push    dword app_path
-
 
135
        call    [ini.query_sec]
-
 
136
        pop     ecx edx
-
 
137
        cmp     eax, ecx
-
 
138
        jbe     @f
-
 
139
        add     ecx, ecx
-
 
140
        call    xpgrealloc
-
 
141
        test    eax, eax
-
 
142
        jz      .skip_assoc
-
 
143
        jmp     @b
-
 
144
@@:
-
 
145
        cmp     ecx, 0x1000
-
 
146
        jbe     @f
-
 
147
        mov     ecx, eax
-
 
148
        call    xpgrealloc      ; must succeed, because we decrease size
-
 
149
        mov     edx, eax
-
 
150
@@:
-
 
151
        mov     [associations], edx
-
 
152
        xor     ebp, ebp
-
 
153
        xor     esi, esi
-
 
154
.skip_assoc:
-
 
155
        mov     edi, saved_file_name
-
 
156
        push    dword nullstr
-
 
157
        push    512
-
 
158
        push    edi
-
 
159
        push    dword aShortcut
-
 
160
        push    dword aFolderShortcuts
-
 
161
        push    dword app_path
-
 
162
        call    [ini.get_str]
-
 
163
        cmp     byte [edi], 0
-
 
164
        jz      .shortcut_cont
-
 
165
        or      ecx, -1
-
 
166
        xor     eax, eax
-
 
167
        repnz   scasb
-
 
168
        not     ecx
-
 
169
        cmp     ecx, 2
-
 
170
        jz      @f
-
 
171
        cmp     byte [edi-2], '/'
-
 
172
        jnz     @f
-
 
173
        mov     byte [edi-2], 0
-
 
174
        dec     ecx
-
 
175
@@:
-
 
176
        mov     al, [aShortcut.d]
-
 
177
        push    esi
-
 
178
        inc     esi
-
 
179
        mov     [FolderShortcuts+(eax-'0')*4], esi
-
 
180
        lea     esi, [esi+ecx-1]
-
 
181
        push    esi
-
 
182
        and     esi, 0xFFF
-
 
183
        cmp     esi, ecx
-
 
184
        pop     esi
-
 
185
        ja      .norealloc
-
 
186
        mov     edx, ebp
-
 
187
        mov     ecx, esi
-
 
188
        call    xpgrealloc
-
 
189
        test    eax, eax
-
 
190
        jnz     @f
-
 
191
        mov     edi, FolderShortcuts
-
 
192
        mov     ecx, 10
-
 
193
        rep     stosd
-
 
194
        jmp     .skip_shortcuts
-
 
195
@@:
-
 
196
        mov     ebp, eax
-
 
197
.norealloc:
-
 
198
        pop     edi
-
 
199
        add     edi, ebp
-
 
200
        mov     ecx, saved_file_name
-
 
201
@@:
-
 
202
        mov     al, [ecx]
-
 
203
        inc     ecx
-
 
204
        stosb
-
 
205
        test    al, al
-
 
206
        jnz     @b
-
 
207
.shortcut_cont:
-
 
208
        inc     [aShortcut.d]
-
 
209
        cmp     [aShortcut.d], '9'
-
 
210
        jbe     .skip_assoc
-
 
211
        mov     esi, FolderShortcuts
-
 
212
        mov     ecx, 10
-
 
213
        dec     ebp
-
 
214
.l3:
-
 
215
        lodsd
-
 
216
        test    eax, eax
-
 
217
        jz      @f
-
 
218
        add     [esi-4], ebp
-
 
219
@@:
-
 
220
        loop    .l3
-
 
221
.skip_shortcuts:
-
 
222
.noini:
-
 
223
        mov     esi, def_left_dir
-
 
224
        mov     edi, panel1_dir
-
 
225
@@:
-
 
226
        lodsb
-
 
227
        stosb
-
 
228
        test    al, al
-
 
229
        jnz     @b
-
 
230
        mov     esi, def_right_dir
-
 
231
        mov     edi, panel2_dir
-
 
232
@@:
-
 
233
        lodsb
-
 
234
        stosb
-
 
235
        test    al, al
-
 
236
        jnz     @b
69
        call    draw_keybar
237
        call    draw_keybar
70
        call    draw_cmdbar
238
        call    draw_cmdbar
71
        mov     [prev_dir], 0
239
        mov     [prev_dir], 0
72
        mov     ebp, panel1_data
240
        mov     ebp, panel1_data
-
 
241
        call    calc_colwidths
73
        call    read_folder
242
        call    read_folder
74
        call    draw_panel
243
        call    draw_panel
75
        mov     [bSilentFolderMode], 1
244
        mov     [bSilentFolderMode], 1
76
        mov     ebp, panel2_data
245
        mov     ebp, panel2_data
-
 
246
        call    calc_colwidths
77
        call    read_folder
247
        call    read_folder
78
        call    draw_panel
248
        call    draw_panel
79
event:
249
event:
80
        push    10
250
        push    10
81
        pop     eax
251
        pop     eax
82
        int     40h
252
        int     40h
83
        dec     eax
253
        dec     eax
84
        jz      redraw
254
        jz      redraw
85
        dec     eax
255
        dec     eax
86
        jz      key
256
        jz      key
87
; button - we have only one button, close
257
; button - we have only one button, close
88
exit:
258
exit:
89
        or      eax, -1
259
        or      eax, -1
90
        int     40h
260
        int     40h
91
redraw:
261
redraw:
92
; query kbd state from OS
262
; query kbd state from OS
93
        mov     al, 66
263
        mov     al, 66
94
        push    3
264
        push    3
95
        pop     ebx
265
        pop     ebx
96
        int     0x40
266
        int     0x40
97
        and     eax, 0x3F
267
        and     eax, 0x3F
98
        cmp     al, [ctrlstate]
268
        cmp     al, [ctrlstate]
99
        mov     [ctrlstate], al
269
        mov     [ctrlstate], al
100
        jz      @f
270
        jz      @f
101
        call    draw_keybar
271
        call    draw_keybar
102
@@:
272
@@:
103
        mov     al, 9
273
        mov     al, 9
104
        mov     ebx, procinfo
274
        mov     ebx, procinfo
105
        or      ecx, -1
275
        or      ecx, -1
106
        int     40h
276
        int     40h
107
; test if rolled up
277
; test if rolled up
108
; height of rolled up window is [skinh]+3
278
; height of rolled up window is [skinh]+3
109
        mov     eax, [ebx+46]
279
        mov     eax, [ebx+46]
110
        sub     eax, [skinh]
280
        sub     eax, [skinh]
111
        cmp     eax, 5
281
        cmp     eax, 5
112
        ja      @f
282
        ja      @f
113
        mov     al, 12
283
        mov     al, 12
114
        push    1
284
        push    1
115
        pop     ebx
285
        pop     ebx
116
        int     0x40
286
        int     0x40
117
        xor     eax, eax
287
        xor     eax, eax
118
; ebx, ecx, edi are ignored by function 0 after first redraw
288
; ebx, ecx, edi are ignored by function 0 after first redraw
119
        mov     edx, 0x53000000
289
        mov     edx, 0x53000000
120
        int     0x40
290
        int     0x40
121
        mov     al, 12
291
        mov     al, 12
122
        inc     ebx
292
        inc     ebx
123
        int     0x40
293
        int     0x40
124
        jmp     event
294
        jmp     event
125
@@:
295
@@:
126
        xor     ecx, ecx
296
        xor     ecx, ecx
127
        mov     eax, [ebx+42]
297
        mov     eax, [ebx+42]
128
        mov     [wnd_width], eax
298
        mov     [wnd_width], eax
129
        sub     eax, 5*2-1
299
        sub     eax, 5*2-1
130
        jae     @f
300
        jae     @f
131
        xor     eax, eax
301
        xor     eax, eax
132
@@:
302
@@:
133
        cdq
303
        cdq
134
        mov     esi, font_width
304
        mov     esi, font_width
135
        div     esi
305
        div     esi
136
        cmp     eax, 54
306
        cmp     eax, 54
137
        jae     @f
307
        jae     @f
138
        mov     al, 54
308
        mov     al, 54
139
        mov     ch, 1
309
        mov     ch, 1
140
@@:
310
@@:
141
        cmp     eax, 255
311
        cmp     eax, 255
142
        jbe     @f
312
        jbe     @f
143
        mov     eax, 255
313
        mov     eax, 255
144
        mov     ch, 1
314
        mov     ch, 1
145
@@:
315
@@:
146
        cmp     eax, [cur_width]
316
        cmp     eax, [cur_width]
147
        mov     [cur_width], eax
317
        mov     [cur_width], eax
148
        setnz   cl
318
        setnz   cl
149
        or      cl, ch
319
        or      cl, ch
150
        test    edx, edx
320
        test    edx, edx
151
        mov     [fill_width], edx
321
        mov     [fill_width], edx
152
        setnz   ch
322
        setnz   ch
153
        mov     eax, [ebx+46]
323
        mov     eax, [ebx+46]
154
        mov     [wnd_height], eax
324
        mov     [wnd_height], eax
155
        sub     eax, [skinh]
325
        sub     eax, [skinh]
156
        sub     eax, 5-1
326
        sub     eax, 5-1
157
        jns     @f
327
        jns     @f
158
        xor     eax, eax
328
        xor     eax, eax
159
@@:
329
@@:
160
        cdq
330
        cdq
161
        mov     esi, font_height
331
        mov     esi, font_height
162
        div     esi
332
        div     esi
163
        cmp     eax, 8
333
        cmp     eax, 8
164
        jae     @f
334
        jae     @f
165
        mov     al, 8
335
        mov     al, 8
166
        mov     cl, 1
336
        mov     cl, 1
167
@@:
337
@@:
168
        cmp     eax, 255
338
        cmp     eax, 255
169
        jbe     @f
339
        jbe     @f
170
        mov     eax, 255
340
        mov     eax, 255
171
        mov     cl, 1
341
        mov     cl, 1
172
@@:
342
@@:
173
        mov     [fill_height], edx
343
        mov     [fill_height], edx
174
        cmp     eax, [cur_height]
344
        cmp     eax, [cur_height]
175
        mov     [cur_height], eax
345
        mov     [cur_height], eax
176
        jnz     .resize
346
        jnz     .resize
177
        test    cl, cl
347
        test    cl, cl
178
        jnz     .resize
348
        jnz     .resize
179
        test    edx, edx
349
        test    edx, edx
180
        setnz   cl
350
        setnz   cl
181
        or      cl, ch
351
        or      cl, ch
182
        jz      @f
352
        jz      @f
183
        test    byte [ebx+70], 1
353
        test    byte [ebx+70], 1
184
        jnz     @f
354
        jnz     @f
185
.resize:
355
.resize:
186
        push    67
356
        push    67
187
        pop     eax
357
        pop     eax
188
        or      ebx, -1
358
        or      ebx, -1
189
        or      ecx, -1
359
        or      ecx, -1
190
        mov     edx, [cur_width]
360
        mov     edx, [cur_width]
191
        imul    edx, font_width
361
        imul    edx, font_width
192
        add     edx, 5*2-1
362
        add     edx, 5*2-1
193
        mov     esi, [cur_height]
363
        mov     esi, [cur_height]
194
        imul    esi, font_height
364
        imul    esi, font_height
195
        add     esi, [skinh]
365
        add     esi, [skinh]
196
        add     esi, 5-1
366
        add     esi, 5-1
197
        int     40h
367
        int     40h
198
.resize_draw:
368
.resize_draw:
-
 
369
        mov     ecx, [MemForImage]
-
 
370
        call    pgfree
-
 
371
        and     [MemForImage], 0
199
        call    init_console
372
        call    init_console
200
;        call    draw_window
373
;        call    draw_window
201
        call    draw_keybar
374
        call    draw_keybar
202
        mov     ebp, [active_screen_data]
375
        mov     ebp, [active_screen_data]
203
        mov     eax, [active_screen_vtable]
376
        mov     eax, [active_screen_vtable]
204
        call    dword [eax+screen_vtable.OnRedraw]
377
        call    dword [eax+screen_vtable.OnRedraw]
205
        jmp     event
378
        jmp     event
206
@@:
379
@@:
207
        call    draw_window
380
        call    draw_window
208
        jmp     event
381
        jmp     event
209
alt_f9:
382
alt_f9:
210
        cmp     [saved_width], -1
383
        cmp     [saved_width], -1
211
        jz      @f
384
        jz      @f
212
        mov     eax, [saved_width]
385
        mov     eax, [saved_width]
213
        mov     [cur_width], eax
386
        mov     [cur_width], eax
214
        or      [saved_width], -1
387
        or      [saved_width], -1
215
        mov     eax, [saved_height]
388
        mov     eax, [saved_height]
216
        mov     [cur_height], eax
389
        mov     [cur_height], eax
217
        or      [saved_height], -1
390
        or      [saved_height], -1
218
        jmp     redraw.resize
391
        jmp     redraw.resize
219
@@:
392
@@:
220
        push    48
393
        push    48
221
        pop     eax
394
        pop     eax
222
        push    5
395
        push    5
223
        pop     ebx
396
        pop     ebx
224
        int     0x40
397
        int     0x40
225
        push    eax
398
        push    eax
226
        sub     eax, [esp+2]
399
        sub     eax, [esp+2]
227
        inc     eax
400
        inc     eax
228
        movzx   eax, ax
401
        movzx   eax, ax
229
        sub     eax, 10
402
        sub     eax, 10
230
        xor     edx, edx
403
        xor     edx, edx
231
        mov     ecx, font_width
404
        mov     ecx, font_width
232
        div     ecx
405
        div     ecx
233
        xchg    [cur_width], eax
406
        xchg    [cur_width], eax
234
        mov     [saved_width], eax
407
        mov     [saved_width], eax
235
        mov     eax, ebx
408
        mov     eax, ebx
236
        shr     ebx, 16
409
        shr     ebx, 16
237
        sub     eax, ebx
410
        sub     eax, ebx
238
        sub     eax, 5-1
411
        sub     eax, 5-1
239
        sub     eax, [skinh]
412
        sub     eax, [skinh]
240
        xor     edx, edx
413
        xor     edx, edx
241
        mov     ecx, font_height
414
        mov     ecx, font_height
242
        div     ecx
415
        div     ecx
243
        xchg    [cur_height], eax
416
        xchg    [cur_height], eax
244
        mov     [saved_height], eax
417
        mov     [saved_height], eax
245
        mov     ecx, ebx
418
        mov     ecx, ebx
246
        pop     ebx
419
        pop     ebx
247
        shr     ebx, 16
420
        shr     ebx, 16
248
        mov     edx, [cur_width]
421
        mov     edx, [cur_width]
249
        imul    edx, font_width
422
        imul    edx, font_width
250
        add     edx, 5*2-1
423
        add     edx, 5*2-1
251
        mov     esi, [cur_height]
424
        mov     esi, [cur_height]
252
        imul    esi, font_height
425
        imul    esi, font_height
253
        add     esi, [skinh]
426
        add     esi, [skinh]
254
        add     esi, 4
427
        add     esi, 4
255
        push    67
428
        push    67
256
        pop     eax
429
        pop     eax
257
        int     0x40
430
        int     0x40
258
        jmp     redraw.resize_draw
431
        jmp     redraw.resize_draw
259
key:
432
key:
260
        mov     al, 2
433
        mov     al, 2
261
        int     40h
434
        int     40h
262
        test    al, al
435
        test    al, al
263
        jnz     event
436
        jnz     event
264
        xchg    al, ah
437
        xchg    al, ah
265
        cmp     al, 0xE0
438
        cmp     al, 0xE0
266
        jnz     @f
439
        jnz     @f
267
        mov     [bWasE0], 1
440
        mov     [bWasE0], 1
268
        jmp     event
441
        jmp     event
269
@@:
442
@@:
270
        xchg    ah, [bWasE0]
443
        xchg    ah, [bWasE0]
271
        mov     ebp, [active_screen_data]
444
        mov     ebp, [active_screen_data]
272
        mov     edx, [active_screen_vtable]
445
        mov     edx, [active_screen_vtable]
273
        cmp     al, 0x1D
446
        cmp     al, 0x1D
274
        jz      .ctrl_down
447
        jz      .ctrl_down
275
        cmp     al, 0x9D
448
        cmp     al, 0x9D
276
        jz      .ctrl_up
449
        jz      .ctrl_up
277
        cmp     al, 0x2A
450
        cmp     al, 0x2A
278
        jz      .lshift_down
451
        jz      .lshift_down
279
        cmp     al, 0xAA
452
        cmp     al, 0xAA
280
        jz      .lshift_up
453
        jz      .lshift_up
281
        cmp     al, 0x36
454
        cmp     al, 0x36
282
        jz      .rshift_down
455
        jz      .rshift_down
283
        cmp     al, 0xB6
456
        cmp     al, 0xB6
284
        jz      .rshift_up
457
        jz      .rshift_up
285
        cmp     al, 0x38
458
        cmp     al, 0x38
286
        jz      .alt_down
459
        jz      .alt_down
287
        cmp     al, 0xB8
460
        cmp     al, 0xB8
288
        jz      .alt_up
461
        jz      .alt_up
289
        call    [edx+screen_vtable.OnKey]
462
        call    [edx+screen_vtable.OnKey]
290
        jmp     event
463
        jmp     event
291
.ctrl_down:
464
.ctrl_down:
292
        test    ah, ah
465
        test    ah, ah
293
        jnz     .rctrl_down
466
        jnz     .rctrl_down
294
        or      [ctrlstate], 4
467
        or      [ctrlstate], 4
295
        jmp     .keybar
468
        jmp     .keybar
296
.rctrl_down:
469
.rctrl_down:
297
        or      [ctrlstate], 8
470
        or      [ctrlstate], 8
298
        jmp     .keybar
471
        jmp     .keybar
299
.ctrl_up:
472
.ctrl_up:
300
        test    ah, ah
473
        test    ah, ah
301
        jnz     .rctrl_up
474
        jnz     .rctrl_up
302
        and     [ctrlstate], not 4
475
        and     [ctrlstate], not 4
303
        jmp     .keybar
476
        jmp     .keybar
304
.rctrl_up:
477
.rctrl_up:
305
        and     [ctrlstate], not 8
478
        and     [ctrlstate], not 8
306
.keybar:
479
.keybar:
307
        call    draw_keybar
480
        call    draw_keybar
308
        call    draw_image
481
        call    draw_image
309
@@:     jmp     event
482
@@:     jmp     event
310
.lshift_down:
483
.lshift_down:
311
; ignore E0 2A sequence
484
; ignore E0 2A sequence
312
; e.g. arrow keys with NumLock on generate sequence E0 2A E0 xx / E0 xx+80 E0 AA
485
; e.g. arrow keys with NumLock on generate sequence E0 2A E0 xx / E0 xx+80 E0 AA
313
; where xx is scancode, so we can safely ignore E0 2A
486
; where xx is scancode, so we can safely ignore E0 2A
314
        test    ah, ah
487
        test    ah, ah
315
        jnz     @b
488
        jnz     @b
316
        or      [ctrlstate], 1
489
        or      [ctrlstate], 1
317
        jmp     .keybar
490
        jmp     .keybar
318
.lshift_up:
491
.lshift_up:
319
; ignore E0 AA sequence
492
; ignore E0 AA sequence
320
        test    ah, ah
493
        test    ah, ah
321
        jnz     @b
494
        jnz     @b
322
        and     [ctrlstate], not 1
495
        and     [ctrlstate], not 1
323
        jmp     .keybar
496
        jmp     .keybar
324
.rshift_down:
497
.rshift_down:
325
        or      [ctrlstate], 2
498
        or      [ctrlstate], 2
326
        jmp     .keybar
499
        jmp     .keybar
327
.rshift_up:
500
.rshift_up:
328
        and     [ctrlstate], not 2
501
        and     [ctrlstate], not 2
329
        jmp     .keybar
502
        jmp     .keybar
330
.alt_down:
503
.alt_down:
331
        test    ah, ah
504
        test    ah, ah
332
        jnz     .ralt_down
505
        jnz     .ralt_down
333
        or      [ctrlstate], 0x10
506
        or      [ctrlstate], 0x10
334
        jmp     .keybar
507
        jmp     .keybar
335
.ralt_down:
508
.ralt_down:
336
        or      [ctrlstate], 0x20
509
        or      [ctrlstate], 0x20
337
        jmp     .keybar
510
        jmp     .keybar
338
.alt_up:
511
.alt_up:
339
        test    ah, ah
512
        test    ah, ah
340
        jnz     .ralt_up
513
        jnz     .ralt_up
341
        and     [ctrlstate], not 0x10
514
        and     [ctrlstate], not 0x10
342
        jmp     .keybar
515
        jmp     .keybar
343
.ralt_up:
516
.ralt_up:
344
        and     [ctrlstate], not 0x20
517
        and     [ctrlstate], not 0x20
345
        jmp     .keybar
518
        jmp     .keybar
346
 
519
 
347
process_ctrl_keys:
520
process_ctrl_keys:
348
        cmp     byte [esi], 0
521
        cmp     byte [esi], 0
349
        jz      .done
522
        jz      .done
350
        push    ecx
523
        push    ecx
351
        cmp     al, [esi]
524
        cmp     al, [esi]
352
        jz      .check
525
        jz      .check
353
.cont:
526
.cont:
354
        pop     ecx
527
        pop     ecx
355
        add     esi, 8
528
        add     esi, 8
356
        jmp     process_ctrl_keys
529
        jmp     process_ctrl_keys
357
.done:
530
.done:
358
        stc
531
        stc
359
        ret
532
        ret
360
.check:
533
.check:
361
        mov     cl, 0
534
        mov     cl, 0
362
        call    .check_ctrlkey
535
        call    .check_ctrlkey
363
        jc      .cont
536
        jc      .cont
364
        mov     cl, 2
537
        mov     cl, 2
365
        call    .check_ctrlkey
538
        call    .check_ctrlkey
366
        jc      .cont
539
        jc      .cont
367
        mov     cl, 4
540
        mov     cl, 4
368
        call    .check_ctrlkey
541
        call    .check_ctrlkey
369
        jc      .cont
542
        jc      .cont
370
        pop     ecx
543
        pop     ecx
371
        call    dword [esi+4]
544
        call    dword [esi+4]
372
        clc
545
        clc
373
        ret
546
        ret
374
.check_ctrlkey:
547
.check_ctrlkey:
375
        push    eax edx
548
        push    eax edx
376
        movzx   edx, [ctrlstate]
549
        movzx   edx, [ctrlstate]
377
        shr     edx, cl
550
        shr     edx, cl
378
        add     cl, cl
551
        add     cl, cl
379
        movzx   eax, word [esi+2]
552
        movzx   eax, word [esi+2]
380
        shr     eax, cl
553
        shr     eax, cl
381
        and     eax, 15
554
        and     eax, 15
382
        cmp     al, ctrlkey_tests_num
555
        cmp     al, ctrlkey_tests_num
383
        jae     .fail
556
        jae     .fail
384
        xchg    eax, edx
557
        xchg    eax, edx
385
        and     al, 3
558
        and     al, 3
386
        call    [ctrlkey_tests + edx*4]
559
        call    [ctrlkey_tests + edx*4]
387
        cmp     al, 1
560
        cmp     al, 1
388
        pop     edx eax
561
        pop     edx eax
389
        ret
562
        ret
390
.fail:
563
.fail:
391
        stc
564
        stc
392
        pop     edx eax
565
        pop     edx eax
393
        ret
566
        ret
394
 
567
 
395
ctrlkey_test0:
568
ctrlkey_test0:
396
        test    al, al
569
        test    al, al
397
        setz    al
570
        setz    al
398
        ret
571
        ret
399
ctrlkey_test1:
572
ctrlkey_test1:
400
        test    al, al
573
        test    al, al
401
        setnp   al
574
        setnp   al
402
        ret
575
        ret
403
ctrlkey_test2:
576
ctrlkey_test2:
404
        cmp     al, 3
577
        cmp     al, 3
405
        setz    al
578
        setz    al
406
        ret
579
        ret
407
ctrlkey_test3:
580
ctrlkey_test3:
408
        cmp     al, 1
581
        cmp     al, 1
409
        setz    al
582
        setz    al
410
        ret
583
        ret
411
ctrlkey_test4:
584
ctrlkey_test4:
412
        cmp     al, 2
585
        cmp     al, 2
413
        setz    al
586
        setz    al
414
        ret
587
        ret
415
 
588
 
416
new_screen:
589
new_screen:
-
 
590
; in: ecx=sizeof(screen data), edx->vtable
-
 
591
; out: ebp=pointer or NULL, eax!=0 if successful
-
 
592
; destroys ebx,ecx
417
        call    xmalloc
593
        call    xpgalloc
418
        test    eax, eax
594
        test    eax, eax
419
        jnz     @f
595
        jnz     @f
420
        ret
596
        ret
421
@@:
597
@@:
422
        mov     ebp, eax
598
        mov     ebp, eax
423
        mov     ebx, [num_screens]
-
 
424
        inc     ebx
-
 
425
        shl     ebx, 3
-
 
426
        mov     eax, [screens]
599
        mov     eax, [screens]
-
 
600
        mov     ecx, [num_screens]
-
 
601
        inc     ecx
-
 
602
        shl     ecx, 3
-
 
603
        test    ecx, 0xFFF
-
 
604
        jnz     .norealloc
-
 
605
        push    edx
-
 
606
        mov     edx, eax
427
        call    xrealloc
607
        call    xpgrealloc
-
 
608
        pop     edx
428
        test    eax, eax
609
        test    eax, eax
429
        jnz     @f
610
        jnz     @f
430
        mov     eax, ebp
611
        mov     ecx, ebp
431
        call    mf_free
612
        call    pgfree
432
        xor     eax, eax
613
        xor     eax, eax
433
        ret
614
        ret
434
@@:
615
@@:
435
        mov     [screens], eax
616
        mov     [screens], eax
-
 
617
.norealloc:
436
        inc     [num_screens]
618
        inc     [num_screens]
437
        mov     [eax+ebx-8], edx
619
        mov     [eax+ecx-8], edx
438
        mov     [eax+ebx-4], ebp
620
        mov     [eax+ecx-4], ebp
439
        mov     eax, [num_screens]
621
        mov     eax, [num_screens]
440
        dec     eax
622
        dec     eax
441
        mov     [active_screen], eax
623
        mov     [active_screen], eax
442
        mov     [active_screen_vtable], edx
624
        mov     [active_screen_vtable], edx
443
        mov     [active_screen_data], ebp
625
        mov     [active_screen_data], ebp
444
        jmp     draw_keybar
626
        jmp     draw_keybar
445
 
627
 
446
next_screen:
628
next_screen:
447
        mov     eax, [active_screen]
629
        mov     eax, [active_screen]
448
        inc     eax
630
        inc     eax
449
        cmp     eax, [num_screens]
631
        cmp     eax, [num_screens]
450
        jnz     @f
632
        jnz     @f
451
        xor     eax, eax
633
        xor     eax, eax
452
@@:     mov     [active_screen], eax
634
@@:     mov     [active_screen], eax
453
        jmp     change_screen
635
        jmp     change_screen
454
 
636
 
455
delete_active_screen:
637
delete_active_screen:
456
        mov     edi, [screens]
638
        mov     edi, [screens]
457
        mov     eax, [active_screen]
639
        mov     eax, [active_screen]
458
        shl     eax, 3
640
        shl     eax, 3
459
        add     edi, eax
641
        add     edi, eax
460
        push    dword [edi+4]
642
        push    dword [edi+4]
461
        lea     esi, [edi+8]
643
        lea     esi, [edi+8]
462
        mov     ecx, [num_screens]
644
        mov     ecx, [num_screens]
463
        sub     ecx, [active_screen]
645
        sub     ecx, [active_screen]
464
        dec     ecx
646
        dec     ecx
465
        add     ecx, ecx
647
        add     ecx, ecx
466
        rep     movsd
648
        rep     movsd
467
        dec     [num_screens]
649
        dec     [num_screens]
468
        mov     ebx, [num_screens]
650
        mov     ecx, [num_screens]
469
        shl     ebx, 3
651
        shl     ecx, 3
-
 
652
        test    ecx, 0xFFF
-
 
653
        jnz     .norealloc
470
        mov     eax, [screens]
654
        mov     edx, [screens]
471
        call    mf_realloc      ; must succeed, because we decrease size
655
        call    pgrealloc               ; must succeed, because we decrease size
-
 
656
        mov     [screens], eax
-
 
657
.norealloc:
472
        pop     eax
658
        pop     ecx
473
        call    mf_free
659
        call    pgfree
474
        and     [active_screen], 0
660
        and     [active_screen], 0
475
 
661
 
476
change_screen:
662
change_screen:
477
        pusha
663
        pusha
478
        mov     eax, [active_screen]
664
        mov     eax, [active_screen]
479
        mov     esi, [screens]
665
        mov     esi, [screens]
480
        mov     ebp, [esi+eax*8+4]
666
        mov     ebp, [esi+eax*8+4]
481
        mov     eax, [esi+eax*8]
667
        mov     eax, [esi+eax*8]
482
        mov     [active_screen_vtable], eax
668
        mov     [active_screen_vtable], eax
483
        mov     [active_screen_data], ebp
669
        mov     [active_screen_data], ebp
484
        call    draw_keybar
670
        call    draw_keybar
485
        call    [eax+screen_vtable.OnRedraw]
671
        call    [eax+screen_vtable.OnRedraw]
486
        popa
672
        popa
487
        ret
673
        ret
488
 
674
 
489
F12:
675
F12:
490
        mov     eax, [cur_width]
676
        mov     eax, [cur_width]
491
        add     eax, 8
677
        add     eax, 8
492
        mov     esi, eax
678
        mov     esi, eax
493
        mul     [num_screens]
679
        mul     [num_screens]
-
 
680
        mov     ecx, eax
494
        call    xmalloc
681
        call    xpgalloc
495
        test    eax, eax
682
        test    eax, eax
496
        jnz     @f
683
        jnz     @f
497
        ret
684
        ret
498
@@:
685
@@:
499
        mov     ebx, eax
686
        mov     ebx, eax
500
        mov     edi, eax
687
        mov     edi, eax
501
        xor     ecx, ecx
688
        xor     ecx, ecx
502
.next:
689
.next:
503
        xor     eax, eax
690
        xor     eax, eax
504
        stosd
691
        stosd
505
        inc     ecx
692
        inc     ecx
506
        cmp     ecx, [num_screens]
693
        cmp     ecx, [num_screens]
507
        jz      @f
694
        jz      @f
508
        lea     eax, [edi+esi-4]
695
        lea     eax, [edi+esi-4]
509
        mov     dword [edi-4], eax
696
        mov     dword [edi-4], eax
510
@@:
697
@@:
511
        xor     eax, eax
698
        xor     eax, eax
512
        stosd
699
        stosd
513
        dec     ecx
700
        dec     ecx
514
        jz      @f
701
        jz      @f
515
        lea     eax, [edi-8]
702
        lea     eax, [edi-8]
516
        sub     eax, esi
703
        sub     eax, esi
517
        mov     dword [edi-4], eax
704
        mov     dword [edi-4], eax
518
@@:
705
@@:
519
        mov     al, '&'
706
        mov     al, '&'
520
        stosb
707
        stosb
521
        cmp     ecx, 36
708
        cmp     ecx, 36
522
        jae     .noletter
709
        jae     .noletter
523
        lea     eax, [ecx+'0']
710
        lea     eax, [ecx+'0']
524
        cmp     al, '9'
711
        cmp     al, '9'
525
        jbe     @f
712
        jbe     @f
526
        add     al, 7
713
        add     al, 7
527
@@:
714
@@:
528
        stosb
715
        stosb
529
        mov     al, '.'
716
        mov     al, '.'
530
        stosb
717
        stosb
531
        jmp     .letter_done
718
        jmp     .letter_done
532
.noletter:
719
.noletter:
533
        mov     al, ' '
720
        mov     al, ' '
534
        stosb
721
        stosb
535
        stosb
722
        stosb
536
.letter_done:
723
.letter_done:
537
        mov     al, ' '
724
        mov     al, ' '
538
        stosb
725
        stosb
539
        pushad
726
        pushad
540
        mov     eax, [screens]
727
        mov     eax, [screens]
541
        mov     ebp, [eax+ecx*8+4]
728
        mov     ebp, [eax+ecx*8+4]
542
        mov     eax, [eax+ecx*8]
729
        mov     eax, [eax+ecx*8]
543
        mov     ecx, [cur_width]
730
        mov     ecx, [cur_width]
544
        sub     ecx, 12
731
        sub     ecx, 12
545
        call    [eax + screen_vtable.getname]
732
        call    [eax + screen_vtable.getname]
546
        popad
733
        popad
547
        sub     edi, 4
734
        sub     edi, 4
548
        add     edi, [cur_width]
735
        add     edi, [cur_width]
549
        inc     ecx
736
        inc     ecx
550
        cmp     ecx, [num_screens]
737
        cmp     ecx, [num_screens]
551
        jb      .next
738
        jb      .next
552
        mov     eax, [active_screen]
739
        mov     eax, [active_screen]
553
        mul     esi
740
        mul     esi
554
        add     eax, ebx
741
        add     eax, ebx
555
        push    1
742
        push    1
556
        push    aScreens
743
        push    dword aScreens
557
        push    eax
744
        push    eax
558
        call    menu
745
        call    menu
559
        cmp     eax, -1
746
        cmp     eax, -1
560
        jz      @f
747
        jz      @f
561
        sub     eax, ebx
748
        sub     eax, ebx
562
        div     esi
749
        div     esi
563
        mov     [active_screen], eax
750
        mov     [active_screen], eax
564
@@:
751
@@:
565
        mov     eax, ebx
752
        mov     ecx, ebx
566
        call    mf_free
753
        call    pgfree
567
        jmp     change_screen
754
        jmp     change_screen
568
 
755
 
569
panels_OnKey:
756
panels_OnKey:
570
        mov     ebp, [active_panel]
757
        mov     ebp, [active_panel]
571
        mov     ecx, [ebp + panel1_index - panel1_data]
758
        mov     ecx, [ebp + panel1_index - panel1_data]
572
        mov     edx, [ebp + panel1_start - panel1_data]
759
        mov     edx, [ebp + panel1_start - panel1_data]
573
        mov     ebx, [ebp + panel1_colst - panel1_data]
760
        mov     ebx, [ebp + panel1_colst - panel1_data]
574
        add     ebx, edx
761
        add     ebx, edx
575
        mov     esi, panels_ctrlkeys
762
        mov     esi, panels_ctrlkeys
576
        jmp     process_ctrl_keys
763
        jmp     process_ctrl_keys
577
.ret:
764
.ret:
578
        ret
765
        ret
579
.up:
766
.up:
580
        jecxz   .ret
767
        jecxz   .ret
581
        dec     ecx
768
        dec     ecx
582
        mov     [ebp + panel1_index - panel1_data], ecx
769
        mov     [ebp + panel1_index - panel1_data], ecx
583
        cmp     ecx, edx
770
        cmp     ecx, edx
584
        jae     .done_redraw
771
        jae     .done_redraw
585
        mov     [ebp + panel1_start - panel1_data], ecx
772
        mov     [ebp + panel1_start - panel1_data], ecx
586
.done_redraw:
773
.done_redraw:
587
;        call    draw_panel
774
;        call    draw_panel
588
;        ret
775
;        ret
589
        jmp     draw_panel
776
        jmp     draw_panel
-
 
777
.insert:
-
 
778
        lea     eax, [ecx*4]
-
 
779
        add     eax, [ebp + panel1_files - panel1_data]
-
 
780
        mov     eax, [eax]
-
 
781
        cmp     word [eax+40], '..'
-
 
782
        jnz     @f
-
 
783
        cmp     byte [eax+42], 0
-
 
784
        jz      .insert.down
-
 
785
@@:
-
 
786
        xor     byte [eax+303], 1
-
 
787
        mov     edx, [eax+32]
-
 
788
        test    byte [eax+303], 1
-
 
789
        mov     eax, [eax+36]
-
 
790
        jnz     .insert.increase
-
 
791
        sub     dword [ebp + panel1_selected_size - panel1_data], edx
-
 
792
        sbb     dword [ebp + panel1_selected_size+4 - panel1_data], eax
-
 
793
        dec     [ebp + panel1_selected_num - panel1_data]
-
 
794
        jmp     .insert.down
-
 
795
.insert.increase:
-
 
796
        add     dword [ebp + panel1_selected_size - panel1_data], edx
-
 
797
        adc     dword [ebp + panel1_selected_size+4 - panel1_data], eax
-
 
798
        inc     [ebp + panel1_selected_num - panel1_data]
-
 
799
.insert.down:
-
 
800
        inc     ecx
-
 
801
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
-
 
802
        jae     .done_redraw
-
 
803
        jmp     @f
590
.down:
804
.down:
591
        inc     ecx
805
        inc     ecx
592
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
806
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
593
        jae     .ret
807
        jae     .ret
-
 
808
@@:
594
        mov     [ebp + panel1_index - panel1_data], ecx
809
        mov     [ebp + panel1_index - panel1_data], ecx
595
        cmp     ecx, ebx
810
        cmp     ecx, ebx
596
        jb      .done_redraw
811
        jb      .done_redraw
597
        sub     ecx, [ebp + panel1_colst - panel1_data]
812
        sub     ecx, [ebp + panel1_colst - panel1_data]
598
        inc     ecx
813
        inc     ecx
599
        mov     [ebp + panel1_start - panel1_data], ecx
814
        mov     [ebp + panel1_start - panel1_data], ecx
600
        jmp     .done_redraw
815
        jmp     .done_redraw
601
.left:
816
.left:
-
 
817
        test    ecx, ecx
602
        jecxz   .ret
818
        jnz     @f
-
 
819
        ret
-
 
820
@@:
603
        sub     ecx, [ebp + panel1_colsz - panel1_data]
821
        mov     eax, [ebp + panel1_colsz - panel1_data]
-
 
822
        sub     ecx, eax
604
        jae     @f
823
        jae     @f
605
        xor     ecx, ecx
824
        xor     ecx, ecx
606
@@:
825
@@:
607
        mov     [ebp + panel1_index - panel1_data], ecx
826
        mov     [ebp + panel1_index - panel1_data], ecx
-
 
827
.finalize_left:
608
        cmp     ecx, edx
828
        cmp     ecx, edx
609
        jae     .done_redraw
829
        jae     .done_redraw
610
        sub     edx, [ebp + panel1_colsz - panel1_data]
830
        sub     edx, eax
611
        jae     @f
831
        jae     @f
612
        xor     edx, edx
832
        xor     edx, edx
613
@@:
833
@@:
614
        mov     [ebp + panel1_start - panel1_data], edx
834
        mov     [ebp + panel1_start - panel1_data], edx
615
        jmp     .done_redraw
835
        jmp     .done_redraw
-
 
836
.pgup:
-
 
837
        mov     eax, [ebp + panel1_colst - panel1_data]
-
 
838
        dec     eax
-
 
839
        jnz     @f
-
 
840
        inc     eax
-
 
841
@@:
-
 
842
        test    ecx, ecx
-
 
843
        jnz     @f
-
 
844
        ret
-
 
845
@@:
-
 
846
        sub     ecx, eax
-
 
847
        jae     @f
-
 
848
        xor     ecx, ecx
-
 
849
@@:
-
 
850
        mov     [ebp + panel1_index - panel1_data], ecx
-
 
851
        dec     ecx
-
 
852
        jmp     .finalize_left
616
.right:
853
.right:
617
        add     ecx, [ebp + panel1_colsz - panel1_data]
854
        mov     eax, [ebp + panel1_colsz - panel1_data]
-
 
855
        add     ecx, eax
618
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
856
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
619
        jb      @f
857
        jb      @f
620
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
858
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
621
        dec     ecx
859
        dec     ecx
622
@@:
860
@@:
623
        mov     [ebp + panel1_index - panel1_data], ecx
861
        mov     [ebp + panel1_index - panel1_data], ecx
-
 
862
.finalize_right:
624
        cmp     ecx, ebx
863
        cmp     ecx, ebx
625
        jb      .done_redraw
864
        jb      .done_redraw
626
        add     ebx, [ebp + panel1_colsz - panel1_data]
865
        add     ebx, eax
627
        cmp     ebx, [ebp + panel1_numfiles - panel1_data]
866
        cmp     ebx, [ebp + panel1_numfiles - panel1_data]
628
        jbe     @f
867
        jbe     @f
629
        mov     ebx, [ebp + panel1_numfiles - panel1_data]
868
        mov     ebx, [ebp + panel1_numfiles - panel1_data]
630
@@:
869
@@:
631
        sub     ebx, [ebp + panel1_colst - panel1_data]
870
        sub     ebx, [ebp + panel1_colst - panel1_data]
632
        jae     @f
871
        jae     @f
633
        xor     ebx, ebx
872
        xor     ebx, ebx
634
@@:
873
@@:
635
        mov     [ebp + panel1_start - panel1_data], ebx
874
        mov     [ebp + panel1_start - panel1_data], ebx
636
        jmp     .done_redraw
875
        jmp     .done_redraw
-
 
876
.pgdn:
-
 
877
        mov     eax, [ebp + panel1_colst - panel1_data]
-
 
878
        dec     eax
-
 
879
        jnz     @f
-
 
880
        inc     eax
-
 
881
@@:
-
 
882
        add     ecx, eax
-
 
883
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
-
 
884
        jb      @f
-
 
885
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
-
 
886
        dec     ecx
-
 
887
@@:
-
 
888
        mov     [ebp + panel1_index - panel1_data], ecx
-
 
889
        inc     ecx
-
 
890
        jmp     .finalize_right
637
.tab:
891
.tab:
638
        xor     [active_panel], panel1_data xor panel2_data
892
        xor     [active_panel], panel1_data xor panel2_data
639
        call    draw_cmdbar
893
        call    draw_cmdbar
640
        call    draw_panel
894
        call    draw_panel
641
        mov     ebp, [active_panel]
895
        mov     ebp, [active_panel]
642
        jmp     .done_redraw
896
        jmp     .done_redraw
643
.home:
897
.home:
644
        and     [ebp + panel1_start - panel1_data], 0
898
        and     [ebp + panel1_start - panel1_data], 0
645
        and     [ebp + panel1_index - panel1_data], 0
899
        and     [ebp + panel1_index - panel1_data], 0
646
        jmp     .done_redraw
900
        jmp     .done_redraw
647
.end:
901
.end:
648
        mov     eax, [ebp + panel1_numfiles - panel1_data]
902
        mov     eax, [ebp + panel1_numfiles - panel1_data]
649
        dec     eax
903
        dec     eax
650
        mov     [ebp + panel1_index - panel1_data], eax
904
        mov     [ebp + panel1_index - panel1_data], eax
651
        inc     eax
905
        inc     eax
652
        sub     eax, [ebp + panel1_colst - panel1_data]
906
        sub     eax, [ebp + panel1_colst - panel1_data]
653
        jae     @f
907
        jae     @f
654
        xor     eax, eax
908
        xor     eax, eax
655
@@:
909
@@:
656
        mov     [ebp + panel1_start - panel1_data], eax
910
        mov     [ebp + panel1_start - panel1_data], eax
657
        jmp     .done_redraw
911
        jmp     .done_redraw
658
.enter:
912
.enter:
659
        call    get_curfile_folder_entry
913
        call    get_curfile_folder_entry
660
        test    byte [ecx], 10h
914
        test    byte [ecx], 10h
661
        jnz     .enter_folder
915
        jnz     .enter_folder
662
        call    find_extension
916
        call    find_extension
663
        jc      .run_app
917
        jc      .run_app
664
        jnz     .run_app
-
 
665
.run_association:
918
.run_association:
-
 
919
        cmp     byte [edi], 0
-
 
920
        jz      .l1
-
 
921
        cmp     byte [edi], ';'
-
 
922
        jnz     @f
-
 
923
.l1:
-
 
924
        ret
-
 
925
@@:
666
        mov     eax, [edi+4]
926
        mov     esi, edi
-
 
927
@@:
-
 
928
        lodsb
-
 
929
        test    al, al
-
 
930
        jz      @f
-
 
931
        cmp     al, ';'
-
 
932
        jnz     @b
-
 
933
        dec     esi
-
 
934
        mov     byte [esi], 0
-
 
935
        mov     [restore_semicolon], esi
-
 
936
@@:
667
.run_association2:
937
.run_association2:
668
        mov     [execparams], execdata
938
        mov     [execparams], execdata
669
        mov     [execptr], eax
939
        mov     [execptr], edi
670
        jmp     .dorun
940
        jmp     .dorun
671
.run_app:
941
.run_app:
672
        mov     [execptr], execdata
942
        mov     [execptr], execdata
673
        and     [execparams], 0
943
        and     [execparams], 0
674
.dorun:
944
.dorun:
675
        lea     esi, [ebp + panel1_dir - panel1_data]
945
        lea     esi, [ebp + panel1_dir - panel1_data]
676
        mov     edi, execdata
946
        mov     edi, execdata
677
@@:
947
@@:
678
        lodsb
948
        lodsb
679
        test    al, al
949
        test    al, al
680
        jz      @f
950
        jz      @f
681
        stosb
951
        stosb
682
        cmp     edi, execdataend-1
952
        cmp     edi, execdataend-1
683
        jae     .bigfilename
953
        jae     .bigfilename
684
        jmp     @b
954
        jmp     @b
685
@@:
955
@@:
686
        lea     esi, [ecx+40]
956
        lea     esi, [ecx+40]
687
        mov     al, '/'
957
        mov     al, '/'
688
        stosb
958
        stosb
689
@@:
959
@@:
690
        lodsb
960
        lodsb
691
        stosb
961
        stosb
692
        cmp     edi, execdataend
962
        cmp     edi, execdataend
693
        ja      .bigfilename
963
        ja      .bigfilename
694
        test    al, al
964
        test    al, al
695
        jnz     @b
965
        jnz     @b
696
; for fasm call - special handling, because
966
; for fasm call - special handling, because
697
; 1) fasm command line convention is different : fasm infile,outfile[,path] rather than tinypad infile
967
; 1) fasm command line convention is different : fasm infile,outfile[,path] rather than tinypad infile
698
; 2) fasm will probably create new file in directory, so we want to reload panel data
968
; 2) fasm will probably create new file in directory, so we want to reload panel data
699
        xor     edx, edx
969
        xor     edx, edx
700
        cmp     [execparams], edx
970
        cmp     [execparams], edx
701
        jz      .nofasm
971
        jz      .nofasm
-
 
972
        mov     esi, [execptr]
-
 
973
@@:
-
 
974
        lodsb
-
 
975
        test    al, al
-
 
976
        jnz     @b
-
 
977
        mov     eax, [esi-5]
-
 
978
        or      eax, 0x20202020
702
        cmp     [execptr], fasm
979
        cmp     eax, 'fasm'
703
        jnz     .nofasm
980
        jnz     .nofasm
704
        cmp     edi, execdata+(execdataend-execdata)/2
981
        cmp     edi, execdata+(execdataend-execdata)/2
705
        ja      .bigfilename
982
        ja      .bigfilename
706
        mov     esi, execdata
983
        mov     esi, execdata
707
@@:
984
@@:
708
        lodsb
985
        lodsb
709
        stosb
986
        stosb
710
        test    al, al
987
        test    al, al
711
        jnz     @b
988
        jnz     @b
712
        mov     byte [esi-1], ','
989
        mov     byte [esi-1], ','
713
        inc     edx
990
        inc     edx
714
; output file: no extension if input file has extension, '.bin' otherwise
991
; output file: no extension if input file has extension, '.bin' otherwise
715
        push    edi
992
        push    edi
716
@@:
993
@@:
717
        dec     edi
994
        dec     edi
718
        cmp     byte [edi], '.'
995
        cmp     byte [edi], '.'
719
        jz      .ptfound
996
        jz      .ptfound
720
        cmp     byte [edi], '/'
997
        cmp     byte [edi], '/'
721
        jnz     @b
998
        jnz     @b
722
        pop     edi
999
        pop     edi
723
        cmp     edi, execdataend-4
1000
        cmp     edi, execdataend-4
724
        ja      .bigfilename
1001
        ja      .bigfilename
725
        mov     dword [edi-1], '.bin'
1002
        mov     dword [edi-1], '.bin'
726
        mov     byte [edi+3], 0
1003
        mov     byte [edi+3], 0
727
        jmp     .nofasm
1004
        jmp     .nofasm
728
.ptfound:
1005
.ptfound:
729
        mov     byte [edi], 0
1006
        mov     byte [edi], 0
730
        pop     edi
1007
        pop     edi
731
.nofasm:
1008
.nofasm:
732
        mov     ebx, execinfo
1009
        mov     ebx, execinfo
733
; if command line is more than 256 symbols, the kernel will truncate it
1010
; if command line is more than 256 symbols, the kernel will truncate it
734
; we does not want this!
1011
; we does not want this!
735
; N.B. We know that command line is either NULL or execdata, which is always ASCIIZ string,
1012
; N.B. We know that command line is either NULL or execdata, which is always ASCIIZ string,
736
;      but can be up to 1023 symbols
1013
;      but can be up to 1023 symbols
737
        mov     esi, [ebx+8]
1014
        mov     esi, [ebx+8]
738
        test    esi, esi
1015
        test    esi, esi
739
        jz      .cmdlinelenok
1016
        jz      .cmdlinelenok
740
@@:
1017
@@:
741
        lodsb
1018
        lodsb
742
        test    al, al
1019
        test    al, al
743
        jnz     @b
1020
        jnz     @b
744
        sub     esi, [ebx+8]
1021
        sub     esi, [ebx+8]
745
        dec     esi
1022
        dec     esi
746
        cmp     esi, 256
1023
        cmp     esi, 256
747
        ja      .bigcmdline
1024
        ja      .bigcmdline
748
.cmdlinelenok:
1025
.cmdlinelenok:
749
        push    70
1026
        push    70
750
        pop     eax
1027
        pop     eax
751
        int     40h
1028
        int     40h
-
 
1029
        xor     esi, esi
-
 
1030
        xchg    esi, [restore_semicolon]
-
 
1031
        test    esi, esi
-
 
1032
        jz      @f
-
 
1033
        mov     byte [esi], ';'
-
 
1034
@@:
752
        neg     eax
1035
        neg     eax
753
        js      @f
1036
        js      @f
754
        push    aContinue
1037
        push    dword aContinue
755
        mov     esi, esp
1038
        mov     esi, esp
756
        call    get_error_msg
1039
        call    get_error_msg
757
        push    eax
1040
        push    eax
758
        push    aRunError
1041
        push    dword aRunError
759
        mov     eax, esp
1042
        mov     eax, esp
760
        push    esi
1043
        push    esi
761
        push    1
1044
        push    1
762
        push    eax
1045
        push    eax
763
        push    2
1046
        push    2
764
        push    -1
1047
        push    -1
765
        push    -1
1048
        push    -1
766
        push    aError
1049
        push    dword aError
767
        call    SayErr
1050
        call    SayErr
768
        add     esp, 3*4
1051
        add     esp, 3*4
769
        ret
1052
        ret
770
@@:
1053
@@:
771
        test    edx, edx
1054
        test    edx, edx
772
        jz      @f
1055
        jz      @f
773
        push    5
1056
        push    5
774
        pop     eax
1057
        pop     eax
775
        push    20
1058
        push    20
776
        pop     ebx
1059
        pop     ebx
777
        int     0x40
1060
        int     0x40
778
        jmp     .ctrl_r
1061
        jmp     .ctrl_r
779
@@:
1062
@@:
780
        ret
1063
        ret
781
.bigfilename3:
1064
.bigfilename3:
782
        pop     esi
1065
        pop     esi
783
.bigfilename2:
1066
.bigfilename2:
784
        pop     esi
1067
        pop     esi
785
.bigfilename:
1068
.bigfilename:
786
        mov     eax, aFileNameTooBig
1069
        mov     eax, aFileNameTooBig
-
 
1070
.l2:
-
 
1071
        xor     esi, esi
-
 
1072
        xchg    esi, [restore_semicolon]
-
 
1073
        test    esi, esi
-
 
1074
        jz      @f
-
 
1075
        mov     byte [esi], ';'
787
@@:
1076
@@:
788
        push    aContinue
1077
        push    dword aContinue
789
        mov     esi, esp
1078
        mov     esi, esp
790
        push    eax
1079
        push    eax
791
        mov     eax, esp
1080
        mov     eax, esp
792
        push    esi
1081
        push    esi
793
        push    1
1082
        push    1
794
        push    eax
1083
        push    eax
795
        push    1
1084
        push    1
796
        push    -1
1085
        push    -1
797
        push    -1
1086
        push    -1
798
        push    aError
1087
        push    dword aError
799
        call    SayErr
1088
        call    SayErr
800
        add     esp, 2*4
1089
        add     esp, 2*4
801
        ret
1090
        ret
802
.bigcmdline:
1091
.bigcmdline:
803
        mov     eax, aCmdLineTooBig
1092
        mov     eax, aCmdLineTooBig
804
        jmp     @b
1093
        jmp     .l2
805
.bigfoldername2:
1094
.bigfoldername2:
806
        mov     byte [ecx], 0
1095
        mov     byte [ecx], 0
807
.bigfoldername:
1096
.bigfoldername:
808
        mov     eax, aFolderNameTooBig
1097
        mov     eax, aFolderNameTooBig
809
        jmp     @b
1098
        jmp     .l2
810
.copytoself:
1099
.copytoself:
811
        mov     eax, aCannotCopyToSelf
1100
        mov     eax, aCannotCopyToSelf
812
        jmp     @b
1101
        jmp     .l2
813
.enter_folder:
1102
.enter_folder:
814
        lea     esi, [ecx+40]
1103
        lea     esi, [ecx+40]
815
        cmp     word [esi], '..'
1104
        cmp     word [esi], '..'
816
        jnz     @f
1105
        jnz     @f
817
        cmp     byte [esi+2], 0
1106
        cmp     byte [esi+2], 0
818
        jz      .dotdot
1107
        jz      .dotdot
819
@@:
1108
@@:
820
        push    esi
1109
        push    esi
821
        lea     esi, [ebp + panel1_dir - panel1_data]
1110
        lea     esi, [ebp + panel1_dir - panel1_data]
822
        mov     edi, prev_dir
1111
        mov     edi, prev_dir
823
@@:
1112
@@:
824
        lodsb
1113
        lodsb
825
        stosb
1114
        stosb
826
        test    al, al
1115
        test    al, al
827
        jnz     @b
1116
        jnz     @b
828
        lea     edi, [esi-1]
1117
        lea     edi, [esi-1]
829
        lea     edx, [ebp + panel1_dir - panel1_data + 1024]
1118
        lea     edx, [ebp + panel1_dir - panel1_data + 1024]
830
        cmp     esi, edx
1119
        cmp     esi, edx
831
        pop     esi
1120
        pop     esi
832
        jae     .bigfoldername
1121
        jae     .bigfoldername
833
        mov     ecx, edi
1122
        mov     ecx, edi
834
        mov     al, '/'
1123
        mov     al, '/'
835
        cmp     [edi-1], al
1124
        cmp     [edi-1], al
836
        jz      @f
1125
        jz      @f
837
        stosb
1126
        stosb
838
@@:
1127
@@:
839
        lodsb
1128
        lodsb
840
        cmp     edi, edx
1129
        cmp     edi, edx
841
        jae     .bigfoldername2
1130
        jae     .bigfoldername2
842
        stosb
1131
        stosb
843
        test    al, al
1132
        test    al, al
844
        jnz     @b
1133
        jnz     @b
845
.reread:
1134
.reread:
846
        call    read_folder
1135
        call    read_folder
847
.done_cmdbar:
1136
.done_cmdbar:
848
        call    draw_cmdbar
1137
        call    draw_cmdbar
849
        jmp     .done_redraw
1138
        jmp     .done_redraw
850
.dotdot:
1139
.dotdot:
851
        lea     edi, [ebp + panel1_dir - panel1_data]
1140
        lea     edi, [ebp + panel1_dir - panel1_data]
852
        mov     al, 0
1141
        mov     al, 0
853
        or      ecx, -1
1142
        or      ecx, -1
854
        repnz   scasb
1143
        repnz   scasb
855
        dec     edi
1144
        dec     edi
856
        mov     al, '/'
1145
        mov     al, '/'
857
        std
1146
        std
858
        repnz   scasb
1147
        repnz   scasb
859
        cld
1148
        cld
860
        inc     edi
1149
        inc     edi
861
        mov     byte [edi], 0
1150
        mov     byte [edi], 0
862
        inc     edi
1151
        inc     edi
863
        push    edi
1152
        push    edi
864
        call    read_folder
1153
        call    read_folder
865
        pop     edi
1154
        pop     edi
866
        mov     edx, [ebp + panel1_files - panel1_data]
1155
        mov     edx, [ebp + panel1_files - panel1_data]
867
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
1156
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
868
.scanloop:
1157
.scanloop:
869
        mov     esi, [edx]
1158
        mov     esi, [edx]
870
        add     esi, 40
1159
        add     esi, 40
871
        push    esi edi
1160
        push    esi edi
872
@@:
1161
@@:
873
        lodsb
1162
        lodsb
874
        call    match_symbol
1163
        call    match_symbol
875
        jnz     @f
1164
        jnz     @f
876
        inc     edi
1165
        inc     edi
877
        test    al, al
1166
        test    al, al
878
        jnz     @b
1167
        jnz     @b
879
@@:
1168
@@:
880
        pop     edi esi
1169
        pop     edi esi
881
        jz      .scanfound
1170
        jz      .scanfound
882
        add     edx, 4
1171
        add     edx, 4
883
        loop    .scanloop
1172
        loop    .scanloop
884
        jmp     .scandone
1173
        jmp     .scandone
885
.scanfound:
1174
.scanfound:
886
        sub     edx, [ebp + panel1_files - panel1_data]
1175
        sub     edx, [ebp + panel1_files - panel1_data]
887
        shr     edx, 2
1176
        shr     edx, 2
888
        mov     [ebp + panel1_index - panel1_data], edx
1177
        mov     [ebp + panel1_index - panel1_data], edx
889
        sub     edx, [ebp + panel1_colst - panel1_data]
1178
        sub     edx, [ebp + panel1_colst - panel1_data]
890
        jb      .scandone
1179
        jb      .scandone
891
        inc     edx
1180
        inc     edx
892
        mov     [ebp + panel1_start - panel1_data], edx
1181
        mov     [ebp + panel1_start - panel1_data], edx
893
.scandone:
1182
.scandone:
894
        jmp     .done_cmdbar
1183
        jmp     .done_cmdbar
895
.ctrl_f39:
1184
.ctrl_f39:
896
        sub     al, 0x3D
1185
        sub     al, 0x3D
897
        add     al, al
1186
        add     al, al
898
        mov     ah, [ebp + panel1_sortmode - panel1_data]
1187
        mov     ah, [ebp + panel1_sortmode - panel1_data]
899
        and     ah, 0xFE
1188
        and     ah, 0xFE
900
        cmp     al, ah
1189
        cmp     al, ah
901
        jnz     @f
1190
        jnz     @f
902
        and     [ebp + panel1_sortmode - panel1_data], 1
1191
        and     [ebp + panel1_sortmode - panel1_data], 1
903
        or      al, [ebp + panel1_sortmode - panel1_data]
1192
        or      al, [ebp + panel1_sortmode - panel1_data]
904
        xor     al, 1
1193
        xor     al, 1
905
@@:
1194
@@:
906
        mov     [ebp + panel1_sortmode - panel1_data], al
1195
        mov     [ebp + panel1_sortmode - panel1_data], al
907
        mov     eax, [ebp + panel1_index - panel1_data]
1196
        mov     eax, [ebp + panel1_index - panel1_data]
908
        mov     ecx, [ebp + panel1_files - panel1_data]
1197
        mov     ecx, [ebp + panel1_files - panel1_data]
909
        push    dword [ecx+eax*4]
1198
        push    dword [ecx+eax*4]
910
        push    ecx
1199
        push    ecx
911
        call    sort_files
1200
        call    sort_files
912
        pop     edi
1201
        pop     edi
913
        pop     eax
1202
        pop     eax
914
        or      ecx, -1
1203
        or      ecx, -1
915
        repnz   scasd
1204
        repnz   scasd
916
        not     ecx
1205
        not     ecx
917
        dec     ecx
1206
        dec     ecx
918
        mov     [ebp + panel1_index - panel1_data], ecx
1207
        mov     [ebp + panel1_index - panel1_data], ecx
919
        sub     ecx, [ebp + panel1_start - panel1_data]
1208
        sub     ecx, [ebp + panel1_start - panel1_data]
920
        jb      .less_start
1209
        jb      .less_start
921
        sub     ecx, [ebp + panel1_colst - panel1_data]
1210
        sub     ecx, [ebp + panel1_colst - panel1_data]
922
        jae     .gr_end
1211
        jae     .gr_end
923
@@:     jmp     .done_redraw
1212
@@:     jmp     .done_redraw
924
.less_start:
1213
.less_start:
925
        add     [ebp + panel1_start - panel1_data], ecx
1214
        add     [ebp + panel1_start - panel1_data], ecx
926
        jmp     @b
1215
        jmp     @b
927
.gr_end:
1216
.gr_end:
928
        inc     ecx
1217
        inc     ecx
929
        add     [ebp + panel1_start - panel1_data], ecx
1218
        add     [ebp + panel1_start - panel1_data], ecx
930
        jmp     @b
1219
        jmp     @b
931
.alt_f12:
1220
.alt_f12:
932
        mov     ebp, panel1_data
1221
        mov     ebp, panel1_data
933
        cmp     al, 0x3B
1222
        cmp     al, 0x3B
934
        jz      @f
1223
        jz      @f
935
        mov     ebp, panel2_data
1224
        mov     ebp, panel2_data
936
@@:
1225
@@:
937
; get drives list
1226
; get drives list
938
        mov     ebx, dirinfo
1227
        mov     ebx, dirinfo
939
        mov     [ebx+dirinfo.size-dirinfo], 1
1228
        mov     [ebx+dirinfo.size-dirinfo], 1
940
        mov     [ebx+dirinfo.dirdata-dirinfo], driveinfo
1229
        mov     [ebx+dirinfo.dirdata-dirinfo], driveinfo
941
        mov     [ebx+dirinfo.name-dirinfo], tmpname
1230
        mov     [ebx+dirinfo.name-dirinfo], tmpname
942
        mov     byte [tmpname], '/'
1231
        mov     byte [tmpname], '/'
-
 
1232
        xor     edx, edx
943
        xor     ecx, ecx
1233
        xor     ecx, ecx
944
.drive_loop_e:
1234
.drive_loop_e:
945
        mov     byte [tmpname+1], 0
1235
        mov     byte [tmpname+1], 0
946
        push    70
1236
        push    70
947
        pop     eax
1237
        pop     eax
948
        int     40h
1238
        int     40h
949
        mov     ebx, dirinfo
1239
        mov     ebx, dirinfo
950
        test    eax, eax
1240
        test    eax, eax
951
        jnz     .drive_loop_e_done
1241
        jnz     .drive_loop_e_done
952
        mov     esi, driveinfo+32+40
1242
        mov     esi, driveinfo+32+40
953
        mov     edi, tmpname+1
1243
        mov     edi, tmpname+1
954
@@:
1244
@@:
955
        lodsb
1245
        lodsb
956
        stosb
1246
        stosb
957
        test    al, al
1247
        test    al, al
958
        jnz     @b
1248
        jnz     @b
959
        push    [ebx+dirinfo.first-dirinfo]
1249
        push    [ebx+dirinfo.first-dirinfo]
960
        and     [ebx+dirinfo.first-dirinfo], 0
1250
        and     [ebx+dirinfo.first-dirinfo], 0
961
.drive_loop_i:
1251
.drive_loop_i:
962
        push    70
1252
        push    70
963
        pop     eax
1253
        pop     eax
964
        int     40h
1254
        int     40h
965
        mov     ebx, dirinfo
1255
        mov     ebx, dirinfo
966
        test    eax, eax
1256
        test    eax, eax
967
        jnz     .drive_loop_i_done
1257
        jnz     .drive_loop_i_done
968
        mov     eax, 32+8
1258
        add     ecx, 32+8
-
 
1259
        push    ecx
-
 
1260
        and     ecx, 0xFFF
-
 
1261
        cmp     ecx, 32+8
-
 
1262
        pop     ecx
-
 
1263
        ja      @f
969
        call    xmalloc
1264
        call    xpgrealloc
-
 
1265
        mov     edx, eax
970
        test    eax, eax
1266
        test    eax, eax
971
        jz      .drive_loop_i_done
1267
        jnz     @f
972
        jecxz   @f
1268
        pop     eax
973
        mov     [ecx], eax
1269
        ret
974
@@:
1270
@@:
975
        and     dword [eax], 0
-
 
976
        mov     [eax+4], ecx
-
 
977
        mov     ecx, eax
-
 
978
        lea     edi, [eax+8]
1271
        lea     edi, [edx+ecx-32]
979
        mov     esi, tmpname
1272
        mov     esi, tmpname
980
@@:
1273
@@:
981
        lodsb
1274
        lodsb
982
        test    al, al
1275
        test    al, al
983
        jz      @f
1276
        jz      @f
984
        stosb
1277
        stosb
985
        jmp     @b
1278
        jmp     @b
986
@@:
1279
@@:
987
        mov     esi, driveinfo+32+40
1280
        mov     esi, driveinfo+32+40
988
        mov     al, '/'
1281
        mov     al, '/'
989
        stosb
1282
        stosb
990
@@:
1283
@@:
991
        lodsb
1284
        lodsb
992
        stosb
1285
        stosb
993
        test    al, al
1286
        test    al, al
994
        jnz     @b
1287
        jnz     @b
995
        inc     [ebx+dirinfo.first-dirinfo]
1288
        inc     [ebx+dirinfo.first-dirinfo]
996
        jmp     .drive_loop_i
1289
        jmp     .drive_loop_i
997
.drive_loop_i_done:
1290
.drive_loop_i_done:
998
        pop     [ebx+dirinfo.first-dirinfo]
1291
        pop     [ebx+dirinfo.first-dirinfo]
999
        inc     [ebx+dirinfo.first-dirinfo]
1292
        inc     [ebx+dirinfo.first-dirinfo]
1000
        jmp     .drive_loop_e
1293
        jmp     .drive_loop_e
1001
.drive_loop_e_done:
1294
.drive_loop_e_done:
1002
        and     [ebx+dirinfo.first-dirinfo], 0
1295
        and     [ebx+dirinfo.first-dirinfo], 0
-
 
1296
        mov     edi, edx
-
 
1297
        xor     esi, esi
-
 
1298
        add     ecx, edx
-
 
1299
@@:
-
 
1300
        and     dword [edi], 0
-
 
1301
        mov     dword [edi+4], esi
-
 
1302
        mov     esi, edi
-
 
1303
        add     edi, 32+8
-
 
1304
        cmp     edi, ecx
-
 
1305
        jae     @f
-
 
1306
        mov     [esi], edi
-
 
1307
        jmp     @b
-
 
1308
@@:
-
 
1309
        mov     ecx, edx
1003
        lea     edi, [ebp + panel1_dir - panel1_data]
1310
        lea     edi, [ebp + panel1_dir - panel1_data]
1004
.find_cur_drive_loop:
1311
.find_cur_drive_loop:
1005
        push    edi
1312
        push    edi
1006
        lea     esi, [ecx+8]
1313
        lea     esi, [ecx+8]
1007
@@:
1314
@@:
1008
        lodsb
1315
        lodsb
1009
        test    al, al
1316
        test    al, al
1010
        jz      .cur_drive_found
1317
        jz      .cur_drive_found
1011
        call    match_symbol
1318
        call    match_symbol
1012
        jnz     @f
1319
        jnz     @f
1013
        inc     edi
1320
        inc     edi
1014
        jmp     @b
1321
        jmp     @b
1015
@@:
1322
@@:
1016
        cmp     dword [ecx+4], 0
1323
        cmp     dword [ecx], 0
1017
        jz      @f
1324
        jz      @f
1018
        pop     edi
1325
        pop     edi
1019
        mov     ecx, [ecx+4]
1326
        mov     ecx, [ecx]
1020
        jmp     .find_cur_drive_loop
1327
        jmp     .find_cur_drive_loop
1021
@@:
1328
@@:
-
 
1329
        mov     ecx, edx
1022
.cur_drive_found:
1330
.cur_drive_found:
1023
        pop     edi
1331
        pop     edi
1024
        push    1
1332
        push    1
1025
        push    aDrive
1333
        push    aDrive
1026
        push    ecx
1334
        push    ecx
1027
        mov     eax, [ebp + panel1_height - panel1_data]
1335
        mov     eax, [ebp + panel1_height - panel1_data]
1028
        sub     eax, 2
1336
        sub     eax, 2
1029
        jae     @f
1337
        jae     @f
1030
        add     eax, 2
1338
        add     eax, 2
1031
@@:
1339
@@:
1032
        push    eax
1340
        push    eax
1033
        push    [ebp + panel1_width - panel1_data]
1341
        push    [ebp + panel1_width - panel1_data]
1034
        push    [ebp + panel1_top - panel1_data]
1342
        push    [ebp + panel1_top - panel1_data]
1035
        push    [ebp + panel1_left - panel1_data]
1343
        push    [ebp + panel1_left - panel1_data]
1036
        call    menu_centered_in
1344
        call    menu_centered_in
1037
        cmp     eax, -1
1345
        cmp     eax, -1
1038
        jz      .ret2
1346
        jz      .ret2
1039
        lea     esi, [eax+8]
1347
        lea     esi, [eax+8]
1040
        lea     edi, [ebp + panel1_dir - panel1_data]
1348
        lea     edi, [ebp + panel1_dir - panel1_data]
1041
        push    ecx esi edi
1349
        push    ecx esi edi
1042
        mov     esi, edi
1350
        mov     esi, edi
1043
        mov     edi, prev_dir
1351
        mov     edi, prev_dir
1044
        mov     ecx, 1024/4
1352
        mov     ecx, 1024/4
1045
        rep     movsd
1353
        rep     movsd
1046
        pop     edi esi ecx
1354
        pop     edi esi ecx
1047
@@:
1355
@@:
1048
        lodsb
1356
        lodsb
1049
        stosb
1357
        stosb
1050
        test    al, al
1358
        test    al, al
1051
        jnz     @b
1359
        jnz     @b
1052
@@:
-
 
1053
        cmp     dword [ecx+4], 0
-
 
1054
        jz      @f
-
 
1055
        mov     ecx, [ecx+4]
-
 
1056
        jmp     @b
-
 
1057
@@:
-
 
1058
        mov     eax, ecx
1360
        mov     ecx, edx
1059
        mov     ecx, [ecx]
-
 
1060
        call    mf_free
1361
        call    pgfree
1061
        test    ecx, ecx
-
 
1062
        jnz     @b
-
 
1063
        call    read_folder
1362
        call    read_folder
1064
        jmp     .done_redraw
1363
        jmp     .done_redraw
1065
.shift_f5:
1364
.shift_f5:
1066
        call    get_curfile_folder_entry
1365
        call    get_curfile_folder_entry
1067
        lea     esi, [ecx+40]
1366
        lea     esi, [ecx+40]
1068
        mov     edi, CopyDestEditBuf
1367
        mov     edi, CopyDestEditBuf
1069
        mov     eax, CopyDestEditBuf.length
1368
        mov     eax, CopyDestEditBuf.length
1070
        stosd
1369
        stosd
1071
        scasd
1370
        scasd
1072
        xor     eax, eax
1371
        xor     eax, eax
1073
        stosd
1372
        stosd
1074
        mov     edx, edi
1373
        mov     edx, edi
1075
@@:
1374
@@:
1076
        lodsb
1375
        lodsb
1077
        test    al, al
1376
        test    al, al
1078
        jz      .f5_common
1377
        jz      .f5_common
1079
        stosb
1378
        stosb
1080
        jmp     @b
1379
        jmp     @b
1081
.f5:
1380
.f5:
1082
        mov     edi, CopyDestEditBuf
1381
        mov     edi, CopyDestEditBuf
1083
        mov     eax, CopyDestEditBuf.length
1382
        mov     eax, CopyDestEditBuf.length
1084
        stosd
1383
        stosd
1085
        scasd
1384
        scasd
1086
        xor     eax, eax
1385
        xor     eax, eax
1087
        stosd
1386
        stosd
1088
        mov     edx, edi
1387
        mov     edx, edi
1089
        mov     esi, ebp
1388
        mov     esi, ebp
1090
        xor     esi, panel1_data xor panel2_data
1389
        xor     esi, panel1_data xor panel2_data
1091
        add     esi, panel1_dir - panel1_data
1390
        add     esi, panel1_dir - panel1_data
1092
@@:
1391
@@:
1093
        lodsb
1392
        lodsb
1094
        test    al, al
1393
        test    al, al
1095
        jz      @f
1394
        jz      @f
1096
        cmp     edi, CopyDestEditBuf+12+511
1395
        cmp     edi, CopyDestEditBuf+12+511
1097
        jae     .bigfoldername
1396
        jae     .bigfoldername
1098
        stosb
1397
        stosb
1099
        jmp     @b
1398
        jmp     @b
1100
@@:
1399
@@:
1101
        mov     al, '/'
1400
        mov     al, '/'
1102
        stosb
1401
        stosb
1103
.f5_common:
1402
.f5_common:
1104
        mov     byte [edi], 0
1403
        mov     byte [edi], 0
1105
        sub     edi, edx
1404
        sub     edi, edx
1106
        mov     [edx-8], edi
1405
        mov     [edx-8], edi
1107
        mov     edi, CopySourceTextBuf
1406
        mov     edi, CopySourceTextBuf
1108
        mov     esi, aCopy1
1407
        mov     esi, aCopy1
1109
@@:
1408
@@:
1110
        lodsb
1409
        lodsb
1111
        test    al, al
1410
        test    al, al
1112
        jz      @f
1411
        jz      @f
1113
        stosb
1412
        stosb
1114
        jmp     @b
1413
        jmp     @b
1115
@@:
1414
@@:
1116
        call    get_curfile_folder_entry
1415
        call    get_curfile_folder_entry
1117
        lea     esi, [ecx+40]
1416
        lea     esi, [ecx+40]
1118
        lea     eax, [esi+1]
1417
        lea     eax, [esi+1]
1119
@@:
1418
@@:
1120
        inc     esi
1419
        inc     esi
1121
        cmp     byte [esi-1], 0
1420
        cmp     byte [esi-1], 0
1122
        jnz     @b
1421
        jnz     @b
1123
        sub     esi, eax
1422
        sub     esi, eax
1124
        xchg    eax, esi
1423
        xchg    eax, esi
1125
        dec     esi
1424
        dec     esi
1126
        mov     edx, [cur_width]
1425
        mov     edx, [cur_width]
1127
        sub     edx, 50
1426
        sub     edx, 50
1128
        sub     eax, edx
1427
        sub     eax, edx
1129
        jbe     @f
1428
        jbe     @f
1130
        add     esi, eax
1429
        add     esi, eax
1131
        mov     al, '.'
1430
        mov     al, '.'
1132
        stosb
1431
        stosb
1133
        stosb
1432
        stosb
1134
        stosb
1433
        stosb
1135
@@:
1434
@@:
1136
        lodsb
1435
        lodsb
1137
        test    al, al
1436
        test    al, al
1138
        jz      @f
1437
        jz      @f
1139
        stosb
1438
        stosb
1140
        jmp     @b
1439
        jmp     @b
1141
@@:
1440
@@:
1142
        mov     esi, aCopy2
1441
        mov     esi, aCopy2
1143
@@:
1442
@@:
1144
        lodsb
1443
        lodsb
1145
        stosb
1444
        stosb
1146
        test    al, al
1445
        test    al, al
1147
        jnz     @b
1446
        jnz     @b
1148
        mov     ebx, copy_dlgdata
1447
        mov     ebx, copy_dlgdata
1149
        mov     eax, [cur_width]
1448
        mov     eax, [cur_width]
1150
        sub     eax, 12
1449
        sub     eax, 12
1151
        mov     [ebx + dlgtemplate.width], eax
1450
        mov     [ebx + dlgtemplate.width], eax
1152
        dec     eax
1451
        dec     eax
1153
        dec     eax
1452
        dec     eax
1154
        mov     [ebx - copy_dlgdata + copy_dlgdata.width2], eax
1453
        mov     [ebx - copy_dlgdata + copy_dlgdata.width2], eax
1155
        mov     [ebx - copy_dlgdata + copy_dlgdata.width3], eax
1454
        mov     [ebx - copy_dlgdata + copy_dlgdata.width3], eax
1156
        shr     eax, 1
1455
        shr     eax, 1
1157
        dec     eax
1456
        dec     eax
1158
        dec     eax
1457
        dec     eax
1159
        mov     [ebx - copy_dlgdata + copy_dlgdata.copy_x2], eax
1458
        mov     [ebx - copy_dlgdata + copy_dlgdata.copy_x2], eax
1160
        sub     eax, aCopyLength-1
1459
        sub     eax, aCopyLength-1
1161
        mov     [ebx - copy_dlgdata + copy_dlgdata.copy_x1], eax
1460
        mov     [ebx - copy_dlgdata + copy_dlgdata.copy_x1], eax
1162
        add     eax, aCopyLength+3
1461
        add     eax, aCopyLength+3
1163
        mov     [ebx - copy_dlgdata + copy_dlgdata.cnl_x1], eax
1462
        mov     [ebx - copy_dlgdata + copy_dlgdata.cnl_x1], eax
1164
        add     eax, aCancelBLength - 1
1463
        add     eax, aCancelBLength - 1
1165
        mov     [ebx - copy_dlgdata + copy_dlgdata.cnl_x2], eax
1464
        mov     [ebx - copy_dlgdata + copy_dlgdata.cnl_x2], eax
1166
        mov     byte [ebx - copy_dlgdata + copy_dlgdata.flags0], 0xC
1465
        mov     byte [ebx - copy_dlgdata + copy_dlgdata.flags0], 0xC
1167
        and     byte [ebx - copy_dlgdata + copy_dlgdata.flags1], not 4
1466
        and     byte [ebx - copy_dlgdata + copy_dlgdata.flags1], not 4
1168
        and     byte [ebx - copy_dlgdata + copy_dlgdata.flags2], not 4
1467
        and     byte [ebx - copy_dlgdata + copy_dlgdata.flags2], not 4
1169
        push    ebx
1468
        push    ebx
1170
        call    DialogBox
1469
        call    DialogBox
1171
        cmp     eax, copy_dlgdata.copy_btn
1470
        cmp     eax, copy_dlgdata.copy_btn
1172
        jnz     .ret2
1471
        jnz     .ret2
1173
; Š®¯¨à㥬
1472
; Š®¯¨à㥬
1174
        mov     esi, CopyDestEditBuf+12
1473
        mov     esi, CopyDestEditBuf+12
1175
        mov     edi, esi
1474
        mov     edi, esi
1176
        xor     eax, eax
1475
        xor     eax, eax
1177
        or      ecx, -1
1476
        or      ecx, -1
1178
        repnz   scasb
1477
        repnz   scasb
1179
        dec     edi
1478
        dec     edi
1180
        dec     edi
1479
        dec     edi
1181
        cmp     edi, esi
1480
        cmp     edi, esi
1182
        jb      .ret2
1481
        jb      .ret2
1183
        cmp     byte [edi], '/'
1482
        cmp     byte [edi], '/'
1184
        jnz     @f
1483
        jnz     @f
1185
;  «¨ç¨¥/®âáãâá⢨¥ § ª ­ç¨¢ î饣® á«íè  ¢ ¦­® ⮫쪮 ¤«ï ª®¯¨à®¢ ­¨ï ¯ ¯®ª
1484
;  «¨ç¨¥/®âáãâá⢨¥ § ª ­ç¨¢ î饣® á«íè  ¢ ¦­® ⮫쪮 ¤«ï ª®¯¨à®¢ ­¨ï ¯ ¯®ª
1186
        cmp     edi, esi
1485
        cmp     edi, esi
1187
        jz      @f
1486
        jz      @f
1188
        mov     byte [edi], 0
1487
        mov     byte [edi], 0
1189
        dec     edi
1488
        dec     edi
1190
@@:
1489
@@:
1191
; …᫨ ¯ãâì ­¥ ­ ç¨­ ¥âáï á® á«íè , áç¨â ¥¬ ¥£® ®â­®á¨â¥«ì­® ⥪ã饩 ¯ ¯ª¨
1490
; …᫨ ¯ãâì ­¥ ­ ç¨­ ¥âáï á® á«íè , áç¨â ¥¬ ¥£® ®â­®á¨â¥«ì­® ⥪ã饩 ¯ ¯ª¨
1192
        cmp     byte [esi], '/'
1491
        cmp     byte [esi], '/'
1193
        jz      .copy_absolute_path
1492
        jz      .copy_absolute_path
1194
        push    esi
1493
        push    esi
1195
        push    edi
1494
        push    edi
1196
        lea     edi, [ebp + panel1_dir - panel1_data]
1495
        lea     edi, [ebp + panel1_dir - panel1_data]
1197
        or      ecx, -1
1496
        or      ecx, -1
1198
        xor     eax, eax
1497
        xor     eax, eax
1199
        repnz   scasb
1498
        repnz   scasb
1200
        not     ecx
1499
        not     ecx
1201
        pop     edi
1500
        pop     edi
1202
        push    edi
1501
        push    edi
1203
        add     edi, ecx
1502
        add     edi, ecx
1204
        cmp     edi, CopyDestEditBuf+12+513
1503
        cmp     edi, CopyDestEditBuf+12+513
1205
        pop     edi
1504
        pop     edi
1206
        jb      @f
1505
        jb      @f
1207
        pop     esi
1506
        pop     esi
1208
        jmp     .bigfilename
1507
        jmp     .bigfilename
1209
@@:
1508
@@:
1210
        lea     edx, [edi+2]
1509
        lea     edx, [edi+2]
1211
        sub     edx, esi
1510
        sub     edx, esi
1212
        lea     edi, [edi+ecx+1]
1511
        lea     edi, [edi+ecx+1]
1213
        xchg    ecx, edx
1512
        xchg    ecx, edx
1214
        std
1513
        std
1215
        lea     esi, [esi+ecx-1]
1514
        lea     esi, [esi+ecx-1]
1216
        rep     movsb
1515
        rep     movsb
1217
        cld
1516
        cld
1218
        pop     edi
1517
        pop     edi
1219
        lea     esi, [ebp + panel1_dir - panel1_data]
1518
        lea     esi, [ebp + panel1_dir - panel1_data]
1220
        push    edi
1519
        push    edi
1221
        mov     ecx, edx
1520
        mov     ecx, edx
1222
        rep     movsb
1521
        rep     movsb
1223
        mov     byte [edi-1], '/'
1522
        mov     byte [edi-1], '/'
1224
        pop     esi
1523
        pop     esi
1225
.copy_absolute_path:
1524
.copy_absolute_path:
1226
; ®«ãç ¥¬  âਡãâë ­ §­ ç¥­¨ï
1525
; ®«ãç ¥¬  âਡãâë ­ §­ ç¥­¨ï
1227
        mov     cl, 0x10
1526
        mov     cl, 0x10
1228
        xor     eax, eax
1527
        xor     eax, eax
1229
        mov     edi, esi
1528
        mov     edi, esi
1230
.countslashloop:
1529
.countslashloop:
1231
        cmp     byte [edi], '/'
1530
        cmp     byte [edi], '/'
1232
        jnz     @f
1531
        jnz     @f
1233
        inc     eax
1532
        inc     eax
1234
@@:
1533
@@:
1235
        inc     edi
1534
        inc     edi
1236
        cmp     byte [edi], 0
1535
        cmp     byte [edi], 0
1237
        jnz     .countslashloop
1536
        jnz     .countslashloop
1238
        cmp     eax, 2
1537
        cmp     eax, 2
1239
        jbe     @f
1538
        jbe     @f
1240
        mov     ebx, attrinfo
1539
        mov     ebx, attrinfo
1241
        mov     [attrinfo.attr], 0
1540
        mov     [attrinfo.attr], 0
1242
        mov     [ebx + attrinfo.name - attrinfo], esi
1541
        mov     [ebx + attrinfo.name - attrinfo], esi
1243
        push    70
1542
        push    70
1244
        pop     eax
1543
        pop     eax
1245
        int     0x40
1544
        int     0x40
1246
        mov     cl, byte [attrinfo.attr]
1545
        mov     cl, byte [attrinfo.attr]
1247
@@:
1546
@@:
1248
        test    cl, 0x10
1547
        test    cl, 0x10
1249
        jz      .copyfile
1548
        jz      .copyfile
1250
;  ¬ ¯®¤áã­ã«¨ ª â «®£ ­ §­ ç¥­¨ï, ¤®¯¨á뢠¥¬ ¨¬ï ä ©« 
1549
;  ¬ ¯®¤áã­ã«¨ ª â «®£ ­ §­ ç¥­¨ï, ¤®¯¨á뢠¥¬ ¨¬ï ä ©« 
1251
        cmp     edi, CopyDestEditBuf+12+513
1550
        cmp     edi, CopyDestEditBuf+12+513
1252
        jae     .bigfilename
1551
        jae     .bigfilename
1253
        mov     al, '/'
1552
        mov     al, '/'
1254
        stosb
1553
        stosb
1255
        push    esi
1554
        push    esi
1256
        call    get_curfile_folder_entry
1555
        call    get_curfile_folder_entry
1257
        lea     esi, [ecx+40]
1556
        lea     esi, [ecx+40]
1258
@@:
1557
@@:
1259
        lodsb
1558
        lodsb
1260
        cmp     edi, CopyDestEditBuf+12+513
1559
        cmp     edi, CopyDestEditBuf+12+513
1261
        jae     .bigfilename2
1560
        jae     .bigfilename2
1262
        stosb
1561
        stosb
1263
        test    al, al
1562
        test    al, al
1264
        jnz     @b
1563
        jnz     @b
1265
        pop     esi
1564
        pop     esi
1266
.copyfile:
1565
.copyfile:
1267
; ˆ¬ï ¨á室­®£® ä ©« 
1566
; ˆ¬ï ¨á室­®£® ä ©« 
1268
        push    esi
1567
        push    esi
1269
        lea     esi, [ebp+panel1_dir-panel1_data]
1568
        lea     esi, [ebp+panel1_dir-panel1_data]
1270
        mov     edi, saved_file_name
1569
        mov     edi, saved_file_name
1271
        push    edi
1570
        push    edi
1272
@@:
1571
@@:
1273
        lodsb
1572
        lodsb
1274
        test    al, al
1573
        test    al, al
1275
        jz      @f
1574
        jz      @f
1276
        stosb
1575
        stosb
1277
        jmp     @b
1576
        jmp     @b
1278
@@:
1577
@@:
1279
        mov     al, '/'
1578
        mov     al, '/'
1280
        stosb
1579
        stosb
1281
        call    get_curfile_folder_entry
1580
        call    get_curfile_folder_entry
1282
        lea     esi, [ecx+40]
1581
        lea     esi, [ecx+40]
1283
@@:
1582
@@:
1284
        lodsb
1583
        lodsb
1285
        cmp     edi, saved_file_name+1024
1584
        cmp     edi, saved_file_name+1024
1286
        jae     .bigfilename3
1585
        jae     .bigfilename3
1287
        stosb
1586
        stosb
1288
        test    al, al
1587
        test    al, al
1289
        jnz     @b
1588
        jnz     @b
1290
        pop     esi
1589
        pop     esi
1291
        pop     edi
1590
        pop     edi
1292
; ¥«ì§ï ᪮¯¨à®¢ âì ä ©« ¯®¢¥àå á ¬®£® ᥡï!
1591
; ¥«ì§ï ᪮¯¨à®¢ âì ä ©« ¯®¢¥àå á ¬®£® ᥡï!
1293
        push    esi edi
1592
        push    esi edi
1294
        call    strcmpi
1593
        call    strcmpi
1295
        pop     edi esi
1594
        pop     edi esi
1296
        jz      .copytoself
1595
        jz      .copytoself
1297
; ‘®¡á⢥­­®, ª®¯¨à㥬
1596
; ‘®¡á⢥­­®, ª®¯¨à㥬
1298
; esi->source name, edi->destination name
1597
; esi->source name, edi->destination name
1299
        mov     [writeinfo.code], 2
1598
        mov     [writeinfo.code], 2
1300
        mov     [writeinfo.name], edi
1599
        mov     [writeinfo.name], edi
1301
        and     dword [writeinfo.first], 0
1600
        and     dword [writeinfo.first], 0
1302
        and     dword [writeinfo.first+4], 0
1601
        and     dword [writeinfo.first+4], 0
1303
        mov     [writeinfo.data], copy_buffer
1602
        mov     [writeinfo.data], copy_buffer
1304
        mov     ebx, readinfo
1603
        mov     ebx, readinfo
1305
        and     dword [ebx+readinfo.first-readinfo], 0
1604
        and     dword [ebx+readinfo.first-readinfo], 0
1306
        and     dword [ebx+readinfo.first+4-readinfo], 0
1605
        and     dword [ebx+readinfo.first+4-readinfo], 0
1307
        mov     [ebx+readinfo.size-readinfo], copy_buffer_size
1606
        mov     [ebx+readinfo.size-readinfo], copy_buffer_size
1308
        mov     [ebx+readinfo.data-readinfo], copy_buffer
1607
        mov     [ebx+readinfo.data-readinfo], copy_buffer
1309
        mov     [ebx+readinfo.name-readinfo], esi
1608
        mov     [ebx+readinfo.name-readinfo], esi
1310
.copyloop:
1609
.copyloop:
1311
        mov     ebx, readinfo
1610
        mov     ebx, readinfo
1312
        push    70
1611
        push    70
1313
        pop     eax
1612
        pop     eax
1314
        int     0x40
1613
        int     0x40
1315
        test    eax, eax
1614
        test    eax, eax
1316
        jz      .copyreadok
1615
        jz      .copyreadok
1317
        cmp     eax, 6
1616
        cmp     eax, 6
1318
        jz      .copyreadok
1617
        jz      .copyreadok
1319
        push    esi
1618
        push    esi
1320
        push    aCannotReadFile
1619
        push    dword aCannotReadFile
1321
        call    get_error_msg
1620
        call    get_error_msg
1322
        push    eax
1621
        push    eax
1323
        mov     eax, esp
1622
        mov     eax, esp
1324
        push    RetryOrCancelBtn
1623
        push    dword RetryOrCancelBtn
1325
        push    2
1624
        push    2
1326
        push    eax
1625
        push    eax
1327
        push    3
1626
        push    3
1328
        push    -1
1627
        push    -1
1329
        push    -1
1628
        push    -1
1330
        push    aError
1629
        push    dword aError
1331
        call    SayErr
1630
        call    SayErr
1332
        add     esp, 3*4
1631
        add     esp, 3*4
1333
        test    eax, eax
1632
        test    eax, eax
1334
        jz      .copyloop
1633
        jz      .copyloop
1335
        jmp     .copyfailed
1634
        jmp     .copyfailed
1336
.copyreadok:
1635
.copyreadok:
1337
        test    ebx, ebx
1636
        test    ebx, ebx
1338
        jz      .copydone
1637
        jz      .copydone
1339
        add     dword [readinfo.first], ebx
1638
        add     dword [readinfo.first], ebx
1340
        adc     dword [readinfo.first+4], 0
1639
        adc     dword [readinfo.first+4], 0
1341
        mov     [writeinfo.size], ebx
1640
        mov     [writeinfo.size], ebx
1342
.copywrite:
1641
.copywrite:
1343
        mov     ebx, writeinfo
1642
        mov     ebx, writeinfo
1344
        push    70
1643
        push    70
1345
        pop     eax
1644
        pop     eax
1346
        int     0x40
1645
        int     0x40
1347
        test    eax, eax
1646
        test    eax, eax
1348
        jz      .copywriteok
1647
        jz      .copywriteok
1349
        push    edi
1648
        push    edi
1350
        push    aCannotWriteFile
1649
        push    dword aCannotWriteFile
1351
        call    get_error_msg
1650
        call    get_error_msg
1352
        push    eax
1651
        push    eax
1353
        mov     eax, esp
1652
        mov     eax, esp
1354
        push    RetryOrCancelBtn
1653
        push    dword RetryOrCancelBtn
1355
        push    2
1654
        push    2
1356
        push    eax
1655
        push    eax
1357
        push    3
1656
        push    3
1358
        push    -1
1657
        push    -1
1359
        push    -1
1658
        push    -1
1360
        push    aError
1659
        push    dword aError
1361
        call    SayErr
1660
        call    SayErr
1362
        add     esp, 3*4
1661
        add     esp, 3*4
1363
        test    eax, eax
1662
        test    eax, eax
1364
        jz      .copywrite
1663
        jz      .copywrite
1365
        jmp     .copyfailed
1664
        jmp     .copyfailed
1366
.copywriteok:
1665
.copywriteok:
1367
        mov     ecx, [writeinfo.size]
1666
        mov     ecx, [writeinfo.size]
1368
        add     dword [writeinfo.first], ecx
1667
        add     dword [writeinfo.first], ecx
1369
        adc     dword [writeinfo.first+4], 0
1668
        adc     dword [writeinfo.first+4], 0
1370
        mov     [writeinfo.code], 3
1669
        mov     [writeinfo.code], 3
1371
        cmp     ecx, copy_buffer_size
1670
        cmp     ecx, copy_buffer_size
1372
        jz      .copyloop
1671
        jz      .copyloop
1373
.copydone:
1672
.copydone:
1374
        push    ebp
1673
        push    ebp
1375
        call    .ctrl_r
1674
        call    .ctrl_r
1376
        pop     ebp
1675
        pop     ebp
1377
        xor     ebp, panel1_data xor panel2_data
1676
        xor     ebp, panel1_data xor panel2_data
1378
        jmp     .ctrl_r
1677
        jmp     .ctrl_r
1379
.copyfailed:
1678
.copyfailed:
1380
        cmp     [bConfirmDeleteIncomplete], 0
1679
        cmp     [bConfirmDeleteIncomplete], 0
1381
        jz      @f
1680
        jz      @f
1382
        cmp     [writeinfo.code], 2
1681
        cmp     [writeinfo.code], 2
1383
        jz      .copydone
1682
        jz      .copydone
1384
        push    aIncompleteFile
1683
        push    dword aIncompleteFile
1385
        mov     eax, esp
1684
        mov     eax, esp
1386
        push    DeleteOrKeepBtn
1685
        push    dword DeleteOrKeepBtn
1387
        push    2
1686
        push    2
1388
        push    eax
1687
        push    eax
1389
        push    1
1688
        push    1
1390
        push    -1
1689
        push    -1
1391
        push    -1
1690
        push    -1
1392
        push    aCopyCaption
1691
        push    dword aCopyCaption
1393
        call    SayErr
1692
        call    SayErr
1394
        add     esp, 4
1693
        add     esp, 4
1395
        test    eax, eax
1694
        test    eax, eax
1396
        jnz     .copydone
1695
        jnz     .copydone
1397
@@:
1696
@@:
1398
        mov     ebx, delinfo
1697
        mov     ebx, delinfo
1399
        push    dword [ebx+21]
1698
        push    dword [ebx+21]
1400
        mov     dword [ebx+21], edi
1699
        mov     dword [ebx+21], edi
1401
        push    70
1700
        push    70
1402
        pop     eax
1701
        pop     eax
1403
        int     0x40
1702
        int     0x40
1404
; ignore errors
1703
; ignore errors
1405
        pop     dword [delinfo+21]
1704
        pop     dword [delinfo+21]
1406
        jmp     .copydone
1705
        jmp     .copydone
1407
 
1706
 
1408
.f3:
1707
.f3:
1409
        call    view_file
1708
        call    view_file
1410
.ret2:
1709
.ret2:
1411
        ret
1710
        ret
-
 
1711
.f8_has_selected:
-
 
1712
        mov     edi, saved_file_name+511
-
 
1713
        mov     byte [edi], 0
-
 
1714
        mov     eax, [ebp + panel1_selected_num - panel1_data]
-
 
1715
if lang eq ru
-
 
1716
        cmp     eax, 1
-
 
1717
        jz      @f
-
 
1718
        dec     edi
-
 
1719
        mov     byte [edi], ' '
-
 
1720
        cmp     eax, 4
-
 
1721
        jbe     @f
-
 
1722
        dec     edi
-
 
1723
        mov     word [edi], '®¢'
-
 
1724
@@:
-
 
1725
        mov     dword [edi-4], '¬¥­â'
-
 
1726
        mov     dword [edi-8], ' í«¥'
-
 
1727
        sub     edi, 8
-
 
1728
else
-
 
1729
        cmp     eax, 1
-
 
1730
        jz      @f
-
 
1731
        dec     edi
-
 
1732
        mov     byte [edi], 's'
-
 
1733
@@:
-
 
1734
        mov     dword [edi-4], 'item'
-
 
1735
        mov     byte [edi-5], ' '
-
 
1736
        sub     edi, 5
-
 
1737
end if
-
 
1738
        xor     edx, edx
-
 
1739
        push    10
-
 
1740
        pop     ecx
-
 
1741
@@:
-
 
1742
        div     ecx
-
 
1743
        add     dl, '0'
-
 
1744
        dec     edi
-
 
1745
        mov     [edi], dl
-
 
1746
        xor     edx, edx
-
 
1747
        test    eax, eax
-
 
1748
        jnz     @b
-
 
1749
        push    edi
-
 
1750
        push    aConfirmDeleteText
-
 
1751
        mov     eax, esp
-
 
1752
        push    DeleteOrCancelBtn
-
 
1753
        push    2
-
 
1754
        push    eax
-
 
1755
        push    2
-
 
1756
        push    -1
-
 
1757
        push    -1
-
 
1758
        push    aDeleteCaption
-
 
1759
        call    Message
-
 
1760
        add     esp, 8
-
 
1761
        test    eax, eax
-
 
1762
        jnz     .ret2
-
 
1763
        mov     [del_bSkipAll], 0
-
 
1764
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
-
 
1765
        jecxz   .ret2
-
 
1766
        mov     esi, [ebp + panel1_files - panel1_data]
-
 
1767
.f8_loop:
-
 
1768
        lodsd
-
 
1769
        test    byte [eax+303], 1
-
 
1770
        jz      @f
-
 
1771
        call    delete_file
-
 
1772
        ja      .f8_multiple_cancel
-
 
1773
@@:
-
 
1774
        loop    .f8_loop
-
 
1775
.f8_multiple_cancel:
-
 
1776
        jmp     .ctrl_r
1412
.f8:
1777
.f8:
-
 
1778
        cmp     [ebp + panel1_selected_num - panel1_data], 0
-
 
1779
        jnz     .f8_has_selected
1413
        call    get_curfile_folder_entry
1780
        call    get_curfile_folder_entry
1414
        cmp     [bConfirmDelete], 0
1781
        cmp     [bConfirmDelete], 0
1415
        jz      .f8_allowed
1782
        jz      .f8_allowed
1416
        mov     ebx, f8_confirm_dlgdata
1783
        lea     eax, [ecx+40]
-
 
1784
        push    eax
1417
        mov     esi, aConfirmDeleteText
1785
        mov     esi, aConfirmDeleteText
1418
        mov     edi, aConfirmDeleteTextBuf
1786
        mov     edi, aConfirmDeleteTextBuf
-
 
1787
        push    edi
1419
@@:
1788
@@:
1420
        lodsb
1789
        lodsb
1421
        stosb
1790
        stosb
1422
        test    al, al
1791
        test    al, al
1423
        jnz     @b
1792
        jnz     @b
1424
        dec     edi
1793
        dec     edi
1425
        mov     esi, aDeleteFolder
1794
        mov     esi, aDeleteFolder
1426
        test    byte [ecx], 10h
1795
        test    byte [ecx], 10h
1427
        jnz     @f
1796
        jnz     @f
1428
        mov     esi, aDeleteFile
1797
        mov     esi, aDeleteFile
1429
@@:
1798
@@:
1430
        lodsb
1799
        lodsb
1431
        stosb
1800
        stosb
1432
        test    al, al
1801
        test    al, al
1433
        jnz     @b
1802
        jnz     @b
1434
        lea     esi, [ecx+40]
-
 
1435
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.name], esi
-
 
1436
        or      eax, -1
-
 
1437
@@:
-
 
1438
        inc     eax
-
 
1439
        cmp     byte [eax+esi], 0
-
 
1440
        jnz     @b
-
 
1441
        sub     edi, aConfirmDeleteTextBuf+1
-
 
1442
        cmp     eax, edi
-
 
1443
        jae     @f
-
 
1444
        mov     eax, edi
-
 
1445
@@:
-
 
1446
        inc     eax
-
 
1447
        inc     eax
-
 
1448
        mov     edx, [cur_width]
-
 
1449
        sub     edx, 8
-
 
1450
        cmp     eax, edx
-
 
1451
        jbe     @f
-
 
1452
        mov     eax, edx
-
 
1453
@@:
-
 
1454
        mov     [ebx + dlgtemplate.width], eax
-
 
1455
        dec     eax
-
 
1456
        dec     eax
-
 
1457
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.width2], eax
-
 
1458
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.width3], eax
-
 
1459
        shr     eax, 1
-
 
1460
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.del_x2], eax
-
 
1461
        sub     eax, aDeleteLength-1
-
 
1462
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.del_x1], eax
-
 
1463
        add     eax, aDeleteLength
-
 
1464
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.cnl_x1], eax
-
 
1465
        add     eax, aCancelLength - 1
-
 
1466
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.cnl_x2], eax
-
 
1467
        or      byte [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.flags1], 4
-
 
1468
        and     byte [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.flags2], not 4
-
 
1469
        push    ebx
-
 
1470
        call    DialogBox
-
 
1471
        cmp     eax, f8_confirm_dlgdata.del_btn
-
 
1472
        jnz     .ret2
-
 
1473
.f8_allowed:
-
 
1474
        lea     esi, [ebp + panel1_dir - panel1_data]
-
 
1475
        mov     edi, execdata
-
 
1476
@@:
-
 
1477
        lodsb
-
 
1478
        test    al, al
-
 
1479
        jz      @f
-
 
1480
        stosb
-
 
1481
        jmp     @b
-
 
1482
@@:
-
 
1483
        lea     esi, [ecx+40]
-
 
1484
        mov     al, '/'
-
 
1485
        stosb
-
 
1486
@@:
-
 
1487
        lodsb
-
 
1488
        cmp     edi, execdataend
-
 
1489
        jae     .bigfilename
-
 
1490
        stosb
-
 
1491
        test    al, al
-
 
1492
        jnz     @b
-
 
1493
.retrydel:
-
 
1494
        push    70
-
 
1495
        pop     eax
-
 
1496
        mov     ebx, delinfo
-
 
1497
        int     0x40
-
 
1498
        test    eax, eax
-
 
1499
        jz      .ctrl_r
-
 
1500
        push    execdata
-
 
1501
        push    aCannotDeleteFolder
-
 
1502
        call    get_curfile_folder_entry
-
 
1503
        test    byte [ecx], 10h
-
 
1504
        jnz     @f
-
 
1505
        mov     dword [esp], aCannotDeleteFile
-
 
1506
@@:
-
 
1507
        call    get_error_msg
-
 
1508
        push    eax
-
 
1509
        mov     eax, esp
1803
        mov     eax, esp
1510
        push    RetryOrCancelBtn
1804
        push    DeleteOrCancelBtn
1511
        push    2
1805
        push    2
1512
        push    eax
1806
        push    eax
1513
        push    3
1807
        push    2
1514
        push    -1
1808
        push    -1
1515
        push    -1
1809
        push    -1
1516
        push    aError
1810
        push    aDeleteCaption
1517
        call    SayErr
1811
        call    Message
1518
        add     esp, 3*4
1812
        add     esp, 8
1519
        test    eax, eax
1813
        test    eax, eax
1520
        jz      .retrydel
1814
        jz      .f8_allowed
-
 
1815
        ret
-
 
1816
.f8_allowed:
-
 
1817
        mov     [del_bSkipAll], 0
-
 
1818
        mov     eax, ecx
-
 
1819
        call    delete_file
1521
.ctrl_r:
1820
.ctrl_r:
1522
; Rescan panel
1821
; Rescan panel
1523
;       call    read_folder
1822
;       call    read_folder
1524
;       jmp     .done_redraw
1823
;       jmp     .done_redraw
1525
        mov     eax, [ebp + panel1_index - panel1_data]
1824
        mov     eax, [ebp + panel1_index - panel1_data]
1526
        push    eax
1825
        push    eax
1527
        call    get_curfile_name
1826
        call    get_curfile_name
1528
        mov     esi, ecx
1827
        mov     esi, ecx
1529
        mov     edi, saved_file_name
1828
        mov     edi, saved_file_name
1530
@@:
1829
@@:
1531
        lodsb
1830
        lodsb
1532
        stosb
1831
        stosb
1533
        test    al, al
1832
        test    al, al
1534
        jnz     @b
1833
        jnz     @b
1535
        push    [ebp + panel1_start - panel1_data]
1834
        push    [ebp + panel1_start - panel1_data]
1536
        call    read_folder
1835
        call    read_folder
1537
        pop     [ebp + panel1_start - panel1_data]
1836
        pop     [ebp + panel1_start - panel1_data]
1538
        pop     [ebp + panel1_index - panel1_data]
1837
        pop     [ebp + panel1_index - panel1_data]
1539
        or      eax, -1
1838
        or      eax, -1
1540
@@:
1839
@@:
1541
        inc     eax
1840
        inc     eax
1542
        cmp     eax, [ebp + panel1_numfiles - panel1_data]
1841
        cmp     eax, [ebp + panel1_numfiles - panel1_data]
1543
        jae     .ctrl_r.notfound
1842
        jae     .ctrl_r.notfound
1544
        mov     ecx, [ebp + panel1_files - panel1_data]
1843
        mov     ecx, [ebp + panel1_files - panel1_data]
1545
        mov     esi, [ecx+eax*4]
1844
        mov     esi, [ecx+eax*4]
1546
        add     esi, 40
1845
        add     esi, 40
1547
        mov     edi, saved_file_name
1846
        mov     edi, saved_file_name
1548
        call    strcmpi
1847
        call    strcmpi
1549
        jnz     @b
1848
        jnz     @b
1550
.ctrl_r.found:
1849
.ctrl_r.found:
1551
        mov     [ebp + panel1_index - panel1_data], eax
1850
        mov     [ebp + panel1_index - panel1_data], eax
1552
.ctrl_r.notfound:
1851
.ctrl_r.notfound:
1553
        mov     eax, [ebp + panel1_numfiles - panel1_data]
1852
        mov     eax, [ebp + panel1_numfiles - panel1_data]
1554
        dec     eax
1853
        dec     eax
1555
        cmp     [ebp + panel1_index - panel1_data], eax
1854
        cmp     [ebp + panel1_index - panel1_data], eax
1556
        jbe     @f
1855
        jbe     @f
1557
        mov     [ebp + panel1_index - panel1_data], eax
1856
        mov     [ebp + panel1_index - panel1_data], eax
1558
@@:
1857
@@:
1559
        mov     eax, [ebp + panel1_index - panel1_data]
1858
        mov     eax, [ebp + panel1_index - panel1_data]
1560
        cmp     [ebp + panel1_start - panel1_data], eax
1859
        cmp     [ebp + panel1_start - panel1_data], eax
1561
        jbe     @f
1860
        jbe     @f
1562
        mov     [ebp + panel1_start - panel1_data], eax
1861
        mov     [ebp + panel1_start - panel1_data], eax
1563
@@:
1862
@@:
1564
        inc     eax
1863
        inc     eax
1565
        sub     eax, [ebp + panel1_colst - panel1_data]
1864
        sub     eax, [ebp + panel1_colst - panel1_data]
1566
        jae     @f
1865
        jae     @f
1567
        xor     eax, eax
1866
        xor     eax, eax
1568
@@:
1867
@@:
1569
        cmp     [ebp + panel1_start - panel1_data], eax
1868
        cmp     [ebp + panel1_start - panel1_data], eax
1570
        jae     @f
1869
        jae     @f
1571
        mov     [ebp + panel1_start - panel1_data], eax
1870
        mov     [ebp + panel1_start - panel1_data], eax
1572
@@:
1871
@@:
1573
        mov     eax, [ebp + panel1_numfiles - panel1_data]
1872
        mov     eax, [ebp + panel1_numfiles - panel1_data]
1574
        sub     eax, [ebp + panel1_colst - panel1_data]
1873
        sub     eax, [ebp + panel1_colst - panel1_data]
1575
        jbe     @f
1874
        jbe     @f
1576
        cmp     [ebp + panel1_start - panel1_data], eax
1875
        cmp     [ebp + panel1_start - panel1_data], eax
1577
        jbe     @f
1876
        jbe     @f
1578
        mov     [ebp + panel1_start - panel1_data], eax
1877
        mov     [ebp + panel1_start - panel1_data], eax
1579
@@:
1878
@@:
1580
        jmp     .done_redraw
1879
        jmp     .done_redraw
1581
.menu:
1880
.menu:
1582
; display context menu
1881
; display context menu
1583
; ignore folders
1882
; ignore folders
1584
        call    get_curfile_folder_entry
1883
        call    get_curfile_folder_entry
1585
        test    byte [ecx], 10h
1884
        test    byte [ecx], 10h
1586
        jz      @f
1885
        jz      @f
1587
.menuret:
1886
.menuret:
1588
        ret
1887
        ret
1589
@@:
1888
@@:
1590
        call    find_extension
1889
        call    find_extension
1591
        jc      .menuret
1890
        jc      .menuret
1592
        jnz     .menuret
-
 
1593
; known extension
1891
; known extension
-
 
1892
@@:
1594
        mov     ebx, [edi+8]
1893
        cmp     byte [edi], 0
-
 
1894
        jz      .menuret
-
 
1895
        cmp     byte [edi], ';'
-
 
1896
        jz      @f
-
 
1897
        inc     edi
-
 
1898
        jmp     @b
-
 
1899
@@:
-
 
1900
        inc     edi
-
 
1901
@@:
-
 
1902
        inc     edi
-
 
1903
        cmp     byte [edi-1], ' '
-
 
1904
        jz      @b
-
 
1905
        cmp     byte [edi-1], 9
-
 
1906
        jz      @b
1595
        test    ebx, ebx
1907
        dec     edi
-
 
1908
        cmp     byte [edi], 0
1596
        jz      .menuret
1909
        jz      .menuret
1597
        mov     ecx, esi
1910
        mov     ecx, esi
1598
@@:
1911
@@:
1599
        inc     ecx
1912
        inc     ecx
1600
        cmp     byte [ecx-1], 0
1913
        cmp     byte [ecx-1], 0
1601
        jnz     @b
1914
        jnz     @b
1602
        sub     ecx, esi        ; ecx = ¤«¨­  ¨¬¥­¨ ä ©« +1 = ¤«¨­  § £®«®¢ª +1
1915
        sub     ecx, esi        ; ecx = ¤«¨­  ¨¬¥­¨ ä ©« +1 = ¤«¨­  § £®«®¢ª +1
1603
        cmp     ecx, 15
1916
        cmp     ecx, 15
1604
        jb      @f
1917
        jb      @f
1605
        mov     cl, 15
1918
        mov     cl, 15
1606
@@:
1919
@@:
1607
        xor     edx, edx
1920
        xor     edx, edx
-
 
1921
        xor     ebp, ebp
-
 
1922
        push    edx
1608
.menucreateloop:
1923
.menucreateloop:
1609
        mov     eax, [ebx]
1924
        mov     eax, edi
1610
        test    eax, eax
1925
        xor     ebx, ebx
1611
        jz      .menucreated
-
 
1612
@@:
1926
@@:
-
 
1927
        cmp     byte [edi], ','
-
 
1928
        jz      @f
-
 
1929
        cmp     byte [edi], bl
-
 
1930
        jz      @f
-
 
1931
        inc     edi
-
 
1932
        jmp     @b
-
 
1933
@@:
-
 
1934
        xchg    bl, [edi]
-
 
1935
        pushad
-
 
1936
        push    nullstr
-
 
1937
        push    1024
-
 
1938
        push    saved_file_name
-
 
1939
        push    eax
-
 
1940
        push    aMenu
-
 
1941
        push    app_path
-
 
1942
        call    [ini.get_str]
-
 
1943
        popad
-
 
1944
        mov     [edi], bl
-
 
1945
        mov     eax, saved_file_name
-
 
1946
@@:
-
 
1947
        cmp     byte [eax], 0
-
 
1948
        jz      .menucreatecont
-
 
1949
        cmp     byte [eax], ','
-
 
1950
        jz      @f
1613
        inc     eax
1951
        inc     eax
-
 
1952
        jmp     @b
-
 
1953
@@:
1614
        cmp     byte [eax-1], 0
1954
        mov     byte [eax], 0
1615
        jnz     @b
1955
        push    eax
1616
        sub     eax, [ebx]
1956
        sub     eax, saved_file_name-1
1617
        cmp     eax, ecx
1957
        cmp     eax, ecx
1618
        ja      @f
1958
        ja      @f
1619
        mov     eax, ecx
1959
        mov     eax, ecx
1620
@@:
1960
@@:
-
 
1961
        xchg    eax, [esp]
-
 
1962
        inc     eax
-
 
1963
        push    eax
-
 
1964
@@:
-
 
1965
        inc     eax
-
 
1966
        cmp     byte [eax-1], 0
-
 
1967
        jnz     @b
-
 
1968
        sub     eax, [esp]
-
 
1969
        add     [esp+4], eax
-
 
1970
        pop     eax eax
1621
        add     eax, 12
1971
        add     eax, 8
-
 
1972
        add     ebp, eax
-
 
1973
        push    ebp
-
 
1974
        and     ebp, 0xFFF
-
 
1975
        cmp     ebp, eax
-
 
1976
        pop     ebp
-
 
1977
        ja      @f
-
 
1978
        push    eax
-
 
1979
        xchg    edx, [esp+4]
-
 
1980
        push    ecx
-
 
1981
        mov     ecx, ebp
1622
        call    xmalloc
1982
        call    xpgrealloc
-
 
1983
        pop     ecx
-
 
1984
        pop     edx
-
 
1985
        xchg    edx, [esp]
1623
        test    eax, eax
1986
        test    eax, eax
-
 
1987
        xchg    eax, [esp]
1624
        jz      .menucreated
1988
        jz      .menucreated
-
 
1989
@@:
-
 
1990
        neg     eax
1625
        add     eax, 4
1991
        add     eax, ebp
-
 
1992
        add     eax, [esp]
-
 
1993
        and     dword [eax], 0
-
 
1994
        and     dword [eax+4], 0
1626
        test    edx, edx
1995
        test    edx, edx
1627
        jz      @f
1996
        jz      @f
-
 
1997
        sub     eax, [esp]
1628
        mov     [edx], eax
1998
        mov     [edx], eax
-
 
1999
        add     eax, [esp]
1629
@@:
2000
        sub     edx, [esp]
1630
        mov     [eax+4], edx
2001
        mov     [eax+4], edx
-
 
2002
@@:
1631
        mov     edx, eax
2003
        mov     edx, eax
1632
        push    esi
2004
        push    esi edi
1633
        mov     esi, [ebx+4]
2005
        mov     esi, saved_file_name
1634
        mov     [eax-4], esi
-
 
1635
        mov     esi, [ebx]
-
 
1636
        lea     edi, [eax+8]
2006
        lea     edi, [eax+8]
1637
@@:
2007
@@:
1638
        lodsb
2008
        lodsb
1639
        stosb
2009
        stosb
1640
        test    al, al
2010
        test    al, al
1641
        jnz     @b
2011
        jnz     @b
1642
        sub     esi, [ebx]
2012
        push    esi
-
 
2013
        sub     esi, saved_file_name
1643
        sub     esi, ecx
2014
        sub     esi, ecx
1644
        jae     .menunoadd
2015
        jae     .menunoadd
1645
        neg     esi
2016
        neg     esi
1646
@@:
2017
@@:
1647
        mov     byte [edi-1], ' '
2018
        mov     byte [edi-1], ' '
1648
        stosb
2019
        stosb
1649
        dec     esi
2020
        dec     esi
1650
        jnz     @b
2021
        jnz     @b
1651
.menunoadd:
2022
.menunoadd:
1652
        pop     esi
2023
        pop     esi
-
 
2024
@@:
-
 
2025
        lodsb
-
 
2026
        stosb
-
 
2027
        test    al, al
-
 
2028
        jnz     @b
-
 
2029
        pop     edi esi
-
 
2030
.menucreatecont:
1653
        add     ebx, 8
2031
        inc     edi
-
 
2032
        cmp     byte [edi-1], ','
1654
        jmp     .menucreateloop
2033
        jz      .menucreateloop
1655
.menucreated:
2034
.menucreated:
1656
        test    edx, edx
2035
        test    edx, edx
1657
        jz      .menuret
2036
        jz      .menuret_free
1658
        and     dword [edx], 0
2037
        and     dword [edx], 0
-
 
2038
        pop     edx
-
 
2039
        mov     ecx, edx
-
 
2040
        add     [ecx], edx
1659
@@:
2041
@@:
-
 
2042
        mov     ecx, [ecx]
1660
        cmp     dword [edx+4], 0
2043
        cmp     dword [ecx], 0
1661
        jz      @f
2044
        jz      @f
1662
        mov     edx, [edx+4]
2045
        add     [ecx], edx
-
 
2046
        add     [ecx+4], edx
1663
        jmp     @b
2047
        jmp     @b
1664
@@:
2048
@@:
-
 
2049
        add     [ecx+4], edx
-
 
2050
        push    edx
1665
        push    1
2051
        push    1
1666
        push    esi
2052
        push    esi
1667
        push    edx
2053
        push    edx
1668
        call    menu
2054
        call    menu
1669
        cmp     eax, -1
2055
        cmp     eax, -1
1670
        jz      .menuret
2056
        jz      .menuret_free
1671
        push    dword [eax-4]
-
 
1672
@@:
-
 
1673
        test    edx, edx
-
 
1674
        jz      @f
-
 
1675
        lea     eax, [edx-4]
2057
        lea     edi, [eax+8]
1676
        mov     edx, [edx]
-
 
1677
        call    mf_free
-
 
1678
        jmp     @b
-
 
1679
@@:
2058
@@:
1680
        pop     eax
2059
        inc     edi
-
 
2060
        cmp     byte [edi-1], 0
-
 
2061
        jnz     @b
-
 
2062
        mov     ebp, [active_panel]
1681
        call    get_curfile_folder_entry
2063
        call    get_curfile_folder_entry
1682
        jmp     .run_association2
2064
        call    .run_association2
-
 
2065
.menuret_free:
-
 
2066
        pop     ecx
-
 
2067
        jmp     pgfree
1683
.f7:
2068
.f7:
1684
        mov     dword [CopyDestEditBuf], CopyDestEditBuf.length
2069
        mov     dword [CopyDestEditBuf], CopyDestEditBuf.length
1685
        and     dword [CopyDestEditBuf+4], 0
2070
        and     dword [CopyDestEditBuf+4], 0
1686
        and     dword [CopyDestEditBuf+8], 0
2071
        and     dword [CopyDestEditBuf+8], 0
1687
        mov     byte [CopyDestEditBuf+12], 0
2072
        mov     byte [CopyDestEditBuf+12], 0
1688
        mov     ebx, mkdir_dlgdata
2073
        mov     ebx, mkdir_dlgdata
1689
        mov     eax, [cur_width]
2074
        mov     eax, [cur_width]
1690
        sub     eax, 12
2075
        sub     eax, 12
1691
        mov     [ebx + dlgtemplate.width], eax
2076
        mov     [ebx + dlgtemplate.width], eax
1692
        dec     eax
2077
        dec     eax
1693
        dec     eax
2078
        dec     eax
1694
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.width2], eax
2079
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.width2], eax
1695
        shr     eax, 1
2080
        shr     eax, 1
1696
        dec     eax
2081
        dec     eax
1697
        dec     eax
2082
        dec     eax
1698
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.cont_x2], eax
2083
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.cont_x2], eax
1699
        sub     eax, a_ContinueLength-1
2084
        sub     eax, a_ContinueLength-1
1700
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.cont_x1], eax
2085
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.cont_x1], eax
1701
        add     eax, a_ContinueLength+3
2086
        add     eax, a_ContinueLength+3
1702
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.cnl_x1], eax
2087
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.cnl_x1], eax
1703
        add     eax, aCancelBLength - 1
2088
        add     eax, aCancelBLength - 1
1704
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.cnl_x2], eax
2089
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.cnl_x2], eax
1705
        mov     byte [ebx - mkdir_dlgdata + mkdir_dlgdata.flags0], 0xC
2090
        mov     byte [ebx - mkdir_dlgdata + mkdir_dlgdata.flags0], 0xC
1706
        and     byte [ebx - mkdir_dlgdata + mkdir_dlgdata.flags1], not 4
2091
        and     byte [ebx - mkdir_dlgdata + mkdir_dlgdata.flags1], not 4
1707
        and     byte [ebx - mkdir_dlgdata + mkdir_dlgdata.flags2], not 4
2092
        and     byte [ebx - mkdir_dlgdata + mkdir_dlgdata.flags2], not 4
1708
        push    ebx
2093
        push    ebx
1709
        call    DialogBox
2094
        call    DialogBox
1710
        cmp     eax, mkdir_dlgdata.cont_btn
2095
        cmp     eax, mkdir_dlgdata.cont_btn
1711
        jnz     .ret2
2096
        jnz     .ret2
1712
        mov     esi, CopyDestEditBuf+12
2097
        mov     esi, CopyDestEditBuf+12
1713
        cmp     byte [esi], 0
2098
        cmp     byte [esi], 0
1714
        jz      .ret2
2099
        jz      .ret2
1715
        cmp     byte [esi], '/'
2100
        cmp     byte [esi], '/'
1716
        jz      .mkdir_absolute_path
2101
        jz      .mkdir_absolute_path
1717
        push    esi
2102
        push    esi
1718
        lea     edi, [ebp + panel1_dir - panel1_data]
2103
        lea     edi, [ebp + panel1_dir - panel1_data]
1719
        or      ecx, -1
2104
        or      ecx, -1
1720
        xor     eax, eax
2105
        xor     eax, eax
1721
        repnz   scasb
2106
        repnz   scasb
1722
        not     ecx
2107
        not     ecx
1723
        mov     edi, esi
2108
        mov     edi, esi
1724
@@:
2109
@@:
1725
        cmp     byte [edi+1], 0
2110
        cmp     byte [edi+1], 0
1726
        jz      @f
2111
        jz      @f
1727
        inc     edi
2112
        inc     edi
1728
        jmp     @b
2113
        jmp     @b
1729
@@:
2114
@@:
1730
        push    edi
2115
        push    edi
1731
        add     edi, ecx
2116
        add     edi, ecx
1732
        cmp     edi, CopyDestEditBuf+12+513
2117
        cmp     edi, CopyDestEditBuf+12+513
1733
        pop     edi
2118
        pop     edi
1734
        jb      @f
2119
        jb      @f
1735
        pop     esi
2120
        pop     esi
1736
        jmp     .bigfilename
2121
        jmp     .bigfilename
1737
@@:
2122
@@:
1738
        lea     edx, [edi+2]
2123
        lea     edx, [edi+2]
1739
        sub     edx, esi
2124
        sub     edx, esi
1740
        lea     edi, [edi+ecx+1]
2125
        lea     edi, [edi+ecx+1]
1741
        xchg    ecx, edx
2126
        xchg    ecx, edx
1742
        std
2127
        std
1743
        lea     esi, [esi+ecx-1]
2128
        lea     esi, [esi+ecx-1]
1744
        rep     movsb
2129
        rep     movsb
1745
        cld
2130
        cld
1746
        pop     edi
2131
        pop     edi
1747
        lea     esi, [ebp + panel1_dir - panel1_data]
2132
        lea     esi, [ebp + panel1_dir - panel1_data]
1748
        push    edi
2133
        push    edi
1749
        mov     ecx, edx
2134
        mov     ecx, edx
1750
        rep     movsb
2135
        rep     movsb
1751
        mov     byte [edi-1], '/'
2136
        mov     byte [edi-1], '/'
1752
        pop     esi
2137
        pop     esi
1753
.mkdir_absolute_path:
2138
.mkdir_absolute_path:
1754
.mkdir_retry:
2139
.mkdir_retry:
1755
        push    70
2140
        push    70
1756
        pop     eax
2141
        pop     eax
1757
        mov     ebx, mkdirinfo
2142
        mov     ebx, mkdirinfo
1758
        int     0x40
2143
        int     0x40
1759
        test    eax, eax
2144
        test    eax, eax
1760
        jz      @f
2145
        jz      @f
1761
        push    CopyDestEditBuf+12
2146
        push    dword CopyDestEditBuf+12
1762
        push    aCannotMakeFolder
2147
        push    dword aCannotMakeFolder
1763
        call    get_error_msg
2148
        call    get_error_msg
1764
        push    eax
2149
        push    eax
1765
        mov     eax, esp
2150
        mov     eax, esp
1766
        push    RetryOrCancelBtn
2151
        push    dword RetryOrCancelBtn
1767
        push    2
2152
        push    2
1768
        push    eax
2153
        push    eax
1769
        push    3
2154
        push    3
1770
        push    -1
2155
        push    -1
1771
        push    -1
2156
        push    -1
1772
        push    aError
2157
        push    dword aError
1773
        call    SayErr
2158
        call    SayErr
1774
        add     esp, 3*4
2159
        add     esp, 3*4
1775
        test    eax, eax
2160
        test    eax, eax
1776
        jz      .mkdir_retry
2161
        jz      .mkdir_retry
1777
@@:
2162
@@:
1778
        jmp     .copydone
2163
        jmp     .copydone
-
 
2164
.change_mode:
-
 
2165
        dec     eax
-
 
2166
        mov     [ebp + panel1_colmode - panel1_data], eax
-
 
2167
        call    calc_colwidths
-
 
2168
        jmp     draw_panel
-
 
2169
.quick_jump:
-
 
2170
        dec     eax
-
 
2171
        cmp     al, 10
-
 
2172
        jnz     @f
-
 
2173
        xor     eax, eax
-
 
2174
@@:
-
 
2175
        mov     eax, [FolderShortcuts+eax*4]
-
 
2176
        test    eax, eax
-
 
2177
        jnz     @f
-
 
2178
        ret
-
 
2179
@@:
-
 
2180
        lea     esi, [ebp + panel1_dir - panel1_data]
-
 
2181
        push    eax esi
-
 
2182
        mov     edi, prev_dir
-
 
2183
@@:
-
 
2184
        lodsb
-
 
2185
        stosb
-
 
2186
        test    al, al
-
 
2187
        jnz     @b
-
 
2188
        pop     edi esi
-
 
2189
@@:
-
 
2190
        lodsb
-
 
2191
        stosb
-
 
2192
        test    al, al
-
 
2193
        jnz     @b
-
 
2194
        jmp     .reread
-
 
2195
.greyplus:
-
 
2196
        push    0
-
 
2197
        mov     ecx, aSelect
-
 
2198
        jmp     @f
-
 
2199
.greyminus:
-
 
2200
        push    1
-
 
2201
        mov     ecx, aDeselect
-
 
2202
@@:
-
 
2203
        mov     eax, mark_dlgdata
-
 
2204
        mov     [eax+mark_dlgdata.title-mark_dlgdata], ecx
-
 
2205
        mov     [eax+mark_dlgdata.flags-mark_dlgdata], 0xC
-
 
2206
        mov     edi, enter_string_buf+12
-
 
2207
        mov     dword [edi-12], 512
-
 
2208
        mov     dword [edi-8], 1
-
 
2209
        and     dword [edi-4], 0
-
 
2210
        mov     word [edi], '*'
-
 
2211
        push    eax
-
 
2212
        call    DialogBox
-
 
2213
        inc     eax
-
 
2214
        jnz     @f
-
 
2215
.noselect:
-
 
2216
        pop     eax
-
 
2217
        ret
-
 
2218
@@:
-
 
2219
        xor     eax, eax
-
 
2220
        mov     esi, edi
-
 
2221
@@:
-
 
2222
        lodsb
-
 
2223
        mov     al, [tolower_table+eax]
-
 
2224
        mov     [esi-1], al
-
 
2225
        test    al, al
-
 
2226
        jnz     @b
-
 
2227
@@:
-
 
2228
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
-
 
2229
        mov     ebx, [ebp + panel1_files - panel1_data]
-
 
2230
        jecxz   .noselect
-
 
2231
        mov     eax, [ebx]
-
 
2232
        cmp     word [eax+40], '..'
-
 
2233
        jnz     .selectloop
-
 
2234
        cmp     byte [eax+42], 0
-
 
2235
        jnz     .selectloop
-
 
2236
        dec     ecx
-
 
2237
        jz      .noselect
-
 
2238
        add     ebx, 4
-
 
2239
.selectloop:
-
 
2240
        xor     eax, eax
-
 
2241
        mov     esi, [ebx]
-
 
2242
        add     esi, 40
-
 
2243
        mov     edx, lower_file_name-1
-
 
2244
@@:
-
 
2245
        lodsb
-
 
2246
        inc     edx
-
 
2247
        mov     al, [tolower_table+eax]
-
 
2248
        mov     [edx], al
-
 
2249
        test    al, al
-
 
2250
        jnz     @b
-
 
2251
        mov     esi, lower_file_name
-
 
2252
        call    match_mask_rev_lowercase
-
 
2253
        jc      @f
-
 
2254
        mov     esi, [ebx]
-
 
2255
        mov     eax, [esi+32]
-
 
2256
        cmp     byte [esp], 0
-
 
2257
        jz      .doselect
-
 
2258
        test    byte [esi+303], 1
-
 
2259
        jz      @f
-
 
2260
        and     byte [esi+303], not 1
-
 
2261
        sub     dword [ebp + panel1_selected_size - panel1_data], eax
-
 
2262
        mov     eax, [esi+36]
-
 
2263
        sbb     dword [ebp + panel1_selected_size+4 - panel1_data], eax
-
 
2264
        dec     dword [ebp + panel1_selected_num - panel1_data]
-
 
2265
        jmp     @f
-
 
2266
.doselect:
-
 
2267
        test    byte [esi+303], 1
-
 
2268
        jnz     @f
-
 
2269
        or      byte [esi+303], 1
-
 
2270
        add     dword [ebp + panel1_selected_size - panel1_data], eax
-
 
2271
        mov     eax, [esi+36]
-
 
2272
        adc     dword [ebp + panel1_selected_size+4 - panel1_data], eax
-
 
2273
        inc     dword [ebp + panel1_selected_num - panel1_data]
-
 
2274
@@:
-
 
2275
        add     ebx, 4
-
 
2276
        dec     ecx
-
 
2277
        jnz     .selectloop
-
 
2278
        pop     eax
-
 
2279
        jmp     .done_redraw
1779
 
2280
 
1780
panels_OnRedraw:
2281
panels_OnRedraw:
1781
        call    draw_cmdbar
2282
        call    draw_cmdbar
1782
        mov     ebp, panel1_data
2283
        mov     ebp, panel1_data
-
 
2284
        call    calc_colwidths
1783
        call    draw_panel
2285
        call    draw_panel
1784
        mov     ebp, panel2_data
2286
        mov     ebp, panel2_data
-
 
2287
        call    calc_colwidths
1785
        call    draw_panel
2288
        call    draw_panel
1786
        ret
2289
        ret
1787
 
2290
 
1788
init_console:
2291
init_console:
1789
        mov     eax, [console_data_ptr]
2292
        mov     ecx, [console_data_ptr]
1790
        call    mf_free
2293
        call    pgfree
1791
        mov     eax, [cur_width]
2294
        mov     eax, [cur_width]
1792
        mul     [cur_height]
2295
        mul     [cur_height]
1793
        mov     ecx, eax
2296
        mov     ecx, eax
1794
        add     eax, eax
2297
        push    ecx
1795
        add     eax, eax
2298
        shl     ecx, 2
1796
        call    mf_alloc
2299
        call    pgalloc
-
 
2300
        pop     ecx
1797
        test    eax, eax
2301
        test    eax, eax
1798
        jz      exit
2302
        jz      exit
1799
        mov     [console_data_ptr], eax
2303
        mov     [console_data_ptr], eax
1800
        mov     edi, eax
2304
        mov     edi, eax
1801
        mov     ax, 0720h
2305
        mov     ax, 0720h
1802
        rep     stosw
2306
        rep     stosw
1803
        mov     [panel1_left], ecx
2307
        mov     [panel1_left], ecx
1804
        mov     [panel1_top], ecx
2308
        mov     [panel1_top], ecx
1805
        mov     [panel2_top], ecx
2309
        mov     [panel2_top], ecx
1806
        mov     eax, [cur_width]
2310
        mov     eax, [cur_width]
1807
        inc     eax
2311
        inc     eax
1808
        shr     eax, 1
2312
        shr     eax, 1
1809
        mov     [panel1_width], eax
2313
        mov     [panel1_width], eax
1810
        mov     [panel2_left], eax
2314
        mov     [panel2_left], eax
1811
        sub     eax, [cur_width]
2315
        sub     eax, [cur_width]
1812
        neg     eax
2316
        neg     eax
1813
        mov     [panel2_width], eax
2317
        mov     [panel2_width], eax
1814
        mov     eax, [cur_height]
2318
        mov     eax, [cur_height]
1815
        dec     eax
2319
        dec     eax
1816
        dec     eax
2320
        dec     eax
1817
        mov     [panel1_height], eax
2321
        mov     [panel1_height], eax
1818
        mov     [panel2_height], eax
2322
        mov     [panel2_height], eax
1819
        ret
2323
        ret
1820
 
2324
 
1821
get_curfile_folder_entry:
2325
get_curfile_folder_entry:
1822
        mov     ecx, [ebp + panel1_index - panel1_data]
2326
        mov     ecx, [ebp + panel1_index - panel1_data]
1823
        shl     ecx, 2
2327
        shl     ecx, 2
1824
        add     ecx, [ebp + panel1_files - panel1_data]
2328
        add     ecx, [ebp + panel1_files - panel1_data]
1825
        mov     ecx, [ecx]
2329
        mov     ecx, [ecx]
1826
        ret
2330
        ret
1827
get_curfile_name:
2331
get_curfile_name:
1828
        call    get_curfile_folder_entry
2332
        call    get_curfile_folder_entry
1829
        add     ecx, 40
2333
        add     ecx, 40
1830
        ret
2334
        ret
1831
 
2335
 
1832
panels_getname:
2336
panels_getname:
1833
if lang eq ru
2337
if lang eq ru
1834
        mov     eax, ' ­¥'
2338
        mov     eax, ' ­¥'
1835
        stosd
2339
        stosd
1836
        mov     eax, 'Ǭ  '
2340
        mov     eax, 'Ǭ  '
1837
        stosd
2341
        stosd
1838
        mov     eax, '    '
2342
        mov     eax, '    '
1839
        stosd
2343
        stosd
1840
        stosb
2344
        stosb
1841
else
2345
else
1842
        mov     eax, 'Pane'
2346
        mov     eax, 'Pane'
1843
        stosd
2347
        stosd
1844
        mov     eax, 'ls  '
2348
        mov     eax, 'ls  '
1845
        stosd
2349
        stosd
1846
        mov     eax, '    '
2350
        mov     eax, '    '
1847
        stosd
2351
        stosd
1848
        stosb
2352
        stosb
1849
end if
2353
end if
1850
        sub     ecx, 13
2354
        sub     ecx, 13
1851
        mov     ebp, [active_panel]
2355
        mov     ebp, [active_panel]
1852
        lea     esi, [ebp + panel1_dir - panel1_data]
2356
        lea     esi, [ebp + panel1_dir - panel1_data]
1853
        push    3
2357
        push    3
1854
        pop     edx
2358
        pop     edx
1855
@@:
2359
@@:
1856
        lodsb
2360
        lodsb
1857
        stosb
2361
        stosb
1858
        dec     ecx
2362
        dec     ecx
1859
        test    al, al
2363
        test    al, al
1860
        jz      @f
2364
        jz      @f
1861
        cmp     al, '/'
2365
        cmp     al, '/'
1862
        jnz     @b
2366
        jnz     @b
1863
        dec     edx
2367
        dec     edx
1864
        jnz     @b
2368
        jnz     @b
1865
@@:
2369
@@:
1866
        test    al, al
2370
        test    al, al
1867
        jnz     @f
2371
        jnz     @f
1868
        dec     esi
2372
        dec     esi
1869
        dec     edi
2373
        dec     edi
1870
@@:
2374
@@:
1871
        push    esi
2375
        push    esi
1872
@@:
2376
@@:
1873
        lodsb
2377
        lodsb
1874
        test    al, al
2378
        test    al, al
1875
        jnz     @b
2379
        jnz     @b
1876
        dec     esi
2380
        dec     esi
1877
        mov     ebx, esi
2381
        mov     ebx, esi
1878
        sub     ebx, [esp]
2382
        sub     ebx, [esp]
1879
        dec     esi
2383
        dec     esi
1880
        push    esi
2384
        push    esi
1881
        mov     esi, [ebp + panel1_index - panel1_data]
2385
        mov     esi, [ebp + panel1_index - panel1_data]
1882
        shl     esi, 2
2386
        shl     esi, 2
1883
        add     esi, [ebp + panel1_files - panel1_data]
2387
        add     esi, [ebp + panel1_files - panel1_data]
1884
        mov     esi, [esi]
2388
        mov     esi, [esi]
1885
        add     esi, 40
2389
        add     esi, 40
1886
        push    esi
2390
        push    esi
1887
@@:
2391
@@:
1888
        lodsb
2392
        lodsb
1889
        test    al, al
2393
        test    al, al
1890
        jnz     @b
2394
        jnz     @b
1891
        add     ebx, esi
2395
        add     ebx, esi
1892
        sub     ebx, [esp]
2396
        sub     ebx, [esp]
1893
        dec     esi
2397
        dec     esi
1894
        cmp     ebx, ecx
2398
        cmp     ebx, ecx
1895
        jbe     @f
2399
        jbe     @f
1896
        mov     al, '.'
2400
        mov     al, '.'
1897
        stosb
2401
        stosb
1898
        stosb
2402
        stosb
1899
        stosb
2403
        stosb
1900
        sub     ecx, 3
2404
        sub     ecx, 3
1901
        mov     ebx, ecx
2405
        mov     ebx, ecx
1902
@@:
2406
@@:
1903
        add     edi, ebx
2407
        add     edi, ebx
1904
        inc     ecx
2408
        inc     ecx
1905
        std
2409
        std
1906
@@:
2410
@@:
1907
        movsb
2411
        movsb
1908
        dec     ecx
2412
        dec     ecx
1909
        jz      .nodir
2413
        jz      .nodir
1910
        cmp     esi, [esp]
2414
        cmp     esi, [esp]
1911
        jae     @b
2415
        jae     @b
1912
        mov     al, '/'
2416
        mov     al, '/'
1913
        stosb
2417
        stosb
1914
        dec     ecx
2418
        dec     ecx
1915
        jz      .nodir
2419
        jz      .nodir
1916
        mov     esi, [esp+4]
2420
        mov     esi, [esp+4]
1917
@@:
2421
@@:
1918
        cmp     esi, [esp+8]
2422
        cmp     esi, [esp+8]
1919
        jb      .nodir
2423
        jb      .nodir
1920
        movsb
2424
        movsb
1921
        loop    @b
2425
        loop    @b
1922
.nodir:
2426
.nodir:
1923
        cld
2427
        cld
1924
        pop     eax
2428
        pop     eax
1925
        pop     eax
2429
        pop     eax
1926
        pop     eax
2430
        pop     eax
1927
        ret
2431
        ret
1928
 
2432
 
1929
draw_window:
2433
draw_window:
1930
        push    12
2434
        push    12
1931
        pop     eax
2435
        pop     eax
1932
        push    1
2436
        push    1
1933
        pop     ebx
2437
        pop     ebx
1934
        int     40h
2438
        int     40h
1935
        mov     al, 48
2439
        mov     al, 48
1936
        mov     bl, 4
2440
        mov     bl, 4
1937
        int     40h
2441
        int     40h
1938
        mov     [skinh], eax
2442
        mov     [skinh], eax
1939
        mov     ebx, [cur_width]
2443
        mov     ebx, [cur_width]
1940
        imul    ebx, font_width
2444
        imul    ebx, font_width
1941
        add     ebx, 100*65536 + 5*2-1
2445
        add     ebx, 100*65536 + 5*2-1
1942
        mov     ecx, [cur_height]
2446
        mov     ecx, [cur_height]
1943
        imul    ecx, font_height
2447
        imul    ecx, font_height
1944
        lea     ecx, [eax+ecx+5-1+100*65536]
2448
        lea     ecx, [eax+ecx+5-1+100*65536]
1945
        xor     eax, eax
2449
        xor     eax, eax
1946
        mov     edx, 0x53000000
2450
        mov     edx, 0x53000000
1947
        mov     edi, header
2451
        mov     edi, header
1948
        int     40h
2452
        int     40h
1949
        mov     al, 13
2453
        mov     al, 13
1950
        xor     edx, edx
2454
        xor     edx, edx
1951
        cmp     [fill_width], 0
2455
        cmp     [fill_width], 0
1952
        jz      @f
2456
        jz      @f
1953
        mov     ebx, [wnd_width]
2457
        mov     ebx, [wnd_width]
1954
        sub     ebx, [fill_width]
2458
        sub     ebx, [fill_width]
1955
        sub     ebx, 5-1
2459
        sub     ebx, 5-1
1956
        shl     ebx, 16
2460
        shl     ebx, 16
1957
        mov     bx, word [fill_width]
2461
        mov     bx, word [fill_width]
1958
        mov     ecx, [skinh-2]
2462
        mov     ecx, [skinh-2]
1959
        mov     cx, word [wnd_height]
2463
        mov     cx, word [wnd_height]
1960
        sub     cx, word [skinh]
2464
        sub     cx, word [skinh]
1961
        sub     cx, 5-1
2465
        sub     cx, 5-1
1962
        int     0x40
2466
        int     0x40
1963
@@:
2467
@@:
1964
        cmp     [fill_height], 0
2468
        cmp     [fill_height], 0
1965
        jz      @f
2469
        jz      @f
1966
        mov     al, 13
-
 
1967
        xor     edx, edx
2470
        xor     edx, edx
1968
        mov     ebx, 50000h
2471
        mov     ebx, 50000h
1969
        mov     bx, word [wnd_width]
2472
        mov     bx, word [wnd_width]
1970
        sub     ebx, 9
2473
        sub     ebx, 9
1971
        mov     ecx, [wnd_height]
2474
        mov     ecx, [wnd_height]
1972
        sub     ecx, [fill_height]
2475
        sub     ecx, [fill_height]
1973
        sub     ecx, 5-1
2476
        sub     ecx, 5-1
1974
        shl     ecx, 16
2477
        shl     ecx, 16
1975
        mov     cx, word [fill_height]
2478
        mov     cx, word [fill_height]
1976
        int     0x40
2479
        int     0x40
1977
@@:
2480
@@:
1978
;        xor     ecx, ecx
2481
;        xor     ecx, ecx
1979
;        call    draw_image
2482
;        call    draw_image
1980
        and     [min_x], 0
2483
        mov     al, 65
-
 
2484
        mov     ebx, [MemForImage]
1981
        and     [min_y], 0
2485
        test    ebx, ebx
-
 
2486
        jz      @f
1982
        mov     eax, [cur_width]
2487
        mov     ecx, [cur_width]
-
 
2488
        imul    ecx, font_width*10000h
-
 
2489
        mov     cx, word [cur_height]
1983
        dec     eax
2490
        imul    cx, font_height
1984
        mov     [max_x], eax
2491
        mov     edx, [skinh]
1985
        mov     eax, [cur_height]
2492
        add     edx, 5*10000h
1986
        dec     eax
2493
        mov     esi, 8
-
 
2494
        mov     edi, console_colors
1987
        mov     [max_y], eax
2495
        xor     ebp, ebp
1988
        call    draw_image.force
2496
        int     0x40
-
 
2497
@@:
1989
        mov     al, 12
2498
        mov     al, 12
1990
        push    2
2499
        push    2
1991
        pop     ebx
2500
        pop     ebx
1992
        int     40h
2501
        int     40h
1993
        ret
2502
        ret
1994
 
2503
 
1995
draw_image.nomem:
2504
draw_image.nomem:
1996
        mov     al, 13
2505
        mov     al, 13
1997
        xor     edx, edx
2506
        xor     edx, edx
1998
        mov     ebx, [cur_width]
2507
        mov     ebx, [cur_width]
1999
        imul    ebx, font_width
2508
        imul    ebx, font_width
2000
        add     ebx, 5*65536
2509
        add     ebx, 5*65536
2001
        mov     ecx, [skinh-2]
2510
        mov     ecx, [skinh-2]
2002
        mov     cx, word [cur_height]
2511
        mov     cx, word [cur_height]
2003
        imul    cx, font_height
2512
        imul    cx, font_height
2004
        int     40h
2513
        int     40h
2005
        mov     al, 4
2514
        mov     al, 4
2006
        mov     ebx, 32*65536+32
2515
        mov     ebx, 32*65536+32
2007
        mov     ecx, 0xFFFFFF
2516
        mov     ecx, 0xFFFFFF
2008
        mov     edx, nomem_draw
2517
        mov     edx, nomem_draw
2009
        push    nomem_draw.size
2518
        push    nomem_draw.size
2010
        pop     esi
2519
        pop     esi
2011
        int     40h
2520
        int     40h
2012
        ret
2521
        ret
2013
 
2522
 
2014
draw_image:
2523
draw_image:
-
 
2524
        mov     [bMemForImageValidData], byte 1
-
 
2525
        cmp     [MemForImage], 0
-
 
2526
        jnz     .allocated
2015
; determine draw rectangle
2527
; allocate memory for image
-
 
2528
        mov     ecx, [cur_width]
-
 
2529
        imul    ecx, [cur_height]
-
 
2530
        imul    ecx, font_width*font_height
-
 
2531
        call    pgalloc
-
 
2532
        test    eax, eax
-
 
2533
        jz      draw_image.nomem
-
 
2534
        mov     [MemForImage], eax
-
 
2535
        mov     [bMemForImageValidData], byte 0
-
 
2536
.allocated:
2016
        and     [max_x], 0
2537
        and     [max_x], 0
2017
        or      [min_x], -1
2538
        or      [min_x], -1
-
 
2539
        and     [max_y], 0
2018
        or      [min_y], -1
2540
        or      [min_y], -1
-
 
2541
        mov     eax, [cursor_y]
-
 
2542
        mul     [cur_width]
-
 
2543
        add     eax, [cursor_x]
-
 
2544
        add     eax, eax
-
 
2545
        add     eax, [console_data_ptr]
-
 
2546
        xchg    [cur_cursor_pos], eax
-
 
2547
        mov     [old_cursor_pos], eax
-
 
2548
        mov     edi, [MemForImage]
2019
        mov     esi, [console_data_ptr]
2549
        mov     esi, [console_data_ptr]
2020
        xor     eax, eax
2550
        mov     ecx, [cur_height]
-
 
2551
.lh:
2021
        xor     edx, edx
2552
        push    ecx
2022
        mov     ecx, [cur_width]
2553
        mov     ecx, [cur_width]
2023
        imul    ecx, [cur_height]
-
 
2024
.m1:
2554
.lw:
2025
        mov     bx, [esi]
-
 
2026
        cmp     bx, [esi+ecx*2]
-
 
2027
        jz      .m2
-
 
2028
        cmp     eax, [min_x]
-
 
2029
        ja      @f
-
 
2030
        mov     [min_x], eax
-
 
2031
@@:
-
 
2032
        cmp     eax, [max_x]
-
 
2033
        jb      @f
-
 
2034
        mov     [max_x], eax
-
 
2035
@@:
-
 
2036
        cmp     edx, [min_y]
-
 
2037
        jae     @f
-
 
2038
        mov     [min_y], edx
-
 
2039
@@:
-
 
2040
        mov     [max_y], edx
-
 
2041
.m2:
-
 
2042
        add     esi, 2
-
 
2043
        inc     eax
2555
        push    ecx
2044
        cmp     eax, [cur_width]
2556
        mov     eax, [cur_width]
2045
        jb      .m1
-
 
2046
        xor     eax, eax
-
 
2047
        inc     edx
-
 
2048
        cmp     edx, [cur_height]
2557
        imul    eax, [cur_height]
2049
        jb      .m1
-
 
2050
        mov     eax, [cursor_x]
2558
        mov     ebx, [esi]
2051
        cmp     eax, -1
2559
        cmp     [bMemForImageValidData], 0
2052
        jz      .m3
2560
        jz      @f
2053
        cmp     eax, [min_x]
2561
        cmp     esi, [cur_cursor_pos]
2054
        ja      @f
2562
        jz      @f
2055
        mov     [min_x], eax
-
 
2056
@@:
-
 
2057
        cmp     eax, [max_x]
2563
        cmp     esi, [old_cursor_pos]
2058
        jb      @f
2564
        jz      @f
2059
        mov     [max_x], eax
-
 
2060
@@:
-
 
2061
        mov     edx, [cursor_y]
-
 
2062
        cmp     edx, [min_y]
2565
        cmp     bx, [eax*2+esi]
2063
        ja      @f
2566
        jnz     @f
2064
        mov     [min_y], edx
-
 
2065
@@:
-
 
2066
        cmp     edx, [max_y]
2567
        inc     esi
2067
        jb      @f
2568
        inc     esi
2068
        mov     [max_y], edx
2569
        jmp     .skip_symbol
2069
@@:
2570
@@:
2070
.m3:
-
 
2071
        xchg    eax, [old_cursor_x]
-
 
2072
        xchg    edx, [old_cursor_y]
-
 
2073
        cmp     eax, -1
2571
        mov     [eax*2+esi], bx
2074
        jz      .m4
-
 
2075
        cmp     eax, [min_x]
2572
        cmp     ecx, [min_x]
2076
        ja      @f
2573
        ja      @f
2077
        mov     [min_x], eax
2574
        mov     [min_x], ecx
2078
@@:
2575
@@:
2079
        cmp     eax, [max_x]
2576
        cmp     ecx, [max_x]
2080
        jb      @f
2577
        jb      @f
2081
        mov     [max_x], eax
2578
        mov     [max_x], ecx
2082
@@:
2579
@@:
2083
        cmp     edx, [min_y]
2580
        mov     eax, [esp+4]
2084
        ja      @f
-
 
2085
        mov     [min_y], edx
2581
        mov     [min_y], eax
2086
@@:
-
 
2087
        cmp     edx, [max_y]
2582
        cmp     eax, [max_y]
2088
        jb      @f
2583
        jb      @f
2089
        mov     [max_y], edx
2584
        mov     [max_y], eax
2090
@@:
2585
@@:
2091
.m4:
-
 
2092
        cmp     [min_y], -1
-
 
2093
        jz      .nodraw
-
 
2094
.force:
-
 
2095
; allocate memory for image
-
 
2096
        mov     ecx, [max_x]
-
 
2097
        sub     ecx, [min_x]
-
 
2098
        inc     ecx
-
 
2099
        mov     [used_width], ecx
-
 
2100
        mov     edx, [max_y]
-
 
2101
        sub     edx, [min_y]
-
 
2102
        inc     edx
-
 
2103
        mov     [used_height], edx
-
 
2104
        imul    ecx, edx
-
 
2105
        imul    ecx, font_width*font_height
-
 
2106
        add     ecx, [heapend]
-
 
2107
        push    64
-
 
2108
        pop     eax
-
 
2109
        push    1
-
 
2110
        pop     ebx
-
 
2111
        int     0x40
-
 
2112
        test    eax, eax
-
 
2113
        jnz     draw_image.nomem
-
 
2114
        mov     edi, [heapend]
-
 
2115
        mov     esi, [console_data_ptr]
-
 
2116
        mov     eax, [min_y]
-
 
2117
        imul    eax, [cur_width]
-
 
2118
        add     eax, [min_x]
-
 
2119
        lea     esi, [esi+eax*2]
-
 
2120
        mov     ecx, [used_height]
-
 
2121
.lh:
-
 
2122
        push    ecx esi
-
 
2123
        mov     ecx, [used_width]
-
 
2124
.lw:
-
 
2125
        push    ecx
-
 
2126
        mov     ebx, [esi]
-
 
2127
        mov     eax, [cur_width]
-
 
2128
        imul    eax, [cur_height]
-
 
2129
        mov     [eax*2+esi], bx
-
 
2130
        movzx   eax, bl
-
 
2131
        push    edi
2586
        push    edi
2132
        movzx   ebx, bh
2587
        xor     eax, eax
-
 
2588
        mov     al, [esi+1]
-
 
2589
        and     al, 0xF
2133
        mov     ebp, ebx
2590
        mov     ebx, eax
-
 
2591
        mov     al, [esi+1]
2134
        shr     ebp, 4
2592
        shr     al, 4
2135
        and     ebx, 0xF
2593
        mov     ebp, eax
2136
        sub     ebx, ebp
2594
        sub     ebx, ebp
-
 
2595
        lodsb
2137
        add     esi, 2
2596
        inc     esi
2138
if font_width > 8
2597
if font_width > 8
2139
        lea     edx, [eax+eax+font]
2598
        lea     edx, [eax+eax+font]
2140
else
2599
else
2141
        lea     edx, [eax+font]
2600
        lea     edx, [eax+font]
2142
end if
2601
end if
2143
        mov     ecx, font_height
-
 
2144
.sh:
2602
.sh:
2145
        push    ecx edx edi
-
 
2146
        xor     ecx, ecx
2603
        mov     ecx, [edx]
2147
        mov     edx, [edx]
2604
repeat font_width
2148
.sw:
-
 
2149
        shr     edx, 1
2605
        shr     ecx, 1
2150
        sbb     eax, eax
2606
        sbb     eax, eax
2151
        and     eax, ebx
2607
        and     eax, ebx
2152
        add     eax, ebp
2608
        add     eax, ebp
2153
        mov     [edi], al
2609
        mov     [edi+%-1], al
-
 
2610
end repeat
2154
        add     ecx, 1
2611
        mov     eax, [cur_width]
-
 
2612
;        imul    eax, font_width
2155
        add     edi, 1
2613
;        add     edi, eax
-
 
2614
if font_width = 6
2156
        cmp     ecx, font_width
2615
        lea     eax, [eax*2+eax]
-
 
2616
        lea     edi, [edi+eax*2]
-
 
2617
else if font_width = 7
2157
        jb      .sw
2618
        lea     edi, [edi+eax*8]
2158
        pop     edi edx ecx
2619
        sub     edi, eax
-
 
2620
else if font_width = 8
2159
        mov     eax, [used_width]
2621
        lea     edi, [edi+eax*8]
-
 
2622
else if font_width = 9
2160
        imul    eax, font_width
2623
        lea     edi, [edi+eax*8]
2161
        add     edi, eax
2624
        add     edi, eax
-
 
2625
else if font_width = 10
-
 
2626
        lea     eax, [eax*4+eax]
-
 
2627
        lea     edi, [edi+eax*2]
-
 
2628
else
-
 
2629
Unknown font_width value!
-
 
2630
end if
2162
if font_width > 8
2631
if font_width > 8
2163
        add     edx, 256*2
2632
        add     edx, 256*2
-
 
2633
        cmp     edx, font+256*2*font_height
2164
else
2634
else
2165
        add     edx, 256
2635
        add     edx, 256
-
 
2636
        cmp     edx, font+256*font_height
2166
end if
2637
end if
2167
        loop    .sh
2638
        jb      .sh
2168
        pop     edi
2639
        pop     edi
2169
.skip_symbol:
2640
.skip_symbol:
2170
        pop     ecx
2641
        pop     ecx
2171
        add     edi, font_width
2642
        add     edi, font_width
2172
        dec     ecx
2643
        dec     ecx
2173
        jnz     .lw
2644
        jnz     .lw
2174
        mov     eax, [used_width]
2645
        mov     eax, [cur_width]
2175
        imul    eax, (font_height-1)*font_width
2646
        imul    eax, (font_height-1)*font_width
2176
        add     edi, eax
2647
        add     edi, eax
2177
        pop     esi ecx
2648
        pop     ecx
2178
        add     esi, [cur_width]
-
 
2179
        add     esi, [cur_width]
-
 
2180
        dec     ecx
2649
        dec     ecx
2181
        jnz     .lh
2650
        jnz     .lh
2182
; cursor
2651
; cursor
2183
        mov     eax, [cursor_y]
2652
        mov     eax, [cursor_y]
2184
        inc     eax
2653
        inc     eax
2185
        jz      .nocursor
2654
        jz      .nocursor
2186
        sub     eax, [min_y]
-
 
2187
        mul     [used_width]
2655
        mul     [cur_width]
2188
        imul    eax, font_height*font_width
2656
        imul    eax, font_height*font_width
2189
        mov     edx, [cursor_x]
2657
        mov     edx, [cursor_x]
2190
        sub     edx, [min_x]
-
 
2191
        inc     edx
2658
        inc     edx
2192
        imul    edx, font_width
2659
        imul    edx, font_width
2193
        add     eax, edx
2660
        add     eax, edx
2194
        add     eax, [heapend]
2661
        add     eax, [MemForImage]
2195
        mov     edx, [used_width]
2662
        mov     edx, [cur_width]
2196
        imul    edx, font_width
2663
        imul    edx, font_width
2197
        neg     edx
2664
        neg     edx
2198
        mov     ecx, (font_height*15+50)/100
2665
        mov     ecx, (font_height*15+50)/100
2199
.cursor_loop:
2666
.cursor_loop:
2200
        push    ecx
2667
        push    ecx
2201
        mov     ecx, font_width
2668
        mov     ecx, font_width
2202
        add     eax, edx
2669
        add     eax, edx
2203
        push    eax
2670
        push    eax
2204
@@:
2671
@@:
2205
;        add     byte [eax-1], 0x10
2672
;        add     byte [eax-1], 0x10
2206
        xor     byte [eax-1], 7
2673
        xor     byte [eax-1], 7
2207
        sub     eax, 1
2674
        sub     eax, 1
2208
        loop    @b
2675
        loop    @b
2209
        pop     eax
2676
        pop     eax
2210
        pop     ecx
2677
        pop     ecx
2211
        loop    .cursor_loop
2678
        loop    .cursor_loop
2212
.nocursor:
2679
.nocursor:
-
 
2680
        cmp     [min_y], -1
-
 
2681
        jz      .nodraw
2213
        mov     ecx, [used_width]
2682
        mov     ecx, [cur_width]
2214
        imul    ecx, font_width*65536
2683
        mov     ebx, [cur_height]
-
 
2684
        mov     eax, ebx
-
 
2685
        sub     ebx, [max_y]
2215
        mov     cx, word [used_height]
2686
        sub     eax, [min_y]
-
 
2687
        sub     eax, ebx
-
 
2688
        inc     eax
2216
        imul    cx, font_height
2689
        imul    ebp, eax, font_height
-
 
2690
        mov     edx, ecx
2217
        mov     edx, [min_x]
2691
        sub     edx, [max_x]
2218
        imul    edx, font_width
2692
        imul    edx, font_width
2219
        add     edx, 5
2693
        mov     eax, edx
2220
        shl     edx, 16
2694
        shl     edx, 16
-
 
2695
        imul    dx, bx, font_height
-
 
2696
        imul    ebx, [cur_width]
2221
        mov     dx, word [min_y]
2697
        mov     ecx, [max_x]
-
 
2698
        sub     ecx, [min_x]
-
 
2699
        inc     ecx
-
 
2700
        imul    ecx, font_width*10000h
-
 
2701
        add     ecx, ebp
2222
        imul    dx, font_height
2702
        imul    ebx, font_width*font_height
-
 
2703
        add     ebx, [MemForImage]
-
 
2704
        add     ebx, eax
2223
        add     edx, [skinh]
2705
        add     edx, [skinh]
-
 
2706
        add     edx, 5*10000h
-
 
2707
        imul    esi, [cur_width], font_width
-
 
2708
        mov     ebp, ecx
-
 
2709
        shr     ebp, 16
-
 
2710
        sub     esi, ebp
-
 
2711
        mov     ebp, esi
2224
        push    65
2712
        push    65
2225
        pop     eax
2713
        pop     eax
2226
        mov     ebx, [heapend]
2714
        mov     edi, console_colors
2227
        push    8
2715
        push    8
2228
        pop     esi
2716
        pop     esi
2229
        mov     edi, console_colors
-
 
2230
        xor     ebp, ebp
-
 
2231
        int     0x40
2717
        int     40h
2232
        push    64
-
 
2233
        pop     eax
-
 
2234
        push    1
-
 
2235
        pop     ebx
-
 
2236
        mov     ecx, [heapend]
-
 
2237
        int     0x40
-
 
2238
.nodraw:
2718
.nodraw:
2239
        ret
2719
        ret
2240
 
2720
 
2241
get_console_ptr:
2721
get_console_ptr:
2242
; in: eax=x, edx=y
2722
; in: eax=x, edx=y
2243
; out: edi->console data
2723
; out: edi->console data
2244
        push    edx
2724
        push    edx
2245
        imul    edx, [cur_width]
2725
        imul    edx, [cur_width]
2246
        add     edx, eax
2726
        add     edx, eax
2247
        mov     edi, [console_data_ptr]
2727
        mov     edi, [console_data_ptr]
2248
        lea     edi, [edi + edx*2]
2728
        lea     edi, [edi + edx*2]
2249
        pop     edx
2729
        pop     edx
2250
        ret
2730
        ret
2251
 
2731
 
2252
draw_keybar:
2732
draw_keybar:
2253
        pushad
2733
        pushad
2254
        xor     eax, eax
2734
        xor     eax, eax
2255
        test    [ctrlstate], 3
2735
        test    [ctrlstate], 3
2256
        jz      @f
2736
        jz      @f
2257
        inc     eax
2737
        inc     eax
2258
@@:
2738
@@:
2259
        test    [ctrlstate], 0xC
2739
        test    [ctrlstate], 0xC
2260
        jz      @f
2740
        jz      @f
2261
        or      al, 2
2741
        or      al, 2
2262
@@:
2742
@@:
2263
        test    [ctrlstate], 0x30
2743
        test    [ctrlstate], 0x30
2264
        jz      @f
2744
        jz      @f
2265
        or      al, 4
2745
        or      al, 4
2266
@@:
2746
@@:
2267
        imul    eax, 6*12
2747
        imul    eax, 6*12
2268
        mov     esi, [active_screen_vtable]
2748
        mov     esi, [active_screen_vtable]
2269
        mov     esi, [esi+screen_vtable.keybar]
2749
        mov     esi, [esi+screen_vtable.keybar]
2270
        add     esi, eax
2750
        add     esi, eax
2271
        xor     ecx, ecx
2751
        xor     ecx, ecx
2272
        inc     ecx
2752
        inc     ecx
2273
        xor     eax, eax
2753
        xor     eax, eax
2274
        mov     edx, [cur_height]
2754
        mov     edx, [cur_height]
2275
        dec     edx
2755
        dec     edx
2276
        call    get_console_ptr
2756
        call    get_console_ptr
2277
        push    6
2757
        push    6
2278
        pop     ebx
2758
        pop     ebx
2279
        mov     eax, [cur_width]
2759
        mov     eax, [cur_width]
2280
        sub     eax, 11+9+3*2+6
2760
        sub     eax, 11+9+3*2+6
2281
        cmp     eax, 7*11
2761
        cmp     eax, 7*11
2282
        jl      @f
2762
        jl      @f
2283
        cdq
2763
        cdq
2284
        mov     bl, 11
2764
        mov     bl, 11
2285
        div     ebx
2765
        div     ebx
2286
        mov     ebx, eax
2766
        mov     ebx, eax
2287
@@:
2767
@@:
2288
        xor     edx, edx
2768
        xor     edx, edx
2289
.l:
2769
.l:
2290
        add     edx, 7
2770
        add     edx, 7
2291
        cmp     cl, 10
2771
        cmp     cl, 10
2292
        jb      @f
2772
        jb      @f
2293
        inc     edx
2773
        inc     edx
2294
@@:
2774
@@:
2295
        cmp     edx, [cur_width]
2775
        cmp     edx, [cur_width]
2296
        ja      .ret
2776
        ja      .ret
2297
        cmp     cl, 10
2777
        cmp     cl, 10
2298
        jae     .twodig
2778
        jae     .twodig
2299
        lea     eax, [ecx+'0']
2779
        lea     eax, [ecx+'0']
2300
        stosb
2780
        stosb
2301
        mov     al, [keybar_number_color]
2781
        mov     al, [keybar_number_color]
2302
        stosb
2782
        stosb
2303
        jmp     .cmn
2783
        jmp     .cmn
2304
.twodig:
2784
.twodig:
2305
        mov     al, cl
2785
        mov     al, cl
2306
        cbw
2786
        cbw
2307
        div     [_10]
2787
        div     [_10]
2308
        add     al, '0'
2788
        add     al, '0'
2309
        stosb
2789
        stosb
2310
        mov     al, [keybar_number_color]
2790
        mov     al, [keybar_number_color]
2311
        stosb
2791
        stosb
2312
        xchg    al, ah
2792
        xchg    al, ah
2313
        add     al, '0'
2793
        add     al, '0'
2314
        stosw
2794
        stosw
2315
.cmn:
2795
.cmn:
2316
        mov     ah, [keybar_name_color]
2796
        mov     ah, [keybar_name_color]
2317
        push    ecx
2797
        push    ecx
2318
        mov     cl, 6
2798
        mov     cl, 6
2319
@@:
2799
@@:
2320
        lodsb
2800
        lodsb
2321
        stosw
2801
        stosw
2322
        loop    @b
2802
        loop    @b
2323
        mov     al, ' '
2803
        mov     al, ' '
2324
        lea     ecx, [ebx-6]
2804
        lea     ecx, [ebx-6]
2325
        cmp     byte [esp], 12
2805
        cmp     byte [esp], 12
2326
        jz      .ret_pop
2806
        jz      .ret_pop
2327
        add     edx, ecx
2807
        add     edx, ecx
2328
        rep     stosw
2808
        rep     stosw
2329
        pop     ecx
2809
        pop     ecx
2330
        inc     edx
2810
        inc     edx
2331
        cmp     edx, [cur_width]
2811
        cmp     edx, [cur_width]
2332
        ja      .ret
2812
        ja      .ret
2333
        mov     ah, [keybar_bgr_color]
2813
        mov     ah, [keybar_bgr_color]
2334
        stosw
2814
        stosw
2335
        inc     ecx
2815
        inc     ecx
2336
        jmp     .l
2816
        jmp     .l
2337
.ret_pop:
2817
.ret_pop:
2338
        pop     ecx
2818
        pop     ecx
2339
.ret:
2819
.ret:
2340
        cmp     byte [edi-2], ' '
2820
        cmp     byte [edi-2], ' '
2341
        jnz     @f
2821
        jnz     @f
2342
        dec     edi
2822
        dec     edi
2343
        dec     edi
2823
        dec     edi
2344
@@:
2824
@@:
2345
        push    edi
2825
        push    edi
2346
        xor     eax, eax
2826
        xor     eax, eax
2347
        mov     edx, [cur_height]
2827
        mov     edx, [cur_height]
2348
        call    get_console_ptr
2828
        call    get_console_ptr
2349
        mov     ecx, edi
2829
        mov     ecx, edi
2350
        pop     edi
2830
        pop     edi
2351
        sub     ecx, edi
2831
        sub     ecx, edi
2352
        shr     ecx, 1
2832
        shr     ecx, 1
2353
        mov     al, ' '
2833
        mov     al, ' '
2354
        mov     ah, [keybar_name_color]
2834
        mov     ah, [keybar_name_color]
2355
        rep     stosw
2835
        rep     stosw
2356
.done:
2836
.done:
2357
        popad
2837
        popad
2358
        ret
2838
        ret
2359
 
2839
 
2360
draw_cmdbar:
2840
draw_cmdbar:
2361
        mov     esi, [active_panel]
2841
        mov     esi, [active_panel]
2362
        add     esi, panel1_dir - panel1_data
2842
        add     esi, panel1_dir - panel1_data
2363
        xor     eax, eax
2843
        xor     eax, eax
2364
        mov     edx, [cur_height]
2844
        mov     edx, [cur_height]
2365
        dec     edx
2845
        dec     edx
2366
        dec     edx
2846
        dec     edx
2367
        call    get_console_ptr
2847
        call    get_console_ptr
2368
        mov     ah, [cmdbar_prefix_color]
2848
        mov     ah, [cmdbar_prefix_color]
2369
        mov     ecx, [cur_width]
2849
        mov     ecx, [cur_width]
2370
        dec     ecx
2850
        dec     ecx
2371
@@:
2851
@@:
2372
        lodsb
2852
        lodsb
2373
        test    al, al
2853
        test    al, al
2374
        jz      @f
2854
        jz      @f
2375
        stosw
2855
        stosw
2376
        loop    @b
2856
        loop    @b
2377
@@:
2857
@@:
2378
        mov     al, '>'
2858
        mov     al, '>'
2379
        stosw
2859
        stosw
2380
        mov     al, ' '
2860
        mov     al, ' '
2381
        mov     ah, [cmdbar_normal_color]
2861
        mov     ah, [cmdbar_normal_color]
2382
        rep     stosw
2862
        rep     stosw
2383
        ret
2863
        ret
2384
 
2864
 
2385
draw_border:
2865
draw_border:
2386
        push    edi
2866
        push    edi
2387
        mov     al, 0xC9
2867
        mov     al, 0xC9
2388
        stosw
2868
        stosw
2389
        mov     al, 0xCD
2869
        mov     al, 0xCD
2390
        lea     ecx, [ebx-2]
2870
        lea     ecx, [ebx-2]
2391
        rep     stosw
2871
        rep     stosw
2392
        mov     al, 0xBB
2872
        mov     al, 0xBB
2393
        stosw
2873
        stosw
2394
        pop     edi
2874
        pop     edi
2395
        add     edi, [cur_width]
2875
        add     edi, [cur_width]
2396
        add     edi, [cur_width]
2876
        add     edi, [cur_width]
2397
        lea     ecx, [edx-2]
2877
        lea     ecx, [edx-2]
2398
.l:
2878
.l:
2399
        push    edi
2879
        push    edi
2400
        mov     al, 0xBA
2880
        mov     al, 0xBA
2401
        stosw
2881
        stosw
2402
        mov     al, 0x20
2882
        mov     al, 0x20
2403
        push    ecx
2883
        push    ecx
2404
        lea     ecx, [ebx-2]
2884
        lea     ecx, [ebx-2]
2405
        rep     stosw
2885
        rep     stosw
2406
        pop     ecx
2886
        pop     ecx
2407
        mov     al, 0xBA
2887
        mov     al, 0xBA
2408
        stosw
2888
        stosw
2409
        pop     edi
2889
        pop     edi
2410
        add     edi, [cur_width]
2890
        add     edi, [cur_width]
2411
        add     edi, [cur_width]
2891
        add     edi, [cur_width]
2412
        loop    .l
2892
        loop    .l
2413
        mov     al, 0xC8
2893
        mov     al, 0xC8
2414
        stosw
2894
        stosw
2415
        mov     al, 0xCD
2895
        mov     al, 0xCD
2416
        lea     ecx, [ebx-2]
2896
        lea     ecx, [ebx-2]
2417
        rep     stosw
2897
        rep     stosw
2418
        mov     al, 0xBC
2898
        mov     al, 0xBC
2419
        stosw
2899
        stosw
2420
        ret
2900
        ret
-
 
2901
 
-
 
2902
calc_colwidths:
-
 
2903
; in: ebp->panel data
-
 
2904
        imul    esi, [ebp + panel1_colmode - panel1_data], PanelMode.size
-
 
2905
        add     esi, colmodes
-
 
2906
        lodsd
-
 
2907
        mov     ecx, eax
-
 
2908
        lea     edx, [ecx-1]
-
 
2909
        xor     ebx, ebx
-
 
2910
        add     esi, PanelMode.ColumnWidths-4
-
 
2911
        push    ecx esi
-
 
2912
        xor     eax, eax
-
 
2913
.loop:
-
 
2914
        lodsb
-
 
2915
        add     edx, eax
-
 
2916
        cmp     al, 1
-
 
2917
        adc     ebx, 0
-
 
2918
        loop    .loop
-
 
2919
        pop     esi ecx
-
 
2920
        lea     edi, [ebp + panel1_colwidths - panel1_data]
-
 
2921
        test    ebx, ebx
-
 
2922
        jz      .loop2
-
 
2923
        mov     eax, [ebp + panel1_width - panel1_data]
-
 
2924
        dec     eax
-
 
2925
        dec     eax
-
 
2926
        sub     eax, edx
-
 
2927
        jae     @f
-
 
2928
        xor     eax, eax
-
 
2929
@@:
-
 
2930
        xor     edx, edx
-
 
2931
        div     ebx
-
 
2932
        test    eax, eax
-
 
2933
        jnz     @f
-
 
2934
        xor     edx, edx
-
 
2935
        inc     eax
-
 
2936
@@:
-
 
2937
        push    eax
-
 
2938
.loop2:
-
 
2939
        movzx   eax, byte [esi]
-
 
2940
        inc     esi
-
 
2941
        test    eax, eax
-
 
2942
        jnz     @f
-
 
2943
        pop     eax
-
 
2944
        push    eax
-
 
2945
        dec     ebx
-
 
2946
        cmp     ebx, edx
-
 
2947
        jae     @f
-
 
2948
        inc     eax
-
 
2949
@@:
-
 
2950
        stosd
-
 
2951
        loop    .loop2
-
 
2952
        pop     eax
-
 
2953
        and     dword [edi], 0
-
 
2954
        ret
2421
 
2955
 
2422
draw_panel:
2956
draw_panel:
2423
        mov     eax, [ebp + panel1_left - panel1_data]
2957
        mov     eax, [ebp + panel1_left - panel1_data]
2424
        mov     edx, [ebp + panel1_top - panel1_data]
2958
        mov     edx, [ebp + panel1_top - panel1_data]
2425
        call    get_console_ptr
2959
        call    get_console_ptr
2426
; draw border
2960
; draw border
2427
        mov     ah, [panel_border_color]
2961
        mov     ah, [panel_border_color]
2428
        mov     ebx, [ebp + panel1_width - panel1_data]
2962
        mov     ebx, [ebp + panel1_width - panel1_data]
2429
        mov     edx, [ebp + panel1_height - panel1_data]
2963
        mov     edx, [ebp + panel1_height - panel1_data]
2430
        call    draw_border
2964
        call    draw_border
2431
        push    eax
2965
        push    eax
2432
        mov     eax, [ebp + panel1_left - panel1_data]
2966
        mov     eax, [ebp + panel1_left - panel1_data]
2433
        mov     edx, [ebp + panel1_top - panel1_data]
2967
        mov     edx, [ebp + panel1_top - panel1_data]
2434
        add     edx, [ebp + panel1_height - panel1_data]
2968
        add     edx, [ebp + panel1_height - panel1_data]
2435
        sub     edx, 3
2969
        sub     edx, 3
2436
        call    get_console_ptr
2970
        call    get_console_ptr
2437
        pop     eax
2971
        pop     eax
2438
        mov     al, 0xC7
2972
        mov     al, 0xC7
2439
        stosw
2973
        stosw
2440
        mov     al, 0xC4
2974
        mov     al, 0xC4
2441
        lea     ecx, [ebx-2]
2975
        lea     ecx, [ebx-2]
2442
        rep     stosw
2976
        rep     stosw
2443
        mov     al, 0xB6
2977
        mov     al, 0xB6
2444
        stosw
2978
        stosw
-
 
2979
 
2445
        mov     eax, [ebp + panel1_width - panel1_data]
2980
        imul    esi, [ebp + panel1_colmode - panel1_data], PanelMode.size
2446
        sub     eax, 3
2981
        add     esi, colmodes
2447
        shr     eax, 1
2982
        lodsd
2448
        mov     [column_width], eax
2983
        mov     ecx, eax        ; number of columns
-
 
2984
        lea     ebx, [ebp + panel1_colwidths - panel1_data]
2449
        mov     eax, [ebp + panel1_left - panel1_data]
2985
        mov     eax, [ebp + panel1_left - panel1_data]
2450
        inc     eax
2986
        inc     eax
2451
        mov     [column_left], eax
2987
        mov     [column_left], eax
-
 
2988
        mov     eax, [ebp + panel1_top - panel1_data]
-
 
2989
        inc     eax
-
 
2990
        mov     [column_top], eax
-
 
2991
        mov     eax, [ebp + panel1_height - panel1_data]
-
 
2992
        sub     eax, 4
-
 
2993
        mov     [column_height], eax
-
 
2994
        dec     eax
-
 
2995
        mov     [ebp + panel1_colsz - panel1_data], eax
-
 
2996
        and     [ebp + panel1_colst - panel1_data], 0
-
 
2997
        mov     eax, [ebp + panel1_start - panel1_data]
-
 
2998
        mov     [column_index], eax
-
 
2999
        mov     [last_column_index], eax
-
 
3000
.columns_loop:
-
 
3001
        push    ecx
-
 
3002
        mov     eax, [ebx]
-
 
3003
        add     ebx, 4
-
 
3004
        mov     [column_width], eax
-
 
3005
        cmp     ecx, 1
-
 
3006
        jz      .skip_right_border
2452
        add     eax, [column_width]
3007
        add     eax, [column_left]
2453
        mov     edx, [ebp + panel1_top - panel1_data]
3008
        mov     edx, [ebp + panel1_top - panel1_data]
2454
        inc     edx
-
 
2455
        mov     [column_top], edx
-
 
2456
        dec     edx
-
 
2457
        call    get_console_ptr
3009
        call    get_console_ptr
2458
        mov     ah, [panel_border_color]
3010
        mov     ah, [panel_header_color]
2459
        mov     al, 0xD1
3011
        mov     al, 0xD1
2460
        mov     [edi], ax
3012
        mov     [edi], ax
2461
        add     edi, [cur_width]
3013
        add     edi, [cur_width]
2462
        add     edi, [cur_width]
3014
        add     edi, [cur_width]
2463
        mov     ecx, [ebp + panel1_height - panel1_data]
-
 
2464
        sub     ecx, 4
-
 
2465
        mov     [column_height], ecx
3015
        mov     ecx, [column_height]
2466
        mov     al, 0xB3
3016
        mov     al, 0xB3
2467
@@:
3017
@@:
2468
        mov     [edi], ax
3018
        mov     [edi], ax
2469
        add     edi, [cur_width]
3019
        add     edi, [cur_width]
2470
        add     edi, [cur_width]
3020
        add     edi, [cur_width]
2471
        loop    @b
3021
        loop    @b
2472
        mov     al, 0xC1
3022
        mov     al, 0xC1
2473
        stosw
3023
        stosw
-
 
3024
.skip_right_border:
2474
        mov     eax, [column_height]
3025
        mov     eax, [column_left]
2475
        dec     eax
3026
        mov     edx, [column_top]
2476
        mov     [ebp + panel1_colsz - panel1_data], eax
3027
        call    get_console_ptr
-
 
3028
; § £®«®¢®ª á⮫¡æ 
-
 
3029
        push    edi
2477
        add     eax, eax
3030
        mov     edx, [esi]
2478
        mov     [ebp + panel1_colst - panel1_data], eax
3031
        and     edx, 0xF
2479
        mov     eax, [ebp + panel1_start - panel1_data]
3032
        mov     edx, [column_headers+edx*4]
2480
        mov     [column_index], eax
3033
        movzx   ecx, byte [edx]
2481
        call    draw_column
3034
        inc     edx
2482
        mov     eax, [ebp + panel1_width - panel1_data]
3035
        cmp     ecx, [column_width]
2483
        sub     eax, 3
3036
        jb      @f
2484
        mov     ecx, [column_width]
3037
        mov     ecx, [column_width]
-
 
3038
@@:
-
 
3039
        push    ecx
-
 
3040
        sub     ecx, [column_width]
-
 
3041
        neg     ecx
2485
        sub     eax, ecx
3042
        shr     ecx, 1
-
 
3043
        mov     al, ' '
-
 
3044
        mov     ah, [column_header_color]
-
 
3045
        rep     stosw
-
 
3046
        pop     ecx
-
 
3047
        jecxz   .skipcopyhdr
-
 
3048
        push    ecx
-
 
3049
@@:
-
 
3050
        mov     al, [edx]
-
 
3051
        inc     edx
-
 
3052
        stosw
-
 
3053
        loop    @b
-
 
3054
        pop     ecx
-
 
3055
.skipcopyhdr:
2486
        mov     [column_width], eax
3056
        sub     ecx, [column_width]
-
 
3057
        neg     ecx
2487
        inc     ecx
3058
        inc     ecx
-
 
3059
        shr     ecx, 1
-
 
3060
        mov     al, ' '
-
 
3061
        rep     stosw
-
 
3062
        pop     edi
-
 
3063
        add     edi, [cur_width]
-
 
3064
        add     edi, [cur_width]
-
 
3065
; á ¬ á⮫¡¥æ
-
 
3066
        mov     eax, [esi]
-
 
3067
        and     eax, 0xF
-
 
3068
        push    ebx esi
-
 
3069
        call    dword [draw_column_proc+eax*4]
-
 
3070
        pop     esi ebx
-
 
3071
        inc     esi
-
 
3072
        mov     eax, [column_width]
-
 
3073
        inc     eax
2488
        add     [column_left], ecx
3074
        add     [column_left], eax
-
 
3075
        pop     ecx
-
 
3076
        dec     ecx
2489
        call    draw_column
3077
        jnz     .columns_loop
2490
; ‡ £®«®¢®ª ¯ ­¥«¨ (⥪ãé ï ¯ ¯ª )
3078
; ‡ £®«®¢®ª ¯ ­¥«¨ (⥪ãé ï ¯ ¯ª )
2491
        lea     esi, [ebp + panel1_dir - panel1_data]
3079
        lea     esi, [ebp + panel1_dir - panel1_data]
2492
        mov     edi, cur_header
3080
        mov     edi, cur_header
2493
        mov     ecx, [ebp + panel1_width - panel1_data]
3081
        mov     ecx, [ebp + panel1_width - panel1_data]
2494
        sub     ecx, 7
3082
        sub     ecx, 7
2495
        movsb
3083
        movsb
2496
@@:
3084
@@:
2497
        lodsb
3085
        lodsb
2498
        stosb
3086
        stosb
2499
        dec     ecx
3087
        dec     ecx
2500
        test    al, al
3088
        test    al, al
2501
        jz      .header_created
3089
        jz      .header_created
2502
        cmp     al, '/'
3090
        cmp     al, '/'
2503
        jnz     @b
3091
        jnz     @b
2504
        mov     edx, esi
3092
        mov     edx, esi
2505
@@:
3093
@@:
2506
        lodsb
3094
        lodsb
2507
        test    al, al
3095
        test    al, al
2508
        jnz     @b
3096
        jnz     @b
2509
        sub     esi, edx
3097
        sub     esi, edx
2510
        dec     esi
3098
        dec     esi
2511
        cmp     esi, ecx
3099
        cmp     esi, ecx
2512
        jbe     @f
3100
        jbe     @f
2513
        mov     word [edi], '..'
3101
        mov     word [edi], '..'
2514
        mov     byte [edi+2], '.'
3102
        mov     byte [edi+2], '.'
2515
        add     edi, 3
3103
        add     edi, 3
2516
        sub     ecx, 3
3104
        sub     ecx, 3
2517
        add     edx, esi
3105
        add     edx, esi
2518
        sub     edx, ecx
3106
        sub     edx, ecx
2519
@@:
3107
@@:
2520
        mov     esi, edx
3108
        mov     esi, edx
2521
@@:
3109
@@:
2522
        lodsb
3110
        lodsb
2523
        stosb
3111
        stosb
2524
        dec     ecx
3112
        dec     ecx
2525
        test    al, al
3113
        test    al, al
2526
        jnz     @b
3114
        jnz     @b
2527
.header_created:
3115
.header_created:
2528
        mov     edx, [ebp + panel1_top - panel1_data]
3116
        mov     edx, [ebp + panel1_top - panel1_data]
2529
        mov     eax, [ebp + panel1_left - panel1_data]
3117
        mov     eax, [ebp + panel1_left - panel1_data]
2530
        shr     ecx, 1
3118
        shr     ecx, 1
2531
        lea     eax, [eax+ecx+3]
3119
        lea     eax, [eax+ecx+3]
2532
        call    get_console_ptr
3120
        call    get_console_ptr
2533
        mov     ah, [panel_active_header_color]
3121
        mov     ah, [panel_active_header_color]
2534
        cmp     ebp, [active_panel]
3122
        cmp     ebp, [active_panel]
2535
        jz      @f
3123
        jz      @f
2536
        mov     ah, [panel_header_color]
3124
        mov     ah, [panel_header_color]
2537
@@:
3125
@@:
2538
        mov     al, ' '
3126
        mov     al, ' '
2539
        stosw
3127
        stosw
2540
        mov     esi, cur_header
3128
        mov     esi, cur_header
2541
@@:
3129
@@:
2542
        lodsb
3130
        lodsb
2543
        test    al, al
3131
        test    al, al
2544
        jz      @f
3132
        jz      @f
2545
        stosw
3133
        stosw
2546
        jmp     @b
3134
        jmp     @b
2547
@@:
3135
@@:
2548
        mov     al, ' '
3136
        mov     al, ' '
2549
        stosw
3137
        stosw
2550
        mov     edx, [ebp + panel1_top - panel1_data]
3138
        mov     edx, [ebp + panel1_top - panel1_data]
2551
        inc     edx
3139
        inc     edx
2552
        mov     eax, [ebp + panel1_left - panel1_data]
3140
        mov     eax, [ebp + panel1_left - panel1_data]
2553
        inc     eax
3141
        inc     eax
2554
        call    get_console_ptr
3142
        call    get_console_ptr
2555
        movzx   eax, [ebp + panel1_sortmode - panel1_data]
3143
        movzx   eax, [ebp + panel1_sortmode - panel1_data]
2556
        mov     al, [compare_names+eax]
3144
        mov     al, [compare_names+eax]
2557
        stosb
3145
        stosb
-
 
3146
        mov     eax, [ebp + panel1_selected_num - panel1_data]
-
 
3147
        test    eax, eax
-
 
3148
        jz      .skip_selected_info
-
 
3149
; ˆ­ä®à¬ æ¨ï ® ¢ë¤¥«¥­­ëå ä ©« å
-
 
3150
        push    dword [ebp + panel1_selected_size+4 - panel1_data]
-
 
3151
        push    dword [ebp + panel1_selected_size - panel1_data]
-
 
3152
        call    fill_total_info
-
 
3153
        mov     eax, [ebp + panel1_width - panel1_data]
-
 
3154
        sub     eax, 2
-
 
3155
        cmp     ecx, eax
-
 
3156
        jbe     @f
-
 
3157
        mov     ecx, eax
-
 
3158
        mov     edi, saved_file_name+512
-
 
3159
        sub     edi, eax
-
 
3160
        mov     byte [edi], '.'
-
 
3161
        mov     word [edi+1], '..'
-
 
3162
@@:
-
 
3163
        mov     esi, edi
-
 
3164
        sub     eax, ecx
-
 
3165
        shr     eax, 1
-
 
3166
        inc     eax
-
 
3167
        add     eax, [ebp + panel1_left - panel1_data]
-
 
3168
        mov     edx, [ebp + panel1_top - panel1_data]
-
 
3169
        add     edx, [ebp + panel1_height - panel1_data]
-
 
3170
        sub     edx, 3
-
 
3171
        call    get_console_ptr
-
 
3172
        mov     ah, [panel_numselected_color]
-
 
3173
@@:
-
 
3174
        lodsb
-
 
3175
        stosw
-
 
3176
        loop    @b
-
 
3177
.skip_selected_info:
-
 
3178
; ˆ­ä®à¬ æ¨ï ®¡ ®¡é¥¬ ç¨á«¥ ¨ à §¬¥à¥ ä ©«®¢ ¯ ­¥«¨
-
 
3179
        mov     eax, [ebp + panel1_total_num - panel1_data]
-
 
3180
        push    dword [ebp + panel1_total_size+4 - panel1_data]
-
 
3181
        push    dword [ebp + panel1_total_size - panel1_data]
-
 
3182
        call    fill_total_info
-
 
3183
        mov     eax, [ebp + panel1_width - panel1_data]
-
 
3184
        sub     eax, 2
-
 
3185
        cmp     ecx, eax
-
 
3186
        jbe     @f
-
 
3187
        mov     ecx, eax
-
 
3188
        mov     byte [edi+ecx-3], '.'
-
 
3189
        mov     word [edi+ecx-2], '..'
-
 
3190
@@:
-
 
3191
        sub     eax, ecx
-
 
3192
        shr     eax, 1
-
 
3193
        inc     eax
-
 
3194
        add     eax, [ebp + panel1_left - panel1_data]
-
 
3195
        add     edx, [ebp + panel1_top - panel1_data]
-
 
3196
        add     edx, [ebp + panel1_height - panel1_data]
-
 
3197
        dec     edx
-
 
3198
        mov     esi, edi
-
 
3199
        call    get_console_ptr
-
 
3200
        mov     ah, [panel_number_color]
-
 
3201
@@:
-
 
3202
        lodsb
-
 
3203
        stosw
-
 
3204
        loop    @b
2558
        cmp     [ebp + panel1_numfiles - panel1_data], 0
3205
        cmp     [ebp + panel1_numfiles - panel1_data], 0
2559
        jz      .skip_curinfo
3206
        jz      .skip_curinfo
2560
; ˆ­ä®à¬ æ¨ï ® ¢ë¡à ­­®¬ ä ©«¥
3207
; ˆ­ä®à¬ æ¨ï ® ⥪ã饬 ä ©«¥
2561
        mov     ebx, [ebp + panel1_index - panel1_data]
3208
        mov     ebx, [ebp + panel1_index - panel1_data]
2562
        mov     eax, [ebp + panel1_files - panel1_data]
3209
        mov     eax, [ebp + panel1_files - panel1_data]
2563
        mov     ebx, [eax+ebx*4]
3210
        mov     ebx, [eax+ebx*4]
2564
        mov     eax, [ebp + panel1_left - panel1_data]
3211
        mov     eax, [ebp + panel1_left - panel1_data]
2565
        add     eax, [ebp + panel1_width - panel1_data]
3212
        add     eax, [ebp + panel1_width - panel1_data]
2566
        dec     eax
3213
        dec     eax
2567
        mov     edx, [ebp + panel1_top - panel1_data]
3214
        mov     edx, [ebp + panel1_top - panel1_data]
2568
        add     edx, [ebp + panel1_height - panel1_data]
3215
        add     edx, [ebp + panel1_height - panel1_data]
2569
        dec     edx
3216
        dec     edx
2570
        dec     edx
3217
        dec     edx
2571
        call    get_console_ptr
3218
        call    get_console_ptr
2572
        mov     ecx, [ebp + panel1_width - panel1_data]
3219
        mov     ecx, [ebp + panel1_width - panel1_data]
2573
        dec     ecx
3220
        dec     ecx
2574
        dec     ecx
3221
        dec     ecx
-
 
3222
        cmp     [ebp + panel1_colmode - panel1_data], 3
-
 
3223
        jz      .show_curname
2575
; ‚à¥¬ï ¬®¤¨ä¨ª æ¨¨
3224
; ‚à¥¬ï ¬®¤¨ä¨ª æ¨¨
2576
        sub     edi, 5*2
3225
        sub     edi, 5*2
2577
        sub     ecx, 6
3226
        sub     ecx, 6
2578
        mov     al, [ebx+24+2]
3227
        mov     al, [ebx+24+2]
2579
        aam
3228
        aam
2580
        or      ax, 0x3030
3229
        or      ax, 0x3030
2581
        mov     [edi], ah
3230
        mov     [edi], ah
2582
        mov     [edi+2], al
3231
        mov     [edi+2], al
2583
        mov     [edi+4], byte ':'
3232
        mov     [edi+4], byte ':'
2584
        mov     al, [ebx+24+1]
3233
        mov     al, [ebx+24+1]
2585
        aam
3234
        aam
2586
        or      ax, 0x3030
3235
        or      ax, 0x3030
2587
        mov     [edi+6], ah
3236
        mov     [edi+6], ah
2588
        mov     [edi+8], al
3237
        mov     [edi+8], al
2589
        mov     al, [panel_normal_color]
3238
        mov     al, [panel_normal_color]
2590
        mov     [edi+1], al
3239
        mov     [edi+1], al
2591
        mov     [edi+3], al
3240
        mov     [edi+3], al
2592
        mov     [edi+5], al
3241
        mov     [edi+5], al
2593
        mov     [edi+7], al
3242
        mov     [edi+7], al
2594
        mov     [edi+9], al
3243
        mov     [edi+9], al
2595
        dec     edi
3244
        dec     edi
2596
        mov     [edi], al
3245
        mov     [edi], al
2597
        dec     edi
3246
        dec     edi
2598
        mov     byte [edi], ' '
3247
        mov     byte [edi], ' '
2599
; „ â  ¬®¤¨ä¨ª æ¨¨
3248
; „ â  ¬®¤¨ä¨ª æ¨¨
2600
        sub     edi, 8*2
3249
        sub     edi, 8*2
2601
        sub     ecx, 9
3250
        sub     ecx, 9
2602
        mov     al, [ebx+28+0]
3251
        mov     al, [ebx+28+0]
2603
        aam
3252
        aam
2604
        or      ax, 0x3030
3253
        or      ax, 0x3030
2605
        mov     [edi], ah
3254
        mov     [edi], ah
2606
        mov     [edi+2], al
3255
        mov     [edi+2], al
2607
        mov     [edi+4], byte '.'
3256
        mov     [edi+4], byte '.'
2608
        mov     al, [ebx+28+1]
3257
        mov     al, [ebx+28+1]
2609
        aam
3258
        aam
2610
        or      ax, 0x3030
3259
        or      ax, 0x3030
2611
        mov     [edi+6], ah
3260
        mov     [edi+6], ah
2612
        mov     [edi+8], al
3261
        mov     [edi+8], al
2613
        mov     [edi+10], byte '.'
3262
        mov     [edi+10], byte '.'
2614
        mov     ax, [ebx+28+2]
3263
        mov     ax, [ebx+28+2]
2615
        div     [_100]
3264
        div     [_100]
2616
        mov     al, ah
3265
        mov     al, ah
2617
        aam
3266
        aam
2618
        or      ax, 0x3030
3267
        or      ax, 0x3030
2619
        mov     [edi+12], ah
3268
        mov     [edi+12], ah
2620
        mov     [edi+14], al
3269
        mov     [edi+14], al
2621
        mov     al, [panel_normal_color]
3270
        mov     al, [panel_normal_color]
2622
        mov     [edi+1], al
3271
        mov     [edi+1], al
2623
        mov     [edi+3], al
3272
        mov     [edi+3], al
2624
        mov     [edi+5], al
3273
        mov     [edi+5], al
2625
        mov     [edi+7], al
3274
        mov     [edi+7], al
2626
        mov     [edi+9], al
3275
        mov     [edi+9], al
2627
        mov     [edi+11], al
3276
        mov     [edi+11], al
2628
        mov     [edi+13], al
3277
        mov     [edi+13], al
2629
        mov     [edi+15], al
3278
        mov     [edi+15], al
2630
        dec     edi
3279
        dec     edi
2631
        mov     [edi], al
3280
        mov     [edi], al
2632
        dec     edi
3281
        dec     edi
2633
        mov     [edi], byte ' '
3282
        mov     [edi], byte ' '
2634
;  §¬¥à
3283
;  §¬¥à
2635
        std
3284
        std
2636
        mov     ah, [panel_normal_color]
3285
        mov     ah, [panel_normal_color]
2637
        dec     edi
3286
        dec     edi
2638
        dec     edi
3287
        dec     edi
2639
        dec     ecx
3288
        dec     ecx
2640
        test    byte [ebx], 0x10
3289
        test    byte [ebx], 0x10
2641
        jz      .size_file
3290
        jz      .size_file
2642
        push    ecx
3291
        push    ecx
2643
        mov     esi, aFolder+aFolder.size-1
3292
        mov     esi, aFolder+aFolder.size-1
2644
        mov     ecx, aFolder.size
3293
        mov     ecx, aFolder.size
2645
        cmp     word [ebx+40], '..'
3294
        cmp     word [ebx+40], '..'
2646
        jnz     @f
3295
        jnz     @f
2647
        cmp     byte [ebx+42], 0
3296
        cmp     byte [ebx+42], 0
2648
        jnz     @f
3297
        jnz     @f
2649
        mov     esi, aUp+aUp.size-1
3298
        mov     esi, aUp+aUp.size-1
2650
        mov     cl, aUp.size
3299
        mov     cl, aUp.size
2651
@@:
3300
@@:
2652
        sub     [esp], ecx
3301
        sub     [esp], ecx
2653
@@:
3302
@@:
2654
        lodsb
3303
        lodsb
2655
        stosw
3304
        stosw
2656
        loop    @b
3305
        loop    @b
2657
        pop     ecx
3306
        pop     ecx
2658
        jmp     .size_done
3307
        jmp     .size_done
2659
.size_file:
3308
.size_file:
2660
        mov     edx, [ebx+36]
3309
        mov     edx, [ebx+36]
2661
        test    edx, edx
3310
        test    edx, edx
2662
        jz      .size_less_4g
3311
        jz      .size_less_4g
2663
        cmp     edx, 10*256
3312
        cmp     edx, 10*256
2664
        jae     .size_tera
3313
        jae     .size_tera
2665
; ¢ £¨£ ¡ ©â å
3314
; ¢ £¨£ ¡ ©â å
2666
        mov     al, 'G'
3315
        mov     al, 'G'
2667
        shl     edx, 2
3316
        shl     edx, 2
2668
        jmp     .size_letter
3317
        jmp     .size_letter
2669
.size_tera:
3318
.size_tera:
2670
; ¢ â¥à ¡ ©â å
3319
; ¢ â¥à ¡ ©â å
2671
        shr     edx, 8
3320
        shr     edx, 8
2672
        mov     al, 'T'
3321
        mov     al, 'T'
2673
        jmp     .size_letter
3322
        jmp     .size_letter
2674
.size_less_4g:
3323
.size_less_4g:
2675
        mov     edx, [ebx+32]
3324
        mov     edx, [ebx+32]
2676
        cmp     edx, 10*(1 shl 20)
3325
        cmp     edx, 10*(1 shl 20)
2677
        jae     .size_mega
3326
        jae     .size_mega
2678
        cmp     edx, 1 shl 20
3327
        cmp     edx, 1 shl 20
2679
        jb      .size_num
3328
        jb      .size_num
2680
        shr     edx, 10
3329
        shr     edx, 10
2681
        mov     al, 'K'
3330
        mov     al, 'K'
2682
        jmp     .size_letter
3331
        jmp     .size_letter
2683
.size_mega:
3332
.size_mega:
2684
        mov     al, 'M'
3333
        mov     al, 'M'
2685
        shr     edx, 20
3334
        shr     edx, 20
2686
.size_letter:
3335
.size_letter:
2687
        stosw
3336
        stosw
2688
        dec     ecx
3337
        dec     ecx
2689
        mov     al, ' '
3338
        mov     al, ' '
2690
        stosw
3339
        stosw
2691
        dec     ecx
3340
        dec     ecx
2692
.size_num:
3341
.size_num:
2693
        xchg    eax, edx
3342
        xchg    eax, edx
2694
        xor     edx, edx
3343
        xor     edx, edx
2695
        div     [_10d]
3344
        div     [_10d]
2696
        xchg    eax, edx
3345
        xchg    eax, edx
2697
        add     al, '0'
3346
        add     al, '0'
2698
        mov     ah, [panel_normal_color]
3347
        mov     ah, [panel_normal_color]
2699
        stosw
3348
        stosw
2700
        dec     ecx
3349
        dec     ecx
2701
        test    edx, edx
3350
        test    edx, edx
2702
        jnz     .size_num
3351
        jnz     .size_num
2703
.size_done:
3352
.size_done:
2704
        cld
3353
        cld
-
 
3354
.show_curname:
2705
; ˆ¬ï
3355
; ˆ¬ï
2706
        sub     edi, ecx
3356
        sub     edi, ecx
2707
        sub     edi, ecx
3357
        sub     edi, ecx
2708
        lea     esi, [ebx+40]
3358
        lea     esi, [ebx+40]
2709
@@:
3359
@@:
2710
        lodsb
3360
        lodsb
2711
        test    al, al
3361
        test    al, al
2712
        jnz     @b
3362
        jnz     @b
2713
        sub     esi, ebx
3363
        sub     esi, ebx
2714
        sub     esi, 41
3364
        sub     esi, 41
2715
        mov     ah, [panel_normal_color]
3365
        mov     ah, [panel_normal_color]
2716
        cmp     esi, ecx
3366
        cmp     esi, ecx
2717
        lea     edx, [ebx+40]
3367
        lea     edx, [ebx+40]
2718
        jbe     @f
3368
        jbe     @f
2719
        mov     al, '{'
3369
        mov     al, '{'
2720
        mov     [edi-2], ax
3370
        mov     [edi-2], ax
2721
        add     edx, esi
3371
        add     edx, esi
2722
        sub     edx, ecx
3372
        sub     edx, ecx
2723
@@:
3373
@@:
2724
        mov     esi, edx
3374
        mov     esi, edx
2725
@@:
3375
@@:
2726
        lodsb
3376
        lodsb
2727
        test    al, al
3377
        test    al, al
2728
        jz      @f
3378
        jz      @f
2729
        stosw
3379
        stosw
2730
        loop    @b
3380
        loop    @b
2731
@@:
3381
@@:
2732
        mov     al, ' '
3382
        mov     al, ' '
2733
        rep     stosw
3383
        rep     stosw
2734
.skip_curinfo:
3384
.skip_curinfo:
2735
        call    draw_image
3385
        call    draw_image
2736
        ret
3386
        ret
2737
 
3387
 
2738
draw_column:
3388
fill_total_info:
2739
        mov     eax, [column_left]
-
 
2740
        mov     edx, [column_top]
-
 
2741
        call    get_console_ptr
-
 
2742
; § £®«®¢®ª á⮫¡æ 
-
 
2743
        push    edi
-
 
2744
        mov     ah, [column_header_color]
3389
        mov     edi, saved_file_name+511
2745
        mov     al, ' '
-
 
2746
        mov     ecx, [column_width]
-
 
2747
if lang eq ru
-
 
2748
        sub     ecx, 3
-
 
2749
else
-
 
2750
        sub     ecx, 4
-
 
2751
end if
-
 
2752
        shr     ecx, 1
-
 
2753
        rep     stosw
3390
        mov     byte [edi], ' '
2754
if lang eq ru
3391
if lang eq ru
2755
        mov     al, 'ˆ'
3392
        mov     byte [edi-1], '¥'
2756
        stosw
3393
        dec     edi
2757
        mov     al, '¬'
3394
        cmp     eax, 1
2758
        stosw
3395
        jz      @f
2759
        mov     al, 'ï'
3396
        mov     word [edi-1], ' å'
-
 
3397
        dec     edi
-
 
3398
@@:
-
 
3399
        mov     dword [edi-4], 'ä ©«'
-
 
3400
        mov     byte [edi-5], ' '
2760
        stosw
3401
        sub     edi, 5
2761
else
3402
else
2762
        mov     al, 'N'
3403
        cmp     eax, 1
2763
        stosw
3404
        jz      @f
2764
        mov     al, 'a'
3405
        dec     edi
-
 
3406
        mov     byte [edi], 's'
2765
        stosw
3407
@@:
2766
        mov     al, 'm'
-
 
2767
        stosw
3408
        mov     dword [edi-4], 'file'
2768
        mov     al, 'e'
3409
        mov     byte [edi-5], ' '
2769
        stosw
3410
        sub     edi, 5
-
 
3411
end if
-
 
3412
        xor     edx, edx
-
 
3413
        push    10
-
 
3414
        pop     ecx
-
 
3415
@@:
-
 
3416
        div     ecx
2770
end if
3417
        dec     edi
-
 
3418
        add     dl, '0'
2771
        mov     al, ' '
3419
        mov     [edi], dl
-
 
3420
        xor     edx, edx
-
 
3421
        test    eax, eax
2772
        mov     ecx, [column_width]
3422
        jnz     @b
-
 
3423
if lang eq ru
-
 
3424
        mov     dword [edi-4], 'â ¢ '
2773
if lang eq ru
3425
        mov     dword [edi-8], ' ¡ ©'
2774
        sub     ecx, 2
3426
        sub     edi, 8
-
 
3427
else
-
 
3428
        mov     dword [edi-4], ' in '
-
 
3429
        mov     dword [edi-8], 'ytes'
2775
else
3430
        mov     word [edi-10], ' b'
2776
        sub     ecx, 3
3431
        sub     edi, 10
-
 
3432
end if
-
 
3433
        lea     esi, [edi-3]
-
 
3434
        mov     edx, [esp+8]
-
 
3435
        mov     eax, [esp+4]
-
 
3436
.selsizel:
-
 
3437
        push    edx
-
 
3438
        mov     ebx, edx
-
 
3439
        xor     edx, edx
-
 
3440
        add     ebx, ebx
-
 
3441
        adc     edx, edx
-
 
3442
        push    ebx
-
 
3443
        push    edx
-
 
3444
        add     ebx, ebx
-
 
3445
        adc     edx, edx
-
 
3446
        add     ebx, [esp+4]
-
 
3447
        adc     edx, [esp]
-
 
3448
        add     esp, 8
2777
end if
3449
        add     eax, ebx
-
 
3450
        adc     edx, 0
-
 
3451
        div     ecx
-
 
3452
        dec     edi
-
 
3453
        cmp     edi, esi
-
 
3454
        jae     @f
2778
        shr     ecx, 1
3455
        mov     byte [edi], ','
-
 
3456
        dec     edi
-
 
3457
        sub     esi, 4
2779
        rep     stosw
3458
@@:
-
 
3459
        pop     ebx
-
 
3460
        add     dl, '0'
-
 
3461
        mov     byte [edi], dl
-
 
3462
        xchg    eax, ebx
-
 
3463
        mul     [muldiv10]
-
 
3464
        add     eax, ebx
-
 
3465
        adc     edx, 0
-
 
3466
        mov     ebx, eax
-
 
3467
        or      ebx, edx
-
 
3468
        jnz     .selsizel
-
 
3469
        dec     edi
-
 
3470
        mov     byte [edi], ' '
-
 
3471
        mov     ecx, saved_file_name+512
-
 
3472
        sub     ecx, edi
-
 
3473
        ret     8
-
 
3474
 
-
 
3475
get_file_color:
2780
        pop     edi
3476
        mov     ah, [esi + 6]
-
 
3477
        cmp     ebp, [active_panel]
-
 
3478
        jnz     @f
-
 
3479
        cmp     ecx, [ebp + panel1_index - panel1_data]
-
 
3480
        jnz     @f
-
 
3481
        mov     ah, [esi + 7]
-
 
3482
@@:
-
 
3483
        test    byte [esi + 303], 1
-
 
3484
        jnz     @f
2781
        add     edi, [cur_width]
3485
        mov     ah, [esi + 4]
-
 
3486
        cmp     ebp, [active_panel]
-
 
3487
        jnz     @f
-
 
3488
        cmp     ecx, [ebp + panel1_index - panel1_data]
-
 
3489
        jnz     @f
-
 
3490
        mov     ah, [esi + 5]
2782
        add     edi, [cur_width]
3491
@@:
-
 
3492
        ret
-
 
3493
 
-
 
3494
draw_name_column:
-
 
3495
        mov     eax, [column_index]
2783
; ä ©«ë
3496
        mov     [last_column_index], eax
2784
        mov     edx, [ebp + panel1_numfiles - panel1_data]
3497
        mov     edx, [ebp + panel1_numfiles - panel1_data]
2785
        mov     ecx, [column_height]
3498
        mov     ecx, [column_height]
2786
        dec     ecx
3499
        dec     ecx
2787
.l:
3500
.l:
2788
        cmp     [column_index], edx
3501
        cmp     [column_index], edx
2789
        jae     .ret
3502
        jae     .ret
2790
        push    ecx
3503
        push    ecx
2791
        mov     esi, [column_index]
-
 
2792
        mov     ecx, [ebp + panel1_files - panel1_data]
-
 
2793
        mov     esi, [ecx+esi*4]
-
 
2794
        add     esi, 40
-
 
2795
        mov     ah, [esi - 40 + 5]
-
 
2796
        cmp     ebp, [active_panel]
-
 
2797
        jnz     @f
-
 
2798
        mov     ecx, [column_index]
3504
        mov     ecx, [column_index]
2799
        cmp     ecx, [ebp + panel1_index - panel1_data]
3505
        mov     esi, [ebp + panel1_files - panel1_data]
2800
        jnz     @f
3506
        mov     esi, [esi+ecx*4]
2801
        mov     ah, [esi - 40 + 6]
3507
        mov     ebx, [esi]
-
 
3508
        call    get_file_color
2802
@@:
3509
        add     esi, 40
2803
        mov     ecx, [column_width]
3510
        mov     ecx, [column_width]
2804
        push    edi
3511
        push    edi
2805
@@:
3512
@@:
2806
        lodsb
3513
        lodsb
2807
        test    al, al
3514
        test    al, al
2808
        jz      @f
3515
        jz      @f
2809
        stosw
3516
        stosw
2810
        loop    @b
3517
        loop    @b
-
 
3518
        lodsb
2811
        cmp     byte [esi], 0
3519
        test    al, al
2812
        jz      @f
3520
        jz      @f
2813
        mov     byte [edi], '}'
3521
        mov     byte [edi], '}'
-
 
3522
        jmp     .continue
-
 
3523
@@:
-
 
3524
        test    bl, 10h
-
 
3525
        jnz     .noalignext
-
 
3526
        mov     ebx, [ebp + panel1_colmode - panel1_data]
-
 
3527
; sizeof(PanelMode) = 40
-
 
3528
        lea     ebx, [ebx+ebx*4]
-
 
3529
        cmp     [colmodes+ebx*8+PanelMode.bAlignExtensions], 0
-
 
3530
        jz      .noalignext
-
 
3531
        push    ecx
-
 
3532
        sub     ecx, [column_width]
-
 
3533
        neg     ecx
-
 
3534
        jz      .noalignext2
-
 
3535
        dec     esi
-
 
3536
@@:
-
 
3537
        dec     esi
-
 
3538
        cmp     byte [esi], '.'
-
 
3539
        loopnz  @b
-
 
3540
        jnz     .noalignext2
-
 
3541
        inc     esi
-
 
3542
        sub     ecx, [column_width]
-
 
3543
        neg     ecx
-
 
3544
        sub     ecx, [esp]
-
 
3545
        sub     edi, ecx
-
 
3546
        sub     edi, ecx
-
 
3547
        dec     ecx
-
 
3548
        mov     ebx, [esp+4]
-
 
3549
        cmp     ecx, 3
-
 
3550
        ja      @f
-
 
3551
        mov     cl, 3
-
 
3552
@@:
-
 
3553
        sub     ecx, [column_width]
-
 
3554
        sub     ebx, edi
-
 
3555
        sar     ebx, 1
-
 
3556
        sub     ebx, ecx
-
 
3557
        pop     ecx
-
 
3558
        inc     ecx
-
 
3559
        push    0
-
 
3560
        cmp     ecx, ebx
-
 
3561
        jbe     @f
-
 
3562
        sub     ecx, ebx
-
 
3563
        mov     [esp], ecx
-
 
3564
        mov     ecx, ebx
2814
@@:
3565
@@:
2815
        mov     al, ' '
3566
        mov     al, ' '
2816
        rep     stosw
3567
        rep     stosw
-
 
3568
@@:
-
 
3569
        lodsb
-
 
3570
        test    al, al
-
 
3571
        jz      .noalignext2
-
 
3572
        stosw
-
 
3573
        jmp     @b
-
 
3574
.noalignext2:
-
 
3575
        pop     ecx
-
 
3576
.noalignext:
-
 
3577
        mov     al, ' '
-
 
3578
        rep     stosw
-
 
3579
.continue:
2817
        pop     edi
3580
        pop     edi
2818
        add     edi, [cur_width]
3581
        add     edi, [cur_width]
2819
        add     edi, [cur_width]
3582
        add     edi, [cur_width]
2820
        inc     [column_index]
3583
        inc     [column_index]
2821
        pop     ecx
3584
        pop     ecx
2822
        dec     ecx
3585
        dec     ecx
2823
        jnz     .l
3586
        jnz     .l
2824
.ret:
3587
.ret:
-
 
3588
        mov     eax, [ebp + panel1_colsz - panel1_data]
-
 
3589
        add     [ebp + panel1_colst - panel1_data], eax
2825
        cmp     ebp, panel1_data
3590
        cmp     ebp, panel1_data
2826
        jnz     .ret2
3591
        jnz     .ret2
2827
; —¨á«® íªà ­®¢
3592
; —¨á«® íªà ­®¢
2828
        mov     eax, [num_screens]
3593
        mov     eax, [num_screens]
2829
        dec     eax
3594
        dec     eax
2830
        jz      .ret2
3595
        jz      .ret2
2831
        push    eax
3596
        push    eax
2832
        xor     eax, eax
3597
        xor     eax, eax
2833
        xor     edx, edx
3598
        xor     edx, edx
2834
        call    get_console_ptr
3599
        call    get_console_ptr
2835
        mov     ah, [panel_nscreens_color]
3600
        mov     ah, [panel_nscreens_color]
2836
        mov     al, '['
3601
        mov     al, '['
2837
        stosw
3602
        stosw
2838
        pop     eax
3603
        pop     eax
2839
        push    -'0'
3604
        push    -'0'
2840
@@:
3605
@@:
2841
        xor     edx, edx
3606
        xor     edx, edx
2842
        div     [_10d]
3607
        div     [_10d]
2843
        push    edx
3608
        push    edx
2844
        test    eax, eax
3609
        test    eax, eax
2845
        jnz     @b
3610
        jnz     @b
2846
@@:
3611
@@:
2847
        pop     eax
3612
        pop     eax
2848
        add     eax, '0'
3613
        add     eax, '0'
2849
        jz      @f
3614
        jz      @f
2850
        mov     ah, [panel_nscreens_color]
3615
        mov     ah, [panel_nscreens_color]
2851
        stosw
3616
        stosw
2852
        jmp     @b
3617
        jmp     @b
2853
@@:
3618
@@:
2854
        mov     al, ']'
3619
        mov     al, ']'
2855
        mov     ah, [panel_nscreens_color]
3620
        mov     ah, [panel_nscreens_color]
2856
        stosw
3621
        stosw
2857
.ret2:
3622
.ret2:
-
 
3623
draw_empty_column:
-
 
3624
        ret
-
 
3625
 
-
 
3626
draw_size_column:
-
 
3627
        add     edi, [column_width]
-
 
3628
        add     edi, [column_width]
-
 
3629
        dec     edi
-
 
3630
        dec     edi
-
 
3631
        std
-
 
3632
        mov     ecx, [column_height]
-
 
3633
        dec     ecx
-
 
3634
        push    [last_column_index]
-
 
3635
.l:
-
 
3636
        mov     edx, [ebp + panel1_numfiles - panel1_data]
-
 
3637
        cmp     [last_column_index], edx
-
 
3638
        jae     .ret
-
 
3639
        push    ecx
-
 
3640
        push    edi
-
 
3641
        mov     ecx, [last_column_index]
-
 
3642
        mov     esi, [ebp + panel1_files - panel1_data]
-
 
3643
        mov     esi, [esi+ecx*4]
-
 
3644
        call    get_file_color
-
 
3645
        mov     ecx, [column_width]
-
 
3646
@@:
-
 
3647
        mov     ebx, eax
-
 
3648
        cmp     word [esi+40], '..'
-
 
3649
        jnz     .nodotdot
-
 
3650
        cmp     byte [esi+42], 0
-
 
3651
        jnz     .nodotdot
-
 
3652
if lang eq ru
-
 
3653
        mov     al, 'å'
-
 
3654
        stosw
-
 
3655
        mov     al, 'à'
-
 
3656
        stosw
-
 
3657
        mov     al, '¥'
-
 
3658
        stosw
-
 
3659
        mov     al, '¢'
-
 
3660
        stosw
-
 
3661
        mov     al, '‚'
-
 
3662
        stosw
-
 
3663
        sub     ecx, 5
-
 
3664
else
-
 
3665
        mov     al, ' '
-
 
3666
        stosw
-
 
3667
        stosw
-
 
3668
        mov     al, 'p'
-
 
3669
        stosw
-
 
3670
        mov     al, 'U'
-
 
3671
        stosw
-
 
3672
        sub     ecx, 4
-
 
3673
end if
-
 
3674
        jmp     .size_written
-
 
3675
.nodotdot:
-
 
3676
        test    byte [esi], 10h
-
 
3677
        jz      .nofolder
-
 
3678
if lang eq ru
-
 
3679
        mov     al, ' '
-
 
3680
        stosw
-
 
3681
        mov     al, 'ª'
-
 
3682
        stosw
-
 
3683
        mov     al, '¯'
-
 
3684
        stosw
-
 
3685
        mov     al, ' '
-
 
3686
        stosw
-
 
3687
        mov     al, ''
-
 
3688
        stosw
-
 
3689
        sub     ecx, 5
-
 
3690
else
-
 
3691
        mov     al, 'r'
-
 
3692
        stosw
-
 
3693
        mov     al, 'e'
-
 
3694
        stosw
-
 
3695
        mov     al, 'd'
-
 
3696
        stosw
-
 
3697
        mov     al, 'l'
-
 
3698
        stosw
-
 
3699
        mov     al, 'o'
-
 
3700
        stosw
-
 
3701
        mov     al, 'F'
-
 
3702
        stosw
-
 
3703
        sub     ecx, 6
-
 
3704
end if
-
 
3705
        jmp     .size_written
-
 
3706
.nofolder:
-
 
3707
        mov     eax, [esi+32]
-
 
3708
        mov     edx, [esi+36]
-
 
3709
        test    edx, edx
-
 
3710
        jz      .less_4G
-
 
3711
        cmp     edx, 10000/4*1024
-
 
3712
        jb      .giga
-
 
3713
        mov     al, 'T'
-
 
3714
        shr     edx, 10
-
 
3715
        jmp     .write_letter
-
 
3716
.giga:
-
 
3717
        mov     al, 'G'
-
 
3718
        shl     edx, 2
-
 
3719
        jmp     .write_letter
-
 
3720
.less_4G:
-
 
3721
        mov     edx, eax
-
 
3722
        cmp     eax, 1000000
-
 
3723
        jb      .byte
-
 
3724
        cmp     eax, 10000*1024
-
 
3725
        jb      .kilo
-
 
3726
        mov     al, 'M'
-
 
3727
        shr     edx, 20
-
 
3728
        jmp     .write_letter
-
 
3729
.kilo:
-
 
3730
        mov     al, 'K'
-
 
3731
        shr     edx, 10
-
 
3732
.write_letter:
-
 
3733
        mov     ah, bh
-
 
3734
        stosw
-
 
3735
        mov     al, ' '
-
 
3736
        stosw
-
 
3737
        dec     ecx
-
 
3738
        dec     ecx
-
 
3739
.byte:
-
 
3740
        xchg    eax, edx
-
 
3741
        xor     edx, edx
-
 
3742
        div     [_10d]
-
 
3743
        xchg    eax, edx
-
 
3744
        add     al, '0'
-
 
3745
        mov     ah, bh
-
 
3746
        stosw
-
 
3747
        dec     ecx
-
 
3748
        test    edx, edx
-
 
3749
        jnz     .byte
-
 
3750
.size_written:
-
 
3751
        mov     eax, ebx
-
 
3752
        test    ecx, ecx
-
 
3753
        jle     @f
-
 
3754
        mov     al, ' '
-
 
3755
        rep     stosw
-
 
3756
@@:
-
 
3757
        mov     byte [edi+1], ah
-
 
3758
        pop     edi
-
 
3759
        add     edi, [cur_width]
-
 
3760
        add     edi, [cur_width]
-
 
3761
        inc     [last_column_index]
-
 
3762
        pop     ecx
-
 
3763
        dec     ecx
-
 
3764
        jnz     .l
-
 
3765
.ret:
-
 
3766
        pop     [last_column_index]
-
 
3767
        cld
-
 
3768
        ret
-
 
3769
 
-
 
3770
draw_date_column:
-
 
3771
        mov     ecx, [column_height]
-
 
3772
        dec     ecx
-
 
3773
        push    [last_column_index]
-
 
3774
.l:
-
 
3775
        mov     edx, [ebp + panel1_numfiles - panel1_data]
-
 
3776
        cmp     [last_column_index], edx
-
 
3777
        jae     .ret
-
 
3778
        push    ecx
-
 
3779
        push    edi
-
 
3780
        mov     ecx, [last_column_index]
-
 
3781
        mov     esi, [ebp + panel1_files - panel1_data]
-
 
3782
        mov     esi, [esi+ecx*4]
-
 
3783
        call    get_file_color
-
 
3784
        mov     bh, ah
-
 
3785
        mov     byte [edi-1], bh
-
 
3786
        mov     al, [esi+28]
-
 
3787
        aam
-
 
3788
        add     eax, '00'
-
 
3789
        push    eax
-
 
3790
        mov     al, ah
-
 
3791
        mov     ah, bh
-
 
3792
        stosw
-
 
3793
        pop     eax
-
 
3794
        mov     ah, bh
-
 
3795
        stosw
-
 
3796
        mov     al, '.'
-
 
3797
        stosw
-
 
3798
        mov     al, [esi+29]
-
 
3799
        aam
-
 
3800
        add     eax, '00'
-
 
3801
        push    eax
-
 
3802
        mov     al, ah
-
 
3803
        mov     ah, bh
-
 
3804
        stosw
-
 
3805
        pop     eax
-
 
3806
        mov     ah, bh
-
 
3807
        stosw
-
 
3808
        mov     al, '.'
-
 
3809
        stosw
-
 
3810
        movzx   eax, word [esi+30]
-
 
3811
        xor     edx, edx
-
 
3812
        div     [_10d]
-
 
3813
        xchg    eax, edx
-
 
3814
        add     al, '0'
-
 
3815
        mov     ah, bh
-
 
3816
        mov     [edi+2], ax
-
 
3817
        xchg    eax, edx
-
 
3818
        xor     edx, edx
-
 
3819
        div     [_10d]
-
 
3820
        xchg    eax, edx
-
 
3821
        add     al, '0'
-
 
3822
        mov     ah, bh
-
 
3823
        stosw
-
 
3824
        pop     edi
-
 
3825
        add     edi, [cur_width]
-
 
3826
        add     edi, [cur_width]
-
 
3827
        inc     [last_column_index]
-
 
3828
        pop     ecx
-
 
3829
        dec     ecx
-
 
3830
        jnz     .l
-
 
3831
.ret:
-
 
3832
        pop     [last_column_index]
-
 
3833
        cld
-
 
3834
        ret
-
 
3835
 
-
 
3836
draw_time_column:
-
 
3837
        mov     ecx, [column_height]
-
 
3838
        dec     ecx
-
 
3839
        push    [last_column_index]
-
 
3840
.l:
-
 
3841
        mov     edx, [ebp + panel1_numfiles - panel1_data]
-
 
3842
        cmp     [last_column_index], edx
-
 
3843
        jae     .ret
-
 
3844
        push    ecx
-
 
3845
        push    edi
-
 
3846
        mov     ecx, [last_column_index]
-
 
3847
        mov     esi, [ebp + panel1_files - panel1_data]
-
 
3848
        mov     esi, [esi+ecx*4]
-
 
3849
        call    get_file_color
-
 
3850
        mov     bh, ah
-
 
3851
        mov     byte [edi-1], bh
-
 
3852
        mov     al, [esi+26]
-
 
3853
        aam
-
 
3854
        add     eax, '00'
-
 
3855
        push    eax
-
 
3856
        mov     al, ah
-
 
3857
        mov     ah, bh
-
 
3858
        stosw
-
 
3859
        pop     eax
-
 
3860
        mov     ah, bh
-
 
3861
        stosw
-
 
3862
        mov     al, ':'
-
 
3863
        stosw
-
 
3864
        mov     al, [esi+25]
-
 
3865
        aam
-
 
3866
        add     eax, '00'
-
 
3867
        push    eax
-
 
3868
        mov     al, ah
-
 
3869
        mov     ah, bh
-
 
3870
        stosw
-
 
3871
        pop     eax
-
 
3872
        mov     ah, bh
-
 
3873
        stosw
-
 
3874
        pop     edi
-
 
3875
        add     edi, [cur_width]
-
 
3876
        add     edi, [cur_width]
-
 
3877
        inc     [last_column_index]
-
 
3878
        pop     ecx
-
 
3879
        dec     ecx
-
 
3880
        jnz     .l
-
 
3881
.ret:
-
 
3882
        pop     [last_column_index]
-
 
3883
        cld
2858
        ret
3884
        ret
2859
 
3885
 
2860
;insert_last_dot:
3886
;insert_last_dot:
2861
;        push    eax esi
3887
;        push    eax esi
2862
;        mov     ah, 0
3888
;        mov     ah, 0
2863
;.loop:
3889
;.loop:
2864
;        lodsb
3890
;        lodsb
2865
;        test    al, al
3891
;        test    al, al
2866
;        jz      .done
3892
;        jz      .done
2867
;        cmp     al, '.'
3893
;        cmp     al, '.'
2868
;        jnz     .loop
3894
;        jnz     .loop
2869
;        mov     ah, 1
3895
;        mov     ah, 1
2870
;        jmp     .loop
3896
;        jmp     .loop
2871
;.done:
3897
;.done:
2872
;        test    ah, ah
3898
;        test    ah, ah
2873
;        jnz     @f
3899
;        jnz     @f
2874
;        mov     byte [esi-1], '.'
3900
;        mov     byte [esi-1], '.'
2875
;        mov     byte [esi], 0
3901
;        mov     byte [esi], 0
2876
;@@:
3902
;@@:
2877
;        pop     esi eax
3903
;        pop     esi eax
2878
;        ret
3904
;        ret
2879
 
3905
 
2880
;delete_last_dot:
3906
;delete_last_dot:
2881
;        push    esi
3907
;        push    esi
2882
;@@:
3908
;@@:
2883
;        cmp     byte [esi], 0
3909
;        cmp     byte [esi], 0
2884
;        jz      @f
3910
;        jz      @f
2885
;        inc     esi
3911
;        inc     esi
2886
;        jmp     @b
3912
;        jmp     @b
2887
;@@:
3913
;@@:
2888
;        cmp     byte [esi-1], '.'
3914
;        cmp     byte [esi-1], '.'
2889
;        jnz     @f
3915
;        jnz     @f
2890
;        mov     byte [esi-1], 0
3916
;        mov     byte [esi-1], 0
2891
;@@:     pop     esi
3917
;@@:     pop     esi
2892
;        ret
3918
;        ret
2893
 
3919
 
2894
read_folder:
3920
read_folder:
2895
        mov     eax, [ebp + panel1_nfa - panel1_data]
3921
        mov     eax, [ebp + panel1_nfa - panel1_data]
2896
        mov     [dirinfo.size], eax
3922
        mov     [dirinfo.size], eax
2897
        shl     eax, 2
3923
        shl     eax, 2
2898
        add     eax, [ebp + panel1_files - panel1_data]
3924
        add     eax, [ebp + panel1_files - panel1_data]
2899
        mov     [dirinfo.dirdata], eax
3925
        mov     [dirinfo.dirdata], eax
2900
        lea     eax, [ebp + panel1_dir - panel1_data]
3926
        lea     eax, [ebp + panel1_dir - panel1_data]
2901
        mov     [dirinfo.name], eax
3927
        mov     [dirinfo.name], eax
-
 
3928
        xor     eax, eax
-
 
3929
        mov     [ebp + panel1_total_num - panel1_data], eax
-
 
3930
        mov     dword [ebp + panel1_total_size - panel1_data], eax
-
 
3931
        mov     dword [ebp + panel1_total_size+4 - panel1_data], eax
-
 
3932
        mov     [ebp + panel1_selected_num - panel1_data], eax
-
 
3933
        mov     dword [ebp + panel1_selected_size - panel1_data], eax
-
 
3934
        mov     dword [ebp + panel1_selected_size+4 - panel1_data], eax
2902
.retry:
3935
.retry:
2903
        push    70
3936
        push    70
2904
        pop     eax
3937
        pop     eax
2905
        mov     ebx, dirinfo
3938
        mov     ebx, dirinfo
2906
        int     40h
3939
        int     40h
2907
        test    eax, eax
3940
        test    eax, eax
2908
        jz      .ok
3941
        jz      .ok
2909
        cmp     eax, 6
3942
        cmp     eax, 6
2910
        jz      .ok
3943
        jz      .ok
2911
; Failed to read folder, notify user
3944
; Failed to read folder, notify user
2912
        cmp     [bSilentFolderMode], 0
3945
        cmp     [bSilentFolderMode], 0
2913
        jnz     .dont_notify
3946
        jnz     .dont_notify
2914
        push    aContinue
3947
        push    dword aContinue
2915
        push    aRetry
3948
        push    dword aRetry
2916
        mov     edx, esp
3949
        mov     edx, esp
2917
        call    get_error_msg
3950
        call    get_error_msg
2918
        push    [dirinfo.name]
3951
        push    [dirinfo.name]
2919
        push    aCannotReadFolder
3952
        push    dword aCannotReadFolder
2920
        push    eax
3953
        push    eax
2921
        mov     eax, esp
3954
        mov     eax, esp
2922
        push    edx
3955
        push    edx
2923
        push    2
3956
        push    2
2924
        push    eax
3957
        push    eax
2925
        push    3
3958
        push    3
2926
        push    -1
3959
        push    -1
2927
        push    -1
3960
        push    -1
2928
        push    aError
3961
        push    dword aError
2929
        call    SayErr
3962
        call    SayErr
2930
        add     esp, 5*4
3963
        add     esp, 5*4
2931
        test    eax, eax
3964
        test    eax, eax
2932
        jz      .retry
3965
        jz      .retry
2933
.dont_notify:
3966
.dont_notify:
2934
        mov     esi, prev_dir
3967
        mov     esi, prev_dir
2935
        cmp     byte [esi], 0
3968
        cmp     byte [esi], 0
2936
        jz      @f
3969
        jz      @f
2937
        lea     edi, [ebp + panel1_dir - panel1_data]
3970
        lea     edi, [ebp + panel1_dir - panel1_data]
2938
        mov     ecx, 1024/4
3971
        mov     ecx, 1024/4
2939
        rep     movsd
3972
        rep     movsd
2940
        mov     byte [prev_dir], 0
3973
        mov     byte [prev_dir], 0
2941
        ret
3974
        ret
2942
@@:
3975
@@:
2943
        mov     [bSilentFolderMode], 1  ; enter silent mode
3976
        mov     [bSilentFolderMode], 1  ; enter silent mode
2944
        mov     esi, [dirinfo.name]
3977
        mov     esi, [dirinfo.name]
2945
        xor     edx, edx
3978
        xor     edx, edx
2946
.up1:
3979
.up1:
2947
        lodsb
3980
        lodsb
2948
        test    al, al
3981
        test    al, al
2949
        jz      .up1done
3982
        jz      .up1done
2950
        cmp     al, '/'
3983
        cmp     al, '/'
2951
        jnz     .up1
3984
        jnz     .up1
2952
        inc     edx
3985
        inc     edx
2953
        lea     edi, [esi-1]
3986
        lea     edi, [esi-1]
2954
        jmp     .up1
3987
        jmp     .up1
2955
.up1done:
3988
.up1done:
2956
        cmp     edx, 2
3989
        cmp     edx, 2
2957
        jbe     .noup
3990
        jbe     .noup
2958
        stosb
3991
        stosb
2959
        jmp     read_folder
3992
        jmp     read_folder
2960
.noup:
3993
.noup:
2961
        mov     esi, [dirinfo.name]
3994
        mov     esi, [dirinfo.name]
2962
        mov     edi, esi
3995
        mov     edi, esi
2963
        lodsd
3996
        lodsd
2964
        or      eax, 0x00202000
3997
        or      eax, 0x00202000
2965
        cmp     eax, '/rd/'
3998
        cmp     eax, '/rd/'
2966
        jnz     @f
3999
        jnz     @f
2967
        lodsw
4000
        lodsw
2968
        cmp     ax, '1'
4001
        cmp     ax, '1'
2969
        jz      .nosetrd
4002
        jz      .nosetrd
2970
@@:
4003
@@:
2971
        mov     eax, '/rd/'
4004
        mov     eax, '/rd/'
2972
        stosd
4005
        stosd
2973
        mov     ax, '1'
4006
        mov     ax, '1'
2974
        stosw
4007
        stosw
2975
        jmp     read_folder
4008
        jmp     read_folder
2976
.nosetrd:
4009
.nosetrd:
2977
; „ ¦¥ à ¬¤¨áª ­¥ ¯à®ç¨â «áï. ‡­ ç¨â, ­¥ áã¤ì¡ ...
4010
; „ ¦¥ à ¬¤¨áª ­¥ ¯à®ç¨â «áï. ‡­ ç¨â, ­¥ áã¤ì¡ ...
2978
        and     dword [ebp + panel1_numfiles - panel1_data], 0
4011
        and     dword [ebp + panel1_numfiles - panel1_data], 0
2979
        and     dword [ebp + panel1_index - panel1_data], 0
4012
        and     dword [ebp + panel1_index - panel1_data], 0
2980
        and     dword [ebp + panel1_start - panel1_data], 0
4013
        and     dword [ebp + panel1_start - panel1_data], 0
2981
        mov     [bSilentFolderMode], 0  ; leave silent mode
4014
        mov     [bSilentFolderMode], 0  ; leave silent mode
2982
        ret
4015
        ret
2983
.ok:
4016
.ok:
2984
        mov     eax, [dirinfo.dirdata]
4017
        mov     eax, [dirinfo.dirdata]
2985
        cmp     [eax+8], ebx
4018
        cmp     [eax+8], ebx
2986
        jz      .readdone
4019
        jz      .readdone
2987
        push    eax
4020
        push    dword [eax+8]
2988
        mov     eax, [ebp + panel1_files - panel1_data]
4021
        mov     ecx, [ebp + panel1_files - panel1_data]
2989
        call    mf_free
4022
        call    pgfree
2990
        pop     eax
4023
        pop     ecx
2991
        mov     eax, [eax+8]
-
 
2992
        add     eax, 0xF
4024
        add     ecx, 0xF
2993
        and     eax, not 0xF
4025
        and     ecx, not 0xF
2994
        push    eax
4026
        push    ecx
2995
        imul    eax, 4+304
4027
        imul    ecx, 4+304
2996
        add     eax, 32
4028
        add     ecx, 32
2997
        call    xmalloc
4029
        call    xpgalloc
2998
        test    eax, eax
4030
        test    eax, eax
2999
        jnz     .succ1
4031
        jnz     .succ1
3000
        pop     eax
4032
        pop     eax
3001
        jmp     .readdone
4033
        jmp     .readdone
3002
.succ1:
4034
.succ1:
3003
        mov     [ebp + panel1_files - panel1_data], eax
4035
        mov     [ebp + panel1_files - panel1_data], eax
3004
        pop     [ebp + panel1_nfa - panel1_data]
4036
        pop     [ebp + panel1_nfa - panel1_data]
3005
        mov     [prev_dir], 0
4037
        mov     [prev_dir], 0
3006
        jmp     read_folder
4038
        jmp     read_folder
3007
.readdone:
4039
.readdone:
3008
        and     [ebp + panel1_start - panel1_data], 0
4040
        and     [ebp + panel1_start - panel1_data], 0
3009
        and     [ebp + panel1_index - panel1_data], 0
4041
        and     [ebp + panel1_index - panel1_data], 0
3010
        and     [ebp + panel1_start - panel1_data], 0
4042
        and     [ebp + panel1_start - panel1_data], 0
3011
        mov     edi, [ebp + panel1_files - panel1_data]
4043
        mov     edi, [ebp + panel1_files - panel1_data]
3012
        mov     eax, [ebp + panel1_nfa - panel1_data]
4044
        mov     eax, [ebp + panel1_nfa - panel1_data]
3013
        lea     eax, [edi + eax*4 + 32]
4045
        lea     eax, [edi + eax*4 + 32]
3014
        mov     ecx, [eax-32+4]
4046
        mov     ecx, [eax-32+4]
3015
        test    ecx, ecx
4047
        test    ecx, ecx
3016
        jz      .loopdone
4048
        jz      .loopdone
3017
        xor     edx, edx
4049
        xor     edx, edx
3018
; ˆ£­®à¨à㥬 ᯥ樠«ì­ë¥ ¢å®¤ë, ᮮ⢥âáâ¢ãî騥 ¯ ¯ª¥ '.' ¨ ¬¥âª¥ ⮬ 
4050
; ˆ£­®à¨à㥬 ᯥ樠«ì­ë¥ ¢å®¤ë, ᮮ⢥âáâ¢ãî騥 ¯ ¯ª¥ '.' ¨ ¬¥âª¥ ⮬ 
3019
.ptrinit:
4051
.ptrinit:
3020
        cmp     word [eax+40], '.'
4052
        cmp     word [eax+40], '.'
3021
        jz      .loopcont
4053
        jz      .loopcont
3022
        test    byte [eax], 8
4054
        test    byte [eax], 8
3023
        jnz     .loopcont
4055
        jnz     .loopcont
-
 
4056
        mov     byte [eax+303], 0
3024
        test    edx, edx
4057
        test    edx, edx
3025
        jnz     .nodotdot
4058
        jnz     .nodotdot
3026
        cmp     word [eax+40], '..'
4059
        cmp     word [eax+40], '..'
3027
        jnz     .nodotdot
4060
        jnz     .nodotdot
3028
        cmp     byte [eax+42], 0
4061
        cmp     byte [eax+42], 0
3029
        jnz     .nodotdot
4062
        jnz     .nodotdot
3030
        mov     edx, eax
4063
        mov     edx, eax
3031
        push    edi
4064
        push    edi
3032
@@:
4065
@@:
3033
        cmp     edi, [ebp + panel1_files - panel1_data]
4066
        cmp     edi, [ebp + panel1_files - panel1_data]
3034
        jbe     @f
4067
        jbe     @f
3035
        push    dword [edi-4]
4068
        push    dword [edi-4]
3036
        pop     dword [edi]
4069
        pop     dword [edi]
3037
        sub     edi, 4
4070
        sub     edi, 4
3038
        jmp     @b
4071
        jmp     @b
3039
@@:
4072
@@:
3040
        stosd
4073
        stosd
3041
        pop     edi
4074
        pop     edi
3042
        scasd
4075
        scasd
3043
        jmp     .dotdot
4076
        jmp     .dotdot
3044
.nodotdot:
4077
.nodotdot:
3045
        stosd
4078
        stosd
-
 
4079
        xor     ebx, ebx
-
 
4080
        test    byte [eax], 10h
-
 
4081
        setz    bl
-
 
4082
        add     [ebp + panel1_total_num - panel1_data], ebx
-
 
4083
        mov     ebx, dword [eax+32]
-
 
4084
        add     dword [ebp + panel1_total_size - panel1_data], ebx
-
 
4085
        mov     ebx, dword [eax+36]
-
 
4086
        adc     dword [ebp + panel1_total_size+4 - panel1_data], ebx
3046
.dotdot:
4087
.dotdot:
3047
; ¯®¤á¢¥âª 
4088
; ¯®¤á¢¥âª 
3048
;        call    insert_last_dot
4089
;        call    insert_last_dot
3049
        pushad
4090
        pushad
3050
        mov     ebp, eax
4091
        mov     ebp, eax
3051
        lea     esi, [ebp+40]
4092
        lea     esi, [ebp+40]
3052
        mov     edi, lower_file_name
4093
        mov     edi, lower_file_name
3053
        mov     edx, edi
4094
        mov     edx, edi
-
 
4095
        xor     eax, eax
3054
@@:
4096
@@:
3055
        lodsb
4097
        lodsb
3056
        call    tolower
4098
        mov     al, [tolower_table+eax]
3057
        stosb
4099
        stosb
3058
        test    al, al
4100
        test    al, al
3059
        jnz     @b
4101
        jnz     @b
3060
        mov     esi, edx
4102
        mov     esi, edx
3061
        lea     edx, [edi-1]
4103
        lea     edx, [edi-1]
3062
        xor     ecx, ecx
4104
        xor     ecx, ecx
3063
.highlight_test_loop:
4105
.highlight_test_loop:
3064
        mov     ebx, [highlight_groups+ecx*4]
4106
        mov     ebx, [highlight_groups+ecx*4]
3065
        mov     al, [ebx + highlight.IncludeAttributes]
4107
        mov     al, [ebx + highlight.IncludeAttributes]
3066
        mov     ah, [ebp]
4108
        mov     ah, [ebp]
3067
        and     ah, al
4109
        and     ah, al
3068
        cmp     ah, al
4110
        cmp     ah, al
3069
        jnz     .highlight_test_failed
4111
        jnz     .highlight_test_failed
3070
        lea     edi, [ebx + highlight.Mask]
4112
        lea     edi, [ebx + highlight.Mask]
3071
        call    match_mask_rev_lowercase
4113
        call    match_mask_rev_lowercase
3072
        jc      .highlight_test_failed
4114
        jc      .highlight_test_failed
3073
        mov     ah, [ebx + highlight.NormalColor]
4115
        mov     ah, [ebx + highlight.NormalColor]
3074
        test    ah, ah
4116
        test    ah, ah
3075
        jnz     @f
4117
        jnz     @f
3076
        mov     ah, [panel_normal_color]
4118
        mov     ah, [panel_normal_color]
3077
@@:
4119
@@:
3078
        mov     [ebp+5], ah
4120
        mov     [ebp+4], ah
3079
        mov     ah, [ebx + highlight.CursorColor]
4121
        mov     ah, [ebx + highlight.CursorColor]
3080
        test    ah, ah
4122
        test    ah, ah
3081
        jnz     @f
4123
        jnz     @f
3082
        mov     ah, [panel_cursor_color]
4124
        mov     ah, [panel_cursor_color]
3083
@@:
4125
@@:
-
 
4126
        mov     [ebp+5], ah
-
 
4127
        mov     ah, [ebx + highlight.SelectedColor]
-
 
4128
        test    ah, ah
-
 
4129
        jnz     @f
-
 
4130
        mov     ah, [panel_selected_color]
-
 
4131
@@:
3084
        mov     [ebp+6], ah
4132
        mov     [ebp+6], ah
-
 
4133
        mov     ah, [ebx + highlight.SelectedCursorColor]
-
 
4134
        test    ah, ah
-
 
4135
        jnz     @f
-
 
4136
        mov     ah, [panel_selected_cursor_color]
-
 
4137
@@:
-
 
4138
        mov     [ebp+7], ah
3085
        jmp     .doname
4139
        jmp     .doname
3086
.highlight_test_failed:
4140
.highlight_test_failed:
3087
        inc     ecx
4141
        inc     ecx
3088
        cmp     ecx, [highlight_num_groups]
4142
        cmp     ecx, [highlight_num_groups]
3089
        jb      .highlight_test_loop
4143
        jb      .highlight_test_loop
3090
.nohighlight:
4144
.nohighlight:
3091
        mov     ah, [panel_normal_color]
4145
        mov     ah, [panel_normal_color]
3092
        mov     [ebp+5], ah
4146
        mov     [ebp+4], ah
3093
        mov     ah, [panel_cursor_color]
4147
        mov     ah, [panel_cursor_color]
-
 
4148
        mov     [ebp+5], ah
-
 
4149
        mov     ah, [panel_selected_color]
3094
        mov     [ebp+6], ah
4150
        mov     [ebp+6], ah
-
 
4151
        mov     ah, [panel_selected_cursor_color]
-
 
4152
        mov     [ebp+7], ah
3095
.doname:
4153
.doname:
3096
;        call    delete_last_dot
4154
;        call    delete_last_dot
3097
        popad
4155
        popad
3098
.loopcont:
4156
.loopcont:
3099
        add     eax, 304
4157
        add     eax, 304
3100
        dec     ecx
4158
        dec     ecx
3101
        jnz     .ptrinit
4159
        jnz     .ptrinit
3102
.loopdone:
4160
.loopdone:
3103
        sub     edi, [ebp + panel1_files - panel1_data]
4161
        sub     edi, [ebp + panel1_files - panel1_data]
3104
        shr     edi, 2
4162
        shr     edi, 2
3105
        mov     [ebp + panel1_numfiles - panel1_data], edi
4163
        mov     [ebp + panel1_numfiles - panel1_data], edi
3106
.done:
4164
.done:
3107
; ‘®àâ¨à®¢ª 
4165
; ‘®àâ¨à®¢ª 
3108
sort_files:
4166
sort_files:
3109
        movzx   eax, [ebp + panel1_sortmode - panel1_data]
4167
        movzx   eax, [ebp + panel1_sortmode - panel1_data]
3110
        mov     ebx, [compare_fns + eax*4]
4168
        mov     ebx, [compare_fns + eax*4]
3111
        mov     edx, [ebp + panel1_files - panel1_data]
4169
        mov     edx, [ebp + panel1_files - panel1_data]
3112
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
4170
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
3113
        jecxz   .skip
4171
        jecxz   .skip
3114
        mov     eax, [edx]
4172
        mov     eax, [edx]
3115
        cmp     word [eax], '..'
4173
        cmp     word [eax+40], '..'
3116
        jnz     .nodotdot
4174
        jnz     .nodotdot
3117
        cmp     byte [eax+2], 0
4175
        cmp     byte [eax+42], 0
3118
        jnz     .nodotdot
4176
        jnz     .nodotdot
3119
        dec     ecx
4177
        dec     ecx
3120
        add     edx, 4
4178
        add     edx, 4
3121
.nodotdot:
4179
.nodotdot:
3122
        call    sort
4180
        call    sort
3123
.skip:
4181
.skip:
3124
        mov     [bSilentFolderMode], 0  ; leave silent mode
4182
        mov     [bSilentFolderMode], 0  ; leave silent mode
3125
        ret
4183
        ret
3126
 
4184
 
3127
compare_name:
4185
compare_name:
3128
        test    byte [esi], 10h
4186
        test    byte [esi], 10h
3129
        jnz     .1dir
4187
        jnz     .1dir
3130
        test    byte [edi], 10h
4188
        test    byte [edi], 10h
3131
        jnz     .greater
4189
        jnz     .greater
3132
.eq1:
4190
.eq1:
3133
        add     esi, 40
4191
        add     esi, 40
3134
        add     edi, 40
4192
        add     edi, 40
3135
        jmp     strcmpi
4193
        jmp     strcmpi
3136
.greater:
4194
.greater:
3137
        test    esi, esi
4195
        test    esi, esi
3138
        ret
4196
        ret
3139
.1dir:
4197
.1dir:
3140
        test    byte [edi], 10h
4198
        test    byte [edi], 10h
3141
        jnz     .eq1
4199
        jnz     .eq1
3142
.less:
4200
.less:
3143
        xor     edi, edi
4201
        xor     edi, edi
3144
        stc
4202
        stc
3145
        ret
4203
        ret
3146
 
4204
 
3147
compare_name_rev:
4205
compare_name_rev:
3148
        test    byte [esi], 10h
4206
        test    byte [esi], 10h
3149
        jnz     .1dir
4207
        jnz     .1dir
3150
        test    byte [edi], 10h
4208
        test    byte [edi], 10h
3151
        jnz     .greater
4209
        jnz     .greater
3152
.eq1:
4210
.eq1:
3153
        add     esi, 40
4211
        add     esi, 40
3154
        add     edi, 40
4212
        add     edi, 40
3155
        xchg    esi, edi
4213
        xchg    esi, edi
3156
        jmp     strcmpi
4214
        jmp     strcmpi
3157
.greater:
4215
.greater:
3158
        test    esi, esi
4216
        test    esi, esi
3159
        ret
4217
        ret
3160
.1dir:
4218
.1dir:
3161
        test    byte [edi], 10h
4219
        test    byte [edi], 10h
3162
        jnz     .eq1
4220
        jnz     .eq1
3163
.less:
4221
.less:
3164
        xor     edi, edi
4222
        xor     edi, edi
3165
        stc
4223
        stc
3166
        ret
4224
        ret
3167
 
4225
 
3168
strcmpi:
4226
strcmpi:
3169
        push    eax
4227
        push    eax
3170
@@:
4228
@@:
3171
        lodsb
4229
        lodsb
3172
        call    match_symbol
4230
        call    match_symbol
3173
        jnz     .ret
4231
        jnz     .ret
3174
        inc     edi
4232
        inc     edi
3175
        test    al, al
4233
        test    al, al
3176
        jnz     @b
4234
        jnz     @b
3177
.ret:
4235
.ret:
3178
        pop     eax
4236
        pop     eax
3179
        ret
4237
        ret
3180
 
4238
 
3181
compare_ext:
4239
compare_ext:
3182
        test    byte [esi], 10h
4240
        test    byte [esi], 10h
3183
        jnz     .1dir
4241
        jnz     .1dir
3184
        test    byte [edi], 10h
4242
        test    byte [edi], 10h
3185
        jnz     .greater
4243
        jnz     .greater
3186
.eq1:
4244
.eq1:
3187
        add     esi, 40
4245
        add     esi, 40
3188
        add     edi, 40
4246
        add     edi, 40
3189
        push    esi edi
4247
        push    esi edi
3190
        call    seek_ext
4248
        call    seek_ext
3191
        xchg    esi, edi
4249
        xchg    esi, edi
3192
        call    seek_ext
4250
        call    seek_ext
3193
        xchg    esi, edi
4251
        xchg    esi, edi
3194
        call    strcmpi
4252
        call    strcmpi
3195
        jnz     .ret
4253
        jnz     .ret
3196
        pop     edi esi
4254
        pop     edi esi
3197
        jmp     strcmpi
4255
        jmp     strcmpi
3198
.ret:
4256
.ret:
3199
        pop     edi esi
4257
        pop     edi esi
3200
        ret
4258
        ret
3201
.greater:
4259
.greater:
3202
        test    esi, esi
4260
        test    esi, esi
3203
        ret
4261
        ret
3204
.1dir:
4262
.1dir:
3205
        test    byte [edi], 10h
4263
        test    byte [edi], 10h
3206
        jnz     .eq1
4264
        jnz     .eq1
3207
.less:
4265
.less:
3208
        xor     edi, edi
4266
        xor     edi, edi
3209
        stc
4267
        stc
3210
        ret
4268
        ret
3211
 
4269
 
3212
compare_ext_rev:
4270
compare_ext_rev:
3213
        test    byte [esi], 10h
4271
        test    byte [esi], 10h
3214
        jnz     .1dir
4272
        jnz     .1dir
3215
        test    byte [edi], 10h
4273
        test    byte [edi], 10h
3216
        jnz     .greater
4274
        jnz     .greater
3217
.eq1:
4275
.eq1:
3218
        add     esi, 40
4276
        add     esi, 40
3219
        add     edi, 40
4277
        add     edi, 40
3220
        push    esi edi
4278
        push    esi edi
3221
        call    seek_ext
4279
        call    seek_ext
3222
        xchg    esi, edi
4280
        xchg    esi, edi
3223
        call    seek_ext
4281
        call    seek_ext
3224
        call    strcmpi
4282
        call    strcmpi
3225
        jnz     .ret
4283
        jnz     .ret
3226
        pop     edi esi
4284
        pop     edi esi
3227
        xchg    esi, edi
4285
        xchg    esi, edi
3228
        jmp     strcmpi
4286
        jmp     strcmpi
3229
.ret:
4287
.ret:
3230
        pop     edi esi
4288
        pop     edi esi
3231
        ret
4289
        ret
3232
.greater:
4290
.greater:
3233
        test    esi, esi
4291
        test    esi, esi
3234
        ret
4292
        ret
3235
.1dir:
4293
.1dir:
3236
        test    byte [edi], 10h
4294
        test    byte [edi], 10h
3237
        jnz     .eq1
4295
        jnz     .eq1
3238
.less:
4296
.less:
3239
        xor     edi, edi
4297
        xor     edi, edi
3240
        stc
4298
        stc
3241
        ret
4299
        ret
3242
 
4300
 
3243
seek_ext:
4301
seek_ext:
3244
        push    eax
4302
        push    eax
3245
        xor     eax, eax
4303
        xor     eax, eax
3246
.l:
4304
.l:
3247
        inc     esi
4305
        inc     esi
3248
        cmp     byte [esi-1], '.'
4306
        cmp     byte [esi-1], '.'
3249
        jnz     @f
4307
        jnz     @f
3250
        mov     eax, esi
4308
        mov     eax, esi
3251
@@:
4309
@@:
3252
        cmp     byte [esi-1], 0
4310
        cmp     byte [esi-1], 0
3253
        jnz     .l
4311
        jnz     .l
3254
        test    eax, eax
4312
        test    eax, eax
3255
        jnz     @f
4313
        jnz     @f
3256
        lea     eax, [esi-1]
4314
        lea     eax, [esi-1]
3257
@@:
4315
@@:
3258
        mov     esi, eax
4316
        mov     esi, eax
3259
        pop     eax
4317
        pop     eax
3260
        ret
4318
        ret
3261
 
4319
 
3262
compare_modified:
4320
compare_modified:
3263
        test    byte [esi], 10h
4321
        test    byte [esi], 10h
3264
        jnz     .1dir
4322
        jnz     .1dir
3265
        test    byte [edi], 10h
4323
        test    byte [edi], 10h
3266
        jnz     .greater
4324
        jnz     .greater
3267
.eq1:
4325
.eq1:
3268
        push    edi
4326
        push    edi
3269
        mov     edi, [edi+28]
4327
        mov     edi, [edi+28]
3270
        cmp     edi, [esi+28]
4328
        cmp     edi, [esi+28]
3271
        pop     edi
4329
        pop     edi
3272
        jnz     @f
4330
        jnz     @f
3273
        push    edi
4331
        push    edi
3274
        mov     edi, [edi+24]
4332
        mov     edi, [edi+24]
3275
        cmp     edi, [esi+24]
4333
        cmp     edi, [esi+24]
3276
        pop     edi
4334
        pop     edi
3277
        jnz     @f
4335
        jnz     @f
3278
        add     esi, 40
4336
        add     esi, 40
3279
        add     edi, 40
4337
        add     edi, 40
3280
        jmp     strcmpi
4338
        jmp     strcmpi
3281
@@:
4339
@@:
3282
        ret
4340
        ret
3283
.greater:
4341
.greater:
3284
        test    esi, esi
4342
        test    esi, esi
3285
        ret
4343
        ret
3286
.1dir:
4344
.1dir:
3287
        test    byte [edi], 10h
4345
        test    byte [edi], 10h
3288
        jnz     .eq1
4346
        jnz     .eq1
3289
.less:
4347
.less:
3290
        xor     edi, edi
4348
        xor     edi, edi
3291
        stc
4349
        stc
3292
        ret
4350
        ret
3293
 
4351
 
3294
compare_modified_rev:
4352
compare_modified_rev:
3295
        test    byte [esi], 10h
4353
        test    byte [esi], 10h
3296
        jnz     .1dir
4354
        jnz     .1dir
3297
        test    byte [edi], 10h
4355
        test    byte [edi], 10h
3298
        jnz     .greater
4356
        jnz     .greater
3299
.eq1:
4357
.eq1:
3300
        push    esi
4358
        push    esi
3301
        mov     esi, [esi+28]
4359
        mov     esi, [esi+28]
3302
        cmp     esi, [edi+28]
4360
        cmp     esi, [edi+28]
3303
        pop     esi
4361
        pop     esi
3304
        jnz     @f
4362
        jnz     @f
3305
        push    esi
4363
        push    esi
3306
        mov     esi, [esi+24]
4364
        mov     esi, [esi+24]
3307
        cmp     esi, [edi+24]
4365
        cmp     esi, [edi+24]
3308
        pop     esi
4366
        pop     esi
3309
        jnz     @f
4367
        jnz     @f
3310
        add     esi, 40
4368
        add     esi, 40
3311
        add     edi, 40
4369
        add     edi, 40
3312
        xchg    esi, edi
4370
        xchg    esi, edi
3313
        jmp     strcmpi
4371
        jmp     strcmpi
3314
@@:
4372
@@:
3315
        ret
4373
        ret
3316
.greater:
4374
.greater:
3317
        test    esi, esi
4375
        test    esi, esi
3318
        ret
4376
        ret
3319
.1dir:
4377
.1dir:
3320
        test    byte [edi], 10h
4378
        test    byte [edi], 10h
3321
        jnz     .eq1
4379
        jnz     .eq1
3322
.less:
4380
.less:
3323
        xor     edi, edi
4381
        xor     edi, edi
3324
        stc
4382
        stc
3325
        ret
4383
        ret
3326
 
4384
 
3327
compare_size:
4385
compare_size:
3328
        test    byte [esi], 10h
4386
        test    byte [esi], 10h
3329
        jnz     .1dir
4387
        jnz     .1dir
3330
        test    byte [edi], 10h
4388
        test    byte [edi], 10h
3331
        jnz     .greater
4389
        jnz     .greater
3332
.eq1:
4390
.eq1:
3333
        push    edi
4391
        push    edi
3334
        mov     edi, [edi+36]
4392
        mov     edi, [edi+36]
3335
        cmp     edi, [esi+36]
4393
        cmp     edi, [esi+36]
3336
        pop     edi
4394
        pop     edi
3337
        jnz     @f
4395
        jnz     @f
3338
        push    edi
4396
        push    edi
3339
        mov     edi, [edi+32]
4397
        mov     edi, [edi+32]
3340
        cmp     edi, [esi+32]
4398
        cmp     edi, [esi+32]
3341
        pop     edi
4399
        pop     edi
3342
        jnz     @f
4400
        jnz     @f
3343
        add     esi, 40
4401
        add     esi, 40
3344
        add     edi, 40
4402
        add     edi, 40
3345
        jmp     strcmpi
4403
        jmp     strcmpi
3346
@@:
4404
@@:
3347
        ret
4405
        ret
3348
.greater:
4406
.greater:
3349
        test    esi, esi
4407
        test    esi, esi
3350
        ret
4408
        ret
3351
.1dir:
4409
.1dir:
3352
        test    byte [edi], 10h
4410
        test    byte [edi], 10h
3353
        jnz     .eq1
4411
        jnz     .eq1
3354
.less:
4412
.less:
3355
        xor     edi, edi
4413
        xor     edi, edi
3356
        stc
4414
        stc
3357
        ret
4415
        ret
3358
 
4416
 
3359
compare_size_rev:
4417
compare_size_rev:
3360
        test    byte [esi], 10h
4418
        test    byte [esi], 10h
3361
        jnz     .1dir
4419
        jnz     .1dir
3362
        test    byte [edi], 10h
4420
        test    byte [edi], 10h
3363
        jnz     .greater
4421
        jnz     .greater
3364
.eq1:
4422
.eq1:
3365
        push    esi
4423
        push    esi
3366
        mov     esi, [esi+36]
4424
        mov     esi, [esi+36]
3367
        cmp     esi, [edi+36]
4425
        cmp     esi, [edi+36]
3368
        pop     esi
4426
        pop     esi
3369
        jnz     @f
4427
        jnz     @f
3370
        push    esi
4428
        push    esi
3371
        mov     esi, [esi+32]
4429
        mov     esi, [esi+32]
3372
        cmp     esi, [edi+32]
4430
        cmp     esi, [edi+32]
3373
        pop     esi
4431
        pop     esi
3374
        jnz     @f
4432
        jnz     @f
3375
        add     esi, 40
4433
        add     esi, 40
3376
        add     edi, 40
4434
        add     edi, 40
3377
        xchg    esi, edi
4435
        xchg    esi, edi
3378
        jmp     strcmpi
4436
        jmp     strcmpi
3379
@@:
4437
@@:
3380
        ret
4438
        ret
3381
.greater:
4439
.greater:
3382
        test    esi, esi
4440
        test    esi, esi
3383
        ret
4441
        ret
3384
.1dir:
4442
.1dir:
3385
        test    byte [edi], 10h
4443
        test    byte [edi], 10h
3386
        jnz     .eq1
4444
        jnz     .eq1
3387
.less:
4445
.less:
3388
        xor     edi, edi
4446
        xor     edi, edi
3389
        stc
4447
        stc
3390
        ret
4448
        ret
3391
 
4449
 
3392
compare_unordered:
4450
compare_unordered:
3393
        cmp     esi, edi
4451
        cmp     esi, edi
3394
        ret
4452
        ret
3395
compare_unordered_rev:
4453
compare_unordered_rev:
3396
        cmp     edi, esi
4454
        cmp     edi, esi
3397
        ret
4455
        ret
3398
 
4456
 
3399
compare_created:
4457
compare_created:
3400
        test    byte [esi], 10h
4458
        test    byte [esi], 10h
3401
        jnz     .1dir
4459
        jnz     .1dir
3402
        test    byte [edi], 10h
4460
        test    byte [edi], 10h
3403
        jnz     .greater
4461
        jnz     .greater
3404
.eq1:
4462
.eq1:
3405
        push    edi
4463
        push    edi
3406
        mov     edi, [edi+12]
4464
        mov     edi, [edi+12]
3407
        cmp     edi, [esi+12]
4465
        cmp     edi, [esi+12]
3408
        pop     edi
4466
        pop     edi
3409
        jnz     @f
4467
        jnz     @f
3410
        push    edi
4468
        push    edi
3411
        mov     edi, [edi+8]
4469
        mov     edi, [edi+8]
3412
        cmp     edi, [esi+8]
4470
        cmp     edi, [esi+8]
3413
        pop     edi
4471
        pop     edi
3414
        jnz     @f
4472
        jnz     @f
3415
        add     esi, 40
4473
        add     esi, 40
3416
        add     edi, 40
4474
        add     edi, 40
3417
        jmp     strcmpi
4475
        jmp     strcmpi
3418
@@:
4476
@@:
3419
        ret
4477
        ret
3420
.greater:
4478
.greater:
3421
        test    esi, esi
4479
        test    esi, esi
3422
        ret
4480
        ret
3423
.1dir:
4481
.1dir:
3424
        test    byte [edi], 10h
4482
        test    byte [edi], 10h
3425
        jnz     .eq1
4483
        jnz     .eq1
3426
.less:
4484
.less:
3427
        xor     edi, edi
4485
        xor     edi, edi
3428
        stc
4486
        stc
3429
        ret
4487
        ret
3430
 
4488
 
3431
compare_created_rev:
4489
compare_created_rev:
3432
        test    byte [esi], 10h
4490
        test    byte [esi], 10h
3433
        jnz     .1dir
4491
        jnz     .1dir
3434
        test    byte [edi], 10h
4492
        test    byte [edi], 10h
3435
        jnz     .greater
4493
        jnz     .greater
3436
.eq1:
4494
.eq1:
3437
        push    esi
4495
        push    esi
3438
        mov     esi, [esi+12]
4496
        mov     esi, [esi+12]
3439
        cmp     esi, [edi+12]
4497
        cmp     esi, [edi+12]
3440
        pop     esi
4498
        pop     esi
3441
        jnz     @f
4499
        jnz     @f
3442
        push    esi
4500
        push    esi
3443
        mov     esi, [esi+8]
4501
        mov     esi, [esi+8]
3444
        cmp     esi, [edi+8]
4502
        cmp     esi, [edi+8]
3445
        pop     esi
4503
        pop     esi
3446
        jnz     @f
4504
        jnz     @f
3447
        add     esi, 40
4505
        add     esi, 40
3448
        add     edi, 40
4506
        add     edi, 40
3449
        xchg    esi, edi
4507
        xchg    esi, edi
3450
        jmp     strcmpi
4508
        jmp     strcmpi
3451
@@:
4509
@@:
3452
        ret
4510
        ret
3453
.greater:
4511
.greater:
3454
        test    esi, esi
4512
        test    esi, esi
3455
        ret
4513
        ret
3456
.1dir:
4514
.1dir:
3457
        test    byte [edi], 10h
4515
        test    byte [edi], 10h
3458
        jnz     .eq1
4516
        jnz     .eq1
3459
.less:
4517
.less:
3460
        xor     edi, edi
4518
        xor     edi, edi
3461
        stc
4519
        stc
3462
        ret
4520
        ret
3463
 
4521
 
3464
compare_accessed:
4522
compare_accessed:
3465
        test    byte [esi], 10h
4523
        test    byte [esi], 10h
3466
        jnz     .1dir
4524
        jnz     .1dir
3467
        test    byte [edi], 10h
4525
        test    byte [edi], 10h
3468
        jnz     .greater
4526
        jnz     .greater
3469
.eq1:
4527
.eq1:
3470
        push    edi
4528
        push    edi
3471
        mov     edi, [edi+20]
4529
        mov     edi, [edi+20]
3472
        cmp     edi, [esi+20]
4530
        cmp     edi, [esi+20]
3473
        pop     edi
4531
        pop     edi
3474
        jnz     @f
4532
        jnz     @f
3475
        push    edi
4533
        push    edi
3476
        mov     edi, [edi+16]
4534
        mov     edi, [edi+16]
3477
        cmp     edi, [esi+16]
4535
        cmp     edi, [esi+16]
3478
        pop     edi
4536
        pop     edi
3479
        jnz     @f
4537
        jnz     @f
3480
        add     esi, 40
4538
        add     esi, 40
3481
        add     edi, 40
4539
        add     edi, 40
3482
        jmp     strcmpi
4540
        jmp     strcmpi
3483
@@:
4541
@@:
3484
        ret
4542
        ret
3485
.greater:
4543
.greater:
3486
        test    esi, esi
4544
        test    esi, esi
3487
        ret
4545
        ret
3488
.1dir:
4546
.1dir:
3489
        test    byte [edi], 10h
4547
        test    byte [edi], 10h
3490
        jnz     .eq1
4548
        jnz     .eq1
3491
.less:
4549
.less:
3492
        xor     edi, edi
4550
        xor     edi, edi
3493
        stc
4551
        stc
3494
        ret
4552
        ret
3495
 
4553
 
3496
compare_accessed_rev:
4554
compare_accessed_rev:
3497
        test    byte [esi], 10h
4555
        test    byte [esi], 10h
3498
        jnz     .1dir
4556
        jnz     .1dir
3499
        test    byte [edi], 10h
4557
        test    byte [edi], 10h
3500
        jnz     .greater
4558
        jnz     .greater
3501
.eq1:
4559
.eq1:
3502
        push    esi
4560
        push    esi
3503
        mov     esi, [esi+20]
4561
        mov     esi, [esi+20]
3504
        cmp     esi, [edi+20]
4562
        cmp     esi, [edi+20]
3505
        pop     esi
4563
        pop     esi
3506
        jnz     @f
4564
        jnz     @f
3507
        push    esi
4565
        push    esi
3508
        mov     esi, [esi+16]
4566
        mov     esi, [esi+16]
3509
        cmp     esi, [edi+16]
4567
        cmp     esi, [edi+16]
3510
        pop     esi
4568
        pop     esi
3511
        jnz     @f
4569
        jnz     @f
3512
        add     esi, 40
4570
        add     esi, 40
3513
        add     edi, 40
4571
        add     edi, 40
3514
        xchg    esi, edi
4572
        xchg    esi, edi
3515
        jmp     strcmpi
4573
        jmp     strcmpi
3516
@@:
4574
@@:
3517
        ret
4575
        ret
3518
.greater:
4576
.greater:
3519
        test    esi, esi
4577
        test    esi, esi
3520
        ret
4578
        ret
3521
.1dir:
4579
.1dir:
3522
        test    byte [edi], 10h
4580
        test    byte [edi], 10h
3523
        jnz     .eq1
4581
        jnz     .eq1
3524
.less:
4582
.less:
3525
        xor     edi, edi
4583
        xor     edi, edi
3526
        stc
4584
        stc
3527
        ret
4585
        ret
3528
 
4586
 
3529
if 0
4587
if 0
3530
match_mask:
4588
match_mask:
3531
; in: esi->name, edi->mask
4589
; in: esi->name, edi->mask
3532
; out: CF clear <=> match
4590
; out: CF clear <=> match
3533
        pusha
4591
        pusha
3534
        xchg    esi, edi
4592
        xchg    esi, edi
3535
.main_cycle:
4593
.main_cycle:
3536
        push    esi
4594
        push    esi
3537
@@:
4595
@@:
3538
        lodsb
4596
        lodsb
3539
        test    al, al
4597
        test    al, al
3540
        jz      @f
4598
        jz      @f
3541
        cmp     al, ','
4599
        cmp     al, ','
3542
        jz      @f
4600
        jz      @f
3543
        cmp     al, '|'
4601
        cmp     al, '|'
3544
        jnz     @b
4602
        jnz     @b
3545
@@:
4603
@@:
3546
        mov     [esi-1], byte 0
4604
        mov     [esi-1], byte 0
3547
        xchg    esi, [esp]
4605
        xchg    esi, [esp]
3548
        call    match_single_mask
4606
        call    match_single_mask
3549
        pop     esi
4607
        pop     esi
3550
        mov     [esi-1], al
4608
        mov     [esi-1], al
3551
        jnc     .found
4609
        jnc     .found
3552
        cmp     al, ','
4610
        cmp     al, ','
3553
        jz      .main_cycle
4611
        jz      .main_cycle
3554
.done_fail:
4612
.done_fail:
3555
        stc
4613
        stc
3556
        popa
4614
        popa
3557
        ret
4615
        ret
3558
.found:
4616
.found:
3559
        test    al, al
4617
        test    al, al
3560
        jz      .done_succ
4618
        jz      .done_succ
3561
        cmp     al, '|'
4619
        cmp     al, '|'
3562
        jz      .test_exclude
4620
        jz      .test_exclude
3563
        lodsb
4621
        lodsb
3564
        jmp     .found
4622
        jmp     .found
3565
.done_succ:
4623
.done_succ:
3566
        clc
4624
        clc
3567
        popa
4625
        popa
3568
        ret
4626
        ret
3569
.test_exclude:
4627
.test_exclude:
3570
        push    esi
4628
        push    esi
3571
@@:
4629
@@:
3572
        lodsb
4630
        lodsb
3573
        test    al, al
4631
        test    al, al
3574
        jz      @f
4632
        jz      @f
3575
        cmp     al, ','
4633
        cmp     al, ','
3576
        jnz     @b
4634
        jnz     @b
3577
@@:
4635
@@:
3578
        mov     byte [esi-1], 0
4636
        mov     byte [esi-1], 0
3579
        xchg    esi, [esp]
4637
        xchg    esi, [esp]
3580
        call    match_single_mask
4638
        call    match_single_mask
3581
        pop     esi
4639
        pop     esi
3582
        mov     [esi-1], al
4640
        mov     [esi-1], al
3583
        jnc     .done_fail
4641
        jnc     .done_fail
3584
        test    al, al
4642
        test    al, al
3585
        jz      .done_succ
4643
        jz      .done_succ
3586
        jmp     .test_exclude
4644
        jmp     .test_exclude
3587
 
4645
 
3588
match_single_mask:
4646
match_single_mask:
3589
; in: esi->mask, edi->name
4647
; in: esi->mask, edi->name
3590
; out: CF clear <=> match
4648
; out: CF clear <=> match
3591
        pusha
4649
        pusha
3592
.mask_symbol:
4650
.mask_symbol:
3593
        lodsb
4651
        lodsb
3594
        test    al, al
4652
        test    al, al
3595
        jz      .mask_done
4653
        jz      .mask_done
3596
        cmp     al, '*'
4654
        cmp     al, '*'
3597
        jz      .asterisk
4655
        jz      .asterisk
3598
        cmp     al, '?'
4656
        cmp     al, '?'
3599
        jz      .quest
4657
        jz      .quest
3600
        cmp     al, '['
4658
        cmp     al, '['
3601
        jz      .list
4659
        jz      .list
3602
        call    match_symbol
4660
        call    match_symbol
3603
        jnz     .done_fail
4661
        jnz     .done_fail
3604
        inc     edi
4662
        inc     edi
3605
        jmp     .mask_symbol
4663
        jmp     .mask_symbol
3606
.done_fail:
4664
.done_fail:
3607
        stc
4665
        stc
3608
        popa
4666
        popa
3609
        ret
4667
        ret
3610
.mask_done:
4668
.mask_done:
3611
        scasb
4669
        scasb
3612
        jnz     .done_fail
4670
        jnz     .done_fail
3613
.done_succ:
4671
.done_succ:
3614
        clc
4672
        clc
3615
        popa
4673
        popa
3616
        ret
4674
        ret
3617
.quest:
4675
.quest:
3618
        mov     al, 0
4676
        mov     al, 0
3619
        scasb
4677
        scasb
3620
        jz      .done_fail
4678
        jz      .done_fail
3621
        jmp     .mask_symbol
4679
        jmp     .mask_symbol
3622
.list:
4680
.list:
3623
        lodsb
4681
        lodsb
3624
        cmp     al, ']'
4682
        cmp     al, ']'
3625
        jz      .done_fail
4683
        jz      .done_fail
3626
        cmp     byte [esi+1], '-'
4684
        cmp     byte [esi+1], '-'
3627
        jz      .range
4685
        jz      .range
3628
        call    match_symbol
4686
        call    match_symbol
3629
        jnz     .list
4687
        jnz     .list
3630
.listok:
4688
.listok:
3631
        inc     edi
4689
        inc     edi
3632
@@:
4690
@@:
3633
        lodsb
4691
        lodsb
3634
        cmp     al, ']'
4692
        cmp     al, ']'
3635
        jnz     @b
4693
        jnz     @b
3636
        jmp     .mask_symbol
4694
        jmp     .mask_symbol
3637
.range:
4695
.range:
3638
        call    match_symbol
4696
        call    match_symbol
3639
        ja      @f
4697
        ja      @f
3640
        mov     al, [esi+2]
4698
        mov     al, [esi+2]
3641
        call    match_symbol
4699
        call    match_symbol
3642
        jae     .listok
4700
        jae     .listok
3643
@@:
4701
@@:
3644
        inc     esi
4702
        inc     esi
3645
        jmp     .list
4703
        jmp     .list
3646
.asterisk:
4704
.asterisk:
3647
        cmp     byte [esi], 0
4705
        cmp     byte [esi], 0
3648
        jz      .done_succ
4706
        jz      .done_succ
3649
        cmp     byte [esi], '?'
4707
        cmp     byte [esi], '?'
3650
        jnz     @f
4708
        jnz     @f
3651
        mov     al, 0
4709
        mov     al, 0
3652
        scasb
4710
        scasb
3653
        jz      .done_fail
4711
        jz      .done_fail
3654
        inc     esi
4712
        inc     esi
3655
        jmp     .asterisk
4713
        jmp     .asterisk
3656
@@:
4714
@@:
3657
        cmp     byte [esi], '['
4715
        cmp     byte [esi], '['
3658
        jz      .asterisk_common
4716
        jz      .asterisk_common
3659
; the mask is ...*...
4717
; the mask is ...*...
3660
.asterisk_normal:
4718
.asterisk_normal:
3661
        mov     al, [esi]
4719
        mov     al, [esi]
3662
@@:
4720
@@:
3663
        cmp     byte [edi], 0
4721
        cmp     byte [edi], 0
3664
        jz      .done_fail
4722
        jz      .done_fail
3665
        call    match_symbol
4723
        call    match_symbol
3666
        jz      @f
4724
        jz      @f
3667
        inc     edi
4725
        inc     edi
3668
        jmp     @b
4726
        jmp     @b
3669
@@:
4727
@@:
3670
        inc     edi
4728
        inc     edi
3671
        inc     esi
4729
        inc     esi
3672
        call    match_single_mask
4730
        call    match_single_mask
3673
        jnc     .done_succ
4731
        jnc     .done_succ
3674
        dec     esi
4732
        dec     esi
3675
        jmp     .asterisk_normal
4733
        jmp     .asterisk_normal
3676
.asterisk_common:
4734
.asterisk_common:
3677
        push    edi
4735
        push    edi
3678
@@:
4736
@@:
3679
        call    match_single_mask
4737
        call    match_single_mask
3680
        jnc     @f
4738
        jnc     @f
3681
        mov     al, 0
4739
        mov     al, 0
3682
        scasb
4740
        scasb
3683
        jnz     @b
4741
        jnz     @b
3684
        pop     edi
4742
        pop     edi
3685
        jmp     .done_fail
4743
        jmp     .done_fail
3686
@@:
4744
@@:
3687
        pop     edi
4745
        pop     edi
3688
        jmp     .done_succ
4746
        jmp     .done_succ
3689
 
4747
 
3690
match_mask_rev:
4748
match_mask_rev:
3691
; in: esi->name, edx->end of name, edi->mask
4749
; in: esi->name, edx->end of name, edi->mask
3692
; out: CF clear <=> match
4750
; out: CF clear <=> match
3693
        pusha
4751
        pusha
3694
        xchg    esi, edx
4752
        xchg    esi, edx
3695
        xchg    esi, edi
4753
        xchg    esi, edi
3696
.main_cycle:
4754
.main_cycle:
3697
        mov     ecx, esi
4755
        mov     ecx, esi
3698
@@:
4756
@@:
3699
        lodsb
4757
        lodsb
3700
        test    al, al
4758
        test    al, al
3701
        jz      @f
4759
        jz      @f
3702
        cmp     al, ','
4760
        cmp     al, ','
3703
        jz      @f
4761
        jz      @f
3704
        cmp     al, '|'
4762
        cmp     al, '|'
3705
        jnz     @b
4763
        jnz     @b
3706
@@:
4764
@@:
3707
        dec     esi
4765
        dec     esi
3708
        mov     [esi], byte 0
4766
        mov     [esi], byte 0
3709
        call    match_single_mask_rev2
4767
        call    match_single_mask_rev2
3710
        mov     [esi], al
4768
        mov     [esi], al
3711
        inc     esi
4769
        inc     esi
3712
        jnc     .found
4770
        jnc     .found
3713
        cmp     al, ','
4771
        cmp     al, ','
3714
        jz      .main_cycle
4772
        jz      .main_cycle
3715
.done_fail:
4773
.done_fail:
3716
        stc
4774
        stc
3717
        popa
4775
        popa
3718
        ret
4776
        ret
3719
.found:
4777
.found:
3720
        test    al, al
4778
        test    al, al
3721
        jz      .done_succ
4779
        jz      .done_succ
3722
        cmp     al, '|'
4780
        cmp     al, '|'
3723
        jz      .test_exclude
4781
        jz      .test_exclude
3724
        lodsb
4782
        lodsb
3725
        jmp     .found
4783
        jmp     .found
3726
.done_succ:
4784
.done_succ:
3727
        clc
4785
        clc
3728
        popa
4786
        popa
3729
        ret
4787
        ret
3730
.test_exclude:
4788
.test_exclude:
3731
        mov     ecx, esi
4789
        mov     ecx, esi
3732
@@:
4790
@@:
3733
        lodsb
4791
        lodsb
3734
        test    al, al
4792
        test    al, al
3735
        jz      @f
4793
        jz      @f
3736
        cmp     al, ','
4794
        cmp     al, ','
3737
        jnz     @b
4795
        jnz     @b
3738
@@:
4796
@@:
3739
        dec     esi
4797
        dec     esi
3740
        mov     byte [esi], 0
4798
        mov     byte [esi], 0
3741
        call    match_single_mask_rev2
4799
        call    match_single_mask_rev2
3742
        mov     [esi], al
4800
        mov     [esi], al
3743
        inc     esi
4801
        inc     esi
3744
        jnc     .done_fail
4802
        jnc     .done_fail
3745
        test    al, al
4803
        test    al, al
3746
        jz      .done_succ
4804
        jz      .done_succ
3747
        jmp     .test_exclude
4805
        jmp     .test_exclude
3748
 
4806
 
3749
match_single_mask_rev2:
4807
match_single_mask_rev2:
3750
        pusha
4808
        pusha
3751
        jmp     match_single_mask_rev.mask_symbol
4809
        jmp     match_single_mask_rev.mask_symbol
3752
match_single_mask_rev:
4810
match_single_mask_rev:
3753
; in: esi->mask, edi->end of name, edx->start of name
4811
; in: esi->mask, edi->end of name, edx->start of name
3754
; out: CF clear <=> match
4812
; out: CF clear <=> match
3755
        pusha
4813
        pusha
3756
        mov     ecx, esi
4814
        mov     ecx, esi
3757
@@:
4815
@@:
3758
        lodsb
4816
        lodsb
3759
        test    al, al
4817
        test    al, al
3760
        jnz     @b
4818
        jnz     @b
3761
        dec     esi
4819
        dec     esi
3762
; esi->end of mask, ecx->start of mask
4820
; esi->end of mask, ecx->start of mask
3763
.mask_symbol:
4821
.mask_symbol:
3764
        dec     esi
4822
        dec     esi
3765
        cmp     esi, ecx
4823
        cmp     esi, ecx
3766
        jb      .mask_done
4824
        jb      .mask_done
3767
        mov     al, [esi]
4825
        mov     al, [esi]
3768
        cmp     al, '*'
4826
        cmp     al, '*'
3769
        jz      .asterisk
4827
        jz      .asterisk
3770
        cmp     al, '?'
4828
        cmp     al, '?'
3771
        jz      .quest
4829
        jz      .quest
3772
        cmp     al, ']'
4830
        cmp     al, ']'
3773
        jz      .list
4831
        jz      .list
3774
        dec     edi
4832
        dec     edi
3775
        cmp     edi, edx
4833
        cmp     edi, edx
3776
        jb      .done_fail
4834
        jb      .done_fail
3777
        call    match_symbol
4835
        call    match_symbol
3778
        jz      .mask_symbol
4836
        jz      .mask_symbol
3779
.done_fail:
4837
.done_fail:
3780
        stc
4838
        stc
3781
        popa
4839
        popa
3782
        ret
4840
        ret
3783
.mask_done:
4841
.mask_done:
3784
        cmp     edi, edx
4842
        cmp     edi, edx
3785
        jnz     .done_fail
4843
        jnz     .done_fail
3786
.done_succ:
4844
.done_succ:
3787
        clc
4845
        clc
3788
        popa
4846
        popa
3789
        ret
4847
        ret
3790
.quest:
4848
.quest:
3791
        dec     edi
4849
        dec     edi
3792
        cmp     edi, edx
4850
        cmp     edi, edx
3793
        jb      .done_fail
4851
        jb      .done_fail
3794
        jmp     .mask_symbol
4852
        jmp     .mask_symbol
3795
.list:
4853
.list:
3796
        dec     edi
4854
        dec     edi
3797
        cmp     edi, edx
4855
        cmp     edi, edx
3798
        jb      .done_fail
4856
        jb      .done_fail
3799
.list_check:
4857
.list_check:
3800
        dec     esi
4858
        dec     esi
3801
        cmp     esi, ecx
4859
        cmp     esi, ecx
3802
        jbe     .done_fail
4860
        jbe     .done_fail
3803
        mov     al, [esi]
4861
        mov     al, [esi]
3804
        cmp     al, '['
4862
        cmp     al, '['
3805
        jz      .done_fail
4863
        jz      .done_fail
3806
        cmp     byte [esi-1], '-'
4864
        cmp     byte [esi-1], '-'
3807
        jz      .range
4865
        jz      .range
3808
        call    match_symbol
4866
        call    match_symbol
3809
        jnz     .list_check
4867
        jnz     .list_check
3810
.listok:
4868
.listok:
3811
@@:
4869
@@:
3812
        dec     esi
4870
        dec     esi
3813
        cmp     esi, ecx
4871
        cmp     esi, ecx
3814
        jb      .done_fail
4872
        jb      .done_fail
3815
        cmp     byte [esi], '['
4873
        cmp     byte [esi], '['
3816
        jnz     @b
4874
        jnz     @b
3817
        jmp     .mask_symbol
4875
        jmp     .mask_symbol
3818
.range:
4876
.range:
3819
        call    match_symbol
4877
        call    match_symbol
3820
        jb      @f
4878
        jb      @f
3821
        mov     al, [esi-2]
4879
        mov     al, [esi-2]
3822
        call    match_symbol
4880
        call    match_symbol
3823
        jbe     .listok
4881
        jbe     .listok
3824
@@:
4882
@@:
3825
        dec     esi
4883
        dec     esi
3826
        dec     esi
4884
        dec     esi
3827
        jmp     .list_check
4885
        jmp     .list_check
3828
.asterisk:
4886
.asterisk:
3829
        cmp     esi, ecx
4887
        cmp     esi, ecx
3830
        jz      .done_succ
4888
        jz      .done_succ
3831
        cmp     byte [esi-1], '?'
4889
        cmp     byte [esi-1], '?'
3832
        jnz     @f
4890
        jnz     @f
3833
        cmp     edi, edx
4891
        cmp     edi, edx
3834
        jz      .done_fail
4892
        jz      .done_fail
3835
        dec     esi
4893
        dec     esi
3836
        jmp     .asterisk
4894
        jmp     .asterisk
3837
@@:
4895
@@:
3838
        cmp     byte [esi-1], ']'
4896
        cmp     byte [esi-1], ']'
3839
        jz      .asterisk_common
4897
        jz      .asterisk_common
3840
; the mask is ...*...
4898
; the mask is ...*...
3841
.asterisk_normal:
4899
.asterisk_normal:
3842
        mov     al, [esi-1]
4900
        mov     al, [esi-1]
3843
@@:
4901
@@:
3844
        cmp     edi, edx
4902
        cmp     edi, edx
3845
        jz      .done_fail
4903
        jz      .done_fail
3846
        call    match_symbol
4904
        call    match_symbol
3847
        jz      @f
4905
        jz      @f
3848
        dec     edi
4906
        dec     edi
3849
        jmp     @b
4907
        jmp     @b
3850
@@:
4908
@@:
3851
        dec     edi
4909
        dec     edi
3852
        dec     esi
4910
        dec     esi
3853
        call    match_single_mask_rev2
4911
        call    match_single_mask_rev2
3854
        jnc     .done_succ
4912
        jnc     .done_succ
3855
        inc     esi
4913
        inc     esi
3856
        jmp     .asterisk_normal
4914
        jmp     .asterisk_normal
3857
.asterisk_common:
4915
.asterisk_common:
3858
        push    edi
4916
        push    edi
3859
@@:
4917
@@:
3860
        call    match_single_mask_rev2
4918
        call    match_single_mask_rev2
3861
        jnc     @f
4919
        jnc     @f
3862
        dec     edi
4920
        dec     edi
3863
        cmp     edi, edx
4921
        cmp     edi, edx
3864
        jae     @b
4922
        jae     @b
3865
        pop     edi
4923
        pop     edi
3866
        jmp     .done_fail
4924
        jmp     .done_fail
3867
@@:
4925
@@:
3868
        pop     edi
4926
        pop     edi
3869
        jmp     .done_succ
4927
        jmp     .done_succ
3870
end if
4928
end if
3871
 
4929
 
3872
tolower:
4930
;tolower:
3873
        cmp     al, 'A'
4931
;        push    ecx
3874
        jb      @f
4932
;        movzx   ecx, al
3875
        cmp     al, 'Z'
4933
;        mov     al, [tolower_table+ecx]
3876
        ja      @f
-
 
3877
        add     al, ' '
4934
;        pop     ecx
3878
@@:     ret
4935
;        ret
3879
 
4936
 
3880
match_symbol:
4937
match_symbol:
3881
; in: al,[edi]=symbols
4938
; in: al,[edi]=symbols
3882
; out: flags as 'cmp al,[edi]'
4939
; out: flags as 'cmp al,[edi]'
3883
        push    eax
4940
        push    eax ecx
3884
        call    tolower
4941
        movzx   ecx, al
3885
        mov     ah, [edi]
4942
        mov     al, [tolower_table+ecx]
3886
        xchg    al, ah
-
 
3887
        call    tolower
4943
        movzx   ecx, byte [edi]
3888
        cmp     ah, al
4944
        cmp     al, [tolower_table+ecx]
3889
        pop     eax
4945
        pop     ecx eax
3890
        ret
4946
        ret
3891
 
4947
 
3892
match_mask_rev_lowercase:
4948
match_mask_rev_lowercase:
3893
; in: esi->name, edx->end of name, edi->mask
4949
; in: esi->name, edx->end of name, edi->mask
3894
; out: CF clear <=> match
4950
; out: CF clear <=> match
3895
        pusha
4951
        pusha
3896
        xchg    esi, edx
4952
        xchg    esi, edx
3897
        xchg    esi, edi
4953
        xchg    esi, edi
3898
.main_cycle:
4954
.main_cycle:
3899
        mov     ecx, esi
4955
        mov     ecx, esi
3900
@@:
4956
@@:
3901
        lodsb
4957
        lodsb
3902
        test    al, al
4958
        test    al, al
3903
        jz      @f
4959
        jz      @f
3904
        cmp     al, ','
4960
        cmp     al, ','
3905
        jz      @f
4961
        jz      @f
-
 
4962
        cmp     al, ';'
-
 
4963
        jz      @f
3906
        cmp     al, '|'
4964
        cmp     al, '|'
3907
        jnz     @b
4965
        jnz     @b
3908
@@:
4966
@@:
3909
        dec     esi
4967
        dec     esi
3910
        mov     [esi], byte 0
4968
        mov     [esi], byte 0
3911
        call    match_single_mask_rev_lowercase
4969
        call    match_single_mask_rev_lowercase
3912
        mov     [esi], al
4970
        mov     [esi], al
3913
        inc     esi
4971
        inc     esi
3914
        jnc     .found
4972
        jnc     .found
3915
        cmp     al, ','
4973
        cmp     al, ','
3916
        jz      .main_cycle
4974
        jz      .main_cycle
-
 
4975
        cmp     al, ';'
-
 
4976
        jz      .main_cycle
3917
.done_fail:
4977
.done_fail:
3918
        stc
4978
        stc
3919
        popa
4979
        popa
3920
        ret
4980
        ret
3921
.found:
4981
.found:
3922
        test    al, al
4982
        test    al, al
3923
        jz      .done_succ
4983
        jz      .done_succ
3924
        cmp     al, '|'
4984
        cmp     al, '|'
3925
        jz      .test_exclude
4985
        jz      .test_exclude
3926
        lodsb
4986
        lodsb
3927
        jmp     .found
4987
        jmp     .found
3928
.done_succ:
4988
.done_succ:
3929
        clc
4989
        clc
3930
        popa
4990
        popa
3931
        ret
4991
        ret
3932
.test_exclude:
4992
.test_exclude:
3933
        mov     ecx, esi
4993
        mov     ecx, esi
3934
@@:
4994
@@:
3935
        lodsb
4995
        lodsb
3936
        test    al, al
4996
        test    al, al
3937
        jz      @f
4997
        jz      @f
3938
        cmp     al, ','
4998
        cmp     al, ','
-
 
4999
        jz      @f
-
 
5000
        cmp     al, ';'
3939
        jnz     @b
5001
        jnz     @b
3940
@@:
5002
@@:
3941
        dec     esi
5003
        dec     esi
3942
        mov     byte [esi], 0
5004
        mov     byte [esi], 0
3943
        call    match_single_mask_rev_lowercase
5005
        call    match_single_mask_rev_lowercase
3944
        mov     [esi], al
5006
        mov     [esi], al
3945
        inc     esi
5007
        inc     esi
3946
        jnc     .done_fail
5008
        jnc     .done_fail
3947
        test    al, al
5009
        test    al, al
3948
        jz      .done_succ
5010
        jz      .done_succ
3949
        jmp     .test_exclude
5011
        jmp     .test_exclude
3950
 
5012
 
3951
match_single_mask_rev_lowercase:
5013
match_single_mask_rev_lowercase:
3952
; in: esi->end of mask, ecx->start of mask, edi->end of name, edx->start of name
5014
; in: esi->end of mask, ecx->start of mask, edi->end of name, edx->start of name
3953
; out: CF clear <=> match
5015
; out: CF clear <=> match
3954
        push    esi edi eax
5016
        push    esi edi eax
3955
.mask_symbol:
5017
.mask_symbol:
3956
        dec     esi
5018
        dec     esi
3957
        cmp     esi, ecx
5019
        cmp     esi, ecx
3958
        jb      .mask_done
5020
        jb      .mask_done
3959
        mov     al, [esi]
5021
        mov     al, [esi]
3960
        cmp     al, '*'
5022
        cmp     al, '*'
3961
        jz      .asterisk
5023
        jz      .asterisk
3962
        cmp     al, '?'
5024
        cmp     al, '?'
3963
        jz      .quest
5025
        jz      .quest
3964
        cmp     al, ']'
5026
        cmp     al, ']'
3965
        jz      .list
5027
        jz      .list
3966
        dec     edi
5028
        dec     edi
3967
        cmp     edi, edx
5029
        cmp     edi, edx
3968
        jb      .done_fail
5030
        jb      .done_fail
3969
        cmp     al, [edi]
5031
        cmp     al, [edi]
3970
        jz      .mask_symbol
5032
        jz      .mask_symbol
3971
.done_fail:
5033
.done_fail:
3972
        stc
5034
        stc
3973
        pop     eax edi esi
5035
        pop     eax edi esi
3974
        ret
5036
        ret
3975
.mask_done:
5037
.mask_done:
3976
        cmp     edi, edx
5038
        cmp     edi, edx
3977
        jnz     .done_fail
5039
        jnz     .done_fail
3978
.done_succ:
5040
.done_succ:
3979
        clc
5041
        clc
3980
        pop     eax edi esi
5042
        pop     eax edi esi
3981
        ret
5043
        ret
3982
.quest:
5044
.quest:
3983
        dec     edi
5045
        dec     edi
3984
        cmp     edi, edx
5046
        cmp     edi, edx
3985
        jb      .done_fail
5047
        jb      .done_fail
3986
        jmp     .mask_symbol
5048
        jmp     .mask_symbol
3987
.list:
5049
.list:
3988
        dec     edi
5050
        dec     edi
3989
        cmp     edi, edx
5051
        cmp     edi, edx
3990
        jb      .done_fail
5052
        jb      .done_fail
3991
.list_check:
5053
.list_check:
3992
        dec     esi
5054
        dec     esi
3993
        cmp     esi, ecx
5055
        cmp     esi, ecx
3994
        jbe     .done_fail
5056
        jbe     .done_fail
3995
        mov     al, [esi]
5057
        mov     al, [esi]
3996
        cmp     al, '['
5058
        cmp     al, '['
3997
        jz      .done_fail
5059
        jz      .done_fail
3998
        cmp     byte [esi-1], '-'
5060
        cmp     byte [esi-1], '-'
3999
        jz      .range
5061
        jz      .range
4000
        cmp     al, [edi]
5062
        cmp     al, [edi]
4001
        jnz     .list_check
5063
        jnz     .list_check
4002
.listok:
5064
.listok:
4003
@@:
5065
@@:
4004
        dec     esi
5066
        dec     esi
4005
        cmp     esi, ecx
5067
        cmp     esi, ecx
4006
        jb      .done_fail
5068
        jb      .done_fail
4007
        cmp     byte [esi], '['
5069
        cmp     byte [esi], '['
4008
        jnz     @b
5070
        jnz     @b
4009
        jmp     .mask_symbol
5071
        jmp     .mask_symbol
4010
.range:
5072
.range:
4011
        cmp     al, [edi]
5073
        cmp     al, [edi]
4012
        jb      @f
5074
        jb      @f
4013
        mov     al, [esi-2]
5075
        mov     al, [esi-2]
4014
        cmp     al, [edi]
5076
        cmp     al, [edi]
4015
        jbe     .listok
5077
        jbe     .listok
4016
@@:
5078
@@:
4017
        dec     esi
5079
        dec     esi
4018
        dec     esi
5080
        dec     esi
4019
        jmp     .list_check
5081
        jmp     .list_check
4020
.asterisk:
5082
.asterisk:
4021
        cmp     esi, ecx
5083
        cmp     esi, ecx
4022
        jz      .done_succ
5084
        jz      .done_succ
4023
        cmp     byte [esi-1], '?'
5085
        cmp     byte [esi-1], '?'
4024
        jnz     @f
5086
        jnz     @f
4025
        cmp     edi, edx
5087
        cmp     edi, edx
4026
        jz      .done_fail
5088
        jz      .done_fail
4027
        dec     esi
5089
        dec     esi
4028
        jmp     .asterisk
5090
        jmp     .asterisk
4029
@@:
5091
@@:
4030
        cmp     byte [esi-1], ']'
5092
        cmp     byte [esi-1], ']'
4031
        jz      .asterisk_common
5093
        jz      .asterisk_common
4032
; the mask is ...*...
5094
; the mask is ...*...
4033
.asterisk_normal:
5095
.asterisk_normal:
4034
        mov     al, [esi-1]
5096
        mov     al, [esi-1]
4035
@@:
5097
@@:
4036
        cmp     edi, edx
5098
        cmp     edi, edx
4037
        jz      .done_fail
5099
        jz      .done_fail
4038
        cmp     al, [edi]
5100
        cmp     al, [edi]
4039
        jz      @f
5101
        jz      @f
4040
        dec     edi
5102
        dec     edi
4041
        jmp     @b
5103
        jmp     @b
4042
@@:
5104
@@:
4043
        dec     edi
5105
        dec     edi
4044
        dec     esi
5106
        dec     esi
4045
        call    match_single_mask_rev_lowercase
5107
        call    match_single_mask_rev_lowercase
4046
        jnc     .done_succ
5108
        jnc     .done_succ
4047
        inc     esi
5109
        inc     esi
4048
        jmp     .asterisk_normal
5110
        jmp     .asterisk_normal
4049
.asterisk_common:
5111
.asterisk_common:
4050
        push    edi
5112
        push    edi
4051
@@:
5113
@@:
4052
        call    match_single_mask_rev_lowercase
5114
        call    match_single_mask_rev_lowercase
4053
        jnc     @f
5115
        jnc     @f
4054
        dec     edi
5116
        dec     edi
4055
        cmp     edi, edx
5117
        cmp     edi, edx
4056
        jae     @b
5118
        jae     @b
4057
        pop     edi
5119
        pop     edi
4058
        jmp     .done_fail
5120
        jmp     .done_fail
4059
@@:
5121
@@:
4060
        pop     edi
5122
        pop     edi
4061
        jmp     .done_succ
5123
        jmp     .done_succ
4062
 
5124
 
4063
find_extension:
5125
find_extension:
4064
        lea     esi, [ecx+40]
5126
        lea     esi, [ecx+40]
4065
        push    esi
5127
        push    esi
4066
@@:
5128
@@:
4067
        lodsb
5129
        lodsb
4068
        test    al, al
5130
        test    al, al
4069
        jnz     @b
5131
        jnz     @b
4070
@@:
5132
@@:
4071
        dec     esi
5133
        dec     esi
4072
        cmp     byte [esi], '.'
5134
        cmp     byte [esi], '.'
4073
        jz      .found_ext
5135
        jz      .found_ext
4074
        cmp     esi, [esp]
5136
        cmp     esi, [esp]
4075
        ja      @b
5137
        ja      @b
4076
; empty extension
5138
; empty extension
4077
        pop     esi
5139
        pop     esi
4078
        stc
5140
        stc
4079
        ret
5141
        ret
4080
.found_ext:
5142
.found_ext:
4081
        inc     esi
5143
        inc     esi
4082
        mov     edi, associations
5144
        mov     edi, [associations]
4083
@@:
5145
.find_loop:
4084
        push    esi edi
5146
        push    esi edi
4085
        mov     edi, [edi]
-
 
4086
        call    strcmpi
5147
        call    strcmpi
4087
        pop     edi esi
5148
        pop     edi esi
4088
        jz      @f
5149
        pushf
4089
        add     edi, 12
-
 
4090
        cmp     edi, associations_end
-
 
4091
        jb      @b
5150
@@:
4092
; unknown extension
-
 
4093
        inc     edi
5151
        inc     edi
-
 
5152
        cmp     byte [edi-1], 0
-
 
5153
        jnz     @b
-
 
5154
        popf
-
 
5155
        jz      .found
4094
@@:
5156
@@:
-
 
5157
        inc     edi
-
 
5158
        cmp     byte [edi-1], 0
-
 
5159
        jnz     @b
-
 
5160
        cmp     byte [edi], 0
-
 
5161
        jnz     .find_loop
-
 
5162
; unknown extension
-
 
5163
        stc
-
 
5164
.found:
4095
        pop     esi
5165
        pop     esi
4096
        ret
5166
        ret
4097
 
5167
 
4098
header  db      'Kolibri Far 0.21',0
5168
header  db      'Kolibri Far 0.32',0
4099
 
5169
 
4100
nomem_draw      db      'No memory for redraw.',0
5170
nomem_draw      db      'No memory for redraw.',0
4101
.size = $ - nomem_draw
5171
.size = $ - nomem_draw
4102
 
5172
 
4103
def_left_dir    db      '/rd/1',0
5173
def_left_dir    db      '/rd/1',0
4104
def_right_dir   db      '/hd0/1',0
5174
def_right_dir   db      '/hd0/1',0
4105
 
5175
 
4106
bSilentFolderMode db    1
5176
bSilentFolderMode db    1
4107
 
5177
 
4108
if lang eq ru
5178
if lang eq ru
4109
aFolder         db      ' ¯ª '
5179
aFolder         db      ' ¯ª '
4110
.size = $-aFolder
5180
.size = $-aFolder
4111
aUp             db      '‚¢¥àå'
5181
aUp             db      '‚¢¥àå'
4112
.size = $-aUp
5182
.size = $-aUp
4113
aDrive          db      '„¨áª',0
5183
aDrive          db      '„¨áª',0
4114
aScreens        db      'ªà ­ë',0
5184
aScreens        db      'ªà ­ë',0
4115
else
5185
else
4116
aFolder         db      'Folder'
5186
aFolder         db      'Folder'
4117
.size = $-aFolder
5187
.size = $-aFolder
4118
aUp             db      'Up'
5188
aUp             db      'Up'
4119
.size = $-aUp
5189
.size = $-aUp
4120
aDrive          db      'Drive',0
5190
aDrive          db      'Drive',0
4121
aScreens        db      'Screens',0
5191
aScreens        db      'Screens',0
4122
end if
5192
end if
-
 
5193
 
4123
 
5194
align 4
4124
_10d dd 10
5195
_10d dd 10
-
 
5196
_100d dd 100
4125
_100d dd 100
5197
muldiv10 dd 429496729
4126
_10 db 10
5198
_10 db 10
4127
_100 db 100
5199
_100 db 100
4128
 
5200
 
4129
fpu_cw  dw      000011100111111b
5201
fpu_cw  dw      000011100111111b
4130
 
5202
 
4131
keybar_panels:
5203
keybar_panels:
4132
if lang eq ru
5204
if lang eq ru
4133
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
5205
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
4134
        db      '®¬®éì'
5206
        db      '®¬®éì'
4135
        db      '®«ì§Œ'
5207
        db      '®«ì§Œ'
4136
        db      'à®á¬ '
5208
        db      'à®á¬ '
4137
        db      '¥¤ ªâ'
5209
        db      '¥¤ ªâ'
4138
        db      'Š®¯¨à '
5210
        db      'Š®¯¨à '
4139
        db      '¥à¥­ '
5211
        db      '¥à¥­ '
4140
        db      ' ¯ª  '
5212
        db      ' ¯ª  '
4141
        db      '“¤ «¥­'
5213
        db      '“¤ «¥­'
4142
        db      'Š®­äŒ­'
5214
        db      'Š®­äŒ­'
4143
        db      '‚ë室 '
5215
        db      '‚ë室 '
4144
        db      'Œ®¤ã«¨'
5216
        db      'Œ®¤ã«¨'
4145
        db      'ªà ­ë'
5217
        db      'ªà ­ë'
4146
; Shift
5218
; Shift
4147
        db      '„®¡ ¢«'
5219
        db      '„®¡ ¢«'
4148
        db      ' á¯ ª'
5220
        db      ' á¯ ª'
4149
        db      '€à劮¬'
5221
        db      '€à劮¬'
4150
        db      '¥¤ ª.'
5222
        db      '¥¤ ª.'
4151
        db      'Š®¯¨à '
5223
        db      'Š®¯¨à '
4152
        db      '¥à¥¨¬'
5224
        db      '¥à¥¨¬'
4153
        db      '      '
5225
        db      '      '
4154
        db      '“¤ «¥­'
5226
        db      '“¤ «¥­'
4155
        db      '‘®åà ­'
5227
        db      '‘®åà ­'
4156
        db      '®á«¤­'
5228
        db      '®á«¤­'
4157
        db      'ƒà㯯ë'
5229
        db      'ƒà㯯ë'
4158
        db      '‚ë¡à ­'
5230
        db      '‚ë¡à ­'
4159
; Ctrl
5231
; Ctrl
4160
        db      '‹¥¢ ï '
5232
        db      '‹¥¢ ï '
4161
        db      'à ¢ ï'
5233
        db      'à ¢ ï'
4162
        db      'ˆ¬ï   '
5234
        db      'ˆ¬ï   '
4163
        db      ' áè¨à'
5235
        db      ' áè¨à'
4164
        db      'Œ®¤¨ä '
5236
        db      'Œ®¤¨ä '
4165
        db      ' §¬¥à'
5237
        db      ' §¬¥à'
4166
        db      '¥á®àâ'
5238
        db      '¥á®àâ'
4167
        db      '‘®§¤ ­'
5239
        db      '‘®§¤ ­'
4168
        db      '„®áâã¯'
5240
        db      '„®áâã¯'
4169
        db      'Ž¯¨á ­'
5241
        db      'Ž¯¨á ­'
4170
        db      '‚« ¤¥«'
5242
        db      '‚« ¤¥«'
4171
        db      '‘®àâ  '
5243
        db      '‘®àâ  '
4172
; Ctrl+Shift
5244
; Ctrl+Shift
4173
        db      '      '
5245
        db      '      '
4174
        db      '      '
5246
        db      '      '
4175
        db      'à®á¬ '
5247
        db      'à®á¬ '
4176
        db      '¥¤ ªâ'
5248
        db      '¥¤ ªâ'
4177
        db      '      '
5249
        db      '      '
4178
        db      '      '
5250
        db      '      '
4179
        db      '      '
5251
        db      '      '
4180
        db      '      '
5252
        db      '      '
4181
        db      '      '
5253
        db      '      '
4182
        db      '      '
5254
        db      '      '
4183
        db      '      '
5255
        db      '      '
4184
        db      '      '
5256
        db      '      '
4185
; Alt
5257
; Alt
4186
        db      '‹¥¢ ï '
5258
        db      '‹¥¢ ï '
4187
        db      'à ¢ ï'
5259
        db      'à ¢ ï'
4188
        db      '‘¬®âà.'
5260
        db      '‘¬®âà.'
4189
        db      '¥¤ ª.'
5261
        db      '¥¤ ª.'
4190
        db      '¥ç âì'
5262
        db      '¥ç âì'
4191
        db      '‘¢ï§ì '
5263
        db      '‘¢ï§ì '
4192
        db      'ˆáª âì'
5264
        db      'ˆáª âì'
4193
        db      'ˆáâ®à '
5265
        db      'ˆáâ®à '
4194
        db      '‚¨¤¥® '
5266
        db      '‚¨¤¥® '
4195
        db      '„¥à¥¢®'
5267
        db      '„¥à¥¢®'
4196
        db      'ˆáâà '
5268
        db      'ˆáâà '
4197
        db      'ˆá⏠¯'
5269
        db      'ˆá⏠¯'
4198
; Alt+Shift
5270
; Alt+Shift
4199
        db      '      '
5271
        db      '      '
4200
        db      '      '
5272
        db      '      '
4201
        db      '      '
5273
        db      '      '
4202
        db      '      '
5274
        db      '      '
4203
        db      '      '
5275
        db      '      '
4204
        db      '      '
5276
        db      '      '
4205
        db      '      '
5277
        db      '      '
4206
        db      '      '
5278
        db      '      '
4207
        db      'Š®­ä«'
5279
        db      'Š®­ä«'
4208
        db      '      '
5280
        db      '      '
4209
        db      '      '
5281
        db      '      '
4210
        db      '      '
5282
        db      '      '
4211
; Alt+Ctrl
5283
; Alt+Ctrl
4212
times 12 db     '      '
5284
times 12 db     '      '
4213
; Alt+Ctrl+Shift
5285
; Alt+Ctrl+Shift
4214
times 12 db     '      '
5286
times 12 db     '      '
4215
else
5287
else
4216
; No modificators
5288
; No modificators
4217
        db      'Help  '
5289
        db      'Help  '
4218
        db      'UserMn'
5290
        db      'UserMn'
4219
        db      'View  '
5291
        db      'View  '
4220
        db      'Edit  '
5292
        db      'Edit  '
4221
        db      'Copy  '
5293
        db      'Copy  '
4222
        db      'RenMov'
5294
        db      'RenMov'
4223
        db      'MkFold'
5295
        db      'MkFold'
4224
        db      'Delete'
5296
        db      'Delete'
4225
        db      'ConfMn'
5297
        db      'ConfMn'
4226
        db      'Quit  '
5298
        db      'Quit  '
4227
        db      'Plugin'
5299
        db      'Plugin'
4228
        db      'Screen'
5300
        db      'Screen'
4229
; Shift
5301
; Shift
4230
        db      'Add   '
5302
        db      'Add   '
4231
        db      'Extrct'
5303
        db      'Extrct'
4232
        db      'ArcCmd'
5304
        db      'ArcCmd'
4233
        db      'Edit..'
5305
        db      'Edit..'
4234
        db      'Copy  '
5306
        db      'Copy  '
4235
        db      'Rename'
5307
        db      'Rename'
4236
        db      '      '
5308
        db      '      '
4237
        db      'Delete'
5309
        db      'Delete'
4238
        db      'Save  '
5310
        db      'Save  '
4239
        db      'Last  '
5311
        db      'Last  '
4240
        db      'Group '
5312
        db      'Group '
4241
        db      'SelUp '
5313
        db      'SelUp '
4242
; Ctrl
5314
; Ctrl
4243
        db      'Left  '
5315
        db      'Left  '
4244
        db      'Right '
5316
        db      'Right '
4245
        db      'Name  '
5317
        db      'Name  '
4246
        db      'Extens'
5318
        db      'Extens'
4247
        db      'Modifn'
5319
        db      'Modifn'
4248
        db      'Size  '
5320
        db      'Size  '
4249
        db      'Unsort'
5321
        db      'Unsort'
4250
        db      'Creatn'
5322
        db      'Creatn'
4251
        db      'Access'
5323
        db      'Access'
4252
        db      'Descr '
5324
        db      'Descr '
4253
        db      'Owner '
5325
        db      'Owner '
4254
        db      'Sort  '
5326
        db      'Sort  '
4255
; Ctrl+Shift
5327
; Ctrl+Shift
4256
        db      '      '
5328
        db      '      '
4257
        db      '      '
5329
        db      '      '
4258
        db      'View  '
5330
        db      'View  '
4259
        db      'Edit  '
5331
        db      'Edit  '
4260
        db      '      '
5332
        db      '      '
4261
        db      '      '
5333
        db      '      '
4262
        db      '      '
5334
        db      '      '
4263
        db      '      '
5335
        db      '      '
4264
        db      '      '
5336
        db      '      '
4265
        db      '      '
5337
        db      '      '
4266
        db      '      '
5338
        db      '      '
4267
        db      '      '
5339
        db      '      '
4268
; Alt
5340
; Alt
4269
        db      'Left  '
5341
        db      'Left  '
4270
        db      'Right '
5342
        db      'Right '
4271
        db      'View..'
5343
        db      'View..'
4272
        db      'Edit..'
5344
        db      'Edit..'
4273
        db      'Print '
5345
        db      'Print '
4274
        db      'MkLink'
5346
        db      'MkLink'
4275
        db      'Find  '
5347
        db      'Find  '
4276
        db      'Histry'
5348
        db      'Histry'
4277
        db      'Video '
5349
        db      'Video '
4278
        db      'Tree  '
5350
        db      'Tree  '
4279
        db      'ViewHs'
5351
        db      'ViewHs'
4280
        db      'FoldHs'
5352
        db      'FoldHs'
4281
; Alt+Shift
5353
; Alt+Shift
4282
        db      '      '
5354
        db      '      '
4283
        db      '      '
5355
        db      '      '
4284
        db      '      '
5356
        db      '      '
4285
        db      '      '
5357
        db      '      '
4286
        db      '      '
5358
        db      '      '
4287
        db      '      '
5359
        db      '      '
4288
        db      '      '
5360
        db      '      '
4289
        db      '      '
5361
        db      '      '
4290
        db      'ConfPl'
5362
        db      'ConfPl'
4291
        db      '      '
5363
        db      '      '
4292
        db      '      '
5364
        db      '      '
4293
        db      '      '
5365
        db      '      '
4294
; Alt+Ctrl
5366
; Alt+Ctrl
4295
times 12 db     '      '
5367
times 12 db     '      '
4296
; Alt+Ctrl+Shift
5368
; Alt+Ctrl+Shift
4297
times 12 db     '      '
5369
times 12 db     '      '
4298
end if
5370
end if
4299
 
5371
 
4300
keybar_viewer:
5372
keybar_viewer:
4301
if lang eq ru
5373
if lang eq ru
4302
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
5374
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
4303
        db      '®¬®éì'
5375
        db      '®¬®éì'
4304
        db      ' §¢¥à'
5376
        db      ' §¢¥à'
4305
        db      '‚ë室 '
5377
        db      '‚ë室 '
4306
        db      'Š®¤   '
5378
        db      'Š®¤   '
4307
        db      '      '
5379
        db      '      '
4308
        db      '¥¤ ªâ'
5380
        db      '¥¤ ªâ'
4309
        db      '®¨áª '
5381
        db      '®¨áª '
4310
keybar_cp:
5382
keybar_cp:
4311
        db      'cp1251'
5383
        db      'cp1251'
4312
        db      '      '
5384
        db      '      '
4313
        db      '‚ë室 '
5385
        db      '‚ë室 '
4314
        db      'Œ®¤ã«¨'
5386
        db      'Œ®¤ã«¨'
4315
        db      'ªà ­ë'
5387
        db      'ªà ­ë'
4316
; Shift
5388
; Shift
4317
        db      '      '
5389
        db      '      '
4318
        db      '‘«®¢  '
5390
        db      '‘«®¢  '
4319
        db      '      '
5391
        db      '      '
4320
        db      '      '
5392
        db      '      '
4321
        db      '      '
5393
        db      '      '
4322
        db      '      '
5394
        db      '      '
4323
        db      '„ «ìè¥'
5395
        db      '„ «ìè¥'
4324
        db      '’ ¡«¨æ'
5396
        db      '’ ¡«¨æ'
4325
        db      '      '
5397
        db      '      '
4326
        db      '      '
5398
        db      '      '
4327
        db      '      '
5399
        db      '      '
4328
        db      '      '
5400
        db      '      '
4329
; Ctrl
5401
; Ctrl
4330
        db      '      '
5402
        db      '      '
4331
        db      '      '
5403
        db      '      '
4332
        db      '      '
5404
        db      '      '
4333
        db      '      '
5405
        db      '      '
4334
        db      '      '
5406
        db      '      '
4335
        db      '      '
5407
        db      '      '
4336
        db      '      '
5408
        db      '      '
4337
        db      '      '
5409
        db      '      '
4338
        db      '      '
5410
        db      '      '
4339
        db      '®§¨æ '
5411
        db      '®§¨æ '
4340
        db      '      '
5412
        db      '      '
4341
        db      '      '
5413
        db      '      '
4342
; Ctrl+Shift
5414
; Ctrl+Shift
4343
        db      '      '
5415
        db      '      '
4344
        db      '      '
5416
        db      '      '
4345
        db      '      '
5417
        db      '      '
4346
        db      '      '
5418
        db      '      '
4347
        db      '      '
5419
        db      '      '
4348
        db      '      '
5420
        db      '      '
4349
        db      '      '
5421
        db      '      '
4350
        db      '      '
5422
        db      '      '
4351
        db      '      '
5423
        db      '      '
4352
        db      '      '
5424
        db      '      '
4353
        db      '      '
5425
        db      '      '
4354
        db      '      '
5426
        db      '      '
4355
; Alt
5427
; Alt
4356
        db      '      '
5428
        db      '      '
4357
        db      '      '
5429
        db      '      '
4358
        db      '      '
5430
        db      '      '
4359
        db      '      '
5431
        db      '      '
4360
        db      '¥ç âì'
5432
        db      '¥ç âì'
4361
        db      '      '
5433
        db      '      '
4362
        db      ' § ¤ '
5434
        db      ' § ¤ '
4363
        db      '¥à¥©â'
5435
        db      '¥à¥©â'
4364
        db      '‚¨¤¥® '
5436
        db      '‚¨¤¥® '
4365
        db      '      '
5437
        db      '      '
4366
        db      'ˆáâà '
5438
        db      'ˆáâà '
4367
        db      '      '
5439
        db      '      '
4368
; Alt+Shift
5440
; Alt+Shift
4369
        db      '      '
5441
        db      '      '
4370
        db      '      '
5442
        db      '      '
4371
        db      '      '
5443
        db      '      '
4372
        db      '      '
5444
        db      '      '
4373
        db      '      '
5445
        db      '      '
4374
        db      '      '
5446
        db      '      '
4375
        db      '      '
5447
        db      '      '
4376
        db      '      '
5448
        db      '      '
4377
        db      'Š®­ä¨£'
5449
        db      'Š®­ä¨£'
4378
        db      '      '
5450
        db      '      '
4379
        db      '      '
5451
        db      '      '
4380
        db      '      '
5452
        db      '      '
4381
; Alt+Ctrl
5453
; Alt+Ctrl
4382
times 12 db     '      '
5454
times 12 db     '      '
4383
; Alt+Ctrl+Shift
5455
; Alt+Ctrl+Shift
4384
times 12 db     '      '
5456
times 12 db     '      '
4385
else
5457
else
4386
; No modificators
5458
; No modificators
4387
        db      'Help  '
5459
        db      'Help  '
4388
        db      'Unwrap'
5460
        db      'Unwrap'
4389
        db      'Quit  '
5461
        db      'Quit  '
4390
        db      'Hex   '
5462
        db      'Hex   '
4391
        db      '      '
5463
        db      '      '
4392
        db      'Edit  '
5464
        db      'Edit  '
4393
        db      'Search'
5465
        db      'Search'
4394
keybar_cp:
5466
keybar_cp:
4395
        db      'cp1251'
5467
        db      'cp1251'
4396
        db      '      '
5468
        db      '      '
4397
        db      'Quit  '
5469
        db      'Quit  '
4398
        db      'Plugin'
5470
        db      'Plugin'
4399
        db      'Screen'
5471
        db      'Screen'
4400
; Shift
5472
; Shift
4401
        db      '      '
5473
        db      '      '
4402
        db      'WWrap '
5474
        db      'WWrap '
4403
        db      '      '
5475
        db      '      '
4404
        db      '      '
5476
        db      '      '
4405
        db      '      '
5477
        db      '      '
4406
        db      '      '
5478
        db      '      '
4407
        db      'Next  '
5479
        db      'Next  '
4408
        db      'Table '
5480
        db      'Table '
4409
        db      '      '
5481
        db      '      '
4410
        db      '      '
5482
        db      '      '
4411
        db      '      '
5483
        db      '      '
4412
        db      '      '
5484
        db      '      '
4413
; Ctrl
5485
; Ctrl
4414
        db      '      '
5486
        db      '      '
4415
        db      '      '
5487
        db      '      '
4416
        db      '      '
5488
        db      '      '
4417
        db      '      '
5489
        db      '      '
4418
        db      '      '
5490
        db      '      '
4419
        db      '      '
5491
        db      '      '
4420
        db      '      '
5492
        db      '      '
4421
        db      '      '
5493
        db      '      '
4422
        db      '      '
5494
        db      '      '
4423
        db      'GoFile'
5495
        db      'GoFile'
4424
        db      '      '
5496
        db      '      '
4425
        db      '      '
5497
        db      '      '
4426
; Ctrl+Shift
5498
; Ctrl+Shift
4427
        db      '      '
5499
        db      '      '
4428
        db      '      '
5500
        db      '      '
4429
        db      '      '
5501
        db      '      '
4430
        db      '      '
5502
        db      '      '
4431
        db      '      '
5503
        db      '      '
4432
        db      '      '
5504
        db      '      '
4433
        db      '      '
5505
        db      '      '
4434
        db      '      '
5506
        db      '      '
4435
        db      '      '
5507
        db      '      '
4436
        db      '      '
5508
        db      '      '
4437
        db      '      '
5509
        db      '      '
4438
        db      '      '
5510
        db      '      '
4439
; Alt
5511
; Alt
4440
        db      '      '
5512
        db      '      '
4441
        db      '      '
5513
        db      '      '
4442
        db      '      '
5514
        db      '      '
4443
        db      '      '
5515
        db      '      '
4444
        db      'Print '
5516
        db      'Print '
4445
        db      '      '
5517
        db      '      '
4446
        db      'Prev  '
5518
        db      'Prev  '
4447
        db      'Goto  '
5519
        db      'Goto  '
4448
        db      'Video '
5520
        db      'Video '
4449
        db      '      '
5521
        db      '      '
4450
        db      'ViewHs'
5522
        db      'ViewHs'
4451
        db      '      '
5523
        db      '      '
4452
; Alt+Shift
5524
; Alt+Shift
4453
        db      '      '
5525
        db      '      '
4454
        db      '      '
5526
        db      '      '
4455
        db      '      '
5527
        db      '      '
4456
        db      '      '
5528
        db      '      '
4457
        db      '      '
5529
        db      '      '
4458
        db      '      '
5530
        db      '      '
4459
        db      '      '
5531
        db      '      '
4460
        db      '      '
5532
        db      '      '
4461
        db      'Config'
5533
        db      'Config'
4462
        db      '      '
5534
        db      '      '
4463
        db      '      '
5535
        db      '      '
4464
        db      '      '
5536
        db      '      '
4465
; Alt+Ctrl
5537
; Alt+Ctrl
4466
times 12 db     '      '
5538
times 12 db     '      '
4467
; Alt+Ctrl+Shift
5539
; Alt+Ctrl+Shift
4468
times 12 db     '      '
5540
times 12 db     '      '
4469
end if
5541
end if
4470
 
5542
 
4471
        align   4
5543
        align   4
4472
cur_width       dd      80
5544
cur_width       dd      80
4473
cur_height      dd      25
5545
cur_height      dd      25
4474
saved_width     dd      -1
5546
saved_width     dd      -1
4475
saved_height    dd      -1
5547
saved_height    dd      -1
4476
fill_width      dd      0
5548
fill_width      dd      0
4477
fill_height     dd      0
5549
fill_height     dd      0
4478
max_width = 256
5550
max_width = 256
4479
max_height = 256
5551
max_height = 256
4480
console_data_ptr dd     0
5552
console_data_ptr dd     0
4481
 
5553
 
4482
cursor_x        dd      -1
5554
cursor_x        dd      -1
4483
cursor_y        dd      -1
5555
cursor_y        dd      -1
4484
old_cursor_x    dd      -1
5556
cur_cursor_pos  dd      -1
4485
old_cursor_y    dd      -1
5557
old_cursor_pos  dd      -1
4486
 
5558
 
4487
active_panel    dd      panel1_data
5559
active_panel    dd      panel1_data
-
 
5560
 
-
 
5561
associations    dd      0
4488
 
5562
 
4489
console_colors  dd      0x000000, 0x000080, 0x008000, 0x008080
5563
console_colors  dd      0x000000, 0x000080, 0x008000, 0x008080
4490
                dd      0x800000, 0x800080, 0x808000, 0xC0C0C0
5564
                dd      0x800000, 0x800080, 0x808000, 0xC0C0C0
4491
                dd      0x808080, 0x0000FF, 0x00FF00, 0x00FFFF
5565
                dd      0x808080, 0x0000FF, 0x00FF00, 0x00FFFF
4492
                dd      0xFF0000, 0xFF00FF, 0xFFFF00, 0xFFFFFF
5566
                dd      0xFF0000, 0xFF00FF, 0xFFFF00, 0xFFFFFF
4493
 
5567
 
4494
compare_fns     dd      compare_name
5568
compare_fns     dd      compare_name
4495
                dd      compare_name_rev
5569
                dd      compare_name_rev
4496
                dd      compare_ext
5570
                dd      compare_ext
4497
                dd      compare_ext_rev
5571
                dd      compare_ext_rev
4498
                dd      compare_modified
5572
                dd      compare_modified
4499
                dd      compare_modified_rev
5573
                dd      compare_modified_rev
4500
                dd      compare_size
5574
                dd      compare_size
4501
                dd      compare_size_rev
5575
                dd      compare_size_rev
4502
                dd      compare_unordered
5576
                dd      compare_unordered
4503
                dd      compare_unordered_rev
5577
                dd      compare_unordered_rev
4504
                dd      compare_created
5578
                dd      compare_created
4505
                dd      compare_created_rev
5579
                dd      compare_created_rev
4506
                dd      compare_accessed
5580
                dd      compare_accessed
4507
                dd      compare_accessed_rev
5581
                dd      compare_accessed_rev
4508
 
5582
 
4509
ctrlkey_tests   dd      ctrlkey_test0
5583
ctrlkey_tests   dd      ctrlkey_test0
4510
                dd      ctrlkey_test1
5584
                dd      ctrlkey_test1
4511
                dd      ctrlkey_test2
5585
                dd      ctrlkey_test2
4512
                dd      ctrlkey_test3
5586
                dd      ctrlkey_test3
4513
                dd      ctrlkey_test4
5587
                dd      ctrlkey_test4
4514
ctrlkey_tests_num = 5
5588
ctrlkey_tests_num = 5
4515
 
5589
 
4516
virtual at 0
5590
virtual at 0
4517
screen_vtable:
5591
screen_vtable:
4518
        .OnRedraw       dd      ?
5592
        .OnRedraw       dd      ?
4519
        .OnKey          dd      ?
5593
        .OnKey          dd      ?
4520
        .keybar         dd      ?
5594
        .keybar         dd      ?
4521
        .getname        dd      ?
5595
        .getname        dd      ?
4522
end virtual
5596
end virtual
4523
 
5597
 
4524
panels_vtable:
5598
panels_vtable:
4525
        dd      panels_OnRedraw
5599
        dd      panels_OnRedraw
4526
        dd      panels_OnKey
5600
        dd      panels_OnKey
4527
        dd      keybar_panels
5601
        dd      keybar_panels
4528
        dd      panels_getname
5602
        dd      panels_getname
4529
 
5603
 
4530
viewer_vtable:
5604
viewer_vtable:
4531
        dd      viewer_OnRedraw
5605
        dd      viewer_OnRedraw
4532
        dd      viewer_OnKey
5606
        dd      viewer_OnKey
4533
        dd      keybar_viewer
5607
        dd      keybar_viewer
4534
        dd      viewer_getname
5608
        dd      viewer_getname
4535
 
5609
 
4536
; additions to this table require changes in tools.inc::get_error_msg
5610
; additions to this table require changes in tools.inc::get_error_msg
4537
errors1:
5611
errors1:
4538
        dd      error0msg
5612
        dd      error0msg
4539
        dd      error1msg
5613
        dd      error1msg
4540
        dd      error2msg
5614
        dd      error2msg
4541
        dd      error3msg
5615
        dd      error3msg
4542
        dd      error4msg
5616
        dd      error4msg
4543
        dd      error5msg
5617
        dd      error5msg
4544
        dd      error6msg
5618
        dd      error6msg
4545
        dd      error7msg
5619
        dd      error7msg
4546
        dd      error8msg
5620
        dd      error8msg
4547
        dd      error9msg
5621
        dd      error9msg
4548
        dd      error10msg
5622
        dd      error10msg
4549
        dd      error11msg
5623
        dd      error11msg
4550
errors2:
5624
errors2:
4551
        dd      error30msg
5625
        dd      error30msg
4552
        dd      error31msg
5626
        dd      error31msg
4553
        dd      error32msg
5627
        dd      error32msg
4554
 
5628
 
4555
encodings:
5629
encodings:
4556
.cp866 = 0
5630
.cp866 = 0
4557
.cp1251 = 1
5631
.cp1251 = 1
-
 
5632
.koi8r = 2
-
 
5633
.unicode = 3
4558
 
5634
 
4559
.names:
5635
.names:
4560
        db      'cp866   '
5636
        db      'cp866   '
4561
        db      'cp1251  '
5637
        db      'cp1251  '
-
 
5638
        db      'koi8-r  '
-
 
5639
        db      'Unicode '
4562
 
5640
 
4563
.tables:
5641
.tables:
4564
; cp866 - trivial map
5642
; cp866 - trivial map
4565
        times 128 db %+127
5643
        times 128 db %+127
4566
; cp1251
5644
; cp1251
4567
        db      0x3F,0x3F,0x27,0x3F,0x22,0x3A,0xC5,0xD8,0x3F,0x25,0x3F,0x3C,0x3F,0x3F,0x3F,0x3F
5645
        db      0x3F,0x3F,0x27,0x3F,0x22,0x3A,0xC5,0xD8,0x3F,0x25,0x3F,0x3C,0x3F,0x3F,0x3F,0x3F
4568
        db      0x3F,0x27,0x27,0x22,0x22,0x07,0x2D,0x2D,0x3F,0x54,0x3F,0x3E,0x3F,0x3F,0x3F,0x3F
5646
        db      0x3F,0x27,0x27,0x22,0x22,0x07,0x2D,0x2D,0x3F,0x54,0x3F,0x3E,0x3F,0x3F,0x3F,0x3F
4569
        db      0xFF,0xF6,0xF7,0x3F,0xFD,0x3F,0xB3,0x15,0xF0,0x63,0xF2,0x3C,0xBF,0x2D,0x52,0xF4
5647
        db      0xFF,0xF6,0xF7,0x3F,0xFD,0x3F,0xB3,0x15,0xF0,0x63,0xF2,0x3C,0xBF,0x2D,0x52,0xF4
4570
        db      0xF8,0x2B,0x49,0x69,0x3F,0xE7,0x14,0xFA,0xF1,0xFC,0xF3,0x3E,0x3F,0x3F,0x3F,0xF5
5648
        db      0xF8,0x2B,0x49,0x69,0x3F,0xE7,0x14,0xFA,0xF1,0xFC,0xF3,0x3E,0x3F,0x3F,0x3F,0xF5
4571
        times 0x30 db %-1+0x80
5649
        times 0x30 db %-1+0x80
4572
        times 0x10 db %-1+0xE0
5650
        times 0x10 db %-1+0xE0
-
 
5651
; koi8-r
-
 
5652
        db      0xC4,0xB3,0xDA,0xBF,0xC0,0xD9,0xC3,0xB4,0xC2,0xC1,0xC5,0xDF,0xDC,0xDB,0xDD,0xDE
-
 
5653
        db      0xB0,0xB1,0xB2,0xF4,0xFE,0xF9,0xFB,0xF7,0xF3,0xF2,0xFF,0xF5,0xF8,0xFD,0xFA,0xF6
-
 
5654
        db      0xCD,0xBA,0xD5,0xF1,0xD6,0xC9,0xB8,0xB7,0xBB,0xD4,0xD3,0xC8,0xBE,0xBD,0xBC,0xC6
-
 
5655
        db      0xC7,0xCC,0xB5,0xF0,0xB6,0xB9,0xD1,0xD2,0xCB,0xCF,0xD0,0xCA,0xD8,0xD7,0xCE,0xFC
-
 
5656
        db      0xEE,0xA0,0xA1,0xE6,0xA4,0xA5,0xE4,0xA3,0xE5,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE
-
 
5657
        db      0xAF,0xEF,0xE0,0xE1,0xE2,0xE3,0xA6,0xA2,0xEC,0xEB,0xA7,0xE8,0xED,0xE9,0xE7,0xEA
-
 
5658
        db      0x9E,0x80,0x81,0x96,0x84,0x85,0x94,0x83,0x95,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E
-
 
5659
        db      0x8F,0x9F,0x90,0x91,0x92,0x93,0x86,0x82,0x9C,0x9B,0x87,0x98,0x9D,0x99,0x97,0x9A
-
 
5660
 
-
 
5661
.menu:
-
 
5662
        db      .cp866
-
 
5663
.menu.1:
-
 
5664
        dd      .menu.2
-
 
5665
        dd      0
-
 
5666
if lang eq ru
-
 
5667
        db      '&DOS ⥪áâ (cp866)',0
-
 
5668
else
-
 
5669
        db      '&DOS text (cp866)',0
-
 
5670
end if
-
 
5671
        db      .cp1251
-
 
5672
.menu.2:
-
 
5673
        dd      .menu.3
-
 
5674
        dd      .menu.1
-
 
5675
if lang eq ru
-
 
5676
        db      '&Windows ⥪áâ (cp1251)',0
-
 
5677
else
-
 
5678
        db      '&Windows text (cp1251)',0
-
 
5679
end if
-
 
5680
        db      .koi8r
-
 
5681
.menu.3:
-
 
5682
        dd      .menu.4
-
 
5683
        dd      .menu.2
-
 
5684
if lang eq ru
-
 
5685
        db      '&Linux ⥪áâ (koi8-r)',0
-
 
5686
else
-
 
5687
        db      '&Linux text (koi8-r)',0
-
 
5688
end if
-
 
5689
        db      .unicode
-
 
5690
.menu.4:
-
 
5691
        dd      0
-
 
5692
        dd      .menu.3
-
 
5693
        db      '&Unicode',0
4573
 
5694
 
4574
active_screen   dd      0
5695
active_screen   dd      0
4575
tabsize         dd      8
5696
tabsize         dd      8
4576
 
5697
 
4577
ascii2scan:
5698
ascii2scan:
4578
        times 32 db 0
5699
        times 32 db 0
4579
        db      0x39,0x02,0x03,0x04,0x05,0x06,0x08,0x28,0x0A,0x0B,0x09,0x0D,0x33,0x0C,0x34,0x35
5700
        db      0x39,0x02,0x03,0x04,0x05,0x06,0x08,0x28,0x0A,0x0B,0x09,0x0D,0x33,0x0C,0x34,0x35
4580
        db      0x0B,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x27,0x27,0x33,0x0D,0x34,0x35
5701
        db      0x0B,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x27,0x27,0x33,0x0D,0x34,0x35
4581
        db      0x03,0x1E,0x30,0x2E,0x20,0x12,0x21,0x22,0x23,0x17,0x24,0x25,0x26,0x32,0x31,0x18
5702
        db      0x03,0x1E,0x30,0x2E,0x20,0x12,0x21,0x22,0x23,0x17,0x24,0x25,0x26,0x32,0x31,0x18
4582
        db      0x19,0x10,0x13,0x1F,0x14,0x16,0x2F,0x11,0x2D,0x15,0x2C,0x1A,0x2B,0x1B,0x07,0x0C
5703
        db      0x19,0x10,0x13,0x1F,0x14,0x16,0x2F,0x11,0x2D,0x15,0x2C,0x1A,0x2B,0x1B,0x07,0x0C
4583
        db      0x29,0x1E,0x30,0x2E,0x20,0x12,0x21,0x22,0x23,0x17,0x24,0x25,0x26,0x32,0x31,0x18
5704
        db      0x29,0x1E,0x30,0x2E,0x20,0x12,0x21,0x22,0x23,0x17,0x24,0x25,0x26,0x32,0x31,0x18
4584
        db      0x19,0x10,0x13,0x1F,0x14,0x16,0x2F,0x11,0x2D,0x15,0x2C,0x1A,0x2B,0x1B,0x29,0x00
5705
        db      0x19,0x10,0x13,0x1F,0x14,0x16,0x2F,0x11,0x2D,0x15,0x2C,0x1A,0x2B,0x1B,0x29,0x00
4585
        db      0x21,0x33,0x20,0x16,0x26,0x14,0x27,0x19,0x30,0x10,0x13,0x25,0x2F,0x15,0x24,0x22
5706
        db      0x21,0x33,0x20,0x16,0x26,0x14,0x27,0x19,0x30,0x10,0x13,0x25,0x2F,0x15,0x24,0x22
4586
        db      0x23,0x2E,0x31,0x12,0x1E,0x1A,0x11,0x2D,0x17,0x18,0x1B,0x1F,0x32,0x28,0x34,0x2C
5707
        db      0x23,0x2E,0x31,0x12,0x1E,0x1A,0x11,0x2D,0x17,0x18,0x1B,0x1F,0x32,0x28,0x34,0x2C
4587
        db      0x21,0x33,0x20,0x16,0x26,0x14,0x27,0x19,0x30,0x10,0x13,0x25,0x2F,0x15,0x24,0x22
5708
        db      0x21,0x33,0x20,0x16,0x26,0x14,0x27,0x19,0x30,0x10,0x13,0x25,0x2F,0x15,0x24,0x22
4588
        times 48 db 0
5709
        times 48 db 0
4589
        db      0x23,0x2E,0x31,0x12,0x1E,0x1A,0x11,0x2D,0x17,0x18,0x1B,0x1F,0x32,0x28,0x34,0x2C
5710
        db      0x23,0x2E,0x31,0x12,0x1E,0x1A,0x11,0x2D,0x17,0x18,0x1B,0x1F,0x32,0x28,0x34,0x2C
4590
        db      0x29,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
5711
        db      0x29,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
4591
 
5712
 
4592
; Š« ¢¨è­ë¥ á®ç¥â ­¨ï
5713
; Š« ¢¨è­ë¥ á®ç¥â ­¨ï
4593
; db scancode, reserved
5714
; db scancode, reserved
4594
; dw ctrlstate
5715
; dw ctrlstate
4595
; dd handler
5716
; dd handler
4596
; ctrlstate: ¬« ¤è¨¥ 4 ¡¨â  - ¤«ï Shift, á«¥¤ãî騥 - ¤«ï Ctrl, á«¥¤ãî騥 - ¤«ï Alt
5717
; ctrlstate: ¬« ¤è¨¥ 4 ¡¨â  - ¤«ï Shift, á«¥¤ãî騥 - ¤«ï Ctrl, á«¥¤ãî騥 - ¤«ï Alt
4597
; 0 = ­¨ ®¤­  ª« ¢¨è  ­¥ ­ ¦ â 
5718
; 0 = ­¨ ®¤­  ª« ¢¨è  ­¥ ­ ¦ â 
4598
; 1 = ஢­® ®¤­  ­ ¦ â 
5719
; 1 = ஢­® ®¤­  ­ ¦ â 
4599
; 2 = ®¡¥ ­ ¦ âë
5720
; 2 = ®¡¥ ­ ¦ âë
4600
; 3 = «¥¢ ï ­ ¦ â , ¯à ¢ ï ­¥â
5721
; 3 = «¥¢ ï ­ ¦ â , ¯à ¢ ï ­¥â
4601
; 4 = ¯à ¢ ï ­ ¦ â , «¥¢ ï ­¥â
5722
; 4 = ¯à ¢ ï ­ ¦ â , «¥¢ ï ­¥â
4602
panels_ctrlkeys:
5723
panels_ctrlkeys:
4603
        dw      0x48, 0
5724
        dw      0x48, 0
4604
        dd      panels_OnKey.up
5725
        dd      panels_OnKey.up
4605
        dw      0x50, 0
5726
        dw      0x50, 0
4606
        dd      panels_OnKey.down
5727
        dd      panels_OnKey.down
4607
        dw      0x4B, 0
5728
        dw      0x4B, 0
4608
        dd      panels_OnKey.left
5729
        dd      panels_OnKey.left
4609
        dw      0x4D, 0
5730
        dw      0x4D, 0
4610
        dd      panels_OnKey.right
5731
        dd      panels_OnKey.right
-
 
5732
        dw      0x51, 0
-
 
5733
        dd      panels_OnKey.pgdn
-
 
5734
        dw      0x49, 0
-
 
5735
        dd      panels_OnKey.pgup
4611
        dw      0xF, 0
5736
        dw      0xF, 0
4612
        dd      panels_OnKey.tab
5737
        dd      panels_OnKey.tab
4613
        dw      0x47, 0
5738
        dw      0x47, 0
4614
        dd      panels_OnKey.home
5739
        dd      panels_OnKey.home
4615
        dw      0x4F, 0
5740
        dw      0x4F, 0
4616
        dd      panels_OnKey.end
5741
        dd      panels_OnKey.end
4617
        dw      0x1C, 0
5742
        dw      0x1C, 0
4618
        dd      panels_OnKey.enter
5743
        dd      panels_OnKey.enter
4619
        dw      0x3D, 0
5744
        dw      0x3D, 0
4620
        dd      panels_OnKey.f3
5745
        dd      panels_OnKey.f3
4621
        dw      0x3F, 0
5746
        dw      0x3F, 0
4622
        dd      panels_OnKey.f5
5747
        dd      panels_OnKey.f5
4623
        dw      0x3F, 1
5748
        dw      0x3F, 1
4624
        dd      panels_OnKey.shift_f5
5749
        dd      panels_OnKey.shift_f5
4625
        dw      0x41, 0
5750
        dw      0x41, 0
4626
        dd      panels_OnKey.f7
5751
        dd      panels_OnKey.f7
4627
        dw      0x42, 0
5752
        dw      0x42, 0
4628
        dd      panels_OnKey.f8
5753
        dd      panels_OnKey.f8
4629
        dw      0x43, 0x100
5754
        dw      0x43, 0x100
4630
        dd      alt_f9
5755
        dd      alt_f9
4631
        dw      0x44, 0
5756
        dw      0x44, 0
4632
        dd      exit
5757
        dd      exit
4633
        dw      0x5D, 0
5758
        dw      0x5D, 0
4634
        dd      panels_OnKey.menu
5759
        dd      panels_OnKey.menu
4635
repeat 9-3+1
5760
repeat 9-3+1
4636
        dw      0x3D+%-1, 0x10
5761
        dw      0x3D+%-1, 0x10
4637
        dd      panels_OnKey.ctrl_f39
5762
        dd      panels_OnKey.ctrl_f39
4638
end repeat
5763
end repeat
4639
        dw      0x3B, 0x100
5764
        dw      0x3B, 0x100
4640
        dd      panels_OnKey.alt_f12
5765
        dd      panels_OnKey.alt_f12
4641
        dw      0x3C, 0x100
5766
        dw      0x3C, 0x100
4642
        dd      panels_OnKey.alt_f12
5767
        dd      panels_OnKey.alt_f12
4643
        dw      0x58, 0
5768
        dw      0x58, 0
4644
        dd      F12
5769
        dd      F12
4645
        dw      0x13, 0x10
5770
        dw      0x13, 0x10
4646
        dd      panels_OnKey.ctrl_r
5771
        dd      panels_OnKey.ctrl_r
-
 
5772
        dw      2, 0x30
-
 
5773
        dd      panels_OnKey.change_mode
-
 
5774
        dw      3, 0x30
-
 
5775
        dd      panels_OnKey.change_mode
-
 
5776
        dw      4, 0x30
-
 
5777
        dd      panels_OnKey.change_mode
-
 
5778
        dw      5, 0x30
-
 
5779
        dd      panels_OnKey.change_mode
-
 
5780
repeat 10
-
 
5781
        dw      %+1, 0x40
-
 
5782
        dd      panels_OnKey.quick_jump
-
 
5783
end repeat
-
 
5784
        dw      0x52, 0
-
 
5785
        dd      panels_OnKey.insert
-
 
5786
        dw      0x4E, 0
-
 
5787
        dd      panels_OnKey.greyplus
-
 
5788
        dw      0x4A, 0
-
 
5789
        dd      panels_OnKey.greyminus
4647
        db      0
5790
        db      0
4648
 
5791
 
4649
viewer_ctrlkeys:
5792
viewer_ctrlkeys:
4650
        dw      1, 0
5793
        dw      1, 0
4651
        dd      viewer_OnKey.exit
5794
        dd      viewer_OnKey.exit
4652
        dw      0x51, 0
5795
        dw      0x51, 0
4653
        dd      viewer_OnKey.pgdn
5796
        dd      viewer_OnKey.pgdn
4654
        dw      0x49, 0
5797
        dw      0x49, 0
4655
        dd      viewer_OnKey.pgup
5798
        dd      viewer_OnKey.pgup
4656
        dw      0x50, 0
5799
        dw      0x50, 0
4657
        dd      viewer_OnKey.down
5800
        dd      viewer_OnKey.down
4658
        dw      0x48, 0
5801
        dw      0x48, 0
4659
        dd      viewer_OnKey.up
5802
        dd      viewer_OnKey.up
4660
        dw      0x4B, 0
5803
        dw      0x4B, 0
4661
        dd      viewer_OnKey.left
5804
        dd      viewer_OnKey.left
4662
        dw      0x4B, 0x10
5805
        dw      0x4B, 0x10
4663
        dd      viewer_OnKey.ctrl_left
5806
        dd      viewer_OnKey.ctrl_left
4664
        dw      0x4B, 0x11
5807
        dw      0x4B, 0x11
4665
        dd      viewer_OnKey.ctrl_shift_left
5808
        dd      viewer_OnKey.ctrl_shift_left
4666
        dw      0x4C, 0
5809
        dw      0x4C, 0
4667
        dd      viewer_OnKey.exit
5810
        dd      viewer_OnKey.exit
4668
        dw      0x4D, 0
5811
        dw      0x4D, 0
4669
        dd      viewer_OnKey.right
5812
        dd      viewer_OnKey.right
4670
        dw      0x4D, 0x10
5813
        dw      0x4D, 0x10
4671
        dd      viewer_OnKey.ctrl_right
5814
        dd      viewer_OnKey.ctrl_right
4672
        dw      0x4D, 0x11
5815
        dw      0x4D, 0x11
4673
        dd      viewer_OnKey.ctrl_shift_right
5816
        dd      viewer_OnKey.ctrl_shift_right
4674
        dw      0x3C, 0
5817
        dw      0x3C, 0
4675
        dd      viewer_OnKey.f2
5818
        dd      viewer_OnKey.f2
4676
        dw      0x3D, 0
5819
        dw      0x3D, 0
4677
        dd      viewer_OnKey.exit
5820
        dd      viewer_OnKey.exit
4678
        dw      0x3E, 0
5821
        dw      0x3E, 0
4679
        dd      viewer_OnKey.f4
5822
        dd      viewer_OnKey.f4
4680
        dw      0x42, 0
5823
        dw      0x42, 0
4681
        dd      viewer_OnKey.f8
5824
        dd      viewer_OnKey.f8
-
 
5825
        dw      0x42, 1
-
 
5826
        dd      viewer_OnKey.shift_f8
4682
        dw      0x44, 0
5827
        dw      0x44, 0
4683
        dd      viewer_OnKey.exit
5828
        dd      viewer_OnKey.exit
4684
        dw      0x47, 0
5829
        dw      0x47, 0
4685
        dd      viewer_OnKey.home
5830
        dd      viewer_OnKey.home
4686
        dw      0x4F, 0
5831
        dw      0x4F, 0
4687
        dd      viewer_OnKey.end
5832
        dd      viewer_OnKey.end
4688
        dw      0x58, 0
5833
        dw      0x58, 0
4689
        dd      F12
5834
        dd      F12
4690
        dw      0x43, 0x100
5835
        dw      0x43, 0x100
4691
        dd      alt_f9
5836
        dd      alt_f9
4692
        db      0
5837
        db      0
4693
 
5838
 
4694
dirinfo:
5839
dirinfo:
4695
                dd      1
5840
                dd      1
4696
.first          dd      0
5841
.first          dd      0
4697
                dd      0
5842
                dd      0
4698
.size           dd      300
5843
.size           dd      300
4699
.dirdata        dd      0
5844
.dirdata        dd      0
4700
                db      0
5845
                db      0
4701
.name           dd      0
5846
.name           dd      0
4702
 
5847
 
4703
readinfo:
5848
readinfo:
4704
                dd      0
5849
                dd      0
4705
.first          dq      0
5850
.first          dq      0
4706
.size           dd      0
5851
.size           dd      0
4707
.data           dd      0
5852
.data           dd      0
4708
                db      0
5853
                db      0
4709
.name           dd      0
5854
.name           dd      0
4710
 
5855
 
4711
writeinfo:
5856
writeinfo:
4712
.code           dd      2
5857
.code           dd      2
4713
.first          dq      0
5858
.first          dq      0
4714
.size           dd      0
5859
.size           dd      0
4715
.data           dd      0
5860
.data           dd      0
4716
                db      0
5861
                db      0
4717
.name           dd      0
5862
.name           dd      0
4718
 
5863
 
4719
attrinfo:
5864
attrinfo:
4720
                dd      5
5865
                dd      5
4721
                dd      0
5866
                dd      0
4722
                dd      0
5867
                dd      0
4723
                dd      0
5868
                dd      0
4724
                dd      .attr
5869
                dd      .attr
4725
                db      0
5870
                db      0
4726
.name           dd      0
5871
.name           dd      0
4727
 
5872
 
4728
delinfo:
5873
delinfo:
4729
                dd      8
5874
                dd      8
4730
                dd      0
5875
                dd      0
4731
                dd      0
5876
                dd      0
4732
                dd      0
5877
                dd      0
4733
                dd      0
5878
                dd      0
4734
                db      0
5879
                db      0
4735
                dd      execdata
5880
                dd      execdata
4736
 
5881
 
4737
mkdirinfo:
5882
mkdirinfo:
4738
                dd      9
5883
                dd      9
4739
                dd      0
5884
                dd      0
4740
                dd      0
5885
                dd      0
4741
                dd      0
5886
                dd      0
4742
                dd      0
5887
                dd      0
4743
                db      0
5888
                db      0
4744
                dd      CopyDestEditBuf+12
5889
                dd      CopyDestEditBuf+12
4745
 
5890
 
4746
if lang eq ru
5891
if lang eq ru
4747
compare_names   db      '¨ˆà¬Œ €­á‘¤„'
5892
compare_names   db      '¨ˆà¬Œ €­á‘¤„'
4748
else
5893
else
4749
compare_names   db      'nNxXmMsSuUcCaA'
5894
compare_names   db      'nNxXmMsSuUcCaA'
4750
end if
5895
end if
4751
 
5896
 
4752
; ‡¤¥áì ­ ç¨­ îâáï ª®­ä¨£ãà æ¨®­­ë¥ ¤ ­­ë¥ - ¢ ⥪ã饩 ॠ«¨§ æ¨¨ ®­¨ § è¨âë ¢ ¡¨­ à­¨ª
5897
; ‡¤¥áì ­ ç¨­ îâáï ª®­ä¨£ãà æ¨®­­ë¥ ¤ ­­ë¥ - ¢ ⥪ã饩 ॠ«¨§ æ¨¨ ®­¨ § è¨âë ¢ ¡¨­ à­¨ª
4753
 
5898
 
4754
;  ­¥«ì
5899
;  ­¥«ì
4755
panel_normal_color      db      1Bh
5900
panel_normal_color      db      1Bh
-
 
5901
panel_selected_color    db      1Eh
4756
panel_border_color      db      1Bh
5902
panel_border_color      db      1Bh
4757
panel_cursor_color      db      30h
5903
panel_cursor_color      db      30h
-
 
5904
panel_selected_cursor_color db  3Eh
4758
panel_header_color      db      1Bh
5905
panel_header_color      db      1Bh
4759
panel_active_header_color db    30h
5906
panel_active_header_color db    30h
4760
column_header_color     db      1Eh
5907
column_header_color     db      1Eh
-
 
5908
panel_number_color      db      1Bh
-
 
5909
panel_numselected_color db      3Eh
4761
panel_nscreens_color    db      0Bh
5910
panel_nscreens_color    db      0Bh
4762
; „¨ «®£¨
5911
; „¨ «®£¨
4763
dialog_colors:
5912
dialog_colors:
4764
dialog_main_color       db      70h
5913
dialog_main_color       db      70h
4765
dialog_border_color     db      70h
5914
dialog_border_color     db      70h
4766
dialog_header_color     db      70h
5915
dialog_header_color     db      70h
4767
dialog_edit_color       db      30h
5916
dialog_edit_color       db      30h
4768
dialog_unmodified_edit_color db 38h
5917
dialog_unmodified_edit_color db 38h
4769
dialog_normal_btn_color db      70h
5918
dialog_normal_btn_color db      70h
4770
dialog_selected_btn_color db    30h
5919
dialog_selected_btn_color db    30h
4771
; à¥¤ã¯à¥¦¤¥­¨ï ¨ ®è¨¡ª¨
5920
; à¥¤ã¯à¥¦¤¥­¨ï ¨ ®è¨¡ª¨
4772
warning_colors:
5921
warning_colors:
4773
; !!! ¤®«¦­ë ¡ëâì ⥠¦¥ ¯®«ï ¨ ¢ ⮬ ¦¥ ¯®à浪¥, çâ® ¨ ¤«ï ®¡ëç­ëå ¤¨ «®£®¢ !!!
5922
; !!! ¤®«¦­ë ¡ëâì ⥠¦¥ ¯®«ï ¨ ¢ ⮬ ¦¥ ¯®à浪¥, çâ® ¨ ¤«ï ®¡ëç­ëå ¤¨ «®£®¢ !!!
4774
warning_main_color      db      4Fh
5923
warning_main_color      db      4Fh
4775
warning_border_color    db      4Fh
5924
warning_border_color    db      4Fh
4776
warning_header_color    db      4Fh
5925
warning_header_color    db      4Fh
4777
warning_edit_color      db      30h
5926
warning_edit_color      db      30h
4778
warning_unmodified_edit_color db 38h
5927
warning_unmodified_edit_color db 38h
4779
warning_normal_btn_color db     4Fh
5928
warning_normal_btn_color db     4Fh
4780
warning_selected_btn_color db   70h
5929
warning_selected_btn_color db   70h
4781
; Œ¥­î
5930
; Œ¥­î
4782
menu_normal_color       db      3Fh
5931
menu_normal_color       db      3Fh
4783
menu_selected_color     db      0Fh
5932
menu_selected_color     db      0Fh
4784
menu_highlight_color    db      3Eh
5933
menu_highlight_color    db      3Eh
4785
menu_selected_highlight_color db 0Eh
5934
menu_selected_highlight_color db 0Eh
4786
menu_border_color       db      3Fh
5935
menu_border_color       db      3Fh
4787
menu_header_color       db      3Fh
5936
menu_header_color       db      3Fh
4788
menu_scrollbar_color    db      3Fh
5937
menu_scrollbar_color    db      3Fh
4789
; ‹¨­¥©ª  ª« ¢¨è
5938
; ‹¨­¥©ª  ª« ¢¨è
4790
keybar_number_color     db      7
5939
keybar_number_color     db      7
4791
keybar_name_color       db      30h
5940
keybar_name_color       db      30h
4792
keybar_bgr_color        db      7
5941
keybar_bgr_color        db      7
4793
; Š®¬ ­¤­ ï áâப 
5942
; Š®¬ ­¤­ ï áâப 
4794
cmdbar_normal_color     db      7
5943
cmdbar_normal_color     db      7
4795
cmdbar_prefix_color     db      7
5944
cmdbar_prefix_color     db      7
4796
; à®á¬®âà騪
5945
; à®á¬®âà騪
4797
view_normal_color       db      1Bh
5946
view_normal_color       db      1Bh
4798
view_status_color       db      30h
5947
view_status_color       db      30h
4799
view_arrows_color       db      1Eh
5948
view_arrows_color       db      1Eh
4800
 
5949
 
4801
; ®¤á¢¥âª  ä ©«®¢
5950
; ®¤á¢¥âª  ä ©«®¢
4802
highlight_num_groups    dd      10
5951
highlight_num_groups    dd      10
4803
highlight_groups        dd      highlight_group0
5952
highlight_groups        dd      highlight_group0
4804
                dd      highlight_group1
5953
                dd      highlight_group1
4805
                dd      highlight_group2
5954
                dd      highlight_group2
4806
                dd      highlight_group3
5955
                dd      highlight_group3
4807
                dd      highlight_group4
5956
                dd      highlight_group4
4808
                dd      highlight_group5
5957
                dd      highlight_group5
4809
                dd      highlight_group6
5958
                dd      highlight_group6
4810
                dd      highlight_group7
5959
                dd      highlight_group7
4811
                dd      highlight_group8
5960
                dd      highlight_group8
4812
                dd      highlight_group9
5961
                dd      highlight_group9
4813
 
5962
 
4814
; ”®à¬ â ®¯¨á ­¨ï £àã¯¯ë ¯®¤á¢¥âª¨:
5963
; ”®à¬ â ®¯¨á ­¨ï £àã¯¯ë ¯®¤á¢¥âª¨:
4815
virtual at 0
5964
virtual at 0
4816
highlight:
5965
highlight:
-
 
5966
        .IncludeAttributes      db ?
4817
        .NormalColor            db ?
5967
        .NormalColor            db ?
4818
        .CursorColor            db ?
5968
        .CursorColor            db ?
4819
        .IncludeAttributes      db ?
5969
        .SelectedColor          db ?
-
 
5970
        .SelectedCursorColor    db ?
4820
        .Mask:                  ; ASCIIZ-string
5971
        .Mask:                  ; ASCIIZ-string
4821
end virtual
5972
end virtual
4822
 
5973
 
4823
; all highlight masks must be in lowercase!
5974
; all highlight masks must be in lowercase!
4824
highlight_group0:
5975
highlight_group0:
4825
        db      13h
-
 
4826
        db      38h
-
 
4827
        db      2
5976
        db      2
-
 
5977
        db      13h, 38h, 0, 0
4828
        db      '*',0
5978
        db      '*',0
4829
highlight_group1:
5979
highlight_group1:
4830
        db      13h
-
 
4831
        db      38h
-
 
4832
        db      4
5980
        db      4
-
 
5981
        db      13h, 38h, 0, 0
4833
        db      '*',0
5982
        db      '*',0
4834
highlight_group2:
5983
highlight_group2:
4835
        db      1Fh
-
 
4836
        db      3Fh
-
 
4837
        db      10h
5984
        db      10h
-
 
5985
        db      1Fh, 3Fh, 0, 0
4838
        db      '*|..',0
5986
        db      '*|..',0
4839
highlight_group3:
5987
highlight_group3:
4840
        db      0
-
 
4841
        db      0
-
 
4842
        db      10h
5988
        db      10h
-
 
5989
        db      0, 0, 0, 0
4843
        db      '..',0
5990
        db      '..',0
4844
highlight_group4:
5991
highlight_group4:
4845
        db      1Ah
-
 
4846
        db      3Ah
-
 
4847
        db      0
5992
        db      0
-
 
5993
        db      1Ah, 3Ah, 0, 0
4848
        db      '*.exe,*.com,*.bat,*.cmd',0
5994
        db      '*.exe,*.com,*.bat,*.cmd',0
4849
highlight_group5:
5995
highlight_group5:
4850
        db      1Ah
-
 
4851
        db      3Ah
-
 
4852
        db      0
5996
        db      0
-
 
5997
        db      1Ah, 3Ah, 0, 0
4853
        db      '*|*.*',0
5998
        db      '*|*.*',0
4854
highlight_group6:
5999
highlight_group6:
4855
        db      1Dh
-
 
4856
        db      3Dh
-
 
4857
        db      0
6000
        db      0
-
 
6001
        db      1Dh, 3Dh, 0, 0
4858
        db      '*.rar,*.zip,*.[zj],*.[bg7]z,*.[bg]zip,*.tar,*.t[ag]z,*.ar[cj],*.r[0-9][0-9],'
6002
        db      '*.rar,*.zip,*.[zj],*.[bg7]z,*.[bg]zip,*.tar,*.t[ag]z,*.ar[cj],*.r[0-9][0-9],'
4859
        db      '*.a[0-9][0-9],*.bz2,*.cab,*.msi,*.jar,*.lha,*.lzh,*.ha,*.ac[bei],*.pa[ck],'
6003
        db      '*.a[0-9][0-9],*.bz2,*.cab,*.msi,*.jar,*.lha,*.lzh,*.ha,*.ac[bei],*.pa[ck],'
4860
        db      '*.rk,*.cpio,*.rpm,*.zoo,*.hqx,*.sit,*.ice,*.uc2,*.ain,*.imp,*.777,*.ufa,*.boa,'
6004
        db      '*.rk,*.cpio,*.rpm,*.zoo,*.hqx,*.sit,*.ice,*.uc2,*.ain,*.imp,*.777,*.ufa,*.boa,'
4861
        db      '*.bs[2a],*.sea,*.hpk,*.ddi,*.x2,*.rkv,*.[lw]sz,*.h[ay]p,*.lim,*.sqz,*.chz',0
6005
        db      '*.bs[2a],*.sea,*.hpk,*.ddi,*.x2,*.rkv,*.[lw]sz,*.h[ay]p,*.lim,*.sqz,*.chz',0
4862
highlight_group7:
6006
highlight_group7:
4863
        db      16h
-
 
4864
        db      36h
-
 
4865
        db      0
6007
        db      0
-
 
6008
        db      16h, 36h, 0, 0
4866
        db      '*.bak,*.tmp',0
6009
        db      '*.bak,*.tmp',0
4867
highlight_group8:
6010
highlight_group8:
4868
        db      17h
-
 
4869
        db      37h
-
 
4870
        db      0
6011
        db      0
-
 
6012
        db      17h, 37h, 0, 0
4871
        db      '*.asm,*.inc',0
6013
        db      '*.asm,*.inc',0
4872
highlight_group9:
6014
highlight_group9:
4873
        db      1Fh
-
 
4874
        db      3Fh
-
 
4875
        db      10h
6015
        db      10h
-
 
6016
        db      1Fh, 3Fh, 0, 0
4876
        db      '*',0
6017
        db      '*',0
4877
 
-
 
4878
associations:
-
 
4879
        dd      aAsm, tinypad, AsmMenu
-
 
4880
        dd      aInc, tinypad, 0
-
 
4881
        dd      aTxt, tinypad, 0
-
 
4882
        dd      aJpg, jpegview, 0
-
 
4883
        dd      aJpeg, jpegview, 0
-
 
4884
        dd      aGif, gifview, GifMenu
-
 
4885
        dd      aWav, ac97, 0
-
 
4886
        dd      aMp3, ac97, 0
-
 
4887
        dd      aMid, midamp, 0
-
 
4888
        dd      aBmp, mv, BmpMenu
-
 
4889
        dd      aPng, archer, 0
-
 
4890
        dd      aRtf, rtfread, 0
-
 
4891
        dd      a3ds, view3ds, 0
-
 
4892
        dd      aLif, life2, 0
-
 
4893
associations_end:
-
 
4894
 
-
 
4895
aAsm db 'asm',0
-
 
4896
aInc db 'inc',0
-
 
4897
aTxt db 'txt',0
-
 
4898
tinypad db '/rd/1/TinyPad',0
-
 
4899
 
-
 
4900
aJpg db 'jpg',0
-
 
4901
aJpeg db 'jpeg',0
-
 
4902
jpegview db '/rd/1/JpegView',0
-
 
4903
 
-
 
4904
aGif db 'gif',0
-
 
4905
gifview db '/rd/1/GIFVIEW',0
-
 
4906
 
-
 
4907
aWav db 'wav',0
-
 
4908
aMp3 db 'mp3',0
-
 
4909
ac97 db '/rd/1/AC97SND',0
-
 
4910
 
-
 
4911
aMid db 'mid',0
-
 
4912
midamp db '/rd/1/MIDAMP',0
-
 
4913
 
-
 
4914
aBmp db 'bmp',0
-
 
4915
mv db '/rd/1/MV',0
-
 
4916
 
-
 
4917
aPng db 'png',0
-
 
4918
archer db '/rd/1/@rcher',0
-
 
4919
 
-
 
4920
aRtf db 'rtf',0
-
 
4921
rtfread db '/rd/1/RtfRead',0
-
 
4922
 
-
 
4923
a3ds db '3ds',0
-
 
4924
view3ds db '/rd/1/3d/view3ds',0
-
 
4925
 
-
 
4926
aLif db 'lif',0
-
 
4927
life2 db '/rd/1/demos/life2',0
-
 
4928
 
-
 
4929
AsmMenu:
-
 
4930
        dd      aEdit, tinypad
-
 
4931
        dd      aCompile, fasm
-
 
4932
        dd      0
-
 
4933
BmpMenu:
-
 
4934
        dd      aView, mv
-
 
4935
        dd      aEdit, animage
-
 
4936
        dd      0
-
 
4937
GifMenu:
-
 
4938
        dd      aView, gifview
-
 
4939
        dd      aEdit, animage
-
 
4940
        dd      0
-
 
4941
 
-
 
4942
if lang eq en
-
 
4943
aView   db      '&View',0
-
 
4944
aCompile db     '&Compile',0
-
 
4945
aEdit   db      '&Edit',0
-
 
4946
else
-
 
4947
aView   db      '&à®á¬®âà',0
-
 
4948
aCompile db     '&Š®¬¯¨«¨à®¢ âì',0
-
 
4949
aEdit   db      '&¥¤ ªâ®à',0
-
 
4950
end if
-
 
4951
 
-
 
4952
fasm    db      '/rd/1/develop/fasm',0
-
 
4953
animage db      '/rd/1/animage',0
-
 
4954
 
6018
 
4955
bConfirmDelete  db      1
6019
bConfirmDelete  db      1
4956
bConfirmDeleteIncomplete db 0
6020
bConfirmDeleteIncomplete db 0
-
 
6021
 
-
 
6022
FolderShortcuts dd      0,0,0,0,0,0,0,0,0,0
4957
 
6023
 
4958
; ‡¤¥áì § ª ­ç¨¢ îâáï ª®­ä¨£ãà æ¨®­­ë¥ ¤ ­­ë¥
6024
; ‡¤¥áì § ª ­ç¨¢ îâáï ª®­ä¨£ãà æ¨®­­ë¥ ¤ ­­ë¥
4959
 
6025
 
4960
bWasE0          db      0
6026
bWasE0          db      0
4961
ctrlstate       db      0
6027
ctrlstate       db      0
-
 
6028
MemForImage     dd      0
-
 
6029
restore_semicolon dd    0
-
 
6030
bForHex         db      0
4962
 
6031
 
4963
align   4
6032
align   4
4964
; ‘®®¡é¥­¨¥ ® ®¡«®¬¥ ¯à¨ ¢ë¤¥«¥­¨¨ ¯ ¬ïâ¨
6033
; ‘®®¡é¥­¨¥ ® ®¡«®¬¥ ¯à¨ ¢ë¤¥«¥­¨¨ ¯ ¬ïâ¨
4965
nomem_dlgdata:
6034
nomem_dlgdata:
4966
        dd      2
6035
        dd      2
4967
        dd      -1
6036
        dd      -1
4968
        dd      -1
6037
        dd      -1
4969
        dd      12
6038
        dd      12
4970
        dd      2
6039
        dd      2
4971
        dd      1
6040
        dd      1
4972
        dd      1
6041
        dd      1
4973
        dd      aError
6042
        dd      aError
4974
        rb      4
6043
        rb      4
4975
        dd      0
6044
        dd      0
4976
        dd      0
6045
        dd      0
4977
        dd      2
6046
        dd      2
4978
; áâப  "No memory"
6047
; áâப  "No memory"
4979
        dd      1
6048
        dd      1
4980
        dd      1,0,10,0
6049
        dd      1,0,10,0
4981
        dd      aNoMemory
6050
        dd      aNoMemory
4982
        dd      1
6051
        dd      1
4983
; ª­®¯ª  "Ok"
6052
; ª­®¯ª  "Ok"
4984
        dd      2
6053
        dd      2
4985
        dd      4,1,7,1
6054
        dd      4,1,7,1
4986
        dd      aOk
6055
        dd      aOk
4987
        dd      0xD
6056
        dd      0xD
4988
 
-
 
4989
f8_confirm_dlgdata:
-
 
4990
        dd      1
-
 
4991
.x      dd      -1
-
 
4992
.y      dd      -1
-
 
4993
.width  dd      ?
-
 
4994
.height dd      3
-
 
4995
        dd      4
-
 
4996
        dd      2
-
 
4997
        dd      aDeleteCaption
-
 
4998
.main_color db ?
-
 
4999
.border_color db ?
-
 
5000
.header_color db ?
-
 
5001
        db      0
-
 
5002
        dd      0
-
 
5003
        dd      0
-
 
5004
        dd      4
-
 
5005
; áâப  "‚ë å®â¨â¥ 㤠«¨âì ..."
-
 
5006
        dd      1
-
 
5007
        dd      1,0
-
 
5008
.width2 dd      ?
-
 
5009
        dd      0
-
 
5010
        dd      aConfirmDeleteTextBuf
-
 
5011
        dd      1
-
 
5012
; áâப  á ¨¬¥­¥¬ ä ©« /¯ ¯ª¨
-
 
5013
        dd      1
-
 
5014
        dd      1,1
-
 
5015
.width3 dd      ?
-
 
5016
        dd      1
-
 
5017
.name   dd      ?
-
 
5018
        dd      1
-
 
5019
; ª­®¯ª  "㤠«¨âì"
-
 
5020
.del_btn:
-
 
5021
        dd      2
-
 
5022
.del_x1 dd      ?
-
 
5023
        dd      2
-
 
5024
.del_x2 dd      ?
-
 
5025
        dd      2
-
 
5026
        dd      aDelete
-
 
5027
.flags1 dd      0xC
-
 
5028
; ª­®¯ª  "®â¬¥­¨âì"
-
 
5029
        dd      2
-
 
5030
.cnl_x1 dd      ?
-
 
5031
        dd      2
-
 
5032
.cnl_x2 dd      ?
-
 
5033
        dd      2
-
 
5034
        dd      aCancel
-
 
5035
.flags2 dd      8
-
 
5036
 
6057
 
5037
; ¤¨ «®£ ª®¯¨à®¢ ­¨ï
6058
; ¤¨ «®£ ª®¯¨à®¢ ­¨ï
5038
copy_dlgdata:
6059
copy_dlgdata:
5039
        dd      1
6060
        dd      1
5040
.x      dd      -1
6061
.x      dd      -1
5041
.y      dd      -1
6062
.y      dd      -1
5042
.width  dd      ?
6063
.width  dd      ?
5043
.height dd      4
6064
.height dd      4
5044
        dd      4
6065
        dd      4
5045
        dd      2
6066
        dd      2
5046
        dd      aCopyCaption
6067
        dd      aCopyCaption
5047
.main_color db ?
6068
.main_color db ?
5048
.border_color db ?
6069
.border_color db ?
5049
.header_color db ?
6070
.header_color db ?
5050
        db      0
6071
        db      0
5051
        dd      0
6072
        dd      0
5052
        dd      0
6073
        dd      0
5053
        dd      4
6074
        dd      4
5054
; áâப  'Š®¯¨à®¢ âì "%s" ¢:'
6075
; áâப  'Š®¯¨à®¢ âì "%s" ¢:'
5055
        dd      1
6076
        dd      1
5056
        dd      1,0
6077
        dd      1,0
5057
.width2 dd      ?
6078
.width2 dd      ?
5058
        dd      0
6079
        dd      0
5059
        dd      CopySourceTextBuf
6080
        dd      CopySourceTextBuf
5060
        dd      0
6081
        dd      0
5061
; ¯®«¥ । ªâ¨à®¢ ­¨ï á ¨¬¥­¥¬ ä ©« /¯ ¯ª¨ ­ §­ ç¥­¨ï
6082
; ¯®«¥ । ªâ¨à®¢ ­¨ï á ¨¬¥­¥¬ ä ©« /¯ ¯ª¨ ­ §­ ç¥­¨ï
5062
        dd      3
6083
        dd      3
5063
        dd      1,1
6084
        dd      1,1
5064
.width3 dd      ?
6085
.width3 dd      ?
5065
        dd      1
6086
        dd      1
5066
        dd      CopyDestEditBuf
6087
        dd      CopyDestEditBuf
5067
.flags0 dd      0
6088
.flags0 dd      0
5068
; ª­®¯ª  "ª®¯¨à®¢ âì"
6089
; ª­®¯ª  "ª®¯¨à®¢ âì"
5069
.copy_btn:
6090
.copy_btn:
5070
        dd      2
6091
        dd      2
5071
.copy_x1 dd     ?
6092
.copy_x1 dd     ?
5072
        dd      3
6093
        dd      3
5073
.copy_x2 dd     ?
6094
.copy_x2 dd     ?
5074
        dd      3
6095
        dd      3
5075
        dd      aCopy
6096
        dd      aCopy
5076
.flags1 dd      18h
6097
.flags1 dd      18h
5077
; ª­®¯ª  "®â¬¥­¨âì"
6098
; ª­®¯ª  "®â¬¥­¨âì"
5078
        dd      2
6099
        dd      2
5079
.cnl_x1 dd      ?
6100
.cnl_x1 dd      ?
5080
        dd      3
6101
        dd      3
5081
.cnl_x2 dd      ?
6102
.cnl_x2 dd      ?
5082
        dd      3
6103
        dd      3
5083
        dd      aCancelB
6104
        dd      aCancelB
5084
.flags2 dd      8
6105
.flags2 dd      8
5085
 
6106
 
5086
mkdir_dlgdata:
6107
mkdir_dlgdata:
5087
        dd      1
6108
        dd      1
5088
        dd      -1, -1
6109
        dd      -1, -1
5089
.width  dd      ?
6110
.width  dd      ?
5090
.height dd      4
6111
.height dd      4
5091
        dd      4, 2
6112
        dd      4, 2
5092
        dd      aMkDirCaption
6113
        dd      aMkDirCaption
5093
        dd      ?
6114
        dd      ?
5094
        dd      0
6115
        dd      0
5095
        dd      0
6116
        dd      0
5096
        dd      4
6117
        dd      4
5097
; ‘âப  "‘®§¤ âì ¯ ¯ªã"
6118
; ‘âப  "‘®§¤ âì ¯ ¯ªã"
5098
        dd      1
6119
        dd      1
5099
        dd      1,0,aMkDirLen,0
6120
        dd      1,0,aMkDirLen,0
5100
        dd      aMkDir
6121
        dd      aMkDir
5101
        dd      0
6122
        dd      0
5102
; ¯®«¥ । ªâ¨à®¢ ­¨ï á ¨¬¥­¥¬ ᮧ¤ ¢ ¥¬®© ¯ ¯ª¨
6123
; ¯®«¥ । ªâ¨à®¢ ­¨ï á ¨¬¥­¥¬ ᮧ¤ ¢ ¥¬®© ¯ ¯ª¨
5103
        dd      3
6124
        dd      3
5104
        dd      1,1
6125
        dd      1,1
5105
.width2 dd      ?
6126
.width2 dd      ?
5106
        dd      1
6127
        dd      1
5107
        dd      CopyDestEditBuf
6128
        dd      CopyDestEditBuf
5108
.flags0 dd      0xC
6129
.flags0 dd      0xC
5109
; ª­®¯ª  "à®¤®«¦¨âì"
6130
; ª­®¯ª  "à®¤®«¦¨âì"
5110
.cont_btn:
6131
.cont_btn:
5111
        dd      2
6132
        dd      2
5112
.cont_x1 dd     ?
6133
.cont_x1 dd     ?
5113
        dd      3
6134
        dd      3
5114
.cont_x2 dd     ?
6135
.cont_x2 dd     ?
5115
        dd      3
6136
        dd      3
5116
        dd      a_Continue
6137
        dd      a_Continue
5117
.flags1 dd      18h
6138
.flags1 dd      18h
5118
; ª­®¯ª  "®â¬¥­¨âì"
6139
; ª­®¯ª  "®â¬¥­¨âì"
5119
        dd      2
6140
        dd      2
5120
.cnl_x1 dd      ?
6141
.cnl_x1 dd      ?
5121
        dd      3
6142
        dd      3
5122
.cnl_x2 dd      ?
6143
.cnl_x2 dd      ?
5123
        dd      3
6144
        dd      3
5124
        dd      aCancelB
6145
        dd      aCancelB
5125
.flags2 dd      8
6146
.flags2 dd      8
-
 
6147
 
-
 
6148
; ¤¨ «®£ ¢ë¤¥«¥­¨ï/á­ïâ¨ï
-
 
6149
mark_dlgdata:
-
 
6150
        dd      1
-
 
6151
        dd      -1, -1
-
 
6152
        dd      37, 1
-
 
6153
        dd      4, 2
-
 
6154
.title  dd      ?
-
 
6155
        dd      ?
-
 
6156
        dd      0, 0
-
 
6157
        dd      1
-
 
6158
; ¯®«¥ । ªâ¨à®¢ ­¨ï
-
 
6159
        dd      3
-
 
6160
        dd      1, 0, 35, 0
-
 
6161
        dd      enter_string_buf
-
 
6162
.flags  dd      ?
5126
 
6163
 
5127
RetryOrCancelBtn:
6164
RetryOrCancelBtn:
5128
        dd      aRetry
6165
        dd      aRetry
5129
        dd      a_Cancel
6166
        dd      a_Cancel
5130
DeleteOrKeepBtn:
6167
DeleteOrKeepBtn:
5131
        dd      a_Delete
6168
        dd      a_Delete
5132
        dd      aKeep
6169
        dd      aKeep
5133
RetryOrIgnoreBtn:
6170
RetryOrIgnoreBtn:
5134
        dd      aRetry
6171
        dd      aRetry
5135
        dd      aIgnore
6172
        dd      aIgnore
-
 
6173
DeleteOrCancelBtn:
-
 
6174
        dd      a_Delete
-
 
6175
        dd      a_Cancel
-
 
6176
DeleteErrorBtn:
-
 
6177
        dd      aRetry
-
 
6178
        dd      aSkip
-
 
6179
        dd      aSkipAll
-
 
6180
        dd      a_Cancel
5136
 
6181
 
5137
if lang eq ru
6182
if lang eq ru
5138
aDeleteCaption          db      '“¤ «¥­¨¥',0
6183
aDeleteCaption          db      '“¤ «¥­¨¥',0
5139
aConfirmDeleteText      db      '‚ë å®â¨â¥ 㤠«¨âì ',0
6184
aConfirmDeleteText      db      '‚ë å®â¨â¥ 㤠«¨âì',0
5140
aDeleteFolder           db      '¯ ¯ªã',0
6185
aDeleteFolder           db      ' ¯ ¯ªã',0
5141
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
6186
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
5142
aDeleteFile             db      'ä ©«',0
6187
aDeleteFile             db      ' ä ©«',0
5143
aDelete                 db      ' “¤ «¨âì ',0
-
 
5144
aDeleteLength = $ - aDelete - 1
-
 
5145
aCancel                 db      ' Žâ¬¥­¨âì ',0
-
 
5146
aCancelLength = $ - aCancel - 1
-
 
5147
aCancelB                db      '[ Žâ¬¥­¨âì ]',0
6188
aCancelB                db      '[ Žâ¬¥­¨âì ]',0
5148
aCancelBLength = $ - aCancelB - 1
6189
aCancelBLength = $ - aCancelB - 1
5149
aCopyCaption            db      'Š®¯¨à®¢ ­¨¥',0
6190
aCopyCaption            db      'Š®¯¨à®¢ ­¨¥',0
5150
aCopy                   db      '[ Š®¯¨à®¢ âì ]',0
6191
aCopy                   db      '[ Š®¯¨à®¢ âì ]',0
5151
aCopyLength = $ - aCopy - 1
6192
aCopyLength = $ - aCopy - 1
5152
a_Continue              db      '[ à®¤®«¦¨âì ]',0
6193
a_Continue              db      '[ à®¤®«¦¨âì ]',0
5153
a_ContinueLength = $ - a_Continue - 1
6194
a_ContinueLength = $ - a_Continue - 1
5154
aCopy1                  db      'Š®¯¨à®¢ âì "',0
6195
aCopy1                  db      'Š®¯¨à®¢ âì "',0
5155
aCopy2                  db      '" ¢:',0
6196
aCopy2                  db      '" ¢:',0
5156
aError                  db      'Žè¨¡ª ',0
6197
aError                  db      'Žè¨¡ª ',0
5157
aContinue               db      'à®¤®«¦¨âì',0
6198
aContinue               db      'à®¤®«¦¨âì',0
5158
aRetry                  db      '®¢â®à¨âì',0
6199
aRetry                  db      '®¢â®à¨âì',0
5159
a_Cancel                db      'Žâ¬¥­¨âì',0
6200
a_Cancel                db      'Žâ¬¥­¨âì',0
5160
a_Delete                db      '“¤ «¨âì',0
6201
a_Delete                db      '“¤ «¨âì',0
-
 
6202
aSkip                   db      'à®¯ãáâ¨âì',0
-
 
6203
aSkipAll                db      'à®¯ãáâ¨âì ¢á¥',0
5161
error0msg               db      '‘âà ­­®... ¥â ®è¨¡ª¨',0
6204
error0msg               db      '‘âà ­­®... ¥â ®è¨¡ª¨',0
5162
error1msg               db      '‘âà ­­®... ¥ ®¯à¥¤¥«¥­  ¡ §  ¨/¨«¨ à §¤¥« ¦ñá⪮£® ¤¨áª ',0
6205
error1msg               db      '‘âà ­­®... ¥ ®¯à¥¤¥«¥­  ¡ §  ¨/¨«¨ à §¤¥« ¦ñá⪮£® ¤¨áª ',0
5163
error2msg               db      '”ã­ªæ¨ï ­¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï ¤ ­­®© ä ©«®¢®© á¨á⥬ë',0
6206
error2msg               db      '”ã­ªæ¨ï ­¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï ¤ ­­®© ä ©«®¢®© á¨á⥬ë',0
5164
error3msg               db      '¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬ ',0
6207
error3msg               db      '¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬ ',0
5165
error4msg               db      '‘âà ­­®... Žè¨¡ª  4',0
6208
error4msg               db      '‘âà ­­®... Žè¨¡ª  4',0
5166
error5msg               db      '” ©« ­¥ ­ ©¤¥­',0
6209
error5msg               db      '” ©« ­¥ ­ ©¤¥­',0
5167
error6msg               db      '” ©« § ª®­ç¨«áï',0
6210
error6msg               db      '” ©« § ª®­ç¨«áï',0
5168
error7msg               db      '‘âà ­­®... “ª § â¥«ì ¢­¥ ¯ ¬ï⨠¯à¨«®¦¥­¨ï',0
6211
error7msg               db      '‘âà ­­®... “ª § â¥«ì ¢­¥ ¯ ¬ï⨠¯à¨«®¦¥­¨ï',0
5169
error8msg               db      '„¨áª § ¯®«­¥­',0
6212
error8msg               db      '„¨áª § ¯®«­¥­',0
5170
error9msg               db      '” ©«®¢ ï áâàãªâãà  à §àã襭 ',0
6213
error9msg               db      '” ©«®¢ ï áâàãªâãà  à §àã襭 ',0
5171
error10msg              db      '„®áâ㯠§ ¯à¥éñ­',0
6214
error10msg              db      '„®áâ㯠§ ¯à¥éñ­',0
5172
error11msg              db      'Žè¨¡ª  ãáâனá⢠',0
6215
error11msg              db      'Žè¨¡ª  ãáâனá⢠',0
5173
error30msg              db      '¥¤®áâ â®ç­® ¯ ¬ïâ¨',0
6216
error30msg              db      '¥¤®áâ â®ç­® ¯ ¬ïâ¨',0
5174
error31msg              db      '” ©« ­¥ ï¥âáï ¨á¯®«­ï¥¬ë¬',0
6217
error31msg              db      '” ©« ­¥ ï¥âáï ¨á¯®«­ï¥¬ë¬',0
5175
error32msg              db      '‘«¨èª®¬ ¬­®£® ¯à®æ¥áᮢ',0
6218
error32msg              db      '‘«¨èª®¬ ¬­®£® ¯à®æ¥áᮢ',0
5176
aUnknownError           db      '¥¨§¢¥áâ­ë© ª®¤ ®è¨¡ª¨: ',0
6219
aUnknownError           db      '¥¨§¢¥áâ­ë© ª®¤ ®è¨¡ª¨: ',0
5177
aCannotReadFolder       db      '¥ ¬®£ã ¯à®ç¨â âì ¯ ¯ªã',0
6220
aCannotReadFolder       db      '¥ ¬®£ã ¯à®ç¨â âì ¯ ¯ªã',0
5178
aRunError               db      'Žè¨¡ª  ¯à¨ § ¯ã᪥ ¯à®£à ¬¬ë:',0
6221
aRunError               db      'Žè¨¡ª  ¯à¨ § ¯ã᪥ ¯à®£à ¬¬ë:',0
5179
aFileNameTooBig         db      '®«­®¥ ¨¬ï ä ©«  ᫨誮¬ ¤«¨­­®¥',0
6222
aFileNameTooBig         db      '®«­®¥ ¨¬ï ä ©«  ᫨誮¬ ¤«¨­­®¥',0
5180
aFolderNameTooBig       db      '®«­®¥ ¨¬ï ¯ ¯ª¨ ᫨誮¬ ¤«¨­­®¥',0
6223
aFolderNameTooBig       db      '®«­®¥ ¨¬ï ¯ ¯ª¨ ᫨誮¬ ¤«¨­­®¥',0
5181
aCmdLineTooBig          db      'Š®¬ ­¤­ ï áâப  ¯à¥¢ë蠥⠣࠭¨æã OS ¢ 256 ᨬ¢®«®¢',0
6224
aCmdLineTooBig          db      'Š®¬ ­¤­ ï áâப  ¯à¥¢ë蠥⠣࠭¨æã OS ¢ 256 ᨬ¢®«®¢',0
5182
aCannotCopyToSelf       db      '” ©« ­¥ ¬®¦¥â ¡ëâì ᪮¯¨à®¢ ­ ¢ á ¬®£® ᥡï',0
6225
aCannotCopyToSelf       db      '” ©« ­¥ ¬®¦¥â ¡ëâì ᪮¯¨à®¢ ­ ¢ á ¬®£® ᥡï',0
5183
aCannotReadFile         db      '¥ ¬®£ã ¯à®ç¨â âì ä ©«',0
6226
aCannotReadFile         db      '¥ ¬®£ã ¯à®ç¨â âì ä ©«',0
5184
aIncompleteFile         db      'ë« ¯®«ã祭 ­¥¯®«­ë© ä ©«. “¤ «¨âì ¥£®?',0
6227
aIncompleteFile         db      'ë« ¯®«ã祭 ­¥¯®«­ë© ä ©«. “¤ «¨âì ¥£®?',0
5185
aKeep                   db      'Žáâ ¢¨âì',0
6228
aKeep                   db      'Žáâ ¢¨âì',0
5186
aCannotWriteFile        db      '¥ ¬®£ã § ¯¨á âì ¢ ä ©«',0
6229
aCannotWriteFile        db      '¥ ¬®£ã § ¯¨á âì ¢ ä ©«',0
5187
aCannotDeleteFile       db      '¥ ¬®£ã 㤠«¨âì ä ©«',0
6230
aCannotDeleteFile       db      '¥ ¬®£ã 㤠«¨âì ä ©«',0
5188
aCannotDeleteFolder     db      '¥ ¬®£ã 㤠«¨âì ¯ ¯ªã',0
6231
aCannotDeleteFolder     db      '¥ ¬®£ã 㤠«¨âì ¯ ¯ªã',0
5189
aIgnore                 db      'ˆ£­®à¨à®¢ âì',0
6232
aIgnore                 db      'ˆ£­®à¨à®¢ âì',0
5190
aMkDirCaption           db      '‘®§¤ ­¨¥ ¯ ¯ª¨',0
6233
aMkDirCaption           db      '‘®§¤ ­¨¥ ¯ ¯ª¨',0
5191
aMkDir                  db      '‘®§¤ âì ¯ ¯ªã',0
6234
aMkDir                  db      '‘®§¤ âì ¯ ¯ªã',0
5192
aMkDirLen = $ - aMkDir - 1
6235
aMkDirLen = $ - aMkDir - 1
5193
aCannotMakeFolder       db      '¥ ¬®£ã ᮧ¤ âì ¯ ¯ªã',0
6236
aCannotMakeFolder       db      '¥ ¬®£ã ᮧ¤ âì ¯ ¯ªã',0
-
 
6237
aName                   db      3,'ˆ¬ï'
-
 
6238
aSize                   db      6,' §¬¥à'
-
 
6239
aDate                   db      4,'„ â '
-
 
6240
aTime                   db      5,'∴•'
-
 
6241
aCannotLoadDLL          db      '¥ ¬®£ã § £à㧨âì DLL',0
-
 
6242
aInvalidDLL             db      '” ©« ­¥ ­ ©¤¥­ ¨«¨ ¨¬¥¥â ­¥¢¥à­ë© ä®à¬ â',0
-
 
6243
aMissingExport          db      '¥®¡å®¤¨¬ ï äã­ªæ¨ï ­¥ ­ ©¤¥­ ',0
-
 
6244
aInitFailed             db      'Žè¨¡ª  ¯à¨ ¨­¨æ¨ «¨§ æ¨¨',0
-
 
6245
aIncompatibleVersion    db      '¥á®¢¬¥á⨬ ï ¢¥àá¨ï',0
-
 
6246
aTables                 db      '’ ¡«¨æë',0
-
 
6247
aSelect                 db      '®¬¥â¨âì',0
-
 
6248
aDeselect               db      '‘­ïâì',0
5194
else
6249
else
5195
aDeleteCaption          db      'Delete',0
6250
aDeleteCaption          db      'Delete',0
5196
aConfirmDeleteText      db      'Do you wish to delete ',0
6251
aConfirmDeleteText      db      'Do you wish to delete',0
5197
aDeleteFolder           db      'the folder',0
6252
aDeleteFolder           db      ' the folder',0
5198
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
6253
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
5199
aDeleteFile             db      'the file',0
6254
aDeleteFile             db      ' the file',0
5200
aDelete                 db      ' Delete ',0
6255
aDelete                 db      ' Delete ',0
5201
aDeleteLength = $ - aDelete - 1
6256
aDeleteLength = $ - aDelete - 1
5202
aCancel                 db      ' Cancel ',0
6257
aCancel                 db      ' Cancel ',0
5203
aCancelLength = $ - aCancel - 1
6258
aCancelLength = $ - aCancel - 1
5204
aCancelB                db      '[ Cancel ]',0
6259
aCancelB                db      '[ Cancel ]',0
5205
aCancelBLength = $ - aCancelB - 1
6260
aCancelBLength = $ - aCancelB - 1
5206
aCopyCaption            db      'Copy',0
6261
aCopyCaption            db      'Copy',0
5207
aCopy                   db      '[ Copy ]',0
6262
aCopy                   db      '[ Copy ]',0
5208
aCopyLength = $ - aCopy - 1
6263
aCopyLength = $ - aCopy - 1
5209
a_Continue              db      '[ Continue ]',0
6264
a_Continue              db      '[ Continue ]',0
5210
a_ContinueLength = $ - a_Continue - 1
6265
a_ContinueLength = $ - a_Continue - 1
5211
aCopy1                  db      'Copy "',0
6266
aCopy1                  db      'Copy "',0
5212
aCopy2                  db      '" to:',0
6267
aCopy2                  db      '" to:',0
5213
aError                  db      'Error',0
6268
aError                  db      'Error',0
5214
aContinue               db      'Continue',0
6269
aContinue               db      'Continue',0
5215
aRetry                  db      'Retry',0
6270
aRetry                  db      'Retry',0
5216
a_Cancel                db      'Cancel',0
6271
a_Cancel                db      'Cancel',0
5217
a_Delete                db      'Delete',0
6272
a_Delete                db      'Delete',0
-
 
6273
aSkip                   db      'Skip',0
-
 
6274
aSkipAll                db      'Skip all',0
5218
error0msg               db      'Strange... No error',0
6275
error0msg               db      'Strange... No error',0
5219
error1msg               db      'Strange... Hard disk base and/or partition not defined',0
6276
error1msg               db      'Strange... Hard disk base and/or partition not defined',0
5220
error2msg               db      'The file system does not support this function',0
6277
error2msg               db      'The file system does not support this function',0
5221
error3msg               db      'Unknown file system',0
6278
error3msg               db      'Unknown file system',0
5222
error4msg               db      'Strange... Error 4',0
6279
error4msg               db      'Strange... Error 4',0
5223
error5msg               db      'File not found',0
6280
error5msg               db      'File not found',0
5224
error6msg               db      'End of file',0
6281
error6msg               db      'End of file',0
5225
error7msg               db      'Strange... Pointer lies outside of application memory',0
6282
error7msg               db      'Strange... Pointer lies outside of application memory',0
5226
error8msg               db      'Disk is full',0
6283
error8msg               db      'Disk is full',0
5227
error9msg               db      'File structure is destroyed',0
6284
error9msg               db      'File structure is destroyed',0
5228
error10msg              db      'Access denied',0
6285
error10msg              db      'Access denied',0
5229
error11msg              db      'Device error',0
6286
error11msg              db      'Device error',0
5230
error30msg              db      'Not enough memory',0
6287
error30msg              db      'Not enough memory',0
5231
error31msg              db      'File is not executable',0
6288
error31msg              db      'File is not executable',0
5232
error32msg              db      'Too many processes',0
6289
error32msg              db      'Too many processes',0
5233
aUnknownError           db      'Unknown error code: ',0
6290
aUnknownError           db      'Unknown error code: ',0
5234
aCannotReadFolder       db      'Cannot read folder',0
6291
aCannotReadFolder       db      'Cannot read folder',0
5235
aRunError               db      'Cannot execute program:',0
6292
aRunError               db      'Cannot execute program:',0
5236
aFileNameTooBig         db      'Full file name is too long',0
6293
aFileNameTooBig         db      'Full file name is too long',0
5237
aFolderNameTooBig       db      'Full folder name is too long',0
6294
aFolderNameTooBig       db      'Full folder name is too long',0
5238
aCmdLineTooBig          db      'Command line is too long (OS limit is 256 symbols)',0
6295
aCmdLineTooBig          db      'Command line is too long (OS limit is 256 symbols)',0
5239
aCannotCopyToSelf       db      'File cannot be copied onto itself',0
6296
aCannotCopyToSelf       db      'File cannot be copied onto itself',0
5240
aCannotReadFile         db      'Cannot read file',0
6297
aCannotReadFile         db      'Cannot read file',0
5241
aIncompleteFile         db      'Incomplete file was retrieved. Delete it?',0
6298
aIncompleteFile         db      'Incomplete file was retrieved. Delete it?',0
5242
aKeep                   db      'Keep',0
6299
aKeep                   db      'Keep',0
5243
aCannotWriteFile        db      'Cannot write file',0
6300
aCannotWriteFile        db      'Cannot write to the file',0
5244
aCannotDeleteFile       db      'Cannot delete file',0
6301
aCannotDeleteFile       db      'Cannot delete the file',0
5245
aCannotDeleteFolder     db      'Cannot delete folder',0
6302
aCannotDeleteFolder     db      'Cannot delete the folder',0
5246
aIgnore                 db      'Ignore',0
6303
aIgnore                 db      'Ignore',0
5247
aMkDirCaption           db      'Make folder',0
6304
aMkDirCaption           db      'Make folder',0
5248
aMkDir                  db      'Create the folder',0
6305
aMkDir                  db      'Create the folder',0
5249
aMkDirLen = $ - aMkDir - 1
6306
aMkDirLen = $ - aMkDir - 1
5250
aCannotMakeFolder       db      'Cannot create folder',0
6307
aCannotMakeFolder       db      'Cannot create folder',0
-
 
6308
aName                   db      4,'Name'
-
 
6309
aSize                   db      4,'Size'
-
 
6310
aDate                   db      4,'Date'
-
 
6311
aTime                   db      4,'Time'
-
 
6312
aCannotLoadDLL          db      'Cannot load DLL',0
-
 
6313
aInvalidDLL             db      'File is not found or invalid',0
-
 
6314
aMissingExport          db      'Required function is not present',0
-
 
6315
aInitFailed             db      'Initialization failed',0
-
 
6316
aIncompatibleVersion    db      'Incompatible version',0
-
 
6317
aTables                 db      'Tables',0
-
 
6318
aSelect                 db      'Select',0
-
 
6319
aDeselect               db      'Deselect',0
5251
end if
6320
end if
-
 
6321
 
5252
aOk                     db      'OK',0
6322
aOk                     db      'OK',0
5253
aNoMemory               db      'No memory!',0
6323
aNoMemory               db      'No memory!'
-
 
6324
nullstr                 db      0
-
 
6325
standard_dll_path:
-
 
6326
libini_name             db      '/rd/1/dll/'
-
 
6327
standard_dll_path_size = $ - standard_dll_path
-
 
6328
                        db      'libini.obj',0
-
 
6329
aStart                  db      'START',0
-
 
6330
aLibInit                db      'lib_init',0
-
 
6331
aVersion                db      'version',0
-
 
6332
aIniGetInt              db      'ini.get_int',0
-
 
6333
aIniGetStr              db      'ini.get_str',0
-
 
6334
aIniQuerySec            db      'ini.query_sec',0
-
 
6335
 
-
 
6336
aConfirmations          db      'Confirmations',0
-
 
6337
aConfirmDelete          db      'Delete',0
-
 
6338
aConfirmDeleteIncomplete db     'DeleteIncomplete',0
-
 
6339
 
-
 
6340
aAssociations           db      'Associations',0
-
 
6341
aMenu                   db      'Menu',0
-
 
6342
aFolderShortcuts        db      'FolderShortcuts',0
-
 
6343
aShortcut               db      'Shortcut'
-
 
6344
.d                      db      '0',0
-
 
6345
 
-
 
6346
align 4
-
 
6347
ini_import:
-
 
6348
ini.get_int     dd      aIniGetInt
-
 
6349
ini.get_str     dd      aIniGetStr
-
 
6350
ini.query_sec   dd      aIniQuerySec
-
 
6351
                dd      0
-
 
6352
 
-
 
6353
virtual at 0
-
 
6354
PanelMode:
-
 
6355
; up to 16 columns on one panel
-
 
6356
.NumColumns     dd      ?
-
 
6357
; available column types:
-
 
6358
COLUMN_TYPE_NONE = 0
-
 
6359
COLUMN_TYPE_NAME = 1
-
 
6360
        COLUMN_NAME_MARK = 10h          ; (reserved)
-
 
6361
        COLUMN_NAME_NOPATH = 20h        ; (reserved)
-
 
6362
        COLUMN_NAME_RIGHTALIGN = 40h    ; (reserved)
-
 
6363
COLUMN_TYPE_SIZE = 2
-
 
6364
        COLUMN_SIZE_COMMA = 10h         ; (reserved)
-
 
6365
COLUMN_TYPE_PACKED_SIZE = 3             ; (reserved)
-
 
6366
COLUMN_TYPE_DATE = 4
-
 
6367
COLUMN_TYPE_TIME = 5
-
 
6368
COLUMN_TYPE_DATETIME = 6                ; (reserved)
-
 
6369
COLUMN_TYPE_DATETIME_CREATION = 7       ; (reserved)
-
 
6370
COLUMN_TYPE_DATETIME_ACCESS = 8         ; (reserved)
-
 
6371
COLUMN_TYPE_ATTRIBUTES = 9              ; (reserved)
-
 
6372
COLUMN_TYPE_DESCRIPTION = 10            ; (reserved)
-
 
6373
COLUMN_TYPE_OWNER = 11                  ; (reserved)
-
 
6374
COLUMN_TYPE_NUMLINKS = 12               ; (reserved)
-
 
6375
COLUMN_TYPE_CUSTOM = 13                 ; (reserved)
-
 
6376
.ColumnTypes    rb      16
-
 
6377
 
-
 
6378
.ColumnWidths   rb      16
-
 
6379
.bFullScreen    db      ?               ; (reserved)
-
 
6380
.bAlignExtensions db    ?
-
 
6381
                rb      2
-
 
6382
.size = $
-
 
6383
end virtual
-
 
6384
 
-
 
6385
align 4
-
 
6386
column_headers:
-
 
6387
        dd      nullstr
-
 
6388
        dd      aName
-
 
6389
        dd      aSize
-
 
6390
        dd      nullstr
-
 
6391
        dd      aDate
-
 
6392
        dd      aTime
-
 
6393
draw_column_proc:
-
 
6394
        dd      draw_empty_column
-
 
6395
        dd      draw_name_column
-
 
6396
        dd      draw_size_column
-
 
6397
        dd      -1
-
 
6398
        dd      draw_date_column
-
 
6399
        dd      draw_time_column
-
 
6400
colmodes:
-
 
6401
; ०¨¬ 0 : NM,SC,D
-
 
6402
        dd      3
-
 
6403
        db      COLUMN_TYPE_NAME+COLUMN_NAME_MARK, COLUMN_TYPE_SIZE+COLUMN_SIZE_COMMA
-
 
6404
                db      COLUMN_TYPE_DATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-
 
6405
        db      0, 10, 8
-
 
6406
                times 13 db 0
-
 
6407
        db      0, 1
-
 
6408
                times 2 db 0
-
 
6409
; ०¨¬ 1 : N,N,N
-
 
6410
        dd      3
-
 
6411
        db      COLUMN_TYPE_NAME, COLUMN_TYPE_NAME, COLUMN_TYPE_NAME
-
 
6412
                times 13 db 0
-
 
6413
        times 16 db 0
-
 
6414
        db      0, 1
-
 
6415
                times 2 db 0
-
 
6416
; ०¨¬ 2 : N,N
-
 
6417
        dd      2
-
 
6418
        db      COLUMN_TYPE_NAME, COLUMN_TYPE_NAME
-
 
6419
                times 14 db 0
-
 
6420
        times 16 db 0
-
 
6421
        db      0, 0
-
 
6422
                times 2 db 0
-
 
6423
; ०¨¬ 3 : N,S,D,T
-
 
6424
        dd      4
-
 
6425
        db      COLUMN_TYPE_NAME, COLUMN_TYPE_SIZE, COLUMN_TYPE_DATE, COLUMN_TYPE_TIME
-
 
6426
                times 12 db 0
-
 
6427
        db      0, 6, 8, 5
-
 
6428
                times 12 db 0
-
 
6429
        db      0, 1
-
 
6430
                times 2 db 0
-
 
6431
; ०¨¬ 4 : N,S
-
 
6432
        dd      2
-
 
6433
        db      COLUMN_TYPE_NAME, COLUMN_TYPE_SIZE
-
 
6434
                times 14 db 0
-
 
6435
        db      0, 6
-
 
6436
                times 14 db 0
-
 
6437
        db      0, 0
-
 
6438
                times 2 db 0
-
 
6439
; ०¨¬ 5 : N,S,P,DM,DC,DA,A
-
 
6440
; ०¨¬ 6 : N,Z
-
 
6441
; ०¨¬ 7 : N,S,Z
-
 
6442
; ०¨¬ 8 : N,S,O
-
 
6443
; ०¨¬ 9 : N,S,LN
5254
 
6444
 
5255
execinfo:
6445
execinfo:
5256
        dd      7
6446
        dd      7
5257
        dd      0
6447
        dd      0
5258
execparams dd   0
6448
execparams dd   0
5259
        dd      0
6449
        dd      0
5260
        dd      0
6450
        dd      0
5261
        db      0
6451
        db      0
5262
execptr dd      ?
6452
execptr dd      ?
5263
 
6453
 
5264
IncludeIGlobals
6454
IncludeIGlobals
5265
 
6455
 
5266
i_end:
6456
i_end:
5267
 
6457
 
5268
IncludeUGlobals
6458
IncludeUGlobals
5269
 
6459
 
5270
execdata rb     1024
6460
execdata rb     1024
5271
execdataend:
6461
execdataend:
5272
        align   4
6462
        align   4
5273
attrinfo.attr   rb      40
6463
attrinfo.attr   rb      40
5274
 
6464
 
5275
panel1_data:
6465
panel1_data:
5276
panel1_left     dd      ?
6466
panel1_left     dd      ?
5277
panel1_top      dd      ?
6467
panel1_top      dd      ?
5278
panel1_width    dd      ?
6468
panel1_width    dd      ?
5279
panel1_height   dd      ?
6469
panel1_height   dd      ?
5280
panel1_index    dd      ?
6470
panel1_index    dd      ?
5281
panel1_start    dd      ?
6471
panel1_start    dd      ?
5282
panel1_colsz    dd      ?
6472
panel1_colsz    dd      ?
5283
panel1_colst    dd      ?
6473
panel1_colst    dd      ?
5284
panel1_sortmode db      ?
6474
panel1_sortmode db      ?
5285
                rb      3
6475
                rb      3
5286
panel1_nfa      dd      ?
6476
panel1_nfa      dd      ?
5287
panel1_numfiles dd      ?
6477
panel1_numfiles dd      ?
5288
panel1_files    dd      ?
6478
panel1_files    dd      ?
-
 
6479
panel1_colmode  dd      ?
-
 
6480
panel1_colwidths rd     16+1
-
 
6481
panel1_total_num dd     ?
-
 
6482
panel1_total_size dq    ?
-
 
6483
panel1_selected_num dd ?
-
 
6484
panel1_selected_size dq ?
5289
panel1_dir      rb      1024
6485
panel1_dir      rb      1024
5290
 
6486
 
5291
panel2_data:
6487
panel2_data:
5292
panel2_left     dd      ?
6488
panel2_left     dd      ?
5293
panel2_top      dd      ?
6489
panel2_top      dd      ?
5294
panel2_width    dd      ?
6490
panel2_width    dd      ?
5295
panel2_height   dd      ?
6491
panel2_height   dd      ?
5296
panel2_index    dd      ?
6492
panel2_index    dd      ?
5297
panel2_start    dd      ?
6493
panel2_start    dd      ?
5298
panel2_colsz    dd      ?
6494
panel2_colsz    dd      ?
5299
panel2_colst    dd      ?
6495
panel2_colst    dd      ?
5300
panel2_sortmode db      ?
6496
panel2_sortmode db      ?
5301
                rb      3
6497
                rb      3
5302
panel2_nfa      dd      ?
6498
panel2_nfa      dd      ?
5303
panel2_numfiles dd      ?
6499
panel2_numfiles dd      ?
5304
panel2_files    dd      ?
6500
panel2_files    dd      ?
-
 
6501
panel2_colmode  dd      ?
-
 
6502
panel2_colwidths rd     16+1
-
 
6503
panel2_total_num dd     ?
-
 
6504
panel2_total_size dq    ?
-
 
6505
panel2_selected_num  dd ?
-
 
6506
panel2_selected_size dq ?
5305
panel2_dir      rb      1024
6507
panel2_dir      rb      1024
5306
 
6508
 
5307
;console_data    rb      max_width*max_height*2
6509
;console_data    rb      max_width*max_height*2
5308
 
6510
 
5309
nomem_dlgsavearea       rb      (12+4)*(3+3)*2
6511
nomem_dlgsavearea       rb      (12+4)*(3+3)*2
5310
 
6512
 
5311
cur_header      rb      max_width
6513
cur_header      rb      max_width
5312
tmp             dd      ?
6514
tmp             dd      ?
5313
 
6515
 
5314
skinh           dd      ?
6516
skinh           dd      ?
5315
std_colors      rd      10
6517
std_colors      rd      10
5316
 
6518
 
5317
min_y           dd      ?
6519
min_y           dd      ?
5318
max_y           dd      ?
6520
max_y           dd      ?
5319
min_x           dd      ?
6521
min_x           dd      ?
5320
max_x           dd      ?
6522
max_x           dd      ?
5321
used_width      dd      ?
6523
used_width      dd      ?
5322
used_height     dd      ?
6524
used_height     dd      ?
5323
 
6525
 
5324
wnd_width       dd      ?
6526
wnd_width       dd      ?
5325
wnd_height      dd      ?
6527
wnd_height      dd      ?
5326
 
6528
 
5327
column_left     dd      ?
6529
column_left     dd      ?
5328
column_top      dd      ?
6530
column_top      dd      ?
5329
column_width    dd      ?
6531
column_width    dd      ?
5330
column_height   dd      ?
6532
column_height   dd      ?
5331
column_index    dd      ?
6533
column_index    dd      ?
-
 
6534
last_column_index dd    ?
5332
 
6535
 
5333
scrpos          dq      ?
6536
scrpos          dq      ?
5334
viewer_right_side dq    ?
6537
viewer_right_side dq    ?
5335
 
6538
 
5336
saved_file_name:
6539
saved_file_name:
5337
procinfo        rb      1024
6540
procinfo        rb      1024
5338
lower_file_name = procinfo + 512
6541
lower_file_name = procinfo + 512
-
 
6542
 
-
 
6543
app_path        rb      1100
5339
 
6544
 
5340
error_msg       rb      128
6545
error_msg       rb      128
5341
 
6546
 
5342
prev_dir        rb      1024
6547
prev_dir        rb      1024
5343
 
6548
 
5344
driveinfo       rb      32+304
6549
driveinfo       rb      32+304
5345
tmpname         rb      32
6550
tmpname         rb      32
5346
 
6551
 
5347
screens         dd      ?
6552
screens         dd      ?
5348
num_screens     dd      ?
6553
num_screens     dd      ?
5349
active_screen_vtable dd ?
6554
active_screen_vtable dd ?
5350
active_screen_data dd   ?
6555
active_screen_data dd   ?
5351
 
6556
 
5352
aConfirmDeleteTextBuf   rb      aConfirmDeleteTextMax + 1
6557
aConfirmDeleteTextBuf   rb      aConfirmDeleteTextMax + 1
5353
CopySourceTextBuf       rb      512
6558
CopySourceTextBuf       rb      512
5354
CopyDestEditBuf         rb      12+512+1
6559
CopyDestEditBuf         rb      12+512+1
5355
.length = $ - CopyDestEditBuf - 13
6560
.length = $ - CopyDestEditBuf - 13
-
 
6561
 
-
 
6562
enter_string_buf        rb      12+512+1
-
 
6563
 
-
 
6564
bMemForImageValidData   db      ?
5356
 
6565
 
-
 
6566
align 4
5357
align 4
6567
tolower_table   rb      256
5358
layout          rb      128
6568
layout          rb      128
5359
 
6569
 
5360
copy_buffer_size = 32768
6570
copy_buffer_size = 32768
5361
copy_buffer     rb      copy_buffer_size
6571
copy_buffer     rb      copy_buffer_size
-
 
6572
 
-
 
6573
; data for directory delete
-
 
6574
; If directory nested level is >1024, then its full name is too big,
-
 
6575
; so we see the overflow when creating full name (we check for this!)
-
 
6576
del_dir_stack   rd      1024
-
 
6577
del_dir_stack_ptr dd    ?
-
 
6578
del_dir_query_size = 32
-
 
6579
del_dir_query_area rb   32+304*del_dir_query_size
-
 
6580
del_bSkipAll    db      ?
5362
 
6581
 
5363
; stack
6582
; stack
5364
        align   4
6583
        align   4
5365
        rb      512
6584
        rb      512
5366
stacktop:
6585
stacktop:
5367
 
6586
 
5368
mem:
6587
mem: