2,7 → 2,7 |
; Formatting Disk Utility ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
; Compile with FASM |
; FORMAT ver. Oct 19, 2018 |
; FORMAT ver. Oct 18, 2018 |
|
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage |
; All rights reserved. |
69,7 → 69,8 |
|
call initBuf |
|
mov dword[editLabel.text_color], ecx |
mov dword[editLU.text_color], ecx |
mov dword[editRU.text_color], ecx |
mov dword[editMBR.text_color], ecx |
|
invoke init_checkbox, ch1 |
115,8 → 116,6 |
mov byte[kmUnitID], 0 |
stdcall [kmenuitem_new], KMENUITEM_SUBMENU, unittext.0, [kmUnit] |
|
call getDeviceList |
|
call draw_window |
|
event_wait: |
143,7 → 142,8 |
|
key: |
mcall 2 |
invoke edit_box_key, editLabel |
invoke edit_box_key, editLU |
invoke edit_box_key, editRU |
invoke edit_box_key, editMBR |
jmp event_wait |
|
175,11 → 175,6 |
call butUnit |
jmp event_wait |
@@: |
cmp ah, 6 ;Select Device button |
jne @f |
call butDevice |
jmp event_wait |
@@: |
cmp ah, 110 ;kmenu list FS |
jb @f |
cmp ah, 114 |
196,14 → 191,6 |
mov byte[kmUnitID], ah |
jmp redraw |
@@: |
cmp ah, 130 ;kmenu Device |
jb @f |
cmp ah, 250 |
ja @f |
sub ah, 130 |
mov byte[kmDeviceID], ah |
jmp redraw |
@@: |
jmp event_wait |
|
mouse: |
210,7 → 197,8 |
invoke check_box_mouse, ch1 ;ïðîâåðêà ÷åê áîêñà |
invoke check_box_mouse, ch2 |
|
invoke edit_box_mouse, editLabel ;ïðîâåðêà ñîáûòèé ìûøè äëÿ editBox'îâ |
invoke edit_box_mouse, editLU ;ïðîâåðêà ñîáûòèé ìûøè äëÿ editBox'îâ |
invoke edit_box_mouse, editRU |
invoke edit_box_mouse, editMBR |
|
stdcall [kmainmenu_dispatch_cursorevent], [kmFS] |
255,23 → 243,6 |
pop ecx ebx eax |
ret |
|
butDevice: |
push eax ebx ecx |
mcall 9, pi, -1 |
|
mov eax, dword[pi+34] |
add eax, Otstup+80+30+delta |
mov word[coordDevice.x], ax |
|
mov eax, dword[pi+38] |
add eax, 79 |
mov word[coordDevice.y], ax |
|
stdcall [ksubmenu_draw], [kmDevice], coordDevice |
pop ecx ebx eax |
ret |
|
|
delta = 50 |
dy = 15 + 40 |
warning_title: db 'Warning!',0 |
293,7 → 264,7 |
mcall |
|
|
mov ebx, (290+delta-Otstup-130+10)*65536+130 |
mov ebx, (290+delta-Otstup-130)*65536+130 |
mov ecx, (270+dy)*65536+(20+3) |
mov edx, 0x00000002 |
mov esi, 0xAABBCC |
319,18 → 290,12 |
mov esi, 0xFFFFFF |
mcall 8 |
|
;button select device |
mov ebx, (Otstup+80+30+delta)*65536+120 |
mov ecx, (60)*65536+(21) |
mov edx, 0x00000006 |
mov esi, 0xFFFFFF |
mcall 8 |
|
invoke check_box_draw, ch1 ;ðèñîâàíèå ÷åêáîêñîâ |
invoke check_box_draw, ch2 |
|
invoke edit_box_draw, editMBR ;ðèñîâàíèå edit box'îâ |
invoke edit_box_draw, editLabel |
invoke edit_box_draw, editLU |
invoke edit_box_draw, editRU |
|
call draw_super_text |
|
375,16 → 340,6 |
.option db ' à ¬¥âàë:', 0 |
.format db '®à¬ â¨à®¢ âì', 0 |
|
unittext: |
.0 db '512 ¡ ©â', 0 |
.1 db '1024 ¡ ©â', 0 |
.2 db '2048 ¡ ©â', 0 |
.3 db '4096 ¡ ©â', 0 |
.4 db '8192 ¡ ©â', 0 |
.5 db '16 ¡', 0 |
.6 db '32 ¡', 0 |
.7 db '64 ¡', 0 |
|
head_f_i: |
head_f_l db '¨á⥬ ï ®è¨¡ª ',0 |
err_message_found_lib0 db '¥ ©¤¥ ¡¨¡«¨®â¥ª ',39,'proc_lib.obj',39,0 |
408,16 → 363,6 |
.option db 'Options:', 0 |
.format db 'Format', 0 |
|
unittext: |
.0 db '512 bytes', 0 |
.1 db '1024 bytes', 0 |
.2 db '2048 bytes', 0 |
.3 db '4096 bytes', 0 |
.4 db '8192 bytes', 0 |
.5 db '16 Kb', 0 |
.6 db '32 Kb', 0 |
.7 db '64 Kb', 0 |
|
head_f_i: |
head_f_l db 'System error',0 |
err_message_found_lib0 db 'Could not find library ',39,'proc_lib.obj',39,0 |
428,71 → 373,6 |
end if |
|
|
|
root_path: db "/", 0 |
|
align 4 |
maxDeviceCount = 250-130 |
read_folder_struct: |
.subfunction dd 1 |
.start dd 0 ;start block |
.encoding dd 3 ;1-cp866, 2-UTF-16LE, 3-utf8 |
.count dd maxDeviceCount ;count blocks |
.return dd 0 ;àäðåñ ïàìÿòè äëÿ ïîëó÷àåìîãî áëîêà ÁÄÂÊ ñ çàãîëîâêîì |
.name db 0 |
.path_adr dd root_path |
noneDevice: db '-', 0 |
;adrDevice: dd 0 |
|
getDeviceList: |
push eax ebx ecx esi |
stdcall [ksubmenu_new] |
mov [kmDevice], eax |
sizeBDVK = 560 ;304 ; |
|
mcall 68, 11 |
|
mcall 68, 12, sizeBDVK*maxDeviceCount+32 |
mov dword[read_folder_struct.return], eax |
mcall 70, read_folder_struct |
cmp eax, 0 |
je .next |
cmp eax, 6 |
je .next |
jmp .none |
.next: |
mov eax, dword[read_folder_struct.return] |
mov esi, deviceAdrStr |
add eax, 32 |
mov ecx, 130 |
@@: |
cmp ebx, 0 |
je @f |
push eax ebx ecx |
add eax, 40 |
;mov [adrDevice], eax |
mov dword[esi], eax |
stdcall [kmenuitem_new], KMENUITEM_NORMAL, [esi], ecx ; [adrDevice], ecx |
stdcall [ksubmenu_add], [kmDevice], eax |
pop ecx ebx eax |
add esi, 4 |
inc ecx |
dec ebx |
add eax, sizeBDVK |
cmp ecx, 250 |
ja @f |
jmp @b |
.none: |
stdcall [kmenuitem_new], KMENUITEM_NORMAL, noneDevice, 130 |
mov dword[esi], noneDevice |
stdcall [ksubmenu_add], [kmDevice], eax |
@@: |
mov byte[kmDeviceID], 0 |
stdcall [kmenuitem_new], KMENUITEM_SUBMENU, unittext.0, [kmDevice] |
pop esi ecx ebx eax |
ret |
|
|
draw_super_text: |
push eax ebx ecx edx edi esi |
mov ebx, Otstup * 65536 + 49-6 ; draw info text with function 4 (x, y) |
602,17 → 482,8 |
;mov esi, 8 |
mcall 4 |
|
;button device |
mov ebx, (Otstup+80+30+delta +5) * 65536 + (60+3) |
mov edx, dword[kmDeviceID] |
shl edx, 2 |
add edx, deviceAdrStr |
mov edx, dword[edx] |
;call setCurrentDeviceInEDX |
mcall 4 |
|
;buttons text |
mov ebx, (290+delta-Otstup-130+10+2+10) * 65536 + (277-3+dy) |
mov ebx, (290+delta-Otstup-130+10+2) * 65536 + (277-3+dy) |
mov ecx, 0x90FFFFFF |
mov eax, text.format |
mov edx, eax |
629,11 → 500,21 |
pop esi edi edx ecx ebx eax |
ret |
|
unittext: |
.0 db '512 bytes', 0 |
.1 db '1024 bytes', 0 |
.2 db '2048 bytes', 0 |
.3 db '4096 bytes', 0 |
.4 db '8192 bytes', 0 |
.5 db '16 Kb', 0 |
.6 db '32 Kb', 0 |
.7 db '64 Kb', 0 |
|
|
Buf: |
.1 db 'NONAME18',0,0 |
;.3 db 'hd0 [4Gb]',0,0 ;100 dup(0) |
;.2 db 'FAT',0,0 ;100 dup(0) |
.3 db 'hd0 [FAT32: 4Gb]',0,0 ;100 dup(0) |
;.4 db '4096',0,0 ;100 dup(0) |
.5 rb 512 ;db '/rd/1/format/fat32mbr.bin', 0, 0 |
|
initBuf: |
844,8 → 725,8 |
load_lib_end: |
|
;ðàçìåðû: 80 è 120 |
editLabel edit_box 120,Otstup,60,0xffffff,0x6a9480,0,0xAABBCC,0,8,Buf.1, mouse_dd, 0,8,8 |
;editRU edit_box 120,Otstup+80+30+delta,60,0xffffff,0x6a9480,0,0xAABBCC,0,16,Buf.3, mouse_dd, 0,16,16 |
editLU edit_box 120,Otstup,60,0xffffff,0x6a9480,0,0xAABBCC,0,8,Buf.1, mouse_dd, 0,8,8 |
editRU edit_box 120,Otstup+80+30+delta,60,0xffffff,0x6a9480,0,0xAABBCC,0,16,Buf.3, mouse_dd, 0,16,16 |
editMBR edit_box 290+delta-Otstup-52-Otstup-20,Otstup+20,210+dy,0xffffff,0x6a9480,0,0xAABBCC,0,255,Buf.5, mouse_dd, 0,0,0 ;25,25 |
|
data_of_code dd 0 |
861,13 → 742,6 |
.x: rw 1 |
.y: rw 1 |
|
coordDevice: |
.x: rw 1 |
.y: rw 1 |
|
kmDeviceID: rd 1 |
kmDevice: rd 1 |
|
kmUnitID: rd 1 |
kmUnit: rd 1 |
|
884,8 → 758,6 |
procinfo process_information |
pi rb 1024 |
|
deviceAdrStr: rd maxDeviceCount |
|
I_END: |
rb 256 |
align 4 |