Subversion Repositories Kolibri OS

Rev

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

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