Subversion Repositories Kolibri OS

Rev

Rev 3497 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3497 Rev 6165
Line 19... Line 19...
19
;   “¤ ç¨ ¢ ¨§ã祭¨¨  á¬ !
19
;   “¤ ç¨ ¢ ¨§ã祭¨¨  á¬ !
20
;   ˆ¢ ­ ®¤¤ã¡­ë©, ivan-yar@bk.ru
20
;   ˆ¢ ­ ®¤¤ã¡­ë©, ivan-yar@bk.ru
21
;******************************************************************************
21
;******************************************************************************
Line 22... Line 22...
22
 
22
 
23
; ®¤ª«îç ¥¬ ­¥®¡å®¤¨¬ë¥ ¬ ªà®áë
23
; ®¤ª«îç ¥¬ ­¥®¡å®¤¨¬ë¥ ¬ ªà®áë
Line 24... Line 24...
24
include 'macros.inc'
24
include '../../../macros.inc'
Line 25... Line 25...
25
 
25
 
-
 
26
;******************************************************************************
26
;******************************************************************************
27
 
-
 
28
; €—€‹Ž Žƒ€ŒŒ›
-
 
29
use32
-
 
30
	org  0x0
-
 
31
	db   'MENUET01'      ; 8 byte id
-
 
32
	dd   0x01            ; title version
-
 
33
	dd   START           ; start of code
-
 
34
	dd   I_END           ; size of image
-
 
35
	dd   E_END           ; memory for app
27
 
36
	dd   E_END           ; esp
28
; €—€‹Ž Žƒ€ŒŒ›
37
	dd   0x0,0x0         ; I_Param , I_Icon
29
meos_app_start
38
 
30
; Ž‹€‘’œ ŠŽ„€
39
; Ž‹€‘’œ ŠŽ„€
31
code
40
START:
Line 32... Line 41...
32
    mov  eax,40       ; á®®¡é¨¬ á¨á⥬¥, ª ª¨¥ ᮡëâ¨ï ¡ã¤¥¬ ®¡à ¡ â뢠âì
41
    mov  eax,40       ; á®®¡é¨¬ á¨á⥬¥, ª ª¨¥ ᮡëâ¨ï ¡ã¤¥¬ ®¡à ¡ â뢠âì
