Subversion Repositories Kolibri OS

Rev

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

Rev 205 Rev 283
Line 16... Line 16...
16
include 'viewer.inc'
16
include 'viewer.inc'
Line 17... Line 17...
17
 
17
 
18
start:
18
start:
19
        mov     eax, mem
19
        mov     eax, mem
-
 
20
        call    mf_init
20
        call    mf_init
21
        call    init_console
21
        call    draw_window
22
        call    draw_window
22
        push    66
23
        push    66
23
        pop     eax
24
        pop     eax
24
        push    1
25
        push    1
25
        pop     ebx
26
        pop     ebx
26
        mov     ecx, ebx
27
        mov     ecx, ebx
27
        int     40h     ; set keyboard mode to scancodes
-
 
28
        call    init_console
28
        int     40h     ; set keyboard mode to scancodes
29
        mov     esi, def_left_dir
29
        mov     esi, def_left_dir
30
        mov     edi, panel1_dir
30
        mov     edi, panel1_dir
31
@@:
31
@@:
32
        lodsb
32
        lodsb
Line 39... Line 39...
39
@@:
39
@@:
40
        lodsb
40
        lodsb
41
        stosb
41
        stosb
42
        test    al, al
42
        test    al, al
43
        jnz     @b
43
        jnz     @b
44
        mov     eax, 304
44
        mov     eax, 200
45
        mov     [panel1_nfa], eax
45
        mov     [panel1_nfa], eax
46
        mov     [panel2_nfa], eax
46
        mov     [panel2_nfa], eax
-
 
47
        mov     eax, 200*4 + 32 + 200*304
-
 
48
        push    eax
-
 
49
        call    mf_alloc
47
        mov     [panel1_files], buf1
50
        mov     [panel1_files], eax
-
 
51
        pop     eax
-
 
52
        call    mf_alloc
48
        mov     [panel2_files], buf2
53
        mov     [panel2_files], eax
-
 
54
        test    eax, eax
-
 
55
        jz      exit
-
 
56
        cmp     [panel1_files], eax
-
 
57
        jz      exit
49
        mov     [panel1_sortmode], 0    ; sort by name
58
        mov     [panel1_sortmode], 0    ; sort by name
50
        mov     [panel2_sortmode], 0
59
        mov     [panel2_sortmode], 0
51
        mov     [num_screens], 1
60
        mov     [num_screens], 1
52
        mov     eax, 8
61
        mov     eax, 8
53
        call    mf_alloc
62
        call    mf_alloc
Line 74... Line 83...
74
; button - we have only one button, close
83
; button - we have only one button, close
75
exit:
84
exit:
76
        or      eax, -1
85
        or      eax, -1
77
        int     40h
86
        int     40h
78
redraw:
87
redraw:
-
 
88
; query kbd state from OS
-
 
89
        mov     al, 66
-
 
90
        push    3
-
 
91
        pop     ebx
-
 
92
        int     0x40
-
 
93
        and     eax, 0x3F
-
 
94
        cmp     al, [ctrlstate]
-
 
95
        mov     [ctrlstate], al
-
 
96
        jz      @f
-
 
97
        call    draw_keybar
-
 
98
@@:
79
        mov     al, 9
99
        mov     al, 9
80
        mov     ebx, procinfo
100
        mov     ebx, procinfo
81
        or      ecx, -1
101
        or      ecx, -1
82
        int     40h
102
        int     40h
83
; test if rolled up
103
; test if rolled up
Line 99... Line 119...
99
        int     0x40
119
        int     0x40
100
        jmp     event
120
        jmp     event
101
@@:
121
@@:
102
        xor     ecx, ecx
122
        xor     ecx, ecx
103
        mov     eax, [ebx+42]
123
        mov     eax, [ebx+42]
104
        sub     eax, 5*2
124
        sub     eax, 5*2-1
105
        jae     @f
125
        jae     @f
106
        xor     eax, eax
126
        xor     eax, eax
107
@@:
127
@@:
108
        cdq
128
        cdq
109
        mov     esi, font_width
129
        mov     esi, font_width
Line 122... Line 142...
122
        mov     [cur_width], eax
142
        mov     [cur_width], eax
123
        setnz   cl
143
        setnz   cl
124
        or      cl, ch
144
        or      cl, ch
125
        test    edx, edx
145
        test    edx, edx
126
        setnz   ch
146
        setnz   ch
127
        or      cl, ch
-
 
128
        mov     eax, [ebx+46]
147
        mov     eax, [ebx+46]
129
        sub     eax, [skinh]
148
        sub     eax, [skinh]
130
        sub     eax, 5
149
        sub     eax, 5-1
131
        jns     @f
150
        jns     @f
132
        xor     eax, eax
151
        xor     eax, eax
133
@@:
152
@@:
134
        cdq
153
        cdq
135
        mov     esi, font_height
154
        mov     esi, font_height
Line 144... Line 163...
144
        mov     eax, 255
163
        mov     eax, 255
145
        mov     cl, 1
164
        mov     cl, 1
146
@@:
165
@@:
147
        cmp     eax, [cur_height]
166
        cmp     eax, [cur_height]
148
        mov     [cur_height], eax
167
        mov     [cur_height], eax
149
        setnz   ch
168
        jnz     .resize
150
        or      cl, ch
169
        test    cl, cl
-
 
170
        jnz     .resize
151
        test    edx, edx
171
        test    edx, edx
152
        setnz   ch
172
        setnz   cl
153
        test    cx, cx
173
        or      cl, ch
154
        jz      @f
174
        jz      @f
155
        mov     eax, [MemForImage]
175
        test    byte [ebx+70], 1
156
        call    mf_free
176
        jnz     @f
157
        and     [MemForImage], 0
-
 
158
        call    init_console
177
.resize:
159
        push    67
178
        push    67
160
        pop     eax
179
        pop     eax
161
        or      ebx, -1
180
        or      ebx, -1
162
        or      ecx, -1
181
        or      ecx, -1
163
        mov     edx, [cur_width]
182
        mov     edx, [cur_width]
164
        imul    edx, font_width
183
        imul    edx, font_width
165
        add     edx, 5*2
184
        add     edx, 5*2-1
166
        mov     esi, [cur_height]
185
        mov     esi, [cur_height]
167
        imul    esi, font_height
186
        imul    esi, font_height
168
        add     esi, [skinh]
187
        add     esi, [skinh]
169
        add     esi, 5
188
        add     esi, 5-1
170
        int     40h
189
        int     40h
-
 
190
.resize_draw:
-
 
191
        call    init_console
171
        call    draw_window
192
;        call    draw_window
172
        call    draw_keybar
193
        call    draw_keybar
173
        mov     ebp, [active_screen_data]
194
        mov     ebp, [active_screen_data]
174
        mov     eax, [active_screen_vtable]
195
        mov     eax, [active_screen_vtable]
175
        call    dword [eax+screen_vtable.OnRedraw]
196
        call    dword [eax+screen_vtable.OnRedraw]
176
        jmp     event
197
        jmp     event
177
@@:
198
@@:
178
        call    draw_window
199
        call    draw_window
179
        jmp     event
200
        jmp     event
-
 
201
alt_f9:
-
 
202
        cmp     [saved_width], -1
-
 
203
        jz      @f
-
 
204
        mov     eax, [saved_width]
-
 
205
        mov     [cur_width], eax
-
 
206
        or      [saved_width], -1
-
 
207
        mov     eax, [saved_height]
-
 
208
        mov     [cur_height], eax
-
 
209
        or      [saved_height], -1
-
 
210
        jmp     redraw.resize
-
 
211
@@:
-
 
212
        push    48
-
 
213
        pop     eax
-
 
214
        push    5
-
 
215
        pop     ebx
-
 
216
        int     0x40
-
 
217
        push    eax
-
 
218
        sub     eax, [esp+2]
-
 
219
        inc     eax
-
 
220
        movzx   eax, ax
-
 
221
        sub     eax, 10
-
 
222
        xor     edx, edx
-
 
223
        mov     ecx, font_width
-
 
224
        div     ecx
-
 
225
        xchg    [cur_width], eax
-
 
226
        mov     [saved_width], eax
-
 
227
        mov     eax, ebx
-
 
228
        shr     ebx, 16
-
 
229
        sub     eax, ebx
-
 
230
        sub     eax, 5-1
-
 
231
        sub     eax, [skinh]
-
 
232
        xor     edx, edx
-
 
233
        mov     ecx, font_height
-
 
234
        div     ecx
-
 
235
        xchg    [cur_height], eax
-
 
236
        mov     [saved_height], eax
-
 
237
        mov     ecx, ebx
-
 
238
        pop     ebx
-
 
239
        shr     ebx, 16
-
 
240
        mov     edx, [cur_width]
-
 
241
        imul    edx, font_width
-
 
242
        add     edx, 5*2-1
-
 
243
        mov     esi, [cur_height]
-
 
244
        imul    esi, font_height
-
 
245
        add     esi, [skinh]
-
 
246
        add     esi, 4
-
 
247
        push    67
-
 
248
        pop     eax
-
 
249
        int     0x40
-
 
250
        jmp     redraw.resize_draw
180
key:
251
key:
181
        mov     al, 2
252
        mov     al, 2
182
        int     40h
253
        int     40h
183
        test    al, al
254
        test    al, al
184
        jnz     event
255
        jnz     event
Line 579... Line 650...
579
        jmp     .done_redraw
650
        jmp     .done_redraw
580
.enter:
651
.enter:
581
        call    get_curfile_folder_entry
652
        call    get_curfile_folder_entry
582
        test    byte [ecx], 10h
653
        test    byte [ecx], 10h
583
        jnz     .enter_folder
654
        jnz     .enter_folder
584
; find extension
-
 
585
        lea     esi, [ecx+40]
-
 
586
        push    esi
-
 
587
@@:
-
 
588
        lodsb
-
 
589
        test    al, al
-
 
590
        jnz     @b
-
 
591
@@:
-
 
592
        dec     esi
-
 
593
        cmp     byte [esi], '.'
-
 
594
        jz      .found_ext
655
        call    find_extension
595
        cmp     esi, [esp]
-
 
596
        ja      @b
-
 
597
        jmp     .run_app
656
        jc      .run_app
598
.found_ext:
-
 
599
        inc     esi
-
 
600
        mov     edi, associations
-
 
601
@@:
-
 
602
        push    esi edi
-
 
603
        mov     edi, [edi]
-
 
604
        call    strcmpi
-
 
605
        pop     edi esi
-
 
606
        jz      .run_association
-
 
607
        add     edi, 8
-
 
608
        cmp     edi, associations_end
-
 
609
        jb      @b
-
 
610
        jmp     .run_app
657
        jnz     .run_app
611
.run_association:
658
.run_association:
612
        mov     [execparams], execdata
-
 
613
        mov     eax, [edi+4]
659
        mov     eax, [edi+4]
-
 
660
.run_association2:
-
 
661
        mov     [execparams], execdata
614
        mov     [execptr], eax
662
        mov     [execptr], eax
615
        jmp     .dorun
663
        jmp     .dorun
616
.run_app:
664
.run_app:
617
        mov     [execptr], execdata
665
        mov     [execptr], execdata
618
        and     [execparams], 0
666
        and     [execparams], 0
619
.dorun:
667
.dorun:
620
        pop     esi
-
 
621
        lea     esi, [ebp + panel1_dir - panel1_data]
668
        lea     esi, [ebp + panel1_dir - panel1_data]
622
        mov     edi, execdata
669
        mov     edi, execdata
623
; TODO: add overflow check
670
; TODO: add overflow check
624
@@:
671
@@:
625
        lodsb
672
        lodsb
Line 634... Line 681...
634
@@:
681
@@:
635
        lodsb
682
        lodsb
636
        stosb
683
        stosb
637
        test    al, al
684
        test    al, al
638
        jnz     @b
685
        jnz     @b
-
 
686
; for fasm call - special handling, because
-
 
687
; 1) fasm command line convention is different : fasm infile,outfile[,path] rather than tinypad infile
-
 
688
; 2) fasm will probably create new file in directory, so we want to reload panel data
-
 
689
        xor     edx, edx
-
 
690
        cmp     [execparams], edx
-
 
691
        jz      .nofasm
-
 
692
        cmp     [execptr], fasm
-
 
693
        jnz     .nofasm
-
 
694
; TODO: add buffer/cmdline overflow check
-
 
695
        mov     esi, execdata
-
 
696
@@:
-
 
697
        lodsb
-
 
698
        stosb
-
 
699
        test    al, al
-
 
700
        jnz     @b
-
 
701
        mov     byte [esi-1], ','
-
 
702
        inc     edx
-
 
703
; output file: no extension if input file has extension, '.bin' otherwise
-
 
704
        push    edi
-
 
705
@@:
-
 
706
        dec     edi
-
 
707
        cmp     byte [edi], '.'
-
 
708
        jz      .ptfound
-
 
709
        cmp     byte [edi], '/'
-
 
710
        jnz     @b
-
 
711
        pop     edi
-
 
712
        mov     dword [edi-1], '.bin'
-
 
713
        mov     byte [edi+3], 0
-
 
714
        jmp     .nofasm
-
 
715
.ptfound:
-
 
716
        mov     byte [edi], 0
-
 
717
        pop     edi
-
 
718
.nofasm:
639
        push    70
719
        push    70
640
        pop     eax
720
        pop     eax
641
        mov     ebx, execinfo
721
        mov     ebx, execinfo
642
        int     40h
722
        int     40h
-
 
723
        test    edx, edx
-
 
724
        jz      @f
-
 
725
        push    5
-
 
726
        pop     eax
-
 
727
        push    20
-
 
728
        pop     ebx
-
 
729
        int     0x40
-
 
730
        jmp     .ctrl_r
-
 
731
@@:
643
        ret
732
        ret
644
.enter_folder:
733
.enter_folder:
645
        lea     esi, [ecx+40]
734
        lea     esi, [ecx+40]
646
        cmp     word [esi], '..'
735
        cmp     word [esi], '..'
647
        jnz     @f
736
        jnz     @f
Line 878... Line 967...
878
        call    mf_free
967
        call    mf_free
879
        test    ecx, ecx
968
        test    ecx, ecx
880
        jnz     @b
969
        jnz     @b
881
        call    read_folder
970
        call    read_folder
882
        jmp     .done_redraw
971
        jmp     .done_redraw
-
 
972
.shift_f5:
-
 
973
        call    get_curfile_folder_entry
-
 
974
        lea     esi, [ecx+40]
-
 
975
        mov     edi, CopyDestEditBuf
-
 
976
        mov     eax, CopyDestEditBuf.length
-
 
977
        stosd
-
 
978
        scasd
-
 
979
        xor     eax, eax
-
 
980
        stosd
-
 
981
        mov     edx, edi
-
 
982
@@:
-
 
983
        lodsb
-
 
984
        test    al, al
-
 
985
        jz      .f5_common
-
 
986
        stosb
-
 
987
        jmp     @b
-
 
988
.f5:
-
 
989
        mov     edi, CopyDestEditBuf
-
 
990
        mov     eax, CopyDestEditBuf.length
-
 
991
        stosd
-
 
992
        scasd
-
 
993
        xor     eax, eax
-
 
994
        stosd
-
 
995
        mov     edx, edi
-
 
996
        mov     esi, ebp
-
 
997
        xor     esi, panel1_data xor panel2_data
-
 
998
        add     esi, panel1_dir - panel1_data
-
 
999
@@:
-
 
1000
        lodsb
-
 
1001
        test    al, al
-
 
1002
        jz      @f
-
 
1003
        stosb
-
 
1004
        jmp     @b
-
 
1005
@@:
-
 
1006
        mov     al, '/'
-
 
1007
        stosb
-
 
1008
.f5_common:
-
 
1009
        mov     byte [edi], 0
-
 
1010
        sub     edi, edx
-
 
1011
        mov     [edx-8], edi
-
 
1012
        mov     edi, CopySourceTextBuf
-
 
1013
        mov     esi, aCopy1
-
 
1014
@@:
-
 
1015
        lodsb
-
 
1016
        test    al, al
-
 
1017
        jz      @f
-
 
1018
        stosb
-
 
1019
        jmp     @b
-
 
1020
@@:
-
 
1021
        call    get_curfile_folder_entry
-
 
1022
        lea     esi, [ecx+40]
-
 
1023
        lea     eax, [esi+1]
-
 
1024
@@:
-
 
1025
        inc     esi
-
 
1026
        cmp     byte [esi-1], 0
-
 
1027
        jnz     @b
-
 
1028
        sub     esi, eax
-
 
1029
        xchg    eax, esi
-
 
1030
        dec     esi
-
 
1031
        mov     edx, [cur_width]
-
 
1032
        sub     edx, 50
-
 
1033
        sub     eax, edx
-
 
1034
        jbe     @f
-
 
1035
        add     esi, eax
-
 
1036
        mov     al, '.'
-
 
1037
        stosb
-
 
1038
        stosb
-
 
1039
        stosb
-
 
1040
@@:
-
 
1041
        lodsb
-
 
1042
        test    al, al
-
 
1043
        jz      @f
-
 
1044
        stosb
-
 
1045
        jmp     @b
-
 
1046
@@:
-
 
1047
        mov     esi, aCopy2
-
 
1048
@@:
-
 
1049
        lodsb
-
 
1050
        stosb
-
 
1051
        test    al, al
-
 
1052
        jnz     @b
-
 
1053
        mov     ebx, copy_dlgdata
-
 
1054
        mov     eax, [cur_width]
-
 
1055
        sub     eax, 12
-
 
1056
        mov     [ebx + dlgtemplate.width], eax
-
 
1057
        dec     eax
-
 
1058
        dec     eax
-
 
1059
        mov     [ebx - copy_dlgdata + copy_dlgdata.width2], eax
-
 
1060
        mov     [ebx - copy_dlgdata + copy_dlgdata.width3], eax
-
 
1061
        shr     eax, 1
-
 
1062
        dec     eax
-
 
1063
        dec     eax
-
 
1064
        mov     [ebx - copy_dlgdata + copy_dlgdata.copy_x2], eax
-
 
1065
        sub     eax, aCopyLength-1
-
 
1066
        mov     [ebx - copy_dlgdata + copy_dlgdata.copy_x1], eax
-
 
1067
        add     eax, aCopyLength+3
-
 
1068
        mov     [ebx - copy_dlgdata + copy_dlgdata.cnl_x1], eax
-
 
1069
        add     eax, aCancelBLength - 1
-
 
1070
        mov     [ebx - copy_dlgdata + copy_dlgdata.cnl_x2], eax
-
 
1071
        mov     al, [dialog_border_color]
-
 
1072
        mov     [ebx + dlgtemplate.border_color], al
-
 
1073
        mov     al, [dialog_header_color]
-
 
1074
        mov     [ebx + dlgtemplate.header_color], al
-
 
1075
        mov     al, [dialog_main_color]
-
 
1076
        mov     [ebx + dlgtemplate.main_color], al
-
 
1077
        mov     byte [ebx - copy_dlgdata + copy_dlgdata.flags0], 0xC
-
 
1078
        and     byte [ebx - copy_dlgdata + copy_dlgdata.flags1], not 4
-
 
1079
        and     byte [ebx - copy_dlgdata + copy_dlgdata.flags2], not 4
-
 
1080
        push    ebx
-
 
1081
        call    DialogBox
-
 
1082
        cmp     eax, copy_dlgdata.copy_btn
-
 
1083
        jnz     .ret2
-
 
1084
; Š®¯¨à㥬
-
 
1085
        mov     esi, CopyDestEditBuf+12
-
 
1086
        mov     edi, esi
-
 
1087
        xor     eax, eax
-
 
1088
        or      ecx, -1
-
 
1089
        repnz   scasb
-
 
1090
        dec     edi
-
 
1091
        dec     edi
-
 
1092
        cmp     edi, esi
-
 
1093
        jb      .ret2
-
 
1094
        cmp     byte [edi], '/'
-
 
1095
        jnz     @f
-
 
1096
;  «¨ç¨¥/®âáãâá⢨¥ § ª ­ç¨¢ î饣® á«íè  ¢ ¦­® ⮫쪮 ¤«ï ª®¯¨à®¢ ­¨ï ¯ ¯®ª
-
 
1097
        cmp     edi, esi
-
 
1098
        jz      @f
-
 
1099
        mov     byte [edi], 0
-
 
1100
        dec     edi
-
 
1101
@@:
-
 
1102
; …᫨ ¯ãâì ­¥ ­ ç¨­ ¥âáï á® á«íè , áç¨â ¥¬ ¥£® ®â­®á¨â¥«ì­® ⥪ã饩 ¯ ¯ª¨
-
 
1103
        cmp     byte [esi], '/'
-
 
1104
        jz      .copy_absolute_path
-
 
1105
        push    esi
-
 
1106
        push    edi
-
 
1107
        lea     edi, [ebp + panel1_dir - panel1_data]
-
 
1108
        or      ecx, -1
-
 
1109
        xor     eax, eax
-
 
1110
        repnz   scasb
-
 
1111
        not     ecx
-
 
1112
        pop     edi
-
 
1113
        lea     edx, [edi+2]
-
 
1114
        sub     edx, esi
-
 
1115
        lea     edi, [edi+ecx+1]
-
 
1116
        xchg    ecx, edx
-
 
1117
        std
-
 
1118
        lea     esi, [esi+ecx-1]
-
 
1119
        rep     movsb
-
 
1120
        cld
-
 
1121
        pop     edi
-
 
1122
        lea     esi, [ebp + panel1_dir - panel1_data]
-
 
1123
        push    edi
-
 
1124
        mov     ecx, edx
-
 
1125
        rep     movsb
-
 
1126
        mov     byte [edi-1], '/'
-
 
1127
        pop     esi
-
 
1128
.copy_absolute_path:
-
 
1129
; ®«ãç ¥¬  âਡãâë ­ §­ ç¥­¨ï
-
 
1130
        mov     cl, 0x10
-
 
1131
        xor     eax, eax
-
 
1132
        mov     edi, esi
-
 
1133
.countslashloop:
-
 
1134
        cmp     byte [edi], '/'
-
 
1135
        jnz     @f
-
 
1136
        inc     eax
-
 
1137
@@:
-
 
1138
        inc     edi
-
 
1139
        cmp     byte [edi], 0
-
 
1140
        jnz     .countslashloop
-
 
1141
        cmp     eax, 2
-
 
1142
        jbe     @f
-
 
1143
        mov     ebx, attrinfo
-
 
1144
        mov     [attrinfo.attr], 0
-
 
1145
        mov     [ebx + attrinfo.name - attrinfo], esi
-
 
1146
        push    70
-
 
1147
        pop     eax
-
 
1148
        int     0x40
-
 
1149
        mov     cl, byte [attrinfo.attr]
-
 
1150
@@:
-
 
1151
        test    cl, 0x10
-
 
1152
        jz      .copyfile
-
 
1153
;  ¬ ¯®¤áã­ã«¨ ª â «®£ ­ §­ ç¥­¨ï, ¤®¯¨á뢠¥¬ ¨¬ï ä ©« 
-
 
1154
        mov     al, '/'
-
 
1155
        stosb
-
 
1156
        push    esi
-
 
1157
        call    get_curfile_folder_entry
-
 
1158
        lea     esi, [ecx+40]
-
 
1159
@@:
-
 
1160
        lodsb
-
 
1161
        stosb
-
 
1162
        test    al, al
-
 
1163
        jnz     @b
-
 
1164
        pop     esi
-
 
1165
.copyfile:
-
 
1166
; ˆ¬ï ¨á室­®£® ä ©« 
-
 
1167
        push    esi
-
 
1168
        lea     esi, [ebp+panel1_dir-panel1_data]
-
 
1169
        mov     edi, saved_file_name
-
 
1170
        push    edi
-
 
1171
@@:
-
 
1172
        lodsb
-
 
1173
        test    al, al
-
 
