31,6 → 31,7 |
;; 0.6.0 - ®¡ ¢«¥ ¢®§¬®¦®áâì § ¯ãáª á ¯ à ¬¥âà ¬¨ | |
;; - ®¡ ¢«¥ ०¨¬ H (hidden) ¯à®¨§¢®¤¨â § ¬¥ã ä® à ¡®ç¥£® á⮫ £à ¤¨¥â®© § «¨¢ª®©. | |
;; - ®«ìè ï ¤¥®¯â¨¬¨§ æ¨ï. | |
;; 0.7.0 - ®¡ ¢«¥ ¯¨¯¥âª - ¢ë¡®à á।îî ª®¯ªã ¬ëè¨ | |
;..................................................................................................... |
;; All rights reserved. | |
;; | |
62,13 → 63,12 |
;----------------------------------------------------------------------------------------------------/ |
use32 |
org 0x0 |
|
db 'MENUET01' |
dd 0x01 |
dd START |
dd I_END |
dd 0x100000 |
dd 0x1000 |
dd I_END+4096 |
dd I_END+4096 |
dd params |
dd 0x0 |
|
79,33 → 79,13 |
WIN_X equ 250 ; ª®®à¤¨ â å ®ª |
WIN_Y equ 190 ; ª®®à¤¨ â ã ®ª |
|
panel: |
file "panel.raw" |
|
START: |
; ®¡à ¡®âª ¯ à ¬¥â஢ ª®¬ ¤®© áâப¨ |
mov edi,params ; 㪠§ ⥫ì áâபã |
call str_len ; ¯®«ãç ¥¬ ¤«¨ã áâப¨ |
cmp eax,0 ; áâà ¢¨¢ ¥¬ ¤«¨ã á ã«ñ¬ |
je red ; ¥á«¨ ¯ à ¬¥â஢ ¥â â® ã室¨¬ |
call _read_params ; ¨ ç¥ ç¨â ¥¬ ¯ à ¬¥âàë 梥â (®ç¥ì ªà¨¢®) |
xor eax,eax ; § ã«ï¥¬ ॣ¨áâà |
mov al,byte [params] ; ç¨â ¥¬ ¯ à ¬¥âà ¬®¤ |
cmp al,'N' ; áà ¢¨¢ ¥¬ á normal mode |
jne _no_normalmode ; ¥á«¨ ¥â â® ã室¨¬ ¯à®¢¥àªã ¤ «ìè¥ |
mov [runmode],1 ; ¥á«¨ ¤ â® ãáâ ¢«¨¢ ¥¬ ¥£® |
jmp red ; ¨¤ñ¬ ®âà¨á®¢ªã |
_no_normalmode: ; ¥á«¨ ¥ normal mode â® |
cmp al,'H' ; ¢®§¬®¦® hidden mode |
jne _no_hiddenmode ; ¥á«¨ ¥ ® â® ã室¨¬ ¤ «ìè¥ |
mov [runmode],2 ; ¥á«¨ ® â® ãáâ ¢«¨¢ ¥¬ çâ® íâ® ® ( å?) |
call set_background ; ¬¥ï¥¬ ä® |
jmp bexit ; ¨ § ªàë¢ ¥¬ ¯à®£ã |
_no_hiddenmode: ; ¥á«¨ ¥ hidden mode |
cmp al,'D' ; ¢®§¬®¦® íâ® color dialog mode |
jne _no_dialogmode ; ¥á«¨ ¢áñ â ª¨ ¥ ® â® ã室¨¬ |
mov [runmode],3 ; ¨ ç¥ ãª §ë¢ ¥¬ çâ® íâ® â ª¨ ® |
jmp red ; ¨ ã室¨¬ ¢ë¯®«¥¨¥ |
_no_dialogmode: ; ¥á«¨ íâ® ¨ ®¤¨ ¨§ § ¥ëå ¬®¤®¢ |
mov [runmode],1 ; â® á¡à áë¢ ¥¬ ¤¥ä®«â |
jmp red ; ¨ à¨á㥬 |
mcall 68,11 ; ¨¨æ¨ «¨§ æ¨ï ªãç¨ |
mcall 40,0x27 ; ãáâ ¢«¨¢ ¥¬ ¬ áªã ᮡë⨩ |
include 'params_init.inc' ; ®¡à ¡®âª ¯ à ¬¥â஢ ª®¬ ¤®© áâப¨ |
|
;#___________________________________________________________________________________________________ |
;****************************************************************************************************| |
121,6 → 101,8 |
je key ; ¥á«¨ ¤ - key |
cmp eax,3 ; ¦ â ª®¯ª ? |
je button ; ¥á«¨ ¤ - button |
cmp eax,6 ; ᮡë⨥ ®â ¬ëè¨ ¢¥ ®ª |
je mouse ; ¥á«¨ ¤ - button |
jmp still ; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ç «® 横« |
;end_still |
|
129,6 → 111,19 |
jmp still ; ¢¥àãâìáï ª ç «ã 横« |
;end_key |
|
mouse: |
mov eax,[renmode] |
cmp eax,2 |
jnz still |
call cyrcle_draw |
mcall 37,2 |
cmp al,100b |
jne still |
mov [color],edx |
call draw_result |
jmp still ; ¢¥àãâìáï ª ç «ã 横« |
;end_mouse |
|
button: |
mcall 17 ; 17 - ¯®«ãç¨âì ¨¤¥â¨ä¨ª â®à ¦ ⮩ ª®¯ª¨ |
cmp ah, 1 ; ¥á«¨ ¦ â ª®¯ª á ®¬¥à®¬ 1, |
154,7 → 149,7 |
circle_bg: |
cmp ah, 15 ; ®¯ª à㣮¢ ï ¯ «¨âà |
jne next_end ; ¥á«¨ ¥ ¦ â â® ¢ë室¨¬ |
;mov [renmode],2 ; ¢ª«îç ¥¬ ®âà¨á®¢ªã ªà㣮¢®© ¯ «¨âàë |
mov [renmode],2 ; ¢ª«îç ¥¬ ®âà¨á®¢ªã ªà㣮¢®© ¯ «¨âàë |
call draw_palitra ;
|
jmp still ; ¨ ®¦¨¤ ¨¥ ᮡëâ¨ï |
next_end: |
303,41 → 298,52 |
mov edx,0x6000000C ; ID = 12 |
mov esi,[sc.work_button] ; RGB |
int 0x40 ; call |
mov eax,13 ; draw rect |
mov ebx,266 shl 16+16 ; [x] + [size] |
mov ecx,9 shl 16+16 ; [y] + [size] |
mov edx,0x666666 ; RGB |
push esi ; backup esi |
mov esi,8 ; counter=8 |
draw_lpanel: ; loop label |
int 0x40 ; call draw black rect |
; circle diagram |
add ecx,19 shl 16 ; move rect |
dec esi ; decrement counter |
cmp esi,0 ; if counter!=zero |
jne draw_lpanel ; then goto label |
mov esi,8 ; else counter=8 |
mov ebx,267 shl 16+14 ; [x] + [size] |
mov ecx,10 shl 16+14 ; [y] + [size] |
mov edx,0xF3F3F3 ; RGB |
draw_lpanel2: ; 2 loop label |
int 0x40 ; call draw white rect |
add ecx,19 shl 16 ; move rect |
dec esi ; decrement counter |
cmp esi,0 ; if counter!=0 |
jne draw_lpanel2 ; then goto label2 |
pop esi ; restore esi |
mov edx,0x6000000F ; ID = 15 |
int 0x40 ; call |
|
mov eax,7 ; 7 - ®¬¥à äãªæ¨¨ |
mov ebx,panel ; 㪠§ â¥«ì ¨§®¡à ¦¥¨¥ ¢ ä®à¬ ⥠BBGGRRBBGGRR... |
mov ecx, 16 shl 16 + 149 ; [à §¬¥à ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ y] |
mov edx,266 shl 16 + 9 ; [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [ª®®à¤¨ â ¯® ®á¨ y] |
int 0x40 |
|
;mov eax,13 ; draw rect |
;mov ebx,266 shl 16+16 ; [x] + [size] |
;mov ecx,9 shl 16+16 ; [y] + [size] |
;mov edx,0x666666 ; RGB |
;push esi ; backup esi |
;mov esi,8 ; counter=8 |
;draw_lpanel: ; loop label |
; int 0x40 ; call draw black rect |
; add ecx,19 shl 16 ; move rect |
; dec esi ; decrement counter |
; cmp esi,0 ; if counter!=zero |
; jne draw_lpanel ; then goto label |
; mov esi,8 ; else counter=8 |
; mov ebx,267 shl 16+14 ; [x] + [size] |
; mov ecx,10 shl 16+14 ; [y] + [size] |
; mov edx,0xF3F3F3 ; RGB |
;draw_lpanel2: ; 2 loop label |
; int 0x40 ; call draw white rect |
; add ecx,19 shl 16 ; move rect |
; dec esi ; decrement counter |
; cmp esi,0 ; if counter!=0 |
; jne draw_lpanel2 ; then goto label2 |
;pop esi ; restore esi |
; draw_left_arrow for button_next_colorsheme |
mov eax,4 ; Write string |
mov ebx,272 shl 16+13 ; [x] + [y] |
mov ecx,0x0 ; RGB |
mov edx,larrow ; string pointer |
mov esi,1 ; count symbol |
int 0x40 ; call |
mov eax,38 ; draw line |
mov ebx,270 shl 16+272 ; [start x] + [end x] |
mov ecx,16 shl 16+16 ; [start y] + [end y] |
mov edx,0x0 ; RGB |
int 0x40 ; call |
;mov eax,4 ; Write string |
;mov ebx,272 shl 16+13 ; [x] + [y] |
;mov ecx,0x0 ; RGB |
;mov edx,larrow ; string pointer |
;mov esi,1 ; count symbol |
;int 0x40 ; call |
;mov eax,38 ; draw line |
;mov ebx,270 shl 16+272 ; [start x] + [end x] |
;mov ecx,16 shl 16+16 ; [start y] + [end y] |
;mov edx,0x0 ; RGB |
;int 0x40 ; call |
ret ; return |
;................................................................................................. |
|
456,10 → 462,11 |
int 0x40 ; xsize = à §¬¥à ¯® £®à¨§®â «¨ - 1 |
mov ebx,eax ; |
shr ebx,16 ; ebx = xsize-1 |
;movzx edx,ax ;; edx = ysize-1 («¨è¨© ª®¤) |
movzx edx,ax ; edx = ysize-1 («¨è¨© ª®¤) |
inc ebx ; ebx = xsize |
;inc edx ;; edx = ysize («¨è¨© ª®¤) |
inc edx ; edx = ysize («¨è¨© ª®¤) |
mov [desctop_w],ebx |
mov [desctop_h],edx |
ret |
;end_desktop_get |
|
504,8 → 511,8 |
mov edx,[sc.work] ; 梥â |
int 0x40 |
|
;cmp [renmode],2 |
;je cyrcle_draw |
cmp [renmode],2 |
je cyrcle_draw |
;cmp [renmode],1 |
;je picker_draw |
cmp [renmode],0 |
515,14 → 522,126 |
;................................................................................................. |
; âà¨á®¢ª ªà㣮¢®© ¤¨ £à ¬¬ë |
;................................................................................................. |
;cyrcle_draw: |
;mov eax,7 ; 7 - ®¬¥à äãªæ¨¨ |
;mov ebx,circle ; 㪠§ â¥«ì ¨§®¡à ¦¥¨¥ ¢ ä®à¬ ⥠BBGGRRBBGGRR... |
;mov ecx,148 shl 16 + 148 ; [à §¬¥à ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ y] |
;mov edx,110 shl 16 + 9 ; [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [ª®®à¤¨ â ¯® ®á¨ y] |
;int 0x40 |
;ret |
cyrcle_draw: |
;mov eax,13 |
;mov edx,0x666666 |
;mov ebx,108*65536+152 |
;mov ecx,125*65536+33 |
;mcall |
;mov edx,0xF3F3F3 |
;mov ebx,109*65536+150 |
;mov ecx,126*65536+31 |
;mcall |
|
;mov eax,4 ; 4 - ¢ë¢¥á⨠áâபã ⥪áâ ¢ ®ª® |
;mov ebx,115 shl 16+131 ; [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [ª®®à¤¨ â ¯® ®á¨ y] |
;mov ecx,0x666666 ; 0xX0RRGGBB (RR, GG, BB § ¤ îâ 梥â ⥪áâ ) |
;mov edx,hint ; 㪠§ ⥫ì ç «® áâப¨ |
;mov esi,24 ; ¢ë¢®¤¨âì esi ᨬ¢®«®¢ |
;mcall |
;mov ebx,125 shl 16+144 ; [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [ª®®à¤¨ â ¯® ®á¨ y] |
;mov edx,hint2 ; 㪠§ ⥫ì ç «® áâப¨ |
;mov esi,21 ; ¢ë¢®¤¨âì esi ᨬ¢®«®¢ |
;mcall |
|
mov eax,13 |
mov edx,0x666666 |
mov ebx,111*65536+145 |
mov ecx, 9*65536+145 |
mcall |
;mov edx,[color] |
;mov ebx,109*65536+150 |
;mov ecx, 10*65536+150 |
;mcall |
call mouse_local ; ¯®«ãç ¥¬ ª®®à¤¨ âë ¬ëè¨ ®â®á¨â¥«ì® ®ª |
mov ecx, [mouse_x] ; § ®á¨¬ ¢ ॣ¨áâà |
mov edx, [mouse_y] ; § ®á¨¬ ¢ ॣ¨áâà |
cmp ecx, WIN_W-10 |
jg cyrcle_draw_2 |
cmp edx, WIN_H |
jle end_cyrcle_draw |
|
cyrcle_draw_2: |
call desktop_get |
call mouse_global |
|
mov ebx,112*65536+11 |
mov esi,0 ; counter=8 |
circle_loop: |
mov ecx, 10*65536+11 |
mov edi,0 |
circle_loop2: |
mov eax,13 |
call circle_pixel_read |
mcall |
add ecx,11 shl 16 |
inc edi |
cmp edi,13 |
jne circle_loop2 |
|
add ebx,11 shl 16 |
inc esi |
cmp esi,13 |
jne circle_loop |
|
|
mov eax,13 |
mov edx,0x0 |
mov ebx,177*65536+13 |
mov ecx, 76*65536+13 |
mcall |
mov ecx, [mouse_x] |
mov edx, [mouse_y] |
inc ecx |
inc edx |
mov ebx, edx |
imul ebx, [desctop_w] |
add ebx, ecx |
mov eax, 35 |
mcall |
mov edx,eax |
mov eax,13 |
mov ebx,178*65536+11 |
mov ecx, 77*65536+11 |
mcall |
end_cyrcle_draw: |
ret |
|
circle_pixel_read: |
push ecx |
push ebx |
push eax |
mov ecx, [mouse_x] |
mov edx, [mouse_y] |
inc ecx |
add ecx, esi |
cmp ecx, 6 |
jl _cpr_exit |
sub ecx, 6 |
inc edx |
add edx, edi |
cmp edx, 6 |
jl _cpr_exit |
sub edx, 6 |
|
mov ebx, edx |
imul ebx, [desctop_w] |
add ebx, ecx |
mov eax, 35 |
mcall |
mov edx,eax |
pop eax |
pop ebx |
pop ecx |
ret |
|
_cpr_exit: |
mov edx,0x00000000 |
pop eax |
pop ebx |
pop ecx |
ret |
|
;picker_draw: |
;ret |
|
1079,35 → 1198,13 |
ret |
;end_str_len |
|
;................................................................................................. |
; ¢®§¢à é ¥â 㪠§ â¥«ì ¯¥à¢®¥ ¢å®¦¤¥¨¥ Chr L (¢å®¤->EDI string ; ¢ë室->EAX offset) |
;................................................................................................. |
;strscan: |
; push ecx ; ¤«¨ áâப¨ |
; push ebx ; 㪠§ ⥫ì ᨬ¢®« (bl) |
; push esi ; ¯à¨£®¤¨âáï |
; push edi ; 㪠§ ⥫ì áâபã |
; mov esi, edi |
; mov al,bl |
; repne scasb |
; sub edi, esi |
; mov eax, edi |
; dec eax |
; pop edi |
; pop esi |
; pop ebx |
; pop ecx |
; ret |
;end; |
|
|
|
|
;#___________________________________________________________________________________________________ |
;****************************************************************************************************| |
;
| |
;----------------------------------------------------------------------------------------------------/ |
|
circle: |
cm db 12 dup(0) |
color dd 00000000h ; åà ¨â § 票¥ ¢ë¡à ®£® 梥â |
color2 dd 00FFFFFFh ; åà ¨â § 票¥ ¢â®à®£® ¢ë¡à ®£® 梥â |
1115,8 → 1212,9 |
mouse_y dd 0 ; åà ¨â £«®¡ «ìãî ã ª®®à¤¨ âã ¬ëè¨ |
mouse_f dd 0 ; åà ¨â ¤ ë¥ ® ⮬ ª ª ï ª®¯ª ¬ëè¨ ¡ë« ¦ â |
desctop_w dd 0 ; åà ¨â è¨à¨ã íªà |
desctop_h dd 0 ; åà ¨â ¢ëá®âã íªà |
sc system_colors ; åà ¨â áâàãªâãàã á¨á⥬ëå 梥⮢ ᪨ |
title db 'Palitra v0.6',0 ; åà ¨â ¨¬ï ¯à®£à ¬¬ë |
title db 'Palitra v0.7',0 ; åà ¨â ¨¬ï ¯à®£à ¬¬ë |
hidden db 'Hidden',0 |
hex db '#',0 ; ¤«ï ¢ë¢®¤ à¥èñ⪨ ª ª ⥪áâ |
cname db 'RGBAx' ; åà ¨â à §àï¤ë 梥⮢ (red,green,blue) x-¬¥âª ª®æ |
1132,6 → 1230,9 |
runmode dd 1 ; ०¨¬ § ¯ã᪠(1-normal, 2-hidden, 3-colordialog) |
params db 20 dup(0) ; ¯à¨ñ¬ ¯ à ¬¥â஢ |
params_c db 9 dup(0) ; ¯à¨ñ¬¨ª ¤«ï 梥â |
|
|
|
I_END: |
|
|