Subversion Repositories Kolibri OS

Rev

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

Rev 2254 Rev 7674
Line 8... Line 8...
8
; 1) ç¨á«® ¢ áâப®¢®¬ ¢¨¤¥ ¯¥à¥¢¥á⨠¢ 4 ¡ ©â  (float) ¢ ¬ è¨­­ë© ¢¨¤
8
; 1) ç¨á«® ¢ áâப®¢®¬ ¢¨¤¥ ¯¥à¥¢¥á⨠¢ 4 ¡ ©â  (float) ¢ ¬ è¨­­ë© ¢¨¤
9
; 2) ç¨á«® ¢ áâப®¢®¬ ¢¨¤¥ ¯¥à¥¢¥á⨠¢ 8 ¡ ©â (double) ¢ ¬ è¨­­ë© ¢¨¤
9
; 2) ç¨á«® ¢ áâப®¢®¬ ¢¨¤¥ ¯¥à¥¢¥á⨠¢ 8 ¡ ©â (double) ¢ ¬ è¨­­ë© ¢¨¤
10
; 3) ç¨á«® ¢ ¬ è¨­­®¬ ¢¨¤¥ (float) ¯¥à¥¢¥á⨠¢ áâப®¢ë© ¢¨¤ (5 §­ ª®¢ ¯®á«¥ § ¯ï⮩)
10
; 3) ç¨á«® ¢ ¬ è¨­­®¬ ¢¨¤¥ (float) ¯¥à¥¢¥á⨠¢ áâப®¢ë© ¢¨¤ (5 §­ ª®¢ ¯®á«¥ § ¯ï⮩)
Line 11... Line 11...
11
 
11
 
12
use32
12
use32
13
    org 0x0
13
    org 0
14
    db	'MENUET01'
14
    db	'MENUET01'
Line 15... Line 15...
15
    dd	0x01,start,i_end,e_end,e_end,0,sys_path
15
    dd	1,start,i_end,e_end,e_end,0,sys_path
16
 
16
 
-
 
17
include '../../../proc32.inc'
17
include '../../../proc32.inc'
18
include '../../../macros.inc'
18
include '../../../macros.inc'
19
include '../../../KOSfuncs.inc'
-
 
20
include '../../../develop/libraries/box_lib/load_lib.mac'
19
include '../../../develop/libraries/box_lib/load_lib.mac'
21
include '../../../develop/libraries/box_lib/trunk/box_lib.mac'
Line 20... Line 22...
20
include '../../../develop/libraries/box_lib/trunk/box_lib.mac'
22
include '../../../develop/info3ds/info_fun_float.inc'
Line 21... Line 23...
21
include 'lang.inc'
23
include 'lang.inc'
Line 27... Line 29...
27
	load_libraries l_libs_start,l_libs_end
29
	load_libraries l_libs_start,l_libs_end
28
	;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ­ è  ¡¨¡«¨®â¥ª 
30
	;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ­ è  ¡¨¡«¨®â¥ª 
29
	mov	ebp,lib_0
31
	mov	ebp,lib_0
30
	cmp	dword [ebp+ll_struc_size-4],0
32
	cmp	dword[ebp+ll_struc_size-4],0
31
	jz	@f
33
	jz	@f
32
		mcall -1 ;exit not correct
34
		mcall SF_TERMINATE_PROCESS
33
	@@:
35
	@@:
34
	mcall 40,0x27
36
	mcall SF_SET_EVENTS_MASK,0xC0000027
35
	mcall 48, 3, sys_colors, 40
37
	mcall SF_STYLE_SETTINGS,SSF_GET_COLORS, sys_colors, sizeof.system_colors
36
	edit_boxes_set_sys_color edit1,editboxes_end,sys_colors
38
	edit_boxes_set_sys_color edit1,editboxes_end,sys_colors
37
	option_boxes_set_sys_color sys_colors,Option_boxes1
39
	option_boxes_set_sys_color sys_colors,Option_boxes1
Line 38... Line 40...
38
 
40
 
39
align 4
41
align 4
40
red:
42
red:
Line 41... Line 43...
41
    call draw_window
43
    call draw_window
42
 
44
 
43
align 4
45
align 4
Line 44... Line 46...
44
still:
46
still:
45
    mcall 10		; äã­ªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï
47
    mcall SF_WAIT_EVENT
46
 
48
 
47
    cmp  eax,1		; ¯¥à¥à¨á®¢ âì ®ª­® ?
49
    cmp  eax,1		; ¯¥à¥à¨á®¢ âì ®ª­® ?
Line 53... Line 55...
53
    cmp  eax,6
55
    cmp  eax,6
54
    je	 mouse
56
    je	 mouse
Line 55... Line 57...
55
 
57
 
Line 56... Line -...
56
    jmp  still		; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ­ ç «® 横« 
-
 
-
 
58
    jmp  still		; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ­ ç «® 横« 
57
 
59
 
58
;---------------------------------------------------------------------
60
align 4
59
key: ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãà¥
61
key: ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãà¥
60
	mcall 2
62
	mcall SF_GET_KEY
61
	;cmp ah,13
63
	;cmp ah,13
Line 62... Line -...
62
	stdcall [edit_box_key], dword edit1
-
 
63
	jmp  still ; ¢¥à­ãâìáï ª ­ ç «ã 横« 
-
 
64
 
-
 
65
; Š®«¨ç¥á⢮ §­ ª®¢ ç¨á«  ¯®á«¥ § ¯ï⮩ (1-17)
-
 
66
NumberSymbolsAD DW 5
-
 
67
; Š®­áâ ­âë (10 ¢ á⥯¥­¨ N)
-
 
