Subversion Repositories Kolibri OS

Rev

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

  1. ;******************************************************
  2. ;***GRAPHICS EDIT ANIMAGE creted by andrew_programmer**
  3. ;******************************************************
  4.  
  5. use32
  6. org 0x0
  7.  
  8.   db  'MENUET01'
  9.   dd  0x1
  10.   dd  START
  11.   dd  I_END
  12.   dd  0x19000;100 kb
  13.   dd  0x19000;
  14.   dd  0x0
  15.   dd  0x0
  16.   include 'giflib.inc'
  17.   include 'bmplib.inc'
  18.   include 'dialog.inc'
  19.   include 'dialog2.inc'
  20.   include 'design.inc'
  21.   include 'graphlib.inc'
  22. START:
  23.  
  24. ;--------------------------------------------------------
  25. ;---------------set events mask--------------------------
  26. ;--------------------------------------------------------
  27.    mov eax,40
  28.    mov ebx,1100111b
  29.    int 0x40
  30.  
  31. ;---------------------------------------------------------
  32. ;--------initializate data and params of program----------
  33. ;---------------------------------------------------------
  34.    mov [Scroll1CoordinatX],8+1
  35.    mov [Scroll2CoordinatY],20+15+1+46+3
  36.    mov [Window_SizeX],640
  37.    mov [Window_SizeY],400
  38.    mov [Window_CordinatX],50
  39.    mov [Window_CordinatY],50
  40.    mov [WorkScreen_SizeX],100
  41.    mov [WorkScreen_SizeY],100
  42.    mov [MaxWorkScreen_SizeX],100
  43.    mov [MaxWorkScreen_SizeY],100
  44.    mov [ScreenPointer],0x19000
  45.    and [PosX],0
  46.    and [PosY],0
  47.    mov [Picture_SizeX],640;400
  48.    mov [Picture_SizeY],400;280
  49.    mov [k],1
  50.    mov [PointerToPicture],0x19000+(1200*1000*3)+30*(20*20*3)+500000
  51.    mov [PointerToCopyPicture],0x19000+(1200*1000*3)+30*(20*20*3)+500000+(640*400*3)
  52.    mov [PointerToCopyPicture2],0x19000+(1200*1000*3)+30*(20*20*3)+500000+(640*400*3)*2
  53.    mov [PointerToEditBufer],0x19000+(1200*1000*3)+30*(20*20*3)+500000+(640*400*3)*3
  54.    mov [PointerToSpriteBufer],0x19000+(1200*1000*3)+30*(20*20*3)+500000+(640*400*3)*4
  55.    mov [PointerToPalette],0x19000+(1200*100*3)+30*(20*20*3)+1
  56.    mov [ReserveArray],0x19000+(1200*1000)*3+30*(20*20*3)+8
  57.    and [save_flag],0
  58.    mov [line_width],1
  59.    mov [lastik_is_active],0
  60.    and [crossing],0
  61.    and [finishing_crossing],0
  62.    and [number_undo],0
  63.    and [instrument_used],0
  64.    and [DrawSprite_flag],0
  65.    and [extended_memory],0
  66.  
  67.    finit
  68. ;----------------------------------------------------------
  69. ;--------get memory and draw window of program-------------
  70. ;----------------------------------------------------------
  71.    call GetMemory
  72.  
  73.    call cleare_work_arrea
  74.    call load_icons
  75.    call drawwin
  76. ;----------------------------------------------------------
  77. ;---------------------MAIN LOOP----------------------------
  78. ;----------------------------------------------------------
  79. main_loop:
  80.    still:
  81.  
  82.    call event
  83.  
  84.    cmp eax,1
  85.    jne no_redraw_window
  86.    call drawwin
  87.    call drawwin
  88.    jmp still
  89.    no_redraw_window:
  90.    cmp eax,3
  91.    je buttons
  92.    cmp eax,6
  93.    je mouse
  94.    cmp eax,2
  95.    je keys
  96.    jmp main_loop
  97.  
  98. ;------------------------------------------
  99. ;-------------KEYS-------------------------
  100. ;------------------------------------------
  101.    keys:
  102.  
  103.    mov eax,2
  104.    int 0x40
  105.    shr eax,8
  106.  
  107.    cmp eax,176
  108.    jne key2
  109.    sub [PosX],20
  110.    jmp change_screen
  111.  key2:
  112.    cmp eax,179
  113.    jne key3
  114.    add [PosX],20
  115.    jmp change_screen
  116.  key3:
  117.    cmp eax,177
  118.    jne key4
  119.    add [PosY],20
  120.    jmp change_screen
  121.  key4:
  122.   cmp eax,178
  123.    jne key5
  124.    sub [PosY],20
  125.    jmp change_screen
  126.  key5:
  127.    cmp eax,49
  128.    jne key6
  129.    mov [k],1
  130.    mov [Scroll1CoordinatX],9
  131.    mov [Scroll2CoordinatY],85
  132.    call drawwin
  133.    jmp change_screen
  134.  key6:
  135.    cmp eax,50
  136.    jne key7
  137.    mov [k],2
  138.    mov [Scroll1CoordinatX],9
  139.    mov [Scroll2CoordinatY],85
  140.    call drawwin
  141.    jmp change_screen
  142.  key7:
  143.    cmp eax,52
  144.    jne key8
  145.    mov [k],4
  146.    mov [Scroll1CoordinatX],9
  147.    mov [Scroll2CoordinatY],85
  148.    call drawwin
  149.    jmp change_screen
  150.  key8:
  151.    cmp eax,56
  152.    jne key9
  153.    mov [k],8
  154.    mov [Scroll1CoordinatX],9
  155.    mov [Scroll2CoordinatY],85
  156.    call drawwin
  157.    jmp change_screen
  158.  key9:
  159.    cmp eax,48
  160.    jne key10
  161.    mov [k],16
  162.    mov [Scroll1CoordinatX],9
  163.    mov [Scroll2CoordinatY],85
  164.    call drawwin
  165.    jmp change_screen
  166.  key10:
  167.    cmp eax,255
  168.    jne key11
  169.    call analizing_picture_to_palette
  170.    call drawwin
  171.    jmp change_screen
  172.  key11:
  173.    cmp eax,27
  174.    jne still
  175.     mov eax,-1
  176.     int 0x40
  177.    jmp still
  178.  
  179.    change_screen:
  180.  
  181.    call CalculatePositionScreen
  182.    call MovePictureToWorkScreen
  183.    call draw_scrollers
  184.    call PrintMousePos
  185.  
  186.    jmp still
  187. ;---------------------------------------------
  188. ;-----------panel BUTTONS---------------------
  189. ;---------------------------------------------
  190. buttons:
  191.  
  192.         cmp [Current_instrument],30
  193.         jne no_finish_instrument_button
  194.  
  195.         cmp [instrument_used],1
  196.         jne no_finish_instrument_button
  197.  
  198.         cmp [Activate_instrument],0
  199.         jne no_finish_instrument_button
  200.  
  201.         cmp [crossing],1
  202.         jne no_finish_instrument_button
  203.  
  204.         mov [finishing_crossing],1
  205.         call TakeButtonInstruments
  206.  
  207.         no_finish_instrument_button:
  208.  
  209.         mov eax,17
  210.         int 0x40
  211.  
  212.         shr eax,8
  213.  
  214.         cmp eax,1
  215.         jne no_exit
  216.  
  217.         mov eax,-1
  218.         int 0x40
  219.  
  220.         no_exit:
  221.  
  222.         mov [Current_instrument],eax
  223.  
  224.         cmp eax,10
  225.         jl still
  226.  
  227.         cmp eax,15
  228.         je still
  229.  
  230.         cmp eax,17
  231.         je still
  232.  
  233.         cmp eax,18
  234.         je still
  235.  
  236.         cmp eax,19
  237.         je still
  238.  
  239.         cmp eax,20
  240.         je still
  241.  
  242.         cmp eax,21
  243.         jne no_palette_
  244.  
  245.         call TakeButtonInstruments
  246.         jmp still
  247.  
  248.         no_palette_:
  249.  
  250.         cmp eax,23
  251.         je still
  252.  
  253.         cmp eax,30
  254.         jne no_allocation__
  255.  
  256.         and [Activate_instrument],0
  257.         jmp still
  258.  
  259.         no_allocation__:
  260.  
  261.         cmp eax,38
  262.         jne no_kontur__
  263.  
  264.         and [instrument_used],0
  265.         jmp still
  266.  
  267.         no_kontur__:
  268.  
  269.         call TakeButtonInstruments
  270.         jmp still
  271. ;---------------------------------------------
  272. ;-------------interraction MOUSE--------------
  273. ;---------------------------------------------
  274. mouse:
  275.  
  276.         call GetMouseCoordinats
  277.  
  278.         ;panel
  279.         mov edx,[Window_SizeX]
  280.         sub edx,5
  281.  
  282.         cmp ebx,20
  283.         jle no_panel
  284.  
  285.         cmp ebx,20+15
  286.         jae no_panel
  287.  
  288.         cmp eax,5
  289.         jle no_panel
  290.  
  291.         cmp eax,edx ;585
  292.         jae no_panel
  293.  
  294.         call GetMouseCoordinats
  295.  
  296.         mov [counter],7
  297.         mov edi,panel_text
  298.         call panel_interraction
  299.  
  300.         jmp still
  301.         no_panel:
  302.  
  303.         cmp [Panel_flag],0
  304.         jz no_redraw_panel
  305.  
  306.         mov [counter],7
  307.         mov edi,panel_text
  308.         call panel_interraction
  309.  
  310.         no_redraw_panel:
  311.  
  312.         call GetMouseCoordinats
  313.         mov eax,[MouseX]
  314.         mov ebx,[MouseY]
  315.         mov ecx,[WorkScreen_SizeX]
  316.         mov edx,[WorkScreen_SizeY]
  317.         add ecx,9
  318.         add edx,85
  319.  
  320.         cmp eax,ecx
  321.         jae mouse_scroll
  322.  
  323.         cmp ebx,edx
  324.         jae mouse_scroll
  325.  
  326.         jmp no_scrollers
  327.  
  328.         mouse_scroll:
  329.  
  330.         mov [exit_from_work_arrea],1  ;mouse situated after work arrea
  331.  
  332.         ;scrollers
  333.         call GetMouseClick
  334.  
  335.         cmp eax,1
  336.         jne no_click
  337.  
  338.         call GetMouseCoordinats
  339.         ;interraction with horizontal scroller
  340.         mov eax,[Scroll1CoordinatX]
  341.         mov ebx,[Scroll1CoordinatY]
  342.         mov ecx,[MouseX]
  343.         mov edx,[MouseY]
  344.         mov esi,[Scroll1MaxSizeX]
  345.         mov edi,[Scroll1MaxSizeY]
  346.         call columnus
  347.  
  348.         test eax,eax
  349.         jz no_horizontal
  350.  
  351.  
  352.         mov eax,9
  353.         mov ebx,[Scroll1CoordinatY]
  354.         mov ecx,[Scroll1MaxSizeX]
  355.         mov edx,14+10
  356.         mov esi,7
  357.         inc ecx
  358.         call draw_volume_rectangle
  359.  
  360.         mov eax,[MouseX]
  361.         mov ebx,[Scroll1SizeX]
  362.         shr ebx,1
  363.         sub eax,ebx
  364.         mov ecx,[MouseX]
  365.         add ecx,ebx
  366.         mov edx,8+1
  367.         add edx,[Scroll1MaxSizeX]
  368.         mov [Scroll1CoordinatX],eax
  369.  
  370.         sub eax,9
  371.         jns no_min_scroll
  372.  
  373.         mov [Scroll1CoordinatX],9
  374.  
  375.         no_min_scroll:
  376.  
  377.         cmp ecx,edx
  378.         jl no_max_scroll
  379.  
  380.         sub edx,ebx
  381.         sub edx,ebx
  382.         mov [Scroll1CoordinatX],edx
  383.  
  384.         no_max_scroll:
  385.         ;
  386.         mov eax,[Scroll1CoordinatX]
  387.         sub eax,9
  388.         mov ebx,[Picture_SizeX]
  389.         imul eax,ebx
  390.         mov ebx,[Scroll1MaxSizeX]
  391.         cdq
  392.         idiv ebx
  393.         mov [PosX],eax
  394.  
  395.         jmp no_vertical
  396.  
  397.         no_horizontal:
  398.  
  399.         mov eax,[Scroll2CoordinatX]
  400.         mov ebx,[Scroll2CoordinatY]
  401.         mov ecx,[MouseX]
  402.         mov edx,[MouseY]
  403.         mov esi,[Scroll2MaxSizeX]
  404.         mov edi,[Scroll2MaxSizeY]
  405.         call columnus
  406.  
  407.         test eax,eax
  408.         jz no_vertical
  409.  
  410.         mov eax,[Scroll2CoordinatX]
  411.         mov ebx,85
  412.         mov ecx,14+10
  413.         mov edx,[Scroll2MaxSizeY]
  414.         mov esi,7
  415.         inc edx
  416.         call draw_volume_rectangle
  417.  
  418.         mov eax,[MouseY]
  419.         mov ebx,[Scroll2SizeY]
  420.         shr ebx,1
  421.         sub eax,ebx
  422.         mov ecx,[MouseY]
  423.         add ecx,ebx
  424.         mov edx,85
  425.         add edx,[Scroll2MaxSizeY]
  426.         mov [Scroll2CoordinatY],eax
  427.  
  428.         sub eax,85
  429.         jns no_min_scroll2
  430.  
  431.         mov [Scroll2CoordinatY],85
  432.  
  433.         no_min_scroll2:
  434.  
  435.         cmp ecx,edx
  436.         jl no_max_scroll2
  437.  
  438.         sub edx,ebx
  439.         sub edx,ebx
  440.         mov [Scroll2CoordinatY],edx
  441.  
  442.         no_max_scroll2:
  443.         ;
  444.         mov eax,[Scroll2CoordinatY]
  445.         sub eax,85
  446.         mov ebx,[Picture_SizeY]
  447.         imul eax,ebx
  448.         mov ebx,[Scroll2MaxSizeY]
  449.         cdq
  450.         idiv ebx
  451.         mov [PosY],eax
  452.  
  453.         no_vertical:
  454.  
  455.         call CalculatePositionScreen
  456.  
  457.         call draw_scrollers
  458.         call MovePictureToWorkScreen
  459.  
  460.         no_click:
  461.  
  462.         jmp still
  463.         no_scrollers:
  464.  
  465.  
  466.         mov eax,[MouseX]
  467.         mov ebx,[MouseY]
  468.         mov ecx,[Window_SizeX]
  469.         mov edx,[Window_SizeY]
  470.         sub ecx,36
  471.         sub edx,35
  472.  
  473.         cmp eax,9
  474.         jle not_work_arrea
  475.  
  476.         cmp eax,ecx
  477.         jae not_work_arrea
  478.  
  479.         cmp ebx,20+15+1+46
  480.         jle not_work_arrea
  481.  
  482.         cmp ebx,edx
  483.         jae not_work_arrea
  484.  
  485.         jmp mouse_in_work_arrea
  486.  
  487.         not_work_arrea:
  488.  
  489.         mov [exit_from_work_arrea],1
  490.  
  491.         jmp still
  492.  
  493.         mouse_in_work_arrea:
  494.  
  495.         call GetScreenCordinats
  496.         call PrintMousePos
  497.         call GetMouseClick
  498.  
  499.         test eax,eax
  500.         jz no_use_instruments
  501.  
  502.         cmp [Activate_instrument],0
  503.  
  504.         jnz no_undo___
  505.         ;------------begin copy for undo-------------
  506.         inc [number_undo]
  507.  
  508.         cmp [number_undo],1
  509.         jne no_one__
  510.  
  511.         mov edi,[PointerToCopyPicture]
  512.  
  513.         no_one__:
  514.  
  515.         cmp [number_undo],2
  516.         jne no_two__
  517.  
  518.         mov edi,[PointerToCopyPicture2]
  519.  
  520.         no_two__:
  521.  
  522.         cmp [number_undo],3
  523.         jne no_three__
  524.  
  525.         ;copy bufer number two to bufer number one
  526.         mov esi,[PointerToCopyPicture2]
  527.         mov edi,[PointerToCopyPicture]
  528.         mov ecx,[Picture_SizeX]
  529.         imul ecx,[Picture_SizeY]
  530.         lea ecx,[ecx+ecx*2]
  531.         add ecx,4
  532.         shr ecx,2
  533.         inc ecx
  534.         cld
  535.         rep movsd
  536.         ;end copy
  537.         dec [number_undo]
  538.         mov edi,[PointerToCopyPicture2]
  539.  
  540.         no_three__:
  541.  
  542.         mov esi,[PointerToPicture]
  543.         mov ecx,[Picture_SizeX]
  544.         imul ecx,[Picture_SizeY]
  545.         lea ecx,[ecx+ecx*2]
  546.         add ecx,4
  547.         shr ecx,2
  548.         inc ecx
  549.         cld
  550.         rep movsd
  551.         ;--------------end copy for undo-------------
  552.         no_undo___:
  553.  
  554.         call TakeButtonInstruments
  555.         no_use_instruments:
  556.  
  557.         mov eax,[Current_instrument]
  558.         and [Activate_instrument],0
  559.  
  560.         jmp still
  561. ;-----------------------------------------------
  562. ;---------get mouse cordinats-------------------
  563. ;-----------------------------------------------
  564. GetMouseCoordinats:
  565.  
  566.         mov eax,37
  567.         mov ebx,1
  568.         int 0x40
  569.  
  570.         mov ebx,eax
  571.         shr eax,16
  572.         and ebx,0xffff
  573.  
  574.         mov [MouseX],eax
  575.         mov [MouseY],ebx
  576.  
  577.         ret
  578. ;------------------------------------------------
  579. ;-------get mouse attributs----------------------
  580. ;------------------------------------------------
  581. GetMouseClick:
  582.          mov eax,37
  583.          mov ebx,2
  584.          int 0x40
  585.  
  586.          ret
  587. ;-------------------------------------------------
  588. ;-----interraction panel with user----------------
  589. ;-------------------------------------------------
  590. panel_interraction:
  591.         ;>>>>>>>>>>>>>>>>>>>>>>>>>>
  592.         mov eax,18
  593.         mov ebx,14
  594.         int 0x40
  595.  
  596.         and [Panel_flag],0
  597.         ;collision with text on panel
  598.       next_columnus_text:
  599.  
  600.         mov eax,[edi]
  601.         mov ebx,[edi+4]
  602.         sub eax,10
  603.         sub ebx,3
  604.         mov [Icon_text_x],eax
  605.         mov [Icon_text_y],ebx
  606.         mov esi,[edi+8]
  607.         add edi,esi
  608.         add edi,3*4
  609.         mov ecx,[MouseX]
  610.         mov edx,[MouseY]
  611.         push edi
  612.         mov edi,13
  613.         mov esi,80
  614.         call columnus
  615.  
  616.         pop edi
  617.         mov esi,7
  618.  
  619.         test eax,eax
  620.         jz no_columnus_text
  621.  
  622.         mov esi,1
  623.         mov [Panel_flag],1
  624.         call GetMouseClick
  625.  
  626.         test eax,eax
  627.         jz no_mouse_pressed
  628.  
  629.         call print_panel_menu
  630.  
  631.         no_mouse_pressed:
  632.  
  633.         no_columnus_text:
  634.  
  635.         mov eax,[Icon_text_x]
  636.         mov ebx,[Icon_text_y]
  637.         mov ecx,79
  638.         mov edx,13
  639.         call draw_volume_rectangle
  640.  
  641.         push [counter]
  642.         push edi
  643.         mov [counter],7
  644.         mov edi,panel_text
  645.         call print_panel_text
  646.  
  647.         pop edi
  648.         pop [counter]
  649.         dec [counter]
  650.         jnz next_columnus_text
  651.  
  652.         ret
  653. ;---------------------------------------------------------
  654. ;-----draw panel menu(main engin of panel)----------------
  655. ;---------------------------------------------------------
  656. print_panel_menu:
  657.  
  658.  
  659.         push [counter]
  660.         ;delit icon buttons(some time)
  661.         mov [counter],10
  662.         next_icon_delit:
  663.         mov eax,8
  664.         mov edx,[counter]
  665.         add edx,11100000000000000000000000000000b
  666.         int 0x40
  667.         inc [counter]
  668.  
  669.         cmp [counter],30
  670.         jl next_icon_delit
  671.  
  672.         pop [counter]
  673.  
  674.         push esi
  675.         mov esi,[counter]
  676.         dec esi
  677.         shl esi,4
  678.  
  679.         mov eax,[menu_rectangles+esi]
  680.         mov ebx,[menu_rectangles+esi+4]
  681.         mov ecx,[menu_rectangles+esi+8]
  682.         mov edx,[menu_rectangles+esi+12]
  683.         mov esi,1
  684.         mov [menu_coordinat_x],eax
  685.         mov [menu_size_x],ecx
  686.         call draw_volume_rectangle
  687.         pop esi
  688.  
  689.     calculate_counter_menu:
  690.  
  691.  
  692.         ;calculate menu counter
  693.         mov eax,[counter]
  694.         dec eax
  695.         shl eax,2
  696.         mov ebx,[menu_counters+eax]
  697.         mov [counter_menu],ebx
  698.  
  699.         call GetMouseCoordinats
  700.  
  701.         and [menu_counter],0
  702.         push esi
  703.         push edi
  704.         ;ᣫ ¦¨¢ ­¨¥  ­¨¬ æ¨¨ >>>>>>>>>>>>>>>>>>
  705.         mov eax,18
  706.         mov ebx,14
  707.         int 0x40
  708.  
  709.     menu_loop:
  710.  
  711.         mov eax,[menu_coordinat_x]
  712.         mov ebx,36
  713.         mov ecx,[MouseX]
  714.         mov edx,[MouseY]
  715.         mov esi,[menu_size_x]
  716.         mov edi,18
  717.         add ebx,[menu_counter]
  718.         add eax,2
  719.         sub esi,3
  720.         inc ebx
  721.         call columnus
  722.         mov esi,7
  723.  
  724.         test eax,eax
  725.         jz no_columnus_menu_text
  726.  
  727.         mov esi,1
  728.  
  729.         no_columnus_menu_text:
  730.  
  731.         mov eax,[menu_coordinat_x]
  732.         mov ebx,36
  733.         mov ecx,[menu_size_x]
  734.         mov edx,18
  735.         add ebx,[menu_counter]
  736.         add eax,2
  737.         sub ecx,3
  738.         inc ebx
  739.         call draw_volume_rectangle
  740.         add [menu_counter],20
  741.  
  742.  
  743.         dec [counter_menu]
  744.         jnz menu_loop
  745.  
  746.         ;print menu text
  747.         push [counter]
  748.         mov esi,[counter]
  749.         dec esi
  750.         shl esi,2
  751.         mov edi,[menu_text_en+esi]
  752.         mov eax,[menu_counters+esi]
  753.         mov [counter],eax
  754.         call print_panel_text
  755.         pop [counter]
  756.         pop edi
  757.         pop esi
  758.  
  759.  
  760.         menu_still:
  761.  
  762.         mov eax,10
  763.         int 0x40
  764.         mov eax,2
  765.         int 0x40
  766.         mov eax,17
  767.         int 0x40
  768.  
  769.         call GetMouseClick
  770.  
  771.         test eax,eax
  772.         jz calculate_counter_menu
  773.  
  774.         call GetMouseCoordinats
  775.  
  776.         ;calculate menu counter
  777.         mov eax,[counter]
  778.         dec eax
  779.         shl eax,2
  780.         mov ebx,[menu_counters+eax]
  781.         mov [counter_menu],ebx
  782.  
  783.         and [menu_counter],0
  784.         and [counter_11],0
  785.  
  786.         push esi
  787.         push edi
  788.  
  789.     menu_loop2:
  790.  
  791.  
  792.         mov eax,[menu_coordinat_x]
  793.         mov ebx,36
  794.         mov ecx,[MouseX]
  795.         mov edx,[MouseY]
  796.         mov esi,[menu_size_x]
  797.         mov edi,18
  798.         add ebx,[menu_counter]
  799.         add eax,2
  800.         sub esi,3
  801.         inc ebx
  802.         call columnus
  803.  
  804.         inc [counter_11]
  805.  
  806.         test eax,eax
  807.         jz no_columnus_menu_text2
  808.  
  809.         mov esi,[counter_11]
  810.         mov [number_menu],esi
  811.  
  812.         no_columnus_menu_text2:
  813.  
  814.         add [menu_counter],20
  815.  
  816.         dec [counter_menu]
  817.         jnz menu_loop2
  818.  
  819.         pop edi
  820.         pop esi
  821.  
  822.         mov eax,5
  823.         mov ebx,15
  824.         int 0x40
  825.  
  826.         push [counter]
  827.         pushad
  828.  
  829.         call drawwin
  830.  
  831.         popad
  832.         pop [counter]
  833.  
  834.         mov eax,[counter]
  835.         mov [number_panel],eax
  836.  
  837.         call TakeInstruments
  838.         jmp still
  839.  
  840. ;---------------------------------------------------------
  841. ;------print mouse position on panel----------------------
  842. ;---------------------------------------------------------
  843. PrintMousePos:
  844.  
  845.         pushad
  846.  
  847.         mov eax,385
  848.         mov ebx,20+15+6
  849.         mov ecx,52
  850.         mov edx,18
  851.         mov esi,4
  852.         call draw_volume_rectangle
  853.  
  854.         mov eax,385
  855.         mov ebx,20+15+6+18+1
  856.         mov ecx,52
  857.         mov edx,18
  858.         mov esi,4
  859.         call draw_volume_rectangle
  860.  
  861.         mov eax,390
  862.         mov ebx,20+15+6+6
  863.         and ecx,0
  864.         mov edx,mouse_pos_x
  865.         mov esi,2
  866.         call print_text
  867.  
  868.         mov eax,390
  869.         mov ebx,20+15+6+6+18+1
  870.         and ecx,0
  871.         mov edx,mouse_pos_y
  872.         mov esi,2
  873.         call print_text
  874.  
  875.         mov eax,47
  876.         mov ebx,4*65536
  877.         mov ecx,[ScreenX]
  878.         add ecx,[PosX]
  879.         mov edx,405*65536+20+15+6+6
  880.         and esi,0
  881.         int 0x40
  882.  
  883.         mov eax,47
  884.         mov ebx,4*65536
  885.         mov ecx,[ScreenY]
  886.         add ecx,[PosY]
  887.         mov edx,405*65536+20+15+6+18+1+6
  888.         and esi,0
  889.         int 0x40
  890.  
  891.         popad
  892.         ret
  893.  
  894. ;---------------------------------------------------------
  895. ;---------- get time in 1/100 secunds---------------------
  896. ;---------------------------------------------------------
  897. Clock:
  898.           mov eax,26
  899.           mov ebx,9
  900.           int 0x40
  901.           mov [time],eax
  902.           ret
  903. ;----------------------------------------------------------
  904. ;-------------draw window of program-----------------------
  905. ;----------------------------------------------------------
  906. drawwin:
  907.  
  908.         mov eax,12
  909.         mov ebx,1
  910.         int 0x40
  911.  
  912.         and eax,0
  913.         mov ebx,[Window_CordinatX]
  914.         mov ecx,[Window_CordinatY]
  915.         shl ebx,16
  916.         shl ecx,16
  917.         add ebx,[Window_SizeX]
  918.         add ecx,[Window_SizeY]
  919.         mov edx,0x03aabbcc
  920.         mov esi,0x805080d0
  921.         mov edi,0x005080d0
  922.         int 0x40
  923.  
  924.         call draw_panel
  925.         call PrintMousePos
  926.  
  927.         mov [counter],7
  928.         mov edi,panel_text
  929.         call print_panel_text
  930.  
  931.         mov eax,10
  932.         mov ebx,5
  933.         mov ecx,0xffffff
  934.         mov edx,name_of_program
  935.         mov esi,34
  936.         call print_text
  937.  
  938.         mov eax,13
  939.         mov ebx,447*65536+35
  940.         mov ecx,42*65536+36
  941.         mov edx,[Color]
  942.         int 0x40
  943.  
  944.         mov eax,12
  945.         mov ebx,2
  946.         int 0x40
  947.  
  948.         mov eax,9
  949.         mov ebx,IPC_table
  950.         or ecx,-1
  951.         int 0x40
  952.  
  953.         mov eax,[IPC_table+34]
  954.         mov ebx,[IPC_table+38]
  955.         mov ecx,[IPC_table+42]
  956.         mov edx,[IPC_table+46]
  957.         mov [Window_CordinatX],eax
  958.         mov [Window_CordinatY],ebx
  959.         mov [Window_SizeX],ecx
  960.         mov [Window_SizeY],edx
  961.  
  962.         cmp [Window_SizeX],585
  963.         jae no_minimum_size_x
  964.  
  965.         mov [Window_SizeX],585
  966.         mov ecx,[Window_SizeX]
  967.  
  968.         no_minimum_size_x:
  969.  
  970.         cmp [Window_SizeY],320
  971.         jae no_minimum_size_y
  972.  
  973.         mov [Window_SizeY],320
  974.         mov edx,[Window_SizeY]
  975.  
  976.         no_minimum_size_y:
  977.  
  978.         mov [MaxWorkScreen_SizeX],ecx
  979.         mov [MaxWorkScreen_SizeY],edx
  980.         sub [MaxWorkScreen_SizeX],20+10+5+10
  981.         sub [MaxWorkScreen_SizeY],20+10+15+1+45+20+10
  982.  
  983.         cmp [MaxWorkScreen_SizeX],0
  984.         jns no_znak1
  985.  
  986.         mov [MaxWorkScreen_SizeX],ecx
  987.  
  988.         no_znak1:
  989.         cmp [MaxWorkScreen_SizeY],0
  990.         jns no_znak2
  991.  
  992.         mov [MaxWorkScreen_SizeY],ecx
  993.  
  994.         no_znak2:
  995.  
  996.         mov ecx,[k]
  997.  
  998.         and [PosX],0
  999.         and [PosY],0
  1000.         call MovePictureToWorkScreen
  1001.         call draw_scrollers
  1002.         call draw_icons
  1003.  
  1004.         ret
  1005. ;----------------------------------------------------------
  1006. ;---------------draw panel in window of program------------
  1007. ;----------------------------------------------------------
  1008. draw_panel:
  1009.  
  1010.         mov eax,5
  1011.         mov ebx,20
  1012.         mov ecx,[Window_SizeX]
  1013.         mov edx,15
  1014.         mov esi,6
  1015.         sub ecx,10
  1016.         call draw_volume_rectangle
  1017.  
  1018.         mov eax,5
  1019.         mov ebx,20
  1020.         mov ecx,[Window_SizeX]
  1021.         mov edx,15
  1022.         mov esi,6
  1023.         sub ecx,10
  1024.         call draw_volume_rectangle
  1025.  
  1026.         mov eax,5
  1027.         mov ebx,20+15+1
  1028.         mov ecx,[Window_SizeX]
  1029.         mov edx,46
  1030.         mov esi,1
  1031.         sub ecx,10
  1032.         call draw_volume_rectangle
  1033.  
  1034.         mov eax,5
  1035.         mov ebx,20+15+1+46+1
  1036.         mov ecx,[Window_SizeX]
  1037.         mov edx,[Window_SizeY]
  1038.         mov esi,1
  1039.         sub ecx,10+20
  1040.         sub edx,20+15+1+46+1+5+20
  1041.         call draw_volume_rectangle
  1042.  
  1043.         mov eax,5
  1044.         mov ebx,[Window_SizeY]
  1045.         mov ecx,[Window_SizeX]
  1046.         mov edx,20+10
  1047.         mov esi,3
  1048.         sub ecx,30
  1049.         sub ebx,25+10
  1050.         call draw_volume_rectangle
  1051.  
  1052.         mov eax,[Window_SizeX]
  1053.         mov ebx,20+15+1+45+2
  1054.         mov ecx,20+10
  1055.         mov edx,[Window_SizeY]
  1056.         mov esi,3
  1057.         sub eax,25+10
  1058.         sub edx,20+15+1+45+5+20
  1059.         call draw_volume_rectangle
  1060.  
  1061.         mov eax,[Window_SizeX]
  1062.         mov ebx,[Window_SizeY]
  1063.         mov ecx,20+10
  1064.         mov edx,20+10
  1065.         mov esi,6
  1066.         sub eax,25+10
  1067.         sub ebx,25+10
  1068.         call draw_volume_rectangle
  1069.  
  1070.         mov eax,445
  1071.         mov ebx,20+15+6
  1072.         mov ecx,37
  1073.         mov edx,37
  1074.         mov esi,4
  1075.         call draw_volume_rectangle
  1076.  
  1077.         ret
  1078. ;----------------------------------------------------------
  1079. ;---------------------system events------------------------
  1080. ;----------------------------------------------------------
  1081. event:
  1082.         mov eax,10
  1083.         int 0x40
  1084.         ret
  1085.  
  1086. ;----------------------------------------------------------
  1087. ;----------print text on the panel and menu----------------
  1088. ;----------------------------------------------------------
  1089. print_panel_text:
  1090.        next_panel_text:
  1091.  
  1092.         mov eax,[edi]
  1093.         mov ebx,[edi+4]
  1094.         xor ecx,ecx
  1095.         mov edx,edi
  1096.         add edx,12
  1097.         mov esi,[edi+8]
  1098.         add edi,esi
  1099.         add edi,3*4
  1100.  
  1101.         push edi
  1102.         call print_text
  1103.         pop edi
  1104.  
  1105.         dec [counter]
  1106.         jnz next_panel_text
  1107.         ret
  1108. ;----------------------------------------------------------
  1109. ;--------Move picture from array to work screeen-----------
  1110. ;----------------------------------------------------------
  1111. MovePictureToWorkScreen:
  1112.  
  1113.         call cleare_screen
  1114.  
  1115.         mov eax,[Picture_SizeX]
  1116.         mov ebx,[Picture_SizeY]
  1117.         mov ecx,[MaxWorkScreen_SizeX]
  1118.         mov edx,[MaxWorkScreen_SizeY]
  1119.         mov esi,[k]
  1120.         imul eax,esi
  1121.         imul ebx,esi
  1122.  
  1123.         cmp eax,ecx
  1124.         jle lab1
  1125.         mov eax,[MaxWorkScreen_SizeX]
  1126.         mov [WorkScreen_SizeX],eax
  1127.         jmp lab2
  1128.         lab1:
  1129.         mov [WorkScreen_SizeX],eax
  1130.         lab2:
  1131.  
  1132.         cmp ebx,edx
  1133.         jle lab3
  1134.         mov ebx,[MaxWorkScreen_SizeY]
  1135.         mov [WorkScreen_SizeY],ebx
  1136.         jmp lab4
  1137.         lab3:
  1138.         mov [WorkScreen_SizeY],ebx
  1139.         lab4:
  1140.  
  1141.         mov eax,[WorkScreen_SizeX]
  1142.         mov ebx,[k]
  1143.         cdq
  1144.         idiv ebx
  1145.         mov [CounterX],eax
  1146.         mov eax,[WorkScreen_SizeY]
  1147.         cdq
  1148.         idiv ebx
  1149.         mov [CounterY],eax
  1150.  
  1151.         mov eax,[WorkScreen_SizeX]
  1152.         mov ecx,eax
  1153.         mov ebx,[k]
  1154.         cdq
  1155.         idiv ebx
  1156.         imul eax,ebx
  1157.         sub ecx,eax
  1158.         lea ecx,[ecx+ecx*2]
  1159.         ;
  1160.         mov eax,[WorkScreen_SizeX]
  1161.         mov ebx,[k]
  1162.         dec ebx
  1163.         imul eax,ebx
  1164.         lea eax,[eax+eax*2]
  1165.         add eax,ecx
  1166.         mov [OffsetYWorkScreen],eax
  1167.  
  1168.  
  1169.         mov ebx,[Picture_SizeX]
  1170.         mov eax,[CounterX]
  1171.         sub ebx,eax
  1172.         lea ebx,[ebx+ebx*2]
  1173.         mov [OffsetYPicture],ebx
  1174.  
  1175.         mov eax,[WorkScreen_SizeX]
  1176.         mov ebx,[k]
  1177.         sub eax,ebx
  1178.         lea eax,[eax+eax*2]
  1179.         mov [OffsetYBigPixel],eax
  1180.  
  1181.         mov eax,[PosX]
  1182.         mov ebx,[PosY]
  1183.         mov ecx,[Picture_SizeX]
  1184.         imul ecx,ebx
  1185.         add eax,ecx
  1186.         lea eax,[eax+eax*2]
  1187.         add eax,[PointerToPicture]
  1188.  
  1189.  
  1190.         mov ebx,[ScreenPointer]
  1191.  
  1192.         mov edi,[CounterY]
  1193.  
  1194.         ;if size of picture natural(mastab is 1) than move picture to work screen
  1195.         cmp [k],1
  1196.         jne no_zoom_1_
  1197.         screen_y_1:
  1198.             mov esi,[CounterX]
  1199.             screen_x_1:
  1200.               mov ecx,[eax]
  1201.               and ecx,0xffffff
  1202.               mov ebp,ecx
  1203.               shr ecx,16
  1204.                    mov [ebx],bp
  1205.                    mov [ebx+2],cl
  1206.               add ebx,3;
  1207.               add eax,3
  1208.             dec esi
  1209.             jnz screen_x_1
  1210.             add eax,[OffsetYPicture]
  1211.             add ebx,[OffsetYWorkScreen]
  1212.         dec edi
  1213.         jnz screen_y_1
  1214.         jmp fps
  1215.         no_zoom_1_:
  1216.  
  1217.         cmp [k],2
  1218.         jne no_zoom_2
  1219.  
  1220.         screen_y_2:
  1221.             mov esi,[CounterX]
  1222.             screen_x_2:
  1223.               mov ecx,[eax]
  1224.               and ecx,0xffffff
  1225.               mov ebp,ecx
  1226.               shr ecx,16
  1227.               mov edx,ebx
  1228.                    mov [edx],bp
  1229.                    mov [edx+2],cl
  1230.                    mov [edx+3],bp
  1231.                    mov [edx+3+2],cl
  1232.                    add edx,3*2
  1233.                    add edx,[OffsetYBigPixel]
  1234.                    mov [edx],bp
  1235.                    mov [edx+2],cl
  1236.                    mov [edx+3],bp
  1237.                    mov [edx+3+2],cl
  1238.                    add edx,3*2
  1239.                    add edx,[OffsetYBigPixel]
  1240.               add ebx,3*2
  1241.               add eax,3
  1242.             dec esi
  1243.             jnz screen_x_2
  1244.             add eax,[OffsetYPicture]
  1245.             add ebx,[OffsetYWorkScreen]
  1246.         dec edi
  1247.         jnz screen_y_2
  1248.         jmp fps
  1249.         no_zoom_2:
  1250.  
  1251.         cmp [k],4
  1252.         jne no_zoom_4
  1253.         screen_y_4:
  1254.             mov esi,[CounterX]
  1255.             screen_x_4:
  1256.               mov ecx,[eax]
  1257.               and ecx,0xffffff
  1258.               mov ebp,ecx
  1259.               shr ecx,16
  1260.               mov edx,ebx
  1261.                    mov [edx],bp
  1262.                    mov [edx+2],cl
  1263.                    mov [edx+3],bp
  1264.                    mov [edx+3+2],cl
  1265.                    mov [edx+6],bp
  1266.                    mov [edx+6+2],cl
  1267.                    mov [edx+9],bp
  1268.                    mov [edx+9+2],cl
  1269.                    add edx,3*4
  1270.                    add edx,[OffsetYBigPixel]
  1271.                    mov [edx],bp
  1272.                    mov [edx+2],cl
  1273.                    mov [edx+3],bp
  1274.                    mov [edx+3+2],cl
  1275.                    mov [edx+6],bp
  1276.                    mov [edx+6+2],cl
  1277.                    mov [edx+9],bp
  1278.                    mov [edx+9+2],cl
  1279.                    add edx,3*4
  1280.                    add edx,[OffsetYBigPixel]
  1281.                    mov [edx],bp
  1282.                    mov [edx+2],cl
  1283.                    mov [edx+3],bp
  1284.                    mov [edx+3+2],cl
  1285.                    mov [edx+6],bp
  1286.                    mov [edx+6+2],cl
  1287.                    mov [edx+9],bp
  1288.                    mov [edx+9+2],cl
  1289.                    add edx,3*4
  1290.                    add edx,[OffsetYBigPixel]
  1291.                    mov [edx],bp
  1292.                    mov [edx+2],cl
  1293.                    mov [edx+3],bp
  1294.                    mov [edx+3+2],cl
  1295.                    mov [edx+6],bp
  1296.                    mov [edx+6+2],cl
  1297.                    mov [edx+9],bp
  1298.                    mov [edx+9+2],cl
  1299.                    add edx,3*4
  1300.                    add edx,[OffsetYBigPixel]
  1301.               add ebx,4*3
  1302.               add eax,3
  1303.             dec esi
  1304.             jnz screen_x_4
  1305.             add eax,[OffsetYPicture]
  1306.             add ebx,[OffsetYWorkScreen]
  1307.         dec edi
  1308.         jnz screen_y_4
  1309.         jmp fps
  1310.         no_zoom_4:
  1311.         ;if zoom more than 4
  1312.         screen_y:
  1313.             mov esi,[CounterX]
  1314.             screen_x:
  1315.               mov ecx,[eax]
  1316.               and ecx,0xffffff
  1317.               mov ebp,ecx
  1318.               shr ecx,16
  1319.               push ebx
  1320.               push eax
  1321.               mov edx,[k]
  1322.               big_pixel_y:
  1323.                  mov eax,[k]
  1324.                  big_pixel_x:
  1325.                    mov [ebx],bp
  1326.                    mov [ebx+2],cl
  1327.                    add ebx,3
  1328.                  dec eax
  1329.                  jnz big_pixel_x
  1330.                  add ebx,[OffsetYBigPixel]
  1331.               dec edx
  1332.               jnz big_pixel_y
  1333.               pop eax
  1334.               pop ebx
  1335.               mov edx,[k]
  1336.               lea edx,[edx+edx*2]
  1337.               add ebx,edx
  1338.               add eax,3
  1339.             dec esi
  1340.             jnz screen_x
  1341.             add eax,[OffsetYPicture]
  1342.             add ebx,[OffsetYWorkScreen]
  1343.         dec edi
  1344.         jnz screen_y
  1345.  
  1346.          fps:
  1347.          mov eax,18
  1348.          mov ebx,14
  1349.          int 0x40
  1350.  
  1351.          mov eax,7
  1352.          mov ebx,[ScreenPointer]
  1353.          mov ecx,[WorkScreen_SizeX]
  1354.          mov edx,[WorkScreen_SizeY]
  1355.          shl ecx,16
  1356.          add ecx,edx
  1357.          mov edx,8*65536+20+15+45+5
  1358.          int 0x40
  1359.  
  1360.          ret
  1361. ;----------------------------------------------------------
  1362. ;--------------------clear screen--------------------------
  1363. ;----------------------------------------------------------
  1364. cleare_screen:
  1365.  
  1366.         mov eax,[ScreenPointer]
  1367.         mov ebx,[WorkScreen_SizeX]
  1368.         imul ebx,[WorkScreen_SizeY]
  1369.         lea ebx,[ebx+ebx*2]
  1370.         shr ebx,3
  1371.         inc ebx
  1372.         mov esi,0xffffff
  1373.  
  1374.         clear_screen_loop:
  1375.  
  1376.           mov [eax],esi
  1377.           mov [eax+3],esi
  1378.           mov [eax+6],si
  1379.           add eax,4+4
  1380.  
  1381.         dec ebx
  1382.         jnz clear_screen_loop
  1383.         ret
  1384. ;----------------------------------------------------------
  1385. ;-------------cleare work arrea(work screen)---------------
  1386. ;----------------------------------------------------------
  1387. cleare_work_arrea:
  1388.  
  1389.         mov eax,[PointerToPicture]
  1390.         mov ebx,[Picture_SizeX]
  1391.         imul ebx,[Picture_SizeY]
  1392.         lea ebx,[ebx+ebx*2]
  1393.         shr ebx,3
  1394.         inc ebx
  1395.         mov esi,0xffffff
  1396.  
  1397.         clear_work_arrea_loop:
  1398.  
  1399.           mov [eax],esi
  1400.           mov [eax+3],esi
  1401.           mov [eax+6],si
  1402.           add eax,4+4
  1403.  
  1404.         dec ebx
  1405.         jnz clear_work_arrea_loop
  1406.         ret
  1407. ;----------------------------------------------------------
  1408. ;------------draw lines of scoll---------------------------
  1409. ;----------------------------------------------------------
  1410. draw_scrollers:
  1411.  
  1412.          mov edi,[CounterX]
  1413.          mov eax,[Scroll1CoordinatX]
  1414.          mov ebx,[Window_SizeY]
  1415.          sub ebx,22+10
  1416.          mov ecx,[Window_SizeX]
  1417.          sub ecx,10+5+20+10+1
  1418.          mov edx,14+10
  1419.          mov esi,1
  1420.          mov [Scroll1CoordinatX],eax
  1421.          mov [Scroll1CoordinatY],ebx
  1422.          mov [Scroll1MaxSizeY],edx
  1423.          mov [Scroll1MaxSizeX],ecx
  1424.          imul ecx,edi
  1425.          push eax
  1426.          push ebx
  1427.          push edx
  1428.          mov eax,ecx
  1429.          mov ebx,[Picture_SizeX]
  1430.          cdq
  1431.          idiv ebx
  1432.          mov ecx,eax
  1433.          pop edx
  1434.          pop ebx
  1435.          pop eax
  1436.          mov [Scroll1SizeX],ecx
  1437.          mov edi,[Scroll1MaxSizeX]
  1438.          sub edi,ecx
  1439.          mov [Scroll1FreeX],edi
  1440.          call draw_volume_rectangle
  1441.  
  1442.          mov eax,[Window_SizeX]
  1443.          sub eax,22+10
  1444.          mov ebx,[Scroll2CoordinatY]
  1445.          mov ecx,14+10
  1446.          mov edx,[Window_SizeY]
  1447.          sub edx,20+15+1+46+10+20+11
  1448.          mov esi,1
  1449.          mov [Scroll2CoordinatX],eax
  1450.          mov [Scroll2CoordinatY],ebx
  1451.          mov [Scroll2MaxSizeX],ecx
  1452.          mov [Scroll2MaxSizeY],edx
  1453.  
  1454.          imul edx,[CounterY]
  1455.          push eax
  1456.          push ebx
  1457.          mov eax,edx
  1458.          mov ebx,[Picture_SizeY]
  1459.          cdq
  1460.          idiv ebx
  1461.          mov edx,eax
  1462.          pop ebx
  1463.          pop eax
  1464.          mov [Scroll2SizeY],edx
  1465.          mov edi,[Scroll2MaxSizeY]
  1466.          sub edi,edx
  1467.          mov [Scroll2FreeY],edi
  1468.  
  1469.          call draw_volume_rectangle
  1470.  
  1471.          ret
  1472. ;----------------------------------------------------------
  1473. ;--------change size of memory which use program-----------
  1474. ;----------------------------------------------------------
  1475. GetMemory:
  1476.          pushad
  1477.          mov eax,64
  1478.          mov ebx,1
  1479.          mov ecx,[Picture_SizeX]
  1480.          mov edx,[Picture_SizeY]
  1481.          imul ecx,edx
  1482.          lea ecx,[ecx+ecx*2]
  1483.          lea ecx,[ecx+ecx*4]            ;(Picture_SizeX*Picture_SizeY*3)*5
  1484.          add ecx,[ScreenPointer]
  1485.          add ecx,(1200*1000)*3+30*(20*20*3)+500000+16000+0x4000
  1486.          add ecx,[extended_memory]
  1487.          int 0x40
  1488.  
  1489.          test eax,eax
  1490.          jz have_new_memory
  1491.  
  1492.             mov esi,sound_havent_memory
  1493.             call sound
  1494.  
  1495.             jmp still
  1496.  
  1497.          have_new_memory:
  1498.          popad
  1499.          ret
  1500. ;-----------------------------------------------------------
  1501. ;-----------instruments of menu-----------------------------
  1502. ;-----------------------------------------------------------
  1503. TakeInstruments:
  1504.  
  1505.          ;|||||||||||||||||||FILE||||||||||||||||||||||
  1506.          cmp [number_panel],7
  1507.          jne no_file
  1508.  
  1509.          ;<<<<<NEW>>>>>>>
  1510.          cmp [number_menu],1
  1511.          jne no_new
  1512.  
  1513.          mov eax,80
  1514.          mov ebx,100
  1515.          mov ecx,150
  1516.          mov edx,90
  1517.          mov  esi,1
  1518.          call draw_volume_rectangle
  1519.  
  1520.          mov eax,177
  1521.          mov ebx,115
  1522.          mov ecx,40
  1523.          mov edx,14
  1524.          mov  esi,4
  1525.          call draw_volume_rectangle
  1526.  
  1527.          mov eax,177
  1528.          mov ebx,115+24
  1529.          mov ecx,40
  1530.          mov edx,14
  1531.          mov  esi,4
  1532.          call draw_volume_rectangle
  1533.  
  1534.          mov eax,175
  1535.          mov ebx,170
  1536.          mov ecx,40
  1537.          mov edx,15
  1538.          mov  esi,1
  1539.          call draw_volume_rectangle
  1540.  
  1541.          mov eax,90
  1542.          mov ebx,118
  1543.          mov ecx,0xffffff
  1544.          mov edx,new_text1
  1545.          mov esi,14
  1546.          call print_text
  1547.  
  1548.          mov eax,90
  1549.          mov ebx,118+24
  1550.          mov ecx,0xffffff
  1551.          mov edx,new_text2
  1552.          mov esi,14
  1553.          call print_text
  1554.  
  1555.          mov eax,185
  1556.          mov ebx,175
  1557.          mov ecx,0xffffff
  1558.          mov edx,ok_text
  1559.          mov esi,2
  1560.          call print_text
  1561.  
  1562.          mov eax,8
  1563.          mov ebx,177*65536+40
  1564.          mov ecx,115*65536+14
  1565.          mov edx,1000000000000000000000000000000b
  1566.          add edx,1000
  1567.          int 0x40
  1568.  
  1569.          mov eax,8
  1570.          mov ebx,177*65536+40
  1571.          mov ecx,139*65536+14
  1572.          mov edx,1000000000000000000000000000000b
  1573.          add edx,1001
  1574.          int 0x40
  1575.  
  1576.          mov eax,8
  1577.          mov ebx,175*65536+40
  1578.          mov ecx,170*65536+15
  1579.          mov edx,1000000000000000000000000000000b
  1580.          add edx,1002
  1581.          int 0x40
  1582.  
  1583.          no_activate_space:
  1584.  
  1585.          mov eax,10
  1586.          int 0x40
  1587.  
  1588.          cmp eax,1
  1589.          je exit_new
  1590.  
  1591.          cmp eax,3
  1592.          jne no_activate_space
  1593.  
  1594.          mov eax,17
  1595.          int 0x40
  1596.          shr eax,8
  1597.  
  1598.          cmp eax,1000
  1599.          jl no_activate_space
  1600.  
  1601.          cmp eax,1000
  1602.          jne no_picture_size_x
  1603.  
  1604.          mov eax,180
  1605.          mov ebx,119
  1606.          mov ecx,5
  1607.          call dialog_line
  1608.  
  1609.          mov eax,string_
  1610.          mov ebx,13
  1611.          call find_symvol
  1612.  
  1613.          dec eax
  1614.          mov [length_number],eax
  1615.          mov eax,string_
  1616.          call value
  1617.  
  1618.          mov [Picture_SizeX],eax
  1619.  
  1620.          jmp no_activate_space
  1621.  
  1622.          no_picture_size_x:
  1623.  
  1624.          cmp eax,1001
  1625.          jne no_picture_size_y
  1626.  
  1627.          mov eax,180
  1628.          mov ebx,119+24
  1629.          mov ecx,5
  1630.          call dialog_line
  1631.  
  1632.          mov eax,string_
  1633.          mov ebx,13
  1634.          call find_symvol
  1635.  
  1636.          dec eax
  1637.          mov [length_number],eax
  1638.          mov eax,string_
  1639.          call value
  1640.  
  1641.          mov [Picture_SizeY],eax
  1642.  
  1643.          jmp no_activate_space
  1644.  
  1645.          no_picture_size_y:
  1646.  
  1647.          cmp eax,1002
  1648.          jne no_activate_space
  1649.  
  1650.          exit_new:
  1651.  
  1652.          mov eax,8
  1653.          mov ebx,175*65536+40
  1654.          mov ecx,170*65536+15
  1655.          mov edx,11100000000000000000000000000000b
  1656.          add edx,1002
  1657.          int 0x40
  1658.  
  1659.          mov eax,8
  1660.          mov ebx,177*65536+40
  1661.          mov ecx,139*65536+14
  1662.          mov edx,11100000000000000000000000000000b
  1663.          add edx,1001
  1664.          int 0x40
  1665.  
  1666.          mov eax,8
  1667.          mov ebx,177*65536+40
  1668.          mov ecx,115*65536+14
  1669.          mov edx,11100000000000000000000000000000b
  1670.          add edx,1000
  1671.          int 0x40
  1672.  
  1673.          ;get memory for new picture
  1674.          mov eax,[Picture_SizeX]
  1675.          mov ebx,[Picture_SizeY]
  1676.  
  1677.          imul eax,ebx
  1678.          lea eax,[eax+eax*2]
  1679.  
  1680.          mov ebx,[ScreenPointer]
  1681.          add ebx,(1200*1000*3)+30*(20*20*3)+500000
  1682.  
  1683.          mov [PointerToPicture],ebx
  1684.          mov [PointerToCopyPicture],ebx
  1685.          mov [PointerToCopyPicture2],ebx
  1686.          mov [PointerToEditBufer],ebx
  1687.          mov [PointerToSpriteBufer],ebx
  1688.  
  1689.          add [PointerToCopyPicture],eax
  1690.  
  1691.          add [PointerToCopyPicture2],eax
  1692.          add [PointerToCopyPicture2],eax
  1693.  
  1694.          add [PointerToEditBufer],eax
  1695.          add [PointerToEditBufer],eax
  1696.          add [PointerToEditBufer],eax
  1697.  
  1698.          add [PointerToSpriteBufer],eax
  1699.          add [PointerToSpriteBufer],eax
  1700.          add [PointerToSpriteBufer],eax
  1701.          add [PointerToSpriteBufer],eax
  1702.  
  1703.          call GetMemory
  1704.  
  1705.          and [save_flag],0
  1706.          and [number_panel],0
  1707.          and [number_menu],0
  1708.  
  1709.          call cleare_work_arrea
  1710.          call drawwin
  1711.  
  1712.          jmp still
  1713.          no_new:
  1714.  
  1715.          ;<<<<<OPEN>>>>>>>
  1716.          cmp [number_menu],2
  1717.          jne no_open
  1718.  
  1719.          opendialog drawwin,open_1,open_2,file_path
  1720.          open_1:
  1721.  
  1722.          mov eax,40
  1723.          mov ebx,100111b
  1724.          int 0x40
  1725.  
  1726.          mov eax,[ScreenPointer]
  1727.          add eax,0x10000
  1728.          mov [file_info],dword 0
  1729.          mov [file_info+8],dword 1
  1730.          mov [file_info+12],eax
  1731.          mov eax,58
  1732.          mov ebx,file_info
  1733.          int 0x40
  1734.  
  1735.          mov esi,[ScreenPointer]
  1736.          add esi,0x10000
  1737.          ;-------------is this BMP file ?----------------
  1738.          xor eax,eax
  1739.          mov ax,[esi]
  1740.          mov [type],ax
  1741.  
  1742.          cmp [type],word 'BM'
  1743.          jne no_bmp_file
  1744.  
  1745.          xor eax,eax
  1746.          xor ebx,ebx
  1747.          mov eax,[esi+18]
  1748.          mov ebx,[esi+22]
  1749.          mov [Picture_SizeX],eax
  1750.          mov [Picture_SizeY],ebx
  1751.  
  1752.          jmp exit_type
  1753.  
  1754.          no_bmp_file:
  1755.  
  1756.          ;-------------is this GIF file ?----------------
  1757.          xor eax,eax
  1758.          mov ax,[esi]
  1759.          mov [type],ax
  1760.  
  1761.          cmp [type],'GI'
  1762.          jne no_gif_file
  1763.  
  1764.          add esi,6
  1765.          xor eax,eax
  1766.          xor ebx,ebx
  1767.          mov ax,word[esi]
  1768.          mov bx,word[esi+2]
  1769.          mov [Picture_SizeX],eax
  1770.          mov [Picture_SizeY],ebx
  1771.  
  1772.          jmp exit_type
  1773.  
  1774.          no_gif_file:
  1775.  
  1776.          jmp no_unpakcing_gif_file
  1777.  
  1778.          exit_type:
  1779.          ;----------------------------------------------------------
  1780.          ;Get momory for unpacking picture and for picture's bufers
  1781.          ;----------------------------------------------------------
  1782.          mov eax,[Picture_SizeX]
  1783.          mov ebx,[Picture_SizeY]
  1784.  
  1785.          imul eax,ebx
  1786.          lea eax,[eax+eax*2]
  1787.  
  1788.          mov ebx,[ScreenPointer]
  1789.          add ebx,(1200*1000*3)+30*(20*20*3)+500000
  1790.  
  1791.          mov [PointerToPicture],ebx
  1792.          mov [PointerToCopyPicture],ebx
  1793.          mov [PointerToCopyPicture2],ebx
  1794.          mov [PointerToEditBufer],ebx
  1795.          mov [PointerToSpriteBufer],ebx
  1796.  
  1797.          add [PointerToCopyPicture],eax
  1798.  
  1799.          add [PointerToCopyPicture2],eax
  1800.          add [PointerToCopyPicture2],eax
  1801.  
  1802.          add [PointerToEditBufer],eax
  1803.          add [PointerToEditBufer],eax
  1804.          add [PointerToEditBufer],eax
  1805.  
  1806.          add [PointerToSpriteBufer],eax
  1807.          add [PointerToSpriteBufer],eax
  1808.          add [PointerToSpriteBufer],eax
  1809.          add [PointerToSpriteBufer],eax
  1810.  
  1811.          call GetMemory
  1812.          ;----------------------------------------------------------
  1813.          ;--------------------Load file in memory-------------------
  1814.          ;----------------------------------------------------------
  1815.  
  1816.          mov eax,[PointerToCopyPicture]
  1817.          mov ebx,[ScreenPointer]
  1818.          add eax,1000
  1819.          mov [file_info],dword 0
  1820.          mov [file_info+8],dword 1
  1821.          mov [file_info+12],dword eax
  1822.          mov [file_info+16],dword ebx
  1823.  
  1824.          call load_file
  1825.  
  1826.          ;----------------------------------------------------------
  1827.          ;-------------------Unpacking picture----------------------
  1828.          ;----------------------------------------------------------
  1829.          mov esi,[PointerToCopyPicture]
  1830.          add esi,1000
  1831.          mov edi,[PointerToPicture]
  1832.          mov eax,[ScreenPointer]
  1833.  
  1834.          cmp [type],'BM'
  1835.          jne no_unpakcing_bmp_file
  1836.             ;BMP DECODER
  1837.             call bmptoimg
  1838.  
  1839.          no_unpakcing_bmp_file:
  1840.  
  1841.  
  1842.          cmp [type],'GI'
  1843.          jne no_unpakcing_gif_file
  1844.            ;GIF DECODER
  1845.            sub edi,12
  1846.            call ReadGIF
  1847.  
  1848.          no_unpakcing_gif_file:
  1849.  
  1850.          mov [Scroll1CoordinatX],9
  1851.          mov [Scroll2CoordinatY],85
  1852.          call load_icons
  1853.          call drawwin
  1854.          and [number_panel],0
  1855.          and [number_menu],0
  1856.          mov [save_flag],1
  1857.  
  1858.          open_2:
  1859.  
  1860.          jmp still
  1861.  
  1862.          no_open:
  1863.  
  1864.          ;<<<<<<<<<<<SAVE>>>>>>>>>>>>
  1865.          cmp [number_menu],3
  1866.          jne no_save_
  1867.  
  1868.          mov al,[save_flag]
  1869.  
  1870.          test al,al
  1871.          jz no_save_file
  1872.  
  1873.          jmp save_enter
  1874.  
  1875.          no_save_file:
  1876.  
  1877.          and [number_panel],0
  1878.          and [number_menu],0
  1879.  
  1880.          jmp still
  1881.  
  1882.          no_save_:
  1883.  
  1884.          ;<<<<<<<<<SAVE AS>>>>>>>>>>>
  1885.          cmp [number_menu],4
  1886.          jne no_save
  1887.  
  1888.          savedialog drawwin,save1,save2,file_path
  1889.  
  1890.          save1:
  1891.  
  1892.          save_enter:
  1893.          mov eax,40
  1894.          mov ebx,100111b
  1895.          int 0x40
  1896.  
  1897.          call analizing_picture_to_palette
  1898.          ;eax => number of colors in picture
  1899.          mov ebx,[PointerToPicture]
  1900.          mov ecx,[PointerToEditBufer]
  1901.          mov edx,[PointerToPalette]
  1902.          mov esi,[Picture_SizeX]
  1903.          mov edi,[Picture_SizeY]
  1904.  
  1905.          call coding_bmp
  1906.          mov edi,[PointerToEditBufer]
  1907.          mov [file_info],dword 1
  1908.          mov [file_info+8],dword ebx
  1909.          mov [file_info+12],edi
  1910.  
  1911.          mov eax,58
  1912.          mov ebx,file_info
  1913.          int 0x40
  1914.  
  1915.          mov [save_flag],1
  1916.          and [number_panel],0
  1917.          and [number_menu],0
  1918.          call drawwin
  1919.  
  1920.          jmp still
  1921.  
  1922.          save2:
  1923.  
  1924.          and [number_panel],0
  1925.          and [number_menu],0
  1926.  
  1927.          jmp still
  1928.          no_save:
  1929.  
  1930.          ;<<<<<<EXIT>>>>>>>
  1931.          cmp [number_menu],5
  1932.          jne no_exit_program
  1933.  
  1934.          mov eax,-1
  1935.          int 0x40
  1936.  
  1937.          no_exit_program:
  1938.  
  1939.          no_file:
  1940.  
  1941.          ;|||||||||||||||||||||||||||||EDIT|||||||||||||||||||||||||
  1942.  
  1943.          ;<<<<<<<<<<UNDO>>>>>>>>>>
  1944.          cmp [number_panel],6
  1945.          jne no_edit
  1946.  
  1947.          cmp [number_menu],1
  1948.          jne no_undo
  1949.  
  1950.          cmp [number_undo],1
  1951.          jne no_one____
  1952.  
  1953.          mov esi,[PointerToCopyPicture]
  1954.  
  1955.          no_one____:
  1956.  
  1957.          cmp [number_undo],2
  1958.          jne no_two____
  1959.  
  1960.          mov esi,[PointerToCopyPicture2]
  1961.  
  1962.          no_two____:
  1963.  
  1964.          mov edi,[PointerToPicture]
  1965.          mov ecx,[Picture_SizeX]
  1966.          imul ecx,[Picture_SizeY]
  1967.          lea ecx,[ecx+ecx*2]
  1968.          add ecx,4
  1969.          shr ecx,2
  1970.          cld
  1971.          rep movsd
  1972.          call MovePictureToWorkScreen
  1973.  
  1974.          dec [number_undo]
  1975.          jnz no_null_undo
  1976.  
  1977.          mov [number_undo],1
  1978.  
  1979.          no_null_undo:
  1980.  
  1981.          and [number_panel],0
  1982.          and [number_menu],0
  1983.          jmp still
  1984.          no_undo:
  1985.  
  1986.          ;<<<<<<<<<<COPY>>>>>>>>>>
  1987.  
  1988.          cmp [number_menu],2
  1989.          jne no_copy
  1990.  
  1991.          cmp [instrument_used],1
  1992.          jne no_copy
  1993.          cmp [Activate_instrument],0
  1994.          jne no_copy
  1995.  
  1996.         mov eax,[OldX]
  1997.         mov ebx,[OldY]
  1998.  
  1999.         cmp eax,[rectangular_shade_x]
  2000.         jl no_remove_x_copy
  2001.  
  2002.         mov ecx,[rectangular_shade_x]
  2003.         mov [OldX],ecx                    ; OldX <-----> rectangulare_shade_x
  2004.         mov [rectangular_shade_x],eax
  2005.  
  2006.         no_remove_x_copy:
  2007.  
  2008.         cmp ebx,[rectangular_shade_y]
  2009.         jl no_remove_y_copy
  2010.  
  2011.         mov ecx,[rectangular_shade_y]
  2012.         mov [OldY],ecx                    ; OldY <-----> rectangulare_shade_y
  2013.         mov [rectangular_shade_y],ebx
  2014.  
  2015.         no_remove_y_copy:
  2016.  
  2017.          mov eax,[OldX]
  2018.          mov ebx,[OldY]
  2019.          mov ecx,[rectangular_shade_x]
  2020.          mov edx,[rectangular_shade_y]
  2021.          inc eax
  2022.          inc ebx
  2023.          dec ecx
  2024.          dec edx
  2025.  
  2026.          mov [x],eax
  2027.          mov [y],ebx
  2028.          mov esi,eax
  2029.          mov edi,ebx
  2030.          mov [Dx_],1
  2031.          mov [Dy_],1
  2032.  
  2033.          sub ecx,eax
  2034.          jnz no_signum_fill_r_x_copy
  2035.  
  2036.          mov [Dx_],-1
  2037.  
  2038.          no_signum_fill_r_x_copy:
  2039.  
  2040.          sub edx,ebx
  2041.          jnz no_signum_fill_r_y_copy
  2042.  
  2043.          mov [Dy_],-1
  2044.  
  2045.          no_signum_fill_r_y_copy:
  2046.  
  2047.          mov ebx,[rectangular_shade_y]
  2048.          sub ebx,edi
  2049.  
  2050.          mov edx,[PointerToEditBufer]
  2051.          mov [y],edi
  2052.          loop_fill_rectangle_y_copy:
  2053.  
  2054.          mov [x],esi
  2055.          loop_fill_rectangle_x_copy:
  2056.  
  2057.          push esi
  2058.          push edi
  2059.  
  2060.          mov eax,[PointerToPicture]
  2061.          mov ebx,[Picture_SizeX]
  2062.          mov esi,[x]
  2063.          mov edi,[y]
  2064.          call GetColorOfPixel
  2065.  
  2066.          mov [edx],ax
  2067.          shr eax,16
  2068.          mov [edx+2],al
  2069.  
  2070.          pop edi
  2071.          pop esi
  2072.  
  2073.          add edx,3
  2074.  
  2075.          mov eax,[x]
  2076.          add eax,[Dx_]
  2077.          mov [x],eax
  2078.  
  2079.          cmp eax,[rectangular_shade_x]
  2080.          jl loop_fill_rectangle_x_copy
  2081.  
  2082.          mov eax,[y]
  2083.          add eax,[Dy_]
  2084.          mov [y],eax
  2085.  
  2086.          cmp eax,[rectangular_shade_y]
  2087.          jl loop_fill_rectangle_y_copy
  2088.  
  2089.          call MovePictureToWorkScreen
  2090.  
  2091.          and [number_panel],0
  2092.          and [number_menu],0
  2093.          mov [DrawSprite_flag],1
  2094.  
  2095.          jmp still
  2096.  
  2097.          no_copy:
  2098.  
  2099.          ;<<<<<<<<<<PASTE>>>>>>>>
  2100.          cmp [number_menu],3
  2101.          jne no_paste
  2102.  
  2103.          cmp [instrument_used],1
  2104.          jne no_paste
  2105.  
  2106.          cmp [Activate_instrument],0
  2107.          jne no_paste
  2108.  
  2109.          mov eax,[OldX]
  2110.          mov ebx,[OldY]
  2111.  
  2112.          cmp eax,[rectangular_shade_x]
  2113.          jl no_remove_x_paste
  2114.  
  2115.          mov ecx,[rectangular_shade_x]
  2116.          mov [OldX],ecx                    ; OldX <-----> rectangulare_shade_x
  2117.          mov [rectangular_shade_x],eax
  2118.  
  2119.          no_remove_x_paste:
  2120.  
  2121.          cmp ebx,[rectangular_shade_y]
  2122.          jl no_remove_y_paste
  2123.  
  2124.          mov ecx,[rectangular_shade_y]
  2125.          mov [OldY],ecx                    ; OldY <-----> rectangulare_shade_y
  2126.          mov [rectangular_shade_y],ebx
  2127.  
  2128.          no_remove_y_paste:
  2129.  
  2130.          mov eax,[OldX]
  2131.          mov ebx,[OldY]
  2132.          mov ecx,[rectangular_shade_x]
  2133.          mov edx,[rectangular_shade_y]
  2134.          inc eax
  2135.          inc ebx
  2136.          dec ecx
  2137.          dec edx
  2138.  
  2139.          mov [x],eax
  2140.          mov [y],ebx
  2141.          mov esi,eax
  2142.          mov edi,ebx
  2143.          mov [Dx_],1
  2144.          mov [Dy_],1
  2145.  
  2146.          sub ecx,eax
  2147.          jnz no_signum_fill_r_x_paste
  2148.  
  2149.          mov [Dx_],-1
  2150.  
  2151.          no_signum_fill_r_x_paste:
  2152.  
  2153.          sub edx,ebx
  2154.          jnz no_signum_fill_r_y_paste
  2155.  
  2156.          mov [Dy_],-1
  2157.  
  2158.          no_signum_fill_r_y_paste:
  2159.  
  2160.          mov edx,[PointerToEditBufer]
  2161.          mov [y],edi
  2162.  
  2163.          loop_fill_rectangle_y_paste:
  2164.  
  2165.          mov [x],esi
  2166.          loop_fill_rectangle_x_paste:
  2167.  
  2168.          push esi
  2169.          push edi
  2170.  
  2171.          mov ecx,[edx]
  2172.          and ecx,0xffffff ;color
  2173.  
  2174.          mov eax,[PointerToPicture]
  2175.          mov ebx,[Picture_SizeX]
  2176.          mov esi,[x]
  2177.          mov edi,[y]
  2178.          call PutPixel
  2179.  
  2180.          pop edi
  2181.          pop esi
  2182.  
  2183.          add edx,3
  2184.  
  2185.          mov eax,[x]
  2186.          add eax,[Dx_]
  2187.          mov [x],eax
  2188.          cmp eax,[rectangular_shade_x]
  2189.          jl loop_fill_rectangle_x_paste
  2190.  
  2191.          mov eax,[y]
  2192.          add eax,[Dy_]
  2193.          mov [y],eax
  2194.          cmp eax,[rectangular_shade_y]
  2195.  
  2196.          jl loop_fill_rectangle_y_paste
  2197.  
  2198.          call MovePictureToWorkScreen
  2199.          and [number_panel],0
  2200.          and [number_menu],0
  2201.          mov [Paste_flag],1
  2202.  
  2203.          jmp still
  2204.  
  2205.          no_paste:
  2206.  
  2207.          ;<<<<<<<<<<CUT>>>>>>>>>>
  2208.          cmp [number_menu],4
  2209.          jne no_cut
  2210.  
  2211.          cmp [instrument_used],1
  2212.          jne no_cut
  2213.  
  2214.          cmp [Activate_instrument],0
  2215.          jne no_cut
  2216.  
  2217.          mov eax,[OldX]
  2218.          mov ebx,[OldY]
  2219.  
  2220.          cmp eax,[rectangular_shade_x]
  2221.          jl no_remove_x_cut
  2222.  
  2223.          mov ecx,[rectangular_shade_x]
  2224.          mov [OldX],ecx                    ; OldX <-----> rectangulare_shade_x
  2225.          mov [rectangular_shade_x],eax
  2226.  
  2227.          no_remove_x_cut:
  2228.  
  2229.          cmp ebx,[rectangular_shade_y]
  2230.          jl no_remove_y_cut
  2231.  
  2232.          mov ecx,[rectangular_shade_y]
  2233.          mov [OldY],ecx                    ; OldY <-----> rectangulare_shade_y
  2234.          mov [rectangular_shade_y],ebx
  2235.  
  2236.          no_remove_y_cut:
  2237.  
  2238.          mov eax,[OldX]
  2239.          mov ebx,[OldY]
  2240.          mov ecx,[rectangular_shade_x]
  2241.          mov edx,[rectangular_shade_y]
  2242.          inc eax
  2243.          inc ebx
  2244.          dec ecx
  2245.          dec edx
  2246.  
  2247.          mov [x],eax
  2248.          mov [y],ebx
  2249.          mov esi,eax
  2250.          mov edi,ebx
  2251.          mov [Dx_],1
  2252.          mov [Dy_],1
  2253.  
  2254.          sub ecx,eax
  2255.          jnz no_signum_fill_r_x
  2256.  
  2257.          mov [Dx_],-1
  2258.  
  2259.          no_signum_fill_r_x:
  2260.  
  2261.          sub edx,ebx
  2262.          jnz no_signum_fill_r_y
  2263.  
  2264.          mov [Dy_],-1
  2265.  
  2266.          no_signum_fill_r_y:
  2267.  
  2268.          mov [y],edi
  2269.          loop_fill_rectangle_y:
  2270.  
  2271.          mov [x],esi
  2272.          loop_fill_rectangle_x:
  2273.  
  2274.          push esi
  2275.          push edi
  2276.  
  2277.          mov eax,[PointerToPicture]
  2278.          mov ebx,[Picture_SizeX]
  2279.          mov ecx,dword 0xffffff
  2280.          mov esi,[x]
  2281.          mov edi,[y]
  2282.          call PutPixel
  2283.  
  2284.          pop edi
  2285.          pop esi
  2286.  
  2287.          mov eax,[x]
  2288.          add eax,[Dx_]
  2289.          mov [x],eax
  2290.  
  2291.          cmp eax,[rectangular_shade_x]
  2292.          jl loop_fill_rectangle_x
  2293.  
  2294.          mov eax,[y]
  2295.          add eax,[Dy_]
  2296.          mov [y],eax
  2297.  
  2298.          cmp eax,[rectangular_shade_y]
  2299.          jl loop_fill_rectangle_y
  2300.  
  2301.          call MovePictureToWorkScreen
  2302.  
  2303.          and [number_panel],0
  2304.          and [number_menu],0
  2305.  
  2306.          jmp still
  2307.          no_cut:
  2308.  
  2309.          ;<<<<<<CLEARE ALL>>>>>>
  2310.          cmp [number_menu],5
  2311.          jne no_cleare_all
  2312.  
  2313.          call cleare_work_arrea
  2314.  
  2315.          call MovePictureToWorkScreen
  2316.  
  2317.          and [number_panel],0
  2318.          and [number_menu],0
  2319.  
  2320.          jmp still
  2321.          no_cleare_all:
  2322.          ;<<<<<<TO ALLOCATE ALL>>>>>>
  2323.  
  2324.          cmp [number_menu],6
  2325.          jne no_to_allocate_all
  2326.  
  2327.          mov [OldX],1
  2328.          mov [OldY],1
  2329.          mov eax,[Picture_SizeX]
  2330.          mov ebx,[Picture_SizeY]
  2331.          dec eax
  2332.          dec ebx
  2333.          mov [rectangular_shade_x],eax
  2334.          mov [rectangular_shade_y],ebx
  2335.          mov [instrument_used],1
  2336.          mov [Activate_instrument],1
  2337.          mov [Current_instrument],30
  2338.          mov [crossing],0
  2339.          and [number_panel],0
  2340.          and [number_menu],0
  2341.          ;call TakeButtonInstruments
  2342.          ;call MovePictureToWorkScreen
  2343.          jmp still
  2344.  
  2345.          no_to_allocate_all:
  2346.  
  2347.          no_edit:
  2348.  
  2349.  
  2350.          jmp still
  2351.  
  2352.          ret
  2353. ;-----------------------------------------------------------
  2354. ;-----instruments of panel(icon's instruments)--------------
  2355. ;-----------------------------------------------------------
  2356. TakeButtonInstruments:
  2357.  
  2358.         mov eax,[Current_instrument]
  2359.  
  2360.         ;*************************brush 1***********************
  2361.         cmp eax,10
  2362.         jne no_brush1
  2363.  
  2364.         mov [Brush_SizeX],4
  2365.         mov [Brush_SizeY],4
  2366.         mov [Number_Brush],0
  2367.         mov [Current_instrument],18
  2368.  
  2369.         jmp still
  2370.         no_brush1:
  2371.  
  2372.         ;*************************brush 2***********************
  2373.         cmp eax,11
  2374.         jne no_brush2
  2375.  
  2376.         mov [Brush_SizeX],6
  2377.         mov [Brush_SizeY],4
  2378.         mov [Number_Brush],1
  2379.         mov [Current_instrument],18
  2380.  
  2381.         jmp still
  2382.         no_brush2:
  2383.  
  2384.         ;*************************brush 3***********************
  2385.         cmp eax,12
  2386.         jne no_brush3
  2387.  
  2388.         mov [Brush_SizeX],8
  2389.         mov [Brush_SizeY],7
  2390.         mov [Number_Brush],2
  2391.         mov [Current_instrument],18
  2392.  
  2393.         jmp still
  2394.         no_brush3:
  2395.  
  2396.         ;************************brush 4************************
  2397.         cmp eax,13
  2398.         jne no_brush4
  2399.  
  2400.         mov [Brush_SizeX],14
  2401.         mov [Brush_SizeY],14
  2402.         mov [Number_Brush],3
  2403.         mov [Current_instrument],18
  2404.  
  2405.         jmp still
  2406.         no_brush4:
  2407.  
  2408.         ;************************brush 5************************
  2409.         cmp eax,14
  2410.         jne no_brush5
  2411.  
  2412.         mov [Brush_SizeX],6
  2413.         mov [Brush_SizeY],6
  2414.         mov [Number_Brush],4
  2415.         mov [Current_instrument],18
  2416.  
  2417.         jmp still
  2418.         no_brush5:
  2419.  
  2420.         ;*************************pensil************************
  2421.         cmp eax,15
  2422.         jne no_pensil
  2423.  
  2424.         mov al,[exit_from_work_arrea]
  2425.  
  2426.         test al,al
  2427.         jz no_exit_from_work_arrea
  2428.  
  2429.         and [Activate_instrument],0
  2430.         and [exit_from_work_arrea],0
  2431.  
  2432.         no_exit_from_work_arrea:
  2433.  
  2434.         mov al,[Activate_instrument]
  2435.  
  2436.         test al,al
  2437.         jnz no_activated_later
  2438.  
  2439.         call GetScreenCordinats
  2440.         mov eax,[ScreenX]
  2441.         mov ebx,[ScreenY]
  2442.         add eax,[PosX]
  2443.         add ebx,[PosY]
  2444.         mov [OldX],eax
  2445.         mov [OldY],ebx
  2446.  
  2447.         no_activated_later:
  2448.  
  2449.         mov eax,[MaxWorkScreen_SizeX]
  2450.         mov ebx,[MaxWorkScreen_SizeY]
  2451.  
  2452.         mov eax,[PointerToPicture]
  2453.         mov ebx,[ReserveArray]
  2454.         mov ecx,[Picture_SizeX]
  2455.         mov edx,[OldX]
  2456.         shl edx,16
  2457.         add edx,[OldY]
  2458.         mov esi,[ScreenX]
  2459.         mov edi,[ScreenY]
  2460.         add esi,[PosX]
  2461.         add edi,[PosY]
  2462.         call calculate_line
  2463.  
  2464.         mov ecx,eax
  2465.         mov edx,[Color]
  2466.         mov esi,[Color]
  2467.         shr edx,16
  2468.         xor ebx,ebx
  2469.         mov eax,[ReserveArray]
  2470.  
  2471.         pensil_next_pixel_draw:
  2472.  
  2473.           mov ebx,[eax]
  2474.           mov [ebx],si
  2475.           mov [ebx+2],dl
  2476.           add eax,4
  2477.  
  2478.         dec ecx
  2479.         jnz pensil_next_pixel_draw
  2480.  
  2481.         mov eax,[ScreenX]
  2482.         mov ebx,[ScreenY]
  2483.         add eax,[PosX]
  2484.         add ebx,[PosY]
  2485.         mov [OldX],eax
  2486.         mov [OldY],ebx
  2487.  
  2488.         call MovePictureToWorkScreen
  2489.         mov [Activate_instrument],1
  2490.         jmp still
  2491.         no_pensil:
  2492.  
  2493.         ;**********************pipetka**************************
  2494.         cmp eax,16
  2495.         jne no_pipetka
  2496.         mov eax,[ScreenY]
  2497.         mov ebx,[Picture_SizeX]
  2498.         add eax,[PosY]
  2499.         imul eax,ebx
  2500.         add eax,[ScreenX]
  2501.         add eax,[PosX]
  2502.         lea eax,[eax+eax*2]
  2503.         add eax,[PointerToPicture]
  2504.         mov ebx,[eax]
  2505.         and ebx,0xffffff
  2506.         mov [Color],ebx
  2507.         mov eax,13
  2508.         mov ebx,447*65536+35
  2509.         mov ecx,42*65536+36
  2510.         mov edx,[Color]
  2511.         int 0x40
  2512.         jmp still
  2513.         no_pipetka:
  2514.  
  2515.         ;**********************draw brush***********************
  2516.         cmp eax,18
  2517.         jne no_brush
  2518.  
  2519.         jmp no_lastik_
  2520.  
  2521.         lastik_in:
  2522.         mov eax,[Color]
  2523.         mov [SColor],eax
  2524.         mov [Color],0xffffff
  2525.         no_lastik_:
  2526.  
  2527.         mov eax,[ScreenX]
  2528.         mov ebx,[ScreenY]
  2529.         mov ecx,[Brush_SizeX]
  2530.         mov edx,[Brush_SizeY]
  2531.         add eax,[PosX]
  2532.         add ebx,[PosY]
  2533.         add eax,ecx
  2534.         add ebx,edx
  2535.  
  2536.         cmp eax,[Picture_SizeX]
  2537.         jl no_max_pos_x
  2538.         mov eax,[Picture_SizeX]
  2539.         no_max_pos_x:
  2540.  
  2541.         cmp ebx,[Picture_SizeY]
  2542.         jl no_max_pos_y
  2543.         mov ebx,[Picture_SizeY]
  2544.         no_max_pos_y:
  2545.  
  2546.         cmp eax,ecx
  2547.         ja no_min_pos_x
  2548.         mov eax,[Brush_SizeX]
  2549.         no_min_pos_x:
  2550.  
  2551.         cmp ebx,edx
  2552.         ja no_min_pos_y
  2553.         mov ebx,[Brush_SizeY]
  2554.         no_min_pos_y:
  2555.  
  2556.         sub eax,[Brush_SizeX]
  2557.         sub ebx,[Brush_SizeY]
  2558.  
  2559.         mov [x],eax
  2560.         mov [y],ebx
  2561.  
  2562.         mov al,[exit_from_work_arrea]
  2563.         test al,al
  2564.         jz no_exit_from_work_arrea_brush
  2565.         and [Activate_instrument],0
  2566.         and [exit_from_work_arrea],0
  2567.         no_exit_from_work_arrea_brush:
  2568.  
  2569.         mov al,[Activate_instrument]
  2570.         test al,al
  2571.         jnz no_new_brush_xy
  2572.         mov eax,[x]
  2573.         mov ebx,[y]
  2574.         mov [OldX],eax
  2575.         mov [OldY],ebx
  2576.         mov [Activate_instrument],1
  2577.         no_new_brush_xy:
  2578.  
  2579.         mov eax,[PointerToPicture]
  2580.         mov ebx,[ReserveArray]
  2581.         add ebx,4
  2582.         mov ecx,[Picture_SizeX]
  2583.         mov edx,[OldX]
  2584.         shl edx,16
  2585.         add edx,[OldY]
  2586.         mov esi,[x]
  2587.         mov edi,[y]
  2588.  
  2589.         call calculate_line
  2590.  
  2591.         mov ebx,[ReserveArray]
  2592.         mov [ebx],eax
  2593.  
  2594.         ;procedure drawing of brush
  2595.         mov ebx,[ReserveArray]
  2596.         mov ecx,[ebx]
  2597.         mov edx,[Color]
  2598.         mov esi,[Color]
  2599.         shr edx,16
  2600.         add ebx,4
  2601.         mov edi,[Number_Brush]
  2602.         imul edi,20*20
  2603.  
  2604.         next_pixel_put_brush:
  2605.  
  2606.         mov eax,[ebx]
  2607.         push eax
  2608.         push ecx
  2609.         xor ebp,ebp
  2610.         and [counter2],0
  2611.  
  2612.         vertical_width_brush:
  2613.            and [counter],0
  2614.  
  2615.            horizontal_width_brush:
  2616.            xor ecx,ecx
  2617.            mov cl,byte[Brush_color+edi+ebp]
  2618.            test cl,cl
  2619.              jz no_draw_pixel_brush
  2620.               mov [eax],si
  2621.               mov [eax+2],dl
  2622.              no_draw_pixel_brush:
  2623.            add eax,3
  2624.            inc ebp
  2625.            inc [counter]
  2626.            cmp [counter],20
  2627.            jne horizontal_width_brush
  2628.  
  2629.            mov ecx,[Picture_SizeX]
  2630.            sub ecx,20
  2631.            lea ecx,[ecx+ecx*2]
  2632.            add eax,ecx
  2633.         inc [counter2]
  2634.         cmp [counter2],20
  2635.         jne vertical_width_brush
  2636.  
  2637.         pop ecx
  2638.         pop eax
  2639.         add ebx,4
  2640.         dec ecx
  2641.         jnz next_pixel_put_brush
  2642.  
  2643.         mov eax,[x]
  2644.         mov ebx,[y]
  2645.         mov [OldX],eax
  2646.         mov [OldY],ebx
  2647.  
  2648.         mov al,[lastik_is_active]
  2649.         test al,al
  2650.         jz no_lastik_active
  2651.  
  2652.         mov eax,[SColor]
  2653.         mov [Color],eax
  2654.         and [lastik_is_active],0
  2655.         no_lastik_active:
  2656.  
  2657.         call MovePictureToWorkScreen
  2658.         jmp still
  2659.         no_brush:
  2660.  
  2661.         ;************************Flood Fill*******************
  2662.         cmp eax,17
  2663.         jne no_FloodFill
  2664.  
  2665.         mov eax,[PointerToPicture]
  2666.         mov ebx,[PointerToEditBufer]
  2667.  
  2668.         mov ecx,[Picture_SizeX]
  2669.         imul ecx,[Picture_SizeY]
  2670.         lea ecx,[ecx+ecx*2]
  2671.         shl ecx,1
  2672.  
  2673.         cmp ecx,500000
  2674.         ja normal_size_of_bufer
  2675.  
  2676.         mov ebx,[ReserveArray]
  2677.  
  2678.         normal_size_of_bufer:
  2679.  
  2680.         add ebx,4
  2681.         mov ecx,[Picture_SizeX]
  2682.         mov edx,[ScreenX]
  2683.         add edx,[PosX]
  2684.         shl edx,16
  2685.         add edx,[ScreenY]
  2686.         add edx,[PosY]
  2687.         mov esi,[Picture_SizeX]
  2688.         dec esi
  2689.         shl esi,16
  2690.         add esi,[Picture_SizeY]
  2691.         dec esi
  2692.         mov edi,[Color]
  2693.  
  2694.         call flood_fill
  2695.         call MovePictureToWorkScreen
  2696.  
  2697.         jmp still
  2698.         no_FloodFill:
  2699.  
  2700.         ;************************lastik*************************
  2701.         cmp eax,19
  2702.         jne no_lastik
  2703.  
  2704.          mov [lastik_is_active],1
  2705.         jmp lastik_in
  2706.  
  2707.         no_lastik:
  2708.  
  2709.         ;******************************************************
  2710.         cmp eax,20
  2711.         jne  no_spray
  2712.  
  2713.         cmp [Activate_instrument],0
  2714.         jne no_null_spray
  2715.         mov [Activate_instrument],1
  2716.         jmp still
  2717.         no_null_spray:
  2718.  
  2719.         mov eax,[ScreenX]
  2720.         mov ebx,[ScreenY]
  2721.         mov ecx,[Brush_SizeX]
  2722.         mov edx,[Brush_SizeY]
  2723.         add eax,[PosX]
  2724.         add ebx,[PosY]
  2725.         add eax,ecx
  2726.         add ebx,edx
  2727.  
  2728.         cmp eax,[Picture_SizeX]
  2729.         jl no_max_pos_x_spray
  2730.         mov eax,[Picture_SizeX]
  2731.         no_max_pos_x_spray:
  2732.  
  2733.         cmp ebx,[Picture_SizeY]
  2734.         jl no_max_pos_y_spray
  2735.         mov ebx,[Picture_SizeY]
  2736.         no_max_pos_y_spray:
  2737.  
  2738.         cmp eax,ecx
  2739.         ja no_min_pos_x_spray
  2740.         mov eax,[Brush_SizeX]
  2741.         no_min_pos_x_spray:
  2742.  
  2743.         cmp ebx,edx
  2744.         ja no_min_pos_y_spray
  2745.         mov ebx,[Brush_SizeY]
  2746.         no_min_pos_y_spray:
  2747.  
  2748.         sub eax,[Brush_SizeX]
  2749.         sub ebx,[Brush_SizeY]
  2750.         mov edi,0;[Number_Brush]
  2751.         imul edi,20*20
  2752.  
  2753.         mov [x],eax
  2754.         mov [y],ebx
  2755.         mov ebp,[Picture_SizeX]
  2756.         xor edx,edx
  2757.         brush_y_spray:
  2758.           xor ecx,ecx
  2759.           brush_x_spray:
  2760.            ;calculate position in array of spray
  2761.            mov esi,edx
  2762.            lea esi,[esi+esi*4] ;esi=esi*5
  2763.            shl esi,2           ;esi=(esi*3)*4
  2764.            add esi,ecx
  2765.            add esi,edi
  2766.            ;read byte from array
  2767.            xor eax,eax
  2768.            mov al,[Spray_color+esi]
  2769.            test eax,eax
  2770.            jz no_color_spray
  2771.            mov eax,[x]
  2772.            mov ebx,[y]
  2773.            add eax,ecx
  2774.            add ebx,edx
  2775.            imul ebx,ebp; ebp=[Picture_SizeX]
  2776.            add eax,ebx
  2777.            lea eax,[eax+eax*2]
  2778.            add eax,[PointerToPicture]
  2779.            mov ebx,[Color]
  2780.            mov [eax],bx
  2781.            shr ebx,16
  2782.            mov [eax+2],bl
  2783.            no_color_spray:
  2784.            inc ecx
  2785.            cmp ecx,20
  2786.           jl brush_x_spray
  2787.         inc edx
  2788.         cmp edx,20
  2789.         jl brush_y_spray
  2790.  
  2791.         call MovePictureToWorkScreen
  2792.         jmp still
  2793.  
  2794.         no_spray:
  2795.  
  2796.         ;***********************palette*************************
  2797.         cmp eax,21
  2798.         jne no_palette
  2799.  
  2800.         mov eax,20
  2801.         mov ebx,100
  2802.         mov ecx,32*10+32*5+7
  2803.         mov edx,8*10+7*10
  2804.         mov  esi,1
  2805.         call draw_volume_rectangle
  2806.         mov [x],20+5
  2807.         mov [y],100+10
  2808.         mov edi,256
  2809.         xor esi,esi
  2810.         next_rectangle:
  2811.         mov eax,13
  2812.         mov ebx,[x]
  2813.         mov ecx,[y]
  2814.         mov edx,[palitra+esi]
  2815.         and edx,0xffffff
  2816.         shl ebx,16
  2817.         shl ecx,16
  2818.         add ebx,13
  2819.         add ecx,13
  2820.         int 0x40
  2821.         add [x],15
  2822.         cmp [x],20+15*32
  2823.         jl no_new_line
  2824.         mov [x],20+5
  2825.         add [y],15
  2826.         no_new_line:
  2827.         add esi,4
  2828.         dec edi
  2829.         jnz next_rectangle
  2830.  
  2831.         wait_events:
  2832.         call event
  2833.  
  2834.         cmp eax,1
  2835.         je still
  2836.         cmp eax,2
  2837.         jne no_keys
  2838.         mov eax,2
  2839.         int 0x40
  2840.         no_keys:
  2841.         cmp eax,3
  2842.         jne no_buttons
  2843.         mov eax,17
  2844.         int 0x40
  2845.         no_buttons:
  2846.         cmp eax,6
  2847.         jne wait_events
  2848.  
  2849.         call GetMouseClick
  2850.  
  2851.         test eax,eax
  2852.         jz wait_events
  2853.         call GetMouseCoordinats
  2854.         mov [x],20+5
  2855.         mov [y],100+10
  2856.         mov [counter],0
  2857.         next_rectangle_column:
  2858.         mov eax,[x]
  2859.         mov ebx,[y]
  2860.         mov ecx,[MouseX]
  2861.         mov edx,[MouseY]
  2862.         mov esi,13
  2863.         mov edi,13
  2864.         call columnus
  2865.         test eax,eax
  2866.         jz no_columnus_color
  2867.         mov eax,[counter]
  2868.         shl eax,2
  2869.         mov ebx,[palitra+eax]
  2870.         and ebx,0xffffff
  2871.         mov [Color],ebx
  2872.         no_columnus_color:
  2873.         add [x],15
  2874.         cmp [x],20+15*32
  2875.         jl no_new_line_column
  2876.         mov [x],20+5
  2877.         add [y],15
  2878.         no_new_line_column:
  2879.         inc [counter]
  2880.         cmp [counter],257
  2881.         jne next_rectangle_column
  2882.         mov eax,5
  2883.         mov ebx,10
  2884.         int 0x40
  2885.         call drawwin
  2886.         and [Current_instrument],0
  2887.         jmp still
  2888.         no_palette:
  2889.  
  2890.         ;************************draw line**********************
  2891.         cmp eax,22
  2892.         jne no_line
  2893.  
  2894.         mov al,[Activate_instrument]
  2895.         test al,al
  2896.         jnz no_new_line_xy
  2897.         mov eax,[ScreenX]
  2898.         mov ebx,[ScreenY]
  2899.         add eax,[PosX]
  2900.         add ebx,[PosY]
  2901.         mov [OldX],eax
  2902.         mov [OldY],ebx
  2903.         mov [Activate_instrument],1
  2904.         mov eax,[ReserveArray]
  2905.         mov ecx,60000
  2906.         clear_array_line:
  2907.         mov [eax],dword 0
  2908.         add eax,4
  2909.         dec ecx
  2910.         jnz clear_array_line
  2911.         jmp still
  2912.         no_new_line_xy:
  2913.  
  2914.         ;put saved pixels
  2915.         mov ebx,[ReserveArray]
  2916.         mov eax,[ebx]
  2917.         test eax,eax
  2918.         jz no_put_line_to_screen_line
  2919.         mov ecx,[ebx]
  2920.         add ebx,4
  2921.         xor ebp,ebp
  2922.         next_color_put_line:
  2923.         ;put saved pixels in ReserveArray
  2924.         push ecx
  2925.         and [counter2],0
  2926.         mov edi,[ebx]
  2927.         push edi
  2928.         vertical_width_put:
  2929.            and [counter],0
  2930.  
  2931.            horizontal_width_put:
  2932.               mov edx,[ebx+4807*4+ebp]
  2933.               and edx,0xffffff
  2934.               mov [edi],dx
  2935.               shr edx,16
  2936.               mov [edi+2],dl
  2937.  
  2938.            add edi,3
  2939.            add ebp,4
  2940.            inc [counter]
  2941.            cmp [counter],5
  2942.            jne horizontal_width_put
  2943.  
  2944.            mov ecx,[Picture_SizeX]
  2945.            sub ecx,5
  2946.            lea ecx,[ecx+ecx*2]
  2947.            add edi,ecx
  2948.         inc [counter2]
  2949.         cmp [counter2],5
  2950.         jne vertical_width_put
  2951.         pop edi
  2952.         pop ecx
  2953.         add ebx,4
  2954.         dec ecx
  2955.         jnz next_color_put_line
  2956.  
  2957.         no_put_line_to_screen_line:
  2958.  
  2959.         ;calculate line
  2960.         mov ebx,[ReserveArray]
  2961.         add ebx,4
  2962.         mov eax,[PointerToPicture]
  2963.         mov ecx,[Picture_SizeX]
  2964.         mov edx,[OldX]
  2965.         shl edx,16
  2966.         add edx,[OldY]
  2967.         mov esi,[ScreenX]
  2968.         mov edi,[ScreenY]
  2969.         add esi,[PosX]
  2970.         add edi,[PosY]
  2971.  
  2972.         mov ebp,[Picture_SizeX]
  2973.         sub ebp,[line_width]
  2974.         cmp esi,ebp
  2975.         jl no_minimum_x_line
  2976.         mov esi,ebp
  2977.         no_minimum_x_line:
  2978.  
  2979.         mov ebp,[Picture_SizeY]
  2980.         sub ebp,[line_width]
  2981.         cmp edi,ebp
  2982.         jl no_minimum_y_line
  2983.         mov edi,ebp
  2984.         no_minimum_y_line:
  2985.  
  2986.         call calculate_line
  2987.         ;call calculate_rectangle
  2988.         mov [counter],eax
  2989.  
  2990.         ;save color pixels in ReserveArray
  2991.         mov eax,[counter]
  2992.         mov ebx,[ReserveArray]
  2993.         mov [ebx],eax
  2994.  
  2995.         mov ecx,[ebx]
  2996.         add ebx,4
  2997.  
  2998.         xor ebp,ebp
  2999.         next_color_save_line:
  3000.         ;save color of pixel in ReserveArray
  3001.         push ecx
  3002.         and [counter2],0
  3003.         mov edi,[ebx]
  3004.         vertical_width_save:
  3005.            and [counter],0
  3006.  
  3007.            horizontal_width_save:
  3008.               mov eax,edi
  3009.               mov edx,[eax]
  3010.               and edx,0xffffff
  3011.               mov [ebx+4807*4+ebp],dx
  3012.               shr edx,16
  3013.               mov [ebx+4807*4+2+ebp],dl
  3014.  
  3015.            add edi,3
  3016.            add ebp,4
  3017.            inc [counter]
  3018.            cmp [counter],5
  3019.            jne horizontal_width_save
  3020.  
  3021.            mov ecx,[Picture_SizeX]
  3022.            sub ecx,5
  3023.            lea ecx,[ecx+ecx*2]
  3024.            add edi,ecx
  3025.         inc [counter2]
  3026.         cmp [counter2],5
  3027.         jne vertical_width_save
  3028.         pop ecx
  3029.         add ebx,4
  3030.         dec ecx
  3031.         jnz next_color_save_line
  3032.  
  3033.         ;draw calculated pixels on work arrea
  3034.         mov ebx,[ReserveArray]
  3035.         mov ecx,[ebx]
  3036.         mov edx,[Color]
  3037.         mov esi,[Color]
  3038.         shr edx,16
  3039.         add ebx,4
  3040.         mov edi,[line_width]
  3041.         dec edi
  3042.         imul edi,25
  3043.         next_pixel_put_line:
  3044.  
  3045.         mov eax,[ebx]
  3046.         push eax
  3047.         push ecx
  3048.         xor ebp,ebp
  3049.         and [counter2],0
  3050.  
  3051.         vertical_width:
  3052.            and [counter],0
  3053.  
  3054.            horizontal_width:
  3055.            xor ecx,ecx
  3056.            mov cl,byte[width_pixels+edi+ebp]
  3057.            test cl,cl
  3058.              jz no_draw_pixel_line
  3059.               mov [eax],si
  3060.               mov [eax+2],dl
  3061.              no_draw_pixel_line:
  3062.            add eax,3
  3063.            inc ebp
  3064.            inc [counter]
  3065.            cmp [counter],5
  3066.            jne horizontal_width
  3067.  
  3068.            mov ecx,[Picture_SizeX]
  3069.            sub ecx,5
  3070.            lea ecx,[ecx+ecx*2]
  3071.            add eax,ecx
  3072.         inc [counter2]
  3073.         cmp [counter2],5
  3074.         jne vertical_width
  3075.  
  3076.         pop ecx
  3077.         pop eax
  3078.         add ebx,4
  3079.         dec ecx
  3080.         jnz next_pixel_put_line
  3081.  
  3082.         call MovePictureToWorkScreen
  3083.  
  3084.         jmp still
  3085.         no_line:
  3086.  
  3087.         ;*********************************DRAW RECTANGLE****************************
  3088.         cmp eax,23
  3089.         jne no_rectangle
  3090.  
  3091.         mov al,[Activate_instrument]
  3092.         test al,al
  3093.         jnz no_new_rectangle_xy
  3094.         mov eax,[ScreenX]
  3095.         mov ebx,[ScreenY]
  3096.         add eax,[PosX]
  3097.         add ebx,[PosY]
  3098.         mov [OldX],eax
  3099.         mov [OldY],ebx
  3100.         mov [Activate_instrument],1
  3101.         mov eax,[ReserveArray]
  3102.         mov ecx,60000
  3103.         clear_array_rectangle:
  3104.         mov [eax],dword 0
  3105.         add eax,4
  3106.         dec ecx
  3107.         jnz clear_array_rectangle
  3108.         jmp still
  3109.         no_new_rectangle_xy:
  3110.  
  3111.         ;put saved pixels
  3112.         mov ebx,[ReserveArray]
  3113.         mov eax,[ebx]
  3114.         test eax,eax
  3115.         jz no_put_rectangle_to_screen_line
  3116.         mov ecx,[ebx]
  3117.         add ebx,4
  3118.         xor ebp,ebp
  3119.         next_color_put_rectangle:
  3120.         ;put saved pixels in ReserveArray
  3121.         push ecx
  3122.         and [counter2],0
  3123.         mov edi,[ebx]
  3124.         push edi
  3125.         vertical_width_put_rectangle:
  3126.            and [counter],0
  3127.  
  3128.            horizontal_width_put_rectangle:
  3129.               mov edx,[ebx+4807*4+ebp]
  3130.               and edx,0xffffff
  3131.               mov [edi],dx
  3132.               shr edx,16
  3133.               mov [edi+2],dl
  3134.  
  3135.            add edi,3
  3136.            add ebp,4
  3137.            inc [counter]
  3138.            cmp [counter],5
  3139.            jne horizontal_width_put_rectangle
  3140.  
  3141.            mov ecx,[Picture_SizeX]
  3142.            sub ecx,5
  3143.            lea ecx,[ecx+ecx*2]
  3144.            add edi,ecx
  3145.         inc [counter2]
  3146.         cmp [counter2],5
  3147.         jne vertical_width_put_rectangle
  3148.         pop edi
  3149.         pop ecx
  3150.         add ebx,4
  3151.         dec ecx
  3152.         jnz next_color_put_rectangle
  3153.  
  3154.         no_put_rectangle_to_screen_line:
  3155.  
  3156.         ;calculate line
  3157.         mov ebx,[ReserveArray]
  3158.         add ebx,4
  3159.         mov eax,[PointerToPicture]
  3160.         mov ecx,[Picture_SizeX]
  3161.         mov edx,[OldX]
  3162.         shl edx,16
  3163.         add edx,[OldY]
  3164.         mov esi,[ScreenX]
  3165.         mov edi,[ScreenY]
  3166.         add esi,[PosX]
  3167.         add edi,[PosY]
  3168.  
  3169.         mov ebp,[Picture_SizeX]
  3170.         sub ebp,[line_width]
  3171.         cmp esi,ebp
  3172.         jl no_minimum_x_rectangle
  3173.         mov esi,ebp
  3174.         no_minimum_x_rectangle:
  3175.  
  3176.         mov ebp,[Picture_SizeY]
  3177.         sub ebp,[line_width]
  3178.         cmp edi,ebp
  3179.         jl no_minimum_y_rectangle
  3180.         mov edi,ebp
  3181.         no_minimum_y_rectangle:
  3182.  
  3183.         call calculate_rectangle
  3184.         mov [counter],eax
  3185.  
  3186.         ;save color pixels in ReserveArray
  3187.         mov eax,[counter]
  3188.         mov ebx,[ReserveArray]
  3189.         mov [ebx],eax
  3190.  
  3191.         mov ecx,[ebx]
  3192.         add ebx,4
  3193.  
  3194.         xor ebp,ebp
  3195.         next_color_save_rectangle:
  3196.         ;save color of pixel in ReserveArray
  3197.         push ecx
  3198.         and [counter2],0
  3199.         mov edi,[ebx]
  3200.         vertical_width_save_rectangle:
  3201.            and [counter],0
  3202.  
  3203.            horizontal_width_save_rectangle:
  3204.               mov eax,edi
  3205.               mov edx,[eax]
  3206.               and edx,0xffffff
  3207.               mov [ebx+4807*4+ebp],dx
  3208.               shr edx,16
  3209.               mov [ebx+4807*4+2+ebp],dl
  3210.  
  3211.            add edi,3
  3212.            add ebp,4
  3213.            inc [counter]
  3214.            cmp [counter],5
  3215.            jne horizontal_width_save_rectangle
  3216.  
  3217.            mov ecx,[Picture_SizeX]
  3218.            sub ecx,5
  3219.            lea ecx,[ecx+ecx*2]
  3220.            add edi,ecx
  3221.         inc [counter2]
  3222.         cmp [counter2],5
  3223.         jne vertical_width_save_rectangle
  3224.         pop ecx
  3225.         add ebx,4
  3226.         dec ecx
  3227.         jnz next_color_save_rectangle
  3228.  
  3229.         ;draw calculated pixels on work arrea
  3230.         mov ebx,[ReserveArray]
  3231.         mov ecx,[ebx]
  3232.         mov edx,[Color]
  3233.         mov esi,[Color]
  3234.         shr edx,16
  3235.         add ebx,4
  3236.         mov edi,[line_width]
  3237.         dec edi
  3238.         imul edi,25
  3239.         next_pixel_put_rectangle:
  3240.  
  3241.         mov eax,[ebx]
  3242.         push eax
  3243.         push ecx
  3244.         xor ebp,ebp
  3245.         and [counter2],0
  3246.  
  3247.         vertical_width_rectangle:
  3248.            and [counter],0
  3249.  
  3250.            horizontal_width_rectangle:
  3251.            xor ecx,ecx
  3252.            mov cl,byte[width_pixels_rectangle+edi+ebp]
  3253.            test cl,cl
  3254.              jz no_draw_pixel_rectangle
  3255.               mov [eax],si
  3256.               mov [eax+2],dl
  3257.              no_draw_pixel_rectangle:
  3258.            add eax,3
  3259.            inc ebp
  3260.            inc [counter]
  3261.            cmp [counter],5
  3262.            jne horizontal_width_rectangle
  3263.  
  3264.            mov ecx,[Picture_SizeX]
  3265.            sub ecx,5
  3266.            lea ecx,[ecx+ecx*2]
  3267.            add eax,ecx
  3268.         inc [counter2]
  3269.         cmp [counter2],5
  3270.         jne vertical_width_rectangle
  3271.  
  3272.         pop ecx
  3273.         pop eax
  3274.         add ebx,4
  3275.         dec ecx
  3276.         jnz next_pixel_put_rectangle
  3277.  
  3278.         call MovePictureToWorkScreen
  3279.         jmp still
  3280.         no_rectangle:
  3281.  
  3282.         ;*********************************DRAW CIRCLE****************************
  3283.         cmp eax,24
  3284.         jne no_circle
  3285.  
  3286.         mov al,[Activate_instrument]
  3287.         test al,al
  3288.         jnz no_new_circle_xy
  3289.         mov eax,[ScreenX]
  3290.         mov ebx,[ScreenY]
  3291.         add eax,[PosX]
  3292.         add ebx,[PosY]
  3293.         mov [OldX],eax
  3294.         mov [OldY],ebx
  3295.         mov [Activate_instrument],1
  3296.         mov eax,[ReserveArray]
  3297.         mov ecx,60000
  3298.         clear_array_circle:
  3299.         mov [eax],dword 0
  3300.         add eax,4
  3301.         dec ecx
  3302.         jnz clear_array_circle
  3303.         jmp still
  3304.         no_new_circle_xy:
  3305.  
  3306.         ;put saved pixels
  3307.         mov ebx,[ReserveArray]
  3308.         mov eax,[ebx]
  3309.         test eax,eax
  3310.         jz no_put_line_to_screen_circle
  3311.         mov ecx,[ebx]
  3312.         add ebx,4
  3313.         xor ebp,ebp
  3314.         next_color_put_circle:
  3315.         ;put saved pixels in ReserveArray
  3316.         push ecx
  3317.         and [counter2],0
  3318.         mov edi,[ebx]
  3319.         push edi
  3320.         vertical_width_put_circle:
  3321.            and [counter],0
  3322.  
  3323.            horizontal_width_put_circle:
  3324.               mov edx,[ebx+4807*4+ebp]
  3325.               and edx,0xffffff
  3326.               mov [edi],dx
  3327.               shr edx,16
  3328.               mov [edi+2],dl
  3329.  
  3330.            add edi,3
  3331.            add ebp,4
  3332.            inc [counter]
  3333.            cmp [counter],5
  3334.            jne horizontal_width_put_circle
  3335.  
  3336.            mov ecx,[Picture_SizeX]
  3337.            sub ecx,5
  3338.            lea ecx,[ecx+ecx*2]
  3339.            add edi,ecx
  3340.         inc [counter2]
  3341.         cmp [counter2],5
  3342.         jne vertical_width_put_circle
  3343.         pop edi
  3344.         pop ecx
  3345.         add ebx,4
  3346.         dec ecx
  3347.         jnz next_color_put_circle
  3348.  
  3349.         no_put_line_to_screen_circle:
  3350.  
  3351.         mov esi,[ScreenX]
  3352.         mov edi,[ScreenY]
  3353.         add esi,[PosX]
  3354.         add edi,[PosY]
  3355.  
  3356.         sub esi,[OldX]
  3357.         jns no_sign_x_circle
  3358.         neg esi
  3359.         shr esi,1
  3360.         neg esi
  3361.         add esi,[OldX]
  3362.         jmp no_plus_sign_x_circle
  3363.         no_sign_x_circle:
  3364.  
  3365.         shr esi,1
  3366.         add esi,[OldX]
  3367.         no_plus_sign_x_circle:
  3368.  
  3369.         sub edi,[OldY]
  3370.         jns no_sign_y_circle
  3371.         neg edi
  3372.         shr edi,1
  3373.         neg edi
  3374.         add edi,[OldY]
  3375.         jmp no_plus_sign_y_circle
  3376.         no_sign_y_circle:
  3377.  
  3378.         shr edi,1
  3379.         add edi,[OldY]
  3380.         no_plus_sign_y_circle:
  3381.  
  3382.         mov [x],esi
  3383.         mov [y],edi
  3384.  
  3385.         mov esi,[ScreenX]
  3386.         mov edi,[ScreenY]
  3387.         add esi,[PosX]
  3388.         add edi,[PosY]
  3389.  
  3390.         sub esi,[OldX]
  3391.         jns no_sign_x_circle_r
  3392.         neg esi
  3393.         no_sign_x_circle_r:
  3394.  
  3395.         sub edi,[OldY]
  3396.         jns no_sign_y_circle_r
  3397.         neg edi
  3398.         no_sign_y_circle_r:
  3399.  
  3400.         mov [Dx_],esi
  3401.         mov [Dy_],edi
  3402.  
  3403.         ;finit
  3404.         fild [Dx_]
  3405.         fmul st0,st0
  3406.         fild [Dy_]
  3407.         fmul st0,st0
  3408.         fadd st0,st1
  3409.         fsqrt
  3410.         fistp [Radius]
  3411.         fistp [Icon_X]
  3412.         mov esi,[Radius]
  3413.         shr esi,1
  3414.         cmp esi,0
  3415.         jne no_null_radius
  3416.         mov [Radius],1
  3417.         no_null_radius:
  3418.  
  3419.         mov [Radius],esi
  3420.  
  3421.         mov edi,[x]
  3422.         mov ebp,[y]
  3423.         add edi,esi
  3424.         add ebp,esi
  3425.  
  3426.         mov edx,[Picture_SizeX]
  3427.         sub edx,[line_width]
  3428.         cmp edi,edx
  3429.         jl no_limit_x_circle
  3430.         sub edi,edx
  3431.         sub [Radius],edi
  3432.         no_limit_x_circle:
  3433.  
  3434.         mov edx,[Picture_SizeY]
  3435.         sub edx,[line_width]
  3436.         cmp ebp,edx
  3437.         jl no_limit_y_circle
  3438.         sub ebp,edx
  3439.         sub [Radius],ebp
  3440.         no_limit_y_circle:
  3441.  
  3442.  
  3443.         mov edi,[x]
  3444.         mov ebp,[y]
  3445.  
  3446.         sub edi,[Radius]
  3447.         jns no_minimum_x_circle
  3448.         add [Radius],edi
  3449.         no_minimum_x_circle:
  3450.  
  3451.         sub ebp,[Radius]
  3452.         jns no_minimum_y_circle
  3453.         add [Radius],ebp
  3454.         no_minimum_y_circle:
  3455.  
  3456.         ;calculate circle
  3457.         mov ebx,[ReserveArray]
  3458.         add ebx,4
  3459.         mov eax,[PointerToPicture]
  3460.         mov ecx,[Picture_SizeX]
  3461.         mov edx,[x]
  3462.         shl edx,16
  3463.         add edx,[y]
  3464.         mov esi,[Radius]
  3465.         call calculate_circle
  3466.  
  3467.         mov [counter],eax
  3468.  
  3469.         ;save color pixels in ReserveArray
  3470.         mov eax,[counter]
  3471.         mov ebx,[ReserveArray]
  3472.         mov [ebx],eax
  3473.  
  3474.         mov ecx,[ebx]
  3475.         add ebx,4
  3476.  
  3477.         xor ebp,ebp
  3478.         next_color_save_circle:
  3479.         ;save color of pixel in ReserveArray
  3480.         push ecx
  3481.         and [counter2],0
  3482.         mov edi,[ebx]
  3483.         vertical_width_save_circle:
  3484.            and [counter],0
  3485.  
  3486.            horizontal_width_save_circle:
  3487.               mov eax,edi
  3488.               mov edx,[eax]
  3489.               and edx,0xffffff
  3490.               mov [ebx+4807*4+ebp],dx
  3491.               shr edx,16
  3492.               mov [ebx+4807*4+2+ebp],dl
  3493.  
  3494.            add edi,3
  3495.            add ebp,4
  3496.            inc [counter]
  3497.            cmp [counter],5
  3498.            jne horizontal_width_save_circle
  3499.  
  3500.            mov ecx,[Picture_SizeX]
  3501.            sub ecx,5
  3502.            lea ecx,[ecx+ecx*2]
  3503.            add edi,ecx
  3504.         inc [counter2]
  3505.         cmp [counter2],5
  3506.         jne vertical_width_save_circle
  3507.         pop ecx
  3508.         add ebx,4
  3509.         dec ecx
  3510.         jnz next_color_save_circle
  3511.  
  3512.         ;draw calculated pixels on work arrea
  3513.         mov ebx,[ReserveArray]
  3514.         mov ecx,[ebx]
  3515.         mov edx,[Color]
  3516.         mov esi,[Color]
  3517.         shr edx,16
  3518.         add ebx,4
  3519.         mov edi,[line_width]
  3520.         dec edi
  3521.         imul edi,25
  3522.         next_pixel_put_circle:
  3523.  
  3524.         mov eax,[ebx]
  3525.         push eax
  3526.         push ecx
  3527.         xor ebp,ebp
  3528.         and [counter2],0
  3529.  
  3530.         vertical_width_circle:
  3531.            and [counter],0
  3532.  
  3533.            horizontal_width_circle:
  3534.            xor ecx,ecx
  3535.            mov cl,byte[width_pixels+edi+ebp]
  3536.            test cl,cl
  3537.              jz no_draw_pixel_circle
  3538.               mov [eax],si
  3539.               mov [eax+2],dl
  3540.              no_draw_pixel_circle:
  3541.            add eax,3
  3542.            inc ebp
  3543.            inc [counter]
  3544.            cmp [counter],5
  3545.            jne horizontal_width_circle
  3546.  
  3547.            mov ecx,[Picture_SizeX]
  3548.            sub ecx,5
  3549.            lea ecx,[ecx+ecx*2]
  3550.            add eax,ecx
  3551.         inc [counter2]
  3552.         cmp [counter2],5
  3553.         jne vertical_width_circle
  3554.  
  3555.         pop ecx
  3556.         pop eax
  3557.         add ebx,4
  3558.         dec ecx
  3559.         jnz next_pixel_put_circle
  3560.  
  3561.         call MovePictureToWorkScreen
  3562.         jmp still
  3563.         no_circle:
  3564.  
  3565.         ;************************zoom 1*************************
  3566.         cmp eax,25
  3567.         jne no_1_
  3568.         mov [k],1
  3569.         mov [Scroll1CoordinatX],9
  3570.         mov [Scroll2CoordinatY],85
  3571.         and [Current_instrument],0
  3572.         call drawwin
  3573.         jmp still
  3574.         no_1_:
  3575.  
  3576.         ;*************************zoom 2************************
  3577.         cmp eax,26
  3578.         jne no_2_
  3579.         mov [k],2
  3580.         call drawwin
  3581.         mov [Scroll1CoordinatX],9
  3582.         mov [Scroll2CoordinatY],85
  3583.         and [Current_instrument],0
  3584.         jmp still
  3585.         no_2_:
  3586.  
  3587.         ;*************************zoom 4************************
  3588.         cmp eax,27
  3589.         jne no_4_
  3590.         mov [k],4
  3591.         call drawwin
  3592.         mov [Scroll1CoordinatX],9
  3593.         mov [Scroll2CoordinatY],85
  3594.         and [Current_instrument],0
  3595.         jmp still
  3596.         no_4_:
  3597.  
  3598.         ;************************zoom 8*************************
  3599.         cmp eax,28
  3600.         jne no_8_
  3601.         mov [k],8
  3602.         call drawwin
  3603.         mov [Scroll1CoordinatX],9
  3604.         mov [Scroll2CoordinatY],85
  3605.         and [Current_instrument],0
  3606.         jmp still
  3607.         no_8_:
  3608.  
  3609.         ;************************zoom 16************************
  3610.         cmp eax,29
  3611.         jne no_16_
  3612.         mov [k],16
  3613.         call drawwin
  3614.         mov [Scroll1CoordinatX],9
  3615.         mov [Scroll2CoordinatY],85
  3616.         and [Current_instrument],0
  3617.         jmp still
  3618.         no_16_:
  3619.  
  3620.         ;***************allocation of a countour*********************
  3621.         cmp eax,30
  3622.         jne no_allocation
  3623.  
  3624.         cmp [instrument_used],0
  3625.         jnz instrument_not_finished_work
  3626.  
  3627.         mov al,[Activate_instrument]
  3628.         test al,al
  3629.         jnz no_new_allocation_xy
  3630.         mov eax,[ScreenX]
  3631.         mov ebx,[ScreenY]
  3632.         add eax,[PosX]
  3633.         add ebx,[PosY]
  3634.         mov [OldX],eax
  3635.         mov [OldY],ebx
  3636.         inc eax
  3637.         inc ebx
  3638.         mov [rectangular_shade_x],eax
  3639.         mov [rectangular_shade_y],ebx
  3640.         mov [Activate_instrument],1
  3641.         mov [instrument_used],1
  3642.         and [crossing],0
  3643.         and [finishing_crossing],0
  3644.         mov eax,[ReserveArray]
  3645.         mov ecx,60000
  3646.         clear_array_allocation:
  3647.         mov [eax],dword 0
  3648.         add eax,4
  3649.         dec ecx
  3650.         jnz clear_array_allocation
  3651.         jmp still
  3652.         no_new_allocation_xy:
  3653.         instrument_not_finished_work:
  3654.  
  3655.         mov al,[instrument_used]
  3656.         test al,al
  3657.         jz no_change_coordinats
  3658.  
  3659.         cmp [Activate_instrument],0
  3660.         jnz no_change_coordinats
  3661.  
  3662.         ;save coordinates as old if crossing=0
  3663.         cmp [crossing],0
  3664.         jnz no_save_coordinate_of_crossing
  3665.  
  3666.         mov eax,[OldX]
  3667.         mov ebx,[OldY]
  3668.  
  3669.         cmp eax,[rectangular_shade_x]
  3670.         jl no_remove_x
  3671.         mov ecx,[rectangular_shade_x]
  3672.         mov [OldX],ecx                    ; OldX <-----> rectangulare_shade_x
  3673.         mov [rectangular_shade_x],eax
  3674.         no_remove_x:
  3675.  
  3676.         cmp ebx,[rectangular_shade_y]
  3677.         jl no_remove_y
  3678.         mov ecx,[rectangular_shade_y]
  3679.         mov [OldY],ecx                    ; OldY <-----> rectangulare_shade_y
  3680.         mov [rectangular_shade_y],ebx
  3681.         no_remove_y:
  3682.  
  3683.         mov eax,[ScreenX]
  3684.         mov ebx,[ScreenY]
  3685.         add eax,[PosX]
  3686.         add ebx,[PosY]
  3687.         mov [crossing_old_x],eax
  3688.         mov [crossing_old_y],ebx
  3689.         mov [crossing],1
  3690.  
  3691.  
  3692.         mov eax,[OldX]
  3693.         mov ebx,[OldY]
  3694.         inc eax
  3695.         inc ebx
  3696.         mov [SpriteCoordinatX],eax
  3697.         mov [SpriteCoordinatY],ebx
  3698.         mov [SpriteOldCoordinatX],eax
  3699.         mov [SpriteOldCoordinatY],ebx
  3700.         mov esi,[rectangular_shade_x]
  3701.         mov edi,[rectangular_shade_y]
  3702.  
  3703.         sub esi,eax
  3704.         jns no_sign_sprite_size_x
  3705.         neg esi
  3706.         no_sign_sprite_size_x:
  3707.  
  3708.         sub edi,ebx
  3709.         jns no_sign_sprite_size_y
  3710.         neg edi
  3711.         no_sign_sprite_size_y:
  3712.  
  3713.         test esi,esi
  3714.         jnz no_null_sprite_x
  3715.         mov esi,1
  3716.         no_null_sprite_x:
  3717.  
  3718.         test edi,edi
  3719.         jnz no_null_sprite_y
  3720.         mov edi,1
  3721.         no_null_sprite_y:
  3722.  
  3723.         mov [SpriteSizeX],esi
  3724.         mov [SpriteSizeY],edi
  3725.  
  3726.         call SaveFonForSprite
  3727.  
  3728.         no_save_coordinate_of_crossing:
  3729.  
  3730.         cmp [crossing],0
  3731.         je no_test_crossing_with_work_arrea
  3732.         ;if mouse situatad after allocation than exit
  3733.         push [ScreenX]
  3734.         push [ScreenY]
  3735.  
  3736.         call GetScreenCordinats
  3737.  
  3738.         mov eax,[OldX]
  3739.         mov ebx,[OldY]
  3740.         mov ecx,[ScreenX]
  3741.         mov edx,[ScreenY]
  3742.         mov esi,[SpriteSizeX]
  3743.         mov edi,[SpriteSizeY]
  3744.         add ecx,[PosX]
  3745.         add edx,[PosY]
  3746.         inc esi;eax
  3747.         inc edi;ebx
  3748.         call columnus
  3749.  
  3750.         test eax,eax
  3751.         jnz crossing_with_work_area
  3752.         mov [finishing_crossing],1
  3753.         mov [register],1
  3754.         crossing_with_work_area:
  3755.  
  3756.         pop [ScreenY]
  3757.         pop [ScreenX]
  3758.  
  3759.         no_test_crossing_with_work_arrea:
  3760.  
  3761.         mov eax,[ScreenX]
  3762.         mov ebx,[ScreenY]
  3763.         add eax,[PosX]
  3764.         add ebx,[PosY]
  3765.         mov ecx,eax
  3766.         mov edx,ebx
  3767.         sub eax,[crossing_old_x]  ;dx=(x-oldx)
  3768.         sub ebx,[crossing_old_y]  ;dy=(y-oldy)
  3769.         mov [crossing_old_x],ecx
  3770.         mov [crossing_old_y],edx
  3771.  
  3772.         add [OldX],eax                 ;x1=x1+dx
  3773.         add [OldY],ebx                 ;y1=y1+dy
  3774.         add [rectangular_shade_x],eax  ;x2=x2+dx
  3775.         add [rectangular_shade_y],ebx  ;y2+y2+dy
  3776.  
  3777.         mov eax,[OldX]
  3778.         mov ebx,[OldY]
  3779.         inc eax
  3780.         inc ebx
  3781.         mov [SpriteCoordinatX],eax
  3782.         mov [SpriteCoordinatY],ebx
  3783.  
  3784.         cmp [SpriteCoordinatX],0
  3785.         jns no_null_sprite_coordinat_x
  3786.         mov [SpriteCoordinatX],1
  3787.         no_null_sprite_coordinat_x:
  3788.  
  3789.         cmp [SpriteCoordinatY],0
  3790.         jns no_null_sprite_coordinat_y
  3791.         mov [SpriteCoordinatY],1
  3792.         no_null_sprite_coordinat_y:
  3793.  
  3794.         mov esi,[rectangular_shade_x]
  3795.         mov edi,[rectangular_shade_y]
  3796.  
  3797.         sub esi,[OldX]
  3798.         jns no_znak_size_of_rectangulare_crossing_x
  3799.         neg esi
  3800.         no_znak_size_of_rectangulare_crossing_x:
  3801.  
  3802.         sub edi,[OldY]
  3803.         jns no_znak_size_of_rectangulare_crossing_y
  3804.         neg edi
  3805.         no_znak_size_of_rectangulare_crossing_y:
  3806.  
  3807.         mov ecx,[OldX]
  3808.         mov edx,[OldY]
  3809.  
  3810.         sub ecx,[PosX]
  3811.         jns no_minimum_x_crossing
  3812.         mov ecx,0
  3813.         add ecx,[PosX]
  3814.         mov [OldX],ecx
  3815.         add ecx,esi
  3816.         mov [rectangular_shade_x],ecx
  3817.         no_minimum_x_crossing:
  3818.  
  3819.         sub edx,[PosY]
  3820.         jns no_minimum_y_crossing
  3821.         mov edx,0
  3822.         add edx,[PosY]
  3823.         mov [OldY],edx
  3824.         add edx,edi
  3825.         mov [rectangular_shade_y],edx
  3826.         no_minimum_y_crossing:
  3827.  
  3828.         mov ecx,[Picture_SizeX]
  3829.         sub ecx,esi
  3830.         cmp [OldX],ecx
  3831.         jl no_maximum_x_crossing
  3832.         dec ecx
  3833.         mov [OldX],ecx
  3834.         add ecx,esi
  3835.         mov [rectangular_shade_x],ecx
  3836.         no_maximum_x_crossing:
  3837.  
  3838.         mov edx,[Picture_SizeY]
  3839.         sub edx,edi
  3840.         cmp [OldY],edx
  3841.         jl no_maximum_y_crossing
  3842.         dec edx
  3843.         mov [OldY],edx
  3844.         add edx,edi
  3845.         mov [rectangular_shade_y],edx
  3846.         no_maximum_y_crossing:
  3847.  
  3848.         mov eax,[rectangular_shade_x]
  3849.         mov ebx,[rectangular_shade_y]
  3850.         sub eax,[PosX]
  3851.         sub ebx,[PosY]
  3852.         mov [ScreenX],eax
  3853.         mov [ScreenY],ebx
  3854.         no_change_coordinats:
  3855.  
  3856.         ;put saved pixels
  3857.         mov ebx,[ReserveArray]
  3858.         mov eax,[ebx]
  3859.         test eax,eax
  3860.         jz no_put_line_to_screen_allocation
  3861.         mov ecx,[ebx]
  3862.         add ebx,4
  3863.         xor ebp,ebp
  3864.         next_color_put_allocation:
  3865.         ;put saved pixels in ReserveArray
  3866.         push ecx
  3867.         and [counter2],0
  3868.         mov edi,[ebx]
  3869.         push edi
  3870.         vertical_width_put_allocation:
  3871.            and [counter],0
  3872.  
  3873.            horizontal_width_put_allocation:
  3874.               mov edx,[ebx+4807*4+ebp]
  3875.               and edx,0xffffff
  3876.               mov [edi],dx
  3877.               shr edx,16
  3878.               mov [edi+2],dl
  3879.  
  3880.            add edi,3
  3881.            add ebp,4
  3882.            inc [counter]
  3883.            cmp [counter],1;5
  3884.            jne horizontal_width_put_allocation
  3885.  
  3886.            mov ecx,[Picture_SizeX]
  3887.            sub ecx,1;5
  3888.            lea ecx,[ecx+ecx*2]
  3889.            add edi,ecx
  3890.         inc [counter2]
  3891.         cmp [counter2],1;5
  3892.         jne vertical_width_put_allocation
  3893.         pop edi
  3894.         pop ecx
  3895.         add ebx,4
  3896.         dec ecx
  3897.         jnz next_color_put_allocation
  3898.  
  3899.         no_put_line_to_screen_allocation:
  3900.  
  3901.         cmp [DrawSprite_flag],1
  3902.         jne no_activate_put_fon_
  3903.  
  3904.         cmp [Paste_flag],1
  3905.         je no_put_fon___
  3906.         call PutFonForSprite
  3907.         no_put_fon___:
  3908.         and [Paste_flag],0
  3909.         no_activate_put_fon_:
  3910.  
  3911.         cmp [finishing_crossing],0
  3912.         jz not_finish_from_instrument_crossing
  3913.         and [Activate_instrument],0
  3914.         and [crossing],0
  3915.         and [instrument_used],0
  3916.         and [DrawSprite_flag],0
  3917.         call MovePictureToWorkScreen
  3918.         jmp still
  3919.         not_finish_from_instrument_crossing:
  3920.  
  3921.         ;calculate line
  3922.         mov ebx,[ReserveArray]
  3923.         add ebx,4
  3924.         mov eax,[PointerToPicture]
  3925.         mov ecx,[Picture_SizeX]
  3926.         mov edx,[OldX]
  3927.         shl edx,16
  3928.         add edx,[OldY]
  3929.         mov esi,[ScreenX]
  3930.         mov edi,[ScreenY]
  3931.         add esi,[PosX]
  3932.         add edi,[PosY]
  3933.  
  3934.         mov ebp,[Picture_SizeX]
  3935.         dec ebp
  3936.         cmp esi,ebp
  3937.         jl no_minimum_x_allocation
  3938.         mov esi,ebp
  3939.         no_minimum_x_allocation:
  3940.  
  3941.         mov ebp,[Picture_SizeY]
  3942.         dec ebp
  3943.         cmp edi,ebp
  3944.         jl no_minimum_y_allocation
  3945.         mov edi,ebp
  3946.         no_minimum_y_allocation:
  3947.  
  3948.         call calculate_rectangle
  3949.         mov [counter],eax
  3950.  
  3951.         ;save color pixels in ReserveArray
  3952.         mov eax,[counter]
  3953.         mov ebx,[ReserveArray]
  3954.         mov [ebx],eax
  3955.  
  3956.         mov ecx,[ebx]
  3957.         add ebx,4
  3958.  
  3959.         xor ebp,ebp
  3960.         next_color_save_allocation:
  3961.         ;save color of pixel in ReserveArray
  3962.         push ecx
  3963.         and [counter2],0
  3964.         mov edi,[ebx]
  3965.         vertical_width_save_allocation:
  3966.            and [counter],0
  3967.  
  3968.            horizontal_width_save_allocation:
  3969.               mov eax,edi
  3970.               mov edx,[eax]
  3971.               and edx,0xffffff
  3972.               mov [ebx+4807*4+ebp],dx
  3973.               shr edx,16
  3974.               mov [ebx+4807*4+2+ebp],dl
  3975.  
  3976.            add edi,3
  3977.            add ebp,4
  3978.            inc [counter]
  3979.            cmp [counter],1;5
  3980.            jne horizontal_width_save_allocation
  3981.  
  3982.            mov ecx,[Picture_SizeX]
  3983.            sub ecx,1;5
  3984.            lea ecx,[ecx+ecx*2]
  3985.            add edi,ecx
  3986.         inc [counter2]
  3987.         cmp [counter2],1;5
  3988.         jne vertical_width_save_allocation
  3989.         pop ecx
  3990.         add ebx,4
  3991.         dec ecx
  3992.         jnz next_color_save_allocation
  3993.  
  3994.         cmp [DrawSprite_flag],1
  3995.         jne no_save_fon_for_sprite_
  3996.         ;save current coordinats as old
  3997.         mov eax,[SpriteCoordinatX]
  3998.         mov ebx,[SpriteCoordinatY]
  3999.         mov [SpriteOldCoordinatX],eax
  4000.         mov [SpriteOldCoordinatY],ebx
  4001.  
  4002.         call SaveFonForSprite
  4003.  
  4004.         no_save_fon_for_sprite_:
  4005.  
  4006.         ;draw calculated pixels on work arrea
  4007.         mov ebx,[ReserveArray]
  4008.         mov ecx,[ebx]
  4009.         add ebx,4
  4010.         next_pixel_put_allocation:
  4011.  
  4012.         mov edx,0x1f3fff
  4013.         mov esi,edx
  4014.         shr edx,16
  4015.  
  4016.         mov ebp,ecx
  4017.         and ebp,8
  4018.         cmp ebp,8
  4019.         jne black_color
  4020.         mov si,0xffff
  4021.         mov dl,0xff
  4022.         black_color:
  4023.  
  4024.         mov eax,[ebx]
  4025.         mov [eax],si
  4026.         mov [eax+2],dl
  4027.  
  4028.         add ebx,4
  4029.         dec ecx
  4030.         jnz next_pixel_put_allocation
  4031.  
  4032.         cmp [DrawSprite_flag],1
  4033.         jne no_activate_draw_sprite_
  4034.  
  4035.         call DrawSprite
  4036.  
  4037.         no_activate_draw_sprite_:
  4038.  
  4039.         mov al,[instrument_used]
  4040.         test al,al
  4041.         jz no_change_coordinats
  4042.         cmp [Activate_instrument],0
  4043.         jz no_save_shades
  4044.         mov eax,[ScreenX]
  4045.         mov ebx,[ScreenY]
  4046.         add eax,[PosX]
  4047.         add ebx,[PosY]
  4048.         mov [rectangular_shade_x],eax
  4049.         mov [rectangular_shade_y],ebx
  4050.         no_save_shades:
  4051.  
  4052.         call MovePictureToWorkScreen
  4053.         jmp still
  4054.         no_allocation:
  4055.  
  4056.         ;*************reflection from left to right******************
  4057.         cmp eax,35
  4058.         jne no_reflection_from_left_to_right
  4059.  
  4060.         mov ebp,[PointerToPicture]
  4061.         mov edx,[ReserveArray]
  4062.         mov esi,[Picture_SizeX]
  4063.         mov ebx,[Picture_SizeX]
  4064.         lea ebx,[ebx+ebx*2]
  4065.         shr esi,1
  4066.         next_line_reflection_x:
  4067.         ;copy vertical line to array
  4068.         mov ecx,[Picture_SizeX]
  4069.         shr ecx,1
  4070.         sub ecx,esi
  4071.         lea ecx,[ecx+ecx*2]
  4072.         add ecx,[PointerToPicture]
  4073.         mov edx,[ReserveArray]
  4074.         and edi,0
  4075.         copy_to_array_line_reflection_y:
  4076.         xor eax,eax
  4077.         mov eax,[ecx]
  4078.         mov ebp,edi
  4079.         lea ebp,[ebp+ebp*2]
  4080.         mov [edx+ebp],ax
  4081.         shr eax,16
  4082.         mov [edx+ebp+2],al
  4083.         add ecx,ebx
  4084.         inc edi
  4085.         cmp edi,[Picture_SizeY]
  4086.         jne copy_to_array_line_reflection_y
  4087.  
  4088.         mov ecx,[Picture_SizeX]
  4089.         shr ecx,1
  4090.         mov ebp,ecx
  4091.         add ecx,esi
  4092.         dec ecx
  4093.         lea ecx,[ecx+ecx*2]
  4094.         add ecx,[PointerToPicture]
  4095.         sub ebp,esi
  4096.         lea ebp,[ebp+ebp*2]
  4097.         add ebp,[PointerToPicture]
  4098.         and edi,0
  4099.         next_line_reflection_y:
  4100.         mov eax,[ecx]
  4101.         and eax,0xffffff
  4102.         mov [ebp],ax
  4103.         shr eax,16
  4104.         mov [ebp+2],al
  4105.         add ebp,ebx
  4106.         add ecx,ebx
  4107.         inc edi
  4108.         cmp edi,[Picture_SizeY]
  4109.         jnz next_line_reflection_y
  4110.  
  4111.         ;copy vertical line  from array to screen
  4112.         mov ecx,[Picture_SizeX]
  4113.         shr ecx,1
  4114.         add ecx,esi
  4115.         dec ecx
  4116.         lea ecx,[ecx+ecx*2]
  4117.         add ecx,[PointerToPicture]
  4118.         mov edx,[ReserveArray]
  4119.         and edi,0
  4120.         copy_from_array_to_screen_reflection_y:
  4121.         mov ebp,edi
  4122.         lea ebp,[ebp+ebp*2]
  4123.         xor eax,eax
  4124.         mov eax,[edx+ebp]
  4125.         mov [ecx],ax
  4126.         shr eax,16
  4127.         mov [ecx+2],al
  4128.         add ecx,ebx
  4129.         inc edi
  4130.         cmp edi,[Picture_SizeY]
  4131.         jne copy_from_array_to_screen_reflection_y
  4132.  
  4133.         dec esi
  4134.         jnz next_line_reflection_x
  4135.  
  4136.         call MovePictureToWorkScreen
  4137.         jmp still
  4138.         no_reflection_from_left_to_right:
  4139.  
  4140.         ;*************reflection from up to down******************
  4141.         cmp eax,36
  4142.         jne no_reflection_from_up_to_down
  4143.         mov esi,[Picture_SizeX]
  4144.         mov edi,esi
  4145.         lea esi,[esi+esi*2]
  4146.         lea edi,[edi+edi*2]
  4147.         imul edi,[Picture_SizeY]
  4148.         mov edx,[ReserveArray]
  4149.         mov ecx,[Picture_SizeY]
  4150.         shr ecx,1
  4151.         add edi,[PointerToPicture]
  4152.         sub edi,esi
  4153.         mov ebp,[PointerToPicture]
  4154.         next_lines_reflection:
  4155.         ;copy line
  4156.         xor ebx,ebx
  4157.         copy_line_1:
  4158.         xor eax,eax
  4159.         mov al,[edi+ebx]
  4160.         mov [edx+ebx],al
  4161.         inc ebx
  4162.         cmp ebx,esi
  4163.         jne copy_line_1
  4164.  
  4165.         xor ebx,ebx
  4166.         copy_line_2:
  4167.         xor eax,eax
  4168.         mov al,[ebp+ebx]
  4169.         mov [edi+ebx],al
  4170.         inc ebx
  4171.         cmp ebx,esi
  4172.         jne copy_line_2
  4173.  
  4174.         xor ebx,ebx
  4175.         copy_line_3:
  4176.         xor eax,eax
  4177.         mov al,[edx+ebx]
  4178.         mov [ebp+ebx],al
  4179.         inc ebx
  4180.         cmp ebx,esi
  4181.         jne copy_line_3
  4182.  
  4183.         add ebp,esi
  4184.         sub edi,esi
  4185.         dec ecx
  4186.         jnz next_lines_reflection
  4187.  
  4188.         call MovePictureToWorkScreen
  4189.         jmp still
  4190.         no_reflection_from_up_to_down:
  4191.  
  4192.         ;*********************draw hard contour*******************
  4193.         cmp eax,38
  4194.         jne no_kontur_
  4195.  
  4196.         mov al,[Activate_instrument]
  4197.         test al,al
  4198.         jnz no_new_konture_xy
  4199.  
  4200.         mov al,[instrument_used]
  4201.         test al,al
  4202.         jz instrument_not_used
  4203.         mov eax,[used_OldX]
  4204.         mov ebx,[used_OldY]
  4205.         mov [OldX],eax
  4206.         mov [OldY],ebx
  4207.         jmp exit_used_instrument
  4208.         instrument_not_used:
  4209.  
  4210.         mov eax,[ScreenX]
  4211.         mov ebx,[ScreenY]
  4212.         add eax,[PosX]
  4213.         add ebx,[PosY]
  4214.         mov [OldX],eax
  4215.         mov [OldY],ebx
  4216.         exit_used_instrument:
  4217.  
  4218.         mov al,[instrument_used]
  4219.         test al,al
  4220.         jnz instrument_used_true
  4221.         mov [instrument_used],byte 1
  4222.         instrument_used_true:
  4223.  
  4224.         mov [Activate_instrument],1
  4225.         mov eax,[ReserveArray]
  4226.         mov ecx,60000
  4227.         clear_array_konture:
  4228.         mov [eax],dword 0
  4229.         add eax,4
  4230.         dec ecx
  4231.         jnz clear_array_line
  4232.  
  4233.         no_new_konture_xy:
  4234.  
  4235.         ;put saved pixels
  4236.         mov ebx,[ReserveArray]
  4237.         mov eax,[ebx]
  4238.         test eax,eax
  4239.         jz no_put_line_to_screen_konture
  4240.         mov ecx,[ebx]
  4241.         add ebx,4
  4242.         xor ebp,ebp
  4243.         next_color_put_konture:
  4244.         ;put saved pixels in ReserveArray
  4245.         push ecx
  4246.         and [counter2],0
  4247.         mov edi,[ebx]
  4248.         push edi
  4249.         vertical_width_put_konture:
  4250.            and [counter],0
  4251.  
  4252.            horizontal_width_put_konture:
  4253.               mov edx,[ebx+4807*4+ebp]
  4254.               and edx,0xffffff
  4255.               mov [edi],dx
  4256.               shr edx,16
  4257.               mov [edi+2],dl
  4258.  
  4259.            add edi,3
  4260.            add ebp,4
  4261.            inc [counter]
  4262.            cmp [counter],5
  4263.            jne horizontal_width_put_konture
  4264.  
  4265.            mov ecx,[Picture_SizeX]
  4266.            sub ecx,5
  4267.            lea ecx,[ecx+ecx*2]
  4268.            add edi,ecx
  4269.         inc [counter2]
  4270.         cmp [counter2],5
  4271.         jne vertical_width_put_konture
  4272.         pop edi
  4273.         pop ecx
  4274.         add ebx,4
  4275.         dec ecx
  4276.         jnz next_color_put_konture
  4277.  
  4278.         no_put_line_to_screen_konture:
  4279.  
  4280.         ;calculate line
  4281.         mov ebx,[ReserveArray]
  4282.         add ebx,4
  4283.         mov eax,[PointerToPicture]
  4284.         mov ecx,[Picture_SizeX]
  4285.         mov edx,[OldX]
  4286.         shl edx,16
  4287.         add edx,[OldY]
  4288.         mov esi,[ScreenX]
  4289.         mov edi,[ScreenY]
  4290.         add esi,[PosX]
  4291.         add edi,[PosY]
  4292.  
  4293.         mov ebp,[Picture_SizeX]
  4294.         sub ebp,[line_width]
  4295.         cmp esi,ebp
  4296.         jl no_minimum_x_konture
  4297.         mov esi,ebp
  4298.         no_minimum_x_konture:
  4299.  
  4300.         mov ebp,[Picture_SizeY]
  4301.         sub ebp,[line_width]
  4302.         cmp edi,ebp
  4303.         jl no_minimum_y_konture
  4304.         mov edi,ebp
  4305.         no_minimum_y_konture:
  4306.  
  4307.         call calculate_line
  4308.         ;call calculate_rectangle
  4309.         mov [counter],eax
  4310.  
  4311.         ;save color pixels in ReserveArray
  4312.         mov eax,[counter]
  4313.         mov ebx,[ReserveArray]
  4314.         mov [ebx],eax
  4315.  
  4316.         mov ecx,[ebx]
  4317.         add ebx,4
  4318.  
  4319.         xor ebp,ebp
  4320.         next_color_save_konture:
  4321.         ;save color of pixel in ReserveArray
  4322.         push ecx
  4323.         and [counter2],0
  4324.         mov edi,[ebx]
  4325.         vertical_width_save_konture:
  4326.            and [counter],0
  4327.  
  4328.            horizontal_width_save_konture:
  4329.               mov eax,edi
  4330.               mov edx,[eax]
  4331.               and edx,0xffffff
  4332.               mov [ebx+4807*4+ebp],dx
  4333.               shr edx,16
  4334.               mov [ebx+4807*4+2+ebp],dl
  4335.  
  4336.            add edi,3
  4337.            add ebp,4
  4338.            inc [counter]
  4339.            cmp [counter],5
  4340.            jne horizontal_width_save_konture
  4341.  
  4342.            mov ecx,[Picture_SizeX]
  4343.            sub ecx,5
  4344.            lea ecx,[ecx+ecx*2]
  4345.            add edi,ecx
  4346.         inc [counter2]
  4347.         cmp [counter2],5
  4348.         jne vertical_width_save_konture
  4349.         pop ecx
  4350.         add ebx,4
  4351.         dec ecx
  4352.         jnz next_color_save_konture
  4353.  
  4354.         ;draw calculated pixels on work arrea
  4355.         mov ebx,[ReserveArray]
  4356.         mov ecx,[ebx]
  4357.         mov edx,[Color]
  4358.         mov esi,[Color]
  4359.         shr edx,16
  4360.         add ebx,4
  4361.         mov edi,[line_width]
  4362.         dec edi
  4363.         imul edi,25
  4364.         next_pixel_put_konture:
  4365.  
  4366.         mov eax,[ebx]
  4367.         push eax
  4368.         push ecx
  4369.         xor ebp,ebp
  4370.         and [counter2],0
  4371.  
  4372.         vertical_width_konture:
  4373.            and [counter],0
  4374.  
  4375.            horizontal_width_konture:
  4376.            xor ecx,ecx
  4377.            mov cl,byte[width_pixels+edi+ebp]
  4378.            test cl,cl
  4379.              jz no_draw_pixel_konture
  4380.               mov [eax],si
  4381.               mov [eax+2],dl
  4382.              no_draw_pixel_konture:
  4383.            add eax,3
  4384.            inc ebp
  4385.            inc [counter]
  4386.            cmp [counter],5
  4387.            jne horizontal_width_konture
  4388.  
  4389.            mov ecx,[Picture_SizeX]
  4390.            sub ecx,5
  4391.            lea ecx,[ecx+ecx*2]
  4392.            add eax,ecx
  4393.         inc [counter2]
  4394.         cmp [counter2],5
  4395.         jne vertical_width_konture
  4396.  
  4397.         pop ecx
  4398.         pop eax
  4399.         add ebx,4
  4400.         dec ecx
  4401.         jnz next_pixel_put_konture
  4402.  
  4403.         mov eax,[ScreenX]
  4404.         mov ebx,[ScreenY]
  4405.         add eax,[PosX]
  4406.         add ebx,[PosY]
  4407.         mov [used_OldX],eax
  4408.         mov [used_OldY],ebx
  4409.  
  4410.         call MovePictureToWorkScreen
  4411.  
  4412.         jmp still
  4413.  
  4414.         no_kontur_:
  4415.         ;************************Draw ellips***********************
  4416.         cmp eax,39
  4417.         jne no_ellips
  4418.  
  4419.         mov al,[Activate_instrument]
  4420.         test al,al
  4421.         jnz no_new_ellips_xy
  4422.         mov eax,[ScreenX]
  4423.         mov ebx,[ScreenY]
  4424.         add eax,[PosX]
  4425.         add ebx,[PosY]
  4426.         mov [OldX],eax
  4427.         mov [OldY],ebx
  4428.         mov [Activate_instrument],1
  4429.         mov eax,[ReserveArray]
  4430.         mov ecx,60000
  4431.         clear_array_ellips:
  4432.         mov [eax],dword 0
  4433.         add eax,4
  4434.         dec ecx
  4435.         jnz clear_array_ellips
  4436.         jmp still
  4437.         no_new_ellips_xy:
  4438.  
  4439.         ;put saved pixels
  4440.         mov ebx,[ReserveArray]
  4441.         mov eax,[ebx]
  4442.         test eax,eax
  4443.         jz no_put_line_to_screen_ellips
  4444.         mov ecx,[ebx]
  4445.         add ebx,4
  4446.         xor ebp,ebp
  4447.         next_color_put_ellips:
  4448.         ;put saved pixels in ReserveArray
  4449.         push ecx
  4450.         and [counter2],0
  4451.         mov edi,[ebx]
  4452.         push edi
  4453.         vertical_width_put_ellips:
  4454.            and [counter],0
  4455.  
  4456.            horizontal_width_put_ellips:
  4457.               mov edx,[ebx+4807*4+ebp]
  4458.               and edx,0xffffff
  4459.               mov [edi],dx
  4460.               shr edx,16
  4461.               mov [edi+2],dl
  4462.  
  4463.            add edi,3
  4464.            add ebp,4
  4465.            inc [counter]
  4466.            cmp [counter],5
  4467.            jne horizontal_width_put_ellips
  4468.  
  4469.            mov ecx,[Picture_SizeX]
  4470.            sub ecx,5
  4471.            lea ecx,[ecx+ecx*2]
  4472.            add edi,ecx
  4473.         inc [counter2]
  4474.         cmp [counter2],5
  4475.         jne vertical_width_put_ellips
  4476.         pop edi
  4477.         pop ecx
  4478.         add ebx,4
  4479.         dec ecx
  4480.         jnz next_color_put_ellips
  4481.  
  4482.         no_put_line_to_screen_ellips:
  4483.  
  4484.         mov esi,[ScreenX]
  4485.         mov edi,[ScreenY]
  4486.         add esi,[PosX]
  4487.         add edi,[PosY]
  4488.  
  4489.         sub esi,[OldX]
  4490.         jns no_sign_x_ellips
  4491.         neg esi
  4492.         shr esi,1
  4493.         neg esi
  4494.         add esi,[OldX]
  4495.         jmp no_plus_sign_x_ellips
  4496.         no_sign_x_ellips:
  4497.  
  4498.         shr esi,1
  4499.         add esi,[OldX]
  4500.         no_plus_sign_x_ellips:
  4501.  
  4502.         sub edi,[OldY]
  4503.         jns no_sign_y_ellips
  4504.         neg edi
  4505.         shr edi,1
  4506.         neg edi
  4507.         add edi,[OldY]
  4508.         jmp no_plus_sign_y_ellips
  4509.         no_sign_y_ellips:
  4510.  
  4511.         shr edi,1
  4512.         add edi,[OldY]
  4513.         no_plus_sign_y_ellips:
  4514.  
  4515.         mov [x],esi
  4516.         mov [y],edi
  4517.  
  4518.         mov esi,[ScreenX]
  4519.         mov edi,[ScreenY]
  4520.         add esi,[PosX]
  4521.         add edi,[PosY]
  4522.  
  4523.         sub esi,[OldX]
  4524.         jns no_sign_x_ellips_r
  4525.         neg esi
  4526.         no_sign_x_ellips_r:
  4527.  
  4528.         sub edi,[OldY]
  4529.         jns no_sign_y_ellips_r
  4530.         neg edi
  4531.         no_sign_y_ellips_r:
  4532.  
  4533.         cmp edi,0
  4534.         jnz no_null_a_ellips
  4535.         mov edi,1
  4536.         no_null_a_ellips:
  4537.  
  4538.         shr esi,1
  4539.         shr edi,1
  4540.         mov [a_ellips],esi
  4541.         mov [b_ellips],edi
  4542.  
  4543.         mov edi,[x]
  4544.         mov ebp,[y]
  4545.         add edi,esi
  4546.         add ebp,esi
  4547.  
  4548.         mov edx,[Picture_SizeX]
  4549.         sub edx,[line_width]
  4550.         cmp edi,edx
  4551.         jl no_limit_x_ellips
  4552.         sub edi,edx
  4553.         sub [a_ellips],edi
  4554.         no_limit_x_ellips:
  4555.  
  4556.         mov edx,[Picture_SizeY]
  4557.         sub edx,[line_width]
  4558.         cmp ebp,edx
  4559.         jl no_limit_y_ellips
  4560.         sub ebp,edx
  4561.         sub [b_ellips],ebp
  4562.         no_limit_y_ellips:
  4563.  
  4564.  
  4565.         mov edi,[x]
  4566.         mov ebp,[y]
  4567.  
  4568.         sub edi,[a_ellips]
  4569.         jns no_minimum_x_ellips
  4570.         add [a_ellips],edi
  4571.         no_minimum_x_ellips:
  4572.  
  4573.         sub ebp,[b_ellips]
  4574.         jns no_minimum_y_ellips
  4575.         add [b_ellips],ebp
  4576.         no_minimum_y_ellips:
  4577.  
  4578.         ;calculate circle
  4579.         mov ebx,[ReserveArray]
  4580.         add ebx,4
  4581.         mov eax,[PointerToPicture]
  4582.         mov ecx,[Picture_SizeX]
  4583.         mov edx,[x]
  4584.         shl edx,16
  4585.         add edx,[y]
  4586.         mov esi,[a_ellips]
  4587.         shl esi,16
  4588.         add esi,[b_ellips]
  4589.         call calculate_ellips
  4590.  
  4591.         mov [counter],eax
  4592.  
  4593.         ;save color pixels in ReserveArray
  4594.         mov eax,[counter]
  4595.         mov ebx,[ReserveArray]
  4596.         mov [ebx],eax
  4597.  
  4598.         mov ecx,[ebx]
  4599.         add ebx,4
  4600.  
  4601.         xor ebp,ebp
  4602.         next_color_save_ellips:
  4603.         ;save color of pixel in ReserveArray
  4604.         push ecx
  4605.         and [counter2],0
  4606.         mov edi,[ebx]
  4607.         vertical_width_save_ellips:
  4608.            and [counter],0
  4609.  
  4610.            horizontal_width_save_ellips:
  4611.               mov eax,edi
  4612.               mov edx,[eax]
  4613.               and edx,0xffffff
  4614.               mov [ebx+4807*4+ebp],dx
  4615.               shr edx,16
  4616.               mov [ebx+4807*4+2+ebp],dl
  4617.  
  4618.            add edi,3
  4619.            add ebp,4
  4620.            inc [counter]
  4621.            cmp [counter],5
  4622.            jne horizontal_width_save_ellips
  4623.  
  4624.            mov ecx,[Picture_SizeX]
  4625.            sub ecx,5
  4626.            lea ecx,[ecx+ecx*2]
  4627.            add edi,ecx
  4628.         inc [counter2]
  4629.         cmp [counter2],5
  4630.         jne vertical_width_save_ellips
  4631.         pop ecx
  4632.         add ebx,4
  4633.         dec ecx
  4634.         jnz next_color_save_ellips
  4635.  
  4636.         ;draw calculated pixels on work arrea
  4637.         mov ebx,[ReserveArray]
  4638.         mov ecx,[ebx]
  4639.         mov edx,[Color]
  4640.         mov esi,[Color]
  4641.         shr edx,16
  4642.         add ebx,4
  4643.         mov edi,[line_width]
  4644.         dec edi
  4645.         imul edi,25
  4646.         next_pixel_put_ellips:
  4647.  
  4648.         mov eax,[ebx]
  4649.         push eax
  4650.         push ecx
  4651.         xor ebp,ebp
  4652.         and [counter2],0
  4653.  
  4654.         vertical_width_ellips:
  4655.            and [counter],0
  4656.  
  4657.            horizontal_width_ellips:
  4658.            xor ecx,ecx
  4659.            mov cl,byte[width_pixels+edi+ebp]
  4660.            test cl,cl
  4661.              jz no_draw_pixel_ellips
  4662.               mov [eax],si
  4663.               mov [eax+2],dl
  4664.              no_draw_pixel_ellips:
  4665.            add eax,3
  4666.            inc ebp
  4667.            inc [counter]
  4668.            cmp [counter],5
  4669.            jne horizontal_width_ellips
  4670.  
  4671.            mov ecx,[Picture_SizeX]
  4672.            sub ecx,5
  4673.            lea ecx,[ecx+ecx*2]
  4674.            add eax,ecx
  4675.         inc [counter2]
  4676.         cmp [counter2],5
  4677.         jne vertical_width_ellips
  4678.  
  4679.         pop ecx
  4680.         pop eax
  4681.         add ebx,4
  4682.         dec ecx
  4683.         jnz next_pixel_put_ellips
  4684.  
  4685.         call MovePictureToWorkScreen
  4686.         jmp still
  4687.         no_ellips:
  4688.  
  4689.         ;*************************Line width 1*********************
  4690.         cmp eax,41
  4691.         jne no_line_width_1
  4692.         mov [line_width],1
  4693.         jmp still
  4694.         no_line_width_1:
  4695.         ;*************************Line width 2*********************
  4696.         cmp eax,42
  4697.         jne no_line_width_2
  4698.         mov [line_width],2
  4699.         jmp still
  4700.         no_line_width_2:
  4701.         ;*************************Line width 3*********************
  4702.         cmp eax,43
  4703.         jne no_line_width_3
  4704.         mov [line_width],3
  4705.         jmp still
  4706.         no_line_width_3:
  4707.         ;*************************Line width 4*********************
  4708.         cmp eax,44
  4709.         jne no_line_width_4
  4710.         mov [line_width],4
  4711.         jmp still
  4712.         no_line_width_4:
  4713.         ;*************************Line width 5*********************
  4714.         cmp eax,45
  4715.         jne no_line_width_5
  4716.         mov [line_width],5
  4717.         jmp still
  4718.         no_line_width_5:
  4719.  
  4720.         jmp still
  4721.         ret
  4722. ;-----------------------------------------------------------
  4723. ;-----------calculate cordinats on work picture--------------
  4724. ;-----------------------------------------------------------
  4725. GetScreenCordinats:
  4726.  
  4727.         mov eax,[MouseX]
  4728.         mov ebx,[MouseY]
  4729.         sub eax,9
  4730.         sub ebx,83
  4731.  
  4732.         mov ecx,[k]
  4733.         cdq
  4734.         idiv ecx
  4735.         mov [ScreenX],eax
  4736.         mov eax,ebx
  4737.         cdq
  4738.         idiv ecx
  4739.         mov [ScreenY],eax
  4740.  
  4741.         ret
  4742. ;-----------------------------------------------------------
  4743. ;------------------SaveFonForSprite-------------------------
  4744. ;-----------------------------------------------------------
  4745. SaveFonForSprite:
  4746.  
  4747.         mov edi,[PointerToSpriteBufer]
  4748.         mov ecx,[SpriteSizeX]
  4749.         mov edx,[Picture_SizeX]
  4750.         sub edx,[SpriteSizeX]
  4751.         mov esi,[SpriteCoordinatY]
  4752.         imul esi,[Picture_SizeX]
  4753.         add esi,[SpriteCoordinatX]
  4754.         lea edx,[edx+edx*2]
  4755.         lea esi,[esi+esi*2]
  4756.         add esi,[PointerToPicture]
  4757.         mov ebx,[SpriteSizeY]
  4758.         mov [counter],ecx
  4759.  
  4760.         next_line_sprite_save:
  4761.         mov ecx,[counter]
  4762.  
  4763.         next_pixel_sprite_save:
  4764.         mov eax,[esi]
  4765.         and eax,0xffffff
  4766.         mov [edi],ax
  4767.         shr eax,16
  4768.         mov [edi+2],al
  4769.         add esi,3
  4770.         add edi,3
  4771.         dec ecx
  4772.         jnz next_pixel_sprite_save
  4773.  
  4774.         add esi,edx
  4775.         dec ebx
  4776.         jnz next_line_sprite_save
  4777.  
  4778.         ret
  4779. ;-----------------------------------------------------------
  4780. ;-------------------PutFonForSprite-------------------------
  4781. ;-----------------------------------------------------------
  4782. PutFonForSprite:
  4783.  
  4784.         mov esi,[PointerToSpriteBufer]
  4785.         mov ecx,[SpriteSizeX]
  4786.         mov edx,[Picture_SizeX]
  4787.         sub edx,[SpriteSizeX]
  4788.         mov edi,[SpriteOldCoordinatY]
  4789.         imul edi,[Picture_SizeX]
  4790.         add edi,[SpriteOldCoordinatX]
  4791.         lea edx,[edx+edx*2]
  4792.         lea edi,[edi+edi*2]
  4793.         add edi,[PointerToPicture]
  4794.         mov ebx,[SpriteSizeY]
  4795.         mov [counter],ecx
  4796.  
  4797.         next_line_sprite_put:
  4798.         mov ecx,[counter]
  4799.  
  4800.         next_pixel_sprite_put:
  4801.         mov eax,[esi]
  4802.         and eax,0xffffff
  4803.         mov [edi],ax
  4804.         shr eax,16
  4805.         mov [edi+2],al
  4806.         add esi,3
  4807.         add edi,3
  4808.         dec ecx
  4809.         jnz next_pixel_sprite_put
  4810.  
  4811.         add edi,edx
  4812.         dec ebx
  4813.         jnz next_line_sprite_put
  4814.  
  4815.         ret
  4816. ;-----------------------------------------------------------
  4817. ;------------------DrawFonForSprite-------------------------
  4818. ;-----------------------------------------------------------
  4819. DrawSprite:
  4820.  
  4821.         mov esi,[PointerToEditBufer]
  4822.         mov ecx,[SpriteSizeX]
  4823.         mov edx,[Picture_SizeX]
  4824.         sub edx,[SpriteSizeX]
  4825.         mov edi,[SpriteCoordinatY]
  4826.         imul edi,[Picture_SizeX]
  4827.         add edi,[SpriteCoordinatX]
  4828.         lea edx,[edx+edx*2]
  4829.         lea edi,[edi+edi*2]
  4830.         add edi,[PointerToPicture]
  4831.         mov ebx,[SpriteSizeY]
  4832.         mov [counter],ecx
  4833.  
  4834.         next_line_sprite_draw:
  4835.         mov ecx,[counter]
  4836.  
  4837.         next_pixel_sprite_draw:
  4838.         mov eax,[esi]
  4839.         and eax,0xffffff
  4840.         mov [edi],ax
  4841.         shr eax,16
  4842.         mov [edi+2],al
  4843.         add esi,3
  4844.         add edi,3
  4845.         dec ecx
  4846.         jnz next_pixel_sprite_draw
  4847.  
  4848.         add edi,edx
  4849.         dec ebx
  4850.         jnz next_line_sprite_draw
  4851.  
  4852.         ret
  4853. ;-----------------------------------------------------------
  4854. ;-------find simvole in string------------------------------
  4855. ;-----------------------------------------------------------
  4856. find_symvol:
  4857.         ;eax,string
  4858.         ;ebx,symvol
  4859.         mov esi,eax
  4860.         next_symvol:
  4861.         xor ecx,ecx
  4862.         mov cl,[eax]
  4863.         cmp cl,bl
  4864.         je symvol_fined
  4865.         inc eax
  4866.         jmp next_symvol
  4867.  
  4868.         symvol_fined:
  4869.         sub eax,esi
  4870.         ret
  4871. ;-----------------------------------------------------------
  4872. ;--------load file in memory--------------------------------
  4873. ;-----------------------------------------------------------
  4874. load_file:
  4875.          mov eax,58
  4876.          mov ebx,file_info
  4877.          int 0x40
  4878.          test eax,eax
  4879.          jnz no_open_
  4880.          mov [length_file],ebx
  4881.          shr ebx,9
  4882.          inc ebx
  4883.          mov [file_info+8],ebx
  4884.          mov eax,58
  4885.          mov ebx,file_info
  4886.          int 0x40
  4887.          no_open_:
  4888.          ret
  4889. ;-----------------------------------------------------------
  4890. ;---load icons  in memory and draw icons on panel-----------
  4891. ;-----------------------------------------------------------
  4892. load_icons:
  4893.          mov esi,panel_picture
  4894.          mov edi,[ScreenPointer]
  4895.          mov eax,edi
  4896.          add edi,(1200*1000*3)
  4897.          call ReadGIF
  4898.  
  4899.          ret
  4900.  
  4901. draw_icons:
  4902.          mov [Icon_X],10
  4903.          mov [Icon_Y],20+15+4
  4904.          and [counter],0
  4905.    next_icon:
  4906.          mov eax,8
  4907.          mov ebx,[Icon_X]
  4908.          mov ecx,[Icon_Y]
  4909.          dec ebx
  4910.          dec ecx
  4911.          shl ebx,16
  4912.          shl ecx,16
  4913.          add ebx,20
  4914.          add ecx,20
  4915.          mov edx,[counter]
  4916.          add edx,10
  4917.          add edx,1000000000000000000000000000000b
  4918.          int 0x40
  4919.  
  4920.  
  4921.          mov edx,[Icon_X]
  4922.          shl edx,16
  4923.          add edx,[Icon_Y]
  4924.          mov ebx,[counter]
  4925.          imul ebx,20*20*3
  4926.          add ebx,[ScreenPointer]
  4927.          add ebx,(1200*1000*3)+12
  4928.          mov eax,7
  4929.          mov ecx,20*65536+20
  4930.          int 0x40
  4931.  
  4932.          add [Icon_X],25
  4933.          cmp [Icon_X],10+25*15
  4934.          jl no_next_line_icons
  4935.          mov [Icon_X],10
  4936.          mov [Icon_Y],20+15+4+22
  4937.          no_next_line_icons:
  4938.          inc [counter]
  4939.          cmp [counter],30
  4940.          jl next_icon
  4941.  
  4942.          and [counter],0
  4943.          mov [Icon_X],475
  4944.          mov [Icon_Y],20+15+7
  4945.          next_button_line:
  4946.  
  4947.          mov eax,8
  4948.          mov ebx,[Icon_X]
  4949.          mov ecx,[Icon_Y]
  4950.          dec ebx
  4951.          dec ecx
  4952.          shl ebx,16
  4953.          shl ecx,16
  4954.          add ebx,10
  4955.          add ecx,35
  4956.          mov edx,[counter]
  4957.          add edx,40
  4958.          add edx,1000000000000000000000000000000b
  4959.          int 0x40
  4960.  
  4961.          mov eax,13
  4962.          mov ebx,[Icon_X]
  4963.          mov ecx,[Icon_Y]
  4964.          add ebx,4
  4965.          shl ebx,16
  4966.          shl ecx,16
  4967.          add ebx,[counter]
  4968.          add ecx,35
  4969.          ;xor edx,edx
  4970.          mov edx,0xb1d8ff
  4971.          int 0x40
  4972.  
  4973.          add [Icon_X],15
  4974.          inc [counter]
  4975.          cmp [counter],5
  4976.          jle next_button_line
  4977.          ret
  4978. ;-----------------------------------------------------------
  4979. ;calculate position work screen on a picture
  4980. ;-----------------------------------------------------------
  4981. CalculatePositionScreen:
  4982.  
  4983.          mov eax,[Picture_SizeX]
  4984.          mov ebx,[Picture_SizeY]
  4985.          mov ecx,[CounterX]
  4986.          mov edx,[CounterY]
  4987.          sub eax,ecx
  4988.          sub ebx,edx
  4989.  
  4990.          cmp [PosX],eax
  4991.          jle no_limit_screen_x
  4992.          mov [PosX],eax
  4993.          no_limit_screen_x:
  4994.  
  4995.          cmp [PosY],ebx
  4996.          jle no_limit_screen_y
  4997.          mov [PosY],ebx
  4998.          no_limit_screen_y:
  4999.  
  5000.          cmp [PosX],0
  5001.          jns no_minimum_screen_x
  5002.          mov [PosX],0
  5003.          no_minimum_screen_x:
  5004.  
  5005.          cmp [PosY],0
  5006.          jns no_minimum_screen_y
  5007.          mov [PosY],0
  5008.          no_minimum_screen_y:
  5009.  
  5010.          ret
  5011. ;-----------------------------------------------------------
  5012. ;-------analizing picture to palette------------------------
  5013. ;-----------------------------------------------------------
  5014. analizing_picture_to_palette:
  5015.  
  5016.          mov eax,[Picture_SizeX]
  5017.          mov ebx,[Picture_SizeY]
  5018.          imul eax,ebx
  5019.          mov ecx,eax
  5020.          mov edx,[PointerToPicture]
  5021.          mov esi,1 ;counter colors in palette
  5022.  
  5023.          ;put firs color of picture how one color in palette
  5024.          mov ebp,[PointerToPalette]
  5025.          mov eax,[edx]
  5026.          and eax,0xffffff
  5027.          mov [ebp],eax
  5028.  
  5029.          analizing_to_palette:
  5030.          mov eax,[edx]
  5031.          and eax,0xffffff
  5032.  
  5033.          mov edi,esi
  5034.          mov ebp,[PointerToPalette]
  5035.          next_color_in_palette:
  5036.          mov ebx,[ebp]
  5037.          and ebx,0xffffff
  5038.          cmp ebx,eax         ;this is color have in palette
  5039.          je exit_loop_palette
  5040.          add ebp,4
  5041.          dec edi
  5042.          jnz next_color_in_palette
  5043.  
  5044.          inc esi
  5045.          cmp esi,256 ;256 colors
  5046.          ja more_than_256_colors
  5047.          mov ebp,[PointerToPalette]
  5048.          mov ebx,esi
  5049.          dec ebx
  5050.          shl ebx,2
  5051.          add ebp,ebx
  5052.          mov [ebp],ax
  5053.          shr eax,16
  5054.          mov [ebp+2],al
  5055.  
  5056.          exit_loop_palette:
  5057.  
  5058.          add edx,3
  5059.          dec ecx
  5060.          jnz analizing_to_palette
  5061.  
  5062.  
  5063.          more_than_256_colors:
  5064.          mov eax,esi
  5065.          ret
  5066. ;---------------------------------------------------------
  5067. ;---------------SOUND of EVENTS---------------------------
  5068. ;---------------------------------------------------------
  5069. sound:
  5070.           mov eax,55
  5071.           mov ebx,eax
  5072.           int 0x40
  5073.           ret
  5074. ;----------------------------------------------------------
  5075. ;-------------file info structure--------------------------
  5076. ;----------------------------------------------------------
  5077. file_info:
  5078.                      dd 0
  5079.                      dd 0
  5080.                      dd 1
  5081.                      dd 0x19000+0x10000
  5082.                      dd 0x19000
  5083.  
  5084.                     file_path:
  5085.                      times 256 db 0
  5086. ;-----------------------------------------------------------
  5087. ;------------variables and data of program------------------
  5088. ;-----------------------------------------------------------
  5089. length_file          dd 0
  5090.  
  5091. time                 dd 0
  5092. sound_havent_memory  db 150,64,0
  5093. PosX                 dd 0
  5094. PosY                 dd 0
  5095. ScreenPointer        dd 0
  5096. PointerToPicture     dd 0
  5097. PointerToCopyPicture dd 0
  5098. PointerToCopyPicture2 dd 0
  5099. PointerToEditBufer   dd 0
  5100. PointerToSpriteBufer dd 0
  5101. PointerToPalette     dd 0
  5102. Color                dd 0
  5103. Number_Brush         dd 0
  5104. Brush_SizeX          dd 0
  5105. Brush_SizeY          dd 0
  5106. Current_instrument   dd 0
  5107. Activate_instrument  db 0
  5108. SColor               dd 0
  5109. OldX                 dd 0
  5110. OldY                 dd 0
  5111.  
  5112. MouseX               dd 0
  5113. MouseY               dd 0
  5114. Window_SizeX         dd 0
  5115. Window_SizeY         dd 0
  5116. Window_CordinatX     dd 0
  5117. Window_CordinatY     dd 0
  5118. Picture_SizeX        dd 0
  5119. Picture_SizeY        dd 0
  5120. ScreenX              dd 0
  5121. ScreenY              dd 0
  5122. WorkScreen_SizeX     dd 0
  5123. WorkScreen_SizeY     dd 0
  5124. MaxWorkScreen_SizeX  dd 0
  5125. MaxWorkScreen_SizeY  dd 0
  5126. k                    dd 0
  5127. IPC_table            rd 256
  5128. ReserveArray         dd 0
  5129. register             dd 0
  5130. CounterX             dd 0
  5131. CounterY             dd 0
  5132. OffsetYPicture       dd 0
  5133. OffsetYWorkScreen    dd 0
  5134. OffsetYBigPixel      dd 0
  5135.  
  5136. Icon_X               dd 0
  5137. Icon_Y               dd 0
  5138. counter              dd 0
  5139. counter2             dd 0
  5140. Icon_text_x          dd 0
  5141. Icon_text_y          dd 0
  5142. Panel_flag           db 0
  5143. counter_menu         dd 0
  5144. menu_coordinat_x     dd 0
  5145. menu_size_x          dd 0
  5146. menu_counter         dd 0
  5147. counter_11           dd 0
  5148. number_panel         dd 0
  5149. number_menu          dd 0
  5150.  
  5151. Scroll1CoordinatX    dd 0
  5152. Scroll1CoordinatY    dd 0
  5153. Scroll1MaxSizeX      dd 0
  5154. Scroll1MaxSizeY      dd 0
  5155. Scroll1SizeX         dd 0
  5156. Scroll1FreeX         dd 0
  5157.  
  5158. Scroll2CoordinatX    dd 0
  5159. Scroll2CoordinatY    dd 0
  5160. Scroll2MaxSizeX      dd 0
  5161. Scroll2MaxSizeY      dd 0
  5162. Scroll2SizeY         dd 0
  5163. Scroll2FreeY         dd 0
  5164.  
  5165. extended_memory      dd 0
  5166. type                 dw 0
  5167. x                    dd 0
  5168. y                    dd 0
  5169. save_flag            db 0
  5170. exit_from_work_arrea db 0
  5171.  
  5172. Radius               dd 0
  5173. Dx_                  dd 0
  5174. Dy_                  dd 0
  5175. line_width           dd 0
  5176. lastik_is_active     db 0
  5177. a_ellips             dd 0
  5178. b_ellips             dd 0
  5179. instrument_used      db 0
  5180. used_OldX            dd 0
  5181. used_OldY            dd 0
  5182. rectangular_shade_x  dd 0
  5183. rectangular_shade_y  dd 0
  5184. crossing_old_x       dd 0
  5185. crossing_old_y       dd 0
  5186. crossing             dd 0
  5187. finishing_crossing   dd 0
  5188. number_undo          dd 0
  5189. DrawSprite_flag      db 0
  5190. Paste_flag           db 0
  5191. SpriteSizeX          dd 0
  5192. SpriteSizeY          dd 0
  5193. SpriteCoordinatX     dd 0
  5194. SpriteCoordinatY     dd 0
  5195. SpriteOldCoordinatX  dd 0
  5196. SpriteOldCoordinatY  dd 0
  5197. ;**********************************************************
  5198. ;------------------TEXT DATA-------------------------------
  5199. ;**********************************************************
  5200. name_of_program      db 'Graphics editor <<ANIMAGE>> V1.00 '
  5201. mouse_pos_x          db 'X='
  5202. mouse_pos_y          db 'Y='
  5203. new_text1            db 'PICTURE SIZE X'
  5204. new_text2            db 'PICTURE SIZE Y'
  5205. ok_text              db 'OK'
  5206.  
  5207. panel_text           dd 15,24,4
  5208.                      db 'FILE'
  5209.                      dd 95,24,4
  5210.                      db 'EDIT'
  5211.                      dd 175,24,11
  5212.                      db 'INSTRUMENTS'
  5213.                      dd 255,24,7
  5214.                      db 'PALETTE'
  5215.                      dd 335,24,7
  5216.                      db 'FILTERS'
  5217.                      dd 415,24,9
  5218.                      db 'ANIMATION'
  5219.                      dd 495,24,4
  5220.                      db 'HELP'
  5221. menu_text_en:
  5222.                      dd menu_text7
  5223.                      dd menu_text6
  5224.                      dd menu_text5
  5225.                      dd menu_text4
  5226.                      dd menu_text3
  5227.                      dd menu_text2
  5228.                      dd menu_text1
  5229.                      dd 0,0,0
  5230.  
  5231. menu_rectangles      dd 485,36,100,100
  5232.                      dd 405,36,100,100
  5233.                      dd 325,36,100,100
  5234.                      dd 245,36,100,100
  5235.                      dd 165,36,100,100
  5236.                      dd 85,36,100,100;20
  5237.                      dd 5,36,100,100
  5238.  
  5239.  
  5240. menu_text1:
  5241.                      dd 15,45,3
  5242.                      db 'NEW'
  5243.                      dd 15,65,4
  5244.                      db 'OPEN'
  5245.                      dd 15,85,4
  5246.                      db 'SAVE'
  5247.                      dd 15,105,7
  5248.                      db 'SAVE AS'
  5249.                      dd 15,125,4
  5250.                      db 'EXIT'
  5251.  
  5252. menu_text2:
  5253.                      dd 95,45,4
  5254.                      db 'UNDO'
  5255.                      dd 95,65,4
  5256.                      db 'COPY'
  5257.                      dd 95,85,5
  5258.                      db 'PASTE'
  5259.                      dd 95,105,3
  5260.                      db 'CUT'
  5261.                      dd 95,125,13
  5262.                      db 'CLEARE SCREEN'
  5263.                      ;dd 95,145,12
  5264.                      ;db 'ALLOCATE ALL'
  5265. menu_text3:
  5266.                      dd 175,45,3
  5267.                      db 0,0,0;'PENCIL'
  5268.                      dd 175,65,3
  5269.                      db 0,0,0;'BRUSHES'
  5270.                      dd 175,85,3
  5271.                      db 0,0,0;'COLORS'
  5272.                      dd 175,105,3
  5273.                      db 0,0,0;'PIPETKA'
  5274. menu_text4:
  5275.                      dd 255,45,1
  5276.                      db 0,0,0
  5277. menu_text5:
  5278.                      dd 335,45,1
  5279.                      db 0,0,0
  5280. menu_text6:
  5281.                      dd 415,45,1
  5282.                      db 0,0,0
  5283. menu_text7:
  5284.                      dd 495,45,1
  5285.                      db 0,0,0,0
  5286.  
  5287.  
  5288. menu_counters:
  5289.                      dd 1,1,1,1,1,5,5
  5290.  
  5291. ;----------------------------------------------------------
  5292. palitra:                 ;three bytes for one color
  5293. db 0,0,0,0,0,0,128,0
  5294. db 0,128,0,0,0,128,128,0
  5295. db 128,0,0,0,128,0,128,0
  5296. db 128,128,0,0,128,128,128,0
  5297. db 192,220,192,0,240,202,166,0
  5298. db 170,63,42,0,255,63,42,0
  5299. db 0,95,42,0,85,95,42,0
  5300. db 170,95,42,0,255,95,42,0
  5301. db 0,127,42,0,85,127,42,0
  5302. db 170,127,42,0,255,127,42,0
  5303. db 0,159,42,0,85,159,42,0
  5304. db 170,159,42,0,255,159,42,0
  5305. db 0,191,42,0,85,191,42,0
  5306. db 170,191,42,0,255,191,42,0
  5307. db 0,223,42,0,85,223,42,0
  5308. db 170,223,42,0,255,223,42,0
  5309. db 0,255,42,0,85,255,42,0
  5310. db 170,255,42,0,255,255,42,0
  5311. db 0,0,85,0,85,0,85,0
  5312. db 170,0,85,0,255,0,85,0
  5313. db 0,31,85,0,85,31,85,0
  5314. db 170,31,85,0,255,31,85,0
  5315. db 0,63,85,0,85,63,85,0
  5316. db 170,63,85,0,255,63,85,0
  5317. db 0,95,85,0,85,95,85,0
  5318. db 170,95,85,0,255,95,85,0
  5319. db 0,127,85,0,85,127,85,0
  5320. db 170,127,85,0,255,127,85,0
  5321. db 0,159,85,0,85,159,85,0
  5322. db 170,159,85,0,255,159,85,0
  5323. db 0,191,85,0,85,191,85,0
  5324. db 170,191,85,0,255,191,85,0
  5325. db 0,223,85,0,85,223,85,0
  5326. db 170,223,85,0,255,223,85,0
  5327. db 0,255,85,0,85,255,85,0
  5328. db 170,255,85,0,255,255,85,0
  5329. db 0,0,127,0,85,0,127,0
  5330. db 170,0,127,0,255,0,127,0
  5331. db 0,31,127,0,85,31,127,0
  5332. db 170,31,127,0,255,31,127,0
  5333. db 0,63,127,0,85,63,127,0
  5334. db 170,63,127,0,255,63,127,0
  5335. db 0,95,127,0,85,95,127,0
  5336. db 170,95,127,0,255,95,127,0
  5337. db 0,127,127,0,85,127,127,0
  5338. db 170,127,127,0,255,127,127,0
  5339. db 0,159,127,0,85,159,127,0
  5340. db 170,159,127,0,255,159,127,0
  5341. db 0,191,127,0,85,191,127,0
  5342. db 170,191,127,0,255,191,127,0
  5343. db 0,223,127,0,85,223,127,0
  5344. db 170,223,127,0,255,223,127,0
  5345. db 0,255,127,0,85,255,127,0
  5346. db 170,255,127,0,255,255,127,0
  5347. db 0,0,170,0,85,0,170,0
  5348. db 170,0,170,0,255,0,170,0
  5349. db 0,31,170,0,85,31,170,0
  5350. db 170,31,170,0,255,31,170,0
  5351. db 0,63,170,0,85,63,170,0
  5352. db 170,63,170,0,255,63,170,0
  5353. db 0,95,170,0,85,95,170,0
  5354. db 170,95,170,0,255,95,170,0
  5355. db 0,127,170,0,85,127,170,0
  5356. db 170,127,170,0,255,127,170,0
  5357. db 0,159,170,0,85,159,170,0
  5358. db 170,159,170,0,255,159,170,0
  5359. db 0,191,170,0,85,191,170,0
  5360. db 170,191,170,0,255,191,170,0
  5361. db 0,223,170,0,85,223,170,0
  5362. db 170,223,170,0,255,223,170,0
  5363. db 0,255,170,0,85,255,170,0
  5364. db 170,255,170,0,255,255,170,0
  5365. db 0,0,212,0,85,0,212,0
  5366. db 170,0,212,0,255,0,212,0
  5367. db 0,31,212,0,85,31,212,0
  5368. db 170,31,212,0,255,31,212,0
  5369. db 0,63,212,0,85,63,212,0
  5370. db 170,63,212,0,255,63,212,0
  5371. db 0,95,212,0,85,95,212,0
  5372. db 170,95,212,0,255,95,212,0
  5373. db 0,127,212,0,85,127,212,0
  5374. db 170,127,212,0,255,127,212,0
  5375. db 0,159,212,0,85,159,212,0
  5376. db 170,159,212,0,255,159,212,0
  5377. db 0,191,212,0,85,191,212,0
  5378. db 170,191,212,0,255,191,212,0
  5379. db 0,223,212,0,85,223,212,0
  5380. db 170,223,212,0,255,223,212,0
  5381. db 0,255,212,0,85,255,212,0
  5382. db 170,255,212,0,255,255,212,0
  5383. db 85,0,255,0,170,0,255,0
  5384. db 0,31,255,0,85,31,255,0
  5385. db 170,31,255,0,255,31,255,0
  5386. db 0,63,255,0,85,63,255,0
  5387. db 170,63,255,0,255,63,255,0
  5388. db 0,95,255,0,85,95,255,0
  5389. db 170,95,255,0,255,95,255,0
  5390. db 0,127,255,0,85,127,255,0
  5391. db 170,127,255,0,255,127,255,0
  5392. db 0,159,255,0,85,159,255,0
  5393. db 170,159,255,0,255,159,255,0
  5394. db 0,191,255,0,85,191,255,0
  5395. db 170,191,255,0,255,191,255,0
  5396. db 0,223,255,0,85,223,255,0
  5397. db 170,223,255,0,255,223,255,0
  5398. db 85,255,255,0,170,255,255,0
  5399. db 255,204,204,0,255,204,255,0
  5400. db 255,255,51,0,255,255,102,0
  5401. db 255,255,153,0,255,255,204,0
  5402. db 0,127,0,0,85,127,0,0
  5403. db 170,127,0,0,255,127,0,0
  5404. db 0,159,0,0,85,159,0,0
  5405. db 170,159,0,0,255,159,0,0
  5406. db 0,191,0,0,85,191,0,0
  5407. db 170,191,0,0,255,191,0,0
  5408. db 0,223,0,0,85,223,0,0
  5409. db 170,223,0,0,255,223,0,0
  5410. db 85,255,0,0,170,255,0,0
  5411. db 0,0,42,0,85,0,42,0
  5412. db 170,0,42,0,255,0,42,0
  5413. db 0,31,42,0,85,31,42,0
  5414. db 170,31,42,0,255,31,42,0
  5415. db 0,63,42,0,170,174,160,0
  5416. db 240,251,255,0,164,160,160,0
  5417. db 128,128,128,0,0,0,255,0
  5418. db 0,255,0,0,0,255,255,0
  5419. db 255,0,0,0,255,0,255,0
  5420. db 255,255,0,0xff,0xff,0xff,0xff
  5421. ;----------------------------------------------------------
  5422. ;--------------------COLOR BRUSHES-------------------------
  5423. ;----------------------------------------------------------
  5424. Brush_color:
  5425. ;
  5426. db 0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5427. db 1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5428. db 1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5429. db 0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5430. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5431. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5432. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5433. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5434. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5435. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5436. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5437. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5438. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5439. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5440. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5441. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5442. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5443. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5444. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5445. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5446.  
  5447. ;
  5448. db 0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5449. db 0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5450. db 1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5451. db 1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5452. db 0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5453. db 0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5454. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5455. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5456. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5457. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5458. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5459. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5460. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5461. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5462. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5463. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5464. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5465. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5466. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5467. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5468. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5469.  
  5470. ;
  5471. db 0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5472. db 0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
  5473. db 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0
  5474. db 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0
  5475. db 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0
  5476. db 0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
  5477. db 0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5478. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5479. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5480. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5481. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5482. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5483. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5484. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5485. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5486. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5487. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5488. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5489. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5490. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5491.  
  5492. ;
  5493. db 0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0
  5494. db 0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0
  5495. db 0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0
  5496. db 0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
  5497. db 0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
  5498. db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0
  5499. db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0
  5500. db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0
  5501. db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0
  5502. db 0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
  5503. db 0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
  5504. db 0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0
  5505. db 0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0
  5506. db 0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0
  5507. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5508. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5509. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5510. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5511. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5512. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5513.  
  5514. ;
  5515. db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5516. db 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5517. db 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5518. db 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5519. db 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5520. db 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5521. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5522. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5523. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5524. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5525. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5526. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5527. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5528. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5529. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5530. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5531. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5532. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5533. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5534. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5535.  
  5536. ;
  5537. db 0
  5538. ;------------------------------------------
  5539. Spray_color:
  5540. ;
  5541. db 0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0
  5542. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5543. db 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5544. db 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
  5545. db 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5546. db 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5547. db 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0
  5548. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5549. db 0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0
  5550. db 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5551. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5552. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5553. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5554. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5555. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5556. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5557. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5558. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5559. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5560. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5561. ;
  5562. db 0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0
  5563. db 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0
  5564. db 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5565. db 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0
  5566. db 0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0
  5567. db 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5568. db 0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0
  5569. db 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5570. db 0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0
  5571. db 0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0
  5572. db 0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0
  5573. db 0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0
  5574. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5575. db 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0
  5576. db 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0
  5577. db 0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0
  5578. db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0
  5579. db 0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0
  5580. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5581. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5582. ;
  5583. db 0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0
  5584. db 0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0
  5585. db 0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0
  5586. db 0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
  5587. db 0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
  5588. db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0
  5589. db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0
  5590. db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0
  5591. db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0
  5592. db 0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
  5593. db 0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0
  5594. db 0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0
  5595. db 0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0
  5596. db 0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0
  5597. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5598. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5599. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5600. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5601. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5602. db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5603.  
  5604. ;------------------------------------------
  5605. width_pixels:
  5606.  
  5607. db 1,0,0,0,0
  5608. db 0,0,0,0,0
  5609. db 0,0,0,0,0
  5610. db 0,0,0,0,0
  5611. db 0,0,0,0,0
  5612. ;
  5613. db 1,1,0,0,0
  5614. db 1,1,0,0,0
  5615. db 0,0,0,0,0
  5616. db 0,0,0,0,0
  5617. db 0,0,0,0,0
  5618. ;
  5619. db 0,1,0,0,0
  5620. db 1,1,1,0,0
  5621. db 0,1,0,0,0
  5622. db 0,0,0,0,0
  5623. db 0,0,0,0,0
  5624. ;
  5625. db 0,1,1,0,0
  5626. db 1,1,1,1,0
  5627. db 1,1,1,1,0
  5628. db 0,1,1,0,0
  5629. db 0,0,0,0,0
  5630. ;
  5631. db 0,0,1,0,0
  5632. db 0,1,1,1,0
  5633. db 1,1,1,1,1
  5634. db 0,1,1,1,0
  5635. db 0,0,1,0,0
  5636. ;-----------------------------------------
  5637. width_pixels_rectangle:
  5638.  
  5639. db 1,0,0,0,0
  5640. db 0,0,0,0,0
  5641. db 0,0,0,0,0
  5642. db 0,0,0,0,0
  5643. db 0,0,0,0,0
  5644. ;
  5645. db 1,1,0,0,0
  5646. db 1,1,0,0,0
  5647. db 0,0,0,0,0
  5648. db 0,0,0,0,0
  5649. db 0,0,0,0,0
  5650. ;
  5651. db 1,1,1,0,0
  5652. db 1,1,1,0,0
  5653. db 1,1,1,0,0
  5654. db 0,0,0,0,0
  5655. db 0,0,0,0,0
  5656. ;
  5657. db 1,1,1,1,0
  5658. db 1,1,1,1,0
  5659. db 1,1,1,1,0
  5660. db 1,1,1,1,0
  5661. db 0,0,0,0,0
  5662. ;
  5663. db 1,1,1,1,1
  5664. db 1,1,1,1,1
  5665. db 1,1,1,1,1
  5666. db 1,1,1,1,1
  5667. db 1,1,1,1,1
  5668.  
  5669. ;----------------------------------------------------------
  5670. ;-------------------ICON"S picture-------------------------
  5671. ;----------------------------------------------------------
  5672. panel_picture:
  5673. file 'worktab1.gif'
  5674.  
  5675. ;----------------------------------------------------------
  5676.  
  5677. I_END:
  5678.  
  5679.  
  5680.