Subversion Repositories Kolibri OS

Rev

Rev 2165 | Rev 3014 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2165 Rev 2173
1
use32
1
use32
2
	org 0x0
2
	org 0x0
3
	db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
3
	db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
4
	dd 0x1
4
	dd 0x1
5
	dd start
5
	dd start
6
	dd i_end ;à §¬¥à ¯à¨«®¦¥­¨ï
6
	dd i_end ;à §¬¥à ¯à¨«®¦¥­¨ï
7
	dd mem
7
	dd mem
8
	dd stacktop
8
	dd stacktop
9
	dd 0
9
	dd 0
10
	dd sys_path
10
	dd sys_path
11
 
11
 
12
include '../../macros.inc'
12
include '../../macros.inc'
13
include '../../proc32.inc'
13
include '../../proc32.inc'
14
include '../../develop/libraries/box_lib/load_lib.mac'
14
include '../../develop/libraries/box_lib/load_lib.mac'
15
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
15
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
16
include 'mem.inc'
16
include 'mem.inc'
17
include 'dll.inc'
17
include 'dll.inc'
18
include 'lang.inc'
18
include 'lang.inc'
19
include 'info_fun_float.inc'
19
include 'info_fun_float.inc'
20
 
20
 
21
debug equ 0
21
debug equ 0
22
 
22
 
23
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
23
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
24
 
24
 
25
struct FileInfoBlock
25
struct FileInfoBlock
26
	Function dd ?
26
	Function dd ?
27
	Position dd ?
27
	Position dd ?
28
	Flags	 dd ?
28
	Flags	 dd ?
29
	Count	 dd ?
29
	Count	 dd ?
30
	Buffer	 dd ?
30
	Buffer	 dd ?
31
		db ?
31
		db ?
32
	FileName dd ?
32
	FileName dd ?
33
ends
33
ends
34
 
34
 
35
run_file_70 FileInfoBlock
35
run_file_70 FileInfoBlock
36
image_data dd 0 ;㪠§ â¥«ì ­  ¢à¥¬¥­­ãî ¯ ¬ïâì. ¤«ï ­ã¦¥­ ¯à¥®¡à §®¢ ­¨ï ¨§®¡à ¦¥­¨ï
36
image_data dd 0 ;㪠§ â¥«ì ­  ¢à¥¬¥­­ãî ¯ ¬ïâì. ¤«ï ­ã¦¥­ ¯à¥®¡à §®¢ ­¨ï ¨§®¡à ¦¥­¨ï
37
open_file_lif dd 0 ;㪠§ â¥«ì ­  ¯ ¬ïâì ¤«ï ®âªàëâ¨ï ä ©«®¢ 3ds
37
open_file_lif dd 0 ;㪠§ â¥«ì ­  ¯ ¬ïâì ¤«ï ®âªàëâ¨ï ä ©«®¢ 3ds
38
 
38
 
39
;
39
;
40
fn_toolbar db 'toolbar.png',0
40
fn_toolbar db 'toolbar.png',0
41
IMAGE_TOOLBAR_ICON_SIZE equ 16*16*3
41
IMAGE_TOOLBAR_ICON_SIZE equ 16*16*3
42
IMAGE_TOOLBAR_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*7
42
IMAGE_TOOLBAR_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*7
43
image_data_toolbar dd 0
43
image_data_toolbar dd 0
44
;
44
;
45
TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;à §¬¥à bmp ä ©«  á á¨á⥬­ë¬¨ ¨ª®­ª ¬¨
45
TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;à §¬¥à bmp ä ©«  á á¨á⥬­ë¬¨ ¨ª®­ª ¬¨
46
icon_tl_sys dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï á¨á⥬­ëå ¨ª®­®ª
46
icon_tl_sys dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï á¨á⥬­ëå ¨ª®­®ª
47
icon_toolbar dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï ¨ª®­®ª ®¡ê¥ªâ®¢
47
icon_toolbar dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï ¨ª®­®ª ®¡ê¥ªâ®¢
48
TOOLBAR_ICON_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*7+54 ;à §¬¥à bmp ä ©«  á ¨ª®­ª ¬¨ ®¡ê¥ªâ®¢
48
TOOLBAR_ICON_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*7+54 ;à §¬¥à bmp ä ©«  á ¨ª®­ª ¬¨ ®¡ê¥ªâ®¢
49
;
49
;
50
IMAGE_FILE1_SIZE equ 128*144*3+54 ;à §¬¥à ä ©«  á ¨§®¡à ¦¥­¨¥¬
50
IMAGE_FILE1_SIZE equ 128*144*3+54 ;à §¬¥à ä ©«  á ¨§®¡à ¦¥­¨¥¬
51
 
51
 
52
macro load_image_file path,buf,size { ;¬ ªà®á ¤«ï § £à㧪¨ ¨§®¡à ¦¥­¨©
52
macro load_image_file path,buf,size { ;¬ ªà®á ¤«ï § £à㧪¨ ¨§®¡à ¦¥­¨©
53
	;path - ¬®¦¥â ¡ëâì ¯¥à¥¬¥­­®© ¨«¨ áâப®¢ë¬ ¯ à ¬¥â஬
53
	;path - ¬®¦¥â ¡ëâì ¯¥à¥¬¥­­®© ¨«¨ áâப®¢ë¬ ¯ à ¬¥â஬
54
	if path eqtype '' ;¯à®¢¥à塞 § ¤ ­ «¨ áâப®© ¯ à ¬¥âà path
54
	if path eqtype '' ;¯à®¢¥à塞 § ¤ ­ «¨ áâப®© ¯ à ¬¥âà path
55
		jmp @f
55
		jmp @f
56
			local .path_str
56
			local .path_str
57
			.path_str db path ;ä®à¬¨à㥬 «®ª «ì­ãî ¯¥à¥¬¥­­ãî
57
			.path_str db path ;ä®à¬¨à㥬 «®ª «ì­ãî ¯¥à¥¬¥­­ãî
58
			db 0
58
			db 0
59
		@@:
59
		@@:
60
		;32 - áâ ­¤ àâ­ë©  ¤à¥á ¯® ª®â®à®¬ã ¤®«¦¥­ ¡ëâì ¡ãä¥à á á¨á⥬­ë¬ ¯ã⥬
60
		;32 - áâ ­¤ àâ­ë©  ¤à¥á ¯® ª®â®à®¬ã ¤®«¦¥­ ¡ëâì ¡ãä¥à á á¨á⥬­ë¬ ¯ã⥬
61
		copy_path .path_str,[32],file_name,0x0
61
		copy_path .path_str,[32],file_name,0x0
62
	else
62
	else
63
		copy_path path,[32],file_name,0x0 ;ä®à¬¨à㥬 ¯®«­ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥­¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ®­ ¢ ®¤­®© ¯ ¯ª¥ á ¯à®£à ¬¬®©
63
		copy_path path,[32],file_name,0x0 ;ä®à¬¨à㥬 ¯®«­ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥­¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ®­ ¢ ®¤­®© ¯ ¯ª¥ á ¯à®£à ¬¬®©
64
	end if
64
	end if
65
 
65
 
66
	stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥­¨ï
66
	stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥­¨ï
67
	mov [buf],eax
67
	mov [buf],eax
68
 
68
 
69
	mov eax,70 ;70-ï äã­ªæ¨ï à ¡®â  á ä ©« ¬¨
69
	mov eax,70 ;70-ï äã­ªæ¨ï à ¡®â  á ä ©« ¬¨
70
	mov [run_file_70.Function], 0
70
	mov [run_file_70.Function], 0
71
	mov [run_file_70.Position], 0
71
	mov [run_file_70.Position], 0
72
	mov [run_file_70.Flags], 0
72
	mov [run_file_70.Flags], 0
73
	mov [run_file_70.Count], dword size
73
	mov [run_file_70.Count], dword size
74
	m2m [run_file_70.Buffer], [buf]
74
	m2m [run_file_70.Buffer], [buf]
75
	mov byte[run_file_70+20], 0
75
	mov byte[run_file_70+20], 0
76
	mov [run_file_70.FileName], file_name
76
	mov [run_file_70.FileName], file_name
77
	mov ebx,run_file_70
77
	mov ebx,run_file_70
78
	int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
78
	int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
79
	cmp ebx,0xffffffff
79
	cmp ebx,0xffffffff
80
	je @f
80
	je @f
81
		;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥­¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥­­ë© ¡ãä¥à image_data
81
		;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥­¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥­­ë© ¡ãä¥à image_data
82
		stdcall dword[img_decode], dword[buf],ebx,0
82
		stdcall dword[img_decode], dword[buf],ebx,0
83
		mov dword[image_data],eax
83
		mov dword[image_data],eax
84
		;¯à¥®¡à §ã¥¬ ¨§®¡à ¦¥­¨¥ ª ä®à¬ âã rgb
84
		;¯à¥®¡à §ã¥¬ ¨§®¡à ¦¥­¨¥ ª ä®à¬ âã rgb
85
		stdcall dword[img_to_rgb2], dword[image_data],dword[buf]
85
		stdcall dword[img_to_rgb2], dword[image_data],dword[buf]
86
		;㤠«ï¥¬ ¢à¥¬¥­­ë© ¡ãä¥à image_data
86
		;㤠«ï¥¬ ¢à¥¬¥­­ë© ¡ãä¥à image_data
87
		stdcall dword[img_destroy], dword[image_data]
87
		stdcall dword[img_destroy], dword[image_data]
88
	@@:
88
	@@:
89
}
89
}
90
 
90
 
91
;--------------------------------------
91
;--------------------------------------
92
include 'data.inc'
92
include 'data.inc'
93
 
93
 
94
level_stack dd 0
94
level_stack dd 0
95
offs_last_timer dd 0 ;¯®á«¥¤­¨© ᤢ¨£ ¯®ª § ­ë© ¢ ä㭪樨 â ©¬¥à 
95
offs_last_timer dd 0 ;¯®á«¥¤­¨© ᤢ¨£ ¯®ª § ­ë© ¢ ä㭪樨 â ©¬¥à 
96
 
96
 
97
ID_ICON_CHUNK_MAIN equ 0 ;¨ª®­ª  £« ¢­®£® ¡«®ª 
97
ID_ICON_CHUNK_MAIN equ 0 ;¨ª®­ª  £« ¢­®£® ¡«®ª 
98
ID_ICON_CHUNK_NOT_FOUND equ 1 ;¨ª®­ª  ­¥ ¨§¢¥áâ­®£® ¡«®ª 
98
ID_ICON_CHUNK_NOT_FOUND equ 1 ;¨ª®­ª  ­¥ ¨§¢¥áâ­®£® ¡«®ª 
99
ID_ICON_DATA equ 2 ;¨ª®­ª  ¤«ï ¤ ­­ëå ¡«®ª , ­¥ ®¯à¥¤¥«¥­­®© áâàãªâãàë
99
ID_ICON_DATA equ 2 ;¨ª®­ª  ¤«ï ¤ ­­ëå ¡«®ª , ­¥ ®¯à¥¤¥«¥­­®© áâàãªâãàë
100
 
100
 
101
FILE_ERROR_CHUNK_SIZE equ -3 ;®è¨¡ª  ¢ à §¬¥à¥ ¡«®ª 
101
FILE_ERROR_CHUNK_SIZE equ -3 ;®è¨¡ª  ¢ à §¬¥à¥ ¡«®ª 
102
 
102
 
103
align 4
103
align 4
104
file_3ds:
104
file_3ds:
105
.offs: dd 0 ;+0 㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
105
.offs: dd 0 ;+0 㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
106
.size: dd 0 ;+4 à §¬¥à ¡«®ª  (¤«ï 1-£® ¯ à ¬¥âà  = à §¬¥à ä ©«  3ds)
106
.size: dd 0 ;+4 à §¬¥à ¡«®ª  (¤«ï 1-£® ¯ à ¬¥âà  = à §¬¥à ä ©«  3ds)
107
rb 8*MAX_FILE_LEVEL
107
rb 8*MAX_FILE_LEVEL
108
 
108
 
109
size_one_list equ 40
109
size_one_list equ 40
110
list_offs_text equ 12 ;ᤢ¨£ ­ ç «  ⥪áâ  ¢ «¨áâ¥
110
list_offs_text equ 12 ;ᤢ¨£ ­ ç «  ⥪áâ  ¢ «¨áâ¥
111
buffer rb size_one_list ;¡ãä¥à ¤«ï ¤®¡ ¢«¥­¨ï áâàãªâãà ¢ ᯨ᮪ tree1
111
buffer rb size_one_list ;¡ãä¥à ¤«ï ¤®¡ ¢«¥­¨ï áâàãªâãà ¢ ᯨ᮪ tree1
112
 
112
 
113
txt_3ds_symb db 0,0
113
txt_3ds_symb db 0,0
114
;--------------------------------------
114
;--------------------------------------
115
 
115
 
116
include 'info_wnd_coords.inc'
116
include 'info_wnd_coords.inc'
117
 
117
 
118
align 4
118
align 4
119
start:
119
start:
120
	load_libraries l_libs_start,l_libs_end
120
	load_libraries l_libs_start,l_libs_end
121
	;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ­ è  «¨¡ 
121
	;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ­ è  «¨¡ 
122
	mov	ebp,lib_7
122
	mov	ebp,lib_7
123
	cmp	dword [ebp+ll_struc_size-4],0
123
	cmp	dword [ebp+ll_struc_size-4],0
124
	jz	@f
124
	jz	@f
125
		mcall -1 ;exit not correct
125
		mcall -1 ;exit not correct
126
	@@:
126
	@@:
127
	mcall 48,3,sc,sizeof.system_colors
127
	mcall 48,3,sc,sizeof.system_colors
128
	mcall 40,0x27
128
	mcall 40,0x27
129
	stdcall [OpenDialog_Init],OpenDialog_data ;¯®¤£®â®¢ª  ¤¨ «®£ 
129
	stdcall [OpenDialog_Init],OpenDialog_data ;¯®¤£®â®¢ª  ¤¨ «®£ 
130
 
130
 
131
	stdcall dword[tl_data_init], tree1
131
	stdcall dword[tl_data_init], tree1
132
	;á¨á⥬­ë¥ ¨ª®­ª¨ 16*16 ¤«ï tree_list
132
	;á¨á⥬­ë¥ ¨ª®­ª¨ 16*16 ¤«ï tree_list
133
	load_image_file 'tl_sys_16.png', icon_tl_sys,TREE_ICON_SYS16_BMP_SIZE
133
	load_image_file 'tl_sys_16.png', icon_tl_sys,TREE_ICON_SYS16_BMP_SIZE
134
	;¥á«¨ ¨§®¡à ¦¥­¨¥ ­¥ ®âªàë«®áì, â® ¢ icon_tl_sys ¡ã¤ãâ
