forked from KolibriOS/kolibrios
fcf5e6d6b9
*temporary links to editbox and checkbox (..\..\..\develop\examples...) for rdsave, run, scrshoot *optimised circle git-svn-id: svn://kolibrios.org@353 a494cfbc-eb01-0410-851d-a64ba20cac60
334 lines
7.5 KiB
NASM
334 lines
7.5 KiB
NASM
;
|
||
; RDsave ¤«ï Kolibri (0.6.5.0 ¨ áâ àè¥)
|
||
;
|
||
; Mario79 2005
|
||
; Heavyiron 12.02.2007
|
||
;
|
||
; Š®¬¯¨«¨à®¢ âì FASM'®¬
|
||
;
|
||
;---------------------------------------------------------------------
|
||
include 'lang.inc'
|
||
include 'macros.inc'
|
||
|
||
appname equ 'RDsave '
|
||
version equ '1.2'
|
||
|
||
use32 ; ¢ª«îç¨âì 32-¡¨âë© à¥¦¨¬ áᥬ¡«¥à
|
||
org 0x0 ; ¤à¥á æ¨ï á ã«ï
|
||
|
||
db 'MENUET01' ; 8-¡ ©âë© ¨¤¥â¨ä¨ª â®à MenuetOS
|
||
dd 0x01 ; ¢¥àá¨ï § £®«®¢ª (¢á¥£¤ 1)
|
||
dd START ; ¤à¥á ¯¥à¢®© ª®¬ ¤ë
|
||
dd I_END ; à §¬¥à ¯à®£à ¬¬ë
|
||
dd 0x1000 ; ª®«¨ç¥á⢮ ¯ ¬ïâ¨
|
||
dd 0x1000 ; ¤à¥á ¢¥àè¨ë áâíª
|
||
dd 0x0 ; ¤à¥á ¡ãä¥à ¤«ï ¯ à ¬¥â஢ (¥ ¨á¯®«ì§ã¥âáï)
|
||
dd 0x0 ; § १¥à¢¨à®¢ ®
|
||
|
||
include '..\..\..\develop\examples\editbox\trunk\editbox.inc'
|
||
use_edit_box
|
||
|
||
;---------------------------------------------------------------------
|
||
;--- <20>€—€‹Ž <20><>Žƒ<C5BD>€ŒŒ› ----------------------------------------------
|
||
;---------------------------------------------------------------------
|
||
|
||
START:
|
||
mov eax, 40
|
||
mov ebx, 100111b
|
||
int 0x40
|
||
red: ; ¯¥à¥à¨á®¢ âì ®ª®
|
||
call draw_window ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª
|
||
|
||
;---------------------------------------------------------------------
|
||
;--- –ˆŠ‹ Ž<><C5BD>€<EFBFBD>Ž’Šˆ ‘Ž<E28098>›’ˆ‰ ----------------------------------------
|
||
;---------------------------------------------------------------------
|
||
|
||
still:
|
||
push 10
|
||
pop eax
|
||
int 40h
|
||
|
||
dec eax ; ¯¥à¥à¨á®¢ âì ®ª®?
|
||
jz red ; ¥á«¨ ¤ - ¬¥âªã red
|
||
dec eax
|
||
jz key
|
||
dec eax
|
||
jz button
|
||
|
||
mouse:
|
||
mouse_edit_boxes editbox,editbox_end
|
||
jmp still
|
||
|
||
button:
|
||
mov al,17 ; ¯®«ãç¨âì ¨¤¥â¨ä¨ª â®à ¦ ⮩ ª®¯ª¨
|
||
int 0x40
|
||
|
||
cmp ah,1 ; ª®¯ª á id=1("§ ªàëâì")?
|
||
jne noclose
|
||
or eax,-1 ; äãªæ¨ï -1: § ¢¥àè¨âì ¯à®£à ¬¬ã
|
||
int 0x40
|
||
|
||
noclose:
|
||
cmp ah,2
|
||
jne path_2
|
||
call clear_err
|
||
mov al,16
|
||
mov ebx,1
|
||
int 0x40
|
||
call check_for_error
|
||
jmp still
|
||
path_2:
|
||
cmp ah,3
|
||
jne path_3
|
||
call clear_err
|
||
mov al,16
|
||
mov ebx,2
|
||
int 0x40
|
||
call check_for_error
|
||
jmp still
|
||
path_3:
|
||
cmp ah,4
|
||
jne path_4
|
||
call clear_err
|
||
mov al,18
|
||
mov ebx,6
|
||
mov ecx,path3
|
||
int 0x40
|
||
call check_for_error
|
||
jmp still
|
||
path_4:
|
||
call clear_err
|
||
mov eax,18
|
||
mov ebx,6
|
||
mov ecx,path4
|
||
int 0x40
|
||
call check_for_error
|
||
jmp still
|
||
|
||
key:
|
||
mov al,2
|
||
int 0x40
|
||
key_edit_boxes editbox,editbox_end
|
||
jmp still
|
||
|
||
|
||
check_for_error: ;Ž¡à ¡®â稪 ®è¨¡®ª
|
||
cmp eax,0
|
||
jne err1
|
||
mov ecx,[sc.work_text]
|
||
mov edx,ok
|
||
jmp print
|
||
err1:
|
||
cmp eax,1
|
||
jne err3
|
||
mov ecx,0xdd2222
|
||
mov edx,error11
|
||
jmp print
|
||
err3:
|
||
cmp eax,3
|
||
jne err5
|
||
mov ecx,0xdd2222
|
||
mov edx,error3
|
||
jmp print
|
||
err5:
|
||
cmp eax,5
|
||
jne err8
|
||
mov ecx,0xdd2222
|
||
mov edx,error5
|
||
jmp print
|
||
err8:
|
||
cmp eax,8
|
||
jne err9
|
||
mov ecx,0xdd2222
|
||
mov edx,error8
|
||
jmp print
|
||
err9:
|
||
cmp eax,9
|
||
jne err10
|
||
mov ecx,0xdd2222
|
||
mov edx,error9
|
||
jmp print
|
||
err10:
|
||
cmp eax,10
|
||
jne err11
|
||
mov ecx,0xdd2222
|
||
mov edx,error10
|
||
jmp print
|
||
err11:
|
||
mov ecx,0xdd2222
|
||
mov edx,error11
|
||
jmp print
|
||
|
||
print:
|
||
mov eax,4 ; ¤¯¨á¨
|
||
mov ebx,20 shl 16 + 148
|
||
or ecx,0x80000000
|
||
int 0x40
|
||
ret
|
||
|
||
clear_err:
|
||
mov al,13
|
||
mov ebx,15 shl 16 + 240
|
||
mov ecx,145 shl 16 +15
|
||
mov edx,[sc.work]
|
||
int 0x40
|
||
ret
|
||
|
||
;---------------------------------------------------------------------
|
||
;--- Ž<><C5BD>…„…‹…<E280B9>ˆ… ˆ Ž’<C5BD>ˆ‘Ž‚Š€ ŽŠ<C5BD>€ ----------------------------------
|
||
;---------------------------------------------------------------------
|
||
|
||
draw_window:
|
||
|
||
mov eax,48
|
||
mov ebx,3
|
||
mov ecx,sc
|
||
mov edx,sizeof.system_colors
|
||
int 0x40
|
||
|
||
mov eax,12 ; äãªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª
|
||
mov bl,1 ; 1 - ç¨ ¥¬ à¨á®¢ âì
|
||
int 0x40
|
||
|
||
; ‘Ž‡„€ðŒ ŽŠ<C5BD>Ž
|
||
xor eax,eax ; äãªæ¨ï 0 : ®¯à¥¤¥«¨âì ¨ ®âà¨á®¢ âì ®ª®
|
||
mov ebx,200 shl 16 + 270 ; [x áâ àâ] *65536 + [x à §¬¥à]
|
||
mov ecx,200 shl 16 + 190 ; [y áâ àâ] *65536 + [y à §¬¥à]
|
||
mov edx,[sc.work] ; 梥â à ¡®ç¥© ®¡« á⨠RRGGBB,8->color gl
|
||
or edx,0x33000000
|
||
mov edi,header ; ‡€ƒŽ‹Ž‚ŽŠ ŽŠ<C5BD>€
|
||
int 0x40
|
||
|
||
draw_edit_boxes editbox,editbox_end ;à¨á®¢ ¨¥ edit box'®¢
|
||
|
||
mov al,13 ;®âà¨á®¢ª ⥥© ª®¯®ª
|
||
mov ebx,194 shl 16 + 60
|
||
mov ecx,34 shl 16 +15
|
||
mov edx,0x444444
|
||
int 0x40
|
||
|
||
add ecx,20 shl 16
|
||
int 0x40
|
||
|
||
add ecx,20 shl 16
|
||
int 0x40
|
||
|
||
add ecx,40 shl 16
|
||
int 0x40
|
||
|
||
mov eax,8 ;®âà¨á®¢ª ª®¯®ª
|
||
sub ebx,4 shl 16
|
||
sub ecx,4 shl 16
|
||
mov edx,5
|
||
mov esi,[sc.work_button]
|
||
int 0x40
|
||
|
||
sub ecx,40 shl 16
|
||
dec edx
|
||
int 0x40
|
||
|
||
sub ecx,20 shl 16
|
||
dec edx
|
||
int 0x40
|
||
|
||
sub ecx,20 shl 16
|
||
dec edx
|
||
int 0x40
|
||
|
||
mov al,4 ; ¤¯¨á¨
|
||
mov ebx,45 shl 16 + 12
|
||
mov ecx,[sc.work_text]
|
||
or ecx,0x80000000
|
||
mov edx,label1
|
||
int 0x40
|
||
|
||
mov ebx,150 shl 16 + 35
|
||
mov edx,path1
|
||
int 0x40
|
||
|
||
add ebx,20
|
||
mov edx,path2
|
||
int 0x40
|
||
|
||
mov ebx,75 shl 16 + 75
|
||
mov edx,path3
|
||
int 0x40
|
||
|
||
mov ebx,30 shl 16 + 97
|
||
mov edx,label2
|
||
int 0x40
|
||
|
||
mov ebx,40 shl 16 + 135
|
||
mov edx,label3
|
||
int 0x40
|
||
|
||
mov ecx,[sc.work_button_text]
|
||
or ecx,0x80000000
|
||
mov ebx,195 shl 16 + 35
|
||
mov edx,save
|
||
int 0x40
|
||
|
||
add ebx,20
|
||
int 0x40
|
||
|
||
add ebx,20
|
||
int 0x40
|
||
|
||
add ebx,40
|
||
int 0x40
|
||
|
||
mov al,12 ; äãªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª
|
||
mov ebx,2 ; 2, § ª®ç¨«¨ à¨á®¢ âì
|
||
int 0x40
|
||
|
||
ret ; ¢ë室¨¬ ¨§ ¯à®æ¥¤ãàë
|
||
|
||
|
||
;---------------------------------------------------------------------
|
||
;--- „€<E2809E><E282AC>›… <20><>Žƒ<C5BD>€ŒŒ› ----------------------------------------------
|
||
;---------------------------------------------------------------------
|
||
|
||
header db appname,version,0
|
||
|
||
editbox:
|
||
edit1 edit_box 170,10,113,0xffffff,0,0,0,1024,path4,ed_focus
|
||
editbox_end:
|
||
|
||
path1 db '/fd/1/',0
|
||
path2 db '/fd/2/',0
|
||
path3 db '/hd0/1/kolibri.img',0
|
||
|
||
if lang eq ru
|
||
save db '‘®åà ¨âì',0
|
||
label1 db '‚ë¡¥à¨â¥ ®¤¨ ¨§ ¢ ਠ⮢:',0
|
||
label2 db 'ˆ«¨ ¢¢¥¤¨â¥ ¯®«ë© ¯ãâì ª ä ©«ã:',0
|
||
label3 db '‚ᥠ¯ ¯ª¨ ¤®«¦ë áãé¥á⢮¢ âì',0
|
||
ok db 'RAM-¤¨áª á®åà ¥ ãᯥè®',0
|
||
error3 db '<27>¥¨§¢¥áâ ï ä ©«®¢ ï á¨á⥬ ',0
|
||
error5 db '<27>¥áãé¥áâ¢ãî騩 ¯ãâì',0
|
||
error8 db '<27>¥â ¬¥áâ ¤¨áª¥',0
|
||
error9 db '’ ¡«¨æ FAT à §àãè¥ ',0
|
||
error10 db '„®áâ㯠§ ¯à¥é¥',0
|
||
error11 db 'Žè¨¡ª ãáâனá⢠',0
|
||
|
||
else
|
||
save db ' Save',0
|
||
label1 db 'Select one of the variants:',0
|
||
label2 db ' Or enter full path to file:',0
|
||
label3 db ' All folders must exist',0
|
||
ok db 'RAM-drive was saved successfully',0
|
||
error3 db 'Unknown file system',0
|
||
error5 db 'Incorrect path',0
|
||
error8 db 'Disk is full',0
|
||
error9 db 'FAT table corrupted',0
|
||
error10 db 'Access denied',0
|
||
error11 db 'Device error',0
|
||
|
||
end if
|
||
|
||
;---------------------------------------------------------------------
|
||
|
||
I_END: ; ¬¥âª ª®æ ¯à®£à ¬¬ë
|
||
|
||
sc system_colors
|
||
path4 rb 1025;1024+1 |