/programs/fs/mfar/trunk/build_en.bat |
---|
1,4 → 1,4 |
@erase lang.inc |
@echo lang fix en >lang.inc |
@fasm mfar.asm mfar |
@erase lang.inc |
@pause |
/programs/fs/mfar/trunk/build_ru.bat |
---|
1,4 → 1,4 |
@erase lang.inc |
@echo lang fix ru >lang.inc |
@fasm mfar.asm mfar |
@erase lang.inc |
@pause |
/programs/fs/mfar/trunk/macros.inc |
---|
0,0 → 1,227 |
; 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 |
} |
; language for programs |
lang fix ru ; ru en fr ge fi |
; code profiling |
macro STARTTIMER |
{ |
push ecx |
push ebx |
rdtsc |
push edx |
push eax |
} |
macro STOPTIMER ;edx:eax = cpu cycles ellapsed |
{ |
rdtsc |
pop ebx |
pop ecx |
clc |
sbb eax,ebx |
sbb edx,ecx |
pop ebx |
pop ecx |
} |
; optimize the code for size |
macro add arg1,arg2 |
{ |
if arg1 in <eax,ebx,ecx,edx,esi,edi,ebp,esp> |
if arg2 eqtype 0 |
if (arg2) = 1 |
inc arg1 |
else |
add arg1,arg2 |
end if |
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 <eax,ebx,ecx,edx,esi,edi,ebp,esp> |
if 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 |
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 |
rb (1024-52) |
} |
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 |
/programs/fs/mfar/trunk/menuet.inc |
---|
137,16 → 137,17 |
SND_PLAYBLOCK = 1 |
SND_SETFORMAT = 2 |
SF_SETLENGTH = 1 |
MF_HDWRITEFILE = 56 |
MF_HDDELFILE = 57 |
MF_FSACCESS = 58 |
FS_READ = 0 |
FS_WRITE = 1 |
FS_DELETE = 2 |
;MF_HDWRITEFILE = 56 |
;MF_HDDELFILE = 57 |
MF_FSACCESS = 70 |
FS_READ = 999999 |
FS_READ_FILE = 0 |
FS_READ_FOLDER = 1 |
FS_WRITE_FILE = 2 |
FS_APPEND = 3 |
FS_LBAREAD = 8 |
FS_LBAWRITE = 9 |
FS_EXECUTE = 16 |
FS_EXECUTE = 7 |
FS_DELETE = 8 |
FS_CREATE_FOL = 9 |
MF_SYSTRACE = 59 |
ST_GETEVENTS = 0 |
MF_IPC = 60 |
/programs/fs/mfar/trunk/mf-copy.inc |
---|
2,7 → 2,7 |
;///// COPYING //////////////////////////////////////////////////////////////// |
;------------------------------------------------------------------------------ |
__func copy_file |
func copy_file |
pushad |
cmp [active_panel],0 |
126,7 → 126,7 |
;------------------------------------------------------------------------------ |
__func draw_window_copy_main |
func draw_window_copy_main |
mcall2 MF_FILLRECT,oX+tW*2,tW*76,oY+tH*7,tH*8,0x00C0C0C0 |
mmov esi,oX+tW*4+2,oX+tW*75+3 |
168,7 → 168,7 |
;------------------------------------------------------------------------------ |
__func draw_copy_input |
func draw_copy_input |
mcall2 MF_FILLRECT,oX+tW*6,tW*68,oY+tH*10,tH,0x00008080 |
mov edx,fc_info.path |
/programs/fs/mfar/trunk/mf-sort.inc |
---|
11,7 → 11,7 |
dd compare_by_extension |
; AL = panel |
__func mfar_sort |
func mfar_sort |
pusha |
cmp al,0 |
jne ._00 |
69,7 → 69,7 |
; ESI = pointer to 1st file info |
; EDI = pointer to 2nd file info |
__func compare_by_name |
func compare_by_name |
mov ecx,11 |
push edi esi |
repe cmpsb |
102,7 → 102,7 |
; ESI = pointer to 1st file info |
; EDI = pointer to 2nd file info |
__func compare_by_extension |
func compare_by_extension |
push edi esi |
mov ecx,3 |
add esi,8 |
/programs/fs/mfar/trunk/mfar.asm |
---|
26,7 → 26,6 |
; +0004C300:FFFB3CFF - dinamically allocated for copy, view, edit etc. |
; |
include 'lang.inc' |
include 'macros.inc' |
include 'menuet.inc' |
include 'mfar.inc' |
290,14 → 289,14 |
;///// DRAW WINDOW //////////////////////////////////////////////////////////// |
;------------------------------------------------------------------------------ |
__func draw_window |
func draw_window |
mcall MF_WINPROPS,WP_GETSYSCLRS,sc,sizeof.system_colors |
mcall MF_WNDDRAW,WD_BEGINDRAW |
mov edx,[fc.background] |
or edx,WS_SKINNED |
or edx,$14000000 |
mov edi,caption |
mcall2 MF_DEFWINDOW,90,oX+tW*80+4,45,oY+tH*25+4 |
mcall1 MF_DRAWTEXT,8,8,[sc.grab_text],caption,caption.size |
mmov esi,oX+2,oX+tW*39+2 |
mmov edi,oY+3,oY+tH*22+3 |
340,7 → 339,7 |
;////////////////////////////////////////////////////////////////////////////// |
;------------------------------------------------------------------------------ |
__func draw_window_full |
func draw_window_full |
call draw_window |
mov edx,1 |
call get_files_data |
360,7 → 359,7 |
align 4 |
len dd ? |
__func get_normal_path |
func get_normal_path |
pusha |
mov ecx,5 |
rep movsb |
394,7 → 393,7 |
; EAX = length needed |
; ECX = current length |
; EDI = path string |
__func get_path_ellipses |
func get_path_ellipses |
cmp ecx,eax |
jbe @f |
pushad |
416,7 → 415,7 |
;////////////////////////////////////////////////////////////////////////////// |
;------------------------------------------------------------------------------ |
__func draw_path |
func draw_path |
pushad |
cmp [active_panel],0 |
jne ._00 |
444,7 → 443,7 |
;------------------------------------------------------------------------------ |
; AL = panel |
__func draw_files |
func draw_files |
push eax |
mmov ecx,oY+tH*2-1,tH*FPC |
mov edx,[fc.background] |
519,7 → 518,7 |
;////////////////////////////////////////////////////////////////////////////// |
;------------------------------------------------------------------------------ |
__func draw_bottom_keys |
func draw_bottom_keys |
pushad |
mcall2 MF_FILLRECT,oX-1,tW*80+1,oY+tH*24-1,tH+1,[fc.pathbg] |
dec ecx |
551,7 → 550,7 |
; ESI = X1*65536+X2 |
; EDI = Y1*65536+Y2 |
; EDX = color |
__func draw_frame |
func draw_frame |
mov ecx,edi |
mov ebx,edi |
shr ebx,16 |
578,7 → 577,7 |
;------------------------------------------------------------------------------ |
; EDX = pointer to file data |
__func get_file_color |
func get_file_color |
push esi |
mov cl,[edx+11] |
test cl,(FA_HIDDEN or FA_SYSTEM) |
632,7 → 631,7 |
;------------------------------------------------------------------------------ |
; EDI = color |
__func draw_sel |
func draw_sel |
pushad |
cmp [active_panel],0 |
jne ._00 |
715,7 → 714,7 |
;------------------------------------------------------------------------------ |
; AL = panel |
__func draw_file_info |
func draw_file_info |
push eax |
mmov ecx,oY+tH*21,tH |
mov edx,[fc.background] |
790,7 → 789,7 |
;////////////////////////////////////////////////////////////////////////////// |
;------------------------------------------------------------------------------ |
__func get_file_name |
func get_file_name |
pushad |
mov eax,[esi+0] |
mov [f_name+0],eax |
810,7 → 809,7 |
;------------------------------------------------------------------------------ |
; ESI = pointer to file data |
__func get_file_info |
func get_file_info |
pushad |
mov eax,[esi+12] |
mov dword[f_info],FS_READ |
888,7 → 887,7 |
;------------------------------------------------------------------------------ |
; DL = panel |
__func get_files_data |
func get_files_data |
pushad |
mov [d_tcnt],0 |
mov [d_ttsz],0 |
985,7 → 984,7 |
;////////////////////////////////////////////////////////////////////////////// |
;------------------------------------------------------------------------------ |
__func execute_current_file |
func execute_current_file |
pushad |
cmp [active_panel],0 |
jne ._00 |
1080,7 → 1079,7 |
;////////////////////////////////////////////////////////////////////////////// |
;------------------------------------------------------------------------------ |
__func delete_current_file |
func delete_current_file |
pushad |
popad |
ret |
1124,12 → 1123,12 |
dd read_area |
dd MEM_FOR_OS |
.path: |
rb 200 |
rb 255 |
f_plen0 dd 5 |
f_plen1 dd 5 |
sz caption,'MFAR : PRE-ALPHA-8.1' |
sz caption,'MFAR : PRE-ALPHA-8.1',0 |
sz fcfile,'MFAR DAT' |
sz p_hd,'/HD/1',0 |
sz p_rd,'/RD/1',0 |