/programs/media/scrshoot/build_en.bat |
---|
0,0 → 1,5 |
@erase lang.inc |
@echo lang fix en >lang.inc |
@fasm scrshot.asm scrshot |
@erase lang.inc |
@pause |
/programs/media/scrshoot/build_ru.bat |
---|
0,0 → 1,5 |
@erase lang.inc |
@echo lang fix ru >lang.inc |
@fasm scrshoot.asm scrshoot |
@erase lang.inc |
@pause |
/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/checkbox.inc |
---|
0,0 → 1,196 |
macro use_check_box |
{ |
ch_text_margin=3 |
ch_size=10 |
ch_left equ [edi] |
ch_top equ [edi+2] |
ch_color equ [edi+4] |
ch_border_color equ [edi+8] |
ch_text_color equ [edi+12] |
ch_text_ptr equ [edi+16] |
ch_flags equ [edi+20] |
check_box: |
.draw: |
pusha |
mov eax,38 |
mov bx,ch_left |
push bx |
shl ebx,16 |
pop bx |
mov cx,ch_top |
push cx |
shl ecx,16 |
pop cx |
push cx |
add cx,ch_size |
mov edx,ch_border_color |
int 0x40 |
push bx |
add bx,ch_size |
ror ebx,16 |
add bx,ch_size |
int 0x40 |
pop bx |
pop cx |
int 0x40 |
add cx,ch_size |
push cx |
shl ecx,16 |
pop cx |
int 0x40 |
mov eax,13 |
mov bx,ch_left |
inc bx |
shl ebx,16 |
mov bx,ch_size |
dec bx |
push bx |
mov cx,ch_top |
inc cx |
shl ecx,16 |
pop cx |
mov edx,ch_color |
int 0x40 |
bt dword ch_flags,1 |
jnc @f |
call .draw_ch |
@@: |
call .get_text_n |
mov bx,ch_left |
add bx,(ch_size+ch_text_margin) |
shl ebx,16 |
mov bx,ch_top |
add bx,(ch_size-9+2) |
mov ecx,ch_text_color |
mov eax,4 |
int 0x40 |
popa |
ret |
.get_text_n: |
push eax |
xor esi,esi |
mov edx,ch_text_ptr |
@@: |
mov ah,[edx+esi] |
inc esi |
test ah,ah |
jnz @b |
dec esi |
pop eax |
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) |
shl ebx,16 |
mov bx,(ch_size/2) |
push bx |
mov cx,ch_top |
add cx,(ch_size/3) |
shl ecx,16 |
pop cx |
mov eax,13 |
int 0x40 |
ret |
.mouse: |
pusha |
mov eax,37 |
mov ebx,2 |
int 0x40 |
bt eax,0 |
jc @f |
btr dword ch_flags,2 |
popa |
ret |
@@: |
bts dword ch_flags,2 |
jc .mouse_end |
call .get_text_n |
imul esi,6 |
add si,ch_text_margin |
mov eax,37 |
xor ebx,ebx |
inc ebx |
int 0x40 |
mov bx,ch_top |
cmp ax,bx |
jl .mouse_end |
add bx,ch_size |
cmp ax,bx |
jg .mouse_end |
shr eax,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 |
jc @f |
call .draw_ch |
jmp .mouse_end |
@@: |
btr dword ch_flags,1 |
call .clear_ch |
.mouse_end: |
popa |
ret |
} |
struc check_box left,top,color,border_color,text_color,text,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 |
.flags: dd flags+0 ;+20 |
} |
ch_struc_size=24 |
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 |
loop @b |
} |
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 |
} |
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/editbox.inc |
---|
0,0 → 1,755 |
; <Lrz> 21.07.2006 ¤®¡ ¢«¥ äãªæ¨ï ª®¯ª¨ Del, ⥯¥àì ¬®¦® 㤠«ïâì ᨬ¢®«ë ¯à¨ ¯®¬®é¨ ¤ ®© ª®« ¢¨è¨ |
; ¢â®à: ¢â¨å®¢ ªá¨¬ (Maxxxx32) email: maxxxxm@mail.ru |
; â ¯®á«¥¤¨å ¨§¬¥¥¨©: 13.07.06 10:40 |
; ¯¨è¨â¥ ¢ ¨á室®¬ ª®¤¥ ᢮¥© ¯à®£à ¬¬ë use_edit_box, |
; íâ® ¢áâ ¢¨â ¥®¡å®¤¨¬ë¥ ¯à®æ¥¤ãàë ¢ ª®¤ ¢ 襩 ¯à®£à ¬¬ë. |
; à®æ¥¤ãàë: |
; edit_box.draw - ¯®« ï ¯¥à¥à¨á®¢ª ; |
; edit_box.key - ®¡à ¡®âª ª« ¢¨ âãàë; |
; edit_box.mouse - ®¡à ¡®âª ¬ëè¨; |
; edit_box.focus - ãáâ ®¢ª 䮪ãá ; |
; edit_box.blur - ¥£® à §¬ë¢ ¨¥; |
; edit_box.get_n - ¯®«ãç¨âì ª®«¨ç¥á⢮ ¯à®à¨á®¢ë¢ ¥¬ëå ᨬ¢®«®¢. |
; ਠ¢ë§®¢¥ «î¡ëå ¨§ íâ¨å ¯à®æ¥¤ãà ¢ ॣ¨áâॠedi á«¥¤ã¥â |
; ®áâ ¢¨âì 㪠§ ⥫ì áâàãªâãàã. |
; ਬ¥à áâàãªâãàë: |
; some_edit edit_box 100,10,30,0x00ffffff,0,0x00aaaaaa,0,255,some_edit_text |
; ¤«¨ , «¥¢®, ¢¥àå, 梥â ä® , 梥â à ¬ª¨, ¥á«¨ ¢ë¡à , |
; 梥â à ¬ª¨, ¥á«¨ ¥ ¢ë¡à , ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ ᨬ¢®«®¢, |
; 㪠§ â¥«ì ¡ãä¥à, £¤¥ ¡ã¤ãâ åà ¨âáï ᨬ¢®«ë. ãä¥à ¤®«¦¥ |
; ®ª 稢 âìáï ã«¥¬, ¯à¨¬¥à ¥á«¨ ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ 255: |
; some_edit_text: |
; rb 256 ;255+1 |
; ਬ¥à ¢ë§®¢ ¯à®æ¥¤ãàë: |
; mov edi,some_edit |
; call edit_box.draw |
; ਠ¢ë§®¢¥ ¯à®æ¥¤ãàë edit_box.key ª®¤ ª« ¢¨è¨ ¤®«¦¥ |
; 室¨âáï ¢ ah, â® ¥áâì ¯¥à¥¤ ¢ë§®¢®¬ í⮩ ¯à®æ¥¤ãàë ¤® ¢ë§¢ âì |
; 2-ãî á¨á¥¬ãî äãªæ¨î, ¯à¨¬¥à: |
; mov eax,2 |
; int 0x40 |
; mov edi,some_edit1 |
; call edit_box.key |
; mov edi,some_edit2 |
; call edit_box.key |
; ¥à¥¤ ¢ë§®¢®¬ ®¡à ¡®â稪 ¬ëè¨ á«¥¤ã¥â ¯à®¢¥à¨âì, ï¥âáï «¨ ®ª® |
; ªâ¨¢ë¬. |
; ᫨ 饫箪 ¬ëè¨ ¡ë« ¯à®©§¢¥¤¥ § ¯à¥¤¥« ¬¨ edit box |
; 䮪ãá â¥àï¥âáï. |
macro use_edit_box |
{ |
edit_box: |
ed_width equ [edi] |
ed_left equ [edi+2] |
ed_top equ [edi+4] |
ed_color equ [edi+6] |
ed_focus_border_color equ [edi+10] |
ed_blur_border_color equ [edi+14] |
ed_text_color equ [edi+18] |
ed_flags equ [edi+22] |
ed_max equ [edi+24] |
ed_size equ [edi+26] |
ed_pos equ [edi+28] |
ed_offset equ [edi+30] |
ed_text equ [edi+32] |
ed_height=14 ; ¢ëá®â |
;========================================================== |
;=== ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ================================= |
;========================================================== |
.draw: |
pusha |
;--- à¨á㥬 à ¬ªã --- |
call .draw_border |
.draw_bg_cursor_text: |
;--- ¨§¬¥ï¥¬ ᬥ饨¥, ¥á«¨ ¤® --- |
call .check_offset |
;--- à¨á㥬 ¢ãâà¥îî ®¡« áâì --- |
call .draw_bg |
.draw_cursor_text: |
;--- à¨á㥬 ªãàá®à --- |
;--- ¬®¦¥â ¥£® ¥ ¤® à¨á®¢ âì ---- |
bt word ed_flags,1 |
jnc @f |
call .draw_cursor |
@@: |
call .draw_text |
popa |
ret |
;---------------------------------------------------------- |
;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ⥪áâ -------------------------- |
;---------------------------------------------------------- |
.draw_text: |
;--- ¢ëç¨á«ï¥¬, ᪮«ìª® ¯®¬¥é ¥âáï ᨬ¢®«®¢ --- |
call .get_n |
;--- çâ®¡ë ¬ãá®à ¥ à¨á®¢ âì --- |
movsx esi,word ed_size |
sub si,ed_offset |
cmp ax,si |
ja @f |
mov si,ax |
@@: |
;--- à¨á㥬 ⥪áâ --- |
mov eax,4 |
mov bx,ed_left |
add bx,2 |
shl ebx,16 |
mov bx,ed_top |
add bx,4 |
mov ecx,ed_text_color |
movsx edx,word ed_offset |
add edx,ed_text |
int 0x40 |
ret |
;---------------------------------------------------------- |
;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ä® ---------------------------- |
;---------------------------------------------------------- |
.draw_bg_eax: |
pusha |
movsx ebx,ax |
lea ebx,[ebx*2+ebx] |
shl bx,1 |
shl ebx,16 |
shr eax,16 |
lea eax,[eax*2+eax] |
shl ax,1 |
add ax,ed_left |
add ax,2 |
mov bx,ax |
ror ebx,16 |
jmp @f |
.draw_bg: |
pusha |
mov bx,ed_left |
inc bx |
shl ebx,16 |
mov bx,ed_width |
dec bx |
@@: |
mov cx,ed_top |
inc cx |
shl ecx,16 |
mov cx,ed_height |
dec cx |
mov edx,ed_color |
mov eax,13 |
int 0x40 |
popa |
ret |
;---------------------------------------------------------- |
;--- ¯à®æ¥¤ãà ¯®«ãç¥¨ï ª®«¨ç¥á⢠ᨬ¢®«®¢ -------------- |
;---------------------------------------------------------- |
.get_n: |
xor edx,edx |
movsx eax,word ed_width |
sub ax,4 |
mov bx,6 |
div bx |
ret |
;---------------------------------------------------------- |
;--- ¯à®æ¥¤ãà à¨á®¢ ¨ï ªãàá®à -------------------------- |
;---------------------------------------------------------- |
.clear_cursor: |
mov edx,ed_color |
jmp @f |
.draw_cursor: |
mov edx,ed_text_color |
@@: |
movsx ebx,word ed_pos |
sub bx,ed_offset |
;lea ebx,[ebx*2+ebx] |
;shl ebx,1 |
imul ebx,6 |
add bx,ed_left |
inc bx |
push bx |
shl ebx,16 |
pop bx |
mov cx,ed_top |
add cx,2 |
push cx |
shl ecx,16 |
pop cx |
add cx,ed_height-4 |
mov eax,38 |
int 0x40 |
ret |
;---------------------------------------------------------- |
;--- ¯à®æ¥¤ãà à¨á®¢ ¨ï à ¬ª¨ ---------------------------- |
;---------------------------------------------------------- |
.draw_border: |
;--- 梥â à ¬ª¨ --- |
bt word ed_flags,1 |
mov edx,ed_focus_border_color |
jc @f |
mov edx,ed_blur_border_color |
@@: |
;--- ᢥàåã --- |
mov bx,ed_left |
push bx |
shl ebx,16 |
pop bx |
add bx,ed_width |
mov cx,ed_top |
push cx |
shl ecx,16 |
pop cx |
mov eax,38 |
int 0x40 |
;--- ᨧã --- |
push cx |
add cx,ed_height |
push cx |
shl ecx,16 |
pop cx |
int 0x40 |
;--- á«¥¢ --- |
pop cx |
push bx |
sub bx,ed_width |
int 0x40 |
;--- á¯à ¢ --- |
pop bx |
push bx |
shl ebx,16 |
pop bx |
int 0x40 |
ret |
;---------------------------------------------------------- |
;--- ¯à®¢¥àª , § 襫 «¨ ªãàá®à § £à ¨æë ¨, ¥á«¨ ¤®, --- |
;--- ¨§¬¥ï¥¬ ᬥ饨¥ ------------------------------------ |
;--- eax = 1, ¥á«¨ ¥ ¨§¬¥¨«®áì ¨«¨ eax = 0, ¥á«¨ |
; ¨§¬¥¨«®áì |
;---------------------------------------------------------- |
.check_offset: |
push word ed_offset |
call .get_n |
;--- ¯à ¢¥¥ --- |
mov bx,ed_offset |
add bx,ax |
cmp bx,ed_pos |
ja @f |
mov bx,ed_pos |
mov cx,ax |
shr cx,2 |
sub bx,cx |
mov cx,ax |
shr cx,1 |
sub bx,cx |
mov ed_offset,bx |
@@: |
;--- «¥¢¥¥ --- |
mov bx,ed_offset |
cmp bx,ed_pos |
jb @f |
mov bx,ed_pos |
mov cx,ax |
shr cx,2 |
sub bx,cx |
jnc $+5 |
xor bx,bx |
mov ed_offset,bx |
@@: |
xor eax,eax |
pop bx |
cmp bx,ed_offset |
jne @f |
inc eax |
@@: |
ret |
;========================================================== |
;=== ®¡à ¡®âª ª« ¢¨ âãàë ================================= |
;========================================================== |
.key: |
pusha |
bt word ed_flags,1 ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬ |
jc @f |
popa |
ret |
@@: |
;---------------------------------------------------------- |
;--- ¯à®¢¥à塞, çâ® ¦ â® -------------------------------- |
;---------------------------------------------------------- |
cmp ah,8 |
je .backspace |
cmp ah,0xb6 |
je .delete |
cmp ah,176 |
je .left |
cmp ah,179 |
je .right |
cmp ah,180 |
je .home |
cmp ah,181 |
je .end |
;--- ¦ â ¤àã£ ï ª« ¢¨è --- |
bt word ed_flags,15 ; ⮫쪮 æ¨äàë ? |
jnc @f |
cmp ah,'0' |
jb .no_figure |
cmp ah,'9' |
ja .no_figure |
jmp @f |
.no_figure: |
popa |
ret |
@@: |
; ¯à®¢¥à塞, 室¨âáï «¨ ªãàá®à ¢ ª®æ¥ |
mov bx,ed_max |
cmp bx,ed_pos |
jne @f ; ¥á«¨ ¤ , ¢ ª®¥æ ¯à®æ¥¤ãàë |
popa |
ret |
@@: |
; ᤢ¨£ ¥¬ ᨬ¢®«ë ¯®á«¥ ªãàá®à ¢¯à ¢® |
mov edx,ed_text |
dec edx |
xor ecx,ecx |
mov cx,ed_size |
cmp cx,ed_pos |
je @f |
.mov_right_next: |
mov bh,[edx+ecx] |
mov [edx+ecx+1],bh |
dec cx |
cmp cx,ed_pos |
jne .mov_right_next |
@@: |
; ¢áâ ¢«ï¥¬ ª®¤ ª« ¢¨è¨ â㤠, £¤¥ ªãàá®à |
mov edx,ed_text |
movsx ebx,word ed_pos |
mov [ebx+edx],ah |
call .clear_cursor |
; 㢥«¨ç¨¢ ¥¬ § 票¥ à §¬¥à ¨ ¯®§¨æ¨¨ |
inc word ed_pos |
mov bx,ed_size |
cmp bx,ed_max |
je .draw_bg_cursor_text;.key_end_draw |
inc word ed_size |
;push word ed_offset |
call .check_offset |
;pop ax |
;cmp ax,ed_offset |
;jne .draw_bg_cursor_text |
test eax,eax |
jz .draw_bg_cursor_text |
call .get_n |
sub ax,ed_pos |
add ax,ed_offset |
inc ax |
shl eax,16 |
mov ax,ed_pos |
sub ax,ed_offset |
dec ax |
ror eax,16 |
call .draw_bg_eax |
jmp .draw_cursor_text |
;jmp .draw_cursor_text;.key_end_draw |
.delete: |
mov dx,ed_size |
mov cx,ed_pos |
;inc edx |
;add ecx,900 |
;sub ecx,1 |
cmp dx,cx |
jg @f |
popa |
ret |
@@: |
mov edx,ed_text |
;dec edx |
.mov_stop_next: |
mov bh,[edx+ecx+1] |
mov [edx+ecx],bh |
inc cx |
mov bx,ed_size |
;dec bx |
;dec bx |
cmp cx,bx |
jne .mov_stop_next |
; 㬥ìè ¥¬ § 票¥ ¯®§¨æ¨¨ ¨ à §¬¥à |
;dec word ed_pos |
dec word ed_size |
;push word ed_offset |
call .check_offset |
;pop ax |
;cmp ax,ed_offset |
;jne .draw_bg_cursor_text |
test eax,eax |
jz .draw_bg_cursor_text |
call .get_n |
sub ax,ed_pos |
add ax,ed_offset |
shl eax,16 |
mov ax,ed_pos |
sub ax,ed_offset |
ror eax,16 |
call .draw_bg_eax |
jmp .draw_cursor_text |
popa |
ret |
;--- ¦ â ª« ¢¨è backspace --- |
.backspace: |
; ¯à®¢¥à塞, ªãàá®à ã «¥¢®£® ªà ï ? |
mov bx,ed_pos |
;cmp bx,0 |
;jne @f; .key_end ; ¥á«¨ ¤ , ¢ ª®¥æ |
test bx,bx |
jnz @f |
popa |
ret |
@@: |
; ᤢ¨£ ¥¬ ᨬ¢®«ë ¯®á«¥ ªãàá®à ¢«¥¢® |
mov edx,ed_text |
dec edx |
movsx ecx,word ed_pos |
.mov_left_next: |
mov bh,[edx+ecx+1] |
mov [edx+ecx],bh |
inc cx |
mov bx,ed_size |
inc bx |
cmp cx,bx |
jne .mov_left_next |
; 㬥ìè ¥¬ § 票¥ ¯®§¨æ¨¨ ¨ à §¬¥à |
dec word ed_pos |
dec word ed_size |
;push word ed_offset |
call .check_offset |
;pop ax |
;cmp ax,ed_offset |
;jne .draw_bg_cursor_text |
test eax,eax |
jz .draw_bg_cursor_text |
call .get_n |
sub ax,ed_pos |
add ax,ed_offset |
shl eax,16 |
mov ax,ed_pos |
sub ax,ed_offset |
ror eax,16 |
call .draw_bg_eax |
jmp .draw_cursor_text |
popa |
ret |
;--- ¦ â ª« ¢¨è left --- |
.left: |
mov bx,ed_pos |
;cmp bx,0 |
;je @f |
test bx,bx |
jz @f |
call .clear_cursor |
dec word ed_pos |
call .check_offset |
test eax,eax |
jz .draw_bg_cursor_text |
call .draw_cursor |
@@: |
popa |
ret |
;--- ¦ â ª« ¢¨è right --- |
.right: |
mov bx,ed_pos |
cmp bx,ed_size |
je @f |
call .clear_cursor |
inc word ed_pos |
call .check_offset |
test eax,eax |
jz .draw_bg_cursor_text |
call .draw_cursor |
@@: |
popa |
ret |
.home: |
mov bx,ed_pos |
test bx,bx |
jz @f |
call .clear_cursor |
xor eax,eax |
mov ed_pos,ax |
call .check_offset |
test eax,eax |
jz .draw_bg_cursor_text |
call .draw_cursor |
@@: |
popa |
ret |
.end: |
mov bx,ed_pos |
cmp bx,ed_size |
je @f |
call .clear_cursor |
mov ax,ed_size |
mov ed_pos,ax |
call .check_offset |
test eax,eax |
jz .draw_bg_cursor_text |
call .draw_cursor |
@@: |
popa |
ret |
;========================================================== |
;=== ®¡à ¡®âª ¬ëè¨ ======================================= |
;========================================================== |
.mouse: |
pusha |
;---------------------------------------------------------- |
;--- ¯®«ãç ¥¬ á®áâ®ï¨¥ ª®¯®ª ¬ëè¨ ----------------------- |
;---------------------------------------------------------- |
mov eax,37 |
mov ebx,2 |
int 0x40 |
;---------------------------------------------------------- |
;--- ¯à®¢¥à塞 á®áâ®ï¨¥ ---------------------------------- |
;---------------------------------------------------------- |
bt eax,0 |
jc .mouse_left_button |
bt eax,1 |
jc @f |
btr word ed_flags,2 |
@@: |
popa |
ret |
.mouse_left_button: |
;---------------------------------------------------------- |
;--- ¯®«ãç ¥¬ ª®®à¤¨ âë ¬ëè¨ ----------------------------- |
;---------------------------------------------------------- |
bts word ed_flags,2 |
jc .mouse_pressed |
mov eax,37 |
;mov ebx,1 |
xor ebx,ebx |
inc ebx |
int 0x40 |
;---------------------------------------------------------- |
;--- ¯à®¢¥à塞, ¯®¯ ¤ ¥â «¨ ªãàá®à ¢ edit box ------------- |
;---------------------------------------------------------- |
mov bx,ed_top |
cmp ax,bx |
jl ._blur;.mouse_end_no_focus |
add bx,ed_height |
cmp ax,bx |
jg ._blur;.mouse_end_no_focus |
shr eax,16 |
mov bx,ed_left |
cmp ax,bx |
jl ._blur;.mouse_end_no_focus |
add bx,ed_width |
cmp ax,bx |
jg ._blur;.mouse_end_no_focus |
;--- ¨§¬¥ï¥¬ ¯®§¨æ¨î ªãàá®à --- |
push eax |
call .clear_cursor |
pop eax |
xor dx,dx |
sub ax,ed_left |
add ax,2 |
mov bx,6 |
div bx |
add ax,ed_offset |
cmp ax,ed_size |
jna @f |
mov ax,ed_size |
@@: |
mov ed_pos,ax |
call .check_offset |
test eax,eax |
jz .draw_bg_cursor_text |
call .draw_cursor |
call .focus |
.mouse_pressed: |
popa |
ret |
;.mouse_end_no_focus: |
; call .blur |
;popa |
;ret |
;---------------------------------------------------------- |
;--- ¯à®æ¥¤ãà ãáâ ®¢ª¨ 䮪ãá --------------------------- |
;---------------------------------------------------------- |
.blur: |
pusha |
._blur: |
bt word ed_flags,14 |
jc @f |
btr word ed_flags,1 |
jnc @f |
call .clear_cursor |
jmp .blur_end |
.focus: |
pusha |
bts word ed_flags,1 |
jc @f |
call .draw_cursor |
.blur_end: |
call .draw_border |
@@: |
popa |
ret |
;---------------------------------------------------------- |
;--- ¯à®æ¥¤ãà à §¬ë¢ ¨ï 䮪ãá -------------------------- |
;---------------------------------------------------------- |
;.blur: |
;pusha |
;._blur: |
;btr word ed_flags,1 |
;jnc @f |
;call .draw_border |
;call .clear_cursor |
;@@: |
;popa |
;ret |
} |
ed_figure_only=1000000000000000b |
ed_always_focus=100000000000000b |
ed_focus=10b |
ed_struc_size=36 |
macro draw_edit_boxes start,end |
{ |
mov edi,start |
mov ecx,((end-start)/ed_struc_size) |
@@: |
call edit_box.draw |
add edi,ed_struc_size |
loop @b |
} |
macro mouse_edit_boxes start,end |
{ |
mov edi,start |
mov ecx,((end-start)/ed_struc_size) |
@@: |
call edit_box.mouse |
add edi,ed_struc_size |
loop @b |
} |
macro key_edit_boxes start,end |
{ |
mov edi,start |
mov ecx,((end-start)/ed_struc_size) |
@@: |
call edit_box.key |
add edi,ed_struc_size |
loop @b |
} |
struc edit_box width,left,top,color,focus_border_color,\ |
blur_border_color,text_color,max,text,flags,size |
{ |
.width dw width |
.left dw left |
.top dw top |
.color dd color |
.focus_border_color dd focus_border_color |
.blur_border_color dd blur_border_color |
.text_color dd text_color |
.flags dw flags+0 |
.max dw max |
.size dw size+0 |
.pos dw 0 |
.offset dw 0 |
.text dd text |
} |
macro edit_boxes_set_sys_color start,end,color_table |
{ |
mov edi,start |
mov ecx,((end-start)/ed_struc_size) |
mov esi,color_table |
@@: |
mov eax,[esi+36] |
mov ebx,[esi+20] |
mov ed_focus_border_color,eax |
shr bh,1 |
shr bl,1 |
shr ah,1 |
shr al,1 |
add ah,bh |
add al,bl |
ror eax,16 |
ror ebx,16 |
shr bl,1 |
shr al,1 |
add al,bl |
ror eax,16 |
mov ed_blur_border_color,eax |
add edi,ed_struc_size |
loop @b |
} |
macro draw_edit_box ed_ptr |
{ |
mov edi,ed_ptr |
call edit_box.draw |
} |
macro mouse_edit_box ed_ptr |
{ |
mov edi,ed_ptr |
call edit_box.mouse |
} |
macro key_edit_box ed_ptr |
{ |
mov edi,ed_ptr |
call edit_box.key |
} |
/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/gp.inc |
---|
0,0 → 1,63 |
macro use_gp |
{ |
;esi - screen size |
;edi - pointer to image |
csi_width equ [esi+2] |
csi_height equ [esi] |
csi_bitspp equ [esi+4] |
csi_bytesps equ [esi+6] |
copy_screen_to_image: |
pusha |
xor edx,edx |
xor ecx,ecx |
xor ebx,ebx |
cmp csi_bitspp,word 24 |
je .next_str_24 |
.next_str_32: |
push edx ebx |
xor ebx,ebx |
@@: |
;push eax |
mov eax,[gs:edx] |
mov [edi+ecx],ax |
shr eax,8 |
mov [edi+ecx+2],ah |
;pop eax |
add ecx,3 |
add edx,4;eax |
inc bx |
cmp bx,csi_width |
jl @b |
pop ebx edx |
add edx,csi_bytesps |
inc bx |
cmp bx,csi_height |
jl .next_str_32 |
popa |
ret |
.next_str_24: |
push edx ebx |
xor ebx,ebx |
@@: |
;push eax |
mov eax,[gs:edx] |
mov [edi+ecx],ax |
shr eax,8 |
mov [edi+ecx+2],ah |
;pop eax |
add ecx,3 |
add edx,3;eax |
inc bx |
cmp bx,csi_width |
jl @b |
pop ebx edx |
add edx,csi_bytesps |
inc bx |
cmp bx,csi_height |
jl .next_str_24 |
popa |
ret |
} |
/programs/media/scrshoot/label.inc |
---|
0,0 → 1,51 |
macro use_label |
{ |
draw_label: |
pusha |
xor esi,esi |
mov edx,[edi+8] |
.check_next: |
mov ah,[edx+esi] |
inc esi |
test ah,ah |
jz @f |
jmp .check_next |
@@: |
mov eax,4 |
mov ebx,[edi] |
mov ecx,[edi+4] |
int 0x40 |
popa |
ret |
} |
struc label left,top,color,text |
{ |
.top: dw top ; +0 |
.left: dw left ; +2 |
.color: dd color; +4 |
.text: dd text ; +8 |
} |
l_struc_size=12 |
macro draw_labels start,end |
{ |
mov edi,start |
mov ecx,((end-start)/l_struc_size) |
@@: |
call draw_label |
add edi,l_struc_size |
loop @r |
} |
macro labels_set_sys_color start,end,color_table |
{ |
mov edi,start |
mov ecx,((end-start)/l_struc_size) |
mov esi,color_table |
@@: |
push dword [esi+32] |
pop dword [edi+4] |
add edi,l_struc_size |
loop @r |
} |
/programs/media/scrshoot/macros.inc |
---|
0,0 → 1,350 |
;--- ¤à㣨¥ ¬ ªà®áë --- |
include 'editbox.inc' |
include 'txtbut.inc' |
include 'gp.inc' |
include 'label.inc' |
;include 'checkbox.inc' |
include 'check.inc' |
include 'file_sys.inc' |
include 'textwork.inc' |
;include 'ini.inc' |
lang fix ru;en |
macro movr reg,val |
{ |
if val < 65536 |
push val |
pop reg |
else |
mov reg,val |
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_scin_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/readme.txt |
---|
0,0 → 1,64 |
¢â®à ¤®ªã¬¥â ¨ ¯à®£à ¬¬ë: ¢â¨å®¢ ªá¨¬ (Maxxxx32) |
« £®¤ à®áâ¨: |
à âã ª¨ï®¢ã (Mario79) § ¯®¬®éì, ᮢ¥âë, ªà¨â¨ªã; |
¢á¥¬ ãç á⨪ ¬ ¯à®¥ªâ . |
Screenshooter - ¯à®£à ¬¬ , ¯à¥¤ § ç¥ ï ¤«ï ä®â®£à ä¨à®¢ ¨ï íªà ¨ |
á®åà ¥¨ï ä®â®£à 䨨 ¢¢¨¤¥ ä ©« BMP. |
®§¬®¦®á⨠¯à®£à ¬¬ë: |
* ¯®¤¤¥à¦¨¢ îâáï ¤«¨ë¥ ¨¬¥ ä ©«®¢; |
* ¢â®¬ â¨ç¥áª®¥ ᢮à 稢 ¨¥ ®ª ¯¥à¥¤ áꥬª®©; |
* ¬®¦® ¯®á¬®âà¥âì ᨬ®ª ¯¥à¥¤ á®åà ¥¨¥¬; |
* § ¤¥à¦ª ¯¥à¥¤ áꥬª®©; |
* ¢â®¬ â¨ç¥áª®¥ á®åà ¥¨¥ ä ©« ¯®á«¥ áꥬª¨; |
* ¢â®¬ â¨ç¥áª ï 㬥à æ¨ï ä ©«®¢; |
* ¢â®áꥬª . |
«¨ë¥ ¨¬¥ ä ©«®¢. |
ਠá®åà ¥¨¨ ä ©«®¢ ¯à®£à ¬¬ ¨á¯®«ì§ã¥â 70-î äãªæ¨î, á«¥¤®¢ â¥«ì® |
¨¬¥ ä ©«®¢ ¬®£ãâ ᮤ¥à¦ âì ¤® 260 ᨬ¢®«®¢. |
¢â®¬ â¨ç¥áª®¥ ᢮à 稢 ¨¥ ®ª ¯¥à¥¤ áꥬª®©. |
᫨ ¢ª«îç¨âì äãªæ¨î "¢¥àãâì ®ª®", ¯®á«¥ ¦ â¨ï ª®¯ªã |
"¤¥« âì ᨬ®ª íªà " á ç « ᢥà¥âáï ®ª®, ¯®â®¬ ¡ã¤¥â ᤥ« ᨬ®ª. |
à®á¬®âà ᨬª . |
᫨ ¢ª«îç¨âì äãªæ¨î "®ª § âì ᨬ®ª", ¯®á«¥ áꥬª¨ ¡ã¤¥â ¯®ª § |
⥪ã騩 ᨬ®ª. ᫨ ¦ âì ª®¯ªã "®ª § âì ᨬ®ª ᥩç á", ¡ã¤¥â |
¯®ª § ¯®á«¥¤¨© ᤥ« ë© á¨¬®ª. â®¡ë § ªàëâì ¯à®á¬®âà, ¤® |
¦ âì «î¡ãî ª« ¢¨èã. |
¤¥à¦ª . |
᫨ ¢ª«îç¨âì äãªæ¨î " ¤¥à¦ª ", ¯¥à¥¤ áꥬª®© ¡ã¤¥â § ¤¥à¦ª , à ¢ ï |
¢¢¥¤¥®¬ã ç¨á«ã. ᫨ ç¨á«® ¥ ¢¢¥¤¥®, § ¤¥à¦ª ¡ã¤¥â áç¨â âìáï à ¢®© |
ã«î. 1 = 1/100 ᥪã¤ë, 100 = 1 ᥪ㤠, 1000 = 10 ᥪã¤. |
¢â®á®åà ¥¨¥. |
᫨ ¢ª«îç¨âì äãªæ¨î ¢â®á®åà ¥¨¥, áà §ã ¯®á«¥ áꥬª¨ ä ©« á®åà ¨âáï |
¦¥á⪨© ¤¨áª. |
¢â®ã¬¥à æ¨ï. |
᫨ ¢ª«îç¨âì äãªæ¨î "¢â®ã¬¥à æ¨ï" ¢¬¥áâ® "*" ¢ ¨¬¥¨ ä ©« ¡ã¤¥â |
¢áâ ¢«¥ ⥪ã騩 ®¬¥à ᨬª , ¯à¨ í⮬ ¥®¡å®¤¨¬® § ¤ âì ª®«¨ç¥á⢮ |
§ ª®¢ ¢ ®¬¥à¥. ᫨ ¥ § ¤ âì ç «ìë© ®¬¥à, ® ¡ã¤¥â áç¨â âìáï |
à ¢ë¬ ã«î. ¨è¨¥ § ª¨ ¡ã¤ãâ § ¬¥¥ë ã«ï¬¨. |
¯à¨¬¥à, ¥á«¨ ç «ìë© ®¬¥à - 1, ª®«¨ç¥á⢮ § ª®¢ - 3, |
¨¬ï ä ©« "/hd0/1/menutos/screenshoot number *.bmp", |
ᣥ¥à¨àã¥âáï ¨¬ï ä ©« "/hd0/1/menutos/screenshoot number 001.bmp". |
᫨ äãªæ¨ï "¢â®ã¬¥à æ¨ï ¥ ¡ã¤¥â ¢ª«îç¥ , § 箪 "*" |
¨£®à¨àã¥âáï. |
¢â®áꥬª . |
⮡ë ç âì ¢â®áꥬªã, ¥®¡å®¤¨¬®: |
1) ¢¢¥á⨠¯®«ë© ¯ãâì ª ä ©«ã, £¤¥ ¢¬¥áâ® "*" ¡ã¤¥â ¢áâ ¢«ïâìáï ®¬¥à |
ª ¤à ; |
2) ¢ª«îç¨âì ¢â®ã¬¥à æ¨î; |
3) ¢ª«îç¨âì ¢â®á®åà ¥¨¥; |
4) ãáâ ®¢¨âì ¥®¡å®¤¨¬ãî § ¤¥à¦ªã (¥á«¨ ® 㦠); |
5) ®âª«îç¨âì ¢â®á¢®à 稢 ¨¥ ¨ ¢â®¢®ááâ ®¢«¥¨¥; |
6) ¦ âì ª®¯ªã " ç âì ¢â®áꥬªã". |
«ï ®áâ ®¢ª¨ ¢â®áꥬª¨ ¥®¡å®¤¨¬® ¦ âì ª®¯ªã "áâ ®¢¨âì ¢â®áꥬªã". |
®àï稥 ª« ¢¨è¨: |
PrintScrn - ᤥ« âì ᨬ®ª íªà (£«®¡ «ì ï). |
/programs/media/scrshoot/scrsavef.inc |
---|
0,0 → 1,168 |
save_file: |
pusha |
bt dword [flags],0 |
jnc .not_shooted |
cmp byte [ed_buffer.1],0 |
je .no_file_name |
mov edi,sign_n_input |
call zstr_to_int |
mov [sign_n],al |
; £¥¥à¨à㥬 ¨¬ï ä ©« |
xor eax,eax |
mov ecx,1056 |
mov edi,file_name |
rep stosb ; § ¯®«ï¥¬ ã«ï¬¨ |
mov esi,ed_buffer.1 |
mov edi,file_name |
.next: |
mov ah,[esi] |
test ah,ah |
jz .str_end |
cmp ah,'*' |
jne .no_insert_number |
jmp .insert_number |
.no_insert_number: |
mov [edi],ah |
inc edi |
inc esi |
jmp .next |
.insert_number: |
bt word [ch6.flags],1 |
jnc @f |
mov eax,[cur_number] |
;mov ebx,4 |
movsx ebx,byte [sign_n] |
push ebx |
call int_to_str |
pop ebx |
add edi,ebx |
@@: |
inc esi |
jmp .next |
.str_end: |
; ¢ë¤¥«ï¥¬ ¯ ¬ïâì |
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 |
lea ebx,[ebx*3] |
add ecx,ebx |
mov [sf_buf.end],ecx |
add ecx,4096 |
xor ebx,ebx |
inc ebx |
movr eax,64 |
int 0x40 |
; § ¯®«ï¥¬ áâàãªâãàã ¤«ï á®åà ¥¨ï ä ©« |
mov edi,fs_struc |
mov [edi],dword 2 |
mov eax,[sf_buf.bmp_header] |
mov ebx,[sf_buf.end] |
sub ebx,eax |
mov [edi+12],ebx |
mov [edi+16],eax |
mov [edi+21],dword file_name |
; § ¯®«ï¥¬ § £®«®¢®ª bmp |
mov edi,[sf_buf.bmp_header] |
mov [edi],word 'BM' |
mov ebx,[sf_buf.end] |
sub ebx,[sf_buf.bmp_area] |
mov [edi+34],ebx ; à §¬¥à ª à⨪¨ |
mov [edi+10],dword 0x36 ; à §¬¥à § £®«®¢ª |
add ebx,0x36 |
mov [edi+2],ebx ; à §¬¥à ä ©« |
mov [edi+14],dword 0x28 |
movsx eax,word [scr_buf.width] |
mov [edi+18],eax ; £®à¨§®â «ìë© à §¬¥à |
movsx eax,word [scr_buf.height] |
mov [edi+22],eax ; ¢¥à⨪«ìë© à §¬¥à |
mov [edi+26],word 1 |
mov [edi+28],word 24 |
; ª®¯¨à㥬 ¨ ¯¥à¥¢®à 稢 ¥¬ |
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 |
; á®åà 塞 |
draw_status saving |
mov eax,70 |
mov ebx,fs_struc |
int 0x40 |
test eax,eax |
jne save_error |
inc dword [cur_number] |
call draw_number |
draw_status saved_ok |
popa |
ret |
.no_file_name: |
draw_status no_file_name |
popa |
ret |
.not_shooted: |
draw_status not_shooted |
popa |
ret |
save_error: |
cmp al,5 |
jne @f |
mov [status.text],dword bad_file_name |
@@: |
cmp al,8 |
jne @f |
mov [status.text],dword disk_filled |
@@: |
cmp al,9 |
jne @f |
mov [status.text],dword bad_fat_table |
@@: |
cmp al,10 |
jne @f |
mov [status.text],dword ac_den |
@@: |
cmp al,11 |
jne @f |
mov [status.text],dword device_er |
@@: |
call send_draw_status |
popa |
ret |
/programs/media/scrshoot/scrshoot.asm |
---|
0,0 → 1,555 |
; ¢â®à ¯à®£à ¬¬ë ¢â¨å®¢ ªá¨¬ (Maxxxx32) |
; â ¯®á«¥¤¥£® ¨§¬¥¥¨ï: 20.07.06 18:05 |
macro draw_status text_ptr |
{ |
mov [status.text],dword text_ptr |
call send_draw_status |
} |
title equ 'Maxxxx32 Screenshooter v 0.78' ; £®«®¢®ª ®ª |
include 'lang.inc' |
include 'macros.inc' ; ¢áâ ¢«ï¥¬ ¬ ªà®áë |
meos_header cmdstr ; ¢áâ ¢«ï¥¬ § £®«®¢®ª ¯à®£à ¬¬ë |
include 'scrwin.inc' ; ¢áâ ¢«ï¥¬ ª®¤ ®ª ¯à¤¯à®á¬®âà |
include 'scrsavef.inc'; ¢áâ ¢«ï¥¬ ¯à®æ¥¤ãàã á®åà ¥¨ï ä ©« |
use_edit_box ; \ |
use_txt_button ; | |
use_label ; | |
use_gp ; |-- GUI ª®¬¯®¥âë ¨ ¥ª®â®àë¥ ¯à®æ¥¤ãàë |
use_check_box ; | |
use_text_work ; / |
;--- ç «® ¯à®£à ¬¬ë --- |
app_start |
; ãáâ ¢«¨¢ ¥¬ ipc ¡ãää¥à |
push 60 |
pop eax |
;mov ebx,1 |
xor ebx,ebx |
inc ebx |
mov ecx,app_ipc |
mov edx,32 |
int 0x40 |
push 66 ; ãáâ ¢«¨¢ ¥¬ £«®¡ «ìãî £®àïçãî ª« ¢¨èã |
pop eax |
push eax |
mov ebx,4 |
mov cl,55 ; 55 - PrintScrn |
xor edx,edx |
int 0x40 |
mov ebx,app |
call get_slot_n |
mov [slot_n],ecx |
; ãáâ ¢«¨¢ ¥¬ ¬ áªã ᮡë⨩ |
set_events_mask (evm_redraw+evm_key+evm_button+evm_mouse+evm_ipc) |
; áî¤ ¯àë£ ¥¬ ¯à¨ ª ¦¤®© ¯¥à¥à¨á®¢ª¥ |
red: |
get_procinfo app ; ¯®«ãç ¥¬ ¨ä®à¬ æ¨î ® ¯à®æ¥áᥠ|
get_sys_colors sc ; ¯®«ãç ¥¬ á¨áâ¥¬ë¥ æ¢¥â |
; ãáâ ¢«¨¢ ¥¬ á¨áâ¥¬ë¥ æ¢¥â ã GUI ª®¬¯®¥â®¢ |
txt_but_set_sys_color buttons,buttons_end,sc ; \ |
labels_set_sys_color labels,labels_end,sc ; | |
check_boxes_set_sys_color check_boxes,check_boxes_end,sc ; | |
edit_boxes_set_sys_color editboxes,editboxes_end,sc ; / |
get_screen_prop scr ; ¯®«ãç ¥¬ ¨ä®à¬ æ¨î ®¡ íªà ¥ |
call draw_window ; ¯¥à¥à¨á®¢ë¢ ¥¬ ®ª® |
still: |
wait_event red,key,button,mouse,ipc,still ; ¦¤¥¬ ᮡë⨩ |
key: |
get_key |
cmp al,2 |
jne @f |
cmp ah,55 |
jne @f |
call shoot |
jmp still |
@@: |
key_edit_boxes editboxes,editboxes_end |
jmp still |
button: |
get_pressed_button |
cmp ah,1 |
je p_close |
txt_but_ev buttons,buttons_end |
jmp still |
mouse: |
get_active_window |
cmp eax,[slot_n] |
jne still |
mouse_check_boxes check_boxes,check_boxes_end |
mouse_edit_boxes editboxes,editboxes_end |
jmp still |
ipc: |
cmp word [app_ipc+8],2 |
jne @f |
min_window |
jmp .clear_ipc |
@@: |
call draw_number |
call dr_st |
.clear_ipc: |
cld |
xor eax,eax |
movr ecx,32 |
mov edi,app_ipc |
rep stosb |
jmp still |
p_close: |
btr dword [flags],1 |
close: |
app_close |
;-------------------------------------------------------------------- |
;--- ¯à®®æ¥¤ãà ¯¥à¥à¨á®¢ª¨ £« ¢®£® ®ª --------------------------- |
;-------------------------------------------------------------------- |
draw_window: |
start_draw_window ; ç «® ¯¥à¥à¨á®¢ª¨ |
xor eax,eax ; ®¯à¥¤¥«ï¥¬ ®ª® |
mov ebx,100*65536+320 |
mov ecx,100*65536+240 |
mov edx,[sc.work] |
add edx,0x03000000 |
xor esi,esi |
xor edi,edi |
int 0x40 |
get_scin_height ; ¯®«ãç ¥¬ ¢ëá®âã § £®«®¢ª ®ª ¨ à áç¨âë¢ ¥¬ |
sub ax,4 ; ¯®«®¦¥¨¥ ⥪áâ § £®«®¢ª |
shr ax,1 |
mov bx,10 |
shl ebx,16 |
mov bx,ax |
mov eax,4 ; à¨á㥬 ⥪áâ § £®®«®¢ª |
mov ecx,[sc.grab_text] |
bts ecx,28 |
mov edx,grab_text |
mov esi,grab_text_end-grab_text |
int 0x40 |
movr eax,47 ; ¢ë¢®¤¨¬ ç¨á« ¢ ®ª® |
mov bx,4 |
shl ebx,16 |
movsx ecx,word [scr.width] ; è¨à¨ íªà |
mov dx,95 |
shl edx,16 |
mov dx,[label1.top] |
push dx |
mov esi,[sc.work_text] |
int 0x40 |
movsx ecx,word [scr.height] ; ¢ëá®â íªà |
mov dx,[label2.top] |
int 0x40 |
mov bx,2 |
shl ebx,16 |
movsx ecx,word [scr.bitspp] ; ¡¨â ¯¨ªá¥«ì |
mov dx,240 |
shl edx,16 |
pop dx |
int 0x40 |
mov bx,6 |
shl ebx,16 |
mov ecx,[scr.bytesps] ; ¡ ©â áâபã |
mov dx,[label2.top] |
int 0x40 |
call draw_number ; ¯à®à¨á®¢ë¢ ¥¬ ®¬¥à ᨬª |
call dr_st |
draw_labels labels,labels_end ; ¬¥âª¨ |
draw_edit_boxes editboxes,editboxes_end ; edit_box |
draw_txt_buttons buttons,buttons_end ; ª®¯ª¨ |
draw_check_boxes check_boxes,check_boxes_end ; ä« ¦ª¨ |
stop_draw_window ; ª®¥æ ¯¥à¥à¨á®¢ª¨ |
ret |
shoot: |
bt dword [ch4.flags],1 ; ¢ª«îç¥ «¨ § ¤¥à¦ª ? |
jnc @f |
draw_status delay_now |
mov edi,ed_buffer.2 |
call zstr_to_int |
mov ebx,eax |
delay |
@@: |
call get_mem_for_shoot; ¯®«ãç ¥¬ ¯ ¬ïâì ¤«ï ᨬª |
bts dword [flags],0 ; ã«¥¢®© ä« £ - ᨬ®ª ¥áâì ¢ ¯ ¬ï⨠|
; ¤¥« ¥¬ ᨬ®ª |
draw_status shooting |
mov esi,scr |
mov edi,[scr_buf.ptr] |
call copy_screen_to_image |
push dword [scr] |
pop dword [scr_buf.size] |
bt dword [ch5.flags],1 ; ¢ª«î祮 «¨ ¢â®á®åà ¥¨¥ ? |
jnc @f |
call save_file |
@@: |
draw_status shooted_ok |
bt dword [flags],1 |
jnc @f |
ret |
@@: |
bt dword [ch2.flags],1 ; ¯®ª § âì ®ª® ¯à¥¤¯à®á¬®âà ? |
jnc @f |
call show_scr_window |
@@: |
bt word [ch3.flags],1 ; ¢®ááâ ®¢¨âì ®ª® ? |
jnc @f |
delay 100 |
mov ecx,[slot_n] |
activ_window |
@@: |
ret |
get_mem_for_shoot: |
mov [scr_buf.ptr],dword __app_end |
movsx ecx, word [scr.width] |
movsx ebx, word [scr.height] |
imul ecx,ebx |
lea ecx,[ecx*3] |
add ecx,__app_end |
mov [scr_buf.end_ptr],ecx |
xor ebx,ebx |
inc ebx |
mov eax,64 |
int 0x40 |
ret |
;--- ᮤ âì ®ª® ¯à®¥¤¯à®á¬®âà --- |
show_scr_window: |
pusha |
bt dword [flags],0 |
jnc @f |
mov eax,51 |
xor ebx,ebx |
inc ebx |
movr ecx,scr_window |
mov edx,__app_end-1000 |
int 0x40 |
@@: |
popa |
ret |
;--- ¯à®ç¨â âì ¨ à¨á®¢ âì ⥪ã騩 ®¬¥à --- |
apply_number: |
mov edi,ed_buffer.3 |
call zstr_to_int |
mov [cur_number],eax |
call draw_number |
ret |
;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ⥪ã饣® ®¬¥à --- |
draw_number: |
mov edi,sign_n_input |
call zstr_to_int |
mov [sign_n],al |
movr eax,13 |
mov ebx,140*65536+96 |
mov cx,[label9.top] |
shl ecx,16 |
mov cx,10 |
mov edx,[sc.work] |
int 0x40 |
movr eax,47 |
movsx bx,byte [sign_n] |
shl ebx,16 |
mov ecx,[cur_number] |
mov dx,140 |
shl edx,16 |
mov dx,[label9.top] |
mov esi,[sc.work_text] |
int 0x40 |
ret |
;--- ¯à®æ¥¤ãà , § ¯ã᪠îé ï ¯®â®ª ¢â®áꥬª¨ --- |
start_autoshoot: |
bts dword [flags],1 |
jc @f |
movr eax,51 |
;mov ebx,1 |
xor ebx,ebx |
inc ebx |
mov ecx,autoshoot |
mov edx,__app_end-512 |
int 0x40 |
@@: |
ret |
;--- ®áâ ¢«¨¢ ¥â íâ®â ¯®â®ª --- |
stop_autoshoot: |
btr dword [flags],1 |
ret |
;--- 横« ¯®â®ª ¢â®áꥬª¨ --- |
autoshoot: |
mov ecx,[slot_n] |
activ_window |
.next: |
bt dword [flags],1 |
jnc close |
movr eax,60 |
movr ebx,2 |
mov ecx,[app.pid] |
mov edx,messages.draw_number |
mov esi,2 |
int 0x40 |
call shoot |
jmp autoshoot.next |
;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ áâப¨ á®áâ®ï¨ï --- |
; (¤®«¦ ¢ë§ë¢ âìáï ¯®â®ª®¬ £« ¢®£® ®ª ) |
dr_st: |
movr eax,38 ; ®â१®ª |
mov ebx,5*65536+315 |
mov ecx,222*65536+222 |
mov edx,[sc.work_graph] |
int 0x40 |
movr eax,13 ; ¯®«®áª |
mov bx,310 |
mov ecx,223*65536+12 |
mov edx,[sc.work] |
int 0x40 |
mov edi,status |
call draw_label |
ret |
;--- ¯à®æ¥¤ãà ¯®«ãç¥¨ï ®¬¥à ᫮⠯®â®ª --- |
; ¢å®¤ ebx - ¡ãää¥à 1024 ¡ ©â |
; ¢ë室 ecx - ®¬¥à á«®â |
get_slot_n: |
movr eax,9 |
xor ecx,ecx |
dec ecx |
int 0x40 |
mov edx,[app.pid] |
xor ecx,ecx |
@@: |
movr eax,9 |
inc ecx |
int 0x40 |
cmp [app.pid],edx |
je @f |
jmp @b |
@@: |
ret |
one_shoot: |
mov ecx,one_shoot_thread |
mov edx,shoot_esp |
jmp @f |
save_shoot: |
mov ecx,save_shoot_thread |
mov edx,shoot_esp |
@@: |
bts dword [flags],2 |
jc .running |
bt dword [flags],1 |
jc .running |
movr eax,51 |
;mov ebx,1 |
xor ebx,ebx |
inc ebx |
int 0x40 |
.running: |
ret |
one_shoot_thread: |
mov ecx,[slot_n] |
activ_window |
bt dword [ch1.flags],1 ; ¬¨¨¬¨§¨à®¢ âì ®ª® ? |
jnc @f |
movr eax,60 |
movr ebx,2 |
mov ecx,[app.pid] |
mov edx,messages.min_window |
mov esi,2 |
int 0x40 |
@@: |
call shoot |
btr dword [flags],2 |
jmp close |
send_draw_status: |
movr eax,60 |
movr ebx,2 |
mov ecx,[app.pid] |
mov edx,messages.draw_status |
mov esi,2 |
int 0x40 |
ret |
save_shoot_thread: |
mov ecx,[slot_n] |
activ_window |
call save_file |
btr dword [flags],2 |
jmp close |
;==================================================================== |
;=== ¤ ë¥ ¯à®£à ¬¬ë =============================================== |
;==================================================================== |
messages: |
.draw_number dw 0 |
.draw_status dw 1 |
.min_window dw 2 |
grab_text: |
db title |
grab_text_end: |
labels: |
label1 label 10,30,0,text.1 ; ¢ëá®â íªà |
label2 label 10,40,0,text.2 ; è¨à¨ íªà |
label3 label 10,50,0,text.3 ; ¢¢¥¤¨â¥ ¨¬ï ä ©« |
label4 label 150,30,0,text.4 ; ¡¨â ¯¨ªá¥«ì |
label5 label 150,40,0,text.5 ; ¡ ©â áâபã |
label6 label 120,163,0,text.6 |
;label7 label 10,190,0,text.7 |
;label8 label 10,225,0,text.8 |
label9 label 10,78,0,text.9 ; ⥪ã騩 |
label10 label 10,210,0,text.10 |
status label 10,226,0,no_shoot |
labels_end: |
editboxes: |
edit1 edit_box 300,10,60,cl_white,0,0,0,1024,ed_buffer.1,ed_focus |
edit2 edit_box 35,80,159,cl_white,0,0,0,9,ed_buffer.2,ed_figure_only |
edit3 edit_box 35,170,189,cl_white,0,0,0,9,ed_buffer.3,ed_figure_only |
edit4 edit_box 16,170,206,cl_white,0,0,0,1,sign_n_input,ed_figure_only,1 |
editboxes_end: |
buttons: |
but1 txt_button 150,10,15,90,2,0,0,but_text.1,one_shoot |
but2 txt_button 145,165,15,90,3,0,0,but_text.2,save_shoot |
but3 txt_button 140,120,12,145,4,0,0,but_text.3,show_scr_window |
but4 txt_button 80,210,15,188,5,0,0,but_text.4,apply_number |
but5 txt_button 150,10,15,110,6,0,0,but_text.5,start_autoshoot |
but6 txt_button 145,165,15,110,7,0,0,but_text.6,stop_autoshoot |
buttons_end: |
check_boxes: |
ch1 check_box 10,130,cl_white,0,0,ch_text.1,(ch_text.2-ch_text.1) |
ch2 check_box 10,145,cl_white,0,0,ch_text.2,(ch_text.3-ch_text.2) |
ch3 check_box 150,130,cl_white,0,0,ch_text.3,(ch_text.4-ch_text.3) |
ch4 check_box 10,160,cl_white,0,0,ch_text.4,(ch_text.5-ch_text.4) |
ch5 check_box 10,175,cl_white,0,0,ch_text.5,(ch_text.6-ch_text.5) |
ch6 check_box 10,190,cl_white,0,0,ch_text.6,(ch_text.7-ch_text.6) |
; ¢â®ã¬¥à æ¨ï |
check_boxes_end: |
if lang eq ru |
text: |
.2: db 'ëá®â íªà :',0 |
.1: db '¨à¨ íªà :',0 |
.3: db '¢¥¤¨â¥ ¯®«ë© ¯ãâì ª ä ©«ã:',0 |
.4: db '¨â ¯¨ªá¥«ì:',0 |
.5: db ' ©â áâபã:',0 |
.6: db '100 = 1 ᥪ㤠',0 |
;.7: db '¢¥¤¨â¥ ¨¬ï ä ©« :',0 |
;.8: db '¬¥áâ® "*" ¢ ¨¬¥¨ ä ©« ¡ã¤¥â ¢áâ ¢«ïâìáï ®¬¥à.',0 |
.9: db '¥ªã騩 ®¬¥à ᨬª :',0 |
.10: db '®«¨ç¥á⢮ § ª®¢ ¢ ®¬¥à¥:',0 |
but_text: |
.1: db '¤¥« âì ᨬ®ª íªà ',0 |
.2: db '®åà ¨âì ᨬ®ª íªà ',0 |
.3: db '®ª § âì ᨬ®ª ᥩç á',0 |
.4: db 'ਬ¥¨âì',0 |
.5: db ' ç âì ¢â®áꥬªã',0 |
.6: db 'áâ ®¢¨âì ¢â®áꥬªã',0 |
ch_text: |
.1 db '¢¥àãâì ®ª®';,0 |
.2 db '®ª § âì ᨬ®ª';,0 |
.3 db '§ ⥬ ᤥ« âì ªâ¨¢ë¬';,0 |
.4: db ' ¤¥à¦ª :';,0 |
.5: db '¢â®á®åà ¥¨¥';,0 |
.6: db '¢â®ã¬¥à æ¨ï, ç¨ ï á';,0 |
.7: |
no_shoot db '¨¬®ª ¥ ᤥ« ',0 |
shooting db '®â®£à ä¨à®¢ ¨¥...',0 |
shooted_ok db '¨¬®ª ᤥ« ',0 |
saving db '®åà ¥¨¥...',0 |
saved_ok db '¨¬®ª á®åà ¥',0 |
delay_now db ' ¤¥à¦ª ...',0 |
bad_file_name db '¬ï ä ©« ¢¢¥¤¥® ¥¢¥à®',0 |
disk_filled db '¨áª § ¯®«¥',0 |
bad_fat_table db ' ¡«¨æ FAT à §àãè¥ ',0 |
ac_den db '®áâ㯠§ ¯à¥é¥',0 |
device_er db '訡ª ãáâனá⢠',0 |
not_shooted db '¤¥« ©â¥ ᨬ®ª !!!',0 |
no_file_name db '¢¥¤¨â¥ ¨¬ï ä ©« !!!',0 |
end if |
sign_n_input: |
db '2',0 |
app_ipc ipc_buffer 32 |
cur_number dd ? |
sign_n db ? |
slot_n dd ? |
flags dd ? |
scr_buf: |
.ptr dd ? |
.end_ptr dd ? |
.size: |
.height dw ? |
.width dw ? |
fs_struc: |
.funk_n dd ? |
dd ? |
dd ? |
.bytes_to_write dd ? |
.data_ptr dd ?,? |
.fn_ptr dd ? |
sf_buf: |
.bmp_header dd ? |
.bmp_area dd ? |
.end dd ? |
cmdstr rb 257 |
ed_buffer: |
.1: rb 1025 |
.2: rb 10 |
.3: rb 10 |
file_name: |
rb 1058 |
scr screen_prop |
sc sys_color_table |
app procinfo |
shoot_esp rb 512 |
app_end ; ª®¥æ ¯à®£à ¬¬ë |
/programs/media/scrshoot/scrshoot.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/media/scrshoot/scrwin.inc |
---|
0,0 → 1,38 |
scr_window: |
.start: |
.red: |
call .draw_window |
.still: |
wait_event .red,close |
jmp .still |
.draw_window: |
start_draw_window |
xor eax,eax |
movsx ebx,word [scr.width] |
movsx ecx,word [scr.height] |
;xor edx,edx |
mov edx,0x01000000 |
xor esi,esi |
xor edi,edi |
int 0x40 |
movr eax,7 |
mov ebx,[scr_buf.ptr] |
mov ecx,[scr_buf.size] |
xor edx,edx |
int 0x40 |
movr eax,13 |
mov ebx,19*65536+231 |
mov ecx,19*65536+10 |
mov edx,0x00FF00 |
int 0x40 |
mov edi,.label |
call draw_label |
stop_draw_window |
ret |
.label label 20,20,0x80000000,$+4 |
db 'â® ¢ è ᨬ®ª. ë室 - «î¡ ï ª« ¢¨è .',0 |
/programs/media/scrshoot/textwork.inc |
---|
0,0 → 1,41 |
macro use_text_work |
{ |
;edi - 㪠§ ⥫ì áâபã, ®£à ¨ç¥ãî ã«¥¬ |
;ç¨á«® ¢®§¢à é ¥âáï ¢ eax |
zstr_to_int: |
xor eax,eax |
mov ecx,10 |
.next: |
movsx ebx,byte [edi] |
inc edi |
test ebx,ebx |
jz .end_str |
cmp bl,'9' |
jg .no_figure |
cmp bl,'0' |
jl .no_figure |
sub ebx,'0' |
mul ecx |
add eax,ebx |
.no_figure: |
jmp .next |
.end_str: |
ret |
;edi - 㪠§ ⥫ì áâபã |
;eax - ç¨á«® |
;ebx - ª®«¨ç¥á¢® § ª®¢ |
int_to_str: |
mov ecx,10 |
.next: |
test ebx,ebx |
jz .end |
xor edx,edx |
div ecx |
add dl,'0' |
dec ebx |
mov [edi+ebx],dl |
jmp .next |
.end: |
ret |
} |
/programs/media/scrshoot/txtbut.inc |
---|
0,0 → 1,106 |
;-------------------------------------------------------------------- |
;--- à¨á®¢ ¨¥ ª®¯ª¨ á ⥪á⮬ ¢ á¥à¥¤¨¥ -------------------------- |
;-------------------------------------------------------------------- |
macro use_txt_button |
{ |
txt_button: |
.draw: |
pusha |
;--- ¯à®à¨á®¢ª á ¬®© ª®¯ª¨ --- |
mov eax,8 |
mov ebx,[edi] ; [but.width] |
mov ecx,[edi+4] ;[but.height] |
mov edx,[edi+8];[but.id] |
mov esi,[edi+12];[but.color] |
int 0x40 |
;--- ⥪áâ ¥© --- |
; áç¨â ¥¬ ª®«¨ç¥á⢮ ᨬ¢®«®¢ |
mov edx,[edi+20] |
xor esi,esi |
.check_next_symbol: |
cmp [edx+esi],byte 0 |
je .str_end |
inc esi ; ¢ esi ¤«¨ áâப¨ ¢ ᨬ¢®« å |
jmp .check_next_symbol |
.str_end: |
; ¢ëç¨á«ï¥¬ ª®®à¤¨ âë |
lea ebx,[esi*2+esi] |
lea ebx,[ebx*2] ; ¢ ebx ¤«¨ áâப¨ ¢ ¯¨ªá¥«ïå |
;not ebx |
neg ebx |
add bx,[edi] ; [but.width] |
sar bx,1 |
inc bx |
add bx,[edi+2];[but.left] ; ¢ bx ¯®§¨æ¨ï á«¥¢ |
shl ebx,16 |
mov bx,[edi+4];[but.height] |
sub bx,8 |
sar bx,1 |
add bx,[edi+6];[but.top] ; ¢ bx ¯®§¨æ¨ï ᢥàåã |
; à¨á㥬 áâபã ⥪áâ |
mov ecx,[edi+16] ;[but.text_color] |
shr eax,1 |
int 0x40 |
popa |
ret |
} |
struc txt_button width,left,height,top,id,color,text_color,text_ptr,\ |
proc_addres |
{ |
.width dw width ;+0 |
.left dw left ;+2 |
.height dw height ;+4 |
.top dw top ;+6 |
.id dd id ;+8 |
.color dd color ;+12 |
.text_color dd text_color ;+16 |
.text_ptr dd text_ptr ;+20 |
.proc_addres dd proc_addres+0 ;+24 |
} |
but_struc_size=24+4 |
macro draw_txt_buttons start,end |
{ |
mov edi,start |
mov ecx,((end-start)/but_struc_size) |
@@: |
call txt_button.draw |
add edi,but_struc_size |
loop @b |
} |
macro txt_but_set_sys_color start,end,color_table |
{ |
mov edi,start |
mov esi,color_table |
mov ecx,((end-start)/but_struc_size) |
@@: |
push dword [esi+24] |
pop dword [edi+12] |
push dword [esi+28] |
pop dword [edi+16] |
add edi,but_struc_size |
loop @b |
} |
macro txt_but_ev start,end |
{ |
mov edi,start |
mov ecx,((end-start)/but_struc_size) |
.txt_but_next: |
cmp ah,[edi+8] |
jne @f |
cmp dword [edi+24],0 |
je @f |
pusha |
call dword [edi+24] |
popa |
@@: |
add edi,but_struc_size |
loop .txt_but_next |
} |