Subversion Repositories Kolibri OS

Rev

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

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