Subversion Repositories Kolibri OS

Rev

Rev 451 | Rev 502 | 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     0x2000      ; ª®«¨ç¥á⢮ ¯ ¬ïâ¨
  24.   dd     0x2000      ;  ¤à¥á ¢¥à設ë áâíª 
  25.   dd     0x0         ;  ¤à¥á ¡ãä¥à  ¤«ï ¯ à ¬¥â஢ (­¥ ¨á¯®«ì§ã¥âáï)
  26.   dd     0x0         ; § à¥§¥à¢¨à®¢ ­®
  27.  
  28. include '..\..\..\develop\examples\editbox\trunk\editbox.inc'
  29. use_edit_box structure_of_potock,22,5
  30.  
  31. ;---------------------------------------------------------------------
  32. ;---  €—€‹Ž Žƒ€ŒŒ›  ----------------------------------------------
  33. ;---------------------------------------------------------------------
  34.  
  35. START:
  36.    mov eax, 40
  37.    mov ebx, 100111b
  38.    mcall
  39. red:                    ; ¯¥à¥à¨á®¢ âì ®ª­®
  40.     call draw_window    ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª­ 
  41.  
  42. ;---------------------------------------------------------------------
  43. ;---  –ˆŠ‹ Ž€Ž’Šˆ ‘Ž›’ˆ‰  ----------------------------------------
  44. ;---------------------------------------------------------------------
  45.  
  46. still:
  47.     push 10
  48.     pop eax
  49.     mcall
  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_boxes editbox,editbox_end
  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.     cmp  ah,2
  73.     jne  path_2
  74.     call clear_err
  75.     mov  al,16
  76.     mov  ebx,1
  77.     mcall
  78.     call check_for_error
  79.     jmp  still
  80.  path_2:
  81.     cmp  ah,3
  82.     jne  path_3
  83.     call clear_err
  84.     mov  al,16
  85.     mov  ebx,2
  86.     mcall
  87.     call check_for_error
  88.     jmp  still
  89.  path_3:
  90.     cmp  ah,4
  91.     jne  path_4
  92.     call clear_err
  93.     mov  al,18
  94.     mov  ebx,6
  95.     mov  ecx,path3
  96.     mcall
  97.     call check_for_error
  98.     jmp  still
  99.  path_4:
  100.     call clear_err
  101.     mov  eax,18
  102.     mov  ebx,6
  103.     mov  ecx,path4
  104.     mcall
  105.     call check_for_error
  106.     jmp  still
  107.  
  108. key:        
  109.     mov  al,2
  110.     mcall
  111.     key_edit_boxes editbox,editbox_end
  112.     jmp  still
  113.  
  114.  
  115. check_for_error:                      ;Ž¡à ¡®â稪 ®è¨¡®ª
  116.     cmp eax,0
  117.     jne err1
  118.     mov ecx,[sc.work_text]
  119.     mov edx,ok
  120.     jmp print
  121.  err1:
  122.     cmp eax,1
  123.     jne err3
  124.     mov ecx,0xdd2222
  125.     mov edx,error11
  126.     jmp print
  127.  err3:
  128.     cmp eax,3
  129.     jne err5
  130.     mov ecx,0xdd2222
  131.     mov edx,error3
  132.     jmp print
  133.  err5:
  134.     cmp eax,5
  135.     jne err8
  136.     mov ecx,0xdd2222
  137.     mov edx,error5
  138.     jmp print
  139.  err8:
  140.     cmp eax,8
  141.     jne err9
  142.     mov ecx,0xdd2222
  143.     mov edx,error8
  144.     jmp print
  145.  err9:
  146.     cmp eax,9
  147.     jne err10
  148.     mov ecx,0xdd2222
  149.     mov edx,error9
  150.     jmp print
  151. err10:
  152.     cmp eax,10
  153.     jne err11
  154.     mov ecx,0xdd2222
  155.     mov edx,error10
  156.     jmp print
  157.  err11:
  158.     mov ecx,0xdd2222
  159.     mov edx,error11
  160.     jmp print
  161.  
  162.  print:
  163.     mov eax,4                              ;­ ¤¯¨á¨
  164.     mov ebx,20 shl 16 + 148
  165.     or  ecx,0x80000000
  166.     mcall
  167.     ret
  168.  
  169. clear_err:
  170.     mov al,13
  171.     mov ebx,15 shl 16 + 240
  172.     mov ecx,145 shl 16 +15
  173.     mov edx,[sc.work]
  174.     mcall
  175.     ret
  176.  
  177. ;---------------------------------------------------------------------
  178. ;---  Ž…„…‹…ˆ… ˆ Ž’ˆ‘Ž‚Š€ ŽŠ€  ----------------------------------
  179. ;---------------------------------------------------------------------
  180.  
  181. draw_window:
  182.  
  183.    mov  eax,48
  184.    mov  ebx,3
  185.    mov  ecx,sc
  186.    mov  edx,sizeof.system_colors
  187.    mcall
  188.  
  189.    mov eax,12                            ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª­ 
  190.    mov bl,1                              ; 1 - ­ ç¨­ ¥¬ à¨á®¢ âì
  191.    mcall
  192.  
  193.                                          ; ‘Ž‡„€ðŒ ŽŠŽ
  194.    xor eax,eax                           ; äã­ªæ¨ï 0 : ®¯à¥¤¥«¨âì ¨ ®âà¨á®¢ âì ®ª­®
  195.    mov ebx,200 shl 16 + 270              ; [x áâ àâ] *65536 + [x à §¬¥à]
  196.    mov ecx,200 shl 16 + 190              ; [y áâ àâ] *65536 + [y à §¬¥à]
  197.    mov edx,[sc.work]                     ; 梥â à ¡®ç¥© ®¡« á⨠ RRGGBB,8->color gl
  198.    or  edx,0x33000000
  199.    mov edi,title                        ; ‡€ƒŽ‹Ž‚ŽŠ ŽŠ€
  200.    mcall
  201.  
  202. draw_edit_boxes editbox,editbox_end,use_f9,structure_of_potock  ;à¨á®¢ ­¨¥ edit box'®¢
  203.  
  204.    mov al,13                             ;®âà¨á®¢ª  ⥭¥© ª­®¯®ª
  205.    mov ebx,194 shl 16 + 60
  206.    mov ecx,34 shl 16 +15
  207.    mov edx,0x444444
  208.    mcall
  209.  
  210.    add ecx,20 shl 16
  211.    mcall
  212.  
  213.    add ecx,20 shl 16
  214.    mcall
  215.  
  216.    add ecx,40 shl 16
  217.    mcall
  218.  
  219.    mov eax,8                             ;®âà¨á®¢ª  ª­®¯®ª
  220.    sub ebx,4 shl 16
  221.    sub ecx,4 shl 16
  222.    mov edx,5
  223.    mov esi,[sc.work_button]
  224.    mcall
  225.  
  226.    sub ecx,40 shl 16
  227.    dec edx
  228.    mcall
  229.  
  230.    sub ecx,20 shl 16
  231.    dec edx
  232.    mcall
  233.  
  234.    sub ecx,20 shl 16
  235.    dec edx
  236.    mcall
  237.  
  238.    mov al,4                              ;­ ¤¯¨á¨
  239.    mov ebx,45 shl 16 + 12
  240.    mov ecx,[sc.work_text]
  241.    or  ecx,0x80000000
  242.    mov edx,label1
  243.    mcall
  244.  
  245.    mov ebx,150 shl 16 + 35
  246.    mov edx,path1
  247.    mcall
  248.  
  249.    add ebx,20
  250.    mov edx,path2
  251.    mcall
  252.  
  253.    mov ebx,75 shl 16 + 75
  254.    mov edx,path3
  255.    mcall
  256.  
  257.    mov ebx,30 shl 16 + 97
  258.    mov edx,label2
  259.    mcall
  260.  
  261.    mov ebx,40 shl 16 + 135
  262.    mov edx,label3
  263.    mcall
  264.  
  265.    mov ecx,[sc.work_button_text]
  266.    or  ecx,0x80000000
  267.    mov ebx,195 shl 16 + 35
  268.    mov edx,save
  269.    mcall
  270.  
  271.    add ebx,20
  272.    mcall
  273.  
  274.    add ebx,20
  275.    mcall
  276.  
  277.    add ebx,40
  278.    mcall
  279.  
  280.    mov al,12                            ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª­ 
  281.    mov ebx,2                            ; 2, § ª®­ç¨«¨ à¨á®¢ âì
  282.    mcall
  283.  
  284.    ret                                  ; ¢ë室¨¬ ¨§ ¯à®æ¥¤ãàë
  285.  
  286.  
  287. ;---------------------------------------------------------------------
  288. ;---  „€›… Žƒ€ŒŒ›  ----------------------------------------------
  289. ;---------------------------------------------------------------------
  290.  
  291. title db appname,version,0
  292.  
  293. editbox:
  294. edit1 edit_box 170,10,113,0xffffff,0xaabbcc,0,0,0,512,path4,ed_focus,26,26
  295. editbox_end:
  296.  
  297. if lang eq ru
  298. save    db '‘®åà ­¨âì',0
  299. label1  db '‚ë¡¥à¨â¥ ®¤¨­ ¨§ ¢ à¨ ­â®¢:',0
  300. label2  db 'ˆ«¨ ¢¢¥¤¨â¥ ¯®«­ë© ¯ãâì ª ä ©«ã:',0
  301. label3  db '‚ᥠ¯ ¯ª¨ ¤®«¦­ë áãé¥á⢮¢ âì',0
  302. ok      db 'RAM-¤¨áª á®åà ­¥­ ãᯥ譮',0
  303. error3  db '¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬ ',0
  304. error5  db '¥áãé¥áâ¢ãî騩 ¯ãâì',0
  305. error8  db '¥â ¬¥áâ  ­  ¤¨áª¥',0
  306. error9  db '’ ¡«¨æ  FAT à §àã襭 ',0
  307. error10 db '„®áâ㯠§ ¯à¥é¥­',0
  308. error11 db 'Žè¨¡ª  ãáâனá⢠',0
  309.  
  310. else
  311. save    db '  Save',0
  312. label1  db 'Select one of the variants:',0
  313. label2  db '   Or enter full path to file:',0
  314. label3  db '    All folders must exist',0
  315. ok      db 'RAM-drive was saved successfully',0
  316. error3  db 'Unknown file system',0
  317. error5  db 'Incorrect path',0
  318. error8  db 'Disk is full',0
  319. error9  db 'FAT table corrupted',0
  320. error10 db 'Access denied',0
  321. error11 db 'Device error',0
  322.  
  323. end if
  324.  
  325. mouse_flag: dd 0x0
  326.  
  327. path1   db '/fd/1/',0
  328. path2   db '/fd/2/',0
  329. path3   db '/hd0/1/kolibri.img',0
  330. path4   db '/hd0/1/kolibri/kolibri.img',0  ;¤«ï १¥à¢­®£® á®åà ­¥­¨ï
  331.  
  332. ;---------------------------------------------------------------------
  333. I_END:                             ; ¬¥âª  ª®­æ  ¯à®£à ¬¬ë
  334.  
  335. rb 514
  336.  
  337. sc     system_colors
  338.  
  339. structure_of_potock:
  340. rb 100
  341.  
  342.  
  343.