68
MConst DQ 1.0E1,1.0E2,1.0E3,1.0E4,1.0E5
-
 
69
       DQ 1.0E6,1.0E7,1.0E8,1.0E9,1.0E10
-
 
70
       DQ 1.0E11,1.0E12,1.0E13,1.0E14,1.0E15
-
 
71
       DQ 1.0E16,1.0E17,1.0E18,1.0E19,1.0E20
-
 
72
       DQ 1.0E21,1.0E22,1.0E23,1.0E24,1.0E25
-
 
73
       DQ 1.0E26,1.0E27,1.0E28,1.0E29,1.0E30
-
 
74
       DQ 1.0E31,1.0E32,1.0E33,1.0E34,1.0E35
-
 
75
       DQ 1.0E36,1.0E37,1.0E38,1.0E39,1.0E40
-
 
76
       DQ 1.0E41,1.0E42,1.0E43,1.0E44,1.0E45
-
 
77
       DQ 1.0E46,1.0E47,1.0E48,1.0E49,1.0E50
-
 
78
       DQ 1.0E51,1.0E52,1.0E53,1.0E54,1.0E55
-
 
79
       DQ 1.0E56,1.0E57,1.0E58,1.0E59,1.0E60
-
 
80
       DQ 1.0E61,1.0E62,1.0E63,1.0E64,1.0E65
-
 
81
       DQ 1.0E66,1.0E67,1.0E68,1.0E69,1.0E70
-
 
82
       DQ 1.0E71,1.0E72,1.0E73,1.0E74,1.0E75
-
 
83
       DQ 1.0E76,1.0E77,1.0E78,1.0E79,1.0E80
-
 
84
       DQ 1.0E81,1.0E82,1.0E83,1.0E84,1.0E85
-
 
85
       DQ 1.0E86,1.0E87,1.0E88,1.0E89,1.0E90
-
 
86
       DQ 1.0E91,1.0E92,1.0E93,1.0E94,1.0E95
-
 
87
       DQ 1.0E96,1.0E97,1.0E98,1.0E99,1.0E100
-
 
88
       DQ 1.0E101,1.0E102,1.0E103,1.0E104,1.0E105
-
 
89
       DQ 1.0E106,1.0E107,1.0E108,1.0E109,1.0E110
-
 
90
       DQ 1.0E111,1.0E112,1.0E113,1.0E114,1.0E115
-
 
91
       DQ 1.0E116,1.0E117,1.0E118,1.0E119,1.0E120
-
 
92
       DQ 1.0E121,1.0E122,1.0E123,1.0E124,1.0E125
-
 
93
       DQ 1.0E126,1.0E127,1.0E128
-
 
94
; —¨á«® á ¯« ¢ î饩 § ¯ï⮩ ¤¢®©­®© â®ç­®áâ¨
-
 
95
Data_Double   DQ ?
-
 
96
; —¨á«® ¢ BCD-ä®à¬ â¥ 
-
 
97
Data_BCD      DT ?
-
 
98
; ‚ᯮ¬®£ â¥«ì­ë© ä« £
-
 
99
Data_Flag     DB ?
-
 
100
; ‡­ ª १ã«ìâ â  (¥á«¨ ­¥ 0 - ®âà¨æ â¥«ì­®¥ ç¨á«®)
-
 
101
Data_Sign     DB ?
-
 
102
; ‘âப  ¤«ï åà ­¥­¨ï ç¨á«  ¢ ª®¤¥ ASCII
-
 
103
Data_String   DB 32 DUP (?)
-
 
104
 
-
 
105
string1 db 32 dup (0)
-
 
106
string1_end:
-
 
107
 
-
 
108
 
-
 
109
 
-
 
110
;*******************************************************
-
 
111
;*  …Ž€‡Ž‚€ˆ… —ˆ‘‹€ ‘ ‹€‚€ž™…‰ ‡€Ÿ’Ž‰ ‚ ‘’ŽŠ“  *
-
 
112
;* —¨á«® ¨¬¥¥â ä®à¬ â á 㤢®¥­­®© â®ç­®áâìî, १ã«ìâ â *
-
 
113
;* ¢ë¤ ¥âáï ¢ ¤¥áïâ¨ç­®¬ ª®¤¥, ¢ "¡ë⮢®¬" ä®à¬ â¥ á   *
-
 
114
;* 䨪á¨à®¢ ­­ë¬ ª®«¨ç¥á⢮¬ §­ ª®¢ ¯®á«¥ § ¯ï⮩.     *
-
 
115
;* ‚室­ë¥ ¯ à ¬¥âàë:                                  *
-
 
116
;* Data_Double - ¯à¥®¡à §ã¥¬®¥ ç¨á«®;                  *
-
 
117
;* NumberSymbolsAD - ª®«¨ç¥á⢮ §­ ª®¢ ¯®á«¥           *
-
 
118
;*                   § ¯ï⮩ (0-17).                   *
-
 
119
;* ‚ë室­ë¥ ¯ à ¬¥âàë:                                 *
-
 
120
;* Data_String - áâப -१ã«ìâ â.                     *
-
 
121
;*******************************************************
-
 
122
DoubleFloat_to_String:
-
 
123
	pushad
-
 
124
	; ¥§ã«ìâ â § ¯¨á뢠âì ¢ áâபã Data_String
-
 
125
	mov	EDI, Data_String
-
 
126
 
-
 
127
	; ‘¤¢¨£ ¥¬ ç¨á«® ¢«¥¢® ­  NumberSymbolsAD
-
 
128
	; ¤¥áïâ¨ç­ëå à §à冷¢
-
 
129
	fninit		       ;á¡à®á ᮯà®æ¥áá®à 
-
 
