Subversion Repositories Kolibri OS

Rev

Rev 4814 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. ICON_STRIP      equ '/rd/1/iconstrp.png'
  2. ICON_INI        equ '/rd/1/settings/icon.ini'
  3. ICON_SIZE       equ 68    ;à §¬¥à ®¡« á⨠¤«ï ¨ª®­ª¨ á ­ ¤¯¨áìî
  4. IMG_SIZE        equ 32    ;à §¬¥à ¨ª®­®ª
  5. TEXT_BOTTOM_Y   equ 15    ;®âáâ㯠¯® Y ⥪áâ  ®â ­¨§  ¨ª®­ª¨
  6. IMAGE_TOP_Y     equ 10    ;>=1 Š®®à¤¨­ â  Y ¨ª®­ª¨ ¢ ®¡« á⨠¤«ï ¤ ­­®© ¨ª®­ª¨
  7. ALIGN_SIZE      equ 68    ;à §¬¥à á¥âª¨ ¢ëà ¢­¨¢ ­¨ï
  8. NAME_LENGTH     equ 11   ;¤«¨­  ¨¬¥­¨ ¨ª®­ª¨
  9. MIN_NO_MOVING   equ 8    ;ç¥à¥§ á⮫쪮 ¯¨ªá¥«¥© ᤢ¨£  ¬ëè¨ ­ ç¨­ ¥âáï â áª ­¨¥ ¨ª®­ª¨
  10.  
  11.                      ;--------¤«ï ¤¨ «®£  ᮧ¤ ­¨ï/। ªâ¨à®¢ ­¨ï
  12. ICONSX          equ 20
  13. ICONSY          equ 80
  14. ICONS_DRAW_COUNTW equ 10  ;ª®«¨ç¥á⢮ ¨ª®­®ª ¢ è¨à¨­ã
  15. ICONS_DRAW_COUNTH equ 2   ;ª®«¨ç¥á⢮ ¨ª®­®ª ¢ ¢ëá®âã
  16. SPCW            equ 3     ;¯à®¡¥« ¬¥¦¤ã ¨ª®­ª ¬¨ ¯® £®à¨§®­â «¨
  17. SPCH            equ 3
  18. END_ICONS_AREAW equ ICONSX+(IMG_SIZE+SPCW)*ICONS_DRAW_COUNTW-SPCW
  19. END_ICONS_AREAH equ ICONSY+(IMG_SIZE+SPCH)*ICONS_DRAW_COUNTH-SPCH
  20.  
  21.  
  22.  
  23. SizeData        equ bufStdIco+32
  24. BegData         equ fiStdIco.point
  25. ;------------------------------------------------------------------------------
  26.         use32
  27.         org 0x0
  28.         db 'MENUET01'   ; 8 byte id
  29.         dd 0x01         ; header version
  30.         dd START        ; start of code
  31.         dd I_END        ; size of image
  32.         dd ENDMEM       ; memory for app
  33.         dd stack_main   ; esp
  34.         dd 0            ; boot parameters
  35.         dd 0            ; path
  36. ;------------------------------------------------------------------------------
  37. include 'lang.inc'
  38. include '../../macros.inc'
  39. include '../../proc32.inc'
  40. include '../../develop/libraries/box_lib/trunk/box_lib.mac'
  41. include '../../dll.inc'
  42. ;include '../../debug.inc'
  43. ;------------------------------------------------------------------------------
  44. START:          ; start of execution
  45.         mcall   68,11
  46.         stdcall dll.Load,IMPORTS
  47.         test    eax,eax
  48.         jnz     ErrLoadLibs
  49.  
  50. ; unpack deflate
  51.         mov     eax,[unpack_DeflateUnpack2]
  52.         mov     [deflate_unpack],eax
  53. ;---------------------------------------------------------------------
  54. ; get size of file ICONSTRP.PNG
  55.         mcall   70,fiStdIco
  56.         test    eax,eax
  57.         jnz     ErrorStrp
  58. ; get memory for ICONSTRP.PNG
  59.         mov     ecx,dword[bufStdIco+32]
  60.         mov     [fiStdIco.size],ecx
  61.         mov     [img_size],ecx
  62.         mcall   68,12
  63.         mov     [fiStdIco.point],eax
  64.         mov     [image_file],eax
  65. ; load ICONSTRP.PNG
  66.         mov     dword[fiStdIco],0
  67.         mcall   70,fiStdIco
  68.         test    eax,eax
  69.         jnz     close
  70. ; convert PNG to RAW
  71.         xor     eax,eax
  72.         mov     [return_code],eax
  73. ;int3
  74.  
  75.         push    image_file
  76.         call    [cnv_png_import.Start]
  77.  
  78.         mov     eax,[raw_pointer]
  79.         mov     ebx,[eax+32]
  80.         mov     [strip_file_size],ebx
  81.         mov     eax,[eax+28]
  82.         add     eax,[raw_pointer]
  83.         mov     [strip_file],eax
  84. ; back memory to system
  85.         mcall   68,13,[fiStdIco.point]
  86.  
  87.         mov     eax,[raw_pointer]
  88.         mov     eax,[eax+8]
  89.         shr     eax,5
  90.         mov     [icon_count],eax
  91.  
  92.         and     eax,0x7
  93.         mov     [cur_band_compensation],eax
  94.  
  95. ;########## § £à㦠¥¬ ¤ ­­ë¥ ¨ª®­®ª ¢ ¯ ¬ïâì ##########################
  96.  
  97.         mcall   70,fiIni                     ;¢ë¤¥«ï¥¬ ¯ ¬ïâì, ¤®áâ â®ç­®© ¤«ï åà ­¥­¨ï ini ä ©« .
  98.         test    eax,eax                 ;…ñ â®ç­® 墠â¨â ¤«ï åà ­¥­¨ï ¤ ­­ëå ®¡ ¨ª®­ª å
  99.         jnz     ErrorIni
  100.  
  101.         cmp     dword[bufIni+32],0
  102.         je      ErrorIni
  103.         mcall   68,12,dword[bufIni+32]
  104.         mov     dword[BegData],eax
  105.         jmp     NoErrIni
  106.  
  107.   ErrorIni:
  108.         mcall   70,fiRunProg
  109.         mcall   -1
  110.  
  111.   NoErrIni:
  112.         m2m     [PIcoDB],[BegData]
  113.  
  114.  
  115.  
  116.         mov     edi,IconsID
  117.         xor     eax,eax
  118.         mov     ecx,100h/4
  119.         rep stosd
  120.         mov     [nLoadIcon],0
  121.         stdcall [ini_enum_sections],IconIni,LoadIconsData
  122. ;int3
  123.         mov     eax,dword[PIcoDB]
  124.         sub     eax,[BegData]
  125.         mov     dword[SizeData],eax
  126.         mov     eax,[BegData]
  127.         cmp     eax,[PIcoDB]
  128.         jne     @f
  129.         mov     dword[eax],0
  130.         mov     dword[SizeData],0
  131.    @@:
  132. ;######################################################################
  133.         call    FillIconsOffs                  ;§ ¯®«­ï¥â MaxNumIcon,IconsOffs
  134.  
  135.         mcall   40,0100000b                    ;­ã¦­ë ⮫쪮 ᮡëâ¨ï ¬ëè¨, ¯¥à¥à¨á®¢ª  ¨ª®­®ª ¡ã¤¥â ¢ ¤à㣮¬ ¯®â®ª¥
  136.  
  137.         mov     eax,[icon_count]
  138.         mov     bl,ICONS_DRAW_COUNTH
  139.         div     bl
  140.         test    ah,ah
  141.         jz      @f
  142.         inc     al
  143.      @@:
  144.         and     eax,0FFh
  145.         mov     [sbIcons.max_area],eax
  146.  
  147.         mcall   51,1,BGRedrawThread,stack_bredraw       ;§ ¯ã᪠¥¬ ¯®â®ª ¯¥à¥à¨á®¢ª¨ ¨ª®­®ª
  148.         stdcall [OpenDialog_Init],OpenDialog_data
  149.  
  150. ;dph [MaxNumIcon]
  151.  
  152. messages:
  153.         mcall   10
  154.         sub     eax,6
  155.         jz      MSGMouse
  156.  
  157.         jmp     messages
  158.  
  159.  
  160. MSGMouse:
  161.         mcall   37,0    ;GetMousePos
  162.         xor     ebx,ebx
  163.         mov     bx,ax
  164.         shr     eax,16
  165.         mov     ecx,ebx
  166.         mov     ebx,eax
  167.  
  168.         mcall   34
  169.         cmp     eax,1
  170.         jne     messages
  171.  
  172.         cmp     [RButtonActiv],1
  173.         je      messages
  174.  
  175.         mov     [MouseY],ecx
  176.         mov     [MouseX],ebx
  177.  
  178.  
  179.         mcall   37,2
  180.         test    al,001b
  181.         jnz     LButtonPress
  182.         test    al,010b
  183.         jnz     RButtonPress
  184.         jmp     messages
  185.  
  186. ErrLoadLibs:
  187.         ;dps     '¥ 㤠«®áì § £à㧨âì ­¥®¡å®¤¨¬ë¥ ¡¨¡«¨®â¥ª¨'
  188.         ;debug_newline
  189.         jmp     close
  190. ErrorStrp:
  191.         ;dps     'Žè¨¡ª  ®âªàëâ¨ï iconstrp.png'
  192.         ;debug_newline
  193. close:
  194.         mcall   -1
  195.  
  196. LButtonPress:
  197.  
  198.         stdcall GetNumIcon,[MouseX],[MouseY],-1
  199. ;int3
  200.         cmp     eax,-1
  201.         jnz     @f
  202.  
  203.     WaitLB1:
  204.         mcall   37,2
  205.         test    al,001b
  206.         jz      messages
  207.         ;Yield
  208.         mcall   5,1
  209.         jmp     WaitLB1
  210.  
  211.  
  212.      @@:
  213.         push    eax
  214.         stdcall DrawIcon,eax,1
  215.    WaitLB:
  216.         mcall   37,2
  217.         test    al,001b
  218.         jz      endWaitLB
  219.  
  220.         mcall   37,0
  221.         xor     ebx,ebx
  222.         mov     bx,ax
  223.         shr     eax,16
  224.         sub     eax,[MouseX]
  225.         jns     @f
  226.         neg     eax
  227.       @@:
  228.         sub     ebx,[MouseY]
  229.         jns     @f
  230.         neg     ebx
  231.       @@:
  232.         cmp     [bFixIcons],0
  233.         jne     @f
  234.         cmp     eax,MIN_NO_MOVING
  235.         ja      MovingIcon
  236.         cmp     ebx,MIN_NO_MOVING
  237.         ja      MovingIcon
  238.       @@:
  239.         ;Yield
  240.         mcall   5,1     ;Sleep   1
  241.  
  242.         jmp     WaitLB
  243.    endWaitLB:
  244.  
  245.         mcall   37,0
  246.         xor     ebx,ebx
  247.         mov     bx,ax
  248.         shr     eax,16
  249.         mov     ecx,ebx
  250.         mov     ebx,eax
  251.         mov     [MouseX],ebx
  252.         mov     [MouseY],ecx
  253.  
  254.         stdcall GetNumIcon,[MouseX],[MouseY],-1
  255.         cmp     eax,[esp]       ;[esp] = ­®¬¥à ¨ª®­ª¨
  256.         jne     @f
  257.  
  258.         mov     edi,[IconsOffs+eax*4]
  259.         or      ecx,-1
  260.         xor     al,al
  261.         repne   scasb
  262.         mov     ebx,edi
  263.         repne   scasb
  264.                              ;run program
  265.         mov     dword[fiRunProg+8],edi
  266.         mov     dword[fiRunProg+21],ebx
  267.         mcall   70,fiRunProg
  268.         test    eax,80000000h
  269.         jz      @f
  270.  
  271.         mov     dword[fiRunProg+8],ErrRunProg
  272.         mov     dword[fiRunProg+21],pthNotify
  273.         mcall   70,fiRunProg
  274.  
  275.      @@:
  276.         pop     eax
  277.         stdcall RestoreBackgrnd,eax
  278.         jmp     messages
  279.  
  280. ;-------------------------------------------------------------------------------
  281. MovingIcon:
  282.         stdcall GetNumIcon,[MouseX],[MouseY],-1
  283.         mov     [SelIcon],eax
  284.         mov     [IconNoDraw],eax
  285.         stdcall RestoreBackgrnd,[SelIcon]
  286.  
  287. ;        mov     ecx,[MaxNumIcon]
  288. ;        xor     ebx,ebx
  289. ;   .MI: push    ecx
  290. ;        cmp     ebx,[SelIcon]
  291. ;        je      @f
  292. ;        stdcall DrawIcon,ebx,0
  293. ;      @@:
  294. ;        inc     ebx
  295. ;        pop     ecx
  296. ;        loop    .MI
  297.  
  298.  
  299.  
  300. ;dps 'Moving'
  301. ;debug_newline
  302. ;        mov     edi,[SelIcon]
  303. ;        mov     edi,[IconsOffs+edi*4]
  304. ;        or      ecx,-1
  305. ;        xor     al,al
  306. ;        repne scasb
  307. ;        repne scasb
  308. ;        repne scasb
  309. ;        repne scasb
  310. ;        xor     ebx,ebx
  311. ;        xor     esi,esi
  312. ;        mov     bx,word[edi+2]
  313. ;        mov     si,word[edi]
  314. ;        stdcall GetNumIcon,ebx,esi,[SelIcon]
  315. ;        cmp     eax,-1
  316. ;        je      @f
  317. ;  dps 'Q'
  318. ;        stdcall DrawIcon,eax,0
  319. ;     @@:
  320. ;
  321. ;        add     ebx,ICON_SIZE-1
  322. ;        stdcall GetNumIcon,ebx,esi,[SelIcon]
  323. ;        cmp     eax,-1
  324. ;        je      @f
  325. ;  dps 'Q'
  326. ;        stdcall DrawIcon,eax,0
  327. ;
  328. ;     @@:
  329. ;        add     esi,ICON_SIZE-1
  330. ;        stdcall GetNumIcon,ebx,esi,[SelIcon]
  331. ;        cmp     eax,-1
  332. ;        je      @f
  333. ;  dps 'Q'
  334. ;        stdcall DrawIcon,eax,0
  335. ;
  336. ;     @@:
  337. ;        sub     ebx,ICON_SIZE-1
  338. ;        stdcall GetNumIcon,ebx,esi,[SelIcon]
  339. ;        cmp     eax,-1
  340. ;        je      @f
  341. ;   dps 'Q'
  342. ;        stdcall DrawIcon,eax,0
  343. ;     @@:
  344.  
  345.  
  346. ; Sleep 40
  347.  
  348. ;qweqwe:
  349.  
  350.         mov    [MovingActiv],1
  351.         mcall   51,1,MovingWnd,stack_mov        ;CreateThread MovingWnd,stack_dlg
  352.    .WaitLB:
  353.         mcall   37,2    ;GetMouseKey
  354.         test    al,001b
  355.         jz      .endWaitLB
  356.  
  357.         ;Yield
  358.         mcall   5,1     ;Sleep 1
  359.         jmp     .WaitLB
  360.    .endWaitLB:
  361.  
  362.  
  363.         mcall   37,0            ;GetMousePos
  364.         xor     ebx,ebx
  365.         mov     bx,ax
  366.         shr     eax,16
  367.  
  368.         sub     eax,1+ICON_SIZE/2
  369.         jnc     @f
  370.         xor     eax,eax
  371.       @@:
  372.  
  373.         sub     ebx,ICON_SIZE/2-7
  374.         jnc     @f
  375.         xor     ebx,ebx
  376.       @@:
  377.  
  378.         cmp     ax,[wsX]
  379.         jae     @f
  380.         mov     ax,[wsX]
  381.       @@:
  382.  
  383.         cmp     bx,[wsY]
  384.         jae     @f
  385.         mov     bx,[wsY]
  386.       @@:                           ;eax,ebx - ॠ«ì­ ï ª®®à¤¨­ â . ‚ᥠª®®à¤¨­ âë ¢ ¯à®£¥ ®â­®á¨â¥«ì­® «¥¢®£® ¢¥àå­¥£® 㣫  à ¡®ç¥© ®¡« áâ¨
  387.  
  388.         xor     edx,edx
  389.         mov     dx,[wsXe]
  390.         sub     edx,ICON_SIZE
  391.         cmp     eax,edx
  392.         jbe     @f
  393.         mov     eax,edx
  394.       @@:
  395.  
  396.         mov     dx,[wsYe]
  397.         sub     edx,ICON_SIZE
  398.         cmp     ebx,edx
  399.         jbe     @f
  400.         mov     ebx,edx
  401.       @@:
  402.  
  403.         xor     edx,edx              ;¯à¥®¡à §®¢ë¢ ¥¬ ¢ ®â­®á¨â¥«ì­ë¥
  404.         mov     dx,[wsW]
  405.         shr     edx,1
  406.         add     dx,[wsX]
  407.         cmp     eax,edx
  408.         jbe     @f
  409.         sub     ax,[wsXe]
  410.         inc     ax
  411.         jmp     .mov1
  412.       @@:
  413.         sub     ax,[wsX]
  414.     .mov1:
  415.  
  416.         xor     edx,edx
  417.         mov     dx,[wsH]
  418.         shr     edx,1
  419.         add     dx,[wsY]
  420.         cmp     ebx,edx
  421.         jbe     @f
  422.         sub     bx,[wsYe]
  423.         inc     bx
  424.         jmp     .mov2
  425.       @@:
  426.         sub     bx,[wsY]
  427.     .mov2:
  428.  
  429.         stdcall SetPosition,[SelIcon],eax,ebx
  430.  
  431.         m2m     [PIcoDB],[BegData]
  432.         stdcall [ini_enum_sections],IconIni,Ini_SavePos  ;in RButton.inc
  433.  
  434.         mov     [bNotSave],1
  435.         mov     [IconNoDraw],-1
  436.  
  437.         mov    [MovingActiv],0          ;⮫쪮 ⥯¥àì ®âª«îç ¥¬ ®ª­® á ¬ëèìî
  438.  
  439.         jmp     messages
  440.  
  441. ;-------------------------------------------------------------------------------
  442.  
  443. RButtonPress:
  444.         mov     [RButtonActiv],1
  445.  
  446.      @@:
  447.         mcall   37,2    ;GetMouseKey
  448.         test    al,010b
  449.         jz      @f
  450.         mcall   5,1     ;Yield
  451.         jmp     @b
  452.      @@:
  453.  
  454.         mcall   51,1,RButtonWin,stack_rmenu       ;CreateThread RButtonWin,stack_rmenu
  455.  
  456.         jmp     messages
  457.  
  458.  
  459. ;###############################################################################
  460. ;ret eax = 1/0 = 㤠ç /®è¨¡ª 
  461. proc DrawIcon NumIcon:DWORD,Activ:DWORD ;NumIcon = 0..n
  462. local   IconData:DWORD
  463.         push    ebx edi esi
  464.  
  465.         mov     ecx,ICON_SIZE*ICON_SIZE
  466.         xor     eax,eax
  467.         mov     edi,IconArea
  468.         rep     stosd
  469.  
  470.         mov     eax,[NumIcon]
  471.         cmp     eax,[MaxNumIcon]
  472.         jb      @f
  473.         xor     eax,eax
  474.         pop     esi edi ebx
  475.         ret
  476.       @@:
  477.  
  478.         mov     esi,[IconsOffs+eax*4]
  479.         mov     [IconData],esi
  480.  
  481.                               ;à¨á㥬 ⥪áâ
  482.         mov     edi,esi
  483.         xor     al,al
  484.         or      ecx,-1
  485.         repne scasb
  486.         mov     edx,esi
  487.         mov     eax,edi
  488.         sub     eax,esi
  489.         dec     eax
  490.         shl     eax,1            ;*6
  491.         lea     eax,[eax*2+eax]
  492.         mov     ebx,ICON_SIZE
  493.         sub     ebx,eax
  494.         shr     ebx,1        ;ebx = x ⥪áâ 
  495.         shl     ebx,16
  496.         mov     bx,ICON_SIZE
  497.         sub     bx,TEXT_BOTTOM_Y
  498.         mov     ecx,88000000h
  499.         mov     edi,IconAreaH
  500.         add     ebx,-1*10000h+0
  501.         mcall   4
  502.         add     ebx,2*10000h+0
  503.         mcall   ;4
  504.         add     ebx,-1*10000h-1
  505.         mcall   ;4
  506.         add     ebx,0*10000h+2
  507.         mcall   ;4
  508.         add     ebx,1*10000h+0
  509.         mcall   ;4
  510.         inc     ebx;add     ebx,0*10000h+1
  511.         mcall   ;4
  512.         add     ebx,-1*10000h+0
  513.         mcall   ;4
  514.         add     ebx,0*10000h-2
  515.         mov     ecx,88FFFFFFh
  516.         mcall   ;4
  517.                                     ;à¨á㥬 ª à⨭ªã
  518.  
  519.         mov     edi,esi
  520.         xor     al,al
  521.         or      ecx,-1
  522.         repne   scasb
  523.         repne   scasb
  524.         repne   scasb
  525.         mov     al,[edi]
  526.         cmp     al,'9'
  527.         ja      PathToIcon
  528.         cmp     al,'/'
  529.         jne     GetIconInd
  530.  
  531.    PathToIcon:
  532.         mov     al,30h           ;§ £«ã誠!!!!!!!!!!!!!
  533.         mov     byte[edi+1],0
  534.  
  535.         jmp     CopyToMem
  536.    GetIconInd:
  537.  
  538.         sub     al,30h
  539.         cmp     byte[edi+1],0
  540.         je      @f
  541.         shl     eax,1
  542.         lea     eax,[eax*4+eax]
  543.         xor     edx,edx
  544.         mov     dl,[edi+1]
  545.         sub     dl,30h
  546.         add     eax,edx
  547.      @@:             ;eax=num icon
  548.         cmp     eax,[icon_count]
  549.         jb      @f
  550.         xor     eax,eax
  551.      @@:
  552.         test    eax,eax
  553.         je      DI1
  554.         mov     ecx,eax
  555.         xor     eax,eax
  556.       @@:
  557.         add     eax,IMG_SIZE*IMG_SIZE*4
  558.         loop    @b
  559.      DI1:
  560.         add     eax,[raw_pointer]
  561.         add     eax,0+4*11
  562.         mov     esi,eax
  563.  
  564.   CopyToMem:
  565.         mov     edi,IconArea+((IMAGE_TOP_Y*ICON_SIZE)+((ICON_SIZE-IMG_SIZE)/2))*4
  566.  
  567.         mov     eax,IMG_SIZE
  568.         mov     edx,eax
  569.       @@:
  570.         mov     ecx,eax
  571.         rep     movsd
  572.         add     edi,(ICON_SIZE-IMG_SIZE)*4
  573.         dec     edx
  574.         jnz     @b
  575.  
  576. ;-----------------
  577.                                 ;¥á«¨ ­ ¤®, â® à¨á㥬 ®¡¢®¤ªã
  578.         cmp     [Activ],0
  579.         je      .NoSelect
  580.  
  581.         mov     edi,IconArea
  582.         mov     eax,0FF000000h
  583.         mov     ecx,ICON_SIZE
  584.         rep     stosd
  585.         ;mov     edi,IconArea+ICON_SIZE*1
  586.  
  587.         mov     ecx,ICON_SIZE-1
  588.     @@: mov     dword[edi],eax
  589.         add     edi,(ICON_SIZE)*4
  590.         loop    @b
  591.  
  592.         mov     edi,IconArea+ICON_SIZE*2*4-4
  593.         mov     ecx,ICON_SIZE-1
  594.     @@: mov     dword[edi],eax
  595.         add     edi,(ICON_SIZE)*4
  596.         loop    @b
  597.  
  598.         mov     edi,IconArea+ICON_SIZE*(ICON_SIZE-1)*4+4
  599.         mov     ecx,ICON_SIZE-2
  600.         rep     stosd
  601.  
  602.  
  603.         mov     edi,IconArea+ICON_SIZE*4+4
  604.         mov     eax,0FFFFFFFFh
  605.         mov     ecx,ICON_SIZE-2
  606.         rep     stosd
  607.  
  608.         mov     edi,IconArea+ICON_SIZE*4+4
  609.         mov     ecx,ICON_SIZE-2
  610.     @@: mov     dword[edi],eax
  611.         add     edi,(ICON_SIZE)*4
  612.         loop    @b
  613.  
  614.         mov     edi,IconArea+ICON_SIZE*2*4-4*2
  615.         mov     ecx,ICON_SIZE-3
  616.     @@: mov     dword[edi],eax
  617.         add     edi,(ICON_SIZE)*4
  618.         loop    @b
  619.  
  620.         mov     edi,IconArea+ICON_SIZE*(ICON_SIZE-2)*4+4*2
  621.         mov     ecx,ICON_SIZE-3
  622.         rep     stosd
  623. ;--------------
  624.  
  625.    .NoSelect:
  626.         mov     edi,[IconData]
  627.         xor     al,al
  628.         or      ecx,-1
  629.         repne   scasb
  630.         repne   scasb
  631.         repne   scasb
  632.         repne   scasb
  633.         mov     edx,[edi]
  634.  
  635.         test    edx,00008000h
  636.         jz      @f
  637.         add     dx,[wsYe]
  638.         jmp     .DI11
  639.     @@:
  640.         add     dx,[wsY]
  641.    .DI11:
  642.  
  643.         test    edx,80000000h
  644.         jz      @f
  645.         mov     ax,[wsXe]
  646.         shl     eax,16
  647.         add     edx,eax
  648.         jmp     .DI12
  649.     @@:
  650.         mov     ax,[wsX]
  651.         shl     eax,16
  652.         add     edx,eax
  653.    .DI12:
  654.  
  655.         mov     ebx,IconArea
  656.         mov     ecx,ICON_SIZE*10000h+ICON_SIZE
  657.         mcall   25
  658.  
  659. ;        mov     eax,1
  660.         pop     esi edi ebx
  661.         ret
  662. endp
  663.  
  664. proc RestoreBackgrnd,NumIcon:DWORD
  665.         push    ebx edi
  666.         mov     eax,[NumIcon]
  667.         cmp     eax,[MaxNumIcon]
  668.         jb      @f
  669.         xor     eax,eax
  670.         pop     edi ebx
  671.         ret
  672.       @@:
  673.  
  674.         mov     edi,[IconsOffs+eax*4]
  675.         xor     al,al
  676.         or      ecx,-1
  677.         repne   scasb
  678.         repne   scasb
  679.         repne   scasb
  680.         repne   scasb
  681.  
  682.         mov     ax,[edi+2]
  683.         test    ax,8000h
  684.         jz      @f
  685.         add     ax,[wsXe]
  686.         jmp     .rbg1
  687.       @@:
  688.         add     ax,[wsX]
  689.      .rbg1:
  690.  
  691.         mov     bx,[edi]
  692.         test    bx,8000h
  693.         jz      @f
  694.         add     bx,[wsYe]
  695.         jmp     .rbg2
  696.       @@:
  697.         add     bx,[wsY]
  698.      .rbg2:
  699.  
  700.         mov     cx,ax
  701.         shl     ecx,16
  702.         add     ax,ICON_SIZE
  703.         mov     cx,ax
  704.         mov     dx,bx
  705.         shl     edx,16
  706.         add     bx,ICON_SIZE
  707.         mov     dx,bx
  708.         dec     ecx
  709.         dec     edx
  710.         mcall   15,9
  711.         pop     edi ebx
  712.         ret
  713. endp
  714.  
  715.                                  ;§ ¯®«­ï¥â MaxNumIcon,IconsOffs
  716. proc FillIconsOffs
  717.         push    ebx edi
  718.         mov     edi,[BegData]
  719.         mov     dword[MaxNumIcon],0
  720.         cmp     dword[edi],0
  721.         jne     @f
  722.         mov     dword[IconsOffs],0
  723.         pop     edi ebx
  724.         ret
  725.     @@:
  726.  
  727.         mov     [IconsOffs],edi
  728.         xor     al,al
  729.         xor     edx,edx
  730.         mov     ebx,dword[SizeData]
  731.         add     ebx,dword[BegData]
  732.         or      ecx,-1
  733.  .CalcNumIc:
  734.  
  735.         repne   scasb
  736.         repne   scasb
  737.         repne   scasb
  738.         repne   scasb
  739.         add     edi,4
  740.         mov     dword[IconsOffs+edx+4],edi
  741.         inc     dword[MaxNumIcon]
  742.         add     edx,4
  743.  
  744.         cmp     edi,ebx
  745.         jae     @f
  746.         jmp     .CalcNumIc
  747.    @@:
  748.  
  749.         mov     dword[IconsOffs+edx],0
  750.  
  751.         pop     edi ebx
  752.         ret
  753. endp
  754.  
  755. proc LoadIconsData stdcall,f_name,sec_name
  756.         push    ebx esi edi
  757.  
  758.         mov     edi,secRButt
  759.         mov     esi,[sec_name]
  760.     @@: lodsb
  761.         scasb
  762.         jnz     .lid1
  763.         test    al,al
  764.         jnz     @b
  765.  
  766.         mov     eax,1
  767.         pop     edi esi ebx
  768.         ret
  769.      .lid1:
  770.  
  771.  
  772.         mov     ebx,[sec_name]          ;ª®¯¨à㥬 ID
  773.         mov     ax,[ebx]
  774.         mov     edi,[nLoadIcon]
  775.         mov     word[edi*4+IconsID],ax
  776.         mov     word[edi*4+IconsID+2],0
  777.  
  778.         mov     edi,[PIcoDB]
  779.         stdcall [ini_get_str],[f_name],[sec_name],keyName,edi,4096,0
  780.         test    eax,eax
  781.         jz      @f
  782.         xor     eax,eax
  783.         pop     edi esi ebx
  784.         ret
  785.      @@:
  786.         xor     al,al
  787.         or      ecx,-1
  788.         repne   scasb
  789.  
  790.  
  791.  
  792.         stdcall [ini_get_str],[f_name],[sec_name],keyPath,edi,4096,0
  793.         test    eax,eax
  794.         jz      @f
  795.         xor     eax,eax
  796.         pop     edi esi ebx
  797.         ret
  798.      @@:
  799.         xor     al,al
  800.         or      ecx,-1
  801.         repne   scasb
  802.  
  803.         stdcall [ini_get_str],[f_name],[sec_name],keyParams,edi,4096,0
  804.         test    eax,eax
  805.         jz      @f
  806.         xor     eax,eax
  807.         pop     edi esi ebx
  808.         ret
  809.      @@:
  810.         xor     al,al
  811.         or      ecx,-1
  812.         repne   scasb
  813.  
  814.         stdcall [ini_get_str],[f_name],[sec_name],keyIco,edi,4096,0
  815.         test    eax,eax
  816.         jz      @f
  817.         xor     eax,eax
  818.         pop     edi esi ebx
  819.         ret
  820.      @@:
  821.         xor     al,al
  822.         or      ecx,-1
  823.         repne   scasb
  824.  
  825.         stdcall [ini_get_int],[f_name],[sec_name],keyX,80000000h
  826.         cmp     eax,80000000h
  827.         jne     @f
  828.         xor     eax,eax
  829.         pop     edi esi ebx
  830.         ret
  831.      @@:
  832.         mov     word[edi+2],ax
  833.  
  834.         stdcall [ini_get_int],[f_name],[sec_name],keyY,80000000h
  835.         cmp     eax,80000000h
  836.         jne     @f
  837.         xor     eax,eax
  838.         pop     edi esi ebx
  839.         ret
  840.      @@:
  841.         mov     word[edi],ax
  842.         add     edi,4
  843.         mov     [PIcoDB],edi
  844.  
  845.         inc     [nLoadIcon]
  846.  
  847.         mov     eax,1
  848.         pop     edi esi ebx
  849.         ret
  850. endp
  851.  
  852. proc GenerateID ;ax = ID
  853.         push    ebx edi
  854.         mov     ebx,[MaxNumIcon]
  855.         test    ebx,ebx
  856.         jnz     @f
  857.         mov     eax,'00'
  858.         pop     edi ebx
  859.         ret
  860.      @@:
  861.  
  862.         mov     eax,dword[IconsID+ebx*4-4]
  863.   .inc:
  864.         inc     ah
  865.         cmp     ah,'9'+1
  866.         jne     @f
  867.         mov     ah,'A'
  868.        @@:
  869.         cmp     ah,'F'+1
  870.         jne     @f
  871.         mov     ah,'0'
  872.         inc     al
  873.        @@:
  874.         cmp     al,'9'+1
  875.         jne     @f
  876.         mov     al,'A'
  877.        @@:
  878.         cmp     al,'F'+1
  879.         jne     @f
  880.         mov     al,'0'
  881.        @@:
  882.  
  883.  
  884.         mov     edi,IconsID
  885.         ;cmp     dword[edi],0
  886.         ;je      @f
  887.         mov     ecx,100h
  888.     @@: scasd
  889.         je      .inc
  890.         cmp     dword[edi],0
  891.         je      @f
  892.         loop    @b
  893.      @@:
  894.  
  895.         pop     edi ebx
  896.         ret
  897. endp
  898.  
  899. include 'iconman.inc'
  900. include 'bgredraw.inc'
  901. include 'RButton.inc'
  902. include 'DlgAdd.inc'
  903. include 'Moving.inc'
  904.  
  905. ;'Eolite',0,'/sys/File managers/eolite',0,'/hd0/3/Muzik',0,'1',0,00010001h
  906. ;-------------------------------------------------------------------------------
  907. ;##### DATA ####################################################################
  908. ;-------------------------------------------------------------------------------
  909. ; not change this section!!!
  910. ; start section
  911. ;------------------------------------------------------------------------------
  912. align 4
  913. image_file     dd 0 ;+0
  914. raw_pointer    dd 0 ;+4
  915. return_code    dd 0 ;+8
  916. img_size       dd 0 ;+12
  917. deflate_unpack dd 0 ;+16        ; not use for scaling
  918. raw_pointer_2  dd 0 ;+20        ; not use for scaling
  919. ;------------------------------------------------------------------------------
  920. ; end section
  921. ;------------------------------------------------------------------------------
  922.  
  923.  
  924. align 4
  925. fiStdIco:
  926.         dd 5
  927.         dd 0
  928.         dd 0
  929. .size   dd 0
  930. .point  dd bufStdIco
  931.         db ICON_STRIP,0
  932.  
  933.  
  934. align 4
  935. fiRunProg:            ;¤«ï § ¯ã᪠ ¯à®£à ¬¬
  936.         dd 7
  937.         dd 0
  938.         dd 0
  939.         dd 0
  940.         dd ErrNotFoundIni
  941.         db 0
  942.         dd pthNotify
  943.  
  944. fiIni   dd 5           ;¤«ï ini ä ©« 
  945.         dd 0
  946.         dd 0
  947.         dd 0
  948.         dd bufIni
  949.         db 0
  950.         dd IconIni
  951.  
  952.  
  953. IconsFile       db ICON_STRIP,0
  954.  
  955. align 4
  956. MaxNumIcon      dd 0            ;ª®«¨ç¥á⢮ ¨ª®­®ª
  957. IconNoDraw      dd -1           ;-1 «¨¡® ­®¬¥à ¨ª®­ª¨, ª®â®àãî ­¥ ­ ¤® à¨á®¢ âì( ª®£¤  ¥ñ â áª îâ )
  958.  
  959. bFixIcons       dd 1
  960. bNotSave        dd 0
  961.  
  962. LButtonActiv    dd 0
  963. RButtonActiv    dd 0
  964. MovingActiv     dd 0
  965. DlgAddActiv     dd 0
  966.  
  967. IconIni         db ICON_INI,0
  968.  
  969. pthNotify       db '/rd/1/@notify',0
  970.  
  971. keyName         db 'name',0
  972. keyPath         db 'path',0
  973. keyParams       db 'param',0
  974. keyIco          db 'ico',0
  975. keyX            db 'x',0
  976. keyY            db 'y',0
  977.  
  978. ;-------------------------------------------------------------------------------
  979. IMPORTS:
  980. library cnv_png ,'cnv_png.obj',\
  981.         archiver,'archiver.obj',\
  982.         box_lib ,'box_lib.obj',\
  983.         proc_lib,'proc_lib.obj',\
  984.         libini  ,'libini.obj'
  985.  
  986. import  cnv_png,\
  987.         cnv_png_import.Start    ,'START',\
  988.         cnv_png_import.Version  ,'version',\
  989.         cnv_png_import.Check    ,'Check_Header',\
  990.         cnv_png_import.Assoc    ,'Associations'
  991.  
  992. import  archiver,\
  993.         unpack_DeflateUnpack2   ,'deflate_unpack2'
  994.  
  995. import  box_lib,\
  996.         edit_box_draw           ,'edit_box',\
  997.         edit_box_key            ,'edit_box_key',\
  998.         edit_box_mouse          ,'edit_box_mouse',\
  999.         scrollbar_h_draw        ,'scrollbar_h_draw',\
  1000.         scrollbar_h_mouse       ,'scrollbar_h_mouse'
  1001.  
  1002. import  proc_lib,\
  1003.         OpenDialog_Init         ,'OpenDialog_init',\
  1004.         OpenDialog_Start        ,'OpenDialog_start'
  1005.  
  1006. import  libini,\
  1007.         ini_enum_sections       ,'ini_enum_sections',\
  1008.         ini_enum_keys           ,'ini_enum_keys',\
  1009.         ini_get_str             ,'ini_get_str',\
  1010.         ini_set_str             ,'ini_set_str',\
  1011.         ini_get_color           ,'ini_get_color',\
  1012.         ini_get_int             ,'ini_get_int',\
  1013.         ini_set_int             ,'ini_set_int',\
  1014.         ini_del_section         ,'ini_del_section',\
  1015.         ini_exist_sect          ,'ini_exist_sect'
  1016.  
  1017.  
  1018. ;ini.get_str (f_name, sec_name, key_name, buffer, buf_len, def_val)
  1019. ;ini.set_str (f_name, sec_name, key_name, buffer, buf_len)
  1020.  
  1021.  
  1022. ;-------------------------------------------------------------------------------
  1023. ;----- RButton.inc -------------------------------------------------------------
  1024. ;-------------------------------------------------------------------------------
  1025.  
  1026. if lang eq ru
  1027.  MinRMenuW       dd 18*6+10
  1028. else
  1029.  MinRMenuW       dd 15*6+10
  1030. end if
  1031.  
  1032. secRButt        db 'rbmenu',0
  1033.  
  1034. PredItem        dd -1
  1035.  
  1036. if lang eq ru
  1037.  RMenuRedrawFon db '¥à¥à¨á®¢ âì',0
  1038.  RMenuAlign     db '‚ë஢­ïâì ¯® á¥âª¥',0
  1039.  RMenuOffMoving db '‡ ªà¥¯¨âì ¨ª®­ª¨',0
  1040.  RMenuOnMoving  db 'Žâªà¥¯¨âì ¨ª®­ª¨',0
  1041.  RMenuAdd       db '„®¡ ¢¨âì',0
  1042.  RMenuDel       db '“¤ «¨âì',0
  1043.  RMenuProp      db '‘¢®©á⢠',0
  1044. else
  1045.  RMenuRedrawFon db 'Redraw',0
  1046.  RMenuAlign     db 'Snap to Grid',0
  1047.  RMenuOffMoving db 'Fix the icons',0
  1048.  RMenuOnMoving  db 'Unfix the icons',0
  1049.  RMenuAdd       db 'Add',0
  1050.  RMenuDel       db 'Delete',0
  1051.  RMenuProp      db 'Properties',0
  1052. end if
  1053.  
  1054. if lang eq ru
  1055.  ErrRunProg     db '"Icon\nŽè¨¡ª  § ¯ã᪠ ¯à®£à ¬¬ë" -tE"',0
  1056.  WarningSave    db '"Icon\n¥ § ¡ã¤ì⥠á®åà ­¨âì ¨§¬¥­¥­¨ï, § ¯ãáâ¨âì RDSave" -tI',0
  1057.  ErrNotFoundIni db '"Icon\n¥ ­ ©¤¥­ icon.ini" -tE',0
  1058.  ErrName        db '"Icon\nˆ¬ï "rbmenu" § à¥§¥à¢¨à®¢ ­®" -tE',0
  1059. else
  1060.  ErrRunProg     db '"Icon\nError runing program" -tE',0
  1061.  WarningSave    db '"Icon\nDo not forget to save the changes, run the RDSave" -tI',0
  1062.  ErrNotFoundIni db '"Icon\nicon.ini not found" -tE',0
  1063.  ErrName        db '"Icon\nThe name "rbmenu" reserved" -tE',0
  1064. end if
  1065.  
  1066. ;-------------------------------------------------------------------------------
  1067. ;------- AddDlg.inc ---------------------------------------------------------------
  1068. ;-------------------------------------------------------------------------------
  1069. if lang eq ru
  1070. DTitleAdd       db '„®¡ ¢¨âì ¨ª®­ªã',0
  1071. DTitleProp      db 'ˆ§¬¥­¨âì ¨ª®­ªã',0
  1072.  
  1073. DCaptName       db 'ˆ¬ï',0
  1074. DCaptPath       db 'ãâì',0
  1075. DCaptParams     db ' à ¬¥âàë',0
  1076. DCaptIcon       db 'ˆª®­ª ',0
  1077. ;DCaptChange     db '.',0
  1078. DCaptCreate     db '‘®§¤ âì',0
  1079. DCaptProperties db 'ˆ§¬¥­¨âì',0
  1080. DCaptCancel     db 'Žâ¬¥­¨âì',0
  1081.  
  1082. else
  1083. DTitleAdd       db 'Add icon',0
  1084. DTitleProp      db 'Change icon',0
  1085.  
  1086. DCaptName       db 'Name',0
  1087. DCaptPath       db 'Path',0
  1088. DCaptParams     db 'Parameters',0
  1089. DCaptIcon       db 'Icon',0
  1090. DCaptCreate     db 'Create',0
  1091. DCaptProperties db 'Change',0
  1092. DCaptCancel     db 'Cancel',0
  1093. end if
  1094.  
  1095. ;/­¥ ¬¥­ïâì ¯®«®¦¥­¨¥
  1096. edtName    edit_box NAME_LENGTH*6+4,70+20+IMG_SIZE,6,0FFFFFFh,06F9480h,0FFh,0h,0,NAME_LENGTH,\
  1097.                 DAreaName,mouse_dd,0,0,0
  1098. edtExePath edit_box 281-3-20-IMG_SIZE,70+20+IMG_SIZE,26,0FFFFFFh,06F9480h,0FFh,0h,0,255,\
  1099.                 DAreaPath,mouse_dd,0,0,0
  1100. edtParams  edit_box 295-20-IMG_SIZE,70+20+IMG_SIZE,46,0FFFFFFh,06F9480h,0FFh,0h,0,255,\
  1101.                 DAreaParams,mouse_dd,0,0,0
  1102. edtIcon    edit_box 295-20-IMG_SIZE,70+20+IMG_SIZE,66,0FFFFFFh,06F9480h,0FFh,0h,0,255,\
  1103.                 DAreaIcon,mouse_dd,0,0,0
  1104. endEdits:
  1105. ;\
  1106.  
  1107. sbIcons:
  1108.              dw END_ICONS_AREAW-ICONSX
  1109.              dw ICONSX
  1110.              dw 15
  1111.              dw END_ICONS_AREAH+3
  1112.              dd 0
  1113.              dd 1
  1114.  .max_area   dd 0
  1115.  .cur_area   dd ICONS_DRAW_COUNTW
  1116.  .position   dd 0
  1117.  .bckg_col   dd 0
  1118.  .frnt_col   dd 0
  1119.  .line_col   dd 0
  1120.  .redraw     dd 0
  1121.  .delta      dd 0
  1122.  .delta2     dd 0
  1123.  .r_size_x   dw 0
  1124.  .r_start_x  dw 0
  1125.  .r_size_y   dw 0
  1126.  
  1127.  .r_start_y  dw 0
  1128.  .m_pos      dd 0
  1129.  .m_pos2     dd 0
  1130.  .m_keys     dd 0
  1131.  .run_size   dd 0
  1132.  .position2  dd 0
  1133.  .work_size  dd 0
  1134.  .all_redraw dd 0
  1135.  .ar_offset  dd 0
  1136.  
  1137. ;-------------------------------------------------------------------------------
  1138. OpenDialog_data:
  1139. .type                   dd 0
  1140. .procinfo               dd RBProcInfo       ;+4
  1141. .com_area_name          dd communication_area_name      ;+8
  1142. .com_area               dd 0    ;+12
  1143. .opendir_pach           dd temp_dir_pach        ;+16
  1144. .dir_default_pach       dd communication_area_default_pach      ;+20
  1145. .start_path             dd open_dialog_path     ;+24
  1146. .draw_window            dd DRedrawWin;draw_window_for_OD   ;+28
  1147. .status                 dd 0    ;+32
  1148. .openfile_pach          dd DAreaPath;fname_Info   ;+36
  1149. .filename_area          dd 0;DAreaPath        ;+40
  1150. .filter_area            dd Filter
  1151. .x:
  1152. .x_size                 dw 420 ;+48 ; Window X size
  1153. .x_start                dw 100 ;+50 ; Window X position
  1154. .y:
  1155. .y_size                 dw 320 ;+52 ; Window y size
  1156. .y_start                dw 100 ;+54 ; Window Y position
  1157.  
  1158. communication_area_name:
  1159.         db 'FFFFFFFF_open_dialog',0
  1160. open_dialog_path:
  1161.         db '/sys/File managers/opendial',0
  1162.  
  1163. communication_area_default_pach:
  1164.         db '/sys',0
  1165.  
  1166. Filter  dd 0
  1167.  
  1168. ;open_dialog     db 0
  1169. ;-------------------------------------------------------------------------------
  1170.  
  1171. ;/­¥ à §¤¥«ïâì
  1172. align 4
  1173. IconAreaH       dd ICON_SIZE,ICON_SIZE
  1174. I_END:
  1175. ;##### UDATA ###################################################################
  1176. IconArea        rb 4*ICON_SIZE*ICON_SIZE
  1177. ;\
  1178.  
  1179. sc              system_colors
  1180. sc.workL        rd 1
  1181. sc.workH        rd 1
  1182.  
  1183. align 4
  1184.  
  1185. ScreenW         rw 1
  1186. ScreenH         rw 1
  1187. wsX             rw 1
  1188. wsY             rw 1
  1189. wsXe            rw 1
  1190. wsYe            rw 1
  1191. wsW             rw 1
  1192. wsH             rw 1
  1193.  
  1194.  
  1195. MouseX          rd 1
  1196. MouseY          rd 1
  1197.  
  1198. RBSlot          rd 1
  1199. AddX            rd 1
  1200. AddY            rd 1
  1201.  
  1202. SelIcon         rd 1
  1203. DlgSelIcon      rd 1
  1204. slotDlgAdd      rd 1
  1205. DlgBufImg       rb IMG_SIZE*IMG_SIZE*3
  1206.  
  1207. align 4
  1208. bufStdIco       rb 40
  1209. IconsOffs       rd 100          ;â ¡«¨æ  á 㪠§ â¥«ï¬¨ ­  ª®­ªà¥â­ë¥ ¨ª®­ª¨(¤«ï ã᪮७¨ï)
  1210. PIcoDB          rd 1
  1211. nLoadIcon       rd 1            ;­®¬¥à ç¨â ¥¬®© ¨§ ini ¨ª®­ª¨
  1212. IconsID         rd 100          ;ID ¨ª®­®ª - 2 ¡ ©âa + ¡ ©â 0 + ¢ëà ¢­¨¢ î騩 ¡ ©â - áâப  á 2¬ï è¥á­ ¤æ¥â¨à¨ç­ë¬¨ æ¨äà ¬¨
  1213.  
  1214. nameSection     rb 4
  1215.  
  1216. align 4
  1217. icon_count      rd 1
  1218. strip_file      rd 1
  1219. strip_file_size rd 1
  1220.  
  1221. cur_band_compensation rd 1
  1222.  
  1223. ;---- RButton -----------------------------------------------------------------------
  1224.  
  1225. bufIni          rb 40
  1226. NumMenuButt     rd 1
  1227. RBMenuCP        rd MAX_USER_BUTTONS*2         ;㪠§ â¥«¨ ­  ¯®¤¯¨áì ¨ ¯ãâì á ¯à®£®© (Caption(dd), Path(dd)) ¨ § ¯ á­®© (dd) ¤«ï § ¢¥àè î饣® ­ã«ï
  1228. RMenuW          rw 1
  1229. RMenuH          rw 1
  1230.  
  1231. MaxPage         rd 1
  1232. mouse_dd        rd 1
  1233.  
  1234. DAreaName       rb NAME_LENGTH+1
  1235. DAreaPath       rb 255+1
  1236. DAreaParams     rb 255+1
  1237. DAreaIcon       rb 255+1
  1238.  
  1239. align 4
  1240. RBProcInfo      rb 1024
  1241. align 4
  1242.  
  1243.  
  1244. ;------ OpenDialog -------------------------------
  1245. temp_dir_pach   rb 1024
  1246. fname_Info      rb 1024
  1247.  
  1248. ;-------------------------------------------------------------------------------
  1249.                 rb 512
  1250. stack_mov:                      ;®¤­®¢à¥¬¥­­® â áª âì ¨ ¤¥à¦ âì ®âªàëâë¬ ¬¥­îèªã ­¥¢®§¬®¦­®
  1251. stack_rmenu:
  1252.                 rb 512
  1253. stack_dlg:
  1254.                 rb 512
  1255. stack_bredraw:
  1256.                 rb 512
  1257. stack_main:
  1258. ;------------------------------------------------------------------------------
  1259. ENDMEM: