Subversion Repositories Kolibri OS

Rev

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

Rev 314 Rev 321
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, 0
8
        dd      0, 0
9
 
9
 
10
include 'lang.inc'
10
include 'lang.inc'
11
include 'font.inc'
11
include 'font.inc'
12
include 'sort.inc'
12
include 'sort.inc'
13
include 'kglobals.inc'
13
include 'kglobals.inc'
14
include 'memalloc.inc'
14
include 'memalloc.inc'
15
include 'dialogs.inc'
15
include 'dialogs.inc'
16
include 'viewer.inc'
16
include 'viewer.inc'
17
include 'tools.inc'
17
include 'tools.inc'
18
 
18
 
19
start:
19
start:
20
        mov     eax, mem
20
        mov     eax, mem
21
        call    mf_init
21
        call    mf_init
22
        call    init_console
22
        call    init_console
23
        call    draw_window
23
        call    draw_window
24
        push    66
24
        push    66
25
        pop     eax
25
        pop     eax
26
        push    1
26
        push    1
27
        pop     ebx
27
        pop     ebx
28
        mov     ecx, ebx
28
        mov     ecx, ebx
29
        int     40h     ; set keyboard mode to scancodes
29
        int     40h     ; set keyboard mode to scancodes
30
        mov     esi, def_left_dir
30
        mov     esi, def_left_dir
31
        mov     edi, panel1_dir
31
        mov     edi, panel1_dir
32
@@:
32
@@:
33
        lodsb
33
        lodsb
34
        stosb
34
        stosb
35
        test    al, al
35
        test    al, al
36
        jnz     @b
36
        jnz     @b
37
@@:
-
 
38
        mov     esi, def_right_dir
37
        mov     esi, def_right_dir
39
        mov     edi, panel2_dir
38
        mov     edi, panel2_dir
40
@@:
39
@@:
41
        lodsb
40
        lodsb
42
        stosb
41
        stosb
43
        test    al, al
42
        test    al, al
44
        jnz     @b
43
        jnz     @b
45
        mov     eax, 200
44
        mov     eax, 200
46
        mov     [panel1_nfa], eax
45
        mov     [panel1_nfa], eax
47
        mov     [panel2_nfa], eax
46
        mov     [panel2_nfa], eax
48
        mov     eax, 200*4 + 32 + 200*304
47
        mov     eax, 200*4 + 32 + 200*304
49
        push    eax
48
        push    eax
50
        call    mf_alloc
49
        call    mf_alloc
51
        mov     [panel1_files], eax
50
        mov     [panel1_files], eax
52
        pop     eax
51
        pop     eax
53
        call    mf_alloc
52
        call    mf_alloc
54
        mov     [panel2_files], eax
53
        mov     [panel2_files], eax
55
        test    eax, eax
54
        test    eax, eax
56
        jz      exit
55
        jz      exit
57
        cmp     [panel1_files], eax
56
        cmp     [panel1_files], eax
58
        jz      exit
57
        jz      exit
59
        mov     [panel1_sortmode], 0    ; sort by name
58
        mov     [panel1_sortmode], 0    ; sort by name
60
        mov     [panel2_sortmode], 0
59
        mov     [panel2_sortmode], 0
61
        mov     [num_screens], 1
60
        mov     [num_screens], 1
62
        mov     eax, 8
61
        mov     eax, 8
63
        call    mf_alloc
62
        call    mf_alloc
64
        mov     [screens], eax
63
        mov     [screens], eax
65
        test    eax, eax
64
        test    eax, eax
66
        jz      exit
65
        jz      exit
67
        mov     ecx, panels_vtable
66
        mov     ecx, panels_vtable
68
        mov     [eax], ecx
67
        mov     [eax], ecx
69
        mov     [active_screen_vtable], ecx
68
        mov     [active_screen_vtable], ecx
70
        call    draw_keybar
69
        call    draw_keybar
71
        call    draw_cmdbar
70
        call    draw_cmdbar
72
        mov     [prev_dir], 0
71
        mov     [prev_dir], 0
73
        mov     ebp, panel1_data
72
        mov     ebp, panel1_data
74
        call    read_folder
73
        call    read_folder
75
        call    draw_panel
74
        call    draw_panel
76
        mov     [bSilentFolderMode], 1
75
        mov     [bSilentFolderMode], 1
77
        mov     ebp, panel2_data
76
        mov     ebp, panel2_data
78
        call    read_folder
77
        call    read_folder
79
        call    draw_panel
78
        call    draw_panel
80
event:
79
event:
81
        push    10
80
        push    10
82
        pop     eax
81
        pop     eax
83
        int     40h
82
        int     40h
84
        dec     eax
83
        dec     eax
85
        jz      redraw
84
        jz      redraw
86
        dec     eax
85
        dec     eax
87
        jz      key
86
        jz      key
88
; button - we have only one button, close
87
; button - we have only one button, close
89
exit:
88
exit:
90
        or      eax, -1
89
        or      eax, -1
91
        int     40h
90
        int     40h
92
redraw:
91
redraw:
93
; query kbd state from OS
92
; query kbd state from OS
94
        mov     al, 66
93
        mov     al, 66
95
        push    3
94
        push    3
96
        pop     ebx
95
        pop     ebx
97
        int     0x40
96
        int     0x40
98
        and     eax, 0x3F
97
        and     eax, 0x3F
99
        cmp     al, [ctrlstate]
98
        cmp     al, [ctrlstate]
100
        mov     [ctrlstate], al
99
        mov     [ctrlstate], al
101
        jz      @f
100
        jz      @f
102
        call    draw_keybar
101
        call    draw_keybar
103
@@:
102
@@:
104
        mov     al, 9
103
        mov     al, 9
105
        mov     ebx, procinfo
104
        mov     ebx, procinfo
106
        or      ecx, -1
105
        or      ecx, -1
107
        int     40h
106
        int     40h
108
; test if rolled up
107
; test if rolled up
109
; height of rolled up window is [skinh]+3
108
; height of rolled up window is [skinh]+3
110
        mov     eax, [ebx+46]
109
        mov     eax, [ebx+46]
111
        sub     eax, [skinh]
110
        sub     eax, [skinh]
112
        cmp     eax, 5
111
        cmp     eax, 5
113
        ja      @f
112
        ja      @f
114
        mov     al, 12
113
        mov     al, 12
115
        push    1
114
        push    1
116
        pop     ebx
115
        pop     ebx
117
        int     0x40
116
        int     0x40
118
        xor     eax, eax
117
        xor     eax, eax
119
; ebx, ecx, edi are ignored by function 0 after first redraw
118
; ebx, ecx, edi are ignored by function 0 after first redraw
120
        mov     edx, 0x53000000
119
        mov     edx, 0x53000000
121
        int     0x40
120
        int     0x40
122
        mov     al, 12
121
        mov     al, 12
123
        inc     ebx
122
        inc     ebx
124
        int     0x40
123
        int     0x40
125
        jmp     event
124
        jmp     event
126
@@:
125
@@:
127
        xor     ecx, ecx
126
        xor     ecx, ecx
128
        mov     eax, [ebx+42]
127
        mov     eax, [ebx+42]
129
        mov     [wnd_width], eax
128
        mov     [wnd_width], eax
130
        sub     eax, 5*2-1
129
        sub     eax, 5*2-1
131
        jae     @f
130
        jae     @f
132
        xor     eax, eax
131
        xor     eax, eax
133
@@:
132
@@:
134
        cdq
133
        cdq
135
        mov     esi, font_width
134
        mov     esi, font_width
136
        div     esi
135
        div     esi
137
        cmp     eax, 54
136
        cmp     eax, 54
138
        jae     @f
137
        jae     @f
139
        mov     al, 54
138
        mov     al, 54
140
        mov     ch, 1
139
        mov     ch, 1
141
@@:
140
@@:
142
        cmp     eax, 255
141
        cmp     eax, 255
143
        jbe     @f
142
        jbe     @f
144
        mov     eax, 255
143
        mov     eax, 255
145
        mov     ch, 1
144
        mov     ch, 1
146
@@:
145
@@:
147
        cmp     eax, [cur_width]
146
        cmp     eax, [cur_width]
148
        mov     [cur_width], eax
147
        mov     [cur_width], eax
149
        setnz   cl
148
        setnz   cl
150
        or      cl, ch
149
        or      cl, ch
151
        test    edx, edx
150
        test    edx, edx
152
        mov     [fill_width], edx
151
        mov     [fill_width], edx
153
        setnz   ch
152
        setnz   ch
154
        mov     eax, [ebx+46]
153
        mov     eax, [ebx+46]
155
        mov     [wnd_height], eax
154
        mov     [wnd_height], eax
156
        sub     eax, [skinh]
155
        sub     eax, [skinh]
157
        sub     eax, 5-1
156
        sub     eax, 5-1
158
        jns     @f
157
        jns     @f
159
        xor     eax, eax
158
        xor     eax, eax
160
@@:
159
@@:
161
        cdq
160
        cdq
162
        mov     esi, font_height
161
        mov     esi, font_height
163
        div     esi
162
        div     esi
164
        cmp     eax, 8
163
        cmp     eax, 8
165
        jae     @f
164
        jae     @f
166
        mov     al, 8
165
        mov     al, 8
167
        mov     cl, 1
166
        mov     cl, 1
168
@@:
167
@@:
169
        cmp     eax, 255
168
        cmp     eax, 255
170
        jbe     @f
169
        jbe     @f
171
        mov     eax, 255
170
        mov     eax, 255
172
        mov     cl, 1
171
        mov     cl, 1
173
@@:
172
@@:
174
        mov     [fill_height], edx
173
        mov     [fill_height], edx
175
        cmp     eax, [cur_height]
174
        cmp     eax, [cur_height]
176
        mov     [cur_height], eax
175
        mov     [cur_height], eax
177
        jnz     .resize
176
        jnz     .resize
178
        test    cl, cl
177
        test    cl, cl
179
        jnz     .resize
178
        jnz     .resize
180
        test    edx, edx
179
        test    edx, edx
181
        setnz   cl
180
        setnz   cl
182
        or      cl, ch
181
        or      cl, ch
183
        jz      @f
182
        jz      @f
184
        test    byte [ebx+70], 1
183
        test    byte [ebx+70], 1
185
        jnz     @f
184
        jnz     @f
186
.resize:
185
.resize:
187
        push    67
186
        push    67
188
        pop     eax
187
        pop     eax
189
        or      ebx, -1
188
        or      ebx, -1
190
        or      ecx, -1
189
        or      ecx, -1
191
        mov     edx, [cur_width]
190
        mov     edx, [cur_width]
192
        imul    edx, font_width
191
        imul    edx, font_width
193
        add     edx, 5*2-1
192
        add     edx, 5*2-1
194
        mov     esi, [cur_height]
193
        mov     esi, [cur_height]
195
        imul    esi, font_height
194
        imul    esi, font_height
196
        add     esi, [skinh]
195
        add     esi, [skinh]
197
        add     esi, 5-1
196
        add     esi, 5-1
198
        int     40h
197
        int     40h
199
.resize_draw:
198
.resize_draw:
200
        call    init_console
199
        call    init_console
201
;        call    draw_window
200
;        call    draw_window
202
        call    draw_keybar
201
        call    draw_keybar
203
        mov     ebp, [active_screen_data]
202
        mov     ebp, [active_screen_data]
204
        mov     eax, [active_screen_vtable]
203
        mov     eax, [active_screen_vtable]
205
        call    dword [eax+screen_vtable.OnRedraw]
204
        call    dword [eax+screen_vtable.OnRedraw]
206
        jmp     event
205
        jmp     event
207
@@:
206
@@:
208
        call    draw_window
207
        call    draw_window
209
        jmp     event
208
        jmp     event
210
alt_f9:
209
alt_f9:
211
        cmp     [saved_width], -1
210
        cmp     [saved_width], -1
212
        jz      @f
211
        jz      @f
213
        mov     eax, [saved_width]
212
        mov     eax, [saved_width]
214
        mov     [cur_width], eax
213
        mov     [cur_width], eax
215
        or      [saved_width], -1
214
        or      [saved_width], -1
216
        mov     eax, [saved_height]
215
        mov     eax, [saved_height]
217
        mov     [cur_height], eax
216
        mov     [cur_height], eax
218
        or      [saved_height], -1
217
        or      [saved_height], -1
219
        jmp     redraw.resize
218
        jmp     redraw.resize
220
@@:
219
@@:
221
        push    48
220
        push    48
222
        pop     eax
221
        pop     eax
223
        push    5
222
        push    5
224
        pop     ebx
223
        pop     ebx
225
        int     0x40
224
        int     0x40
226
        push    eax
225
        push    eax
227
        sub     eax, [esp+2]
226
        sub     eax, [esp+2]
228
        inc     eax
227
        inc     eax
229
        movzx   eax, ax
228
        movzx   eax, ax
230
        sub     eax, 10
229
        sub     eax, 10
231
        xor     edx, edx
230
        xor     edx, edx
232
        mov     ecx, font_width
231
        mov     ecx, font_width
233
        div     ecx
232
        div     ecx
234
        xchg    [cur_width], eax
233
        xchg    [cur_width], eax
235
        mov     [saved_width], eax
234
        mov     [saved_width], eax
236
        mov     eax, ebx
235
        mov     eax, ebx
237
        shr     ebx, 16
236
        shr     ebx, 16
238
        sub     eax, ebx
237
        sub     eax, ebx
239
        sub     eax, 5-1
238
        sub     eax, 5-1
240
        sub     eax, [skinh]
239
        sub     eax, [skinh]
241
        xor     edx, edx
240
        xor     edx, edx
242
        mov     ecx, font_height
241
        mov     ecx, font_height
243
        div     ecx
242
        div     ecx
244
        xchg    [cur_height], eax
243
        xchg    [cur_height], eax
245
        mov     [saved_height], eax
244
        mov     [saved_height], eax
246
        mov     ecx, ebx
245
        mov     ecx, ebx
247
        pop     ebx
246
        pop     ebx
248
        shr     ebx, 16
247
        shr     ebx, 16
249
        mov     edx, [cur_width]
248
        mov     edx, [cur_width]
250
        imul    edx, font_width
249
        imul    edx, font_width
251
        add     edx, 5*2-1
250
        add     edx, 5*2-1
252
        mov     esi, [cur_height]
251
        mov     esi, [cur_height]
253
        imul    esi, font_height
252
        imul    esi, font_height
254
        add     esi, [skinh]
253
        add     esi, [skinh]
255
        add     esi, 4
254
        add     esi, 4
256
        push    67
255
        push    67
257
        pop     eax
256
        pop     eax
258
        int     0x40
257
        int     0x40
259
        jmp     redraw.resize_draw
258
        jmp     redraw.resize_draw
260
key:
259
key:
261
        mov     al, 2
260
        mov     al, 2
262
        int     40h
261
        int     40h
263
        test    al, al
262
        test    al, al
264
        jnz     event
263
        jnz     event
265
        xchg    al, ah
264
        xchg    al, ah
266
        cmp     al, 0xE0
265
        cmp     al, 0xE0
267
        jnz     @f
266
        jnz     @f
268
        mov     [bWasE0], 1
267
        mov     [bWasE0], 1
269
        jmp     event
268
        jmp     event
270
@@:
269
@@:
271
        xchg    ah, [bWasE0]
270
        xchg    ah, [bWasE0]
272
        mov     ebp, [active_screen_data]
271
        mov     ebp, [active_screen_data]
273
        mov     edx, [active_screen_vtable]
272
        mov     edx, [active_screen_vtable]
274
        cmp     al, 0x1D
273
        cmp     al, 0x1D
275
        jz      .ctrl_down
274
        jz      .ctrl_down
276
        cmp     al, 0x9D
275
        cmp     al, 0x9D
277
        jz      .ctrl_up
276
        jz      .ctrl_up
278
        cmp     al, 0x2A
277
        cmp     al, 0x2A
279
        jz      .lshift_down
278
        jz      .lshift_down
280
        cmp     al, 0xAA
279
        cmp     al, 0xAA
281
        jz      .lshift_up
280
        jz      .lshift_up
282
        cmp     al, 0x36
281
        cmp     al, 0x36
283
        jz      .rshift_down
282
        jz      .rshift_down
284
        cmp     al, 0xB6
283
        cmp     al, 0xB6
285
        jz      .rshift_up
284
        jz      .rshift_up
286
        cmp     al, 0x38
285
        cmp     al, 0x38
287
        jz      .alt_down
286
        jz      .alt_down
288
        cmp     al, 0xB8
287
        cmp     al, 0xB8
289
        jz      .alt_up
288
        jz      .alt_up
290
        call    [edx+screen_vtable.OnKey]
289
        call    [edx+screen_vtable.OnKey]
291
        jmp     event
290
        jmp     event
292
.ctrl_down:
291
.ctrl_down:
293
        test    ah, ah
292
        test    ah, ah
294
        jnz     .rctrl_down
293
        jnz     .rctrl_down
295
        or      [ctrlstate], 4
294
        or      [ctrlstate], 4
296
        jmp     .keybar
295
        jmp     .keybar
297
.rctrl_down:
296
.rctrl_down:
298
        or      [ctrlstate], 8
297
        or      [ctrlstate], 8
299
        jmp     .keybar
298
        jmp     .keybar
300
.ctrl_up:
299
.ctrl_up:
301
        test    ah, ah
300
        test    ah, ah
302
        jnz     .rctrl_up
301
        jnz     .rctrl_up
303
        and     [ctrlstate], not 4
302
        and     [ctrlstate], not 4
304
        jmp     .keybar
303
        jmp     .keybar
305
.rctrl_up:
304
.rctrl_up:
306
        and     [ctrlstate], not 8
305
        and     [ctrlstate], not 8
307
.keybar:
306
.keybar:
308
        call    draw_keybar
307
        call    draw_keybar
309
        call    draw_image
308
        call    draw_image
310
@@:     jmp     event
309
@@:     jmp     event
311
.lshift_down:
310
.lshift_down:
312
; ignore E0 2A sequence
311
; ignore E0 2A sequence
313
; e.g. arrow keys with NumLock on generate sequence E0 2A E0 xx / E0 xx+80 E0 AA
312
; e.g. arrow keys with NumLock on generate sequence E0 2A E0 xx / E0 xx+80 E0 AA
314
; where xx is scancode, so we can safely ignore E0 2A
313
; where xx is scancode, so we can safely ignore E0 2A
315
        test    ah, ah
314
        test    ah, ah
316
        jnz     @b
315
        jnz     @b
317
        or      [ctrlstate], 1
316
        or      [ctrlstate], 1
318
        jmp     .keybar
317
        jmp     .keybar
319
.lshift_up:
318
.lshift_up:
320
; ignore E0 AA sequence
319
; ignore E0 AA sequence
321
        test    ah, ah
320
        test    ah, ah
322
        jnz     @b
321
        jnz     @b
323
        and     [ctrlstate], not 1
322
        and     [ctrlstate], not 1
324
        jmp     .keybar
323
        jmp     .keybar
325
.rshift_down:
324
.rshift_down:
326
        or      [ctrlstate], 2
325
        or      [ctrlstate], 2
327
        jmp     .keybar
326
        jmp     .keybar
328
.rshift_up:
327
.rshift_up:
329
        and     [ctrlstate], not 2
328
        and     [ctrlstate], not 2
330
        jmp     .keybar
329
        jmp     .keybar
331
.alt_down:
330
.alt_down:
332
        test    ah, ah
331
        test    ah, ah
333
        jnz     .ralt_down
332
        jnz     .ralt_down
334
        or      [ctrlstate], 0x10
333
        or      [ctrlstate], 0x10
335
        jmp     .keybar
334
        jmp     .keybar
336
.ralt_down:
335
.ralt_down:
337
        or      [ctrlstate], 0x20
336
        or      [ctrlstate], 0x20
338
        jmp     .keybar
337
        jmp     .keybar
339
.alt_up:
338
.alt_up:
340
        test    ah, ah
339
        test    ah, ah
341
        jnz     .ralt_up
340
        jnz     .ralt_up
342
        and     [ctrlstate], not 0x10
341
        and     [ctrlstate], not 0x10
343
        jmp     .keybar
342
        jmp     .keybar
344
.ralt_up:
343
.ralt_up:
345
        and     [ctrlstate], not 0x20
344
        and     [ctrlstate], not 0x20
346
        jmp     .keybar
345
        jmp     .keybar
347
 
346
 
348
process_ctrl_keys:
347
process_ctrl_keys:
349
        cmp     byte [esi], 0
348
        cmp     byte [esi], 0
350
        jz      .done
349
        jz      .done
351
        push    ecx
350
        push    ecx
352
        cmp     al, [esi]
351
        cmp     al, [esi]
353
        jz      .check
352
        jz      .check
354
.cont:
353
.cont:
355
        pop     ecx
354
        pop     ecx
356
        add     esi, 8
355
        add     esi, 8
357
        jmp     process_ctrl_keys
356
        jmp     process_ctrl_keys
358
.done:
357
.done:
359
        stc
358
        stc
360
        ret
359
        ret
361
.check:
360
.check:
362
        mov     cl, 0
361
        mov     cl, 0
363
        call    .check_ctrlkey
362
        call    .check_ctrlkey
364
        jc      .cont
363
        jc      .cont
365
        mov     cl, 2
364
        mov     cl, 2
366
        call    .check_ctrlkey
365
        call    .check_ctrlkey
367
        jc      .cont
366
        jc      .cont
368
        mov     cl, 4
367
        mov     cl, 4
369
        call    .check_ctrlkey
368
        call    .check_ctrlkey
370
        jc      .cont
369
        jc      .cont
371
        pop     ecx
370
        pop     ecx
372
        call    dword [esi+4]
371
        call    dword [esi+4]
373
        clc
372
        clc
374
        ret
373
        ret
375
.check_ctrlkey:
374
.check_ctrlkey:
376
        push    eax edx
375
        push    eax edx
377
        movzx   edx, [ctrlstate]
376
        movzx   edx, [ctrlstate]
378
        shr     edx, cl
377
        shr     edx, cl
379
        add     cl, cl
378
        add     cl, cl
380
        movzx   eax, word [esi+2]
379
        movzx   eax, word [esi+2]
381
        shr     eax, cl
380
        shr     eax, cl
382
        and     eax, 15
381
        and     eax, 15
383
        cmp     al, ctrlkey_tests_num
382
        cmp     al, ctrlkey_tests_num
384
        jae     .fail
383
        jae     .fail
385
        xchg    eax, edx
384
        xchg    eax, edx
386
        and     al, 3
385
        and     al, 3
387
        call    [ctrlkey_tests + edx*4]
386
        call    [ctrlkey_tests + edx*4]
388
        cmp     al, 1
387
        cmp     al, 1
389
        pop     edx eax
388
        pop     edx eax
390
        ret
389
        ret
391
.fail:
390
.fail:
392
        stc
391
        stc
393
        pop     edx eax
392
        pop     edx eax
394
        ret
393
        ret
395
 
394
 
396
ctrlkey_test0:
395
ctrlkey_test0:
397
        test    al, al
396
        test    al, al
398
        setz    al
397
        setz    al
399
        ret
398
        ret
400
ctrlkey_test1:
399
ctrlkey_test1:
401
        test    al, al
400
        test    al, al
402
        setnp   al
401
        setnp   al
403
        ret
402
        ret
404
ctrlkey_test2:
403
ctrlkey_test2:
405
        cmp     al, 3
404
        cmp     al, 3
406
        setz    al
405
        setz    al
407
        ret
406
        ret
408
ctrlkey_test3:
407
ctrlkey_test3:
409
        cmp     al, 1
408
        cmp     al, 1
410
        setz    al
409
        setz    al
411
        ret
410
        ret
412
ctrlkey_test4:
411
ctrlkey_test4:
413
        cmp     al, 2
412
        cmp     al, 2
414
        setz    al
413
        setz    al
415
        ret
414
        ret
416
 
415
 
417
new_screen:
416
new_screen:
418
        call    xmalloc
417
        call    xmalloc
419
        test    eax, eax
418
        test    eax, eax
420
        jnz     @f
419
        jnz     @f
421
        ret
420
        ret
422
@@:
421
@@:
423
        mov     ebp, eax
422
        mov     ebp, eax
424
        mov     ebx, [num_screens]
423
        mov     ebx, [num_screens]
425
        inc     ebx
424
        inc     ebx
426
        shl     ebx, 3
425
        shl     ebx, 3
427
        mov     eax, [screens]
426
        mov     eax, [screens]
428
        call    xrealloc
427
        call    xrealloc
429
        test    eax, eax
428
        test    eax, eax
430
        jnz     @f
429
        jnz     @f
431
        mov     eax, ebp
430
        mov     eax, ebp
432
        call    mf_free
431
        call    mf_free
433
        xor     eax, eax
432
        xor     eax, eax
434
        ret
433
        ret
435
@@:
434
@@:
436
        mov     [screens], eax
435
        mov     [screens], eax
437
        inc     [num_screens]
436
        inc     [num_screens]
438
        mov     [eax+ebx-8], edx
437
        mov     [eax+ebx-8], edx
439
        mov     [eax+ebx-4], ebp
438
        mov     [eax+ebx-4], ebp
440
        mov     eax, [num_screens]
439
        mov     eax, [num_screens]
441
        dec     eax
440
        dec     eax
442
        mov     [active_screen], eax
441
        mov     [active_screen], eax
443
        mov     [active_screen_vtable], edx
442
        mov     [active_screen_vtable], edx
444
        mov     [active_screen_data], ebp
443
        mov     [active_screen_data], ebp
445
        jmp     draw_keybar
444
        jmp     draw_keybar
446
 
445
 
447
next_screen:
446
next_screen:
448
        mov     eax, [active_screen]
447
        mov     eax, [active_screen]
449
        inc     eax
448
        inc     eax
450
        cmp     eax, [num_screens]
449
        cmp     eax, [num_screens]
451
        jnz     @f
450
        jnz     @f
452
        xor     eax, eax
451
        xor     eax, eax
453
@@:     mov     [active_screen], eax
452
@@:     mov     [active_screen], eax
454
        jmp     change_screen
453
        jmp     change_screen
455
 
454
 
456
delete_active_screen:
455
delete_active_screen:
457
        mov     edi, [screens]
456
        mov     edi, [screens]
458
        mov     eax, [active_screen]
457
        mov     eax, [active_screen]
459
        shl     eax, 3
458
        shl     eax, 3
460
        add     edi, eax
459
        add     edi, eax
461
        push    dword [edi+4]
460
        push    dword [edi+4]
462
        lea     esi, [edi+8]
461
        lea     esi, [edi+8]
463
        mov     ecx, [num_screens]
462
        mov     ecx, [num_screens]
464
        sub     ecx, [active_screen]
463
        sub     ecx, [active_screen]
465
        dec     ecx
464
        dec     ecx
466
        add     ecx, ecx
465
        add     ecx, ecx
467
        rep     movsd
466
        rep     movsd
468
        dec     [num_screens]
467
        dec     [num_screens]
469
        mov     ebx, [num_screens]
468
        mov     ebx, [num_screens]
470
        shl     ebx, 3
469
        shl     ebx, 3
471
        mov     eax, [screens]
470
        mov     eax, [screens]
472
        call    mf_realloc      ; must succeed, because we decrease size
471
        call    mf_realloc      ; must succeed, because we decrease size
473
        pop     eax
472
        pop     eax
474
        call    mf_free
473
        call    mf_free
475
        and     [active_screen], 0
474
        and     [active_screen], 0
476
 
475
 
477
change_screen:
476
change_screen:
478
        pusha
477
        pusha
479
        mov     eax, [active_screen]
478
        mov     eax, [active_screen]
480
        mov     esi, [screens]
479
        mov     esi, [screens]
481
        mov     ebp, [esi+eax*8+4]
480
        mov     ebp, [esi+eax*8+4]
482
        mov     eax, [esi+eax*8]
481
        mov     eax, [esi+eax*8]
483
        mov     [active_screen_vtable], eax
482
        mov     [active_screen_vtable], eax
484
        mov     [active_screen_data], ebp
483
        mov     [active_screen_data], ebp
485
        call    draw_keybar
484
        call    draw_keybar
486
        call    [eax+screen_vtable.OnRedraw]
485
        call    [eax+screen_vtable.OnRedraw]
487
        popa
486
        popa
488
        ret
487
        ret
489
 
488
 
490
F12:
489
F12:
491
        mov     eax, [cur_width]
490
        mov     eax, [cur_width]
492
        add     eax, 8
491
        add     eax, 8
493
        mov     esi, eax
492
        mov     esi, eax
494
        mul     [num_screens]
493
        mul     [num_screens]
495
        call    xmalloc
494
        call    xmalloc
496
        test    eax, eax
495
        test    eax, eax
497
        jnz     @f
496
        jnz     @f
498
        ret
497
        ret
499
@@:
498
@@:
500
        mov     ebx, eax
499
        mov     ebx, eax
501
        mov     edi, eax
500
        mov     edi, eax
502
        xor     ecx, ecx
501
        xor     ecx, ecx
503
.next:
502
.next:
504
        xor     eax, eax
503
        xor     eax, eax
505
        stosd
504
        stosd
506
        inc     ecx
505
        inc     ecx
507
        cmp     ecx, [num_screens]
506
        cmp     ecx, [num_screens]
508
        jz      @f
507
        jz      @f
509
        lea     eax, [edi+esi-4]
508
        lea     eax, [edi+esi-4]
510
        mov     dword [edi-4], eax
509
        mov     dword [edi-4], eax
511
@@:
510
@@:
512
        xor     eax, eax
511
        xor     eax, eax
513
        stosd
512
        stosd
514
        dec     ecx
513
        dec     ecx
515
        jz      @f
514
        jz      @f
516
        lea     eax, [edi-8]
515
        lea     eax, [edi-8]
517
        sub     eax, esi
516
        sub     eax, esi
518
        mov     dword [edi-4], eax
517
        mov     dword [edi-4], eax
519
@@:
518
@@:
520
        mov     al, '&'
519
        mov     al, '&'
521
        stosb
520
        stosb
522
        cmp     ecx, 36
521
        cmp     ecx, 36
523
        jae     .noletter
522
        jae     .noletter
524
        lea     eax, [ecx+'0']
523
        lea     eax, [ecx+'0']
525
        cmp     al, '9'
524
        cmp     al, '9'
526
        jbe     @f
525
        jbe     @f
527
        add     al, 7
526
        add     al, 7
528
@@:
527
@@:
529
        stosb
528
        stosb
530
        mov     al, '.'
529
        mov     al, '.'
531
        stosb
530
        stosb
532
        jmp     .letter_done
531
        jmp     .letter_done
533
.noletter:
532
.noletter:
534
        mov     al, ' '
533
        mov     al, ' '
535
        stosb
534
        stosb
536
        stosb
535
        stosb
537
.letter_done:
536
.letter_done:
538
        mov     al, ' '
537
        mov     al, ' '
539
        stosb
538
        stosb
540
        pushad
539
        pushad
541
        mov     eax, [screens]
540
        mov     eax, [screens]
542
        mov     ebp, [eax+ecx*8+4]
541
        mov     ebp, [eax+ecx*8+4]
543
        mov     eax, [eax+ecx*8]
542
        mov     eax, [eax+ecx*8]
544
        mov     ecx, [cur_width]
543
        mov     ecx, [cur_width]
545
        sub     ecx, 12
544
        sub     ecx, 12
546
        call    [eax + screen_vtable.getname]
545
        call    [eax + screen_vtable.getname]
547
        popad
546
        popad
548
        sub     edi, 4
547
        sub     edi, 4
549
        add     edi, [cur_width]
548
        add     edi, [cur_width]
550
        inc     ecx
549
        inc     ecx
551
        cmp     ecx, [num_screens]
550
        cmp     ecx, [num_screens]
552
        jb      .next
551
        jb      .next
553
        mov     eax, [active_screen]
552
        mov     eax, [active_screen]
554
        mul     esi
553
        mul     esi
555
        add     eax, ebx
554
        add     eax, ebx
556
        push    1
555
        push    1
557
        push    aScreens
556
        push    aScreens
558
        push    eax
557
        push    eax
559
        call    menu
558
        call    menu
560
        cmp     eax, -1
559
        cmp     eax, -1
561
        jz      @f
560
        jz      @f
562
        sub     eax, ebx
561
        sub     eax, ebx
563
        div     esi
562
        div     esi
564
        mov     [active_screen], eax
563
        mov     [active_screen], eax
565
@@:
564
@@:
566
        mov     eax, ebx
565
        mov     eax, ebx
567
        call    mf_free
566
        call    mf_free
568
        jmp     change_screen
567
        jmp     change_screen
569
 
568
 
570
panels_OnKey:
569
panels_OnKey:
571
        mov     ebp, [active_panel]
570
        mov     ebp, [active_panel]
572
        mov     ecx, [ebp + panel1_index - panel1_data]
571
        mov     ecx, [ebp + panel1_index - panel1_data]
573
        mov     edx, [ebp + panel1_start - panel1_data]
572
        mov     edx, [ebp + panel1_start - panel1_data]
574
        mov     ebx, [ebp + panel1_colst - panel1_data]
573
        mov     ebx, [ebp + panel1_colst - panel1_data]
575
        add     ebx, edx
574
        add     ebx, edx
576
        mov     esi, panels_ctrlkeys
575
        mov     esi, panels_ctrlkeys
577
        jmp     process_ctrl_keys
576
        jmp     process_ctrl_keys
578
.ret:
577
.ret:
579
        ret
578
        ret
580
.up:
579
.up:
581
        jecxz   .ret
580
        jecxz   .ret
582
        dec     ecx
581
        dec     ecx
583
        mov     [ebp + panel1_index - panel1_data], ecx
582
        mov     [ebp + panel1_index - panel1_data], ecx
584
        cmp     ecx, edx
583
        cmp     ecx, edx
585
        jae     .done_redraw
584
        jae     .done_redraw
586
        mov     [ebp + panel1_start - panel1_data], ecx
585
        mov     [ebp + panel1_start - panel1_data], ecx
587
.done_redraw:
586
.done_redraw:
588
;        call    draw_panel
587
;        call    draw_panel
589
;        ret
588
;        ret
590
        jmp     draw_panel
589
        jmp     draw_panel
591
.down:
590
.down:
592
        inc     ecx
591
        inc     ecx
593
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
592
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
594
        jae     .ret
593
        jae     .ret
595
        mov     [ebp + panel1_index - panel1_data], ecx
594
        mov     [ebp + panel1_index - panel1_data], ecx
596
        cmp     ecx, ebx
595
        cmp     ecx, ebx
597
        jb      .done_redraw
596
        jb      .done_redraw
598
        sub     ecx, [ebp + panel1_colst - panel1_data]
597
        sub     ecx, [ebp + panel1_colst - panel1_data]
599
        inc     ecx
598
        inc     ecx
600
        mov     [ebp + panel1_start - panel1_data], ecx
599
        mov     [ebp + panel1_start - panel1_data], ecx
601
        jmp     .done_redraw
600
        jmp     .done_redraw
602
.left:
601
.left:
603
        jecxz   .ret
602
        jecxz   .ret
604
        sub     ecx, [ebp + panel1_colsz - panel1_data]
603
        sub     ecx, [ebp + panel1_colsz - panel1_data]
605
        jae     @f
604
        jae     @f
606
        xor     ecx, ecx
605
        xor     ecx, ecx
607
@@:
606
@@:
608
        mov     [ebp + panel1_index - panel1_data], ecx
607
        mov     [ebp + panel1_index - panel1_data], ecx
609
        cmp     ecx, edx
608
        cmp     ecx, edx
610
        jae     .done_redraw
609
        jae     .done_redraw
611
        sub     edx, [ebp + panel1_colsz - panel1_data]
610
        sub     edx, [ebp + panel1_colsz - panel1_data]
612
        jae     @f
611
        jae     @f
613
        xor     edx, edx
612
        xor     edx, edx
614
@@:
613
@@:
615
        mov     [ebp + panel1_start - panel1_data], edx
614
        mov     [ebp + panel1_start - panel1_data], edx
616
        jmp     .done_redraw
615
        jmp     .done_redraw
617
.right:
616
.right:
618
        add     ecx, [ebp + panel1_colsz - panel1_data]
617
        add     ecx, [ebp + panel1_colsz - panel1_data]
619
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
618
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
620
        jb      @f
619
        jb      @f
621
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
620
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
622
        dec     ecx
621
        dec     ecx
623
@@:
622
@@:
624
        mov     [ebp + panel1_index - panel1_data], ecx
623
        mov     [ebp + panel1_index - panel1_data], ecx
625
        cmp     ecx, ebx
624
        cmp     ecx, ebx
626
        jb      .done_redraw
625
        jb      .done_redraw
627
        add     ebx, [ebp + panel1_colsz - panel1_data]
626
        add     ebx, [ebp + panel1_colsz - panel1_data]
628
        cmp     ebx, [ebp + panel1_numfiles - panel1_data]
627
        cmp     ebx, [ebp + panel1_numfiles - panel1_data]
629
        jbe     @f
628
        jbe     @f
630
        mov     ebx, [ebp + panel1_numfiles - panel1_data]
629
        mov     ebx, [ebp + panel1_numfiles - panel1_data]
631
@@:
630
@@:
632
        sub     ebx, [ebp + panel1_colst - panel1_data]
631
        sub     ebx, [ebp + panel1_colst - panel1_data]
633
        jae     @f
632
        jae     @f
634
        xor     ebx, ebx
633
        xor     ebx, ebx
635
@@:
634
@@:
636
        mov     [ebp + panel1_start - panel1_data], ebx
635
        mov     [ebp + panel1_start - panel1_data], ebx
637
        jmp     .done_redraw
636
        jmp     .done_redraw
638
.tab:
637
.tab:
639
        xor     [active_panel], panel1_data xor panel2_data
638
        xor     [active_panel], panel1_data xor panel2_data
640
        call    draw_cmdbar
639
        call    draw_cmdbar
641
        call    draw_panel
640
        call    draw_panel
642
        mov     ebp, [active_panel]
641
        mov     ebp, [active_panel]
643
        jmp     .done_redraw
642
        jmp     .done_redraw
644
.home:
643
.home:
645
        and     [ebp + panel1_start - panel1_data], 0
644
        and     [ebp + panel1_start - panel1_data], 0
646
        and     [ebp + panel1_index - panel1_data], 0
645
        and     [ebp + panel1_index - panel1_data], 0
647
        jmp     .done_redraw
646
        jmp     .done_redraw
648
.end:
647
.end:
649
        mov     eax, [ebp + panel1_numfiles - panel1_data]
648
        mov     eax, [ebp + panel1_numfiles - panel1_data]
650
        dec     eax
649
        dec     eax
651
        mov     [ebp + panel1_index - panel1_data], eax
650
        mov     [ebp + panel1_index - panel1_data], eax
652
        inc     eax
651
        inc     eax
653
        sub     eax, [ebp + panel1_colst - panel1_data]
652
        sub     eax, [ebp + panel1_colst - panel1_data]
654
        jae     @f
653
        jae     @f
655
        xor     eax, eax
654
        xor     eax, eax
656
@@:
655
@@:
657
        mov     [ebp + panel1_start - panel1_data], eax
656
        mov     [ebp + panel1_start - panel1_data], eax
658
        jmp     .done_redraw
657
        jmp     .done_redraw
659
.enter:
658
.enter:
660
        call    get_curfile_folder_entry
659
        call    get_curfile_folder_entry
661
        test    byte [ecx], 10h
660
        test    byte [ecx], 10h
662
        jnz     .enter_folder
661
        jnz     .enter_folder
663
        call    find_extension
662
        call    find_extension
664
        jc      .run_app
663
        jc      .run_app
665
        jnz     .run_app
664
        jnz     .run_app
666
.run_association:
665
.run_association:
667
        mov     eax, [edi+4]
666
        mov     eax, [edi+4]
668
.run_association2:
667
.run_association2:
669
        mov     [execparams], execdata
668
        mov     [execparams], execdata
670
        mov     [execptr], eax
669
        mov     [execptr], eax
671
        jmp     .dorun
670
        jmp     .dorun
672
.run_app:
671
.run_app:
673
        mov     [execptr], execdata
672
        mov     [execptr], execdata
674
        and     [execparams], 0
673
        and     [execparams], 0
675
.dorun:
674
.dorun:
676
        lea     esi, [ebp + panel1_dir - panel1_data]
675
        lea     esi, [ebp + panel1_dir - panel1_data]
677
        mov     edi, execdata
676
        mov     edi, execdata
678
; TODO: add overflow check
-
 
679
@@:
677
@@:
680
        lodsb
678
        lodsb
681
        test    al, al
679
        test    al, al
682
        jz      @f
680
        jz      @f
683
        stosb
681
        stosb
-
 
682
        cmp     edi, execdataend-1
-
 
683
        jae     .bigfilename
684
        jmp     @b
684
        jmp     @b
685
@@:
685
@@:
686
        lea     esi, [ecx+40]
686
        lea     esi, [ecx+40]
687
        mov     al, '/'
687
        mov     al, '/'
688
        stosb
688
        stosb
689
@@:
689
@@:
690
        lodsb
690
        lodsb
691
        stosb
691
        stosb
-
 
692
        cmp     edi, execdataend
-
 
693
        ja      .bigfilename
692
        test    al, al
694
        test    al, al
693
        jnz     @b
695
        jnz     @b
694
; for fasm call - special handling, because
696
; for fasm call - special handling, because
695
; 1) fasm command line convention is different : fasm infile,outfile[,path] rather than tinypad infile
697
; 1) fasm command line convention is different : fasm infile,outfile[,path] rather than tinypad infile
696
; 2) fasm will probably create new file in directory, so we want to reload panel data
698
; 2) fasm will probably create new file in directory, so we want to reload panel data
697
        xor     edx, edx
699
        xor     edx, edx
698
        cmp     [execparams], edx
700
        cmp     [execparams], edx
699
        jz      .nofasm
701
        jz      .nofasm
700
        cmp     [execptr], fasm
702
        cmp     [execptr], fasm
701
        jnz     .nofasm
703
        jnz     .nofasm
702
; TODO: add buffer/cmdline overflow check
704
        cmp     edi, execdata+(execdataend-execdata)/2
-
 
705
        ja      .bigfilename
703
        mov     esi, execdata
706
        mov     esi, execdata
704
@@:
707
@@:
705
        lodsb
708
        lodsb
706
        stosb
709
        stosb
707
        test    al, al
710
        test    al, al
708
        jnz     @b
711
        jnz     @b
709
        mov     byte [esi-1], ','
712
        mov     byte [esi-1], ','
710
        inc     edx
713
        inc     edx
711
; output file: no extension if input file has extension, '.bin' otherwise
714
; output file: no extension if input file has extension, '.bin' otherwise
712
        push    edi
715
        push    edi
713
@@:
716
@@:
714
        dec     edi
717
        dec     edi
715
        cmp     byte [edi], '.'
718
        cmp     byte [edi], '.'
716
        jz      .ptfound
719
        jz      .ptfound
717
        cmp     byte [edi], '/'
720
        cmp     byte [edi], '/'
718
        jnz     @b
721
        jnz     @b
719
        pop     edi
722
        pop     edi
-
 
723
        cmp     edi, execdataend-4
-
 
724
        ja      .bigfilename
720
        mov     dword [edi-1], '.bin'
725
        mov     dword [edi-1], '.bin'
721
        mov     byte [edi+3], 0
726
        mov     byte [edi+3], 0
722
        jmp     .nofasm
727
        jmp     .nofasm
723
.ptfound:
728
.ptfound:
724
        mov     byte [edi], 0
729
        mov     byte [edi], 0
725
        pop     edi
730
        pop     edi
726
.nofasm:
731
.nofasm:
-
 
732
        mov     ebx, execinfo
-
 
733
; if command line is more than 256 symbols, the kernel will truncate it
-
 
734
; we does not want this!
-
 
735
; N.B. We know that command line is either NULL or execdata, which is always ASCIIZ string,
-
 
736
;      but can be up to 1023 symbols
-
 
737
        mov     esi, [ebx+8]
-
 
738
        test    esi, esi
-
 
739
        jz      .cmdlinelenok
-
 
740
@@:
-
 
741
        lodsb
-
 
742
        test    al, al
-
 
743
        jnz     @b
-
 
744
        sub     esi, [ebx+8]
-
 
745
        dec     esi
-
 
746
        cmp     esi, 256
-
 
747
        ja      .bigcmdline
-
 
748
.cmdlinelenok:
727
        push    70
749
        push    70
728
        pop     eax
750
        pop     eax
729
        mov     ebx, execinfo
-
 
730
        int     40h
751
        int     40h
-
 
752
        neg     eax
-
 
753
        js      @f
-
 
754
        push    aContinue
-
 
755
        mov     esi, esp
-
 
756
        call    get_error_msg
-
 
757
        push    eax
-
 
758
        push    aRunError
-
 
759
        mov     eax, esp
-
 
760
        push    esi
-
 
761
        push    1
-
 
762
        push    eax
-
 
763
        push    2
-
 
764
        push    -1
-
 
765
        push    -1
-
 
766
        push    aError
-
 
767
        call    SayErr
-
 
768
        add     esp, 3*4
-
 
769
        ret
-
 
770
@@:
731
        test    edx, edx
771
        test    edx, edx
732
        jz      @f
772
        jz      @f
733
        push    5
773
        push    5
734
        pop     eax
774
        pop     eax
735
        push    20
775
        push    20
736
        pop     ebx
776
        pop     ebx
737
        int     0x40
777
        int     0x40
738
        jmp     .ctrl_r
778
        jmp     .ctrl_r
739
@@:
779
@@:
740
        ret
780
        ret
-
 
781
.bigfilename3:
-
 
782
        pop     esi
-
 
783
.bigfilename2:
-
 
784
        pop     esi
-
 
785
.bigfilename:
-
 
786
        mov     eax, aFileNameTooBig
-
 
787
@@:
-
 
788
        push    aContinue
-
 
789
        mov     esi, esp
-
 
790
        push    eax
-
 
791
        mov     eax, esp
-
 
792
        push    esi
-
 
793
        push    1
-
 
794
        push    eax
-
 
795
        push    1
-
 
796
        push    -1
-
 
797
        push    -1
-
 
798
        push    aError
-
 
799
        call    SayErr
-
 
800
        add     esp, 2*4
-
 
801
        ret
-
 
802
.bigcmdline:
-
 
803
        mov     eax, aCmdLineTooBig
-
 
804
        jmp     @b
-
 
805
.bigfoldername2:
-
 
806
        mov     byte [ecx], 0
-
 
807
.bigfoldername:
-
 
808
        mov     eax, aFolderNameTooBig
-
 
809
        jmp     @b
-
 
810
.copytoself:
-
 
811
        mov     eax, aCannotCopyToSelf
-
 
812
        jmp     @b
741
.enter_folder:
813
.enter_folder:
742
        lea     esi, [ecx+40]
814
        lea     esi, [ecx+40]
743
        cmp     word [esi], '..'
815
        cmp     word [esi], '..'
744
        jnz     @f
816
        jnz     @f
745
        cmp     byte [esi+2], 0
817
        cmp     byte [esi+2], 0
746
        jz      .dotdot
818
        jz      .dotdot
747
@@:
819
@@:
748
        push    esi
820
        push    esi
749
        lea     esi, [ebp + panel1_dir - panel1_data]
821
        lea     esi, [ebp + panel1_dir - panel1_data]
750
        mov     edi, prev_dir
822
        mov     edi, prev_dir
751
@@:
823
@@:
752
        lodsb
824
        lodsb
753
        stosb
825
        stosb
754
        test    al, al
826
        test    al, al
755
        jnz     @b
827
        jnz     @b
756
        lea     edi, [esi-1]
828
        lea     edi, [esi-1]
-
 
829
        lea     edx, [ebp + panel1_dir - panel1_data + 1024]
-
 
830
        cmp     esi, edx
757
        pop     esi
831
        pop     esi
-
 
832
        jae     .bigfoldername
-
 
833
        mov     ecx, edi
758
        mov     al, '/'
834
        mov     al, '/'
759
        cmp     [edi-1], al
835
        cmp     [edi-1], al
760
        jz      @f
836
        jz      @f
761
        stosb
837
        stosb
762
@@:
838
@@:
763
; TODO: add buffer overflow check
-
 
764
@@:
-
 
765
        lodsb
839
        lodsb
-
 
840
        cmp     edi, edx
-
 
841
        jae     .bigfoldername2
766
        stosb
842
        stosb
767
        test    al, al
843
        test    al, al
768
        jnz     @b
844
        jnz     @b
769
.reread:
845
.reread:
770
        call    read_folder
846
        call    read_folder
771
.done_cmdbar:
847
.done_cmdbar:
772
        call    draw_cmdbar
848
        call    draw_cmdbar
773
        jmp     .done_redraw
849
        jmp     .done_redraw
774
.dotdot:
850
.dotdot:
775
        lea     edi, [ebp + panel1_dir - panel1_data]
851
        lea     edi, [ebp + panel1_dir - panel1_data]
776
        mov     al, 0
852
        mov     al, 0
777
        or      ecx, -1
853
        or      ecx, -1
778
        repnz   scasb
854
        repnz   scasb
779
        dec     edi
855
        dec     edi
780
        mov     al, '/'
856
        mov     al, '/'
781
        std
857
        std
782
        repnz   scasb
858
        repnz   scasb
783
        cld
859
        cld
784
        inc     edi
860
        inc     edi
785
        mov     byte [edi], 0
861
        mov     byte [edi], 0
786
        inc     edi
862
        inc     edi
787
        push    edi
863
        push    edi
788
        call    read_folder
864
        call    read_folder
789
        pop     edi
865
        pop     edi
790
        mov     edx, [ebp + panel1_files - panel1_data]
866
        mov     edx, [ebp + panel1_files - panel1_data]
791
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
867
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
792
.scanloop:
868
.scanloop:
793
        mov     esi, [edx]
869
        mov     esi, [edx]
794
        mov     eax, [ebp + panel1_nfa - panel1_data]
-
 
795
        lea     esi, [esi+eax*4+32+40]
870
        add     esi, 40
796
        add     esi, [ebp + panel1_files - panel1_data]
-
 
797
        push    esi edi
871
        push    esi edi
798
@@:
872
@@:
799
        lodsb
873
        lodsb
800
        call    match_symbol
874
        call    match_symbol
801
        jnz     @f
875
        jnz     @f
802
        inc     edi
876
        inc     edi
803
        test    al, al
877
        test    al, al
804
        jnz     @b
878
        jnz     @b
805
@@:
879
@@:
806
        pop     edi esi
880
        pop     edi esi
807
        jz      .scanfound
881
        jz      .scanfound
808
        add     edx, 4
882
        add     edx, 4
809
        loop    .scanloop
883
        loop    .scanloop
810
        jmp     .scandone
884
        jmp     .scandone
811
.scanfound:
885
.scanfound:
812
        sub     edx, [ebp + panel1_files - panel1_data]
886
        sub     edx, [ebp + panel1_files - panel1_data]
813
        shr     edx, 2
887
        shr     edx, 2
814
        mov     [ebp + panel1_index - panel1_data], edx
888
        mov     [ebp + panel1_index - panel1_data], edx
815
        sub     edx, [ebp + panel1_colst - panel1_data]
889
        sub     edx, [ebp + panel1_colst - panel1_data]
816
        jb      .scandone
890
        jb      .scandone
817
        inc     edx
891
        inc     edx
818
        mov     [ebp + panel1_start - panel1_data], edx
892
        mov     [ebp + panel1_start - panel1_data], edx
819
.scandone:
893
.scandone:
820
        jmp     .done_cmdbar
894
        jmp     .done_cmdbar
821
.ctrl_f39:
895
.ctrl_f39:
822
        sub     al, 0x3D
896
        sub     al, 0x3D
823
        add     al, al
897
        add     al, al
824
        mov     ah, [ebp + panel1_sortmode - panel1_data]
898
        mov     ah, [ebp + panel1_sortmode - panel1_data]
825
        and     ah, 0xFE
899
        and     ah, 0xFE
826
        cmp     al, ah
900
        cmp     al, ah
827
        jnz     @f
901
        jnz     @f
828
        and     [ebp + panel1_sortmode - panel1_data], 1
902
        and     [ebp + panel1_sortmode - panel1_data], 1
829
        or      al, [ebp + panel1_sortmode - panel1_data]
903
        or      al, [ebp + panel1_sortmode - panel1_data]
830
        xor     al, 1
904
        xor     al, 1
831
@@:
905
@@:
832
        mov     [ebp + panel1_sortmode - panel1_data], al
906
        mov     [ebp + panel1_sortmode - panel1_data], al
833
        mov     eax, [ebp + panel1_index - panel1_data]
907
        mov     eax, [ebp + panel1_index - panel1_data]
834
        mov     ecx, [ebp + panel1_files - panel1_data]
908
        mov     ecx, [ebp + panel1_files - panel1_data]
835
        push    dword [ecx+eax*4]
909
        push    dword [ecx+eax*4]
836
        push    ecx
910
        push    ecx
837
        call    sort_files
911
        call    sort_files
838
        pop     edi
912
        pop     edi
839
        pop     eax
913
        pop     eax
840
        or      ecx, -1
914
        or      ecx, -1
841
        repnz   scasd
915
        repnz   scasd
842
        not     ecx
916
        not     ecx
843
        dec     ecx
917
        dec     ecx
844
        mov     [ebp + panel1_index - panel1_data], ecx
918
        mov     [ebp + panel1_index - panel1_data], ecx
845
        sub     ecx, [ebp + panel1_start - panel1_data]
919
        sub     ecx, [ebp + panel1_start - panel1_data]
846
        jb      .less_start
920
        jb      .less_start
847
        sub     ecx, [ebp + panel1_colst - panel1_data]
921
        sub     ecx, [ebp + panel1_colst - panel1_data]
848
        jae     .gr_end
922
        jae     .gr_end
849
@@:     jmp     .done_redraw
923
@@:     jmp     .done_redraw
850
.less_start:
924
.less_start:
851
        add     [ebp + panel1_start - panel1_data], ecx
925
        add     [ebp + panel1_start - panel1_data], ecx
852
        jmp     @b
926
        jmp     @b
853
.gr_end:
927
.gr_end:
854
        inc     ecx
928
        inc     ecx
855
        add     [ebp + panel1_start - panel1_data], ecx
929
        add     [ebp + panel1_start - panel1_data], ecx
856
        jmp     @b
930
        jmp     @b
857
.alt_f12:
931
.alt_f12:
858
        mov     ebp, panel1_data
932
        mov     ebp, panel1_data
859
        cmp     al, 0x3B
933
        cmp     al, 0x3B
860
        jz      @f
934
        jz      @f
861
        mov     ebp, panel2_data
935
        mov     ebp, panel2_data
862
@@:
936
@@:
863
; get drives list
937
; get drives list
864
        mov     ebx, dirinfo
938
        mov     ebx, dirinfo
865
        mov     [ebx+dirinfo.size-dirinfo], 1
939
        mov     [ebx+dirinfo.size-dirinfo], 1
866
        mov     [ebx+dirinfo.dirdata-dirinfo], driveinfo
940
        mov     [ebx+dirinfo.dirdata-dirinfo], driveinfo
867
        mov     [ebx+dirinfo.name-dirinfo], tmpname
941
        mov     [ebx+dirinfo.name-dirinfo], tmpname
868
        mov     byte [tmpname], '/'
942
        mov     byte [tmpname], '/'
869
        xor     ecx, ecx
943
        xor     ecx, ecx
870
.drive_loop_e:
944
.drive_loop_e:
871
        mov     byte [tmpname+1], 0
945
        mov     byte [tmpname+1], 0
872
        push    70
946
        push    70
873
        pop     eax
947
        pop     eax
874
        int     40h
948
        int     40h
875
        mov     ebx, dirinfo
949
        mov     ebx, dirinfo
876
        test    eax, eax
950
        test    eax, eax
877
        jnz     .drive_loop_e_done
951
        jnz     .drive_loop_e_done
878
        mov     esi, driveinfo+32+40
952
        mov     esi, driveinfo+32+40
879
        mov     edi, tmpname+1
953
        mov     edi, tmpname+1
880
@@:
954
@@:
881
        lodsb
955
        lodsb
882
        stosb
956
        stosb
883
        test    al, al
957
        test    al, al
884
        jnz     @b
958
        jnz     @b
885
        push    [ebx+dirinfo.first-dirinfo]
959
        push    [ebx+dirinfo.first-dirinfo]
886
        and     [ebx+dirinfo.first-dirinfo], 0
960
        and     [ebx+dirinfo.first-dirinfo], 0
887
.drive_loop_i:
961
.drive_loop_i:
888
        push    70
962
        push    70
889
        pop     eax
963
        pop     eax
890
        int     40h
964
        int     40h
891
        mov     ebx, dirinfo
965
        mov     ebx, dirinfo
892
        test    eax, eax
966
        test    eax, eax
893
        jnz     .drive_loop_i_done
967
        jnz     .drive_loop_i_done
894
        mov     eax, 32+8
968
        mov     eax, 32+8
895
        call    xmalloc
969
        call    xmalloc
896
        test    eax, eax
970
        test    eax, eax
897
        jz      .drive_loop_i_done
971
        jz      .drive_loop_i_done
898
        jecxz   @f
972
        jecxz   @f
899
        mov     [ecx], eax
973
        mov     [ecx], eax
900
@@:
974
@@:
901
        and     dword [eax], 0
975
        and     dword [eax], 0
902
        mov     [eax+4], ecx
976
        mov     [eax+4], ecx
903
        mov     ecx, eax
977
        mov     ecx, eax
904
        lea     edi, [eax+8]
978
        lea     edi, [eax+8]
905
        mov     esi, tmpname
979
        mov     esi, tmpname
906
@@:
980
@@:
907
        lodsb
981
        lodsb
908
        test    al, al
982
        test    al, al
909
        jz      @f
983
        jz      @f
910
        stosb
984
        stosb
911
        jmp     @b
985
        jmp     @b
912
@@:
986
@@:
913
        mov     esi, driveinfo+32+40
987
        mov     esi, driveinfo+32+40
914
        mov     al, '/'
988
        mov     al, '/'
915
        stosb
989
        stosb
916
@@:
990
@@:
917
        lodsb
991
        lodsb
918
        stosb
992
        stosb
919
        test    al, al
993
        test    al, al
920
        jnz     @b
994
        jnz     @b
921
        inc     [ebx+dirinfo.first-dirinfo]
995
        inc     [ebx+dirinfo.first-dirinfo]
922
        jmp     .drive_loop_i
996
        jmp     .drive_loop_i
923
.drive_loop_i_done:
997
.drive_loop_i_done:
924
        pop     [ebx+dirinfo.first-dirinfo]
998
        pop     [ebx+dirinfo.first-dirinfo]
925
        inc     [ebx+dirinfo.first-dirinfo]
999
        inc     [ebx+dirinfo.first-dirinfo]
926
        jmp     .drive_loop_e
1000
        jmp     .drive_loop_e
927
.drive_loop_e_done:
1001
.drive_loop_e_done:
928
        and     [ebx+dirinfo.first-dirinfo], 0
1002
        and     [ebx+dirinfo.first-dirinfo], 0
929
        lea     edi, [ebp + panel1_dir - panel1_data]
1003
        lea     edi, [ebp + panel1_dir - panel1_data]
930
.find_cur_drive_loop:
1004
.find_cur_drive_loop:
931
        push    edi
1005
        push    edi
932
        lea     esi, [ecx+8]
1006
        lea     esi, [ecx+8]
933
@@:
1007
@@:
934
        lodsb
1008
        lodsb
935
        test    al, al
1009
        test    al, al
936
        jz      .cur_drive_found
1010
        jz      .cur_drive_found
937
        call    match_symbol
1011
        call    match_symbol
938
        jnz     @f
1012
        jnz     @f
939
        inc     edi
1013
        inc     edi
940
        jmp     @b
1014
        jmp     @b
941
@@:
1015
@@:
942
        cmp     dword [ecx+4], 0
1016
        cmp     dword [ecx+4], 0
943
        jz      @f
1017
        jz      @f
944
        pop     edi
1018
        pop     edi
945
        mov     ecx, [ecx+4]
1019
        mov     ecx, [ecx+4]
946
        jmp     .find_cur_drive_loop
1020
        jmp     .find_cur_drive_loop
947
@@:
1021
@@:
948
.cur_drive_found:
1022
.cur_drive_found:
949
        pop     edi
1023
        pop     edi
950
        push    1
1024
        push    1
951
        push    aDrive
1025
        push    aDrive
952
        push    ecx
1026
        push    ecx
953
        mov     eax, [ebp + panel1_height - panel1_data]
1027
        mov     eax, [ebp + panel1_height - panel1_data]
954
        sub     eax, 2
1028
        sub     eax, 2
955
        jae     @f
1029
        jae     @f
956
        add     eax, 2
1030
        add     eax, 2
957
@@:
1031
@@:
958
        push    eax
1032
        push    eax
959
        push    [ebp + panel1_width - panel1_data]
1033
        push    [ebp + panel1_width - panel1_data]
960
        push    [ebp + panel1_top - panel1_data]
1034
        push    [ebp + panel1_top - panel1_data]
961
        push    [ebp + panel1_left - panel1_data]
1035
        push    [ebp + panel1_left - panel1_data]
962
        call    menu_centered_in
1036
        call    menu_centered_in
963
        cmp     eax, -1
1037
        cmp     eax, -1
964
        jz      .ret2
1038
        jz      .ret2
965
        lea     esi, [eax+8]
1039
        lea     esi, [eax+8]
966
        lea     edi, [ebp + panel1_dir - panel1_data]
1040
        lea     edi, [ebp + panel1_dir - panel1_data]
967
        push    ecx esi edi
1041
        push    ecx esi edi
968
        mov     esi, edi
1042
        mov     esi, edi
969
        mov     edi, prev_dir
1043
        mov     edi, prev_dir
970
        mov     ecx, 1024/4
1044
        mov     ecx, 1024/4
971
        rep     movsd
1045
        rep     movsd
972
        pop     edi esi ecx
1046
        pop     edi esi ecx
973
@@:
1047
@@:
974
        lodsb
1048
        lodsb
975
        stosb
1049
        stosb
976
        test    al, al
1050
        test    al, al
977
        jnz     @b
1051
        jnz     @b
978
@@:
1052
@@:
979
        cmp     dword [ecx+4], 0
1053
        cmp     dword [ecx+4], 0
980
        jz      @f
1054
        jz      @f
981
        mov     ecx, [ecx+4]
1055
        mov     ecx, [ecx+4]
982
        jmp     @b
1056
        jmp     @b
983
@@:
1057
@@:
984
        mov     eax, ecx
1058
        mov     eax, ecx
985
        mov     ecx, [ecx]
1059
        mov     ecx, [ecx]
986
        call    mf_free
1060
        call    mf_free
987
        test    ecx, ecx
1061
        test    ecx, ecx
988
        jnz     @b
1062
        jnz     @b
989
        call    read_folder
1063
        call    read_folder
990
        jmp     .done_redraw
1064
        jmp     .done_redraw
991
.shift_f5:
1065
.shift_f5:
992
        call    get_curfile_folder_entry
1066
        call    get_curfile_folder_entry
993
        lea     esi, [ecx+40]
1067
        lea     esi, [ecx+40]
994
        mov     edi, CopyDestEditBuf
1068
        mov     edi, CopyDestEditBuf
995
        mov     eax, CopyDestEditBuf.length
1069
        mov     eax, CopyDestEditBuf.length
996
        stosd
1070
        stosd
997
        scasd
1071
        scasd
998
        xor     eax, eax
1072
        xor     eax, eax
999
        stosd
1073
        stosd
1000
        mov     edx, edi
1074
        mov     edx, edi
1001
@@:
1075
@@:
1002
        lodsb
1076
        lodsb
1003
        test    al, al
1077
        test    al, al
1004
        jz      .f5_common
1078
        jz      .f5_common
1005
        stosb
1079
        stosb
1006
        jmp     @b
1080
        jmp     @b
1007
.f5:
1081
.f5:
1008
        mov     edi, CopyDestEditBuf
1082
        mov     edi, CopyDestEditBuf
1009
        mov     eax, CopyDestEditBuf.length
1083
        mov     eax, CopyDestEditBuf.length
1010
        stosd
1084
        stosd
1011
        scasd
1085
        scasd
1012
        xor     eax, eax
1086
        xor     eax, eax
1013
        stosd
1087
        stosd
1014
        mov     edx, edi
1088
        mov     edx, edi
1015
        mov     esi, ebp
1089
        mov     esi, ebp
1016
        xor     esi, panel1_data xor panel2_data
1090
        xor     esi, panel1_data xor panel2_data
1017
        add     esi, panel1_dir - panel1_data
1091
        add     esi, panel1_dir - panel1_data
1018
@@:
1092
@@:
1019
        lodsb
1093
        lodsb
1020
        test    al, al
1094
        test    al, al
1021
        jz      @f
1095
        jz      @f
-
 
1096
        cmp     edi, CopyDestEditBuf+12+511
-
 
1097
        jae     .bigfoldername
1022
        stosb
1098
        stosb
1023
        jmp     @b
1099
        jmp     @b
1024
@@:
1100
@@:
1025
        mov     al, '/'
1101
        mov     al, '/'
1026
        stosb
1102
        stosb
1027
.f5_common:
1103
.f5_common:
1028
        mov     byte [edi], 0
1104
        mov     byte [edi], 0
1029
        sub     edi, edx
1105
        sub     edi, edx
1030
        mov     [edx-8], edi
1106
        mov     [edx-8], edi
1031
        mov     edi, CopySourceTextBuf
1107
        mov     edi, CopySourceTextBuf
1032
        mov     esi, aCopy1
1108
        mov     esi, aCopy1
1033
@@:
1109
@@:
1034
        lodsb
1110
        lodsb
1035
        test    al, al
1111
        test    al, al
1036
        jz      @f
1112
        jz      @f
1037
        stosb
1113
        stosb
1038
        jmp     @b
1114
        jmp     @b
1039
@@:
1115
@@:
1040
        call    get_curfile_folder_entry
1116
        call    get_curfile_folder_entry
1041
        lea     esi, [ecx+40]
1117
        lea     esi, [ecx+40]
1042
        lea     eax, [esi+1]
1118
        lea     eax, [esi+1]
1043
@@:
1119
@@:
1044
        inc     esi
1120
        inc     esi
1045
        cmp     byte [esi-1], 0
1121
        cmp     byte [esi-1], 0
1046
        jnz     @b
1122
        jnz     @b
1047
        sub     esi, eax
1123
        sub     esi, eax
1048
        xchg    eax, esi
1124
        xchg    eax, esi
1049
        dec     esi
1125
        dec     esi
1050
        mov     edx, [cur_width]
1126
        mov     edx, [cur_width]
1051
        sub     edx, 50
1127
        sub     edx, 50
1052
        sub     eax, edx
1128
        sub     eax, edx
1053
        jbe     @f
1129
        jbe     @f
1054
        add     esi, eax
1130
        add     esi, eax
1055
        mov     al, '.'
1131
        mov     al, '.'
1056
        stosb
1132
        stosb
1057
        stosb
1133
        stosb
1058
        stosb
1134
        stosb
1059
@@:
1135
@@:
1060
        lodsb
1136
        lodsb
1061
        test    al, al
1137
        test    al, al
1062
        jz      @f
1138
        jz      @f
1063
        stosb
1139
        stosb
1064
        jmp     @b
1140
        jmp     @b
1065
@@:
1141
@@:
1066
        mov     esi, aCopy2
1142
        mov     esi, aCopy2
1067
@@:
1143
@@:
1068
        lodsb
1144
        lodsb
1069
        stosb
1145
        stosb
1070
        test    al, al
1146
        test    al, al
1071
        jnz     @b
1147
        jnz     @b
1072
        mov     ebx, copy_dlgdata
1148
        mov     ebx, copy_dlgdata
1073
        mov     eax, [cur_width]
1149
        mov     eax, [cur_width]
1074
        sub     eax, 12
1150
        sub     eax, 12
1075
        mov     [ebx + dlgtemplate.width], eax
1151
        mov     [ebx + dlgtemplate.width], eax
1076
        dec     eax
1152
        dec     eax
1077
        dec     eax
1153
        dec     eax
1078
        mov     [ebx - copy_dlgdata + copy_dlgdata.width2], eax
1154
        mov     [ebx - copy_dlgdata + copy_dlgdata.width2], eax
1079
        mov     [ebx - copy_dlgdata + copy_dlgdata.width3], eax
1155
        mov     [ebx - copy_dlgdata + copy_dlgdata.width3], eax
1080
        shr     eax, 1
1156
        shr     eax, 1
1081
        dec     eax
1157
        dec     eax
1082
        dec     eax
1158
        dec     eax
1083
        mov     [ebx - copy_dlgdata + copy_dlgdata.copy_x2], eax
1159
        mov     [ebx - copy_dlgdata + copy_dlgdata.copy_x2], eax
1084
        sub     eax, aCopyLength-1
1160
        sub     eax, aCopyLength-1
1085
        mov     [ebx - copy_dlgdata + copy_dlgdata.copy_x1], eax
1161
        mov     [ebx - copy_dlgdata + copy_dlgdata.copy_x1], eax
1086
        add     eax, aCopyLength+3
1162
        add     eax, aCopyLength+3
1087
        mov     [ebx - copy_dlgdata + copy_dlgdata.cnl_x1], eax
1163
        mov     [ebx - copy_dlgdata + copy_dlgdata.cnl_x1], eax
1088
        add     eax, aCancelBLength - 1
1164
        add     eax, aCancelBLength - 1
1089
        mov     [ebx - copy_dlgdata + copy_dlgdata.cnl_x2], eax
1165
        mov     [ebx - copy_dlgdata + copy_dlgdata.cnl_x2], eax
1090
        mov     byte [ebx - copy_dlgdata + copy_dlgdata.flags0], 0xC
1166
        mov     byte [ebx - copy_dlgdata + copy_dlgdata.flags0], 0xC
1091
        and     byte [ebx - copy_dlgdata + copy_dlgdata.flags1], not 4
1167
        and     byte [ebx - copy_dlgdata + copy_dlgdata.flags1], not 4
1092
        and     byte [ebx - copy_dlgdata + copy_dlgdata.flags2], not 4
1168
        and     byte [ebx - copy_dlgdata + copy_dlgdata.flags2], not 4
1093
        push    ebx
1169
        push    ebx
1094
        call    DialogBox
1170
        call    DialogBox
1095
        cmp     eax, copy_dlgdata.copy_btn
1171
        cmp     eax, copy_dlgdata.copy_btn
1096
        jnz     .ret2
1172
        jnz     .ret2
1097
; Š®¯¨à㥬
1173
; Š®¯¨à㥬
1098
        mov     esi, CopyDestEditBuf+12
1174
        mov     esi, CopyDestEditBuf+12
1099
        mov     edi, esi
1175
        mov     edi, esi
1100
        xor     eax, eax
1176
        xor     eax, eax
1101
        or      ecx, -1
1177
        or      ecx, -1
1102
        repnz   scasb
1178
        repnz   scasb
1103
        dec     edi
1179
        dec     edi
1104
        dec     edi
1180
        dec     edi
1105
        cmp     edi, esi
1181
        cmp     edi, esi
1106
        jb      .ret2
1182
        jb      .ret2
1107
        cmp     byte [edi], '/'
1183
        cmp     byte [edi], '/'
1108
        jnz     @f
1184
        jnz     @f
1109
;  «¨ç¨¥/®âáãâá⢨¥ § ª ­ç¨¢ î饣® á«íè  ¢ ¦­® ⮫쪮 ¤«ï ª®¯¨à®¢ ­¨ï ¯ ¯®ª
1185
;  «¨ç¨¥/®âáãâá⢨¥ § ª ­ç¨¢ î饣® á«íè  ¢ ¦­® ⮫쪮 ¤«ï ª®¯¨à®¢ ­¨ï ¯ ¯®ª
1110
        cmp     edi, esi
1186
        cmp     edi, esi
1111
        jz      @f
1187
        jz      @f
1112
        mov     byte [edi], 0
1188
        mov     byte [edi], 0
1113
        dec     edi
1189
        dec     edi
1114
@@:
1190
@@:
1115
; …᫨ ¯ãâì ­¥ ­ ç¨­ ¥âáï á® á«íè , áç¨â ¥¬ ¥£® ®â­®á¨â¥«ì­® ⥪ã饩 ¯ ¯ª¨
1191
; …᫨ ¯ãâì ­¥ ­ ç¨­ ¥âáï á® á«íè , áç¨â ¥¬ ¥£® ®â­®á¨â¥«ì­® ⥪ã饩 ¯ ¯ª¨
1116
        cmp     byte [esi], '/'
1192
        cmp     byte [esi], '/'
1117
        jz      .copy_absolute_path
1193
        jz      .copy_absolute_path
1118
        push    esi
1194
        push    esi
1119
        push    edi
1195
        push    edi
1120
        lea     edi, [ebp + panel1_dir - panel1_data]
1196
        lea     edi, [ebp + panel1_dir - panel1_data]
1121
        or      ecx, -1
1197
        or      ecx, -1
1122
        xor     eax, eax
1198
        xor     eax, eax
1123
        repnz   scasb
1199
        repnz   scasb
1124
        not     ecx
1200
        not     ecx
1125
        pop     edi
1201
        pop     edi
-
 
1202
        push    edi
-
 
1203
        add     edi, ecx
-
 
1204
        cmp     edi, CopyDestEditBuf+12+513
-
 
1205
        pop     edi
-
 
1206
        jb      @f
-
 
1207
        pop     esi
-
 
1208
        jmp     .bigfilename
-
 
1209
@@:
1126
        lea     edx, [edi+2]
1210
        lea     edx, [edi+2]
1127
        sub     edx, esi
1211
        sub     edx, esi
1128
        lea     edi, [edi+ecx+1]
1212
        lea     edi, [edi+ecx+1]
1129
        xchg    ecx, edx
1213
        xchg    ecx, edx
1130
        std
1214
        std
1131
        lea     esi, [esi+ecx-1]
1215
        lea     esi, [esi+ecx-1]
1132
        rep     movsb
1216
        rep     movsb
1133
        cld
1217
        cld
1134
        pop     edi
1218
        pop     edi
1135
        lea     esi, [ebp + panel1_dir - panel1_data]
1219
        lea     esi, [ebp + panel1_dir - panel1_data]
1136
        push    edi
1220
        push    edi
1137
        mov     ecx, edx
1221
        mov     ecx, edx
1138
        rep     movsb
1222
        rep     movsb
1139
        mov     byte [edi-1], '/'
1223
        mov     byte [edi-1], '/'
1140
        pop     esi
1224
        pop     esi
1141
.copy_absolute_path:
1225
.copy_absolute_path:
1142
; ®«ãç ¥¬  âਡãâë ­ §­ ç¥­¨ï
1226
; ®«ãç ¥¬  âਡãâë ­ §­ ç¥­¨ï
1143
        mov     cl, 0x10
1227
        mov     cl, 0x10
1144
        xor     eax, eax
1228
        xor     eax, eax
1145
        mov     edi, esi
1229
        mov     edi, esi
1146
.countslashloop:
1230
.countslashloop:
1147
        cmp     byte [edi], '/'
1231
        cmp     byte [edi], '/'
1148
        jnz     @f
1232
        jnz     @f
1149
        inc     eax
1233
        inc     eax
1150
@@:
1234
@@:
1151
        inc     edi
1235
        inc     edi
1152
        cmp     byte [edi], 0
1236
        cmp     byte [edi], 0
1153
        jnz     .countslashloop
1237
        jnz     .countslashloop
1154
        cmp     eax, 2
1238
        cmp     eax, 2
1155
        jbe     @f
1239
        jbe     @f
1156
        mov     ebx, attrinfo
1240
        mov     ebx, attrinfo
1157
        mov     [attrinfo.attr], 0
1241
        mov     [attrinfo.attr], 0
1158
        mov     [ebx + attrinfo.name - attrinfo], esi
1242
        mov     [ebx + attrinfo.name - attrinfo], esi
1159
        push    70
1243
        push    70
1160
        pop     eax
1244
        pop     eax
1161
        int     0x40
1245
        int     0x40
1162
        mov     cl, byte [attrinfo.attr]
1246
        mov     cl, byte [attrinfo.attr]
1163
@@:
1247
@@:
1164
        test    cl, 0x10
1248
        test    cl, 0x10
1165
        jz      .copyfile
1249
        jz      .copyfile
1166
;  ¬ ¯®¤áã­ã«¨ ª â «®£ ­ §­ ç¥­¨ï, ¤®¯¨á뢠¥¬ ¨¬ï ä ©« 
1250
;  ¬ ¯®¤áã­ã«¨ ª â «®£ ­ §­ ç¥­¨ï, ¤®¯¨á뢠¥¬ ¨¬ï ä ©« 
-
 
1251
        cmp     edi, CopyDestEditBuf+12+513
-
 
1252
        jae     .bigfilename
1167
        mov     al, '/'
1253
        mov     al, '/'
1168
        stosb
1254
        stosb
1169
        push    esi
1255
        push    esi
1170
        call    get_curfile_folder_entry
1256
        call    get_curfile_folder_entry
1171
        lea     esi, [ecx+40]
1257
        lea     esi, [ecx+40]
1172
@@:
1258
@@:
1173
        lodsb
1259
        lodsb
-
 
1260
        cmp     edi, CopyDestEditBuf+12+513
-
 
1261
        jae     .bigfilename2
1174
        stosb
1262
        stosb
1175
        test    al, al
1263
        test    al, al
1176
        jnz     @b
1264
        jnz     @b
1177
        pop     esi
1265
        pop     esi
1178
.copyfile:
1266
.copyfile:
1179
; ˆ¬ï ¨á室­®£® ä ©« 
1267
; ˆ¬ï ¨á室­®£® ä ©« 
1180
        push    esi
1268
        push    esi
1181
        lea     esi, [ebp+panel1_dir-panel1_data]
1269
        lea     esi, [ebp+panel1_dir-panel1_data]
1182
        mov     edi, saved_file_name
1270
        mov     edi, saved_file_name
1183
        push    edi
1271
        push    edi
1184
@@:
1272
@@:
1185
        lodsb
1273
        lodsb
1186
        test    al, al
1274
        test    al, al
1187
        jz      @f
1275
        jz      @f
1188
        stosb
1276
        stosb
1189
        jmp     @b
1277
        jmp     @b
1190
@@:
1278
@@:
1191
        mov     al, '/'
1279
        mov     al, '/'
1192
        stosb
1280
        stosb
1193
        call    get_curfile_folder_entry
1281
        call    get_curfile_folder_entry
1194
        lea     esi, [ecx+40]
1282
        lea     esi, [ecx+40]
1195
@@:
1283
@@:
1196
        lodsb
1284
        lodsb
-
 
1285
        cmp     edi, saved_file_name+1024
-
 
1286
        jae     .bigfilename3
1197
        stosb
1287
        stosb
1198
        test    al, al
1288
        test    al, al
1199
        jnz     @b
1289
        jnz     @b
1200
        pop     esi
1290
        pop     esi
1201
        pop     edi
1291
        pop     edi
1202
; ¥«ì§ï ᪮¯¨à®¢ âì ä ©« ¯®¢¥àå á ¬®£® ᥡï!
1292
; ¥«ì§ï ᪮¯¨à®¢ âì ä ©« ¯®¢¥àå á ¬®£® ᥡï!
1203
        push    esi edi
1293
        push    esi edi
1204
        call    strcmpi
1294
        call    strcmpi
1205
        pop     edi esi
1295
        pop     edi esi
1206
        jz      .ret2
1296
        jz      .copytoself
1207
; ‘®¡á⢥­­®, ª®¯¨à㥬
1297
; ‘®¡á⢥­­®, ª®¯¨à㥬
1208
; esi->source name, edi->destination name
1298
; esi->source name, edi->destination name
1209
        mov     [writeinfo.code], 2
1299
        mov     [writeinfo.code], 2
1210
        mov     [writeinfo.name], edi
1300
        mov     [writeinfo.name], edi
1211
        and     dword [writeinfo.first], 0
1301
        and     dword [writeinfo.first], 0
1212
        and     dword [writeinfo.first+4], 0
1302
        and     dword [writeinfo.first+4], 0
1213
        mov     [writeinfo.data], copy_buffer
1303
        mov     [writeinfo.data], copy_buffer
1214
        mov     ebx, readinfo
1304
        mov     ebx, readinfo
1215
        and     dword [ebx+readinfo.first-readinfo], 0
1305
        and     dword [ebx+readinfo.first-readinfo], 0
1216
        and     dword [ebx+readinfo.first+4-readinfo], 0
1306
        and     dword [ebx+readinfo.first+4-readinfo], 0
1217
        mov     [ebx+readinfo.size-readinfo], copy_buffer_size
1307
        mov     [ebx+readinfo.size-readinfo], copy_buffer_size
1218
        mov     [ebx+readinfo.data-readinfo], copy_buffer
1308
        mov     [ebx+readinfo.data-readinfo], copy_buffer
1219
        mov     [ebx+readinfo.name-readinfo], esi
1309
        mov     [ebx+readinfo.name-readinfo], esi
1220
.copyloop:
1310
.copyloop:
1221
        mov     ebx, readinfo
1311
        mov     ebx, readinfo
1222
        push    70
1312
        push    70
1223
        pop     eax
1313
        pop     eax
1224
        int     0x40
1314
        int     0x40
-
 
1315
        test    eax, eax
-
 
1316
        jz      .copyreadok
1225
        cmp     ebx, -1
1317
        cmp     eax, 6
-
 
1318
        jz      .copyreadok
-
 
1319
        push    esi
-
 
1320
        push    aCannotReadFile
-
 
1321
        call    get_error_msg
-
 
1322
        push    eax
-
 
1323
        mov     eax, esp
-
 
1324
        push    RetryOrCancelBtn
-
 
1325
        push    2
-
 
1326
        push    eax
-
 
1327
        push    3
-
 
1328
        push    -1
-
 
1329
        push    -1
-
 
1330
        push    aError
-
 
1331
        call    SayErr
-
 
1332
        add     esp, 3*4
-
 
1333
        test    eax, eax
1226
        jz      .copydone
1334
        jz      .copyloop
-
 
1335
        jmp     .copyfailed
-
 
1336
.copyreadok:
1227
        test    ebx, ebx
1337
        test    ebx, ebx
1228
        jz      .copydone
1338
        jz      .copydone
1229
        add     dword [readinfo.first], ebx
1339
        add     dword [readinfo.first], ebx
1230
        adc     dword [readinfo.first+4], 0
1340
        adc     dword [readinfo.first+4], 0
1231
        mov     [writeinfo.size], ebx
1341
        mov     [writeinfo.size], ebx
-
 
1342
.copywrite:
1232
        mov     ebx, writeinfo
1343
        mov     ebx, writeinfo
1233
        push    70
1344
        push    70
1234
        pop     eax
1345
        pop     eax
1235
        int     0x40
1346
        int     0x40
-
 
1347
        test    eax, eax
-
 
1348
        jz      .copywriteok
-
 
1349
        push    edi
-
 
1350
        push    aCannotWriteFile
-
 
1351
        call    get_error_msg
-
 
1352
        push    eax
-
 
1353
        mov     eax, esp
-
 
1354
        push    RetryOrCancelBtn
-
 
1355
        push    2
-
 
1356
        push    eax
-
 
1357
        push    3
-
 
1358
        push    -1
-
 
1359
        push    -1
-
 
1360
        push    aError
-
 
1361
        call    SayErr
-
 
1362
        add     esp, 3*4
-
 
1363
        test    eax, eax
-
 
1364
        jz      .copywrite
-
 
1365
        jmp     .copyfailed
-
 
1366
.copywriteok:
1236
        mov     ecx, [writeinfo.size]
1367
        mov     ecx, [writeinfo.size]
1237
        add     dword [writeinfo.first], ecx
1368
        add     dword [writeinfo.first], ecx
1238
        adc     dword [writeinfo.first+4], 0
1369
        adc     dword [writeinfo.first+4], 0
1239
        mov     [writeinfo.code], 3
1370
        mov     [writeinfo.code], 3
1240
        cmp     ecx, copy_buffer_size
1371
        cmp     ecx, copy_buffer_size
1241
        jz      .copyloop
1372
        jz      .copyloop
1242
.copydone:
1373
.copydone:
1243
        push    ebp
1374
        push    ebp
1244
        call    .ctrl_r
1375
        call    .ctrl_r
1245
        pop     ebp
1376
        pop     ebp
1246
        xor     ebp, panel1_data xor panel2_data
1377
        xor     ebp, panel1_data xor panel2_data
1247
        jmp     .ctrl_r
1378
        jmp     .ctrl_r
-
 
1379
.copyfailed:
-
 
1380
        cmp     [bConfirmDeleteIncomplete], 0
-
 
1381
        jz      @f
-
 
1382
        cmp     [writeinfo.code], 2
-
 
1383
        jz      .copydone
-
 
1384
        push    aIncompleteFile
-
 
1385
        mov     eax, esp
-
 
1386
        push    DeleteOrKeepBtn
-
 
1387
        push    2
-
 
1388
        push    eax
-
 
1389
        push    1
-
 
1390
        push    -1
-
 
1391
        push    -1
-
 
1392
        push    aCopyCaption
-
 
1393
        call    SayErr
-
 
1394
        add     esp, 4
-
 
1395
        test    eax, eax
-
 
1396
        jnz     .copydone
-
 
1397
@@:
-
 
1398
        mov     ebx, delinfo
-
 
1399
        push    dword [ebx+21]
-
 
1400
        mov     dword [ebx+21], edi
-
 
1401
        push    70
-
 
1402
        pop     eax
-
 
1403
        int     0x40
-
 
1404
; ignore errors
-
 
1405
        pop     dword [delinfo+21]
-
 
1406
        jmp     .copydone
1248
 
1407
 
1249
.f3:
1408
.f3:
1250
        call    view_file
1409
        call    view_file
1251
.ret2:
1410
.ret2:
1252
        ret
1411
        ret
1253
.f8:
1412
.f8:
1254
        call    get_curfile_folder_entry
1413
        call    get_curfile_folder_entry
1255
        cmp     [bConfirmDelete], 0
1414
        cmp     [bConfirmDelete], 0
1256
        jz      .f8_allowed
1415
        jz      .f8_allowed
1257
        mov     ebx, f8_confirm_dlgdata
1416
        mov     ebx, f8_confirm_dlgdata
1258
        mov     esi, aConfirmDeleteText
1417
        mov     esi, aConfirmDeleteText
1259
        mov     edi, aConfirmDeleteTextBuf
1418
        mov     edi, aConfirmDeleteTextBuf
1260
@@:
1419
@@:
1261
        lodsb
1420
        lodsb
1262
        stosb
1421
        stosb
1263
        test    al, al
1422
        test    al, al
1264
        jnz     @b
1423
        jnz     @b
1265
        dec     edi
1424
        dec     edi
1266
        mov     esi, aDeleteFolder
1425
        mov     esi, aDeleteFolder
1267
        test    byte [ecx], 10h
1426
        test    byte [ecx], 10h
1268
        jnz     @f
1427
        jnz     @f
1269
        mov     esi, aDeleteFile
1428
        mov     esi, aDeleteFile
1270
@@:
1429
@@:
1271
        lodsb
1430
        lodsb
1272
        stosb
1431
        stosb
1273
        test    al, al
1432
        test    al, al
1274
        jnz     @b
1433
        jnz     @b
1275
        lea     esi, [ecx+40]
1434
        lea     esi, [ecx+40]
1276
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.name], esi
1435
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.name], esi
1277
        or      eax, -1
1436
        or      eax, -1
1278
@@:
1437
@@:
1279
        inc     eax
1438
        inc     eax
1280
        cmp     byte [eax+esi], 0
1439
        cmp     byte [eax+esi], 0
1281
        jnz     @b
1440
        jnz     @b
1282
        sub     edi, aConfirmDeleteTextBuf+1
1441
        sub     edi, aConfirmDeleteTextBuf+1
1283
        cmp     eax, edi
1442
        cmp     eax, edi
1284
        jae     @f
1443
        jae     @f
1285
        mov     eax, edi
1444
        mov     eax, edi
1286
@@:
1445
@@:
1287
        inc     eax
1446
        inc     eax
1288
        inc     eax
1447
        inc     eax
1289
        mov     edx, [cur_width]
1448
        mov     edx, [cur_width]
1290
        sub     edx, 8
1449
        sub     edx, 8
1291
        cmp     eax, edx
1450
        cmp     eax, edx
1292
        jbe     @f
1451
        jbe     @f
1293
        mov     eax, edx
1452
        mov     eax, edx
1294
@@:
1453
@@:
1295
        mov     [ebx + dlgtemplate.width], eax
1454
        mov     [ebx + dlgtemplate.width], eax
1296
        dec     eax
1455
        dec     eax
1297
        dec     eax
1456
        dec     eax
1298
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.width2], eax
1457
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.width2], eax
1299
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.width3], eax
1458
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.width3], eax
1300
        shr     eax, 1
1459
        shr     eax, 1
1301
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.del_x2], eax
1460
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.del_x2], eax
1302
        sub     eax, aDeleteLength-1
1461
        sub     eax, aDeleteLength-1
1303
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.del_x1], eax
1462
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.del_x1], eax
1304
        add     eax, aDeleteLength
1463
        add     eax, aDeleteLength
1305
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.cnl_x1], eax
1464
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.cnl_x1], eax
1306
        add     eax, aCancelLength - 1
1465
        add     eax, aCancelLength - 1
1307
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.cnl_x2], eax
1466
        mov     [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.cnl_x2], eax
1308
        or      byte [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.flags1], 4
1467
        or      byte [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.flags1], 4
1309
        and     byte [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.flags2], not 4
1468
        and     byte [ebx - f8_confirm_dlgdata + f8_confirm_dlgdata.flags2], not 4
1310
        push    ebx
1469
        push    ebx
1311
        call    DialogBox
1470
        call    DialogBox
1312
        cmp     eax, f8_confirm_dlgdata.del_btn
1471
        cmp     eax, f8_confirm_dlgdata.del_btn
1313
        jnz     .ret2
1472
        jnz     .ret2
1314
.f8_allowed:
1473
.f8_allowed:
1315
        lea     esi, [ebp + panel1_dir - panel1_data]
1474
        lea     esi, [ebp + panel1_dir - panel1_data]
1316
        mov     edi, execdata
1475
        mov     edi, execdata
1317
@@:
1476
@@:
1318
        lodsb
1477
        lodsb
1319
        test    al, al
1478
        test    al, al
1320
        jz      @f
1479
        jz      @f
1321
        stosb
1480
        stosb
1322
        jmp     @b
1481
        jmp     @b
1323
@@:
1482
@@:
1324
        lea     esi, [ecx+40]
1483
        lea     esi, [ecx+40]
1325
        mov     al, '/'
1484
        mov     al, '/'
1326
        stosb
1485
        stosb
1327
@@:
1486
@@:
1328
        lodsb
1487
        lodsb
-
 
1488
        cmp     edi, execdataend
-
 
1489
        jae     .bigfilename
1329
        stosb
1490
        stosb
1330
        test    al, al
1491
        test    al, al
1331
        jnz     @b
1492
        jnz     @b
-
 
1493
.retrydel:
1332
        push    70
1494
        push    70
1333
        pop     eax
1495
        pop     eax
1334
        mov     ebx, delinfo
1496
        mov     ebx, delinfo
1335
        int     0x40
1497
        int     0x40
-
 
1498
        test    eax, eax
-
 
1499
        jz      .ctrl_r
-
 
1500
        push    execdata
-
 
1501
        push    aCannotDeleteFolder
-
 
1502
        call    get_curfile_folder_entry
-
 
1503
        test    byte [ecx], 10h
-
 
1504
        jnz     @f
-
 
1505
        mov     dword [esp], aCannotDeleteFile
-
 
1506
@@:
-
 
1507
        call    get_error_msg
-
 
1508
        push    eax
-
 
1509
        mov     eax, esp
-
 
1510
        push    RetryOrCancelBtn
-
 
1511
        push    2
-
 
1512
        push    eax
-
 
1513
        push    3
-
 
1514
        push    -1
-
 
1515
        push    -1
-
 
1516
        push    aError
-
 
1517
        call    SayErr
-
 
1518
        add     esp, 3*4
-
 
1519
        test    eax, eax
-
 
1520
        jz      .retrydel
1336
.ctrl_r:
1521
.ctrl_r:
1337
; Rescan panel
1522
; Rescan panel
1338
;       call    read_folder
1523
;       call    read_folder
1339
;       jmp     .done_redraw
1524
;       jmp     .done_redraw
1340
        mov     eax, [ebp + panel1_index - panel1_data]
1525
        mov     eax, [ebp + panel1_index - panel1_data]
1341
        push    eax
1526
        push    eax
1342
        call    get_curfile_name
1527
        call    get_curfile_name
1343
        mov     esi, ecx
1528
        mov     esi, ecx
1344
        mov     edi, saved_file_name
1529
        mov     edi, saved_file_name
1345
@@:
1530
@@:
1346
        lodsb
1531
        lodsb
1347
        stosb
1532
        stosb
1348
        test    al, al
1533
        test    al, al
1349
        jnz     @b
1534
        jnz     @b
1350
        push    [ebp + panel1_start - panel1_data]
1535
        push    [ebp + panel1_start - panel1_data]
1351
        call    read_folder
1536
        call    read_folder
1352
        pop     [ebp + panel1_start - panel1_data]
1537
        pop     [ebp + panel1_start - panel1_data]
1353
        pop     [ebp + panel1_index - panel1_data]
1538
        pop     [ebp + panel1_index - panel1_data]
1354
        or      eax, -1
1539
        or      eax, -1
1355
@@:
1540
@@:
1356
        inc     eax
1541
        inc     eax
1357
        cmp     eax, [ebp + panel1_numfiles - panel1_data]
1542
        cmp     eax, [ebp + panel1_numfiles - panel1_data]
1358
        jae     .ctrl_r.notfound
1543
        jae     .ctrl_r.notfound
1359
        mov     esi, [ebp + panel1_nfa - panel1_data]
-
 
1360
        mov     ecx, [ebp + panel1_files - panel1_data]
1544
        mov     ecx, [ebp + panel1_files - panel1_data]
1361
        lea     esi, [ecx+esi*4+32+40]
1545
        mov     esi, [ecx+eax*4]
1362
        add     esi, [ecx+eax*4]
1546
        add     esi, 40
1363
        mov     edi, saved_file_name
1547
        mov     edi, saved_file_name
1364
        call    strcmpi
1548
        call    strcmpi
1365
        jnz     @b
1549
        jnz     @b
1366
.ctrl_r.found:
1550
.ctrl_r.found:
1367
        mov     [ebp + panel1_index - panel1_data], eax
1551
        mov     [ebp + panel1_index - panel1_data], eax
1368
.ctrl_r.notfound:
1552
.ctrl_r.notfound:
1369
        mov     eax, [ebp + panel1_numfiles - panel1_data]
1553
        mov     eax, [ebp + panel1_numfiles - panel1_data]
1370
        dec     eax
1554
        dec     eax
1371
        cmp     [ebp + panel1_index - panel1_data], eax
1555
        cmp     [ebp + panel1_index - panel1_data], eax
1372
        jbe     @f
1556
        jbe     @f
1373
        mov     [ebp + panel1_index - panel1_data], eax
1557
        mov     [ebp + panel1_index - panel1_data], eax
1374
@@:
1558
@@:
1375
        mov     eax, [ebp + panel1_index - panel1_data]
1559
        mov     eax, [ebp + panel1_index - panel1_data]
1376
        cmp     [ebp + panel1_start - panel1_data], eax
1560
        cmp     [ebp + panel1_start - panel1_data], eax
1377
        jbe     @f
1561
        jbe     @f
1378
        mov     [ebp + panel1_start - panel1_data], eax
1562
        mov     [ebp + panel1_start - panel1_data], eax
1379
@@:
1563
@@:
1380
        inc     eax
1564
        inc     eax
1381
        sub     eax, [ebp + panel1_colst - panel1_data]
1565
        sub     eax, [ebp + panel1_colst - panel1_data]
1382
        jae     @f
1566
        jae     @f
1383
        xor     eax, eax
1567
        xor     eax, eax
1384
@@:
1568
@@:
1385
        cmp     [ebp + panel1_start - panel1_data], eax
1569
        cmp     [ebp + panel1_start - panel1_data], eax
1386
        jae     @f
1570
        jae     @f
1387
        mov     [ebp + panel1_start - panel1_data], eax
1571
        mov     [ebp + panel1_start - panel1_data], eax
1388
@@:
1572
@@:
1389
        mov     eax, [ebp + panel1_numfiles - panel1_data]
1573
        mov     eax, [ebp + panel1_numfiles - panel1_data]
1390
        sub     eax, [ebp + panel1_colst - panel1_data]
1574
        sub     eax, [ebp + panel1_colst - panel1_data]
1391
        jbe     @f
1575
        jbe     @f
1392
        cmp     [ebp + panel1_start - panel1_data], eax
1576
        cmp     [ebp + panel1_start - panel1_data], eax
1393
        jbe     @f
1577
        jbe     @f
1394
        mov     [ebp + panel1_start - panel1_data], eax
1578
        mov     [ebp + panel1_start - panel1_data], eax
1395
@@:
1579
@@:
1396
        jmp     .done_redraw
1580
        jmp     .done_redraw
1397
.menu:
1581
.menu:
1398
; display context menu
1582
; display context menu
1399
; ignore folders
1583
; ignore folders
1400
        call    get_curfile_folder_entry
1584
        call    get_curfile_folder_entry
1401
        test    byte [ecx], 10h
1585
        test    byte [ecx], 10h
1402
        jz      @f
1586
        jz      @f
1403
.menuret:
1587
.menuret:
1404
        ret
1588
        ret
1405
@@:
1589
@@:
1406
        call    find_extension
1590
        call    find_extension
1407
        jc      .menuret
1591
        jc      .menuret
1408
        jnz     .menuret
1592
        jnz     .menuret
1409
; known extension
1593
; known extension
1410
        mov     ebx, [edi+8]
1594
        mov     ebx, [edi+8]
1411
        test    ebx, ebx
1595
        test    ebx, ebx
1412
        jz      .menuret
1596
        jz      .menuret
1413
        mov     ecx, esi
1597
        mov     ecx, esi
1414
@@:
1598
@@:
1415
        inc     ecx
1599
        inc     ecx
1416
        cmp     byte [ecx-1], 0
1600
        cmp     byte [ecx-1], 0
1417
        jnz     @b
1601
        jnz     @b
1418
        sub     ecx, esi        ; ecx = ¤«¨­  ¨¬¥­¨ ä ©« +1 = ¤«¨­  § £®«®¢ª +1
1602
        sub     ecx, esi        ; ecx = ¤«¨­  ¨¬¥­¨ ä ©« +1 = ¤«¨­  § £®«®¢ª +1
1419
        cmp     ecx, 15
1603
        cmp     ecx, 15
1420
        jb      @f
1604
        jb      @f
1421
        mov     cl, 15
1605
        mov     cl, 15
1422
@@:
1606
@@:
1423
        xor     edx, edx
1607
        xor     edx, edx
1424
.menucreateloop:
1608
.menucreateloop:
1425
        mov     eax, [ebx]
1609
        mov     eax, [ebx]
1426
        test    eax, eax
1610
        test    eax, eax
1427
        jz      .menucreated
1611
        jz      .menucreated
1428
@@:
1612
@@:
1429
        inc     eax
1613
        inc     eax
1430
        cmp     byte [eax-1], 0
1614
        cmp     byte [eax-1], 0
1431
        jnz     @b
1615
        jnz     @b
1432
        sub     eax, [ebx]
1616
        sub     eax, [ebx]
1433
        cmp     eax, ecx
1617
        cmp     eax, ecx
1434
        ja      @f
1618
        ja      @f
1435
        mov     eax, ecx
1619
        mov     eax, ecx
1436
@@:
1620
@@:
1437
        add     eax, 12
1621
        add     eax, 12
1438
        call    xmalloc
1622
        call    xmalloc
1439
        test    eax, eax
1623
        test    eax, eax
1440
        jz      .menucreated
1624
        jz      .menucreated
1441
        add     eax, 4
1625
        add     eax, 4
1442
        test    edx, edx
1626
        test    edx, edx
1443
        jz      @f
1627
        jz      @f
1444
        mov     [edx], eax
1628
        mov     [edx], eax
1445
@@:
1629
@@:
1446
        mov     [eax+4], edx
1630
        mov     [eax+4], edx
1447
        mov     edx, eax
1631
        mov     edx, eax
1448
        push    esi
1632
        push    esi
1449
        mov     esi, [ebx+4]
1633
        mov     esi, [ebx+4]
1450
        mov     [eax-4], esi
1634
        mov     [eax-4], esi
1451
        mov     esi, [ebx]
1635
        mov     esi, [ebx]
1452
        lea     edi, [eax+8]
1636
        lea     edi, [eax+8]
1453
@@:
1637
@@:
1454
        lodsb
1638
        lodsb
1455
        stosb
1639
        stosb
1456
        test    al, al
1640
        test    al, al
1457
        jnz     @b
1641
        jnz     @b
1458
        sub     esi, [ebx]
1642
        sub     esi, [ebx]
1459
        sub     esi, ecx
1643
        sub     esi, ecx
1460
        jae     .menunoadd
1644
        jae     .menunoadd
1461
        neg     esi
1645
        neg     esi
1462
@@:
1646
@@:
1463
        mov     byte [edi-1], ' '
1647
        mov     byte [edi-1], ' '
1464
        stosb
1648
        stosb
1465
        dec     esi
1649
        dec     esi
1466
        jnz     @b
1650
        jnz     @b
1467
.menunoadd:
1651
.menunoadd:
1468
        pop     esi
1652
        pop     esi
1469
        add     ebx, 8
1653
        add     ebx, 8
1470
        jmp     .menucreateloop
1654
        jmp     .menucreateloop
1471
.menucreated:
1655
.menucreated:
1472
        test    edx, edx
1656
        test    edx, edx
1473
        jz      .menuret
1657
        jz      .menuret
1474
        and     dword [edx], 0
1658
        and     dword [edx], 0
1475
@@:
1659
@@:
1476
        cmp     dword [edx+4], 0
1660
        cmp     dword [edx+4], 0
1477
        jz      @f
1661
        jz      @f
1478
        mov     edx, [edx+4]
1662
        mov     edx, [edx+4]
1479
        jmp     @b
1663
        jmp     @b
1480
@@:
1664
@@:
1481
        push    1
1665
        push    1
1482
        push    esi
1666
        push    esi
1483
        push    edx
1667
        push    edx
1484
        call    menu
1668
        call    menu
1485
        cmp     eax, -1
1669
        cmp     eax, -1
1486
        jz      .menuret
1670
        jz      .menuret
1487
        push    dword [eax-4]
1671
        push    dword [eax-4]
1488
@@:
1672
@@:
1489
        test    edx, edx
1673
        test    edx, edx
1490
        jz      @f
1674
        jz      @f
1491
        lea     eax, [edx-4]
1675
        lea     eax, [edx-4]
1492
        mov     edx, [edx]
1676
        mov     edx, [edx]
1493
        call    mf_free
1677
        call    mf_free
1494
        jmp     @b
1678
        jmp     @b
1495
@@:
1679
@@:
1496
        pop     eax
1680
        pop     eax
1497
        call    get_curfile_folder_entry
1681
        call    get_curfile_folder_entry
1498
        jmp     .run_association2
1682
        jmp     .run_association2
-
 
1683
.f7:
-
 
1684
        mov     dword [CopyDestEditBuf], CopyDestEditBuf.length
-
 
1685
        and     dword [CopyDestEditBuf+4], 0
-
 
1686
        and     dword [CopyDestEditBuf+8], 0
-
 
1687
        mov     byte [CopyDestEditBuf+12], 0
-
 
1688
        mov     ebx, mkdir_dlgdata
-
 
1689
        mov     eax, [cur_width]
-
 
1690
        sub     eax, 12
-
 
1691
        mov     [ebx + dlgtemplate.width], eax
-
 
1692
        dec     eax
-
 
1693
        dec     eax
-
 
1694
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.width2], eax
-
 
1695
        shr     eax, 1
-
 
1696
        dec     eax
-
 
1697
        dec     eax
-
 
1698
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.cont_x2], eax
-
 
1699
        sub     eax, a_ContinueLength-1
-
 
1700
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.cont_x1], eax
-
 
1701
        add     eax, a_ContinueLength+3
-
 
1702
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.cnl_x1], eax
-
 
1703
        add     eax, aCancelBLength - 1
-
 
1704
        mov     [ebx - mkdir_dlgdata + mkdir_dlgdata.cnl_x2], eax
-
 
1705
        mov     byte [ebx - mkdir_dlgdata + mkdir_dlgdata.flags0], 0xC
-
 
1706
        and     byte [ebx - mkdir_dlgdata + mkdir_dlgdata.flags1], not 4
-
 
1707
        and     byte [ebx - mkdir_dlgdata + mkdir_dlgdata.flags2], not 4
-
 
1708
        push    ebx
-
 
1709
        call    DialogBox
-
 
1710
        cmp     eax, mkdir_dlgdata.cont_btn
-
 
1711
        jnz     .ret2
-
 
1712
        mov     esi, CopyDestEditBuf+12
-
 
1713
        cmp     byte [esi], 0
-
 
1714
        jz      .ret2
-
 
1715
        cmp     byte [esi], '/'
-
 
1716
        jz      .mkdir_absolute_path
-
 
1717
        push    esi
-
 
1718
        lea     edi, [ebp + panel1_dir - panel1_data]
-
 
1719
        or      ecx, -1
-
 
1720
        xor     eax, eax
-
 
1721
        repnz   scasb
-
 
1722
        not     ecx
-
 
1723
        mov     edi, esi
-
 
1724
@@:
-
 
1725
        cmp     byte [edi+1], 0
-
 
1726
        jz      @f
-
 
1727
        inc     edi
-
 
1728
        jmp     @b
-
 
1729
@@:
-
 
1730
        push    edi
-
 
1731
        add     edi, ecx
-
 
1732
        cmp     edi, CopyDestEditBuf+12+513
-
 
1733
        pop     edi
-
 
1734
        jb      @f
-
 
1735
        pop     esi
-
 
1736
        jmp     .bigfilename
-
 
1737
@@:
-
 
1738
        lea     edx, [edi+2]
-
 
1739
        sub     edx, esi
-
 
1740
        lea     edi, [edi+ecx+1]
-
 
1741
        xchg    ecx, edx
-
 
1742
        std
-
 
1743
        lea     esi, [esi+ecx-1]
-
 
1744
        rep     movsb
-
 
1745
        cld
-
 
1746
        pop     edi
-
 
1747
        lea     esi, [ebp + panel1_dir - panel1_data]
-
 
1748
        push    edi
-
 
1749
        mov     ecx, edx
-
 
1750
        rep     movsb
-
 
1751
        mov     byte [edi-1], '/'
-
 
1752
        pop     esi
-
 
1753
.mkdir_absolute_path:
-
 
1754
.mkdir_retry:
-
 
1755
        push    70
-
 
1756
        pop     eax
-
 
1757
        mov     ebx, mkdirinfo
-
 
1758
        int     0x40
-
 
1759
        test    eax, eax
-
 
1760
        jz      @f
-
 
1761
        push    CopyDestEditBuf+12
-
 
1762
        push    aCannotMakeFolder
-
 
1763
        call    get_error_msg
-
 
1764
        push    eax
-
 
1765
        mov     eax, esp
-
 
1766
        push    RetryOrCancelBtn
-
 
1767
        push    2
-
 
1768
        push    eax
-
 
1769
        push    3
-
 
1770
        push    -1
-
 
1771
        push    -1
-
 
1772
        push    aError
-
 
1773
        call    SayErr
-
 
1774
        add     esp, 3*4
-
 
1775
        test    eax, eax
-
 
1776
        jz      .mkdir_retry
-
 
1777
@@:
-
 
1778
        jmp     .copydone
1499
 
1779
 
1500
panels_OnRedraw:
1780
panels_OnRedraw:
1501
        call    draw_cmdbar
1781
        call    draw_cmdbar
1502
        mov     ebp, panel1_data
1782
        mov     ebp, panel1_data
1503
        call    draw_panel
1783
        call    draw_panel
1504
        mov     ebp, panel2_data
1784
        mov     ebp, panel2_data
1505
        call    draw_panel
1785
        call    draw_panel
1506
        ret
1786
        ret
1507
 
1787
 
1508
init_console:
1788
init_console:
1509
        mov     eax, [console_data_ptr]
1789
        mov     eax, [console_data_ptr]
1510
        call    mf_free
1790
        call    mf_free
1511
        mov     eax, [cur_width]
1791
        mov     eax, [cur_width]
1512
        mul     [cur_height]
1792
        mul     [cur_height]
1513
        mov     ecx, eax
1793
        mov     ecx, eax
1514
        add     eax, eax
1794
        add     eax, eax
1515
        add     eax, eax
1795
        add     eax, eax
1516
        call    mf_alloc
1796
        call    mf_alloc
1517
        test    eax, eax
1797
        test    eax, eax
1518
        jz      exit
1798
        jz      exit
1519
        mov     [console_data_ptr], eax
1799
        mov     [console_data_ptr], eax
1520
        mov     edi, eax
1800
        mov     edi, eax
1521
        mov     ax, 0720h
1801
        mov     ax, 0720h
1522
        rep     stosw
1802
        rep     stosw
1523
        mov     [panel1_left], ecx
1803
        mov     [panel1_left], ecx
1524
        mov     [panel1_top], ecx
1804
        mov     [panel1_top], ecx
1525
        mov     [panel2_top], ecx
1805
        mov     [panel2_top], ecx
1526
        mov     eax, [cur_width]
1806
        mov     eax, [cur_width]
1527
        inc     eax
1807
        inc     eax
1528
        shr     eax, 1
1808
        shr     eax, 1
1529
        mov     [panel1_width], eax
1809
        mov     [panel1_width], eax
1530
        mov     [panel2_left], eax
1810
        mov     [panel2_left], eax
1531
        sub     eax, [cur_width]
1811
        sub     eax, [cur_width]
1532
        neg     eax
1812
        neg     eax
1533
        mov     [panel2_width], eax
1813
        mov     [panel2_width], eax
1534
        mov     eax, [cur_height]
1814
        mov     eax, [cur_height]
1535
        dec     eax
1815
        dec     eax
1536
        dec     eax
1816
        dec     eax
1537
        mov     [panel1_height], eax
1817
        mov     [panel1_height], eax
1538
        mov     [panel2_height], eax
1818
        mov     [panel2_height], eax
1539
        ret
1819
        ret
1540
 
1820
 
1541
get_curfile_folder_entry:
1821
get_curfile_folder_entry:
1542
        push    eax
-
 
1543
        mov     ecx, [ebp + panel1_index - panel1_data]
1822
        mov     ecx, [ebp + panel1_index - panel1_data]
1544
        mov     eax, [ebp + panel1_files - panel1_data]
-
 
1545
        mov     ecx, [eax+ecx*4]
1823
        shl     ecx, 2
1546
        mov     eax, [ebp + panel1_nfa - panel1_data]
-
 
1547
        lea     ecx, [ecx+eax*4+32]
-
 
1548
        add     ecx, [ebp + panel1_files - panel1_data]
1824
        add     ecx, [ebp + panel1_files - panel1_data]
1549
        pop     eax
1825
        mov     ecx, [ecx]
1550
        ret
1826
        ret
1551
get_curfile_name:
1827
get_curfile_name:
1552
        call    get_curfile_folder_entry
1828
        call    get_curfile_folder_entry
1553
        add     ecx, 40
1829
        add     ecx, 40
1554
        ret
1830
        ret
1555
 
1831
 
1556
panels_getname:
1832
panels_getname:
1557
if lang eq ru
1833
if lang eq ru
1558
        mov     eax, ' ­¥'
1834
        mov     eax, ' ­¥'
1559
        stosd
1835
        stosd
1560
        mov     eax, 'Ǭ  '
1836
        mov     eax, 'Ǭ  '
1561
        stosd
1837
        stosd
1562
        mov     eax, '    '
1838
        mov     eax, '    '
1563
        stosd
1839
        stosd
1564
        stosb
1840
        stosb
1565
else
1841
else
1566
        mov     eax, 'Pane'
1842
        mov     eax, 'Pane'
1567
        stosd
1843
        stosd
1568
        mov     eax, 'ls  '
1844
        mov     eax, 'ls  '
1569
        stosd
1845
        stosd
1570
        mov     eax, '    '
1846
        mov     eax, '    '
1571
        stosd
1847
        stosd
1572
        stosb
1848
        stosb
1573
end if
1849
end if
1574
        sub     ecx, 13
1850
        sub     ecx, 13
1575
        mov     ebp, [active_panel]
1851
        mov     ebp, [active_panel]
1576
        lea     esi, [ebp + panel1_dir - panel1_data]
1852
        lea     esi, [ebp + panel1_dir - panel1_data]
1577
        push    3
1853
        push    3
1578
        pop     edx
1854
        pop     edx
1579
@@:
1855
@@:
1580
        lodsb
1856
        lodsb
1581
        stosb
1857
        stosb
1582
        dec     ecx
1858
        dec     ecx
1583
        test    al, al
1859
        test    al, al
1584
        jz      @f
1860
        jz      @f
1585
        cmp     al, '/'
1861
        cmp     al, '/'
1586
        jnz     @b
1862
        jnz     @b
1587
        dec     edx
1863
        dec     edx
1588
        jnz     @b
1864
        jnz     @b
1589
@@:
1865
@@:
1590
        test    al, al
1866
        test    al, al
1591
        jnz     @f
1867
        jnz     @f
1592
        dec     esi
1868
        dec     esi
1593
        dec     edi
1869
        dec     edi
1594
@@:
1870
@@:
1595
        push    esi
1871
        push    esi
1596
@@:
1872
@@:
1597
        lodsb
1873
        lodsb
1598
        test    al, al
1874
        test    al, al
1599
        jnz     @b
1875
        jnz     @b
1600
        dec     esi
1876
        dec     esi
1601
        mov     ebx, esi
1877
        mov     ebx, esi
1602
        sub     ebx, [esp]
1878
        sub     ebx, [esp]
1603
        dec     esi
1879
        dec     esi
1604
        push    esi
1880
        push    esi
1605
        mov     edx, [ebp + panel1_files - panel1_data]
-
 
1606
        mov     esi, [ebp + panel1_index - panel1_data]
1881
        mov     esi, [ebp + panel1_index - panel1_data]
1607
        mov     esi, [edx+esi*4]
-
 
1608
        add     esi, edx
1882
        shl     esi, 2
1609
        mov     edx, [ebp + panel1_nfa - panel1_data]
1883
        add     esi, [ebp + panel1_files - panel1_data]
1610
        lea     esi, [esi+edx*4+32+40]
1884
        mov     esi, [esi]
-
 
1885
        add     esi, 40
1611
        push    esi
1886
        push    esi
1612
@@:
1887
@@:
1613
        lodsb
1888
        lodsb
1614
        test    al, al
1889
        test    al, al
1615
        jnz     @b
1890
        jnz     @b
1616
        add     ebx, esi
1891
        add     ebx, esi
1617
        sub     ebx, [esp]
1892
        sub     ebx, [esp]
1618
        dec     esi
1893
        dec     esi
1619
        cmp     ebx, ecx
1894
        cmp     ebx, ecx
1620
        jbe     @f
1895
        jbe     @f
1621
        mov     al, '.'
1896
        mov     al, '.'
1622
        stosb
1897
        stosb
1623
        stosb
1898
        stosb
1624
        stosb
1899
        stosb
1625
        sub     ecx, 3
1900
        sub     ecx, 3
1626
        mov     ebx, ecx
1901
        mov     ebx, ecx
1627
@@:
1902
@@:
1628
        add     edi, ebx
1903
        add     edi, ebx
1629
        inc     ecx
1904
        inc     ecx
1630
        std
1905
        std
1631
@@:
1906
@@:
1632
        movsb
1907
        movsb
1633
        dec     ecx
1908
        dec     ecx
1634
        jz      .nodir
1909
        jz      .nodir
1635
        cmp     esi, [esp]
1910
        cmp     esi, [esp]
1636
        jae     @b
1911
        jae     @b
1637
        mov     al, '/'
1912
        mov     al, '/'
1638
        stosb
1913
        stosb
1639
        dec     ecx
1914
        dec     ecx
1640
        jz      .nodir
1915
        jz      .nodir
1641
        mov     esi, [esp+4]
1916
        mov     esi, [esp+4]
1642
@@:
1917
@@:
1643
        cmp     esi, [esp+8]
1918
        cmp     esi, [esp+8]
1644
        jb      .nodir
1919
        jb      .nodir
1645
        movsb
1920
        movsb
1646
        loop    @b
1921
        loop    @b
1647
.nodir:
1922
.nodir:
1648
        cld
1923
        cld
1649
        pop     eax
1924
        pop     eax
1650
        pop     eax
1925
        pop     eax
1651
        pop     eax
1926
        pop     eax
1652
        ret
1927
        ret
1653
 
1928
 
1654
draw_window:
1929
draw_window:
1655
        push    12
1930
        push    12
1656
        pop     eax
1931
        pop     eax
1657
        push    1
1932
        push    1
1658
        pop     ebx
1933
        pop     ebx
1659
        int     40h
1934
        int     40h
1660
        mov     al, 48
1935
        mov     al, 48
1661
        mov     bl, 4
1936
        mov     bl, 4
1662
        int     40h
1937
        int     40h
1663
        mov     [skinh], eax
1938
        mov     [skinh], eax
1664
        mov     ebx, [cur_width]
1939
        mov     ebx, [cur_width]
1665
        imul    ebx, font_width
1940
        imul    ebx, font_width
1666
        add     ebx, 100*65536 + 5*2-1
1941
        add     ebx, 100*65536 + 5*2-1
1667
        mov     ecx, [cur_height]
1942
        mov     ecx, [cur_height]
1668
        imul    ecx, font_height
1943
        imul    ecx, font_height
1669
        lea     ecx, [eax+ecx+5-1+100*65536]
1944
        lea     ecx, [eax+ecx+5-1+100*65536]
1670
        xor     eax, eax
1945
        xor     eax, eax
1671
        mov     edx, 0x53000000
1946
        mov     edx, 0x53000000
1672
        mov     edi, header
1947
        mov     edi, header
1673
        int     40h
1948
        int     40h
1674
        mov     al, 13
1949
        mov     al, 13
1675
        xor     edx, edx
1950
        xor     edx, edx
1676
        cmp     [fill_width], 0
1951
        cmp     [fill_width], 0
1677
        jz      @f
1952
        jz      @f
1678
        mov     ebx, [wnd_width]
1953
        mov     ebx, [wnd_width]
1679
        sub     ebx, [fill_width]
1954
        sub     ebx, [fill_width]
1680
        sub     ebx, 5-1
1955
        sub     ebx, 5-1
1681
        shl     ebx, 16
1956
        shl     ebx, 16
1682
        mov     bx, word [fill_width]
1957
        mov     bx, word [fill_width]
1683
        mov     ecx, [skinh-2]
1958
        mov     ecx, [skinh-2]
1684
        mov     cx, word [wnd_height]
1959
        mov     cx, word [wnd_height]
1685
        sub     cx, word [skinh]
1960
        sub     cx, word [skinh]
1686
        sub     cx, 5-1
1961
        sub     cx, 5-1
1687
        int     0x40
1962
        int     0x40
1688
@@:
1963
@@:
1689
        cmp     [fill_height], 0
1964
        cmp     [fill_height], 0
1690
        jz      @f
1965
        jz      @f
1691
        mov     al, 13
1966
        mov     al, 13
1692
        xor     edx, edx
1967
        xor     edx, edx
1693
        mov     ebx, 50000h
1968
        mov     ebx, 50000h
1694
        mov     bx, word [wnd_width]
1969
        mov     bx, word [wnd_width]
1695
        sub     ebx, 9
1970
        sub     ebx, 9
1696
        mov     ecx, [wnd_height]
1971
        mov     ecx, [wnd_height]
1697
        sub     ecx, [fill_height]
1972
        sub     ecx, [fill_height]
1698
        sub     ecx, 5-1
1973
        sub     ecx, 5-1
1699
        shl     ecx, 16
1974
        shl     ecx, 16
1700
        mov     cx, word [fill_height]
1975
        mov     cx, word [fill_height]
1701
        int     0x40
1976
        int     0x40
1702
@@:
1977
@@:
1703
;        xor     ecx, ecx
1978
;        xor     ecx, ecx
1704
;        call    draw_image
1979
;        call    draw_image
1705
        and     [min_x], 0
1980
        and     [min_x], 0
1706
        and     [min_y], 0
1981
        and     [min_y], 0
1707
        mov     eax, [cur_width]
1982
        mov     eax, [cur_width]
1708
        dec     eax
1983
        dec     eax
1709
        mov     [max_x], eax
1984
        mov     [max_x], eax
1710
        mov     eax, [cur_height]
1985
        mov     eax, [cur_height]
1711
        dec     eax
1986
        dec     eax
1712
        mov     [max_y], eax
1987
        mov     [max_y], eax
1713
        call    draw_image.force
1988
        call    draw_image.force
1714
        mov     al, 12
1989
        mov     al, 12
1715
        push    2
1990
        push    2
1716
        pop     ebx
1991
        pop     ebx
1717
        int     40h
1992
        int     40h
1718
        ret
1993
        ret
1719
 
1994
 
1720
draw_image.nomem:
1995
draw_image.nomem:
1721
        mov     al, 13
1996
        mov     al, 13
1722
        xor     edx, edx
1997
        xor     edx, edx
1723
        mov     ebx, [cur_width]
1998
        mov     ebx, [cur_width]
1724
        imul    ebx, font_width
1999
        imul    ebx, font_width
1725
        add     ebx, 5*65536
2000
        add     ebx, 5*65536
1726
        mov     ecx, [skinh-2]
2001
        mov     ecx, [skinh-2]
1727
        mov     cx, word [cur_height]
2002
        mov     cx, word [cur_height]
1728
        imul    cx, font_height
2003
        imul    cx, font_height
1729
        int     40h
2004
        int     40h
1730
        mov     al, 4
2005
        mov     al, 4
1731
        mov     ebx, 32*65536+32
2006
        mov     ebx, 32*65536+32
1732
        mov     ecx, 0xFFFFFF
2007
        mov     ecx, 0xFFFFFF
1733
        mov     edx, nomem_draw
2008
        mov     edx, nomem_draw
1734
        push    nomem_draw.size
2009
        push    nomem_draw.size
1735
        pop     esi
2010
        pop     esi
1736
        int     40h
2011
        int     40h
1737
        ret
2012
        ret
1738
 
2013
 
1739
draw_image:
2014
draw_image:
1740
; determine draw rectangle
2015
; determine draw rectangle
1741
        and     [max_x], 0
2016
        and     [max_x], 0
1742
        or      [min_x], -1
2017
        or      [min_x], -1
1743
        or      [min_y], -1
2018
        or      [min_y], -1
1744
        mov     esi, [console_data_ptr]
2019
        mov     esi, [console_data_ptr]
1745
        xor     eax, eax
2020
        xor     eax, eax
1746
        xor     edx, edx
2021
        xor     edx, edx
1747
        mov     ecx, [cur_width]
2022
        mov     ecx, [cur_width]
1748
        imul    ecx, [cur_height]
2023
        imul    ecx, [cur_height]
1749
.m1:
2024
.m1:
1750
        mov     bx, [esi]
2025
        mov     bx, [esi]
1751
        cmp     bx, [esi+ecx*2]
2026
        cmp     bx, [esi+ecx*2]
1752
        jz      .m2
2027
        jz      .m2
1753
        cmp     eax, [min_x]
2028
        cmp     eax, [min_x]
1754
        ja      @f
2029
        ja      @f
1755
        mov     [min_x], eax
2030
        mov     [min_x], eax
1756
@@:
2031
@@:
1757
        cmp     eax, [max_x]
2032
        cmp     eax, [max_x]
1758
        jb      @f
2033
        jb      @f
1759
        mov     [max_x], eax
2034
        mov     [max_x], eax
1760
@@:
2035
@@:
1761
        cmp     edx, [min_y]
2036
        cmp     edx, [min_y]
1762
        jae     @f
2037
        jae     @f
1763
        mov     [min_y], edx
2038
        mov     [min_y], edx
1764
@@:
2039
@@:
1765
        mov     [max_y], edx
2040
        mov     [max_y], edx
1766
.m2:
2041
.m2:
1767
        add     esi, 2
2042
        add     esi, 2
1768
        inc     eax
2043
        inc     eax
1769
        cmp     eax, [cur_width]
2044
        cmp     eax, [cur_width]
1770
        jb      .m1
2045
        jb      .m1
1771
        xor     eax, eax
2046
        xor     eax, eax
1772
        inc     edx
2047
        inc     edx
1773
        cmp     edx, [cur_height]
2048
        cmp     edx, [cur_height]
1774
        jb      .m1
2049
        jb      .m1
1775
        mov     eax, [cursor_x]
2050
        mov     eax, [cursor_x]
1776
        cmp     eax, -1
2051
        cmp     eax, -1
1777
        jz      .m3
2052
        jz      .m3
1778
        cmp     eax, [min_x]
2053
        cmp     eax, [min_x]
1779
        ja      @f
2054
        ja      @f
1780
        mov     [min_x], eax
2055
        mov     [min_x], eax
1781
@@:
2056
@@:
1782
        cmp     eax, [max_x]
2057
        cmp     eax, [max_x]
1783
        jb      @f
2058
        jb      @f
1784
        mov     [max_x], eax
2059
        mov     [max_x], eax
1785
@@:
2060
@@:
1786
        mov     edx, [cursor_y]
2061
        mov     edx, [cursor_y]
1787
        cmp     edx, [min_y]
2062
        cmp     edx, [min_y]
1788
        ja      @f
2063
        ja      @f
1789
        mov     [min_y], edx
2064
        mov     [min_y], edx
1790
@@:
2065
@@:
1791
        cmp     edx, [max_y]
2066
        cmp     edx, [max_y]
1792
        jb      @f
2067
        jb      @f
1793
        mov     [max_y], edx
2068
        mov     [max_y], edx
1794
@@:
2069
@@:
1795
.m3:
2070
.m3:
1796
        xchg    eax, [old_cursor_x]
2071
        xchg    eax, [old_cursor_x]
1797
        xchg    edx, [old_cursor_y]
2072
        xchg    edx, [old_cursor_y]
1798
        cmp     eax, -1
2073
        cmp     eax, -1
1799
        jz      .m4
2074
        jz      .m4
1800
        cmp     eax, [min_x]
2075
        cmp     eax, [min_x]
1801
        ja      @f
2076
        ja      @f
1802
        mov     [min_x], eax
2077
        mov     [min_x], eax
1803
@@:
2078
@@:
1804
        cmp     eax, [max_x]
2079
        cmp     eax, [max_x]
1805
        jb      @f
2080
        jb      @f
1806
        mov     [max_x], eax
2081
        mov     [max_x], eax
1807
@@:
2082
@@:
1808
        cmp     edx, [min_y]
2083
        cmp     edx, [min_y]
1809
        ja      @f
2084
        ja      @f
1810
        mov     [min_y], edx
2085
        mov     [min_y], edx
1811
@@:
2086
@@:
1812
        cmp     edx, [max_y]
2087
        cmp     edx, [max_y]
1813
        jb      @f
2088
        jb      @f
1814
        mov     [max_y], edx
2089
        mov     [max_y], edx
1815
@@:
2090
@@:
1816
.m4:
2091
.m4:
1817
        cmp     [min_y], -1
2092
        cmp     [min_y], -1
1818
        jz      .nodraw
2093
        jz      .nodraw
1819
.force:
2094
.force:
1820
; allocate memory for image
2095
; allocate memory for image
1821
        mov     ecx, [max_x]
2096
        mov     ecx, [max_x]
1822
        sub     ecx, [min_x]
2097
        sub     ecx, [min_x]
1823
        inc     ecx
2098
        inc     ecx
1824
        mov     [used_width], ecx
2099
        mov     [used_width], ecx
1825
        mov     edx, [max_y]
2100
        mov     edx, [max_y]
1826
        sub     edx, [min_y]
2101
        sub     edx, [min_y]
1827
        inc     edx
2102
        inc     edx
1828
        mov     [used_height], edx
2103
        mov     [used_height], edx
1829
        imul    ecx, edx
2104
        imul    ecx, edx
1830
        imul    ecx, font_width*font_height
2105
        imul    ecx, font_width*font_height
1831
        add     ecx, [heapend]
2106
        add     ecx, [heapend]
1832
        push    64
2107
        push    64
1833
        pop     eax
2108
        pop     eax
1834
        push    1
2109
        push    1
1835
        pop     ebx
2110
        pop     ebx
1836
        int     0x40
2111
        int     0x40
1837
        test    eax, eax
2112
        test    eax, eax
1838
        jnz     draw_image.nomem
2113
        jnz     draw_image.nomem
1839
        mov     edi, [heapend]
2114
        mov     edi, [heapend]
1840
        mov     esi, [console_data_ptr]
2115
        mov     esi, [console_data_ptr]
1841
        mov     eax, [min_y]
2116
        mov     eax, [min_y]
1842
        imul    eax, [cur_width]
2117
        imul    eax, [cur_width]
1843
        add     eax, [min_x]
2118
        add     eax, [min_x]
1844
        lea     esi, [esi+eax*2]
2119
        lea     esi, [esi+eax*2]
1845
        mov     ecx, [used_height]
2120
        mov     ecx, [used_height]
1846
.lh:
2121
.lh:
1847
        push    ecx esi
2122
        push    ecx esi
1848
        mov     ecx, [used_width]
2123
        mov     ecx, [used_width]
1849
.lw:
2124
.lw:
1850
        push    ecx
2125
        push    ecx
1851
        mov     ebx, [esi]
2126
        mov     ebx, [esi]
1852
        mov     eax, [cur_width]
2127
        mov     eax, [cur_width]
1853
        imul    eax, [cur_height]
2128
        imul    eax, [cur_height]
1854
        mov     [eax*2+esi], bx
2129
        mov     [eax*2+esi], bx
1855
        movzx   eax, bl
2130
        movzx   eax, bl
1856
        push    edi
2131
        push    edi
1857
        movzx   ebx, bh
2132
        movzx   ebx, bh
1858
        mov     ebp, ebx
2133
        mov     ebp, ebx
1859
        shr     ebp, 4
2134
        shr     ebp, 4
1860
        and     ebx, 0xF
2135
        and     ebx, 0xF
1861
        sub     ebx, ebp
2136
        sub     ebx, ebp
1862
        add     esi, 2
2137
        add     esi, 2
1863
if font_width > 8
2138
if font_width > 8
1864
        lea     edx, [eax+eax+font]
2139
        lea     edx, [eax+eax+font]
1865
else
2140
else
1866
        lea     edx, [eax+font]
2141
        lea     edx, [eax+font]
1867
end if
2142
end if
1868
        mov     ecx, font_height
2143
        mov     ecx, font_height
1869
.sh:
2144
.sh:
1870
        push    ecx edx edi
2145
        push    ecx edx edi
1871
        xor     ecx, ecx
2146
        xor     ecx, ecx
1872
        mov     edx, [edx]
2147
        mov     edx, [edx]
1873
.sw:
2148
.sw:
1874
        shr     edx, 1
2149
        shr     edx, 1
1875
        sbb     eax, eax
2150
        sbb     eax, eax
1876
        and     eax, ebx
2151
        and     eax, ebx
1877
        add     eax, ebp
2152
        add     eax, ebp
1878
        mov     [edi], al
2153
        mov     [edi], al
1879
        add     ecx, 1
2154
        add     ecx, 1
1880
        add     edi, 1
2155
        add     edi, 1
1881
        cmp     ecx, font_width
2156
        cmp     ecx, font_width
1882
        jb      .sw
2157
        jb      .sw
1883
        pop     edi edx ecx
2158
        pop     edi edx ecx
1884
        mov     eax, [used_width]
2159
        mov     eax, [used_width]
1885
        imul    eax, font_width
2160
        imul    eax, font_width
1886
        add     edi, eax
2161
        add     edi, eax
1887
if font_width > 8
2162
if font_width > 8
1888
        add     edx, 256*2
2163
        add     edx, 256*2
1889
else
2164
else
1890
        add     edx, 256
2165
        add     edx, 256
1891
end if
2166
end if
1892
        loop    .sh
2167
        loop    .sh
1893
        pop     edi
2168
        pop     edi
1894
.skip_symbol:
2169
.skip_symbol:
1895
        pop     ecx
2170
        pop     ecx
1896
        add     edi, font_width
2171
        add     edi, font_width
1897
        dec     ecx
2172
        dec     ecx
1898
        jnz     .lw
2173
        jnz     .lw
1899
        mov     eax, [used_width]
2174
        mov     eax, [used_width]
1900
        imul    eax, (font_height-1)*font_width
2175
        imul    eax, (font_height-1)*font_width
1901
        add     edi, eax
2176
        add     edi, eax
1902
        pop     esi ecx
2177
        pop     esi ecx
1903
        add     esi, [cur_width]
2178
        add     esi, [cur_width]
1904
        add     esi, [cur_width]
2179
        add     esi, [cur_width]
1905
        dec     ecx
2180
        dec     ecx
1906
        jnz     .lh
2181
        jnz     .lh
1907
; cursor
2182
; cursor
1908
        mov     eax, [cursor_y]
2183
        mov     eax, [cursor_y]
1909
        inc     eax
2184
        inc     eax
1910
        jz      .nocursor
2185
        jz      .nocursor
1911
        sub     eax, [min_y]
2186
        sub     eax, [min_y]
1912
        mul     [used_width]
2187
        mul     [used_width]
1913
        imul    eax, font_height*font_width
2188
        imul    eax, font_height*font_width
1914
        mov     edx, [cursor_x]
2189
        mov     edx, [cursor_x]
1915
        sub     edx, [min_x]
2190
        sub     edx, [min_x]
1916
        inc     edx
2191
        inc     edx
1917
        imul    edx, font_width
2192
        imul    edx, font_width
1918
        add     eax, edx
2193
        add     eax, edx
1919
        add     eax, [heapend]
2194
        add     eax, [heapend]
1920
        mov     edx, [used_width]
2195
        mov     edx, [used_width]
1921
        imul    edx, font_width
2196
        imul    edx, font_width
1922
        neg     edx
2197
        neg     edx
1923
        mov     ecx, (font_height*15+50)/100
2198
        mov     ecx, (font_height*15+50)/100
1924
.cursor_loop:
2199
.cursor_loop:
1925
        push    ecx
2200
        push    ecx
1926
        mov     ecx, font_width
2201
        mov     ecx, font_width
1927
        add     eax, edx
2202
        add     eax, edx
1928
        push    eax
2203
        push    eax
1929
@@:
2204
@@:
1930
;        add     byte [eax-1], 0x10
2205
;        add     byte [eax-1], 0x10
1931
        xor     byte [eax-1], 7
2206
        xor     byte [eax-1], 7
1932
        sub     eax, 1
2207
        sub     eax, 1
1933
        loop    @b
2208
        loop    @b
1934
        pop     eax
2209
        pop     eax
1935
        pop     ecx
2210
        pop     ecx
1936
        loop    .cursor_loop
2211
        loop    .cursor_loop
1937
.nocursor:
2212
.nocursor:
1938
        mov     ecx, [used_width]
2213
        mov     ecx, [used_width]
1939
        imul    ecx, font_width*65536
2214
        imul    ecx, font_width*65536
1940
        mov     cx, word [used_height]
2215
        mov     cx, word [used_height]
1941
        imul    cx, font_height
2216
        imul    cx, font_height
1942
        mov     edx, [min_x]
2217
        mov     edx, [min_x]
1943
        imul    edx, font_width
2218
        imul    edx, font_width
1944
        add     edx, 5
2219
        add     edx, 5
1945
        shl     edx, 16
2220
        shl     edx, 16
1946
        mov     dx, word [min_y]
2221
        mov     dx, word [min_y]
1947
        imul    dx, font_height
2222
        imul    dx, font_height
1948
        add     edx, [skinh]
2223
        add     edx, [skinh]
1949
        push    65
2224
        push    65
1950
        pop     eax
2225
        pop     eax
1951
        mov     ebx, [heapend]
2226
        mov     ebx, [heapend]
1952
        push    8
2227
        push    8
1953
        pop     esi
2228
        pop     esi
1954
        mov     edi, console_colors
2229
        mov     edi, console_colors
1955
        xor     ebp, ebp
2230
        xor     ebp, ebp
1956
        int     0x40
2231
        int     0x40
1957
        push    64
2232
        push    64
1958
        pop     eax
2233
        pop     eax
1959
        push    1
2234
        push    1
1960
        pop     ebx
2235
        pop     ebx
1961
        mov     ecx, [heapend]
2236
        mov     ecx, [heapend]
1962
        int     0x40
2237
        int     0x40
1963
.nodraw:
2238
.nodraw:
1964
        ret
2239
        ret
1965
 
2240
 
1966
get_console_ptr:
2241
get_console_ptr:
1967
; in: eax=x, edx=y
2242
; in: eax=x, edx=y
1968
; out: edi->console data
2243
; out: edi->console data
1969
        push    edx
2244
        push    edx
1970
        imul    edx, [cur_width]
2245
        imul    edx, [cur_width]
1971
        add     edx, eax
2246
        add     edx, eax
1972
        mov     edi, [console_data_ptr]
2247
        mov     edi, [console_data_ptr]
1973
        lea     edi, [edi + edx*2]
2248
        lea     edi, [edi + edx*2]
1974
        pop     edx
2249
        pop     edx
1975
        ret
2250
        ret
1976
 
2251
 
1977
draw_keybar:
2252
draw_keybar:
1978
        pushad
2253
        pushad
1979
        xor     eax, eax
2254
        xor     eax, eax
1980
        test    [ctrlstate], 3
2255
        test    [ctrlstate], 3
1981
        jz      @f
2256
        jz      @f
1982
        inc     eax
2257
        inc     eax
1983
@@:
2258
@@:
1984
        test    [ctrlstate], 0xC
2259
        test    [ctrlstate], 0xC
1985
        jz      @f
2260
        jz      @f
1986
        or      al, 2
2261
        or      al, 2
1987
@@:
2262
@@:
1988
        test    [ctrlstate], 0x30
2263
        test    [ctrlstate], 0x30
1989
        jz      @f
2264
        jz      @f
1990
        or      al, 4
2265
        or      al, 4
1991
@@:
2266
@@:
1992
        imul    eax, 6*12
2267
        imul    eax, 6*12
1993
        mov     esi, [active_screen_vtable]
2268
        mov     esi, [active_screen_vtable]
1994
        mov     esi, [esi+screen_vtable.keybar]
2269
        mov     esi, [esi+screen_vtable.keybar]
1995
        add     esi, eax
2270
        add     esi, eax
1996
        xor     ecx, ecx
2271
        xor     ecx, ecx
1997
        inc     ecx
2272
        inc     ecx
1998
        xor     eax, eax
2273
        xor     eax, eax
1999
        mov     edx, [cur_height]
2274
        mov     edx, [cur_height]
2000
        dec     edx
2275
        dec     edx
2001
        call    get_console_ptr
2276
        call    get_console_ptr
2002
        push    6
2277
        push    6
2003
        pop     ebx
2278
        pop     ebx
2004
        mov     eax, [cur_width]
2279
        mov     eax, [cur_width]
2005
        sub     eax, 11+9+3*2+6
2280
        sub     eax, 11+9+3*2+6
2006
        cmp     eax, 7*11
2281
        cmp     eax, 7*11
2007
        jl      @f
2282
        jl      @f
2008
        cdq
2283
        cdq
2009
        mov     bl, 11
2284
        mov     bl, 11
2010
        div     ebx
2285
        div     ebx
2011
        mov     ebx, eax
2286
        mov     ebx, eax
2012
@@:
2287
@@:
2013
        xor     edx, edx
2288
        xor     edx, edx
2014
.l:
2289
.l:
2015
        add     edx, 7
2290
        add     edx, 7
2016
        cmp     cl, 10
2291
        cmp     cl, 10
2017
        jb      @f
2292
        jb      @f
2018
        inc     edx
2293
        inc     edx
2019
@@:
2294
@@:
2020
        cmp     edx, [cur_width]
2295
        cmp     edx, [cur_width]
2021
        ja      .ret
2296
        ja      .ret
2022
        cmp     cl, 10
2297
        cmp     cl, 10
2023
        jae     .twodig
2298
        jae     .twodig
2024
        lea     eax, [ecx+'0']
2299
        lea     eax, [ecx+'0']
2025
        stosb
2300
        stosb
2026
        mov     al, [keybar_number_color]
2301
        mov     al, [keybar_number_color]
2027
        stosb
2302
        stosb
2028
        jmp     .cmn
2303
        jmp     .cmn
2029
.twodig:
2304
.twodig:
2030
        mov     al, cl
2305
        mov     al, cl
2031
        cbw
2306
        cbw
2032
        div     [_10]
2307
        div     [_10]
2033
        add     al, '0'
2308
        add     al, '0'
2034
        stosb
2309
        stosb
2035
        mov     al, [keybar_number_color]
2310
        mov     al, [keybar_number_color]
2036
        stosb
2311
        stosb
2037
        xchg    al, ah
2312
        xchg    al, ah
2038
        add     al, '0'
2313
        add     al, '0'
2039
        stosw
2314
        stosw
2040
.cmn:
2315
.cmn:
2041
        mov     ah, [keybar_name_color]
2316
        mov     ah, [keybar_name_color]
2042
        push    ecx
2317
        push    ecx
2043
        mov     cl, 6
2318
        mov     cl, 6
2044
@@:
2319
@@:
2045
        lodsb
2320
        lodsb
2046
        stosw
2321
        stosw
2047
        loop    @b
2322
        loop    @b
2048
        mov     al, ' '
2323
        mov     al, ' '
2049
        lea     ecx, [ebx-6]
2324
        lea     ecx, [ebx-6]
2050
        cmp     byte [esp], 12
2325
        cmp     byte [esp], 12
2051
        jz      .ret_pop
2326
        jz      .ret_pop
2052
        add     edx, ecx
2327
        add     edx, ecx
2053
        rep     stosw
2328
        rep     stosw
2054
        pop     ecx
2329
        pop     ecx
2055
        inc     edx
2330
        inc     edx
2056
        cmp     edx, [cur_width]
2331
        cmp     edx, [cur_width]
2057
        ja      .ret
2332
        ja      .ret
2058
        mov     ah, [keybar_bgr_color]
2333
        mov     ah, [keybar_bgr_color]
2059
        stosw
2334
        stosw
2060
        inc     ecx
2335
        inc     ecx
2061
        jmp     .l
2336
        jmp     .l
2062
.ret_pop:
2337
.ret_pop:
2063
        pop     ecx
2338
        pop     ecx
2064
.ret:
2339
.ret:
2065
        cmp     byte [edi-2], ' '
2340
        cmp     byte [edi-2], ' '
2066
        jnz     @f
2341
        jnz     @f
2067
        dec     edi
2342
        dec     edi
2068
        dec     edi
2343
        dec     edi
2069
@@:
2344
@@:
2070
        push    edi
2345
        push    edi
2071
        xor     eax, eax
2346
        xor     eax, eax
2072
        mov     edx, [cur_height]
2347
        mov     edx, [cur_height]
2073
        call    get_console_ptr
2348
        call    get_console_ptr
2074
        mov     ecx, edi
2349
        mov     ecx, edi
2075
        pop     edi
2350
        pop     edi
2076
        sub     ecx, edi
2351
        sub     ecx, edi
2077
        shr     ecx, 1
2352
        shr     ecx, 1
2078
        mov     al, ' '
2353
        mov     al, ' '
2079
        mov     ah, [keybar_name_color]
2354
        mov     ah, [keybar_name_color]
2080
        rep     stosw
2355
        rep     stosw
2081
.done:
2356
.done:
2082
        popad
2357
        popad
2083
        ret
2358
        ret
2084
 
2359
 
2085
draw_cmdbar:
2360
draw_cmdbar:
2086
        mov     esi, [active_panel]
2361
        mov     esi, [active_panel]
2087
        add     esi, panel1_dir - panel1_data
2362
        add     esi, panel1_dir - panel1_data
2088
        xor     eax, eax
2363
        xor     eax, eax
2089
        mov     edx, [cur_height]
2364
        mov     edx, [cur_height]
2090
        dec     edx
2365
        dec     edx
2091
        dec     edx
2366
        dec     edx
2092
        call    get_console_ptr
2367
        call    get_console_ptr
2093
        mov     ah, [cmdbar_prefix_color]
2368
        mov     ah, [cmdbar_prefix_color]
2094
        mov     ecx, [cur_width]
2369
        mov     ecx, [cur_width]
2095
        dec     ecx
2370
        dec     ecx
2096
@@:
2371
@@:
2097
        lodsb
2372
        lodsb
2098
        test    al, al
2373
        test    al, al
2099
        jz      @f
2374
        jz      @f
2100
        stosw
2375
        stosw
2101
        loop    @b
2376
        loop    @b
2102
@@:
2377
@@:
2103
        mov     al, '>'
2378
        mov     al, '>'
2104
        stosw
2379
        stosw
2105
        mov     al, ' '
2380
        mov     al, ' '
2106
        mov     ah, [cmdbar_normal_color]
2381
        mov     ah, [cmdbar_normal_color]
2107
        rep     stosw
2382
        rep     stosw
2108
        ret
2383
        ret
2109
 
2384
 
2110
draw_border:
2385
draw_border:
2111
        push    edi
2386
        push    edi
2112
        mov     al, 0xC9
2387
        mov     al, 0xC9
2113
        stosw
2388
        stosw
2114
        mov     al, 0xCD
2389
        mov     al, 0xCD
2115
        lea     ecx, [ebx-2]
2390
        lea     ecx, [ebx-2]
2116
        rep     stosw
2391
        rep     stosw
2117
        mov     al, 0xBB
2392
        mov     al, 0xBB
2118
        stosw
2393
        stosw
2119
        pop     edi
2394
        pop     edi
2120
        add     edi, [cur_width]
2395
        add     edi, [cur_width]
2121
        add     edi, [cur_width]
2396
        add     edi, [cur_width]
2122
        lea     ecx, [edx-2]
2397
        lea     ecx, [edx-2]
2123
.l:
2398
.l:
2124
        push    edi
2399
        push    edi
2125
        mov     al, 0xBA
2400
        mov     al, 0xBA
2126
        stosw
2401
        stosw
2127
        mov     al, 0x20
2402
        mov     al, 0x20
2128
        push    ecx
2403
        push    ecx
2129
        lea     ecx, [ebx-2]
2404
        lea     ecx, [ebx-2]
2130
        rep     stosw
2405
        rep     stosw
2131
        pop     ecx
2406
        pop     ecx
2132
        mov     al, 0xBA
2407
        mov     al, 0xBA
2133
        stosw
2408
        stosw
2134
        pop     edi
2409
        pop     edi
2135
        add     edi, [cur_width]
2410
        add     edi, [cur_width]
2136
        add     edi, [cur_width]
2411
        add     edi, [cur_width]
2137
        loop    .l
2412
        loop    .l
2138
        mov     al, 0xC8
2413
        mov     al, 0xC8
2139
        stosw
2414
        stosw
2140
        mov     al, 0xCD
2415
        mov     al, 0xCD
2141
        lea     ecx, [ebx-2]
2416
        lea     ecx, [ebx-2]
2142
        rep     stosw
2417
        rep     stosw
2143
        mov     al, 0xBC
2418
        mov     al, 0xBC
2144
        stosw
2419
        stosw
2145
        ret
2420
        ret
2146
 
2421
 
2147
draw_panel:
2422
draw_panel:
2148
        mov     eax, [ebp + panel1_left - panel1_data]
2423
        mov     eax, [ebp + panel1_left - panel1_data]
2149
        mov     edx, [ebp + panel1_top - panel1_data]
2424
        mov     edx, [ebp + panel1_top - panel1_data]
2150
        call    get_console_ptr
2425
        call    get_console_ptr
2151
; draw border
2426
; draw border
2152
        mov     ah, [panel_border_color]
2427
        mov     ah, [panel_border_color]
2153
        mov     ebx, [ebp + panel1_width - panel1_data]
2428
        mov     ebx, [ebp + panel1_width - panel1_data]
2154
        mov     edx, [ebp + panel1_height - panel1_data]
2429
        mov     edx, [ebp + panel1_height - panel1_data]
2155
        call    draw_border
2430
        call    draw_border
2156
        push    eax
2431
        push    eax
2157
        mov     eax, [ebp + panel1_left - panel1_data]
2432
        mov     eax, [ebp + panel1_left - panel1_data]
2158
        mov     edx, [ebp + panel1_top - panel1_data]
2433
        mov     edx, [ebp + panel1_top - panel1_data]
2159
        add     edx, [ebp + panel1_height - panel1_data]
2434
        add     edx, [ebp + panel1_height - panel1_data]
2160
        sub     edx, 3
2435
        sub     edx, 3
2161
        call    get_console_ptr
2436
        call    get_console_ptr
2162
        pop     eax
2437
        pop     eax
2163
        mov     al, 0xC7
2438
        mov     al, 0xC7
2164
        stosw
2439
        stosw
2165
        mov     al, 0xC4
2440
        mov     al, 0xC4
2166
        lea     ecx, [ebx-2]
2441
        lea     ecx, [ebx-2]
2167
        rep     stosw
2442
        rep     stosw
2168
        mov     al, 0xB6
2443
        mov     al, 0xB6
2169
        stosw
2444
        stosw
2170
        mov     eax, [ebp + panel1_width - panel1_data]
2445
        mov     eax, [ebp + panel1_width - panel1_data]
2171
        sub     eax, 3
2446
        sub     eax, 3
2172
        shr     eax, 1
2447
        shr     eax, 1
2173
        mov     [column_width], eax
2448
        mov     [column_width], eax
2174
        mov     eax, [ebp + panel1_left - panel1_data]
2449
        mov     eax, [ebp + panel1_left - panel1_data]
2175
        inc     eax
2450
        inc     eax
2176
        mov     [column_left], eax
2451
        mov     [column_left], eax
2177
        add     eax, [column_width]
2452
        add     eax, [column_width]
2178
        mov     edx, [ebp + panel1_top - panel1_data]
2453
        mov     edx, [ebp + panel1_top - panel1_data]
2179
        inc     edx
2454
        inc     edx
2180
        mov     [column_top], edx
2455
        mov     [column_top], edx
2181
        dec     edx
2456
        dec     edx
2182
        call    get_console_ptr
2457
        call    get_console_ptr
2183
        mov     ah, [panel_border_color]
2458
        mov     ah, [panel_border_color]
2184
        mov     al, 0xD1
2459
        mov     al, 0xD1
2185
        mov     [edi], ax
2460
        mov     [edi], ax
2186
        add     edi, [cur_width]
2461
        add     edi, [cur_width]
2187
        add     edi, [cur_width]
2462
        add     edi, [cur_width]
2188
        mov     ecx, [ebp + panel1_height - panel1_data]
2463
        mov     ecx, [ebp + panel1_height - panel1_data]
2189
        sub     ecx, 4
2464
        sub     ecx, 4
2190
        mov     [column_height], ecx
2465
        mov     [column_height], ecx
2191
        mov     al, 0xB3
2466
        mov     al, 0xB3
2192
@@:
2467
@@:
2193
        mov     [edi], ax
2468
        mov     [edi], ax
2194
        add     edi, [cur_width]
2469
        add     edi, [cur_width]
2195
        add     edi, [cur_width]
2470
        add     edi, [cur_width]
2196
        loop    @b
2471
        loop    @b
2197
        mov     al, 0xC1
2472
        mov     al, 0xC1
2198
        stosw
2473
        stosw
2199
        mov     eax, [column_height]
2474
        mov     eax, [column_height]
2200
        dec     eax
2475
        dec     eax
2201
        mov     [ebp + panel1_colsz - panel1_data], eax
2476
        mov     [ebp + panel1_colsz - panel1_data], eax
2202
        add     eax, eax
2477
        add     eax, eax
2203
        mov     [ebp + panel1_colst - panel1_data], eax
2478
        mov     [ebp + panel1_colst - panel1_data], eax
2204
        mov     eax, [ebp + panel1_start - panel1_data]
2479
        mov     eax, [ebp + panel1_start - panel1_data]
2205
        mov     [column_index], eax
2480
        mov     [column_index], eax
2206
        call    draw_column
2481
        call    draw_column
2207
        mov     eax, [ebp + panel1_width - panel1_data]
2482
        mov     eax, [ebp + panel1_width - panel1_data]
2208
        sub     eax, 3
2483
        sub     eax, 3
2209
        mov     ecx, [column_width]
2484
        mov     ecx, [column_width]
2210
        sub     eax, ecx
2485
        sub     eax, ecx
2211
        mov     [column_width], eax
2486
        mov     [column_width], eax
2212
        inc     ecx
2487
        inc     ecx
2213
        add     [column_left], ecx
2488
        add     [column_left], ecx
2214
        call    draw_column
2489
        call    draw_column
2215
; ‡ £®«®¢®ª ¯ ­¥«¨ (⥪ãé ï ¯ ¯ª )
2490
; ‡ £®«®¢®ª ¯ ­¥«¨ (⥪ãé ï ¯ ¯ª )
2216
        lea     esi, [ebp + panel1_dir - panel1_data]
2491
        lea     esi, [ebp + panel1_dir - panel1_data]
2217
        mov     edi, cur_header
2492
        mov     edi, cur_header
2218
        mov     ecx, [ebp + panel1_width - panel1_data]
2493
        mov     ecx, [ebp + panel1_width - panel1_data]
2219
        sub     ecx, 7
2494
        sub     ecx, 7
2220
        movsb
2495
        movsb
2221
@@:
2496
@@:
2222
        lodsb
2497
        lodsb
2223
        stosb
2498
        stosb
2224
        dec     ecx
2499
        dec     ecx
2225
        test    al, al
2500
        test    al, al
2226
        jz      .header_created
2501
        jz      .header_created
2227
        cmp     al, '/'
2502
        cmp     al, '/'
2228
        jnz     @b
2503
        jnz     @b
2229
        mov     edx, esi
2504
        mov     edx, esi
2230
@@:
2505
@@:
2231
        lodsb
2506
        lodsb
2232
        test    al, al
2507
        test    al, al
2233
        jnz     @b
2508
        jnz     @b
2234
        sub     esi, edx
2509
        sub     esi, edx
2235
        dec     esi
2510
        dec     esi
2236
        cmp     esi, ecx
2511
        cmp     esi, ecx
2237
        jbe     @f
2512
        jbe     @f
2238
        mov     word [edi], '..'
2513
        mov     word [edi], '..'
2239
        mov     byte [edi+2], '.'
2514
        mov     byte [edi+2], '.'
2240
        add     edi, 3
2515
        add     edi, 3
2241
        sub     ecx, 3
2516
        sub     ecx, 3
2242
        add     edx, esi
2517
        add     edx, esi
2243
        sub     edx, ecx
2518
        sub     edx, ecx
2244
@@:
2519
@@:
2245
        mov     esi, edx
2520
        mov     esi, edx
2246
@@:
2521
@@:
2247
        lodsb
2522
        lodsb
2248
        stosb
2523
        stosb
2249
        dec     ecx
2524
        dec     ecx
2250
        test    al, al
2525
        test    al, al
2251
        jnz     @b
2526
        jnz     @b
2252
.header_created:
2527
.header_created:
2253
        mov     edx, [ebp + panel1_top - panel1_data]
2528
        mov     edx, [ebp + panel1_top - panel1_data]
2254
        mov     eax, [ebp + panel1_left - panel1_data]
2529
        mov     eax, [ebp + panel1_left - panel1_data]
2255
        shr     ecx, 1
2530
        shr     ecx, 1
2256
        lea     eax, [eax+ecx+3]
2531
        lea     eax, [eax+ecx+3]
2257
        call    get_console_ptr
2532
        call    get_console_ptr
2258
        mov     ah, [panel_active_header_color]
2533
        mov     ah, [panel_active_header_color]
2259
        cmp     ebp, [active_panel]
2534
        cmp     ebp, [active_panel]
2260
        jz      @f
2535
        jz      @f
2261
        mov     ah, [panel_header_color]
2536
        mov     ah, [panel_header_color]
2262
@@:
2537
@@:
2263
        mov     al, ' '
2538
        mov     al, ' '
2264
        stosw
2539
        stosw
2265
        mov     esi, cur_header
2540
        mov     esi, cur_header
2266
@@:
2541
@@:
2267
        lodsb
2542
        lodsb
2268
        test    al, al
2543
        test    al, al
2269
        jz      @f
2544
        jz      @f
2270
        stosw
2545
        stosw
2271
        jmp     @b
2546
        jmp     @b
2272
@@:
2547
@@:
2273
        mov     al, ' '
2548
        mov     al, ' '
2274
        stosw
2549
        stosw
2275
        mov     edx, [ebp + panel1_top - panel1_data]
2550
        mov     edx, [ebp + panel1_top - panel1_data]
2276
        inc     edx
2551
        inc     edx
2277
        mov     eax, [ebp + panel1_left - panel1_data]
2552
        mov     eax, [ebp + panel1_left - panel1_data]
2278
        inc     eax
2553
        inc     eax
2279
        call    get_console_ptr
2554
        call    get_console_ptr
2280
        movzx   eax, [ebp + panel1_sortmode - panel1_data]
2555
        movzx   eax, [ebp + panel1_sortmode - panel1_data]
2281
        mov     al, [compare_names+eax]
2556
        mov     al, [compare_names+eax]
2282
        stosb
2557
        stosb
2283
        cmp     [ebp + panel1_numfiles - panel1_data], 0
2558
        cmp     [ebp + panel1_numfiles - panel1_data], 0
2284
        jz      .skip_curinfo
2559
        jz      .skip_curinfo
2285
; ˆ­ä®à¬ æ¨ï ® ¢ë¡à ­­®¬ ä ©«¥
2560
; ˆ­ä®à¬ æ¨ï ® ¢ë¡à ­­®¬ ä ©«¥
2286
        mov     ebx, [ebp + panel1_index - panel1_data]
2561
        mov     ebx, [ebp + panel1_index - panel1_data]
2287
        mov     eax, [ebp + panel1_files - panel1_data]
2562
        mov     eax, [ebp + panel1_files - panel1_data]
2288
        mov     ebx, [eax+ebx*4]
2563
        mov     ebx, [eax+ebx*4]
2289
        mov     eax, [ebp + panel1_nfa - panel1_data]
-
 
2290
        lea     ebx, [ebx+eax*4+32]
-
 
2291
        add     ebx, [ebp + panel1_files - panel1_data]
-
 
2292
        mov     eax, [ebp + panel1_left - panel1_data]
2564
        mov     eax, [ebp + panel1_left - panel1_data]
2293
        add     eax, [ebp + panel1_width - panel1_data]
2565
        add     eax, [ebp + panel1_width - panel1_data]
2294
        dec     eax
2566
        dec     eax
2295
        mov     edx, [ebp + panel1_top - panel1_data]
2567
        mov     edx, [ebp + panel1_top - panel1_data]
2296
        add     edx, [ebp + panel1_height - panel1_data]
2568
        add     edx, [ebp + panel1_height - panel1_data]
2297
        dec     edx
2569
        dec     edx
2298
        dec     edx
2570
        dec     edx
2299
        call    get_console_ptr
2571
        call    get_console_ptr
2300
        mov     ecx, [ebp + panel1_width - panel1_data]
2572
        mov     ecx, [ebp + panel1_width - panel1_data]
2301
        dec     ecx
2573
        dec     ecx
2302
        dec     ecx
2574
        dec     ecx
2303
; ‚à¥¬ï ¬®¤¨ä¨ª æ¨¨
2575
; ‚à¥¬ï ¬®¤¨ä¨ª æ¨¨
2304
        sub     edi, 5*2
2576
        sub     edi, 5*2
2305
        sub     ecx, 6
2577
        sub     ecx, 6
2306
        mov     al, [ebx+24+2]
2578
        mov     al, [ebx+24+2]
2307
        aam
2579
        aam
2308
        or      ax, 0x3030
2580
        or      ax, 0x3030
2309
        mov     [edi], ah
2581
        mov     [edi], ah
2310
        mov     [edi+2], al
2582
        mov     [edi+2], al
2311
        mov     [edi+4], byte ':'
2583
        mov     [edi+4], byte ':'
2312
        mov     al, [ebx+24+1]
2584
        mov     al, [ebx+24+1]
2313
        aam
2585
        aam
2314
        or      ax, 0x3030
2586
        or      ax, 0x3030
2315
        mov     [edi+6], ah
2587
        mov     [edi+6], ah
2316
        mov     [edi+8], al
2588
        mov     [edi+8], al
2317
        mov     al, [panel_normal_color]
2589
        mov     al, [panel_normal_color]
2318
        mov     [edi+1], al
2590
        mov     [edi+1], al
2319
        mov     [edi+3], al
2591
        mov     [edi+3], al
2320
        mov     [edi+5], al
2592
        mov     [edi+5], al
2321
        mov     [edi+7], al
2593
        mov     [edi+7], al
2322
        mov     [edi+9], al
2594
        mov     [edi+9], al
2323
        dec     edi
2595
        dec     edi
2324
        mov     [edi], al
2596
        mov     [edi], al
2325
        dec     edi
2597
        dec     edi
2326
        mov     byte [edi], ' '
2598
        mov     byte [edi], ' '
2327
; „ â  ¬®¤¨ä¨ª æ¨¨
2599
; „ â  ¬®¤¨ä¨ª æ¨¨
2328
        sub     edi, 8*2
2600
        sub     edi, 8*2
2329
        sub     ecx, 9
2601
        sub     ecx, 9
2330
        mov     al, [ebx+28+0]
2602
        mov     al, [ebx+28+0]
2331
        aam
2603
        aam
2332
        or      ax, 0x3030
2604
        or      ax, 0x3030
2333
        mov     [edi], ah
2605
        mov     [edi], ah
2334
        mov     [edi+2], al
2606
        mov     [edi+2], al
2335
        mov     [edi+4], byte '.'
2607
        mov     [edi+4], byte '.'
2336
        mov     al, [ebx+28+1]
2608
        mov     al, [ebx+28+1]
2337
        aam
2609
        aam
2338
        or      ax, 0x3030
2610
        or      ax, 0x3030
2339
        mov     [edi+6], ah
2611
        mov     [edi+6], ah
2340
        mov     [edi+8], al
2612
        mov     [edi+8], al
2341
        mov     [edi+10], byte '.'
2613
        mov     [edi+10], byte '.'
2342
        mov     ax, [ebx+28+2]
2614
        mov     ax, [ebx+28+2]
2343
        div     [_100]
2615
        div     [_100]
2344
        mov     al, ah
2616
        mov     al, ah
2345
        aam
2617
        aam
2346
        or      ax, 0x3030
2618
        or      ax, 0x3030
2347
        mov     [edi+12], ah
2619
        mov     [edi+12], ah
2348
        mov     [edi+14], al
2620
        mov     [edi+14], al
2349
        mov     al, [panel_normal_color]
2621
        mov     al, [panel_normal_color]
2350
        mov     [edi+1], al
2622
        mov     [edi+1], al
2351
        mov     [edi+3], al
2623
        mov     [edi+3], al
2352
        mov     [edi+5], al
2624
        mov     [edi+5], al
2353
        mov     [edi+7], al
2625
        mov     [edi+7], al
2354
        mov     [edi+9], al
2626
        mov     [edi+9], al
2355
        mov     [edi+11], al
2627
        mov     [edi+11], al
2356
        mov     [edi+13], al
2628
        mov     [edi+13], al
2357
        mov     [edi+15], al
2629
        mov     [edi+15], al
2358
        dec     edi
2630
        dec     edi
2359
        mov     [edi], al
2631
        mov     [edi], al
2360
        dec     edi
2632
        dec     edi
2361
        mov     [edi], byte ' '
2633
        mov     [edi], byte ' '
2362
;  §¬¥à
2634
;  §¬¥à
2363
        std
2635
        std
2364
        mov     ah, [panel_normal_color]
2636
        mov     ah, [panel_normal_color]
2365
        dec     edi
2637
        dec     edi
2366
        dec     edi
2638
        dec     edi
2367
        dec     ecx
2639
        dec     ecx
2368
        test    byte [ebx], 0x10
2640
        test    byte [ebx], 0x10
2369
        jz      .size_file
2641
        jz      .size_file
2370
        push    ecx
2642
        push    ecx
2371
        mov     esi, aFolder+aFolder.size-1
2643
        mov     esi, aFolder+aFolder.size-1
2372
        mov     ecx, aFolder.size
2644
        mov     ecx, aFolder.size
2373
        cmp     word [ebx+40], '..'
2645
        cmp     word [ebx+40], '..'
2374
        jnz     @f
2646
        jnz     @f
2375
        cmp     byte [ebx+42], 0
2647
        cmp     byte [ebx+42], 0
2376
        jnz     @f
2648
        jnz     @f
2377
        mov     esi, aUp+aUp.size-1
2649
        mov     esi, aUp+aUp.size-1
2378
        mov     cl, aUp.size
2650
        mov     cl, aUp.size
2379
@@:
2651
@@:
2380
        sub     [esp], ecx
2652
        sub     [esp], ecx
2381
@@:
2653
@@:
2382
        lodsb
2654
        lodsb
2383
        stosw
2655
        stosw
2384
        loop    @b
2656
        loop    @b
2385
        pop     ecx
2657
        pop     ecx
2386
        jmp     .size_done
2658
        jmp     .size_done
2387
.size_file:
2659
.size_file:
2388
        mov     edx, [ebx+36]
2660
        mov     edx, [ebx+36]
2389
        test    edx, edx
2661
        test    edx, edx
2390
        jz      .size_less_4g
2662
        jz      .size_less_4g
2391
        cmp     edx, 10*256
2663
        cmp     edx, 10*256
2392
        jae     .size_tera
2664
        jae     .size_tera
2393
; ¢ £¨£ ¡ ©â å
2665
; ¢ £¨£ ¡ ©â å
2394
        mov     al, 'G'
2666
        mov     al, 'G'
2395
        shl     edx, 2
2667
        shl     edx, 2
2396
        jmp     .size_letter
2668
        jmp     .size_letter
2397
.size_tera:
2669
.size_tera:
2398
; ¢ â¥à ¡ ©â å
2670
; ¢ â¥à ¡ ©â å
2399
        shr     edx, 8
2671
        shr     edx, 8
2400
        mov     al, 'T'
2672
        mov     al, 'T'
2401
        jmp     .size_letter
2673
        jmp     .size_letter
2402
.size_less_4g:
2674
.size_less_4g:
2403
        mov     edx, [ebx+32]
2675
        mov     edx, [ebx+32]
2404
        cmp     edx, 10*(1 shl 20)
2676
        cmp     edx, 10*(1 shl 20)
2405
        jae     .size_mega
2677
        jae     .size_mega
2406
        cmp     edx, 1 shl 20
2678
        cmp     edx, 1 shl 20
2407
        jb      .size_num
2679
        jb      .size_num
2408
        shr     edx, 10
2680
        shr     edx, 10
2409
        mov     al, 'K'
2681
        mov     al, 'K'
2410
        jmp     .size_letter
2682
        jmp     .size_letter
2411
.size_mega:
2683
.size_mega:
2412
        mov     al, 'M'
2684
        mov     al, 'M'
2413
        shr     edx, 20
2685
        shr     edx, 20
2414
.size_letter:
2686
.size_letter:
2415
        stosw
2687
        stosw
2416
        dec     ecx
2688
        dec     ecx
2417
        mov     al, ' '
2689
        mov     al, ' '
2418
        stosw
2690
        stosw
2419
        dec     ecx
2691
        dec     ecx
2420
.size_num:
2692
.size_num:
2421
        xchg    eax, edx
2693
        xchg    eax, edx
2422
        xor     edx, edx
2694
        xor     edx, edx
2423
        div     [_10d]
2695
        div     [_10d]
2424
        xchg    eax, edx
2696
        xchg    eax, edx
2425
        add     al, '0'
2697
        add     al, '0'
2426
        mov     ah, [panel_normal_color]
2698
        mov     ah, [panel_normal_color]
2427
        stosw
2699
        stosw
2428
        dec     ecx
2700
        dec     ecx
2429
        test    edx, edx
2701
        test    edx, edx
2430
        jnz     .size_num
2702
        jnz     .size_num
2431
.size_done:
2703
.size_done:
2432
        cld
2704
        cld
2433
; ˆ¬ï
2705
; ˆ¬ï
2434
        sub     edi, ecx
2706
        sub     edi, ecx
2435
        sub     edi, ecx
2707
        sub     edi, ecx
2436
        lea     esi, [ebx+40]
2708
        lea     esi, [ebx+40]
2437
@@:
2709
@@:
2438
        lodsb
2710
        lodsb
2439
        test    al, al
2711
        test    al, al
2440
        jnz     @b
2712
        jnz     @b
2441
        sub     esi, ebx
2713
        sub     esi, ebx
2442
        sub     esi, 41
2714
        sub     esi, 41
2443
        mov     ah, [panel_normal_color]
2715
        mov     ah, [panel_normal_color]
2444
        cmp     esi, ecx
2716
        cmp     esi, ecx
2445
        lea     edx, [ebx+40]
2717
        lea     edx, [ebx+40]
2446
        jbe     @f
2718
        jbe     @f
2447
        mov     al, '{'
2719
        mov     al, '{'
2448
        mov     [edi-2], ax
2720
        mov     [edi-2], ax
2449
        add     edx, esi
2721
        add     edx, esi
2450
        sub     edx, ecx
2722
        sub     edx, ecx
2451
@@:
2723
@@:
2452
        mov     esi, edx
2724
        mov     esi, edx
2453
@@:
2725
@@:
2454
        lodsb
2726
        lodsb
2455
        test    al, al
2727
        test    al, al
2456
        jz      @f
2728
        jz      @f
2457
        stosw
2729
        stosw
2458
        loop    @b
2730
        loop    @b
2459
@@:
2731
@@:
2460
        mov     al, ' '
2732
        mov     al, ' '
2461
        rep     stosw
2733
        rep     stosw
2462
.skip_curinfo:
2734
.skip_curinfo:
2463
        call    draw_image
2735
        call    draw_image
2464
        ret
2736
        ret
2465
 
2737
 
2466
draw_column:
2738
draw_column:
2467
        mov     eax, [column_left]
2739
        mov     eax, [column_left]
2468
        mov     edx, [column_top]
2740
        mov     edx, [column_top]
2469
        call    get_console_ptr
2741
        call    get_console_ptr
2470
; § £®«®¢®ª á⮫¡æ 
2742
; § £®«®¢®ª á⮫¡æ 
2471
        push    edi
2743
        push    edi
2472
        mov     ah, [column_header_color]
2744
        mov     ah, [column_header_color]
2473
        mov     al, ' '
2745
        mov     al, ' '
2474
        mov     ecx, [column_width]
2746
        mov     ecx, [column_width]
2475
if lang eq ru
2747
if lang eq ru
2476
        sub     ecx, 3
2748
        sub     ecx, 3
2477
else
2749
else
2478
        sub     ecx, 4
2750
        sub     ecx, 4
2479
end if
2751
end if
2480
        shr     ecx, 1
2752
        shr     ecx, 1
2481
        rep     stosw
2753
        rep     stosw
2482
if lang eq ru
2754
if lang eq ru
2483
        mov     al, 'ˆ'
2755
        mov     al, 'ˆ'
2484
        stosw
2756
        stosw
2485
        mov     al, '¬'
2757
        mov     al, '¬'
2486
        stosw
2758
        stosw
2487
        mov     al, 'ï'
2759
        mov     al, 'ï'
2488
        stosw
2760
        stosw
2489
else
2761
else
2490
        mov     al, 'N'
2762
        mov     al, 'N'
2491
        stosw
2763
        stosw
2492
        mov     al, 'a'
2764
        mov     al, 'a'
2493
        stosw
2765
        stosw
2494
        mov     al, 'm'
2766
        mov     al, 'm'
2495
        stosw
2767
        stosw
2496
        mov     al, 'e'
2768
        mov     al, 'e'
2497
        stosw
2769
        stosw
2498
end if
2770
end if
2499
        mov     al, ' '
2771
        mov     al, ' '
2500
        mov     ecx, [column_width]
2772
        mov     ecx, [column_width]
2501
if lang eq ru
2773
if lang eq ru
2502
        sub     ecx, 2
2774
        sub     ecx, 2
2503
else
2775
else
2504
        sub     ecx, 3
2776
        sub     ecx, 3
2505
end if
2777
end if
2506
        shr     ecx, 1
2778
        shr     ecx, 1
2507
        rep     stosw
2779
        rep     stosw
2508
        pop     edi
2780
        pop     edi
2509
        add     edi, [cur_width]
2781
        add     edi, [cur_width]
2510
        add     edi, [cur_width]
2782
        add     edi, [cur_width]
2511
; ä ©«ë
2783
; ä ©«ë
2512
        mov     edx, [ebp + panel1_numfiles - panel1_data]
2784
        mov     edx, [ebp + panel1_numfiles - panel1_data]
2513
        mov     ecx, [column_height]
2785
        mov     ecx, [column_height]
2514
        dec     ecx
2786
        dec     ecx
2515
.l:
2787
.l:
2516
        cmp     [column_index], edx
2788
        cmp     [column_index], edx
2517
        jae     .ret
2789
        jae     .ret
2518
        push    ecx
2790
        push    ecx
2519
        mov     esi, [column_index]
2791
        mov     esi, [column_index]
2520
        mov     ecx, [ebp + panel1_files - panel1_data]
2792
        mov     ecx, [ebp + panel1_files - panel1_data]
2521
        mov     esi, [ecx+esi*4]
2793
        mov     esi, [ecx+esi*4]
2522
        mov     ecx, [ebp + panel1_nfa - panel1_data]
-
 
2523
        lea     esi, [esi + ecx*4 + 32 + 40]
2794
        add     esi, 40
2524
        add     esi, [ebp + panel1_files - panel1_data]
-
 
2525
        mov     ah, [esi - 40 + 5]
2795
        mov     ah, [esi - 40 + 5]
2526
        cmp     ebp, [active_panel]
2796
        cmp     ebp, [active_panel]
2527
        jnz     @f
2797
        jnz     @f
2528
        mov     ecx, [column_index]
2798
        mov     ecx, [column_index]
2529
        cmp     ecx, [ebp + panel1_index - panel1_data]
2799
        cmp     ecx, [ebp + panel1_index - panel1_data]
2530
        jnz     @f
2800
        jnz     @f
2531
        mov     ah, [esi - 40 + 6]
2801
        mov     ah, [esi - 40 + 6]
2532
@@:
2802
@@:
2533
        mov     ecx, [column_width]
2803
        mov     ecx, [column_width]
2534
        push    edi
2804
        push    edi
2535
@@:
2805
@@:
2536
        lodsb
2806
        lodsb
2537
        test    al, al
2807
        test    al, al
2538
        jz      @f
2808
        jz      @f
2539
        stosw
2809
        stosw
2540
        loop    @b
2810
        loop    @b
2541
        cmp     byte [esi], 0
2811
        cmp     byte [esi], 0
2542
        jz      @f
2812
        jz      @f
2543
        mov     byte [edi], '}'
2813
        mov     byte [edi], '}'
2544
@@:
2814
@@:
2545
        mov     al, ' '
2815
        mov     al, ' '
2546
        rep     stosw
2816
        rep     stosw
2547
        pop     edi
2817
        pop     edi
2548
        add     edi, [cur_width]
2818
        add     edi, [cur_width]
2549
        add     edi, [cur_width]
2819
        add     edi, [cur_width]
2550
        inc     [column_index]
2820
        inc     [column_index]
2551
        pop     ecx
2821
        pop     ecx
2552
        dec     ecx
2822
        dec     ecx
2553
        jnz     .l
2823
        jnz     .l
2554
.ret:
2824
.ret:
2555
        cmp     ebp, panel1_data
2825
        cmp     ebp, panel1_data
2556
        jnz     .ret2
2826
        jnz     .ret2
2557
; —¨á«® íªà ­®¢
2827
; —¨á«® íªà ­®¢
2558
        mov     eax, [num_screens]
2828
        mov     eax, [num_screens]
2559
        dec     eax
2829
        dec     eax
2560
        jz      .ret2
2830
        jz      .ret2
2561
        push    eax
2831
        push    eax
2562
        xor     eax, eax
2832
        xor     eax, eax
2563
        xor     edx, edx
2833
        xor     edx, edx
2564
        call    get_console_ptr
2834
        call    get_console_ptr
2565
        mov     ah, [panel_nscreens_color]
2835
        mov     ah, [panel_nscreens_color]
2566
        mov     al, '['
2836
        mov     al, '['
2567
        stosw
2837
        stosw
2568
        pop     eax
2838
        pop     eax
2569
        push    -'0'
2839
        push    -'0'
2570
@@:
2840
@@:
2571
        xor     edx, edx
2841
        xor     edx, edx
2572
        div     [_10d]
2842
        div     [_10d]
2573
        push    edx
2843
        push    edx
2574
        test    eax, eax
2844
        test    eax, eax
2575
        jnz     @b
2845
        jnz     @b
2576
@@:
2846
@@:
2577
        pop     eax
2847
        pop     eax
2578
        add     eax, '0'
2848
        add     eax, '0'
2579
        jz      @f
2849
        jz      @f
2580
        mov     ah, [panel_nscreens_color]
2850
        mov     ah, [panel_nscreens_color]
2581
        stosw
2851
        stosw
2582
        jmp     @b
2852
        jmp     @b
2583
@@:
2853
@@:
2584
        mov     al, ']'
2854
        mov     al, ']'
2585
        mov     ah, [panel_nscreens_color]
2855
        mov     ah, [panel_nscreens_color]
2586
        stosw
2856
        stosw
2587
.ret2:
2857
.ret2:
2588
        ret
2858
        ret
2589
 
2859
 
2590
;insert_last_dot:
2860
;insert_last_dot:
2591
;        push    eax esi
2861
;        push    eax esi
2592
;        mov     ah, 0
2862
;        mov     ah, 0
2593
;.loop:
2863
;.loop:
2594
;        lodsb
2864
;        lodsb
2595
;        test    al, al
2865
;        test    al, al
2596
;        jz      .done
2866
;        jz      .done
2597
;        cmp     al, '.'
2867
;        cmp     al, '.'
2598
;        jnz     .loop
2868
;        jnz     .loop
2599
;        mov     ah, 1
2869
;        mov     ah, 1
2600
;        jmp     .loop
2870
;        jmp     .loop
2601
;.done:
2871
;.done:
2602
;        test    ah, ah
2872
;        test    ah, ah
2603
;        jnz     @f
2873
;        jnz     @f
2604
;        mov     byte [esi-1], '.'
2874
;        mov     byte [esi-1], '.'
2605
;        mov     byte [esi], 0
2875
;        mov     byte [esi], 0
2606
;@@:
2876
;@@:
2607
;        pop     esi eax
2877
;        pop     esi eax
2608
;        ret
2878
;        ret
2609
 
2879
 
2610
;delete_last_dot:
2880
;delete_last_dot:
2611
;        push    esi
2881
;        push    esi
2612
;@@:
2882
;@@:
2613
;        cmp     byte [esi], 0
2883
;        cmp     byte [esi], 0
2614
;        jz      @f
2884
;        jz      @f
2615
;        inc     esi
2885
;        inc     esi
2616
;        jmp     @b
2886
;        jmp     @b
2617
;@@:
2887
;@@:
2618
;        cmp     byte [esi-1], '.'
2888
;        cmp     byte [esi-1], '.'
2619
;        jnz     @f
2889
;        jnz     @f
2620
;        mov     byte [esi-1], 0
2890
;        mov     byte [esi-1], 0
2621
;@@:     pop     esi
2891
;@@:     pop     esi
2622
;        ret
2892
;        ret
2623
 
2893
 
2624
read_folder:
2894
read_folder:
2625
        mov     eax, [ebp + panel1_nfa - panel1_data]
2895
        mov     eax, [ebp + panel1_nfa - panel1_data]
2626
        mov     [dirinfo.size], eax
2896
        mov     [dirinfo.size], eax
2627
        shl     eax, 2
2897
        shl     eax, 2
2628
        add     eax, [ebp + panel1_files - panel1_data]
2898
        add     eax, [ebp + panel1_files - panel1_data]
2629
        mov     [dirinfo.dirdata], eax
2899
        mov     [dirinfo.dirdata], eax
2630
        lea     eax, [ebp + panel1_dir - panel1_data]
2900
        lea     eax, [ebp + panel1_dir - panel1_data]
2631
        mov     [dirinfo.name], eax
2901
        mov     [dirinfo.name], eax
2632
.retry:
2902
.retry:
2633
        push    70
2903
        push    70
2634
        pop     eax
2904
        pop     eax
2635
        mov     ebx, dirinfo
2905
        mov     ebx, dirinfo
2636
        int     40h
2906
        int     40h
2637
        test    eax, eax
2907
        test    eax, eax
2638
        jz      .ok
2908
        jz      .ok
2639
        cmp     eax, 6
2909
        cmp     eax, 6
2640
        jz      .ok
2910
        jz      .ok
2641
; Failed to read folder, notify user
2911
; Failed to read folder, notify user
2642
        cmp     [bSilentFolderMode], 0
2912
        cmp     [bSilentFolderMode], 0
2643
        jnz     .dont_notify
2913
        jnz     .dont_notify
2644
        push    aContinue
2914
        push    aContinue
2645
        push    aRetry
2915
        push    aRetry
2646
        mov     edx, esp
2916
        mov     edx, esp
2647
        call    get_error_msg
2917
        call    get_error_msg
2648
        push    [dirinfo.name]
2918
        push    [dirinfo.name]
2649
        push    aCannotReadFolder
2919
        push    aCannotReadFolder
2650
        push    eax
2920
        push    eax
2651
        mov     eax, esp
2921
        mov     eax, esp
2652
        push    edx
2922
        push    edx
2653
        push    2
2923
        push    2
2654
        push    eax
2924
        push    eax
2655
        push    3
2925
        push    3
2656
        push    -1
2926
        push    -1
2657
        push    -1
2927
        push    -1
2658
        push    aError
2928
        push    aError
2659
        call    SayErr
2929
        call    SayErr
2660
        add     esp, 5*4
2930
        add     esp, 5*4
2661
        test    eax, eax
2931
        test    eax, eax
2662
        jz      .retry
2932
        jz      .retry
2663
.dont_notify:
2933
.dont_notify:
2664
        mov     esi, prev_dir
2934
        mov     esi, prev_dir
2665
        cmp     byte [esi], 0
2935
        cmp     byte [esi], 0
2666
        jz      @f
2936
        jz      @f
2667
        lea     edi, [ebp + panel1_dir - panel1_data]
2937
        lea     edi, [ebp + panel1_dir - panel1_data]
2668
        mov     ecx, 1024/4
2938
        mov     ecx, 1024/4
2669
        rep     movsd
2939
        rep     movsd
2670
        mov     byte [prev_dir], 0
2940
        mov     byte [prev_dir], 0
2671
        ret
2941
        ret
2672
@@:
2942
@@:
2673
        mov     [bSilentFolderMode], 1  ; enter silent mode
2943
        mov     [bSilentFolderMode], 1  ; enter silent mode
2674
        mov     esi, [dirinfo.name]
2944
        mov     esi, [dirinfo.name]
2675
        xor     edx, edx
2945
        xor     edx, edx
2676
.up1:
2946
.up1:
2677
        lodsb
2947
        lodsb
2678
        test    al, al
2948
        test    al, al
2679
        jz      .up1done
2949
        jz      .up1done
2680
        cmp     al, '/'
2950
        cmp     al, '/'
2681
        jnz     .up1
2951
        jnz     .up1
2682
        inc     edx
2952
        inc     edx
2683
        lea     edi, [esi-1]
2953
        lea     edi, [esi-1]
2684
        jmp     .up1
2954
        jmp     .up1
2685
.up1done:
2955
.up1done:
2686
        cmp     edx, 2
2956
        cmp     edx, 2
2687
        jbe     .noup
2957
        jbe     .noup
2688
        stosb
2958
        stosb
2689
        jmp     read_folder
2959
        jmp     read_folder
2690
.noup:
2960
.noup:
2691
        mov     esi, [dirinfo.name]
2961
        mov     esi, [dirinfo.name]
2692
        mov     edi, esi
2962
        mov     edi, esi
2693
        lodsd
2963
        lodsd
2694
        or      eax, 0x00202000
2964
        or      eax, 0x00202000
2695
        cmp     eax, '/rd/'
2965
        cmp     eax, '/rd/'
2696
        jnz     @f
2966
        jnz     @f
2697
        lodsw
2967
        lodsw
2698
        cmp     ax, '1'
2968
        cmp     ax, '1'
2699
        jz      .nosetrd
2969
        jz      .nosetrd
2700
@@:
2970
@@:
2701
        mov     eax, '/rd/'
2971
        mov     eax, '/rd/'
2702
        stosd
2972
        stosd
2703
        mov     ax, '1'
2973
        mov     ax, '1'
2704
        stosw
2974
        stosw
2705
        jmp     read_folder
2975
        jmp     read_folder
2706
.nosetrd:
2976
.nosetrd:
2707
; „ ¦¥ à ¬¤¨áª ­¥ ¯à®ç¨â «áï. ‡­ ç¨â, ­¥ áã¤ì¡ ...
2977
; „ ¦¥ à ¬¤¨áª ­¥ ¯à®ç¨â «áï. ‡­ ç¨â, ­¥ áã¤ì¡ ...
2708
        and     dword [ebp + panel1_numfiles - panel1_data], 0
2978
        and     dword [ebp + panel1_numfiles - panel1_data], 0
2709
        and     dword [ebp + panel1_index - panel1_data], 0
2979
        and     dword [ebp + panel1_index - panel1_data], 0
2710
        and     dword [ebp + panel1_start - panel1_data], 0
2980
        and     dword [ebp + panel1_start - panel1_data], 0
2711
        mov     [bSilentFolderMode], 0  ; leave silent mode
2981
        mov     [bSilentFolderMode], 0  ; leave silent mode
2712
        ret
2982
        ret
2713
.ok:
2983
.ok:
2714
        mov     eax, [dirinfo.dirdata]
2984
        mov     eax, [dirinfo.dirdata]
2715
        cmp     [eax+8], ebx
2985
        cmp     [eax+8], ebx
2716
        jz      .readdone
2986
        jz      .readdone
2717
        push    eax
2987
        push    eax
2718
        mov     eax, [ebp + panel1_files - panel1_data]
2988
        mov     eax, [ebp + panel1_files - panel1_data]
2719
        call    mf_free
2989
        call    mf_free
2720
        pop     eax
2990
        pop     eax
2721
        mov     eax, [eax+8]
2991
        mov     eax, [eax+8]
2722
        add     eax, 0xF
2992
        add     eax, 0xF
2723
        and     eax, not 0xF
2993
        and     eax, not 0xF
2724
        push    eax
2994
        push    eax
2725
        imul    eax, 4+304
2995
        imul    eax, 4+304
2726
        add     eax, 32
2996
        add     eax, 32
2727
        call    xmalloc
2997
        call    xmalloc
2728
        test    eax, eax
2998
        test    eax, eax
2729
        jnz     .succ1
2999
        jnz     .succ1
2730
        pop     eax
3000
        pop     eax
2731
        jmp     .readdone
3001
        jmp     .readdone
2732
.succ1:
3002
.succ1:
2733
        mov     [ebp + panel1_files - panel1_data], eax
3003
        mov     [ebp + panel1_files - panel1_data], eax
2734
        pop     [ebp + panel1_nfa - panel1_data]
3004
        pop     [ebp + panel1_nfa - panel1_data]
-
 
3005
        mov     [prev_dir], 0
2735
        jmp     read_folder
3006
        jmp     read_folder
2736
.readdone:
3007
.readdone:
2737
        and     [ebp + panel1_start - panel1_data], 0
3008
        and     [ebp + panel1_start - panel1_data], 0
2738
        and     [ebp + panel1_index - panel1_data], 0
3009
        and     [ebp + panel1_index - panel1_data], 0
2739
        and     [ebp + panel1_start - panel1_data], 0
3010
        and     [ebp + panel1_start - panel1_data], 0
2740
        mov     edi, [ebp + panel1_files - panel1_data]
3011
        mov     edi, [ebp + panel1_files - panel1_data]
2741
        mov     eax, [ebp + panel1_nfa - panel1_data]
3012
        mov     eax, [ebp + panel1_nfa - panel1_data]
2742
        lea     esi, [edi + eax*4 + 32]
3013
        lea     eax, [edi + eax*4 + 32]
2743
        xor     eax, eax
-
 
2744
        mov     ecx, [esi-32+4]
3014
        mov     ecx, [eax-32+4]
2745
        test    ecx, ecx
3015
        test    ecx, ecx
2746
        jz      .loopdone
3016
        jz      .loopdone
-
 
3017
        xor     edx, edx
2747
; ˆ£­®à¨à㥬 ᯥ樠«ì­ë¥ ¢å®¤ë, ᮮ⢥âáâ¢ãî騥 ¯ ¯ª¥ '.' ¨ ¬¥âª¥ ⮬ 
3018
; ˆ£­®à¨à㥬 ᯥ樠«ì­ë¥ ¢å®¤ë, ᮮ⢥âáâ¢ãî騥 ¯ ¯ª¥ '.' ¨ ¬¥âª¥ ⮬ 
2748
.ptrinit:
3019
.ptrinit:
2749
        cmp     word [esi+eax+40], '.'
3020
        cmp     word [eax+40], '.'
2750
        jz      .loopcont
3021
        jz      .loopcont
2751
        test    byte [esi+eax], 8
3022
        test    byte [eax], 8
2752
        jnz     .loopcont
3023
        jnz     .loopcont
-
 
3024
        test    edx, edx
-
 
3025
        jnz     .nodotdot
-
 
3026
        cmp     word [eax+40], '..'
-
 
3027
        jnz     .nodotdot
-
 
3028
        cmp     byte [eax+42], 0
-
 
3029
        jnz     .nodotdot
-
 
3030
        mov     edx, eax
-
 
3031
        push    edi
-
 
3032
@@:
-
 
3033
        cmp     edi, [ebp + panel1_files - panel1_data]
-
 
3034
        jbe     @f
-
 
3035
        push    dword [edi-4]
-
 
3036
        pop     dword [edi]
-
 
3037
        sub     edi, 4
-
 
3038
        jmp     @b
-
 
3039
@@:
2753
        stosd
3040
        stosd
-
 
3041
        pop     edi
-
 
3042
        scasd
-
 
3043
        jmp     .dotdot
-
 
3044
.nodotdot:
-
 
3045
        stosd
-
 
3046
.dotdot:
2754
; ¯®¤á¢¥âª 
3047
; ¯®¤á¢¥âª 
2755
;        call    insert_last_dot
3048
;        call    insert_last_dot
2756
        pushad
3049
        pushad
2757
        lea     ebp, [esi+eax]
3050
        mov     ebp, eax
2758
        lea     esi, [ebp+40]
3051
        lea     esi, [ebp+40]
2759
        mov     edi, lower_file_name
3052
        mov     edi, lower_file_name
2760
        mov     edx, edi
3053
        mov     edx, edi
2761
@@:
3054
@@:
2762
        lodsb
3055
        lodsb
2763
        call    tolower
3056
        call    tolower
2764
        stosb
3057
        stosb
2765
        test    al, al
3058
        test    al, al
2766
        jnz     @b
3059
        jnz     @b
2767
        mov     esi, edx
3060
        mov     esi, edx
2768
        lea     edx, [edi-1]
3061
        lea     edx, [edi-1]
2769
        xor     ecx, ecx
3062
        xor     ecx, ecx
2770
.highlight_test_loop:
3063
.highlight_test_loop:
2771
        mov     ebx, [highlight_groups+ecx*4]
3064
        mov     ebx, [highlight_groups+ecx*4]
2772
        mov     al, [ebx + highlight.IncludeAttributes]
3065
        mov     al, [ebx + highlight.IncludeAttributes]
2773
        mov     ah, [ebp]
3066
        mov     ah, [ebp]
2774
        and     ah, al
3067
        and     ah, al
2775
        cmp     ah, al
3068
        cmp     ah, al
2776
        jnz     .highlight_test_failed
3069
        jnz     .highlight_test_failed
2777
        lea     edi, [ebx + highlight.Mask]
3070
        lea     edi, [ebx + highlight.Mask]
2778
        call    match_mask_rev_lowercase
3071
        call    match_mask_rev_lowercase
2779
        jc      .highlight_test_failed
3072
        jc      .highlight_test_failed
2780
        mov     ah, [ebx + highlight.NormalColor]
3073
        mov     ah, [ebx + highlight.NormalColor]
2781
        test    ah, ah
3074
        test    ah, ah
2782
        jnz     @f
3075
        jnz     @f
2783
        mov     ah, [panel_normal_color]
3076
        mov     ah, [panel_normal_color]
2784
@@:
3077
@@:
2785
        mov     [ebp+5], ah
3078
        mov     [ebp+5], ah
2786
        mov     ah, [ebx + highlight.CursorColor]
3079
        mov     ah, [ebx + highlight.CursorColor]
2787
        test    ah, ah
3080
        test    ah, ah
2788
        jnz     @f
3081
        jnz     @f
2789
        mov     ah, [panel_cursor_color]
3082
        mov     ah, [panel_cursor_color]
2790
@@:
3083
@@:
2791
        mov     [ebp+6], ah
3084
        mov     [ebp+6], ah
2792
        jmp     .doname
3085
        jmp     .doname
2793
.highlight_test_failed:
3086
.highlight_test_failed:
2794
        inc     ecx
3087
        inc     ecx
2795
        cmp     ecx, [highlight_num_groups]
3088
        cmp     ecx, [highlight_num_groups]
2796
        jb      .highlight_test_loop
3089
        jb      .highlight_test_loop
2797
.nohighlight:
3090
.nohighlight:
2798
        mov     ah, [panel_normal_color]
3091
        mov     ah, [panel_normal_color]
2799
        mov     [ebp+5], ah
3092
        mov     [ebp+5], ah
2800
        mov     ah, [panel_cursor_color]
3093
        mov     ah, [panel_cursor_color]
2801
        mov     [ebp+6], ah
3094
        mov     [ebp+6], ah
2802
.doname:
3095
.doname:
2803
;        call    delete_last_dot
3096
;        call    delete_last_dot
2804
        popad
3097
        popad
2805
.loopcont:
3098
.loopcont:
2806
        add     eax, 304
3099
        add     eax, 304
2807
        dec     ecx
3100
        dec     ecx
2808
        jnz     .ptrinit
3101
        jnz     .ptrinit
2809
.loopdone:
3102
.loopdone:
2810
        sub     edi, [ebp + panel1_files - panel1_data]
3103
        sub     edi, [ebp + panel1_files - panel1_data]
2811
        shr     edi, 2
3104
        shr     edi, 2
2812
        mov     [ebp + panel1_numfiles - panel1_data], edi
3105
        mov     [ebp + panel1_numfiles - panel1_data], edi
2813
.done:
3106
.done:
2814
; ‘®àâ¨à®¢ª 
3107
; ‘®àâ¨à®¢ª 
2815
sort_files:
3108
sort_files:
2816
        movzx   eax, [ebp + panel1_sortmode - panel1_data]
3109
        movzx   eax, [ebp + panel1_sortmode - panel1_data]
2817
        mov     ebx, [compare_fns + eax*4]
3110
        mov     ebx, [compare_fns + eax*4]
2818
        mov     edx, [ebp + panel1_files - panel1_data]
3111
        mov     edx, [ebp + panel1_files - panel1_data]
2819
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
3112
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
-
 
3113
        jecxz   .skip
-
 
3114
        mov     eax, [edx]
-
 
3115
        cmp     word [eax], '..'
-
 
3116
        jnz     .nodotdot
-
 
3117
        cmp     byte [eax+2], 0
-
 
3118
        jnz     .nodotdot
-
 
3119
        dec     ecx
-
 
3120
        add     edx, 4
-
 
3121
.nodotdot:
2820
        call    sort
3122
        call    sort
-
 
3123
.skip:
2821
        mov     [bSilentFolderMode], 0  ; leave silent mode
3124
        mov     [bSilentFolderMode], 0  ; leave silent mode
2822
        ret
3125
        ret
2823
 
3126
 
2824
compare_name:
3127
compare_name:
2825
        push    eax
-
 
2826
        mov     eax, [ebp + panel1_nfa - panel1_data]
-
 
2827
        add     esi, [ebp + panel1_files - panel1_data]
-
 
2828
        add     edi, [ebp + panel1_files - panel1_data]
-
 
2829
        lea     esi, [esi+eax*4+0x20]
-
 
2830
        lea     edi, [edi+eax*4+0x20]
-
 
2831
        pop     eax
-
 
2832
        cmp     word [esi+40], '..'
-
 
2833
        jnz     @f
-
 
2834
        cmp     byte [esi+42], 0
-
 
2835
        jz      .less
-
 
2836
@@:     cmp     word [edi+40], '..'
-
 
2837
        jnz     @f
-
 
2838
        cmp     byte [edi+42], 0
-
 
2839
        jz      .greater
-
 
2840
@@:
-
 
2841
        test    byte [esi], 10h
3128
        test    byte [esi], 10h
2842
        jnz     .1dir
3129
        jnz     .1dir
2843
        test    byte [edi], 10h
3130
        test    byte [edi], 10h
2844
        jnz     .greater
3131
        jnz     .greater
2845
.eq1:
3132
.eq1:
2846
        add     esi, 40
3133
        add     esi, 40
2847
        add     edi, 40
3134
        add     edi, 40
2848
        jmp     strcmpi
3135
        jmp     strcmpi
2849
.greater:
3136
.greater:
2850
        test    esi, esi
3137
        test    esi, esi
2851
        ret
3138
        ret
2852
.1dir:
3139
.1dir:
2853
        test    byte [edi], 10h
3140
        test    byte [edi], 10h
2854
        jnz     .eq1
3141
        jnz     .eq1
2855
.less:
3142
.less:
2856
        xor     edi, edi
3143
        xor     edi, edi
2857
        stc
3144
        stc
2858
        ret
3145
        ret
2859
 
3146
 
2860
compare_name_rev:
3147
compare_name_rev:
2861
        push    eax
-
 
2862
        mov     eax, [ebp + panel1_nfa - panel1_data]
-
 
2863
        add     esi, [ebp + panel1_files - panel1_data]
-
 
2864
        add     edi, [ebp + panel1_files - panel1_data]
-
 
2865
        lea     esi, [esi+eax*4+0x20]
-
 
2866
        lea     edi, [edi+eax*4+0x20]
-
 
2867
        pop     eax
-
 
2868
        cmp     word [esi+40], '..'
-
 
2869
        jnz     @f
-
 
2870
        cmp     byte [esi+42], 0
-
 
2871
        jz      .less
-
 
2872
@@:     cmp     word [edi+40], '..'
-
 
2873
        jnz     @f
-
 
2874
        cmp     byte [edi+42], 0
-
 
2875
        jz      .greater
-
 
2876
@@:
-
 
2877
        test    byte [esi], 10h
3148
        test    byte [esi], 10h
2878
        jnz     .1dir
3149
        jnz     .1dir
2879
        test    byte [edi], 10h
3150
        test    byte [edi], 10h
2880
        jnz     .greater
3151
        jnz     .greater
2881
.eq1:
3152
.eq1:
2882
        add     esi, 40
3153
        add     esi, 40
2883
        add     edi, 40
3154
        add     edi, 40
2884
        xchg    esi, edi
3155
        xchg    esi, edi
2885
        jmp     strcmpi
3156
        jmp     strcmpi
2886
.greater:
3157
.greater:
2887
        test    esi, esi
3158
        test    esi, esi
2888
        ret
3159
        ret
2889
.1dir:
3160
.1dir:
2890
        test    byte [edi], 10h
3161
        test    byte [edi], 10h
2891
        jnz     .eq1
3162
        jnz     .eq1
2892
.less:
3163
.less:
2893
        xor     edi, edi
3164
        xor     edi, edi
2894
        stc
3165
        stc
2895
        ret
3166
        ret
2896
 
3167
 
2897
strcmpi:
3168
strcmpi:
2898
        push    eax
3169
        push    eax
2899
@@:
3170
@@:
2900
        lodsb
3171
        lodsb
2901
        call    match_symbol
3172
        call    match_symbol
2902
        jnz     .ret
3173
        jnz     .ret
2903
        inc     edi
3174
        inc     edi
2904
        test    al, al
3175
        test    al, al
2905
        jnz     @b
3176
        jnz     @b
2906
.ret:
3177
.ret:
2907
        pop     eax
3178
        pop     eax
2908
        ret
3179
        ret
2909
 
3180
 
2910
compare_ext:
3181
compare_ext:
2911
        push    eax
-
 
2912
        mov     eax, [ebp + panel1_nfa - panel1_data]
-
 
2913
        add     esi, [ebp + panel1_files - panel1_data]
-
 
2914
        add     edi, [ebp + panel1_files - panel1_data]
-
 
2915
        lea     esi, [esi+eax*4+0x20]
-
 
2916
        lea     edi, [edi+eax*4+0x20]
-
 
2917
        pop     eax
-
 
2918
        cmp     word [esi+40], '..'
-
 
2919
        jnz     @f
-
 
2920
        cmp     byte [esi+42], 0
-
 
2921
        jz      .less
-
 
2922
@@:     cmp     word [edi+40], '..'
-
 
2923
        jnz     @f
-
 
2924
        cmp     byte [edi+42], 0
-
 
2925
        jz      .greater
-
 
2926
@@:
-
 
2927
        test    byte [esi], 10h
3182
        test    byte [esi], 10h
2928
        jnz     .1dir
3183
        jnz     .1dir
2929
        test    byte [edi], 10h
3184
        test    byte [edi], 10h
2930
        jnz     .greater
3185
        jnz     .greater
2931
.eq1:
3186
.eq1:
2932
        add     esi, 40
3187
        add     esi, 40
2933
        add     edi, 40
3188
        add     edi, 40
2934
        push    esi edi
3189
        push    esi edi
2935
        call    seek_ext
3190
        call    seek_ext
2936
        xchg    esi, edi
3191
        xchg    esi, edi
2937
        call    seek_ext
3192
        call    seek_ext
2938
        xchg    esi, edi
3193
        xchg    esi, edi
2939
        call    strcmpi
3194
        call    strcmpi
2940
        jnz     .ret
3195
        jnz     .ret
2941
        pop     edi esi
3196
        pop     edi esi
2942
        jmp     strcmpi
3197
        jmp     strcmpi
2943
.ret:
3198
.ret:
2944
        pop     edi esi
3199
        pop     edi esi
2945
        ret
3200
        ret
2946
.greater:
3201
.greater:
2947
        test    esi, esi
3202
        test    esi, esi
2948
        ret
3203
        ret
2949
.1dir:
3204
.1dir:
2950
        test    byte [edi], 10h
3205
        test    byte [edi], 10h
2951
        jnz     .eq1
3206
        jnz     .eq1
2952
.less:
3207
.less:
2953
        xor     edi, edi
3208
        xor     edi, edi
2954
        stc
3209
        stc
2955
        ret
3210
        ret
2956
 
3211
 
2957
compare_ext_rev:
3212
compare_ext_rev:
2958
        push    eax
-
 
2959
        mov     eax, [ebp + panel1_nfa - panel1_data]
-
 
2960
        add     esi, [ebp + panel1_files - panel1_data]
-
 
2961
        add     edi, [ebp + panel1_files - panel1_data]
-
 
2962
        lea     esi, [esi+eax*4+0x20]
-
 
2963
        lea     edi, [edi+eax*4+0x20]
-
 
2964
        pop     eax
-
 
2965
        cmp     word [esi+40], '..'
-
 
2966
        jnz     @f
-
 
2967
        cmp     byte [esi+42], 0
-
 
2968
        jz      .less
-
 
2969
@@:     cmp     word [edi+40], '..'
-
 
2970
        jnz     @f
-
 
2971
        cmp     byte [edi+42], 0
-
 
2972
        jz      .greater
-
 
2973
@@:
-
 
2974
        test    byte [esi], 10h
3213
        test    byte [esi], 10h
2975
        jnz     .1dir
3214
        jnz     .1dir
2976
        test    byte [edi], 10h
3215
        test    byte [edi], 10h
2977
        jnz     .greater
3216
        jnz     .greater
2978
.eq1:
3217
.eq1:
2979
        add     esi, 40
3218
        add     esi, 40
2980
        add     edi, 40
3219
        add     edi, 40
2981
        push    esi edi
3220
        push    esi edi
2982
        call    seek_ext
3221
        call    seek_ext
2983
        xchg    esi, edi
3222
        xchg    esi, edi
2984
        call    seek_ext
3223
        call    seek_ext
2985
        call    strcmpi
3224
        call    strcmpi
2986
        jnz     .ret
3225
        jnz     .ret
2987
        pop     edi esi
3226
        pop     edi esi
2988
        xchg    esi, edi
3227
        xchg    esi, edi
2989
        jmp     strcmpi
3228
        jmp     strcmpi
2990
.ret:
3229
.ret:
2991
        pop     edi esi
3230
        pop     edi esi
2992
        ret
3231
        ret
2993
.greater:
3232
.greater:
2994
        test    esi, esi
3233
        test    esi, esi
2995
        ret
3234
        ret
2996
.1dir:
3235
.1dir:
2997
        test    byte [edi], 10h
3236
        test    byte [edi], 10h
2998
        jnz     .eq1
3237
        jnz     .eq1
2999
.less:
3238
.less:
3000
        xor     edi, edi
3239
        xor     edi, edi
3001
        stc
3240
        stc
3002
        ret
3241
        ret
3003
 
3242
 
3004
seek_ext:
3243
seek_ext:
3005
        push    eax
3244
        push    eax
3006
        xor     eax, eax
3245
        xor     eax, eax
3007
.l:
3246
.l:
3008
        inc     esi
3247
        inc     esi
3009
        cmp     byte [esi-1], '.'
3248
        cmp     byte [esi-1], '.'
3010
        jnz     @f
3249
        jnz     @f
3011
        mov     eax, esi
3250
        mov     eax, esi
3012
@@:
3251
@@:
3013
        cmp     byte [esi-1], 0
3252
        cmp     byte [esi-1], 0
3014
        jnz     .l
3253
        jnz     .l
3015
        test    eax, eax
3254
        test    eax, eax
3016
        jnz     @f
3255
        jnz     @f
3017
        lea     eax, [esi-1]
3256
        lea     eax, [esi-1]
3018
@@:
3257
@@:
3019
        mov     esi, eax
3258
        mov     esi, eax
3020
        pop     eax
3259
        pop     eax
3021
        ret
3260
        ret
3022
 
3261
 
3023
compare_modified:
3262
compare_modified:
3024
        push    eax
-
 
3025
        mov     eax, [ebp + panel1_nfa - panel1_data]
-
 
3026
        add     esi, [ebp + panel1_files - panel1_data]
-
 
3027
        add     edi, [ebp + panel1_files - panel1_data]
-
 
3028
        lea     esi, [esi+eax*4+0x20]
-
 
3029
        lea     edi, [edi+eax*4+0x20]
-
 
3030
        pop     eax
-
 
3031
        cmp     word [esi+40], '..'
-
 
3032
        jnz     @f
-
 
3033
        cmp     byte [esi+42], 0
-
 
3034
        jz      .less
-
 
3035
@@:     cmp     word [edi+40], '..'
-
 
3036
        jnz     @f
-
 
3037
        cmp     byte [edi+42], 0
-
 
3038
        jz      .greater
-
 
3039
@@:
-
 
3040
        test    byte [esi], 10h
3263
        test    byte [esi], 10h
3041
        jnz     .1dir
3264
        jnz     .1dir
3042
        test    byte [edi], 10h
3265
        test    byte [edi], 10h
3043
        jnz     .greater
3266
        jnz     .greater
3044
.eq1:
3267
.eq1:
3045
        push    edi
3268
        push    edi
3046
        mov     edi, [edi+28]
3269
        mov     edi, [edi+28]
3047
        cmp     edi, [esi+28]
3270
        cmp     edi, [esi+28]
3048
        pop     edi
3271
        pop     edi
3049
        jnz     @f
3272
        jnz     @f
3050
        push    edi
3273
        push    edi
3051
        mov     edi, [edi+24]
3274
        mov     edi, [edi+24]
3052
        cmp     edi, [esi+24]
3275
        cmp     edi, [esi+24]
3053
        pop     edi
3276
        pop     edi
3054
        jnz     @f
3277
        jnz     @f
3055
        add     esi, 40
3278
        add     esi, 40
3056
        add     edi, 40
3279
        add     edi, 40
3057
        jmp     strcmpi
3280
        jmp     strcmpi
3058
@@:
3281
@@:
3059
        ret
3282
        ret
3060
.greater:
3283
.greater:
3061
        test    esi, esi
3284
        test    esi, esi
3062
        ret
3285
        ret
3063
.1dir:
3286
.1dir:
3064
        test    byte [edi], 10h
3287
        test    byte [edi], 10h
3065
        jnz     .eq1
3288
        jnz     .eq1
3066
.less:
3289
.less:
3067
        xor     edi, edi
3290
        xor     edi, edi
3068
        stc
3291
        stc
3069
        ret
3292
        ret
3070
 
3293
 
3071
compare_modified_rev:
3294
compare_modified_rev:
3072
        push    eax
-
 
3073
        mov     eax, [ebp + panel1_nfa - panel1_data]
-
 
3074
        add     esi, [ebp + panel1_files - panel1_data]
-
 
3075
        add     edi, [ebp + panel1_files - panel1_data]
-
 
3076
        lea     esi, [esi+eax*4+0x20]
-
 
3077
        lea     edi, [edi+eax*4+0x20]
-
 
3078
        pop     eax
-
 
3079
        cmp     word [esi+40], '..'
-
 
3080
        jnz     @f
-
 
3081
        cmp     byte [esi+42], 0
-
 
3082
        jz      .less
-
 
3083
@@:     cmp     word [edi+40], '..'
-
 
3084
        jnz     @f
-
 
3085
        cmp     byte [edi+42], 0
-
 
3086
        jz      .greater
-
 
3087
@@:
-
 
3088
        test    byte [esi], 10h
3295
        test    byte [esi], 10h
3089
        jnz     .1dir
3296
        jnz     .1dir
3090
        test    byte [edi], 10h
3297
        test    byte [edi], 10h
3091
        jnz     .greater
3298
        jnz     .greater
3092
.eq1:
3299
.eq1:
3093
        push    esi
3300
        push    esi
3094
        mov     esi, [esi+28]
3301
        mov     esi, [esi+28]
3095
        cmp     esi, [edi+28]
3302
        cmp     esi, [edi+28]
3096
        pop     esi
3303
        pop     esi
3097
        jnz     @f
3304
        jnz     @f
3098
        push    esi
3305
        push    esi
3099
        mov     esi, [esi+24]
3306
        mov     esi, [esi+24]
3100
        cmp     esi, [edi+24]
3307
        cmp     esi, [edi+24]
3101
        pop     esi
3308
        pop     esi
3102
        jnz     @f
3309
        jnz     @f
3103
        add     esi, 40
3310
        add     esi, 40
3104
        add     edi, 40
3311
        add     edi, 40
3105
        xchg    esi, edi
3312
        xchg    esi, edi
3106
        jmp     strcmpi
3313
        jmp     strcmpi
3107
@@:
3314
@@:
3108
        ret
3315
        ret
3109
.greater:
3316
.greater:
3110
        test    esi, esi
3317
        test    esi, esi
3111
        ret
3318
        ret
3112
.1dir:
3319
.1dir:
3113
        test    byte [edi], 10h
3320
        test    byte [edi], 10h
3114
        jnz     .eq1
3321
        jnz     .eq1
3115
.less:
3322
.less:
3116
        xor     edi, edi
3323
        xor     edi, edi
3117
        stc
3324
        stc
3118
        ret
3325
        ret
3119
 
3326
 
3120
compare_size:
3327
compare_size:
3121
        push    eax
-
 
3122
        mov     eax, [ebp + panel1_nfa - panel1_data]
-
 
3123
        add     esi, [ebp + panel1_files - panel1_data]
-
 
3124
        add     edi, [ebp + panel1_files - panel1_data]
-
 
3125
        lea     esi, [esi+eax*4+0x20]
-
 
3126
        lea     edi, [edi+eax*4+0x20]
-
 
3127
        pop     eax
-
 
3128
        cmp     word [esi+40], '..'
-
 
3129
        jnz     @f
-
 
3130
        cmp     byte [esi+42], 0
-
 
3131
        jz      .less
-
 
3132
@@:     cmp     word [edi+40], '..'
-
 
3133
        jnz     @f
-
 
3134
        cmp     byte [edi+42], 0
-
 
3135
        jz      .greater
-
 
3136
@@:
-
 
3137
        test    byte [esi], 10h
3328
        test    byte [esi], 10h
3138
        jnz     .1dir
3329
        jnz     .1dir
3139
        test    byte [edi], 10h
3330
        test    byte [edi], 10h
3140
        jnz     .greater
3331
        jnz     .greater
3141
.eq1:
3332
.eq1:
3142
        push    edi
3333
        push    edi
3143
        mov     edi, [edi+36]
3334
        mov     edi, [edi+36]
3144
        cmp     edi, [esi+36]
3335
        cmp     edi, [esi+36]
3145
        pop     edi
3336
        pop     edi
3146
        jnz     @f
3337
        jnz     @f
3147
        push    edi
3338
        push    edi
3148
        mov     edi, [edi+32]
3339
        mov     edi, [edi+32]
3149
        cmp     edi, [esi+32]
3340
        cmp     edi, [esi+32]
3150
        pop     edi
3341
        pop     edi
3151
        jnz     @f
3342
        jnz     @f
3152
        add     esi, 40
3343
        add     esi, 40
3153
        add     edi, 40
3344
        add     edi, 40
3154
        jmp     strcmpi
3345
        jmp     strcmpi
3155
@@:
3346
@@:
3156
        ret
3347
        ret
3157
.greater:
3348
.greater:
3158
        test    esi, esi
3349
        test    esi, esi
3159
        ret
3350
        ret
3160
.1dir:
3351
.1dir:
3161
        test    byte [edi], 10h
3352
        test    byte [edi], 10h
3162
        jnz     .eq1
3353
        jnz     .eq1
3163
.less:
3354
.less:
3164
        xor     edi, edi
3355
        xor     edi, edi
3165
        stc
3356
        stc
3166
        ret
3357
        ret
3167
 
3358
 
3168
compare_size_rev:
3359
compare_size_rev:
3169
        push    eax
-
 
3170
        mov     eax, [ebp + panel1_nfa - panel1_data]
-
 
3171
        add     esi, [ebp + panel1_files - panel1_data]
-
 
3172
        add     edi, [ebp + panel1_files - panel1_data]
-
 
3173
        lea     esi, [esi+eax*4+0x20]
-
 
3174
        lea     edi, [edi+eax*4+0x20]
-
 
3175
        pop     eax
-
 
3176
        cmp     word [esi+40], '..'
-
 
3177
        jnz     @f
-
 
3178
        cmp     byte [esi+42], 0
-
 
3179
        jz      .less
-
 
3180
@@:     cmp     word [edi+40], '..'
-
 
3181
        jnz     @f
-
 
3182
        cmp     byte [edi+42], 0
-
 
3183
        jz      .greater
-
 
3184
@@:
-
 
3185
        test    byte [esi], 10h
3360
        test    byte [esi], 10h
3186
        jnz     .1dir
3361
        jnz     .1dir
3187
        test    byte [edi], 10h
3362
        test    byte [edi], 10h
3188
        jnz     .greater
3363
        jnz     .greater
3189
.eq1:
3364
.eq1:
3190
        push    esi
3365
        push    esi
3191
        mov     esi, [esi+36]
3366
        mov     esi, [esi+36]
3192
        cmp     esi, [edi+36]
3367
        cmp     esi, [edi+36]
3193
        pop     esi
3368
        pop     esi
3194
        jnz     @f
3369
        jnz     @f
3195
        push    esi
3370
        push    esi
3196
        mov     esi, [esi+32]
3371
        mov     esi, [esi+32]
3197
        cmp     esi, [edi+32]
3372
        cmp     esi, [edi+32]
3198
        pop     esi
3373
        pop     esi
3199
        jnz     @f
3374
        jnz     @f
3200
        add     esi, 40
3375
        add     esi, 40
3201
        add     edi, 40
3376
        add     edi, 40
3202
        xchg    esi, edi
3377
        xchg    esi, edi
3203
        jmp     strcmpi
3378
        jmp     strcmpi
3204
@@:
3379
@@:
3205
        ret
3380
        ret
3206
.greater:
3381
.greater:
3207
        test    esi, esi
3382
        test    esi, esi
3208
        ret
3383
        ret
3209
.1dir:
3384
.1dir:
3210
        test    byte [edi], 10h
3385
        test    byte [edi], 10h
3211
        jnz     .eq1
3386
        jnz     .eq1
3212
.less:
3387
.less:
3213
        xor     edi, edi
3388
        xor     edi, edi
3214
        stc
3389
        stc
3215
        ret
3390
        ret
3216
 
3391
 
3217
compare_unordered:
3392
compare_unordered:
3218
        cmp     esi, edi
3393
        cmp     esi, edi
3219
        ret
3394
        ret
3220
compare_unordered_rev:
3395
compare_unordered_rev:
3221
        push    eax
-
 
3222
        mov     eax, [ebp + panel1_nfa - panel1_data]
-
 
3223
        add     esi, [ebp + panel1_files - panel1_data]
-
 
3224
        add     edi, [ebp + panel1_files - panel1_data]
-
 
3225
        lea     esi, [esi+eax*4+0x20]
-
 
3226
        lea     edi, [edi+eax*4+0x20]
-
 
3227
        pop     eax
-
 
3228
        cmp     word [esi+40], '..'
-
 
3229
        jnz     @f
-
 
3230
        cmp     byte [esi+42], 0
-
 
3231
        jz      .less
-
 
3232
@@:     cmp     word [edi+40], '..'
-
 
3233
        jnz     @f
-
 
3234
        cmp     byte [edi+42], 0
-
 
3235
        jz      .greater
-
 
3236
@@:
-
 
3237
        cmp     edi, esi
3396
        cmp     edi, esi
3238
        ret
3397
        ret
3239
.greater:
-
 
3240
        test    esi, esi
-
 
3241
        ret
-
 
3242
.less:
-
 
3243
        xor     edi, edi
-
 
3244
        stc
-
 
3245
        ret
-
 
3246
 
3398
 
3247
compare_created:
-
 
3248
        push    eax
-
 
3249
        mov     eax, [ebp + panel1_nfa - panel1_data]
-
 
3250
        add     esi, [ebp + panel1_files - panel1_data]
-
 
3251
        add     edi, [ebp + panel1_files - panel1_data]
-
 
3252
        lea     esi, [esi+eax*4+0x20]
-
 
3253
        lea     edi, [edi+eax*4+0x20]
-
 
3254
        pop     eax
-
 
3255
        cmp     word [esi+40], '..'
-
 
3256
        jnz     @f
-
 
3257
        cmp     byte [esi+42], 0
-
 
3258
        jz      .less
-
 
3259
@@:     cmp     word [edi+40], '..'
-
 
3260
        jnz     @f
-
 
3261
        cmp     byte [edi+42], 0
-
 
3262
        jz      .greater
-
 
3263
@@:
3399
compare_created:
3264
        test    byte [esi], 10h
3400
        test    byte [esi], 10h
3265
        jnz     .1dir
3401
        jnz     .1dir
3266
        test    byte [edi], 10h
3402
        test    byte [edi], 10h
3267
        jnz     .greater
3403
        jnz     .greater
3268
.eq1:
3404
.eq1:
3269
        push    edi
3405
        push    edi
3270
        mov     edi, [edi+12]
3406
        mov     edi, [edi+12]
3271
        cmp     edi, [esi+12]
3407
        cmp     edi, [esi+12]
3272
        pop     edi
3408
        pop     edi
3273
        jnz     @f
3409
        jnz     @f
3274
        push    edi
3410
        push    edi
3275
        mov     edi, [edi+8]
3411
        mov     edi, [edi+8]
3276
        cmp     edi, [esi+8]
3412
        cmp     edi, [esi+8]
3277
        pop     edi
3413
        pop     edi
3278
        jnz     @f
3414
        jnz     @f
3279
        add     esi, 40
3415
        add     esi, 40
3280
        add     edi, 40
3416
        add     edi, 40
3281
        jmp     strcmpi
3417
        jmp     strcmpi
3282
@@:
3418
@@:
3283
        ret
3419
        ret
3284
.greater:
3420
.greater:
3285
        test    esi, esi
3421
        test    esi, esi
3286
        ret
3422
        ret
3287
.1dir:
3423
.1dir:
3288
        test    byte [edi], 10h
3424
        test    byte [edi], 10h
3289
        jnz     .eq1
3425
        jnz     .eq1
3290
.less:
3426
.less:
3291
        xor     edi, edi
3427
        xor     edi, edi
3292
        stc
3428
        stc
3293
        ret
3429
        ret
3294
 
3430
 
3295
compare_created_rev:
3431
compare_created_rev:
3296
        push    eax
-
 
3297
        mov     eax, [ebp + panel1_nfa - panel1_data]
-
 
3298
        add     esi, [ebp + panel1_files - panel1_data]
-
 
3299
        add     edi, [ebp + panel1_files - panel1_data]
-
 
3300
        lea     esi, [esi+eax*4+0x20]
-
 
3301
        lea     edi, [edi+eax*4+0x20]
-
 
3302
        pop     eax
-
 
3303
        cmp     word [esi+40], '..'
-
 
3304
        jnz     @f
-
 
3305
        cmp     byte [esi+42], 0
-
 
3306
        jz      .less
-
 
3307
@@:     cmp     word [edi+40], '..'
-
 
3308
        jnz     @f
-
 
3309
        cmp     byte [edi+42], 0
-
 
3310
        jz      .greater
-
 
3311
@@:
-
 
3312
        test    byte [esi], 10h
3432
        test    byte [esi], 10h
3313
        jnz     .1dir
3433
        jnz     .1dir
3314
        test    byte [edi], 10h
3434
        test    byte [edi], 10h
3315
        jnz     .greater
3435
        jnz     .greater
3316
.eq1:
3436
.eq1:
3317
        push    esi
3437
        push    esi
3318
        mov     esi, [esi+12]
3438
        mov     esi, [esi+12]
3319
        cmp     esi, [edi+12]
3439
        cmp     esi, [edi+12]
3320
        pop     esi
3440
        pop     esi
3321
        jnz     @f
3441
        jnz     @f
3322
        push    esi
3442
        push    esi
3323
        mov     esi, [esi+8]
3443
        mov     esi, [esi+8]
3324
        cmp     esi, [edi+8]
3444
        cmp     esi, [edi+8]
3325
        pop     esi
3445
        pop     esi
3326
        jnz     @f
3446
        jnz     @f
3327
        add     esi, 40
3447
        add     esi, 40
3328
        add     edi, 40
3448
        add     edi, 40
3329
        xchg    esi, edi
3449
        xchg    esi, edi
3330
        jmp     strcmpi
3450
        jmp     strcmpi
3331
@@:
3451
@@:
3332
        ret
3452
        ret
3333
.greater:
3453
.greater:
3334
        test    esi, esi
3454
        test    esi, esi
3335
        ret
3455
        ret
3336
.1dir:
3456
.1dir:
3337
        test    byte [edi], 10h
3457
        test    byte [edi], 10h
3338
        jnz     .eq1
3458
        jnz     .eq1
3339
.less:
3459
.less:
3340
        xor     edi, edi
3460
        xor     edi, edi
3341
        stc
3461
        stc
3342
        ret
3462
        ret
3343
 
3463
 
3344
compare_accessed:
3464
compare_accessed:
3345
        push    eax
-
 
3346
        mov     eax, [ebp + panel1_nfa - panel1_data]
-
 
3347
        add     esi, [ebp + panel1_files - panel1_data]
-
 
3348
        add     edi, [ebp + panel1_files - panel1_data]
-
 
3349
        lea     esi, [esi+eax*4+0x20]
-
 
3350
        lea     edi, [edi+eax*4+0x20]
-
 
3351
        pop     eax
-
 
3352
        cmp     word [esi+40], '..'
-
 
3353
        jnz     @f
-
 
3354
        cmp     byte [esi+42], 0
-
 
3355
        jz      .less
-
 
3356
@@:     cmp     word [edi+40], '..'
-
 
3357
        jnz     @f
-
 
3358
        cmp     byte [edi+42], 0
-
 
3359
        jz      .greater
-
 
3360
@@:
-
 
3361
        test    byte [esi], 10h
3465
        test    byte [esi], 10h
3362
        jnz     .1dir
3466
        jnz     .1dir
3363
        test    byte [edi], 10h
3467
        test    byte [edi], 10h
3364
        jnz     .greater
3468
        jnz     .greater
3365
.eq1:
3469
.eq1:
3366
        push    edi
3470
        push    edi
3367
        mov     edi, [edi+20]
3471
        mov     edi, [edi+20]
3368
        cmp     edi, [esi+20]
3472
        cmp     edi, [esi+20]
3369
        pop     edi
3473
        pop     edi
3370
        jnz     @f
3474
        jnz     @f
3371
        push    edi
3475
        push    edi
3372
        mov     edi, [edi+16]
3476
        mov     edi, [edi+16]
3373
        cmp     edi, [esi+16]
3477
        cmp     edi, [esi+16]
3374
        pop     edi
3478
        pop     edi
3375
        jnz     @f
3479
        jnz     @f
3376
        add     esi, 40
3480
        add     esi, 40
3377
        add     edi, 40
3481
        add     edi, 40
3378
        jmp     strcmpi
3482
        jmp     strcmpi
3379
@@:
3483
@@:
3380
        ret
3484
        ret
3381
.greater:
3485
.greater:
3382
        test    esi, esi
3486
        test    esi, esi
3383
        ret
3487
        ret
3384
.1dir:
3488
.1dir:
3385
        test    byte [edi], 10h
3489
        test    byte [edi], 10h
3386
        jnz     .eq1
3490
        jnz     .eq1
3387
.less:
3491
.less:
3388
        xor     edi, edi
3492
        xor     edi, edi
3389
        stc
3493
        stc
3390
        ret
3494
        ret
3391
 
3495
 
3392
compare_accessed_rev:
3496
compare_accessed_rev:
3393
        push    eax
-
 
3394
        mov     eax, [ebp + panel1_nfa - panel1_data]
-
 
3395
        add     esi, [ebp + panel1_files - panel1_data]
-
 
3396
        add     edi, [ebp + panel1_files - panel1_data]
-
 
3397
        lea     esi, [esi+eax*4+0x20]
-
 
3398
        lea     edi, [edi+eax*4+0x20]
-
 
3399
        pop     eax
-
 
3400
        cmp     word [esi+40], '..'
-
 
3401
        jnz     @f
-
 
3402
        cmp     byte [esi+42], 0
-
 
3403
        jz      .less
-
 
3404
@@:     cmp     word [edi+40], '..'
-
 
3405
        jnz     @f
-
 
3406
        cmp     byte [edi+42], 0
-
 
3407
        jz      .greater
-
 
3408
@@:
-
 
3409
        test    byte [esi], 10h
3497
        test    byte [esi], 10h
3410
        jnz     .1dir
3498
        jnz     .1dir
3411
        test    byte [edi], 10h
3499
        test    byte [edi], 10h
3412
        jnz     .greater
3500
        jnz     .greater
3413
.eq1:
3501
.eq1:
3414
        push    esi
3502
        push    esi
3415
        mov     esi, [esi+20]
3503
        mov     esi, [esi+20]
3416
        cmp     esi, [edi+20]
3504
        cmp     esi, [edi+20]
3417
        pop     esi
3505
        pop     esi
3418
        jnz     @f
3506
        jnz     @f
3419
        push    esi
3507
        push    esi
3420
        mov     esi, [esi+16]
3508
        mov     esi, [esi+16]
3421
        cmp     esi, [edi+16]
3509
        cmp     esi, [edi+16]
3422
        pop     esi
3510
        pop     esi
3423
        jnz     @f
3511
        jnz     @f
3424
        add     esi, 40
3512
        add     esi, 40
3425
        add     edi, 40
3513
        add     edi, 40
3426
        xchg    esi, edi
3514
        xchg    esi, edi
3427
        jmp     strcmpi
3515
        jmp     strcmpi
3428
@@:
3516
@@:
3429
        ret
3517
        ret
3430
.greater:
3518
.greater:
3431
        test    esi, esi
3519
        test    esi, esi
3432
        ret
3520
        ret
3433
.1dir:
3521
.1dir:
3434
        test    byte [edi], 10h
3522
        test    byte [edi], 10h
3435
        jnz     .eq1
3523
        jnz     .eq1
3436
.less:
3524
.less:
3437
        xor     edi, edi
3525
        xor     edi, edi
3438
        stc
3526
        stc
3439
        ret
3527
        ret
3440
 
3528
 
3441
if 0
3529
if 0
3442
match_mask:
3530
match_mask:
3443
; in: esi->name, edi->mask
3531
; in: esi->name, edi->mask
3444
; out: CF clear <=> match
3532
; out: CF clear <=> match
3445
        pusha
3533
        pusha
3446
        xchg    esi, edi
3534
        xchg    esi, edi
3447
.main_cycle:
3535
.main_cycle:
3448
        push    esi
3536
        push    esi
3449
@@:
3537
@@:
3450
        lodsb
3538
        lodsb
3451
        test    al, al
3539
        test    al, al
3452
        jz      @f
3540
        jz      @f
3453
        cmp     al, ','
3541
        cmp     al, ','
3454
        jz      @f
3542
        jz      @f
3455
        cmp     al, '|'
3543
        cmp     al, '|'
3456
        jnz     @b
3544
        jnz     @b
3457
@@:
3545
@@:
3458
        mov     [esi-1], byte 0
3546
        mov     [esi-1], byte 0
3459
        xchg    esi, [esp]
3547
        xchg    esi, [esp]
3460
        call    match_single_mask
3548
        call    match_single_mask
3461
        pop     esi
3549
        pop     esi
3462
        mov     [esi-1], al
3550
        mov     [esi-1], al
3463
        jnc     .found
3551
        jnc     .found
3464
        cmp     al, ','
3552
        cmp     al, ','
3465
        jz      .main_cycle
3553
        jz      .main_cycle
3466
.done_fail:
3554
.done_fail:
3467
        stc
3555
        stc
3468
        popa
3556
        popa
3469
        ret
3557
        ret
3470
.found:
3558
.found:
3471
        test    al, al
3559
        test    al, al
3472
        jz      .done_succ
3560
        jz      .done_succ
3473
        cmp     al, '|'
3561
        cmp     al, '|'
3474
        jz      .test_exclude
3562
        jz      .test_exclude
3475
        lodsb
3563
        lodsb
3476
        jmp     .found
3564
        jmp     .found
3477
.done_succ:
3565
.done_succ:
3478
        clc
3566
        clc
3479
        popa
3567
        popa
3480
        ret
3568
        ret
3481
.test_exclude:
3569
.test_exclude:
3482
        push    esi
3570
        push    esi
3483
@@:
3571
@@:
3484
        lodsb
3572
        lodsb
3485
        test    al, al
3573
        test    al, al
3486
        jz      @f
3574
        jz      @f
3487
        cmp     al, ','
3575
        cmp     al, ','
3488
        jnz     @b
3576
        jnz     @b
3489
@@:
3577
@@:
3490
        mov     byte [esi-1], 0
3578
        mov     byte [esi-1], 0
3491
        xchg    esi, [esp]
3579
        xchg    esi, [esp]
3492
        call    match_single_mask
3580
        call    match_single_mask
3493
        pop     esi
3581
        pop     esi
3494
        mov     [esi-1], al
3582
        mov     [esi-1], al
3495
        jnc     .done_fail
3583
        jnc     .done_fail
3496
        test    al, al
3584
        test    al, al
3497
        jz      .done_succ
3585
        jz      .done_succ
3498
        jmp     .test_exclude
3586
        jmp     .test_exclude
3499
 
3587
 
3500
match_single_mask:
3588
match_single_mask:
3501
; in: esi->mask, edi->name
3589
; in: esi->mask, edi->name
3502
; out: CF clear <=> match
3590
; out: CF clear <=> match
3503
        pusha
3591
        pusha
3504
.mask_symbol:
3592
.mask_symbol:
3505
        lodsb
3593
        lodsb
3506
        test    al, al
3594
        test    al, al
3507
        jz      .mask_done
3595
        jz      .mask_done
3508
        cmp     al, '*'
3596
        cmp     al, '*'
3509
        jz      .asterisk
3597
        jz      .asterisk
3510
        cmp     al, '?'
3598
        cmp     al, '?'
3511
        jz      .quest
3599
        jz      .quest
3512
        cmp     al, '['
3600
        cmp     al, '['
3513
        jz      .list
3601
        jz      .list
3514
        call    match_symbol
3602
        call    match_symbol
3515
        jnz     .done_fail
3603
        jnz     .done_fail
3516
        inc     edi
3604
        inc     edi
3517
        jmp     .mask_symbol
3605
        jmp     .mask_symbol
3518
.done_fail:
3606
.done_fail:
3519
        stc
3607
        stc
3520
        popa
3608
        popa
3521
        ret
3609
        ret
3522
.mask_done:
3610
.mask_done:
3523
        scasb
3611
        scasb
3524
        jnz     .done_fail
3612
        jnz     .done_fail
3525
.done_succ:
3613
.done_succ:
3526
        clc
3614
        clc
3527
        popa
3615
        popa
3528
        ret
3616
        ret
3529
.quest:
3617
.quest:
3530
        mov     al, 0
3618
        mov     al, 0
3531
        scasb
3619
        scasb
3532
        jz      .done_fail
3620
        jz      .done_fail
3533
        jmp     .mask_symbol
3621
        jmp     .mask_symbol
3534
.list:
3622
.list:
3535
        lodsb
3623
        lodsb
3536
        cmp     al, ']'
3624
        cmp     al, ']'
3537
        jz      .done_fail
3625
        jz      .done_fail
3538
        cmp     byte [esi+1], '-'
3626
        cmp     byte [esi+1], '-'
3539
        jz      .range
3627
        jz      .range
3540
        call    match_symbol
3628
        call    match_symbol
3541
        jnz     .list
3629
        jnz     .list
3542
.listok:
3630
.listok:
3543
        inc     edi
3631
        inc     edi
3544
@@:
3632
@@:
3545
        lodsb
3633
        lodsb
3546
        cmp     al, ']'
3634
        cmp     al, ']'
3547
        jnz     @b
3635
        jnz     @b
3548
        jmp     .mask_symbol
3636
        jmp     .mask_symbol
3549
.range:
3637
.range:
3550
        call    match_symbol
3638
        call    match_symbol
3551
        ja      @f
3639
        ja      @f
3552
        mov     al, [esi+2]
3640
        mov     al, [esi+2]
3553
        call    match_symbol
3641
        call    match_symbol
3554
        jae     .listok
3642
        jae     .listok
3555
@@:
3643
@@:
3556
        inc     esi
3644
        inc     esi
3557
        jmp     .list
3645
        jmp     .list
3558
.asterisk:
3646
.asterisk:
3559
        cmp     byte [esi], 0
3647
        cmp     byte [esi], 0
3560
        jz      .done_succ
3648
        jz      .done_succ
3561
        cmp     byte [esi], '?'
3649
        cmp     byte [esi], '?'
3562
        jnz     @f
3650
        jnz     @f
3563
        mov     al, 0
3651
        mov     al, 0
3564
        scasb
3652
        scasb
3565
        jz      .done_fail
3653
        jz      .done_fail
3566
        inc     esi
3654
        inc     esi
3567
        jmp     .asterisk
3655
        jmp     .asterisk
3568
@@:
3656
@@:
3569
        cmp     byte [esi], '['
3657
        cmp     byte [esi], '['
3570
        jz      .asterisk_common
3658
        jz      .asterisk_common
3571
; the mask is ...*...
3659
; the mask is ...*...
3572
.asterisk_normal:
3660
.asterisk_normal:
3573
        mov     al, [esi]
3661
        mov     al, [esi]
3574
@@:
3662
@@:
3575
        cmp     byte [edi], 0
3663
        cmp     byte [edi], 0
3576
        jz      .done_fail
3664
        jz      .done_fail
3577
        call    match_symbol
3665
        call    match_symbol
3578
        jz      @f
3666
        jz      @f
3579
        inc     edi
3667
        inc     edi
3580
        jmp     @b
3668
        jmp     @b
3581
@@:
3669
@@:
3582
        inc     edi
3670
        inc     edi
3583
        inc     esi
3671
        inc     esi
3584
        call    match_single_mask
3672
        call    match_single_mask
3585
        jnc     .done_succ
3673
        jnc     .done_succ
3586
        dec     esi
3674
        dec     esi
3587
        jmp     .asterisk_normal
3675
        jmp     .asterisk_normal
3588
.asterisk_common:
3676
.asterisk_common:
3589
        push    edi
3677
        push    edi
3590
@@:
3678
@@:
3591
        call    match_single_mask
3679
        call    match_single_mask
3592
        jnc     @f
3680
        jnc     @f
3593
        mov     al, 0
3681
        mov     al, 0
3594
        scasb
3682
        scasb
3595
        jnz     @b
3683
        jnz     @b
3596
        pop     edi
3684
        pop     edi
3597
        jmp     .done_fail
3685
        jmp     .done_fail
3598
@@:
3686
@@:
3599
        pop     edi
3687
        pop     edi
3600
        jmp     .done_succ
3688
        jmp     .done_succ
3601
 
3689
 
3602
match_mask_rev:
3690
match_mask_rev:
3603
; in: esi->name, edx->end of name, edi->mask
3691
; in: esi->name, edx->end of name, edi->mask
3604
; out: CF clear <=> match
3692
; out: CF clear <=> match
3605
        pusha
3693
        pusha
3606
        xchg    esi, edx
3694
        xchg    esi, edx
3607
        xchg    esi, edi
3695
        xchg    esi, edi
3608
.main_cycle:
3696
.main_cycle:
3609
        mov     ecx, esi
3697
        mov     ecx, esi
3610
@@:
3698
@@:
3611
        lodsb
3699
        lodsb
3612
        test    al, al
3700
        test    al, al
3613
        jz      @f
3701
        jz      @f
3614
        cmp     al, ','
3702
        cmp     al, ','
3615
        jz      @f
3703
        jz      @f
3616
        cmp     al, '|'
3704
        cmp     al, '|'
3617
        jnz     @b
3705
        jnz     @b
3618
@@:
3706
@@:
3619
        dec     esi
3707
        dec     esi
3620
        mov     [esi], byte 0
3708
        mov     [esi], byte 0
3621
        call    match_single_mask_rev2
3709
        call    match_single_mask_rev2
3622
        mov     [esi], al
3710
        mov     [esi], al
3623
        inc     esi
3711
        inc     esi
3624
        jnc     .found
3712
        jnc     .found
3625
        cmp     al, ','
3713
        cmp     al, ','
3626
        jz      .main_cycle
3714
        jz      .main_cycle
3627
.done_fail:
3715
.done_fail:
3628
        stc
3716
        stc
3629
        popa
3717
        popa
3630
        ret
3718
        ret
3631
.found:
3719
.found:
3632
        test    al, al
3720
        test    al, al
3633
        jz      .done_succ
3721
        jz      .done_succ
3634
        cmp     al, '|'
3722
        cmp     al, '|'
3635
        jz      .test_exclude
3723
        jz      .test_exclude
3636
        lodsb
3724
        lodsb
3637
        jmp     .found
3725
        jmp     .found
3638
.done_succ:
3726
.done_succ:
3639
        clc
3727
        clc
3640
        popa
3728
        popa
3641
        ret
3729
        ret
3642
.test_exclude:
3730
.test_exclude:
3643
        mov     ecx, esi
3731
        mov     ecx, esi
3644
@@:
3732
@@:
3645
        lodsb
3733
        lodsb
3646
        test    al, al
3734
        test    al, al
3647
        jz      @f
3735
        jz      @f
3648
        cmp     al, ','
3736
        cmp     al, ','
3649
        jnz     @b
3737
        jnz     @b
3650
@@:
3738
@@:
3651
        dec     esi
3739
        dec     esi
3652
        mov     byte [esi], 0
3740
        mov     byte [esi], 0
3653
        call    match_single_mask_rev2
3741
        call    match_single_mask_rev2
3654
        mov     [esi], al
3742
        mov     [esi], al
3655
        inc     esi
3743
        inc     esi
3656
        jnc     .done_fail
3744
        jnc     .done_fail
3657
        test    al, al
3745
        test    al, al
3658
        jz      .done_succ
3746
        jz      .done_succ
3659
        jmp     .test_exclude
3747
        jmp     .test_exclude
3660
 
3748
 
3661
match_single_mask_rev2:
3749
match_single_mask_rev2:
3662
        pusha
3750
        pusha
3663
        jmp     match_single_mask_rev.mask_symbol
3751
        jmp     match_single_mask_rev.mask_symbol
3664
match_single_mask_rev:
3752
match_single_mask_rev:
3665
; in: esi->mask, edi->end of name, edx->start of name
3753
; in: esi->mask, edi->end of name, edx->start of name
3666
; out: CF clear <=> match
3754
; out: CF clear <=> match
3667
        pusha
3755
        pusha
3668
        mov     ecx, esi
3756
        mov     ecx, esi
3669
@@:
3757
@@:
3670
        lodsb
3758
        lodsb
3671
        test    al, al
3759
        test    al, al
3672
        jnz     @b
3760
        jnz     @b
3673
        dec     esi
3761
        dec     esi
3674
; esi->end of mask, ecx->start of mask
3762
; esi->end of mask, ecx->start of mask
3675
.mask_symbol:
3763
.mask_symbol:
3676
        dec     esi
3764
        dec     esi
3677
        cmp     esi, ecx
3765
        cmp     esi, ecx
3678
        jb      .mask_done
3766
        jb      .mask_done
3679
        mov     al, [esi]
3767
        mov     al, [esi]
3680
        cmp     al, '*'
3768
        cmp     al, '*'
3681
        jz      .asterisk
3769
        jz      .asterisk
3682
        cmp     al, '?'
3770
        cmp     al, '?'
3683
        jz      .quest
3771
        jz      .quest
3684
        cmp     al, ']'
3772
        cmp     al, ']'
3685
        jz      .list
3773
        jz      .list
3686
        dec     edi
3774
        dec     edi
3687
        cmp     edi, edx
3775
        cmp     edi, edx
3688
        jb      .done_fail
3776
        jb      .done_fail
3689
        call    match_symbol
3777
        call    match_symbol
3690
        jz      .mask_symbol
3778
        jz      .mask_symbol
3691
.done_fail:
3779
.done_fail:
3692
        stc
3780
        stc
3693
        popa
3781
        popa
3694
        ret
3782
        ret
3695
.mask_done:
3783
.mask_done:
3696
        cmp     edi, edx
3784
        cmp     edi, edx
3697
        jnz     .done_fail
3785
        jnz     .done_fail
3698
.done_succ:
3786
.done_succ:
3699
        clc
3787
        clc
3700
        popa
3788
        popa
3701
        ret
3789
        ret
3702
.quest:
3790
.quest:
3703
        dec     edi
3791
        dec     edi
3704
        cmp     edi, edx
3792
        cmp     edi, edx
3705
        jb      .done_fail
3793
        jb      .done_fail
3706
        jmp     .mask_symbol
3794
        jmp     .mask_symbol
3707
.list:
3795
.list:
3708
        dec     edi
3796
        dec     edi
3709
        cmp     edi, edx
3797
        cmp     edi, edx
3710
        jb      .done_fail
3798
        jb      .done_fail
3711
.list_check:
3799
.list_check:
3712
        dec     esi
3800
        dec     esi
3713
        cmp     esi, ecx
3801
        cmp     esi, ecx
3714
        jbe     .done_fail
3802
        jbe     .done_fail
3715
        mov     al, [esi]
3803
        mov     al, [esi]
3716
        cmp     al, '['
3804
        cmp     al, '['
3717
        jz      .done_fail
3805
        jz      .done_fail
3718
        cmp     byte [esi-1], '-'
3806
        cmp     byte [esi-1], '-'
3719
        jz      .range
3807
        jz      .range
3720
        call    match_symbol
3808
        call    match_symbol
3721
        jnz     .list_check
3809
        jnz     .list_check
3722
.listok:
3810
.listok:
3723
@@:
3811
@@:
3724
        dec     esi
3812
        dec     esi
3725
        cmp     esi, ecx
3813
        cmp     esi, ecx
3726
        jb      .done_fail
3814
        jb      .done_fail
3727
        cmp     byte [esi], '['
3815
        cmp     byte [esi], '['
3728
        jnz     @b
3816
        jnz     @b
3729
        jmp     .mask_symbol
3817
        jmp     .mask_symbol
3730
.range:
3818
.range:
3731
        call    match_symbol
3819
        call    match_symbol
3732
        jb      @f
3820
        jb      @f
3733
        mov     al, [esi-2]
3821
        mov     al, [esi-2]
3734
        call    match_symbol
3822
        call    match_symbol
3735
        jbe     .listok
3823
        jbe     .listok
3736
@@:
3824
@@:
3737
        dec     esi
3825
        dec     esi
3738
        dec     esi
3826
        dec     esi
3739
        jmp     .list_check
3827
        jmp     .list_check
3740
.asterisk:
3828
.asterisk:
3741
        cmp     esi, ecx
3829
        cmp     esi, ecx
3742
        jz      .done_succ
3830
        jz      .done_succ
3743
        cmp     byte [esi-1], '?'
3831
        cmp     byte [esi-1], '?'
3744
        jnz     @f
3832
        jnz     @f
3745
        cmp     edi, edx
3833
        cmp     edi, edx
3746
        jz      .done_fail
3834
        jz      .done_fail
3747
        dec     esi
3835
        dec     esi
3748
        jmp     .asterisk
3836
        jmp     .asterisk
3749
@@:
3837
@@:
3750
        cmp     byte [esi-1], ']'
3838
        cmp     byte [esi-1], ']'
3751
        jz      .asterisk_common
3839
        jz      .asterisk_common
3752
; the mask is ...*...
3840
; the mask is ...*...
3753
.asterisk_normal:
3841
.asterisk_normal:
3754
        mov     al, [esi-1]
3842
        mov     al, [esi-1]
3755
@@:
3843
@@:
3756
        cmp     edi, edx
3844
        cmp     edi, edx
3757
        jz      .done_fail
3845
        jz      .done_fail
3758
        call    match_symbol
3846
        call    match_symbol
3759
        jz      @f
3847
        jz      @f
3760
        dec     edi
3848
        dec     edi
3761
        jmp     @b
3849
        jmp     @b
3762
@@:
3850
@@:
3763
        dec     edi
3851
        dec     edi
3764
        dec     esi
3852
        dec     esi
3765
        call    match_single_mask_rev2
3853
        call    match_single_mask_rev2
3766
        jnc     .done_succ
3854
        jnc     .done_succ
3767
        inc     esi
3855
        inc     esi
3768
        jmp     .asterisk_normal
3856
        jmp     .asterisk_normal
3769
.asterisk_common:
3857
.asterisk_common:
3770
        push    edi
3858
        push    edi
3771
@@:
3859
@@:
3772
        call    match_single_mask_rev2
3860
        call    match_single_mask_rev2
3773
        jnc     @f
3861
        jnc     @f
3774
        dec     edi
3862
        dec     edi
3775
        cmp     edi, edx
3863
        cmp     edi, edx
3776
        jae     @b
3864
        jae     @b
3777
        pop     edi
3865
        pop     edi
3778
        jmp     .done_fail
3866
        jmp     .done_fail
3779
@@:
3867
@@:
3780
        pop     edi
3868
        pop     edi
3781
        jmp     .done_succ
3869
        jmp     .done_succ
3782
end if
3870
end if
3783
 
3871
 
3784
tolower:
3872
tolower:
3785
        cmp     al, 'A'
3873
        cmp     al, 'A'
3786
        jb      @f
3874
        jb      @f
3787
        cmp     al, 'Z'
3875
        cmp     al, 'Z'
3788
        ja      @f
3876
        ja      @f
3789
        add     al, ' '
3877
        add     al, ' '
3790
@@:     ret
3878
@@:     ret
3791
 
3879
 
3792
match_symbol:
3880
match_symbol:
3793
; in: al,[edi]=symbols
3881
; in: al,[edi]=symbols
3794
; out: flags as 'cmp al,[edi]'
3882
; out: flags as 'cmp al,[edi]'
3795
        push    eax
3883
        push    eax
3796
        call    tolower
3884
        call    tolower
3797
        mov     ah, [edi]
3885
        mov     ah, [edi]
3798
        xchg    al, ah
3886
        xchg    al, ah
3799
        call    tolower
3887
        call    tolower
3800
        cmp     ah, al
3888
        cmp     ah, al
3801
        pop     eax
3889
        pop     eax
3802
        ret
3890
        ret
3803
 
3891
 
3804
match_mask_rev_lowercase:
3892
match_mask_rev_lowercase:
3805
; in: esi->name, edx->end of name, edi->mask
3893
; in: esi->name, edx->end of name, edi->mask
3806
; out: CF clear <=> match
3894
; out: CF clear <=> match
3807
        pusha
3895
        pusha
3808
        xchg    esi, edx
3896
        xchg    esi, edx
3809
        xchg    esi, edi
3897
        xchg    esi, edi
3810
.main_cycle:
3898
.main_cycle:
3811
        mov     ecx, esi
3899
        mov     ecx, esi
3812
@@:
3900
@@:
3813
        lodsb
3901
        lodsb
3814
        test    al, al
3902
        test    al, al
3815
        jz      @f
3903
        jz      @f
3816
        cmp     al, ','
3904
        cmp     al, ','
3817
        jz      @f
3905
        jz      @f
3818
        cmp     al, '|'
3906
        cmp     al, '|'
3819
        jnz     @b
3907
        jnz     @b
3820
@@:
3908
@@:
3821
        dec     esi
3909
        dec     esi
3822
        mov     [esi], byte 0
3910
        mov     [esi], byte 0
3823
        call    match_single_mask_rev_lowercase
3911
        call    match_single_mask_rev_lowercase
3824
        mov     [esi], al
3912
        mov     [esi], al
3825
        inc     esi
3913
        inc     esi
3826
        jnc     .found
3914
        jnc     .found
3827
        cmp     al, ','
3915
        cmp     al, ','
3828
        jz      .main_cycle
3916
        jz      .main_cycle
3829
.done_fail:
3917
.done_fail:
3830
        stc
3918
        stc
3831
        popa
3919
        popa
3832
        ret
3920
        ret
3833
.found:
3921
.found:
3834
        test    al, al
3922
        test    al, al
3835
        jz      .done_succ
3923
        jz      .done_succ
3836
        cmp     al, '|'
3924
        cmp     al, '|'
3837
        jz      .test_exclude
3925
        jz      .test_exclude
3838
        lodsb
3926
        lodsb
3839
        jmp     .found
3927
        jmp     .found
3840
.done_succ:
3928
.done_succ:
3841
        clc
3929
        clc
3842
        popa
3930
        popa
3843
        ret
3931
        ret
3844
.test_exclude:
3932
.test_exclude:
3845
        mov     ecx, esi
3933
        mov     ecx, esi
3846
@@:
3934
@@:
3847
        lodsb
3935
        lodsb
3848
        test    al, al
3936
        test    al, al
3849
        jz      @f
3937
        jz      @f
3850
        cmp     al, ','
3938
        cmp     al, ','
3851
        jnz     @b
3939
        jnz     @b
3852
@@:
3940
@@:
3853
        dec     esi
3941
        dec     esi
3854
        mov     byte [esi], 0
3942
        mov     byte [esi], 0
3855
        call    match_single_mask_rev_lowercase
3943
        call    match_single_mask_rev_lowercase
3856
        mov     [esi], al
3944
        mov     [esi], al
3857
        inc     esi
3945
        inc     esi
3858
        jnc     .done_fail
3946
        jnc     .done_fail
3859
        test    al, al
3947
        test    al, al
3860
        jz      .done_succ
3948
        jz      .done_succ
3861
        jmp     .test_exclude
3949
        jmp     .test_exclude
3862
 
3950
 
3863
match_single_mask_rev_lowercase:
3951
match_single_mask_rev_lowercase:
3864
; in: esi->end of mask, ecx->start of mask, edi->end of name, edx->start of name
3952
; in: esi->end of mask, ecx->start of mask, edi->end of name, edx->start of name
3865
; out: CF clear <=> match
3953
; out: CF clear <=> match
3866
        push    esi edi eax
3954
        push    esi edi eax
3867
.mask_symbol:
3955
.mask_symbol:
3868
        dec     esi
3956
        dec     esi
3869
        cmp     esi, ecx
3957
        cmp     esi, ecx
3870
        jb      .mask_done
3958
        jb      .mask_done
3871
        mov     al, [esi]
3959
        mov     al, [esi]
3872
        cmp     al, '*'
3960
        cmp     al, '*'
3873
        jz      .asterisk
3961
        jz      .asterisk
3874
        cmp     al, '?'
3962
        cmp     al, '?'
3875
        jz      .quest
3963
        jz      .quest
3876
        cmp     al, ']'
3964
        cmp     al, ']'
3877
        jz      .list
3965
        jz      .list
3878
        dec     edi
3966
        dec     edi
3879
        cmp     edi, edx
3967
        cmp     edi, edx
3880
        jb      .done_fail
3968
        jb      .done_fail
3881
        cmp     al, [edi]
3969
        cmp     al, [edi]
3882
        jz      .mask_symbol
3970
        jz      .mask_symbol
3883
.done_fail:
3971
.done_fail:
3884
        stc
3972
        stc
3885
        pop     eax edi esi
3973
        pop     eax edi esi
3886
        ret
3974
        ret
3887
.mask_done:
3975
.mask_done:
3888
        cmp     edi, edx
3976
        cmp     edi, edx
3889
        jnz     .done_fail
3977
        jnz     .done_fail
3890
.done_succ:
3978
.done_succ:
3891
        clc
3979
        clc
3892
        pop     eax edi esi
3980
        pop     eax edi esi
3893
        ret
3981
        ret
3894
.quest:
3982
.quest:
3895
        dec     edi
3983
        dec     edi
3896
        cmp     edi, edx
3984
        cmp     edi, edx
3897
        jb      .done_fail
3985
        jb      .done_fail
3898
        jmp     .mask_symbol
3986
        jmp     .mask_symbol
3899
.list:
3987
.list:
3900
        dec     edi
3988
        dec     edi
3901
        cmp     edi, edx
3989
        cmp     edi, edx
3902
        jb      .done_fail
3990
        jb      .done_fail
3903
.list_check:
3991
.list_check:
3904
        dec     esi
3992
        dec     esi
3905
        cmp     esi, ecx
3993
        cmp     esi, ecx
3906
        jbe     .done_fail
3994
        jbe     .done_fail
3907
        mov     al, [esi]
3995
        mov     al, [esi]
3908
        cmp     al, '['
3996
        cmp     al, '['
3909
        jz      .done_fail
3997
        jz      .done_fail
3910
        cmp     byte [esi-1], '-'
3998
        cmp     byte [esi-1], '-'
3911
        jz      .range
3999
        jz      .range
3912
        cmp     al, [edi]
4000
        cmp     al, [edi]
3913
        jnz     .list_check
4001
        jnz     .list_check
3914
.listok:
4002
.listok:
3915
@@:
4003
@@:
3916
        dec     esi
4004
        dec     esi
3917
        cmp     esi, ecx
4005
        cmp     esi, ecx
3918
        jb      .done_fail
4006
        jb      .done_fail
3919
        cmp     byte [esi], '['
4007
        cmp     byte [esi], '['
3920
        jnz     @b
4008
        jnz     @b
3921
        jmp     .mask_symbol
4009
        jmp     .mask_symbol
3922
.range:
4010
.range:
3923
        cmp     al, [edi]
4011
        cmp     al, [edi]
3924
        jb      @f
4012
        jb      @f
3925
        mov     al, [esi-2]
4013
        mov     al, [esi-2]
3926
        cmp     al, [edi]
4014
        cmp     al, [edi]
3927
        jbe     .listok
4015
        jbe     .listok
3928
@@:
4016
@@:
3929
        dec     esi
4017
        dec     esi
3930
        dec     esi
4018
        dec     esi
3931
        jmp     .list_check
4019
        jmp     .list_check
3932
.asterisk:
4020
.asterisk:
3933
        cmp     esi, ecx
4021
        cmp     esi, ecx
3934
        jz      .done_succ
4022
        jz      .done_succ
3935
        cmp     byte [esi-1], '?'
4023
        cmp     byte [esi-1], '?'
3936
        jnz     @f
4024
        jnz     @f
3937
        cmp     edi, edx
4025
        cmp     edi, edx
3938
        jz      .done_fail
4026
        jz      .done_fail
3939
        dec     esi
4027
        dec     esi
3940
        jmp     .asterisk
4028
        jmp     .asterisk
3941
@@:
4029
@@:
3942
        cmp     byte [esi-1], ']'
4030
        cmp     byte [esi-1], ']'
3943
        jz      .asterisk_common
4031
        jz      .asterisk_common
3944
; the mask is ...*...
4032
; the mask is ...*...
3945
.asterisk_normal:
4033
.asterisk_normal:
3946
        mov     al, [esi-1]
4034
        mov     al, [esi-1]
3947
@@:
4035
@@:
3948
        cmp     edi, edx
4036
        cmp     edi, edx
3949
        jz      .done_fail
4037
        jz      .done_fail
3950
        cmp     al, [edi]
4038
        cmp     al, [edi]
3951
        jz      @f
4039
        jz      @f
3952
        dec     edi
4040
        dec     edi
3953
        jmp     @b
4041
        jmp     @b
3954
@@:
4042
@@:
3955
        dec     edi
4043
        dec     edi
3956
        dec     esi
4044
        dec     esi
3957
        call    match_single_mask_rev_lowercase
4045
        call    match_single_mask_rev_lowercase
3958
        jnc     .done_succ
4046
        jnc     .done_succ
3959
        inc     esi
4047
        inc     esi
3960
        jmp     .asterisk_normal
4048
        jmp     .asterisk_normal
3961
.asterisk_common:
4049
.asterisk_common:
3962
        push    edi
4050
        push    edi
3963
@@:
4051
@@:
3964
        call    match_single_mask_rev_lowercase
4052
        call    match_single_mask_rev_lowercase
3965
        jnc     @f
4053
        jnc     @f
3966
        dec     edi
4054
        dec     edi
3967
        cmp     edi, edx
4055
        cmp     edi, edx
3968
        jae     @b
4056
        jae     @b
3969
        pop     edi
4057
        pop     edi
3970
        jmp     .done_fail
4058
        jmp     .done_fail
3971
@@:
4059
@@:
3972
        pop     edi
4060
        pop     edi
3973
        jmp     .done_succ
4061
        jmp     .done_succ
3974
 
4062
 
3975
find_extension:
4063
find_extension:
3976
        lea     esi, [ecx+40]
4064
        lea     esi, [ecx+40]
3977
        push    esi
4065
        push    esi
3978
@@:
4066
@@:
3979
        lodsb
4067
        lodsb
3980
        test    al, al
4068
        test    al, al
3981
        jnz     @b
4069
        jnz     @b
3982
@@:
4070
@@:
3983
        dec     esi
4071
        dec     esi
3984
        cmp     byte [esi], '.'
4072
        cmp     byte [esi], '.'
3985
        jz      .found_ext
4073
        jz      .found_ext
3986
        cmp     esi, [esp]
4074
        cmp     esi, [esp]
3987
        ja      @b
4075
        ja      @b
3988
; empty extension
4076
; empty extension
3989
        pop     esi
4077
        pop     esi
3990
        stc
4078
        stc
3991
        ret
4079
        ret
3992
.found_ext:
4080
.found_ext:
3993
        inc     esi
4081
        inc     esi
3994
        mov     edi, associations
4082
        mov     edi, associations
3995
@@:
4083
@@:
3996
        push    esi edi
4084
        push    esi edi
3997
        mov     edi, [edi]
4085
        mov     edi, [edi]
3998
        call    strcmpi
4086
        call    strcmpi
3999
        pop     edi esi
4087
        pop     edi esi
4000
        jz      @f
4088
        jz      @f
4001
        add     edi, 12
4089
        add     edi, 12
4002
        cmp     edi, associations_end
4090
        cmp     edi, associations_end
4003
        jb      @b
4091
        jb      @b
4004
; unknown extension
4092
; unknown extension
4005
        inc     edi
4093
        inc     edi
4006
@@:
4094
@@:
4007
        pop     esi
4095
        pop     esi
4008
        ret
4096
        ret
4009
 
4097
 
4010
header  db      'Kolibri Far 0.2',0
4098
header  db      'Kolibri Far 0.21',0
4011
 
4099
 
4012
nomem_draw      db      'No memory for redraw.',0
4100
nomem_draw      db      'No memory for redraw.',0
4013
.size = $ - nomem_draw
4101
.size = $ - nomem_draw
4014
 
4102
 
4015
def_left_dir    db      '/rd/1',0
4103
def_left_dir    db      '/rd/1',0
4016
def_right_dir   db      '/hd0/1',0
4104
def_right_dir   db      '/hd0/1',0
4017
 
4105
 
4018
bSilentFolderMode db    1
4106
bSilentFolderMode db    1
4019
 
4107
 
4020
if lang eq ru
4108
if lang eq ru
4021
aFolder         db      ' ¯ª '
4109
aFolder         db      ' ¯ª '
4022
.size = $-aFolder
4110
.size = $-aFolder
4023
aUp             db      '‚¢¥àå'
4111
aUp             db      '‚¢¥àå'
4024
.size = $-aUp
4112
.size = $-aUp
4025
aDrive          db      '„¨áª',0
4113
aDrive          db      '„¨áª',0
4026
aScreens        db      'ªà ­ë',0
4114
aScreens        db      'ªà ­ë',0
4027
else
4115
else
4028
aFolder         db      'Folder'
4116
aFolder         db      'Folder'
4029
.size = $-aFolder
4117
.size = $-aFolder
4030
aUp             db      'Up'
4118
aUp             db      'Up'
4031
.size = $-aUp
4119
.size = $-aUp
4032
aDrive          db      'Drive',0
4120
aDrive          db      'Drive',0
4033
aScreens        db      'Screens',0
4121
aScreens        db      'Screens',0
4034
end if
4122
end if
4035
 
4123
 
4036
_10d dd 10
4124
_10d dd 10
4037
_100d dd 100
4125
_100d dd 100
4038
_10 db 10
4126
_10 db 10
4039
_100 db 100
4127
_100 db 100
4040
 
4128
 
4041
fpu_cw  dw      000011100111111b
4129
fpu_cw  dw      000011100111111b
4042
 
4130
 
4043
keybar_panels:
4131
keybar_panels:
4044
if lang eq ru
4132
if lang eq ru
4045
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
4133
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
4046
        db      '®¬®éì'
4134
        db      '®¬®éì'
4047
        db      '®«ì§Œ'
4135
        db      '®«ì§Œ'
4048
        db      'à®á¬ '
4136
        db      'à®á¬ '
4049
        db      '¥¤ ªâ'
4137
        db      '¥¤ ªâ'
4050
        db      'Š®¯¨à '
4138
        db      'Š®¯¨à '
4051
        db      '¥à¥­ '
4139
        db      '¥à¥­ '
4052
        db      ' ¯ª  '
4140
        db      ' ¯ª  '
4053
        db      '“¤ «¥­'
4141
        db      '“¤ «¥­'
4054
        db      'Š®­äŒ­'
4142
        db      'Š®­äŒ­'
4055
        db      '‚ë室 '
4143
        db      '‚ë室 '
4056
        db      'Œ®¤ã«¨'
4144
        db      'Œ®¤ã«¨'
4057
        db      'ªà ­ë'
4145
        db      'ªà ­ë'
4058
; Shift
4146
; Shift
4059
        db      '„®¡ ¢«'
4147
        db      '„®¡ ¢«'
4060
        db      ' á¯ ª'
4148
        db      ' á¯ ª'
4061
        db      '€à劮¬'
4149
        db      '€à劮¬'
4062
        db      '¥¤ ª.'
4150
        db      '¥¤ ª.'
4063
        db      'Š®¯¨à '
4151
        db      'Š®¯¨à '
4064
        db      '¥à¥¨¬'
4152
        db      '¥à¥¨¬'
4065
        db      '      '
4153
        db      '      '
4066
        db      '“¤ «¥­'
4154
        db      '“¤ «¥­'
4067
        db      '‘®åà ­'
4155
        db      '‘®åà ­'
4068
        db      '®á«¤­'
4156
        db      '®á«¤­'
4069
        db      'ƒà㯯ë'
4157
        db      'ƒà㯯ë'
4070
        db      '‚ë¡à ­'
4158
        db      '‚ë¡à ­'
4071
; Ctrl
4159
; Ctrl
4072
        db      '‹¥¢ ï '
4160
        db      '‹¥¢ ï '
4073
        db      'à ¢ ï'
4161
        db      'à ¢ ï'
4074
        db      'ˆ¬ï   '
4162
        db      'ˆ¬ï   '
4075
        db      ' áè¨à'
4163
        db      ' áè¨à'
4076
        db      'Œ®¤¨ä '
4164
        db      'Œ®¤¨ä '
4077
        db      ' §¬¥à'
4165
        db      ' §¬¥à'
4078
        db      '¥á®àâ'
4166
        db      '¥á®àâ'
4079
        db      '‘®§¤ ­'
4167
        db      '‘®§¤ ­'
4080
        db      '„®áâã¯'
4168
        db      '„®áâã¯'
4081
        db      'Ž¯¨á ­'
4169
        db      'Ž¯¨á ­'
4082
        db      '‚« ¤¥«'
4170
        db      '‚« ¤¥«'
4083
        db      '‘®àâ  '
4171
        db      '‘®àâ  '
4084
; Ctrl+Shift
4172
; Ctrl+Shift
4085
        db      '      '
4173
        db      '      '
4086
        db      '      '
4174
        db      '      '
4087
        db      'à®á¬ '
4175
        db      'à®á¬ '
4088
        db      '¥¤ ªâ'
4176
        db      '¥¤ ªâ'
4089
        db      '      '
4177
        db      '      '
4090
        db      '      '
4178
        db      '      '
4091
        db      '      '
4179
        db      '      '
4092
        db      '      '
4180
        db      '      '
4093
        db      '      '
4181
        db      '      '
4094
        db      '      '
4182
        db      '      '
4095
        db      '      '
4183
        db      '      '
4096
        db      '      '
4184
        db      '      '
4097
; Alt
4185
; Alt
4098
        db      '‹¥¢ ï '
4186
        db      '‹¥¢ ï '
4099
        db      'à ¢ ï'
4187
        db      'à ¢ ï'
4100
        db      '‘¬®âà.'
4188
        db      '‘¬®âà.'
4101
        db      '¥¤ ª.'
4189
        db      '¥¤ ª.'
4102
        db      '¥ç âì'
4190
        db      '¥ç âì'
4103
        db      '‘¢ï§ì '
4191
        db      '‘¢ï§ì '
4104
        db      'ˆáª âì'
4192
        db      'ˆáª âì'
4105
        db      'ˆáâ®à '
4193
        db      'ˆáâ®à '
4106
        db      '‚¨¤¥® '
4194
        db      '‚¨¤¥® '
4107
        db      '„¥à¥¢®'
4195
        db      '„¥à¥¢®'
4108
        db      'ˆáâà '
4196
        db      'ˆáâà '
4109
        db      'ˆá⏠¯'
4197
        db      'ˆá⏠¯'
4110
; Alt+Shift
4198
; Alt+Shift
4111
        db      '      '
4199
        db      '      '
4112
        db      '      '
4200
        db      '      '
4113
        db      '      '
4201
        db      '      '
4114
        db      '      '
4202
        db      '      '
4115
        db      '      '
4203
        db      '      '
4116
        db      '      '
4204
        db      '      '
4117
        db      '      '
4205
        db      '      '
4118
        db      '      '
4206
        db      '      '
4119
        db      'Š®­ä«'
4207
        db      'Š®­ä«'
4120
        db      '      '
4208
        db      '      '
4121
        db      '      '
4209
        db      '      '
4122
        db      '      '
4210
        db      '      '
4123
; Alt+Ctrl
4211
; Alt+Ctrl
4124
times 12 db     '      '
4212
times 12 db     '      '
4125
; Alt+Ctrl+Shift
4213
; Alt+Ctrl+Shift
4126
times 12 db     '      '
4214
times 12 db     '      '
4127
else
4215
else
4128
; No modificators
4216
; No modificators
4129
        db      'Help  '
4217
        db      'Help  '
4130
        db      'UserMn'
4218
        db      'UserMn'
4131
        db      'View  '
4219
        db      'View  '
4132
        db      'Edit  '
4220
        db      'Edit  '
4133
        db      'Copy  '
4221
        db      'Copy  '
4134
        db      'RenMov'
4222
        db      'RenMov'
4135
        db      'MkFold'
4223
        db      'MkFold'
4136
        db      'Delete'
4224
        db      'Delete'
4137
        db      'ConfMn'
4225
        db      'ConfMn'
4138
        db      'Quit  '
4226
        db      'Quit  '
4139
        db      'Plugin'
4227
        db      'Plugin'
4140
        db      'Screen'
4228
        db      'Screen'
4141
; Shift
4229
; Shift
4142
        db      'Add   '
4230
        db      'Add   '
4143
        db      'Extrct'
4231
        db      'Extrct'
4144
        db      'ArcCmd'
4232
        db      'ArcCmd'
4145
        db      'Edit..'
4233
        db      'Edit..'
4146
        db      'Copy  '
4234
        db      'Copy  '
4147
        db      'Rename'
4235
        db      'Rename'
4148
        db      '      '
4236
        db      '      '
4149
        db      'Delete'
4237
        db      'Delete'
4150
        db      'Save  '
4238
        db      'Save  '
4151
        db      'Last  '
4239
        db      'Last  '
4152
        db      'Group '
4240
        db      'Group '
4153
        db      'SelUp '
4241
        db      'SelUp '
4154
; Ctrl
4242
; Ctrl
4155
        db      'Left  '
4243
        db      'Left  '
4156
        db      'Right '
4244
        db      'Right '
4157
        db      'Name  '
4245
        db      'Name  '
4158
        db      'Extens'
4246
        db      'Extens'
4159
        db      'Modifn'
4247
        db      'Modifn'
4160
        db      'Size  '
4248
        db      'Size  '
4161
        db      'Unsort'
4249
        db      'Unsort'
4162
        db      'Creatn'
4250
        db      'Creatn'
4163
        db      'Access'
4251
        db      'Access'
4164
        db      'Descr '
4252
        db      'Descr '
4165
        db      'Owner '
4253
        db      'Owner '
4166
        db      'Sort  '
4254
        db      'Sort  '
4167
; Ctrl+Shift
4255
; Ctrl+Shift
4168
        db      '      '
4256
        db      '      '
4169
        db      '      '
4257
        db      '      '
4170
        db      'View  '
4258
        db      'View  '
4171
        db      'Edit  '
4259
        db      'Edit  '
4172
        db      '      '
4260
        db      '      '
4173
        db      '      '
4261
        db      '      '
4174
        db      '      '
4262
        db      '      '
4175
        db      '      '
4263
        db      '      '
4176
        db      '      '
4264
        db      '      '
4177
        db      '      '
4265
        db      '      '
4178
        db      '      '
4266
        db      '      '
4179
        db      '      '
4267
        db      '      '
4180
; Alt
4268
; Alt
4181
        db      'Left  '
4269
        db      'Left  '
4182
        db      'Right '
4270
        db      'Right '
4183
        db      'View..'
4271
        db      'View..'
4184
        db      'Edit..'
4272
        db      'Edit..'
4185
        db      'Print '
4273
        db      'Print '
4186
        db      'MkLink'
4274
        db      'MkLink'
4187
        db      'Find  '
4275
        db      'Find  '
4188
        db      'Histry'
4276
        db      'Histry'
4189
        db      'Video '
4277
        db      'Video '
4190
        db      'Tree  '
4278
        db      'Tree  '
4191
        db      'ViewHs'
4279
        db      'ViewHs'
4192
        db      'FoldHs'
4280
        db      'FoldHs'
4193
; Alt+Shift
4281
; Alt+Shift
4194
        db      '      '
4282
        db      '      '
4195
        db      '      '
4283
        db      '      '
4196
        db      '      '
4284
        db      '      '
4197
        db      '      '
4285
        db      '      '
4198
        db      '      '
4286
        db      '      '
4199
        db      '      '
4287
        db      '      '
4200
        db      '      '
4288
        db      '      '
4201
        db      '      '
4289
        db      '      '
4202
        db      'ConfPl'
4290
        db      'ConfPl'
4203
        db      '      '
4291
        db      '      '
4204
        db      '      '
4292
        db      '      '
4205
        db      '      '
4293
        db      '      '
4206
; Alt+Ctrl
4294
; Alt+Ctrl
4207
times 12 db     '      '
4295
times 12 db     '      '
4208
; Alt+Ctrl+Shift
4296
; Alt+Ctrl+Shift
4209
times 12 db     '      '
4297
times 12 db     '      '
4210
end if
4298
end if
4211
 
4299
 
4212
keybar_viewer:
4300
keybar_viewer:
4213
if lang eq ru
4301
if lang eq ru
4214
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
4302
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
4215
        db      '®¬®éì'
4303
        db      '®¬®éì'
4216
        db      ' §¢¥à'
4304
        db      ' §¢¥à'
4217
        db      '‚ë室 '
4305
        db      '‚ë室 '
4218
        db      'Š®¤   '
4306
        db      'Š®¤   '
4219
        db      '      '
4307
        db      '      '
4220
        db      '¥¤ ªâ'
4308
        db      '¥¤ ªâ'
4221
        db      '®¨áª '
4309
        db      '®¨áª '
4222
keybar_cp:
4310
keybar_cp:
4223
        db      'cp1251'
4311
        db      'cp1251'
4224
        db      '      '
4312
        db      '      '
4225
        db      '‚ë室 '
4313
        db      '‚ë室 '
4226
        db      'Œ®¤ã«¨'
4314
        db      'Œ®¤ã«¨'
4227
        db      'ªà ­ë'
4315
        db      'ªà ­ë'
4228
; Shift
4316
; Shift
4229
        db      '      '
4317
        db      '      '
4230
        db      '‘«®¢  '
4318
        db      '‘«®¢  '
4231
        db      '      '
4319
        db      '      '
4232
        db      '      '
4320
        db      '      '
4233
        db      '      '
4321
        db      '      '
4234
        db      '      '
4322
        db      '      '
4235
        db      '„ «ìè¥'
4323
        db      '„ «ìè¥'
4236
        db      '’ ¡«¨æ'
4324
        db      '’ ¡«¨æ'
4237
        db      '      '
4325
        db      '      '
4238
        db      '      '
4326
        db      '      '
4239
        db      '      '
4327
        db      '      '
4240
        db      '      '
4328
        db      '      '
4241
; Ctrl
4329
; Ctrl
4242
        db      '      '
4330
        db      '      '
4243
        db      '      '
4331
        db      '      '
4244
        db      '      '
4332
        db      '      '
4245
        db      '      '
4333
        db      '      '
4246
        db      '      '
4334
        db      '      '
4247
        db      '      '
4335
        db      '      '
4248
        db      '      '
4336
        db      '      '
4249
        db      '      '
4337
        db      '      '
4250
        db      '      '
4338
        db      '      '
4251
        db      '®§¨æ '
4339
        db      '®§¨æ '
4252
        db      '      '
4340
        db      '      '
4253
        db      '      '
4341
        db      '      '
4254
; Ctrl+Shift
4342
; Ctrl+Shift
4255
        db      '      '
4343
        db      '      '
4256
        db      '      '
4344
        db      '      '
4257
        db      '      '
4345
        db      '      '
4258
        db      '      '
4346
        db      '      '
4259
        db      '      '
4347
        db      '      '
4260
        db      '      '
4348
        db      '      '
4261
        db      '      '
4349
        db      '      '
4262
        db      '      '
4350
        db      '      '
4263
        db      '      '
4351
        db      '      '
4264
        db      '      '
4352
        db      '      '
4265
        db      '      '
4353
        db      '      '
4266
        db      '      '
4354
        db      '      '
4267
; Alt
4355
; Alt
4268
        db      '      '
4356
        db      '      '
4269
        db      '      '
4357
        db      '      '
4270
        db      '      '
4358
        db      '      '
4271
        db      '      '
4359
        db      '      '
4272
        db      '¥ç âì'
4360
        db      '¥ç âì'
4273
        db      '      '
4361
        db      '      '
4274
        db      ' § ¤ '
4362
        db      ' § ¤ '
4275
        db      '¥à¥©â'
4363
        db      '¥à¥©â'
4276
        db      '‚¨¤¥® '
4364
        db      '‚¨¤¥® '
4277
        db      '      '
4365
        db      '      '
4278
        db      'ˆáâà '
4366
        db      'ˆáâà '
4279
        db      '      '
4367
        db      '      '
4280
; Alt+Shift
4368
; Alt+Shift
4281
        db      '      '
4369
        db      '      '
4282
        db      '      '
4370
        db      '      '
4283
        db      '      '
4371
        db      '      '
4284
        db      '      '
4372
        db      '      '
4285
        db      '      '
4373
        db      '      '
4286
        db      '      '
4374
        db      '      '
4287
        db      '      '
4375
        db      '      '
4288
        db      '      '
4376
        db      '      '
4289
        db      'Š®­ä¨£'
4377
        db      'Š®­ä¨£'
4290
        db      '      '
4378
        db      '      '
4291
        db      '      '
4379
        db      '      '
4292
        db      '      '
4380
        db      '      '
4293
; Alt+Ctrl
4381
; Alt+Ctrl
4294
times 12 db     '      '
4382
times 12 db     '      '
4295
; Alt+Ctrl+Shift
4383
; Alt+Ctrl+Shift
4296
times 12 db     '      '
4384
times 12 db     '      '
4297
else
4385
else
4298
; No modificators
4386
; No modificators
4299
        db      'Help  '
4387
        db      'Help  '
4300
        db      'Unwrap'
4388
        db      'Unwrap'
4301
        db      'Quit  '
4389
        db      'Quit  '
4302
        db      'Hex   '
4390
        db      'Hex   '
4303
        db      '      '
4391
        db      '      '
4304
        db      'Edit  '
4392
        db      'Edit  '
4305
        db      'Search'
4393
        db      'Search'
4306
keybar_cp:
4394
keybar_cp:
4307
        db      'cp1251'
4395
        db      'cp1251'
4308
        db      '      '
4396
        db      '      '
4309
        db      'Quit  '
4397
        db      'Quit  '
4310
        db      'Plugin'
4398
        db      'Plugin'
4311
        db      'Screen'
4399
        db      'Screen'
4312
; Shift
4400
; Shift
4313
        db      '      '
4401
        db      '      '
4314
        db      'WWrap '
4402
        db      'WWrap '
4315
        db      '      '
4403
        db      '      '
4316
        db      '      '
4404
        db      '      '
4317
        db      '      '
4405
        db      '      '
4318
        db      '      '
4406
        db      '      '
4319
        db      'Next  '
4407
        db      'Next  '
4320
        db      'Table '
4408
        db      'Table '
4321
        db      '      '
4409
        db      '      '
4322
        db      '      '
4410
        db      '      '
4323
        db      '      '
4411
        db      '      '
4324
        db      '      '
4412
        db      '      '
4325
; Ctrl
4413
; Ctrl
4326
        db      '      '
4414
        db      '      '
4327
        db      '      '
4415
        db      '      '
4328
        db      '      '
4416
        db      '      '
4329
        db      '      '
4417
        db      '      '
4330
        db      '      '
4418
        db      '      '
4331
        db      '      '
4419
        db      '      '
4332
        db      '      '
4420
        db      '      '
4333
        db      '      '
4421
        db      '      '
4334
        db      '      '
4422
        db      '      '
4335
        db      'GoFile'
4423
        db      'GoFile'
4336
        db      '      '
4424
        db      '      '
4337
        db      '      '
4425
        db      '      '
4338
; Ctrl+Shift
4426
; Ctrl+Shift
4339
        db      '      '
4427
        db      '      '
4340
        db      '      '
4428
        db      '      '
4341
        db      '      '
4429
        db      '      '
4342
        db      '      '
4430
        db      '      '
4343
        db      '      '
4431
        db      '      '
4344
        db      '      '
4432
        db      '      '
4345
        db      '      '
4433
        db      '      '
4346
        db      '      '
4434
        db      '      '
4347
        db      '      '
4435
        db      '      '
4348
        db      '      '
4436
        db      '      '
4349
        db      '      '
4437
        db      '      '
4350
        db      '      '
4438
        db      '      '
4351
; Alt
4439
; Alt
4352
        db      '      '
4440
        db      '      '
4353
        db      '      '
4441
        db      '      '
4354
        db      '      '
4442
        db      '      '
4355
        db      '      '
4443
        db      '      '
4356
        db      'Print '
4444
        db      'Print '
4357
        db      '      '
4445
        db      '      '
4358
        db      'Prev  '
4446
        db      'Prev  '
4359
        db      'Goto  '
4447
        db      'Goto  '
4360
        db      'Video '
4448
        db      'Video '
4361
        db      '      '
4449
        db      '      '
4362
        db      'ViewHs'
4450
        db      'ViewHs'
4363
        db      '      '
4451
        db      '      '
4364
; Alt+Shift
4452
; Alt+Shift
4365
        db      '      '
4453
        db      '      '
4366
        db      '      '
4454
        db      '      '
4367
        db      '      '
4455
        db      '      '
4368
        db      '      '
4456
        db      '      '
4369
        db      '      '
4457
        db      '      '
4370
        db      '      '
4458
        db      '      '
4371
        db      '      '
4459
        db      '      '
4372
        db      '      '
4460
        db      '      '
4373
        db      'Config'
4461
        db      'Config'
4374
        db      '      '
4462
        db      '      '
4375
        db      '      '
4463
        db      '      '
4376
        db      '      '
4464
        db      '      '
4377
; Alt+Ctrl
4465
; Alt+Ctrl
4378
times 12 db     '      '
4466
times 12 db     '      '
4379
; Alt+Ctrl+Shift
4467
; Alt+Ctrl+Shift
4380
times 12 db     '      '
4468
times 12 db     '      '
4381
end if
4469
end if
4382
 
4470
 
4383
        align   4
4471
        align   4
4384
cur_width       dd      80
4472
cur_width       dd      80
4385
cur_height      dd      25
4473
cur_height      dd      25
4386
saved_width     dd      -1
4474
saved_width     dd      -1
4387
saved_height    dd      -1
4475
saved_height    dd      -1
4388
fill_width      dd      0
4476
fill_width      dd      0
4389
fill_height     dd      0
4477
fill_height     dd      0
4390
max_width = 256
4478
max_width = 256
4391
max_height = 256
4479
max_height = 256
4392
console_data_ptr dd     0
4480
console_data_ptr dd     0
4393
 
4481
 
4394
cursor_x        dd      -1
4482
cursor_x        dd      -1
4395
cursor_y        dd      -1
4483
cursor_y        dd      -1
4396
old_cursor_x    dd      -1
4484
old_cursor_x    dd      -1
4397
old_cursor_y    dd      -1
4485
old_cursor_y    dd      -1
4398
 
4486
 
4399
active_panel    dd      panel1_data
4487
active_panel    dd      panel1_data
4400
 
4488
 
4401
console_colors  dd      0x000000, 0x000080, 0x008000, 0x008080
4489
console_colors  dd      0x000000, 0x000080, 0x008000, 0x008080
4402
                dd      0x800000, 0x800080, 0x808000, 0xC0C0C0
4490
                dd      0x800000, 0x800080, 0x808000, 0xC0C0C0
4403
                dd      0x808080, 0x0000FF, 0x00FF00, 0x00FFFF
4491
                dd      0x808080, 0x0000FF, 0x00FF00, 0x00FFFF
4404
                dd      0xFF0000, 0xFF00FF, 0xFFFF00, 0xFFFFFF
4492
                dd      0xFF0000, 0xFF00FF, 0xFFFF00, 0xFFFFFF
4405
 
4493
 
4406
compare_fns     dd      compare_name
4494
compare_fns     dd      compare_name
4407
                dd      compare_name_rev
4495
                dd      compare_name_rev
4408
                dd      compare_ext
4496
                dd      compare_ext
4409
                dd      compare_ext_rev
4497
                dd      compare_ext_rev
4410
                dd      compare_modified
4498
                dd      compare_modified
4411
                dd      compare_modified_rev
4499
                dd      compare_modified_rev
4412
                dd      compare_size
4500
                dd      compare_size
4413
                dd      compare_size_rev
4501
                dd      compare_size_rev
4414
                dd      compare_unordered
4502
                dd      compare_unordered
4415
                dd      compare_unordered_rev
4503
                dd      compare_unordered_rev
4416
                dd      compare_created
4504
                dd      compare_created
4417
                dd      compare_created_rev
4505
                dd      compare_created_rev
4418
                dd      compare_accessed
4506
                dd      compare_accessed
4419
                dd      compare_accessed_rev
4507
                dd      compare_accessed_rev
4420
 
4508
 
4421
ctrlkey_tests   dd      ctrlkey_test0
4509
ctrlkey_tests   dd      ctrlkey_test0
4422
                dd      ctrlkey_test1
4510
                dd      ctrlkey_test1
4423
                dd      ctrlkey_test2
4511
                dd      ctrlkey_test2
4424
                dd      ctrlkey_test3
4512
                dd      ctrlkey_test3
4425
                dd      ctrlkey_test4
4513
                dd      ctrlkey_test4
4426
ctrlkey_tests_num = 5
4514
ctrlkey_tests_num = 5
4427
 
4515
 
4428
virtual at 0
4516
virtual at 0
4429
screen_vtable:
4517
screen_vtable:
4430
        .OnRedraw       dd      ?
4518
        .OnRedraw       dd      ?
4431
        .OnKey          dd      ?
4519
        .OnKey          dd      ?
4432
        .keybar         dd      ?
4520
        .keybar         dd      ?
4433
        .getname        dd      ?
4521
        .getname        dd      ?
4434
end virtual
4522
end virtual
4435
 
4523
 
4436
panels_vtable:
4524
panels_vtable:
4437
        dd      panels_OnRedraw
4525
        dd      panels_OnRedraw
4438
        dd      panels_OnKey
4526
        dd      panels_OnKey
4439
        dd      keybar_panels
4527
        dd      keybar_panels
4440
        dd      panels_getname
4528
        dd      panels_getname
4441
 
4529
 
4442
viewer_vtable:
4530
viewer_vtable:
4443
        dd      viewer_OnRedraw
4531
        dd      viewer_OnRedraw
4444
        dd      viewer_OnKey
4532
        dd      viewer_OnKey
4445
        dd      keybar_viewer
4533
        dd      keybar_viewer
4446
        dd      viewer_getname
4534
        dd      viewer_getname
4447
 
4535
 
4448
; additions to this table require changes in tools.inc::get_error_msg
4536
; additions to this table require changes in tools.inc::get_error_msg
4449
errors1:
4537
errors1:
4450
        dd      error0msg
4538
        dd      error0msg
4451
        dd      error1msg
4539
        dd      error1msg
4452
        dd      error2msg
4540
        dd      error2msg
4453
        dd      error3msg
4541
        dd      error3msg
4454
        dd      error4msg
4542
        dd      error4msg
4455
        dd      error5msg
4543
        dd      error5msg
4456
        dd      error6msg
4544
        dd      error6msg
4457
        dd      error7msg
4545
        dd      error7msg
4458
        dd      error8msg
4546
        dd      error8msg
4459
        dd      error9msg
4547
        dd      error9msg
4460
        dd      error10msg
4548
        dd      error10msg
4461
        dd      error11msg
4549
        dd      error11msg
4462
errors2:
4550
errors2:
4463
        dd      error30msg
4551
        dd      error30msg
4464
        dd      error31msg
4552
        dd      error31msg
4465
        dd      error32msg
4553
        dd      error32msg
4466
 
4554
 
4467
encodings:
4555
encodings:
4468
.cp866 = 0
4556
.cp866 = 0
4469
.cp1251 = 1
4557
.cp1251 = 1
4470
 
4558
 
4471
.names:
4559
.names:
4472
        db      'cp866   '
4560
        db      'cp866   '
4473
        db      'cp1251  '
4561
        db      'cp1251  '
4474
 
4562
 
4475
.tables:
4563
.tables:
4476
; cp866 - trivial map
4564
; cp866 - trivial map
4477
        times 128 db %+127
4565
        times 128 db %+127
4478
; cp1251
4566
; cp1251
4479
        db      0x3F,0x3F,0x27,0x3F,0x22,0x3A,0xC5,0xD8,0x3F,0x25,0x3F,0x3C,0x3F,0x3F,0x3F,0x3F
4567
        db      0x3F,0x3F,0x27,0x3F,0x22,0x3A,0xC5,0xD8,0x3F,0x25,0x3F,0x3C,0x3F,0x3F,0x3F,0x3F
4480
        db      0x3F,0x27,0x27,0x22,0x22,0x07,0x2D,0x2D,0x3F,0x54,0x3F,0x3E,0x3F,0x3F,0x3F,0x3F
4568
        db      0x3F,0x27,0x27,0x22,0x22,0x07,0x2D,0x2D,0x3F,0x54,0x3F,0x3E,0x3F,0x3F,0x3F,0x3F
4481
        db      0xFF,0xF6,0xF7,0x3F,0xFD,0x3F,0xB3,0x15,0xF0,0x63,0xF2,0x3C,0xBF,0x2D,0x52,0xF4
4569
        db      0xFF,0xF6,0xF7,0x3F,0xFD,0x3F,0xB3,0x15,0xF0,0x63,0xF2,0x3C,0xBF,0x2D,0x52,0xF4
4482
        db      0xF8,0x2B,0x49,0x69,0x3F,0xE7,0x14,0xFA,0xF1,0xFC,0xF3,0x3E,0x3F,0x3F,0x3F,0xF5
4570
        db      0xF8,0x2B,0x49,0x69,0x3F,0xE7,0x14,0xFA,0xF1,0xFC,0xF3,0x3E,0x3F,0x3F,0x3F,0xF5
4483
        times 0x30 db %-1+0x80
4571
        times 0x30 db %-1+0x80
4484
        times 0x10 db %-1+0xE0
4572
        times 0x10 db %-1+0xE0
4485
 
4573
 
4486
active_screen   dd      0
4574
active_screen   dd      0
4487
tabsize         dd      8
4575
tabsize         dd      8
4488
 
4576
 
4489
ascii2scan:
4577
ascii2scan:
4490
        times 32 db 0
4578
        times 32 db 0
4491
        db      0x39,0x02,0x03,0x04,0x05,0x06,0x08,0x28,0x0A,0x0B,0x09,0x0D,0x33,0x0C,0x34,0x35
4579
        db      0x39,0x02,0x03,0x04,0x05,0x06,0x08,0x28,0x0A,0x0B,0x09,0x0D,0x33,0x0C,0x34,0x35
4492
        db      0x0B,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x27,0x27,0x33,0x0D,0x34,0x35
4580
        db      0x0B,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x27,0x27,0x33,0x0D,0x34,0x35
4493
        db      0x03,0x1E,0x30,0x2E,0x20,0x12,0x21,0x22,0x23,0x17,0x24,0x25,0x26,0x32,0x31,0x18
4581
        db      0x03,0x1E,0x30,0x2E,0x20,0x12,0x21,0x22,0x23,0x17,0x24,0x25,0x26,0x32,0x31,0x18
4494
        db      0x19,0x10,0x13,0x1F,0x14,0x16,0x2F,0x11,0x2D,0x15,0x2C,0x1A,0x2B,0x1B,0x07,0x0C
4582
        db      0x19,0x10,0x13,0x1F,0x14,0x16,0x2F,0x11,0x2D,0x15,0x2C,0x1A,0x2B,0x1B,0x07,0x0C
4495
        db      0x29,0x1E,0x30,0x2E,0x20,0x12,0x21,0x22,0x23,0x17,0x24,0x25,0x26,0x32,0x31,0x18
4583
        db      0x29,0x1E,0x30,0x2E,0x20,0x12,0x21,0x22,0x23,0x17,0x24,0x25,0x26,0x32,0x31,0x18
4496
        db      0x19,0x10,0x13,0x1F,0x14,0x16,0x2F,0x11,0x2D,0x15,0x2C,0x1A,0x2B,0x1B,0x29,0x00
4584
        db      0x19,0x10,0x13,0x1F,0x14,0x16,0x2F,0x11,0x2D,0x15,0x2C,0x1A,0x2B,0x1B,0x29,0x00
4497
        db      0x21,0x33,0x20,0x16,0x26,0x14,0x27,0x19,0x30,0x10,0x13,0x25,0x2F,0x15,0x24,0x22
4585
        db      0x21,0x33,0x20,0x16,0x26,0x14,0x27,0x19,0x30,0x10,0x13,0x25,0x2F,0x15,0x24,0x22
4498
        db      0x23,0x2E,0x31,0x12,0x1E,0x1A,0x11,0x2D,0x17,0x18,0x1B,0x1F,0x32,0x28,0x34,0x2C
4586
        db      0x23,0x2E,0x31,0x12,0x1E,0x1A,0x11,0x2D,0x17,0x18,0x1B,0x1F,0x32,0x28,0x34,0x2C
4499
        db      0x21,0x33,0x20,0x16,0x26,0x14,0x27,0x19,0x30,0x10,0x13,0x25,0x2F,0x15,0x24,0x22
4587
        db      0x21,0x33,0x20,0x16,0x26,0x14,0x27,0x19,0x30,0x10,0x13,0x25,0x2F,0x15,0x24,0x22
4500
        times 48 db 0
4588
        times 48 db 0
4501
        db      0x23,0x2E,0x31,0x12,0x1E,0x1A,0x11,0x2D,0x17,0x18,0x1B,0x1F,0x32,0x28,0x34,0x2C
4589
        db      0x23,0x2E,0x31,0x12,0x1E,0x1A,0x11,0x2D,0x17,0x18,0x1B,0x1F,0x32,0x28,0x34,0x2C
4502
        db      0x29,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
4590
        db      0x29,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
4503
 
4591
 
4504
; Š« ¢¨è­ë¥ á®ç¥â ­¨ï
4592
; Š« ¢¨è­ë¥ á®ç¥â ­¨ï
4505
; db scancode, reserved
4593
; db scancode, reserved
4506
; dw ctrlstate
4594
; dw ctrlstate
4507
; dd handler
4595
; dd handler
4508
; ctrlstate: ¬« ¤è¨¥ 4 ¡¨â  - ¤«ï Shift, á«¥¤ãî騥 - ¤«ï Ctrl, á«¥¤ãî騥 - ¤«ï Alt
4596
; ctrlstate: ¬« ¤è¨¥ 4 ¡¨â  - ¤«ï Shift, á«¥¤ãî騥 - ¤«ï Ctrl, á«¥¤ãî騥 - ¤«ï Alt
4509
; 0 = ­¨ ®¤­  ª« ¢¨è  ­¥ ­ ¦ â 
4597
; 0 = ­¨ ®¤­  ª« ¢¨è  ­¥ ­ ¦ â 
4510
; 1 = ஢­® ®¤­  ­ ¦ â 
4598
; 1 = ஢­® ®¤­  ­ ¦ â 
4511
; 2 = ®¡¥ ­ ¦ âë
4599
; 2 = ®¡¥ ­ ¦ âë
4512
; 3 = «¥¢ ï ­ ¦ â , ¯à ¢ ï ­¥â
4600
; 3 = «¥¢ ï ­ ¦ â , ¯à ¢ ï ­¥â
4513
; 4 = ¯à ¢ ï ­ ¦ â , «¥¢ ï ­¥â
4601
; 4 = ¯à ¢ ï ­ ¦ â , «¥¢ ï ­¥â
4514
panels_ctrlkeys:
4602
panels_ctrlkeys:
4515
        dw      0x48, 0
4603
        dw      0x48, 0
4516
        dd      panels_OnKey.up
4604
        dd      panels_OnKey.up
4517
        dw      0x50, 0
4605
        dw      0x50, 0
4518
        dd      panels_OnKey.down
4606
        dd      panels_OnKey.down
4519
        dw      0x4B, 0
4607
        dw      0x4B, 0
4520
        dd      panels_OnKey.left
4608
        dd      panels_OnKey.left
4521
        dw      0x4D, 0
4609
        dw      0x4D, 0
4522
        dd      panels_OnKey.right
4610
        dd      panels_OnKey.right
4523
        dw      0xF, 0
4611
        dw      0xF, 0
4524
        dd      panels_OnKey.tab
4612
        dd      panels_OnKey.tab
4525
        dw      0x47, 0
4613
        dw      0x47, 0
4526
        dd      panels_OnKey.home
4614
        dd      panels_OnKey.home
4527
        dw      0x4F, 0
4615
        dw      0x4F, 0
4528
        dd      panels_OnKey.end
4616
        dd      panels_OnKey.end
4529
        dw      0x1C, 0
4617
        dw      0x1C, 0
4530
        dd      panels_OnKey.enter
4618
        dd      panels_OnKey.enter
4531
        dw      0x3D, 0
4619
        dw      0x3D, 0
4532
        dd      panels_OnKey.f3
4620
        dd      panels_OnKey.f3
4533
        dw      0x3F, 0
4621
        dw      0x3F, 0
4534
        dd      panels_OnKey.f5
4622
        dd      panels_OnKey.f5
4535
        dw      0x3F, 1
4623
        dw      0x3F, 1
4536
        dd      panels_OnKey.shift_f5
4624
        dd      panels_OnKey.shift_f5
-
 
4625
        dw      0x41, 0
-
 
4626
        dd      panels_OnKey.f7
4537
        dw      0x42, 0
4627
        dw      0x42, 0
4538
        dd      panels_OnKey.f8
4628
        dd      panels_OnKey.f8
4539
        dw      0x43, 0x100
4629
        dw      0x43, 0x100
4540
        dd      alt_f9
4630
        dd      alt_f9
4541
        dw      0x44, 0
4631
        dw      0x44, 0
4542
        dd      exit
4632
        dd      exit
4543
        dw      0x5D, 0
4633
        dw      0x5D, 0
4544
        dd      panels_OnKey.menu
4634
        dd      panels_OnKey.menu
4545
repeat 9-3+1
4635
repeat 9-3+1
4546
        dw      0x3D+%-1, 0x10
4636
        dw      0x3D+%-1, 0x10
4547
        dd      panels_OnKey.ctrl_f39
4637
        dd      panels_OnKey.ctrl_f39
4548
end repeat
4638
end repeat
4549
        dw      0x3B, 0x100
4639
        dw      0x3B, 0x100
4550
        dd      panels_OnKey.alt_f12
4640
        dd      panels_OnKey.alt_f12
4551
        dw      0x3C, 0x100
4641
        dw      0x3C, 0x100
4552
        dd      panels_OnKey.alt_f12
4642
        dd      panels_OnKey.alt_f12
4553
        dw      0x58, 0
4643
        dw      0x58, 0
4554
        dd      F12
4644
        dd      F12
4555
        dw      0x13, 0x10
4645
        dw      0x13, 0x10
4556
        dd      panels_OnKey.ctrl_r
4646
        dd      panels_OnKey.ctrl_r
4557
        db      0
4647
        db      0
4558
 
4648
 
4559
viewer_ctrlkeys:
4649
viewer_ctrlkeys:
4560
        dw      1, 0
4650
        dw      1, 0
4561
        dd      viewer_OnKey.exit
4651
        dd      viewer_OnKey.exit
4562
        dw      0x51, 0
4652
        dw      0x51, 0
4563
        dd      viewer_OnKey.pgdn
4653
        dd      viewer_OnKey.pgdn
4564
        dw      0x49, 0
4654
        dw      0x49, 0
4565
        dd      viewer_OnKey.pgup
4655
        dd      viewer_OnKey.pgup
4566
        dw      0x50, 0
4656
        dw      0x50, 0
4567
        dd      viewer_OnKey.down
4657
        dd      viewer_OnKey.down
4568
        dw      0x48, 0
4658
        dw      0x48, 0
4569
        dd      viewer_OnKey.up
4659
        dd      viewer_OnKey.up
4570
        dw      0x4B, 0
4660
        dw      0x4B, 0
4571
        dd      viewer_OnKey.left
4661
        dd      viewer_OnKey.left
4572
        dw      0x4B, 0x10
4662
        dw      0x4B, 0x10
4573
        dd      viewer_OnKey.ctrl_left
4663
        dd      viewer_OnKey.ctrl_left
4574
        dw      0x4B, 0x11
4664
        dw      0x4B, 0x11
4575
        dd      viewer_OnKey.ctrl_shift_left
4665
        dd      viewer_OnKey.ctrl_shift_left
4576
        dw      0x4C, 0
4666
        dw      0x4C, 0
4577
        dd      viewer_OnKey.exit
4667
        dd      viewer_OnKey.exit
4578
        dw      0x4D, 0
4668
        dw      0x4D, 0
4579
        dd      viewer_OnKey.right
4669
        dd      viewer_OnKey.right
4580
        dw      0x4D, 0x10
4670
        dw      0x4D, 0x10
4581
        dd      viewer_OnKey.ctrl_right
4671
        dd      viewer_OnKey.ctrl_right
4582
        dw      0x4D, 0x11
4672
        dw      0x4D, 0x11
4583
        dd      viewer_OnKey.ctrl_shift_right
4673
        dd      viewer_OnKey.ctrl_shift_right
4584
        dw      0x3C, 0
4674
        dw      0x3C, 0
4585
        dd      viewer_OnKey.f2
4675
        dd      viewer_OnKey.f2
4586
        dw      0x3D, 0
4676
        dw      0x3D, 0
4587
        dd      viewer_OnKey.exit
4677
        dd      viewer_OnKey.exit
4588
        dw      0x3E, 0
4678
        dw      0x3E, 0
4589
        dd      viewer_OnKey.f4
4679
        dd      viewer_OnKey.f4
4590
        dw      0x42, 0
4680
        dw      0x42, 0
4591
        dd      viewer_OnKey.f8
4681
        dd      viewer_OnKey.f8
4592
        dw      0x44, 0
4682
        dw      0x44, 0
4593
        dd      viewer_OnKey.exit
4683
        dd      viewer_OnKey.exit
4594
        dw      0x47, 0
4684
        dw      0x47, 0
4595
        dd      viewer_OnKey.home
4685
        dd      viewer_OnKey.home
4596
        dw      0x4F, 0
4686
        dw      0x4F, 0
4597
        dd      viewer_OnKey.end
4687
        dd      viewer_OnKey.end
4598
        dw      0x58, 0
4688
        dw      0x58, 0
4599
        dd      F12
4689
        dd      F12
4600
        dw      0x43, 0x100
4690
        dw      0x43, 0x100
4601
        dd      alt_f9
4691
        dd      alt_f9
4602
        db      0
4692
        db      0
4603
 
4693
 
4604
dirinfo:
4694
dirinfo:
4605
                dd      1
4695
                dd      1
4606
.first          dd      0
4696
.first          dd      0
4607
                dd      0
4697
                dd      0
4608
.size           dd      300
4698
.size           dd      300
4609
.dirdata        dd      0
4699
.dirdata        dd      0
4610
                db      0
4700
                db      0
4611
.name           dd      0
4701
.name           dd      0
4612
 
4702
 
4613
readinfo:
4703
readinfo:
4614
                dd      0
4704
                dd      0
4615
.first          dq      0
4705
.first          dq      0
4616
.size           dd      0
4706
.size           dd      0
4617
.data           dd      0
4707
.data           dd      0
4618
                db      0
4708
                db      0
4619
.name           dd      0
4709
.name           dd      0
4620
 
4710
 
4621
writeinfo:
4711
writeinfo:
4622
.code           dd      2
4712
.code           dd      2
4623
.first          dq      0
4713
.first          dq      0
4624
.size           dd      0
4714
.size           dd      0
4625
.data           dd      0
4715
.data           dd      0
4626
                db      0
4716
                db      0
4627
.name           dd      0
4717
.name           dd      0
4628
 
4718
 
4629
attrinfo:
4719
attrinfo:
4630
                dd      5
4720
                dd      5
4631
                dd      0
4721
                dd      0
4632
                dd      0
4722
                dd      0
4633
                dd      0
4723
                dd      0
4634
                dd      .attr
4724
                dd      .attr
4635
                db      0
4725
                db      0
4636
.name           dd      0
4726
.name           dd      0
4637
 
4727
 
4638
delinfo:
4728
delinfo:
4639
                dd      8
4729
                dd      8
4640
                dd      0
4730
                dd      0
4641
                dd      0
4731
                dd      0
4642
                dd      0
4732
                dd      0
4643
                dd      0
4733
                dd      0
4644
                db      0
4734
                db      0
4645
                dd      execdata
4735
                dd      execdata
-
 
4736
 
-
 
4737
mkdirinfo:
-
 
4738
                dd      9
-
 
4739
                dd      0
-
 
4740
                dd      0
-
 
4741
                dd      0
-
 
4742
                dd      0
-
 
4743
                db      0
-
 
4744
                dd      CopyDestEditBuf+12
4646
 
4745
 
4647
if lang eq ru
4746
if lang eq ru
4648
compare_names   db      '¨ˆà¬Œ €­á‘¤„'
4747
compare_names   db      '¨ˆà¬Œ €­á‘¤„'
4649
else
4748
else
4650
compare_names   db      'nNxXmMsSuUcCaA'
4749
compare_names   db      'nNxXmMsSuUcCaA'
4651
end if
4750
end if
4652
 
4751
 
4653
; ‡¤¥áì ­ ç¨­ îâáï ª®­ä¨£ãà æ¨®­­ë¥ ¤ ­­ë¥ - ¢ ⥪ã饩 ॠ«¨§ æ¨¨ ®­¨ § è¨âë ¢ ¡¨­ à­¨ª
4752
; ‡¤¥áì ­ ç¨­ îâáï ª®­ä¨£ãà æ¨®­­ë¥ ¤ ­­ë¥ - ¢ ⥪ã饩 ॠ«¨§ æ¨¨ ®­¨ § è¨âë ¢ ¡¨­ à­¨ª
4654
 
4753
 
4655
;  ­¥«ì
4754
;  ­¥«ì
4656
panel_normal_color      db      1Bh
4755
panel_normal_color      db      1Bh
4657
panel_border_color      db      1Bh
4756
panel_border_color      db      1Bh
4658
panel_cursor_color      db      30h
4757
panel_cursor_color      db      30h
4659
panel_header_color      db      1Bh
4758
panel_header_color      db      1Bh
4660
panel_active_header_color db    30h
4759
panel_active_header_color db    30h
4661
column_header_color     db      1Eh
4760
column_header_color     db      1Eh
4662
panel_nscreens_color    db      0Bh
4761
panel_nscreens_color    db      0Bh
4663
; „¨ «®£¨
4762
; „¨ «®£¨
4664
dialog_colors:
4763
dialog_colors:
4665
dialog_main_color       db      70h
4764
dialog_main_color       db      70h
4666
dialog_border_color     db      70h
4765
dialog_border_color     db      70h
4667
dialog_header_color     db      70h
4766
dialog_header_color     db      70h
4668
dialog_edit_color       db      30h
4767
dialog_edit_color       db      30h
4669
dialog_unmodified_edit_color db 38h
4768
dialog_unmodified_edit_color db 38h
4670
dialog_normal_btn_color db      70h
4769
dialog_normal_btn_color db      70h
4671
dialog_selected_btn_color db    30h
4770
dialog_selected_btn_color db    30h
4672
; à¥¤ã¯à¥¦¤¥­¨ï ¨ ®è¨¡ª¨
4771
; à¥¤ã¯à¥¦¤¥­¨ï ¨ ®è¨¡ª¨
4673
warning_colors:
4772
warning_colors:
4674
; !!! ¤®«¦­ë ¡ëâì ⥠¦¥ ¯®«ï ¨ ¢ ⮬ ¦¥ ¯®à浪¥, çâ® ¨ ¤«ï ®¡ëç­ëå ¤¨ «®£®¢ !!!
4773
; !!! ¤®«¦­ë ¡ëâì ⥠¦¥ ¯®«ï ¨ ¢ ⮬ ¦¥ ¯®à浪¥, çâ® ¨ ¤«ï ®¡ëç­ëå ¤¨ «®£®¢ !!!
4675
warning_main_color      db      4Fh
4774
warning_main_color      db      4Fh
4676
warning_border_color    db      4Fh
4775
warning_border_color    db      4Fh
4677
warning_header_color    db      4Fh
4776
warning_header_color    db      4Fh
4678
warning_edit_color      db      30h
4777
warning_edit_color      db      30h
4679
warning_unmodified_edit_color db 38h
4778
warning_unmodified_edit_color db 38h
4680
warning_normal_btn_color db     4Fh
4779
warning_normal_btn_color db     4Fh
4681
warning_selected_btn_color db   70h
4780
warning_selected_btn_color db   70h
4682
; Œ¥­î
4781
; Œ¥­î
4683
menu_normal_color       db      3Fh
4782
menu_normal_color       db      3Fh
4684
menu_selected_color     db      0Fh
4783
menu_selected_color     db      0Fh
4685
menu_highlight_color    db      3Eh
4784
menu_highlight_color    db      3Eh
4686
menu_selected_highlight_color db 0Eh
4785
menu_selected_highlight_color db 0Eh
4687
menu_border_color       db      3Fh
4786
menu_border_color       db      3Fh
4688
menu_header_color       db      3Fh
4787
menu_header_color       db      3Fh
4689
menu_scrollbar_color    db      3Fh
4788
menu_scrollbar_color    db      3Fh
4690
; ‹¨­¥©ª  ª« ¢¨è
4789
; ‹¨­¥©ª  ª« ¢¨è
4691
keybar_number_color     db      7
4790
keybar_number_color     db      7
4692
keybar_name_color       db      30h
4791
keybar_name_color       db      30h
4693
keybar_bgr_color        db      7
4792
keybar_bgr_color        db      7
4694
; Š®¬ ­¤­ ï áâப 
4793
; Š®¬ ­¤­ ï áâப 
4695
cmdbar_normal_color     db      7
4794
cmdbar_normal_color     db      7
4696
cmdbar_prefix_color     db      7
4795
cmdbar_prefix_color     db      7
4697
; à®á¬®âà騪
4796
; à®á¬®âà騪
4698
view_normal_color       db      1Bh
4797
view_normal_color       db      1Bh
4699
view_status_color       db      30h
4798
view_status_color       db      30h
4700
view_arrows_color       db      1Eh
4799
view_arrows_color       db      1Eh
4701
 
4800
 
4702
; ®¤á¢¥âª  ä ©«®¢
4801
; ®¤á¢¥âª  ä ©«®¢
4703
highlight_num_groups    dd      10
4802
highlight_num_groups    dd      10
4704
highlight_groups        dd      highlight_group0
4803
highlight_groups        dd      highlight_group0
4705
                dd      highlight_group1
4804
                dd      highlight_group1
4706
                dd      highlight_group2
4805
                dd      highlight_group2
4707
                dd      highlight_group3
4806
                dd      highlight_group3
4708
                dd      highlight_group4
4807
                dd      highlight_group4
4709
                dd      highlight_group5
4808
                dd      highlight_group5
4710
                dd      highlight_group6
4809
                dd      highlight_group6
4711
                dd      highlight_group7
4810
                dd      highlight_group7
4712
                dd      highlight_group8
4811
                dd      highlight_group8
4713
                dd      highlight_group9
4812
                dd      highlight_group9
4714
 
4813
 
4715
; ”®à¬ â ®¯¨á ­¨ï £àã¯¯ë ¯®¤á¢¥âª¨:
4814
; ”®à¬ â ®¯¨á ­¨ï £àã¯¯ë ¯®¤á¢¥âª¨:
4716
virtual at 0
4815
virtual at 0
4717
highlight:
4816
highlight:
4718
        .NormalColor            db ?
4817
        .NormalColor            db ?
4719
        .CursorColor            db ?
4818
        .CursorColor            db ?
4720
        .IncludeAttributes      db ?
4819
        .IncludeAttributes      db ?
4721
        .Mask:                  ; ASCIIZ-string
4820
        .Mask:                  ; ASCIIZ-string
4722
end virtual
4821
end virtual
4723
 
4822
 
4724
; all highlight masks must be in lowercase!
4823
; all highlight masks must be in lowercase!
4725
highlight_group0:
4824
highlight_group0:
4726
        db      13h
4825
        db      13h
4727
        db      38h
4826
        db      38h
4728
        db      2
4827
        db      2
4729
        db      '*',0
4828
        db      '*',0
4730
highlight_group1:
4829
highlight_group1:
4731
        db      13h
4830
        db      13h
4732
        db      38h
4831
        db      38h
4733
        db      4
4832
        db      4
4734
        db      '*',0
4833
        db      '*',0
4735
highlight_group2:
4834
highlight_group2:
4736
        db      1Fh
4835
        db      1Fh
4737
        db      3Fh
4836
        db      3Fh
4738
        db      10h
4837
        db      10h
4739
        db      '*|..',0
4838
        db      '*|..',0
4740
highlight_group3:
4839
highlight_group3:
4741
        db      0
4840
        db      0
4742
        db      0
4841
        db      0
4743
        db      10h
4842
        db      10h
4744
        db      '..',0
4843
        db      '..',0
4745
highlight_group4:
4844
highlight_group4:
4746
        db      1Ah
4845
        db      1Ah
4747
        db      3Ah
4846
        db      3Ah
4748
        db      0
4847
        db      0
4749
        db      '*.exe,*.com,*.bat,*.cmd',0
4848
        db      '*.exe,*.com,*.bat,*.cmd',0
4750
highlight_group5:
4849
highlight_group5:
4751
        db      1Ah
4850
        db      1Ah
4752
        db      3Ah
4851
        db      3Ah
4753
        db      0
4852
        db      0
4754
        db      '*|*.*',0
4853
        db      '*|*.*',0
4755
highlight_group6:
4854
highlight_group6:
4756
        db      1Dh
4855
        db      1Dh
4757
        db      3Dh
4856
        db      3Dh
4758
        db      0
4857
        db      0
4759
        db      '*.rar,*.zip,*.[zj],*.[bg7]z,*.[bg]zip,*.tar,*.t[ag]z,*.ar[cj],*.r[0-9][0-9],'
4858
        db      '*.rar,*.zip,*.[zj],*.[bg7]z,*.[bg]zip,*.tar,*.t[ag]z,*.ar[cj],*.r[0-9][0-9],'
4760
        db      '*.a[0-9][0-9],*.bz2,*.cab,*.msi,*.jar,*.lha,*.lzh,*.ha,*.ac[bei],*.pa[ck],'
4859
        db      '*.a[0-9][0-9],*.bz2,*.cab,*.msi,*.jar,*.lha,*.lzh,*.ha,*.ac[bei],*.pa[ck],'
4761
        db      '*.rk,*.cpio,*.rpm,*.zoo,*.hqx,*.sit,*.ice,*.uc2,*.ain,*.imp,*.777,*.ufa,*.boa,'
4860
        db      '*.rk,*.cpio,*.rpm,*.zoo,*.hqx,*.sit,*.ice,*.uc2,*.ain,*.imp,*.777,*.ufa,*.boa,'
4762
        db      '*.bs[2a],*.sea,*.hpk,*.ddi,*.x2,*.rkv,*.[lw]sz,*.h[ay]p,*.lim,*.sqz,*.chz',0
4861
        db      '*.bs[2a],*.sea,*.hpk,*.ddi,*.x2,*.rkv,*.[lw]sz,*.h[ay]p,*.lim,*.sqz,*.chz',0
4763
highlight_group7:
4862
highlight_group7:
4764
        db      16h
4863
        db      16h
4765
        db      36h
4864
        db      36h
4766
        db      0
4865
        db      0
4767
        db      '*.bak,*.tmp',0
4866
        db      '*.bak,*.tmp',0
4768
highlight_group8:
4867
highlight_group8:
4769
        db      17h
4868
        db      17h
4770
        db      37h
4869
        db      37h
4771
        db      0
4870
        db      0
4772
        db      '*.asm,*.inc',0
4871
        db      '*.asm,*.inc',0
4773
highlight_group9:
4872
highlight_group9:
4774
        db      1Fh
4873
        db      1Fh
4775
        db      3Fh
4874
        db      3Fh
4776
        db      10h
4875
        db      10h
4777
        db      '*',0
4876
        db      '*',0
4778
 
4877
 
4779
associations:
4878
associations:
4780
        dd      aAsm, tinypad, AsmMenu
4879
        dd      aAsm, tinypad, AsmMenu
4781
        dd      aInc, tinypad, 0
4880
        dd      aInc, tinypad, 0
4782
        dd      aTxt, tinypad, 0
4881
        dd      aTxt, tinypad, 0
4783
        dd      aJpg, jpegview, 0
4882
        dd      aJpg, jpegview, 0
4784
        dd      aJpeg, jpegview, 0
4883
        dd      aJpeg, jpegview, 0
4785
        dd      aGif, gifview, GifMenu
4884
        dd      aGif, gifview, GifMenu
4786
        dd      aWav, ac97, 0
4885
        dd      aWav, ac97, 0
4787
        dd      aMp3, ac97, 0
4886
        dd      aMp3, ac97, 0
4788
        dd      aMid, midamp, 0
4887
        dd      aMid, midamp, 0
4789
        dd      aBmp, mv, BmpMenu
4888
        dd      aBmp, mv, BmpMenu
4790
        dd      aPng, archer, 0
4889
        dd      aPng, archer, 0
4791
        dd      aRtf, rtfread, 0
4890
        dd      aRtf, rtfread, 0
4792
        dd      a3ds, view3ds, 0
4891
        dd      a3ds, view3ds, 0
4793
        dd      aLif, life2, 0
4892
        dd      aLif, life2, 0
4794
associations_end:
4893
associations_end:
4795
 
4894
 
4796
aAsm db 'asm',0
4895
aAsm db 'asm',0
4797
aInc db 'inc',0
4896
aInc db 'inc',0
4798
aTxt db 'txt',0
4897
aTxt db 'txt',0
4799
tinypad db '/rd/1/TinyPad',0
4898
tinypad db '/rd/1/TinyPad',0
4800
 
4899
 
4801
aJpg db 'jpg',0
4900
aJpg db 'jpg',0
4802
aJpeg db 'jpeg',0
4901
aJpeg db 'jpeg',0
4803
jpegview db '/rd/1/JpegView',0
4902
jpegview db '/rd/1/JpegView',0
4804
 
4903
 
4805
aGif db 'gif',0
4904
aGif db 'gif',0
4806
gifview db '/rd/1/GIFVIEW',0
4905
gifview db '/rd/1/GIFVIEW',0
4807
 
4906
 
4808
aWav db 'wav',0
4907
aWav db 'wav',0
4809
aMp3 db 'mp3',0
4908
aMp3 db 'mp3',0
4810
ac97 db '/rd/1/AC97SND',0
4909
ac97 db '/rd/1/AC97SND',0
4811
 
4910
 
4812
aMid db 'mid',0
4911
aMid db 'mid',0
4813
midamp db '/rd/1/MIDAMP',0
4912
midamp db '/rd/1/MIDAMP',0
4814
 
4913
 
4815
aBmp db 'bmp',0
4914
aBmp db 'bmp',0
4816
mv db '/rd/1/MV',0
4915
mv db '/rd/1/MV',0
4817
 
4916
 
4818
aPng db 'png',0
4917
aPng db 'png',0
4819
archer db '/rd/1/@rcher',0
4918
archer db '/rd/1/@rcher',0
4820
 
4919
 
4821
aRtf db 'rtf',0
4920
aRtf db 'rtf',0
4822
rtfread db '/rd/1/RtfRead',0
4921
rtfread db '/rd/1/RtfRead',0
4823
 
4922
 
4824
a3ds db '3ds',0
4923
a3ds db '3ds',0
4825
view3ds db '/rd/1/3d/view3ds',0
4924
view3ds db '/rd/1/3d/view3ds',0
4826
 
4925
 
4827
aLif db 'lif',0
4926
aLif db 'lif',0
4828
life2 db '/rd/1/demos/life2',0
4927
life2 db '/rd/1/demos/life2',0
4829
 
4928
 
4830
AsmMenu:
4929
AsmMenu:
4831
        dd      aEdit, tinypad
4930
        dd      aEdit, tinypad
4832
        dd      aCompile, fasm
4931
        dd      aCompile, fasm
4833
        dd      0
4932
        dd      0
4834
BmpMenu:
4933
BmpMenu:
4835
        dd      aView, mv
4934
        dd      aView, mv
4836
        dd      aEdit, animage
4935
        dd      aEdit, animage
4837
        dd      0
4936
        dd      0
4838
GifMenu:
4937
GifMenu:
4839
        dd      aView, gifview
4938
        dd      aView, gifview
4840
        dd      aEdit, animage
4939
        dd      aEdit, animage
4841
        dd      0
4940
        dd      0
4842
 
4941
 
4843
if lang eq en
4942
if lang eq en
4844
aView   db      '&View',0
4943
aView   db      '&View',0
4845
aCompile db     '&Compile',0
4944
aCompile db     '&Compile',0
4846
aEdit   db      '&Edit',0
4945
aEdit   db      '&Edit',0
4847
else
4946
else
4848
aView   db      '&à®á¬®âà',0
4947
aView   db      '&à®á¬®âà',0
4849
aCompile db     '&Š®¬¯¨«¨à®¢ âì',0
4948
aCompile db     '&Š®¬¯¨«¨à®¢ âì',0
4850
aEdit   db      '&¥¤ ªâ®à',0
4949
aEdit   db      '&¥¤ ªâ®à',0
4851
end if
4950
end if
4852
 
4951
 
4853
fasm    db      '/rd/1/develop/fasm',0
4952
fasm    db      '/rd/1/develop/fasm',0
4854
animage db      '/rd/1/animage',0
4953
animage db      '/rd/1/animage',0
4855
 
4954
 
4856
bConfirmDelete  db      1
4955
bConfirmDelete  db      1
-
 
4956
bConfirmDeleteIncomplete db 0
4857
 
4957
 
4858
; ‡¤¥áì § ª ­ç¨¢ îâáï ª®­ä¨£ãà æ¨®­­ë¥ ¤ ­­ë¥
4958
; ‡¤¥áì § ª ­ç¨¢ îâáï ª®­ä¨£ãà æ¨®­­ë¥ ¤ ­­ë¥
4859
 
4959
 
4860
bWasE0          db      0
4960
bWasE0          db      0
4861
ctrlstate       db      0
4961
ctrlstate       db      0
4862
 
4962
 
4863
align   4
4963
align   4
4864
; ‘®®¡é¥­¨¥ ® ®¡«®¬¥ ¯à¨ ¢ë¤¥«¥­¨¨ ¯ ¬ïâ¨
4964
; ‘®®¡é¥­¨¥ ® ®¡«®¬¥ ¯à¨ ¢ë¤¥«¥­¨¨ ¯ ¬ïâ¨
4865
nomem_dlgdata:
4965
nomem_dlgdata:
4866
        dd      2
4966
        dd      2
4867
        dd      -1
4967
        dd      -1
4868
        dd      -1
4968
        dd      -1
4869
        dd      12
4969
        dd      12
4870
        dd      2
4970
        dd      2
4871
        dd      1
4971
        dd      1
4872
        dd      1
4972
        dd      1
4873
        dd      aError
4973
        dd      aError
4874
        rb      4
4974
        rb      4
4875
        dd      0
4975
        dd      0
4876
        dd      0
4976
        dd      0
4877
        dd      2
4977
        dd      2
4878
; áâப  "No memory"
4978
; áâப  "No memory"
4879
        dd      1
4979
        dd      1
4880
        dd      1,0,10,0
4980
        dd      1,0,10,0
4881
        dd      aNoMemory
4981
        dd      aNoMemory
4882
        dd      1
4982
        dd      1
4883
; ª­®¯ª  "Ok"
4983
; ª­®¯ª  "Ok"
4884
        dd      2
4984
        dd      2
4885
        dd      4,1,7,1
4985
        dd      4,1,7,1
4886
        dd      aOk
4986
        dd      aOk
4887
        dd      0xD
4987
        dd      0xD
4888
 
4988
 
4889
f8_confirm_dlgdata:
4989
f8_confirm_dlgdata:
4890
        dd      1
4990
        dd      1
4891
.x      dd      -1
4991
.x      dd      -1
4892
.y      dd      -1
4992
.y      dd      -1
4893
.width  dd      ?
4993
.width  dd      ?
4894
.height dd      3
4994
.height dd      3
4895
        dd      4
4995
        dd      4
4896
        dd      2
4996
        dd      2
4897
        dd      aDeleteCaption
4997
        dd      aDeleteCaption
4898
.main_color db ?
4998
.main_color db ?
4899
.border_color db ?
4999
.border_color db ?
4900
.header_color db ?
5000
.header_color db ?
4901
        db      0
5001
        db      0
4902
        dd      0
5002
        dd      0
4903
        dd      0
5003
        dd      0
4904
        dd      4
5004
        dd      4
4905
; áâப  "‚ë å®â¨â¥ 㤠«¨âì ..."
5005
; áâப  "‚ë å®â¨â¥ 㤠«¨âì ..."
4906
        dd      1
5006
        dd      1
4907
        dd      1,0
5007
        dd      1,0
4908
.width2 dd      ?
5008
.width2 dd      ?
4909
        dd      0
5009
        dd      0
4910
        dd      aConfirmDeleteTextBuf
5010
        dd      aConfirmDeleteTextBuf
4911
        dd      1
5011
        dd      1
4912
; áâப  á ¨¬¥­¥¬ ä ©« /¯ ¯ª¨
5012
; áâப  á ¨¬¥­¥¬ ä ©« /¯ ¯ª¨
4913
        dd      1
5013
        dd      1
4914
        dd      1,1
5014
        dd      1,1
4915
.width3 dd      ?
5015
.width3 dd      ?
4916
        dd      1
5016
        dd      1
4917
.name   dd      ?
5017
.name   dd      ?
4918
        dd      1
5018
        dd      1
4919
; ª­®¯ª  "㤠«¨âì"
5019
; ª­®¯ª  "㤠«¨âì"
4920
.del_btn:
5020
.del_btn:
4921
        dd      2
5021
        dd      2
4922
.del_x1 dd      ?
5022
.del_x1 dd      ?
4923
        dd      2
5023
        dd      2
4924
.del_x2 dd      ?
5024
.del_x2 dd      ?
4925
        dd      2
5025
        dd      2
4926
        dd      aDelete
5026
        dd      aDelete
4927
.flags1 dd      4
5027
.flags1 dd      0xC
4928
; ª­®¯ª  "®â¬¥­¨âì"
5028
; ª­®¯ª  "®â¬¥­¨âì"
4929
        dd      2
5029
        dd      2
4930
.cnl_x1 dd      ?
5030
.cnl_x1 dd      ?
4931
        dd      2
5031
        dd      2
4932
.cnl_x2 dd      ?
5032
.cnl_x2 dd      ?
4933
        dd      2
5033
        dd      2
4934
        dd      aCancel
5034
        dd      aCancel
4935
.flags2 dd      0
5035
.flags2 dd      8
4936
 
5036
 
4937
; ¤¨ «®£ ª®¯¨à®¢ ­¨ï
5037
; ¤¨ «®£ ª®¯¨à®¢ ­¨ï
4938
copy_dlgdata:
5038
copy_dlgdata:
4939
        dd      1
5039
        dd      1
4940
.x      dd      -1
5040
.x      dd      -1
4941
.y      dd      -1
5041
.y      dd      -1
4942
.width  dd      ?
5042
.width  dd      ?
4943
.height dd      4
5043
.height dd      4
4944
        dd      4
5044
        dd      4
4945
        dd      2
5045
        dd      2
4946
        dd      aCopyCaption
5046
        dd      aCopyCaption
4947
.main_color db ?
5047
.main_color db ?
4948
.border_color db ?
5048
.border_color db ?
4949
.header_color db ?
5049
.header_color db ?
4950
        db      0
5050
        db      0
4951
        dd      0
5051
        dd      0
4952
        dd      0
5052
        dd      0
4953
        dd      4
5053
        dd      4
4954
; áâப  'Š®¯¨à®¢ âì "%s" ¢:'
5054
; áâப  'Š®¯¨à®¢ âì "%s" ¢:'
4955
        dd      1
5055
        dd      1
4956
        dd      1,0
5056
        dd      1,0
4957
.width2 dd      ?
5057
.width2 dd      ?
4958
        dd      0
5058
        dd      0
4959
        dd      CopySourceTextBuf
5059
        dd      CopySourceTextBuf
4960
        dd      0
5060
        dd      0
4961
; ¯®«¥ । ªâ¨à®¢ ­¨ï á ¨¬¥­¥¬ ä ©« /¯ ¯ª¨ ­ §­ ç¥­¨ï
5061
; ¯®«¥ । ªâ¨à®¢ ­¨ï á ¨¬¥­¥¬ ä ©« /¯ ¯ª¨ ­ §­ ç¥­¨ï
4962
        dd      3
5062
        dd      3
4963
        dd      1,1
5063
        dd      1,1
4964
.width3 dd      ?
5064
.width3 dd      ?
4965
        dd      1
5065
        dd      1
4966
        dd      CopyDestEditBuf
5066
        dd      CopyDestEditBuf
4967
.flags0 dd      0
5067
.flags0 dd      0
4968
; ª­®¯ª  "ª®¯¨à®¢ âì"
5068
; ª­®¯ª  "ª®¯¨à®¢ âì"
4969
.copy_btn:
5069
.copy_btn:
4970
        dd      2
5070
        dd      2
4971
.copy_x1 dd     ?
5071
.copy_x1 dd     ?
4972
        dd      3
5072
        dd      3
4973
.copy_x2 dd     ?
5073
.copy_x2 dd     ?
4974
        dd      3
5074
        dd      3
4975
        dd      aCopy
5075
        dd      aCopy
4976
.flags1 dd      18h
5076
.flags1 dd      18h
4977
; ª­®¯ª  "®â¬¥­¨âì"
5077
; ª­®¯ª  "®â¬¥­¨âì"
4978
        dd      2
5078
        dd      2
4979
.cnl_x1 dd      ?
5079
.cnl_x1 dd      ?
4980
        dd      3
5080
        dd      3
4981
.cnl_x2 dd      ?
5081
.cnl_x2 dd      ?
4982
        dd      3
5082
        dd      3
4983
        dd      aCancelB
5083
        dd      aCancelB
4984
.flags2 dd      8
5084
.flags2 dd      8
-
 
5085
 
-
 
5086
mkdir_dlgdata:
-
 
5087
        dd      1
-
 
5088
        dd      -1, -1
-
 
5089
.width  dd      ?
-
 
5090
.height dd      4
-
 
5091
        dd      4, 2
-
 
5092
        dd      aMkDirCaption
-
 
5093
        dd      ?
-
 
5094
        dd      0
-
 
5095
        dd      0
-
 
5096
        dd      4
-
 
5097
; ‘âப  "‘®§¤ âì ¯ ¯ªã"
-
 
5098
        dd      1
-
 
5099
        dd      1,0,aMkDirLen,0
-
 
5100
        dd      aMkDir
-
 
5101
        dd      0
-
 
5102
; ¯®«¥ । ªâ¨à®¢ ­¨ï á ¨¬¥­¥¬ ᮧ¤ ¢ ¥¬®© ¯ ¯ª¨
-
 
5103
        dd      3
-
 
5104
        dd      1,1
-
 
5105
.width2 dd      ?
-
 
5106
        dd      1
-
 
5107
        dd      CopyDestEditBuf
-
 
5108
.flags0 dd      0xC
-
 
5109
; ª­®¯ª  "à®¤®«¦¨âì"
-
 
5110
.cont_btn:
-
 
5111
        dd      2
-
 
5112
.cont_x1 dd     ?
-
 
5113
        dd      3
-
 
5114
.cont_x2 dd     ?
-
 
5115
        dd      3
-
 
5116
        dd      a_Continue
-
 
5117
.flags1 dd      18h
-
 
5118
; ª­®¯ª  "®â¬¥­¨âì"
-
 
5119
        dd      2
-
 
5120
.cnl_x1 dd      ?
-
 
5121
        dd      3
-
 
5122
.cnl_x2 dd      ?
-
 
5123
        dd      3
-
 
5124
        dd      aCancelB
-
 
5125
.flags2 dd      8
-
 
5126
 
-
 
5127
RetryOrCancelBtn:
-
 
5128
        dd      aRetry
-
 
5129
        dd      a_Cancel
-
 
5130
DeleteOrKeepBtn:
-
 
5131
        dd      a_Delete
-
 
5132
        dd      aKeep
-
 
5133
RetryOrIgnoreBtn:
-
 
5134
        dd      aRetry
4985
 
5135
        dd      aIgnore
4986
 
5136
 
4987
if lang eq ru
5137
if lang eq ru
4988
aDeleteCaption          db      '“¤ «¥­¨¥',0
5138
aDeleteCaption          db      '“¤ «¥­¨¥',0
4989
aConfirmDeleteText      db      '‚ë å®â¨â¥ 㤠«¨âì ',0
5139
aConfirmDeleteText      db      '‚ë å®â¨â¥ 㤠«¨âì ',0
4990
aDeleteFolder           db      '¯ ¯ªã',0
5140
aDeleteFolder           db      '¯ ¯ªã',0
4991
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
5141
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
4992
aDeleteFile             db      'ä ©«',0
5142
aDeleteFile             db      'ä ©«',0
4993
aDelete                 db      ' “¤ «¨âì ',0
5143
aDelete                 db      ' “¤ «¨âì ',0
4994
aDeleteLength = $ - aDelete - 1
5144
aDeleteLength = $ - aDelete - 1
4995
aCancel                 db      ' Žâ¬¥­¨âì ',0
5145
aCancel                 db      ' Žâ¬¥­¨âì ',0
4996
aCancelLength = $ - aCancel - 1
5146
aCancelLength = $ - aCancel - 1
4997
aCancelB                db      '[ Žâ¬¥­¨âì ]',0
5147
aCancelB                db      '[ Žâ¬¥­¨âì ]',0
4998
aCancelBLength = $ - aCancelB - 1
5148
aCancelBLength = $ - aCancelB - 1
4999
aCopyCaption            db      'Š®¯¨à®¢ ­¨¥',0
5149
aCopyCaption            db      'Š®¯¨à®¢ ­¨¥',0
5000
aCopy                   db      '[ Š®¯¨à®¢ âì ]',0
5150
aCopy                   db      '[ Š®¯¨à®¢ âì ]',0
5001
aCopyLength = $ - aCopy - 1
5151
aCopyLength = $ - aCopy - 1
-
 
5152
a_Continue              db      '[ à®¤®«¦¨âì ]',0
-
 
5153
a_ContinueLength = $ - a_Continue - 1
5002
aCopy1                  db      'Š®¯¨à®¢ âì "',0
5154
aCopy1                  db      'Š®¯¨à®¢ âì "',0
5003
aCopy2                  db      '" ¢:',0
5155
aCopy2                  db      '" ¢:',0
5004
aError                  db      'Žè¨¡ª ',0
5156
aError                  db      'Žè¨¡ª ',0
5005
aContinue               db      'à®¤®«¦¨âì',0
5157
aContinue               db      'à®¤®«¦¨âì',0
5006
aRetry                  db      '®¢â®à¨âì',0
5158
aRetry                  db      '®¢â®à¨âì',0
-
 
5159
a_Cancel                db      'Žâ¬¥­¨âì',0
-
 
5160
a_Delete                db      '“¤ «¨âì',0
5007
error0msg               db      '‘âà ­­®... ¥â ®è¨¡ª¨',0
5161
error0msg               db      '‘âà ­­®... ¥â ®è¨¡ª¨',0
5008
error1msg               db      '‘âà ­­®... ¥ ®¯à¥¤¥«¥­  ¡ §  ¨/¨«¨ à §¤¥« ¦ñá⪮£® ¤¨áª ',0
5162
error1msg               db      '‘âà ­­®... ¥ ®¯à¥¤¥«¥­  ¡ §  ¨/¨«¨ à §¤¥« ¦ñá⪮£® ¤¨áª ',0
5009
error2msg               db      '”ã­ªæ¨ï ­¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï ¤ ­­®© ä ©«®¢®© á¨á⥬ë',0
5163
error2msg               db      '”ã­ªæ¨ï ­¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï ¤ ­­®© ä ©«®¢®© á¨á⥬ë',0
5010
error3msg               db      '¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬ ',0
5164
error3msg               db      '¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬ ',0
5011
error4msg               db      '‘âà ­­®... Žè¨¡ª  4',0
5165
error4msg               db      '‘âà ­­®... Žè¨¡ª  4',0
5012
error5msg               db      '” ©« ­¥ ­ ©¤¥­',0
5166
error5msg               db      '” ©« ­¥ ­ ©¤¥­',0
5013
error6msg               db      '” ©« § ª®­ç¨«áï',0
5167
error6msg               db      '” ©« § ª®­ç¨«áï',0
5014
error7msg               db      '‘âà ­­®... “ª § â¥«ì ¢­¥ ¯ ¬ï⨠¯à¨«®¦¥­¨ï',0
5168
error7msg               db      '‘âà ­­®... “ª § â¥«ì ¢­¥ ¯ ¬ï⨠¯à¨«®¦¥­¨ï',0
5015
error8msg               db      '„¨áª § ¯®«­¥­',0
5169
error8msg               db      '„¨áª § ¯®«­¥­',0
5016
error9msg               db      '” ©«®¢ ï áâàãªâãà  à §àã襭 ',0
5170
error9msg               db      '” ©«®¢ ï áâàãªâãà  à §àã襭 ',0
5017
error10msg              db      '„®áâ㯠§ ¯à¥éñ­',0
5171
error10msg              db      '„®áâ㯠§ ¯à¥éñ­',0
5018
error11msg              db      'Žè¨¡ª  ãáâனá⢠',0
5172
error11msg              db      'Žè¨¡ª  ãáâனá⢠',0
5019
error30msg              db      '¥¤®áâ â®ç­® ¯ ¬ïâ¨',0
5173
error30msg              db      '¥¤®áâ â®ç­® ¯ ¬ïâ¨',0
5020
error31msg              db      '” ©« ­¥ ï¥âáï ¨á¯®«­ï¥¬ë¬',0
5174
error31msg              db      '” ©« ­¥ ï¥âáï ¨á¯®«­ï¥¬ë¬',0
5021
error32msg              db      '‘«¨èª®¬ ¬­®£® ¯à®æ¥áᮢ',0
5175
error32msg              db      '‘«¨èª®¬ ¬­®£® ¯à®æ¥áᮢ',0
5022
aUnknownError           db      '¥¨§¢¥áâ­ë© ª®¤ ®è¨¡ª¨: ',0
5176
aUnknownError           db      '¥¨§¢¥áâ­ë© ª®¤ ®è¨¡ª¨: ',0
5023
aCannotReadFolder       db      '¥ ¬®£ã ¯à®ç¨â âì ¯ ¯ªã',0
5177
aCannotReadFolder       db      '¥ ¬®£ã ¯à®ç¨â âì ¯ ¯ªã',0
-
 
5178
aRunError               db      'Žè¨¡ª  ¯à¨ § ¯ã᪥ ¯à®£à ¬¬ë:',0
-
 
5179
aFileNameTooBig         db      '®«­®¥ ¨¬ï ä ©«  ᫨誮¬ ¤«¨­­®¥',0
-
 
5180
aFolderNameTooBig       db      '®«­®¥ ¨¬ï ¯ ¯ª¨ ᫨誮¬ ¤«¨­­®¥',0
-
 
5181
aCmdLineTooBig          db      'Š®¬ ­¤­ ï áâப  ¯à¥¢ë蠥⠣࠭¨æã OS ¢ 256 ᨬ¢®«®¢',0
-
 
5182
aCannotCopyToSelf       db      '” ©« ­¥ ¬®¦¥â ¡ëâì ᪮¯¨à®¢ ­ ¢ á ¬®£® ᥡï',0
-
 
5183
aCannotReadFile         db      '¥ ¬®£ã ¯à®ç¨â âì ä ©«',0
-
 
5184
aIncompleteFile         db      'ë« ¯®«ã祭 ­¥¯®«­ë© ä ©«. “¤ «¨âì ¥£®?',0
-
 
5185
aKeep                   db      'Žáâ ¢¨âì',0
-
 
5186
aCannotWriteFile        db      '¥ ¬®£ã § ¯¨á âì ¢ ä ©«',0
-
 
5187
aCannotDeleteFile       db      '¥ ¬®£ã 㤠«¨âì ä ©«',0
-
 
5188
aCannotDeleteFolder     db      '¥ ¬®£ã 㤠«¨âì ¯ ¯ªã',0
-
 
5189
aIgnore                 db      'ˆ£­®à¨à®¢ âì',0
-
 
5190
aMkDirCaption           db      '‘®§¤ ­¨¥ ¯ ¯ª¨',0
-
 
5191
aMkDir                  db      '‘®§¤ âì ¯ ¯ªã',0
-
 
5192
aMkDirLen = $ - aMkDir - 1
-
 
5193
aCannotMakeFolder       db      '¥ ¬®£ã ᮧ¤ âì ¯ ¯ªã',0
5024
else
5194
else
5025
aDeleteCaption          db      'Delete',0
5195
aDeleteCaption          db      'Delete',0
5026
aConfirmDeleteText      db      'Do you wish to delete ',0
5196
aConfirmDeleteText      db      'Do you wish to delete ',0
5027
aDeleteFolder           db      'the folder',0
5197
aDeleteFolder           db      'the folder',0
5028
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
5198
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
5029
aDeleteFile             db      'the file',0
5199
aDeleteFile             db      'the file',0
5030
aDelete                 db      ' Delete ',0
5200
aDelete                 db      ' Delete ',0
5031
aDeleteLength = $ - aDelete - 1
5201
aDeleteLength = $ - aDelete - 1
5032
aCancel                 db      ' Cancel ',0
5202
aCancel                 db      ' Cancel ',0
5033
aCancelLength = $ - aCancel - 1
5203
aCancelLength = $ - aCancel - 1
5034
aCancelB                db      '[ Cancel ]',0
5204
aCancelB                db      '[ Cancel ]',0
5035
aCancelBLength = $ - aCancelB - 1
5205
aCancelBLength = $ - aCancelB - 1
5036
aCopyCaption            db      'Copy',0
5206
aCopyCaption            db      'Copy',0
5037
aCopy                   db      '[ Copy ]',0
5207
aCopy                   db      '[ Copy ]',0
5038
aCopyLength = $ - aCopy - 1
5208
aCopyLength = $ - aCopy - 1
-
 
5209
a_Continue              db      '[ Continue ]',0
-
 
5210
a_ContinueLength = $ - a_Continue - 1
5039
aCopy1                  db      'Copy "',0
5211
aCopy1                  db      'Copy "',0
5040
aCopy2                  db      '" to:',0
5212
aCopy2                  db      '" to:',0
5041
aError                  db      'Error',0
5213
aError                  db      'Error',0
5042
aContinue               db      'Continue',0
5214
aContinue               db      'Continue',0
5043
aRetry                  db      'Retry',0
5215
aRetry                  db      'Retry',0
-
 
5216
a_Cancel                db      'Cancel',0
-
 
5217
a_Delete                db      'Delete',0
5044
error0msg               db      'Strange... No error',0
5218
error0msg               db      'Strange... No error',0
5045
error1msg               db      'Strange... Hard disk base and/or partition not defined',0
5219
error1msg               db      'Strange... Hard disk base and/or partition not defined',0
5046
error2msg               db      'The file system does not support this function',0
5220
error2msg               db      'The file system does not support this function',0
5047
error3msg               db      'Unknown file system',0
5221
error3msg               db      'Unknown file system',0
5048
error4msg               db      'Strange... Error 4',0
5222
error4msg               db      'Strange... Error 4',0
5049
error5msg               db      'File not found',0
5223
error5msg               db      'File not found',0
5050
error6msg               db      'End of file',0
5224
error6msg               db      'End of file',0
5051
error7msg               db      'Strange... Pointer lies outside of application memory',0
5225
error7msg               db      'Strange... Pointer lies outside of application memory',0
5052
error8msg               db      'Disk is full',0
5226
error8msg               db      'Disk is full',0
5053
error9msg               db      'File structure is destroyed',0
5227
error9msg               db      'File structure is destroyed',0
5054
error10msg              db      'Access denied',0
5228
error10msg              db      'Access denied',0
5055
error11msg              db      'Device error',0
5229
error11msg              db      'Device error',0
5056
error30msg              db      'Not enough memory',0
5230
error30msg              db      'Not enough memory',0
5057
error31msg              db      'File is not executable',0
5231
error31msg              db      'File is not executable',0
5058
error32msg              db      'Too many processes',0
5232
error32msg              db      'Too many processes',0
5059
aUnknownError           db      'Unknown error code: ',0
5233
aUnknownError           db      'Unknown error code: ',0
5060
aCannotReadFolder       db      'Cannot read folder',0
5234
aCannotReadFolder       db      'Cannot read folder',0
-
 
5235
aRunError               db      'Cannot execute program:',0
-
 
5236
aFileNameTooBig         db      'Full file name is too long',0
-
 
5237
aFolderNameTooBig       db      'Full folder name is too long',0
-
 
5238
aCmdLineTooBig          db      'Command line is too long (OS limit is 256 symbols)',0
-
 
5239
aCannotCopyToSelf       db      'File cannot be copied onto itself',0
-
 
5240
aCannotReadFile         db      'Cannot read file',0
-
 
5241
aIncompleteFile         db      'Incomplete file was retrieved. Delete it?',0
-
 
5242
aKeep                   db      'Keep',0
-
 
5243
aCannotWriteFile        db      'Cannot write file',0
-
 
5244
aCannotDeleteFile       db      'Cannot delete file',0
-
 
5245
aCannotDeleteFolder     db      'Cannot delete folder',0
-
 
5246
aIgnore                 db      'Ignore',0
-
 
5247
aMkDirCaption           db      'Make folder',0
-
 
5248
aMkDir                  db      'Create the folder',0
-
 
5249
aMkDirLen = $ - aMkDir - 1
-
 
5250
aCannotMakeFolder       db      'Cannot create folder',0
5061
end if
5251
end if
5062
aOk                     db      'OK',0
5252
aOk                     db      'OK',0
5063
aNoMemory               db      'No memory!',0
5253
aNoMemory               db      'No memory!',0
5064
 
5254
 
5065
execinfo:
5255
execinfo:
5066
        dd      7
5256
        dd      7
5067
        dd      0
5257
        dd      0
5068
execparams dd   0
5258
execparams dd   0
5069
        dd      0
5259
        dd      0
5070
        dd      0
5260
        dd      0
5071
        db      0
5261
        db      0
5072
execptr dd      ?
5262
execptr dd      ?
5073
 
5263
 
5074
IncludeIGlobals
5264
IncludeIGlobals
5075
 
5265
 
5076
i_end:
5266
i_end:
5077
 
5267
 
5078
IncludeUGlobals
5268
IncludeUGlobals
5079
 
5269
 
5080
execdata rb     1024
5270
execdata rb     1024
-
 
5271
execdataend:
5081
        align   4
5272
        align   4
5082
attrinfo.attr   rb      40
5273
attrinfo.attr   rb      40
5083
 
5274
 
5084
panel1_data:
5275
panel1_data:
5085
panel1_left     dd      ?
5276
panel1_left     dd      ?
5086
panel1_top      dd      ?
5277
panel1_top      dd      ?
5087
panel1_width    dd      ?
5278
panel1_width    dd      ?
5088
panel1_height   dd      ?
5279
panel1_height   dd      ?
5089
panel1_index    dd      ?
5280
panel1_index    dd      ?
5090
panel1_start    dd      ?
5281
panel1_start    dd      ?
5091
panel1_colsz    dd      ?
5282
panel1_colsz    dd      ?
5092
panel1_colst    dd      ?
5283
panel1_colst    dd      ?
5093
panel1_sortmode db      ?
5284
panel1_sortmode db      ?
5094
                rb      3
5285
                rb      3
5095
panel1_nfa      dd      ?
5286
panel1_nfa      dd      ?
5096
panel1_numfiles dd      ?
5287
panel1_numfiles dd      ?
5097
panel1_files    dd      ?
5288
panel1_files    dd      ?
5098
panel1_dir      rb      1024
5289
panel1_dir      rb      1024
5099
 
5290
 
5100
panel2_data:
5291
panel2_data:
5101
panel2_left     dd      ?
5292
panel2_left     dd      ?
5102
panel2_top      dd      ?
5293
panel2_top      dd      ?
5103
panel2_width    dd      ?
5294
panel2_width    dd      ?
5104
panel2_height   dd      ?
5295
panel2_height   dd      ?
5105
panel2_index    dd      ?
5296
panel2_index    dd      ?
5106
panel2_start    dd      ?
5297
panel2_start    dd      ?
5107
panel2_colsz    dd      ?
5298
panel2_colsz    dd      ?
5108
panel2_colst    dd      ?
5299
panel2_colst    dd      ?
5109
panel2_sortmode db      ?
5300
panel2_sortmode db      ?
5110
                rb      3
5301
                rb      3
5111
panel2_nfa      dd      ?
5302
panel2_nfa      dd      ?
5112
panel2_numfiles dd      ?
5303
panel2_numfiles dd      ?
5113
panel2_files    dd      ?
5304
panel2_files    dd      ?
5114
panel2_dir      rb      1024
5305
panel2_dir      rb      1024
5115
 
5306
 
5116
;console_data    rb      max_width*max_height*2
5307
;console_data    rb      max_width*max_height*2
5117
 
5308
 
5118
nomem_dlgsavearea       rb      (12+4)*(3+3)*2
5309
nomem_dlgsavearea       rb      (12+4)*(3+3)*2
5119
 
5310
 
5120
cur_header      rb      max_width
5311
cur_header      rb      max_width
5121
tmp             dd      ?
5312
tmp             dd      ?
5122
 
5313
 
5123
skinh           dd      ?
5314
skinh           dd      ?
5124
std_colors      rd      10
5315
std_colors      rd      10
5125
 
5316
 
5126
min_y           dd      ?
5317
min_y           dd      ?
5127
max_y           dd      ?
5318
max_y           dd      ?
5128
min_x           dd      ?
5319
min_x           dd      ?
5129
max_x           dd      ?
5320
max_x           dd      ?
5130
used_width      dd      ?
5321
used_width      dd      ?
5131
used_height     dd      ?
5322
used_height     dd      ?
5132
 
5323
 
5133
wnd_width       dd      ?
5324
wnd_width       dd      ?
5134
wnd_height      dd      ?
5325
wnd_height      dd      ?
5135
 
5326
 
5136
column_left     dd      ?
5327
column_left     dd      ?
5137
column_top      dd      ?
5328
column_top      dd      ?
5138
column_width    dd      ?
5329
column_width    dd      ?
5139
column_height   dd      ?
5330
column_height   dd      ?
5140
column_index    dd      ?
5331
column_index    dd      ?
5141
 
5332
 
5142
scrpos          dq      ?
5333
scrpos          dq      ?
5143
viewer_right_side dq    ?
5334
viewer_right_side dq    ?
5144
 
5335
 
5145
saved_file_name:
5336
saved_file_name:
5146
procinfo        rb      1024
5337
procinfo        rb      1024
5147
lower_file_name = procinfo + 512
5338
lower_file_name = procinfo + 512
5148
 
5339
 
5149
error_msg       rb      128
5340
error_msg       rb      128
5150
 
5341
 
5151
prev_dir        rb      1024
5342
prev_dir        rb      1024
5152
 
5343
 
5153
driveinfo       rb      32+304
5344
driveinfo       rb      32+304
5154
tmpname         rb      32
5345
tmpname         rb      32
5155
 
5346
 
5156
screens         dd      ?
5347
screens         dd      ?
5157
num_screens     dd      ?
5348
num_screens     dd      ?
5158
active_screen_vtable dd ?
5349
active_screen_vtable dd ?
5159
active_screen_data dd   ?
5350
active_screen_data dd   ?
5160
 
5351
 
5161
aConfirmDeleteTextBuf   rb      aConfirmDeleteTextMax + 1
5352
aConfirmDeleteTextBuf   rb      aConfirmDeleteTextMax + 1
5162
CopySourceTextBuf       rb      512
5353
CopySourceTextBuf       rb      512
5163
CopyDestEditBuf         rb      12+512+1
5354
CopyDestEditBuf         rb      12+512+1
5164
.length = $ - CopyDestEditBuf - 9
5355
.length = $ - CopyDestEditBuf - 13
5165
 
5356
 
5166
align 4
5357
align 4
5167
layout          rb      128
5358
layout          rb      128
5168
 
5359
 
5169
copy_buffer_size = 32768
5360
copy_buffer_size = 32768
5170
copy_buffer     rb      copy_buffer_size
5361
copy_buffer     rb      copy_buffer_size
5171
 
5362
 
5172
; stack
5363
; stack
5173
        align   4
5364
        align   4
5174
        rb      512
5365
        rb      512
5175
stacktop:
5366
stacktop:
5176
 
5367
 
5177
mem:
5368
mem: