Subversion Repositories Kolibri OS

Rev

Rev 529 | Rev 631 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 529 Rev 589
Line 5... Line 5...
5
        dd      i_end
5
        dd      i_end
6
memsize dd      mem
6
memsize dd      mem
7
        dd      stacktop
7
        dd      stacktop
8
        dd      0, app_path
8
        dd      0, app_path
Line -... Line 9...
-
 
9
 
-
 
10
version equ '0.4'
-
 
11
version_dword equ 0*10000h + 40
9
 
12
 
10
include 'lang.inc'
13
include 'lang.inc'
11
include 'font.inc'
14
include 'font.inc'
12
include 'sort.inc'
15
include 'sort.inc'
13
include 'kglobals.inc'
16
include 'kglobals.inc'
Line 79... Line 82...
79
        mov     [panel2_files], eax
82
        mov     [panel2_files], eax
80
        test    eax, eax
83
        test    eax, eax
81
        jz      exit
84
        jz      exit
82
        cmp     [panel1_files], 0
85
        cmp     [panel1_files], 0
83
        jz      exit
86
        jz      exit
-
 
87
        xor     eax, eax
-
 
88
        mov     [panel1_hPlugin], eax
-
 
89
        mov     [panel1_parents], eax
-
 
90
        mov     [panel1_parents_sz], eax
-
 
91
        mov     [panel1_parents_alloc], eax
-
 
92
        mov     [panel2_hPlugin], eax
-
 
93
        mov     [panel2_parents], eax
-
 
94
        mov     [panel2_parents_sz], eax
-
 
95
        mov     [panel2_parents_alloc], eax
84
        mov     [panel1_sortmode], 0    ; sort by name
96
        mov     [panel1_sortmode], al   ; sort by name
85
        mov     [panel2_sortmode], 0
97
        mov     [panel2_sortmode], al
86
        push    2                       ; "á।­¨©" ä®à¬ â
98
        mov     al, 2                   ; "á।­¨©" ä®à¬ â
87
        pop     eax
-
 
88
        mov     [panel1_colmode], eax
99
        mov     [panel1_colmode], eax
89
        mov     [panel2_colmode], eax
100
        mov     [panel2_colmode], eax
90
        mov     [num_screens], 1
101
        mov     [num_screens], 1
91
        mov     ecx, 0x1000
102
        mov     ecx, 0x1000
92
        call    pgalloc
103
        call    pgalloc
Line 119... Line 130...
119
        push    dword aConfirmDeleteIncomplete
130
        push    dword aConfirmDeleteIncomplete
120
        push    dword aConfirmations
131
        push    dword aConfirmations
121
        push    dword app_path
132
        push    dword app_path
122
        call    [ini.get_int]
133
        call    [ini.get_int]
123
        mov     [bConfirmDeleteIncomplete], al
134
        mov     [bConfirmDeleteIncomplete], al
-
 
135
        push    2
-
 
136
        push    aLeftViewMode
-
 
137
        push    aPanels
-
 
138
        push    app_path
-
 
139
        call    [ini.get_int]
-
 
140
        cmp     eax, 1
-
 
141
        jb      @f
-
 
142
        cmp     eax, 4
-
 
143
        ja      @f
-
 
144
        mov     [panel1_colmode], eax
-
 
145
@@:
-
 
146
        push    2
-
 
147
        push    aRightViewMode
-
 
148
        push    aPanels
-
 
149
        push    app_path
-
 
150
        call    [ini.get_int]
-
 
151
        cmp     eax, 1
-
 
152
        jb      @f
-
 
153
        cmp     eax, 4
-
 
154
        ja      @f
-
 
155
        mov     [panel2_colmode], eax
-
 
156
@@:
124
        mov     ecx, 0x1000
157
        mov     ecx, 0x1000
125
        call    xpgalloc
158
        call    xpgalloc
126
        test    eax, eax
159
        test    eax, eax
127
        jz      .skip_assoc
160
        jz      .skip_assoc
128
        mov     [associations], eax
161
        mov     [associations], eax
Line 200... Line 233...
200
        jz      @f
233
        jz      @f
201
        add     [esi-4], ebp
234
        add     [esi-4], ebp
202
@@:
235
@@:
203
        loop    .l3
236
        loop    .l3
204
.skip_shortcuts:
237
.skip_shortcuts:
-
 
238
; load plugins
-
 
239
        push    enum_plugins_callback
-
 
240
        push    aPlugins
-
 
241
        push    app_path
-
 
242
        call    [ini.enum_keys]
205
.noini:
243
.noini:
206
        mov     esi, def_left_dir
244
        mov     esi, def_left_dir
207
        mov     edi, panel1_dir
245
        mov     edi, panel1_dir
208
@@:
246
@@:
209
        lodsb
247
        lodsb
Line 237... Line 275...
237
        jz      redraw
275
        jz      redraw
238
        dec     eax
276
        dec     eax
239
        jz      key
277
        jz      key
240
; button - we have only one button, close
278
; button - we have only one button, close
241
exit:
279
exit:
-
 
280
; close all screens
-
 
281
@@:
-
 
282
        mov     ecx, [num_screens]
-
 
283
        mov     eax, [screens]
-
 
284
        mov     ebp, [eax+ecx*8-4]
-
 
285
        mov     eax, [eax+ecx*8-8]
-
 
286
        push    ebp
-
 
287
        call    [eax+screen_vtable.OnExit]
-
 
288
        pop     ecx
-
 
289
        call    pgfree
-
 
290
        dec     [num_screens]
-
 
291
        jnz     @b
-
 
292
; unload all plugins
-
 
293
        mov     ecx, [num_plugins]
-
 
294
        imul    esi, ecx, PluginInfo.size
-
 
295
        add     esi, [plugins]
-
 
296
.unload:
-
 
297
        dec     ecx
-
 
298
        js      .unload_done
-
 
299
        sub     esi, PluginInfo.size
-
 
300
        push    ecx esi
-
 
301
        call    [esi+PluginInfo.unload]
-
 
302
        pop     esi ecx
-
 
303
        jmp     .unload
-
 
304
.unload_done:
-
 
305
if 0    ; commented due to bug in libini
-
 
306
        cmp     [ini.set_int], aIniSetInt
-
 
307
        jz      .nosave
-
 
308
        push    [panel1_colmode]
-
 
309
        push    aLeftViewMode
-
 
310
        push    aPanels
-
 
311
        push    app_path
-
 
312
        call    [ini.set_int]
-
 
313
        push    [panel2_colmode]
-
 
314
        push    aRightViewMode
-
 
315
        push    aPanels
-
 
316
        push    app_path
-
 
317
        call    [ini.set_int]
-
 
318
.nosave:
-
 
319
end if
-
 
320
if CHECK_FOR_LEAKS
-
 
321
        mov     ecx, [panel1_files]
-
 
322
        call    pgfree
-
 
323
        mov     ecx, [panel2_files]
-
 
324
        call    pgfree
-
 
325
        mov     ecx, [screens]
-
 
326
        call    pgfree
-
 
327
        mov     ecx, [associations]
-
 
328
        call    pgfree
-
 
329
        mov     ecx, [console_data_ptr]
-
 
330
        call    pgfree
-
 
331
        mov     ecx, [MemForImage]
-
 
332
        call    pgfree
-
 
333
        mov     esi, FolderShortcuts
-
 
334
        push    10
-
 
335
        pop     ecx
-
 
336
@@:
-
 
337
        lodsd
-
 
338
        test    eax, eax
-
 
339
        jnz     @f
-
 
340
        loop    @b
-
 
341
        jmp     .nofreefs
-
 
342
@@:
-
 
343
        mov     ecx, eax
-
 
344
        call    pgfree
-
 
345
        mov     ecx, [plugins]
-
 
346
        call    pgfree
-
 
347
        mov     ecx, [panel1_parents]
-
 
348
        call    pgfree
-
 
349
        mov     ecx, [panel2_parents]
-
 
350
        call    pgfree
-
 
351
.nofreefs:
-
 
352
        mov     eax, [numallocatedregions]
-
 
353
        test    eax, eax
-
 
354
        jz      @f
-
 
355
        mov     edi, allocatedregions
-
 
356
        int3
-
 
357
        jmp     $
-
 
358
@@:
-
 
359
end if
242
        or      eax, -1
360
        or      eax, -1
243
        int     40h
361
        int     40h
244
redraw:
362
redraw:
245
; query kbd state from OS
363
; query kbd state from OS
246
        mov     al, 66
364
        mov     al, 66
Line 638... Line 756...
638
        mov     ecx, edx
756
        mov     ecx, edx
639
        call    pgfree
757
        call    pgfree
640
        xor     eax, eax
758
        xor     eax, eax
641
        ret     12
759
        ret     12
Line -... Line 760...
-
 
760
 
-
 
761
enum_plugins_callback:
-
 
762
; LongBool __stdcall callback(f_name,sec_name,key_name);
-
 
763
; [esp+4] = f_name, [esp+8] = sec_name, [esp+12] = key_name
-
 
764
        push    nullstr
-
 
765
        push    1024
-
 
766
        push    saved_file_name
-
 
767
        push    dword [esp+12+12]
-
 
768
        push    dword [esp+16+8]
-
 
769
        push    dword [esp+20+4]
-
 
770
        call    [ini.get_str]
-
 
771
        test    eax, eax
-
 
772
        jnz     .ret
-
 
773
        mov     esi, saved_file_name
-
 
774
        cmp     byte [esi], '/'
-
 
775
        jz      .absolute
-
 
776
; convert path to absolute
-
 
777
        mov     edi, execdata
-
 
778
        push    esi
-
 
779
@@:
-
 
780
        lodsb
-
 
781
        stosb
-
 
782
        test    al, al
-
 
783
        jnz     @b
-
 
784
        pop     edi
-
 
785
        mov     esi, app_path
-
 
786
        push    esi
-
 
787
        xor     ecx, ecx
-
 
788
@@:
-
 
789
        lodsb
-
 
790
        test    al, al
-
 
791
        jz      @f
-
 
792
        cmp     al, '/'
-
 
793
        jnz     @b
-
 
794
        mov     ecx, esi
-
 
795
        jmp     @b
-
 
796
@@:
-
 
797
        pop     esi
-
 
798
        sub     ecx, esi
-
 
799
        rep     movsb
-
 
800
        mov     esi, execdata
-
 
801
.z:
-
 
802
        cmp     word [esi], '.'
-
 
803
        jz      .ret
-
 
804
        cmp     word [esi], './'
-
 
805
        jnz     @f
-
 
806
        add     esi, 2
-
 
807
        jmp     .z
-
 
808
@@:
-
 
809
        cmp     word [esi], '..'
-
 
810
        jnz     .c
-
 
811
        cmp     byte [esi+2], 0
-
 
812
        jz      .ret
-
 
813
        cmp     byte [esi+2], '/'
-
 
814
        jnz     .c
-
 
815
        add     esi, 3
-
 
816
@@:
-
 
817
        dec     edi
-
 
818
        cmp     edi, saved_file_name
-
 
819
        jbe     .ret
-
 
820
        cmp     byte [edi-1], '/'
-
 
821
        jnz     @b
-
 
822
        jmp     .z
-
 
823
.c:
-
 
824
        lodsb
-
 
825
        stosb
-
 
826
        test    al, al
-
 
827
        jz      @f
-
 
828
        cmp     edi, saved_file_name+1024
-
 
829
        jb      .c
-
 
830
        mov     esi, execdata
-
 
831
        call    load_dll_and_import.big
-
 
832
.ret:
-
 
833
        mov     al, 1
-
 
834
        ret     12
-
 
835
@@:
-
 
836
.absolute:
-
 
837
; allocate space for plugin info
-
 
838
        mov     eax, [num_plugins]
-
 
839
        inc     eax
-
 
840
        mov     [num_plugins], eax
-
 
841
        imul    ecx, eax, PluginInfo.size
-
 
842
        cmp     ecx, [alloc_plugins]
