prNewfile:
        mov dword [zbuf2],0
        mov byte [zbuf2],' '
        invoke  SendMessage,[hwnd],WM_SETTEXT,0,zbuf2
        mov eax,path2file
        cmp byte [eax],0
        jnz .1
        ;add eax,9 ;-9
	mov byte [path2file-1],'\'
        jmp .2
.1:     inc eax
        cmp byte [eax],0
        jnz .1

        mov edx,eax
.1b:    dec edx
        cmp byte [edx],0 ;edx,path2file
        jbe .2
        cmp byte [edx],'\'
        jnz .1b
        inc edx
        mov eax,edx

.2:     movups xmm0,xword [txtNewFile]
        movups  xword [eax],xmm0
        inc byte [txtNewFile+4]
        cmp byte [txtNewFile+4],'9'
        jbe .3
        inc byte [txtNewFile+3]
        mov byte [txtNewFile+4],'0'
.3:
        invoke SetWindowTextA,[mhwnd],path2file
ret

txtNewFile db 'new00.txt',0

prClearCombo: invoke SendMessage,[ComboList],dword CB_RESETCONTENT,dword 0,0
ret

macro copyDoznk from,to,znk { local l1,l2,ll
l1:   mov dl,[from]
      cmp dl,znk
      jz  ll
      mov [to],dl
      inc to
      inc from
      jmp l1
ll:
}
macro copyxmmm from,to { local .v
               .v:     mov bh,[from]
                       mov [to],bh
                       inc to
                       inc from
                       cmp from,edx
                       jb  .v

}
xmm@tmul  db 'primem   0,',0
xmm@tmulb db 13,10,'addss xmm7,xmm0',13,10,0
;xmm@tbegin db 'xorps xmm6,xmm6',13,10,'mov eax,1.0',13,10,'movd xmm7,eax',13,10,0
xmm@tbegin db 'xorps xmm7,xmm7',13,10,0
xmm@tplus db 'addss xmm7,[',0
xmm@tminus db 'subss xmm7,[',0
xm@copy@proc: push ecx edx
      copyDoznk eax,edi,0
      pop edx ecx
ret

xm@copy@proc2: push ecx edx
      copyDoznk eax,edi,0
      inc byte [xmm@tmul+9]
l1:   mov dl,[ecx]
;separate
      cmp dl,'/'
      jz ii
      cmp dl,'*'
      jnz  @f
ii:   mov byte [edi],','
      inc edi
      jmp uu
;end separate

@@:   cmp dl,'+'
      jz  ll
      cmp dl,'-'
      jz  ll
      cmp dl,13
      jbe  ll
uu:   mov [edi],dl
      inc edi
      inc ecx
      jmp l1
ll:   
      mov eax,xmm@tmulb
      copyDoznk eax,edi,0
      inc byte [xmm@tmulb+16]
      mov eax,ecx
      inc eax
      pop edx ecx
      mov edx,eax
ret
macro get@xmm a,b { local .l1,.l2,.l3
      cmp b,1
      jnz .l1
      mov eax,xmm@tplus
      call xm@copy@proc
      copyxmmm ecx,edi
mov byte [edi-1],']'
        mov word [edi],0x0d0a
        add edi,2
      jmp .l4
.l1:  cmp b,2
      jnz .l2
      mov eax,xmm@tminus
      call xm@copy@proc
      copyxmmm ecx,edi
mov byte [edi-1],']'
        mov word [edi],0x0d0a
        add edi,2
      jmp .l4
.l2:  cmp b,3
      jnz .l3
      mov eax,xmm@tmul
      call xm@copy@proc2
      ;copyxmmm ecx,edi
      jmp .l4
.l3:  cmp b,4
      jnz .l4
      mov eax,xmm@tmul
      call xm@copy@proc2
.l4:

}
macro get@mtwo from,lb { local .k ,.l
 mov ecx,from
.k: inc from
 cmp byte [from],13
 jbe lb
 cmp byte [from],'+'
 jnz  @f
 mov bl,1
 jmp .l
 @@:
 cmp byte [from],'-'
 jnz  @f
 mov bl,2
 jmp .l
 @@:
 cmp byte [from],'*'
 jnz  @f
 mov bl,3
 jmp .l
 @@:
 cmp byte [from],'/'
 jnz .k
 mov bl,4
 .l:  inc from
}
prCalcMathxm:  mov byte [xmm@tmul+9],48
               mov byte [xmm@tmulb+16],48
        invoke     SendMessage,[hwnd],WM_COPY,0,0
        mov edi,Status
        mov dword [edi],0
        call fromClipboard
        ;Msg Status
        mov edi,outTxt
        mov eax,xmm@tbegin
        copyDoznk eax,edi,0
        mov edx,Status
