Subversion Repositories Kolibri OS

Rev

Rev 6801 | Rev 6874 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6801 Rev 6873
1
use32   ; ¢ª«îç¨âì 32-¡¨â­ë© ०¨¬  áᥬ¡«¥à 
1
use32   ; ¢ª«îç¨âì 32-¡¨â­ë© ०¨¬  áᥬ¡«¥à 
2
org 0x0 ;  ¤à¥á æ¨ï á ­ã«ï
2
org 0x0 ;  ¤à¥á æ¨ï á ­ã«ï
3
	db 'MENUET01'
3
	db 'MENUET01'
4
	dd 1,START,I_END,MEM,STACKTOP,0,cur_dir_path
4
	dd 1,START,I_END,MEM,STACKTOP,0,cur_dir_path
5
 
5
 
6
include '../../../../proc32.inc'
6
include '../../../../proc32.inc'
7
include '../../../../macros.inc'
7
include '../../../../macros.inc'
8
include '../../../../KOSfuncs.inc'
8
include '../../../../KOSfuncs.inc'
9
include '../../../../develop/libraries/box_lib/load_lib.mac'
9
include '../../../../develop/libraries/box_lib/load_lib.mac'
10
 
10
 
11
include 'deflate.inc'
11
include 'deflate.inc'
12
include 'debug.inc'
12
include 'debug.inc'
13
include 'zlib.inc'
13
include 'zlib.inc'
14
 
14
 
15
@use_library
15
@use_library
16
 
16
 
17
align 4
17
align 4
18
m0size dd 90 ;à §¬¥à ¤ ­­ëå ¤«ï 㯠ª®¢ª¨
18
m0size dd 90 ;à §¬¥à ¤ ­­ëå ¤«ï 㯠ª®¢ª¨
19
m1size dd 1024 ;à §¬¥à ¡ãä¥à  ¤ ­­ëå ¤«ï 㯠ª®¢ª¨
19
m1size dd 1024 ;à §¬¥à ¡ãä¥à  ¤ ­­ëå ¤«ï 㯠ª®¢ª¨
20
m2size dd 0 ;à §¬¥à à á¯ ª®¢ ­­ëå ¤ ­­ëå
20
m2size dd 0 ;à §¬¥à à á¯ ª®¢ ­­ëå ¤ ­­ëå
21
 
21
 
22
align 4
22
align 4
23
m0: ;¤ ­­ë¥ ¤«ï 㯠ª®¢ª¨
23
m0: ;¤ ­­ë¥ ¤«ï 㯠ª®¢ª¨
24
file 'zlib.txt'
24
file 'zlib.txt'
25
 
25
 
26
align 4
26
align 4
27
m1 rb 1024 ;¡ãä¥à ¤«ï 㯠ª®¢ ­­ëå ¤ ­­ëå
27
m1 rb 1024 ;¡ãä¥à ¤«ï 㯠ª®¢ ­­ëå ¤ ­­ëå
28
m2 dd 0 ;㪠§ â¥«ì ­  à á¯ ª®¢ ­­ë¥ ¤ ­­ë¥
28
m2 dd 0 ;㪠§ â¥«ì ­  à á¯ ª®¢ ­­ë¥ ¤ ­­ë¥
29
 
29
 
30
buf rb 1024 ;¡ãä¥à ¤«ï ¢ë¢®¤  ᦠâëå ¤ ­­ëå ¢ ®ª­®
30
buf rb 1024 ;¡ãä¥à ¤«ï ¢ë¢®¤  ᦠâëå ¤ ­­ëå ¢ ®ª­®
31
strategy dd Z_DEFAULT_STRATEGY ;áâà â¥£¨ï ᦠâ¨ï
31
strategy dd Z_DEFAULT_STRATEGY ;áâà â¥£¨ï ᦠâ¨ï
32
 
32
 
33
align 4
33
align 4
34
START:
34
START:
35
load_libraries l_libs_start,load_lib_end
35
load_libraries l_libs_start,load_lib_end
36
mov	ebp,lib0
36
mov	ebp,lib0
37
.test_lib_open:
37
.test_lib_open:
38
	cmp	dword [ebp+ll_struc_size-4],0