1174
        jz      @f
-
 
1175
        stosb
-
 
1176
        jmp     @b
-
 
1177
@@:
-
 
1178
        mov     al, '/'
-
 
1179
        stosb
-
 
1180
        call    get_curfile_folder_entry
-
 
1181
        lea     esi, [ecx+40]
-
 
1182
@@:
-
 
1183
        lodsb
-
 
1184
        stosb
-
 
1185
        test    al, al
-
 
1186
        jnz     @b
-
 
1187
        pop     esi
-
 
1188
        pop     edi
-
 
1189
; ¥«ì§ï ᪮¯¨à®¢ âì ä ©« ¯®¢¥àå á ¬®£® ᥡï!
-
 
1190
        push    esi edi
-
 
1191
        call    strcmpi
-
 
1192
        pop     edi esi
-
 
1193
        jz      .ret2
-
 
1194
; ‘®¡á⢥­­®, ª®¯¨à㥬
-
 
1195
; esi->source name, edi->destination name
-
 
1196
        mov     [writeinfo.code], 2
-
 
1197
        mov     [writeinfo.name], edi
-
 
1198
        and     dword [writeinfo.first], 0
-
 
1199
        and     dword [writeinfo.first+4], 0
-
 
1200
        mov     [writeinfo.data], copy_buffer
-
 
1201
        mov     ebx, readinfo
-
 
1202
        and     dword [ebx+readinfo.first-readinfo], 0
-
 
1203
        and     dword [ebx+readinfo.first+4-readinfo], 0
-
 
1204
        mov     [ebx+readinfo.size-readinfo], copy_buffer_size
-
 
1205
        mov     [ebx+readinfo.data-readinfo], copy_buffer
-
 
1206
        mov     [ebx+readinfo.name-readinfo], esi
-
 
1207
.copyloop:
-
 
1208
        mov     ebx, readinfo
-
 
1209
        push    70
-
 
1210
        pop     eax
-
 
1211
        int     0x40
-
 
1212
        cmp     ebx, -1
-
 
1213
        jz      .copydone
-
 
1214
        test    ebx, ebx
-
 
1215
        jz      .copydone
-
 
1216
        add     dword [readinfo.first], ebx
-
 
1217
        adc     dword [readinfo.first+4], 0
-
 
1218
        mov     [writeinfo.size], ebx
-
 
1219
        mov     ebx, writeinfo
-
 
1220
        push    70
-
 
1221
        pop     eax
-
 
1222
        int     0x40
-
 
1223
        mov     ecx, [writeinfo.size]
-
 
1224
        add     dword [writeinfo.first], ecx
-
 
1225
        adc     dword [writeinfo.first+4], 0
-
 
1226
        mov     [writeinfo.code], 3
-
 
1227
        cmp     ecx, copy_buffer_size
-
 
1228
        jz      .copyloop
-
 
1229
.copydone:
-
 
1230
        push    ebp
-
 
1231
        call    .ctrl_r
-
 
1232
        pop     ebp
-
 
1233
        xor     ebp, panel1_data xor panel2_data
-
 
1234
        jmp     .ctrl_r
-
 
1235
 
883
.f3:
1236
.f3:
884
        call    view_file
1237
        call    view_file
885
.ret2:
1238
.ret2:
886
        ret
1239
        ret
887
.f8:
1240
.f8:
Line 978... Line 1331...
978
;       call    read_folder
1331
;       call    read_folder
979
;       jmp     .done_redraw
1332
;       jmp     .done_redraw
980
        mov     eax, [ebp + panel1_index - panel1_data]
1333
        mov     eax, [ebp + panel1_index - panel1_data]
981
        push    eax
1334
        push    eax
982
        call    get_curfile_name
1335
        call    get_curfile_name
983
        mov     esi, eax
1336
        mov     esi, ecx
984
        mov     edi, saved_file_name
1337
        mov     edi, saved_file_name
985
@@:
1338
@@:
986
        lodsb
1339
        lodsb
987
        stosb
1340
        stosb
988
        test    al, al
1341
        test    al, al
Line 1032... Line 1385...
1032
        cmp     [ebp + panel1_start - panel1_data], eax
1385
        cmp     [ebp + panel1_start - panel1_data], eax
1033
        jbe     @f
1386
        jbe     @f
1034
        mov     [ebp + panel1_start - panel1_data], eax
1387
        mov     [ebp + panel1_start - panel1_data], eax
1035
@@:
1388
@@:
1036
        jmp     .done_redraw
1389
        jmp     .done_redraw
-
 
1390
.menu:
-
 
1391
; display context menu
-
 
1392
; ignore folders
-
 
1393
        call    get_curfile_folder_entry
-
 
1394
        test    byte [ecx], 10h
-
 
1395
        jz      @f
-
 
1396
.menuret:
-
 
1397
        ret
-
 
1398
@@:
-
 
1399
        call    find_extension
-
 
1400
        jc      .menuret
-
 
1401
        jnz     .menuret
-
 
1402
; known extension
-
 
1403
        mov     ebx, [edi+8]
-
 
1404
        test    ebx, ebx
-
 
1405
        jz      .menuret
-
 
1406
        mov     ecx, esi
-
 
1407
@@:
-
 
1408
        inc     ecx
-
 
1409
        cmp     byte [ecx-1], 0
-
 
1410
        jnz     @b
-
 
1411
        sub     ecx, esi        ; ecx = ¤«¨­  ¨¬¥­¨ ä ©« +1 = ¤«¨­  § £®«®¢ª +1
-
 
1412
        cmp     ecx, 15
-
 
1413
        jb      @f
-
 
1414
        mov     cl, 15
-
 
1415
@@:
-
 
1416
        xor     edx, edx
-
 
1417
.menucreateloop:
-
 
1418
        mov     eax, [ebx]
-
 
1419
        test    eax, eax
-
 
1420
        jz      .menucreated
-
 
1421
@@:
-
 
1422
        inc     eax
-
 
1423
        cmp     byte [eax-1], 0
-
 
1424
        jnz     @b
-
 
1425
        sub     eax, [ebx]
-
 
1426
        cmp     eax, ecx
-
 
1427
        ja      @f
-
 
1428
        mov     eax, ecx
-
 
1429
@@:
-
 
1430
        add     eax, 12
-
 
1431
        call    mf_alloc
-
 
1432
        test    eax, eax
-
 
1433
        jz      .menucreated
-
 
1434
        add     eax, 4
-
 
1435
        test    edx, edx
-
 
1436
        jz      @f
-
 
1437
        mov     [edx], eax
-
 
1438
@@:
-
 
1439
        mov     [eax+4], edx
-
 
1440
        mov     edx, eax
-
 
1441
        push    esi
-
 
1442
        mov     esi, [ebx+4]
-
 
1443
        mov     [eax-4], esi
-
 
1444
        mov     esi, [ebx]
-
 
1445
        lea     edi, [eax+8]
-
 
1446
@@:
-
 
1447
        lodsb
-
 
1448
        stosb
-
 
1449
        test    al, al
-
 
1450
        jnz     @b
-
 
1451
        sub     esi, [ebx]
-
 
1452
        sub     esi, ecx
-
 
1453
        jae     .menunoadd
-
 
1454
        neg     esi
-
 
1455
@@:
-
 
1456
        mov     byte [edi-1], ' '
-
 
1457
        stosb
-
 
1458
        dec     esi
-
 
1459
        jnz     @b
-
 
1460
.menunoadd:
-
 
1461
        pop     esi
-
 
1462
        add     ebx, 8
-
 
1463
        jmp     .menucreateloop
-
 
1464
.menucreated:
-
 
1465
        test    edx, edx
-
 
1466
        jz      .menuret
-
 
1467
        and     dword [edx], 0
-
 
1468
@@:
-
 
1469
        cmp     dword [edx+4], 0
-
 
1470
        jz      @f
-
 
1471
        mov     edx, [edx+4]
-
 
1472
        jmp     @b
-
 
1473
@@:
-
 
1474
        push    1
-
 
1475
        push    esi
-
 
1476
        push    edx
-
 
1477
        call    menu
-
 
1478
        cmp     eax, -1
-
 
1479
        jz      .menuret
-
 
1480
        push    dword [eax-4]
-
 
1481
@@:
-
 
1482
        test    edx, edx
-
 
1483
        jz      @f
-
 
1484
        lea     eax, [edx-4]
-
 
1485
        mov     edx, [edx]
-
 
1486
        call    mf_free
-
 
1487
        jmp     @b
-
 
1488
@@:
-
 
1489
        pop     eax
-
 
1490
        call    get_curfile_folder_entry
-
 
1491
        jmp     .run_association2
Line 1037... Line 1492...
1037
 
1492
 
1038
panels_OnRedraw:
1493
panels_OnRedraw:
1039
        call    draw_cmdbar
1494
        call    draw_cmdbar
1040
        mov     ebp, panel1_data
1495
        mov     ebp, panel1_data
1041
        call    draw_panel
1496
        call    draw_panel
1042
        mov     ebp, panel2_data
1497
        mov     ebp, panel2_data
1043
        call    draw_panel
1498
        call    draw_panel
Line 1044... Line 1499...
1044
        ret
1499
        ret
-
 
1500
 
-
 
1501
init_console:
-
 
1502
        mov     eax, [console_data_ptr]
-
 
1503
        call    mf_free
-
 
1504
        mov     eax, [cur_width]
-
 
1505
        mul     [cur_height]
-
 
1506
        mov     ecx, eax
-
 
1507
        add     eax, eax
-
 
1508
        add     eax, eax
-
 
1509
        call    mf_alloc
-
 
1510
        test    eax, eax
-
 
1511
        jz      exit
1045
 
1512
        mov     [console_data_ptr], eax
1046
init_console:
-
 
1047
        mov     ax, 0720h
-
 
1048
        mov     ecx, [cur_width]
-
 
1049
        imul    ecx, [cur_height]
1513
        mov     edi, eax
1050
        mov     edi, console_data
1514
        mov     ax, 0720h
1051
        rep     stosw
1515
        rep     stosw
1052
        and     [panel1_left], 0
1516
        mov     [panel1_left], ecx
1053
        and     [panel1_top], 0
1517
        mov     [panel1_top], ecx
1054
        and     [panel2_top], 0
1518
        mov     [panel2_top], ecx
1055
        mov     eax, [cur_width]
1519
        mov     eax, [cur_width]
1056
        inc     eax
1520
        inc     eax
1057
        shr     eax, 1
1521
        shr     eax, 1
Line 1190... Line 1654...
1190
        mov     bl, 4
1654
        mov     bl, 4
1191
        int     40h
1655
        int     40h
1192
        mov     [skinh], eax
1656
        mov     [skinh], eax
1193
        mov     ebx, [cur_width]
1657
        mov     ebx, [cur_width]
1194
        imul    ebx, font_width
1658
        imul    ebx, font_width
1195
        add     ebx, 100*65536 + 5*2
1659
        add     ebx, 100*65536 + 5*2-1
1196
        mov     ecx, [cur_height]
1660
        mov     ecx, [cur_height]
1197
        imul    ecx, font_height
1661
        imul    ecx, font_height
1198
        lea     ecx, [eax+ecx+5+100*65536]
1662
        lea     ecx, [eax+ecx+5-1+100*65536]
1199
        xor     eax, eax
1663
        xor     eax, eax
1200
        mov     edx, 0x13000000
1664
        mov     edx, 0x13000000
1201
        mov     edi, header
1665
        mov     edi, header
1202
        int     40h
1666
        int     40h
1203
        mov     al, 48
1667
        mov     al, 48
Line 1217... Line 1681...
1217
;        push    header.length
1681
;        push    header.length
1218
;        pop     esi
1682
;        pop     esi
1219
;        push    4
1683
;        push    4
1220
;        pop     eax
1684
;        pop     eax
1221
;        int     40h
1685
;        int     40h
1222
        xor     ecx, ecx
1686
;        xor     ecx, ecx
1223
        call    draw_image
1687
;        call    draw_image
-
 
1688
        and     [min_x], 0
-
 
1689
        and     [min_y], 0
-
 
1690
        mov     eax, [cur_width]
1224
        push    12
1691
        dec     eax
-
 
1692
        mov     [max_x], eax
-
 
1693
        mov     eax, [cur_height]
1225
        pop     eax
1694
        dec     eax
-
 
1695
        mov     [max_y], eax
-
 
1696
        call    draw_image.force
-
 
1697
        mov     al, 12
1226
        push    2
1698
        push    2
1227
        pop     ebx
1699
        pop     ebx
1228
        int     40h
1700
        int     40h
1229
        ret
1701
        ret
Line 1246... Line 1718...
1246
        pop     esi
1718
        pop     esi
1247
        int     40h
1719
        int     40h
1248
        ret
1720
        ret
Line 1249... Line 1721...
1249
 
1721
 
-
 
1722
draw_image:
-
 
1723
; determine draw rectangle
-
 
1724
        and     [max_x], 0
-
 
1725
        or      [min_x], -1
-
 
1726
        or      [min_y], -1
-
 
1727
        mov     esi, [console_data_ptr]
-
 
1728
        xor     eax, eax
-
 
1729
        xor     edx, edx
-
 
1730
        mov     ecx, [cur_width]
-
 
1731
        imul    ecx, [cur_height]
-
 
1732
.m1:
-
 
1733
        mov     bx, [esi]
-
 
1734
        cmp     bx, [esi+ecx*2]
-
 
1735
        jz      .m2
-
 
1736
        cmp     eax, [min_x]
-
 
1737
        ja      @f
-
 
1738
        mov     [min_x], eax
-
 
1739
@@:
-
 
1740
        cmp     eax, [max_x]
-
 
1741
        jb      @f
-
 
1742
        mov     [max_x], eax
-
 
1743
@@:
-
 
1744
        cmp     edx, [min_y]
-
 
1745
        jae     @f
-
 
1746
        mov     [min_y], edx
-
 
1747
@@:
-
 
1748
        mov     [max_y], edx
-
 
1749
.m2:
-
 
1750
        add     esi, 2
-
 
1751
        inc     eax
-
 
1752
        cmp     eax, [cur_width]
-
 
1753
        jb      .m1
-
 
1754
        xor     eax, eax
-
 
1755
        inc     edx
-
 
1756
        cmp     edx, [cur_height]
-
 
1757
        jb      .m1
-
 
1758
        mov     eax, [cursor_x]
-
 
1759
        cmp     eax, -1
-
 
1760
        jz      .m3
-
 
1761
        cmp     eax, [min_x]
-
 
1762
        ja      @f
-
 
1763
        mov     [min_x], eax
-
 
1764
@@:
-
 
1765
        cmp     eax, [max_x]
-
 
1766
        jb      @f
-
 
1767
        mov     [max_x], eax
-
 
1768
@@:
-
 
1769
        mov     edx, [cursor_y]
-
 
1770
        cmp     edx, [min_y]
-
 
1771
        ja      @f
-
 
1772
        mov     [min_y], edx
-
 
1773
@@:
-
 
1774
        cmp     edx, [max_y]
-
 
1775
        jb      @f
-
 
1776
        mov     [max_y], edx
-
 
1777
@@:
-
 
1778
.m3:
-
 
1779
        xchg    eax, [old_cursor_x]
-
 
1780
        xchg    edx, [old_cursor_y]
-
 
1781
        cmp     eax, -1
-
 
1782
        jz      .m4
-
 
1783
        cmp     eax, [min_x]
-
 
1784
        ja      @f
-
 
1785
        mov     [min_x], eax
-
 
1786
@@:
-
 
1787
        cmp     eax, [max_x]
-
 
1788
        jb      @f
-
 
1789
        mov     [max_x], eax
-
 
1790
@@:
-
 
1791
        cmp     edx, [min_y]
-
 
1792
        ja      @f
-
 
1793
        mov     [min_y], edx
-
 
1794
@@:
-
 
1795
        cmp     edx, [max_y]
-
 
1796
        jb      @f
-
 
1797
        mov     [max_y], edx
-
 
1798
@@:
1250
draw_image:
1799
.m4:
1251
        cmp     [MemForImage], 0
1800
        cmp     [min_y], -1
-
 
1801
        jz      .nodraw
1252
        jnz     .allocated
1802
.force:
1253
; allocate memory for image
1803
; allocate memory for image
-
 
1804
        mov     ecx, [max_x]
-
 
1805
        sub     ecx, [min_x]
-
 
1806
        inc     ecx
-
 
1807
        mov     [used_width], ecx
-
 
1808
        mov     edx, [max_y]
-
 
1809
        sub     edx, [min_y]
-
 
1810
        inc     edx
1254
        mov     eax, [cur_width]
1811
        mov     [used_height], edx
1255
        imul    eax, [cur_height]
1812
        imul    ecx, edx
-
 
1813
        imul    ecx, font_width*font_height
-
 
1814
        add     ecx, [heapend]
1256
        imul    eax, font_width*font_height*3
1815
        push    64
-
 
1816
        pop     eax
-
 
1817
        push    1
-
 
1818
        pop     ebx
1257
        call    mf_alloc
1819
        int     0x40
1258
        test    eax, eax
1820
        test    eax, eax
1259
        jz      draw_image.nomem
1821
        jnz     draw_image.nomem
1260
        mov     [MemForImage], eax
1822
        mov     edi, [heapend]
1261
.allocated:
1823
        mov     esi, [console_data_ptr]
-
 
1824
        mov     eax, [min_y]
-
 
1825
        imul    eax, [cur_width]
1262
        mov     edi, [MemForImage]
1826
        add     eax, [min_x]
1263
        mov     esi, console_data
1827
        lea     esi, [esi+eax*2]
1264
        mov     ecx, [cur_height]
1828
        mov     ecx, [used_height]
1265
.lh:
1829
.lh:
1266
        push    ecx
1830
        push    ecx esi
1267
        mov     ecx, [cur_width]
1831
        mov     ecx, [used_width]
1268
.lw:
1832
.lw:
1269
        push    ecx edi
1833
        push    ecx
1270
        xor     eax, eax
1834
        mov     ebx, [esi]
-
 
1835
        mov     eax, [cur_width]
-
 
1836
        imul    eax, [cur_height]
1271
        mov     al, [esi+1]
1837
        mov     [eax*2+esi], bx
-
 
1838
        movzx   eax, bl
1272
        and     al, 0xF
1839
        push    edi
1273
        mov     ebx, [console_colors + eax*4]   ; 梥â ⥪áâ 
1840
        movzx   ebx, bh
1274
        mov     al, [esi+1]
1841
        mov     ebp, ebx
1275
        shr     al, 4
1842
        shr     ebp, 4
1276
        mov     ebp, [console_colors + eax*4]   ; 梥â ä®­ 
1843
        and     ebx, 0xF
1277
        lodsb
1844
        sub     ebx, ebp
1278
        inc     esi
1845
        add     esi, 2
1279
if font_width > 8
1846
if font_width > 8
1280
        lea     edx, [eax+eax+font]
1847
        lea     edx, [eax+eax+font]
1281
else
1848
else
1282
        lea     edx, [eax+font]
1849
        lea     edx, [eax+font]
1283
end if
1850
end if
1284
        mov     ecx, font_height
1851
        mov     ecx, font_height
1285
.sh:
1852
.sh:
1286
        push    ecx edi
1853
        push    ecx edx edi
-
 
1854
        xor     ecx, ecx
1287
        xor     ecx, ecx
1855
        mov     edx, [edx]
1288
.sw:
1856
.sw:
1289
        mov     eax, ebx
1857
        shr     edx, 1
1290
        bt      [edx], ecx
1858
        sbb     eax, eax
1291
        jc      @f
1859
        and     eax, ebx
1292
        mov     eax, ebp
-
 
1293
@@:
1860
        add     eax, ebp
1294
        stosw
1861
        mov     [edi], al
1295
        shr     eax, 16
-
 
1296
        stosb
1862
        add     ecx, 1
1297
        inc     ecx
1863
        add     edi, 1
1298
        cmp     ecx, font_width
1864
        cmp     ecx, font_width
1299
        jb      .sw
1865
        jb      .sw
1300
        pop     edi ecx
1866
        pop     edi edx ecx
1301
        mov     eax, [cur_width]
1867
        mov     eax, [used_width]
1302
        imul    eax, font_width*3
1868
        imul    eax, font_width
1303
        add     edi, eax
1869
        add     edi, eax
1304
if font_width > 8
1870
if font_width > 8
1305
        add     edx, 256*2
1871
        add     edx, 256*2
1306
else
1872
else
1307
        add     edx, 256
1873
        add     edx, 256
1308
end if
1874
end if
1309
        loop    .sh
1875
        loop    .sh
1310
        pop     edi ecx
-
 
1311
        add     edi, font_width*3
1876
        pop     edi
1312
        loop    .lw
-
 
1313
        mov     eax, [cur_width]
-
 
1314
        imul    eax, (font_height-1)*font_width*3
-
 
1315
        add     edi, eax
1877
.skip_symbol:
-
 
1878
        pop     ecx
-
 
1879
        add     edi, font_width
-
 
1880
        dec     ecx
-
 
1881
        jnz     .lw
-
 
1882
        mov     eax, [used_width]
-
 
1883
        imul    eax, (font_height-1)*font_width
-
 
1884
        add     edi, eax
-
 
1885
        pop     esi ecx
-
 
1886
        add     esi, [cur_width]
-
 
1887
        add     esi, [cur_width]
1316
        pop     ecx
1888
        dec     ecx
-
 
1889
        jnz     .lh
-
 
1890
; cursor
-
 
1891
        mov     eax, [cursor_y]
-
 
1892
        inc     eax
-
 
1893
        jz      .nocursor
-
 
1894
        sub     eax, [min_y]
-
 
1895
        mul     [used_width]
-
 
1896
        imul    eax, font_height*font_width
-
 
1897
        mov     edx, [cursor_x]
-
 
1898
        sub     edx, [min_x]
-
 
1899
        inc     edx
-
 
1900
        imul    edx, font_width
-
 
1901
        add     eax, edx
-
 
1902
        add     eax, [heapend]
-
 
1903
        mov     edx, [used_width]
-
 
1904
        imul    edx, font_width
-
 
1905
        neg     edx
-
 
1906
        mov     ecx, (font_height*15+50)/100
-
 
1907
.cursor_loop:
-
 
1908
        push    ecx
-
 
1909
        mov     ecx, font_width
1317
        loop    .lh
1910
        add     eax, edx
-
 
1911
        push    eax
-
 
1912
@@:
-
 
1913
;        add     byte [eax-1], 0x10
-
 
1914
        xor     byte [eax-1], 7
-
 
1915
        sub     eax, 1
1318
        push    7
1916
        loop    @b
-
 
1917
        pop     eax
1319
        pop     eax
1918
        pop     ecx
-
 
1919
        loop    .cursor_loop
1320
        mov     ebx, [MemForImage]
1920
.nocursor:
1321
        mov     ecx, [cur_width]
1921
        mov     ecx, [used_width]
1322
        imul    ecx, font_width*10000h
1922
        imul    ecx, font_width*65536
1323
        mov     cx, word [cur_height]
1923
        mov     cx, word [used_height]
1324
        imul    cx, font_height
1924
        imul    cx, font_height
-
 
1925
        mov     edx, [min_x]
1325
        mov     edx, [skinh]
1926
        imul    edx, font_width
-
 
1927
        add     edx, 5
-
 
1928
        shl     edx, 16
-
 
1929
        mov     dx, word [min_y]
-
 
1930
        imul    dx, font_height
-
 
1931
        add     edx, [skinh]
-
 
1932
        push    65
-
 
1933
        pop     eax
-
 
1934
        mov     ebx, [heapend]
-
 
1935
        push    8
-
 
1936
        pop     esi
-
 
1937
        mov     edi, console_colors
-
 
1938
        int     0x40
-
 
1939
        push    64
-
 
1940
        pop     eax
-
 
1941
        push    1
-
 
1942
        pop     ebx
