1,4 → 1,5 |
VERSION equ "0.3Ĺ" |
VERSION equ "0.4Å" |
|
use32 |
org 0 |
db 'MENUET01' |
13,8 → 14,9 |
|
;=============================== |
|
sz_cont db "?#" |
sz_head db "Calc+ [v", VERSION, "]", 0 |
buttons db "789456123()%^-+/*0" |
; buttons db "789456123()%^-+/*0" |
edb1 edit_box 184, 8, 12, 0, 0, 0, 0, 0, 500, \ |
exp, group, ed_always_focus + ed_focus, 0, 0 |
|
27,16 → 29,17 |
;=============================== |
|
main: |
mov [ans.buffer], word "0" |
mov [ans.size], 15 |
mov [ans.buffer], dword "= 0" |
mov [ans.size], 3 * 6 + 9 |
|
mcall 40, 100111b |
mcall 48, 3, scn, 192 |
|
|
m2m [edb1.color], [scn.gui_face] |
m2m [edb1.shift_color], [scn.gui_select] |
m2m [edb1.focus_border_color], [scn.gui_face] |
m2m [edb1.text_color], [scn.gui_fctext] |
m2m [edb1.text_color], [scn.gui_text] |
|
mcall 68, 11 |
stdcall dll.Load, imports |
66,38 → 69,51 |
ev_redraw: |
mov edx, [scn.win_body] |
or edx, 0x34 shl 24 |
mcall 0, <100, 236>, <100, 164>, , , sz_head |
mcall 0, <100, 236 + 100>, <100, 164 - 102>, , , sz_head |
|
mcall 8, <275, 12>, <-17, 12>, 2 + 1 shl 30 |
sub ebx, 12 shl 16 |
inc edx |
mcall |
|
mcall 4, <279, -14>, [scn.win_title], sz_cont, 1 |
add ebx, 1 shl 16 |
mcall |
|
sub ebx, 13 shl 16 |
inc edx |
mcall |
|
call draw_textbox |
|
mov [but_id], 0x4000000A |
mov [txt_id], buttons |
mov [txt_x], 16 |
mov [but_w], 38 |
stdcall draw_button, 4, 42 |
stdcall draw_button, 46, 42 |
stdcall draw_button, 88, 42 |
stdcall draw_button, 4, 66 |
stdcall draw_button, 46, 66 |
stdcall draw_button, 88, 66 |
stdcall draw_button, 4, 90 |
stdcall draw_button, 46, 90 |
stdcall draw_button, 88, 90 |
stdcall draw_button, 88, 114 |
; mov [but_id], 0x0000000A |
; mov [txt_id], buttons |
; mov [txt_x], 16 |
; mov [but_w], 38 |
; stdcall draw_button, 4, 42 |
; stdcall draw_button, 46, 42 |
; stdcall draw_button, 88, 42 |
; stdcall draw_button, 4, 66 |
; stdcall draw_button, 46, 66 |
; stdcall draw_button, 88, 66 |
; stdcall draw_button, 4, 90 |
; stdcall draw_button, 46, 90 |
; stdcall draw_button, 88, 90 |
; stdcall draw_button, 88, 114 |
; |
; stdcall draw_button, 144, 42 |
; stdcall draw_button, 186, 42 |
; stdcall draw_button, 144, 66 |
; stdcall draw_button, 186, 66 |
; stdcall draw_button, 144, 90 |
; stdcall draw_button, 186, 90 |
; stdcall draw_button, 144, 114 |
; stdcall draw_button, 186, 114 |
|
stdcall draw_button, 144, 42 |
stdcall draw_button, 186, 42 |
stdcall draw_button, 144, 66 |
stdcall draw_button, 186, 66 |
stdcall draw_button, 144, 90 |
stdcall draw_button, 186, 90 |
stdcall draw_button, 144, 114 |
stdcall draw_button, 186, 114 |
; mov [txt_x], 37 |
; mov [but_w], 80 |
; stdcall draw_button, 4, 114 |
|
mov [txt_x], 37 |
mov [but_w], 80 |
stdcall draw_button, 4, 114 |
|
jmp update |
|
;---------------------- |
108,6 → 124,8 |
mcall 2 |
cmp ah, 27 |
je exit |
cmp ah, 13 |
je calc |
invoke editbox.key, edb1 |
jmp update |
|
121,36 → 139,9 |
cmp ah, 1 |
je exit |
|
cmp ah, 2 |
jne .not_copy |
|
.copy: |
|
mov eax, exp |
mov ebx, ans.buffer |
mov ecx, 0 |
@@: |
mov dl, [ebx] |
mov [eax], dl |
inc eax |
inc ebx |
inc ecx |
cmp [eax - 1], byte 0 |
jne @b |
|
dec ecx |
mov [edb1.size], ecx |
m2m [edb1.pos], [edb1.size] |
|
jmp .redraw |
|
.not_copy: |
|
cmp ah, 19 |
jne .not_del |
|
.del: |
|
cmp [edb1.pos], 0 |
je update |
mov eax, exp |
171,36 → 162,35 |
dec [edb1.size] |
m2m [edb1.shift], [edb1.pos] |
jmp .redraw |
|
.not_del: |
|
cmp ah, 10 |
jl update |
cmp ah, 50 |
jg update |
; cmp ah, 10 |
; jl update |
; cmp ah, 50 |
; jg update |
; |
; movzx eax, ah |
; add eax, buttons |
; sub eax, 10 |
; mov al, [eax] |
; |
; mov ebx, exp |
; add ebx, [edb1.size] |
; mov ecx, exp |
; add ecx, [edb1.pos] |
; @@: |
; cmp ebx, ecx |
; je @f |
; mov dl, [ebx - 1] |
; mov [ebx], dl |
; dec ebx |
; jmp @b |
; @@: |
; |
; mov [ebx], al |
; inc [edb1.size] |
; inc [edb1.pos] |
|
movzx eax, ah |
add eax, buttons |
sub eax, 10 |
mov al, [eax] |
|
mov ebx, exp |
add ebx, [edb1.size] |
mov ecx, exp |
add ecx, [edb1.pos] |
@@: |
cmp ebx, ecx |
je @f |
mov dl, [ebx - 1] |
mov [ebx], dl |
dec ebx |
jmp @b |
@@: |
|
mov [ebx], al |
inc [edb1.size] |
inc [edb1.pos] |
|
.redraw: |
call draw_textbox |
jmp update |
225,7 → 215,10 |
cmp [error_n], 0 |
jne .error |
|
stdcall convert_to_str, eax, ans.buffer |
mov [ans.buffer], word "= " |
|
stdcall convert_to_str, eax, ans.buffer + 2 |
add eax, 2 |
imul eax, 6 |
add eax, 9 |
mov [ans.size], eax |
271,110 → 264,58 |
|
;---------------------- |
|
proc draw_button, x, y |
mcall 13, <[x], [but_w]>, <[y], 20>, [scn.gui_frame] |
; proc draw_button, x, y |
; mcall 8, <[x], [but_w]>, <[y], 20>, [but_id], [scn.btn_face] |
; |
; mcall 1, [x], [y], [scn.win_face] |
; add ebx, [but_w] |
; mcall |
; add ecx, 20 |
; mcall |
; sub ebx, [but_w] |
; mcall |
; |
; mov ebx, [x] |
; add ebx, [txt_x] |
; shl ebx, 16 |
; add ebx, [y] |
; add ebx, 7 |
; mcall 4, , [scn.win_text], [txt_id], 1 |
; |
; inc dword [txt_id] |
; inc dword [but_id] |
; |
; ret |
; endp |
|
add ebx, 1 shl 16 |
add ecx, 1 shl 16 |
sub ebx, 2 |
sub ecx, 2 |
mcall , , , [scn.3d_light] |
|
add ebx, 1 shl 16 |
add ecx, 1 shl 16 |
dec ebx |
dec ecx |
mcall , , , [scn.3d_dark] |
|
dec ebx |
dec ecx |
mcall , , , [scn.win_face] |
|
mcall 1, [x], [y], [scn.win_body] |
|
add ebx, [but_w] |
dec ebx |
mcall |
|
add ecx, 20 |
dec ecx |
mcall |
|
sub ebx, [but_w] |
inc ebx |
mcall |
|
mov ebx, [x] |
inc ebx |
shl ebx, 16 |
add ebx, [but_w] |
sub ebx, 3 |
mov ecx, [y] |
inc ecx |
shl ecx, 16 |
add ecx, 20 |
sub ecx, 3 |
mov edx, [but_id] |
mcall 8 |
|
mov ebx, [x] |
add ebx, [txt_x] |
shl ebx, 16 |
add ebx, [y] |
add ebx, 7 |
mcall 4, , [scn.win_text], [txt_id], 1 |
|
inc dword [txt_id] |
inc dword [but_id] |
|
ret |
endp |
|
;---------------------- |
|
proc draw_textbox |
mcall 13, < 4, 220>, < 8, 23>, [scn.gui_frame] |
mcall 13, <4, 320>, < 8, 23>, [scn.gui_frame] |
mov edx, [scn.gui_face] |
cmp [error_n], 0 |
je @f |
mov edx, 0xFFAAAA |
@@: |
mcall 13, < 5, 218>, < 9, 21> |
mcall , < 5, 218>, < 9, 1>, [scn.3d_face] |
mcall 13, < 5, 318>, < 9, 21> |
mcall , < 5, 318>, < 9, 1>, [scn.3d_face] |
mcall , < 5, 1>, < 10, 20> |
mcall , < 5, 218>, < 31, 1>, [scn.3d_light] |
mcall , < 5, 318>, < 31, 1>, [scn.3d_light] |
|
mov ebx, 224 |
mov ebx, 328 |
sub ebx, [ans.size] |
shl ebx, 16 |
inc ebx |
mcall , , < 9, 21>, [scn.gui_frame] |
add ebx, [ans.size] |
add ebx, 1 shl 16 |
sub ebx, 3 |
mcall , , , [scn.3d_light] |
cmp [error_n], 0 |
jne .btn_not |
mcall 8, , , 0x40000002 |
.btn_not: |
add ebx, 1 shl 16 |
add ecx, 1 shl 16 |
dec ebx |
dec ecx |
mcall 13, , , [scn.win_face] |
shr ecx, 16 |
mov bx, cx |
add ebx, 3 shl 16 + 6 |
mov ecx, [scn.win_text] |
or ecx, 1b shl 31 |
add ebx, 16 |
mov ecx, [scn.gui_intext] |
or ecx, 1 shl 31 |
mcall 4, , , ans.buffer |
|
mcall 1, 4, 8, [scn.win_body] |
mcall , 223 |
mcall , 323 |
mcall , , 30, [scn.3d_light] |
mcall , 4 |
|
mov ebx, 214 |
mov ebx, 318 |
sub ebx, [ans.size] |
cmp ebx, 24 |
jg @f |