134
	;¥á«¨ ¨§®¡à ¦¥­¨¥ ­¥ ®âªàë«®áì, â® ¢ icon_tl_sys ¡ã¤ãâ
135
	;­¥ ¨­¨æ¨ «¨§¨à®¢ ­­ë¥ ¤ ­­ë¥, ­® ®è¨¡ª¨ ­¥ ¡ã¤¥â, â. ª. ¡ãä¥à ­ã¦­®£® à §¬¥à 
135
	;­¥ ¨­¨æ¨ «¨§¨à®¢ ­­ë¥ ¤ ­­ë¥, ­® ®è¨¡ª¨ ­¥ ¡ã¤¥â, â. ª. ¡ãä¥à ­ã¦­®£® à §¬¥à 
136
	mov eax,dword[icon_tl_sys]
136
	mov eax,dword[icon_tl_sys]
137
	mov dword[tree1.data_img_sys],eax
137
	mov dword[tree1.data_img_sys],eax
138
 
138
 
139
	load_image_file 'objects.png', icon_toolbar,TOOLBAR_ICON_BMP_SIZE
139
	load_image_file 'objects.png', icon_toolbar,TOOLBAR_ICON_BMP_SIZE
140
	mov eax,dword[icon_toolbar]
140
	mov eax,dword[icon_toolbar]
141
	mov dword[tree1.data_img],eax
141
	mov dword[tree1.data_img],eax
142
 
142
 
143
	stdcall [buf2d_create], buf_0 ;ᮧ¤ ­¨¥ ¡ãä¥à 
143
	stdcall [buf2d_create], buf_0 ;ᮧ¤ ­¨¥ ¡ãä¥à 
144
 
144
 
145
	load_image_file 'font8x9.bmp', image_data_toolbar,IMAGE_FILE1_SIZE
145
	load_image_file 'font8x9.bmp', image_data_toolbar,IMAGE_FILE1_SIZE
146
	stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;ᮧ¤ ¥¬ ¡ãä¥à
146
	stdcall [buf2d_create_f_img], buf_1,[image_data_toolbar] ;ᮧ¤ ¥¬ ¡ãä¥à
147
	stdcall mem.Free,[image_data_toolbar] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
147
	stdcall mem.Free,[image_data_toolbar] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
148
	stdcall [buf2d_conv_24_to_8], buf_1,1 ;¤¥« ¥¬ ¡ãä¥à ¯à®§à ç­®á⨠8 ¡¨â
148
	stdcall [buf2d_conv_24_to_8], buf_1,1 ;¤¥« ¥¬ ¡ãä¥à ¯à®§à ç­®á⨠8 ¡¨â
149
	stdcall [buf2d_convert_text_matrix], buf_1
149
	stdcall [buf2d_convert_text_matrix], buf_1
150
 
150
 
151
	load_image_file fn_toolbar, image_data_toolbar,IMAGE_TOOLBAR_SIZE
151
	load_image_file fn_toolbar, image_data_toolbar,IMAGE_TOOLBAR_SIZE
152
 
152
 
153
	stdcall mem.Alloc,MAX_FILE_SIZE
153
	stdcall mem.Alloc,MAX_FILE_SIZE
154
	mov dword[open_file_lif],eax
154
	mov dword[open_file_lif],eax
155
 
155
 
156
	mcall 26,9
156
	mcall 26,9
157
	mov [last_time],eax
157
	mov [last_time],eax
158
 
158
 
159
align 4
159
align 4
160
red_win:
160
red_win:
161
	call draw_window
161
	call draw_window
162
 
162
 
163
align 4
163
align 4
164
still:
164
still:
165
	mcall 26,9
165
	mcall 26,9
166
	mov ebx,[last_time]
166
	mov ebx,[last_time]
167
	add ebx,10 ;§ ¤¥à¦ª 
167
	add ebx,10 ;§ ¤¥à¦ª 
168
	cmp ebx,eax
168
	cmp ebx,eax
169
	jge @f
169
	jge @f
170
		mov ebx,eax
170
		mov ebx,eax
171
	@@:
171
	@@:
172
	sub ebx,eax
172
	sub ebx,eax
173
	;cmp ebx,10 ;§ ¤¥à¦ª 
173
	;cmp ebx,10 ;§ ¤¥à¦ª 
174
	;ja timer_funct
174
	;ja timer_funct
175
	;test ebx,ebx
175
	;test ebx,ebx
176
	;jz timer_funct
176
	;jz timer_funct
177
	mcall 23
177
	mcall 23
178
	cmp eax,0
178
	cmp eax,0
179
	je timer_funct
179
	je timer_funct
180
 
180
 
181
	cmp al,1
181
	cmp al,1
182
	jz red_win
182
	jz red_win
183
	cmp al,2
183
	cmp al,2
184
	jz key
184
	jz key
185
	cmp al,3
185
	cmp al,3
186
	jz button
186
	jz button
187
	cmp al,6
187
	cmp al,6
188
	jne @f
188
	jne @f
189
		mcall 9,procinfo,-1
189
		mcall 9,procinfo,-1
190
		cmp ax,word[procinfo+4]
190
		cmp ax,word[procinfo+4]
191
		jne @f ;®ª­® ­¥  ªâ¨¢­®
191
		jne @f ;®ª­® ­¥  ªâ¨¢­®
192
		call mouse
192
		call mouse
193
	@@:
193
	@@:
194
	jmp still
194
	jmp still
195
 
195
 
196
align 4
196
align 4
197
mouse:
197
mouse:
198
	stdcall [tl_mouse], dword tree1
198
	stdcall [tl_mouse], dword tree1
199
	ret
199
	ret
200
 
200
 
201
align 4
201
align 4
202
timer_funct:
202
timer_funct:
203
	pushad
203
	pushad
204
if debug
204
if debug
205
	mov eax,4
205
	mov eax,4
206
	mov ebx,(5 shl 16)+8
206
	mov ebx,(5 shl 16)+8
207
	mov ecx,0xff+0x80000000
207
	mov ecx,0xff+0x80000000
208
	mov edx,txt_0002
208
	mov edx,txt_0002
209
	int 0x40
209
	int 0x40
210
end if
210
end if
211
	mcall 26,9
211
	mcall 26,9
212
	mov [last_time],eax
212
	mov [last_time],eax
213
 
213
 
214
	;
214
	;
215
	stdcall [tl_node_get_data],tree1
215
	stdcall [tl_node_get_data],tree1
216
	pop ebx
216
	pop ebx
217
	cmp ebx,0
217
	cmp ebx,0
218
	je @f
218
	je @f
219
		mov eax,dword[ebx] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª  ®â­®á¨â¥«ì­® ­ ç «  ä ©« 
219
		mov eax,dword[ebx] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª  ®â­®á¨â¥«ì­® ­ ç «  ä ©« 
220
		mov ecx,dword[ebx+4] ;à §¬¥à ¡«®ª 
220
		mov ecx,dword[ebx+4] ;à §¬¥à ¡«®ª 
221
		stdcall hex_in_str, txt_3ds_offs.dig, eax,8
221
		stdcall hex_in_str, txt_3ds_offs.dig, eax,8
222
		stdcall hex_in_str, txt_3ds_offs.siz, ecx,8
222
		stdcall hex_in_str, txt_3ds_offs.siz, ecx,8
223
 
223
 
224
		add eax,dword[open_file_lif] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
224
		add eax,dword[open_file_lif] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
225
		cmp dword[offs_last_timer],eax
225
		cmp dword[offs_last_timer],eax
226
		je @f
226
		je @f
227
			mov dword[offs_last_timer],eax
227
			mov dword[offs_last_timer],eax
228
			call buf_draw_beg
228
			call buf_draw_beg
229
			stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_offs,5,35,0xb000
229
			stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_offs,5,35,0xb000
230
			mov edx,dword[ebx+8]
230
			mov edx,dword[ebx+8]
231
			cmp edx,0 ;ᬮâਬ ¥áâì «¨ ®¯¨á ­¨¥ ¡«®ª 
231
			cmp edx,0 ;ᬮâਬ ¥áâì «¨ ®¯¨á ­¨¥ ¡«®ª 
232
			je .no_info
232
			je .no_info
233
				stdcall [buf2d_draw_text], buf_0, buf_1,edx,5,45,0xb000
233
				stdcall [buf2d_draw_text], buf_0, buf_1,edx,5,45,0xb000
234
			.no_info:
234
			.no_info:
235
			add ecx,eax ;¯®«ãç ¥¬ à §¬¥à ¡«®ª 
235
			add ecx,eax ;¯®«ãç ¥¬ à §¬¥à ¡«®ª 
236
			stdcall buf_draw_hex_table,eax,ecx ;¤®¡ ¢«¥­¨¥ 16-à¨ç­ëå ¤ ­­ëå
236
			stdcall buf_draw_hex_table,eax,ecx ;¤®¡ ¢«¥­¨¥ 16-à¨ç­ëå ¤ ­­ëå
237
			stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
237
			stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
238
	@@:
238
	@@:
239
	popad
239
	popad
240
	jmp still
240
	jmp still
241
 
241
 
242
align 4
242
align 4
243
buf_draw_beg:
243
buf_draw_beg:
244
	stdcall [buf2d_clear], buf_0, [buf_0.color] ;ç¨á⨬ ¡ãä¥à
244
	stdcall [buf2d_clear], buf_0, [buf_0.color] ;ç¨á⨬ ¡ãä¥à
245
	stdcall [buf2d_draw_text], buf_0, buf_1,txt_open_3ds,5,5,0xff
245
	stdcall [buf2d_draw_text], buf_0, buf_1,txt_open_3ds,5,5,0xff
246
	stdcall [buf2d_draw_text], buf_0, buf_1,openfile_path,5,15,0xff
246
	stdcall [buf2d_draw_text], buf_0, buf_1,openfile_path,5,15,0xff
247
	cmp dword[level_stack],FILE_ERROR_CHUNK_SIZE ;¢®§¬®¦­  ®è¨¡ª  ä ©« 
247
	cmp dword[level_stack],FILE_ERROR_CHUNK_SIZE ;¢®§¬®¦­  ®è¨¡ª  ä ©« 
248
	jne @f
248
	jne @f
249
		stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_err_sizes,5,25,0xff0000
249
		stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_err_sizes,5,25,0xff0000
250
	@@:
250
	@@:
251
	ret
251
	ret
252
 
252
 
253
align 4
253
align 4
254
proc buf_draw_hex_table, offs:dword, size_line:dword
254
proc buf_draw_hex_table, offs:dword, size_line:dword
255
	pushad
255
	pushad
256
	locals
256
	locals
257
		coord_y dd 55 ;ª®®à¤¨­ â  y ¤«ï ­ ç «  ¢ë¢®¤  â ¡«¨æë
257
		coord_y dd 55 ;ª®®à¤¨­ â  y ¤«ï ­ ç «  ¢ë¢®¤  â ¡«¨æë
258
	endl
258
	endl
259
		mov esi,dword[offs]
259
		mov esi,dword[offs]
260
		mov edi,dword[open_file_lif]
260
		mov edi,dword[open_file_lif]
261
		add edi,dword[file_3ds.size] ;edi - 㪠§ â¥«ì ­  ª®­¥æ ä ©«  ¢ ¯ ¬ïâ¨
261
		add edi,dword[file_3ds.size] ;edi - 㪠§ â¥«ì ­  ª®­¥æ ä ©«  ¢ ¯ ¬ïâ¨
262
		mov dword[txt_3ds_offs.dig],0
262
		mov dword[txt_3ds_offs.dig],0
263
		cld
263
		cld
264
		.cycle_rows:
264
		.cycle_rows:
265
			mov ebx,5 ;®âáâ㯠᫥¢  ¤«ï æ¨äà
265
			mov ebx,5 ;®âáâ㯠᫥¢  ¤«ï æ¨äà
266
			mov edx,5+10*24 ;®âáâ㯠᫥¢  ¤«ï ⥪áâ 
266
			mov edx,5+10*24 ;®âáâ㯠᫥¢  ¤«ï ⥪áâ 
267
			mov ecx,10
267
			mov ecx,10
268
			@@:
268
			@@:
269
				stdcall hex_in_str, txt_3ds_offs.dig, dword[esi],2
269
				stdcall hex_in_str, txt_3ds_offs.dig, dword[esi],2
270
				stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_offs.dig,ebx,[coord_y],0
270
				stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_offs.dig,ebx,[coord_y],0
271
 
271
 
272
				mov al,byte[esi]
272
				mov al,byte[esi]
273
				mov byte[txt_3ds_symb],al
273
				mov byte[txt_3ds_symb],al
274
				stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_symb,edx,[coord_y],0x808080
274
				stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_symb,edx,[coord_y],0x808080
275
				inc esi
275
				inc esi
276
				cmp esi,dword[size_line]
276
				cmp esi,dword[size_line]
277
				jne .end_block
277
				jne .end_block
278
					stdcall draw_block_end_line, dword[coord_y]
278
					stdcall draw_block_end_line, dword[coord_y]
279
				.end_block:
279
				.end_block:
280
				cmp esi,edi
280
				cmp esi,edi
281
				jge @f ;jg ???
281
				jge @f ;jg ???
282
				add ebx,24
282
				add ebx,24
283
				add edx,9 ;è¨à¨­  1-£® ᨬ¢®«  +1pix
283
				add edx,9 ;è¨à¨­  1-£® ᨬ¢®«  +1pix
284
				loop @b
284
				loop @b
285
			add dword[coord_y],10 ;¢ëá®â  1-£® ᨬ¢®«  (¨«¨ ¨­â¥à¢ « ¬¥¦¤ã áâப ¬¨)
285
			add dword[coord_y],10 ;¢ëá®â  1-£® ᨬ¢®«  (¨«¨ ¨­â¥à¢ « ¬¥¦¤ã áâப ¬¨)
286
			mov ebx,dword[buf_0.h]
286
			mov ebx,dword[buf_0.h]
287
			cmp dword[coord_y],ebx
287
			cmp dword[coord_y],ebx
288
			jl .cycle_rows
288
			jl .cycle_rows
289
		@@:
289
		@@:
290
	popad
290
	popad
291
	ret
291
	ret
292
endp
292
endp
293
 
293
 
294
align 4
294
align 4
295
proc draw_block_end_line, coord_y:dword
295
proc draw_block_end_line, coord_y:dword
296
	push eax ebx ecx
296
	push eax ebx ecx
297
		add ebx,20 ;20 = width 2.5 symbols
297
		add ebx,20 ;20 = width 2.5 symbols
298
		mov eax,[coord_y]
298
		mov eax,[coord_y]
299
		sub eax,2
299
		sub eax,2
300
		mov ecx,eax
300
		mov ecx,eax
301
		add ecx,10
301
		add ecx,10
302
		stdcall [buf2d_line], buf_0, 0,ecx,ebx,ecx ,0xff
302
		stdcall [buf2d_line], buf_0, 0,ecx,ebx,ecx ,0xff