130
	fld	[Data_Double]  ;§ £à㧨âì ç¨á«®
-
 
131
	xor ebx,ebx
-
 
132
	mov	BX,[NumberSymbolsAD]
-
 
133
	cmp	BX, 0
-
 
134
	je	.NoShifts     ;­¥â æ¨äà ¯®á«¥ § ¯ï⮩
-
 
135
	jl	.Error	      ;®è¨¡ª 
-
 
136
	dec	BX
-
 
137
	shl	BX, 3		;㬭®¦ ¥¬ ­  8
-
 
138
	add	EBX, MConst
-
 
139
	fmul	qword [EBX] ;㬭®¦¨âì ­  ª®­áâ ­âã
-
 
140
.NoShifts:
-
 
141
	; ˆ§¢«¥çì ç¨á«® ¢ ª®¤¥ BCD
-
 
142
	fbstp	[Data_BCD]
-
 
143
; à®¢¥à¨âì १ã«ìâ â ­  ¯¥à¥¯®«­¥­¨¥
-
 
144
	mov	AX,word [Data_BCD + 8]
-
 
145
	cmp	AX,0FFFFh  ;"¤¥áïâ¨ç­®¥" ¯¥à¥¯®«­¥­¨¥?
-
 
146
	je	.Overflow
-
 
147
; ‚뤥«¨âì §­ ª ç¨á«  ¨ § ¯¨á âì ¥£® ¢ ASCII-ª®¤¥
-
 
148
	mov	AL, byte [Data_BCD + 9]
-
 
149
	and	AL,AL
-
 
150
	jz	.NoSign
-
 
151
	mov	AL,'-'
-
 
152
	stosb
-
 
153
.NoSign:
-
 
154
;  á¯ ª®¢ âì ç¨á«® ¢ ª®¤ ASCII
-
 
155
	mov	ebx,8	 ;ᬥ饭¨¥ ¯®á«¥¤­¥© ¯ àë æ¨äà
-
 
156
	mov	ecx,9	 ;áç¥â稪 ¯ à æ¨äà
-
 
157
	; Ž¯à¥¤¥«¨âì ¯®§¨æ¨î ¤¥áïâ¨ç­®© â®çª¨ ¢ ç¨á«¥
-
 
158
	mov	DX,18
-
 
159
	sub	DX,[NumberSymbolsAD]
-
 
160
	js	.Error	;®è¨¡ª , ¥á«¨ ®âà¨æ â¥«ì­ ï
-
 
161
	jz	.Error	;¨«¨ ­ã«¥¢ ï ¯®§¨æ¨ï
-
 
162
.NextPair:
-
 
163
	; ‡ £à㧨âì ®ç¥à¥¤­ãî ¯ àã à §à冷¢
-
 
164
	mov	AL, byte [ebx + Data_BCD]
-
 
165
	mov	AH,AL
-
 
166
	; ‚뤥«¨âì, ¯¥à¥¢¥á⨠¢ ASCII ¨
-
 
167
	; á®åà ­¨âì áâ àèãî â¥âà ¤ã
-
 
168
	shr	AL,4
-
 
169
	add	AL,'0'
-
 
170
	stosb
-
 
171
	dec	DX
-
 
172
	jnz	.N0
-
 
173
	mov	AL,'.'
-
 
174
	stosb
-
 
175
.N0:   ; ‚뤥«¨âì, ¯¥à¥¢¥á⨠¢ ASCII ¨
-
 
176
	; á®åà ­¨âì ¬« ¤èãî â¥âà ¤ã
-
 
177
	mov	AL,AH
-
 
178
	and	AL,0Fh
-
 
179
	add	AL,'0'
-
 
180
	stosb
-
 
181
	dec	DX
-
 
182
	jnz	.N1
-
 
183
	mov	AL,'.'
-
 
184
	stosb
-
 
185
.N1:
-
 
186
	dec  BX
-
 
187
	loop .NextPair
-
 
188
	mov  AL,0
-
 
189
	stosb
-
 
190
 
-
 
191
; “¡à âì ­¥§­ ç é¨¥ ­ã«¨ á«¥¢ 
-
 
192
	mov	EDI, Data_String
-
 
193
	mov	ESI, Data_String
-
 
194
	; à®¯ãáâ¨âì §­ ª ç¨á« , ¥á«¨ ®­ ¥áâì
-
 
195
	cmp	byte [ESI],'-'
-
 
196
	jne	.N2
-
 
197
	inc	ESI
-
 
198
	inc	EDI
-
 
199
.N2:   ; ‡ £à㧨âì ¢ áç¥â稪 横«  ª®«¨ç¥á⢮ à §à冷¢
-
 
200
	; ç¨á«  ¯«îá 1 (¡ ©â ¤¥áïâ¨ç­®© â®çª¨)
-
 
201
	mov	ecx,18+1+1
-
 
202
	; à®¯ãáâ¨âì ­¥§­ ç é¨¥ ­ã«¨
-
 
203
.N3:
-
 
204
	cmp byte [ESI],'0'
-
 
205
	jne .N4
-
 
206
	cmp byte [ESI+1],'.'
-
 
207
	je .N4
-
 
208
	inc ESI
-
 
209
	loop .N3
-
 
210
	; Žè¨¡ª  - ­¥â §­ ç é¨å æ¨äà
-
 
211
	jmp	.Error
-
 
212
; ‘ª®¯¨à®¢ âì §­ ç éãî ç áâì ç¨á«  ¢ ­ ç «® áâப¨
-
 
213
.N4:	rep movsb
-
 
214
	jmp    .End
-
 
215
 
-
 
216
; Žè¨¡ª 
-
 
217
.Error:
-
 
218
	mov	AL,'E'
-
 
219
	stosb
-
 
220
	mov	AL,'R'
-
 
221
	stosb
-
 
222
	mov	AL,'R'
-
 
223
	stosb
-
 
224
	xor	AL,AL
-
 
225
	stosb
-
 
226
	jmp	.End
-
 
227
; ¥à¥¯®«­¥­¨¥ à §à來®© á¥âª¨
-
 
228
.Overflow:
-
 
229
	mov	AL,'#'
-
 
230
	stosb
-
 
231
	xor	AL,AL
-
 
232
	stosb
-
 
233
; Š®­¥æ ¯à®æ¥¤ãàë
-
 
234
.End:
-
 
235
	popad
-
 
236
	ret
-
 
237
 
-
 
238
;****************************************************
-
 
239
;* …Ž€‡Ž‚€’œ ‘’ŽŠ“ ‚ —ˆ‘‹Ž ‘ ‹€‚€ž™…‰ ‡€Ÿ’Ž‰ *
-
 
240
;*      (ç¨á«® ¨¬¥¥â ®¡ëç­ë©, "¡ë⮢®©" ä®à¬ â)     *
-
 
241
;* ‚室­ë¥ ¯ à ¬¥âàë:                               *
-
 
242
;* Data_String - ç¨á«® ¢ ª®¤¥ ASCII.                *
-
 
243
;* ‚ë室­ë¥ ¯ à ¬¥âàë:                              *
-
 
244
;* Data_Double - ç¨á«® ¢ ¤¢®¨ç­®¬ ª®¤¥.             *
-
 
245
;****************************************************
-
 
246
String_to_DoubleFloat:
-
 
247
	pushad
-
 
248
	cld
-
 
249
	; Žç¨é ¥¬ Data_BCD 
-
 
250
	mov dword [Data_BCD],0
-
 
251
	mov dword [Data_BCD+4],0
-
 
252
	mov  word [Data_BCD+8],0
-
 
253
	; Žç¨é ¥¬ ¡ ©â §­ ª 
-
 
254
	mov	[Data_Sign],0
-
 
255
	; ‡ ­®á¨¬ ¢ SI 㪠§ â¥«ì ­  áâபã
-
 
256
	mov	ESI, Data_String
-
 
257
	; à®¯ã᪠¥¬ ¯à®¡¥«ë ¯¥à¥¤ ç¨á«®¬
-
 
258
	mov	ecx,64 ;§ é¨â  ®â § æ¨ª«¨¢ ­¨ï
-
 
259
.ShiftIgnore:
-
 
260
	lodsb
-
 
261
	cmp	AL,' '
-
 
262
	jne	.ShiftIgnoreEnd
-
 
263
	loop	.ShiftIgnore
-
 
264
	jmp	.Error
-
 
265
.ShiftIgnoreEnd:
-
 
266
	; à®¢¥à塞 §­ ª ç¨á« 
-
 
267
	cmp	AL,'-'
-
 
268
	jne	.Positive
-
 
269
	mov	[Data_Sign],80h
-
 
270
	lodsb
-
 
271
.Positive:
-
 
272
	mov	[Data_Flag],0 ;¯à¨§­ ª ­ «¨ç¨ï â®çª¨
-
 
273
	mov	DX,0	      ;¯®§¨æ¨ï â®çª¨
-
 
274
	mov	ecx,18	      ;¬ ªá. ç¨á«® à §à冷¢
-
 
275
.ASCIItoBCDConversion:
-
 
276
	cmp	AL,'.'	      ;â®çª ?
-
 
277
	jne	.NotDot
-
 
278
	cmp	[Data_Flag],0 ;â®çª  ­¥ ¢áâà¥ç « áì?
-
 
279
	jne	.Error
-
 
280
	mov	[Data_Flag],1
-
 
281
	lodsb
-
 
282
	cmp	AL,0	      ;ª®­¥æ áâப¨?
-
 
283
	jne	.NotDot
-
 
284
	jmp	.ASCIItoBCDConversionEnd
-
 
285
.NotDot:
-
 
286
	; “¢¥«¨ç¨âì ­  1 §­ ç¥­¨¥ ¯®§¨æ¨¨ â®çª¨,
-
 
287
	; ¥á«¨ ®­  ¥é¥ ­¥ ¢áâà¥ç « áì
-
 
288
	cmp	[Data_Flag],0
-
 
289
	jnz	.Figures
-
 
290
	inc	DX
-
 
291
.Figures:
-
 
292
	; ‘¨¬¢®«ë ç¨á«  ¤®«¦­ë ¡ëâì æ¨äà ¬¨
-
 
293
	cmp	AL,'0'
-
 
294
	jb	.Error
-
 
295
	cmp	AL,'9'
-
 
296
	ja	.Error
-
 
297
	; ¨è¥¬ ®ç¥à¥¤­ãî æ¨äàã ¢ ¬« ¤èãî â¥âà ¤ã BCD
-
 
298
	and	AL,0Fh
-
 
299
	or	byte [Data_BCD],AL
-
 
300
	; à®¢¥àª  ­  ª®­¥æ áâப¨
-
 
301
	cmp	byte [ESI],0
-
 
302
	je	.ASCIItoBCDConversionEnd
-
 
303
	; ‘¤¢¨£ ¥¬ BCD ­  4 à §à鸞 ¢«¥¢®
-
 
304
	; (ᤢ¨£ ¥¬ áâ à訥 2 ¡ ©â )
-
 
305
	mov	AX,word [Data_BCD+6]
-
 
306
	shld	word [Data_BCD+8],AX,4
-
 
307
	; (ᤢ¨£ ¥¬ á।­¨¥ 4 ¡ ©â )
-
 
308
	mov	EAX, dword [Data_BCD]
-
 
309
	shld	dword [Data_BCD+4],EAX,4
-
 
310
	; (ᤢ¨£ ¥¬ ¬« ¤è¨¥ 4 ¡ ©â )
-
 
311
	shl	dword [Data_BCD],4
-
 
312
	; ‡ £à㦠¥¬ á«¥¤ãî騩 ᨬ¢®« ¢ AL
-
 
313
	lodsb
-
 
314
	loop	.ASCIItoBCDConversion
-
 
315
	; …᫨ 19-© ᨬ¢®« ­¥ 0 ¨ ­¥ â®çª ,
-
 
316
	; â® ®è¨¡ª  ¯¥à¥¯®«­¥­¨ï
-
 
317
	cmp	AL,'.'
-
 
318
	jne	.NotDot2
-
 
319
	inc	ecx
-
 
320
	lodsb
-
 
321
.NotDot2:
-
 
322
	cmp	AL,0
-
 
323
	jne	.Error ;¯¥à¥¯®«­¥­¨¥ à §à來®© á¥âª¨
-
 
324
 
-
 
325
; …Ž€‡Ž‚€’œ —ˆ‘‹Ž ˆ‡ ŠŽ„€ BCD ‚ ‚…™…‘’‚…Ž… —ˆ‘‹Ž
-
 
326
.ASCIItoBCDConversionEnd:
-
 
327
	; ‚¯¨á âì §­ ª ¢ áâ à訩 ¡ ©â
-
 
328
	mov	AL,[Data_Sign]
-
 
329
	mov	byte [Data_BCD+9],AL
-
 
330
	; ‘¡à®á¨âì ॣ¨áâàë ᮯà®æ¥áá®à 
-
 
331
	fninit
-
 
332
	; ‡ £à㧨âì ¢ ᮯà®æ¥áá®à ç¨á«® ¢ BCD-ä®à¬ â¥
-
 
333
	fbld	[Data_BCD]
-
 
334
	; ‚ëç¨á«¨âì ­®¬¥à ¤¥«¨â¥«ï
-
 
335
	mov	EBX,18+1
-
 
336
	sub	BX,CX
-
 
337
	sub	BX,DX
-
 
338
	cmp	EBX,0
-
 
339
	je	.NoDiv
-
 
340
	dec	EBX
-
 
341
	shl	EBX,3		;㬭®¦ ¥¬ ­  8
-
 
342
	add	EBX, MConst
-
 
343
	fdiv	qword [EBX] ;à §¤¥«¨âì ­  ª®­áâ ­âã
-
 
344
.NoDiv:; ‚ë£à㧨âì ç¨á«® ¢ ¤¢®¨ç­®¬ ä®à¬ â¥
-
 
345
	fstp	[Data_Double]
-
 
346
	jmp	.End
-
 
347
 
-
 
348
.Error:; à¨ «î¡®© ®è¨¡ª¥ ®¡­ã«¨âì १ã«ìâ â
-
 
349
	fldz	;§ ­¥á⨠­®«ì á á⥪ ᮯà®æ¥áá®à 
-
 
350
	fstp	[Data_Double]
-
 
351
.End:
-
 
352
	popad
-
 
353
	ret
-
 
354
 
-
 
355
 
-
 
356
 
-
 
357
;input:
-
 
358
; buf - 㪠§ â¥«ì ­  áâபã, ç¨á«® ¤®«¦­® ¡ëâì ¢ 10 ¨«¨ 16 à¨ç­®¬ ¢¨¤¥
-
 
359
;output:
-
 
360
; eax - ç¨á«®
-
 
361
align 4
-
 
362
proc conv_str_to_int, buf:dword
-
 
363
	xor eax,eax
-
 
364
	push ebx ecx esi
-
 
365
	xor ebx,ebx
-
 
366
	mov esi,[buf]
-
 
367
	;®¯à¥¤¥«¥­¨¥ ®âà¨æ â¥«ì­ëå ç¨á¥«
-
 
368
	xor ecx,ecx
-
 
369
	inc ecx
-
 
370
	cmp byte[esi],'-'
-
 
371
	jne @f
-
 
372
		dec ecx
-
 
373
		inc esi
-
 
374
	@@:
-
 
375
 
-
 
376
	cmp word[esi],'0x'
-
 
377
	je .load_digit_16
-
 
378
 
-
 
379
	.load_digit_10: ;áç¨â뢠­¨¥ 10-â¨ç­ëå æ¨äà
-
 
380
		mov bl,byte[esi]
-
 
381
		cmp bl,'0'
-
 
382
		jl @f
-
 
383
		cmp bl,'9'
-
 
384
		jg @f
-
 
385
			sub bl,'0'
-
 
386
			imul eax,10
-
 
387
			add eax,ebx
-
 
388
			inc esi
-
 
389
			jmp .load_digit_10
-
 
390
	jmp @f
-
 
391
 
-
 
392
	.load_digit_16: ;áç¨â뢠­¨¥ 16-à¨ç­ëå æ¨äà
-
 
393
		add esi,2
-
 
394
	.cycle_16:
-
 
395
		mov bl,byte[esi]
-
 
396
		cmp bl,'0'
-
 
397
		jl @f
-
 
398
		cmp bl,'f'
-
 
399
		jg @f
-
 
400
		cmp bl,'9'
-
 
401
		jle .us1
-
 
402
			cmp bl,'A'
-
 
403
			jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'9' ¨ <'A'
-
 
404
		.us1: ;á®áâ ¢­®¥ ãá«®¢¨¥
-
 
405
		cmp bl,'F'
-
 
