Subversion Repositories Kolibri OS

Rev

Rev 6741 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6741 Rev 6797
1
txt_zv db '*',0
1
txt_zv db '*',0
2
txt_sp db ' ',0
2
txt_sp db ' ',0
3
txt_buf db '1234',0
3
txt_buf db '1234',0
4
	rd 1
4
	rd 1
5
 
5
 
6
buf_param rb 80
6
buf_param rb 80
7
 
7
 
8
macro cStr dest,txt
8
macro cStr dest,txt
9
{
9
{
10
local .end_t
10
local .end_t
11
local .m_txt
11
local .m_txt
12
jmp .end_t
12
jmp .end_t
13
align 4
13
align 4
14
	.m_txt db txt,0
14
	.m_txt db txt,0
15
align 4
15
align 4
16
.end_t:
16
.end_t:
17
if dest eq
17
if dest eq
18
	mov eax,.m_txt
18
	mov eax,.m_txt
19
else
19
else
20
	mov dest,.m_txt
20
	mov dest,.m_txt
21
end if
21
end if
22
}
22
}
23
 
23
 
24
;for debug
24
;for debug
25
tz1 db 'next_in',13,10,0
25
tz1 db 'next_in',13,10,0
26
tz2 db 'avail_in',13,10,0
26
tz2 db 'avail_in',13,10,0
27
tz3 db 'total_in',13,10,0
27
tz3 db 'total_in',13,10,0
28
tz4 db 'next_out',13,10,0
28
tz4 db 'next_out',13,10,0
29
tz5 db 'avail_out',13,10,0
29
tz5 db 'avail_out',13,10,0
30
tz6 db 'total_out',13,10,0
30
tz6 db 'total_out',13,10,0
31
tz7 db 'msg',13,10,0
31
tz7 db 'msg',13,10,0
32
tz8 db 'state',13,10,0
32
tz8 db 'state',13,10,0
33
tz9 db 'zalloc',13,10,0
33
tz9 db 'zalloc',13,10,0
34
tz10 db 'zfree',13,10,0
34
tz10 db 'zfree',13,10,0
35
tz11 db 'opaque',13,10,0
35
tz11 db 'opaque',13,10,0
36
tz12 db 'data_type',13,10,0
36
tz12 db 'data_type',13,10,0
37
tz13 db 'adler',13,10,0
37
tz13 db 'adler',13,10,0
38
tz14 db 'reserved',13,10,0
38
tz14 db 'reserved',13,10,0
39
 
39
 
40
sv_2:
40
sv_2:
41
dd z_stream.next_in,4,tz1
41
dd z_stream.next_in,4,tz1
42
dd z_stream.avail_in,2,tz2
42
dd z_stream.avail_in,4,tz2
43
dd z_stream.total_in,4,tz3
43
dd z_stream.total_in,4,tz3
44
dd z_stream.next_out,4,tz4
44
dd z_stream.next_out,4,tz4
45
dd z_stream.avail_out,2,tz5
45
dd z_stream.avail_out,4,tz5
46
dd z_stream.total_out,4,tz6
46
dd z_stream.total_out,4,tz6
47
dd z_stream.msg,4,tz7
47
dd z_stream.msg,4,tz7
48
dd z_stream.state,4,tz8
48
dd z_stream.state,4,tz8
49
dd z_stream.zalloc,4,tz9
49
dd z_stream.zalloc,4,tz9
50
dd z_stream.zfree,4,tz10
50
dd z_stream.zfree,4,tz10
51
dd z_stream.opaque,4,tz11
51
dd z_stream.opaque,4,tz11
52
dd z_stream.data_type,2,tz12
52
dd z_stream.data_type,4,tz12
53
dd z_stream.adler,4,tz13
53
dd z_stream.adler,4,tz13
54
dd z_stream.reserved,4,tz14
54
dd z_stream.reserved,4,tz14
55
dd 0,0
55
dd 0,0
56
 
56
 
57
ta1 db 'strm',13,10,0
57
ta1 db 'strm',13,10,0
58
ta2 db 'status',13,10,0
58
ta2 db 'status',13,10,0
59
ta3 db 'pending_buf',13,10,0
59
ta3 db 'pending_buf',13,10,0
60
ta4 db 'pending_buf_size',13,10,0
60
ta4 db 'pending_buf_size',13,10,0
61
ta5 db 'pending_out',13,10,0
61
ta5 db 'pending_out',13,10,0
62
ta6 db 'pending',13,10,0
62
ta6 db 'pending',13,10,0
63
ta7 db 'wrap',13,10,0
63
ta7 db 'wrap',13,10,0
64
ta8 db 'gzhead',13,10,0
64
ta8 db 'gzhead',13,10,0
65
ta9 db 'gzindex',13,10,0
65
ta9 db 'gzindex',13,10,0
66
ta10 db 'method',13,10,0
66
ta10 db 'method',13,10,0
67
ta11 db 'last_flush',13,10,0
67
ta11 db 'last_flush',13,10,0
68
ta12 db 'w_size',13,10,0
68
ta12 db 'w_size',13,10,0
69
ta13 db 'w_bits',13,10,0
69
ta13 db 'w_bits',13,10,0
70
ta14 db 'w_mask',13,10,0
70
ta14 db 'w_mask',13,10,0
71
ta15 db 'window',13,10,0
71
ta15 db 'window',13,10,0
72
ta16 db 'window_size',13,10,0
72
ta16 db 'window_size',13,10,0
73
ta17 db 'prev',13,10,0
73
ta17 db 'prev',13,10,0
74
ta18 db 'head',13,10,0
74
ta18 db 'head',13,10,0
75
ta19 db 'ins_h',13,10,0
75
ta19 db 'ins_h',13,10,0
76
ta20 db 'hash_size',13,10,0
76
ta20 db 'hash_size',13,10,0
77
ta21 db 'hash_bits',13,10,0
77
ta21 db 'hash_bits',13,10,0
78
ta22 db 'hash_mask',13,10,0
78
ta22 db 'hash_mask',13,10,0
79
ta23 db 'hash_shift',13,10,0
79
ta23 db 'hash_shift',13,10,0
80
ta24 db 'block_start',13,10,0
80
ta24 db 'block_start',13,10,0
81
ta25 db 'match_length',13,10,0
81
ta25 db 'match_length',13,10,0
82
ta26 db 'prev_match',13,10,0
82
ta26 db 'prev_match',13,10,0
83
ta27 db 'match_available',13,10,0
83
ta27 db 'match_available',13,10,0
84
ta28 db 'strstart',13,10,0
84
ta28 db 'strstart',13,10,0
85
ta29 db 'match_start',13,10,0
85
ta29 db 'match_start',13,10,0
86
ta30 db 'lookahead',13,10,0
86
ta30 db 'lookahead',13,10,0
87
ta31 db 'prev_length',13,10,0
87
ta31 db 'prev_length',13,10,0
88
ta32 db 'max_chain_length',13,10,0
88
ta32 db 'max_chain_length',13,10,0
89
ta33 db 'max_lazy_match',13,10,0
89
ta33 db 'max_lazy_match',13,10,0
90
ta34 db 'level',13,10,0
90
ta34 db 'level',13,10,0
91
ta35 db 'strategy',13,10,0
91
ta35 db 'strategy',13,10,0
92
ta36 db 'good_match',13,10,0
92
ta36 db 'good_match',13,10,0
93
ta37 db 'nice_match',13,10,0
93
ta37 db 'nice_match',13,10,0
94
ta38 db 'dyn_ltree',13,10,0
94
ta38 db 'dyn_ltree',13,10,0
95
ta39 db 'dyn_dtree',13,10,0
95
ta39 db 'dyn_dtree',13,10,0
96
ta40 db 'bl_tree',13,10,0
96
ta40 db 'bl_tree',13,10,0
97
ta41 db 'l_desc',13,10,0
97
ta41 db 'l_desc',13,10,0
98
ta42 db 'd_desc',13,10,0
98
ta42 db 'd_desc',13,10,0
99
ta43 db 'bl_desc',13,10,0
99
ta43 db 'bl_desc',13,10,0
100
ta44 db 'bl_count',13,10,0
100
ta44 db 'bl_count',13,10,0
101
ta45 db 'heap',13,10,0
101
ta45 db 'heap',13,10,0
102
ta46 db 'heap_len',13,10,0
102
ta46 db 'heap_len',13,10,0
103
ta47 db 'heap_max',13,10,0
103
ta47 db 'heap_max',13,10,0
104
ta48 db 'depth',13,10,0
104
ta48 db 'depth',13,10,0
105
ta49 db 'l_buf',13,10,0
105
ta49 db 'l_buf',13,10,0
106
ta50 db 'lit_bufsize',13,10,0
106
ta50 db 'lit_bufsize',13,10,0
107
ta51 db 'last_lit',13,10,0
107
ta51 db 'last_lit',13,10,0
108
ta52 db 'd_buf',13,10,0
108
ta52 db 'd_buf',13,10,0
109
ta53 db 'opt_len',13,10,0
109
ta53 db 'opt_len',13,10,0
110
ta54 db 'static_len',13,10,0
110
ta54 db 'static_len',13,10,0
111
ta55 db 'matches',13,10,0
111
ta55 db 'matches',13,10,0
112
ta56 db 'insert',13,10,0
112
ta56 db 'insert',13,10,0
113
; db 'compressed_len',13,10,0
113
; db 'compressed_len',13,10,0
114
; db 'bits_sent',13,10,0
114
; db 'bits_sent',13,10,0
115
ta59 db 'bi_buf',13,10,0
115
ta59 db 'bi_buf',13,10,0
116
ta60 db 'bi_valid',13,10,0
116
ta60 db 'bi_valid',13,10,0
117
ta61 db 'high_water',13,10,0
117
ta61 db 'high_water',13,10,0
118
 
118
 
119
sv_3:
119
sv_3:
120
dd deflate_state.strm,4,ta1
120
dd deflate_state.strm,4,ta1
121
dd deflate_state.status,4,ta2
121
dd deflate_state.status,4,ta2
122
dd deflate_state.pending_buf,4,ta3
122
dd deflate_state.pending_buf,4,ta3
123
dd deflate_state.pending_buf_size,4,ta4
123
dd deflate_state.pending_buf_size,4,ta4
124
dd deflate_state.pending_out,4,ta5
124
dd deflate_state.pending_out,4,ta5
125
dd deflate_state.pending,4,ta6
125
dd deflate_state.pending,4,ta6
126
dd deflate_state.wrap,4,ta7
126
dd deflate_state.wrap,4,ta7
127
dd deflate_state.gzhead,4,ta8
127
dd deflate_state.gzhead,4,ta8
128
dd deflate_state.gzindex,4,ta9
128
dd deflate_state.gzindex,4,ta9
129
dd deflate_state.method,1,ta10
129
dd deflate_state.method,1,ta10
130
dd deflate_state.last_flush,4,ta11
130
dd deflate_state.last_flush,4,ta11
131
dd deflate_state.w_size,4,ta12
131
dd deflate_state.w_size,4,ta12
132
dd deflate_state.w_bits,4,ta13
132
dd deflate_state.w_bits,4,ta13
133
dd deflate_state.w_mask,4,ta14
133
dd deflate_state.w_mask,4,ta14
134
dd deflate_state.window,4,ta15
134
dd deflate_state.window,4,ta15
135
dd deflate_state.window_size,4,ta16
135
dd deflate_state.window_size,4,ta16
136
dd deflate_state.prev,4,ta17
136
dd deflate_state.prev,4,ta17
137
dd deflate_state.head,4,ta18
137
dd deflate_state.head,4,ta18
138
dd deflate_state.ins_h,4,ta19
138
dd deflate_state.ins_h,4,ta19
139
dd deflate_state.hash_size,4,ta20
139
dd deflate_state.hash_size,4,ta20
140
dd deflate_state.hash_bits,4,ta21
140
dd deflate_state.hash_bits,4,ta21
141
dd deflate_state.hash_mask,4,ta22
141
dd deflate_state.hash_mask,4,ta22
142
dd deflate_state.hash_shift,4,ta23
142
dd deflate_state.hash_shift,4,ta23
143
dd deflate_state.block_start,4,ta24
143
dd deflate_state.block_start,4,ta24
144
dd deflate_state.match_length,4,ta25
144
dd deflate_state.match_length,4,ta25
145
dd deflate_state.prev_match,4,ta26
145
dd deflate_state.prev_match,4,ta26
146
dd deflate_state.match_available,4,ta27
146
dd deflate_state.match_available,4,ta27
147
dd deflate_state.strstart,4,ta28
147
dd deflate_state.strstart,4,ta28
148
dd deflate_state.match_start,4,ta29
148
dd deflate_state.match_start,4,ta29
149
dd deflate_state.lookahead,4,ta30
149
dd deflate_state.lookahead,4,ta30
150
dd deflate_state.prev_length,4,ta31
150
dd deflate_state.prev_length,4,ta31
151
dd deflate_state.max_chain_length,4,ta32
151
dd deflate_state.max_chain_length,4,ta32
152
dd deflate_state.max_lazy_match,4,ta33
152
dd deflate_state.max_lazy_match,4,ta33
153
dd deflate_state.level,2,ta34
153
dd deflate_state.level,2,ta34
154
dd deflate_state.strategy,2,ta35
154
dd deflate_state.strategy,2,ta35
155
dd deflate_state.good_match,4,ta36
155
dd deflate_state.good_match,4,ta36
156
dd deflate_state.nice_match,4,ta37
156
dd deflate_state.nice_match,4,ta37
157
dd deflate_state.dyn_ltree,((2*HEAP_SIZE) shl 16)+2,ta38
157
dd deflate_state.dyn_ltree,((2*HEAP_SIZE) shl 16)+2,ta38
158
dd deflate_state.dyn_dtree,((2*(2*D_CODES+1)) shl 16)+2,ta39
158
dd deflate_state.dyn_dtree,((2*(2*D_CODES+1)) shl 16)+2,ta39
159
dd deflate_state.bl_tree,((2*(2*BL_CODES+1)) shl 16)+2,ta40
159
dd deflate_state.bl_tree,((2*(2*BL_CODES+1)) shl 16)+2,ta40
160
dd deflate_state.l_desc,(3 shl 16)+4,ta41
160
dd deflate_state.l_desc,(3 shl 16)+4,ta41
161
dd deflate_state.d_desc,(3 shl 16)+4,ta42
161
dd deflate_state.d_desc,(3 shl 16)+4,ta42
162
dd deflate_state.bl_desc,(3 shl 16)+4,ta43
162
dd deflate_state.bl_desc,(3 shl 16)+4,ta43
163
dd deflate_state.bl_count,((MAX_BITS+1) shl 16)+2,ta44
163
dd deflate_state.bl_count,((MAX_BITS+1) shl 16)+2,ta44
164
dd deflate_state.heap,((2*L_CODES+1) shl 16)+2,ta45
164
dd deflate_state.heap,((2*L_CODES+1) shl 16)+2,ta45
165
dd deflate_state.heap_len,4,ta46
165
dd deflate_state.heap_len,4,ta46
166
dd deflate_state.heap_max,4,ta47
166
dd deflate_state.heap_max,4,ta47
167
dd deflate_state.depth,((2*L_CODES+1) shl 16)+1,ta48
167
dd deflate_state.depth,((2*L_CODES+1) shl 16)+1,ta48
168
dd deflate_state.l_buf,4,ta49
168
dd deflate_state.l_buf,4,ta49
169
dd deflate_state.lit_bufsize,4,ta50
169
dd deflate_state.lit_bufsize,4,ta50
170
dd deflate_state.last_lit,4,ta51
170
dd deflate_state.last_lit,4,ta51
171
dd deflate_state.d_buf,4,ta52
171
dd deflate_state.d_buf,4,ta52
172
dd deflate_state.opt_len,4,ta53
172
dd deflate_state.opt_len,4,ta53
173
dd deflate_state.static_len,4,ta54
173
dd deflate_state.static_len,4,ta54
174
dd deflate_state.matches,4,ta55
174
dd deflate_state.matches,4,ta55
175
dd deflate_state.insert,4,ta56
175
dd deflate_state.insert,4,ta56
176
;if DEBUG eq 1
176
;if DEBUG eq 1
177
;dd deflate_state.compressed_len
177
;dd deflate_state.compressed_len
178
;dd deflate_state.bits_sent
178
;dd deflate_state.bits_sent
179
;end if
179
;end if
180
dd deflate_state.bi_buf,2,ta59
180
dd deflate_state.bi_buf,2,ta59
181
dd deflate_state.bi_valid,4,ta60
181
dd deflate_state.bi_valid,4,ta60
182
dd deflate_state.high_water,4,ta61
182
dd deflate_state.high_water,4,ta61
183
dd 0,0
183
dd 0,0
184
 
184
 
185
align 4
185
align 4
186
proc dbg_print, fun:dword, mes:dword
186
proc dbg_print, fun:dword, mes:dword
187
pushad
187
pushad
188
	mov eax,SF_BOARD
188
	mov eax,SF_BOARD
189
	mov ebx,SSF_DEBUG_WRITE
189
	mov ebx,SSF_DEBUG_WRITE
190
 
190
 
191
	mov esi,[fun]
191
	mov esi,[fun]
192
	cmp esi,0
192
	cmp esi,0
193
	je .end0
193
	je .end0
194
	@@:
194
	@@:
195
		mov cl,byte[esi]
195
		mov cl,byte[esi]
196
		int 0x40
196
		int 0x40
197
		inc esi
197
		inc esi
198
		cmp byte[esi],0
198
		cmp byte[esi],0
199
		jne @b
199
		jne @b
200
	mov cl,':'
200
	mov cl,':'
201
	int 0x40
201
	int 0x40
202
	mov cl,' '
202
	mov cl,' '
203
	int 0x40
203
	int 0x40
204
	.end0:
204
	.end0:
205
	mov esi,[mes]
205
	mov esi,[mes]
206
	cmp esi,0
206
	cmp esi,0
207
	je .end_f
207
	je .end_f
208
	@@:
208
	@@:
209
		mov cl,byte[esi]
209
		mov cl,byte[esi]
210
		cmp cl,0
210
		cmp cl,0
211
		je .end_f
211
		je .end_f
212
		int 0x40
212
		int 0x40
213
		inc esi
213
		inc esi
214
		jmp @b
214
		jmp @b
215
	.end_f:
215
	.end_f:
216
popad
216
popad
217
	ret
217
	ret
218
endp
218
endp
219
 
219
 
220
;input:
220
;input:
221
; zif - 1...8
221
; zif - 1...8
222
align 4
222
align 4
223
proc hex_in_str, buf:dword,val:dword,zif:dword
223
proc hex_in_str, buf:dword,val:dword,zif:dword
224
pushad
224
pushad
225
	mov edi,dword[buf]
225
	mov edi,dword[buf]
226
	mov ecx,dword[zif]
226
	mov ecx,dword[zif]
227
	add edi,ecx
227
	add edi,ecx
228
	dec edi
228
	dec edi
229
	mov ebx,dword[val]
229
	mov ebx,dword[val]
230
 
230
 
231
	.cycle:
231
	.cycle:
232
		mov al,bl
232
		mov al,bl
233
		and al,0xf
233
		and al,0xf
234
		cmp al,10
234
		cmp al,10
235
		jl @f
235
		jl @f
236
			add al,'a'-'0'-10
236
			add al,'a'-'0'-10
237
		@@:
237
		@@:
238
		add al,'0'
238
		add al,'0'
239
		mov byte[edi],al
239
		mov byte[edi],al
240
		dec edi
240
		dec edi
241
		shr ebx,4
241
		shr ebx,4
242
	loop .cycle
242
	loop .cycle
243
popad
243
popad
244
	ret
244
	ret
245
endp
245
endp
246
 
246
 
247
;output:
247
;output:
248
; eax = strlen
248
; eax = strlen
249
align 4
249
align 4
250
proc strlen, str1:dword
250
proc strlen, str1:dword
251
	mov eax,[str1]
251
	mov eax,[str1]
252
	@@:
252
	@@:
253
		cmp byte[eax],0
253
		cmp byte[eax],0
254
		je @f
254
		je @f
255
		inc eax
255
		inc eax
256
		jmp @b
256
		jmp @b
257
	@@:
257
	@@:
258
	sub eax,[str1]
258
	sub eax,[str1]
259
	ret
259
	ret
260
endp
260
endp
261
 
261
 
262
align 4
262
align 4
263
proc str_format_dbg, buf:dword, fmt:dword, p1:dword
263
proc str_format_dbg, buf:dword, fmt:dword, p1:dword
264
pushad
264
pushad
265
	mov esi,[fmt]
265
	mov esi,[fmt]
266
	mov edi,[buf]
266
	mov edi,[buf]
267
	mov ecx,80-1
267
	mov ecx,80-1
268
	.cycle0:
268
	.cycle0:
269
		lodsb
269
		lodsb
270
		cmp al,'%'
270
		cmp al,'%'
271
		jne .no_param
271
		jne .no_param
272
			lodsb
272
			lodsb
273
			dec ecx
273
			dec ecx
274
			cmp al,0
274
			cmp al,0
275
			je .cycle0end
275
			je .cycle0end
276
			cmp al,'d'
276
			cmp al,'d'
277
			je @f
277
			je @f
278
			cmp al,'u'
278
			cmp al,'u'
279
			je @f
279
			je @f
280
			cmp al,'l'
280
			cmp al,'l'
281
			je .end1
281
			je .end1
282
				jmp .end0
282
				jmp .end0
283
			.end1: ;%lu %lx
283
			.end1: ;%lu %lx
284
				lodsb
284
				lodsb
285
				dec ecx
285
				dec ecx
286
				cmp al,'u'
286
				cmp al,'u'
287
				jne .end0
287
				jne .end0
288
			@@:
288
			@@:
289
				mov eax,[p1]
289
				mov eax,[p1]
290
				stdcall convert_int_to_str,ecx
290
				stdcall convert_int_to_str,ecx
291
				xor al,al
291
				xor al,al
292
				repne scasb
292
				repne scasb
293
				dec edi
293
				dec edi
294
			.end0:
294
			.end0:
295
			loop .cycle0
295
			loop .cycle0
296
		.no_param:
296
		.no_param:
297
		stosb
297
		stosb
298
		cmp al,0
298
		cmp al,0
299
		je .cycle0end
299
		je .cycle0end
300
		loop .cycle0
300
		loop .cycle0
301
	.cycle0end:
301
	.cycle0end:
302
	xor al,al
302
	xor al,al
303
	stosb
303
	stosb
304
	stdcall dbg_print,txt_sp,[buf]
304
	stdcall dbg_print,txt_sp,[buf]
305
popad
305
popad
306
	ret
306
	ret
307
endp
307
endp
308
 
308
 
309
align 4
309
align 4
310
proc debug_fields, saddr:dword, form:dword
310
proc debug_fields, saddr:dword, form:dword
311
locals
311
locals
312
	nl_array dd ?
312
	nl_array dd ?
313
endl
313
endl
314
pushad
314
pushad
315
	mov edi,[saddr]
315
	mov edi,[saddr]
316
	cmp edi,0
316
	cmp edi,0
317
	je .end_f
317
	je .end_f
318
	mcall SF_BOARD,SSF_DEBUG_WRITE,13
318
	mcall SF_BOARD,SSF_DEBUG_WRITE,13
319
	mcall ,,10
319
	mcall ,,10
320
	mov eax,[form]
320
	mov eax,[form]
321
align 4
321
align 4
322
	.cycle0:
322
	.cycle0:
323
		mov ebx,[eax+4]
323
		mov ebx,[eax+4]
324
		mov ecx,ebx
324
		mov ecx,ebx
325
		and ebx,0xffff
325
		and ebx,0xffff
326
		cmp ebx,0
326
		cmp ebx,0
327
		je .end_f
327
		je .end_f
328
		mov esi,ebx
328
		mov esi,ebx
329
		shl ebx,1
329
		shl ebx,1
330
		shr ecx,16
330
		shr ecx,16
331
		cmp ecx,0
331
		cmp ecx,0
332
		je .end0
332
		je .end0
333
			;if array
333
			;if array
334
			stdcall dbg_print,0,[eax+8]
334
			stdcall dbg_print,0,[eax+8]
335
			mov edx,61 ;size text line
335
			mov edx,61 ;size text line
336
			mov dword[nl_array],0
336
			mov dword[nl_array],0
337
			.cycle2:
337
			.cycle2:
338
				inc dword[nl_array]
338
				inc dword[nl_array]
339
				sub edx,ebx
339
				sub edx,ebx
340
				sub edx,2 ;': '
340
				sub edx,2 ;': '
341
				cmp edx,3
341
				cmp edx,3
342
				jg .cycle2
342
				jg .cycle2
343
			mov edx,edi
343
			mov edx,edi
344
			add edx,[eax]
344
			add edx,[eax]
345
			push eax
345
			push eax
346
			.nl_i:
346
			.nl_i:
347
			mov eax,[nl_array]
347
			mov eax,[nl_array]
348
			mov byte[ebx+txt_buf],0 ;конец числа
348
			mov byte[ebx+txt_buf],0 ;конец числа
349
			.cycle1:
349
			.cycle1:
350
				stdcall hex_in_str,txt_buf,[edx],ebx
350
				stdcall hex_in_str,txt_buf,[edx],ebx
351
				add edx,esi ;move next value
351
				add edx,esi ;move next value
352
				
352
				
353
				push edi
353
				push edi
354
				mov edi,txt_buf
354
				mov edi,txt_buf
355
				cmp byte[edi],'0'
355
				cmp byte[edi],'0'
356
				jne @f
356
				jne @f
357
					inc edi
357
					inc edi
358
				cmp byte[edi],'0'
358
				cmp byte[edi],'0'
359
				jne @f
359
				jne @f
360
					inc edi
360
					inc edi
361
				cmp byte[edi],'0'
361
				cmp byte[edi],'0'
362
				jne @f
362
				jne @f
363
					inc edi
363
					inc edi
364
				cmp byte[edi],'0'
364
				cmp byte[edi],'0'
365
				jne @f
365
				jne @f
366
					inc edi
366
					inc edi
367
				@@:
367
				@@:
368
				cmp byte[edi],0
368
				cmp byte[edi],0
369
				jne @f
369
				jne @f
370
					dec edi
370
					dec edi
371
				@@:
371
				@@:
372
				stdcall dbg_print,edi,0
372
				stdcall dbg_print,edi,0
373
				pop edi
373
				pop edi
374
				
374
				
375
				;stdcall dbg_print,txt_buf,0
375
				;stdcall dbg_print,txt_buf,0
376
				dec eax
376
				dec eax
377
				jz .nl
377
				jz .nl
378
				loop .cycle1
378
				loop .cycle1
379
			.nl:
379
			.nl:
380
			push ebx ecx
380
			push ebx ecx
381
			mcall SF_BOARD,SSF_DEBUG_WRITE,13
381
			mcall SF_BOARD,SSF_DEBUG_WRITE,13
382
			mcall ,,10
382
			mcall ,,10
383
			pop ecx ebx
383
			pop ecx ebx
384
			dec ecx
384
			dec ecx
385
			cmp ecx,0
385
			cmp ecx,0
386
			jg .nl_i
386
			jg .nl_i
387
			pop eax
387
			pop eax
388
			add eax,12
388
			add eax,12
389
			jmp .cycle0
389
			jmp .cycle0
390
		.end0:
390
		.end0:
391
		mov edx,edi
391
		mov edx,edi
392
		add edx,[eax]
392
		add edx,[eax]
393
		stdcall hex_in_str,txt_buf,[edx],ebx
393
		stdcall hex_in_str,txt_buf,[edx],ebx
394
		mov byte[ebx+txt_buf],0 ;конец числа
394
		mov byte[ebx+txt_buf],0 ;конец числа
395
		stdcall dbg_print,txt_buf,[eax+8]
395
		stdcall dbg_print,txt_buf,[eax+8]
396
		add eax,12
396
		add eax,12
397
		jmp .cycle0
397
		jmp .cycle0
398
.end_f:
398
.end_f:
399
	mcall SF_BOARD,SSF_DEBUG_WRITE,13
399
	mcall SF_BOARD,SSF_DEBUG_WRITE,13
400
	mcall ,,10
400
	mcall ,,10
401
popad
401
popad
402
	ret
402
	ret
403
endp
403
endp
404
 
404
 
405
;input:
405
;input:
406
; eax - число
406
; eax - число
407
; edi - буфер для строки
407
; edi - буфер для строки
408
; len - длинна буфера
408
; len - длинна буфера
409
;output:
409
;output:
410
align 4
410
align 4
411
proc convert_int_to_str, len:dword
411
proc convert_int_to_str, len:dword
412
pushad
412
pushad
413
	mov esi,[len]
413
	mov esi,[len]
414
	add esi,edi
414
	add esi,edi
415
	dec esi
415
	dec esi
416
	call .str
416
	call .str
417
popad
417
popad
418
	ret
418
	ret
419
endp
419
endp
420
 
420
 
421
align 4
421
align 4
422
.str:
422
.str:
423
	mov ecx,0x0a
423
	mov ecx,0x0a
424
	cmp eax,ecx
424
	cmp eax,ecx
425
	jb @f
425
	jb @f
426
		xor edx,edx
426
		xor edx,edx
427
		div ecx
427
		div ecx
428
		push edx
428
		push edx
429
		call .str
429
		call .str
430
		pop eax
430
		pop eax
431
	@@:
431
	@@:
432
	cmp edi,esi
432
	cmp edi,esi
433
	jge @f
433
	jge @f
434
		or al,0x30
434
		or al,0x30
435
		stosb
435
		stosb
436
		mov byte[edi],0
436
		mov byte[edi],0
437
	@@:
437
	@@:
438
	ret
438
	ret