303
		stdcall [buf2d_line], buf_0, ebx,ecx,ebx,eax ,0xff
303
		stdcall [buf2d_line], buf_0, ebx,ecx,ebx,eax ,0xff
304
		stdcall [buf2d_line], buf_0, ebx,eax,5+10*24-4,eax ,0xff
304
		stdcall [buf2d_line], buf_0, ebx,eax,5+10*24-4,eax ,0xff
305
	pop ecx ebx eax
305
	pop ecx ebx eax
306
	ret
306
	ret
307
endp
307
endp
308
 
308
 
309
align 4
309
align 4
310
draw_window:
310
draw_window:
311
pushad
311
pushad
312
	mcall 12,1
312
	mcall 12,1
313
	xor eax,eax
313
	xor eax,eax
314
	mov ebx,(20 shl 16)+560
314
	mov ebx,(20 shl 16)+560
315
	mov ecx,(20 shl 16)+315
315
	mov ecx,(20 shl 16)+315
316
	mov edx,[sc.work]
316
	mov edx,[sc.work]
317
	or  edx,(3 shl 24)+0x10000000+0x20000000
317
	or  edx,(3 shl 24)+0x10000000+0x20000000
318
	mov edi,capt
318
	mov edi,capt
319
	int 0x40
319
	int 0x40
320
 
320
 
321
	mcall 9,procinfo,-1
321
	mcall 9,procinfo,-1
322
	mov eax,dword[procinfo.box.height]
322
	mov eax,dword[procinfo.box.height]
323
	cmp eax,250
323
	cmp eax,250
324
	jge @f
324
	jge @f
325
		mov eax,250
325
		mov eax,250
326
	@@:
326
	@@:
327
	sub eax,65
327
	sub eax,65
328
	mov dword[tree1.box_height],eax
328
	mov dword[tree1.box_height],eax
329
	mov word[w_scr_t1+4],ax ;­®¢ë¥ à §¬¥àë áªà®««¨­£ 
329
	mov word[w_scr_t1+4],ax ;­®¢ë¥ à §¬¥àë áªà®««¨­£ 
330
	cmp eax,dword[buf_0.h] ;㢥«¨ç¨¢ ¥¬ ¢ëá®âã ¡ãä¥à 
330
	cmp eax,dword[buf_0.h] ;㢥«¨ç¨¢ ¥¬ ¢ëá®âã ¡ãä¥à 
331
	jle @f
331
	jle @f
332
		stdcall [buf2d_resize],buf_0,0,eax
332
		stdcall [buf2d_resize],buf_0,0,eax
333
		mov dword[offs_last_timer],0 ;¤«ï ®¡­®¢«¥­¨ï ¡ãä¥à  ¢ â ©¬¥à¥
333
		mov dword[offs_last_timer],0 ;¤«ï ®¡­®¢«¥­¨ï ¡ãä¥à  ¢ â ©¬¥à¥
334
	@@:
334
	@@:
335
 
335
 
336
	mov eax,dword[procinfo.box.width]
336
	mov eax,dword[procinfo.box.width]
337
	cmp eax,400
337
	cmp eax,400
338
	jge @f
338
	jge @f
339
		mov eax,400
339
		mov eax,400
340
	@@:
340
	@@:
341
	sub eax,[buf_0.w]
341
	sub eax,[buf_0.w]
342
	sub eax,41
342
	sub eax,41
343
	mov dword[tree1.box_width],eax
343
	mov dword[tree1.box_width],eax
344
	add ax,word[tree1.box_left]
344
	add ax,word[tree1.box_left]
345
	mov word[w_scr_t1.start_x],ax
345
	mov word[w_scr_t1.start_x],ax
346
	add ax,16+5
346
	add ax,16+5
347
	mov word[buf_0.l],ax
347
	mov word[buf_0.l],ax
348
 
348
 
349
	mov eax,8
349
	mov eax,8
350
	mov ebx,(5 shl 16)+20
350
	mov ebx,(5 shl 16)+20
351
	mov ecx,(5 shl 16)+20
351
	mov ecx,(5 shl 16)+20
352
	mov edx,3
352
	mov edx,3
353
	mov esi,[sc.work_button]
353
	mov esi,[sc.work_button]
354
	int 0x40
354
	int 0x40
355
 
355
 
356
	mov ebx,(30 shl 16)+20
356
	mov ebx,(30 shl 16)+20
357
	mov ecx,(5 shl 16)+20
357
	mov ecx,(5 shl 16)+20
358
	mov edx,4
358
	mov edx,4
359
	int 0x40
359
	int 0x40
-
 
360
 
-
 
361
	cmp byte[can_save],0
360
 
362
	je @f
361
	;mov ebx,(55 shl 16)+20
363
		mov ebx,(55 shl 16)+20
362
	;mov ecx,(5 shl 16)+20
364
		mov ecx,(5 shl 16)+20
363
	;mov edx,5
365
		mov edx,5
-
 
366
		int 0x40
364
	;int 0x40
367
	@@:
365
 
368
 
366
	mov ebx,(85 shl 16)+20
369
	mov ebx,(85 shl 16)+20
367
	mov ecx,(5 shl 16)+20
370
	mov ecx,(5 shl 16)+20
368
	mov edx,6 ;®ª­® á ª®®à¤¨­ â ¬¨
371
	mov edx,6 ;®ª­® á ª®®à¤¨­ â ¬¨
369
	int 0x40
372
	int 0x40
370
 
373
 
371
	mov eax,7
374
	mov eax,7
372
	mov ebx,[image_data_toolbar]
375
	mov ebx,[image_data_toolbar]
373
	mov ecx,(16 shl 16)+16
376
	mov ecx,(16 shl 16)+16
374
	mov edx,(7 shl 16)+7 ;new
377
	mov edx,(7 shl 16)+7 ;new
375
	int 0x40
378
	int 0x40
376
 
379
 
377
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
380
	add ebx,IMAGE_TOOLBAR_ICON_SIZE
378
	mov edx,(32 shl 16)+7 ;open
381
	mov edx,(32 shl 16)+7 ;open
379
	int 0x40
382
	int 0x40
-
 
383
 
-
 
384
	cmp byte[can_save],0
380
 
385
	je @f
381
	;add ebx,IMAGE_TOOLBAR_ICON_SIZE
386
		add ebx,IMAGE_TOOLBAR_ICON_SIZE
382
	;mov edx,(57 shl 16)+7 ;save
387
		mov edx,(57 shl 16)+7 ;save
-
 
388
		int 0x40
383
	;int 0x40
389
	@@:
384
 
390
 
385
	mov dword[w_scr_t1.all_redraw],1
391
	mov dword[w_scr_t1.all_redraw],1
386
	stdcall [tl_draw],dword tree1
392
	stdcall [tl_draw],dword tree1
387
 
393
 
388
	stdcall [buf2d_draw], buf_0
394
	stdcall [buf2d_draw], buf_0
389
 
395
 
390
	mcall 12,2
396
	mcall 12,2
391
popad
397
popad
392
	ret
398
	ret
393
 
399
 
394
align 4
400
align 4
395
key:
401
key:
396
	mcall 2
402
	mcall 2
397
	stdcall [tl_key], dword tree1
403
	stdcall [tl_key], dword tree1
398
	jmp still
404
	jmp still
399
 
405
 
400
 
406
 
401
align 4
407
align 4
402
button:
408
button:
403
	mcall 17
409
	mcall 17
404
	cmp ah,3
410
	cmp ah,3
405
	jne @f
411
	jne @f
406
		call but_new_file
412
		call but_new_file
407
	@@:
413
	@@:
408
	cmp ah,4
414
	cmp ah,4
409
	jne @f
415
	jne @f
410
		call but_open_file
416
		call but_open_file
411
	@@:
417
	@@:
412
	cmp ah,5
418
	cmp ah,5
413
	jne @f
419
	jne @f
414
		call but_save_file
420
		call but_save_file
415
	@@:
421
	@@:
416
	cmp ah,6
422
	cmp ah,6
417
	jne @f
423
	jne @f
418
		call but_wnd_coords
424
		call but_wnd_coords
419
	@@:
425
	@@:
420
 
426
 
421
	cmp ah,1
427
	cmp ah,1
422
	jne still
428
	jne still
423
.exit:
429
.exit:
424
	mov dword[tree1.data_img],0
430
	mov dword[tree1.data_img],0
425
	mov dword[tree1.data_img_sys],0
431
	mov dword[tree1.data_img_sys],0
426
	stdcall dword[tl_data_clear], tree1
432
	stdcall dword[tl_data_clear], tree1
427
	stdcall [buf2d_delete],buf_0
433
	stdcall [buf2d_delete],buf_0
428
	stdcall [buf2d_delete],buf_1 ;㤠«ï¥¬ ¡ãä¥à
434
	stdcall [buf2d_delete],buf_1 ;㤠«ï¥¬ ¡ãä¥à
429
	stdcall mem.Free,[image_data_toolbar]
435
	stdcall mem.Free,[image_data_toolbar]
430
	stdcall mem.Free,[open_file_lif]
436
	stdcall mem.Free,[open_file_lif]
431
	mcall -1
437
	mcall -1
432
 
438
 
433
 
439
 
434
align 4
440
align 4
435
but_new_file:
441
but_new_file:
-
 
442
	mov byte[can_save],0
436
	stdcall [tl_info_clear], tree1 ;®ç¨á⪠ ᯨ᪠ ®¡ê¥ªâ®¢
443
	stdcall [tl_info_clear], tree1 ;®ç¨á⪠ ᯨ᪠ ®¡ê¥ªâ®¢
437
	stdcall [buf2d_clear], buf_0, [buf_0.color] ;ç¨á⨬ ¡ãä¥à
444
	stdcall [buf2d_clear], buf_0, [buf_0.color] ;ç¨á⨬ ¡ãä¥à
438
	;;;call draw_window
445
	;;;call draw_window
439
	stdcall [tl_draw], tree1
446
	stdcall [tl_draw], tree1
440
	stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
447
	stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
441
	ret
448
	ret
442
 
449
 
443
align 4
450
align 4
444
but_open_file:
451
but_open_file:
445
	pushad
452
	pushad
446
	copy_path open_dialog_name,communication_area_default_path,file_name,0
453
	copy_path open_dialog_name,communication_area_default_path,file_name,0
447
	mov [OpenDialog_data.type],0
454
	mov [OpenDialog_data.type],0
448
	stdcall [OpenDialog_Start],OpenDialog_data
455
	stdcall [OpenDialog_Start],OpenDialog_data
449
	cmp [OpenDialog_data.status],2
456
	cmp [OpenDialog_data.status],2
450
	je .end_open_file
457
	je .end_open_file
451
	;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£ 
458
	;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£ 
452
 
459
 
453
	mov eax,70 ;70-ï äã­ªæ¨ï à ¡®â  á ä ©« ¬¨
460
	mov eax,70 ;70-ï äã­ªæ¨ï à ¡®â  á ä ©« ¬¨
454
	mov [run_file_70.Function], 0
461
	mov [run_file_70.Function], 0
455
	mov [run_file_70.Position], 0
462
	mov [run_file_70.Position], 0
456
	mov [run_file_70.Flags], 0
463
	mov [run_file_70.Flags], 0
457
	mov dword[run_file_70.Count], MAX_FILE_SIZE
464
	mov dword[run_file_70.Count], MAX_FILE_SIZE
458
	m2m [run_file_70.Buffer], dword[open_file_lif]
465
	m2m [run_file_70.Buffer], dword[open_file_lif]
459
	mov byte[run_file_70+20], 0
466
	mov byte[run_file_70+20], 0
460
	mov dword[run_file_70.FileName], openfile_path
467
	mov dword[run_file_70.FileName], openfile_path
461
	mov ebx,run_file_70
468
	mov ebx,run_file_70
462
	int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
469
	int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
463
	cmp ebx,0xffffffff
470
	cmp ebx,0xffffffff
464
	je .end_open_file
471
	je .end_open_file
465
 
472
 
466
	;add ebx,[open_file_lif]
473
	;add ebx,[open_file_lif]
467
	;mov byte[ebx],0 ;­  á«ãç © ¥á«¨ à ­¥¥ ¡ë« ®âªàëâ ä ©« ¡®«ì襣® à §¬¥à  ç¨á⨬ ª®­¥æ ¡ãä¥à  á ä ©«®¬
474
	;mov byte[ebx],0 ;­  á«ãç © ¥á«¨ à ­¥¥ ¡ë« ®âªàëâ ä ©« ¡®«ì襣® à §¬¥à  ç¨á⨬ ª®­¥æ ¡ãä¥à  á ä ©«®¬
468
	;mcall 71,1,openfile_path
475
	;mcall 71,1,openfile_path
-
 
476
 
469
 
477
	mov byte[can_save],0
470
	stdcall [tl_info_clear], tree1 ;®ç¨á⪠ ᯨ᪠ ®¡ê¥ªâ®¢
478
	stdcall [tl_info_clear], tree1 ;®ç¨á⪠ ᯨ᪠ ®¡ê¥ªâ®¢
471
 
479
 
472
	mov esi,dword[open_file_lif]
480
	mov esi,dword[open_file_lif]
473
	cmp word[esi],CHUNK_MAIN
481
	cmp word[esi],CHUNK_MAIN
474
	je @f
482
	je @f
475
		call buf_draw_beg
483
		call buf_draw_beg
476
		stdcall [buf2d_draw_text], buf_0, buf_1,txt_no_3ds,5,25,0xff0000 ;à¨á㥬 áâபã á ⥪á⮬
484
		stdcall [buf2d_draw_text], buf_0, buf_1,txt_no_3ds,5,25,0xff0000 ;à¨á㥬 áâபã á ⥪á⮬
477
		jmp .end_open
485
		jmp .end_open
478
	@@:
486
	@@:
479
	cmp dword[esi+2],MAX_FILE_SIZE
487
	cmp dword[esi+2],MAX_FILE_SIZE
480
	jle @f
488
	jle @f
481
		call buf_draw_beg
489
		call buf_draw_beg
482
		stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_big_file,5,25,0xff0000 ;à¨á㥬 áâபã á ⥪á⮬
490
		stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_big_file,5,25,0xff0000 ;à¨á㥬 áâபã á ⥪á⮬
483
		jmp .end_open
491
		jmp .end_open
484
	@@:
492
	@@:
485
	;--- ®¡à ¡®âª  ®âªàë⮣® *.3ds ä ©« 
493
	;--- ®¡à ¡®âª  ®âªàë⮣® *.3ds ä ©« 
486
	mov eax,file_3ds
494
	mov eax,file_3ds
487
	mov dword[level_stack],0 ;®¡­ã«ï¥¬ ã஢¥­ì á⥪ 
495
	mov dword[level_stack],0 ;®¡­ã«ï¥¬ ã஢¥­ì á⥪ 
