forked from KolibriOS/kolibrios
added dictionary (Socrat) to SVN
git-svn-id: svn://kolibrios.org@3230 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
2222c3412c
commit
f6e68dbb55
854
programs/other/dictionary/API.INC
Normal file
854
programs/other/dictionary/API.INC
Normal file
@ -0,0 +1,854 @@
|
||||
;-------------------------------------------------------------------------------
|
||||
;=========== Constans ==========================================================
|
||||
;-------------------------------------------------------------------------------
|
||||
;-------------------------------------------------------------------------------
|
||||
;-------------------------------------------------------------------------------
|
||||
MEV_LDOWN = 1
|
||||
MEV_LUP = 2
|
||||
MEV_RDOWN = 3
|
||||
MEV_RUP = 4
|
||||
MEV_WHEEL = 5
|
||||
MEV_MOVE = 6
|
||||
|
||||
;//Mouse buttons state
|
||||
MBS_LEFT = 1
|
||||
MBS_RIGHT = 2
|
||||
MBS_CENTER = 4
|
||||
MBS_4 = 8
|
||||
MBS_5 = 16
|
||||
|
||||
;// KEY MODIFIERS
|
||||
|
||||
KM_SHIFT = 0x00010000
|
||||
KM_CTRL = 0x00020000
|
||||
KM_ALT = 0x00040000
|
||||
|
||||
KM_CTRLSHIFT = 0x00030000
|
||||
KM_ALTSHIFT = 0x00050000
|
||||
KM_CTRLALT = 0x00060000
|
||||
|
||||
KM_CTRLALTSHIFT = 0x00070000
|
||||
|
||||
;// KEY CODES
|
||||
|
||||
KEY_ESCAPE = 0x00000001
|
||||
KEY_SNAPSHOT = 0x00000137
|
||||
KEY_PAUSE = 0x0000021D
|
||||
|
||||
KEY_F1 = 0x0000003B
|
||||
KEY_F2 = 0x0000003C
|
||||
KEY_F3 = 0x0000003D
|
||||
KEY_F4 = 0x0000003E
|
||||
KEY_F5 = 0x0000003F
|
||||
KEY_F6 = 0x00000040
|
||||
KEY_F7 = 0x00000041
|
||||
KEY_F8 = 0x00000042
|
||||
KEY_F9 = 0x00000043
|
||||
KEY_F10 = 0x00000044
|
||||
KEY_F11 = 0x00000057
|
||||
KEY_F12 = 0x00000058
|
||||
|
||||
KEY_TILDE = 0x00000029
|
||||
KEY_MINUS = 0x0000000C
|
||||
KEY_EQUAL = 0x0000000D
|
||||
KEY_BACKSPACE = 0x0000000E
|
||||
KEY_TAB = 0x0000000F
|
||||
KEY_SQBRACE1 = 0x0000001A
|
||||
KEY_SQBRACE2 = 0x0000001B
|
||||
KEY_SLASH1 = 0x00000035
|
||||
KEY_SLASH2 = 0x0000002B
|
||||
KEY_SEMICOLON = 0x00000027
|
||||
KEY_QUOTE = 0x00000028
|
||||
KEY_COMMA = 0x00000033
|
||||
KEY_DOT = 0x00000034
|
||||
KEY_SPACE = 0x00000039
|
||||
|
||||
KEY_1 = 0x00000002
|
||||
KEY_2 = 0x00000003
|
||||
KEY_3 = 0x00000004
|
||||
KEY_4 = 0x00000005
|
||||
KEY_5 = 0x00000006
|
||||
KEY_6 = 0x00000007
|
||||
KEY_7 = 0x00000008
|
||||
KEY_8 = 0x00000009
|
||||
KEY_9 = 0x0000000A
|
||||
KEY_0 = 0x0000000B
|
||||
|
||||
KEY_A = 0x0000001E
|
||||
KEY_B = 0x00000030
|
||||
KEY_C = 0x0000002E
|
||||
KEY_D = 0x00000020
|
||||
KEY_E = 0x00000012
|
||||
KEY_F = 0x00000021
|
||||
KEY_G = 0x00000022
|
||||
KEY_H = 0x00000023
|
||||
KEY_I = 0x00000017
|
||||
KEY_J = 0x00000024
|
||||
KEY_K = 0x00000025
|
||||
KEY_L = 0x00000026
|
||||
KEY_M = 0x00000032
|
||||
KEY_N = 0x00000031
|
||||
KEY_O = 0x00000018
|
||||
KEY_P = 0x00000019
|
||||
KEY_Q = 0x00000010
|
||||
KEY_R = 0x00000013
|
||||
KEY_S = 0x0000001F
|
||||
KEY_T = 0x00000014
|
||||
KEY_U = 0x00000016
|
||||
KEY_V = 0x0000002F
|
||||
KEY_W = 0x00000011
|
||||
KEY_X = 0x0000002D
|
||||
KEY_Y = 0x00000015
|
||||
KEY_Z = 0x0000002C
|
||||
|
||||
KEY_CAPSLK = 0x0000003A
|
||||
KEY_SCRLK = 0x00000046
|
||||
KEY_NUMLK = 0x00000069
|
||||
|
||||
KEY_RETURN = 0x0000001C
|
||||
KEY_NUMRETURN = 0x0000011C
|
||||
|
||||
KEY_LCONTROL = 0x0000001D
|
||||
KEY_RCONTROL = 0x0000011D
|
||||
KEY_LSHIFT = 0x0000002A
|
||||
KEY_RSHIFT = 0x00000036
|
||||
KEY_LALT = 0x00000038
|
||||
KEY_RALT = 0x00000138
|
||||
|
||||
KEY_LWIN = 0x0000015B
|
||||
KEY_RWIN = 0x0000015C
|
||||
KEY_APPS = 0x0000015D
|
||||
|
||||
KEY_INSERT = 0x00000152
|
||||
KEY_DELETE = 0x00000153
|
||||
KEY_HOME = 0x00000147
|
||||
KEY_END = 0x0000014F
|
||||
KEY_PAGEUP = 0x00000149
|
||||
KEY_PAGEDOWN = 0x00000151
|
||||
KEY_UP = 0x00000148
|
||||
KEY_LEFT = 0x0000014B
|
||||
KEY_RIGHT = 0x0000014D
|
||||
KEY_DOWN = 0x00000150
|
||||
|
||||
KEY_DIVIDE = 0x00000135
|
||||
KEY_MULTIPLY = 0x00000037
|
||||
KEY_SUBTRACT = 0x0000004A
|
||||
KEY_ADD = 0x0000004E
|
||||
KEY_SEPARATOR = 0x00000053
|
||||
|
||||
KEY_NUM1 = 0x0000004F
|
||||
KEY_NUM2 = 0x00000050
|
||||
KEY_NUM3 = 0x00000051
|
||||
KEY_NUM4 = 0x0000004B
|
||||
KEY_NUM5 = 0x0000004C
|
||||
KEY_NUM6 = 0x0000004D
|
||||
KEY_NUM7 = 0x00000047
|
||||
KEY_NUM8 = 0x00000048
|
||||
KEY_NUM9 = 0x00000049
|
||||
KEY_NUM0 = 0x00000052
|
||||
|
||||
;// EXTENDED KEY CODES (MULTIMEDIA KEYBOARDS)
|
||||
|
||||
KEY_MYDOCUMENTS = 0x0000014C
|
||||
KEY_MYPICTURES = 0x00000164
|
||||
KEY_MYMUSIC = 0x0000013C
|
||||
KEY_MUTE = 0x00000120
|
||||
KEY_PLAYPAUSE = 0x00000122
|
||||
KEY_STOP = 0x00000124
|
||||
KEY_VOLUMEUP = 0x00000130
|
||||
KEY_VOLUMEDOWN = 0x0000013E
|
||||
KEY_PREVSONG = 0x00000110
|
||||
KEY_NEXTSONG = 0x00000119
|
||||
KEY_MEDIA = 0x0000016D
|
||||
KEY_MAIL = 0x0000016C
|
||||
KEY_WEBHOME = 0x00000132
|
||||
KEY_MESSENGER = 0x00000105
|
||||
|
||||
KEY_CALCULATOR = 0x00000121
|
||||
KEY_LOGOFF = 0x00000116
|
||||
KEY_SLEEP = 0x0000015F
|
||||
|
||||
;Keyboard modes (func 66,2)
|
||||
|
||||
KBM_ASCII = 0
|
||||
KBM_SCAN = 1
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
;Colors-------------------------------------------------------------------------
|
||||
|
||||
clWhite = 0FFFFFFh
|
||||
clBlack = 0
|
||||
clRed = 0FF0000h
|
||||
clBlue = 0FF00h
|
||||
clGreen = 0FFh
|
||||
clGrey = 0888888h
|
||||
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
;-------------------------------------------------------------------------------
|
||||
;-------------------------------------------------------------------------------
|
||||
;========== APIs macros ========================================================
|
||||
;-------------------------------------------------------------------------------
|
||||
;-------------------------------------------------------------------------------
|
||||
;-------------------------------------------------------------------------------
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
macro DrawWindow x,y,w,h,nameW ;void
|
||||
{
|
||||
if ~(x eq bx)
|
||||
mov bx,x
|
||||
end if
|
||||
rol ebx,16
|
||||
mov bx,w
|
||||
if ~(y eq cx)
|
||||
mov cx,y
|
||||
end if
|
||||
rol ecx,16
|
||||
mov cx,h
|
||||
mov edx,0x33FFFFFF
|
||||
mov esi,0x80333333
|
||||
mov edi,nameW
|
||||
xor eax,eax
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro DrawPanel x,y,w,h,color ;void ;ŕ¨áăĄâ ĄŻĄŕĄ¬Ąé Ą¬®Ą Żŕ®§ŕ 箥(¨«¨ 梥â color) ®Ş®
|
||||
{
|
||||
xor eax,eax
|
||||
if ~(x eq bx)
|
||||
mov bx,x
|
||||
end if
|
||||
rol ebx,16
|
||||
mov bx,w
|
||||
if ~(y eq cx)
|
||||
mov cx,y
|
||||
end if
|
||||
rol ecx,16
|
||||
mov cx,h
|
||||
mov edx,21000000h
|
||||
; add edx,color
|
||||
mov esi,01000000h
|
||||
; mov edi,color
|
||||
int 40h
|
||||
|
||||
if ~(color eq)
|
||||
mov eax,13
|
||||
xor bx,bx
|
||||
rol ebx,16
|
||||
mov bx,w
|
||||
xor cx,cx
|
||||
rol ecx,16
|
||||
mov cx,h
|
||||
mov edx,color
|
||||
int 40h
|
||||
end if
|
||||
}
|
||||
|
||||
|
||||
;WinClass
|
||||
; .Caption (offset Name)
|
||||
; .Color (color dword)
|
||||
; .Transparent (0/1)
|
||||
; .WorkTransp (0/1)
|
||||
; .Fix (0/1)
|
||||
; .Skin (0/1)
|
||||
; .CaptionColor (color dword)
|
||||
; .FrameColor (color dword)
|
||||
|
||||
macro DrawWindowEx x,y,w,h,WinClass ;void ¬®¦Ąâ ŕ¨á®˘ âě «îˇ®Ą ®Ş®
|
||||
{
|
||||
if ~(x eq bx)
|
||||
mov bx,x
|
||||
end if
|
||||
rol ebx,16
|
||||
mov bx,w
|
||||
if ~(y eq cx)
|
||||
mov cx,y
|
||||
end if
|
||||
rol ecx,16
|
||||
mov cx,h
|
||||
|
||||
if WinClass#.WorkTransp==1
|
||||
WinClass#.WorkTransp=40000000h
|
||||
end if
|
||||
|
||||
mov edx,3000000h+WinClass#.WorkTransp+WinClass#.Color
|
||||
mov esi,0x80333333
|
||||
mov edi,WinClass#.Name
|
||||
xor eax,eax
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro DrawPix x,y,color ;void
|
||||
{
|
||||
mov ebx,x
|
||||
mov ecx,y
|
||||
mov edx,color
|
||||
mov eax,1
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro GetKeyPressed ;eax=1-Żăáâ® «¨ˇ® al=0, ah=Ş®¤ ¦ ⮩ Ş« ˘¨č¨ «¨ˇ®
|
||||
{ ;al=2, ah=áŞ Ş®¤ ¦ ⮩ <20>Ž<EFBFBD>ź—…‰ Ş« ˘¨č¨,HI eax=á®áâ ăŻŕ Ş« ˘¨č
|
||||
mov eax,2
|
||||
int 40h
|
||||
}
|
||||
|
||||
|
||||
macro OutText x,y,Text,colorFon ;void
|
||||
{
|
||||
if colorFon eq
|
||||
mov bx,x
|
||||
rol ebx,16
|
||||
mov bx,y
|
||||
mov ecx,80000000h
|
||||
mov edx,Text
|
||||
mov eax,4
|
||||
int 40h
|
||||
else
|
||||
mov bx,x
|
||||
rol ebx,16
|
||||
mov bx,y
|
||||
mov ecx,0C0000000h
|
||||
mov edx,Text
|
||||
mov edi,colorFon
|
||||
mov eax,4
|
||||
int 40h
|
||||
end if
|
||||
}
|
||||
|
||||
macro Sleep time ;void
|
||||
{
|
||||
mov ebx,time
|
||||
mov eax,5
|
||||
int 40h
|
||||
}
|
||||
|
||||
|
||||
macro DrawImage x,y,w,h,Image ;void
|
||||
{
|
||||
mov ebx,Image
|
||||
mov cx,w
|
||||
rol ecx,16
|
||||
mov cx,h
|
||||
mov dx,x
|
||||
rol edx,16
|
||||
mov dx,y
|
||||
mov eax,7
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro DrawButton x,y,w,h,ID,color,Caption ;void
|
||||
{
|
||||
if ID<1000000h
|
||||
mov bx,x
|
||||
rol ebx,16
|
||||
mov bx,w
|
||||
mov cx,y
|
||||
rol ecx,16
|
||||
mov cx,h
|
||||
mov edx,ID
|
||||
mov esi,color
|
||||
mov eax,8
|
||||
int 40h
|
||||
|
||||
sub edx,80000000h
|
||||
else
|
||||
mov eax,-1
|
||||
end if
|
||||
|
||||
if ~(Caption eq)
|
||||
mov bx,x
|
||||
add bx,5
|
||||
rol ebx,16
|
||||
mov bx,y
|
||||
add bx,5
|
||||
mov ecx,80000000h
|
||||
mov edx,Caption
|
||||
mov eax,4
|
||||
int 40h
|
||||
end if
|
||||
}
|
||||
|
||||
macro DeleteButton ID ;void
|
||||
{
|
||||
if ID<1000000h
|
||||
mov eax,8
|
||||
mov edx,80000000h
|
||||
add edx,ID
|
||||
int 40h
|
||||
;else
|
||||
|
||||
end if
|
||||
|
||||
}
|
||||
|
||||
macro GetThreadInfo Buffer,N ;1KB eax=max ®¬Ąŕ ᫮⠯®â®Ş
|
||||
{
|
||||
mov ebx,Buffer
|
||||
if N eq
|
||||
mov ecx,-1
|
||||
else
|
||||
mov ecx,N
|
||||
end if
|
||||
mov eax,9
|
||||
int 40h
|
||||
}
|
||||
; +34 = X window
|
||||
; +38 = Y window
|
||||
; +42 = W window
|
||||
; +46 = H window
|
||||
|
||||
|
||||
macro WaitMessage ;eax=event(1=redraw,2=key,3=button,5=redrawBackgroud,
|
||||
{ ;6=mouse,7=IPC,8=ethernet,9=debug,16..31=IRQ0..IRQ15)
|
||||
mov eax,10
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro ReadMessage ;eax=0-Żăáâ® ¨ çĄ á¬ WaitMessage
|
||||
{
|
||||
mov eax,11
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro RedrawWinBeg ;void
|
||||
{
|
||||
mov eax,12
|
||||
mov ebx,1
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro RedrawWinEnd ;void
|
||||
{
|
||||
mov eax,12
|
||||
mov ebx,2
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro DrawRect x,y,w,h,color ;void
|
||||
{
|
||||
mov bx,x
|
||||
rol ebx,16
|
||||
mov bx,w
|
||||
mov cx,y
|
||||
rol ecx,16
|
||||
mov cx,h
|
||||
mov edx,color
|
||||
mov eax,13
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro DrawClearRect x,y,w,h,color ;(ŕ ¬Ş¨. <20>¨áăĄâ Żŕ®áâ® ŕ ¬Şă. <20>Ą§ § Şŕ 訢 ¨ď ˘ăâŕ¨)
|
||||
{
|
||||
mov eax,38
|
||||
mov bx,x
|
||||
rol ebx,16
|
||||
mov bx,x
|
||||
add bx,w
|
||||
mov cx,y
|
||||
rol ecx,16
|
||||
mov cx,y
|
||||
mov edx,color
|
||||
int 40h
|
||||
|
||||
mov eax,38
|
||||
mov bx,x
|
||||
add bx,w
|
||||
rol ebx,16
|
||||
mov bx,x
|
||||
add bx,w
|
||||
mov cx,y
|
||||
rol ecx,16
|
||||
mov cx,y
|
||||
add cx,h
|
||||
mov edx,color
|
||||
int 40h
|
||||
|
||||
mov eax,38
|
||||
mov bx,x
|
||||
rol ebx,16
|
||||
mov bx,x
|
||||
add bx,w
|
||||
mov cx,y
|
||||
add cx,h
|
||||
rol ecx,16
|
||||
mov cx,y
|
||||
add cx,h
|
||||
mov edx,color
|
||||
int 40h
|
||||
|
||||
mov eax,38
|
||||
mov bx,x
|
||||
rol ebx,16
|
||||
mov bx,x
|
||||
mov cx,y
|
||||
rol ecx,16
|
||||
mov cx,y
|
||||
add cx,h
|
||||
mov edx,color
|
||||
int 40h
|
||||
}
|
||||
|
||||
|
||||
|
||||
macro GetScreenSize ;eax=[xsize]*0x10000+[ysize]. ‡ 票ď 㦥 㢥«¨çĄë 1,â.Ą.
|
||||
{ ;xsize ¨ ysize ¬®Łăâ ˇëâě ŕ ˘ë 1024 ¨ 768 ( Żŕ¨¬Ąŕ)
|
||||
mov eax,14
|
||||
int 40h
|
||||
add eax,00010001h
|
||||
}
|
||||
|
||||
macro RedrawDesktop
|
||||
{
|
||||
mov eax,15
|
||||
mov ebx,3
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro GetButtonPressed ;eax=1(Żăáâ®) ¨ çĄ al=0(LButton)¨«¨ Ş®¤ ¤ŕ㣮© Ş®ŻŞ¨ ¬ëč¨,
|
||||
{ ; HI eax ¨ ah ᮤĄŕ¦ â ®¬Ąŕ Ş®ŻŞ¨
|
||||
mov eax,17
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro Minimize ;void
|
||||
{
|
||||
mov eax,18
|
||||
mov ebx,10
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro SetMousePos x,y
|
||||
{
|
||||
mov ecx,4
|
||||
mov dx,x
|
||||
rol edx,16
|
||||
mov dx,y
|
||||
mov eax,18
|
||||
mov ebx,19
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro WaitMessageT time
|
||||
{
|
||||
mov ebx,time
|
||||
mov eax,23
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro SetDefaultFolder folder
|
||||
{
|
||||
mov ecx,folder
|
||||
mov eax,30
|
||||
mov ebx,1
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro GetDefaultFolder folderBuf,sizeBuf
|
||||
{
|
||||
mov ecx,folderBuf
|
||||
moc edx,sizeBuf
|
||||
mov eax,30
|
||||
mov ebx,2
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro GetMousePos
|
||||
{
|
||||
mov eax,37
|
||||
xor ebx,ebx
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro GetMouseWinPos
|
||||
{
|
||||
mov eax,37
|
||||
mov ebx,1
|
||||
int 40h
|
||||
}
|
||||
|
||||
|
||||
macro GetMouseKey
|
||||
{
|
||||
mov eax,37
|
||||
mov ebx,2
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro LoadCursorF path
|
||||
{
|
||||
mov ecx,path
|
||||
mov eax,37
|
||||
mov ebx,4
|
||||
mov dx,0
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro LoadCursorM cur
|
||||
{
|
||||
mov ecx,cur
|
||||
mov eax,37
|
||||
mov ebx,4
|
||||
mov dx,1
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro LoadCursorStruct cur,x,y
|
||||
{
|
||||
; mov edx,x*1000000h+y*10000h+0002
|
||||
mov edx,x
|
||||
shl edx,24
|
||||
xor ecx,ecx
|
||||
mov cx,y
|
||||
shl ecx,16
|
||||
add edx,ecx
|
||||
add edx,2
|
||||
mov ecx,path
|
||||
mov eax,37
|
||||
mov ebx,4
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro SetCursor Handle
|
||||
{
|
||||
mov ecx,Handle
|
||||
mov eax,37
|
||||
mov ebx,5
|
||||
int 40h
|
||||
}
|
||||
|
||||
|
||||
macro DrawLine x1,y1,x2,y2,color
|
||||
{
|
||||
mov bx,x1
|
||||
rol ebx,16
|
||||
mov bx,x2
|
||||
mov cx,y1
|
||||
rol ecx,16
|
||||
mov cx,y2
|
||||
mov edx,color
|
||||
mov eax,38
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro SetMaskMessage Mask
|
||||
{
|
||||
mov ebx,Mask
|
||||
mov eax,40
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro DrawInt Int,Leng,x,y,color
|
||||
{
|
||||
xor ecx,ecx
|
||||
mov cx,Leng
|
||||
shl ecx,16
|
||||
add ebx,ecx
|
||||
|
||||
mov ecx,Int
|
||||
mov dx,x
|
||||
rol edx,16
|
||||
mov dx,y
|
||||
mov esi,color
|
||||
mov eax,47
|
||||
mov ebx,080100000h ;+Leng*10000h+0000
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro GetSkinH
|
||||
{
|
||||
mov eax,48
|
||||
mov ebx,4
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro CreateThread start,stack
|
||||
{
|
||||
mov ecx,start
|
||||
mov edx,stack
|
||||
mov eax,51
|
||||
mov ebx,1
|
||||
int 40h
|
||||
}
|
||||
|
||||
|
||||
|
||||
macro SetKeyboardMode mode
|
||||
{
|
||||
mov ecx,mode
|
||||
mov eax,66
|
||||
mov ebx,2
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro ResizeWindow x,y,w,h
|
||||
{
|
||||
mov ebx,x
|
||||
mov ecx,y
|
||||
mov edx,w
|
||||
mov esi,h
|
||||
mov eax,67
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro InitMemory ;eax=0(Ąăᯥĺ) ¨«¨ ŕ §¬Ąŕ Şăç¨
|
||||
{
|
||||
mov eax,68
|
||||
mov ebx,11
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro GetMemory size ;eax=Pointer
|
||||
{
|
||||
mov ecx,size
|
||||
mov ebx,12
|
||||
mov eax,68
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro FreeMemory pointer ;eax = 0/1 = false/true
|
||||
{
|
||||
mov ecx,pointer
|
||||
mov ebx,13
|
||||
mov eax,68
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro ReallocMemory pointer,newsize
|
||||
{
|
||||
mov edx,pointer
|
||||
mov ecx,newsize
|
||||
mov ebx,20
|
||||
mov eax,68h
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro ReadFile Struc,path,n,Buffer,posL;,posH
|
||||
{
|
||||
mov dword [Struc],0
|
||||
mov dword [Struc+4],posL
|
||||
mov dword [Struc+8],0;posH
|
||||
mov dword [Struc+12],n
|
||||
mov dword [Struc+16],Buffer
|
||||
mov byte [Struc+20],0
|
||||
mov dword [Struc+21],path
|
||||
mov ebx,Struc
|
||||
mov eax,70
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro CreateFile Struc,path,n,Buffer
|
||||
{
|
||||
mov dword [Struc],2
|
||||
mov dword [Struc+4],0
|
||||
mov dword [Struc+8],0
|
||||
mov dword [Struc+12],n
|
||||
mov dword [Struc+16],Buffer
|
||||
mov byte [Struc+20],0
|
||||
mov dword [Struc+21],path
|
||||
mov ebx,Struc
|
||||
mov eax,70
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro WriteFile Struc,path,n,Buffer,posL;,posH
|
||||
{
|
||||
mov dword [Struc],3
|
||||
mov dword [Struc+4],posL
|
||||
mov dword [Struc+8],0;posH
|
||||
mov dword [Struc+12],n
|
||||
mov dword [Struc+16],Buffer
|
||||
mov byte [Struc+20],0
|
||||
mov dword [Struc+21],path
|
||||
mov ebx,Struc
|
||||
mov eax,70
|
||||
int 40h
|
||||
|
||||
}
|
||||
|
||||
macro SetFileSize Struc,path,sizeL;,sizeH
|
||||
{
|
||||
mov dword [Struc],4
|
||||
mov dword [Struc+4],sizeL
|
||||
mov dword [Struc+8],0;sizeH
|
||||
mov dword [Struc+12],0
|
||||
mov dword [Struc+16],0
|
||||
mov byte [Struc+20],0
|
||||
mov dword [Struc+21],path
|
||||
mov ebx,Struc
|
||||
mov eax,70
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro GetFileInfo Struc,path,BufferInfo ;(40ˇ ©â)
|
||||
{
|
||||
mov dword [Struc],5
|
||||
mov dword [Struc+4],0
|
||||
mov dword [Struc+8],0
|
||||
mov dword [Struc+12],0
|
||||
mov dword [Struc+16],BufferInfo
|
||||
mov byte [Struc+20],0
|
||||
mov dword [Struc+21],path
|
||||
mov ebx,Struc
|
||||
mov eax,70
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro RunProgram Struc,path,params
|
||||
{
|
||||
mov eax,70
|
||||
mov ebx,Struc
|
||||
mov dword [Struc],7
|
||||
mov dword [Struc+4],0
|
||||
mov dword [Struc+8],params
|
||||
mov dword [Struc+12],0
|
||||
mov dword [Struc+16],0
|
||||
mov byte [Struc+20],0
|
||||
mov dword [Struc+21],path
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro Remove Struc,path
|
||||
{
|
||||
mov eax,70
|
||||
mov ebx,Struc
|
||||
mov dword [Struc],8
|
||||
mov dword [Struc+4],0
|
||||
mov dword [Struc+8],0
|
||||
mov dword [Struc+12],0
|
||||
mov dword [Struc+16],0
|
||||
mov byte [Struc+20],0
|
||||
mov dword [Struc+21],path
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro CreateFolder Struc,path
|
||||
{
|
||||
mov eax,70
|
||||
mov ebx,Struc
|
||||
mov dword [Struc],9
|
||||
mov dword [Struc+4],0
|
||||
mov dword [Struc+8],0
|
||||
mov dword [Struc+12],0
|
||||
mov dword [Struc+16],0
|
||||
mov byte [Struc+20],0
|
||||
mov dword [Struc+21],path
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro SetWindowCaption caption
|
||||
{
|
||||
mov eax,71
|
||||
mov ebx,1
|
||||
mov ecx,name
|
||||
int 40h
|
||||
}
|
||||
|
||||
macro ExitThread
|
||||
{
|
||||
mov eax,-1
|
||||
int 40h
|
||||
}
|
||||
|
||||
ExitProcess fix ExitThread
|
2
programs/other/dictionary/build.bat
Normal file
2
programs/other/dictionary/build.bat
Normal file
@ -0,0 +1,2 @@
|
||||
fasm dictionary.asm dictionary
|
||||
pause
|
415
programs/other/dictionary/dictionary.ASM
Normal file
415
programs/other/dictionary/dictionary.ASM
Normal file
@ -0,0 +1,415 @@
|
||||
include "../../macros.inc"
|
||||
include "../../proc32.inc"
|
||||
include "../../dll.inc"
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../develop/libraries/box_lib/load_lib.mac'
|
||||
|
||||
include "API.inc"
|
||||
|
||||
use32 ; òðàíñëÿòîð, èñïîëüçóþùèé 32 ðàçðÿäíûõ êîìàíäû
|
||||
org 0x0 ; áàçîâûé àäðåñ êîäà, âñåãäà 0x0
|
||||
db 'MENUET01' ; èäåíòèôèêàòîð èñïîëíÿåìîãî ôàéëà (8 áàéò)
|
||||
dd 0x1 ; âåðñèÿ ôîðìàòà çàãîëîâêà èñïîëíÿåìîãî ôàéëà
|
||||
dd start ; àäðåñ, íà êîòîðûé ñèñòåìà ïåðåäà¸ò óïðàâëåíèå
|
||||
; ïîñëå çàãðóçêè ïðèëîæåíèÿ â ïàìÿòü
|
||||
dd i_end ; ðàçìåð ïðèëîæåíèÿ
|
||||
dd mem ; Îáúåì èñïîëüçóåìîé ïàìÿòè, äëÿ ñòåêà îòâåäåì 0õ100 áàéò è âûðîâíèì íà ãðíèöó 4 áàéòà
|
||||
dd mem ; ðàñïîëîæèì ïîçèöèþ ñòåêà â îáëàñòè ïàìÿòè, ñðàçó çà òåëîì ïðîãðàììû. Âåðøèíà ñòåêà â äèàïàçîíå ïàìÿòè, óêàçàííîì âûøå
|
||||
dd 0x0 ; óêàçàòåëü íà ñòðîêó ñ ïàðàìåòðàìè.
|
||||
dd 0;pathprog ;ïóòü è èìÿ ïðîãè
|
||||
|
||||
|
||||
start:
|
||||
mcall 68,11 ;èíèöèàëèçèðóåì êó÷ó
|
||||
test eax,eax
|
||||
jz Win1.Exit
|
||||
stdcall dll.Load, @IMPORT
|
||||
|
||||
|
||||
; mov ecx,1024
|
||||
; mov edi,pathprog
|
||||
; xor al,al
|
||||
;
|
||||
; repne scasb
|
||||
;
|
||||
; dec edi
|
||||
; mov esi,WordFile
|
||||
; @@:
|
||||
; lodsb
|
||||
; stosb
|
||||
; test al,al
|
||||
; jne @b
|
||||
|
||||
;GetFileInfo fStruc,pathprog,fInfo ;ïðîâåðêà íà íàëè÷èå ôàéëà
|
||||
;test eax,eax ;çàîäíî è ïîëó÷ó ðàçìåð ôàéëà
|
||||
;je WordFileOK
|
||||
|
||||
;stdcall [mb_create],msgNotFound,mbThread
|
||||
;jmp Win1.Redraw
|
||||
|
||||
;WordFileOK:
|
||||
; stdcall mem.Alloc,dword [fInfo+32]
|
||||
; mov ebx,dword [fInfo+32]
|
||||
; mov [filBuffer],eax
|
||||
; add dword[fInfo+32],eax ;çäåñü õðàíèòñÿ óêàçàòåëü íà êîíåö áóôåðà
|
||||
; ReadFile fStruc,pathprog,ebx,eax,0
|
||||
; test eax,eax
|
||||
; jz Win1.Redraw
|
||||
;
|
||||
; add al,30h
|
||||
; mov [NumErr],al
|
||||
; stdcall [mb_create],msgNotFound1,mbThread
|
||||
;
|
||||
|
||||
|
||||
align 4
|
||||
Win1.Redraw:
|
||||
RedrawWinBeg
|
||||
|
||||
xor eax,eax
|
||||
mov ebx,(524*10000h+500)
|
||||
mov ecx,(548*10000h+200)
|
||||
mov edx,73FFFFFFh
|
||||
mov edi,Win1.Caption
|
||||
int 40h ;îêíî ñ ïðîçðà÷íûì ôîíoì
|
||||
|
||||
mcall 9,ThreadInfo,-1
|
||||
|
||||
mov eax,13
|
||||
mov ebx,[ThreadInfo+3Eh]
|
||||
inc ebx
|
||||
mov ecx,[ThreadInfo+42h]
|
||||
inc ecx
|
||||
mov edx,clWhite
|
||||
int 40h ;à òåïåðü íå ïðîçðà÷íûì:)
|
||||
|
||||
call Perevod ; â ïåðåðèñîâêå ñðàçó ïåðåâîäèì ââåä¸ííîå ñëîâî
|
||||
call NextPerev
|
||||
stdcall [edit_box_draw],EditIN
|
||||
RedrawWinEnd
|
||||
|
||||
align 4
|
||||
Win1.Events:
|
||||
WaitMessage
|
||||
dec eax
|
||||
jz Win1.Redraw
|
||||
dec eax
|
||||
jz Win1.Key
|
||||
dec eax
|
||||
jz Win1.ButtonPress
|
||||
|
||||
;stdcall [edit_box_mouse],EditIN
|
||||
|
||||
jmp Win1.Events
|
||||
|
||||
Win1.ButtonPress:
|
||||
GetButtonPressed
|
||||
|
||||
cmp ah,idbExit
|
||||
je Win1.Exit
|
||||
|
||||
jmp Win1.Events
|
||||
|
||||
Win1.Key:
|
||||
GetKeyPressed
|
||||
stdcall [edit_box_key],EditIN
|
||||
jmp Win1.FonRedraw
|
||||
|
||||
|
||||
Win1.Exit:
|
||||
|
||||
ExitProcess
|
||||
|
||||
Win1.FonRedraw: ;ïåðåðèñîâêà îáëàñòè âûâîäà
|
||||
mcall 9,ThreadInfo,-1
|
||||
|
||||
mov eax,13
|
||||
mov ebx,[ThreadInfo+3Eh]
|
||||
inc ebx
|
||||
mov ecx,20
|
||||
shl ecx,16
|
||||
add ecx,[ThreadInfo+42h]
|
||||
sub ecx,19
|
||||
mov edx,clWhite
|
||||
int 40h
|
||||
|
||||
call Perevod
|
||||
call NextPerev
|
||||
jmp Win1.Events
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
Perevod: ;ñàì ïåðåâîä
|
||||
mov edi,dict;[filBuffer]
|
||||
|
||||
Perev:
|
||||
xor ebx,ebx
|
||||
@@: ;ñðàâíèåì èñõ. ñëîâî ñî ñëîâîì ïîä esi
|
||||
mov al,[text+ebx]
|
||||
test al,al
|
||||
je endWord
|
||||
cmp [ebx+edi],al
|
||||
jne WordNotFound
|
||||
inc ebx
|
||||
jmp @b
|
||||
|
||||
endWord:
|
||||
cmp byte[ebx+edi],20h
|
||||
jne WordNotFound
|
||||
|
||||
add edi,ebx
|
||||
dec edi ;ïðîïóñêàåì ïðîáåëû ïîñëå àíãëèéñêîãî ñëîâà
|
||||
@@:
|
||||
inc edi
|
||||
cmp byte[edi],20h
|
||||
je @b
|
||||
|
||||
xor ebx,ebx
|
||||
CopyWord: ;êîïèðóåì ïåðåâîä â ñòðîêó äëÿ âûâîäà
|
||||
mov al,[edi+ebx]
|
||||
cmp al,0Dh
|
||||
je @f
|
||||
mov [perevText+ebx],al
|
||||
inc ebx
|
||||
jmp CopyWord
|
||||
@@:
|
||||
mov byte[perevText+ebx],0
|
||||
|
||||
OutText 7,25,perevText
|
||||
ret
|
||||
|
||||
WordNotFound: ;åñëè ñëîâî íå ïîäîøëî
|
||||
add edi,ebx
|
||||
@@:
|
||||
cmp byte[edi],0Dh
|
||||
je NextWord
|
||||
inc edi
|
||||
cmp edi,SizeDict;dword [fInfo+32]
|
||||
jae endPerev
|
||||
jmp @b
|
||||
|
||||
NextWord:
|
||||
add edi,2
|
||||
cmp edi,SizeDict;dword [fInfo+32]
|
||||
jae endPerev
|
||||
jmp Perev
|
||||
endPerev:
|
||||
ret
|
||||
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
NextPerev:
|
||||
mov ecx,Lines
|
||||
mov edi,dict;[filBuffer]
|
||||
LinePerev: ;öèêë ðèñîâàíèÿ ñòðîêè
|
||||
xor ebx,ebx
|
||||
@@: ;ñðàâíèåì èñõ. ñëîâî ñî ñëîâîì ïîä esi
|
||||
mov al,[text+ebx]
|
||||
test al,al
|
||||
je N_endWord
|
||||
cmp [ebx+edi],al
|
||||
jne N_WordNotFound
|
||||
inc ebx
|
||||
jmp @b
|
||||
|
||||
N_endWord:
|
||||
cmp ebx,0
|
||||
jne N_Ppoisk
|
||||
ret
|
||||
|
||||
N_Ppoisk: ;ïîèñê íà÷àëà ñòðîêè
|
||||
add edi,ebx
|
||||
@@:
|
||||
dec edi
|
||||
cmp byte[edi],0Ah
|
||||
jne @b
|
||||
inc edi
|
||||
|
||||
;########ïðîïóñêàåì óæå ïåðåâåä¸ííîå ñëîâî########
|
||||
xor ebx,ebx
|
||||
N_NoDouble:
|
||||
mov al,[text+ebx]
|
||||
test al,al
|
||||
je N_Double
|
||||
cmp [ebx+edi],al
|
||||
jne N_NoDblOk
|
||||
inc ebx
|
||||
jmp N_NoDouble
|
||||
|
||||
N_Double:
|
||||
cmp byte[ebx+edi],20h
|
||||
jne N_NoDblOk
|
||||
|
||||
add edi,ebx
|
||||
@@:
|
||||
inc edi
|
||||
cmp byte[edi],0Ah
|
||||
jne @b
|
||||
add edi,2
|
||||
jmp LinePerev
|
||||
|
||||
N_NoDblOk: ;############âûâîä ðåçóëüòàòîâ####################
|
||||
xor ebx,ebx ;êîïèðóåì ðåçóëüòàò
|
||||
N_CopyWord:
|
||||
mov al,[edi+ebx]
|
||||
cmp al,20h
|
||||
je @f
|
||||
mov [perevText+ebx],al
|
||||
inc ebx
|
||||
jmp N_CopyWord
|
||||
@@:
|
||||
mov byte[perevText+ebx],0
|
||||
add edi,ebx
|
||||
|
||||
mov eax,Lines
|
||||
sub eax,ecx
|
||||
dec eax
|
||||
shl eax,3
|
||||
add eax,45
|
||||
push ecx
|
||||
push edi
|
||||
OutText 7,ax,perevText
|
||||
pop edi
|
||||
pop ecx
|
||||
|
||||
@@:
|
||||
inc edi
|
||||
cmp byte[edi],20h
|
||||
je @b
|
||||
|
||||
|
||||
xor ebx,ebx
|
||||
N_CopyPerev:
|
||||
mov al,[edi+ebx]
|
||||
cmp al,0Dh
|
||||
je @f
|
||||
mov [perevText+ebx],al
|
||||
inc ebx
|
||||
jmp N_CopyPerev
|
||||
@@:
|
||||
mov byte[perevText+ebx],0
|
||||
|
||||
mov eax,Lines
|
||||
sub eax,ecx
|
||||
dec eax
|
||||
shl eax,3
|
||||
add eax,45
|
||||
push ecx
|
||||
push edi
|
||||
OutText 127,ax,perevText
|
||||
pop edi
|
||||
pop ecx
|
||||
|
||||
@@:
|
||||
inc edi
|
||||
cmp byte[edi],0Ah
|
||||
jne @b
|
||||
inc edi
|
||||
|
||||
loop @f ;íåäîòÿãèâàåòñÿ äî LinePerev
|
||||
ret
|
||||
@@:
|
||||
jmp LinePerev
|
||||
|
||||
N_WordNotFound:
|
||||
add edi,ebx
|
||||
@@:
|
||||
cmp byte[edi],0Dh
|
||||
je N_NextWord
|
||||
inc edi
|
||||
cmp edi,SizeDict;dword [fInfo+32]
|
||||
jae N_endPerev
|
||||
jmp @b
|
||||
|
||||
N_NextWord:
|
||||
add edi,2
|
||||
cmp edi,SizeDict;dword [fInfo+32]
|
||||
jae N_endPerev
|
||||
jmp LinePerev
|
||||
N_endPerev:
|
||||
ret
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
;-------------------------------------------------------------------------------
|
||||
;------DATA---------------------------------------------------------------------
|
||||
;-------------------------------------------------------------------------------
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
idbExit = 1
|
||||
|
||||
Lines = 16 ;êîëè÷åñòâ ñòðîê
|
||||
|
||||
clTheme = 080B0FFh
|
||||
|
||||
Win1.Caption db 'Dictionary RUS -> ENG',0
|
||||
Win1X = 524
|
||||
Win1Y = 548
|
||||
Win1W = 500
|
||||
Win1H = 200
|
||||
|
||||
Memo.X = 5
|
||||
Memo.Y = 20
|
||||
Memo.W = 400
|
||||
Memo.H = 370
|
||||
|
||||
EditIN edit_box 350,5,5,0FFFFFFh,06F9480h,0,00h,0,40,\
|
||||
text,mouse_dd,ed_focus,0,0
|
||||
|
||||
|
||||
|
||||
; msgNotFound:
|
||||
; dw 0
|
||||
; db 'Îøèáêà',0
|
||||
; db 'Ôàéë dictionary.wrd íå íàéäåí',0
|
||||
; db 'ßñíî',0
|
||||
; db 0
|
||||
;
|
||||
; msgNotFound1:
|
||||
; dw 0
|
||||
; db '!!!',0
|
||||
; db 'Îøèáêà ÷òåíèÿ '
|
||||
; NumErr: db 0
|
||||
; db 0
|
||||
; db 'ßñíî',0
|
||||
; db 0
|
||||
;
|
||||
; WordFile db '.wrd',0
|
||||
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
@IMPORT:
|
||||
library box_lib,'box_lib.obj',msgbox,'msgbox.obj'
|
||||
import box_lib,\
|
||||
edit_box_draw,'edit_box',\
|
||||
edit_box_key,'edit_box_key';,\
|
||||
;edit_box_mouse,'edit_box_mouse'
|
||||
import msgbox,\
|
||||
mb_create,'mb_create'
|
||||
|
||||
dict:
|
||||
include 'dictionary.wrd'
|
||||
|
||||
SizeDict = $;-dict
|
||||
|
||||
|
||||
i_end:
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
;WordFP rb 1024
|
||||
; m1 dd 0
|
||||
;filBuffer rd 1
|
||||
|
||||
|
||||
ThreadInfo: rb 1024
|
||||
;pathprog
|
||||
mouse_dd rd 1
|
||||
text rb 40
|
||||
perevText rb 300
|
||||
;fStruc rb 30
|
||||
;fInfo rb 40
|
||||
mbThread rb 1024
|
||||
|
||||
|
||||
rb 4096
|
||||
mem:
|
||||
|
1361
programs/other/dictionary/dictionary.wrd
Normal file
1361
programs/other/dictionary/dictionary.wrd
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user