-
 
843
        jbe     .norealloc
-
 
844
        mov     edx, [plugins]
-
 
845
        call    xpgrealloc
-
 
846
        test    eax, eax
-
 
847
        jnz     @f
-
 
848
.dec_ret:
-
 
849
        dec     [num_plugins]
-
 
850
        jmp     .ret
-
 
851
@@:
-
 
852
        mov     [plugins], eax
-
 
853
        lea     eax, [ecx+0xFFF]
-
 
854
        and     eax, not 0xFFF
-
 
855
        mov     [alloc_plugins], eax
-
 
856
.norealloc:
-
 
857
        mov     esi, [plugins]
-
 
858
        lea     esi, [esi+ecx-PluginInfo.size]
-
 
859
; load plugin DLL
-
 
860
        or      ebp, -1
-
 
861
        mov     eax, saved_file_name
-
 
862
        call    load_dll_and_import.do
-
 
863
        test    eax, eax
-
 
864
        jnz     .dec_ret
-
 
865
; find exported functions
-
 
866
        mov     eax, aVersion
-
 
867
        call    load_dll_and_import.find_exported_function
-
 
868
        jnc     @f
-
 
869
        xor     eax, eax
-
 
870
@@:
-
 
871
MIN_INTERFACE_VER = 1
-
 
872
MAX_INTERFACE_VER = 1
-
 
873
        cmp     eax, MIN_INTERFACE_VER
-
 
874
        jae     @f
-
 
875
        cmp     eax, MAX_INTERFACE_VER
-
 
876
        jbe     @f
-
 
877
        push    aIncompatibleVersion
-
 
878
.cantload:
-
 
879
        push    saved_file_name
-
 
880
        push    aCannotLoadPlugin
-
 
881
        mov     eax, esp
-
 
882
        push    ContinueBtn
-
 
883
        push    1
-
 
884
        push    eax
-
 
885
        push    3
-
 
886
        call    SayErr
-
 
887
        add     esp, 12
-
 
888
        jmp     .dec_ret
-
 
889
@@:
-
 
890
        mov     edi, esi
-
 
891
        mov     esi, plugin_exported
-
 
892
.import:
-
 
893
        lodsd
-
 
894
        test    eax, eax
-
 
895
        jz      .import_done
-
 
896
        call    load_dll_and_import.find_exported_function
-
 
897
        jnc     @f
-
 
898
        mov     eax, [esi-4+plugin_exported_default-plugin_exported]
-
 
899
@@:
-
 
900
        stosd
-
 
901
        jmp     .import
-
 
902
.import_done:
-
 
903
; initialize plugin
-
 
904
        mov     eax, aPluginLoad
-
 
905
        call    load_dll_and_import.find_exported_function
-
 
906
        jc      .ok
-
 
907
        push    kfar_info
-
 
908
        call    eax
-
 
909
        cmp     eax, 1
-
 
910
        jb      .ok
-
 
911
        ja      .dec_ret
-
 
912
        push    aInitFailed
-
 
913
        jmp     .cantload
-
 
914
.ok:
-
 
915
        mov     al, 1
-
 
916
        ret     12
-
 
917
 
-
 
918
plugin_unload_default:
-
 
919
        ret
-
 
920
 
-
 
921
OpenFilePlugin_default:
-
 
922
GetFiles_default:
-
 
923
        xor     eax, eax
-
 
924
        ret     20
-
 
925
 
-
 
926
ClosePlugin_default:
-
 
927
        ret     4
-
 
928
 
-
 
929
GetOpenPluginInfo_default:
-
 
930
        ret     8
-
 
931
 
-
 
932
SetFolder_default:
-
 
933
open_default:
-
 
934
        xor     eax, eax
-
 
935
        ret     12
642
 
936
 
643
new_screen:
937
new_screen:
644
; in: ecx=sizeof(screen data), edx->vtable
938
; in: ecx=sizeof(screen data), edx->vtable
645
; out: ebp=pointer or NULL, eax!=0 if successful
939
; out: ebp=pointer or NULL, eax!=0 if successful
646
; destroys ebx,ecx
940
; destroys ebx,ecx
Line 965... Line 1259...
965
        jmp     .done_redraw
1259
        jmp     .done_redraw
966
.enter:
1260
.enter:
967
        call    get_curfile_folder_entry
1261
        call    get_curfile_folder_entry
968
        test    byte [ecx], 10h
1262
        test    byte [ecx], 10h
969
        jnz     .enter_folder
1263
        jnz     .enter_folder
-
 
1264
; todo: add  handling on plugin panel
-
 
1265
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
-
 
1266
        jnz     .ret
-
 
1267
; generate full file name
-
 
1268
        lea     esi, [ebp + panel1_dir - panel1_data]
-
 
1269
        mov     edi, execdata
-
 
1270
@@:
-
 
1271
        lodsb
-
 
1272
        test    al, al
-
 
1273
        jz      @f
-
 
1274
        stosb
-
 
1275
        cmp     edi, execdataend-1
-
 
1276
        jae     .bigfilename
-
 
1277
        jmp     @b
-
 
1278
@@:
-
 
1279
        lea     esi, [ecx+40]
-
 
1280
        mov     al, '/'
-
 
1281
        stosb
-
 
1282
@@:
-
 
1283
        lodsb
-
 
1284
        stosb
-
 
1285
        cmp     edi, execdataend
-
 
1286
        ja      .bigfilename
-
 
1287
        test    al, al
-
 
1288
        jnz     @b
-
 
1289
; try to open file and look for all plugins
-
 
1290
        push    O_READ
-
 
1291
        push    execdata
-
 
1292
        call    open
-
 
1293
        test    eax, eax
-
 
1294
        jz      .noplugins      ; if can't open, just try to execute
-
 
1295
        mov     esi, eax        ; save handle
-
 
1296
        push    filedata_buffer_size
-
 
1297
        push    filedata_buffer
-
 
1298
        push    esi
-
 
1299
        call    read
-
 
1300
        mov     edi, eax        ; save size of read data
-
 
1301
; test for Kolibri executable
-
 
1302
        cmp     eax, 24h
-
 
1303
        jb      .enter.noexec
-
 
1304
        cmp     dword [filedata_buffer], 'MENU'
-
 
1305
        jnz     @f
-
 
1306
        cmp     word [filedata_buffer+4], 'ET'
-
 
1307
        jnz     @f
-
 
1308
.close_run:
-
 
1309
        push    esi
-
 
1310
        call    close
-
 
1311
        jmp     .run_app
-
 
1312
@@:
-
 
1313
        cmp     dword [filedata_buffer], 'KPCK'
-
 
1314
        jnz     @f
-
 
1315
        cmp     dword [filedata_buffer+12], 0x26914601
-
 
1316
        jz      .close_run
-
 
1317
@@:
-
 
1318
.enter.noexec:
-
 
1319
        mov     ecx, [num_plugins]
-
 
1320
        mov     edx, [plugins]
-
 
1321
        sub     edx, PluginInfo.size
-
 
1322
.plugloop:
-
 
1323
        add     edx, PluginInfo.size
-
 
1324
        dec     ecx
-
 
1325
        js      .plugdone
-
 
1326
        pushad
-
 
1327
        push    edi
-
 
1328
        push    filedata_buffer
-
 
1329
        call    get_curfile_folder_entry
-
 
1330
        push    ecx
-
 
1331
        push    execdata
-
 
1332
        push    esi
-
 
1333
        call    [edx+PluginInfo.OpenFilePlugin]
-
 
1334
        mov     [esp+28], eax
-
 
1335
        popad
-
 
1336
        test    eax, eax
-
 
1337
        jz      .plugloop
-
 
1338
        cmp     eax, -1
-
 
1339
        jnz     .pluginok
-
 
1340
        push    esi
-
 
1341
        call    close
-
 
1342
        ret
-
 
1343
.pluginok:
-
 
1344
; save current directory and set root directory of hPlugin
-
 
1345
        mov     edi, eax        ; save handle
-
 
1346
        mov     esi, execdata
-
 
1347
@@:
-
 
1348
        lodsb
-
 
1349
        test    al, al
-
 
1350
        jnz     @b
-
 
1351
        sub     esi, execdata-9
-
 
1352
; allocate esi bytes in buffer 'parents'
-
 
1353
        mov     ecx, [ebp + panel1_parents_sz - panel1_data]
-
 
1354
        add     ecx, esi
-
 
1355
        cmp     ecx, [ebp + panel1_parents_alloc - panel1_data]
-
 
1356
        jbe     .enter.norealloc
-
 
1357
        push    edx
-
 
1358
        mov     edx, [ebp + panel1_parents - panel1_data]
-
 
1359
        call    xpgrealloc
-
 
1360
        pop     edx
-
 
1361
        test    eax, eax
-
 
1362
        jnz     @f
-
 
1363
        push    edi
-
 
1364
        call    [edx+PluginInfo.ClosePlugin]
-
 
1365
        ret
-
 
1366
@@:
-
 
1367
        mov     [ebp + panel1_parents - panel1_data], eax
-
 
1368
.enter.norealloc:
-
 
1369
        mov     [ebp + panel1_parents_sz - panel1_data], ecx
-
 
1370
; save current state to the end of buffer
-
 
1371
        sub     ecx, esi
-
 
1372
        add     ecx, [ebp + panel1_parents - panel1_data]
-
 
1373
        xchg    edx, [ebp + panel1_hPlugin - panel1_data]
-
 
1374
        mov     [ecx], edx
-
 
1375
        xchg    edi, [ebp + panel1_hFile - panel1_data]
-
 
1376
        mov     [ecx+4], edi
-
 
1377
        mov     byte [ecx+8], 0
-
 
1378
        lea     edi, [ecx+9]
-
 
1379
        lea     ecx, [esi-9]
-
 
1380
        mov     esi, execdata
-
 
1381
        rep     movsb
-
 
1382
        mov     word [ebp + panel1_dir - panel1_data], '/'
-
 
1383
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
-
 
1384
        lea     ebx, [ebp + panel1_plugin_info - panel1_data]
-
 
1385
        and     dword [ebx], 0
-
 
1386
        push    ebp
-
 
1387
        push    ebx
-
 
1388
        push    [ebp + panel1_hFile - panel1_data]
-
 
1389
        call    [eax+PluginInfo.GetOpenPluginInfo]
-
 
1390
        pop     ebp
-
 
1391
        call    get_curfile_folder_entry
-
 
1392
        mov     esi, ecx
-
 
1393
        mov     edi, left_dotdot_entry
-
 
1394
        cmp     ebp, panel1_data
-
 
1395
        jz      @f
-
 
1396
        add     edi, right_dotdot_entry-left_dotdot_entry
-
 
1397
@@:
-
 
1398
        mov     ecx, 10
-
 
1399
        rep     movsd
-
 
1400
        mov     byte [edi-40], 10h      ; attributes: folder
-
 
1401
        mov     eax, '..'
-
 
1402
        stosd
-
 
1403
        jmp     .reread
-
 
1404
.plugdone:
-
 
1405
        push    esi
-
 
1406
        call    close
-
 
1407
.noplugins:
-
 
1408
; run program or association
-
 
1409
        call    get_curfile_folder_entry
970
        call    find_extension
1410
        call    find_extension
971
        jc      .run_app
1411
        jc      .run_app
972
.run_association:
1412
.run_association:
973
        cmp     byte [edi], 0
1413
        cmp     byte [edi], 0
974
        jz      .l1
1414
        jz      .l1
Line 994... Line 1434...
994
        jmp     .dorun
1434
        jmp     .dorun
995
.run_app:
1435
.run_app:
996
        mov     [execptr], execdata
1436
        mov     [execptr], execdata
997
        and     [execparams], 0
1437
        and     [execparams], 0
998
.dorun:
1438
.dorun:
999
        lea     esi, [ebp + panel1_dir - panel1_data]
-
 
1000
        mov     edi, execdata
-
 
1001
@@:
-
 
1002
        lodsb
-
 
1003
        test    al, al
-
 
1004
        jz      @f
-
 
1005
        stosb
-
 
1006
        cmp     edi, execdataend-1
-
 
1007
        jae     .bigfilename
-
 
1008
        jmp     @b
-
 
1009
@@:
-
 
1010
        lea     esi, [ecx+40]
-
 
1011
        mov     al, '/'
-
 
1012
        stosb
-
 
1013
@@:
-
 
1014
        lodsb
-
 
1015
        stosb
-
 
1016
        cmp     edi, execdataend
-
 
1017
        ja      .bigfilename
-
 
1018
        test    al, al
-
 
1019
        jnz     @b
-
 
1020
; for fasm call - special handling, because
1439
; for fasm call - special handling, because
1021
; 1) fasm command line convention is different : fasm infile,outfile[,path] rather than tinypad infile
1440
; 1) fasm command line convention is different : fasm infile,outfile[,path] rather than tinypad infile
1022
; 2) fasm will probably create new file in directory, so we want to reload panel data
1441
; 2) fasm will probably create new file in directory, so we want to reload panel data
1023
        xor     edx, edx
1442
        xor     edx, edx
1024
        cmp     [execparams], edx
1443
        cmp     [execparams], edx
Line 1094... Line 1513...
1094
        mov     eax, esp
1513
        mov     eax, esp
1095
        push    ContinueBtn
1514
        push    ContinueBtn
1096
        push    1
1515
        push    1
1097
        push    eax
1516
        push    eax
1098
        push    2
1517
        push    2
1099
        push    -1
-
 
1100
        push    -1
-
 
1101
        push    dword aError
-
 
1102
        call    SayErr
1518
        call    SayErr
1103
        pop     eax
1519
        pop     eax
1104
        pop     eax
1520
        pop     eax
1105
        ret
1521
        ret
1106
@@:
1522
@@:
Line 1131... Line 1547...
1131
        mov     eax, esp
1547
        mov     eax, esp
1132
        push    ContinueBtn
1548
        push    ContinueBtn
1133
        push    1
1549
        push    1
1134
        push    eax
1550
        push    eax
1135
        push    1
1551
        push    1
1136
        push    -1
-
 
1137
        push    -1
-
 
1138
        push    dword aError
-
 
1139
        call    SayErr
1552
        call    SayErr
1140
        pop     eax
1553
        pop     eax
1141
        ret
1554
        ret
1142
.bigcmdline:
1555
.bigcmdline:
1143
        mov     eax, aCmdLineTooBig
1556
        mov     eax, aCmdLineTooBig
1144
        jmp     .l2
1557
        jmp     .l2
1145
.bigfoldername2:
1558
.bigfoldername2:
1146
        mov     byte [ecx], 0
1559
        mov     esi, prev_dir
-
 
1560
        lea     edi, [ebp + panel1_dir - panel1_data]
-
 
1561
@@:
-
 
1562
        lodsb
-
 
1563
        stosb
-
 
1564
        test    al, al
-
 
1565
        jnz     @b
1147
.bigfoldername:
1566
.bigfoldername:
1148
        mov     eax, aFolderNameTooBig
1567
        mov     eax, aFolderNameTooBig
1149
        jmp     .l2
1568
        jmp     .l2
1150
.enter_folder:
1569
.enter_folder:
1151
        lea     esi, [ecx+40]
1570
        lea     esi, [ecx+40]
Line 1165... Line 1584...
1165
        lea     edi, [esi-1]
1584
        lea     edi, [esi-1]
1166
        lea     edx, [ebp + panel1_dir - panel1_data + 1024]
1585
        lea     edx, [ebp + panel1_dir - panel1_data + 1024]
1167
        cmp     esi, edx
1586
        cmp     esi, edx
1168
        pop     esi
1587
        pop     esi
1169
        jae     .bigfoldername
1588
        jae     .bigfoldername
1170
        mov     ecx, edi
-
 
1171
        mov     al, '/'
1589
        mov     al, '/'
1172
        cmp     [edi-1], al
1590
        cmp     [edi-1], al
1173
        jz      @f
1591
        jz      @f
1174
        stosb
1592
        stosb
1175
@@:
1593
@@:
Line 1177... Line 1595...
1177
        cmp     edi, edx
1595
        cmp     edi, edx
1178
        jae     .bigfoldername2
1596
        jae     .bigfoldername2
1179
        stosb
1597
        stosb
1180
        test    al, al
1598
        test    al, al
1181
        jnz     @b
1599
        jnz     @b
-
 
1600
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
-
 
1601
        test    eax, eax
-
 
1602
        jz      .reread
-
 
1603
        push    ebp
-
 
1604
        lea     esi, [ebp + panel1_dir - panel1_data]
-
 
1605
        push    esi
-
 
1606
        add     ecx, 40
-
 
1607
        push    ecx
-
 
1608
        push    [ebp + panel1_hFile - panel1_data]
-
 
1609
        call    [eax+PluginInfo.SetFolder]
-
 
1610
        pop     ebp
-
 
1611
        test    al, al
-
 
1612
        jnz     .reread
-
 
1613
        mov     esi, prev_dir
-
 
1614
        lea     edi, [ebp + panel1_dir - panel1_data]
-
 
1615
@@:
-
 
1616
        lodsb
-
 
1617
        stosb
-
 
1618
        test    al, al
-
 
1619
        jnz     @b
-
 
1620
.retd:
-
 
1621
        ret
1182
.reread:
1622
.reread:
1183
        call    read_folder
1623
        call    read_folder
1184
.done_cmdbar:
1624
.done_cmdbar:
1185
        call    draw_cmdbar
1625
        call    draw_cmdbar
1186
        jmp     .done_redraw
1626
        jmp     .done_redraw
1187
.dotdot:
1627
.dotdot:
1188
        lea     edi, [ebp + panel1_dir - panel1_data]
1628
        lea     edi, [ebp + panel1_dir - panel1_data]
-
 
1629
        cmp     word [edi], '/'
-
 
1630
        jnz     .dotdot_noroot
-
 
1631
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
-
 
1632
        jz      .retd
-
 
1633
        call    close_plugin_panel
-
 
1634
        jmp     .dotdot
-
 
1635
.dotdot_noroot:
-
 
1636
        mov     edx, edi
1189
        mov     al, 0
1637
        mov     al, 0
1190
        or      ecx, -1
1638
        or      ecx, -1
1191
        repnz   scasb
1639
        repnz   scasb
1192
        dec     edi
1640
        dec     edi
1193
        mov     al, '/'
1641
        mov     al, '/'
1194
        std
1642
        std
1195
        repnz   scasb
1643
        repnz   scasb
1196
        cld
1644
        cld
1197
        inc     edi
1645
        inc     edi
1198
        mov     byte [edi], 0
1646
        cmp     edi, edx
-
 
1647
        jnz     @f
1199
        inc     edi
1648
        inc     edi
-
 
1649
@@:
-
 
1650
        push    dword [edi]
-
 
1651
        mov     byte [edi], 0
1200
        push    edi
1652
        push    edi
-
 
1653
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
-
 
1654
        test    eax, eax
-
 
1655
        jz      .dotdot_native
-
 
1656
        push    ebp
-
 
1657
        lea     esi, [ebp + panel1_dir - panel1_data]
-
 
1658
        push    esi
-
 
1659
        push    aDotDot
-
 
1660
        push    [ebp + panel1_hFile - panel1_data]
-
 
1661
        call    [eax+PluginInfo.SetFolder]
-
 
1662
        pop     ebp
-
 
1663
        test    al, al
-
 
1664
        jnz     .dotdot_native
-
 
1665
        pop     edi
-
 
1666
        pop     dword [edi]
-
 
1667
        ret
-
 
1668
.dotdot_native:
1201
        call    read_folder
1669
        call    read_folder
1202
        pop     edi
1670
        pop     edi
-
 
1671
        pop     dword [edi]
-
 
1672
        push    edi
-
 
1673
        cmp     byte [edi], '/'
-
 
1674
        jnz     @f
-
 
1675
        inc     edi
-
 
1676
@@:
1203
        mov     edx, [ebp + panel1_files - panel1_data]
1677
        mov     edx, [ebp + panel1_files - panel1_data]
1204
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
1678
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
1205
.scanloop:
1679
.scanloop:
1206
        mov     esi, [edx]
1680
        mov     esi, [edx]
1207
        add     esi, 40
1681
        add     esi, 40
Line 1226... Line 1700...
1226
        sub     edx, [ebp + panel1_colst - panel1_data]
1700
        sub     edx, [ebp + panel1_colst - panel1_data]
1227
        jb      .scandone
1701
        jb      .scandone
1228
        inc     edx
1702
        inc     edx
1229
        mov     [ebp + panel1_start - panel1_data], edx
1703
        mov     [ebp + panel1_start - panel1_data], edx
1230
.scandone:
1704
.scandone:
-
 
1705
        pop     edi
-
 
1706
        mov     byte [edi], 0
1231
        jmp     .done_cmdbar
1707
        jmp     .done_cmdbar
1232
.ctrl_f39:
1708
.ctrl_f39:
1233
        sub     al, 0x3D
1709
        sub     al, 0x3D
1234
        add     al, al
1710
        add     al, al
1235
        mov     ah, [ebp + panel1_sortmode - panel1_data]
1711
        mov     ah, [ebp + panel1_sortmode - panel1_data]
Line 1354... Line 1830...
1354
        mov     [esi], edi
1830
        mov     [esi], edi
1355
        jmp     @b
1831
        jmp     @b
1356
@@:
1832
@@:
1357
        mov     ecx, edx
1833
        mov     ecx, edx
1358
        lea     edi, [ebp + panel1_dir - panel1_data]
1834
        lea     edi, [ebp + panel1_dir - panel1_data]
-
 
1835
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
-
 
1836
        jz      .find_cur_drive_loop
-
 
1837
        mov     edi, [ebp + panel1_parents - panel1_data]
-
 
1838
        add     edi, 8
1359
.find_cur_drive_loop:
1839
.find_cur_drive_loop:
1360
        push    edi
1840
        push    edi
1361
        lea     esi, [ecx+8]
1841
        lea     esi, [ecx+8]
1362
@@:
1842
@@:
1363
        lodsb
1843
        lodsb
Line 1389... Line 1869...
1389
        push    [ebp + panel1_width - panel1_data]
1869
        push    [ebp + panel1_width - panel1_data]
1390
        push    [ebp + panel1_top - panel1_data]
1870
        push    [ebp + panel1_top - panel1_data]
1391
        push    [ebp + panel1_left - panel1_data]
1871
        push    [ebp + panel1_left - panel1_data]
1392
        call    menu_centered_in
1872
        call    menu_centered_in
1393
        cmp     eax, -1
1873
        cmp     eax, -1
1394
        jz      .ret2
1874
        jnz     @f
1395
        lea     esi, [eax+8]
1875
        mov     ecx, edx
-
 
1876
        call    pgfree
-
 
1877
        ret
-
 
1878
@@:
-
 
1879
        push    eax
-
 
1880
        call    close_plugin_panels
1396
        lea     edi, [ebp + panel1_dir - panel1_data]
1881
        lea     edi, [ebp + panel1_dir - panel1_data]
1397
        push    ecx esi edi
1882
        push    edi
1398
        mov     esi, edi
1883
        mov     esi, edi
1399
        mov     edi, prev_dir
1884
        mov     edi, prev_dir
1400
        mov     ecx, 1024/4
1885
        mov     ecx, 1024/4
1401
        rep     movsd
1886
        rep     movsd
-
 
1887
        pop     edi
1402
        pop     edi esi ecx
1888
        pop     esi
-
 
1889
        add     esi, 8
1403
@@:
1890
@@:
1404
        lodsb
1891
        lodsb
1405
        stosb
1892
        stosb
1406
        test    al, al
1893
        test    al, al
1407
        jnz     @b
1894
        jnz     @b
1408
        mov     ecx, edx