488
	mov dword[offs_last_timer],0
496
	mov dword[offs_last_timer],0
489
	;--- ¤®¡ ¢«¥­¨¥ £« ¢­®£® ¡«®ª  ¢ ᯨ᮪
497
	;--- ¤®¡ ¢«¥­¨¥ £« ¢­®£® ¡«®ª  ¢ ᯨ᮪
490
	stdcall add_3ds_object, ID_ICON_CHUNK_MAIN,0,dword[esi+2],0
498
	stdcall add_3ds_object, ID_ICON_CHUNK_MAIN,0,dword[esi+2],0
491
	call block_children ;¢å®¤ ¢ ¤®ç¥à­¨© ¡«®ª
499
	call block_children ;¢å®¤ ¢ ¤®ç¥à­¨© ¡«®ª
492
 
500
 
493
	mov edi,dword[file_3ds.offs]
501
	mov edi,dword[file_3ds.offs]
494
	add edi,dword[file_3ds.size]
502
	add edi,dword[file_3ds.size]
495
	.cycle_main:
503
	.cycle_main:
496
		cmp dword[level_stack],0
504
		cmp dword[level_stack],0
497
		jle .end_cycle
505
		jle .end_cycle
498
		
506
		
499
		cmp esi,edi ;¥á«¨ ª®­¥æ ä ©« 
507
		cmp esi,edi ;¥á«¨ ª®­¥æ ä ©« 
500
		jge .end_cycle
508
		jge .end_cycle
501
 
509
 
502
		mov edx,dword[esi+2] ;à §¬¥à ¡«®ª 
510
		mov edx,dword[esi+2] ;à §¬¥à ¡«®ª 
503
		call block_analiz
511
		call block_analiz
504
		cmp dword[bl_found],0
512
		cmp dword[bl_found],0
505
		jne @f
513
		jne @f
506
			;®¡ê¥ªâ ­¥ ¨§¢¥áâ­®£® ¢¨¤ 
514
			;®¡ê¥ªâ ­¥ ¨§¢¥áâ­®£® ¢¨¤ 
507
			stdcall add_3ds_object, ID_ICON_CHUNK_NOT_FOUND,dword[level_stack],edx,0
515
			stdcall add_3ds_object, ID_ICON_CHUNK_NOT_FOUND,dword[level_stack],edx,0
508
			call block_next
516
			call block_next
509
			jmp .cycle_main
517
			jmp .cycle_main
510
		@@:
518
		@@:
511
			;®¡ê¥ªâ ¨§¢¥áâ­®£® ¢¨¤ 
519
			;®¡ê¥ªâ ¨§¢¥áâ­®£® ¢¨¤ 
512
			mov ecx,dword[bl_found]
520
			mov ecx,dword[bl_found]
513
			mov bx,word[ecx+2] ;­®¬¥à ¨ª®­ª¨ ¤«ï ®¡ê¥ªâ 
521
			mov bx,word[ecx+2] ;­®¬¥à ¨ª®­ª¨ ¤«ï ®¡ê¥ªâ 
514
			stdcall add_3ds_object, ebx,dword[level_stack],edx,dword[ecx+5]
522
			stdcall add_3ds_object, ebx,dword[level_stack],edx,dword[ecx+5]
515
			cmp byte[ecx+4],1
523
			cmp byte[ecx+4],1
516
			je .bl_data
524
			je .bl_data
517
				;¡«®ª ᮤ¥à¦¨â ¤®ç¥à­¨¥ ¡«®ª¨
525
				;¡«®ª ᮤ¥à¦¨â ¤®ç¥à­¨¥ ¡«®ª¨
518
				call block_children ;¢å®¤ ¢ ¤®ç¥à­¨© ¡«®ª
526
				call block_children ;¢å®¤ ¢ ¤®ç¥à­¨© ¡«®ª
519
				jmp .cycle_main
527
				jmp .cycle_main
520
			.bl_data:
528
			.bl_data:
521
				;¡«®ª ᮤ¥à¦¨â ¤ ­­ë¥
529
				;¡«®ª ᮤ¥à¦¨â ¤ ­­ë¥
522
				call block_analiz_data
530
				call block_analiz_data
523
				jmp .cycle_main
531
				jmp .cycle_main
524
	.end_cycle:
532
	.end_cycle:
525
		stdcall [tl_cur_beg], tree1
533
		stdcall [tl_cur_beg], tree1
526
		stdcall [tl_draw], tree1
534
		stdcall [tl_draw], tree1
527
	.end_open:
535
	.end_open:
528
 
536
 
529
	stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
537
	stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
530
	.end_open_file:
538
	.end_open_file:
531
	popad
539
	popad
532
	ret
540
	ret
533
 
541
 
534
; ­ «¨§ ¤ ­­ëå ¡«®ª 
542
; ­ «¨§ ¤ ­­ëå ¡«®ª 
535
;input:
543
;input:
536
; esi - memory pointer
544
; esi - memory pointer
537
;output:
545
;output:
538
; eax - new stack pointer
546
; eax - new stack pointer
539
; esi - new memory pointer
547
; esi - new memory pointer
540
align 4
548
align 4
541
block_analiz_data:
549
block_analiz_data:
542
	push ebx ecx edx edi
550
	push ebx ecx edx edi
543
		mov dx,word[esi]
551
		mov dx,word[esi]
544
		mov ecx,dword[esi+2]
552
		mov ecx,dword[esi+2]
545
		sub ecx,6 ;à §¬¥à ¤ ­­ëå ¢ ¡«®ª¥
553
		sub ecx,6 ;à §¬¥à ¤ ­­ëå ¢ ¡«®ª¥
546
		add esi,6
554
		add esi,6
547
		mov ebx,dword[level_stack]
555
		mov ebx,dword[level_stack]
548
		inc ebx
556
		inc ebx
549
		; ***  ­ «¨§ ¡«®ª®¢ á à §­ë¬¨ ¤ ­­ë¬¨ ¨ ¢ë¤¥«¥­¨¥¬ ¯®¤¡«®ª®¢
557
		; ***  ­ «¨§ ¡«®ª®¢ á à §­ë¬¨ ¤ ­­ë¬¨ ¨ ¢ë¤¥«¥­¨¥¬ ¯®¤¡«®ª®¢
550
		cmp dx,CHUNK_OBJBLOCK ;®¡ê¥ªâ
558
		cmp dx,CHUNK_OBJBLOCK ;®¡ê¥ªâ
551
		jne @f
559
		jne @f
552
			push ax
560
			push ax
553
				cld
561
				cld
554
				xor al,al
562
				xor al,al
555
				mov edi,esi
563
				mov edi,esi
556
				repne scasb
564
				repne scasb
557
			pop ax
565
			pop ax
558
			sub edi,esi ;edi - strlen
566
			sub edi,esi ;edi - strlen
559
			stdcall add_3ds_object, ID_ICON_DATA,ebx,edi,0 ;­ §¢ ­¨¥ ®¡ê¥ªâ 
567
			stdcall add_3ds_object, ID_ICON_DATA,ebx,edi,0 ;­ §¢ ­¨¥ ®¡ê¥ªâ 
560
			add esi,edi
568
			add esi,edi
561
			;sub ecx,edi ;㦥 ᤥ« ­® ¢ repne
569
			;sub ecx,edi ;㦥 ᤥ« ­® ¢ repne
562
			jmp .next_bl
570
			jmp .next_bl
563
		@@:
571
		@@:
564
		cmp dx,CHUNK_VERTLIST ;ᯨ᮪ ¢¥à設
572
		cmp dx,CHUNK_VERTLIST ;ᯨ᮪ ¢¥à設
565
		je .vertexes
573
		je .vertexes
566
		cmp dx,0x4111 ;ä« £¨ ¢¥à設
574
		cmp dx,0x4111 ;ä« £¨ ¢¥à設
567
		je .vertexes
575
		je .vertexes
568
		cmp dx,CHUNK_MAPLIST ;⥪áâãà­ë¥ ª®®à¤¨­ âë
576
		cmp dx,CHUNK_MAPLIST ;⥪áâãà­ë¥ ª®®à¤¨­ âë
569
		je .vertexes
577
		je .vertexes
570
		jmp @f
578
		jmp @f
571
		.vertexes: ;®¡à ¡®âª  ¡«®ª®¢, ᮤ¥à¦ é¨å ¤ ­­ë¥ ¢¥à設
579
		.vertexes: ;®¡à ¡®âª  ¡«®ª®¢, ᮤ¥à¦ é¨å ¤ ­­ë¥ ¢¥à設
572
			stdcall add_3ds_object, ID_ICON_DATA,ebx,2,txt_count ;ç¨á«® ¢¥à設
580
			stdcall add_3ds_object, ID_ICON_DATA,ebx,2,txt_count ;ç¨á«® ¢¥à設
573
			add esi,2
581
			add esi,2
574
			sub ecx,2
582
			sub ecx,2
575
			stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx,0 ;¤ ­­ë¥ ¢¥à設
583
			stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx,0 ;¤ ­­ë¥ ¢¥à設
576
			sub esi,8 ;¢®ááâ ­®¢«¥­¨¥ esi
584
			sub esi,8 ;¢®ááâ ­®¢«¥­¨¥ esi
577
			call block_next
585
			call block_next
578
			jmp .end_f		
586
			jmp .end_f		
579
		@@:
587
		@@:
580
		cmp dx,CHUNK_FACELIST ;ᯨ᮪ £à ­¥©
588
		cmp dx,CHUNK_FACELIST ;ᯨ᮪ £à ­¥©
581
		jne @f
589
		jne @f
582
			stdcall add_3ds_object, ID_ICON_DATA,ebx,2,txt_count ;ç¨á«® £à ­¥©
590
			stdcall add_3ds_object, ID_ICON_DATA,ebx,2,txt_count ;ç¨á«® £à ­¥©
583
			push eax
591
			push eax
584
			xor eax,eax
592
			xor eax,eax
585
			mov ax,[esi]
593
			mov ax,[esi]
586
			shl eax,3
594
			shl eax,3
587
			add esi,2
595
			add esi,2
588
			sub ecx,2
596
			sub ecx,2
589
			stdcall add_3ds_object, ID_ICON_DATA,ebx,eax,0 ;¤ ­­ë¥ ¢¥à設
597
			stdcall add_3ds_object, ID_ICON_DATA,ebx,eax,0 ;¤ ­­ë¥ ¢¥à設
590
 
598
 
591
			sub ecx,eax
599
			sub ecx,eax
592
			cmp ecx,1
600
			cmp ecx,1
593
			jl .data_3 ;¯à®¢¥à塞 ¥áâì «¨ ¡«®ª ®¯¨á뢠î騩 ¬ â¥à¨ «, ¯à¨¬¥­ï¥¬ë© ª ®¡ê¥ªâã
601
			jl .data_3 ;¯à®¢¥à塞 ¥áâì «¨ ¡«®ª ®¯¨á뢠î騩 ¬ â¥à¨ «, ¯à¨¬¥­ï¥¬ë© ª ®¡ê¥ªâã
594
				add esi,eax
602
				add esi,eax
595
				pop eax
603
				pop eax
596
				jmp .next_bl
604
				jmp .next_bl
597
				;stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx,0 ;¤ ­­ë¥ ¬ â¥à¨ « 
605
				;stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx,0 ;¤ ­­ë¥ ¬ â¥à¨ « 
598
				;sub esi,eax ;¢®ááâ ­®¢«¥­¨¥ esi
606
				;sub esi,eax ;¢®ááâ ­®¢«¥­¨¥ esi
599
			.data_3:
607
			.data_3:
600
 
608
 
601
			sub esi,8 ;¢®ááâ ­®¢«¥­¨¥ esi
609
			sub esi,8 ;¢®ááâ ­®¢«¥­¨¥ esi
602
			pop eax
610
			pop eax
603
			call block_next
611
			call block_next
604
			jmp .end_f		
612
			jmp .end_f		
605
		@@:
613
		@@:
606
		cmp dx,CHUNK_FACEMAT ;¬ â¥à¨ «ë £à ­¥©
614
		cmp dx,CHUNK_FACEMAT ;¬ â¥à¨ «ë £à ­¥©
607
		jne @f
615
		jne @f
608
			push ax
616
			push ax
609
				cld
617
				cld
610
				xor al,al
618
				xor al,al
611
				mov edi,esi
619
				mov edi,esi
612
				repne scasb
620
				repne scasb
613
			pop ax
621
			pop ax
614
			sub edi,esi ;edi - strlen
622
			sub edi,esi ;edi - strlen
615
			stdcall add_3ds_object, ID_ICON_DATA,ebx,edi,0 ;­ §¢ ­¨¥ ®¡ê¥ªâ 
623
			stdcall add_3ds_object, ID_ICON_DATA,ebx,edi,0 ;­ §¢ ­¨¥ ®¡ê¥ªâ 
616
			add esi,edi
624
			add esi,edi
617
			;sub ecx,edi ;㦥 ᤥ« ­® ¢ repne
625
			;sub ecx,edi ;㦥 ᤥ« ­® ¢ repne
618
			stdcall add_3ds_object, ID_ICON_DATA,ebx,2,txt_count ;ç¨á«® £à ­¥©
626
			stdcall add_3ds_object, ID_ICON_DATA,ebx,2,txt_count ;ç¨á«® £à ­¥©
619
			add esi,2
627
			add esi,2
620
			sub ecx,2
628
			sub ecx,2
621
			stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx,0 ;­®¬¥à  £à ­¥©, ª ª®â®àë¬ ¯à¨¬¥­¥­ ¬ â¥à¨ «
629
			stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx,0 ;­®¬¥à  £à ­¥©, ª ª®â®àë¬ ¯à¨¬¥­¥­ ¬ â¥à¨ «
622
			sub esi,edi ;¢®ááâ ­®¢«¥­¨¥ esi (1)
630
			sub esi,edi ;¢®ááâ ­®¢«¥­¨¥ esi (1)
623
			sub esi,8   ;¢®ááâ ­®¢«¥­¨¥ esi (2)
631
			sub esi,8   ;¢®ááâ ­®¢«¥­¨¥ esi (2)
624
			call block_next
632
			call block_next
625
			jmp .end_f
633
			jmp .end_f
626
		@@:
634
		@@:
627
		; ***  ­ «¨§ ¡«®ª  á ¤ ­­ë¬¨ ¯® 㬮«ç ­¨î (¡¥§ ¢ë¤¥«¥­¨ï ¯®¤¡«®ª®¢)
635
		; ***  ­ «¨§ ¡«®ª  á ¤ ­­ë¬¨ ¯® 㬮«ç ­¨î (¡¥§ ¢ë¤¥«¥­¨ï ¯®¤¡«®ª®¢)
628
			stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx,0
636
			stdcall add_3ds_object, ID_ICON_DATA,ebx,ecx,0
629
			sub esi,6 ;¢®ááâ ­®¢«¥­¨¥ esi
637
			sub esi,6 ;¢®ááâ ­®¢«¥­¨¥ esi
630
			call block_next
638
			call block_next
631
			jmp .end_f
639
			jmp .end_f
632
		.next_bl:
640
		.next_bl:
633
		; *** ­ áâனª¨ ¤«ï  ­ «¨§  ®áâ ¢è¨åáï ¯®¤¡«®ª®¢
641
		; *** ­ áâனª¨ ¤«ï  ­ «¨§  ®áâ ¢è¨åáï ¯®¤¡«®ª®¢
634
			mov dword[eax],esi ;㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
642
			mov dword[eax],esi ;㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
635
			mov ebx,dword[esi+2]
643
			mov ebx,dword[esi+2]
636
			mov dword[eax+4],ebx ;à §¬¥à ¡«®ª 
644
			mov dword[eax+4],ebx ;à §¬¥à ¡«®ª 
637
			inc dword[level_stack]
645
			inc dword[level_stack]
638
			add eax,8
646
			add eax,8
639
		.end_f:
647
		.end_f:
640
	pop edi edx ecx ebx
648
	pop edi edx ecx ebx
641
	ret
649
	ret
642
 
650
 
643
;¢å®¤ ¢ 1-© ¤®ç¥à­¨© ¡«®ª
651
;¢å®¤ ¢ 1-© ¤®ç¥à­¨© ¡«®ª
644
;output:
652
;output:
645
; edx - destroy
653
; edx - destroy
646
align 4
654
align 4
647
block_children:
655
block_children:
648
	push ecx
656
	push ecx
649
		;¯à®¢¥àª  ¯à ¢¨«ì­®á⨠ࠧ¬¥à®¢ ¤®ç¥à­¥£® ¡«®ª 
657
		;¯à®¢¥àª  ¯à ¢¨«ì­®á⨠ࠧ¬¥à®¢ ¤®ç¥à­¥£® ¡«®ª 
650
		mov ebx,esi ;ᬥ饭¨¥ ­ ç «  த¨â¥«ì᪮£® ¡«®ª 
658
		mov ebx,esi ;ᬥ饭¨¥ ­ ç «  த¨â¥«ì᪮£® ¡«®ª 
651
		add ebx,6 ;¯¥à¥å®¤ ­  ­ ç «® ¤®ç¥à­¥£® ¡«®ª 
659
		add ebx,6 ;¯¥à¥å®¤ ­  ­ ç «® ¤®ç¥à­¥£® ¡«®ª 
652
		add ebx,dword[ebx+2] ;¤®¡ ¢«ï¥¬ à §¬¥à ¤®ç¥à­¥£® ¡«®ª 
660
		add ebx,dword[ebx+2] ;¤®¡ ¢«ï¥¬ à §¬¥à ¤®ç¥à­¥£® ¡«®ª 
653
		mov ecx,esi ;ᬥ饭¨¥ ­ ç «  த¨â¥«ì᪮£® ¡«®ª 
661
		mov ecx,esi ;ᬥ饭¨¥ ­ ç «  த¨â¥«ì᪮£® ¡«®ª 
654
		add ecx,dword[esi+2] ;¤®¡ ¢«ï¥¬ à §¬¥à த¨â¥«ì᪮£® ¡«®ª 
662
		add ecx,dword[esi+2] ;¤®¡ ¢«ï¥¬ à §¬¥à த¨â¥«ì᪮£® ¡«®ª 
655
		cmp ebx,ecx ;ãç¨â뢠âì § £®«®¢ª¨ ­¥ ­ã¦­®, â. ª. áà ¢­¨¢ îâáï ⮫쪮 ¤ ­­ë¥ ¡«®ª®¢
663
		cmp ebx,ecx ;ãç¨â뢠âì § £®«®¢ª¨ ­¥ ­ã¦­®, â. ª. áà ¢­¨¢ îâáï ⮫쪮 ¤ ­­ë¥ ¡«®ª®¢
656
		jle @f
664
		jle @f
657
			;¤¨ £­®áâ¨à®¢ «¨ ®è¨¡ªã ä ©« , ¤®ç¥à­¨© ¡«®ª ¢ë室¨â §  ¯à¥¤¥«ë த¨â¥«ì᪮£®
665
			;¤¨ £­®áâ¨à®¢ «¨ ®è¨¡ªã ä ©« , ¤®ç¥à­¨© ¡«®ª ¢ë室¨â §  ¯à¥¤¥«ë த¨â¥«ì᪮£®
658
			mov dword[level_stack],FILE_ERROR_CHUNK_SIZE
666
			mov dword[level_stack],FILE_ERROR_CHUNK_SIZE
659
			jmp .end_f
667
			jmp .end_f
660
		@@:
668
		@@:
661
		mov dword[eax],esi ;㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
669
		mov dword[eax],esi ;㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
662
		mov ebx,dword[esi+2]
670
		mov ebx,dword[esi+2]
663
		mov dword[eax+4],ebx ;à §¬¥à ¡«®ª 
671
		mov dword[eax+4],ebx ;à §¬¥à ¡«®ª 
664
		add esi,6 ;¯¥à¥å®¤¨¬ ª ¤ ­­ë¬ ¡«®ª 
672
		add esi,6 ;¯¥à¥å®¤¨¬ ª ¤ ­­ë¬ ¡«®ª 
665
		inc dword[level_stack]
673
		inc dword[level_stack]
666
		add eax,8
674
		add eax,8
667
	.end_f:
675
	.end_f:
668
	pop ecx
676
	pop ecx
669
	ret
677
	ret
670
 
678
 
671
;¯¥à¥å®¤ ª á«¥¤ã饬㠡«®ªã ⥪ã饣® ã஢­ï
679
;¯¥à¥å®¤ ª á«¥¤ã饬㠡«®ªã ⥪ã饣® ã஢­ï
672
align 4
680
align 4
673
block_next:
681
block_next:
674
push ebx
682
push ebx
675
	add esi,dword[esi+2] ;¯à®¯ã᪠¥¬ ¤ ­­ë¥ ¡«®ª 
683
	add esi,dword[esi+2] ;¯à®¯ã᪠¥¬ ¤ ­­ë¥ ¡«®ª 
676
 
684
 
677
	;¯à®¢¥àª  à §¬¥à®¢ த¨â¥«ì᪮£® ¡«®ª , ¤«ï ¢®§¬®¦­®£® ¢ë室  ­  ¢¥àå­¨© ã஢¥­ì ¥á«¨ ª®­¥æ ¡«®ª 
685
	;¯à®¢¥àª  à §¬¥à®¢ த¨â¥«ì᪮£® ¡«®ª , ¤«ï ¢®§¬®¦­®£® ¢ë室  ­  ¢¥àå­¨© ã஢¥­ì ¥á«¨ ª®­¥æ ¡«®ª 
678
	@@:
686
	@@:
679
	mov ebx,dword[eax-8]
687
	mov ebx,dword[eax-8]
680
	add ebx,dword[eax-4]
688
	add ebx,dword[eax-4]
681
	cmp esi,ebx
689
	cmp esi,ebx
682
	jl @f
690
	jl @f
683
		dec dword[level_stack]
691
		dec dword[level_stack]
684
		sub eax,8
692
		sub eax,8
685
		cmp dword[level_stack],0
693
		cmp dword[level_stack],0
686
		jg @b
694
		jg @b
687
	@@:
695
	@@:
688
pop ebx
696
pop ebx
689
	ret
697
	ret
690
 
698
 
691
;äã­ªæ¨ï ¯®¨áª  áâàãªâãàë ®¯¨á뢠î饩 ¡«®ª
699
;äã­ªæ¨ï ¯®¨áª  áâàãªâãàë ®¯¨á뢠î饩 ¡«®ª
692
;input:
700
;input:
693
;esi - memory pointer
701
;esi - memory pointer
694
;output:
702
;output:
695
;dword[bl_found] - pointer to chunk struct (= 0 if not found)
703
;dword[bl_found] - pointer to chunk struct (= 0 if not found)
696
align 4
704
align 4
697
bl_found dd 0
705
bl_found dd 0
698
block_analiz:
706
block_analiz:
699
pushad
707
pushad
700
	mov dword[bl_found],0
708
	mov dword[bl_found],0
701
	mov ecx,type_bloks
709
	mov ecx,type_bloks
702
	@@:
710
	@@:
703
		mov bx,word[ecx]
711
		mov bx,word[ecx]
704
		cmp word[esi],bx
712
		cmp word[esi],bx
705
		je .found
713
		je .found
706
		add ecx,sizeof.block_3ds
714
		add ecx,sizeof.block_3ds
707
		cmp ecx,type_bloks.end
715
		cmp ecx,type_bloks.end
708
		jl @b
716
		jl @b
709
	jmp .no_found
717
	jmp .no_found
710
	.found:
718
	.found:
711
		mov dword[bl_found],ecx
719
		mov dword[bl_found],ecx
712
	.no_found:
720
	.no_found:
713
popad
721
popad
714
	ret
722
	ret
715
 
723
 
716
;input:
724
;input:
717
; esi - 㪠§ â¥«ì ­   ­ «¨§¨àã¥¬ë¥ ¤ ­­ë¥
725
; esi - 㪠§ â¥«ì ­   ­ «¨§¨àã¥¬ë¥ ¤ ­­ë¥
718
align 4
726
align 4
719
proc add_3ds_object, icon:dword,level:dword,size_bl:dword,info_bl:dword
727
proc add_3ds_object, icon:dword,level:dword,size_bl:dword,info_bl:dword
720
	pushad
728
	pushad
721
		mov bx,word[icon]
729
		mov bx,word[icon]
722
		shl ebx,16
730
		shl ebx,16
723
		mov bx,word[level]
731
		mov bx,word[level]
724
 
732
 
725
		mov eax,esi
733
		mov eax,esi
726
		sub eax,dword[open_file_lif]
734
		sub eax,dword[open_file_lif]
727
		mov dword[buffer],eax ;ᬥ饭¨¥ ¡«®ª 
735
		mov dword[buffer],eax ;ᬥ饭¨¥ ¡«®ª 
728
		mov ecx,dword[size_bl]
736
		mov ecx,dword[size_bl]
729
		mov dword[buffer+4],ecx ;à §¬¥à ¡«®ª  (¨á¯®«ì§ã¥âáï ¢ ä㭪樨 buf_draw_hex_table ¤«ï à¨á®¢ ­¨ï «¨­¨¨)
737
		mov dword[buffer+4],ecx ;à §¬¥à ¡«®ª  (¨á¯®«ì§ã¥âáï ¢ ä㭪樨 buf_draw_hex_table ¤«ï à¨á®¢ ­¨ï «¨­¨¨)
730
		mov ecx,dword[info_bl]
738
		mov ecx,dword[info_bl]
731
		mov dword[buffer+8],ecx
739
		mov dword[buffer+8],ecx
732
		stdcall hex_in_str, buffer+list_offs_text,dword[esi+1],2
740
		stdcall hex_in_str, buffer+list_offs_text,dword[esi+1],2
733
		stdcall hex_in_str, buffer+list_offs_text+2,dword[esi],2 ;ª®¤ 3ds ¡«®ª 
741
		stdcall hex_in_str, buffer+list_offs_text+2,dword[esi],2 ;ª®¤ 3ds ¡«®ª 
734
		cmp ecx,0
742
		cmp ecx,0
735
		jne @f
743
		jne @f
736
			mov byte[buffer+list_offs_text+4],0 ;0 - ᨬ¢®« ª®­¥æ  áâப¨
744
			mov byte[buffer+list_offs_text+4],0 ;0 - ᨬ¢®« ª®­¥æ  áâப¨
737
			jmp .no_capt
745
			jmp .no_capt
738
		@@:
746
		@@:
739
			mov byte[buffer+list_offs_text+4],' '
747
			mov byte[buffer+list_offs_text+4],' '
740
			mov esi,ecx
748
			mov esi,ecx
741
			mov edi,buffer+list_offs_text+5
749
			mov edi,buffer+list_offs_text+5
742
			mov ecx,size_one_list-(list_offs_text+5)
750
			mov ecx,size_one_list-(list_offs_text+5)
743
			cld
751
			cld
744
			rep movsb
752
			rep movsb
745
			mov byte[buffer+size_one_list-1],0 ;0 - ᨬ¢®« ª®­¥æ  áâப¨
753
			mov byte[buffer+size_one_list-1],0 ;0 - ᨬ¢®« ª®­¥æ  áâப¨
746
		.no_capt:
754
		.no_capt:
747
		stdcall [tl_node_add], buffer, ebx, tree1
755
		stdcall [tl_node_add], buffer, ebx, tree1
748
		stdcall [tl_cur_next], tree1
756
		stdcall [tl_cur_next], tree1
749
		if debug
757
		if debug
750
			stdcall print_err,sz_add_3ds_object,buffer+list_offs_text
758
			stdcall print_err,sz_add_3ds_object,buffer+list_offs_text
751
		end if
759
		end if
752
	popad
760
	popad
753
	ret
761
	ret
754
endp
762
endp
755
 
763
 
756
if debug
764
if debug
757
sz_add_3ds_object db 13,10,'3ds_object',0
765
sz_add_3ds_object db 13,10,'3ds_object',0
758
 
766
 
759
align 4
767
align 4
760
proc print_err, fun:dword, mes:dword ;¢ë¢®¤¨¬ á®®¡é¥­¨¥ ®¡ 訡ª¥ ­  ¤®áªã ®â« ¤ª¨
768
proc print_err, fun:dword, mes:dword ;¢ë¢®¤¨¬ á®®¡é¥­¨¥ ®¡ 訡ª¥ ­  ¤®áªã ®â« ¤ª¨
761
	pushad
769
	pushad
762
	mov eax,63
770
	mov eax,63
763
	mov ebx,1
771
	mov ebx,1
764
 
772
 
765
	mov esi,[fun]
773
	mov esi,[fun]
766
	@@:
774
	@@:
767
		mov cl,byte[esi]
775
		mov cl,byte[esi]
768
		int 0x40
776
		int 0x40
769
		inc esi
777
		inc esi
770
		cmp byte[esi],0
778
		cmp byte[esi],0
771
		jne @b
779
		jne @b
772
	mov cl,':'
780
	mov cl,':'
773
	int 0x40
781
	int 0x40
774
	mov cl,' '
782
	mov cl,' '
775
	int 0x40
783
	int 0x40
776
	mov esi,[mes]
784
	mov esi,[mes]
777
	@@:
785
	@@:
778
		mov cl,byte[esi]
786
		mov cl,byte[esi]
779
		int 0x40
787
		int 0x40
780
		inc esi
788
		inc esi
781
		cmp byte[esi],0
789
		cmp byte[esi],0
782
		jne @b
790
		jne @b
783
	popad
791
	popad
784
	ret
792
	ret