1326
        add     edx, 5*10000h
1943
        mov     ecx, [heapend]
-
 
1944
        int     0x40
1327
        int     40h
1945
.nodraw:
Line 1328... Line 1946...
1328
        ret
1946
        ret
1329
 
1947
 
1330
get_console_ptr:
1948
get_console_ptr:
1331
; in: eax=x, edx=y
1949
; in: eax=x, edx=y
1332
; out: edi->console data
1950
; out: edi->console data
1333
        push    edx
1951
        push    edx
-
 
1952
        imul    edx, [cur_width]
1334
        imul    edx, [cur_width]
1953
        add     edx, eax
1335
        add     edx, eax
1954
        mov     edi, [console_data_ptr]
1336
        lea     edi, [console_data + edx*2]
1955
        lea     edi, [edi + edx*2]
Line 1337... Line 1956...
1337
        pop     edx
1956
        pop     edx
1338
        ret
1957
        ret
Line 1429... Line 2048...
1429
        jnz     @f
2048
        jnz     @f
1430
        dec     edi
2049
        dec     edi
1431
        dec     edi
2050
        dec     edi
1432
@@:
2051
@@:
1433
        push    edi
2052
        push    edi
1434
        mov     eax, [cur_width]
2053
        xor     eax, eax
1435
        mov     edx, [cur_height]
2054
        mov     edx, [cur_height]
1436
        call    get_console_ptr
2055
        call    get_console_ptr
1437
        mov     ecx, edi
2056
        mov     ecx, edi
1438
        pop     edi
2057
        pop     edi
1439
        sub     ecx, edi
2058
        sub     ecx, edi
Line 1753... Line 2372...
1753
        jz      .size_less_4g
2372
        jz      .size_less_4g
1754
        cmp     edx, 10*256
2373
        cmp     edx, 10*256
1755
        jae     .size_tera
2374
        jae     .size_tera
1756
; ¢ £¨£ ¡ ©â å
2375
; ¢ £¨£ ¡ ©â å
1757
        mov     al, 'G'
2376
        mov     al, 'G'
-
 
2377
        shl     edx, 2
1758
        jmp     .size_letter
2378
        jmp     .size_letter
1759
.size_tera:
2379
.size_tera:
1760
; ¢ â¥à ¡ ©â å
2380
; ¢ â¥à ¡ ©â å
1761
        shr     edx, 8
2381
        shr     edx, 8
1762
        mov     al, 'T'
2382
        mov     al, 'T'
Line 1882... Line 2502...
1882
        mov     ecx, [ebp + panel1_files - panel1_data]
2502
        mov     ecx, [ebp + panel1_files - panel1_data]
1883
        mov     esi, [ecx+esi*4]
2503
        mov     esi, [ecx+esi*4]
1884
        mov     ecx, [ebp + panel1_nfa - panel1_data]
2504
        mov     ecx, [ebp + panel1_nfa - panel1_data]
1885
        lea     esi, [esi + ecx*4 + 32 + 40]
2505
        lea     esi, [esi + ecx*4 + 32 + 40]
1886
        add     esi, [ebp + panel1_files - panel1_data]
2506
        add     esi, [ebp + panel1_files - panel1_data]
1887
; ¯®¤á¢¥âª 
-
 
1888
;        call    insert_last_dot
-
 
1889
        xor     ecx, ecx
-
 
1890
.highlight_test_loop:
-
 
1891
        mov     ebx, [highlight_groups+ecx*4]
-
 
1892
        mov     al, [ebx + highlight.IncludeAttributes]
-
 
1893
        mov     ah, [esi - 40]
2507
        mov     ah, [esi - 40 + 5]
1894
        and     ah, al
-
 
1895
        cmp     ah, al
-
 
1896
        jnz     .highlight_test_failed
-
 
1897
        push    edi
-
 
1898
        lea     edi, [ebx + highlight.Mask]
-
 
1899
        call    match_mask
-
 
1900
        pop     edi
-
 
1901
        jc      .highlight_test_failed
-
 
1902
        mov     ah, [ebx + highlight.NormalColor]
-
 
1903
        cmp     ebp, [active_panel]
-
 
1904
        jnz     @f
-
 
1905
        mov     ecx, [column_index]
-
 
1906
        cmp     ecx, [ebp + panel1_index - panel1_data]
-
 
1907
        jnz     @f
-
 
1908
        mov     ah, [ebx + highlight.CursorColor]
-
 
1909
@@:
-
 
1910
        test    ah, ah
-
 
1911
        jz      .nohighlight
-
 
1912
        jmp     .doname
-
 
1913
.highlight_test_failed:
-
 
1914
        inc     ecx
-
 
1915
        cmp     ecx, [highlight_num_groups]
-
 
1916
        jb      .highlight_test_loop
-
 
1917
.nohighlight:
-
 
1918
        mov     ah, [panel_normal_color]
-
 
1919
        cmp     ebp, [active_panel]
2508
        cmp     ebp, [active_panel]
1920
        jnz     @f
2509
        jnz     @f
1921
        mov     ecx, [column_index]
2510
        mov     ecx, [column_index]
1922
        cmp     ecx, [ebp + panel1_index - panel1_data]
2511
        cmp     ecx, [ebp + panel1_index - panel1_data]
1923
        jnz     @f
2512
        jnz     @f
1924
        mov     ah, [panel_cursor_color]
2513
        mov     ah, [esi - 40 + 6]
1925
@@:
2514
@@:
1926
.doname:
-
 
1927
;        call    delete_last_dot
-
 
1928
        mov     ecx, [column_width]
2515
        mov     ecx, [column_width]
1929
        push    edi
2516
        push    edi
1930
@@:
2517
@@:
1931
        lodsb
2518
        lodsb
1932
        test    al, al
2519
        test    al, al
Line 2054... Line 2641...
2054
        mov     eax, [dirinfo.dirdata]
2641
        mov     eax, [dirinfo.dirdata]
2055
        cmp     [eax+8], ebx
2642
        cmp     [eax+8], ebx
2056
        jz      .readdone
2643
        jz      .readdone
2057
        push    eax
2644
        push    eax
2058
        mov     eax, [ebp + panel1_files - panel1_data]
2645
        mov     eax, [ebp + panel1_files - panel1_data]
2059
        cmp     eax, buf1
-
 
2060
        jz      @f
-
 
2061
        cmp     eax, buf2
-
 
2062
        jz      @f
-
 
2063
        call    mf_free
2646
        call    mf_free
2064
@@:
-
 
2065
        pop     eax
2647
        pop     eax
2066
        mov     eax, [eax+8]
2648
        mov     eax, [eax+8]
2067
        add     eax, 0xF
2649
        add     eax, 0xF
2068
        and     eax, not 0xF
2650
        and     eax, not 0xF
2069
        push    eax
2651
        push    eax
Line 2086... Line 2668...
2086
        mov     edi, [ebp + panel1_files - panel1_data]
2668
        mov     edi, [ebp + panel1_files - panel1_data]
2087
        mov     eax, [ebp + panel1_nfa - panel1_data]
2669
        mov     eax, [ebp + panel1_nfa - panel1_data]
2088
        lea     esi, [edi + eax*4 + 32]
2670
        lea     esi, [edi + eax*4 + 32]
2089
        xor     eax, eax
2671
        xor     eax, eax
2090
        mov     ecx, [esi-32+4]
2672
        mov     ecx, [esi-32+4]
-
 
2673
        test    ecx, ecx
2091
        jecxz   .loopdone
2674
        jz      .loopdone
2092
; ˆ£­®à¨à㥬 ᯥ樠«ì­ë¥ ¢å®¤ë, ᮮ⢥âáâ¢ãî騥 ¯ ¯ª¥ '.' ¨ ¬¥âª¥ ⮬ 
2675
; ˆ£­®à¨à㥬 ᯥ樠«ì­ë¥ ¢å®¤ë, ᮮ⢥âáâ¢ãî騥 ¯ ¯ª¥ '.' ¨ ¬¥âª¥ ⮬ 
2093
.ptrinit:
2676
.ptrinit:
2094
        cmp     word [esi+eax+40], '.'
2677
        cmp     word [esi+eax+40], '.'
2095
        jz      .loopcont
2678
        jz      .loopcont
2096
        test    byte [esi+eax], 8
2679
        test    byte [esi+eax], 8
2097
        jnz     .loopcont
2680
        jnz     .loopcont
2098
        stosd
2681
        stosd
-
 
2682
; ¯®¤á¢¥âª 
-
 
2683
;        call    insert_last_dot
-
 
2684
        pushad
-
 
2685
        lea     ebp, [esi+eax]
-
 
2686
        lea     esi, [ebp+40]
-
 
2687
        mov     edi, lower_file_name
-
 
2688
        mov     edx, edi
-
 
2689
@@:
-
 
2690
        lodsb
-
 
2691
        call    tolower
-
 
2692
        stosb
-
 
2693
        test    al, al
-
 
2694
        jnz     @b
-
 
2695
        mov     esi, edx
-
 
2696
        lea     edx, [edi-1]
-
 
2697
        xor     ecx, ecx
-
 
2698
.highlight_test_loop:
-
 
2699
        mov     ebx, [highlight_groups+ecx*4]
-
 
2700
        mov     al, [ebx + highlight.IncludeAttributes]
-
 
2701
        mov     ah, [ebp]
-
 
2702
        and     ah, al
-
 
2703
        cmp     ah, al
-
 
2704
        jnz     .highlight_test_failed
-
 
2705
        lea     edi, [ebx + highlight.Mask]
-
 
2706
        call    match_mask_rev_lowercase
-
 
2707
        jc      .highlight_test_failed
-
 
2708
        mov     ah, [ebx + highlight.NormalColor]
-
 
2709
        test    ah, ah
-
 
2710
        jnz     @f
-
 
2711
        mov     ah, [panel_normal_color]
-
 
2712
@@:
-
 
2713
        mov     [ebp+5], ah
-
 
2714
        mov     ah, [ebx + highlight.CursorColor]
-
 
2715
        test    ah, ah
-
 
2716
        jnz     @f
-
 
2717
        mov     ah, [panel_cursor_color]
-
 
2718
@@:
-
 
2719
        mov     [ebp+6], ah
-
 
2720
        jmp     .doname
-
 
2721
.highlight_test_failed:
-
 
2722
        inc     ecx
-
 
2723
        cmp     ecx, [highlight_num_groups]
-
 
2724
        jb      .highlight_test_loop
-
 
2725
.nohighlight:
-
 
2726
        mov     ah, [panel_normal_color]
-
 
2727
        mov     [ebp+5], ah
-
 
2728
        mov     ah, [panel_cursor_color]
-
 
2729
        mov     [ebp+6], ah
-
 
2730
.doname:
-
 
2731
;        call    delete_last_dot
-
 
2732
        popad
2099
.loopcont:
2733
.loopcont:
2100
        add     eax, 304
2734
        add     eax, 304
-
 
2735
        dec     ecx
2101
        loop    .ptrinit
2736
        jnz     .ptrinit
2102
.loopdone:
2737
.loopdone:
2103
        sub     edi, [ebp + panel1_files - panel1_data]
2738
        sub     edi, [ebp + panel1_files - panel1_data]
2104
        shr     edi, 2
2739
        shr     edi, 2
2105
        mov     [ebp + panel1_numfiles - panel1_data], edi
2740
        mov     [ebp + panel1_numfiles - panel1_data], edi
2106
.done:
2741
.done:
Line 2728... Line 3363...
2728
.less:
3363
.less:
2729
        xor     edi, edi
3364
        xor     edi, edi
2730
        stc
3365
        stc
2731
        ret
3366
        ret
Line -... Line 3367...
-
 
3367
 
2732
 
3368
if 0
2733
match_mask:
3369
match_mask:
2734
; in: esi->name, edi->mask
3370
; in: esi->name, edi->mask
2735
; out: CF clear <=> match
3371
; out: CF clear <=> match
2736
        pusha
3372
        pusha
Line 2845... Line 3481...
2845
        jae     .listok
3481
        jae     .listok
