Subversion Repositories Kolibri OS

Rev

Rev 4919 | Rev 4943 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4919 Rev 4939
Line 1... Line 1...
1
VERSION equ "0.3Ĺ"
1
VERSION equ "0.4Å"
-
 
2
 
2
    use32
3
    use32
3
    org     0
4
    org     0
4
    db	    'MENUET01'
5
    db	    'MENUET01'
5
    dd	    1, main, dataend, memory, stacktop, 0, 0
6
    dd	    1, main, dataend, memory, stacktop, 0, 0
Line 11... Line 12...
11
  ;  include "../../debug.inc"
12
;    include "../../debug.inc"
12
    include "parser.inc"
13
    include "parser.inc"
Line 13... Line 14...
13
 
14
 
Line -... Line 15...
-
 
15
 ;===============================
14
 ;===============================
16
 
15
 
17
    sz_cont db "?#"
16
    sz_head db "Calc+ [v", VERSION, "]", 0
18
    sz_head db "Calc+ [v", VERSION, "]", 0
17
    buttons db "789456123()%^-+/*0"
19
;    buttons db "789456123()%^-+/*0"
Line 18... Line 20...
18
    edb1    edit_box 184, 8, 12, 0, 0, 0, 0, 0, 500, \
20
    edb1    edit_box 184, 8, 12, 0, 0, 0, 0, 0, 500, \
19
		     exp, group, ed_always_focus + ed_focus, 0, 0
21
		     exp, group, ed_always_focus + ed_focus, 0, 0
Line 25... Line 27...
25
		 editbox.mouse, "edit_box_mouse"
27
		 editbox.mouse, "edit_box_mouse"
Line 26... Line 28...
26
 
28
 
Line 27... Line 29...
27
 ;===============================
29
 ;===============================
28
 
30
 
29
 main:
31
 main:
Line 30... Line 32...
30
    mov     [ans.buffer], word "0"
32
    mov     [ans.buffer], dword "= 0"
31
    mov     [ans.size], 15
33
    mov     [ans.size], 3 * 6 + 9
Line -... Line 34...
-
 
34
 
32
 
35
    mcall   40, 100111b
33
    mcall   40, 100111b
36
    mcall   48, 3, scn, 192
34
    mcall   48, 3, scn, 192
37
 
35
 
38
 
Line 36... Line 39...
36
    m2m     [edb1.color],	       [scn.gui_face]
39
    m2m     [edb1.color],	       [scn.gui_face]
37
    m2m     [edb1.shift_color],        [scn.gui_select]
40
    m2m     [edb1.shift_color],        [scn.gui_select]
Line 38... Line 41...
38
    m2m     [edb1.focus_border_color], [scn.gui_face]
41
    m2m     [edb1.focus_border_color], [scn.gui_face]
Line 64... Line 67...
64
 ;----------------------
67
 ;----------------------
Line 65... Line 68...
65
 
68
 
66
 ev_redraw:
69
 ev_redraw:
67
    mov     edx, [scn.win_body]
70
    mov     edx, [scn.win_body]
68
    or	    edx, 0x34 shl 24
71
    or	    edx, 0x34 shl 24
-
 
72
    mcall   0, <100, 236 + 100>, <100, 164 - 102>, , , sz_head
-
 
73
 
-
 
74
    mcall   8, <275, 12>, <-17, 12>, 2 + 1 shl 30
-
 
75
    sub     ebx, 12 shl 16
-
 
76
    inc     edx
-
 
77
    mcall
-
 
78
 
-
 
79
    mcall   4, <279, -14>, [scn.win_title], sz_cont, 1
-
 
80
    add     ebx, 1 shl 16
-
 
81
    mcall
-
 
82
 
-
 
83
    sub     ebx, 13 shl 16
-
 
84
    inc     edx
Line 69... Line 85...
69
    mcall    0, <100, 236>, <100, 164>, , , sz_head
85
    mcall
Line 70... Line 86...
70
 
86
 
71
    call    draw_textbox
87
    call    draw_textbox
72
 
88
 
73
    mov     [but_id], 0x4000000A
89
;    mov     [but_id], 0x0000000A
74
    mov     [txt_id], buttons
90
;    mov     [txt_id], buttons
75
    mov     [txt_x], 16
91
;    mov     [txt_x], 16
76
    mov     [but_w], 38
92
;    mov     [but_w], 38
77
    stdcall draw_button,   4,  42