.uu:    get@mtwo edx,.ext
        get@xmm ecx,bl
jmp .uu
.ext:   mov dword [edi],0
        mov edi,outTxt
        call toClipboard
        ret

include@ptxt db 'include "',0
prIncludecopy: mov edi,Status
        mov dword [edi],0
        call fromClipboard
        mov edi,outTxt
        mov eax,include@ptxt
        copyDoznk eax,edi,0
        mov eax,Status
        copyDoznk eax,edi,0
        mov byte [edi],'"'
        mov word [edi+1],0x0d0a
        mov word [edi+3],0
        mov edi,outTxt
        call toClipboard
        ret

Macro@ptxt      db 'macro mf00 a,b { local l1,l2',13,10
                db 'l1: ',13,10,0
prSelectMacro: invoke     SendMessage,[hwnd],WM_COPY,0,0
        mov edi,Status
        mov dword [edi],0
        call fromClipboard
        mov edi,outTxt
        mov eax,Macro@ptxt
        copyDoznk eax,edi,0
        mov eax,Status
        copyDoznk eax,edi,0
        mov word [edi],' }'
        mov word [edi+2],0
        mov edi,outTxt
        call toClipboard
ret

Proc@ptxt  db 'proc pr  a,b,c',13,10,0
Proc@ptxt2 db 13,10,'ret',13,10,'endp',13,10,0,7
prSelectProc: invoke     SendMessage,[hwnd],WM_COPY,0,0
        mov edi,Status
        mov dword [edi],0
        call fromClipboard
        mov edi,outTxt
        mov eax,Proc@ptxt
        copyDoznk eax,edi,0
        mov eax,Status
        copyDoznk eax,edi,0
        mov eax,Proc@ptxt2
        copyDoznk eax,edi,7
        mov edi,outTxt
        call toClipboard
ret

lProc@ptxt  db 'name:',13,10
            db 13,10,'ret',13,10,'.a:',13,10,'.b:',13,10,0,7
prSelectProc2: 
        mov edi,outTxt
        mov eax,lProc@ptxt
        copyDoznk eax,edi,7
        mov edi,outTxt
        call toClipboard
ret

prxmfloattext: push eax
invoke     SendMessage,[hwnd],WM_COPY,0,0
        mov edi,Status
        mov dword [edi],0
        call fromClipboard
        ;Msg Status
        pop eax
        mov edi,outTxt
        copyDoznk eax,edi,0
        mov eax,Status
        copyDoznk eax,edi,0
        mov byte [edi],']'
        mov word [edi+1],0
        mov edi,outTxt
        call toClipboard
        
ret

hidennumsbutns: 
 mov esi,digtsBtn
.up: invoke ShowWindow,[esi],[hidennumsbutns@fly]
add esi,4
cmp esi,digtsBtn+34*4
jb .up

xor [hidennumsbutns@fly],1
ret
hidennumsbutns@fly dd 0

macro FindAnySymbol t { local .1,.2,.3
      xor cl,cl
      mov al,[t]
      mov ah,al
      sub ah,"a"
      cmp ah,"z"-"a"
      ja  .1   
      mov cl,1
.1:
      sub al,48
      cmp al,9
      ja  .3
      mov cl,2      
.3:   test cl,cl
      }                        
prCFunction: invoke     SendMessage,[hwnd],WM_COPY,0,0
        mov edi,Status
        mov dword [edi],0
        call fromClipboard
        ;Msg Status
        mov edx,Status

        mov ebx,outTxt+8
        mov dword [ebx-8],'invo'
        mov dword  [ebx-4],'ke  '
.back:  mov al,[edx]
        mov [ebx],al
        inc ebx
        inc edx
        cmp byte [edx],"("
        jnz .back
        mov word [ebx-1],' ,'
        add ebx,2

        mov esi,ptrKu
upp:    inc edx
        cmp byte [edx],0
        jz ennnn
        FindAnySymbol edx
        jz upp
        mov [esi],edx
        mov [esi+4],cl
        add esi,6
upp2:   inc edx
        cmp byte [edx],0
        jz  ennnn
        cmp byte [edx],'('
        jnz enn2
        mov byte [edx],','
        jmp  upp
enn2:
        cmp byte [edx],','
        jnz upp2
        jmp upp
ennnn:
;copy txt
        
        mov esi,ptrKu
        lea edx,[ebx-1]         
.zu:
        mov cl,[esi+4]
        mov eax,[esi]
        test eax,eax
       jz endinn
        cmp cl,2
        jz  .zu0
        cmp byte [eax-1],'&'
        jnz .zu2
        mov byte [skobnet],1
.zu0:   mov ch,[eax]
        cmp ch,'['
        jnz .zuX
        mov ch,'.'