2846
@@:
3482
@@:
2847
        inc     esi
3483
        inc     esi
2848
        jmp     .list
3484
        jmp     .list
2849
.asterisk:
3485
.asterisk:
-
 
3486
        cmp     byte [esi], 0
-
 
3487
        jz      .done_succ
-
 
3488
        cmp     byte [esi], '?'
-
 
3489
        jnz     @f
-
 
3490
        mov     al, 0
-
 
3491
        scasb
-
 
3492
        jz      .done_fail
-
 
3493
        inc     esi
-
 
3494
        jmp     .asterisk
-
 
3495
@@:
-
 
3496
        cmp     byte [esi], '['
-
 
3497
        jz      .asterisk_common
-
 
3498
; the mask is ...*...
-
 
3499
.asterisk_normal:
-
 
3500
        mov     al, [esi]
-
 
3501
@@:
-
 
3502
        cmp     byte [edi], 0
-
 
3503
        jz      .done_fail
-
 
3504
        call    match_symbol
-
 
3505
        jz      @f
-
 
3506
        inc     edi
-
 
3507
        jmp     @b
-
 
3508
@@:
-
 
3509
        inc     edi
-
 
3510
        inc     esi
-
 
3511
        call    match_single_mask
-
 
3512
        jnc     .done_succ
-
 
3513
        dec     esi
-
 
3514
        jmp     .asterisk_normal
-
 
3515
.asterisk_common:
2850
        push    edi
3516
        push    edi
2851
@@:
3517
@@:
2852
        call    match_single_mask
3518
        call    match_single_mask
2853
        jnc     @f
3519
        jnc     @f
2854
        mov     al, 0
3520
        mov     al, 0
Line 2858... Line 3524...
2858
        jmp     .done_fail
3524
        jmp     .done_fail
2859
@@:
3525
@@:
2860
        pop     edi
3526
        pop     edi
2861
        jmp     .done_succ
3527
        jmp     .done_succ
Line -... Line 3528...
-
 
3528
 
-
 
3529
match_mask_rev:
-
 
3530
; in: esi->name, edx->end of name, edi->mask
-
 
3531
; out: CF clear <=> match
-
 
3532
        pusha
-
 
3533
        xchg    esi, edx
-
 
3534
        xchg    esi, edi
-
 
3535
.main_cycle:
-
 
3536
        mov     ecx, esi
-
 
3537
@@:
-
 
3538
        lodsb
-
 
3539
        test    al, al
-
 
3540
        jz      @f
-
 
3541
        cmp     al, ','
-
 
3542
        jz      @f
-
 
3543
        cmp     al, '|'
-
 
3544
        jnz     @b
-
 
3545
@@:
-
 
3546
        dec     esi
-
 
3547
        mov     [esi], byte 0
-
 
3548
        call    match_single_mask_rev2
-
 
3549
        mov     [esi], al
-
 
3550
        inc     esi
-
 
3551
        jnc     .found
-
 
3552
        cmp     al, ','
-
 
3553
        jz      .main_cycle
-
 
3554
.done_fail:
-
 
3555
        stc
-
 
3556
        popa
-
 
3557
        ret
-
 
3558
.found:
-
 
3559
        test    al, al
-
 
3560
        jz      .done_succ
-
 
3561
        cmp     al, '|'
-
 
3562
        jz      .test_exclude
-
 
3563
        lodsb
-
 
3564
        jmp     .found
-
 
3565
.done_succ:
-
 
3566
        clc
-
 
3567
        popa
-
 
3568
        ret
-
 
3569
.test_exclude:
-
 
3570
        mov     ecx, esi
-
 
3571
@@:
-
 
3572
        lodsb
-
 
3573
        test    al, al
-
 
3574
        jz      @f
-
 
3575
        cmp     al, ','
-
 
3576
        jnz     @b
-
 
3577
@@:
-
 
3578
        dec     esi
-
 
3579
        mov     byte [esi], 0
-
 
3580
        call    match_single_mask_rev2
-
 
3581
        mov     [esi], al
-
 
3582
        inc     esi
-
 
3583
        jnc     .done_fail
-
 
3584
        test    al, al
-
 
3585
        jz      .done_succ
-
 
3586
        jmp     .test_exclude
-
 
3587
 
-
 
3588
match_single_mask_rev2:
-
 
3589
        pusha
-
 
3590
        jmp     match_single_mask_rev.mask_symbol
-
 
3591
match_single_mask_rev:
-
 
3592
; in: esi->mask, edi->end of name, edx->start of name
-
 
3593
; out: CF clear <=> match
-
 
3594
        pusha
-
 
3595
        mov     ecx, esi
-
 
3596
@@:
-
 
3597
        lodsb
-
 
3598
        test    al, al
-
 
3599
        jnz     @b
-
 
3600
        dec     esi
-
 
3601
; esi->end of mask, ecx->start of mask
-
 
3602
.mask_symbol:
-
 
3603
        dec     esi
-
 
3604
        cmp     esi, ecx
-
 
3605
        jb      .mask_done
-
 
3606
        mov     al, [esi]
-
 
3607
        cmp     al, '*'
-
 
3608
        jz      .asterisk
-
 
3609
        cmp     al, '?'
-
 
3610
        jz      .quest
-
 
3611
        cmp     al, ']'
-
 
3612
        jz      .list
-
 
3613
        dec     edi
-
 
3614
        cmp     edi, edx
-
 
3615
        jb      .done_fail
-
 
3616
        call    match_symbol
-
 
3617
        jz      .mask_symbol
-
 
3618
.done_fail:
-
 
3619
        stc
-
 
3620
        popa
-
 
3621
        ret
-
 
3622
.mask_done:
-
 
3623
        cmp     edi, edx
-
 
3624
        jnz     .done_fail
-
 
3625
.done_succ:
-
 
3626
        clc
-
 
3627
        popa
-
 
3628
        ret
-
 
3629
.quest:
-
 
3630
        dec     edi
-
 
3631
        cmp     edi, edx
-
 
3632
        jb      .done_fail
-
 
3633
        jmp     .mask_symbol
-
 
3634
.list:
-
 
3635
        dec     edi
-
 
3636
        cmp     edi, edx
-
 
3637
        jb      .done_fail
-
 
3638
.list_check:
-
 
3639
        dec     esi
-
 
3640
        cmp     esi, ecx
-
 
3641
        jbe     .done_fail
-
 
3642
        mov     al, [esi]
-
 
3643
        cmp     al, '['
-
 
3644
        jz      .done_fail
-
 
3645
        cmp     byte [esi-1], '-'
-
 
3646
        jz      .range
-
 
3647
        call    match_symbol
-
 
3648
        jnz     .list_check
-
 
3649
.listok:
-
 
3650
@@:
-
 
3651
        dec     esi
-
 
3652
        cmp     esi, ecx
-
 
3653
        jb      .done_fail
-
 
3654
        cmp     byte [esi], '['
-
 
3655
        jnz     @b
-
 
3656
        jmp     .mask_symbol
-
 
3657
.range:
-
 
3658
        call    match_symbol
-
 
3659
        jb      @f
-
 
3660
        mov     al, [esi-2]
-
 
3661
        call    match_symbol
-
 
3662
        jbe     .listok
-
 
3663
@@:
-
 
3664
        dec     esi
-
 
3665
        dec     esi
-
 
3666
        jmp     .list_check
-
 
3667
.asterisk:
-
 
3668
        cmp     esi, ecx
-
 
3669
        jz      .done_succ
-
 
3670
        cmp     byte [esi-1], '?'
-
 
3671
        jnz     @f
-
 
3672
        cmp     edi, edx
-
 
3673
        jz      .done_fail
-
 
3674
        dec     esi
-
 
3675
        jmp     .asterisk
-
 
3676
@@:
-
 
3677
        cmp     byte [esi-1], ']'
-
 
3678
        jz      .asterisk_common
-
 
3679
; the mask is ...*...
-
 
3680
.asterisk_normal:
-
 
3681
        mov     al, [esi-1]
-
 
3682
@@:
-
 
3683
        cmp     edi, edx
-
 
3684
        jz      .done_fail
-
 
3685
        call    match_symbol
-
 
3686
        jz      @f
-
 
3687
        dec     edi
-
 
3688
        jmp     @b
-
 
3689
@@:
-
 
3690
        dec     edi
-
 
3691
        dec     esi
-
 
3692
        call    match_single_mask_rev2
-
 
3693
        jnc     .done_succ
-
 
3694
        inc     esi
-
 
3695
        jmp     .asterisk_normal
-
 
3696
.asterisk_common:
-
 
3697
        push    edi
-
 
3698
@@:
-
 
3699
        call    match_single_mask_rev2
-
 
3700
        jnc     @f
-
 
3701
        dec     edi
-
 
3702
        cmp     edi, edx
-
 
3703
        jae     @b
-
 
3704
        pop     edi
-
 
3705
        jmp     .done_fail
-
 
3706
@@:
-
 
3707
        pop     edi
-
 
3708
        jmp     .done_succ
-
 
3709
end if
2862
 
3710
 
2863
tolower:
3711
tolower:
2864
        cmp     al, 'A'
3712
        cmp     al, 'A'
2865
        jb      @f
3713
        jb      @f
2866
        cmp     al, 'Z'
3714
        cmp     al, 'Z'
Line 2878... Line 3726...
2878
        call    tolower
3726
        call    tolower
2879
        cmp     ah, al
3727
        cmp     ah, al
2880
        pop     eax
3728
        pop     eax
2881
        ret
3729
        ret
Line -... Line 3730...
-
 
3730
 
-
 
3731
match_mask_rev_lowercase:
-
 
3732
; in: esi->name, edx->end of name, edi->mask
-
 
3733
; out: CF clear <=> match
-
 
3734
        pusha
-
 
3735
        xchg    esi, edx
-
 
3736
        xchg    esi, edi
-
 
3737
.main_cycle:
-
 
3738
        mov     ecx, esi
-
 
3739
@@:
-
 
3740
        lodsb
-
 
3741
        test    al, al
-
 
3742
        jz      @f
-
 
3743
        cmp     al, ','
-
 
3744
        jz      @f
-
 
3745
        cmp     al, '|'
-
 
3746
        jnz     @b
-
 
3747
@@:
-
 
3748
        dec     esi
-
 
3749
        mov     [esi], byte 0
-
 
3750
        call    match_single_mask_rev_lowercase
-
 
3751
        mov     [esi], al
-
 
3752
        inc     esi
-
 
3753
        jnc     .found
-
 
3754
        cmp     al, ','
-
 
3755
        jz      .main_cycle
-
 
3756
.done_fail:
-
 
3757
        stc
-
 
3758
        popa
-
 
3759
        ret
-
 
3760
.found:
-
 
3761
        test    al, al
-
 
3762
        jz      .done_succ
-
 
3763
        cmp     al, '|'
-
 
3764
        jz      .test_exclude
-
 
3765
        lodsb
-
 
3766
        jmp     .found
-
 
3767
.done_succ:
-
 
3768
        clc
-
 
3769
        popa
-
 
3770
        ret
-
 
3771
.test_exclude:
-
 
3772
        mov     ecx, esi
-
 
3773
@@:
-
 
3774
        lodsb
-
 
3775
        test    al, al
-
 
3776
        jz      @f
-
 
3777
        cmp     al, ','
-
 
3778
        jnz     @b
-
 
3779
@@:
-
 
3780
        dec     esi
-
 
3781
        mov     byte [esi], 0
-
 
3782
        call    match_single_mask_rev_lowercase
-
 
3783
        mov     [esi], al
-
 
3784
        inc     esi
-
 
3785
        jnc     .done_fail
-
 
3786
        test    al, al
-
 
3787
        jz      .done_succ
Line -... Line 3788...
-
 
3788
        jmp     .test_exclude
-
 
3789
 
-
 
3790
match_single_mask_rev_lowercase:
-
 
3791
; in: esi->end of mask, ecx->start of mask, edi->end of name, edx->start of name
-
 
3792
; out: CF clear <=> match
-
 
3793
        push    esi edi eax
-
 