93
;    stdcall draw_button,   4,  42
78
    stdcall draw_button,  46,  42
94
;    stdcall draw_button,  46,  42
79
    stdcall draw_button,  88,  42
95
;    stdcall draw_button,  88,  42
80
    stdcall draw_button,   4,  66
96
;    stdcall draw_button,   4,  66
81
    stdcall draw_button,  46,  66
97
;    stdcall draw_button,  46,  66
82
    stdcall draw_button,  88,  66
98
;    stdcall draw_button,  88,  66
83
    stdcall draw_button,   4,  90
99
;    stdcall draw_button,   4,  90
84
    stdcall draw_button,  46,  90
100
;    stdcall draw_button,  46,  90
85
    stdcall draw_button,  88,  90
101
;    stdcall draw_button,  88,  90
86
    stdcall draw_button,  88, 114
102
;    stdcall draw_button,  88, 114
87
 
103
;
88
    stdcall draw_button, 144,  42
104
;    stdcall draw_button, 144,  42
89
    stdcall draw_button, 186,  42
105
;    stdcall draw_button, 186,  42
90
    stdcall draw_button, 144,  66
106
;    stdcall draw_button, 144,  66
91
    stdcall draw_button, 186,  66
107
;    stdcall draw_button, 186,  66
92
    stdcall draw_button, 144,  90
108
;    stdcall draw_button, 144,  90
93
    stdcall draw_button, 186,  90
109
;    stdcall draw_button, 186,  90
94
    stdcall draw_button, 144, 114
110
;    stdcall draw_button, 144, 114
95
    stdcall draw_button, 186, 114
111
;    stdcall draw_button, 186, 114
96
 
112
 
Line 97... Line 113...
97
    mov     [txt_x], 37
113
;    mov     [txt_x], 37
Line 98... Line 114...
98
    mov     [but_w], 80
114
;    mov     [but_w], 80
Line 106... Line 122...
106
    mov     [timer], 10
122
    mov     [timer], 10
Line 107... Line 123...
107
 
123
 
108
    mcall   2
124
    mcall   2
109
    cmp     ah, 27
125
    cmp     ah, 27
-
 
126
    je	    exit
-
 
127
    cmp     ah, 13
110
    je	    exit
128
    je	    calc
111
    invoke  editbox.key, edb1
129
    invoke  editbox.key, edb1
Line 112... Line 130...
112
    jmp     update
130
    jmp     update
Line 119... Line 137...
119
    mcall   17
137
    mcall   17
Line 120... Line 138...
120
 
138
 
121
    cmp     ah, 1
139
    cmp     ah, 1
Line 122... Line -...
122
    je	    exit
-
 
123
 
-
 
124
    cmp     ah, 2
-
 
125
    jne     .not_copy
-
 
126
 
-
 
127
 .copy:
-
 
128
 
-
 
129
    mov     eax, exp
-
 
130
    mov     ebx, ans.buffer
-
 
131
    mov     ecx, 0
-
 
132
  @@:
-
 
133
    mov     dl, [ebx]
-
 
134
    mov     [eax], dl
-
 
135
    inc     eax
-
 
136
    inc     ebx
-
 
137
    inc     ecx
-
 
138
    cmp     [eax - 1], byte 0
-
 
139
    jne     @b
-
 
140
 
-
 
141
    dec     ecx
-
 
142
    mov     [edb1.size], ecx
-
 
143
    m2m     [edb1.pos], [edb1.size]
-
 
144
 
-
 
145
    jmp     .redraw
-
 
146
 
-
 
147
 .not_copy:
140
    je	    exit
148
 
141
 
149
    cmp     ah, 19
-
 
150
    jne     .not_del
142
    cmp     ah, 19
151
 
-
 
152
 .del:
143
    jne     .not_del
153
 
144
 .del:
154
    cmp     [edb1.pos], 0
145
    cmp     [edb1.pos], 0
155
    je	    update
146
    je	    update
156
    mov     eax, exp
147
    mov     eax, exp
Line 169... Line 160...
169
  @@:
160
  @@:
170
    dec     [edb1.pos]
161
    dec     [edb1.pos]
171
    dec     [edb1.size]
162
    dec     [edb1.size]
172
    m2m     [edb1.shift], [edb1.pos]
163
    m2m     [edb1.shift], [edb1.pos]
173
    jmp     .redraw
164
    jmp     .redraw
174
 
-
 
175
 .not_del:
165
 .not_del:
Line 176... Line 166...
176
 
166
 
177
    cmp     ah, 10
167
;    cmp     ah, 10
178
    jl	    update
168
;    jl      update
179
    cmp     ah, 50
169
;    cmp     ah, 50
180
    jg	    update
170
;    jg      update
181
 
171
;
182
    movzx   eax, ah
172
;    movzx   eax, ah
183
    add     eax, buttons
173
;    add     eax, buttons
184
    sub     eax, 10
174
;    sub     eax, 10
185
    mov     al, [eax]
175
;    mov     al, [eax]
186
 
176
;
187
    mov     ebx, exp
177
;    mov     ebx, exp
188
    add     ebx, [edb1.size]
178
;    add     ebx, [edb1.size]
189
    mov     ecx, exp
179
;    mov     ecx, exp
190
    add     ecx, [edb1.pos]
180
;    add     ecx, [edb1.pos]
191
  @@:
181
;  @@:
192
    cmp     ebx, ecx
182
;    cmp     ebx, ecx
193
    je	    @f
183
;    je      @f
194
    mov     dl, [ebx - 1]
184
;    mov     dl, [ebx - 1]
195
    mov     [ebx], dl
185
;    mov     [ebx], dl
196
    dec     ebx
186
;    dec     ebx
197
    jmp     @b
187
;    jmp     @b
198
  @@:
188
;  @@:
199
 
189
;
200
    mov     [ebx], al
190
;    mov     [ebx], al
201
    inc     [edb1.size]
191
;    inc     [edb1.size]
Line 202... Line 192...
202
    inc     [edb1.pos]
192
;    inc     [edb1.pos]
203
 
193
 
204
 .redraw:
194
 .redraw:
Line 223... Line 213...
223
 calc:
213
 calc:
224
    stdcall parse
214
    stdcall parse
225
    cmp     [error_n], 0
215
    cmp     [error_n], 0
226
    jne     .error
216
    jne     .error
Line -... Line 217...
-
 
217
 
-
 
218
    mov     [ans.buffer], word "= "
227
 
219
 
-
 
220
    stdcall convert_to_str, eax, ans.buffer + 2
228
    stdcall convert_to_str, eax, ans.buffer
221
    add     eax, 2
229
    imul    eax, 6
222
    imul    eax, 6
230
    add     eax, 9
223
    add     eax, 9
231
    mov     [ans.size], eax
224
    mov     [ans.size], eax
Line 269... Line 262...
269
    call    draw_textbox
262
    call    draw_textbox
270
    jmp     update
263
    jmp     update
Line 271... Line 264...
271
 
264
 
Line 272... Line 265...
272
 ;----------------------
265
 ;----------------------
273
 
266
 
274
 proc draw_button, x, y
-
 
275
    mcall   13, <[x], [but_w]>, <[y], 20>, [scn.gui_frame]
-
 
276
 
-
 
277
    add     ebx, 1 shl 16
-
 
278
    add     ecx, 1 shl 16
-
 
279
    sub     ebx, 2
-
 
280
    sub     ecx, 2
-
 
281
    mcall   , , , [scn.3d_light]
-
 
282
 
-
 
283
    add     ebx, 1 shl 16
-
 
284
    add     ecx, 1 shl 16
-
 
285
    dec     ebx
-
 
286
    dec     ecx
-
 
287
    mcall   , , , [scn.3d_dark]
-
 
288
 
-
 
289
    dec     ebx
-
 
290
    dec     ecx
267
; proc draw_button, x, y
291
    mcall   , , , [scn.win_face]
268
;    mcall   8, <[x], [but_w]>, <[y], 20>, [but_id], [scn.btn_face]
292
 
-
 
293
    mcall   1, [x], [y], [scn.win_body]
269
;
294
 
-
 
295
    add     ebx, [but_w]
270
;    mcall   1, [x], [y], [scn.win_face]
296
    dec     ebx
-
 
297
    mcall
271
;    add     ebx, [but_w]
298
 
-
 
299
    add     ecx, 20
272
;    mcall
300
    dec     ecx
-
 
301
    mcall
273
;    add     ecx, 20
302
 
-
 
303
    sub     ebx, [but_w]
274
;    mcall
304
    inc     ebx
-
 
305
    mcall
-
 
306
 
-
 
307
    mov     ebx, [x]
-
 
308
    inc     ebx
-
 
309
    shl     ebx, 16
-
 
