/programs/media/scrshoot/scrshoot.mac |
---|
File deleted |
\ No newline at end of file |
/programs/media/scrshoot/macros.inc |
---|
0,0 → 1,399 |
;--- ¤à㣨¥ ¬ ªà®áë --- |
include '..\..\develop\examples\editbox\trunk\editbox.inc' |
include 'txtbut.inc' |
;include 'gp.inc' |
include 'label.inc' |
;include '..\..\develop\examples\checkbox\trunk\check.inc' |
include 'check.inc' |
include 'file_sys.inc' |
include 'textwork.inc' |
;include 'ini.inc' |
__CPU_type equ p5 |
SYSENTER_VAR equ 0 |
macro movr reg,val |
{ |
if val < 65536 |
push val |
pop reg |
else |
mov reg,val |
end if |
} |
macro mcall a,b,c,d,e,f { ; mike.dld, updated by Ghost for Fast System Calls |
local ..ret_point |
__mov eax,a |
__mov ebx,b |
__mov ecx,c |
__mov edx,d |
__mov esi,e |
__mov edi,f |
if __CPU_type eq p5 |
int 0x40 |
else |
if __CPU_type eq p6 |
push ebp |
mov ebp, esp |
push ..ret_point ; it may be 2 or 5 byte |
sysenter |
..ret_point: |
pop edx |
pop ecx |
else |
if __CPU_type eq k6 |
push ecx |
syscall |
pop ecx |
else |
display 'ERROR : unknown CPU type' |
int 0x40 |
end if |
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 meos_header par_buf,cur_dir_buf |
{ |
use32 |
org 0x0 |
db 'MENUET01' |
dd 0x01 |
dd __app_start |
dd __app_end |
dd __app_end |
dd __app_end |
if <par_buf> eq <> |
dd 0x0 |
else |
dd par_buf |
end if |
if <cur_dir_buf> eq <> |
dd 0x0 |
else |
dd cur_dir_buf |
end if |
} |
;--- ®¯à¥¤¥«¨âì â®çªã ¢å®¤ --- |
macro app_start |
{ |
__app_start: |
} |
;--- ®¯à¥¤¥«¨âì ª®¥æ ¯à¨«®¦¥¨ï ¨ à §¬¥à á⥪ --- |
macro app_end stack_size |
{ |
if <stack_size> eq <> |
rb 1024 |
else |
rb stack_size |
end if |
__app_end: |
} |
;--- § ¢¥àè¨âì ⥪ã騩 ¯®â®ª --- |
macro app_close |
{ |
xor eax,eax |
dec eax |
int 0x40 |
} |
;--- ¯®«ãç¨âì ª®¤ ¦ ⮩ ª« ¢¨è¨ --- |
macro get_key |
{ |
;mov eax,2 |
push 2 |
pop eax |
int 0x40 |
} |
;--- ¯®«ãç¨âì ª®¤ ¦ ⮩ ª®¯ª¨ --- |
macro get_pressed_button |
{ |
;mov eax,17 |
push 17 |
pop eax |
int 0x40 |
} |
;--- á®®¡é¨âì á¨á⥬¥ ® ç «¥ ¯¥à¥à¨á®¢ª¨ ®ª --- |
macro start_draw_window |
{ |
;mov eax,12 |
push 12 |
pop eax |
xor ebx,ebx |
inc ebx |
int 0x40 |
} |
;--- á®®¡é¨âì á¨á⥬¥ ® § ¢¥à襨¨ ¯¥à¥à¨á®¢ª¨ ®ª --- |
macro stop_draw_window |
{ |
;mov eax,12 |
push 12 |
pop eax |
;mov ebx,2 |
push 2 |
pop ebx |
int 0x40 |
} |
;--- ãáâ ®¢¨âì ¬ áªã ®¦¨¤ ¥¬ëå ᮡë⨩ --- |
macro set_events_mask mask |
{ |
;mov eax,40 |
push 40 |
pop eax |
;mov ebx,mask |
push mask |
pop ebx |
int 0x40 |
} |
;--- ¯®«ãç¨âì ¨ä®à¬ æ¨î ® ¯à®æ¥áᥠ--- |
macro get_procinfo proc_inf_buf,slot_num |
{ |
;mov eax,9 |
push 9 |
pop eax |
;mov ebx,proc_inf_buf |
push proc_inf_buf |
pop ebx |
if <slot_num> eq <> |
xor ecx,ecx |
dec ecx |
else |
;mov ecx,slot_num |
push slot_num |
pop ecx |
end if |
int 0x40 |
} |
macro get_sys_colors col_buf |
{ |
;mov eax,48 |
push 48 |
pop eax |
;mov ebx,3 |
push 3 |
pop ebx |
;mov ecx,col_buf |
push col_buf |
pop ecx |
;mov edx,40 |
push 40 |
pop edx |
int 0x40 |
} |
macro get_grab_area |
{ |
movr eax,48 |
movr ebx,7 |
int 0x40 |
} |
macro get_skin_height |
{ |
movr eax,48 |
movr ebx,4 |
int 0x40 |
} |
macro min_window |
{ |
movr eax,18 |
movr ebx,10 |
int 0x40 |
} |
macro activ_window slot_n |
{ |
movr eax,18 |
movr ebx,3 |
if <slot_n> eq <> |
else |
movr ecx,slot_n |
end if |
int 0x40 |
} |
macro get_active_window |
{ |
movr eax,18 |
movr ebx,7 |
int 0x40 |
} |
macro delay time |
{ |
movr eax,5 |
if <time> eq <> |
else |
movr ebx,time |
end if |
int 0x40 |
} |
;--- ®¦¨¤ âì ᮡëâ¨ï --- |
macro wait_event redraw,key,button,mouse,ipc,other |
{ |
movr eax,10 |
int 0x40 |
dec ax |
if <redraw> eq <> |
else |
jz redraw |
end if |
dec ax |
if <key> eq <> |
else |
jz key |
end if |
dec ax |
if <button> eq <> |
else |
jz button |
end if |
dec ax |
dec ax |
dec ax |
if <mouse> eq <> |
else |
jz mouse |
end if |
if <ipc> eq <> |
else |
dec ax |
jz ipc |
end if |
if <other> eq <> |
jmp still |
else |
jmp other |
end if |
} |
;--- ¯®«ãç¨âì à §¬¥àë íªà --- |
macro get_screen_size |
{ |
movr eax,14 |
int 0x40 |
} |
macro get_screen_prop struc_ptr |
{ |
movr eax,61 |
push eax eax |
xor ebx,ebx |
inc ebx |
int 0x40 |
mov [struc_ptr],eax |
pop eax |
inc ebx |
int 0x40 |
mov [struc_ptr+4],ax |
pop eax |
inc ebx |
int 0x40 |
mov [struc_ptr+6],eax |
} |
macro resize_mem mem_size |
{ |
movr eax,64 |
xor ebx,ebx |
inc ebx |
if <mem_size> eq <> |
else |
movr ecx,mem_size |
end if |
int 0x40 |
} |
evm_redraw equ 1 |
evm_key equ 10b |
evm_button equ 100b |
evm_mouse equ 100000b |
evm_ipc equ 1000000b |
struc procinfo |
{ |
.takts_per_second: dd ? |
.window_stack_pos: dw ? |
.slot_number: dw ? |
dw ? |
.name: rb 11 |
.align: db ? |
.addres: dd ? |
.use_mem: dd ? |
.pid: dd ? |
.left: dd ? |
.top: dd ? |
.width: dd ? |
.height: dd ? |
.slot_state: dw ? |
rb (1024-56) |
} |
struc sys_color_table |
{ |
.frames: dd ? ;+0 |
.grab: dd ? ;+4 |
.grab_button: dd ? ;+8 |
.grab_button_text: dd ? ;+12 |
.grab_text: dd ? ;+16 |
.work: dd ? ;+20 |
.work_button: dd ?;+24 |
.work_button_text: dd ? ;+28 |
.work_text: dd ? ;+32 |
.work_graph: dd ? ;+36 |
} |
struc screen_size |
{ |
.height: dw ? |
.width: dw ? |
} |
struc screen_prop |
{ |
.height: dw ? ;+0 |
.width: dw ? ;+2 |
.bitspp: dw ? ;+4 |
.bytesps: dd ?;+6 |
} |
struc ipc_buffer size |
{ |
.block: dd ? |
.in_use: dd ? |
.messages: rb size |
} |
;--- 梥â --- |
cl_white=0xffffff |
cl_black=0x000000 |
;============================================================================== |
;============== ®áâ âë ===================================================== |
;============================================================================== |
/programs/media/scrshoot/scrshoot.asm |
---|
1,60 → 1,29 |
; 01.06.09 - ®¬¯®¥âë ¡¥àãâìáï ¨§ á¨á⥬®© ¡¨¡«¨®â¥ª¨ <Lrz> |
; ¢â®à ¯à®£à ¬¬ë ¢â¨å®¢ ªá¨¬ (Maxxxx32) |
; 24.07.2008 <Lrz> ®¡®¢«¥ editbox |
; 01.02.07 - ®¡®¢«ñ editbox |
; 31.01.07 - ¢áñ ⥯¥àì à¨áã¥âáï ®â®á¨â¥«ì® ª«¨¥â᪮© ®¡« á⨠|
macro draw_status text_ptr |
{ |
mov [status.text],dword text_ptr |
call send_draw_status |
} |
title equ 'Screenshooter v 0.91' ; £®«®¢®ª ®ª |
include '../../develop/libraries/box_lib/trunk/load_lib.mac' |
include '../../develop/libraries/box_lib/trunk/editbox_ex.mac' |
;include '../../develop/examples/editbox/trunk/editbox.inc' |
include '../../macros.inc' |
include 'scrshoot.mac' |
include 'txtbut.inc' |
include 'label.inc' |
include 'textwork.inc' |
;include 'macros.inc' ; ¢áâ ¢«ï¥¬ ¬ ªà®áë |
; meos_header cmdstr ; ¢áâ ¢«ï¥¬ § £®«®¢®ª ¯à®£à ¬¬ë |
use32 |
org 0x0 |
db 'MENUET01' |
dd 0x1 |
dd start |
dd i_end |
dd i_end |
dd i_end |
dd cmdstr |
dd cur_dir_path |
align 4 |
title equ 'Screenshooter v 0.9' ; £®«®¢®ª ®ª |
include 'macros.inc' ; ¢áâ ¢«ï¥¬ ¬ ªà®áë |
meos_header cmdstr ; ¢áâ ¢«ï¥¬ § £®«®¢®ª ¯à®£à ¬¬ë |
include 'scrwin.inc' ; ¢áâ ¢«ï¥¬ ª®¤ ®ª ¯à¤¯à®á¬®âà |
include 'scrsavef.inc'; ¢áâ ¢«ï¥¬ ¯à®æ¥¤ãàã á®åà ¥¨ï ä ©« |
@use_library |
use_edit_box ; \ |
use_txt_button ; | |
use_label ; |-- GUI ª®¬¯®¥âë ¨ ¥ª®â®àë¥ ¯à®æ¥¤ãàë |
use_check_box ; | |
use_text_work ; / |
include 'gp.inc' |
include 'srectwin.inc' |
include 'lang.inc' |
;--- ç «® ¯à®£à ¬¬ë --- |
align 4 |
start: |
sys_load_library library_name, cur_dir_path, library_path, system_path, \ |
err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i |
;if return code =-1 then exit, else nornary work |
; cmp eax,-1 |
inc eax |
test eax,eax |
jz close |
;;;;;;;;;;;;;;;; init memory 68/11 |
mov eax,68 |
mov ebx,11 |
mcall |
test eax,eax |
jz close |
app_start |
;mov al,[gs:1280*4*1024] |
; ãáâ ¢«¨¢ ¥¬ ipc ¡ãää¥à |
push 60 |
64,7 → 33,7 |
inc ebx |
mov ecx,app_ipc |
mov edx,32 |
mcall |
int 0x40 |
push 66 ; ãáâ ¢«¨¢ ¥¬ £«®¡ «ìãî £®àïçãî ª« ¢¨èã |
pop eax |
72,7 → 41,7 |
mov ebx,4 |
mov cl,55 ; 55 - PrintScrn |
xor edx,edx |
mcall |
int 0x40 |
mov ebx,app |
call get_slot_n |
106,19 → 75,7 |
call shoot |
jmp still |
@@: |
; key_edit_boxes editboxes,editboxes_end |
push dword edit1 |
call [edit_box_key] |
push dword edit2 |
call [edit_box_key] |
push dword edit3 |
call [edit_box_key] |
push dword edit4 |
call [edit_box_key] |
key_edit_boxes editboxes,editboxes_end |
jmp still |
button: |
get_pressed_button |
130,33 → 87,8 |
get_active_window |
cmp eax,[slot_n] |
jne still |
;---------------------------------- |
push dword edit1 |
call [edit_box_mouse] |
push dword edit2 |
call [edit_box_mouse] |
push dword edit3 |
call [edit_box_mouse] |
push dword edit4 |
call [edit_box_mouse] |
;---------------------------------- |
push dword ch1 |
call [check_box_mouse] |
push dword ch2 |
call [check_box_mouse] |
push dword ch3 |
call [check_box_mouse] |
push dword ch4 |
call [check_box_mouse] |
push dword ch5 |
call [check_box_mouse] |
push dword ch6 |
call [check_box_mouse] |
push dword use_rect |
call [check_box_mouse] |
;----------------------------------- |
; mouse_check_boxes check_boxes,check_boxes_end |
; mouse_edit_boxes editboxes,editboxes_end |
mouse_check_boxes check_boxes,check_boxes_end |
mouse_edit_boxes editboxes,editboxes_end |
jmp still |
ipc: |
cmp word [app_ipc+8],2 |
171,7 → 103,7 |
.clear_ipc: |
cld |
xor eax,eax |
mov ecx,32 |
movr ecx,32 |
mov edi,app_ipc |
rep stosb |
jmp still |
181,10 → 113,10 |
bt dword [flags],3 |
jnc @f |
mov eax,18 |
movr eax,18 |
mov ebx,eax |
mov ecx,[set_rect_window_pid] |
mcall |
int 0x40 |
@@: |
close: |
201,14 → 133,14 |
mov ecx,100*65536+220 |
add cx,ax |
mov edx,[sc.work] |
or edx,0x34000000;0x33000000 |
add edx,0x34000000;0x33000000 |
xor esi,esi |
;xor edi,edi |
mov edi,grab_text |
xor eax,eax |
mcall |
int 0x40 |
mov eax,47 ; ¢ë¢®¤¨¬ ç¨á« ¢ ®ª® |
movr eax,47 ; ¢ë¢®¤¨¬ ç¨á« ¢ ®ª® |
mov bx,4 |
shl ebx,16 |
movsx ecx,word [scr.width] ; è¨à¨ íªà |
217,10 → 149,10 |
mov dx,[label1.top] |
push dx |
mov esi,[sc.work_text] |
mcall |
int 0x40 |
movsx ecx,word [scr.height] ; ¢ëá®â íªà |
mov dx,[label2.top] |
mcall |
int 0x40 |
mov bx,2 |
shl ebx,16 |
movsx ecx,word [scr.bitspp] ; ¡¨â ¯¨ªá¥«ì |
227,48 → 159,20 |
mov dx,240 |
shl edx,16 |
pop dx |
mcall |
int 0x40 |
mov bx,6 |
shl ebx,16 |
mov ecx,[scr.bytesps] ; ¡ ©â áâபã |
mov dx,[label2.top] |
mcall |
int 0x40 |
call draw_number ; ¯à®à¨á®¢ë¢ ¥¬ ®¬¥à ᨬª |
call dr_st |
draw_labels labels,labels_end ; ¬¥âª¨ |
; draw_edit_boxes editboxes,editboxes_end ; edit_box |
;------ show check editbox ----------- |
push dword edit1 |
call [edit_box_draw] |
push dword edit2 |
call [edit_box_draw] |
push dword edit3 |
call [edit_box_draw] |
push dword edit4 |
call [edit_box_draw] |
;------ end check all editbox ------- |
draw_edit_boxes editboxes,editboxes_end ; edit_box |
draw_txt_buttons buttons,buttons_end ; ª®¯ª¨ |
; draw_check_boxes check_boxes,check_boxes_end ; ä« ¦ª¨ |
;------ check all checkbox --------- |
push dword ch1 |
call [check_box_draw] |
push dword ch2 |
call [check_box_draw] |
push dword ch3 |
call [check_box_draw] |
push dword ch4 |
call [check_box_draw] |
push dword ch5 |
call [check_box_draw] |
push dword ch6 |
call [check_box_draw] |
push dword use_rect |
call [check_box_draw] |
;------ end check all checkbox ------ |
draw_check_boxes check_boxes,check_boxes_end ; ä« ¦ª¨ |
stop_draw_window ; ª®¥æ ¯¥à¥à¨á®¢ª¨ |
ret |
327,12 → 231,7 |
;--- ¯®«ãç¨âì ¯ ¬ïâì ¤«ï ᨬª --- |
get_mem_for_shoot: |
;clean memory |
mov ecx,dword [scr_buf.ptr] |
mov ebx,13 |
mov eax,68 |
mcall |
mov [scr_buf.ptr],dword __app_end |
bt dword [use_rect.flags],1 ; ä®âª âì ®¡« áâì íªà |
jc .use_area |
movzx ecx, word [scr.width] |
345,13 → 244,12 |
@@: |
imul ecx,ebx |
lea ecx,[ecx*3] |
; add ecx,i_end |
mov ebx,12 |
mov eax,68 |
mcall |
mov [scr_buf.ptr],eax |
add eax,ecx |
add ecx,__app_end |
mov [scr_buf.end_ptr],ecx |
xor ebx,ebx |
inc ebx |
mov eax,64 |
int 0x40 |
ret |
;--- ᮤ âì ®ª® ¯à®¥¤¯à®á¬®âà --- |
362,9 → 260,9 |
mov eax,51 |
xor ebx,ebx |
inc ebx |
mov ecx,scr_window |
mov edx,i_end_tread-1000 |
mcall |
movr ecx,scr_window |
mov edx,__app_end-1000 |
int 0x40 |
@@: |
popa |
ret |
382,14 → 280,14 |
mov edi,sign_n_input |
call zstr_to_int |
mov [sign_n],al |
mov eax,13 |
movr eax,13 |
mov ebx,150*65536+96 |
mov cx,[label9.top] |
shl ecx,16 |
mov cx,10 |
mov edx,[sc.work] |
mcall |
mov eax,47 |
int 0x40 |
movr eax,47 |
movsx bx,byte [sign_n] |
shl ebx,16 |
mov ecx,[cur_number] |
397,7 → 295,7 |
shl edx,16 |
mov dx,[label9.top] |
mov esi,[sc.work_text] |
mcall |
int 0x40 |
ret |
;--- ¯à®æ¥¤ãà , § ¯ã᪠îé ï ¯®â®ª ¢â®áꥬª¨ --- |
404,13 → 302,13 |
start_autoshoot: |
bts dword [flags],1 |
jc @f |
mov eax,51 |
movr eax,51 |
;mov ebx,1 |
xor ebx,ebx |
inc ebx |
mov ecx,autoshoot |
mov edx,i_end_tread-512 |
mcall |
mov edx,__app_end-512 |
int 0x40 |
@@: |
ret |
426,12 → 324,12 |
.next: |
bt dword [flags],1 |
jnc close |
mov eax,60 |
mov ebx,2 |
movr eax,60 |
movr ebx,2 |
mov ecx,[app.pid] |
mov edx,messages.draw_number |
mov esi,2 |
mcall |
int 0x40 |
call shoot |
jmp autoshoot.next |
438,17 → 336,17 |
;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ áâப¨ á®áâ®ï¨ï --- |
; (¤®«¦ ¢ë§ë¢ âìáï ¯®â®ª®¬ £« ¢®£® ®ª ) |
dr_st: |
mov eax,38 ; ®â१®ª |
movr eax,38 ; ®â१®ª |
mov ebx,0*65536+310 |
mov ecx,198*65536+198 |
mov edx,[sc.work_graph] |
mcall |
int 0x40 |
mov eax,13 ; ¯®«®áª |
movr eax,13 ; ¯®«®áª |
mov bx,310 |
mov ecx,199*65536+15 |
mov edx,[sc.work] |
mcall |
int 0x40 |
mov edi,status |
call draw_label |
458,17 → 356,17 |
; ¢å®¤ ebx - ¡ãää¥à 1024 ¡ ©â |
; ¢ë室 ecx - ®¬¥à á«®â |
get_slot_n: |
mov eax,9 |
movr eax,9 |
xor ecx,ecx |
dec ecx |
mcall |
int 0x40 |
mov edx,[ebx+30] |
xor ecx,ecx |
@@: |
mov eax,9 |
movr eax,9 |
inc ecx |
mcall |
int 0x40 |
cmp [ebx+30],edx |
je @f |
jmp @b |
490,11 → 388,11 |
bt dword [flags],1 |
jc .running |
mov eax,51 |
movr eax,51 |
;mov ebx,1 |
xor ebx,ebx |
inc ebx |
mcall |
int 0x40 |
.running: |
ret |
504,12 → 402,12 |
activ_window |
bt dword [ch1.flags],1 ; ¬¨¨¬¨§¨à®¢ âì ®ª® ? |
jnc @f |
mov eax,60 |
mov ebx,2 |
movr eax,60 |
movr ebx,2 |
mov ecx,[app.pid] |
mov edx,messages.min_window |
mov esi,2 |
mcall |
int 0x40 |
@@: |
call shoot |
btr dword [flags],2 |
518,12 → 416,12 |
;--- ¯à®æ¥¤ãà , ®â¯à ¢«ïîé ï £« ¢®¬ã ®ªã á®®¡é¥¨¥ ® ¯¥à¥à¨á®¢ª¥ |
; áâப¨ á®áâ®ï¨ï --- |
send_draw_status: |
mov eax,60 |
mov ebx,2 |
movr eax,60 |
movr ebx,2 |
mov ecx,[app.pid] |
mov edx,messages.draw_status |
mov esi,2 |
mcall |
int 0x40 |
ret |
;--- ¯®â®ª, á®åà ï ä ©« --- |
538,34 → 436,34 |
show_set_rect_window: |
bts dword [flags],3 |
jc @f |
mov eax,51 |
movr eax,51 |
xor ebx,ebx |
inc ebx |
mov ecx,set_rect_window |
mov edx,set_rect_window_esp |
mcall |
int 0x40 |
mov [set_rect_window_pid],eax |
ret |
@@: |
mov eax,18 |
movr eax,18 |
mov ebx,eax |
mov ecx,[set_rect_window_pid] |
mcall |
int 0x40 |
btr dword [flags],3 |
ret |
;--- ¯®«ã票¥ ¨ä®à¬ 樨 ®¡ ªâ¨¢®¬ ®ª¥ --- |
get_active_window_info: |
mov eax,18 |
mov ebx,7 |
mcall |
movr eax,18 |
movr ebx,7 |
int 0x40 |
mov ecx,eax |
mov eax,9 |
movr eax,9 |
mov ebx,active_app |
mcall |
int 0x40 |
ret |
;==================================================================== |
595,9 → 493,9 |
labels_end: |
editboxes: |
edit1 edit_box 300,5,35,cl_white,0xaabbcc,0,0,0,300,ed_buffer.1,ed_focus,10,10 ; ¯ãâì ª ä ©«ã |
edit2 edit_box 35,75,134,cl_white,0xaabbcc,0,0,0,9,ed_buffer.2,ed_figure_only,3,3 ; § ¤¥à¦ª |
edit3 edit_box 35,165,164,cl_white,0xaabbcc,0,0,0,9,ed_buffer.3,ed_figure_only ; ¢â®ã¬¥à æ¨ï |
edit1 edit_box 300,5,35,cl_white,0xaabbcc,0,0,0,1024,ed_buffer.1,ed_focus ; ¯ãâì ª ä ©«ã |
edit2 edit_box 35,75,134,cl_white,0xaabbcc,0,0,0,9,ed_buffer.2,ed_figure_only ; § ¤¥à¦ª |
edit3 edit_box 35,165,164,cl_white,0xaabbcc,0,0,0,9,ed_buffer.3,ed_figure_only |
edit4 edit_box 16,165,181,cl_white,0xaabbcc,0,0,0,1,sign_n_input,ed_figure_only,1 |
editboxes_end: |
612,13 → 510,13 |
buttons_end: |
check_boxes: |
ch1 check_box 5,105,5,11,cl_white,0,0,ch_text.1,(ch_text.2-ch_text.1),ch_flag_en ; ᢥàãâì ®ª® |
ch2 check_box 5,120,5,11,cl_white,0,0,ch_text.2,(ch_text.3-ch_text.2),ch_flag_en ; § ⥬ ᤥ« âì ªâ¨¢ë¬ |
ch3 check_box 145,105,5,11,cl_white,0,0,ch_text.3,(ch_text.4-ch_text.3),ch_flag_en ; ¯®ª § âì ᨬ®ª |
ch4 check_box 5,135,5,11,cl_white,0,0,ch_text.4,(ch_text.5-ch_text.4),ch_flag_en ; § ¤¥à¦ª |
ch5 check_box 5,150,5,11,cl_white,0,0,ch_text.5,(ch_text.6-ch_text.5) |
ch6 check_box 5,165,5,11,cl_white,0,0,ch_text.6,(ch_text.7-ch_text.6),ch_flag_en |
use_rect check_box 145,150,5,11,cl_white,0,0,ch_text.7,(ch_text.8-ch_text.7) ; ¨á¯. ®¡« áâì |
ch1 check_box 5,105,cl_white,0,0,ch_text.1,(ch_text.2-ch_text.1) ; ᢥàãâì ®ª® |
ch2 check_box 5,120,cl_white,0,0,ch_text.2,(ch_text.3-ch_text.2) ; § ⥬ ᤥ« âì ªâ¨¢ë¬ |
ch3 check_box 145,105,cl_white,0,0,ch_text.3,(ch_text.4-ch_text.3) ; ¯®ª § âì ᨬ®ª |
ch4 check_box 5,135,cl_white,0,0,ch_text.4,(ch_text.5-ch_text.4) ; |
ch5 check_box 5,150,cl_white,0,0,ch_text.5,(ch_text.6-ch_text.5) |
ch6 check_box 5,165,cl_white,0,0,ch_text.6,(ch_text.7-ch_text.6) |
use_rect check_box 145,150,cl_white,0,0,ch_text.7,(ch_text.8-ch_text.7) ; ¨á¯. ®¡« áâì |
; ¢â®ã¬¥à æ¨ï |
check_boxes_end: |
712,7 → 610,7 |
bad_fat_table db 'FAT table destroyed',0 |
ac_den db 'Access denied',0 |
device_er db 'Device error',0 |
not_shooted db 'Make a photo !!!',0 |
not_shooted db 'Make photo !!!',0 |
no_file_name db 'Enter file name !!!',0 |
invalid_rect db 'Wrong area size',0 |
722,14 → 620,11 |
db '2',0 |
app_ipc ipc_buffer 32 |
align 4 |
mouse_flag: dd 0x0 |
structure_of_potock: |
rb 100 |
align 4 |
cur_number dd ? |
sign_n db ? |
761,17 → 656,6 |
set_rect_window_pid dd ? |
set_rect_window_slot dd ? |
align 4 |
ed_buffer: |
.1: db '/sys/*.bmp',0 |
rb 287 |
.2: db '100',0 |
rb 6 |
.3: rb 10 |
align 4 |
rect_input_buffer: |
.left rb 6 |
.top rb 6 |
780,7 → 664,10 |
cmdstr rb 257 |
align 4 |
ed_buffer: |
.1: rb 1025 |
.2: rb 10 |
.3: rb 10 |
file_name: |
rb 1058 |
792,6 → 679,7 |
.height dw ? |
.width dw ? |
sc sys_color_table |
app procinfo ; ¨ä®à¬ æ¨ï ® £« ¢®¬ ®ª¥ |
active_app procinfo ; ¨ä®à¬ æ¨ï ®¡ ªâ¨¢®¬ ®ª¥ |
798,11 → 686,4 |
set_rect_window_procinfo procinfo ; ¨ä®à¬ æ¨ï ®¡ ®ª¥ ®¡« á⨠|
shoot_esp rb 512 ; á⥪ ¯®â®ª ä®âª ìï |
set_rect_window_esp rb 512 ; á⥪ ®ª ®¡« á⨠|
; app_end ; ª®¥æ ¯à®£à ¬¬ë |
align 4 |
cur_dir_path rb 4096 |
library_path rb 4096 |
i_end_tread: |
rb 1024 |
align 4 |
i_end: |
app_end ; ª®¥æ ¯à®£à ¬¬ë |
/programs/media/scrshoot/srectwin.inc |
---|
16,19 → 16,8 |
.key: |
get_key |
push dword rect_input.left |
call [edit_box_key] |
key_edit_boxes rect_input,rect_input_end |
push dword rect_input.top |
call [edit_box_key] |
push dword rect_input.width |
call [edit_box_key] |
push dword rect_input.height |
call [edit_box_key] |
; key_edit_boxes rect_input,rect_input_end |
call read_rect |
call draw_rect_on_screen |
50,25 → 39,9 |
cmp eax,[set_rect_window_slot] |
jne .still |
push dword rect_input.left |
call [edit_box_mouse] |
mouse_edit_boxes rect_input,rect_input_end |
mouse_check_boxes riw_check_boxes,riw_check_boxes_end |
push dword rect_input.top |
call [edit_box_mouse] |
push dword rect_input.width |
call [edit_box_mouse] |
push dword rect_input.height |
call [edit_box_mouse] |
;;;;;;;;;;;;;;;;;;;;;; |
push dword use_rect_active_window |
call [check_box_mouse] |
; mouse_edit_boxes rect_input,rect_input_end |
; mouse_check_boxes riw_check_boxes,riw_check_boxes_end |
jmp .still |
.draw_window: |
81,27 → 54,14 |
add edx,0x33000000 |
mov edi,riw_grab_text |
xor esi,esi |
mcall |
int 0x40 |
draw_labels rect_input_labels,rect_input_labels_end |
push dword rect_input.left |
call [edit_box_draw] |
draw_edit_boxes rect_input,rect_input_end |
push dword rect_input.top |
call [edit_box_draw] |
draw_check_boxes riw_check_boxes,riw_check_boxes_end |
push dword rect_input.width |
call [edit_box_draw] |
push dword rect_input.height |
call [edit_box_draw] |
;;;;;;;;;;;;;;;;;;;;;; |
push dword use_rect_active_window |
call [check_box_draw] |
; draw_edit_boxes rect_input,rect_input_end |
; draw_check_boxes riw_check_boxes,riw_check_boxes_end |
call read_rect |
call draw_rect_on_screen |
173,7 → 133,7 |
mov ebx,150*65536+80 |
mov ecx,5*65536+60 |
xor edx,edx |
mcall |
int 0x40 |
;movzx eax,word [rect.left] |
;mul word [scr.width] |
216,52 → 176,9 |
mov edx,0xffffff |
mov eax,13 |
mcall |
int 0x40 |
ret |
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> |
;DATA ¤ ë¥ |
;ᥣ¤ ᮡ«î¤ âì ¯®á«¥¤®¢ ⥫ì®áâì ¢ ¨¬¥¨. |
system_path db '/sys/lib/' |
library_name db 'box_lib.obj',0 |
err_message_found_lib db 'Sorry I cannot load library box_lib.obj',0 |
head_f_i: |
head_f_l db 'System error',0 |
err_message_import db 'Error on load import library box_lib.obj',0 |
myimport: |
edit_box_draw dd aEdit_box_draw |
edit_box_key dd aEdit_box_key |
edit_box_mouse dd aEdit_box_mouse |
version_ed dd aVersion_ed |
check_box_draw dd aCheck_box_draw |
check_box_mouse dd aCheck_box_mouse |
version_ch dd aVersion_ch |
option_box_draw dd aOption_box_draw |
option_box_mouse dd aOption_box_mouse |
version_op dd aVersion_op |
dd 0 |
dd 0 |
aEdit_box_draw db 'edit_box',0 |
aEdit_box_key db 'edit_box_key',0 |
aEdit_box_mouse db 'edit_box_mouse',0 |
aVersion_ed db 'version_ed',0 |
aCheck_box_draw db 'check_box_draw',0 |
aCheck_box_mouse db 'check_box_mouse',0 |
aVersion_ch db 'version_ch',0 |
aOption_box_draw db 'option_box_draw',0 |
aOption_box_mouse db 'option_box_mouse',0 |
aVersion_op db 'version_op',0 |
rect_input: |
.left edit_box 35,95,5,cl_white,0,0,0,5,rect_input_buffer.left,\ |
ed_figure_only+ed_focus |
287,7 → 204,7 |
.height db 'ëá®â :',0 |
riw_check_boxes: |
use_rect_active_window check_box 10,85,5,11,cl_white,0,0,\ |
use_rect_active_window check_box 10,85,cl_white,0,0,\ |
riw_check_boxes_text.1,\ |
riw_check_boxes_text.2-riw_check_boxes_text.1 |
riw_check_boxes_end: |
/programs/media/scrshoot/readme.txt |
---|
1,7 → 1,3 |
<Lrz> - ¨á¯®«ì§ãîâáï ª®¬¯®¥âë ¨§ á¨á⥬®© ¡¨¡«¨®â¥ª¨ box_lib.obj. |
£à®¬ ï ¡« £®¤ à®áâì Mario79, § ᮢ¥âë, â¥áâ¨à®¢ ¨¥ ¨ subrutine ¯® á¡à®áã ¨§®¡à ¦¥¨ï ¢ ¡ãä¥à, ¤«ï ¤ «ì¥©è¥£® á®åà ¥¨ï |
HDD. |
¢â®à ¤®ªã¬¥â ¨ ¯à®£à ¬¬ë: ¢â¨å®¢ ªá¨¬ (Maxxxx32) |
« £®¤ à®áâ¨: |
à âã ª¨ï®¢ã (Mario79) § ¯®¬®éì, ᮢ¥âë, ªà¨â¨ªã; |
/programs/media/scrshoot/scrsavef.inc |
---|
45,21 → 45,13 |
jmp .next |
.str_end: |
;;;;clean memory |
mov ecx,dword [sf_buf.bmp_header] |
mov ebx,13 |
mov eax,68 |
mcall |
; ëç¨á«ï¥¬, ᪮«ìª® ¡ ©â 㦮 ¯à¨¡ ¢«ïâì ª ª ¦¤®© áâப¥, |
; ç⮡ë á«¥¤ãîé ï ¡ë« ¢ëà ¢¥ 4 ¡ ©â . |
; ¥§ã«ìâ â ¯®¬¥é ¥¬ ¢ edi. |
xor edx,edx |
movzx eax,word [scr_buf.width] ; eax = è¨à¨ ª à⨪¨ |
lea eax,[eax*3] ; eax = ¡ ©â áâப㠪 à⨪¨ |
mov ebx,4 ; ebx = 4 |
movr ebx,4 ; ebx = 4 |
mov edi,ebx ; edi = 4 |
div ebx ; eax = ¡ ©â áâப㠪 à⨪¨ div 4 edx = ¡ ©â... mod 4 |
sub edi,edx ; edi = ª®«¨ç¥á⢮ ¡ ©â |
69,11 → 61,10 |
@@: |
; ¢ë¤¥«ï¥¬ ¯ ¬ïâì |
; mov ecx,[scr_buf.end_ptr] |
; mov [sf_buf.bmp_header],ecx |
; add ecx,0x36 |
; mov [sf_buf.bmp_area],ecx |
mov ecx,[scr_buf.end_ptr] |
mov [sf_buf.bmp_header],ecx |
add ecx,0x36 |
mov [sf_buf.bmp_area],ecx |
movsx ebx,word [scr_buf.width] |
movsx edx,word [scr_buf.height] |
;imul ebx,edx |
80,78 → 71,92 |
lea ebx,[ebx*3] |
add ebx,edi |
imul ebx,edx |
mov ecx,ebx |
add ecx,ebx |
mov [sf_buf.end],ecx |
add ecx,4096 |
xor ebx,ebx |
inc ebx |
movr eax,64 |
int 0x40 |
; mov [sf_buf.end],ecx |
add ecx,0x36 |
mov ebx,12 |
mov eax,68 |
mcall |
mov [sf_buf.bmp_header],eax |
add eax,0x36 |
mov [sf_buf.bmp_area],eax |
add eax,ecx |
sub eax,0x36 |
mov [sf_buf.end],eax |
; push edi |
push edi |
; § ¯®«ï¥¬ áâàãªâãàã ¤«ï á®åà ¥¨ï ä ©« |
mov ebp,fs_struc |
mov [ebp],dword 2 |
mov edi,fs_struc |
mov [edi],dword 2 |
mov eax,[sf_buf.bmp_header] |
mov ebx,[sf_buf.end] |
sub ebx,eax |
mov [ebp+12],ebx |
mov [ebp+16],eax |
mov [ebp+21],dword file_name |
mov [edi+12],ebx |
mov [edi+16],eax |
mov [edi+21],dword file_name |
; § ¯®«ï¥¬ § £®«®¢®ª bmp |
mov ebp,[sf_buf.bmp_header] |
mov [ebp],word 'BM' |
mov edi,[sf_buf.bmp_header] |
mov [edi],word 'BM' |
mov ebx,[sf_buf.end] |
sub ebx,[sf_buf.bmp_area] |
mov [ebp+34],ebx ; à §¬¥à ª à⨪¨ |
mov [ebp+10],dword 0x36 ; à §¬¥à § £®«®¢ª |
mov [edi+34],ebx ; à §¬¥à ª à⨪¨ |
mov [edi+10],dword 0x36 ; à §¬¥à § £®«®¢ª |
add ebx,0x36 |
mov [ebp+2],ebx ; à §¬¥à ä ©« |
mov [ebp+14],dword 0x28 |
mov [edi+2],ebx ; à §¬¥à ä ©« |
mov [edi+14],dword 0x28 |
movzx eax,word [scr_buf.width] |
mov [ebp+18],eax ; £®à¨§®â «ìë© à §¬¥à |
mov [edi+18],eax ; £®à¨§®â «ìë© à §¬¥à |
movzx eax,word [scr_buf.height] |
mov [ebp+22],eax ; ¢¥à⨪«ìë© à §¬¥à |
mov [ebp+26],word 1 |
mov [ebp+28],word 24 |
mov [edi+22],eax ; ¢¥à⨪«ìë© à §¬¥à |
mov [edi+26],word 1 |
mov [edi+28],word 24 |
; á®åà 塞 |
mov esi,[scr_buf.ptr] |
mov edi,[sf_buf.end] |
movzx edx,word [scr_buf.height] |
; ª®¯¨à㥬 ¨ ¯¥à¥¢®à 稢 ¥¬ |
; mov esi,[scr_buf.ptr] |
; mov edi,[sf_buf.bmp_area] |
; mov edx,[sf_buf.end] |
; sub edx,edi |
; movsx ecx,word [scr_buf.height] |
;.next_str: |
;push ecx |
; |
; movsx ecx,word [scr_buf.width] |
; lea ecx,[ecx*3] |
; mov ebx,ecx |
;.next_byte: |
; mov ah,[esi+ebx] |
; mov [edi+edx],ah |
; dec ebx |
; dec edx |
; loop .next_byte |
; movsx ecx,word [scr_buf.width] |
; lea ecx,[ecx*3] |
; add esi,ecx |
;pop ecx |
; loop .next_str |
mov esi,[scr_buf.end_ptr] |
mov edi,[sf_buf.bmp_area] |
movzx ecx,word [scr_buf.height] |
movzx ebx,word [scr_buf.width] |
lea ebx,[ebx*3] |
test ebx,11b |
jz @f |
shr ebx,2 |
inc ebx |
shl ebx,2 |
@@: |
cld |
align 4 |
add edi,ebx |
.next_str: |
sub edi,ebx |
mov ecx,ebx |
shr ecx,2 |
rep movsd |
sub edi,ebx |
mov edx,ebx |
.next_pixel: |
mov ah,[esi] |
mov [edi],ah |
dec esi |
dec edi |
dec edx |
jnz .next_str |
jnz .next_pixel |
lea edi,[2*ebx+edi] |
add edi,[esp] |
loop .next_str |
pop edi |
; á®åà 塞 |
draw_status saving |
mov eax,70 |
mov ebx,fs_struc |
mcall |
int 0x40 |
test eax,eax |
jne save_error |
/programs/media/scrshoot/scrwin.inc |
---|
18,19 → 18,19 |
mov edx,0x01000000 |
xor esi,esi |
xor edi,edi |
mcall |
int 0x40 |
mov eax,7 |
mov ebx,dword [scr_buf.ptr] |
mov ecx,dword [scr_buf.size] |
movr eax,7 |
mov ebx,[scr_buf.ptr] |
mov ecx,[scr_buf.size] |
xor edx,edx |
mcall |
int 0x40 |
mov eax,13 |
movr eax,13 |
mov ebx,19*65536+231 |
mov ecx,19*65536+10 |
mov edx,0x00FF00 |
mcall |
int 0x40 |
mov edi,.label |
call draw_label |
38,5 → 38,4 |
stop_draw_window |
ret |
.label label 20,20,0x80000000,$+4 |
db 'â® ¢ è ᨬ®ª. ë室 - «î¡ ï ª« ¢¨è .',0 |
db 'â® ¢ è ᨬ®ª. ë室 - «î¡ ï ª« ¢¨è .',0 |
/programs/media/scrshoot/check.inc |
---|
0,0 → 1,217 |
;ä䥪⨢®¥ ¯à®£à ¬¬¨à®¢ ¨¥ ¢ KOLIBRI |
;¯â¨¬¨§¨à®¢ ë© ª®¬¯®¥â CheckBox (áå®¤ë© ¢ ਠ⠮â Maxxxx32) |
;¯â¨¬¨§¨à®¢ ¢ë¢®¤ áâப¨ ¤¯¨á¨ ¤«ï CheckBox'a + ⥯¥àì, ¯à¨ ¯à®¢¥àª¥ ¥ ¯à®¨á室¨â ¯®¤áç¥â ª®«-¢ ᨬ¢®«®¢ ¢ áâப¥ |
;¯â¨¬¨§ æ¨ï ª®¬ ¤ - ®âª § «áï ®â á®åà ¥¨ï ॣ¨áâ஢ ¢ á⥪¥. |
;17.07.2006 ¯à®¨§¢¥¤¥ ®¯â¨¬¨§ æ¨ï, ¯à¨ ãáâ ®¢ª¥ 祪 ¡®ªá ¢ ¯®«®¦¥¨¥ ¢ª«î祮 ¯®á«¥¤ãî騥 祪 ¡®ªáë ¢ â®â ¦¥ ¯à®¬¥¦ã⮪ ¢à¥¬¥¨ ¥ ¯à®¢¥àïîâáï |
;<Lrz> - ¥¯«®¢ «¥ªá¥© www.test-kolibri.narod.ru |
macro use_check_box |
{ |
ch_text_margin=4 ;à ááâ®ï¨¥ ®â ¯àאַ㣮«ì¨ª 祪 ¡®ªá ¤® ¤¯¨á¨ |
ch_size=10 ;à §¬¥à ª¢ ¤à â 祪 ¡®ªá |
ch_left equ [edi] ;ª®®à¤¨ â ç « à¨á®¢ ¨ï ¯® å |
ch_top equ [edi+2] ;ª®®à¤¨ â ç « à¨á®¢ ¨ï ¯® ã |
ch_color equ [edi+4] ;梥⠢ãâਠcheckbox |
ch_border_color equ [edi+8] ;梥â à ¬ª¨ checkbox |
ch_text_color equ [edi+12] ;梥â ⥪áâ |
ch_text_ptr equ [edi+16] ;㪠§ ⥫ì ç «® ⥪á⮢®© áâப¨ |
ch_text_length equ [edi+20] ;¤«¨ ¤¯¨á¨ (2^64 â ª®© ¤«¨ë ¬®¦¥â ¡ëâì ⥪áâ) |
ch_flags equ [edi+24] ;ä« £¨ |
check_box: |
.draw: |
pusha ;á®åà ¨¬ ¢á¥ ॣ¨áâàë |
mov eax,38 ;à¨á®¢ ¨¥ «¨¨¨ |
mov bx,ch_left ;¯®«®¦¥¨¥ ¯® å |
;mov cx,bx ;á®åà ¨¬ ¢ ॣ¨áâॠcx § 票¥ bx |
push bx ;3 - ¬¨ªà®®¯¥à 樨 ¨á¯®«ì§ãï á⥪ ¬®¦® ¢ë¨£à âì ¢ à §¬¥à¥, ¨á¯®«ì§ãï ॣ¨áâàë - ¢ ᪮à®á⨠|
shl ebx,16 ;ᤢ¨¥¬ 16 à §à冷¢ ¢ «¥¢® (㬮¦¨¬ 65536) |
pop bx ;2 - ¬¨ªà®®¯¥à 樨 ¤ ë© ¬®¬¥â áä®à¬¨à®¢ [ª®®à¤¨ â ç « ¯® ®á¨ x]*65536 + [ª®®à¤¨ â ç « ¯® ®á¨ x] |
;mov bx,cx ;¢®ááâ ®¢¨¬ § 票¥ bx |
mov cx,ch_top ;§ £à㧨¬ ¢ cx § 票¥ y |
mov si,cx ;á®åà ¨¬ § 票¥ ॣ¨áâà cx ¢ ॣ¨áâà 㪠§ ⥫ì si |
;push cx |
shl ecx,16 ; ᤢ¨¥¬ 16 à §à冷¢ ¢ «¥¢® (㬮¦¨¬ 65536) mov cx,si ;¢®ááâ ®¢¨¬ § 票¥ ॣ¨áâà cx |
mov cx,si ;¢®ááâ ®¢¨¬ § 票¥ ॣ¨áâà cx |
;pop cx ;[ª®®à¤¨ â ç « ¯® ®á¨ y]*65536 + [ª®®à¤¨ â ç « ¯® ®á¨ y] |
;push cx |
add cx,ch_size ;[ª®®à¤¨ â ç « ¯® ®á¨ y]*65536 + [ª®®à¤¨ â ª®æ ¯® ®á¨ y] |
mov edx,ch_border_color ;¢¥â «¨¨¨ |
int 0x40 ;à¨á®¢ ¨¥ ¢¥à⨪ «ì®© «¥¢®© «¨¨¨ ª¢ ¤à â (¯àאַ㣮«ì¨ª ) |
; |
mov bp,bx ;á®åà ¨¬ ॣ¨áâà bx ¢ ॣ¨áâॠ㪠§ â¥«ï ¡ §ë |
;push bx ;¢â®«ªãâì ¢ bx [ª®®à¤¨ â ç « ¯® ®á¨ å]*65536 + [ª®®à¤¨ â ç « ¯® ®á¨ x] |
add bx,ch_size ;[ª®®à¤¨ â ç « + ¤«¨ áâ®à®ë ¯® ®á¨ å] |
ror ebx,16 ;[ª®®à¤¨ â ç « + ¤¨ áâ®à®ë ¯® ®á¨ å]*65536 |
add bx,ch_size ;[ª®®à¤¨ â ç « +¤«¨ áâ®à®ë ¯® ®á¨ å]*65536 + [ª®®à¤¨ â ç « +¤«¨ áâ®à®ë ¯® ®á¨ x] |
int 0x40 |
mov bx,bp ;¢®ááâ ®¢¨¬ § 票¥ ॣ¨áâà bx |
;pop bx |
mov cx,si ;á®åà ¨¬ § 票¥ ॣ¨áâà cx ¢ ॣ¨áâà 㪠§ ⥫ì |
;pop cx |
int 0x40 |
add cx,ch_size ;¤®¡ ¢¨¬ à §¬¥à áâ®à®ë |
mov si,cx ;á®åà ¨¬ § 票¥ ॣ¨áâà cx ¢ ॣ¨áâà 㪠§ ⥫ì si |
;push cx |
shl ecx,16 |
mov cx,si |
;pop cx |
int 0x40 ; à¨á®¢ «¨ ¯àאַ㣮«ì¨ª |
mov eax,13 ;§ ªà 訢 ¥¬ ¥£®. ãªæ¨ï 13 - à¨á®¢ âì ¯®«®áã |
mov bx,ch_left ;§ £à㧨âì ¢ bx, ¯®«®¦¥¨¥ ¯® å |
add bx,1 ;ᤢ¨¥¬ 1 â.¥. ¯à¨¡ ¢¨¬ 1 ¨ ç¥ § âà¥âáï à ¬ª |
shl ebx,16 ;ᤢ¨¥¬ 16 à §à冷¢ ¢ «¥¢® (㬮¦¨¬ 65536) |
mov bx,ch_size ;¯à¨¡ ¢¨¬ ¤«¨ã áâ®à®ë ¯àאַ㣮«ì¨ª |
sub bx,1 ;¢ëç⥬ 1 â.ª. ¨ ç¥ § âà¥âáï à ¬ª |
mov bp,bx ; á®åà ¨¬ ॣ¨áâà bx ¢ ॣ¨áâॠ㪠§ â¥«ï ¡ §ë |
;push bx |
mov cx,ch_top ;§ £à㧨¬ ª®®à¤¨ âë ¯® y |
add cx,1 ;ᤢ¨¥¬ 1 â.¥. ¯à¨¡ ¢¨¬ 1 ¨ ç¥ § âà¥âáï à ¬ª |
shl ecx,16 ;ᤢ¨¥¬ 16 à §à冷¢ ¢ «¥¢® (㬮¦¨¬ 65536) |
mov cx,bp ;¢®ááâ ®¢¨¬ § 票¥ ॣ¨áâà cx |
;pop cx |
mov edx,ch_color ;§ £à㧨¬ 梥⠯®«®áë |
int 0x40 ;§ ªà ᨫ¨ |
bt dword ch_flags,1 ;¤®áâ âì § 票¥ ¡¨â ¨§ ¯¥à¥¬¥®© ¨ ¯®¬¥áâ¨âì ¢ ä« £ CF |
jnc @f ;¢ ¥á«¨ CF=1, â® ¢ë¯®«¨¬ á«¥¤ãîéãî ¯à®æ¥¤ãàã ¨ ç¥ ¯¥à¥©â¨ ¨¦îî @@ |
call .draw_ch ; à¨á®¢ âì ¢ª«îç¥ë© 祪 ¡®ªá |
@@: |
;---------------------------- |
;à áç¥â ªã¤ ¡ã¤¥â ¯à®¨§¢¥¤¥ ¢ë¢®¤ ⥪áâ |
;---------------------------- |
mov bx,ch_left ;§ £à㧨âì § 票¥ å ¤«ï 祪 ¡®ªá |
add bx,(ch_size+ch_text_margin) ;¤®¡ ¢¨âì à §¬¥à áâ®à®ë ¨ à ááâ®ï¨¥ ª®â®à®¬ ç¥âáï ¢ë¢®¤ ⥪áâ |
shl ebx,16 ;ᤢ¨¥¬ 16 à §à冷¢ ¢ «¥¢® (㬮¦¨¬ 65536) |
mov bx,ch_top ;§ £à㧨¬ § 票¥ ¯® y |
add bx,(ch_size-9+2) ;¤®¡ ¢¨¬ § 票¥ ¤«¨ë áâ®à®ë -9+2 |
mov ecx,ch_text_color ;§ £à㧨¬ 梥⠤¯¨á¨ |
mov edx,ch_text_ptr ;㪠¦¥¬ ¤à¥á ®â ªã¤ 㦮 ¢ë¢®¤¨âì áâபã |
mov esi,ch_text_length ; £à㧨¬ ¤«¨ã ¤¯¨á¨ ¢ esi |
xor eax,eax ;¢¥á¥¬ ¢ eax § 票¥ ¢ë¢®¤ ¤¯¨á¨ ª ¢ã |
add eax,4 |
int 0x40 ;뢮¤ |
popa ;¢®ááâ ®¢¨âì § 票ï ॣ¨áâ஢ ¨§ á⥪ |
ret ;¢ë©¤¥¬ ¨§ ¯à®æ¥¤ãàë |
.clear_ch: ;®ç¨á⪠祪 ¡®ªá |
mov edx,ch_color ;梥⠢ãâਠ祪 ¡®ªá |
jmp @f ;¡¥§ãá«®¢ë© ¯à릮ª ¨¦îî ¬¥âªã @@ |
.draw_ch: ; à¨á®¢ âì ¢ª«îç¥ë© 祪 ¡®ªá |
mov edx,ch_border_color ;§ £à㧨âì 梥â |
@@: |
mov bx,ch_left ;§ £à㧨âì ª®®à¤¨ âã ¯® å |
add bx,(ch_size/3) ;¤®¡ ¢¨âì (áâ®à® ¯àאַ㣮«ì¨ª /3) |
shl ebx,16 ;ᤢ¨¥¬ 16 à §à冷¢ ¢ «¥¢® (㬮¦¨¬ 65536) |
mov bx,(ch_size/2) ;§ £à㧨âì (áâ®à® ¯àאַ㣮«ì¨ª /2) |
mov bp,bx ;á®åà ¨¬ ॣ¨áâà bx ¢ ॣ¨áâॠ㪠§ â¥«ï ¡ §ë |
;push bx |
mov cx,ch_top ;§ £à㧨âì ª®®à¤¨ âã ¯® ã |
add cx,(ch_size/3) ;¤®¡ ¢¨âì (áâ®à® ¯àאַ㣮«ì¨ª /3) |
shl ecx,16 ;ᤢ¨¥¬ 16 à §à冷¢ ¢ «¥¢® (㬮¦¨¬ 65536) |
mov cx,bp ;§ £à㧨¬ § 票ï ॣ¨áâà 㪠§ â¥«ï ¡ §ë ¢ cx |
;pop cx |
mov eax,13 ;¢ eax - § 票ï äãªæ¨¨ ¤«ï ¢ë¢®¤ ¯®«®áë â.¥. ¯® áã⨠¯àאַ㣮«ì¨ª , ª®â®àë© ®â®¡à ¦ ¥â ¢ª«îç¥ë© ª®¬¯®¥â 祪 ¡®ªá |
int 0x40 ;¢ë¢®¤ |
ret ;¢ë©â¨ ¨§ ¯à®æ¥¤ãàë |
.mouse: ;®¡à ¡®âª ¬ëè¨ |
pusha |
mov eax,37 ;¡ã¤¥¬ çâ® â® ¤¥« âì ¥á«¨ ã á çâ® - ¨âì ¦ â® |
xor ebx,ebx ;®¡ã«¨âì ॣ¨áâà ebx (¨§¬¥ï¥â ä« £¨) |
add ebx,2 ;¢¥á⨠¢ ॣ¨áâà § 票¥ 2 |
int 0x40 ;¯à®¢¥àª ¥ ¦ « «¨ ¯®«ì§®¢ â¥«ì ª®¯ªã ¬ë誨 |
test eax,eax ;¯à®¢¥àª ¥á«¨ ã á ¢ eax=0, â® ãáâ ®¢¨¬ ä« £ ¨ ¢ë©¤¥¬ |
jnz @f ;¯¥à¥©â¨ ¨¦îî ¬¥âªã @@ |
btr dword ch_flags,2 ;¨§¢«¥ç¥¨¥ § ç¥¨ï § ¤ ®£® ¡¨â ¢ ä« £ cf ¨ ¨§¬¥¥¨¥ ¥£® § 票ï ã«¥¢®¥. |
popa ;¥á«¨ ¨ç¥£® ¥ ¯à®¨§®è«®, â® ¢®ááâ ®¢¨¬ § 票ï ॣ¨áâ஢ ¨§ á⥪ |
ret ;¢ë室 |
@@: |
bts dword ch_flags,2 ;¯à®¢¥àª ä« £ â.¥. ¯¥à¥®á ¢ cf § 票¥ ¡¨â ¨ ãáâ ®¢ª ¡¨â ¢ á®áâ®ï¨¥ ¢ª«î祮 |
jc .mouse_end ;¥á«¨ CF=1 â® ¯¥à¥©â¨ ¢ ª®¥æ â.¥. íâ® ¢ë室 |
mov esi,ch_text_length ;§ £à㧨âì ª®«-¢® ᨬ¢®«®¢ ¢ ⥪á⮢®© áâப¥ |
;¬®¦¥¨¥ 6 ëáâ஥ 㬮¦¥¨¥ ¬®¦® ¢®á¯®«ì§®¢ âìáï «î¡ë¬ ¬§ ¬¥â®¤®¢, ® áâ àëå à®æ¥áá®à å (386,486,P1)¡ëáâ॥ ¡ã¤¥â á ¨áâàãªæ¨¥© Lea |
;lea esi,[eax*2+eax] |
;shl eax,1 |
imul esi,6 ; ¨«¨ ¬®¦® ¨ â ª 㬮¦¨âì 6 |
add esi,ch_text_margin ;¤®¡ ¢¨âì 3 - à ááâ®ï¨¥ ®â 祪 ¡®ªá ¤® ¤¯¨á¨ |
mov eax,37 ;¯®«ã稬 ª®®à¤¨ âë ¬ë誨 |
xor ebx,ebx ;®¡ã«¨âì ॣ¨áâà |
add ebx,1 ;¤®¡ ¢¨âì 1 |
int 0x40 ;¯®«ãç¨âì ª®®à¤¨ âë ªãàá®à ®â®á¨â¥«ì® ®ª |
mov bx,ch_top ;§ £à㧨âì ¢ bx § 票¥ ª®®à¤¨ âë ã |
cmp ax,bx ;áà ¢¨âì á á ª®®à¤¨ ⮩ ªãàá®à |
jl .mouse_end ;SF <> OF ¥á«¨ ¬¥ìè¥ |
add bx,ch_size ;¤®¡ ¢¨âì à §¬¥à |
cmp ax,bx ;áà ¢¨âì |
jg .mouse_end ;ZF = 0 ¨ SF = OF ¥á«¨ ¡®«ìè¥ |
shr eax,16 ;à §¤¥«¨¬ 65536 ¨«¨ ¯à®á⮠ᤢ¨¥¬ ¡¨âë 16 § 票© |
mov bx,ch_left ;¯à®¨§¢¥¤¥¬ «®£¨ç®¥ áà ¢¥¨¥ |
cmp ax,bx ;áà ¢¨âì ॣ¨áâàë |
jl .mouse_end ;¥á«¨ ¬¥ìè¥ |
add bx,ch_size ;¤®¡ ¢¨âì ¤«¨ã áâ®à®ë ¯àאַ㣮«ì¨ª |
add bx,si ;ç¥áâì ¢ § 票¨ ¯® å ¥é¥ ¨ ¤«¨ã ¤¯¨á¨ ª 祪¡®ªáã |
cmp ax,bx ;áâà ¢¨âì ॣ¨áâàë |
jg .mouse_end ;¥á«¨ ¡®«ìè¥ |
bts dword ch_flags,1 ;¨§¢«¥ç¥¨¥ § ç¥¨ï § ¤ ®£® ¡¨â ¢ ä« £ cf ¨ ¨§¬¥¥¨¥ ¥£® § 票ï 1. |
jc @f ;CF=1 â® ¯¥à¥©â¨ ¨¦îî @@ |
call .draw_ch ;®â®¡à §¨âì ¢ª«îç¥ë© 祪 ¡®ªá |
mov dword [esp+24],1 ;¤ «ì¥©è ï ¯à®¢¥àª 祪 ¡®ªá®¢ ¡¥á¬ëá«¥ , ¯® í⮬㠢 á⥪, £¤¥ à ᯮ« £ ¥âáï ecx ¯®¬¥áâ¨â¬ 0 |
jmp .mouse_end ;¢ë©â¨ |
@@: |
btr dword ch_flags,1 ;¨§¢«¥ç¥¨¥ § ç¥¨ï § ¤ ®£® ¡¨â ¢ ä« £ cf ¨ ¨§¬¥¥¨¥ ¥£® § 票ï ã«¥¢®¥. |
call .clear_ch ;¢ëª«îç¨âì 祪 ¡®ªá â.¥. ¬¥á⥠§ ªà 襮£® ¯àאַ㣮«ì¨ª ®â®¡à §¨âì 梥â ä® . |
.mouse_end: |
popa ;¢®ááâ ®¢¨âì ॣ¨áâàë ¨§ á⥪ |
ret ;¢ë©â¨ |
} |
struc check_box left,top,color,border_color,text_color,text,text_length,flags |
{ ;áâàãªâãà ¯ à ¬¥â஢ ¤«ï 祪 ¡®ªá |
.left: dw left ;+0 ;¯®«®¦¥¨¥ ¯® å |
.top: dw top ;+2 ;¯®«®¦¥¨¥ ¯® ã |
.color: dd color ;+4 ;梥⠢ãâਠ祪 ¡®ªá |
.border_color: dd border_color ;+8 梥â à ¬ª¨ |
.text_color: dd text_color ;+12 梥â ⥪áâ ¤¯¨á¨ |
.text: dd text ;+16 ¤à¥á ¢ ª®¤¥ ¯à®£à ¬¬ë £¤¥ à ᯮ«®¦¥ ⥪áâà |
.text_length: dd text_length ; +20 ¤«¨ ⥪áâ |
.flags: dd flags+0 ;+24 ä« £¨ |
} |
ch_struc_size=28 ;®¡é ï áâàãªâãà 28 ¡ ©â |
macro draw_check_boxes start,end ;à¨á®¢ âì 祪 ¡®ªáë |
{ |
mov edi,start ;ª § ⥫ì ç «® ¤ ëå 祪 ¡®ªá®¢ â.¥. ç «® ¤ ëå ¯¥à¢®£® 祪¡®ªá |
mov ecx,((end-start)/ch_struc_size) ;®«¨ç¥á⢮ 祪 ¡®ªá®¢ |
@@: |
call check_box.draw ;â®¡à §¨âì 祪 ¡®ªá |
add edi,ch_struc_size ;ª § â¥«ì ¯®á«¥¤ãî騥 祪 ¡®ªáë â.¥. +28 |
loop @b ;¯àë£ãâì ¥á«¨ ¢ ecx/cx § 票¥ ¥ 0 ¢¥àåîî @@ |
} |
macro mouse_check_boxes start,end ;ãáâ ®¢ª 祪 ¡®ªá®¢, ¢ § ¢¨á¨¬®á⨠®â ᮡëâ¨ï |
{ |
mov edi,start ; ª § ⥫ì ç «® ¤ ëå 祪 ¡®ªá®¢ â.¥. ç «® ¤ ëå ¯¥à¢®£® 祪¡®ªá |
mov ecx,((end-start)/ch_struc_size) ;®«¨ç¥á⢮ 祪 ¡®ªá®¢ |
@@: |
call check_box.mouse ;¯à®¢¥àª ¬ë誨 ¨ ®¡à ¡®âª ᮡë⨩ |
add edi,ch_struc_size ;ª § â¥«ì ¯®á«¥¤ãî騥 祪 ¡®ªáë |
loop @b ;¯àë£ãâì ¥á«¨ ¢ ecx/cx § 票¥ ¥ 0 ¢¥àåîî @@ |
} |
macro check_boxes_set_sys_color start,end,color_table |
{ |
mov edi,start |
mov ecx,((end-start)/ch_struc_size) |
mov esi,color_table |
@@: |
push dword [esi+32] |
pop dword ch_text_color |
push dword [esi+36] |
pop dword ch_border_color |
add edi,ch_struc_size |
loop @b |
} |
/programs/media/scrshoot/file_sys.inc |
---|
0,0 → 1,41 |
macro file_sys struc_ptr |
{ |
mov eax,58 |
mov ebx,struc_ptr |
int 0x40 |
} |
struc fs_struc function_number,block_number,size,data_ptr,mem_for_sys_ptr |
{ |
.function_number: dd function_number+0 ;+0 |
.block_number: dd block_number+0 ;+4 |
.size: dd size+0 ;+8 |
.data_ptr: dd data_ptr+0 ;+12 |
.mem_for_sys_ptr: dd mem_for_sys_ptr+0 ;+16 |
} |
fs_struc_size=20 |
fs_read_file=0 |
fs_rewrite_file=1 |
fs_delete_file=2 |
fs_write_to_file=3 |
fs_create_dir=4 |
fs_rename_file=5 |
fs_lba_read=9 |
fs_get_file_size=12 |
fs_get_file_atr=13 |
fs_get_file_date_time=14 |
fs_get_fs_info=15 |
fs_run_app=16 |
fse_successful=0 |
fse_not_def_base=1 |
fse_bad_fs=2 |
fse_bad_fs=3 |
fse_part_not_def=4 |
fse_file_not_found=5 |
fse_end_of_file=6 |
fse_bad_ptr=7 |
fse_disk_filled=8 |
fse_bad_fat_table=9 |
fse_acces_denied=10 |
/programs/media/scrshoot/label.inc |
---|
14,7 → 14,7 |
mov eax,4 |
mov ebx,[edi] |
mov ecx,[edi+4] |
mcall |
int 0x40 |
popa |
ret |
} |
/programs/media/scrshoot/txtbut.inc |
---|
12,7 → 12,7 |
mov ecx,[edi+4] ;[but.height] |
mov edx,[edi+8];[but.id] |
mov esi,[edi+12];[but.color] |
mcall |
int 0x40 |
;--- ⥪áâ ¥© --- |
; áç¨â ¥¬ ª®«¨ç¥á⢮ ᨬ¢®«®¢ |
mov edx,[edi+20] |
45,7 → 45,7 |
; à¨á㥬 áâபã ⥪áâ |
mov ecx,[edi+16] ;[but.text_color] |
shr eax,1 |
mcall |
int 0x40 |
popa |
ret |
} |