/programs/system/mousemul/trunk/build.sh |
---|
File deleted |
Property changes: |
Deleted: svn:executable |
-* |
\ No newline at end of property |
/programs/system/mousemul/trunk/mousemul.asm |
---|
File deleted |
\ No newline at end of file |
/programs/system/mousemul/trunk/MOUSEMUL.DBG |
---|
0,0 → 1,117 |
0x0 RECT.left |
0x4 RECT.top |
0x8 RECT.right |
0xC RECT.bottom |
0x0 BOX.left |
0x4 BOX.top |
0x8 BOX.width |
0xC BOX.height |
0x0 process_information.cpu_usage |
0x4 process_information.window_stack_position |
0x6 process_information.window_stack_value |
0x8 process_information.anonymous?0000014 |
0xA process_information.process_name |
0x16 process_information.memory_start |
0x1A process_information.used_memory |
0x1E process_information.PID |
0x22 process_information.box |
0x22 process_information.box.left |
0x26 process_information.box.top |
0x2A process_information.box.width |
0x2E process_information.box.height |
0x32 process_information.slot_state |
0x34 process_information.anonymous?0000015 |
0x36 process_information.client_box |
0x36 process_information.client_box.left |
0x3A process_information.client_box.top |
0x3E process_information.client_box.width |
0x42 process_information.client_box.height |
0x46 process_information.wnd_state |
0x47 process_information.anonymous?0000016 |
0x0 system_colors.frame |
0x4 system_colors.grab |
0x8 system_colors.grab_button |
0xC system_colors.grab_button_text |
0x10 system_colors.grab_text |
0x14 system_colors.work |
0x18 system_colors.work_button |
0x1C system_colors.work_button_text |
0x20 system_colors.work_text |
0x24 system_colors.work_graph |
0x0 FILEDATE.Second |
0x1 FILEDATE.Minute |
0x2 FILEDATE.Hour |
0x3 FILEDATE.anonymous?000004B |
0x4 FILEDATE.Day |
0x5 FILEDATE.Month |
0x6 FILEDATE.Year |
0x0 FILEINFO.Attributes |
0x4 FILEINFO.IsUnicode |
0x5 FILEINFO.anonymous?000005C |
0x8 FILEINFO.DateCreate |
0x8 FILEINFO.DateCreate.Second |
0x9 FILEINFO.DateCreate.Minute |
0xA FILEINFO.DateCreate.Hour |
0xB FILEINFO.DateCreate.anonymous?000004B |
0xC FILEINFO.DateCreate.Day |
0xD FILEINFO.DateCreate.Month |
0xE FILEINFO.DateCreate.Year |
0x10 FILEINFO.DateAccess |
0x10 FILEINFO.DateAccess.Second |
0x11 FILEINFO.DateAccess.Minute |
0x12 FILEINFO.DateAccess.Hour |
0x13 FILEINFO.DateAccess.anonymous?000004B |
0x14 FILEINFO.DateAccess.Day |
0x15 FILEINFO.DateAccess.Month |
0x16 FILEINFO.DateAccess.Year |
0x18 FILEINFO.DateModify |
0x18 FILEINFO.DateModify.Second |
0x19 FILEINFO.DateModify.Minute |
0x1A FILEINFO.DateModify.Hour |
0x1B FILEINFO.DateModify.anonymous?000004B |
0x1C FILEINFO.DateModify.Day |
0x1D FILEINFO.DateModify.Month |
0x1E FILEINFO.DateModify.Year |
0x20 FILEINFO.Size |
0x24 __start |
0x346 __end |
0xB60 __memory |
0xB60 __stack |
0x24 start |
0x2C wait_event_one |
0x15D checkspeed |
0x53 wait_event_two |
0xEA unset_hotkeys |
0x76 set_hotkeys |
0x67 key |
0x202 mousewriteli |
0x16A mouseread |
0x186 sravn |
0x18A real |
0x197 nullli |
0x1E7 xmin |
0x1F8 ymin |
0x1B3 razr |
0x1C3 rightdownli |
0x1DB xmax |
0x1EB ymax |
0x1CB mousewrite |
0x244 keyone |
0x259 keytwo |
0x26E keythree |
0x283 keyfour |
0x298 keysix |
0x2AD keyseven |
0x2C2 keyeight |
0x2D7 keynine |
0x2EC keyfive |
0x314 left |
0x332 down |
0x323 right |
0x33C up |
0x316 leftstart |
0x325 rightstart |
0x334 downstart |
0x33E upstart |
0x346 __data |
0x346 __udata |
/programs/system/mousemul/trunk/build.bat |
---|
1,2 → 1,2 |
@fasm mousemul.asm mousemul |
@fasm mousEmul.asm mousemul |
@pause |
/programs/system/mousemul/trunk/macros.inc |
---|
0,0 → 1,263 |
; new application structure |
macro meos_app_start |
{ |
use32 |
org 0x0 |
db 'MENUET01' |
dd 0x01 |
dd __start |
dd __end |
dd __memory |
dd __stack |
if used __params & ~defined __params |
dd __params |
else |
dd 0x0 |
end if |
dd 0x0 |
} |
MEOS_APP_START fix meos_app_start |
macro code |
{ |
__start: |
} |
CODE fix code |
macro data |
{ |
__data: |
} |
DATA fix data |
macro udata |
{ |
if used __params & ~defined __params |
__params: |
db 0 |
__end: |
rb 255 |
else |
__end: |
end if |
__udata: |
} |
UDATA fix udata |
macro meos_app_end |
{ |
align 32 |
rb 2048 |
__stack: |
__memory: |
} |
MEOS_APP_END fix meos_app_end |
; macro for defining multiline text data |
struc mstr [sstring] |
{ |
forward |
local ssize |
virtual at 0 |
db sstring |
ssize = $ |
end virtual |
dd ssize |
db sstring |
common |
dd -1 |
} |
; strings |
macro sz name,[data] { ; from MFAR [mike.dld] |
common |
if used name |
label name |
end if |
forward |
if used name |
db data |
end if |
common |
if used name |
.size = $-name |
end if |
} |
macro lsz name,[lng,data] { ; from MFAR [mike.dld] |
common |
if used name |
label name |
end if |
forward |
if (used name)&(lang eq lng) |
db data |
end if |
common |
if used name |
.size = $-name |
end if |
} |
; easy system call macro |
macro mpack dest, hsrc, lsrc |
{ |
if (hsrc eqtype 0) & (lsrc eqtype 0) |
mov dest, (hsrc) shl 16 + lsrc |
else |
if (hsrc eqtype 0) & (~lsrc eqtype 0) |
mov dest, (hsrc) shl 16 |
add dest, lsrc |
else |
mov dest, hsrc |
shl dest, 16 |
add dest, lsrc |
end if |
end if |
} |
macro __mov reg,a,b { ; mike.dld |
if (~a eq)&(~b eq) |
mpack reg,a,b |
else if (~a eq)&(b eq) |
mov reg,a |
end if |
} |
macro mcall a,b,c,d,e,f { ; mike.dld |
__mov eax,a |
__mov ebx,b |
__mov ecx,c |
__mov edx,d |
__mov esi,e |
__mov edi,f |
int 0x40 |
} |
; optimize the code for size |
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp> |
macro add arg1,arg2 |
{ |
if (arg2 eqtype 0) |
if (arg2) = 1 |
inc arg1 |
else |
add arg1,arg2 |
end if |
else |
add arg1,arg2 |
end if |
} |
macro sub arg1,arg2 |
{ |
if (arg2 eqtype 0) |
if (arg2) = 1 |
dec arg1 |
else |
sub arg1,arg2 |
end if |
else |
sub arg1,arg2 |
end if |
} |
macro mov arg1,arg2 |
{ |
if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0')) |
if (arg2) = 0 |
xor arg1,arg1 |
else if (arg2) = 1 |
xor arg1,arg1 |
inc arg1 |
else if (arg2) = -1 |
or arg1,-1 |
else if (arg2) > -128 & (arg2) < 128 |
push arg2 |
pop arg1 |
else |
mov arg1,arg2 |
end if |
else |
mov arg1,arg2 |
end if |
} |
macro struct name |
{ |
virtual at 0 |
name name |
sizeof.#name = $ - name |
end virtual |
} |
; structures used in MeOS |
struc process_information |
{ |
.cpu_usage dd ? ; +0 |
.window_stack_position dw ? ; +4 |
.window_stack_value dw ? ; +6 |
.not_used1 dw ? ; +8 |
.process_name rb 12 ; +10 |
.memory_start dd ? ; +22 |
.used_memory dd ? ; +26 |
.PID dd ? ; +30 |
.x_start dd ? ; +34 |
.y_start dd ? ; +38 |
.x_size dd ? ; +42 |
.y_size dd ? ; +46 |
.slot_state dw ? ; +50 |
rb (1024-52) |
} |
struct process_information |
struc system_colors |
{ |
.frame dd ? |
.grab dd ? |
.grab_button dd ? |
.grab_button_text dd ? |
.grab_text dd ? |
.work dd ? |
.work_button dd ? |
.work_button_text dd ? |
.work_text dd ? |
.work_graph dd ? |
} |
struct system_colors |
; constants |
; events |
EV_IDLE = 0 |
EV_TIMER = 0 |
EV_REDRAW = 1 |
EV_KEY = 2 |
EV_BUTTON = 3 |
EV_EXIT = 4 |
EV_BACKGROUND = 5 |
EV_MOUSE = 6 |
EV_IPC = 7 |
EV_STACK = 8 |
; event mask bits for function 40 |
EVM_REDRAW = 1b |
EVM_KEY = 10b |
EVM_BUTTON = 100b |
EVM_EXIT = 1000b |
EVM_BACKGROUND = 10000b |
EVM_MOUSE = 100000b |
EVM_IPC = 1000000b |
EVM_STACK = 10000000b |
/programs/system/mousemul/trunk/mousEmul.ASM |
---|
0,0 → 1,513 |
; <--- description ---> |
; compiler: FASM 1.67.23 |
; name: Mouse Emulation For KolibriOS |
; version: 0.8 |
; last update: 03/10/2007 |
; written by: Zlobny_Gluk |
; e-mail: umbrosia@land.ru |
; <--- include all KolibriOS stuff ---> |
;include "lang.inc" |
include "MACROS.INC" |
; <--- start of KolibriOS application ---> |
MEOS_APP_START |
; <--- start of code ---> |
CODE |
start: |
;set an waiting mask |
mcall 40,10b |
wait_event_one: |
call checkspeed |
mov eax,66 |
mov ebx,3 |
int 0x40 |
test eax,0x80 |
jnz wait_event_two |
cmp ebp,1 |
je unset_hotkeys |
mov eax,5 |
mov ebx,10 |
int 0x40 |
jmp wait_event_one |
wait_event_two: |
cmp ebp,0 |
je set_hotkeys |
mov ebp,1 |
mov eax,10 |
int 0x40 |
cmp eax, 2 ; if event == 2 |
jmp key ; jump to key handler |
jmp wait_event_one ; else return to the start of main cycle |
key: ; key event handler |
mov eax, 2 ; get key code |
int 0x40 |
cmp al,2 |
je mousewriteli |
jmp wait_event_one |
set_hotkeys: |
mov eax,66 |
mov ebx,4 |
mov cl,79d |
mov edx,0 |
int 0x40 |
mov eax,66 |
mov ebx,4 |
mov cl,80 |
mov edx,0 |
int 0x40 |
mov eax,66 |
mov ebx,4 |
mov cl,81 |
mov edx,0 |
int 0x40 |
mov eax,66 |
mov ebx,4 |
mov cl,75 |
mov edx,0 |
int 0x40 |
mov eax,66 |
mov ebx,4 |
mov cl,76 |
mov edx,0 |
int 0x40 |
mov eax,66 |
mov ebx,4 |
mov cl,77 |
mov edx,0 |
int 0x40 |
mov eax,66 |
mov ebx,4 |
mov cl,71 |
mov edx,0 |
int 0x40 |
mov eax,66 |
mov ebx,4 |
mov cl,72 |
mov edx,0 |
int 0x40 |
mov eax,66 |
mov ebx,4 |
mov cl,73 |
mov edx,0 |
int 0x40 |
mov ebp,1 |
jmp wait_event_two |
unset_hotkeys: |
mov eax,66 |
mov ebx,5 |
mov cl,79 |
mov edx,0 |
int 0x40 |
mov eax,66 |
mov ebx,5 |
mov cl,80 |
mov edx,0 |
int 0x40 |
mov eax,66 |
mov ebx,5 |
mov cl,81 |
mov edx,0 |
int 0x40 |
mov eax,66 |
mov ebx,5 |
mov cl,75 |
mov edx,0 |
int 0x40 |
mov eax,66 |
mov ebx,5 |
mov cl,76 |
mov edx,0 |
int 0x40 |
mov eax,66 |
mov ebx,5 |
mov cl,77 |
mov edx,0 |
int 0x40 |
mov eax,66 |
mov ebx,5 |
mov cl,71 |
mov edx,0 |
int 0x40 |
mov eax,66 |
mov ebx,5 |
mov cl,72 |
mov edx,0 |
int 0x40 |
mov eax,66 |
mov ebx,5 |
mov cl,73 |
mov edx,0 |
int 0x40 |
xor ebp,ebp |
jmp wait_event_one |
checkspeed: |
mov eax,18 |
mov ebx,19 |
xor ecx,ecx |
int 0x40 |
mov esi,eax |
ret |
mouseread: |
;numchecking |
mov eax,66 |
mov ebx,3 |
int 0x40 |
test eax,0x80 |
jz wait_event_one |
;mousereading |
mov eax,37 |
mov ebx,0 |
int 0x40 |
add edx,eax |
sravn: |
xor ebx,ebx |
xor edi,edi |
real: |
mov ebx,edx |
mov edi,ebx |
shr ebx,16 ; get x1 |
shl edi,16 ; get y1 |
shr edi,16 |
nullli: |
add ebx,16 |
cmp ebx,65535 |
jg xmin |
sub ebx,15 |
add edi,16 |
cmp edi,65535 |
jg ymin |
sub edi,15 |
razr: |
mov eax,14 |
int 0x40 |
mov ecx,eax |
shr eax,16 ; get x2 |
shl ecx,16 ; get y2 |
shr ecx,16 |
rightdownli: |
cmp eax,ebx |
jl xmax |
cmp ecx,edi |
jl ymax |
mousewrite: |
mov eax,18 |
mov ebx,19 |
mov ecx,4 |
int 0x40 |
jmp wait_event_one |
xmax: |
dec eax |
dec ebx |
dec edi |
shl eax,16 |
add edi,eax |
mov edx,edi |
jmp sravn |
xmin: |
mov edx,edi |
jmp sravn |
ymax: |
dec ecx |
dec ebx |
shl ebx,16 |
mov edi,ebx |
add edi,ecx |
mov edx,edi |
jmp sravn |
ymin: |
shl ebx,16 |
mov edx,ebx |
shr ebx,16 |
jmp sravn |
mousewriteli: |
cmp ah,79 |
je keyone |
cmp ah,80 |
je keytwo |
cmp ah,81 |
je keythree |
cmp ah,75 |
je keyfour |
cmp ah,77 |
je keysix |
cmp ah,71 |
je keyseven |
cmp ah,72 |
je keyeight |
cmp ah,73 |
je keynine |
cmp ah,76 |
je keyfive |
jmp wait_event_one |
;how_much_time: |
;mov eax,26 |
;mov ebx,9 |
;int 0x40 |
;push eax |
;ret |
;oldkeyvsyakoe! |
;incesi: |
;inc esi |
;ret |
;nullesi: |
;xor esi, esi |
;ret |
;oldkey: |
;cmp ah, bh |
;je incesi |
;cmp ah, bh |
;jne nullesi |
;ret |
keyone: |
;call oldkey |
xor edx,edx |
call left |
call down |
xor ah,ah |
mov bh,79 |
jmp mouseread |
keytwo: |
;call oldkey |
xor edx,edx |
call down |
call down |
xor ah,ah |
mov bh,80 |
jmp mouseread |
keythree: |
;call oldkey |
xor edx,edx |
call right |
call down |
xor ah,ah |
mov bh,81 |
jmp mouseread |
keyfour: |
;call oldkey |
xor edx,edx |
call left |
call left |
xor ah,ah |
mov bh,75 |
jmp mouseread |
keysix: |
;call oldkey |
xor edx,edx |
call right |
call right |
xor ah,ah |
mov bh,77 |
jmp mouseread |
keyseven: |
;call oldkey |
xor edx,edx |
call left |
call up |
xor ah,ah |
mov bh,71 |
jmp mouseread |
keyeight: |
;call oldkey |
xor edx,edx |
call up |
call up |
xor ah,ah |
mov bh,72 |
jmp mouseread |
keynine: |
;call oldkey |
xor edx,edx |
call right |
call up |
xor ah,ah |
mov bh,73 |
jmp mouseread |
keyfive: |
mcall 18, 19, 5, 1 |
mov eax,5 |
mov ebx,1 |
int 0x40 |
mcall 18, 19, 5, 0 |
jmp wait_event_one |
left: |
mov eax,esi |
leftstart: |
dec eax |
sub edx,65536 |
cmp eax,0 |
ja leftstart |
ret |
right: |
mov eax,esi |
rightstart: |
dec eax |
add edx,65536 |
cmp eax,0 |
ja rightstart |
ret |
down: |
mov eax,esi |
downstart: |
dec eax |
add edx,1 |
cmp eax,0 |
ja downstart |
ret |
up: |
mov eax,esi |
upstart: |
dec eax |
sub edx,1 |
cmp eax,0 |
ja upstart |
ret |
; <--- initialised data ---> |
DATA |
; <--- uninitialised data ---> |
UDATA |
MEOS_APP_END |
; <--- end of KolibriOS application ---> |
; ZG |