785
endp
793
endp
786
end if
794
end if
787
 
795
 
788
align 4
796
align 4
789
proc hex_in_str, buf:dword,val:dword,zif:dword
797
proc hex_in_str, buf:dword,val:dword,zif:dword
790
	pushad
798
	pushad
791
		mov edi,dword[buf]
799
		mov edi,dword[buf]
792
		mov ecx,dword[zif]
800
		mov ecx,dword[zif]
793
		add edi,ecx
801
		add edi,ecx
794
		dec edi
802
		dec edi
795
		mov ebx,dword[val]
803
		mov ebx,dword[val]
796
 
804
 
797
		.cycle:
805
		.cycle:
798
			mov al,bl
806
			mov al,bl
799
			and al,0xf
807
			and al,0xf
800
			cmp al,10
808
			cmp al,10
801
			jl @f
809
			jl @f
802
				add al,'a'-'0'-10
810
				add al,'a'-'0'-10
803
			@@:
811
			@@:
804
			add al,'0'
812
			add al,'0'
805
			mov byte[edi],al
813
			mov byte[edi],al
806
			dec edi
814
			dec edi
807
			shr ebx,4
815
			shr ebx,4
808
		loop .cycle
816
		loop .cycle
809
 
817
 
810
	popad
818
	popad
811
	ret
819
	ret
812
endp
820
endp
813
 
821
 
814
align 4
822
align 4
815
but_save_file:
823
but_save_file:
816
if debug
824
	pushad
-
 
825
	copy_path open_dialog_name,communication_area_default_path,file_name,0
-
 
826
	mov [OpenDialog_data.type],1
-
 
827
	stdcall [OpenDialog_Start],OpenDialog_data
-
 
828
	cmp [OpenDialog_data.status],2
-
 
829
	je .end_save_file
-
 
830
	;ª®¤ ¯à¨ 㤠筮¬ ®âªàë⨨ ¤¨ «®£ 
-
 
831
 
-
 
832
	mov eax,70 ;70-ï äã­ªæ¨ï à ¡®â  á ä ©« ¬¨
-
 
833
	mov [run_file_70.Function], 2
-
 
834
	mov [run_file_70.Position], 0
-
 
835
	mov [run_file_70.Flags], 0
-
 
836
	mov ebx, dword[open_file_lif]
-
 
837
	mov [run_file_70.Buffer], ebx
-
 
838
	mov ebx,dword[ebx+2]
817
	stdcall buf_draw_hex_table,dword[open_file_lif],3 ;¤®¡ ¢«¥­¨¥ 16-à¨ç­ëå ¤ ­­ëå
839
	mov dword[run_file_70.Count], ebx ;à §¬¥à ä ©« 
-
 
840
	mov byte[run_file_70+20], 0
-
 
841
	mov dword[run_file_70.FileName], openfile_path
-
 
842
	mov ebx,run_file_70
-
 
843
	int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
-
 
844
	cmp ebx,0xffffffff
-
 
845
	je .end_save_file
-
 
846
 
-
 
847
	.end_save_file:
818
end if
848
	popad
819
	ret
849
	ret
820
 
850
 
821
align 4
851
align 4
822
but_wnd_coords:
852
but_wnd_coords:
823
	cmp byte[prop_wnd_run],0
853
	cmp byte[prop_wnd_run],0
824
	jne @f
854
	jne @f
825
		pushad
855
		pushad
826
		mcall 51,1,prop_start,thread_coords
856
		mcall 51,1,prop_start,thread_coords
827
		popad
857
		popad
828
	@@:
858
	@@:
829
	ret
859
	ret
830
 
860
 
831
 
861
 
832
;input:
862
;input:
833
; buf - 㪠§ â¥«ì ­  áâபã, ç¨á«® ¤®«¦­® ¡ëâì ¢ 10 ¨«¨ 16 à¨ç­®¬ ¢¨¤¥
863
; buf - 㪠§ â¥«ì ­  áâபã, ç¨á«® ¤®«¦­® ¡ëâì ¢ 10 ¨«¨ 16 à¨ç­®¬ ¢¨¤¥
834
;output:
864
;output:
835
; eax - ç¨á«®
865
; eax - ç¨á«®
836
align 4
866
align 4
837
proc conv_str_to_int, buf:dword
867
proc conv_str_to_int, buf:dword
838
	xor eax,eax
868
	xor eax,eax
839
	push ebx ecx esi
869
	push ebx ecx esi
840
	xor ebx,ebx
870
	xor ebx,ebx
841
	mov esi,[buf]
871
	mov esi,[buf]
842
	;®¯à¥¤¥«¥­¨¥ ®âà¨æ â¥«ì­ëå ç¨á¥«
872
	;®¯à¥¤¥«¥­¨¥ ®âà¨æ â¥«ì­ëå ç¨á¥«
843
	xor ecx,ecx
873
	xor ecx,ecx
844
	inc ecx
874
	inc ecx
845
	cmp byte[esi],'-'
875
	cmp byte[esi],'-'
846
	jne @f
876
	jne @f
847
		dec ecx
877
		dec ecx
848
		inc esi
878
		inc esi
849
	@@:
879
	@@:
850
 
880
 
851
	cmp word[esi],'0x'
881
	cmp word[esi],'0x'
852
	je .load_digit_16
882
	je .load_digit_16
853
 
883
 
854
	.load_digit_10: ;áç¨â뢠­¨¥ 10-â¨ç­ëå æ¨äà
884
	.load_digit_10: ;áç¨â뢠­¨¥ 10-â¨ç­ëå æ¨äà
855
		mov bl,byte[esi]
885
		mov bl,byte[esi]
856
		cmp bl,'0'
886
		cmp bl,'0'
857
		jl @f
887
		jl @f
858
		cmp bl,'9'
888
		cmp bl,'9'
859
		jg @f
889
		jg @f
860
			sub bl,'0'
890
			sub bl,'0'
861
			imul eax,10
891
			imul eax,10
862
			add eax,ebx
892
			add eax,ebx
863
			inc esi
893
			inc esi
864
			jmp .load_digit_10
894
			jmp .load_digit_10
865
	jmp @f
895
	jmp @f
866
 
896
 
867
	.load_digit_16: ;áç¨â뢠­¨¥ 16-à¨ç­ëå æ¨äà
897
	.load_digit_16: ;áç¨â뢠­¨¥ 16-à¨ç­ëå æ¨äà
868
		add esi,2
898
		add esi,2
869
	.cycle_16:
899
	.cycle_16:
870
		mov bl,byte[esi]
900
		mov bl,byte[esi]
871
		cmp bl,'0'
901
		cmp bl,'0'
872
		jl @f
902
		jl @f
873
		cmp bl,'f'
903
		cmp bl,'f'
874
		jg @f
904
		jg @f
875
		cmp bl,'9'
905
		cmp bl,'9'
876
		jle .us1
906
		jle .us1
877
			cmp bl,'A'
907
			cmp bl,'A'
878
			jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'9' ¨ <'A'
908
			jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'9' ¨ <'A'
879
		.us1: ;á®áâ ¢­®¥ ãá«®¢¨¥
909
		.us1: ;á®áâ ¢­®¥ ãá«®¢¨¥
880
		cmp bl,'F'
910
		cmp bl,'F'
881
		jle .us2
911
		jle .us2
882
			cmp bl,'a'
912
			cmp bl,'a'
883
			jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'F' ¨ <'a'
913
			jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'F' ¨ <'a'
884
			sub bl,32 ;¯¥à¥¢®¤¨¬ ᨬ¢®«ë ¢ ¢¥àå­¨© ॣ¨áâà, ¤«ï ã¯à®é¥­¨ï ¨å ¯®á«¥¤ã饩 ®¡à ¡®âª¨
914
			sub bl,32 ;¯¥à¥¢®¤¨¬ ᨬ¢®«ë ¢ ¢¥àå­¨© ॣ¨áâà, ¤«ï ã¯à®é¥­¨ï ¨å ¯®á«¥¤ã饩 ®¡à ¡®âª¨
885
		.us2: ;á®áâ ¢­®¥ ãá«®¢¨¥
915
		.us2: ;á®áâ ¢­®¥ ãá«®¢¨¥
886
			sub bl,'0'
916
			sub bl,'0'
887
			cmp bl,9
917
			cmp bl,9
888
			jle .cor1
918
			jle .cor1
889
				sub bl,7 ;convert 'A' to '10'
919
				sub bl,7 ;convert 'A' to '10'
890
			.cor1:
920
			.cor1:
891
			shl eax,4
921
			shl eax,4
892
			add eax,ebx
922
			add eax,ebx
893
			inc esi
923
			inc esi
894
			jmp .cycle_16
924
			jmp .cycle_16
895
	@@:
925
	@@:
896
	cmp ecx,0 ;¥á«¨ ç¨á«® ®âà¨æ â¥«ì­®¥
926
	cmp ecx,0 ;¥á«¨ ç¨á«® ®âà¨æ â¥«ì­®¥
897
	jne @f
927
	jne @f
898
		sub ecx,eax
928
		sub ecx,eax
899
		mov eax,ecx
929
		mov eax,ecx
900
	@@:
930
	@@:
901
	pop esi ecx ebx
931
	pop esi ecx ebx
902
	ret
932
	ret
903
endp
933
endp
904
 
934
 
905
;¤ ­­ë¥ ¤«ï ¤¨ «®£  ®âªàëâ¨ï ä ©«®¢
935
;¤ ­­ë¥ ¤«ï ¤¨ «®£  ®âªàëâ¨ï ä ©«®¢
906
align 4
936
align 4
907
OpenDialog_data:
937
OpenDialog_data:
908
.type			dd 0 ;0 - ®âªàëâì, 1 - á®åà ­¨âì, 2 - ¢ë¡à âì ¤â४â®à¨î
938
.type			dd 0 ;0 - ®âªàëâì, 1 - á®åà ­¨âì, 2 - ¢ë¡à âì ¤â४â®à¨î
909
.procinfo		dd procinfo	;+4
939
.procinfo		dd procinfo	;+4
910
.com_area_name		dd communication_area_name	;+8
940
.com_area_name		dd communication_area_name	;+8
911
.com_area		dd 0	;+12
941
.com_area		dd 0	;+12
912
.opendir_path		dd plugin_path	;+16
942
.opendir_path		dd plugin_path	;+16
913
.dir_default_path	dd default_dir ;+20
943
.dir_default_path	dd default_dir ;+20
914
.start_path		dd file_name ;+24 ¯ãâì ª ¤¨ «®£ã ®âªàëâ¨ï ä ©«®¢
944
.start_path		dd file_name ;+24 ¯ãâì ª ¤¨ «®£ã ®âªàëâ¨ï ä ©«®¢
915
.draw_window		dd draw_window	;+28
945
.draw_window		dd draw_window	;+28
916
.status 		dd 0	;+32
946
.status 		dd 0	;+32
917
.openfile_path		dd openfile_path	;+36 ¯ãâì ª ®âªà뢠¥¬®¬ã ä ©«ã
947
.openfile_path		dd openfile_path	;+36 ¯ãâì ª ®âªà뢠¥¬®¬ã ä ©«ã
918
.filename_area		dd filename_area	;+40
948
.filename_area		dd filename_area	;+40
919
.filter_area		dd Filter
949
.filter_area		dd Filter
920
.x:
950
.x:
921
.x_size 		dw 420 ;+48 ; Window X size
951
.x_size 		dw 420 ;+48 ; Window X size
922
.x_start		dw 10 ;+50 ; Window X position
952
.x_start		dw 10 ;+50 ; Window X position
923
.y:
953
.y:
924
.y_size 		dw 320 ;+52 ; Window y size
954
.y_size 		dw 320 ;+52 ; Window y size
925
.y_start		dw 10 ;+54 ; Window Y position
955
.y_start		dw 10 ;+54 ; Window Y position
926
 
956
 
927
default_dir db '/rd/1',0
957
default_dir db '/rd/1',0
928
 
958
 
929
communication_area_name:
959
communication_area_name:
930
	db 'FFFFFFFF_open_dialog',0
960
	db 'FFFFFFFF_open_dialog',0
931
open_dialog_name:
961
open_dialog_name:
932
	db 'opendial',0
962
	db 'opendial',0
933
communication_area_default_path:
963
communication_area_default_path:
934
	db '/rd/1/File managers/',0
964
	db '/rd/1/File managers/',0
935
 
965
 
936
Filter:
966
Filter:
937
dd Filter.end - Filter.1
967
dd Filter.end - Filter.1
938
.1:
968
.1:
939
db '3DS',0
969
db '3DS',0
940
db 'TXT',0
970
db 'TXT',0
941
.end:
971
.end:
942
db 0
972
db 0
943
 
973
 
944
 
974
 
945
 
975
 
946
head_f_i:
976
head_f_i:
947
head_f_l db '‘¨á⥬­ ï ®è¨¡ª ',0
977
head_f_l db '‘¨á⥬­ ï ®è¨¡ª ',0
948
 
978
 
949
system_dir_0 db '/sys/lib/'
979
system_dir_0 db '/sys/lib/'
950
lib_name_0 db 'proc_lib.obj',0
980
lib_name_0 db 'proc_lib.obj',0
951
err_message_found_lib_0 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'proc_lib.obj',39,0
981
err_message_found_lib_0 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'proc_lib.obj',39,0
952
err_message_import_0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'proc_lib.obj',39,0
982
err_message_import_0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'proc_lib.obj',39,0
953
 
983
 
954
system_dir_1 db '/sys/lib/'
984
system_dir_1 db '/sys/lib/'
955
lib_name_1 db 'libimg.obj',0
985
lib_name_1 db 'libimg.obj',0
956
err_message_found_lib_1 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'libimg.obj',39,0
986
err_message_found_lib_1 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'libimg.obj',39,0
957
err_message_import_1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libimg.obj',39,0
987
err_message_import_1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'libimg.obj',39,0
958
 
988
 
959
system_dir_2 db '/sys/lib/'
989
system_dir_2 db '/sys/lib/'
960
lib_name_2 db 'box_lib.obj',0
990
lib_name_2 db 'box_lib.obj',0
961
err_msg_found_lib_2 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'box_lib.obj',39,0
991
err_msg_found_lib_2 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'box_lib.obj',39,0
962
err_msg_import_2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'box_lib',39,0
992
err_msg_import_2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'box_lib',39,0
963
 
993
 
964
system_dir_7 db '/sys/lib/'
994
system_dir_7 db '/sys/lib/'
965
lib_name_7 db 'buf2d.obj',0
995
lib_name_7 db 'buf2d.obj',0
966
err_msg_found_lib_7 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'buf2d.obj',39,0
996
err_msg_found_lib_7 db '¥ ­ ©¤¥­  ¡¨¡«¨®â¥ª  ',39,'buf2d.obj',39,0
967
err_msg_import_7 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'buf2d',39,0
997
err_msg_import_7 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'buf2d',39,0
968
 
