Subversion Repositories Kolibri OS

Rev

Rev 9066 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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