7,8 → 7,8 |
dd stacktop |
dd 0, app_path |
|
version equ '0.5' |
version_dword equ 0*10000h + 50 |
version equ '0.6' |
version_dword equ 0*10000h + 60 |
|
min_width = 54 |
max_width = 255 |
20,6 → 20,7 |
include 'sort.inc' |
include 'kglobals.inc' |
include 'dialogs.inc' |
include 'search.inc' |
include 'viewer.inc' |
include 'editor.inc' |
include 'tools.inc' |
29,14 → 30,18 |
cursor_big_size = font_height |
|
start: |
mov edi, tolower_table |
push 'A' |
pop ecx |
mov edi, identical_table |
mov ecx, 0x100 |
xor eax, eax |
@@: |
stosb |
inc eax |
loop @b |
mov cl, 'A' |
@@: |
stosb |
inc eax |
loop @b |
add al, 0x20 |
mov cl, 'Z'-'A'+1 |
@@: |
68,6 → 73,41 |
inc eax |
loop @b |
mov byte [edi-256+'ð'], 'ñ' |
mov cl, 'A' |
inc eax |
rep stosb |
mov cl, 'Z'-'A'+1 |
dec eax |
rep stosb |
mov cl, 'a'-'Z'-1 |
inc eax |
rep stosb |
mov byte [edi-'a'+'_'], 0 |
mov cl, 'z'-'a'+1 |
dec eax |
rep stosb |
mov cl, ''-'z'-1 |
inc eax |
rep stosb |
mov cl, '¯'-''+1 |
dec eax |
rep stosb |
mov cl, 'à'-'¯'-1 |
inc eax |
rep stosb |
mov cl, 'ñ'-'à'+1 |
dec eax |
rep stosb |
mov cl, 256-'ñ'-1 |
inc eax |
rep stosb |
mov edi, SearchStringEditBuf |
mov eax, SearchStringEditBuf.length |
stosd |
xor eax, eax |
stosd |
stosd |
stosb |
push 68 |
pop eax |
push 11 |
116,6 → 156,7 |
mov ecx, panels_vtable |
mov [eax], ecx |
mov [active_screen_vtable], ecx |
mov [active_screen_keybar], keybar_panels |
; load libini.obj and kfar.ini |
mov eax, libini_name |
mov esi, ini_import |
294,12 → 335,13 |
add ebx, 3 |
and ebx, not 3 |
mov [EditPlugInfo], ebx |
add ebx, editor_line.plugdata |
imul ebx, max_height |
add ebx, editor_data.basesize + 0xFFF |
shr ebx, 12 |
mov [EditDataSize], ebx |
.noini: |
mov eax, [EditPlugInfo] |
add eax, editor_line.plugdata |
imul eax, max_height |
add eax, editor_data.basesize + 0xFFF |
shr eax, 12 |
mov [EditDataSize], eax |
mov esi, def_left_dir |
mov edi, panel1_dir |
@@: |
327,9 → 369,7 |
call read_folder |
call draw_panel |
event: |
push 10 |
pop eax |
int 40h |
call get_event |
dec eax |
jz redraw |
dec eax |
418,6 → 458,33 |
end if |
or eax, -1 |
int 40h |
|
get_event: |
push ebx |
mov ebx, [idle_interval] |
cmp ebx, -1 |
jz .infinite |
push 23 |
pop eax |
int 40h |
pop ebx |
test eax, eax |
jnz .ret |
mov ebp, [active_screen_data] |
mov eax, [active_screen_vtable] |
mov eax, [eax+screen_vtable.OnIdle] |
test eax, eax |
jz get_event |
call eax |
jmp get_event |
.infinite: |
pop ebx |
push 10 |
pop eax |
int 40h |
.ret: |
ret |
|
redraw: |
; query kbd state from OS |
mov al, 66 |
1034,6 → 1101,12 |
mov [active_screen], eax |
mov [active_screen_vtable], edx |
mov [active_screen_data], ebp |
or [idle_interval], -1 |
mov edx, [edx+screen_vtable.keybar] |
test edx, edx |
jz @f |
mov [active_screen_keybar], edx |
@@: |
jmp draw_keybar |
|
next_screen: |
1068,16 → 1141,29 |
.norealloc: |
pop ecx |
call pgfree |
and [active_screen], 0 |
dec [active_screen] |
|
change_screen: |
pusha |
or [idle_interval], -1 |
mov eax, [active_screen] |
mov esi, [screens] |
mov ebp, [esi+eax*8+4] |
mov eax, [esi+eax*8] |
push eax ebp |
mov eax, [eax+screen_vtable.OnActivate] |
test eax, eax |
jz @f |
call eax |
@@: |
pop ebp eax |
mov [active_screen_vtable], eax |
mov [active_screen_data], ebp |
mov edx, [eax+screen_vtable.keybar] |
test edx, edx |
jz @f |
mov [active_screen_keybar], edx |
@@: |
call draw_keybar |
mov [cursor_size], cursor_normal_size |
call [eax+screen_vtable.OnRedraw] |
2557,6 → 2643,12 |
jmp .copydone |
|
.f3: |
mov eax, [ebp + panel1_files - panel1_data] |
mov ecx, [eax+ecx*4] |
test byte [ecx], 10h |
jnz .ret2 |
lea esi, [ebp + panel1_dir - panel1_data] |
xor eax, eax |
call view_file |
.ret2: |
ret |
2694,6 → 2786,7 |
stosb |
test al, al |
jnz @b |
.ctrl_r.doread: |
push [ebp + panel1_start - panel1_data] |
call read_folder |
pop [ebp + panel1_start - panel1_data] |
3855,8 → 3948,7 |
or al, 4 |
@@: |
imul eax, 6*12 |
mov esi, [active_screen_vtable] |
mov esi, [esi+screen_vtable.keybar] |
mov esi, [active_screen_keybar] |
add esi, eax |
xor ecx, ecx |
inc ecx |
7005,6 → 7097,8 |
cur_cursor_pos dd -1 |
old_cursor_pos dd -1 |
|
idle_interval dd -1 |
|
active_panel dd panel1_data |
|
associations dd 0 |
7041,6 → 7135,8 |
virtual at 0 |
screen_vtable: |
.OnRedraw dd ? |
.OnActivate dd ? |
.OnIdle dd ? |
.OnKey dd ? |
.keybar dd ? |
.getname dd ? |
7050,6 → 7146,8 |
|
panels_vtable: |
dd panels_OnRedraw |
dd 0 |
dd 0 |
dd panels_OnKey |
dd keybar_panels |
dd panels_getname |
7058,6 → 7156,8 |
|
viewer_vtable: |
dd viewer_OnRedraw |
dd 0 |
dd 0 |
dd viewer_OnKey |
dd keybar_viewer |
dd viewer_getname |
7066,6 → 7166,8 |
|
editor_vtable: |
dd editor_OnRedraw |
dd 0 |
dd 0 |
dd editor_OnKey |
dd keybar_editor |
dd editor_getname |
7072,6 → 7174,16 |
dd editor_OnExit |
dd editor_IsHandleUsed |
|
filesearch_vtable: |
dd filesearch_OnRedraw |
dd filesearch_OnActivate |
dd filesearch_OnIdle |
dd filesearch_OnKey |
dd 0 |
dd filesearch_getname |
dd filesearch_OnExit |
dd filesearch_IsHandleUsed |
|
; additions to this table require changes in tools.inc::get_error_msg |
errors1: |
dd error0msg |
7222,6 → 7334,8 |
dd panels_OnKey.shift_f5 |
dw 0x41, 0 |
dd panels_OnKey.f7 |
dw 0x41, 0x100 |
dd panels_OnKey.alt_f7 |
dw 0x42, 0 |
dd panels_OnKey.f8 |
dw 0x43, 0x100 |
7295,6 → 7409,10 |
dd viewer_OnKey.exit |
dw 0x3E, 0 |
dd viewer_OnKey.f4 |
dw 0x41, 0 |
dd viewer_OnKey.f7 |
dw 0x41, 1 |
dd viewer_OnKey.shift_f7 |
dw 0x42, 0 |
dd viewer_OnKey.f8 |
dw 0x42, 1 |
7318,6 → 7436,10 |
dd editor_OnKey.backspace |
dw 0x3C, 0 |
dd editor_OnKey.f2 |
dw 0x41, 0 |
dd editor_OnKey.f7 |
dw 0x41, 1 |
dd editor_OnKey.shift_f7 |
dw 0x43, 0x100 |
dd alt_f9 |
dw 0x44, 0 |
7429,6 → 7551,9 |
dialog_unmodified_edit_color db 38h |
dialog_normal_btn_color db 70h |
dialog_selected_btn_color db 30h |
dialog_list_color db 70h |
dialog_selected_list_color db 0Fh |
dialog_scroll_list_color db 70h |
; ।ã¯à¥¦¤¥¨ï ¨ ®è¨¡ª¨ |
warning_colors: |
; !!! ¤®«¦ë ¡ëâì ⥠¦¥ ¯®«ï ¨ ¢ ⮬ ¦¥ ¯®à浪¥, çâ® ¨ ¤«ï ®¡ëçëå ¤¨ «®£®¢ !!! |
7439,6 → 7564,9 |
warning_unmodified_edit_color db 38h |
warning_normal_btn_color db 4Fh |
warning_selected_btn_color db 70h |
warning_list_color db 3Fh |
warning_selected_list_color db 70h |
warning_scroll_list_color db 3Fh |
; ¥î |
menu_normal_color db 3Fh |
menu_selected_color db 0Fh |
7456,6 → 7584,7 |
cmdbar_prefix_color db 7 |
; à®á¬®âà騪 |
view_normal_color db 1Bh |
view_selected_color db 30h |
view_status_color db 30h |
view_arrows_color db 1Eh |
; ¥¤ ªâ®à |
7694,6 → 7823,237 |
dd quick_search_buf |
dd 1Ch |
|
; ¤¨ «®£ ¯®¨áª ¢ ä ©«¥ ¤«ï ¯à®á¬®âà騪 ¨ । ªâ®à |
find_in_file_dlgdata: |
dd 1 |
.x dd -1 |
.y dd -1 |
.width dd ? |
.height dd 7 |
dd 4, 2 |
dd aSearch |
dd ?, ? |
dd 0, 0 |
dd 8 |
; âப "᪠âì" |
dd 1 |
dd 1,0,aSearchForLen,0 |
dd aSearchFor |
dd 0 |
; ¯®«¥ । ªâ¨à®¢ ¨ï á ⥪á⮬ ¤«ï ¯®¨áª |
dd 3 |
dd 1,1 |
.width2 dd ? |
dd 1 |
dd SearchStringEditBuf |
.flags0 dd 0xC |
; £®à¨§®â «ìë© à §¤¥«¨â¥«ì |
dd 4 |
dd -1,2 |
dd -1,2 |
dd 0 |
dd 0 |
; ä« ¦®ª "ç¨âë¢ âì ॣ¨áâà" |
dd 5 |
dd 1,3 |
dd -1,3 |
dd aCaseSensitive |
.flags_case dd 18h ; default: search is case sensitive |
; ä« ¦®ª "®«ìª® æ¥«ë¥ á«®¢ " |
dd 5 |
dd 1,4 |
dd -1,4 |
dd aWholeWords |
.flags_whole dd 8 ; default: do NOT search whole words only |
; £®à¨§®â «ìë© à §¤¥«¨â¥«ì |
dd 4 |
dd -1,5 |
dd -1,5 |
dd 0 |
dd 0 |
; ª®¯ª "᪠âì" |
.search_btn: |
dd 2 |
.search_x1 dd ? |
dd 6 |
.search_x2 dd ? |
dd 6 |
dd aSearchB |
.flags1 dd 18h |
; ª®¯ª "®â¬¥¨âì" |
dd 2 |
.cnl_x1 dd ? |
dd 6 |
.cnl_x2 dd ? |
dd 6 |
dd aCancelB |
.flags2 dd 8 |
|
; ¯¥à¢ë© ¤¨ «®£ ¯®¨áª ¢ ä ©« å (§ ¯à®á) |
filesearch_query_template: |
dd 1 |
.x dd ? |
.y dd ? |
.width dd ? |
.height dd 9 |
dd 4, 2 |
dd aFileSearch |
dd ? |
dd 0 |
dd 0, 0 |
dd 10 |
; áâப -¯à¨£« 襨¥ ¤«ï ¢¢®¤ ¬ ᪨ |
dd 1 |
dd 1,0,aFileMasksLen,0 |
dd aFileMasks |
dd 0 |
; ¯®«¥ ¢¢®¤ ¤«ï ¬ ᪨ |
dd 3 |
dd 1, 1 |
.width2 dd ? |
dd 1 |
.editptr1 dd ? |
dd 0xC |
; áâப -¯à¨£« 襨¥ ¤«ï ⥪áâ ¯®¨áª |
dd 1 |
dd 1,2,aContainingTextLen,2 |
dd aContainingText |
dd 0 |
; ¯®«¥ ¢¢®¤ ¤«ï ⥪áâ ¯®¨áª |
dd 3 |
dd 1, 3 |
.width3 dd ? |
dd 3 |
.editptr2 dd ? |
dd 8 |
; £®à¨§®â «ìë© à §¤¥«¨â¥«ì |
dd 4 |
dd -1,4 |
dd -1,4 |
dd 0 |
dd 0 |
; ä« ¦®ª "ç¨âë¢ âì ॣ¨áâà" |
dd 5 |
dd 1,5 |
dd -1,5 |
dd aCaseSensitive |
.flags_case dd ? ; will be initialized from find_in_file_dlgdata |
; ä« ¦®ª "®«ìª® æ¥«ë¥ á«®¢ " |
dd 5 |
dd 1,6 |
dd -1,6 |
dd aWholeWords |
.flags_whole dd ? ; will be initialized from find_in_file_dlgdata |
; £®à¨§®â «ìë© à §¤¥«¨â¥«ì |
dd 4 |
dd -1,7 |
dd -1,7 |
dd 0 |
dd 0 |
; ª®¯ª "᪠âì" |
.search_btn: |
dd 2 |
.search_x1 dd ? |
dd 8 |
.search_x2 dd ? |
dd 8 |
dd aSearchB |
dd 18h |
; ª®¯ª "®â¬¥¨âì" |
dd 2 |
.cnl_x1 dd ? |
dd 8 |
.cnl_x2 dd ? |
dd 8 |
dd aCancelB |
dd 8 |
.size = $ - filesearch_query_template |
|
; ¢â®à®© ¤¨ «®£ ¯®¨áª ¢ ä ©« å (᪠¨à®¢ ¨¥) |
filesearch_search_template: |
dd 1 |
.x dd ? |
.y dd ? |
.width dd ? |
.height dd ? |
dd 4, 2 |
.caption dd ? |
dd ? |
dd 0 |
dd 0, 0 |
dd 9 |
; ᯨ᮪ ©¤¥ëå ä ©«®¢ |
dd 6 |
dd 0, 0 |
.width1 dd ? |
.height1 dd ? |
.data1 dd ? |
dd 0 |
; £®à¨§®â «ìë© à §¤¥«¨â¥«ì |
dd 4 |
dd -1 |
.y2 dd ? |
dd -1 |
dd ? |
dd 0, 0 |
; áâப "®¨áª <string> ¢:" «¨¡® "®¨áª § ª®ç¥..." |
dd 1 |
dd 1 |
.y3 dd ? |
.width3 dd ? |
dd ? |
.data3 dd ? |
dd 0 |
; áâப á ⥪ã饩 ¯ ¯ª®© |
dd 1 |
.x4 dd ? |
.y4 dd ? |
.width4 dd ? |
dd ? |
.data4 dd ? |
dd 0 |
; £®à¨§®â «ìë© à §¤¥«¨â¥«ì |
dd 4 |
dd -1 |
.y5 dd ? |
dd -1 |
dd ? |
dd 0, 0 |
; ª®¯ª¨ |
.btn1: |
dd 2 |
.btn1x1 dd ? |
.btn1y dd ? |
.btn1x2 dd ? |
dd ? |
dd aNewSearch |
dd 8 |
.btn2: |
dd 2 |
.btn2x1 dd ? |
.btn2y dd ? |
.btn2x2 dd ? |
dd ? |
dd aGoto |
dd 1Ch |
.btn3: |
dd 2 |
.btn3x1 dd ? |
.btn3y dd ? |
.btn3x2 dd ? |
dd ? |
dd aView |
dd 8 |
.btn4: |
dd 2 |
.btn4x1 dd ? |
.btn4y dd ? |
.btn4x2 dd ? |
dd ? |
dd aCancelB2 |
dd 8 |
.size = $ - filesearch_search_template |
|
RetryOrCancelBtn: |
dd aRetry |
dd a_Cancel |
7708,18 → 8068,23 |
dd a_Cancel |
DeleteErrorBtn: |
dd aRetry |
SkipOrCancelBtn: |
dd aSkip |
dd aSkipAll |
dd a_Cancel |
ContinueBtn: |
dd aContinue |
|
EditorExitBtn: |
dd aSave |
dd aDontSave |
dd aContinueEdit |
YesOrNoBtn: |
dd aYes |
dd aNo |
|
aCannotOpenFile_ptr dd aCannotOpenFile |
aCannotCreateThread_ptr dd aCannotCreateThread |
ConfirmCancelMsg dd aConfirmCancel |
EditConfigErr_ptr: |
dd aEditConfigErr1 |
dd aEditConfigErr2 |
7731,6 → 8096,8 |
aDeleteFile db ' ä ©«',0 |
aCancelB db '[ ⬥¨âì ]',0 |
aCancelBLength = $ - aCancelB - 1 |
aCancelB2 db '[ ⬥ ]',0 |
aCancelB2Length = $ - aCancelB2 - 1 |
aCopyCaption db '®¯¨à®¢ ¨¥',0 |
aCopy db '[ ®¯¨à®¢ âì ]',0 |
aCopyLength = $ - aCopy - 1 |
7745,6 → 8112,8 |
a_Delete db '¤ «¨âì',0 |
aSkip db 'யãáâ¨âì',0 |
aSkipAll db 'யãáâ¨âì ¢á¥',0 |
aYes db ' ',0 |
aNo db '¥â',0 |
error0msg db 'âà ®... ¥â ®è¨¡ª¨',0 |
error1msg db 'âà ®... ¥ ®¯à¥¤¥«¥ ¡ § ¨/¨«¨ à §¤¥« ¦ñá⪮£® ¤¨áª ',0 |
error2msg db 'ãªæ¨ï ¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï ¤ ®© ä ©«®¢®© á¨á⥬ë',0 |
7793,8 → 8162,32 |
aSelect db '®¬¥â¨âì',0 |
aDeselect db 'ïâì',0 |
aCannotOpenFile db '訡ª ¯à¨ ®âªàë⨨ ä ©« ',0 |
aCannotCreateThread db '訡ª ¯à¨ ᮧ¤ ¨¨ ¯®â®ª ',0 |
aCannotSetFolder db '¥ ¬®£ã § ©â¨ ¢ ¯ ¯ªã',0 |
aSearch db '®¨áª',0 |
aSearchB db '[ ᪠âì ]',0 |
aSearchBLength = $ - aSearchB - 1 |
aSearchFor db '᪠âì',0 |
aSearchForLen = $ - aSearchFor - 1 |
aCaseSensitive db 'ç¨âë¢ âì ॣ¨áâà',0 |
aWholeWords db '®«ìª® æ¥«ë¥ á«®¢ ',0 |
aReverseSearch db '¡à âë© ¯®¨áª',0 |
aStringNotFound db 'âப ¥ ©¤¥ ',0 |
aFileSearch db '®¨áª ä ©« ',0 |
aFileMasks db '¤ ¨«¨ ¥áª®«ìª® ¬ ᮪ ä ©«®¢:',0 |
aFileMasksLen = $ - aFileMasks - 1 |
aContainingText db '®¤¥à¦ é¨å ⥪áâ:',0 |
aContainingTextLen = $ - aContainingText - 1 |
aSearchingIn db '®¨áª "" ¢:',0 |
aSearchingInLen = $ - aSearchingIn - 1 |
aSearchDone db '®¨áª § ª®ç¥. ©¤¥® ? ä ©«(®¢)',0 |
aSearchDoneLen = $ - aSearchDone - 1 |
aNewSearch db '[ ®¢ë© ¯®¨áª ]',0 |
aNewSearchLen = $ - aNewSearch - 1 |
aGoto db '[ ¥à¥©â¨ ]',0 |
aGotoLen = $ - aGoto - 1 |
aView db '[ ¬®âà¥âì ]',0 |
aViewLen = $ - aView - 1 |
aEditConfigErr1 db '訡ª ¢ ª®ä¨£ãà 樨 ¯« £¨®¢ ¤«ï । ªâ®à .',0 |
aEditConfigErr2 db '®¯à®¡ã©â¥ ã¡à âì «¨è¨¥ ¯« £¨ë.',0 |
aEditNoMemory db ' ©« ᫨誮¬ ¢¥«¨ª ¤«ï § £à㧪¨ ¢ । ªâ®à.',0 |
7806,6 → 8199,9 |
aDontSave db '¥ á®åà ïâì',0 |
aContinueEdit db 'த®«¦¨âì । ªâ¨à®¢ ¨¥',0 |
aCannotSaveToPlugin db '®åà ¥¨¥ ä ©«®¢ ¯ ¥«ïå ¯« £¨®¢ ¥ ¯®¤¤¥à¦¨¢ ¥âáï',0 |
aCannotSearchOnPlugin db '®¨áª ¯ ¥«ïå ¯« £¨®¢ ¥ ¯®¤¤¥à¦¨¢ ¥âáï',0 |
aCancelled db '¥©á⢨¥ ¡ë«® ¯à¥à¢ ®',0 |
aConfirmCancel db 'ë ¤¥©áâ¢¨â¥«ì® å®â¨â¥ ®â¬¥¨âì ¤¥©á⢨¥?',0 |
else |
aDeleteCaption db 'Delete',0 |
aConfirmDeleteText db 'Do you wish to delete',0 |
7832,6 → 8228,8 |
a_Delete db 'Delete',0 |
aSkip db 'Skip',0 |
aSkipAll db 'Skip all',0 |
aYes db 'Yes',0 |
aNo db 'No',0 |
error0msg db 'Strange... No error',0 |
error1msg db 'Strange... Hard disk base and/or partition not defined',0 |
error2msg db 'The file system does not support this function',0 |
7880,8 → 8278,30 |
aSelect db 'Select',0 |
aDeselect db 'Deselect',0 |
aCannotOpenFile db 'Cannot open the file',0 |
aCannotSetFolder db 'Cannot enter to folder',0 |
aCannotCreateThread db 'Cannot create a thread',0 |
aCannotSetFolder db 'Cannot enter to the folder',0 |
aSearch db 'Search',0 |
aSearchB db '[ Search ]',0 |
aSearchBLength = $ - aSearchB - 1 |
aSearchFor db 'Search for',0 |
aSearchForLen = $ - aSearch - 1 |
aCaseSensitive db 'Case sensitive',0 |
aWholeWords db 'Whole words',0 |
aReverseSearch db 'Reverse search',0 |
aStringNotFound db 'Could not find the string',0 |
aFileSearch db 'Find file',0 |
aFileMasks db 'A file mask or several file masks:',0 |
aContainingText db 'Containing text:',0 |
aSearchingIn db 'Searching "" in:',0 |
aSearchingInLen = $ - aSearchingIn - 1 |
aSearchDone db 'Search done. Found ? file(s)',0 |
aSearchDoneLen = $ - aSearchDone - 1 |
aNewSearch db '[ New search ]',0 |
aNewSearchLen = $ - aNewSearch - 1 |
aGoto db '[ Go to ]',0 |
aGotoLen = $ - aGoto - 1 |
aView db '[ View ]',0 |
aViewLen = $ - aView - 1 |
aEditConfigErr1 db 'Error in configuration of plugins for the editor.',0 |
aEditConfigErr2 db 'Try to remove unnecessary plugins.',0 |
aLine db ' Line' |
7892,6 → 8312,8 |
aDontSave db 'Do not save',0 |
aContinueEdit db 'Continue editing',0 |
aCannotSaveToPlugin db 'Saving is not supported for plugin panels',0 |
aCancelled db 'Operation has been interrupted',0 |
aConfirmCancel db 'Do you really want to cancel it?',0 |
end if |
|
aOk db 'OK',0 |
8263,6 → 8685,7 |
num_screens dd ? |
active_screen_vtable dd ? |
active_screen_data dd ? |
active_screen_keybar dd ? |
|
default_attr dd ? |
left_dotdot_entry rb 40+4 ; 40 bytes for attributes + '..' |
8273,12 → 8696,20 |
CopyDestEditBuf rb 12+512+1 |
.length = $ - CopyDestEditBuf - 13 |
|
SearchStringEditBuf rb 12 |
SearchString rb 253+1 |
SearchStringEditBuf.length = $ - SearchString - 1 |
db ? ; used for output (string -> "string") |
|
enter_string_buf rb 12+512+1 |
|
bMemForImageValidData db ? |
|
align 4 |
identical_table rb 256 |
tolower_table rb 256 |
isspace_table rb 256 |
composite_table rb 256 |
layout rb 128 |
|
copy_buffer_size = 65536 |