Subversion Repositories Kolibri OS

Rev

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

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