998
 
969
l_libs_start:
999
l_libs_start:
970
	lib0 l_libs lib_name_0, sys_path, file_name, system_dir_0,\
1000
	lib0 l_libs lib_name_0, sys_path, file_name, system_dir_0,\
971
		err_message_found_lib_0, head_f_l, proclib_import,err_message_import_0, head_f_i
1001
		err_message_found_lib_0, head_f_l, proclib_import,err_message_import_0, head_f_i
972
	lib1 l_libs lib_name_1, sys_path, file_name, system_dir_1,\
1002
	lib1 l_libs lib_name_1, sys_path, file_name, system_dir_1,\
973
		err_message_found_lib_1, head_f_l, import_libimg, err_message_import_1, head_f_i
1003
		err_message_found_lib_1, head_f_l, import_libimg, err_message_import_1, head_f_i
974
	lib_2 l_libs lib_name_2, sys_path, library_path, system_dir_2,\
1004
	lib_2 l_libs lib_name_2, sys_path, library_path, system_dir_2,\
975
		err_msg_found_lib_2,head_f_l,import_box_lib,err_msg_import_2,head_f_i
1005
		err_msg_found_lib_2,head_f_l,import_box_lib,err_msg_import_2,head_f_i
976
	lib_7 l_libs lib_name_7, sys_path, library_path, system_dir_7,\
1006
	lib_7 l_libs lib_name_7, sys_path, library_path, system_dir_7,\
977
		err_msg_found_lib_7,head_f_l,import_buf2d,err_msg_import_7,head_f_i
1007
		err_msg_found_lib_7,head_f_l,import_buf2d,err_msg_import_7,head_f_i
978
l_libs_end:
1008
l_libs_end:
979
 
1009
 
980
align 4
1010
align 4
981
import_libimg:
1011
import_libimg:
982
	dd alib_init1
1012
	dd alib_init1
983
	img_is_img  dd aimg_is_img
1013
	img_is_img  dd aimg_is_img
984
	img_info    dd aimg_info
1014
	img_info    dd aimg_info
985
	img_from_file dd aimg_from_file
1015
	img_from_file dd aimg_from_file
986
	img_to_file dd aimg_to_file
1016
	img_to_file dd aimg_to_file
987
	img_from_rgb dd aimg_from_rgb
1017
	img_from_rgb dd aimg_from_rgb
988
	img_to_rgb  dd aimg_to_rgb
1018
	img_to_rgb  dd aimg_to_rgb
989
	img_to_rgb2 dd aimg_to_rgb2
1019
	img_to_rgb2 dd aimg_to_rgb2
990
	img_decode  dd aimg_decode
1020
	img_decode  dd aimg_decode
991
	img_encode  dd aimg_encode
1021
	img_encode  dd aimg_encode
992
	img_create  dd aimg_create
1022
	img_create  dd aimg_create
993
	img_destroy dd aimg_destroy
1023
	img_destroy dd aimg_destroy
994
	img_destroy_layer dd aimg_destroy_layer
1024
	img_destroy_layer dd aimg_destroy_layer
995
	img_count   dd aimg_count
1025
	img_count   dd aimg_count
996
	img_lock_bits dd aimg_lock_bits
1026
	img_lock_bits dd aimg_lock_bits
997
	img_unlock_bits dd aimg_unlock_bits
1027
	img_unlock_bits dd aimg_unlock_bits
998
	img_flip    dd aimg_flip
1028
	img_flip    dd aimg_flip
999
	img_flip_layer dd aimg_flip_layer
1029
	img_flip_layer dd aimg_flip_layer
1000
	img_rotate  dd aimg_rotate
1030
	img_rotate  dd aimg_rotate
1001
	img_rotate_layer dd aimg_rotate_layer
1031
	img_rotate_layer dd aimg_rotate_layer
1002
	img_draw    dd aimg_draw
1032
	img_draw    dd aimg_draw
1003
 
1033
 
1004
	dd 0,0
1034
	dd 0,0
1005
	alib_init1   db 'lib_init',0
1035
	alib_init1   db 'lib_init',0
1006
	aimg_is_img  db 'img_is_img',0 ;®¯à¥¤¥«ï¥â ¯® ¤ ­­ë¬, ¬®¦¥â «¨ ¡¨¡«¨®â¥ª  ᤥ« âì ¨§ ­¨å ¨§®¡à ¦¥­¨¥
1036
	aimg_is_img  db 'img_is_img',0 ;®¯à¥¤¥«ï¥â ¯® ¤ ­­ë¬, ¬®¦¥â «¨ ¡¨¡«¨®â¥ª  ᤥ« âì ¨§ ­¨å ¨§®¡à ¦¥­¨¥
1007
	aimg_info    db 'img_info',0
1037
	aimg_info    db 'img_info',0
1008
	aimg_from_file db 'img_from_file',0
1038
	aimg_from_file db 'img_from_file',0
1009
	aimg_to_file db 'img_to_file',0
1039
	aimg_to_file db 'img_to_file',0
1010
	aimg_from_rgb db 'img_from_rgb',0
1040
	aimg_from_rgb db 'img_from_rgb',0
1011
	aimg_to_rgb  db 'img_to_rgb',0 ;¯à¥®¡à §®¢ ­¨¥ ¨§®¡à ¦¥­¨ï ¢ ¤ ­­ë¥ RGB
1041
	aimg_to_rgb  db 'img_to_rgb',0 ;¯à¥®¡à §®¢ ­¨¥ ¨§®¡à ¦¥­¨ï ¢ ¤ ­­ë¥ RGB
1012
	aimg_to_rgb2 db 'img_to_rgb2',0
1042
	aimg_to_rgb2 db 'img_to_rgb2',0
1013
	aimg_decode  db 'img_decode',0 ; ¢â®¬ â¨ç¥áª¨ ®¯à¥¤¥«ï¥â ä®à¬ â £à ä¨ç¥áª¨å ¤ ­­ëå
1043
	aimg_decode  db 'img_decode',0 ; ¢â®¬ â¨ç¥áª¨ ®¯à¥¤¥«ï¥â ä®à¬ â £à ä¨ç¥áª¨å ¤ ­­ëå
1014
	aimg_encode  db 'img_encode',0
1044
	aimg_encode  db 'img_encode',0
1015
	aimg_create  db 'img_create',0
1045
	aimg_create  db 'img_create',0
1016
	aimg_destroy db 'img_destroy',0
1046
	aimg_destroy db 'img_destroy',0
1017
	aimg_destroy_layer db 'img_destroy_layer',0
1047
	aimg_destroy_layer db 'img_destroy_layer',0
1018
	aimg_count   db 'img_count',0
1048
	aimg_count   db 'img_count',0
1019
	aimg_lock_bits db 'img_lock_bits',0
1049
	aimg_lock_bits db 'img_lock_bits',0
1020
	aimg_unlock_bits db 'img_unlock_bits',0
1050
	aimg_unlock_bits db 'img_unlock_bits',0
1021
	aimg_flip    db 'img_flip',0
1051
	aimg_flip    db 'img_flip',0
1022
	aimg_flip_layer db 'img_flip_layer',0
1052
	aimg_flip_layer db 'img_flip_layer',0
1023
	aimg_rotate  db 'img_rotate',0
1053
	aimg_rotate  db 'img_rotate',0
1024
	aimg_rotate_layer db 'img_rotate_layer',0
1054
	aimg_rotate_layer db 'img_rotate_layer',0
1025
	aimg_draw    db 'img_draw',0
1055
	aimg_draw    db 'img_draw',0
1026
 
1056
 
1027
align 4
1057
align 4
1028
proclib_import: ;®¯¨á ­¨¥ íªá¯®àâ¨à㥬ëå ä㭪権
1058
proclib_import: ;®¯¨á ­¨¥ íªá¯®àâ¨à㥬ëå ä㭪権
1029
	OpenDialog_Init dd aOpenDialog_Init
1059
	OpenDialog_Init dd aOpenDialog_Init
1030
	OpenDialog_Start dd aOpenDialog_Start
1060
	OpenDialog_Start dd aOpenDialog_Start
1031
dd 0,0
1061
dd 0,0
1032
	aOpenDialog_Init db 'OpenDialog_init',0
1062
	aOpenDialog_Init db 'OpenDialog_init',0
1033
	aOpenDialog_Start db 'OpenDialog_start',0
1063
	aOpenDialog_Start db 'OpenDialog_start',0
1034
 
1064
 
1035
align 4
1065
align 4
1036
import_buf2d:
1066
import_buf2d:
1037
	dd sz_init0
1067
	dd sz_init0
1038
	buf2d_create dd sz_buf2d_create
1068
	buf2d_create dd sz_buf2d_create
1039
	buf2d_create_f_img dd sz_buf2d_create_f_img
1069
	buf2d_create_f_img dd sz_buf2d_create_f_img
1040
	buf2d_clear dd sz_buf2d_clear
1070
	buf2d_clear dd sz_buf2d_clear
1041
	buf2d_draw dd sz_buf2d_draw
1071
	buf2d_draw dd sz_buf2d_draw
1042
	buf2d_delete dd sz_buf2d_delete
1072
	buf2d_delete dd sz_buf2d_delete
1043
	buf2d_resize dd sz_buf2d_resize
1073
	buf2d_resize dd sz_buf2d_resize
1044
	buf2d_line dd sz_buf2d_line
1074
	buf2d_line dd sz_buf2d_line
1045
	buf2d_rect_by_size dd sz_buf2d_rect_by_size
1075
	buf2d_rect_by_size dd sz_buf2d_rect_by_size
1046
	buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
1076
	buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
1047
	buf2d_circle dd sz_buf2d_circle
1077
	buf2d_circle dd sz_buf2d_circle
1048
	buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
1078
	buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
1049
	buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
1079
	buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
1050
	buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
1080
	buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
1051
	buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
1081
	buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
1052
	buf2d_bit_blt dd sz_buf2d_bit_blt
1082
	buf2d_bit_blt dd sz_buf2d_bit_blt
1053
	buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
1083
	buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
1054
	buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
1084
	buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
1055
	buf2d_curve_bezier dd sz_buf2d_curve_bezier
1085
	buf2d_curve_bezier dd sz_buf2d_curve_bezier
1056
	buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
1086
	buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
1057
	buf2d_draw_text dd sz_buf2d_draw_text
1087
	buf2d_draw_text dd sz_buf2d_draw_text
1058
	buf2d_crop_color dd sz_buf2d_crop_color
1088
	buf2d_crop_color dd sz_buf2d_crop_color
1059
	buf2d_offset_h dd sz_buf2d_offset_h
1089
	buf2d_offset_h dd sz_buf2d_offset_h
1060
	buf2d_flood_fill dd sz_buf2d_flood_fill
1090
	buf2d_flood_fill dd sz_buf2d_flood_fill
1061
	buf2d_set_pixel dd sz_buf2d_set_pixel
1091
	buf2d_set_pixel dd sz_buf2d_set_pixel
1062
	dd 0,0
1092
	dd 0,0
1063
	sz_init0 db 'lib_init',0
1093
	sz_init0 db 'lib_init',0
1064
	sz_buf2d_create db 'buf2d_create',0
1094
	sz_buf2d_create db 'buf2d_create',0
1065
	sz_buf2d_create_f_img db 'buf2d_create_f_img',0
1095
	sz_buf2d_create_f_img db 'buf2d_create_f_img',0
1066
	sz_buf2d_clear db 'buf2d_clear',0
1096
	sz_buf2d_clear db 'buf2d_clear',0
1067
	sz_buf2d_draw db 'buf2d_draw',0
1097
	sz_buf2d_draw db 'buf2d_draw',0
1068
	sz_buf2d_delete db 'buf2d_delete',0
1098
	sz_buf2d_delete db 'buf2d_delete',0
1069
	sz_buf2d_resize db 'buf2d_resize',0
1099
	sz_buf2d_resize db 'buf2d_resize',0
1070
	sz_buf2d_line db 'buf2d_line',0
1100
	sz_buf2d_line db 'buf2d_line',0
1071
	sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
1101
	sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
1072
	sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
1102
	sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
1073
	sz_buf2d_circle db 'buf2d_circle',0
1103
	sz_buf2d_circle db 'buf2d_circle',0
1074
	sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
1104
	sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
1075
	sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
1105
	sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
1076
	sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
1106
	sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
1077
	sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
1107
	sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
1078
	sz_buf2d_bit_blt db 'buf2d_bit_blt',0
1108
	sz_buf2d_bit_blt db 'buf2d_bit_blt',0
1079
	sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
1109
	sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
1080
	sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
1110
	sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
1081
	sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
1111
	sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
1082
	sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
1112
	sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
1083
	sz_buf2d_draw_text db 'buf2d_draw_text',0
1113
	sz_buf2d_draw_text db 'buf2d_draw_text',0
1084
	sz_buf2d_crop_color db 'buf2d_crop_color',0
1114
	sz_buf2d_crop_color db 'buf2d_crop_color',0
1085
	sz_buf2d_offset_h db 'buf2d_offset_h',0
1115
	sz_buf2d_offset_h db 'buf2d_offset_h',0
1086
	sz_buf2d_flood_fill db 'buf2d_flood_fill',0
1116
	sz_buf2d_flood_fill db 'buf2d_flood_fill',0
1087
	sz_buf2d_set_pixel db 'buf2d_set_pixel',0
1117
	sz_buf2d_set_pixel db 'buf2d_set_pixel',0
1088
 
1118
 
1089
align 4
1119
align 4
1090
import_box_lib:
1120
import_box_lib:
1091
	dd sz_init1
1121
	dd sz_init1
1092
	init_checkbox dd sz_init_checkbox
1122
	init_checkbox dd sz_init_checkbox
1093
	check_box_draw dd sz_check_box_draw
1123
	check_box_draw dd sz_check_box_draw
1094
	edit_box_draw dd sz_edit_box_draw
1124
	edit_box_draw dd sz_edit_box_draw
1095
	edit_box_key dd sz_edit_box_key
1125
	edit_box_key dd sz_edit_box_key
1096
	edit_box_mouse dd sz_edit_box_mouse
1126
	edit_box_mouse dd sz_edit_box_mouse
1097
	edit_box_set_text dd sz_edit_box_set_text
1127
	edit_box_set_text dd sz_edit_box_set_text
1098
	scrollbar_ver_draw dd sz_scrollbar_ver_draw
1128
	scrollbar_ver_draw dd sz_scrollbar_ver_draw
1099
	scrollbar_hor_draw dd sz_scrollbar_hor_draw
1129
	scrollbar_hor_draw dd sz_scrollbar_hor_draw
1100
 
1130
 
1101
	tl_data_init dd sz_tl_data_init
1131
	tl_data_init dd sz_tl_data_init
1102
	tl_data_clear dd sz_tl_data_clear