38
	cmp	dword [ebp+ll_struc_size-4],0
39
	jz	@f
39
	jz	@f
40
	mcall SF_TERMINATE_PROCESS ;exit not correct
40
	mcall SF_TERMINATE_PROCESS ;exit not correct
41
@@:
41
@@:
42
	add ebp,ll_struc_size
42
	add ebp,ll_struc_size
43
	cmp ebp,load_lib_end
43
	cmp ebp,load_lib_end
44
	jl .test_lib_open
44
	jl .test_lib_open
45
 
45
 
46
;	mcall SF_SYS_MISC, SSF_HEAP_INIT
46
;	mcall SF_SYS_MISC, SSF_HEAP_INIT
47
 
47
 
48
	call test_code
48
	call test_code
49
 
49
 
50
align 4
50
align 4
51
red:                    ; ¯¥à¥à¨á®¢ âì ®ª­®
51
red:                    ; ¯¥à¥à¨á®¢ âì ®ª­®
52
    call draw_window    ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª­ 
52
    call draw_window    ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª­ 
53
 
53
 
54
align 4
54
align 4
55
still:
55
still:
56
    mcall SF_WAIT_EVENT
56
    mcall SF_WAIT_EVENT
57
    cmp  eax,1          ; ¯¥à¥à¨á®¢ âì ®ª­® ?
57
    cmp  eax,1          ; ¯¥à¥à¨á®¢ âì ®ª­® ?
58
    je   red
58
    je   red
59
    cmp  eax,2          ; ­ ¦ â  ª« ¢¨è  ?
59
    cmp  eax,2          ; ­ ¦ â  ª« ¢¨è  ?
60
    je   key
60
    je   key
61
    cmp  eax,3          ; ­ ¦ â  ª­®¯ª  ?
61
    cmp  eax,3          ; ­ ¦ â  ª­®¯ª  ?
62
    je   button
62
    je   button
63
    jmp  still
63
    jmp  still
64
 
64
 
65
align 4
65
align 4
66
key:
66
key:
67
    mcall SF_GET_KEY
67
    mcall SF_GET_KEY
68
 
68
 
69
	cmp ah,178 ;Up
69
	cmp ah,178 ;Up
70
	jne @f
70
	jne @f
71
		cmp dword[strategy],0
71
		cmp dword[strategy],0
72
		jle @f
72
		jle @f
73
		dec dword[strategy]
73
		dec dword[strategy]
74
		call test_code
74
		call test_code
75
		call draw_window
75
		call draw_window
76
	@@:
76
	@@:
77
	cmp ah,177 ;Down
77
	cmp ah,177 ;Down
78
	jne @f
78
	jne @f
79
		cmp dword[strategy],4
79
		cmp dword[strategy],4
80
		jge @f
80
		jge @f
81
		inc dword[strategy]
81
		inc dword[strategy]
82
		call test_code
82
		call test_code
83
		call draw_window
83
		call draw_window
84
	@@:
84
	@@:
85
	cmp ah,176 ;Left
85
	cmp ah,176 ;Left
86
	jne @f
86
	jne @f
87
		cmp dword[m0size],8
87
		cmp dword[m0size],8
88
		jl @f
88
		jl @f
89
		dec dword[m0size]
89
		dec dword[m0size]
90
		call test_code
90
		call test_code
91
		call draw_window
91
		call draw_window
92
	@@:
92
	@@:
93
	cmp ah,179 ;Right
93
	cmp ah,179 ;Right
94
	jne @f
94
	jne @f
95
		inc dword[m0size]
95
		inc dword[m0size]
96
		call test_code
96
		call test_code
97
		call draw_window
97
		call draw_window
98
	@@:
98
	@@:
99
    jmp  still          ; ¢¥à­ãâìáï ª ­ ç «ã 横« 
99
    jmp  still          ; ¢¥à­ãâìáï ª ­ ç «ã 横« 
100
 
100
 
101
;---------------------------------------------------------------------
101
;---------------------------------------------------------------------
102
align 4
102
align 4
103
button:
103
button:
104
	mcall SF_GET_BUTTON
104
	mcall SF_GET_BUTTON
