Subversion Repositories Kolibri OS

Rev

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

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