1,5 → 1,4 |
VERSION equ "0.1Å" |
|
VERSION equ "0.2Å" |
use32 |
org 0 |
db 'MENUET01' |
10,11 → 9,12 |
include "../../dll.inc" |
include "../../develop/libraries/box_lib/trunk/box_lib.mac" |
include "parser.inc" |
;include "../../debug.inc" |
|
;=============================== |
|
sz_head db "Calc+ [v", VERSION, "]", 0 |
buttons db "1234567890.%-+*/()" |
buttons db "123456789()%^-+/*0" |
edb1 edit_box 184, 8, 12, 0, 0, 0, 0, 0, 500, \ |
exp, group, ed_always_focus + ed_focus, 0, 0 |
|
44,7 → 44,7 |
;---------------------- |
|
update: |
mcall 23, 50 |
mcall 23, 5 |
|
cmp eax, EV_REDRAW |
je ev_redraw |
68,87 → 68,42 |
or edx, 0x34 shl 24 |
mcall 0, <100, 236>, <100, 164>, , , sz_head |
|
mcall 13, < 4, 220>, < 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 , < 5, 1>, < 10, 20> |
mcall , < 5, 218>, < 31, 1>, [scn.3d_light] |
call draw_textbox |
|
mov ebx, 224 |
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] |
add ebx, 1 shl 16 |
add ecx, 1 shl 16 |
dec ebx |
dec ecx |
mcall , , , [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 |
mcall 4, , , ans.buffer |
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 |
|
mcall 1, 4, 8, [scn.win_body] |
mcall , 223 |
mcall , , 30, [scn.3d_light] |
mcall , 4 |
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 ebx, 214 |
sub ebx, [ans.size] |
cmp ebx, 24 |
jg @f |
mov ebx, 24 |
@@: |
mov [edb1.width], ebx |
m2m [edb1.color], [scn.gui_face] |
m2m [edb1.focus_border_color], [scn.gui_face] |
cmp [error_n], 0 |
je @f |
mov [edb1.color], 0xFFAAAA |
mov [edb1.focus_border_color], 0xFFAAAA |
@@: |
invoke editbox.draw, edb1 |
mov [txt_x], 37 |
mov [but_w], 80 |
stdcall draw_button, 4, 114 |
|
mov [but_id], 0x4000000A |
stdcall draw_button, 4, 38, 42, buttons + 00, 15 |
stdcall draw_button, 46, 38, 42, buttons + 01, 15 |
stdcall draw_button, 88, 38, 42, buttons + 02, 15 |
stdcall draw_button, 4, 38, 66, buttons + 03, 15 |
stdcall draw_button, 46, 38, 66, buttons + 04, 15 |
stdcall draw_button, 88, 38, 66, buttons + 05, 15 |
stdcall draw_button, 4, 38, 90, buttons + 06, 15 |
stdcall draw_button, 46, 38, 90, buttons + 07, 15 |
stdcall draw_button, 88, 38, 90, buttons + 08, 15 |
stdcall draw_button, 4, 80, 114, buttons + 09, 35 |
stdcall draw_button, 88, 38, 114, buttons + 10, 15 |
|
stdcall draw_button, 144, 38, 42, buttons + 11, 15 |
stdcall draw_button, 186, 38, 42, buttons + 12, 15 |
stdcall draw_button, 144, 38, 66, buttons + 13, 15 |
stdcall draw_button, 186, 38, 66, buttons + 14, 15 |
stdcall draw_button, 144, 38, 90, buttons + 15, 15 |
stdcall draw_button, 186, 38, 90, buttons + 16, 15 |
stdcall draw_button, 144, 38, 114, buttons + 17, 15 |
stdcall draw_button, 186, 38, 114, buttons + 18, 15 |
|
jmp update |
|
;---------------------- |
|
ev_key: |
mov [timer], 1 |
mov [timer], 10 |
|
mcall 2 |
cmp ah, 27 |
159,7 → 114,7 |
;---------------------- |
|
ev_button: |
mov [timer], 1 |
mov [timer], 10 |
|
mcall 17 |
|
166,9 → 121,36 |
cmp ah, 1 |
je exit |
|
cmp ah, 22 |
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 |
188,7 → 170,7 |
dec [edb1.pos] |
dec [edb1.size] |
m2m [edb1.shift], [edb1.pos] |
jmp ev_redraw |
jmp .redraw |
|
.not_del: |
|
219,7 → 201,9 |
inc [edb1.size] |
inc [edb1.pos] |
|
jmp ev_redraw |
.redraw: |
call draw_textbox |
jmp update |
|
;---------------------- |
|
245,24 → 229,50 |
imul eax, 6 |
add eax, 9 |
mov [ans.size], eax |
jmp ev_redraw |
jmp .redraw |
|
.error: |
cmp [error_n], 1 |
je .err_1 |
jmp ev_redraw |
cmp [error_n], 4 |
je .err_4 |
|
mov [ans.buffer + 0], dword "Expe" |
mov [ans.buffer + 4], dword "cted" |
mov [ans.buffer + 8], dword " ')'" |
mov [ans.buffer + 12], byte 0 |
mov [ans.size], 81 |
|
cmp [error_n], 2 |
je .redraw |
cmp [error_n], 3 |
je .err_3 |
.err_1: |
mov [ans.buffer + 0], dword "Div." |
mov [ans.buffer + 4], dword " by " |
mov [ans.buffer + 8], dword "zero" |
mov [ans.buffer + 8], byte "0" |
mov [ans.buffer + 9], byte 0 |
mov [ans.size], 63 |
jmp .redraw |
.err_4: |
mov [ans.buffer + 0], dword "Inpu" |
mov [ans.buffer + 4], dword "t er" |
mov [ans.buffer + 8], dword "rror" |
mov [ans.buffer + 12], byte 0 |
mov [ans.size], 81 |
jmp ev_redraw |
jmp .redraw |
.err_3: |
mov [ans.buffer + 10], byte "(" |
jmp .redraw |
|
.redraw: |
call draw_textbox |
jmp update |
|
;---------------------- |
|
proc draw_button, x, w, y, txt, txtx |
mcall 13, <[x], [w]>, <[y], 20>, [scn.gui_frame] |
proc draw_button, x, y |
mcall 13, <[x], [but_w]>, <[y], 20>, [scn.gui_frame] |
|
add ebx, 1 shl 16 |
add ecx, 1 shl 16 |
282,7 → 292,7 |
|
mcall 1, [x], [y], [scn.win_body] |
|
add ebx, [w] |
add ebx, [but_w] |
dec ebx |
mcall |
|
290,7 → 300,7 |
dec ecx |
mcall |
|
sub ebx, [w] |
sub ebx, [but_w] |
inc ebx |
mcall |
|
297,7 → 307,7 |
mov ebx, [x] |
inc ebx |
shl ebx, 16 |
add ebx, [w] |
add ebx, [but_w] |
sub ebx, 3 |
mov ecx, [y] |
inc ecx |
306,20 → 316,85 |
sub ecx, 3 |
mov edx, [but_id] |
mcall 8 |
inc dword[but_id] |
|
mov ebx, [x] |
add ebx, [txtx] |
add ebx, [txt_x] |
shl ebx, 16 |
add ebx, [y] |
add ebx, 7 |
mcall 4, , [scn.win_text], [txt], 1 |
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] |
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 , < 5, 1>, < 10, 20> |
mcall , < 5, 218>, < 31, 1>, [scn.3d_light] |
|
mov ebx, 224 |
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 |
mcall 4, , , ans.buffer |
|
mcall 1, 4, 8, [scn.win_body] |
mcall , 223 |
mcall , , 30, [scn.3d_light] |
mcall , 4 |
|
mov ebx, 214 |
sub ebx, [ans.size] |
cmp ebx, 24 |
jg @f |
mov ebx, 24 |
@@: |
mov [edb1.width], ebx |
m2m [edb1.color], [scn.gui_face] |
m2m [edb1.focus_border_color], [scn.gui_face] |
cmp [error_n], 0 |
je @f |
mov [edb1.color], 0xFFAAAA |
mov [edb1.focus_border_color], 0xFFAAAA |
@@: |
invoke editbox.draw, edb1 |
|
ret |
endp |
|
;---------------------- |
|
dataend: |
|
;=============================== |
339,5 → 414,8 |
scn sys_colors_new |
timer rd 1 |
but_id rd 1 |
but_w rd 1 |
txt_id rd 1 |
txt_x rd 1 |
|
memory: |