2,7 → 2,7 |
; Formatting Disk Utility ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
; Compile with FASM |
; FORMAT ver. Oct 16, 2018 |
; FORMAT ver. Oct 17, 2018 |
|
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage |
; All rights reserved. |
37,6 → 37,10 |
dd STACKTOP |
dd 0, 0 |
|
KMENUITEM_NORMAL equ 0 |
KMENUITEM_SUBMENU equ 1 |
KMENUITEM_SEPARATOR equ 2 |
|
include 'lang.inc' |
include '../../macros.inc' |
include '../../proc32.inc' |
64,7 → 68,7 |
or ecx,0x90000000 |
;mov ecx, 0x90000000 |
mov dword[editLU.text_color], ecx |
mov dword[editLD.text_color], ecx |
;mov dword[editLD.text_color], ecx |
mov dword[editRU.text_color], ecx |
mov dword[editRD.text_color], ecx |
mov dword[editMBR.text_color], ecx |
72,6 → 76,26 |
invoke init_checkbox, ch1 |
invoke init_checkbox, ch2 |
|
stdcall [kmenu_init], sc ;kmenu initialisation |
|
stdcall [ksubmenu_new] |
mov [kmFS], eax |
|
stdcall [kmenuitem_new], KMENUITEM_NORMAL, kmFat16, 111 |
stdcall [ksubmenu_add], [kmFS], eax |
stdcall [kmenuitem_new], KMENUITEM_NORMAL, kmFat32, 112 |
stdcall [ksubmenu_add], [kmFS], eax |
stdcall [kmenuitem_new], KMENUITEM_NORMAL, kmNTFS, 113 |
stdcall [ksubmenu_add], [kmFS], eax |
stdcall [kmenuitem_new], KMENUITEM_NORMAL, kmExt2, 114 |
stdcall [ksubmenu_add], [kmFS], eax |
;stdcall [kmenuitem_new], KMENUITEM_SEPARATOR, 0, 0 |
;stdcall [ksubmenu_add], [kmFS], eax |
stdcall [kmenuitem_new], KMENUITEM_NORMAL, kmNone, 110 |
stdcall [ksubmenu_add], [kmFS], eax |
|
stdcall [kmenuitem_new], KMENUITEM_SUBMENU, kmFat16, [kmFS] ;çàãîëîâîê |
|
call draw_window ; draw the window |
|
event_wait: |
95,11 → 119,13 |
invoke check_box_mouse, ch2 |
|
invoke edit_box_mouse, editLU ;ïðîâåðêà ñîáûòèé ìûøè äëÿ editBox'îâ |
invoke edit_box_mouse, editLD |
;invoke edit_box_mouse, editLD |
invoke edit_box_mouse, editRU |
invoke edit_box_mouse, editRD |
invoke edit_box_mouse, editMBR |
|
stdcall [kmainmenu_dispatch_cursorevent], [kmFS] |
|
jmp event_wait |
|
|
110,7 → 136,7 |
key: |
mcall 2 |
invoke edit_box_key, editLU |
invoke edit_box_key, editLD |
;invoke edit_box_key, editLD |
invoke edit_box_key, editRU |
invoke edit_box_key, editRD |
invoke edit_box_key, editMBR |
122,32 → 148,77 |
cmp ah,1 ; button id=1 ? |
jne noclose |
exit: |
mcall -1 ;close this program |
|
mcall -1 |
noclose: |
|
cmp ah, 2 |
cmp ah, 2 ;Format button |
jne no_format |
call format_action |
call butFormat |
jmp event_wait |
no_format: |
cmp ah, 3 |
jne no_browser |
call brouse_action |
cmp ah, 3 ;Brouse button |
jne @f |
call butBrouse |
jmp event_wait |
no_browser: |
jmp event_wait ; This is for ignored events, useful at development |
@@: |
cmp ah, 4 ;Select FS button |
jne @f |
call butSelectFS |
jmp event_wait |
@@: |
cmp ah, 110 ;kmenu list FS |
jb @f |
cmp ah, 114 |
ja @f |
sub ah, 110 |
mov byte[kmID], ah |
jmp red ;event_wait |
@@: |
jmp event_wait |
|
brouse_action: |
|
butBrouse: |
call but_open_dlg |
ret |
format_action: |
|
butFormat: |
ret |
|
butSelectFS: |
push eax ebx ecx |
mcall 9, pi, -1 ;get window coord |
|
mov eax, dword[pi+34] |
add eax, Otstup |
mov word[coord.x], ax |
|
mov eax, dword[pi+38] |
add eax, 129 |
mov word[coord.y], ax |
|
stdcall [ksubmenu_draw], [kmFS], coord |
pop ecx ebx eax |
ret |
|
|
|
delta = 50 |
dy = 15 |
dy = 15 + 40 |
warning_title: db 'Warning!',0 |
draw_warningWindow: |
mcall 12, 1 |
|
mov ebx, 100 * 65536 + (200) ; [x start] *65536 + [x size] |
mov ecx, 100 * 65536 + (90) ; [y start] *65536 + [y size] |
mov edx, 0x14ffffff ; color of work area RRGGBB |
; 0x02000000 = window type 4 (fixed size, skinned window) |
mov esi, 0x808899ff ; color of grab bar RRGGBB |
; 0x80000000 = color glide |
mov edi, warning_title |
mcall 0 |
|
mcall 12, 2 |
ret |
|
draw_window: |
mcall 12, 1 |
|
156,6 → 227,8 |
mcall 8 |
mov edx, 0x80000003 |
mcall 8 |
mov edx, 0x80000004 |
mcall 8 |
|
mov eax, 0 ; function 0 : define and draw window |
mov ebx, 100 * 65536 + (290+delta) ; [x start] *65536 + [x size] |
180,12 → 253,19 |
mov esi, 0xAABBCC ;D7D7D7 ;4466AA |
mcall 8 |
|
;button select FS |
mov ebx, Otstup*65536+120 |
mov ecx, (110)*65536+(21) |
mov edx, 0x00000004 |
mov esi, 0xFFFFFF ;AABBCC |
mcall 8 |
|
invoke check_box_draw, ch1 ;ðèñîâàíèå ÷åêáîêñîâ |
invoke check_box_draw, ch2 |
|
invoke edit_box_draw, editMBR ;ðèñîâàíèå edit box'îâ |
invoke edit_box_draw, editLU |
invoke edit_box_draw, editLD |
;invoke edit_box_draw, editLD |
invoke edit_box_draw, editRU |
invoke edit_box_draw, editRD |
|
202,6 → 282,9 |
ch1 check_box2 Otstup shl 16 + 12, (170+dy) shl 16 + 12, 6, 0xFFFFFFFF, 0xAABBCC, 0, ch_text.1, 100b ; 110b = ch_flag_en and ch_flag_middl |
ch2 check_box2 Otstup shl 16 + 12, (190+dy) shl 16 + 12, 6, 0xFFFFFFFF, 0xAABBCC, 0, ch_text.2, 100b |
|
|
browse db '...', 0 |
|
if lang eq ru ;åñëè ÿçûê ñáîðêè ðóññêèé |
|
title db "Formatting Disk Utility", 0 |
217,7 → 300,7 |
.unit db ' §¬¥à ª« áâ¥à :', 0 |
.option db ' à ¬¥âàë:', 0 |
.format db '®à¬ â¨à®¢ âì', 0 |
.browse db '¡§®à', 0 |
; .browse db '¡§®à', 0 |
|
head_f_i: |
head_f_l db '¨á⥬ ï ®è¨¡ª ',0 |
241,7 → 324,7 |
.unit db 'Allocation unit size:', 0 |
.option db 'Options:', 0 |
.format db 'Format', 0 |
.browse db 'Browse', 0 |
; .browse db 'Browse', 0 |
|
head_f_i: |
head_f_l db 'System error',0 |
282,17 → 365,50 |
mov esi, 8 |
mcall 4 |
|
mov ebx, (Otstup+5) * 65536 + (110+3) |
mov dl, byte[kmID] |
cmp dl, 0 |
jne @f |
mov edx, kmNone |
jmp .printFS |
@@: |
cmp dl, 1 |
jne @f |
mov edx, kmFat16 |
jmp .printFS |
@@: |
cmp dl, 2 |
jne @f |
mov edx, kmFat32 |
jmp .printFS |
@@: |
cmp dl, 3 |
jne @f |
mov edx, kmNTFS |
jmp .printFS |
@@: |
cmp dl, 4 |
jne @f |
mov edx, kmExt2 |
jmp .printFS |
@@: |
mov byte[kmID], 0 |
mov edx, kmNone |
.printFS: |
;mov esi, 8 |
mcall 4 |
|
;buttons text |
mov ebx, (290+delta-Otstup-130+10+2) * 65536 + (277-3+dy) |
mov ecx, 0x90FFFFFF;0xFFFFFF |
mov ecx, 0x90FFFFFF |
mov eax, text.format |
mov edx, eax |
mov esi, 6 |
mcall 4 |
|
mov ebx, (290+delta-Otstup-52+6) * 65536 + (213+dy) ;-3 |
mov ebx, (290+delta-Otstup-52+6+8) * 65536 + (213+dy) |
;mov ecx, 0xFFFFFF |
mov eax, text.browse |
mov eax, browse ;text.browse |
mov edx, eax |
mov esi, 6 |
mcall 4 |
442,6 → 558,17 |
|
;symbolDownArrow db 25,0 |
|
kmNone: db 'None', 0 ;only MBR or ZeroDestroy |
;kmFat12: db 'FAT12', 0 |
kmFat16: db 'FAT16', 0 |
kmFat32: db 'FAT32', 0 |
;kmExtFat: db 'EXTFAT', 0 |
kmNTFS: db 'NTFS', 0 |
kmExt2: db 'EXT2', 0 |
;kmExt3: db 'EXT3', 0 |
;kmExt4: db 'EXT4', 0 |
;kmXFS: db 'XFS', 0 |
|
l_libs_start: |
lib0 l_libs lib0_name, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l, proclib_import,err_message_import0, head_f_i |
lib1 l_libs lib1_name, sys_path, file_name, system_dir0, err_message_found_lib1, head_f_l, import_libkmenu,err_message_import1,head_f_i |
449,7 → 576,7 |
|
;ðàçìåðû: 80 è 120 |
editLU edit_box 120,Otstup,60,0xffffff,0x6a9480,0,0xAABBCC,0,8,Buf.1, mouse_dd, 0,8,8 |
editLD edit_box 120,Otstup,110,0xffffff,0x6a9480,0,0xAABBCC,0,3,Buf.2, mouse_dd, 0,3,3 |
;editLD edit_box 120,Otstup,110,0xffffff,0x6a9480,0,0xAABBCC,0,3,Buf.2, mouse_dd, 0,3,3 |
editRU edit_box 120,Otstup+80+30+delta,60,0xffffff,0x6a9480,0,0xAABBCC,0,16,Buf.3, mouse_dd, 0,16,16 |
editRD edit_box 120,Otstup+80+30+delta,110,0xffffff,0x6a9480,0,0xAABBCC,0,4,Buf.4, mouse_dd, 0,4,4 |
editMBR edit_box 290+delta-Otstup-52-Otstup-20,Otstup+20,210+dy,0xffffff,0x6a9480,0,0xAABBCC,0,255,Buf.5, mouse_dd, 0,25,25 |
459,6 → 586,14 |
sc system_colors |
mouse_dd rd 1 |
|
coord: |
.x: rw 1 |
.y: rw 1 |
|
kmID: rb 1 ;íîìåð âûáðàííîãî ïóíêòà |
kmFS: rd 1 |
mbr: rb 512 |
|
sys_path: rb 4096 |
file_name: rb 4096 |
plugin_path: rb 4096 |
466,6 → 601,7 |
filename_area: rb 256 |
rb 1024 |
procinfo process_information |
pi rb 1024 |
|
I_END: |
rb 256 ;4096 |