Subversion Repositories Kolibri OS

Rev

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

Rev 9039 Rev 9059
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.65'
10
version equ '0.65'
11
version_dword equ 0*10000h + 65
11
version_dword equ 0*10000h + 65
12
 
12
 
13
min_width = 54
13
min_width = 54
14
max_width = 255
14
max_width = 255
15
min_height = 8
15
min_height = 8
16
max_height = 255
16
max_height = 255
17
 
17
 
18
include '../../../KOSfuncs.inc'
18
include '../../../KOSfuncs.inc'
19
include '../../../macros.inc'
19
include '../../../macros.inc'
20
include 'lang.inc'
20
include 'lang.inc'
21
include 'font.inc'
21
include 'font.inc'
22
include 'sort.inc'
22
include 'sort.inc'
23
include 'kglobals.inc'
23
include 'kglobals.inc'
24
include 'dialogs.inc'
24
include 'dialogs.inc'
25
include 'search.inc'
25
include 'search.inc'
26
include 'viewer.inc'
26
include 'viewer.inc'
27
include 'editor.inc'
27
include 'editor.inc'
28
include 'tools.inc'
28
include 'tools.inc'
29
include 'filetool.inc'
29
include 'filetool.inc'
30
 
30
 
31
struct PanelData
31
struct PanelData
32
left     dd      ?
32
left     dd      ?
33
top      dd      ?
33
top      dd      ?
34
width    dd      ?
34
width    dd      ?
35
height   dd      ?
35
height   dd      ?
36
index    dd      ?
36
index    dd      ?
37
start    dd      ?
37
start    dd      ?
38
colsz    dd      ?
38
colsz    dd      ?
39
colst    dd      ?
39
colst    dd      ?
40
sortmode db      ?
40
sortmode db      ?
41
                rb      3
41
                rb      3
42
nfa      dd      ?
42
nfa      dd      ?
43
numfiles dd      ?
43
numfiles dd      ?
44
files    dd      ?
44
files    dd      ?
45
hPlugin  dd      ?
45
hPlugin  dd      ?
46
hFile    dd      ?
46
hFile    dd      ?
47
parents          dd      ?
47
parents          dd      ?
48
parents_sz       dd      ?
48
parents_sz       dd      ?
49
parents_alloc    dd      ?
49
parents_alloc    dd      ?
50
colmode          dd      ?
50
colmode          dd      ?
51
colwidths        rd      16+1
51
colwidths        rd      16+1
52
total_num        dd      ?
52
total_num        dd      ?
53
total_size       dq      ?
53
total_size       dq      ?
54
selected_num     dd      ?
54
selected_num     dd      ?
55
selected_size    dq      ?
55
selected_size    dq      ?
56
;plugin_info:
56
;plugin_info:
57
plugin_flags     dd      ?
57
plugin_flags     dd      ?
58
dir      rb      1024
58
dir      rb      1024
59
ends
59
ends
60
 
60
 
61
cursor_normal_size = (font_height*15+50)/100
61
cursor_normal_size = (font_height*15+50)/100
62
cursor_big_size = font_height
62
cursor_big_size = font_height
63
 
63
 
64
align 4
64
align 4
65
start:
65
start:
66
        mov     eax,SF_SET_EVENTS_MASK
66
        mov     eax,SF_SET_EVENTS_MASK
67
        mov     ebx,(11b shl 30) or 100111b
67
        mov     ebx,(11b shl 30) or 100111b
68
        int     0x40
68
        int     0x40
69
        mov     edi, identical_table
69
        mov     edi, identical_table
70
        mov     ecx, 0x100
70
        mov     ecx, 0x100
71
        xor     eax, eax
71
        xor     eax, eax
72
@@:
72
@@:
73
        stosb
73
        stosb
74
        inc     eax
74
        inc     eax
75
        loop    @b
75
        loop    @b
76
        mov     cl, 'A'
76
        mov     cl, 'A'
77
@@:
77
@@:
78
        stosb
78
        stosb
79
        inc     eax
79
        inc     eax
80
        loop    @b
80
        loop    @b
81
        add     al, 0x20
81
        add     al, 0x20
82
        mov     cl, 'Z'-'A'+1
82
        mov     cl, 'Z'-'A'+1
83
@@:
83
@@:
84
        stosb
84
        stosb
85
        inc     eax
85
        inc     eax
86
        loop    @b
86
        loop    @b
87
        sub     al, 0x20
87
        sub     al, 0x20
88
        mov     cl, '€'-'Z'-1
88
        mov     cl, '€'-'Z'-1
89
@@:
89
@@:
90
        stosb
90
        stosb
91
        inc     eax
91
        inc     eax
92
        loop    @b
92
        loop    @b
93
        add     al, 0x20
93
        add     al, 0x20
94
        mov     cl, ''-'€'
94
        mov     cl, ''-'€'
95
@@:
95
@@:
96
        stosb
96
        stosb
97
        inc     eax
97
        inc     eax
98
        loop    @b
98
        loop    @b
99
        add     al, 0x30
99
        add     al, 0x30
100
        mov     cl, 'Ÿ'-''+1
100
        mov     cl, 'Ÿ'-''+1
101
@@:
101
@@:
102
        stosb
102
        stosb
103
        inc     eax
103
        inc     eax
104
        loop    @b
104
        loop    @b
105
        sub     al, 0x50
105
        sub     al, 0x50
106
        mov     cl, 256-'Ÿ'-1
106
        mov     cl, 256-'Ÿ'-1
107
@@:
107
@@:
108
        stosb
108
        stosb
109
        inc     eax
109
        inc     eax
110
        loop    @b
110
        loop    @b
111
        mov     byte [edi-256+'ð'], 'ñ'
111
        mov     byte [edi-256+'ð'], 'ñ'
112
        mov     cl, 'A'
112
        mov     cl, 'A'
113
        inc     eax
113
        inc     eax
114
        rep     stosb
114
        rep     stosb
115
        mov     cl, 'Z'-'A'+1
115
        mov     cl, 'Z'-'A'+1
116
        dec     eax
116
        dec     eax
117
        rep     stosb
117
        rep     stosb
118
        mov     cl, 'a'-'Z'-1
118
        mov     cl, 'a'-'Z'-1
119
        inc     eax
119
        inc     eax
120
        rep     stosb
120
        rep     stosb
121
        mov     byte [edi-'a'+'_'], 0
121
        mov     byte [edi-'a'+'_'], 0
122
        mov     cl, 'z'-'a'+1
122
        mov     cl, 'z'-'a'+1
123
        dec     eax
123
        dec     eax
124
        rep     stosb
124
        rep     stosb
125
        mov     cl, '€'-'z'-1
125
        mov     cl, '€'-'z'-1
126
        inc     eax
126
        inc     eax
127
        rep     stosb
127
        rep     stosb
128
        mov     cl, '¯'-'€'+1
128
        mov     cl, '¯'-'€'+1
129
        dec     eax
129
        dec     eax
130
        rep     stosb
130
        rep     stosb
131
        mov     cl, 'à'-'¯'-1
131
        mov     cl, 'à'-'¯'-1
132
        inc     eax
132
        inc     eax
133
        rep     stosb
133
        rep     stosb
134
        mov     cl, 'ñ'-'à'+1
134
        mov     cl, 'ñ'-'à'+1
135
        dec     eax
135
        dec     eax
136
        rep     stosb
136
        rep     stosb
137
        mov     cl, 256-'ñ'-1
137
        mov     cl, 256-'ñ'-1
138
        inc     eax
138
        inc     eax
139
        rep     stosb
139
        rep     stosb
140
        mov     edi, SearchStringEditBuf
140
        mov     edi, SearchStringEditBuf
141
        mov     eax, SearchStringEditBuf.length
141
        mov     eax, SearchStringEditBuf.length
142
        stosd
142
        stosd
143
        xor     eax, eax
143
        xor     eax, eax
144
        stosd
144
        stosd
145
        stosd
145
        stosd
146
        stosb
146
        stosb
147
        push    SF_SYS_MISC
147
        push    SF_SYS_MISC
148
        pop     eax
148
        pop     eax
149
        push    SSF_HEAP_INIT
149
        push    SSF_HEAP_INIT
150
        pop     ebx
150
        pop     ebx
151
        int     0x40
151
        int     0x40
152
        call    init_console
152
        call    init_console
153
        call    draw_window
153
        call    draw_window
154
        push    SF_KEYBOARD
154
        push    SF_KEYBOARD
155
        pop     eax
155
        pop     eax
156
        push    SSF_SET_INPUT_MODE
156
        push    SSF_SET_INPUT_MODE
157
        pop     ebx
157
        pop     ebx
158
        mov     ecx, ebx
158
        mov     ecx, ebx
159
        int     40h     ; set keyboard mode to scancodes
159
        int     40h     ; set keyboard mode to scancodes
160
        mov     eax, 200
160
        mov     eax, 200
161
        mov     [panel1.nfa], eax
161
        mov     [panel1.nfa], eax
162
        mov     [panel2.nfa], eax
162
        mov     [panel2.nfa], eax
163
        mov     ecx, 200*4 + 32 + 200*304
163
        mov     ecx, 200*4 + 32 + 200*304
164
        call    pgalloc
164
        call    pgalloc
165
        mov     [panel1.files], eax
165
        mov     [panel1.files], eax
166
        call    pgalloc
166
        call    pgalloc
167
        mov     [panel2.files], eax
167
        mov     [panel2.files], eax
168
        test    eax, eax
168
        test    eax, eax
169
        jz      exit
169
        jz      exit
170
        xor     eax, eax
170
        xor     eax, eax
171
        cmp     [panel1.files], eax
171
        cmp     [panel1.files], eax
172
        jz      exit
172
        jz      exit
173
        mov     [panel1.hPlugin], eax
173
        mov     [panel1.hPlugin], eax
174
        mov     [panel1.parents], eax
174
        mov     [panel1.parents], eax
175
        mov     [panel1.parents_sz], eax
175
        mov     [panel1.parents_sz], eax
176
        mov     [panel1.parents_alloc], eax
176
        mov     [panel1.parents_alloc], eax
177
        mov     [panel2.hPlugin], eax
177
        mov     [panel2.hPlugin], eax
178
        mov     [panel2.parents], eax
178
        mov     [panel2.parents], eax
179
        mov     [panel2.parents_sz], eax
179
        mov     [panel2.parents_sz], eax
180
        mov     [panel2.parents_alloc], eax
180
        mov     [panel2.parents_alloc], eax
181
        mov     [panel1.sortmode], al   ; sort by name
181
        mov     [panel1.sortmode], al   ; sort by name
182
        mov     [panel2.sortmode], al
182
        mov     [panel2.sortmode], al
183
        mov     al, 2                   ; "á।­¨©" ä®à¬ â
183
        mov     al, 2                   ; "á।­¨©" ä®à¬ â
184
        mov     [panel1.colmode], eax
184
        mov     [panel1.colmode], eax
185
        mov     [panel2.colmode], eax
185
        mov     [panel2.colmode], eax
186
        mov     [num_screens], 1
186
        mov     [num_screens], 1
187
        mov     ecx, 0x1000
187
        mov     ecx, 0x1000
188
        call    pgalloc
188
        call    pgalloc
189
        mov     [screens], eax
189
        mov     [screens], eax
190
        test    eax, eax
190
        test    eax, eax
191
        jz      exit
191
        jz      exit
192
        mov     ecx, panels_vtable
192
        mov     ecx, panels_vtable
193
        mov     [eax], ecx
193
        mov     [eax], ecx
194
        mov     [active_screen_vtable], ecx
194
        mov     [active_screen_vtable], ecx
195
        mov     [active_screen_keybar], keybar_panels
195
        mov     [active_screen_keybar], keybar_panels
196
; load libini.obj and kfar.ini
196
; load libini.obj and kfar.ini
197
        mov     eax, libini_name
197
        mov     eax, libini_name
198
        mov     esi, ini_import
198
        mov     esi, ini_import
199
        push    8
199
        push    8
200
        pop     ebp     ; we use version 8 of libini
200
        pop     ebp     ; we use version 8 of libini
201
        call    load_dll_and_import
201
        call    load_dll_and_import
202
        test    eax, eax
202
        test    eax, eax
203
        jnz     .noini
203
        jnz     .noini
204
        mov     edi, app_path
204
        mov     edi, app_path
205
        or      ecx, -1
205
        or      ecx, -1
206
        repnz   scasb
206
        repnz   scasb
207
        mov     dword [edi-1], '.ini'
207
        mov     dword [edi-1], '.ini'
208
        mov     byte [edi+3], 0
208
        mov     byte [edi+3], 0
209
        push    1
209
        push    1
210
        push    dword aConfirmDelete
210
        push    dword aConfirmDelete
211
        push    dword aConfirmations
211
        push    dword aConfirmations
212
        push    dword app_path
212
        push    dword app_path
213
        call    [ini.get_int]
213
        call    [ini.get_int]
214
        mov     [bConfirmDelete], al
214
        mov     [bConfirmDelete], al
215
        push    0
215
        push    0
216
        push    dword aConfirmDeleteIncomplete
216
        push    dword aConfirmDeleteIncomplete
217
        push    dword aConfirmations
217
        push    dword aConfirmations
218
        push    dword app_path
218
        push    dword app_path
219
        call    [ini.get_int]
219
        call    [ini.get_int]
220
        mov     [bConfirmDeleteIncomplete], al
220
        mov     [bConfirmDeleteIncomplete], al
221
        push    2
221
        push    2
222
        push    aLeftViewMode
222
        push    aLeftViewMode
223
        push    aPanels
223
        push    aPanels
224
        push    app_path
224
        push    app_path
225
        call    [ini.get_int]
225
        call    [ini.get_int]
226
        cmp     eax, 1
226
        cmp     eax, 1
227
        jb      @f
227
        jb      @f
228
        cmp     eax, 4
228
        cmp     eax, 4
229
        ja      @f
229
        ja      @f
230
        mov     [panel1.colmode], eax
230
        mov     [panel1.colmode], eax
231
@@:
231
@@:
232
        push    2
232
        push    2
233
        push    aRightViewMode
233
        push    aRightViewMode
234
        push    aPanels
234
        push    aPanels
235
        push    app_path
235
        push    app_path
236
        call    [ini.get_int]
236
        call    [ini.get_int]
237
        cmp     eax, 1
237
        cmp     eax, 1
238
        jb      @f
238
        jb      @f
239
        cmp     eax, 4
239
        cmp     eax, 4
240
        ja      @f
240
        ja      @f
241
        mov     [panel2.colmode], eax
241
        mov     [panel2.colmode], eax
242
@@:
242
@@:
243
        push    0
243
        push    0
244
        push    aLeftSortMode
244
        push    aLeftSortMode
245
        push    aPanels
245
        push    aPanels
246
        push    app_path
246
        push    app_path
247
        call    [ini.get_int]
247
        call    [ini.get_int]
248
        cmp     eax, 14
248
        cmp     eax, 14
249
        jae     @f
249
        jae     @f
250
        mov     [panel1.sortmode], al
250
        mov     [panel1.sortmode], al
251
@@:
251
@@:
252
        push    0
252
        push    0
253
        push    aRightSortMode
253
        push    aRightSortMode
254
        push    aPanels
254
        push    aPanels
255
        push    app_path
255
        push    app_path
256
        call    [ini.get_int]
256
        call    [ini.get_int]
257
        cmp     eax, 14
257
        cmp     eax, 14
258
        jae     @f
258
        jae     @f
259
        mov     [panel2.sortmode], al
259
        mov     [panel2.sortmode], al
260
@@:
260
@@:
261
        push    nullstr
261
        push    nullstr
262
        push    512
262
        push    512
263
        push    saved_file_name
263
        push    saved_file_name
264
        push    aEolStyle
264
        push    aEolStyle
265
        push    aEditor
265
        push    aEditor
266
        push    app_path
266
        push    app_path
267
        call    [ini.get_str]
267
        call    [ini.get_str]
268
        mov     cl, edit.eol_dos
268
        mov     cl, edit.eol_dos
269
        mov     al, [saved_file_name]
269
        mov     al, [saved_file_name]
270
        or      al, 20h
270
        or      al, 20h
271
        cmp     al, 'd'
271
        cmp     al, 'd'
272
        jz      @f
272
        jz      @f
273
        mov     cl, edit.eol_mac
273
        mov     cl, edit.eol_mac
274
        cmp     al, 'm'
274
        cmp     al, 'm'
275
        jz      @f
275
        jz      @f
276
        mov     cl, edit.eol_unix
276
        mov     cl, edit.eol_unix
277
@@:
277
@@:
278
        mov     [EditEOLStyle], cl
278
        mov     [EditEOLStyle], cl
279
        mov     ecx, 0x1000
279
        mov     ecx, 0x1000
280
        call    xpgalloc
280
        call    xpgalloc
281
        test    eax, eax
281
        test    eax, eax
282
        jz      .skip_assoc
282
        jz      .skip_assoc
283
        mov     [associations], eax
283
        mov     [associations], eax
284
        push    enum_associations_callback
284
        push    enum_associations_callback
285
        push    aAssociations
285
        push    aAssociations
286
        push    app_path
286
        push    app_path
287
        call    [ini.enum_keys]
287
        call    [ini.enum_keys]
288
.skip_assoc:
288
.skip_assoc:
289
        xor     ebp, ebp
289
        xor     ebp, ebp
290
        xor     esi, esi
290
        xor     esi, esi
291
.shortcut_loop:
291
.shortcut_loop:
292
        mov     edi, saved_file_name
292
        mov     edi, saved_file_name
293
        push    dword nullstr
293
        push    dword nullstr
294
        push    512
294
        push    512
295
        push    edi
295
        push    edi
296
        push    dword aShortcut
296
        push    dword aShortcut
297
        push    dword aFolderShortcuts
297
        push    dword aFolderShortcuts
298
        push    dword app_path
298
        push    dword app_path
299
        call    [ini.get_str]
299
        call    [ini.get_str]
300
        cmp     byte [edi], 0
300
        cmp     byte [edi], 0
301
        jz      .shortcut_cont
301
        jz      .shortcut_cont
302
        or      ecx, -1
302
        or      ecx, -1
303
        xor     eax, eax
303
        xor     eax, eax
304
        repnz   scasb
304
        repnz   scasb
305
        not     ecx
305
        not     ecx
306
        cmp     ecx, 2
306
        cmp     ecx, 2
307
        jz      @f
307
        jz      @f
308
        cmp     byte [edi-2], '/'
308
        cmp     byte [edi-2], '/'
309
        jnz     @f
309
        jnz     @f
310
        mov     byte [edi-2], 0
310
        mov     byte [edi-2], 0
311
        dec     ecx
311
        dec     ecx
312
@@:
312
@@:
313
        mov     al, [aShortcut.d]
313
        mov     al, [aShortcut.d]
314
        push    esi
314
        push    esi
315
        inc     esi
315
        inc     esi
316
        mov     [FolderShortcuts+(eax-'0')*4], esi
316
        mov     [FolderShortcuts+(eax-'0')*4], esi
317
        lea     esi, [esi+ecx-1]
317
        lea     esi, [esi+ecx-1]
318
        push    esi
318
        push    esi
319
        and     esi, 0xFFF
319
        and     esi, 0xFFF
320
        cmp     esi, ecx
320
        cmp     esi, ecx
321
        pop     esi
321
        pop     esi
322
        ja      .norealloc
322
        ja      .norealloc
323
        mov     edx, ebp
323
        mov     edx, ebp
324
        mov     ecx, esi
324
        mov     ecx, esi
325
        call    xpgrealloc
325
        call    xpgrealloc
326
        test    eax, eax
326
        test    eax, eax
327
        jnz     @f
327
        jnz     @f
328
        pop     esi
328
        pop     esi
329
        mov     edi, FolderShortcuts
329
        mov     edi, FolderShortcuts
330
        mov     ecx, 10
330
        mov     ecx, 10
331
        rep     stosd
331
        rep     stosd
332
        jmp     .skip_shortcuts
332
        jmp     .skip_shortcuts
333
@@:
333
@@:
334
        mov     ebp, eax
334
        mov     ebp, eax
335
.norealloc:
335
.norealloc:
336
        pop     edi
336
        pop     edi
337
        add     edi, ebp
337
        add     edi, ebp
338
        mov     ecx, saved_file_name
338
        mov     ecx, saved_file_name
339
@@:
339
@@:
340
        mov     al, [ecx]
340
        mov     al, [ecx]
341
        inc     ecx
341
        inc     ecx
342
        stosb
342
        stosb
343
        test    al, al
343
        test    al, al
344
        jnz     @b
344
        jnz     @b
345
.shortcut_cont:
345
.shortcut_cont:
346
        inc     [aShortcut.d]
346
        inc     [aShortcut.d]
347
        cmp     [aShortcut.d], '9'
347
        cmp     [aShortcut.d], '9'
348
        jbe     .shortcut_loop
348
        jbe     .shortcut_loop
349
        mov     esi, FolderShortcuts
349
        mov     esi, FolderShortcuts
350
        mov     ecx, 10
350
        mov     ecx, 10
351
        dec     ebp
351
        dec     ebp
352
.l3:
352
.l3:
353
        lodsd
353
        lodsd
354
        test    eax, eax
354
        test    eax, eax
355
        jz      @f
355
        jz      @f
356
        add     [esi-4], ebp
356
        add     [esi-4], ebp
357
@@:
357
@@:
358
        loop    .l3
358
        loop    .l3
359
.skip_shortcuts:
359
.skip_shortcuts:
360
; load plugins
360
; load plugins
361
        push    enum_plugins_callback
361
        push    enum_plugins_callback
362
        push    aPlugins
362
        push    aPlugins
363
        push    app_path
363
        push    app_path
364
        call    [ini.enum_keys]
364
        call    [ini.enum_keys]
365
; calculate info for editor
365
; calculate info for editor
366
        xor     ebx, ebx
366
        xor     ebx, ebx
367
        mov     ecx, [num_plugins]
367
        mov     ecx, [num_plugins]
368
        mov     esi, [plugins]
368
        mov     esi, [plugins]
369
@@:
369
@@:
370
        dec     ecx
370
        dec     ecx
371
        js      @f
371
        js      @f
372
        mov     [esi+PluginInfo.EditInfoOffs], ebx
372
        mov     [esi+PluginInfo.EditInfoOffs], ebx
373
        add     ebx, [esi+PluginInfo.EditInfoSize]
373
        add     ebx, [esi+PluginInfo.EditInfoSize]
374
        jnc     @f
374
        jnc     @f
375
        sbb     ebx, ebx
375
        sbb     ebx, ebx
376
@@:
376
@@:
377
; ¯®áª®«ìªã à §¬¥à ¡«®ª  ¢ । ªâ®à¥ ®£à ­¨ç¥­, â® ¨ à §¬¥à ¯ ¬ïâ¨, १¥à¢¨à㥬®© ¤«ï ¯« £¨­®¢, ®£à ­¨ç¥­
377
; ¯®áª®«ìªã à §¬¥à ¡«®ª  ¢ । ªâ®à¥ ®£à ­¨ç¥­, â® ¨ à §¬¥à ¯ ¬ïâ¨, १¥à¢¨à㥬®© ¤«ï ¯« £¨­®¢, ®£à ­¨ç¥­
378
; 512 - £àã¡ ï ¢¥àå­ïï ®æ¥­ª , £ à ­â¨àãîé ï à ¡®âã । ªâ®à , ॠ«ì­® ¯« £¨­ë ¤®«¦­ë âॡ®¢ âì ¬¥­ìè¥
378
; 512 - £àã¡ ï ¢¥àå­ïï ®æ¥­ª , £ à ­â¨àãîé ï à ¡®âã । ªâ®à , ॠ«ì­® ¯« £¨­ë ¤®«¦­ë âॡ®¢ âì ¬¥­ìè¥
379
        cmp     ebx, 512
379
        cmp     ebx, 512
380
        jb      @f
380
        jb      @f
381
        or      ebx, -1
381
        or      ebx, -1
382
        mov     [EditPlugInfo], ebx     ; disable plugins for editor
382
        mov     [EditPlugInfo], ebx     ; disable plugins for editor
383
        push    ContinueBtn
383
        push    ContinueBtn
384
        push    1
384
        push    1
385
        push    EditConfigErr_ptr
385
        push    EditConfigErr_ptr
386
        push    2
386
        push    2
387
        call    SayErr
387
        call    SayErr
388
@@:
388
@@:
389
        add     ebx, 3
389
        add     ebx, 3
390
        and     ebx, not 3
390
        and     ebx, not 3
391
        mov     [EditPlugInfo], ebx
391
        mov     [EditPlugInfo], ebx
392
.noini:
392
.noini:
393
        mov     eax, [EditPlugInfo]
393
        mov     eax, [EditPlugInfo]
394
        add     eax, editor_line.plugdata
394
        add     eax, editor_line.plugdata
395
        imul    eax, max_height
395
        imul    eax, max_height
396
        add     eax, editor_data.basesize + 0xFFF
396
        add     eax, editor_data.basesize + 0xFFF
397
        shr     eax, 12
397
        shr     eax, 12
398
        mov     [EditDataSize], eax
398
        mov     [EditDataSize], eax
399
        mov     esi, def_left_dir
399
        mov     esi, def_left_dir
400
        mov     edi, panel1.dir
400
        mov     edi, panel1.dir
401
@@:
401
@@:
402
        lodsb
402
        lodsb
403
        stosb
403
        stosb
404
        test    al, al
404
        test    al, al
405
        jnz     @b
405
        jnz     @b
406
        mov     esi, def_right_dir
406
        mov     esi, def_right_dir
407
        mov     edi, panel2.dir
407
        mov     edi, panel2.dir
408
@@:
408
@@:
409
        lodsb
409
        lodsb
410
        stosb
410
        stosb
411
        test    al, al
411
        test    al, al
412
        jnz     @b
412
        jnz     @b
413
        call    draw_keybar
413
        call    draw_keybar
414
        call    draw_cmdbar
414
        call    draw_cmdbar
415
        mov     [prev_dir], 0
415
        mov     [prev_dir], 0
416
        mov     ebp, panel1
416
        mov     ebp, panel1
417
        call    calc_colwidths
417
        call    calc_colwidths
418
        call    read_folder
418
        call    read_folder
419
        call    draw_panel
419
        call    draw_panel
420
        mov     [bSilentFolderMode], 1
420
        mov     [bSilentFolderMode], 1
421
        mov     ebp, panel2
421
        mov     ebp, panel2
422
        call    calc_colwidths
422
        call    calc_colwidths
423
        call    read_folder
423
        call    read_folder
424
        call    draw_panel
424
        call    draw_panel
425
event:
425
event:
426
        call    get_event
426
        call    get_event
427
        dec     eax
427
        dec     eax
428
        jz      redraw
428
        jz      redraw
429
        dec     eax
429
        dec     eax
430
        jz      key
430
        jz      key
431
        sub     eax,4
431
        sub     eax,4
432
        jz      mouse
432
        jz      mouse
433
; button - we have only one button, close
433
; button - we have only one button, close
434
exit:
434
exit:
435
; close all screens
435
; close all screens
436
@@:
436
@@:
437
        mov     ecx, [num_screens]
437
        mov     ecx, [num_screens]
438
        mov     eax, [screens]
438
        mov     eax, [screens]
439
        mov     ebp, [eax+ecx*8-4]
439
        mov     ebp, [eax+ecx*8-4]
440
        mov     eax, [eax+ecx*8-8]
440
        mov     eax, [eax+ecx*8-8]
441
        push    ebp
441
        push    ebp
442
        call    [eax+screen_vtable.OnExit]
442
        call    [eax+screen_vtable.OnExit]
443
        pop     ecx
443
        pop     ecx
444
        call    pgfree
444
        call    pgfree
445
        dec     [num_screens]
445
        dec     [num_screens]
446
        jnz     @b
446
        jnz     @b
447
; unload all plugins
447
; unload all plugins
448
        mov     ecx, [num_plugins]
448
        mov     ecx, [num_plugins]
449
        imul    esi, ecx, PluginInfo.size
449
        imul    esi, ecx, PluginInfo.size
450
        add     esi, [plugins]
450
        add     esi, [plugins]
451
.unload:
451
.unload:
452
        dec     ecx
452
        dec     ecx
453
        js      .unload_done
453
        js      .unload_done
454
        sub     esi, PluginInfo.size
454
        sub     esi, PluginInfo.size
455
        push    ecx esi
455
        push    ecx esi
456
        call    [esi+PluginInfo.unload]
456
        call    [esi+PluginInfo.unload]
457
        pop     esi ecx
457
        pop     esi ecx
458
        jmp     .unload
458
        jmp     .unload
459
.unload_done:
459
.unload_done:
460
        cmp     [ini.set_int], aIniSetInt
460
        cmp     [ini.set_int], aIniSetInt
461
        jz      .nosave
461
        jz      .nosave
462
        push    [panel1.colmode]
462
        push    [panel1.colmode]
463
        push    aLeftViewMode
463
        push    aLeftViewMode
464
        push    aPanels
464
        push    aPanels
465
        push    app_path
465
        push    app_path
466
        call    [ini.set_int]
466
        call    [ini.set_int]
467
        push    [panel2.colmode]
467
        push    [panel2.colmode]
468
        push    aRightViewMode
468
        push    aRightViewMode
469
        push    aPanels
469
        push    aPanels
470
        push    app_path
470
        push    app_path
471
        call    [ini.set_int]
471
        call    [ini.set_int]
472
        movzx   eax, [panel1.sortmode]
472
        movzx   eax, [panel1.sortmode]
473
        push    eax
473
        push    eax
474
        push    aLeftSortMode
474
        push    aLeftSortMode
475
        push    aPanels
475
        push    aPanels
476
        push    app_path
476
        push    app_path
477
        call    [ini.set_int]
477
        call    [ini.set_int]
478
        movzx   eax, [panel2.sortmode]
478
        movzx   eax, [panel2.sortmode]
479
        push    eax
479
        push    eax
480
        push    aRightSortMode
480
        push    aRightSortMode
481
        push    aPanels
481
        push    aPanels
482
        push    app_path
482
        push    app_path
483
        call    [ini.set_int]
483
        call    [ini.set_int]
484
.nosave:
484
.nosave:
485
if CHECK_FOR_LEAKS
485
if CHECK_FOR_LEAKS
486
        mov     ecx, [panel1.files]
486
        mov     ecx, [panel1.files]
487
        call    pgfree
487
        call    pgfree
488
        mov     ecx, [panel2.files]
488
        mov     ecx, [panel2.files]
489
        call    pgfree
489
        call    pgfree
490
        mov     ecx, [screens]
490
        mov     ecx, [screens]
491
        call    pgfree
491
        call    pgfree
492
        mov     ecx, [associations]
492
        mov     ecx, [associations]
493
        call    pgfree
493
        call    pgfree
494
        mov     ecx, [console_data_ptr]
494
        mov     ecx, [console_data_ptr]
495
        call    pgfree
495
        call    pgfree
496
        mov     ecx, [MemForImage]
496
        mov     ecx, [MemForImage]
497
        call    pgfree
497
        call    pgfree
498
        mov     esi, FolderShortcuts
498
        mov     esi, FolderShortcuts
499
        push    10
499
        push    10
500
        pop     ecx
500
        pop     ecx
501
@@:
501
@@:
502
        lodsd
502
        lodsd
503
        test    eax, eax
503
        test    eax, eax
504
        jnz     @f
504
        jnz     @f
505
        loop    @b
505
        loop    @b
506
        jmp     .nofreefs
506
        jmp     .nofreefs
507
@@:
507
@@:
508
        mov     ecx, eax
508
        mov     ecx, eax
509
        call    pgfree
509
        call    pgfree
510
        mov     ecx, [plugins]
510
        mov     ecx, [plugins]
511
        call    pgfree
511
        call    pgfree
512
        mov     ecx, [panel1.parents]
512
        mov     ecx, [panel1.parents]
513
        call    pgfree
513
        call    pgfree
514
        mov     ecx, [panel2.parents]
514
        mov     ecx, [panel2.parents]
515
        call    pgfree
515
        call    pgfree
516
.nofreefs:
516
.nofreefs:
517
        mov     eax, [numallocatedregions]
517
        mov     eax, [numallocatedregions]
518
        test    eax, eax
518
        test    eax, eax
519
        jz      @f
519
        jz      @f
520
        mov     edi, allocatedregions
520
        mov     edi, allocatedregions
521
        int3
521
        int3
522
        jmp     $
522
        jmp     $
523
@@:
523
@@:
524
end if
524
end if
525
        or      eax, SF_TERMINATE_PROCESS
525
        or      eax, SF_TERMINATE_PROCESS
526
        int     40h
526
        int     40h
527
 
527
 
528
align 16
528
align 16
529
get_event:
529
get_event:
530
        push    ebx
530
        push    ebx
531
        mov     ebx, [idle_interval]
531
        mov     ebx, [idle_interval]
532
        cmp     ebx, -1
532
        cmp     ebx, -1
533
        jz      .infinite
533
        jz      .infinite
534
        push    SF_WAIT_EVENT_TIMEOUT
534
        push    SF_WAIT_EVENT_TIMEOUT
535
        pop     eax
535
        pop     eax
536
        int     40h
536
        int     40h
537
        pop     ebx
537
        pop     ebx
538
        test    eax, eax
538
        test    eax, eax
539
        jnz     .ret
539
        jnz     .ret
540
        mov     ebp, [active_screen_data]
540
        mov     ebp, [active_screen_data]
541
        mov     eax, [active_screen_vtable]
541
        mov     eax, [active_screen_vtable]
542
        mov     eax, [eax+screen_vtable.OnIdle]
542
        mov     eax, [eax+screen_vtable.OnIdle]
543
        test    eax, eax
543
        test    eax, eax
544
        jz      get_event
544
        jz      get_event
545
        call    eax
545
        call    eax
546
        jmp     get_event
546
        jmp     get_event
547
.infinite:
547
.infinite:
548
        pop     ebx
548
        pop     ebx
549
        push    SF_WAIT_EVENT
549
        push    SF_WAIT_EVENT
550
        pop     eax
550
        pop     eax
551
        int     40h
551
        int     40h
552
.ret:
552
.ret:
553
        ret
553
        ret
554
 
554
 
555
redraw:
555
redraw:
556
; query kbd state from OS
556
; query kbd state from OS
557
        mov     al, SF_KEYBOARD
557
        mov     al, SF_KEYBOARD
558
        push    SSF_GET_CONTROL_KEYS
558
        push    SSF_GET_CONTROL_KEYS
559
        pop     ebx
559
        pop     ebx
560
        int     0x40
560
        int     0x40
561
        and     eax, 0x3F
561
        and     eax, 0x3F
562
        cmp     al, [ctrlstate]
562
        cmp     al, [ctrlstate]
563
        mov     [ctrlstate], al
563
        mov     [ctrlstate], al
564
        jz      @f
564
        jz      @f
565
        call    draw_keybar
565
        call    draw_keybar
566
@@:
566
@@:
567
        mov     al, SF_THREAD_INFO
567
        mov     al, SF_THREAD_INFO
568
        mov     ebx, procinfo
568
        mov     ebx, procinfo
569
        or      ecx, -1
569
        or      ecx, -1
570
        int     40h
570
        int     40h
571
; test if rolled up
571
; test if rolled up
572
; height of rolled up window is [skinh]+3
572
; height of rolled up window is [skinh]+3
573
        mov     eax, [ebx+46]
573
        mov     eax, [ebx+46]
574
        sub     eax, [skinh]
574
        sub     eax, [skinh]
575
        cmp     eax, 5
575
        cmp     eax, 5
576
        ja      @f
576
        ja      @f
577
        mov     al, SF_REDRAW
577
        mov     al, SF_REDRAW
578
        push    SSF_BEGIN_DRAW
578
        push    SSF_BEGIN_DRAW
579
        pop     ebx
579
        pop     ebx
580
        int     0x40
580
        int     0x40
581
        xor     eax, eax
581
        xor     eax, eax
582
; ebx, ecx, edi are ignored by function 0 after first redraw
582
; ebx, ecx, edi are ignored by function 0 after first redraw
583
        mov     edx, 0x53000000
583
        mov     edx, 0x53000000
584
        int     0x40
584
        int     0x40
585
        mov     al, SF_REDRAW
585
        mov     al, SF_REDRAW
586
        inc     ebx
586
        inc     ebx
587
        int     0x40
587
        int     0x40
588
        jmp     event
588
        jmp     event
589
@@:
589
@@:
590
        xor     ecx, ecx
590
        xor     ecx, ecx
591
        mov     eax, [ebx+42]
591
        mov     eax, [ebx+42]
592
        mov     [wnd_width], eax
592
        mov     [wnd_width], eax
593
        sub     eax, 5*2-1
593
        sub     eax, 5*2-1
594
        jae     @f
594
        jae     @f
595
        xor     eax, eax
595
        xor     eax, eax
596
@@:
596
@@:
597
        cdq
597
        cdq
598
        mov     esi, font_width
598
        mov     esi, font_width
599
        div     esi
599
        div     esi
600
        cmp     eax, min_width
600
        cmp     eax, min_width
601
        jae     @f
601
        jae     @f
602
        mov     al, min_width
602
        mov     al, min_width
603
        mov     ch, 1
603
        mov     ch, 1
604
@@:
604
@@:
605
        cmp     eax, max_width
605
        cmp     eax, max_width
606
        jbe     @f
606
        jbe     @f
607
        mov     eax, max_width
607
        mov     eax, max_width
608
        mov     ch, 1
608
        mov     ch, 1
609
@@:
609
@@:
610
        cmp     eax, [cur_width]
610
        cmp     eax, [cur_width]
611
        mov     [cur_width], eax
611
        mov     [cur_width], eax
612
        setnz   cl
612
        setnz   cl
613
        or      cl, ch
613
        or      cl, ch
614
        test    edx, edx
614
        test    edx, edx
615
        mov     [fill_width], edx
615
        mov     [fill_width], edx
616
        setnz   ch
616
        setnz   ch
617
        mov     eax, [ebx+46]
617
        mov     eax, [ebx+46]
618
        mov     [wnd_height], eax
618
        mov     [wnd_height], eax
619
        sub     eax, [skinh]
619
        sub     eax, [skinh]
620
        sub     eax, 5-1
620
        sub     eax, 5-1
621
        jns     @f
621
        jns     @f
622
        xor     eax, eax
622
        xor     eax, eax
623
@@:
623
@@:
624
        cdq
624
        cdq
625
        mov     esi, font_height
625
        mov     esi, font_height
626
        div     esi
626
        div     esi
627
        cmp     eax, min_height
627
        cmp     eax, min_height
628
        jae     @f
628
        jae     @f
629
        mov     al, min_height
629
        mov     al, min_height
630
        mov     cl, 1
630
        mov     cl, 1
631
@@:
631
@@:
632
        cmp     eax, max_height
632
        cmp     eax, max_height
633
        jbe     @f
633
        jbe     @f
634
        mov     eax, max_height
634
        mov     eax, max_height
635
        mov     cl, 1
635
        mov     cl, 1
636
@@:
636
@@:
637
        mov     [fill_height], edx
637
        mov     [fill_height], edx
638
        cmp     eax, [cur_height]
638
        cmp     eax, [cur_height]
639
        mov     [cur_height], eax
639
        mov     [cur_height], eax
640
        jnz     .resize
640
        jnz     .resize
641
        test    cl, cl
641
        test    cl, cl
642
        jnz     .resize
642
        jnz     .resize
643
        test    edx, edx
643
        test    edx, edx
644
        setnz   cl
644
        setnz   cl
645
        or      cl, ch
645
        or      cl, ch
646
        jz      @f
646
        jz      @f
647
        test    byte [ebx+70], 1
647
        test    byte [ebx+70], 1
648
        jnz     @f
648
        jnz     @f
649
.resize:
649
.resize:
650
        push    SF_CHANGE_WINDOW
650
        push    SF_CHANGE_WINDOW
651
        pop     eax
651
        pop     eax
652
        or      ebx, -1
652
        or      ebx, -1
653
        or      ecx, -1
653
        or      ecx, -1
654
        mov     edx, [cur_width]
654
        mov     edx, [cur_width]
655
        imul    edx, font_width
655
        imul    edx, font_width
656
        add     edx, 5*2-1
656
        add     edx, 5*2-1
657
        mov     esi, [cur_height]
657
        mov     esi, [cur_height]
658
        imul    esi, font_height
658
        imul    esi, font_height
659
        add     esi, [skinh]
659
        add     esi, [skinh]
660
        add     esi, 5-1
660
        add     esi, 5-1
661
        int     40h
661
        int     40h
662
.resize_draw:
662
.resize_draw:
663
        mov     ecx, [MemForImage]
663
        mov     ecx, [MemForImage]
664
        call    pgfree
664
        call    pgfree
665
        and     [MemForImage], 0
665
        and     [MemForImage], 0
666
        call    init_console
666
        call    init_console
667
;        call    draw_window
667
;        call    draw_window
668
        call    draw_keybar
668
        call    draw_keybar
669
        mov     ebp, [active_screen_data]
669
        mov     ebp, [active_screen_data]
670
        mov     eax, [active_screen_vtable]
670
        mov     eax, [active_screen_vtable]
671
        mov     [cursor_size], cursor_normal_size
671
        mov     [cursor_size], cursor_normal_size
672
        call    dword [eax+screen_vtable.OnRedraw]
672
        call    dword [eax+screen_vtable.OnRedraw]
673
        jmp     event
673
        jmp     event
674
@@:
674
@@:
675
        call    draw_window
675
        call    draw_window
676
        jmp     event
676
        jmp     event
677
alt_f9:
677
alt_f9:
678
        cmp     [saved_width], -1
678
        cmp     [saved_width], -1
679
        jz      @f
679
        jz      @f
680
        mov     eax, [saved_width]
680
        mov     eax, [saved_width]
681
        mov     [cur_width], eax
681
        mov     [cur_width], eax
682
        or      [saved_width], -1
682
        or      [saved_width], -1
683
        mov     eax, [saved_height]
683
        mov     eax, [saved_height]
684
        mov     [cur_height], eax
684
        mov     [cur_height], eax
685
        or      [saved_height], -1
685
        or      [saved_height], -1
686
        jmp     redraw.resize
686
        jmp     redraw.resize
687
@@:
687
@@:
688
        push    SF_STYLE_SETTINGS
688
        push    SF_STYLE_SETTINGS
689
        pop     eax
689
        pop     eax
690
        push    SSF_GET_SCREEN_AREA
690
        push    SSF_GET_SCREEN_AREA
691
        pop     ebx
691
        pop     ebx
692
        int     0x40
692
        int     0x40
693
        push    eax
693
        push    eax
694
        sub     eax, [esp+2]
694
        sub     eax, [esp+2]
695
        inc     eax
695
        inc     eax
696
        movzx   eax, ax
696
        movzx   eax, ax
697
        sub     eax, 10
697
        sub     eax, 10
698
        xor     edx, edx
698
        xor     edx, edx
699
        mov     ecx, font_width
699
        mov     ecx, font_width
700
        div     ecx
700
        div     ecx
701
        xchg    [cur_width], eax
701
        xchg    [cur_width], eax
702
        mov     [saved_width], eax
702
        mov     [saved_width], eax
703
        mov     eax, ebx
703
        mov     eax, ebx
704
        shr     ebx, 16
704
        shr     ebx, 16
705
        sub     eax, ebx
705
        sub     eax, ebx
706
        sub     eax, 5-1
706
        sub     eax, 5-1
707
        sub     eax, [skinh]
707
        sub     eax, [skinh]
708
        xor     edx, edx
708
        xor     edx, edx
709
        mov     ecx, font_height
709
        mov     ecx, font_height
710
        div     ecx
710
        div     ecx
711
        xchg    [cur_height], eax
711
        xchg    [cur_height], eax
712
        mov     [saved_height], eax
712
        mov     [saved_height], eax
713
        mov     ecx, ebx
713
        mov     ecx, ebx
714
        pop     ebx
714
        pop     ebx
715
        shr     ebx, 16
715
        shr     ebx, 16
716
        mov     edx, [cur_width]
716
        mov     edx, [cur_width]
717
        imul    edx, font_width
717
        imul    edx, font_width
718
        add     edx, 5*2-1
718
        add     edx, 5*2-1
719
        mov     esi, [cur_height]
719
        mov     esi, [cur_height]
720
        imul    esi, font_height
720
        imul    esi, font_height
721
        add     esi, [skinh]
721
        add     esi, [skinh]
722
        add     esi, 4
722
        add     esi, 4
723
        push    SF_CHANGE_WINDOW
723
        push    SF_CHANGE_WINDOW
724
        pop     eax
724
        pop     eax
725
        int     0x40
725
        int     0x40
726
        jmp     redraw.resize_draw
726
        jmp     redraw.resize_draw
727
key:
727
key:
728
        mov     al, SF_GET_KEY
728
        mov     al, SF_GET_KEY
729
        int     40h
729
        int     40h
730
        test    al, al
730
        test    al, al
731
        jnz     event
731
        jnz     event
732
        xchg    al, ah
732
        xchg    al, ah
733
        cmp     al, 0xE0
733
        cmp     al, 0xE0
734
        jnz     @f
734
        jnz     @f
735
        mov     [bWasE0], 1
735
        mov     [bWasE0], 1
736
        jmp     event
736
        jmp     event
737
@@:
737
@@:
738
        xchg    ah, [bWasE0]
738
        xchg    ah, [bWasE0]
739
        mov     ebp, [active_screen_data]
739
        mov     ebp, [active_screen_data]
740
        mov     edx, [active_screen_vtable]
740
        mov     edx, [active_screen_vtable]
741
        cmp     al, 0x1D
741
        cmp     al, 0x1D
742
        jz      .ctrl_down
742
        jz      .ctrl_down
743
        cmp     al, 0x9D
743
        cmp     al, 0x9D
744
        jz      .ctrl_up
744
        jz      .ctrl_up
745
        cmp     al, 0x2A
745
        cmp     al, 0x2A
746
        jz      .lshift_down
746
        jz      .lshift_down
747
        cmp     al, 0xAA
747
        cmp     al, 0xAA
748
        jz      .lshift_up
748
        jz      .lshift_up
749
        cmp     al, 0x36
749
        cmp     al, 0x36
750
        jz      .rshift_down
750
        jz      .rshift_down
751
        cmp     al, 0xB6
751
        cmp     al, 0xB6
752
        jz      .rshift_up
752
        jz      .rshift_up
753
        cmp     al, 0x38
753
        cmp     al, 0x38
754
        jz      .alt_down
754
        jz      .alt_down
755
        cmp     al, 0xB8
755
        cmp     al, 0xB8
756
        jz      .alt_up
756
        jz      .alt_up
757
        call    [edx+screen_vtable.OnKey]
757
        call    [edx+screen_vtable.OnKey]
758
        jmp     event
758
        jmp     event
759
.ctrl_down:
759
.ctrl_down:
760
        test    ah, ah
760
        test    ah, ah
761
        jnz     .rctrl_down
761
        jnz     .rctrl_down
762
        or      [ctrlstate], 4
762
        or      [ctrlstate], 4
763
        jmp     .keybar
763
        jmp     .keybar
764
.rctrl_down:
764
.rctrl_down:
765
        or      [ctrlstate], 8
765
        or      [ctrlstate], 8
766
        jmp     .keybar
766
        jmp     .keybar
767
.ctrl_up:
767
.ctrl_up:
768
        test    ah, ah
768
        test    ah, ah
769
        jnz     .rctrl_up
769
        jnz     .rctrl_up
770
        and     [ctrlstate], not 4
770
        and     [ctrlstate], not 4
771
        jmp     .keybar
771
        jmp     .keybar
772
.rctrl_up:
772
.rctrl_up:
773
        and     [ctrlstate], not 8
773
        and     [ctrlstate], not 8
774
.keybar:
774
.keybar:
775
        call    draw_keybar
775
        call    draw_keybar
776
        call    draw_image
776
        call    draw_image
777
@@:     jmp     event
777
@@:     jmp     event
778
.lshift_down:
778
.lshift_down:
779
; ignore E0 2A sequence
779
; ignore E0 2A sequence
780
; e.g. arrow keys with NumLock on generate sequence E0 2A E0 xx / E0 xx+80 E0 AA
780
; e.g. arrow keys with NumLock on generate sequence E0 2A E0 xx / E0 xx+80 E0 AA
781
; where xx is scancode, so we can safely ignore E0 2A
781
; where xx is scancode, so we can safely ignore E0 2A
782
        test    ah, ah
782
        test    ah, ah
783
        jnz     @b
783
        jnz     @b
784
        or      [ctrlstate], 1
784
        or      [ctrlstate], 1
785
        jmp     .keybar
785
        jmp     .keybar
786
.lshift_up:
786
.lshift_up:
787
; ignore E0 AA sequence
787
; ignore E0 AA sequence
788
        test    ah, ah
788
        test    ah, ah
789
        jnz     @b
789
        jnz     @b
790
        and     [ctrlstate], not 1
790
        and     [ctrlstate], not 1
791
        jmp     .keybar
791
        jmp     .keybar
792
.rshift_down:
792
.rshift_down:
793
        or      [ctrlstate], 2
793
        or      [ctrlstate], 2
794
        jmp     .keybar
794
        jmp     .keybar
795
.rshift_up:
795
.rshift_up:
796
        and     [ctrlstate], not 2
796
        and     [ctrlstate], not 2
797
        jmp     .keybar
797
        jmp     .keybar
798
.alt_down:
798
.alt_down:
799
        test    ah, ah
799
        test    ah, ah
800
        jnz     .ralt_down
800
        jnz     .ralt_down
801
        or      [ctrlstate], 0x10
801
        or      [ctrlstate], 0x10
802
        jmp     .keybar
802
        jmp     .keybar
803
.ralt_down:
803
.ralt_down:
804
        or      [ctrlstate], 0x20
804
        or      [ctrlstate], 0x20
805
        jmp     .keybar
805
        jmp     .keybar
806
.alt_up:
806
.alt_up:
807
        test    ah, ah
807
        test    ah, ah
808
        jnz     .ralt_up
808
        jnz     .ralt_up
809
        and     [ctrlstate], not 0x10
809
        and     [ctrlstate], not 0x10
810
        jmp     .keybar
810
        jmp     .keybar
811
.ralt_up:
811
.ralt_up:
812
        and     [ctrlstate], not 0x20
812
        and     [ctrlstate], not 0x20
813
        jmp     .keybar
813
        jmp     .keybar
814
 
814
 
815
align 16
815
align 16
816
mouse:
816
mouse:
817
        cmp     dword[active_screen],0
817
        cmp     dword[active_screen],0
818
        jg      event
818
        jg      event
819
        mov     eax,SF_MOUSE_GET
819
        mov     eax,SF_MOUSE_GET
820
        mov     ebx,SSF_BUTTON_EXT
820
        mov     ebx,SSF_BUTTON_EXT
821
        int     0x40
821
        int     0x40
822
        mov     byte[mousestate], 1
822
        mov     byte[mousestate], 1
823
        bt      eax,24 ;left but. double click
823
        bt      eax,24 ;left but. double click
824
        jc      @f
824
        jc      @f
825
        mov     byte[mousestate], 0
825
        mov     byte[mousestate], 0
826
        bt      eax,8 ;left but. down
826
        bt      eax,8 ;left but. down
827
        jc      @f
827
        jc      @f
828
        jmp     event
828
        jmp     event
829
@@:
829
@@:
830
        mov     eax,SF_MOUSE_GET
830
        mov     eax,SF_MOUSE_GET
831
        mov     ebx,SSF_WINDOW_POSITION
831
        mov     ebx,SSF_WINDOW_POSITION
832
        int     0x40
832
        int     0x40
833
        cmp     ax, word[skinh]
833
        cmp     ax, word[skinh]
834
        jl      event
834
        jl      event
835
        sub     ax, word[skinh]
835
        sub     ax, word[skinh]
836
        xor     dx,dx
836
        xor     dx,dx
837
        mov     bx, font_height
837
        mov     bx, font_height
838
        div     bx
838
        div     bx
839
        movzx   edx,ax
839
        movzx   edx,ax
840
        dec     edx ;¢¥àå­ïï à ¬ª 
840
        dec     edx ;¢¥àå­ïï à ¬ª 
841
        dec     edx ;§ £®«®¢ª¨
841
        dec     edx ;§ £®«®¢ª¨
842
        shr     eax,16
842
        shr     eax,16
843
 
843
 
844
        cmp     edx, 0
844
        cmp     edx, 0
845
        jl      .no_ch_pos
845
        jl      .no_ch_pos
846
        mov     ebx, [cur_height]
846
        mov     ebx, [cur_height]
847
        sub     ebx, 3
847
        sub     ebx, 3
848
        cmp     edx, ebx
848
        cmp     edx, ebx
849
        je      .on_panel
849
        je      .on_panel
850
        sub     ebx, 7-3
850
        sub     ebx, 7-3
851
        cmp     edx, ebx
851
        cmp     edx, ebx
852
        jge     .no_ch_pos
852
        jge     .no_ch_pos
853
 
853
 
854
        push    edx eax
854
        push    edx eax
855
        mov     ecx, [cur_width]
855
        mov     ecx, [cur_width]
856
if font_width & 3
856
if font_width & 3
857
        imul    ecx, font_width
857
        imul    ecx, font_width
858
        shr     ecx, 2
858
        shr     ecx, 2
859
else
859
else
860
        imul    ecx, font_width/4
860
        imul    ecx, font_width/4
861
end if
861
end if
862
        xor     dx,dx
862
        xor     dx,dx
863
        sub     ax, 5 ;window border
863
        sub     ax, 5 ;window border
864
        div     cx
864
        div     cx
865
        bt      ax, 0
865
        bt      ax, 0
866
        jnc     @f
866
        jnc     @f
867
        add     [esp+4], ebx ;¥á«¨ 2-© á⮫¡¥æ
867
        add     [esp+4], ebx ;¥á«¨ 2-© á⮫¡¥æ
868
@@:
868
@@:
869
        pop     eax ;edx in stack
869
        pop     eax ;edx in stack
870
        jmp @f
870
        jmp @f
871
.no_ch_pos:
871
.no_ch_pos:
872
        push    -1 ;edx = -1 - no change position
872
        push    -1 ;edx = -1 - no change position
873
@@:
873
@@:
874
 
874
 
875
        mov     ebx, [cur_width]
875
        mov     ebx, [cur_width]
876
        imul    ebx, font_width/2
876
        imul    ebx, font_width/2
877
        add     ebx, 5 ;window border
877
        add     ebx, 5 ;window border
878
        cmp     eax,ebx
878
        cmp     eax,ebx
879
        jg      @f
879
        jg      @f
880
        cmp     [active_panel], panel1
880
        cmp     [active_panel], panel1
881
        je      .move
881
        je      .move
882
        jmp     .tab
882
        jmp     .tab
883
@@:
883
@@:
884
        cmp     [active_panel], panel2
884
        cmp     [active_panel], panel2
885
        je      .move
885
        je      .move
886
.tab:
886
.tab:
887
        xor     [active_panel], panel1 xor panel2
887
        xor     [active_panel], panel1 xor panel2
888
        call    draw_cmdbar
888
        call    draw_cmdbar
889
        mov     ebp, [active_panel]
889
        mov     ebp, [active_panel]
890
        xor     ebp, panel1 xor panel2
890
        xor     ebp, panel1 xor panel2
891
        call    draw_panel
891
        call    draw_panel
892
.move:
892
.move:
893
        mov     ebp, [active_panel]
893
        mov     ebp, [active_panel]
894
        pop     edx
894
        pop     edx
895
        mov     eax, [ebp + PanelData.numfiles]
895
        mov     eax, [ebp + PanelData.numfiles]
896
        add     edx, [ebp + PanelData.start] ;ç¨á«® ¯à®ªàã祭ëå ä ©«®¢
896
        add     edx, [ebp + PanelData.start] ;ç¨á«® ¯à®ªàã祭ëå ä ©«®¢
897
        dec     eax
897
        dec     eax
898
        cmp     edx, eax
898
        cmp     edx, eax
899
        jle     @f
899
        jle     @f
900
        mov     edx, eax
900
        mov     edx, eax
901
@@:
901
@@:
902
        cmp     edx, 0
902
        cmp     edx, 0
903
        jl      @f
903
        jl      @f
904
        mov     [ebp + PanelData.index], edx
904
        mov     [ebp + PanelData.index], edx
905
        cmp     byte[mousestate], 0
905
        cmp     byte[mousestate], 0
906
        je      @f
906
        je      @f
907
        call    panels_OnKey.enter
907
        call    panels_OnKey.enter
908
        jmp     event
908
        jmp     event
909
@@:
909
@@:
910
        call    draw_panel
910
        call    draw_panel
911
        jmp     event
911
        jmp     event
912
align 4
912
align 4
913
.on_panel:
913
.on_panel:
914
        call    get_keybar_ind
914
        call    get_keybar_ind
915
        lea     eax, [panels_mouse+4*eax]
915
        lea     eax, [panels_mouse+4*eax]
916
        cmp     dword[eax], 0
916
        cmp     dword[eax], 0
917
        je      event
917
        je      event
918
        mov     ebp, [active_panel]
918
        mov     ebp, [active_panel]
919
        mov     ecx, [ebp + PanelData.index]
919
        mov     ecx, [ebp + PanelData.index]
920
        call    dword[eax]
920
        call    dword[eax]
921
        jmp     event
921
        jmp     event
922
 
922
 
923
;input:
923
;input:
924
; eax - coord x
924
; eax - coord x
925
;output:
925
;output:
926
; eax - key bar index (0 to 95) if press F1 index = 0
926
; eax - key bar index (0 to 95) if press F1 index = 0
927
align 16
927
align 16
928
get_keybar_ind:
928
get_keybar_ind:
929
        push    ebx ecx edx esi edi
929
        push    ebx ecx edx esi edi
930
        xor     edx, edx
930
        xor     edx, edx
931
        mov     ebx, font_width
931
        mov     ebx, font_width
932
        sub     eax, 5 ;border
932
        sub     eax, 5 ;border
933
        div     ebx
933
        div     ebx
934
        mov     edi, eax
934
        mov     edi, eax
935
 
935
 
936
        xor     esi, esi
936
        xor     esi, esi
937
        test    [ctrlstate], 3
937
        test    [ctrlstate], 3
938
        jz      @f
938
        jz      @f
939
        inc     esi
939
        inc     esi
940
@@:
940
@@:
941
        test    [ctrlstate], 0xC
941
        test    [ctrlstate], 0xC
942
        jz      @f
942
        jz      @f
943
        or      si, 2
943
        or      si, 2
944
@@:
944
@@:
945
        test    [ctrlstate], 0x30
945
        test    [ctrlstate], 0x30
946
        jz      @f
946
        jz      @f
947
        or      si, 4
947
        or      si, 4
948
@@:
948
@@:
949
        imul    esi, 12 ;ç¨á«® ª­®¯®ª F1-F12
949
        imul    esi, 12 ;ç¨á«® ª­®¯®ª F1-F12
950
        xor     ecx, ecx
950
        xor     ecx, ecx
951
        inc     ecx
951
        inc     ecx
952
        mov     ebx, 6
952
        mov     ebx, 6
953
        mov     eax, [cur_width]
953
        mov     eax, [cur_width]
954
        sub     eax, 11+9+3*2+6
954
        sub     eax, 11+9+3*2+6
955
        cmp     eax, 7*11
955
        cmp     eax, 7*11
956
        jl      @f
956
        jl      @f
957
        cdq
957
        cdq
958
        mov     bl, 11
958
        mov     bl, 11
959
        div     ebx
959
        div     ebx
960
        mov     ebx, eax
960
        mov     ebx, eax
961
@@:
961
@@:
962
        xor     edx, edx
962
        xor     edx, edx
963
.l:
963
.l:
964
        add     edx, 7
964
        add     edx, 7
965
        cmp     ecx, 10
965
        cmp     ecx, 10
966
        jb      @f
966
        jb      @f
967
        inc     edx
967
        inc     edx
968
@@:
968
@@:
969
        cmp     edx, edi
969
        cmp     edx, edi
970
        ja      .ret
970
        ja      .ret
971
        cmp     edx, [cur_width]
971
        cmp     edx, [cur_width]
972
        ja      .ret
972
        ja      .ret
973
        cmp     ecx, 12
973
        cmp     ecx, 12
974
        jz      .ret
974
        jz      .ret
975
        lea     edx, [edx+ebx-6]
975
        lea     edx, [edx+ebx-6]
976
        inc     edx
976
        inc     edx
977
        cmp     edx, [cur_width]
977
        cmp     edx, [cur_width]
978
        ja      .ret
978
        ja      .ret
979
        inc     ecx
979
        inc     ecx
980
        jmp     .l
980
        jmp     .l
981
.ret:
981
.ret:
982
        lea     eax, [esi+ecx-1]
982
        lea     eax, [esi+ecx-1]
983
        pop     edi esi edx ecx ebx   
983
        pop     edi esi edx ecx ebx   
984
        ret
984
        ret
985
 
985
 
986
align 4
986
align 4
987
OnMouse_ctrl_f39:
987
OnMouse_ctrl_f3_9:
988
        sub     eax, panels_mouse.ctrl+8
988
        sub     eax, panels_mouse.ctrl+8
989
        shr     eax, 2
989
        shr     eax, 2
990
        add     eax, 0x3D
990
        add     eax, 0x3D
991
        call    panels_OnKey.ctrl_f39
991
        call    panels_OnKey.ctrl_f3_9
-
 
992
        ret
-
 
993
 
-
 
994
align 4
-
 
995
OnMouse_alt_f1_2:
-
 
996
        sub     eax, panels_mouse.alt
-
 
997
        shr     eax, 2
-
 
998
        add     eax, 0x3B
-
 
999
        call    panels_OnKey.alt_f1_2
992
        ret
1000
        ret
993
 
1001
 
994
align 16
1002
align 16
995
process_ctrl_keys:
1003
process_ctrl_keys:
996
        cmp     byte [esi], 0
1004
        cmp     byte [esi], 0
997
        jz      .done
1005
        jz      .done
998
        push    ecx
1006
        push    ecx
999
        cmp     al, [esi]
1007
        cmp     al, [esi]
1000
        jz      .check
1008
        jz      .check
1001
.cont:
1009
.cont:
1002
        pop     ecx
1010
        pop     ecx
1003
        add     esi, 8
1011
        add     esi, 8
1004
        jmp     process_ctrl_keys
1012
        jmp     process_ctrl_keys
1005
.done:
1013
.done:
1006
        stc
1014
        stc
1007
        ret
1015
        ret
1008
.check:
1016
.check:
1009
        mov     cl, 0
1017
        mov     cl, 0
1010
        call    .check_ctrlkey
1018
        call    .check_ctrlkey
1011
        jc      .cont
1019
        jc      .cont
1012
        mov     cl, 2
1020
        mov     cl, 2
1013
        call    .check_ctrlkey
1021
        call    .check_ctrlkey
1014
        jc      .cont
1022
        jc      .cont
1015
        mov     cl, 4
1023
        mov     cl, 4
1016
        call    .check_ctrlkey
1024
        call    .check_ctrlkey
1017
        jc      .cont
1025
        jc      .cont
1018
        pop     ecx
1026
        pop     ecx
1019
        call    dword [esi+4]
1027
        call    dword [esi+4]
1020
        clc
1028
        clc
1021
        ret
1029
        ret
1022
.check_ctrlkey:
1030
.check_ctrlkey:
1023
        push    eax edx
1031
        push    eax edx
1024
        movzx   edx, [ctrlstate]
1032
        movzx   edx, [ctrlstate]
1025
        shr     edx, cl
1033
        shr     edx, cl
1026
        add     cl, cl
1034
        add     cl, cl
1027
        movzx   eax, word [esi+2]
1035
        movzx   eax, word [esi+2]
1028
        shr     eax, cl
1036
        shr     eax, cl
1029
        and     eax, 15
1037
        and     eax, 15
1030
        cmp     al, ctrlkey_tests_num
1038
        cmp     al, ctrlkey_tests_num
1031
        jae     .fail
1039
        jae     .fail
1032
        xchg    eax, edx
1040
        xchg    eax, edx
1033
        and     al, 3
1041
        and     al, 3
1034
        call    [ctrlkey_tests + edx*4]
1042
        call    [ctrlkey_tests + edx*4]
1035
        cmp     al, 1
1043
        cmp     al, 1
1036
        pop     edx eax
1044
        pop     edx eax
1037
        ret
1045
        ret
1038
.fail:
1046
.fail:
1039
        stc
1047
        stc
1040
        pop     edx eax
1048
        pop     edx eax
1041
        ret
1049
        ret
1042
 
1050
 
1043
ctrlkey_test0:
1051
ctrlkey_test0:
1044
        test    al, al
1052
        test    al, al
1045
        setz    al
1053
        setz    al
1046
        ret
1054
        ret
1047
ctrlkey_test1:
1055
ctrlkey_test1:
1048
        test    al, al
1056
        test    al, al
1049
        setnp   al
1057
        setnp   al
1050
        ret
1058
        ret
1051
ctrlkey_test2:
1059
ctrlkey_test2:
1052
        cmp     al, 3
1060
        cmp     al, 3
1053
        setz    al
1061
        setz    al
1054
        ret
1062
        ret
1055
ctrlkey_test3:
1063
ctrlkey_test3:
1056
        cmp     al, 1
1064
        cmp     al, 1
1057
        setz    al
1065
        setz    al
1058
        ret
1066
        ret
1059
ctrlkey_test4:
1067
ctrlkey_test4:
1060
        cmp     al, 2
1068
        cmp     al, 2
1061
        setz    al
1069
        setz    al
1062
        ret
1070
        ret
1063
 
1071
 
1064
enum_associations_callback:
1072
enum_associations_callback:
1065
; LongBool __stdcall callback(f_name,sec_name,key_name,key_value);
1073
; LongBool __stdcall callback(f_name,sec_name,key_name,key_value);
1066
; [esp+4] = f_name, [esp+8] = sec_name, [esp+12] = key_name, [esp+16] = key_value
1074
; [esp+4] = f_name, [esp+8] = sec_name, [esp+12] = key_name, [esp+16] = key_value
1067
        mov     esi, [esp+12]
1075
        mov     esi, [esp+12]
1068
        mov     edi, esi
1076
        mov     edi, esi
1069
@@:
1077
@@:
1070
        lodsb
1078
        lodsb
1071
        test    al, al
1079
        test    al, al
1072
        jnz     @b
1080
        jnz     @b
1073
        sub     esi, edi        ; esi = size of key name
1081
        sub     esi, edi        ; esi = size of key name
1074
        mov     eax, [esp+16]
1082
        mov     eax, [esp+16]
1075
@@:
1083
@@:
1076
        inc     esi
1084
        inc     esi
1077
        inc     eax
1085
        inc     eax
1078
        cmp     byte [eax-1], 0
1086
        cmp     byte [eax-1], 0
1079
        jnz     @b
1087
        jnz     @b
1080
; esi = total size of entry
1088
; esi = total size of entry
1081
        push    esi
1089
        push    esi
1082
        add     esi, [associations_size]
1090
        add     esi, [associations_size]
1083
        mov     ecx, [associations_allocated]
1091
        mov     ecx, [associations_allocated]
1084
@@:
1092
@@:
1085
        cmp     esi, ecx
1093
        cmp     esi, ecx
1086
        jbe     @f
1094
        jbe     @f
1087
        add     ecx, ecx
1095
        add     ecx, ecx
1088
        jmp     @b
1096
        jmp     @b
1089
@@:
1097
@@:
1090
        pop     esi
1098
        pop     esi
1091
        cmp     [associations_allocated], ecx
1099
        cmp     [associations_allocated], ecx
1092
        jz      @f
1100
        jz      @f
1093
        mov     [associations_allocated], ecx
1101
        mov     [associations_allocated], ecx
1094
        mov     edx, [associations]
1102
        mov     edx, [associations]
1095
        call    xpgrealloc
1103
        call    xpgrealloc
1096
        mov     [associations], eax
1104
        mov     [associations], eax
1097
        test    eax, eax
1105
        test    eax, eax
1098
        jz      .err
1106
        jz      .err
1099
@@:
1107
@@:
1100
        mov     eax, esi
1108
        mov     eax, esi
1101
        mov     esi, edi
1109
        mov     esi, edi
1102
        mov     edi, [associations]
1110
        mov     edi, [associations]
1103
        add     edi, [associations_size]
1111
        add     edi, [associations_size]
1104
        dec     edi
1112
        dec     edi
1105
        add     [associations_size], eax
1113
        add     [associations_size], eax
1106
@@:
1114
@@:
1107
        lodsb
1115
        lodsb
1108
        stosb
1116
        stosb
1109
        test    al, al
1117
        test    al, al
1110
        jnz     @b
1118
        jnz     @b
1111
        mov     esi, [esp+16]
1119
        mov     esi, [esp+16]
1112
@@:
1120
@@:
1113
        lodsb
1121
        lodsb
1114
        stosb
1122
        stosb
1115
        test    al, al
1123
        test    al, al
1116
        jnz     @b
1124
        jnz     @b
1117
.ret:
1125
.ret:
1118
        mov     al, 1
1126
        mov     al, 1
1119
        ret     16
1127
        ret     16
1120
.err:
1128
.err:
1121
        mov     ecx, edx
1129
        mov     ecx, edx
1122
        call    pgfree
1130
        call    pgfree
1123
        xor     eax, eax
1131
        xor     eax, eax
1124
        ret     16
1132
        ret     16
1125
 
1133
 
1126
align 4
1134
align 4
1127
enum_plugins_callback:
1135
enum_plugins_callback:
1128
; LongBool __stdcall callback(f_name,sec_name,key_name,key_value);
1136
; LongBool __stdcall callback(f_name,sec_name,key_name,key_value);
1129
; [esp+4] = f_name, [esp+8] = sec_name, [esp+12] = key_name, [esp+16] = key_value
1137
; [esp+4] = f_name, [esp+8] = sec_name, [esp+12] = key_name, [esp+16] = key_value
1130
        mov     esi, [esp+16]
1138
        mov     esi, [esp+16]
1131
        cmp     byte [esi], '/'
1139
        cmp     byte [esi], '/'
1132
        jz      .absolute
1140
        jz      .absolute
1133
; convert path to absolute
1141
; convert path to absolute
1134
        mov     edi, execdata
1142
        mov     edi, execdata
1135
@@:
1143
@@:
1136
        cmp     edi, execdata+1024
1144
        cmp     edi, execdata+1024
1137
        jae     .overflow
1145
        jae     .overflow
1138
        lodsb
1146
        lodsb
1139
        stosb
1147
        stosb
1140
        test    al, al
1148
        test    al, al
1141
        jnz     @b
1149
        jnz     @b
1142
        mov     edi, saved_file_name
1150
        mov     edi, saved_file_name
1143
        mov     [esp+16], edi
1151
        mov     [esp+16], edi
1144
        mov     esi, app_path
1152
        mov     esi, app_path
1145
        push    esi
1153
        push    esi
1146
        xor     ecx, ecx
1154
        xor     ecx, ecx
1147
@@:
1155
@@:
1148
        lodsb
1156
        lodsb
1149
        test    al, al
1157
        test    al, al
1150
        jz      @f
1158
        jz      @f
1151
        cmp     al, '/'
1159
        cmp     al, '/'
1152
        jnz     @b
1160
        jnz     @b
1153
        mov     ecx, esi
1161
        mov     ecx, esi
1154
        jmp     @b
1162
        jmp     @b
1155
@@:
1163
@@:
1156
        pop     esi
1164
        pop     esi
1157
        sub     ecx, esi
1165
        sub     ecx, esi
1158
        push    edi
1166
        push    edi
1159
        add     edi, ecx
1167
        add     edi, ecx
1160
        cmp     edi, saved_file_name+1024
1168
        cmp     edi, saved_file_name+1024
1161
        pop     edi
1169
        pop     edi
1162
        ja      .overflow
1170
        ja      .overflow
1163
        rep     movsb
1171
        rep     movsb
1164
        mov     esi, execdata
1172
        mov     esi, execdata
1165
.z:
1173
.z:
1166
        cmp     word [esi], '.'
1174
        cmp     word [esi], '.'
1167
        jz      .ret
1175
        jz      .ret
1168
        cmp     word [esi], './'
1176
        cmp     word [esi], './'
1169
        jnz     @f
1177
        jnz     @f
1170
        add     esi, 2
1178
        add     esi, 2
1171
        jmp     .z
1179
        jmp     .z
1172
@@:
1180
@@:
1173
        cmp     word [esi], '..'
1181
        cmp     word [esi], '..'
1174
        jnz     .c
1182
        jnz     .c
1175
        cmp     byte [esi+2], 0
1183
        cmp     byte [esi+2], 0
1176
        jz      .ret
1184
        jz      .ret
1177
        cmp     byte [esi+2], '/'
1185
        cmp     byte [esi+2], '/'
1178
        jnz     .c
1186
        jnz     .c
1179
        add     esi, 3
1187
        add     esi, 3
1180
@@:
1188
@@:
1181
        dec     edi
1189
        dec     edi
1182
        cmp     edi, saved_file_name
1190
        cmp     edi, saved_file_name
1183
        jbe     .ret
1191
        jbe     .ret
1184
        cmp     byte [edi-1], '/'
1192
        cmp     byte [edi-1], '/'
1185
        jnz     @b
1193
        jnz     @b
1186
        jmp     .z
1194
        jmp     .z
1187
.c:
1195
.c:
1188
        cmp     edi, saved_file_name+1024
1196
        cmp     edi, saved_file_name+1024
1189
        jae     .overflow
1197
        jae     .overflow
1190
        lodsb
1198
        lodsb
1191
        stosb
1199
        stosb
1192
        test    al, al
1200
        test    al, al
1193
        jnz     .c
1201
        jnz     .c
1194
        jmp     .absolute
1202
        jmp     .absolute
1195
.overflow:
1203
.overflow:
1196
        mov     esi, execdata
1204
        mov     esi, execdata
1197
        mov     byte [esi+1023], 0
1205
        mov     byte [esi+1023], 0
1198
        call    load_dll_and_import.big
1206
        call    load_dll_and_import.big
1199
.ret:
1207
.ret:
1200
        mov     al, 1
1208
        mov     al, 1
1201
        ret     16
1209
        ret     16
1202
.absolute:
1210
.absolute:
1203
; allocate space for plugin info
1211
; allocate space for plugin info
1204
        mov     eax, [num_plugins]
1212
        mov     eax, [num_plugins]
1205
        inc     eax
1213
        inc     eax
1206
        mov     [num_plugins], eax
1214
        mov     [num_plugins], eax
1207
        imul    ecx, eax, PluginInfo.size
1215
        imul    ecx, eax, PluginInfo.size
1208
        cmp     ecx, [alloc_plugins]
1216
        cmp     ecx, [alloc_plugins]
1209
        jbe     .norealloc
1217
        jbe     .norealloc
1210
        mov     edx, [plugins]
1218
        mov     edx, [plugins]
1211
        call    xpgrealloc
1219
        call    xpgrealloc
1212
        test    eax, eax
1220
        test    eax, eax
1213
        jnz     @f
1221
        jnz     @f
1214
.dec_ret:
1222
.dec_ret:
1215
        dec     [num_plugins]
1223
        dec     [num_plugins]
1216
        jmp     .ret
1224
        jmp     .ret
1217
@@:
1225
@@:
1218
        mov     [plugins], eax
1226
        mov     [plugins], eax
1219
        lea     eax, [ecx+0xFFF]
1227
        lea     eax, [ecx+0xFFF]
1220
        and     eax, not 0xFFF
1228
        and     eax, not 0xFFF
1221
        mov     [alloc_plugins], eax
1229
        mov     [alloc_plugins], eax
1222
.norealloc:
1230
.norealloc:
1223
        mov     esi, [plugins]
1231
        mov     esi, [plugins]
1224
        lea     esi, [esi+ecx-PluginInfo.size]
1232
        lea     esi, [esi+ecx-PluginInfo.size]
1225
; load plugin DLL
1233
; load plugin DLL
1226
        or      ebp, -1
1234
        or      ebp, -1
1227
        mov     eax, [esp+16]
1235
        mov     eax, [esp+16]
1228
        call    load_dll_and_import.do
1236
        call    load_dll_and_import.do
1229
        test    eax, eax
1237
        test    eax, eax
1230
        jnz     .dec_ret
1238
        jnz     .dec_ret
1231
; find exported functions
1239
; find exported functions
1232
        mov     eax, aVersion
1240
        mov     eax, aVersion
1233
        call    load_dll_and_import.find_exported_function
1241
        call    load_dll_and_import.find_exported_function
1234
        jnc     @f
1242
        jnc     @f
1235
        xor     eax, eax
1243
        xor     eax, eax
1236
@@:
1244
@@:
1237
MIN_INTERFACE_VER = 3
1245
MIN_INTERFACE_VER = 3
1238
MAX_INTERFACE_VER = 3
1246
MAX_INTERFACE_VER = 3
1239
        cmp     eax, MIN_INTERFACE_VER
1247
        cmp     eax, MIN_INTERFACE_VER
1240
        jb      @f
1248
        jb      @f
1241
        cmp     eax, MAX_INTERFACE_VER
1249
        cmp     eax, MAX_INTERFACE_VER
1242
        jbe     .version_ok
1250
        jbe     .version_ok
1243
@@:
1251
@@:
1244
        push    aIncompatibleVersion
1252
        push    aIncompatibleVersion
1245
.cantload:
1253
.cantload:
1246
        push    dword [esp+4+16]
1254
        push    dword [esp+4+16]
1247
        push    aCannotLoadPlugin
1255
        push    aCannotLoadPlugin
1248
        mov     eax, esp
1256
        mov     eax, esp
1249
        push    ContinueBtn
1257
        push    ContinueBtn
1250
        push    1
1258
        push    1
1251
        push    eax
1259
        push    eax
1252
        push    3
1260
        push    3
1253
        call    SayErr
1261
        call    SayErr
1254
        add     esp, 12
1262
        add     esp, 12
1255
        jmp     .dec_ret
1263
        jmp     .dec_ret
1256
.version_ok:
1264
.version_ok:
1257
        mov     edi, esi
1265
        mov     edi, esi
1258
        mov     esi, plugin_exported
1266
        mov     esi, plugin_exported
1259
.import:
1267
.import:
1260
        lodsd
1268
        lodsd
1261
        test    eax, eax
1269
        test    eax, eax
1262
        jz      .import_done
1270
        jz      .import_done
1263
        call    load_dll_and_import.find_exported_function
1271
        call    load_dll_and_import.find_exported_function
1264
        jnc     @f
1272
        jnc     @f
1265
        mov     eax, [esi-4+plugin_exported_default-plugin_exported]
1273
        mov     eax, [esi-4+plugin_exported_default-plugin_exported]
1266
@@:
1274
@@:
1267
        stosd
1275
        stosd
1268
        jmp     .import
1276
        jmp     .import
1269
.import_done:
1277
.import_done:
1270
; initialize plugin
1278
; initialize plugin
1271
        mov     eax, aPluginLoad
1279
        mov     eax, aPluginLoad
1272
        call    load_dll_and_import.find_exported_function
1280
        call    load_dll_and_import.find_exported_function
1273
        jc      .ok
1281
        jc      .ok
1274
        push    kfar_info
1282
        push    kfar_info
1275
        call    eax
1283
        call    eax
1276
        cmp     eax, 1
1284
        cmp     eax, 1
1277
        jb      .ok
1285
        jb      .ok
1278
        ja      .dec_ret
1286
        ja      .dec_ret
1279
        push    aInitFailed
1287
        push    aInitFailed
1280
        jmp     .cantload
1288
        jmp     .cantload
1281
.ok:
1289
.ok:
1282
        mov     al, 1
1290
        mov     al, 1
1283
        ret     16
1291
        ret     16
1284
 
1292
 
1285
plugin_unload_default:
1293
plugin_unload_default:
1286
        ret
1294
        ret
1287
 
1295
 
1288
OpenFilePlugin_default:
1296
OpenFilePlugin_default:
1289
        xor     eax, eax
1297
        xor     eax, eax
1290
        ret     28
1298
        ret     28
1291
GetFiles_default:
1299
GetFiles_default:
1292
        xor     eax, eax
1300
        xor     eax, eax
1293
        ret     20
1301
        ret     20
1294
 
1302
 
1295
ClosePlugin_default:
1303
ClosePlugin_default:
1296
        ret     4
1304
        ret     4
1297
 
1305
 
1298
GetOpenPluginInfo_default:
1306
GetOpenPluginInfo_default:
1299
        ret     8
1307
        ret     8
1300
 
1308
 
1301
SetFolder_default:
1309
SetFolder_default:
1302
open_default:
1310
open_default:
1303
        xor     eax, eax
1311
        xor     eax, eax
1304
        ret     12
1312
        ret     12
1305
 
1313
 
1306
new_screen:
1314
new_screen:
1307
; in: ecx=sizeof(screen data), edx->vtable
1315
; in: ecx=sizeof(screen data), edx->vtable
1308
; out: ebp=pointer or NULL, eax!=0 if successful
1316
; out: ebp=pointer or NULL, eax!=0 if successful
1309
; destroys ebx,ecx
1317
; destroys ebx,ecx
1310
        call    xpgalloc
1318
        call    xpgalloc
1311
        test    eax, eax
1319
        test    eax, eax
1312
        jnz     @f
1320
        jnz     @f
1313
        ret
1321
        ret
1314
@@:
1322
@@:
1315
        mov     ebp, eax
1323
        mov     ebp, eax
1316
        mov     eax, [screens]
1324
        mov     eax, [screens]
1317
        mov     ecx, [num_screens]
1325
        mov     ecx, [num_screens]
1318
        inc     ecx
1326
        inc     ecx
1319
        shl     ecx, 3
1327
        shl     ecx, 3
1320
        test    ecx, 0xFFF
1328
        test    ecx, 0xFFF
1321
        jnz     .norealloc
1329
        jnz     .norealloc
1322
        push    edx
1330
        push    edx
1323
        mov     edx, eax
1331
        mov     edx, eax
1324
        call    xpgrealloc
1332
        call    xpgrealloc
1325
        pop     edx
1333
        pop     edx
1326
        test    eax, eax
1334
        test    eax, eax
1327
        jnz     @f
1335
        jnz     @f
1328
        mov     ecx, ebp
1336
        mov     ecx, ebp
1329
        call    pgfree
1337
        call    pgfree
1330
        xor     eax, eax
1338
        xor     eax, eax
1331
        ret
1339
        ret
1332
@@:
1340
@@:
1333
        mov     [screens], eax
1341
        mov     [screens], eax
1334
.norealloc:
1342
.norealloc:
1335
        inc     [num_screens]
1343
        inc     [num_screens]
1336
        mov     [eax+ecx-8], edx
1344
        mov     [eax+ecx-8], edx
1337
        mov     [eax+ecx-4], ebp
1345
        mov     [eax+ecx-4], ebp
1338
        mov     eax, [num_screens]
1346
        mov     eax, [num_screens]
1339
        dec     eax
1347
        dec     eax
1340
        mov     [active_screen], eax
1348
        mov     [active_screen], eax
1341
        mov     [active_screen_vtable], edx
1349
        mov     [active_screen_vtable], edx
1342
        mov     [active_screen_data], ebp
1350
        mov     [active_screen_data], ebp
1343
        or      [idle_interval], -1
1351
        or      [idle_interval], -1
1344
        mov     edx, [edx+screen_vtable.keybar]
1352
        mov     edx, [edx+screen_vtable.keybar]
1345
        test    edx, edx
1353
        test    edx, edx
1346
        jz      @f
1354
        jz      @f
1347
        mov     [active_screen_keybar], edx
1355
        mov     [active_screen_keybar], edx
1348
@@:
1356
@@:
1349
        jmp     draw_keybar
1357
        jmp     draw_keybar
1350
 
1358
 
1351
next_screen:
1359
next_screen:
1352
        mov     eax, [active_screen]
1360
        mov     eax, [active_screen]
1353
        inc     eax
1361
        inc     eax
1354
        cmp     eax, [num_screens]
1362
        cmp     eax, [num_screens]
1355
        jnz     @f
1363
        jnz     @f
1356
        xor     eax, eax
1364
        xor     eax, eax
1357
@@:     mov     [active_screen], eax
1365
@@:     mov     [active_screen], eax
1358
        jmp     change_screen
1366
        jmp     change_screen
1359
 
1367
 
1360
delete_active_screen:
1368
delete_active_screen:
1361
        mov     edi, [screens]
1369
        mov     edi, [screens]
1362
        mov     eax, [active_screen]
1370
        mov     eax, [active_screen]
1363
        shl     eax, 3
1371
        shl     eax, 3
1364
        add     edi, eax
1372
        add     edi, eax
1365
        push    dword [edi+4]
1373
        push    dword [edi+4]
1366
        lea     esi, [edi+8]
1374
        lea     esi, [edi+8]
1367
        mov     ecx, [num_screens]
1375
        mov     ecx, [num_screens]
1368
        sub     ecx, [active_screen]
1376
        sub     ecx, [active_screen]
1369
        dec     ecx
1377
        dec     ecx
1370
        add     ecx, ecx
1378
        add     ecx, ecx
1371
        rep     movsd
1379
        rep     movsd
1372
        dec     [num_screens]
1380
        dec     [num_screens]
1373
        mov     ecx, [num_screens]
1381
        mov     ecx, [num_screens]
1374
        shl     ecx, 3
1382
        shl     ecx, 3
1375
        test    ecx, 0xFFF
1383
        test    ecx, 0xFFF
1376
        jnz     .norealloc
1384
        jnz     .norealloc
1377
        mov     edx, [screens]
1385
        mov     edx, [screens]
1378
        call    pgrealloc               ; must succeed, because we decrease size
1386
        call    pgrealloc               ; must succeed, because we decrease size
1379
        mov     [screens], eax
1387
        mov     [screens], eax
1380
.norealloc:
1388
.norealloc:
1381
        pop     ecx
1389
        pop     ecx
1382
        call    pgfree
1390
        call    pgfree
1383
        dec     [active_screen]
1391
        dec     [active_screen]
1384
 
1392
 
1385
change_screen:
1393
change_screen:
1386
        pusha
1394
        pusha
1387
        or      [idle_interval], -1
1395
        or      [idle_interval], -1
1388
        mov     eax, [active_screen]
1396
        mov     eax, [active_screen]
1389
        mov     esi, [screens]
1397
        mov     esi, [screens]
1390
        mov     ebp, [esi+eax*8+4]
1398
        mov     ebp, [esi+eax*8+4]
1391
        mov     eax, [esi+eax*8]
1399
        mov     eax, [esi+eax*8]
1392
        push    eax ebp
1400
        push    eax ebp
1393
        mov     eax, [eax+screen_vtable.OnActivate]
1401
        mov     eax, [eax+screen_vtable.OnActivate]
1394
        test    eax, eax
1402
        test    eax, eax
1395
        jz      @f
1403
        jz      @f
1396
        call    eax
1404
        call    eax
1397
@@:
1405
@@:
1398
        pop     ebp eax
1406
        pop     ebp eax
1399
        mov     [active_screen_vtable], eax
1407
        mov     [active_screen_vtable], eax
1400
        mov     [active_screen_data], ebp
1408
        mov     [active_screen_data], ebp
1401
        mov     edx, [eax+screen_vtable.keybar]
1409
        mov     edx, [eax+screen_vtable.keybar]
1402
        test    edx, edx
1410
        test    edx, edx
1403
        jz      @f
1411
        jz      @f
1404
        mov     [active_screen_keybar], edx
1412
        mov     [active_screen_keybar], edx
1405
@@:
1413
@@:
1406
        call    draw_keybar
1414
        call    draw_keybar
1407
        mov     [cursor_size], cursor_normal_size
1415
        mov     [cursor_size], cursor_normal_size
1408
        call    [eax+screen_vtable.OnRedraw]
1416
        call    [eax+screen_vtable.OnRedraw]
1409
        popa
1417
        popa
1410
        ret
1418
        ret
1411
 
1419
 
1412
F12:
1420
F12:
1413
        mov     eax, [cur_width]
1421
        mov     eax, [cur_width]
1414
        add     eax, 8
1422
        add     eax, 8
1415
        mov     esi, eax
1423
        mov     esi, eax
1416
        mul     [num_screens]
1424
        mul     [num_screens]
1417
        mov     ecx, eax
1425
        mov     ecx, eax
1418
        call    xpgalloc
1426
        call    xpgalloc
1419
        test    eax, eax
1427
        test    eax, eax
1420
        jnz     @f
1428
        jnz     @f
1421
        ret
1429
        ret
1422
@@:
1430
@@:
1423
        mov     ebx, eax
1431
        mov     ebx, eax
1424
        mov     edi, eax
1432
        mov     edi, eax
1425
        xor     ecx, ecx
1433
        xor     ecx, ecx
1426
.next:
1434
.next:
1427
        xor     eax, eax
1435
        xor     eax, eax
1428
        stosd
1436
        stosd
1429
        inc     ecx
1437
        inc     ecx
1430
        cmp     ecx, [num_screens]
1438
        cmp     ecx, [num_screens]
1431
        jz      @f
1439
        jz      @f
1432
        lea     eax, [edi+esi-4]
1440
        lea     eax, [edi+esi-4]
1433
        mov     dword [edi-4], eax
1441
        mov     dword [edi-4], eax
1434
@@:
1442
@@:
1435
        xor     eax, eax
1443
        xor     eax, eax
1436
        stosd
1444
        stosd
1437
        dec     ecx
1445
        dec     ecx
1438
        jz      @f
1446
        jz      @f
1439
        lea     eax, [edi-8]
1447
        lea     eax, [edi-8]
1440
        sub     eax, esi
1448
        sub     eax, esi
1441
        mov     dword [edi-4], eax
1449
        mov     dword [edi-4], eax
1442
@@:
1450
@@:
1443
        mov     al, '&'
1451
        mov     al, '&'
1444
        stosb
1452
        stosb
1445
        cmp     ecx, 36
1453
        cmp     ecx, 36
1446
        jae     .noletter
1454
        jae     .noletter
1447
        lea     eax, [ecx+'0']
1455
        lea     eax, [ecx+'0']
1448
        cmp     al, '9'
1456
        cmp     al, '9'
1449
        jbe     @f
1457
        jbe     @f
1450
        add     al, 7
1458
        add     al, 7
1451
@@:
1459
@@:
1452
        stosb
1460
        stosb
1453
        mov     al, '.'
1461
        mov     al, '.'
1454
        stosb
1462
        stosb
1455
        jmp     .letter_done
1463
        jmp     .letter_done
1456
.noletter:
1464
.noletter:
1457
        mov     al, ' '
1465
        mov     al, ' '
1458
        stosb
1466
        stosb
1459
        stosb
1467
        stosb
1460
.letter_done:
1468
.letter_done:
1461
        mov     al, ' '
1469
        mov     al, ' '
1462
        stosb
1470
        stosb
1463
        pushad
1471
        pushad
1464
        mov     eax, [screens]
1472
        mov     eax, [screens]
1465
        mov     ebp, [eax+ecx*8+4]
1473
        mov     ebp, [eax+ecx*8+4]
1466
        mov     eax, [eax+ecx*8]
1474
        mov     eax, [eax+ecx*8]
1467
        mov     ecx, [cur_width]
1475
        mov     ecx, [cur_width]
1468
        sub     ecx, 12
1476
        sub     ecx, 12
1469
        call    [eax + screen_vtable.getname]
1477
        call    [eax + screen_vtable.getname]
1470
        popad
1478
        popad
1471
        sub     edi, 4
1479
        sub     edi, 4
1472
        add     edi, [cur_width]
1480
        add     edi, [cur_width]
1473
        inc     ecx
1481
        inc     ecx
1474
        cmp     ecx, [num_screens]
1482
        cmp     ecx, [num_screens]
1475
        jb      .next
1483
        jb      .next
1476
        mov     eax, [active_screen]
1484
        mov     eax, [active_screen]
1477
        mul     esi
1485
        mul     esi
1478
        add     eax, ebx
1486
        add     eax, ebx
1479
        push    1
1487
        push    1
1480
        push    dword aScreens
1488
        push    dword aScreens
1481
        push    eax
1489
        push    eax
1482
        call    menu
1490
        call    menu
1483
        cmp     eax, -1
1491
        cmp     eax, -1
1484
        jz      @f
1492
        jz      @f
1485
        sub     eax, ebx
1493
        sub     eax, ebx
1486
        div     esi
1494
        div     esi
1487
        mov     [active_screen], eax
1495
        mov     [active_screen], eax
1488
@@:
1496
@@:
1489
        mov     ecx, ebx
1497
        mov     ecx, ebx
1490
        call    pgfree
1498
        call    pgfree
1491
        jmp     change_screen
1499
        jmp     change_screen
1492
 
1500
 
1493
panels_OnKey:
1501
panels_OnKey:
1494
; restore screen hidden by quick search box
1502
; restore screen hidden by quick search box
1495
        cmp     [bDisplayQuickSearch], 0
1503
        cmp     [bDisplayQuickSearch], 0
1496
        jz      @f
1504
        jz      @f
1497
        mov     [bDisplayQuickSearch], 0
1505
        mov     [bDisplayQuickSearch], 0
1498
        push    0
1506
        push    0
1499
        push    QuickSearchDlg
1507
        push    QuickSearchDlg
1500
        call    HideDialogBox
1508
        call    HideDialogBox
1501
@@:
1509
@@:
1502
        mov     ebp, [active_panel]
1510
        mov     ebp, [active_panel]
1503
        mov     ecx, [ebp + PanelData.index]
1511
        mov     ecx, [ebp + PanelData.index]
1504
        mov     edx, [ebp + PanelData.start]
1512
        mov     edx, [ebp + PanelData.start]
1505
        mov     ebx, [ebp + PanelData.colst]
1513
        mov     ebx, [ebp + PanelData.colst]
1506
        add     ebx, edx
1514
        add     ebx, edx
1507
        mov     esi, panels_ctrlkeys
1515
        mov     esi, panels_ctrlkeys
1508
        call    process_ctrl_keys
1516
        call    process_ctrl_keys
1509
        jc      .nostdkey
1517
        jc      .nostdkey
1510
        mov     [bQuickSearchMode], 0
1518
        mov     [bQuickSearchMode], 0
1511
        ret
1519
        ret
1512
.leaveqsmode:
1520
.leaveqsmode:
1513
        mov     [bQuickSearchMode], 0
1521
        mov     [bQuickSearchMode], 0
1514
        call    draw_image
1522
        call    draw_image
1515
        ret
1523
        ret
1516
.keepqsmode:
1524
.keepqsmode:
1517
        push    QuickSearchDlg
1525
        push    QuickSearchDlg
1518
        call    ShowDialogBox
1526
        call    ShowDialogBox
1519
        mov     [bDisplayQuickSearch], 1
1527
        mov     [bDisplayQuickSearch], 1
1520
        ret
1528
        ret
1521
.nostdkey:
1529
.nostdkey:
1522
        cmp     [bQuickSearchMode], 0
1530
        cmp     [bQuickSearchMode], 0
1523
        jz      .noqsmode
1531
        jz      .noqsmode
1524
        test    al, al
1532
        test    al, al
1525
        js      .keepqsmode
1533
        js      .keepqsmode
1526
        cmp     al, 40h
1534
        cmp     al, 40h
1527
        jae     .leaveqsmode
1535
        jae     .leaveqsmode
1528
        cmp     al, 0Eh
1536
        cmp     al, 0Eh
1529
        jz      .qsbackspace
1537
        jz      .qsbackspace
1530
        cmp     al, 1Ch
1538
        cmp     al, 1Ch
1531
        jz      .test_enter
1539
        jz      .test_enter
1532
        movzx   eax, al
1540
        movzx   eax, al
1533
        cmp     byte [scan2ascii+eax], 0
1541
        cmp     byte [scan2ascii+eax], 0
1534
        jz      .leaveqsmode
1542
        jz      .leaveqsmode
1535
        call    get_ascii_char
1543
        call    get_ascii_char
1536
        mov     ecx, dword [quick_search_buf + 4]
1544
        mov     ecx, dword [quick_search_buf + 4]
1537
        cmp     ecx, quicksearch_maxlen
1545
        cmp     ecx, quicksearch_maxlen
1538
        jae     .keepqsmode
1546
        jae     .keepqsmode
1539
        mov     byte [quick_search_buf + 12 + ecx], al
1547
        mov     byte [quick_search_buf + 12 + ecx], al
1540
        mov     byte [quick_search_buf + 12 + ecx + 1], 0
1548
        mov     byte [quick_search_buf + 12 + ecx + 1], 0
1541
        push    ecx
1549
        push    ecx
1542
        call    quick_find
1550
        call    quick_find
1543
        pop     ecx
1551
        pop     ecx
1544
        jnc     @f
1552
        jnc     @f
1545
        mov     byte [quick_search_buf + 12 + ecx], 0
1553
        mov     byte [quick_search_buf + 12 + ecx], 0
1546
        jmp     .keepqsmode
1554
        jmp     .keepqsmode
1547
@@:
1555
@@:
1548
        inc     dword [quick_search_buf + 4]
1556
        inc     dword [quick_search_buf + 4]
1549
        sub     ecx, 16
1557
        sub     ecx, 16
1550
        jae     @f
1558
        jae     @f
1551
        xor     ecx, ecx
1559
        xor     ecx, ecx
1552
@@:
1560
@@:
1553
        mov     dword [quick_search_buf + 8], ecx
1561
        mov     dword [quick_search_buf + 8], ecx
1554
        jmp     .keepqsmode
1562
        jmp     .keepqsmode
1555
.qsbackspace:
1563
.qsbackspace:
1556
        mov     ecx, dword [quick_search_buf + 4]
1564
        mov     ecx, dword [quick_search_buf + 4]
1557
        jecxz   .keepqsmode2
1565
        jecxz   .keepqsmode2
1558
        dec     ecx
1566
        dec     ecx
1559
        mov     byte [quick_search_buf + 12 + ecx], 0
1567
        mov     byte [quick_search_buf + 12 + ecx], 0
1560
        dec     dword [quick_search_buf + 4]
1568
        dec     dword [quick_search_buf + 4]
1561
.keepqsmode2:
1569
.keepqsmode2:
1562
        jmp     .keepqsmode
1570
        jmp     .keepqsmode
1563
.test_enter:
1571
.test_enter:
1564
        test    [ctrlstate], 0Ch        ; LCtrl or RCtrl pressed?
1572
        test    [ctrlstate], 0Ch        ; LCtrl or RCtrl pressed?
1565
        jz      .keepqsmode2
1573
        jz      .keepqsmode2
1566
        test    [ctrlstate], 3          ; Shift pressed?
1574
        test    [ctrlstate], 3          ; Shift pressed?
1567
        jnz     @f
1575
        jnz     @f
1568
        call    quick_find_next
1576
        call    quick_find_next
1569
        jmp     .keepqsmode2
1577
        jmp     .keepqsmode2
1570
@@:
1578
@@:
1571
        call    quick_find_prev
1579
        call    quick_find_prev
1572
        jmp     .keepqsmode2
1580
        jmp     .keepqsmode2
1573
.noqsmode:
1581
.noqsmode:
1574
; handle Alt+ combinations for quick search
1582
; handle Alt+ combinations for quick search
1575
        test    [ctrlstate], 30h        ; LAlt or RAlt pressed?
1583
        test    [ctrlstate], 30h        ; LAlt or RAlt pressed?
1576
        jz      .noalt                  ; no => skip
1584
        jz      .noalt                  ; no => skip
1577
        test    [ctrlstate], 0Ch        ; LCtrl or RCtrl pressed?
1585
        test    [ctrlstate], 0Ch        ; LCtrl or RCtrl pressed?
1578
        jnz     .noalt                  ; yes => skip
1586
        jnz     .noalt                  ; yes => skip
1579
        cmp     al, 40h
1587
        cmp     al, 40h
1580
        jae     .noalt
1588
        jae     .noalt
1581
        movzx   eax, al
1589
        movzx   eax, al
1582
        cmp     byte [scan2ascii+eax], 0
1590
        cmp     byte [scan2ascii+eax], 0
1583
        jz      .noalt
1591
        jz      .noalt
1584
        call    get_ascii_char
1592
        call    get_ascii_char
1585
        mov     edi, quick_search_buf + 12
1593
        mov     edi, quick_search_buf + 12
1586
        mov     dword [edi-12], quicksearch_maxlen-1
1594
        mov     dword [edi-12], quicksearch_maxlen-1
1587
        mov     dword [edi-8], 1
1595
        mov     dword [edi-8], 1
1588
        and     dword [edi-4], 0
1596
        and     dword [edi-4], 0
1589
        stosb
1597
        stosb
1590
        mov     byte [edi], 0
1598
        mov     byte [edi], 0
1591
        call    quick_find
1599
        call    quick_find
1592
        jnc     @f
1600
        jnc     @f
1593
        mov     byte [quick_search_buf + 12], 0
1601
        mov     byte [quick_search_buf + 12], 0
1594
        and     dword [quick_search_buf + 4], 0
1602
        and     dword [quick_search_buf + 4], 0
1595
@@:
1603
@@:
1596
        mov     ebx, QuickSearchDlg
1604
        mov     ebx, QuickSearchDlg
1597
        mov     eax, [ebp + PanelData.left]
1605
        mov     eax, [ebp + PanelData.left]
1598
        add     eax, 10
1606
        add     eax, 10
1599
        mov     edx, [cur_width]
1607
        mov     edx, [cur_width]
1600
        sub     edx, 21
1608
        sub     edx, 21
1601
        cmp     eax, edx
1609
        cmp     eax, edx
1602
        jb      @f
1610
        jb      @f
1603
        mov     eax, edx
1611
        mov     eax, edx
1604
@@:
1612
@@:
1605
        mov     [ebx + dlgtemplate.x], eax
1613
        mov     [ebx + dlgtemplate.x], eax
1606
        mov     eax, [ebp + PanelData.top]
1614
        mov     eax, [ebp + PanelData.top]
1607
        add     eax, [ebp + PanelData.height]
1615
        add     eax, [ebp + PanelData.height]
1608
        mov     edx, [cur_height]
1616
        mov     edx, [cur_height]
1609
        sub     edx, 2
1617
        sub     edx, 2
1610
        cmp     eax, edx
1618
        cmp     eax, edx
1611
        jb      @f
1619
        jb      @f
1612
        mov     eax, edx
1620
        mov     eax, edx
1613
@@:
1621
@@:
1614
        mov     [ebx + dlgtemplate.y], eax
1622
        mov     [ebx + dlgtemplate.y], eax
1615
        push    ebx
1623
        push    ebx
1616
        call    ShowDialogBox
1624
        call    ShowDialogBox
1617
        mov     [bQuickSearchMode], 1
1625
        mov     [bQuickSearchMode], 1
1618
        mov     [bDisplayQuickSearch], 1
1626
        mov     [bDisplayQuickSearch], 1
1619
.find_letter_done:
1627
.find_letter_done:
1620
.noalt:
1628
.noalt:
1621
.ret:
1629
.ret:
1622
        ret
1630
        ret
1623
.up:
1631
.up:
1624
        jecxz   .ret
1632
        jecxz   .ret
1625
        dec     ecx
1633
        dec     ecx
1626
        mov     [ebp + PanelData.index], ecx
1634
        mov     [ebp + PanelData.index], ecx
1627
        cmp     ecx, edx
1635
        cmp     ecx, edx
1628
        jae     .done_redraw
1636
        jae     .done_redraw
1629
        mov     [ebp + PanelData.start], ecx
1637
        mov     [ebp + PanelData.start], ecx
1630
.done_redraw:
1638
.done_redraw:
1631
;        call    draw_panel
1639
;        call    draw_panel
1632
;        ret
1640
;        ret
1633
        jmp     draw_panel
1641
        jmp     draw_panel
1634
.insert:
1642
.insert:
1635
        lea     eax, [ecx*4]
1643
        lea     eax, [ecx*4]
1636
        add     eax, [ebp + PanelData.files]
1644
        add     eax, [ebp + PanelData.files]
1637
        mov     eax, [eax]
1645
        mov     eax, [eax]
1638
        cmp     word [eax+40], '..'
1646
        cmp     word [eax+40], '..'
1639
        jnz     @f
1647
        jnz     @f
1640
        cmp     byte [eax+42], 0
1648
        cmp     byte [eax+42], 0
1641
        jz      .insert.down
1649
        jz      .insert.down
1642
@@:
1650
@@:
1643
        xor     byte [eax+303], 1
1651
        xor     byte [eax+303], 1
1644
        mov     edx, [eax+32]
1652
        mov     edx, [eax+32]
1645
        test    byte [eax+303], 1
1653
        test    byte [eax+303], 1
1646
        mov     eax, [eax+36]
1654
        mov     eax, [eax+36]
1647
        jnz     .insert.increase
1655
        jnz     .insert.increase
1648
        sub     dword [ebp + PanelData.selected_size], edx
1656
        sub     dword [ebp + PanelData.selected_size], edx
1649
        sbb     dword [ebp + PanelData.selected_size+4], eax
1657
        sbb     dword [ebp + PanelData.selected_size+4], eax
1650
        dec     [ebp + PanelData.selected_num]
1658
        dec     [ebp + PanelData.selected_num]
1651
        jmp     .insert.down
1659
        jmp     .insert.down
1652
.insert.increase:
1660
.insert.increase:
1653
        add     dword [ebp + PanelData.selected_size], edx
1661
        add     dword [ebp + PanelData.selected_size], edx
1654
        adc     dword [ebp + PanelData.selected_size+4], eax
1662
        adc     dword [ebp + PanelData.selected_size+4], eax
1655
        inc     [ebp + PanelData.selected_num]
1663
        inc     [ebp + PanelData.selected_num]
1656
.insert.down:
1664
.insert.down:
1657
        inc     ecx
1665
        inc     ecx
1658
        cmp     ecx, [ebp + PanelData.numfiles]
1666
        cmp     ecx, [ebp + PanelData.numfiles]
1659
        jae     .done_redraw
1667
        jae     .done_redraw
1660
        jmp     @f
1668
        jmp     @f
1661
.down:
1669
.down:
1662
        inc     ecx
1670
        inc     ecx
1663
        cmp     ecx, [ebp + PanelData.numfiles]
1671
        cmp     ecx, [ebp + PanelData.numfiles]
1664
        jae     .ret
1672
        jae     .ret
1665
@@:
1673
@@:
1666
        mov     [ebp + PanelData.index], ecx
1674
        mov     [ebp + PanelData.index], ecx
1667
        cmp     ecx, ebx
1675
        cmp     ecx, ebx
1668
        jb      .done_redraw
1676
        jb      .done_redraw
1669
        sub     ecx, [ebp + PanelData.colst]
1677
        sub     ecx, [ebp + PanelData.colst]
1670
        inc     ecx
1678
        inc     ecx
1671
        mov     [ebp + PanelData.start], ecx
1679
        mov     [ebp + PanelData.start], ecx
1672
        jmp     .done_redraw
1680
        jmp     .done_redraw
1673
.left:
1681
.left:
1674
        test    ecx, ecx
1682
        test    ecx, ecx
1675
        jnz     @f
1683
        jnz     @f
1676
        ret
1684
        ret
1677
@@:
1685
@@:
1678
        mov     eax, [ebp + PanelData.colsz]
1686
        mov     eax, [ebp + PanelData.colsz]
1679
        sub     ecx, eax
1687
        sub     ecx, eax
1680
        jae     @f
1688
        jae     @f
1681
        xor     ecx, ecx
1689
        xor     ecx, ecx
1682
@@:
1690
@@:
1683
        mov     [ebp + PanelData.index], ecx
1691
        mov     [ebp + PanelData.index], ecx
1684
.finalize_left:
1692
.finalize_left:
1685
        cmp     ecx, edx
1693
        cmp     ecx, edx
1686
        jae     .done_redraw
1694
        jae     .done_redraw
1687
        sub     edx, eax
1695
        sub     edx, eax
1688
        jae     @f
1696
        jae     @f
1689
        xor     edx, edx
1697
        xor     edx, edx
1690
@@:
1698
@@:
1691
        mov     [ebp + PanelData.start], edx
1699
        mov     [ebp + PanelData.start], edx
1692
        jmp     .done_redraw
1700
        jmp     .done_redraw
1693
.pgup:
1701
.pgup:
1694
        mov     eax, [ebp + PanelData.colst]
1702
        mov     eax, [ebp + PanelData.colst]
1695
        dec     eax
1703
        dec     eax
1696
        jnz     @f
1704
        jnz     @f
1697
        inc     eax
1705
        inc     eax
1698
@@:
1706
@@:
1699
        test    ecx, ecx
1707
        test    ecx, ecx
1700
        jnz     @f
1708
        jnz     @f
1701
        ret
1709
        ret
1702
@@:
1710
@@:
1703
        sub     ecx, eax
1711
        sub     ecx, eax
1704
        jae     @f
1712
        jae     @f
1705
        xor     ecx, ecx
1713
        xor     ecx, ecx
1706
@@:
1714
@@:
1707
        mov     [ebp + PanelData.index], ecx
1715
        mov     [ebp + PanelData.index], ecx
1708
        dec     ecx
1716
        dec     ecx
1709
        jmp     .finalize_left
1717
        jmp     .finalize_left
1710
.right:
1718
.right:
1711
        mov     eax, [ebp + PanelData.colsz]
1719
        mov     eax, [ebp + PanelData.colsz]
1712
        add     ecx, eax
1720
        add     ecx, eax
1713
        cmp     ecx, [ebp + PanelData.numfiles]
1721
        cmp     ecx, [ebp + PanelData.numfiles]
1714
        jb      @f
1722
        jb      @f
1715
        mov     ecx, [ebp + PanelData.numfiles]
1723
        mov     ecx, [ebp + PanelData.numfiles]
1716
        dec     ecx
1724
        dec     ecx
1717
@@:
1725
@@:
1718
        mov     [ebp + PanelData.index], ecx
1726
        mov     [ebp + PanelData.index], ecx
1719
.finalize_right:
1727
.finalize_right:
1720
        cmp     ecx, ebx
1728
        cmp     ecx, ebx
1721
        jb      .done_redraw
1729
        jb      .done_redraw
1722
        add     ebx, eax
1730
        add     ebx, eax
1723
        cmp     ebx, [ebp + PanelData.numfiles]
1731
        cmp     ebx, [ebp + PanelData.numfiles]
1724
        jbe     @f
1732
        jbe     @f
1725
        mov     ebx, [ebp + PanelData.numfiles]
1733
        mov     ebx, [ebp + PanelData.numfiles]
1726
@@:
1734
@@:
1727
        sub     ebx, [ebp + PanelData.colst]
1735
        sub     ebx, [ebp + PanelData.colst]
1728
        jae     @f
1736
        jae     @f
1729
        xor     ebx, ebx
1737
        xor     ebx, ebx
1730
@@:
1738
@@:
1731
        mov     [ebp + PanelData.start], ebx
1739
        mov     [ebp + PanelData.start], ebx
1732
        jmp     .done_redraw
1740
        jmp     .done_redraw
1733
.pgdn:
1741
.pgdn:
1734
        mov     eax, [ebp + PanelData.colst]
1742
        mov     eax, [ebp + PanelData.colst]
1735
        dec     eax
1743
        dec     eax
1736
        jnz     @f
1744
        jnz     @f
1737
        inc     eax
1745
        inc     eax
1738
@@:
1746
@@:
1739
        add     ecx, eax
1747
        add     ecx, eax
1740
        cmp     ecx, [ebp + PanelData.numfiles]
1748
        cmp     ecx, [ebp + PanelData.numfiles]
1741
        jb      @f
1749
        jb      @f
1742
        mov     ecx, [ebp + PanelData.numfiles]
1750
        mov     ecx, [ebp + PanelData.numfiles]
1743
        dec     ecx
1751
        dec     ecx
1744
@@:
1752
@@:
1745
        mov     [ebp + PanelData.index], ecx
1753
        mov     [ebp + PanelData.index], ecx
1746
        inc     ecx
1754
        inc     ecx
1747
        jmp     .finalize_right
1755
        jmp     .finalize_right
1748
.tab:
1756
.tab:
1749
        xor     [active_panel], panel1 xor panel2
1757
        xor     [active_panel], panel1 xor panel2
1750
        call    draw_cmdbar
1758
        call    draw_cmdbar
1751
        call    draw_panel
1759
        call    draw_panel
1752
        mov     ebp, [active_panel]
1760
        mov     ebp, [active_panel]
1753
        jmp     .done_redraw
1761
        jmp     .done_redraw
1754
.home:
1762
.home:
1755
        and     [ebp + PanelData.start], 0
1763
        and     [ebp + PanelData.start], 0
1756
        and     [ebp + PanelData.index], 0
1764
        and     [ebp + PanelData.index], 0
1757
        jmp     .done_redraw
1765
        jmp     .done_redraw
1758
.end:
1766
.end:
1759
        mov     eax, [ebp + PanelData.numfiles]
1767
        mov     eax, [ebp + PanelData.numfiles]
1760
        dec     eax
1768
        dec     eax
1761
        mov     [ebp + PanelData.index], eax
1769
        mov     [ebp + PanelData.index], eax
1762
        inc     eax
1770
        inc     eax
1763
        sub     eax, [ebp + PanelData.colst]
1771
        sub     eax, [ebp + PanelData.colst]
1764
        jae     @f
1772
        jae     @f
1765
        xor     eax, eax
1773
        xor     eax, eax
1766
@@:
1774
@@:
1767
        mov     [ebp + PanelData.start], eax
1775
        mov     [ebp + PanelData.start], eax
1768
        jmp     .done_redraw
1776
        jmp     .done_redraw
1769
.enter:
1777
.enter:
1770
        cmp     [bQuickSearchMode], 0
1778
        cmp     [bQuickSearchMode], 0
1771
        jz      @f
1779
        jz      @f
1772
        call    draw_image
1780
        call    draw_image
1773
@@:
1781
@@:
1774
        call    get_curfile_folder_entry
1782
        call    get_curfile_folder_entry
1775
        test    byte [ecx], 10h
1783
        test    byte [ecx], 10h
1776
        jnz     .enter_folder
1784
        jnz     .enter_folder
1777
; todo: add  handling on plugin panel
1785
; todo: add  handling on plugin panel
1778
        cmp     [ebp + PanelData.hPlugin], 0
1786
        cmp     [ebp + PanelData.hPlugin], 0
1779
        jnz     .ret
1787
        jnz     .ret
1780
; generate full file name
1788
; generate full file name
1781
        lea     esi, [ebp + PanelData.dir]
1789
        lea     esi, [ebp + PanelData.dir]
1782
        mov     edi, execdata
1790
        mov     edi, execdata
1783
@@:
1791
@@:
1784
        lodsb
1792
        lodsb
1785
        test    al, al
1793
        test    al, al
1786
        jz      @f
1794
        jz      @f
1787
        stosb
1795
        stosb
1788
        cmp     edi, execdataend-1
1796
        cmp     edi, execdataend-1
1789
        jae     .bigfilename
1797
        jae     .bigfilename
1790
        jmp     @b
1798
        jmp     @b
1791
@@:
1799
@@:
1792
        lea     esi, [ecx+40]
1800
        lea     esi, [ecx+40]
1793
        mov     al, '/'
1801
        mov     al, '/'
1794
        stosb
1802
        stosb
1795
@@:
1803
@@:
1796
        lodsb
1804
        lodsb
1797
        stosb
1805
        stosb
1798
        cmp     edi, execdataend
1806
        cmp     edi, execdataend
1799
        ja      .bigfilename
1807
        ja      .bigfilename
1800
        test    al, al
1808
        test    al, al
1801
        jnz     @b
1809
        jnz     @b
1802
; try to open file and look for all plugins
1810
; try to open file and look for all plugins
1803
        push    O_READ
1811
        push    O_READ
1804
        push    execdata
1812
        push    execdata
1805
        call    open
1813
        call    open
1806
        test    eax, eax
1814
        test    eax, eax
1807
        jz      .noplugins      ; if can't open, just try to execute
1815
        jz      .noplugins      ; if can't open, just try to execute
1808
        mov     esi, eax        ; save handle
1816
        mov     esi, eax        ; save handle
1809
        push    filedata_buffer_size
1817
        push    filedata_buffer_size
1810
        push    filedata_buffer
1818
        push    filedata_buffer
1811
        push    esi
1819
        push    esi
1812
        call    read
1820
        call    read
1813
        mov     edi, eax        ; save size of read data
1821
        mov     edi, eax        ; save size of read data
1814
; test for Kolibri executable
1822
; test for Kolibri executable
1815
        cmp     eax, 24h
1823
        cmp     eax, 24h
1816
        jb      .enter.noexec
1824
        jb      .enter.noexec
1817
        cmp     dword [filedata_buffer], 'MENU'
1825
        cmp     dword [filedata_buffer], 'MENU'
1818
        jnz     @f
1826
        jnz     @f
1819
        cmp     word [filedata_buffer+4], 'ET'
1827
        cmp     word [filedata_buffer+4], 'ET'
1820
        jnz     @f
1828
        jnz     @f
1821
.close_run:
1829
.close_run:
1822
        push    esi
1830
        push    esi
1823
        call    close
1831
        call    close
1824
        jmp     .run_app
1832
        jmp     .run_app
1825
@@:
1833
@@:
1826
        cmp     dword [filedata_buffer], 'KPCK'
1834
        cmp     dword [filedata_buffer], 'KPCK'
1827
        jnz     @f
1835
        jnz     @f
1828
        cmp     dword [filedata_buffer+12], 0x26914601
1836
        cmp     dword [filedata_buffer+12], 0x26914601
1829
        jz      .close_run
1837
        jz      .close_run
1830
@@:
1838
@@:
1831
.enter.noexec:
1839
.enter.noexec:
1832
        mov     ecx, [num_plugins]
1840
        mov     ecx, [num_plugins]
1833
        mov     edx, [plugins]
1841
        mov     edx, [plugins]
1834
        sub     edx, PluginInfo.size
1842
        sub     edx, PluginInfo.size
1835
.plugloop:
1843
.plugloop:
1836
        add     edx, PluginInfo.size
1844
        add     edx, PluginInfo.size
1837
        dec     ecx
1845
        dec     ecx
1838
        js      .plugdone
1846
        js      .plugdone
1839
        pushad
1847
        pushad
1840
        push    execdata
1848
        push    execdata
1841
        push    [ebp+ PanelData.hFile]
1849
        push    [ebp+ PanelData.hFile]
1842
        push    [ebp+ PanelData.hPlugin]
1850
        push    [ebp+ PanelData.hPlugin]
1843
        push    edi
1851
        push    edi
1844
        push    filedata_buffer
1852
        push    filedata_buffer
1845
        call    get_curfile_folder_entry
1853
        call    get_curfile_folder_entry
1846
        push    ecx
1854
        push    ecx
1847
        push    esi
1855
        push    esi
1848
        call    [edx+PluginInfo.OpenFilePlugin]
1856
        call    [edx+PluginInfo.OpenFilePlugin]
1849
        mov     [esp+28], eax
1857
        mov     [esp+28], eax
1850
        popad
1858
        popad
1851
        test    eax, eax
1859
        test    eax, eax
1852
        jz      .plugloop
1860
        jz      .plugloop
1853
        cmp     eax, -1
1861
        cmp     eax, -1
1854
        jnz     .pluginok
1862
        jnz     .pluginok
1855
        push    esi
1863
        push    esi
1856
        call    close
1864
        call    close
1857
        ret
1865
        ret
1858
.pluginok:
1866
.pluginok:
1859
; save current directory and set root directory of hPlugin
1867
; save current directory and set root directory of hPlugin
1860
        mov     edi, eax        ; save handle
1868
        mov     edi, eax        ; save handle
1861
        mov     esi, execdata
1869
        mov     esi, execdata
1862
@@:
1870
@@:
1863
        lodsb
1871
        lodsb
1864
        test    al, al
1872
        test    al, al
1865
        jnz     @b
1873
        jnz     @b
1866
        sub     esi, execdata-9
1874
        sub     esi, execdata-9
1867
; allocate esi bytes in buffer 'parents'
1875
; allocate esi bytes in buffer 'parents'
1868
        mov     ecx, [ebp + PanelData.parents_sz]
1876
        mov     ecx, [ebp + PanelData.parents_sz]
1869
        add     ecx, esi
1877
        add     ecx, esi
1870
        cmp     ecx, [ebp + PanelData.parents_alloc]
1878
        cmp     ecx, [ebp + PanelData.parents_alloc]
1871
        jbe     .enter.norealloc
1879
        jbe     .enter.norealloc
1872
        push    edx
1880
        push    edx
1873
        mov     edx, [ebp + PanelData.parents]
1881
        mov     edx, [ebp + PanelData.parents]
1874
        call    xpgrealloc
1882
        call    xpgrealloc
1875
        pop     edx
1883
        pop     edx
1876
        test    eax, eax
1884
        test    eax, eax
1877
        jnz     @f
1885
        jnz     @f
1878
        push    edi
1886
        push    edi
1879
        call    [edx+PluginInfo.ClosePlugin]
1887
        call    [edx+PluginInfo.ClosePlugin]
1880
        ret
1888
        ret
1881
@@:
1889
@@:
1882
        mov     [ebp + PanelData.parents], eax
1890
        mov     [ebp + PanelData.parents], eax
1883
.enter.norealloc:
1891
.enter.norealloc:
1884
        mov     [ebp + PanelData.parents_sz], ecx
1892
        mov     [ebp + PanelData.parents_sz], ecx
1885
; save current state to the end of buffer
1893
; save current state to the end of buffer
1886
        sub     ecx, esi
1894
        sub     ecx, esi
1887
        add     ecx, [ebp + PanelData.parents]
1895
        add     ecx, [ebp + PanelData.parents]
1888
        xchg    edx, [ebp + PanelData.hPlugin]
1896
        xchg    edx, [ebp + PanelData.hPlugin]
1889
        mov     [ecx], edx
1897
        mov     [ecx], edx
1890
        xchg    edi, [ebp + PanelData.hFile]
1898
        xchg    edi, [ebp + PanelData.hFile]
1891
        mov     [ecx+4], edi
1899
        mov     [ecx+4], edi
1892
        mov     byte [ecx+8], 0
1900
        mov     byte [ecx+8], 0
1893
        lea     edi, [ecx+9]
1901
        lea     edi, [ecx+9]
1894
        lea     ecx, [esi-9]
1902
        lea     ecx, [esi-9]
1895
        mov     esi, execdata
1903
        mov     esi, execdata
1896
        rep     movsb
1904
        rep     movsb
1897
        mov     word [ebp + PanelData.dir], '/'
1905
        mov     word [ebp + PanelData.dir], '/'
1898
        mov     eax, [ebp + PanelData.hPlugin]
1906
        mov     eax, [ebp + PanelData.hPlugin]
1899
        lea     ebx, [ebp + PanelData.plugin_flags] ;plugin_info
1907
        lea     ebx, [ebp + PanelData.plugin_flags] ;plugin_info
1900
        and     dword [ebx], 0
1908
        and     dword [ebx], 0
1901
        push    ebp
1909
        push    ebp
1902
        push    ebx
1910
        push    ebx
1903
        push    [ebp + PanelData.hFile]
1911
        push    [ebp + PanelData.hFile]
1904
        call    [eax+PluginInfo.GetOpenPluginInfo]
1912
        call    [eax+PluginInfo.GetOpenPluginInfo]
1905
        pop     ebp
1913
        pop     ebp
1906
        call    get_curfile_folder_entry
1914
        call    get_curfile_folder_entry
1907
        mov     esi, ecx
1915
        mov     esi, ecx
1908
        mov     edi, left_dotdot_entry
1916
        mov     edi, left_dotdot_entry
1909
        cmp     ebp, panel1
1917
        cmp     ebp, panel1
1910
        jz      @f
1918
        jz      @f
1911
        add     edi, right_dotdot_entry-left_dotdot_entry
1919
        add     edi, right_dotdot_entry-left_dotdot_entry
1912
@@:
1920
@@:
1913
        mov     ecx, 10
1921
        mov     ecx, 10
1914
        rep     movsd
1922
        rep     movsd
1915
        mov     byte [edi-40], 10h      ; attributes: folder
1923
        mov     byte [edi-40], 10h      ; attributes: folder
1916
        mov     eax, '..'
1924
        mov     eax, '..'
1917
        stosd
1925
        stosd
1918
        jmp     .reread
1926
        jmp     .reread
1919
.plugdone:
1927
.plugdone:
1920
        push    esi
1928
        push    esi
1921
        call    close
1929
        call    close
1922
.noplugins:
1930
.noplugins:
1923
; run program or association
1931
; run program or association
1924
        call    get_curfile_folder_entry
1932
        call    get_curfile_folder_entry
1925
        call    find_extension
1933
        call    find_extension
1926
        jc      .run_app
1934
        jc      .run_app
1927
.run_association:
1935
.run_association:
1928
        cmp     byte [edi], 0
1936
        cmp     byte [edi], 0
1929
        jz      .l1
1937
        jz      .l1
1930
        cmp     byte [edi], ';'
1938
        cmp     byte [edi], ';'
1931
        jnz     @f
1939
        jnz     @f
1932
.l1:
1940
.l1:
1933
        ret
1941
        ret
1934
@@:
1942
@@:
1935
        mov     esi, edi
1943
        mov     esi, edi
1936
@@:
1944
@@:
1937
        lodsb
1945
        lodsb
1938
        test    al, al
1946
        test    al, al
1939
        jz      @f
1947
        jz      @f
1940
        cmp     al, ';'
1948
        cmp     al, ';'
1941
        jnz     @b
1949
        jnz     @b
1942
        dec     esi
1950
        dec     esi
1943
        mov     byte [esi], 0
1951
        mov     byte [esi], 0
1944
        mov     [restore_semicolon], esi
1952
        mov     [restore_semicolon], esi
1945
@@:
1953
@@:
1946
.run_association2:
1954
.run_association2:
1947
        mov     [execparams], execdata
1955
        mov     [execparams], execdata
1948
        mov     [execptr], edi
1956
        mov     [execptr], edi
1949
        jmp     .dorun
1957
        jmp     .dorun
1950
.run_app:
1958
.run_app:
1951
        mov     [execptr], execdata
1959
        mov     [execptr], execdata
1952
        and     [execparams], 0
1960
        and     [execparams], 0
1953
.dorun:
1961
.dorun:
1954
        lea     esi, [ebp + PanelData.dir]
1962
        lea     esi, [ebp + PanelData.dir]
1955
        mov     edi, execdata
1963
        mov     edi, execdata
1956
@@:
1964
@@:
1957
        lodsb
1965
        lodsb
1958
        test    al, al
1966
        test    al, al
1959
        jz      @f
1967
        jz      @f
1960
        stosb
1968
        stosb
1961
        cmp     edi, execdataend-1
1969
        cmp     edi, execdataend-1
1962
        jae     .bigfilename
1970
        jae     .bigfilename
1963
        jmp     @b
1971
        jmp     @b
1964
@@:
1972
@@:
1965
        lea     esi, [ecx+40]
1973
        lea     esi, [ecx+40]
1966
        mov     al, '/'
1974
        mov     al, '/'
1967
        stosb
1975
        stosb
1968
@@:
1976
@@:
1969
        lodsb
1977
        lodsb
1970
        stosb
1978
        stosb
1971
        cmp     edi, execdataend
1979
        cmp     edi, execdataend
1972
        ja      .bigfilename
1980
        ja      .bigfilename
1973
        test    al, al
1981
        test    al, al
1974
        jnz     @b
1982
        jnz     @b
1975
; for fasm call - special handling, because
1983
; for fasm call - special handling, because
1976
; 1) fasm command line convention is different : fasm infile,outfile[,path] rather than tinypad infile
1984
; 1) fasm command line convention is different : fasm infile,outfile[,path] rather than tinypad infile
1977
; 2) fasm will probably create new file in directory, so we want to reload panel data
1985
; 2) fasm will probably create new file in directory, so we want to reload panel data
1978
        xor     edx, edx
1986
        xor     edx, edx
1979
        cmp     [execparams], edx
1987
        cmp     [execparams], edx
1980
        jz      .nofasm
1988
        jz      .nofasm
1981
        mov     esi, [execptr]
1989
        mov     esi, [execptr]
1982
@@:
1990
@@:
1983
        lodsb
1991
        lodsb
1984
        test    al, al
1992
        test    al, al
1985
        jnz     @b
1993
        jnz     @b
1986
        mov     eax, [esi-5]
1994
        mov     eax, [esi-5]
1987
        or      eax, 0x20202020
1995
        or      eax, 0x20202020
1988
        cmp     eax, 'fasm'
1996
        cmp     eax, 'fasm'
1989
        jnz     .nofasm
1997
        jnz     .nofasm
1990
        cmp     edi, execdata+(execdataend-execdata)/2
1998
        cmp     edi, execdata+(execdataend-execdata)/2
1991
        ja      .bigfilename
1999
        ja      .bigfilename
1992
        mov     esi, execdata
2000
        mov     esi, execdata
1993
@@:
2001
@@:
1994
        lodsb
2002
        lodsb
1995
        stosb
2003
        stosb
1996
        test    al, al
2004
        test    al, al
1997
        jnz     @b
2005
        jnz     @b
1998
        mov     byte [esi-1], ','
2006
        mov     byte [esi-1], ','
1999
        inc     edx
2007
        inc     edx
2000
; output file: no extension if input file has extension, '.bin' otherwise
2008
; output file: no extension if input file has extension, '.bin' otherwise
2001
        push    edi
2009
        push    edi
2002
@@:
2010
@@:
2003
        dec     edi
2011
        dec     edi
2004
        cmp     byte [edi], '.'
2012
        cmp     byte [edi], '.'
2005
        jz      .ptfound
2013
        jz      .ptfound
2006
        cmp     byte [edi], '/'
2014
        cmp     byte [edi], '/'
2007
        jnz     @b
2015
        jnz     @b
2008
        pop     edi
2016
        pop     edi
2009
        cmp     edi, execdataend-4
2017
        cmp     edi, execdataend-4
2010
        ja      .bigfilename
2018
        ja      .bigfilename
2011
        mov     dword [edi-1], '.bin'
2019
        mov     dword [edi-1], '.bin'
2012
        mov     byte [edi+3], 0
2020
        mov     byte [edi+3], 0
2013
        jmp     .nofasm
2021
        jmp     .nofasm
2014
.ptfound:
2022
.ptfound:
2015
        mov     byte [edi], 0
2023
        mov     byte [edi], 0
2016
        pop     edi
2024
        pop     edi
2017
.nofasm:
2025
.nofasm:
2018
        mov     ebx, execinfo
2026
        mov     ebx, execinfo
2019
; if command line is more than 256 symbols, the kernel will truncate it
2027
; if command line is more than 256 symbols, the kernel will truncate it
2020
; we do not want this!
2028
; we do not want this!
2021
; N.B. We know that command line is either NULL or execdata, which is always ASCIIZ string,
2029
; N.B. We know that command line is either NULL or execdata, which is always ASCIIZ string,
2022
;      but can be up to 1023 symbols
2030
;      but can be up to 1023 symbols
2023
        mov     esi, [ebx+8]
2031
        mov     esi, [ebx+8]
2024
        test    esi, esi
2032
        test    esi, esi
2025
        jz      .cmdlinelenok
2033
        jz      .cmdlinelenok
2026
@@:
2034
@@:
2027
        lodsb
2035
        lodsb
2028
        test    al, al
2036
        test    al, al
2029
        jnz     @b
2037
        jnz     @b
2030
        sub     esi, [ebx+8]
2038
        sub     esi, [ebx+8]
2031
        dec     esi
2039
        dec     esi
2032
        cmp     esi, 256
2040
        cmp     esi, 256
2033
        ja      .bigcmdline
2041
        ja      .bigcmdline
2034
.cmdlinelenok:
2042
.cmdlinelenok:
2035
        push    SF_FILE
2043
        push    SF_FILE
2036
        pop     eax
2044
        pop     eax
2037
        int     40h
2045
        int     40h
2038
        xor     esi, esi
2046
        xor     esi, esi
2039
        xchg    esi, [restore_semicolon]
2047
        xchg    esi, [restore_semicolon]
2040
        test    esi, esi
2048
        test    esi, esi
2041
        jz      @f
2049
        jz      @f
2042
        mov     byte [esi], ';'
2050
        mov     byte [esi], ';'
2043
@@:
2051
@@:
2044
        neg     eax
2052
        neg     eax
2045
        js      @f
2053
        js      @f
2046
        call    get_error_msg
2054
        call    get_error_msg
2047
        push    eax
2055
        push    eax
2048
        push    dword aRunError
2056
        push    dword aRunError
2049
        mov     eax, esp
2057
        mov     eax, esp
2050
        push    ContinueBtn
2058
        push    ContinueBtn
2051
        push    1
2059
        push    1
2052
        push    eax
2060
        push    eax
2053
        push    2
2061
        push    2
2054
        call    SayErr
2062
        call    SayErr
2055
        pop     eax
2063
        pop     eax
2056
        pop     eax
2064
        pop     eax
2057
        ret
2065
        ret
2058
@@:
2066
@@:
2059
        test    edx, edx
2067
        test    edx, edx
2060
        jz      @f
2068
        jz      @f
2061
        push    SF_SLEEP
2069
        push    SF_SLEEP
2062
        pop     eax
2070
        pop     eax
2063
        push    20
2071
        push    20
2064
        pop     ebx
2072
        pop     ebx
2065
        int     0x40
2073
        int     0x40
2066
        jmp     .ctrl_r
2074
        jmp     .ctrl_r
2067
@@:
2075
@@:
2068
        ret
2076
        ret
2069
.bigfilename3:
2077
.bigfilename3:
2070
        pop     esi
2078
        pop     esi
2071
.bigfilename2:
2079
.bigfilename2:
2072
        pop     esi
2080
        pop     esi
2073
.bigfilename:
2081
.bigfilename:
2074
        mov     eax, aFileNameTooBig
2082
        mov     eax, aFileNameTooBig
2075
.l2:
2083
.l2:
2076
        xor     esi, esi
2084
        xor     esi, esi
2077
        xchg    esi, [restore_semicolon]
2085
        xchg    esi, [restore_semicolon]
2078
        test    esi, esi
2086
        test    esi, esi
2079
        jz      @f
2087
        jz      @f
2080
        mov     byte [esi], ';'
2088
        mov     byte [esi], ';'
2081
@@:
2089
@@:
2082
        push    eax
2090
        push    eax
2083
        mov     eax, esp
2091
        mov     eax, esp
2084
        push    ContinueBtn
2092
        push    ContinueBtn
2085
        push    1
2093
        push    1
2086
        push    eax
2094
        push    eax
2087
        push    1
2095
        push    1
2088
        call    SayErr
2096
        call    SayErr
2089
        pop     eax
2097
        pop     eax
2090
        ret
2098
        ret
2091
.bigcmdline:
2099
.bigcmdline:
2092
        mov     eax, aCmdLineTooBig
2100
        mov     eax, aCmdLineTooBig
2093
        jmp     .l2
2101
        jmp     .l2
2094
.bigfoldername2:
2102
.bigfoldername2:
2095
        mov     esi, prev_dir
2103
        mov     esi, prev_dir
2096
        lea     edi, [ebp + PanelData.dir]
2104
        lea     edi, [ebp + PanelData.dir]
2097
@@:
2105
@@:
2098
        lodsb
2106
        lodsb
2099
        stosb
2107
        stosb
2100
        test    al, al
2108
        test    al, al
2101
        jnz     @b
2109
        jnz     @b
2102
.bigfoldername:
2110
.bigfoldername:
2103
        mov     eax, aFolderNameTooBig
2111
        mov     eax, aFolderNameTooBig
2104
        jmp     .l2
2112
        jmp     .l2
2105
.enter_folder:
2113
.enter_folder:
2106
        lea     esi, [ecx+40]
2114
        lea     esi, [ecx+40]
2107
        cmp     word [esi], '..'
2115
        cmp     word [esi], '..'
2108
        jnz     @f
2116
        jnz     @f
2109
        cmp     byte [esi+2], 0
2117
        cmp     byte [esi+2], 0
2110
        jz      .dotdot
2118
        jz      .dotdot
2111
@@:
2119
@@:
2112
        push    esi
2120
        push    esi
2113
        lea     esi, [ebp + PanelData.dir]
2121
        lea     esi, [ebp + PanelData.dir]
2114
        mov     edi, prev_dir
2122
        mov     edi, prev_dir
2115
@@:
2123
@@:
2116
        lodsb
2124
        lodsb
2117
        stosb
2125
        stosb
2118
        test    al, al
2126
        test    al, al
2119
        jnz     @b
2127
        jnz     @b
2120
        lea     edi, [esi-1]
2128
        lea     edi, [esi-1]
2121
        lea     edx, [ebp + PanelData.dir + 1024]
2129
        lea     edx, [ebp + PanelData.dir + 1024]
2122
        cmp     esi, edx
2130
        cmp     esi, edx
2123
        pop     esi
2131
        pop     esi
2124
        jae     .bigfoldername
2132
        jae     .bigfoldername
2125
        mov     al, '/'
2133
        mov     al, '/'
2126
        cmp     [edi-1], al
2134
        cmp     [edi-1], al
2127
        jz      @f
2135
        jz      @f
2128
        stosb
2136
        stosb
2129
@@:
2137
@@:
2130
        lodsb
2138
        lodsb
2131
        cmp     edi, edx
2139
        cmp     edi, edx
2132
        jae     .bigfoldername2
2140
        jae     .bigfoldername2
2133
        stosb
2141
        stosb
2134
        test    al, al
2142
        test    al, al
2135
        jnz     @b
2143
        jnz     @b
2136
        mov     eax, [ebp + PanelData.hPlugin]
2144
        mov     eax, [ebp + PanelData.hPlugin]
2137
        test    eax, eax
2145
        test    eax, eax
2138
        jz      .reread
2146
        jz      .reread
2139
        push    ebp
2147
        push    ebp
2140
        lea     esi, [ebp + PanelData.dir]
2148
        lea     esi, [ebp + PanelData.dir]
2141
        push    esi
2149
        push    esi
2142
        add     ecx, 40
2150
        add     ecx, 40
2143
        push    ecx
2151
        push    ecx
2144
        push    [ebp + PanelData.hFile]
2152
        push    [ebp + PanelData.hFile]
2145
        call    [eax+PluginInfo.SetFolder]
2153
        call    [eax+PluginInfo.SetFolder]
2146
        pop     ebp
2154
        pop     ebp
2147
        test    al, al
2155
        test    al, al
2148
        jnz     .reread
2156
        jnz     .reread
2149
        mov     esi, prev_dir
2157
        mov     esi, prev_dir
2150
        lea     edi, [ebp + PanelData.dir]
2158
        lea     edi, [ebp + PanelData.dir]
2151
@@:
2159
@@:
2152
        lodsb
2160
        lodsb
2153
        stosb
2161
        stosb
2154
        test    al, al
2162
        test    al, al
2155
        jnz     @b
2163
        jnz     @b
2156
.retd:
2164
.retd:
2157
        ret
2165
        ret
2158
.reread:
2166
.reread:
2159
        call    read_folder
2167
        call    read_folder
2160
.done_cmdbar:
2168
.done_cmdbar:
2161
        call    draw_cmdbar
2169
        call    draw_cmdbar
2162
        jmp     .done_redraw
2170
        jmp     .done_redraw
2163
.dotdot:
2171
.dotdot:
2164
        lea     edi, [ebp + PanelData.dir]
2172
        lea     edi, [ebp + PanelData.dir]
2165
        cmp     word [edi], '/'
2173
        cmp     word [edi], '/'
2166
        jnz     .dotdot_noroot
2174
        jnz     .dotdot_noroot
2167
        cmp     [ebp + PanelData.hPlugin], 0
2175
        cmp     [ebp + PanelData.hPlugin], 0
2168
        jz      .retd
2176
        jz      .retd
2169
        call    close_plugin_panel
2177
        call    close_plugin_panel
2170
        jmp     .dotdot
2178
        jmp     .dotdot
2171
.dotdot_noroot:
2179
.dotdot_noroot:
2172
        mov     edx, edi
2180
        mov     edx, edi
2173
        mov     al, 0
2181
        mov     al, 0
2174
        or      ecx, -1
2182
        or      ecx, -1
2175
        repnz   scasb
2183
        repnz   scasb
2176
        dec     edi
2184
        dec     edi
2177
        mov     al, '/'
2185
        mov     al, '/'
2178
        std
2186
        std
2179
        repnz   scasb
2187
        repnz   scasb
2180
        cld
2188
        cld
2181
        inc     edi
2189
        inc     edi
2182
        cmp     edi, edx
2190
        cmp     edi, edx
2183
        jnz     @f
2191
        jnz     @f
2184
        inc     edi
2192
        inc     edi
2185
@@:
2193
@@:
2186
        push    dword [edi]
2194
        push    dword [edi]
2187
        mov     byte [edi], 0
2195
        mov     byte [edi], 0
2188
        push    edi
2196
        push    edi
2189
        mov     eax, [ebp + PanelData.hPlugin]
2197
        mov     eax, [ebp + PanelData.hPlugin]
2190
        test    eax, eax
2198
        test    eax, eax
2191
        jz      .dotdot_native
2199
        jz      .dotdot_native
2192
        push    ebp
2200
        push    ebp
2193
        lea     esi, [ebp + PanelData.dir]
2201
        lea     esi, [ebp + PanelData.dir]
2194
        push    esi
2202
        push    esi
2195
        push    aDotDot
2203
        push    aDotDot
2196
        push    [ebp + PanelData.hFile]
2204
        push    [ebp + PanelData.hFile]
2197
        call    [eax+PluginInfo.SetFolder]
2205
        call    [eax+PluginInfo.SetFolder]
2198
        pop     ebp
2206
        pop     ebp
2199
        test    al, al
2207
        test    al, al
2200
        jnz     .dotdot_native
2208
        jnz     .dotdot_native
2201
        pop     edi
2209
        pop     edi
2202
        pop     dword [edi]
2210
        pop     dword [edi]
2203
        ret
2211
        ret
2204
.dotdot_native:
2212
.dotdot_native:
2205
        call    read_folder
2213
        call    read_folder
2206
        pop     edi
2214
        pop     edi
2207
        pop     dword [edi]
2215
        pop     dword [edi]
2208
        push    edi
2216
        push    edi
2209
        cmp     byte [edi], '/'
2217
        cmp     byte [edi], '/'
2210
        jnz     @f
2218
        jnz     @f
2211
        inc     edi
2219
        inc     edi
2212
@@:
2220
@@:
2213
        mov     edx, [ebp + PanelData.files]
2221
        mov     edx, [ebp + PanelData.files]
2214
        mov     ecx, [ebp + PanelData.numfiles]
2222
        mov     ecx, [ebp + PanelData.numfiles]
2215
.scanloop:
2223
.scanloop:
2216
        mov     esi, [edx]
2224
        mov     esi, [edx]
2217
        add     esi, 40
2225
        add     esi, 40
2218
        push    esi edi
2226
        push    esi edi
2219
@@:
2227
@@:
2220
        lodsb
2228
        lodsb
2221
        call    match_symbol
2229
        call    match_symbol
2222
        jnz     @f
2230
        jnz     @f
2223
        inc     edi
2231
        inc     edi
2224
        test    al, al
2232
        test    al, al
2225
        jnz     @b
2233
        jnz     @b
2226
@@:
2234
@@:
2227
        pop     edi esi
2235
        pop     edi esi
2228
        jz      .scanfound
2236
        jz      .scanfound
2229
        add     edx, 4
2237
        add     edx, 4
2230
        loop    .scanloop
2238
        loop    .scanloop
2231
        jmp     .scandone
2239
        jmp     .scandone
2232
.scanfound:
2240
.scanfound:
2233
        sub     edx, [ebp + PanelData.files]
2241
        sub     edx, [ebp + PanelData.files]
2234
        shr     edx, 2
2242
        shr     edx, 2
2235
        mov     [ebp + PanelData.index], edx
2243
        mov     [ebp + PanelData.index], edx
2236
        sub     edx, [ebp + PanelData.colst]
2244
        sub     edx, [ebp + PanelData.colst]
2237
        jb      .scandone
2245
        jb      .scandone
2238
        inc     edx
2246
        inc     edx
2239
        mov     [ebp + PanelData.start], edx
2247
        mov     [ebp + PanelData.start], edx
2240
.scandone:
2248
.scandone:
2241
        pop     edi
2249
        pop     edi
2242
        mov     byte [edi], 0
2250
        mov     byte [edi], 0
2243
        jmp     .done_cmdbar
2251
        jmp     .done_cmdbar
2244
.ctrl_f39:
2252
.ctrl_f3_9:
2245
        sub     al, 0x3D
2253
        sub     al, 0x3D
2246
        add     al, al
2254
        add     al, al
2247
        mov     ah, [ebp + PanelData.sortmode]
2255
        mov     ah, [ebp + PanelData.sortmode]
2248
        and     ah, 0xFE
2256
        and     ah, 0xFE
2249
        cmp     al, ah
2257
        cmp     al, ah
2250
        jnz     @f
2258
        jnz     @f
2251
        and     [ebp + PanelData.sortmode], 1
2259
        and     [ebp + PanelData.sortmode], 1
2252
        or      al, [ebp + PanelData.sortmode]
2260
        or      al, [ebp + PanelData.sortmode]
2253
        xor     al, 1
2261
        xor     al, 1
2254
@@:
2262
@@:
2255
        mov     [ebp + PanelData.sortmode], al
2263
        mov     [ebp + PanelData.sortmode], al
2256
        mov     eax, [ebp + PanelData.index]
2264
        mov     eax, [ebp + PanelData.index]
2257
        mov     ecx, [ebp + PanelData.files]
2265
        mov     ecx, [ebp + PanelData.files]
2258
        push    dword [ecx+eax*4]
2266
        push    dword [ecx+eax*4]
2259
        push    ecx
2267
        push    ecx
2260
        call    sort_files
2268
        call    sort_files
2261
        pop     edi
2269
        pop     edi
2262
        pop     eax
2270
        pop     eax
2263
        or      ecx, -1
2271
        or      ecx, -1
2264
        repnz   scasd
2272
        repnz   scasd
2265
        not     ecx
2273
        not     ecx
2266
        dec     ecx
2274
        dec     ecx
2267
        mov     [ebp + PanelData.index], ecx
2275
        mov     [ebp + PanelData.index], ecx
2268
        sub     ecx, [ebp + PanelData.start]
2276
        sub     ecx, [ebp + PanelData.start]
2269
        jb      .less_start
2277
        jb      .less_start
2270
        sub     ecx, [ebp + PanelData.colst]
2278
        sub     ecx, [ebp + PanelData.colst]
2271
        jae     .gr_end
2279
        jae     .gr_end
2272
@@:     jmp     .done_redraw
2280
@@:     jmp     .done_redraw
2273
.less_start:
2281
.less_start:
2274
        add     [ebp + PanelData.start], ecx
2282
        add     [ebp + PanelData.start], ecx
2275
        jmp     @b
2283
        jmp     @b
2276
.gr_end:
2284
.gr_end:
2277
        inc     ecx
2285
        inc     ecx
2278
        add     [ebp + PanelData.start], ecx
2286
        add     [ebp + PanelData.start], ecx
2279
        jmp     @b
2287
        jmp     @b
2280
.alt_f12:
2288
.alt_f1_2:
2281
        mov     ebp, panel1
2289
        mov     ebp, panel1
2282
        cmp     al, 0x3B
2290
        cmp     al, 0x3B
2283
        jz      @f
2291
        jz      @f
2284
        mov     ebp, panel2
2292
        mov     ebp, panel2
2285
@@:
2293
@@:
2286
; get drives list
2294
; get drives list
2287
        mov     ebx, dirinfo
2295
        mov     ebx, dirinfo
2288
        mov     [ebx+dirinfo.size-dirinfo], 1
2296
        mov     [ebx+dirinfo.size-dirinfo], 1
2289
        mov     [ebx+dirinfo.dirdata-dirinfo], driveinfo
2297
        mov     [ebx+dirinfo.dirdata-dirinfo], driveinfo
2290
        mov     [ebx+dirinfo.name-dirinfo], tmpname
2298
        mov     [ebx+dirinfo.name-dirinfo], tmpname
2291
        mov     byte [tmpname], '/'
2299
        mov     byte [tmpname], '/'
2292
        xor     edx, edx
2300
        xor     edx, edx
2293
        xor     ecx, ecx
2301
        xor     ecx, ecx
2294
.drive_loop_e:
2302
.drive_loop_e:
2295
        mov     byte [tmpname+1], 0
2303
        mov     byte [tmpname+1], 0
2296
        push    SF_FILE
2304
        push    SF_FILE
2297
        pop     eax
2305
        pop     eax
2298
        int     40h
2306
        int     40h
2299
        mov     ebx, dirinfo
2307
        mov     ebx, dirinfo
2300
        test    eax, eax
2308
        test    eax, eax
2301
        jnz     .drive_loop_e_done
2309
        jnz     .drive_loop_e_done
2302
        mov     esi, driveinfo+32+40
2310
        mov     esi, driveinfo+32+40
2303
        mov     edi, tmpname+1
2311
        mov     edi, tmpname+1
2304
@@:
2312
@@:
2305
        lodsb
2313
        lodsb
2306
        stosb
2314
        stosb
2307
        test    al, al
2315
        test    al, al
2308
        jnz     @b
2316
        jnz     @b
2309
        push    [ebx+dirinfo.first-dirinfo]
2317
        push    [ebx+dirinfo.first-dirinfo]
2310
        and     [ebx+dirinfo.first-dirinfo], 0
2318
        and     [ebx+dirinfo.first-dirinfo], 0
2311
.drive_loop_i:
2319
.drive_loop_i:
2312
        push    SF_FILE
2320
        push    SF_FILE
2313
        pop     eax
2321
        pop     eax
2314
        int     40h
2322
        int     40h
2315
        mov     ebx, dirinfo
2323
        mov     ebx, dirinfo
2316
        test    eax, eax
2324
        test    eax, eax
2317
        jnz     .drive_loop_i_done
2325
        jnz     .drive_loop_i_done
2318
        add     ecx, 32+8
2326
        add     ecx, 32+8
2319
        push    ecx
2327
        push    ecx
2320
        and     ecx, 0xFFF
2328
        and     ecx, 0xFFF
2321
        cmp     ecx, 32+8
2329
        cmp     ecx, 32+8
2322
        pop     ecx
2330
        pop     ecx
2323
        ja      @f
2331
        ja      @f
2324
        call    xpgrealloc
2332
        call    xpgrealloc
2325
        mov     edx, eax
2333
        mov     edx, eax
2326
        test    eax, eax
2334
        test    eax, eax
2327
        jnz     @f
2335
        jnz     @f
2328
        pop     eax
2336
        pop     eax
2329
        ret
2337
        ret
2330
@@:
2338
@@:
2331
        lea     edi, [edx+ecx-32]
2339
        lea     edi, [edx+ecx-32]
2332
        mov     esi, tmpname
2340
        mov     esi, tmpname
2333
@@:
2341
@@:
2334
        lodsb
2342
        lodsb
2335
        test    al, al
2343
        test    al, al
2336
        jz      @f
2344
        jz      @f
2337
        stosb
2345
        stosb
2338
        jmp     @b
2346
        jmp     @b
2339
@@:
2347
@@:
2340
        mov     esi, driveinfo+32+40
2348
        mov     esi, driveinfo+32+40
2341
        mov     al, '/'
2349
        mov     al, '/'
2342
        stosb
2350
        stosb
2343
@@:
2351
@@:
2344
        lodsb
2352
        lodsb
2345
        stosb
2353
        stosb
2346
        test    al, al
2354
        test    al, al
2347
        jnz     @b
2355
        jnz     @b
2348
        inc     [ebx+dirinfo.first-dirinfo]
2356
        inc     [ebx+dirinfo.first-dirinfo]
2349
        jmp     .drive_loop_i
2357
        jmp     .drive_loop_i
2350
.drive_loop_i_done:
2358
.drive_loop_i_done:
2351
        pop     [ebx+dirinfo.first-dirinfo]
2359
        pop     [ebx+dirinfo.first-dirinfo]
2352
        inc     [ebx+dirinfo.first-dirinfo]
2360
        inc     [ebx+dirinfo.first-dirinfo]
2353
        jmp     .drive_loop_e
2361
        jmp     .drive_loop_e
2354
.drive_loop_e_done:
2362
.drive_loop_e_done:
2355
        and     [ebx+dirinfo.first-dirinfo], 0
2363
        and     [ebx+dirinfo.first-dirinfo], 0
2356
        mov     edi, edx
2364
        mov     edi, edx
2357
        xor     esi, esi
2365
        xor     esi, esi
2358
        add     ecx, edx
2366
        add     ecx, edx
2359
@@:
2367
@@:
2360
        and     dword [edi], 0
2368
        and     dword [edi], 0
2361
        mov     dword [edi+4], esi
2369
        mov     dword [edi+4], esi
2362
        mov     esi, edi
2370
        mov     esi, edi
2363
        add     edi, 32+8
2371
        add     edi, 32+8
2364
        cmp     edi, ecx
2372
        cmp     edi, ecx
2365
        jae     @f
2373
        jae     @f
2366
        mov     [esi], edi
2374
        mov     [esi], edi
2367
        jmp     @b
2375
        jmp     @b
2368
@@:
2376
@@:
2369
        mov     ecx, edx
2377
        mov     ecx, edx
2370
        lea     edi, [ebp + PanelData.dir]
2378
        lea     edi, [ebp + PanelData.dir]
2371
        cmp     [ebp + PanelData.hPlugin], 0
2379
        cmp     [ebp + PanelData.hPlugin], 0
2372
        jz      .find_cur_drive_loop
2380
        jz      .find_cur_drive_loop
2373
        mov     edi, [ebp + PanelData.parents]
2381
        mov     edi, [ebp + PanelData.parents]
2374
        add     edi, 8
2382
        add     edi, 8
2375
.find_cur_drive_loop:
2383
.find_cur_drive_loop:
2376
        push    edi
2384
        push    edi
2377
        lea     esi, [ecx+8]
2385
        lea     esi, [ecx+8]
2378
@@:
2386
@@:
2379
        lodsb
2387
        lodsb
2380
        test    al, al
2388
        test    al, al
2381
        jz      .cur_drive_found
2389
        jz      .cur_drive_found
2382
        call    match_symbol
2390
        call    match_symbol
2383
        jnz     @f
2391
        jnz     @f
2384
        inc     edi
2392
        inc     edi
2385
        jmp     @b
2393
        jmp     @b
2386
@@:
2394
@@:
2387
        cmp     dword [ecx], 0
2395
        cmp     dword [ecx], 0
2388
        jz      @f
2396
        jz      @f
2389
        pop     edi
2397
        pop     edi
2390
        mov     ecx, [ecx]
2398
        mov     ecx, [ecx]
2391
        jmp     .find_cur_drive_loop
2399
        jmp     .find_cur_drive_loop
2392
@@:
2400
@@:
2393
        mov     ecx, edx
2401
        mov     ecx, edx
2394
.cur_drive_found:
2402
.cur_drive_found:
2395
        pop     edi
2403
        pop     edi
2396
        push    1
2404
        push    1
2397
        push    aDrive
2405
        push    aDrive
2398
        push    ecx
2406
        push    ecx
2399
        mov     eax, [ebp + PanelData.height]
2407
        mov     eax, [ebp + PanelData.height]
2400
        sub     eax, 2
2408
        sub     eax, 2
2401
        jae     @f
2409
        jae     @f
2402
        add     eax, 2
2410
        add     eax, 2
2403
@@:
2411
@@:
2404
        push    eax
2412
        push    eax
2405
        push    [ebp + PanelData.width]
2413
        push    [ebp + PanelData.width]
2406
        push    [ebp + PanelData.top]
2414
        push    [ebp + PanelData.top]
2407
        push    [ebp + PanelData.left]
2415
        push    [ebp + PanelData.left]
2408
        call    menu_centered_in
2416
        call    menu_centered_in
2409
        cmp     eax, -1
2417
        cmp     eax, -1
2410
        jnz     @f
2418
        jnz     @f
2411
        mov     ecx, edx
2419
        mov     ecx, edx
2412
        call    pgfree
2420
        call    pgfree
2413
        ret
2421
        ret
2414
@@:
2422
@@:
2415
        push    eax
2423
        push    eax
2416
        push    edx
2424
        push    edx
2417
        call    close_plugin_panels
2425
        call    close_plugin_panels
2418
        pop     edx
2426
        pop     edx
2419
        lea     edi, [ebp + PanelData.dir]
2427
        lea     edi, [ebp + PanelData.dir]
2420
        push    edi
2428
        push    edi
2421
        mov     esi, edi
2429
        mov     esi, edi
2422
        mov     edi, prev_dir
2430
        mov     edi, prev_dir
2423
        mov     ecx, 1024/4
2431
        mov     ecx, 1024/4
2424
        rep     movsd
2432
        rep     movsd
2425
        pop     edi
2433
        pop     edi
2426
        pop     esi
2434
        pop     esi
2427
        add     esi, 8
2435
        add     esi, 8
2428
@@:
2436
@@:
2429
        lodsb
2437
        lodsb
2430
        stosb
2438
        stosb
2431
        test    al, al
2439
        test    al, al
2432
        jnz     @b
2440
        jnz     @b
2433
        mov     ecx, edx
2441
        mov     ecx, edx
2434
        call    pgfree
2442
        call    pgfree
2435
        call    read_folder
2443
        call    read_folder
2436
        jmp     .done_redraw
2444
        jmp     .done_redraw
2437
.shift_f5:
2445
.shift_f5:
2438
; todo: copy to plugin panel
2446
; todo: copy to plugin panel
2439
        cmp     [ebp + PanelData.hPlugin], 0
2447
        cmp     [ebp + PanelData.hPlugin], 0
2440
        jz      @f
2448
        jz      @f
2441
        ret
2449
        ret
2442
@@:
2450
@@:
2443
        mov     esi, ebp
2451
        mov     esi, ebp
2444
        cmp     [ebp + PanelData.selected_num], 0
2452
        cmp     [ebp + PanelData.selected_num], 0
2445
        jnz     .f5_2
2453
        jnz     .f5_2
2446
        call    get_curfile_folder_entry
2454
        call    get_curfile_folder_entry
2447
        lea     esi, [ecx+40]
2455
        lea     esi, [ecx+40]
2448
        mov     edi, CopyDestEditBuf
2456
        mov     edi, CopyDestEditBuf
2449
        mov     eax, CopyDestEditBuf.length
2457
        mov     eax, CopyDestEditBuf.length
2450
        stosd
2458
        stosd
2451
        scasd
2459
        scasd
2452
        xor     eax, eax
2460
        xor     eax, eax
2453
        stosd
2461
        stosd
2454
        mov     edx, edi
2462
        mov     edx, edi
2455
@@:
2463
@@:
2456
        lodsb
2464
        lodsb
2457
        test    al, al
2465
        test    al, al
2458
        jz      .f5_common
2466
        jz      .f5_common
2459
        stosb
2467
        stosb
2460
        jmp     @b
2468
        jmp     @b
2461
.f5:
2469
.f5:
2462
; todo: copy to plugin panel
2470
; todo: copy to plugin panel
2463
        mov     esi, ebp
2471
        mov     esi, ebp
2464
        xor     esi, panel1 xor panel2
2472
        xor     esi, panel1 xor panel2
2465
        cmp     [esi + PanelData.hPlugin], 0
2473
        cmp     [esi + PanelData.hPlugin], 0
2466
        jz      .f5_2
2474
        jz      .f5_2
2467
        ret
2475
        ret
2468
.f5_2:
2476
.f5_2:
2469
        add     esi, PanelData.dir
2477
        add     esi, PanelData.dir
2470
        mov     edi, CopyDestEditBuf
2478
        mov     edi, CopyDestEditBuf
2471
        mov     eax, CopyDestEditBuf.length
2479
        mov     eax, CopyDestEditBuf.length
2472
        stosd
2480
        stosd
2473
        scasd
2481
        scasd
2474
        xor     eax, eax
2482
        xor     eax, eax
2475
        stosd
2483
        stosd
2476
        mov     edx, edi
2484
        mov     edx, edi
2477
@@:
2485
@@:
2478
        lodsb
2486
        lodsb
2479
        test    al, al
2487
        test    al, al
2480
        jz      @f
2488
        jz      @f
2481
        cmp     edi, CopyDestEditBuf+12+511
2489
        cmp     edi, CopyDestEditBuf+12+511
2482
        jae     .bigfoldername
2490
        jae     .bigfoldername
2483
        stosb
2491
        stosb
2484
        jmp     @b
2492
        jmp     @b
2485
@@:
2493
@@:
2486
        mov     al, '/'
2494
        mov     al, '/'
2487
        stosb
2495
        stosb
2488
.f5_common:
2496
.f5_common:
2489
        mov     eax, [ebp + PanelData.hPlugin]
2497
        mov     eax, [ebp + PanelData.hPlugin]
2490
        mov     [source_hModule], eax
2498
        mov     [source_hModule], eax
2491
        mov     eax, [ebp + PanelData.hFile]
2499
        mov     eax, [ebp + PanelData.hFile]
2492
        mov     [source_hPlugin], eax
2500
        mov     [source_hPlugin], eax
2493
        mov     eax, left_dotdot_entry
2501
        mov     eax, left_dotdot_entry
2494
        cmp     ebp, panel1
2502
        cmp     ebp, panel1
2495
        jz      @f
2503
        jz      @f
2496
        add     eax, right_dotdot_entry-left_dotdot_entry
2504
        add     eax, right_dotdot_entry-left_dotdot_entry
2497
@@:
2505
@@:
2498
        mov     [default_attr], eax
2506
        mov     [default_attr], eax
2499
        mov     byte [edi], 0
2507
        mov     byte [edi], 0
2500
        sub     edi, edx
2508
        sub     edi, edx
2501
        mov     [edx-8], edi
2509
        mov     [edx-8], edi
2502
        mov     edi, CopySourceTextBuf
2510
        mov     edi, CopySourceTextBuf
2503
        mov     esi, aCopy1
2511
        mov     esi, aCopy1
2504
@@:
2512
@@:
2505
        lodsb
2513
        lodsb
2506
        test    al, al
2514
        test    al, al
2507
        jz      @f
2515
        jz      @f
2508
        stosb
2516
        stosb
2509
        jmp     @b
2517
        jmp     @b
2510
@@:
2518
@@:
2511
        mov     eax, [ebp + PanelData.selected_num]
2519
        mov     eax, [ebp + PanelData.selected_num]
2512
        test    eax, eax
2520
        test    eax, eax
2513
        jz      .f5_noselected1
2521
        jz      .f5_noselected1
2514
        mov     ebx, eax
2522
        mov     ebx, eax
2515
        push    10
2523
        push    10
2516
        pop     ecx
2524
        pop     ecx
2517
        push    -'0'
2525
        push    -'0'
2518
@@:
2526
@@:
2519
        xor     edx, edx
2527
        xor     edx, edx
2520
        div     ecx
2528
        div     ecx
2521
        push    edx
2529
        push    edx
2522
        test    eax, eax
2530
        test    eax, eax
2523
        jnz     @b
2531
        jnz     @b
2524
@@:
2532
@@:
2525
        pop     eax
2533
        pop     eax
2526
        add     al, '0'
2534
        add     al, '0'
2527
        jz      @f
2535
        jz      @f
2528
        stosb
2536
        stosb
2529
        jmp     @b
2537
        jmp     @b
2530
@@:
2538
@@:
2531
if lang eq ru
2539
if lang eq ru
2532
        mov     dword [edi], ' í«¥'
2540
        mov     dword [edi], ' í«¥'
2533
        mov     dword [edi+4], '¬¥­â'
2541
        mov     dword [edi+4], '¬¥­â'
2534
        add     edi, 8
2542
        add     edi, 8
2535
        cmp     ebx, 1
2543
        cmp     ebx, 1
2536
        jz      @f
2544
        jz      @f
2537
        mov     al, ' '
2545
        mov     al, ' '
2538
        stosb
2546
        stosb
2539
        cmp     ebx, 4
2547
        cmp     ebx, 4
2540
        jbe     @f
2548
        jbe     @f
2541
        mov     word [edi-1], '®¢'
2549
        mov     word [edi-1], '®¢'
2542
        inc     edi
2550
        inc     edi
2543
@@:
2551
@@:
2544
else
2552
else
2545
        mov     dword [edi], ' ite'
2553
        mov     dword [edi], ' ite'
2546
        mov     byte [edi+4], 'm'
2554
        mov     byte [edi+4], 'm'
2547
        add     edi, 5
2555
        add     edi, 5
2548
        cmp     ebx, 1
2556
        cmp     ebx, 1
2549
        jz      @f
2557
        jz      @f
2550
        mov     al, 's'
2558
        mov     al, 's'
2551
        stosb
2559
        stosb
2552
@@:
2560
@@:
2553
end if
2561
end if
2554
        jmp     .f5_selected1
2562
        jmp     .f5_selected1
2555
 
2563
 
2556
.f5_noselected1:
2564
.f5_noselected1:
2557
        mov     al, '"'
2565
        mov     al, '"'
2558
        stosb
2566
        stosb
2559
        call    get_curfile_folder_entry
2567
        call    get_curfile_folder_entry
2560
        lea     esi, [ecx+40]
2568
        lea     esi, [ecx+40]
2561
        lea     eax, [esi+1]
2569
        lea     eax, [esi+1]
2562
@@:
2570
@@:
2563
        inc     esi
2571
        inc     esi
2564
        cmp     byte [esi-1], 0
2572
        cmp     byte [esi-1], 0
2565
        jnz     @b
2573
        jnz     @b
2566
        sub     esi, eax
2574
        sub     esi, eax
2567
        xchg    eax, esi
2575
        xchg    eax, esi
2568
        dec     esi
2576
        dec     esi
2569
        mov     edx, [cur_width]
2577
        mov     edx, [cur_width]
2570
        sub     edx, 50
2578
        sub     edx, 50
2571
        sub     eax, edx
2579
        sub     eax, edx
2572
        jbe     @f
2580
        jbe     @f
2573
        add     esi, eax
2581
        add     esi, eax
2574
        mov     al, '.'
2582
        mov     al, '.'
2575
        stosb
2583
        stosb
2576
        stosb
2584
        stosb
2577
        stosb
2585
        stosb
2578
@@:
2586
@@:
2579
        lodsb
2587
        lodsb
2580
        test    al, al
2588
        test    al, al
2581
        jz      @f
2589
        jz      @f
2582
        stosb
2590
        stosb
2583
        jmp     @b
2591
        jmp     @b
2584
@@:
2592
@@:
2585
        mov     al, '"'
2593
        mov     al, '"'
2586
        stosb
2594
        stosb
2587
.f5_selected1:
2595
.f5_selected1:
2588
        mov     esi, aCopy2
2596
        mov     esi, aCopy2
2589
@@:
2597
@@:
2590
        lodsb
2598
        lodsb
2591
        stosb
2599
        stosb
2592
        test    al, al
2600
        test    al, al
2593
        jnz     @b
2601
        jnz     @b
2594
        mov     ebx, copy_dlgdata
2602
        mov     ebx, copy_dlgdata
2595
        mov     eax, [cur_width]
2603
        mov     eax, [cur_width]
2596
        sub     eax, 12
2604
        sub     eax, 12
2597
        mov     [ebx + dlgtemplate.width], eax
2605
        mov     [ebx + dlgtemplate.width], eax
2598
        dec     eax
2606
        dec     eax
2599
        dec     eax
2607
        dec     eax
2600
        mov     [ebx - copy_dlgdata + copy_dlgdata.lcopy.x2], eax
2608
        mov     [ebx - copy_dlgdata + copy_dlgdata.lcopy.x2], eax
2601
        mov     [ebx - copy_dlgdata + copy_dlgdata.ename.x2], eax
2609
        mov     [ebx - copy_dlgdata + copy_dlgdata.ename.x2], eax
2602
        shr     eax, 1
2610
        shr     eax, 1
2603
        dec     eax
2611
        dec     eax
2604
        dec     eax
2612
        dec     eax
2605
        mov     [ebx - copy_dlgdata + copy_dlgdata.copy.x2], eax
2613
        mov     [ebx - copy_dlgdata + copy_dlgdata.copy.x2], eax
2606
        sub     eax, aCopyLength-1
2614
        sub     eax, aCopyLength-1
2607
        mov     [ebx - copy_dlgdata + copy_dlgdata.copy.x1], eax
2615
        mov     [ebx - copy_dlgdata + copy_dlgdata.copy.x1], eax
2608
        add     eax, aCopyLength+3
2616
        add     eax, aCopyLength+3
2609
        mov     [ebx - copy_dlgdata + copy_dlgdata.cnl.x1], eax
2617
        mov     [ebx - copy_dlgdata + copy_dlgdata.cnl.x1], eax
2610
        add     eax, aCancelBLength - 1
2618
        add     eax, aCancelBLength - 1
2611
        mov     [ebx - copy_dlgdata + copy_dlgdata.cnl.x2], eax
2619
        mov     [ebx - copy_dlgdata + copy_dlgdata.cnl.x2], eax
2612
        mov     byte [ebx - copy_dlgdata + copy_dlgdata.ename.flags], 0xC
2620
        mov     byte [ebx - copy_dlgdata + copy_dlgdata.ename.flags], 0xC
2613
        and     byte [ebx - copy_dlgdata + copy_dlgdata.copy.flags], not 4
2621
        and     byte [ebx - copy_dlgdata + copy_dlgdata.copy.flags], not 4
2614
        and     byte [ebx - copy_dlgdata + copy_dlgdata.cnl.flags], not 4
2622
        and     byte [ebx - copy_dlgdata + copy_dlgdata.cnl.flags], not 4
2615
        push    ebx
2623
        push    ebx
2616
        call    DialogBox
2624
        call    DialogBox
2617
        cmp     eax, copy_dlgdata.copy
2625
        cmp     eax, copy_dlgdata.copy
2618
        jnz     .ret2
2626
        jnz     .ret2
2619
; Š®¯¨à㥬
2627
; Š®¯¨à㥬
2620
        mov     esi, CopyDestEditBuf+12
2628
        mov     esi, CopyDestEditBuf+12
2621
        mov     edi, esi
2629
        mov     edi, esi
2622
        xor     eax, eax
2630
        xor     eax, eax
2623
        or      ecx, -1
2631
        or      ecx, -1
2624
        repnz   scasb
2632
        repnz   scasb
2625
        dec     edi
2633
        dec     edi
2626
        dec     edi
2634
        dec     edi
2627
        cmp     edi, esi
2635
        cmp     edi, esi
2628
        jb      .ret2
2636
        jb      .ret2
2629
        mov     [bEndSlash], 0
2637
        mov     [bEndSlash], 0
2630
        cmp     byte [edi], '/'
2638
        cmp     byte [edi], '/'
2631
        jnz     @f
2639
        jnz     @f
2632
        cmp     edi, esi
2640
        cmp     edi, esi
2633
        jz      @f
2641
        jz      @f
2634
        mov     byte [edi], 0
2642
        mov     byte [edi], 0
2635
        dec     edi
2643
        dec     edi
2636
        mov     [bEndSlash], 1
2644
        mov     [bEndSlash], 1
2637
@@:
2645
@@:
2638
; …᫨ ¯ãâì ­¥ ­ ç¨­ ¥âáï á® á«íè , áç¨â ¥¬ ¥£® ®â­®á¨â¥«ì­® ⥪ã饩 ¯ ¯ª¨
2646
; …᫨ ¯ãâì ­¥ ­ ç¨­ ¥âáï á® á«íè , áç¨â ¥¬ ¥£® ®â­®á¨â¥«ì­® ⥪ã饩 ¯ ¯ª¨
2639
        cmp     byte [esi], '/'
2647
        cmp     byte [esi], '/'
2640
        jz      .copy_absolute_path
2648
        jz      .copy_absolute_path
2641
        push    esi
2649
        push    esi
2642
        push    edi
2650
        push    edi
2643
        lea     edi, [ebp + PanelData.dir]
2651
        lea     edi, [ebp + PanelData.dir]
2644
        or      ecx, -1
2652
        or      ecx, -1
2645
        xor     eax, eax
2653
        xor     eax, eax
2646
        repnz   scasb
2654
        repnz   scasb
2647
        not     ecx
2655
        not     ecx
2648
        pop     edi
2656
        pop     edi
2649
        push    edi
2657
        push    edi
2650
        add     edi, ecx
2658
        add     edi, ecx
2651
        cmp     edi, CopyDestEditBuf+12+513
2659
        cmp     edi, CopyDestEditBuf+12+513
2652
        pop     edi
2660
        pop     edi
2653
        jb      @f
2661
        jb      @f
2654
        pop     esi
2662
        pop     esi
2655
        jmp     .bigfilename
2663
        jmp     .bigfilename
2656
@@:
2664
@@:
2657
        lea     edx, [edi+2]
2665
        lea     edx, [edi+2]
2658
        sub     edx, esi
2666
        sub     edx, esi
2659
        lea     edi, [edi+ecx+1]
2667
        lea     edi, [edi+ecx+1]
2660
        xchg    ecx, edx
2668
        xchg    ecx, edx
2661
        std
2669
        std
2662
        lea     esi, [esi+ecx-1]
2670
        lea     esi, [esi+ecx-1]
2663
        rep     movsb
2671
        rep     movsb
2664
        cld
2672
        cld
2665
        pop     edi
2673
        pop     edi
2666
        lea     esi, [ebp + PanelData.dir]
2674
        lea     esi, [ebp + PanelData.dir]
2667
        push    edi
2675
        push    edi
2668
        mov     ecx, edx
2676
        mov     ecx, edx
2669
        rep     movsb
2677
        rep     movsb
2670
        mov     byte [edi-1], '/'
2678
        mov     byte [edi-1], '/'
2671
        pop     esi
2679
        pop     esi
2672
.copy_absolute_path:
2680
.copy_absolute_path:
2673
; ‘­ ç «  ᮧ¤ ñ¬ ¢á¥ ¢ë襫¥¦ é¨¥ ¯ ¯ª¨, ª®â®àë¥ ¥éñ ­¥ áãé¥áâ¢ãîâ
2681
; ‘­ ç «  ᮧ¤ ñ¬ ¢á¥ ¢ë襫¥¦ é¨¥ ¯ ¯ª¨, ª®â®àë¥ ¥éñ ­¥ áãé¥áâ¢ãîâ
2674
; ®á«¥¤­¨© ¨§ í«¥¬¥­â®¢ ¬®¦¥â ¡ëâì ª ª ä ©«®¬, â ª ¨ ¯ ¯ª®©;
2682
; ®á«¥¤­¨© ¨§ í«¥¬¥­â®¢ ¬®¦¥â ¡ëâì ª ª ä ©«®¬, â ª ¨ ¯ ¯ª®©;
2675
; ä®àá¨à㥬 ¯ ¯ªã ¢ á«ãç ¥, ¥á«¨ å®âï ¡ë ®¤¨­ ¨§ ¨áâ®ç­¨ª®¢ ï¥âáï ¯ ¯ª®©
2683
; ä®àá¨à㥬 ¯ ¯ªã ¢ á«ãç ¥, ¥á«¨ å®âï ¡ë ®¤¨­ ¨§ ¨áâ®ç­¨ª®¢ ï¥âáï ¯ ¯ª®©
2676
        xor     edx, edx
2684
        xor     edx, edx
2677
        cmp     [ebp + PanelData.selected_num], 0
2685
        cmp     [ebp + PanelData.selected_num], 0
2678
        jz      .f5_noselected2
2686
        jz      .f5_noselected2
2679
        mov     ecx, [ebp + PanelData.numfiles]
2687
        mov     ecx, [ebp + PanelData.numfiles]
2680
        mov     edi, [ebp + PanelData.files]
2688
        mov     edi, [ebp + PanelData.files]
2681
.scanselected2:
2689
.scanselected2:
2682
        mov     eax, [edi]
2690
        mov     eax, [edi]
2683
        add     edi, 4
2691
        add     edi, 4
2684
        test    byte [eax+303], 1
2692
        test    byte [eax+303], 1
2685
        jz      @f
2693
        jz      @f
2686
        test    byte [eax], 10h
2694
        test    byte [eax], 10h
2687
        jz      @f
2695
        jz      @f
2688
        inc     edx
2696
        inc     edx
2689
@@:
2697
@@:
2690
        loop    .scanselected2
2698
        loop    .scanselected2
2691
        jmp     .f5_selected2
2699
        jmp     .f5_selected2
2692
.f5_noselected2:
2700
.f5_noselected2:
2693
        call    get_curfile_folder_entry
2701
        call    get_curfile_folder_entry
2694
        test    byte [ecx], 10h
2702
        test    byte [ecx], 10h
2695
        setnz   dl
2703
        setnz   dl
2696
.f5_selected2:
2704
.f5_selected2:
2697
        xor     eax, eax
2705
        xor     eax, eax
2698
        mov     edi, esi
2706
        mov     edi, esi
2699
.countslashloop:
2707
.countslashloop:
2700
        cmp     byte [edi], '/'
2708
        cmp     byte [edi], '/'
2701
        jnz     @f
2709
        jnz     @f
2702
        inc     eax
2710
        inc     eax
2703
        mov     ecx, edi
2711
        mov     ecx, edi
2704
@@:
2712
@@:
2705
        inc     edi
2713
        inc     edi
2706
        cmp     byte [edi], 0
2714
        cmp     byte [edi], 0
2707
        jnz     .countslashloop
2715
        jnz     .countslashloop
2708
        mov     [bNeedRestoreName], 0
2716
        mov     [bNeedRestoreName], 0
2709
; "/file-system/partition" folders already exist, so we don't need to create them
2717
; "/file-system/partition" folders already exist, so we don't need to create them
2710
        cmp     eax, 2
2718
        cmp     eax, 2
2711
        jbe     .createupdone
2719
        jbe     .createupdone
2712
; we interpret destination as folder if edx!=0 or bEndSlash!=0
2720
; we interpret destination as folder if edx!=0 or bEndSlash!=0
2713
        test    edx, edx
2721
        test    edx, edx
2714
        jnz     @f
2722
        jnz     @f
2715
        cmp     [bEndSlash], 0
2723
        cmp     [bEndSlash], 0
2716
        jnz     @f
2724
        jnz     @f
2717
        mov     edi, ecx
2725
        mov     edi, ecx
2718
        dec     eax
2726
        dec     eax
2719
@@:
2727
@@:
2720
        mov     [attrinfo.name], esi
2728
        mov     [attrinfo.name], esi
2721
        mov     ecx, eax
2729
        mov     ecx, eax
2722
; ¨é¥¬ ¯®á«¥¤­îî ¯ ¯ªã, ª®â®à ï ¥éñ áãé¥áâ¢ã¥â
2730
; ¨é¥¬ ¯®á«¥¤­îî ¯ ¯ªã, ª®â®à ï ¥éñ áãé¥áâ¢ã¥â
2723
.createuploop1:
2731
.createuploop1:
2724
        cmp     eax, 2
2732
        cmp     eax, 2
2725
        jbe     .createupdone1
2733
        jbe     .createupdone1
2726
        mov     dl, [edi]
2734
        mov     dl, [edi]
2727
        mov     byte [edi], 0
2735
        mov     byte [edi], 0
2728
        push    eax
2736
        push    eax
2729
        push    SF_FILE
2737
        push    SF_FILE
2730
        pop     eax
2738
        pop     eax
2731
        mov     ebx, attrinfo
2739
        mov     ebx, attrinfo
2732
        int     0x40
2740
        int     0x40
2733
        test    eax, eax
2741
        test    eax, eax
2734
        pop     eax
2742
        pop     eax
2735
        mov     byte [edi], dl
2743
        mov     byte [edi], dl
2736
        jnz     .createupcont1
2744
        jnz     .createupcont1
2737
        test    byte [attrinfo.attr], 10h
2745
        test    byte [attrinfo.attr], 10h
2738
        jnz     .createupdone1
2746
        jnz     .createupdone1
2739
; the item required to be a folder, but is file
2747
; the item required to be a folder, but is file
2740
        push    aNotFolder
2748
        push    aNotFolder
2741
        push    esi
2749
        push    esi
2742
        mov     eax, esp
2750
        mov     eax, esp
2743
        push    ContinueBtn
2751
        push    ContinueBtn
2744
        push    1
2752
        push    1
2745
        push    eax
2753
        push    eax
2746
        push    2
2754
        push    2
2747
        call    SayErr
2755
        call    SayErr
2748
        pop     eax
2756
        pop     eax
2749
        pop     eax
2757
        pop     eax
2750
.ret3:
2758
.ret3:
2751
        ret
2759
        ret
2752
.createupcont1:
2760
.createupcont1:
2753
        dec     eax
2761
        dec     eax
2754
@@:
2762
@@:
2755
        dec     edi
2763
        dec     edi
2756
        cmp     byte [edi], '/'
2764
        cmp     byte [edi], '/'
2757
        jnz     @b
2765
        jnz     @b
2758
        jmp     .createuploop1
2766
        jmp     .createuploop1
2759
.createupdone1:
2767
.createupdone1:
2760
; ᮧ¤ ñ¬ ¢á¥ ¯ ¯ª¨, ª®â®àë¥ ­ ¬ ­ã¦­ë
2768
; ᮧ¤ ñ¬ ¢á¥ ¯ ¯ª¨, ª®â®àë¥ ­ ¬ ­ã¦­ë
2761
        cmp     eax, ecx
2769
        cmp     eax, ecx
2762
        jae     .createupdone
2770
        jae     .createupdone
2763
@@:
2771
@@:
2764
        inc     edi
2772
        inc     edi
2765
        cmp     byte [edi], 0
2773
        cmp     byte [edi], 0
2766
        jz      @f
2774
        jz      @f
2767
        cmp     byte [edi], '/'
2775
        cmp     byte [edi], '/'
2768
        jnz     @b
2776
        jnz     @b
2769
@@:
2777
@@:
2770
        mov     dl, byte [edi]
2778
        mov     dl, byte [edi]
2771
        mov     byte [edi], 0
2779
        mov     byte [edi], 0
2772
        push    eax
2780
        push    eax
2773
        push    RetryOrCancelBtn
2781
        push    RetryOrCancelBtn
2774
        push    2
2782
        push    2
2775
        call    makedir
2783
        call    makedir
2776
        mov     byte [edi], dl
2784
        mov     byte [edi], dl
2777
        mov     [bNeedRestoreName], 1
2785
        mov     [bNeedRestoreName], 1
2778
        pop     eax
2786
        pop     eax
2779
        jnz     .ret3
2787
        jnz     .ret3
2780
        inc     eax
2788
        inc     eax
2781
        jmp     .createupdone1
2789
        jmp     .createupdone1
2782
.createupdone:
2790
.createupdone:
2783
        mov     dl, 1
2791
        mov     dl, 1
2784
        cmp     byte [edi], 1
2792
        cmp     byte [edi], 1
2785
        sbb     eax, -1
2793
        sbb     eax, -1
2786
        cmp     eax, 2
2794
        cmp     eax, 2
2787
        jbe     .docopy
2795
        jbe     .docopy
2788
        mov     [attrinfo.attr], 0      ; assume zero attributes if error
2796
        mov     [attrinfo.attr], 0      ; assume zero attributes if error
2789
        push    SF_FILE
2797
        push    SF_FILE
2790
        pop     eax
2798
        pop     eax
2791
        mov     ebx, attrinfo
2799
        mov     ebx, attrinfo
2792
        int     0x40
2800
        int     0x40
2793
        test    [attrinfo.attr], 10h
2801
        test    [attrinfo.attr], 10h
2794
        setnz   dl
2802
        setnz   dl
2795
.docopy:
2803
.docopy:
2796
        call    get_curfile_folder_entry
2804
        call    get_curfile_folder_entry
2797
        mov     eax, ecx
2805
        mov     eax, ecx
2798
        cmp     [bNeedRestoreName], 0
2806
        cmp     [bNeedRestoreName], 0
2799
        jz      @f
2807
        jz      @f
2800
        cmp     [bEndSlash], 0
2808
        cmp     [bEndSlash], 0
2801
        jnz     @f
2809
        jnz     @f
2802
        cmp     [ebp + PanelData.selected_num], 0
2810
        cmp     [ebp + PanelData.selected_num], 0
2803
        jnz     @f
2811
        jnz     @f
2804
        test    byte [eax], 10h
2812
        test    byte [eax], 10h
2805
        jz      @f
2813
        jz      @f
2806
        mov     dl, 0
2814
        mov     dl, 0
2807
@@:
2815
@@:
2808
; ­ ç¨­ ¥¬ ᮡá⢥­­® ª®¯¨à®¢ ­¨¥
2816
; ­ ç¨­ ¥¬ ᮡá⢥­­® ª®¯¨à®¢ ­¨¥
2809
        mov     [bDestIsFolder], dl
2817
        mov     [bDestIsFolder], dl
2810
        mov     [copy_bSkipAll], 0
2818
        mov     [copy_bSkipAll], 0
2811
        mov     [copy_bSkipAll2], 0
2819
        mov     [copy_bSkipAll2], 0
2812
        mov     [copy_bSkipAll3], 0
2820
        mov     [copy_bSkipAll3], 0
2813
        test    [ebp + PanelData.plugin_flags], 2
2821
        test    [ebp + PanelData.plugin_flags], 2
2814
        jnz     .copy_GetFiles
2822
        jnz     .copy_GetFiles
2815
        cmp     [ebp + PanelData.selected_num], 0
2823
        cmp     [ebp + PanelData.selected_num], 0
2816
        jnz     .f5_selected3
2824
        jnz     .f5_selected3
2817
        call    copy_file
2825
        call    copy_file
2818
.copydone:
2826
.copydone:
2819
        push    ebp
2827
        push    ebp
2820
        call    .ctrl_r
2828
        call    .ctrl_r
2821
        pop     ebp
2829
        pop     ebp
2822
        xor     ebp, panel1 xor panel2
2830
        xor     ebp, panel1 xor panel2
2823
        jmp     .ctrl_r
2831
        jmp     .ctrl_r
2824
.f5_selected3:
2832
.f5_selected3:
2825
        mov     ecx, [ebp + PanelData.numfiles]
2833
        mov     ecx, [ebp + PanelData.numfiles]
2826
        mov     esi, [ebp + PanelData.files]
2834
        mov     esi, [ebp + PanelData.files]
2827
.f5_selected_copyloop:
2835
.f5_selected_copyloop:
2828
        lodsd
2836
        lodsd
2829
        test    byte [eax+303], 1
2837
        test    byte [eax+303], 1
2830
        jz      .f5_selected_copycont
2838
        jz      .f5_selected_copycont
2831
        mov     [bDestIsFolder], dl
2839
        mov     [bDestIsFolder], dl
2832
        call    copy_file
2840
        call    copy_file
2833
        ja      .f5_multiple_cancel
2841
        ja      .f5_multiple_cancel
2834
        and     byte [eax+303], not 1
2842
        and     byte [eax+303], not 1
2835
        pushad
2843
        pushad
2836
        call    draw_panel
2844
        call    draw_panel
2837
        cmp     [bNeedRestoreName], 0
2845
        cmp     [bNeedRestoreName], 0
2838
        jz      @f
2846
        jz      @f
2839
        mov     esi, CopyDestEditBuf+12
2847
        mov     esi, CopyDestEditBuf+12
2840
        call    delete_last_name_from_end
2848
        call    delete_last_name_from_end
2841
@@:
2849
@@:
2842
        popad
2850
        popad
2843
.f5_selected_copycont:
2851
.f5_selected_copycont:
2844
        loop    .f5_selected_copyloop
2852
        loop    .f5_selected_copyloop
2845
.f5_multiple_cancel:
2853
.f5_multiple_cancel:
2846
        jmp     .copydone
2854
        jmp     .copydone
2847
.copy_GetFiles:
2855
.copy_GetFiles:
2848
        mov     ecx, [ebp + PanelData.selected_num]
2856
        mov     ecx, [ebp + PanelData.selected_num]
2849
        cmp     ecx, 1
2857
        cmp     ecx, 1
2850
        adc     ecx, 0
2858
        adc     ecx, 0
2851
        shl     ecx, 2
2859
        shl     ecx, 2
2852
        call    xpgalloc
2860
        call    xpgalloc
2853
        test    eax, eax
2861
        test    eax, eax
2854
        jnz     @f
2862
        jnz     @f
2855
        ret
2863
        ret
2856
@@:
2864
@@:
2857
        push    ebp eax ; save
2865
        push    ebp eax ; save
2858
        push    copy_AddDir     ; adddir
2866
        push    copy_AddDir     ; adddir
2859
        push    copy_AddFile    ; addfile
2867
        push    copy_AddFile    ; addfile
2860
        push    eax             ; items
2868
        push    eax             ; items
2861
        shr     ecx, 2
2869
        shr     ecx, 2
2862
        push    ecx             ; NumItems
2870
        push    ecx             ; NumItems
2863
        push    [ebp + PanelData.hFile]
2871
        push    [ebp + PanelData.hFile]
2864
        mov     edi, eax
2872
        mov     edi, eax
2865
        call    get_curfile_folder_entry
2873
        call    get_curfile_folder_entry
2866
        mov     [edi], ecx
2874
        mov     [edi], ecx
2867
        cmp     [ebp + PanelData.selected_num], 0
2875
        cmp     [ebp + PanelData.selected_num], 0
2868
        jz      .cgf1
2876
        jz      .cgf1
2869
        mov     esi, [ebp + PanelData.files]
2877
        mov     esi, [ebp + PanelData.files]
2870
        mov     ecx, [ebp + PanelData.numfiles]
2878
        mov     ecx, [ebp + PanelData.numfiles]
2871
.cgf0:
2879
.cgf0:
2872
        lodsd
2880
        lodsd
2873
        test    byte [eax+303], 1
2881
        test    byte [eax+303], 1
2874
        jz      @f
2882
        jz      @f
2875
        stosd
2883
        stosd
2876
@@:
2884
@@:
2877
        loop    .cgf0
2885
        loop    .cgf0
2878
.cgf1:
2886
.cgf1:
2879
        mov     eax, [ebp + PanelData.hPlugin]
2887
        mov     eax, [ebp + PanelData.hPlugin]
2880
        call    [eax+PluginInfo.GetFiles]
2888
        call    [eax+PluginInfo.GetFiles]
2881
        pop     ecx ebp
2889
        pop     ecx ebp
2882
        call    pgfree
2890
        call    pgfree
2883
        jmp     .copydone
2891
        jmp     .copydone
2884
 
2892
 
2885
.f3:
2893
.f3:
2886
        mov     eax, [ebp + PanelData.files]
2894
        mov     eax, [ebp + PanelData.files]
2887
        mov     ecx, [eax+ecx*4]
2895
        mov     ecx, [eax+ecx*4]
2888
        test    byte [ecx], 10h
2896
        test    byte [ecx], 10h
2889
        jnz     .ret2
2897
        jnz     .ret2
2890
        lea     esi, [ebp + PanelData.dir]
2898
        lea     esi, [ebp + PanelData.dir]
2891
        xor     eax, eax
2899
        xor     eax, eax
2892
        call    view_file
2900
        call    view_file
2893
.ret2:
2901
.ret2:
2894
        ret
2902
        ret
2895
.f4:
2903
.f4:
2896
        call    edit_file
2904
        call    edit_file
2897
        ret
2905
        ret
2898
.f8_has_selected:
2906
.f8_has_selected:
2899
        mov     edi, saved_file_name+511
2907
        mov     edi, saved_file_name+511
2900
        mov     byte [edi], 0
2908
        mov     byte [edi], 0
2901
        mov     eax, [ebp + PanelData.selected_num]
2909
        mov     eax, [ebp + PanelData.selected_num]
2902
if lang eq ru
2910
if lang eq ru
2903
        cmp     eax, 1
2911
        cmp     eax, 1
2904
        jz      @f
2912
        jz      @f
2905
        dec     edi
2913
        dec     edi
2906
        mov     byte [edi], ' '
2914
        mov     byte [edi], ' '
2907
        cmp     eax, 4
2915
        cmp     eax, 4
2908
        jbe     @f
2916
        jbe     @f
2909
        dec     edi
2917
        dec     edi
2910
        mov     word [edi], '®¢'
2918
        mov     word [edi], '®¢'
2911
@@:
2919
@@:
2912
        mov     dword [edi-4], '¬¥­â'
2920
        mov     dword [edi-4], '¬¥­â'
2913
        mov     dword [edi-8], ' í«¥'
2921
        mov     dword [edi-8], ' í«¥'
2914
        sub     edi, 8
2922
        sub     edi, 8
2915
else
2923
else
2916
        cmp     eax, 1
2924
        cmp     eax, 1
2917
        jz      @f
2925
        jz      @f
2918
        dec     edi
2926
        dec     edi
2919
        mov     byte [edi], 's'
2927
        mov     byte [edi], 's'
2920
@@:
2928
@@:
2921
        mov     dword [edi-4], 'item'
2929
        mov     dword [edi-4], 'item'
2922
        mov     byte [edi-5], ' '
2930
        mov     byte [edi-5], ' '
2923
        sub     edi, 5
2931
        sub     edi, 5
2924
end if
2932
end if
2925
        xor     edx, edx
2933
        xor     edx, edx
2926
        push    10
2934
        push    10
2927
        pop     ecx
2935
        pop     ecx
2928
@@:
2936
@@:
2929
        div     ecx
2937
        div     ecx
2930
        add     dl, '0'
2938
        add     dl, '0'
2931
        dec     edi
2939
        dec     edi
2932
        mov     [edi], dl
2940
        mov     [edi], dl
2933
        xor     edx, edx
2941
        xor     edx, edx
2934
        test    eax, eax
2942
        test    eax, eax
2935
        jnz     @b
2943
        jnz     @b
2936
        push    edi
2944
        push    edi
2937
        push    aConfirmDeleteText
2945
        push    aConfirmDeleteText
2938
        mov     eax, esp
2946
        mov     eax, esp
2939
        push    DeleteOrCancelBtn
2947
        push    DeleteOrCancelBtn
2940
        push    2
2948
        push    2
2941
        push    eax
2949
        push    eax
2942
        push    2
2950
        push    2
2943
        push    aDeleteCaption
2951
        push    aDeleteCaption
2944
        call    Message
2952
        call    Message
2945
        add     esp, 8
2953
        add     esp, 8
2946
        test    eax, eax
2954
        test    eax, eax
2947
        jnz     .ret2
2955
        jnz     .ret2
2948
        mov     [del_bSkipAll], 0
2956
        mov     [del_bSkipAll], 0
2949
        mov     ecx, [ebp + PanelData.numfiles]
2957
        mov     ecx, [ebp + PanelData.numfiles]
2950
        jecxz   .ret2
2958
        jecxz   .ret2
2951
        mov     esi, [ebp + PanelData.files]
2959
        mov     esi, [ebp + PanelData.files]
2952
.f8_loop:
2960
.f8_loop:
2953
        lodsd
2961
        lodsd
2954
        test    byte [eax+303], 1
2962
        test    byte [eax+303], 1
2955
        jz      @f
2963
        jz      @f
2956
        call    delete_file
2964
        call    delete_file
2957
        ja      .f8_multiple_cancel
2965
        ja      .f8_multiple_cancel
2958
@@:
2966
@@:
2959
        loop    .f8_loop
2967
        loop    .f8_loop
2960
.f8_multiple_cancel:
2968
.f8_multiple_cancel:
2961
        jmp     .copydone
2969
        jmp     .copydone
2962
.f8:
2970
.f8:
2963
; todo: delete files from plugin panel
2971
; todo: delete files from plugin panel
2964
        cmp     [ebp + PanelData.hPlugin], 0
2972
        cmp     [ebp + PanelData.hPlugin], 0
2965
        jz      @f
2973
        jz      @f
2966
        ret
2974
        ret
2967
@@:
2975
@@:
2968
        cmp     [ebp + PanelData.selected_num], 0
2976
        cmp     [ebp + PanelData.selected_num], 0
2969
        jnz     .f8_has_selected
2977
        jnz     .f8_has_selected
2970
        call    get_curfile_folder_entry
2978
        call    get_curfile_folder_entry
2971
        cmp     word [ecx+40], '..'
2979
        cmp     word [ecx+40], '..'
2972
        jnz     @f
2980
        jnz     @f
2973
        cmp     byte [ecx+42], 0
2981
        cmp     byte [ecx+42], 0
2974
        jz      .f8_not_allowed
2982
        jz      .f8_not_allowed
2975
@@:
2983
@@:
2976
        cmp     [bConfirmDelete], 0
2984
        cmp     [bConfirmDelete], 0
2977
        jz      .f8_allowed
2985
        jz      .f8_allowed
2978
        lea     eax, [ecx+40]
2986
        lea     eax, [ecx+40]
2979
        push    eax
2987
        push    eax
2980
        mov     esi, aConfirmDeleteText
2988
        mov     esi, aConfirmDeleteText
2981
        mov     edi, aConfirmDeleteTextBuf
2989
        mov     edi, aConfirmDeleteTextBuf
2982
        push    edi
2990
        push    edi
2983
@@:
2991
@@:
2984
        lodsb
2992
        lodsb
2985
        stosb
2993
        stosb
2986
        test    al, al
2994
        test    al, al
2987
        jnz     @b
2995
        jnz     @b
2988
        dec     edi
2996
        dec     edi
2989
        mov     esi, aDeleteFolder
2997
        mov     esi, aDeleteFolder
2990
        test    byte [ecx], 10h
2998
        test    byte [ecx], 10h
2991
        jnz     @f
2999
        jnz     @f
2992
        mov     esi, aDeleteFile
3000
        mov     esi, aDeleteFile
2993
@@:
3001
@@:
2994
        lodsb
3002
        lodsb
2995
        stosb
3003
        stosb
2996
        test    al, al
3004
        test    al, al
2997
        jnz     @b
3005
        jnz     @b
2998
        mov     eax, esp
3006
        mov     eax, esp
2999
        push    DeleteOrCancelBtn
3007
        push    DeleteOrCancelBtn
3000
        push    2
3008
        push    2
3001
        push    eax
3009
        push    eax
3002
        push    2
3010
        push    2
3003
        push    aDeleteCaption
3011
        push    aDeleteCaption
3004
        call    Message
3012
        call    Message
3005
        add     esp, 8
3013
        add     esp, 8
3006
        test    eax, eax
3014
        test    eax, eax
3007
        jz      .f8_allowed
3015
        jz      .f8_allowed
3008
.f8_not_allowed:
3016
.f8_not_allowed:
3009
        ret
3017
        ret
3010
.f8_allowed:
3018
.f8_allowed:
3011
        mov     [del_bSkipAll], 0
3019
        mov     [del_bSkipAll], 0
3012
        mov     eax, ecx
3020
        mov     eax, ecx
3013
        call    delete_file
3021
        call    delete_file
3014
        jmp     .copydone
3022
        jmp     .copydone
3015
.ctrl_r:
3023
.ctrl_r:
3016
; Rescan panel
3024
; Rescan panel
3017
;       call    read_folder
3025
;       call    read_folder
3018
;       jmp     .done_redraw
3026
;       jmp     .done_redraw
3019
        mov     eax, [ebp + PanelData.index]
3027
        mov     eax, [ebp + PanelData.index]
3020
        push    eax
3028
        push    eax
3021
        call    get_curfile_name
3029
        call    get_curfile_name
3022
        mov     esi, ecx
3030
        mov     esi, ecx
3023
        mov     edi, saved_file_name
3031
        mov     edi, saved_file_name
3024
@@:
3032
@@:
3025
        lodsb
3033
        lodsb
3026
        stosb
3034
        stosb
3027
        test    al, al
3035
        test    al, al
3028
        jnz     @b
3036
        jnz     @b
3029
.ctrl_r.doread:
3037
.ctrl_r.doread:
3030
        push    [ebp + PanelData.start]
3038
        push    [ebp + PanelData.start]
3031
        call    read_folder
3039
        call    read_folder
3032
        pop     [ebp + PanelData.start]
3040
        pop     [ebp + PanelData.start]
3033
        pop     [ebp + PanelData.index]
3041
        pop     [ebp + PanelData.index]
3034
        or      eax, -1
3042
        or      eax, -1
3035
@@:
3043
@@:
3036
        inc     eax
3044
        inc     eax
3037
        cmp     eax, [ebp + PanelData.numfiles]
3045
        cmp     eax, [ebp + PanelData.numfiles]
3038
        jae     .ctrl_r.notfound
3046
        jae     .ctrl_r.notfound
3039
        mov     ecx, [ebp + PanelData.files]
3047
        mov     ecx, [ebp + PanelData.files]
3040
        mov     esi, [ecx+eax*4]
3048
        mov     esi, [ecx+eax*4]
3041
        add     esi, 40
3049
        add     esi, 40
3042
        mov     edi, saved_file_name
3050
        mov     edi, saved_file_name
3043
        call    strcmpi
3051
        call    strcmpi
3044
        jnz     @b
3052
        jnz     @b
3045
.ctrl_r.found:
3053
.ctrl_r.found:
3046
        mov     [ebp + PanelData.index], eax
3054
        mov     [ebp + PanelData.index], eax
3047
.ctrl_r.notfound:
3055
.ctrl_r.notfound:
3048
        mov     eax, [ebp + PanelData.numfiles]
3056
        mov     eax, [ebp + PanelData.numfiles]
3049
        dec     eax
3057
        dec     eax
3050
        cmp     [ebp + PanelData.index], eax
3058
        cmp     [ebp + PanelData.index], eax
3051
        jbe     @f
3059
        jbe     @f
3052
        mov     [ebp + PanelData.index], eax
3060
        mov     [ebp + PanelData.index], eax
3053
@@:
3061
@@:
3054
        mov     eax, [ebp + PanelData.index]
3062
        mov     eax, [ebp + PanelData.index]
3055
        cmp     [ebp + PanelData.start], eax
3063
        cmp     [ebp + PanelData.start], eax
3056
        jbe     @f
3064
        jbe     @f
3057
        mov     [ebp + PanelData.start], eax
3065
        mov     [ebp + PanelData.start], eax
3058
@@:
3066
@@:
3059
        inc     eax
3067
        inc     eax
3060
        sub     eax, [ebp + PanelData.colst]
3068
        sub     eax, [ebp + PanelData.colst]
3061
        jae     @f
3069
        jae     @f
3062
        xor     eax, eax
3070
        xor     eax, eax
3063
@@:
3071
@@:
3064
        cmp     [ebp + PanelData.start], eax
3072
        cmp     [ebp + PanelData.start], eax
3065
        jae     @f
3073
        jae     @f
3066
        mov     [ebp + PanelData.start], eax
3074
        mov     [ebp + PanelData.start], eax
3067
@@:
3075
@@:
3068
        mov     eax, [ebp + PanelData.numfiles]
3076
        mov     eax, [ebp + PanelData.numfiles]
3069
        sub     eax, [ebp + PanelData.colst]
3077
        sub     eax, [ebp + PanelData.colst]
3070
        jbe     @f
3078
        jbe     @f
3071
        cmp     [ebp + PanelData.start], eax
3079
        cmp     [ebp + PanelData.start], eax
3072
        jbe     @f
3080
        jbe     @f
3073
        mov     [ebp + PanelData.start], eax
3081
        mov     [ebp + PanelData.start], eax
3074
@@:
3082
@@:
3075
        jmp     .done_redraw
3083
        jmp     .done_redraw
3076
.menu:
3084
.menu:
3077
; todo: context menu for plugin panel
3085
; todo: context menu for plugin panel
3078
        cmp     [ebp + PanelData.hPlugin], 0
3086
        cmp     [ebp + PanelData.hPlugin], 0
3079
        jz      @f
3087
        jz      @f
3080
        ret
3088
        ret
3081
@@:
3089
@@:
3082
; display context menu
3090
; display context menu
3083
; ignore folders
3091
; ignore folders
3084
        call    get_curfile_folder_entry
3092
        call    get_curfile_folder_entry
3085
        test    byte [ecx], 10h
3093
        test    byte [ecx], 10h
3086
        jz      @f
3094
        jz      @f
3087
.menuret:
3095
.menuret:
3088
        ret
3096
        ret
3089
@@:
3097
@@:
3090
        call    find_extension
3098
        call    find_extension
3091
        jc      .menuret
3099
        jc      .menuret
3092
; known extension
3100
; known extension
3093
@@:
3101
@@:
3094
        cmp     byte [edi], 0
3102
        cmp     byte [edi], 0
3095
        jz      .menuret
3103
        jz      .menuret
3096
        cmp     byte [edi], ';'
3104
        cmp     byte [edi], ';'
3097
        jz      @f
3105
        jz      @f
3098
        inc     edi
3106
        inc     edi
3099
        jmp     @b
3107
        jmp     @b
3100
@@:
3108
@@:
3101
        inc     edi
3109
        inc     edi
3102
@@:
3110
@@:
3103
        inc     edi
3111
        inc     edi
3104
        cmp     byte [edi-1], ' '
3112
        cmp     byte [edi-1], ' '
3105
        jz      @b
3113
        jz      @b
3106
        cmp     byte [edi-1], 9
3114
        cmp     byte [edi-1], 9
3107
        jz      @b
3115
        jz      @b
3108
        dec     edi
3116
        dec     edi
3109
        cmp     byte [edi], 0
3117
        cmp     byte [edi], 0
3110
        jz      .menuret
3118
        jz      .menuret
3111
        mov     ecx, esi
3119
        mov     ecx, esi
3112
@@:
3120
@@:
3113
        inc     ecx
3121
        inc     ecx
3114
        cmp     byte [ecx-1], 0
3122
        cmp     byte [ecx-1], 0
3115
        jnz     @b
3123
        jnz     @b
3116
        sub     ecx, esi        ; ecx = ¤«¨­  ¨¬¥­¨ ä ©« +1 = ¤«¨­  § £®«®¢ª +1
3124
        sub     ecx, esi        ; ecx = ¤«¨­  ¨¬¥­¨ ä ©« +1 = ¤«¨­  § £®«®¢ª +1
3117
        cmp     ecx, 15
3125
        cmp     ecx, 15
3118
        jb      @f
3126
        jb      @f
3119
        mov     cl, 15
3127
        mov     cl, 15
3120
@@:
3128
@@:
3121
        xor     edx, edx
3129
        xor     edx, edx
3122
        xor     ebp, ebp
3130
        xor     ebp, ebp
3123
        push    edx
3131
        push    edx
3124
.menucreateloop:
3132
.menucreateloop:
3125
        mov     eax, edi
3133
        mov     eax, edi
3126
        xor     ebx, ebx
3134
        xor     ebx, ebx
3127
@@:
3135
@@:
3128
        cmp     byte [edi], ','
3136
        cmp     byte [edi], ','
3129
        jz      @f
3137
        jz      @f
3130
        cmp     byte [edi], bl
3138
        cmp     byte [edi], bl
3131
        jz      @f
3139
        jz      @f
3132
        inc     edi
3140
        inc     edi
3133
        jmp     @b
3141
        jmp     @b
3134
@@:
3142
@@:
3135
        xchg    bl, [edi]
3143
        xchg    bl, [edi]
3136
        pushad
3144
        pushad
3137
        push    nullstr
3145
        push    nullstr
3138
        push    1024
3146
        push    1024
3139
        push    saved_file_name
3147
        push    saved_file_name
3140
        push    eax
3148
        push    eax
3141
        push    aMenu
3149
        push    aMenu
3142
        push    app_path
3150
        push    app_path
3143
        call    [ini.get_str]
3151
        call    [ini.get_str]
3144
        popad
3152
        popad
3145
        mov     [edi], bl
3153
        mov     [edi], bl
3146
        mov     eax, saved_file_name
3154
        mov     eax, saved_file_name
3147
@@:
3155
@@:
3148
        cmp     byte [eax], 0
3156
        cmp     byte [eax], 0
3149
        jz      .menucreatecont
3157
        jz      .menucreatecont
3150
        cmp     byte [eax], ','
3158
        cmp     byte [eax], ','
3151
        jz      @f
3159
        jz      @f
3152
        inc     eax
3160
        inc     eax
3153
        jmp     @b
3161
        jmp     @b
3154
@@:
3162
@@:
3155
        mov     byte [eax], 0
3163
        mov     byte [eax], 0
3156
        push    eax
3164
        push    eax
3157
        sub     eax, saved_file_name-1
3165
        sub     eax, saved_file_name-1
3158
        cmp     eax, ecx
3166
        cmp     eax, ecx
3159
        ja      @f
3167
        ja      @f
3160
        mov     eax, ecx
3168
        mov     eax, ecx
3161
@@:
3169
@@:
3162
        xchg    eax, [esp]
3170
        xchg    eax, [esp]
3163
        inc     eax
3171
        inc     eax
3164
        push    eax
3172
        push    eax
3165
@@:
3173
@@:
3166
        inc     eax
3174
        inc     eax
3167
        cmp     byte [eax-1], 0
3175
        cmp     byte [eax-1], 0
3168
        jnz     @b
3176
        jnz     @b
3169
        sub     eax, [esp]
3177
        sub     eax, [esp]
3170
        add     [esp+4], eax
3178
        add     [esp+4], eax
3171
        pop     eax eax
3179
        pop     eax eax
3172
        add     eax, 8
3180
        add     eax, 8
3173
        add     ebp, eax
3181
        add     ebp, eax
3174
        push    ebp
3182
        push    ebp
3175
        and     ebp, 0xFFF
3183
        and     ebp, 0xFFF
3176
        cmp     ebp, eax
3184
        cmp     ebp, eax
3177
        pop     ebp
3185
        pop     ebp
3178
        ja      @f
3186
        ja      @f
3179
        push    eax
3187
        push    eax
3180
        xchg    edx, [esp+4]
3188
        xchg    edx, [esp+4]
3181
        push    ecx
3189
        push    ecx
3182
        mov     ecx, ebp
3190
        mov     ecx, ebp
3183
        call    xpgrealloc
3191
        call    xpgrealloc
3184
        pop     ecx
3192
        pop     ecx
3185
        pop     edx
3193
        pop     edx
3186
        xchg    edx, [esp]
3194
        xchg    edx, [esp]
3187
        test    eax, eax
3195
        test    eax, eax
3188
        xchg    eax, [esp]
3196
        xchg    eax, [esp]
3189
        jz      .menucreated
3197
        jz      .menucreated
3190
@@:
3198
@@:
3191
        neg     eax
3199
        neg     eax
3192
        add     eax, ebp
3200
        add     eax, ebp
3193
        add     eax, [esp]
3201
        add     eax, [esp]
3194
        and     dword [eax], 0
3202
        and     dword [eax], 0
3195
        and     dword [eax+4], 0
3203
        and     dword [eax+4], 0
3196
        test    edx, edx
3204
        test    edx, edx
3197
        jz      @f
3205
        jz      @f
3198
        sub     eax, [esp]
3206
        sub     eax, [esp]
3199
        mov     [edx], eax
3207
        mov     [edx], eax
3200
        add     eax, [esp]
3208
        add     eax, [esp]
3201
        sub     edx, [esp]
3209
        sub     edx, [esp]
3202
        mov     [eax+4], edx
3210
        mov     [eax+4], edx
3203
@@:
3211
@@:
3204
        mov     edx, eax
3212
        mov     edx, eax
3205
        push    esi edi
3213
        push    esi edi
3206
        mov     esi, saved_file_name
3214
        mov     esi, saved_file_name
3207
        lea     edi, [eax+8]
3215
        lea     edi, [eax+8]
3208
@@:
3216
@@:
3209
        lodsb
3217
        lodsb
3210
        stosb
3218
        stosb
3211
        test    al, al
3219
        test    al, al
3212
        jnz     @b
3220
        jnz     @b
3213
        push    esi
3221
        push    esi
3214
        sub     esi, saved_file_name
3222
        sub     esi, saved_file_name
3215
        sub     esi, ecx
3223
        sub     esi, ecx
3216
        jae     .menunoadd
3224
        jae     .menunoadd
3217
        neg     esi
3225
        neg     esi
3218
@@:
3226
@@:
3219
        mov     byte [edi-1], ' '
3227
        mov     byte [edi-1], ' '
3220
        stosb
3228
        stosb
3221
        dec     esi
3229
        dec     esi
3222
        jnz     @b
3230
        jnz     @b
3223
.menunoadd:
3231
.menunoadd:
3224
        pop     esi
3232
        pop     esi
3225
@@:
3233
@@:
3226
        lodsb
3234
        lodsb
3227
        stosb
3235
        stosb
3228
        test    al, al
3236
        test    al, al
3229
        jnz     @b
3237
        jnz     @b
3230
        pop     edi esi
3238
        pop     edi esi
3231
.menucreatecont:
3239
.menucreatecont:
3232
        inc     edi
3240
        inc     edi
3233
        cmp     byte [edi-1], ','
3241
        cmp     byte [edi-1], ','
3234
        jz      .menucreateloop
3242
        jz      .menucreateloop
3235
.menucreated:
3243
.menucreated:
3236
        test    edx, edx
3244
        test    edx, edx
3237
        jz      .menuret_free
3245
        jz      .menuret_free
3238
        and     dword [edx], 0
3246
        and     dword [edx], 0
3239
        pop     edx
3247
        pop     edx
3240
        mov     ecx, edx
3248
        mov     ecx, edx
3241
        add     [ecx], edx
3249
        add     [ecx], edx
3242
@@:
3250
@@:
3243
        mov     ecx, [ecx]
3251
        mov     ecx, [ecx]
3244
        cmp     dword [ecx], 0
3252
        cmp     dword [ecx], 0
3245
        jz      @f
3253
        jz      @f
3246
        add     [ecx], edx
3254
        add     [ecx], edx
3247
        add     [ecx+4], edx
3255
        add     [ecx+4], edx
3248
        jmp     @b
3256
        jmp     @b
3249
@@:
3257
@@:
3250
        add     [ecx+4], edx
3258
        add     [ecx+4], edx
3251
        push    edx
3259
        push    edx
3252
        push    1
3260
        push    1
3253
        push    esi
3261
        push    esi
3254
        push    edx
3262
        push    edx
3255
        call    menu
3263
        call    menu
3256
        cmp     eax, -1
3264
        cmp     eax, -1
3257
        jz      .menuret_free
3265
        jz      .menuret_free
3258
        lea     edi, [eax+8]
3266
        lea     edi, [eax+8]
3259
@@:
3267
@@:
3260
        inc     edi
3268
        inc     edi
3261
        cmp     byte [edi-1], 0
3269
        cmp     byte [edi-1], 0
3262
        jnz     @b
3270
        jnz     @b
3263
        mov     ebp, [active_panel]
3271
        mov     ebp, [active_panel]
3264
        call    get_curfile_folder_entry
3272
        call    get_curfile_folder_entry
3265
        call    .run_association2
3273
        call    .run_association2
3266
.menuret_free:
3274
.menuret_free:
3267
        pop     ecx
3275
        pop     ecx
3268
        jmp     pgfree
3276
        jmp     pgfree
3269
.f7:
3277
.f7:
3270
        mov     dword [CopyDestEditBuf], CopyDestEditBuf.length
3278
        mov     dword [CopyDestEditBuf], CopyDestEditBuf.length
3271
        and     dword [CopyDestEditBuf+4], 0
3279
        and     dword [CopyDestEditBuf+4], 0
3272
        and     dword [CopyDestEditBuf+8], 0
3280
        and     dword [CopyDestEditBuf+8], 0
3273
        mov     byte [CopyDestEditBuf+12], 0
3281
        mov     byte [CopyDestEditBuf+12], 0
3274
        mov     ebx, mkdir_dlgdata
3282
        mov     ebx, mkdir_dlgdata
3275
        mov     eax, [cur_width]
3283
        mov     eax, [cur_width]
3276
        sub     eax, 12
3284
        sub     eax, 12
3277
        mov     [ebx + dlgtemplate.width], eax
3285
        mov     [ebx + dlgtemplate.width], eax
3278
        dec     eax
3286
        dec     eax
3279
        dec     eax
3287
        dec     eax
3280
        mov     [ebx + MkDir_Dlgdata.dnam.x2], eax
3288
        mov     [ebx + MkDir_Dlgdata.dnam.x2], eax
3281
        shr     eax, 1
3289
        shr     eax, 1
3282
        dec     eax
3290
        dec     eax
3283
        dec     eax
3291
        dec     eax
3284
        mov     [ebx + MkDir_Dlgdata.cont.x2], eax
3292
        mov     [ebx + MkDir_Dlgdata.cont.x2], eax
3285
        sub     eax, a_ContinueLength-1
3293
        sub     eax, a_ContinueLength-1
3286
        mov     [ebx + MkDir_Dlgdata.cont.x1], eax
3294
        mov     [ebx + MkDir_Dlgdata.cont.x1], eax
3287
        add     eax, a_ContinueLength+3
3295
        add     eax, a_ContinueLength+3
3288
        mov     [ebx + MkDir_Dlgdata.cnl.x1], eax
3296
        mov     [ebx + MkDir_Dlgdata.cnl.x1], eax
3289
        add     eax, aCancelBLength - 1
3297
        add     eax, aCancelBLength - 1
3290
        mov     [ebx + MkDir_Dlgdata.cnl.x2], eax
3298
        mov     [ebx + MkDir_Dlgdata.cnl.x2], eax
3291
        mov     byte [ebx + MkDir_Dlgdata.dnam.flags], 0xC
3299
        mov     byte [ebx + MkDir_Dlgdata.dnam.flags], 0xC
3292
        and     byte [ebx + MkDir_Dlgdata.cont.flags], not 4
3300
        and     byte [ebx + MkDir_Dlgdata.cont.flags], not 4
3293
        and     byte [ebx + MkDir_Dlgdata.cnl.flags], not 4
3301
        and     byte [ebx + MkDir_Dlgdata.cnl.flags], not 4
3294
        push    ebx
3302
        push    ebx
3295
        call    DialogBox
3303
        call    DialogBox
3296
        cmp     eax, mkdir_dlgdata.cont
3304
        cmp     eax, mkdir_dlgdata.cont
3297
        jnz     .ret2
3305
        jnz     .ret2
3298
        mov     esi, CopyDestEditBuf+12
3306
        mov     esi, CopyDestEditBuf+12
3299
        cmp     byte [esi], 0
3307
        cmp     byte [esi], 0
3300
        jz      .ret2
3308
        jz      .ret2
3301
        cmp     byte [esi], '/'
3309
        cmp     byte [esi], '/'
3302
        jz      .mkdir_absolute_path
3310
        jz      .mkdir_absolute_path
3303
        push    esi
3311
        push    esi
3304
        lea     edi, [ebp + PanelData.dir]
3312
        lea     edi, [ebp + PanelData.dir]
3305
        or      ecx, -1
3313
        or      ecx, -1
3306
        xor     eax, eax
3314
        xor     eax, eax
3307
        repnz   scasb
3315
        repnz   scasb
3308
        not     ecx
3316
        not     ecx
3309
        mov     edi, esi
3317
        mov     edi, esi
3310
@@:
3318
@@:
3311
        cmp     byte [edi+1], 0
3319
        cmp     byte [edi+1], 0
3312
        jz      @f
3320
        jz      @f
3313
        inc     edi
3321
        inc     edi
3314
        jmp     @b
3322
        jmp     @b
3315
@@:
3323
@@:
3316
        push    edi
3324
        push    edi
3317
        add     edi, ecx
3325
        add     edi, ecx
3318
        cmp     edi, CopyDestEditBuf+12+513
3326
        cmp     edi, CopyDestEditBuf+12+513
3319
        pop     edi
3327
        pop     edi
3320
        jb      @f
3328
        jb      @f
3321
        pop     esi
3329
        pop     esi
3322
        jmp     .bigfilename
3330
        jmp     .bigfilename
3323
@@:
3331
@@:
3324
        lea     edx, [edi+2]
3332
        lea     edx, [edi+2]
3325
        sub     edx, esi
3333
        sub     edx, esi
3326
        lea     edi, [edi+ecx+1]
3334
        lea     edi, [edi+ecx+1]
3327
        xchg    ecx, edx
3335
        xchg    ecx, edx
3328
        std
3336
        std
3329
        lea     esi, [esi+ecx-1]
3337
        lea     esi, [esi+ecx-1]
3330
        rep     movsb
3338
        rep     movsb
3331
        cld
3339
        cld
3332
        pop     edi
3340
        pop     edi
3333
        lea     esi, [ebp + PanelData.dir]
3341
        lea     esi, [ebp + PanelData.dir]
3334
        push    edi
3342
        push    edi
3335
        mov     ecx, edx
3343
        mov     ecx, edx
3336
        rep     movsb
3344
        rep     movsb
3337
        mov     byte [edi-1], '/'
3345
        mov     byte [edi-1], '/'
3338
        pop     esi
3346
        pop     esi
3339
.mkdir_absolute_path:
3347
.mkdir_absolute_path:
3340
        push    RetryOrCancelBtn
3348
        push    RetryOrCancelBtn
3341
        push    2
3349
        push    2
3342
        call    makedir
3350
        call    makedir
3343
        jmp     .copydone
3351
        jmp     .copydone
3344
.change_mode:
3352
.change_mode:
3345
        dec     eax
3353
        dec     eax
3346
        mov     [ebp + PanelData.colmode], eax
3354
        mov     [ebp + PanelData.colmode], eax
3347
        call    calc_colwidths
3355
        call    calc_colwidths
3348
        jmp     draw_panel
3356
        jmp     draw_panel
3349
.quick_jump:
3357
.quick_jump:
3350
        dec     eax
3358
        dec     eax
3351
        cmp     al, 10
3359
        cmp     al, 10
3352
        jnz     @f
3360
        jnz     @f
3353
        xor     eax, eax
3361
        xor     eax, eax
3354
@@:
3362
@@:
3355
        mov     eax, [FolderShortcuts+eax*4]
3363
        mov     eax, [FolderShortcuts+eax*4]
3356
        test    eax, eax
3364
        test    eax, eax
3357
        jnz     @f
3365
        jnz     @f
3358
        ret
3366
        ret
3359
@@:
3367
@@:
3360
        push    eax
3368
        push    eax
3361
        call    close_plugin_panels
3369
        call    close_plugin_panels
3362
        lea     esi, [ebp + PanelData.dir]
3370
        lea     esi, [ebp + PanelData.dir]
3363
        push    esi
3371
        push    esi
3364
        mov     edi, prev_dir
3372
        mov     edi, prev_dir
3365
@@:
3373
@@:
3366
        lodsb
3374
        lodsb
3367
        stosb
3375
        stosb
3368
        test    al, al
3376
        test    al, al
3369
        jnz     @b
3377
        jnz     @b
3370
        pop     edi esi
3378
        pop     edi esi
3371
@@:
3379
@@:
3372
        lodsb
3380
        lodsb
3373
        stosb
3381
        stosb
3374
        test    al, al
3382
        test    al, al
3375
        jnz     @b
3383
        jnz     @b
3376
        jmp     .reread
3384
        jmp     .reread
3377
.greyplus:
3385
.greyplus:
3378
        push    0
3386
        push    0
3379
        mov     ecx, aSelect
3387
        mov     ecx, aSelect
3380
        jmp     @f
3388
        jmp     @f
3381
.greyminus:
3389
.greyminus:
3382
        push    1
3390
        push    1
3383
        mov     ecx, aDeselect
3391
        mov     ecx, aDeselect
3384
@@:
3392
@@:
3385
        mov     eax, mark_dlgdata
3393
        mov     eax, mark_dlgdata
3386
        mov     [eax+mark_dlgdata.title-mark_dlgdata], ecx
3394
        mov     [eax+mark_dlgdata.title-mark_dlgdata], ecx
3387
        mov     [eax+mark_dlgdata.edit.flags-mark_dlgdata], 0xC
3395
        mov     [eax+mark_dlgdata.edit.flags-mark_dlgdata], 0xC
3388
        mov     edi, enter_string_buf+12
3396
        mov     edi, enter_string_buf+12
3389
        mov     dword [edi-12], 512
3397
        mov     dword [edi-12], 512
3390
        mov     dword [edi-8], 1
3398
        mov     dword [edi-8], 1
3391
        and     dword [edi-4], 0
3399
        and     dword [edi-4], 0
3392
        mov     word [edi], '*'
3400
        mov     word [edi], '*'
3393
        push    eax
3401
        push    eax
3394
        call    DialogBox
3402
        call    DialogBox
3395
        inc     eax
3403
        inc     eax
3396
        jnz     @f
3404
        jnz     @f
3397
.noselect:
3405
.noselect:
3398
        pop     eax
3406
        pop     eax
3399
        ret
3407
        ret
3400
@@:
3408
@@:
3401
        xor     eax, eax
3409
        xor     eax, eax
3402
        mov     esi, edi
3410
        mov     esi, edi
3403
@@:
3411
@@:
3404
        lodsb
3412
        lodsb
3405
        mov     al, [tolower_table+eax]
3413
        mov     al, [tolower_table+eax]
3406
        mov     [esi-1], al
3414
        mov     [esi-1], al
3407
        test    al, al
3415
        test    al, al
3408
        jnz     @b
3416
        jnz     @b
3409
@@:
3417
@@:
3410
        mov     ecx, [ebp + PanelData.numfiles]
3418
        mov     ecx, [ebp + PanelData.numfiles]
3411
        mov     ebx, [ebp + PanelData.files]
3419
        mov     ebx, [ebp + PanelData.files]
3412
        jecxz   .noselect
3420
        jecxz   .noselect
3413
        mov     eax, [ebx]
3421
        mov     eax, [ebx]
3414
        cmp     word [eax+40], '..'
3422
        cmp     word [eax+40], '..'
3415
        jnz     .selectloop
3423
        jnz     .selectloop
3416
        cmp     byte [eax+42], 0
3424
        cmp     byte [eax+42], 0
3417
        jnz     .selectloop
3425
        jnz     .selectloop
3418
        dec     ecx
3426
        dec     ecx
3419
        jz      .noselect
3427
        jz      .noselect
3420
        add     ebx, 4
3428
        add     ebx, 4
3421
.selectloop:
3429
.selectloop:
3422
        xor     eax, eax
3430
        xor     eax, eax
3423
        mov     esi, [ebx]
3431
        mov     esi, [ebx]
3424
        add     esi, 40
3432
        add     esi, 40
3425
        mov     edx, lower_file_name-1
3433
        mov     edx, lower_file_name-1
3426
@@:
3434
@@:
3427
        lodsb
3435
        lodsb
3428
        inc     edx
3436
        inc     edx
3429
        mov     al, [tolower_table+eax]
3437
        mov     al, [tolower_table+eax]
3430
        mov     [edx], al
3438
        mov     [edx], al
3431
        test    al, al
3439
        test    al, al
3432
        jnz     @b
3440
        jnz     @b
3433
        mov     esi, lower_file_name
3441
        mov     esi, lower_file_name
3434
        call    match_mask_rev_lowercase
3442
        call    match_mask_rev_lowercase
3435
        jc      @f
3443
        jc      @f
3436
        mov     esi, [ebx]
3444
        mov     esi, [ebx]
3437
        mov     eax, [esi+32]
3445
        mov     eax, [esi+32]
3438
        cmp     byte [esp], 0
3446
        cmp     byte [esp], 0
3439
        jz      .doselect
3447
        jz      .doselect
3440
        test    byte [esi+303], 1
3448
        test    byte [esi+303], 1
3441
        jz      @f
3449
        jz      @f
3442
        and     byte [esi+303], not 1
3450
        and     byte [esi+303], not 1
3443
        sub     dword [ebp + PanelData.selected_size], eax
3451
        sub     dword [ebp + PanelData.selected_size], eax
3444
        mov     eax, [esi+36]
3452
        mov     eax, [esi+36]
3445
        sbb     dword [ebp + PanelData.selected_size+4], eax
3453
        sbb     dword [ebp + PanelData.selected_size+4], eax
3446
        dec     dword [ebp + PanelData.selected_num]
3454
        dec     dword [ebp + PanelData.selected_num]
3447
        jmp     @f
3455
        jmp     @f
3448
.doselect:
3456
.doselect:
3449
        test    byte [esi+303], 1
3457
        test    byte [esi+303], 1
3450
        jnz     @f
3458
        jnz     @f
3451
        or      byte [esi+303], 1
3459
        or      byte [esi+303], 1
3452
        add     dword [ebp + PanelData.selected_size], eax
3460
        add     dword [ebp + PanelData.selected_size], eax
3453
        mov     eax, [esi+36]
3461
        mov     eax, [esi+36]
3454
        adc     dword [ebp + PanelData.selected_size+4], eax
3462
        adc     dword [ebp + PanelData.selected_size+4], eax
3455
        inc     dword [ebp + PanelData.selected_num]
3463
        inc     dword [ebp + PanelData.selected_num]
3456
@@:
3464
@@:
3457
        add     ebx, 4
3465
        add     ebx, 4
3458
        dec     ecx
3466
        dec     ecx
3459
        jnz     .selectloop
3467
        jnz     .selectloop
3460
        pop     eax
3468
        pop     eax
3461
        jmp     .done_redraw
3469
        jmp     .done_redraw
3462
.greyasterisk:
3470
.greyasterisk:
3463
        mov     ecx, [ebp + PanelData.numfiles]
3471
        mov     ecx, [ebp + PanelData.numfiles]
3464
        mov     esi, [ebp + PanelData.files]
3472
        mov     esi, [ebp + PanelData.files]
3465
        jecxz   .galoopdone
3473
        jecxz   .galoopdone
3466
.galoop:
3474
.galoop:
3467
        lodsd
3475
        lodsd
3468
        cmp     word [eax+40], '..'
3476
        cmp     word [eax+40], '..'
3469
        jnz     @f
3477
        jnz     @f
3470
        cmp     byte [eax+42], 0
3478
        cmp     byte [eax+42], 0
3471
        jz      .gacont
3479
        jz      .gacont
3472
@@:
3480
@@:
3473
        xor     byte [eax+303], 1
3481
        xor     byte [eax+303], 1
3474
        mov     edx, [eax+32]
3482
        mov     edx, [eax+32]
3475
        test    byte [eax+303], 1
3483
        test    byte [eax+303], 1
3476
        jz      .gadel
3484
        jz      .gadel
3477
        add     dword [ebp + PanelData.selected_size], edx
3485
        add     dword [ebp + PanelData.selected_size], edx
3478
        mov     edx, [eax+36]
3486
        mov     edx, [eax+36]
3479
        adc     dword [ebp + PanelData.selected_size+4], edx
3487
        adc     dword [ebp + PanelData.selected_size+4], edx
3480
        inc     dword [ebp + PanelData.selected_num]
3488
        inc     dword [ebp + PanelData.selected_num]
3481
        jmp     .gacont
3489
        jmp     .gacont
3482
.gadel:
3490
.gadel:
3483
        sub     dword [ebp + PanelData.selected_size], edx
3491
        sub     dword [ebp + PanelData.selected_size], edx
3484
        mov     edx, [eax+36]
3492
        mov     edx, [eax+36]
3485
        sbb     dword [ebp + PanelData.selected_size+4], edx
3493
        sbb     dword [ebp + PanelData.selected_size+4], edx
3486
        dec     dword [ebp + PanelData.selected_num]
3494
        dec     dword [ebp + PanelData.selected_num]
3487
.gacont:
3495
.gacont:
3488
        loop    .galoop
3496
        loop    .galoop
3489
.galoopdone:
3497
.galoopdone:
3490
        jmp     .done_redraw
3498
        jmp     .done_redraw
3491
 
3499
 
3492
@@:
3500
@@:
3493
        call    close_plugin_panel
3501
        call    close_plugin_panel
3494
close_plugin_panels:
3502
close_plugin_panels:
3495
        cmp     [ebp + PanelData.hPlugin], 0
3503
        cmp     [ebp + PanelData.hPlugin], 0
3496
        jnz     @b
3504
        jnz     @b
3497
        ret
3505
        ret
3498
 
3506
 
3499
align 4
3507
align 4
3500
close_plugin_panel:
3508
close_plugin_panel:
3501
; close plugin and restore old directory
3509
; close plugin and restore old directory
3502
        mov     esi, [ebp + PanelData.parents]
3510
        mov     esi, [ebp + PanelData.parents]
3503
        add     esi, [ebp + PanelData.parents_sz]
3511
        add     esi, [ebp + PanelData.parents_sz]
3504
@@:
3512
@@:
3505
        dec     esi
3513
        dec     esi
3506
        cmp     byte [esi-1], 0
3514
        cmp     byte [esi-1], 0
3507
        jnz     @b
3515
        jnz     @b
3508
        push    esi
3516
        push    esi
3509
        lea     edi, [ebp + PanelData.dir]
3517
        lea     edi, [ebp + PanelData.dir]
3510
@@:
3518
@@:
3511
        lodsb
3519
        lodsb
3512
        stosb
3520
        stosb
3513
        test    al, al
3521
        test    al, al
3514
        jnz     @b
3522
        jnz     @b
3515
        pop     esi
3523
        pop     esi
3516
        sub     esi, 9
3524
        sub     esi, 9
3517
        mov     edx, [esi]      ; hPlugin
3525
        mov     edx, [esi]      ; hPlugin
3518
        mov     ebx, [esi+4]    ; hFile
3526
        mov     ebx, [esi+4]    ; hFile
3519
        sub     esi, [ebp + PanelData.parents]
3527
        sub     esi, [ebp + PanelData.parents]
3520
        mov     [ebp + PanelData.parents_sz], esi
3528
        mov     [ebp + PanelData.parents_sz], esi
3521
        xchg    edx, [ebp + PanelData.hPlugin]
3529
        xchg    edx, [ebp + PanelData.hPlugin]
3522
        xchg    ebx, [ebp + PanelData.hFile]
3530
        xchg    ebx, [ebp + PanelData.hFile]
3523
        push    edx ebx
3531
        push    edx ebx
3524
        lea     ebx, [ebp + PanelData.plugin_flags] ;plugin_info
3532
        lea     ebx, [ebp + PanelData.plugin_flags] ;plugin_info
3525
        and     dword [ebx], 0
3533
        and     dword [ebx], 0
3526
        mov     eax, [ebp + PanelData.hPlugin]
3534
        mov     eax, [ebp + PanelData.hPlugin]
3527
        test    eax, eax
3535
        test    eax, eax
3528
        jz      @f
3536
        jz      @f
3529
        push    ebp
3537
        push    ebp
3530
        push    ebx
3538
        push    ebx
3531
        push    [ebp + PanelData.hFile]
3539
        push    [ebp + PanelData.hFile]
3532
        call    [eax+PluginInfo.GetOpenPluginInfo]
3540
        call    [eax+PluginInfo.GetOpenPluginInfo]
3533
        pop     ebp
3541
        pop     ebp
3534
@@:
3542
@@:
3535
        pop     ebx edx
3543
        pop     ebx edx
3536
 
3544
 
3537
align 4
3545
align 4
3538
close_handle_if_unused:
3546
close_handle_if_unused:
3539
; edx=hPlugin, ebx=hFile
3547
; edx=hPlugin, ebx=hFile
3540
        push    ebp
3548
        push    ebp
3541
        xor     ecx, ecx
3549
        xor     ecx, ecx
3542
@@:
3550
@@:
3543
        mov     eax, [screens]
3551
        mov     eax, [screens]
3544
        mov     ebp, [eax+ecx*8+4]
3552
        mov     ebp, [eax+ecx*8+4]
3545
        mov     eax, [eax+ecx*8]
3553
        mov     eax, [eax+ecx*8]
3546
        call    [eax+screen_vtable.IsHandleUsed]
3554
        call    [eax+screen_vtable.IsHandleUsed]
3547
        jz      .used
3555
        jz      .used
3548
        inc     ecx
3556
        inc     ecx
3549
        cmp     ecx, [num_screens]
3557
        cmp     ecx, [num_screens]
3550
        jb      @b
3558
        jb      @b
3551
        push    ebx
3559
        push    ebx
3552
        call    [edx+PluginInfo.ClosePlugin]
3560
        call    [edx+PluginInfo.ClosePlugin]
3553
.used:
3561
.used:
3554
        pop     ebp
3562
        pop     ebp
3555
        ret
3563
        ret
3556
 
3564
 
3557
align 4
3565
align 4
3558
panels_IsHandleUsed:
3566
panels_IsHandleUsed:
3559
; edx=hPlugin, ebx=hFile
3567
; edx=hPlugin, ebx=hFile
3560
        mov     ebp, panel1
3568
        mov     ebp, panel1
3561
        call    .1
3569
        call    .1
3562
        jz      .ret
3570
        jz      .ret
3563
        mov     ebp, panel2
3571
        mov     ebp, panel2
3564
 
3572
 
3565
.1:
3573
.1:
3566
        cmp     edx, [ebp+ PanelData.hPlugin]
3574
        cmp     edx, [ebp+ PanelData.hPlugin]
3567
        jnz     @f
3575
        jnz     @f
3568
        cmp     ebx, [ebp+ PanelData.hFile]
3576
        cmp     ebx, [ebp+ PanelData.hFile]
3569
        jz      .ret
3577
        jz      .ret
3570
@@:
3578
@@:
3571
        mov     esi, [ebp + PanelData.parents_sz]
3579
        mov     esi, [ebp + PanelData.parents_sz]
3572
        test    esi, esi
3580
        test    esi, esi
3573
        jnz     @f
3581
        jnz     @f
3574
        inc     esi
3582
        inc     esi
3575
.ret:
3583
.ret:
3576
        ret
3584
        ret
3577
@@:
3585
@@:
3578
        add     esi, [ebp + PanelData.parents]
3586
        add     esi, [ebp + PanelData.parents]
3579
@@:
3587
@@:
3580
        dec     esi
3588
        dec     esi
3581
        cmp     byte [esi-1], 0
3589
        cmp     byte [esi-1], 0
3582
        jnz     @b
3590
        jnz     @b
3583
        sub     esi, 9
3591
        sub     esi, 9
3584
        cmp     edx, [esi]      ; hPlugin
3592
        cmp     edx, [esi]      ; hPlugin
3585
        jnz     .no
3593
        jnz     .no
3586
        mov     ebx, [esi+4]    ; hFile
3594
        mov     ebx, [esi+4]    ; hFile
3587
        jz      .ret
3595
        jz      .ret
3588
.no:
3596
.no:
3589
        cmp     esi, [ebp + PanelData.parents]
3597
        cmp     esi, [ebp + PanelData.parents]
3590
        jnz     @b
3598
        jnz     @b
3591
        inc     esi
3599
        inc     esi
3592
        ret
3600
        ret
3593
 
3601
 
3594
align 4
3602
align 4
3595
panels_OnExit:
3603
panels_OnExit:
3596
; close plugin panels
3604
; close plugin panels
3597
        mov     ebp, panel1
3605
        mov     ebp, panel1
3598
        call    close_plugin_panels
3606
        call    close_plugin_panels
3599
        mov     ebp, panel2
3607
        mov     ebp, panel2
3600
        call    close_plugin_panels
3608
        call    close_plugin_panels
3601
        ret
3609
        ret
3602
 
3610
 
3603
align 4
3611
align 4
3604
panels_OnRedraw:
3612
panels_OnRedraw:
3605
        or      [cursor_x], -1
3613
        or      [cursor_x], -1
3606
        or      [cursor_y], -1
3614
        or      [cursor_y], -1
3607
        call    draw_cmdbar
3615
        call    draw_cmdbar
3608
        mov     ebp, panel1
3616
        mov     ebp, panel1
3609
        call    calc_colwidths
3617
        call    calc_colwidths
3610
        call    draw_panel
3618
        call    draw_panel
3611
        mov     ebp, panel2
3619
        mov     ebp, panel2
3612
        call    calc_colwidths
3620
        call    calc_colwidths
3613
        call    draw_panel
3621
        call    draw_panel
3614
        ret
3622
        ret
3615
 
3623
 
3616
align 4
3624
align 4
3617
init_console:
3625
init_console:
3618
        mov     ecx, [console_data_ptr]
3626
        mov     ecx, [console_data_ptr]
3619
        call    pgfree
3627
        call    pgfree
3620
        mov     eax, [cur_width]
3628
        mov     eax, [cur_width]
3621
        mul     [cur_height]
3629
        mul     [cur_height]
3622
        mov     ecx, eax
3630
        mov     ecx, eax
3623
        push    ecx
3631
        push    ecx
3624
        shl     ecx, 2
3632
        shl     ecx, 2
3625
        call    pgalloc
3633
        call    pgalloc
3626
        pop     ecx
3634
        pop     ecx
3627
        test    eax, eax
3635
        test    eax, eax
3628
        jz      exit
3636
        jz      exit
3629
        mov     [console_data_ptr], eax
3637
        mov     [console_data_ptr], eax
3630
        mov     edi, eax
3638
        mov     edi, eax
3631
        mov     ax, 0720h
3639
        mov     ax, 0720h
3632
        rep     stosw
3640
        rep     stosw
3633
        mov     [panel1.left], ecx
3641
        mov     [panel1.left], ecx
3634
        mov     [panel1.top], ecx
3642
        mov     [panel1.top], ecx
3635
        mov     [panel2.top], ecx
3643
        mov     [panel2.top], ecx
3636
        mov     eax, [cur_width]
3644
        mov     eax, [cur_width]
3637
        inc     eax
3645
        inc     eax
3638
        shr     eax, 1
3646
        shr     eax, 1
3639
        mov     [panel1.width], eax
3647
        mov     [panel1.width], eax
3640
        mov     [panel2.left], eax
3648
        mov     [panel2.left], eax
3641
        sub     eax, [cur_width]
3649
        sub     eax, [cur_width]
3642
        neg     eax
3650
        neg     eax
3643
        mov     [panel2.width], eax
3651
        mov     [panel2.width], eax
3644
        mov     eax, [cur_height]
3652
        mov     eax, [cur_height]
3645
        dec     eax
3653
        dec     eax
3646
        dec     eax
3654
        dec     eax
3647
        mov     [panel1.height], eax
3655
        mov     [panel1.height], eax
3648
        mov     [panel2.height], eax
3656
        mov     [panel2.height], eax
3649
        ret
3657
        ret
3650
 
3658
 
3651
align 4
3659
align 4
3652
get_curfile_folder_entry:
3660
get_curfile_folder_entry:
3653
        mov     ecx, [ebp + PanelData.index]
3661
        mov     ecx, [ebp + PanelData.index]
3654
        shl     ecx, 2
3662
        shl     ecx, 2
3655
        add     ecx, [ebp + PanelData.files]
3663
        add     ecx, [ebp + PanelData.files]
3656
        mov     ecx, [ecx]
3664
        mov     ecx, [ecx]
3657
        ret
3665
        ret
3658
 
3666
 
3659
align 4
3667
align 4
3660
get_curfile_name:
3668
get_curfile_name:
3661
        call    get_curfile_folder_entry
3669
        call    get_curfile_folder_entry
3662
        add     ecx, 40
3670
        add     ecx, 40
3663
        ret
3671
        ret
3664
 
3672
 
3665
quick_find:
3673
quick_find:
3666
        cmp     [ebp + PanelData.numfiles], 0
3674
        cmp     [ebp + PanelData.numfiles], 0
3667
        jz      .nof
3675
        jz      .nof
3668
        mov     ecx, [ebp + PanelData.index]
3676
        mov     ecx, [ebp + PanelData.index]
3669
.scanloop:
3677
.scanloop:
3670
        mov     edi, ecx
3678
        mov     edi, ecx
3671
        shl     edi, 2
3679
        shl     edi, 2
3672
        add     edi, [ebp + PanelData.files]
3680
        add     edi, [ebp + PanelData.files]
3673
        mov     edi, [edi]
3681
        mov     edi, [edi]
3674
        add     edi, 40
3682
        add     edi, 40
3675
        mov     esi, quick_search_buf + 12
3683
        mov     esi, quick_search_buf + 12
3676
@@:
3684
@@:
3677
        lodsb
3685
        lodsb
3678
        test    al, al
3686
        test    al, al
3679
        jz      .ok
3687
        jz      .ok
3680
        call    match_symbol
3688
        call    match_symbol
3681
        jnz     .no
3689
        jnz     .no
3682
        inc     edi
3690
        inc     edi
3683
        jmp     @b
3691
        jmp     @b
3684
.no:
3692
.no:
3685
        inc     ecx
3693
        inc     ecx
3686
        cmp     ecx, [ebp + PanelData.numfiles]
3694
        cmp     ecx, [ebp + PanelData.numfiles]
3687
        jb      @f
3695
        jb      @f
3688
        xor     ecx, ecx
3696
        xor     ecx, ecx
3689
@@:
3697
@@:
3690
        cmp     ecx, [ebp + PanelData.index]
3698
        cmp     ecx, [ebp + PanelData.index]
3691
        jnz     .scanloop
3699
        jnz     .scanloop
3692
.nof:
3700
.nof:
3693
        stc
3701
        stc
3694
        ret
3702
        ret
3695
.ok:
3703
.ok:
3696
        cmp     ecx, [ebp + PanelData.index]
3704
        cmp     ecx, [ebp + PanelData.index]
3697
        jz      .ret
3705
        jz      .ret
3698
        mov     [ebp + PanelData.index], ecx
3706
        mov     [ebp + PanelData.index], ecx
3699
        mov     eax, [ebp + PanelData.height]
3707
        mov     eax, [ebp + PanelData.height]
3700
        shr     eax, 1
3708
        shr     eax, 1
3701
        sub     ecx, eax
3709
        sub     ecx, eax
3702
        jae     @f
3710
        jae     @f
3703
        xor     ecx, ecx
3711
        xor     ecx, ecx
3704
@@:
3712
@@:
3705
        mov     eax, [ebp + PanelData.numfiles]
3713
        mov     eax, [ebp + PanelData.numfiles]
3706
        sub     eax, [ebp + PanelData.colst]
3714
        sub     eax, [ebp + PanelData.colst]
3707
        jnc     @f
3715
        jnc     @f
3708
        xor     eax, eax
3716
        xor     eax, eax
3709
        xor     ecx, ecx
3717
        xor     ecx, ecx
3710
@@:
3718
@@:
3711
        cmp     ecx, eax
3719
        cmp     ecx, eax
3712
        jb      @f
3720
        jb      @f
3713
        mov     ecx, eax
3721
        mov     ecx, eax
3714
@@:
3722
@@:
3715
        mov     [ebp + PanelData.start], ecx
3723
        mov     [ebp + PanelData.start], ecx
3716
        call    draw_panel
3724
        call    draw_panel
3717
.ret:
3725
.ret:
3718
        clc
3726
        clc
3719
        ret
3727
        ret
3720
 
3728
 
3721
quick_find_next:
3729
quick_find_next:
3722
        cmp     [ebp + PanelData.numfiles], 0
3730
        cmp     [ebp + PanelData.numfiles], 0
3723
        jz      quick_find.nof
3731
        jz      quick_find.nof
3724
        mov     ecx, [ebp + PanelData.index]
3732
        mov     ecx, [ebp + PanelData.index]
3725
        jmp     quick_find.no
3733
        jmp     quick_find.no
3726
 
3734
 
3727
quick_find_prev:
3735
quick_find_prev:
3728
        cmp     [ebp + PanelData.numfiles], 0
3736
        cmp     [ebp + PanelData.numfiles], 0
3729
        jz      quick_find.nof
3737
        jz      quick_find.nof
3730
        mov     ecx, [ebp + PanelData.index]
3738
        mov     ecx, [ebp + PanelData.index]
3731
.scanloop:
3739
.scanloop:
3732
        dec     ecx
3740
        dec     ecx
3733
        jns     @f
3741
        jns     @f
3734
        mov     ecx, [ebp + PanelData.numfiles]
3742
        mov     ecx, [ebp + PanelData.numfiles]
3735
        dec     ecx
3743
        dec     ecx
3736
@@:
3744
@@:
3737
        cmp     ecx, [ebp + PanelData.index]
3745
        cmp     ecx, [ebp + PanelData.index]
3738
        jz      quick_find.nof
3746
        jz      quick_find.nof
3739
        mov     edi, ecx
3747
        mov     edi, ecx
3740
        shl     edi, 2
3748
        shl     edi, 2
3741
        add     edi, [ebp + PanelData.files]
3749
        add     edi, [ebp + PanelData.files]
3742
        mov     edi, [edi]
3750
        mov     edi, [edi]
3743
        add     edi, 40
3751
        add     edi, 40
3744
        mov     esi, quick_search_buf + 12
3752
        mov     esi, quick_search_buf + 12
3745
@@:
3753
@@:
3746
        lodsb
3754
        lodsb
3747
        test    al, al
3755
        test    al, al
3748
        jz      quick_find.ok
3756
        jz      quick_find.ok
3749
        call    match_symbol
3757
        call    match_symbol
3750
        jnz     .scanloop
3758
        jnz     .scanloop
3751
        inc     edi
3759
        inc     edi
3752
        jmp     @b
3760
        jmp     @b
3753
 
3761
 
3754
panels_getname:
3762
panels_getname:
3755
if lang eq ru
3763
if lang eq ru
3756
        mov     eax, ' ­¥'
3764
        mov     eax, ' ­¥'
3757
        stosd
3765
        stosd
3758
        mov     eax, 'Ǭ  '
3766
        mov     eax, 'Ǭ  '
3759
        stosd
3767
        stosd
3760
        mov     eax, '    '
3768
        mov     eax, '    '
3761
        stosd
3769
        stosd
3762
        stosb
3770
        stosb
3763
else
3771
else
3764
        mov     eax, 'Pane'
3772
        mov     eax, 'Pane'
3765
        stosd
3773
        stosd
3766
        mov     eax, 'ls  '
3774
        mov     eax, 'ls  '
3767
        stosd
3775
        stosd
3768
        mov     eax, '    '
3776
        mov     eax, '    '
3769
        stosd
3777
        stosd
3770
        stosb
3778
        stosb
3771
end if
3779
end if
3772
        sub     ecx, 13
3780
        sub     ecx, 13
3773
        mov     ebp, [active_panel]
3781
        mov     ebp, [active_panel]
3774
        push    3
3782
        push    3
3775
        pop     edx
3783
        pop     edx
3776
        cmp     [ebp + PanelData.hPlugin], 0
3784
        cmp     [ebp + PanelData.hPlugin], 0
3777
        jz      .native
3785
        jz      .native
3778
        mov     esi, [ebp + PanelData.parents]
3786
        mov     esi, [ebp + PanelData.parents]
3779
        add     esi, [ebp + PanelData.parents_sz]
3787
        add     esi, [ebp + PanelData.parents_sz]
3780
@@:
3788
@@:
3781
        dec     esi
3789
        dec     esi
3782
        cmp     byte [esi-1], 0
3790
        cmp     byte [esi-1], 0
3783
        jz      @f
3791
        jz      @f
3784
        cmp     byte [esi-1], '/'
3792
        cmp     byte [esi-1], '/'
3785
        jnz     @b
3793
        jnz     @b
3786
@@:
3794
@@:
3787
        push    ecx edi
3795
        push    ecx edi
3788
        shr     ecx, 1
3796
        shr     ecx, 1
3789
@@:
3797
@@:
3790
        lodsb
3798
        lodsb
3791
        test    al, al
3799
        test    al, al
3792
        jz      @f
3800
        jz      @f
3793
        stosb
3801
        stosb
3794
        loop    @b
3802
        loop    @b
3795
@@:
3803
@@:
3796
        sub     edi, [esp]
3804
        sub     edi, [esp]
3797
        sub     [esp+4], edi
3805
        sub     [esp+4], edi
3798
        add     [esp], edi
3806
        add     [esp], edi
3799
        pop     edi ecx
3807
        pop     edi ecx
3800
        lea     esi, [ebp + PanelData.dir]
3808
        lea     esi, [ebp + PanelData.dir]
3801
        cmp     byte [esi+1], 0
3809
        cmp     byte [esi+1], 0
3802
        jnz     @f
3810
        jnz     @f
3803
        inc     esi
3811
        inc     esi
3804
@@:
3812
@@:
3805
        jmp     .main
3813
        jmp     .main
3806
.native:
3814
.native:
3807
        lea     esi, [ebp + PanelData.dir]
3815
        lea     esi, [ebp + PanelData.dir]
3808
@@:
3816
@@:
3809
        lodsb
3817
        lodsb
3810
        stosb
3818
        stosb
3811
        dec     ecx
3819
        dec     ecx
3812
        test    al, al
3820
        test    al, al
3813
        jz      @f
3821
        jz      @f
3814
        cmp     al, '/'
3822
        cmp     al, '/'
3815
        jnz     @b
3823
        jnz     @b
3816
        dec     edx
3824
        dec     edx
3817
        jnz     @b
3825
        jnz     @b
3818
@@:
3826
@@:
3819
        test    al, al
3827
        test    al, al
3820
        jnz     @f
3828
        jnz     @f
3821
        dec     esi
3829
        dec     esi
3822
        dec     edi
3830
        dec     edi
3823
@@:
3831
@@:
3824
.main:
3832
.main:
3825
        push    esi
3833
        push    esi
3826
@@:
3834
@@:
3827
        lodsb
3835
        lodsb
3828
        test    al, al
3836
        test    al, al
3829
        jnz     @b
3837
        jnz     @b
3830
        dec     esi
3838
        dec     esi
3831
        mov     ebx, esi
3839
        mov     ebx, esi
3832
        sub     ebx, [esp]
3840
        sub     ebx, [esp]
3833
        dec     esi
3841
        dec     esi
3834
        push    esi
3842
        push    esi
3835
        mov     esi, [ebp + PanelData.index]
3843
        mov     esi, [ebp + PanelData.index]
3836
        shl     esi, 2
3844
        shl     esi, 2
3837
        add     esi, [ebp + PanelData.files]
3845
        add     esi, [ebp + PanelData.files]
3838
        mov     esi, [esi]
3846
        mov     esi, [esi]
3839
        add     esi, 40
3847
        add     esi, 40
3840
        push    esi
3848
        push    esi
3841
@@:
3849
@@:
3842
        lodsb
3850
        lodsb
3843
        test    al, al
3851
        test    al, al
3844
        jnz     @b
3852
        jnz     @b
3845
        add     ebx, esi
3853
        add     ebx, esi
3846
        sub     ebx, [esp]
3854
        sub     ebx, [esp]
3847
        dec     esi
3855
        dec     esi
3848
        cmp     ebx, ecx
3856
        cmp     ebx, ecx
3849
        jbe     @f
3857
        jbe     @f
3850
        mov     al, '.'
3858
        mov     al, '.'
3851
        stosb
3859
        stosb
3852
        stosb
3860
        stosb
3853
        stosb
3861
        stosb
3854
        sub     ecx, 3
3862
        sub     ecx, 3
3855
        mov     ebx, ecx
3863
        mov     ebx, ecx
3856
@@:
3864
@@:
3857
        add     edi, ebx
3865
        add     edi, ebx
3858
        inc     ecx
3866
        inc     ecx
3859
        std
3867
        std
3860
@@:
3868
@@:
3861
        movsb
3869
        movsb
3862
        dec     ecx
3870
        dec     ecx
3863
        jz      .nodir
3871
        jz      .nodir
3864
        cmp     esi, [esp]
3872
        cmp     esi, [esp]
3865
        jae     @b
3873
        jae     @b
3866
        mov     esi, [esp+4]
3874
        mov     esi, [esp+4]
3867
        mov     al, '/'
3875
        mov     al, '/'
3868
        stosb
3876
        stosb
3869
        dec     ecx
3877
        dec     ecx
3870
        jz      .nodir
3878
        jz      .nodir
3871
@@:
3879
@@:
3872
        cmp     esi, [esp+8]
3880
        cmp     esi, [esp+8]
3873
        jb      .nodir
3881
        jb      .nodir
3874
        movsb
3882
        movsb
3875
        loop    @b
3883
        loop    @b
3876
.nodir:
3884
.nodir:
3877
        cld
3885
        cld
3878
        pop     eax
3886
        pop     eax
3879
        pop     eax
3887
        pop     eax
3880
        pop     eax
3888
        pop     eax
3881
        ret
3889
        ret
3882
 
3890
 
3883
draw_window:
3891
draw_window:
3884
        push    SF_REDRAW
3892
        push    SF_REDRAW
3885
        pop     eax
3893
        pop     eax
3886
        push    SSF_BEGIN_DRAW
3894
        push    SSF_BEGIN_DRAW
3887
        pop     ebx
3895
        pop     ebx
3888
        int     40h
3896
        int     40h
3889
        mov     al, SF_STYLE_SETTINGS
3897
        mov     al, SF_STYLE_SETTINGS
3890
        mov     bl, SSF_GET_SKIN_HEIGHT
3898
        mov     bl, SSF_GET_SKIN_HEIGHT
3891
        int     40h
3899
        int     40h
3892
        mov     [skinh], eax
3900
        mov     [skinh], eax
3893
        mov     ebx, [cur_width]
3901
        mov     ebx, [cur_width]
3894
        imul    ebx, font_width
3902
        imul    ebx, font_width
3895
        add     ebx, 100*65536 + 5*2-1
3903
        add     ebx, 100*65536 + 5*2-1
3896
        mov     ecx, [cur_height]
3904
        mov     ecx, [cur_height]
3897
        imul    ecx, font_height
3905
        imul    ecx, font_height
3898
        lea     ecx, [eax+ecx+5-1+100*65536]
3906
        lea     ecx, [eax+ecx+5-1+100*65536]
3899
        xor     eax, eax
3907
        xor     eax, eax
3900
        mov     edx, 0x53000000
3908
        mov     edx, 0x53000000
3901
        mov     edi, header
3909
        mov     edi, header
3902
        int     40h
3910
        int     40h
3903
        mov     al, SF_DRAW_RECT
3911
        mov     al, SF_DRAW_RECT
3904
        xor     edx, edx
3912
        xor     edx, edx
3905
        cmp     [fill_width], 0
3913
        cmp     [fill_width], 0
3906
        jz      @f
3914
        jz      @f
3907
        mov     ebx, [wnd_width]
3915
        mov     ebx, [wnd_width]
3908
        sub     ebx, [fill_width]
3916
        sub     ebx, [fill_width]
3909
        sub     ebx, 5-1
3917
        sub     ebx, 5-1
3910
        shl     ebx, 16
3918
        shl     ebx, 16
3911
        mov     bx, word [fill_width]
3919
        mov     bx, word [fill_width]
3912
        mov     ecx, [skinh-2]
3920
        mov     ecx, [skinh-2]
3913
        mov     cx, word [wnd_height]
3921
        mov     cx, word [wnd_height]
3914
        sub     cx, word [skinh]
3922
        sub     cx, word [skinh]
3915
        sub     cx, 5-1
3923
        sub     cx, 5-1
3916
        int     0x40
3924
        int     0x40
3917
@@:
3925
@@:
3918
        cmp     [fill_height], 0
3926
        cmp     [fill_height], 0
3919
        jz      @f
3927
        jz      @f
3920
        xor     edx, edx
3928
        xor     edx, edx
3921
        mov     ebx, 50000h
3929
        mov     ebx, 50000h
3922
        mov     bx, word [wnd_width]
3930
        mov     bx, word [wnd_width]
3923
        sub     ebx, 9
3931
        sub     ebx, 9
3924
        mov     ecx, [wnd_height]
3932
        mov     ecx, [wnd_height]
3925
        sub     ecx, [fill_height]
3933
        sub     ecx, [fill_height]
3926
        sub     ecx, 5-1
3934
        sub     ecx, 5-1
3927
        shl     ecx, 16
3935
        shl     ecx, 16
3928
        mov     cx, word [fill_height]
3936
        mov     cx, word [fill_height]
3929
        int     0x40
3937
        int     0x40
3930
@@:
3938
@@:
3931
;        xor     ecx, ecx
3939
;        xor     ecx, ecx
3932
;        call    draw_image
3940
;        call    draw_image
3933
        mov     al, SF_PUT_IMAGE_EXT
3941
        mov     al, SF_PUT_IMAGE_EXT
3934
        mov     ebx, [MemForImage]
3942
        mov     ebx, [MemForImage]
3935
        test    ebx, ebx
3943
        test    ebx, ebx
3936
        jz      @f
3944
        jz      @f
3937
        mov     ecx, [cur_width]
3945
        mov     ecx, [cur_width]
3938
        imul    ecx, font_width*10000h
3946
        imul    ecx, font_width*10000h
3939
        mov     cx, word [cur_height]
3947
        mov     cx, word [cur_height]
3940
        imul    cx, font_height
3948
        imul    cx, font_height
3941
        mov     edx, [skinh]
3949
        mov     edx, [skinh]
3942
        add     edx, 5*10000h
3950
        add     edx, 5*10000h
3943
        mov     esi, 8
3951
        mov     esi, 8
3944
        mov     edi, console_colors
3952
        mov     edi, console_colors
3945
        xor     ebp, ebp
3953
        xor     ebp, ebp
3946
        int     0x40
3954
        int     0x40
3947
@@:
3955
@@:
3948
        mov     al, SF_REDRAW
3956
        mov     al, SF_REDRAW
3949
        push    SSF_END_DRAW
3957
        push    SSF_END_DRAW
3950
        pop     ebx
3958
        pop     ebx
3951
        int     40h
3959
        int     40h
3952
        ret
3960
        ret
3953
 
3961
 
3954
draw_image.nomem:
3962
draw_image.nomem:
3955
        mov     al, SF_DRAW_RECT
3963
        mov     al, SF_DRAW_RECT
3956
        xor     edx, edx
3964
        xor     edx, edx
3957
        mov     ebx, [cur_width]
3965
        mov     ebx, [cur_width]
3958
        imul    ebx, font_width
3966
        imul    ebx, font_width
3959
        add     ebx, 5*65536
3967
        add     ebx, 5*65536
3960
        mov     ecx, [skinh-2]
3968
        mov     ecx, [skinh-2]
3961
        mov     cx, word [cur_height]
3969
        mov     cx, word [cur_height]
3962
        imul    cx, font_height
3970
        imul    cx, font_height
3963
        int     40h
3971
        int     40h
3964
        mov     al, SF_DRAW_TEXT
3972
        mov     al, SF_DRAW_TEXT
3965
        mov     ebx, 32*65536+32
3973
        mov     ebx, 32*65536+32
3966
        mov     ecx, 0xFFFFFF
3974
        mov     ecx, 0xFFFFFF
3967
        mov     edx, nomem_draw
3975
        mov     edx, nomem_draw
3968
        push    nomem_draw.size
3976
        push    nomem_draw.size
3969
        pop     esi
3977
        pop     esi
3970
        int     40h
3978
        int     40h
3971
        ret
3979
        ret
3972
 
3980
 
3973
align 16
3981
align 16
3974
draw_image:
3982
draw_image:
3975
        mov     [bMemForImageValidData], byte 1
3983
        mov     [bMemForImageValidData], byte 1
3976
        cmp     [MemForImage], 0
3984
        cmp     [MemForImage], 0
3977
        jnz     .allocated
3985
        jnz     .allocated
3978
; allocate memory for image
3986
; allocate memory for image
3979
        mov     ecx, [cur_width]
3987
        mov     ecx, [cur_width]
3980
        imul    ecx, [cur_height]
3988
        imul    ecx, [cur_height]
3981
        imul    ecx, font_width*font_height
3989
        imul    ecx, font_width*font_height
3982
        call    pgalloc
3990
        call    pgalloc
3983
        test    eax, eax
3991
        test    eax, eax
3984
        jz      draw_image.nomem
3992
        jz      draw_image.nomem
3985
        mov     [MemForImage], eax
3993
        mov     [MemForImage], eax
3986
        mov     [bMemForImageValidData], byte 0
3994
        mov     [bMemForImageValidData], byte 0
3987
.allocated:
3995
.allocated:
3988
        push    ebp
3996
        push    ebp
3989
        and     [max_x], 0
3997
        and     [max_x], 0
3990
        or      [min_x], -1
3998
        or      [min_x], -1
3991
        and     [max_y], 0
3999
        and     [max_y], 0
3992
        or      [min_y], -1
4000
        or      [min_y], -1
3993
        mov     eax, [cursor_y]
4001
        mov     eax, [cursor_y]
3994
        mul     [cur_width]
4002
        mul     [cur_width]
3995
        add     eax, [cursor_x]
4003
        add     eax, [cursor_x]
3996
        add     eax, eax
4004
        add     eax, eax
3997
        add     eax, [console_data_ptr]
4005
        add     eax, [console_data_ptr]
3998
        xchg    [cur_cursor_pos], eax
4006
        xchg    [cur_cursor_pos], eax
3999
        mov     [old_cursor_pos], eax
4007
        mov     [old_cursor_pos], eax
4000
        mov     edi, [MemForImage]
4008
        mov     edi, [MemForImage]
4001
        mov     esi, [console_data_ptr]
4009
        mov     esi, [console_data_ptr]
4002
        mov     ecx, [cur_height]
4010
        mov     ecx, [cur_height]
4003
.lh:
4011
.lh:
4004
        push    ecx
4012
        push    ecx
4005
        mov     ecx, [cur_width]
4013
        mov     ecx, [cur_width]
4006
.lw:
4014
.lw:
4007
        push    ecx
4015
        push    ecx
4008
        mov     eax, [cur_width]
4016
        mov     eax, [cur_width]
4009
        imul    eax, [cur_height]
4017
        imul    eax, [cur_height]
4010
        mov     ebx, [esi]
4018
        mov     ebx, [esi]
4011
        cmp     [bMemForImageValidData], 0
4019
        cmp     [bMemForImageValidData], 0
4012
        jz      @f
4020
        jz      @f
4013
        cmp     esi, [cur_cursor_pos]
4021
        cmp     esi, [cur_cursor_pos]
4014
        jz      @f
4022
        jz      @f
4015
        cmp     esi, [old_cursor_pos]
4023
        cmp     esi, [old_cursor_pos]
4016
        jz      @f
4024
        jz      @f
4017
        cmp     bx, [eax*2+esi]
4025
        cmp     bx, [eax*2+esi]
4018
        jnz     @f
4026
        jnz     @f
4019
        inc     esi
4027
        inc     esi
4020
        inc     esi
4028
        inc     esi
4021
        jmp     .skip_symbol
4029
        jmp     .skip_symbol
4022
@@:
4030
@@:
4023
        mov     [eax*2+esi], bx
4031
        mov     [eax*2+esi], bx
4024
        cmp     ecx, [min_x]
4032
        cmp     ecx, [min_x]
4025
        ja      @f
4033
        ja      @f
4026
        mov     [min_x], ecx
4034
        mov     [min_x], ecx
4027
@@:
4035
@@:
4028
        cmp     ecx, [max_x]
4036
        cmp     ecx, [max_x]
4029
        jb      @f
4037
        jb      @f
4030
        mov     [max_x], ecx
4038
        mov     [max_x], ecx
4031
@@:
4039
@@:
4032
        mov     eax, [esp+4]
4040
        mov     eax, [esp+4]
4033
        mov     [min_y], eax
4041
        mov     [min_y], eax
4034
        cmp     eax, [max_y]
4042
        cmp     eax, [max_y]
4035
        jb      @f
4043
        jb      @f
4036
        mov     [max_y], eax
4044
        mov     [max_y], eax
4037
@@:
4045
@@:
4038
        push    edi
4046
        push    edi
4039
        xor     eax, eax
4047
        xor     eax, eax
4040
        mov     al, [esi+1]
4048
        mov     al, [esi+1]
4041
        and     al, 0xF
4049
        and     al, 0xF
4042
        mov     ebx, eax
4050
        mov     ebx, eax
4043
        mov     al, [esi+1]
4051
        mov     al, [esi+1]
4044
        shr     al, 4
4052
        shr     al, 4
4045
        mov     ebp, eax
4053
        mov     ebp, eax
4046
        sub     ebx, ebp
4054
        sub     ebx, ebp
4047
        lodsb
4055
        lodsb
4048
        inc     esi
4056
        inc     esi
4049
if font_width > 8
4057
if font_width > 8
4050
        lea     edx, [eax+eax+font]
4058
        lea     edx, [eax+eax+font]
4051
else
4059
else
4052
        lea     edx, [eax+font]
4060
        lea     edx, [eax+font]
4053
end if
4061
end if
4054
.sh:
4062
.sh:
4055
        mov     ecx, [edx]
4063
        mov     ecx, [edx]
4056
repeat font_width
4064
repeat font_width
4057
        shr     ecx, 1
4065
        shr     ecx, 1
4058
        sbb     eax, eax
4066
        sbb     eax, eax
4059
        and     eax, ebx
4067
        and     eax, ebx
4060
        add     eax, ebp
4068
        add     eax, ebp
4061
        mov     [edi+%-1], al
4069
        mov     [edi+%-1], al
4062
end repeat
4070
end repeat
4063
        mov     eax, [cur_width]
4071
        mov     eax, [cur_width]
4064
;        imul    eax, font_width
4072
;        imul    eax, font_width
4065
;        add     edi, eax
4073
;        add     edi, eax
4066
if font_width = 6
4074
if font_width = 6
4067
        lea     eax, [eax*2+eax]
4075
        lea     eax, [eax*2+eax]
4068
        lea     edi, [edi+eax*2]
4076
        lea     edi, [edi+eax*2]
4069
else if font_width = 7
4077
else if font_width = 7
4070
        lea     edi, [edi+eax*8]
4078
        lea     edi, [edi+eax*8]
4071
        sub     edi, eax
4079
        sub     edi, eax
4072
else if font_width = 8
4080
else if font_width = 8
4073
        lea     edi, [edi+eax*8]
4081
        lea     edi, [edi+eax*8]
4074
else if font_width = 9
4082
else if font_width = 9
4075
        lea     edi, [edi+eax*8]
4083
        lea     edi, [edi+eax*8]
4076
        add     edi, eax
4084
        add     edi, eax
4077
else if font_width = 10
4085
else if font_width = 10
4078
        lea     eax, [eax*4+eax]
4086
        lea     eax, [eax*4+eax]
4079
        lea     edi, [edi+eax*2]
4087
        lea     edi, [edi+eax*2]
4080
else
4088
else
4081
Unknown font_width value!
4089
Unknown font_width value!
4082
end if
4090
end if
4083
if font_width > 8
4091
if font_width > 8
4084
        add     edx, 256*2
4092
        add     edx, 256*2
4085
        cmp     edx, font+256*2*font_height
4093
        cmp     edx, font+256*2*font_height
4086
else
4094
else
4087
        add     edx, 256
4095
        add     edx, 256
4088
        cmp     edx, font+256*font_height
4096
        cmp     edx, font+256*font_height
4089
end if
4097
end if
4090
        jb      .sh
4098
        jb      .sh
4091
        pop     edi
4099
        pop     edi
4092
.skip_symbol:
4100
.skip_symbol:
4093
        pop     ecx
4101
        pop     ecx
4094
        add     edi, font_width
4102
        add     edi, font_width
4095
        dec     ecx
4103
        dec     ecx
4096
        jnz     .lw
4104
        jnz     .lw
4097
        mov     eax, [cur_width]
4105
        mov     eax, [cur_width]
4098
        imul    eax, (font_height-1)*font_width
4106
        imul    eax, (font_height-1)*font_width
4099
        add     edi, eax
4107
        add     edi, eax
4100
        pop     ecx
4108
        pop     ecx
4101
        dec     ecx
4109
        dec     ecx
4102
        jnz     .lh
4110
        jnz     .lh
4103
; cursor
4111
; cursor
4104
        mov     eax, [cursor_y]
4112
        mov     eax, [cursor_y]
4105
        inc     eax
4113
        inc     eax
4106
        jz      .nocursor
4114
        jz      .nocursor
4107
        mul     [cur_width]
4115
        mul     [cur_width]
4108
        imul    eax, font_height*font_width
4116
        imul    eax, font_height*font_width
4109
        mov     edx, [cursor_x]
4117
        mov     edx, [cursor_x]
4110
        inc     edx
4118
        inc     edx
4111
        imul    edx, font_width
4119
        imul    edx, font_width
4112
        add     eax, edx
4120
        add     eax, edx
4113
        add     eax, [MemForImage]
4121
        add     eax, [MemForImage]
4114
        mov     edx, [cur_width]
4122
        mov     edx, [cur_width]
4115
        imul    edx, font_width
4123
        imul    edx, font_width
4116
        neg     edx
4124
        neg     edx
4117
        mov     ecx, [cursor_size]
4125
        mov     ecx, [cursor_size]
4118
.cursor_loop:
4126
.cursor_loop:
4119
        push    ecx
4127
        push    ecx
4120
        mov     ecx, font_width
4128
        mov     ecx, font_width
4121
        add     eax, edx
4129
        add     eax, edx
4122
        push    eax
4130
        push    eax
4123
@@:
4131
@@:
4124
;;        add     byte [eax-1], 0x10
4132
;;        add     byte [eax-1], 0x10
4125
        xor     byte [eax-1], 7
4133
        xor     byte [eax-1], 7
4126
        sub     eax, 1
4134
        sub     eax, 1
4127
        loop    @b
4135
        loop    @b
4128
        pop     eax
4136
        pop     eax
4129
        pop     ecx
4137
        pop     ecx
4130
        loop    .cursor_loop
4138
        loop    .cursor_loop
4131
.nocursor:
4139
.nocursor:
4132
        cmp     [min_y], -1
4140
        cmp     [min_y], -1
4133
        jz      .nodraw
4141
        jz      .nodraw
4134
        mov     ecx, [cur_width]
4142
        mov     ecx, [cur_width]
4135
        mov     ebx, [cur_height]
4143
        mov     ebx, [cur_height]
4136
        mov     eax, ebx
4144
        mov     eax, ebx
4137
        sub     ebx, [max_y]
4145
        sub     ebx, [max_y]
4138
        sub     eax, [min_y]
4146
        sub     eax, [min_y]
4139
        sub     eax, ebx
4147
        sub     eax, ebx
4140
        inc     eax
4148
        inc     eax
4141
        imul    ebp, eax, font_height
4149
        imul    ebp, eax, font_height
4142
        mov     edx, ecx
4150
        mov     edx, ecx
4143
        sub     edx, [max_x]
4151
        sub     edx, [max_x]
4144
        imul    edx, font_width
4152
        imul    edx, font_width
4145
        mov     eax, edx
4153
        mov     eax, edx
4146
        shl     edx, 16
4154
        shl     edx, 16
4147
        imul    dx, bx, font_height
4155
        imul    dx, bx, font_height
4148
        imul    ebx, [cur_width]
4156
        imul    ebx, [cur_width]
4149
        mov     ecx, [max_x]
4157
        mov     ecx, [max_x]
4150
        sub     ecx, [min_x]
4158
        sub     ecx, [min_x]
4151
        inc     ecx
4159
        inc     ecx
4152
        imul    ecx, font_width*10000h
4160
        imul    ecx, font_width*10000h
4153
        add     ecx, ebp
4161
        add     ecx, ebp
4154
        imul    ebx, font_width*font_height
4162
        imul    ebx, font_width*font_height
4155
        add     ebx, [MemForImage]
4163
        add     ebx, [MemForImage]
4156
        add     ebx, eax
4164
        add     ebx, eax
4157
        add     edx, [skinh]
4165
        add     edx, [skinh]
4158
        add     edx, 5*10000h
4166
        add     edx, 5*10000h
4159
        imul    esi, [cur_width], font_width
4167
        imul    esi, [cur_width], font_width
4160
        mov     ebp, ecx
4168
        mov     ebp, ecx
4161
        shr     ebp, 16
4169
        shr     ebp, 16
4162
        sub     esi, ebp
4170
        sub     esi, ebp
4163
        mov     ebp, esi
4171
        mov     ebp, esi
4164
        push    SF_PUT_IMAGE_EXT
4172
        push    SF_PUT_IMAGE_EXT
4165
        pop     eax
4173
        pop     eax
4166
        mov     edi, console_colors
4174
        mov     edi, console_colors
4167
        push    8
4175
        push    8
4168
        pop     esi
4176
        pop     esi
4169
        int     40h
4177
        int     40h
4170
.nodraw:
4178
.nodraw:
4171
        pop     ebp
4179
        pop     ebp
4172
        ret
4180
        ret
4173
 
4181
 
4174
get_console_ptr:
4182
get_console_ptr:
4175
; in: eax=x, edx=y
4183
; in: eax=x, edx=y
4176
; out: edi->console data
4184
; out: edi->console data
4177
        push    edx
4185
        push    edx
4178
        imul    edx, [cur_width]
4186
        imul    edx, [cur_width]
4179
        add     edx, eax
4187
        add     edx, eax
4180
        mov     edi, [console_data_ptr]
4188
        mov     edi, [console_data_ptr]
4181
        lea     edi, [edi + edx*2]
4189
        lea     edi, [edi + edx*2]
4182
        pop     edx
4190
        pop     edx
4183
        ret
4191
        ret
4184
 
4192
 
4185
;description:
4193
;description:
4186
; draw keys F1-F12
4194
; draw keys F1-F12
4187
align 16
4195
align 16
4188
draw_keybar:
4196
draw_keybar:
4189
        pushad
4197
        pushad
4190
        xor     eax, eax
4198
        xor     eax, eax
4191
        test    [ctrlstate], 3
4199
        test    [ctrlstate], 3
4192
        jz      @f
4200
        jz      @f
4193
        inc     eax
4201
        inc     eax
4194
@@:
4202
@@:
4195
        test    [ctrlstate], 0xC
4203
        test    [ctrlstate], 0xC
4196
        jz      @f
4204
        jz      @f
4197
        or      al, 2
4205
        or      al, 2
4198
@@:
4206
@@:
4199
        test    [ctrlstate], 0x30
4207
        test    [ctrlstate], 0x30
4200
        jz      @f
4208
        jz      @f
4201
        or      al, 4
4209
        or      al, 4
4202
@@:
4210
@@:
4203
        imul    eax, 6*12 ;¤«¨­  ⥪áâ  * ç¨á«® ª­®¯®ª F1-F12
4211
        imul    eax, 6*12 ;¤«¨­  ⥪áâ  * ç¨á«® ª­®¯®ª F1-F12
4204
        mov     esi, [active_screen_keybar]
4212
        mov     esi, [active_screen_keybar]
4205
        add     esi, eax
4213
        add     esi, eax
4206
        xor     ecx, ecx
4214
        xor     ecx, ecx
4207
        inc     ecx
4215
        inc     ecx
4208
        xor     eax, eax
4216
        xor     eax, eax
4209
        mov     edx, [cur_height]
4217
        mov     edx, [cur_height]
4210
        dec     edx
4218
        dec     edx
4211
        call    get_console_ptr
4219
        call    get_console_ptr
4212
        push    6
4220
        push    6
4213
        pop     ebx
4221
        pop     ebx
4214
        mov     eax, [cur_width]
4222
        mov     eax, [cur_width]
4215
        sub     eax, 11+9+3*2+6
4223
        sub     eax, 11+9+3*2+6
4216
        cmp     eax, 7*11
4224
        cmp     eax, 7*11
4217
        jl      @f
4225
        jl      @f
4218
        cdq
4226
        cdq
4219
        mov     bl, 11
4227
        mov     bl, 11
4220
        div     ebx
4228
        div     ebx
4221
        mov     ebx, eax
4229
        mov     ebx, eax
4222
@@:
4230
@@:
4223
        xor     edx, edx ;¤«ï ª®­âà®«ï ¢ë室  §  ¯à¥¤¥«ë ¯ ­¥«¨
4231
        xor     edx, edx ;¤«ï ª®­âà®«ï ¢ë室  §  ¯à¥¤¥«ë ¯ ­¥«¨
4224
.l:
4232
.l:
4225
        add     edx, 7
4233
        add     edx, 7
4226
        cmp     cl, 10
4234
        cmp     cl, 10
4227
        jb      @f
4235
        jb      @f
4228
        inc     edx
4236
        inc     edx
4229
@@:
4237
@@:
4230
        cmp     edx, [cur_width]
4238
        cmp     edx, [cur_width]
4231
        ja      .ret
4239
        ja      .ret
4232
        cmp     cl, 10
4240
        cmp     cl, 10
4233
        jae     .twodig
4241
        jae     .twodig
4234
        lea     eax, [ecx+'0']
4242
        lea     eax, [ecx+'0']
4235
        stosb
4243
        stosb
4236
        mov     al, [keybar_number_color]
4244
        mov     al, [keybar_number_color]
4237
        stosb
4245
        stosb
4238
        jmp     .cmn
4246
        jmp     .cmn
4239
.twodig:
4247
.twodig:
4240
        mov     al, cl
4248
        mov     al, cl
4241
        cbw
4249
        cbw
4242
        div     [_10]
4250
        div     [_10]
4243
        add     al, '0'
4251
        add     al, '0'
4244
        stosb
4252
        stosb
4245
        mov     al, [keybar_number_color]
4253
        mov     al, [keybar_number_color]
4246
        stosb
4254
        stosb
4247
        xchg    al, ah
4255
        xchg    al, ah
4248
        add     al, '0'
4256
        add     al, '0'
4249
        stosw
4257
        stosw
4250
.cmn:
4258
.cmn:
4251
        mov     ah, [keybar_name_color]
4259
        mov     ah, [keybar_name_color]
4252
        push    ecx
4260
        push    ecx
4253
        mov     cl, 6
4261
        mov     cl, 6
4254
@@:
4262
@@:
4255
        lodsb
4263
        lodsb
4256
        stosw
4264
        stosw
4257
        loop    @b
4265
        loop    @b
4258
        mov     al, ' '
4266
        mov     al, ' '
4259
        lea     ecx, [ebx-6]
4267
        lea     ecx, [ebx-6]
4260
        cmp     byte [esp], 12
4268
        cmp     byte [esp], 12
4261
        jz      .ret_pop
4269
        jz      .ret_pop
4262
        add     edx, ecx
4270
        add     edx, ecx
4263
        rep     stosw
4271
        rep     stosw
4264
        pop     ecx
4272
        pop     ecx
4265
        inc     edx
4273
        inc     edx
4266
        cmp     edx, [cur_width]
4274
        cmp     edx, [cur_width]
4267
        ja      .ret
4275
        ja      .ret
4268
        mov     ah, [keybar_bgr_color]
4276
        mov     ah, [keybar_bgr_color]
4269
        stosw
4277
        stosw
4270
        inc     ecx
4278
        inc     ecx
4271
        jmp     .l
4279
        jmp     .l
4272
.ret_pop:
4280
.ret_pop:
4273
        pop     ecx
4281
        pop     ecx
4274
.ret:
4282
.ret:
4275
        cmp     byte [edi-2], ' '
4283
        cmp     byte [edi-2], ' '
4276
        jnz     @f
4284
        jnz     @f
4277
        dec     edi
4285
        dec     edi
4278
        dec     edi
4286
        dec     edi
4279
@@:
4287
@@:
4280
        push    edi
4288
        push    edi
4281
        xor     eax, eax
4289
        xor     eax, eax
4282
        mov     edx, [cur_height]
4290
        mov     edx, [cur_height]
4283
        call    get_console_ptr
4291
        call    get_console_ptr
4284
        mov     ecx, edi
4292
        mov     ecx, edi
4285
        pop     edi
4293
        pop     edi
4286
        sub     ecx, edi
4294
        sub     ecx, edi
4287
        shr     ecx, 1
4295
        shr     ecx, 1
4288
        mov     al, ' '
4296
        mov     al, ' '
4289
        mov     ah, [keybar_name_color]
4297
        mov     ah, [keybar_name_color]
4290
        rep     stosw ;§ ªà áª  ª®­æ  ¯ ­¥«¨ ¯®¤ 梥⠪­®¯ª¨
4298
        rep     stosw ;§ ªà áª  ª®­æ  ¯ ­¥«¨ ¯®¤ 梥⠪­®¯ª¨
4291
 
4299
 
4292
        cmp     [bDisplayQuickSearch], 0
4300
        cmp     [bDisplayQuickSearch], 0
4293
        jz      @f
4301
        jz      @f
4294
        push    QuickSearchDlg
4302
        push    QuickSearchDlg
4295
        call    DrawDialogBox
4303
        call    DrawDialogBox
4296
@@:
4304
@@:
4297
        popad
4305
        popad
4298
        ret
4306
        ret
4299
 
4307
 
4300
align 16
4308
align 16
4301
draw_cmdbar:
4309
draw_cmdbar:
4302
        mov     esi, [active_panel]
4310
        mov     esi, [active_panel]
4303
        add     esi, PanelData.dir
4311
        add     esi, PanelData.dir
4304
        xor     eax, eax
4312
        xor     eax, eax
4305
        mov     edx, [cur_height]
4313
        mov     edx, [cur_height]
4306
        dec     edx
4314
        dec     edx
4307
        dec     edx
4315
        dec     edx
4308
        call    get_console_ptr
4316
        call    get_console_ptr
4309
        mov     ah, [cmdbar_prefix_color]
4317
        mov     ah, [cmdbar_prefix_color]
4310
        mov     ecx, [cur_width]
4318
        mov     ecx, [cur_width]
4311
        dec     ecx
4319
        dec     ecx
4312
@@:
4320
@@:
4313
        lodsb
4321
        lodsb
4314
        test    al, al
4322
        test    al, al
4315
        jz      @f
4323
        jz      @f
4316
        stosw
4324
        stosw
4317
        loop    @b
4325
        loop    @b
4318
@@:
4326
@@:
4319
        mov     al, '>'
4327
        mov     al, '>'
4320
        stosw
4328
        stosw
4321
        mov     al, ' '
4329
        mov     al, ' '
4322
        mov     ah, [cmdbar_normal_color]
4330
        mov     ah, [cmdbar_normal_color]
4323
        rep     stosw
4331
        rep     stosw
4324
        ret
4332
        ret
4325
 
4333
 
4326
align 16
4334
align 16
4327
draw_border:
4335
draw_border:
4328
        push    edi
4336
        push    edi
4329
        mov     al, 0xC9
4337
        mov     al, 0xC9
4330
        stosw
4338
        stosw
4331
        mov     al, 0xCD
4339
        mov     al, 0xCD
4332
        lea     ecx, [ebx-2]
4340
        lea     ecx, [ebx-2]
4333
        rep     stosw
4341
        rep     stosw
4334
        mov     al, 0xBB
4342
        mov     al, 0xBB
4335
        stosw
4343
        stosw
4336
        pop     edi
4344
        pop     edi
4337
        add     edi, [cur_width]
4345
        add     edi, [cur_width]
4338
        add     edi, [cur_width]
4346
        add     edi, [cur_width]
4339
        lea     ecx, [edx-2]
4347
        lea     ecx, [edx-2]
4340
.l:
4348
.l:
4341
        push    edi
4349
        push    edi
4342
        mov     al, 0xBA
4350
        mov     al, 0xBA
4343
        stosw
4351
        stosw
4344
        mov     al, 0x20
4352
        mov     al, 0x20
4345
        push    ecx
4353
        push    ecx
4346
        lea     ecx, [ebx-2]
4354
        lea     ecx, [ebx-2]
4347
        rep     stosw
4355
        rep     stosw
4348
        pop     ecx
4356
        pop     ecx
4349
        mov     al, 0xBA
4357
        mov     al, 0xBA
4350
        stosw
4358
        stosw
4351
        pop     edi
4359
        pop     edi
4352
        add     edi, [cur_width]
4360
        add     edi, [cur_width]
4353
        add     edi, [cur_width]
4361
        add     edi, [cur_width]
4354
        loop    .l
4362
        loop    .l
4355
        mov     al, 0xC8
4363
        mov     al, 0xC8
4356
        stosw
4364
        stosw
4357
        mov     al, 0xCD
4365
        mov     al, 0xCD
4358
        lea     ecx, [ebx-2]
4366
        lea     ecx, [ebx-2]
4359
        rep     stosw
4367
        rep     stosw
4360
        mov     al, 0xBC
4368
        mov     al, 0xBC
4361
        stosw
4369
        stosw
4362
        ret
4370
        ret
4363
 
4371
 
4364
calc_colwidths:
4372
calc_colwidths:
4365
; in: ebp->panel data
4373
; in: ebp->panel data
4366
        imul    esi, [ebp + PanelData.colmode], PanelMode.size
4374
        imul    esi, [ebp + PanelData.colmode], PanelMode.size
4367
        add     esi, colmodes
4375
        add     esi, colmodes
4368
        lodsd
4376
        lodsd
4369
        mov     ecx, eax
4377
        mov     ecx, eax
4370
        lea     edx, [ecx-1]
4378
        lea     edx, [ecx-1]
4371
        xor     ebx, ebx
4379
        xor     ebx, ebx
4372
        add     esi, PanelMode.ColumnWidths-4
4380
        add     esi, PanelMode.ColumnWidths-4
4373
        push    ecx esi
4381
        push    ecx esi
4374
        xor     eax, eax
4382
        xor     eax, eax
4375
.loop:
4383
.loop:
4376
        lodsb
4384
        lodsb
4377
        add     edx, eax
4385
        add     edx, eax
4378
        cmp     al, 1
4386
        cmp     al, 1
4379
        adc     ebx, 0
4387
        adc     ebx, 0
4380
        loop    .loop
4388
        loop    .loop
4381
        pop     esi ecx
4389
        pop     esi ecx
4382
        lea     edi, [ebp + PanelData.colwidths]
4390
        lea     edi, [ebp + PanelData.colwidths]
4383
        test    ebx, ebx
4391
        test    ebx, ebx
4384
        jz      .loop2
4392
        jz      .loop2
4385
        mov     eax, [ebp + PanelData.width]
4393
        mov     eax, [ebp + PanelData.width]
4386
        dec     eax
4394
        dec     eax
4387
        dec     eax
4395
        dec     eax
4388
        sub     eax, edx
4396
        sub     eax, edx
4389
        jae     @f
4397
        jae     @f
4390
        xor     eax, eax
4398
        xor     eax, eax
4391
@@:
4399
@@:
4392
        xor     edx, edx
4400
        xor     edx, edx
4393
        div     ebx
4401
        div     ebx
4394
        test    eax, eax
4402
        test    eax, eax
4395
        jnz     @f
4403
        jnz     @f
4396
        xor     edx, edx
4404
        xor     edx, edx
4397
        inc     eax
4405
        inc     eax
4398
@@:
4406
@@:
4399
        push    eax
4407
        push    eax
4400
.loop2:
4408
.loop2:
4401
        movzx   eax, byte [esi]
4409
        movzx   eax, byte [esi]
4402
        inc     esi
4410
        inc     esi
4403
        test    eax, eax
4411
        test    eax, eax
4404
        jnz     @f
4412
        jnz     @f
4405
        pop     eax
4413
        pop     eax
4406
        push    eax
4414
        push    eax
4407
        dec     ebx
4415
        dec     ebx
4408
        cmp     ebx, edx
4416
        cmp     ebx, edx
4409
        jae     @f
4417
        jae     @f
4410
        inc     eax
4418
        inc     eax
4411
@@:
4419
@@:
4412
        stosd
4420
        stosd
4413
        loop    .loop2
4421
        loop    .loop2
4414
        pop     eax
4422
        pop     eax
4415
        and     dword [edi], 0
4423
        and     dword [edi], 0
4416
        ret
4424
        ret
4417
 
4425
 
4418
GetPanelTitle_default:
4426
GetPanelTitle_default:
4419
        mov     edi, [esp+8]
4427
        mov     edi, [esp+8]
4420
        mov     ecx, 1024
4428
        mov     ecx, 1024
4421
        mov     esi, [esp+12]
4429
        mov     esi, [esp+12]
4422
        test    esi, esi
4430
        test    esi, esi
4423
        jz      .nohost
4431
        jz      .nohost
4424
        mov     edx, esi
4432
        mov     edx, esi
4425
@@:
4433
@@:
4426
        lodsb
4434
        lodsb
4427
        test    al, al
4435
        test    al, al
4428
        jz      @f
4436
        jz      @f
4429
        cmp     al, '/'
4437
        cmp     al, '/'
4430
        jnz     @b
4438
        jnz     @b
4431
        mov     edx, esi
4439
        mov     edx, esi
4432
        jmp     @b
4440
        jmp     @b
4433
@@:
4441
@@:
4434
        mov     esi, edx
4442
        mov     esi, edx
4435
@@:
4443
@@:
4436
        lodsb
4444
        lodsb
4437
        stosb
4445
        stosb
4438
        test    al, al
4446
        test    al, al
4439
        loopnz  @b
4447
        loopnz  @b
4440
        dec     edi
4448
        dec     edi
4441
        inc     ecx
4449
        inc     ecx
4442
.nohost:
4450
.nohost:
4443
        mov     esi, [esp+16]
4451
        mov     esi, [esp+16]
4444
        cmp     word [esi], '/'
4452
        cmp     word [esi], '/'
4445
        jz      .nodir
4453
        jz      .nodir
4446
@@:
4454
@@:
4447
        lodsb
4455
        lodsb
4448
        stosb
4456
        stosb
4449
        test    al, al
4457
        test    al, al
4450
        loopnz  @b
4458
        loopnz  @b
4451
        dec     edi
4459
        dec     edi
4452
.nodir:
4460
.nodir:
4453
        mov     byte [edi], 0
4461
        mov     byte [edi], 0
4454
        ret     10h
4462
        ret     10h
4455
 
4463
 
4456
;input:
4464
;input:
4457
; ebp - pointer to panel1 or panel2
4465
; ebp - pointer to panel1 or panel2
4458
align 16
4466
align 16
4459
draw_panel:
4467
draw_panel:
4460
        mov     eax, [ebp + PanelData.left]
4468
        mov     eax, [ebp + PanelData.left]
4461
        mov     edx, [ebp + PanelData.top]
4469
        mov     edx, [ebp + PanelData.top]
4462
        call    get_console_ptr
4470
        call    get_console_ptr
4463
; draw border
4471
; draw border
4464
        mov     ah, [panel_border_color]
4472
        mov     ah, [panel_border_color]
4465
        mov     ebx, [ebp + PanelData.width]
4473
        mov     ebx, [ebp + PanelData.width]
4466
        mov     edx, [ebp + PanelData.height]
4474
        mov     edx, [ebp + PanelData.height]
4467
        call    draw_border
4475
        call    draw_border
4468
        push    eax
4476
        push    eax
4469
        mov     eax, [ebp + PanelData.left]
4477
        mov     eax, [ebp + PanelData.left]
4470
        mov     edx, [ebp + PanelData.top]
4478
        mov     edx, [ebp + PanelData.top]
4471
        add     edx, [ebp + PanelData.height]
4479
        add     edx, [ebp + PanelData.height]
4472
        sub     edx, 3
4480
        sub     edx, 3
4473
        call    get_console_ptr
4481
        call    get_console_ptr
4474
        pop     eax
4482
        pop     eax
4475
        mov     al, 0xC7
4483
        mov     al, 0xC7
4476
        stosw
4484
        stosw
4477
        mov     al, 0xC4
4485
        mov     al, 0xC4
4478
        lea     ecx, [ebx-2]
4486
        lea     ecx, [ebx-2]
4479
        rep     stosw
4487
        rep     stosw
4480
        mov     al, 0xB6
4488
        mov     al, 0xB6
4481
        stosw
4489
        stosw
4482
 
4490
 
4483
        imul    esi, [ebp + PanelData.colmode], PanelMode.size
4491
        imul    esi, [ebp + PanelData.colmode], PanelMode.size
4484
        add     esi, colmodes
4492
        add     esi, colmodes
4485
        lodsd
4493
        lodsd
4486
        mov     ecx, eax        ; number of columns
4494
        mov     ecx, eax        ; number of columns
4487
        lea     ebx, [ebp + PanelData.colwidths]
4495
        lea     ebx, [ebp + PanelData.colwidths]
4488
        mov     eax, [ebp + PanelData.left]
4496
        mov     eax, [ebp + PanelData.left]
4489
        inc     eax
4497
        inc     eax
4490
        mov     [column_left], eax
4498
        mov     [column_left], eax
4491
        mov     eax, [ebp + PanelData.top]
4499
        mov     eax, [ebp + PanelData.top]
4492
        inc     eax
4500
        inc     eax
4493
        mov     [column_top], eax
4501
        mov     [column_top], eax
4494
        mov     eax, [ebp + PanelData.height]
4502
        mov     eax, [ebp + PanelData.height]
4495
        sub     eax, 4
4503
        sub     eax, 4
4496
        mov     [column_height], eax
4504
        mov     [column_height], eax
4497
        dec     eax
4505
        dec     eax
4498
        mov     [ebp + PanelData.colsz], eax
4506
        mov     [ebp + PanelData.colsz], eax
4499
        and     [ebp + PanelData.colst], 0
4507
        and     [ebp + PanelData.colst], 0
4500
        mov     eax, [ebp + PanelData.start]
4508
        mov     eax, [ebp + PanelData.start]
4501
        mov     [column_index], eax
4509
        mov     [column_index], eax
4502
        mov     [last_column_index], eax
4510
        mov     [last_column_index], eax
4503
.columns_loop:
4511
.columns_loop:
4504
        push    ecx
4512
        push    ecx
4505
        mov     eax, [ebx]
4513
        mov     eax, [ebx]
4506
        add     ebx, 4
4514
        add     ebx, 4
4507
        mov     [column_width], eax
4515
        mov     [column_width], eax
4508
        cmp     ecx, 1
4516
        cmp     ecx, 1
4509
        jz      .skip_right_border
4517
        jz      .skip_right_border
4510
        add     eax, [column_left]
4518
        add     eax, [column_left]
4511
        mov     edx, [ebp + PanelData.top]
4519
        mov     edx, [ebp + PanelData.top]
4512
        call    get_console_ptr
4520
        call    get_console_ptr
4513
        mov     ah, [panel_header_color]
4521
        mov     ah, [panel_header_color]
4514
        mov     al, 0xD1
4522
        mov     al, 0xD1
4515
        mov     [edi], ax
4523
        mov     [edi], ax
4516
        add     edi, [cur_width]
4524
        add     edi, [cur_width]
4517
        add     edi, [cur_width]
4525
        add     edi, [cur_width]
4518
        mov     ecx, [column_height]
4526
        mov     ecx, [column_height]
4519
        mov     al, 0xB3
4527
        mov     al, 0xB3
4520
@@:
4528
@@:
4521
        mov     [edi], ax
4529
        mov     [edi], ax
4522
        add     edi, [cur_width]
4530
        add     edi, [cur_width]
4523
        add     edi, [cur_width]
4531
        add     edi, [cur_width]
4524
        loop    @b
4532
        loop    @b
4525
        mov     al, 0xC1
4533
        mov     al, 0xC1
4526
        stosw
4534
        stosw
4527
.skip_right_border:
4535
.skip_right_border:
4528
        mov     eax, [column_left]
4536
        mov     eax, [column_left]
4529
        mov     edx, [column_top]
4537
        mov     edx, [column_top]
4530
        call    get_console_ptr
4538
        call    get_console_ptr
4531
; § £®«®¢®ª á⮫¡æ 
4539
; § £®«®¢®ª á⮫¡æ 
4532
        push    edi
4540
        push    edi
4533
        mov     edx, [esi]
4541
        mov     edx, [esi]
4534
        and     edx, 0xF
4542
        and     edx, 0xF
4535
        mov     edx, [column_headers+edx*4]
4543
        mov     edx, [column_headers+edx*4]
4536
        movzx   ecx, byte [edx]
4544
        movzx   ecx, byte [edx]
4537
        inc     edx
4545
        inc     edx
4538
        cmp     ecx, [column_width]
4546
        cmp     ecx, [column_width]
4539
        jb      @f
4547
        jb      @f
4540
        mov     ecx, [column_width]
4548
        mov     ecx, [column_width]
4541
@@:
4549
@@:
4542
        push    ecx
4550
        push    ecx
4543
        sub     ecx, [column_width]
4551
        sub     ecx, [column_width]
4544
        neg     ecx
4552
        neg     ecx
4545
        shr     ecx, 1
4553
        shr     ecx, 1
4546
        mov     al, ' '
4554
        mov     al, ' '
4547
        mov     ah, [column_header_color]
4555
        mov     ah, [column_header_color]
4548
        rep     stosw
4556
        rep     stosw
4549
        pop     ecx
4557
        pop     ecx
4550
        jecxz   .skipcopyhdr
4558
        jecxz   .skipcopyhdr
4551
        push    ecx
4559
        push    ecx
4552
@@:
4560
@@:
4553
        mov     al, [edx]
4561
        mov     al, [edx]
4554
        inc     edx
4562
        inc     edx
4555
        stosw
4563
        stosw
4556
        loop    @b
4564
        loop    @b
4557
        pop     ecx
4565
        pop     ecx
4558
.skipcopyhdr:
4566
.skipcopyhdr:
4559
        sub     ecx, [column_width]
4567
        sub     ecx, [column_width]
4560
        neg     ecx
4568
        neg     ecx
4561
        inc     ecx
4569
        inc     ecx
4562
        shr     ecx, 1
4570
        shr     ecx, 1
4563
        mov     al, ' '
4571
        mov     al, ' '
4564
        rep     stosw
4572
        rep     stosw
4565
        pop     edi
4573
        pop     edi
4566
        add     edi, [cur_width]
4574
        add     edi, [cur_width]
4567
        add     edi, [cur_width]
4575
        add     edi, [cur_width]
4568
; á ¬ á⮫¡¥æ
4576
; á ¬ á⮫¡¥æ
4569
        mov     eax, [esi]
4577
        mov     eax, [esi]
4570
        and     eax, 0xF
4578
        and     eax, 0xF
4571
        push    ebx esi
4579
        push    ebx esi
4572
        call    dword [draw_column_proc+eax*4]
4580
        call    dword [draw_column_proc+eax*4]
4573
        pop     esi ebx
4581
        pop     esi ebx
4574
        inc     esi
4582
        inc     esi
4575
        mov     eax, [column_width]
4583
        mov     eax, [column_width]
4576
        inc     eax
4584
        inc     eax
4577
        add     [column_left], eax
4585
        add     [column_left], eax
4578
        pop     ecx
4586
        pop     ecx
4579
        dec     ecx
4587
        dec     ecx
4580
        jnz     .columns_loop
4588
        jnz     .columns_loop
4581
; ‡ £®«®¢®ª ¯ ­¥«¨ (⥪ãé ï ¯ ¯ª )
4589
; ‡ £®«®¢®ª ¯ ­¥«¨ (⥪ãé ï ¯ ¯ª )
4582
        lea     esi, [ebp + PanelData.dir]
4590
        lea     esi, [ebp + PanelData.dir]
4583
        mov     eax, [ebp + PanelData.hPlugin]
4591
        mov     eax, [ebp + PanelData.hPlugin]
4584
        test    eax, eax
4592
        test    eax, eax
4585
        jz      .native
4593
        jz      .native
4586
        push    ebp
4594
        push    ebp
4587
        push    esi
4595
        push    esi
4588
        mov     esi, [ebp + PanelData.parents]
4596
        mov     esi, [ebp + PanelData.parents]
4589
        add     esi, [ebp + PanelData.parents_sz]
4597
        add     esi, [ebp + PanelData.parents_sz]
4590
@@:
4598
@@:
4591
        dec     esi
4599
        dec     esi
4592
        cmp     byte [esi-1], 0
4600
        cmp     byte [esi-1], 0
4593
        jnz     @b
4601
        jnz     @b
4594
        push    esi
4602
        push    esi
4595
        push    execdata
4603
        push    execdata
4596
        push    [ebp + PanelData.hFile]
4604
        push    [ebp + PanelData.hFile]
4597
        call    [eax+PluginInfo.GetPanelTitle]
4605
        call    [eax+PluginInfo.GetPanelTitle]
4598
        pop     ebp
4606
        pop     ebp
4599
        mov     esi, execdata
4607
        mov     esi, execdata
4600
.native:
4608
.native:
4601
        mov     edi, cur_header
4609
        mov     edi, cur_header
4602
        mov     ecx, [ebp + PanelData.width]
4610
        mov     ecx, [ebp + PanelData.width]
4603
        sub     ecx, 6
4611
        sub     ecx, 6
4604
        cmp     byte [esi], '/'
4612
        cmp     byte [esi], '/'
4605
        jnz     .copy_rest
4613
        jnz     .copy_rest
4606
        dec     ecx
4614
        dec     ecx
4607
        movsb
4615
        movsb
4608
@@:
4616
@@:
4609
        lodsb
4617
        lodsb
4610
        stosb
4618
        stosb
4611
        dec     ecx
4619
        dec     ecx
4612
        test    al, al
4620
        test    al, al
4613
        jz      .header_created
4621
        jz      .header_created
4614
        cmp     al, '/'
4622
        cmp     al, '/'
4615
        jnz     @b
4623
        jnz     @b
4616
.copy_rest:
4624
.copy_rest:
4617
        mov     edx, esi
4625
        mov     edx, esi
4618
@@:
4626
@@:
4619
        lodsb
4627
        lodsb
4620
        test    al, al
4628
        test    al, al
4621
        jnz     @b
4629
        jnz     @b
4622
        sub     esi, edx
4630
        sub     esi, edx
4623
        dec     esi
4631
        dec     esi
4624
        cmp     esi, ecx
4632
        cmp     esi, ecx
4625
        jbe     @f
4633
        jbe     @f
4626
        mov     word [edi], '..'
4634
        mov     word [edi], '..'
4627
        mov     byte [edi+2], '.'
4635
        mov     byte [edi+2], '.'
4628
        add     edi, 3
4636
        add     edi, 3
4629
        sub     ecx, 3
4637
        sub     ecx, 3
4630
        add     edx, esi
4638
        add     edx, esi
4631
        sub     edx, ecx
4639
        sub     edx, ecx
4632
@@:
4640
@@:
4633
        mov     esi, edx
4641
        mov     esi, edx
4634
@@:
4642
@@:
4635
        lodsb
4643
        lodsb
4636
        stosb
4644
        stosb
4637
        dec     ecx
4645
        dec     ecx
4638
        test    al, al
4646
        test    al, al
4639
        jnz     @b
4647
        jnz     @b
4640
.header_created:
4648
.header_created:
4641
        mov     edx, [ebp + PanelData.top]
4649
        mov     edx, [ebp + PanelData.top]
4642
        mov     eax, [ebp + PanelData.left]
4650
        mov     eax, [ebp + PanelData.left]
4643
        shr     ecx, 1
4651
        shr     ecx, 1
4644
        lea     eax, [eax+ecx+3]
4652
        lea     eax, [eax+ecx+3]
4645
        call    get_console_ptr
4653
        call    get_console_ptr
4646
        mov     ah, [panel_active_header_color]
4654
        mov     ah, [panel_active_header_color]
4647
        cmp     ebp, [active_panel]
4655
        cmp     ebp, [active_panel]
4648
        jz      @f
4656
        jz      @f
4649
        mov     ah, [panel_header_color]
4657
        mov     ah, [panel_header_color]
4650
@@:
4658
@@:
4651
        mov     al, ' '
4659
        mov     al, ' '
4652
        stosw
4660
        stosw
4653
        mov     esi, cur_header
4661
        mov     esi, cur_header
4654
@@:
4662
@@:
4655
        lodsb
4663
        lodsb
4656
        test    al, al
4664
        test    al, al
4657
        jz      @f
4665
        jz      @f
4658
        stosw
4666
        stosw
4659
        jmp     @b
4667
        jmp     @b
4660
@@:
4668
@@:
4661
        mov     al, ' '
4669
        mov     al, ' '
4662
        stosw
4670
        stosw
4663
        mov     edx, [ebp + PanelData.top]
4671
        mov     edx, [ebp + PanelData.top]
4664
        inc     edx
4672
        inc     edx
4665
        mov     eax, [ebp + PanelData.left]
4673
        mov     eax, [ebp + PanelData.left]
4666
        inc     eax
4674
        inc     eax
4667
        call    get_console_ptr
4675
        call    get_console_ptr
4668
        movzx   eax, [ebp + PanelData.sortmode]
4676
        movzx   eax, [ebp + PanelData.sortmode]
4669
        mov     al, [compare_names+eax]
4677
        mov     al, [compare_names+eax]
4670
        stosb
4678
        stosb
4671
        mov     eax, [ebp + PanelData.selected_num]
4679
        mov     eax, [ebp + PanelData.selected_num]
4672
        test    eax, eax
4680
        test    eax, eax
4673
        jz      .skip_selected_info
4681
        jz      .skip_selected_info
4674
; ˆ­ä®à¬ æ¨ï ® ¢ë¤¥«¥­­ëå ä ©« å
4682
; ˆ­ä®à¬ æ¨ï ® ¢ë¤¥«¥­­ëå ä ©« å
4675
        push    dword [ebp + PanelData.selected_size+4]
4683
        push    dword [ebp + PanelData.selected_size+4]
4676
        push    dword [ebp + PanelData.selected_size]
4684
        push    dword [ebp + PanelData.selected_size]
4677
        call    fill_total_info
4685
        call    fill_total_info
4678
        mov     eax, [ebp + PanelData.width]
4686
        mov     eax, [ebp + PanelData.width]
4679
        sub     eax, 2
4687
        sub     eax, 2
4680
        cmp     ecx, eax
4688
        cmp     ecx, eax
4681
        jbe     @f
4689
        jbe     @f
4682
        mov     ecx, eax
4690
        mov     ecx, eax
4683
        mov     edi, saved_file_name+512
4691
        mov     edi, saved_file_name+512
4684
        sub     edi, eax
4692
        sub     edi, eax
4685
        mov     byte [edi], '.'
4693
        mov     byte [edi], '.'
4686
        mov     word [edi+1], '..'
4694
        mov     word [edi+1], '..'
4687
@@:
4695
@@:
4688
        mov     esi, edi
4696
        mov     esi, edi
4689
        sub     eax, ecx
4697
        sub     eax, ecx
4690
        shr     eax, 1
4698
        shr     eax, 1
4691
        inc     eax
4699
        inc     eax
4692
        add     eax, [ebp + PanelData.left]
4700
        add     eax, [ebp + PanelData.left]
4693
        mov     edx, [ebp + PanelData.top]
4701
        mov     edx, [ebp + PanelData.top]
4694
        add     edx, [ebp + PanelData.height]
4702
        add     edx, [ebp + PanelData.height]
4695
        sub     edx, 3
4703
        sub     edx, 3
4696
        call    get_console_ptr
4704
        call    get_console_ptr
4697
        mov     ah, [panel_numselected_color]
4705
        mov     ah, [panel_numselected_color]
4698
@@:
4706
@@:
4699
        lodsb
4707
        lodsb
4700
        stosw
4708
        stosw
4701
        loop    @b
4709
        loop    @b
4702
.skip_selected_info:
4710
.skip_selected_info:
4703
; ˆ­ä®à¬ æ¨ï ®¡ ®¡é¥¬ ç¨á«¥ ¨ à §¬¥à¥ ä ©«®¢ ¯ ­¥«¨
4711
; ˆ­ä®à¬ æ¨ï ®¡ ®¡é¥¬ ç¨á«¥ ¨ à §¬¥à¥ ä ©«®¢ ¯ ­¥«¨
4704
        mov     eax, [ebp + PanelData.total_num]
4712
        mov     eax, [ebp + PanelData.total_num]
4705
        push    dword [ebp + PanelData.total_size+4]
4713
        push    dword [ebp + PanelData.total_size+4]
4706
        push    dword [ebp + PanelData.total_size]
4714
        push    dword [ebp + PanelData.total_size]
4707
        call    fill_total_info
4715
        call    fill_total_info
4708
        mov     eax, [ebp + PanelData.width]
4716
        mov     eax, [ebp + PanelData.width]
4709
        sub     eax, 2
4717
        sub     eax, 2
4710
        cmp     ecx, eax
4718
        cmp     ecx, eax
4711
        jbe     @f
4719
        jbe     @f
4712
        mov     ecx, eax
4720
        mov     ecx, eax
4713
        mov     byte [edi+ecx-3], '.'
4721
        mov     byte [edi+ecx-3], '.'
4714
        mov     word [edi+ecx-2], '..'
4722
        mov     word [edi+ecx-2], '..'
4715
@@:
4723
@@:
4716
        sub     eax, ecx
4724
        sub     eax, ecx
4717
        shr     eax, 1
4725
        shr     eax, 1
4718
        inc     eax
4726
        inc     eax
4719
        add     eax, [ebp + PanelData.left]
4727
        add     eax, [ebp + PanelData.left]
4720
        add     edx, [ebp + PanelData.top]
4728
        add     edx, [ebp + PanelData.top]
4721
        add     edx, [ebp + PanelData.height]
4729
        add     edx, [ebp + PanelData.height]
4722
        dec     edx
4730
        dec     edx
4723
        mov     esi, edi
4731
        mov     esi, edi
4724
        call    get_console_ptr
4732
        call    get_console_ptr
4725
        mov     ah, [panel_number_color]
4733
        mov     ah, [panel_number_color]
4726
@@:
4734
@@:
4727
        lodsb
4735
        lodsb
4728
        stosw
4736
        stosw
4729
        loop    @b
4737
        loop    @b
4730
        cmp     [ebp + PanelData.numfiles], 0
4738
        cmp     [ebp + PanelData.numfiles], 0
4731
        jz      .skip_curinfo
4739
        jz      .skip_curinfo
4732
; ˆ­ä®à¬ æ¨ï ® ⥪ã饬 ä ©«¥
4740
; ˆ­ä®à¬ æ¨ï ® ⥪ã饬 ä ©«¥
4733
        mov     ebx, [ebp + PanelData.index]
4741
        mov     ebx, [ebp + PanelData.index]
4734
        mov     eax, [ebp + PanelData.files]
4742
        mov     eax, [ebp + PanelData.files]
4735
        mov     ebx, [eax+ebx*4]
4743
        mov     ebx, [eax+ebx*4]
4736
        mov     eax, [ebp + PanelData.left]
4744
        mov     eax, [ebp + PanelData.left]
4737
        add     eax, [ebp + PanelData.width]
4745
        add     eax, [ebp + PanelData.width]
4738
        dec     eax
4746
        dec     eax
4739
        mov     edx, [ebp + PanelData.top]
4747
        mov     edx, [ebp + PanelData.top]
4740
        add     edx, [ebp + PanelData.height]
4748
        add     edx, [ebp + PanelData.height]
4741
        dec     edx
4749
        dec     edx
4742
        dec     edx
4750
        dec     edx
4743
        call    get_console_ptr
4751
        call    get_console_ptr
4744
        mov     ecx, [ebp + PanelData.width]
4752
        mov     ecx, [ebp + PanelData.width]
4745
        dec     ecx
4753
        dec     ecx
4746
        dec     ecx
4754
        dec     ecx
4747
        cmp     [ebp + PanelData.colmode], 3
4755
        cmp     [ebp + PanelData.colmode], 3
4748
        jz      .show_curname
4756
        jz      .show_curname
4749
; ‚à¥¬ï ¬®¤¨ä¨ª æ¨¨
4757
; ‚à¥¬ï ¬®¤¨ä¨ª æ¨¨
4750
        sub     edi, 5*2
4758
        sub     edi, 5*2
4751
        sub     ecx, 6
4759
        sub     ecx, 6
4752
        mov     al, [ebx+24+2]
4760
        mov     al, [ebx+24+2]
4753
        aam
4761
        aam
4754
        or      ax, 0x3030
4762
        or      ax, 0x3030
4755
        mov     [edi], ah
4763
        mov     [edi], ah
4756
        mov     [edi+2], al
4764
        mov     [edi+2], al
4757
        mov     [edi+4], byte ':'
4765
        mov     [edi+4], byte ':'
4758
        mov     al, [ebx+24+1]
4766
        mov     al, [ebx+24+1]
4759
        aam
4767
        aam
4760
        or      ax, 0x3030
4768
        or      ax, 0x3030
4761
        mov     [edi+6], ah
4769
        mov     [edi+6], ah
4762
        mov     [edi+8], al
4770
        mov     [edi+8], al
4763
        mov     al, [panel_normal_color]
4771
        mov     al, [panel_normal_color]
4764
        mov     [edi+1], al
4772
        mov     [edi+1], al
4765
        mov     [edi+3], al
4773
        mov     [edi+3], al
4766
        mov     [edi+5], al
4774
        mov     [edi+5], al
4767
        mov     [edi+7], al
4775
        mov     [edi+7], al
4768
        mov     [edi+9], al
4776
        mov     [edi+9], al
4769
        dec     edi
4777
        dec     edi
4770
        mov     [edi], al
4778
        mov     [edi], al
4771
        dec     edi
4779
        dec     edi
4772
        mov     byte [edi], ' '
4780
        mov     byte [edi], ' '
4773
; „ â  ¬®¤¨ä¨ª æ¨¨
4781
; „ â  ¬®¤¨ä¨ª æ¨¨
4774
        sub     edi, 8*2
4782
        sub     edi, 8*2
4775
        sub     ecx, 9
4783
        sub     ecx, 9
4776
        mov     al, [ebx+28+0]
4784
        mov     al, [ebx+28+0]
4777
        aam
4785
        aam
4778
        or      ax, 0x3030
4786
        or      ax, 0x3030
4779
        mov     [edi], ah
4787
        mov     [edi], ah
4780
        mov     [edi+2], al
4788
        mov     [edi+2], al
4781
        mov     [edi+4], byte '.'
4789
        mov     [edi+4], byte '.'
4782
        mov     al, [ebx+28+1]
4790
        mov     al, [ebx+28+1]
4783
        aam
4791
        aam
4784
        or      ax, 0x3030
4792
        or      ax, 0x3030
4785
        mov     [edi+6], ah
4793
        mov     [edi+6], ah
4786
        mov     [edi+8], al
4794
        mov     [edi+8], al
4787
        mov     [edi+10], byte '.'
4795
        mov     [edi+10], byte '.'
4788
        mov     ax, [ebx+28+2]
4796
        mov     ax, [ebx+28+2]
4789
        div     [_100]
4797
        div     [_100]
4790
        mov     al, ah
4798
        mov     al, ah
4791
        aam
4799
        aam
4792
        or      ax, 0x3030
4800
        or      ax, 0x3030
4793
        mov     [edi+12], ah
4801
        mov     [edi+12], ah
4794
        mov     [edi+14], al
4802
        mov     [edi+14], al
4795
        mov     al, [panel_normal_color]
4803
        mov     al, [panel_normal_color]
4796
        mov     [edi+1], al
4804
        mov     [edi+1], al
4797
        mov     [edi+3], al
4805
        mov     [edi+3], al
4798
        mov     [edi+5], al
4806
        mov     [edi+5], al
4799
        mov     [edi+7], al
4807
        mov     [edi+7], al
4800
        mov     [edi+9], al
4808
        mov     [edi+9], al
4801
        mov     [edi+11], al
4809
        mov     [edi+11], al
4802
        mov     [edi+13], al
4810
        mov     [edi+13], al
4803
        mov     [edi+15], al
4811
        mov     [edi+15], al
4804
        dec     edi
4812
        dec     edi
4805
        mov     [edi], al
4813
        mov     [edi], al
4806
        dec     edi
4814
        dec     edi
4807
        mov     [edi], byte ' '
4815
        mov     [edi], byte ' '
4808
;  §¬¥à
4816
;  §¬¥à
4809
        std
4817
        std
4810
        mov     ah, [panel_normal_color]
4818
        mov     ah, [panel_normal_color]
4811
        dec     edi
4819
        dec     edi
4812
        dec     edi
4820
        dec     edi
4813
        dec     ecx
4821
        dec     ecx
4814
        test    byte [ebx], 0x10
4822
        test    byte [ebx], 0x10
4815
        jz      .size_file
4823
        jz      .size_file
4816
        push    ecx
4824
        push    ecx
4817
        mov     esi, aFolder+aFolder.size-1
4825
        mov     esi, aFolder+aFolder.size-1
4818
        mov     ecx, aFolder.size
4826
        mov     ecx, aFolder.size
4819
        cmp     word [ebx+40], '..'
4827
        cmp     word [ebx+40], '..'
4820
        jnz     @f
4828
        jnz     @f
4821
        cmp     byte [ebx+42], 0
4829
        cmp     byte [ebx+42], 0
4822
        jnz     @f
4830
        jnz     @f
4823
        mov     esi, aUp+aUp.size-1
4831
        mov     esi, aUp+aUp.size-1
4824
        mov     cl, aUp.size
4832
        mov     cl, aUp.size
4825
@@:
4833
@@:
4826
        sub     [esp], ecx
4834
        sub     [esp], ecx
4827
@@:
4835
@@:
4828
        lodsb
4836
        lodsb
4829
        stosw
4837
        stosw
4830
        loop    @b
4838
        loop    @b
4831
        pop     ecx
4839
        pop     ecx
4832
        jmp     .size_done
4840
        jmp     .size_done
4833
.size_file:
4841
.size_file:
4834
        mov     edx, [ebx+36]
4842
        mov     edx, [ebx+36]
4835
        test    edx, edx
4843
        test    edx, edx
4836
        jz      .size_less_4g
4844
        jz      .size_less_4g
4837
        cmp     edx, 10*256
4845
        cmp     edx, 10*256
4838
        jae     .size_tera
4846
        jae     .size_tera
4839
; ¢ £¨£ ¡ ©â å
4847
; ¢ £¨£ ¡ ©â å
4840
        mov     al, 'G'
4848
        mov     al, 'G'
4841
        shl     edx, 2
4849
        shl     edx, 2
4842
        jmp     .size_letter
4850
        jmp     .size_letter
4843
.size_tera:
4851
.size_tera:
4844
; ¢ â¥à ¡ ©â å
4852
; ¢ â¥à ¡ ©â å
4845
        shr     edx, 8
4853
        shr     edx, 8
4846
        mov     al, 'T'
4854
        mov     al, 'T'
4847
        jmp     .size_letter
4855
        jmp     .size_letter
4848
.size_less_4g:
4856
.size_less_4g:
4849
        mov     edx, [ebx+32]
4857
        mov     edx, [ebx+32]
4850
        cmp     edx, 10*(1 shl 20)
4858
        cmp     edx, 10*(1 shl 20)
4851
        jae     .size_mega
4859
        jae     .size_mega
4852
        cmp     edx, 1 shl 20
4860
        cmp     edx, 1 shl 20
4853
        jb      .size_num
4861
        jb      .size_num
4854
        shr     edx, 10
4862
        shr     edx, 10
4855
        mov     al, 'K'
4863
        mov     al, 'K'
4856
        jmp     .size_letter
4864
        jmp     .size_letter
4857
.size_mega:
4865
.size_mega:
4858
        mov     al, 'M'
4866
        mov     al, 'M'
4859
        shr     edx, 20
4867
        shr     edx, 20
4860
.size_letter:
4868
.size_letter:
4861
        stosw
4869
        stosw
4862
        dec     ecx
4870
        dec     ecx
4863
        mov     al, ' '
4871
        mov     al, ' '
4864
        stosw
4872
        stosw
4865
        dec     ecx
4873
        dec     ecx
4866
.size_num:
4874
.size_num:
4867
        xchg    eax, edx
4875
        xchg    eax, edx
4868
        xor     edx, edx
4876
        xor     edx, edx
4869
        div     [_10d]
4877
        div     [_10d]
4870
        xchg    eax, edx
4878
        xchg    eax, edx
4871
        add     al, '0'
4879
        add     al, '0'
4872
        mov     ah, [panel_normal_color]
4880
        mov     ah, [panel_normal_color]
4873
        stosw
4881
        stosw
4874
        dec     ecx
4882
        dec     ecx
4875
        test    edx, edx
4883
        test    edx, edx
4876
        jnz     .size_num
4884
        jnz     .size_num
4877
.size_done:
4885
.size_done:
4878
        cld
4886
        cld
4879
.show_curname:
4887
.show_curname:
4880
; ˆ¬ï
4888
; ˆ¬ï
4881
        sub     edi, ecx
4889
        sub     edi, ecx
4882
        sub     edi, ecx
4890
        sub     edi, ecx
4883
        lea     esi, [ebx+40]
4891
        lea     esi, [ebx+40]
4884
@@:
4892
@@:
4885
        lodsb
4893
        lodsb
4886
        test    al, al
4894
        test    al, al
4887
        jnz     @b
4895
        jnz     @b
4888
        sub     esi, ebx
4896
        sub     esi, ebx
4889
        sub     esi, 41
4897
        sub     esi, 41
4890
        mov     ah, [panel_normal_color]
4898
        mov     ah, [panel_normal_color]
4891
        cmp     esi, ecx
4899
        cmp     esi, ecx
4892
        lea     edx, [ebx+40]
4900
        lea     edx, [ebx+40]
4893
        jbe     @f
4901
        jbe     @f
4894
        mov     al, '{'
4902
        mov     al, '{'
4895
        mov     [edi-2], ax
4903
        mov     [edi-2], ax
4896
        add     edx, esi
4904
        add     edx, esi
4897
        sub     edx, ecx
4905
        sub     edx, ecx
4898
@@:
4906
@@:
4899
        mov     esi, edx
4907
        mov     esi, edx
4900
@@:
4908
@@:
4901
        lodsb
4909
        lodsb
4902
        test    al, al
4910
        test    al, al
4903
        jz      @f
4911
        jz      @f
4904
        stosw
4912
        stosw
4905
        loop    @b
4913
        loop    @b
4906
@@:
4914
@@:
4907
        mov     al, ' '
4915
        mov     al, ' '
4908
        rep     stosw
4916
        rep     stosw
4909
.skip_curinfo:
4917
.skip_curinfo:
4910
        call    draw_image
4918
        call    draw_image
4911
        ret
4919
        ret
4912
 
4920
 
4913
fill_total_info:
4921
fill_total_info:
4914
        mov     edi, saved_file_name+511
4922
        mov     edi, saved_file_name+511
4915
        mov     byte [edi], ' '
4923
        mov     byte [edi], ' '
4916
if lang eq ru
4924
if lang eq ru
4917
        mov     byte [edi-1], '¥'
4925
        mov     byte [edi-1], '¥'
4918
        dec     edi
4926
        dec     edi
4919
        cmp     eax, 1
4927
        cmp     eax, 1
4920
        jz      @f
4928
        jz      @f
4921
        mov     word [edi-1], ' å'
4929
        mov     word [edi-1], ' å'
4922
        dec     edi
4930
        dec     edi
4923
@@:
4931
@@:
4924
        mov     dword [edi-4], 'ä ©«'
4932
        mov     dword [edi-4], 'ä ©«'
4925
        mov     byte [edi-5], ' '
4933
        mov     byte [edi-5], ' '
4926
        sub     edi, 5
4934
        sub     edi, 5
4927
else
4935
else
4928
        cmp     eax, 1
4936
        cmp     eax, 1
4929
        jz      @f
4937
        jz      @f
4930
        dec     edi
4938
        dec     edi
4931
        mov     byte [edi], 's'
4939
        mov     byte [edi], 's'
4932
@@:
4940
@@:
4933
        mov     dword [edi-4], 'file'
4941
        mov     dword [edi-4], 'file'
4934
        mov     byte [edi-5], ' '
4942
        mov     byte [edi-5], ' '
4935
        sub     edi, 5
4943
        sub     edi, 5
4936
end if
4944
end if
4937
        xor     edx, edx
4945
        xor     edx, edx
4938
        push    10
4946
        push    10
4939
        pop     ecx
4947
        pop     ecx
4940
@@:
4948
@@:
4941
        div     ecx
4949
        div     ecx
4942
        dec     edi
4950
        dec     edi
4943
        add     dl, '0'
4951
        add     dl, '0'
4944
        mov     [edi], dl
4952
        mov     [edi], dl
4945
        xor     edx, edx
4953
        xor     edx, edx
4946
        test    eax, eax
4954
        test    eax, eax
4947
        jnz     @b
4955
        jnz     @b
4948
if lang eq ru
4956
if lang eq ru
4949
        mov     dword [edi-4], 'â ¢ '
4957
        mov     dword [edi-4], 'â ¢ '
4950
        mov     dword [edi-8], ' ¡ ©'
4958
        mov     dword [edi-8], ' ¡ ©'
4951
        sub     edi, 8
4959
        sub     edi, 8
4952
else
4960
else
4953
        mov     dword [edi-4], ' in '
4961
        mov     dword [edi-4], ' in '
4954
        mov     dword [edi-8], 'ytes'
4962
        mov     dword [edi-8], 'ytes'
4955
        mov     word [edi-10], ' b'
4963
        mov     word [edi-10], ' b'
4956
        sub     edi, 10
4964
        sub     edi, 10
4957
end if
4965
end if
4958
        lea     esi, [edi-3]
4966
        lea     esi, [edi-3]
4959
        mov     edx, [esp+8]
4967
        mov     edx, [esp+8]
4960
        mov     eax, [esp+4]
4968
        mov     eax, [esp+4]
4961
.selsizel:
4969
.selsizel:
4962
        push    edx
4970
        push    edx
4963
        mov     ebx, edx
4971
        mov     ebx, edx
4964
        xor     edx, edx
4972
        xor     edx, edx
4965
        add     ebx, ebx
4973
        add     ebx, ebx
4966
        adc     edx, edx
4974
        adc     edx, edx
4967
        push    ebx
4975
        push    ebx
4968
        push    edx
4976
        push    edx
4969
        add     ebx, ebx
4977
        add     ebx, ebx
4970
        adc     edx, edx
4978
        adc     edx, edx
4971
        add     ebx, [esp+4]
4979
        add     ebx, [esp+4]
4972
        adc     edx, [esp]
4980
        adc     edx, [esp]
4973
        add     esp, 8
4981
        add     esp, 8
4974
        add     eax, ebx
4982
        add     eax, ebx
4975
        adc     edx, 0
4983
        adc     edx, 0
4976
        div     ecx
4984
        div     ecx
4977
        dec     edi
4985
        dec     edi
4978
        cmp     edi, esi
4986
        cmp     edi, esi
4979
        jae     @f
4987
        jae     @f
4980
        mov     byte [edi], ','
4988
        mov     byte [edi], ','
4981
        dec     edi
4989
        dec     edi
4982
        sub     esi, 4
4990
        sub     esi, 4
4983
@@:
4991
@@:
4984
        pop     ebx
4992
        pop     ebx
4985
        add     dl, '0'
4993
        add     dl, '0'
4986
        mov     byte [edi], dl
4994
        mov     byte [edi], dl
4987
        xchg    eax, ebx
4995
        xchg    eax, ebx
4988
        mul     [muldiv10]
4996
        mul     [muldiv10]
4989
        add     eax, ebx
4997
        add     eax, ebx
4990
        adc     edx, 0
4998
        adc     edx, 0
4991
        mov     ebx, eax
4999
        mov     ebx, eax
4992
        or      ebx, edx
5000
        or      ebx, edx
4993
        jnz     .selsizel
5001
        jnz     .selsizel
4994
        dec     edi
5002
        dec     edi
4995
        mov     byte [edi], ' '
5003
        mov     byte [edi], ' '
4996
        mov     ecx, saved_file_name+512
5004
        mov     ecx, saved_file_name+512
4997
        sub     ecx, edi
5005
        sub     ecx, edi
4998
        ret     8
5006
        ret     8
4999
 
5007
 
5000
align 4
5008
align 4
5001
get_file_color:
5009
get_file_color:
5002
        mov     ah, [esi + 6]
5010
        mov     ah, [esi + 6]
5003
        cmp     ebp, [active_panel]
5011
        cmp     ebp, [active_panel]
5004
        jnz     @f
5012
        jnz     @f
5005
        cmp     ecx, [ebp + PanelData.index]
5013
        cmp     ecx, [ebp + PanelData.index]
5006
        jnz     @f
5014
        jnz     @f
5007
        mov     ah, [esi + 7]
5015
        mov     ah, [esi + 7]
5008
@@:
5016
@@:
5009
        test    byte [esi + 303], 1
5017
        test    byte [esi + 303], 1
5010
        jnz     @f
5018
        jnz     @f
5011
        mov     ah, [esi + 4]
5019
        mov     ah, [esi + 4]
5012
        cmp     ebp, [active_panel]
5020
        cmp     ebp, [active_panel]
5013
        jnz     @f
5021
        jnz     @f
5014
        cmp     ecx, [ebp + PanelData.index]
5022
        cmp     ecx, [ebp + PanelData.index]
5015
        jnz     @f
5023
        jnz     @f
5016
        mov     ah, [esi + 5]
5024
        mov     ah, [esi + 5]
5017
@@:
5025
@@:
5018
        ret
5026
        ret
5019
 
5027
 
5020
align 4
5028
align 4
5021
draw_name_column:
5029
draw_name_column:
5022
        mov     eax, [column_index]
5030
        mov     eax, [column_index]
5023
        mov     [last_column_index], eax
5031
        mov     [last_column_index], eax
5024
        mov     edx, [ebp + PanelData.numfiles]
5032
        mov     edx, [ebp + PanelData.numfiles]
5025
        mov     ecx, [column_height]
5033
        mov     ecx, [column_height]
5026
        dec     ecx
5034
        dec     ecx
5027
.l:
5035
.l:
5028
        cmp     [column_index], edx
5036
        cmp     [column_index], edx
5029
        jae     .ret
5037
        jae     .ret
5030
        push    ecx
5038
        push    ecx
5031
        mov     ecx, [column_index]
5039
        mov     ecx, [column_index]
5032
        mov     esi, [ebp + PanelData.files]
5040
        mov     esi, [ebp + PanelData.files]
5033
        mov     esi, [esi+ecx*4]
5041
        mov     esi, [esi+ecx*4]
5034
        mov     ebx, [esi]
5042
        mov     ebx, [esi]
5035
        call    get_file_color
5043
        call    get_file_color
5036
        add     esi, 40
5044
        add     esi, 40
5037
        mov     ecx, [column_width]
5045
        mov     ecx, [column_width]
5038
        push    edi
5046
        push    edi
5039
@@:
5047
@@:
5040
        lodsb
5048
        lodsb
5041
        test    al, al
5049
        test    al, al
5042
        jz      @f
5050
        jz      @f
5043
        stosw
5051
        stosw
5044
        loop    @b
5052
        loop    @b
5045
        lodsb
5053
        lodsb
5046
        test    al, al
5054
        test    al, al
5047
        jz      @f
5055
        jz      @f
5048
        mov     byte [edi], '}'
5056
        mov     byte [edi], '}'
5049
        jmp     .continue
5057
        jmp     .continue
5050
@@:
5058
@@:
5051
        test    bl, 10h
5059
        test    bl, 10h
5052
        jnz     .noalignext
5060
        jnz     .noalignext
5053
        mov     ebx, [ebp + PanelData.colmode]
5061
        mov     ebx, [ebp + PanelData.colmode]
5054
; sizeof(PanelMode) = 40
5062
; sizeof(PanelMode) = 40
5055
        lea     ebx, [ebx+ebx*4]
5063
        lea     ebx, [ebx+ebx*4]
5056
        cmp     [colmodes+ebx*8+PanelMode.bAlignExtensions], 0
5064
        cmp     [colmodes+ebx*8+PanelMode.bAlignExtensions], 0
5057
        jz      .noalignext
5065
        jz      .noalignext
5058
        push    ecx
5066
        push    ecx
5059
        sub     ecx, [column_width]
5067
        sub     ecx, [column_width]
5060
        neg     ecx
5068
        neg     ecx
5061
        jz      .noalignext2
5069
        jz      .noalignext2
5062
        dec     esi
5070
        dec     esi
5063
@@:
5071
@@:
5064
        dec     esi
5072
        dec     esi
5065
        cmp     byte [esi], '.'
5073
        cmp     byte [esi], '.'
5066
        loopnz  @b
5074
        loopnz  @b
5067
        jnz     .noalignext2
5075
        jnz     .noalignext2
5068
        inc     esi
5076
        inc     esi
5069
        sub     ecx, [column_width]
5077
        sub     ecx, [column_width]
5070
        neg     ecx
5078
        neg     ecx
5071
        sub     ecx, [esp]
5079
        sub     ecx, [esp]
5072
        sub     edi, ecx
5080
        sub     edi, ecx
5073
        sub     edi, ecx
5081
        sub     edi, ecx
5074
        dec     ecx
5082
        dec     ecx
5075
        mov     ebx, [esp+4]
5083
        mov     ebx, [esp+4]
5076
        cmp     ecx, 3
5084
        cmp     ecx, 3
5077
        ja      @f
5085
        ja      @f
5078
        mov     cl, 3
5086
        mov     cl, 3
5079
@@:
5087
@@:
5080
        sub     ecx, [column_width]
5088
        sub     ecx, [column_width]
5081
        sub     ebx, edi
5089
        sub     ebx, edi
5082
        sar     ebx, 1
5090
        sar     ebx, 1
5083
        sub     ebx, ecx
5091
        sub     ebx, ecx
5084
        pop     ecx
5092
        pop     ecx
5085
        inc     ecx
5093
        inc     ecx
5086
        push    0
5094
        push    0
5087
        cmp     ecx, ebx
5095
        cmp     ecx, ebx
5088
        jbe     @f
5096
        jbe     @f
5089
        sub     ecx, ebx
5097
        sub     ecx, ebx
5090
        mov     [esp], ecx
5098
        mov     [esp], ecx
5091
        mov     ecx, ebx
5099
        mov     ecx, ebx
5092
@@:
5100
@@:
5093
        mov     al, ' '
5101
        mov     al, ' '
5094
        rep     stosw
5102
        rep     stosw
5095
@@:
5103
@@:
5096
        lodsb
5104
        lodsb
5097
        test    al, al
5105
        test    al, al
5098
        jz      .noalignext2
5106
        jz      .noalignext2
5099
        stosw
5107
        stosw
5100
        jmp     @b
5108
        jmp     @b
5101
.noalignext2:
5109
.noalignext2:
5102
        pop     ecx
5110
        pop     ecx
5103
.noalignext:
5111
.noalignext:
5104
        mov     al, ' '
5112
        mov     al, ' '
5105
        rep     stosw
5113
        rep     stosw
5106
.continue:
5114
.continue:
5107
        pop     edi
5115
        pop     edi
5108
        add     edi, [cur_width]
5116
        add     edi, [cur_width]
5109
        add     edi, [cur_width]
5117
        add     edi, [cur_width]
5110
        inc     [column_index]
5118
        inc     [column_index]
5111
        pop     ecx
5119
        pop     ecx
5112
        dec     ecx
5120
        dec     ecx
5113
        jnz     .l
5121
        jnz     .l
5114
.ret:
5122
.ret:
5115
        mov     eax, [ebp + PanelData.colsz]
5123
        mov     eax, [ebp + PanelData.colsz]
5116
        add     [ebp + PanelData.colst], eax
5124
        add     [ebp + PanelData.colst], eax
5117
        cmp     ebp, panel1
5125
        cmp     ebp, panel1
5118
        jnz     .ret2
5126
        jnz     .ret2
5119
; —¨á«® íªà ­®¢
5127
; —¨á«® íªà ­®¢
5120
; calculate number of viewer and editor screens
5128
; calculate number of viewer and editor screens
5121
        xor     ebx, ebx
5129
        xor     ebx, ebx
5122
        xor     edx, edx
5130
        xor     edx, edx
5123
        mov     ecx, [num_screens]
5131
        mov     ecx, [num_screens]
5124
        mov     esi, [screens]
5132
        mov     esi, [screens]
5125
.3:
5133
.3:
5126
        lodsd
5134
        lodsd
5127
        cmp     eax, viewer_vtable
5135
        cmp     eax, viewer_vtable
5128
        jnz     @f
5136
        jnz     @f
5129
        inc     ebx
5137
        inc     ebx
5130
@@:
5138
@@:
5131
        cmp     eax, editor_vtable
5139
        cmp     eax, editor_vtable
5132
        jnz     @f
5140
        jnz     @f
5133
        inc     edx
5141
        inc     edx
5134
@@:
5142
@@:
5135
        lodsd
5143
        lodsd
5136
        loop    .3
5144
        loop    .3
5137
        mov     eax, ebx
5145
        mov     eax, ebx
5138
        mov     esi, edx
5146
        mov     esi, edx
5139
        or      eax, edx
5147
        or      eax, edx
5140
        jz      .ret2
5148
        jz      .ret2
5141
        xor     eax, eax
5149
        xor     eax, eax
5142
        xor     edx, edx
5150
        xor     edx, edx
5143
        call    get_console_ptr
5151
        call    get_console_ptr
5144
        mov     al, '['
5152
        mov     al, '['
5145
        stosb
5153
        stosb
5146
        mov     al, [panel_nscreens_color]
5154
        mov     al, [panel_nscreens_color]
5147
        stosb
5155
        stosb
5148
        xchg    eax, ebx
5156
        xchg    eax, ebx
5149
.5:
5157
.5:
5150
        push    -'0'
5158
        push    -'0'
5151
@@:
5159
@@:
5152
        xor     edx, edx
5160
        xor     edx, edx
5153
        div     [_10d]
5161
        div     [_10d]
5154
        push    edx
5162
        push    edx
5155
        test    eax, eax
5163
        test    eax, eax
5156
        jnz     @b
5164
        jnz     @b
5157
@@:
5165
@@:
5158
        pop     eax
5166
        pop     eax
5159
        add     eax, '0'
5167
        add     eax, '0'
5160
        jz      @f
5168
        jz      @f
5161
        stosb
5169
        stosb
5162
        mov     al, bl
5170
        mov     al, bl
5163
        stosb
5171
        stosb
5164
        jmp     @b
5172
        jmp     @b
5165
@@:
5173
@@:
5166
        test    esi, esi
5174
        test    esi, esi
5167
        jz      .4
5175
        jz      .4
5168
        mov     al, '+'
5176
        mov     al, '+'
5169
        stosb
5177
        stosb
5170
        mov     al, bl
5178
        mov     al, bl
5171
        stosb
5179
        stosb
5172
        xor     eax, eax
5180
        xor     eax, eax
5173
        xchg    eax, esi
5181
        xchg    eax, esi
5174
        jmp     .5
5182
        jmp     .5
5175
.4:
5183
.4:
5176
        mov     al, ']'
5184
        mov     al, ']'
5177
        mov     ah, [panel_nscreens_color]
5185
        mov     ah, [panel_nscreens_color]
5178
        stosw
5186
        stosw
5179
.ret2:
5187
.ret2:
5180
draw_empty_column:
5188
draw_empty_column:
5181
        ret
5189
        ret
5182
 
5190
 
5183
align 4
5191
align 4
5184
draw_size_column:
5192
draw_size_column:
5185
        add     edi, [column_width]
5193
        add     edi, [column_width]
5186
        add     edi, [column_width]
5194
        add     edi, [column_width]
5187
        dec     edi
5195
        dec     edi
5188
        dec     edi
5196
        dec     edi
5189
        std
5197
        std
5190
        mov     ecx, [column_height]
5198
        mov     ecx, [column_height]
5191
        dec     ecx
5199
        dec     ecx
5192
        push    [last_column_index]
5200
        push    [last_column_index]
5193
.l:
5201
.l:
5194
        mov     edx, [ebp + PanelData.numfiles]
5202
        mov     edx, [ebp + PanelData.numfiles]
5195
        cmp     [last_column_index], edx
5203
        cmp     [last_column_index], edx
5196
        jae     .ret
5204
        jae     .ret
5197
        push    ecx
5205
        push    ecx
5198
        push    edi
5206
        push    edi
5199
        mov     ecx, [last_column_index]
5207
        mov     ecx, [last_column_index]
5200
        mov     esi, [ebp + PanelData.files]
5208
        mov     esi, [ebp + PanelData.files]
5201
        mov     esi, [esi+ecx*4]
5209
        mov     esi, [esi+ecx*4]
5202
        call    get_file_color
5210
        call    get_file_color
5203
        mov     ecx, [column_width]
5211
        mov     ecx, [column_width]
5204
@@:
5212
@@:
5205
        mov     ebx, eax
5213
        mov     ebx, eax
5206
        cmp     word [esi+40], '..'
5214
        cmp     word [esi+40], '..'
5207
        jnz     .nodotdot
5215
        jnz     .nodotdot
5208
        cmp     byte [esi+42], 0
5216
        cmp     byte [esi+42], 0
5209
        jnz     .nodotdot
5217
        jnz     .nodotdot
5210
if lang eq ru
5218
if lang eq ru
5211
        mov     al, 'å'
5219
        mov     al, 'å'
5212
        stosw
5220
        stosw
5213
        mov     al, 'à'
5221
        mov     al, 'à'
5214
        stosw
5222
        stosw
5215
        mov     al, '¥'
5223
        mov     al, '¥'
5216
        stosw
5224
        stosw
5217
        mov     al, '¢'
5225
        mov     al, '¢'
5218
        stosw
5226
        stosw
5219
        mov     al, '‚'
5227
        mov     al, '‚'
5220
        stosw
5228
        stosw
5221
        sub     ecx, 5
5229
        sub     ecx, 5
5222
else
5230
else
5223
        mov     al, ' '
5231
        mov     al, ' '
5224
        stosw
5232
        stosw
5225
        stosw
5233
        stosw
5226
        mov     al, 'p'
5234
        mov     al, 'p'
5227
        stosw
5235
        stosw
5228
        mov     al, 'U'
5236
        mov     al, 'U'
5229
        stosw
5237
        stosw
5230
        sub     ecx, 4
5238
        sub     ecx, 4
5231
end if
5239
end if
5232
        jmp     .size_written
5240
        jmp     .size_written
5233
.nodotdot:
5241
.nodotdot:
5234
        test    byte [esi], 10h
5242
        test    byte [esi], 10h
5235
        jz      .nofolder
5243
        jz      .nofolder
5236
if lang eq ru
5244
if lang eq ru
5237
        mov     al, ' '
5245
        mov     al, ' '
5238
        stosw
5246
        stosw
5239
        mov     al, 'ª'
5247
        mov     al, 'ª'
5240
        stosw
5248
        stosw
5241
        mov     al, '¯'
5249
        mov     al, '¯'
5242
        stosw
5250
        stosw
5243
        mov     al, ' '
5251
        mov     al, ' '
5244
        stosw
5252
        stosw
5245
        mov     al, ''
5253
        mov     al, ''
5246
        stosw
5254
        stosw
5247
        sub     ecx, 5
5255
        sub     ecx, 5
5248
else
5256
else
5249
        mov     al, 'r'
5257
        mov     al, 'r'
5250
        stosw
5258
        stosw
5251
        mov     al, 'e'
5259
        mov     al, 'e'
5252
        stosw
5260
        stosw
5253
        mov     al, 'd'
5261
        mov     al, 'd'
5254
        stosw
5262
        stosw
5255
        mov     al, 'l'
5263
        mov     al, 'l'
5256
        stosw
5264
        stosw
5257
        mov     al, 'o'
5265
        mov     al, 'o'
5258
        stosw
5266
        stosw
5259
        mov     al, 'F'
5267
        mov     al, 'F'
5260
        stosw
5268
        stosw
5261
        sub     ecx, 6
5269
        sub     ecx, 6
5262
end if
5270
end if
5263
        jmp     .size_written
5271
        jmp     .size_written
5264
.nofolder:
5272
.nofolder:
5265
        mov     eax, [esi+32]
5273
        mov     eax, [esi+32]
5266
        mov     edx, [esi+36]
5274
        mov     edx, [esi+36]
5267
        test    edx, edx
5275
        test    edx, edx
5268
        jz      .less_4G
5276
        jz      .less_4G
5269
        cmp     edx, 10000/4*1024
5277
        cmp     edx, 10000/4*1024
5270
        jb      .giga
5278
        jb      .giga
5271
        mov     al, 'T'
5279
        mov     al, 'T'
5272
        shr     edx, 10
5280
        shr     edx, 10
5273
        jmp     .write_letter
5281
        jmp     .write_letter
5274
.giga:
5282
.giga:
5275
        mov     al, 'G'
5283
        mov     al, 'G'
5276
        shl     edx, 2
5284
        shl     edx, 2
5277
        jmp     .write_letter
5285
        jmp     .write_letter
5278
.less_4G:
5286
.less_4G:
5279
        mov     edx, eax
5287
        mov     edx, eax
5280
        cmp     eax, 1000000
5288
        cmp     eax, 1000000
5281
        jb      .byte
5289
        jb      .byte
5282
        cmp     eax, 10000*1024
5290
        cmp     eax, 10000*1024
5283
        jb      .kilo
5291
        jb      .kilo
5284
        mov     al, 'M'
5292
        mov     al, 'M'
5285
        shr     edx, 20
5293
        shr     edx, 20
5286
        jmp     .write_letter
5294
        jmp     .write_letter
5287
.kilo:
5295
.kilo:
5288
        mov     al, 'K'
5296
        mov     al, 'K'
5289
        shr     edx, 10
5297
        shr     edx, 10
5290
.write_letter:
5298
.write_letter:
5291
        mov     ah, bh
5299
        mov     ah, bh
5292
        stosw
5300
        stosw
5293
        mov     al, ' '
5301
        mov     al, ' '
5294
        stosw
5302
        stosw
5295
        dec     ecx
5303
        dec     ecx
5296
        dec     ecx
5304
        dec     ecx
5297
.byte:
5305
.byte:
5298
        xchg    eax, edx
5306
        xchg    eax, edx
5299
        xor     edx, edx
5307
        xor     edx, edx
5300
        div     [_10d]
5308
        div     [_10d]
5301
        xchg    eax, edx
5309
        xchg    eax, edx
5302
        add     al, '0'
5310
        add     al, '0'
5303
        mov     ah, bh
5311
        mov     ah, bh
5304
        stosw
5312
        stosw
5305
        dec     ecx
5313
        dec     ecx
5306
        test    edx, edx
5314
        test    edx, edx
5307
        jnz     .byte
5315
        jnz     .byte
5308
.size_written:
5316
.size_written:
5309
        mov     eax, ebx
5317
        mov     eax, ebx
5310
        test    ecx, ecx
5318
        test    ecx, ecx
5311
        jle     @f
5319
        jle     @f
5312
        mov     al, ' '
5320
        mov     al, ' '
5313
        rep     stosw
5321
        rep     stosw
5314
@@:
5322
@@:
5315
        mov     byte [edi+1], ah
5323
        mov     byte [edi+1], ah
5316
        pop     edi
5324
        pop     edi
5317
        add     edi, [cur_width]
5325
        add     edi, [cur_width]
5318
        add     edi, [cur_width]
5326
        add     edi, [cur_width]
5319
        inc     [last_column_index]
5327
        inc     [last_column_index]
5320
        pop     ecx
5328
        pop     ecx
5321
        dec     ecx
5329
        dec     ecx
5322
        jnz     .l
5330
        jnz     .l
5323
.ret:
5331
.ret:
5324
        pop     [last_column_index]
5332
        pop     [last_column_index]
5325
        cld
5333
        cld
5326
        ret
5334
        ret
5327
 
5335
 
5328
align 4
5336
align 4
5329
draw_date_column:
5337
draw_date_column:
5330
        mov     ecx, [column_height]
5338
        mov     ecx, [column_height]
5331
        dec     ecx
5339
        dec     ecx
5332
        push    [last_column_index]
5340
        push    [last_column_index]
5333
.l:
5341
.l:
5334
        mov     edx, [ebp + PanelData.numfiles]
5342
        mov     edx, [ebp + PanelData.numfiles]
5335
        cmp     [last_column_index], edx
5343
        cmp     [last_column_index], edx
5336
        jae     .ret
5344
        jae     .ret
5337
        push    ecx
5345
        push    ecx
5338
        push    edi
5346
        push    edi
5339
        mov     ecx, [last_column_index]
5347
        mov     ecx, [last_column_index]
5340
        mov     esi, [ebp + PanelData.files]
5348
        mov     esi, [ebp + PanelData.files]
5341
        mov     esi, [esi+ecx*4]
5349
        mov     esi, [esi+ecx*4]
5342
        call    get_file_color
5350
        call    get_file_color
5343
        mov     bh, ah
5351
        mov     bh, ah
5344
        mov     byte [edi-1], bh
5352
        mov     byte [edi-1], bh
5345
        mov     al, [esi+28]
5353
        mov     al, [esi+28]
5346
        aam
5354
        aam
5347
        add     eax, '00'
5355
        add     eax, '00'
5348
        push    eax
5356
        push    eax
5349
        mov     al, ah
5357
        mov     al, ah
5350
        mov     ah, bh
5358
        mov     ah, bh
5351
        stosw
5359
        stosw
5352
        pop     eax
5360
        pop     eax
5353
        mov     ah, bh
5361
        mov     ah, bh
5354
        stosw
5362
        stosw
5355
        mov     al, '.'
5363
        mov     al, '.'
5356
        stosw
5364
        stosw
5357
        mov     al, [esi+29]
5365
        mov     al, [esi+29]
5358
        aam
5366
        aam
5359
        add     eax, '00'
5367
        add     eax, '00'
5360
        push    eax
5368
        push    eax
5361
        mov     al, ah
5369
        mov     al, ah
5362
        mov     ah, bh
5370
        mov     ah, bh
5363
        stosw
5371
        stosw
5364
        pop     eax
5372
        pop     eax
5365
        mov     ah, bh
5373
        mov     ah, bh
5366
        stosw
5374
        stosw
5367
        mov     al, '.'
5375
        mov     al, '.'
5368
        stosw
5376
        stosw
5369
        movzx   eax, word [esi+30]
5377
        movzx   eax, word [esi+30]
5370
        xor     edx, edx
5378
        xor     edx, edx
5371
        div     [_10d]
5379
        div     [_10d]
5372
        xchg    eax, edx
5380
        xchg    eax, edx
5373
        add     al, '0'
5381
        add     al, '0'
5374
        mov     ah, bh
5382
        mov     ah, bh
5375
        mov     [edi+2], ax
5383
        mov     [edi+2], ax
5376
        xchg    eax, edx
5384
        xchg    eax, edx
5377
        xor     edx, edx
5385
        xor     edx, edx
5378
        div     [_10d]
5386
        div     [_10d]
5379
        xchg    eax, edx
5387
        xchg    eax, edx
5380
        add     al, '0'
5388
        add     al, '0'
5381
        mov     ah, bh
5389
        mov     ah, bh
5382
        stosw
5390
        stosw
5383
        pop     edi
5391
        pop     edi
5384
        add     edi, [cur_width]
5392
        add     edi, [cur_width]
5385
        add     edi, [cur_width]
5393
        add     edi, [cur_width]
5386
        inc     [last_column_index]
5394
        inc     [last_column_index]
5387
        pop     ecx
5395
        pop     ecx
5388
        dec     ecx
5396
        dec     ecx
5389
        jnz     .l
5397
        jnz     .l
5390
.ret:
5398
.ret:
5391
        pop     [last_column_index]
5399
        pop     [last_column_index]
5392
        cld
5400
        cld
5393
        ret
5401
        ret
5394
 
5402
 
5395
align 4
5403
align 4
5396
draw_time_column:
5404
draw_time_column:
5397
        mov     ecx, [column_height]
5405
        mov     ecx, [column_height]
5398
        dec     ecx
5406
        dec     ecx
5399
        push    [last_column_index]
5407
        push    [last_column_index]
5400
.l:
5408
.l:
5401
        mov     edx, [ebp + PanelData.numfiles]
5409
        mov     edx, [ebp + PanelData.numfiles]
5402
        cmp     [last_column_index], edx
5410
        cmp     [last_column_index], edx
5403
        jae     .ret
5411
        jae     .ret
5404
        push    ecx
5412
        push    ecx
5405
        push    edi
5413
        push    edi
5406
        mov     ecx, [last_column_index]
5414
        mov     ecx, [last_column_index]
5407
        mov     esi, [ebp + PanelData.files]
5415
        mov     esi, [ebp + PanelData.files]
5408
        mov     esi, [esi+ecx*4]
5416
        mov     esi, [esi+ecx*4]
5409
        call    get_file_color
5417
        call    get_file_color
5410
        mov     bh, ah
5418
        mov     bh, ah
5411
        mov     byte [edi-1], bh
5419
        mov     byte [edi-1], bh
5412
        mov     al, [esi+26]
5420
        mov     al, [esi+26]
5413
        aam
5421
        aam
5414
        add     eax, '00'
5422
        add     eax, '00'
5415
        push    eax
5423
        push    eax
5416
        mov     al, ah
5424
        mov     al, ah
5417
        mov     ah, bh
5425
        mov     ah, bh
5418
        stosw
5426
        stosw
5419
        pop     eax
5427
        pop     eax
5420
        mov     ah, bh
5428
        mov     ah, bh
5421
        stosw
5429
        stosw
5422
        mov     al, ':'
5430
        mov     al, ':'
5423
        stosw
5431
        stosw
5424
        mov     al, [esi+25]
5432
        mov     al, [esi+25]
5425
        aam
5433
        aam
5426
        add     eax, '00'
5434
        add     eax, '00'
5427
        push    eax
5435
        push    eax
5428
        mov     al, ah
5436
        mov     al, ah
5429
        mov     ah, bh
5437
        mov     ah, bh
5430
        stosw
5438
        stosw
5431
        pop     eax
5439
        pop     eax
5432
        mov     ah, bh
5440
        mov     ah, bh
5433
        stosw
5441
        stosw
5434
        pop     edi
5442
        pop     edi
5435
        add     edi, [cur_width]
5443
        add     edi, [cur_width]
5436
        add     edi, [cur_width]
5444
        add     edi, [cur_width]
5437
        inc     [last_column_index]
5445
        inc     [last_column_index]
5438
        pop     ecx
5446
        pop     ecx
5439
        dec     ecx
5447
        dec     ecx
5440
        jnz     .l
5448
        jnz     .l
5441
.ret:
5449
.ret:
5442
        pop     [last_column_index]
5450
        pop     [last_column_index]
5443
        cld
5451
        cld
5444
        ret
5452
        ret
5445
 
5453
 
5446
;insert_last_dot:
5454
;insert_last_dot:
5447
;        push    eax esi
5455
;        push    eax esi
5448
;        mov     ah, 0
5456
;        mov     ah, 0
5449
;.loop:
5457
;.loop:
5450
;        lodsb
5458
;        lodsb
5451
;        test    al, al
5459
;        test    al, al
5452
;        jz      .done
5460
;        jz      .done
5453
;        cmp     al, '.'
5461
;        cmp     al, '.'
5454
;        jnz     .loop
5462
;        jnz     .loop
5455
;        mov     ah, 1
5463
;        mov     ah, 1
5456
;        jmp     .loop
5464
;        jmp     .loop
5457
;.done:
5465
;.done:
5458
;        test    ah, ah
5466
;        test    ah, ah
5459
;        jnz     @f
5467
;        jnz     @f
5460
;        mov     byte [esi-1], '.'
5468
;        mov     byte [esi-1], '.'
5461
;        mov     byte [esi], 0
5469
;        mov     byte [esi], 0
5462
;@@:
5470
;@@:
5463
;        pop     esi eax
5471
;        pop     esi eax
5464
;        ret
5472
;        ret
5465
 
5473
 
5466
;delete_last_dot:
5474
;delete_last_dot:
5467
;        push    esi
5475
;        push    esi
5468
;@@:
5476
;@@:
5469
;        cmp     byte [esi], 0
5477
;        cmp     byte [esi], 0
5470
;        jz      @f
5478
;        jz      @f
5471
;        inc     esi
5479
;        inc     esi
5472
;        jmp     @b
5480
;        jmp     @b
5473
;@@:
5481
;@@:
5474
;        cmp     byte [esi-1], '.'
5482
;        cmp     byte [esi-1], '.'
5475
;        jnz     @f
5483
;        jnz     @f
5476
;        mov     byte [esi-1], 0
5484
;        mov     byte [esi-1], 0
5477
;@@:     pop     esi
5485
;@@:     pop     esi
5478
;        ret
5486
;        ret
5479
 
5487
 
5480
align 4
5488
align 4
5481
read_folder:
5489
read_folder:
5482
        mov     eax, [ebp + PanelData.nfa]
5490
        mov     eax, [ebp + PanelData.nfa]
5483
        mov     [dirinfo.size], eax
5491
        mov     [dirinfo.size], eax
5484
        shl     eax, 2
5492
        shl     eax, 2
5485
        add     eax, [ebp + PanelData.files]
5493
        add     eax, [ebp + PanelData.files]
5486
        mov     [dirinfo.dirdata], eax
5494
        mov     [dirinfo.dirdata], eax
5487
        lea     eax, [ebp + PanelData.dir]
5495
        lea     eax, [ebp + PanelData.dir]
5488
        mov     [dirinfo.name], eax
5496
        mov     [dirinfo.name], eax
5489
        xor     eax, eax
5497
        xor     eax, eax
5490
        mov     [ebp + PanelData.total_num], eax
5498
        mov     [ebp + PanelData.total_num], eax
5491
        mov     dword [ebp + PanelData.total_size], eax
5499
        mov     dword [ebp + PanelData.total_size], eax
5492
        mov     dword [ebp + PanelData.total_size+4], eax
5500
        mov     dword [ebp + PanelData.total_size+4], eax
5493
        mov     [ebp + PanelData.selected_num], eax
5501
        mov     [ebp + PanelData.selected_num], eax
5494
        mov     dword [ebp + PanelData.selected_size], eax
5502
        mov     dword [ebp + PanelData.selected_size], eax
5495
        mov     dword [ebp + PanelData.selected_size+4], eax
5503
        mov     dword [ebp + PanelData.selected_size+4], eax
5496
.retry:
5504
.retry:
5497
        mov     eax, [ebp + PanelData.hPlugin]
5505
        mov     eax, [ebp + PanelData.hPlugin]
5498
        test    eax, eax
5506
        test    eax, eax
5499
        jz      .native
5507
        jz      .native
5500
        mov     ecx, [dirinfo.size]
5508
        mov     ecx, [dirinfo.size]
5501
        test    [ebp + PanelData.plugin_flags], 1
5509
        test    [ebp + PanelData.plugin_flags], 1
5502
        jz      @f
5510
        jz      @f
5503
        dec     ecx     ; reserve one entry for '..'
5511
        dec     ecx     ; reserve one entry for '..'
5504
@@:
5512
@@:
5505
        push    ebp
5513
        push    ebp
5506
        push    [dirinfo.dirdata]
5514
        push    [dirinfo.dirdata]
5507
        push    ecx
5515
        push    ecx
5508
        push    0
5516
        push    0
5509
        push    [ebp + PanelData.hFile]
5517
        push    [ebp + PanelData.hFile]
5510
        call    [eax + PluginInfo.ReadFolder]
5518
        call    [eax + PluginInfo.ReadFolder]
5511
        pop     ebp
5519
        pop     ebp
5512
        mov     ebx, [dirinfo.dirdata]
5520
        mov     ebx, [dirinfo.dirdata]
5513
        mov     ebx, [ebx+4]
5521
        mov     ebx, [ebx+4]
5514
        jmp     .read
5522
        jmp     .read
5515
.native:
5523
.native:
5516
        push    SF_FILE
5524
        push    SF_FILE
5517
        pop     eax
5525
        pop     eax
5518
        mov     ebx, dirinfo
5526
        mov     ebx, dirinfo
5519
        int     40h
5527
        int     40h
5520
.read:
5528
.read:
5521
        test    eax, eax
5529
        test    eax, eax
5522
        jz      .ok
5530
        jz      .ok
5523
        cmp     eax, 6
5531
        cmp     eax, 6
5524
        jz      .ok
5532
        jz      .ok
5525
; Failed to read folder, notify user
5533
; Failed to read folder, notify user
5526
        cmp     [bSilentFolderMode], 0
5534
        cmp     [bSilentFolderMode], 0
5527
        jnz     .dont_notify
5535
        jnz     .dont_notify
5528
        push    dword aContinue
5536
        push    dword aContinue
5529
        push    dword aRetry
5537
        push    dword aRetry
5530
        mov     edx, esp
5538
        mov     edx, esp
5531
        call    get_error_msg
5539
        call    get_error_msg
5532
        push    [dirinfo.name]
5540
        push    [dirinfo.name]
5533
        push    dword aCannotReadFolder
5541
        push    dword aCannotReadFolder
5534
        push    eax
5542
        push    eax
5535
        mov     eax, esp
5543
        mov     eax, esp
5536
        push    edx
5544
        push    edx
5537
        push    2
5545
        push    2
5538
        push    eax
5546
        push    eax
5539
        push    3
5547
        push    3
5540
        call    SayErr
5548
        call    SayErr
5541
        add     esp, 5*4
5549
        add     esp, 5*4
5542
        test    eax, eax
5550
        test    eax, eax
5543
        jz      .retry
5551
        jz      .retry
5544
.dont_notify:
5552
.dont_notify:
5545
; If not on plugin panel, try to return to previous directory
5553
; If not on plugin panel, try to return to previous directory
5546
        cmp     [ebp + PanelData.hPlugin], 0
5554
        cmp     [ebp + PanelData.hPlugin], 0
5547
        jnz     @f
5555
        jnz     @f
5548
        mov     esi, prev_dir
5556
        mov     esi, prev_dir
5549
        cmp     byte [esi], 0
5557
        cmp     byte [esi], 0
5550
        jz      @f
5558
        jz      @f
5551
        lea     edi, [ebp + PanelData.dir]
5559
        lea     edi, [ebp + PanelData.dir]
5552
        mov     ecx, 1024/4
5560
        mov     ecx, 1024/4
5553
        rep     movsd
5561
        rep     movsd
5554
        mov     byte [prev_dir], 0
5562
        mov     byte [prev_dir], 0
5555
        ret
5563
        ret
5556
@@:
5564
@@:
5557
        mov     [bSilentFolderMode], 1  ; enter silent mode
5565
        mov     [bSilentFolderMode], 1  ; enter silent mode
5558
; Try to read parent folder
5566
; Try to read parent folder
5559
        mov     esi, [dirinfo.name]
5567
        mov     esi, [dirinfo.name]
5560
        xor     edx, edx
5568
        xor     edx, edx
5561
.up1:
5569
.up1:
5562
        lodsb
5570
        lodsb
5563
        test    al, al
5571
        test    al, al
5564
        jz      .up1done
5572
        jz      .up1done
5565
        cmp     al, '/'
5573
        cmp     al, '/'
5566
        jnz     .up1
5574
        jnz     .up1
5567
        inc     edx
5575
        inc     edx
5568
        lea     edi, [esi-1]
5576
        lea     edi, [esi-1]
5569
        jmp     .up1
5577
        jmp     .up1
5570
.up1done:
5578
.up1done:
5571
        cmp     [ebp + PanelData.hPlugin], 0
5579
        cmp     [ebp + PanelData.hPlugin], 0
5572
        jz      .4
5580
        jz      .4
5573
        cmp     edx, 1
5581
        cmp     edx, 1
5574
        ja      .up
5582
        ja      .up
5575
; ç⥭¨¥ á ¯ ­¥«¨ ¯« £¨­  ®¡«®¬ «®áì ¯® ¯®«­®©
5583
; ç⥭¨¥ á ¯ ­¥«¨ ¯« £¨­  ®¡«®¬ «®áì ¯® ¯®«­®©
5576
; ¯à¨ í⮬ ¬ë 㦥 ¢ ª®à­¥
5584
; ¯à¨ í⮬ ¬ë 㦥 ¢ ª®à­¥
5577
; ¤¥« ¥¬ ¢¨¤, çâ® äã­ªæ¨ï ç⥭¨ï ¢¥à­ã«  0 í«¥¬¥­â®¢
5585
; ¤¥« ¥¬ ¢¨¤, çâ® äã­ªæ¨ï ç⥭¨ï ¢¥à­ã«  0 í«¥¬¥­â®¢
5578
; (¥á«¨ ­ã¦¥­ ¢å®¤ "..", ®­ ¡ã¤¥â ¤®¡ ¢«¥­  ¢â®¬ â¨ç¥áª¨)
5586
; (¥á«¨ ­ã¦¥­ ¢å®¤ "..", ®­ ¡ã¤¥â ¤®¡ ¢«¥­  ¢â®¬ â¨ç¥áª¨)
5579
        xor     ebx, ebx        ; 0 items read
5587
        xor     ebx, ebx        ; 0 items read
5580
        mov     eax, [dirinfo.dirdata]
5588
        mov     eax, [dirinfo.dirdata]
5581
        mov     [eax+8], ebx    ; 0 items total
5589
        mov     [eax+8], ebx    ; 0 items total
5582
        jmp     .ok
5590
        jmp     .ok
5583
.4:
5591
.4:
5584
        cmp     edx, 2
5592
        cmp     edx, 2
5585
        jbe     .noup
5593
        jbe     .noup
5586
.up:
5594
.up:
5587
        stosb
5595
        stosb
5588
        jmp     read_folder
5596
        jmp     read_folder
5589
.noup:
5597
.noup:
5590
; There is no parent folder, and we are not on plugin panel
5598
; There is no parent folder, and we are not on plugin panel
5591
; Try to read ramdisk
5599
; Try to read ramdisk
5592
        mov     esi, [dirinfo.name]
5600
        mov     esi, [dirinfo.name]
5593
        mov     edi, esi
5601
        mov     edi, esi
5594
        lodsd
5602
        lodsd
5595
        or      eax, 0x00202000
5603
        or      eax, 0x00202000
5596
        cmp     eax, '/rd/'
5604
        cmp     eax, '/rd/'
5597
        jnz     @f
5605
        jnz     @f
5598
        lodsw
5606
        lodsw
5599
        cmp     ax, '1'
5607
        cmp     ax, '1'
5600
        jz      .nosetrd
5608
        jz      .nosetrd
5601
@@:
5609
@@:
5602
        mov     eax, '/rd/'
5610
        mov     eax, '/rd/'
5603
        stosd
5611
        stosd
5604
        mov     ax, '1'
5612
        mov     ax, '1'
5605
        stosw
5613
        stosw
5606
        jmp     read_folder
5614
        jmp     read_folder
5607
.nosetrd:
5615
.nosetrd:
5608
; „ ¦¥ à ¬¤¨áª ­¥ ¯à®ç¨â «áï. ‡­ ç¨â, ­¥ áã¤ì¡ ...
5616
; „ ¦¥ à ¬¤¨áª ­¥ ¯à®ç¨â «áï. ‡­ ç¨â, ­¥ áã¤ì¡ ...
5609
        and     dword [ebp + PanelData.numfiles], 0
5617
        and     dword [ebp + PanelData.numfiles], 0
5610
        and     dword [ebp + PanelData.index], 0
5618
        and     dword [ebp + PanelData.index], 0
5611
        and     dword [ebp + PanelData.start], 0
5619
        and     dword [ebp + PanelData.start], 0
5612
        mov     [bSilentFolderMode], 0  ; leave silent mode
5620
        mov     [bSilentFolderMode], 0  ; leave silent mode
5613
        ret
5621
        ret
5614
.ok:
5622
.ok:
5615
        mov     eax, [dirinfo.dirdata]
5623
        mov     eax, [dirinfo.dirdata]
5616
        cmp     [eax+8], ebx
5624
        cmp     [eax+8], ebx
5617
        jz      .readdone
5625
        jz      .readdone
5618
        push    dword [eax+8]
5626
        push    dword [eax+8]
5619
        mov     ecx, [ebp + PanelData.files]
5627
        mov     ecx, [ebp + PanelData.files]
5620
        call    pgfree
5628
        call    pgfree
5621
        pop     ecx
5629
        pop     ecx
5622
        add     ecx, 0xF
5630
        add     ecx, 0xF
5623
        and     ecx, not 0xF
5631
        and     ecx, not 0xF
5624
        push    ecx
5632
        push    ecx
5625
        imul    ecx, 4+304
5633
        imul    ecx, 4+304
5626
        add     ecx, 32
5634
        add     ecx, 32
5627
        call    xpgalloc
5635
        call    xpgalloc
5628
        test    eax, eax
5636
        test    eax, eax
5629
        jnz     .succ1
5637
        jnz     .succ1
5630
        pop     eax
5638
        pop     eax
5631
        jmp     .readdone
5639
        jmp     .readdone
5632
.succ1:
5640
.succ1:
5633
        mov     [ebp + PanelData.files], eax
5641
        mov     [ebp + PanelData.files], eax
5634
        pop     [ebp + PanelData.nfa]
5642
        pop     [ebp + PanelData.nfa]
5635
        mov     [prev_dir], 0
5643
        mov     [prev_dir], 0
5636
        jmp     read_folder
5644
        jmp     read_folder
5637
.readdone:
5645
.readdone:
5638
        xor     edx, edx
5646
        xor     edx, edx
5639
        mov     [ebp + PanelData.start], edx
5647
        mov     [ebp + PanelData.start], edx
5640
        mov     [ebp + PanelData.index], edx
5648
        mov     [ebp + PanelData.index], edx
5641
        mov     [ebp + PanelData.start], edx
5649
        mov     [ebp + PanelData.start], edx
5642
        mov     edi, [ebp + PanelData.files]
5650
        mov     edi, [ebp + PanelData.files]
5643
        mov     eax, [ebp + PanelData.nfa]
5651
        mov     eax, [ebp + PanelData.nfa]
5644
        lea     eax, [edi + eax*4 + 32]
5652
        lea     eax, [edi + eax*4 + 32]
5645
        mov     ecx, [eax-32+4]
5653
        mov     ecx, [eax-32+4]
5646
        test    ecx, ecx
5654
        test    ecx, ecx
5647
        jz      .loopdone
5655
        jz      .loopdone
5648
; ˆ£­®à¨à㥬 ᯥ樠«ì­ë¥ ¢å®¤ë, ᮮ⢥âáâ¢ãî騥 ¯ ¯ª¥ '.' ¨ ¬¥âª¥ ⮬ 
5656
; ˆ£­®à¨à㥬 ᯥ樠«ì­ë¥ ¢å®¤ë, ᮮ⢥âáâ¢ãî騥 ¯ ¯ª¥ '.' ¨ ¬¥âª¥ ⮬ 
5649
.ptrinit:
5657
.ptrinit:
5650
        cmp     word [eax+40], '.'
5658
        cmp     word [eax+40], '.'
5651
        jz      .loopcont
5659
        jz      .loopcont
5652
        test    byte [eax], 8
5660
        test    byte [eax], 8
5653
        jnz     .loopcont
5661
        jnz     .loopcont
5654
        mov     byte [eax+303], 0
5662
        mov     byte [eax+303], 0
5655
        test    edx, edx
5663
        test    edx, edx
5656
        jnz     .nodotdot
5664
        jnz     .nodotdot
5657
        cmp     word [eax+40], '..'
5665
        cmp     word [eax+40], '..'
5658
        jnz     .nodotdot
5666
        jnz     .nodotdot
5659
        cmp     byte [eax+42], 0
5667
        cmp     byte [eax+42], 0
5660
        jnz     .nodotdot
5668
        jnz     .nodotdot
5661
        mov     edx, eax
5669
        mov     edx, eax
5662
        push    edi
5670
        push    edi
5663
@@:
5671
@@:
5664
        cmp     edi, [ebp + PanelData.files]
5672
        cmp     edi, [ebp + PanelData.files]
5665
        jbe     @f
5673
        jbe     @f
5666
        push    dword [edi-4]
5674
        push    dword [edi-4]
5667
        pop     dword [edi]
5675
        pop     dword [edi]
5668
        sub     edi, 4
5676
        sub     edi, 4
5669
        jmp     @b
5677
        jmp     @b
5670
@@:
5678
@@:
5671
        stosd
5679
        stosd
5672
        pop     edi
5680
        pop     edi
5673
        scasd
5681
        scasd
5674
        jmp     .dotdot
5682
        jmp     .dotdot
5675
.nodotdot:
5683
.nodotdot:
5676
        stosd
5684
        stosd
5677
        xor     ebx, ebx
5685
        xor     ebx, ebx
5678
        test    byte [eax], 10h
5686
        test    byte [eax], 10h
5679
        setz    bl
5687
        setz    bl
5680
        add     [ebp + PanelData.total_num], ebx
5688
        add     [ebp + PanelData.total_num], ebx
5681
        mov     ebx, dword [eax+32]
5689
        mov     ebx, dword [eax+32]
5682
        add     dword [ebp + PanelData.total_size], ebx
5690
        add     dword [ebp + PanelData.total_size], ebx
5683
        mov     ebx, dword [eax+36]
5691
        mov     ebx, dword [eax+36]
5684
        adc     dword [ebp + PanelData.total_size+4], ebx
5692
        adc     dword [ebp + PanelData.total_size+4], ebx
5685
.dotdot:
5693
.dotdot:
5686
; ¯®¤á¢¥âª 
5694
; ¯®¤á¢¥âª 
5687
;        call    insert_last_dot
5695
;        call    insert_last_dot
5688
        call    highlight_init
5696
        call    highlight_init
5689
;        call    delete_last_dot
5697
;        call    delete_last_dot
5690
.loopcont:
5698
.loopcont:
5691
        add     eax, 304
5699
        add     eax, 304
5692
        dec     ecx
5700
        dec     ecx
5693
        jnz     .ptrinit
5701
        jnz     .ptrinit
5694
.loopdone:
5702
.loopdone:
5695
        push    edi
5703
        push    edi
5696
        sub     edi, [ebp + PanelData.files]
5704
        sub     edi, [ebp + PanelData.files]
5697
        shr     edi, 2
5705
        shr     edi, 2
5698
        mov     [ebp + PanelData.numfiles], edi
5706
        mov     [ebp + PanelData.numfiles], edi
5699
        pop     edi
5707
        pop     edi
5700
        test    edx, edx
5708
        test    edx, edx
5701
        jnz     @f
5709
        jnz     @f
5702
        test    [ebp + PanelData.plugin_flags], 1
5710
        test    [ebp + PanelData.plugin_flags], 1
5703
        jz      @f
5711
        jz      @f
5704
        mov     ecx, [ebp + PanelData.numfiles]
5712
        mov     ecx, [ebp + PanelData.numfiles]
5705
        inc     [ebp + PanelData.numfiles]
5713
        inc     [ebp + PanelData.numfiles]
5706
        lea     esi, [edi-4]
5714
        lea     esi, [edi-4]
5707
        std
5715
        std
5708
        rep     movsd
5716
        rep     movsd
5709
        cld
5717
        cld
5710
        mov     eax, left_dotdot_entry
5718
        mov     eax, left_dotdot_entry
5711
        cmp     ebp, panel1
5719
        cmp     ebp, panel1
5712
        jz      .zq
5720
        jz      .zq
5713
        add     eax, right_dotdot_entry-left_dotdot_entry
5721
        add     eax, right_dotdot_entry-left_dotdot_entry
5714
.zq:
5722
.zq:
5715
        stosd
5723
        stosd
5716
        call    highlight_init
5724
        call    highlight_init
5717
@@:
5725
@@:
5718
; ‘®àâ¨à®¢ª 
5726
; ‘®àâ¨à®¢ª 
5719
sort_files:
5727
sort_files:
5720
        movzx   eax, [ebp + PanelData.sortmode]
5728
        movzx   eax, [ebp + PanelData.sortmode]
5721
        mov     ebx, [compare_fns + eax*4]
5729
        mov     ebx, [compare_fns + eax*4]
5722
.mode:
5730
.mode:
5723
        mov     edx, [ebp + PanelData.files]
5731
        mov     edx, [ebp + PanelData.files]
5724
        mov     ecx, [ebp + PanelData.numfiles]
5732
        mov     ecx, [ebp + PanelData.numfiles]
5725
        jecxz   .skip
5733
        jecxz   .skip
5726
        mov     eax, [edx]
5734
        mov     eax, [edx]
5727
        cmp     word [eax+40], '..'
5735
        cmp     word [eax+40], '..'
5728
        jnz     .nodotdot
5736
        jnz     .nodotdot
5729
        cmp     byte [eax+42], 0
5737
        cmp     byte [eax+42], 0
5730
        jnz     .nodotdot
5738
        jnz     .nodotdot
5731
        dec     ecx
5739
        dec     ecx
5732
        add     edx, 4
5740
        add     edx, 4
5733
.nodotdot:
5741
.nodotdot:
5734
        call    sort
5742
        call    sort
5735
.skip:
5743
.skip:
5736
        mov     [bSilentFolderMode], 0  ; leave silent mode
5744
        mov     [bSilentFolderMode], 0  ; leave silent mode
5737
        ret
5745
        ret
5738
 
5746
 
5739
highlight_init:
5747
highlight_init:
5740
        pushad
5748
        pushad
5741
        mov     ebp, eax
5749
        mov     ebp, eax
5742
        lea     esi, [ebp+40]
5750
        lea     esi, [ebp+40]
5743
        mov     edi, lower_file_name
5751
        mov     edi, lower_file_name
5744
        mov     edx, edi
5752
        mov     edx, edi
5745
        xor     eax, eax
5753
        xor     eax, eax
5746
@@:
5754
@@:
5747
        lodsb
5755
        lodsb
5748
        mov     al, [tolower_table+eax]
5756
        mov     al, [tolower_table+eax]
5749
        stosb
5757
        stosb
5750
        test    al, al
5758
        test    al, al
5751
        jnz     @b
5759
        jnz     @b
5752
        mov     esi, edx
5760
        mov     esi, edx
5753
        lea     edx, [edi-1]
5761
        lea     edx, [edi-1]
5754
        xor     ecx, ecx
5762
        xor     ecx, ecx
5755
.highlight_test_loop:
5763
.highlight_test_loop:
5756
        mov     ebx, [highlight_groups+ecx*4]
5764
        mov     ebx, [highlight_groups+ecx*4]
5757
        mov     al, [ebx + highlight.IncludeAttributes]
5765
        mov     al, [ebx + highlight.IncludeAttributes]
5758
        mov     ah, [ebp]
5766
        mov     ah, [ebp]
5759
        and     ah, al
5767
        and     ah, al
5760
        cmp     ah, al
5768
        cmp     ah, al
5761
        jnz     .highlight_test_failed
5769
        jnz     .highlight_test_failed
5762
        lea     edi, [ebx + highlight.Mask]
5770
        lea     edi, [ebx + highlight.Mask]
5763
        call    match_mask_rev_lowercase
5771
        call    match_mask_rev_lowercase
5764
        jc      .highlight_test_failed
5772
        jc      .highlight_test_failed
5765
        mov     ah, [ebx + highlight.NormalColor]
5773
        mov     ah, [ebx + highlight.NormalColor]
5766
        test    ah, ah
5774
        test    ah, ah
5767
        jnz     @f
5775
        jnz     @f
5768
        mov     ah, [panel_normal_color]
5776
        mov     ah, [panel_normal_color]
5769
@@:
5777
@@:
5770
        mov     [ebp+4], ah
5778
        mov     [ebp+4], ah
5771
        mov     ah, [ebx + highlight.CursorColor]
5779
        mov     ah, [ebx + highlight.CursorColor]
5772
        test    ah, ah
5780
        test    ah, ah
5773
        jnz     @f
5781
        jnz     @f
5774
        mov     ah, [panel_cursor_color]
5782
        mov     ah, [panel_cursor_color]
5775
@@:
5783
@@:
5776
        mov     [ebp+5], ah
5784
        mov     [ebp+5], ah
5777
        mov     ah, [ebx + highlight.SelectedColor]
5785
        mov     ah, [ebx + highlight.SelectedColor]
5778
        test    ah, ah
5786
        test    ah, ah
5779
        jnz     @f
5787
        jnz     @f
5780
        mov     ah, [panel_selected_color]
5788
        mov     ah, [panel_selected_color]
5781
@@:
5789
@@:
5782
        mov     [ebp+6], ah
5790
        mov     [ebp+6], ah
5783
        mov     ah, [ebx + highlight.SelectedCursorColor]
5791
        mov     ah, [ebx + highlight.SelectedCursorColor]
5784
        test    ah, ah
5792
        test    ah, ah
5785
        jnz     @f
5793
        jnz     @f
5786
        mov     ah, [panel_selected_cursor_color]
5794
        mov     ah, [panel_selected_cursor_color]
5787
@@:
5795
@@:
5788
        mov     [ebp+7], ah
5796
        mov     [ebp+7], ah
5789
        jmp     .doname
5797
        jmp     .doname
5790
.highlight_test_failed:
5798
.highlight_test_failed:
5791
        inc     ecx
5799
        inc     ecx
5792
        cmp     ecx, [highlight_num_groups]
5800
        cmp     ecx, [highlight_num_groups]
5793
        jb      .highlight_test_loop
5801
        jb      .highlight_test_loop
5794
.nohighlight:
5802
.nohighlight:
5795
        mov     ah, [panel_normal_color]
5803
        mov     ah, [panel_normal_color]
5796
        mov     [ebp+4], ah
5804
        mov     [ebp+4], ah
5797
        mov     ah, [panel_cursor_color]
5805
        mov     ah, [panel_cursor_color]
5798
        mov     [ebp+5], ah
5806
        mov     [ebp+5], ah
5799
        mov     ah, [panel_selected_color]
5807
        mov     ah, [panel_selected_color]
5800
        mov     [ebp+6], ah
5808
        mov     [ebp+6], ah
5801
        mov     ah, [panel_selected_cursor_color]
5809
        mov     ah, [panel_selected_cursor_color]
5802
        mov     [ebp+7], ah
5810
        mov     [ebp+7], ah
5803
.doname:
5811
.doname:
5804
        popad
5812
        popad
5805
        ret
5813
        ret
5806
 
5814
 
5807
compare_name:
5815
compare_name:
5808
        test    byte [esi], 10h
5816
        test    byte [esi], 10h
5809
        jnz     .1dir
5817
        jnz     .1dir
5810
        test    byte [edi], 10h
5818
        test    byte [edi], 10h
5811
        jnz     .greater
5819
        jnz     .greater
5812
.eq1:
5820
.eq1:
5813
        add     esi, 40
5821
        add     esi, 40
5814
        add     edi, 40
5822
        add     edi, 40
5815
        jmp     strcmpi
5823
        jmp     strcmpi
5816
.greater:
5824
.greater:
5817
        test    esi, esi
5825
        test    esi, esi
5818
        ret
5826
        ret
5819
.1dir:
5827
.1dir:
5820
        test    byte [edi], 10h
5828
        test    byte [edi], 10h
5821
        jnz     .eq1
5829
        jnz     .eq1
5822
.less:
5830
.less:
5823
        xor     edi, edi
5831
        xor     edi, edi
5824
        stc
5832
        stc
5825
        ret
5833
        ret
5826
 
5834
 
5827
compare_name_rev:
5835
compare_name_rev:
5828
        test    byte [esi], 10h
5836
        test    byte [esi], 10h
5829
        jnz     .1dir
5837
        jnz     .1dir
5830
        test    byte [edi], 10h
5838
        test    byte [edi], 10h
5831
        jnz     .greater
5839
        jnz     .greater
5832
.eq1:
5840
.eq1:
5833
        add     esi, 40
5841
        add     esi, 40
5834
        add     edi, 40
5842
        add     edi, 40
5835
        xchg    esi, edi
5843
        xchg    esi, edi
5836
        jmp     strcmpi
5844
        jmp     strcmpi
5837
.greater:
5845
.greater:
5838
        test    esi, esi
5846
        test    esi, esi
5839
        ret
5847
        ret
5840
.1dir:
5848
.1dir:
5841
        test    byte [edi], 10h
5849
        test    byte [edi], 10h
5842
        jnz     .eq1
5850
        jnz     .eq1
5843
.less:
5851
.less:
5844
        xor     edi, edi
5852
        xor     edi, edi
5845
        stc
5853
        stc
5846
        ret
5854
        ret
5847
 
5855
 
5848
strcmpi:
5856
strcmpi:
5849
        push    eax
5857
        push    eax
5850
@@:
5858
@@:
5851
        lodsb
5859
        lodsb
5852
        call    match_symbol
5860
        call    match_symbol
5853
        jnz     .ret
5861
        jnz     .ret
5854
        inc     edi
5862
        inc     edi
5855
        test    al, al
5863
        test    al, al
5856
        jnz     @b
5864
        jnz     @b
5857
.ret:
5865
.ret:
5858
        pop     eax
5866
        pop     eax
5859
        ret
5867
        ret
5860
 
5868
 
5861
compare_ext:
5869
compare_ext:
5862
        test    byte [esi], 10h
5870
        test    byte [esi], 10h
5863
        jnz     .1dir
5871
        jnz     .1dir
5864
        test    byte [edi], 10h
5872
        test    byte [edi], 10h
5865
        jnz     .greater
5873
        jnz     .greater
5866
.eq1:
5874
.eq1:
5867
        add     esi, 40
5875
        add     esi, 40
5868
        add     edi, 40
5876
        add     edi, 40
5869
        push    esi edi
5877
        push    esi edi
5870
        call    seek_ext
5878
        call    seek_ext
5871
        xchg    esi, edi
5879
        xchg    esi, edi
5872
        call    seek_ext
5880
        call    seek_ext
5873
        xchg    esi, edi
5881
        xchg    esi, edi
5874
        call    strcmpi
5882
        call    strcmpi
5875
        jnz     .ret
5883
        jnz     .ret
5876
        pop     edi esi
5884
        pop     edi esi
5877
        jmp     strcmpi
5885
        jmp     strcmpi
5878
.ret:
5886
.ret:
5879
        pop     edi esi
5887
        pop     edi esi
5880
        ret
5888
        ret
5881
.greater:
5889
.greater:
5882
        test    esi, esi
5890
        test    esi, esi
5883
        ret
5891
        ret
5884
.1dir:
5892
.1dir:
5885
        test    byte [edi], 10h
5893
        test    byte [edi], 10h
5886
        jnz     .eq1
5894
        jnz     .eq1
5887
.less:
5895
.less:
5888
        xor     edi, edi
5896
        xor     edi, edi
5889
        stc
5897
        stc
5890
        ret
5898
        ret
5891
 
5899
 
5892
compare_ext_rev:
5900
compare_ext_rev:
5893
        test    byte [esi], 10h
5901
        test    byte [esi], 10h
5894
        jnz     .1dir
5902
        jnz     .1dir
5895
        test    byte [edi], 10h
5903
        test    byte [edi], 10h
5896
        jnz     .greater
5904
        jnz     .greater
5897
.eq1:
5905
.eq1:
5898
        add     esi, 40
5906
        add     esi, 40
5899
        add     edi, 40
5907
        add     edi, 40
5900
        push    esi edi
5908
        push    esi edi
5901
        call    seek_ext
5909
        call    seek_ext
5902
        xchg    esi, edi
5910
        xchg    esi, edi
5903
        call    seek_ext
5911
        call    seek_ext
5904
        call    strcmpi
5912
        call    strcmpi
5905
        jnz     .ret
5913
        jnz     .ret
5906
        pop     edi esi
5914
        pop     edi esi
5907
        xchg    esi, edi
5915
        xchg    esi, edi
5908
        jmp     strcmpi
5916
        jmp     strcmpi
5909
.ret:
5917
.ret:
5910
        pop     edi esi
5918
        pop     edi esi
5911
        ret
5919
        ret
5912
.greater:
5920
.greater:
5913
        test    esi, esi
5921
        test    esi, esi
5914
        ret
5922
        ret
5915
.1dir:
5923
.1dir:
5916
        test    byte [edi], 10h
5924
        test    byte [edi], 10h
5917
        jnz     .eq1
5925
        jnz     .eq1
5918
.less:
5926
.less:
5919
        xor     edi, edi
5927
        xor     edi, edi
5920
        stc
5928
        stc
5921
        ret
5929
        ret
5922
 
5930
 
5923
seek_ext:
5931
seek_ext:
5924
        push    eax
5932
        push    eax
5925
        xor     eax, eax
5933
        xor     eax, eax
5926
.l:
5934
.l:
5927
        inc     esi
5935
        inc     esi
5928
        cmp     byte [esi-1], '.'
5936
        cmp     byte [esi-1], '.'
5929
        jnz     @f
5937
        jnz     @f
5930
        mov     eax, esi
5938
        mov     eax, esi
5931
@@:
5939
@@:
5932
        cmp     byte [esi-1], 0
5940
        cmp     byte [esi-1], 0
5933
        jnz     .l
5941
        jnz     .l
5934
        test    eax, eax
5942
        test    eax, eax
5935
        jnz     @f
5943
        jnz     @f
5936
        lea     eax, [esi-1]
5944
        lea     eax, [esi-1]
5937
@@:
5945
@@:
5938
        mov     esi, eax
5946
        mov     esi, eax
5939
        pop     eax
5947
        pop     eax
5940
        ret
5948
        ret
5941
 
5949
 
5942
compare_modified:
5950
compare_modified:
5943
        test    byte [esi], 10h
5951
        test    byte [esi], 10h
5944
        jnz     .1dir
5952
        jnz     .1dir
5945
        test    byte [edi], 10h
5953
        test    byte [edi], 10h
5946
        jnz     .greater
5954
        jnz     .greater
5947
.eq1:
5955
.eq1:
5948
        push    edi
5956
        push    edi
5949
        mov     edi, [edi+28]
5957
        mov     edi, [edi+28]
5950
        cmp     edi, [esi+28]
5958
        cmp     edi, [esi+28]
5951
        pop     edi
5959
        pop     edi
5952
        jnz     @f
5960
        jnz     @f
5953
        push    edi
5961
        push    edi
5954
        mov     edi, [edi+24]
5962
        mov     edi, [edi+24]
5955
        cmp     edi, [esi+24]
5963
        cmp     edi, [esi+24]
5956
        pop     edi
5964
        pop     edi
5957
        jnz     @f
5965
        jnz     @f
5958
        add     esi, 40
5966
        add     esi, 40
5959
        add     edi, 40
5967
        add     edi, 40
5960
        jmp     strcmpi
5968
        jmp     strcmpi
5961
@@:
5969
@@:
5962
        ret
5970
        ret
5963
.greater:
5971
.greater:
5964
        test    esi, esi
5972
        test    esi, esi
5965
        ret
5973
        ret
5966
.1dir:
5974
.1dir:
5967
        test    byte [edi], 10h
5975
        test    byte [edi], 10h
5968
        jnz     .eq1
5976
        jnz     .eq1
5969
.less:
5977
.less:
5970
        xor     edi, edi
5978
        xor     edi, edi
5971
        stc
5979
        stc
5972
        ret
5980
        ret
5973
 
5981
 
5974
compare_modified_rev:
5982
compare_modified_rev:
5975
        test    byte [esi], 10h
5983
        test    byte [esi], 10h
5976
        jnz     .1dir
5984
        jnz     .1dir
5977
        test    byte [edi], 10h
5985
        test    byte [edi], 10h
5978
        jnz     .greater
5986
        jnz     .greater
5979
.eq1:
5987
.eq1:
5980
        push    esi
5988
        push    esi
5981
        mov     esi, [esi+28]
5989
        mov     esi, [esi+28]
5982
        cmp     esi, [edi+28]
5990
        cmp     esi, [edi+28]
5983
        pop     esi
5991
        pop     esi
5984
        jnz     @f
5992
        jnz     @f
5985
        push    esi
5993
        push    esi
5986
        mov     esi, [esi+24]
5994
        mov     esi, [esi+24]
5987
        cmp     esi, [edi+24]
5995
        cmp     esi, [edi+24]
5988
        pop     esi
5996
        pop     esi
5989
        jnz     @f
5997
        jnz     @f
5990
        add     esi, 40
5998
        add     esi, 40
5991
        add     edi, 40
5999
        add     edi, 40
5992
        xchg    esi, edi
6000
        xchg    esi, edi
5993
        jmp     strcmpi
6001
        jmp     strcmpi
5994
@@:
6002
@@:
5995
        ret
6003
        ret
5996
.greater:
6004
.greater:
5997
        test    esi, esi
6005
        test    esi, esi
5998
        ret
6006
        ret
5999
.1dir:
6007
.1dir:
6000
        test    byte [edi], 10h
6008
        test    byte [edi], 10h
6001
        jnz     .eq1
6009
        jnz     .eq1
6002
.less:
6010
.less:
6003
        xor     edi, edi
6011
        xor     edi, edi
6004
        stc
6012
        stc
6005
        ret
6013
        ret
6006
 
6014
 
6007
compare_size:
6015
compare_size:
6008
        test    byte [esi], 10h
6016
        test    byte [esi], 10h
6009
        jnz     .1dir
6017
        jnz     .1dir
6010
        test    byte [edi], 10h
6018
        test    byte [edi], 10h
6011
        jnz     .greater
6019
        jnz     .greater
6012
.eq1:
6020
.eq1:
6013
        push    edi
6021
        push    edi
6014
        mov     edi, [edi+36]
6022
        mov     edi, [edi+36]
6015
        cmp     edi, [esi+36]
6023
        cmp     edi, [esi+36]
6016
        pop     edi
6024
        pop     edi
6017
        jnz     @f
6025
        jnz     @f
6018
        push    edi
6026
        push    edi
6019
        mov     edi, [edi+32]
6027
        mov     edi, [edi+32]
6020
        cmp     edi, [esi+32]
6028
        cmp     edi, [esi+32]
6021
        pop     edi
6029
        pop     edi
6022
        jnz     @f
6030
        jnz     @f
6023
        add     esi, 40
6031
        add     esi, 40
6024
        add     edi, 40
6032
        add     edi, 40
6025
        jmp     strcmpi
6033
        jmp     strcmpi
6026
@@:
6034
@@:
6027
        ret
6035
        ret
6028
.greater:
6036
.greater:
6029
        test    esi, esi
6037
        test    esi, esi
6030
        ret
6038
        ret
6031
.1dir:
6039
.1dir:
6032
        test    byte [edi], 10h
6040
        test    byte [edi], 10h
6033
        jnz     .eq1
6041
        jnz     .eq1
6034
.less:
6042
.less:
6035
        xor     edi, edi
6043
        xor     edi, edi
6036
        stc
6044
        stc
6037
        ret
6045
        ret
6038
 
6046
 
6039
compare_size_rev:
6047
compare_size_rev:
6040
        test    byte [esi], 10h
6048
        test    byte [esi], 10h
6041
        jnz     .1dir
6049
        jnz     .1dir
6042
        test    byte [edi], 10h
6050
        test    byte [edi], 10h
6043
        jnz     .greater
6051
        jnz     .greater
6044
.eq1:
6052
.eq1:
6045
        push    esi
6053
        push    esi
6046
        mov     esi, [esi+36]
6054
        mov     esi, [esi+36]
6047
        cmp     esi, [edi+36]
6055
        cmp     esi, [edi+36]
6048
        pop     esi
6056
        pop     esi
6049
        jnz     @f
6057
        jnz     @f
6050
        push    esi
6058
        push    esi
6051
        mov     esi, [esi+32]
6059
        mov     esi, [esi+32]
6052
        cmp     esi, [edi+32]
6060
        cmp     esi, [edi+32]
6053
        pop     esi
6061
        pop     esi
6054
        jnz     @f
6062
        jnz     @f
6055
        add     esi, 40
6063
        add     esi, 40
6056
        add     edi, 40
6064
        add     edi, 40
6057
        xchg    esi, edi
6065
        xchg    esi, edi
6058
        jmp     strcmpi
6066
        jmp     strcmpi
6059
@@:
6067
@@:
6060
        ret
6068
        ret
6061
.greater:
6069
.greater:
6062
        test    esi, esi
6070
        test    esi, esi
6063
        ret
6071
        ret
6064
.1dir:
6072
.1dir:
6065
        test    byte [edi], 10h
6073
        test    byte [edi], 10h
6066
        jnz     .eq1
6074
        jnz     .eq1
6067
.less:
6075
.less:
6068
        xor     edi, edi
6076
        xor     edi, edi
6069
        stc
6077
        stc
6070
        ret
6078
        ret
6071
 
6079
 
6072
compare_unordered:
6080
compare_unordered:
6073
        cmp     esi, edi
6081
        cmp     esi, edi
6074
        ret
6082
        ret
6075
compare_unordered_rev:
6083
compare_unordered_rev:
6076
        cmp     edi, esi
6084
        cmp     edi, esi
6077
        ret
6085
        ret
6078
 
6086
 
6079
compare_created:
6087
compare_created:
6080
        test    byte [esi], 10h
6088
        test    byte [esi], 10h
6081
        jnz     .1dir
6089
        jnz     .1dir
6082
        test    byte [edi], 10h
6090
        test    byte [edi], 10h
6083
        jnz     .greater
6091
        jnz     .greater
6084
.eq1:
6092
.eq1:
6085
        push    edi
6093
        push    edi
6086
        mov     edi, [edi+12]
6094
        mov     edi, [edi+12]
6087
        cmp     edi, [esi+12]
6095
        cmp     edi, [esi+12]
6088
        pop     edi
6096
        pop     edi
6089
        jnz     @f
6097
        jnz     @f
6090
        push    edi
6098
        push    edi
6091
        mov     edi, [edi+8]
6099
        mov     edi, [edi+8]
6092
        cmp     edi, [esi+8]
6100
        cmp     edi, [esi+8]
6093
        pop     edi
6101
        pop     edi
6094
        jnz     @f
6102
        jnz     @f
6095
        add     esi, 40
6103
        add     esi, 40
6096
        add     edi, 40
6104
        add     edi, 40
6097
        jmp     strcmpi
6105
        jmp     strcmpi
6098
@@:
6106
@@:
6099
        ret
6107
        ret
6100
.greater:
6108
.greater:
6101
        test    esi, esi
6109
        test    esi, esi
6102
        ret
6110
        ret
6103
.1dir:
6111
.1dir:
6104
        test    byte [edi], 10h
6112
        test    byte [edi], 10h
6105
        jnz     .eq1
6113
        jnz     .eq1
6106
.less:
6114
.less:
6107
        xor     edi, edi
6115
        xor     edi, edi
6108
        stc
6116
        stc
6109
        ret
6117
        ret
6110
 
6118
 
6111
compare_created_rev:
6119
compare_created_rev:
6112
        test    byte [esi], 10h
6120
        test    byte [esi], 10h
6113
        jnz     .1dir
6121
        jnz     .1dir
6114
        test    byte [edi], 10h
6122
        test    byte [edi], 10h
6115
        jnz     .greater
6123
        jnz     .greater
6116
.eq1:
6124
.eq1:
6117
        push    esi
6125
        push    esi
6118
        mov     esi, [esi+12]
6126
        mov     esi, [esi+12]
6119
        cmp     esi, [edi+12]
6127
        cmp     esi, [edi+12]
6120
        pop     esi
6128
        pop     esi
6121
        jnz     @f
6129
        jnz     @f
6122
        push    esi
6130
        push    esi
6123
        mov     esi, [esi+8]
6131
        mov     esi, [esi+8]
6124
        cmp     esi, [edi+8]
6132
        cmp     esi, [edi+8]
6125
        pop     esi
6133
        pop     esi
6126
        jnz     @f
6134
        jnz     @f
6127
        add     esi, 40
6135
        add     esi, 40
6128
        add     edi, 40
6136
        add     edi, 40
6129
        xchg    esi, edi
6137
        xchg    esi, edi
6130
        jmp     strcmpi
6138
        jmp     strcmpi
6131
@@:
6139
@@:
6132
        ret
6140
        ret
6133
.greater:
6141
.greater:
6134
        test    esi, esi
6142
        test    esi, esi
6135
        ret
6143
        ret
6136
.1dir:
6144
.1dir:
6137
        test    byte [edi], 10h
6145
        test    byte [edi], 10h
6138
        jnz     .eq1
6146
        jnz     .eq1
6139
.less:
6147
.less:
6140
        xor     edi, edi
6148
        xor     edi, edi
6141
        stc
6149
        stc
6142
        ret
6150
        ret
6143
 
6151
 
6144
compare_accessed:
6152
compare_accessed:
6145
        test    byte [esi], 10h
6153
        test    byte [esi], 10h
6146
        jnz     .1dir
6154
        jnz     .1dir
6147
        test    byte [edi], 10h
6155
        test    byte [edi], 10h
6148
        jnz     .greater
6156
        jnz     .greater
6149
.eq1:
6157
.eq1:
6150
        push    edi
6158
        push    edi
6151
        mov     edi, [edi+20]
6159
        mov     edi, [edi+20]
6152
        cmp     edi, [esi+20]
6160
        cmp     edi, [esi+20]
6153
        pop     edi
6161
        pop     edi
6154
        jnz     @f
6162
        jnz     @f
6155
        push    edi
6163
        push    edi
6156
        mov     edi, [edi+16]
6164
        mov     edi, [edi+16]
6157
        cmp     edi, [esi+16]
6165
        cmp     edi, [esi+16]
6158
        pop     edi
6166
        pop     edi
6159
        jnz     @f
6167
        jnz     @f
6160
        add     esi, 40
6168
        add     esi, 40
6161
        add     edi, 40
6169
        add     edi, 40
6162
        jmp     strcmpi
6170
        jmp     strcmpi
6163
@@:
6171
@@:
6164
        ret
6172
        ret
6165
.greater:
6173
.greater:
6166
        test    esi, esi
6174
        test    esi, esi
6167
        ret
6175
        ret
6168
.1dir:
6176
.1dir:
6169
        test    byte [edi], 10h
6177
        test    byte [edi], 10h
6170
        jnz     .eq1
6178
        jnz     .eq1
6171
.less:
6179
.less:
6172
        xor     edi, edi
6180
        xor     edi, edi
6173
        stc
6181
        stc
6174
        ret
6182
        ret
6175
 
6183
 
6176
compare_accessed_rev:
6184
compare_accessed_rev:
6177
        test    byte [esi], 10h
6185
        test    byte [esi], 10h
6178
        jnz     .1dir
6186
        jnz     .1dir
6179
        test    byte [edi], 10h
6187
        test    byte [edi], 10h
6180
        jnz     .greater
6188
        jnz     .greater
6181
.eq1:
6189
.eq1:
6182
        push    esi
6190
        push    esi
6183
        mov     esi, [esi+20]
6191
        mov     esi, [esi+20]
6184
        cmp     esi, [edi+20]
6192
        cmp     esi, [edi+20]
6185
        pop     esi
6193
        pop     esi
6186
        jnz     @f
6194
        jnz     @f
6187
        push    esi
6195
        push    esi
6188
        mov     esi, [esi+16]
6196
        mov     esi, [esi+16]
6189
        cmp     esi, [edi+16]
6197
        cmp     esi, [edi+16]
6190
        pop     esi
6198
        pop     esi
6191
        jnz     @f
6199
        jnz     @f
6192
        add     esi, 40
6200
        add     esi, 40
6193
        add     edi, 40
6201
        add     edi, 40
6194
        xchg    esi, edi
6202
        xchg    esi, edi
6195
        jmp     strcmpi
6203
        jmp     strcmpi
6196
@@:
6204
@@:
6197
        ret
6205
        ret
6198
.greater:
6206
.greater:
6199
        test    esi, esi
6207
        test    esi, esi
6200
        ret
6208
        ret
6201
.1dir:
6209
.1dir:
6202
        test    byte [edi], 10h
6210
        test    byte [edi], 10h
6203
        jnz     .eq1
6211
        jnz     .eq1
6204
.less:
6212
.less:
6205
        xor     edi, edi
6213
        xor     edi, edi
6206
        stc
6214
        stc
6207
        ret
6215
        ret
6208
 
6216
 
6209
ReadFolder_default:
6217
ReadFolder_default:
6210
        mov     eax, 2
6218
        mov     eax, 2
6211
        ret     10h
6219
        ret     10h
6212
 
6220
 
6213
if 0
6221
if 0
6214
; Following subroutines work, but are slow
6222
; Following subroutines work, but are slow
6215
match_mask:
6223
match_mask:
6216
; in: esi->name, edi->mask
6224
; in: esi->name, edi->mask
6217
; out: CF clear <=> match
6225
; out: CF clear <=> match
6218
        pusha
6226
        pusha
6219
        xchg    esi, edi
6227
        xchg    esi, edi
6220
.main_cycle:
6228
.main_cycle:
6221
        push    esi
6229
        push    esi
6222
@@:
6230
@@:
6223
        lodsb
6231
        lodsb
6224
        test    al, al
6232
        test    al, al
6225
        jz      @f
6233
        jz      @f
6226
        cmp     al, ','
6234
        cmp     al, ','
6227
        jz      @f
6235
        jz      @f
6228
        cmp     al, '|'
6236
        cmp     al, '|'
6229
        jnz     @b
6237
        jnz     @b
6230
@@:
6238
@@:
6231
        mov     [esi-1], byte 0
6239
        mov     [esi-1], byte 0
6232
        xchg    esi, [esp]
6240
        xchg    esi, [esp]
6233
        call    match_single_mask
6241
        call    match_single_mask
6234
        pop     esi
6242
        pop     esi
6235
        mov     [esi-1], al
6243
        mov     [esi-1], al
6236
        jnc     .found
6244
        jnc     .found
6237
        cmp     al, ','
6245
        cmp     al, ','
6238
        jz      .main_cycle
6246
        jz      .main_cycle
6239
.done_fail:
6247
.done_fail:
6240
        stc
6248
        stc
6241
        popa
6249
        popa
6242
        ret
6250
        ret
6243
.found:
6251
.found:
6244
        test    al, al
6252
        test    al, al
6245
        jz      .done_succ
6253
        jz      .done_succ
6246
        cmp     al, '|'
6254
        cmp     al, '|'
6247
        jz      .test_exclude
6255
        jz      .test_exclude
6248
        lodsb
6256
        lodsb
6249
        jmp     .found
6257
        jmp     .found
6250
.done_succ:
6258
.done_succ:
6251
        clc
6259
        clc
6252
        popa
6260
        popa
6253
        ret
6261
        ret
6254
.test_exclude:
6262
.test_exclude:
6255
        push    esi
6263
        push    esi
6256
@@:
6264
@@:
6257
        lodsb
6265
        lodsb
6258
        test    al, al
6266
        test    al, al
6259
        jz      @f
6267
        jz      @f
6260
        cmp     al, ','
6268
        cmp     al, ','
6261
        jnz     @b
6269
        jnz     @b
6262
@@:
6270
@@:
6263
        mov     byte [esi-1], 0
6271
        mov     byte [esi-1], 0
6264
        xchg    esi, [esp]
6272
        xchg    esi, [esp]
6265
        call    match_single_mask
6273
        call    match_single_mask
6266
        pop     esi
6274
        pop     esi
6267
        mov     [esi-1], al
6275
        mov     [esi-1], al
6268
        jnc     .done_fail
6276
        jnc     .done_fail
6269
        test    al, al
6277
        test    al, al
6270
        jz      .done_succ
6278
        jz      .done_succ
6271
        jmp     .test_exclude
6279
        jmp     .test_exclude
6272
 
6280
 
6273
match_single_mask:
6281
match_single_mask:
6274
; in: esi->mask, edi->name
6282
; in: esi->mask, edi->name
6275
; out: CF clear <=> match
6283
; out: CF clear <=> match
6276
        pusha
6284
        pusha
6277
.mask_symbol:
6285
.mask_symbol:
6278
        lodsb
6286
        lodsb
6279
        test    al, al
6287
        test    al, al
6280
        jz      .mask_done
6288
        jz      .mask_done
6281
        cmp     al, '*'
6289
        cmp     al, '*'
6282
        jz      .asterisk
6290
        jz      .asterisk
6283
        cmp     al, '?'
6291
        cmp     al, '?'
6284
        jz      .quest
6292
        jz      .quest
6285
        cmp     al, '['
6293
        cmp     al, '['
6286
        jz      .list
6294
        jz      .list
6287
        call    match_symbol
6295
        call    match_symbol
6288
        jnz     .done_fail
6296
        jnz     .done_fail
6289
        inc     edi
6297
        inc     edi
6290
        jmp     .mask_symbol
6298
        jmp     .mask_symbol
6291
.done_fail:
6299
.done_fail:
6292
        stc
6300
        stc
6293
        popa
6301
        popa
6294
        ret
6302
        ret
6295
.mask_done:
6303
.mask_done:
6296
        scasb
6304
        scasb
6297
        jnz     .done_fail
6305
        jnz     .done_fail
6298
.done_succ:
6306
.done_succ:
6299
        clc
6307
        clc
6300
        popa
6308
        popa
6301
        ret
6309
        ret
6302
.quest:
6310
.quest:
6303
        mov     al, 0
6311
        mov     al, 0
6304
        scasb
6312
        scasb
6305
        jz      .done_fail
6313
        jz      .done_fail
6306
        jmp     .mask_symbol
6314
        jmp     .mask_symbol
6307
.list:
6315
.list:
6308
        lodsb
6316
        lodsb
6309
        cmp     al, ']'
6317
        cmp     al, ']'
6310
        jz      .done_fail
6318
        jz      .done_fail
6311
        cmp     byte [esi+1], '-'
6319
        cmp     byte [esi+1], '-'
6312
        jz      .range
6320
        jz      .range
6313
        call    match_symbol
6321
        call    match_symbol
6314
        jnz     .list
6322
        jnz     .list
6315
.listok:
6323
.listok:
6316
        inc     edi
6324
        inc     edi
6317
@@:
6325
@@:
6318
        lodsb
6326
        lodsb
6319
        cmp     al, ']'
6327
        cmp     al, ']'
6320
        jnz     @b
6328
        jnz     @b
6321
        jmp     .mask_symbol
6329
        jmp     .mask_symbol
6322
.range:
6330
.range:
6323
        call    match_symbol
6331
        call    match_symbol
6324
        ja      @f
6332
        ja      @f
6325
        mov     al, [esi+2]
6333
        mov     al, [esi+2]
6326
        call    match_symbol
6334
        call    match_symbol
6327
        jae     .listok
6335
        jae     .listok
6328
@@:
6336
@@:
6329
        inc     esi
6337
        inc     esi
6330
        jmp     .list
6338
        jmp     .list
6331
.asterisk:
6339
.asterisk:
6332
        cmp     byte [esi], 0
6340
        cmp     byte [esi], 0
6333
        jz      .done_succ
6341
        jz      .done_succ
6334
        cmp     byte [esi], '?'
6342
        cmp     byte [esi], '?'
6335
        jnz     @f
6343
        jnz     @f
6336
        mov     al, 0
6344
        mov     al, 0
6337
        scasb
6345
        scasb
6338
        jz      .done_fail
6346
        jz      .done_fail
6339
        inc     esi
6347
        inc     esi
6340
        jmp     .asterisk
6348
        jmp     .asterisk
6341
@@:
6349
@@:
6342
        cmp     byte [esi], '['
6350
        cmp     byte [esi], '['
6343
        jz      .asterisk_common
6351
        jz      .asterisk_common
6344
; the mask is ...*...
6352
; the mask is ...*...
6345
.asterisk_normal:
6353
.asterisk_normal:
6346
        mov     al, [esi]
6354
        mov     al, [esi]
6347
@@:
6355
@@:
6348
        cmp     byte [edi], 0
6356
        cmp     byte [edi], 0
6349
        jz      .done_fail
6357
        jz      .done_fail
6350
        call    match_symbol
6358
        call    match_symbol
6351
        jz      @f
6359
        jz      @f
6352
        inc     edi
6360
        inc     edi
6353
        jmp     @b
6361
        jmp     @b
6354
@@:
6362
@@:
6355
        inc     edi
6363
        inc     edi
6356
        inc     esi
6364
        inc     esi
6357
        call    match_single_mask
6365
        call    match_single_mask
6358
        jnc     .done_succ
6366
        jnc     .done_succ
6359
        dec     esi
6367
        dec     esi
6360
        jmp     .asterisk_normal
6368
        jmp     .asterisk_normal
6361
.asterisk_common:
6369
.asterisk_common:
6362
        push    edi
6370
        push    edi
6363
@@:
6371
@@:
6364
        call    match_single_mask
6372
        call    match_single_mask
6365
        jnc     @f
6373
        jnc     @f
6366
        mov     al, 0
6374
        mov     al, 0
6367
        scasb
6375
        scasb
6368
        jnz     @b
6376
        jnz     @b
6369
        pop     edi
6377
        pop     edi
6370
        jmp     .done_fail
6378
        jmp     .done_fail
6371
@@:
6379
@@:
6372
        pop     edi
6380
        pop     edi
6373
        jmp     .done_succ
6381
        jmp     .done_succ
6374
 
6382
 
6375
match_mask_rev:
6383
match_mask_rev:
6376
; in: esi->name, edx->end of name, edi->mask
6384
; in: esi->name, edx->end of name, edi->mask
6377
; out: CF clear <=> match
6385
; out: CF clear <=> match
6378
        pusha
6386
        pusha
6379
        xchg    esi, edx
6387
        xchg    esi, edx
6380
        xchg    esi, edi
6388
        xchg    esi, edi
6381
.main_cycle:
6389
.main_cycle:
6382
        mov     ecx, esi
6390
        mov     ecx, esi
6383
@@:
6391
@@:
6384
        lodsb
6392
        lodsb
6385
        test    al, al
6393
        test    al, al
6386
        jz      @f
6394
        jz      @f
6387
        cmp     al, ','
6395
        cmp     al, ','
6388
        jz      @f
6396
        jz      @f
6389
        cmp     al, '|'
6397
        cmp     al, '|'
6390
        jnz     @b
6398
        jnz     @b
6391
@@:
6399
@@:
6392
        dec     esi
6400
        dec     esi
6393
        mov     [esi], byte 0
6401
        mov     [esi], byte 0
6394
        call    match_single_mask_rev2
6402
        call    match_single_mask_rev2
6395
        mov     [esi], al
6403
        mov     [esi], al
6396
        inc     esi
6404
        inc     esi
6397
        jnc     .found
6405
        jnc     .found
6398
        cmp     al, ','
6406
        cmp     al, ','
6399
        jz      .main_cycle
6407
        jz      .main_cycle
6400
.done_fail:
6408
.done_fail:
6401
        stc
6409
        stc
6402
        popa
6410
        popa
6403
        ret
6411
        ret
6404
.found:
6412
.found:
6405
        test    al, al
6413
        test    al, al
6406
        jz      .done_succ
6414
        jz      .done_succ
6407
        cmp     al, '|'
6415
        cmp     al, '|'
6408
        jz      .test_exclude
6416
        jz      .test_exclude
6409
        lodsb
6417
        lodsb
6410
        jmp     .found
6418
        jmp     .found
6411
.done_succ:
6419
.done_succ:
6412
        clc
6420
        clc
6413
        popa
6421
        popa
6414
        ret
6422
        ret
6415
.test_exclude:
6423
.test_exclude:
6416
        mov     ecx, esi
6424
        mov     ecx, esi
6417
@@:
6425
@@:
6418
        lodsb
6426
        lodsb
6419
        test    al, al
6427
        test    al, al
6420
        jz      @f
6428
        jz      @f
6421
        cmp     al, ','
6429
        cmp     al, ','
6422
        jnz     @b
6430
        jnz     @b
6423
@@:
6431
@@:
6424
        dec     esi
6432
        dec     esi
6425
        mov     byte [esi], 0
6433
        mov     byte [esi], 0
6426
        call    match_single_mask_rev2
6434
        call    match_single_mask_rev2
6427
        mov     [esi], al
6435
        mov     [esi], al
6428
        inc     esi
6436
        inc     esi
6429
        jnc     .done_fail
6437
        jnc     .done_fail
6430
        test    al, al
6438
        test    al, al
6431
        jz      .done_succ
6439
        jz      .done_succ
6432
        jmp     .test_exclude
6440
        jmp     .test_exclude
6433
 
6441
 
6434
match_single_mask_rev2:
6442
match_single_mask_rev2:
6435
        pusha
6443
        pusha
6436
        jmp     match_single_mask_rev.mask_symbol
6444
        jmp     match_single_mask_rev.mask_symbol
6437
match_single_mask_rev:
6445
match_single_mask_rev:
6438
; in: esi->mask, edi->end of name, edx->start of name
6446
; in: esi->mask, edi->end of name, edx->start of name
6439
; out: CF clear <=> match
6447
; out: CF clear <=> match
6440
        pusha
6448
        pusha
6441
        mov     ecx, esi
6449
        mov     ecx, esi
6442
@@:
6450
@@:
6443
        lodsb
6451
        lodsb
6444
        test    al, al
6452
        test    al, al
6445
        jnz     @b
6453
        jnz     @b
6446
        dec     esi
6454
        dec     esi
6447
; esi->end of mask, ecx->start of mask
6455
; esi->end of mask, ecx->start of mask
6448
.mask_symbol:
6456
.mask_symbol:
6449
        dec     esi
6457
        dec     esi
6450
        cmp     esi, ecx
6458
        cmp     esi, ecx
6451
        jb      .mask_done
6459
        jb      .mask_done
6452
        mov     al, [esi]
6460
        mov     al, [esi]
6453
        cmp     al, '*'
6461
        cmp     al, '*'
6454
        jz      .asterisk
6462
        jz      .asterisk
6455
        cmp     al, '?'
6463
        cmp     al, '?'
6456
        jz      .quest
6464
        jz      .quest
6457
        cmp     al, ']'
6465
        cmp     al, ']'
6458
        jz      .list
6466
        jz      .list
6459
        dec     edi
6467
        dec     edi
6460
        cmp     edi, edx
6468
        cmp     edi, edx
6461
        jb      .done_fail
6469
        jb      .done_fail
6462
        call    match_symbol
6470
        call    match_symbol
6463
        jz      .mask_symbol
6471
        jz      .mask_symbol
6464
.done_fail:
6472
.done_fail:
6465
        stc
6473
        stc
6466
        popa
6474
        popa
6467
        ret
6475
        ret
6468
.mask_done:
6476
.mask_done:
6469
        cmp     edi, edx
6477
        cmp     edi, edx
6470
        jnz     .done_fail
6478
        jnz     .done_fail
6471
.done_succ:
6479
.done_succ:
6472
        clc
6480
        clc
6473
        popa
6481
        popa
6474
        ret
6482
        ret
6475
.quest:
6483
.quest:
6476
        dec     edi
6484
        dec     edi
6477
        cmp     edi, edx
6485
        cmp     edi, edx
6478
        jb      .done_fail
6486
        jb      .done_fail
6479
        jmp     .mask_symbol
6487
        jmp     .mask_symbol
6480
.list:
6488
.list:
6481
        dec     edi
6489
        dec     edi
6482
        cmp     edi, edx
6490
        cmp     edi, edx
6483
        jb      .done_fail
6491
        jb      .done_fail
6484
.list_check:
6492
.list_check:
6485
        dec     esi
6493
        dec     esi
6486
        cmp     esi, ecx
6494
        cmp     esi, ecx
6487
        jbe     .done_fail
6495
        jbe     .done_fail
6488
        mov     al, [esi]
6496
        mov     al, [esi]
6489
        cmp     al, '['
6497
        cmp     al, '['
6490
        jz      .done_fail
6498
        jz      .done_fail
6491
        cmp     byte [esi-1], '-'
6499
        cmp     byte [esi-1], '-'
6492
        jz      .range
6500
        jz      .range
6493
        call    match_symbol
6501
        call    match_symbol
6494
        jnz     .list_check
6502
        jnz     .list_check
6495
.listok:
6503
.listok:
6496
@@:
6504
@@:
6497
        dec     esi
6505
        dec     esi
6498
        cmp     esi, ecx
6506
        cmp     esi, ecx
6499
        jb      .done_fail
6507
        jb      .done_fail
6500
        cmp     byte [esi], '['
6508
        cmp     byte [esi], '['
6501
        jnz     @b
6509
        jnz     @b
6502
        jmp     .mask_symbol
6510
        jmp     .mask_symbol
6503
.range:
6511
.range:
6504
        call    match_symbol
6512
        call    match_symbol
6505
        jb      @f
6513
        jb      @f
6506
        mov     al, [esi-2]
6514
        mov     al, [esi-2]
6507
        call    match_symbol
6515
        call    match_symbol
6508
        jbe     .listok
6516
        jbe     .listok
6509
@@:
6517
@@:
6510
        dec     esi
6518
        dec     esi
6511
        dec     esi
6519
        dec     esi
6512
        jmp     .list_check
6520
        jmp     .list_check
6513
.asterisk:
6521
.asterisk:
6514
        cmp     esi, ecx
6522
        cmp     esi, ecx
6515
        jz      .done_succ
6523
        jz      .done_succ
6516
        cmp     byte [esi-1], '?'
6524
        cmp     byte [esi-1], '?'
6517
        jnz     @f
6525
        jnz     @f
6518
        cmp     edi, edx
6526
        cmp     edi, edx
6519
        jz      .done_fail
6527
        jz      .done_fail
6520
        dec     esi
6528
        dec     esi
6521
        jmp     .asterisk
6529
        jmp     .asterisk
6522
@@:
6530
@@:
6523
        cmp     byte [esi-1], ']'
6531
        cmp     byte [esi-1], ']'
6524
        jz      .asterisk_common
6532
        jz      .asterisk_common
6525
; the mask is ...*...
6533
; the mask is ...*...
6526
.asterisk_normal:
6534
.asterisk_normal:
6527
        mov     al, [esi-1]
6535
        mov     al, [esi-1]
6528
@@:
6536
@@:
6529
        cmp     edi, edx
6537
        cmp     edi, edx
6530
        jz      .done_fail
6538
        jz      .done_fail
6531
        call    match_symbol
6539
        call    match_symbol
6532
        jz      @f
6540
        jz      @f
6533
        dec     edi
6541
        dec     edi
6534
        jmp     @b
6542
        jmp     @b
6535
@@:
6543
@@:
6536
        dec     edi
6544
        dec     edi
6537
        dec     esi
6545
        dec     esi
6538
        call    match_single_mask_rev2
6546
        call    match_single_mask_rev2
6539
        jnc     .done_succ
6547
        jnc     .done_succ
6540
        inc     esi
6548
        inc     esi
6541
        jmp     .asterisk_normal
6549
        jmp     .asterisk_normal
6542
.asterisk_common:
6550
.asterisk_common:
6543
        push    edi
6551
        push    edi
6544
@@:
6552
@@:
6545
        call    match_single_mask_rev2
6553
        call    match_single_mask_rev2
6546
        jnc     @f
6554
        jnc     @f
6547
        dec     edi
6555
        dec     edi
6548
        cmp     edi, edx
6556
        cmp     edi, edx
6549
        jae     @b
6557
        jae     @b
6550
        pop     edi
6558
        pop     edi
6551
        jmp     .done_fail
6559
        jmp     .done_fail
6552
@@:
6560
@@:
6553
        pop     edi
6561
        pop     edi
6554
        jmp     .done_succ
6562
        jmp     .done_succ
6555
end if
6563
end if
6556
 
6564
 
6557
;tolower:
6565
;tolower:
6558
;        push    ecx
6566
;        push    ecx
6559
;        movzx   ecx, al
6567
;        movzx   ecx, al
6560
;        mov     al, [tolower_table+ecx]
6568
;        mov     al, [tolower_table+ecx]
6561
;        pop     ecx
6569
;        pop     ecx
6562
;        ret
6570
;        ret
6563
 
6571
 
6564
match_symbol:
6572
match_symbol:
6565
; in: al,[edi]=symbols
6573
; in: al,[edi]=symbols
6566
; out: flags as 'cmp al,[edi]'
6574
; out: flags as 'cmp al,[edi]'
6567
        push    eax ecx
6575
        push    eax ecx
6568
        movzx   ecx, al
6576
        movzx   ecx, al
6569
        mov     al, [tolower_table+ecx]
6577
        mov     al, [tolower_table+ecx]
6570
        movzx   ecx, byte [edi]
6578
        movzx   ecx, byte [edi]
6571
        cmp     al, [tolower_table+ecx]
6579
        cmp     al, [tolower_table+ecx]
6572
        pop     ecx eax
6580
        pop     ecx eax
6573
        ret
6581
        ret
6574
 
6582
 
6575
match_mask_rev_lowercase:
6583
match_mask_rev_lowercase:
6576
; in: esi->name, edx->end of name, edi->mask
6584
; in: esi->name, edx->end of name, edi->mask
6577
; out: CF clear <=> match
6585
; out: CF clear <=> match
6578
        pusha
6586
        pusha
6579
        xchg    esi, edx
6587
        xchg    esi, edx
6580
        xchg    esi, edi
6588
        xchg    esi, edi
6581
.main_cycle:
6589
.main_cycle:
6582
        mov     ecx, esi
6590
        mov     ecx, esi
6583
@@:
6591
@@:
6584
        lodsb
6592
        lodsb
6585
        test    al, al
6593
        test    al, al
6586
        jz      @f
6594
        jz      @f
6587
        cmp     al, ','
6595
        cmp     al, ','
6588
        jz      @f
6596
        jz      @f
6589
        cmp     al, ';'
6597
        cmp     al, ';'
6590
        jz      @f
6598
        jz      @f
6591
        cmp     al, '|'
6599
        cmp     al, '|'
6592
        jnz     @b
6600
        jnz     @b
6593
@@:
6601
@@:
6594
        dec     esi
6602
        dec     esi
6595
        mov     [esi], byte 0
6603
        mov     [esi], byte 0
6596
        call    match_single_mask_rev_lowercase
6604
        call    match_single_mask_rev_lowercase
6597
        mov     [esi], al
6605
        mov     [esi], al
6598
        inc     esi
6606
        inc     esi
6599
        jnc     .found
6607
        jnc     .found
6600
        cmp     al, ','
6608
        cmp     al, ','
6601
        jz      .main_cycle
6609
        jz      .main_cycle
6602
        cmp     al, ';'
6610
        cmp     al, ';'
6603
        jz      .main_cycle
6611
        jz      .main_cycle
6604
.done_fail:
6612
.done_fail:
6605
        stc
6613
        stc
6606
        popa
6614
        popa
6607
        ret
6615
        ret
6608
.found:
6616
.found:
6609
        test    al, al
6617
        test    al, al
6610
        jz      .done_succ
6618
        jz      .done_succ
6611
        cmp     al, '|'
6619
        cmp     al, '|'
6612
        jz      .test_exclude
6620
        jz      .test_exclude
6613
        lodsb
6621
        lodsb
6614
        jmp     .found
6622
        jmp     .found
6615
.done_succ:
6623
.done_succ:
6616
        clc
6624
        clc
6617
        popa
6625
        popa
6618
        ret
6626
        ret
6619
.test_exclude:
6627
.test_exclude:
6620
        mov     ecx, esi
6628
        mov     ecx, esi
6621
@@:
6629
@@:
6622
        lodsb
6630
        lodsb
6623
        test    al, al
6631
        test    al, al
6624
        jz      @f
6632
        jz      @f
6625
        cmp     al, ','
6633
        cmp     al, ','
6626
        jz      @f
6634
        jz      @f
6627
        cmp     al, ';'
6635
        cmp     al, ';'
6628
        jnz     @b
6636
        jnz     @b
6629
@@:
6637
@@:
6630
        dec     esi
6638
        dec     esi
6631
        mov     byte [esi], 0
6639
        mov     byte [esi], 0
6632
        call    match_single_mask_rev_lowercase
6640
        call    match_single_mask_rev_lowercase
6633
        mov     [esi], al
6641
        mov     [esi], al
6634
        inc     esi
6642
        inc     esi
6635
        jnc     .done_fail
6643
        jnc     .done_fail
6636
        test    al, al
6644
        test    al, al
6637
        jz      .done_succ
6645
        jz      .done_succ
6638
        jmp     .test_exclude
6646
        jmp     .test_exclude
6639
 
6647
 
6640
match_single_mask_rev_lowercase:
6648
match_single_mask_rev_lowercase:
6641
; in: esi->end of mask, ecx->start of mask, edi->end of name, edx->start of name
6649
; in: esi->end of mask, ecx->start of mask, edi->end of name, edx->start of name
6642
; out: CF clear <=> match
6650
; out: CF clear <=> match
6643
        push    esi edi eax
6651
        push    esi edi eax
6644
.mask_symbol:
6652
.mask_symbol:
6645
        dec     esi
6653
        dec     esi
6646
        cmp     esi, ecx
6654
        cmp     esi, ecx
6647
        jb      .mask_done
6655
        jb      .mask_done
6648
        mov     al, [esi]
6656
        mov     al, [esi]
6649
        cmp     al, '*'
6657
        cmp     al, '*'
6650
        jz      .asterisk
6658
        jz      .asterisk
6651
        dec     edi
6659
        dec     edi
6652
        cmp     edi, edx
6660
        cmp     edi, edx
6653
        jb      .done_fail
6661
        jb      .done_fail
6654
        cmp     al, '?'
6662
        cmp     al, '?'
6655
        jz      .mask_symbol
6663
        jz      .mask_symbol
6656
        cmp     al, ']'
6664
        cmp     al, ']'
6657
        jz      .list_check
6665
        jz      .list_check
6658
        cmp     al, [edi]
6666
        cmp     al, [edi]
6659
        jz      .mask_symbol
6667
        jz      .mask_symbol
6660
.done_fail:
6668
.done_fail:
6661
        stc
6669
        stc
6662
        pop     eax edi esi
6670
        pop     eax edi esi
6663
        ret
6671
        ret
6664
.mask_done:
6672
.mask_done:
6665
        cmp     edi, edx
6673
        cmp     edi, edx
6666
        jnz     .done_fail
6674
        jnz     .done_fail
6667
.done_succ:
6675
.done_succ:
6668
        clc
6676
        clc
6669
        pop     eax edi esi
6677
        pop     eax edi esi
6670
        ret
6678
        ret
6671
.list_check:
6679
.list_check:
6672
        dec     esi
6680
        dec     esi
6673
        cmp     esi, ecx
6681
        cmp     esi, ecx
6674
        jbe     .done_fail
6682
        jbe     .done_fail
6675
        mov     al, [esi]
6683
        mov     al, [esi]
6676
        cmp     al, '['
6684
        cmp     al, '['
6677
        jz      .done_fail
6685
        jz      .done_fail
6678
        cmp     byte [esi-1], '-'
6686
        cmp     byte [esi-1], '-'
6679
        jz      .range
6687
        jz      .range
6680
        cmp     al, [edi]
6688
        cmp     al, [edi]
6681
        jnz     .list_check
6689
        jnz     .list_check
6682
.listok:
6690
.listok:
6683
@@:
6691
@@:
6684
        dec     esi
6692
        dec     esi
6685
        cmp     esi, ecx
6693
        cmp     esi, ecx
6686
        jb      .done_fail
6694
        jb      .done_fail
6687
        cmp     byte [esi], '['
6695
        cmp     byte [esi], '['
6688
        jnz     @b
6696
        jnz     @b
6689
        jmp     .mask_symbol
6697
        jmp     .mask_symbol
6690
.range:
6698
.range:
6691
        cmp     al, [edi]
6699
        cmp     al, [edi]
6692
        jb      @f
6700
        jb      @f
6693
        mov     al, [esi-2]
6701
        mov     al, [esi-2]
6694
        cmp     al, [edi]
6702
        cmp     al, [edi]
6695
        jbe     .listok
6703
        jbe     .listok
6696
@@:
6704
@@:
6697
        dec     esi
6705
        dec     esi
6698
        dec     esi
6706
        dec     esi
6699
        jmp     .list_check
6707
        jmp     .list_check
6700
.asterisk:
6708
.asterisk:
6701
        cmp     esi, ecx
6709
        cmp     esi, ecx
6702
        jz      .done_succ
6710
        jz      .done_succ
6703
        cmp     byte [esi-1], '?'
6711
        cmp     byte [esi-1], '?'
6704
        jnz     @f
6712
        jnz     @f
6705
        cmp     edi, edx
6713
        cmp     edi, edx
6706
        jz      .done_fail
6714
        jz      .done_fail
6707
        dec     esi
6715
        dec     esi
6708
        dec     edi
6716
        dec     edi
6709
        jmp     .asterisk
6717
        jmp     .asterisk
6710
@@:
6718
@@:
6711
        cmp     byte [esi-1], ']'
6719
        cmp     byte [esi-1], ']'
6712
        jz      .asterisk_common
6720
        jz      .asterisk_common
6713
; the mask is ...*...
6721
; the mask is ...*...
6714
.asterisk_normal:
6722
.asterisk_normal:
6715
        mov     al, [esi-1]
6723
        mov     al, [esi-1]
6716
@@:
6724
@@:
6717
        dec     edi
6725
        dec     edi
6718
        cmp     edi, edx
6726
        cmp     edi, edx
6719
        jb      .done_fail
6727
        jb      .done_fail
6720
        cmp     al, [edi]
6728
        cmp     al, [edi]
6721
        jnz     @b
6729
        jnz     @b
6722
@@:
6730
@@:
6723
        dec     esi
6731
        dec     esi
6724
        call    match_single_mask_rev_lowercase
6732
        call    match_single_mask_rev_lowercase
6725
        jnc     .done_succ
6733
        jnc     .done_succ
6726
        inc     esi
6734
        inc     esi
6727
        jmp     .asterisk_normal
6735
        jmp     .asterisk_normal
6728
.asterisk_common:
6736
.asterisk_common:
6729
        push    edi
6737
        push    edi
6730
@@:
6738
@@:
6731
        call    match_single_mask_rev_lowercase
6739
        call    match_single_mask_rev_lowercase
6732
        jnc     @f
6740
        jnc     @f
6733
        dec     edi
6741
        dec     edi
6734
        cmp     edi, edx
6742
        cmp     edi, edx
6735
        jae     @b
6743
        jae     @b
6736
        pop     edi
6744
        pop     edi
6737
        jmp     .done_fail
6745
        jmp     .done_fail
6738
@@:
6746
@@:
6739
        pop     edi
6747
        pop     edi
6740
        jmp     .done_succ
6748
        jmp     .done_succ
6741
 
6749
 
6742
find_extension:
6750
find_extension:
6743
        lea     esi, [ecx+40]
6751
        lea     esi, [ecx+40]
6744
        push    esi
6752
        push    esi
6745
@@:
6753
@@:
6746
        lodsb
6754
        lodsb
6747
        test    al, al
6755
        test    al, al
6748
        jnz     @b
6756
        jnz     @b
6749
@@:
6757
@@:
6750
        dec     esi
6758
        dec     esi
6751
        cmp     byte [esi], '.'
6759
        cmp     byte [esi], '.'
6752
        jz      .found_ext
6760
        jz      .found_ext
6753
        cmp     esi, [esp]
6761
        cmp     esi, [esp]
6754
        ja      @b
6762
        ja      @b
6755
; empty extension
6763
; empty extension
6756
        pop     esi
6764
        pop     esi
6757
        stc
6765
        stc
6758
        ret
6766
        ret
6759
.found_ext:
6767
.found_ext:
6760
        inc     esi
6768
        inc     esi
6761
        mov     edi, [associations]
6769
        mov     edi, [associations]
6762
        test    edi, edi
6770
        test    edi, edi
6763
        jz      .notfound
6771
        jz      .notfound
6764
.find_loop:
6772
.find_loop:
6765
        push    esi edi
6773
        push    esi edi
6766
        call    strcmpi
6774
        call    strcmpi
6767
        pop     edi esi
6775
        pop     edi esi
6768
        pushf
6776
        pushf
6769
@@:
6777
@@:
6770
        inc     edi
6778
        inc     edi
6771
        cmp     byte [edi-1], 0
6779
        cmp     byte [edi-1], 0
6772
        jnz     @b
6780
        jnz     @b
6773
        popf
6781
        popf
6774
        jz      .found
6782
        jz      .found
6775
@@:
6783
@@:
6776
        inc     edi
6784
        inc     edi
6777
        cmp     byte [edi-1], 0
6785
        cmp     byte [edi-1], 0
6778
        jnz     @b
6786
        jnz     @b
6779
        cmp     byte [edi], 0
6787
        cmp     byte [edi], 0
6780
        jnz     .find_loop
6788
        jnz     .find_loop
6781
.notfound:
6789
.notfound:
6782
; unknown extension
6790
; unknown extension
6783
        stc
6791
        stc
6784
.found:
6792
.found:
6785
        pop     esi
6793
        pop     esi
6786
        ret
6794
        ret
6787
 
6795
 
6788
header  db      'Kolibri Far ',version,0
6796
header  db      'Kolibri Far ',version,0
6789
 
6797
 
6790
nomem_draw      db      'No memory for redraw.',0
6798
nomem_draw      db      'No memory for redraw.',0
6791
.size = $ - nomem_draw
6799
.size = $ - nomem_draw
6792
 
6800
 
6793
def_left_dir    db      '/rd/1',0
6801
def_left_dir    db      '/rd/1',0
6794
def_right_dir   db      '/hd0/1',0
6802
def_right_dir   db      '/hd0/1',0
6795
 
6803
 
6796
bSilentFolderMode db    1
6804
bSilentFolderMode db    1
6797
 
6805
 
6798
bQuickSearchMode db     0
6806
bQuickSearchMode db     0
6799
bDisplayQuickSearch db  0
6807
bDisplayQuickSearch db  0
6800
 
6808
 
6801
if lang eq ru
6809
if lang eq ru
6802
aFolder         db      ' ¯ª '
6810
aFolder         db      ' ¯ª '
6803
.size = $-aFolder
6811
.size = $-aFolder
6804
aUp             db      '‚¢¥àå'
6812
aUp             db      '‚¢¥àå'
6805
.size = $-aUp
6813
.size = $-aUp
6806
aDrive          db      '„¨áª',0
6814
aDrive          db      '„¨áª',0
6807
aScreens        db      'ªà ­ë',0
6815
aScreens        db      'ªà ­ë',0
6808
else
6816
else
6809
aFolder         db      'Folder'
6817
aFolder         db      'Folder'
6810
.size = $-aFolder
6818
.size = $-aFolder
6811
aUp             db      'Up'
6819
aUp             db      'Up'
6812
.size = $-aUp
6820
.size = $-aUp
6813
aDrive          db      'Drive',0
6821
aDrive          db      'Drive',0
6814
aScreens        db      'Screens',0
6822
aScreens        db      'Screens',0
6815
end if
6823
end if
6816
 
6824
 
6817
align 4
6825
align 4
6818
_10d dd 10
6826
_10d dd 10
6819
_100d dd 100
6827
_100d dd 100
6820
muldiv10 dd 429496729
6828
muldiv10 dd 429496729
6821
_10 db 10
6829
_10 db 10
6822
_100 db 100
6830
_100 db 100
6823
 
6831
 
6824
fpu_cw  dw      000011100111111b
6832
fpu_cw  dw      000011100111111b
6825
 
6833
 
6826
keybar_panels:
6834
keybar_panels:
6827
if lang eq ru
6835
if lang eq ru
6828
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
6836
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
6829
        db      '®¬®éì'
6837
        db      '®¬®éì'
6830
        db      '®«ì§Œ'
6838
        db      '®«ì§Œ'
6831
        db      'à®á¬ '
6839
        db      'à®á¬ '
6832
        db      '¥¤ ªâ'
6840
        db      '¥¤ ªâ'
6833
        db      'Š®¯¨à '
6841
        db      'Š®¯¨à '
6834
        db      '¥à¥­ '
6842
        db      '¥à¥­ '
6835
        db      ' ¯ª  '
6843
        db      ' ¯ª  '
6836
        db      '“¤ «¥­'
6844
        db      '“¤ «¥­'
6837
        db      'Š®­äŒ­'
6845
        db      'Š®­äŒ­'
6838
        db      '‚ë室 '
6846
        db      '‚ë室 '
6839
        db      'Œ®¤ã«¨'
6847
        db      'Œ®¤ã«¨'
6840
        db      'ªà ­ë'
6848
        db      'ªà ­ë'
6841
; Shift
6849
; Shift
6842
        db      '„®¡ ¢«'
6850
        db      '„®¡ ¢«'
6843
        db      ' á¯ ª'
6851
        db      ' á¯ ª'
6844
        db      '€à劮¬'
6852
        db      '€à劮¬'
6845
        db      '¥¤ ª.'
6853
        db      '¥¤ ª.'
6846
        db      'Š®¯¨à '
6854
        db      'Š®¯¨à '
6847
        db      '¥à¥¨¬'
6855
        db      '¥à¥¨¬'
6848
        db      '      '
6856
        db      '      '
6849
        db      '“¤ «¥­'
6857
        db      '“¤ «¥­'
6850
        db      '‘®åà ­'
6858
        db      '‘®åà ­'
6851
        db      '®á«¤­'
6859
        db      '®á«¤­'
6852
        db      'ƒà㯯ë'
6860
        db      'ƒà㯯ë'
6853
        db      '‚ë¡à ­'
6861
        db      '‚ë¡à ­'
6854
; Ctrl
6862
; Ctrl
6855
        db      '‹¥¢ ï '
6863
        db      '‹¥¢ ï '
6856
        db      'à ¢ ï'
6864
        db      'à ¢ ï'
6857
        db      'ˆ¬ï   '
6865
        db      'ˆ¬ï   '
6858
        db      ' áè¨à'
6866
        db      ' áè¨à'
6859
        db      'Œ®¤¨ä '
6867
        db      'Œ®¤¨ä '
6860
        db      ' §¬¥à'
6868
        db      ' §¬¥à'
6861
        db      '¥á®àâ'
6869
        db      '¥á®àâ'
6862
        db      '‘®§¤ ­'
6870
        db      '‘®§¤ ­'
6863
        db      '„®áâã¯'
6871
        db      '„®áâã¯'
6864
        db      'Ž¯¨á ­'
6872
        db      'Ž¯¨á ­'
6865
        db      '‚« ¤¥«'
6873
        db      '‚« ¤¥«'
6866
        db      '‘®àâ  '
6874
        db      '‘®àâ  '
6867
; Ctrl+Shift
6875
; Ctrl+Shift
6868
        db      '      '
6876
        db      '      '
6869
        db      '      '
6877
        db      '      '
6870
        db      'à®á¬ '
6878
        db      'à®á¬ '
6871
        db      '¥¤ ªâ'
6879
        db      '¥¤ ªâ'
6872
        db      '      '
6880
        db      '      '
6873
        db      '      '
6881
        db      '      '
6874
        db      '      '
6882
        db      '      '
6875
        db      '      '
6883
        db      '      '
6876
        db      '      '
6884
        db      '      '
6877
        db      '      '
6885
        db      '      '
6878
        db      '      '
6886
        db      '      '
6879
        db      '      '
6887
        db      '      '
6880
; Alt
6888
; Alt
6881
        db      '‹¥¢ ï '
6889
        db      '‹¥¢ ï '
6882
        db      'à ¢ ï'
6890
        db      'à ¢ ï'
6883
        db      '‘¬®âà.'
6891
        db      '‘¬®âà.'
6884
        db      '      '
6892
        db      '      '
6885
        db      '¥ç âì'
6893
        db      '¥ç âì'
6886
        db      '‘¢ï§ì '
6894
        db      '‘¢ï§ì '
6887
        db      'ˆáª âì'
6895
        db      'ˆáª âì'
6888
        db      'ˆáâ®à '
6896
        db      'ˆáâ®à '
6889
        db      '‚¨¤¥® '
6897
        db      '‚¨¤¥® '
6890
        db      '„¥à¥¢®'
6898
        db      '„¥à¥¢®'
6891
        db      'ˆáâà '
6899
        db      'ˆáâà '
6892
        db      'ˆá⏠¯'
6900
        db      'ˆá⏠¯'
6893
; Alt+Shift
6901
; Alt+Shift
6894
        db      '      '
6902
        db      '      '
6895
        db      '      '
6903
        db      '      '
6896
        db      '      '
6904
        db      '      '
6897
        db      '      '
6905
        db      '      '
6898
        db      '      '
6906
        db      '      '
6899
        db      '      '
6907
        db      '      '
6900
        db      '      '
6908
        db      '      '
6901
        db      '      '
6909
        db      '      '
6902
        db      'Š®­ä«'
6910
        db      'Š®­ä«'
6903
        db      '      '
6911
        db      '      '
6904
        db      '      '
6912
        db      '      '
6905
        db      '      '
6913
        db      '      '
6906
; Alt+Ctrl
6914
; Alt+Ctrl
6907
times 12 db     '      '
6915
times 12 db     '      '
6908
; Alt+Ctrl+Shift
6916
; Alt+Ctrl+Shift
6909
times 12 db     '      '
6917
times 12 db     '      '
6910
else
6918
else
6911
; No modificators
6919
; No modificators
6912
        db      'Help  '
6920
        db      'Help  '
6913
        db      'UserMn'
6921
        db      'UserMn'
6914
        db      'View  '
6922
        db      'View  '
6915
        db      'Edit  '
6923
        db      'Edit  '
6916
        db      'Copy  '
6924
        db      'Copy  '
6917
        db      'RenMov'
6925
        db      'RenMov'
6918
        db      'MkFold'
6926
        db      'MkFold'
6919
        db      'Delete'
6927
        db      'Delete'
6920
        db      'ConfMn'
6928
        db      'ConfMn'
6921
        db      'Quit  '
6929
        db      'Quit  '
6922
        db      'Plugin'
6930
        db      'Plugin'
6923
        db      'Screen'
6931
        db      'Screen'
6924
; Shift
6932
; Shift
6925
        db      'Add   '
6933
        db      'Add   '
6926
        db      'Extrct'
6934
        db      'Extrct'
6927
        db      'ArcCmd'
6935
        db      'ArcCmd'
6928
        db      'Edit..'
6936
        db      'Edit..'
6929
        db      'Copy  '
6937
        db      'Copy  '
6930
        db      'Rename'
6938
        db      'Rename'
6931
        db      '      '
6939
        db      '      '
6932
        db      'Delete'
6940
        db      'Delete'
6933
        db      'Save  '
6941
        db      'Save  '
6934
        db      'Last  '
6942
        db      'Last  '
6935
        db      'Group '
6943
        db      'Group '
6936
        db      'SelUp '
6944
        db      'SelUp '
6937
; Ctrl
6945
; Ctrl
6938
        db      'Left  '
6946
        db      'Left  '
6939
        db      'Right '
6947
        db      'Right '
6940
        db      'Name  '
6948
        db      'Name  '
6941
        db      'Extens'
6949
        db      'Extens'
6942
        db      'Modifn'
6950
        db      'Modifn'
6943
        db      'Size  '
6951
        db      'Size  '
6944
        db      'Unsort'
6952
        db      'Unsort'
6945
        db      'Creatn'
6953
        db      'Creatn'
6946
        db      'Access'
6954
        db      'Access'
6947
        db      'Descr '
6955
        db      'Descr '
6948
        db      'Owner '
6956
        db      'Owner '
6949
        db      'Sort  '
6957
        db      'Sort  '
6950
; Ctrl+Shift
6958
; Ctrl+Shift
6951
        db      '      '
6959
        db      '      '
6952
        db      '      '
6960
        db      '      '
6953
        db      'View  '
6961
        db      'View  '
6954
        db      'Edit  '
6962
        db      'Edit  '
6955
        db      '      '
6963
        db      '      '
6956
        db      '      '
6964
        db      '      '
6957
        db      '      '
6965
        db      '      '
6958
        db      '      '
6966
        db      '      '
6959
        db      '      '
6967
        db      '      '
6960
        db      '      '
6968
        db      '      '
6961
        db      '      '
6969
        db      '      '
6962
        db      '      '
6970
        db      '      '
6963
; Alt
6971
; Alt
6964
        db      'Left  '
6972
        db      'Left  '
6965
        db      'Right '
6973
        db      'Right '
6966
        db      'View..'
6974
        db      'View..'
6967
        db      '      '
6975
        db      '      '
6968
        db      'Print '
6976
        db      'Print '
6969
        db      'MkLink'
6977
        db      'MkLink'
6970
        db      'Find  '
6978
        db      'Find  '
6971
        db      'Histry'
6979
        db      'Histry'
6972
        db      'Video '
6980
        db      'Video '
6973
        db      'Tree  '
6981
        db      'Tree  '
6974
        db      'ViewHs'
6982
        db      'ViewHs'
6975
        db      'FoldHs'
6983
        db      'FoldHs'
6976
; Alt+Shift
6984
; Alt+Shift
6977
        db      '      '
6985
        db      '      '
6978
        db      '      '
6986
        db      '      '
6979
        db      '      '
6987
        db      '      '
6980
        db      '      '
6988
        db      '      '
6981
        db      '      '
6989
        db      '      '
6982
        db      '      '
6990
        db      '      '
6983
        db      '      '
6991
        db      '      '
6984
        db      '      '
6992
        db      '      '
6985
        db      'ConfPl'
6993
        db      'ConfPl'
6986
        db      '      '
6994
        db      '      '
6987
        db      '      '
6995
        db      '      '
6988
        db      '      '
6996
        db      '      '
6989
; Alt+Ctrl
6997
; Alt+Ctrl
6990
times 12 db     '      '
6998
times 12 db     '      '
6991
; Alt+Ctrl+Shift
6999
; Alt+Ctrl+Shift
6992
times 12 db     '      '
7000
times 12 db     '      '
6993
end if
7001
end if
6994
 
7002
 
6995
keybar_viewer:
7003
keybar_viewer:
6996
if lang eq ru
7004
if lang eq ru
6997
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
7005
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
6998
        db      '®¬®éì'
7006
        db      '®¬®éì'
6999
        db      ' §¢¥à'
7007
        db      ' §¢¥à'
7000
        db      '‚ë室 '
7008
        db      '‚ë室 '
7001
        db      'Š®¤   '
7009
        db      'Š®¤   '
7002
        db      '      '
7010
        db      '      '
7003
        db      '¥¤ ªâ'
7011
        db      '¥¤ ªâ'
7004
        db      '®¨áª '
7012
        db      '®¨áª '
7005
keybar_cp:
7013
keybar_cp:
7006
        db      'cp1251'
7014
        db      'cp1251'
7007
        db      '      '
7015
        db      '      '
7008
        db      '‚ë室 '
7016
        db      '‚ë室 '
7009
        db      'Œ®¤ã«¨'
7017
        db      'Œ®¤ã«¨'
7010
        db      'ªà ­ë'
7018
        db      'ªà ­ë'
7011
; Shift
7019
; Shift
7012
        db      '      '
7020
        db      '      '
7013
        db      '‘«®¢  '
7021
        db      '‘«®¢  '
7014
        db      '      '
7022
        db      '      '
7015
        db      '      '
7023
        db      '      '
7016
        db      '      '
7024
        db      '      '
7017
        db      '      '
7025
        db      '      '
7018
        db      '„ «ìè¥'
7026
        db      '„ «ìè¥'
7019
        db      '’ ¡«¨æ'
7027
        db      '’ ¡«¨æ'
7020
        db      '      '
7028
        db      '      '
7021
        db      '      '
7029
        db      '      '
7022
        db      '      '
7030
        db      '      '
7023
        db      '      '
7031
        db      '      '
7024
; Ctrl
7032
; Ctrl
7025
        db      '      '
7033
        db      '      '
7026
        db      '      '
7034
        db      '      '
7027
        db      '      '
7035
        db      '      '
7028
        db      '      '
7036
        db      '      '
7029
        db      '      '
7037
        db      '      '
7030
        db      '      '
7038
        db      '      '
7031
        db      '      '
7039
        db      '      '
7032
        db      '      '
7040
        db      '      '
7033
        db      '      '
7041
        db      '      '
7034
        db      '®§¨æ '
7042
        db      '®§¨æ '
7035
        db      '      '
7043
        db      '      '
7036
        db      '      '
7044
        db      '      '
7037
; Ctrl+Shift
7045
; Ctrl+Shift
7038
        db      '      '
7046
        db      '      '
7039
        db      '      '
7047
        db      '      '
7040
        db      '      '
7048
        db      '      '
7041
        db      '      '
7049
        db      '      '
7042
        db      '      '
7050
        db      '      '
7043
        db      '      '
7051
        db      '      '
7044
        db      '      '
7052
        db      '      '
7045
        db      '      '
7053
        db      '      '
7046
        db      '      '
7054
        db      '      '
7047
        db      '      '
7055
        db      '      '
7048
        db      '      '
7056
        db      '      '
7049
        db      '      '
7057
        db      '      '
7050
; Alt
7058
; Alt
7051
        db      '      '
7059
        db      '      '
7052
        db      '      '
7060
        db      '      '
7053
        db      '      '
7061
        db      '      '
7054
        db      '      '
7062
        db      '      '
7055
        db      '¥ç âì'
7063
        db      '¥ç âì'
7056
        db      '      '
7064
        db      '      '
7057
        db      ' § ¤ '
7065
        db      ' § ¤ '
7058
        db      '¥à¥©â'
7066
        db      '¥à¥©â'
7059
        db      '‚¨¤¥® '
7067
        db      '‚¨¤¥® '
7060
        db      '      '
7068
        db      '      '
7061
        db      'ˆáâà '
7069
        db      'ˆáâà '
7062
        db      '      '
7070
        db      '      '
7063
; Alt+Shift
7071
; Alt+Shift
7064
        db      '      '
7072
        db      '      '
7065
        db      '      '
7073
        db      '      '
7066
        db      '      '
7074
        db      '      '
7067
        db      '      '
7075
        db      '      '
7068
        db      '      '
7076
        db      '      '
7069
        db      '      '
7077
        db      '      '
7070
        db      '      '
7078
        db      '      '
7071
        db      '      '
7079
        db      '      '
7072
        db      'Š®­ä¨£'
7080
        db      'Š®­ä¨£'
7073
        db      '      '
7081
        db      '      '
7074
        db      '      '
7082
        db      '      '
7075
        db      '      '
7083
        db      '      '
7076
; Alt+Ctrl
7084
; Alt+Ctrl
7077
times 12 db     '      '
7085
times 12 db     '      '
7078
; Alt+Ctrl+Shift
7086
; Alt+Ctrl+Shift
7079
times 12 db     '      '
7087
times 12 db     '      '
7080
else
7088
else
7081
; No modificators
7089
; No modificators
7082
        db      'Help  '
7090
        db      'Help  '
7083
        db      'Unwrap'
7091
        db      'Unwrap'
7084
        db      'Quit  '
7092
        db      'Quit  '
7085
        db      'Hex   '
7093
        db      'Hex   '
7086
        db      '      '
7094
        db      '      '
7087
        db      'Edit  '
7095
        db      'Edit  '
7088
        db      'Search'
7096
        db      'Search'
7089
keybar_cp:
7097
keybar_cp:
7090
        db      'cp1251'
7098
        db      'cp1251'
7091
        db      '      '
7099
        db      '      '
7092
        db      'Quit  '
7100
        db      'Quit  '
7093
        db      'Plugin'
7101
        db      'Plugin'
7094
        db      'Screen'
7102
        db      'Screen'
7095
; Shift
7103
; Shift
7096
        db      '      '
7104
        db      '      '
7097
        db      'WWrap '
7105
        db      'WWrap '
7098
        db      '      '
7106
        db      '      '
7099
        db      '      '
7107
        db      '      '
7100
        db      '      '
7108
        db      '      '
7101
        db      '      '
7109
        db      '      '
7102
        db      'Next  '
7110
        db      'Next  '
7103
        db      'Table '
7111
        db      'Table '
7104
        db      '      '
7112
        db      '      '
7105
        db      '      '
7113
        db      '      '
7106
        db      '      '
7114
        db      '      '
7107
        db      '      '
7115
        db      '      '
7108
; Ctrl
7116
; Ctrl
7109
        db      '      '
7117
        db      '      '
7110
        db      '      '
7118
        db      '      '
7111
        db      '      '
7119
        db      '      '
7112
        db      '      '
7120
        db      '      '
7113
        db      '      '
7121
        db      '      '
7114
        db      '      '
7122
        db      '      '
7115
        db      '      '
7123
        db      '      '
7116
        db      '      '
7124
        db      '      '
7117
        db      '      '
7125
        db      '      '
7118
        db      'GoFile'
7126
        db      'GoFile'
7119
        db      '      '
7127
        db      '      '
7120
        db      '      '
7128
        db      '      '
7121
; Ctrl+Shift
7129
; Ctrl+Shift
7122
        db      '      '
7130
        db      '      '
7123
        db      '      '
7131
        db      '      '
7124
        db      '      '
7132
        db      '      '
7125
        db      '      '
7133
        db      '      '
7126
        db      '      '
7134
        db      '      '
7127
        db      '      '
7135
        db      '      '
7128
        db      '      '
7136
        db      '      '
7129
        db      '      '
7137
        db      '      '
7130
        db      '      '
7138
        db      '      '
7131
        db      '      '
7139
        db      '      '
7132
        db      '      '
7140
        db      '      '
7133
        db      '      '
7141
        db      '      '
7134
; Alt
7142
; Alt
7135
        db      '      '
7143
        db      '      '
7136
        db      '      '
7144
        db      '      '
7137
        db      '      '
7145
        db      '      '
7138
        db      '      '
7146
        db      '      '
7139
        db      'Print '
7147
        db      'Print '
7140
        db      '      '
7148
        db      '      '
7141
        db      'Prev  '
7149
        db      'Prev  '
7142
        db      'Goto  '
7150
        db      'Goto  '
7143
        db      'Video '
7151
        db      'Video '
7144
        db      '      '
7152
        db      '      '
7145
        db      'ViewHs'
7153
        db      'ViewHs'
7146
        db      '      '
7154
        db      '      '
7147
; Alt+Shift
7155
; Alt+Shift
7148
        db      '      '
7156
        db      '      '
7149
        db      '      '
7157
        db      '      '
7150
        db      '      '
7158
        db      '      '
7151
        db      '      '
7159
        db      '      '
7152
        db      '      '
7160
        db      '      '
7153
        db      '      '
7161
        db      '      '
7154
        db      '      '
7162
        db      '      '
7155
        db      '      '
7163
        db      '      '
7156
        db      'Config'
7164
        db      'Config'
7157
        db      '      '
7165
        db      '      '
7158
        db      '      '
7166
        db      '      '
7159
        db      '      '
7167
        db      '      '
7160
; Alt+Ctrl
7168
; Alt+Ctrl
7161
times 12 db     '      '
7169
times 12 db     '      '
7162
; Alt+Ctrl+Shift
7170
; Alt+Ctrl+Shift
7163
times 12 db     '      '
7171
times 12 db     '      '
7164
end if
7172
end if
7165
 
7173
 
7166
keybar_editor:
7174
keybar_editor:
7167
if lang eq ru
7175
if lang eq ru
7168
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
7176
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
7169
        db      '®¬®éì'
7177
        db      '®¬®éì'
7170
        db      '‘®åà ­'
7178
        db      '‘®åà ­'
7171
        db      '      '
7179
        db      '      '
7172
        db      '      '
7180
        db      '      '
7173
        db      '      '
7181
        db      '      '
7174
        db      'à®á¬ '
7182
        db      'à®á¬ '
7175
        db      '®¨áª '
7183
        db      '®¨áª '
7176
keybar_cp2:
7184
keybar_cp2:
7177
        db      'cp1251'
7185
        db      'cp1251'
7178
        db      '      '
7186
        db      '      '
7179
        db      '‚ë室 '
7187
        db      '‚ë室 '
7180
        db      'Œ®¤ã«¨'
7188
        db      'Œ®¤ã«¨'
7181
        db      'ªà ­ë'
7189
        db      'ªà ­ë'
7182
; Shift
7190
; Shift
7183
        db      '      '
7191
        db      '      '
7184
        db      '‘®åà.¢'
7192
        db      '‘®åà.¢'
7185
        db      '      '
7193
        db      '      '
7186
        db      '¥¤ ª.'
7194
        db      '¥¤ ª.'
7187
        db      '      '
7195
        db      '      '
7188
        db      '      '
7196
        db      '      '
7189
        db      '„ «ìè¥'
7197
        db      '„ «ìè¥'
7190
        db      '’ ¡«¨æ'
7198
        db      '’ ¡«¨æ'
7191
        db      '      '
7199
        db      '      '
7192
        db      '‘åà‚ëå'
7200
        db      '‘åà‚ëå'
7193
        db      '      '
7201
        db      '      '
7194
        db      '      '
7202
        db      '      '
7195
; Ctrl
7203
; Ctrl
7196
        db      '      '
7204
        db      '      '
7197
        db      '      '
7205
        db      '      '
7198
        db      '      '
7206
        db      '      '
7199
        db      '      '
7207
        db      '      '
7200
        db      '      '
7208
        db      '      '
7201
        db      '      '
7209
        db      '      '
7202
        db      '‡ ¬¥­ '
7210
        db      '‡ ¬¥­ '
7203
        db      '      '
7211
        db      '      '
7204
        db      '      '
7212
        db      '      '
7205
        db      '®§¨æ '
7213
        db      '®§¨æ '
7206
        db      '      '
7214
        db      '      '
7207
        db      '      '
7215
        db      '      '
7208
; Ctrl+Shift
7216
; Ctrl+Shift
7209
        db      '      '
7217
        db      '      '
7210
        db      '      '
7218
        db      '      '
7211
        db      '      '
7219
        db      '      '
7212
        db      '      '
7220
        db      '      '
7213
        db      '      '
7221
        db      '      '
7214
        db      '      '
7222
        db      '      '
7215
        db      '      '
7223
        db      '      '
7216
        db      '      '
7224
        db      '      '
7217
        db      '      '
7225
        db      '      '
7218
        db      '      '
7226
        db      '      '
7219
        db      '      '
7227
        db      '      '
7220
        db      '      '
7228
        db      '      '
7221
; Alt
7229
; Alt
7222
        db      '      '
7230
        db      '      '
7223
        db      '      '
7231
        db      '      '
7224
        db      '      '
7232
        db      '      '
7225
        db      '      '
7233
        db      '      '
7226
        db      '¥ç âì'
7234
        db      '¥ç âì'
7227
        db      '      '
7235
        db      '      '
7228
        db      '      '
7236
        db      '      '
7229
        db      '‘âப '
7237
        db      '‘âப '
7230
        db      '‚¨¤¥® '
7238
        db      '‚¨¤¥® '
7231
        db      '      '
7239
        db      '      '
7232
        db      'ˆáâà '
7240
        db      'ˆáâà '
7233
        db      '      '
7241
        db      '      '
7234
; Alt+Shift
7242
; Alt+Shift
7235
        db      '      '
7243
        db      '      '
7236
        db      '      '
7244
        db      '      '
7237
        db      '      '
7245
        db      '      '
7238
        db      '      '
7246
        db      '      '
7239
        db      '      '
7247
        db      '      '
7240
        db      '      '
7248
        db      '      '
7241
        db      '      '
7249
        db      '      '
7242
        db      '      '
7250
        db      '      '
7243
        db      'Š®­ä¨£'
7251
        db      'Š®­ä¨£'
7244
        db      '      '
7252
        db      '      '
7245
        db      '      '
7253
        db      '      '
7246
        db      '      '
7254
        db      '      '
7247
; Alt+Ctrl
7255
; Alt+Ctrl
7248
times 12 db     '      '
7256
times 12 db     '      '
7249
; Alt+Ctrl+Shift
7257
; Alt+Ctrl+Shift
7250
times 12 db     '      '
7258
times 12 db     '      '
7251
else
7259
else
7252
; No modificators
7260
; No modificators
7253
        db      'Help  '
7261
        db      'Help  '
7254
        db      'Save  '
7262
        db      'Save  '
7255
        db      '      '
7263
        db      '      '
7256
        db      '      '
7264
        db      '      '
7257
        db      '      '
7265
        db      '      '
7258
        db      'View  '
7266
        db      'View  '
7259
        db      'Search'
7267
        db      'Search'
7260
keybar_cp2:
7268
keybar_cp2:
7261
        db      'cp1251'
7269
        db      'cp1251'
7262
        db      '      '
7270
        db      '      '
7263
        db      'Quit  '
7271
        db      'Quit  '
7264
        db      'Plugin'
7272
        db      'Plugin'
7265
        db      'Screen'
7273
        db      'Screen'
7266
; Shift
7274
; Shift
7267
        db      '      '
7275
        db      '      '
7268
        db      'SaveAs'
7276
        db      'SaveAs'
7269
        db      '      '
7277
        db      '      '
7270
        db      'Edit..'
7278
        db      'Edit..'
7271
        db      '      '
7279
        db      '      '
7272
        db      '      '
7280
        db      '      '
7273
        db      'Next  '
7281
        db      'Next  '
7274
        db      'Table '
7282
        db      'Table '
7275
        db      '      '
7283
        db      '      '
7276
        db      'SaveQ '
7284
        db      'SaveQ '
7277
        db      '      '
7285
        db      '      '
7278
        db      '      '
7286
        db      '      '
7279
; Ctrl
7287
; Ctrl
7280
        db      '      '
7288
        db      '      '
7281
        db      '      '
7289
        db      '      '
7282
        db      '      '
7290
        db      '      '
7283
        db      '      '
7291
        db      '      '
7284
        db      '      '
7292
        db      '      '
7285
        db      '      '
7293
        db      '      '
7286
        db      'Replac'
7294
        db      'Replac'
7287
        db      '      '
7295
        db      '      '
7288
        db      '      '
7296
        db      '      '
7289
        db      'GoFile'
7297
        db      'GoFile'
7290
        db      '      '
7298
        db      '      '
7291
        db      '      '
7299
        db      '      '
7292
; Ctrl+Shift
7300
; Ctrl+Shift
7293
        db      '      '
7301
        db      '      '
7294
        db      '      '
7302
        db      '      '
7295
        db      '      '
7303
        db      '      '
7296
        db      '      '
7304
        db      '      '
7297
        db      '      '
7305
        db      '      '
7298
        db      '      '
7306
        db      '      '
7299
        db      '      '
7307
        db      '      '
7300
        db      '      '
7308
        db      '      '
7301
        db      '      '
7309
        db      '      '
7302
        db      '      '
7310
        db      '      '
7303
        db      '      '
7311
        db      '      '
7304
        db      '      '
7312
        db      '      '
7305
; Alt
7313
; Alt
7306
        db      '      '
7314
        db      '      '
7307
        db      '      '
7315
        db      '      '
7308
        db      '      '
7316
        db      '      '
7309
        db      '      '
7317
        db      '      '
7310
        db      'Print '
7318
        db      'Print '
7311
        db      '      '
7319
        db      '      '
7312
        db      '      '
7320
        db      '      '
7313
        db      'Goto  '
7321
        db      'Goto  '
7314
        db      'Video '
7322
        db      'Video '
7315
        db      '      '
7323
        db      '      '
7316
        db      'ViewHs'
7324
        db      'ViewHs'
7317
        db      '      '
7325
        db      '      '
7318
; Alt+Shift
7326
; Alt+Shift
7319
        db      '      '
7327
        db      '      '
7320
        db      '      '
7328
        db      '      '
7321
        db      '      '
7329
        db      '      '
7322
        db      '      '
7330
        db      '      '
7323
        db      '      '
7331
        db      '      '
7324
        db      '      '
7332
        db      '      '
7325
        db      '      '
7333
        db      '      '
7326
        db      '      '
7334
        db      '      '
7327
        db      'Config'
7335
        db      'Config'
7328
        db      '      '
7336
        db      '      '
7329
        db      '      '
7337
        db      '      '
7330
        db      '      '
7338
        db      '      '
7331
; Alt+Ctrl
7339
; Alt+Ctrl
7332
times 12 db     '      '
7340
times 12 db     '      '
7333
; Alt+Ctrl+Shift
7341
; Alt+Ctrl+Shift
7334
times 12 db     '      '
7342
times 12 db     '      '
7335
end if
7343
end if
7336
 
7344
 
7337
        align   4
7345
        align   4
7338
cur_width       dd      80
7346
cur_width       dd      80
7339
cur_height      dd      25
7347
cur_height      dd      25
7340
saved_width     dd      -1
7348
saved_width     dd      -1
7341
saved_height    dd      -1
7349
saved_height    dd      -1
7342
fill_width      dd      0 ;®áâ â®ª ®â ¤¥«¥­¨ï è¨à¨­ë ®ª­  ­  è¨à¨­ã èà¨äâ 
7350
fill_width      dd      0 ;®áâ â®ª ®â ¤¥«¥­¨ï è¨à¨­ë ®ª­  ­  è¨à¨­ã èà¨äâ 
7343
fill_height     dd      0
7351
fill_height     dd      0
7344
max_width = 256
7352
max_width = 256
7345
max_height = 256
7353
max_height = 256
7346
console_data_ptr dd     0
7354
console_data_ptr dd     0
7347
 
7355
 
7348
cursor_x        dd      -1
7356
cursor_x        dd      -1
7349
cursor_y        dd      -1
7357
cursor_y        dd      -1
7350
cursor_size     dd      cursor_normal_size
7358
cursor_size     dd      cursor_normal_size
7351
cur_cursor_pos  dd      -1
7359
cur_cursor_pos  dd      -1
7352
old_cursor_pos  dd      -1
7360
old_cursor_pos  dd      -1
7353
 
7361
 
7354
idle_interval   dd      -1
7362
idle_interval   dd      -1
7355
 
7363
 
7356
active_panel    dd      panel1
7364
active_panel    dd      panel1
7357
 
7365
 
7358
associations    dd      0
7366
associations    dd      0
7359
associations_size dd    1               ; terminating zero
7367
associations_size dd    1               ; terminating zero
7360
associations_allocated dd 0x1000        ; start with one page
7368
associations_allocated dd 0x1000        ; start with one page
7361
 
7369
 
7362
console_colors  dd      0x000000, 0x000080, 0x008000, 0x008080
7370
console_colors  dd      0x000000, 0x000080, 0x008000, 0x008080
7363
                dd      0x800000, 0x800080, 0x808000, 0xC0C0C0
7371
                dd      0x800000, 0x800080, 0x808000, 0xC0C0C0
7364
                dd      0x808080, 0x0000FF, 0x00FF00, 0x00FFFF
7372
                dd      0x808080, 0x0000FF, 0x00FF00, 0x00FFFF
7365
                dd      0xFF0000, 0xFF00FF, 0xFFFF00, 0xFFFFFF
7373
                dd      0xFF0000, 0xFF00FF, 0xFFFF00, 0xFFFFFF
7366
 
7374
 
7367
compare_fns     dd      compare_name
7375
compare_fns     dd      compare_name
7368
                dd      compare_name_rev
7376
                dd      compare_name_rev
7369
                dd      compare_ext
7377
                dd      compare_ext
7370
                dd      compare_ext_rev
7378
                dd      compare_ext_rev
7371
                dd      compare_modified
7379
                dd      compare_modified
7372
                dd      compare_modified_rev
7380
                dd      compare_modified_rev
7373
                dd      compare_size
7381
                dd      compare_size
7374
                dd      compare_size_rev
7382
                dd      compare_size_rev
7375
                dd      compare_unordered
7383
                dd      compare_unordered
7376
                dd      compare_unordered_rev
7384
                dd      compare_unordered_rev
7377
                dd      compare_created
7385
                dd      compare_created
7378
                dd      compare_created_rev
7386
                dd      compare_created_rev
7379
                dd      compare_accessed
7387
                dd      compare_accessed
7380
                dd      compare_accessed_rev
7388
                dd      compare_accessed_rev
7381
 
7389
 
7382
ctrlkey_tests   dd      ctrlkey_test0
7390
ctrlkey_tests   dd      ctrlkey_test0
7383
                dd      ctrlkey_test1
7391
                dd      ctrlkey_test1
7384
                dd      ctrlkey_test2
7392
                dd      ctrlkey_test2
7385
                dd      ctrlkey_test3
7393
                dd      ctrlkey_test3
7386
                dd      ctrlkey_test4
7394
                dd      ctrlkey_test4
7387
ctrlkey_tests_num = 5
7395
ctrlkey_tests_num = 5
7388
 
7396
 
7389
virtual at 0
7397
virtual at 0
7390
screen_vtable:
7398
screen_vtable:
7391
        .OnRedraw       dd      ?
7399
        .OnRedraw       dd      ?
7392
        .OnActivate     dd      ?
7400
        .OnActivate     dd      ?
7393
        .OnIdle         dd      ?
7401
        .OnIdle         dd      ?
7394
        .OnKey          dd      ?
7402
        .OnKey          dd      ?
7395
        .keybar         dd      ?
7403
        .keybar         dd      ?
7396
        .getname        dd      ?
7404
        .getname        dd      ?
7397
        .OnExit         dd      ?
7405
        .OnExit         dd      ?
7398
        .IsHandleUsed   dd      ?
7406
        .IsHandleUsed   dd      ?
7399
end virtual
7407
end virtual
7400
 
7408
 
7401
panels_vtable:
7409
panels_vtable:
7402
        dd      panels_OnRedraw
7410
        dd      panels_OnRedraw
7403
        dd      0
7411
        dd      0
7404
        dd      0
7412
        dd      0
7405
        dd      panels_OnKey
7413
        dd      panels_OnKey
7406
        dd      keybar_panels
7414
        dd      keybar_panels
7407
        dd      panels_getname
7415
        dd      panels_getname
7408
        dd      panels_OnExit
7416
        dd      panels_OnExit
7409
        dd      panels_IsHandleUsed
7417
        dd      panels_IsHandleUsed
7410
 
7418
 
7411
viewer_vtable:
7419
viewer_vtable:
7412
        dd      viewer_OnRedraw
7420
        dd      viewer_OnRedraw
7413
        dd      0
7421
        dd      0
7414
        dd      0
7422
        dd      0
7415
        dd      viewer_OnKey
7423
        dd      viewer_OnKey
7416
        dd      keybar_viewer
7424
        dd      keybar_viewer
7417
        dd      viewer_getname
7425
        dd      viewer_getname
7418
        dd      viewer_OnExit
7426
        dd      viewer_OnExit
7419
        dd      viewer_IsHandleUsed
7427
        dd      viewer_IsHandleUsed
7420
 
7428
 
7421
editor_vtable:
7429
editor_vtable:
7422
        dd      editor_OnRedraw
7430
        dd      editor_OnRedraw
7423
        dd      0
7431
        dd      0
7424
        dd      0
7432
        dd      0
7425
        dd      editor_OnKey
7433
        dd      editor_OnKey
7426
        dd      keybar_editor
7434
        dd      keybar_editor
7427
        dd      editor_getname
7435
        dd      editor_getname
7428
        dd      editor_OnExit
7436
        dd      editor_OnExit
7429
        dd      editor_IsHandleUsed
7437
        dd      editor_IsHandleUsed
7430
 
7438
 
7431
filesearch_vtable:
7439
filesearch_vtable:
7432
        dd      filesearch_OnRedraw
7440
        dd      filesearch_OnRedraw
7433
        dd      filesearch_OnActivate
7441
        dd      filesearch_OnActivate
7434
        dd      filesearch_OnIdle
7442
        dd      filesearch_OnIdle
7435
        dd      filesearch_OnKey
7443
        dd      filesearch_OnKey
7436
        dd      0
7444
        dd      0
7437
        dd      filesearch_getname
7445
        dd      filesearch_getname
7438
        dd      filesearch_OnExit
7446
        dd      filesearch_OnExit
7439
        dd      filesearch_IsHandleUsed
7447
        dd      filesearch_IsHandleUsed
7440
 
7448
 
7441
; additions to this table require changes in tools.inc::get_error_msg
7449
; additions to this table require changes in tools.inc::get_error_msg
7442
errors1:
7450
errors1:
7443
        dd      error0msg
7451
        dd      error0msg
7444
        dd      error1msg
7452
        dd      error1msg
7445
        dd      error2msg
7453
        dd      error2msg
7446
        dd      error3msg
7454
        dd      error3msg
7447
        dd      error4msg
7455
        dd      error4msg
7448
        dd      error5msg
7456
        dd      error5msg
7449
        dd      error6msg
7457
        dd      error6msg
7450
        dd      error7msg
7458
        dd      error7msg
7451
        dd      error8msg
7459
        dd      error8msg
7452
        dd      error9msg
7460
        dd      error9msg
7453
        dd      error10msg
7461
        dd      error10msg
7454
        dd      error11msg
7462
        dd      error11msg
7455
errors2:
7463
errors2:
7456
        dd      error30msg
7464
        dd      error30msg
7457
        dd      error31msg
7465
        dd      error31msg
7458
        dd      error32msg
7466
        dd      error32msg
7459
 
7467
 
7460
encodings:
7468
encodings:
7461
.cp866 = 0
7469
.cp866 = 0
7462
.cp1251 = 1
7470
.cp1251 = 1
7463
.koi8r = 2
7471
.koi8r = 2
7464
.unicode = 3
7472
.unicode = 3
7465
 
7473
 
7466
.names:
7474
.names:
7467
        db      'cp866   '
7475
        db      'cp866   '
7468
        db      'cp1251  '
7476
        db      'cp1251  '
7469
        db      'koi8-r  '
7477
        db      'koi8-r  '
7470
        db      'Unicode '
7478
        db      'Unicode '
7471
 
7479
 
7472
.tables:
7480
.tables:
7473
; cp866 - trivial map
7481
; cp866 - trivial map
7474
        times 128 db %+127
7482
        times 128 db %+127
7475
; cp1251
7483
; cp1251
7476
        db      0x3F,0x3F,0x27,0x3F,0x22,0x3A,0xC5,0xD8,0x3F,0x25,0x3F,0x3C,0x3F,0x3F,0x3F,0x3F
7484
        db      0x3F,0x3F,0x27,0x3F,0x22,0x3A,0xC5,0xD8,0x3F,0x25,0x3F,0x3C,0x3F,0x3F,0x3F,0x3F
7477
        db      0x3F,0x27,0x27,0x22,0x22,0x07,0x2D,0x2D,0x3F,0x54,0x3F,0x3E,0x3F,0x3F,0x3F,0x3F
7485
        db      0x3F,0x27,0x27,0x22,0x22,0x07,0x2D,0x2D,0x3F,0x54,0x3F,0x3E,0x3F,0x3F,0x3F,0x3F
7478
        db      0xFF,0xF6,0xF7,0x3F,0xFD,0x3F,0xB3,0x15,0xF0,0x63,0xF2,0x3C,0xBF,0x2D,0x52,0xF4
7486
        db      0xFF,0xF6,0xF7,0x3F,0xFD,0x3F,0xB3,0x15,0xF0,0x63,0xF2,0x3C,0xBF,0x2D,0x52,0xF4
7479
        db      0xF8,0x2B,0x49,0x69,0x3F,0xE7,0x14,0xFA,0xF1,0xFC,0xF3,0x3E,0x3F,0x3F,0x3F,0xF5
7487
        db      0xF8,0x2B,0x49,0x69,0x3F,0xE7,0x14,0xFA,0xF1,0xFC,0xF3,0x3E,0x3F,0x3F,0x3F,0xF5
7480
        times 0x30 db %-1+0x80
7488
        times 0x30 db %-1+0x80
7481
        times 0x10 db %-1+0xE0
7489
        times 0x10 db %-1+0xE0
7482
; koi8-r
7490
; koi8-r
7483
        db      0xC4,0xB3,0xDA,0xBF,0xC0,0xD9,0xC3,0xB4,0xC2,0xC1,0xC5,0xDF,0xDC,0xDB,0xDD,0xDE
7491
        db      0xC4,0xB3,0xDA,0xBF,0xC0,0xD9,0xC3,0xB4,0xC2,0xC1,0xC5,0xDF,0xDC,0xDB,0xDD,0xDE
7484
        db      0xB0,0xB1,0xB2,0xF4,0xFE,0xF9,0xFB,0xF7,0xF3,0xF2,0xFF,0xF5,0xF8,0xFD,0xFA,0xF6
7492
        db      0xB0,0xB1,0xB2,0xF4,0xFE,0xF9,0xFB,0xF7,0xF3,0xF2,0xFF,0xF5,0xF8,0xFD,0xFA,0xF6
7485
        db      0xCD,0xBA,0xD5,0xF1,0xD6,0xC9,0xB8,0xB7,0xBB,0xD4,0xD3,0xC8,0xBE,0xBD,0xBC,0xC6
7493
        db      0xCD,0xBA,0xD5,0xF1,0xD6,0xC9,0xB8,0xB7,0xBB,0xD4,0xD3,0xC8,0xBE,0xBD,0xBC,0xC6
7486
        db      0xC7,0xCC,0xB5,0xF0,0xB6,0xB9,0xD1,0xD2,0xCB,0xCF,0xD0,0xCA,0xD8,0xD7,0xCE,0xFC
7494
        db      0xC7,0xCC,0xB5,0xF0,0xB6,0xB9,0xD1,0xD2,0xCB,0xCF,0xD0,0xCA,0xD8,0xD7,0xCE,0xFC
7487
        db      0xEE,0xA0,0xA1,0xE6,0xA4,0xA5,0xE4,0xA3,0xE5,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE
7495
        db      0xEE,0xA0,0xA1,0xE6,0xA4,0xA5,0xE4,0xA3,0xE5,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE
7488
        db      0xAF,0xEF,0xE0,0xE1,0xE2,0xE3,0xA6,0xA2,0xEC,0xEB,0xA7,0xE8,0xED,0xE9,0xE7,0xEA
7496
        db      0xAF,0xEF,0xE0,0xE1,0xE2,0xE3,0xA6,0xA2,0xEC,0xEB,0xA7,0xE8,0xED,0xE9,0xE7,0xEA
7489
        db      0x9E,0x80,0x81,0x96,0x84,0x85,0x94,0x83,0x95,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E
7497
        db      0x9E,0x80,0x81,0x96,0x84,0x85,0x94,0x83,0x95,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E
7490
        db      0x8F,0x9F,0x90,0x91,0x92,0x93,0x86,0x82,0x9C,0x9B,0x87,0x98,0x9D,0x99,0x97,0x9A
7498
        db      0x8F,0x9F,0x90,0x91,0x92,0x93,0x86,0x82,0x9C,0x9B,0x87,0x98,0x9D,0x99,0x97,0x9A
7491
 
7499
 
7492
.menu:
7500
.menu:
7493
        db      .cp866
7501
        db      .cp866
7494
.menu.1:
7502
.menu.1:
7495
        dd      .menu.2
7503
        dd      .menu.2
7496
        dd      0
7504
        dd      0
7497
if lang eq ru
7505
if lang eq ru
7498
        db      '&DOS ⥪áâ (cp866)',0
7506
        db      '&DOS ⥪áâ (cp866)',0
7499
else
7507
else
7500
        db      '&DOS text (cp866)',0
7508
        db      '&DOS text (cp866)',0
7501
end if
7509
end if
7502
        db      .cp1251
7510
        db      .cp1251
7503
.menu.2:
7511
.menu.2:
7504
        dd      .menu.3
7512
        dd      .menu.3
7505
        dd      .menu.1
7513
        dd      .menu.1
7506
if lang eq ru
7514
if lang eq ru
7507
        db      '&Windows ⥪áâ (cp1251)',0
7515
        db      '&Windows ⥪áâ (cp1251)',0
7508
else
7516
else
7509
        db      '&Windows text (cp1251)',0
7517
        db      '&Windows text (cp1251)',0
7510
end if
7518
end if
7511
        db      .koi8r
7519
        db      .koi8r
7512
.menu.3:
7520
.menu.3:
7513
        dd      .menu.4
7521
        dd      .menu.4
7514
        dd      .menu.2
7522
        dd      .menu.2
7515
if lang eq ru
7523
if lang eq ru
7516
        db      '&Linux ⥪áâ (koi8-r)',0
7524
        db      '&Linux ⥪áâ (koi8-r)',0
7517
else
7525
else
7518
        db      '&Linux text (koi8-r)',0
7526
        db      '&Linux text (koi8-r)',0
7519
end if
7527
end if
7520
        db      .unicode
7528
        db      .unicode
7521
.menu.4:
7529
.menu.4:
7522
        dd      0
7530
        dd      0
7523
        dd      .menu.3
7531
        dd      .menu.3
7524
        db      '&Unicode',0
7532
        db      '&Unicode',0
7525
 
7533
 
7526
active_screen   dd      0
7534
active_screen   dd      0
7527
viewer_tabsize  dd      8
7535
viewer_tabsize  dd      8
7528
editor_tabsize  dd      8
7536
editor_tabsize  dd      8
7529
 
7537
 
7530
ascii2scan:
7538
ascii2scan:
7531
        times 32 db 0
7539
        times 32 db 0
7532
        db      0x39,0x02,0x03,0x04,0x05,0x06,0x08,0x28,0x0A,0x0B,0x09,0x0D,0x33,0x0C,0x34,0x35
7540
        db      0x39,0x02,0x03,0x04,0x05,0x06,0x08,0x28,0x0A,0x0B,0x09,0x0D,0x33,0x0C,0x34,0x35
7533
        db      0x0B,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x27,0x27,0x33,0x0D,0x34,0x35
7541
        db      0x0B,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x27,0x27,0x33,0x0D,0x34,0x35
7534
        db      0x03,0x1E,0x30,0x2E,0x20,0x12,0x21,0x22,0x23,0x17,0x24,0x25,0x26,0x32,0x31,0x18
7542
        db      0x03,0x1E,0x30,0x2E,0x20,0x12,0x21,0x22,0x23,0x17,0x24,0x25,0x26,0x32,0x31,0x18
7535
        db      0x19,0x10,0x13,0x1F,0x14,0x16,0x2F,0x11,0x2D,0x15,0x2C,0x1A,0x2B,0x1B,0x07,0x0C
7543
        db      0x19,0x10,0x13,0x1F,0x14,0x16,0x2F,0x11,0x2D,0x15,0x2C,0x1A,0x2B,0x1B,0x07,0x0C
7536
        db      0x29,0x1E,0x30,0x2E,0x20,0x12,0x21,0x22,0x23,0x17,0x24,0x25,0x26,0x32,0x31,0x18
7544
        db      0x29,0x1E,0x30,0x2E,0x20,0x12,0x21,0x22,0x23,0x17,0x24,0x25,0x26,0x32,0x31,0x18
7537
        db      0x19,0x10,0x13,0x1F,0x14,0x16,0x2F,0x11,0x2D,0x15,0x2C,0x1A,0x2B,0x1B,0x29,0x00
7545
        db      0x19,0x10,0x13,0x1F,0x14,0x16,0x2F,0x11,0x2D,0x15,0x2C,0x1A,0x2B,0x1B,0x29,0x00
7538
        db      0x21,0x33,0x20,0x16,0x26,0x14,0x27,0x19,0x30,0x10,0x13,0x25,0x2F,0x15,0x24,0x22
7546
        db      0x21,0x33,0x20,0x16,0x26,0x14,0x27,0x19,0x30,0x10,0x13,0x25,0x2F,0x15,0x24,0x22
7539
        db      0x23,0x2E,0x31,0x12,0x1E,0x1A,0x11,0x2D,0x17,0x18,0x1B,0x1F,0x32,0x28,0x34,0x2C
7547
        db      0x23,0x2E,0x31,0x12,0x1E,0x1A,0x11,0x2D,0x17,0x18,0x1B,0x1F,0x32,0x28,0x34,0x2C
7540
        db      0x21,0x33,0x20,0x16,0x26,0x14,0x27,0x19,0x30,0x10,0x13,0x25,0x2F,0x15,0x24,0x22
7548
        db      0x21,0x33,0x20,0x16,0x26,0x14,0x27,0x19,0x30,0x10,0x13,0x25,0x2F,0x15,0x24,0x22
7541
        times 48 db 0
7549
        times 48 db 0
7542
        db      0x23,0x2E,0x31,0x12,0x1E,0x1A,0x11,0x2D,0x17,0x18,0x1B,0x1F,0x32,0x28,0x34,0x2C
7550
        db      0x23,0x2E,0x31,0x12,0x1E,0x1A,0x11,0x2D,0x17,0x18,0x1B,0x1F,0x32,0x28,0x34,0x2C
7543
        db      0x29,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
7551
        db      0x29,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
7544
scan2ascii:
7552
scan2ascii:
7545
        db      0,0,'1234567890-=',0,0
7553
        db      0,0,'1234567890-=',0,0
7546
        db      'qwertyuiop[]',0,0,'as'
7554
        db      'qwertyuiop[]',0,0,'as'
7547
        db      'dfghjkl;',27h,'`',0,'\zxcv'
7555
        db      'dfghjkl;',27h,'`',0,'\zxcv'
7548
        db      'bnm,./',0,0,0,' ',0,0,0,0,0,0
7556
        db      'bnm,./',0,0,0,' ',0,0,0,0,0,0
7549
 
7557
 
7550
align 4
7558
align 4
7551
panels_mouse:
7559
panels_mouse:
7552
        dd 0 ;f1
7560
        dd 0 ;f1
7553
        dd 0 ;f2
7561
        dd 0 ;f2
7554
        dd panels_OnKey.f3
7562
        dd panels_OnKey.f3
7555
        dd panels_OnKey.f4
7563
        dd panels_OnKey.f4
7556
        dd panels_OnKey.f5
7564
        dd panels_OnKey.f5
7557
        dd 0 ;f6
7565
        dd 0 ;f6
7558
        dd panels_OnKey.f7
7566
        dd panels_OnKey.f7
7559
        dd panels_OnKey.f8
7567
        dd panels_OnKey.f8
7560
        dd 0,0,0 ;f9-f11
7568
        dd 0,0,0 ;f9-f11
7561
        dd F12
7569
        dd F12
7562
; Shift
7570
; Shift
7563
        rd 4
7571
        rd 4
7564
        dd panels_OnKey.shift_f5
7572
        dd panels_OnKey.shift_f5
7565
        rd 7
7573
        rd 7
7566
.ctrl:
7574
.ctrl:
7567
        rd 2
7575
        rd 2
7568
repeat 9-3+1
7576
repeat 9-3+1
7569
        dd OnMouse_ctrl_f39
7577
        dd OnMouse_ctrl_f3_9
7570
end repeat
7578
end repeat
7571
        rd 3
7579
        rd 3
7572
; Ctrl+Shift
7580
; Ctrl+Shift
7573
        rd 12
7581
        rd 12
7574
; Alt
7582
.alt:
7575
        rd 6
7583
        dd OnMouse_alt_f1_2
7576
        dd panels_OnKey.alt_f7
7584
        dd OnMouse_alt_f1_2
7577
        rd 4
7585
        rd 4
7578
        dd panels_OnKey.alt_f12
7586
        dd panels_OnKey.alt_f7
-
 
7587
        rd 5
7579
; Alt+Shift
7588
; Alt+Shift
7580
        rd 12
7589
        rd 12
7581
; Alt+Ctrl
7590
; Alt+Ctrl
7582
        rd 12
7591
        rd 12
7583
; Alt+Ctrl+Shift
7592
; Alt+Ctrl+Shift
7584
        rd 12
7593
        rd 12
7585
 
7594
 
7586
; Š« ¢¨è­ë¥ á®ç¥â ­¨ï
7595
; Š« ¢¨è­ë¥ á®ç¥â ­¨ï
7587
; db scancode, reserved
7596
; db scancode, reserved
7588
; dw ctrlstate
7597
; dw ctrlstate
7589
; dd handler
7598
; dd handler
7590
; ctrlstate: ¬« ¤è¨¥ 4 ¡¨â  - ¤«ï Shift, á«¥¤ãî騥 - ¤«ï Ctrl, á«¥¤ãî騥 - ¤«ï Alt
7599
; ctrlstate: ¬« ¤è¨¥ 4 ¡¨â  - ¤«ï Shift, á«¥¤ãî騥 - ¤«ï Ctrl, á«¥¤ãî騥 - ¤«ï Alt
7591
; 0 = ­¨ ®¤­  ª« ¢¨è  ­¥ ­ ¦ â 
7600
; 0 = ­¨ ®¤­  ª« ¢¨è  ­¥ ­ ¦ â 
7592
; 1 = ஢­® ®¤­  ­ ¦ â 
7601
; 1 = ஢­® ®¤­  ­ ¦ â 
7593
; 2 = ®¡¥ ­ ¦ âë
7602
; 2 = ®¡¥ ­ ¦ âë
7594
; 3 = «¥¢ ï ­ ¦ â , ¯à ¢ ï ­¥â
7603
; 3 = «¥¢ ï ­ ¦ â , ¯à ¢ ï ­¥â
7595
; 4 = ¯à ¢ ï ­ ¦ â , «¥¢ ï ­¥â
7604
; 4 = ¯à ¢ ï ­ ¦ â , «¥¢ ï ­¥â
7596
panels_ctrlkeys:
7605
panels_ctrlkeys:
7597
        dw      0x48, 0
7606
        dw      0x48, 0
7598
        dd      panels_OnKey.up
7607
        dd      panels_OnKey.up
7599
        dw      0x50, 0
7608
        dw      0x50, 0
7600
        dd      panels_OnKey.down
7609
        dd      panels_OnKey.down
7601
        dw      0x4B, 0
7610
        dw      0x4B, 0
7602
        dd      panels_OnKey.left
7611
        dd      panels_OnKey.left
7603
        dw      0x4D, 0
7612
        dw      0x4D, 0
7604
        dd      panels_OnKey.right
7613
        dd      panels_OnKey.right
7605
        dw      0x51, 0
7614
        dw      0x51, 0
7606
        dd      panels_OnKey.pgdn
7615
        dd      panels_OnKey.pgdn
7607
        dw      0x49, 0
7616
        dw      0x49, 0
7608
        dd      panels_OnKey.pgup
7617
        dd      panels_OnKey.pgup
7609
        dw      0xF, 0
7618
        dw      0xF, 0
7610
        dd      panels_OnKey.tab
7619
        dd      panels_OnKey.tab
7611
        dw      0x47, 0
7620
        dw      0x47, 0
7612
        dd      panels_OnKey.home
7621
        dd      panels_OnKey.home
7613
        dw      0x4F, 0
7622
        dw      0x4F, 0
7614
        dd      panels_OnKey.end
7623
        dd      panels_OnKey.end
7615
        dw      0x1C, 0
7624
        dw      0x1C, 0
7616
        dd      panels_OnKey.enter
7625
        dd      panels_OnKey.enter
7617
        dw      0x3D, 0
7626
        dw      0x3D, 0
7618
        dd      panels_OnKey.f3
7627
        dd      panels_OnKey.f3
7619
        dw      0x3E, 0
7628
        dw      0x3E, 0
7620
        dd      panels_OnKey.f4
7629
        dd      panels_OnKey.f4
7621
        dw      0x3F, 0
7630
        dw      0x3F, 0
7622
        dd      panels_OnKey.f5
7631
        dd      panels_OnKey.f5
7623
        dw      0x3F, 1
7632
        dw      0x3F, 1
7624
        dd      panels_OnKey.shift_f5
7633
        dd      panels_OnKey.shift_f5
7625
        dw      0x41, 0
7634
        dw      0x41, 0
7626
        dd      panels_OnKey.f7
7635
        dd      panels_OnKey.f7
7627
        dw      0x41, 0x100
7636
        dw      0x41, 0x100
7628
        dd      panels_OnKey.alt_f7
7637
        dd      panels_OnKey.alt_f7
7629
        dw      0x42, 0
7638
        dw      0x42, 0
7630
        dd      panels_OnKey.f8
7639
        dd      panels_OnKey.f8
7631
        dw      0x43, 0x100
7640
        dw      0x43, 0x100
7632
        dd      alt_f9
7641
        dd      alt_f9
7633
        dw      0x44, 0
7642
        dw      0x44, 0
7634
        dd      exit
7643
        dd      exit
7635
        dw      0x5D, 0
7644
        dw      0x5D, 0
7636
        dd      panels_OnKey.menu
7645
        dd      panels_OnKey.menu
7637
repeat 9-3+1
7646
repeat 9-3+1
7638
        dw      0x3D+%-1, 0x10
7647
        dw      0x3D+%-1, 0x10
7639
        dd      panels_OnKey.ctrl_f39
7648
        dd      panels_OnKey.ctrl_f3_9
7640
end repeat
7649
end repeat
7641
        dw      0x3B, 0x100
7650
        dw      0x3B, 0x100
7642
        dd      panels_OnKey.alt_f12
7651
        dd      panels_OnKey.alt_f1_2
7643
        dw      0x3C, 0x100
7652
        dw      0x3C, 0x100
7644
        dd      panels_OnKey.alt_f12
7653
        dd      panels_OnKey.alt_f1_2
7645
        dw      0x58, 0
7654
        dw      0x58, 0
7646
        dd      F12
7655
        dd      F12
7647
        dw      0x13, 0x10
7656
        dw      0x13, 0x10
7648
        dd      panels_OnKey.ctrl_r
7657
        dd      panels_OnKey.ctrl_r
7649
        dw      2, 0x30
7658
        dw      2, 0x30
7650
        dd      panels_OnKey.change_mode
7659
        dd      panels_OnKey.change_mode
7651
        dw      3, 0x30
7660
        dw      3, 0x30
7652
        dd      panels_OnKey.change_mode
7661
        dd      panels_OnKey.change_mode
7653
        dw      4, 0x30
7662
        dw      4, 0x30
7654
        dd      panels_OnKey.change_mode
7663
        dd      panels_OnKey.change_mode
7655
        dw      5, 0x30
7664
        dw      5, 0x30
7656
        dd      panels_OnKey.change_mode
7665
        dd      panels_OnKey.change_mode
7657
repeat 10
7666
repeat 10
7658
        dw      %+1, 0x40
7667
        dw      %+1, 0x40
7659
        dd      panels_OnKey.quick_jump
7668
        dd      panels_OnKey.quick_jump
7660
end repeat
7669
end repeat
7661
        dw      0x52, 0
7670
        dw      0x52, 0
7662
        dd      panels_OnKey.insert
7671
        dd      panels_OnKey.insert
7663
        dw      0x4E, 0
7672
        dw      0x4E, 0
7664
        dd      panels_OnKey.greyplus
7673
        dd      panels_OnKey.greyplus
7665
        dw      0x4A, 0
7674
        dw      0x4A, 0
7666
        dd      panels_OnKey.greyminus
7675
        dd      panels_OnKey.greyminus
7667
        dw      0x37, 0
7676
        dw      0x37, 0
7668
        dd      panels_OnKey.greyasterisk
7677
        dd      panels_OnKey.greyasterisk
7669
        db      0
7678
        db      0
7670
 
7679
 
7671
viewer_ctrlkeys:
7680
viewer_ctrlkeys:
7672
        dw      1, 0
7681
        dw      1, 0
7673
        dd      viewer_OnKey.exit
7682
        dd      viewer_OnKey.exit
7674
        dw      0x51, 0
7683
        dw      0x51, 0
7675
        dd      viewer_OnKey.pgdn
7684
        dd      viewer_OnKey.pgdn
7676
        dw      0x49, 0
7685
        dw      0x49, 0
7677
        dd      viewer_OnKey.pgup
7686
        dd      viewer_OnKey.pgup
7678
        dw      0x50, 0
7687
        dw      0x50, 0
7679
        dd      viewer_OnKey.down
7688
        dd      viewer_OnKey.down
7680
        dw      0x48, 0
7689
        dw      0x48, 0
7681
        dd      viewer_OnKey.up
7690
        dd      viewer_OnKey.up
7682
        dw      0x4B, 0
7691
        dw      0x4B, 0
7683
        dd      viewer_OnKey.left
7692
        dd      viewer_OnKey.left
7684
        dw      0x4B, 0x10
7693
        dw      0x4B, 0x10
7685
        dd      viewer_OnKey.ctrl_left
7694
        dd      viewer_OnKey.ctrl_left
7686
        dw      0x4B, 0x11
7695
        dw      0x4B, 0x11
7687
        dd      viewer_OnKey.ctrl_shift_left
7696
        dd      viewer_OnKey.ctrl_shift_left
7688
        dw      0x4C, 0
7697
        dw      0x4C, 0
7689
        dd      viewer_OnKey.exit
7698
        dd      viewer_OnKey.exit
7690
        dw      0x4D, 0
7699
        dw      0x4D, 0
7691
        dd      viewer_OnKey.right
7700
        dd      viewer_OnKey.right
7692
        dw      0x4D, 0x10
7701
        dw      0x4D, 0x10
7693
        dd      viewer_OnKey.ctrl_right
7702
        dd      viewer_OnKey.ctrl_right
7694
        dw      0x4D, 0x11
7703
        dw      0x4D, 0x11
7695
        dd      viewer_OnKey.ctrl_shift_right
7704
        dd      viewer_OnKey.ctrl_shift_right
7696
        dw      0x3C, 0
7705
        dw      0x3C, 0
7697
        dd      viewer_OnKey.f2
7706
        dd      viewer_OnKey.f2
7698
        dw      0x3D, 0
7707
        dw      0x3D, 0
7699
        dd      viewer_OnKey.exit
7708
        dd      viewer_OnKey.exit
7700
        dw      0x3E, 0
7709
        dw      0x3E, 0
7701
        dd      viewer_OnKey.f4
7710
        dd      viewer_OnKey.f4
7702
        dw      0x41, 0
7711
        dw      0x41, 0
7703
        dd      viewer_OnKey.f7
7712
        dd      viewer_OnKey.f7
7704
        dw      0x41, 1
7713
        dw      0x41, 1
7705
        dd      viewer_OnKey.shift_f7
7714
        dd      viewer_OnKey.shift_f7
7706
        dw      0x42, 0
7715
        dw      0x42, 0
7707
        dd      viewer_OnKey.f8
7716
        dd      viewer_OnKey.f8
7708
        dw      0x42, 1
7717
        dw      0x42, 1
7709
        dd      viewer_OnKey.shift_f8
7718
        dd      viewer_OnKey.shift_f8
7710
        dw      0x44, 0
7719
        dw      0x44, 0
7711
        dd      viewer_OnKey.exit
7720
        dd      viewer_OnKey.exit
7712
        dw      0x47, 0
7721
        dw      0x47, 0
7713
        dd      viewer_OnKey.home
7722
        dd      viewer_OnKey.home
7714
        dw      0x4F, 0
7723
        dw      0x4F, 0
7715
        dd      viewer_OnKey.end
7724
        dd      viewer_OnKey.end
7716
        dw      0x58, 0
7725
        dw      0x58, 0
7717
        dd      F12
7726
        dd      F12
7718
        dw      0x43, 0x100
7727
        dw      0x43, 0x100
7719
        dd      alt_f9
7728
        dd      alt_f9
7720
        db      0
7729
        db      0
7721
 
7730
 
7722
editor_ctrlkeys:
7731
editor_ctrlkeys:
7723
        dw      1, 0
7732
        dw      1, 0
7724
        dd      editor_OnKey.exit_confirm
7733
        dd      editor_OnKey.exit_confirm
7725
        dw      0x0E, 0
7734
        dw      0x0E, 0
7726
        dd      editor_OnKey.backspace
7735
        dd      editor_OnKey.backspace
7727
        dw      0x3C, 0
7736
        dw      0x3C, 0
7728
        dd      editor_OnKey.f2
7737
        dd      editor_OnKey.f2
7729
        dw      0x41, 0
7738
        dw      0x41, 0
7730
        dd      editor_OnKey.f7
7739
        dd      editor_OnKey.f7
7731
        dw      0x41, 1
7740
        dw      0x41, 1
7732
        dd      editor_OnKey.shift_f7
7741
        dd      editor_OnKey.shift_f7
7733
        dw      0x43, 0x100
7742
        dw      0x43, 0x100
7734
        dd      alt_f9
7743
        dd      alt_f9
7735
        dw      0x44, 0
7744
        dw      0x44, 0
7736
        dd      editor_OnKey.exit_confirm
7745
        dd      editor_OnKey.exit_confirm
7737
        dw      0x44, 1
7746
        dw      0x44, 1
7738
        dd      editor_OnKey.exit_save
7747
        dd      editor_OnKey.exit_save
7739
        dw      0x47, 0
7748
        dw      0x47, 0
7740
        dd      editor_OnKey.home
7749
        dd      editor_OnKey.home
7741
        dw      0x48, 0
7750
        dw      0x48, 0
7742
        dd      editor_OnKey.up
7751
        dd      editor_OnKey.up
7743
        dw      0x49, 0
7752
        dw      0x49, 0
7744
        dd      editor_OnKey.pgup
7753
        dd      editor_OnKey.pgup
7745
        dw      0x4B, 0
7754
        dw      0x4B, 0
7746
        dd      editor_OnKey.left
7755
        dd      editor_OnKey.left
7747
        dw      0x4D, 0
7756
        dw      0x4D, 0
7748
        dd      editor_OnKey.right
7757
        dd      editor_OnKey.right
7749
        dw      0x4F, 0
7758
        dw      0x4F, 0
7750
        dd      editor_OnKey.end
7759
        dd      editor_OnKey.end
7751
        dw      0x50, 0
7760
        dw      0x50, 0
7752
        dd      editor_OnKey.down
7761
        dd      editor_OnKey.down
7753
        dw      0x51, 0
7762
        dw      0x51, 0
7754
        dd      editor_OnKey.pgdn
7763
        dd      editor_OnKey.pgdn
7755
        dw      0x52, 0
7764
        dw      0x52, 0
7756
        dd      editor_OnKey.ins
7765
        dd      editor_OnKey.ins
7757
        dw      0x53, 0
7766
        dw      0x53, 0
7758
        dd      editor_OnKey.del
7767
        dd      editor_OnKey.del
7759
        dw      0x58, 0
7768
        dw      0x58, 0
7760
        dd      F12
7769
        dd      F12
7761
        dw      0xF, 0x100      ; Alt+Tab
7770
        dw      0xF, 0x100      ; Alt+Tab
7762
        dd      dummy_key
7771
        dd      dummy_key
7763
        dw      0xF, 0x101      ; Shift+Alt+Tab
7772
        dw      0xF, 0x101      ; Shift+Alt+Tab
7764
        dd      dummy_key
7773
        dd      dummy_key
7765
        db      0
7774
        db      0
7766
 
7775
 
7767
dummy_key:
7776
dummy_key:
7768
        ret
7777
        ret
7769
 
7778
 
7770
dirinfo:
7779
dirinfo:
7771
                dd      1
7780
                dd      1
7772
.first          dd      0
7781
.first          dd      0
7773
                dd      0
7782
                dd      0
7774
.size           dd      300
7783
.size           dd      300
7775
.dirdata        dd      0
7784
.dirdata        dd      0
7776
                db      0
7785
                db      0
7777
.name           dd      0
7786
.name           dd      0
7778
 
7787
 
7779
readinfo:
7788
readinfo:
7780
                dd      0
7789
                dd      0
7781
.first          dq      0
7790
.first          dq      0
7782
.size           dd      0
7791
.size           dd      0
7783
.data           dd      0
7792
.data           dd      0
7784
                db      0
7793
                db      0
7785
.name           dd      0
7794
.name           dd      0
7786
 
7795
 
7787
writeinfo:
7796
writeinfo:
7788
.code           dd      2
7797
.code           dd      2
7789
.first          dq      0
7798
.first          dq      0
7790
.size           dd      0
7799
.size           dd      0
7791
.data           dd      0
7800
.data           dd      0
7792
                db      0
7801
                db      0
7793
.name           dd      0
7802
.name           dd      0
7794
 
7803
 
7795
attrinfo:
7804
attrinfo:
7796
                dd      5
7805
                dd      5
7797
                dd      0
7806
                dd      0
7798
                dd      0
7807
                dd      0
7799
                dd      0
7808
                dd      0
7800
                dd      .attr
7809
                dd      .attr
7801
                db      0
7810
                db      0
7802
.name           dd      0
7811
.name           dd      0
7803
 
7812
 
7804
delinfo:
7813
delinfo:
7805
                dd      8
7814
                dd      8
7806
                dd      0
7815
                dd      0
7807
                dd      0
7816
                dd      0
7808
                dd      0
7817
                dd      0
7809
                dd      0
7818
                dd      0
7810
                db      0
7819
                db      0
7811
                dd      execdata
7820
                dd      execdata
7812
 
7821
 
7813
mkdirinfo:
7822
mkdirinfo:
7814
                dd      9
7823
                dd      9
7815
                dd      0
7824
                dd      0
7816
                dd      0
7825
                dd      0
7817
                dd      0
7826
                dd      0
7818
                dd      0
7827
                dd      0
7819
                db      0
7828
                db      0
7820
                dd      CopyDestEditBuf+12
7829
                dd      CopyDestEditBuf+12
7821
 
7830
 
7822
if lang eq ru
7831
if lang eq ru
7823
compare_names   db      '¨ˆà¬Œ €­á‘¤„'
7832
compare_names   db      '¨ˆà¬Œ €­á‘¤„'
7824
else
7833
else
7825
compare_names   db      'nNxXmMsSuUcCaA'
7834
compare_names   db      'nNxXmMsSuUcCaA'
7826
end if
7835
end if
7827
 
7836
 
7828
; ‡¤¥áì ­ ç¨­ îâáï ª®­ä¨£ãà æ¨®­­ë¥ ¤ ­­ë¥ - ¢ ⥪ã饩 ॠ«¨§ æ¨¨ ®­¨ § è¨âë ¢ ¡¨­ à­¨ª
7837
; ‡¤¥áì ­ ç¨­ îâáï ª®­ä¨£ãà æ¨®­­ë¥ ¤ ­­ë¥ - ¢ ⥪ã饩 ॠ«¨§ æ¨¨ ®­¨ § è¨âë ¢ ¡¨­ à­¨ª
7829
 
7838
 
7830
;  ­¥«ì
7839
;  ­¥«ì
7831
panel_normal_color      db      1Bh
7840
panel_normal_color      db      1Bh
7832
panel_selected_color    db      1Eh
7841
panel_selected_color    db      1Eh
7833
panel_border_color      db      1Bh
7842
panel_border_color      db      1Bh
7834
panel_cursor_color      db      30h
7843
panel_cursor_color      db      30h
7835
panel_selected_cursor_color db  3Eh
7844
panel_selected_cursor_color db  3Eh
7836
panel_header_color      db      1Bh
7845
panel_header_color      db      1Bh
7837
panel_active_header_color db    30h
7846
panel_active_header_color db    30h
7838
column_header_color     db      1Eh
7847
column_header_color     db      1Eh
7839
panel_number_color      db      1Bh
7848
panel_number_color      db      1Bh
7840
panel_numselected_color db      3Eh
7849
panel_numselected_color db      3Eh
7841
panel_nscreens_color    db      0Bh
7850
panel_nscreens_color    db      0Bh
7842
; „¨ «®£¨
7851
; „¨ «®£¨
7843
dialog_colors:
7852
dialog_colors:
7844
dialog_main_color       db      70h
7853
dialog_main_color       db      70h
7845
dialog_border_color     db      70h
7854
dialog_border_color     db      70h
7846
dialog_header_color     db      70h
7855
dialog_header_color     db      70h
7847
dialog_edit_color       db      30h
7856
dialog_edit_color       db      30h
7848
dialog_unmodified_edit_color db 38h
7857
dialog_unmodified_edit_color db 38h
7849
dialog_normal_btn_color db      70h
7858
dialog_normal_btn_color db      70h
7850
dialog_selected_btn_color db    30h
7859
dialog_selected_btn_color db    30h
7851
dialog_list_color       db      70h
7860
dialog_list_color       db      70h
7852
dialog_selected_list_color db   0Fh
7861
dialog_selected_list_color db   0Fh
7853
dialog_scroll_list_color db     70h
7862
dialog_scroll_list_color db     70h
7854
; à¥¤ã¯à¥¦¤¥­¨ï ¨ ®è¨¡ª¨
7863
; à¥¤ã¯à¥¦¤¥­¨ï ¨ ®è¨¡ª¨
7855
warning_colors:
7864
warning_colors:
7856
; !!! ¤®«¦­ë ¡ëâì ⥠¦¥ ¯®«ï ¨ ¢ ⮬ ¦¥ ¯®à浪¥, çâ® ¨ ¤«ï ®¡ëç­ëå ¤¨ «®£®¢ !!!
7865
; !!! ¤®«¦­ë ¡ëâì ⥠¦¥ ¯®«ï ¨ ¢ ⮬ ¦¥ ¯®à浪¥, çâ® ¨ ¤«ï ®¡ëç­ëå ¤¨ «®£®¢ !!!
7857
warning_main_color      db      4Fh
7866
warning_main_color      db      4Fh
7858
warning_border_color    db      4Fh
7867
warning_border_color    db      4Fh
7859
warning_header_color    db      4Fh
7868
warning_header_color    db      4Fh
7860
warning_edit_color      db      30h
7869
warning_edit_color      db      30h
7861
warning_unmodified_edit_color db 38h
7870
warning_unmodified_edit_color db 38h
7862
warning_normal_btn_color db     4Fh
7871
warning_normal_btn_color db     4Fh
7863
warning_selected_btn_color db   70h
7872
warning_selected_btn_color db   70h
7864
warning_list_color      db      3Fh
7873
warning_list_color      db      3Fh
7865
warning_selected_list_color db  70h
7874
warning_selected_list_color db  70h
7866
warning_scroll_list_color db    3Fh
7875
warning_scroll_list_color db    3Fh
7867
; Œ¥­î
7876
; Œ¥­î
7868
menu_normal_color       db      3Fh
7877
menu_normal_color       db      3Fh
7869
menu_selected_color     db      0Fh
7878
menu_selected_color     db      0Fh
7870
menu_highlight_color    db      3Eh
7879
menu_highlight_color    db      3Eh
7871
menu_selected_highlight_color db 0Eh
7880
menu_selected_highlight_color db 0Eh
7872
menu_border_color       db      3Fh
7881
menu_border_color       db      3Fh
7873
menu_header_color       db      3Fh
7882
menu_header_color       db      3Fh
7874
menu_scrollbar_color    db      3Fh
7883
menu_scrollbar_color    db      3Fh
7875
; ‹¨­¥©ª  ª« ¢¨è
7884
; ‹¨­¥©ª  ª« ¢¨è
7876
keybar_number_color     db      7
7885
keybar_number_color     db      7
7877
keybar_name_color       db      30h
7886
keybar_name_color       db      30h
7878
keybar_bgr_color        db      7
7887
keybar_bgr_color        db      7
7879
; Š®¬ ­¤­ ï áâப 
7888
; Š®¬ ­¤­ ï áâப 
7880
cmdbar_normal_color     db      7
7889
cmdbar_normal_color     db      7
7881
cmdbar_prefix_color     db      7
7890
cmdbar_prefix_color     db      7
7882
; à®á¬®âà騪
7891
; à®á¬®âà騪
7883
view_normal_color       db      1Bh
7892
view_normal_color       db      1Bh
7884
view_selected_color     db      30h
7893
view_selected_color     db      30h
7885
view_status_color       db      30h
7894
view_status_color       db      30h
7886
view_arrows_color       db      1Eh
7895
view_arrows_color       db      1Eh
7887
; ¥¤ ªâ®à
7896
; ¥¤ ªâ®à
7888
edit_normal_color       db      1Bh
7897
edit_normal_color       db      1Bh
7889
edit_status_color       db      30h
7898
edit_status_color       db      30h
7890
 
7899
 
7891
; ®¤á¢¥âª  ä ©«®¢
7900
; ®¤á¢¥âª  ä ©«®¢
7892
highlight_num_groups    dd      10
7901
highlight_num_groups    dd      10
7893
highlight_groups        dd      highlight_group0
7902
highlight_groups        dd      highlight_group0
7894
                dd      highlight_group1
7903
                dd      highlight_group1
7895
                dd      highlight_group2
7904
                dd      highlight_group2
7896
                dd      highlight_group3
7905
                dd      highlight_group3
7897
                dd      highlight_group4
7906
                dd      highlight_group4
7898
                dd      highlight_group5
7907
                dd      highlight_group5
7899
                dd      highlight_group6
7908
                dd      highlight_group6
7900
                dd      highlight_group7
7909
                dd      highlight_group7
7901
                dd      highlight_group8
7910
                dd      highlight_group8
7902
                dd      highlight_group9
7911
                dd      highlight_group9
7903
 
7912
 
7904
; ”®à¬ â ®¯¨á ­¨ï £àã¯¯ë ¯®¤á¢¥âª¨:
7913
; ”®à¬ â ®¯¨á ­¨ï £àã¯¯ë ¯®¤á¢¥âª¨:
7905
virtual at 0
7914
virtual at 0
7906
highlight:
7915
highlight:
7907
        .IncludeAttributes      db ?
7916
        .IncludeAttributes      db ?
7908
        .NormalColor            db ?
7917
        .NormalColor            db ?
7909
        .CursorColor            db ?
7918
        .CursorColor            db ?
7910
        .SelectedColor          db ?
7919
        .SelectedColor          db ?
7911
        .SelectedCursorColor    db ?
7920
        .SelectedCursorColor    db ?
7912
        .Mask:                  ; ASCIIZ-string
7921
        .Mask:                  ; ASCIIZ-string
7913
end virtual
7922
end virtual
7914
 
7923
 
7915
; all highlight masks must be in lowercase!
7924
; all highlight masks must be in lowercase!
7916
highlight_group0:
7925
highlight_group0:
7917
        db      2
7926
        db      2
7918
        db      13h, 38h, 0, 0
7927
        db      13h, 38h, 0, 0
7919
        db      '*',0
7928
        db      '*',0
7920
highlight_group1:
7929
highlight_group1:
7921
        db      4
7930
        db      4
7922
        db      13h, 38h, 0, 0
7931
        db      13h, 38h, 0, 0
7923
        db      '*',0
7932
        db      '*',0
7924
highlight_group2:
7933
highlight_group2:
7925
        db      10h
7934
        db      10h
7926
        db      1Fh, 3Fh, 0, 0
7935
        db      1Fh, 3Fh, 0, 0
7927
        db      '*|..',0
7936
        db      '*|..',0
7928
highlight_group3:
7937
highlight_group3:
7929
        db      10h
7938
        db      10h
7930
        db      0, 0, 0, 0
7939
        db      0, 0, 0, 0
7931
        db      '..',0
7940
        db      '..',0
7932
highlight_group4:
7941
highlight_group4:
7933
        db      0
7942
        db      0
7934
        db      1Ah, 3Ah, 0, 0
7943
        db      1Ah, 3Ah, 0, 0
7935
        db      '*.exe,*.com,*.bat,*.cmd,*.kex',0
7944
        db      '*.exe,*.com,*.bat,*.cmd,*.kex',0
7936
highlight_group5:
7945
highlight_group5:
7937
        db      0
7946
        db      0
7938
        db      1Ah, 3Ah, 0, 0
7947
        db      1Ah, 3Ah, 0, 0
7939
        db      '*|*.*,readme,makefile',0
7948
        db      '*|*.*,readme,makefile',0
7940
highlight_group6:
7949
highlight_group6:
7941
        db      0
7950
        db      0
7942
        db      1Dh, 3Dh, 0, 0
7951
        db      1Dh, 3Dh, 0, 0
7943
        db      '*.rar,*.zip,*.[zj],*.[bg7]z,*.[bg]zip,*.tar,*.t[ag]z,*.ar[cj],*.r[0-9][0-9],'
7952
        db      '*.rar,*.zip,*.[zj],*.[bg7]z,*.[bg]zip,*.tar,*.t[ag]z,*.ar[cj],*.r[0-9][0-9],'
7944
        db      '*.a[0-9][0-9],*.bz2,*.cab,*.msi,*.jar,*.lha,*.lzh,*.ha,*.ac[bei],*.pa[ck],'
7953
        db      '*.a[0-9][0-9],*.bz2,*.cab,*.msi,*.jar,*.lha,*.lzh,*.ha,*.ac[bei],*.pa[ck],'
7945
        db      '*.rk,*.cpio,*.rpm,*.zoo,*.hqx,*.sit,*.ice,*.uc2,*.ain,*.imp,*.777,*.ufa,*.boa,'
7954
        db      '*.rk,*.cpio,*.rpm,*.zoo,*.hqx,*.sit,*.ice,*.uc2,*.ain,*.imp,*.777,*.ufa,*.boa,'
7946
        db      '*.bs[2a],*.sea,*.hpk,*.ddi,*.x2,*.rkv,*.[lw]sz,*.h[ay]p,*.lim,*.sqz,*.chz',0
7955
        db      '*.bs[2a],*.sea,*.hpk,*.ddi,*.x2,*.rkv,*.[lw]sz,*.h[ay]p,*.lim,*.sqz,*.chz',0
7947
highlight_group7:
7956
highlight_group7:
7948
        db      0
7957
        db      0
7949
        db      16h, 36h, 0, 0
7958
        db      16h, 36h, 0, 0
7950
        db      '*.bak,*.tmp',0
7959
        db      '*.bak,*.tmp',0
7951
highlight_group8:
7960
highlight_group8:
7952
        db      0
7961
        db      0
7953
        db      17h, 37h, 0, 0
7962
        db      17h, 37h, 0, 0
7954
        db      '*.asm,*.inc',0
7963
        db      '*.asm,*.inc',0
7955
highlight_group9:
7964
highlight_group9:
7956
        db      10h
7965
        db      10h
7957
        db      1Fh, 3Fh, 0, 0
7966
        db      1Fh, 3Fh, 0, 0
7958
        db      '*',0
7967
        db      '*',0
7959
 
7968
 
7960
bConfirmDelete  db      1
7969
bConfirmDelete  db      1
7961
bConfirmDeleteIncomplete db 0
7970
bConfirmDeleteIncomplete db 0
7962
 
7971
 
7963
FolderShortcuts dd      0,0,0,0,0,0,0,0,0,0
7972
FolderShortcuts dd      0,0,0,0,0,0,0,0,0,0
7964
 
7973
 
7965
; ‡¤¥áì § ª ­ç¨¢ îâáï ª®­ä¨£ãà æ¨®­­ë¥ ¤ ­­ë¥
7974
; ‡¤¥áì § ª ­ç¨¢ îâáï ª®­ä¨£ãà æ¨®­­ë¥ ¤ ­­ë¥
7966
 
7975
 
7967
bWasE0          db      0
7976
bWasE0          db      0
7968
ctrlstate       db      0
7977
ctrlstate       db      0
7969
mousestate      db      0
7978
mousestate      db      0
7970
align 4
7979
align 4
7971
MemForImage     dd      0
7980
MemForImage     dd      0
7972
restore_semicolon dd    0
7981
restore_semicolon dd    0
7973
bForHex         db      0
7982
bForHex         db      0
7974
 
7983
 
7975
align   4
7984
align   4
7976
; ‘®®¡é¥­¨¥ ® ®¡«®¬¥ ¯à¨ ¢ë¤¥«¥­¨¨ ¯ ¬ïâ¨
7985
; ‘®®¡é¥­¨¥ ® ®¡«®¬¥ ¯à¨ ¢ë¤¥«¥­¨¨ ¯ ¬ïâ¨
7977
nomem_dlgdata:
7986
nomem_dlgdata:
7978
        dd      2
7987
        dd      2
7979
        dd      -1
7988
        dd      -1
7980
        dd      -1
7989
        dd      -1
7981
        dd      12
7990
        dd      12
7982
        dd      2
7991
        dd      2
7983
        dd      1
7992
        dd      1
7984
        dd      1
7993
        dd      1
7985
        dd      aError
7994
        dd      aError
7986
        rb      8
7995
        rb      8
7987
        dd      0
7996
        dd      0
7988
        dd      0
7997
        dd      0
7989
        dd      2
7998
        dd      2
7990
; áâப  "No memory"
7999
; áâப  "No memory"
7991
        DlgLbl  ,1,0,10,0,aNoMemory,1
8000
        DlgLbl  ,1,0,10,0,aNoMemory,1
7992
; ª­®¯ª  "Ok"
8001
; ª­®¯ª  "Ok"
7993
        DlgBtn  ,4,1,7,1,aOk,0xD
8002
        DlgBtn  ,4,1,7,1,aOk,0xD
7994
 
8003
 
7995
; ¤¨ «®£ ª®¯¨à®¢ ­¨ï
8004
; ¤¨ «®£ ª®¯¨à®¢ ­¨ï
7996
copy_dlgdata:
8005
copy_dlgdata:
7997
        dd      1
8006
        dd      1
7998
.x      dd      -1
8007
.x      dd      -1
7999
.y      dd      -1
8008
.y      dd      -1
8000
.width  dd      ?
8009
.width  dd      ?
8001
.height dd      4
8010
.height dd      4
8002
        dd      4
8011
        dd      4
8003
        dd      2
8012
        dd      2
8004
        dd      aCopyCaption
8013
        dd      aCopyCaption
8005
.main_color db ?
8014
.main_color db ?
8006
.border_color db ?
8015
.border_color db ?
8007
.header_color db ?
8016
.header_color db ?
8008
        db      0
8017
        db      0
8009
        dd      ?
8018
        dd      ?
8010
        dd      0
8019
        dd      0
8011
        dd      0
8020
        dd      0
8012
        dd      4
8021
        dd      4
8013
; áâப  'Š®¯¨à®¢ âì "%s" ¢:'
8022
; áâப  'Š®¯¨à®¢ âì "%s" ¢:'
8014
.lcopy  DlgLbl  ,1,0,,0,CopySourceTextBuf,0
8023
.lcopy  DlgLbl  ,1,0,,0,CopySourceTextBuf,0
8015
; ¯®«¥ । ªâ¨à®¢ ­¨ï á ¨¬¥­¥¬ ä ©« /¯ ¯ª¨ ­ §­ ç¥­¨ï
8024
; ¯®«¥ । ªâ¨à®¢ ­¨ï á ¨¬¥­¥¬ ä ©« /¯ ¯ª¨ ­ §­ ç¥­¨ï
8016
.ename  DlgEdit ,1,1,,1,CopyDestEditBuf,0
8025
.ename  DlgEdit ,1,1,,1,CopyDestEditBuf,0
8017
; ª­®¯ª  "ª®¯¨à®¢ âì"
8026
; ª­®¯ª  "ª®¯¨à®¢ âì"
8018
.copy   DlgBtn  ,,3,,3,aCopy,18h
8027
.copy   DlgBtn  ,,3,,3,aCopy,18h
8019
; ª­®¯ª  "®â¬¥­¨âì"
8028
; ª­®¯ª  "®â¬¥­¨âì"
8020
.cnl    DlgBtn  ,,3,,3,aCancelB,8
8029
.cnl    DlgBtn  ,,3,,3,aCancelB,8
8021
 
8030
 
8022
struct MkDir_Dlgdata
8031
struct MkDir_Dlgdata
8023
        dd      1
8032
        dd      1
8024
        dd      -1, -1
8033
        dd      -1, -1
8025
width   dd      ?
8034
width   dd      ?
8026
height  dd      4
8035
height  dd      4
8027
        dd      4, 2
8036
        dd      4, 2
8028
        dd      aMkDirCaption
8037
        dd      aMkDirCaption
8029
        dd      ?, ?
8038
        dd      ?, ?
8030
        dd      0
8039
        dd      0
8031
        dd      0
8040
        dd      0
8032
        dd      4
8041
        dd      4
8033
; ‘âப  "‘®§¤ âì ¯ ¯ªã"
8042
; ‘âப  "‘®§¤ âì ¯ ¯ªã"
8034
        DlgLbl  ,1,0,aMkDirLen,0,aMkDir,0
8043
        DlgLbl  ,1,0,aMkDirLen,0,aMkDir,0
8035
; ¯®«¥ । ªâ¨à®¢ ­¨ï á ¨¬¥­¥¬ ᮧ¤ ¢ ¥¬®© ¯ ¯ª¨
8044
; ¯®«¥ । ªâ¨à®¢ ­¨ï á ¨¬¥­¥¬ ᮧ¤ ¢ ¥¬®© ¯ ¯ª¨
8036
dnam    DlgEdit ,1,1,,1,CopyDestEditBuf,0xC
8045
dnam    DlgEdit ,1,1,,1,CopyDestEditBuf,0xC
8037
; ª­®¯ª  "à®¤®«¦¨âì"
8046
; ª­®¯ª  "à®¤®«¦¨âì"
8038
cont    DlgBtn  ,,3,,3,a_Continue,18h
8047
cont    DlgBtn  ,,3,,3,a_Continue,18h
8039
; ª­®¯ª  "®â¬¥­¨âì"
8048
; ª­®¯ª  "®â¬¥­¨âì"
8040
cnl     DlgBtn  ,,3,,3,aCancelB,8
8049
cnl     DlgBtn  ,,3,,3,aCancelB,8
8041
ends
8050
ends
8042
 
8051
 
8043
mkdir_dlgdata MkDir_Dlgdata
8052
mkdir_dlgdata MkDir_Dlgdata
8044
 
8053
 
8045
; ¤¨ «®£ ¢ë¤¥«¥­¨ï/á­ïâ¨ï
8054
; ¤¨ «®£ ¢ë¤¥«¥­¨ï/á­ïâ¨ï
8046
mark_dlgdata:
8055
mark_dlgdata:
8047
        dd      1
8056
        dd      1
8048
        dd      -1, -1
8057
        dd      -1, -1
8049
        dd      37, 1
8058
        dd      37, 1
8050
        dd      4, 2
8059
        dd      4, 2
8051
.title  dd      ?
8060
.title  dd      ?
8052
        dd      ?, ?
8061
        dd      ?, ?
8053
        dd      0, 0
8062
        dd      0, 0
8054
        dd      1
8063
        dd      1
8055
; ¯®«¥ । ªâ¨à®¢ ­¨ï
8064
; ¯®«¥ । ªâ¨à®¢ ­¨ï
8056
.edit   DlgEdit ,1, 0, 35, 0, enter_string_buf,
8065
.edit   DlgEdit ,1, 0, 35, 0, enter_string_buf,
8057
 
8066
 
8058
; ¤¨ «®£ ¡ëáâண® ¯®¨áª  ¢ ¯ ­¥«¨ (Alt+¡ãª¢ë)
8067
; ¤¨ «®£ ¡ëáâண® ¯®¨áª  ¢ ¯ ­¥«¨ (Alt+¡ãª¢ë)
8059
QuickSearchDlg:
8068
QuickSearchDlg:
8060
        dd      5
8069
        dd      5
8061
.x      dd      ?
8070
.x      dd      ?
8062
.y      dd      ?
8071
.y      dd      ?
8063
        dd      20, 1
8072
        dd      20, 1
8064
        dd      1, 1
8073
        dd      1, 1
8065
        dd      aSearch
8074
        dd      aSearch
8066
        dd      ?, ?
8075
        dd      ?, ?
8067
        dd      0, 0
8076
        dd      0, 0
8068
        dd      1
8077
        dd      1
8069
; ¯®«¥ । ªâ¨à®¢ ­¨ï
8078
; ¯®«¥ । ªâ¨à®¢ ­¨ï
8070
        DlgEdit ,1, 0, 18, 0, quick_search_buf, 1Ch
8079
        DlgEdit ,1, 0, 18, 0, quick_search_buf, 1Ch
8071
 
8080
 
8072
; ¤¨ «®£ ¯®¨áª  ¢ ä ©«¥ ¤«ï ¯à®á¬®âà騪  ¨ । ªâ®à 
8081
; ¤¨ «®£ ¯®¨áª  ¢ ä ©«¥ ¤«ï ¯à®á¬®âà騪  ¨ । ªâ®à 
8073
struct FindInFileDlgdata
8082
struct FindInFileDlgdata
8074
        dd      1
8083
        dd      1
8075
x       dd      -1
8084
x       dd      -1
8076
y       dd      -1
8085
y       dd      -1
8077
width   dd      ?
8086
width   dd      ?
8078
height  dd      7
8087
height  dd      7
8079
        dd      4, 2
8088
        dd      4, 2
8080
        dd      aSearch
8089
        dd      aSearch
8081
        dd      ?, ?
8090
        dd      ?, ?
8082
        dd      0, 0
8091
        dd      0, 0
8083
        dd      8
8092
        dd      8
8084
; ‘âப  "ˆáª âì"
8093
; ‘âப  "ˆáª âì"
8085
        DlgLbl  ,1,0,aSearchForLen,0,aSearchFor,0
8094
        DlgLbl  ,1,0,aSearchForLen,0,aSearchFor,0
8086
; ¯®«¥ । ªâ¨à®¢ ­¨ï á ⥪á⮬ ¤«ï ¯®¨áª 
8095
; ¯®«¥ । ªâ¨à®¢ ­¨ï á ⥪á⮬ ¤«ï ¯®¨áª 
8087
efind   DlgEdit ,1,1,,1,SearchStringEditBuf,0xC
8096
efind   DlgEdit ,1,1,,1,SearchStringEditBuf,0xC
8088
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
8097
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
8089
        DlgLine ,-1,2,-1,2
8098
        DlgLine ,-1,2,-1,2
8090
; ä« ¦®ª "“ç¨â뢠âì ॣ¨áâà"
8099
; ä« ¦®ª "“ç¨â뢠âì ॣ¨áâà"
8091
case    DlgCheck,1,3,-1,3,aCaseSensitive,18h     ; default: search is case sensitive
8100
case    DlgCheck,1,3,-1,3,aCaseSensitive,18h     ; default: search is case sensitive
8092
; ä« ¦®ª "’®«ìª® æ¥«ë¥ á«®¢ "
8101
; ä« ¦®ª "’®«ìª® æ¥«ë¥ á«®¢ "
8093
whole   DlgCheck,1,4,-1,4,aWholeWords,8       ; default: do NOT search whole words only
8102
whole   DlgCheck,1,4,-1,4,aWholeWords,8       ; default: do NOT search whole words only
8094
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
8103
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
8095
        DlgLine ,-1,5,-1,5
8104
        DlgLine ,-1,5,-1,5
8096
; ª­®¯ª  "ˆáª âì"
8105
; ª­®¯ª  "ˆáª âì"
8097
search  DlgBtn ,,6,,6,aSearchB,18h
8106
search  DlgBtn ,,6,,6,aSearchB,18h
8098
; ª­®¯ª  "®â¬¥­¨âì"
8107
; ª­®¯ª  "®â¬¥­¨âì"
8099
cnl     DlgBtn ,,6,,6,aCancelB,8
8108
cnl     DlgBtn ,,6,,6,aCancelB,8
8100
ends
8109
ends
8101
 
8110
 
8102
find_in_file_dlgdata FindInFileDlgdata
8111
find_in_file_dlgdata FindInFileDlgdata
8103
 
8112
 
8104
; ¯¥à¢ë© ¤¨ «®£ ¯®¨áª  ¢ ä ©« å (§ ¯à®á)
8113
; ¯¥à¢ë© ¤¨ «®£ ¯®¨áª  ¢ ä ©« å (§ ¯à®á)
8105
struct FileSearch_QueryTemplate
8114
struct FileSearch_QueryTemplate
8106
        dd      1
8115
        dd      1
8107
x       dd      ?
8116
x       dd      ?
8108
y       dd      ?
8117
y       dd      ?
8109
width   dd      ?
8118
width   dd      ?
8110
height  dd      9
8119
height  dd      9
8111
        dd      4, 2
8120
        dd      4, 2
8112
        dd      aFileSearch
8121
        dd      aFileSearch
8113
        dd      ?
8122
        dd      ?
8114
        dd      0
8123
        dd      0
8115
        dd      0, 0
8124
        dd      0, 0
8116
        dd      10
8125
        dd      10
8117
; áâப -¯à¨£« è¥­¨¥ ¤«ï ¢¢®¤  ¬ áª¨
8126
; áâப -¯à¨£« è¥­¨¥ ¤«ï ¢¢®¤  ¬ áª¨
8118
        DlgLbl  ,1,0,aFileMasksLen,0,aFileMasks,0
8127
        DlgLbl  ,1,0,aFileMasksLen,0,aFileMasks,0
8119
; ¯®«¥ ¢¢®¤  ¤«ï ¬ áª¨
8128
; ¯®«¥ ¢¢®¤  ¤«ï ¬ áª¨
8120
edit1   DlgEdit ,1,1,,1,,0xC
8129
edit1   DlgEdit ,1,1,,1,,0xC
8121
; áâப -¯à¨£« è¥­¨¥ ¤«ï ⥪áâ  ¯®¨áª 
8130
; áâப -¯à¨£« è¥­¨¥ ¤«ï ⥪áâ  ¯®¨áª 
8122
        DlgLbl  ,1,2,aContainingTextLen,2,aContainingText,0
8131
        DlgLbl  ,1,2,aContainingTextLen,2,aContainingText,0
8123
; ¯®«¥ ¢¢®¤  ¤«ï ⥪áâ  ¯®¨áª 
8132
; ¯®«¥ ¢¢®¤  ¤«ï ⥪áâ  ¯®¨áª 
8124
edit2   DlgEdit ,1,3,,3,,8
8133
edit2   DlgEdit ,1,3,,3,,8
8125
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
8134
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
8126
        DlgLine ,-1,4,-1,4
8135
        DlgLine ,-1,4,-1,4
8127
; ä« ¦®ª "“ç¨â뢠âì ॣ¨áâà"
8136
; ä« ¦®ª "“ç¨â뢠âì ॣ¨áâà"
8128
case    DlgCheck,1,5,-1,5,aCaseSensitive,       ; will be initialized from find_in_file_dlgdata
8137
case    DlgCheck,1,5,-1,5,aCaseSensitive,       ; will be initialized from find_in_file_dlgdata
8129
; ä« ¦®ª "’®«ìª® æ¥«ë¥ á«®¢ "
8138
; ä« ¦®ª "’®«ìª® æ¥«ë¥ á«®¢ "
8130
whole   DlgCheck,1,6,-1,6,aWholeWords,       ; will be initialized from find_in_file_dlgdata
8139
whole   DlgCheck,1,6,-1,6,aWholeWords,       ; will be initialized from find_in_file_dlgdata
8131
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
8140
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
8132
        DlgLine ,-1,7,-1,7
8141
        DlgLine ,-1,7,-1,7
8133
; ª­®¯ª  "ˆáª âì"
8142
; ª­®¯ª  "ˆáª âì"
8134
search  DlgBtn  ,,8,,8,aSearchB,18h
8143
search  DlgBtn  ,,8,,8,aSearchB,18h
8135
; ª­®¯ª  "®â¬¥­¨âì"
8144
; ª­®¯ª  "®â¬¥­¨âì"
8136
cnl     DlgBtn  ,,8,,8,aCancelB,8
8145
cnl     DlgBtn  ,,8,,8,aCancelB,8
8137
ends
8146
ends
8138
 
8147
 
8139
filesearch_query_template FileSearch_QueryTemplate
8148
filesearch_query_template FileSearch_QueryTemplate
8140
 
8149
 
8141
; ¢â®à®© ¤¨ «®£ ¯®¨áª  ¢ ä ©« å (᪠­¨à®¢ ­¨¥)
8150
; ¢â®à®© ¤¨ «®£ ¯®¨áª  ¢ ä ©« å (᪠­¨à®¢ ­¨¥)
8142
struct FileSearch_SearchTemplate
8151
struct FileSearch_SearchTemplate
8143
        dd      1
8152
        dd      1
8144
x       dd      ?
8153
x       dd      ?
8145
y       dd      ?
8154
y       dd      ?
8146
width   dd      ?
8155
width   dd      ?
8147
height  dd      ?
8156
height  dd      ?
8148
        dd      4, 2
8157
        dd      4, 2
8149
caption dd      ?
8158
caption dd      ?
8150
        dd      ?
8159
        dd      ?
8151
        dd      0
8160
        dd      0
8152
        dd      0, 0
8161
        dd      0, 0
8153
        dd      9
8162
        dd      9
8154
; ᯨ᮪ ­ ©¤¥­­ëå ä ©«®¢
8163
; ᯨ᮪ ­ ©¤¥­­ëå ä ©«®¢
8155
list1   DlgList ,0,0,,,,0
8164
list1   DlgList ,0,0,,,,0
8156
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
8165
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
8157
lin1    DlgLine ,-1,,-1,
8166
lin1    DlgLine ,-1,,-1,
8158
; áâப  "®¨áª  ¢:" «¨¡® "®¨áª § ª®­ç¥­..."
8167
; áâப  "®¨áª  ¢:" «¨¡® "®¨áª § ª®­ç¥­..."
8159
lbl1    DlgLbl  ,1
8168
lbl1    DlgLbl  ,1
8160
; áâப  á ⥪ã饩 ¯ ¯ª®©
8169
; áâப  á ⥪ã饩 ¯ ¯ª®©
8161
lbl2    DlgLbl
8170
lbl2    DlgLbl
8162
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
8171
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
8163
lin2    DlgLine ,-1,,-1,
8172
lin2    DlgLine ,-1,,-1,
8164
; ª­®¯ª¨
8173
; ª­®¯ª¨
8165
btn1    DlgBtn  ,,,,,aNewSearch,8
8174
btn1    DlgBtn  ,,,,,aNewSearch,8
8166
btn2    DlgBtn  ,,,,,aGoto,1Ch
8175
btn2    DlgBtn  ,,,,,aGoto,1Ch
8167
btn3    DlgBtn  ,,,,,aView,8
8176
btn3    DlgBtn  ,,,,,aView,8
8168
btn4    DlgBtn  ,,,,,aCancelB2,8
8177
btn4    DlgBtn  ,,,,,aCancelB2,8
8169
ends
8178
ends
8170
 
8179
 
8171
filesearch_search_template FileSearch_SearchTemplate
8180
filesearch_search_template FileSearch_SearchTemplate
8172
 
8181
 
8173
RetryOrCancelBtn:
8182
RetryOrCancelBtn:
8174
        dd      aRetry
8183
        dd      aRetry
8175
        dd      a_Cancel
8184
        dd      a_Cancel
8176
DeleteOrKeepBtn:
8185
DeleteOrKeepBtn:
8177
        dd      a_Delete
8186
        dd      a_Delete
8178
        dd      aKeep
8187
        dd      aKeep
8179
RetryOrIgnoreBtn:
8188
RetryOrIgnoreBtn:
8180
        dd      aRetry
8189
        dd      aRetry
8181
        dd      aIgnore
8190
        dd      aIgnore
8182
DeleteOrCancelBtn:
8191
DeleteOrCancelBtn:
8183
        dd      a_Delete
8192
        dd      a_Delete
8184
        dd      a_Cancel
8193
        dd      a_Cancel
8185
DeleteErrorBtn:
8194
DeleteErrorBtn:
8186
        dd      aRetry
8195
        dd      aRetry
8187
SkipOrCancelBtn:
8196
SkipOrCancelBtn:
8188
        dd      aSkip
8197
        dd      aSkip
8189
        dd      aSkipAll
8198
        dd      aSkipAll
8190
        dd      a_Cancel
8199
        dd      a_Cancel
8191
ContinueBtn:
8200
ContinueBtn:
8192
        dd      aContinue
8201
        dd      aContinue
8193
EditorExitBtn:
8202
EditorExitBtn:
8194
        dd      aSave
8203
        dd      aSave
8195
        dd      aDontSave
8204
        dd      aDontSave
8196
        dd      aContinueEdit
8205
        dd      aContinueEdit
8197
YesOrNoBtn:
8206
YesOrNoBtn:
8198
        dd      aYes
8207
        dd      aYes
8199
        dd      aNo
8208
        dd      aNo
8200
 
8209
 
8201
aCannotOpenFile_ptr     dd      aCannotOpenFile
8210
aCannotOpenFile_ptr     dd      aCannotOpenFile
8202
aCannotCreateThread_ptr dd      aCannotCreateThread
8211
aCannotCreateThread_ptr dd      aCannotCreateThread
8203
ConfirmCancelMsg        dd      aConfirmCancel
8212
ConfirmCancelMsg        dd      aConfirmCancel
8204
EditConfigErr_ptr:
8213
EditConfigErr_ptr:
8205
        dd      aEditConfigErr1
8214
        dd      aEditConfigErr1
8206
        dd      aEditConfigErr2
8215
        dd      aEditConfigErr2
8207
if lang eq ru
8216
if lang eq ru
8208
aDeleteCaption          db      '“¤ «¥­¨¥',0
8217
aDeleteCaption          db      '“¤ «¥­¨¥',0
8209
aConfirmDeleteText      db      '‚ë å®â¨â¥ 㤠«¨âì',0
8218
aConfirmDeleteText      db      '‚ë å®â¨â¥ 㤠«¨âì',0
8210
aDeleteFolder           db      ' ¯ ¯ªã',0
8219
aDeleteFolder           db      ' ¯ ¯ªã',0
8211
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
8220
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
8212
aDeleteFile             db      ' ä ©«',0
8221
aDeleteFile             db      ' ä ©«',0
8213
aCancelB                db      '[ Žâ¬¥­¨âì ]',0
8222
aCancelB                db      '[ Žâ¬¥­¨âì ]',0
8214
aCancelBLength = $ - aCancelB - 1
8223
aCancelBLength = $ - aCancelB - 1
8215
aCancelB2               db      '[ Žâ¬¥­  ]',0
8224
aCancelB2               db      '[ Žâ¬¥­  ]',0
8216
aCancelB2Length = $ - aCancelB2 - 1
8225
aCancelB2Length = $ - aCancelB2 - 1
8217
aCopyCaption            db      'Š®¯¨à®¢ ­¨¥',0
8226
aCopyCaption            db      'Š®¯¨à®¢ ­¨¥',0
8218
aCopy                   db      '[ Š®¯¨à®¢ âì ]',0
8227
aCopy                   db      '[ Š®¯¨à®¢ âì ]',0
8219
aCopyLength = $ - aCopy - 1
8228
aCopyLength = $ - aCopy - 1
8220
a_Continue              db      '[ à®¤®«¦¨âì ]',0
8229
a_Continue              db      '[ à®¤®«¦¨âì ]',0
8221
a_ContinueLength = $ - a_Continue - 1
8230
a_ContinueLength = $ - a_Continue - 1
8222
aCopy1                  db      'Š®¯¨à®¢ âì ',0
8231
aCopy1                  db      'Š®¯¨à®¢ âì ',0
8223
aCopy2                  db      ' ¢:',0
8232
aCopy2                  db      ' ¢:',0
8224
aError                  db      'Žè¨¡ª ',0
8233
aError                  db      'Žè¨¡ª ',0
8225
aContinue               db      'à®¤®«¦¨âì',0
8234
aContinue               db      'à®¤®«¦¨âì',0
8226
aRetry                  db      '®¢â®à¨âì',0
8235
aRetry                  db      '®¢â®à¨âì',0
8227
a_Cancel                db      'Žâ¬¥­¨âì',0
8236
a_Cancel                db      'Žâ¬¥­¨âì',0
8228
a_Delete                db      '“¤ «¨âì',0
8237
a_Delete                db      '“¤ «¨âì',0
8229
aSkip                   db      'à®¯ãáâ¨âì',0
8238
aSkip                   db      'à®¯ãáâ¨âì',0
8230
aSkipAll                db      'à®¯ãáâ¨âì ¢á¥',0
8239
aSkipAll                db      'à®¯ãáâ¨âì ¢á¥',0
8231
aYes                    db      '„ ',0
8240
aYes                    db      '„ ',0
8232
aNo                     db      '¥â',0
8241
aNo                     db      '¥â',0
8233
error0msg               db      '‘âà ­­®... ¥â ®è¨¡ª¨',0
8242
error0msg               db      '‘âà ­­®... ¥â ®è¨¡ª¨',0
8234
error1msg               db      '‘âà ­­®... ¥ ®¯à¥¤¥«¥­  ¡ §  ¨/¨«¨ à §¤¥« ¦ñá⪮£® ¤¨áª ',0
8243
error1msg               db      '‘âà ­­®... ¥ ®¯à¥¤¥«¥­  ¡ §  ¨/¨«¨ à §¤¥« ¦ñá⪮£® ¤¨áª ',0
8235
error2msg               db      '”ã­ªæ¨ï ­¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï ¤ ­­®© ä ©«®¢®© á¨á⥬ë',0
8244
error2msg               db      '”ã­ªæ¨ï ­¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï ¤ ­­®© ä ©«®¢®© á¨á⥬ë',0
8236
error3msg               db      '¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬ ',0
8245
error3msg               db      '¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬ ',0
8237
error4msg               db      '‘âà ­­®... Žè¨¡ª  4',0
8246
error4msg               db      '‘âà ­­®... Žè¨¡ª  4',0
8238
error5msg               db      '” ©« ­¥ ­ ©¤¥­',0
8247
error5msg               db      '” ©« ­¥ ­ ©¤¥­',0
8239
error6msg               db      '” ©« § ª®­ç¨«áï',0
8248
error6msg               db      '” ©« § ª®­ç¨«áï',0
8240
error7msg               db      '‘âà ­­®... “ª § â¥«ì ¢­¥ ¯ ¬ï⨠¯à¨«®¦¥­¨ï',0
8249
error7msg               db      '‘âà ­­®... “ª § â¥«ì ¢­¥ ¯ ¬ï⨠¯à¨«®¦¥­¨ï',0
8241
error8msg               db      '„¨áª § ¯®«­¥­',0
8250
error8msg               db      '„¨áª § ¯®«­¥­',0
8242
error9msg               db      '” ©«®¢ ï áâàãªâãà  à §àã襭 ',0
8251
error9msg               db      '” ©«®¢ ï áâàãªâãà  à §àã襭 ',0
8243
error10msg              db      '„®áâ㯠§ ¯à¥éñ­',0
8252
error10msg              db      '„®áâ㯠§ ¯à¥éñ­',0
8244
error11msg              db      'Žè¨¡ª  ãáâனá⢠',0
8253
error11msg              db      'Žè¨¡ª  ãáâனá⢠',0
8245
error30msg              db      '¥¤®áâ â®ç­® ¯ ¬ïâ¨',0
8254
error30msg              db      '¥¤®áâ â®ç­® ¯ ¬ïâ¨',0
8246
error31msg              db      '” ©« ­¥ ï¥âáï ¨á¯®«­ï¥¬ë¬',0
8255
error31msg              db      '” ©« ­¥ ï¥âáï ¨á¯®«­ï¥¬ë¬',0
8247
error32msg              db      '‘«¨èª®¬ ¬­®£® ¯à®æ¥áᮢ',0
8256
error32msg              db      '‘«¨èª®¬ ¬­®£® ¯à®æ¥áᮢ',0
8248
aUnknownError           db      '¥¨§¢¥áâ­ë© ª®¤ ®è¨¡ª¨: ',0
8257
aUnknownError           db      '¥¨§¢¥áâ­ë© ª®¤ ®è¨¡ª¨: ',0
8249
aCannotReadFolder       db      '¥ ¬®£ã ¯à®ç¨â âì ¯ ¯ªã',0
8258
aCannotReadFolder       db      '¥ ¬®£ã ¯à®ç¨â âì ¯ ¯ªã',0
8250
aRunError               db      'Žè¨¡ª  ¯à¨ § ¯ã᪥ ¯à®£à ¬¬ë:',0
8259
aRunError               db      'Žè¨¡ª  ¯à¨ § ¯ã᪥ ¯à®£à ¬¬ë:',0
8251
aFileNameTooBig         db      '®«­®¥ ¨¬ï ä ©«  ᫨誮¬ ¤«¨­­®¥',0
8260
aFileNameTooBig         db      '®«­®¥ ¨¬ï ä ©«  ᫨誮¬ ¤«¨­­®¥',0
8252
aFolderNameTooBig       db      '®«­®¥ ¨¬ï ¯ ¯ª¨ ᫨誮¬ ¤«¨­­®¥',0
8261
aFolderNameTooBig       db      '®«­®¥ ¨¬ï ¯ ¯ª¨ ᫨誮¬ ¤«¨­­®¥',0
8253
aCmdLineTooBig          db      'Š®¬ ­¤­ ï áâப  ¯à¥¢ë蠥⠣࠭¨æã OS ¢ 256 ᨬ¢®«®¢',0
8262
aCmdLineTooBig          db      'Š®¬ ­¤­ ï áâப  ¯à¥¢ë蠥⠣࠭¨æã OS ¢ 256 ᨬ¢®«®¢',0
8254
aCannotCopyToSelf       db      '” ©« ­¥ ¬®¦¥â ¡ëâì ᪮¯¨à®¢ ­ ¢ á ¬®£® ᥡï',0
8263
aCannotCopyToSelf       db      '” ©« ­¥ ¬®¦¥â ¡ëâì ᪮¯¨à®¢ ­ ¢ á ¬®£® ᥡï',0
8255
aCannotReadFile         db      '¥ ¬®£ã ¯à®ç¨â âì ä ©«',0
8264
aCannotReadFile         db      '¥ ¬®£ã ¯à®ç¨â âì ä ©«',0
8256
aIncompleteFile         db      'ë« ¯®«ã祭 ­¥¯®«­ë© ä ©«. “¤ «¨âì ¥£®?',0
8265
aIncompleteFile         db      'ë« ¯®«ã祭 ­¥¯®«­ë© ä ©«. “¤ «¨âì ¥£®?',0
8257
aKeep                   db      'Žáâ ¢¨âì',0
8266
aKeep                   db      'Žáâ ¢¨âì',0
8258
aCannotWriteFile        db      '¥ ¬®£ã § ¯¨á âì ¢ ä ©«',0
8267
aCannotWriteFile        db      '¥ ¬®£ã § ¯¨á âì ¢ ä ©«',0
8259
aCannotDeleteFile       db      '¥ ¬®£ã 㤠«¨âì ä ©«',0
8268
aCannotDeleteFile       db      '¥ ¬®£ã 㤠«¨âì ä ©«',0
8260
aCannotDeleteFolder     db      '¥ ¬®£ã 㤠«¨âì ¯ ¯ªã',0
8269
aCannotDeleteFolder     db      '¥ ¬®£ã 㤠«¨âì ¯ ¯ªã',0
8261
aNotFolder              db      '­¥ ï¥âáï ¯ ¯ª®©',0
8270
aNotFolder              db      '­¥ ï¥âáï ¯ ¯ª®©',0
8262
aIgnore                 db      'ˆ£­®à¨à®¢ âì',0
8271
aIgnore                 db      'ˆ£­®à¨à®¢ âì',0
8263
aMkDirCaption           db      '‘®§¤ ­¨¥ ¯ ¯ª¨',0
8272
aMkDirCaption           db      '‘®§¤ ­¨¥ ¯ ¯ª¨',0
8264
aMkDir                  db      '‘®§¤ âì ¯ ¯ªã',0
8273
aMkDir                  db      '‘®§¤ âì ¯ ¯ªã',0
8265
aMkDirLen = $ - aMkDir - 1
8274
aMkDirLen = $ - aMkDir - 1
8266
aCannotMakeFolder       db      '¥ ¬®£ã ᮧ¤ âì ¯ ¯ªã',0
8275
aCannotMakeFolder       db      '¥ ¬®£ã ᮧ¤ âì ¯ ¯ªã',0
8267
aName                   db      3,'ˆ¬ï'
8276
aName                   db      3,'ˆ¬ï'
8268
aSize                   db      6,' §¬¥à'
8277
aSize                   db      6,' §¬¥à'
8269
aDate                   db      4,'„ â '
8278
aDate                   db      4,'„ â '
8270
aTime                   db      5,'∴•'
8279
aTime                   db      5,'∴•'
8271
aCannotLoadDLL          db      '¥ ¬®£ã § £à㧨âì DLL',0
8280
aCannotLoadDLL          db      '¥ ¬®£ã § £à㧨âì DLL',0
8272
aCannotLoadPlugin       db      '¥ ¬®£ã § £à㧨âì ¯« £¨­',0
8281
aCannotLoadPlugin       db      '¥ ¬®£ã § £à㧨âì ¯« £¨­',0
8273
aInvalidDLL             db      '” ©« ­¥ ­ ©¤¥­ ¨«¨ ¨¬¥¥â ­¥¢¥à­ë© ä®à¬ â',0
8282
aInvalidDLL             db      '” ©« ­¥ ­ ©¤¥­ ¨«¨ ¨¬¥¥â ­¥¢¥à­ë© ä®à¬ â',0
8274
aMissingExport          db      '¥®¡å®¤¨¬ ï äã­ªæ¨ï ­¥ ­ ©¤¥­ ',0
8283
aMissingExport          db      '¥®¡å®¤¨¬ ï äã­ªæ¨ï ­¥ ­ ©¤¥­ ',0
8275
aInitFailed             db      'Žè¨¡ª  ¯à¨ ¨­¨æ¨ «¨§ æ¨¨',0
8284
aInitFailed             db      'Žè¨¡ª  ¯à¨ ¨­¨æ¨ «¨§ æ¨¨',0
8276
aIncompatibleVersion    db      '¥á®¢¬¥á⨬ ï ¢¥àá¨ï',0
8285
aIncompatibleVersion    db      '¥á®¢¬¥á⨬ ï ¢¥àá¨ï',0
8277
aTables                 db      '’ ¡«¨æë',0
8286
aTables                 db      '’ ¡«¨æë',0
8278
aSelect                 db      '®¬¥â¨âì',0
8287
aSelect                 db      '®¬¥â¨âì',0
8279
aDeselect               db      '‘­ïâì',0
8288
aDeselect               db      '‘­ïâì',0
8280
aCannotOpenFile         db      'Žè¨¡ª  ¯à¨ ®âªàë⨨ ä ©« ',0
8289
aCannotOpenFile         db      'Žè¨¡ª  ¯à¨ ®âªàë⨨ ä ©« ',0
8281
aCannotCreateThread     db      'Žè¨¡ª  ¯à¨ ᮧ¤ ­¨¨ ¯®â®ª ',0
8290
aCannotCreateThread     db      'Žè¨¡ª  ¯à¨ ᮧ¤ ­¨¨ ¯®â®ª ',0
8282
aCannotSetFolder        db      '¥ ¬®£ã § ©â¨ ¢ ¯ ¯ªã',0
8291
aCannotSetFolder        db      '¥ ¬®£ã § ©â¨ ¢ ¯ ¯ªã',0
8283
aSearch                 db      '®¨áª',0
8292
aSearch                 db      '®¨áª',0
8284
aSearchB                db      '[ ˆáª âì ]',0
8293
aSearchB                db      '[ ˆáª âì ]',0
8285
aSearchBLength = $ - aSearchB - 1
8294
aSearchBLength = $ - aSearchB - 1
8286
aSearchFor              db      'ˆáª âì',0
8295
aSearchFor              db      'ˆáª âì',0
8287
aSearchForLen = $ - aSearchFor - 1
8296
aSearchForLen = $ - aSearchFor - 1
8288
aCaseSensitive          db      '“ç¨â뢠âì ॣ¨áâà',0
8297
aCaseSensitive          db      '“ç¨â뢠âì ॣ¨áâà',0
8289
aWholeWords             db      '’®«ìª® æ¥«ë¥ á«®¢ ',0
8298
aWholeWords             db      '’®«ìª® æ¥«ë¥ á«®¢ ',0
8290
aReverseSearch          db      'Ž¡à â­ë© ¯®¨áª',0
8299
aReverseSearch          db      'Ž¡à â­ë© ¯®¨áª',0
8291
aStringNotFound         db      '‘âப  ­¥ ­ ©¤¥­ ',0
8300
aStringNotFound         db      '‘âப  ­¥ ­ ©¤¥­ ',0
8292
aFileSearch             db      '®¨áª ä ©« ',0
8301
aFileSearch             db      '®¨áª ä ©« ',0
8293
aFileMasks              db      'Ž¤­  ¨«¨ ­¥áª®«ìª® ¬ á®ª ä ©«®¢:',0
8302
aFileMasks              db      'Ž¤­  ¨«¨ ­¥áª®«ìª® ¬ á®ª ä ©«®¢:',0
8294
aFileMasksLen = $ - aFileMasks - 1
8303
aFileMasksLen = $ - aFileMasks - 1
8295
aContainingText         db      '‘®¤¥à¦ é¨å ⥪áâ:',0
8304
aContainingText         db      '‘®¤¥à¦ é¨å ⥪áâ:',0
8296
aContainingTextLen = $ - aContainingText - 1
8305
aContainingTextLen = $ - aContainingText - 1
8297
aSearchingIn            db      '®¨áª "" ¢:',0
8306
aSearchingIn            db      '®¨áª "" ¢:',0
8298
aSearchingInLen = $ - aSearchingIn - 1
8307
aSearchingInLen = $ - aSearchingIn - 1
8299
aSearchDone             db      '®¨áª § ª®­ç¥­.  ©¤¥­® ? ä ©«(®¢)',0
8308
aSearchDone             db      '®¨áª § ª®­ç¥­.  ©¤¥­® ? ä ©«(®¢)',0
8300
aSearchDoneLen = $ - aSearchDone - 1
8309
aSearchDoneLen = $ - aSearchDone - 1
8301
aNewSearch              db      '[ ®¢ë© ¯®¨áª ]',0
8310
aNewSearch              db      '[ ®¢ë© ¯®¨áª ]',0
8302
aNewSearchLen = $ - aNewSearch - 1
8311
aNewSearchLen = $ - aNewSearch - 1
8303
aGoto                   db      '[ ¥à¥©â¨ ]',0
8312
aGoto                   db      '[ ¥à¥©â¨ ]',0
8304
aGotoLen = $ - aGoto - 1
8313
aGotoLen = $ - aGoto - 1
8305
aView                   db      '[ ‘¬®âà¥âì ]',0
8314
aView                   db      '[ ‘¬®âà¥âì ]',0
8306
aViewLen = $ - aView - 1
8315
aViewLen = $ - aView - 1
8307
aEditConfigErr1         db      'Žè¨¡ª  ¢ ª®­ä¨£ãà æ¨¨ ¯« £¨­®¢ ¤«ï । ªâ®à .',0
8316
aEditConfigErr1         db      'Žè¨¡ª  ¢ ª®­ä¨£ãà æ¨¨ ¯« £¨­®¢ ¤«ï । ªâ®à .',0
8308
aEditConfigErr2         db      '®¯à®¡ã©â¥ ã¡à âì «¨è­¨¥ ¯« £¨­ë.',0
8317
aEditConfigErr2         db      '®¯à®¡ã©â¥ ã¡à âì «¨è­¨¥ ¯« £¨­ë.',0
8309
aEditNoMemory           db      '” ©« ᫨誮¬ ¢¥«¨ª ¤«ï § £à㧪¨ ¢ । ªâ®à.',0
8318
aEditNoMemory           db      '” ©« ᫨誮¬ ¢¥«¨ª ¤«ï § £à㧪¨ ¢ । ªâ®à.',0
8310
aLine                   db      '  ‘âப '
8319
aLine                   db      '  ‘âப '
8311
aCol                    db      '   Š®« '
8320
aCol                    db      '   Š®« '
8312
aEditorTitle            db      '¥¤ ªâ®à',0
8321
aEditorTitle            db      '¥¤ ªâ®à',0
8313
aFileModified           db      '” ©« ¡ë« ¨§¬¥­ñ­',0
8322
aFileModified           db      '” ©« ¡ë« ¨§¬¥­ñ­',0
8314
aSave                   db      '‘®åà ­¨âì',0
8323
aSave                   db      '‘®åà ­¨âì',0
8315
aDontSave               db      '¥ á®åà ­ïâì',0
8324
aDontSave               db      '¥ á®åà ­ïâì',0
8316
aContinueEdit           db      'à®¤®«¦¨âì । ªâ¨à®¢ ­¨¥',0
8325
aContinueEdit           db      'à®¤®«¦¨âì । ªâ¨à®¢ ­¨¥',0
8317
aCannotSaveToPlugin     db      '‘®åà ­¥­¨¥ ä ©«®¢ ­  ¯ ­¥«ïå ¯« £¨­®¢ ­¥ ¯®¤¤¥à¦¨¢ ¥âáï',0
8326
aCannotSaveToPlugin     db      '‘®åà ­¥­¨¥ ä ©«®¢ ­  ¯ ­¥«ïå ¯« £¨­®¢ ­¥ ¯®¤¤¥à¦¨¢ ¥âáï',0
8318
aCannotSearchOnPlugin   db      '®¨áª ­  ¯ ­¥«ïå ¯« £¨­®¢ ­¥ ¯®¤¤¥à¦¨¢ ¥âáï',0
8327
aCannotSearchOnPlugin   db      '®¨áª ­  ¯ ­¥«ïå ¯« £¨­®¢ ­¥ ¯®¤¤¥à¦¨¢ ¥âáï',0
8319
aCancelled              db      '„¥©á⢨¥ ¡ë«® ¯à¥à¢ ­®',0
8328
aCancelled              db      '„¥©á⢨¥ ¡ë«® ¯à¥à¢ ­®',0
8320
aConfirmCancel          db      '‚ë ¤¥©á⢨⥫쭮 å®â¨â¥ ®â¬¥­¨âì ¤¥©á⢨¥?',0
8329
aConfirmCancel          db      '‚ë ¤¥©á⢨⥫쭮 å®â¨â¥ ®â¬¥­¨âì ¤¥©á⢨¥?',0
8321
else
8330
else
8322
aDeleteCaption          db      'Delete',0
8331
aDeleteCaption          db      'Delete',0
8323
aConfirmDeleteText      db      'Do you wish to delete',0
8332
aConfirmDeleteText      db      'Do you wish to delete',0
8324
aDeleteFolder           db      ' the folder',0
8333
aDeleteFolder           db      ' the folder',0
8325
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
8334
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
8326
aDeleteFile             db      ' the file',0
8335
aDeleteFile             db      ' the file',0
8327
aDelete                 db      ' Delete ',0
8336
aDelete                 db      ' Delete ',0
8328
aDeleteLength = $ - aDelete - 1
8337
aDeleteLength = $ - aDelete - 1
8329
aCancel                 db      ' Cancel ',0
8338
aCancel                 db      ' Cancel ',0
8330
aCancelLength = $ - aCancel - 1
8339
aCancelLength = $ - aCancel - 1
8331
aCancelB                db      '[ Cancel ]',0
8340
aCancelB                db      '[ Cancel ]',0
8332
aCancelBLength = $ - aCancelB - 1
8341
aCancelBLength = $ - aCancelB - 1
8333
aCancelB2 = aCancelB
8342
aCancelB2 = aCancelB
8334
aCancelB2Length = $ - aCancelB2 - 1
8343
aCancelB2Length = $ - aCancelB2 - 1
8335
aCopyCaption            db      'Copy',0
8344
aCopyCaption            db      'Copy',0
8336
aCopy                   db      '[ Copy ]',0
8345
aCopy                   db      '[ Copy ]',0
8337
aCopyLength = $ - aCopy - 1
8346
aCopyLength = $ - aCopy - 1
8338
a_Continue              db      '[ Continue ]',0
8347
a_Continue              db      '[ Continue ]',0
8339
a_ContinueLength = $ - a_Continue - 1
8348
a_ContinueLength = $ - a_Continue - 1
8340
aCopy1                  db      'Copy "',0
8349
aCopy1                  db      'Copy "',0
8341
aCopy2                  db      '" to:',0
8350
aCopy2                  db      '" to:',0
8342
aError                  db      'Error',0
8351
aError                  db      'Error',0
8343
aContinue               db      'Continue',0
8352
aContinue               db      'Continue',0
8344
aRetry                  db      'Retry',0
8353
aRetry                  db      'Retry',0
8345
a_Cancel                db      'Cancel',0
8354
a_Cancel                db      'Cancel',0
8346
a_Delete                db      'Delete',0
8355
a_Delete                db      'Delete',0
8347
aSkip                   db      'Skip',0
8356
aSkip                   db      'Skip',0
8348
aSkipAll                db      'Skip all',0
8357
aSkipAll                db      'Skip all',0
8349
aYes                    db      'Yes',0
8358
aYes                    db      'Yes',0
8350
aNo                     db      'No',0
8359
aNo                     db      'No',0
8351
error0msg               db      'Strange... No error',0
8360
error0msg               db      'Strange... No error',0
8352
error1msg               db      'Strange... Hard disk base and/or partition not defined',0
8361
error1msg               db      'Strange... Hard disk base and/or partition not defined',0
8353
error2msg               db      'The file system does not support this function',0
8362
error2msg               db      'The file system does not support this function',0
8354
error3msg               db      'Unknown file system',0
8363
error3msg               db      'Unknown file system',0
8355
error4msg               db      'Strange... Error 4',0
8364
error4msg               db      'Strange... Error 4',0
8356
error5msg               db      'File not found',0
8365
error5msg               db      'File not found',0
8357
error6msg               db      'End of file',0
8366
error6msg               db      'End of file',0
8358
error7msg               db      'Strange... Pointer lies outside of application memory',0
8367
error7msg               db      'Strange... Pointer lies outside of application memory',0
8359
error8msg               db      'Disk is full',0
8368
error8msg               db      'Disk is full',0
8360
error9msg               db      'File structure is destroyed',0
8369
error9msg               db      'File structure is destroyed',0
8361
error10msg              db      'Access denied',0
8370
error10msg              db      'Access denied',0
8362
error11msg              db      'Device error',0
8371
error11msg              db      'Device error',0
8363
error30msg              db      'Not enough memory',0
8372
error30msg              db      'Not enough memory',0
8364
error31msg              db      'File is not executable',0
8373
error31msg              db      'File is not executable',0
8365
error32msg              db      'Too many processes',0
8374
error32msg              db      'Too many processes',0
8366
aUnknownError           db      'Unknown error code: ',0
8375
aUnknownError           db      'Unknown error code: ',0
8367
aCannotReadFolder       db      'Cannot read folder',0
8376
aCannotReadFolder       db      'Cannot read folder',0
8368
aRunError               db      'Cannot execute program:',0
8377
aRunError               db      'Cannot execute program:',0
8369
aFileNameTooBig         db      'Full file name is too long',0
8378
aFileNameTooBig         db      'Full file name is too long',0
8370
aFolderNameTooBig       db      'Full folder name is too long',0
8379
aFolderNameTooBig       db      'Full folder name is too long',0
8371
aCmdLineTooBig          db      'Command line is too long (OS limit is 256 symbols)',0
8380
aCmdLineTooBig          db      'Command line is too long (OS limit is 256 symbols)',0
8372
aCannotCopyToSelf       db      'File cannot be copied onto itself',0
8381
aCannotCopyToSelf       db      'File cannot be copied onto itself',0
8373
aCannotReadFile         db      'Cannot read file',0
8382
aCannotReadFile         db      'Cannot read file',0
8374
aIncompleteFile         db      'Incomplete file was retrieved. Delete it?',0
8383
aIncompleteFile         db      'Incomplete file was retrieved. Delete it?',0
8375
aKeep                   db      'Keep',0
8384
aKeep                   db      'Keep',0
8376
aCannotWriteFile        db      'Cannot write to the file',0
8385
aCannotWriteFile        db      'Cannot write to the file',0
8377
aCannotDeleteFile       db      'Cannot delete the file',0
8386
aCannotDeleteFile       db      'Cannot delete the file',0
8378
aCannotDeleteFolder     db      'Cannot delete the folder',0
8387
aCannotDeleteFolder     db      'Cannot delete the folder',0
8379
aNotFolder              db      'is not a folder',0
8388
aNotFolder              db      'is not a folder',0
8380
aIgnore                 db      'Ignore',0
8389
aIgnore                 db      'Ignore',0
8381
aMkDirCaption           db      'Make folder',0
8390
aMkDirCaption           db      'Make folder',0
8382
aMkDir                  db      'Create the folder',0
8391
aMkDir                  db      'Create the folder',0
8383
aMkDirLen = $ - aMkDir - 1
8392
aMkDirLen = $ - aMkDir - 1
8384
aCannotMakeFolder       db      'Cannot create folder',0
8393
aCannotMakeFolder       db      'Cannot create folder',0
8385
aName                   db      4,'Name'
8394
aName                   db      4,'Name'
8386
aSize                   db      4,'Size'
8395
aSize                   db      4,'Size'
8387
aDate                   db      4,'Date'
8396
aDate                   db      4,'Date'
8388
aTime                   db      4,'Time'
8397
aTime                   db      4,'Time'
8389
aCannotLoadDLL          db      'Cannot load DLL',0
8398
aCannotLoadDLL          db      'Cannot load DLL',0
8390
aCannotLoadPlugin       db      'Cannot load plugin',0
8399
aCannotLoadPlugin       db      'Cannot load plugin',0
8391
aInvalidDLL             db      'File is not found or invalid',0
8400
aInvalidDLL             db      'File is not found or invalid',0
8392
aMissingExport          db      'Required function is not present',0
8401
aMissingExport          db      'Required function is not present',0
8393
aInitFailed             db      'Initialization failed',0
8402
aInitFailed             db      'Initialization failed',0
8394
aIncompatibleVersion    db      'Incompatible version',0
8403
aIncompatibleVersion    db      'Incompatible version',0
8395
aTables                 db      'Tables',0
8404
aTables                 db      'Tables',0
8396
aSelect                 db      'Select',0
8405
aSelect                 db      'Select',0
8397
aDeselect               db      'Deselect',0
8406
aDeselect               db      'Deselect',0
8398
aCannotOpenFile         db      'Cannot open the file',0
8407
aCannotOpenFile         db      'Cannot open the file',0
8399
aCannotCreateThread     db      'Cannot create a thread',0
8408
aCannotCreateThread     db      'Cannot create a thread',0
8400
aCannotSetFolder        db      'Cannot enter to the folder',0
8409
aCannotSetFolder        db      'Cannot enter to the folder',0
8401
aSearch                 db      'Search',0
8410
aSearch                 db      'Search',0
8402
aSearchB                db      '[ Search ]',0
8411
aSearchB                db      '[ Search ]',0
8403
aSearchBLength = $ - aSearchB - 1
8412
aSearchBLength = $ - aSearchB - 1
8404
aSearchFor              db      'Search for',0
8413
aSearchFor              db      'Search for',0
8405
aSearchForLen = $ - aSearch - 1
8414
aSearchForLen = $ - aSearch - 1
8406
aCaseSensitive          db      'Case sensitive',0
8415
aCaseSensitive          db      'Case sensitive',0
8407
aWholeWords             db      'Whole words',0
8416
aWholeWords             db      'Whole words',0
8408
aReverseSearch          db      'Reverse search',0
8417
aReverseSearch          db      'Reverse search',0
8409
aStringNotFound         db      'Could not find the string',0
8418
aStringNotFound         db      'Could not find the string',0
8410
aFileSearch             db      'Find file',0
8419
aFileSearch             db      'Find file',0
8411
aFileMasks              db      'A file mask or several file masks:',0
8420
aFileMasks              db      'A file mask or several file masks:',0
8412
aFileMasksLen = $ - aFileMasks - 1
8421
aFileMasksLen = $ - aFileMasks - 1
8413
aContainingText         db      'Containing text:',0
8422
aContainingText         db      'Containing text:',0
8414
aContainingTextLen = $ - aContainingText - 1
8423
aContainingTextLen = $ - aContainingText - 1
8415
aSearchingIn            db      'Searching "" in:',0
8424
aSearchingIn            db      'Searching "" in:',0
8416
aSearchingInLen = $ - aSearchingIn - 1
8425
aSearchingInLen = $ - aSearchingIn - 1
8417
aSearchDone             db      'Search done. Found ? file(s)',0
8426
aSearchDone             db      'Search done. Found ? file(s)',0
8418
aSearchDoneLen = $ - aSearchDone - 1
8427
aSearchDoneLen = $ - aSearchDone - 1
8419
aNewSearch              db      '[ New search ]',0
8428
aNewSearch              db      '[ New search ]',0
8420
aNewSearchLen = $ - aNewSearch - 1
8429
aNewSearchLen = $ - aNewSearch - 1
8421
aGoto                   db      '[ Go to ]',0
8430
aGoto                   db      '[ Go to ]',0
8422
aGotoLen = $ - aGoto - 1
8431
aGotoLen = $ - aGoto - 1
8423
aView                   db      '[ View ]',0
8432
aView                   db      '[ View ]',0
8424
aViewLen = $ - aView - 1
8433
aViewLen = $ - aView - 1
8425
aEditConfigErr1         db      'Error in configuration of plugins for the editor.',0
8434
aEditConfigErr1         db      'Error in configuration of plugins for the editor.',0
8426
aEditConfigErr2         db      'Try to remove unnecessary plugins.',0
8435
aEditConfigErr2         db      'Try to remove unnecessary plugins.',0
8427
aEditNoMemory           db      'The file is too big for the editor.',0
8436
aEditNoMemory           db      'The file is too big for the editor.',0
8428
aLine                   db      '    Line'
8437
aLine                   db      '    Line'
8429
aCol                    db      '   Col '
8438
aCol                    db      '   Col '
8430
aEditorTitle            db      'Editor',0
8439
aEditorTitle            db      'Editor',0
8431
aFileModified           db      'File has been modified',0
8440
aFileModified           db      'File has been modified',0
8432
aSave                   db      'Save',0
8441
aSave                   db      'Save',0
8433
aDontSave               db      'Do not save',0
8442
aDontSave               db      'Do not save',0
8434
aContinueEdit           db      'Continue editing',0
8443
aContinueEdit           db      'Continue editing',0
8435
aCannotSaveToPlugin     db      'Saving is not supported for plugin panels',0
8444
aCannotSaveToPlugin     db      'Saving is not supported for plugin panels',0
8436
aCannotSearchOnPlugin   db      'The search on plugin panels is not supported yet',0
8445
aCannotSearchOnPlugin   db      'The search on plugin panels is not supported yet',0
8437
aCancelled              db      'Operation has been interrupted',0
8446
aCancelled              db      'Operation has been interrupted',0
8438
aConfirmCancel          db      'Do you really want to cancel it?',0
8447
aConfirmCancel          db      'Do you really want to cancel it?',0
8439
end if
8448
end if
8440
 
8449
 
8441
aOk                     db      'OK',0
8450
aOk                     db      'OK',0
8442
aNoMemory               db      'No memory!'
8451
aNoMemory               db      'No memory!'
8443
nullstr                 db      0
8452
nullstr                 db      0
8444
aUntitled               db      'untitled',0
8453
aUntitled               db      'untitled',0
8445
aDotDot                 db      '..',0,0
8454
aDotDot                 db      '..',0,0
8446
standard_dll_path:
8455
standard_dll_path:
8447
libini_name             db      '/sys/lib/'
8456
libini_name             db      '/sys/lib/'
8448
standard_dll_path_size = $ - standard_dll_path
8457
standard_dll_path_size = $ - standard_dll_path
8449
                        db      'libini.obj',0
8458
                        db      'libini.obj',0
8450
aStart                  db      'START',0
8459
aStart                  db      'START',0
8451
aLibInit                db      'lib_init',0
8460
aLibInit                db      'lib_init',0
8452
aVersion                db      'version',0
8461
aVersion                db      'version',0
8453
aIniGetInt              db      'ini_get_int',0
8462
aIniGetInt              db      'ini_get_int',0
8454
aIniGetStr              db      'ini_get_str',0
8463
aIniGetStr              db      'ini_get_str',0
8455
aIniSetInt              db      'ini_set_int',0
8464
aIniSetInt              db      'ini_set_int',0
8456
aIniEnumKeys            db      'ini_enum_keys',0
8465
aIniEnumKeys            db      'ini_enum_keys',0
8457
aPluginLoad             db      'plugin_load',0
8466
aPluginLoad             db      'plugin_load',0
8458
aPluginUnload           db      'plugin_unload',0
8467
aPluginUnload           db      'plugin_unload',0
8459
aGetattr                db      'getattr',0
8468
aGetattr                db      'getattr',0
8460
aOpen                   db      'open',0
8469
aOpen                   db      'open',0
8461
aRead                   db      'read',0
8470
aRead                   db      'read',0
8462
aSetpos                 db      'setpos',0
8471
aSetpos                 db      'setpos',0
8463
aClose                  db      'close',0
8472
aClose                  db      'close',0
8464
aOpenFilePlugin         db      'OpenFilePlugin',0
8473
aOpenFilePlugin         db      'OpenFilePlugin',0
8465
aClosePlugin            db      'ClosePlugin',0
8474
aClosePlugin            db      'ClosePlugin',0
8466
aReadFolder             db      'ReadFolder',0
8475
aReadFolder             db      'ReadFolder',0
8467
aSetFolder              db      'SetFolder',0
8476
aSetFolder              db      'SetFolder',0
8468
aGetOpenPluginInfo      db      'GetOpenPluginInfo',0
8477
aGetOpenPluginInfo      db      'GetOpenPluginInfo',0
8469
aGetPanelTitle          db      'GetPanelTitle',0
8478
aGetPanelTitle          db      'GetPanelTitle',0
8470
aGetFiles               db      'GetFiles',0
8479
aGetFiles               db      'GetFiles',0
8471
aEditInfoSize           db      'EditInfoSize',0
8480
aEditInfoSize           db      'EditInfoSize',0
8472
 
8481
 
8473
aConfirmations          db      'Confirmations',0
8482
aConfirmations          db      'Confirmations',0
8474
aConfirmDelete          db      'Delete',0
8483
aConfirmDelete          db      'Delete',0
8475
aConfirmDeleteIncomplete db     'DeleteIncomplete',0
8484
aConfirmDeleteIncomplete db     'DeleteIncomplete',0
8476
 
8485
 
8477
aPanels                 db      'Panels',0
8486
aPanels                 db      'Panels',0
8478
aLeftViewMode           db      'LeftViewMode',0
8487
aLeftViewMode           db      'LeftViewMode',0
8479
aRightViewMode          db      'RightViewMode',0
8488
aRightViewMode          db      'RightViewMode',0
8480
aLeftSortMode           db      'LeftSortMode',0
8489
aLeftSortMode           db      'LeftSortMode',0
8481
aRightSortMode          db      'RightSortMode',0
8490
aRightSortMode          db      'RightSortMode',0
8482
 
8491
 
8483
aEditor                 db      'Editor',0
8492
aEditor                 db      'Editor',0
8484
aEolStyle               db      'EOLStyle',0
8493
aEolStyle               db      'EOLStyle',0
8485
 
8494
 
8486
aAssociations           db      'Associations',0
8495
aAssociations           db      'Associations',0
8487
aPlugins                db      'Plugins',0
8496
aPlugins                db      'Plugins',0
8488
aMenu                   db      'Menu',0
8497
aMenu                   db      'Menu',0
8489
aFolderShortcuts        db      'FolderShortcuts',0
8498
aFolderShortcuts        db      'FolderShortcuts',0
8490
aShortcut               db      'Shortcut'
8499
aShortcut               db      'Shortcut'
8491
.d                      db      '0',0
8500
.d                      db      '0',0
8492
 
8501
 
8493
align 4
8502
align 4
8494
ini_import:
8503
ini_import:
8495
ini.get_int     dd      aIniGetInt
8504
ini.get_int     dd      aIniGetInt
8496
ini.get_str     dd      aIniGetStr
8505
ini.get_str     dd      aIniGetStr
8497
ini.enum_keys   dd      aIniEnumKeys
8506
ini.enum_keys   dd      aIniEnumKeys
8498
ini.set_int     dd      aIniSetInt
8507
ini.set_int     dd      aIniSetInt
8499
                dd      0
8508
                dd      0
8500
 
8509
 
8501
plugin_exported:
8510
plugin_exported:
8502
        dd      aPluginUnload
8511
        dd      aPluginUnload
8503
        dd      aGetattr
8512
        dd      aGetattr
8504
        dd      aOpen
8513
        dd      aOpen
8505
        dd      aRead
8514
        dd      aRead
8506
        dd      aSetpos
8515
        dd      aSetpos
8507
        dd      aClose
8516
        dd      aClose
8508
        dd      aOpenFilePlugin
8517
        dd      aOpenFilePlugin
8509
        dd      aClosePlugin
8518
        dd      aClosePlugin
8510
        dd      aReadFolder
8519
        dd      aReadFolder
8511
        dd      aSetFolder
8520
        dd      aSetFolder
8512
        dd      aGetOpenPluginInfo
8521
        dd      aGetOpenPluginInfo
8513
        dd      aGetPanelTitle
8522
        dd      aGetPanelTitle
8514
        dd      aGetFiles
8523
        dd      aGetFiles
8515
        dd      aEditInfoSize
8524
        dd      aEditInfoSize
8516
        dd      0
8525
        dd      0
8517
plugin_exported_default:
8526
plugin_exported_default:
8518
        dd      plugin_unload_default
8527
        dd      plugin_unload_default
8519
        dd      getattr_default
8528
        dd      getattr_default
8520
        dd      open_default
8529
        dd      open_default
8521
        dd      read
8530
        dd      read
8522
        dd      setpos_default
8531
        dd      setpos_default
8523
        dd      close
8532
        dd      close
8524
        dd      OpenFilePlugin_default
8533
        dd      OpenFilePlugin_default
8525
        dd      ClosePlugin_default
8534
        dd      ClosePlugin_default
8526
        dd      ReadFolder_default
8535
        dd      ReadFolder_default
8527
        dd      SetFolder_default
8536
        dd      SetFolder_default
8528
        dd      GetOpenPluginInfo_default
8537
        dd      GetOpenPluginInfo_default
8529
        dd      GetPanelTitle_default
8538
        dd      GetPanelTitle_default
8530
        dd      GetFiles_default
8539
        dd      GetFiles_default
8531
        dd      0       ; default value for EditInfoSize
8540
        dd      0       ; default value for EditInfoSize
8532
 
8541
 
8533
kfar_info:
8542
kfar_info:
8534
        dd      .size
8543
        dd      .size
8535
        dd      version_dword
8544
        dd      version_dword
8536
        dd      open
8545
        dd      open
8537
        dd      open2
8546
        dd      open2
8538
        dd      read
8547
        dd      read
8539
        dd      -1      ; write: to be implemented
8548
        dd      -1      ; write: to be implemented
8540
        dd      seek
8549
        dd      seek
8541
        dd      tell
8550
        dd      tell
8542
        dd      -1      ; flush: to be implemented
8551
        dd      -1      ; flush: to be implemented
8543
        dd      filesize
8552
        dd      filesize
8544
        dd      close
8553
        dd      close
8545
        dd      xpgalloc
8554
        dd      xpgalloc
8546
        dd      xpgrealloc
8555
        dd      xpgrealloc
8547
        dd      pgfree
8556
        dd      pgfree
8548
        dd      getfreemem
8557
        dd      getfreemem
8549
        dd      libini_alloc
8558
        dd      libini_alloc
8550
        dd      libini_realloc
8559
        dd      libini_realloc
8551
        dd      libini_free
8560
        dd      libini_free
8552
        dd      menu
8561
        dd      menu
8553
        dd      menu_centered_in
8562
        dd      menu_centered_in
8554
        dd      DialogBox
8563
        dd      DialogBox
8555
        dd      SayErr
8564
        dd      SayErr
8556
        dd      Message
8565
        dd      Message
8557
        dd      cur_width
8566
        dd      cur_width
8558
.size = $ - kfar_info
8567
.size = $ - kfar_info
8559
 
8568
 
8560
plugins         dd      0
8569
plugins         dd      0
8561
num_plugins     dd      0
8570
num_plugins     dd      0
8562
alloc_plugins   dd      0
8571
alloc_plugins   dd      0
8563
 
8572
 
8564
EditPlugInfo    dd      0
8573
EditPlugInfo    dd      0
8565
EditEOLStyle    db      edit.eol_unix
8574
EditEOLStyle    db      edit.eol_unix
8566
 
8575
 
8567
virtual at 0
8576
virtual at 0
8568
PluginInfo:
8577
PluginInfo:
8569
.unload         dd      ?
8578
.unload         dd      ?
8570
.getattr        dd      ?
8579
.getattr        dd      ?
8571
.open           dd      ?
8580
.open           dd      ?
8572
.read           dd      ?
8581
.read           dd      ?
8573
.setpos         dd      ?
8582
.setpos         dd      ?
8574
.close          dd      ?
8583
.close          dd      ?
8575
.OpenFilePlugin dd      ?
8584
.OpenFilePlugin dd      ?
8576
.ClosePlugin    dd      ?
8585
.ClosePlugin    dd      ?
8577
.ReadFolder     dd      ?
8586
.ReadFolder     dd      ?
8578
.SetFolder      dd      ?
8587
.SetFolder      dd      ?
8579
.GetOpenPluginInfo dd   ?
8588
.GetOpenPluginInfo dd   ?
8580
.GetPanelTitle  dd      ?
8589
.GetPanelTitle  dd      ?
8581
.GetFiles       dd      ?
8590
.GetFiles       dd      ?
8582
.EditInfoSize   dd      ?
8591
.EditInfoSize   dd      ?
8583
.EditInfoOffs   dd      ?
8592
.EditInfoOffs   dd      ?
8584
.size = $
8593
.size = $
8585
end virtual
8594
end virtual
8586
 
8595
 
8587
virtual at 0
8596
virtual at 0
8588
PanelMode:
8597
PanelMode:
8589
; up to 16 columns on one panel
8598
; up to 16 columns on one panel
8590
.NumColumns     dd      ?
8599
.NumColumns     dd      ?
8591
; available column types:
8600
; available column types:
8592
COLUMN_TYPE_NONE = 0
8601
COLUMN_TYPE_NONE = 0
8593
COLUMN_TYPE_NAME = 1
8602
COLUMN_TYPE_NAME = 1
8594
        COLUMN_NAME_MARK = 10h          ; (reserved)
8603
        COLUMN_NAME_MARK = 10h          ; (reserved)
8595
        COLUMN_NAME_NOPATH = 20h        ; (reserved)
8604
        COLUMN_NAME_NOPATH = 20h        ; (reserved)
8596
        COLUMN_NAME_RIGHTALIGN = 40h    ; (reserved)
8605
        COLUMN_NAME_RIGHTALIGN = 40h    ; (reserved)
8597
COLUMN_TYPE_SIZE = 2
8606
COLUMN_TYPE_SIZE = 2
8598
        COLUMN_SIZE_COMMA = 10h         ; (reserved)
8607
        COLUMN_SIZE_COMMA = 10h         ; (reserved)
8599
COLUMN_TYPE_PACKED_SIZE = 3             ; (reserved)
8608
COLUMN_TYPE_PACKED_SIZE = 3             ; (reserved)
8600
COLUMN_TYPE_DATE = 4
8609
COLUMN_TYPE_DATE = 4
8601
COLUMN_TYPE_TIME = 5
8610
COLUMN_TYPE_TIME = 5
8602
COLUMN_TYPE_DATETIME = 6                ; (reserved)
8611
COLUMN_TYPE_DATETIME = 6                ; (reserved)
8603
COLUMN_TYPE_DATETIME_CREATION = 7       ; (reserved)
8612
COLUMN_TYPE_DATETIME_CREATION = 7       ; (reserved)
8604
COLUMN_TYPE_DATETIME_ACCESS = 8         ; (reserved)
8613
COLUMN_TYPE_DATETIME_ACCESS = 8         ; (reserved)
8605
COLUMN_TYPE_ATTRIBUTES = 9              ; (reserved)
8614
COLUMN_TYPE_ATTRIBUTES = 9              ; (reserved)
8606
COLUMN_TYPE_DESCRIPTION = 10            ; (reserved)
8615
COLUMN_TYPE_DESCRIPTION = 10            ; (reserved)
8607
COLUMN_TYPE_OWNER = 11                  ; (reserved)
8616
COLUMN_TYPE_OWNER = 11                  ; (reserved)
8608
COLUMN_TYPE_NUMLINKS = 12               ; (reserved)
8617
COLUMN_TYPE_NUMLINKS = 12               ; (reserved)
8609
COLUMN_TYPE_CUSTOM = 13                 ; (reserved)
8618
COLUMN_TYPE_CUSTOM = 13                 ; (reserved)
8610
.ColumnTypes    rb      16
8619
.ColumnTypes    rb      16
8611
 
8620
 
8612
.ColumnWidths   rb      16
8621
.ColumnWidths   rb      16
8613
.bFullScreen    db      ?               ; (reserved)
8622
.bFullScreen    db      ?               ; (reserved)
8614
.bAlignExtensions db    ?
8623
.bAlignExtensions db    ?
8615
                rb      2
8624
                rb      2
8616
.size = $
8625
.size = $
8617
end virtual
8626
end virtual
8618
 
8627
 
8619
align 4
8628
align 4
8620
column_headers:
8629
column_headers:
8621
        dd      nullstr
8630
        dd      nullstr
8622
        dd      aName
8631
        dd      aName
8623
        dd      aSize
8632
        dd      aSize
8624
        dd      nullstr
8633
        dd      nullstr
8625
        dd      aDate
8634
        dd      aDate
8626
        dd      aTime
8635
        dd      aTime
8627
draw_column_proc:
8636
draw_column_proc:
8628
        dd      draw_empty_column
8637
        dd      draw_empty_column
8629
        dd      draw_name_column
8638
        dd      draw_name_column
8630
        dd      draw_size_column
8639
        dd      draw_size_column
8631
        dd      -1
8640
        dd      -1
8632
        dd      draw_date_column
8641
        dd      draw_date_column
8633
        dd      draw_time_column
8642
        dd      draw_time_column
8634
colmodes:
8643
colmodes:
8635
; ०¨¬ 0 : NM,SC,D
8644
; ०¨¬ 0 : NM,SC,D
8636
        dd      3
8645
        dd      3
8637
        db      COLUMN_TYPE_NAME+COLUMN_NAME_MARK, COLUMN_TYPE_SIZE+COLUMN_SIZE_COMMA
8646
        db      COLUMN_TYPE_NAME+COLUMN_NAME_MARK, COLUMN_TYPE_SIZE+COLUMN_SIZE_COMMA
8638
                db      COLUMN_TYPE_DATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
8647
                db      COLUMN_TYPE_DATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
8639
        db      0, 10, 8
8648
        db      0, 10, 8
8640
                times 13 db 0
8649
                times 13 db 0
8641
        db      0, 1
8650
        db      0, 1
8642
                times 2 db 0
8651
                times 2 db 0
8643
; ०¨¬ 1 : N,N,N
8652
; ०¨¬ 1 : N,N,N
8644
        dd      3
8653
        dd      3
8645
        db      COLUMN_TYPE_NAME, COLUMN_TYPE_NAME, COLUMN_TYPE_NAME
8654
        db      COLUMN_TYPE_NAME, COLUMN_TYPE_NAME, COLUMN_TYPE_NAME
8646
                times 13 db 0
8655
                times 13 db 0
8647
        times 16 db 0
8656
        times 16 db 0
8648
        db      0, 1
8657
        db      0, 1
8649
                times 2 db 0
8658
                times 2 db 0
8650
; ०¨¬ 2 : N,N
8659
; ०¨¬ 2 : N,N
8651
        dd      2
8660
        dd      2
8652
        db      COLUMN_TYPE_NAME, COLUMN_TYPE_NAME
8661
        db      COLUMN_TYPE_NAME, COLUMN_TYPE_NAME
8653
                times 14 db 0
8662
                times 14 db 0
8654
        times 16 db 0
8663
        times 16 db 0
8655
        db      0, 0
8664
        db      0, 0
8656
                times 2 db 0
8665
                times 2 db 0
8657
; ०¨¬ 3 : N,S,D,T
8666
; ०¨¬ 3 : N,S,D,T
8658
        dd      4
8667
        dd      4
8659
        db      COLUMN_TYPE_NAME, COLUMN_TYPE_SIZE, COLUMN_TYPE_DATE, COLUMN_TYPE_TIME
8668
        db      COLUMN_TYPE_NAME, COLUMN_TYPE_SIZE, COLUMN_TYPE_DATE, COLUMN_TYPE_TIME
8660
                times 12 db 0
8669
                times 12 db 0
8661
        db      0, 6, 8, 5
8670
        db      0, 6, 8, 5
8662
                times 12 db 0
8671
                times 12 db 0
8663
        db      0, 1
8672
        db      0, 1
8664
                times 2 db 0
8673
                times 2 db 0
8665
; ०¨¬ 4 : N,S
8674
; ०¨¬ 4 : N,S
8666
        dd      2
8675
        dd      2
8667
        db      COLUMN_TYPE_NAME, COLUMN_TYPE_SIZE
8676
        db      COLUMN_TYPE_NAME, COLUMN_TYPE_SIZE
8668
                times 14 db 0
8677
                times 14 db 0
8669
        db      0, 6
8678
        db      0, 6
8670
                times 14 db 0
8679
                times 14 db 0
8671
        db      0, 0
8680
        db      0, 0
8672
                times 2 db 0
8681
                times 2 db 0
8673
; ०¨¬ 5 : N,S,P,DM,DC,DA,A
8682
; ०¨¬ 5 : N,S,P,DM,DC,DA,A
8674
; ०¨¬ 6 : N,Z
8683
; ०¨¬ 6 : N,Z
8675
; ०¨¬ 7 : N,S,Z
8684
; ०¨¬ 7 : N,S,Z
8676
; ०¨¬ 8 : N,S,O
8685
; ०¨¬ 8 : N,S,O
8677
; ०¨¬ 9 : N,S,LN
8686
; ०¨¬ 9 : N,S,LN
8678
 
8687
 
8679
execinfo:
8688
execinfo:
8680
        dd      7
8689
        dd      7
8681
        dd      0
8690
        dd      0
8682
execparams dd   0
8691
execparams dd   0
8683
        dd      0
8692
        dd      0
8684
        dd      0
8693
        dd      0
8685
        db      0
8694
        db      0
8686
execptr dd      ?
8695
execptr dd      ?
8687
 
8696
 
8688
IncludeIGlobals
8697
IncludeIGlobals
8689
 
8698
 
8690
i_end:
8699
i_end:
8691
 
8700
 
8692
IncludeUGlobals
8701
IncludeUGlobals
8693
 
8702
 
8694
execdata rb     1024
8703
execdata rb     1024
8695
execdataend:
8704
execdataend:
8696
        align   4
8705
        align   4
8697
attrinfo.attr   rb      40
8706
attrinfo.attr   rb      40
8698
 
8707
 
8699
panel1 PanelData
8708
panel1 PanelData
8700
 
8709
 
8701
panel2 PanelData
8710
panel2 PanelData
8702
 
8711
 
8703
;console_data    rb      max_width*max_height*2
8712
;console_data    rb      max_width*max_height*2
8704
 
8713
 
8705
nomem_dlgsavearea       rb      8 + (12+4)*(3+3)*2
8714
nomem_dlgsavearea       rb      8 + (12+4)*(3+3)*2
8706
 
8715
 
8707
quicksearch_savearea    rb      22*3*2
8716
quicksearch_savearea    rb      22*3*2
8708
quicksearch_maxlen = 64
8717
quicksearch_maxlen = 64
8709
quick_search_buf        rb      12 + quicksearch_maxlen
8718
quick_search_buf        rb      12 + quicksearch_maxlen
8710
 
8719
 
8711
cur_header      rb      max_width
8720
cur_header      rb      max_width
8712
tmp             dd      ?
8721
tmp             dd      ?
8713
 
8722
 
8714
skinh           dd      ?
8723
skinh           dd      ?
8715
std_colors      rd      10
8724
std_colors      rd      10
8716
 
8725
 
8717
min_y           dd      ?
8726
min_y           dd      ?
8718
max_y           dd      ?
8727
max_y           dd      ?
8719
min_x           dd      ?
8728
min_x           dd      ?
8720
max_x           dd      ?
8729
max_x           dd      ?
8721
used_width      dd      ?
8730
used_width      dd      ?
8722
used_height     dd      ?
8731
used_height     dd      ?
8723
 
8732
 
8724
wnd_width       dd      ?
8733
wnd_width       dd      ?
8725
wnd_height      dd      ?
8734
wnd_height      dd      ?
8726
 
8735
 
8727
column_left     dd      ?
8736
column_left     dd      ?
8728
column_top      dd      ?
8737
column_top      dd      ?
8729
column_width    dd      ?
8738
column_width    dd      ?
8730
column_height   dd      ?
8739
column_height   dd      ?
8731
column_index    dd      ?
8740
column_index    dd      ?
8732
last_column_index dd    ?
8741
last_column_index dd    ?
8733
 
8742
 
8734
scrpos          dq      ?
8743
scrpos          dq      ?
8735
viewer_right_side dq    ?
8744
viewer_right_side dq    ?
8736
 
8745
 
8737
EditDataSize    dd      ?
8746
EditDataSize    dd      ?
8738
EditBlockStart  dd      ?
8747
EditBlockStart  dd      ?
8739
EditBlockSize   dd      ?
8748
EditBlockSize   dd      ?
8740
 
8749
 
8741
saved_file_name:
8750
saved_file_name:
8742
procinfo        rb      1024
8751
procinfo        rb      1024
8743
lower_file_name = procinfo + 512
8752
lower_file_name = procinfo + 512
8744
 
8753
 
8745
app_path        rb      1100
8754
app_path        rb      1100
8746
 
8755
 
8747
error_msg       rb      128
8756
error_msg       rb      128
8748
 
8757
 
8749
prev_dir        rb      1024
8758
prev_dir        rb      1024
8750
 
8759
 
8751
driveinfo       rb      32+304
8760
driveinfo       rb      32+304
8752
tmpname         rb      32
8761
tmpname         rb      32
8753
 
8762
 
8754
screens         dd      ?
8763
screens         dd      ?
8755
num_screens     dd      ?
8764
num_screens     dd      ?
8756
active_screen_vtable dd ?
8765
active_screen_vtable dd ?
8757
active_screen_data dd   ?
8766
active_screen_data dd   ?
8758
active_screen_keybar dd ?
8767
active_screen_keybar dd ?
8759
 
8768
 
8760
default_attr    dd      ?
8769
default_attr    dd      ?
8761
left_dotdot_entry       rb      40+4    ; 40 bytes for attributes + '..'
8770
left_dotdot_entry       rb      40+4    ; 40 bytes for attributes + '..'
8762
right_dotdot_entry      rb      40+4
8771
right_dotdot_entry      rb      40+4
8763
 
8772
 
8764
aConfirmDeleteTextBuf   rb      aConfirmDeleteTextMax + 1
8773
aConfirmDeleteTextBuf   rb      aConfirmDeleteTextMax + 1
8765
CopySourceTextBuf       rb      512
8774
CopySourceTextBuf       rb      512
8766
CopyDestEditBuf         rb      12+512+1
8775
CopyDestEditBuf         rb      12+512+1
8767
.length = $ - CopyDestEditBuf - 13
8776
.length = $ - CopyDestEditBuf - 13
8768
 
8777
 
8769
SearchStringEditBuf     rb      12
8778
SearchStringEditBuf     rb      12
8770
SearchString            rb      253+1
8779
SearchString            rb      253+1
8771
SearchStringEditBuf.length = $ - SearchString - 1
8780
SearchStringEditBuf.length = $ - SearchString - 1
8772
                        db      ?       ; used for output (string -> "string")
8781
                        db      ?       ; used for output (string -> "string")
8773
 
8782
 
8774
enter_string_buf        rb      12+512+1
8783
enter_string_buf        rb      12+512+1
8775
 
8784
 
8776
bMemForImageValidData   db      ?
8785
bMemForImageValidData   db      ?
8777
 
8786
 
8778
align 4
8787
align 4
8779
identical_table rb      256
8788
identical_table rb      256
8780
tolower_table   rb      256
8789
tolower_table   rb      256
8781
isspace_table   rb      256
8790
isspace_table   rb      256
8782
composite_table rb      256
8791
composite_table rb      256
8783
layout          rb      128
8792
layout          rb      128
8784
 
8793
 
8785
copy_buffer_size = 65536
8794
copy_buffer_size = 65536
8786
copy_buffer     rb      copy_buffer_size
8795
copy_buffer     rb      copy_buffer_size
8787
 
8796
 
8788
filedata_buffer_size = 1024
8797
filedata_buffer_size = 1024
8789
filedata_buffer rb      filedata_buffer_size
8798
filedata_buffer rb      filedata_buffer_size
8790
 
8799
 
8791
source_hModule  dd      ?
8800
source_hModule  dd      ?
8792
source_hPlugin  dd      ?
8801
source_hPlugin  dd      ?
8793
source_hFile    dd      ?
8802
source_hFile    dd      ?
8794
; data for directory delete
8803
; data for directory delete
8795
; If directory nested level is >1024, then its full name is too big,
8804
; If directory nested level is >1024, then its full name is too big,
8796
; so we see the overflow when creating full name (we check for this!)
8805
; so we see the overflow when creating full name (we check for this!)
8797
del_dir_stack   rd      1024
8806
del_dir_stack   rd      1024
8798
del_dir_stack_ptr dd    ?
8807
del_dir_stack_ptr dd    ?
8799
del_dir_query_size = 32
8808
del_dir_query_size = 32
8800
del_dir_query_area rb   32+304*del_dir_query_size
8809
del_dir_query_area rb   32+304*del_dir_query_size
8801
 
8810
 
8802
label copy_dir_stack dword at del_dir_stack
8811
label copy_dir_stack dword at del_dir_stack
8803
label copy_dir_stack_ptr dword at del_dir_stack_ptr
8812
label copy_dir_stack_ptr dword at del_dir_stack_ptr
8804
copy_dir_query_size = del_dir_query_size
8813
copy_dir_query_size = del_dir_query_size
8805
copy_dir_query_area = del_dir_query_area
8814
copy_dir_query_area = del_dir_query_area
8806
del_bSkipAll    db      ?       ; for directory errors
8815
del_bSkipAll    db      ?       ; for directory errors
8807
label copy_bSkipAll byte at del_bSkipAll
8816
label copy_bSkipAll byte at del_bSkipAll
8808
copy_bSkipAll2  db      ?       ; for file read/write errors
8817
copy_bSkipAll2  db      ?       ; for file read/write errors
8809
copy_bSkipAll3  db      ?       ; for SetFolder errors
8818
copy_bSkipAll3  db      ?       ; for SetFolder errors
8810
 
8819
 
8811
bEndSlash       db      ?
8820
bEndSlash       db      ?
8812
bDestIsFolder   db      ?
8821
bDestIsFolder   db      ?
8813
bNeedRestoreName db     ?
8822
bNeedRestoreName db     ?
8814
 
8823
 
8815
; stack
8824
; stack
8816
        align   4
8825
        align   4
8817
        rb      32768
8826
        rb      32768
8818
stacktop:
8827
stacktop:
8819
 
8828
 
8820
mem:
8829
mem: