Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 485 → Rev 451

/programs/system/rdsave/trunk/rdsave.asm
8,7 → 8,7
;
;---------------------------------------------------------------------
include 'lang.inc'
include '..\..\..\macros.inc'
include 'macros.inc'
 
appname equ 'RDsave '
version equ '1.2'
20,13 → 20,13
dd 0x01 ; ¢¥àá¨ï § £®«®¢ª  (¢á¥£¤  1)
dd START ;  ¤à¥á ¯¥à¢®© ª®¬ ­¤ë
dd I_END ; à §¬¥à ¯à®£à ¬¬ë
dd 0x2000 ; ª®«¨ç¥á⢮ ¯ ¬ïâ¨
dd 0x2000 ;  ¤à¥á ¢¥à設ë áâíª 
dd 0x1000 ; ª®«¨ç¥á⢮ ¯ ¬ïâ¨
dd 0x1000 ;  ¤à¥á ¢¥à設ë áâíª 
dd 0x0 ;  ¤à¥á ¡ãä¥à  ¤«ï ¯ à ¬¥â஢ (­¥ ¨á¯®«ì§ã¥âáï)
dd 0x0 ; § à¥§¥à¢¨à®¢ ­®
 
include '..\..\..\develop\examples\editbox\trunk\editbox.inc'
use_edit_box structure_of_potock,22,5
use_edit_box
 
;---------------------------------------------------------------------
;--- €—€‹Ž Žƒ€ŒŒ› ----------------------------------------------
35,7 → 35,7
START:
mov eax, 40
mov ebx, 100111b
mcall
int 0x40
red: ; ¯¥à¥à¨á®¢ âì ®ª­®
call draw_window ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª­ 
 
46,7 → 46,7
still:
push 10
pop eax
mcall
int 40h
 
dec eax ; ¯¥à¥à¨á®¢ âì ®ª­®?
jz red ; ¥á«¨ ¤  - ­  ¬¥âªã red
61,12 → 61,12
button:
mov al,17 ; ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
mcall
int 0x40
 
cmp ah,1 ; ª­®¯ª  á id=1("§ ªàëâì")?
jne noclose
or eax,-1 ; äã­ªæ¨ï -1: § ¢¥àè¨âì ¯à®£à ¬¬ã
mcall
int 0x40
 
noclose:
cmp ah,2
74,7 → 74,7
call clear_err
mov al,16
mov ebx,1
mcall
int 0x40
call check_for_error
jmp still
path_2:
83,7 → 83,7
call clear_err
mov al,16
mov ebx,2
mcall
int 0x40
call check_for_error
jmp still
path_3:
93,7 → 93,7
mov al,18
mov ebx,6
mov ecx,path3
mcall
int 0x40
call check_for_error
jmp still
path_4:
101,13 → 101,13
mov eax,18
mov ebx,6
mov ecx,path4
mcall
int 0x40
call check_for_error
jmp still
 
key:
mov al,2
mcall
int 0x40
key_edit_boxes editbox,editbox_end
jmp still
 
163,7 → 163,7
mov eax,4 ;­ ¤¯¨á¨
mov ebx,20 shl 16 + 148
or ecx,0x80000000
mcall
int 0x40
ret
 
clear_err:
171,7 → 171,7
mov ebx,15 shl 16 + 240
mov ecx,145 shl 16 +15
mov edx,[sc.work]
mcall
int 0x40
ret
 
;---------------------------------------------------------------------
184,11 → 184,11
mov ebx,3
mov ecx,sc
mov edx,sizeof.system_colors
mcall
int 0x40
 
mov eax,12 ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª­ 
mov bl,1 ; 1 - ­ ç¨­ ¥¬ à¨á®¢ âì
mcall
int 0x40
 
; ‘Ž‡„€ðŒ ŽŠŽ
xor eax,eax ; äã­ªæ¨ï 0 : ®¯à¥¤¥«¨âì ¨ ®âà¨á®¢ âì ®ª­®
196,25 → 196,25
mov ecx,200 shl 16 + 190 ; [y áâ àâ] *65536 + [y à §¬¥à]
mov edx,[sc.work] ; 梥â à ¡®ç¥© ®¡« á⨠RRGGBB,8->color gl
or edx,0x33000000
mov edi,title ; ‡€ƒŽ‹Ž‚ŽŠ ŽŠ€
mcall
mov edi,header ; ‡€ƒŽ‹Ž‚ŽŠ ŽŠ€
int 0x40
 
draw_edit_boxes editbox,editbox_end,use_f9,structure_of_potock ;à¨á®¢ ­¨¥ edit box'®¢
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
mcall
int 0x40
 
add ecx,20 shl 16
mcall
int 0x40
 
add ecx,20 shl 16
mcall
int 0x40
 
add ecx,40 shl 16
mcall
int 0x40
 
mov eax,8 ;®âà¨á®¢ª  ª­®¯®ª
sub ebx,4 shl 16
221,19 → 221,19
sub ecx,4 shl 16
mov edx,5
mov esi,[sc.work_button]
mcall
int 0x40
 
sub ecx,40 shl 16
dec edx
mcall
int 0x40
 
sub ecx,20 shl 16
dec edx
mcall
int 0x40
 
sub ecx,20 shl 16
dec edx
mcall
int 0x40
 
mov al,4 ;­ ¤¯¨á¨
mov ebx,45 shl 16 + 12
240,46 → 240,46
mov ecx,[sc.work_text]
or ecx,0x80000000
mov edx,label1
mcall
int 0x40
 
mov ebx,150 shl 16 + 35
mov edx,path1
mcall
int 0x40
 
add ebx,20
mov edx,path2
mcall
int 0x40
 
mov ebx,75 shl 16 + 75
mov edx,path3
mcall
int 0x40
 
mov ebx,30 shl 16 + 97
mov edx,label2
mcall
int 0x40
 
mov ebx,40 shl 16 + 135
mov edx,label3
mcall
int 0x40
 
mov ecx,[sc.work_button_text]
or ecx,0x80000000
mov ebx,195 shl 16 + 35
mov edx,save
mcall
int 0x40
 
add ebx,20
mcall
int 0x40
 
add ebx,20
mcall
int 0x40
 
add ebx,40
mcall
int 0x40
 
mov al,12 ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª­ 
mov ebx,2 ; 2, § ª®­ç¨«¨ à¨á®¢ âì
mcall
int 0x40
 
ret ; ¢ë室¨¬ ¨§ ¯à®æ¥¤ãàë
 
288,12 → 288,18
;--- „€›… Žƒ€ŒŒ› ----------------------------------------------
;---------------------------------------------------------------------
 
title db appname,version,0
header db appname,version,0
 
editbox:
edit1 edit_box 170,10,113,0xffffff,0xaabbcc,0,0,0,512,path4,ed_focus,26,26
edit1 edit_box 170,10,113,0xffffff,0,0,0,512,path4,ed_focus,26
editbox_end:
 
path1 db '/fd/1/',0
path2 db '/fd/2/',0
path3 db '/hd0/1/kolibri.img',0
path4 db '/hd0/1/kolibri/kolibri.img',0 ;¤«ï १¥à¢­®£® á®åà ­¥­¨ï
rb 513
 
if lang eq ru
save db '‘®åà ­¨âì',0
label1 db '‚ë¡¥à¨â¥ ®¤¨­ ¨§ ¢ à¨ ­â®¢:',0
323,20 → 329,10
end if
 
mouse_flag: dd 0x0
structure_of_potock:
rb 100
;---------------------------------------------------------------------
 
path1 db '/fd/1/',0
path2 db '/fd/2/',0
path3 db '/hd0/1/kolibri.img',0
path4 db '/hd0/1/kolibri/kolibri.img',0 ;¤«ï १¥à¢­®£® á®åà ­¥­¨ï
 
;---------------------------------------------------------------------
I_END: ; ¬¥âª  ª®­æ  ¯à®£à ¬¬ë
 
rb 514
 
sc system_colors
 
structure_of_potock:
rb 100
 
 
/programs/system/rdsave/trunk/macros.inc
0,0 → 1,269
; new application structure
macro meos_app_start
{
use32
org 0x0
 
db 'MENUET01'
dd 0x01
dd __start
dd __end
dd __memory
dd __stack
 
if used __params & ~defined __params
dd __params
else
dd 0x0
end if
 
dd 0x0
}
MEOS_APP_START fix meos_app_start
 
macro code
{
__start:
}
CODE fix code
 
macro data
{
__data:
}
DATA fix data
 
macro udata
{
if used __params & ~defined __params
__params:
db 0
__end:
rb 255
else
__end:
end if
__udata:
}
UDATA fix udata
 
macro meos_app_end
{
align 32
rb 2048
__stack:
__memory:
}
MEOS_APP_END fix meos_app_end
 
 
; macro for defining multiline text data
struc mstr [sstring]
{
forward
local ssize
virtual at 0
db sstring
ssize = $
end virtual
dd ssize
db sstring
common
dd -1
}
 
 
; strings
macro sz name,[data] { ; from MFAR [mike.dld]
common
if used name
label name
end if
forward
if used name
db data
end if
common
if used name
.size = $-name
end if
}
 
macro lsz name,[lng,data] { ; from MFAR [mike.dld]
common
if used name
label name
end if
forward
if (used name)&(lang eq lng)
db data
end if
common
if used name
.size = $-name
end if
}
 
 
 
; easy system call macro
macro mpack dest, hsrc, lsrc
{
if (hsrc eqtype 0) & (lsrc eqtype 0)
mov dest, (hsrc) shl 16 + lsrc
else
if (hsrc eqtype 0) & (~lsrc eqtype 0)
mov dest, (hsrc) shl 16
add dest, lsrc
else
mov dest, hsrc
shl dest, 16
add dest, lsrc
end if
end if
}
 
macro __mov reg,a,b { ; mike.dld
if (~a eq)&(~b eq)
mpack reg,a,b
else if (~a eq)&(b eq)
mov reg,a
end if
}
 
macro mcall a,b,c,d,e,f { ; mike.dld
__mov eax,a
__mov ebx,b
__mov ecx,c
__mov edx,d
__mov esi,e
__mov edi,f
int 0x40
}
 
 
 
; optimize the code for size
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp>
 
macro add arg1,arg2
{
if (arg2 eqtype 0)
if (arg2) = 1
inc arg1
else
add arg1,arg2
end if
else
add arg1,arg2
end if
}
 
macro sub arg1,arg2
{
if (arg2 eqtype 0)
if (arg2) = 1
dec arg1
else
sub arg1,arg2
end if
else
sub arg1,arg2
end if
}
 
macro mov arg1,arg2
{
if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0'))
if (arg2) = 0
xor arg1,arg1
else if (arg2) = 1
xor arg1,arg1
inc arg1
else if (arg2) = -1
or arg1,-1
else if (arg2) > -128 & (arg2) < 128
push arg2
pop arg1
else
mov arg1,arg2
end if
else
mov arg1,arg2
end if
}
 
 
macro struct name
{
virtual at 0
name name
sizeof.#name = $ - name
end virtual
}
 
; structures used in MeOS
struc process_information
{
.cpu_usage dd ? ; +0
.window_stack_position dw ? ; +4
.window_stack_value dw ? ; +6
.not_used1 dw ? ; +8
.process_name rb 12 ; +10
.memory_start dd ? ; +22
.used_memory dd ? ; +26
.PID dd ? ; +30
.x_start dd ? ; +34
.y_start dd ? ; +38
.x_size dd ? ; +42
.y_size dd ? ; +46
.slot_state dw ? ; +50
dw ? ; +52 - reserved
.client_left dd ? ; +54
.client_top dd ? ; +58
.client_width dd ? ; +62
.client_height dd ? ; +66
.wnd_state db ? ; +70
rb (1024-71)
}
struct process_information
 
struc system_colors
{
.frame dd ?
.grab dd ?
.grab_button dd ?
.grab_button_text dd ?
.grab_text dd ?
.work dd ?
.work_button dd ?
.work_button_text dd ?
.work_text dd ?
.work_graph dd ?
}
struct system_colors
 
 
; constants
 
; events
EV_IDLE = 0
EV_TIMER = 0
EV_REDRAW = 1
EV_KEY = 2
EV_BUTTON = 3
EV_EXIT = 4
EV_BACKGROUND = 5
EV_MOUSE = 6
EV_IPC = 7
EV_STACK = 8
 
; event mask bits for function 40
EVM_REDRAW = 1b
EVM_KEY = 10b
EVM_BUTTON = 100b
EVM_EXIT = 1000b
EVM_BACKGROUND = 10000b
EVM_MOUSE = 100000b
EVM_IPC = 1000000b
EVM_STACK = 10000000b