105
 
105
 
106
	cmp ah,1
106
	cmp ah,1
107
	jne still
107
	jne still
108
 
108
 
109
.exit: ; ª®­¥æ ¯à®£à ¬¬ë
109
.exit: ; ª®­¥æ ¯à®£à ¬¬ë
110
  	mcall SF_SYS_MISC,SSF_MEM_FREE,[m2]
110
  	mcall SF_SYS_MISC,SSF_MEM_FREE,[m2]
111
    mcall SF_TERMINATE_PROCESS
111
    mcall SF_TERMINATE_PROCESS
112
 
112
 
113
align 4
113
align 4
114
draw_window:
114
draw_window:
115
    mcall SF_REDRAW, SSF_BEGIN_DRAW
115
    mcall SF_REDRAW, SSF_BEGIN_DRAW
116
    mcall SF_STYLE_SETTINGS, SSF_GET_COLORS, sc,sizeof.system_colors
116
    mcall SF_STYLE_SETTINGS, SSF_GET_COLORS, sc,sizeof.system_colors
117
    mov   edx, [sc.work]         ; 梥â ä®­ 
117
    mov   edx, [sc.work]         ; 梥â ä®­ 
118
    or    edx, 0x33000000        ; ¨ ⨯ ®ª­  3
118
    or    edx, 0x33000000        ; ¨ ⨯ ®ª­  3
119
    mcall SF_CREATE_WINDOW, <50,600>, <50,180>, , ,title
119
    mcall SF_CREATE_WINDOW, <50,600>, <50,180>, , ,title
120
 
120
 
121
	cStr edx,'Strategy:'
121
	cStr edx,'Strategy:'
122
	mcall SF_DRAW_TEXT, <10,10>,0x40f0,,9
122
	mcall SF_DRAW_TEXT, <10,10>,0x40f0,,9
123
	cStr edx,'Input size:'
123
	cStr edx,'Input size:'
124
	mcall , <10,20>,,,11
124
	mcall , <10,20>,,,11
125
	cStr edx,'Compr. size:'
125
	cStr edx,'Compr. size:'
126
	mcall , <10,30>,,,12
126
	mcall , <10,30>,,,12
127
	cStr edx,'Outp. size:'
127
	cStr edx,'Outp. size:'
128
	mcall , <10,120>,,,11
128
	mcall , <10,120>,,,11
129
 
129
 
130
	mov edx,[strategy]
130
	mov edx,[strategy]
131
	imul edx,12
131
	imul edx,12
132
	add edx,capt_strateg
132
	add edx,capt_strateg
133
	mcall , <90,10>,0,,12
133
	mcall , <90,10>,0,,12
134
 
134
 
135
	mcall SF_DRAW_NUMBER, (5 shl 16)+1, m0size, <90,20>
135
	mcall SF_DRAW_NUMBER, (5 shl 16)+1, m0size, <90,20>
136
	mcall , (5 shl 16)+1, m1size, <90,30>
136
	mcall , (5 shl 16)+1, m1size, <90,30>
137
	mcall , (5 shl 16)+1, m2size, <90,120>
137
	mcall , (5 shl 16)+1, m2size, <90,120>
138
	;mov ecx,(1 shl 31)
138
	;mov ecx,(1 shl 31)
139
	mov esi,[m2size]
139
	mov esi,[m2size]
140
	cmp esi,95
140
	cmp esi,95
141
	jle @f
141
	jle @f
142
		mov esi,95
142
		mov esi,95
143
	@@:
143
	@@:
144
	mcall SF_DRAW_TEXT, <10,130>, 0, [m2]
144
	mcall SF_DRAW_TEXT, <10,130>, 0, [m2]
145
 
145
 
146
	mov esi,7
146
	mov esi,7
147
	mov ebx,(10 shl 16)+45 ;(x shl 16)+y
147
	mov ebx,(10 shl 16)+45 ;(x shl 16)+y
148
	mov edx,buf
148
	mov edx,buf
149
	.cycle1: ;rows
149
	.cycle1: ;rows
150
		mcall SF_DRAW_TEXT,, (1 shl 31)
150
		mcall SF_DRAW_TEXT,, (1 shl 31)
