Subversion Repositories Kolibri OS

Rev

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

Rev 4939 Rev 4943
Line 1... Line 1...
1
VERSION equ "0.4Å"
1
VERSION equ "0.5"
Line 2... Line 2...
2
 
2
 
3
    use32
3
    use32
4
    org     0
4
    org     0
5
    db	    'MENUET01'
5
    db	    'MENUET01'
Line 12... Line 12...
12
;    include "../../debug.inc"
12
  ;  include "../../debug.inc"
13
    include "parser.inc"
13
    include "parser.inc"
Line 14... Line 14...
14
 
14
 
Line -... Line 15...
-
 
15
 ;===============================
-
 
16
 
-
 
17
    LIST_ITEM_SIZE   equ 16
-
 
18
    LIST_ITEM_COUNT  equ 6
-
 
19
    LIST_SIZE	     equ LIST_ITEM_SIZE * LIST_ITEM_COUNT
-
 
20
    LIST_ITEM_COLOR1 equ dword [scn.btn_face]
-
 
21
    LIST_ITEM_COLOR2 equ dword [scn.win_face]
-
 
22
    LIST_ITEM_TEXT1  equ dword [scn.btn_text]
-
 
23
    LIST_ITEM_TEXT2  equ dword [scn.win_text]
-
 
24
    LIST_ITEM_Y      equ LIST_ITEM_SIZE / 2 - 3
-
 
25
 
15
 ;===============================
26
    KEYB_SIZE	     equ 140
16
 
27
 
-
 
28
    sz_cont db "Keyboard ", 0x10
17
    sz_cont db "?#"
29
    sz_head db "Calc+ [v", VERSION, "]", 0
18
    sz_head db "Calc+ [v", VERSION, "]", 0
30
    btn_clr db ""
19
;    buttons db "789456123()%^-+/*0"
31
    buttons db "|%^*/-+)(=7894561230"
Line 20... Line 32...
20
    edb1    edit_box 184, 8, 12, 0, 0, 0, 0, 0, 500, \
32
    edb1    edit_box 0, 8, 12, 0, 0, 0, 0, 0, 480, \
21
		     exp, group, ed_always_focus + ed_focus, 0, 0
33
		     exp, group, ed_always_focus + ed_focus, 0, 0
22
 
34
 
Line 56... Line 68...
56
    cmp     eax, EV_BUTTON
68
    cmp     eax, EV_BUTTON
57
    je	    ev_button
69
    je	    ev_button
58
    cmp     eax, EV_MOUSE
70
    cmp     eax, EV_MOUSE
59
    je	    ev_mouse
71
    je	    ev_mouse
Line 60... Line -...
60
 
-
 
61
    dec     [timer]
-
 
62
    cmp     [timer], 0
-
 
63
    je	    calc
-
 
64
 
72
 
Line 65... Line 73...
65
    jmp     update
73
    jmp     update
Line 66... Line 74...
66
 
74
 
67
 ;----------------------
-
 
68
 
-
 
69
 ev_redraw:
-
 
70
    mov     edx, [scn.win_body]
-
 
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
 ;----------------------
Line -... Line 76...
-
 
76
 
75
    sub     ebx, 12 shl 16
77
 ev_redraw:
76
    inc     edx
78
    mcall   12, 1
77
    mcall
79
 
Line -... Line 80...
-
 
80
 ; WINDOW
-
 
81
    mov     edx, [scn.win_face]
78
 
82
    or	    edx, 0x34 shl 24
79
    mcall   4, <279, -14>, [scn.win_title], sz_cont, 1
83
    mcall   0, <100, 236 + 100 - 50 - 25>, <100, 66 + LIST_SIZE>, , , sz_head
-
 
84
 
80
    add     ebx, 1 shl 16
85
 ; TOOLBAR
-
 
86
    mov     ebx, (275 - 50 - 25 - 50) shl 16 + 64
-
 
87
    cmp     [keyb], byte 1
-
 
88
    jne     @f
Line -... Line 89...
-
 
89
    add     ebx, KEYB_SIZE shl 16
81
    mcall
90
  @@:
-
 
91
    mcall   8, , <-17, 12>, 2 + 1 shl 30
-
 
92
    add     ebx, 4 shl 16 - (64 + 14)
Line 82... Line -...
82
 
-
 
83
    sub     ebx, 13 shl 16
-
 
