Subversion Repositories Kolibri OS

Rev

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