Subversion Repositories Kolibri OS

Rev

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

Rev 1102 Rev 1122
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.64'
10
version equ '0.65'
11
version_dword equ 0*10000h + 64
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 'lang.inc'
18
include 'lang.inc'
19
include 'font.inc'
19
include 'font.inc'
20
include 'sort.inc'
20
include 'sort.inc'
21
include 'kglobals.inc'
21
include 'kglobals.inc'
22
include 'dialogs.inc'
22
include 'dialogs.inc'
23
include 'search.inc'
23
include 'search.inc'
24
include 'viewer.inc'
24
include 'viewer.inc'
25
include 'editor.inc'
25
include 'editor.inc'
26
include 'tools.inc'
26
include 'tools.inc'
27
include 'filetool.inc'
27
include 'filetool.inc'
28
 
28
 
29
cursor_normal_size = (font_height*15+50)/100
29
cursor_normal_size = (font_height*15+50)/100
30
cursor_big_size = font_height
30
cursor_big_size = font_height
31
 
31
 
32
start:
32
start:
33
        mov     edi, identical_table
33
        mov     edi, identical_table
34
        mov     ecx, 0x100
34
        mov     ecx, 0x100
35
        xor     eax, eax
35
        xor     eax, eax
36
@@:
36
@@:
37
        stosb
37
        stosb
38
        inc     eax
38
        inc     eax
39
        loop    @b
39
        loop    @b
40
        mov     cl, 'A'
40
        mov     cl, 'A'
41
@@:
41
@@:
42
        stosb
42
        stosb
43
        inc     eax
43
        inc     eax
44
        loop    @b
44
        loop    @b
45
        add     al, 0x20
45
        add     al, 0x20
46
        mov     cl, 'Z'-'A'+1
46
        mov     cl, 'Z'-'A'+1
47
@@:
47
@@:
48
        stosb
48
        stosb
49
        inc     eax
49
        inc     eax
50
        loop    @b
50
        loop    @b
51
        sub     al, 0x20
51
        sub     al, 0x20
52
        mov     cl, '€'-'Z'-1
52
        mov     cl, '€'-'Z'-1
53
@@:
53
@@:
54
        stosb
54
        stosb
55
        inc     eax
55
        inc     eax
56
        loop    @b
56
        loop    @b
57
        add     al, 0x20
57
        add     al, 0x20
58
        mov     cl, ''-'€'
58
        mov     cl, ''-'€'
59
@@:
59
@@:
60
        stosb
60
        stosb
61
        inc     eax
61
        inc     eax
62
        loop    @b
62
        loop    @b
63
        add     al, 0x30
63
        add     al, 0x30
64
        mov     cl, 'Ÿ'-''+1
64
        mov     cl, 'Ÿ'-''+1
65
@@:
65
@@:
66
        stosb
66
        stosb
67
        inc     eax
67
        inc     eax
68
        loop    @b
68
        loop    @b
69
        sub     al, 0x50
69
        sub     al, 0x50
70
        mov     cl, 256-'Ÿ'-1
70
        mov     cl, 256-'Ÿ'-1
71
@@:
71
@@:
72
        stosb
72
        stosb
73
        inc     eax
73
        inc     eax
74
        loop    @b
74
        loop    @b
75
        mov     byte [edi-256+'ð'], 'ñ'
75
        mov     byte [edi-256+'ð'], 'ñ'
76
        mov     cl, 'A'
76
        mov     cl, 'A'
77
        inc     eax
77
        inc     eax
78
        rep     stosb
78
        rep     stosb
79
        mov     cl, 'Z'-'A'+1
79
        mov     cl, 'Z'-'A'+1
80
        dec     eax
80
        dec     eax
81
        rep     stosb
81
        rep     stosb
82
        mov     cl, 'a'-'Z'-1
82
        mov     cl, 'a'-'Z'-1
83
        inc     eax
83
        inc     eax
84
        rep     stosb
84
        rep     stosb
85
        mov     byte [edi-'a'+'_'], 0
85
        mov     byte [edi-'a'+'_'], 0
86
        mov     cl, 'z'-'a'+1
86
        mov     cl, 'z'-'a'+1
87
        dec     eax
87
        dec     eax
88
        rep     stosb
88
        rep     stosb
89
        mov     cl, '€'-'z'-1
89
        mov     cl, '€'-'z'-1
90
        inc     eax
90
        inc     eax
91
        rep     stosb
91
        rep     stosb
92
        mov     cl, '¯'-'€'+1
92
        mov     cl, '¯'-'€'+1
93
        dec     eax
93
        dec     eax
94
        rep     stosb
94
        rep     stosb
95
        mov     cl, 'à'-'¯'-1
95
        mov     cl, 'à'-'¯'-1
96
        inc     eax
96
        inc     eax
97
        rep     stosb
97
        rep     stosb
98
        mov     cl, 'ñ'-'à'+1
98
        mov     cl, 'ñ'-'à'+1
99
        dec     eax
99
        dec     eax
100
        rep     stosb
100
        rep     stosb
101
        mov     cl, 256-'ñ'-1
101
        mov     cl, 256-'ñ'-1
102
        inc     eax
102
        inc     eax
103
        rep     stosb
103
        rep     stosb
104
        mov     edi, SearchStringEditBuf
104
        mov     edi, SearchStringEditBuf
105
        mov     eax, SearchStringEditBuf.length
105
        mov     eax, SearchStringEditBuf.length
106
        stosd
106
        stosd
107
        xor     eax, eax
107
        xor     eax, eax
108
        stosd
108
        stosd
109
        stosd
109
        stosd
110
        stosb
110
        stosb
111
        push    68
111
        push    68
112
        pop     eax
112
        pop     eax
113
        push    11
113
        push    11
114
        pop     ebx
114
        pop     ebx
115
        int     0x40
115
        int     0x40
116
        call    init_console
116
        call    init_console
117
        call    draw_window
117
        call    draw_window
118
        push    66
118
        push    66
119
        pop     eax
119
        pop     eax
120
        push    1
120
        push    1
121
        pop     ebx
121
        pop     ebx
122
        mov     ecx, ebx
122
        mov     ecx, ebx
123
        int     40h     ; set keyboard mode to scancodes
123
        int     40h     ; set keyboard mode to scancodes
124
        mov     eax, 200
124
        mov     eax, 200
125
        mov     [panel1_nfa], eax
125
        mov     [panel1_nfa], eax
126
        mov     [panel2_nfa], eax
126
        mov     [panel2_nfa], eax
127
        mov     ecx, 200*4 + 32 + 200*304
127
        mov     ecx, 200*4 + 32 + 200*304
128
        call    pgalloc
128
        call    pgalloc
129
        mov     [panel1_files], eax
129
        mov     [panel1_files], eax
130
        call    pgalloc
130
        call    pgalloc
131
        mov     [panel2_files], eax
131
        mov     [panel2_files], eax
132
        test    eax, eax
132
        test    eax, eax
133
        jz      exit
133
        jz      exit
134
        xor     eax, eax
134
        xor     eax, eax
135
        cmp     [panel1_files], eax
135
        cmp     [panel1_files], eax
136
        jz      exit
136
        jz      exit
137
        mov     [panel1_hPlugin], eax
137
        mov     [panel1_hPlugin], eax
138
        mov     [panel1_parents], eax
138
        mov     [panel1_parents], eax
139
        mov     [panel1_parents_sz], eax
139
        mov     [panel1_parents_sz], eax
140
        mov     [panel1_parents_alloc], eax
140
        mov     [panel1_parents_alloc], eax
141
        mov     [panel2_hPlugin], eax
141
        mov     [panel2_hPlugin], eax
142
        mov     [panel2_parents], eax
142
        mov     [panel2_parents], eax
143
        mov     [panel2_parents_sz], eax
143
        mov     [panel2_parents_sz], eax
144
        mov     [panel2_parents_alloc], eax
144
        mov     [panel2_parents_alloc], eax
145
        mov     [panel1_sortmode], al   ; sort by name
145
        mov     [panel1_sortmode], al   ; sort by name
146
        mov     [panel2_sortmode], al
146
        mov     [panel2_sortmode], al
147
        mov     al, 2                   ; "á।­¨©" ä®à¬ â
147
        mov     al, 2                   ; "á।­¨©" ä®à¬ â
148
        mov     [panel1_colmode], eax
148
        mov     [panel1_colmode], eax
149
        mov     [panel2_colmode], eax
149
        mov     [panel2_colmode], eax
150
        mov     [num_screens], 1
150
        mov     [num_screens], 1
151
        mov     ecx, 0x1000
151
        mov     ecx, 0x1000
152
        call    pgalloc
152
        call    pgalloc
153
        mov     [screens], eax
153
        mov     [screens], eax
154
        test    eax, eax
154
        test    eax, eax
155
        jz      exit
155
        jz      exit
156
        mov     ecx, panels_vtable
156
        mov     ecx, panels_vtable
157
        mov     [eax], ecx
157
        mov     [eax], ecx
158
        mov     [active_screen_vtable], ecx
158
        mov     [active_screen_vtable], ecx
159
        mov     [active_screen_keybar], keybar_panels
159
        mov     [active_screen_keybar], keybar_panels
160
; load libini.obj and kfar.ini
160
; load libini.obj and kfar.ini
161
        mov     eax, libini_name
161
        mov     eax, libini_name
162
        mov     esi, ini_import
162
        mov     esi, ini_import
163
        push    8
163
        push    8
164
        pop     ebp     ; we use version 8 of libini
164
        pop     ebp     ; we use version 8 of libini
165
        call    load_dll_and_import
165
        call    load_dll_and_import
166
        test    eax, eax
166
        test    eax, eax
167
        jnz     .noini
167
        jnz     .noini
168
        mov     edi, app_path
168
        mov     edi, app_path
169
        or      ecx, -1
169
        or      ecx, -1
170
        repnz   scasb
170
        repnz   scasb
171
        mov     dword [edi-1], '.ini'
171
        mov     dword [edi-1], '.ini'
172
        mov     byte [edi+3], 0
172
        mov     byte [edi+3], 0
173
        push    1
173
        push    1
174
        push    dword aConfirmDelete
174
        push    dword aConfirmDelete
175
        push    dword aConfirmations
175
        push    dword aConfirmations
176
        push    dword app_path
176
        push    dword app_path
177
        call    [ini.get_int]
177
        call    [ini.get_int]
178
        mov     [bConfirmDelete], al
178
        mov     [bConfirmDelete], al
179
        push    0
179
        push    0
180
        push    dword aConfirmDeleteIncomplete
180
        push    dword aConfirmDeleteIncomplete
181
        push    dword aConfirmations
181
        push    dword aConfirmations
182
        push    dword app_path
182
        push    dword app_path
183
        call    [ini.get_int]
183
        call    [ini.get_int]
184
        mov     [bConfirmDeleteIncomplete], al
184
        mov     [bConfirmDeleteIncomplete], al
185
        push    2
185
        push    2
186
        push    aLeftViewMode
186
        push    aLeftViewMode
187
        push    aPanels
187
        push    aPanels
188
        push    app_path
188
        push    app_path
189
        call    [ini.get_int]
189
        call    [ini.get_int]
190
        cmp     eax, 1
190
        cmp     eax, 1
191
        jb      @f
191
        jb      @f
192
        cmp     eax, 4
192
        cmp     eax, 4
193
        ja      @f
193
        ja      @f
194
        mov     [panel1_colmode], eax
194
        mov     [panel1_colmode], eax
195
@@:
195
@@:
196
        push    2
196
        push    2
197
        push    aRightViewMode
197
        push    aRightViewMode
198
        push    aPanels
198
        push    aPanels
199
        push    app_path
199
        push    app_path
200
        call    [ini.get_int]
200
        call    [ini.get_int]
201
        cmp     eax, 1
201
        cmp     eax, 1
202
        jb      @f
202
        jb      @f
203
        cmp     eax, 4
203
        cmp     eax, 4
204
        ja      @f
204
        ja      @f
205
        mov     [panel2_colmode], eax
205
        mov     [panel2_colmode], eax
206
@@:
206
@@:
207
        push    0
207
        push    0
208
        push    aLeftSortMode
208
        push    aLeftSortMode
209
        push    aPanels
209
        push    aPanels
210
        push    app_path
210
        push    app_path
211
        call    [ini.get_int]
211
        call    [ini.get_int]
212
        cmp     eax, 14
212
        cmp     eax, 14
213
        jae     @f
213
        jae     @f
214
        mov     [panel1_sortmode], al
214
        mov     [panel1_sortmode], al
215
@@:
215
@@:
216
        push    0
216
        push    0
217
        push    aRightSortMode
217
        push    aRightSortMode
218
        push    aPanels
218
        push    aPanels
219
        push    app_path
219
        push    app_path
220
        call    [ini.get_int]
220
        call    [ini.get_int]
221
        cmp     eax, 14
221
        cmp     eax, 14
222
        jae     @f
222
        jae     @f
223
        mov     [panel2_sortmode], al
223
        mov     [panel2_sortmode], al
224
@@:
224
@@:
225
        push    nullstr
225
        push    nullstr
226
        push    512
226
        push    512
227
        push    saved_file_name
227
        push    saved_file_name
228
        push    aEolStyle
228
        push    aEolStyle
229
        push    aEditor
229
        push    aEditor
230
        push    app_path
230
        push    app_path
231
        call    [ini.get_str]
231
        call    [ini.get_str]
232
        mov     cl, edit.eol_dos
232
        mov     cl, edit.eol_dos
233
        mov     al, [saved_file_name]
233
        mov     al, [saved_file_name]
234
        or      al, 20h
234
        or      al, 20h
235
        cmp     al, 'd'
235
        cmp     al, 'd'
236
        jz      @f
236
        jz      @f
237
        mov     cl, edit.eol_mac
237
        mov     cl, edit.eol_mac
238
        cmp     al, 'm'
238
        cmp     al, 'm'
239
        jz      @f
239
        jz      @f
240
        mov     cl, edit.eol_unix
240
        mov     cl, edit.eol_unix
241
@@:
241
@@:
242
        mov     [EditEOLStyle], cl
242
        mov     [EditEOLStyle], cl
243
        mov     ecx, 0x1000
243
        mov     ecx, 0x1000
244
        call    xpgalloc
244
        call    xpgalloc
245
        test    eax, eax
245
        test    eax, eax
246
        jz      .skip_assoc
246
        jz      .skip_assoc
247
        mov     [associations], eax
247
        mov     [associations], eax
248
        push    enum_associations_callback
248
        push    enum_associations_callback
249
        push    aAssociations
249
        push    aAssociations
250
        push    app_path
250
        push    app_path
251
        call    [ini.enum_keys]
251
        call    [ini.enum_keys]
252
.skip_assoc:
252
.skip_assoc:
253
        xor     ebp, ebp
253
        xor     ebp, ebp
254
        xor     esi, esi
254
        xor     esi, esi
255
.shortcut_loop:
255
.shortcut_loop:
256
        mov     edi, saved_file_name
256
        mov     edi, saved_file_name
257
        push    dword nullstr
257
        push    dword nullstr
258
        push    512
258
        push    512
259
        push    edi
259
        push    edi
260
        push    dword aShortcut
260
        push    dword aShortcut
261
        push    dword aFolderShortcuts
261
        push    dword aFolderShortcuts
262
        push    dword app_path
262
        push    dword app_path
263
        call    [ini.get_str]
263
        call    [ini.get_str]
264
        cmp     byte [edi], 0
264
        cmp     byte [edi], 0
265
        jz      .shortcut_cont
265
        jz      .shortcut_cont
266
        or      ecx, -1
266
        or      ecx, -1
267
        xor     eax, eax
267
        xor     eax, eax
268
        repnz   scasb
268
        repnz   scasb
269
        not     ecx
269
        not     ecx
270
        cmp     ecx, 2
270
        cmp     ecx, 2
271
        jz      @f
271
        jz      @f
272
        cmp     byte [edi-2], '/'
272
        cmp     byte [edi-2], '/'
273
        jnz     @f
273
        jnz     @f
274
        mov     byte [edi-2], 0
274
        mov     byte [edi-2], 0
275
        dec     ecx
275
        dec     ecx
276
@@:
276
@@:
277
        mov     al, [aShortcut.d]
277
        mov     al, [aShortcut.d]
278
        push    esi
278
        push    esi
279
        inc     esi
279
        inc     esi
280
        mov     [FolderShortcuts+(eax-'0')*4], esi
280
        mov     [FolderShortcuts+(eax-'0')*4], esi
281
        lea     esi, [esi+ecx-1]
281
        lea     esi, [esi+ecx-1]
282
        push    esi
282
        push    esi
283
        and     esi, 0xFFF
283
        and     esi, 0xFFF
284
        cmp     esi, ecx
284
        cmp     esi, ecx
285
        pop     esi
285
        pop     esi
286
        ja      .norealloc
286
        ja      .norealloc
287
        mov     edx, ebp
287
        mov     edx, ebp
288
        mov     ecx, esi
288
        mov     ecx, esi
289
        call    xpgrealloc
289
        call    xpgrealloc
290
        test    eax, eax
290
        test    eax, eax
291
        jnz     @f
291
        jnz     @f
292
        pop     esi
292
        pop     esi
293
        mov     edi, FolderShortcuts
293
        mov     edi, FolderShortcuts
294
        mov     ecx, 10
294
        mov     ecx, 10
295
        rep     stosd
295
        rep     stosd
296
        jmp     .skip_shortcuts
296
        jmp     .skip_shortcuts
297
@@:
297
@@:
298
        mov     ebp, eax
298
        mov     ebp, eax
299
.norealloc:
299
.norealloc:
300
        pop     edi
300
        pop     edi
301
        add     edi, ebp
301
        add     edi, ebp
302
        mov     ecx, saved_file_name
302
        mov     ecx, saved_file_name
303
@@:
303
@@:
304
        mov     al, [ecx]
304
        mov     al, [ecx]
305
        inc     ecx
305
        inc     ecx
306
        stosb
306
        stosb
307
        test    al, al
307
        test    al, al
308
        jnz     @b
308
        jnz     @b
309
.shortcut_cont:
309
.shortcut_cont:
310
        inc     [aShortcut.d]
310
        inc     [aShortcut.d]
311
        cmp     [aShortcut.d], '9'
311
        cmp     [aShortcut.d], '9'
312
        jbe     .shortcut_loop
312
        jbe     .shortcut_loop
313
        mov     esi, FolderShortcuts
313
        mov     esi, FolderShortcuts
314
        mov     ecx, 10
314
        mov     ecx, 10
315
        dec     ebp
315
        dec     ebp
316
.l3:
316
.l3:
317
        lodsd
317
        lodsd
318
        test    eax, eax
318
        test    eax, eax
319
        jz      @f
319
        jz      @f
320
        add     [esi-4], ebp
320
        add     [esi-4], ebp
321
@@:
321
@@:
322
        loop    .l3
322
        loop    .l3
323
.skip_shortcuts:
323
.skip_shortcuts:
324
; load plugins
324
; load plugins
325
        push    enum_plugins_callback
325
        push    enum_plugins_callback
326
        push    aPlugins
326
        push    aPlugins
327
        push    app_path
327
        push    app_path
328
        call    [ini.enum_keys]
328
        call    [ini.enum_keys]
329
; calculate info for editor
329
; calculate info for editor
330
        xor     ebx, ebx
330
        xor     ebx, ebx
331
        mov     ecx, [num_plugins]
331
        mov     ecx, [num_plugins]
332
        mov     esi, [plugins]
332
        mov     esi, [plugins]
333
@@:
333
@@:
334
        dec     ecx
334
        dec     ecx
335
        js      @f
335
        js      @f
336
        mov     [esi+PluginInfo.EditInfoOffs], ebx
336
        mov     [esi+PluginInfo.EditInfoOffs], ebx
337
        add     ebx, [esi+PluginInfo.EditInfoSize]
337
        add     ebx, [esi+PluginInfo.EditInfoSize]
338
        jnc     @f
338
        jnc     @f
339
        sbb     ebx, ebx
339
        sbb     ebx, ebx
340
@@:
340
@@:
341
; ¯®áª®«ìªã à §¬¥à ¡«®ª  ¢ । ªâ®à¥ ®£à ­¨ç¥­, â® ¨ à §¬¥à ¯ ¬ïâ¨, १¥à¢¨à㥬®© ¤«ï ¯« £¨­®¢, ®£à ­¨ç¥­
341
; ¯®áª®«ìªã à §¬¥à ¡«®ª  ¢ । ªâ®à¥ ®£à ­¨ç¥­, â® ¨ à §¬¥à ¯ ¬ïâ¨, १¥à¢¨à㥬®© ¤«ï ¯« £¨­®¢, ®£à ­¨ç¥­
342
; 512 - £àã¡ ï ¢¥àå­ïï ®æ¥­ª , £ à ­â¨àãîé ï à ¡®âã । ªâ®à , ॠ«ì­® ¯« £¨­ë ¤®«¦­ë âॡ®¢ âì ¬¥­ìè¥
342
; 512 - £àã¡ ï ¢¥àå­ïï ®æ¥­ª , £ à ­â¨àãîé ï à ¡®âã । ªâ®à , ॠ«ì­® ¯« £¨­ë ¤®«¦­ë âॡ®¢ âì ¬¥­ìè¥
343
        cmp     ebx, 512
343
        cmp     ebx, 512
344
        jb      @f
344
        jb      @f
345
        or      ebx, -1
345
        or      ebx, -1
346
        mov     [EditPlugInfo], ebx     ; disable plugins for editor
346
        mov     [EditPlugInfo], ebx     ; disable plugins for editor
347
        push    ContinueBtn
347
        push    ContinueBtn
348
        push    1
348
        push    1
349
        push    EditConfigErr_ptr
349
        push    EditConfigErr_ptr
350
        push    2
350
        push    2
351
        call    SayErr
351
        call    SayErr
352
@@:
352
@@:
353
        add     ebx, 3
353
        add     ebx, 3
354
        and     ebx, not 3
354
        and     ebx, not 3
355
        mov     [EditPlugInfo], ebx
355
        mov     [EditPlugInfo], ebx
356
.noini:
356
.noini:
357
        mov     eax, [EditPlugInfo]
357
        mov     eax, [EditPlugInfo]
358
        add     eax, editor_line.plugdata
358
        add     eax, editor_line.plugdata
359
        imul    eax, max_height
359
        imul    eax, max_height
360
        add     eax, editor_data.basesize + 0xFFF
360
        add     eax, editor_data.basesize + 0xFFF
361
        shr     eax, 12
361
        shr     eax, 12
362
        mov     [EditDataSize], eax
362
        mov     [EditDataSize], eax
363
        mov     esi, def_left_dir
363
        mov     esi, def_left_dir
364
        mov     edi, panel1_dir
364
        mov     edi, panel1_dir
365
@@:
365
@@:
366
        lodsb
366
        lodsb
367
        stosb
367
        stosb
368
        test    al, al
368
        test    al, al
369
        jnz     @b
369
        jnz     @b
370
        mov     esi, def_right_dir
370
        mov     esi, def_right_dir
371
        mov     edi, panel2_dir
371
        mov     edi, panel2_dir
372
@@:
372
@@:
373
        lodsb
373
        lodsb
374
        stosb
374
        stosb
375
        test    al, al
375
        test    al, al
376
        jnz     @b
376
        jnz     @b
377
        call    draw_keybar
377
        call    draw_keybar
378
        call    draw_cmdbar
378
        call    draw_cmdbar
379
        mov     [prev_dir], 0
379
        mov     [prev_dir], 0
380
        mov     ebp, panel1_data
380
        mov     ebp, panel1_data
381
        call    calc_colwidths
381
        call    calc_colwidths
382
        call    read_folder
382
        call    read_folder
383
        call    draw_panel
383
        call    draw_panel
384
        mov     [bSilentFolderMode], 1
384
        mov     [bSilentFolderMode], 1
385
        mov     ebp, panel2_data
385
        mov     ebp, panel2_data
386
        call    calc_colwidths
386
        call    calc_colwidths
387
        call    read_folder
387
        call    read_folder
388
        call    draw_panel
388
        call    draw_panel
389
event:
389
event:
390
        call    get_event
390
        call    get_event
391
        dec     eax
391
        dec     eax
392
        jz      redraw
392
        jz      redraw
393
        dec     eax
393
        dec     eax
394
        jz      key
394
        jz      key
395
; button - we have only one button, close
395
; button - we have only one button, close
396
exit:
396
exit:
397
; close all screens
397
; close all screens
398
@@:
398
@@:
399
        mov     ecx, [num_screens]
399
        mov     ecx, [num_screens]
400
        mov     eax, [screens]
400
        mov     eax, [screens]
401
        mov     ebp, [eax+ecx*8-4]
401
        mov     ebp, [eax+ecx*8-4]
402
        mov     eax, [eax+ecx*8-8]
402
        mov     eax, [eax+ecx*8-8]
403
        push    ebp
403
        push    ebp
404
        call    [eax+screen_vtable.OnExit]
404
        call    [eax+screen_vtable.OnExit]
405
        pop     ecx
405
        pop     ecx
406
        call    pgfree
406
        call    pgfree
407
        dec     [num_screens]
407
        dec     [num_screens]
408
        jnz     @b
408
        jnz     @b
409
; unload all plugins
409
; unload all plugins
410
        mov     ecx, [num_plugins]
410
        mov     ecx, [num_plugins]
411
        imul    esi, ecx, PluginInfo.size
411
        imul    esi, ecx, PluginInfo.size
412
        add     esi, [plugins]
412
        add     esi, [plugins]
413
.unload:
413
.unload:
414
        dec     ecx
414
        dec     ecx
415
        js      .unload_done
415
        js      .unload_done
416
        sub     esi, PluginInfo.size
416
        sub     esi, PluginInfo.size
417
        push    ecx esi
417
        push    ecx esi
418
        call    [esi+PluginInfo.unload]
418
        call    [esi+PluginInfo.unload]
419
        pop     esi ecx
419
        pop     esi ecx
420
        jmp     .unload
420
        jmp     .unload
421
.unload_done:
421
.unload_done:
422
        cmp     [ini.set_int], aIniSetInt
422
        cmp     [ini.set_int], aIniSetInt
423
        jz      .nosave
423
        jz      .nosave
424
        push    [panel1_colmode]
424
        push    [panel1_colmode]
425
        push    aLeftViewMode
425
        push    aLeftViewMode
426
        push    aPanels
426
        push    aPanels
427
        push    app_path
427
        push    app_path
428
        call    [ini.set_int]
428
        call    [ini.set_int]
429
        push    [panel2_colmode]
429
        push    [panel2_colmode]
430
        push    aRightViewMode
430
        push    aRightViewMode
431
        push    aPanels
431
        push    aPanels
432
        push    app_path
432
        push    app_path
433
        call    [ini.set_int]
433
        call    [ini.set_int]
434
        movzx   eax, [panel1_sortmode]
434
        movzx   eax, [panel1_sortmode]
435
        push    eax
435
        push    eax
436
        push    aLeftSortMode
436
        push    aLeftSortMode
437
        push    aPanels
437
        push    aPanels
438
        push    app_path
438
        push    app_path
439
        call    [ini.set_int]
439
        call    [ini.set_int]
440
        movzx   eax, [panel2_sortmode]
440
        movzx   eax, [panel2_sortmode]
441
        push    eax
441
        push    eax
442
        push    aRightSortMode
442
        push    aRightSortMode
443
        push    aPanels
443
        push    aPanels
444
        push    app_path
444
        push    app_path
445
        call    [ini.set_int]
445
        call    [ini.set_int]
446
.nosave:
446
.nosave:
447
if CHECK_FOR_LEAKS
447
if CHECK_FOR_LEAKS
448
        mov     ecx, [panel1_files]
448
        mov     ecx, [panel1_files]
449
        call    pgfree
449
        call    pgfree
450
        mov     ecx, [panel2_files]
450
        mov     ecx, [panel2_files]
451
        call    pgfree
451
        call    pgfree
452
        mov     ecx, [screens]
452
        mov     ecx, [screens]
453
        call    pgfree
453
        call    pgfree
454
        mov     ecx, [associations]
454
        mov     ecx, [associations]
455
        call    pgfree
455
        call    pgfree
456
        mov     ecx, [console_data_ptr]
456
        mov     ecx, [console_data_ptr]
457
        call    pgfree
457
        call    pgfree
458
        mov     ecx, [MemForImage]
458
        mov     ecx, [MemForImage]
459
        call    pgfree
459
        call    pgfree
460
        mov     esi, FolderShortcuts
460
        mov     esi, FolderShortcuts
461
        push    10
461
        push    10
462
        pop     ecx
462
        pop     ecx
463
@@:
463
@@:
464
        lodsd
464
        lodsd
465
        test    eax, eax
465
        test    eax, eax
466
        jnz     @f
466
        jnz     @f
467
        loop    @b
467
        loop    @b
468
        jmp     .nofreefs
468
        jmp     .nofreefs
469
@@:
469
@@:
470
        mov     ecx, eax
470
        mov     ecx, eax
471
        call    pgfree
471
        call    pgfree
472
        mov     ecx, [plugins]
472
        mov     ecx, [plugins]
473
        call    pgfree
473
        call    pgfree
474
        mov     ecx, [panel1_parents]
474
        mov     ecx, [panel1_parents]
475
        call    pgfree
475
        call    pgfree
476
        mov     ecx, [panel2_parents]
476
        mov     ecx, [panel2_parents]
477
        call    pgfree
477
        call    pgfree
478
.nofreefs:
478
.nofreefs:
479
        mov     eax, [numallocatedregions]
479
        mov     eax, [numallocatedregions]
480
        test    eax, eax
480
        test    eax, eax
481
        jz      @f
481
        jz      @f
482
        mov     edi, allocatedregions
482
        mov     edi, allocatedregions
483
        int3
483
        int3
484
        jmp     $
484
        jmp     $
485
@@:
485
@@:
486
end if
486
end if
487
        or      eax, -1
487
        or      eax, -1
488
        int     40h
488
        int     40h
489
 
489
 
490
get_event:
490
get_event:
491
        push    ebx
491
        push    ebx
492
        mov     ebx, [idle_interval]
492
        mov     ebx, [idle_interval]
493
        cmp     ebx, -1
493
        cmp     ebx, -1
494
        jz      .infinite
494
        jz      .infinite
495
        push    23
495
        push    23
496
        pop     eax
496
        pop     eax
497
        int     40h
497
        int     40h
498
        pop     ebx
498
        pop     ebx
499
        test    eax, eax
499
        test    eax, eax
500
        jnz     .ret
500
        jnz     .ret
501
        mov     ebp, [active_screen_data]
501
        mov     ebp, [active_screen_data]
502
        mov     eax, [active_screen_vtable]
502
        mov     eax, [active_screen_vtable]
503
        mov     eax, [eax+screen_vtable.OnIdle]
503
        mov     eax, [eax+screen_vtable.OnIdle]
504
        test    eax, eax
504
        test    eax, eax
505
        jz      get_event
505
        jz      get_event
506
        call    eax
506
        call    eax
507
        jmp     get_event
507
        jmp     get_event
508
.infinite:
508
.infinite:
509
        pop     ebx
509
        pop     ebx
510
        push    10
510
        push    10
511
        pop     eax
511
        pop     eax
512
        int     40h
512
        int     40h
513
.ret:
513
.ret:
514
        ret
514
        ret
515
 
515
 
516
redraw:
516
redraw:
517
; query kbd state from OS
517
; query kbd state from OS
518
        mov     al, 66
518
        mov     al, 66
519
        push    3
519
        push    3
520
        pop     ebx
520
        pop     ebx
521
        int     0x40
521
        int     0x40
522
        and     eax, 0x3F
522
        and     eax, 0x3F
523
        cmp     al, [ctrlstate]
523
        cmp     al, [ctrlstate]
524
        mov     [ctrlstate], al
524
        mov     [ctrlstate], al
525
        jz      @f
525
        jz      @f
526
        call    draw_keybar
526
        call    draw_keybar
527
@@:
527
@@:
528
        mov     al, 9
528
        mov     al, 9
529
        mov     ebx, procinfo
529
        mov     ebx, procinfo
530
        or      ecx, -1
530
        or      ecx, -1
531
        int     40h
531
        int     40h
532
; test if rolled up
532
; test if rolled up
533
; height of rolled up window is [skinh]+3
533
; height of rolled up window is [skinh]+3
534
        mov     eax, [ebx+46]
534
        mov     eax, [ebx+46]
535
        sub     eax, [skinh]
535
        sub     eax, [skinh]
536
        cmp     eax, 5
536
        cmp     eax, 5
537
        ja      @f
537
        ja      @f
538
        mov     al, 12
538
        mov     al, 12
539
        push    1
539
        push    1
540
        pop     ebx
540
        pop     ebx
541
        int     0x40
541
        int     0x40
542
        xor     eax, eax
542
        xor     eax, eax
543
; ebx, ecx, edi are ignored by function 0 after first redraw
543
; ebx, ecx, edi are ignored by function 0 after first redraw
544
        mov     edx, 0x53000000
544
        mov     edx, 0x53000000
545
        int     0x40
545
        int     0x40
546
        mov     al, 12
546
        mov     al, 12
547
        inc     ebx
547
        inc     ebx
548
        int     0x40
548
        int     0x40
549
        jmp     event
549
        jmp     event
550
@@:
550
@@:
551
        xor     ecx, ecx
551
        xor     ecx, ecx
552
        mov     eax, [ebx+42]
552
        mov     eax, [ebx+42]
553
        mov     [wnd_width], eax
553
        mov     [wnd_width], eax
554
        sub     eax, 5*2-1
554
        sub     eax, 5*2-1
555
        jae     @f
555
        jae     @f
556
        xor     eax, eax
556
        xor     eax, eax
557
@@:
557
@@:
558
        cdq
558
        cdq
559
        mov     esi, font_width
559
        mov     esi, font_width
560
        div     esi
560
        div     esi
561
        cmp     eax, min_width
561
        cmp     eax, min_width
562
        jae     @f
562
        jae     @f
563
        mov     al, min_width
563
        mov     al, min_width
564
        mov     ch, 1
564
        mov     ch, 1
565
@@:
565
@@:
566
        cmp     eax, max_width
566
        cmp     eax, max_width
567
        jbe     @f
567
        jbe     @f
568
        mov     eax, max_width
568
        mov     eax, max_width
569
        mov     ch, 1
569
        mov     ch, 1
570
@@:
570
@@:
571
        cmp     eax, [cur_width]
571
        cmp     eax, [cur_width]
572
        mov     [cur_width], eax
572
        mov     [cur_width], eax
573
        setnz   cl
573
        setnz   cl
574
        or      cl, ch
574
        or      cl, ch
575
        test    edx, edx
575
        test    edx, edx
576
        mov     [fill_width], edx
576
        mov     [fill_width], edx
577
        setnz   ch
577
        setnz   ch
578
        mov     eax, [ebx+46]
578
        mov     eax, [ebx+46]
579
        mov     [wnd_height], eax
579
        mov     [wnd_height], eax
580
        sub     eax, [skinh]
580
        sub     eax, [skinh]
581
        sub     eax, 5-1
581
        sub     eax, 5-1
582
        jns     @f
582
        jns     @f
583
        xor     eax, eax
583
        xor     eax, eax
584
@@:
584
@@:
585
        cdq
585
        cdq
586
        mov     esi, font_height
586
        mov     esi, font_height
587
        div     esi
587
        div     esi
588
        cmp     eax, min_height
588
        cmp     eax, min_height
589
        jae     @f
589
        jae     @f
590
        mov     al, min_height
590
        mov     al, min_height
591
        mov     cl, 1
591
        mov     cl, 1
592
@@:
592
@@:
593
        cmp     eax, max_height
593
        cmp     eax, max_height
594
        jbe     @f
594
        jbe     @f
595
        mov     eax, max_height
595
        mov     eax, max_height
596
        mov     cl, 1
596
        mov     cl, 1
597
@@:
597
@@:
598
        mov     [fill_height], edx
598
        mov     [fill_height], edx
599
        cmp     eax, [cur_height]
599
        cmp     eax, [cur_height]
600
        mov     [cur_height], eax
600
        mov     [cur_height], eax
601
        jnz     .resize
601
        jnz     .resize
602
        test    cl, cl
602
        test    cl, cl
603
        jnz     .resize
603
        jnz     .resize
604
        test    edx, edx
604
        test    edx, edx
605
        setnz   cl
605
        setnz   cl
606
        or      cl, ch
606
        or      cl, ch
607
        jz      @f
607
        jz      @f
608
        test    byte [ebx+70], 1
608
        test    byte [ebx+70], 1
609
        jnz     @f
609
        jnz     @f
610
.resize:
610
.resize:
611
        push    67
611
        push    67
612
        pop     eax
612
        pop     eax
613
        or      ebx, -1
613
        or      ebx, -1
614
        or      ecx, -1
614
        or      ecx, -1
615
        mov     edx, [cur_width]
615
        mov     edx, [cur_width]
616
        imul    edx, font_width
616
        imul    edx, font_width
617
        add     edx, 5*2-1
617
        add     edx, 5*2-1
618
        mov     esi, [cur_height]
618
        mov     esi, [cur_height]
619
        imul    esi, font_height
619
        imul    esi, font_height
620
        add     esi, [skinh]
620
        add     esi, [skinh]
621
        add     esi, 5-1
621
        add     esi, 5-1
622
        int     40h
622
        int     40h
623
.resize_draw:
623
.resize_draw:
624
        mov     ecx, [MemForImage]
624
        mov     ecx, [MemForImage]
625
        call    pgfree
625
        call    pgfree
626
        and     [MemForImage], 0
626
        and     [MemForImage], 0
627
        call    init_console
627
        call    init_console
628
;        call    draw_window
628
;        call    draw_window
629
        call    draw_keybar
629
        call    draw_keybar
630
        mov     ebp, [active_screen_data]
630
        mov     ebp, [active_screen_data]
631
        mov     eax, [active_screen_vtable]
631
        mov     eax, [active_screen_vtable]
632
        mov     [cursor_size], cursor_normal_size
632
        mov     [cursor_size], cursor_normal_size
633
        call    dword [eax+screen_vtable.OnRedraw]
633
        call    dword [eax+screen_vtable.OnRedraw]
634
        jmp     event
634
        jmp     event
635
@@:
635
@@:
636
        call    draw_window
636
        call    draw_window
637
        jmp     event
637
        jmp     event
638
alt_f9:
638
alt_f9:
639
        cmp     [saved_width], -1
639
        cmp     [saved_width], -1
640
        jz      @f
640
        jz      @f
641
        mov     eax, [saved_width]
641
        mov     eax, [saved_width]
642
        mov     [cur_width], eax
642
        mov     [cur_width], eax
643
        or      [saved_width], -1
643
        or      [saved_width], -1
644
        mov     eax, [saved_height]
644
        mov     eax, [saved_height]
645
        mov     [cur_height], eax
645
        mov     [cur_height], eax
646
        or      [saved_height], -1
646
        or      [saved_height], -1
647
        jmp     redraw.resize
647
        jmp     redraw.resize
648
@@:
648
@@:
649
        push    48
649
        push    48
650
        pop     eax
650
        pop     eax
651
        push    5
651
        push    5
652
        pop     ebx
652
        pop     ebx
653
        int     0x40
653
        int     0x40
654
        push    eax
654
        push    eax
655
        sub     eax, [esp+2]
655
        sub     eax, [esp+2]
656
        inc     eax
656
        inc     eax
657
        movzx   eax, ax
657
        movzx   eax, ax
658
        sub     eax, 10
658
        sub     eax, 10
659
        xor     edx, edx
659
        xor     edx, edx
660
        mov     ecx, font_width
660
        mov     ecx, font_width
661
        div     ecx
661
        div     ecx
662
        xchg    [cur_width], eax
662
        xchg    [cur_width], eax
663
        mov     [saved_width], eax
663
        mov     [saved_width], eax
664
        mov     eax, ebx
664
        mov     eax, ebx
665
        shr     ebx, 16
665
        shr     ebx, 16
666
        sub     eax, ebx
666
        sub     eax, ebx
667
        sub     eax, 5-1
667
        sub     eax, 5-1
668
        sub     eax, [skinh]
668
        sub     eax, [skinh]
669
        xor     edx, edx
669
        xor     edx, edx
670
        mov     ecx, font_height
670
        mov     ecx, font_height
671
        div     ecx
671
        div     ecx
672
        xchg    [cur_height], eax
672
        xchg    [cur_height], eax
673
        mov     [saved_height], eax
673
        mov     [saved_height], eax
674
        mov     ecx, ebx
674
        mov     ecx, ebx
675
        pop     ebx
675
        pop     ebx
676
        shr     ebx, 16
676
        shr     ebx, 16
677
        mov     edx, [cur_width]
677
        mov     edx, [cur_width]
678
        imul    edx, font_width
678
        imul    edx, font_width
679
        add     edx, 5*2-1
679
        add     edx, 5*2-1
680
        mov     esi, [cur_height]
680
        mov     esi, [cur_height]
681
        imul    esi, font_height
681
        imul    esi, font_height
682
        add     esi, [skinh]
682
        add     esi, [skinh]
683
        add     esi, 4
683
        add     esi, 4
684
        push    67
684
        push    67
685
        pop     eax
685
        pop     eax
686
        int     0x40
686
        int     0x40
687
        jmp     redraw.resize_draw
687
        jmp     redraw.resize_draw
688
key:
688
key:
689
        mov     al, 2
689
        mov     al, 2
690
        int     40h
690
        int     40h
691
        test    al, al
691
        test    al, al
692
        jnz     event
692
        jnz     event
693
        xchg    al, ah
693
        xchg    al, ah
694
        cmp     al, 0xE0
694
        cmp     al, 0xE0
695
        jnz     @f
695
        jnz     @f
696
        mov     [bWasE0], 1
696
        mov     [bWasE0], 1
697
        jmp     event
697
        jmp     event
698
@@:
698
@@:
699
        xchg    ah, [bWasE0]
699
        xchg    ah, [bWasE0]
700
        mov     ebp, [active_screen_data]
700
        mov     ebp, [active_screen_data]
701
        mov     edx, [active_screen_vtable]
701
        mov     edx, [active_screen_vtable]
702
        cmp     al, 0x1D
702
        cmp     al, 0x1D
703
        jz      .ctrl_down
703
        jz      .ctrl_down
704
        cmp     al, 0x9D
704
        cmp     al, 0x9D
705
        jz      .ctrl_up
705
        jz      .ctrl_up
706
        cmp     al, 0x2A
706
        cmp     al, 0x2A
707
        jz      .lshift_down
707
        jz      .lshift_down
708
        cmp     al, 0xAA
708
        cmp     al, 0xAA
709
        jz      .lshift_up
709
        jz      .lshift_up
710
        cmp     al, 0x36
710
        cmp     al, 0x36
711
        jz      .rshift_down
711
        jz      .rshift_down
712
        cmp     al, 0xB6
712
        cmp     al, 0xB6
713
        jz      .rshift_up
713
        jz      .rshift_up
714
        cmp     al, 0x38
714
        cmp     al, 0x38
715
        jz      .alt_down
715
        jz      .alt_down
716
        cmp     al, 0xB8
716
        cmp     al, 0xB8
717
        jz      .alt_up
717
        jz      .alt_up
718
        call    [edx+screen_vtable.OnKey]
718
        call    [edx+screen_vtable.OnKey]
719
        jmp     event
719
        jmp     event
720
.ctrl_down:
720
.ctrl_down:
721
        test    ah, ah
721
        test    ah, ah
722
        jnz     .rctrl_down
722
        jnz     .rctrl_down
723
        or      [ctrlstate], 4
723
        or      [ctrlstate], 4
724
        jmp     .keybar
724
        jmp     .keybar
725
.rctrl_down:
725
.rctrl_down:
726
        or      [ctrlstate], 8
726
        or      [ctrlstate], 8
727
        jmp     .keybar
727
        jmp     .keybar
728
.ctrl_up:
728
.ctrl_up:
729
        test    ah, ah
729
        test    ah, ah
730
        jnz     .rctrl_up
730
        jnz     .rctrl_up
731
        and     [ctrlstate], not 4
731
        and     [ctrlstate], not 4
732
        jmp     .keybar
732
        jmp     .keybar
733
.rctrl_up:
733
.rctrl_up:
734
        and     [ctrlstate], not 8
734
        and     [ctrlstate], not 8
735
.keybar:
735
.keybar:
736
        call    draw_keybar
736
        call    draw_keybar
737
        call    draw_image
737
        call    draw_image
738
@@:     jmp     event
738
@@:     jmp     event
739
.lshift_down:
739
.lshift_down:
740
; ignore E0 2A sequence
740
; ignore E0 2A sequence
741
; e.g. arrow keys with NumLock on generate sequence E0 2A E0 xx / E0 xx+80 E0 AA
741
; e.g. arrow keys with NumLock on generate sequence E0 2A E0 xx / E0 xx+80 E0 AA
742
; where xx is scancode, so we can safely ignore E0 2A
742
; where xx is scancode, so we can safely ignore E0 2A
743
        test    ah, ah
743
        test    ah, ah
744
        jnz     @b
744
        jnz     @b
745
        or      [ctrlstate], 1
745
        or      [ctrlstate], 1
746
        jmp     .keybar
746
        jmp     .keybar
747
.lshift_up:
747
.lshift_up:
748
; ignore E0 AA sequence
748
; ignore E0 AA sequence
749
        test    ah, ah
749
        test    ah, ah
750
        jnz     @b
750
        jnz     @b
751
        and     [ctrlstate], not 1
751
        and     [ctrlstate], not 1
752
        jmp     .keybar
752
        jmp     .keybar
753
.rshift_down:
753
.rshift_down:
754
        or      [ctrlstate], 2
754
        or      [ctrlstate], 2
755
        jmp     .keybar
755
        jmp     .keybar
756
.rshift_up:
756
.rshift_up:
757
        and     [ctrlstate], not 2
757
        and     [ctrlstate], not 2
758
        jmp     .keybar
758
        jmp     .keybar
759
.alt_down:
759
.alt_down:
760
        test    ah, ah
760
        test    ah, ah
761
        jnz     .ralt_down
761
        jnz     .ralt_down
762
        or      [ctrlstate], 0x10
762
        or      [ctrlstate], 0x10
763
        jmp     .keybar
763
        jmp     .keybar
764
.ralt_down:
764
.ralt_down:
765
        or      [ctrlstate], 0x20
765
        or      [ctrlstate], 0x20
766
        jmp     .keybar
766
        jmp     .keybar
767
.alt_up:
767
.alt_up:
768
        test    ah, ah
768
        test    ah, ah
769
        jnz     .ralt_up
769
        jnz     .ralt_up
770
        and     [ctrlstate], not 0x10
770
        and     [ctrlstate], not 0x10
771
        jmp     .keybar
771
        jmp     .keybar
772
.ralt_up:
772
.ralt_up:
773
        and     [ctrlstate], not 0x20
773
        and     [ctrlstate], not 0x20
774
        jmp     .keybar
774
        jmp     .keybar
775
 
775
 
776
process_ctrl_keys:
776
process_ctrl_keys:
777
        cmp     byte [esi], 0
777
        cmp     byte [esi], 0
778
        jz      .done
778
        jz      .done
779
        push    ecx
779
        push    ecx
780
        cmp     al, [esi]
780
        cmp     al, [esi]
781
        jz      .check
781
        jz      .check
782
.cont:
782
.cont:
783
        pop     ecx
783
        pop     ecx
784
        add     esi, 8
784
        add     esi, 8
785
        jmp     process_ctrl_keys
785
        jmp     process_ctrl_keys
786
.done:
786
.done:
787
        stc
787
        stc
788
        ret
788
        ret
789
.check:
789
.check:
790
        mov     cl, 0
790
        mov     cl, 0
791
        call    .check_ctrlkey
791
        call    .check_ctrlkey
792
        jc      .cont
792
        jc      .cont
793
        mov     cl, 2
793
        mov     cl, 2
794
        call    .check_ctrlkey
794
        call    .check_ctrlkey
795
        jc      .cont
795
        jc      .cont
796
        mov     cl, 4
796
        mov     cl, 4
797
        call    .check_ctrlkey
797
        call    .check_ctrlkey
798
        jc      .cont
798
        jc      .cont
799
        pop     ecx
799
        pop     ecx
800
        call    dword [esi+4]
800
        call    dword [esi+4]
801
        clc
801
        clc
802
        ret
802
        ret
803
.check_ctrlkey:
803
.check_ctrlkey:
804
        push    eax edx
804
        push    eax edx
805
        movzx   edx, [ctrlstate]
805
        movzx   edx, [ctrlstate]
806
        shr     edx, cl
806
        shr     edx, cl
807
        add     cl, cl
807
        add     cl, cl
808
        movzx   eax, word [esi+2]
808
        movzx   eax, word [esi+2]
809
        shr     eax, cl
809
        shr     eax, cl
810
        and     eax, 15
810
        and     eax, 15
811
        cmp     al, ctrlkey_tests_num
811
        cmp     al, ctrlkey_tests_num
812
        jae     .fail
812
        jae     .fail
813
        xchg    eax, edx
813
        xchg    eax, edx
814
        and     al, 3
814
        and     al, 3
815
        call    [ctrlkey_tests + edx*4]
815
        call    [ctrlkey_tests + edx*4]
816
        cmp     al, 1
816
        cmp     al, 1
817
        pop     edx eax
817
        pop     edx eax
818
        ret
818
        ret
819
.fail:
819
.fail:
820
        stc
820
        stc
821
        pop     edx eax
821
        pop     edx eax
822
        ret
822
        ret
823
 
823
 
824
ctrlkey_test0:
824
ctrlkey_test0:
825
        test    al, al
825
        test    al, al
826
        setz    al
826
        setz    al
827
        ret
827
        ret
828
ctrlkey_test1:
828
ctrlkey_test1:
829
        test    al, al
829
        test    al, al
830
        setnp   al
830
        setnp   al
831
        ret
831
        ret
832
ctrlkey_test2:
832
ctrlkey_test2:
833
        cmp     al, 3
833
        cmp     al, 3
834
        setz    al
834
        setz    al
835
        ret
835
        ret
836
ctrlkey_test3:
836
ctrlkey_test3:
837
        cmp     al, 1
837
        cmp     al, 1
838
        setz    al
838
        setz    al
839
        ret
839
        ret
840
ctrlkey_test4:
840
ctrlkey_test4:
841
        cmp     al, 2
841
        cmp     al, 2
842
        setz    al
842
        setz    al
843
        ret
843
        ret
844
 
844
 
845
enum_associations_callback:
845
enum_associations_callback:
846
; LongBool __stdcall callback(f_name,sec_name,key_name,key_value);
846
; LongBool __stdcall callback(f_name,sec_name,key_name,key_value);
847
; [esp+4] = f_name, [esp+8] = sec_name, [esp+12] = key_name, [esp+16] = key_value
847
; [esp+4] = f_name, [esp+8] = sec_name, [esp+12] = key_name, [esp+16] = key_value
848
        mov     esi, [esp+12]
848
        mov     esi, [esp+12]
849
        mov     edi, esi
849
        mov     edi, esi
850
@@:
850
@@:
851
        lodsb
851
        lodsb
852
        test    al, al
852
        test    al, al
853
        jnz     @b
853
        jnz     @b
854
        sub     esi, edi        ; esi = size of key name
854
        sub     esi, edi        ; esi = size of key name
855
        mov     eax, [esp+16]
855
        mov     eax, [esp+16]
856
@@:
856
@@:
857
        inc     esi
857
        inc     esi
858
        inc     eax
858
        inc     eax
859
        cmp     byte [eax-1], 0
859
        cmp     byte [eax-1], 0
860
        jnz     @b
860
        jnz     @b
861
; esi = total size of entry
861
; esi = total size of entry
862
        push    esi
862
        push    esi
863
        add     esi, [associations_size]
863
        add     esi, [associations_size]
864
        mov     ecx, [associations_allocated]
864
        mov     ecx, [associations_allocated]
865
@@:
865
@@:
866
        cmp     esi, ecx
866
        cmp     esi, ecx
867
        jbe     @f
867
        jbe     @f
868
        add     ecx, ecx
868
        add     ecx, ecx
869
        jmp     @b
869
        jmp     @b
870
@@:
870
@@:
871
        pop     esi
871
        pop     esi
872
        cmp     [associations_allocated], ecx
872
        cmp     [associations_allocated], ecx
873
        jz      @f
873
        jz      @f
874
        mov     [associations_allocated], ecx
874
        mov     [associations_allocated], ecx
875
        mov     edx, [associations]
875
        mov     edx, [associations]
876
        call    xpgrealloc
876
        call    xpgrealloc
877
        mov     [associations], eax
877
        mov     [associations], eax
878
        test    eax, eax
878
        test    eax, eax
879
        jz      .err
879
        jz      .err
880
@@:
880
@@:
881
        mov     eax, esi
881
        mov     eax, esi
882
        mov     esi, edi
882
        mov     esi, edi
883
        mov     edi, [associations]
883
        mov     edi, [associations]
884
        add     edi, [associations_size]
884
        add     edi, [associations_size]
885
        dec     edi
885
        dec     edi
886
        add     [associations_size], eax
886
        add     [associations_size], eax
887
@@:
887
@@:
888
        lodsb
888
        lodsb
889
        stosb
889
        stosb
890
        test    al, al
890
        test    al, al
891
        jnz     @b
891
        jnz     @b
892
        mov     esi, [esp+16]
892
        mov     esi, [esp+16]
893
@@:
893
@@:
894
        lodsb
894
        lodsb
895
        stosb
895
        stosb
896
        test    al, al
896
        test    al, al
897
        jnz     @b
897
        jnz     @b
898
.ret:
898
.ret:
899
        mov     al, 1
899
        mov     al, 1
900
        ret     16
900
        ret     16
901
.err:
901
.err:
902
        mov     ecx, edx
902
        mov     ecx, edx
903
        call    pgfree
903
        call    pgfree
904
        xor     eax, eax
904
        xor     eax, eax
905
        ret     16
905
        ret     16
906
 
906
 
907
enum_plugins_callback:
907
enum_plugins_callback:
908
; LongBool __stdcall callback(f_name,sec_name,key_name,key_value);
908
; LongBool __stdcall callback(f_name,sec_name,key_name,key_value);
909
; [esp+4] = f_name, [esp+8] = sec_name, [esp+12] = key_name, [esp+16] = key_value
909
; [esp+4] = f_name, [esp+8] = sec_name, [esp+12] = key_name, [esp+16] = key_value
910
        mov     esi, [esp+16]
910
        mov     esi, [esp+16]
911
        cmp     byte [esi], '/'
911
        cmp     byte [esi], '/'
912
        jz      .absolute
912
        jz      .absolute
913
; convert path to absolute
913
; convert path to absolute
914
        mov     edi, execdata
914
        mov     edi, execdata
915
@@:
915
@@:
916
        cmp     edi, execdata+1024
916
        cmp     edi, execdata+1024
917
        jae     .overflow
917
        jae     .overflow
918
        lodsb
918
        lodsb
919
        stosb
919
        stosb
920
        test    al, al
920
        test    al, al
921
        jnz     @b
921
        jnz     @b
922
        mov     edi, saved_file_name
922
        mov     edi, saved_file_name
923
        mov     [esp+16], edi
923
        mov     [esp+16], edi
924
        mov     esi, app_path
924
        mov     esi, app_path
925
        push    esi
925
        push    esi
926
        xor     ecx, ecx
926
        xor     ecx, ecx
927
@@:
927
@@:
928
        lodsb
928
        lodsb
929
        test    al, al
929
        test    al, al
930
        jz      @f
930
        jz      @f
931
        cmp     al, '/'
931
        cmp     al, '/'
932
        jnz     @b
932
        jnz     @b
933
        mov     ecx, esi
933
        mov     ecx, esi
934
        jmp     @b
934
        jmp     @b
935
@@:
935
@@:
936
        pop     esi
936
        pop     esi
937
        sub     ecx, esi
937
        sub     ecx, esi
938
        push    edi
938
        push    edi
939
        add     edi, ecx
939
        add     edi, ecx
940
        cmp     edi, saved_file_name+1024
940
        cmp     edi, saved_file_name+1024
941
        pop     edi
941
        pop     edi
942
        ja      .overflow
942
        ja      .overflow
943
        rep     movsb
943
        rep     movsb
944
        mov     esi, execdata
944
        mov     esi, execdata
945
.z:
945
.z:
946
        cmp     word [esi], '.'
946
        cmp     word [esi], '.'
947
        jz      .ret
947
        jz      .ret
948
        cmp     word [esi], './'
948
        cmp     word [esi], './'
949
        jnz     @f
949
        jnz     @f
950
        add     esi, 2
950
        add     esi, 2
951
        jmp     .z
951
        jmp     .z
952
@@:
952
@@:
953
        cmp     word [esi], '..'
953
        cmp     word [esi], '..'
954
        jnz     .c
954
        jnz     .c
955
        cmp     byte [esi+2], 0
955
        cmp     byte [esi+2], 0
956
        jz      .ret
956
        jz      .ret
957
        cmp     byte [esi+2], '/'
957
        cmp     byte [esi+2], '/'
958
        jnz     .c
958
        jnz     .c
959
        add     esi, 3
959
        add     esi, 3
960
@@:
960
@@:
961
        dec     edi
961
        dec     edi
962
        cmp     edi, saved_file_name
962
        cmp     edi, saved_file_name
963
        jbe     .ret
963
        jbe     .ret
964
        cmp     byte [edi-1], '/'
964
        cmp     byte [edi-1], '/'
965
        jnz     @b
965
        jnz     @b
966
        jmp     .z
966
        jmp     .z
967
.c:
967
.c:
968
        cmp     edi, saved_file_name+1024
968
        cmp     edi, saved_file_name+1024
969
        jae     .overflow
969
        jae     .overflow
970
        lodsb
970
        lodsb
971
        stosb
971
        stosb
972
        test    al, al
972
        test    al, al
973
        jnz     .c
973
        jnz     .c
974
        jmp     .absolute
974
        jmp     .absolute
975
.overflow:
975
.overflow:
976
        mov     esi, execdata
976
        mov     esi, execdata
977
        mov     byte [esi+1023], 0
977
        mov     byte [esi+1023], 0
978
        call    load_dll_and_import.big
978
        call    load_dll_and_import.big
979
.ret:
979
.ret:
980
        mov     al, 1
980
        mov     al, 1
981
        ret     16
981
        ret     16
982
.absolute:
982
.absolute:
983
; allocate space for plugin info
983
; allocate space for plugin info
984
        mov     eax, [num_plugins]
984
        mov     eax, [num_plugins]
985
        inc     eax
985
        inc     eax
986
        mov     [num_plugins], eax
986
        mov     [num_plugins], eax
987
        imul    ecx, eax, PluginInfo.size
987
        imul    ecx, eax, PluginInfo.size
988
        cmp     ecx, [alloc_plugins]
988
        cmp     ecx, [alloc_plugins]
989
        jbe     .norealloc
989
        jbe     .norealloc
990
        mov     edx, [plugins]
990
        mov     edx, [plugins]
991
        call    xpgrealloc
991
        call    xpgrealloc
992
        test    eax, eax
992
        test    eax, eax
993
        jnz     @f
993
        jnz     @f
994
.dec_ret:
994
.dec_ret:
995
        dec     [num_plugins]
995
        dec     [num_plugins]
996
        jmp     .ret
996
        jmp     .ret
997
@@:
997
@@:
998
        mov     [plugins], eax
998
        mov     [plugins], eax
999
        lea     eax, [ecx+0xFFF]
999
        lea     eax, [ecx+0xFFF]
1000
        and     eax, not 0xFFF
1000
        and     eax, not 0xFFF
1001
        mov     [alloc_plugins], eax
1001
        mov     [alloc_plugins], eax
1002
.norealloc:
1002
.norealloc:
1003
        mov     esi, [plugins]
1003
        mov     esi, [plugins]
1004
        lea     esi, [esi+ecx-PluginInfo.size]
1004
        lea     esi, [esi+ecx-PluginInfo.size]
1005
; load plugin DLL
1005
; load plugin DLL
1006
        or      ebp, -1
1006
        or      ebp, -1
1007
        mov     eax, [esp+16]
1007
        mov     eax, [esp+16]
1008
        call    load_dll_and_import.do
1008
        call    load_dll_and_import.do
1009
        test    eax, eax
1009
        test    eax, eax
1010
        jnz     .dec_ret
1010
        jnz     .dec_ret
1011
; find exported functions
1011
; find exported functions
1012
        mov     eax, aVersion
1012
        mov     eax, aVersion
1013
        call    load_dll_and_import.find_exported_function
1013
        call    load_dll_and_import.find_exported_function
1014
        jnc     @f
1014
        jnc     @f
1015
        xor     eax, eax
1015
        xor     eax, eax
1016
@@:
1016
@@:
1017
MIN_INTERFACE_VER = 3
1017
MIN_INTERFACE_VER = 3
1018
MAX_INTERFACE_VER = 3
1018
MAX_INTERFACE_VER = 3
1019
        cmp     eax, MIN_INTERFACE_VER
1019
        cmp     eax, MIN_INTERFACE_VER
1020
        jb      @f
1020
        jb      @f
1021
        cmp     eax, MAX_INTERFACE_VER
1021
        cmp     eax, MAX_INTERFACE_VER
1022
        jbe     .version_ok
1022
        jbe     .version_ok
1023
@@:
1023
@@:
1024
        push    aIncompatibleVersion
1024
        push    aIncompatibleVersion
1025
.cantload:
1025
.cantload:
1026
        push    dword [esp+4+16]
1026
        push    dword [esp+4+16]
1027
        push    aCannotLoadPlugin
1027
        push    aCannotLoadPlugin
1028
        mov     eax, esp
1028
        mov     eax, esp
1029
        push    ContinueBtn
1029
        push    ContinueBtn
1030
        push    1
1030
        push    1
1031
        push    eax
1031
        push    eax
1032
        push    3
1032
        push    3
1033
        call    SayErr
1033
        call    SayErr
1034
        add     esp, 12
1034
        add     esp, 12
1035
        jmp     .dec_ret
1035
        jmp     .dec_ret
1036
.version_ok:
1036
.version_ok:
1037
        mov     edi, esi
1037
        mov     edi, esi
1038
        mov     esi, plugin_exported
1038
        mov     esi, plugin_exported
1039
.import:
1039
.import:
1040
        lodsd
1040
        lodsd
1041
        test    eax, eax
1041
        test    eax, eax
1042
        jz      .import_done
1042
        jz      .import_done
1043
        call    load_dll_and_import.find_exported_function
1043
        call    load_dll_and_import.find_exported_function
1044
        jnc     @f
1044
        jnc     @f
1045
        mov     eax, [esi-4+plugin_exported_default-plugin_exported]
1045
        mov     eax, [esi-4+plugin_exported_default-plugin_exported]
1046
@@:
1046
@@:
1047
        stosd
1047
        stosd
1048
        jmp     .import
1048
        jmp     .import
1049
.import_done:
1049
.import_done:
1050
; initialize plugin
1050
; initialize plugin
1051
        mov     eax, aPluginLoad
1051
        mov     eax, aPluginLoad
1052
        call    load_dll_and_import.find_exported_function
1052
        call    load_dll_and_import.find_exported_function
1053
        jc      .ok
1053
        jc      .ok
1054
        push    kfar_info
1054
        push    kfar_info
1055
        call    eax
1055
        call    eax
1056
        cmp     eax, 1
1056
        cmp     eax, 1
1057
        jb      .ok
1057
        jb      .ok
1058
        ja      .dec_ret
1058
        ja      .dec_ret
1059
        push    aInitFailed
1059
        push    aInitFailed
1060
        jmp     .cantload
1060
        jmp     .cantload
1061
.ok:
1061
.ok:
1062
        mov     al, 1
1062
        mov     al, 1
1063
        ret     16
1063
        ret     16
1064
 
1064
 
1065
plugin_unload_default:
1065
plugin_unload_default:
1066
        ret
1066
        ret
1067
 
1067
 
1068
OpenFilePlugin_default:
1068
OpenFilePlugin_default:
1069
        xor     eax, eax
1069
        xor     eax, eax
1070
        ret     28
1070
        ret     28
1071
GetFiles_default:
1071
GetFiles_default:
1072
        xor     eax, eax
1072
        xor     eax, eax
1073
        ret     20
1073
        ret     20
1074
 
1074
 
1075
ClosePlugin_default:
1075
ClosePlugin_default:
1076
        ret     4
1076
        ret     4
1077
 
1077
 
1078
GetOpenPluginInfo_default:
1078
GetOpenPluginInfo_default:
1079
        ret     8
1079
        ret     8
1080
 
1080
 
1081
SetFolder_default:
1081
SetFolder_default:
1082
open_default:
1082
open_default:
1083
        xor     eax, eax
1083
        xor     eax, eax
1084
        ret     12
1084
        ret     12
1085
 
1085
 
1086
new_screen:
1086
new_screen:
1087
; in: ecx=sizeof(screen data), edx->vtable
1087
; in: ecx=sizeof(screen data), edx->vtable
1088
; out: ebp=pointer or NULL, eax!=0 if successful
1088
; out: ebp=pointer or NULL, eax!=0 if successful
1089
; destroys ebx,ecx
1089
; destroys ebx,ecx
1090
        call    xpgalloc
1090
        call    xpgalloc
1091
        test    eax, eax
1091
        test    eax, eax
1092
        jnz     @f
1092
        jnz     @f
1093
        ret
1093
        ret
1094
@@:
1094
@@:
1095
        mov     ebp, eax
1095
        mov     ebp, eax
1096
        mov     eax, [screens]
1096
        mov     eax, [screens]
1097
        mov     ecx, [num_screens]
1097
        mov     ecx, [num_screens]
1098
        inc     ecx
1098
        inc     ecx
1099
        shl     ecx, 3
1099
        shl     ecx, 3
1100
        test    ecx, 0xFFF
1100
        test    ecx, 0xFFF
1101
        jnz     .norealloc
1101
        jnz     .norealloc
1102
        push    edx
1102
        push    edx
1103
        mov     edx, eax
1103
        mov     edx, eax
1104
        call    xpgrealloc
1104
        call    xpgrealloc
1105
        pop     edx
1105
        pop     edx
1106
        test    eax, eax
1106
        test    eax, eax
1107
        jnz     @f
1107
        jnz     @f
1108
        mov     ecx, ebp
1108
        mov     ecx, ebp
1109
        call    pgfree
1109
        call    pgfree
1110
        xor     eax, eax
1110
        xor     eax, eax
1111
        ret
1111
        ret
1112
@@:
1112
@@:
1113
        mov     [screens], eax
1113
        mov     [screens], eax
1114
.norealloc:
1114
.norealloc:
1115
        inc     [num_screens]
1115
        inc     [num_screens]
1116
        mov     [eax+ecx-8], edx
1116
        mov     [eax+ecx-8], edx
1117
        mov     [eax+ecx-4], ebp
1117
        mov     [eax+ecx-4], ebp
1118
        mov     eax, [num_screens]
1118
        mov     eax, [num_screens]
1119
        dec     eax
1119
        dec     eax
1120
        mov     [active_screen], eax
1120
        mov     [active_screen], eax
1121
        mov     [active_screen_vtable], edx
1121
        mov     [active_screen_vtable], edx
1122
        mov     [active_screen_data], ebp
1122
        mov     [active_screen_data], ebp
1123
        or      [idle_interval], -1
1123
        or      [idle_interval], -1
1124
        mov     edx, [edx+screen_vtable.keybar]
1124
        mov     edx, [edx+screen_vtable.keybar]
1125
        test    edx, edx
1125
        test    edx, edx
1126
        jz      @f
1126
        jz      @f
1127
        mov     [active_screen_keybar], edx
1127
        mov     [active_screen_keybar], edx
1128
@@:
1128
@@:
1129
        jmp     draw_keybar
1129
        jmp     draw_keybar
1130
 
1130
 
1131
next_screen:
1131
next_screen:
1132
        mov     eax, [active_screen]
1132
        mov     eax, [active_screen]
1133
        inc     eax
1133
        inc     eax
1134
        cmp     eax, [num_screens]
1134
        cmp     eax, [num_screens]
1135
        jnz     @f
1135
        jnz     @f
1136
        xor     eax, eax
1136
        xor     eax, eax
1137
@@:     mov     [active_screen], eax
1137
@@:     mov     [active_screen], eax
1138
        jmp     change_screen
1138
        jmp     change_screen
1139
 
1139
 
1140
delete_active_screen:
1140
delete_active_screen:
1141
        mov     edi, [screens]
1141
        mov     edi, [screens]
1142
        mov     eax, [active_screen]
1142
        mov     eax, [active_screen]
1143
        shl     eax, 3
1143
        shl     eax, 3
1144
        add     edi, eax
1144
        add     edi, eax
1145
        push    dword [edi+4]
1145
        push    dword [edi+4]
1146
        lea     esi, [edi+8]
1146
        lea     esi, [edi+8]
1147
        mov     ecx, [num_screens]
1147
        mov     ecx, [num_screens]
1148
        sub     ecx, [active_screen]
1148
        sub     ecx, [active_screen]
1149
        dec     ecx
1149
        dec     ecx
1150
        add     ecx, ecx
1150
        add     ecx, ecx
1151
        rep     movsd
1151
        rep     movsd
1152
        dec     [num_screens]
1152
        dec     [num_screens]
1153
        mov     ecx, [num_screens]
1153
        mov     ecx, [num_screens]
1154
        shl     ecx, 3
1154
        shl     ecx, 3
1155
        test    ecx, 0xFFF
1155
        test    ecx, 0xFFF
1156
        jnz     .norealloc
1156
        jnz     .norealloc
1157
        mov     edx, [screens]
1157
        mov     edx, [screens]
1158
        call    pgrealloc               ; must succeed, because we decrease size
1158
        call    pgrealloc               ; must succeed, because we decrease size
1159
        mov     [screens], eax
1159
        mov     [screens], eax
1160
.norealloc:
1160
.norealloc:
1161
        pop     ecx
1161
        pop     ecx
1162
        call    pgfree
1162
        call    pgfree
1163
        dec     [active_screen]
1163
        dec     [active_screen]
1164
 
1164
 
1165
change_screen:
1165
change_screen:
1166
        pusha
1166
        pusha
1167
        or      [idle_interval], -1
1167
        or      [idle_interval], -1
1168
        mov     eax, [active_screen]
1168
        mov     eax, [active_screen]
1169
        mov     esi, [screens]
1169
        mov     esi, [screens]
1170
        mov     ebp, [esi+eax*8+4]
1170
        mov     ebp, [esi+eax*8+4]
1171
        mov     eax, [esi+eax*8]
1171
        mov     eax, [esi+eax*8]
1172
        push    eax ebp
1172
        push    eax ebp
1173
        mov     eax, [eax+screen_vtable.OnActivate]
1173
        mov     eax, [eax+screen_vtable.OnActivate]
1174
        test    eax, eax
1174
        test    eax, eax
1175
        jz      @f
1175
        jz      @f
1176
        call    eax
1176
        call    eax
1177
@@:
1177
@@:
1178
        pop     ebp eax
1178
        pop     ebp eax
1179
        mov     [active_screen_vtable], eax
1179
        mov     [active_screen_vtable], eax
1180
        mov     [active_screen_data], ebp
1180
        mov     [active_screen_data], ebp
1181
        mov     edx, [eax+screen_vtable.keybar]
1181
        mov     edx, [eax+screen_vtable.keybar]
1182
        test    edx, edx
1182
        test    edx, edx
1183
        jz      @f
1183
        jz      @f
1184
        mov     [active_screen_keybar], edx
1184
        mov     [active_screen_keybar], edx
1185
@@:
1185
@@:
1186
        call    draw_keybar
1186
        call    draw_keybar
1187
        mov     [cursor_size], cursor_normal_size
1187
        mov     [cursor_size], cursor_normal_size
1188
        call    [eax+screen_vtable.OnRedraw]
1188
        call    [eax+screen_vtable.OnRedraw]
1189
        popa
1189
        popa
1190
        ret
1190
        ret
1191
 
1191
 
1192
F12:
1192
F12:
1193
        mov     eax, [cur_width]
1193
        mov     eax, [cur_width]
1194
        add     eax, 8
1194
        add     eax, 8
1195
        mov     esi, eax
1195
        mov     esi, eax
1196
        mul     [num_screens]
1196
        mul     [num_screens]
1197
        mov     ecx, eax
1197
        mov     ecx, eax
1198
        call    xpgalloc
1198
        call    xpgalloc
1199
        test    eax, eax
1199
        test    eax, eax
1200
        jnz     @f
1200
        jnz     @f
1201
        ret
1201
        ret
1202
@@:
1202
@@:
1203
        mov     ebx, eax
1203
        mov     ebx, eax
1204
        mov     edi, eax
1204
        mov     edi, eax
1205
        xor     ecx, ecx
1205
        xor     ecx, ecx
1206
.next:
1206
.next:
1207
        xor     eax, eax
1207
        xor     eax, eax
1208
        stosd
1208
        stosd
1209
        inc     ecx
1209
        inc     ecx
1210
        cmp     ecx, [num_screens]
1210
        cmp     ecx, [num_screens]
1211
        jz      @f
1211
        jz      @f
1212
        lea     eax, [edi+esi-4]
1212
        lea     eax, [edi+esi-4]
1213
        mov     dword [edi-4], eax
1213
        mov     dword [edi-4], eax
1214
@@:
1214
@@:
1215
        xor     eax, eax
1215
        xor     eax, eax
1216
        stosd
1216
        stosd
1217
        dec     ecx
1217
        dec     ecx
1218
        jz      @f
1218
        jz      @f
1219
        lea     eax, [edi-8]
1219
        lea     eax, [edi-8]
1220
        sub     eax, esi
1220
        sub     eax, esi
1221
        mov     dword [edi-4], eax
1221
        mov     dword [edi-4], eax
1222
@@:
1222
@@:
1223
        mov     al, '&'
1223
        mov     al, '&'
1224
        stosb
1224
        stosb
1225
        cmp     ecx, 36
1225
        cmp     ecx, 36
1226
        jae     .noletter
1226
        jae     .noletter
1227
        lea     eax, [ecx+'0']
1227
        lea     eax, [ecx+'0']
1228
        cmp     al, '9'
1228
        cmp     al, '9'
1229
        jbe     @f
1229
        jbe     @f
1230
        add     al, 7
1230
        add     al, 7
1231
@@:
1231
@@:
1232
        stosb
1232
        stosb
1233
        mov     al, '.'
1233
        mov     al, '.'
1234
        stosb
1234
        stosb
1235
        jmp     .letter_done
1235
        jmp     .letter_done
1236
.noletter:
1236
.noletter:
1237
        mov     al, ' '
1237
        mov     al, ' '
1238
        stosb
1238
        stosb
1239
        stosb
1239
        stosb
1240
.letter_done:
1240
.letter_done:
1241
        mov     al, ' '
1241
        mov     al, ' '
1242
        stosb
1242
        stosb
1243
        pushad
1243
        pushad
1244
        mov     eax, [screens]
1244
        mov     eax, [screens]
1245
        mov     ebp, [eax+ecx*8+4]
1245
        mov     ebp, [eax+ecx*8+4]
1246
        mov     eax, [eax+ecx*8]
1246
        mov     eax, [eax+ecx*8]
1247
        mov     ecx, [cur_width]
1247
        mov     ecx, [cur_width]
1248
        sub     ecx, 12
1248
        sub     ecx, 12
1249
        call    [eax + screen_vtable.getname]
1249
        call    [eax + screen_vtable.getname]
1250
        popad
1250
        popad
1251
        sub     edi, 4
1251
        sub     edi, 4
1252
        add     edi, [cur_width]
1252
        add     edi, [cur_width]
1253
        inc     ecx
1253
        inc     ecx
1254
        cmp     ecx, [num_screens]
1254
        cmp     ecx, [num_screens]
1255
        jb      .next
1255
        jb      .next
1256
        mov     eax, [active_screen]
1256
        mov     eax, [active_screen]
1257
        mul     esi
1257
        mul     esi
1258
        add     eax, ebx
1258
        add     eax, ebx
1259
        push    1
1259
        push    1
1260
        push    dword aScreens
1260
        push    dword aScreens
1261
        push    eax
1261
        push    eax
1262
        call    menu
1262
        call    menu
1263
        cmp     eax, -1
1263
        cmp     eax, -1
1264
        jz      @f
1264
        jz      @f
1265
        sub     eax, ebx
1265
        sub     eax, ebx
1266
        div     esi
1266
        div     esi
1267
        mov     [active_screen], eax
1267
        mov     [active_screen], eax
1268
@@:
1268
@@:
1269
        mov     ecx, ebx
1269
        mov     ecx, ebx
1270
        call    pgfree
1270
        call    pgfree
1271
        jmp     change_screen
1271
        jmp     change_screen
1272
 
1272
 
1273
panels_OnKey:
1273
panels_OnKey:
1274
; restore screen hidden by quick search box
1274
; restore screen hidden by quick search box
1275
        cmp     [bDisplayQuickSearch], 0
1275
        cmp     [bDisplayQuickSearch], 0
1276
        jz      @f
1276
        jz      @f
1277
        mov     [bDisplayQuickSearch], 0
1277
        mov     [bDisplayQuickSearch], 0
1278
        push    0
1278
        push    0
1279
        push    QuickSearchDlg
1279
        push    QuickSearchDlg
1280
        call    HideDialogBox
1280
        call    HideDialogBox
1281
@@:
1281
@@:
1282
        mov     ebp, [active_panel]
1282
        mov     ebp, [active_panel]
1283
        mov     ecx, [ebp + panel1_index - panel1_data]
1283
        mov     ecx, [ebp + panel1_index - panel1_data]
1284
        mov     edx, [ebp + panel1_start - panel1_data]
1284
        mov     edx, [ebp + panel1_start - panel1_data]
1285
        mov     ebx, [ebp + panel1_colst - panel1_data]
1285
        mov     ebx, [ebp + panel1_colst - panel1_data]
1286
        add     ebx, edx
1286
        add     ebx, edx
1287
        mov     esi, panels_ctrlkeys
1287
        mov     esi, panels_ctrlkeys
1288
        call    process_ctrl_keys
1288
        call    process_ctrl_keys
1289
        jc      .nostdkey
1289
        jc      .nostdkey
1290
        mov     [bQuickSearchMode], 0
1290
        mov     [bQuickSearchMode], 0
1291
        ret
1291
        ret
1292
.leaveqsmode:
1292
.leaveqsmode:
1293
        mov     [bQuickSearchMode], 0
1293
        mov     [bQuickSearchMode], 0
1294
        call    draw_image
1294
        call    draw_image
1295
        ret
1295
        ret
1296
.keepqsmode:
1296
.keepqsmode:
1297
        push    QuickSearchDlg
1297
        push    QuickSearchDlg
1298
        call    ShowDialogBox
1298
        call    ShowDialogBox
1299
        mov     [bDisplayQuickSearch], 1
1299
        mov     [bDisplayQuickSearch], 1
1300
        ret
1300
        ret
1301
.nostdkey:
1301
.nostdkey:
1302
        cmp     [bQuickSearchMode], 0
1302
        cmp     [bQuickSearchMode], 0
1303
        jz      .noqsmode
1303
        jz      .noqsmode
1304
        test    al, al
1304
        test    al, al
1305
        js      .keepqsmode
1305
        js      .keepqsmode
1306
        cmp     al, 40h
1306
        cmp     al, 40h
1307
        jae     .leaveqsmode
1307
        jae     .leaveqsmode
1308
        cmp     al, 0Eh
1308
        cmp     al, 0Eh
1309
        jz      .qsbackspace
1309
        jz      .qsbackspace
1310
        cmp     al, 1Ch
1310
        cmp     al, 1Ch
1311
        jz      .test_enter
1311
        jz      .test_enter
1312
        movzx   eax, al
1312
        movzx   eax, al
1313
        cmp     byte [scan2ascii+eax], 0
1313
        cmp     byte [scan2ascii+eax], 0
1314
        jz      .leaveqsmode
1314
        jz      .leaveqsmode
1315
        call    get_ascii_char
1315
        call    get_ascii_char
1316
        mov     ecx, dword [quick_search_buf + 4]
1316
        mov     ecx, dword [quick_search_buf + 4]
1317
        cmp     ecx, quicksearch_maxlen
1317
        cmp     ecx, quicksearch_maxlen
1318
        jae     .keepqsmode
1318
        jae     .keepqsmode
1319
        mov     byte [quick_search_buf + 12 + ecx], al
1319
        mov     byte [quick_search_buf + 12 + ecx], al
1320
        mov     byte [quick_search_buf + 12 + ecx + 1], 0
1320
        mov     byte [quick_search_buf + 12 + ecx + 1], 0
1321
        push    ecx
1321
        push    ecx
1322
        call    quick_find
1322
        call    quick_find
1323
        pop     ecx
1323
        pop     ecx
1324
        jnc     @f
1324
        jnc     @f
1325
        mov     byte [quick_search_buf + 12 + ecx], 0
1325
        mov     byte [quick_search_buf + 12 + ecx], 0
1326
        jmp     .keepqsmode
1326
        jmp     .keepqsmode
1327
@@:
1327
@@:
1328
        inc     dword [quick_search_buf + 4]
1328
        inc     dword [quick_search_buf + 4]
1329
        sub     ecx, 16
1329
        sub     ecx, 16
1330
        jae     @f
1330
        jae     @f
1331
        xor     ecx, ecx
1331
        xor     ecx, ecx
1332
@@:
1332
@@:
1333
        mov     dword [quick_search_buf + 8], ecx
1333
        mov     dword [quick_search_buf + 8], ecx
1334
        jmp     .keepqsmode
1334
        jmp     .keepqsmode
1335
.qsbackspace:
1335
.qsbackspace:
1336
        mov     ecx, dword [quick_search_buf + 4]
1336
        mov     ecx, dword [quick_search_buf + 4]
1337
        jecxz   .keepqsmode2
1337
        jecxz   .keepqsmode2
1338
        dec     ecx
1338
        dec     ecx
1339
        mov     byte [quick_search_buf + 12 + ecx], 0
1339
        mov     byte [quick_search_buf + 12 + ecx], 0
1340
        dec     dword [quick_search_buf + 4]
1340
        dec     dword [quick_search_buf + 4]
1341
.keepqsmode2:
1341
.keepqsmode2:
1342
        jmp     .keepqsmode
1342
        jmp     .keepqsmode
1343
.test_enter:
1343
.test_enter:
1344
        test    [ctrlstate], 0Ch        ; LCtrl or RCtrl pressed?
1344
        test    [ctrlstate], 0Ch        ; LCtrl or RCtrl pressed?
1345
        jz      .keepqsmode2
1345
        jz      .keepqsmode2
1346
        test    [ctrlstate], 3          ; Shift pressed?
1346
        test    [ctrlstate], 3          ; Shift pressed?
1347
        jnz     @f
1347
        jnz     @f
1348
        call    quick_find_next
1348
        call    quick_find_next
1349
        jmp     .keepqsmode2
1349
        jmp     .keepqsmode2
1350
@@:
1350
@@:
1351
        call    quick_find_prev
1351
        call    quick_find_prev
1352
        jmp     .keepqsmode2
1352
        jmp     .keepqsmode2
1353
.noqsmode:
1353
.noqsmode:
1354
; handle Alt+ combinations for quick search
1354
; handle Alt+ combinations for quick search
1355
        test    [ctrlstate], 30h        ; LAlt or RAlt pressed?
1355
        test    [ctrlstate], 30h        ; LAlt or RAlt pressed?
1356
        jz      .noalt                  ; no => skip
1356
        jz      .noalt                  ; no => skip
1357
        test    [ctrlstate], 0Ch        ; LCtrl or RCtrl pressed?
1357
        test    [ctrlstate], 0Ch        ; LCtrl or RCtrl pressed?
1358
        jnz     .noalt                  ; yes => skip
1358
        jnz     .noalt                  ; yes => skip
1359
        cmp     al, 40h
1359
        cmp     al, 40h
1360
        jae     .noalt
1360
        jae     .noalt
1361
        movzx   eax, al
1361
        movzx   eax, al
1362
        cmp     byte [scan2ascii+eax], 0
1362
        cmp     byte [scan2ascii+eax], 0
1363
        jz      .noalt
1363
        jz      .noalt
1364
        call    get_ascii_char
1364
        call    get_ascii_char
1365
        mov     edi, quick_search_buf + 12
1365
        mov     edi, quick_search_buf + 12
1366
        mov     dword [edi-12], quicksearch_maxlen-1
1366
        mov     dword [edi-12], quicksearch_maxlen-1
1367
        mov     dword [edi-8], 1
1367
        mov     dword [edi-8], 1
1368
        and     dword [edi-4], 0
1368
        and     dword [edi-4], 0
1369
        stosb
1369
        stosb
1370
        mov     byte [edi], 0
1370
        mov     byte [edi], 0
1371
        call    quick_find
1371
        call    quick_find
1372
        jnc     @f
1372
        jnc     @f
1373
        mov     byte [quick_search_buf + 12], 0
1373
        mov     byte [quick_search_buf + 12], 0
1374
        and     dword [quick_search_buf + 4], 0
1374
        and     dword [quick_search_buf + 4], 0
1375
@@:
1375
@@:
1376
        mov     ebx, QuickSearchDlg
1376
        mov     ebx, QuickSearchDlg
1377
        mov     eax, [ebp + panel1_left - panel1_data]
1377
        mov     eax, [ebp + panel1_left - panel1_data]
1378
        add     eax, 10
1378
        add     eax, 10
1379
        mov     edx, [cur_width]
1379
        mov     edx, [cur_width]
1380
        sub     edx, 21
1380
        sub     edx, 21
1381
        cmp     eax, edx
1381
        cmp     eax, edx
1382
        jb      @f
1382
        jb      @f
1383
        mov     eax, edx
1383
        mov     eax, edx
1384
@@:
1384
@@:
1385
        mov     [ebx + dlgtemplate.x], eax
1385
        mov     [ebx + dlgtemplate.x], eax
1386
        mov     eax, [ebp + panel1_top - panel1_data]
1386
        mov     eax, [ebp + panel1_top - panel1_data]
1387
        add     eax, [ebp + panel1_height - panel1_data]
1387
        add     eax, [ebp + panel1_height - panel1_data]
1388
        mov     edx, [cur_height]
1388
        mov     edx, [cur_height]
1389
        sub     edx, 2
1389
        sub     edx, 2
1390
        cmp     eax, edx
1390
        cmp     eax, edx
1391
        jb      @f
1391
        jb      @f
1392
        mov     eax, edx
1392
        mov     eax, edx
1393
@@:
1393
@@:
1394
        mov     [ebx + dlgtemplate.y], eax
1394
        mov     [ebx + dlgtemplate.y], eax
1395
        push    ebx
1395
        push    ebx
1396
        call    ShowDialogBox
1396
        call    ShowDialogBox
1397
        mov     [bQuickSearchMode], 1
1397
        mov     [bQuickSearchMode], 1
1398
        mov     [bDisplayQuickSearch], 1
1398
        mov     [bDisplayQuickSearch], 1
1399
.find_letter_done:
1399
.find_letter_done:
1400
.noalt:
1400
.noalt:
1401
.ret:
1401
.ret:
1402
        ret
1402
        ret
1403
.up:
1403
.up:
1404
        jecxz   .ret
1404
        jecxz   .ret
1405
        dec     ecx
1405
        dec     ecx
1406
        mov     [ebp + panel1_index - panel1_data], ecx
1406
        mov     [ebp + panel1_index - panel1_data], ecx
1407
        cmp     ecx, edx
1407
        cmp     ecx, edx
1408
        jae     .done_redraw
1408
        jae     .done_redraw
1409
        mov     [ebp + panel1_start - panel1_data], ecx
1409
        mov     [ebp + panel1_start - panel1_data], ecx
1410
.done_redraw:
1410
.done_redraw:
1411
;        call    draw_panel
1411
;        call    draw_panel
1412
;        ret
1412
;        ret
1413
        jmp     draw_panel
1413
        jmp     draw_panel
1414
.insert:
1414
.insert:
1415
        lea     eax, [ecx*4]
1415
        lea     eax, [ecx*4]
1416
        add     eax, [ebp + panel1_files - panel1_data]
1416
        add     eax, [ebp + panel1_files - panel1_data]
1417
        mov     eax, [eax]
1417
        mov     eax, [eax]
1418
        cmp     word [eax+40], '..'
1418
        cmp     word [eax+40], '..'
1419
        jnz     @f
1419
        jnz     @f
1420
        cmp     byte [eax+42], 0
1420
        cmp     byte [eax+42], 0
1421
        jz      .insert.down
1421
        jz      .insert.down
1422
@@:
1422
@@:
1423
        xor     byte [eax+303], 1
1423
        xor     byte [eax+303], 1
1424
        mov     edx, [eax+32]
1424
        mov     edx, [eax+32]
1425
        test    byte [eax+303], 1
1425
        test    byte [eax+303], 1
1426
        mov     eax, [eax+36]
1426
        mov     eax, [eax+36]
1427
        jnz     .insert.increase
1427
        jnz     .insert.increase
1428
        sub     dword [ebp + panel1_selected_size - panel1_data], edx
1428
        sub     dword [ebp + panel1_selected_size - panel1_data], edx
1429
        sbb     dword [ebp + panel1_selected_size+4 - panel1_data], eax
1429
        sbb     dword [ebp + panel1_selected_size+4 - panel1_data], eax
1430
        dec     [ebp + panel1_selected_num - panel1_data]
1430
        dec     [ebp + panel1_selected_num - panel1_data]
1431
        jmp     .insert.down
1431
        jmp     .insert.down
1432
.insert.increase:
1432
.insert.increase:
1433
        add     dword [ebp + panel1_selected_size - panel1_data], edx
1433
        add     dword [ebp + panel1_selected_size - panel1_data], edx
1434
        adc     dword [ebp + panel1_selected_size+4 - panel1_data], eax
1434
        adc     dword [ebp + panel1_selected_size+4 - panel1_data], eax
1435
        inc     [ebp + panel1_selected_num - panel1_data]
1435
        inc     [ebp + panel1_selected_num - panel1_data]
1436
.insert.down:
1436
.insert.down:
1437
        inc     ecx
1437
        inc     ecx
1438
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
1438
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
1439
        jae     .done_redraw
1439
        jae     .done_redraw
1440
        jmp     @f
1440
        jmp     @f
1441
.down:
1441
.down:
1442
        inc     ecx
1442
        inc     ecx
1443
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
1443
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
1444
        jae     .ret
1444
        jae     .ret
1445
@@:
1445
@@:
1446
        mov     [ebp + panel1_index - panel1_data], ecx
1446
        mov     [ebp + panel1_index - panel1_data], ecx
1447
        cmp     ecx, ebx
1447
        cmp     ecx, ebx
1448
        jb      .done_redraw
1448
        jb      .done_redraw
1449
        sub     ecx, [ebp + panel1_colst - panel1_data]
1449
        sub     ecx, [ebp + panel1_colst - panel1_data]
1450
        inc     ecx
1450
        inc     ecx
1451
        mov     [ebp + panel1_start - panel1_data], ecx
1451
        mov     [ebp + panel1_start - panel1_data], ecx
1452
        jmp     .done_redraw
1452
        jmp     .done_redraw
1453
.left:
1453
.left:
1454
        test    ecx, ecx
1454
        test    ecx, ecx
1455
        jnz     @f
1455
        jnz     @f
1456
        ret
1456
        ret
1457
@@:
1457
@@:
1458
        mov     eax, [ebp + panel1_colsz - panel1_data]
1458
        mov     eax, [ebp + panel1_colsz - panel1_data]
1459
        sub     ecx, eax
1459
        sub     ecx, eax
1460
        jae     @f
1460
        jae     @f
1461
        xor     ecx, ecx
1461
        xor     ecx, ecx
1462
@@:
1462
@@:
1463
        mov     [ebp + panel1_index - panel1_data], ecx
1463
        mov     [ebp + panel1_index - panel1_data], ecx
1464
.finalize_left:
1464
.finalize_left:
1465
        cmp     ecx, edx
1465
        cmp     ecx, edx
1466
        jae     .done_redraw
1466
        jae     .done_redraw
1467
        sub     edx, eax
1467
        sub     edx, eax
1468
        jae     @f
1468
        jae     @f
1469
        xor     edx, edx
1469
        xor     edx, edx
1470
@@:
1470
@@:
1471
        mov     [ebp + panel1_start - panel1_data], edx
1471
        mov     [ebp + panel1_start - panel1_data], edx
1472
        jmp     .done_redraw
1472
        jmp     .done_redraw
1473
.pgup:
1473
.pgup:
1474
        mov     eax, [ebp + panel1_colst - panel1_data]
1474
        mov     eax, [ebp + panel1_colst - panel1_data]
1475
        dec     eax
1475
        dec     eax
1476
        jnz     @f
1476
        jnz     @f
1477
        inc     eax
1477
        inc     eax
1478
@@:
1478
@@:
1479
        test    ecx, ecx
1479
        test    ecx, ecx
1480
        jnz     @f
1480
        jnz     @f
1481
        ret
1481
        ret
1482
@@:
1482
@@:
1483
        sub     ecx, eax
1483
        sub     ecx, eax
1484
        jae     @f
1484
        jae     @f
1485
        xor     ecx, ecx
1485
        xor     ecx, ecx
1486
@@:
1486
@@:
1487
        mov     [ebp + panel1_index - panel1_data], ecx
1487
        mov     [ebp + panel1_index - panel1_data], ecx
1488
        dec     ecx
1488
        dec     ecx
1489
        jmp     .finalize_left
1489
        jmp     .finalize_left
1490
.right:
1490
.right:
1491
        mov     eax, [ebp + panel1_colsz - panel1_data]
1491
        mov     eax, [ebp + panel1_colsz - panel1_data]
1492
        add     ecx, eax
1492
        add     ecx, eax
1493
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
1493
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
1494
        jb      @f
1494
        jb      @f
1495
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
1495
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
1496
        dec     ecx
1496
        dec     ecx
1497
@@:
1497
@@:
1498
        mov     [ebp + panel1_index - panel1_data], ecx
1498
        mov     [ebp + panel1_index - panel1_data], ecx
1499
.finalize_right:
1499
.finalize_right:
1500
        cmp     ecx, ebx
1500
        cmp     ecx, ebx
1501
        jb      .done_redraw
1501
        jb      .done_redraw
1502
        add     ebx, eax
1502
        add     ebx, eax
1503
        cmp     ebx, [ebp + panel1_numfiles - panel1_data]
1503
        cmp     ebx, [ebp + panel1_numfiles - panel1_data]
1504
        jbe     @f
1504
        jbe     @f
1505
        mov     ebx, [ebp + panel1_numfiles - panel1_data]
1505
        mov     ebx, [ebp + panel1_numfiles - panel1_data]
1506
@@:
1506
@@:
1507
        sub     ebx, [ebp + panel1_colst - panel1_data]
1507
        sub     ebx, [ebp + panel1_colst - panel1_data]
1508
        jae     @f
1508
        jae     @f
1509
        xor     ebx, ebx
1509
        xor     ebx, ebx
1510
@@:
1510
@@:
1511
        mov     [ebp + panel1_start - panel1_data], ebx
1511
        mov     [ebp + panel1_start - panel1_data], ebx
1512
        jmp     .done_redraw
1512
        jmp     .done_redraw
1513
.pgdn:
1513
.pgdn:
1514
        mov     eax, [ebp + panel1_colst - panel1_data]
1514
        mov     eax, [ebp + panel1_colst - panel1_data]
1515
        dec     eax
1515
        dec     eax
1516
        jnz     @f
1516
        jnz     @f
1517
        inc     eax
1517
        inc     eax
1518
@@:
1518
@@:
1519
        add     ecx, eax
1519
        add     ecx, eax
1520
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
1520
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
1521
        jb      @f
1521
        jb      @f
1522
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
1522
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
1523
        dec     ecx
1523
        dec     ecx
1524
@@:
1524
@@:
1525
        mov     [ebp + panel1_index - panel1_data], ecx
1525
        mov     [ebp + panel1_index - panel1_data], ecx
1526
        inc     ecx
1526
        inc     ecx
1527
        jmp     .finalize_right
1527
        jmp     .finalize_right
1528
.tab:
1528
.tab:
1529
        xor     [active_panel], panel1_data xor panel2_data
1529
        xor     [active_panel], panel1_data xor panel2_data
1530
        call    draw_cmdbar
1530
        call    draw_cmdbar
1531
        call    draw_panel
1531
        call    draw_panel
1532
        mov     ebp, [active_panel]
1532
        mov     ebp, [active_panel]
1533
        jmp     .done_redraw
1533
        jmp     .done_redraw
1534
.home:
1534
.home:
1535
        and     [ebp + panel1_start - panel1_data], 0
1535
        and     [ebp + panel1_start - panel1_data], 0
1536
        and     [ebp + panel1_index - panel1_data], 0
1536
        and     [ebp + panel1_index - panel1_data], 0
1537
        jmp     .done_redraw
1537
        jmp     .done_redraw
1538
.end:
1538
.end:
1539
        mov     eax, [ebp + panel1_numfiles - panel1_data]
1539
        mov     eax, [ebp + panel1_numfiles - panel1_data]
1540
        dec     eax
1540
        dec     eax
1541
        mov     [ebp + panel1_index - panel1_data], eax
1541
        mov     [ebp + panel1_index - panel1_data], eax
1542
        inc     eax
1542
        inc     eax
1543
        sub     eax, [ebp + panel1_colst - panel1_data]
1543
        sub     eax, [ebp + panel1_colst - panel1_data]
1544
        jae     @f
1544
        jae     @f
1545
        xor     eax, eax
1545
        xor     eax, eax
1546
@@:
1546
@@:
1547
        mov     [ebp + panel1_start - panel1_data], eax
1547
        mov     [ebp + panel1_start - panel1_data], eax
1548
        jmp     .done_redraw
1548
        jmp     .done_redraw
1549
.enter:
1549
.enter:
1550
        cmp     [bQuickSearchMode], 0
1550
        cmp     [bQuickSearchMode], 0
1551
        jz      @f
1551
        jz      @f
1552
        call    draw_image
1552
        call    draw_image
1553
@@:
1553
@@:
1554
        call    get_curfile_folder_entry
1554
        call    get_curfile_folder_entry
1555
        test    byte [ecx], 10h
1555
        test    byte [ecx], 10h
1556
        jnz     .enter_folder
1556
        jnz     .enter_folder
1557
; todo: add  handling on plugin panel
1557
; todo: add  handling on plugin panel
1558
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
1558
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
1559
        jnz     .ret
1559
        jnz     .ret
1560
; generate full file name
1560
; generate full file name
1561
        lea     esi, [ebp + panel1_dir - panel1_data]
1561
        lea     esi, [ebp + panel1_dir - panel1_data]
1562
        mov     edi, execdata
1562
        mov     edi, execdata
1563
@@:
1563
@@:
1564
        lodsb
1564
        lodsb
1565
        test    al, al
1565
        test    al, al
1566
        jz      @f
1566
        jz      @f
1567
        stosb
1567
        stosb
1568
        cmp     edi, execdataend-1
1568
        cmp     edi, execdataend-1
1569
        jae     .bigfilename
1569
        jae     .bigfilename
1570
        jmp     @b
1570
        jmp     @b
1571
@@:
1571
@@:
1572
        lea     esi, [ecx+40]
1572
        lea     esi, [ecx+40]
1573
        mov     al, '/'
1573
        mov     al, '/'
1574
        stosb
1574
        stosb
1575
@@:
1575
@@:
1576
        lodsb
1576
        lodsb
1577
        stosb
1577
        stosb
1578
        cmp     edi, execdataend
1578
        cmp     edi, execdataend
1579
        ja      .bigfilename
1579
        ja      .bigfilename
1580
        test    al, al
1580
        test    al, al
1581
        jnz     @b
1581
        jnz     @b
1582
; try to open file and look for all plugins
1582
; try to open file and look for all plugins
1583
        push    O_READ
1583
        push    O_READ
1584
        push    execdata
1584
        push    execdata
1585
        call    open
1585
        call    open
1586
        test    eax, eax
1586
        test    eax, eax
1587
        jz      .noplugins      ; if can't open, just try to execute
1587
        jz      .noplugins      ; if can't open, just try to execute
1588
        mov     esi, eax        ; save handle
1588
        mov     esi, eax        ; save handle
1589
        push    filedata_buffer_size
1589
        push    filedata_buffer_size
1590
        push    filedata_buffer
1590
        push    filedata_buffer
1591
        push    esi
1591
        push    esi
1592
        call    read
1592
        call    read
1593
        mov     edi, eax        ; save size of read data
1593
        mov     edi, eax        ; save size of read data
1594
; test for Kolibri executable
1594
; test for Kolibri executable
1595
        cmp     eax, 24h
1595
        cmp     eax, 24h
1596
        jb      .enter.noexec
1596
        jb      .enter.noexec
1597
        cmp     dword [filedata_buffer], 'MENU'
1597
        cmp     dword [filedata_buffer], 'MENU'
1598
        jnz     @f
1598
        jnz     @f
1599
        cmp     word [filedata_buffer+4], 'ET'
1599
        cmp     word [filedata_buffer+4], 'ET'
1600
        jnz     @f
1600
        jnz     @f
1601
.close_run:
1601
.close_run:
1602
        push    esi
1602
        push    esi
1603
        call    close
1603
        call    close
1604
        jmp     .run_app
1604
        jmp     .run_app
1605
@@:
1605
@@:
1606
        cmp     dword [filedata_buffer], 'KPCK'
1606
        cmp     dword [filedata_buffer], 'KPCK'
1607
        jnz     @f
1607
        jnz     @f
1608
        cmp     dword [filedata_buffer+12], 0x26914601
1608
        cmp     dword [filedata_buffer+12], 0x26914601
1609
        jz      .close_run
1609
        jz      .close_run
1610
@@:
1610
@@:
1611
.enter.noexec:
1611
.enter.noexec:
1612
        mov     ecx, [num_plugins]
1612
        mov     ecx, [num_plugins]
1613
        mov     edx, [plugins]
1613
        mov     edx, [plugins]
1614
        sub     edx, PluginInfo.size
1614
        sub     edx, PluginInfo.size
1615
.plugloop:
1615
.plugloop:
1616
        add     edx, PluginInfo.size
1616
        add     edx, PluginInfo.size
1617
        dec     ecx
1617
        dec     ecx
1618
        js      .plugdone
1618
        js      .plugdone
1619
        pushad
1619
        pushad
1620
        push    execdata
1620
        push    execdata
1621
        push    [ebp+panel1_hFile-panel1_data]
1621
        push    [ebp+panel1_hFile-panel1_data]
1622
        push    [ebp+panel1_hPlugin-panel1_data]
1622
        push    [ebp+panel1_hPlugin-panel1_data]
1623
        push    edi
1623
        push    edi
1624
        push    filedata_buffer
1624
        push    filedata_buffer
1625
        call    get_curfile_folder_entry
1625
        call    get_curfile_folder_entry
1626
        push    ecx
1626
        push    ecx
1627
        push    esi
1627
        push    esi
1628
        call    [edx+PluginInfo.OpenFilePlugin]
1628
        call    [edx+PluginInfo.OpenFilePlugin]
1629
        mov     [esp+28], eax
1629
        mov     [esp+28], eax
1630
        popad
1630
        popad
1631
        test    eax, eax
1631
        test    eax, eax
1632
        jz      .plugloop
1632
        jz      .plugloop
1633
        cmp     eax, -1
1633
        cmp     eax, -1
1634
        jnz     .pluginok
1634
        jnz     .pluginok
1635
        push    esi
1635
        push    esi
1636
        call    close
1636
        call    close
1637
        ret
1637
        ret
1638
.pluginok:
1638
.pluginok:
1639
; save current directory and set root directory of hPlugin
1639
; save current directory and set root directory of hPlugin
1640
        mov     edi, eax        ; save handle
1640
        mov     edi, eax        ; save handle
1641
        mov     esi, execdata
1641
        mov     esi, execdata
1642
@@:
1642
@@:
1643
        lodsb
1643
        lodsb
1644
        test    al, al
1644
        test    al, al
1645
        jnz     @b
1645
        jnz     @b
1646
        sub     esi, execdata-9
1646
        sub     esi, execdata-9
1647
; allocate esi bytes in buffer 'parents'
1647
; allocate esi bytes in buffer 'parents'
1648
        mov     ecx, [ebp + panel1_parents_sz - panel1_data]
1648
        mov     ecx, [ebp + panel1_parents_sz - panel1_data]
1649
        add     ecx, esi
1649
        add     ecx, esi
1650
        cmp     ecx, [ebp + panel1_parents_alloc - panel1_data]
1650
        cmp     ecx, [ebp + panel1_parents_alloc - panel1_data]
1651
        jbe     .enter.norealloc
1651
        jbe     .enter.norealloc
1652
        push    edx
1652
        push    edx
1653
        mov     edx, [ebp + panel1_parents - panel1_data]
1653
        mov     edx, [ebp + panel1_parents - panel1_data]
1654
        call    xpgrealloc
1654
        call    xpgrealloc
1655
        pop     edx
1655
        pop     edx
1656
        test    eax, eax
1656
        test    eax, eax
1657
        jnz     @f
1657
        jnz     @f
1658
        push    edi
1658
        push    edi
1659
        call    [edx+PluginInfo.ClosePlugin]
1659
        call    [edx+PluginInfo.ClosePlugin]
1660
        ret
1660
        ret
1661
@@:
1661
@@:
1662
        mov     [ebp + panel1_parents - panel1_data], eax
1662
        mov     [ebp + panel1_parents - panel1_data], eax
1663
.enter.norealloc:
1663
.enter.norealloc:
1664
        mov     [ebp + panel1_parents_sz - panel1_data], ecx
1664
        mov     [ebp + panel1_parents_sz - panel1_data], ecx
1665
; save current state to the end of buffer
1665
; save current state to the end of buffer
1666
        sub     ecx, esi
1666
        sub     ecx, esi
1667
        add     ecx, [ebp + panel1_parents - panel1_data]
1667
        add     ecx, [ebp + panel1_parents - panel1_data]
1668
        xchg    edx, [ebp + panel1_hPlugin - panel1_data]
1668
        xchg    edx, [ebp + panel1_hPlugin - panel1_data]
1669
        mov     [ecx], edx
1669
        mov     [ecx], edx
1670
        xchg    edi, [ebp + panel1_hFile - panel1_data]
1670
        xchg    edi, [ebp + panel1_hFile - panel1_data]
1671
        mov     [ecx+4], edi
1671
        mov     [ecx+4], edi
1672
        mov     byte [ecx+8], 0
1672
        mov     byte [ecx+8], 0
1673
        lea     edi, [ecx+9]
1673
        lea     edi, [ecx+9]
1674
        lea     ecx, [esi-9]
1674
        lea     ecx, [esi-9]
1675
        mov     esi, execdata
1675
        mov     esi, execdata
1676
        rep     movsb
1676
        rep     movsb
1677
        mov     word [ebp + panel1_dir - panel1_data], '/'
1677
        mov     word [ebp + panel1_dir - panel1_data], '/'
1678
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
1678
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
1679
        lea     ebx, [ebp + panel1_plugin_info - panel1_data]
1679
        lea     ebx, [ebp + panel1_plugin_info - panel1_data]
1680
        and     dword [ebx], 0
1680
        and     dword [ebx], 0
1681
        push    ebp
1681
        push    ebp
1682
        push    ebx
1682
        push    ebx
1683
        push    [ebp + panel1_hFile - panel1_data]
1683
        push    [ebp + panel1_hFile - panel1_data]
1684
        call    [eax+PluginInfo.GetOpenPluginInfo]
1684
        call    [eax+PluginInfo.GetOpenPluginInfo]
1685
        pop     ebp
1685
        pop     ebp
1686
        call    get_curfile_folder_entry
1686
        call    get_curfile_folder_entry
1687
        mov     esi, ecx
1687
        mov     esi, ecx
1688
        mov     edi, left_dotdot_entry
1688
        mov     edi, left_dotdot_entry
1689
        cmp     ebp, panel1_data
1689
        cmp     ebp, panel1_data
1690
        jz      @f
1690
        jz      @f
1691
        add     edi, right_dotdot_entry-left_dotdot_entry
1691
        add     edi, right_dotdot_entry-left_dotdot_entry
1692
@@:
1692
@@:
1693
        mov     ecx, 10
1693
        mov     ecx, 10
1694
        rep     movsd
1694
        rep     movsd
1695
        mov     byte [edi-40], 10h      ; attributes: folder
1695
        mov     byte [edi-40], 10h      ; attributes: folder
1696
        mov     eax, '..'
1696
        mov     eax, '..'
1697
        stosd
1697
        stosd
1698
        jmp     .reread
1698
        jmp     .reread
1699
.plugdone:
1699
.plugdone:
1700
        push    esi
1700
        push    esi
1701
        call    close
1701
        call    close
1702
.noplugins:
1702
.noplugins:
1703
; run program or association
1703
; run program or association
1704
        call    get_curfile_folder_entry
1704
        call    get_curfile_folder_entry
1705
        call    find_extension
1705
        call    find_extension
1706
        jc      .run_app
1706
        jc      .run_app
1707
.run_association:
1707
.run_association:
1708
        cmp     byte [edi], 0
1708
        cmp     byte [edi], 0
1709
        jz      .l1
1709
        jz      .l1
1710
        cmp     byte [edi], ';'
1710
        cmp     byte [edi], ';'
1711
        jnz     @f
1711
        jnz     @f
1712
.l1:
1712
.l1:
1713
        ret
1713
        ret
1714
@@:
1714
@@:
1715
        mov     esi, edi
1715
        mov     esi, edi
1716
@@:
1716
@@:
1717
        lodsb
1717
        lodsb
1718
        test    al, al
1718
        test    al, al
1719
        jz      @f
1719
        jz      @f
1720
        cmp     al, ';'
1720
        cmp     al, ';'
1721
        jnz     @b
1721
        jnz     @b
1722
        dec     esi
1722
        dec     esi
1723
        mov     byte [esi], 0
1723
        mov     byte [esi], 0
1724
        mov     [restore_semicolon], esi
1724
        mov     [restore_semicolon], esi
1725
@@:
1725
@@:
1726
.run_association2:
1726
.run_association2:
1727
        mov     [execparams], execdata
1727
        mov     [execparams], execdata
1728
        mov     [execptr], edi
1728
        mov     [execptr], edi
1729
        jmp     .dorun
1729
        jmp     .dorun
1730
.run_app:
1730
.run_app:
1731
        mov     [execptr], execdata
1731
        mov     [execptr], execdata
1732
        and     [execparams], 0
1732
        and     [execparams], 0
1733
.dorun:
1733
.dorun:
1734
        lea     esi, [ebp + panel1_dir - panel1_data]
1734
        lea     esi, [ebp + panel1_dir - panel1_data]
1735
        mov     edi, execdata
1735
        mov     edi, execdata
1736
@@:
1736
@@:
1737
        lodsb
1737
        lodsb
1738
        test    al, al
1738
        test    al, al
1739
        jz      @f
1739
        jz      @f
1740
        stosb
1740
        stosb
1741
        cmp     edi, execdataend-1
1741
        cmp     edi, execdataend-1
1742
        jae     .bigfilename
1742
        jae     .bigfilename
1743
        jmp     @b
1743
        jmp     @b
1744
@@:
1744
@@:
1745
        lea     esi, [ecx+40]
1745
        lea     esi, [ecx+40]
1746
        mov     al, '/'
1746
        mov     al, '/'
1747
        stosb
1747
        stosb
1748
@@:
1748
@@:
1749
        lodsb
1749
        lodsb
1750
        stosb
1750
        stosb
1751
        cmp     edi, execdataend
1751
        cmp     edi, execdataend
1752
        ja      .bigfilename
1752
        ja      .bigfilename
1753
        test    al, al
1753
        test    al, al
1754
        jnz     @b
1754
        jnz     @b
1755
; for fasm call - special handling, because
1755
; for fasm call - special handling, because
1756
; 1) fasm command line convention is different : fasm infile,outfile[,path] rather than tinypad infile
1756
; 1) fasm command line convention is different : fasm infile,outfile[,path] rather than tinypad infile
1757
; 2) fasm will probably create new file in directory, so we want to reload panel data
1757
; 2) fasm will probably create new file in directory, so we want to reload panel data
1758
        xor     edx, edx
1758
        xor     edx, edx
1759
        cmp     [execparams], edx
1759
        cmp     [execparams], edx
1760
        jz      .nofasm
1760
        jz      .nofasm
1761
        mov     esi, [execptr]
1761
        mov     esi, [execptr]
1762
@@:
1762
@@:
1763
        lodsb
1763
        lodsb
1764
        test    al, al
1764
        test    al, al
1765
        jnz     @b
1765
        jnz     @b
1766
        mov     eax, [esi-5]
1766
        mov     eax, [esi-5]
1767
        or      eax, 0x20202020
1767
        or      eax, 0x20202020
1768
        cmp     eax, 'fasm'
1768
        cmp     eax, 'fasm'
1769
        jnz     .nofasm
1769
        jnz     .nofasm
1770
        cmp     edi, execdata+(execdataend-execdata)/2
1770
        cmp     edi, execdata+(execdataend-execdata)/2
1771
        ja      .bigfilename
1771
        ja      .bigfilename
1772
        mov     esi, execdata
1772
        mov     esi, execdata
1773
@@:
1773
@@:
1774
        lodsb
1774
        lodsb
1775
        stosb
1775
        stosb
1776
        test    al, al
1776
        test    al, al
1777
        jnz     @b
1777
        jnz     @b
1778
        mov     byte [esi-1], ','
1778
        mov     byte [esi-1], ','
1779
        inc     edx
1779
        inc     edx
1780
; output file: no extension if input file has extension, '.bin' otherwise
1780
; output file: no extension if input file has extension, '.bin' otherwise
1781
        push    edi
1781
        push    edi
1782
@@:
1782
@@:
1783
        dec     edi
1783
        dec     edi
1784
        cmp     byte [edi], '.'
1784
        cmp     byte [edi], '.'
1785
        jz      .ptfound
1785
        jz      .ptfound
1786
        cmp     byte [edi], '/'
1786
        cmp     byte [edi], '/'
1787
        jnz     @b
1787
        jnz     @b
1788
        pop     edi
1788
        pop     edi
1789
        cmp     edi, execdataend-4
1789
        cmp     edi, execdataend-4
1790
        ja      .bigfilename
1790
        ja      .bigfilename
1791
        mov     dword [edi-1], '.bin'
1791
        mov     dword [edi-1], '.bin'
1792
        mov     byte [edi+3], 0
1792
        mov     byte [edi+3], 0
1793
        jmp     .nofasm
1793
        jmp     .nofasm
1794
.ptfound:
1794
.ptfound:
1795
        mov     byte [edi], 0
1795
        mov     byte [edi], 0
1796
        pop     edi
1796
        pop     edi
1797
.nofasm:
1797
.nofasm:
1798
        mov     ebx, execinfo
1798
        mov     ebx, execinfo
1799
; if command line is more than 256 symbols, the kernel will truncate it
1799
; if command line is more than 256 symbols, the kernel will truncate it
1800
; we do not want this!
1800
; we do not want this!
1801
; N.B. We know that command line is either NULL or execdata, which is always ASCIIZ string,
1801
; N.B. We know that command line is either NULL or execdata, which is always ASCIIZ string,
1802
;      but can be up to 1023 symbols
1802
;      but can be up to 1023 symbols
1803
        mov     esi, [ebx+8]
1803
        mov     esi, [ebx+8]
1804
        test    esi, esi
1804
        test    esi, esi
1805
        jz      .cmdlinelenok
1805
        jz      .cmdlinelenok
1806
@@:
1806
@@:
1807
        lodsb
1807
        lodsb
1808
        test    al, al
1808
        test    al, al
1809
        jnz     @b
1809
        jnz     @b
1810
        sub     esi, [ebx+8]
1810
        sub     esi, [ebx+8]
1811
        dec     esi
1811
        dec     esi
1812
        cmp     esi, 256
1812
        cmp     esi, 256
1813
        ja      .bigcmdline
1813
        ja      .bigcmdline
1814
.cmdlinelenok:
1814
.cmdlinelenok:
1815
        push    70
1815
        push    70
1816
        pop     eax
1816
        pop     eax
1817
        int     40h
1817
        int     40h
1818
        xor     esi, esi
1818
        xor     esi, esi
1819
        xchg    esi, [restore_semicolon]
1819
        xchg    esi, [restore_semicolon]
1820
        test    esi, esi
1820
        test    esi, esi
1821
        jz      @f
1821
        jz      @f
1822
        mov     byte [esi], ';'
1822
        mov     byte [esi], ';'
1823
@@:
1823
@@:
1824
        neg     eax
1824
        neg     eax
1825
        js      @f
1825
        js      @f
1826
        call    get_error_msg
1826
        call    get_error_msg
1827
        push    eax
1827
        push    eax
1828
        push    dword aRunError
1828
        push    dword aRunError
1829
        mov     eax, esp
1829
        mov     eax, esp
1830
        push    ContinueBtn
1830
        push    ContinueBtn
1831
        push    1
1831
        push    1
1832
        push    eax
1832
        push    eax
1833
        push    2
1833
        push    2
1834
        call    SayErr
1834
        call    SayErr
1835
        pop     eax
1835
        pop     eax
1836
        pop     eax
1836
        pop     eax
1837
        ret
1837
        ret
1838
@@:
1838
@@:
1839
        test    edx, edx
1839
        test    edx, edx
1840
        jz      @f
1840
        jz      @f
1841
        push    5
1841
        push    5
1842
        pop     eax
1842
        pop     eax
1843
        push    20
1843
        push    20
1844
        pop     ebx
1844
        pop     ebx
1845
        int     0x40
1845
        int     0x40
1846
        jmp     .ctrl_r
1846
        jmp     .ctrl_r
1847
@@:
1847
@@:
1848
        ret
1848
        ret
1849
.bigfilename3:
1849
.bigfilename3:
1850
        pop     esi
1850
        pop     esi
1851
.bigfilename2:
1851
.bigfilename2:
1852
        pop     esi
1852
        pop     esi
1853
.bigfilename:
1853
.bigfilename:
1854
        mov     eax, aFileNameTooBig
1854
        mov     eax, aFileNameTooBig
1855
.l2:
1855
.l2:
1856
        xor     esi, esi
1856
        xor     esi, esi
1857
        xchg    esi, [restore_semicolon]
1857
        xchg    esi, [restore_semicolon]
1858
        test    esi, esi
1858
        test    esi, esi
1859
        jz      @f
1859
        jz      @f
1860
        mov     byte [esi], ';'
1860
        mov     byte [esi], ';'
1861
@@:
1861
@@:
1862
        push    eax
1862
        push    eax
1863
        mov     eax, esp
1863
        mov     eax, esp
1864
        push    ContinueBtn
1864
        push    ContinueBtn
1865
        push    1
1865
        push    1
1866
        push    eax
1866
        push    eax
1867
        push    1
1867
        push    1
1868
        call    SayErr
1868
        call    SayErr
1869
        pop     eax
1869
        pop     eax
1870
        ret
1870
        ret
1871
.bigcmdline:
1871
.bigcmdline:
1872
        mov     eax, aCmdLineTooBig
1872
        mov     eax, aCmdLineTooBig
1873
        jmp     .l2
1873
        jmp     .l2
1874
.bigfoldername2:
1874
.bigfoldername2:
1875
        mov     esi, prev_dir
1875
        mov     esi, prev_dir
1876
        lea     edi, [ebp + panel1_dir - panel1_data]
1876
        lea     edi, [ebp + panel1_dir - panel1_data]
1877
@@:
1877
@@:
1878
        lodsb
1878
        lodsb
1879
        stosb
1879
        stosb
1880
        test    al, al
1880
        test    al, al
1881
        jnz     @b
1881
        jnz     @b
1882
.bigfoldername:
1882
.bigfoldername:
1883
        mov     eax, aFolderNameTooBig
1883
        mov     eax, aFolderNameTooBig
1884
        jmp     .l2
1884
        jmp     .l2
1885
.enter_folder:
1885
.enter_folder:
1886
        lea     esi, [ecx+40]
1886
        lea     esi, [ecx+40]
1887
        cmp     word [esi], '..'
1887
        cmp     word [esi], '..'
1888
        jnz     @f
1888
        jnz     @f
1889
        cmp     byte [esi+2], 0
1889
        cmp     byte [esi+2], 0
1890
        jz      .dotdot
1890
        jz      .dotdot
1891
@@:
1891
@@:
1892
        push    esi
1892
        push    esi
1893
        lea     esi, [ebp + panel1_dir - panel1_data]
1893
        lea     esi, [ebp + panel1_dir - panel1_data]
1894
        mov     edi, prev_dir
1894
        mov     edi, prev_dir
1895
@@:
1895
@@:
1896
        lodsb
1896
        lodsb
1897
        stosb
1897
        stosb
1898
        test    al, al
1898
        test    al, al
1899
        jnz     @b
1899
        jnz     @b
1900
        lea     edi, [esi-1]
1900
        lea     edi, [esi-1]
1901
        lea     edx, [ebp + panel1_dir - panel1_data + 1024]
1901
        lea     edx, [ebp + panel1_dir - panel1_data + 1024]
1902
        cmp     esi, edx
1902
        cmp     esi, edx
1903
        pop     esi
1903
        pop     esi
1904
        jae     .bigfoldername
1904
        jae     .bigfoldername
1905
        mov     al, '/'
1905
        mov     al, '/'
1906
        cmp     [edi-1], al
1906
        cmp     [edi-1], al
1907
        jz      @f
1907
        jz      @f
1908
        stosb
1908
        stosb
1909
@@:
1909
@@:
1910
        lodsb
1910
        lodsb
1911
        cmp     edi, edx
1911
        cmp     edi, edx
1912
        jae     .bigfoldername2
1912
        jae     .bigfoldername2
1913
        stosb
1913
        stosb
1914
        test    al, al
1914
        test    al, al
1915
        jnz     @b
1915
        jnz     @b
1916
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
1916
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
1917
        test    eax, eax
1917
        test    eax, eax
1918
        jz      .reread
1918
        jz      .reread
1919
        push    ebp
1919
        push    ebp
1920
        lea     esi, [ebp + panel1_dir - panel1_data]
1920
        lea     esi, [ebp + panel1_dir - panel1_data]
1921
        push    esi
1921
        push    esi
1922
        add     ecx, 40
1922
        add     ecx, 40
1923
        push    ecx
1923
        push    ecx
1924
        push    [ebp + panel1_hFile - panel1_data]
1924
        push    [ebp + panel1_hFile - panel1_data]
1925
        call    [eax+PluginInfo.SetFolder]
1925
        call    [eax+PluginInfo.SetFolder]
1926
        pop     ebp
1926
        pop     ebp
1927
        test    al, al
1927
        test    al, al
1928
        jnz     .reread
1928
        jnz     .reread
1929
        mov     esi, prev_dir
1929
        mov     esi, prev_dir
1930
        lea     edi, [ebp + panel1_dir - panel1_data]
1930
        lea     edi, [ebp + panel1_dir - panel1_data]
1931
@@:
1931
@@:
1932
        lodsb
1932
        lodsb
1933
        stosb
1933
        stosb
1934
        test    al, al
1934
        test    al, al
1935
        jnz     @b
1935
        jnz     @b
1936
.retd:
1936
.retd:
1937
        ret
1937
        ret
1938
.reread:
1938
.reread:
1939
        call    read_folder
1939
        call    read_folder
1940
.done_cmdbar:
1940
.done_cmdbar:
1941
        call    draw_cmdbar
1941
        call    draw_cmdbar
1942
        jmp     .done_redraw
1942
        jmp     .done_redraw
1943
.dotdot:
1943
.dotdot:
1944
        lea     edi, [ebp + panel1_dir - panel1_data]
1944
        lea     edi, [ebp + panel1_dir - panel1_data]
1945
        cmp     word [edi], '/'
1945
        cmp     word [edi], '/'
1946
        jnz     .dotdot_noroot
1946
        jnz     .dotdot_noroot
1947
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
1947
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
1948
        jz      .retd
1948
        jz      .retd
1949
        call    close_plugin_panel
1949
        call    close_plugin_panel
1950
        jmp     .dotdot
1950
        jmp     .dotdot
1951
.dotdot_noroot:
1951
.dotdot_noroot:
1952
        mov     edx, edi
1952
        mov     edx, edi
1953
        mov     al, 0
1953
        mov     al, 0
1954
        or      ecx, -1
1954
        or      ecx, -1
1955
        repnz   scasb
1955
        repnz   scasb
1956
        dec     edi
1956
        dec     edi
1957
        mov     al, '/'
1957
        mov     al, '/'
1958
        std
1958
        std
1959
        repnz   scasb
1959
        repnz   scasb
1960
        cld
1960
        cld
1961
        inc     edi
1961
        inc     edi
1962
        cmp     edi, edx
1962
        cmp     edi, edx
1963
        jnz     @f
1963
        jnz     @f
1964
        inc     edi
1964
        inc     edi
1965
@@:
1965
@@:
1966
        push    dword [edi]
1966
        push    dword [edi]
1967
        mov     byte [edi], 0
1967
        mov     byte [edi], 0
1968
        push    edi
1968
        push    edi
1969
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
1969
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
1970
        test    eax, eax
1970
        test    eax, eax
1971
        jz      .dotdot_native
1971
        jz      .dotdot_native
1972
        push    ebp
1972
        push    ebp
1973
        lea     esi, [ebp + panel1_dir - panel1_data]
1973
        lea     esi, [ebp + panel1_dir - panel1_data]
1974
        push    esi
1974
        push    esi
1975
        push    aDotDot
1975
        push    aDotDot
1976
        push    [ebp + panel1_hFile - panel1_data]
1976
        push    [ebp + panel1_hFile - panel1_data]
1977
        call    [eax+PluginInfo.SetFolder]
1977
        call    [eax+PluginInfo.SetFolder]
1978
        pop     ebp
1978
        pop     ebp
1979
        test    al, al
1979
        test    al, al
1980
        jnz     .dotdot_native
1980
        jnz     .dotdot_native
1981
        pop     edi
1981
        pop     edi
1982
        pop     dword [edi]
1982
        pop     dword [edi]
1983
        ret
1983
        ret
1984
.dotdot_native:
1984
.dotdot_native:
1985
        call    read_folder
1985
        call    read_folder
1986
        pop     edi
1986
        pop     edi
1987
        pop     dword [edi]
1987
        pop     dword [edi]
1988
        push    edi
1988
        push    edi
1989
        cmp     byte [edi], '/'
1989
        cmp     byte [edi], '/'
1990
        jnz     @f
1990
        jnz     @f
1991
        inc     edi
1991
        inc     edi
1992
@@:
1992
@@:
1993
        mov     edx, [ebp + panel1_files - panel1_data]
1993
        mov     edx, [ebp + panel1_files - panel1_data]
1994
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
1994
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
1995
.scanloop:
1995
.scanloop:
1996
        mov     esi, [edx]
1996
        mov     esi, [edx]
1997
        add     esi, 40
1997
        add     esi, 40
1998
        push    esi edi
1998
        push    esi edi
1999
@@:
1999
@@:
2000
        lodsb
2000
        lodsb
2001
        call    match_symbol
2001
        call    match_symbol
2002
        jnz     @f
2002
        jnz     @f
2003
        inc     edi
2003
        inc     edi
2004
        test    al, al
2004
        test    al, al
2005
        jnz     @b
2005
        jnz     @b
2006
@@:
2006
@@:
2007
        pop     edi esi
2007
        pop     edi esi
2008
        jz      .scanfound
2008
        jz      .scanfound
2009
        add     edx, 4
2009
        add     edx, 4
2010
        loop    .scanloop
2010
        loop    .scanloop
2011
        jmp     .scandone
2011
        jmp     .scandone
2012
.scanfound:
2012
.scanfound:
2013
        sub     edx, [ebp + panel1_files - panel1_data]
2013
        sub     edx, [ebp + panel1_files - panel1_data]
2014
        shr     edx, 2
2014
        shr     edx, 2
2015
        mov     [ebp + panel1_index - panel1_data], edx
2015
        mov     [ebp + panel1_index - panel1_data], edx
2016
        sub     edx, [ebp + panel1_colst - panel1_data]
2016
        sub     edx, [ebp + panel1_colst - panel1_data]
2017
        jb      .scandone
2017
        jb      .scandone
2018
        inc     edx
2018
        inc     edx
2019
        mov     [ebp + panel1_start - panel1_data], edx
2019
        mov     [ebp + panel1_start - panel1_data], edx
2020
.scandone:
2020
.scandone:
2021
        pop     edi
2021
        pop     edi
2022
        mov     byte [edi], 0
2022
        mov     byte [edi], 0
2023
        jmp     .done_cmdbar
2023
        jmp     .done_cmdbar
2024
.ctrl_f39:
2024
.ctrl_f39:
2025
        sub     al, 0x3D
2025
        sub     al, 0x3D
2026
        add     al, al
2026
        add     al, al
2027
        mov     ah, [ebp + panel1_sortmode - panel1_data]
2027
        mov     ah, [ebp + panel1_sortmode - panel1_data]
2028
        and     ah, 0xFE
2028
        and     ah, 0xFE
2029
        cmp     al, ah
2029
        cmp     al, ah
2030
        jnz     @f
2030
        jnz     @f
2031
        and     [ebp + panel1_sortmode - panel1_data], 1
2031
        and     [ebp + panel1_sortmode - panel1_data], 1
2032
        or      al, [ebp + panel1_sortmode - panel1_data]
2032
        or      al, [ebp + panel1_sortmode - panel1_data]
2033
        xor     al, 1
2033
        xor     al, 1
2034
@@:
2034
@@:
2035
        mov     [ebp + panel1_sortmode - panel1_data], al
2035
        mov     [ebp + panel1_sortmode - panel1_data], al
2036
        mov     eax, [ebp + panel1_index - panel1_data]
2036
        mov     eax, [ebp + panel1_index - panel1_data]
2037
        mov     ecx, [ebp + panel1_files - panel1_data]
2037
        mov     ecx, [ebp + panel1_files - panel1_data]
2038
        push    dword [ecx+eax*4]
2038
        push    dword [ecx+eax*4]
2039
        push    ecx
2039
        push    ecx
2040
        call    sort_files
2040
        call    sort_files
2041
        pop     edi
2041
        pop     edi
2042
        pop     eax
2042
        pop     eax
2043
        or      ecx, -1
2043
        or      ecx, -1
2044
        repnz   scasd
2044
        repnz   scasd
2045
        not     ecx
2045
        not     ecx
2046
        dec     ecx
2046
        dec     ecx
2047
        mov     [ebp + panel1_index - panel1_data], ecx
2047
        mov     [ebp + panel1_index - panel1_data], ecx
2048
        sub     ecx, [ebp + panel1_start - panel1_data]
2048
        sub     ecx, [ebp + panel1_start - panel1_data]
2049
        jb      .less_start
2049
        jb      .less_start
2050
        sub     ecx, [ebp + panel1_colst - panel1_data]
2050
        sub     ecx, [ebp + panel1_colst - panel1_data]
2051
        jae     .gr_end
2051
        jae     .gr_end
2052
@@:     jmp     .done_redraw
2052
@@:     jmp     .done_redraw
2053
.less_start:
2053
.less_start:
2054
        add     [ebp + panel1_start - panel1_data], ecx
2054
        add     [ebp + panel1_start - panel1_data], ecx
2055
        jmp     @b
2055
        jmp     @b
2056
.gr_end:
2056
.gr_end:
2057
        inc     ecx
2057
        inc     ecx
2058
        add     [ebp + panel1_start - panel1_data], ecx
2058
        add     [ebp + panel1_start - panel1_data], ecx
2059
        jmp     @b
2059
        jmp     @b
2060
.alt_f12:
2060
.alt_f12:
2061
        mov     ebp, panel1_data
2061
        mov     ebp, panel1_data
2062
        cmp     al, 0x3B
2062
        cmp     al, 0x3B
2063
        jz      @f
2063
        jz      @f
2064
        mov     ebp, panel2_data
2064
        mov     ebp, panel2_data
2065
@@:
2065
@@:
2066
; get drives list
2066
; get drives list
2067
        mov     ebx, dirinfo
2067
        mov     ebx, dirinfo
2068
        mov     [ebx+dirinfo.size-dirinfo], 1
2068
        mov     [ebx+dirinfo.size-dirinfo], 1
2069
        mov     [ebx+dirinfo.dirdata-dirinfo], driveinfo
2069
        mov     [ebx+dirinfo.dirdata-dirinfo], driveinfo
2070
        mov     [ebx+dirinfo.name-dirinfo], tmpname
2070
        mov     [ebx+dirinfo.name-dirinfo], tmpname
2071
        mov     byte [tmpname], '/'
2071
        mov     byte [tmpname], '/'
2072
        xor     edx, edx
2072
        xor     edx, edx
2073
        xor     ecx, ecx
2073
        xor     ecx, ecx
2074
.drive_loop_e:
2074
.drive_loop_e:
2075
        mov     byte [tmpname+1], 0
2075
        mov     byte [tmpname+1], 0
2076
        push    70
2076
        push    70
2077
        pop     eax
2077
        pop     eax
2078
        int     40h
2078
        int     40h
2079
        mov     ebx, dirinfo
2079
        mov     ebx, dirinfo
2080
        test    eax, eax
2080
        test    eax, eax
2081
        jnz     .drive_loop_e_done
2081
        jnz     .drive_loop_e_done
2082
        mov     esi, driveinfo+32+40
2082
        mov     esi, driveinfo+32+40
2083
        mov     edi, tmpname+1
2083
        mov     edi, tmpname+1
2084
@@:
2084
@@:
2085
        lodsb
2085
        lodsb
2086
        stosb
2086
        stosb
2087
        test    al, al
2087
        test    al, al
2088
        jnz     @b
2088
        jnz     @b
2089
        push    [ebx+dirinfo.first-dirinfo]
2089
        push    [ebx+dirinfo.first-dirinfo]
2090
        and     [ebx+dirinfo.first-dirinfo], 0
2090
        and     [ebx+dirinfo.first-dirinfo], 0
2091
.drive_loop_i:
2091
.drive_loop_i:
2092
        push    70
2092
        push    70
2093
        pop     eax
2093
        pop     eax
2094
        int     40h
2094
        int     40h
2095
        mov     ebx, dirinfo
2095
        mov     ebx, dirinfo
2096
        test    eax, eax
2096
        test    eax, eax
2097
        jnz     .drive_loop_i_done
2097
        jnz     .drive_loop_i_done
2098
        add     ecx, 32+8
2098
        add     ecx, 32+8
2099
        push    ecx
2099
        push    ecx
2100
        and     ecx, 0xFFF
2100
        and     ecx, 0xFFF
2101
        cmp     ecx, 32+8
2101
        cmp     ecx, 32+8
2102
        pop     ecx
2102
        pop     ecx
2103
        ja      @f
2103
        ja      @f
2104
        call    xpgrealloc
2104
        call    xpgrealloc
2105
        mov     edx, eax
2105
        mov     edx, eax
2106
        test    eax, eax
2106
        test    eax, eax
2107
        jnz     @f
2107
        jnz     @f
2108
        pop     eax
2108
        pop     eax
2109
        ret
2109
        ret
2110
@@:
2110
@@:
2111
        lea     edi, [edx+ecx-32]
2111
        lea     edi, [edx+ecx-32]
2112
        mov     esi, tmpname
2112
        mov     esi, tmpname
2113
@@:
2113
@@:
2114
        lodsb
2114
        lodsb
2115
        test    al, al
2115
        test    al, al
2116
        jz      @f
2116
        jz      @f
2117
        stosb
2117
        stosb
2118
        jmp     @b
2118
        jmp     @b
2119
@@:
2119
@@:
2120
        mov     esi, driveinfo+32+40
2120
        mov     esi, driveinfo+32+40
2121
        mov     al, '/'
2121
        mov     al, '/'
2122
        stosb
2122
        stosb
2123
@@:
2123
@@:
2124
        lodsb
2124
        lodsb
2125
        stosb
2125
        stosb
2126
        test    al, al
2126
        test    al, al
2127
        jnz     @b
2127
        jnz     @b
2128
        inc     [ebx+dirinfo.first-dirinfo]
2128
        inc     [ebx+dirinfo.first-dirinfo]
2129
        jmp     .drive_loop_i
2129
        jmp     .drive_loop_i
2130
.drive_loop_i_done:
2130
.drive_loop_i_done:
2131
        pop     [ebx+dirinfo.first-dirinfo]
2131
        pop     [ebx+dirinfo.first-dirinfo]
2132
        inc     [ebx+dirinfo.first-dirinfo]
2132
        inc     [ebx+dirinfo.first-dirinfo]
2133
        jmp     .drive_loop_e
2133
        jmp     .drive_loop_e
2134
.drive_loop_e_done:
2134
.drive_loop_e_done:
2135
        and     [ebx+dirinfo.first-dirinfo], 0
2135
        and     [ebx+dirinfo.first-dirinfo], 0
2136
        mov     edi, edx
2136
        mov     edi, edx
2137
        xor     esi, esi
2137
        xor     esi, esi
2138
        add     ecx, edx
2138
        add     ecx, edx
2139
@@:
2139
@@:
2140
        and     dword [edi], 0
2140
        and     dword [edi], 0
2141
        mov     dword [edi+4], esi
2141
        mov     dword [edi+4], esi
2142
        mov     esi, edi
2142
        mov     esi, edi
2143
        add     edi, 32+8
2143
        add     edi, 32+8
2144
        cmp     edi, ecx
2144
        cmp     edi, ecx
2145
        jae     @f
2145
        jae     @f
2146
        mov     [esi], edi
2146
        mov     [esi], edi
2147
        jmp     @b
2147
        jmp     @b
2148
@@:
2148
@@:
2149
        mov     ecx, edx
2149
        mov     ecx, edx
2150
        lea     edi, [ebp + panel1_dir - panel1_data]
2150
        lea     edi, [ebp + panel1_dir - panel1_data]
2151
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
2151
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
2152
        jz      .find_cur_drive_loop
2152
        jz      .find_cur_drive_loop
2153
        mov     edi, [ebp + panel1_parents - panel1_data]
2153
        mov     edi, [ebp + panel1_parents - panel1_data]
2154
        add     edi, 8
2154
        add     edi, 8
2155
.find_cur_drive_loop:
2155
.find_cur_drive_loop:
2156
        push    edi
2156
        push    edi
2157
        lea     esi, [ecx+8]
2157
        lea     esi, [ecx+8]
2158
@@:
2158
@@:
2159
        lodsb
2159
        lodsb
2160
        test    al, al
2160
        test    al, al
2161
        jz      .cur_drive_found
2161
        jz      .cur_drive_found
2162
        call    match_symbol
2162
        call    match_symbol
2163
        jnz     @f
2163
        jnz     @f
2164
        inc     edi
2164
        inc     edi
2165
        jmp     @b
2165
        jmp     @b
2166
@@:
2166
@@:
2167
        cmp     dword [ecx], 0
2167
        cmp     dword [ecx], 0
2168
        jz      @f
2168
        jz      @f
2169
        pop     edi
2169
        pop     edi
2170
        mov     ecx, [ecx]
2170
        mov     ecx, [ecx]
2171
        jmp     .find_cur_drive_loop
2171
        jmp     .find_cur_drive_loop
2172
@@:
2172
@@:
2173
        mov     ecx, edx
2173
        mov     ecx, edx
2174
.cur_drive_found:
2174
.cur_drive_found:
2175
        pop     edi
2175
        pop     edi
2176
        push    1
2176
        push    1
2177
        push    aDrive
2177
        push    aDrive
2178
        push    ecx
2178
        push    ecx
2179
        mov     eax, [ebp + panel1_height - panel1_data]
2179
        mov     eax, [ebp + panel1_height - panel1_data]
2180
        sub     eax, 2
2180
        sub     eax, 2
2181
        jae     @f
2181
        jae     @f
2182
        add     eax, 2
2182
        add     eax, 2
2183
@@:
2183
@@:
2184
        push    eax
2184
        push    eax
2185
        push    [ebp + panel1_width - panel1_data]
2185
        push    [ebp + panel1_width - panel1_data]
2186
        push    [ebp + panel1_top - panel1_data]
2186
        push    [ebp + panel1_top - panel1_data]
2187
        push    [ebp + panel1_left - panel1_data]
2187
        push    [ebp + panel1_left - panel1_data]
2188
        call    menu_centered_in
2188
        call    menu_centered_in
2189
        cmp     eax, -1
2189
        cmp     eax, -1
2190
        jnz     @f
2190
        jnz     @f
2191
        mov     ecx, edx
2191
        mov     ecx, edx
2192
        call    pgfree
2192
        call    pgfree
2193
        ret
2193
        ret
2194
@@:
2194
@@:
2195
        push    eax
2195
        push    eax
2196
        push    edx
2196
        push    edx
2197
        call    close_plugin_panels
2197
        call    close_plugin_panels
2198
        pop     edx
2198
        pop     edx
2199
        lea     edi, [ebp + panel1_dir - panel1_data]
2199
        lea     edi, [ebp + panel1_dir - panel1_data]
2200
        push    edi
2200
        push    edi
2201
        mov     esi, edi
2201
        mov     esi, edi
2202
        mov     edi, prev_dir
2202
        mov     edi, prev_dir
2203
        mov     ecx, 1024/4
2203
        mov     ecx, 1024/4
2204
        rep     movsd
2204
        rep     movsd
2205
        pop     edi
2205
        pop     edi
2206
        pop     esi
2206
        pop     esi
2207
        add     esi, 8
2207
        add     esi, 8
2208
@@:
2208
@@:
2209
        lodsb
2209
        lodsb
2210
        stosb
2210
        stosb
2211
        test    al, al
2211
        test    al, al
2212
        jnz     @b
2212
        jnz     @b
2213
        mov     ecx, edx
2213
        mov     ecx, edx
2214
        call    pgfree
2214
        call    pgfree
2215
        call    read_folder
2215
        call    read_folder
2216
        jmp     .done_redraw
2216
        jmp     .done_redraw
2217
.shift_f5:
2217
.shift_f5:
2218
; todo: copy to plugin panel
2218
; todo: copy to plugin panel
2219
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
2219
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
2220
        jz      @f
2220
        jz      @f
2221
        ret
2221
        ret
2222
@@:
2222
@@:
2223
        mov     esi, ebp
2223
        mov     esi, ebp
2224
        cmp     [ebp + panel1_selected_num - panel1_data], 0
2224
        cmp     [ebp + panel1_selected_num - panel1_data], 0
2225
        jnz     .f5_2
2225
        jnz     .f5_2
2226
        call    get_curfile_folder_entry
2226
        call    get_curfile_folder_entry
2227
        lea     esi, [ecx+40]
2227
        lea     esi, [ecx+40]
2228
        mov     edi, CopyDestEditBuf
2228
        mov     edi, CopyDestEditBuf
2229
        mov     eax, CopyDestEditBuf.length
2229
        mov     eax, CopyDestEditBuf.length
2230
        stosd
2230
        stosd
2231
        scasd
2231
        scasd
2232
        xor     eax, eax
2232
        xor     eax, eax
2233
        stosd
2233
        stosd
2234
        mov     edx, edi
2234
        mov     edx, edi
2235
@@:
2235
@@:
2236
        lodsb
2236
        lodsb
2237
        test    al, al
2237
        test    al, al
2238
        jz      .f5_common
2238
        jz      .f5_common
2239
        stosb
2239
        stosb
2240
        jmp     @b
2240
        jmp     @b
2241
.f5:
2241
.f5:
2242
; todo: copy to plugin panel
2242
; todo: copy to plugin panel
2243
        mov     esi, ebp
2243
        mov     esi, ebp
2244
        xor     esi, panel1_data xor panel2_data
2244
        xor     esi, panel1_data xor panel2_data
2245
        cmp     [esi + panel1_hPlugin - panel1_data], 0
2245
        cmp     [esi + panel1_hPlugin - panel1_data], 0
2246
        jz      .f5_2
2246
        jz      .f5_2
2247
        ret
2247
        ret
2248
.f5_2:
2248
.f5_2:
2249
        add     esi, panel1_dir - panel1_data
2249
        add     esi, panel1_dir - panel1_data
2250
        mov     edi, CopyDestEditBuf
2250
        mov     edi, CopyDestEditBuf
2251
        mov     eax, CopyDestEditBuf.length
2251
        mov     eax, CopyDestEditBuf.length
2252
        stosd
2252
        stosd
2253
        scasd
2253
        scasd
2254
        xor     eax, eax
2254
        xor     eax, eax
2255
        stosd
2255
        stosd
2256
        mov     edx, edi
2256
        mov     edx, edi
2257
@@:
2257
@@:
2258
        lodsb
2258
        lodsb
2259
        test    al, al
2259
        test    al, al
2260
        jz      @f
2260
        jz      @f
2261
        cmp     edi, CopyDestEditBuf+12+511
2261
        cmp     edi, CopyDestEditBuf+12+511
2262
        jae     .bigfoldername
2262
        jae     .bigfoldername
2263
        stosb
2263
        stosb
2264
        jmp     @b
2264
        jmp     @b
2265
@@:
2265
@@:
2266
        mov     al, '/'
2266
        mov     al, '/'
2267
        stosb
2267
        stosb
2268
.f5_common:
2268
.f5_common:
2269
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
2269
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
2270
        mov     [source_hModule], eax
2270
        mov     [source_hModule], eax
2271
        mov     eax, [ebp + panel1_hFile - panel1_data]
2271
        mov     eax, [ebp + panel1_hFile - panel1_data]
2272
        mov     [source_hPlugin], eax
2272
        mov     [source_hPlugin], eax
2273
        mov     eax, left_dotdot_entry
2273
        mov     eax, left_dotdot_entry
2274
        cmp     ebp, panel1_data
2274
        cmp     ebp, panel1_data
2275
        jz      @f
2275
        jz      @f
2276
        add     eax, right_dotdot_entry-left_dotdot_entry
2276
        add     eax, right_dotdot_entry-left_dotdot_entry
2277
@@:
2277
@@:
2278
        mov     [default_attr], eax
2278
        mov     [default_attr], eax
2279
        mov     byte [edi], 0
2279
        mov     byte [edi], 0
2280
        sub     edi, edx
2280
        sub     edi, edx
2281
        mov     [edx-8], edi
2281
        mov     [edx-8], edi
2282
        mov     edi, CopySourceTextBuf
2282
        mov     edi, CopySourceTextBuf
2283
        mov     esi, aCopy1
2283
        mov     esi, aCopy1
2284
@@:
2284
@@:
2285
        lodsb
2285
        lodsb
2286
        test    al, al
2286
        test    al, al
2287
        jz      @f
2287
        jz      @f
2288
        stosb
2288
        stosb
2289
        jmp     @b
2289
        jmp     @b
2290
@@:
2290
@@:
2291
        mov     eax, [ebp + panel1_selected_num - panel1_data]
2291
        mov     eax, [ebp + panel1_selected_num - panel1_data]
2292
        test    eax, eax
2292
        test    eax, eax
2293
        jz      .f5_noselected1
2293
        jz      .f5_noselected1
2294
        mov     ebx, eax
2294
        mov     ebx, eax
2295
        push    10
2295
        push    10
2296
        pop     ecx
2296
        pop     ecx
2297
        push    -'0'
2297
        push    -'0'
2298
@@:
2298
@@:
2299
        xor     edx, edx
2299
        xor     edx, edx
2300
        div     ecx
2300
        div     ecx
2301
        push    edx
2301
        push    edx
2302
        test    eax, eax
2302
        test    eax, eax
2303
        jnz     @b
2303
        jnz     @b
2304
@@:
2304
@@:
2305
        pop     eax
2305
        pop     eax
2306
        add     al, '0'
2306
        add     al, '0'
2307
        jz      @f
2307
        jz      @f
2308
        stosb
2308
        stosb
2309
        jmp     @b
2309
        jmp     @b
2310
@@:
2310
@@:
2311
if lang eq ru
2311
if lang eq ru
2312
        mov     dword [edi], ' í«¥'
2312
        mov     dword [edi], ' í«¥'
2313
        mov     dword [edi+4], '¬¥­â'
2313
        mov     dword [edi+4], '¬¥­â'
2314
        add     edi, 8
2314
        add     edi, 8
2315
        cmp     ebx, 1
2315
        cmp     ebx, 1
2316
        jz      @f
2316
        jz      @f
2317
        mov     al, ' '
2317
        mov     al, ' '
2318
        stosb
2318
        stosb
2319
        cmp     ebx, 4
2319
        cmp     ebx, 4
2320
        jbe     @f
2320
        jbe     @f
2321
        mov     word [edi-1], '®¢'
2321
        mov     word [edi-1], '®¢'
2322
        inc     edi
2322
        inc     edi
2323
@@:
2323
@@:
2324
else
2324
else
2325
        mov     dword [edi], ' ite'
2325
        mov     dword [edi], ' ite'
2326
        mov     byte [edi+4], 'm'
2326
        mov     byte [edi+4], 'm'
2327
        add     edi, 5
2327
        add     edi, 5
2328
        cmp     ebx, 1
2328
        cmp     ebx, 1
2329
        jz      @f
2329
        jz      @f
2330
        mov     al, 's'
2330
        mov     al, 's'
2331
        stosb
2331
        stosb
2332
@@:
2332
@@:
2333
end if
2333
end if
2334
        jmp     .f5_selected1
2334
        jmp     .f5_selected1
2335
.f5_noselected1:
2335
.f5_noselected1:
2336
        mov     al, '"'
2336
        mov     al, '"'
2337
        stosb
2337
        stosb
2338
        call    get_curfile_folder_entry
2338
        call    get_curfile_folder_entry
2339
        lea     esi, [ecx+40]
2339
        lea     esi, [ecx+40]
2340
        lea     eax, [esi+1]
2340
        lea     eax, [esi+1]
2341
@@:
2341
@@:
2342
        inc     esi
2342
        inc     esi
2343
        cmp     byte [esi-1], 0
2343
        cmp     byte [esi-1], 0
2344
        jnz     @b
2344
        jnz     @b
2345
        sub     esi, eax
2345
        sub     esi, eax
2346
        xchg    eax, esi
2346
        xchg    eax, esi
2347
        dec     esi
2347
        dec     esi
2348
        mov     edx, [cur_width]
2348
        mov     edx, [cur_width]
2349
        sub     edx, 50
2349
        sub     edx, 50
2350
        sub     eax, edx
2350
        sub     eax, edx
2351
        jbe     @f
2351
        jbe     @f
2352
        add     esi, eax
2352
        add     esi, eax
2353
        mov     al, '.'
2353
        mov     al, '.'
2354
        stosb
2354
        stosb
2355
        stosb
2355
        stosb
2356
        stosb
2356
        stosb
2357
@@:
2357
@@:
2358
        lodsb
2358
        lodsb
2359
        test    al, al
2359
        test    al, al
2360
        jz      @f
2360
        jz      @f
2361
        stosb
2361
        stosb
2362
        jmp     @b
2362
        jmp     @b
2363
@@:
2363
@@:
2364
        mov     al, '"'
2364
        mov     al, '"'
2365
        stosb
2365
        stosb
2366
.f5_selected1:
2366
.f5_selected1:
2367
        mov     esi, aCopy2
2367
        mov     esi, aCopy2
2368
@@:
2368
@@:
2369
        lodsb
2369
        lodsb
2370
        stosb
2370
        stosb
2371
        test    al, al
2371
        test    al, al
2372
        jnz     @b
2372
        jnz     @b
2373
        mov     ebx, copy_dlgdata
2373
        mov     ebx, copy_dlgdata
2374
        mov     eax, [cur_width]
2374
        mov     eax, [cur_width]
2375
        sub     eax, 12
2375
        sub     eax, 12
2376
        mov     [ebx + dlgtemplate.width], eax
2376
        mov     [ebx + dlgtemplate.width], eax
2377
        dec     eax
2377
        dec     eax
2378
        dec     eax
2378
        dec     eax
2379
        mov     [ebx - copy_dlgdata + copy_dlgdata.width2], eax
2379
        mov     [ebx - copy_dlgdata + copy_dlgdata.width2], eax
2380
        mov     [ebx - copy_dlgdata + copy_dlgdata.width3], eax
2380
        mov     [ebx - copy_dlgdata + copy_dlgdata.width3], eax
2381
        shr     eax, 1
2381
        shr     eax, 1
2382
        dec     eax
2382
        dec     eax
2383
        dec     eax
2383
        dec     eax
2384
        mov     [ebx - copy_dlgdata + copy_dlgdata.copy_x2], eax
2384
        mov     [ebx - copy_dlgdata + copy_dlgdata.copy_x2], eax
2385
        sub     eax, aCopyLength-1
2385
        sub     eax, aCopyLength-1
2386
        mov     [ebx - copy_dlgdata + copy_dlgdata.copy_x1], eax
2386
        mov     [ebx - copy_dlgdata + copy_dlgdata.copy_x1], eax
2387
        add     eax, aCopyLength+3
2387
        add     eax, aCopyLength+3
2388
        mov     [ebx - copy_dlgdata + copy_dlgdata.cnl_x1], eax
2388
        mov     [ebx - copy_dlgdata + copy_dlgdata.cnl_x1], eax
2389
        add     eax, aCancelBLength - 1
2389
        add     eax, aCancelBLength - 1
2390
        mov     [ebx - copy_dlgdata + copy_dlgdata.cnl_x2], eax
2390
        mov     [ebx - copy_dlgdata + copy_dlgdata.cnl_x2], eax
2391
        mov     byte [ebx - copy_dlgdata + copy_dlgdata.flags0], 0xC
2391
        mov     byte [ebx - copy_dlgdata + copy_dlgdata.flags0], 0xC
2392
        and     byte [ebx - copy_dlgdata + copy_dlgdata.flags1], not 4
2392
        and     byte [ebx - copy_dlgdata + copy_dlgdata.flags1], not 4
2393
        and     byte [ebx - copy_dlgdata + copy_dlgdata.flags2], not 4
2393
        and     byte [ebx - copy_dlgdata + copy_dlgdata.flags2], not 4
2394
        push    ebx
2394
        push    ebx
2395
        call    DialogBox
2395
        call    DialogBox
2396
        cmp     eax, copy_dlgdata.copy_btn
2396
        cmp     eax, copy_dlgdata.copy_btn
2397
        jnz     .ret2
2397
        jnz     .ret2
2398
; Š®¯¨à㥬
2398
; Š®¯¨à㥬
2399
        mov     esi, CopyDestEditBuf+12
2399
        mov     esi, CopyDestEditBuf+12
2400
        mov     edi, esi
2400
        mov     edi, esi
2401
        xor     eax, eax
2401
        xor     eax, eax
2402
        or      ecx, -1
2402
        or      ecx, -1
2403
        repnz   scasb
2403
        repnz   scasb
2404
        dec     edi
2404
        dec     edi
2405
        dec     edi
2405
        dec     edi
2406
        cmp     edi, esi
2406
        cmp     edi, esi
2407
        jb      .ret2
2407
        jb      .ret2
2408
        mov     [bEndSlash], 0
2408
        mov     [bEndSlash], 0
2409
        cmp     byte [edi], '/'
2409
        cmp     byte [edi], '/'
2410
        jnz     @f
2410
        jnz     @f
2411
        cmp     edi, esi
2411
        cmp     edi, esi
2412
        jz      @f
2412
        jz      @f
2413
        mov     byte [edi], 0
2413
        mov     byte [edi], 0
2414
        dec     edi
2414
        dec     edi
2415
        mov     [bEndSlash], 1
2415
        mov     [bEndSlash], 1
2416
@@:
2416
@@:
2417
; …᫨ ¯ãâì ­¥ ­ ç¨­ ¥âáï á® á«íè , áç¨â ¥¬ ¥£® ®â­®á¨â¥«ì­® ⥪ã饩 ¯ ¯ª¨
2417
; …᫨ ¯ãâì ­¥ ­ ç¨­ ¥âáï á® á«íè , áç¨â ¥¬ ¥£® ®â­®á¨â¥«ì­® ⥪ã饩 ¯ ¯ª¨
2418
        cmp     byte [esi], '/'
2418
        cmp     byte [esi], '/'
2419
        jz      .copy_absolute_path
2419
        jz      .copy_absolute_path
2420
        push    esi
2420
        push    esi
2421
        push    edi
2421
        push    edi
2422
        lea     edi, [ebp + panel1_dir - panel1_data]
2422
        lea     edi, [ebp + panel1_dir - panel1_data]
2423
        or      ecx, -1
2423
        or      ecx, -1
2424
        xor     eax, eax
2424
        xor     eax, eax
2425
        repnz   scasb
2425
        repnz   scasb
2426
        not     ecx
2426
        not     ecx
2427
        pop     edi
2427
        pop     edi
2428
        push    edi
2428
        push    edi
2429
        add     edi, ecx
2429
        add     edi, ecx
2430
        cmp     edi, CopyDestEditBuf+12+513
2430
        cmp     edi, CopyDestEditBuf+12+513
2431
        pop     edi
2431
        pop     edi
2432
        jb      @f
2432
        jb      @f
2433
        pop     esi
2433
        pop     esi
2434
        jmp     .bigfilename
2434
        jmp     .bigfilename
2435
@@:
2435
@@:
2436
        lea     edx, [edi+2]
2436
        lea     edx, [edi+2]
2437
        sub     edx, esi
2437
        sub     edx, esi
2438
        lea     edi, [edi+ecx+1]
2438
        lea     edi, [edi+ecx+1]
2439
        xchg    ecx, edx
2439
        xchg    ecx, edx
2440
        std
2440
        std
2441
        lea     esi, [esi+ecx-1]
2441
        lea     esi, [esi+ecx-1]
2442
        rep     movsb
2442
        rep     movsb
2443
        cld
2443
        cld
2444
        pop     edi
2444
        pop     edi
2445
        lea     esi, [ebp + panel1_dir - panel1_data]
2445
        lea     esi, [ebp + panel1_dir - panel1_data]
2446
        push    edi
2446
        push    edi
2447
        mov     ecx, edx
2447
        mov     ecx, edx
2448
        rep     movsb
2448
        rep     movsb
2449
        mov     byte [edi-1], '/'
2449
        mov     byte [edi-1], '/'
2450
        pop     esi
2450
        pop     esi
2451
.copy_absolute_path:
2451
.copy_absolute_path:
2452
; ‘­ ç «  ᮧ¤ ñ¬ ¢á¥ ¢ë襫¥¦ é¨¥ ¯ ¯ª¨, ª®â®àë¥ ¥éñ ­¥ áãé¥áâ¢ãîâ
2452
; ‘­ ç «  ᮧ¤ ñ¬ ¢á¥ ¢ë襫¥¦ é¨¥ ¯ ¯ª¨, ª®â®àë¥ ¥éñ ­¥ áãé¥áâ¢ãîâ
2453
; ®á«¥¤­¨© ¨§ í«¥¬¥­â®¢ ¬®¦¥â ¡ëâì ª ª ä ©«®¬, â ª ¨ ¯ ¯ª®©;
2453
; ®á«¥¤­¨© ¨§ í«¥¬¥­â®¢ ¬®¦¥â ¡ëâì ª ª ä ©«®¬, â ª ¨ ¯ ¯ª®©;
2454
; ä®àá¨à㥬 ¯ ¯ªã ¢ á«ãç ¥, ¥á«¨ å®âï ¡ë ®¤¨­ ¨§ ¨áâ®ç­¨ª®¢ ï¥âáï ¯ ¯ª®©
2454
; ä®àá¨à㥬 ¯ ¯ªã ¢ á«ãç ¥, ¥á«¨ å®âï ¡ë ®¤¨­ ¨§ ¨áâ®ç­¨ª®¢ ï¥âáï ¯ ¯ª®©
2455
        xor     edx, edx
2455
        xor     edx, edx
2456
        cmp     [ebp + panel1_selected_num - panel1_data], 0
2456
        cmp     [ebp + panel1_selected_num - panel1_data], 0
2457
        jz      .f5_noselected2
2457
        jz      .f5_noselected2
2458
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
2458
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
2459
        mov     edi, [ebp + panel1_files - panel1_data]
2459
        mov     edi, [ebp + panel1_files - panel1_data]
2460
.scanselected2:
2460
.scanselected2:
2461
        mov     eax, [edi]
2461
        mov     eax, [edi]
2462
        add     edi, 4
2462
        add     edi, 4
2463
        test    byte [eax+303], 1
2463
        test    byte [eax+303], 1
2464
        jz      @f
2464
        jz      @f
2465
        test    byte [eax], 10h
2465
        test    byte [eax], 10h
2466
        jz      @f
2466
        jz      @f
2467
        inc     edx
2467
        inc     edx
2468
@@:
2468
@@:
2469
        loop    .scanselected2
2469
        loop    .scanselected2
2470
        jmp     .f5_selected2
2470
        jmp     .f5_selected2
2471
.f5_noselected2:
2471
.f5_noselected2:
2472
        call    get_curfile_folder_entry
2472
        call    get_curfile_folder_entry
2473
        test    byte [ecx], 10h
2473
        test    byte [ecx], 10h
2474
        setnz   dl
2474
        setnz   dl
2475
.f5_selected2:
2475
.f5_selected2:
2476
        xor     eax, eax
2476
        xor     eax, eax
2477
        mov     edi, esi
2477
        mov     edi, esi
2478
.countslashloop:
2478
.countslashloop:
2479
        cmp     byte [edi], '/'
2479
        cmp     byte [edi], '/'
2480
        jnz     @f
2480
        jnz     @f
2481
        inc     eax
2481
        inc     eax
2482
        mov     ecx, edi
2482
        mov     ecx, edi
2483
@@:
2483
@@:
2484
        inc     edi
2484
        inc     edi
2485
        cmp     byte [edi], 0
2485
        cmp     byte [edi], 0
2486
        jnz     .countslashloop
2486
        jnz     .countslashloop
2487
        mov     [bNeedRestoreName], 0
2487
        mov     [bNeedRestoreName], 0
2488
; "/file-system/partition" folders already exist, so we don't need to create them
2488
; "/file-system/partition" folders already exist, so we don't need to create them
2489
        cmp     eax, 2
2489
        cmp     eax, 2
2490
        jbe     .createupdone
2490
        jbe     .createupdone
2491
; we interpret destination as folder if edx!=0 or bEndSlash!=0
2491
; we interpret destination as folder if edx!=0 or bEndSlash!=0
2492
        test    edx, edx
2492
        test    edx, edx
2493
        jnz     @f
2493
        jnz     @f
2494
        cmp     [bEndSlash], 0
2494
        cmp     [bEndSlash], 0
2495
        jnz     @f
2495
        jnz     @f
2496
        mov     edi, ecx
2496
        mov     edi, ecx
2497
        dec     eax
2497
        dec     eax
2498
@@:
2498
@@:
2499
        mov     [attrinfo.name], esi
2499
        mov     [attrinfo.name], esi
2500
        mov     ecx, eax
2500
        mov     ecx, eax
2501
; ¨é¥¬ ¯®á«¥¤­îî ¯ ¯ªã, ª®â®à ï ¥éñ áãé¥áâ¢ã¥â
2501
; ¨é¥¬ ¯®á«¥¤­îî ¯ ¯ªã, ª®â®à ï ¥éñ áãé¥áâ¢ã¥â
2502
.createuploop1:
2502
.createuploop1:
2503
        cmp     eax, 2
2503
        cmp     eax, 2
2504
        jbe     .createupdone1
2504
        jbe     .createupdone1
2505
        mov     dl, [edi]
2505
        mov     dl, [edi]
2506
        mov     byte [edi], 0
2506
        mov     byte [edi], 0
2507
        push    eax
2507
        push    eax
2508
        push    70
2508
        push    70
2509
        pop     eax
2509
        pop     eax
2510
        mov     ebx, attrinfo
2510
        mov     ebx, attrinfo
2511
        int     0x40
2511
        int     0x40
2512
        test    eax, eax
2512
        test    eax, eax
2513
        pop     eax
2513
        pop     eax
2514
        mov     byte [edi], dl
2514
        mov     byte [edi], dl
2515
        jnz     .createupcont1
2515
        jnz     .createupcont1
2516
        test    byte [attrinfo.attr], 10h
2516
        test    byte [attrinfo.attr], 10h
2517
        jnz     .createupdone1
2517
        jnz     .createupdone1
2518
; the item required to be a folder, but is file
2518
; the item required to be a folder, but is file
2519
        push    aNotFolder
2519
        push    aNotFolder
2520
        push    esi
2520
        push    esi
2521
        mov     eax, esp
2521
        mov     eax, esp
2522
        push    ContinueBtn
2522
        push    ContinueBtn
2523
        push    1
2523
        push    1
2524
        push    eax
2524
        push    eax
2525
        push    2
2525
        push    2
2526
        call    SayErr
2526
        call    SayErr
2527
        pop     eax
2527
        pop     eax
2528
        pop     eax
2528
        pop     eax
2529
.ret3:
2529
.ret3:
2530
        ret
2530
        ret
2531
.createupcont1:
2531
.createupcont1:
2532
        dec     eax
2532
        dec     eax
2533
@@:
2533
@@:
2534
        dec     edi
2534
        dec     edi
2535
        cmp     byte [edi], '/'
2535
        cmp     byte [edi], '/'
2536
        jnz     @b
2536
        jnz     @b
2537
        jmp     .createuploop1
2537
        jmp     .createuploop1
2538
.createupdone1:
2538
.createupdone1:
2539
; ᮧ¤ ñ¬ ¢á¥ ¯ ¯ª¨, ª®â®àë¥ ­ ¬ ­ã¦­ë
2539
; ᮧ¤ ñ¬ ¢á¥ ¯ ¯ª¨, ª®â®àë¥ ­ ¬ ­ã¦­ë
2540
        cmp     eax, ecx
2540
        cmp     eax, ecx
2541
        jae     .createupdone
2541
        jae     .createupdone
2542
@@:
2542
@@:
2543
        inc     edi
2543
        inc     edi
2544
        cmp     byte [edi], 0
2544
        cmp     byte [edi], 0
2545
        jz      @f
2545
        jz      @f
2546
        cmp     byte [edi], '/'
2546
        cmp     byte [edi], '/'
2547
        jnz     @b
2547
        jnz     @b
2548
@@:
2548
@@:
2549
        mov     dl, byte [edi]
2549
        mov     dl, byte [edi]
2550
        mov     byte [edi], 0
2550
        mov     byte [edi], 0
2551
        push    eax
2551
        push    eax
2552
        push    RetryOrCancelBtn
2552
        push    RetryOrCancelBtn
2553
        push    2
2553
        push    2
2554
        call    makedir
2554
        call    makedir
2555
        mov     byte [edi], dl
2555
        mov     byte [edi], dl
2556
        mov     [bNeedRestoreName], 1
2556
        mov     [bNeedRestoreName], 1
2557
        pop     eax
2557
        pop     eax
2558
        jnz     .ret3
2558
        jnz     .ret3
2559
        inc     eax
2559
        inc     eax
2560
        jmp     .createupdone1
2560
        jmp     .createupdone1
2561
.createupdone:
2561
.createupdone:
2562
        mov     dl, 1
2562
        mov     dl, 1
2563
        cmp     byte [edi], 1
2563
        cmp     byte [edi], 1
2564
        sbb     eax, -1
2564
        sbb     eax, -1
2565
        cmp     eax, 2
2565
        cmp     eax, 2
2566
        jbe     .docopy
2566
        jbe     .docopy
2567
        mov     [attrinfo.attr], 0      ; assume zero attributes if error
2567
        mov     [attrinfo.attr], 0      ; assume zero attributes if error
2568
        push    70
2568
        push    70
2569
        pop     eax
2569
        pop     eax
2570
        mov     ebx, attrinfo
2570
        mov     ebx, attrinfo
2571
        int     0x40
2571
        int     0x40
2572
        test    [attrinfo.attr], 10h
2572
        test    [attrinfo.attr], 10h
2573
        setnz   dl
2573
        setnz   dl
2574
.docopy:
2574
.docopy:
2575
        call    get_curfile_folder_entry
2575
        call    get_curfile_folder_entry
2576
        mov     eax, ecx
2576
        mov     eax, ecx
2577
        cmp     [bNeedRestoreName], 0
2577
        cmp     [bNeedRestoreName], 0
2578
        jz      @f
2578
        jz      @f
2579
        cmp     [bEndSlash], 0
2579
        cmp     [bEndSlash], 0
2580
        jnz     @f
2580
        jnz     @f
2581
        cmp     [ebp + panel1_selected_num - panel1_data], 0
2581
        cmp     [ebp + panel1_selected_num - panel1_data], 0
2582
        jnz     @f
2582
        jnz     @f
2583
        test    byte [eax], 10h
2583
        test    byte [eax], 10h
2584
        jz      @f
2584
        jz      @f
2585
        mov     dl, 0
2585
        mov     dl, 0
2586
@@:
2586
@@:
2587
; ­ ç¨­ ¥¬ ᮡá⢥­­® ª®¯¨à®¢ ­¨¥
2587
; ­ ç¨­ ¥¬ ᮡá⢥­­® ª®¯¨à®¢ ­¨¥
2588
        mov     [bDestIsFolder], dl
2588
        mov     [bDestIsFolder], dl
2589
        mov     [copy_bSkipAll], 0
2589
        mov     [copy_bSkipAll], 0
2590
        mov     [copy_bSkipAll2], 0
2590
        mov     [copy_bSkipAll2], 0
2591
        mov     [copy_bSkipAll3], 0
2591
        mov     [copy_bSkipAll3], 0
2592
        test    [ebp + panel1_plugin_flags - panel1_data], 2
2592
        test    [ebp + panel1_plugin_flags - panel1_data], 2
2593
        jnz     .copy_GetFiles
2593
        jnz     .copy_GetFiles
2594
        cmp     [ebp + panel1_selected_num - panel1_data], 0
2594
        cmp     [ebp + panel1_selected_num - panel1_data], 0
2595
        jnz     .f5_selected3
2595
        jnz     .f5_selected3
2596
        call    copy_file
2596
        call    copy_file
2597
.copydone:
2597
.copydone:
2598
        push    ebp
2598
        push    ebp
2599
        call    .ctrl_r
2599
        call    .ctrl_r
2600
        pop     ebp
2600
        pop     ebp
2601
        xor     ebp, panel1_data xor panel2_data
2601
        xor     ebp, panel1_data xor panel2_data
2602
        jmp     .ctrl_r
2602
        jmp     .ctrl_r
2603
.f5_selected3:
2603
.f5_selected3:
2604
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
2604
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
2605
        mov     esi, [ebp + panel1_files - panel1_data]
2605
        mov     esi, [ebp + panel1_files - panel1_data]
2606
.f5_selected_copyloop:
2606
.f5_selected_copyloop:
2607
        lodsd
2607
        lodsd
2608
        test    byte [eax+303], 1
2608
        test    byte [eax+303], 1
2609
        jz      .f5_selected_copycont
2609
        jz      .f5_selected_copycont
2610
        mov     [bDestIsFolder], dl
2610
        mov     [bDestIsFolder], dl
2611
        call    copy_file
2611
        call    copy_file
2612
        ja      .f5_multiple_cancel
2612
        ja      .f5_multiple_cancel
2613
        and     byte [eax+303], not 1
2613
        and     byte [eax+303], not 1
2614
        pushad
2614
        pushad
2615
        call    draw_panel
2615
        call    draw_panel
2616
        cmp     [bNeedRestoreName], 0
2616
        cmp     [bNeedRestoreName], 0
2617
        jz      @f
2617
        jz      @f
2618
        mov     esi, CopyDestEditBuf+12
2618
        mov     esi, CopyDestEditBuf+12
2619
        call    delete_last_name_from_end
2619
        call    delete_last_name_from_end
2620
@@:
2620
@@:
2621
        popad
2621
        popad
2622
.f5_selected_copycont:
2622
.f5_selected_copycont:
2623
        loop    .f5_selected_copyloop
2623
        loop    .f5_selected_copyloop
2624
.f5_multiple_cancel:
2624
.f5_multiple_cancel:
2625
        jmp     .copydone
2625
        jmp     .copydone
2626
.copy_GetFiles:
2626
.copy_GetFiles:
2627
        mov     ecx, [ebp + panel1_selected_num - panel1_data]
2627
        mov     ecx, [ebp + panel1_selected_num - panel1_data]
2628
        cmp     ecx, 1
2628
        cmp     ecx, 1
2629
        adc     ecx, 0
2629
        adc     ecx, 0
2630
        shl     ecx, 2
2630
        shl     ecx, 2
2631
        call    xpgalloc
2631
        call    xpgalloc
2632
        test    eax, eax
2632
        test    eax, eax
2633
        jnz     @f
2633
        jnz     @f
2634
        ret
2634
        ret
2635
@@:
2635
@@:
2636
        push    ebp eax ; save
2636
        push    ebp eax ; save
2637
        push    copy_AddDir     ; adddir
2637
        push    copy_AddDir     ; adddir
2638
        push    copy_AddFile    ; addfile
2638
        push    copy_AddFile    ; addfile
2639
        push    eax             ; items
2639
        push    eax             ; items
2640
        shr     ecx, 2
2640
        shr     ecx, 2
2641
        push    ecx             ; NumItems
2641
        push    ecx             ; NumItems
2642
        push    [ebp + panel1_hFile - panel1_data]
2642
        push    [ebp + panel1_hFile - panel1_data]
2643
        mov     edi, eax
2643
        mov     edi, eax
2644
        call    get_curfile_folder_entry
2644
        call    get_curfile_folder_entry
2645
        mov     [edi], ecx
2645
        mov     [edi], ecx
2646
        cmp     [ebp + panel1_selected_num - panel1_data], 0
2646
        cmp     [ebp + panel1_selected_num - panel1_data], 0
2647
        jz      .cgf1
2647
        jz      .cgf1
2648
        mov     esi, [ebp + panel1_files - panel1_data]
2648
        mov     esi, [ebp + panel1_files - panel1_data]
2649
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
2649
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
2650
.cgf0:
2650
.cgf0:
2651
        lodsd
2651
        lodsd
2652
        test    byte [eax+303], 1
2652
        test    byte [eax+303], 1
2653
        jz      @f
2653
        jz      @f
2654
        stosd
2654
        stosd
2655
@@:
2655
@@:
2656
        loop    .cgf0
2656
        loop    .cgf0
2657
.cgf1:
2657
.cgf1:
2658
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
2658
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
2659
        call    [eax+PluginInfo.GetFiles]
2659
        call    [eax+PluginInfo.GetFiles]
2660
        pop     ecx ebp
2660
        pop     ecx ebp
2661
        call    pgfree
2661
        call    pgfree
2662
        jmp     .copydone
2662
        jmp     .copydone
2663
 
2663
 
2664
.f3:
2664
.f3:
2665
        mov     eax, [ebp + panel1_files - panel1_data]
2665
        mov     eax, [ebp + panel1_files - panel1_data]
2666
        mov     ecx, [eax+ecx*4]
2666
        mov     ecx, [eax+ecx*4]
2667
        test    byte [ecx], 10h
2667
        test    byte [ecx], 10h
2668
        jnz     .ret2
2668
        jnz     .ret2
2669
        lea     esi, [ebp + panel1_dir - panel1_data]
2669
        lea     esi, [ebp + panel1_dir - panel1_data]
2670
        xor     eax, eax
2670
        xor     eax, eax
2671
        call    view_file
2671
        call    view_file
2672
.ret2:
2672
.ret2:
2673
        ret
2673
        ret
2674
.f4:
2674
.f4:
2675
        call    edit_file
2675
        call    edit_file
2676
        ret
2676
        ret
2677
.f8_has_selected:
2677
.f8_has_selected:
2678
        mov     edi, saved_file_name+511
2678
        mov     edi, saved_file_name+511
2679
        mov     byte [edi], 0
2679
        mov     byte [edi], 0
2680
        mov     eax, [ebp + panel1_selected_num - panel1_data]
2680
        mov     eax, [ebp + panel1_selected_num - panel1_data]
2681
if lang eq ru
2681
if lang eq ru
2682
        cmp     eax, 1
2682
        cmp     eax, 1
2683
        jz      @f
2683
        jz      @f
2684
        dec     edi
2684
        dec     edi
2685
        mov     byte [edi], ' '
2685
        mov     byte [edi], ' '
2686
        cmp     eax, 4
2686
        cmp     eax, 4
2687
        jbe     @f
2687
        jbe     @f
2688
        dec     edi
2688
        dec     edi
2689
        mov     word [edi], '®¢'
2689
        mov     word [edi], '®¢'
2690
@@:
2690
@@:
2691
        mov     dword [edi-4], '¬¥­â'
2691
        mov     dword [edi-4], '¬¥­â'
2692
        mov     dword [edi-8], ' í«¥'
2692
        mov     dword [edi-8], ' í«¥'
2693
        sub     edi, 8
2693
        sub     edi, 8
2694
else
2694
else
2695
        cmp     eax, 1
2695
        cmp     eax, 1
2696
        jz      @f
2696
        jz      @f
2697
        dec     edi
2697
        dec     edi
2698
        mov     byte [edi], 's'
2698
        mov     byte [edi], 's'
2699
@@:
2699
@@:
2700
        mov     dword [edi-4], 'item'
2700
        mov     dword [edi-4], 'item'
2701
        mov     byte [edi-5], ' '
2701
        mov     byte [edi-5], ' '
2702
        sub     edi, 5
2702
        sub     edi, 5
2703
end if
2703
end if
2704
        xor     edx, edx
2704
        xor     edx, edx
2705
        push    10
2705
        push    10
2706
        pop     ecx
2706
        pop     ecx
2707
@@:
2707
@@:
2708
        div     ecx
2708
        div     ecx
2709
        add     dl, '0'
2709
        add     dl, '0'
2710
        dec     edi
2710
        dec     edi
2711
        mov     [edi], dl
2711
        mov     [edi], dl
2712
        xor     edx, edx
2712
        xor     edx, edx
2713
        test    eax, eax
2713
        test    eax, eax
2714
        jnz     @b
2714
        jnz     @b
2715
        push    edi
2715
        push    edi
2716
        push    aConfirmDeleteText
2716
        push    aConfirmDeleteText
2717
        mov     eax, esp
2717
        mov     eax, esp
2718
        push    DeleteOrCancelBtn
2718
        push    DeleteOrCancelBtn
2719
        push    2
2719
        push    2
2720
        push    eax
2720
        push    eax
2721
        push    2
2721
        push    2
2722
        push    aDeleteCaption
2722
        push    aDeleteCaption
2723
        call    Message
2723
        call    Message
2724
        add     esp, 8
2724
        add     esp, 8
2725
        test    eax, eax
2725
        test    eax, eax
2726
        jnz     .ret2
2726
        jnz     .ret2
2727
        mov     [del_bSkipAll], 0
2727
        mov     [del_bSkipAll], 0
2728
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
2728
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
2729
        jecxz   .ret2
2729
        jecxz   .ret2
2730
        mov     esi, [ebp + panel1_files - panel1_data]
2730
        mov     esi, [ebp + panel1_files - panel1_data]
2731
.f8_loop:
2731
.f8_loop:
2732
        lodsd
2732
        lodsd
2733
        test    byte [eax+303], 1
2733
        test    byte [eax+303], 1
2734
        jz      @f
2734
        jz      @f
2735
        call    delete_file
2735
        call    delete_file
2736
        ja      .f8_multiple_cancel
2736
        ja      .f8_multiple_cancel
2737
@@:
2737
@@:
2738
        loop    .f8_loop
2738
        loop    .f8_loop
2739
.f8_multiple_cancel:
2739
.f8_multiple_cancel:
2740
        jmp     .copydone
2740
        jmp     .copydone
2741
.f8:
2741
.f8:
2742
; todo: delete files from plugin panel
2742
; todo: delete files from plugin panel
2743
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
2743
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
2744
        jz      @f
2744
        jz      @f
2745
        ret
2745
        ret
2746
@@:
2746
@@:
2747
        cmp     [ebp + panel1_selected_num - panel1_data], 0
2747
        cmp     [ebp + panel1_selected_num - panel1_data], 0
2748
        jnz     .f8_has_selected
2748
        jnz     .f8_has_selected
2749
        call    get_curfile_folder_entry
2749
        call    get_curfile_folder_entry
2750
        cmp     word [ecx+40], '..'
2750
        cmp     word [ecx+40], '..'
2751
        jnz     @f
2751
        jnz     @f
2752
        cmp     byte [ecx+42], 0
2752
        cmp     byte [ecx+42], 0
2753
        jz      .f8_not_allowed
2753
        jz      .f8_not_allowed
2754
@@:
2754
@@:
2755
        cmp     [bConfirmDelete], 0
2755
        cmp     [bConfirmDelete], 0
2756
        jz      .f8_allowed
2756
        jz      .f8_allowed
2757
        lea     eax, [ecx+40]
2757
        lea     eax, [ecx+40]
2758
        push    eax
2758
        push    eax
2759
        mov     esi, aConfirmDeleteText
2759
        mov     esi, aConfirmDeleteText
2760
        mov     edi, aConfirmDeleteTextBuf
2760
        mov     edi, aConfirmDeleteTextBuf
2761
        push    edi
2761
        push    edi
2762
@@:
2762
@@:
2763
        lodsb
2763
        lodsb
2764
        stosb
2764
        stosb
2765
        test    al, al
2765
        test    al, al
2766
        jnz     @b
2766
        jnz     @b
2767
        dec     edi
2767
        dec     edi
2768
        mov     esi, aDeleteFolder
2768
        mov     esi, aDeleteFolder
2769
        test    byte [ecx], 10h
2769
        test    byte [ecx], 10h
2770
        jnz     @f
2770
        jnz     @f
2771
        mov     esi, aDeleteFile
2771
        mov     esi, aDeleteFile
2772
@@:
2772
@@:
2773
        lodsb
2773
        lodsb
2774
        stosb
2774
        stosb
2775
        test    al, al
2775
        test    al, al
2776
        jnz     @b
2776
        jnz     @b
2777
        mov     eax, esp
2777
        mov     eax, esp
2778
        push    DeleteOrCancelBtn
2778
        push    DeleteOrCancelBtn
2779
        push    2
2779
        push    2
2780
        push    eax
2780
        push    eax
2781
        push    2
2781
        push    2
2782
        push    aDeleteCaption
2782
        push    aDeleteCaption
2783
        call    Message
2783
        call    Message
2784
        add     esp, 8
2784
        add     esp, 8
2785
        test    eax, eax
2785
        test    eax, eax
2786
        jz      .f8_allowed
2786
        jz      .f8_allowed
2787
.f8_not_allowed:
2787
.f8_not_allowed:
2788
        ret
2788
        ret
2789
.f8_allowed:
2789
.f8_allowed:
2790
        mov     [del_bSkipAll], 0
2790
        mov     [del_bSkipAll], 0
2791
        mov     eax, ecx
2791
        mov     eax, ecx
2792
        call    delete_file
2792
        call    delete_file
2793
        jmp     .copydone
2793
        jmp     .copydone
2794
.ctrl_r:
2794
.ctrl_r:
2795
; Rescan panel
2795
; Rescan panel
2796
;       call    read_folder
2796
;       call    read_folder
2797
;       jmp     .done_redraw
2797
;       jmp     .done_redraw
2798
        mov     eax, [ebp + panel1_index - panel1_data]
2798
        mov     eax, [ebp + panel1_index - panel1_data]
2799
        push    eax
2799
        push    eax
2800
        call    get_curfile_name
2800
        call    get_curfile_name
2801
        mov     esi, ecx
2801
        mov     esi, ecx
2802
        mov     edi, saved_file_name
2802
        mov     edi, saved_file_name
2803
@@:
2803
@@:
2804
        lodsb
2804
        lodsb
2805
        stosb
2805
        stosb
2806
        test    al, al
2806
        test    al, al
2807
        jnz     @b
2807
        jnz     @b
2808
.ctrl_r.doread:
2808
.ctrl_r.doread:
2809
        push    [ebp + panel1_start - panel1_data]
2809
        push    [ebp + panel1_start - panel1_data]
2810
        call    read_folder
2810
        call    read_folder
2811
        pop     [ebp + panel1_start - panel1_data]
2811
        pop     [ebp + panel1_start - panel1_data]
2812
        pop     [ebp + panel1_index - panel1_data]
2812
        pop     [ebp + panel1_index - panel1_data]
2813
        or      eax, -1
2813
        or      eax, -1
2814
@@:
2814
@@:
2815
        inc     eax
2815
        inc     eax
2816
        cmp     eax, [ebp + panel1_numfiles - panel1_data]
2816
        cmp     eax, [ebp + panel1_numfiles - panel1_data]
2817
        jae     .ctrl_r.notfound
2817
        jae     .ctrl_r.notfound
2818
        mov     ecx, [ebp + panel1_files - panel1_data]
2818
        mov     ecx, [ebp + panel1_files - panel1_data]
2819
        mov     esi, [ecx+eax*4]
2819
        mov     esi, [ecx+eax*4]
2820
        add     esi, 40
2820
        add     esi, 40
2821
        mov     edi, saved_file_name
2821
        mov     edi, saved_file_name
2822
        call    strcmpi
2822
        call    strcmpi
2823
        jnz     @b
2823
        jnz     @b
2824
.ctrl_r.found:
2824
.ctrl_r.found:
2825
        mov     [ebp + panel1_index - panel1_data], eax
2825
        mov     [ebp + panel1_index - panel1_data], eax
2826
.ctrl_r.notfound:
2826
.ctrl_r.notfound:
2827
        mov     eax, [ebp + panel1_numfiles - panel1_data]
2827
        mov     eax, [ebp + panel1_numfiles - panel1_data]
2828
        dec     eax
2828
        dec     eax
2829
        cmp     [ebp + panel1_index - panel1_data], eax
2829
        cmp     [ebp + panel1_index - panel1_data], eax
2830
        jbe     @f
2830
        jbe     @f
2831
        mov     [ebp + panel1_index - panel1_data], eax
2831
        mov     [ebp + panel1_index - panel1_data], eax
2832
@@:
2832
@@:
2833
        mov     eax, [ebp + panel1_index - panel1_data]
2833
        mov     eax, [ebp + panel1_index - panel1_data]
2834
        cmp     [ebp + panel1_start - panel1_data], eax
2834
        cmp     [ebp + panel1_start - panel1_data], eax
2835
        jbe     @f
2835
        jbe     @f
2836
        mov     [ebp + panel1_start - panel1_data], eax
2836
        mov     [ebp + panel1_start - panel1_data], eax
2837
@@:
2837
@@:
2838
        inc     eax
2838
        inc     eax
2839
        sub     eax, [ebp + panel1_colst - panel1_data]
2839
        sub     eax, [ebp + panel1_colst - panel1_data]
2840
        jae     @f
2840
        jae     @f
2841
        xor     eax, eax
2841
        xor     eax, eax
2842
@@:
2842
@@:
2843
        cmp     [ebp + panel1_start - panel1_data], eax
2843
        cmp     [ebp + panel1_start - panel1_data], eax
2844
        jae     @f
2844
        jae     @f
2845
        mov     [ebp + panel1_start - panel1_data], eax
2845
        mov     [ebp + panel1_start - panel1_data], eax
2846
@@:
2846
@@:
2847
        mov     eax, [ebp + panel1_numfiles - panel1_data]
2847
        mov     eax, [ebp + panel1_numfiles - panel1_data]
2848
        sub     eax, [ebp + panel1_colst - panel1_data]
2848
        sub     eax, [ebp + panel1_colst - panel1_data]
2849
        jbe     @f
2849
        jbe     @f
2850
        cmp     [ebp + panel1_start - panel1_data], eax
2850
        cmp     [ebp + panel1_start - panel1_data], eax
2851
        jbe     @f
2851
        jbe     @f
2852
        mov     [ebp + panel1_start - panel1_data], eax
2852
        mov     [ebp + panel1_start - panel1_data], eax
2853
@@:
2853
@@:
2854
        jmp     .done_redraw
2854
        jmp     .done_redraw
2855
.menu:
2855
.menu:
2856
; todo: context menu for plugin panel
2856
; todo: context menu for plugin panel
2857
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
2857
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
2858
        jz      @f
2858
        jz      @f
2859
        ret
2859
        ret
2860
@@:
2860
@@:
2861
; display context menu
2861
; display context menu
2862
; ignore folders
2862
; ignore folders
2863
        call    get_curfile_folder_entry
2863
        call    get_curfile_folder_entry
2864
        test    byte [ecx], 10h
2864
        test    byte [ecx], 10h
2865
        jz      @f
2865
        jz      @f
2866
.menuret:
2866
.menuret:
2867
        ret
2867
        ret
2868
@@:
2868
@@:
2869
        call    find_extension
2869
        call    find_extension
2870
        jc      .menuret
2870
        jc      .menuret
2871
; known extension
2871
; known extension
2872
@@:
2872
@@:
2873
        cmp     byte [edi], 0
2873
        cmp     byte [edi], 0
2874
        jz      .menuret
2874
        jz      .menuret
2875
        cmp     byte [edi], ';'
2875
        cmp     byte [edi], ';'
2876
        jz      @f
2876
        jz      @f
2877
        inc     edi
2877
        inc     edi
2878
        jmp     @b
2878
        jmp     @b
2879
@@:
2879
@@:
2880
        inc     edi
2880
        inc     edi
2881
@@:
2881
@@:
2882
        inc     edi
2882
        inc     edi
2883
        cmp     byte [edi-1], ' '
2883
        cmp     byte [edi-1], ' '
2884
        jz      @b
2884
        jz      @b
2885
        cmp     byte [edi-1], 9
2885
        cmp     byte [edi-1], 9
2886
        jz      @b
2886
        jz      @b
2887
        dec     edi
2887
        dec     edi
2888
        cmp     byte [edi], 0
2888
        cmp     byte [edi], 0
2889
        jz      .menuret
2889
        jz      .menuret
2890
        mov     ecx, esi
2890
        mov     ecx, esi
2891
@@:
2891
@@:
2892
        inc     ecx
2892
        inc     ecx
2893
        cmp     byte [ecx-1], 0
2893
        cmp     byte [ecx-1], 0
2894
        jnz     @b
2894
        jnz     @b
2895
        sub     ecx, esi        ; ecx = ¤«¨­  ¨¬¥­¨ ä ©« +1 = ¤«¨­  § £®«®¢ª +1
2895
        sub     ecx, esi        ; ecx = ¤«¨­  ¨¬¥­¨ ä ©« +1 = ¤«¨­  § £®«®¢ª +1
2896
        cmp     ecx, 15
2896
        cmp     ecx, 15
2897
        jb      @f
2897
        jb      @f
2898
        mov     cl, 15
2898
        mov     cl, 15
2899
@@:
2899
@@:
2900
        xor     edx, edx
2900
        xor     edx, edx
2901
        xor     ebp, ebp
2901
        xor     ebp, ebp
2902
        push    edx
2902
        push    edx
2903
.menucreateloop:
2903
.menucreateloop:
2904
        mov     eax, edi
2904
        mov     eax, edi
2905
        xor     ebx, ebx
2905
        xor     ebx, ebx
2906
@@:
2906
@@:
2907
        cmp     byte [edi], ','
2907
        cmp     byte [edi], ','
2908
        jz      @f
2908
        jz      @f
2909
        cmp     byte [edi], bl
2909
        cmp     byte [edi], bl
2910
        jz      @f
2910
        jz      @f
2911
        inc     edi
2911
        inc     edi
2912
        jmp     @b
2912
        jmp     @b
2913
@@:
2913
@@:
2914
        xchg    bl, [edi]
2914
        xchg    bl, [edi]
2915
        pushad
2915
        pushad
2916
        push    nullstr
2916
        push    nullstr
2917
        push    1024
2917
        push    1024
2918
        push    saved_file_name
2918
        push    saved_file_name
2919
        push    eax
2919
        push    eax
2920
        push    aMenu
2920
        push    aMenu
2921
        push    app_path
2921
        push    app_path
2922
        call    [ini.get_str]
2922
        call    [ini.get_str]
2923
        popad
2923
        popad
2924
        mov     [edi], bl
2924
        mov     [edi], bl
2925
        mov     eax, saved_file_name
2925
        mov     eax, saved_file_name
2926
@@:
2926
@@:
2927
        cmp     byte [eax], 0
2927
        cmp     byte [eax], 0
2928
        jz      .menucreatecont
2928
        jz      .menucreatecont
2929
        cmp     byte [eax], ','
2929
        cmp     byte [eax], ','
2930
        jz      @f
2930
        jz      @f
2931
        inc     eax
2931
        inc     eax
2932
        jmp     @b
2932
        jmp     @b
2933
@@:
2933
@@:
2934
        mov     byte [eax], 0
2934
        mov     byte [eax], 0
2935
        push    eax
2935
        push    eax
2936
        sub     eax, saved_file_name-1
2936
        sub     eax, saved_file_name-1
2937
        cmp     eax, ecx
2937
        cmp     eax, ecx
2938
        ja      @f
2938
        ja      @f
2939
        mov     eax, ecx
2939
        mov     eax, ecx
2940
@@:
2940
@@:
2941
        xchg    eax, [esp]
2941
        xchg    eax, [esp]
2942
        inc     eax
2942
        inc     eax
2943
        push    eax
2943
        push    eax
2944
@@:
2944
@@:
2945
        inc     eax
2945
        inc     eax
2946
        cmp     byte [eax-1], 0
2946
        cmp     byte [eax-1], 0
2947
        jnz     @b
2947
        jnz     @b
2948
        sub     eax, [esp]
2948
        sub     eax, [esp]
2949
        add     [esp+4], eax
2949
        add     [esp+4], eax
2950
        pop     eax eax
2950
        pop     eax eax
2951
        add     eax, 8
2951
        add     eax, 8
2952
        add     ebp, eax
2952
        add     ebp, eax
2953
        push    ebp
2953
        push    ebp
2954
        and     ebp, 0xFFF
2954
        and     ebp, 0xFFF
2955
        cmp     ebp, eax
2955
        cmp     ebp, eax
2956
        pop     ebp
2956
        pop     ebp
2957
        ja      @f
2957
        ja      @f
2958
        push    eax
2958
        push    eax
2959
        xchg    edx, [esp+4]
2959
        xchg    edx, [esp+4]
2960
        push    ecx
2960
        push    ecx
2961
        mov     ecx, ebp
2961
        mov     ecx, ebp
2962
        call    xpgrealloc
2962
        call    xpgrealloc
2963
        pop     ecx
2963
        pop     ecx
2964
        pop     edx
2964
        pop     edx
2965
        xchg    edx, [esp]
2965
        xchg    edx, [esp]
2966
        test    eax, eax
2966
        test    eax, eax
2967
        xchg    eax, [esp]
2967
        xchg    eax, [esp]
2968
        jz      .menucreated
2968
        jz      .menucreated
2969
@@:
2969
@@:
2970
        neg     eax
2970
        neg     eax
2971
        add     eax, ebp
2971
        add     eax, ebp
2972
        add     eax, [esp]
2972
        add     eax, [esp]
2973
        and     dword [eax], 0
2973
        and     dword [eax], 0
2974
        and     dword [eax+4], 0
2974
        and     dword [eax+4], 0
2975
        test    edx, edx
2975
        test    edx, edx
2976
        jz      @f
2976
        jz      @f
2977
        sub     eax, [esp]
2977
        sub     eax, [esp]
2978
        mov     [edx], eax
2978
        mov     [edx], eax
2979
        add     eax, [esp]
2979
        add     eax, [esp]
2980
        sub     edx, [esp]
2980
        sub     edx, [esp]
2981
        mov     [eax+4], edx
2981
        mov     [eax+4], edx
2982
@@:
2982
@@:
2983
        mov     edx, eax
2983
        mov     edx, eax
2984
        push    esi edi
2984
        push    esi edi
2985
        mov     esi, saved_file_name
2985
        mov     esi, saved_file_name
2986
        lea     edi, [eax+8]
2986
        lea     edi, [eax+8]
2987
@@:
2987
@@:
2988
        lodsb
2988
        lodsb
2989
        stosb
2989
        stosb
2990
        test    al, al
2990
        test    al, al
2991
        jnz     @b
2991
        jnz     @b
2992
        push    esi
2992
        push    esi
2993
        sub     esi, saved_file_name
2993
        sub     esi, saved_file_name
2994
        sub     esi, ecx
2994
        sub     esi, ecx
2995
        jae     .menunoadd
2995
        jae     .menunoadd
2996
        neg     esi
2996
        neg     esi
2997
@@:
2997
@@:
2998
        mov     byte [edi-1], ' '
2998
        mov     byte [edi-1], ' '
2999
        stosb
2999
        stosb
3000
        dec     esi
3000
        dec     esi
3001
        jnz     @b
3001
        jnz     @b
3002
.menunoadd:
3002
.menunoadd:
3003
        pop     esi
3003
        pop     esi
3004
@@:
3004
@@:
3005
        lodsb
3005
        lodsb
3006
        stosb
3006
        stosb
3007
        test    al, al
3007
        test    al, al
3008
        jnz     @b
3008
        jnz     @b
3009
        pop     edi esi
3009
        pop     edi esi
3010
.menucreatecont:
3010
.menucreatecont:
3011
        inc     edi
3011
        inc     edi
3012
        cmp     byte [edi-1], ','
3012
        cmp     byte [edi-1], ','
3013
        jz      .menucreateloop
3013
        jz      .menucreateloop
3014
.menucreated:
3014
.menucreated:
3015
        test    edx, edx
3015
        test    edx, edx
3016
        jz      .menuret_free
3016
        jz      .menuret_free
3017
        and     dword [edx], 0
3017
        and     dword [edx], 0
3018
        pop     edx
3018
        pop     edx
3019
        mov     ecx, edx
3019
        mov     ecx, edx
3020
        add     [ecx], edx
3020
        add     [ecx], edx
3021
@@:
3021
@@:
3022
        mov     ecx, [ecx]
3022
        mov     ecx, [ecx]
3023
        cmp     dword [ecx], 0
3023
        cmp     dword [ecx], 0
3024
        jz      @f
3024
        jz      @f
3025
        add     [ecx], edx
3025
        add     [ecx], edx
3026
        add     [ecx+4], edx
3026
        add     [ecx+4], edx
3027
        jmp     @b
3027
        jmp     @b
3028
@@:
3028
@@:
3029
        add     [ecx+4], edx
3029
        add     [ecx+4], edx
3030
        push    edx
3030
        push    edx
3031
        push    1
3031
        push    1
3032
        push    esi
3032
        push    esi
3033
        push    edx
3033
        push    edx
3034
        call    menu
3034
        call    menu
3035
        cmp     eax, -1
3035
        cmp     eax, -1
3036
        jz      .menuret_free
3036
        jz      .menuret_free
3037
        lea     edi, [eax+8]
3037
        lea     edi, [eax+8]
3038
@@:
3038
@@:
3039
        inc     edi
3039
        inc     edi
3040
        cmp     byte [edi-1], 0
3040
        cmp     byte [edi-1], 0
3041
        jnz     @b
3041
        jnz     @b
3042
        mov     ebp, [active_panel]
3042
        mov     ebp, [active_panel]
3043
        call    get_curfile_folder_entry
3043
        call    get_curfile_folder_entry
3044
        call    .run_association2
3044
        call    .run_association2
3045
.menuret_free:
3045
.menuret_free:
3046
        pop     ecx
3046
        pop     ecx
3047
        jmp     pgfree
3047
        jmp     pgfree
3048
.f7:
3048
.f7:
3049
        mov     dword [CopyDestEditBuf], CopyDestEditBuf.length
3049
        mov     dword [CopyDestEditBuf], CopyDestEditBuf.length
3050
        and     dword [CopyDestEditBuf+4], 0
3050
        and     dword [CopyDestEditBuf+4], 0
3051
        and     dword [CopyDestEditBuf+8], 0
3051
        and     dword [CopyDestEditBuf+8], 0
3052
        mov     byte [CopyDestEditBuf+12], 0
3052
        mov     byte [CopyDestEditBuf+12], 0
3053
        mov     ebx, mkdir_dlgdata
3053
        mov     ebx, mkdir_dlgdata
3054
        mov     eax, [cur_width]
3054
        mov     eax, [cur_width]
3055
        sub     eax, 12
3055
        sub     eax, 12
3056
        mov     [ebx + dlgtemplate.width], eax
3056
        mov     [ebx + dlgtemplate.width], eax
3057
        dec     eax
3057
        dec     eax
3058
        dec     eax
3058
        dec     eax
3059
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.width2], eax
3059
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.width2], eax
3060
        shr     eax, 1
3060
        shr     eax, 1
3061
        dec     eax
3061
        dec     eax
3062
        dec     eax
3062
        dec     eax
3063
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.cont_x2], eax
3063
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.cont_x2], eax
3064
        sub     eax, a_ContinueLength-1
3064
        sub     eax, a_ContinueLength-1
3065
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.cont_x1], eax
3065
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.cont_x1], eax
3066
        add     eax, a_ContinueLength+3
3066
        add     eax, a_ContinueLength+3
3067
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.cnl_x1], eax
3067
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.cnl_x1], eax
3068
        add     eax, aCancelBLength - 1
3068
        add     eax, aCancelBLength - 1
3069
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.cnl_x2], eax
3069
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.cnl_x2], eax
3070
        mov     byte [ebx - mkdir_dlgdata + mkdir_dlgdata.flags0], 0xC
3070
        mov     byte [ebx - mkdir_dlgdata + mkdir_dlgdata.flags0], 0xC
3071
        and     byte [ebx - mkdir_dlgdata + mkdir_dlgdata.flags1], not 4
3071
        and     byte [ebx - mkdir_dlgdata + mkdir_dlgdata.flags1], not 4
3072
        and     byte [ebx - mkdir_dlgdata + mkdir_dlgdata.flags2], not 4
3072
        and     byte [ebx - mkdir_dlgdata + mkdir_dlgdata.flags2], not 4
3073
        push    ebx
3073
        push    ebx
3074
        call    DialogBox
3074
        call    DialogBox
3075
        cmp     eax, mkdir_dlgdata.cont_btn
3075
        cmp     eax, mkdir_dlgdata.cont_btn
3076
        jnz     .ret2
3076
        jnz     .ret2
3077
        mov     esi, CopyDestEditBuf+12
3077
        mov     esi, CopyDestEditBuf+12
3078
        cmp     byte [esi], 0
3078
        cmp     byte [esi], 0
3079
        jz      .ret2
3079
        jz      .ret2
3080
        cmp     byte [esi], '/'
3080
        cmp     byte [esi], '/'
3081
        jz      .mkdir_absolute_path
3081
        jz      .mkdir_absolute_path
3082
        push    esi
3082
        push    esi
3083
        lea     edi, [ebp + panel1_dir - panel1_data]
3083
        lea     edi, [ebp + panel1_dir - panel1_data]
3084
        or      ecx, -1
3084
        or      ecx, -1
3085
        xor     eax, eax
3085
        xor     eax, eax
3086
        repnz   scasb
3086
        repnz   scasb
3087
        not     ecx
3087
        not     ecx
3088
        mov     edi, esi
3088
        mov     edi, esi
3089
@@:
3089
@@:
3090
        cmp     byte [edi+1], 0
3090
        cmp     byte [edi+1], 0
3091
        jz      @f
3091
        jz      @f
3092
        inc     edi
3092
        inc     edi
3093
        jmp     @b
3093
        jmp     @b
3094
@@:
3094
@@:
3095
        push    edi
3095
        push    edi
3096
        add     edi, ecx
3096
        add     edi, ecx
3097
        cmp     edi, CopyDestEditBuf+12+513
3097
        cmp     edi, CopyDestEditBuf+12+513
3098
        pop     edi
3098
        pop     edi
3099
        jb      @f
3099
        jb      @f
3100
        pop     esi
3100
        pop     esi
3101
        jmp     .bigfilename
3101
        jmp     .bigfilename
3102
@@:
3102
@@:
3103
        lea     edx, [edi+2]
3103
        lea     edx, [edi+2]
3104
        sub     edx, esi
3104
        sub     edx, esi
3105
        lea     edi, [edi+ecx+1]
3105
        lea     edi, [edi+ecx+1]
3106
        xchg    ecx, edx
3106
        xchg    ecx, edx
3107
        std
3107
        std
3108
        lea     esi, [esi+ecx-1]
3108
        lea     esi, [esi+ecx-1]
3109
        rep     movsb
3109
        rep     movsb
3110
        cld
3110
        cld
3111
        pop     edi
3111
        pop     edi
3112
        lea     esi, [ebp + panel1_dir - panel1_data]
3112
        lea     esi, [ebp + panel1_dir - panel1_data]
3113
        push    edi
3113
        push    edi
3114
        mov     ecx, edx
3114
        mov     ecx, edx
3115
        rep     movsb
3115
        rep     movsb
3116
        mov     byte [edi-1], '/'
3116
        mov     byte [edi-1], '/'
3117
        pop     esi
3117
        pop     esi
3118
.mkdir_absolute_path:
3118
.mkdir_absolute_path:
3119
        push    RetryOrCancelBtn
3119
        push    RetryOrCancelBtn
3120
        push    2
3120
        push    2
3121
        call    makedir
3121
        call    makedir
3122
        jmp     .copydone
3122
        jmp     .copydone
3123
.change_mode:
3123
.change_mode:
3124
        dec     eax
3124
        dec     eax
3125
        mov     [ebp + panel1_colmode - panel1_data], eax
3125
        mov     [ebp + panel1_colmode - panel1_data], eax
3126
        call    calc_colwidths
3126
        call    calc_colwidths
3127
        jmp     draw_panel
3127
        jmp     draw_panel
3128
.quick_jump:
3128
.quick_jump:
3129
        dec     eax
3129
        dec     eax
3130
        cmp     al, 10
3130
        cmp     al, 10
3131
        jnz     @f
3131
        jnz     @f
3132
        xor     eax, eax
3132
        xor     eax, eax
3133
@@:
3133
@@:
3134
        mov     eax, [FolderShortcuts+eax*4]
3134
        mov     eax, [FolderShortcuts+eax*4]
3135
        test    eax, eax
3135
        test    eax, eax
3136
        jnz     @f
3136
        jnz     @f
3137
        ret
3137
        ret
3138
@@:
3138
@@:
3139
        push    eax
3139
        push    eax
3140
        call    close_plugin_panels
3140
        call    close_plugin_panels
3141
        lea     esi, [ebp + panel1_dir - panel1_data]
3141
        lea     esi, [ebp + panel1_dir - panel1_data]
3142
        push    esi
3142
        push    esi
3143
        mov     edi, prev_dir
3143
        mov     edi, prev_dir
3144
@@:
3144
@@:
3145
        lodsb
3145
        lodsb
3146
        stosb
3146
        stosb
3147
        test    al, al
3147
        test    al, al
3148
        jnz     @b
3148
        jnz     @b
3149
        pop     edi esi
3149
        pop     edi esi
3150
@@:
3150
@@:
3151
        lodsb
3151
        lodsb
3152
        stosb
3152
        stosb
3153
        test    al, al
3153
        test    al, al
3154
        jnz     @b
3154
        jnz     @b
3155
        jmp     .reread
3155
        jmp     .reread
3156
.greyplus:
3156
.greyplus:
3157
        push    0
3157
        push    0
3158
        mov     ecx, aSelect
3158
        mov     ecx, aSelect
3159
        jmp     @f
3159
        jmp     @f
3160
.greyminus:
3160
.greyminus:
3161
        push    1
3161
        push    1
3162
        mov     ecx, aDeselect
3162
        mov     ecx, aDeselect
3163
@@:
3163
@@:
3164
        mov     eax, mark_dlgdata
3164
        mov     eax, mark_dlgdata
3165
        mov     [eax+mark_dlgdata.title-mark_dlgdata], ecx
3165
        mov     [eax+mark_dlgdata.title-mark_dlgdata], ecx
3166
        mov     [eax+mark_dlgdata.flags-mark_dlgdata], 0xC
3166
        mov     [eax+mark_dlgdata.flags-mark_dlgdata], 0xC
3167
        mov     edi, enter_string_buf+12
3167
        mov     edi, enter_string_buf+12
3168
        mov     dword [edi-12], 512
3168
        mov     dword [edi-12], 512
3169
        mov     dword [edi-8], 1
3169
        mov     dword [edi-8], 1
3170
        and     dword [edi-4], 0
3170
        and     dword [edi-4], 0
3171
        mov     word [edi], '*'
3171
        mov     word [edi], '*'
3172
        push    eax
3172
        push    eax
3173
        call    DialogBox
3173
        call    DialogBox
3174
        inc     eax
3174
        inc     eax
3175
        jnz     @f
3175
        jnz     @f
3176
.noselect:
3176
.noselect:
3177
        pop     eax
3177
        pop     eax
3178
        ret
3178
        ret
3179
@@:
3179
@@:
3180
        xor     eax, eax
3180
        xor     eax, eax
3181
        mov     esi, edi
3181
        mov     esi, edi
3182
@@:
3182
@@:
3183
        lodsb
3183
        lodsb
3184
        mov     al, [tolower_table+eax]
3184
        mov     al, [tolower_table+eax]
3185
        mov     [esi-1], al
3185
        mov     [esi-1], al
3186
        test    al, al
3186
        test    al, al
3187
        jnz     @b
3187
        jnz     @b
3188
@@:
3188
@@:
3189
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
3189
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
3190
        mov     ebx, [ebp + panel1_files - panel1_data]
3190
        mov     ebx, [ebp + panel1_files - panel1_data]
3191
        jecxz   .noselect
3191
        jecxz   .noselect
3192
        mov     eax, [ebx]
3192
        mov     eax, [ebx]
3193
        cmp     word [eax+40], '..'
3193
        cmp     word [eax+40], '..'
3194
        jnz     .selectloop
3194
        jnz     .selectloop
3195
        cmp     byte [eax+42], 0
3195
        cmp     byte [eax+42], 0
3196
        jnz     .selectloop
3196
        jnz     .selectloop
3197
        dec     ecx
3197
        dec     ecx
3198
        jz      .noselect
3198
        jz      .noselect
3199
        add     ebx, 4
3199
        add     ebx, 4
3200
.selectloop:
3200
.selectloop:
3201
        xor     eax, eax
3201
        xor     eax, eax
3202
        mov     esi, [ebx]
3202
        mov     esi, [ebx]
3203
        add     esi, 40
3203
        add     esi, 40
3204
        mov     edx, lower_file_name-1
3204
        mov     edx, lower_file_name-1
3205
@@:
3205
@@:
3206
        lodsb
3206
        lodsb
3207
        inc     edx
3207
        inc     edx
3208
        mov     al, [tolower_table+eax]
3208
        mov     al, [tolower_table+eax]
3209
        mov     [edx], al
3209
        mov     [edx], al
3210
        test    al, al
3210
        test    al, al
3211
        jnz     @b
3211
        jnz     @b
3212
        mov     esi, lower_file_name
3212
        mov     esi, lower_file_name
3213
        call    match_mask_rev_lowercase
3213
        call    match_mask_rev_lowercase
3214
        jc      @f
3214
        jc      @f
3215
        mov     esi, [ebx]
3215
        mov     esi, [ebx]
3216
        mov     eax, [esi+32]
3216
        mov     eax, [esi+32]
3217
        cmp     byte [esp], 0
3217
        cmp     byte [esp], 0
3218
        jz      .doselect
3218
        jz      .doselect
3219
        test    byte [esi+303], 1
3219
        test    byte [esi+303], 1
3220
        jz      @f
3220
        jz      @f
3221
        and     byte [esi+303], not 1
3221
        and     byte [esi+303], not 1
3222
        sub     dword [ebp + panel1_selected_size - panel1_data], eax
3222
        sub     dword [ebp + panel1_selected_size - panel1_data], eax
3223
        mov     eax, [esi+36]
3223
        mov     eax, [esi+36]
3224
        sbb     dword [ebp + panel1_selected_size+4 - panel1_data], eax
3224
        sbb     dword [ebp + panel1_selected_size+4 - panel1_data], eax
3225
        dec     dword [ebp + panel1_selected_num - panel1_data]
3225
        dec     dword [ebp + panel1_selected_num - panel1_data]
3226
        jmp     @f
3226
        jmp     @f
3227
.doselect:
3227
.doselect:
3228
        test    byte [esi+303], 1
3228
        test    byte [esi+303], 1
3229
        jnz     @f
3229
        jnz     @f
3230
        or      byte [esi+303], 1
3230
        or      byte [esi+303], 1
3231
        add     dword [ebp + panel1_selected_size - panel1_data], eax
3231
        add     dword [ebp + panel1_selected_size - panel1_data], eax
3232
        mov     eax, [esi+36]
3232
        mov     eax, [esi+36]
3233
        adc     dword [ebp + panel1_selected_size+4 - panel1_data], eax
3233
        adc     dword [ebp + panel1_selected_size+4 - panel1_data], eax
3234
        inc     dword [ebp + panel1_selected_num - panel1_data]
3234
        inc     dword [ebp + panel1_selected_num - panel1_data]
3235
@@:
3235
@@:
3236
        add     ebx, 4
3236
        add     ebx, 4
3237
        dec     ecx
3237
        dec     ecx
3238
        jnz     .selectloop
3238
        jnz     .selectloop
3239
        pop     eax
3239
        pop     eax
3240
        jmp     .done_redraw
3240
        jmp     .done_redraw
3241
.greyasterisk:
3241
.greyasterisk:
3242
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
3242
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
3243
        mov     esi, [ebp + panel1_files - panel1_data]
3243
        mov     esi, [ebp + panel1_files - panel1_data]
3244
        jecxz   .galoopdone
3244
        jecxz   .galoopdone
3245
.galoop:
3245
.galoop:
3246
        lodsd
3246
        lodsd
3247
        cmp     word [eax+40], '..'
3247
        cmp     word [eax+40], '..'
3248
        jnz     @f
3248
        jnz     @f
3249
        cmp     byte [eax+42], 0
3249
        cmp     byte [eax+42], 0
3250
        jz      .gacont
3250
        jz      .gacont
3251
@@:
3251
@@:
3252
        xor     byte [eax+303], 1
3252
        xor     byte [eax+303], 1
3253
        mov     edx, [eax+32]
3253
        mov     edx, [eax+32]
3254
        test    byte [eax+303], 1
3254
        test    byte [eax+303], 1
3255
        jz      .gadel
3255
        jz      .gadel
3256
        add     dword [ebp + panel1_selected_size - panel1_data], edx
3256
        add     dword [ebp + panel1_selected_size - panel1_data], edx
3257
        mov     edx, [eax+36]
3257
        mov     edx, [eax+36]
3258
        adc     dword [ebp + panel1_selected_size+4 - panel1_data], edx
3258
        adc     dword [ebp + panel1_selected_size+4 - panel1_data], edx
3259
        inc     dword [ebp + panel1_selected_num - panel1_data]
3259
        inc     dword [ebp + panel1_selected_num - panel1_data]
3260
        jmp     .gacont
3260
        jmp     .gacont
3261
.gadel:
3261
.gadel:
3262
        sub     dword [ebp + panel1_selected_size - panel1_data], edx
3262
        sub     dword [ebp + panel1_selected_size - panel1_data], edx
3263
        mov     edx, [eax+36]
3263
        mov     edx, [eax+36]
3264
        sbb     dword [ebp + panel1_selected_size+4 - panel1_data], edx
3264
        sbb     dword [ebp + panel1_selected_size+4 - panel1_data], edx
3265
        dec     dword [ebp + panel1_selected_num - panel1_data]
3265
        dec     dword [ebp + panel1_selected_num - panel1_data]
3266
.gacont:
3266
.gacont:
3267
        loop    .galoop
3267
        loop    .galoop
3268
.galoopdone:
3268
.galoopdone:
3269
        jmp     .done_redraw
3269
        jmp     .done_redraw
3270
 
3270
 
3271
@@:
3271
@@:
3272
        call    close_plugin_panel
3272
        call    close_plugin_panel
3273
close_plugin_panels:
3273
close_plugin_panels:
3274
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
3274
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
3275
        jnz     @b
3275
        jnz     @b
3276
        ret
3276
        ret
3277
 
3277
 
3278
close_plugin_panel:
3278
close_plugin_panel:
3279
; close plugin and restore old directory
3279
; close plugin and restore old directory
3280
        mov     esi, [ebp + panel1_parents - panel1_data]
3280
        mov     esi, [ebp + panel1_parents - panel1_data]
3281
        add     esi, [ebp + panel1_parents_sz - panel1_data]
3281
        add     esi, [ebp + panel1_parents_sz - panel1_data]
3282
@@:
3282
@@:
3283
        dec     esi
3283
        dec     esi
3284
        cmp     byte [esi-1], 0
3284
        cmp     byte [esi-1], 0
3285
        jnz     @b
3285
        jnz     @b
3286
        push    esi
3286
        push    esi
3287
        lea     edi, [ebp + panel1_dir - panel1_data]
3287
        lea     edi, [ebp + panel1_dir - panel1_data]
3288
@@:
3288
@@:
3289
        lodsb
3289
        lodsb
3290
        stosb
3290
        stosb
3291
        test    al, al
3291
        test    al, al
3292
        jnz     @b
3292
        jnz     @b
3293
        pop     esi
3293
        pop     esi
3294
        sub     esi, 9
3294
        sub     esi, 9
3295
        mov     edx, [esi]      ; hPlugin
3295
        mov     edx, [esi]      ; hPlugin
3296
        mov     ebx, [esi+4]    ; hFile
3296
        mov     ebx, [esi+4]    ; hFile
3297
        sub     esi, [ebp + panel1_parents - panel1_data]
3297
        sub     esi, [ebp + panel1_parents - panel1_data]
3298
        mov     [ebp + panel1_parents_sz - panel1_data], esi
3298
        mov     [ebp + panel1_parents_sz - panel1_data], esi
3299
        xchg    edx, [ebp + panel1_hPlugin - panel1_data]
3299
        xchg    edx, [ebp + panel1_hPlugin - panel1_data]
3300
        xchg    ebx, [ebp + panel1_hFile - panel1_data]
3300
        xchg    ebx, [ebp + panel1_hFile - panel1_data]
3301
        push    edx ebx
3301
        push    edx ebx
3302
        lea     ebx, [ebp + panel1_plugin_info - panel1_data]
3302
        lea     ebx, [ebp + panel1_plugin_info - panel1_data]
3303
        and     dword [ebx], 0
3303
        and     dword [ebx], 0
3304
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
3304
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
3305
        test    eax, eax
3305
        test    eax, eax
3306
        jz      @f
3306
        jz      @f
3307
        push    ebp
3307
        push    ebp
3308
        push    ebx
3308
        push    ebx
3309
        push    [ebp + panel1_hFile - panel1_data]
3309
        push    [ebp + panel1_hFile - panel1_data]
3310
        call    [eax+PluginInfo.GetOpenPluginInfo]
3310
        call    [eax+PluginInfo.GetOpenPluginInfo]
3311
        pop     ebp
3311
        pop     ebp
3312
@@:
3312
@@:
3313
        pop     ebx edx
3313
        pop     ebx edx
3314
 
3314
 
3315
close_handle_if_unused:
3315
close_handle_if_unused:
3316
; edx=hPlugin, ebx=hFile
3316
; edx=hPlugin, ebx=hFile
3317
        push    ebp
3317
        push    ebp
3318
        xor     ecx, ecx
3318
        xor     ecx, ecx
3319
@@:
3319
@@:
3320
        mov     eax, [screens]
3320
        mov     eax, [screens]
3321
        mov     ebp, [eax+ecx*8+4]
3321
        mov     ebp, [eax+ecx*8+4]
3322
        mov     eax, [eax+ecx*8]
3322
        mov     eax, [eax+ecx*8]
3323
        call    [eax+screen_vtable.IsHandleUsed]
3323
        call    [eax+screen_vtable.IsHandleUsed]
3324
        jz      .used
3324
        jz      .used
3325
        inc     ecx
3325
        inc     ecx
3326
        cmp     ecx, [num_screens]
3326
        cmp     ecx, [num_screens]
3327
        jb      @b
3327
        jb      @b
3328
        push    ebx
3328
        push    ebx
3329
        call    [edx+PluginInfo.ClosePlugin]
3329
        call    [edx+PluginInfo.ClosePlugin]
3330
.used:
3330
.used:
3331
        pop     ebp
3331
        pop     ebp
3332
        ret
3332
        ret
3333
 
3333
 
3334
panels_IsHandleUsed:
3334
panels_IsHandleUsed:
3335
; edx=hPlugin, ebx=hFile
3335
; edx=hPlugin, ebx=hFile
3336
        mov     ebp, panel1_data
3336
        mov     ebp, panel1_data
3337
        call    .1
3337
        call    .1
3338
        jz      .ret
3338
        jz      .ret
3339
        mov     ebp, panel2_data
3339
        mov     ebp, panel2_data
3340
 
3340
 
3341
.1:
3341
.1:
3342
        cmp     edx, [ebp+panel1_hPlugin-panel1_data]
3342
        cmp     edx, [ebp+panel1_hPlugin-panel1_data]
3343
        jnz     @f
3343
        jnz     @f
3344
        cmp     ebx, [ebp+panel1_hFile-panel1_data]
3344
        cmp     ebx, [ebp+panel1_hFile-panel1_data]
3345
        jz      .ret
3345
        jz      .ret
3346
@@:
3346
@@:
3347
        mov     esi, [ebp + panel1_parents_sz - panel1_data]
3347
        mov     esi, [ebp + panel1_parents_sz - panel1_data]
3348
        test    esi, esi
3348
        test    esi, esi
3349
        jnz     @f
3349
        jnz     @f
3350
        inc     esi
3350
        inc     esi
3351
.ret:
3351
.ret:
3352
        ret
3352
        ret
3353
@@:
3353
@@:
3354
        add     esi, [ebp + panel1_parents - panel1_data]
3354
        add     esi, [ebp + panel1_parents - panel1_data]
3355
@@:
3355
@@:
3356
        dec     esi
3356
        dec     esi
3357
        cmp     byte [esi-1], 0
3357
        cmp     byte [esi-1], 0
3358
        jnz     @b
3358
        jnz     @b
3359
        sub     esi, 9
3359
        sub     esi, 9
3360
        cmp     edx, [esi]      ; hPlugin
3360
        cmp     edx, [esi]      ; hPlugin
3361
        jnz     .no
3361
        jnz     .no
3362
        mov     ebx, [esi+4]    ; hFile
3362
        mov     ebx, [esi+4]    ; hFile
3363
        jz      .ret
3363
        jz      .ret
3364
.no:
3364
.no:
3365
        cmp     esi, [ebp + panel1_parents - panel1_data]
3365
        cmp     esi, [ebp + panel1_parents - panel1_data]
3366
        jnz     @b
3366
        jnz     @b
3367
        inc     esi
3367
        inc     esi
3368
        ret
3368
        ret
3369
 
3369
 
3370
panels_OnExit:
3370
panels_OnExit:
3371
; close plugin panels
3371
; close plugin panels
3372
        mov     ebp, panel1_data
3372
        mov     ebp, panel1_data
3373
        call    close_plugin_panels
3373
        call    close_plugin_panels
3374
        mov     ebp, panel2_data
3374
        mov     ebp, panel2_data
3375
        call    close_plugin_panels
3375
        call    close_plugin_panels
3376
        ret
3376
        ret
3377
 
3377
 
3378
panels_OnRedraw:
3378
panels_OnRedraw:
3379
        or      [cursor_x], -1
3379
        or      [cursor_x], -1
3380
        or      [cursor_y], -1
3380
        or      [cursor_y], -1
3381
        call    draw_cmdbar
3381
        call    draw_cmdbar
3382
        mov     ebp, panel1_data
3382
        mov     ebp, panel1_data
3383
        call    calc_colwidths
3383
        call    calc_colwidths
3384
        call    draw_panel
3384
        call    draw_panel
3385
        mov     ebp, panel2_data
3385
        mov     ebp, panel2_data
3386
        call    calc_colwidths
3386
        call    calc_colwidths
3387
        call    draw_panel
3387
        call    draw_panel
3388
        ret
3388
        ret
3389
 
3389
 
3390
init_console:
3390
init_console:
3391
        mov     ecx, [console_data_ptr]
3391
        mov     ecx, [console_data_ptr]
3392
        call    pgfree
3392
        call    pgfree
3393
        mov     eax, [cur_width]
3393
        mov     eax, [cur_width]
3394
        mul     [cur_height]
3394
        mul     [cur_height]
3395
        mov     ecx, eax
3395
        mov     ecx, eax
3396
        push    ecx
3396
        push    ecx
3397
        shl     ecx, 2
3397
        shl     ecx, 2
3398
        call    pgalloc
3398
        call    pgalloc
3399
        pop     ecx
3399
        pop     ecx
3400
        test    eax, eax
3400
        test    eax, eax
3401
        jz      exit
3401
        jz      exit
3402
        mov     [console_data_ptr], eax
3402
        mov     [console_data_ptr], eax
3403
        mov     edi, eax
3403
        mov     edi, eax
3404
        mov     ax, 0720h
3404
        mov     ax, 0720h
3405
        rep     stosw
3405
        rep     stosw
3406
        mov     [panel1_left], ecx
3406
        mov     [panel1_left], ecx
3407
        mov     [panel1_top], ecx
3407
        mov     [panel1_top], ecx
3408
        mov     [panel2_top], ecx
3408
        mov     [panel2_top], ecx
3409
        mov     eax, [cur_width]
3409
        mov     eax, [cur_width]
3410
        inc     eax
3410
        inc     eax
3411
        shr     eax, 1
3411
        shr     eax, 1
3412
        mov     [panel1_width], eax
3412
        mov     [panel1_width], eax
3413
        mov     [panel2_left], eax
3413
        mov     [panel2_left], eax
3414
        sub     eax, [cur_width]
3414
        sub     eax, [cur_width]
3415
        neg     eax
3415
        neg     eax
3416
        mov     [panel2_width], eax
3416
        mov     [panel2_width], eax
3417
        mov     eax, [cur_height]
3417
        mov     eax, [cur_height]
3418
        dec     eax
3418
        dec     eax
3419
        dec     eax
3419
        dec     eax
3420
        mov     [panel1_height], eax
3420
        mov     [panel1_height], eax
3421
        mov     [panel2_height], eax
3421
        mov     [panel2_height], eax
3422
        ret
3422
        ret
3423
 
3423
 
3424
get_curfile_folder_entry:
3424
get_curfile_folder_entry:
3425
        mov     ecx, [ebp + panel1_index - panel1_data]
3425
        mov     ecx, [ebp + panel1_index - panel1_data]
3426
        shl     ecx, 2
3426
        shl     ecx, 2
3427
        add     ecx, [ebp + panel1_files - panel1_data]
3427
        add     ecx, [ebp + panel1_files - panel1_data]
3428
        mov     ecx, [ecx]
3428
        mov     ecx, [ecx]
3429
        ret
3429
        ret
3430
get_curfile_name:
3430
get_curfile_name:
3431
        call    get_curfile_folder_entry
3431
        call    get_curfile_folder_entry
3432
        add     ecx, 40
3432
        add     ecx, 40
3433
        ret
3433
        ret
3434
 
3434
 
3435
quick_find:
3435
quick_find:
3436
        cmp     [ebp + panel1_numfiles - panel1_data], 0
3436
        cmp     [ebp + panel1_numfiles - panel1_data], 0
3437
        jz      .nof
3437
        jz      .nof
3438
        mov     ecx, [ebp + panel1_index - panel1_data]
3438
        mov     ecx, [ebp + panel1_index - panel1_data]
3439
.scanloop:
3439
.scanloop:
3440
        mov     edi, ecx
3440
        mov     edi, ecx
3441
        shl     edi, 2
3441
        shl     edi, 2
3442
        add     edi, [ebp + panel1_files - panel1_data]
3442
        add     edi, [ebp + panel1_files - panel1_data]
3443
        mov     edi, [edi]
3443
        mov     edi, [edi]
3444
        add     edi, 40
3444
        add     edi, 40
3445
        mov     esi, quick_search_buf + 12
3445
        mov     esi, quick_search_buf + 12
3446
@@:
3446
@@:
3447
        lodsb
3447
        lodsb
3448
        test    al, al
3448
        test    al, al
3449
        jz      .ok
3449
        jz      .ok
3450
        call    match_symbol
3450
        call    match_symbol
3451
        jnz     .no
3451
        jnz     .no
3452
        inc     edi
3452
        inc     edi
3453
        jmp     @b
3453
        jmp     @b
3454
.no:
3454
.no:
3455
        inc     ecx
3455
        inc     ecx
3456
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
3456
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
3457
        jb      @f
3457
        jb      @f
3458
        xor     ecx, ecx
3458
        xor     ecx, ecx
3459
@@:
3459
@@:
3460
        cmp     ecx, [ebp + panel1_index - panel1_data]
3460
        cmp     ecx, [ebp + panel1_index - panel1_data]
3461
        jnz     .scanloop
3461
        jnz     .scanloop
3462
.nof:
3462
.nof:
3463
        stc
3463
        stc
3464
        ret
3464
        ret
3465
.ok:
3465
.ok:
3466
        cmp     ecx, [ebp + panel1_index - panel1_data]
3466
        cmp     ecx, [ebp + panel1_index - panel1_data]
3467
        jz      .ret
3467
        jz      .ret
3468
        mov     [ebp + panel1_index - panel1_data], ecx
3468
        mov     [ebp + panel1_index - panel1_data], ecx
3469
        mov     eax, [ebp + panel1_height - panel1_data]
3469
        mov     eax, [ebp + panel1_height - panel1_data]
3470
        shr     eax, 1
3470
        shr     eax, 1
3471
        sub     ecx, eax
3471
        sub     ecx, eax
3472
        jae     @f
3472
        jae     @f
3473
        xor     ecx, ecx
3473
        xor     ecx, ecx
3474
@@:
3474
@@:
3475
        mov     eax, [ebp + panel1_numfiles - panel1_data]
3475
        mov     eax, [ebp + panel1_numfiles - panel1_data]
3476
        sub     eax, [ebp + panel1_colst - panel1_data]
3476
        sub     eax, [ebp + panel1_colst - panel1_data]
3477
        jnc     @f
3477
        jnc     @f
3478
        xor     eax, eax
3478
        xor     eax, eax
3479
        xor     ecx, ecx
3479
        xor     ecx, ecx
3480
@@:
3480
@@:
3481
        cmp     ecx, eax
3481
        cmp     ecx, eax
3482
        jb      @f
3482
        jb      @f
3483
        mov     ecx, eax
3483
        mov     ecx, eax
3484
@@:
3484
@@:
3485
        mov     [ebp + panel1_start - panel1_data], ecx
3485
        mov     [ebp + panel1_start - panel1_data], ecx
3486
        call    draw_panel
3486
        call    draw_panel
3487
.ret:
3487
.ret:
3488
        clc
3488
        clc
3489
        ret
3489
        ret
3490
 
3490
 
3491
quick_find_next:
3491
quick_find_next:
3492
        cmp     [ebp + panel1_numfiles - panel1_data], 0
3492
        cmp     [ebp + panel1_numfiles - panel1_data], 0
3493
        jz      quick_find.nof
3493
        jz      quick_find.nof
3494
        mov     ecx, [ebp + panel1_index - panel1_data]
3494
        mov     ecx, [ebp + panel1_index - panel1_data]
3495
        jmp     quick_find.no
3495
        jmp     quick_find.no
3496
 
3496
 
3497
quick_find_prev:
3497
quick_find_prev:
3498
        cmp     [ebp + panel1_numfiles - panel1_data], 0
3498
        cmp     [ebp + panel1_numfiles - panel1_data], 0
3499
        jz      quick_find.nof
3499
        jz      quick_find.nof
3500
        mov     ecx, [ebp + panel1_index - panel1_data]
3500
        mov     ecx, [ebp + panel1_index - panel1_data]
3501
.scanloop:
3501
.scanloop:
3502
        dec     ecx
3502
        dec     ecx
3503
        jns     @f
3503
        jns     @f
3504
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
3504
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
3505
        dec     ecx
3505
        dec     ecx
3506
@@:
3506
@@:
3507
        cmp     ecx, [ebp + panel1_index - panel1_data]
3507
        cmp     ecx, [ebp + panel1_index - panel1_data]
3508
        jz      quick_find.nof
3508
        jz      quick_find.nof
3509
        mov     edi, ecx
3509
        mov     edi, ecx
3510
        shl     edi, 2
3510
        shl     edi, 2
3511
        add     edi, [ebp + panel1_files - panel1_data]
3511
        add     edi, [ebp + panel1_files - panel1_data]
3512
        mov     edi, [edi]
3512
        mov     edi, [edi]
3513
        add     edi, 40
3513
        add     edi, 40
3514
        mov     esi, quick_search_buf + 12
3514
        mov     esi, quick_search_buf + 12
3515
@@:
3515
@@:
3516
        lodsb
3516
        lodsb
3517
        test    al, al
3517
        test    al, al
3518
        jz      quick_find.ok
3518
        jz      quick_find.ok
3519
        call    match_symbol
3519
        call    match_symbol
3520
        jnz     .scanloop
3520
        jnz     .scanloop
3521
        inc     edi
3521
        inc     edi
3522
        jmp     @b
3522
        jmp     @b
3523
 
3523
 
3524
panels_getname:
3524
panels_getname:
3525
if lang eq ru
3525
if lang eq ru
3526
        mov     eax, ' ­¥'
3526
        mov     eax, ' ­¥'
3527
        stosd
3527
        stosd
3528
        mov     eax, 'Ǭ  '
3528
        mov     eax, 'Ǭ  '
3529
        stosd
3529
        stosd
3530
        mov     eax, '    '
3530
        mov     eax, '    '
3531
        stosd
3531
        stosd
3532
        stosb
3532
        stosb
3533
else
3533
else
3534
        mov     eax, 'Pane'
3534
        mov     eax, 'Pane'
3535
        stosd
3535
        stosd
3536
        mov     eax, 'ls  '
3536
        mov     eax, 'ls  '
3537
        stosd
3537
        stosd
3538
        mov     eax, '    '
3538
        mov     eax, '    '
3539
        stosd
3539
        stosd
3540
        stosb
3540
        stosb
3541
end if
3541
end if
3542
        sub     ecx, 13
3542
        sub     ecx, 13
3543
        mov     ebp, [active_panel]
3543
        mov     ebp, [active_panel]
3544
        push    3
3544
        push    3
3545
        pop     edx
3545
        pop     edx
3546
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
3546
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
3547
        jz      .native
3547
        jz      .native
3548
        mov     esi, [ebp + panel1_parents - panel1_data]
3548
        mov     esi, [ebp + panel1_parents - panel1_data]
3549
        add     esi, [ebp + panel1_parents_sz - panel1_data]
3549
        add     esi, [ebp + panel1_parents_sz - panel1_data]
3550
@@:
3550
@@:
3551
        dec     esi
3551
        dec     esi
3552
        cmp     byte [esi-1], 0
3552
        cmp     byte [esi-1], 0
3553
        jz      @f
3553
        jz      @f
3554
        cmp     byte [esi-1], '/'
3554
        cmp     byte [esi-1], '/'
3555
        jnz     @b
3555
        jnz     @b
3556
@@:
3556
@@:
3557
        push    ecx edi
3557
        push    ecx edi
3558
        shr     ecx, 1
3558
        shr     ecx, 1
3559
@@:
3559
@@:
3560
        lodsb
3560
        lodsb
3561
        test    al, al
3561
        test    al, al
3562
        jz      @f
3562
        jz      @f
3563
        stosb
3563
        stosb
3564
        loop    @b
3564
        loop    @b
3565
@@:
3565
@@:
3566
        sub     edi, [esp]
3566
        sub     edi, [esp]
3567
        sub     [esp+4], edi
3567
        sub     [esp+4], edi
3568
        add     [esp], edi
3568
        add     [esp], edi
3569
        pop     edi ecx
3569
        pop     edi ecx
3570
        lea     esi, [ebp + panel1_dir - panel1_data]
3570
        lea     esi, [ebp + panel1_dir - panel1_data]
3571
        cmp     byte [esi+1], 0
3571
        cmp     byte [esi+1], 0
3572
        jnz     @f
3572
        jnz     @f
3573
        inc     esi
3573
        inc     esi
3574
@@:
3574
@@:
3575
        jmp     .main
3575
        jmp     .main
3576
.native:
3576
.native:
3577
        lea     esi, [ebp + panel1_dir - panel1_data]
3577
        lea     esi, [ebp + panel1_dir - panel1_data]
3578
@@:
3578
@@:
3579
        lodsb
3579
        lodsb
3580
        stosb
3580
        stosb
3581
        dec     ecx
3581
        dec     ecx
3582
        test    al, al
3582
        test    al, al
3583
        jz      @f
3583
        jz      @f
3584
        cmp     al, '/'
3584
        cmp     al, '/'
3585
        jnz     @b
3585
        jnz     @b
3586
        dec     edx
3586
        dec     edx
3587
        jnz     @b
3587
        jnz     @b
3588
@@:
3588
@@:
3589
        test    al, al
3589
        test    al, al
3590
        jnz     @f
3590
        jnz     @f
3591
        dec     esi
3591
        dec     esi
3592
        dec     edi
3592
        dec     edi
3593
@@:
3593
@@:
3594
.main:
3594
.main:
3595
        push    esi
3595
        push    esi
3596
@@:
3596
@@:
3597
        lodsb
3597
        lodsb
3598
        test    al, al
3598
        test    al, al
3599
        jnz     @b
3599
        jnz     @b
3600
        dec     esi
3600
        dec     esi
3601
        mov     ebx, esi
3601
        mov     ebx, esi
3602
        sub     ebx, [esp]
3602
        sub     ebx, [esp]
3603
        dec     esi
3603
        dec     esi
3604
        push    esi
3604
        push    esi
3605
        mov     esi, [ebp + panel1_index - panel1_data]
3605
        mov     esi, [ebp + panel1_index - panel1_data]
3606
        shl     esi, 2
3606
        shl     esi, 2
3607
        add     esi, [ebp + panel1_files - panel1_data]
3607
        add     esi, [ebp + panel1_files - panel1_data]
3608
        mov     esi, [esi]
3608
        mov     esi, [esi]
3609
        add     esi, 40
3609
        add     esi, 40
3610
        push    esi
3610
        push    esi
3611
@@:
3611
@@:
3612
        lodsb
3612
        lodsb
3613
        test    al, al
3613
        test    al, al
3614
        jnz     @b
3614
        jnz     @b
3615
        add     ebx, esi
3615
        add     ebx, esi
3616
        sub     ebx, [esp]
3616
        sub     ebx, [esp]
3617
        dec     esi
3617
        dec     esi
3618
        cmp     ebx, ecx
3618
        cmp     ebx, ecx
3619
        jbe     @f
3619
        jbe     @f
3620
        mov     al, '.'
3620
        mov     al, '.'
3621
        stosb
3621
        stosb
3622
        stosb
3622
        stosb
3623
        stosb
3623
        stosb
3624
        sub     ecx, 3
3624
        sub     ecx, 3
3625
        mov     ebx, ecx
3625
        mov     ebx, ecx
3626
@@:
3626
@@:
3627
        add     edi, ebx
3627
        add     edi, ebx
3628
        inc     ecx
3628
        inc     ecx
3629
        std
3629
        std
3630
@@:
3630
@@:
3631
        movsb
3631
        movsb
3632
        dec     ecx
3632
        dec     ecx
3633
        jz      .nodir
3633
        jz      .nodir
3634
        cmp     esi, [esp]
3634
        cmp     esi, [esp]
3635
        jae     @b
3635
        jae     @b
3636
        mov     esi, [esp+4]
3636
        mov     esi, [esp+4]
3637
        mov     al, '/'
3637
        mov     al, '/'
3638
        stosb
3638
        stosb
3639
        dec     ecx
3639
        dec     ecx
3640
        jz      .nodir
3640
        jz      .nodir
3641
@@:
3641
@@:
3642
        cmp     esi, [esp+8]
3642
        cmp     esi, [esp+8]
3643
        jb      .nodir
3643
        jb      .nodir
3644
        movsb
3644
        movsb
3645
        loop    @b
3645
        loop    @b
3646
.nodir:
3646
.nodir:
3647
        cld
3647
        cld
3648
        pop     eax
3648
        pop     eax
3649
        pop     eax
3649
        pop     eax
3650
        pop     eax
3650
        pop     eax
3651
        ret
3651
        ret
3652
 
3652
 
3653
draw_window:
3653
draw_window:
3654
        push    12
3654
        push    12
3655
        pop     eax
3655
        pop     eax
3656
        push    1
3656
        push    1
3657
        pop     ebx
3657
        pop     ebx
3658
        int     40h
3658
        int     40h
3659
        mov     al, 48
3659
        mov     al, 48
3660
        mov     bl, 4
3660
        mov     bl, 4
3661
        int     40h
3661
        int     40h
3662
        mov     [skinh], eax
3662
        mov     [skinh], eax
3663
        mov     ebx, [cur_width]
3663
        mov     ebx, [cur_width]
3664
        imul    ebx, font_width
3664
        imul    ebx, font_width
3665
        add     ebx, 100*65536 + 5*2-1
3665
        add     ebx, 100*65536 + 5*2-1
3666
        mov     ecx, [cur_height]
3666
        mov     ecx, [cur_height]
3667
        imul    ecx, font_height
3667
        imul    ecx, font_height
3668
        lea     ecx, [eax+ecx+5-1+100*65536]
3668
        lea     ecx, [eax+ecx+5-1+100*65536]
3669
        xor     eax, eax
3669
        xor     eax, eax
3670
        mov     edx, 0x53000000
3670
        mov     edx, 0x53000000
3671
        mov     edi, header
3671
        mov     edi, header
3672
        int     40h
3672
        int     40h
3673
        mov     al, 13
3673
        mov     al, 13
3674
        xor     edx, edx
3674
        xor     edx, edx
3675
        cmp     [fill_width], 0
3675
        cmp     [fill_width], 0
3676
        jz      @f
3676
        jz      @f
3677
        mov     ebx, [wnd_width]
3677
        mov     ebx, [wnd_width]
3678
        sub     ebx, [fill_width]
3678
        sub     ebx, [fill_width]
3679
        sub     ebx, 5-1
3679
        sub     ebx, 5-1
3680
        shl     ebx, 16
3680
        shl     ebx, 16
3681
        mov     bx, word [fill_width]
3681
        mov     bx, word [fill_width]
3682
        mov     ecx, [skinh-2]
3682
        mov     ecx, [skinh-2]
3683
        mov     cx, word [wnd_height]
3683
        mov     cx, word [wnd_height]
3684
        sub     cx, word [skinh]
3684
        sub     cx, word [skinh]
3685
        sub     cx, 5-1
3685
        sub     cx, 5-1
3686
        int     0x40
3686
        int     0x40
3687
@@:
3687
@@:
3688
        cmp     [fill_height], 0
3688
        cmp     [fill_height], 0
3689
        jz      @f
3689
        jz      @f
3690
        xor     edx, edx
3690
        xor     edx, edx
3691
        mov     ebx, 50000h
3691
        mov     ebx, 50000h
3692
        mov     bx, word [wnd_width]
3692
        mov     bx, word [wnd_width]
3693
        sub     ebx, 9
3693
        sub     ebx, 9
3694
        mov     ecx, [wnd_height]
3694
        mov     ecx, [wnd_height]
3695
        sub     ecx, [fill_height]
3695
        sub     ecx, [fill_height]
3696
        sub     ecx, 5-1
3696
        sub     ecx, 5-1
3697
        shl     ecx, 16
3697
        shl     ecx, 16
3698
        mov     cx, word [fill_height]
3698
        mov     cx, word [fill_height]
3699
        int     0x40
3699
        int     0x40
3700
@@:
3700
@@:
3701
;        xor     ecx, ecx
3701
;        xor     ecx, ecx
3702
;        call    draw_image
3702
;        call    draw_image
3703
        mov     al, 65
3703
        mov     al, 65
3704
        mov     ebx, [MemForImage]
3704
        mov     ebx, [MemForImage]
3705
        test    ebx, ebx
3705
        test    ebx, ebx
3706
        jz      @f
3706
        jz      @f
3707
        mov     ecx, [cur_width]
3707
        mov     ecx, [cur_width]
3708
        imul    ecx, font_width*10000h
3708
        imul    ecx, font_width*10000h
3709
        mov     cx, word [cur_height]
3709
        mov     cx, word [cur_height]
3710
        imul    cx, font_height
3710
        imul    cx, font_height
3711
        mov     edx, [skinh]
3711
        mov     edx, [skinh]
3712
        add     edx, 5*10000h
3712
        add     edx, 5*10000h
3713
        mov     esi, 8
3713
        mov     esi, 8
3714
        mov     edi, console_colors
3714
        mov     edi, console_colors
3715
        xor     ebp, ebp
3715
        xor     ebp, ebp
3716
        int     0x40
3716
        int     0x40
3717
@@:
3717
@@:
3718
        mov     al, 12
3718
        mov     al, 12
3719
        push    2
3719
        push    2
3720
        pop     ebx
3720
        pop     ebx
3721
        int     40h
3721
        int     40h
3722
        ret
3722
        ret
3723
 
3723
 
3724
draw_image.nomem:
3724
draw_image.nomem:
3725
        mov     al, 13
3725
        mov     al, 13
3726
        xor     edx, edx
3726
        xor     edx, edx
3727
        mov     ebx, [cur_width]
3727
        mov     ebx, [cur_width]
3728
        imul    ebx, font_width
3728
        imul    ebx, font_width
3729
        add     ebx, 5*65536
3729
        add     ebx, 5*65536
3730
        mov     ecx, [skinh-2]
3730
        mov     ecx, [skinh-2]
3731
        mov     cx, word [cur_height]
3731
        mov     cx, word [cur_height]
3732
        imul    cx, font_height
3732
        imul    cx, font_height
3733
        int     40h
3733
        int     40h
3734
        mov     al, 4
3734
        mov     al, 4
3735
        mov     ebx, 32*65536+32
3735
        mov     ebx, 32*65536+32
3736
        mov     ecx, 0xFFFFFF
3736
        mov     ecx, 0xFFFFFF
3737
        mov     edx, nomem_draw
3737
        mov     edx, nomem_draw
3738
        push    nomem_draw.size
3738
        push    nomem_draw.size
3739
        pop     esi
3739
        pop     esi
3740
        int     40h
3740
        int     40h
3741
        ret
3741
        ret
3742
 
3742
 
3743
draw_image:
3743
draw_image:
3744
        mov     [bMemForImageValidData], byte 1
3744
        mov     [bMemForImageValidData], byte 1
3745
        cmp     [MemForImage], 0
3745
        cmp     [MemForImage], 0
3746
        jnz     .allocated
3746
        jnz     .allocated
3747
; allocate memory for image
3747
; allocate memory for image
3748
        mov     ecx, [cur_width]
3748
        mov     ecx, [cur_width]
3749
        imul    ecx, [cur_height]
3749
        imul    ecx, [cur_height]
3750
        imul    ecx, font_width*font_height
3750
        imul    ecx, font_width*font_height
3751
        call    pgalloc
3751
        call    pgalloc
3752
        test    eax, eax
3752
        test    eax, eax
3753
        jz      draw_image.nomem
3753
        jz      draw_image.nomem
3754
        mov     [MemForImage], eax
3754
        mov     [MemForImage], eax
3755
        mov     [bMemForImageValidData], byte 0
3755
        mov     [bMemForImageValidData], byte 0
3756
.allocated:
3756
.allocated:
3757
        push    ebp
3757
        push    ebp
3758
        and     [max_x], 0
3758
        and     [max_x], 0
3759
        or      [min_x], -1
3759
        or      [min_x], -1
3760
        and     [max_y], 0
3760
        and     [max_y], 0
3761
        or      [min_y], -1
3761
        or      [min_y], -1
3762
        mov     eax, [cursor_y]
3762
        mov     eax, [cursor_y]
3763
        mul     [cur_width]
3763
        mul     [cur_width]
3764
        add     eax, [cursor_x]
3764
        add     eax, [cursor_x]
3765
        add     eax, eax
3765
        add     eax, eax
3766
        add     eax, [console_data_ptr]
3766
        add     eax, [console_data_ptr]
3767
        xchg    [cur_cursor_pos], eax
3767
        xchg    [cur_cursor_pos], eax
3768
        mov     [old_cursor_pos], eax
3768
        mov     [old_cursor_pos], eax
3769
        mov     edi, [MemForImage]
3769
        mov     edi, [MemForImage]
3770
        mov     esi, [console_data_ptr]
3770
        mov     esi, [console_data_ptr]
3771
        mov     ecx, [cur_height]
3771
        mov     ecx, [cur_height]
3772
.lh:
3772
.lh:
3773
        push    ecx
3773
        push    ecx
3774
        mov     ecx, [cur_width]
3774
        mov     ecx, [cur_width]
3775
.lw:
3775
.lw:
3776
        push    ecx
3776
        push    ecx
3777
        mov     eax, [cur_width]
3777
        mov     eax, [cur_width]
3778
        imul    eax, [cur_height]
3778
        imul    eax, [cur_height]
3779
        mov     ebx, [esi]
3779
        mov     ebx, [esi]
3780
        cmp     [bMemForImageValidData], 0
3780
        cmp     [bMemForImageValidData], 0
3781
        jz      @f
3781
        jz      @f
3782
        cmp     esi, [cur_cursor_pos]
3782
        cmp     esi, [cur_cursor_pos]
3783
        jz      @f
3783
        jz      @f
3784
        cmp     esi, [old_cursor_pos]
3784
        cmp     esi, [old_cursor_pos]
3785
        jz      @f
3785
        jz      @f
3786
        cmp     bx, [eax*2+esi]
3786
        cmp     bx, [eax*2+esi]
3787
        jnz     @f
3787
        jnz     @f
3788
        inc     esi
3788
        inc     esi
3789
        inc     esi
3789
        inc     esi
3790
        jmp     .skip_symbol
3790
        jmp     .skip_symbol
3791
@@:
3791
@@:
3792
        mov     [eax*2+esi], bx
3792
        mov     [eax*2+esi], bx
3793
        cmp     ecx, [min_x]
3793
        cmp     ecx, [min_x]
3794
        ja      @f
3794
        ja      @f
3795
        mov     [min_x], ecx
3795
        mov     [min_x], ecx
3796
@@:
3796
@@:
3797
        cmp     ecx, [max_x]
3797
        cmp     ecx, [max_x]
3798
        jb      @f
3798
        jb      @f
3799
        mov     [max_x], ecx
3799
        mov     [max_x], ecx
3800
@@:
3800
@@:
3801
        mov     eax, [esp+4]
3801
        mov     eax, [esp+4]
3802
        mov     [min_y], eax
3802
        mov     [min_y], eax
3803
        cmp     eax, [max_y]
3803
        cmp     eax, [max_y]
3804
        jb      @f
3804
        jb      @f
3805
        mov     [max_y], eax
3805
        mov     [max_y], eax
3806
@@:
3806
@@:
3807
        push    edi
3807
        push    edi
3808
        xor     eax, eax
3808
        xor     eax, eax
3809
        mov     al, [esi+1]
3809
        mov     al, [esi+1]
3810
        and     al, 0xF
3810
        and     al, 0xF
3811
        mov     ebx, eax
3811
        mov     ebx, eax
3812
        mov     al, [esi+1]
3812
        mov     al, [esi+1]
3813
        shr     al, 4
3813
        shr     al, 4
3814
        mov     ebp, eax
3814
        mov     ebp, eax
3815
        sub     ebx, ebp
3815
        sub     ebx, ebp
3816
        lodsb
3816
        lodsb
3817
        inc     esi
3817
        inc     esi
3818
if font_width > 8
3818
if font_width > 8
3819
        lea     edx, [eax+eax+font]
3819
        lea     edx, [eax+eax+font]
3820
else
3820
else
3821
        lea     edx, [eax+font]
3821
        lea     edx, [eax+font]
3822
end if
3822
end if
3823
.sh:
3823
.sh:
3824
        mov     ecx, [edx]
3824
        mov     ecx, [edx]
3825
repeat font_width
3825
repeat font_width
3826
        shr     ecx, 1
3826
        shr     ecx, 1
3827
        sbb     eax, eax
3827
        sbb     eax, eax
3828
        and     eax, ebx
3828
        and     eax, ebx
3829
        add     eax, ebp
3829
        add     eax, ebp
3830
        mov     [edi+%-1], al
3830
        mov     [edi+%-1], al
3831
end repeat
3831
end repeat
3832
        mov     eax, [cur_width]
3832
        mov     eax, [cur_width]
3833
;        imul    eax, font_width
3833
;        imul    eax, font_width
3834
;        add     edi, eax
3834
;        add     edi, eax
3835
if font_width = 6
3835
if font_width = 6
3836
        lea     eax, [eax*2+eax]
3836
        lea     eax, [eax*2+eax]
3837
        lea     edi, [edi+eax*2]
3837
        lea     edi, [edi+eax*2]
3838
else if font_width = 7
3838
else if font_width = 7
3839
        lea     edi, [edi+eax*8]
3839
        lea     edi, [edi+eax*8]
3840
        sub     edi, eax
3840
        sub     edi, eax
3841
else if font_width = 8
3841
else if font_width = 8
3842
        lea     edi, [edi+eax*8]
3842
        lea     edi, [edi+eax*8]
3843
else if font_width = 9
3843
else if font_width = 9
3844
        lea     edi, [edi+eax*8]
3844
        lea     edi, [edi+eax*8]
3845
        add     edi, eax
3845
        add     edi, eax
3846
else if font_width = 10
3846
else if font_width = 10
3847
        lea     eax, [eax*4+eax]
3847
        lea     eax, [eax*4+eax]
3848
        lea     edi, [edi+eax*2]
3848
        lea     edi, [edi+eax*2]
3849
else
3849
else
3850
Unknown font_width value!
3850
Unknown font_width value!
3851
end if
3851
end if
3852
if font_width > 8
3852
if font_width > 8
3853
        add     edx, 256*2
3853
        add     edx, 256*2
3854
        cmp     edx, font+256*2*font_height
3854
        cmp     edx, font+256*2*font_height
3855
else
3855
else
3856
        add     edx, 256
3856
        add     edx, 256
3857
        cmp     edx, font+256*font_height
3857
        cmp     edx, font+256*font_height
3858
end if
3858
end if
3859
        jb      .sh
3859
        jb      .sh
3860
        pop     edi
3860
        pop     edi
3861
.skip_symbol:
3861
.skip_symbol:
3862
        pop     ecx
3862
        pop     ecx
3863
        add     edi, font_width
3863
        add     edi, font_width
3864
        dec     ecx
3864
        dec     ecx
3865
        jnz     .lw
3865
        jnz     .lw
3866
        mov     eax, [cur_width]
3866
        mov     eax, [cur_width]
3867
        imul    eax, (font_height-1)*font_width
3867
        imul    eax, (font_height-1)*font_width
3868
        add     edi, eax
3868
        add     edi, eax
3869
        pop     ecx
3869
        pop     ecx
3870
        dec     ecx
3870
        dec     ecx
3871
        jnz     .lh
3871
        jnz     .lh
3872
; cursor
3872
; cursor
3873
        mov     eax, [cursor_y]
3873
        mov     eax, [cursor_y]
3874
        inc     eax
3874
        inc     eax
3875
        jz      .nocursor
3875
        jz      .nocursor
3876
        mul     [cur_width]
3876
        mul     [cur_width]
3877
        imul    eax, font_height*font_width
3877
        imul    eax, font_height*font_width
3878
        mov     edx, [cursor_x]
3878
        mov     edx, [cursor_x]
3879
        inc     edx
3879
        inc     edx
3880
        imul    edx, font_width
3880
        imul    edx, font_width
3881
        add     eax, edx
3881
        add     eax, edx
3882
        add     eax, [MemForImage]
3882
        add     eax, [MemForImage]
3883
        mov     edx, [cur_width]
3883
        mov     edx, [cur_width]
3884
        imul    edx, font_width
3884
        imul    edx, font_width
3885
        neg     edx
3885
        neg     edx
3886
        mov     ecx, [cursor_size]
3886
        mov     ecx, [cursor_size]
3887
.cursor_loop:
3887
.cursor_loop:
3888
        push    ecx
3888
        push    ecx
3889
        mov     ecx, font_width
3889
        mov     ecx, font_width
3890
        add     eax, edx
3890
        add     eax, edx
3891
        push    eax
3891
        push    eax
3892
@@:
3892
@@:
3893
;;        add     byte [eax-1], 0x10
3893
;;        add     byte [eax-1], 0x10
3894
        xor     byte [eax-1], 7
3894
        xor     byte [eax-1], 7
3895
        sub     eax, 1
3895
        sub     eax, 1
3896
        loop    @b
3896
        loop    @b
3897
        pop     eax
3897
        pop     eax
3898
        pop     ecx
3898
        pop     ecx
3899
        loop    .cursor_loop
3899
        loop    .cursor_loop
3900
.nocursor:
3900
.nocursor:
3901
        cmp     [min_y], -1
3901
        cmp     [min_y], -1
3902
        jz      .nodraw
3902
        jz      .nodraw
3903
        mov     ecx, [cur_width]
3903
        mov     ecx, [cur_width]
3904
        mov     ebx, [cur_height]
3904
        mov     ebx, [cur_height]
3905
        mov     eax, ebx
3905
        mov     eax, ebx
3906
        sub     ebx, [max_y]
3906
        sub     ebx, [max_y]
3907
        sub     eax, [min_y]
3907
        sub     eax, [min_y]
3908
        sub     eax, ebx
3908
        sub     eax, ebx
3909
        inc     eax
3909
        inc     eax
3910
        imul    ebp, eax, font_height
3910
        imul    ebp, eax, font_height
3911
        mov     edx, ecx
3911
        mov     edx, ecx
3912
        sub     edx, [max_x]
3912
        sub     edx, [max_x]
3913
        imul    edx, font_width
3913
        imul    edx, font_width
3914
        mov     eax, edx
3914
        mov     eax, edx
3915
        shl     edx, 16
3915
        shl     edx, 16
3916
        imul    dx, bx, font_height
3916
        imul    dx, bx, font_height
3917
        imul    ebx, [cur_width]
3917
        imul    ebx, [cur_width]
3918
        mov     ecx, [max_x]
3918
        mov     ecx, [max_x]
3919
        sub     ecx, [min_x]
3919
        sub     ecx, [min_x]
3920
        inc     ecx
3920
        inc     ecx
3921
        imul    ecx, font_width*10000h
3921
        imul    ecx, font_width*10000h
3922
        add     ecx, ebp
3922
        add     ecx, ebp
3923
        imul    ebx, font_width*font_height
3923
        imul    ebx, font_width*font_height
3924
        add     ebx, [MemForImage]
3924
        add     ebx, [MemForImage]
3925
        add     ebx, eax
3925
        add     ebx, eax
3926
        add     edx, [skinh]
3926
        add     edx, [skinh]
3927
        add     edx, 5*10000h
3927
        add     edx, 5*10000h
3928
        imul    esi, [cur_width], font_width
3928
        imul    esi, [cur_width], font_width
3929
        mov     ebp, ecx
3929
        mov     ebp, ecx
3930
        shr     ebp, 16
3930
        shr     ebp, 16
3931
        sub     esi, ebp
3931
        sub     esi, ebp
3932
        mov     ebp, esi
3932
        mov     ebp, esi
3933
        push    65
3933
        push    65
3934
        pop     eax
3934
        pop     eax
3935
        mov     edi, console_colors
3935
        mov     edi, console_colors
3936
        push    8
3936
        push    8
3937
        pop     esi
3937
        pop     esi
3938
        int     40h
3938
        int     40h
3939
.nodraw:
3939
.nodraw:
3940
        pop     ebp
3940
        pop     ebp
3941
        ret
3941
        ret
3942
 
3942
 
3943
get_console_ptr:
3943
get_console_ptr:
3944
; in: eax=x, edx=y
3944
; in: eax=x, edx=y
3945
; out: edi->console data
3945
; out: edi->console data
3946
        push    edx
3946
        push    edx
3947
        imul    edx, [cur_width]
3947
        imul    edx, [cur_width]
3948
        add     edx, eax
3948
        add     edx, eax
3949
        mov     edi, [console_data_ptr]
3949
        mov     edi, [console_data_ptr]
3950
        lea     edi, [edi + edx*2]
3950
        lea     edi, [edi + edx*2]
3951
        pop     edx
3951
        pop     edx
3952
        ret
3952
        ret
3953
 
3953
 
3954
draw_keybar:
3954
draw_keybar:
3955
        pushad
3955
        pushad
3956
        xor     eax, eax
3956
        xor     eax, eax
3957
        test    [ctrlstate], 3
3957
        test    [ctrlstate], 3
3958
        jz      @f
3958
        jz      @f
3959
        inc     eax
3959
        inc     eax
3960
@@:
3960
@@:
3961
        test    [ctrlstate], 0xC
3961
        test    [ctrlstate], 0xC
3962
        jz      @f
3962
        jz      @f
3963
        or      al, 2
3963
        or      al, 2
3964
@@:
3964
@@:
3965
        test    [ctrlstate], 0x30
3965
        test    [ctrlstate], 0x30
3966
        jz      @f
3966
        jz      @f
3967
        or      al, 4
3967
        or      al, 4
3968
@@:
3968
@@:
3969
        imul    eax, 6*12
3969
        imul    eax, 6*12
3970
        mov     esi, [active_screen_keybar]
3970
        mov     esi, [active_screen_keybar]
3971
        add     esi, eax
3971
        add     esi, eax
3972
        xor     ecx, ecx
3972
        xor     ecx, ecx
3973
        inc     ecx
3973
        inc     ecx
3974
        xor     eax, eax
3974
        xor     eax, eax
3975
        mov     edx, [cur_height]
3975
        mov     edx, [cur_height]
3976
        dec     edx
3976
        dec     edx
3977
        call    get_console_ptr
3977
        call    get_console_ptr
3978
        push    6
3978
        push    6
3979
        pop     ebx
3979
        pop     ebx
3980
        mov     eax, [cur_width]
3980
        mov     eax, [cur_width]
3981
        sub     eax, 11+9+3*2+6
3981
        sub     eax, 11+9+3*2+6
3982
        cmp     eax, 7*11
3982
        cmp     eax, 7*11
3983
        jl      @f
3983
        jl      @f
3984
        cdq
3984
        cdq
3985
        mov     bl, 11
3985
        mov     bl, 11
3986
        div     ebx
3986
        div     ebx
3987
        mov     ebx, eax
3987
        mov     ebx, eax
3988
@@:
3988
@@:
3989
        xor     edx, edx
3989
        xor     edx, edx
3990
.l:
3990
.l:
3991
        add     edx, 7
3991
        add     edx, 7
3992
        cmp     cl, 10
3992
        cmp     cl, 10
3993
        jb      @f
3993
        jb      @f
3994
        inc     edx
3994
        inc     edx
3995
@@:
3995
@@:
3996
        cmp     edx, [cur_width]
3996
        cmp     edx, [cur_width]
3997
        ja      .ret
3997
        ja      .ret
3998
        cmp     cl, 10
3998
        cmp     cl, 10
3999
        jae     .twodig
3999
        jae     .twodig
4000
        lea     eax, [ecx+'0']
4000
        lea     eax, [ecx+'0']
4001
        stosb
4001
        stosb
4002
        mov     al, [keybar_number_color]
4002
        mov     al, [keybar_number_color]
4003
        stosb
4003
        stosb
4004
        jmp     .cmn
4004
        jmp     .cmn
4005
.twodig:
4005
.twodig:
4006
        mov     al, cl
4006
        mov     al, cl
4007
        cbw
4007
        cbw
4008
        div     [_10]
4008
        div     [_10]
4009
        add     al, '0'
4009
        add     al, '0'
4010
        stosb
4010
        stosb
4011
        mov     al, [keybar_number_color]
4011
        mov     al, [keybar_number_color]
4012
        stosb
4012
        stosb
4013
        xchg    al, ah
4013
        xchg    al, ah
4014
        add     al, '0'
4014
        add     al, '0'
4015
        stosw
4015
        stosw
4016
.cmn:
4016
.cmn:
4017
        mov     ah, [keybar_name_color]
4017
        mov     ah, [keybar_name_color]
4018
        push    ecx
4018
        push    ecx
4019
        mov     cl, 6
4019
        mov     cl, 6
4020
@@:
4020
@@:
4021
        lodsb
4021
        lodsb
4022
        stosw
4022
        stosw
4023
        loop    @b
4023
        loop    @b
4024
        mov     al, ' '
4024
        mov     al, ' '
4025
        lea     ecx, [ebx-6]
4025
        lea     ecx, [ebx-6]
4026
        cmp     byte [esp], 12
4026
        cmp     byte [esp], 12
4027
        jz      .ret_pop
4027
        jz      .ret_pop
4028
        add     edx, ecx
4028
        add     edx, ecx
4029
        rep     stosw
4029
        rep     stosw
4030
        pop     ecx
4030
        pop     ecx
4031
        inc     edx
4031
        inc     edx
4032
        cmp     edx, [cur_width]
4032
        cmp     edx, [cur_width]
4033
        ja      .ret
4033
        ja      .ret
4034
        mov     ah, [keybar_bgr_color]
4034
        mov     ah, [keybar_bgr_color]
4035
        stosw
4035
        stosw
4036
        inc     ecx
4036
        inc     ecx
4037
        jmp     .l
4037
        jmp     .l
4038
.ret_pop:
4038
.ret_pop:
4039
        pop     ecx
4039
        pop     ecx
4040
.ret:
4040
.ret:
4041
        cmp     byte [edi-2], ' '
4041
        cmp     byte [edi-2], ' '
4042
        jnz     @f
4042
        jnz     @f
4043
        dec     edi
4043
        dec     edi
4044
        dec     edi
4044
        dec     edi
4045
@@:
4045
@@:
4046
        push    edi
4046
        push    edi
4047
        xor     eax, eax
4047
        xor     eax, eax
4048
        mov     edx, [cur_height]
4048
        mov     edx, [cur_height]
4049
        call    get_console_ptr
4049
        call    get_console_ptr
4050
        mov     ecx, edi
4050
        mov     ecx, edi
4051
        pop     edi
4051
        pop     edi
4052
        sub     ecx, edi
4052
        sub     ecx, edi
4053
        shr     ecx, 1
4053
        shr     ecx, 1
4054
        mov     al, ' '
4054
        mov     al, ' '
4055
        mov     ah, [keybar_name_color]
4055
        mov     ah, [keybar_name_color]
4056
        rep     stosw
4056
        rep     stosw
4057
.done:
4057
.done:
4058
        cmp     [bDisplayQuickSearch], 0
4058
        cmp     [bDisplayQuickSearch], 0
4059
        jz      @f
4059
        jz      @f
4060
        push    QuickSearchDlg
4060
        push    QuickSearchDlg
4061
        call    DrawDialogBox
4061
        call    DrawDialogBox
4062
@@:
4062
@@:
4063
        popad
4063
        popad
4064
        ret
4064
        ret
4065
 
4065
 
4066
draw_cmdbar:
4066
draw_cmdbar:
4067
        mov     esi, [active_panel]
4067
        mov     esi, [active_panel]
4068
        add     esi, panel1_dir - panel1_data
4068
        add     esi, panel1_dir - panel1_data
4069
        xor     eax, eax
4069
        xor     eax, eax
4070
        mov     edx, [cur_height]
4070
        mov     edx, [cur_height]
4071
        dec     edx
4071
        dec     edx
4072
        dec     edx
4072
        dec     edx
4073
        call    get_console_ptr
4073
        call    get_console_ptr
4074
        mov     ah, [cmdbar_prefix_color]
4074
        mov     ah, [cmdbar_prefix_color]
4075
        mov     ecx, [cur_width]
4075
        mov     ecx, [cur_width]
4076
        dec     ecx
4076
        dec     ecx
4077
@@:
4077
@@:
4078
        lodsb
4078
        lodsb
4079
        test    al, al
4079
        test    al, al
4080
        jz      @f
4080
        jz      @f
4081
        stosw
4081
        stosw
4082
        loop    @b
4082
        loop    @b
4083
@@:
4083
@@:
4084
        mov     al, '>'
4084
        mov     al, '>'
4085
        stosw
4085
        stosw
4086
        mov     al, ' '
4086
        mov     al, ' '
4087
        mov     ah, [cmdbar_normal_color]
4087
        mov     ah, [cmdbar_normal_color]
4088
        rep     stosw
4088
        rep     stosw
4089
        ret
4089
        ret
4090
 
4090
 
4091
draw_border:
4091
draw_border:
4092
        push    edi
4092
        push    edi
4093
        mov     al, 0xC9
4093
        mov     al, 0xC9
4094
        stosw
4094
        stosw
4095
        mov     al, 0xCD
4095
        mov     al, 0xCD
4096
        lea     ecx, [ebx-2]
4096
        lea     ecx, [ebx-2]
4097
        rep     stosw
4097
        rep     stosw
4098
        mov     al, 0xBB
4098
        mov     al, 0xBB
4099
        stosw
4099
        stosw
4100
        pop     edi
4100
        pop     edi
4101
        add     edi, [cur_width]
4101
        add     edi, [cur_width]
4102
        add     edi, [cur_width]
4102
        add     edi, [cur_width]
4103
        lea     ecx, [edx-2]
4103
        lea     ecx, [edx-2]
4104
.l:
4104
.l:
4105
        push    edi
4105
        push    edi
4106
        mov     al, 0xBA
4106
        mov     al, 0xBA
4107
        stosw
4107
        stosw
4108
        mov     al, 0x20
4108
        mov     al, 0x20
4109
        push    ecx
4109
        push    ecx
4110
        lea     ecx, [ebx-2]
4110
        lea     ecx, [ebx-2]
4111
        rep     stosw
4111
        rep     stosw
4112
        pop     ecx
4112
        pop     ecx
4113
        mov     al, 0xBA
4113
        mov     al, 0xBA
4114
        stosw
4114
        stosw
4115
        pop     edi
4115
        pop     edi
4116
        add     edi, [cur_width]
4116
        add     edi, [cur_width]
4117
        add     edi, [cur_width]
4117
        add     edi, [cur_width]
4118
        loop    .l
4118
        loop    .l
4119
        mov     al, 0xC8
4119
        mov     al, 0xC8
4120
        stosw
4120
        stosw
4121
        mov     al, 0xCD
4121
        mov     al, 0xCD
4122
        lea     ecx, [ebx-2]
4122
        lea     ecx, [ebx-2]
4123
        rep     stosw
4123
        rep     stosw
4124
        mov     al, 0xBC
4124
        mov     al, 0xBC
4125
        stosw
4125
        stosw
4126
        ret
4126
        ret
4127
 
4127
 
4128
calc_colwidths:
4128
calc_colwidths:
4129
; in: ebp->panel data
4129
; in: ebp->panel data
4130
        imul    esi, [ebp + panel1_colmode - panel1_data], PanelMode.size
4130
        imul    esi, [ebp + panel1_colmode - panel1_data], PanelMode.size
4131
        add     esi, colmodes
4131
        add     esi, colmodes
4132
        lodsd
4132
        lodsd
4133
        mov     ecx, eax
4133
        mov     ecx, eax
4134
        lea     edx, [ecx-1]
4134
        lea     edx, [ecx-1]
4135
        xor     ebx, ebx
4135
        xor     ebx, ebx
4136
        add     esi, PanelMode.ColumnWidths-4
4136
        add     esi, PanelMode.ColumnWidths-4
4137
        push    ecx esi
4137
        push    ecx esi
4138
        xor     eax, eax
4138
        xor     eax, eax
4139
.loop:
4139
.loop:
4140
        lodsb
4140
        lodsb
4141
        add     edx, eax
4141
        add     edx, eax
4142
        cmp     al, 1
4142
        cmp     al, 1
4143
        adc     ebx, 0
4143
        adc     ebx, 0
4144
        loop    .loop
4144
        loop    .loop
4145
        pop     esi ecx
4145
        pop     esi ecx
4146
        lea     edi, [ebp + panel1_colwidths - panel1_data]
4146
        lea     edi, [ebp + panel1_colwidths - panel1_data]
4147
        test    ebx, ebx
4147
        test    ebx, ebx
4148
        jz      .loop2
4148
        jz      .loop2
4149
        mov     eax, [ebp + panel1_width - panel1_data]
4149
        mov     eax, [ebp + panel1_width - panel1_data]
4150
        dec     eax
4150
        dec     eax
4151
        dec     eax
4151
        dec     eax
4152
        sub     eax, edx
4152
        sub     eax, edx
4153
        jae     @f
4153
        jae     @f
4154
        xor     eax, eax
4154
        xor     eax, eax
4155
@@:
4155
@@:
4156
        xor     edx, edx
4156
        xor     edx, edx
4157
        div     ebx
4157
        div     ebx
4158
        test    eax, eax
4158
        test    eax, eax
4159
        jnz     @f
4159
        jnz     @f
4160
        xor     edx, edx
4160
        xor     edx, edx
4161
        inc     eax
4161
        inc     eax
4162
@@:
4162
@@:
4163
        push    eax
4163
        push    eax
4164
.loop2:
4164
.loop2:
4165
        movzx   eax, byte [esi]
4165
        movzx   eax, byte [esi]
4166
        inc     esi
4166
        inc     esi
4167
        test    eax, eax
4167
        test    eax, eax
4168
        jnz     @f
4168
        jnz     @f
4169
        pop     eax
4169
        pop     eax
4170
        push    eax
4170
        push    eax
4171
        dec     ebx
4171
        dec     ebx
4172
        cmp     ebx, edx
4172
        cmp     ebx, edx
4173
        jae     @f
4173
        jae     @f
4174
        inc     eax
4174
        inc     eax
4175
@@:
4175
@@:
4176
        stosd
4176
        stosd
4177
        loop    .loop2
4177
        loop    .loop2
4178
        pop     eax
4178
        pop     eax
4179
        and     dword [edi], 0
4179
        and     dword [edi], 0
4180
        ret
4180
        ret
4181
 
4181
 
4182
GetPanelTitle_default:
4182
GetPanelTitle_default:
4183
        mov     edi, [esp+8]
4183
        mov     edi, [esp+8]
4184
        mov     ecx, 1024
4184
        mov     ecx, 1024
4185
        mov     esi, [esp+12]
4185
        mov     esi, [esp+12]
4186
        test    esi, esi
4186
        test    esi, esi
4187
        jz      .nohost
4187
        jz      .nohost
4188
        mov     edx, esi
4188
        mov     edx, esi
4189
@@:
4189
@@:
4190
        lodsb
4190
        lodsb
4191
        test    al, al
4191
        test    al, al
4192
        jz      @f
4192
        jz      @f
4193
        cmp     al, '/'
4193
        cmp     al, '/'
4194
        jnz     @b
4194
        jnz     @b
4195
        mov     edx, esi
4195
        mov     edx, esi
4196
        jmp     @b
4196
        jmp     @b
4197
@@:
4197
@@:
4198
        mov     esi, edx
4198
        mov     esi, edx
4199
@@:
4199
@@:
4200
        lodsb
4200
        lodsb
4201
        stosb
4201
        stosb
4202
        test    al, al
4202
        test    al, al
4203
        loopnz  @b
4203
        loopnz  @b
4204
        dec     edi
4204
        dec     edi
4205
        inc     ecx
4205
        inc     ecx
4206
.nohost:
4206
.nohost:
4207
        mov     esi, [esp+16]
4207
        mov     esi, [esp+16]
4208
        cmp     word [esi], '/'
4208
        cmp     word [esi], '/'
4209
        jz      .nodir
4209
        jz      .nodir
4210
@@:
4210
@@:
4211
        lodsb
4211
        lodsb
4212
        stosb
4212
        stosb
4213
        test    al, al
4213
        test    al, al
4214
        loopnz  @b
4214
        loopnz  @b
4215
        dec     edi
4215
        dec     edi
4216
.nodir:
4216
.nodir:
4217
        mov     byte [edi], 0
4217
        mov     byte [edi], 0
4218
        ret     10h
4218
        ret     10h
4219
 
4219
 
4220
draw_panel:
4220
draw_panel:
4221
        mov     eax, [ebp + panel1_left - panel1_data]
4221
        mov     eax, [ebp + panel1_left - panel1_data]
4222
        mov     edx, [ebp + panel1_top - panel1_data]
4222
        mov     edx, [ebp + panel1_top - panel1_data]
4223
        call    get_console_ptr
4223
        call    get_console_ptr
4224
; draw border
4224
; draw border
4225
        mov     ah, [panel_border_color]
4225
        mov     ah, [panel_border_color]
4226
        mov     ebx, [ebp + panel1_width - panel1_data]
4226
        mov     ebx, [ebp + panel1_width - panel1_data]
4227
        mov     edx, [ebp + panel1_height - panel1_data]
4227
        mov     edx, [ebp + panel1_height - panel1_data]
4228
        call    draw_border
4228
        call    draw_border
4229
        push    eax
4229
        push    eax
4230
        mov     eax, [ebp + panel1_left - panel1_data]
4230
        mov     eax, [ebp + panel1_left - panel1_data]
4231
        mov     edx, [ebp + panel1_top - panel1_data]
4231
        mov     edx, [ebp + panel1_top - panel1_data]
4232
        add     edx, [ebp + panel1_height - panel1_data]
4232
        add     edx, [ebp + panel1_height - panel1_data]
4233
        sub     edx, 3
4233
        sub     edx, 3
4234
        call    get_console_ptr
4234
        call    get_console_ptr
4235
        pop     eax
4235
        pop     eax
4236
        mov     al, 0xC7
4236
        mov     al, 0xC7
4237
        stosw
4237
        stosw
4238
        mov     al, 0xC4
4238
        mov     al, 0xC4
4239
        lea     ecx, [ebx-2]
4239
        lea     ecx, [ebx-2]
4240
        rep     stosw
4240
        rep     stosw
4241
        mov     al, 0xB6
4241
        mov     al, 0xB6
4242
        stosw
4242
        stosw
4243
 
4243
 
4244
        imul    esi, [ebp + panel1_colmode - panel1_data], PanelMode.size
4244
        imul    esi, [ebp + panel1_colmode - panel1_data], PanelMode.size
4245
        add     esi, colmodes
4245
        add     esi, colmodes
4246
        lodsd
4246
        lodsd
4247
        mov     ecx, eax        ; number of columns
4247
        mov     ecx, eax        ; number of columns
4248
        lea     ebx, [ebp + panel1_colwidths - panel1_data]
4248
        lea     ebx, [ebp + panel1_colwidths - panel1_data]
4249
        mov     eax, [ebp + panel1_left - panel1_data]
4249
        mov     eax, [ebp + panel1_left - panel1_data]
4250
        inc     eax
4250
        inc     eax
4251
        mov     [column_left], eax
4251
        mov     [column_left], eax
4252
        mov     eax, [ebp + panel1_top - panel1_data]
4252
        mov     eax, [ebp + panel1_top - panel1_data]
4253
        inc     eax
4253
        inc     eax
4254
        mov     [column_top], eax
4254
        mov     [column_top], eax
4255
        mov     eax, [ebp + panel1_height - panel1_data]
4255
        mov     eax, [ebp + panel1_height - panel1_data]
4256
        sub     eax, 4
4256
        sub     eax, 4
4257
        mov     [column_height], eax
4257
        mov     [column_height], eax
4258
        dec     eax
4258
        dec     eax
4259
        mov     [ebp + panel1_colsz - panel1_data], eax
4259
        mov     [ebp + panel1_colsz - panel1_data], eax
4260
        and     [ebp + panel1_colst - panel1_data], 0
4260
        and     [ebp + panel1_colst - panel1_data], 0
4261
        mov     eax, [ebp + panel1_start - panel1_data]
4261
        mov     eax, [ebp + panel1_start - panel1_data]
4262
        mov     [column_index], eax
4262
        mov     [column_index], eax
4263
        mov     [last_column_index], eax
4263
        mov     [last_column_index], eax
4264
.columns_loop:
4264
.columns_loop:
4265
        push    ecx
4265
        push    ecx
4266
        mov     eax, [ebx]
4266
        mov     eax, [ebx]
4267
        add     ebx, 4
4267
        add     ebx, 4
4268
        mov     [column_width], eax
4268
        mov     [column_width], eax
4269
        cmp     ecx, 1
4269
        cmp     ecx, 1
4270
        jz      .skip_right_border
4270
        jz      .skip_right_border
4271
        add     eax, [column_left]
4271
        add     eax, [column_left]
4272
        mov     edx, [ebp + panel1_top - panel1_data]
4272
        mov     edx, [ebp + panel1_top - panel1_data]
4273
        call    get_console_ptr
4273
        call    get_console_ptr
4274
        mov     ah, [panel_header_color]
4274
        mov     ah, [panel_header_color]
4275
        mov     al, 0xD1
4275
        mov     al, 0xD1
4276
        mov     [edi], ax
4276
        mov     [edi], ax
4277
        add     edi, [cur_width]
4277
        add     edi, [cur_width]
4278
        add     edi, [cur_width]
4278
        add     edi, [cur_width]
4279
        mov     ecx, [column_height]
4279
        mov     ecx, [column_height]
4280
        mov     al, 0xB3
4280
        mov     al, 0xB3
4281
@@:
4281
@@:
4282
        mov     [edi], ax
4282
        mov     [edi], ax
4283
        add     edi, [cur_width]
4283
        add     edi, [cur_width]
4284
        add     edi, [cur_width]
4284
        add     edi, [cur_width]
4285
        loop    @b
4285
        loop    @b
4286
        mov     al, 0xC1
4286
        mov     al, 0xC1
4287
        stosw
4287
        stosw
4288
.skip_right_border:
4288
.skip_right_border:
4289
        mov     eax, [column_left]
4289
        mov     eax, [column_left]
4290
        mov     edx, [column_top]
4290
        mov     edx, [column_top]
4291
        call    get_console_ptr
4291
        call    get_console_ptr
4292
; § £®«®¢®ª á⮫¡æ 
4292
; § £®«®¢®ª á⮫¡æ 
4293
        push    edi
4293
        push    edi
4294
        mov     edx, [esi]
4294
        mov     edx, [esi]
4295
        and     edx, 0xF
4295
        and     edx, 0xF
4296
        mov     edx, [column_headers+edx*4]
4296
        mov     edx, [column_headers+edx*4]
4297
        movzx   ecx, byte [edx]
4297
        movzx   ecx, byte [edx]
4298
        inc     edx
4298
        inc     edx
4299
        cmp     ecx, [column_width]
4299
        cmp     ecx, [column_width]
4300
        jb      @f
4300
        jb      @f
4301
        mov     ecx, [column_width]
4301
        mov     ecx, [column_width]
4302
@@:
4302
@@:
4303
        push    ecx
4303
        push    ecx
4304
        sub     ecx, [column_width]
4304
        sub     ecx, [column_width]
4305
        neg     ecx
4305
        neg     ecx
4306
        shr     ecx, 1
4306
        shr     ecx, 1
4307
        mov     al, ' '
4307
        mov     al, ' '
4308
        mov     ah, [column_header_color]
4308
        mov     ah, [column_header_color]
4309
        rep     stosw
4309
        rep     stosw
4310
        pop     ecx
4310
        pop     ecx
4311
        jecxz   .skipcopyhdr
4311
        jecxz   .skipcopyhdr
4312
        push    ecx
4312
        push    ecx
4313
@@:
4313
@@:
4314
        mov     al, [edx]
4314
        mov     al, [edx]
4315
        inc     edx
4315
        inc     edx
4316
        stosw
4316
        stosw
4317
        loop    @b
4317
        loop    @b
4318
        pop     ecx
4318
        pop     ecx
4319
.skipcopyhdr:
4319
.skipcopyhdr:
4320
        sub     ecx, [column_width]
4320
        sub     ecx, [column_width]
4321
        neg     ecx
4321
        neg     ecx
4322
        inc     ecx
4322
        inc     ecx
4323
        shr     ecx, 1
4323
        shr     ecx, 1
4324
        mov     al, ' '
4324
        mov     al, ' '
4325
        rep     stosw
4325
        rep     stosw
4326
        pop     edi
4326
        pop     edi
4327
        add     edi, [cur_width]
4327
        add     edi, [cur_width]
4328
        add     edi, [cur_width]
4328
        add     edi, [cur_width]
4329
; á ¬ á⮫¡¥æ
4329
; á ¬ á⮫¡¥æ
4330
        mov     eax, [esi]
4330
        mov     eax, [esi]
4331
        and     eax, 0xF
4331
        and     eax, 0xF
4332
        push    ebx esi
4332
        push    ebx esi
4333
        call    dword [draw_column_proc+eax*4]
4333
        call    dword [draw_column_proc+eax*4]
4334
        pop     esi ebx
4334
        pop     esi ebx
4335
        inc     esi
4335
        inc     esi
4336
        mov     eax, [column_width]
4336
        mov     eax, [column_width]
4337
        inc     eax
4337
        inc     eax
4338
        add     [column_left], eax
4338
        add     [column_left], eax
4339
        pop     ecx
4339
        pop     ecx
4340
        dec     ecx
4340
        dec     ecx
4341
        jnz     .columns_loop
4341
        jnz     .columns_loop
4342
; ‡ £®«®¢®ª ¯ ­¥«¨ (⥪ãé ï ¯ ¯ª )
4342
; ‡ £®«®¢®ª ¯ ­¥«¨ (⥪ãé ï ¯ ¯ª )
4343
        lea     esi, [ebp + panel1_dir - panel1_data]
4343
        lea     esi, [ebp + panel1_dir - panel1_data]
4344
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
4344
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
4345
        test    eax, eax
4345
        test    eax, eax
4346
        jz      .native
4346
        jz      .native
4347
        push    ebp
4347
        push    ebp
4348
        push    esi
4348
        push    esi
4349
        mov     esi, [ebp + panel1_parents - panel1_data]
4349
        mov     esi, [ebp + panel1_parents - panel1_data]
4350
        add     esi, [ebp + panel1_parents_sz - panel1_data]
4350
        add     esi, [ebp + panel1_parents_sz - panel1_data]
4351
@@:
4351
@@:
4352
        dec     esi
4352
        dec     esi
4353
        cmp     byte [esi-1], 0
4353
        cmp     byte [esi-1], 0
4354
        jnz     @b
4354
        jnz     @b
4355
        push    esi
4355
        push    esi
4356
        push    execdata
4356
        push    execdata
4357
        push    [ebp + panel1_hFile - panel1_data]
4357
        push    [ebp + panel1_hFile - panel1_data]
4358
        call    [eax+PluginInfo.GetPanelTitle]
4358
        call    [eax+PluginInfo.GetPanelTitle]
4359
        pop     ebp
4359
        pop     ebp
4360
        mov     esi, execdata
4360
        mov     esi, execdata
4361
.native:
4361
.native:
4362
        mov     edi, cur_header
4362
        mov     edi, cur_header
4363
        mov     ecx, [ebp + panel1_width - panel1_data]
4363
        mov     ecx, [ebp + panel1_width - panel1_data]
4364
        sub     ecx, 6
4364
        sub     ecx, 6
4365
        cmp     byte [esi], '/'
4365
        cmp     byte [esi], '/'
4366
        jnz     .copy_rest
4366
        jnz     .copy_rest
4367
        dec     ecx
4367
        dec     ecx
4368
        movsb
4368
        movsb
4369
@@:
4369
@@:
4370
        lodsb
4370
        lodsb
4371
        stosb
4371
        stosb
4372
        dec     ecx
4372
        dec     ecx
4373
        test    al, al
4373
        test    al, al
4374
        jz      .header_created
4374
        jz      .header_created
4375
        cmp     al, '/'
4375
        cmp     al, '/'
4376
        jnz     @b
4376
        jnz     @b
4377
.copy_rest:
4377
.copy_rest:
4378
        mov     edx, esi
4378
        mov     edx, esi
4379
@@:
4379
@@:
4380
        lodsb
4380
        lodsb
4381
        test    al, al
4381
        test    al, al
4382
        jnz     @b
4382
        jnz     @b
4383
        sub     esi, edx
4383
        sub     esi, edx
4384
        dec     esi
4384
        dec     esi
4385
        cmp     esi, ecx
4385
        cmp     esi, ecx
4386
        jbe     @f
4386
        jbe     @f
4387
        mov     word [edi], '..'
4387
        mov     word [edi], '..'
4388
        mov     byte [edi+2], '.'
4388
        mov     byte [edi+2], '.'
4389
        add     edi, 3
4389
        add     edi, 3
4390
        sub     ecx, 3
4390
        sub     ecx, 3
4391
        add     edx, esi
4391
        add     edx, esi
4392
        sub     edx, ecx
4392
        sub     edx, ecx
4393
@@:
4393
@@:
4394
        mov     esi, edx
4394
        mov     esi, edx
4395
@@:
4395
@@:
4396
        lodsb
4396
        lodsb
4397
        stosb
4397
        stosb
4398
        dec     ecx
4398
        dec     ecx
4399
        test    al, al
4399
        test    al, al
4400
        jnz     @b
4400
        jnz     @b
4401
.header_created:
4401
.header_created:
4402
        mov     edx, [ebp + panel1_top - panel1_data]
4402
        mov     edx, [ebp + panel1_top - panel1_data]
4403
        mov     eax, [ebp + panel1_left - panel1_data]
4403
        mov     eax, [ebp + panel1_left - panel1_data]
4404
        shr     ecx, 1
4404
        shr     ecx, 1
4405
        lea     eax, [eax+ecx+3]
4405
        lea     eax, [eax+ecx+3]
4406
        call    get_console_ptr
4406
        call    get_console_ptr
4407
        mov     ah, [panel_active_header_color]
4407
        mov     ah, [panel_active_header_color]
4408
        cmp     ebp, [active_panel]
4408
        cmp     ebp, [active_panel]
4409
        jz      @f
4409
        jz      @f
4410
        mov     ah, [panel_header_color]
4410
        mov     ah, [panel_header_color]
4411
@@:
4411
@@:
4412
        mov     al, ' '
4412
        mov     al, ' '
4413
        stosw
4413
        stosw
4414
        mov     esi, cur_header
4414
        mov     esi, cur_header
4415
@@:
4415
@@:
4416
        lodsb
4416
        lodsb
4417
        test    al, al
4417
        test    al, al
4418
        jz      @f
4418
        jz      @f
4419
        stosw
4419
        stosw
4420
        jmp     @b
4420
        jmp     @b
4421
@@:
4421
@@:
4422
        mov     al, ' '
4422
        mov     al, ' '
4423
        stosw
4423
        stosw
4424
        mov     edx, [ebp + panel1_top - panel1_data]
4424
        mov     edx, [ebp + panel1_top - panel1_data]
4425
        inc     edx
4425
        inc     edx
4426
        mov     eax, [ebp + panel1_left - panel1_data]
4426
        mov     eax, [ebp + panel1_left - panel1_data]
4427
        inc     eax
4427
        inc     eax
4428
        call    get_console_ptr
4428
        call    get_console_ptr
4429
        movzx   eax, [ebp + panel1_sortmode - panel1_data]
4429
        movzx   eax, [ebp + panel1_sortmode - panel1_data]
4430
        mov     al, [compare_names+eax]
4430
        mov     al, [compare_names+eax]
4431
        stosb
4431
        stosb
4432
        mov     eax, [ebp + panel1_selected_num - panel1_data]
4432
        mov     eax, [ebp + panel1_selected_num - panel1_data]
4433
        test    eax, eax
4433
        test    eax, eax
4434
        jz      .skip_selected_info
4434
        jz      .skip_selected_info
4435
; ˆ­ä®à¬ æ¨ï ® ¢ë¤¥«¥­­ëå ä ©« å
4435
; ˆ­ä®à¬ æ¨ï ® ¢ë¤¥«¥­­ëå ä ©« å
4436
        push    dword [ebp + panel1_selected_size+4 - panel1_data]
4436
        push    dword [ebp + panel1_selected_size+4 - panel1_data]
4437
        push    dword [ebp + panel1_selected_size - panel1_data]
4437
        push    dword [ebp + panel1_selected_size - panel1_data]
4438
        call    fill_total_info
4438
        call    fill_total_info
4439
        mov     eax, [ebp + panel1_width - panel1_data]
4439
        mov     eax, [ebp + panel1_width - panel1_data]
4440
        sub     eax, 2
4440
        sub     eax, 2
4441
        cmp     ecx, eax
4441
        cmp     ecx, eax
4442
        jbe     @f
4442
        jbe     @f
4443
        mov     ecx, eax
4443
        mov     ecx, eax
4444
        mov     edi, saved_file_name+512
4444
        mov     edi, saved_file_name+512
4445
        sub     edi, eax
4445
        sub     edi, eax
4446
        mov     byte [edi], '.'
4446
        mov     byte [edi], '.'
4447
        mov     word [edi+1], '..'
4447
        mov     word [edi+1], '..'
4448
@@:
4448
@@:
4449
        mov     esi, edi
4449
        mov     esi, edi
4450
        sub     eax, ecx
4450
        sub     eax, ecx
4451
        shr     eax, 1
4451
        shr     eax, 1
4452
        inc     eax
4452
        inc     eax
4453
        add     eax, [ebp + panel1_left - panel1_data]
4453
        add     eax, [ebp + panel1_left - panel1_data]
4454
        mov     edx, [ebp + panel1_top - panel1_data]
4454
        mov     edx, [ebp + panel1_top - panel1_data]
4455
        add     edx, [ebp + panel1_height - panel1_data]
4455
        add     edx, [ebp + panel1_height - panel1_data]
4456
        sub     edx, 3
4456
        sub     edx, 3
4457
        call    get_console_ptr
4457
        call    get_console_ptr
4458
        mov     ah, [panel_numselected_color]
4458
        mov     ah, [panel_numselected_color]
4459
@@:
4459
@@:
4460
        lodsb
4460
        lodsb
4461
        stosw
4461
        stosw
4462
        loop    @b
4462
        loop    @b
4463
.skip_selected_info:
4463
.skip_selected_info:
4464
; ˆ­ä®à¬ æ¨ï ®¡ ®¡é¥¬ ç¨á«¥ ¨ à §¬¥à¥ ä ©«®¢ ¯ ­¥«¨
4464
; ˆ­ä®à¬ æ¨ï ®¡ ®¡é¥¬ ç¨á«¥ ¨ à §¬¥à¥ ä ©«®¢ ¯ ­¥«¨
4465
        mov     eax, [ebp + panel1_total_num - panel1_data]
4465
        mov     eax, [ebp + panel1_total_num - panel1_data]
4466
        push    dword [ebp + panel1_total_size+4 - panel1_data]
4466
        push    dword [ebp + panel1_total_size+4 - panel1_data]
4467
        push    dword [ebp + panel1_total_size - panel1_data]
4467
        push    dword [ebp + panel1_total_size - panel1_data]
4468
        call    fill_total_info
4468
        call    fill_total_info
4469
        mov     eax, [ebp + panel1_width - panel1_data]
4469
        mov     eax, [ebp + panel1_width - panel1_data]
4470
        sub     eax, 2
4470
        sub     eax, 2
4471
        cmp     ecx, eax
4471
        cmp     ecx, eax
4472
        jbe     @f
4472
        jbe     @f
4473
        mov     ecx, eax
4473
        mov     ecx, eax
4474
        mov     byte [edi+ecx-3], '.'
4474
        mov     byte [edi+ecx-3], '.'
4475
        mov     word [edi+ecx-2], '..'
4475
        mov     word [edi+ecx-2], '..'
4476
@@:
4476
@@:
4477
        sub     eax, ecx
4477
        sub     eax, ecx
4478
        shr     eax, 1
4478
        shr     eax, 1
4479
        inc     eax
4479
        inc     eax
4480
        add     eax, [ebp + panel1_left - panel1_data]
4480
        add     eax, [ebp + panel1_left - panel1_data]
4481
        add     edx, [ebp + panel1_top - panel1_data]
4481
        add     edx, [ebp + panel1_top - panel1_data]
4482
        add     edx, [ebp + panel1_height - panel1_data]
4482
        add     edx, [ebp + panel1_height - panel1_data]
4483
        dec     edx
4483
        dec     edx
4484
        mov     esi, edi
4484
        mov     esi, edi
4485
        call    get_console_ptr
4485
        call    get_console_ptr
4486
        mov     ah, [panel_number_color]
4486
        mov     ah, [panel_number_color]
4487
@@:
4487
@@:
4488
        lodsb
4488
        lodsb
4489
        stosw
4489
        stosw
4490
        loop    @b
4490
        loop    @b
4491
        cmp     [ebp + panel1_numfiles - panel1_data], 0
4491
        cmp     [ebp + panel1_numfiles - panel1_data], 0
4492
        jz      .skip_curinfo
4492
        jz      .skip_curinfo
4493
; ˆ­ä®à¬ æ¨ï ® ⥪ã饬 ä ©«¥
4493
; ˆ­ä®à¬ æ¨ï ® ⥪ã饬 ä ©«¥
4494
        mov     ebx, [ebp + panel1_index - panel1_data]
4494
        mov     ebx, [ebp + panel1_index - panel1_data]
4495
        mov     eax, [ebp + panel1_files - panel1_data]
4495
        mov     eax, [ebp + panel1_files - panel1_data]
4496
        mov     ebx, [eax+ebx*4]
4496
        mov     ebx, [eax+ebx*4]
4497
        mov     eax, [ebp + panel1_left - panel1_data]
4497
        mov     eax, [ebp + panel1_left - panel1_data]
4498
        add     eax, [ebp + panel1_width - panel1_data]
4498
        add     eax, [ebp + panel1_width - panel1_data]
4499
        dec     eax
4499
        dec     eax
4500
        mov     edx, [ebp + panel1_top - panel1_data]
4500
        mov     edx, [ebp + panel1_top - panel1_data]
4501
        add     edx, [ebp + panel1_height - panel1_data]
4501
        add     edx, [ebp + panel1_height - panel1_data]
4502
        dec     edx
4502
        dec     edx
4503
        dec     edx
4503
        dec     edx
4504
        call    get_console_ptr
4504
        call    get_console_ptr
4505
        mov     ecx, [ebp + panel1_width - panel1_data]
4505
        mov     ecx, [ebp + panel1_width - panel1_data]
4506
        dec     ecx
4506
        dec     ecx
4507
        dec     ecx
4507
        dec     ecx
4508
        cmp     [ebp + panel1_colmode - panel1_data], 3
4508
        cmp     [ebp + panel1_colmode - panel1_data], 3
4509
        jz      .show_curname
4509
        jz      .show_curname
4510
; ‚à¥¬ï ¬®¤¨ä¨ª æ¨¨
4510
; ‚à¥¬ï ¬®¤¨ä¨ª æ¨¨
4511
        sub     edi, 5*2
4511
        sub     edi, 5*2
4512
        sub     ecx, 6
4512
        sub     ecx, 6
4513
        mov     al, [ebx+24+2]
4513
        mov     al, [ebx+24+2]
4514
        aam
4514
        aam
4515
        or      ax, 0x3030
4515
        or      ax, 0x3030
4516
        mov     [edi], ah
4516
        mov     [edi], ah
4517
        mov     [edi+2], al
4517
        mov     [edi+2], al
4518
        mov     [edi+4], byte ':'
4518
        mov     [edi+4], byte ':'
4519
        mov     al, [ebx+24+1]
4519
        mov     al, [ebx+24+1]
4520
        aam
4520
        aam
4521
        or      ax, 0x3030
4521
        or      ax, 0x3030
4522
        mov     [edi+6], ah
4522
        mov     [edi+6], ah
4523
        mov     [edi+8], al
4523
        mov     [edi+8], al
4524
        mov     al, [panel_normal_color]
4524
        mov     al, [panel_normal_color]
4525
        mov     [edi+1], al
4525
        mov     [edi+1], al
4526
        mov     [edi+3], al
4526
        mov     [edi+3], al
4527
        mov     [edi+5], al
4527
        mov     [edi+5], al
4528
        mov     [edi+7], al
4528
        mov     [edi+7], al
4529
        mov     [edi+9], al
4529
        mov     [edi+9], al
4530
        dec     edi
4530
        dec     edi
4531
        mov     [edi], al
4531
        mov     [edi], al
4532
        dec     edi
4532
        dec     edi
4533
        mov     byte [edi], ' '
4533
        mov     byte [edi], ' '
4534
; „ â  ¬®¤¨ä¨ª æ¨¨
4534
; „ â  ¬®¤¨ä¨ª æ¨¨
4535
        sub     edi, 8*2
4535
        sub     edi, 8*2
4536
        sub     ecx, 9
4536
        sub     ecx, 9
4537
        mov     al, [ebx+28+0]
4537
        mov     al, [ebx+28+0]
4538
        aam
4538
        aam
4539
        or      ax, 0x3030
4539
        or      ax, 0x3030
4540
        mov     [edi], ah
4540
        mov     [edi], ah
4541
        mov     [edi+2], al
4541
        mov     [edi+2], al
4542
        mov     [edi+4], byte '.'
4542
        mov     [edi+4], byte '.'
4543
        mov     al, [ebx+28+1]
4543
        mov     al, [ebx+28+1]
4544
        aam
4544
        aam
4545
        or      ax, 0x3030
4545
        or      ax, 0x3030
4546
        mov     [edi+6], ah
4546
        mov     [edi+6], ah
4547
        mov     [edi+8], al
4547
        mov     [edi+8], al
4548
        mov     [edi+10], byte '.'
4548
        mov     [edi+10], byte '.'
4549
        mov     ax, [ebx+28+2]
4549
        mov     ax, [ebx+28+2]
4550
        div     [_100]
4550
        div     [_100]
4551
        mov     al, ah
4551
        mov     al, ah
4552
        aam
4552
        aam
4553
        or      ax, 0x3030
4553
        or      ax, 0x3030
4554
        mov     [edi+12], ah
4554
        mov     [edi+12], ah
4555
        mov     [edi+14], al
4555
        mov     [edi+14], al
4556
        mov     al, [panel_normal_color]
4556
        mov     al, [panel_normal_color]
4557
        mov     [edi+1], al
4557
        mov     [edi+1], al
4558
        mov     [edi+3], al
4558
        mov     [edi+3], al
4559
        mov     [edi+5], al
4559
        mov     [edi+5], al
4560
        mov     [edi+7], al
4560
        mov     [edi+7], al
4561
        mov     [edi+9], al
4561
        mov     [edi+9], al
4562
        mov     [edi+11], al
4562
        mov     [edi+11], al
4563
        mov     [edi+13], al
4563
        mov     [edi+13], al
4564
        mov     [edi+15], al
4564
        mov     [edi+15], al
4565
        dec     edi
4565
        dec     edi
4566
        mov     [edi], al
4566
        mov     [edi], al
4567
        dec     edi
4567
        dec     edi
4568
        mov     [edi], byte ' '
4568
        mov     [edi], byte ' '
4569
;  §¬¥à
4569
;  §¬¥à
4570
        std
4570
        std
4571
        mov     ah, [panel_normal_color]
4571
        mov     ah, [panel_normal_color]
4572
        dec     edi
4572
        dec     edi
4573
        dec     edi
4573
        dec     edi
4574
        dec     ecx
4574
        dec     ecx
4575
        test    byte [ebx], 0x10
4575
        test    byte [ebx], 0x10
4576
        jz      .size_file
4576
        jz      .size_file
4577
        push    ecx
4577
        push    ecx
4578
        mov     esi, aFolder+aFolder.size-1
4578
        mov     esi, aFolder+aFolder.size-1
4579
        mov     ecx, aFolder.size
4579
        mov     ecx, aFolder.size
4580
        cmp     word [ebx+40], '..'
4580
        cmp     word [ebx+40], '..'
4581
        jnz     @f
4581
        jnz     @f
4582
        cmp     byte [ebx+42], 0
4582
        cmp     byte [ebx+42], 0
4583
        jnz     @f
4583
        jnz     @f
4584
        mov     esi, aUp+aUp.size-1
4584
        mov     esi, aUp+aUp.size-1
4585
        mov     cl, aUp.size
4585
        mov     cl, aUp.size
4586
@@:
4586
@@:
4587
        sub     [esp], ecx
4587
        sub     [esp], ecx
4588
@@:
4588
@@:
4589
        lodsb
4589
        lodsb
4590
        stosw
4590
        stosw
4591
        loop    @b
4591
        loop    @b
4592
        pop     ecx
4592
        pop     ecx
4593
        jmp     .size_done
4593
        jmp     .size_done
4594
.size_file:
4594
.size_file:
4595
        mov     edx, [ebx+36]
4595
        mov     edx, [ebx+36]
4596
        test    edx, edx
4596
        test    edx, edx
4597
        jz      .size_less_4g
4597
        jz      .size_less_4g
4598
        cmp     edx, 10*256
4598
        cmp     edx, 10*256
4599
        jae     .size_tera
4599
        jae     .size_tera
4600
; ¢ £¨£ ¡ ©â å
4600
; ¢ £¨£ ¡ ©â å
4601
        mov     al, 'G'
4601
        mov     al, 'G'
4602
        shl     edx, 2
4602
        shl     edx, 2
4603
        jmp     .size_letter
4603
        jmp     .size_letter
4604
.size_tera:
4604
.size_tera:
4605
; ¢ â¥à ¡ ©â å
4605
; ¢ â¥à ¡ ©â å
4606
        shr     edx, 8
4606
        shr     edx, 8
4607
        mov     al, 'T'
4607
        mov     al, 'T'
4608
        jmp     .size_letter
4608
        jmp     .size_letter
4609
.size_less_4g:
4609
.size_less_4g:
4610
        mov     edx, [ebx+32]
4610
        mov     edx, [ebx+32]
4611
        cmp     edx, 10*(1 shl 20)
4611
        cmp     edx, 10*(1 shl 20)
4612
        jae     .size_mega
4612
        jae     .size_mega
4613
        cmp     edx, 1 shl 20
4613
        cmp     edx, 1 shl 20
4614
        jb      .size_num
4614
        jb      .size_num
4615
        shr     edx, 10
4615
        shr     edx, 10
4616
        mov     al, 'K'
4616
        mov     al, 'K'
4617
        jmp     .size_letter
4617
        jmp     .size_letter
4618
.size_mega:
4618
.size_mega:
4619
        mov     al, 'M'
4619
        mov     al, 'M'
4620
        shr     edx, 20
4620
        shr     edx, 20
4621
.size_letter:
4621
.size_letter:
4622
        stosw
4622
        stosw
4623
        dec     ecx
4623
        dec     ecx
4624
        mov     al, ' '
4624
        mov     al, ' '
4625
        stosw
4625
        stosw
4626
        dec     ecx
4626
        dec     ecx
4627
.size_num:
4627
.size_num:
4628
        xchg    eax, edx
4628
        xchg    eax, edx
4629
        xor     edx, edx
4629
        xor     edx, edx
4630
        div     [_10d]
4630
        div     [_10d]
4631
        xchg    eax, edx
4631
        xchg    eax, edx
4632
        add     al, '0'
4632
        add     al, '0'
4633
        mov     ah, [panel_normal_color]
4633
        mov     ah, [panel_normal_color]
4634
        stosw
4634
        stosw
4635
        dec     ecx
4635
        dec     ecx
4636
        test    edx, edx
4636
        test    edx, edx
4637
        jnz     .size_num
4637
        jnz     .size_num
4638
.size_done:
4638
.size_done:
4639
        cld
4639
        cld
4640
.show_curname:
4640
.show_curname:
4641
; ˆ¬ï
4641
; ˆ¬ï
4642
        sub     edi, ecx
4642
        sub     edi, ecx
4643
        sub     edi, ecx
4643
        sub     edi, ecx
4644
        lea     esi, [ebx+40]
4644
        lea     esi, [ebx+40]
4645
@@:
4645
@@:
4646
        lodsb
4646
        lodsb
4647
        test    al, al
4647
        test    al, al
4648
        jnz     @b
4648
        jnz     @b
4649
        sub     esi, ebx
4649
        sub     esi, ebx
4650
        sub     esi, 41
4650
        sub     esi, 41
4651
        mov     ah, [panel_normal_color]
4651
        mov     ah, [panel_normal_color]
4652
        cmp     esi, ecx
4652
        cmp     esi, ecx
4653
        lea     edx, [ebx+40]
4653
        lea     edx, [ebx+40]
4654
        jbe     @f
4654
        jbe     @f
4655
        mov     al, '{'
4655
        mov     al, '{'
4656
        mov     [edi-2], ax
4656
        mov     [edi-2], ax
4657
        add     edx, esi
4657
        add     edx, esi
4658
        sub     edx, ecx
4658
        sub     edx, ecx
4659
@@:
4659
@@:
4660
        mov     esi, edx
4660
        mov     esi, edx
4661
@@:
4661
@@:
4662
        lodsb
4662
        lodsb
4663
        test    al, al
4663
        test    al, al
4664
        jz      @f
4664
        jz      @f
4665
        stosw
4665
        stosw
4666
        loop    @b
4666
        loop    @b
4667
@@:
4667
@@:
4668
        mov     al, ' '
4668
        mov     al, ' '
4669
        rep     stosw
4669
        rep     stosw
4670
.skip_curinfo:
4670
.skip_curinfo:
4671
        call    draw_image
4671
        call    draw_image
4672
        ret
4672
        ret
4673
 
4673
 
4674
fill_total_info:
4674
fill_total_info:
4675
        mov     edi, saved_file_name+511
4675
        mov     edi, saved_file_name+511
4676
        mov     byte [edi], ' '
4676
        mov     byte [edi], ' '
4677
if lang eq ru
4677
if lang eq ru
4678
        mov     byte [edi-1], '¥'
4678
        mov     byte [edi-1], '¥'
4679
        dec     edi
4679
        dec     edi
4680
        cmp     eax, 1
4680
        cmp     eax, 1
4681
        jz      @f
4681
        jz      @f
4682
        mov     word [edi-1], ' å'
4682
        mov     word [edi-1], ' å'
4683
        dec     edi
4683
        dec     edi
4684
@@:
4684
@@:
4685
        mov     dword [edi-4], 'ä ©«'
4685
        mov     dword [edi-4], 'ä ©«'
4686
        mov     byte [edi-5], ' '
4686
        mov     byte [edi-5], ' '
4687
        sub     edi, 5
4687
        sub     edi, 5
4688
else
4688
else
4689
        cmp     eax, 1
4689
        cmp     eax, 1
4690
        jz      @f
4690
        jz      @f
4691
        dec     edi
4691
        dec     edi
4692
        mov     byte [edi], 's'
4692
        mov     byte [edi], 's'
4693
@@:
4693
@@:
4694
        mov     dword [edi-4], 'file'
4694
        mov     dword [edi-4], 'file'
4695
        mov     byte [edi-5], ' '
4695
        mov     byte [edi-5], ' '
4696
        sub     edi, 5
4696
        sub     edi, 5
4697
end if
4697
end if
4698
        xor     edx, edx
4698
        xor     edx, edx
4699
        push    10
4699
        push    10
4700
        pop     ecx
4700
        pop     ecx
4701
@@:
4701
@@:
4702
        div     ecx
4702
        div     ecx
4703
        dec     edi
4703
        dec     edi
4704
        add     dl, '0'
4704
        add     dl, '0'
4705
        mov     [edi], dl
4705
        mov     [edi], dl
4706
        xor     edx, edx
4706
        xor     edx, edx
4707
        test    eax, eax
4707
        test    eax, eax
4708
        jnz     @b
4708
        jnz     @b
4709
if lang eq ru
4709
if lang eq ru
4710
        mov     dword [edi-4], 'â ¢ '
4710
        mov     dword [edi-4], 'â ¢ '
4711
        mov     dword [edi-8], ' ¡ ©'
4711
        mov     dword [edi-8], ' ¡ ©'
4712
        sub     edi, 8
4712
        sub     edi, 8
4713
else
4713
else
4714
        mov     dword [edi-4], ' in '
4714
        mov     dword [edi-4], ' in '
4715
        mov     dword [edi-8], 'ytes'
4715
        mov     dword [edi-8], 'ytes'
4716
        mov     word [edi-10], ' b'
4716
        mov     word [edi-10], ' b'
4717
        sub     edi, 10
4717
        sub     edi, 10
4718
end if
4718
end if
4719
        lea     esi, [edi-3]
4719
        lea     esi, [edi-3]
4720
        mov     edx, [esp+8]
4720
        mov     edx, [esp+8]
4721
        mov     eax, [esp+4]
4721
        mov     eax, [esp+4]
4722
.selsizel:
4722
.selsizel:
4723
        push    edx
4723
        push    edx
4724
        mov     ebx, edx
4724
        mov     ebx, edx
4725
        xor     edx, edx
4725
        xor     edx, edx
4726
        add     ebx, ebx
4726
        add     ebx, ebx
4727
        adc     edx, edx
4727
        adc     edx, edx
4728
        push    ebx
4728
        push    ebx
4729
        push    edx
4729
        push    edx
4730
        add     ebx, ebx
4730
        add     ebx, ebx
4731
        adc     edx, edx
4731
        adc     edx, edx
4732
        add     ebx, [esp+4]
4732
        add     ebx, [esp+4]
4733
        adc     edx, [esp]
4733
        adc     edx, [esp]
4734
        add     esp, 8
4734
        add     esp, 8
4735
        add     eax, ebx
4735
        add     eax, ebx
4736
        adc     edx, 0
4736
        adc     edx, 0
4737
        div     ecx
4737
        div     ecx
4738
        dec     edi
4738
        dec     edi
4739
        cmp     edi, esi
4739
        cmp     edi, esi
4740
        jae     @f
4740
        jae     @f
4741
        mov     byte [edi], ','
4741
        mov     byte [edi], ','
4742
        dec     edi
4742
        dec     edi
4743
        sub     esi, 4
4743
        sub     esi, 4
4744
@@:
4744
@@:
4745
        pop     ebx
4745
        pop     ebx
4746
        add     dl, '0'
4746
        add     dl, '0'
4747
        mov     byte [edi], dl
4747
        mov     byte [edi], dl
4748
        xchg    eax, ebx
4748
        xchg    eax, ebx
4749
        mul     [muldiv10]
4749
        mul     [muldiv10]
4750
        add     eax, ebx
4750
        add     eax, ebx
4751
        adc     edx, 0
4751
        adc     edx, 0
4752
        mov     ebx, eax
4752
        mov     ebx, eax
4753
        or      ebx, edx
4753
        or      ebx, edx
4754
        jnz     .selsizel
4754
        jnz     .selsizel
4755
        dec     edi
4755
        dec     edi
4756
        mov     byte [edi], ' '
4756
        mov     byte [edi], ' '
4757
        mov     ecx, saved_file_name+512
4757
        mov     ecx, saved_file_name+512
4758
        sub     ecx, edi
4758
        sub     ecx, edi
4759
        ret     8
4759
        ret     8
4760
 
4760
 
4761
get_file_color:
4761
get_file_color:
4762
        mov     ah, [esi + 6]
4762
        mov     ah, [esi + 6]
4763
        cmp     ebp, [active_panel]
4763
        cmp     ebp, [active_panel]
4764
        jnz     @f
4764
        jnz     @f
4765
        cmp     ecx, [ebp + panel1_index - panel1_data]
4765
        cmp     ecx, [ebp + panel1_index - panel1_data]
4766
        jnz     @f
4766
        jnz     @f
4767
        mov     ah, [esi + 7]
4767
        mov     ah, [esi + 7]
4768
@@:
4768
@@:
4769
        test    byte [esi + 303], 1
4769
        test    byte [esi + 303], 1
4770
        jnz     @f
4770
        jnz     @f
4771
        mov     ah, [esi + 4]
4771
        mov     ah, [esi + 4]
4772
        cmp     ebp, [active_panel]
4772
        cmp     ebp, [active_panel]
4773
        jnz     @f
4773
        jnz     @f
4774
        cmp     ecx, [ebp + panel1_index - panel1_data]
4774
        cmp     ecx, [ebp + panel1_index - panel1_data]
4775
        jnz     @f
4775
        jnz     @f
4776
        mov     ah, [esi + 5]
4776
        mov     ah, [esi + 5]
4777
@@:
4777
@@:
4778
        ret
4778
        ret
4779
 
4779
 
4780
draw_name_column:
4780
draw_name_column:
4781
        mov     eax, [column_index]
4781
        mov     eax, [column_index]
4782
        mov     [last_column_index], eax
4782
        mov     [last_column_index], eax
4783
        mov     edx, [ebp + panel1_numfiles - panel1_data]
4783
        mov     edx, [ebp + panel1_numfiles - panel1_data]
4784
        mov     ecx, [column_height]
4784
        mov     ecx, [column_height]
4785
        dec     ecx
4785
        dec     ecx
4786
.l:
4786
.l:
4787
        cmp     [column_index], edx
4787
        cmp     [column_index], edx
4788
        jae     .ret
4788
        jae     .ret
4789
        push    ecx
4789
        push    ecx
4790
        mov     ecx, [column_index]
4790
        mov     ecx, [column_index]
4791
        mov     esi, [ebp + panel1_files - panel1_data]
4791
        mov     esi, [ebp + panel1_files - panel1_data]
4792
        mov     esi, [esi+ecx*4]
4792
        mov     esi, [esi+ecx*4]
4793
        mov     ebx, [esi]
4793
        mov     ebx, [esi]
4794
        call    get_file_color
4794
        call    get_file_color
4795
        add     esi, 40
4795
        add     esi, 40
4796
        mov     ecx, [column_width]
4796
        mov     ecx, [column_width]
4797
        push    edi
4797
        push    edi
4798
@@:
4798
@@:
4799
        lodsb
4799
        lodsb
4800
        test    al, al
4800
        test    al, al
4801
        jz      @f
4801
        jz      @f
4802
        stosw
4802
        stosw
4803
        loop    @b
4803
        loop    @b
4804
        lodsb
4804
        lodsb
4805
        test    al, al
4805
        test    al, al
4806
        jz      @f
4806
        jz      @f
4807
        mov     byte [edi], '}'
4807
        mov     byte [edi], '}'
4808
        jmp     .continue
4808
        jmp     .continue
4809
@@:
4809
@@:
4810
        test    bl, 10h
4810
        test    bl, 10h
4811
        jnz     .noalignext
4811
        jnz     .noalignext
4812
        mov     ebx, [ebp + panel1_colmode - panel1_data]
4812
        mov     ebx, [ebp + panel1_colmode - panel1_data]
4813
; sizeof(PanelMode) = 40
4813
; sizeof(PanelMode) = 40
4814
        lea     ebx, [ebx+ebx*4]
4814
        lea     ebx, [ebx+ebx*4]
4815
        cmp     [colmodes+ebx*8+PanelMode.bAlignExtensions], 0
4815
        cmp     [colmodes+ebx*8+PanelMode.bAlignExtensions], 0
4816
        jz      .noalignext
4816
        jz      .noalignext
4817
        push    ecx
4817
        push    ecx
4818
        sub     ecx, [column_width]
4818
        sub     ecx, [column_width]
4819
        neg     ecx
4819
        neg     ecx
4820
        jz      .noalignext2
4820
        jz      .noalignext2
4821
        dec     esi
4821
        dec     esi
4822
@@:
4822
@@:
4823
        dec     esi
4823
        dec     esi
4824
        cmp     byte [esi], '.'
4824
        cmp     byte [esi], '.'
4825
        loopnz  @b
4825
        loopnz  @b
4826
        jnz     .noalignext2
4826
        jnz     .noalignext2
4827
        inc     esi
4827
        inc     esi
4828
        sub     ecx, [column_width]
4828
        sub     ecx, [column_width]
4829
        neg     ecx
4829
        neg     ecx
4830
        sub     ecx, [esp]
4830
        sub     ecx, [esp]
4831
        sub     edi, ecx
4831
        sub     edi, ecx
4832
        sub     edi, ecx
4832
        sub     edi, ecx
4833
        dec     ecx
4833
        dec     ecx
4834
        mov     ebx, [esp+4]
4834
        mov     ebx, [esp+4]
4835
        cmp     ecx, 3
4835
        cmp     ecx, 3
4836
        ja      @f
4836
        ja      @f
4837
        mov     cl, 3
4837
        mov     cl, 3
4838
@@:
4838
@@:
4839
        sub     ecx, [column_width]
4839
        sub     ecx, [column_width]
4840
        sub     ebx, edi
4840
        sub     ebx, edi
4841
        sar     ebx, 1
4841
        sar     ebx, 1
4842
        sub     ebx, ecx
4842
        sub     ebx, ecx
4843
        pop     ecx
4843
        pop     ecx
4844
        inc     ecx
4844
        inc     ecx
4845
        push    0
4845
        push    0
4846
        cmp     ecx, ebx
4846
        cmp     ecx, ebx
4847
        jbe     @f
4847
        jbe     @f
4848
        sub     ecx, ebx
4848
        sub     ecx, ebx
4849
        mov     [esp], ecx
4849
        mov     [esp], ecx
4850
        mov     ecx, ebx
4850
        mov     ecx, ebx
4851
@@:
4851
@@:
4852
        mov     al, ' '
4852
        mov     al, ' '
4853
        rep     stosw
4853
        rep     stosw
4854
@@:
4854
@@:
4855
        lodsb
4855
        lodsb
4856
        test    al, al
4856
        test    al, al
4857
        jz      .noalignext2
4857
        jz      .noalignext2
4858
        stosw
4858
        stosw
4859
        jmp     @b
4859
        jmp     @b
4860
.noalignext2:
4860
.noalignext2:
4861
        pop     ecx
4861
        pop     ecx
4862
.noalignext:
4862
.noalignext:
4863
        mov     al, ' '
4863
        mov     al, ' '
4864
        rep     stosw
4864
        rep     stosw
4865
.continue:
4865
.continue:
4866
        pop     edi
4866
        pop     edi
4867
        add     edi, [cur_width]
4867
        add     edi, [cur_width]
4868
        add     edi, [cur_width]
4868
        add     edi, [cur_width]
4869
        inc     [column_index]
4869
        inc     [column_index]
4870
        pop     ecx
4870
        pop     ecx
4871
        dec     ecx
4871
        dec     ecx
4872
        jnz     .l
4872
        jnz     .l
4873
.ret:
4873
.ret:
4874
        mov     eax, [ebp + panel1_colsz - panel1_data]
4874
        mov     eax, [ebp + panel1_colsz - panel1_data]
4875
        add     [ebp + panel1_colst - panel1_data], eax
4875
        add     [ebp + panel1_colst - panel1_data], eax
4876
        cmp     ebp, panel1_data
4876
        cmp     ebp, panel1_data
4877
        jnz     .ret2
4877
        jnz     .ret2
4878
; —¨á«® íªà ­®¢
4878
; —¨á«® íªà ­®¢
4879
; calculate number of viewer and editor screens
4879
; calculate number of viewer and editor screens
4880
        xor     ebx, ebx
4880
        xor     ebx, ebx
4881
        xor     edx, edx
4881
        xor     edx, edx
4882
        mov     ecx, [num_screens]
4882
        mov     ecx, [num_screens]
4883
        mov     esi, [screens]
4883
        mov     esi, [screens]
4884
.3:
4884
.3:
4885
        lodsd
4885
        lodsd
4886
        cmp     eax, viewer_vtable
4886
        cmp     eax, viewer_vtable
4887
        jnz     @f
4887
        jnz     @f
4888
        inc     ebx
4888
        inc     ebx
4889
@@:
4889
@@:
4890
        cmp     eax, editor_vtable
4890
        cmp     eax, editor_vtable
4891
        jnz     @f
4891
        jnz     @f
4892
        inc     edx
4892
        inc     edx
4893
@@:
4893
@@:
4894
        lodsd
4894
        lodsd
4895
        loop    .3
4895
        loop    .3
4896
        mov     eax, ebx
4896
        mov     eax, ebx
4897
        mov     esi, edx
4897
        mov     esi, edx
4898
        or      eax, edx
4898
        or      eax, edx
4899
        jz      .ret2
4899
        jz      .ret2
4900
        xor     eax, eax
4900
        xor     eax, eax
4901
        xor     edx, edx
4901
        xor     edx, edx
4902
        call    get_console_ptr
4902
        call    get_console_ptr
4903
        mov     al, '['
4903
        mov     al, '['
4904
        stosb
4904
        stosb
4905
        mov     al, [panel_nscreens_color]
4905
        mov     al, [panel_nscreens_color]
4906
        stosb
4906
        stosb
4907
        xchg    eax, ebx
4907
        xchg    eax, ebx
4908
.5:
4908
.5:
4909
        push    -'0'
4909
        push    -'0'
4910
@@:
4910
@@:
4911
        xor     edx, edx
4911
        xor     edx, edx
4912
        div     [_10d]
4912
        div     [_10d]
4913
        push    edx
4913
        push    edx
4914
        test    eax, eax
4914
        test    eax, eax
4915
        jnz     @b
4915
        jnz     @b
4916
@@:
4916
@@:
4917
        pop     eax
4917
        pop     eax
4918
        add     eax, '0'
4918
        add     eax, '0'
4919
        jz      @f
4919
        jz      @f
4920
        stosb
4920
        stosb
4921
        mov     al, bl
4921
        mov     al, bl
4922
        stosb
4922
        stosb
4923
        jmp     @b
4923
        jmp     @b
4924
@@:
4924
@@:
4925
        test    esi, esi
4925
        test    esi, esi
4926
        jz      .4
4926
        jz      .4
4927
        mov     al, '+'
4927
        mov     al, '+'
4928
        stosb
4928
        stosb
4929
        mov     al, bl
4929
        mov     al, bl
4930
        stosb
4930
        stosb
4931
        xor     eax, eax
4931
        xor     eax, eax
4932
        xchg    eax, esi
4932
        xchg    eax, esi
4933
        jmp     .5
4933
        jmp     .5
4934
.4:
4934
.4:
4935
        mov     al, ']'
4935
        mov     al, ']'
4936
        mov     ah, [panel_nscreens_color]
4936
        mov     ah, [panel_nscreens_color]
4937
        stosw
4937
        stosw
4938
.ret2:
4938
.ret2:
4939
draw_empty_column:
4939
draw_empty_column:
4940
        ret
4940
        ret
4941
 
4941
 
4942
draw_size_column:
4942
draw_size_column:
4943
        add     edi, [column_width]
4943
        add     edi, [column_width]
4944
        add     edi, [column_width]
4944
        add     edi, [column_width]
4945
        dec     edi
4945
        dec     edi
4946
        dec     edi
4946
        dec     edi
4947
        std
4947
        std
4948
        mov     ecx, [column_height]
4948
        mov     ecx, [column_height]
4949
        dec     ecx
4949
        dec     ecx
4950
        push    [last_column_index]
4950
        push    [last_column_index]
4951
.l:
4951
.l:
4952
        mov     edx, [ebp + panel1_numfiles - panel1_data]
4952
        mov     edx, [ebp + panel1_numfiles - panel1_data]
4953
        cmp     [last_column_index], edx
4953
        cmp     [last_column_index], edx
4954
        jae     .ret
4954
        jae     .ret
4955
        push    ecx
4955
        push    ecx
4956
        push    edi
4956
        push    edi
4957
        mov     ecx, [last_column_index]
4957
        mov     ecx, [last_column_index]
4958
        mov     esi, [ebp + panel1_files - panel1_data]
4958
        mov     esi, [ebp + panel1_files - panel1_data]
4959
        mov     esi, [esi+ecx*4]
4959
        mov     esi, [esi+ecx*4]
4960
        call    get_file_color
4960
        call    get_file_color
4961
        mov     ecx, [column_width]
4961
        mov     ecx, [column_width]
4962
@@:
4962
@@:
4963
        mov     ebx, eax
4963
        mov     ebx, eax
4964
        cmp     word [esi+40], '..'
4964
        cmp     word [esi+40], '..'
4965
        jnz     .nodotdot
4965
        jnz     .nodotdot
4966
        cmp     byte [esi+42], 0
4966
        cmp     byte [esi+42], 0
4967
        jnz     .nodotdot
4967
        jnz     .nodotdot
4968
if lang eq ru
4968
if lang eq ru
4969
        mov     al, 'å'
4969
        mov     al, 'å'
4970
        stosw
4970
        stosw
4971
        mov     al, 'à'
4971
        mov     al, 'à'
4972
        stosw
4972
        stosw
4973
        mov     al, '¥'
4973
        mov     al, '¥'
4974
        stosw
4974
        stosw
4975
        mov     al, '¢'
4975
        mov     al, '¢'
4976
        stosw
4976
        stosw
4977
        mov     al, '‚'
4977
        mov     al, '‚'
4978
        stosw
4978
        stosw
4979
        sub     ecx, 5
4979
        sub     ecx, 5
4980
else
4980
else
4981
        mov     al, ' '
4981
        mov     al, ' '
4982
        stosw
4982
        stosw
4983
        stosw
4983
        stosw
4984
        mov     al, 'p'
4984
        mov     al, 'p'
4985
        stosw
4985
        stosw
4986
        mov     al, 'U'
4986
        mov     al, 'U'
4987
        stosw
4987
        stosw
4988
        sub     ecx, 4
4988
        sub     ecx, 4
4989
end if
4989
end if
4990
        jmp     .size_written
4990
        jmp     .size_written
4991
.nodotdot:
4991
.nodotdot:
4992
        test    byte [esi], 10h
4992
        test    byte [esi], 10h
4993
        jz      .nofolder
4993
        jz      .nofolder
4994
if lang eq ru
4994
if lang eq ru
4995
        mov     al, ' '
4995
        mov     al, ' '
4996
        stosw
4996
        stosw
4997
        mov     al, 'ª'
4997
        mov     al, 'ª'
4998
        stosw
4998
        stosw
4999
        mov     al, '¯'
4999
        mov     al, '¯'
5000
        stosw
5000
        stosw
5001
        mov     al, ' '
5001
        mov     al, ' '
5002
        stosw
5002
        stosw
5003
        mov     al, ''
5003
        mov     al, ''
5004
        stosw
5004
        stosw
5005
        sub     ecx, 5
5005
        sub     ecx, 5
5006
else
5006
else
5007
        mov     al, 'r'
5007
        mov     al, 'r'
5008
        stosw
5008
        stosw
5009
        mov     al, 'e'
5009
        mov     al, 'e'
5010
        stosw
5010
        stosw
5011
        mov     al, 'd'
5011
        mov     al, 'd'
5012
        stosw
5012
        stosw
5013
        mov     al, 'l'
5013
        mov     al, 'l'
5014
        stosw
5014
        stosw
5015
        mov     al, 'o'
5015
        mov     al, 'o'
5016
        stosw
5016
        stosw
5017
        mov     al, 'F'
5017
        mov     al, 'F'
5018
        stosw
5018
        stosw
5019
        sub     ecx, 6
5019
        sub     ecx, 6
5020
end if
5020
end if
5021
        jmp     .size_written
5021
        jmp     .size_written
5022
.nofolder:
5022
.nofolder:
5023
        mov     eax, [esi+32]
5023
        mov     eax, [esi+32]
5024
        mov     edx, [esi+36]
5024
        mov     edx, [esi+36]
5025
        test    edx, edx
5025
        test    edx, edx
5026
        jz      .less_4G
5026
        jz      .less_4G
5027
        cmp     edx, 10000/4*1024
5027
        cmp     edx, 10000/4*1024
5028
        jb      .giga
5028
        jb      .giga
5029
        mov     al, 'T'
5029
        mov     al, 'T'
5030
        shr     edx, 10
5030
        shr     edx, 10
5031
        jmp     .write_letter
5031
        jmp     .write_letter
5032
.giga:
5032
.giga:
5033
        mov     al, 'G'
5033
        mov     al, 'G'
5034
        shl     edx, 2
5034
        shl     edx, 2
5035
        jmp     .write_letter
5035
        jmp     .write_letter
5036
.less_4G:
5036
.less_4G:
5037
        mov     edx, eax
5037
        mov     edx, eax
5038
        cmp     eax, 1000000
5038
        cmp     eax, 1000000
5039
        jb      .byte
5039
        jb      .byte
5040
        cmp     eax, 10000*1024
5040
        cmp     eax, 10000*1024
5041
        jb      .kilo
5041
        jb      .kilo
5042
        mov     al, 'M'
5042
        mov     al, 'M'
5043
        shr     edx, 20
5043
        shr     edx, 20
5044
        jmp     .write_letter
5044
        jmp     .write_letter
5045
.kilo:
5045
.kilo:
5046
        mov     al, 'K'
5046
        mov     al, 'K'
5047
        shr     edx, 10
5047
        shr     edx, 10
5048
.write_letter:
5048
.write_letter:
5049
        mov     ah, bh
5049
        mov     ah, bh
5050
        stosw
5050
        stosw
5051
        mov     al, ' '
5051
        mov     al, ' '
5052
        stosw
5052
        stosw
5053
        dec     ecx
5053
        dec     ecx
5054
        dec     ecx
5054
        dec     ecx
5055
.byte:
5055
.byte:
5056
        xchg    eax, edx
5056
        xchg    eax, edx
5057
        xor     edx, edx
5057
        xor     edx, edx
5058
        div     [_10d]
5058
        div     [_10d]
5059
        xchg    eax, edx
5059
        xchg    eax, edx
5060
        add     al, '0'
5060
        add     al, '0'
5061
        mov     ah, bh
5061
        mov     ah, bh
5062
        stosw
5062
        stosw
5063
        dec     ecx
5063
        dec     ecx
5064
        test    edx, edx
5064
        test    edx, edx
5065
        jnz     .byte
5065
        jnz     .byte
5066
.size_written:
5066
.size_written:
5067
        mov     eax, ebx
5067
        mov     eax, ebx
5068
        test    ecx, ecx
5068
        test    ecx, ecx
5069
        jle     @f
5069
        jle     @f
5070
        mov     al, ' '
5070
        mov     al, ' '
5071
        rep     stosw
5071
        rep     stosw
5072
@@:
5072
@@:
5073
        mov     byte [edi+1], ah
5073
        mov     byte [edi+1], ah
5074
        pop     edi
5074
        pop     edi
5075
        add     edi, [cur_width]
5075
        add     edi, [cur_width]
5076
        add     edi, [cur_width]
5076
        add     edi, [cur_width]
5077
        inc     [last_column_index]
5077
        inc     [last_column_index]
5078
        pop     ecx
5078
        pop     ecx
5079
        dec     ecx
5079
        dec     ecx
5080
        jnz     .l
5080
        jnz     .l
5081
.ret:
5081
.ret:
5082
        pop     [last_column_index]
5082
        pop     [last_column_index]
5083
        cld
5083
        cld
5084
        ret
5084
        ret
5085
 
5085
 
5086
draw_date_column:
5086
draw_date_column:
5087
        mov     ecx, [column_height]
5087
        mov     ecx, [column_height]
5088
        dec     ecx
5088
        dec     ecx
5089
        push    [last_column_index]
5089
        push    [last_column_index]
5090
.l:
5090
.l:
5091
        mov     edx, [ebp + panel1_numfiles - panel1_data]
5091
        mov     edx, [ebp + panel1_numfiles - panel1_data]
5092
        cmp     [last_column_index], edx
5092
        cmp     [last_column_index], edx
5093
        jae     .ret
5093
        jae     .ret
5094
        push    ecx
5094
        push    ecx
5095
        push    edi
5095
        push    edi
5096
        mov     ecx, [last_column_index]
5096
        mov     ecx, [last_column_index]
5097
        mov     esi, [ebp + panel1_files - panel1_data]
5097
        mov     esi, [ebp + panel1_files - panel1_data]
5098
        mov     esi, [esi+ecx*4]
5098
        mov     esi, [esi+ecx*4]
5099
        call    get_file_color
5099
        call    get_file_color
5100
        mov     bh, ah
5100
        mov     bh, ah
5101
        mov     byte [edi-1], bh
5101
        mov     byte [edi-1], bh
5102
        mov     al, [esi+28]
5102
        mov     al, [esi+28]
5103
        aam
5103
        aam
5104
        add     eax, '00'
5104
        add     eax, '00'
5105
        push    eax
5105
        push    eax
5106
        mov     al, ah
5106
        mov     al, ah
5107
        mov     ah, bh
5107
        mov     ah, bh
5108
        stosw
5108
        stosw
5109
        pop     eax
5109
        pop     eax
5110
        mov     ah, bh
5110
        mov     ah, bh
5111
        stosw
5111
        stosw
5112
        mov     al, '.'
5112
        mov     al, '.'
5113
        stosw
5113
        stosw
5114
        mov     al, [esi+29]
5114
        mov     al, [esi+29]
5115
        aam
5115
        aam
5116
        add     eax, '00'
5116
        add     eax, '00'
5117
        push    eax
5117
        push    eax
5118
        mov     al, ah
5118
        mov     al, ah
5119
        mov     ah, bh
5119
        mov     ah, bh
5120
        stosw
5120
        stosw
5121
        pop     eax
5121
        pop     eax
5122
        mov     ah, bh
5122
        mov     ah, bh
5123
        stosw
5123
        stosw
5124
        mov     al, '.'
5124
        mov     al, '.'
5125
        stosw
5125
        stosw
5126
        movzx   eax, word [esi+30]
5126
        movzx   eax, word [esi+30]
5127
        xor     edx, edx
5127
        xor     edx, edx
5128
        div     [_10d]
5128
        div     [_10d]
5129
        xchg    eax, edx
5129
        xchg    eax, edx
5130
        add     al, '0'
5130
        add     al, '0'
5131
        mov     ah, bh
5131
        mov     ah, bh
5132
        mov     [edi+2], ax
5132
        mov     [edi+2], ax
5133
        xchg    eax, edx
5133
        xchg    eax, edx
5134
        xor     edx, edx
5134
        xor     edx, edx
5135
        div     [_10d]
5135
        div     [_10d]
5136
        xchg    eax, edx
5136
        xchg    eax, edx
5137
        add     al, '0'
5137
        add     al, '0'
5138
        mov     ah, bh
5138
        mov     ah, bh
5139
        stosw
5139
        stosw
5140
        pop     edi
5140
        pop     edi
5141
        add     edi, [cur_width]
5141
        add     edi, [cur_width]
5142
        add     edi, [cur_width]
5142
        add     edi, [cur_width]
5143
        inc     [last_column_index]
5143
        inc     [last_column_index]
5144
        pop     ecx
5144
        pop     ecx
5145
        dec     ecx
5145
        dec     ecx
5146
        jnz     .l
5146
        jnz     .l
5147
.ret:
5147
.ret:
5148
        pop     [last_column_index]
5148
        pop     [last_column_index]
5149
        cld
5149
        cld
5150
        ret
5150
        ret
5151
 
5151
 
5152
draw_time_column:
5152
draw_time_column:
5153
        mov     ecx, [column_height]
5153
        mov     ecx, [column_height]
5154
        dec     ecx
5154
        dec     ecx
5155
        push    [last_column_index]
5155
        push    [last_column_index]
5156
.l:
5156
.l:
5157
        mov     edx, [ebp + panel1_numfiles - panel1_data]
5157
        mov     edx, [ebp + panel1_numfiles - panel1_data]
5158
        cmp     [last_column_index], edx
5158
        cmp     [last_column_index], edx
5159
        jae     .ret
5159
        jae     .ret
5160
        push    ecx
5160
        push    ecx
5161
        push    edi
5161
        push    edi
5162
        mov     ecx, [last_column_index]
5162
        mov     ecx, [last_column_index]
5163
        mov     esi, [ebp + panel1_files - panel1_data]
5163
        mov     esi, [ebp + panel1_files - panel1_data]
5164
        mov     esi, [esi+ecx*4]
5164
        mov     esi, [esi+ecx*4]
5165
        call    get_file_color
5165
        call    get_file_color
5166
        mov     bh, ah
5166
        mov     bh, ah
5167
        mov     byte [edi-1], bh
5167
        mov     byte [edi-1], bh
5168
        mov     al, [esi+26]
5168
        mov     al, [esi+26]
5169
        aam
5169
        aam
5170
        add     eax, '00'
5170
        add     eax, '00'
5171
        push    eax
5171
        push    eax
5172
        mov     al, ah
5172
        mov     al, ah
5173
        mov     ah, bh
5173
        mov     ah, bh
5174
        stosw
5174
        stosw
5175
        pop     eax
5175
        pop     eax
5176
        mov     ah, bh
5176
        mov     ah, bh
5177
        stosw
5177
        stosw
5178
        mov     al, ':'
5178
        mov     al, ':'
5179
        stosw
5179
        stosw
5180
        mov     al, [esi+25]
5180
        mov     al, [esi+25]
5181
        aam
5181
        aam
5182
        add     eax, '00'
5182
        add     eax, '00'
5183
        push    eax
5183
        push    eax
5184
        mov     al, ah
5184
        mov     al, ah
5185
        mov     ah, bh
5185
        mov     ah, bh
5186
        stosw
5186
        stosw
5187
        pop     eax
5187
        pop     eax
5188
        mov     ah, bh
5188
        mov     ah, bh
5189
        stosw
5189
        stosw
5190
        pop     edi
5190
        pop     edi
5191
        add     edi, [cur_width]
5191
        add     edi, [cur_width]
5192
        add     edi, [cur_width]
5192
        add     edi, [cur_width]
5193
        inc     [last_column_index]
5193
        inc     [last_column_index]
5194
        pop     ecx
5194
        pop     ecx
5195
        dec     ecx
5195
        dec     ecx
5196
        jnz     .l
5196
        jnz     .l
5197
.ret:
5197
.ret:
5198
        pop     [last_column_index]
5198
        pop     [last_column_index]
5199
        cld
5199
        cld
5200
        ret
5200
        ret
5201
 
5201
 
5202
;insert_last_dot:
5202
;insert_last_dot:
5203
;        push    eax esi
5203
;        push    eax esi
5204
;        mov     ah, 0
5204
;        mov     ah, 0
5205
;.loop:
5205
;.loop:
5206
;        lodsb
5206
;        lodsb
5207
;        test    al, al
5207
;        test    al, al
5208
;        jz      .done
5208
;        jz      .done
5209
;        cmp     al, '.'
5209
;        cmp     al, '.'
5210
;        jnz     .loop
5210
;        jnz     .loop
5211
;        mov     ah, 1
5211
;        mov     ah, 1
5212
;        jmp     .loop
5212
;        jmp     .loop
5213
;.done:
5213
;.done:
5214
;        test    ah, ah
5214
;        test    ah, ah
5215
;        jnz     @f
5215
;        jnz     @f
5216
;        mov     byte [esi-1], '.'
5216
;        mov     byte [esi-1], '.'
5217
;        mov     byte [esi], 0
5217
;        mov     byte [esi], 0
5218
;@@:
5218
;@@:
5219
;        pop     esi eax
5219
;        pop     esi eax
5220
;        ret
5220
;        ret
5221
 
5221
 
5222
;delete_last_dot:
5222
;delete_last_dot:
5223
;        push    esi
5223
;        push    esi
5224
;@@:
5224
;@@:
5225
;        cmp     byte [esi], 0
5225
;        cmp     byte [esi], 0
5226
;        jz      @f
5226
;        jz      @f
5227
;        inc     esi
5227
;        inc     esi
5228
;        jmp     @b
5228
;        jmp     @b
5229
;@@:
5229
;@@:
5230
;        cmp     byte [esi-1], '.'
5230
;        cmp     byte [esi-1], '.'
5231
;        jnz     @f
5231
;        jnz     @f
5232
;        mov     byte [esi-1], 0
5232
;        mov     byte [esi-1], 0
5233
;@@:     pop     esi
5233
;@@:     pop     esi
5234
;        ret
5234
;        ret
5235
 
5235
 
5236
read_folder:
5236
read_folder:
5237
        mov     eax, [ebp + panel1_nfa - panel1_data]
5237
        mov     eax, [ebp + panel1_nfa - panel1_data]
5238
        mov     [dirinfo.size], eax
5238
        mov     [dirinfo.size], eax
5239
        shl     eax, 2
5239
        shl     eax, 2
5240
        add     eax, [ebp + panel1_files - panel1_data]
5240
        add     eax, [ebp + panel1_files - panel1_data]
5241
        mov     [dirinfo.dirdata], eax
5241
        mov     [dirinfo.dirdata], eax
5242
        lea     eax, [ebp + panel1_dir - panel1_data]
5242
        lea     eax, [ebp + panel1_dir - panel1_data]
5243
        mov     [dirinfo.name], eax
5243
        mov     [dirinfo.name], eax
5244
        xor     eax, eax
5244
        xor     eax, eax
5245
        mov     [ebp + panel1_total_num - panel1_data], eax
5245
        mov     [ebp + panel1_total_num - panel1_data], eax
5246
        mov     dword [ebp + panel1_total_size - panel1_data], eax
5246
        mov     dword [ebp + panel1_total_size - panel1_data], eax
5247
        mov     dword [ebp + panel1_total_size+4 - panel1_data], eax
5247
        mov     dword [ebp + panel1_total_size+4 - panel1_data], eax
5248
        mov     [ebp + panel1_selected_num - panel1_data], eax
5248
        mov     [ebp + panel1_selected_num - panel1_data], eax
5249
        mov     dword [ebp + panel1_selected_size - panel1_data], eax
5249
        mov     dword [ebp + panel1_selected_size - panel1_data], eax
5250
        mov     dword [ebp + panel1_selected_size+4 - panel1_data], eax
5250
        mov     dword [ebp + panel1_selected_size+4 - panel1_data], eax
5251
.retry:
5251
.retry:
5252
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
5252
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
5253
        test    eax, eax
5253
        test    eax, eax
5254
        jz      .native
5254
        jz      .native
5255
        mov     ecx, [dirinfo.size]
5255
        mov     ecx, [dirinfo.size]
5256
        test    [ebp + panel1_plugin_flags - panel1_data], 1
5256
        test    [ebp + panel1_plugin_flags - panel1_data], 1
5257
        jz      @f
5257
        jz      @f
5258
        dec     ecx     ; reserve one entry for '..'
5258
        dec     ecx     ; reserve one entry for '..'
5259
@@:
5259
@@:
5260
        push    ebp
5260
        push    ebp
5261
        push    [dirinfo.dirdata]
5261
        push    [dirinfo.dirdata]
5262
        push    ecx
5262
        push    ecx
5263
        push    0
5263
        push    0
5264
        push    [ebp + panel1_hFile - panel1_data]
5264
        push    [ebp + panel1_hFile - panel1_data]
5265
        call    [eax + PluginInfo.ReadFolder]
5265
        call    [eax + PluginInfo.ReadFolder]
5266
        pop     ebp
5266
        pop     ebp
5267
        mov     ebx, [dirinfo.dirdata]
5267
        mov     ebx, [dirinfo.dirdata]
5268
        mov     ebx, [ebx+4]
5268
        mov     ebx, [ebx+4]
5269
        jmp     .read
5269
        jmp     .read
5270
.native:
5270
.native:
5271
        push    70
5271
        push    70
5272
        pop     eax
5272
        pop     eax
5273
        mov     ebx, dirinfo
5273
        mov     ebx, dirinfo
5274
        int     40h
5274
        int     40h
5275
.read:
5275
.read:
5276
        test    eax, eax
5276
        test    eax, eax
5277
        jz      .ok
5277
        jz      .ok
5278
        cmp     eax, 6
5278
        cmp     eax, 6
5279
        jz      .ok
5279
        jz      .ok
5280
; Failed to read folder, notify user
5280
; Failed to read folder, notify user
5281
        cmp     [bSilentFolderMode], 0
5281
        cmp     [bSilentFolderMode], 0
5282
        jnz     .dont_notify
5282
        jnz     .dont_notify
5283
        push    dword aContinue
5283
        push    dword aContinue
5284
        push    dword aRetry
5284
        push    dword aRetry
5285
        mov     edx, esp
5285
        mov     edx, esp
5286
        call    get_error_msg
5286
        call    get_error_msg
5287
        push    [dirinfo.name]
5287
        push    [dirinfo.name]
5288
        push    dword aCannotReadFolder
5288
        push    dword aCannotReadFolder
5289
        push    eax
5289
        push    eax
5290
        mov     eax, esp
5290
        mov     eax, esp
5291
        push    edx
5291
        push    edx
5292
        push    2
5292
        push    2
5293
        push    eax
5293
        push    eax
5294
        push    3
5294
        push    3
5295
        call    SayErr
5295
        call    SayErr
5296
        add     esp, 5*4
5296
        add     esp, 5*4
5297
        test    eax, eax
5297
        test    eax, eax
5298
        jz      .retry
5298
        jz      .retry
5299
.dont_notify:
5299
.dont_notify:
5300
; If not on plugin panel, try to return to previous directory
5300
; If not on plugin panel, try to return to previous directory
5301
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
5301
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
5302
        jnz     @f
5302
        jnz     @f
5303
        mov     esi, prev_dir
5303
        mov     esi, prev_dir
5304
        cmp     byte [esi], 0
5304
        cmp     byte [esi], 0
5305
        jz      @f
5305
        jz      @f
5306
        lea     edi, [ebp + panel1_dir - panel1_data]
5306
        lea     edi, [ebp + panel1_dir - panel1_data]
5307
        mov     ecx, 1024/4
5307
        mov     ecx, 1024/4
5308
        rep     movsd
5308
        rep     movsd
5309
        mov     byte [prev_dir], 0
5309
        mov     byte [prev_dir], 0
5310
        ret
5310
        ret
5311
@@:
5311
@@:
5312
        mov     [bSilentFolderMode], 1  ; enter silent mode
5312
        mov     [bSilentFolderMode], 1  ; enter silent mode
5313
; Try to read parent folder
5313
; Try to read parent folder
5314
        mov     esi, [dirinfo.name]
5314
        mov     esi, [dirinfo.name]
5315
        xor     edx, edx
5315
        xor     edx, edx
5316
.up1:
5316
.up1:
5317
        lodsb
5317
        lodsb
5318
        test    al, al
5318
        test    al, al
5319
        jz      .up1done
5319
        jz      .up1done
5320
        cmp     al, '/'
5320
        cmp     al, '/'
5321
        jnz     .up1
5321
        jnz     .up1
5322
        inc     edx
5322
        inc     edx
5323
        lea     edi, [esi-1]
5323
        lea     edi, [esi-1]
5324
        jmp     .up1
5324
        jmp     .up1
5325
.up1done:
5325
.up1done:
5326
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
5326
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
5327
        jz      .4
5327
        jz      .4
5328
        cmp     edx, 1
5328
        cmp     edx, 1
5329
        ja      .up
5329
        ja      .up
5330
; ç⥭¨¥ á ¯ ­¥«¨ ¯« £¨­  ®¡«®¬ «®áì ¯® ¯®«­®©
5330
; ç⥭¨¥ á ¯ ­¥«¨ ¯« £¨­  ®¡«®¬ «®áì ¯® ¯®«­®©
5331
; ¯à¨ í⮬ ¬ë 㦥 ¢ ª®à­¥
5331
; ¯à¨ í⮬ ¬ë 㦥 ¢ ª®à­¥
5332
; ¤¥« ¥¬ ¢¨¤, çâ® äã­ªæ¨ï ç⥭¨ï ¢¥à­ã«  0 í«¥¬¥­â®¢
5332
; ¤¥« ¥¬ ¢¨¤, çâ® äã­ªæ¨ï ç⥭¨ï ¢¥à­ã«  0 í«¥¬¥­â®¢
5333
; (¥á«¨ ­ã¦¥­ ¢å®¤ "..", ®­ ¡ã¤¥â ¤®¡ ¢«¥­  ¢â®¬ â¨ç¥áª¨)
5333
; (¥á«¨ ­ã¦¥­ ¢å®¤ "..", ®­ ¡ã¤¥â ¤®¡ ¢«¥­  ¢â®¬ â¨ç¥áª¨)
5334
        xor     ebx, ebx        ; 0 items read
5334
        xor     ebx, ebx        ; 0 items read
5335
        mov     eax, [dirinfo.dirdata]
5335
        mov     eax, [dirinfo.dirdata]
5336
        mov     [eax+8], ebx    ; 0 items total
5336
        mov     [eax+8], ebx    ; 0 items total
5337
        jmp     .ok
5337
        jmp     .ok
5338
.4:
5338
.4:
5339
        cmp     edx, 2
5339
        cmp     edx, 2
5340
        jbe     .noup
5340
        jbe     .noup
5341
.up:
5341
.up:
5342
        stosb
5342
        stosb
5343
        jmp     read_folder
5343
        jmp     read_folder
5344
.noup:
5344
.noup:
5345
; There is no parent folder, and we are not on plugin panel
5345
; There is no parent folder, and we are not on plugin panel
5346
; Try to read ramdisk
5346
; Try to read ramdisk
5347
        mov     esi, [dirinfo.name]
5347
        mov     esi, [dirinfo.name]
5348
        mov     edi, esi
5348
        mov     edi, esi
5349
        lodsd
5349
        lodsd
5350
        or      eax, 0x00202000
5350
        or      eax, 0x00202000
5351
        cmp     eax, '/rd/'
5351
        cmp     eax, '/rd/'
5352
        jnz     @f
5352
        jnz     @f
5353
        lodsw
5353
        lodsw
5354
        cmp     ax, '1'
5354
        cmp     ax, '1'
5355
        jz      .nosetrd
5355
        jz      .nosetrd
5356
@@:
5356
@@:
5357
        mov     eax, '/rd/'
5357
        mov     eax, '/rd/'
5358
        stosd
5358
        stosd
5359
        mov     ax, '1'
5359
        mov     ax, '1'
5360
        stosw
5360
        stosw
5361
        jmp     read_folder
5361
        jmp     read_folder
5362
.nosetrd:
5362
.nosetrd:
5363
; „ ¦¥ à ¬¤¨áª ­¥ ¯à®ç¨â «áï. ‡­ ç¨â, ­¥ áã¤ì¡ ...
5363
; „ ¦¥ à ¬¤¨áª ­¥ ¯à®ç¨â «áï. ‡­ ç¨â, ­¥ áã¤ì¡ ...
5364
        and     dword [ebp + panel1_numfiles - panel1_data], 0
5364
        and     dword [ebp + panel1_numfiles - panel1_data], 0
5365
        and     dword [ebp + panel1_index - panel1_data], 0
5365
        and     dword [ebp + panel1_index - panel1_data], 0
5366
        and     dword [ebp + panel1_start - panel1_data], 0
5366
        and     dword [ebp + panel1_start - panel1_data], 0
5367
        mov     [bSilentFolderMode], 0  ; leave silent mode
5367
        mov     [bSilentFolderMode], 0  ; leave silent mode
5368
        ret
5368
        ret
5369
.ok:
5369
.ok:
5370
        mov     eax, [dirinfo.dirdata]
5370
        mov     eax, [dirinfo.dirdata]
5371
        cmp     [eax+8], ebx
5371
        cmp     [eax+8], ebx
5372
        jz      .readdone
5372
        jz      .readdone
5373
        push    dword [eax+8]
5373
        push    dword [eax+8]
5374
        mov     ecx, [ebp + panel1_files - panel1_data]
5374
        mov     ecx, [ebp + panel1_files - panel1_data]
5375
        call    pgfree
5375
        call    pgfree
5376
        pop     ecx
5376
        pop     ecx
5377
        add     ecx, 0xF
5377
        add     ecx, 0xF
5378
        and     ecx, not 0xF
5378
        and     ecx, not 0xF
5379
        push    ecx
5379
        push    ecx
5380
        imul    ecx, 4+304
5380
        imul    ecx, 4+304
5381
        add     ecx, 32
5381
        add     ecx, 32
5382
        call    xpgalloc
5382
        call    xpgalloc
5383
        test    eax, eax
5383
        test    eax, eax
5384
        jnz     .succ1
5384
        jnz     .succ1
5385
        pop     eax
5385
        pop     eax
5386
        jmp     .readdone
5386
        jmp     .readdone
5387
.succ1:
5387
.succ1:
5388
        mov     [ebp + panel1_files - panel1_data], eax
5388
        mov     [ebp + panel1_files - panel1_data], eax
5389
        pop     [ebp + panel1_nfa - panel1_data]
5389
        pop     [ebp + panel1_nfa - panel1_data]
5390
        mov     [prev_dir], 0
5390
        mov     [prev_dir], 0
5391
        jmp     read_folder
5391
        jmp     read_folder
5392
.readdone:
5392
.readdone:
5393
        xor     edx, edx
5393
        xor     edx, edx
5394
        mov     [ebp + panel1_start - panel1_data], edx
5394
        mov     [ebp + panel1_start - panel1_data], edx
5395
        mov     [ebp + panel1_index - panel1_data], edx
5395
        mov     [ebp + panel1_index - panel1_data], edx
5396
        mov     [ebp + panel1_start - panel1_data], edx
5396
        mov     [ebp + panel1_start - panel1_data], edx
5397
        mov     edi, [ebp + panel1_files - panel1_data]
5397
        mov     edi, [ebp + panel1_files - panel1_data]
5398
        mov     eax, [ebp + panel1_nfa - panel1_data]
5398
        mov     eax, [ebp + panel1_nfa - panel1_data]
5399
        lea     eax, [edi + eax*4 + 32]
5399
        lea     eax, [edi + eax*4 + 32]
5400
        mov     ecx, [eax-32+4]
5400
        mov     ecx, [eax-32+4]
5401
        test    ecx, ecx
5401
        test    ecx, ecx
5402
        jz      .loopdone
5402
        jz      .loopdone
5403
; ˆ£­®à¨à㥬 ᯥ樠«ì­ë¥ ¢å®¤ë, ᮮ⢥âáâ¢ãî騥 ¯ ¯ª¥ '.' ¨ ¬¥âª¥ ⮬ 
5403
; ˆ£­®à¨à㥬 ᯥ樠«ì­ë¥ ¢å®¤ë, ᮮ⢥âáâ¢ãî騥 ¯ ¯ª¥ '.' ¨ ¬¥âª¥ ⮬ 
5404
.ptrinit:
5404
.ptrinit:
5405
        cmp     word [eax+40], '.'
5405
        cmp     word [eax+40], '.'
5406
        jz      .loopcont
5406
        jz      .loopcont
5407
        test    byte [eax], 8
5407
        test    byte [eax], 8
5408
        jnz     .loopcont
5408
        jnz     .loopcont
5409
        mov     byte [eax+303], 0
5409
        mov     byte [eax+303], 0
5410
        test    edx, edx
5410
        test    edx, edx
5411
        jnz     .nodotdot
5411
        jnz     .nodotdot
5412
        cmp     word [eax+40], '..'
5412
        cmp     word [eax+40], '..'
5413
        jnz     .nodotdot
5413
        jnz     .nodotdot
5414
        cmp     byte [eax+42], 0
5414
        cmp     byte [eax+42], 0
5415
        jnz     .nodotdot
5415
        jnz     .nodotdot
5416
        mov     edx, eax
5416
        mov     edx, eax
5417
        push    edi
5417
        push    edi
5418
@@:
5418
@@:
5419
        cmp     edi, [ebp + panel1_files - panel1_data]
5419
        cmp     edi, [ebp + panel1_files - panel1_data]
5420
        jbe     @f
5420
        jbe     @f
5421
        push    dword [edi-4]
5421
        push    dword [edi-4]
5422
        pop     dword [edi]
5422
        pop     dword [edi]
5423
        sub     edi, 4
5423
        sub     edi, 4
5424
        jmp     @b
5424
        jmp     @b
5425
@@:
5425
@@:
5426
        stosd
5426
        stosd
5427
        pop     edi
5427
        pop     edi
5428
        scasd
5428
        scasd
5429
        jmp     .dotdot
5429
        jmp     .dotdot
5430
.nodotdot:
5430
.nodotdot:
5431
        stosd
5431
        stosd
5432
        xor     ebx, ebx
5432
        xor     ebx, ebx
5433
        test    byte [eax], 10h
5433
        test    byte [eax], 10h
5434
        setz    bl
5434
        setz    bl
5435
        add     [ebp + panel1_total_num - panel1_data], ebx
5435
        add     [ebp + panel1_total_num - panel1_data], ebx
5436
        mov     ebx, dword [eax+32]
5436
        mov     ebx, dword [eax+32]
5437
        add     dword [ebp + panel1_total_size - panel1_data], ebx
5437
        add     dword [ebp + panel1_total_size - panel1_data], ebx
5438
        mov     ebx, dword [eax+36]
5438
        mov     ebx, dword [eax+36]
5439
        adc     dword [ebp + panel1_total_size+4 - panel1_data], ebx
5439
        adc     dword [ebp + panel1_total_size+4 - panel1_data], ebx
5440
.dotdot:
5440
.dotdot:
5441
; ¯®¤á¢¥âª 
5441
; ¯®¤á¢¥âª 
5442
;        call    insert_last_dot
5442
;        call    insert_last_dot
5443
        call    highlight_init
5443
        call    highlight_init
5444
;        call    delete_last_dot
5444
;        call    delete_last_dot
5445
.loopcont:
5445
.loopcont:
5446
        add     eax, 304
5446
        add     eax, 304
5447
        dec     ecx
5447
        dec     ecx
5448
        jnz     .ptrinit
5448
        jnz     .ptrinit
5449
.loopdone:
5449
.loopdone:
5450
        push    edi
5450
        push    edi
5451
        sub     edi, [ebp + panel1_files - panel1_data]
5451
        sub     edi, [ebp + panel1_files - panel1_data]
5452
        shr     edi, 2
5452
        shr     edi, 2
5453
        mov     [ebp + panel1_numfiles - panel1_data], edi
5453
        mov     [ebp + panel1_numfiles - panel1_data], edi
5454
        pop     edi
5454
        pop     edi
5455
        test    edx, edx
5455
        test    edx, edx
5456
        jnz     @f
5456
        jnz     @f
5457
        test    [ebp + panel1_plugin_flags - panel1_data], 1
5457
        test    [ebp + panel1_plugin_flags - panel1_data], 1
5458
        jz      @f
5458
        jz      @f
5459
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
5459
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
5460
        inc     [ebp + panel1_numfiles - panel1_data]
5460
        inc     [ebp + panel1_numfiles - panel1_data]
5461
        lea     esi, [edi-4]
5461
        lea     esi, [edi-4]
5462
        std
5462
        std
5463
        rep     movsd
5463
        rep     movsd
5464
        cld
5464
        cld
5465
        mov     eax, left_dotdot_entry
5465
        mov     eax, left_dotdot_entry
5466
        cmp     ebp, panel1_data
5466
        cmp     ebp, panel1_data
5467
        jz      .zq
5467
        jz      .zq
5468
        add     eax, right_dotdot_entry-left_dotdot_entry
5468
        add     eax, right_dotdot_entry-left_dotdot_entry
5469
.zq:
5469
.zq:
5470
        stosd
5470
        stosd
5471
        call    highlight_init
5471
        call    highlight_init
5472
@@:
5472
@@:
5473
; ‘®àâ¨à®¢ª 
5473
; ‘®àâ¨à®¢ª 
5474
sort_files:
5474
sort_files:
5475
        movzx   eax, [ebp + panel1_sortmode - panel1_data]
5475
        movzx   eax, [ebp + panel1_sortmode - panel1_data]
5476
        mov     ebx, [compare_fns + eax*4]
5476
        mov     ebx, [compare_fns + eax*4]
5477
.mode:
5477
.mode:
5478
        mov     edx, [ebp + panel1_files - panel1_data]
5478
        mov     edx, [ebp + panel1_files - panel1_data]
5479
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
5479
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
5480
        jecxz   .skip
5480
        jecxz   .skip
5481
        mov     eax, [edx]
5481
        mov     eax, [edx]
5482
        cmp     word [eax+40], '..'
5482
        cmp     word [eax+40], '..'
5483
        jnz     .nodotdot
5483
        jnz     .nodotdot
5484
        cmp     byte [eax+42], 0
5484
        cmp     byte [eax+42], 0
5485
        jnz     .nodotdot
5485
        jnz     .nodotdot
5486
        dec     ecx
5486
        dec     ecx
5487
        add     edx, 4
5487
        add     edx, 4
5488
.nodotdot:
5488
.nodotdot:
5489
        call    sort
5489
        call    sort
5490
.skip:
5490
.skip:
5491
        mov     [bSilentFolderMode], 0  ; leave silent mode
5491
        mov     [bSilentFolderMode], 0  ; leave silent mode
5492
        ret
5492
        ret
5493
 
5493
 
5494
highlight_init:
5494
highlight_init:
5495
        pushad
5495
        pushad
5496
        mov     ebp, eax
5496
        mov     ebp, eax
5497
        lea     esi, [ebp+40]
5497
        lea     esi, [ebp+40]
5498
        mov     edi, lower_file_name
5498
        mov     edi, lower_file_name
5499
        mov     edx, edi
5499
        mov     edx, edi
5500
        xor     eax, eax
5500
        xor     eax, eax
5501
@@:
5501
@@:
5502
        lodsb
5502
        lodsb
5503
        mov     al, [tolower_table+eax]
5503
        mov     al, [tolower_table+eax]
5504
        stosb
5504
        stosb
5505
        test    al, al
5505
        test    al, al
5506
        jnz     @b
5506
        jnz     @b
5507
        mov     esi, edx
5507
        mov     esi, edx
5508
        lea     edx, [edi-1]
5508
        lea     edx, [edi-1]
5509
        xor     ecx, ecx
5509
        xor     ecx, ecx
5510
.highlight_test_loop:
5510
.highlight_test_loop:
5511
        mov     ebx, [highlight_groups+ecx*4]
5511
        mov     ebx, [highlight_groups+ecx*4]
5512
        mov     al, [ebx + highlight.IncludeAttributes]
5512
        mov     al, [ebx + highlight.IncludeAttributes]
5513
        mov     ah, [ebp]
5513
        mov     ah, [ebp]
5514
        and     ah, al
5514
        and     ah, al
5515
        cmp     ah, al
5515
        cmp     ah, al
5516
        jnz     .highlight_test_failed
5516
        jnz     .highlight_test_failed
5517
        lea     edi, [ebx + highlight.Mask]
5517
        lea     edi, [ebx + highlight.Mask]
5518
        call    match_mask_rev_lowercase
5518
        call    match_mask_rev_lowercase
5519
        jc      .highlight_test_failed
5519
        jc      .highlight_test_failed
5520
        mov     ah, [ebx + highlight.NormalColor]
5520
        mov     ah, [ebx + highlight.NormalColor]
5521
        test    ah, ah
5521
        test    ah, ah
5522
        jnz     @f
5522
        jnz     @f
5523
        mov     ah, [panel_normal_color]
5523
        mov     ah, [panel_normal_color]
5524
@@:
5524
@@:
5525
        mov     [ebp+4], ah
5525
        mov     [ebp+4], ah
5526
        mov     ah, [ebx + highlight.CursorColor]
5526
        mov     ah, [ebx + highlight.CursorColor]
5527
        test    ah, ah
5527
        test    ah, ah
5528
        jnz     @f
5528
        jnz     @f
5529
        mov     ah, [panel_cursor_color]
5529
        mov     ah, [panel_cursor_color]
5530
@@:
5530
@@:
5531
        mov     [ebp+5], ah
5531
        mov     [ebp+5], ah
5532
        mov     ah, [ebx + highlight.SelectedColor]
5532
        mov     ah, [ebx + highlight.SelectedColor]
5533
        test    ah, ah
5533
        test    ah, ah
5534
        jnz     @f
5534
        jnz     @f
5535
        mov     ah, [panel_selected_color]
5535
        mov     ah, [panel_selected_color]
5536
@@:
5536
@@:
5537
        mov     [ebp+6], ah
5537
        mov     [ebp+6], ah
5538
        mov     ah, [ebx + highlight.SelectedCursorColor]
5538
        mov     ah, [ebx + highlight.SelectedCursorColor]
5539
        test    ah, ah
5539
        test    ah, ah
5540
        jnz     @f
5540
        jnz     @f
5541
        mov     ah, [panel_selected_cursor_color]
5541
        mov     ah, [panel_selected_cursor_color]
5542
@@:
5542
@@:
5543
        mov     [ebp+7], ah
5543
        mov     [ebp+7], ah
5544
        jmp     .doname
5544
        jmp     .doname
5545
.highlight_test_failed:
5545
.highlight_test_failed:
5546
        inc     ecx
5546
        inc     ecx
5547
        cmp     ecx, [highlight_num_groups]
5547
        cmp     ecx, [highlight_num_groups]
5548
        jb      .highlight_test_loop
5548
        jb      .highlight_test_loop
5549
.nohighlight:
5549
.nohighlight:
5550
        mov     ah, [panel_normal_color]
5550
        mov     ah, [panel_normal_color]
5551
        mov     [ebp+4], ah
5551
        mov     [ebp+4], ah
5552
        mov     ah, [panel_cursor_color]
5552
        mov     ah, [panel_cursor_color]
5553
        mov     [ebp+5], ah
5553
        mov     [ebp+5], ah
5554
        mov     ah, [panel_selected_color]
5554
        mov     ah, [panel_selected_color]
5555
        mov     [ebp+6], ah
5555
        mov     [ebp+6], ah
5556
        mov     ah, [panel_selected_cursor_color]
5556
        mov     ah, [panel_selected_cursor_color]
5557
        mov     [ebp+7], ah
5557
        mov     [ebp+7], ah
5558
.doname:
5558
.doname:
5559
        popad
5559
        popad
5560
        ret
5560
        ret
5561
 
5561
 
5562
compare_name:
5562
compare_name:
5563
        test    byte [esi], 10h
5563
        test    byte [esi], 10h
5564
        jnz     .1dir
5564
        jnz     .1dir
5565
        test    byte [edi], 10h
5565
        test    byte [edi], 10h
5566
        jnz     .greater
5566
        jnz     .greater
5567
.eq1:
5567
.eq1:
5568
        add     esi, 40
5568
        add     esi, 40
5569
        add     edi, 40
5569
        add     edi, 40
5570
        jmp     strcmpi
5570
        jmp     strcmpi
5571
.greater:
5571
.greater:
5572
        test    esi, esi
5572
        test    esi, esi
5573
        ret
5573
        ret
5574
.1dir:
5574
.1dir:
5575
        test    byte [edi], 10h
5575
        test    byte [edi], 10h
5576
        jnz     .eq1
5576
        jnz     .eq1
5577
.less:
5577
.less:
5578
        xor     edi, edi
5578
        xor     edi, edi
5579
        stc
5579
        stc
5580
        ret
5580
        ret
5581
 
5581
 
5582
compare_name_rev:
5582
compare_name_rev:
5583
        test    byte [esi], 10h
5583
        test    byte [esi], 10h
5584
        jnz     .1dir
5584
        jnz     .1dir
5585
        test    byte [edi], 10h
5585
        test    byte [edi], 10h
5586
        jnz     .greater
5586
        jnz     .greater
5587
.eq1:
5587
.eq1:
5588
        add     esi, 40
5588
        add     esi, 40
5589
        add     edi, 40
5589
        add     edi, 40
5590
        xchg    esi, edi
5590
        xchg    esi, edi
5591
        jmp     strcmpi
5591
        jmp     strcmpi
5592
.greater:
5592
.greater:
5593
        test    esi, esi
5593
        test    esi, esi
5594
        ret
5594
        ret
5595
.1dir:
5595
.1dir:
5596
        test    byte [edi], 10h
5596
        test    byte [edi], 10h
5597
        jnz     .eq1
5597
        jnz     .eq1
5598
.less:
5598
.less:
5599
        xor     edi, edi
5599
        xor     edi, edi
5600
        stc
5600
        stc
5601
        ret
5601
        ret
5602
 
5602
 
5603
strcmpi:
5603
strcmpi:
5604
        push    eax
5604
        push    eax
5605
@@:
5605
@@:
5606
        lodsb
5606
        lodsb
5607
        call    match_symbol
5607
        call    match_symbol
5608
        jnz     .ret
5608
        jnz     .ret
5609
        inc     edi
5609
        inc     edi
5610
        test    al, al
5610
        test    al, al
5611
        jnz     @b
5611
        jnz     @b
5612
.ret:
5612
.ret:
5613
        pop     eax
5613
        pop     eax
5614
        ret
5614
        ret
5615
 
5615
 
5616
compare_ext:
5616
compare_ext:
5617
        test    byte [esi], 10h
5617
        test    byte [esi], 10h
5618
        jnz     .1dir
5618
        jnz     .1dir
5619
        test    byte [edi], 10h
5619
        test    byte [edi], 10h
5620
        jnz     .greater
5620
        jnz     .greater
5621
.eq1:
5621
.eq1:
5622
        add     esi, 40
5622
        add     esi, 40
5623
        add     edi, 40
5623
        add     edi, 40
5624
        push    esi edi
5624
        push    esi edi
5625
        call    seek_ext
5625
        call    seek_ext
5626
        xchg    esi, edi
5626
        xchg    esi, edi
5627
        call    seek_ext
5627
        call    seek_ext
5628
        xchg    esi, edi
5628
        xchg    esi, edi
5629
        call    strcmpi
5629
        call    strcmpi
5630
        jnz     .ret
5630
        jnz     .ret
5631
        pop     edi esi
5631
        pop     edi esi
5632
        jmp     strcmpi
5632
        jmp     strcmpi
5633
.ret:
5633
.ret:
5634
        pop     edi esi
5634
        pop     edi esi
5635
        ret
5635
        ret
5636
.greater:
5636
.greater:
5637
        test    esi, esi
5637
        test    esi, esi
5638
        ret
5638
        ret
5639
.1dir:
5639
.1dir:
5640
        test    byte [edi], 10h
5640
        test    byte [edi], 10h
5641
        jnz     .eq1
5641
        jnz     .eq1
5642
.less:
5642
.less:
5643
        xor     edi, edi
5643
        xor     edi, edi
5644
        stc
5644
        stc
5645
        ret
5645
        ret
5646
 
5646
 
5647
compare_ext_rev:
5647
compare_ext_rev:
5648
        test    byte [esi], 10h
5648
        test    byte [esi], 10h
5649
        jnz     .1dir
5649
        jnz     .1dir
5650
        test    byte [edi], 10h
5650
        test    byte [edi], 10h
5651
        jnz     .greater
5651
        jnz     .greater
5652
.eq1:
5652
.eq1:
5653
        add     esi, 40
5653
        add     esi, 40
5654
        add     edi, 40
5654
        add     edi, 40
5655
        push    esi edi
5655
        push    esi edi
5656
        call    seek_ext
5656
        call    seek_ext
5657
        xchg    esi, edi
5657
        xchg    esi, edi
5658
        call    seek_ext
5658
        call    seek_ext
5659
        call    strcmpi
5659
        call    strcmpi
5660
        jnz     .ret
5660
        jnz     .ret
5661
        pop     edi esi
5661
        pop     edi esi
5662
        xchg    esi, edi
5662
        xchg    esi, edi
5663
        jmp     strcmpi
5663
        jmp     strcmpi
5664
.ret:
5664
.ret:
5665
        pop     edi esi
5665
        pop     edi esi
5666
        ret
5666
        ret
5667
.greater:
5667
.greater:
5668
        test    esi, esi
5668
        test    esi, esi
5669
        ret
5669
        ret
5670
.1dir:
5670
.1dir:
5671
        test    byte [edi], 10h
5671
        test    byte [edi], 10h
5672
        jnz     .eq1
5672
        jnz     .eq1
5673
.less:
5673
.less:
5674
        xor     edi, edi
5674
        xor     edi, edi
5675
        stc
5675
        stc
5676
        ret
5676
        ret
5677
 
5677
 
5678
seek_ext:
5678
seek_ext:
5679
        push    eax
5679
        push    eax
5680
        xor     eax, eax
5680
        xor     eax, eax
5681
.l:
5681
.l:
5682
        inc     esi
5682
        inc     esi
5683
        cmp     byte [esi-1], '.'
5683
        cmp     byte [esi-1], '.'
5684
        jnz     @f
5684
        jnz     @f
5685
        mov     eax, esi
5685
        mov     eax, esi
5686
@@:
5686
@@:
5687
        cmp     byte [esi-1], 0
5687
        cmp     byte [esi-1], 0
5688
        jnz     .l
5688
        jnz     .l
5689
        test    eax, eax
5689
        test    eax, eax
5690
        jnz     @f
5690
        jnz     @f
5691
        lea     eax, [esi-1]
5691
        lea     eax, [esi-1]
5692
@@:
5692
@@:
5693
        mov     esi, eax
5693
        mov     esi, eax
5694
        pop     eax
5694
        pop     eax
5695
        ret
5695
        ret
5696
 
5696
 
5697
compare_modified:
5697
compare_modified:
5698
        test    byte [esi], 10h
5698
        test    byte [esi], 10h
5699
        jnz     .1dir
5699
        jnz     .1dir
5700
        test    byte [edi], 10h
5700
        test    byte [edi], 10h
5701
        jnz     .greater
5701
        jnz     .greater
5702
.eq1:
5702
.eq1:
5703
        push    edi
5703
        push    edi
5704
        mov     edi, [edi+28]
5704
        mov     edi, [edi+28]
5705
        cmp     edi, [esi+28]
5705
        cmp     edi, [esi+28]
5706
        pop     edi
5706
        pop     edi
5707
        jnz     @f
5707
        jnz     @f
5708
        push    edi
5708
        push    edi
5709
        mov     edi, [edi+24]
5709
        mov     edi, [edi+24]
5710
        cmp     edi, [esi+24]
5710
        cmp     edi, [esi+24]
5711
        pop     edi
5711
        pop     edi
5712
        jnz     @f
5712
        jnz     @f
5713
        add     esi, 40
5713
        add     esi, 40
5714
        add     edi, 40
5714
        add     edi, 40
5715
        jmp     strcmpi
5715
        jmp     strcmpi
5716
@@:
5716
@@:
5717
        ret
5717
        ret
5718
.greater:
5718
.greater:
5719
        test    esi, esi
5719
        test    esi, esi
5720
        ret
5720
        ret
5721
.1dir:
5721
.1dir:
5722
        test    byte [edi], 10h
5722
        test    byte [edi], 10h
5723
        jnz     .eq1
5723
        jnz     .eq1
5724
.less:
5724
.less:
5725
        xor     edi, edi
5725
        xor     edi, edi
5726
        stc
5726
        stc
5727
        ret
5727
        ret
5728
 
5728
 
5729
compare_modified_rev:
5729
compare_modified_rev:
5730
        test    byte [esi], 10h
5730
        test    byte [esi], 10h
5731
        jnz     .1dir
5731
        jnz     .1dir
5732
        test    byte [edi], 10h
5732
        test    byte [edi], 10h
5733
        jnz     .greater
5733
        jnz     .greater
5734
.eq1:
5734
.eq1:
5735
        push    esi
5735
        push    esi
5736
        mov     esi, [esi+28]
5736
        mov     esi, [esi+28]
5737
        cmp     esi, [edi+28]
5737
        cmp     esi, [edi+28]
5738
        pop     esi
5738
        pop     esi
5739
        jnz     @f
5739
        jnz     @f
5740
        push    esi
5740
        push    esi
5741
        mov     esi, [esi+24]
5741
        mov     esi, [esi+24]
5742
        cmp     esi, [edi+24]
5742
        cmp     esi, [edi+24]
5743
        pop     esi
5743
        pop     esi
5744
        jnz     @f
5744
        jnz     @f
5745
        add     esi, 40
5745
        add     esi, 40
5746
        add     edi, 40
5746
        add     edi, 40
5747
        xchg    esi, edi
5747
        xchg    esi, edi
5748
        jmp     strcmpi
5748
        jmp     strcmpi
5749
@@:
5749
@@:
5750
        ret
5750
        ret
5751
.greater:
5751
.greater:
5752
        test    esi, esi
5752
        test    esi, esi
5753
        ret
5753
        ret
5754
.1dir:
5754
.1dir:
5755
        test    byte [edi], 10h
5755
        test    byte [edi], 10h
5756
        jnz     .eq1
5756
        jnz     .eq1
5757
.less:
5757
.less:
5758
        xor     edi, edi
5758
        xor     edi, edi
5759
        stc
5759
        stc
5760
        ret
5760
        ret
5761
 
5761
 
5762
compare_size:
5762
compare_size:
5763
        test    byte [esi], 10h
5763
        test    byte [esi], 10h
5764
        jnz     .1dir
5764
        jnz     .1dir
5765
        test    byte [edi], 10h
5765
        test    byte [edi], 10h
5766
        jnz     .greater
5766
        jnz     .greater
5767
.eq1:
5767
.eq1:
5768
        push    edi
5768
        push    edi
5769
        mov     edi, [edi+36]
5769
        mov     edi, [edi+36]
5770
        cmp     edi, [esi+36]
5770
        cmp     edi, [esi+36]
5771
        pop     edi
5771
        pop     edi
5772
        jnz     @f
5772
        jnz     @f
5773
        push    edi
5773
        push    edi
5774
        mov     edi, [edi+32]
5774
        mov     edi, [edi+32]
5775
        cmp     edi, [esi+32]
5775
        cmp     edi, [esi+32]
5776
        pop     edi
5776
        pop     edi
5777
        jnz     @f
5777
        jnz     @f
5778
        add     esi, 40
5778
        add     esi, 40
5779
        add     edi, 40
5779
        add     edi, 40
5780
        jmp     strcmpi
5780
        jmp     strcmpi
5781
@@:
5781
@@:
5782
        ret
5782
        ret
5783
.greater:
5783
.greater:
5784
        test    esi, esi
5784
        test    esi, esi
5785
        ret
5785
        ret
5786
.1dir:
5786
.1dir:
5787
        test    byte [edi], 10h
5787
        test    byte [edi], 10h
5788
        jnz     .eq1
5788
        jnz     .eq1
5789
.less:
5789
.less:
5790
        xor     edi, edi
5790
        xor     edi, edi
5791
        stc
5791
        stc
5792
        ret
5792
        ret
5793
 
5793
 
5794
compare_size_rev:
5794
compare_size_rev:
5795
        test    byte [esi], 10h
5795
        test    byte [esi], 10h
5796
        jnz     .1dir
5796
        jnz     .1dir
5797
        test    byte [edi], 10h
5797
        test    byte [edi], 10h
5798
        jnz     .greater
5798
        jnz     .greater
5799
.eq1:
5799
.eq1:
5800
        push    esi
5800
        push    esi
5801
        mov     esi, [esi+36]
5801
        mov     esi, [esi+36]
5802
        cmp     esi, [edi+36]
5802
        cmp     esi, [edi+36]
5803
        pop     esi
5803
        pop     esi
5804
        jnz     @f
5804
        jnz     @f
5805
        push    esi
5805
        push    esi
5806
        mov     esi, [esi+32]
5806
        mov     esi, [esi+32]
5807
        cmp     esi, [edi+32]
5807
        cmp     esi, [edi+32]
5808
        pop     esi
5808
        pop     esi
5809
        jnz     @f
5809
        jnz     @f
5810
        add     esi, 40
5810
        add     esi, 40
5811
        add     edi, 40
5811
        add     edi, 40
5812
        xchg    esi, edi
5812
        xchg    esi, edi
5813
        jmp     strcmpi
5813
        jmp     strcmpi
5814
@@:
5814
@@:
5815
        ret
5815
        ret
5816
.greater:
5816
.greater:
5817
        test    esi, esi
5817
        test    esi, esi
5818
        ret
5818
        ret
5819
.1dir:
5819
.1dir:
5820
        test    byte [edi], 10h
5820
        test    byte [edi], 10h
5821
        jnz     .eq1
5821
        jnz     .eq1
5822
.less:
5822
.less:
5823
        xor     edi, edi
5823
        xor     edi, edi
5824
        stc
5824
        stc
5825
        ret
5825
        ret
5826
 
5826
 
5827
compare_unordered:
5827
compare_unordered:
5828
        cmp     esi, edi
5828
        cmp     esi, edi
5829
        ret
5829
        ret
5830
compare_unordered_rev:
5830
compare_unordered_rev:
5831
        cmp     edi, esi
5831
        cmp     edi, esi
5832
        ret
5832
        ret
5833
 
5833
 
5834
compare_created:
5834
compare_created:
5835
        test    byte [esi], 10h
5835
        test    byte [esi], 10h
5836
        jnz     .1dir
5836
        jnz     .1dir
5837
        test    byte [edi], 10h
5837
        test    byte [edi], 10h
5838
        jnz     .greater
5838
        jnz     .greater
5839
.eq1:
5839
.eq1:
5840
        push    edi
5840
        push    edi
5841
        mov     edi, [edi+12]
5841
        mov     edi, [edi+12]
5842
        cmp     edi, [esi+12]
5842
        cmp     edi, [esi+12]
5843
        pop     edi
5843
        pop     edi
5844
        jnz     @f
5844
        jnz     @f
5845
        push    edi
5845
        push    edi
5846
        mov     edi, [edi+8]
5846
        mov     edi, [edi+8]
5847
        cmp     edi, [esi+8]
5847
        cmp     edi, [esi+8]
5848
        pop     edi
5848
        pop     edi
5849
        jnz     @f
5849
        jnz     @f
5850
        add     esi, 40
5850
        add     esi, 40
5851
        add     edi, 40
5851
        add     edi, 40
5852
        jmp     strcmpi
5852
        jmp     strcmpi
5853
@@:
5853
@@:
5854
        ret
5854
        ret
5855
.greater:
5855
.greater:
5856
        test    esi, esi
5856
        test    esi, esi
5857
        ret
5857
        ret
5858
.1dir:
5858
.1dir:
5859
        test    byte [edi], 10h
5859
        test    byte [edi], 10h
5860
        jnz     .eq1
5860
        jnz     .eq1
5861
.less:
5861
.less:
5862
        xor     edi, edi
5862
        xor     edi, edi
5863
        stc
5863
        stc
5864
        ret
5864
        ret
5865
 
5865
 
5866
compare_created_rev:
5866
compare_created_rev:
5867
        test    byte [esi], 10h
5867
        test    byte [esi], 10h
5868
        jnz     .1dir
5868
        jnz     .1dir
5869
        test    byte [edi], 10h
5869
        test    byte [edi], 10h
5870
        jnz     .greater
5870
        jnz     .greater
5871
.eq1:
5871
.eq1:
5872
        push    esi
5872
        push    esi
5873
        mov     esi, [esi+12]
5873
        mov     esi, [esi+12]
5874
        cmp     esi, [edi+12]
5874
        cmp     esi, [edi+12]
5875
        pop     esi
5875
        pop     esi
5876
        jnz     @f
5876
        jnz     @f
5877
        push    esi
5877
        push    esi
5878
        mov     esi, [esi+8]
5878
        mov     esi, [esi+8]
5879
        cmp     esi, [edi+8]
5879
        cmp     esi, [edi+8]
5880
        pop     esi
5880
        pop     esi
5881
        jnz     @f
5881
        jnz     @f
5882
        add     esi, 40
5882
        add     esi, 40
5883
        add     edi, 40
5883
        add     edi, 40
5884
        xchg    esi, edi
5884
        xchg    esi, edi
5885
        jmp     strcmpi
5885
        jmp     strcmpi
5886
@@:
5886
@@:
5887
        ret
5887
        ret
5888
.greater:
5888
.greater:
5889
        test    esi, esi
5889
        test    esi, esi
5890
        ret
5890
        ret
5891
.1dir:
5891
.1dir:
5892
        test    byte [edi], 10h
5892
        test    byte [edi], 10h
5893
        jnz     .eq1
5893
        jnz     .eq1
5894
.less:
5894
.less:
5895
        xor     edi, edi
5895
        xor     edi, edi
5896
        stc
5896
        stc
5897
        ret
5897
        ret
5898
 
5898
 
5899
compare_accessed:
5899
compare_accessed:
5900
        test    byte [esi], 10h
5900
        test    byte [esi], 10h
5901
        jnz     .1dir
5901
        jnz     .1dir
5902
        test    byte [edi], 10h
5902
        test    byte [edi], 10h
5903
        jnz     .greater
5903
        jnz     .greater
5904
.eq1:
5904
.eq1:
5905
        push    edi
5905
        push    edi
5906
        mov     edi, [edi+20]
5906
        mov     edi, [edi+20]
5907
        cmp     edi, [esi+20]
5907
        cmp     edi, [esi+20]
5908
        pop     edi
5908
        pop     edi
5909
        jnz     @f
5909
        jnz     @f
5910
        push    edi
5910
        push    edi
5911
        mov     edi, [edi+16]
5911
        mov     edi, [edi+16]
5912
        cmp     edi, [esi+16]
5912
        cmp     edi, [esi+16]
5913
        pop     edi
5913
        pop     edi
5914
        jnz     @f
5914
        jnz     @f
5915
        add     esi, 40
5915
        add     esi, 40
5916
        add     edi, 40
5916
        add     edi, 40
5917
        jmp     strcmpi
5917
        jmp     strcmpi
5918
@@:
5918
@@:
5919
        ret
5919
        ret
5920
.greater:
5920
.greater:
5921
        test    esi, esi
5921
        test    esi, esi
5922
        ret
5922
        ret
5923
.1dir:
5923
.1dir:
5924
        test    byte [edi], 10h
5924
        test    byte [edi], 10h
5925
        jnz     .eq1
5925
        jnz     .eq1
5926
.less:
5926
.less:
5927
        xor     edi, edi
5927
        xor     edi, edi
5928
        stc
5928
        stc
5929
        ret
5929
        ret
5930
 
5930
 
5931
compare_accessed_rev:
5931
compare_accessed_rev:
5932
        test    byte [esi], 10h
5932
        test    byte [esi], 10h
5933
        jnz     .1dir
5933
        jnz     .1dir
5934
        test    byte [edi], 10h
5934
        test    byte [edi], 10h
5935
        jnz     .greater
5935
        jnz     .greater
5936
.eq1:
5936
.eq1:
5937
        push    esi
5937
        push    esi
5938
        mov     esi, [esi+20]
5938
        mov     esi, [esi+20]
5939
        cmp     esi, [edi+20]
5939
        cmp     esi, [edi+20]
5940
        pop     esi
5940
        pop     esi
5941
        jnz     @f
5941
        jnz     @f
5942
        push    esi
5942
        push    esi
5943
        mov     esi, [esi+16]
5943
        mov     esi, [esi+16]
5944
        cmp     esi, [edi+16]
5944
        cmp     esi, [edi+16]
5945
        pop     esi
5945
        pop     esi
5946
        jnz     @f
5946
        jnz     @f
5947
        add     esi, 40
5947
        add     esi, 40
5948
        add     edi, 40
5948
        add     edi, 40
5949
        xchg    esi, edi
5949
        xchg    esi, edi
5950
        jmp     strcmpi
5950
        jmp     strcmpi
5951
@@:
5951
@@:
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
ReadFolder_default:
5964
ReadFolder_default:
5965
        mov     eax, 2
5965
        mov     eax, 2
5966
        ret     10h
5966
        ret     10h
5967
 
5967
 
5968
if 0
5968
if 0
5969
; Following subroutines work, but are slow
5969
; Following subroutines work, but are slow
5970
match_mask:
5970
match_mask:
5971
; in: esi->name, edi->mask
5971
; in: esi->name, edi->mask
5972
; out: CF clear <=> match
5972
; out: CF clear <=> match
5973
        pusha
5973
        pusha
5974
        xchg    esi, edi
5974
        xchg    esi, edi
5975
.main_cycle:
5975
.main_cycle:
5976
        push    esi
5976
        push    esi
5977
@@:
5977
@@:
5978
        lodsb
5978
        lodsb
5979
        test    al, al
5979
        test    al, al
5980
        jz      @f
5980
        jz      @f
5981
        cmp     al, ','
5981
        cmp     al, ','
5982
        jz      @f
5982
        jz      @f
5983
        cmp     al, '|'
5983
        cmp     al, '|'
5984
        jnz     @b
5984
        jnz     @b
5985
@@:
5985
@@:
5986
        mov     [esi-1], byte 0
5986
        mov     [esi-1], byte 0
5987
        xchg    esi, [esp]
5987
        xchg    esi, [esp]
5988
        call    match_single_mask
5988
        call    match_single_mask
5989
        pop     esi
5989
        pop     esi
5990
        mov     [esi-1], al
5990
        mov     [esi-1], al
5991
        jnc     .found
5991
        jnc     .found
5992
        cmp     al, ','
5992
        cmp     al, ','
5993
        jz      .main_cycle
5993
        jz      .main_cycle
5994
.done_fail:
5994
.done_fail:
5995
        stc
5995
        stc
5996
        popa
5996
        popa
5997
        ret
5997
        ret
5998
.found:
5998
.found:
5999
        test    al, al
5999
        test    al, al
6000
        jz      .done_succ
6000
        jz      .done_succ
6001
        cmp     al, '|'
6001
        cmp     al, '|'
6002
        jz      .test_exclude
6002
        jz      .test_exclude
6003
        lodsb
6003
        lodsb
6004
        jmp     .found
6004
        jmp     .found
6005
.done_succ:
6005
.done_succ:
6006
        clc
6006
        clc
6007
        popa
6007
        popa
6008
        ret
6008
        ret
6009
.test_exclude:
6009
.test_exclude:
6010
        push    esi
6010
        push    esi
6011
@@:
6011
@@:
6012
        lodsb
6012
        lodsb
6013
        test    al, al
6013
        test    al, al
6014
        jz      @f
6014
        jz      @f
6015
        cmp     al, ','
6015
        cmp     al, ','
6016
        jnz     @b
6016
        jnz     @b
6017
@@:
6017
@@:
6018
        mov     byte [esi-1], 0
6018
        mov     byte [esi-1], 0
6019
        xchg    esi, [esp]
6019
        xchg    esi, [esp]
6020
        call    match_single_mask
6020
        call    match_single_mask
6021
        pop     esi
6021
        pop     esi
6022
        mov     [esi-1], al
6022
        mov     [esi-1], al
6023
        jnc     .done_fail
6023
        jnc     .done_fail
6024
        test    al, al
6024
        test    al, al
6025
        jz      .done_succ
6025
        jz      .done_succ
6026
        jmp     .test_exclude
6026
        jmp     .test_exclude
6027
 
6027
 
6028
match_single_mask:
6028
match_single_mask:
6029
; in: esi->mask, edi->name
6029
; in: esi->mask, edi->name
6030
; out: CF clear <=> match
6030
; out: CF clear <=> match
6031
        pusha
6031
        pusha
6032
.mask_symbol:
6032
.mask_symbol:
6033
        lodsb
6033
        lodsb
6034
        test    al, al
6034
        test    al, al
6035
        jz      .mask_done
6035
        jz      .mask_done
6036
        cmp     al, '*'
6036
        cmp     al, '*'
6037
        jz      .asterisk
6037
        jz      .asterisk
6038
        cmp     al, '?'
6038
        cmp     al, '?'
6039
        jz      .quest
6039
        jz      .quest
6040
        cmp     al, '['
6040
        cmp     al, '['
6041
        jz      .list
6041
        jz      .list
6042
        call    match_symbol
6042
        call    match_symbol
6043
        jnz     .done_fail
6043
        jnz     .done_fail
6044
        inc     edi
6044
        inc     edi
6045
        jmp     .mask_symbol
6045
        jmp     .mask_symbol
6046
.done_fail:
6046
.done_fail:
6047
        stc
6047
        stc
6048
        popa
6048
        popa
6049
        ret
6049
        ret
6050
.mask_done:
6050
.mask_done:
6051
        scasb
6051
        scasb
6052
        jnz     .done_fail
6052
        jnz     .done_fail
6053
.done_succ:
6053
.done_succ:
6054
        clc
6054
        clc
6055
        popa
6055
        popa
6056
        ret
6056
        ret
6057
.quest:
6057
.quest:
6058
        mov     al, 0
6058
        mov     al, 0
6059
        scasb
6059
        scasb
6060
        jz      .done_fail
6060
        jz      .done_fail
6061
        jmp     .mask_symbol
6061
        jmp     .mask_symbol
6062
.list:
6062
.list:
6063
        lodsb
6063
        lodsb
6064
        cmp     al, ']'
6064
        cmp     al, ']'
6065
        jz      .done_fail
6065
        jz      .done_fail
6066
        cmp     byte [esi+1], '-'
6066
        cmp     byte [esi+1], '-'
6067
        jz      .range
6067
        jz      .range
6068
        call    match_symbol
6068
        call    match_symbol
6069
        jnz     .list
6069
        jnz     .list
6070
.listok:
6070
.listok:
6071
        inc     edi
6071
        inc     edi
6072
@@:
6072
@@:
6073
        lodsb
6073
        lodsb
6074
        cmp     al, ']'
6074
        cmp     al, ']'
6075
        jnz     @b
6075
        jnz     @b
6076
        jmp     .mask_symbol
6076
        jmp     .mask_symbol
6077
.range:
6077
.range:
6078
        call    match_symbol
6078
        call    match_symbol
6079
        ja      @f
6079
        ja      @f
6080
        mov     al, [esi+2]
6080
        mov     al, [esi+2]
6081
        call    match_symbol
6081
        call    match_symbol
6082
        jae     .listok
6082
        jae     .listok
6083
@@:
6083
@@:
6084
        inc     esi
6084
        inc     esi
6085
        jmp     .list
6085
        jmp     .list
6086
.asterisk:
6086
.asterisk:
6087
        cmp     byte [esi], 0
6087
        cmp     byte [esi], 0
6088
        jz      .done_succ
6088
        jz      .done_succ
6089
        cmp     byte [esi], '?'
6089
        cmp     byte [esi], '?'
6090
        jnz     @f
6090
        jnz     @f
6091
        mov     al, 0
6091
        mov     al, 0
6092
        scasb
6092
        scasb
6093
        jz      .done_fail
6093
        jz      .done_fail
6094
        inc     esi
6094
        inc     esi
6095
        jmp     .asterisk
6095
        jmp     .asterisk
6096
@@:
6096
@@:
6097
        cmp     byte [esi], '['
6097
        cmp     byte [esi], '['
6098
        jz      .asterisk_common
6098
        jz      .asterisk_common
6099
; the mask is ...*...
6099
; the mask is ...*...
6100
.asterisk_normal:
6100
.asterisk_normal:
6101
        mov     al, [esi]
6101
        mov     al, [esi]
6102
@@:
6102
@@:
6103
        cmp     byte [edi], 0
6103
        cmp     byte [edi], 0
6104
        jz      .done_fail
6104
        jz      .done_fail
6105
        call    match_symbol
6105
        call    match_symbol
6106
        jz      @f
6106
        jz      @f
6107
        inc     edi
6107
        inc     edi
6108
        jmp     @b
6108
        jmp     @b
6109
@@:
6109
@@:
6110
        inc     edi
6110
        inc     edi
6111
        inc     esi
6111
        inc     esi
6112
        call    match_single_mask
6112
        call    match_single_mask
6113
        jnc     .done_succ
6113
        jnc     .done_succ
6114
        dec     esi
6114
        dec     esi
6115
        jmp     .asterisk_normal
6115
        jmp     .asterisk_normal
6116
.asterisk_common:
6116
.asterisk_common:
6117
        push    edi
6117
        push    edi
6118
@@:
6118
@@:
6119
        call    match_single_mask
6119
        call    match_single_mask
6120
        jnc     @f
6120
        jnc     @f
6121
        mov     al, 0
6121
        mov     al, 0
6122
        scasb
6122
        scasb
6123
        jnz     @b
6123
        jnz     @b
6124
        pop     edi
6124
        pop     edi
6125
        jmp     .done_fail
6125
        jmp     .done_fail
6126
@@:
6126
@@:
6127
        pop     edi
6127
        pop     edi
6128
        jmp     .done_succ
6128
        jmp     .done_succ
6129
 
6129
 
6130
match_mask_rev:
6130
match_mask_rev:
6131
; in: esi->name, edx->end of name, edi->mask
6131
; in: esi->name, edx->end of name, edi->mask
6132
; out: CF clear <=> match
6132
; out: CF clear <=> match
6133
        pusha
6133
        pusha
6134
        xchg    esi, edx
6134
        xchg    esi, edx
6135
        xchg    esi, edi
6135
        xchg    esi, edi
6136
.main_cycle:
6136
.main_cycle:
6137
        mov     ecx, esi
6137
        mov     ecx, esi
6138
@@:
6138
@@:
6139
        lodsb
6139
        lodsb
6140
        test    al, al
6140
        test    al, al
6141
        jz      @f
6141
        jz      @f
6142
        cmp     al, ','
6142
        cmp     al, ','
6143
        jz      @f
6143
        jz      @f
6144
        cmp     al, '|'
6144
        cmp     al, '|'
6145
        jnz     @b
6145
        jnz     @b
6146
@@:
6146
@@:
6147
        dec     esi
6147
        dec     esi
6148
        mov     [esi], byte 0
6148
        mov     [esi], byte 0
6149
        call    match_single_mask_rev2
6149
        call    match_single_mask_rev2
6150
        mov     [esi], al
6150
        mov     [esi], al
6151
        inc     esi
6151
        inc     esi
6152
        jnc     .found
6152
        jnc     .found
6153
        cmp     al, ','
6153
        cmp     al, ','
6154
        jz      .main_cycle
6154
        jz      .main_cycle
6155
.done_fail:
6155
.done_fail:
6156
        stc
6156
        stc
6157
        popa
6157
        popa
6158
        ret
6158
        ret
6159
.found:
6159
.found:
6160
        test    al, al
6160
        test    al, al
6161
        jz      .done_succ
6161
        jz      .done_succ
6162
        cmp     al, '|'
6162
        cmp     al, '|'
6163
        jz      .test_exclude
6163
        jz      .test_exclude
6164
        lodsb
6164
        lodsb
6165
        jmp     .found
6165
        jmp     .found
6166
.done_succ:
6166
.done_succ:
6167
        clc
6167
        clc
6168
        popa
6168
        popa
6169
        ret
6169
        ret
6170
.test_exclude:
6170
.test_exclude:
6171
        mov     ecx, esi
6171
        mov     ecx, esi
6172
@@:
6172
@@:
6173
        lodsb
6173
        lodsb
6174
        test    al, al
6174
        test    al, al
6175
        jz      @f
6175
        jz      @f
6176
        cmp     al, ','
6176
        cmp     al, ','
6177
        jnz     @b
6177
        jnz     @b
6178
@@:
6178
@@:
6179
        dec     esi
6179
        dec     esi
6180
        mov     byte [esi], 0
6180
        mov     byte [esi], 0
6181
        call    match_single_mask_rev2
6181
        call    match_single_mask_rev2
6182
        mov     [esi], al
6182
        mov     [esi], al
6183
        inc     esi
6183
        inc     esi
6184
        jnc     .done_fail
6184
        jnc     .done_fail
6185
        test    al, al
6185
        test    al, al
6186
        jz      .done_succ
6186
        jz      .done_succ
6187
        jmp     .test_exclude
6187
        jmp     .test_exclude
6188
 
6188
 
6189
match_single_mask_rev2:
6189
match_single_mask_rev2:
6190
        pusha
6190
        pusha
6191
        jmp     match_single_mask_rev.mask_symbol
6191
        jmp     match_single_mask_rev.mask_symbol
6192
match_single_mask_rev:
6192
match_single_mask_rev:
6193
; in: esi->mask, edi->end of name, edx->start of name
6193
; in: esi->mask, edi->end of name, edx->start of name
6194
; out: CF clear <=> match
6194
; out: CF clear <=> match
6195
        pusha
6195
        pusha
6196
        mov     ecx, esi
6196
        mov     ecx, esi
6197
@@:
6197
@@:
6198
        lodsb
6198
        lodsb
6199
        test    al, al
6199
        test    al, al
6200
        jnz     @b
6200
        jnz     @b
6201
        dec     esi
6201
        dec     esi
6202
; esi->end of mask, ecx->start of mask
6202
; esi->end of mask, ecx->start of mask
6203
.mask_symbol:
6203
.mask_symbol:
6204
        dec     esi
6204
        dec     esi
6205
        cmp     esi, ecx
6205
        cmp     esi, ecx
6206
        jb      .mask_done
6206
        jb      .mask_done
6207
        mov     al, [esi]
6207
        mov     al, [esi]
6208
        cmp     al, '*'
6208
        cmp     al, '*'
6209
        jz      .asterisk
6209
        jz      .asterisk
6210
        cmp     al, '?'
6210
        cmp     al, '?'
6211
        jz      .quest
6211
        jz      .quest
6212
        cmp     al, ']'
6212
        cmp     al, ']'
6213
        jz      .list
6213
        jz      .list
6214
        dec     edi
6214
        dec     edi
6215
        cmp     edi, edx
6215
        cmp     edi, edx
6216
        jb      .done_fail
6216
        jb      .done_fail
6217
        call    match_symbol
6217
        call    match_symbol
6218
        jz      .mask_symbol
6218
        jz      .mask_symbol
6219
.done_fail:
6219
.done_fail:
6220
        stc
6220
        stc
6221
        popa
6221
        popa
6222
        ret
6222
        ret
6223
.mask_done:
6223
.mask_done:
6224
        cmp     edi, edx
6224
        cmp     edi, edx
6225
        jnz     .done_fail
6225
        jnz     .done_fail
6226
.done_succ:
6226
.done_succ:
6227
        clc
6227
        clc
6228
        popa
6228
        popa
6229
        ret
6229
        ret
6230
.quest:
6230
.quest:
6231
        dec     edi
6231
        dec     edi
6232
        cmp     edi, edx
6232
        cmp     edi, edx
6233
        jb      .done_fail
6233
        jb      .done_fail
6234
        jmp     .mask_symbol
6234
        jmp     .mask_symbol
6235
.list:
6235
.list:
6236
        dec     edi
6236
        dec     edi
6237
        cmp     edi, edx
6237
        cmp     edi, edx
6238
        jb      .done_fail
6238
        jb      .done_fail
6239
.list_check:
6239
.list_check:
6240
        dec     esi
6240
        dec     esi
6241
        cmp     esi, ecx
6241
        cmp     esi, ecx
6242
        jbe     .done_fail
6242
        jbe     .done_fail
6243
        mov     al, [esi]
6243
        mov     al, [esi]
6244
        cmp     al, '['
6244
        cmp     al, '['
6245
        jz      .done_fail
6245
        jz      .done_fail
6246
        cmp     byte [esi-1], '-'
6246
        cmp     byte [esi-1], '-'
6247
        jz      .range
6247
        jz      .range
6248
        call    match_symbol
6248
        call    match_symbol
6249
        jnz     .list_check
6249
        jnz     .list_check
6250
.listok:
6250
.listok:
6251
@@:
6251
@@:
6252
        dec     esi
6252
        dec     esi
6253
        cmp     esi, ecx
6253
        cmp     esi, ecx
6254
        jb      .done_fail
6254
        jb      .done_fail
6255
        cmp     byte [esi], '['
6255
        cmp     byte [esi], '['
6256
        jnz     @b
6256
        jnz     @b
6257
        jmp     .mask_symbol
6257
        jmp     .mask_symbol
6258
.range:
6258
.range:
6259
        call    match_symbol
6259
        call    match_symbol
6260
        jb      @f
6260
        jb      @f
6261
        mov     al, [esi-2]
6261
        mov     al, [esi-2]
6262
        call    match_symbol
6262
        call    match_symbol
6263
        jbe     .listok
6263
        jbe     .listok
6264
@@:
6264
@@:
6265
        dec     esi
6265
        dec     esi
6266
        dec     esi
6266
        dec     esi
6267
        jmp     .list_check
6267
        jmp     .list_check
6268
.asterisk:
6268
.asterisk:
6269
        cmp     esi, ecx
6269
        cmp     esi, ecx
6270
        jz      .done_succ
6270
        jz      .done_succ
6271
        cmp     byte [esi-1], '?'
6271
        cmp     byte [esi-1], '?'
6272
        jnz     @f
6272
        jnz     @f
6273
        cmp     edi, edx
6273
        cmp     edi, edx
6274
        jz      .done_fail
6274
        jz      .done_fail
6275
        dec     esi
6275
        dec     esi
6276
        jmp     .asterisk
6276
        jmp     .asterisk
6277
@@:
6277
@@:
6278
        cmp     byte [esi-1], ']'
6278
        cmp     byte [esi-1], ']'
6279
        jz      .asterisk_common
6279
        jz      .asterisk_common
6280
; the mask is ...*...
6280
; the mask is ...*...
6281
.asterisk_normal:
6281
.asterisk_normal:
6282
        mov     al, [esi-1]
6282
        mov     al, [esi-1]
6283
@@:
6283
@@:
6284
        cmp     edi, edx
6284
        cmp     edi, edx
6285
        jz      .done_fail
6285
        jz      .done_fail
6286
        call    match_symbol
6286
        call    match_symbol
6287
        jz      @f
6287
        jz      @f
6288
        dec     edi
6288
        dec     edi
6289
        jmp     @b
6289
        jmp     @b
6290
@@:
6290
@@:
6291
        dec     edi
6291
        dec     edi
6292
        dec     esi
6292
        dec     esi
6293
        call    match_single_mask_rev2
6293
        call    match_single_mask_rev2
6294
        jnc     .done_succ
6294
        jnc     .done_succ
6295
        inc     esi
6295
        inc     esi
6296
        jmp     .asterisk_normal
6296
        jmp     .asterisk_normal
6297
.asterisk_common:
6297
.asterisk_common:
6298
        push    edi
6298
        push    edi
6299
@@:
6299
@@:
6300
        call    match_single_mask_rev2
6300
        call    match_single_mask_rev2
6301
        jnc     @f
6301
        jnc     @f
6302
        dec     edi
6302
        dec     edi
6303
        cmp     edi, edx
6303
        cmp     edi, edx
6304
        jae     @b
6304
        jae     @b
6305
        pop     edi
6305
        pop     edi
6306
        jmp     .done_fail
6306
        jmp     .done_fail
6307
@@:
6307
@@:
6308
        pop     edi
6308
        pop     edi
6309
        jmp     .done_succ
6309
        jmp     .done_succ
6310
end if
6310
end if
6311
 
6311
 
6312
;tolower:
6312
;tolower:
6313
;        push    ecx
6313
;        push    ecx
6314
;        movzx   ecx, al
6314
;        movzx   ecx, al
6315
;        mov     al, [tolower_table+ecx]
6315
;        mov     al, [tolower_table+ecx]
6316
;        pop     ecx
6316
;        pop     ecx
6317
;        ret
6317
;        ret
6318
 
6318
 
6319
match_symbol:
6319
match_symbol:
6320
; in: al,[edi]=symbols
6320
; in: al,[edi]=symbols
6321
; out: flags as 'cmp al,[edi]'
6321
; out: flags as 'cmp al,[edi]'
6322
        push    eax ecx
6322
        push    eax ecx
6323
        movzx   ecx, al
6323
        movzx   ecx, al
6324
        mov     al, [tolower_table+ecx]
6324
        mov     al, [tolower_table+ecx]
6325
        movzx   ecx, byte [edi]
6325
        movzx   ecx, byte [edi]
6326
        cmp     al, [tolower_table+ecx]
6326
        cmp     al, [tolower_table+ecx]
6327
        pop     ecx eax
6327
        pop     ecx eax
6328
        ret
6328
        ret
6329
 
6329
 
6330
match_mask_rev_lowercase:
6330
match_mask_rev_lowercase:
6331
; in: esi->name, edx->end of name, edi->mask
6331
; in: esi->name, edx->end of name, edi->mask
6332
; out: CF clear <=> match
6332
; out: CF clear <=> match
6333
        pusha
6333
        pusha
6334
        xchg    esi, edx
6334
        xchg    esi, edx
6335
        xchg    esi, edi
6335
        xchg    esi, edi
6336
.main_cycle:
6336
.main_cycle:
6337
        mov     ecx, esi
6337
        mov     ecx, esi
6338
@@:
6338
@@:
6339
        lodsb
6339
        lodsb
6340
        test    al, al
6340
        test    al, al
6341
        jz      @f
6341
        jz      @f
6342
        cmp     al, ','
6342
        cmp     al, ','
6343
        jz      @f
6343
        jz      @f
6344
        cmp     al, ';'
6344
        cmp     al, ';'
6345
        jz      @f
6345
        jz      @f
6346
        cmp     al, '|'
6346
        cmp     al, '|'
6347
        jnz     @b
6347
        jnz     @b
6348
@@:
6348
@@:
6349
        dec     esi
6349
        dec     esi
6350
        mov     [esi], byte 0
6350
        mov     [esi], byte 0
6351
        call    match_single_mask_rev_lowercase
6351
        call    match_single_mask_rev_lowercase
6352
        mov     [esi], al
6352
        mov     [esi], al
6353
        inc     esi
6353
        inc     esi
6354
        jnc     .found
6354
        jnc     .found
6355
        cmp     al, ','
6355
        cmp     al, ','
6356
        jz      .main_cycle
6356
        jz      .main_cycle
6357
        cmp     al, ';'
6357
        cmp     al, ';'
6358
        jz      .main_cycle
6358
        jz      .main_cycle
6359
.done_fail:
6359
.done_fail:
6360
        stc
6360
        stc
6361
        popa
6361
        popa
6362
        ret
6362
        ret
6363
.found:
6363
.found:
6364
        test    al, al
6364
        test    al, al
6365
        jz      .done_succ
6365
        jz      .done_succ
6366
        cmp     al, '|'
6366
        cmp     al, '|'
6367
        jz      .test_exclude
6367
        jz      .test_exclude
6368
        lodsb
6368
        lodsb
6369
        jmp     .found
6369
        jmp     .found
6370
.done_succ:
6370
.done_succ:
6371
        clc
6371
        clc
6372
        popa
6372
        popa
6373
        ret
6373
        ret
6374
.test_exclude:
6374
.test_exclude:
6375
        mov     ecx, esi
6375
        mov     ecx, esi
6376
@@:
6376
@@:
6377
        lodsb
6377
        lodsb
6378
        test    al, al
6378
        test    al, al
6379
        jz      @f
6379
        jz      @f
6380
        cmp     al, ','
6380
        cmp     al, ','
6381
        jz      @f
6381
        jz      @f
6382
        cmp     al, ';'
6382
        cmp     al, ';'
6383
        jnz     @b
6383
        jnz     @b
6384
@@:
6384
@@:
6385
        dec     esi
6385
        dec     esi
6386
        mov     byte [esi], 0
6386
        mov     byte [esi], 0
6387
        call    match_single_mask_rev_lowercase
6387
        call    match_single_mask_rev_lowercase
6388
        mov     [esi], al
6388
        mov     [esi], al
6389
        inc     esi
6389
        inc     esi
6390
        jnc     .done_fail
6390
        jnc     .done_fail
6391
        test    al, al
6391
        test    al, al
6392
        jz      .done_succ
6392
        jz      .done_succ
6393
        jmp     .test_exclude
6393
        jmp     .test_exclude
6394
 
6394
 
6395
match_single_mask_rev_lowercase:
6395
match_single_mask_rev_lowercase:
6396
; in: esi->end of mask, ecx->start of mask, edi->end of name, edx->start of name
6396
; in: esi->end of mask, ecx->start of mask, edi->end of name, edx->start of name
6397
; out: CF clear <=> match
6397
; out: CF clear <=> match
6398
        push    esi edi eax
6398
        push    esi edi eax
6399
.mask_symbol:
6399
.mask_symbol:
6400
        dec     esi
6400
        dec     esi
6401
        cmp     esi, ecx
6401
        cmp     esi, ecx
6402
        jb      .mask_done
6402
        jb      .mask_done
6403
        mov     al, [esi]
6403
        mov     al, [esi]
6404
        cmp     al, '*'
6404
        cmp     al, '*'
6405
        jz      .asterisk
6405
        jz      .asterisk
6406
        dec     edi
6406
        dec     edi
6407
        cmp     edi, edx
6407
        cmp     edi, edx
6408
        jb      .done_fail
6408
        jb      .done_fail
6409
        cmp     al, '?'
6409
        cmp     al, '?'
6410
        jz      .mask_symbol
6410
        jz      .mask_symbol
6411
        cmp     al, ']'
6411
        cmp     al, ']'
6412
        jz      .list_check
6412
        jz      .list_check
6413
        cmp     al, [edi]
6413
        cmp     al, [edi]
6414
        jz      .mask_symbol
6414
        jz      .mask_symbol
6415
.done_fail:
6415
.done_fail:
6416
        stc
6416
        stc
6417
        pop     eax edi esi
6417
        pop     eax edi esi
6418
        ret
6418
        ret
6419
.mask_done:
6419
.mask_done:
6420
        cmp     edi, edx
6420
        cmp     edi, edx
6421
        jnz     .done_fail
6421
        jnz     .done_fail
6422
.done_succ:
6422
.done_succ:
6423
        clc
6423
        clc
6424
        pop     eax edi esi
6424
        pop     eax edi esi
6425
        ret
6425
        ret
6426
.list_check:
6426
.list_check:
6427
        dec     esi
6427
        dec     esi
6428
        cmp     esi, ecx
6428
        cmp     esi, ecx
6429
        jbe     .done_fail
6429
        jbe     .done_fail
6430
        mov     al, [esi]
6430
        mov     al, [esi]
6431
        cmp     al, '['
6431
        cmp     al, '['
6432
        jz      .done_fail
6432
        jz      .done_fail
6433
        cmp     byte [esi-1], '-'
6433
        cmp     byte [esi-1], '-'
6434
        jz      .range
6434
        jz      .range
6435
        cmp     al, [edi]
6435
        cmp     al, [edi]
6436
        jnz     .list_check
6436
        jnz     .list_check
6437
.listok:
6437
.listok:
6438
@@:
6438
@@:
6439
        dec     esi
6439
        dec     esi
6440
        cmp     esi, ecx
6440
        cmp     esi, ecx
6441
        jb      .done_fail
6441
        jb      .done_fail
6442
        cmp     byte [esi], '['
6442
        cmp     byte [esi], '['
6443
        jnz     @b
6443
        jnz     @b
6444
        jmp     .mask_symbol
6444
        jmp     .mask_symbol
6445
.range:
6445
.range:
6446
        cmp     al, [edi]
6446
        cmp     al, [edi]
6447
        jb      @f
6447
        jb      @f
6448
        mov     al, [esi-2]
6448
        mov     al, [esi-2]
6449
        cmp     al, [edi]
6449
        cmp     al, [edi]
6450
        jbe     .listok
6450
        jbe     .listok
6451
@@:
6451
@@:
6452
        dec     esi
6452
        dec     esi
6453
        dec     esi
6453
        dec     esi
6454
        jmp     .list_check
6454
        jmp     .list_check
6455
.asterisk:
6455
.asterisk:
6456
        cmp     esi, ecx
6456
        cmp     esi, ecx
6457
        jz      .done_succ
6457
        jz      .done_succ
6458
        cmp     byte [esi-1], '?'
6458
        cmp     byte [esi-1], '?'
6459
        jnz     @f
6459
        jnz     @f
6460
        cmp     edi, edx
6460
        cmp     edi, edx
6461
        jz      .done_fail
6461
        jz      .done_fail
6462
        dec     esi
6462
        dec     esi
6463
        dec     edi
6463
        dec     edi
6464
        jmp     .asterisk
6464
        jmp     .asterisk
6465
@@:
6465
@@:
6466
        cmp     byte [esi-1], ']'
6466
        cmp     byte [esi-1], ']'
6467
        jz      .asterisk_common
6467
        jz      .asterisk_common
6468
; the mask is ...*...
6468
; the mask is ...*...
6469
.asterisk_normal:
6469
.asterisk_normal:
6470
        mov     al, [esi-1]
6470
        mov     al, [esi-1]
6471
@@:
6471
@@:
6472
        dec     edi
6472
        dec     edi
6473
        cmp     edi, edx
6473
        cmp     edi, edx
6474
        jb      .done_fail
6474
        jb      .done_fail
6475
        cmp     al, [edi]
6475
        cmp     al, [edi]
6476
        jnz     @b
6476
        jnz     @b
6477
@@:
6477
@@:
6478
        dec     esi
6478
        dec     esi
6479
        call    match_single_mask_rev_lowercase
6479
        call    match_single_mask_rev_lowercase
6480
        jnc     .done_succ
6480
        jnc     .done_succ
6481
        inc     esi
6481
        inc     esi
6482
        jmp     .asterisk_normal
6482
        jmp     .asterisk_normal
6483
.asterisk_common:
6483
.asterisk_common:
6484
        push    edi
6484
        push    edi
6485
@@:
6485
@@:
6486
        call    match_single_mask_rev_lowercase
6486
        call    match_single_mask_rev_lowercase
6487
        jnc     @f
6487
        jnc     @f
6488
        dec     edi
6488
        dec     edi
6489
        cmp     edi, edx
6489
        cmp     edi, edx
6490
        jae     @b
6490
        jae     @b
6491
        pop     edi
6491
        pop     edi
6492
        jmp     .done_fail
6492
        jmp     .done_fail
6493
@@:
6493
@@:
6494
        pop     edi
6494
        pop     edi
6495
        jmp     .done_succ
6495
        jmp     .done_succ
6496
 
6496
 
6497
find_extension:
6497
find_extension:
6498
        lea     esi, [ecx+40]
6498
        lea     esi, [ecx+40]
6499
        push    esi
6499
        push    esi
6500
@@:
6500
@@:
6501
        lodsb
6501
        lodsb
6502
        test    al, al
6502
        test    al, al
6503
        jnz     @b
6503
        jnz     @b
6504
@@:
6504
@@:
6505
        dec     esi
6505
        dec     esi
6506
        cmp     byte [esi], '.'
6506
        cmp     byte [esi], '.'
6507
        jz      .found_ext
6507
        jz      .found_ext
6508
        cmp     esi, [esp]
6508
        cmp     esi, [esp]
6509
        ja      @b
6509
        ja      @b
6510
; empty extension
6510
; empty extension
6511
        pop     esi
6511
        pop     esi
6512
        stc
6512
        stc
6513
        ret
6513
        ret
6514
.found_ext:
6514
.found_ext:
6515
        inc     esi
6515
        inc     esi
6516
        mov     edi, [associations]
6516
        mov     edi, [associations]
6517
        test    edi, edi
6517
        test    edi, edi
6518
        jz      .notfound
6518
        jz      .notfound
6519
.find_loop:
6519
.find_loop:
6520
        push    esi edi
6520
        push    esi edi
6521
        call    strcmpi
6521
        call    strcmpi
6522
        pop     edi esi
6522
        pop     edi esi
6523
        pushf
6523
        pushf
6524
@@:
6524
@@:
6525
        inc     edi
6525
        inc     edi
6526
        cmp     byte [edi-1], 0
6526
        cmp     byte [edi-1], 0
6527
        jnz     @b
6527
        jnz     @b
6528
        popf
6528
        popf
6529
        jz      .found
6529
        jz      .found
6530
@@:
6530
@@:
6531
        inc     edi
6531
        inc     edi
6532
        cmp     byte [edi-1], 0
6532
        cmp     byte [edi-1], 0
6533
        jnz     @b
6533
        jnz     @b
6534
        cmp     byte [edi], 0
6534
        cmp     byte [edi], 0
6535
        jnz     .find_loop
6535
        jnz     .find_loop
6536
.notfound:
6536
.notfound:
6537
; unknown extension
6537
; unknown extension
6538
        stc
6538
        stc
6539
.found:
6539
.found:
6540
        pop     esi
6540
        pop     esi
6541
        ret
6541
        ret
6542
 
6542
 
6543
header  db      'Kolibri Far ',version,0
6543
header  db      'Kolibri Far ',version,0
6544
 
6544
 
6545
nomem_draw      db      'No memory for redraw.',0
6545
nomem_draw      db      'No memory for redraw.',0
6546
.size = $ - nomem_draw
6546
.size = $ - nomem_draw
6547
 
6547
 
6548
def_left_dir    db      '/rd/1',0
6548
def_left_dir    db      '/rd/1',0
6549
def_right_dir   db      '/hd0/1',0
6549
def_right_dir   db      '/hd0/1',0
6550
 
6550
 
6551
bSilentFolderMode db    1
6551
bSilentFolderMode db    1
6552
 
6552
 
6553
bQuickSearchMode db     0
6553
bQuickSearchMode db     0
6554
bDisplayQuickSearch db  0
6554
bDisplayQuickSearch db  0
6555
 
6555
 
6556
if lang eq ru
6556
if lang eq ru
6557
aFolder         db      ' ¯ª '
6557
aFolder         db      ' ¯ª '
6558
.size = $-aFolder
6558
.size = $-aFolder
6559
aUp             db      '‚¢¥àå'
6559
aUp             db      '‚¢¥àå'
6560
.size = $-aUp
6560
.size = $-aUp
6561
aDrive          db      '„¨áª',0
6561
aDrive          db      '„¨áª',0
6562
aScreens        db      'ªà ­ë',0
6562
aScreens        db      'ªà ­ë',0
6563
else
6563
else
6564
aFolder         db      'Folder'
6564
aFolder         db      'Folder'
6565
.size = $-aFolder
6565
.size = $-aFolder
6566
aUp             db      'Up'
6566
aUp             db      'Up'
6567
.size = $-aUp
6567
.size = $-aUp
6568
aDrive          db      'Drive',0
6568
aDrive          db      'Drive',0
6569
aScreens        db      'Screens',0
6569
aScreens        db      'Screens',0
6570
end if
6570
end if
6571
 
6571
 
6572
align 4
6572
align 4
6573
_10d dd 10
6573
_10d dd 10
6574
_100d dd 100
6574
_100d dd 100
6575
muldiv10 dd 429496729
6575
muldiv10 dd 429496729
6576
_10 db 10
6576
_10 db 10
6577
_100 db 100
6577
_100 db 100
6578
 
6578
 
6579
fpu_cw  dw      000011100111111b
6579
fpu_cw  dw      000011100111111b
6580
 
6580
 
6581
keybar_panels:
6581
keybar_panels:
6582
if lang eq ru
6582
if lang eq ru
6583
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
6583
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
6584
        db      '®¬®éì'
6584
        db      '®¬®éì'
6585
        db      '®«ì§Œ'
6585
        db      '®«ì§Œ'
6586
        db      'à®á¬ '
6586
        db      'à®á¬ '
6587
        db      '¥¤ ªâ'
6587
        db      '¥¤ ªâ'
6588
        db      'Š®¯¨à '
6588
        db      'Š®¯¨à '
6589
        db      '¥à¥­ '
6589
        db      '¥à¥­ '
6590
        db      ' ¯ª  '
6590
        db      ' ¯ª  '
6591
        db      '“¤ «¥­'
6591
        db      '“¤ «¥­'
6592
        db      'Š®­äŒ­'
6592
        db      'Š®­äŒ­'
6593
        db      '‚ë室 '
6593
        db      '‚ë室 '
6594
        db      'Œ®¤ã«¨'
6594
        db      'Œ®¤ã«¨'
6595
        db      'ªà ­ë'
6595
        db      'ªà ­ë'
6596
; Shift
6596
; Shift
6597
        db      '„®¡ ¢«'
6597
        db      '„®¡ ¢«'
6598
        db      ' á¯ ª'
6598
        db      ' á¯ ª'
6599
        db      '€à劮¬'
6599
        db      '€à劮¬'
6600
        db      '¥¤ ª.'
6600
        db      '¥¤ ª.'
6601
        db      'Š®¯¨à '
6601
        db      'Š®¯¨à '
6602
        db      '¥à¥¨¬'
6602
        db      '¥à¥¨¬'
6603
        db      '      '
6603
        db      '      '
6604
        db      '“¤ «¥­'
6604
        db      '“¤ «¥­'
6605
        db      '‘®åà ­'
6605
        db      '‘®åà ­'
6606
        db      '®á«¤­'
6606
        db      '®á«¤­'
6607
        db      'ƒà㯯ë'
6607
        db      'ƒà㯯ë'
6608
        db      '‚ë¡à ­'
6608
        db      '‚ë¡à ­'
6609
; Ctrl
6609
; Ctrl
6610
        db      '‹¥¢ ï '
6610
        db      '‹¥¢ ï '
6611
        db      'à ¢ ï'
6611
        db      'à ¢ ï'
6612
        db      'ˆ¬ï   '
6612
        db      'ˆ¬ï   '
6613
        db      ' áè¨à'
6613
        db      ' áè¨à'
6614
        db      'Œ®¤¨ä '
6614
        db      'Œ®¤¨ä '
6615
        db      ' §¬¥à'
6615
        db      ' §¬¥à'
6616
        db      '¥á®àâ'
6616
        db      '¥á®àâ'
6617
        db      '‘®§¤ ­'
6617
        db      '‘®§¤ ­'
6618
        db      '„®áâã¯'
6618
        db      '„®áâã¯'
6619
        db      'Ž¯¨á ­'
6619
        db      'Ž¯¨á ­'
6620
        db      '‚« ¤¥«'
6620
        db      '‚« ¤¥«'
6621
        db      '‘®àâ  '
6621
        db      '‘®àâ  '
6622
; Ctrl+Shift
6622
; Ctrl+Shift
6623
        db      '      '
6623
        db      '      '
6624
        db      '      '
6624
        db      '      '
6625
        db      'à®á¬ '
6625
        db      'à®á¬ '
6626
        db      '¥¤ ªâ'
6626
        db      '¥¤ ªâ'
6627
        db      '      '
6627
        db      '      '
6628
        db      '      '
6628
        db      '      '
6629
        db      '      '
6629
        db      '      '
6630
        db      '      '
6630
        db      '      '
6631
        db      '      '
6631
        db      '      '
6632
        db      '      '
6632
        db      '      '
6633
        db      '      '
6633
        db      '      '
6634
        db      '      '
6634
        db      '      '
6635
; Alt
6635
; Alt
6636
        db      '‹¥¢ ï '
6636
        db      '‹¥¢ ï '
6637
        db      'à ¢ ï'
6637
        db      'à ¢ ï'
6638
        db      '‘¬®âà.'
6638
        db      '‘¬®âà.'
6639
        db      '¥¤ ª.'
6639
        db      '¥¤ ª.'
6640
        db      '¥ç âì'
6640
        db      '¥ç âì'
6641
        db      '‘¢ï§ì '
6641
        db      '‘¢ï§ì '
6642
        db      'ˆáª âì'
6642
        db      'ˆáª âì'
6643
        db      'ˆáâ®à '
6643
        db      'ˆáâ®à '
6644
        db      '‚¨¤¥® '
6644
        db      '‚¨¤¥® '
6645
        db      '„¥à¥¢®'
6645
        db      '„¥à¥¢®'
6646
        db      'ˆáâà '
6646
        db      'ˆáâà '
6647
        db      'ˆá⏠¯'
6647
        db      'ˆá⏠¯'
6648
; Alt+Shift
6648
; Alt+Shift
6649
        db      '      '
6649
        db      '      '
6650
        db      '      '
6650
        db      '      '
6651
        db      '      '
6651
        db      '      '
6652
        db      '      '
6652
        db      '      '
6653
        db      '      '
6653
        db      '      '
6654
        db      '      '
6654
        db      '      '
6655
        db      '      '
6655
        db      '      '
6656
        db      '      '
6656
        db      '      '
6657
        db      'Š®­ä«'
6657
        db      'Š®­ä«'
6658
        db      '      '
6658
        db      '      '
6659
        db      '      '
6659
        db      '      '
6660
        db      '      '
6660
        db      '      '
6661
; Alt+Ctrl
6661
; Alt+Ctrl
6662
times 12 db     '      '
6662
times 12 db     '      '
6663
; Alt+Ctrl+Shift
6663
; Alt+Ctrl+Shift
6664
times 12 db     '      '
6664
times 12 db     '      '
6665
else
6665
else
6666
; No modificators
6666
; No modificators
6667
        db      'Help  '
6667
        db      'Help  '
6668
        db      'UserMn'
6668
        db      'UserMn'
6669
        db      'View  '
6669
        db      'View  '
6670
        db      'Edit  '
6670
        db      'Edit  '
6671
        db      'Copy  '
6671
        db      'Copy  '
6672
        db      'RenMov'
6672
        db      'RenMov'
6673
        db      'MkFold'
6673
        db      'MkFold'
6674
        db      'Delete'
6674
        db      'Delete'
6675
        db      'ConfMn'
6675
        db      'ConfMn'
6676
        db      'Quit  '
6676
        db      'Quit  '
6677
        db      'Plugin'
6677
        db      'Plugin'
6678
        db      'Screen'
6678
        db      'Screen'
6679
; Shift
6679
; Shift
6680
        db      'Add   '
6680
        db      'Add   '
6681
        db      'Extrct'
6681
        db      'Extrct'
6682
        db      'ArcCmd'
6682
        db      'ArcCmd'
6683
        db      'Edit..'
6683
        db      'Edit..'
6684
        db      'Copy  '
6684
        db      'Copy  '
6685
        db      'Rename'
6685
        db      'Rename'
6686
        db      '      '
6686
        db      '      '
6687
        db      'Delete'
6687
        db      'Delete'
6688
        db      'Save  '
6688
        db      'Save  '
6689
        db      'Last  '
6689
        db      'Last  '
6690
        db      'Group '
6690
        db      'Group '
6691
        db      'SelUp '
6691
        db      'SelUp '
6692
; Ctrl
6692
; Ctrl
6693
        db      'Left  '
6693
        db      'Left  '
6694
        db      'Right '
6694
        db      'Right '
6695
        db      'Name  '
6695
        db      'Name  '
6696
        db      'Extens'
6696
        db      'Extens'
6697
        db      'Modifn'
6697
        db      'Modifn'
6698
        db      'Size  '
6698
        db      'Size  '
6699
        db      'Unsort'
6699
        db      'Unsort'
6700
        db      'Creatn'
6700
        db      'Creatn'
6701
        db      'Access'
6701
        db      'Access'
6702
        db      'Descr '
6702
        db      'Descr '
6703
        db      'Owner '
6703
        db      'Owner '
6704
        db      'Sort  '
6704
        db      'Sort  '
6705
; Ctrl+Shift
6705
; Ctrl+Shift
6706
        db      '      '
6706
        db      '      '
6707
        db      '      '
6707
        db      '      '
6708
        db      'View  '
6708
        db      'View  '
6709
        db      'Edit  '
6709
        db      'Edit  '
6710
        db      '      '
6710
        db      '      '
6711
        db      '      '
6711
        db      '      '
6712
        db      '      '
6712
        db      '      '
6713
        db      '      '
6713
        db      '      '
6714
        db      '      '
6714
        db      '      '
6715
        db      '      '
6715
        db      '      '
6716
        db      '      '
6716
        db      '      '
6717
        db      '      '
6717
        db      '      '
6718
; Alt
6718
; Alt
6719
        db      'Left  '
6719
        db      'Left  '
6720
        db      'Right '
6720
        db      'Right '
6721
        db      'View..'
6721
        db      'View..'
6722
        db      'Edit..'
6722
        db      'Edit..'
6723
        db      'Print '
6723
        db      'Print '
6724
        db      'MkLink'
6724
        db      'MkLink'
6725
        db      'Find  '
6725
        db      'Find  '
6726
        db      'Histry'
6726
        db      'Histry'
6727
        db      'Video '
6727
        db      'Video '
6728
        db      'Tree  '
6728
        db      'Tree  '
6729
        db      'ViewHs'
6729
        db      'ViewHs'
6730
        db      'FoldHs'
6730
        db      'FoldHs'
6731
; Alt+Shift
6731
; Alt+Shift
6732
        db      '      '
6732
        db      '      '
6733
        db      '      '
6733
        db      '      '
6734
        db      '      '
6734
        db      '      '
6735
        db      '      '
6735
        db      '      '
6736
        db      '      '
6736
        db      '      '
6737
        db      '      '
6737
        db      '      '
6738
        db      '      '
6738
        db      '      '
6739
        db      '      '
6739
        db      '      '
6740
        db      'ConfPl'
6740
        db      'ConfPl'
6741
        db      '      '
6741
        db      '      '
6742
        db      '      '
6742
        db      '      '
6743
        db      '      '
6743
        db      '      '
6744
; Alt+Ctrl
6744
; Alt+Ctrl
6745
times 12 db     '      '
6745
times 12 db     '      '
6746
; Alt+Ctrl+Shift
6746
; Alt+Ctrl+Shift
6747
times 12 db     '      '
6747
times 12 db     '      '
6748
end if
6748
end if
6749
 
6749
 
6750
keybar_viewer:
6750
keybar_viewer:
6751
if lang eq ru
6751
if lang eq ru
6752
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
6752
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
6753
        db      '®¬®éì'
6753
        db      '®¬®éì'
6754
        db      ' §¢¥à'
6754
        db      ' §¢¥à'
6755
        db      '‚ë室 '
6755
        db      '‚ë室 '
6756
        db      'Š®¤   '
6756
        db      'Š®¤   '
6757
        db      '      '
6757
        db      '      '
6758
        db      '¥¤ ªâ'
6758
        db      '¥¤ ªâ'
6759
        db      '®¨áª '
6759
        db      '®¨áª '
6760
keybar_cp:
6760
keybar_cp:
6761
        db      'cp1251'
6761
        db      'cp1251'
6762
        db      '      '
6762
        db      '      '
6763
        db      '‚ë室 '
6763
        db      '‚ë室 '
6764
        db      'Œ®¤ã«¨'
6764
        db      'Œ®¤ã«¨'
6765
        db      'ªà ­ë'
6765
        db      'ªà ­ë'
6766
; Shift
6766
; Shift
6767
        db      '      '
6767
        db      '      '
6768
        db      '‘«®¢  '
6768
        db      '‘«®¢  '
6769
        db      '      '
6769
        db      '      '
6770
        db      '      '
6770
        db      '      '
6771
        db      '      '
6771
        db      '      '
6772
        db      '      '
6772
        db      '      '
6773
        db      '„ «ìè¥'
6773
        db      '„ «ìè¥'
6774
        db      '’ ¡«¨æ'
6774
        db      '’ ¡«¨æ'
6775
        db      '      '
6775
        db      '      '
6776
        db      '      '
6776
        db      '      '
6777
        db      '      '
6777
        db      '      '
6778
        db      '      '
6778
        db      '      '
6779
; Ctrl
6779
; Ctrl
6780
        db      '      '
6780
        db      '      '
6781
        db      '      '
6781
        db      '      '
6782
        db      '      '
6782
        db      '      '
6783
        db      '      '
6783
        db      '      '
6784
        db      '      '
6784
        db      '      '
6785
        db      '      '
6785
        db      '      '
6786
        db      '      '
6786
        db      '      '
6787
        db      '      '
6787
        db      '      '
6788
        db      '      '
6788
        db      '      '
6789
        db      '®§¨æ '
6789
        db      '®§¨æ '
6790
        db      '      '
6790
        db      '      '
6791
        db      '      '
6791
        db      '      '
6792
; Ctrl+Shift
6792
; Ctrl+Shift
6793
        db      '      '
6793
        db      '      '
6794
        db      '      '
6794
        db      '      '
6795
        db      '      '
6795
        db      '      '
6796
        db      '      '
6796
        db      '      '
6797
        db      '      '
6797
        db      '      '
6798
        db      '      '
6798
        db      '      '
6799
        db      '      '
6799
        db      '      '
6800
        db      '      '
6800
        db      '      '
6801
        db      '      '
6801
        db      '      '
6802
        db      '      '
6802
        db      '      '
6803
        db      '      '
6803
        db      '      '
6804
        db      '      '
6804
        db      '      '
6805
; Alt
6805
; Alt
6806
        db      '      '
6806
        db      '      '
6807
        db      '      '
6807
        db      '      '
6808
        db      '      '
6808
        db      '      '
6809
        db      '      '
6809
        db      '      '
6810
        db      '¥ç âì'
6810
        db      '¥ç âì'
6811
        db      '      '
6811
        db      '      '
6812
        db      ' § ¤ '
6812
        db      ' § ¤ '
6813
        db      '¥à¥©â'
6813
        db      '¥à¥©â'
6814
        db      '‚¨¤¥® '
6814
        db      '‚¨¤¥® '
6815
        db      '      '
6815
        db      '      '
6816
        db      'ˆáâà '
6816
        db      'ˆáâà '
6817
        db      '      '
6817
        db      '      '
6818
; Alt+Shift
6818
; Alt+Shift
6819
        db      '      '
6819
        db      '      '
6820
        db      '      '
6820
        db      '      '
6821
        db      '      '
6821
        db      '      '
6822
        db      '      '
6822
        db      '      '
6823
        db      '      '
6823
        db      '      '
6824
        db      '      '
6824
        db      '      '
6825
        db      '      '
6825
        db      '      '
6826
        db      '      '
6826
        db      '      '
6827
        db      'Š®­ä¨£'
6827
        db      'Š®­ä¨£'
6828
        db      '      '
6828
        db      '      '
6829
        db      '      '
6829
        db      '      '
6830
        db      '      '
6830
        db      '      '
6831
; Alt+Ctrl
6831
; Alt+Ctrl
6832
times 12 db     '      '
6832
times 12 db     '      '
6833
; Alt+Ctrl+Shift
6833
; Alt+Ctrl+Shift
6834
times 12 db     '      '
6834
times 12 db     '      '
6835
else
6835
else
6836
; No modificators
6836
; No modificators
6837
        db      'Help  '
6837
        db      'Help  '
6838
        db      'Unwrap'
6838
        db      'Unwrap'
6839
        db      'Quit  '
6839
        db      'Quit  '
6840
        db      'Hex   '
6840
        db      'Hex   '
6841
        db      '      '
6841
        db      '      '
6842
        db      'Edit  '
6842
        db      'Edit  '
6843
        db      'Search'
6843
        db      'Search'
6844
keybar_cp:
6844
keybar_cp:
6845
        db      'cp1251'
6845
        db      'cp1251'
6846
        db      '      '
6846
        db      '      '
6847
        db      'Quit  '
6847
        db      'Quit  '
6848
        db      'Plugin'
6848
        db      'Plugin'
6849
        db      'Screen'
6849
        db      'Screen'
6850
; Shift
6850
; Shift
6851
        db      '      '
6851
        db      '      '
6852
        db      'WWrap '
6852
        db      'WWrap '
6853
        db      '      '
6853
        db      '      '
6854
        db      '      '
6854
        db      '      '
6855
        db      '      '
6855
        db      '      '
6856
        db      '      '
6856
        db      '      '
6857
        db      'Next  '
6857
        db      'Next  '
6858
        db      'Table '
6858
        db      'Table '
6859
        db      '      '
6859
        db      '      '
6860
        db      '      '
6860
        db      '      '
6861
        db      '      '
6861
        db      '      '
6862
        db      '      '
6862
        db      '      '
6863
; Ctrl
6863
; Ctrl
6864
        db      '      '
6864
        db      '      '
6865
        db      '      '
6865
        db      '      '
6866
        db      '      '
6866
        db      '      '
6867
        db      '      '
6867
        db      '      '
6868
        db      '      '
6868
        db      '      '
6869
        db      '      '
6869
        db      '      '
6870
        db      '      '
6870
        db      '      '
6871
        db      '      '
6871
        db      '      '
6872
        db      '      '
6872
        db      '      '
6873
        db      'GoFile'
6873
        db      'GoFile'
6874
        db      '      '
6874
        db      '      '
6875
        db      '      '
6875
        db      '      '
6876
; Ctrl+Shift
6876
; Ctrl+Shift
6877
        db      '      '
6877
        db      '      '
6878
        db      '      '
6878
        db      '      '
6879
        db      '      '
6879
        db      '      '
6880
        db      '      '
6880
        db      '      '
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
; Alt
6889
; Alt
6890
        db      '      '
6890
        db      '      '
6891
        db      '      '
6891
        db      '      '
6892
        db      '      '
6892
        db      '      '
6893
        db      '      '
6893
        db      '      '
6894
        db      'Print '
6894
        db      'Print '
6895
        db      '      '
6895
        db      '      '
6896
        db      'Prev  '
6896
        db      'Prev  '
6897
        db      'Goto  '
6897
        db      'Goto  '
6898
        db      'Video '
6898
        db      'Video '
6899
        db      '      '
6899
        db      '      '
6900
        db      'ViewHs'
6900
        db      'ViewHs'
6901
        db      '      '
6901
        db      '      '
6902
; Alt+Shift
6902
; Alt+Shift
6903
        db      '      '
6903
        db      '      '
6904
        db      '      '
6904
        db      '      '
6905
        db      '      '
6905
        db      '      '
6906
        db      '      '
6906
        db      '      '
6907
        db      '      '
6907
        db      '      '
6908
        db      '      '
6908
        db      '      '
6909
        db      '      '
6909
        db      '      '
6910
        db      '      '
6910
        db      '      '
6911
        db      'Config'
6911
        db      'Config'
6912
        db      '      '
6912
        db      '      '
6913
        db      '      '
6913
        db      '      '
6914
        db      '      '
6914
        db      '      '
6915
; Alt+Ctrl
6915
; Alt+Ctrl
6916
times 12 db     '      '
6916
times 12 db     '      '
6917
; Alt+Ctrl+Shift
6917
; Alt+Ctrl+Shift
6918
times 12 db     '      '
6918
times 12 db     '      '
6919
end if
6919
end if
6920
 
6920
 
6921
keybar_editor:
6921
keybar_editor:
6922
if lang eq ru
6922
if lang eq ru
6923
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
6923
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
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
keybar_cp2:
6931
keybar_cp2:
6932
        db      'cp1251'
6932
        db      'cp1251'
6933
        db      '      '
6933
        db      '      '
6934
        db      '‚ë室 '
6934
        db      '‚ë室 '
6935
        db      'Œ®¤ã«¨'
6935
        db      'Œ®¤ã«¨'
6936
        db      'ªà ­ë'
6936
        db      'ªà ­ë'
6937
; Shift
6937
; Shift
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
        db      '’ ¡«¨æ'
6945
        db      '’ ¡«¨æ'
6946
        db      '      '
6946
        db      '      '
6947
        db      '‘åà‚ëå'
6947
        db      '‘åà‚ëå'
6948
        db      '      '
6948
        db      '      '
6949
        db      '      '
6949
        db      '      '
6950
; Ctrl
6950
; Ctrl
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
        db      '      '
6958
        db      '      '
6959
        db      '      '
6959
        db      '      '
6960
        db      '®§¨æ '
6960
        db      '®§¨æ '
6961
        db      '      '
6961
        db      '      '
6962
        db      '      '
6962
        db      '      '
6963
; Ctrl+Shift
6963
; Ctrl+Shift
6964
        db      '      '
6964
        db      '      '
6965
        db      '      '
6965
        db      '      '
6966
        db      '      '
6966
        db      '      '
6967
        db      '      '
6967
        db      '      '
6968
        db      '      '
6968
        db      '      '
6969
        db      '      '
6969
        db      '      '
6970
        db      '      '
6970
        db      '      '
6971
        db      '      '
6971
        db      '      '
6972
        db      '      '
6972
        db      '      '
6973
        db      '      '
6973
        db      '      '
6974
        db      '      '
6974
        db      '      '
6975
        db      '      '
6975
        db      '      '
6976
; Alt
6976
; Alt
6977
        db      '      '
6977
        db      '      '
6978
        db      '      '
6978
        db      '      '
6979
        db      '      '
6979
        db      '      '
6980
        db      '      '
6980
        db      '      '
6981
        db      '¥ç âì'
6981
        db      '¥ç âì'
6982
        db      '      '
6982
        db      '      '
6983
        db      '      '
6983
        db      '      '
6984
        db      '‘âப '
6984
        db      '‘âப '
6985
        db      '‚¨¤¥® '
6985
        db      '‚¨¤¥® '
6986
        db      '      '
6986
        db      '      '
6987
        db      'ˆáâà '
6987
        db      'ˆáâà '
6988
        db      '      '
6988
        db      '      '
6989
; Alt+Shift
6989
; Alt+Shift
6990
        db      '      '
6990
        db      '      '
6991
        db      '      '
6991
        db      '      '
6992
        db      '      '
6992
        db      '      '
6993
        db      '      '
6993
        db      '      '
6994
        db      '      '
6994
        db      '      '
6995
        db      '      '
6995
        db      '      '
6996
        db      '      '
6996
        db      '      '
6997
        db      '      '
6997
        db      '      '
6998
        db      'Š®­ä¨£'
6998
        db      'Š®­ä¨£'
6999
        db      '      '
6999
        db      '      '
7000
        db      '      '
7000
        db      '      '
7001
        db      '      '
7001
        db      '      '
7002
; Alt+Ctrl
7002
; Alt+Ctrl
7003
times 12 db     '      '
7003
times 12 db     '      '
7004
; Alt+Ctrl+Shift
7004
; Alt+Ctrl+Shift
7005
times 12 db     '      '
7005
times 12 db     '      '
7006
else
7006
else
7007
; No modificators
7007
; No modificators
7008
        db      'Help  '
7008
        db      'Help  '
7009
        db      'Save  '
7009
        db      'Save  '
7010
        db      '      '
7010
        db      '      '
7011
        db      '      '
7011
        db      '      '
7012
        db      '      '
7012
        db      '      '
7013
        db      'View  '
7013
        db      'View  '
7014
        db      'Search'
7014
        db      'Search'
7015
keybar_cp2:
7015
keybar_cp2:
7016
        db      'cp1251'
7016
        db      'cp1251'
7017
        db      '      '
7017
        db      '      '
7018
        db      'Quit  '
7018
        db      'Quit  '
7019
        db      'Plugin'
7019
        db      'Plugin'
7020
        db      'Screen'
7020
        db      'Screen'
7021
; Shift
7021
; Shift
7022
        db      '      '
7022
        db      '      '
7023
        db      'SaveAs'
7023
        db      'SaveAs'
7024
        db      '      '
7024
        db      '      '
7025
        db      'Edit..'
7025
        db      'Edit..'
7026
        db      '      '
7026
        db      '      '
7027
        db      '      '
7027
        db      '      '
7028
        db      'Next  '
7028
        db      'Next  '
7029
        db      'Table '
7029
        db      'Table '
7030
        db      '      '
7030
        db      '      '
7031
        db      'SaveQ '
7031
        db      'SaveQ '
7032
        db      '      '
7032
        db      '      '
7033
        db      '      '
7033
        db      '      '
7034
; Ctrl
7034
; Ctrl
7035
        db      '      '
7035
        db      '      '
7036
        db      '      '
7036
        db      '      '
7037
        db      '      '
7037
        db      '      '
7038
        db      '      '
7038
        db      '      '
7039
        db      '      '
7039
        db      '      '
7040
        db      '      '
7040
        db      '      '
7041
        db      'Replac'
7041
        db      'Replac'
7042
        db      '      '
7042
        db      '      '
7043
        db      '      '
7043
        db      '      '
7044
        db      'GoFile'
7044
        db      'GoFile'
7045
        db      '      '
7045
        db      '      '
7046
        db      '      '
7046
        db      '      '
7047
; Ctrl+Shift
7047
; Ctrl+Shift
7048
        db      '      '
7048
        db      '      '
7049
        db      '      '
7049
        db      '      '
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
        db      '      '
7057
        db      '      '
7058
        db      '      '
7058
        db      '      '
7059
        db      '      '
7059
        db      '      '
7060
; Alt
7060
; Alt
7061
        db      '      '
7061
        db      '      '
7062
        db      '      '
7062
        db      '      '
7063
        db      '      '
7063
        db      '      '
7064
        db      '      '
7064
        db      '      '
7065
        db      'Print '
7065
        db      'Print '
7066
        db      '      '
7066
        db      '      '
7067
        db      '      '
7067
        db      '      '
7068
        db      'Goto  '
7068
        db      'Goto  '
7069
        db      'Video '
7069
        db      'Video '
7070
        db      '      '
7070
        db      '      '
7071
        db      'ViewHs'
7071
        db      'ViewHs'
7072
        db      '      '
7072
        db      '      '
7073
; Alt+Shift
7073
; Alt+Shift
7074
        db      '      '
7074
        db      '      '
7075
        db      '      '
7075
        db      '      '
7076
        db      '      '
7076
        db      '      '
7077
        db      '      '
7077
        db      '      '
7078
        db      '      '
7078
        db      '      '
7079
        db      '      '
7079
        db      '      '
7080
        db      '      '
7080
        db      '      '
7081
        db      '      '
7081
        db      '      '
7082
        db      'Config'
7082
        db      'Config'
7083
        db      '      '
7083
        db      '      '
7084
        db      '      '
7084
        db      '      '
7085
        db      '      '
7085
        db      '      '
7086
; Alt+Ctrl
7086
; Alt+Ctrl
7087
times 12 db     '      '
7087
times 12 db     '      '
7088
; Alt+Ctrl+Shift
7088
; Alt+Ctrl+Shift
7089
times 12 db     '      '
7089
times 12 db     '      '
7090
end if
7090
end if
7091
 
7091
 
7092
        align   4
7092
        align   4
7093
cur_width       dd      80
7093
cur_width       dd      80
7094
cur_height      dd      25
7094
cur_height      dd      25
7095
saved_width     dd      -1
7095
saved_width     dd      -1
7096
saved_height    dd      -1
7096
saved_height    dd      -1
7097
fill_width      dd      0
7097
fill_width      dd      0
7098
fill_height     dd      0
7098
fill_height     dd      0
7099
max_width = 256
7099
max_width = 256
7100
max_height = 256
7100
max_height = 256
7101
console_data_ptr dd     0
7101
console_data_ptr dd     0
7102
 
7102
 
7103
cursor_x        dd      -1
7103
cursor_x        dd      -1
7104
cursor_y        dd      -1
7104
cursor_y        dd      -1
7105
cursor_size     dd      cursor_normal_size
7105
cursor_size     dd      cursor_normal_size
7106
cur_cursor_pos  dd      -1
7106
cur_cursor_pos  dd      -1
7107
old_cursor_pos  dd      -1
7107
old_cursor_pos  dd      -1
7108
 
7108
 
7109
idle_interval   dd      -1
7109
idle_interval   dd      -1
7110
 
7110
 
7111
active_panel    dd      panel1_data
7111
active_panel    dd      panel1_data
7112
 
7112
 
7113
associations    dd      0
7113
associations    dd      0
7114
associations_size dd    1               ; terminating zero
7114
associations_size dd    1               ; terminating zero
7115
associations_allocated dd 0x1000        ; start with one page
7115
associations_allocated dd 0x1000        ; start with one page
7116
 
7116
 
7117
console_colors  dd      0x000000, 0x000080, 0x008000, 0x008080
7117
console_colors  dd      0x000000, 0x000080, 0x008000, 0x008080
7118
                dd      0x800000, 0x800080, 0x808000, 0xC0C0C0
7118
                dd      0x800000, 0x800080, 0x808000, 0xC0C0C0
7119
                dd      0x808080, 0x0000FF, 0x00FF00, 0x00FFFF
7119
                dd      0x808080, 0x0000FF, 0x00FF00, 0x00FFFF
7120
                dd      0xFF0000, 0xFF00FF, 0xFFFF00, 0xFFFFFF
7120
                dd      0xFF0000, 0xFF00FF, 0xFFFF00, 0xFFFFFF
7121
 
7121
 
7122
compare_fns     dd      compare_name
7122
compare_fns     dd      compare_name
7123
                dd      compare_name_rev
7123
                dd      compare_name_rev
7124
                dd      compare_ext
7124
                dd      compare_ext
7125
                dd      compare_ext_rev
7125
                dd      compare_ext_rev
7126
                dd      compare_modified
7126
                dd      compare_modified
7127
                dd      compare_modified_rev
7127
                dd      compare_modified_rev
7128
                dd      compare_size
7128
                dd      compare_size
7129
                dd      compare_size_rev
7129
                dd      compare_size_rev
7130
                dd      compare_unordered
7130
                dd      compare_unordered
7131
                dd      compare_unordered_rev
7131
                dd      compare_unordered_rev
7132
                dd      compare_created
7132
                dd      compare_created
7133
                dd      compare_created_rev
7133
                dd      compare_created_rev
7134
                dd      compare_accessed
7134
                dd      compare_accessed
7135
                dd      compare_accessed_rev
7135
                dd      compare_accessed_rev
7136
 
7136
 
7137
ctrlkey_tests   dd      ctrlkey_test0
7137
ctrlkey_tests   dd      ctrlkey_test0
7138
                dd      ctrlkey_test1
7138
                dd      ctrlkey_test1
7139
                dd      ctrlkey_test2
7139
                dd      ctrlkey_test2
7140
                dd      ctrlkey_test3
7140
                dd      ctrlkey_test3
7141
                dd      ctrlkey_test4
7141
                dd      ctrlkey_test4
7142
ctrlkey_tests_num = 5
7142
ctrlkey_tests_num = 5
7143
 
7143
 
7144
virtual at 0
7144
virtual at 0
7145
screen_vtable:
7145
screen_vtable:
7146
        .OnRedraw       dd      ?
7146
        .OnRedraw       dd      ?
7147
        .OnActivate     dd      ?
7147
        .OnActivate     dd      ?
7148
        .OnIdle         dd      ?
7148
        .OnIdle         dd      ?
7149
        .OnKey          dd      ?
7149
        .OnKey          dd      ?
7150
        .keybar         dd      ?
7150
        .keybar         dd      ?
7151
        .getname        dd      ?
7151
        .getname        dd      ?
7152
        .OnExit         dd      ?
7152
        .OnExit         dd      ?
7153
        .IsHandleUsed   dd      ?
7153
        .IsHandleUsed   dd      ?
7154
end virtual
7154
end virtual
7155
 
7155
 
7156
panels_vtable:
7156
panels_vtable:
7157
        dd      panels_OnRedraw
7157
        dd      panels_OnRedraw
7158
        dd      0
7158
        dd      0
7159
        dd      0
7159
        dd      0
7160
        dd      panels_OnKey
7160
        dd      panels_OnKey
7161
        dd      keybar_panels
7161
        dd      keybar_panels
7162
        dd      panels_getname
7162
        dd      panels_getname
7163
        dd      panels_OnExit
7163
        dd      panels_OnExit
7164
        dd      panels_IsHandleUsed
7164
        dd      panels_IsHandleUsed
7165
 
7165
 
7166
viewer_vtable:
7166
viewer_vtable:
7167
        dd      viewer_OnRedraw
7167
        dd      viewer_OnRedraw
7168
        dd      0
7168
        dd      0
7169
        dd      0
7169
        dd      0
7170
        dd      viewer_OnKey
7170
        dd      viewer_OnKey
7171
        dd      keybar_viewer
7171
        dd      keybar_viewer
7172
        dd      viewer_getname
7172
        dd      viewer_getname
7173
        dd      viewer_OnExit
7173
        dd      viewer_OnExit
7174
        dd      viewer_IsHandleUsed
7174
        dd      viewer_IsHandleUsed
7175
 
7175
 
7176
editor_vtable:
7176
editor_vtable:
7177
        dd      editor_OnRedraw
7177
        dd      editor_OnRedraw
7178
        dd      0
7178
        dd      0
7179
        dd      0
7179
        dd      0
7180
        dd      editor_OnKey
7180
        dd      editor_OnKey
7181
        dd      keybar_editor
7181
        dd      keybar_editor
7182
        dd      editor_getname
7182
        dd      editor_getname
7183
        dd      editor_OnExit
7183
        dd      editor_OnExit
7184
        dd      editor_IsHandleUsed
7184
        dd      editor_IsHandleUsed
7185
 
7185
 
7186
filesearch_vtable:
7186
filesearch_vtable:
7187
        dd      filesearch_OnRedraw
7187
        dd      filesearch_OnRedraw
7188
        dd      filesearch_OnActivate
7188
        dd      filesearch_OnActivate
7189
        dd      filesearch_OnIdle
7189
        dd      filesearch_OnIdle
7190
        dd      filesearch_OnKey
7190
        dd      filesearch_OnKey
7191
        dd      0
7191
        dd      0
7192
        dd      filesearch_getname
7192
        dd      filesearch_getname
7193
        dd      filesearch_OnExit
7193
        dd      filesearch_OnExit
7194
        dd      filesearch_IsHandleUsed
7194
        dd      filesearch_IsHandleUsed
7195
 
7195
 
7196
; additions to this table require changes in tools.inc::get_error_msg
7196
; additions to this table require changes in tools.inc::get_error_msg
7197
errors1:
7197
errors1:
7198
        dd      error0msg
7198
        dd      error0msg
7199
        dd      error1msg
7199
        dd      error1msg
7200
        dd      error2msg
7200
        dd      error2msg
7201
        dd      error3msg
7201
        dd      error3msg
7202
        dd      error4msg
7202
        dd      error4msg
7203
        dd      error5msg
7203
        dd      error5msg
7204
        dd      error6msg
7204
        dd      error6msg
7205
        dd      error7msg
7205
        dd      error7msg
7206
        dd      error8msg
7206
        dd      error8msg
7207
        dd      error9msg
7207
        dd      error9msg
7208
        dd      error10msg
7208
        dd      error10msg
7209
        dd      error11msg
7209
        dd      error11msg
7210
errors2:
7210
errors2:
7211
        dd      error30msg
7211
        dd      error30msg
7212
        dd      error31msg
7212
        dd      error31msg
7213
        dd      error32msg
7213
        dd      error32msg
7214
 
7214
 
7215
encodings:
7215
encodings:
7216
.cp866 = 0
7216
.cp866 = 0
7217
.cp1251 = 1
7217
.cp1251 = 1
7218
.koi8r = 2
7218
.koi8r = 2
7219
.unicode = 3
7219
.unicode = 3
7220
 
7220
 
7221
.names:
7221
.names:
7222
        db      'cp866   '
7222
        db      'cp866   '
7223
        db      'cp1251  '
7223
        db      'cp1251  '
7224
        db      'koi8-r  '
7224
        db      'koi8-r  '
7225
        db      'Unicode '
7225
        db      'Unicode '
7226
 
7226
 
7227
.tables:
7227
.tables:
7228
; cp866 - trivial map
7228
; cp866 - trivial map
7229
        times 128 db %+127
7229
        times 128 db %+127
7230
; cp1251
7230
; cp1251
7231
        db      0x3F,0x3F,0x27,0x3F,0x22,0x3A,0xC5,0xD8,0x3F,0x25,0x3F,0x3C,0x3F,0x3F,0x3F,0x3F
7231
        db      0x3F,0x3F,0x27,0x3F,0x22,0x3A,0xC5,0xD8,0x3F,0x25,0x3F,0x3C,0x3F,0x3F,0x3F,0x3F
7232
        db      0x3F,0x27,0x27,0x22,0x22,0x07,0x2D,0x2D,0x3F,0x54,0x3F,0x3E,0x3F,0x3F,0x3F,0x3F
7232
        db      0x3F,0x27,0x27,0x22,0x22,0x07,0x2D,0x2D,0x3F,0x54,0x3F,0x3E,0x3F,0x3F,0x3F,0x3F
7233
        db      0xFF,0xF6,0xF7,0x3F,0xFD,0x3F,0xB3,0x15,0xF0,0x63,0xF2,0x3C,0xBF,0x2D,0x52,0xF4
7233
        db      0xFF,0xF6,0xF7,0x3F,0xFD,0x3F,0xB3,0x15,0xF0,0x63,0xF2,0x3C,0xBF,0x2D,0x52,0xF4
7234
        db      0xF8,0x2B,0x49,0x69,0x3F,0xE7,0x14,0xFA,0xF1,0xFC,0xF3,0x3E,0x3F,0x3F,0x3F,0xF5
7234
        db      0xF8,0x2B,0x49,0x69,0x3F,0xE7,0x14,0xFA,0xF1,0xFC,0xF3,0x3E,0x3F,0x3F,0x3F,0xF5
7235
        times 0x30 db %-1+0x80
7235
        times 0x30 db %-1+0x80
7236
        times 0x10 db %-1+0xE0
7236
        times 0x10 db %-1+0xE0
7237
; koi8-r
7237
; koi8-r
7238
        db      0xC4,0xB3,0xDA,0xBF,0xC0,0xD9,0xC3,0xB4,0xC2,0xC1,0xC5,0xDF,0xDC,0xDB,0xDD,0xDE
7238
        db      0xC4,0xB3,0xDA,0xBF,0xC0,0xD9,0xC3,0xB4,0xC2,0xC1,0xC5,0xDF,0xDC,0xDB,0xDD,0xDE
7239
        db      0xB0,0xB1,0xB2,0xF4,0xFE,0xF9,0xFB,0xF7,0xF3,0xF2,0xFF,0xF5,0xF8,0xFD,0xFA,0xF6
7239
        db      0xB0,0xB1,0xB2,0xF4,0xFE,0xF9,0xFB,0xF7,0xF3,0xF2,0xFF,0xF5,0xF8,0xFD,0xFA,0xF6
7240
        db      0xCD,0xBA,0xD5,0xF1,0xD6,0xC9,0xB8,0xB7,0xBB,0xD4,0xD3,0xC8,0xBE,0xBD,0xBC,0xC6
7240
        db      0xCD,0xBA,0xD5,0xF1,0xD6,0xC9,0xB8,0xB7,0xBB,0xD4,0xD3,0xC8,0xBE,0xBD,0xBC,0xC6
7241
        db      0xC7,0xCC,0xB5,0xF0,0xB6,0xB9,0xD1,0xD2,0xCB,0xCF,0xD0,0xCA,0xD8,0xD7,0xCE,0xFC
7241
        db      0xC7,0xCC,0xB5,0xF0,0xB6,0xB9,0xD1,0xD2,0xCB,0xCF,0xD0,0xCA,0xD8,0xD7,0xCE,0xFC
7242
        db      0xEE,0xA0,0xA1,0xE6,0xA4,0xA5,0xE4,0xA3,0xE5,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE
7242
        db      0xEE,0xA0,0xA1,0xE6,0xA4,0xA5,0xE4,0xA3,0xE5,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE
7243
        db      0xAF,0xEF,0xE0,0xE1,0xE2,0xE3,0xA6,0xA2,0xEC,0xEB,0xA7,0xE8,0xED,0xE9,0xE7,0xEA
7243
        db      0xAF,0xEF,0xE0,0xE1,0xE2,0xE3,0xA6,0xA2,0xEC,0xEB,0xA7,0xE8,0xED,0xE9,0xE7,0xEA
7244
        db      0x9E,0x80,0x81,0x96,0x84,0x85,0x94,0x83,0x95,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E
7244
        db      0x9E,0x80,0x81,0x96,0x84,0x85,0x94,0x83,0x95,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E
7245
        db      0x8F,0x9F,0x90,0x91,0x92,0x93,0x86,0x82,0x9C,0x9B,0x87,0x98,0x9D,0x99,0x97,0x9A
7245
        db      0x8F,0x9F,0x90,0x91,0x92,0x93,0x86,0x82,0x9C,0x9B,0x87,0x98,0x9D,0x99,0x97,0x9A
7246
 
7246
 
7247
.menu:
7247
.menu:
7248
        db      .cp866
7248
        db      .cp866
7249
.menu.1:
7249
.menu.1:
7250
        dd      .menu.2
7250
        dd      .menu.2
7251
        dd      0
7251
        dd      0
7252
if lang eq ru
7252
if lang eq ru
7253
        db      '&DOS ⥪áâ (cp866)',0
7253
        db      '&DOS ⥪áâ (cp866)',0
7254
else
7254
else
7255
        db      '&DOS text (cp866)',0
7255
        db      '&DOS text (cp866)',0
7256
end if
7256
end if
7257
        db      .cp1251
7257
        db      .cp1251
7258
.menu.2:
7258
.menu.2:
7259
        dd      .menu.3
7259
        dd      .menu.3
7260
        dd      .menu.1
7260
        dd      .menu.1
7261
if lang eq ru
7261
if lang eq ru
7262
        db      '&Windows ⥪áâ (cp1251)',0
7262
        db      '&Windows ⥪áâ (cp1251)',0
7263
else
7263
else
7264
        db      '&Windows text (cp1251)',0
7264
        db      '&Windows text (cp1251)',0
7265
end if
7265
end if
7266
        db      .koi8r
7266
        db      .koi8r
7267
.menu.3:
7267
.menu.3:
7268
        dd      .menu.4
7268
        dd      .menu.4
7269
        dd      .menu.2
7269
        dd      .menu.2
7270
if lang eq ru
7270
if lang eq ru
7271
        db      '&Linux ⥪áâ (koi8-r)',0
7271
        db      '&Linux ⥪áâ (koi8-r)',0
7272
else
7272
else
7273
        db      '&Linux text (koi8-r)',0
7273
        db      '&Linux text (koi8-r)',0
7274
end if
7274
end if
7275
        db      .unicode
7275
        db      .unicode
7276
.menu.4:
7276
.menu.4:
7277
        dd      0
7277
        dd      0
7278
        dd      .menu.3
7278
        dd      .menu.3
7279
        db      '&Unicode',0
7279
        db      '&Unicode',0
7280
 
7280
 
7281
active_screen   dd      0
7281
active_screen   dd      0
7282
viewer_tabsize  dd      8
7282
viewer_tabsize  dd      8
7283
editor_tabsize  dd      8
7283
editor_tabsize  dd      8
7284
 
7284
 
7285
ascii2scan:
7285
ascii2scan:
7286
        times 32 db 0
7286
        times 32 db 0
7287
        db      0x39,0x02,0x03,0x04,0x05,0x06,0x08,0x28,0x0A,0x0B,0x09,0x0D,0x33,0x0C,0x34,0x35
7287
        db      0x39,0x02,0x03,0x04,0x05,0x06,0x08,0x28,0x0A,0x0B,0x09,0x0D,0x33,0x0C,0x34,0x35
7288
        db      0x0B,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x27,0x27,0x33,0x0D,0x34,0x35
7288
        db      0x0B,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x27,0x27,0x33,0x0D,0x34,0x35
7289
        db      0x03,0x1E,0x30,0x2E,0x20,0x12,0x21,0x22,0x23,0x17,0x24,0x25,0x26,0x32,0x31,0x18
7289
        db      0x03,0x1E,0x30,0x2E,0x20,0x12,0x21,0x22,0x23,0x17,0x24,0x25,0x26,0x32,0x31,0x18
7290
        db      0x19,0x10,0x13,0x1F,0x14,0x16,0x2F,0x11,0x2D,0x15,0x2C,0x1A,0x2B,0x1B,0x07,0x0C
7290
        db      0x19,0x10,0x13,0x1F,0x14,0x16,0x2F,0x11,0x2D,0x15,0x2C,0x1A,0x2B,0x1B,0x07,0x0C
7291
        db      0x29,0x1E,0x30,0x2E,0x20,0x12,0x21,0x22,0x23,0x17,0x24,0x25,0x26,0x32,0x31,0x18
7291
        db      0x29,0x1E,0x30,0x2E,0x20,0x12,0x21,0x22,0x23,0x17,0x24,0x25,0x26,0x32,0x31,0x18
7292
        db      0x19,0x10,0x13,0x1F,0x14,0x16,0x2F,0x11,0x2D,0x15,0x2C,0x1A,0x2B,0x1B,0x29,0x00
7292
        db      0x19,0x10,0x13,0x1F,0x14,0x16,0x2F,0x11,0x2D,0x15,0x2C,0x1A,0x2B,0x1B,0x29,0x00
7293
        db      0x21,0x33,0x20,0x16,0x26,0x14,0x27,0x19,0x30,0x10,0x13,0x25,0x2F,0x15,0x24,0x22
7293
        db      0x21,0x33,0x20,0x16,0x26,0x14,0x27,0x19,0x30,0x10,0x13,0x25,0x2F,0x15,0x24,0x22
7294
        db      0x23,0x2E,0x31,0x12,0x1E,0x1A,0x11,0x2D,0x17,0x18,0x1B,0x1F,0x32,0x28,0x34,0x2C
7294
        db      0x23,0x2E,0x31,0x12,0x1E,0x1A,0x11,0x2D,0x17,0x18,0x1B,0x1F,0x32,0x28,0x34,0x2C
7295
        db      0x21,0x33,0x20,0x16,0x26,0x14,0x27,0x19,0x30,0x10,0x13,0x25,0x2F,0x15,0x24,0x22
7295
        db      0x21,0x33,0x20,0x16,0x26,0x14,0x27,0x19,0x30,0x10,0x13,0x25,0x2F,0x15,0x24,0x22
7296
        times 48 db 0
7296
        times 48 db 0
7297
        db      0x23,0x2E,0x31,0x12,0x1E,0x1A,0x11,0x2D,0x17,0x18,0x1B,0x1F,0x32,0x28,0x34,0x2C
7297
        db      0x23,0x2E,0x31,0x12,0x1E,0x1A,0x11,0x2D,0x17,0x18,0x1B,0x1F,0x32,0x28,0x34,0x2C
7298
        db      0x29,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
7298
        db      0x29,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
7299
scan2ascii:
7299
scan2ascii:
7300
        db      0,0,'1234567890-=',0,0
7300
        db      0,0,'1234567890-=',0,0
7301
        db      'qwertyuiop[]',0,0,'as'
7301
        db      'qwertyuiop[]',0,0,'as'
7302
        db      'dfghjkl;',27h,'`',0,'\zxcv'
7302
        db      'dfghjkl;',27h,'`',0,'\zxcv'
7303
        db      'bnm,./',0,0,0,' ',0,0,0,0,0,0
7303
        db      'bnm,./',0,0,0,' ',0,0,0,0,0,0
7304
 
7304
 
7305
; Š« ¢¨è­ë¥ á®ç¥â ­¨ï
7305
; Š« ¢¨è­ë¥ á®ç¥â ­¨ï
7306
; db scancode, reserved
7306
; db scancode, reserved
7307
; dw ctrlstate
7307
; dw ctrlstate
7308
; dd handler
7308
; dd handler
7309
; ctrlstate: ¬« ¤è¨¥ 4 ¡¨â  - ¤«ï Shift, á«¥¤ãî騥 - ¤«ï Ctrl, á«¥¤ãî騥 - ¤«ï Alt
7309
; ctrlstate: ¬« ¤è¨¥ 4 ¡¨â  - ¤«ï Shift, á«¥¤ãî騥 - ¤«ï Ctrl, á«¥¤ãî騥 - ¤«ï Alt
7310
; 0 = ­¨ ®¤­  ª« ¢¨è  ­¥ ­ ¦ â 
7310
; 0 = ­¨ ®¤­  ª« ¢¨è  ­¥ ­ ¦ â 
7311
; 1 = ஢­® ®¤­  ­ ¦ â 
7311
; 1 = ஢­® ®¤­  ­ ¦ â 
7312
; 2 = ®¡¥ ­ ¦ âë
7312
; 2 = ®¡¥ ­ ¦ âë
7313
; 3 = «¥¢ ï ­ ¦ â , ¯à ¢ ï ­¥â
7313
; 3 = «¥¢ ï ­ ¦ â , ¯à ¢ ï ­¥â
7314
; 4 = ¯à ¢ ï ­ ¦ â , «¥¢ ï ­¥â
7314
; 4 = ¯à ¢ ï ­ ¦ â , «¥¢ ï ­¥â
7315
panels_ctrlkeys:
7315
panels_ctrlkeys:
7316
        dw      0x48, 0
7316
        dw      0x48, 0
7317
        dd      panels_OnKey.up
7317
        dd      panels_OnKey.up
7318
        dw      0x50, 0
7318
        dw      0x50, 0
7319
        dd      panels_OnKey.down
7319
        dd      panels_OnKey.down
7320
        dw      0x4B, 0
7320
        dw      0x4B, 0
7321
        dd      panels_OnKey.left
7321
        dd      panels_OnKey.left
7322
        dw      0x4D, 0
7322
        dw      0x4D, 0
7323
        dd      panels_OnKey.right
7323
        dd      panels_OnKey.right
7324
        dw      0x51, 0
7324
        dw      0x51, 0
7325
        dd      panels_OnKey.pgdn
7325
        dd      panels_OnKey.pgdn
7326
        dw      0x49, 0
7326
        dw      0x49, 0
7327
        dd      panels_OnKey.pgup
7327
        dd      panels_OnKey.pgup
7328
        dw      0xF, 0
7328
        dw      0xF, 0
7329
        dd      panels_OnKey.tab
7329
        dd      panels_OnKey.tab
7330
        dw      0x47, 0
7330
        dw      0x47, 0
7331
        dd      panels_OnKey.home
7331
        dd      panels_OnKey.home
7332
        dw      0x4F, 0
7332
        dw      0x4F, 0
7333
        dd      panels_OnKey.end
7333
        dd      panels_OnKey.end
7334
        dw      0x1C, 0
7334
        dw      0x1C, 0
7335
        dd      panels_OnKey.enter
7335
        dd      panels_OnKey.enter
7336
        dw      0x3D, 0
7336
        dw      0x3D, 0
7337
        dd      panels_OnKey.f3
7337
        dd      panels_OnKey.f3
7338
        dw      0x3E, 0
7338
        dw      0x3E, 0
7339
        dd      panels_OnKey.f4
7339
        dd      panels_OnKey.f4
7340
        dw      0x3F, 0
7340
        dw      0x3F, 0
7341
        dd      panels_OnKey.f5
7341
        dd      panels_OnKey.f5
7342
        dw      0x3F, 1
7342
        dw      0x3F, 1
7343
        dd      panels_OnKey.shift_f5
7343
        dd      panels_OnKey.shift_f5
7344
        dw      0x41, 0
7344
        dw      0x41, 0
7345
        dd      panels_OnKey.f7
7345
        dd      panels_OnKey.f7
7346
        dw      0x41, 0x100
7346
        dw      0x41, 0x100
7347
        dd      panels_OnKey.alt_f7
7347
        dd      panels_OnKey.alt_f7
7348
        dw      0x42, 0
7348
        dw      0x42, 0
7349
        dd      panels_OnKey.f8
7349
        dd      panels_OnKey.f8
7350
        dw      0x43, 0x100
7350
        dw      0x43, 0x100
7351
        dd      alt_f9
7351
        dd      alt_f9
7352
        dw      0x44, 0
7352
        dw      0x44, 0
7353
        dd      exit
7353
        dd      exit
7354
        dw      0x5D, 0
7354
        dw      0x5D, 0
7355
        dd      panels_OnKey.menu
7355
        dd      panels_OnKey.menu
7356
repeat 9-3+1
7356
repeat 9-3+1
7357
        dw      0x3D+%-1, 0x10
7357
        dw      0x3D+%-1, 0x10
7358
        dd      panels_OnKey.ctrl_f39
7358
        dd      panels_OnKey.ctrl_f39
7359
end repeat
7359
end repeat
7360
        dw      0x3B, 0x100
7360
        dw      0x3B, 0x100
7361
        dd      panels_OnKey.alt_f12
7361
        dd      panels_OnKey.alt_f12
7362
        dw      0x3C, 0x100
7362
        dw      0x3C, 0x100
7363
        dd      panels_OnKey.alt_f12
7363
        dd      panels_OnKey.alt_f12
7364
        dw      0x58, 0
7364
        dw      0x58, 0
7365
        dd      F12
7365
        dd      F12
7366
        dw      0x13, 0x10
7366
        dw      0x13, 0x10
7367
        dd      panels_OnKey.ctrl_r
7367
        dd      panels_OnKey.ctrl_r
7368
        dw      2, 0x30
7368
        dw      2, 0x30
7369
        dd      panels_OnKey.change_mode
7369
        dd      panels_OnKey.change_mode
7370
        dw      3, 0x30
7370
        dw      3, 0x30
7371
        dd      panels_OnKey.change_mode
7371
        dd      panels_OnKey.change_mode
7372
        dw      4, 0x30
7372
        dw      4, 0x30
7373
        dd      panels_OnKey.change_mode
7373
        dd      panels_OnKey.change_mode
7374
        dw      5, 0x30
7374
        dw      5, 0x30
7375
        dd      panels_OnKey.change_mode
7375
        dd      panels_OnKey.change_mode
7376
repeat 10
7376
repeat 10
7377
        dw      %+1, 0x40
7377
        dw      %+1, 0x40
7378
        dd      panels_OnKey.quick_jump
7378
        dd      panels_OnKey.quick_jump
7379
end repeat
7379
end repeat
7380
        dw      0x52, 0
7380
        dw      0x52, 0
7381
        dd      panels_OnKey.insert
7381
        dd      panels_OnKey.insert
7382
        dw      0x4E, 0
7382
        dw      0x4E, 0
7383
        dd      panels_OnKey.greyplus
7383
        dd      panels_OnKey.greyplus
7384
        dw      0x4A, 0
7384
        dw      0x4A, 0
7385
        dd      panels_OnKey.greyminus
7385
        dd      panels_OnKey.greyminus
7386
        dw      0x37, 0
7386
        dw      0x37, 0
7387
        dd      panels_OnKey.greyasterisk
7387
        dd      panels_OnKey.greyasterisk
7388
        db      0
7388
        db      0
7389
 
7389
 
7390
viewer_ctrlkeys:
7390
viewer_ctrlkeys:
7391
        dw      1, 0
7391
        dw      1, 0
7392
        dd      viewer_OnKey.exit
7392
        dd      viewer_OnKey.exit
7393
        dw      0x51, 0
7393
        dw      0x51, 0
7394
        dd      viewer_OnKey.pgdn
7394
        dd      viewer_OnKey.pgdn
7395
        dw      0x49, 0
7395
        dw      0x49, 0
7396
        dd      viewer_OnKey.pgup
7396
        dd      viewer_OnKey.pgup
7397
        dw      0x50, 0
7397
        dw      0x50, 0
7398
        dd      viewer_OnKey.down
7398
        dd      viewer_OnKey.down
7399
        dw      0x48, 0
7399
        dw      0x48, 0
7400
        dd      viewer_OnKey.up
7400
        dd      viewer_OnKey.up
7401
        dw      0x4B, 0
7401
        dw      0x4B, 0
7402
        dd      viewer_OnKey.left
7402
        dd      viewer_OnKey.left
7403
        dw      0x4B, 0x10
7403
        dw      0x4B, 0x10
7404
        dd      viewer_OnKey.ctrl_left
7404
        dd      viewer_OnKey.ctrl_left
7405
        dw      0x4B, 0x11
7405
        dw      0x4B, 0x11
7406
        dd      viewer_OnKey.ctrl_shift_left
7406
        dd      viewer_OnKey.ctrl_shift_left
7407
        dw      0x4C, 0
7407
        dw      0x4C, 0
7408
        dd      viewer_OnKey.exit
7408
        dd      viewer_OnKey.exit
7409
        dw      0x4D, 0
7409
        dw      0x4D, 0
7410
        dd      viewer_OnKey.right
7410
        dd      viewer_OnKey.right
7411
        dw      0x4D, 0x10
7411
        dw      0x4D, 0x10
7412
        dd      viewer_OnKey.ctrl_right
7412
        dd      viewer_OnKey.ctrl_right
7413
        dw      0x4D, 0x11
7413
        dw      0x4D, 0x11
7414
        dd      viewer_OnKey.ctrl_shift_right
7414
        dd      viewer_OnKey.ctrl_shift_right
7415
        dw      0x3C, 0
7415
        dw      0x3C, 0
7416
        dd      viewer_OnKey.f2
7416
        dd      viewer_OnKey.f2
7417
        dw      0x3D, 0
7417
        dw      0x3D, 0
7418
        dd      viewer_OnKey.exit
7418
        dd      viewer_OnKey.exit
7419
        dw      0x3E, 0
7419
        dw      0x3E, 0
7420
        dd      viewer_OnKey.f4
7420
        dd      viewer_OnKey.f4
7421
        dw      0x41, 0
7421
        dw      0x41, 0
7422
        dd      viewer_OnKey.f7
7422
        dd      viewer_OnKey.f7
7423
        dw      0x41, 1
7423
        dw      0x41, 1
7424
        dd      viewer_OnKey.shift_f7
7424
        dd      viewer_OnKey.shift_f7
7425
        dw      0x42, 0
7425
        dw      0x42, 0
7426
        dd      viewer_OnKey.f8
7426
        dd      viewer_OnKey.f8
7427
        dw      0x42, 1
7427
        dw      0x42, 1
7428
        dd      viewer_OnKey.shift_f8
7428
        dd      viewer_OnKey.shift_f8
7429
        dw      0x44, 0
7429
        dw      0x44, 0
7430
        dd      viewer_OnKey.exit
7430
        dd      viewer_OnKey.exit
7431
        dw      0x47, 0
7431
        dw      0x47, 0
7432
        dd      viewer_OnKey.home
7432
        dd      viewer_OnKey.home
7433
        dw      0x4F, 0
7433
        dw      0x4F, 0
7434
        dd      viewer_OnKey.end
7434
        dd      viewer_OnKey.end
7435
        dw      0x58, 0
7435
        dw      0x58, 0
7436
        dd      F12
7436
        dd      F12
7437
        dw      0x43, 0x100
7437
        dw      0x43, 0x100
7438
        dd      alt_f9
7438
        dd      alt_f9
7439
        db      0
7439
        db      0
7440
 
7440
 
7441
editor_ctrlkeys:
7441
editor_ctrlkeys:
7442
        dw      1, 0
7442
        dw      1, 0
7443
        dd      editor_OnKey.exit_confirm
7443
        dd      editor_OnKey.exit_confirm
7444
        dw      0x0E, 0
7444
        dw      0x0E, 0
7445
        dd      editor_OnKey.backspace
7445
        dd      editor_OnKey.backspace
7446
        dw      0x3C, 0
7446
        dw      0x3C, 0
7447
        dd      editor_OnKey.f2
7447
        dd      editor_OnKey.f2
7448
        dw      0x41, 0
7448
        dw      0x41, 0
7449
        dd      editor_OnKey.f7
7449
        dd      editor_OnKey.f7
7450
        dw      0x41, 1
7450
        dw      0x41, 1
7451
        dd      editor_OnKey.shift_f7
7451
        dd      editor_OnKey.shift_f7
7452
        dw      0x43, 0x100
7452
        dw      0x43, 0x100
7453
        dd      alt_f9
7453
        dd      alt_f9
7454
        dw      0x44, 0
7454
        dw      0x44, 0
7455
        dd      editor_OnKey.exit_confirm
7455
        dd      editor_OnKey.exit_confirm
7456
        dw      0x44, 1
7456
        dw      0x44, 1
7457
        dd      editor_OnKey.exit_save
7457
        dd      editor_OnKey.exit_save
7458
        dw      0x47, 0
7458
        dw      0x47, 0
7459
        dd      editor_OnKey.home
7459
        dd      editor_OnKey.home
7460
        dw      0x48, 0
7460
        dw      0x48, 0
7461
        dd      editor_OnKey.up
7461
        dd      editor_OnKey.up
7462
        dw      0x49, 0
7462
        dw      0x49, 0
7463
        dd      editor_OnKey.pgup
7463
        dd      editor_OnKey.pgup
7464
        dw      0x4B, 0
7464
        dw      0x4B, 0
7465
        dd      editor_OnKey.left
7465
        dd      editor_OnKey.left
7466
        dw      0x4D, 0
7466
        dw      0x4D, 0
7467
        dd      editor_OnKey.right
7467
        dd      editor_OnKey.right
7468
        dw      0x4F, 0
7468
        dw      0x4F, 0
7469
        dd      editor_OnKey.end
7469
        dd      editor_OnKey.end
7470
        dw      0x50, 0
7470
        dw      0x50, 0
7471
        dd      editor_OnKey.down
7471
        dd      editor_OnKey.down
7472
        dw      0x51, 0
7472
        dw      0x51, 0
7473
        dd      editor_OnKey.pgdn
7473
        dd      editor_OnKey.pgdn
7474
        dw      0x52, 0
7474
        dw      0x52, 0
7475
        dd      editor_OnKey.ins
7475
        dd      editor_OnKey.ins
7476
        dw      0x53, 0
7476
        dw      0x53, 0
7477
        dd      editor_OnKey.del
7477
        dd      editor_OnKey.del
7478
        dw      0x58, 0
7478
        dw      0x58, 0
7479
        dd      F12
7479
        dd      F12
7480
        db      0
7480
        db      0
7481
 
7481
 
7482
dirinfo:
7482
dirinfo:
7483
                dd      1
7483
                dd      1
7484
.first          dd      0
7484
.first          dd      0
7485
                dd      0
7485
                dd      0
7486
.size           dd      300
7486
.size           dd      300
7487
.dirdata        dd      0
7487
.dirdata        dd      0
7488
                db      0
7488
                db      0
7489
.name           dd      0
7489
.name           dd      0
7490
 
7490
 
7491
readinfo:
7491
readinfo:
7492
                dd      0
7492
                dd      0
7493
.first          dq      0
7493
.first          dq      0
7494
.size           dd      0
7494
.size           dd      0
7495
.data           dd      0
7495
.data           dd      0
7496
                db      0
7496
                db      0
7497
.name           dd      0
7497
.name           dd      0
7498
 
7498
 
7499
writeinfo:
7499
writeinfo:
7500
.code           dd      2
7500
.code           dd      2
7501
.first          dq      0
7501
.first          dq      0
7502
.size           dd      0
7502
.size           dd      0
7503
.data           dd      0
7503
.data           dd      0
7504
                db      0
7504
                db      0
7505
.name           dd      0
7505
.name           dd      0
7506
 
7506
 
7507
attrinfo:
7507
attrinfo:
7508
                dd      5
7508
                dd      5
7509
                dd      0
7509
                dd      0
7510
                dd      0
7510
                dd      0
7511
                dd      0
7511
                dd      0
7512
                dd      .attr
7512
                dd      .attr
7513
                db      0
7513
                db      0
7514
.name           dd      0
7514
.name           dd      0
7515
 
7515
 
7516
delinfo:
7516
delinfo:
7517
                dd      8
7517
                dd      8
7518
                dd      0
7518
                dd      0
7519
                dd      0
7519
                dd      0
7520
                dd      0
7520
                dd      0
7521
                dd      0
7521
                dd      0
7522
                db      0
7522
                db      0
7523
                dd      execdata
7523
                dd      execdata
7524
 
7524
 
7525
mkdirinfo:
7525
mkdirinfo:
7526
                dd      9
7526
                dd      9
7527
                dd      0
7527
                dd      0
7528
                dd      0
7528
                dd      0
7529
                dd      0
7529
                dd      0
7530
                dd      0
7530
                dd      0
7531
                db      0
7531
                db      0
7532
                dd      CopyDestEditBuf+12
7532
                dd      CopyDestEditBuf+12
7533
 
7533
 
7534
if lang eq ru
7534
if lang eq ru
7535
compare_names   db      '¨ˆà¬Œ €­á‘¤„'
7535
compare_names   db      '¨ˆà¬Œ €­á‘¤„'
7536
else
7536
else
7537
compare_names   db      'nNxXmMsSuUcCaA'
7537
compare_names   db      'nNxXmMsSuUcCaA'
7538
end if
7538
end if
7539
 
7539
 
7540
; ‡¤¥áì ­ ç¨­ îâáï ª®­ä¨£ãà æ¨®­­ë¥ ¤ ­­ë¥ - ¢ ⥪ã饩 ॠ«¨§ æ¨¨ ®­¨ § è¨âë ¢ ¡¨­ à­¨ª
7540
; ‡¤¥áì ­ ç¨­ îâáï ª®­ä¨£ãà æ¨®­­ë¥ ¤ ­­ë¥ - ¢ ⥪ã饩 ॠ«¨§ æ¨¨ ®­¨ § è¨âë ¢ ¡¨­ à­¨ª
7541
 
7541
 
7542
;  ­¥«ì
7542
;  ­¥«ì
7543
panel_normal_color      db      1Bh
7543
panel_normal_color      db      1Bh
7544
panel_selected_color    db      1Eh
7544
panel_selected_color    db      1Eh
7545
panel_border_color      db      1Bh
7545
panel_border_color      db      1Bh
7546
panel_cursor_color      db      30h
7546
panel_cursor_color      db      30h
7547
panel_selected_cursor_color db  3Eh
7547
panel_selected_cursor_color db  3Eh
7548
panel_header_color      db      1Bh
7548
panel_header_color      db      1Bh
7549
panel_active_header_color db    30h
7549
panel_active_header_color db    30h
7550
column_header_color     db      1Eh
7550
column_header_color     db      1Eh
7551
panel_number_color      db      1Bh
7551
panel_number_color      db      1Bh
7552
panel_numselected_color db      3Eh
7552
panel_numselected_color db      3Eh
7553
panel_nscreens_color    db      0Bh
7553
panel_nscreens_color    db      0Bh
7554
; „¨ «®£¨
7554
; „¨ «®£¨
7555
dialog_colors:
7555
dialog_colors:
7556
dialog_main_color       db      70h
7556
dialog_main_color       db      70h
7557
dialog_border_color     db      70h
7557
dialog_border_color     db      70h
7558
dialog_header_color     db      70h
7558
dialog_header_color     db      70h
7559
dialog_edit_color       db      30h
7559
dialog_edit_color       db      30h
7560
dialog_unmodified_edit_color db 38h
7560
dialog_unmodified_edit_color db 38h
7561
dialog_normal_btn_color db      70h
7561
dialog_normal_btn_color db      70h
7562
dialog_selected_btn_color db    30h
7562
dialog_selected_btn_color db    30h
7563
dialog_list_color       db      70h
7563
dialog_list_color       db      70h
7564
dialog_selected_list_color db   0Fh
7564
dialog_selected_list_color db   0Fh
7565
dialog_scroll_list_color db     70h
7565
dialog_scroll_list_color db     70h
7566
; à¥¤ã¯à¥¦¤¥­¨ï ¨ ®è¨¡ª¨
7566
; à¥¤ã¯à¥¦¤¥­¨ï ¨ ®è¨¡ª¨
7567
warning_colors:
7567
warning_colors:
7568
; !!! ¤®«¦­ë ¡ëâì ⥠¦¥ ¯®«ï ¨ ¢ ⮬ ¦¥ ¯®à浪¥, çâ® ¨ ¤«ï ®¡ëç­ëå ¤¨ «®£®¢ !!!
7568
; !!! ¤®«¦­ë ¡ëâì ⥠¦¥ ¯®«ï ¨ ¢ ⮬ ¦¥ ¯®à浪¥, çâ® ¨ ¤«ï ®¡ëç­ëå ¤¨ «®£®¢ !!!
7569
warning_main_color      db      4Fh
7569
warning_main_color      db      4Fh
7570
warning_border_color    db      4Fh
7570
warning_border_color    db      4Fh
7571
warning_header_color    db      4Fh
7571
warning_header_color    db      4Fh
7572
warning_edit_color      db      30h
7572
warning_edit_color      db      30h
7573
warning_unmodified_edit_color db 38h
7573
warning_unmodified_edit_color db 38h
7574
warning_normal_btn_color db     4Fh
7574
warning_normal_btn_color db     4Fh
7575
warning_selected_btn_color db   70h
7575
warning_selected_btn_color db   70h
7576
warning_list_color      db      3Fh
7576
warning_list_color      db      3Fh
7577
warning_selected_list_color db  70h
7577
warning_selected_list_color db  70h
7578
warning_scroll_list_color db    3Fh
7578
warning_scroll_list_color db    3Fh
7579
; Œ¥­î
7579
; Œ¥­î
7580
menu_normal_color       db      3Fh
7580
menu_normal_color       db      3Fh
7581
menu_selected_color     db      0Fh
7581
menu_selected_color     db      0Fh
7582
menu_highlight_color    db      3Eh
7582
menu_highlight_color    db      3Eh
7583
menu_selected_highlight_color db 0Eh
7583
menu_selected_highlight_color db 0Eh
7584
menu_border_color       db      3Fh
7584
menu_border_color       db      3Fh
7585
menu_header_color       db      3Fh
7585
menu_header_color       db      3Fh
7586
menu_scrollbar_color    db      3Fh
7586
menu_scrollbar_color    db      3Fh
7587
; ‹¨­¥©ª  ª« ¢¨è
7587
; ‹¨­¥©ª  ª« ¢¨è
7588
keybar_number_color     db      7
7588
keybar_number_color     db      7
7589
keybar_name_color       db      30h
7589
keybar_name_color       db      30h
7590
keybar_bgr_color        db      7
7590
keybar_bgr_color        db      7
7591
; Š®¬ ­¤­ ï áâப 
7591
; Š®¬ ­¤­ ï áâப 
7592
cmdbar_normal_color     db      7
7592
cmdbar_normal_color     db      7
7593
cmdbar_prefix_color     db      7
7593
cmdbar_prefix_color     db      7
7594
; à®á¬®âà騪
7594
; à®á¬®âà騪
7595
view_normal_color       db      1Bh
7595
view_normal_color       db      1Bh
7596
view_selected_color     db      30h
7596
view_selected_color     db      30h
7597
view_status_color       db      30h
7597
view_status_color       db      30h
7598
view_arrows_color       db      1Eh
7598
view_arrows_color       db      1Eh
7599
; ¥¤ ªâ®à
7599
; ¥¤ ªâ®à
7600
edit_normal_color       db      1Bh
7600
edit_normal_color       db      1Bh
7601
edit_status_color       db      30h
7601
edit_status_color       db      30h
7602
 
7602
 
7603
; ®¤á¢¥âª  ä ©«®¢
7603
; ®¤á¢¥âª  ä ©«®¢
7604
highlight_num_groups    dd      10
7604
highlight_num_groups    dd      10
7605
highlight_groups        dd      highlight_group0
7605
highlight_groups        dd      highlight_group0
7606
                dd      highlight_group1
7606
                dd      highlight_group1
7607
                dd      highlight_group2
7607
                dd      highlight_group2
7608
                dd      highlight_group3
7608
                dd      highlight_group3
7609
                dd      highlight_group4
7609
                dd      highlight_group4
7610
                dd      highlight_group5
7610
                dd      highlight_group5
7611
                dd      highlight_group6
7611
                dd      highlight_group6
7612
                dd      highlight_group7
7612
                dd      highlight_group7
7613
                dd      highlight_group8
7613
                dd      highlight_group8
7614
                dd      highlight_group9
7614
                dd      highlight_group9
7615
 
7615
 
7616
; ”®à¬ â ®¯¨á ­¨ï £àã¯¯ë ¯®¤á¢¥âª¨:
7616
; ”®à¬ â ®¯¨á ­¨ï £àã¯¯ë ¯®¤á¢¥âª¨:
7617
virtual at 0
7617
virtual at 0
7618
highlight:
7618
highlight:
7619
        .IncludeAttributes      db ?
7619
        .IncludeAttributes      db ?
7620
        .NormalColor            db ?
7620
        .NormalColor            db ?
7621
        .CursorColor            db ?
7621
        .CursorColor            db ?
7622
        .SelectedColor          db ?
7622
        .SelectedColor          db ?
7623
        .SelectedCursorColor    db ?
7623
        .SelectedCursorColor    db ?
7624
        .Mask:                  ; ASCIIZ-string
7624
        .Mask:                  ; ASCIIZ-string
7625
end virtual
7625
end virtual
7626
 
7626
 
7627
; all highlight masks must be in lowercase!
7627
; all highlight masks must be in lowercase!
7628
highlight_group0:
7628
highlight_group0:
7629
        db      2
7629
        db      2
7630
        db      13h, 38h, 0, 0
7630
        db      13h, 38h, 0, 0
7631
        db      '*',0
7631
        db      '*',0
7632
highlight_group1:
7632
highlight_group1:
7633
        db      4
7633
        db      4
7634
        db      13h, 38h, 0, 0
7634
        db      13h, 38h, 0, 0
7635
        db      '*',0
7635
        db      '*',0
7636
highlight_group2:
7636
highlight_group2:
7637
        db      10h
7637
        db      10h
7638
        db      1Fh, 3Fh, 0, 0
7638
        db      1Fh, 3Fh, 0, 0
7639
        db      '*|..',0
7639
        db      '*|..',0
7640
highlight_group3:
7640
highlight_group3:
7641
        db      10h
7641
        db      10h
7642
        db      0, 0, 0, 0
7642
        db      0, 0, 0, 0
7643
        db      '..',0
7643
        db      '..',0
7644
highlight_group4:
7644
highlight_group4:
7645
        db      0
7645
        db      0
7646
        db      1Ah, 3Ah, 0, 0
7646
        db      1Ah, 3Ah, 0, 0
7647
        db      '*.exe,*.com,*.bat,*.cmd,*.kex',0
7647
        db      '*.exe,*.com,*.bat,*.cmd,*.kex',0
7648
highlight_group5:
7648
highlight_group5:
7649
        db      0
7649
        db      0
7650
        db      1Ah, 3Ah, 0, 0
7650
        db      1Ah, 3Ah, 0, 0
7651
        db      '*|*.*,readme,makefile',0
7651
        db      '*|*.*,readme,makefile',0
7652
highlight_group6:
7652
highlight_group6:
7653
        db      0
7653
        db      0
7654
        db      1Dh, 3Dh, 0, 0
7654
        db      1Dh, 3Dh, 0, 0
7655
        db      '*.rar,*.zip,*.[zj],*.[bg7]z,*.[bg]zip,*.tar,*.t[ag]z,*.ar[cj],*.r[0-9][0-9],'
7655
        db      '*.rar,*.zip,*.[zj],*.[bg7]z,*.[bg]zip,*.tar,*.t[ag]z,*.ar[cj],*.r[0-9][0-9],'
7656
        db      '*.a[0-9][0-9],*.bz2,*.cab,*.msi,*.jar,*.lha,*.lzh,*.ha,*.ac[bei],*.pa[ck],'
7656
        db      '*.a[0-9][0-9],*.bz2,*.cab,*.msi,*.jar,*.lha,*.lzh,*.ha,*.ac[bei],*.pa[ck],'
7657
        db      '*.rk,*.cpio,*.rpm,*.zoo,*.hqx,*.sit,*.ice,*.uc2,*.ain,*.imp,*.777,*.ufa,*.boa,'
7657
        db      '*.rk,*.cpio,*.rpm,*.zoo,*.hqx,*.sit,*.ice,*.uc2,*.ain,*.imp,*.777,*.ufa,*.boa,'
7658
        db      '*.bs[2a],*.sea,*.hpk,*.ddi,*.x2,*.rkv,*.[lw]sz,*.h[ay]p,*.lim,*.sqz,*.chz',0
7658
        db      '*.bs[2a],*.sea,*.hpk,*.ddi,*.x2,*.rkv,*.[lw]sz,*.h[ay]p,*.lim,*.sqz,*.chz',0
7659
highlight_group7:
7659
highlight_group7:
7660
        db      0
7660
        db      0
7661
        db      16h, 36h, 0, 0
7661
        db      16h, 36h, 0, 0
7662
        db      '*.bak,*.tmp',0
7662
        db      '*.bak,*.tmp',0
7663
highlight_group8:
7663
highlight_group8:
7664
        db      0
7664
        db      0
7665
        db      17h, 37h, 0, 0
7665
        db      17h, 37h, 0, 0
7666
        db      '*.asm,*.inc',0
7666
        db      '*.asm,*.inc',0
7667
highlight_group9:
7667
highlight_group9:
7668
        db      10h
7668
        db      10h
7669
        db      1Fh, 3Fh, 0, 0
7669
        db      1Fh, 3Fh, 0, 0
7670
        db      '*',0
7670
        db      '*',0
7671
 
7671
 
7672
bConfirmDelete  db      1
7672
bConfirmDelete  db      1
7673
bConfirmDeleteIncomplete db 0
7673
bConfirmDeleteIncomplete db 0
7674
 
7674
 
7675
FolderShortcuts dd      0,0,0,0,0,0,0,0,0,0
7675
FolderShortcuts dd      0,0,0,0,0,0,0,0,0,0
7676
 
7676
 
7677
; ‡¤¥áì § ª ­ç¨¢ îâáï ª®­ä¨£ãà æ¨®­­ë¥ ¤ ­­ë¥
7677
; ‡¤¥áì § ª ­ç¨¢ îâáï ª®­ä¨£ãà æ¨®­­ë¥ ¤ ­­ë¥
7678
 
7678
 
7679
bWasE0          db      0
7679
bWasE0          db      0
7680
ctrlstate       db      0
7680
ctrlstate       db      0
7681
MemForImage     dd      0
7681
MemForImage     dd      0
7682
restore_semicolon dd    0
7682
restore_semicolon dd    0
7683
bForHex         db      0
7683
bForHex         db      0
7684
 
7684
 
7685
align   4
7685
align   4
7686
; ‘®®¡é¥­¨¥ ® ®¡«®¬¥ ¯à¨ ¢ë¤¥«¥­¨¨ ¯ ¬ïâ¨
7686
; ‘®®¡é¥­¨¥ ® ®¡«®¬¥ ¯à¨ ¢ë¤¥«¥­¨¨ ¯ ¬ïâ¨
7687
nomem_dlgdata:
7687
nomem_dlgdata:
7688
        dd      2
7688
        dd      2
7689
        dd      -1
7689
        dd      -1
7690
        dd      -1
7690
        dd      -1
7691
        dd      12
7691
        dd      12
7692
        dd      2
7692
        dd      2
7693
        dd      1
7693
        dd      1
7694
        dd      1
7694
        dd      1
7695
        dd      aError
7695
        dd      aError
7696
        rb      8
7696
        rb      8
7697
        dd      0
7697
        dd      0
7698
        dd      0
7698
        dd      0
7699
        dd      2
7699
        dd      2
7700
; áâப  "No memory"
7700
; áâப  "No memory"
7701
        dd      1
7701
        dd      1
7702
        dd      1,0,10,0
7702
        dd      1,0,10,0
7703
        dd      aNoMemory
7703
        dd      aNoMemory
7704
        dd      1
7704
        dd      1
7705
; ª­®¯ª  "Ok"
7705
; ª­®¯ª  "Ok"
7706
        dd      2
7706
        dd      2
7707
        dd      4,1,7,1
7707
        dd      4,1,7,1
7708
        dd      aOk
7708
        dd      aOk
7709
        dd      0xD
7709
        dd      0xD
7710
 
7710
 
7711
; ¤¨ «®£ ª®¯¨à®¢ ­¨ï
7711
; ¤¨ «®£ ª®¯¨à®¢ ­¨ï
7712
copy_dlgdata:
7712
copy_dlgdata:
7713
        dd      1
7713
        dd      1
7714
.x      dd      -1
7714
.x      dd      -1
7715
.y      dd      -1
7715
.y      dd      -1
7716
.width  dd      ?
7716
.width  dd      ?
7717
.height dd      4
7717
.height dd      4
7718
        dd      4
7718
        dd      4
7719
        dd      2
7719
        dd      2
7720
        dd      aCopyCaption
7720
        dd      aCopyCaption
7721
.main_color db ?
7721
.main_color db ?
7722
.border_color db ?
7722
.border_color db ?
7723
.header_color db ?
7723
.header_color db ?
7724
        db      0
7724
        db      0
7725
        dd      ?
7725
        dd      ?
7726
        dd      0
7726
        dd      0
7727
        dd      0
7727
        dd      0
7728
        dd      4
7728
        dd      4
7729
; áâப  'Š®¯¨à®¢ âì "%s" ¢:'
7729
; áâப  'Š®¯¨à®¢ âì "%s" ¢:'
7730
        dd      1
7730
        dd      1
7731
        dd      1,0
7731
        dd      1,0
7732
.width2 dd      ?
7732
.width2 dd      ?
7733
        dd      0
7733
        dd      0
7734
        dd      CopySourceTextBuf
7734
        dd      CopySourceTextBuf
7735
        dd      0
7735
        dd      0
7736
; ¯®«¥ । ªâ¨à®¢ ­¨ï á ¨¬¥­¥¬ ä ©« /¯ ¯ª¨ ­ §­ ç¥­¨ï
7736
; ¯®«¥ । ªâ¨à®¢ ­¨ï á ¨¬¥­¥¬ ä ©« /¯ ¯ª¨ ­ §­ ç¥­¨ï
7737
        dd      3
7737
        dd      3
7738
        dd      1,1
7738
        dd      1,1
7739
.width3 dd      ?
7739
.width3 dd      ?
7740
        dd      1
7740
        dd      1
7741
        dd      CopyDestEditBuf
7741
        dd      CopyDestEditBuf
7742
.flags0 dd      0
7742
.flags0 dd      0
7743
; ª­®¯ª  "ª®¯¨à®¢ âì"
7743
; ª­®¯ª  "ª®¯¨à®¢ âì"
7744
.copy_btn:
7744
.copy_btn:
7745
        dd      2
7745
        dd      2
7746
.copy_x1 dd     ?
7746
.copy_x1 dd     ?
7747
        dd      3
7747
        dd      3
7748
.copy_x2 dd     ?
7748
.copy_x2 dd     ?
7749
        dd      3
7749
        dd      3
7750
        dd      aCopy
7750
        dd      aCopy
7751
.flags1 dd      18h
7751
.flags1 dd      18h
7752
; ª­®¯ª  "®â¬¥­¨âì"
7752
; ª­®¯ª  "®â¬¥­¨âì"
7753
        dd      2
7753
        dd      2
7754
.cnl_x1 dd      ?
7754
.cnl_x1 dd      ?
7755
        dd      3
7755
        dd      3
7756
.cnl_x2 dd      ?
7756
.cnl_x2 dd      ?
7757
        dd      3
7757
        dd      3
7758
        dd      aCancelB
7758
        dd      aCancelB
7759
.flags2 dd      8
7759
.flags2 dd      8
7760
 
7760
 
7761
mkdir_dlgdata:
7761
mkdir_dlgdata:
7762
        dd      1
7762
        dd      1
7763
        dd      -1, -1
7763
        dd      -1, -1
7764
.width  dd      ?
7764
.width  dd      ?
7765
.height dd      4
7765
.height dd      4
7766
        dd      4, 2
7766
        dd      4, 2
7767
        dd      aMkDirCaption
7767
        dd      aMkDirCaption
7768
        dd      ?, ?
7768
        dd      ?, ?
7769
        dd      0
7769
        dd      0
7770
        dd      0
7770
        dd      0
7771
        dd      4
7771
        dd      4
7772
; ‘âப  "‘®§¤ âì ¯ ¯ªã"
7772
; ‘âப  "‘®§¤ âì ¯ ¯ªã"
7773
        dd      1
7773
        dd      1
7774
        dd      1,0,aMkDirLen,0
7774
        dd      1,0,aMkDirLen,0
7775
        dd      aMkDir
7775
        dd      aMkDir
7776
        dd      0
7776
        dd      0
7777
; ¯®«¥ । ªâ¨à®¢ ­¨ï á ¨¬¥­¥¬ ᮧ¤ ¢ ¥¬®© ¯ ¯ª¨
7777
; ¯®«¥ । ªâ¨à®¢ ­¨ï á ¨¬¥­¥¬ ᮧ¤ ¢ ¥¬®© ¯ ¯ª¨
7778
        dd      3
7778
        dd      3
7779
        dd      1,1
7779
        dd      1,1
7780
.width2 dd      ?
7780
.width2 dd      ?
7781
        dd      1
7781
        dd      1
7782
        dd      CopyDestEditBuf
7782
        dd      CopyDestEditBuf
7783
.flags0 dd      0xC
7783
.flags0 dd      0xC
7784
; ª­®¯ª  "à®¤®«¦¨âì"
7784
; ª­®¯ª  "à®¤®«¦¨âì"
7785
.cont_btn:
7785
.cont_btn:
7786
        dd      2
7786
        dd      2
7787
.cont_x1 dd     ?
7787
.cont_x1 dd     ?
7788
        dd      3
7788
        dd      3
7789
.cont_x2 dd     ?
7789
.cont_x2 dd     ?
7790
        dd      3
7790
        dd      3
7791
        dd      a_Continue
7791
        dd      a_Continue
7792
.flags1 dd      18h
7792
.flags1 dd      18h
7793
; ª­®¯ª  "®â¬¥­¨âì"
7793
; ª­®¯ª  "®â¬¥­¨âì"
7794
        dd      2
7794
        dd      2
7795
.cnl_x1 dd      ?
7795
.cnl_x1 dd      ?
7796
        dd      3
7796
        dd      3
7797
.cnl_x2 dd      ?
7797
.cnl_x2 dd      ?
7798
        dd      3
7798
        dd      3
7799
        dd      aCancelB
7799
        dd      aCancelB
7800
.flags2 dd      8
7800
.flags2 dd      8
7801
 
7801
 
7802
; ¤¨ «®£ ¢ë¤¥«¥­¨ï/á­ïâ¨ï
7802
; ¤¨ «®£ ¢ë¤¥«¥­¨ï/á­ïâ¨ï
7803
mark_dlgdata:
7803
mark_dlgdata:
7804
        dd      1
7804
        dd      1
7805
        dd      -1, -1
7805
        dd      -1, -1
7806
        dd      37, 1
7806
        dd      37, 1
7807
        dd      4, 2
7807
        dd      4, 2
7808
.title  dd      ?
7808
.title  dd      ?
7809
        dd      ?, ?
7809
        dd      ?, ?
7810
        dd      0, 0
7810
        dd      0, 0
7811
        dd      1
7811
        dd      1
7812
; ¯®«¥ । ªâ¨à®¢ ­¨ï
7812
; ¯®«¥ । ªâ¨à®¢ ­¨ï
7813
        dd      3
7813
        dd      3
7814
        dd      1, 0, 35, 0
7814
        dd      1, 0, 35, 0
7815
        dd      enter_string_buf
7815
        dd      enter_string_buf
7816
.flags  dd      ?
7816
.flags  dd      ?
7817
 
7817
 
7818
; ¤¨ «®£ ¡ëáâண® ¯®¨áª  ¢ ¯ ­¥«¨ (Alt+¡ãª¢ë)
7818
; ¤¨ «®£ ¡ëáâண® ¯®¨áª  ¢ ¯ ­¥«¨ (Alt+¡ãª¢ë)
7819
QuickSearchDlg:
7819
QuickSearchDlg:
7820
        dd      5
7820
        dd      5
7821
.x      dd      ?
7821
.x      dd      ?
7822
.y      dd      ?
7822
.y      dd      ?
7823
        dd      20, 1
7823
        dd      20, 1
7824
        dd      1, 1
7824
        dd      1, 1
7825
        dd      aSearch
7825
        dd      aSearch
7826
        dd      ?, ?
7826
        dd      ?, ?
7827
        dd      0, 0
7827
        dd      0, 0
7828
        dd      1
7828
        dd      1
7829
; ¯®«¥ । ªâ¨à®¢ ­¨ï
7829
; ¯®«¥ । ªâ¨à®¢ ­¨ï
7830
        dd      3
7830
        dd      3
7831
        dd      1, 0, 18, 0
7831
        dd      1, 0, 18, 0
7832
        dd      quick_search_buf
7832
        dd      quick_search_buf
7833
        dd      1Ch
7833
        dd      1Ch
7834
 
7834
 
7835
; ¤¨ «®£ ¯®¨áª  ¢ ä ©«¥ ¤«ï ¯à®á¬®âà騪  ¨ । ªâ®à 
7835
; ¤¨ «®£ ¯®¨áª  ¢ ä ©«¥ ¤«ï ¯à®á¬®âà騪  ¨ । ªâ®à 
7836
find_in_file_dlgdata:
7836
find_in_file_dlgdata:
7837
        dd      1
7837
        dd      1
7838
.x      dd      -1
7838
.x      dd      -1
7839
.y      dd      -1
7839
.y      dd      -1
7840
.width  dd      ?
7840
.width  dd      ?
7841
.height dd      7
7841
.height dd      7
7842
        dd      4, 2
7842
        dd      4, 2
7843
        dd      aSearch
7843
        dd      aSearch
7844
        dd      ?, ?
7844
        dd      ?, ?
7845
        dd      0, 0
7845
        dd      0, 0
7846
        dd      8
7846
        dd      8
7847
; ‘âப  "ˆáª âì"
7847
; ‘âப  "ˆáª âì"
7848
        dd      1
7848
        dd      1
7849
        dd      1,0,aSearchForLen,0
7849
        dd      1,0,aSearchForLen,0
7850
        dd      aSearchFor
7850
        dd      aSearchFor
7851
        dd      0
7851
        dd      0
7852
; ¯®«¥ । ªâ¨à®¢ ­¨ï á ⥪á⮬ ¤«ï ¯®¨áª 
7852
; ¯®«¥ । ªâ¨à®¢ ­¨ï á ⥪á⮬ ¤«ï ¯®¨áª 
7853
        dd      3
7853
        dd      3
7854
        dd      1,1
7854
        dd      1,1
7855
.width2 dd      ?
7855
.width2 dd      ?
7856
        dd      1
7856
        dd      1
7857
        dd      SearchStringEditBuf
7857
        dd      SearchStringEditBuf
7858
.flags0 dd      0xC
7858
.flags0 dd      0xC
7859
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
7859
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
7860
        dd      4
7860
        dd      4
7861
        dd      -1,2
7861
        dd      -1,2
7862
        dd      -1,2
7862
        dd      -1,2
7863
        dd      0
7863
        dd      0
7864
        dd      0
7864
        dd      0
7865
; ä« ¦®ª "“ç¨â뢠âì ॣ¨áâà"
7865
; ä« ¦®ª "“ç¨â뢠âì ॣ¨áâà"
7866
        dd      5
7866
        dd      5
7867
        dd      1,3
7867
        dd      1,3
7868
        dd      -1,3
7868
        dd      -1,3
7869
        dd      aCaseSensitive
7869
        dd      aCaseSensitive
7870
.flags_case dd  18h     ; default: search is case sensitive
7870
.flags_case dd  18h     ; default: search is case sensitive
7871
; ä« ¦®ª "’®«ìª® æ¥«ë¥ á«®¢ "
7871
; ä« ¦®ª "’®«ìª® æ¥«ë¥ á«®¢ "
7872
        dd      5
7872
        dd      5
7873
        dd      1,4
7873
        dd      1,4
7874
        dd      -1,4
7874
        dd      -1,4
7875
        dd      aWholeWords
7875
        dd      aWholeWords
7876
.flags_whole dd 8       ; default: do NOT search whole words only
7876
.flags_whole dd 8       ; default: do NOT search whole words only
7877
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
7877
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
7878
        dd      4
7878
        dd      4
7879
        dd      -1,5
7879
        dd      -1,5
7880
        dd      -1,5
7880
        dd      -1,5
7881
        dd      0
7881
        dd      0
7882
        dd      0
7882
        dd      0
7883
; ª­®¯ª  "ˆáª âì"
7883
; ª­®¯ª  "ˆáª âì"
7884
.search_btn:
7884
.search_btn:
7885
        dd      2
7885
        dd      2
7886
.search_x1 dd   ?
7886
.search_x1 dd   ?
7887
        dd      6
7887
        dd      6
7888
.search_x2 dd   ?
7888
.search_x2 dd   ?
7889
        dd      6
7889
        dd      6
7890
        dd      aSearchB
7890
        dd      aSearchB
7891
.flags1 dd      18h
7891
.flags1 dd      18h
7892
; ª­®¯ª  "®â¬¥­¨âì"
7892
; ª­®¯ª  "®â¬¥­¨âì"
7893
        dd      2
7893
        dd      2
7894
.cnl_x1 dd      ?
7894
.cnl_x1 dd      ?
7895
        dd      6
7895
        dd      6
7896
.cnl_x2 dd      ?
7896
.cnl_x2 dd      ?
7897
        dd      6
7897
        dd      6
7898
        dd      aCancelB
7898
        dd      aCancelB
7899
.flags2 dd      8
7899
.flags2 dd      8
7900
 
7900
 
7901
; ¯¥à¢ë© ¤¨ «®£ ¯®¨áª  ¢ ä ©« å (§ ¯à®á)
7901
; ¯¥à¢ë© ¤¨ «®£ ¯®¨áª  ¢ ä ©« å (§ ¯à®á)
7902
filesearch_query_template:
7902
filesearch_query_template:
7903
        dd      1
7903
        dd      1
7904
.x      dd      ?
7904
.x      dd      ?
7905
.y      dd      ?
7905
.y      dd      ?
7906
.width  dd      ?
7906
.width  dd      ?
7907
.height dd      9
7907
.height dd      9
7908
        dd      4, 2
7908
        dd      4, 2
7909
        dd      aFileSearch
7909
        dd      aFileSearch
7910
        dd      ?
7910
        dd      ?
7911
        dd      0
7911
        dd      0
7912
        dd      0, 0
7912
        dd      0, 0
7913
        dd      10
7913
        dd      10
7914
; áâப -¯à¨£« è¥­¨¥ ¤«ï ¢¢®¤  ¬ áª¨
7914
; áâப -¯à¨£« è¥­¨¥ ¤«ï ¢¢®¤  ¬ áª¨
7915
        dd      1
7915
        dd      1
7916
        dd      1,0,aFileMasksLen,0
7916
        dd      1,0,aFileMasksLen,0
7917
        dd      aFileMasks
7917
        dd      aFileMasks
7918
        dd      0
7918
        dd      0
7919
; ¯®«¥ ¢¢®¤  ¤«ï ¬ áª¨
7919
; ¯®«¥ ¢¢®¤  ¤«ï ¬ áª¨
7920
        dd      3
7920
        dd      3
7921
        dd      1, 1
7921
        dd      1, 1
7922
.width2 dd      ?
7922
.width2 dd      ?
7923
        dd      1
7923
        dd      1
7924
.editptr1 dd    ?
7924
.editptr1 dd    ?
7925
        dd      0xC
7925
        dd      0xC
7926
; áâப -¯à¨£« è¥­¨¥ ¤«ï ⥪áâ  ¯®¨áª 
7926
; áâப -¯à¨£« è¥­¨¥ ¤«ï ⥪áâ  ¯®¨áª 
7927
        dd      1
7927
        dd      1
7928
        dd      1,2,aContainingTextLen,2
7928
        dd      1,2,aContainingTextLen,2
7929
        dd      aContainingText
7929
        dd      aContainingText
7930
        dd      0
7930
        dd      0
7931
; ¯®«¥ ¢¢®¤  ¤«ï ⥪áâ  ¯®¨áª 
7931
; ¯®«¥ ¢¢®¤  ¤«ï ⥪áâ  ¯®¨áª 
7932
        dd      3
7932
        dd      3
7933
        dd      1, 3
7933
        dd      1, 3
7934
.width3 dd      ?
7934
.width3 dd      ?
7935
        dd      3
7935
        dd      3
7936
.editptr2 dd    ?
7936
.editptr2 dd    ?
7937
        dd      8
7937
        dd      8
7938
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
7938
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
7939
        dd      4
7939
        dd      4
7940
        dd      -1,4
7940
        dd      -1,4
7941
        dd      -1,4
7941
        dd      -1,4
7942
        dd      0
7942
        dd      0
7943
        dd      0
7943
        dd      0
7944
; ä« ¦®ª "“ç¨â뢠âì ॣ¨áâà"
7944
; ä« ¦®ª "“ç¨â뢠âì ॣ¨áâà"
7945
        dd      5
7945
        dd      5
7946
        dd      1,5
7946
        dd      1,5
7947
        dd      -1,5
7947
        dd      -1,5
7948
        dd      aCaseSensitive
7948
        dd      aCaseSensitive
7949
.flags_case dd  ?       ; will be initialized from find_in_file_dlgdata
7949
.flags_case dd  ?       ; will be initialized from find_in_file_dlgdata
7950
; ä« ¦®ª "’®«ìª® æ¥«ë¥ á«®¢ "
7950
; ä« ¦®ª "’®«ìª® æ¥«ë¥ á«®¢ "
7951
        dd      5
7951
        dd      5
7952
        dd      1,6
7952
        dd      1,6
7953
        dd      -1,6
7953
        dd      -1,6
7954
        dd      aWholeWords
7954
        dd      aWholeWords
7955
.flags_whole dd ?       ; will be initialized from find_in_file_dlgdata
7955
.flags_whole dd ?       ; will be initialized from find_in_file_dlgdata
7956
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
7956
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
7957
        dd      4
7957
        dd      4
7958
        dd      -1,7
7958
        dd      -1,7
7959
        dd      -1,7
7959
        dd      -1,7
7960
        dd      0
7960
        dd      0
7961
        dd      0
7961
        dd      0
7962
; ª­®¯ª  "ˆáª âì"
7962
; ª­®¯ª  "ˆáª âì"
7963
.search_btn:
7963
.search_btn:
7964
        dd      2
7964
        dd      2
7965
.search_x1 dd   ?
7965
.search_x1 dd   ?
7966
        dd      8
7966
        dd      8
7967
.search_x2 dd   ?
7967
.search_x2 dd   ?
7968
        dd      8
7968
        dd      8
7969
        dd      aSearchB
7969
        dd      aSearchB
7970
        dd      18h
7970
        dd      18h
7971
; ª­®¯ª  "®â¬¥­¨âì"
7971
; ª­®¯ª  "®â¬¥­¨âì"
7972
        dd      2
7972
        dd      2
7973
.cnl_x1 dd      ?
7973
.cnl_x1 dd      ?
7974
        dd      8
7974
        dd      8
7975
.cnl_x2 dd      ?
7975
.cnl_x2 dd      ?
7976
        dd      8
7976
        dd      8
7977
        dd      aCancelB
7977
        dd      aCancelB
7978
        dd      8
7978
        dd      8
7979
.size = $ - filesearch_query_template
7979
.size = $ - filesearch_query_template
7980
 
7980
 
7981
; ¢â®à®© ¤¨ «®£ ¯®¨áª  ¢ ä ©« å (᪠­¨à®¢ ­¨¥)
7981
; ¢â®à®© ¤¨ «®£ ¯®¨áª  ¢ ä ©« å (᪠­¨à®¢ ­¨¥)
7982
filesearch_search_template:
7982
filesearch_search_template:
7983
        dd      1
7983
        dd      1
7984
.x      dd      ?
7984
.x      dd      ?
7985
.y      dd      ?
7985
.y      dd      ?
7986
.width  dd      ?
7986
.width  dd      ?
7987
.height dd      ?
7987
.height dd      ?
7988
        dd      4, 2
7988
        dd      4, 2
7989
.caption dd     ?
7989
.caption dd     ?
7990
        dd      ?
7990
        dd      ?
7991
        dd      0
7991
        dd      0
7992
        dd      0, 0
7992
        dd      0, 0
7993
        dd      9
7993
        dd      9
7994
; ᯨ᮪ ­ ©¤¥­­ëå ä ©«®¢
7994
; ᯨ᮪ ­ ©¤¥­­ëå ä ©«®¢
7995
        dd      6
7995
        dd      6
7996
        dd      0, 0
7996
        dd      0, 0
7997
.width1 dd      ?
7997
.width1 dd      ?
7998
.height1 dd     ?
7998
.height1 dd     ?
7999
.data1  dd      ?
7999
.data1  dd      ?
8000
        dd      0
8000
        dd      0
8001
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
8001
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
8002
        dd      4
8002
        dd      4
8003
        dd      -1
8003
        dd      -1
8004
.y2     dd      ?
8004
.y2     dd      ?
8005
        dd      -1
8005
        dd      -1
8006
        dd      ?
8006
        dd      ?
8007
        dd      0, 0
8007
        dd      0, 0
8008
; áâப  "®¨áª  ¢:" «¨¡® "®¨áª § ª®­ç¥­..."
8008
; áâப  "®¨áª  ¢:" «¨¡® "®¨áª § ª®­ç¥­..."
8009
        dd      1
8009
        dd      1
8010
        dd      1
8010
        dd      1
8011
.y3     dd      ?
8011
.y3     dd      ?
8012
.width3 dd      ?
8012
.width3 dd      ?
8013
        dd      ?
8013
        dd      ?
8014
.data3  dd      ?
8014
.data3  dd      ?
8015
        dd      0
8015
        dd      0
8016
; áâப  á ⥪ã饩 ¯ ¯ª®©
8016
; áâப  á ⥪ã饩 ¯ ¯ª®©
8017
        dd      1
8017
        dd      1
8018
.x4     dd      ?
8018
.x4     dd      ?
8019
.y4     dd      ?
8019
.y4     dd      ?
8020
.width4 dd      ?
8020
.width4 dd      ?
8021
        dd      ?
8021
        dd      ?
8022
.data4  dd      ?
8022
.data4  dd      ?
8023
        dd      0
8023
        dd      0
8024
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
8024
; £®à¨§®­â «ì­ë© à §¤¥«¨â¥«ì
8025
        dd      4
8025
        dd      4
8026
        dd      -1
8026
        dd      -1
8027
.y5     dd      ?
8027
.y5     dd      ?
8028
        dd      -1
8028
        dd      -1
8029
        dd      ?
8029
        dd      ?
8030
        dd      0, 0
8030
        dd      0, 0
8031
; ª­®¯ª¨
8031
; ª­®¯ª¨
8032
.btn1:
8032
.btn1:
8033
        dd      2
8033
        dd      2
8034
.btn1x1 dd      ?
8034
.btn1x1 dd      ?
8035
.btn1y  dd      ?
8035
.btn1y  dd      ?
8036
.btn1x2 dd      ?
8036
.btn1x2 dd      ?
8037
        dd      ?
8037
        dd      ?
8038
        dd      aNewSearch
8038
        dd      aNewSearch
8039
        dd      8
8039
        dd      8
8040
.btn2:
8040
.btn2:
8041
        dd      2
8041
        dd      2
8042
.btn2x1 dd      ?
8042
.btn2x1 dd      ?
8043
.btn2y  dd      ?
8043
.btn2y  dd      ?
8044
.btn2x2 dd      ?
8044
.btn2x2 dd      ?
8045
        dd      ?
8045
        dd      ?
8046
        dd      aGoto
8046
        dd      aGoto
8047
        dd      1Ch
8047
        dd      1Ch
8048
.btn3:
8048
.btn3:
8049
        dd      2
8049
        dd      2
8050
.btn3x1 dd      ?
8050
.btn3x1 dd      ?
8051
.btn3y  dd      ?
8051
.btn3y  dd      ?
8052
.btn3x2 dd      ?
8052
.btn3x2 dd      ?
8053
        dd      ?
8053
        dd      ?
8054
        dd      aView
8054
        dd      aView
8055
        dd      8
8055
        dd      8
8056
.btn4:
8056
.btn4:
8057
        dd      2
8057
        dd      2
8058
.btn4x1 dd      ?
8058
.btn4x1 dd      ?
8059
.btn4y  dd      ?
8059
.btn4y  dd      ?
8060
.btn4x2 dd      ?
8060
.btn4x2 dd      ?
8061
        dd      ?
8061
        dd      ?
8062
        dd      aCancelB2
8062
        dd      aCancelB2
8063
        dd      8
8063
        dd      8
8064
.size = $ - filesearch_search_template
8064
.size = $ - filesearch_search_template
8065
 
8065
 
8066
RetryOrCancelBtn:
8066
RetryOrCancelBtn:
8067
        dd      aRetry
8067
        dd      aRetry
8068
        dd      a_Cancel
8068
        dd      a_Cancel
8069
DeleteOrKeepBtn:
8069
DeleteOrKeepBtn:
8070
        dd      a_Delete
8070
        dd      a_Delete
8071
        dd      aKeep
8071
        dd      aKeep
8072
RetryOrIgnoreBtn:
8072
RetryOrIgnoreBtn:
8073
        dd      aRetry
8073
        dd      aRetry
8074
        dd      aIgnore
8074
        dd      aIgnore
8075
DeleteOrCancelBtn:
8075
DeleteOrCancelBtn:
8076
        dd      a_Delete
8076
        dd      a_Delete
8077
        dd      a_Cancel
8077
        dd      a_Cancel
8078
DeleteErrorBtn:
8078
DeleteErrorBtn:
8079
        dd      aRetry
8079
        dd      aRetry
8080
SkipOrCancelBtn:
8080
SkipOrCancelBtn:
8081
        dd      aSkip
8081
        dd      aSkip
8082
        dd      aSkipAll
8082
        dd      aSkipAll
8083
        dd      a_Cancel
8083
        dd      a_Cancel
8084
ContinueBtn:
8084
ContinueBtn:
8085
        dd      aContinue
8085
        dd      aContinue
8086
EditorExitBtn:
8086
EditorExitBtn:
8087
        dd      aSave
8087
        dd      aSave
8088
        dd      aDontSave
8088
        dd      aDontSave
8089
        dd      aContinueEdit
8089
        dd      aContinueEdit
8090
YesOrNoBtn:
8090
YesOrNoBtn:
8091
        dd      aYes
8091
        dd      aYes
8092
        dd      aNo
8092
        dd      aNo
8093
 
8093
 
8094
aCannotOpenFile_ptr     dd      aCannotOpenFile
8094
aCannotOpenFile_ptr     dd      aCannotOpenFile
8095
aCannotCreateThread_ptr dd      aCannotCreateThread
8095
aCannotCreateThread_ptr dd      aCannotCreateThread
8096
ConfirmCancelMsg        dd      aConfirmCancel
8096
ConfirmCancelMsg        dd      aConfirmCancel
8097
EditConfigErr_ptr:
8097
EditConfigErr_ptr:
8098
        dd      aEditConfigErr1
8098
        dd      aEditConfigErr1
8099
        dd      aEditConfigErr2
8099
        dd      aEditConfigErr2
8100
if lang eq ru
8100
if lang eq ru
8101
aDeleteCaption          db      '“¤ «¥­¨¥',0
8101
aDeleteCaption          db      '“¤ «¥­¨¥',0
8102
aConfirmDeleteText      db      '‚ë å®â¨â¥ 㤠«¨âì',0
8102
aConfirmDeleteText      db      '‚ë å®â¨â¥ 㤠«¨âì',0
8103
aDeleteFolder           db      ' ¯ ¯ªã',0
8103
aDeleteFolder           db      ' ¯ ¯ªã',0
8104
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
8104
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
8105
aDeleteFile             db      ' ä ©«',0
8105
aDeleteFile             db      ' ä ©«',0
8106
aCancelB                db      '[ Žâ¬¥­¨âì ]',0
8106
aCancelB                db      '[ Žâ¬¥­¨âì ]',0
8107
aCancelBLength = $ - aCancelB - 1
8107
aCancelBLength = $ - aCancelB - 1
8108
aCancelB2               db      '[ Žâ¬¥­  ]',0
8108
aCancelB2               db      '[ Žâ¬¥­  ]',0
8109
aCancelB2Length = $ - aCancelB2 - 1
8109
aCancelB2Length = $ - aCancelB2 - 1
8110
aCopyCaption            db      'Š®¯¨à®¢ ­¨¥',0
8110
aCopyCaption            db      'Š®¯¨à®¢ ­¨¥',0
8111
aCopy                   db      '[ Š®¯¨à®¢ âì ]',0
8111
aCopy                   db      '[ Š®¯¨à®¢ âì ]',0
8112
aCopyLength = $ - aCopy - 1
8112
aCopyLength = $ - aCopy - 1
8113
a_Continue              db      '[ à®¤®«¦¨âì ]',0
8113
a_Continue              db      '[ à®¤®«¦¨âì ]',0
8114
a_ContinueLength = $ - a_Continue - 1
8114
a_ContinueLength = $ - a_Continue - 1
8115
aCopy1                  db      'Š®¯¨à®¢ âì ',0
8115
aCopy1                  db      'Š®¯¨à®¢ âì ',0
8116
aCopy2                  db      ' ¢:',0
8116
aCopy2                  db      ' ¢:',0
8117
aError                  db      'Žè¨¡ª ',0
8117
aError                  db      'Žè¨¡ª ',0
8118
aContinue               db      'à®¤®«¦¨âì',0
8118
aContinue               db      'à®¤®«¦¨âì',0
8119
aRetry                  db      '®¢â®à¨âì',0
8119
aRetry                  db      '®¢â®à¨âì',0
8120
a_Cancel                db      'Žâ¬¥­¨âì',0
8120
a_Cancel                db      'Žâ¬¥­¨âì',0
8121
a_Delete                db      '“¤ «¨âì',0
8121
a_Delete                db      '“¤ «¨âì',0
8122
aSkip                   db      'à®¯ãáâ¨âì',0
8122
aSkip                   db      'à®¯ãáâ¨âì',0
8123
aSkipAll                db      'à®¯ãáâ¨âì ¢á¥',0
8123
aSkipAll                db      'à®¯ãáâ¨âì ¢á¥',0
8124
aYes                    db      '„ ',0
8124
aYes                    db      '„ ',0
8125
aNo                     db      '¥â',0
8125
aNo                     db      '¥â',0
8126
error0msg               db      '‘âà ­­®... ¥â ®è¨¡ª¨',0
8126
error0msg               db      '‘âà ­­®... ¥â ®è¨¡ª¨',0
8127
error1msg               db      '‘âà ­­®... ¥ ®¯à¥¤¥«¥­  ¡ §  ¨/¨«¨ à §¤¥« ¦ñá⪮£® ¤¨áª ',0
8127
error1msg               db      '‘âà ­­®... ¥ ®¯à¥¤¥«¥­  ¡ §  ¨/¨«¨ à §¤¥« ¦ñá⪮£® ¤¨áª ',0
8128
error2msg               db      '”ã­ªæ¨ï ­¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï ¤ ­­®© ä ©«®¢®© á¨á⥬ë',0
8128
error2msg               db      '”ã­ªæ¨ï ­¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï ¤ ­­®© ä ©«®¢®© á¨á⥬ë',0
8129
error3msg               db      '¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬ ',0
8129
error3msg               db      '¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬ ',0
8130
error4msg               db      '‘âà ­­®... Žè¨¡ª  4',0
8130
error4msg               db      '‘âà ­­®... Žè¨¡ª  4',0
8131
error5msg               db      '” ©« ­¥ ­ ©¤¥­',0
8131
error5msg               db      '” ©« ­¥ ­ ©¤¥­',0
8132
error6msg               db      '” ©« § ª®­ç¨«áï',0
8132
error6msg               db      '” ©« § ª®­ç¨«áï',0
8133
error7msg               db      '‘âà ­­®... “ª § â¥«ì ¢­¥ ¯ ¬ï⨠¯à¨«®¦¥­¨ï',0
8133
error7msg               db      '‘âà ­­®... “ª § â¥«ì ¢­¥ ¯ ¬ï⨠¯à¨«®¦¥­¨ï',0
8134
error8msg               db      '„¨áª § ¯®«­¥­',0
8134
error8msg               db      '„¨áª § ¯®«­¥­',0
8135
error9msg               db      '” ©«®¢ ï áâàãªâãà  à §àã襭 ',0
8135
error9msg               db      '” ©«®¢ ï áâàãªâãà  à §àã襭 ',0
8136
error10msg              db      '„®áâ㯠§ ¯à¥éñ­',0
8136
error10msg              db      '„®áâ㯠§ ¯à¥éñ­',0
8137
error11msg              db      'Žè¨¡ª  ãáâனá⢠',0
8137
error11msg              db      'Žè¨¡ª  ãáâனá⢠',0
8138
error30msg              db      '¥¤®áâ â®ç­® ¯ ¬ïâ¨',0
8138
error30msg              db      '¥¤®áâ â®ç­® ¯ ¬ïâ¨',0
8139
error31msg              db      '” ©« ­¥ ï¥âáï ¨á¯®«­ï¥¬ë¬',0
8139
error31msg              db      '” ©« ­¥ ï¥âáï ¨á¯®«­ï¥¬ë¬',0
8140
error32msg              db      '‘«¨èª®¬ ¬­®£® ¯à®æ¥áᮢ',0
8140
error32msg              db      '‘«¨èª®¬ ¬­®£® ¯à®æ¥áᮢ',0
8141
aUnknownError           db      '¥¨§¢¥áâ­ë© ª®¤ ®è¨¡ª¨: ',0
8141
aUnknownError           db      '¥¨§¢¥áâ­ë© ª®¤ ®è¨¡ª¨: ',0
8142
aCannotReadFolder       db      '¥ ¬®£ã ¯à®ç¨â âì ¯ ¯ªã',0
8142
aCannotReadFolder       db      '¥ ¬®£ã ¯à®ç¨â âì ¯ ¯ªã',0
8143
aRunError               db      'Žè¨¡ª  ¯à¨ § ¯ã᪥ ¯à®£à ¬¬ë:',0
8143
aRunError               db      'Žè¨¡ª  ¯à¨ § ¯ã᪥ ¯à®£à ¬¬ë:',0
8144
aFileNameTooBig         db      '®«­®¥ ¨¬ï ä ©«  ᫨誮¬ ¤«¨­­®¥',0
8144
aFileNameTooBig         db      '®«­®¥ ¨¬ï ä ©«  ᫨誮¬ ¤«¨­­®¥',0
8145
aFolderNameTooBig       db      '®«­®¥ ¨¬ï ¯ ¯ª¨ ᫨誮¬ ¤«¨­­®¥',0
8145
aFolderNameTooBig       db      '®«­®¥ ¨¬ï ¯ ¯ª¨ ᫨誮¬ ¤«¨­­®¥',0
8146
aCmdLineTooBig          db      'Š®¬ ­¤­ ï áâப  ¯à¥¢ë蠥⠣࠭¨æã OS ¢ 256 ᨬ¢®«®¢',0
8146
aCmdLineTooBig          db      'Š®¬ ­¤­ ï áâப  ¯à¥¢ë蠥⠣࠭¨æã OS ¢ 256 ᨬ¢®«®¢',0
8147
aCannotCopyToSelf       db      '” ©« ­¥ ¬®¦¥â ¡ëâì ᪮¯¨à®¢ ­ ¢ á ¬®£® ᥡï',0
8147
aCannotCopyToSelf       db      '” ©« ­¥ ¬®¦¥â ¡ëâì ᪮¯¨à®¢ ­ ¢ á ¬®£® ᥡï',0
8148
aCannotReadFile         db      '¥ ¬®£ã ¯à®ç¨â âì ä ©«',0
8148
aCannotReadFile         db      '¥ ¬®£ã ¯à®ç¨â âì ä ©«',0
8149
aIncompleteFile         db      'ë« ¯®«ã祭 ­¥¯®«­ë© ä ©«. “¤ «¨âì ¥£®?',0
8149
aIncompleteFile         db      'ë« ¯®«ã祭 ­¥¯®«­ë© ä ©«. “¤ «¨âì ¥£®?',0
8150
aKeep                   db      'Žáâ ¢¨âì',0
8150
aKeep                   db      'Žáâ ¢¨âì',0
8151
aCannotWriteFile        db      '¥ ¬®£ã § ¯¨á âì ¢ ä ©«',0
8151
aCannotWriteFile        db      '¥ ¬®£ã § ¯¨á âì ¢ ä ©«',0
8152
aCannotDeleteFile       db      '¥ ¬®£ã 㤠«¨âì ä ©«',0
8152
aCannotDeleteFile       db      '¥ ¬®£ã 㤠«¨âì ä ©«',0
8153
aCannotDeleteFolder     db      '¥ ¬®£ã 㤠«¨âì ¯ ¯ªã',0
8153
aCannotDeleteFolder     db      '¥ ¬®£ã 㤠«¨âì ¯ ¯ªã',0
8154
aNotFolder              db      '­¥ ï¥âáï ¯ ¯ª®©',0
8154
aNotFolder              db      '­¥ ï¥âáï ¯ ¯ª®©',0
8155
aIgnore                 db      'ˆ£­®à¨à®¢ âì',0
8155
aIgnore                 db      'ˆ£­®à¨à®¢ âì',0
8156
aMkDirCaption           db      '‘®§¤ ­¨¥ ¯ ¯ª¨',0
8156
aMkDirCaption           db      '‘®§¤ ­¨¥ ¯ ¯ª¨',0
8157
aMkDir                  db      '‘®§¤ âì ¯ ¯ªã',0
8157
aMkDir                  db      '‘®§¤ âì ¯ ¯ªã',0
8158
aMkDirLen = $ - aMkDir - 1
8158
aMkDirLen = $ - aMkDir - 1
8159
aCannotMakeFolder       db      '¥ ¬®£ã ᮧ¤ âì ¯ ¯ªã',0
8159
aCannotMakeFolder       db      '¥ ¬®£ã ᮧ¤ âì ¯ ¯ªã',0
8160
aName                   db      3,'ˆ¬ï'
8160
aName                   db      3,'ˆ¬ï'
8161
aSize                   db      6,' §¬¥à'
8161
aSize                   db      6,' §¬¥à'
8162
aDate                   db      4,'„ â '
8162
aDate                   db      4,'„ â '
8163
aTime                   db      5,'∴•'
8163
aTime                   db      5,'∴•'
8164
aCannotLoadDLL          db      '¥ ¬®£ã § £à㧨âì DLL',0
8164
aCannotLoadDLL          db      '¥ ¬®£ã § £à㧨âì DLL',0
8165
aCannotLoadPlugin       db      '¥ ¬®£ã § £à㧨âì ¯« £¨­',0
8165
aCannotLoadPlugin       db      '¥ ¬®£ã § £à㧨âì ¯« £¨­',0
8166
aInvalidDLL             db      '” ©« ­¥ ­ ©¤¥­ ¨«¨ ¨¬¥¥â ­¥¢¥à­ë© ä®à¬ â',0
8166
aInvalidDLL             db      '” ©« ­¥ ­ ©¤¥­ ¨«¨ ¨¬¥¥â ­¥¢¥à­ë© ä®à¬ â',0
8167
aMissingExport          db      '¥®¡å®¤¨¬ ï äã­ªæ¨ï ­¥ ­ ©¤¥­ ',0
8167
aMissingExport          db      '¥®¡å®¤¨¬ ï äã­ªæ¨ï ­¥ ­ ©¤¥­ ',0
8168
aInitFailed             db      'Žè¨¡ª  ¯à¨ ¨­¨æ¨ «¨§ æ¨¨',0
8168
aInitFailed             db      'Žè¨¡ª  ¯à¨ ¨­¨æ¨ «¨§ æ¨¨',0
8169
aIncompatibleVersion    db      '¥á®¢¬¥á⨬ ï ¢¥àá¨ï',0
8169
aIncompatibleVersion    db      '¥á®¢¬¥á⨬ ï ¢¥àá¨ï',0
8170
aTables                 db      '’ ¡«¨æë',0
8170
aTables                 db      '’ ¡«¨æë',0
8171
aSelect                 db      '®¬¥â¨âì',0
8171
aSelect                 db      '®¬¥â¨âì',0
8172
aDeselect               db      '‘­ïâì',0
8172
aDeselect               db      '‘­ïâì',0
8173
aCannotOpenFile         db      'Žè¨¡ª  ¯à¨ ®âªàë⨨ ä ©« ',0
8173
aCannotOpenFile         db      'Žè¨¡ª  ¯à¨ ®âªàë⨨ ä ©« ',0
8174
aCannotCreateThread     db      'Žè¨¡ª  ¯à¨ ᮧ¤ ­¨¨ ¯®â®ª ',0
8174
aCannotCreateThread     db      'Žè¨¡ª  ¯à¨ ᮧ¤ ­¨¨ ¯®â®ª ',0
8175
aCannotSetFolder        db      '¥ ¬®£ã § ©â¨ ¢ ¯ ¯ªã',0
8175
aCannotSetFolder        db      '¥ ¬®£ã § ©â¨ ¢ ¯ ¯ªã',0
8176
aSearch                 db      '®¨áª',0
8176
aSearch                 db      '®¨áª',0
8177
aSearchB                db      '[ ˆáª âì ]',0
8177
aSearchB                db      '[ ˆáª âì ]',0
8178
aSearchBLength = $ - aSearchB - 1
8178
aSearchBLength = $ - aSearchB - 1
8179
aSearchFor              db      'ˆáª âì',0
8179
aSearchFor              db      'ˆáª âì',0
8180
aSearchForLen = $ - aSearchFor - 1
8180
aSearchForLen = $ - aSearchFor - 1
8181
aCaseSensitive          db      '“ç¨â뢠âì ॣ¨áâà',0
8181
aCaseSensitive          db      '“ç¨â뢠âì ॣ¨áâà',0
8182
aWholeWords             db      '’®«ìª® æ¥«ë¥ á«®¢ ',0
8182
aWholeWords             db      '’®«ìª® æ¥«ë¥ á«®¢ ',0
8183
aReverseSearch          db      'Ž¡à â­ë© ¯®¨áª',0
8183
aReverseSearch          db      'Ž¡à â­ë© ¯®¨áª',0
8184
aStringNotFound         db      '‘âப  ­¥ ­ ©¤¥­ ',0
8184
aStringNotFound         db      '‘âப  ­¥ ­ ©¤¥­ ',0
8185
aFileSearch             db      '®¨áª ä ©« ',0
8185
aFileSearch             db      '®¨áª ä ©« ',0
8186
aFileMasks              db      'Ž¤­  ¨«¨ ­¥áª®«ìª® ¬ á®ª ä ©«®¢:',0
8186
aFileMasks              db      'Ž¤­  ¨«¨ ­¥áª®«ìª® ¬ á®ª ä ©«®¢:',0
8187
aFileMasksLen = $ - aFileMasks - 1
8187
aFileMasksLen = $ - aFileMasks - 1
8188
aContainingText         db      '‘®¤¥à¦ é¨å ⥪áâ:',0
8188
aContainingText         db      '‘®¤¥à¦ é¨å ⥪áâ:',0
8189
aContainingTextLen = $ - aContainingText - 1
8189
aContainingTextLen = $ - aContainingText - 1
8190
aSearchingIn            db      '®¨áª "" ¢:',0
8190
aSearchingIn            db      '®¨áª "" ¢:',0
8191
aSearchingInLen = $ - aSearchingIn - 1
8191
aSearchingInLen = $ - aSearchingIn - 1
8192
aSearchDone             db      '®¨áª § ª®­ç¥­.  ©¤¥­® ? ä ©«(®¢)',0
8192
aSearchDone             db      '®¨áª § ª®­ç¥­.  ©¤¥­® ? ä ©«(®¢)',0
8193
aSearchDoneLen = $ - aSearchDone - 1
8193
aSearchDoneLen = $ - aSearchDone - 1
8194
aNewSearch              db      '[ ®¢ë© ¯®¨áª ]',0
8194
aNewSearch              db      '[ ®¢ë© ¯®¨áª ]',0
8195
aNewSearchLen = $ - aNewSearch - 1
8195
aNewSearchLen = $ - aNewSearch - 1
8196
aGoto                   db      '[ ¥à¥©â¨ ]',0
8196
aGoto                   db      '[ ¥à¥©â¨ ]',0
8197
aGotoLen = $ - aGoto - 1
8197
aGotoLen = $ - aGoto - 1
8198
aView                   db      '[ ‘¬®âà¥âì ]',0
8198
aView                   db      '[ ‘¬®âà¥âì ]',0
8199
aViewLen = $ - aView - 1
8199
aViewLen = $ - aView - 1
8200
aEditConfigErr1         db      'Žè¨¡ª  ¢ ª®­ä¨£ãà æ¨¨ ¯« £¨­®¢ ¤«ï । ªâ®à .',0
8200
aEditConfigErr1         db      'Žè¨¡ª  ¢ ª®­ä¨£ãà æ¨¨ ¯« £¨­®¢ ¤«ï । ªâ®à .',0
8201
aEditConfigErr2         db      '®¯à®¡ã©â¥ ã¡à âì «¨è­¨¥ ¯« £¨­ë.',0
8201
aEditConfigErr2         db      '®¯à®¡ã©â¥ ã¡à âì «¨è­¨¥ ¯« £¨­ë.',0
8202
aEditNoMemory           db      '” ©« ᫨誮¬ ¢¥«¨ª ¤«ï § £à㧪¨ ¢ । ªâ®à.',0
8202
aEditNoMemory           db      '” ©« ᫨誮¬ ¢¥«¨ª ¤«ï § £à㧪¨ ¢ । ªâ®à.',0
8203
aLine                   db      '  ‘âப '
8203
aLine                   db      '  ‘âப '
8204
aCol                    db      '   Š®« '
8204
aCol                    db      '   Š®« '
8205
aEditorTitle            db      '¥¤ ªâ®à',0
8205
aEditorTitle            db      '¥¤ ªâ®à',0
8206
aFileModified           db      '” ©« ¡ë« ¨§¬¥­ñ­',0
8206
aFileModified           db      '” ©« ¡ë« ¨§¬¥­ñ­',0
8207
aSave                   db      '‘®åà ­¨âì',0
8207
aSave                   db      '‘®åà ­¨âì',0
8208
aDontSave               db      '¥ á®åà ­ïâì',0
8208
aDontSave               db      '¥ á®åà ­ïâì',0
8209
aContinueEdit           db      'à®¤®«¦¨âì । ªâ¨à®¢ ­¨¥',0
8209
aContinueEdit           db      'à®¤®«¦¨âì । ªâ¨à®¢ ­¨¥',0
8210
aCannotSaveToPlugin     db      '‘®åà ­¥­¨¥ ä ©«®¢ ­  ¯ ­¥«ïå ¯« £¨­®¢ ­¥ ¯®¤¤¥à¦¨¢ ¥âáï',0
8210
aCannotSaveToPlugin     db      '‘®åà ­¥­¨¥ ä ©«®¢ ­  ¯ ­¥«ïå ¯« £¨­®¢ ­¥ ¯®¤¤¥à¦¨¢ ¥âáï',0
8211
aCannotSearchOnPlugin   db      '®¨áª ­  ¯ ­¥«ïå ¯« £¨­®¢ ­¥ ¯®¤¤¥à¦¨¢ ¥âáï',0
8211
aCannotSearchOnPlugin   db      '®¨áª ­  ¯ ­¥«ïå ¯« £¨­®¢ ­¥ ¯®¤¤¥à¦¨¢ ¥âáï',0
8212
aCancelled              db      '„¥©á⢨¥ ¡ë«® ¯à¥à¢ ­®',0
8212
aCancelled              db      '„¥©á⢨¥ ¡ë«® ¯à¥à¢ ­®',0
8213
aConfirmCancel          db      '‚ë ¤¥©á⢨⥫쭮 å®â¨â¥ ®â¬¥­¨âì ¤¥©á⢨¥?',0
8213
aConfirmCancel          db      '‚ë ¤¥©á⢨⥫쭮 å®â¨â¥ ®â¬¥­¨âì ¤¥©á⢨¥?',0
8214
else
8214
else
8215
aDeleteCaption          db      'Delete',0
8215
aDeleteCaption          db      'Delete',0
8216
aConfirmDeleteText      db      'Do you wish to delete',0
8216
aConfirmDeleteText      db      'Do you wish to delete',0
8217
aDeleteFolder           db      ' the folder',0
8217
aDeleteFolder           db      ' the folder',0
8218
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
8218
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
8219
aDeleteFile             db      ' the file',0
8219
aDeleteFile             db      ' the file',0
8220
aDelete                 db      ' Delete ',0
8220
aDelete                 db      ' Delete ',0
8221
aDeleteLength = $ - aDelete - 1
8221
aDeleteLength = $ - aDelete - 1
8222
aCancel                 db      ' Cancel ',0
8222
aCancel                 db      ' Cancel ',0
8223
aCancelLength = $ - aCancel - 1
8223
aCancelLength = $ - aCancel - 1
8224
aCancelB                db      '[ Cancel ]',0
8224
aCancelB                db      '[ Cancel ]',0
8225
aCancelBLength = $ - aCancelB - 1
8225
aCancelBLength = $ - aCancelB - 1
8226
aCancelB2 = aCancelB
8226
aCancelB2 = aCancelB
8227
aCancelB2Length = $ - aCancelB2 - 1
8227
aCancelB2Length = $ - aCancelB2 - 1
8228
aCopyCaption            db      'Copy',0
8228
aCopyCaption            db      'Copy',0
8229
aCopy                   db      '[ Copy ]',0
8229
aCopy                   db      '[ Copy ]',0
8230
aCopyLength = $ - aCopy - 1
8230
aCopyLength = $ - aCopy - 1
8231
a_Continue              db      '[ Continue ]',0
8231
a_Continue              db      '[ Continue ]',0
8232
a_ContinueLength = $ - a_Continue - 1
8232
a_ContinueLength = $ - a_Continue - 1
8233
aCopy1                  db      'Copy "',0
8233
aCopy1                  db      'Copy "',0
8234
aCopy2                  db      '" to:',0
8234
aCopy2                  db      '" to:',0
8235
aError                  db      'Error',0
8235
aError                  db      'Error',0
8236
aContinue               db      'Continue',0
8236
aContinue               db      'Continue',0
8237
aRetry                  db      'Retry',0
8237
aRetry                  db      'Retry',0
8238
a_Cancel                db      'Cancel',0
8238
a_Cancel                db      'Cancel',0
8239
a_Delete                db      'Delete',0
8239
a_Delete                db      'Delete',0
8240
aSkip                   db      'Skip',0
8240
aSkip                   db      'Skip',0
8241
aSkipAll                db      'Skip all',0
8241
aSkipAll                db      'Skip all',0
8242
aYes                    db      'Yes',0
8242
aYes                    db      'Yes',0
8243
aNo                     db      'No',0
8243
aNo                     db      'No',0
8244
error0msg               db      'Strange... No error',0
8244
error0msg               db      'Strange... No error',0
8245
error1msg               db      'Strange... Hard disk base and/or partition not defined',0
8245
error1msg               db      'Strange... Hard disk base and/or partition not defined',0
8246
error2msg               db      'The file system does not support this function',0
8246
error2msg               db      'The file system does not support this function',0
8247
error3msg               db      'Unknown file system',0
8247
error3msg               db      'Unknown file system',0
8248
error4msg               db      'Strange... Error 4',0
8248
error4msg               db      'Strange... Error 4',0
8249
error5msg               db      'File not found',0
8249
error5msg               db      'File not found',0
8250
error6msg               db      'End of file',0
8250
error6msg               db      'End of file',0
8251
error7msg               db      'Strange... Pointer lies outside of application memory',0
8251
error7msg               db      'Strange... Pointer lies outside of application memory',0
8252
error8msg               db      'Disk is full',0
8252
error8msg               db      'Disk is full',0
8253
error9msg               db      'File structure is destroyed',0
8253
error9msg               db      'File structure is destroyed',0
8254
error10msg              db      'Access denied',0
8254
error10msg              db      'Access denied',0
8255
error11msg              db      'Device error',0
8255
error11msg              db      'Device error',0
8256
error30msg              db      'Not enough memory',0
8256
error30msg              db      'Not enough memory',0
8257
error31msg              db      'File is not executable',0
8257
error31msg              db      'File is not executable',0
8258
error32msg              db      'Too many processes',0
8258
error32msg              db      'Too many processes',0
8259
aUnknownError           db      'Unknown error code: ',0
8259
aUnknownError           db      'Unknown error code: ',0
8260
aCannotReadFolder       db      'Cannot read folder',0
8260
aCannotReadFolder       db      'Cannot read folder',0
8261
aRunError               db      'Cannot execute program:',0
8261
aRunError               db      'Cannot execute program:',0
8262
aFileNameTooBig         db      'Full file name is too long',0
8262
aFileNameTooBig         db      'Full file name is too long',0
8263
aFolderNameTooBig       db      'Full folder name is too long',0
8263
aFolderNameTooBig       db      'Full folder name is too long',0
8264
aCmdLineTooBig          db      'Command line is too long (OS limit is 256 symbols)',0
8264
aCmdLineTooBig          db      'Command line is too long (OS limit is 256 symbols)',0
8265
aCannotCopyToSelf       db      'File cannot be copied onto itself',0
8265
aCannotCopyToSelf       db      'File cannot be copied onto itself',0
8266
aCannotReadFile         db      'Cannot read file',0
8266
aCannotReadFile         db      'Cannot read file',0
8267
aIncompleteFile         db      'Incomplete file was retrieved. Delete it?',0
8267
aIncompleteFile         db      'Incomplete file was retrieved. Delete it?',0
8268
aKeep                   db      'Keep',0
8268
aKeep                   db      'Keep',0
8269
aCannotWriteFile        db      'Cannot write to the file',0
8269
aCannotWriteFile        db      'Cannot write to the file',0
8270
aCannotDeleteFile       db      'Cannot delete the file',0
8270
aCannotDeleteFile       db      'Cannot delete the file',0
8271
aCannotDeleteFolder     db      'Cannot delete the folder',0
8271
aCannotDeleteFolder     db      'Cannot delete the folder',0
8272
aNotFolder              db      'is not a folder',0
8272
aNotFolder              db      'is not a folder',0
8273
aIgnore                 db      'Ignore',0
8273
aIgnore                 db      'Ignore',0
8274
aMkDirCaption           db      'Make folder',0
8274
aMkDirCaption           db      'Make folder',0
8275
aMkDir                  db      'Create the folder',0
8275
aMkDir                  db      'Create the folder',0
8276
aMkDirLen = $ - aMkDir - 1
8276
aMkDirLen = $ - aMkDir - 1
8277
aCannotMakeFolder       db      'Cannot create folder',0
8277
aCannotMakeFolder       db      'Cannot create folder',0
8278
aName                   db      4,'Name'
8278
aName                   db      4,'Name'
8279
aSize                   db      4,'Size'
8279
aSize                   db      4,'Size'
8280
aDate                   db      4,'Date'
8280
aDate                   db      4,'Date'
8281
aTime                   db      4,'Time'
8281
aTime                   db      4,'Time'
8282
aCannotLoadDLL          db      'Cannot load DLL',0
8282
aCannotLoadDLL          db      'Cannot load DLL',0
8283
aCannotLoadPlugin       db      'Cannot load plugin',0
8283
aCannotLoadPlugin       db      'Cannot load plugin',0
8284
aInvalidDLL             db      'File is not found or invalid',0
8284
aInvalidDLL             db      'File is not found or invalid',0
8285
aMissingExport          db      'Required function is not present',0
8285
aMissingExport          db      'Required function is not present',0
8286
aInitFailed             db      'Initialization failed',0
8286
aInitFailed             db      'Initialization failed',0
8287
aIncompatibleVersion    db      'Incompatible version',0
8287
aIncompatibleVersion    db      'Incompatible version',0
8288
aTables                 db      'Tables',0
8288
aTables                 db      'Tables',0
8289
aSelect                 db      'Select',0
8289
aSelect                 db      'Select',0
8290
aDeselect               db      'Deselect',0
8290
aDeselect               db      'Deselect',0
8291
aCannotOpenFile         db      'Cannot open the file',0
8291
aCannotOpenFile         db      'Cannot open the file',0
8292
aCannotCreateThread     db      'Cannot create a thread',0
8292
aCannotCreateThread     db      'Cannot create a thread',0
8293
aCannotSetFolder        db      'Cannot enter to the folder',0
8293
aCannotSetFolder        db      'Cannot enter to the folder',0
8294
aSearch                 db      'Search',0
8294
aSearch                 db      'Search',0
8295
aSearchB                db      '[ Search ]',0
8295
aSearchB                db      '[ Search ]',0
8296
aSearchBLength = $ - aSearchB - 1
8296
aSearchBLength = $ - aSearchB - 1
8297
aSearchFor              db      'Search for',0
8297
aSearchFor              db      'Search for',0
8298
aSearchForLen = $ - aSearch - 1
8298
aSearchForLen = $ - aSearch - 1
8299
aCaseSensitive          db      'Case sensitive',0
8299
aCaseSensitive          db      'Case sensitive',0
8300
aWholeWords             db      'Whole words',0
8300
aWholeWords             db      'Whole words',0
8301
aReverseSearch          db      'Reverse search',0
8301
aReverseSearch          db      'Reverse search',0
8302
aStringNotFound         db      'Could not find the string',0
8302
aStringNotFound         db      'Could not find the string',0
8303
aFileSearch             db      'Find file',0
8303
aFileSearch             db      'Find file',0
8304
aFileMasks              db      'A file mask or several file masks:',0
8304
aFileMasks              db      'A file mask or several file masks:',0
8305
aFileMasksLen = $ - aFileMasks - 1
8305
aFileMasksLen = $ - aFileMasks - 1
8306
aContainingText         db      'Containing text:',0
8306
aContainingText         db      'Containing text:',0
8307
aContainingTextLen = $ - aContainingText - 1
8307
aContainingTextLen = $ - aContainingText - 1
8308
aSearchingIn            db      'Searching "" in:',0
8308
aSearchingIn            db      'Searching "" in:',0
8309
aSearchingInLen = $ - aSearchingIn - 1
8309
aSearchingInLen = $ - aSearchingIn - 1
8310
aSearchDone             db      'Search done. Found ? file(s)',0
8310
aSearchDone             db      'Search done. Found ? file(s)',0
8311
aSearchDoneLen = $ - aSearchDone - 1
8311
aSearchDoneLen = $ - aSearchDone - 1
8312
aNewSearch              db      '[ New search ]',0
8312
aNewSearch              db      '[ New search ]',0
8313
aNewSearchLen = $ - aNewSearch - 1
8313
aNewSearchLen = $ - aNewSearch - 1
8314
aGoto                   db      '[ Go to ]',0
8314
aGoto                   db      '[ Go to ]',0
8315
aGotoLen = $ - aGoto - 1
8315
aGotoLen = $ - aGoto - 1
8316
aView                   db      '[ View ]',0
8316
aView                   db      '[ View ]',0
8317
aViewLen = $ - aView - 1
8317
aViewLen = $ - aView - 1
8318
aEditConfigErr1         db      'Error in configuration of plugins for the editor.',0
8318
aEditConfigErr1         db      'Error in configuration of plugins for the editor.',0
8319
aEditConfigErr2         db      'Try to remove unnecessary plugins.',0
8319
aEditConfigErr2         db      'Try to remove unnecessary plugins.',0
8320
aEditNoMemory           db      'The file is too big for the editor.',0
8320
aEditNoMemory           db      'The file is too big for the editor.',0
8321
aLine                   db      '    Line'
8321
aLine                   db      '    Line'
8322
aCol                    db      '   Col '
8322
aCol                    db      '   Col '
8323
aEditorTitle            db      'Editor',0
8323
aEditorTitle            db      'Editor',0
8324
aFileModified           db      'File has been modified',0
8324
aFileModified           db      'File has been modified',0
8325
aSave                   db      'Save',0
8325
aSave                   db      'Save',0
8326
aDontSave               db      'Do not save',0
8326
aDontSave               db      'Do not save',0
8327
aContinueEdit           db      'Continue editing',0
8327
aContinueEdit           db      'Continue editing',0
8328
aCannotSaveToPlugin     db      'Saving is not supported for plugin panels',0
8328
aCannotSaveToPlugin     db      'Saving is not supported for plugin panels',0
8329
aCannotSearchOnPlugin   db      'The search on plugin panels is not supported yet',0
8329
aCannotSearchOnPlugin   db      'The search on plugin panels is not supported yet',0
8330
aCancelled              db      'Operation has been interrupted',0
8330
aCancelled              db      'Operation has been interrupted',0
8331
aConfirmCancel          db      'Do you really want to cancel it?',0
8331
aConfirmCancel          db      'Do you really want to cancel it?',0
8332
end if
8332
end if
8333
 
8333
 
8334
aOk                     db      'OK',0
8334
aOk                     db      'OK',0
8335
aNoMemory               db      'No memory!'
8335
aNoMemory               db      'No memory!'
8336
nullstr                 db      0
8336
nullstr                 db      0
8337
aUntitled               db      'untitled',0
8337
aUntitled               db      'untitled',0
8338
aDotDot                 db      '..',0,0
8338
aDotDot                 db      '..',0,0
8339
standard_dll_path:
8339
standard_dll_path:
8340
libini_name             db      '/sys/lib/'
8340
libini_name             db      '/sys/lib/'
8341
standard_dll_path_size = $ - standard_dll_path
8341
standard_dll_path_size = $ - standard_dll_path
8342
                        db      'libini.obj',0
8342
                        db      'libini.obj',0
8343
aStart                  db      'START',0
8343
aStart                  db      'START',0
8344
aLibInit                db      'lib_init',0
8344
aLibInit                db      'lib_init',0
8345
aVersion                db      'version',0
8345
aVersion                db      'version',0
8346
aIniGetInt              db      'ini_get_int',0
8346
aIniGetInt              db      'ini_get_int',0
8347
aIniGetStr              db      'ini_get_str',0
8347
aIniGetStr              db      'ini_get_str',0
8348
aIniSetInt              db      'ini_set_int',0
8348
aIniSetInt              db      'ini_set_int',0
8349
aIniEnumKeys            db      'ini_enum_keys',0
8349
aIniEnumKeys            db      'ini_enum_keys',0
8350
aPluginLoad             db      'plugin_load',0
8350
aPluginLoad             db      'plugin_load',0
8351
aPluginUnload           db      'plugin_unload',0
8351
aPluginUnload           db      'plugin_unload',0
8352
aGetattr                db      'getattr',0
8352
aGetattr                db      'getattr',0
8353
aOpen                   db      'open',0
8353
aOpen                   db      'open',0
8354
aRead                   db      'read',0
8354
aRead                   db      'read',0
8355
aSetpos                 db      'setpos',0
8355
aSetpos                 db      'setpos',0
8356
aClose                  db      'close',0
8356
aClose                  db      'close',0
8357
aOpenFilePlugin         db      'OpenFilePlugin',0
8357
aOpenFilePlugin         db      'OpenFilePlugin',0
8358
aClosePlugin            db      'ClosePlugin',0
8358
aClosePlugin            db      'ClosePlugin',0
8359
aReadFolder             db      'ReadFolder',0
8359
aReadFolder             db      'ReadFolder',0
8360
aSetFolder              db      'SetFolder',0
8360
aSetFolder              db      'SetFolder',0
8361
aGetOpenPluginInfo      db      'GetOpenPluginInfo',0
8361
aGetOpenPluginInfo      db      'GetOpenPluginInfo',0
8362
aGetPanelTitle          db      'GetPanelTitle',0
8362
aGetPanelTitle          db      'GetPanelTitle',0
8363
aGetFiles               db      'GetFiles',0
8363
aGetFiles               db      'GetFiles',0
8364
aEditInfoSize           db      'EditInfoSize',0
8364
aEditInfoSize           db      'EditInfoSize',0
8365
 
8365
 
8366
aConfirmations          db      'Confirmations',0
8366
aConfirmations          db      'Confirmations',0
8367
aConfirmDelete          db      'Delete',0
8367
aConfirmDelete          db      'Delete',0
8368
aConfirmDeleteIncomplete db     'DeleteIncomplete',0
8368
aConfirmDeleteIncomplete db     'DeleteIncomplete',0
8369
 
8369
 
8370
aPanels                 db      'Panels',0
8370
aPanels                 db      'Panels',0
8371
aLeftViewMode           db      'LeftViewMode',0
8371
aLeftViewMode           db      'LeftViewMode',0
8372
aRightViewMode          db      'RightViewMode',0
8372
aRightViewMode          db      'RightViewMode',0
8373
aLeftSortMode           db      'LeftSortMode',0
8373
aLeftSortMode           db      'LeftSortMode',0
8374
aRightSortMode          db      'RightSortMode',0
8374
aRightSortMode          db      'RightSortMode',0
8375
 
8375
 
8376
aEditor                 db      'Editor',0
8376
aEditor                 db      'Editor',0
8377
aEolStyle               db      'EOLStyle',0
8377
aEolStyle               db      'EOLStyle',0
8378
 
8378
 
8379
aAssociations           db      'Associations',0
8379
aAssociations           db      'Associations',0
8380
aPlugins                db      'Plugins',0
8380
aPlugins                db      'Plugins',0
8381
aMenu                   db      'Menu',0
8381
aMenu                   db      'Menu',0
8382
aFolderShortcuts        db      'FolderShortcuts',0
8382
aFolderShortcuts        db      'FolderShortcuts',0
8383
aShortcut               db      'Shortcut'
8383
aShortcut               db      'Shortcut'
8384
.d                      db      '0',0
8384
.d                      db      '0',0
8385
 
8385
 
8386
align 4
8386
align 4
8387
ini_import:
8387
ini_import:
8388
ini.get_int     dd      aIniGetInt
8388
ini.get_int     dd      aIniGetInt
8389
ini.get_str     dd      aIniGetStr
8389
ini.get_str     dd      aIniGetStr
8390
ini.enum_keys   dd      aIniEnumKeys
8390
ini.enum_keys   dd      aIniEnumKeys
8391
ini.set_int     dd      aIniSetInt
8391
ini.set_int     dd      aIniSetInt
8392
                dd      0
8392
                dd      0
8393
 
8393
 
8394
plugin_exported:
8394
plugin_exported:
8395
        dd      aPluginUnload
8395
        dd      aPluginUnload
8396
        dd      aGetattr
8396
        dd      aGetattr
8397
        dd      aOpen
8397
        dd      aOpen
8398
        dd      aRead
8398
        dd      aRead
8399
        dd      aSetpos
8399
        dd      aSetpos
8400
        dd      aClose
8400
        dd      aClose
8401
        dd      aOpenFilePlugin
8401
        dd      aOpenFilePlugin
8402
        dd      aClosePlugin
8402
        dd      aClosePlugin
8403
        dd      aReadFolder
8403
        dd      aReadFolder
8404
        dd      aSetFolder
8404
        dd      aSetFolder
8405
        dd      aGetOpenPluginInfo
8405
        dd      aGetOpenPluginInfo
8406
        dd      aGetPanelTitle
8406
        dd      aGetPanelTitle
8407
        dd      aGetFiles
8407
        dd      aGetFiles
8408
        dd      aEditInfoSize
8408
        dd      aEditInfoSize
8409
        dd      0
8409
        dd      0
8410
plugin_exported_default:
8410
plugin_exported_default:
8411
        dd      plugin_unload_default
8411
        dd      plugin_unload_default
8412
        dd      getattr_default
8412
        dd      getattr_default
8413
        dd      open_default
8413
        dd      open_default
8414
        dd      read
8414
        dd      read
8415
        dd      setpos_default
8415
        dd      setpos_default
8416
        dd      close
8416
        dd      close
8417
        dd      OpenFilePlugin_default
8417
        dd      OpenFilePlugin_default
8418
        dd      ClosePlugin_default
8418
        dd      ClosePlugin_default
8419
        dd      ReadFolder_default
8419
        dd      ReadFolder_default
8420
        dd      SetFolder_default
8420
        dd      SetFolder_default
8421
        dd      GetOpenPluginInfo_default
8421
        dd      GetOpenPluginInfo_default
8422
        dd      GetPanelTitle_default
8422
        dd      GetPanelTitle_default
8423
        dd      GetFiles_default
8423
        dd      GetFiles_default
8424
        dd      0       ; default value for EditInfoSize
8424
        dd      0       ; default value for EditInfoSize
8425
 
8425
 
8426
kfar_info:
8426
kfar_info:
8427
        dd      .size
8427
        dd      .size
8428
        dd      version_dword
8428
        dd      version_dword
8429
        dd      open
8429
        dd      open
8430
        dd      open2
8430
        dd      open2
8431
        dd      read
8431
        dd      read
8432
        dd      -1      ; write: to be implemented
8432
        dd      -1      ; write: to be implemented
8433
        dd      seek
8433
        dd      seek
8434
        dd      tell
8434
        dd      tell
8435
        dd      -1      ; flush: to be implemented
8435
        dd      -1      ; flush: to be implemented
8436
        dd      filesize
8436
        dd      filesize
8437
        dd      close
8437
        dd      close
8438
        dd      xpgalloc
8438
        dd      xpgalloc
8439
        dd      xpgrealloc
8439
        dd      xpgrealloc
8440
        dd      pgfree
8440
        dd      pgfree
8441
        dd      getfreemem
8441
        dd      getfreemem
8442
        dd      libini_alloc
8442
        dd      libini_alloc
8443
        dd      libini_realloc
8443
        dd      libini_realloc
8444
        dd      libini_free
8444
        dd      libini_free
8445
        dd      menu
8445
        dd      menu
8446
        dd      menu_centered_in
8446
        dd      menu_centered_in
8447
        dd      DialogBox
8447
        dd      DialogBox
8448
        dd      SayErr
8448
        dd      SayErr
8449
        dd      Message
8449
        dd      Message
8450
        dd      cur_width
8450
        dd      cur_width
8451
.size = $ - kfar_info
8451
.size = $ - kfar_info
8452
 
8452
 
8453
plugins         dd      0
8453
plugins         dd      0
8454
num_plugins     dd      0
8454
num_plugins     dd      0
8455
alloc_plugins   dd      0
8455
alloc_plugins   dd      0
8456
 
8456
 
8457
EditPlugInfo    dd      0
8457
EditPlugInfo    dd      0
8458
EditEOLStyle    db      edit.eol_unix
8458
EditEOLStyle    db      edit.eol_unix
8459
 
8459
 
8460
virtual at 0
8460
virtual at 0
8461
PluginInfo:
8461
PluginInfo:
8462
.unload         dd      ?
8462
.unload         dd      ?
8463
.getattr        dd      ?
8463
.getattr        dd      ?
8464
.open           dd      ?
8464
.open           dd      ?
8465
.read           dd      ?
8465
.read           dd      ?
8466
.setpos         dd      ?
8466
.setpos         dd      ?
8467
.close          dd      ?
8467
.close          dd      ?
8468
.OpenFilePlugin dd      ?
8468
.OpenFilePlugin dd      ?
8469
.ClosePlugin    dd      ?
8469
.ClosePlugin    dd      ?
8470
.ReadFolder     dd      ?
8470
.ReadFolder     dd      ?
8471
.SetFolder      dd      ?
8471
.SetFolder      dd      ?
8472
.GetOpenPluginInfo dd   ?
8472
.GetOpenPluginInfo dd   ?
8473
.GetPanelTitle  dd      ?
8473
.GetPanelTitle  dd      ?
8474
.GetFiles       dd      ?
8474
.GetFiles       dd      ?
8475
.EditInfoSize   dd      ?
8475
.EditInfoSize   dd      ?
8476
.EditInfoOffs   dd      ?
8476
.EditInfoOffs   dd      ?
8477
.size = $
8477
.size = $
8478
end virtual
8478
end virtual
8479
 
8479
 
8480
virtual at 0
8480
virtual at 0
8481
PanelMode:
8481
PanelMode:
8482
; up to 16 columns on one panel
8482
; up to 16 columns on one panel
8483
.NumColumns     dd      ?
8483
.NumColumns     dd      ?
8484
; available column types:
8484
; available column types:
8485
COLUMN_TYPE_NONE = 0
8485
COLUMN_TYPE_NONE = 0
8486
COLUMN_TYPE_NAME = 1
8486
COLUMN_TYPE_NAME = 1
8487
        COLUMN_NAME_MARK = 10h          ; (reserved)
8487
        COLUMN_NAME_MARK = 10h          ; (reserved)
8488
        COLUMN_NAME_NOPATH = 20h        ; (reserved)
8488
        COLUMN_NAME_NOPATH = 20h        ; (reserved)
8489
        COLUMN_NAME_RIGHTALIGN = 40h    ; (reserved)
8489
        COLUMN_NAME_RIGHTALIGN = 40h    ; (reserved)
8490
COLUMN_TYPE_SIZE = 2
8490
COLUMN_TYPE_SIZE = 2
8491
        COLUMN_SIZE_COMMA = 10h         ; (reserved)
8491
        COLUMN_SIZE_COMMA = 10h         ; (reserved)
8492
COLUMN_TYPE_PACKED_SIZE = 3             ; (reserved)
8492
COLUMN_TYPE_PACKED_SIZE = 3             ; (reserved)
8493
COLUMN_TYPE_DATE = 4
8493
COLUMN_TYPE_DATE = 4
8494
COLUMN_TYPE_TIME = 5
8494
COLUMN_TYPE_TIME = 5
8495
COLUMN_TYPE_DATETIME = 6                ; (reserved)
8495
COLUMN_TYPE_DATETIME = 6                ; (reserved)
8496
COLUMN_TYPE_DATETIME_CREATION = 7       ; (reserved)
8496
COLUMN_TYPE_DATETIME_CREATION = 7       ; (reserved)
8497
COLUMN_TYPE_DATETIME_ACCESS = 8         ; (reserved)
8497
COLUMN_TYPE_DATETIME_ACCESS = 8         ; (reserved)
8498
COLUMN_TYPE_ATTRIBUTES = 9              ; (reserved)
8498
COLUMN_TYPE_ATTRIBUTES = 9              ; (reserved)
8499
COLUMN_TYPE_DESCRIPTION = 10            ; (reserved)
8499
COLUMN_TYPE_DESCRIPTION = 10            ; (reserved)
8500
COLUMN_TYPE_OWNER = 11                  ; (reserved)
8500
COLUMN_TYPE_OWNER = 11                  ; (reserved)
8501
COLUMN_TYPE_NUMLINKS = 12               ; (reserved)
8501
COLUMN_TYPE_NUMLINKS = 12               ; (reserved)
8502
COLUMN_TYPE_CUSTOM = 13                 ; (reserved)
8502
COLUMN_TYPE_CUSTOM = 13                 ; (reserved)
8503
.ColumnTypes    rb      16
8503
.ColumnTypes    rb      16
8504
 
8504
 
8505
.ColumnWidths   rb      16
8505
.ColumnWidths   rb      16
8506
.bFullScreen    db      ?               ; (reserved)
8506
.bFullScreen    db      ?               ; (reserved)
8507
.bAlignExtensions db    ?
8507
.bAlignExtensions db    ?
8508
                rb      2
8508
                rb      2
8509
.size = $
8509
.size = $
8510
end virtual
8510
end virtual
8511
 
8511
 
8512
align 4
8512
align 4
8513
column_headers:
8513
column_headers:
8514
        dd      nullstr
8514
        dd      nullstr
8515
        dd      aName
8515
        dd      aName
8516
        dd      aSize
8516
        dd      aSize
8517
        dd      nullstr
8517
        dd      nullstr
8518
        dd      aDate
8518
        dd      aDate
8519
        dd      aTime
8519
        dd      aTime
8520
draw_column_proc:
8520
draw_column_proc:
8521
        dd      draw_empty_column
8521
        dd      draw_empty_column
8522
        dd      draw_name_column
8522
        dd      draw_name_column
8523
        dd      draw_size_column
8523
        dd      draw_size_column
8524
        dd      -1
8524
        dd      -1
8525
        dd      draw_date_column
8525
        dd      draw_date_column
8526
        dd      draw_time_column
8526
        dd      draw_time_column
8527
colmodes:
8527
colmodes:
8528
; ०¨¬ 0 : NM,SC,D
8528
; ०¨¬ 0 : NM,SC,D
8529
        dd      3
8529
        dd      3
8530
        db      COLUMN_TYPE_NAME+COLUMN_NAME_MARK, COLUMN_TYPE_SIZE+COLUMN_SIZE_COMMA
8530
        db      COLUMN_TYPE_NAME+COLUMN_NAME_MARK, COLUMN_TYPE_SIZE+COLUMN_SIZE_COMMA
8531
                db      COLUMN_TYPE_DATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
8531
                db      COLUMN_TYPE_DATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
8532
        db      0, 10, 8
8532
        db      0, 10, 8
8533
                times 13 db 0
8533
                times 13 db 0
8534
        db      0, 1
8534
        db      0, 1
8535
                times 2 db 0
8535
                times 2 db 0
8536
; ०¨¬ 1 : N,N,N
8536
; ०¨¬ 1 : N,N,N
8537
        dd      3
8537
        dd      3
8538
        db      COLUMN_TYPE_NAME, COLUMN_TYPE_NAME, COLUMN_TYPE_NAME
8538
        db      COLUMN_TYPE_NAME, COLUMN_TYPE_NAME, COLUMN_TYPE_NAME
8539
                times 13 db 0
8539
                times 13 db 0
8540
        times 16 db 0
8540
        times 16 db 0
8541
        db      0, 1
8541
        db      0, 1
8542
                times 2 db 0
8542
                times 2 db 0
8543
; ०¨¬ 2 : N,N
8543
; ०¨¬ 2 : N,N
8544
        dd      2
8544
        dd      2
8545
        db      COLUMN_TYPE_NAME, COLUMN_TYPE_NAME
8545
        db      COLUMN_TYPE_NAME, COLUMN_TYPE_NAME
8546
                times 14 db 0
8546
                times 14 db 0
8547
        times 16 db 0
8547
        times 16 db 0
8548
        db      0, 0
8548
        db      0, 0
8549
                times 2 db 0
8549
                times 2 db 0
8550
; ०¨¬ 3 : N,S,D,T
8550
; ०¨¬ 3 : N,S,D,T
8551
        dd      4
8551
        dd      4
8552
        db      COLUMN_TYPE_NAME, COLUMN_TYPE_SIZE, COLUMN_TYPE_DATE, COLUMN_TYPE_TIME
8552
        db      COLUMN_TYPE_NAME, COLUMN_TYPE_SIZE, COLUMN_TYPE_DATE, COLUMN_TYPE_TIME
8553
                times 12 db 0
8553
                times 12 db 0
8554
        db      0, 6, 8, 5
8554
        db      0, 6, 8, 5
8555
                times 12 db 0
8555
                times 12 db 0
8556
        db      0, 1
8556
        db      0, 1
8557
                times 2 db 0
8557
                times 2 db 0
8558
; ०¨¬ 4 : N,S
8558
; ०¨¬ 4 : N,S
8559
        dd      2
8559
        dd      2
8560
        db      COLUMN_TYPE_NAME, COLUMN_TYPE_SIZE
8560
        db      COLUMN_TYPE_NAME, COLUMN_TYPE_SIZE
8561
                times 14 db 0
8561
                times 14 db 0
8562
        db      0, 6
8562
        db      0, 6
8563
                times 14 db 0
8563
                times 14 db 0
8564
        db      0, 0
8564
        db      0, 0
8565
                times 2 db 0
8565
                times 2 db 0
8566
; ०¨¬ 5 : N,S,P,DM,DC,DA,A
8566
; ०¨¬ 5 : N,S,P,DM,DC,DA,A
8567
; ०¨¬ 6 : N,Z
8567
; ०¨¬ 6 : N,Z
8568
; ०¨¬ 7 : N,S,Z
8568
; ०¨¬ 7 : N,S,Z
8569
; ०¨¬ 8 : N,S,O
8569
; ०¨¬ 8 : N,S,O
8570
; ०¨¬ 9 : N,S,LN
8570
; ०¨¬ 9 : N,S,LN
8571
 
8571
 
8572
execinfo:
8572
execinfo:
8573
        dd      7
8573
        dd      7
8574
        dd      0
8574
        dd      0
8575
execparams dd   0
8575
execparams dd   0
8576
        dd      0
8576
        dd      0
8577
        dd      0
8577
        dd      0
8578
        db      0
8578
        db      0
8579
execptr dd      ?
8579
execptr dd      ?
8580
 
8580
 
8581
IncludeIGlobals
8581
IncludeIGlobals
8582
 
8582
 
8583
i_end:
8583
i_end:
8584
 
8584
 
8585
IncludeUGlobals
8585
IncludeUGlobals
8586
 
8586
 
8587
execdata rb     1024
8587
execdata rb     1024
8588
execdataend:
8588
execdataend:
8589
        align   4
8589
        align   4
8590
attrinfo.attr   rb      40
8590
attrinfo.attr   rb      40
8591
 
8591
 
8592
panel1_data:
8592
panel1_data:
8593
panel1_left     dd      ?
8593
panel1_left     dd      ?
8594
panel1_top      dd      ?
8594
panel1_top      dd      ?
8595
panel1_width    dd      ?
8595
panel1_width    dd      ?
8596
panel1_height   dd      ?
8596
panel1_height   dd      ?
8597
panel1_index    dd      ?
8597
panel1_index    dd      ?
8598
panel1_start    dd      ?
8598
panel1_start    dd      ?
8599
panel1_colsz    dd      ?
8599
panel1_colsz    dd      ?
8600
panel1_colst    dd      ?
8600
panel1_colst    dd      ?
8601
panel1_sortmode db      ?
8601
panel1_sortmode db      ?
8602
                rb      3
8602
                rb      3
8603
panel1_nfa      dd      ?
8603
panel1_nfa      dd      ?
8604
panel1_numfiles dd      ?
8604
panel1_numfiles dd      ?
8605
panel1_files    dd      ?
8605
panel1_files    dd      ?
8606
panel1_hPlugin  dd      ?
8606
panel1_hPlugin  dd      ?
8607
panel1_hFile    dd      ?
8607
panel1_hFile    dd      ?
8608
panel1_parents          dd      ?
8608
panel1_parents          dd      ?
8609
panel1_parents_sz       dd      ?
8609
panel1_parents_sz       dd      ?
8610
panel1_parents_alloc    dd      ?
8610
panel1_parents_alloc    dd      ?
8611
panel1_colmode          dd      ?
8611
panel1_colmode          dd      ?
8612
panel1_colwidths        rd      16+1
8612
panel1_colwidths        rd      16+1
8613
panel1_total_num        dd      ?
8613
panel1_total_num        dd      ?
8614
panel1_total_size       dq      ?
8614
panel1_total_size       dq      ?
8615
panel1_selected_num     dd      ?
8615
panel1_selected_num     dd      ?
8616
panel1_selected_size    dq      ?
8616
panel1_selected_size    dq      ?
8617
panel1_plugin_info:
8617
panel1_plugin_info:
8618
panel1_plugin_flags     dd      ?
8618
panel1_plugin_flags     dd      ?
8619
panel1_dir      rb      1024
8619
panel1_dir      rb      1024
8620
 
8620
 
8621
panel2_data:
8621
panel2_data:
8622
panel2_left     dd      ?
8622
panel2_left     dd      ?
8623
panel2_top      dd      ?
8623
panel2_top      dd      ?
8624
panel2_width    dd      ?
8624
panel2_width    dd      ?
8625
panel2_height   dd      ?
8625
panel2_height   dd      ?
8626
panel2_index    dd      ?
8626
panel2_index    dd      ?
8627
panel2_start    dd      ?
8627
panel2_start    dd      ?
8628
panel2_colsz    dd      ?
8628
panel2_colsz    dd      ?
8629
panel2_colst    dd      ?
8629
panel2_colst    dd      ?
8630
panel2_sortmode db      ?
8630
panel2_sortmode db      ?
8631
                rb      3
8631
                rb      3
8632
panel2_nfa      dd      ?
8632
panel2_nfa      dd      ?
8633
panel2_numfiles dd      ?
8633
panel2_numfiles dd      ?
8634
panel2_files    dd      ?
8634
panel2_files    dd      ?
8635
panel2_hPlugin  dd      ?
8635
panel2_hPlugin  dd      ?
8636
panel2_hFile    dd      ?
8636
panel2_hFile    dd      ?
8637
panel2_parents          dd      ?
8637
panel2_parents          dd      ?
8638
panel2_parents_sz       dd      ?
8638
panel2_parents_sz       dd      ?
8639
panel2_parents_alloc    dd      ?
8639
panel2_parents_alloc    dd      ?
8640
panel2_colmode          dd      ?
8640
panel2_colmode          dd      ?
8641
panel2_colwidths        rd      16+1
8641
panel2_colwidths        rd      16+1
8642
panel2_total_num        dd      ?
8642
panel2_total_num        dd      ?
8643
panel2_total_size       dq      ?
8643
panel2_total_size       dq      ?
8644
panel2_selected_num     dd      ?
8644
panel2_selected_num     dd      ?
8645
panel2_selected_size    dq      ?
8645
panel2_selected_size    dq      ?
8646
panel2_plugin_info:
8646
panel2_plugin_info:
8647
panel2_plugin_flags     dd      ?
8647
panel2_plugin_flags     dd      ?
8648
panel2_dir      rb      1024
8648
panel2_dir      rb      1024
8649
 
8649
 
8650
;console_data    rb      max_width*max_height*2
8650
;console_data    rb      max_width*max_height*2
8651
 
8651
 
8652
nomem_dlgsavearea       rb      8 + (12+4)*(3+3)*2
8652
nomem_dlgsavearea       rb      8 + (12+4)*(3+3)*2
8653
 
8653
 
8654
quicksearch_savearea    rb      22*3*2
8654
quicksearch_savearea    rb      22*3*2
8655
quicksearch_maxlen = 64
8655
quicksearch_maxlen = 64
8656
quick_search_buf        rb      12 + quicksearch_maxlen
8656
quick_search_buf        rb      12 + quicksearch_maxlen
8657
 
8657
 
8658
cur_header      rb      max_width
8658
cur_header      rb      max_width
8659
tmp             dd      ?
8659
tmp             dd      ?
8660
 
8660
 
8661
skinh           dd      ?
8661
skinh           dd      ?
8662
std_colors      rd      10
8662
std_colors      rd      10
8663
 
8663
 
8664
min_y           dd      ?
8664
min_y           dd      ?
8665
max_y           dd      ?
8665
max_y           dd      ?
8666
min_x           dd      ?
8666
min_x           dd      ?
8667
max_x           dd      ?
8667
max_x           dd      ?
8668
used_width      dd      ?
8668
used_width      dd      ?
8669
used_height     dd      ?
8669
used_height     dd      ?
8670
 
8670
 
8671
wnd_width       dd      ?
8671
wnd_width       dd      ?
8672
wnd_height      dd      ?
8672
wnd_height      dd      ?
8673
 
8673
 
8674
column_left     dd      ?
8674
column_left     dd      ?
8675
column_top      dd      ?
8675
column_top      dd      ?
8676
column_width    dd      ?
8676
column_width    dd      ?
8677
column_height   dd      ?
8677
column_height   dd      ?
8678
column_index    dd      ?
8678
column_index    dd      ?
8679
last_column_index dd    ?
8679
last_column_index dd    ?
8680
 
8680
 
8681
scrpos          dq      ?
8681
scrpos          dq      ?
8682
viewer_right_side dq    ?
8682
viewer_right_side dq    ?
8683
 
8683
 
8684
EditDataSize    dd      ?
8684
EditDataSize    dd      ?
8685
EditBlockStart  dd      ?
8685
EditBlockStart  dd      ?
8686
EditBlockSize   dd      ?
8686
EditBlockSize   dd      ?
8687
 
8687
 
8688
saved_file_name:
8688
saved_file_name:
8689
procinfo        rb      1024
8689
procinfo        rb      1024
8690
lower_file_name = procinfo + 512
8690
lower_file_name = procinfo + 512
8691
 
8691
 
8692
app_path        rb      1100
8692
app_path        rb      1100
8693
 
8693
 
8694
error_msg       rb      128
8694
error_msg       rb      128
8695
 
8695
 
8696
prev_dir        rb      1024
8696
prev_dir        rb      1024
8697
 
8697
 
8698
driveinfo       rb      32+304
8698
driveinfo       rb      32+304
8699
tmpname         rb      32
8699
tmpname         rb      32
8700
 
8700
 
8701
screens         dd      ?
8701
screens         dd      ?
8702
num_screens     dd      ?
8702
num_screens     dd      ?
8703
active_screen_vtable dd ?
8703
active_screen_vtable dd ?
8704
active_screen_data dd   ?
8704
active_screen_data dd   ?
8705
active_screen_keybar dd ?
8705
active_screen_keybar dd ?
8706
 
8706
 
8707
default_attr    dd      ?
8707
default_attr    dd      ?
8708
left_dotdot_entry       rb      40+4    ; 40 bytes for attributes + '..'
8708
left_dotdot_entry       rb      40+4    ; 40 bytes for attributes + '..'
8709
right_dotdot_entry      rb      40+4
8709
right_dotdot_entry      rb      40+4
8710
 
8710
 
8711
aConfirmDeleteTextBuf   rb      aConfirmDeleteTextMax + 1
8711
aConfirmDeleteTextBuf   rb      aConfirmDeleteTextMax + 1
8712
CopySourceTextBuf       rb      512
8712
CopySourceTextBuf       rb      512
8713
CopyDestEditBuf         rb      12+512+1
8713
CopyDestEditBuf         rb      12+512+1
8714
.length = $ - CopyDestEditBuf - 13
8714
.length = $ - CopyDestEditBuf - 13
8715
 
8715
 
8716
SearchStringEditBuf     rb      12
8716
SearchStringEditBuf     rb      12
8717
SearchString            rb      253+1
8717
SearchString            rb      253+1
8718
SearchStringEditBuf.length = $ - SearchString - 1
8718
SearchStringEditBuf.length = $ - SearchString - 1
8719
                        db      ?       ; used for output (string -> "string")
8719
                        db      ?       ; used for output (string -> "string")
8720
 
8720
 
8721
enter_string_buf        rb      12+512+1
8721
enter_string_buf        rb      12+512+1
8722
 
8722
 
8723
bMemForImageValidData   db      ?
8723
bMemForImageValidData   db      ?
8724
 
8724
 
8725
align 4
8725
align 4
8726
identical_table rb      256
8726
identical_table rb      256
8727
tolower_table   rb      256
8727
tolower_table   rb      256
8728
isspace_table   rb      256
8728
isspace_table   rb      256
8729
composite_table rb      256
8729
composite_table rb      256
8730
layout          rb      128
8730
layout          rb      128
8731
 
8731
 
8732
copy_buffer_size = 65536
8732
copy_buffer_size = 65536
8733
copy_buffer     rb      copy_buffer_size
8733
copy_buffer     rb      copy_buffer_size
8734
 
8734
 
8735
filedata_buffer_size = 1024
8735
filedata_buffer_size = 1024
8736
filedata_buffer rb      filedata_buffer_size
8736
filedata_buffer rb      filedata_buffer_size
8737
 
8737
 
8738
source_hModule  dd      ?
8738
source_hModule  dd      ?
8739
source_hPlugin  dd      ?
8739
source_hPlugin  dd      ?
8740
source_hFile    dd      ?
8740
source_hFile    dd      ?
8741
; data for directory delete
8741
; data for directory delete
8742
; If directory nested level is >1024, then its full name is too big,
8742
; If directory nested level is >1024, then its full name is too big,
8743
; so we see the overflow when creating full name (we check for this!)
8743
; so we see the overflow when creating full name (we check for this!)
8744
del_dir_stack   rd      1024
8744
del_dir_stack   rd      1024
8745
del_dir_stack_ptr dd    ?
8745
del_dir_stack_ptr dd    ?
8746
del_dir_query_size = 32
8746
del_dir_query_size = 32
8747
del_dir_query_area rb   32+304*del_dir_query_size
8747
del_dir_query_area rb   32+304*del_dir_query_size
8748
 
8748
 
8749
label copy_dir_stack dword at del_dir_stack
8749
label copy_dir_stack dword at del_dir_stack
8750
label copy_dir_stack_ptr dword at del_dir_stack_ptr
8750
label copy_dir_stack_ptr dword at del_dir_stack_ptr
8751
copy_dir_query_size = del_dir_query_size
8751
copy_dir_query_size = del_dir_query_size
8752
copy_dir_query_area = del_dir_query_area
8752
copy_dir_query_area = del_dir_query_area
8753
del_bSkipAll    db      ?       ; for directory errors
8753
del_bSkipAll    db      ?       ; for directory errors
8754
label copy_bSkipAll byte at del_bSkipAll
8754
label copy_bSkipAll byte at del_bSkipAll
8755
copy_bSkipAll2  db      ?       ; for file read/write errors
8755
copy_bSkipAll2  db      ?       ; for file read/write errors
8756
copy_bSkipAll3  db      ?       ; for SetFolder errors
8756
copy_bSkipAll3  db      ?       ; for SetFolder errors
8757
 
8757
 
8758
bEndSlash       db      ?
8758
bEndSlash       db      ?
8759
bDestIsFolder   db      ?
8759
bDestIsFolder   db      ?
8760
bNeedRestoreName db     ?
8760
bNeedRestoreName db     ?
8761
 
8761
 
8762
; stack
8762
; stack
8763
        align   4
8763
        align   4
8764
        rb      32768
8764
        rb      32768
8765
stacktop:
8765
stacktop:
8766
 
8766
 
8767
mem:
8767
mem: