Subversion Repositories Kolibri OS

Rev

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

  1. ;
  2. ;   RDsave ¤«ï Kolibri (0.6.5.0 ¨ áâ àè¥)
  3. ;  
  4. ;   Mario79 2005
  5. ;   Heavyiron 12.02.2007
  6. ;   <Lrz>     11.05.2009 - ¤«ï à ¡®âë ­ã¦­  á¨á⥬­ ï ¡¨¡«¨®â¥ª  box_lib.obj
  7. ;   Š®¬¯¨«¨à®¢ âì FASM'®¬
  8. ;
  9. ;---------------------------------------------------------------------
  10. include 'lang.inc'
  11. include '..\..\..\macros.inc'
  12.  
  13. appname equ 'RDsave '
  14. version equ '1.2'
  15.  
  16.   use32              ; ¢ª«îç¨âì 32-¡¨â­ë© ०¨¬  áᥬ¡«¥à 
  17.   org    0x0         ;  ¤à¥á æ¨ï á ­ã«ï
  18.  
  19.   db     'MENUET01'  ; 8-¡ ©â­ë© ¨¤¥­â¨ä¨ª â®à MenuetOS
  20.   dd     0x01        ; ¢¥àá¨ï § £®«®¢ª  (¢á¥£¤  1)
  21.   dd     START       ;  ¤à¥á ¯¥à¢®© ª®¬ ­¤ë
  22.   dd     I_END       ; à §¬¥à ¯à®£à ¬¬ë
  23.   dd     I_END       ; ª®«¨ç¥á⢮ ¯ ¬ïâ¨
  24.   dd     I_END       ;  ¤à¥á ¢¥à設ë áâíª 
  25.   dd     0x0         ;  ¤à¥á ¡ãä¥à  ¤«ï ¯ à ¬¥â஢ (­¥ ¨á¯®«ì§ã¥âáï)
  26.   dd cur_dir_path
  27.  
  28. ;include '..\..\..\develop\examples\editbox\trunk\editbox.inc'
  29. include '../../../develop/libraries/box_lib/load_lib.mac'
  30. include '../../../develop/libraries/box_lib/asm/trunk/editbox_ex.mac'
  31.         @use_library
  32.  
  33. ;use_edit_box
  34. ;al equ eax      ; \ decrease kpack'ed size
  35. ;purge mov       ; /
  36.  
  37. ;---------------------------------------------------------------------
  38. ;---  €—€‹Ž Žƒ€ŒŒ›  ----------------------------------------------
  39. ;---------------------------------------------------------------------
  40. align 4
  41. START:
  42. sys_load_library  library_name, cur_dir_path, library_path, system_path, \
  43. err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i
  44.         cmp     eax,-1
  45.         jz      close
  46.  
  47.  
  48.    mov eax, 40
  49.    mov ebx, 100111b
  50.    mcall
  51. red:                    ; ¯¥à¥à¨á®¢ âì ®ª­®
  52.    mov  eax,48
  53.    mov  ebx,3
  54.    mov  ecx,sc
  55.    mov  edx,sizeof.system_colors
  56.    mcall
  57.         edit_boxes_set_sys_color editbox,editbox_end,sc
  58.     call draw_window    ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª­ 
  59.  
  60. ;---------------------------------------------------------------------
  61. ;---  –ˆŠ‹ Ž€Ž’Šˆ ‘Ž›’ˆ‰  ----------------------------------------
  62. ;---------------------------------------------------------------------
  63.  
  64. still:
  65.     mcall 10
  66.  
  67.     dec  eax             ; ¯¥à¥à¨á®¢ âì ®ª­®?
  68.     jz   red             ; ¥á«¨ ¤  - ­  ¬¥âªã red
  69.     dec  eax
  70.     jz   key
  71.     dec  eax
  72.     jz   button
  73.  
  74. mouse:
  75. ;        mouse_edit_box editbox
  76.         push    dword editbox
  77.         call    [edit_box_mouse]
  78.  
  79.         jmp     still
  80.    
  81. button:
  82.     mov  al,17           ; ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
  83.     mcall
  84.  
  85.     cmp  ah,1            ; ª­®¯ª  á id=1("§ ªàëâì")?
  86.     jne  noclose
  87. close:
  88.     or   eax,-1          ; äã­ªæ¨ï -1: § ¢¥àè¨âì ¯à®£à ¬¬ã
  89.     mcall
  90.  
  91. noclose:
  92.         push    eax
  93.         call    clear_err
  94.         pop     eax
  95.         push    16
  96.         xor     ebx, ebx
  97.         inc     ebx     ; 16.1 = save to /FD/1
  98.         cmp     ah, 2
  99.         je      doit
  100.         inc     ebx     ; 16.2 = save to /FD/2
  101.         cmp     ah, 3
  102.         je      doit
  103.         pop     ebx
  104.         push    18
  105.         mov     bl, 6   ; 18.6 = save to specified folder
  106.         mov     ecx, path3
  107.         cmp     ah, 4
  108.         je      doit
  109.         mov     ecx, path4
  110. doit:
  111.         pop     eax
  112.         mcall
  113.         call    check_for_error
  114.         jmp     still
  115.  
  116. key:        
  117.     mov  al,2
  118.     mcall
  119. ;    key_edit_box editbox
  120.         push    dword editbox
  121.         call    [edit_box_key]
  122.  
  123.     jmp  still
  124.  
  125.  
  126. check_for_error:                      ;Ž¡à ¡®â稪 ®è¨¡®ª
  127.         mov     ecx, [sc.work_text]
  128.         mov     edx, ok
  129.         test    eax, eax
  130.         jz      print
  131.         mov     ecx, 0xdd2222
  132.         add     edx, error3 - ok
  133.         dec     eax
  134.         dec     eax
  135.         jz      print
  136.         add     edx, error5 - error3
  137.         dec     eax
  138.         dec     eax
  139.         jz      print
  140.         add     edx, error8 - error5
  141.         dec     eax
  142.         dec     eax
  143.         dec     eax
  144.         jz      print
  145.         add     edx, error9 - error8
  146.         dec     eax
  147.         jz      print
  148.         add     edx, error10 - error9
  149.         dec     eax
  150.         jz      print
  151.         add     edx, error11 - error10
  152.         dec     eax
  153.         jz      print
  154.         add     edx, aUnknownError - error11
  155.  
  156.  print:
  157.     mov eax,4                              ;­ ¤¯¨á¨
  158.     mov ebx,20 shl 16 + 148
  159.     or  ecx,0x80000000
  160.     mcall
  161.     ret
  162.  
  163. clear_err:
  164.     mov eax,13
  165.     mov ebx,15 shl 16 + 240
  166.     mov ecx,145 shl 16 +15
  167.     mov edx,[sc.work]
  168.     mcall
  169.     ret
  170.  
  171. ;---------------------------------------------------------------------
  172. ;---  Ž…„…‹…ˆ… ˆ Ž’ˆ‘Ž‚Š€ ŽŠ€  ----------------------------------
  173. ;---------------------------------------------------------------------
  174.  
  175. draw_window:
  176.  
  177.    mov eax,12                            ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª­ 
  178.    mov bl,1                              ; 1 - ­ ç¨­ ¥¬ à¨á®¢ âì
  179.    mcall
  180.  
  181.                                          ; ‘Ž‡„€ðŒ ŽŠŽ
  182.    xor eax,eax                           ; äã­ªæ¨ï 0 : ®¯à¥¤¥«¨âì ¨ ®âà¨á®¢ âì ®ª­®
  183.    mov ebx,200 shl 16 + 270              ; [x áâ àâ] *65536 + [x à §¬¥à]
  184.    mov ecx,200 shl 16 + 190              ; [y áâ àâ] *65536 + [y à §¬¥à]
  185.    mov edx,[sc.work]                     ; 梥â à ¡®ç¥© ®¡« á⨠ RRGGBB,8->color gl
  186.    or  edx,0x34000000
  187.    mov edi,title                        ; ‡€ƒŽ‹Ž‚ŽŠ ŽŠ€
  188.    mcall
  189.  
  190.         push    dword editbox
  191.         call    [edit_box_draw]
  192.  
  193. ;draw_edit_box editbox                   ;à¨á®¢ ­¨¥ edit box
  194.  
  195.    mov al,13                            ;®âà¨á®¢ª  ⥭¥© ª­®¯®ª
  196.    mov ebx,194 shl 16 + 60
  197.    mov ecx,34 shl 16 +15
  198.    mov edx,0x444444
  199.    mcall
  200.  
  201.    add ecx,20 shl 16
  202.    mcall
  203.  
  204.    add ecx,20 shl 16
  205.    mcall
  206.  
  207.    add ecx,40 shl 16
  208.    mcall
  209.  
  210.    mov eax,8                             ;®âà¨á®¢ª  ª­®¯®ª
  211.    sub ebx,4 shl 16
  212.    sub ecx,4 shl 16
  213.    mov edx,5
  214.    mov esi,[sc.work_button]
  215.    mcall
  216.  
  217.    sub ecx,40 shl 16
  218.    dec edx
  219.    mcall
  220.  
  221.    sub ecx,20 shl 16
  222.    dec edx
  223.    mcall
  224.  
  225.    sub ecx,20 shl 16
  226.    dec edx
  227.    mcall
  228.  
  229.    mov al,4                              ;­ ¤¯¨á¨
  230.    mov ebx,45 shl 16 + 12
  231.    mov ecx,[sc.work_text]
  232.    or  ecx,0x80000000
  233.    mov edx,label1
  234.    mcall
  235.  
  236.    mov ebx,150 shl 16 + 35
  237.    mov edx,path1
  238.    mcall
  239.  
  240.    add ebx,20
  241.    mov edx,path2
  242.    mcall
  243.  
  244.    mov ebx,75 shl 16 + 75
  245.    mov edx,path3
  246.    mcall
  247.  
  248.    mov ebx,30 shl 16 + 97
  249.    mov edx,label2
  250.    mcall
  251.  
  252.    mov ebx,40 shl 16 + 135
  253.    mov edx,label3
  254.    mcall
  255.  
  256.    mov ecx,[sc.work_button_text]
  257.    or  ecx,0x80000000
  258.    mov ebx,195 shl 16 + 35
  259.    mov edx,save
  260.    mcall
  261.  
  262.    add ebx,20
  263.    mcall
  264.  
  265.    add ebx,20
  266.    mcall
  267.  
  268.    add ebx,40
  269.    mcall
  270.  
  271.    mov al,12                            ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª­ 
  272.    mov ebx,2                            ; 2, § ª®­ç¨«¨ à¨á®¢ âì
  273.    mcall
  274.  
  275.    ret                                  ; ¢ë室¨¬ ¨§ ¯à®æ¥¤ãàë
  276.  
  277.  
  278. ;---------------------------------------------------------------------
  279. ;---  „€›… Žƒ€ŒŒ›  ----------------------------------------------
  280. ;---------------------------------------------------------------------
  281.  
  282. title db appname,version,0
  283.  
  284. editbox:
  285. edit1 edit_box 170,10,113,0xffffff,0xaabbcc,0,0,0,512,path4,mouse_dd,ed_focus,26,26
  286. editbox_end:
  287.  
  288. if lang eq ru
  289. save    db '‘®åà ­¨âì',0
  290. label1  db '‚ë¡¥à¨â¥ ®¤¨­ ¨§ ¢ à¨ ­â®¢:',0
  291. label2  db 'ˆ«¨ ¢¢¥¤¨â¥ ¯®«­ë© ¯ãâì ª ä ©«ã:',0
  292. label3  db '‚ᥠ¯ ¯ª¨ ¤®«¦­ë áãé¥á⢮¢ âì',0
  293. ok      db 'RAM-¤¨áª á®åà ­¥­ ãᯥ譮',0
  294. error3  db '¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬ ',0
  295. error5  db '¥áãé¥áâ¢ãî騩 ¯ãâì',0
  296. error8  db '¥â ¬¥áâ  ­  ¤¨áª¥',0
  297. error9  db '’ ¡«¨æ  FAT à §àã襭 ',0
  298. error10 db '„®áâ㯠§ ¯à¥é¥­',0
  299. error11 db 'Žè¨¡ª  ãáâனá⢠',0
  300. aUnknownError db '¥¨§¢¥áâ­ ï ®è¨¡ª ',0
  301. else if lang eq et
  302. save    db 'Salvesta',0
  303. label1  db 'Vali üks variantidest:',0
  304. label2  db 'Või sisesta teekond failinimeni:',0
  305. label3  db 'Kõik kataloogid peavad eksisteerima',0
  306. ok      db 'RAM-ketas salvestatud edukalt',0
  307. error3  db 'Tundmatu failisüsteem',0
  308. error5  db 'Vigane teekond',0
  309. error8  db 'Ketas täis',0
  310. error9  db 'FAT tabel vigane',0
  311. error10 db 'Juurdepääs keelatud',0
  312. error11 db 'Seadme viga',0
  313. aUnknownError db 'Tundmatu viga',0
  314.  
  315. else
  316. save    db '  Save',0
  317. label1  db 'Select one of the variants:',0
  318. label2  db '   Or enter full path to file:',0
  319. label3  db '    All folders must exist',0
  320. ok      db 'RAM-drive was saved successfully',0
  321. error3  db 'Unknown file system',0
  322. error5  db 'Incorrect path',0
  323. error8  db 'Disk is full',0
  324. error9  db 'FAT table corrupted',0
  325. error10 db 'Access denied',0
  326. error11 db 'Device error',0
  327. aUnknownError db 'Unknown error',0
  328.  
  329. end if
  330. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  331. ;DATA ¤ ­­ë¥
  332. ;‚ᥣ¤  ᮡ«î¤ âì ¯®á«¥¤®¢ â¥«ì­®áâì ¢ ¨¬¥­¨.
  333. system_path      db '/sys/lib/'
  334. library_name     db 'box_lib.obj',0
  335. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  336.  
  337. err_message_found_lib   db 'Sorry I cannot load library box_lib.obj',0
  338. head_f_i:
  339. head_f_l        db 'System error',0
  340. err_message_import      db 'Error on load import library box_lib.obj',0
  341. align 4
  342. myimport:  
  343.  
  344. edit_box_draw   dd      aEdit_box_draw
  345. edit_box_key    dd      aEdit_box_key
  346. edit_box_mouse  dd      aEdit_box_mouse
  347. ;version_ed      dd      aVersion_ed
  348.  
  349.                 dd      0
  350.                 dd      0
  351.  
  352. aEdit_box_draw  db 'edit_box',0
  353. aEdit_box_key   db 'edit_box_key',0
  354. aEdit_box_mouse db 'edit_box_mouse',0
  355. ;aVersion_ed     db 'version_ed',0
  356.  
  357.  
  358. ;mouse_flag: dd 0x0
  359.  
  360. path1   db '/fd/1/',0
  361. path2   db '/fd/2/',0
  362. path3   db '/hd0/1/kolibri.img',0
  363. path4   db '/hd0/1/kolibri/kolibri.img',0  ;¤«ï १¥à¢­®£® á®åà ­¥­¨ï
  364.  
  365. ;---------------------------------------------------------------------
  366.  
  367. rb 514
  368.  
  369. sc     system_colors
  370. mouse_dd        rd 1
  371. cur_dir_path    rb 1096
  372. library_path    rb 1096
  373. align 4
  374. rb 0x100        ; for stack
  375. I_END:                             ; ¬¥âª  ª®­æ  ¯à®£à ¬¬ë
  376.