406
		jle .us2
-
 
407
			cmp bl,'a'
-
 
408
			jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'F' ¨ <'a'
-
 
409
			sub bl,32 ;¯¥à¥¢®¤¨¬ ᨬ¢®«ë ¢ ¢¥àå­¨© ॣ¨áâà, ¤«ï ã¯à®é¥­¨ï ¨å ¯®á«¥¤ã饩 ®¡à ¡®âª¨
-
 
410
		.us2: ;á®áâ ¢­®¥ ãá«®¢¨¥
-
 
411
			sub bl,'0'
-
 
412
			cmp bl,9
-
 
413
			jle .cor1
-
 
414
				sub bl,7 ;convert 'A' to '10'
-
 
415
			.cor1:
-
 
416
			shl eax,4
-
 
417
			add eax,ebx
-
 
418
			inc esi
-
 
419
			jmp .cycle_16
-
 
420
	@@:
-
 
421
	cmp ecx,0 ;¥á«¨ ç¨á«® ®âà¨æ â¥«ì­®¥
-
 
422
	jne @f
-
 
423
		sub ecx,eax
-
 
424
		mov eax,ecx
-
 
425
	@@:
-
 
426
	pop esi ecx ebx
-
 
427
	ret
-
 
428
endp
-
 
429
 
-
 
430
 
64
	stdcall [edit_box_key], edit1
431
 
65
	jmp  still ; ¢¥à­ãâìáï ª ­ ç «ã 横« 
432
;---------------------------------------------------------------------
66
 
433
align 4
67
align 4
434
button:
68
button:
435
	mcall 17		; 17 - ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
69
	mcall SF_GET_BUTTON
436
	cmp   ah, 1	; ¥á«¨ … ­ ¦ â  ª­®¯ª  á ­®¬¥à®¬ 1,
70
	cmp   ah, 1	; ¥á«¨ … ­ ¦ â  ª­®¯ª  á ­®¬¥à®¬ 1,
437
	jne   @f
71
	jne   @f
438
		mcall -1
72
		mcall SF_TERMINATE_PROCESS
439
	@@:
73
	@@:
440
	cmp ah, 5
74
	cmp ah, 5
441
	jne @f
75
	jne @f
442
		cmp dword[option_group1],opt3
76
		cmp dword[option_group1],opt3
443
		jne .opt_3_end
77
		jne .opt_3_end
444
			stdcall conv_str_to_int,dword[edit1.text]
78
			stdcall conv_str_to_int,[edit1.text]
445
			mov dword[Data_Double],eax
79
			mov dword[Data_Double],eax
Line 446... Line 80...
446
			finit
80
			finit
447
			fld dword[Data_Double]
81
			fld dword[Data_Double]
448
			fstp qword[Data_Double]
82
			fstp qword[Data_Double]
-
 
83
 
449
 
84
			; Data_Double - ¯à¥®¡à §ã¥¬®¥ ç¨á«®
450
			; Data_Double - ¯à¥®¡à §ã¥¬®¥ ç¨á«®
85
			mov word[NumberSymbolsAD],8 ; ª®«¨ç¥á⢮ §­ ª®¢ ç¨á«  ¯®á«¥ § ¯ï⮩ (1-17)
451
			; NumberSymbolsAD - ª®«¨ç¥á⢮ §­ ª®¢ ¯®á«¥ § ¯ï⮩ (0-17)
86
			call DoubleFloat_to_String
Line 452... Line 87...
452
			call DoubleFloat_to_String
87
			call String_crop_0
Line 469... Line 104...
469
		.opt_all_end:
104
		.opt_all_end:
470
		jmp red
105
		jmp red
471
	@@:
106
	@@:
472
	jmp still
107
	jmp still
Line -... Line 108...
-
 
108
 
473
 
109
align 4
474
mouse:
110
mouse:
475
	stdcall [edit_box_mouse], edit1
111
	stdcall [edit_box_mouse], edit1
476
	stdcall [option_box_mouse], Option_boxes1
112
	stdcall [option_box_mouse], Option_boxes1
Line 477... Line 113...
477
	jmp still
113
	jmp still
478
 
114
 
479
;------------------------------------------------
115
;------------------------------------------------
480
align 4
116
align 4
Line 481... Line 117...
481
draw_window:
117
draw_window:
482
	mcall 48, 3, sys_colors, sizeof.system_colors
118
	mcall SF_STYLE_SETTINGS,SSF_GET_COLORS, sys_colors, sizeof.system_colors
483
 
119
 
484
	mcall 12, 1
120
	mcall SF_REDRAW,SSF_BEGIN_DRAW
Line 485... Line 121...
485
	mov edx, 0x14000000
121
	mov edx, 0x14000000
Line 486... Line 122...
486
	or  edx, [sys_colors.work]
122
	or  edx, [sys_colors.work]
487
	mcall 0, 200*65536+300, 200*65536+175, ,,title
123
	mcall SF_CREATE_WINDOW, (200 shl 16)+300, (200 shl 16)+175, ,,title
488
 
124
 
489
	mcall 8, (300-53)*65536+38,145*65536+ 15, 5,[sys_colors.work_button] ; ª­®¯ª  Ok
125
	mcall SF_DEFINE_BUTTON, ((300-53) shl 16)+38, (145 shl 16)+15, 5, [sys_colors.work_button] ; ª­®¯ª  Ok
490
 
126
 
491
	mov ecx, 0x80000000
127
	mov ecx, 0x80000000
492
	or  ecx, [sys_colors.work_text]
128
	or  ecx, [sys_colors.work_text]
Line 493... Line 129...
493
	mcall 4, 15*65536 +30,, binstr,
129
	mcall SF_DRAW_TEXT, (15 shl 16) +30,, binstr,
494
	mcall  , 15*65536 +58,, decstr,
130
	mcall  , (15 shl 16) +58,, decstr,
495
		mcall  , (240-56*3)*65536 +58,, Data_String,
131
	mcall  , ((240-56*3) shl 16) +58,, Data_String,
Line 496... Line 132...
496
	mcall  , 15*65536 +72,, hexstr,
132
	mcall  , (15 shl 16) +72,, hexstr,
497
	mcall  , 15*65536+150,, numstr,
133
	mcall  , (15 shl 16)+150,, numstr,
498
 
134
 
499
	mov ecx, 0x80000000
135
	mov ecx, 0x80000000
500
	or  ecx, [sys_colors.work_button_text]
136
	or  ecx, [sys_colors.work_button_text]
501
	mcall  , (300-42)*65536+149,	, Okstr,3
137
	mcall  , ((300-42) shl 16)+149,	, Okstr,3
Line 502... Line 138...
502
 
138
 
503
	cmp dword[option_group1],opt1
139
	cmp dword[option_group1],opt1
504
	je @f ;¥á«¨ ¢ë¡à ­ float, â® áâ à訥 4 ¡ ©â  (¨§ double) ­¥ ¯¥ç â ¥¬
140
	je @f ;¥á«¨ ¢ë¡à ­ float, â® áâ à訥 4 ¡ ©â  (¨§ double) ­¥ ¯¥ç â ¥¬
505
	cmp dword[option_group1],opt3
141
	cmp dword[option_group1],opt3
506
	je @f ;¥á«¨ ¢ë¡à ­ float, â® áâ à訥 4 ¡ ©â  (¨§ double) ­¥ ¯¥ç â ¥¬
142
	je @f ;¥á«¨ ¢ë¡à ­ float, â® áâ à訥 4 ¡ ©â  (¨§ double) ­¥ ¯¥ç â ¥¬
507
		mov ecx, dword[Data_Double+4]
143
		mov ecx, dword[Data_Double+4]
508
		mcall  47, 8*65536+256,,185*65536+72,[sys_colors.work_text]    ; 16-­ ï
144
		mcall  SF_DRAW_NUMBER, (8 shl 16)+256,,(185 shl 16)+72,[sys_colors.work_text]    ; 16-­ ï
509
 
145
 
510
		mov ecx, dword[Data_Double+4]
146
		mov ecx, dword[Data_Double+4]
511
		mcall	 ,8*65536+512,,240*65536+30,	  ; 2-­ ï
147
		mcall	 ,(8 shl 16)+512,,(240 shl 16)+30,	  ; 2-­ ï
Line 512... Line 148...
512
		ror ecx, 8
148
		ror ecx, 8
513
		mcall	 ,,,(240-56)*65536+30,
149
		mcall	 ,,,((240-56) shl 16)+30,
Line 514... Line 150...
514
		ror ecx, 8
150
		ror ecx, 8
515
		mcall	 ,,,(240-56*2)*65536+30,
151
		mcall	 ,,,((240-56*2) shl 16)+30,
516
		ror ecx, 8
152
		ror ecx, 8
517
		mcall	 ,,,(240-56*3)*65536+30,
153
		mcall	 ,,,((240-56*3) shl 16)+30,
518
		ror ecx, 8
154
		ror ecx, 8
519
	@@:
155
	@@:
520
 
156
 
521
	mov ecx,dword[Data_Double]
157
	mov ecx,dword[Data_Double]
522
	mcall  47, 8*65536+256,,240*65536+72,[sys_colors.work_text]	 ; 16-­ ï
158
	mcall  SF_DRAW_NUMBER, (8 shl 16)+256,,(240 shl 16)+72,[sys_colors.work_text]	 ; 16-­ ï
Line 523... Line 159...
523
 
159
 
524
	mov ecx,dword[Data_Double]
160
	mov ecx,dword[Data_Double]
525
	mcall	 , 8*65536+512,,240*65536+44,	  ; 2-­ ï
161
	mcall	 , (8 shl 16)+512,,(240 shl 16)+44,	  ; 2-­ ï
526
	ror ecx, 8
162
	ror ecx, 8
Line 527... Line 163...
527
	mcall	 ,,,(240-56)*65536+44,
163
	mcall	 ,,,((240-56) shl 16)+44,
Line -... Line 164...
-
 
164
	ror ecx, 8
-
 
165
	mcall	 ,,,((240-56*2) shl 16)+44,
-
 
166
	ror ecx, 8
-
 
167
	mcall	 ,,,((240-56*3) shl 16)+44,
-
 
168
	ror ecx, 8
-
 
169
 
-
 
170
	mcall SF_DRAW_LINE, (15 shl 16)+300-15, (137 shl 16)+137, [sys_colors.work_graph]
-
 
171
	stdcall [edit_box_draw], edit1
-
 
172
	stdcall [option_box_draw], Option_boxes1
-
 
173
	mcall SF_REDRAW,SSF_END_DRAW
-
 
174
 
-
 
175
ret
-
 
176
 
-
 
177
 
-
 
178
string1 db 32 dup (0)
-
 
179
string1_end:
-
 
180
 
-
 
181
 
-
 
182
;input:
-
 
183
; buf - 㪠§ â¥«ì ­  áâபã, ç¨á«® ¤®«¦­® ¡ëâì ¢ 10 ¨«¨ 16 à¨ç­®¬ ¢¨¤¥
-
 
184
;output:
-
 
185
; eax - ç¨á«®
-
 
186
align 4
-
 
187
proc conv_str_to_int uses ebx ecx esi, buf:dword
-
 