33
    mov  ebx,0100101b ; ¬ áª  ᮡë⨩ - ¯¥à¥à¨á®¢ª  (1) + ª­®¯ª  (3) + ¬ëèì (6
42
    mov  ebx,0100101b ; ¬ áª  ᮡë⨩ - ¯¥à¥à¨á®¢ª  (1) + ª­®¯ª  (3) + ¬ëèì (6
Line 34... Line 43...
34
    int  0x40         ; íâ  ª®¬ ­¤  ¢ë§ë¢ ¥â á¨á⥬­ãî äã­ªæ¨î
43
    int  0x40         ; íâ  ª®¬ ­¤  ¢ë§ë¢ ¥â á¨á⥬­ãî äã­ªæ¨î
35
 
44
 
Line 36... Line 45...
36
    mov  [workarea.cx],10  ; ª®®à¤¨­ âë à ¡®ç¥© (ª«¨¥­â᪮©) ®¡« áâ¨
45
    mov  [workarea.cx],5  ; ª®®à¤¨­ âë à ¡®ç¥© (ª«¨¥­â᪮©) ®¡« áâ¨
Line 150... Line 159...
150
  .leftbtn:
159
  .leftbtn:
151
    ; ‹¥¢ ï ª­®¯ª  ­ ¦ â , ­ ¤® íâ® § ¯¨á âì!
160
    ; ‹¥¢ ï ª­®¯ª  ­ ¦ â , ­ ¤® íâ® § ¯¨á âì!
152
    mov  [mouse_pressed],1
161
    mov  [mouse_pressed],1
Line 153... Line 162...
153
 
162
 
154
    ; ®«ã稬 ª®®à¤¨­ âë ªãàá®à  ¬ëè¨ (®â­®á¨â¥«ì­® ®ª­ )
163
    ; ®«ã稬 ª®®à¤¨­ âë ªãàá®à  ¬ëè¨ (®â­®á¨â¥«ì­® ®ª­ )
155
    mov  eax,37              ; äã­ªæ¨ï 37 - ¯®«ãç¨âì á®áâ®ï­¨¥ ¬ëè¨
-
 
156
    mov  ebx,1               ; ¯®¤äã­ªæ¨ï 1
-
 
Line 157... Line 164...
157
    int  0x40
164
	mcall 37,1 ; ¯®«ãç¨âì á®áâ®ï­¨¥ ¬ëè¨
158
 
165
 
159
    ; ¥à¥¤¥« ¥¬ ¨å â ª, çâ®¡ë ®­¨ ¡ë«¨ ¢ à §­ëå ॣ¨áâà å, â.¥. eax ¨ ebx
166
    ; ¥à¥¤¥« ¥¬ ¨å â ª, çâ®¡ë ®­¨ ¡ë«¨ ¢ à §­ëå ॣ¨áâà å, â.¥. eax ¨ ebx
160
    mov  ebx,eax
167
    mov  ebx,eax
Line 200... Line 207...
200
  jmp still
207
  jmp still
Line 201... Line 208...
201
 
208
 
Line 202... Line 209...
202
;******************************************************************************
209
;******************************************************************************
203
 
210
 
204
save_canvas:
211
save_canvas:
205
    mov  eax,[process.x_size]
212
    mov  eax,[proc_info.box.width]
206
    add  eax,[workarea.cx]
213
    add  eax,[workarea.cx]
Line 207... Line 214...
207
    mov  ebx,[process.y_size]
214
    mov  ebx,[proc_info.box.height]
Line 208... Line 215...
208
    add  ebx,[workarea.cy]
215
    add  ebx,[workarea.cy]
Line 215... Line 222...
215
;   *******  Ž…„…‹…ˆ… ˆ Ž’ˆ‘Ž‚Š€ ŽŠ€ *******
222
;   *******  Ž…„…‹…ˆ… ˆ Ž’ˆ‘Ž‚Š€ ŽŠ€ *******
216
;   *********************************************
223
;   *********************************************
Line 217... Line 224...
217
 
224
 
Line 218... Line 225...
218
draw_window:
225
draw_window:
219
 
-
 
220
    mov  eax,48                    ; Ž„ƒ“†€…Œ ‘ˆ‘’…Œ›… –‚…’€
-
 
221
    mov  ebx,3
-
 
222
    mov  ecx,sc
-
 
223
    mov  edx,sizeof.system_colors
-
 
224
    int  0x40
-
 
225
 
-
 
226
    mov  eax,12      ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª­ 
-
 
227
    mov  ebx,1       ; 1, ­ ç¨­ ¥¬ à¨á®¢ âì
-
 
228
    int  0x40
-
 
229
 
226
 
230
                                   ; ‘Ž‡„€ðŒ ŽŠŽ
-
 
231
    mov  eax,0                     ; äã­ªæ¨ï 0 : ®¯à¥¤¥«¨âì ¨ ®âà¨á®¢ âì ®ª­®
-
 
232
    mov  ebx,100*65536+400         ; [x áâ àâ] *65536 + [x à §¬¥à]
-
 
233
    mov  ecx,100*65536+300         ; [y áâ àâ] *65536 + [y à §¬¥à]
227
    mcall 48,3,sc,sizeof.system_colors                     ; Ž„ƒ“†€…Œ ‘ˆ‘’…Œ›… –‚…’€
234
    mov  edx,[sc.work]             ; 梥â à ¡®ç¥© ®¡« á⨠ RRGGBB,8->color gl
-
 
235
    or   edx,0x02000000
228
	mcall 12, 1                    ; ­ ç «® ®âà¨á®¢ª¨ ®ª­ 
236
    mov  esi,[sc.grab]             ; 梥⠯®«®áë § £®«®¢ª  RRGGBB,8->color gl
229
    mov edx, [sc.work]
237
    or   esi,0x80000000
230
    or  edx, 0x33000000
238
    mov  edi,[sc.frame]            ; 梥â à ¬ª¨            RRGGBB
231
    mcall 0, (100 shl 16)+400, (100 shl 16)+300, , , title ; à¨á㥬 ®ª­®
239
    int  0x40
232
	mcall 12, 1
240
 
-
 
241
    mov  eax,9                     ; ¯®«ã稬 ¨­ä®à¬ æ¨î ® ᥡ¥
-
 
242
    mov  ebx,process
-
 
243
    mov  ecx,-1
233
 
244
    int  0x40
234
    mcall 9,proc_info,-1             ; ¯®«ã稬 ¨­ä®à¬ æ¨î ® ᢮¥¬ ¯®â®ª¥
245
 
235
 
246
    mov  eax,[process.x_size]      ; ­ áâந¬ à §¬¥à à ¡®ç¥© ®¡« áâ¨
236
    mov  eax,[proc_info.box.width]   ; ­ áâந¬ à §¬¥à à ¡®ç¥© ®¡« áâ¨
247
    add  eax,-20                   ;   (å à §¬¥à ®ª­  - 20)
237
    sub  eax,20                      ; (å à §¬¥à ®ª­  - 20)
248
    mov  [workarea.sx],eax         ;
238
    mov  [workarea.sx],eax
249
    mov  eax,[process.y_size]      ;
239
    mov  eax,[proc_info.box.height]
250
    add  eax,-60                   ;   (ã à §¬¥à - 60)
-
 
251
    mov  [workarea.sy],eax         ;
-
 
252
 
-
 
253
                                   ; ‡€ƒŽ‹Ž‚ŽŠ ŽŠ€
-
 
254
    mov  eax,4                     ; äã­ªæ¨ï 4 : ­ ¯¨á âì ¢ ®ª­¥ ⥪áâ
-
 
255
    mov  ebx,8*65536+8             ; [x] *65536 + [y]
-
 
256
    mov  ecx,[sc.grab_text]        ; 梥â
-
 
257
    or   ecx,0x10000000            ; èà¨äâ
-
 
258
    mov  edx,header                ;  ¤à¥á áâப¨
-
 
259
    mov  esi,header_len            ; ¨ ¥ñ ¤«¨­ 
-
 
260
    int  0x40
-
 
261
 
-
 
262
                                   ; ŠŽŠ€ ‡€Š›’ˆŸ ŽŠ€
-
 
263
    mov  eax,8                     ; äã­ªæ¨ï 8 : ®¯à¥¤¥«¨âì ¨ ­ à¨á®¢ âì ª­®¯ªã
-
 
264
;   mov  ebx,(300-19)*65536+12     ; [x áâ àâ] *65536 + [x à §¬¥à]
-
 
265
    mov  ebx,[process.x_size]
-
 
266
    add  ebx,-19
-
 
267
    shl  ebx,16
-
 
268
    add  ebx,12
-
 
269
    mov  ecx,5*65536+12            ; [y áâ àâ] *65536 + [y à §¬¥à]
-
 
270
    mov  edx,1                     ; ¨¤¥­â¨ä¨ª â®à ª­®¯ª¨
-
 
Line 271... Line 240...
271
    mov  esi,[sc.grab_button]      ; 梥⠪­®¯ª¨ RRGGBB
240
    sub  eax,63                      ; (ã à §¬¥à - 63)
272
    int  0x40
241
    mov  [workarea.sy],eax
Line -... Line 242...
-
 
242
 
-
 
243
    cmp  [proc_info.box.height],80
273
 
244
    jb   .finish
274
    cmp  [process.y_size],80
245
	
275
    jb   .finish
246
	mov eax, 8
276
 
247
	mov edx, 1
277
    ; ᮧ¤ ñ¬ ª­®¯ª¨ ¢ë¡®à  梥â :
248
    ; ᮧ¤ ñ¬ ª­®¯ª¨ ¢ë¡®à  梥â :
278
    mov  ebx,10*65536+10           ; ­ ç «ì­ ï x ª®®à¤¨­ â  ¨ à §¬¥à
249
    mov  ebx,10*65536+15           ; ­ ç «ì­ ï x ª®®à¤¨­ â  ¨ à §¬¥à
279
    mov  ecx,27*65536+10           ; ­ ç «ì­ ï y ª®®à¤¨­ â  & size
250
    mov  ecx, 7*65536+15           ; ­ ç «ì­ ï y ª®®à¤¨­ â  & size
280
 .new_button:
251
 .new_button:
281
    inc  edx                       ; ¨¤¥­â¨ä¨ª â®à++;
252
    inc  edx                       ; ¨¤¥­â¨ä¨ª â®à++;
282
    mov  esi,[btn_colors-8+edx*4]  ; 梥⠪­®¯ª¨
253
    mov  esi,[btn_colors-8+edx*4]  ; 梥⠪­®¯ª¨
Line 283... Line 254...
283
    int  0x40                      ; áâ ¢¨¬ ª­®¯ªã
254
    int  0x40                      ; áâ ¢¨¬ ª­®¯ªã
284
    add  ebx,12*65536              ; á«¥¤ãîé ï ª­®¯ª  ¯à ¢¥¥ ­  12
255
    add  ebx,18*65536              ; á«¥¤ãîé ï ª­®¯ª  ¯à ¢¥¥ ­  12
Line 291... Line 262...
291
    shl  ebx,16
262
    shl  ebx,16
292
    shl  ecx,16
263
    shl  ecx,16
293
    add  ebx,[workarea.sx]
264
    add  ebx,[workarea.sx]
294
    add  ecx,[workarea.sy]
265
    add  ecx,[workarea.sy]
295
    mov  edx,0xffffff
266
    mov  edx,0xffffff
296
    int  0x40
267
    mcall 13
Line 297... Line 268...
297
 
268
 
298
 .finish:
-
 
299
    mov  eax,12      ; á®®¡é ¥¬ á¨á⥬¥ ® § ¢¥à襭¨¨ ®âà¨á®¢ª¨ ®ª­ 
-
 
300
    mov  ebx,2
-
 
301
    int  0x40
-
 
302
 
269
 .finish:
Line 303... Line 270...
303
    ret
270
    ret
304
 
271
 
305
;******************************************************************************
272
;******************************************************************************
306
; ­ ç «® ®¡« á⨠¨­¨æ¨ «¨§¨à®¢ ­­ëå ¤ ­­ëå
273
; ­ ç «® ®¡« á⨠¨­¨æ¨ «¨§¨à®¢ ­­ëå ¤ ­­ëå
307
; ¥á«¨ ªâ® ¥éñ ­¥ §­ ¥â, çâ® §­ ç¨â "¨­¨æ¨ «¨§¨à®¢ ­­ë¥", â® ¯®ïá­ïî:
-
 
Line 308... Line -...
308
; í⮠⥠¤ ­­ë¥, ª®â®àë¬ ¯à¨á¢®¥­® ­ ç «ì­®¥ §­ ç¥­¨¥
-
 
309
data
274
; ¥á«¨ ªâ® ¥éñ ­¥ §­ ¥â, çâ® §­ ç¨â "¨­¨æ¨ «¨§¨à®¢ ­­ë¥", â® ¯®ïá­ïî:
-
 
275
; í⮠⥠¤ ­­ë¥, ª®â®àë¬ ¯à¨á¢®¥­® ­ ç «ì­®¥ §­ ç¥­¨¥
310
 
276
 
Line 311... Line 277...
311
header:                  ; áâப  § £®«®¢ª 
277
;data
Line 312... Line 278...
312
   db  'PAINT v0.2 for MenuetOS'
278
 
313
header_len = $ - header  ; ¨ ¥ñ ¤«¨­ 
279
title db  'Simple Paint v0.3',0 
Line 341... Line 307...
341
;******************************************************************************
307
;******************************************************************************
342
;   ¢®â âãâ ­ ç¨­ ¥âáï ®¡« áâì …¨­¨æ¨ «¨§¨à®¢ ­­ëå ¤ ­­ëå, â.¥.
308
;   ¢®â âãâ ­ ç¨­ ¥âáï ®¡« áâì …¨­¨æ¨ «¨§¨à®¢ ­­ëå ¤ ­­ëå, â.¥.
343
; §¤¥áì ¤ ­­ë¬ §­ ç¥­¨ï ­¥ ¯à¨á¢®¥­ë. ‚ ®â«¨ç¨¥ ®â ¨­¨æ., ­¥ 㢥«¨ç¨¢ îâ à §¬¥à
309
; §¤¥áì ¤ ­­ë¬ §­ ç¥­¨ï ­¥ ¯à¨á¢®¥­ë. ‚ ®â«¨ç¨¥ ®â ¨­¨æ., ­¥ 㢥«¨ç¨¢ îâ à §¬¥à
344
; ä ©« 
310
; ä ©« 
Line 345... Line 311...
345
 
311
 
Line 346... Line 312...
346
udata
312
I_END:
Line 347... Line 313...
347
 
313
 
348
   active_color    dd  ?           ;  ªâ¨¢­ë© 梥â
314
   active_color    dd  ?           ;  ªâ¨¢­ë© 梥â
Line 355... Line 321...
355
       .cy     dd  ?
321
       .cy     dd  ?
356
       .sx     dd  ?               ;   s - à §¬¥àë
322
       .sx     dd  ?               ;   s - à §¬¥àë
357
       .sy     dd  ?
323
       .sy     dd  ?
Line 358... Line 324...
358
 
324
 
359
   sc          system_colors       ; á¨á⥬­ë¥ 梥â 
325
   sc          system_colors       ; á¨á⥬­ë¥ 梥â 
Line 360... Line 326...
360
   process     process_information ; ¨­ä®à¬ æ¨ï ® ¯à®æ¥áá¥
326
   proc_info   process_information ; ¨­ä®à¬ æ¨ï ® ¯à®æ¥áá¥
361
 
327
 
Line 362... Line 328...
362
   restflag    dd  ?
328
   restflag    dd  ?