1132
	tl_data_clear dd sz_tl_data_clear
1103
	tl_info_clear dd sz_tl_info_clear
1133
	tl_info_clear dd sz_tl_info_clear
1104
	tl_key dd sz_tl_key
1134
	tl_key dd sz_tl_key
1105
	tl_mouse dd sz_tl_mouse
1135
	tl_mouse dd sz_tl_mouse
1106
	tl_draw dd sz_tl_draw
1136
	tl_draw dd sz_tl_draw
1107
	tl_info_undo dd sz_tl_info_undo
1137
	tl_info_undo dd sz_tl_info_undo
1108
	tl_info_redo dd sz_tl_info_redo
1138
	tl_info_redo dd sz_tl_info_redo
1109
	tl_node_add dd sz_tl_node_add
1139
	tl_node_add dd sz_tl_node_add
1110
	tl_node_set_data dd sz_tl_node_set_data
1140
	tl_node_set_data dd sz_tl_node_set_data
1111
	tl_node_get_data dd sz_tl_node_get_data
1141
	tl_node_get_data dd sz_tl_node_get_data
1112
	tl_node_delete dd sz_tl_node_delete
1142
	tl_node_delete dd sz_tl_node_delete
1113
	tl_node_move_up dd sz_tl_node_move_up
1143
	tl_node_move_up dd sz_tl_node_move_up
1114
	tl_node_move_down dd sz_tl_node_move_down
1144
	tl_node_move_down dd sz_tl_node_move_down
1115
	tl_cur_beg dd sz_tl_cur_beg
1145
	tl_cur_beg dd sz_tl_cur_beg
1116
	tl_cur_next dd sz_tl_cur_next
1146
	tl_cur_next dd sz_tl_cur_next
1117
	tl_cur_perv dd sz_tl_cur_perv
1147
	tl_cur_perv dd sz_tl_cur_perv
1118
	tl_node_close_open dd sz_tl_node_close_open
1148
	tl_node_close_open dd sz_tl_node_close_open
1119
	tl_node_lev_inc dd sz_tl_node_lev_inc
1149
	tl_node_lev_inc dd sz_tl_node_lev_inc
1120
	tl_node_lev_dec dd sz_tl_node_lev_dec
1150
	tl_node_lev_dec dd sz_tl_node_lev_dec
1121
	tl_node_poi_get_info dd sz_tl_node_poi_get_info
1151
	tl_node_poi_get_info dd sz_tl_node_poi_get_info
1122
	tl_node_poi_get_next_info dd sz_tl_node_poi_get_next_info
1152
	tl_node_poi_get_next_info dd sz_tl_node_poi_get_next_info
1123
	tl_node_poi_get_data dd sz_tl_node_poi_get_data
1153
	tl_node_poi_get_data dd sz_tl_node_poi_get_data
1124
 
1154
 
1125
	dd 0,0
1155
	dd 0,0
1126
	sz_init1 db 'lib_init',0
1156
	sz_init1 db 'lib_init',0
1127
	sz_init_checkbox db 'init_checkbox2',0
1157
	sz_init_checkbox db 'init_checkbox2',0
1128
	sz_check_box_draw db 'check_box_draw2',0
1158
	sz_check_box_draw db 'check_box_draw2',0
1129
	sz_edit_box_draw db 'edit_box',0
1159
	sz_edit_box_draw db 'edit_box',0
1130
	sz_edit_box_key db 'edit_box_key',0
1160
	sz_edit_box_key db 'edit_box_key',0
1131
	sz_edit_box_mouse db 'edit_box_mouse',0
1161
	sz_edit_box_mouse db 'edit_box_mouse',0
1132
	sz_edit_box_set_text db 'edit_box_set_text',0
1162
	sz_edit_box_set_text db 'edit_box_set_text',0
1133
	sz_scrollbar_ver_draw db 'scrollbar_v_draw',0
1163
	sz_scrollbar_ver_draw db 'scrollbar_v_draw',0
1134
	sz_scrollbar_hor_draw db 'scrollbar_h_draw',0
1164
	sz_scrollbar_hor_draw db 'scrollbar_h_draw',0
1135
 
1165
 
1136
	sz_tl_data_init db 'tl_data_init',0
1166
	sz_tl_data_init db 'tl_data_init',0
1137
	sz_tl_data_clear db 'tl_data_clear',0
1167
	sz_tl_data_clear db 'tl_data_clear',0
1138
	sz_tl_info_clear db 'tl_info_clear',0
1168
	sz_tl_info_clear db 'tl_info_clear',0
1139
	sz_tl_key db 'tl_key',0
1169
	sz_tl_key db 'tl_key',0
1140
	sz_tl_mouse db 'tl_mouse',0
1170
	sz_tl_mouse db 'tl_mouse',0
1141
	sz_tl_draw db 'tl_draw',0
1171
	sz_tl_draw db 'tl_draw',0
1142
	sz_tl_info_undo db 'tl_info_undo',0
1172
	sz_tl_info_undo db 'tl_info_undo',0
1143
	sz_tl_info_redo db 'tl_info_redo',0
1173
	sz_tl_info_redo db 'tl_info_redo',0
1144
	sz_tl_node_add db 'tl_node_add',0
1174
	sz_tl_node_add db 'tl_node_add',0
1145
	sz_tl_node_set_data db 'tl_node_set_data',0
1175
	sz_tl_node_set_data db 'tl_node_set_data',0
1146
	sz_tl_node_get_data db 'tl_node_get_data',0
1176
	sz_tl_node_get_data db 'tl_node_get_data',0
1147
	sz_tl_node_delete db 'tl_node_delete',0
1177
	sz_tl_node_delete db 'tl_node_delete',0
1148
	sz_tl_node_move_up db 'tl_node_move_up',0
1178
	sz_tl_node_move_up db 'tl_node_move_up',0
1149
	sz_tl_node_move_down db 'tl_node_move_down',0
1179
	sz_tl_node_move_down db 'tl_node_move_down',0
1150
	sz_tl_cur_beg db 'tl_cur_beg',0
1180
	sz_tl_cur_beg db 'tl_cur_beg',0
1151
	sz_tl_cur_next db 'tl_cur_next',0
1181
	sz_tl_cur_next db 'tl_cur_next',0
1152
	sz_tl_cur_perv db 'tl_cur_perv',0
1182
	sz_tl_cur_perv db 'tl_cur_perv',0
1153
	sz_tl_node_close_open db 'tl_node_close_open',0
1183
	sz_tl_node_close_open db 'tl_node_close_open',0
1154
	sz_tl_node_lev_inc db 'tl_node_lev_inc',0
1184
	sz_tl_node_lev_inc db 'tl_node_lev_inc',0
1155
	sz_tl_node_lev_dec db 'tl_node_lev_dec',0
1185
	sz_tl_node_lev_dec db 'tl_node_lev_dec',0
1156
	sz_tl_node_poi_get_info db 'tl_node_poi_get_info',0
1186
	sz_tl_node_poi_get_info db 'tl_node_poi_get_info',0
1157
	sz_tl_node_poi_get_next_info db 'tl_node_poi_get_next_info',0
1187
	sz_tl_node_poi_get_next_info db 'tl_node_poi_get_next_info',0
1158
	sz_tl_node_poi_get_data db 'tl_node_poi_get_data',0
1188
	sz_tl_node_poi_get_data db 'tl_node_poi_get_data',0
1159
 
1189
 
1160
 
1190
 
1161
 
1191
 
1162
mouse_dd dd 0x0
1192
mouse_dd dd 0x0
1163
sc system_colors 
1193
sc system_colors 
1164
last_time dd 0
1194
last_time dd 0
1165
 
1195
 
1166
align 16
1196
align 16
1167
procinfo process_information 
1197
procinfo process_information 
1168
 
1198
 
1169
align 4
1199
align 4
1170
buf_0: dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
1200
buf_0: dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
1171
.l: dw 205 ;+4 left
1201
.l: dw 205 ;+4 left
1172
	dw 35 ;+6 top
1202
.t: dw 35 ;+6 top
1173
.w: dd 340 ;+8 w
1203
.w: dd 340 ;+8 w
1174
.h: dd 250 ;+12 h
1204
.h: dd 250 ;+12 h
1175
.color: dd 0xffffd0 ;+16 color
1205
.color: dd 0xffffd0 ;+16 color
1176
	db 24 ;+20 bit in pixel
1206
	db 24 ;+20 bit in pixel
1177
 
1207
 
1178
align 4
1208
align 4
1179
buf_1:
1209
buf_1:
1180
	dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
1210
	dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
1181
	dw 25 ;+4 left
1211
	dw 25 ;+4 left
1182
	dw 25 ;+6 top
1212
	dw 25 ;+6 top
1183
	dd 128 ;+8 w
1213
	dd 128 ;+8 w
1184
	dd 144 ;+12 h
1214
	dd 144 ;+12 h
1185
	dd 0 ;+16 color
1215
	dd 0 ;+16 color
1186
	db 24 ;+20 bit in pixel
1216
	db 24 ;+20 bit in pixel
1187
 
1217
 
1188
el_focus dd tree1
1218
el_focus dd tree1
1189
tree1 tree_list size_one_list,200+2, tl_key_no_edit+tl_draw_par_line,\
1219
tree1 tree_list size_one_list,200+2, tl_key_no_edit+tl_draw_par_line,\
1190
	16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,35,195-16,250, 16,list_offs_text,0, el_focus,\
1220
	16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,35,195-16,250, 16,list_offs_text,0, el_focus,\
1191
	w_scr_t1,0
1221
	w_scr_t1,0
1192
 
1222
 
1193
align 4
1223
align 4
1194
w_scr_t1:
1224
w_scr_t1:
1195
.size_x     dw 16 ;+0
1225
.size_x     dw 16 ;+0
1196
.start_x    dw 0
1226
.start_x    dw 0
1197
rb 2+2
1227
rb 2+2
1198
.btn_high   dd 15 ;+8
1228
.btn_high   dd 15 ;+8
1199
.type	    dd 1  ;+12
1229
.type	    dd 1  ;+12
1200
.max_area   dd 100  ;+16
1230
.max_area   dd 100  ;+16
1201
rb 4+4
1231
rb 4+4
1202
.bckg_col   dd 0xeeeeee ;+28
1232
.bckg_col   dd 0xeeeeee ;+28
1203
.frnt_col   dd 0xbbddff ;+32
1233
.frnt_col   dd 0xbbddff ;+32
1204
.line_col   dd 0  ;+36
1234
.line_col   dd 0  ;+36
1205
rb 4+2+2
1235
rb 4+2+2
1206
.run_x:
1236
.run_x:
1207
rb 2+2+2+2+4+4+4+4+4+4
1237
rb 2+2+2+2+4+4+4+4+4+4
1208
.all_redraw dd 0 ;+80
1238
.all_redraw dd 0 ;+80
1209
.ar_offset  dd 1 ;+84
1239
.ar_offset  dd 1 ;+84
1210
 
1240
 
1211
 
1241
 
1212
 
1242
 
1213
;íâ®â ª®¤ ­¥ ¬®©, ®­ ¯à¥®¡à §ã¥â ç¨á«® ¢ áâபã
1243
;íâ®â ª®¤ ­¥ ¬®©, ®­ ¯à¥®¡à §ã¥â ç¨á«® ¢ áâபã
1214
;input:
1244
;input:
1215
; eax = value
1245
; eax = value
1216
; edi = string buffer
1246
; edi = string buffer
1217
;output:
1247
;output:
1218
align 4
1248
align 4
1219
tl_convert_to_str:
1249
tl_convert_to_str:
1220
	pushad
1250
	pushad
1221
		mov dword[edi+1],0;0x20202020
1251
		mov dword[edi+1],0;0x20202020
1222
		call .str
1252
		call .str
1223
	popad
1253
	popad
1224
	ret
1254
	ret
1225
 
1255
 
1226
align 4
1256
align 4
1227
.str:
1257
.str:
1228
	mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬  áç¨á«¥­¨ï ¨§¬¥­ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤­ë¥ ¯ à ¬¥âàë eax - ç¨á«®
1258
	mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬  áç¨á«¥­¨ï ¨§¬¥­ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤­ë¥ ¯ à ¬¥âàë eax - ç¨á«®
1229
    ;¯à¥à¥¢®¤ ç¨á«  ¢ ASCII áâப㠢§®¤­ë¥ ¤ ­­ë¥ ecx=á¨á⥬  áç¨á«¥­ï edi  ¤à¥á ªã¤  § ¯¨á뢠âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®­¥æ ¯¥à¥¬¥­­®© 
1259
    ;¯à¥à¥¢®¤ ç¨á«  ¢ ASCII áâப㠢§®¤­ë¥ ¤ ­­ë¥ ecx=á¨á⥬  áç¨á«¥­ï edi  ¤à¥á ªã¤  § ¯¨á뢠âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®­¥æ ¯¥à¥¬¥­­®© 
1230
	cmp eax,ecx  ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
1260
	cmp eax,ecx  ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
1231
	jb @f
1261
	jb @f
1232
		xor edx,edx  ;®ç¨áâ¨âì edx
1262
		xor edx,edx  ;®ç¨áâ¨âì edx
1233
		div ecx      ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
1263
		div ecx      ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
1234
		push edx     ;¯®«®¦¨âì ¢ á⥪
1264
		push edx     ;¯®«®¦¨âì ¢ á⥪
1235
		;dec edi             ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
1265
		;dec edi             ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
1236
		call .str ;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
1266
		call .str ;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
1237
		pop eax
1267
		pop eax
1238
	@@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
1268
	@@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
1239
	or al,0x30  ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥  祬 ¤¢¥ ¢ëè¥
1269
	or al,0x30  ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥  祬 ¤¢¥ ¢ëè¥
1240
	stosb	    ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
1270
	stosb	    ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
1241
	ret	      ;¢¥à­ãâìáï ç¥­ì ¨­â¥à¥á­ë© 室 â.ª. ¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
1271
	ret	      ;¢¥à­ãâìáï ç¥­ì ¨­â¥à¥á­ë© 室 â.ª. ¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
1242
 
1272
 
1243
i_end:
1273
i_end:
1244
	rb 1024
1274
	rb 1024
1245
thread_coords:
1275
thread_coords:
1246
	rb 1024
1276
	rb 1024
1247
stacktop:
1277
stacktop:
1248
	sys_path rb 1024
1278
	sys_path rb 1024
1249
	file_name:
1279
	file_name:
1250
		rb 1024 ;4096 
1280
		rb 1024 ;4096 
1251
	library_path rb 1024
1281
	library_path rb 1024
1252
	plugin_path rb 4096
1282
	plugin_path rb 4096
1253
	openfile_path rb 4096
1283
	openfile_path rb 4096
1254
	filename_area rb 256
1284
	filename_area rb 256
1255
mem:
1285
mem:
1256
>
1286
>
1257
>
1287
>