3794
.mask_symbol:
-
 
3795
        dec     esi
-
 
3796
        cmp     esi, ecx
-
 
3797
        jb      .mask_done
-
 
3798
        mov     al, [esi]
-
 
3799
        cmp     al, '*'
-
 
3800
        jz      .asterisk
-
 
3801
        cmp     al, '?'
-
 
3802
        jz      .quest
-
 
3803
        cmp     al, ']'
-
 
3804
        jz      .list
-
 
3805
        dec     edi
-
 
3806
        cmp     edi, edx
-
 
3807
        jb      .done_fail
-
 
3808
        cmp     al, [edi]
-
 
3809
        jz      .mask_symbol
-
 
3810
.done_fail:
-
 
3811
        stc
-
 
3812
        pop     eax edi esi
-
 
3813
        ret
-
 
3814
.mask_done:
-
 
3815
        cmp     edi, edx
-
 
3816
        jnz     .done_fail
-
 
3817
.done_succ:
-
 
3818
        clc
-
 
3819
        pop     eax edi esi
-
 
3820
        ret
-
 
3821
.quest:
-
 
3822
        dec     edi
-
 
3823
        cmp     edi, edx
-
 
3824
        jb      .done_fail
-
 
3825
        jmp     .mask_symbol
-
 
3826
.list:
-
 
3827
        dec     edi
-
 
3828
        cmp     edi, edx
-
 
3829
        jb      .done_fail
-
 
3830
.list_check:
-
 
3831
        dec     esi
-
 
3832
        cmp     esi, ecx
-
 
3833
        jbe     .done_fail
-
 
3834
        mov     al, [esi]
-
 
3835
        cmp     al, '['
-
 
3836
        jz      .done_fail
-
 
3837
        cmp     byte [esi-1], '-'
-
 
3838
        jz      .range
-
 
3839
        cmp     al, [edi]
-
 
3840
        jnz     .list_check
-
 
3841
.listok:
-
 
3842
@@:
-
 
3843
        dec     esi
-
 
3844
        cmp     esi, ecx
-
 
3845
        jb      .done_fail
-
 
3846
        cmp     byte [esi], '['
-
 
3847
        jnz     @b
-
 
3848
        jmp     .mask_symbol
-
 
3849
.range:
-
 
3850
        cmp     al, [edi]
-
 
3851
        jb      @f
-
 
3852
        mov     al, [esi-2]
-
 
3853
        cmp     al, [edi]
-
 
3854
        jbe     .listok
-
 
3855
@@:
-
 
3856
        dec     esi
-
 
3857
        dec     esi
-
 
3858
        jmp     .list_check
-
 
3859
.asterisk:
-
 
3860
        cmp     esi, ecx
-
 
3861
        jz      .done_succ
-
 
3862
        cmp     byte [esi-1], '?'
-
 
3863
        jnz     @f
-
 
3864
        cmp     edi, edx
-
 
3865
        jz      .done_fail
-
 
3866
        dec     esi
-
 
3867
        jmp     .asterisk
2882
 
3868
@@:
-
 
3869
        cmp     byte [esi-1], ']'
-
 
3870
        jz      .asterisk_common
-
 
3871
; the mask is ...*...
-
 
3872
.asterisk_normal:
-
 
3873
        mov     al, [esi-1]
-
 
3874
@@:
-
 
3875
        cmp     edi, edx
-
 
3876
        jz      .done_fail
-
 
3877
        cmp     al, [edi]
-
 
3878
        jz      @f
-
 
3879
        dec     edi
-
 
3880
        jmp     @b
-
 
3881
@@:
-
 
3882
        dec     edi
-
 
3883
        dec     esi
-
 
3884
        call    match_single_mask_rev_lowercase
-
 
3885
        jnc     .done_succ
-
 
3886
        inc     esi
-
 
3887
        jmp     .asterisk_normal
-
 
3888
.asterisk_common:
-
 
3889
        push    edi
-
 
3890
@@:
-
 
3891
        call    match_single_mask_rev_lowercase
-
 
3892
        jnc     @f
-
 
3893
        dec     edi
-
 
3894
        cmp     edi, edx
-
 
3895
        jae     @b
-
 
3896
        pop     edi
2883
 
3897
        jmp     .done_fail
-
 
3898
@@:
-
 
3899
        pop     edi
-
 
3900
        jmp     .done_succ
-
 
3901
 
-
 
3902
find_extension:
-
 
3903
        lea     esi, [ecx+40]
-
 
3904
        push    esi
-
 
3905
@@:
-
 
3906
        lodsb
-
 
3907
        test    al, al
-
 
3908
        jnz     @b
-
 
3909
@@:
-
 
3910
        dec     esi
-
 
3911
        cmp     byte [esi], '.'
-
 
3912
        jz      .found_ext
-
 
3913
        cmp     esi, [esp]
-
 
3914
        ja      @b
-
 
3915
; empty extension
-
 
3916
        pop     esi
-
 
3917
        stc
-
 
3918
        ret
-
 
3919
.found_ext:
-
 
3920
        inc     esi
-
 
3921
        mov     edi, associations
-
 
3922
@@:
-
 
3923
        push    esi edi
-
 
3924
        mov     edi, [edi]
-
 
3925
        call    strcmpi
-
 
3926
        pop     edi esi
-
 
3927
        jz      @f
2884
header  db      'Kolibri Far 0.14'
3928
        add     edi, 12
-
 
3929
        cmp     edi, associations_end
-
 
3930
        jb      @b
-
 
3931
; unknown extension
-
 
3932
        inc     edi
-
 
3933
@@:
-
 
3934
        pop     esi
-
 
3935
        ret
Line 2885... Line 3936...
2885
;.length = $ - header
3936
 
2886
        db      0
3937
header  db      'Kolibri Far 0.19',0
Line 2887... Line 3938...
2887
 
3938
 
Line 3255... Line 4306...
3255
end if
4306
end if
Line 3256... Line 4307...
3256
 
4307
 
3257
        align   4
4308
        align   4
3258
cur_width       dd      80
4309
cur_width       dd      80
-
 
4310
cur_height      dd      25
-
 
4311
saved_width     dd      -1
3259
cur_height      dd      25
4312
saved_height    dd      -1
3260
max_width = 256
4313
max_width = 256
-
 
4314
max_height = 256
-
 
4315
console_data_ptr dd     0
-
 
4316
 
-
 
4317
cursor_x        dd      -1
-
 
4318
cursor_y        dd      -1
-
 
4319
old_cursor_x    dd      -1
Line 3261... Line 4320...
3261
max_height = 256
4320
old_cursor_y    dd      -1
Line 3262... Line 4321...
3262
 
4321
 
3263
active_panel    dd      panel1_data
4322
active_panel    dd      panel1_data
Line 3373... Line 4432...
3373
        dd      panels_OnKey.end
4432
        dd      panels_OnKey.end
3374
        dw      0x1C, 0
4433
        dw      0x1C, 0
3375
        dd      panels_OnKey.enter
4434
        dd      panels_OnKey.enter
3376
        dw      0x3D, 0
4435
        dw      0x3D, 0
3377
        dd      panels_OnKey.f3
4436
        dd      panels_OnKey.f3
-
 
4437
        dw      0x3F, 0
-
 
4438
        dd      panels_OnKey.f5
-
 
4439
        dw      0x3F, 1
-
 
4440
        dd      panels_OnKey.shift_f5
3378
        dw      0x42, 0
4441
        dw      0x42, 0
3379
        dd      panels_OnKey.f8
4442
        dd      panels_OnKey.f8
-
 
4443
        dw      0x43, 0x100
-
 
4444
        dd      alt_f9
3380
        dw      0x44, 0
4445
        dw      0x44, 0
3381
        dd      exit
4446
        dd      exit
-
 
4447
        dw      0x5D, 0
-
 
4448
        dd      panels_OnKey.menu
3382
repeat 9-3+1
4449
repeat 9-3+1
3383
        dw      0x3D+%-1, 0x10
4450
        dw      0x3D+%-1, 0x10
3384
        dd      panels_OnKey.ctrl_f39
4451
        dd      panels_OnKey.ctrl_f39
3385
end repeat
4452
end repeat
3386
        dw      0x3B, 0x100
4453
        dw      0x3B, 0x100
Line 3432... Line 4499...
3432
        dd      viewer_OnKey.home
4499
        dd      viewer_OnKey.home
3433
        dw      0x4F, 0
4500
        dw      0x4F, 0
3434
        dd      viewer_OnKey.end
4501
        dd      viewer_OnKey.end
3435
        dw      0x58, 0
4502
        dw      0x58, 0
3436
        dd      F12
4503
        dd      F12
-
 
4504
        dw      0x43, 0x100
-
 
4505
        dd      alt_f9
3437
        db      0
4506
        db      0
Line 3438... Line 4507...
3438
 
4507
 
3439
dirinfo:
4508
dirinfo:
3440
                dd      1
4509
                dd      1
Line 3451... Line 4520...
3451
.size           dd      0
4520
.size           dd      0
3452
.data           dd      0
4521
.data           dd      0
3453
                db      0
4522
                db      0
3454
.name           dd      0
4523
.name           dd      0
Line -... Line 4524...
-
 
4524
 
-
 
4525
writeinfo:
-
 
4526
.code           dd      2
-
 
4527
.first          dq      0
-
 
4528
.size           dd      0
-
 
4529
.data           dd      0
-
 
4530
                db      0
-
 
4531
.name           dd      0
3455
 
4532
 
3456
attrinfo:
4533
attrinfo:
3457
                dd      5
4534
                dd      5
3458
                dd      0
4535
                dd      0
3459
                dd      0
4536
                dd      0
Line 3491... Line 4568...
3491
dialog_main_color       db      70h
4568
dialog_main_color       db      70h
3492
dialog_border_color     db      70h
4569
dialog_border_color     db      70h
3493
dialog_header_color     db      70h
4570
dialog_header_color     db      70h
3494
dialog_normal_btn_color db      70h
4571
dialog_normal_btn_color db      70h
3495
dialog_selected_btn_color db    30h
4572
dialog_selected_btn_color db    30h
-
 
4573
dialog_edit_color       db      30h
-
 
4574
dialog_unmodified_edit_color db 38h
3496
; Œ¥­î
4575
; Œ¥­î
3497
menu_normal_color       db      3Fh
4576
menu_normal_color       db      3Fh
3498
menu_selected_color     db      0Fh
4577
menu_selected_color     db      0Fh
3499
menu_highlight_color    db      3Eh
4578
menu_highlight_color    db      3Eh
3500
menu_selected_highlight_color db 0Eh
4579
menu_selected_highlight_color db 0Eh
Line 3533... Line 4612...
3533
        .CursorColor            db ?
4612
        .CursorColor            db ?
3534
        .IncludeAttributes      db ?
4613
        .IncludeAttributes      db ?
3535
        .Mask:                  ; ASCIIZ-string
4614
        .Mask:                  ; ASCIIZ-string
3536
end virtual
4615
end virtual
Line -... Line 4616...
-
 
4616
 
3537
 
4617
; all highlight masks must be in lowercase!
3538
highlight_group0:
4618
highlight_group0:
3539
        db      13h
4619
        db      13h
3540
        db      38h
4620
        db      38h
3541
        db      2
4621
        db      2
Line 3588... Line 4668...
3588
        db      3Fh
4668
        db      3Fh
3589
        db      10h
4669
        db      10h
3590
        db      '*',0
4670
        db      '*',0
Line 3591... Line 4671...
3591
 
4671
 
3592
associations:
4672
associations:
3593
        dd      aAsm, tinypad
4673
        dd      aAsm, tinypad, AsmMenu
3594
        dd      aInc, tinypad
4674
        dd      aInc, tinypad, 0
3595
        dd      aTxt, tinypad
4675
        dd      aTxt, tinypad, 0
3596
        dd      aJpg, jpegview
4676
        dd      aJpg, jpegview, 0
3597
        dd      aJpeg, jpegview
4677
        dd      aJpeg, jpegview, 0
3598
        dd      aGif, gifview
4678
        dd      aGif, gifview, GifMenu
