Subversion Repositories Kolibri OS

Rev

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