310
    add     ebx, [but_w]
-
 
311
    sub     ebx, 3
-
 
312
    mov     ecx, [y]
-
 
313
    inc     ecx
-
 
314
    shl     ecx, 16
-
 
315
    add     ecx, 20
-
 
316
    sub     ecx, 3
-
 
317
    mov     edx, [but_id]
275
;    sub     ebx, [but_w]
318
    mcall   8
276
;    mcall
319
 
277
;
320
    mov     ebx, [x]
278
;    mov     ebx, [x]
321
    add     ebx, [txt_x]
279
;    add     ebx, [txt_x]
322
    shl     ebx, 16
280
;    shl     ebx, 16
323
    add     ebx, [y]
281
;    add     ebx, [y]
324
    add     ebx, 7
282
;    add     ebx, 7
325
    mcall   4, , [scn.win_text], [txt_id], 1
283
;    mcall   4, , [scn.win_text], [txt_id], 1
326
 
284
;
327
    inc     dword [txt_id]
285
;    inc     dword [txt_id]
328
    inc     dword [but_id]
286
;    inc     dword [but_id]
329
 
287
;
Line 330... Line 288...
330
    ret
288
;    ret
Line 331... Line 289...
331
 endp
289
; endp
332
 
290
 
333
 ;----------------------
291
 ;----------------------
334
 
292
 
335
 proc draw_textbox
293
 proc draw_textbox
336
    mcall   13, <  4, 220>, <  8,  23>, [scn.gui_frame]
294
    mcall   13, <4, 320>, <  8,  23>, [scn.gui_frame]
337
    mov     edx, [scn.gui_face]
295
    mov     edx, [scn.gui_face]
338
    cmp     [error_n], 0
296
    cmp     [error_n], 0
339
    je	    @f
297
    je	    @f
340
    mov     edx, 0xFFAAAA
298
    mov     edx, 0xFFAAAA
341
  @@:
299
  @@:
Line 342... Line 300...
342
    mcall   13, <  5, 218>, <  9, 21>
300
    mcall   13, <  5, 318>, <  9, 21>
343
    mcall     , <  5, 218>, <  9,  1>, [scn.3d_face]
301
    mcall     , <  5, 318>, <  9,  1>, [scn.3d_face]
344
    mcall     , <  5,	1>, < 10, 20>
302
    mcall     , <  5,	1>, < 10, 20>
345
    mcall     , <  5, 218>, < 31,  1>, [scn.3d_light]
-
 
346
 
-
 
347
    mov     ebx, 224
-
 
348
    sub     ebx, [ans.size]
-
 
349
    shl     ebx, 16
-
 
350
    inc     ebx
-
 
351
    mcall     , 	  , < 9, 21>, [scn.gui_frame]
-
 
352
    add     ebx, [ans.size]
-
 
353
    add     ebx, 1 shl 16
-
 
354
    sub     ebx, 3
-
 
355
    mcall     , 	  ,	    , [scn.3d_light]
-
 
356
    cmp     [error_n], 0
-
 
357
    jne     .btn_not
-
 
358
    mcall   8, , , 0x40000002
-
 
359
 .btn_not:
-
 
360
    add     ebx, 1 shl 16
303
    mcall     , <  5, 318>, < 31,  1>, [scn.3d_light]
361
    add     ecx, 1 shl 16
-
 
362
    dec     ebx
-
 
363
    dec     ecx
304
 
364
    mcall   13, 	  ,	    , [scn.win_face]
305
    mov      ebx, 328
365
    shr     ecx, 16
306
    sub      ebx, [ans.size]
Line 366... Line 307...
366
    mov     bx, cx
307
    shl      ebx, 16
367
    add     ebx, 3 shl 16 + 6
308
    add      ebx, 16
368
    mov     ecx, [scn.win_text]
309
    mov      ecx, [scn.gui_intext]
369
    or	    ecx, 1b shl 31
310
    or	     ecx, 1 shl 31
Line 370... Line 311...
370
    mcall   4, , , ans.buffer
311
    mcall    4, , , ans.buffer
371
 
312
 
372
    mcall    1,   4,  8, [scn.win_body]
313
    mcall    1,   4,  8, [scn.win_body]
373
    mcall     , 223
314
    mcall     , 323
374
    mcall     ,    , 30, [scn.3d_light]
315
    mcall     ,    , 30, [scn.3d_light]
375
    mcall     ,   4
316
    mcall     ,   4