151
		add ebx,10
151
		add ebx,10
152
		add edx,32*3
152
		add edx,32*3
153
	dec esi
153
	dec esi
154
	jnz .cycle1
154
	jnz .cycle1
155
 
155
 
156
    mcall SF_REDRAW, SSF_END_DRAW
156
    mcall SF_REDRAW, SSF_END_DRAW
157
    ret
157
    ret
158
 
158
 
159
align 4
159
align 4
160
test_code:
160
test_code:
161
	stdcall [deflateInit2], my_strm,\
161
	stdcall [deflateInit2], my_strm,\
162
		-1, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, [strategy]
162
		-1, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, [strategy]
163
;‘âà â¥£¨ï:
163
;‘âà â¥£¨ï:
164
; Z_DEFAULT_STRATEGY, Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED
164
; Z_DEFAULT_STRATEGY, Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED
165
 
165
 
166
	mov eax,my_strm
166
	mov eax,my_strm
167
	mov [eax+z_stream.next_in],m0 ;ãáâ ­ ¢«¨¢ ¥¬ ¯ ¬ïâì ¤«ï ᦠâ¨ï
167
	mov [eax+z_stream.next_in],m0 ;ãáâ ­ ¢«¨¢ ¥¬ ¯ ¬ïâì ¤«ï ᦠâ¨ï
168
	mov ecx,[m0size]
168
	mov ecx,[m0size]
169
	mov [eax+z_stream.avail_in],ecx ;à §¬¥à ᦨ¬ ¥¬ë¦ ¤ ­­ëå
169
	mov [eax+z_stream.avail_in],ecx ;à §¬¥à ᦨ¬ ¥¬ë¦ ¤ ­­ëå
170
	mov [eax+z_stream.next_out],m1 ;ãáâ ­ ¢«¨¢ ¥¬ ¡ãä¥à ¤«ï ᦠâ¨ï
170
	mov [eax+z_stream.next_out],m1 ;ãáâ ­ ¢«¨¢ ¥¬ ¡ãä¥à ¤«ï ᦠâ¨ï
171
	mov dword[eax+z_stream.avail_out],1024 ;à §¬¥à ¡ãä¥à  ¤«ï ᦠâ¨ï (¬ ªá¨¬ã¬ 16 Š¡)
171
	mov dword[eax+z_stream.avail_out],1024 ;à §¬¥à ¡ãä¥à  ¤«ï ᦠâ¨ï (¬ ªá¨¬ã¬ 16 Š¡)
172
 
-
 
173
	;¢ëç¨á«ï¥¬ crc ¤«ï ᦨ¬ ¥¬ë¦ ¤ ­­ëå
-
 
174
	stdcall [calc_crc32], 0,m0,ecx
-
 
175
	mov edx,eax
-
 
176
 
-
 
177
	;call print_z_struct
-
 
178
 
172
 
179
	stdcall [deflate], my_strm, Z_FINISH ;Z_NO_FLUSH
-
 
180
 
-
 
181
	;call print_z_struct
173
	stdcall [deflate], my_strm, Z_FINISH
182
 
174
 
183
	;à §¬¥à ᦠâëå ¤ ­­ëå: 1024-[my_strm.avail_out]
175
	;à §¬¥à ᦠâëå ¤ ­­ëå: 1024-[my_strm.avail_out]
184
	mov ecx,1024
176
	mov ecx,1024
185
	sub ecx,[my_strm.avail_out]
177
	sub ecx,[my_strm.avail_out]
186
	mov [m1size],ecx
178
	mov [m1size],ecx
187
 
179
 
188
	;assert(ret != Z_STREAM_ERROR)
180
	;assert(ret != Z_STREAM_ERROR)
189
	;while (strm.avail_out == 0)
181
	;while (strm.avail_out == 0)
190
 
-
 
191
	;áâ ¢¨¬ crc ­  ᦠâë¥ ¤ ­­ë¥
-
 
192
	mov ecx,[m1size]
-
 
193
	sub ecx,4
-
 
194
	add ecx,m1
-
 
195
	mov [ecx],edx
-
 
196
 
182
 
197
	;ä®à¬¨à®¢ ­¨¥ ⥪áâ  ¤«ï ®â®¡à ¦¥­¨ï ᦠâëå ¤ ­­ëå
183
	;ä®à¬¨à®¢ ­¨¥ ⥪áâ  ¤«ï ®â®¡à ¦¥­¨ï ᦠâëå ¤ ­­ëå
198
	;¢ 16-à¨ç­®¬ ¢¨¤¥, ­ã¦­® ⮫쪮 ¤«ï ¯à¨¬¥à 
184
	;¢ 16-à¨ç­®¬ ¢¨¤¥, ­ã¦­® ⮫쪮 ¤«ï ¯à¨¬¥à 
199
	mov ebx,[m1size]
185
	mov ebx,[m1size]
200
	mov esi,m1
186
	mov esi,m1
201
	mov edi,buf
187
	mov edi,buf
202
	mov edx,7
188
	mov edx,7
203
align 4
189
align 4
204
	.cycle1: ;rows
190
	.cycle1: ;rows
205
	mov ecx,32
191
	mov ecx,32
206
align 4
192
align 4
207
	.cycle0: ;cols
193
	.cycle0: ;cols
208
		stdcall hex_in_str, edi,[esi],2
194
		stdcall hex_in_str, edi,[esi],2
209
		add edi,2
195
		add edi,2
210
		inc esi
196
		inc esi
211
		mov byte[edi],' ' ;format space
197
		mov byte[edi],' ' ;format space
212
		dec ebx
198
		dec ebx
213
		jz .cycle1end ;if end file
199
		jz .cycle1end ;if end file
214
		inc edi
200
		inc edi
215
		loop .cycle0
201
		loop .cycle0
216
	mov byte[edi-1],0
202
	mov byte[edi-1],0
217
	dec edx
203
	dec edx
218
	jnz .cycle1
204
	jnz .cycle1
219
	.cycle1end:
205
	.cycle1end:
220
	mov byte[edi],0
206
	mov byte[edi],0
221
 
207
 
222
	;㤠«¥­¨¥ ¡ãä¥à  á à ­¥¥ à á¯ ª®¢ ­­ë¬¨ ¤ ­­ë¬¨
208
	;㤠«¥­¨¥ ¡ãä¥à  á à ­¥¥ à á¯ ª®¢ ­­ë¬¨ ¤ ­­ë¬¨
223
	mcall SF_SYS_MISC,SSF_MEM_FREE,[m2]
209
	mcall SF_SYS_MISC,SSF_MEM_FREE,[m2]
224
	
210
	
225
	mov eax,[m1size]
211
	mov eax,[m1size]
226
	sub eax,2 ;;; 2? or 6?
212
	sub eax,2 ;;; 2? or 6?
227
	mov [m2size],eax
213
	mov [m2size],eax
228
	mov eax,m1
214
	mov eax,m1
229
	add eax,2
215
	add eax,2
230
	stdcall [deflate_unpack],eax,m2size
216
	stdcall [deflate_unpack],eax,m2size
231
	mov [m2],eax ;§ ¯¨áì ­®¢ëå à á¯ ª®¢ ­­ëå ¤ ­­ëå
217
	mov [m2],eax ;§ ¯¨áì ­®¢ëå à á¯ ª®¢ ­­ëå ¤ ­­ëå
232
	mov ecx,[m0size] ;;; ???
218
;;;	mov ecx,[m0size] ;;; ???
233
	mov [m2size],ecx
219
	mov [m2size],ecx
234
	ret
220
	ret
235
 
221
 
236
align 4
222
align 4
237
proc print_z_struct uses eax ebx
223
proc print_z_struct uses eax ebx
238
	mov eax,my_strm
224
	mov eax,my_strm
239
	mov ebx,[eax+z_stream.state]
225
	mov ebx,[eax+z_stream.state]
240
	stdcall debug_fields,eax,sv_2
226
	stdcall debug_fields,eax,sv_2
241
	stdcall debug_fields,ebx,sv_3
227
	stdcall debug_fields,ebx,sv_3
242
	ret
228
	ret
243
endp
229
endp
244
 
230
 