84
    inc     edx
-
 
85
    mcall
93
    mcall   4, , [scn.win_title], sz_cont, 10
86
 
-
 
87
    call    draw_textbox
-
 
88
 
-
 
89
;    mov     [but_id], 0x0000000A
-
 
90
;    mov     [txt_id], buttons
-
 
91
;    mov     [txt_x], 16
-
 
92
;    mov     [but_w], 38
-
 
93
;    stdcall draw_button,   4,  42
-
 
94
;    stdcall draw_button,  46,  42
-
 
95
;    stdcall draw_button,  88,  42
-
 
96
;    stdcall draw_button,   4,  66
-
 
97
;    stdcall draw_button,  46,  66
-
 
98
;    stdcall draw_button,  88,  66
-
 
99
;    stdcall draw_button,   4,  90
-
 
100
;    stdcall draw_button,  46,  90
-
 
101
;    stdcall draw_button,  88,  90
-
 
102
;    stdcall draw_button,  88, 114
-
 
103
;
-
 
104
;    stdcall draw_button, 144,  42
-
 
105
;    stdcall draw_button, 186,  42
-
 
106
;    stdcall draw_button, 144,  66
-
 
107
;    stdcall draw_button, 186,  66
-
 
108
;    stdcall draw_button, 144,  90
-
 
Line 109... Line 94...
109
;    stdcall draw_button, 186,  90
94
 
Line 110... Line 95...
110
;    stdcall draw_button, 144, 114
95
 ; CONTENT
Line 111... Line 96...
111
;    stdcall draw_button, 186, 114
96
    call    draw_textbox
112
 
-
 
113
;    mov     [txt_x], 37
-
 
114
;    mov     [but_w], 80
97
    call    draw_keyb
115
;    stdcall draw_button,   4, 114
98
    call    draw_list
116
 
99
 
117
    jmp     update
100
    mcall   12, 2
118
 
101
 
Line 130... Line 113...
130
    jmp     update
113
    jmp     update
Line 131... Line 114...
131
 
114
 
Line 132... Line 115...
132
 ;----------------------
115
 ;----------------------
133
 
-
 
134
 ev_button:
-
 
135
    mov     [timer], 10
116
 
Line -... Line 117...
-
 
117
 ev_button:
136
 
118
    mcall   17
137
    mcall   17
119
 
Line -... Line 120...
-
 
120
 ; EXIT
138
 
121
    cmp     ah, 1
139
    cmp     ah, 1
122
    je	    exit
140
    je	    exit
-
 
141
 
123
 
142
    cmp     ah, 19
124
 ; DELETE
143
    jne     .not_del
125
    cmp     ah, 4
144
 .del:
126
    jne     .not_del
145
    cmp     [edb1.pos], 0
127
    cmp     [edb1.pos], 0
Line 162... Line 144...
162
    dec     [edb1.size]
144
    dec     [edb1.size]
163
    m2m     [edb1.shift], [edb1.pos]
145
    m2m     [edb1.shift], [edb1.pos]
164
    jmp     .redraw
146
    jmp     .redraw
165
 .not_del:
147
 .not_del:
Line -... Line 148...
-
 
148
 
166
 
149
 ; SHOW/HIDE KEYBOARD
-
 
150
    cmp     ah, 2
-
 
151
    jne     .not_keyb
-
 
152
 
-
 
153
    cmp     [keyb], byte 0
-
 
154
    je	    .open
-
 
155
 
-
 
156
    mcall   67, -1, -1, 286 - 25, -1
-
 
157
    mov     [keyb], 0
-
 
158
    mov     [sz_cont + 9], byte 0x10
-
 
159
    jmp     ev_redraw
-
 
160
 
-
 
161
 .open:
-
 
162
    mcall   67, -1, -1, 286 - 25 + KEYB_SIZE, -1
-
 
163
    mov     [keyb], 1
-
 
164
    mov     [sz_cont + 9], byte 0x11
-
 
165
    jmp     ev_redraw
167
;    cmp     ah, 10
166
 
-
 
167
    jmp     update
-
 
168
 .not_keyb:
-
 
169
 
168
;    jl      update
170
 ; CALCULATE
169
;    cmp     ah, 50
171
    cmp     ah, 19
-
 
172
    je	    calc
-
 
173
 
-
 
174
 ; LIST
-
 
175
    cmp     ah, 0x60
