21,20 → 21,29 |
;****************************************************************************** |
|
; ®¤ª«îç ¥¬ ¥®¡å®¤¨¬ë¥ ¬ ªà®áë |
include 'macros.inc' |
include '../../../macros.inc' |
|
;****************************************************************************** |
|
; |
meos_app_start |
use32 |
org 0x0 |
db 'MENUET01' ; 8 byte id |
dd 0x01 ; title version |
dd START ; start of code |
dd I_END ; size of image |
dd E_END ; memory for app |
dd E_END ; esp |
dd 0x0,0x0 ; I_Param , I_Icon |
|
; |
code |
START: |
mov eax,40 ; á®®¡é¨¬ á¨á⥬¥, ª ª¨¥ ᮡëâ¨ï ¡ã¤¥¬ ®¡à ¡ âë¢ âì |
mov ebx,0100101b ; ¬ ᪠ᮡë⨩ - ¯¥à¥à¨á®¢ª (1) + ª®¯ª (3) + ¬ëèì (6 |
int 0x40 ; íâ ª®¬ ¤ ¢ë§ë¢ ¥â á¨á⥬ãî äãªæ¨î |
|
mov [workarea.cx],10 ; ª®®à¤¨ âë à ¡®ç¥© (ª«¨¥â᪮©) ®¡« á⨠|
mov [workarea.cy],45 ; ¤«ï à¨á®¢ ¨ï |
mov [workarea.cx],5 ; ª®®à¤¨ âë à ¡®ç¥© (ª«¨¥â᪮©) ®¡« á⨠|
mov [workarea.cy],30 ; ¤«ï à¨á®¢ ¨ï |
|
red: |
call draw_window ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª |
152,9 → 161,7 |
mov [mouse_pressed],1 |
|
; ®«ã稬 ª®®à¤¨ âë ªãàá®à ¬ëè¨ (®â®á¨â¥«ì® ®ª ) |
mov eax,37 ; äãªæ¨ï 37 - ¯®«ãç¨âì á®áâ®ï¨¥ ¬ëè¨ |
mov ebx,1 ; ¯®¤äãªæ¨ï 1 |
int 0x40 |
mcall 37,1 ; ¯®«ãç¨âì á®áâ®ï¨¥ ¬ëè¨ |
|
; ¥à¥¤¥« ¥¬ ¨å â ª, çâ®¡ë ®¨ ¡ë«¨ ¢ à §ëå ॣ¨áâà å, â.¥. eax ¨ ebx |
mov ebx,eax |
202,9 → 209,9 |
;****************************************************************************** |
|
save_canvas: |
mov eax,[process.x_size] |
mov eax,[proc_info.box.width] |
add eax,[workarea.cx] |
mov ebx,[process.y_size] |
mov ebx,[proc_info.box.height] |
add ebx,[workarea.cy] |
|
jmp still |
217,71 → 224,35 |
|
draw_window: |
|
mov eax,48 ;
|
mov ebx,3 |
mov ecx,sc |
mov edx,sizeof.system_colors |
int 0x40 |
mcall 48,3,sc,sizeof.system_colors ;
|
mcall 12, 1 ; ç «® ®âà¨á®¢ª¨ ®ª |
mov edx, [sc.work] |
or edx, 0x33000000 |
mcall 0, (100 shl 16)+400, (100 shl 16)+300, , , title ; à¨á㥬 ®ª® |
mcall 12, 1 |
|
mov eax,12 ; äãªæ¨ï 12: á®®¡é¨âì ®¡ ®âà¨á®¢ª¥ ®ª |
mov ebx,1 ; 1, ç¨ ¥¬ à¨á®¢ âì |
int 0x40 |
mcall 9,proc_info,-1 ; ¯®«ã稬 ¨ä®à¬ æ¨î ® ᢮¥¬ ¯®â®ª¥ |
|
; ð |
mov eax,0 ; äãªæ¨ï 0 : ®¯à¥¤¥«¨âì ¨ ®âà¨á®¢ âì ®ª® |
mov ebx,100*65536+400 ; [x áâ àâ] *65536 + [x à §¬¥à] |
mov ecx,100*65536+300 ; [y áâ àâ] *65536 + [y à §¬¥à] |
mov edx,[sc.work] ; 梥â à ¡®ç¥© ®¡« á⨠RRGGBB,8->color gl |
or edx,0x02000000 |
mov esi,[sc.grab] ; 梥⠯®«®áë § £®«®¢ª RRGGBB,8->color gl |
or esi,0x80000000 |
mov edi,[sc.frame] ; 梥â à ¬ª¨ RRGGBB |
int 0x40 |
mov eax,[proc_info.box.width] ; áâந¬ à §¬¥à à ¡®ç¥© ®¡« á⨠|
sub eax,20 ; (å à §¬¥à ®ª - 20) |
mov [workarea.sx],eax |
mov eax,[proc_info.box.height] |
sub eax,63 ; (ã à §¬¥à - 63) |
mov [workarea.sy],eax |
|
mov eax,9 ; ¯®«ã稬 ¨ä®à¬ æ¨î ® ᥡ¥ |
mov ebx,process |
mov ecx,-1 |
int 0x40 |
|
mov eax,[process.x_size] ; áâந¬ à §¬¥à à ¡®ç¥© ®¡« á⨠|
add eax,-20 ; (å à §¬¥à ®ª - 20) |
mov [workarea.sx],eax ; |
mov eax,[process.y_size] ; |
add eax,-60 ; (ã à §¬¥à - 60) |
mov [workarea.sy],eax ; |
|
; |
mov eax,4 ; äãªæ¨ï 4 : ¯¨á âì ¢ ®ª¥ ⥪áâ |
mov ebx,8*65536+8 ; [x] *65536 + [y] |
mov ecx,[sc.grab_text] ; 梥â |
or ecx,0x10000000 ; èà¨äâ |
mov edx,header ; ¤à¥á áâப¨ |
mov esi,header_len ; ¨ ¥ñ ¤«¨ |
int 0x40 |
|
; |
mov eax,8 ; äãªæ¨ï 8 : ®¯à¥¤¥«¨âì ¨ à¨á®¢ âì ª®¯ªã |
; mov ebx,(300-19)*65536+12 ; [x áâ àâ] *65536 + [x à §¬¥à] |
mov ebx,[process.x_size] |
add ebx,-19 |
shl ebx,16 |
add ebx,12 |
mov ecx,5*65536+12 ; [y áâ àâ] *65536 + [y à §¬¥à] |
mov edx,1 ; ¨¤¥â¨ä¨ª â®à ª®¯ª¨ |
mov esi,[sc.grab_button] ; 梥⠪®¯ª¨ RRGGBB |
int 0x40 |
|
cmp [process.y_size],80 |
cmp [proc_info.box.height],80 |
jb .finish |
|
mov eax, 8 |
mov edx, 1 |
; ᮧ¤ ñ¬ ª®¯ª¨ ¢ë¡®à 梥â : |
mov ebx,10*65536+10 ; ç «ì ï x ª®®à¤¨ â ¨ à §¬¥à |
mov ecx,27*65536+10 ; ç «ì ï y ª®®à¤¨ â & size |
mov ebx,10*65536+15 ; ç «ì ï x ª®®à¤¨ â ¨ à §¬¥à |
mov ecx, 7*65536+15 ; ç «ì ï y ª®®à¤¨ â & size |
.new_button: |
inc edx ; ¨¤¥â¨ä¨ª â®à++; |
mov esi,[btn_colors-8+edx*4] ; 梥⠪®¯ª¨ |
int 0x40 ; áâ ¢¨¬ ª®¯ªã |
add ebx,12*65536 ; á«¥¤ãîé ï ª®¯ª ¯à ¢¥¥ 12 |
add ebx,18*65536 ; á«¥¤ãîé ï ª®¯ª ¯à ¢¥¥ 12 |
cmp edx,9 ; áà ¢¨¢ ¥¬ edx (¨¤¥â¨ä¨ª â®à) á 9 |
jbe .new_button ; ¥á«¨ ¬¥ìè¥ ¨«¨ à ¢® -> ¥éñ ®¤ã ª¯®ªã |
|
293,13 → 264,9 |
add ebx,[workarea.sx] |
add ecx,[workarea.sy] |
mov edx,0xffffff |
int 0x40 |
mcall 13 |
|
.finish: |
mov eax,12 ; á®®¡é ¥¬ á¨á⥬¥ ® § ¢¥à襨¨ ®âà¨á®¢ª¨ ®ª |
mov ebx,2 |
int 0x40 |
|
ret |
|
;****************************************************************************** |
306,12 → 273,11 |
; ç «® ®¡« á⨠¨¨æ¨ «¨§¨à®¢ ëå ¤ ëå |
; ¥á«¨ ªâ® ¥éñ ¥ § ¥â, çâ® § ç¨â "¨¨æ¨ «¨§¨à®¢ ë¥", â® ¯®ïáïî: |
; í⮠⥠¤ ë¥, ª®â®àë¬ ¯à¨á¢®¥® ç «ì®¥ § 票¥ |
data |
|
header: ; áâப § £®«®¢ª |
db 'PAINT v0.2 for MenuetOS' |
header_len = $ - header ; ¨ ¥ñ ¤«¨ |
;data |
|
title db 'Simple Paint v0.3',0 |
|
mouse_pressed db 0 ; ¯®ª §ë¢ ¥â, ¦ â «¨ ¡ë« ¬ëèì ¢ ¯à¥¤ë¤ã騩 ¬®¬¥â |
|
; 梥⠪®¯®ª |
343,7 → 309,7 |
; §¤¥áì ¤ ë¬ § ç¥¨ï ¥ ¯à¨á¢®¥ë. ®â«¨ç¨¥ ®â ¨¨æ., ¥ 㢥«¨ç¨¢ îâ à §¬¥à |
; ä ©« |
|
udata |
I_END: |
|
active_color dd ? ; ªâ¨¢ë© 梥â |
|
357,9 → 323,9 |
.sy dd ? |
|
sc system_colors ; á¨áâ¥¬ë¥ æ¢¥â |
process process_information ; ¨ä®à¬ æ¨ï ® ¯à®æ¥áᥠ|
proc_info process_information ; ¨ä®à¬ æ¨ï ® ¯à®æ¥áᥠ|
|
restflag dd ? |
canvas rb 800*600*3 |
|
meos_app_end |
E_END: |