1895
        mov     ecx, edx
1409
        call    pgfree
1896
        call    pgfree
1410
        call    read_folder
1897
        call    read_folder
1411
        jmp     .done_redraw
1898
        jmp     .done_redraw
1412
.shift_f5:
1899
.shift_f5:
-
 
1900
; todo: copy to plugin panel
-
 
1901
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
-
 
1902
        jz      @f
-
 
1903
        ret
-
 
1904
@@:
1413
        mov     esi, ebp
1905
        mov     esi, ebp
1414
        cmp     [ebp + panel1_selected_num - panel1_data], 0
1906
        cmp     [ebp + panel1_selected_num - panel1_data], 0
1415
        jnz     .f5_2
1907
        jnz     .f5_2
1416
        call    get_curfile_folder_entry
1908
        call    get_curfile_folder_entry
1417
        lea     esi, [ecx+40]
1909
        lea     esi, [ecx+40]
Line 1427... Line 1919...
1427
        test    al, al
1919
        test    al, al
1428
        jz      .f5_common
1920
        jz      .f5_common
1429
        stosb
1921
        stosb
1430
        jmp     @b
1922
        jmp     @b
1431
.f5:
1923
.f5:
-
 
1924
; todo: copy to plugin panel
1432
        mov     esi, ebp
1925
        mov     esi, ebp
1433
        xor     esi, panel1_data xor panel2_data
1926
        xor     esi, panel1_data xor panel2_data
-
 
1927
        cmp     [esi + panel1_hPlugin - panel1_data], 0
-
 
1928
        jz      .f5_2
-
 
1929
        ret
1434
.f5_2:
1930
.f5_2:
-
 
1931
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
-
 
1932
        mov     [source_hModule], eax
-
 
1933
        mov     eax, [ebp + panel1_hFile - panel1_data]
-
 
1934
        mov     [source_hPlugin], eax
-
 
1935
        mov     eax, left_dotdot_entry
-
 
1936
        cmp     ebp, panel1_data
-
 
1937
        jz      @f
-
 
1938
        add     eax, right_dotdot_entry-left_dotdot_entry
-
 
1939
@@:
-
 
1940
        mov     [default_attr], eax
1435
        add     esi, panel1_dir - panel1_data
1941
        add     esi, panel1_dir - panel1_data
1436
        mov     edi, CopyDestEditBuf
1942
        mov     edi, CopyDestEditBuf
1437
        mov     eax, CopyDestEditBuf.length
1943
        mov     eax, CopyDestEditBuf.length
1438
        stosd
1944
        stosd
1439
        scasd
1945
        scasd
Line 1697... Line 2203...
1697
        mov     eax, esp
2203
        mov     eax, esp
1698
        push    ContinueBtn
2204
        push    ContinueBtn
1699
        push    1
2205
        push    1
1700
        push    eax
2206
        push    eax
1701
        push    2
2207
        push    2
1702
        push    -1
-
 
1703
        push    -1
-
 
1704
        push    aError
-
 
1705
        call    SayErr
2208
        call    SayErr
1706
        pop     eax
2209
        pop     eax
1707
        pop     eax
2210
        pop     eax
1708
.ret3:
2211
.ret3:
1709
        ret
2212
        ret
Line 1765... Line 2268...
1765
@@:
2268
@@:
1766
; ­ ç¨­ ¥¬ ᮡá⢥­­® ª®¯¨à®¢ ­¨¥
2269
; ­ ç¨­ ¥¬ ᮡá⢥­­® ª®¯¨à®¢ ­¨¥
1767
        mov     [bDestIsFolder], dl
2270
        mov     [bDestIsFolder], dl
1768
        mov     [copy_bSkipAll], 0
2271
        mov     [copy_bSkipAll], 0
1769
        mov     [copy_bSkipAll2], 0
2272
        mov     [copy_bSkipAll2], 0
-
 
2273
        mov     [copy_bSkipAll3], 0
-
 
2274
        test    [ebp + panel1_plugin_flags - panel1_data], 2
-
 
2275
        jnz     .copy_GetFiles
1770
        cmp     [ebp + panel1_selected_num - panel1_data], 0
2276
        cmp     [ebp + panel1_selected_num - panel1_data], 0
1771
        jnz     .f5_selected3
2277
        jnz     .f5_selected3
1772
        call    copy_file
2278
        call    copy_file
1773
.copydone:
2279
.copydone:
1774
        push    ebp
2280
        push    ebp
Line 1797... Line 2303...
1797
        popad
2303
        popad
1798
.f5_selected_copycont:
2304
.f5_selected_copycont:
1799
        loop    .f5_selected_copyloop
2305
        loop    .f5_selected_copyloop
1800
.f5_multiple_cancel:
2306
.f5_multiple_cancel:
1801
        jmp     .copydone
2307
        jmp     .copydone
-
 
2308
.copy_GetFiles:
-
 
2309
        mov     ecx, [ebp + panel1_selected_num - panel1_data]
-
 
2310
        cmp     ecx, 1
-
 
2311
        adc     ecx, 0
-
 
2312
        shl     ecx, 2
-
 
2313
        call    xpgalloc
-
 
2314
        test    eax, eax
-
 
2315
        jnz     @f
-
 
2316
        ret
-
 
2317
@@:
-
 
2318
        push    ebp eax ; save
-
 
2319
        push    copy_AddDir     ; adddir
-
 
2320
        push    copy_AddFile    ; addfile
-
 
2321
        push    eax             ; items
-
 
2322
        shr     ecx, 2
-
 
2323
        push    ecx             ; NumItems
-
 
2324
        push    [ebp + panel1_hFile - panel1_data]
-
 
2325
        mov     edi, eax
-
 
2326
        call    get_curfile_folder_entry
-
 
2327
        mov     [edi], ecx
-
 
2328
        cmp     [ebp + panel1_selected_num - panel1_data], 0
-
 
2329
        jz      .cgf1
-
 
2330
        mov     esi, [ebp + panel1_files - panel1_data]
-
 
2331
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
-
 
2332
.cgf0:
-
 
2333
        lodsd
-
 
2334
        test    byte [eax+303], 1
-
 
2335
        jz      @f
-
 
2336
        stosd
-
 
2337
@@:
-
 
2338
        loop    .cgf0
-
 
2339
.cgf1:
-
 
2340
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
-
 
2341
        call    [eax+PluginInfo.GetFiles]
-
 
2342
        pop     ecx ebp
-
 
2343
        call    pgfree
-
 
2344
        jmp     .copydone
Line 1802... Line 2345...
1802
 
2345
 
1803
.f3:
2346
.f3:
1804
        call    view_file
2347
        call    view_file
1805
.ret2:
2348
.ret2:
Line 1847... Line 2390...
1847
        mov     eax, esp
2390
        mov     eax, esp
1848
        push    DeleteOrCancelBtn
2391
        push    DeleteOrCancelBtn
1849
        push    2
2392
        push    2
1850
        push    eax
2393
        push    eax
1851
        push    2
2394
        push    2
1852
        push    -1
-
 
1853
        push    -1
-
 
1854
        push    aDeleteCaption
2395
        push    aDeleteCaption
1855
        call    Message
2396
        call    Message
1856
        add     esp, 8
2397
        add     esp, 8
1857
        test    eax, eax
2398
        test    eax, eax
1858
        jnz     .ret2
2399
        jnz     .ret2
Line 1869... Line 2410...
1869
@@:
2410
@@:
1870
        loop    .f8_loop
2411
        loop    .f8_loop
1871
.f8_multiple_cancel:
2412
.f8_multiple_cancel:
1872
        jmp     .copydone
2413
        jmp     .copydone
1873
.f8:
2414
.f8:
-
 
2415
; todo: delete files from plugin panel
-
 
2416
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
-
 
2417
        jz      @f
-
 
2418
        ret
-
 
2419
@@:
1874
        cmp     [ebp + panel1_selected_num - panel1_data], 0
2420
        cmp     [ebp + panel1_selected_num - panel1_data], 0
1875
        jnz     .f8_has_selected
2421
        jnz     .f8_has_selected
1876
        call    get_curfile_folder_entry
2422
        call    get_curfile_folder_entry
1877
        cmp     [bConfirmDelete], 0
2423
        cmp     [bConfirmDelete], 0
1878
        jz      .f8_allowed
2424
        jz      .f8_allowed
Line 1899... Line 2445...
1899
        mov     eax, esp
2445
        mov     eax, esp
1900
        push    DeleteOrCancelBtn
2446
        push    DeleteOrCancelBtn
1901
        push    2
2447
        push    2
1902
        push    eax
2448
        push    eax
1903
        push    2
2449
        push    2
1904
        push    -1
-
 
1905
        push    -1
-
 
1906
        push    aDeleteCaption
2450
        push    aDeleteCaption
1907
        call    Message
2451
        call    Message
1908
        add     esp, 8
2452
        add     esp, 8
1909
        test    eax, eax
2453
        test    eax, eax
1910
        jz      .f8_allowed
2454
        jz      .f8_allowed
Line 1973... Line 2517...
1973
        jbe     @f
2517
        jbe     @f
1974
        mov     [ebp + panel1_start - panel1_data], eax
2518
        mov     [ebp + panel1_start - panel1_data], eax
1975
@@:
2519
@@:
1976
        jmp     .done_redraw
2520
        jmp     .done_redraw
1977
.menu:
2521
.menu:
-
 
2522
; todo: context menu for plugin panel
-
 
2523
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
-
 
2524
        jz      @f
-
 
2525
        ret
-
 
2526
@@:
1978
; display context menu
2527
; display context menu
1979
; ignore folders
2528
; ignore folders
1980
        call    get_curfile_folder_entry
2529
        call    get_curfile_folder_entry
1981
        test    byte [ecx], 10h
2530
        test    byte [ecx], 10h
1982
        jz      @f
2531
        jz      @f
Line 2251... Line 2800...
2251
        mov     eax, [FolderShortcuts+eax*4]
2800
        mov     eax, [FolderShortcuts+eax*4]
2252
        test    eax, eax
2801
        test    eax, eax
2253
        jnz     @f
2802
        jnz     @f
2254
        ret
2803
        ret
2255
@@:
2804
@@:
-
 
2805
        push    eax
-
 
2806
        call    close_plugin_panels
2256
        lea     esi, [ebp + panel1_dir - panel1_data]
2807
        lea     esi, [ebp + panel1_dir - panel1_data]
2257
        push    eax esi
2808
        push    esi
2258
        mov     edi, prev_dir
2809
        mov     edi, prev_dir
2259
@@:
2810
@@:
2260
        lodsb
2811
        lodsb
2261
        stosb
2812
        stosb
2262
        test    al, al
2813
        test    al, al
Line 2381... Line 2932...
2381
.gacont:
2932
.gacont:
2382
        loop    .galoop
2933
        loop    .galoop
2383
.galoopdone:
2934
.galoopdone:
2384
        jmp     .done_redraw
2935
        jmp     .done_redraw
Line -... Line 2936...
-
 
2936
 
-
 
2937
@@:
-
 
2938
        call    close_plugin_panel
-
 
2939
close_plugin_panels:
-
 
2940
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
-
 
2941
        jnz     @b
-
 
2942
        ret
-
 
2943
 
-
 
2944
close_plugin_panel:
-
 
2945
; close plugin and restore old directory
-
 
2946
        mov     esi, [ebp + panel1_parents - panel1_data]
-
 
2947
        add     esi, [ebp + panel1_parents_sz - panel1_data]
-
 
2948
@@:
-
 
2949
        dec     esi
-
 
2950
        cmp     byte [esi-1], 0
-
 
2951
        jnz     @b
-
 
2952
        push    esi
-
 
2953
        lea     edi, [ebp + panel1_dir - panel1_data]
-
 
2954
@@:
-
 
2955
        lodsb
-
 
2956
        stosb
-
 
2957
        test    al, al
-
 
2958
        jnz     @b
-
 
2959
        pop     esi
-
 
2960
        sub     esi, 9
-
 
2961
        mov     edx, [esi]      ; hPlugin
-
 
2962
        mov     ebx, [esi+4]    ; hFile
-
 
2963
        sub     esi, [ebp + panel1_parents - panel1_data]
-
 
2964
        mov     [ebp + panel1_parents_sz - panel1_data], esi
-
 
2965
        xchg    edx, [ebp + panel1_hPlugin - panel1_data]
-
 
2966
        xchg    ebx, [ebp + panel1_hFile - panel1_data]
-
 
2967
        push    edx ebx
-
 
2968
        lea     ebx, [ebp + panel1_plugin_info - panel1_data]
-
 
2969
        and     dword [ebx], 0
-
 
2970
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
-
 
2971
        test    eax, eax
-
 
2972
        jz      @f
-
 
2973
        push    ebp
-
 
2974
        push    ebx
-
 
2975
        push    [ebp + panel1_hFile - panel1_data]
-
 
2976
        call    [eax+PluginInfo.GetOpenPluginInfo]
-
 
2977
        pop     ebp
-
 
2978
@@:
-
 
2979
        pop     ebx edx
-
 
2980
 
-
 
2981
close_handle_if_unused:
-
 
2982
; edx=hPlugin, ebx=hFile
-
 
2983
        push    ebp
-
 
2984
        xor     ecx, ecx
-
 
2985
@@:
-
 
2986
        mov     eax, [screens]
-
 
2987
        mov     ebp, [eax+ecx*8+4]
-
 
2988
        mov     eax, [eax+ecx*8]
-
 
2989
        call    [eax+screen_vtable.IsHandleUsed]
-
 
2990
        jz      .used
-
 
2991
        inc     ecx
-
 
2992
        cmp     ecx, [num_screens]
-
 
2993
        jb      @b
-
 
2994
        push    ebx
-
 
2995
        call    [edx+PluginInfo.ClosePlugin]
-
 
2996
.used:
-
 
2997
        pop     ebp
-
 
2998
        ret
-
 
2999
 
-
 
3000
panels_IsHandleUsed:
-
 
3001
; edx=hPlugin, ebx=hFile
-
 
3002
        mov     ebp, panel1_data
-
 
3003
        call    .1
-
 
3004
        jz      .ret
-
 
3005
        mov     ebp, panel2_data
-
 
3006
 
-
 
3007
.1:
-
 
3008
        cmp     edx, [ebp+panel1_hPlugin-panel1_data]
-
 
3009
        jnz     @f
-
 
3010
        cmp     ebx, [ebp+panel1_hFile-panel1_data]
-
 
3011
        jz      .ret
-
 
3012
@@:
-
 
3013
        mov     esi, [ebp + panel1_parents_sz - panel1_data]
-
 
3014
        test    esi, esi
-
 
3015
        jnz     @f
-
 
3016
        inc     esi
-
 
3017
.ret:
-
 
3018
        ret
-
 
3019
@@:
-
 
3020
        add     esi, [ebp + panel1_parents - panel1_data]
-
 
3021
@@:
-
 
3022
        dec     esi
-
 
3023
        cmp     byte [esi-1], 0
-
 
3024
        jnz     @b
-
 
3025
        sub     esi, 9
-
 
3026
        cmp     edx, [esi]      ; hPlugin
-
 
3027
        jnz     .no
-
 
3028
        mov     ebx, [esi+4]    ; hFile
-
 
3029
        jz      .ret
-
 
3030
.no:
-
 
3031
        cmp     esi, [ebp + panel1_parents - panel1_data]
-
 
3032
        jnz     @b
-
 
3033
        inc     esi
-
 
3034
        ret
-
 
3035
 
-
 
3036
panels_OnExit:
-
 
3037
; close plugin panels
-
 
3038
        mov     ebp, panel1_data
-
 
3039
        call    close_plugin_panels
-
 
3040
        mov     ebp, panel2_data
-
 
3041
        call    close_plugin_panels
-
 
3042
        ret
2385
 
3043
 
2386
panels_OnRedraw:
3044
panels_OnRedraw:
2387
        call    draw_cmdbar
3045
        call    draw_cmdbar
2388
        mov     ebp, panel1_data
3046
        mov     ebp, panel1_data
2389
        call    calc_colwidths
3047
        call    calc_colwidths
Line 2456... Line 3114...
2456
        stosd
3114
        stosd
2457
        stosb
3115
        stosb
2458
end if
3116
end if
2459
        sub     ecx, 13
3117
        sub     ecx, 13
2460
        mov     ebp, [active_panel]
3118
        mov     ebp, [active_panel]
2461
        lea     esi, [ebp + panel1_dir - panel1_data]
-
 
2462
        push    3
3119
        push    3
2463
        pop     edx
3120
        pop     edx
-
 
3121
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
-
 
3122
        jz      .native
-
 
3123
        mov     esi, [ebp + panel1_parents - panel1_data]
-
 
3124
        add     esi, [ebp + panel1_parents_sz - panel1_data]
-
 
3125
@@:
-
 
3126
        dec     esi
-
 
3127
        cmp     byte [esi-1], 0
-
 
3128
        jz      @f
-
 
3129
        cmp     byte [esi-1], '/'
-
 
3130
        jnz     @b
-
 
3131
@@:
-
 
3132
        push    ecx edi
-
 
3133
        shr     ecx, 1
-
 
3134
@@:
-
 
3135
        lodsb
-
 
3136
        test    al, al
-
 
3137
        jz      @f
-
 
3138
        stosb
-
 
3139
        loop    @b
-
 
3140
@@:
-
 
3141
        sub     edi, [esp]
-
 
3142
        sub     [esp+4], edi
-
 
3143
        add     [esp], edi
-
 
3144
        pop     edi ecx
-
 
3145
        lea     esi, [ebp + panel1_dir - panel1_data]
-
 
3146
        cmp     byte [esi+1], 0
-
 
3147
        jnz     @f
-
 
3148
        inc     esi
-
 
3149
@@:
-
 
3150
        jmp     .main
-
 
3151
.native:
-
 
3152
        lea     esi, [ebp + panel1_dir - panel1_data]
2464
@@:
3153
@@:
2465
        lodsb
3154
        lodsb
2466
        stosb
3155
        stosb
2467
        dec     ecx
3156
        dec     ecx
2468
        test    al, al
3157
        test    al, al
Line 2475... Line 3164...
2475
        test    al, al
3164
        test    al, al
2476
        jnz     @f
3165
        jnz     @f
2477
        dec     esi
3166
        dec     esi
2478
        dec     edi
3167
        dec     edi
2479
@@:
3168
@@:
-
 
3169
.main:
2480
        push    esi
3170
        push    esi
2481
@@:
3171
@@:
2482
        lodsb
3172
        lodsb
2483
        test    al, al
3173
        test    al, al
2484
        jnz     @b
3174
        jnz     @b
Line 2516... Line 3206...
2516
        movsb
3206
        movsb
2517
        dec     ecx
3207
        dec     ecx
2518
        jz      .nodir
3208
        jz      .nodir
2519
        cmp     esi, [esp]
3209
        cmp     esi, [esp]
2520
        jae     @b
3210
        jae     @b
-
 
3211
        mov     esi, [esp+4]
2521
        mov     al, '/'
3212
        mov     al, '/'
2522
        stosb
3213
        stosb
2523
        dec     ecx
3214
        dec     ecx
2524
        jz      .nodir
3215
        jz      .nodir
2525
        mov     esi, [esp+4]
-
 
2526
@@:
3216
@@:
2527
        cmp     esi, [esp+8]
3217
        cmp     esi, [esp+8]
2528
        jb      .nodir
3218
        jb      .nodir
2529
        movsb
3219
        movsb
2530
        loop    @b
3220
        loop    @b
Line 3056... Line 3746...
3056
        loop    .loop2
3746
        loop    .loop2
3057
        pop     eax
3747
        pop     eax
3058
        and     dword [edi], 0
3748
        and     dword [edi], 0
3059
        ret
3749
        ret
Line -... Line 3750...
-
 
3750
 
-
 
3751
GetPanelTitle_default:
-
 
3752
        mov     edi, [esp+8]
-
 
3753
        mov     ecx, 1024
-
 
3754
        mov     esi, [esp+12]
-
 
3755
        test    esi, esi
-
 
3756
        jz      .nohost
-
 
3757
        mov     edx, esi
-
 
3758
@@:
-
 
3759
        lodsb
-
 
3760
        test    al, al
-
 
3761
        jz      @f
-
 
3762
        cmp     al, '/'
-
 
3763
        jnz     @b
-
 
3764
        mov     edx, esi
-
 
3765
        jmp     @b
-
 
3766
@@:
-
 
3767
        mov     esi, edx
-
 
3768
@@:
-
 
3769
        lodsb
-
 
3770
        stosb
-
 
3771
        test    al, al
-
 
3772
        loopnz  @b
-
 
3773
        dec     edi
-
 
3774
        inc     ecx
-
 
3775
.nohost:
-
 
3776
        mov     esi, [esp+16]
-
 
3777
        cmp     word [esi], '/'
-
 
3778
        jz      .nodir
-
 
3779
@@:
-
 
3780
        lodsb
-
 
3781
        stosb
-
 
3782
        test    al, al
-
 
3783
        loopnz  @b
-
 
3784
        dec     edi
-
 
3785
.nodir:
-
 
3786
        mov     byte [edi], 0
-
 
3787
        ret     10h
3060
 
3788
 
3061
draw_panel:
3789
draw_panel:
3062
        mov     eax, [ebp + panel1_left - panel1_data]
3790
        mov     eax, [ebp + panel1_left - panel1_data]
3063
        mov     edx, [ebp + panel1_top - panel1_data]
3791
        mov     edx, [ebp + panel1_top - panel1_data]
3064
        call    get_console_ptr
3792
        call    get_console_ptr
Line 3180... Line 3908...
3180
        pop     ecx
3908
        pop     ecx
3181
        dec     ecx
3909
        dec     ecx
3182
        jnz     .columns_loop
3910
        jnz     .columns_loop
3183
; ‡ £®«®¢®ª ¯ ­¥«¨ (⥪ãé ï ¯ ¯ª )
3911
; ‡ £®«®¢®ª ¯ ­¥«¨ (⥪ãé ï ¯ ¯ª )
3184
        lea     esi, [ebp + panel1_dir - panel1_data]
3912
        lea     esi, [ebp + panel1_dir - panel1_data]
-
 
3913
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
-
 
3914
        test    eax, eax
-
 
3915
        jz      .native
-
 
3916
        push    ebp
-
 
3917
        push    esi
-
 
3918
        mov     esi, [ebp + panel1_parents - panel1_data]
-
 
3919
        add     esi, [ebp + panel1_parents_sz - panel1_data]
-
 
3920
@@:
-
 
3921
        dec     esi
-
 
3922
        cmp     byte [esi-1], 0
-
 
3923
        jnz     @b
-
 
3924
        push    esi
-
 
3925
        push    execdata
-
 
3926
        push    [ebp + panel1_hFile - panel1_data]
-
 
3927
        call    [eax+PluginInfo.GetPanelTitle]
-
 
3928
        pop     ebp
-
 
3929
        mov     esi, execdata
-
 
3930
.native:
3185
        mov     edi, cur_header
3931
        mov     edi, cur_header
3186
        mov     ecx, [ebp + panel1_width - panel1_data]
3932
        mov     ecx, [ebp + panel1_width - panel1_data]
3187
        sub     ecx, 7
3933
        sub     ecx, 7
3188
        movsb
3934
        movsb
3189
@@:
3935
@@:
Line 4036... Line 4782...
4036
        mov     dword [ebp + panel1_total_size+4 - panel1_data], eax
4782
        mov     dword [ebp + panel1_total_size+4 - panel1_data], eax
4037
        mov     [ebp + panel1_selected_num - panel1_data], eax
4783
        mov     [ebp + panel1_selected_num - panel1_data], eax
4038
        mov     dword [ebp + panel1_selected_size - panel1_data], eax
4784
        mov     dword [ebp + panel1_selected_size - panel1_data], eax
4039
        mov     dword [ebp + panel1_selected_size+4 - panel1_data], eax
4785
        mov     dword [ebp + panel1_selected_size+4 - panel1_data], eax
4040
.retry:
4786
.retry:
-
 
4787
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
-
 
4788
        test    eax, eax
-
 
4789
        jz      .native
-
 
4790
        mov     ecx, [dirinfo.size]
-
 
4791
        test    [ebp + panel1_plugin_flags - panel1_data], 1
-
 
4792
        jz      @f
-
 
4793
        dec     ecx     ; reserve one entry for '..'
-
 
4794
@@:
-
 
4795
        push    ebp
-
 
4796
        push    [dirinfo.dirdata]
-
 
4797
        push    ecx
-
 
4798
        push    0
-
 
4799
        push    [ebp + panel1_hFile - panel1_data]
-
 
4800
        call    [eax + PluginInfo.ReadFolder]
-
 
4801
        pop     ebp
-
 
4802
        mov     ebx, [dirinfo.dirdata]
-
 
4803
        mov     ebx, [ebx+4]
-
 
4804
        jmp     .read
-
 
4805
.native:
4041
        push    70
4806
        push    70
4042
        pop     eax
4807
        pop     eax
4043
        mov     ebx, dirinfo
4808
        mov     ebx, dirinfo
4044
        int     40h
4809
        int     40h
-
 
4810
.read:
4045
        test    eax, eax
4811
        test    eax, eax
4046
        jz      .ok
4812
        jz      .ok
4047
        cmp     eax, 6
4813
        cmp     eax, 6
4048
        jz      .ok
4814
        jz      .ok
4049
; Failed to read folder, notify user
4815
; Failed to read folder, notify user
Line 4059... Line 4825...
4059
        mov     eax, esp
4825
        mov     eax, esp
4060
        push    edx
4826
        push    edx
4061
        push    2
4827
        push    2
4062
        push    eax
4828
        push    eax
4063
        push    3
4829
        push    3
4064
        push    -1
-
 
4065
        push    -1
-
 
4066
        push    dword aError
-
 
4067
        call    SayErr
4830
        call    SayErr
4068
        add     esp, 5*4
4831
        add     esp, 5*4
4069
        test    eax, eax
4832
        test    eax, eax
4070
        jz      .retry
4833
        jz      .retry
4071
.dont_notify:
4834
.dont_notify:
-
 
4835
; If not on plugin panel, try to return to previous directory
-
 
4836
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
-
 
4837
        jnz     @f
4072
        mov     esi, prev_dir
4838
        mov     esi, prev_dir
4073
        cmp     byte [esi], 0
4839
        cmp     byte [esi], 0
4074
        jz      @f
4840
        jz      @f
4075
        lea     edi, [ebp + panel1_dir - panel1_data]
4841
        lea     edi, [ebp + panel1_dir - panel1_data]
4076
        mov     ecx, 1024/4
4842
        mov     ecx, 1024/4
4077
        rep     movsd
4843
        rep     movsd
4078
        mov     byte [prev_dir], 0
4844
        mov     byte [prev_dir], 0
4079
        ret
4845
        ret
4080
@@:
4846
@@:
4081
        mov     [bSilentFolderMode], 1  ; enter silent mode
4847
        mov     [bSilentFolderMode], 1  ; enter silent mode
-
 
4848
; Try to read parent folder
4082
        mov     esi, [dirinfo.name]
4849
        mov     esi, [dirinfo.name]
4083
        xor     edx, edx
4850
        xor     edx, edx
4084
.up1:
4851
.up1:
4085
        lodsb
4852
        lodsb
4086
        test    al, al
4853
        test    al, al
Line 4089... Line 4856...
4089
        jnz     .up1
4856
        jnz     .up1
4090
        inc     edx
4857
        inc     edx
4091
        lea     edi, [esi-1]
4858
        lea     edi, [esi-1]
4092
        jmp     .up1
4859
        jmp     .up1
4093
.up1done:
4860
.up1done:
-
 
4861
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
-
 
4862
        jz      .4
-
 
4863
        cmp     edx, 1
-
 
4864
        ja      .up
-
 
4865
; ç⥭¨¥ á ¯ ­¥«¨ ¯« £¨­  ®¡«®¬ «®áì ¯® ¯®«­®©
-
 
4866
; ¯à¨ í⮬ ¬ë 㦥 ¢ ª®à­¥
-
 
4867
; ¤¥« ¥¬ ¢¨¤, çâ® äã­ªæ¨ï ç⥭¨ï ¢¥à­ã«  0 í«¥¬¥­â®¢
-
 
4868
; (¥á«¨ ­ã¦¥­ ¢å®¤ "..", ®­ ¡ã¤¥â ¤®¡ ¢«¥­  ¢â®¬ â¨ç¥áª¨)
-
 
4869
        xor     ebx, ebx        ; 0 items read
-
 
4870
        mov     eax, [dirinfo.dirdata]
-
 
4871
        mov     [eax+8], ebx    ; 0 items total
-
 
4872
        jmp     .ok
-
 
4873
.4:
4094
        cmp     edx, 2
4874
        cmp     edx, 2
4095
        jbe     .noup
4875
        jbe     .noup
-
 
4876
.up:
4096
        stosb
4877
        stosb
4097
        jmp     read_folder
4878
        jmp     read_folder
4098
.noup:
4879
.noup:
-
 
4880
; There is no parent folder, and we are not on plugin panel
-
 
4881
; Try to read ramdisk
4099
        mov     esi, [dirinfo.name]
4882
        mov     esi, [dirinfo.name]
4100
        mov     edi, esi
4883
        mov     edi, esi
4101
        lodsd
4884
        lodsd
4102
        or      eax, 0x00202000
4885
        or      eax, 0x00202000
4103
        cmp     eax, '/rd/'
4886
        cmp     eax, '/rd/'
Line 4140... Line 4923...
4140
        mov     [ebp + panel1_files - panel1_data], eax
4923
        mov     [ebp + panel1_files - panel1_data], eax
4141
        pop     [ebp + panel1_nfa - panel1_data]
4924
        pop     [ebp + panel1_nfa - panel1_data]
4142
        mov     [prev_dir], 0
4925
        mov     [prev_dir], 0
4143
        jmp     read_folder
4926
        jmp     read_folder
4144
.readdone:
4927
.readdone:
-
 
4928
        xor     edx, edx
4145
        and     [ebp + panel1_start - panel1_data], 0
4929
        mov     [ebp + panel1_start - panel1_data], edx
4146
        and     [ebp + panel1_index - panel1_data], 0
4930
        mov     [ebp + panel1_index - panel1_data], edx
4147
        and     [ebp + panel1_start - panel1_data], 0
4931
        mov     [ebp + panel1_start - panel1_data], edx
4148
        mov     edi, [ebp + panel1_files - panel1_data]
4932
        mov     edi, [ebp + panel1_files - panel1_data]
4149
        mov     eax, [ebp + panel1_nfa - panel1_data]
4933
        mov     eax, [ebp + panel1_nfa - panel1_data]
4150
        lea     eax, [edi + eax*4 + 32]
4934
        lea     eax, [edi + eax*4 + 32]
4151
        mov     ecx, [eax-32+4]
4935
        mov     ecx, [eax-32+4]
4152
        test    ecx, ecx
4936
        test    ecx, ecx
4153
        jz      .loopdone
4937
        jz      .loopdone
4154
        xor     edx, edx
-
 
4155
; ˆ£­®à¨à㥬 ᯥ樠«ì­ë¥ ¢å®¤ë, ᮮ⢥âáâ¢ãî騥 ¯ ¯ª¥ '.' ¨ ¬¥âª¥ ⮬ 
4938
; ˆ£­®à¨à㥬 ᯥ樠«ì­ë¥ ¢å®¤ë, ᮮ⢥âáâ¢ãî騥 ¯ ¯ª¥ '.' ¨ ¬¥âª¥ ⮬ 
4156
.ptrinit:
4939
.ptrinit:
4157
        cmp     word [eax+40], '.'
4940
        cmp     word [eax+40], '.'
4158
        jz      .loopcont
4941
        jz      .loopcont
4159
        test    byte [eax], 8
4942
        test    byte [eax], 8
Line 4190... Line 4973...
4190
        mov     ebx, dword [eax+36]
4973
        mov     ebx, dword [eax+36]
4191
        adc     dword [ebp + panel1_total_size+4 - panel1_data], ebx
4974
        adc     dword [ebp + panel1_total_size+4 - panel1_data], ebx
4192
.dotdot:
4975
.dotdot:
4193
; ¯®¤á¢¥âª 
4976
; ¯®¤á¢¥âª 
4194
;        call    insert_last_dot
4977
;        call    insert_last_dot
-
 
4978
        call    highlight_init
-
 
4979
;        call    delete_last_dot
-
 
4980
.loopcont:
-
 
4981
        add     eax, 304
-
 
4982
        dec     ecx
-
 
4983
        jnz     .ptrinit
-
 
4984
.loopdone:
-
 
4985
        push    edi
-
 
4986
        sub     edi, [ebp + panel1_files - panel1_data]
-
 
4987
        shr     edi, 2
-
 
4988
        mov     [ebp + panel1_numfiles - panel1_data], edi
-
 
4989
        pop     edi
-
 
4990
        test    edx, edx
-
 
4991
        jnz     @f
-
 
4992
        test    [ebp + panel1_plugin_flags - panel1_data], 1
-
 
4993
        jz      @f
-
 
4994
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
-
 
4995
        inc     [ebp + panel1_numfiles - panel1_data]
-
 
4996
        lea     esi, [edi-4]
-
 
4997
        std
-
 
4998
        rep     movsd
-
 
4999
        cld
-
 
5000
        mov     eax, left_dotdot_entry
-
 
5001
        cmp     ebp, panel1_data
-
 
5002
        jz      .zq
-
 
5003
        add     eax, right_dotdot_entry-left_dotdot_entry
-
 
5004
.zq:
-
 
5005
        stosd
-
 
5006
        call    highlight_init
-
 
5007
@@:
-
 
5008
; ‘®àâ¨à®¢ª 
-
 
5009
sort_files:
-
 
5010
        movzx   eax, [ebp + panel1_sortmode - panel1_data]
-
 
5011
        mov     ebx, [compare_fns + eax*4]
-
 
5012
.mode:
-
 
5013
        mov     edx, [ebp + panel1_files - panel1_data]
-
 
5014
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
-
 
5015
        jecxz   .skip
-
 
5016
        mov     eax, [edx]
-
 
5017
        cmp     word [eax+40], '..'
-
 
5018
        jnz     .nodotdot
-
 
5019
        cmp     byte [eax+42], 0
-
 
5020
        jnz     .nodotdot
-
 
5021
        dec     ecx
-
 
5022
        add     edx, 4
-
 
5023
.nodotdot:
-
 
5024
        call    sort
-
 
5025
.skip:
-
 
5026
        mov     [bSilentFolderMode], 0  ; leave silent mode
-
 
5027
        ret
-
 
5028
 
-
 
5029
highlight_init:
4195
        pushad
5030
        pushad
4196
        mov     ebp, eax
5031
        mov     ebp, eax
4197
        lea     esi, [ebp+40]
5032
        lea     esi, [ebp+40]
4198
        mov     edi, lower_file_name
5033
        mov     edi, lower_file_name
4199
        mov     edx, edi
5034
        mov     edx, edi
Line 4254... Line 5089...
4254
        mov     ah, [panel_selected_color]
5089
        mov     ah, [panel_selected_color]
4255
        mov     [ebp+6], ah
5090
        mov     [ebp+6], ah
4256
        mov     ah, [panel_selected_cursor_color]
5091
        mov     ah, [panel_selected_cursor_color]
4257
        mov     [ebp+7], ah
5092
        mov     [ebp+7], ah
4258
.doname:
5093
.doname:
4259
;        call    delete_last_dot
-
 
4260
        popad
5094
        popad
4261
.loopcont:
-
 
4262
        add     eax, 304
-
 
4263
        dec     ecx
-
 
4264
        jnz     .ptrinit
-
 
4265
.loopdone:
-
 
4266
        sub     edi, [ebp + panel1_files - panel1_data]
-
 
4267
        shr     edi, 2
-
 
4268
        mov     [ebp + panel1_numfiles - panel1_data], edi
-
 
4269
.done:
-
 
4270
; ‘®àâ¨à®¢ª 
-
 
4271
sort_files:
-
 
4272
        movzx   eax, [ebp + panel1_sortmode - panel1_data]
-
 
4273
        mov     ebx, [compare_fns + eax*4]
-
 
4274
        mov     edx, [ebp + panel1_files - panel1_data]
-
 
4275
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
-
 
4276
        jecxz   .skip
-
 
4277
        mov     eax, [edx]
-
 
4278
        cmp     word [eax+40], '..'
-
 
4279
        jnz     .nodotdot
-
 
4280
        cmp     byte [eax+42], 0
-
 
4281
        jnz     .nodotdot
-
 
4282
        dec     ecx
-
 
4283
        add     edx, 4
-
 
4284
.nodotdot:
-
 
4285
        call    sort
-
 
4286
.skip:
-
 
4287
        mov     [bSilentFolderMode], 0  ; leave silent mode
-
 
4288
        ret
5095
        ret
Line 4289... Line 5096...
4289
 
5096
 
4290
compare_name:
5097
compare_name:
4291
        test    byte [esi], 10h
5098
        test    byte [esi], 10h
Line 4687... Line 5494...
4687
.less:
5494
.less:
4688
        xor     edi, edi
5495
        xor     edi, edi
4689
        stc
5496
        stc
4690
        ret
5497
        ret
Line -... Line 5498...
-
 
5498
 
-
 
5499
ReadFolder_default:
-
 
5500
        mov     eax, 2
-
 
5501
        ret     10h
4691
 
5502
 
-
 
5503
if 0
4692
if 0
5504
; Following subroutines work, but are slow
4693
match_mask:
5505
match_mask:
4694
; in: esi->name, edi->mask
5506
; in: esi->name, edi->mask
4695
; out: CF clear <=> match
5507
; out: CF clear <=> match
4696
        pusha
5508
        pusha
Line 5271... Line 6083...
5271
        stc
6083
        stc
5272
.found:
6084
.found:
5273
        pop     esi
6085
        pop     esi
5274
        ret
6086
        ret
Line 5275... Line 6087...
5275
 
6087
 
Line 5276... Line 6088...
5276
header  db      'Kolibri Far 0.35',0
6088
header  db      'Kolibri Far ',version,0
5277
 
6089
 
Line 5278... Line 6090...
5278
nomem_draw      db      'No memory for redraw.',0
6090
nomem_draw      db      'No memory for redraw.',0
Line 5701... Line 6513...
5701
screen_vtable:
6513
screen_vtable:
5702
        .OnRedraw       dd      ?
6514
        .OnRedraw       dd      ?
5703
        .OnKey          dd      ?
6515
        .OnKey          dd      ?
5704
        .keybar         dd      ?
6516
        .keybar         dd      ?
5705
        .getname        dd      ?
6517
        .getname        dd      ?
-
 
6518
        .OnExit         dd      ?
-
 
6519
        .IsHandleUsed   dd      ?
5706
end virtual
6520
end virtual
Line 5707... Line 6521...
5707
 
6521
 
5708
panels_vtable:
6522
panels_vtable:
5709
        dd      panels_OnRedraw
6523
        dd      panels_OnRedraw
5710
        dd      panels_OnKey
6524
        dd      panels_OnKey
5711
        dd      keybar_panels
6525
        dd      keybar_panels
-
 
6526
        dd      panels_getname
-
 
6527
        dd      panels_OnExit
Line 5712... Line 6528...
5712
        dd      panels_getname
6528
        dd      panels_IsHandleUsed
5713
 
6529
 
5714
viewer_vtable:
6530
viewer_vtable:
5715
        dd      viewer_OnRedraw
6531
        dd      viewer_OnRedraw
5716
        dd      viewer_OnKey
6532
        dd      viewer_OnKey
-
 
6533
        dd      keybar_viewer
-
 
6534
        dd      viewer_getname
Line 5717... Line 6535...
5717
        dd      keybar_viewer
6535
        dd      viewer_OnExit
5718
        dd      viewer_getname
6536
        dd      viewer_IsHandleUsed
5719
 
6537
 
5720
; additions to this table require changes in tools.inc::get_error_msg
6538
; additions to this table require changes in tools.inc::get_error_msg
Line 6291... Line 7109...
6291
        dd      aSkipAll
7109
        dd      aSkipAll
6292
        dd      a_Cancel
7110
        dd      a_Cancel
6293
ContinueBtn:
7111
ContinueBtn:
6294
        dd      aContinue
7112
        dd      aContinue
Line -... Line 7113...
-
 
7113
 
6295
 
7114
aCannotOpenFile_ptr     dd      aCannotOpenFile
6296
if lang eq ru
7115
if lang eq ru
6297
aDeleteCaption          db      '“¤ «¥­¨¥',0
7116
aDeleteCaption          db      '“¤ «¥­¨¥',0
6298
aConfirmDeleteText      db      '‚ë å®â¨â¥ 㤠«¨âì',0
7117
aConfirmDeleteText      db      '‚ë å®â¨â¥ 㤠«¨âì',0
6299
aDeleteFolder           db      ' ¯ ¯ªã',0
7118
aDeleteFolder           db      ' ¯ ¯ªã',0
Line 6352... Line 7171...
6352
aName                   db      3,'ˆ¬ï'
7171
aName                   db      3,'ˆ¬ï'
6353
aSize                   db      6,' §¬¥à'
7172
aSize                   db      6,' §¬¥à'
6354
aDate                   db      4,'„ â '
7173
aDate                   db      4,'„ â '
6355
aTime                   db      5,'∴•'
7174
aTime                   db      5,'∴•'
6356
aCannotLoadDLL          db      '¥ ¬®£ã § £à㧨âì DLL',0
7175
aCannotLoadDLL          db      '¥ ¬®£ã § £à㧨âì DLL',0
-
 
7176
aCannotLoadPlugin       db      '¥ ¬®£ã § £à㧨âì ¯« £¨­',0
6357
aInvalidDLL             db      '” ©« ­¥ ­ ©¤¥­ ¨«¨ ¨¬¥¥â ­¥¢¥à­ë© ä®à¬ â',0
7177
aInvalidDLL             db      '” ©« ­¥ ­ ©¤¥­ ¨«¨ ¨¬¥¥â ­¥¢¥à­ë© ä®à¬ â',0
6358
aMissingExport          db      '¥®¡å®¤¨¬ ï äã­ªæ¨ï ­¥ ­ ©¤¥­ ',0
7178
aMissingExport          db      '¥®¡å®¤¨¬ ï äã­ªæ¨ï ­¥ ­ ©¤¥­ ',0
6359
aInitFailed             db      'Žè¨¡ª  ¯à¨ ¨­¨æ¨ «¨§ æ¨¨',0
7179
aInitFailed             db      'Žè¨¡ª  ¯à¨ ¨­¨æ¨ «¨§ æ¨¨',0
6360
aIncompatibleVersion    db      '¥á®¢¬¥á⨬ ï ¢¥àá¨ï',0
7180
aIncompatibleVersion    db      '¥á®¢¬¥á⨬ ï ¢¥àá¨ï',0
6361
aTables                 db      '’ ¡«¨æë',0
7181
aTables                 db      '’ ¡«¨æë',0
6362
aSelect                 db      '®¬¥â¨âì',0
7182
aSelect                 db      '®¬¥â¨âì',0
6363
aDeselect               db      '‘­ïâì',0
7183
aDeselect               db      '‘­ïâì',0
-
 
7184
aCannotOpenFile         db      'Žè¨¡ª  ¯à¨ ®âªàë⨨ ä ©« ',0
-
 
7185
aCannotSetFolder        db      '¥ ¬®£ã § ©â¨ ¢ ¯ ¯ªã',0
6364
else
7186
else
6365
aDeleteCaption          db      'Delete',0
7187
aDeleteCaption          db      'Delete',0
6366
aConfirmDeleteText      db      'Do you wish to delete',0
7188
aConfirmDeleteText      db      'Do you wish to delete',0
6367
aDeleteFolder           db      ' the folder',0
7189
aDeleteFolder           db      ' the folder',0
6368
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
7190
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
Line 6424... Line 7246...
6424
aName                   db      4,'Name'
7246
aName                   db      4,'Name'
6425
aSize                   db      4,'Size'
7247
aSize                   db      4,'Size'
6426
aDate                   db      4,'Date'
7248
aDate                   db      4,'Date'
6427
aTime                   db      4,'Time'
7249
aTime                   db      4,'Time'
6428
aCannotLoadDLL          db      'Cannot load DLL',0
7250
aCannotLoadDLL          db      'Cannot load DLL',0
-
 
7251
aCannotLoadPlugin       db      'Cannot load plugin',0
6429
aInvalidDLL             db      'File is not found or invalid',0
7252
aInvalidDLL             db      'File is not found or invalid',0
6430
aMissingExport          db      'Required function is not present',0
7253
aMissingExport          db      'Required function is not present',0
6431
aInitFailed             db      'Initialization failed',0
7254
aInitFailed             db      'Initialization failed',0
6432
aIncompatibleVersion    db      'Incompatible version',0
7255
aIncompatibleVersion    db      'Incompatible version',0
6433
aTables                 db      'Tables',0
7256
aTables                 db      'Tables',0
6434
aSelect                 db      'Select',0
7257
aSelect                 db      'Select',0
6435
aDeselect               db      'Deselect',0
7258
aDeselect               db      'Deselect',0
-
 
7259
aCannotOpenFile         db      'Cannot open the file',0
-
 
7260
aCannotSetFolder        db      'Cannot enter to folder',0
6436
end if
7261
end if
Line 6437... Line 7262...
6437
 
7262
 
6438
aOk                     db      'OK',0
7263
aOk                     db      'OK',0
6439
aNoMemory               db      'No memory!'
7264
aNoMemory               db      'No memory!'
-
 
7265
nullstr                 db      0
-
 
7266
aUntitled               db      'untitled',0
6440
nullstr                 db      0
7267
aDotDot                 db      '..',0,0
6441
standard_dll_path:
7268
standard_dll_path:
6442
libini_name             db      '/sys/dll/'
7269
libini_name             db      '/sys/dll/'
6443
standard_dll_path_size = $ - standard_dll_path
7270
standard_dll_path_size = $ - standard_dll_path
6444
                        db      'libini.obj',0
7271
                        db      'libini.obj',0
6445
aStart                  db      'START',0
7272
aStart                  db      'START',0
6446
aLibInit                db      'lib_init',0
7273
aLibInit                db      'lib_init',0
6447
aVersion                db      'version',0
7274
aVersion                db      'version',0
6448
aIniGetInt              db      'ini.get_int',0
7275
aIniGetInt              db      'ini.get_int',0
-
 
7276
aIniGetStr              db      'ini.get_str',0
6449
aIniGetStr              db      'ini.get_str',0
7277
aIniSetInt              db      'ini.set_int',0
-
 
7278
aIniEnumKeys            db      'ini.enum_keys',0
-
 
7279
aPluginLoad             db      'plugin_load',0
-
 
7280
aPluginUnload           db      'plugin_unload',0
-
 
7281
aGetattr                db      'getattr',0
-
 
7282
aOpen                   db      'open',0
-
 
7283
aRead                   db      'read',0
-
 
7284
aSetpos                 db      'setpos',0
-
 
7285
aClose                  db      'close',0
-
 
7286
aOpenFilePlugin         db      'OpenFilePlugin',0
-
 
7287
aClosePlugin            db      'ClosePlugin',0
-
 
7288
aReadFolder             db      'ReadFolder',0
-
 
7289
aSetFolder              db      'SetFolder',0
-
 
7290
aGetOpenPluginInfo      db      'GetOpenPluginInfo',0
-
 
7291
aGetPanelTitle          db      'GetPanelTitle',0
Line 6450... Line 7292...
6450
aIniEnumKeys            db      'ini.enum_keys',0
7292
aGetFiles               db      'GetFiles',0
6451
 
7293
 
6452
aConfirmations          db      'Confirmations',0
7294
aConfirmations          db      'Confirmations',0
Line -... Line 7295...
-
 
7295
aConfirmDelete          db      'Delete',0
-
 
7296
aConfirmDeleteIncomplete db     'DeleteIncomplete',0
-
 
7297
 
-
 
7298
aPanels                 db      'Panels',0
6453
aConfirmDelete          db      'Delete',0
7299
aLeftViewMode           db      'LeftViewMode',0
-
 
7300
aRightViewMode          db      'RightViewMode',0
6454
aConfirmDeleteIncomplete db     'DeleteIncomplete',0
7301
 
6455
 
7302
aAssociations           db      'Associations',0
6456
aAssociations           db      'Associations',0
7303
aPlugins                db      'Plugins',0
6457
aMenu                   db      'Menu',0
7304
aMenu                   db      'Menu',0
Line 6458... Line 7305...
6458
aFolderShortcuts        db      'FolderShortcuts',0
7305
aFolderShortcuts        db      'FolderShortcuts',0
6459
aShortcut               db      'Shortcut'
7306
aShortcut               db      'Shortcut'
6460
.d                      db      '0',0
7307
.d                      db      '0',0
6461
 
7308
 
6462
align 4
7309
align 4
-
 
7310
ini_import:
6463
ini_import:
7311
ini.get_int     dd      aIniGetInt
Line -... Line 7312...
-
 
7312
ini.get_str     dd      aIniGetStr
-
 
7313
ini.enum_keys   dd      aIniEnumKeys
-
 
7314
ini.set_int     dd      aIniSetInt
-
 
7315
                dd      0
-
 
7316
 
-
 
7317
plugin_exported:
-
 
7318
        dd      aPluginUnload
-
 
7319
        dd      aGetattr
-
 
7320
        dd      aOpen
-
 
7321
        dd      aRead
-
 
7322
        dd      aSetpos
-
 
7323
        dd      aClose
-
 
7324
        dd      aOpenFilePlugin
-
 
7325
        dd      aClosePlugin
-
 
7326
        dd      aReadFolder
-
 
7327
        dd      aSetFolder
-
 
7328
        dd      aGetOpenPluginInfo
-
 
7329
        dd      aGetPanelTitle
-
 
7330
        dd      aGetFiles
-
 
7331
        dd      0
-
 
7332
plugin_exported_default:
-
 
7333
        dd      plugin_unload_default
-
 
7334
        dd      getattr_default
-
 
7335
        dd      open_default
-
 
7336
        dd      read
-
 
7337
        dd      setpos_default
-
 
7338
        dd      close
-
 
7339
        dd      OpenFilePlugin_default
-
 
7340
        dd      ClosePlugin_default
-
 
7341
        dd      ReadFolder_default
-
 
7342
        dd      SetFolder_default
-
 
7343
        dd      GetOpenPluginInfo_default
-
 
7344
        dd      GetPanelTitle_default
-
 
7345
        dd      GetFiles_default
-
 
7346
 
-
 
7347
kfar_info:
-
 
7348
        dd      .size
-
 
7349
        dd      version_dword
-
 
7350
        dd      open
-
 
7351
        dd      read
-
 
7352
        dd      -1      ; write: to be implemented
-
 
7353
        dd      seek
-
 
7354
        dd      -1      ; flush: to be implemented
-
 
7355
        dd      filesize
-
 
7356
        dd      close
-
 
7357
        dd      xpgalloc
-
 
7358
        dd      xpgrealloc
-
 
7359
        dd      pgfree
-
 
7360
        dd      getfreemem
-
 
7361
        dd      libini_alloc
-
 
7362
        dd      libini_realloc
-
 
7363
        dd      libini_free
-
 
7364
        dd      menu
-
 
7365
        dd      menu_centered_in
-
 
7366
        dd      DialogBox
-
 
7367
        dd      SayErr
-
 
7368
        dd      Message
-
 
7369
        dd      cur_width
-
 
7370
.size = $ - kfar_info
-
 
7371
 
-
 
7372
plugins         dd      0
-
 
7373
num_plugins     dd      0
-
 
7374
alloc_plugins   dd      0
-
 
7375
 
-
 
7376
virtual at 0
-
 
7377
PluginInfo:
-
 
7378
.unload         dd      ?
-
 
7379
.getattr        dd      ?
-
 
7380
.open           dd      ?
-
 
7381
.read           dd      ?
-
 
7382
.setpos         dd      ?
-
 
7383
.close          dd      ?
-
 
7384
.OpenFilePlugin dd      ?
-
 
7385
.ClosePlugin    dd      ?
-
 
7386
.ReadFolder     dd      ?
-
 
7387
.SetFolder      dd      ?
-
 
7388
.GetOpenPluginInfo dd   ?
6464
ini.get_int     dd      aIniGetInt
7389
.GetPanelTitle  dd      ?
6465
ini.get_str     dd      aIniGetStr
7390
.GetFiles       dd      ?
6466
ini.enum_keys   dd      aIniEnumKeys
7391
.size = $
6467
                dd      0
7392
end virtual
6468
 
7393
 
Line 6590... Line 7515...
6590
panel1_sortmode db      ?
7515
panel1_sortmode db      ?
6591
                rb      3
7516
                rb      3
6592
panel1_nfa      dd      ?
7517
panel1_nfa      dd      ?
6593
panel1_numfiles dd      ?
7518
panel1_numfiles dd      ?
6594
panel1_files    dd      ?
7519
panel1_files    dd      ?
-
 
7520
panel1_hPlugin  dd      ?
-
 
7521
panel1_hFile    dd      ?
-
 
7522
panel1_parents          dd      ?
-
 
7523
panel1_parents_sz       dd      ?
-
 
7524
panel1_parents_alloc    dd      ?
6595
panel1_colmode  dd      ?
7525
panel1_colmode          dd      ?
6596
panel1_colwidths rd     16+1
7526
panel1_colwidths        rd      16+1
6597
panel1_total_num dd     ?
7527
panel1_total_num        dd      ?
6598
panel1_total_size dq    ?
7528
panel1_total_size       dq      ?
6599
panel1_selected_num dd ?
7529
panel1_selected_num     dd      ?
6600
panel1_selected_size dq ?
7530
panel1_selected_size    dq      ?
-
 
7531
panel1_plugin_info:
-
 
7532
panel1_plugin_flags     dd      ?
6601
panel1_dir      rb      1024
7533
panel1_dir      rb      1024
Line 6602... Line 7534...
6602
 
7534
 
6603
panel2_data:
7535
panel2_data:
6604
panel2_left     dd      ?
7536
panel2_left     dd      ?
Line 6612... Line 7544...
6612
panel2_sortmode db      ?
7544
panel2_sortmode db      ?
6613
                rb      3
7545
                rb      3
6614
panel2_nfa      dd      ?
7546
panel2_nfa      dd      ?
6615
panel2_numfiles dd      ?
7547
panel2_numfiles dd      ?
6616
panel2_files    dd      ?
7548
panel2_files    dd      ?
-
 
7549
panel2_hPlugin  dd      ?
-
 
7550
panel2_hFile    dd      ?
-
 
7551
panel2_parents          dd      ?
-
 
7552
panel2_parents_sz       dd      ?
-
 
7553
panel2_parents_alloc    dd      ?
6617
panel2_colmode  dd      ?
7554
panel2_colmode          dd      ?
6618
panel2_colwidths rd     16+1
7555
panel2_colwidths        rd      16+1
6619
panel2_total_num dd     ?
7556
panel2_total_num        dd      ?
6620
panel2_total_size dq    ?
7557
panel2_total_size       dq      ?
6621
panel2_selected_num  dd ?
7558
panel2_selected_num     dd      ?
6622
panel2_selected_size dq ?
7559
panel2_selected_size    dq      ?
-
 
7560
panel2_plugin_info:
-
 
7561
panel2_plugin_flags     dd      ?
6623
panel2_dir      rb      1024
7562
panel2_dir      rb      1024
Line 6624... Line 7563...
6624
 
7563
 
Line 6625... Line 7564...
6625
;console_data    rb      max_width*max_height*2
7564
;console_data    rb      max_width*max_height*2
Line 6668... Line 7607...
6668
screens         dd      ?
7607
screens         dd      ?
6669
num_screens     dd      ?
7608
num_screens     dd      ?
6670
active_screen_vtable dd ?
7609
active_screen_vtable dd ?
6671
active_screen_data dd   ?
7610
active_screen_data dd   ?
Line -... Line 7611...
-
 
7611
 
-
 
7612
default_attr    dd      ?
-
 
7613
left_dotdot_entry       rb      40+3    ; 40 bytes for attributes + '..'
-
 
7614
right_dotdot_entry      rb      40+3
6672
 
7615
 
6673
aConfirmDeleteTextBuf   rb      aConfirmDeleteTextMax + 1
7616
aConfirmDeleteTextBuf   rb      aConfirmDeleteTextMax + 1
6674
CopySourceTextBuf       rb      512
7617
CopySourceTextBuf       rb      512
6675
CopyDestEditBuf         rb      12+512+1
7618
CopyDestEditBuf         rb      12+512+1
Line 6684... Line 7627...
6684
layout          rb      128
7627
layout          rb      128
Line 6685... Line 7628...
6685
 
7628
 
6686
copy_buffer_size = 65536
7629
copy_buffer_size = 65536
Line -... Line 7630...
-
 
7630
copy_buffer     rb      copy_buffer_size
-
 
7631
 
-
 
7632
filedata_buffer_size = 1024
-
 
7633
filedata_buffer rb      filedata_buffer_size
-
 
7634
 
-
 
7635
source_hModule  dd      ?
6687
copy_buffer     rb      copy_buffer_size
7636
source_hPlugin  dd      ?
6688
 
7637
source_hFile    dd      ?
6689
; data for directory delete
7638
; data for directory delete
6690
; If directory nested level is >1024, then its full name is too big,
7639
; If directory nested level is >1024, then its full name is too big,
6691
; so we see the overflow when creating full name (we check for this!)
7640
; so we see the overflow when creating full name (we check for this!)
Line 6699... Line 7648...
6699
copy_dir_query_size = del_dir_query_size
7648
copy_dir_query_size = del_dir_query_size
6700
copy_dir_query_area = del_dir_query_area
7649
copy_dir_query_area = del_dir_query_area
6701
del_bSkipAll    db      ?       ; for directory errors
7650
del_bSkipAll    db      ?       ; for directory errors
6702
label copy_bSkipAll byte at del_bSkipAll
7651
label copy_bSkipAll byte at del_bSkipAll
6703
copy_bSkipAll2  db      ?       ; for file read/write errors
7652
copy_bSkipAll2  db      ?       ; for file read/write errors
-
 
7653
copy_bSkipAll3  db      ?       ; for SetFolder errors
Line 6704... Line 7654...
6704
 
7654
 
6705
bEndSlash       db      ?
7655
bEndSlash       db      ?
6706
bDestIsFolder   db      ?
7656
bDestIsFolder   db      ?
Line 6707... Line 7657...
6707
bNeedRestoreName db     ?
7657
bNeedRestoreName db     ?
6708
 
7658
 
6709
; stack
7659
; stack
6710
        align   4
7660
        align   4
Line 6711... Line 7661...
6711
        rb      512
7661
        rb      32768