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 |