Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;*********************************
  2. ;*                               *
  3. ;*    PAINT 0.02 ¤«ï MenuetOS    *
  4. ;*                               *
  5. ;*     Š®¬¯¨«¨à®¢ âì FASM'®¬     *
  6. ;*                               *
  7. ;*********************************
  8.  
  9. ;******************************************************************************
  10. ; â㠯ணࠬ¬ã ­¥ ­ã¦­® á¥à쥧­® à áᬠâਢ âì - íâ® ¢á¥£® «¨èì ¯à¨¬¥à,
  11. ; ¢ ª®â®à®¬ ¯®ª § ­®, ª ª à ¡®â âì á ­¥ª®â®à묨 á¨á⥬­ë¬¨ äã­ªæ¨ï¬¨ Œ¥Ž‘,
  12. ; ­® ­¨ª ª ­¥ ­®à¬ «ì­ë© £à ä¨ç¥áª¨© । ªâ®à. Š®¤ ¯à®£à ¬¬ë Ž—…œ ¯à®á⮩,
  13. ; ¨ ®­  ¯à¥¤­ §­ ç¥­  ¤«ï â¥å, ªâ® ⮫쪮 ­ ç¨­ ¥â ¨§ãç âì  áᥬ¡«¥à,
  14. ; ¯®í⮬ã ï áâ६¨«áï ᤥ« âì ¥£® ª ª ¬®¦­® ¡®«¥¥ ¯®­ïâ­ë¬.
  15. ; ’¥¬ ­¥ ¬¥­¥¥, ª®¤ ¤®¢®«ì­® ­¥¯«®å® ®¯â¨¬¨§¨à®¢ ­, å®âï íâ® ­¥¬­®£®
  16. ; ¬®¦¥â § âà㤭¨âì ¥£® ¯®­¨¬ ­¨¥. Ÿ ¯®áâ à «áï âé â¥«ì­® ¯à®ª®¬¬¥­â¨à®¢ âì
  17. ; á«®¦­ë¥ ¬¥áâ . Šáâ â¨, ¨¤¥ï ¯à®£à ¬¬ë ¯à¨­ ¤«¥¦¨â ­¥ ¬­¥,   Sniper'ã, ¤«ï
  18. ; ª®â®à®£® ¢®¡é¥¬-â® ¢á¥ ¨ ¯¨á «®áì.
  19. ;   “¤ ç¨ ¢ ¨§ã祭¨¨  á¬ !
  20. ;   ˆ¢ ­ ®¤¤ã¡­ë©, ivan-yar@bk.ru
  21. ;******************************************************************************
  22.  
  23. ; ®¤ª«îç ¥¬ ­¥®¡å®¤¨¬ë¥ ¬ ªà®áë
  24. include 'macros.inc'
  25.  
  26. ;******************************************************************************
  27.  
  28. ; €—€‹Ž Žƒ€ŒŒ›
  29. meos_app_start
  30. ; Ž‹€‘’œ ŠŽ„€
  31. code
  32.     mov  eax,40       ; á®®¡é¨¬ á¨á⥬¥, ª ª¨¥ ᮡëâ¨ï ¡ã¤¥¬ ®¡à ¡ â뢠âì
  33.     mov  ebx,0100101b ; ¬ áª  ᮡë⨩ - ¯¥à¥à¨á®¢ª  (1) + ª­®¯ª  (3) + ¬ëèì (6
  34.     int  0x40         ; íâ  ª®¬ ­¤  ¢ë§ë¢ ¥â á¨á⥬­ãî äã­ªæ¨î
  35.  
  36.     mov  [workarea.cx],10  ; ª®®à¤¨­ âë à ¡®ç¥© (ª«¨¥­â᪮©) ®¡« áâ¨
  37.     mov  [workarea.cy],45  ; ¤«ï à¨á®¢ ­¨ï
  38.  
  39. red:
  40.     call draw_window   ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª­ 
  41.  
  42. still:            ; ƒ‹€‚›‰ –ˆŠ‹ Žƒ€ŒŒ› - –ˆŠ‹ Ž€Ž’Šˆ ‘ŽŽ™…ˆ‰
  43.  
  44.     mov  eax,10   ; äã­ªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï; ¯à®£à ¬¬  ®áâ ­ ¢«¨¢ ¥âáï ­ 
  45.     int  0x40     ; á«¥¤ãîé ï ª®¬ ­¤  ­¥ ¡ã¤¥â ¢ë¯®«­¥­  ¤® â¥å ¯®à, ¯®ª 
  46.                   ; ­¥ ¯à®¨§®©¤ñâ ᮡë⨥
  47.  
  48.     ; ⥯¥àì ॣ¨áâà eax ᮤ¥à¦¨â ­®¬¥à ᮡëâ¨ï
  49.     ; ¯®®ç¥à¥¤­® áà ¢­¨¬ ¥£® á® ¢á¥¬¨ ¢®§¬®¦­ë¬¨ §­ ç¥­¨ï¬¨, çâ®¡ë ¢ë§¢ âì
  50.     ; ­ã¦­ë© ®¡à ¡®â稪
  51.  
  52.     cmp  eax,1    ; ¯¥à¥à¨á®¢ âì ®ª­® ?
  53.     je   red      ; ¥á«¨ ॣ¨áâà eax à ¢¥­ ¥¤¨­¨æ¥, â® ¯¥à¥å®¤¨¬ ­  ¬¥âªã red
  54.     cmp  eax,3    ; ­ ¦ â  ª­®¯ª  ?
  55.     je   button
  56.     cmp  eax,6    ; ¬ëèì?
  57.     je   mouse
  58.  
  59.     jmp  still    ; ¥á«¨ ¯à®¨§®è«® ᮡë⨥, ª®â®à®¥ ¬ë ­¥ ®¡à ¡ â뢠¥¬,
  60.                   ; ¯à®áâ® ¢®§¢à é ¥¬áï ª ­ ç «ã 横« , å®âï â ª®£® ¡ëâì
  61.                   ; ­¥ ¤®«¦­®! ’.¥. ¥á«¨ íâã ª®¬ ­¤ã ®âá ã¡à âì, â®
  62.                   ; ­¨ç¥£® áâà è­®£® ­¥ á«ãç¨âáï.
  63.  
  64. ;******************************************************************************
  65.  
  66.   button:        ; ®¡à ¡®â稪 ­ ¦ â¨ï ª­®¯ª¨ ¢ ®ª­¥ ¯à®£à ¬¬ë
  67.     mov  eax,17  ; äã­ªæ¨ï N17 - ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
  68.     int  0x40
  69.  
  70.     ; ⥯¥àì ¢ ॣ¨áâॠah ᮤ¥à¦¨âáï ¨¤¥­â¨ä¨ª â®à.
  71.  
  72.     shr  eax,8   ; ah -> al (ᤢ¨£ ­  8 ¡¨â ¢¯à ¢®)
  73.  
  74.     dec  al       ; ¨¤¥­â¨ä¨ª â®à_ª­®¯ª¨--;
  75.     jnz  .noclose ; ¥á«¨ १ã«ìâ â ¯à¥¤ë¤ã饩 ª®¬ ­¤ë à ¢¥­ ­ã«î, § ªà뢠¥¬áï
  76.                   ; ¨­ ç¥ - ¨¤ñ¬ ­  ¬¥âªã noclose
  77.  
  78.     or   eax,-1  ; ¢ë室 ¨§ ¯à®£à ¬¬ë
  79.     int  0x40
  80.  
  81.   .noclose:
  82.     ; ¥á«¨ ¬ë á ¯®¯ «¨, §­ ç¨â ¨¤¥­â¨ä¨ª â®à ª­®¯ª¨ ­¥ ¡ë« à ¢¥­ ­ã«î...
  83.     ; ⥯¥àì ã ­ á ¢ eax ᮤ¥à¦¨âáï (­®¬¥à 梥⭮© ª­®¯ª¨ - 1),
  84.     ; â.¥ ¨«¨ 1, ¨«¨ 2, ... ,¨«¨ 5
  85.  
  86.     ; 㬥­ì訬 ­  1:
  87.     dec  eax
  88.  
  89.     ; ¢®â íâ  ¢®â ª®¬ ­¤  ¨§¢«¥ª ¥â ¢ eax ¤¢®©­®¥ á«®¢® ¯®  ¤à¥áã colors+eax*4
  90.     ; £¤¥ colors - ᬥ饭¨¥ ¬¥âª¨ colors, ¯®á«¥ ª®â®à®© ¨¤¥â ¯®á«¥¤®¢ â¥«ì­®áâì
  91.     ; 梥⮢, eax*4 - ­®¬¥à 梥â , 㬭®¦¥­­ë© ­  4, â.ª. ­  ®¤¨­ 梥⠭㦭®
  92.     ; ç¥âëॠ¡ ©â .
  93.     mov  eax,[colors+eax*4]
  94.  
  95.     ; ⥯¥àì ¬ë ãáâ ­®¢¨¬ 梥â, ᮤ¥à¦ é¨©áï ¢ ॣ¨áâॠeax ª ª ®á­®¢­®©:
  96.     mov  [active_color],eax
  97.  
  98.     ; ­ã ¢®â, ᮡá⢥­­®, ¨ ¢áñ, çâ® ®â ­ á âॡ®¢ «®áì ;)
  99.     ; ¢¥à­ñ¬áï ª ­ ç «ã 横«  ®¡à ¡®âª¨ ᮡë⨩
  100.     jmp  still
  101.  
  102. ;******************************************************************************
  103.  
  104.   mouse:          ; ®¡à ¡®â稪 ¬ëè¨
  105.     mov  eax,37             ; á­ ç «  ¯®«ã稬 ⥪ã騥 ª®®à¤¨­ âë ¬ëè¨
  106.     mov  ebx,1
  107.     int  0x40
  108.  
  109.     mov  ebx,eax            ; ¯à¥®¡à §ã¥¬ ¨å
  110.     shr  eax,16             ;   eax=x;
  111.     and  ebx,0xffff         ;   ebx=y;
  112.  
  113.     cmp  ebx,22
  114.     jb   save_canvas
  115.  
  116.     sub  eax,[workarea.cx]  ; x-=[workarea.cx]
  117.     cmp  eax,0              ; ¥á«¨ ¬ëèì «¥¢¥¥ ª«¨¥­â᪮© ®¡« áâ¨,
  118.     jle  .not_pressed       ;   ­¨ç¥£® ­¥ à¨á㥬
  119.     cmp  eax,[workarea.sx]  ; ¥á«¨ ¬ëèì ¯à ¢¥¥...
  120.     jae  .not_pressed
  121.  
  122.     sub  ebx,[workarea.cy]
  123.     cmp  ebx,0              ; ...¢ëè¥...
  124.     jle  .not_pressed
  125.     cmp  ebx,[workarea.sy]  ; ...­¨¦¥...
  126.     jae  .not_pressed
  127.  
  128.     ; ª ª¨¥ ª­®¯ª¨ ­ ¦ âë?
  129.     mov  eax,37
  130.     mov  ebx,2
  131.     int  0x40
  132.  
  133.     ; ¥á«¨ «¥¢ ï ª­®¯ª  (â.¥. eax = 1), ⥠¯®©¤ñ¬ ¤ «ìè¥
  134.     cmp  eax,1
  135.     je   .leftbtn
  136.  
  137.   .not_pressed:
  138.     ; ‹¥¢ ï ª­®¯ª  ­¥ ­ ¦ â , § ¯®¬­¨¬ ⥪ã騥 ª®®à¤¨­ âë ¨ ¡ã¤¥¬ ¦¤ âì ᮡëâ¨ï
  139.     mov  [mouse_pressed],0   ; ¬ëèì ­¥ ­ ¦ â 
  140.     mov  eax,37              ; ¯®«ã稬 ª®®à¤¨­ âë
  141.     mov  ebx,1
  142.     int  0x40
  143.     mov  ebx,eax
  144.     shr  eax,16
  145.     and  ebx,0xffff
  146.     mov  [old_x],eax         ; § ¯®¬­¨¬ ¨å
  147.     mov  [old_y],ebx
  148.     jmp  still
  149.  
  150.   .leftbtn:
  151.     ; ‹¥¢ ï ª­®¯ª  ­ ¦ â , ­ ¤® íâ® § ¯¨á âì!
  152.     mov  [mouse_pressed],1
  153.  
  154.     ; ®«ã稬 ª®®à¤¨­ âë ªãàá®à  ¬ëè¨ (®â­®á¨â¥«ì­® ®ª­ )
  155.     mov  eax,37              ; äã­ªæ¨ï 37 - ¯®«ãç¨âì á®áâ®ï­¨¥ ¬ëè¨
  156.     mov  ebx,1               ; ¯®¤äã­ªæ¨ï 1
  157.     int  0x40
  158.  
  159.     ; ¥à¥¤¥« ¥¬ ¨å â ª, çâ®¡ë ®­¨ ¡ë«¨ ¢ à §­ëå ॣ¨áâà å, â.¥. eax ¨ ebx
  160.     mov  ebx,eax
  161.     shr  eax,16
  162.     and  ebx,0xffff
  163.  
  164.     ; ®¤£®â®¢¨¬ ¯ à ¬¥âàë ¤«ï ä㭪樨 à¨á®¢ ­¨ï «¨­¨¨
  165.     mov  ecx,[old_x]     ; ¤«ï ­ ç «  § £à㧨¬ áâ àë¥ ª®®à¤¨­ âë
  166.     mov  edx,[old_y]
  167.     mov  [old_x],eax     ; ⥯¥àì á®åà ­¨¬ ⥪ã騥 ¢ áâ àë¥
  168.     mov  [old_y],ebx
  169.     shl  ecx,16          ; ¢ ¢¥àå­¥¥ á«®¢® ­ ç «ì­ë¥ (⥪ã騥) ª®®à¤¨­ âë
  170.     shl  edx,16
  171.     add  eax,ecx         ;   ¢ ­¨¦­¥¥ á«®¢® ª®­¥ç­ë¥, â.¥. áâ àë¥
  172.     add  ebx,edx
  173.  
  174.     mov  ecx,ebx             ; ¯®¬¥­ï¥¬ ॣ¨áâàë â ª, ª ª íâ㠭㦭® 38 ä㭪樨
  175.     mov  ebx,eax
  176.     mov  eax,38              ; ­®¬¥à ä㭪樨 ¢ eax
  177.     mov  edx,[active_color]  ; ¢ edx 梥â
  178.     int  0x40
  179.  
  180. ;             - ¯®¯à®¡ã©â¥ ¯®áâ ¢¨âì ¤à㣨¥ §­ ç¥­¨ï (00090001)
  181.     mov  edi,0x00010001      ; çâ®¡ë «¨­¨ï ­¥ ¡ë«  ᫨誮¬ â®­ª®©,
  182.     add  ebx,edi             ; ­ à¨á㥬 à冷¬ ¥é¥ 3!
  183.     int  0x40
  184.     add  ecx,edi
  185.     int  0x40
  186.     sub  ebx,edi
  187.     int  0x40
  188.  
  189.     sub  ebx,edi             ; ­ã   ç⮡ë ᬮâ५®áì ᮢᥬ ªàãâ®,
  190.     int  0x40                ; ¤®à¨á㥬 ¥é¥ 5!
  191.     sub  ecx,edi
  192.     int  0x40
  193.     sub  ecx,edi
  194.     int  0x40
  195.     add  ebx,edi
  196.     int  0x40
  197.     add  ebx,edi
  198.     int  0x40
  199.  
  200.   jmp still
  201.  
  202. ;******************************************************************************
  203.  
  204. save_canvas:
  205.     mov  eax,[process.x_size]
  206.     add  eax,[workarea.cx]
  207.     mov  ebx,[process.y_size]
  208.     add  ebx,[workarea.cy]
  209.  
  210.     jmp still
  211.  
  212. ;******************************************************************************
  213.  
  214. ;   *********************************************
  215. ;   *******  Ž…„…‹…ˆ… ˆ Ž’ˆ‘Ž‚Š€ ŽŠ€ *******
  216. ;   *********************************************
  217.  
  218. 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.  
  230.                                    ; ‘Ž‡„€ðŒ ŽŠŽ
  231.     mov  eax,0                     ; äã­ªæ¨ï 0 : ®¯à¥¤¥«¨âì ¨ ®âà¨á®¢ âì ®ª­®
  232.     mov  ebx,100*65536+400         ; [x áâ àâ] *65536 + [x à §¬¥à]
  233.     mov  ecx,100*65536+300         ; [y áâ àâ] *65536 + [y à §¬¥à]
  234.     mov  edx,[sc.work]             ; 梥â à ¡®ç¥© ®¡« á⨠ RRGGBB,8->color gl
  235.     or   edx,0x02000000
  236.     mov  esi,[sc.grab]             ; 梥⠯®«®áë § £®«®¢ª  RRGGBB,8->color gl
  237.     or   esi,0x80000000
  238.     mov  edi,[sc.frame]            ; 梥â à ¬ª¨            RRGGBB
  239.     int  0x40
  240.  
  241.     mov  eax,9                     ; ¯®«ã稬 ¨­ä®à¬ æ¨î ® ᥡ¥
  242.     mov  ebx,process
  243.     mov  ecx,-1
  244.     int  0x40
  245.  
  246.     mov  eax,[process.x_size]      ; ­ áâந¬ à §¬¥à à ¡®ç¥© ®¡« áâ¨
  247.     add  eax,-20                   ;   (å à §¬¥à ®ª­  - 20)
  248.     mov  [workarea.sx],eax         ;
  249.     mov  eax,[process.y_size]      ;
  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                     ; ¨¤¥­â¨ä¨ª â®à ª­®¯ª¨
  271.     mov  esi,[sc.grab_button]      ; 梥⠪­®¯ª¨ RRGGBB
  272.     int  0x40
  273.  
  274.     cmp  [process.y_size],80
  275.     jb   .finish
  276.  
  277.     ; ᮧ¤ ñ¬ ª­®¯ª¨ ¢ë¡®à  梥â :
  278.     mov  ebx,10*65536+10           ; ­ ç «ì­ ï x ª®®à¤¨­ â  ¨ à §¬¥à
  279.     mov  ecx,27*65536+10           ; ­ ç «ì­ ï y ª®®à¤¨­ â  & size
  280.  .new_button:
  281.     inc  edx                       ; ¨¤¥­â¨ä¨ª â®à++;
  282.     mov  esi,[btn_colors-8+edx*4]  ; 梥⠪­®¯ª¨
  283.     int  0x40                      ; áâ ¢¨¬ ª­®¯ªã
  284.     add  ebx,12*65536              ; á«¥¤ãîé ï ª­®¯ª  ¯à ¢¥¥ ­  12
  285.     cmp  edx,9                     ; áà ¢­¨¢ ¥¬ edx (¨¤¥­â¨ä¨ª â®à) á 9
  286.     jbe  .new_button               ; ¥á«¨ ¬¥­ìè¥ ¨«¨ à ¢­® -> ¥éñ ®¤­ã ª¯®ªã
  287.  
  288.     mov  eax,13                    ; ç¨á⨬ "宫áâ" - ª«¨¥­âáªãî ®¡« áâì
  289.     mov  ebx,[workarea.cx]
  290.     mov  ecx,[workarea.cy]
  291.     shl  ebx,16
  292.     shl  ecx,16
  293.     add  ebx,[workarea.sx]
  294.     add  ecx,[workarea.sy]
  295.     mov  edx,0xffffff
  296.     int  0x40
  297.  
  298.  .finish:
  299.     mov  eax,12      ; á®®¡é ¥¬ á¨á⥬¥ ® § ¢¥à襭¨¨ ®âà¨á®¢ª¨ ®ª­ 
  300.     mov  ebx,2
  301.     int  0x40
  302.  
  303.     ret
  304.  
  305. ;******************************************************************************
  306. ; ­ ç «® ®¡« á⨠¨­¨æ¨ «¨§¨à®¢ ­­ëå ¤ ­­ëå
  307. ; ¥á«¨ ªâ® ¥éñ ­¥ §­ ¥â, çâ® §­ ç¨â "¨­¨æ¨ «¨§¨à®¢ ­­ë¥", â® ¯®ïá­ïî:
  308. ; í⮠⥠¤ ­­ë¥, ª®â®àë¬ ¯à¨á¢®¥­® ­ ç «ì­®¥ §­ ç¥­¨¥
  309. data
  310.  
  311. header:                  ; áâப  § £®«®¢ª 
  312.    db  'PAINT v0.2 for MenuetOS'
  313. header_len = $ - header  ; ¨ ¥ñ ¤«¨­ 
  314.  
  315.    mouse_pressed   db  0 ; ¯®ª §ë¢ ¥â, ­ ¦ â  «¨ ¡ë«  ¬ëèì ¢ ¯à¥¤ë¤ã騩 ¬®¬¥­â
  316.  
  317. ; æ¢¥â  ª­®¯®ª
  318. btn_colors:
  319.    dd 0xdddddd ; white
  320.    dd 0x444444 ; black
  321.    dd 0x00dd00 ; green
  322.    dd 0x0000dd ; blue
  323.    dd 0xdd0000 ; red
  324.    dd 0xdd00dd ; magenta
  325.    dd 0xdddd00 ; yellow
  326.    dd 0x00dddd ; cyan
  327.    dd 0x559955 ; warm green
  328.  
  329. ; æ¢¥â  ª¨á⨠(¢ ⮬ ¦¥ ¯®à浪¥, çâ® ¨ æ¢¥â  ª­®¯®ª)
  330. colors:
  331.    dd 0xffffff ; ¡¥«ë©
  332.    dd 0x000000 ; ç¥à­ë©
  333.    dd 0x00ff00 ; §¥«¥­ë©
  334.    dd 0x0000ff ; ᨭ¨©
  335.    dd 0xff0000 ; ªà á­ë©
  336.    dd 0xff00ff ; ¯ãà¯ãà­ë©
  337.    dd 0xffff00 ; ¦¥«âë©
  338.    dd 0x00ffff ; £®«ã¡®©
  339.    dd 0x77bb77 ; ⥯«ë© §¥«¥­ë©
  340.  
  341. ;******************************************************************************
  342. ;   ¢®â âãâ ­ ç¨­ ¥âáï ®¡« áâì …¨­¨æ¨ «¨§¨à®¢ ­­ëå ¤ ­­ëå, â.¥.
  343. ; §¤¥áì ¤ ­­ë¬ §­ ç¥­¨ï ­¥ ¯à¨á¢®¥­ë. ‚ ®â«¨ç¨¥ ®â ¨­¨æ., ­¥ 㢥«¨ç¨¢ îâ à §¬¥à
  344. ; ä ©« 
  345.  
  346. udata
  347.  
  348.    active_color    dd  ?           ;  ªâ¨¢­ë© 梥â
  349.  
  350.    old_x           dd  ?           ; áâ àë¥ ª®®à¤¨­ âë ¬ëè¨
  351.    old_y           dd  ?
  352.  
  353.    workarea:                       ; ª®®à¤¨­ âë ¨ à §¬¥àë ª«¨¥­â᪮© ®¡« áâ¨
  354.        .cx     dd  ?               ;   c - ª®®¤¨­ âë
  355.        .cy     dd  ?
  356.        .sx     dd  ?               ;   s - à §¬¥àë
  357.        .sy     dd  ?
  358.  
  359.    sc          system_colors       ; á¨á⥬­ë¥ 梥â 
  360.    process     process_information ; ¨­ä®à¬ æ¨ï ® ¯à®æ¥áá¥
  361.  
  362.    restflag    dd  ?
  363.    canvas      rb  800*600*3
  364.  
  365. meos_app_end
  366.