.zuX:
        cmp ch,','
        jz  @f
        cmp ch,';'
        jz  endinn
        mov [edx],ch
        inc eax
        inc edx
        jmp .zu0
.zu2:   mov byte [edx],'['
        inc edx
        jmp .zu0
@@:     cmp cl,2
        jz  .ziko
        cmp byte [skobnet],1
        ;jz  .ziko
        jnz  .zikoU
        cmp byte [edx-1],']'
        jnz .ziko
        mov byte [edx-1],' '
        jmp .ziko
.zikoU:
        cmp byte [edx-1],']'
        jz  .ziko
        mov byte [edx],']'
        inc edx
.ziko:  mov byte [edx],','
        inc edx
        mov byte [skobnet],0
        add esi,6        
        jmp .zu

 
endinn:  mov byte [edx-1],']'
;Msg outTxt
        mov edi,outTxt
        call toClipboard
ret
skobnet db 0

prConvrtCInterface:
        mov edi,Status
        mov dword [edi],0
        call fromClipboard
        ;Msg Status
        mov [@p_TxtIn],Status ;checkCInterface
        mov [@p_TxtIn+4],search_string
        call pCInterface
        ;Msg search_string
        mov edi,[@p_TxtIn+4]
        call toClipboard
        invoke     SendMessage,[hwnd],WM_PASTE,0,0 
ret

prPin: xor byte [pincombo],1
ret

macro txt2key z { ;local .jj
xor ax,ax
mov al,z
cmp byte [zbuf],z
jz  .1b
;jnz .jj
;mov eax,v
;jmp .1
;.jj:
}
prDigits: invoke SendMessage,[esi],WM_GETTEXT,2,zbuf
;Msg zbuf 
cmp byte [zbuf],'W'
jz .0
cmp byte [zbuf],'X'
jz .0
cmp byte [zbuf],'Y'
jz .0
cmp byte [zbuf],'Z'
jz .0
cmp byte [zbuf],' '
jz .0
cmp byte [zbuf],'9'
ja .2
cmp byte [zbuf],'0'
jb .2
.0:
movzx eax,byte [zbuf] 
.1: invoke     SendMessage,[hwnd],WM_KEYDOWN,eax,0
        ret

.1b:    mov edi,outTxt
        mov word [edi],ax
        call toClipboard
        invoke     SendMessage,[hwnd],WM_PASTE,0,0
        ret
.2: txt2key '@'
    txt2key ':'
    txt2key '#'
    txt2key '>'
    txt2key '<'
    txt2key '"'
        txt2key '\'
        txt2key '&'
        txt2key '_'
        txt2key '['
        txt2key ']'
cmp byte [zbuf],'='
jnz .a
mov eax,0xBB ;
jmp .1
.a:     cmp byte [zbuf],';'
jnz .b
mov eax,0xBA ;
jmp .1
.b:     cmp byte [zbuf],','
jnz .c
mov eax,0xBC ;
jmp .1
.c: cmp byte [zbuf],'-'
jnz .e
mov eax,0xBD ;
jmp .1
.e: cmp byte [zbuf],'.'
jnz .d
mov eax,0xBE ;
jmp .1
.d:cmp byte [zbuf],'/'
jnz .f
mov eax,0xBF ;
jmp .1
.f:cmp byte [zbuf],'+'
jnz .g
mov eax,0x6B ;
jmp .1
.g:cmp byte [zbuf],'*'
jnz .h
mov eax,0x6A ;
jmp .1
.h:
ret

prTab: invoke     SendMessage,[hwnd],WM_KEYDOWN,9,0 
ret

prEnter: invoke     SendMessage,[hwnd],WM_KEYDOWN,13,0 
ret

prUndo: invoke     SendMessage,[hwnd],WM_UNDO,0,0 
;invoke Sleep,180
ret

prPaste: invoke     SendMessage,[hwnd],WM_PASTE,0,0 
;invoke Sleep,180
ret

prCut: invoke     SendMessage,[hwnd],WM_CUT,0,0 
ret

search_settings dd 0,0,0,0
fuuu db 'word',0
prFind: invoke  SendMessage,[hwnd],FEM_GETWORDATCARET,100h,search_string
        invoke  SendMessage,[hwnd],FEM_FINDFIRST,0,search_string
        ;Msg search_string
ret

prFindnxt: invoke  SendMessage,[hwnd],FEM_FINDNEXT,0,search_string
ret

DoExit:
        ret

fnfile db 'userFile.txt',0
loadtTxt: mov edx,path2file
          mov eax,fnfile
          call    LoadFile
mov word [edx+path2file],0
          mov edx,zbuf2
          mov eax,path2file 
          call    LoadFile
          invoke  SendMessage,[hwnd],WM_SETTEXT,0,zbuf2
        invoke SetWindowTextA,[mhwnd],path2file
          ret

msgSave dB 'Save this file ?',0
saveFile: invoke  MessageBox,0,msgSave,0,MB_YESNO+MB_ICONQUESTION+WS_POPUP+WS_VISIBLE+MB_TOPMOST
          cmp     eax,7 ;no
          jz      .ext
        invoke PlaySound,SndFile,0,1
          invoke     SendMessage,[hwnd],WM_GETTEXTLENGTH,0,0
          mov dword [eax+FeditTxt],0
inc eax
          invoke     SendMessage,[hwnd],WM_GETTEXT,eax,FeditTxt
;Msg FeditTxt
;Msg path2file
          ;mov edx,zbuf
          ;mov eax,fnfile
          ;call    LoadFile  ;get userfile dir
        invoke  CreateFile,path2file,GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0
     mov     [fhand],eax

     mov     esi,FeditTxt
     mov     ebx,esi         ;esi=text buffer
     dec     ebx
.ti: inc     ebx
     cmp     byte [ebx],0
     jnz     .ti
     sub     ebx,esi
     invoke  WriteFile,[fhand],esi,ebx,rbait,0
     invoke  CloseHandle,[fhand]
.ext: 
        ret

macro copydo t,b,z { local l1,l2
l1:     mov al,[t]
        test al,al
        jz l2
        cmp al,z
        jz l2
        mov [b],al
        inc b
        inc t
        jmp l1
l2:     mov word [b],0
        }
macro txtptr t,p { local l1,l2,ll
        mov eax,p
l1:     mov [eax],t
        add eax,4
l2:     cmp byte [t],')'
        jz ll
        inc t
        cmp byte [t],','
        jnz l2
        inc t
        jmp l1
ll:     mov byte [t],0
}
ptrparams dd 12 dup(0) 
opnusrBlock: mov edx,zbuf
        mov dword [edx],'blok'
        mov byte [edx+4],'\'
        add edx,5
        copydo esi,edx,'('
        inc esi
        mov dword [edx],'.txt'
        mov byte [edx+4],0
        mov edx,zbuf
        mov eax,zbuf
        call    LoadFile
        mov dword [edx+zbuf],0
        ;Msg esi
        txtptr esi,ptrparams
        mov ebx,zbuf+12000
        mov esi,zbuf
mmnupp:
        copydo esi,ebx,'#'
        test al,al
        jz mmnn2
        inc esi
        movzx eax,byte [esi]
        sub al,48
        inc esi
        mov edx,[ptrparams+eax*4]
        ;Msg edx
        ;dec ebx
        copydo edx,ebx,','
        jmp mmnupp
mmnn2:

        mov edi,zbuf+12000
        mov edx,edi
        call fixCount
        call toClipboard
        invoke     SendMessage,[hwnd],WM_PASTE,0,0 
        ret

fromClipboard:
invoke  OpenClipboard,0 
test eax,eax
jnz @f
ret
@@: invoke GetClipboardData,CF_TEXT
test eax,eax
jnz @f
ret
@@:
invoke  GlobalLock,eax
mov     esi,eax
mov ebx,eax
;Msg esi
        copydo ebx,edi,0
        mov dword [edi],0
        
        invoke  GlobalUnlock,esi
        invoke  EmptyClipboard
        invoke  CloseClipboard
ret

toClipboard: ;invoke CloseClipboard
        invoke  GlobalAlloc,GMEM_MOVEABLE,1024*8
        invoke  GlobalLock,eax
        mov     esi,eax
        mov ebx,eax
        copydo edi,ebx,0
        mov dword [ebx],0
        invoke  GlobalUnlock,esi
        ;Msg 'ff'
        invoke  OpenClipboard,0              ;[hWnd]
        invoke  EmptyClipboard
        invoke  SetClipboardData,CF_TEXT,esi ;=TxtOut
        invoke  CloseClipboard
        ret
fixCount: 
        cmp word [edx],'%\'
        jnz .e
        mov word [edx],'  '
        mov word [_Count],'00'
.e:     cmp word [edx],'%_'
        jnz .0
        mov ax,word [_Count]
        mov word [edx],ax
.0:     cmp word [edx],'%%'
        jnz .1
        mov ax,word [_Count]
        mov word [edx],ax
        call inc_Count
.1:     inc edx
        cmp byte [edx],0
        jnz fixCount
        ret
inc_Count:  
.2:       inc byte [_Count+1]
          cmp byte [_Count+1],'9'
          jbe .1
          mov byte [_Count+1],'0'
          inc byte [_Count]

        cmp byte [_Count],'a'
        jae .1
        cmp byte [_Count],'9'
        jbe .1
        mov byte [_Count],'a'
.1:
ret
_Count db '00'