170
;    jg      update
176
    jl	    .not_list
-
 
177
 
171
;
178
    sub     ah, 0x60
-
 
179
    movzx   ebx, ah
172
;    movzx   eax, ah
180
    imul    ebx, 512
173
;    add     eax, buttons
181
    add     ebx, history
174
;    sub     eax, 10
182
    add     ebx, 482
175
;    mov     al, [eax]
183
    stdcall str_len, ebx
176
;
184
 
177
;    mov     ebx, exp
185
    mov     edx, exp
-
 
186
    add     edx, [edb1.size]
178
;    add     ebx, [edb1.size]
187
    add     edx, eax
179
;    mov     ecx, exp
188
    mov     edi, exp
180
;    add     ecx, [edb1.pos]
189
    add     edi, [edb1.pos]
181
;  @@:
190
  @@:
182
;    cmp     ebx, ecx
191
    cmp     edx, edi
-
 
192
    je	    @f
-
 
193
    mov     esi, edx
-
 
194
    sub     esi, eax
183
;    je      @f
195
    push    eax
184
;    mov     dl, [ebx - 1]
196
    mov     al, [esi]
-
 
197
    mov     [edx], al
185
;    mov     [ebx], dl
198
    pop     eax
186
;    dec     ebx
199
    dec     edx
187
;    jmp     @b
200
    jmp     @b
-
 
201
  @@:
188
;  @@:
202
    add     [edb1.size], eax
-
 
203
 
-
 
204
  @@:
-
 
205
    cmp     eax, 0
-
 
206
    je	    @f
189
;
207
    mov     cl, [ebx]
190
;    mov     [ebx], al
208
    mov     [edi], cl
-
 
209
    inc     edi
-
 
210
    inc     ebx
191
;    inc     [edb1.size]
211
    dec     eax
-
 
212
    inc     [edb1.pos]
-
 
213
    jmp     @b
-
 
214
  @@:
-
 
215
 
-
 
216
    jmp     .redraw
-
 
217
 .not_list:
-
 
218
 
-
 
219
 ; KEYBOARD
-
 
220
    cmp     ah, 10
-
 
221
    jl	    update
-
 
222
    cmp     ah, 50
-
 
223
    jg	    update
-
 
224
    mov     dh, ah
-
 
225
 
-
 
226
    mov     ebx, exp
-
 
227
    add     ebx, [edb1.size]
-
 
228
    mov     ecx, exp
-
 
229
    add     ecx, [edb1.pos]
-
 
230
    cmp     dh, 30
-
 
231
    jl	    @f
-
 
232
    add     ebx, 2
-
 
233
  @@:
-
 
234
    cmp     ebx, ecx
-
 
235
    je	    @f
-
 
236
    mov     dl, [ebx - 1]
-
 
237
    mov     [ebx], dl
-
 
238
    dec     ebx
-
 
239
    jmp     @b
Line -... Line 240...
-
 
240
  @@:
-
 
241
 
-
 
242
    movzx   eax, dh
-
 
243
    add     eax, buttons
-
 
244
    sub     eax, 10
-
 
245
    mov     al, [eax]
-
 
246
 
-
 
247
    mov     [ebx], al
-
 
248
    inc     [edb1.size]
-
 
249
    inc     [edb1.pos]
-
 
250
    cmp     dh, 30
-
 
251
    jl	    @f
-
 
252
    add     [edb1.size], 2
192
;    inc     [edb1.pos]
253
    add     [edb1.pos], 2
193
 
254
  @@:
194
 .redraw:
255
 .redraw:
Line 195... Line 256...
195
    call    draw_textbox
256
    call    draw_textbox
Line 217... Line 278...
217
 
278
 
Line 218... Line 279...
218
    mov     [ans.buffer], word "= "
279
    mov     [ans.buffer], word "= "
219
 
280
 
-
 
281
    stdcall convert_to_str, eax, ans.buffer + 2
220
    stdcall convert_to_str, eax, ans.buffer + 2
282
    add     eax, 2
221
    add     eax, 2
283
    mov     edi, eax
222
    imul    eax, 6
284
    imul    eax, 6
-
 
285
    add     eax, 9
-
 
286
    mov     [ans.size], eax
-
 
287
 
-
 
288
 ; HISTORY
-
 
289
    mov     ecx, LIST_ITEM_COUNT - 1
-
 
290
    mov     eax, history
-
 
291
    add     eax, (LIST_ITEM_COUNT - 1) * 512
-
 
292
  @@:
-
 
293
    mov     ebx, eax
-
 
294
    sub     ebx, 512
-
 
295
    stdcall str_cpy, ebx, eax
-
 
296
    add     ebx, 480
-
 
297
    add     eax, 480
-
 
298
    stdcall str_cpy, ebx, eax
-
 
299
    sub     ebx, 480
-
 
300
    sub     eax, 480
-
 
301
    mov     esi, [ebx + 508]
-
 
302
    mov     [eax + 508], esi
-
 
303
    sub     eax, 512
-
 
304
    loop    @b
-
 
305
 
-
 
306
    stdcall str_cpy, exp, history
-
 
307
    stdcall str_cpy, ans.buffer, history + 480
-
 
308
    mov     esi, [ans.size]
-
 
309
    mov     dword[history + 508], esi
-
 
310
    not     [his_even]
-
 
311
 
-
 
312
 ; Check length
-
 
313
    mov     esi, 37
-
 
314
    sub     esi, edi
-
 
315
    stdcall str_len, exp
-
 
316
    sub     esi, eax
-
 
317
    cmp     esi, 0
-
 
318
    jg	    .redraw
-
 
319
 
-
 
320
    mov     ebx, history
-
 
321
    add     ebx, eax
-
 
322
    add     ebx, esi
223
    add     eax, 9
323
    mov     [ebx], dword ".."
Line -... Line 324...
-
 
324
 
-
 
325
    jmp     .redraw
224
    mov     [ans.size], eax
326
 
225
    jmp     .redraw
327
 ; ERRORS
226
 
328
 
227
 .error:
329
 .error:
228
    cmp     [error_n], 1
330
    cmp     [error_n], 1
Line 238... Line 340...
238
 
340
 
239
    cmp     [error_n], 2
341
    cmp     [error_n], 2
240
    je	    .redraw
342
    je	    .redraw
241
    cmp     [error_n], 3
343
    cmp     [error_n], 3
-
 
344
    je	    .err_3
-
 
345
    cmp     [error_n], 5
242
    je	    .err_3
346
    je	    .err_5
243
 .err_1:
347
 .err_1:
244
    mov     [ans.buffer +  0], dword "Div."
348
    mov     [ans.buffer +  0], dword "Div."
245
    mov     [ans.buffer +  4], dword " by "
349
    mov     [ans.buffer +  4], dword " by "
246
    mov     [ans.buffer +  8], byte  "0"
350
    mov     [ans.buffer +  8], byte  "0"
Line 255... Line 359...
255
    mov     [ans.size], 81
359
    mov     [ans.size], 81
256
    jmp     .redraw
360
    jmp     .redraw
257
 .err_3:
361
 .err_3:
258
    mov     [ans.buffer + 10], byte "("
362
    mov     [ans.buffer + 10], byte "("
259
    jmp     .redraw
363
    jmp     .redraw
-
 
364
 .err_5:
-
 
365
    mov     [ans.buffer + 10], byte "|"
-
 
366
    jmp     .redraw
Line 260... Line 367...
260
 
367
 
261
 .redraw:
368
 .redraw:
-
 
369
    call    draw_textbox
262
    call    draw_textbox
370
    call    draw_list
Line 263... Line 371...
263
    jmp     update
371
    jmp     update
Line 264... Line 372...
264
 
372
 
265
 ;----------------------
373
 ;----------------------
266
 
374
 
267
; proc draw_button, x, y
375
 proc draw_button, x, y
268
;    mcall   8, <[x], [but_w]>, <[y], 20>, [but_id], [scn.btn_face]
376
    mcall   8, <[x], 30>, <[y], 21>, [but_id], [but_c]
269
;
-
 
270
;    mcall   1, [x], [y], [scn.win_face]
377
 
271
;    add     ebx, [but_w]
-
 
272
;    mcall
378
    mov     ebx, [x]
273
;    add     ecx, 20
-
 
274
;    mcall
-
 
275
;    sub     ebx, [but_w]
379
    mov     esi, [txt_size]
276
;    mcall
380
    imul    esi, 3
277
;
381
    mov     edi, 16
278
;    mov     ebx, [x]
382
    sub     edi, esi
279
;    add     ebx, [txt_x]
383
    add     ebx, edi
280
;    shl     ebx, 16
384
    shl     ebx, 16
281
;    add     ebx, [y]
385
    add     ebx, [y]
282
;    add     ebx, 7
386
    add     ebx, 7
-
 
387
    mcall   4, , [but_tc], [txt_id], [txt_size]
283
;    mcall   4, , [scn.win_text], [txt_id], 1
388
 
284
;
389
    mov     eax, [txt_size]
285
;    inc     dword [txt_id]
390
    add     [txt_id], eax
286
;    inc     dword [but_id]
391
    inc     dword [but_id]
Line 287... Line 392...
287
;
392
 
Line 288... Line 393...
288
;    ret
393
    ret
289
; endp
394
 endp
290
 
395
 
291
 ;----------------------
396
 ;----------------------
292
 
397
 
293
 proc draw_textbox
398
 proc draw_textbox
294
    mcall   13, <4, 320>, <  8,  23>, [scn.gui_frame]
399
    mcall   13, <4, 320 - 50 - 25>, <  8,  23>, [scn.gui_frame]
295
    mov     edx, [scn.gui_face]
400
    mov     edx, [scn.gui_face]
296
    cmp     [error_n], 0
401
    cmp     [error_n], 0
297
    je	    @f
402
    je	    @f
298
    mov     edx, 0xFFAAAA
403
    mov     edx, 0xFFAAAA
Line 299... Line 404...
299
  @@:
404
  @@:
300
    mcall   13, <  5, 318>, <  9, 21>
405
    mcall   13, <  5, 318 - 50 - 25>, <  9, 21>
301
    mcall     , <  5, 318>, <  9,  1>, [scn.3d_face]
406
    mcall     , <  5, 318 - 50 - 25>, <  9,  1>, [scn.3d_face]
302
    mcall     , <  5,	1>, < 10, 20>
407
    mcall     , <  5,	1>, < 10, 20>
303
    mcall     , <  5, 318>, < 31,  1>, [scn.3d_light]
408
    mcall     , <  5, 318 - 50 - 25>, < 31,  1>, [scn.3d_light]
304
 
409
 
305
    mov      ebx, 328
410
    mov      ebx, 328 - 16 - 50 - 25
Line -... Line 411...
-
 
411
    sub      ebx, [ans.size]
-
 
412
    shl      ebx, 16
-
 
413
    add      ebx, 16
-
 
414
    mov      ecx, [scn.gui_intext]
-
 
415
    or	     ecx, 1 shl 31
-
 
416
    mcall    4, , , ans.buffer
-
 
417
 
306
    sub      ebx, [ans.size]
418
    mov      ecx, [scn.gui_text]
307
    shl      ebx, 16
419
    mcall     , <310 - 50 - 25, 16>, , btn_clr, 1
308
    add      ebx, 16
420
    add      ebx, 1 shl 16
309
    mov      ecx, [scn.gui_intext]
421
    mcall
Line 310... Line 422...
310
    or	     ecx, 1 shl 31
422
 
311
    mcall    4, , , ans.buffer
423
    mcall    8, <305 - 50 - 25, 17>, <9, 20>, 0x40000004
312
 
424
 
313
    mcall    1,   4,  8, [scn.win_body]
425
    mcall    1,   4,  8, [scn.win_body]
314
    mcall     , 323
426
    mcall     , 323 - 50 - 25
315
    mcall     ,    , 30, [scn.3d_light]
427
    mcall     ,    , 30, [scn.3d_light]
Line 334... Line 446...
334
    ret
446
    ret
335
 endp
447
 endp
Line 336... Line 448...
336
 
448
 
Line -... Line 449...
-
 
449
 ;----------------------
-
 
450
 
-
 
451
 proc draw_keyb
-
 
452
    cmp     [keyb], byte 0
-
 
453
    je	    @f
-
 
454
 
-
 
455
    mov     [txt_size], 1
-
 
456
    mov     [but_id], 0x0000000A
-
 
457
    mov     [txt_id], buttons
-
 
458
 
-
 
459
    mov     eax, [scn.win_face]
-
 
460
    mov     [but_c], eax
-
 
461
    mov     eax, [scn.win_text]
-
 
462
    mov     [but_tc], eax
-
 
463
    stdcall draw_button,   4 + 278 - 25,  42 - 25 - 8
-
 
464
    stdcall draw_button,  37 + 278 - 25,  42 - 25 - 8
-
 
465
    stdcall draw_button,  70 + 278 - 25,  42 - 25 - 8
-
 
466
    stdcall draw_button, 103 + 278 - 25,  42 - 25 - 8
-
 
467
    stdcall draw_button, 103 + 278 - 25,  66 - 25 - 8
-
 
468
    stdcall draw_button, 103 + 278 - 25,  90 - 25 - 8
-
 
469
    stdcall draw_button, 103 + 278 - 25, 114 - 25 - 8
-
 
470
    stdcall draw_button,  70 + 278 - 25, 139 - 25 - 8
-
 
471
    stdcall draw_button,  37 + 278 - 25, 139 - 25 - 8
-
 
472
 
-
 
473
    mov     eax, [scn.btn_inface]
-
 
474
    mov     [but_c], eax
-
 
475
    mov     eax, [scn.btn_intext]
-
 
476
    mov     [but_tc], eax
-
 
477
    stdcall draw_button, 103 + 278 - 25, 139 - 25 - 8
-
 
478
 
-
 
479
    mov     eax, [scn.btn_face]
-
 
480
    mov     [but_c], eax
-
 
481
    mov     eax, [scn.btn_text]
-
 
482
    mov     [but_tc], eax
-
 
483
    stdcall draw_button,   4 + 278 - 25,  66 - 25 - 8
-
 
484
    stdcall draw_button,  37 + 278 - 25,  66 - 25 - 8
-
 
485
    stdcall draw_button,  70 + 278 - 25,  66 - 25 - 8
-
 
486
    stdcall draw_button,   4 + 278 - 25,  90 - 25 - 8
-
 
487
    stdcall draw_button,  37 + 278 - 25,  90 - 25 - 8
-
 
488
    stdcall draw_button,  70 + 278 - 25,  90 - 25 - 8
-
 
489
    stdcall draw_button,   4 + 278 - 25, 114 - 25 - 8
-
 
490
    stdcall draw_button,  37 + 278 - 25, 114 - 25 - 8
-
 
491
    stdcall draw_button,  70 + 278 - 25, 114 - 25 - 8
-
 
492
    stdcall draw_button,   4 + 278 - 25, 139 - 25 - 8
-
 
493
 
-
 
494
  @@:
-
 
495
    ret
-
 
496
 endp
-
 
497
 
-
 
498
 ;----------------------
-
 
499
 
-
 
500
 proc draw_list
-
 
501
  ; BACKGROUND
-
 
502
    mov     edi, LIST_ITEM_COUNT
-
 
503
    mov     eax, 13
-
 
504
    mov     ebx, 4 shl 16 + 320 - 50 - 25
-
 
505
    mov     ecx, 37 shl 16 + LIST_ITEM_SIZE
-
 
506
    mov     edx, LIST_ITEM_COLOR1
-
 
507
    cmp     [his_even], byte 0
-
 
508
    je	    @f
-
 
509
    mov     edx, LIST_ITEM_COLOR2
-
 
510
  @@:
-
 
511
    mcall
-
 
512
    add     ecx, LIST_ITEM_SIZE shl 16
-
 
513
    cmp     edx, LIST_ITEM_COLOR1
-
 
514
    je	    .set_color_to_2
-
 
515
    mov     edx, LIST_ITEM_COLOR1
-
 
516
    jmp     .next
-
 
517
 .set_color_to_2:
-
 
518
    mov     edx, LIST_ITEM_COLOR2
-
 
519
 .next:
-
 
520
    dec     edi
-
 
521
    cmp     edi, 0
-
 
522
    jne     @b
-
 
523
 
-
 
524
  ; BUTTONS
-
 
525
    mov     edi, LIST_ITEM_COUNT
-
 
526
    mov     eax, 8
-
 
527
    mov     ebx, 4 shl 16 + 320 - 50 - 25
-
 
528
    mov     ecx, 37 shl 16 + LIST_ITEM_SIZE
-
 
529
    mov     edx, 0x40000060
-
 
530
  @@:
-
 
531
    mcall
-
 
532
    add     ecx, LIST_ITEM_SIZE shl 16
-
 
533
    inc     edx
-
 
534
    dec     edi
-
 
535
    cmp     edi, 0
-
 
536
    jne     @b
-
 
537
 
-
 
538
  ; TEXT
-
 
539
    mov     edi, LIST_ITEM_COUNT
-
 
540
    mov     eax, 4
-
 
541
    mov     ebx, 8 shl 16 + 37 + LIST_ITEM_Y
-
 
542
    mov     ecx, LIST_ITEM_TEXT1
-
 
543
    cmp     [his_even], byte 0
-
 
544
    je	    @f
-
 
545
    mov     ecx, LIST_ITEM_TEXT2
-
 
546
  @@:
-
 
547
    or	    ecx, 1 shl 31
-
 
548
    mov     edx, history
-
 
549
  @@:
-
 
550
    mcall
-
 
551
 
-
 
552
    push    ebx
-
 
553
    add     ebx, (320 - 50 - 25) shl 16
-
 
554
    mov     esi, [edx + 508]
-
 
555
    shl     esi, 16
-
 
556
    sub     ebx, esi
-
 
557
    add     edx, 480
-
 
558
    mcall
-
 
559
    pop     ebx
-
 
560
 
-
 
561
    add     edx, 32
-
 
562
    add     ebx, LIST_ITEM_SIZE
-
 
563
 
-
 
564
    and     ecx, 0xFFFFFF
-
 
565
    cmp     ecx, LIST_ITEM_TEXT2
-
 
566
    je	    .set_color_to_2_txt
-
 
567
    mov     ecx, LIST_ITEM_TEXT2
-
 
568
    jmp     .next_txt
-
 
569
 .set_color_to_2_txt:
-
 
570
    mov     ecx, LIST_ITEM_TEXT1
-
 
571
 .next_txt:
-
 
572
    or	    ecx, 1 shl 31
-
 
573
 
-
 
574
    dec     edi
-
 
575
    cmp     edi, 0
-
 
576
    jne     @b
-
 
577
 
-
 
578
    ret
-
 
579
 endp
-
 
580
 
-
 
581
 ;----------------------
-
 
582
 
-
 
583
 proc str_len uses ebx, str
-
 
584
    xor     eax, eax
-
 
585
    mov     ebx, [str]
-
 
586
  @@:
-
 
587
    cmp     [ebx], byte 0
-
 
588
    je	    @f
-
 
589
    inc     eax
-
 
590
    inc     ebx
-
 
591
    jmp     @b
-
 
592
  @@:
-
 
593
 
-
 
594
    ret
-
 
595
 endp
-
 
596
 
-
 
597
 ;----------------------
-
 
598
 
-
 
599
 proc str_cpy uses eax ebx ecx, from, to
-
 
600
    mov     eax, [from]
-
 
601
    mov     ebx, [to]
-
 
602
  @@:
-
 
603
    cmp     [eax], byte 0
-
 
604
    je	    @f
-
 
605
    mov     cl, [eax]
-
 
606
    mov     [ebx], cl
-
 
607
    inc     eax
-
 
608
    inc     ebx
-
 
609
    jmp     @b
-
 
610
  @@:
-
 
611
    mov     [ebx], byte 0
-
 
612
    ret
-
 
613
 endp
-
 
614
 
337
 ;----------------------
615
 ;----------------------
Line 338... Line 616...
338
 
616
 
Line 339... Line 617...
339
 dataend:
617
 dataend:
340
 
618
 
Line 341... Line 619...
341
 ;===============================
619
 ;===============================
342
 
620
 
343
	    rb 2048
621
	    rb 2048
-
 
622
 stacktop:
344
 stacktop:
623
 
Line 345... Line 624...
345
 
624
 exp	    rb 480
346
 exp	    rb 512
625
 exp_pos    rd 1
347
 exp_pos    rd 1
626
 exp_lvl    rd 1
Line 348... Line 627...
348
 exp_lvl    rd 1
627
 abs_lvl    rd 1
349
 group	    rd 1
628
 group	    rd 1
350
 
629
 
351
 ans.buffer:rb 512
630
 ans.buffer:rb 480
-
 
631
 ans.size   rd 1
352
 ans.size   rd 1
632
 error_n    rd 1
353
 error_n    rd 1
633
 
-
 
634
 scn	    sys_colors_new
-
 
635
 timer	    rd 1
-
 
636
 but_id     rd 1
-
 
637
 but_c	    rd 1
-
 
638
 but_tc     rd 1
Line 354... Line 639...
354
 
639
 txt_id     rd 1