3599
        dd      aWav, ac97
4679
        dd      aWav, ac97, 0
3600
        dd      aMp3, ac97
4680
        dd      aMp3, ac97, 0
3601
        dd      aMid, midamp
4681
        dd      aMid, midamp, 0
3602
        dd      aBmp, mv
4682
        dd      aBmp, mv, BmpMenu
3603
        dd      aPng, archer
4683
        dd      aPng, archer, 0
3604
        dd      aRtf, rtfread
4684
        dd      aRtf, rtfread, 0
3605
        dd      a3ds, view3ds
4685
        dd      a3ds, view3ds, 0
3606
        dd      aLif, life2
4686
        dd      aLif, life2, 0
Line 3607... Line 4687...
3607
associations_end:
4687
associations_end:
3608
 
4688
 
3609
aAsm db 'asm',0
4689
aAsm db 'asm',0
Line 3638... Line 4718...
3638
view3ds db '/rd/1/3d/view3ds',0
4718
view3ds db '/rd/1/3d/view3ds',0
Line 3639... Line 4719...
3639
 
4719
 
3640
aLif db 'lif',0
4720
aLif db 'lif',0
Line -... Line 4721...
-
 
4721
life2 db '/rd/1/demos/life2',0
-
 
4722
 
-
 
4723
AsmMenu:
-
 
4724
        dd      aEdit, tinypad
-
 
4725
        dd      aCompile, fasm
-
 
4726
        dd      0
-
 
4727
BmpMenu:
-
 
4728
        dd      aView, mv
-
 
4729
        dd      aEdit, animage
-
 
4730
        dd      0
-
 
4731
GifMenu:
-
 
4732
        dd      aView, gifview
-
 
4733
        dd      aEdit, animage
-
 
4734
        dd      0
-
 
4735
 
-
 
4736
if lang eq en
-
 
4737
aView   db      '&View',0
-
 
4738
aCompile db     '&Compile',0
-
 
4739
aEdit   db      '&Edit',0
-
 
4740
else
-
 
4741
aView   db      '&à®á¬®âà',0
-
 
4742
aCompile db     '&Š®¬¯¨«¨à®¢ âì',0
-
 
4743
aEdit   db      '&¥¤ ªâ®à',0
-
 
4744
end if
-
 
4745
 
-
 
4746
fasm    db      '/rd/1/develop/fasm',0
3641
life2 db '/rd/1/demos/life2',0
4747
animage db      '/rd/1/animage',0
Line 3642... Line 4748...
3642
 
4748
 
Line 3643... Line 4749...
3643
bConfirmDelete  db      1
4749
bConfirmDelete  db      1
3644
 
4750
 
3645
; ‡¤¥áì § ª ­ç¨¢ îâáï ª®­ä¨£ãà æ¨®­­ë¥ ¤ ­­ë¥
-
 
Line 3646... Line 4751...
3646
 
4751
; ‡¤¥áì § ª ­ç¨¢ îâáï ª®­ä¨£ãà æ¨®­­ë¥ ¤ ­­ë¥
3647
bWasE0          db      0
4752
 
3648
ctrlstate       db      0
4753
bWasE0          db      0
3649
MemForImage     dd      0
4754
ctrlstate       db      0
Line 3695... Line 4800...
3695
.cnl_x2 dd      ?
4800
.cnl_x2 dd      ?
3696
        dd      2
4801
        dd      2
3697
        dd      aCancel
4802
        dd      aCancel
3698
.flags2 dd      0
4803
.flags2 dd      0
Line -... Line 4804...
-
 
4804
 
-
 
4805
; ¤¨ «®£ ª®¯¨à®¢ ­¨ï
-
 
4806
copy_dlgdata:
-
 
4807
        dd      0
-
 
4808
.x      dd      -1
-
 
4809
.y      dd      -1
-
 
4810
.width  dd      ?
-
 
4811
.height dd      4
-
 
4812
        dd      4
-
 
4813
        dd      2
-
 
4814
        dd      aCopyCaption
-
 
4815
.main_color db ?
-
 
4816
.border_color db ?
-
 
4817
.header_color db ?
-
 
4818
        db      0
-
 
4819
        dd      0
-
 
4820
        dd      0
-
 
4821
        dd      4
-
 
4822
; áâப  'Š®¯¨à®¢ âì "%s" ¢:'
-
 
4823
        dd      1
-
 
4824
        dd      1,0
-
 
4825
.width2 dd      ?
-
 
4826
        dd      0
-
 
4827
        dd      CopySourceTextBuf
-
 
4828
        dd      0
-
 
4829
; ¯®«¥ । ªâ¨à®¢ ­¨ï á ¨¬¥­¥¬ ä ©« /¯ ¯ª¨ ­ §­ ç¥­¨ï
-
 
4830
        dd      3
-
 
4831
        dd      1,1
-
 
4832
.width3 dd      ?
-
 
4833
        dd      1
-
 
4834
        dd      CopyDestEditBuf
-
 
4835
.flags0 dd      0
-
 
4836
; ª­®¯ª  "ª®¯¨à®¢ âì"
-
 
4837
.copy_btn:
-
 
4838
        dd      2
-
 
4839
.copy_x1 dd     ?
-
 
4840
        dd      3
-
 
4841
.copy_x2 dd     ?
-
 
4842
        dd      3
-
 
4843
        dd      aCopy
-
 
4844
.flags1 dd      18h
-
 
4845
; ª­®¯ª  "®â¬¥­¨âì"
-
 
4846
        dd      2
-
 
4847
.cnl_x1 dd      ?
-
 
4848
        dd      3
-
 
4849
.cnl_x2 dd      ?
-
 
4850
        dd      3
-
 
4851
        dd      aCancelB
-
 
4852
.flags2 dd      8
-
 
4853
 
3699
 
4854
 
3700
if lang eq ru
4855
if lang eq ru
3701
aDeleteCaption          db      '“¤ «¥­¨¥',0
4856
aDeleteCaption          db      '“¤ «¥­¨¥',0
3702
aConfirmDeleteText      db      '‚ë å®â¨â¥ 㤠«¨âì ',0
4857
aConfirmDeleteText      db      '‚ë å®â¨â¥ 㤠«¨âì ',0
3703
aDeleteFolder           db      '¯ ¯ªã',0
4858
aDeleteFolder           db      '¯ ¯ªã',0
3704
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
4859
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
3705
aDeleteFile             db      'ä ©«',0
4860
aDeleteFile             db      'ä ©«',0
3706
aDelete                 db      ' “¤ «¨âì ',0
4861
aDelete                 db      ' “¤ «¨âì ',0
3707
aDeleteLength = $ - aDelete - 1
4862
aDeleteLength = $ - aDelete - 1
3708
aCancel                 db      ' Žâ¬¥­¨âì ',0
4863
aCancel                 db      ' Žâ¬¥­¨âì ',0
-
 
4864
aCancelLength = $ - aCancel - 1
-
 
4865
aCancelB                db      '[ Žâ¬¥­¨âì ]',0
-
 
4866
aCancelBLength = $ - aCancelB - 1
-
 
4867
aCopyCaption            db      'Š®¯¨à®¢ ­¨¥',0
-
 
4868
aCopy                   db      '[ Š®¯¨à®¢ âì ]',0
-
 
4869
aCopyLength = $ - aCopy - 1
-
 
4870
aCopy1                  db      'Š®¯¨à®¢ âì "',0
3709
aCancelLength = $ - aCancel - 1
4871
aCopy2                  db      '" ¢:',0
3710
else
4872
else
3711
aDeleteCaption          db      'Delete',0
4873
aDeleteCaption          db      'Delete',0
3712
aConfirmDeleteText      db      'Do you wish to delete ',0
4874
aConfirmDeleteText      db      'Do you wish to delete ',0
3713
aDeleteFolder           db      'the folder',0
4875
aDeleteFolder           db      'the folder',0
3714
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
4876
aConfirmDeleteTextMax = $ - aConfirmDeleteText - 2
3715
aDeleteFile             db      'the file',0
4877
aDeleteFile             db      'the file',0
3716
aDelete                 db      ' Delete ',0
4878
aDelete                 db      ' Delete ',0
3717
aDeleteLength = $ - aDelete - 1
4879
aDeleteLength = $ - aDelete - 1
3718
aCancel                 db      ' Cancel ',0
4880
aCancel                 db      ' Cancel ',0
-
 
4881
aCancelLength = $ - aCancel - 1
-
 
4882
aCancelB                db      '[ Cancel ]',0
-
 
4883
aCancelBLength = $ - aCancelB - 1
-
 
4884
aCopyCaption            db      'Copy',0
-
 
4885
aCopy                   db      '[ Copy ]',0
-
 
4886
aCopyLength = $ - aCopy - 1
-
 
4887
aCopy1                  db      'Copy "',0
3719
aCancelLength = $ - aCancel - 1
4888
aCopy2                  db      '" to:',0
Line 3720... Line 4889...
3720
end if
4889
end if
3721
 
4890
 
3722
execinfo:
4891
execinfo:
Line 3768... Line 4937...
3768
panel2_nfa      dd      ?
4937
panel2_nfa      dd      ?
3769
panel2_numfiles dd      ?
4938
panel2_numfiles dd      ?
3770
panel2_files    dd      ?
4939
panel2_files    dd      ?
3771
panel2_dir      rb      1024
4940
panel2_dir      rb      1024
Line 3772... Line 4941...
3772
 
4941
 
Line 3773... Line 4942...
3773
console_data    rb      max_width*max_height*2
4942
;console_data    rb      max_width*max_height*2
3774
 
4943
 
Line 3775... Line 4944...
3775
cur_header      rb      max_width
4944
cur_header      rb      max_width
3776
tmp             dd      ?
4945
tmp             dd      ?
Line -... Line 4946...
-
 
4946
 
-
 
4947
skinh           dd      ?
-
 
4948
std_colors      rd      10
-
 
4949
 
-
 
4950
min_y           dd      ?
-
 
4951
max_y           dd      ?
-
 
4952
min_x           dd      ?
3777
 
4953
max_x           dd      ?
3778
skinh           dd      ?
4954
used_width      dd      ?
3779
std_colors      rd      10
4955
used_height     dd      ?
3780
 
4956
 
3781
column_left     dd      ?
4957
column_left     dd      ?
Line 3787... Line 4963...
3787
scrpos          dq      ?
4963
scrpos          dq      ?
3788
viewer_right_side dq    ?
4964
viewer_right_side dq    ?
Line 3789... Line 4965...
3789
 
4965
 
3790
saved_file_name:
4966
saved_file_name:
-
 
4967
procinfo        rb      1024
Line 3791... Line 4968...
3791
procinfo        rb      1024
4968
lower_file_name = procinfo + 512
3792
 
4969
 
Line 3793... Line 4970...
3793
driveinfo       rb      32+304
4970
driveinfo       rb      32+304
3794
tmpname         rb      32
4971
tmpname         rb      32
3795
 
4972
 
3796
screens         dd      ?
4973
screens         dd      ?
Line 3797... Line 4974...
3797
num_screens     dd      ?
4974
num_screens     dd      ?
-
 
4975
active_screen_vtable dd ?
-
 
4976
active_screen_data dd   ?
-
 
4977
 
-
 
4978
aConfirmDeleteTextBuf   rb      aConfirmDeleteTextMax + 1
-
 
4979
CopySourceTextBuf       rb      512
-
 
4980
CopyDestEditBuf         rb      12+512+1
-
 
4981
.length = $ - CopyDestEditBuf - 9
-
 
4982
 
-
 
4983
align 4
Line 3798... Line 4984...
3798
active_screen_vtable dd ?
4984
layout          rb      128
3799
active_screen_data dd   ?
4985
 
3800
 
4986
copy_buffer_size = 32768
3801
aConfirmDeleteTextBuf   rb      aConfirmDeleteTextMax + 1
4987
copy_buffer     rb      copy_buffer_size
3802
 
-
 
3803
; stack
-
 
3804
        align   4
-
 
Line 3805... Line 4988...
3805
        rb      512
4988