188
	xor eax,eax
-
 
189
	xor ebx,ebx
-
 
190
	mov esi,[buf]
-
 
191
	;®¯à¥¤¥«¥­¨¥ ®âà¨æ â¥«ì­ëå ç¨á¥«
-
 
192
	xor ecx,ecx
-
 
193
	inc ecx
-
 
194
	cmp byte[esi],'-'
-
 
195
	jne @f
-
 
196
		dec ecx
-
 
197
		inc esi
-
 
198
	@@:
-
 
199
 
-
 
200
	cmp word[esi],'0x'
-
 
201
	je .load_digit_16
-
 
202
 
-
 
203
	.load_digit_10: ;áç¨â뢠­¨¥ 10-â¨ç­ëå æ¨äà
-
 
204
		mov bl,byte[esi]
-
 
205
		cmp bl,'0'
-
 
206
		jl @f
-
 
207
		cmp bl,'9'
-
 
208
		jg @f
-
 
209
			sub bl,'0'
-
 
210
			imul eax,10
-
 
211
			add eax,ebx
-
 
212
			inc esi
-
 
213
			jmp .load_digit_10
-
 
214
	jmp @f
-
 
215
 
-
 
216
	.load_digit_16: ;áç¨â뢠­¨¥ 16-à¨ç­ëå æ¨äà
-
 
217
		add esi,2
-
 
218
	.cycle_16:
-
 
219
		mov bl,byte[esi]
-
 
220
		cmp bl,'0'
-
 
221
		jl @f
-
 
222
		cmp bl,'f'
-
 
223
		jg @f
-
 
224
		cmp bl,'9'
-
 
225
		jle .us1
-
 
226
			cmp bl,'A'
-
 
227
			jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'9' ¨ <'A'
-
 
228
		.us1: ;á®áâ ¢­®¥ ãá«®¢¨¥
-
 
229
		cmp bl,'F'
-
 
230
		jle .us2
-
 
231
			cmp bl,'a'
-
 
232
			jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'F' ¨ <'a'
-
 
233
			sub bl,32 ;¯¥à¥¢®¤¨¬ ᨬ¢®«ë ¢ ¢¥àå­¨© ॣ¨áâà, ¤«ï ã¯à®é¥­¨ï ¨å ¯®á«¥¤ã饩 ®¡à ¡®âª¨
-
 
234
		.us2: ;á®áâ ¢­®¥ ãá«®¢¨¥
-
 
235
			sub bl,'0'
-
 
236
			cmp bl,9
-
 
237
			jle .cor1
-
 
238
				sub bl,7 ;convert 'A' to '10'
528
	ror ecx, 8
239
			.cor1:
529
	mcall	 ,,,(240-56*2)*65536+44,
240
			shl eax,4
530
	ror ecx, 8
241
			add eax,ebx
531
	mcall	 ,,,(240-56*3)*65536+44,
242
			inc esi
532
	ror ecx, 8
243
			jmp .cycle_16
Line 533... Line 244...
533
 
244
	@@:
534
	mcall 38, 15*65536+300-15, 137*65536+137, [sys_colors.work_graph]
245
	cmp ecx,0 ;¥á«¨ ç¨á«® ®âà¨æ â¥«ì­®¥
535
	stdcall [edit_box_draw], edit1
246
	jne @f
536
	stdcall [option_box_draw], Option_boxes1
247
		sub ecx,eax
537
	mcall 12, 2		   ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª­ 
248
		mov eax,ecx
-
 
249
	@@:
-
 
250
	ret
538
 
251
endp
539
ret
252
 
540
 
253
;-------------------------------------------------
541
 
254
title db 'string to double 20.08.19',0
542
;-------------------------------------------------
255
hexstr db 'hex:',0
-
 
256
decstr db 'dec:',0
-
 
257
binstr db 'bin:',0
543
title db 'string to double 07.09.11',0
258
 
Line 544... Line 259...
544
hexstr db 'hex:',0
259
if lang eq ru
545
decstr db 'dec:',0
260
	numstr db '—¨á«®:',0
546
binstr db 'bin:',0
261
	Okstr db '‚¢®¤',0
Line 574... Line 289...
574
option_group1 dd opt1
289
option_group1 dd opt1
575
Option_boxes1 dd opt1, opt2, opt3, 0
290
Option_boxes1 dd opt1, opt2, opt3, 0
Line 576... Line 291...
576
 
291
 
577
system_dir_0 db '/sys/lib/'
292
system_dir_0 db '/sys/lib/'
578
lib_name_0 db 'box_lib.obj',0
-
 
579
err_msg_found_lib_0 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'box_lib.obj',39,0
-
 
-
 
293
lib_name_0 db 'box_lib.obj',0
Line 580... Line 294...
580
err_msg_import_0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'box_lib',39,0
294
 
581
 
295
 
582
l_libs_start:
296
l_libs_start:
583
	lib_0 l_libs lib_name_0, sys_path, library_path, system_dir_0,\
297
	lib_0 l_libs lib_name_0, sys_path, library_path, system_dir_0,\
Line 604... Line 318...
604
	aOption_box_mouse db 'option_box_mouse',0
318
	aOption_box_mouse db 'option_box_mouse',0
605
	;aVersion_op db 'version_op',0
319
	;aVersion_op db 'version_op',0
Line 606... Line 320...
606
 
320
 
607
i_end:
321
i_end:
608
	sys_colors system_colors
322
	sys_colors system_colors
609
	rb 0x400 ;stack
323
align 16	
610
	sys_path rb 4096
324
	sys_path rb 4096
-
 
325
	library_path rb 4096
611
	library_path rb 4096
326
	rb 0x400 ;stack