245
align 4
231
align 4
246
sc system_colors
232
sc system_colors
247
align 4
233
align 4
248
title db 'Zlib test, press on [Up], [Down], [Left], [Right]',0
234
title db 'Zlib test, press on [Up], [Down], [Left], [Right]',0
249
 
235
 
250
align 4
236
align 4
251
capt_strateg db '0) Default ',0
237
capt_strateg db '0) Default ',0
252
db '1) Filtered',0
238
db '1) Filtered',0
253
db '2) Huffman ',0
239
db '2) Huffman ',0
254
db '3) Rle     ',0
240
db '3) Rle     ',0
255
db '4) Fixed   ',0
241
db '4) Fixed   ',0
256
 
242
 
257
align 4
243
align 4
258
import_archiver:
244
import_archiver:
259
	deflate_unpack dd sz_deflate_unpack
245
	deflate_unpack dd sz_deflate_unpack
260
	deflateInit		dd sz_deflateInit
246
	deflateInit		dd sz_deflateInit
261
	deflateInit2	dd sz_deflateInit2
247
	deflateInit2	dd sz_deflateInit2
262
	deflateReset	dd sz_deflateReset
248
	deflateReset	dd sz_deflateReset
263
	deflate			dd sz_deflate
249
	deflate			dd sz_deflate
264
	deflateEnd		dd sz_deflateEnd
250
	deflateEnd		dd sz_deflateEnd
265
	calc_crc32		dd sz_calc_crc32
251
	calc_crc32		dd sz_calc_crc32
266
	dd 0,0
252
	dd 0,0
267
	sz_deflate_unpack db 'deflate_unpack',0
253
	sz_deflate_unpack db 'deflate_unpack',0
268
	sz_deflateInit db 'deflateInit',0
254
	sz_deflateInit db 'deflateInit',0
269
	sz_deflateInit2 db 'deflateInit2',0
255
	sz_deflateInit2 db 'deflateInit2',0
270
	sz_deflateReset db 'deflateReset',0
256
	sz_deflateReset db 'deflateReset',0
271
	sz_deflate db 'deflate',0
257
	sz_deflate db 'deflate',0
272
	sz_deflateEnd db 'deflateEnd',0
258
	sz_deflateEnd db 'deflateEnd',0
273
	sz_calc_crc32 db 'calc_crc32',0
259
	sz_calc_crc32 db 'calc_crc32',0
274
 
260
 
275
;--------------------------------------------------
261
;--------------------------------------------------
276
system_dir_0 db '/sys/lib/'
262
system_dir_0 db '/sys/lib/'
277
lib_name_0 db 'archiver.obj',0
263
lib_name_0 db 'archiver.obj',0
278
 
264
 
279
err_message_found_lib0 db 'Sorry I cannot load library archiver.obj',0
265
err_message_found_lib0 db 'Sorry I cannot load library archiver.obj',0
280
head_f_i:
266
head_f_i:
281
head_f_l db 'System error',0
267
head_f_l db 'System error',0
282
err_message_import0 db 'Error on load import library archiver.obj',0
268
err_message_import0 db 'Error on load import library archiver.obj',0
283
 
269
 
284
l_libs_start:
270
l_libs_start:
285
	lib0 l_libs lib_name_0, cur_dir_path, library_path, system_dir_0,\
271
	lib0 l_libs lib_name_0, cur_dir_path, library_path, system_dir_0,\
286
		err_message_found_lib0, head_f_l, import_archiver,err_message_import0, head_f_i
272
		err_message_found_lib0, head_f_l, import_archiver,err_message_import0, head_f_i
287
load_lib_end:
273
load_lib_end:
288
;---------------------------------------------------------------------
274
;---------------------------------------------------------------------
289
 
275
 
290
align 16
276
align 16
291
I_END:
277
I_END:
292
my_strm z_stream
278
my_strm z_stream
293
	rd 4096
279
	rd 4096
294
align 16
280
align 16
295
STACKTOP:
281
STACKTOP:
296
cur_dir_path:
282
cur_dir_path:
297
	rb 4096
283
	rb 4096
298
library_path:
284
library_path:
299
	rb 4096
285
	rb 4096
300
MEM:
286
MEM: