Subversion Repositories Kolibri OS

Rev

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

Rev 832 Rev 7649
1
;   Picture browser by lisovin@26.ru
1
;   Picture browser by lisovin@26.ru
2
;   Modified by Ivan Poddubny - v.0.3
2
;   Modified by Ivan Poddubny - v.0.3
3
;   Modified by Diamond - v.0.4
3
;   Modified by Diamond - v.0.4
4
;   Modified by Mario79:
4
;   Modified by Mario79:
5
;      v.0.5  18.07.08 Dinamic Allocation Memory
5
;      v.0.5  18.07.08 Dinamic Allocation Memory
6
;      v.0.6  20.07.08
6
;      v.0.6  20.07.08
7
;             1) Use Editbox (Author )
7
;             1) Use Editbox (Author )
8
;             2) Draw window without fill working area (C = 1)
8
;             2) Draw window without fill working area (C = 1)
9
;             3) Open file with parameter in patch:
9
;             3) Open file with parameter in patch:
10
;                Size of parameter - 4 bytes. Parameter starts with the
10
;                Size of parameter - 4 bytes. Parameter starts with the
11
;                character "\", the unused characters are filled
11
;                character "\", the unused characters are filled
12
;                by a blank (ASCII 20h).
12
;                by a blank (ASCII 20h).
13
;                '\T  /hd0/1/1.bmp' - set background, mode: tile
13
;                '\T  /hd0/1/1.bmp' - set background, mode: tile
14
;                '\S  /hd0/1/1.bmp' - set background, mode: stretch
14
;                '\S  /hd0/1/1.bmp' - set background, mode: stretch
15
;      v.0.65  23.07.08
15
;      v.0.65  23.07.08
16
;             1) Use new version Editbox (Thanks )
16
;             1) Use new version Editbox (Thanks )
17
;                (mouse correctly works in secondary thread)
17
;                (mouse correctly works in secondary thread)
18
;             2) The memory used for storage of the file BMP
18
;             2) The memory used for storage of the file BMP
19
;                after conversion in RAW comes back to OS.
19
;                after conversion in RAW comes back to OS.
20
;             3) Usage of keys 1,2,3,4 for call of buttons of the application
20
;             3) Usage of keys 1,2,3,4 for call of buttons of the application
21
;                without the mouse, before the key were defined incorrectly.
21
;                without the mouse, before the key were defined incorrectly.
22
;             4) Deleting of the unnecessary procedure of clearing of
22
;             4) Deleting of the unnecessary procedure of clearing of
23
;                a background of a picture at pressing the button "Open".
23
;                a background of a picture at pressing the button "Open".
24
;   Compile with FASM for Menuet
24
;   Compile with FASM for Menuet
25
 
25
 
26
;******************************************************************************
26
;******************************************************************************
27
    use32
27
    use32
28
    org    0x0
28
    org    0x0
29
    db	   'MENUET01'		   ; 8 byte id
29
    db	   'MENUET01'		   ; 8 byte id
30
    dd	   0x01 		   ; header version
30
    dd	   0x01 		   ; header version
31
    dd	   START		   ; start of code
31
    dd	   START		   ; start of code
32
    dd	   IM_END		   ; size of image
32
    dd	   IM_END		   ; size of image
33
    dd	   I_END       ; memory for app
33
    dd	   I_END       ; memory for app
34
    dd	   I_END       ; esp
34
    dd	   I_END       ; esp
35
    dd	   temp_area , 0x0	   ; I_Param , I_Icon
35
    dd	   temp_area , 0x0	   ; I_Param , I_Icon
36
 
36
 
37
include    'lang.inc'
37
include    'lang.inc'
38
include    '..\..\..\macros.inc'
38
include    '..\..\..\..\macros.inc'
39
include    '..\..\..\develop\examples\editbox\trunk\editbox.inc'
39
include    '..\..\..\..\develop\examples\editbox\trunk\editbox.inc'
40
;include    'macros.inc'
40
;include    'macros.inc'
41
;include    'EDITBOX.INC'
41
;include    'EDITBOX.INC'
42
use_edit_box
42
use_edit_box
43
;******************************************************************************
43
;******************************************************************************
44
 
44
 
45
START:				; start of execution
45
START:				; start of execution
46
	mcall	68, 11
46
	mcall	68, 11
47
	mcall	66, 1,1
47
	mcall	66, 1,1
48
; check for parameters
48
; check for parameters
49
   cmp	 dword [temp_area],'BOOT'
49
   cmp	 dword [temp_area],'BOOT'
50
   jne	 .no_boot
50
   jne	 .no_boot
51
.background:
51
.background:
52
   call  load_image
52
   call  load_image
53
   call  convert
53
   call  convert
54
 
54
 
55
   call  background
55
   call  background
56
.exit:
56
.exit:
57
   or	 eax,-1
57
   or	 eax,-1
58
   mcall
58
   mcall
59
 .no_boot:
59
 .no_boot:
60
 
60
 
61
   cmp	 byte [temp_area],0
61
   cmp	 byte [temp_area],0
62
   jz	 .no_param
62
   jz	 .no_param
63
 
63
 
64
 
64
 
65
   mov	 edi,string	 ; clear string
65
   mov	 edi,string	 ; clear string
66
   mov	 ecx,256/4	 ;   length of a string
66
   mov	 ecx,256/4	 ;   length of a string
67
   xor	 eax,eax	 ;   symbol <0>
67
   xor	 eax,eax	 ;   symbol <0>
68
   rep	 stosd
68
   rep	 stosd
69
 
69
 
70
 
70
 
71
   mov	 edi,temp_area	 ; look for <0> in temp_area
71
   mov	 edi,temp_area	 ; look for <0> in temp_area
72
 
72
 
73
   cmp	 [edi],byte "\"
73
   cmp	 [edi],byte "\"
74
   jne	 .continue
74
   jne	 .continue
75
   cmp	 [edi+1],byte "T"
75
   cmp	 [edi+1],byte "T"
76
   jne	 @f
76
   jne	 @f
77
   mov	 [bgrmode],dword 1
77
   mov	 [bgrmode],dword 1
78
   jmp	 .continue_1
78
   jmp	 .continue_1
79
@@:
79
@@:
80
   cmp	 [edi+1],byte "S"
80
   cmp	 [edi+1],byte "S"
81
   jne	 START.exit
81
   jne	 START.exit
82
   mov	 [bgrmode],dword 2
82
   mov	 [bgrmode],dword 2
83
.continue_1:
83
.continue_1:
84
   add	 edi,4
84
   add	 edi,4
85
.continue:
85
.continue:
86
   mov	 esi,edi
86
   mov	 esi,edi
87
   mov	 ecx,257	 ;   strlen
87
   mov	 ecx,257	 ;   strlen
88
   repne scasb
88
   repne scasb
89
	lea	ecx, [edi-temp_area]
89
	lea	ecx, [edi-temp_area]
90
 
90
 
91
   mov	 edi,string
91
   mov	 edi,string
92
   rep	 movsb		 ; copy string from temp_area to "string" (filename)
92
   rep	 movsb		 ; copy string from temp_area to "string" (filename)
93
   cmp	 [temp_area],byte "\"
93
   cmp	 [temp_area],byte "\"
94
   je	 START.background
94
   je	 START.background
95
   call  load_image
95
   call  load_image
96
   call  convert
96
   call  convert
97
 
97
 
98
 .no_param:
98
 .no_param:
99
 
99
 
100
 
100
 
101
   or  ecx,-1		; get information about me
101
   or  ecx,-1		; get information about me
102
   call getappinfo
102
   call getappinfo
103
 
103
 
104
   mov	edx,[process_info+30] ; ⥯¥àì ¢ edx ­ è ¨¤¥­â¨ä¨ª â®à
104
   mov	edx,[process_info+30] ; ⥯¥àì ¢ edx ­ è ¨¤¥­â¨ä¨ª â®à
105
   mov	ecx,eax
105
   mov	ecx,eax
106
 
106
 
107
  @@:
107
  @@:
108
   call getappinfo
108
   call getappinfo
109
   cmp	edx,[process_info+30]
109
   cmp	edx,[process_info+30]
110
   je	@f  ; ¥á«¨ ­ è PID ᮢ¯ « á PID à áᬠâਢ ¥¬®£® ¯à®æ¥áá , ¬ë ­ è«¨ ᥡï
110
   je	@f  ; ¥á«¨ ­ è PID ᮢ¯ « á PID à áᬠâਢ ¥¬®£® ¯à®æ¥áá , ¬ë ­ è«¨ ᥡï
111
   dec	ecx ; ¨­ ç¥ ᬮâਬ á«¥¤ãî騩 ¯à®æ¥áá
111
   dec	ecx ; ¨­ ç¥ ᬮâਬ á«¥¤ãî騩 ¯à®æ¥áá
112
   jne	@b  ; ¢®§¢à é ¥¬áï, ¥á«¨ ­¥ ¢á¥ ¯à®æ¥ááë à áᬮâ७ë
112
   jne	@b  ; ¢®§¢à é ¥¬áï, ¥á«¨ ­¥ ¢á¥ ¯à®æ¥ááë à áᬮâ७ë
113
  @@:
113
  @@:
114
 
114
 
115
; ⥯¥àì ¢ ecx ­®¬¥à ¯à®æ¥áá 
115
; ⥯¥àì ¢ ecx ­®¬¥à ¯à®æ¥áá 
116
    mov  [process],ecx
116
    mov  [process],ecx
117
 
117
 
118
draw_still:
118
draw_still:
119
    call draw_window
119
    call draw_window
120
 
120
 
121
still:
121
still:
122
 
122
 
123
    mov  eax,10 		; wait here for event
123
    mov  eax,10 		; wait here for event
124
    mcall
124
    mcall
125
 
125
 
126
	dec	eax
126
	dec	eax
127
	jz	red
127
	jz	red
128
	dec	eax
128
	dec	eax
129
	jnz	button
129
	jnz	button
130
 
130
 
131
  key:				; key
131
  key:				; key
132
    mov  al,2
132
    mov  al,2
133
    mcall
133
    mcall
134
    mov  al,ah
134
    mov  al,ah
135
    cmp  al,130  ; 1
135
    cmp  al,130  ; 1
136
    je	 kfile
136
    je	 kfile
137
    cmp  al,131  ; 2
137
    cmp  al,131  ; 2
138
    je	 kopen
138
    je	 kopen
139
    cmp  al,132  ; 3
139
    cmp  al,132  ; 3
140
    je	 kinfo
140
    je	 kinfo
141
    cmp  al,133  ; 4
141
    cmp  al,133  ; 4
142
    je	 kbgrd
142
    je	 kbgrd
143
    jmp  still
143
    jmp  still
144
 
144
 
145
  red:
145
  red:
146
	test	byte [status], 4
146
	test	byte [status], 4
147
	jz	draw_still
147
	jz	draw_still
148
	mov	al, 18
148
	mov	al, 18
149
	mov	ebx, 3
149
	mov	ebx, 3
150
	mov	ecx, [process]
150
	mov	ecx, [process]
151
	mcall
151
	mcall
152
	and	byte [status], not 4
152
	and	byte [status], not 4
153
	jmp	still
153
	jmp	still
154
 
154
 
155
  button:			; button
155
  button:			; button
156
    mov  eax,17 		; get id
156
    mov  eax,17 		; get id
157
    mcall
157
    mcall
158
 
158
 
159
    cmp  ah,1			; button id=1 ?
159
    cmp  ah,1			; button id=1 ?
160
    jne  noclose
160
    jne  noclose
161
 
161
 
162
    mov  eax,-1 		; close this program
162
    mov  eax,-1 		; close this program
163
    mcall
163
    mcall
164
  noclose:
164
  noclose:
165
    cmp  ah,2
165
    cmp  ah,2
166
    jne  nofile
166
    jne  nofile
167
  kfile:
167
  kfile:
168
	test	byte [status], 1
168
	test	byte [status], 1
169
	jnz	still
169
	jnz	still
170
	or	byte [status], 1
170
	or	byte [status], 1
171
    mov  eax,51
171
    mov  eax,51
172
    mov  ebx,1
172
    mov  ebx,1
173
    mov  ecx,thread1
173
    mov  ecx,thread1
174
    mov  edx,thread   ;0x29fff0
174
    mov  edx,thread   ;0x29fff0
175
    mcall
175
    mcall
176
    jmp  still
176
    jmp  still
177
  nofile:
177
  nofile:
178
    cmp  ah,3
178
    cmp  ah,3
179
    jne  noopen
179
    jne  noopen
180
 
180
 
181
 kopen:
181
 kopen:
182
    mov ecx,-1
182
    mov ecx,-1
183
    call getappinfo
183
    call getappinfo
184
 
184
 
185
    call load_image
185
    call load_image
186
 
186
 
187
  open1:
187
  open1:
188
    mov eax,[image_file]
188
    mov eax,[image_file]
189
    cmp [eax],word 'BM'
189
    cmp [eax],word 'BM'
190
    jne  still
190
    jne  still
191
    call convert
191
    call convert
192
    jmp  draw_still
192
    jmp  draw_still
193
  noopen:
193
  noopen:
194
 
194
 
195
    cmp  ah,4
195
    cmp  ah,4
196
    jne  noinfo
196
    jne  noinfo
197
  kinfo:
197
  kinfo:
198
	test	byte [status], 2
198
	test	byte [status], 2
199
	jnz	still
199
	jnz	still
200
	or	byte [status], 2
200
	or	byte [status], 2
201
    mov  eax,51
201
    mov  eax,51
202
    mov  ebx,1
202
    mov  ebx,1
203
    mov  ecx,thread2
203
    mov  ecx,thread2
204
    mov  edx,thread-512
204
    mov  edx,thread-512
205
    mcall
205
    mcall
206
    jmp  still
206
    jmp  still
207
  noinfo:
207
  noinfo:
208
 
208
 
209
; “‘’€Ž‚ˆ’œ ”Ž
209
; “‘’€Ž‚ˆ’œ ”Ž
210
    cmp  ah,5
210
    cmp  ah,5
211
    jne  still
211
    jne  still
212
  kbgrd:
212
  kbgrd:
213
	test	byte [status], 8
213
	test	byte [status], 8
214
	jnz	still
214
	jnz	still
215
	or	byte [status], 8
215
	or	byte [status], 8
216
    mov  eax,51
216
    mov  eax,51
217
    mov  ebx,1
217
    mov  ebx,1
218
    mov  ecx,thread3
218
    mov  ecx,thread3
219
    mov  edx,thread-512*2
219
    mov  edx,thread-512*2
220
    mcall
220
    mcall
221
    jmp  still
221
    jmp  still
222
    ;call background
222
    ;call background
223
 
223
 
224
 getappinfo:
224
 getappinfo:
225
    mov  eax,9
225
    mov  eax,9
226
    mov  ebx,process_info
226
    mov  ebx,process_info
227
    mcall
227
    mcall
228
    ret
228
    ret
229
 
229
 
230
 
230
 
231
load_image:
231
load_image:
232
 
232
 
233
	  mov	[fileinfo+0],dword 5
233
	  mov	[fileinfo+0],dword 5
234
	  mov	[fileinfo+12],dword 0
234
	  mov	[fileinfo+12],dword 0
235
	  mov	[fileinfo+16],dword process_info
235
	  mov	[fileinfo+16],dword process_info
236
 
236
 
237
    cmp  [image_file],0
237
    cmp  [image_file],0
238
    je	  @f
238
    je	  @f
239
    mov   ecx,[image_file]
239
    mov   ecx,[image_file]
240
     mcall 68, 13,
240
     mcall 68, 13,
241
 
241
 
242
@@:
242
@@:
243
	  mcall 70, fileinfo
243
	  mcall 70, fileinfo
244
 
244
 
245
	  mov	[fileinfo+0],dword 0
245
	  mov	[fileinfo+0],dword 0
246
	  mov	[fileinfo+12],dword 512
246
	  mov	[fileinfo+12],dword 512
247
	  mov	[fileinfo+16],dword process_info+40
247
	  mov	[fileinfo+16],dword process_info+40
248
 
248
 
249
	  mcall 70, fileinfo
249
	  mcall 70, fileinfo
250
 
250
 
251
	  mov	ecx,[process_info+32]
251
	  mov	ecx,[process_info+32]
252
	  mov	[fileinfo+12],ecx
252
	  mov	[fileinfo+12],ecx
253
 
253
 
254
	  mcall 68, 12
254
	  mcall 68, 12
255
 
255
 
256
 
256
 
257
	  mov	[fileinfo+16],eax
257
	  mov	[fileinfo+16],eax
258
	  mov	[image_file_1],eax
258
	  mov	[image_file_1],eax
259
 
259
 
260
    mov  eax,[process_info+40+28]
260
    mov  eax,[process_info+40+28]
261
 
261
 
262
	cmp	eax, 24
262
	cmp	eax, 24
263
	jz	.convert24
263
	jz	.convert24
264
	cmp	eax, 8
264
	cmp	eax, 8
265
	jz	.convert8
265
	jz	.convert8
266
	cmp	eax, 4
266
	cmp	eax, 4
267
	jz	.convert4
267
	jz	.convert4
268
     shl  ecx,2
268
     shl  ecx,2
269
.convert4:
269
.convert4:
270
     shl  ecx,1
270
     shl  ecx,1
271
.convert8:
271
.convert8:
272
     lea  ecx,[ecx*3]
272
     lea  ecx,[ecx*3]
273
.convert24:
273
.convert24:
274
 
274
 
275
;@@:
275
;@@:
276
 
276
 
277
    add   ecx,512
277
    add   ecx,512
278
	  mcall 68, 12
278
	  mcall 68, 12
279
 
279
 
280
	  mov	[image_file],eax
280
	  mov	[image_file],eax
281
 
281
 
282
	  mcall 70, fileinfo
282
	  mcall 70, fileinfo
283
 
283
 
284
    mov   esi,[image_file_1]
284
    mov   esi,[image_file_1]
285
    mov   edi,[image_file]
285
    mov   edi,[image_file]
286
    mov   ecx,512/4
286
    mov   ecx,512/4
287
    cld
287
    cld
288
    rep  movsd
288
    rep  movsd
289
 
289
 
290
    mov  eax,[image_file]
290
    mov  eax,[image_file]
291
    mov  ebx,[eax+22]
291
    mov  ebx,[eax+22]
292
    mov  eax,[eax+18]
292
    mov  eax,[eax+18]
293
	test	ebx, ebx
293
	test	ebx, ebx
294
	jns	@f
294
	jns	@f
295
	neg	ebx
295
	neg	ebx
296
@@:
296
@@:
297
    add  eax,9
297
    add  eax,9
298
    cmp  eax,210
298
    cmp  eax,210
299
    jae  @f
299
    jae  @f
300
    mov  eax,210
300
    mov  eax,210
301
@@:
301
@@:
302
    add  ebx,54
302
    add  ebx,54
303
    cmp  ebx,56
303
    cmp  ebx,56
304
    jae  @f
304
    jae  @f
305
    mov  ebx,56
305
    mov  ebx,56
306
@@:
306
@@:
307
    mov  [wnd_width],eax
307
    mov  [wnd_width],eax
308
    mov  [wnd_height],ebx
308
    mov  [wnd_height],ebx
309
    test [bWasDraw],1
309
    test [bWasDraw],1
310
    jz	 @f
310
    jz	 @f
311
    mov  esi,ebx
311
    mov  esi,ebx
312
    mov  edx,eax
312
    mov  edx,eax
313
    mcall 67,-1,-1
313
    mcall 67,-1,-1
314
@@:
314
@@:
315
    ret
315
    ret
316
 
316
 
317
 
317
 
318
  drawimage:
318
  drawimage:
319
    mov  eax,[image_file]
319
    mov  eax,[image_file]
320
    cmp  [eax],word 'BM'
320
    cmp  [eax],word 'BM'
321
    jne  nodrawimage
321
    jne  nodrawimage
322
	mov	ecx, dword [eax+18-2]
322
	mov	ecx, dword [eax+18-2]
323
	mov	cx, [eax+22]
323
	mov	cx, [eax+22]
324
	test	cx, cx
324
	test	cx, cx
325
	jns	@f
325
	jns	@f
326
	neg	cx
326
	neg	cx
327
@@:
327
@@:
328
    mov  edx,5*65536+50
328
    mov  edx,5*65536+50
329
    mcall 7,[soi]
329
    mcall 7,[soi]
330
  nodrawimage:
330
  nodrawimage:
331
    ret
331
    ret
332
 
332
 
333
; “‘’€Ž‚ˆ’œ ”Ž
333
; “‘’€Ž‚ˆ’œ ”Ž
334
  background:
334
  background:
335
    mov  eax,[image_file]
335
    mov  eax,[image_file]
336
    cmp  [eax],word 'BM'
336
    cmp  [eax],word 'BM'
337
    jne  @f
337
    jne  @f
338
    mov  ecx,[eax+18] ; è¨à¨­ 
338
    mov  ecx,[eax+18] ; è¨à¨­ 
339
    mov  edx,[eax+22] ; ¢ëá®â 
339
    mov  edx,[eax+22] ; ¢ëá®â 
340
    mcall 15,1
340
    mcall 15,1
341
 
341
 
342
    mov  esi, ecx
342
    mov  esi, ecx
343
    imul esi, edx
343
    imul esi, edx
344
	lea	esi, [esi+esi*2]
344
	lea	esi, [esi+esi*2]
345
    mov  ebx,5
345
    mov  ebx,5
346
    mov  ecx,[soi]
346
    mov  ecx,[soi]
347
    xor  edx,edx
347
    xor  edx,edx
348
;;;    mov  esi, ;640*480*3
348
;;;    mov  esi, ;640*480*3
349
    mcall
349
    mcall
350
 
350
 
351
    dec  ebx	;tile/stretch
351
    dec  ebx	;tile/stretch
352
    mov  ecx,dword [bgrmode]
352
    mov  ecx,dword [bgrmode]
353
    mcall
353
    mcall
354
 
354
 
355
    dec  ebx
355
    dec  ebx
356
    mcall
356
    mcall
357
   @@:
357
   @@:
358
    ret
358
    ret
359
 
359
 
360
convert:
360
convert:
361
    call  convert_1
361
    call  convert_1
362
    mov   ecx,[image_file_1]
362
    mov   ecx,[image_file_1]
363
    mcall 68, 13,
363
    mcall 68, 13,
364
    ret
364
    ret
365
convert_1:
365
convert_1:
366
	mov	ecx, [image_file]
366
	mov	ecx, [image_file]
367
  add ecx,512
367
  add ecx,512
368
	mov	[soi], ecx
368
	mov	[soi], ecx
369
	mov	eax,[image_file_1]
369
	mov	eax,[image_file_1]
370
	mov	ebp, [eax+18]
370
	mov	ebp, [eax+18]
371
	lea	ebp, [ebp*3]	; ebp = size of output scanline
371
	lea	ebp, [ebp*3]	; ebp = size of output scanline
372
	mov	eax, [eax+22]
372
	mov	eax, [eax+22]
373
	dec	eax
373
	dec	eax
374
	mul	ebp
374
	mul	ebp
375
	add	eax, ecx
375
	add	eax, ecx
376
	mov	edi, eax	; edi points to last scanline
376
	mov	edi, eax	; edi points to last scanline
377
	mov	esi, [image_file_1]
377
	mov	esi, [image_file_1]
378
	add	esi, [esi+10]
378
	add	esi, [esi+10]
379
	mov	ebx,[image_file_1]
379
	mov	ebx,[image_file_1]
380
	mov	edx, [ebx+22]
380
	mov	edx, [ebx+22]
381
	add	ebx,54
381
	add	ebx,54
382
	lea	eax, [ebp*2]
382
	lea	eax, [ebp*2]
383
	mov	[delta], eax
383
	mov	[delta], eax
384
	test	edx, edx
384
	test	edx, edx
385
	jz	.ret
385
	jz	.ret
386
	jns	@f
386
	jns	@f
387
	neg	edx
387
	neg	edx
388
	and	[delta], 0
388
	and	[delta], 0
389
	mov	edi, ecx
389
	mov	edi, ecx
390
@@:
390
@@:
391
	mov	eax,[image_file_1]
391
	mov	eax,[image_file_1]
392
	movzx	eax,word [eax+28]
392
	movzx	eax,word [eax+28]
393
	cmp	eax, 24
393
	cmp	eax, 24
394
	jz	convert24
394
	jz	convert24
395
	cmp	eax, 8
395
	cmp	eax, 8
396
	jz	convert8
396
	jz	convert8
397
	cmp	eax, 4
397
	cmp	eax, 4
398
	jz	convert4
398
	jz	convert4
399
	dec	eax
399
	dec	eax
400
	jz	convert1
400
	jz	convert1
401
.ret:
401
.ret:
402
	ret
402
	ret
403
convert24:
403
convert24:
404
	mov	ecx, ebp
404
	mov	ecx, ebp
405
	rep	movsb
405
	rep	movsb
406
	sub	edi, [delta]
406
	sub	edi, [delta]
407
	mov	eax, ebp
407
	mov	eax, ebp
408
	neg	eax
408
	neg	eax
409
	and	eax, 3
409
	and	eax, 3
410
	add	esi, eax
410
	add	esi, eax
411
	dec	edx
411
	dec	edx
412
	jnz	convert24
412
	jnz	convert24
413
	ret
413
	ret
414
convert8:
414
convert8:
415
	push	edi
415
	push	edi
416
	add	[esp], ebp
416
	add	[esp], ebp
417
.loopi:
417
.loopi:
418
	xor	eax, eax
418
	xor	eax, eax
419
	lodsb
419
	lodsb
420
	push	eax
420
	push	eax
421
	mov	eax,[image_file_1]
421
	mov	eax,[image_file_1]
422
	cmp	dword [eax+30],1
422
	cmp	dword [eax+30],1
423
	pop	eax
423
	pop	eax
424
	jnz	.nocompressed
424
	jnz	.nocompressed
425
.compressed:
425
.compressed:
426
	mov	ecx, eax
426
	mov	ecx, eax
427
	jecxz	.special
427
	jecxz	.special
428
	lodsb
428
	lodsb
429
	mov	eax, [ebx+eax*4]
429
	mov	eax, [ebx+eax*4]
430
@@:
430
@@:
431
	call	putpixel
431
	call	putpixel
432
	loop	@b
432
	loop	@b
433
	jmp	.loopi
433
	jmp	.loopi
434
.nocompressed:
434
.nocompressed:
435
	mov	eax, [ebx+eax*4]
435
	mov	eax, [ebx+eax*4]
436
	call	putpixel
436
	call	putpixel
437
.loopicont:
437
.loopicont:
438
	cmp	edi, [esp]
438
	cmp	edi, [esp]
439
	jnz	.loopi
439
	jnz	.loopi
440
.next:
440
.next:
441
	pop	edi
441
	pop	edi
442
	sub	edi, [delta]
442
	sub	edi, [delta]
443
	mov	eax, ebp
443
	mov	eax, ebp
444
	and	eax, 3
444
	and	eax, 3
445
	add	esi, eax
445
	add	esi, eax
446
	dec	edx
446
	dec	edx
447
	jnz	convert8
447
	jnz	convert8
448
	ret
448
	ret
449
.special:
449
.special:
450
	lodsb
450
	lodsb
451
	test	al, al
451
	test	al, al
452
	jz	.next
452
	jz	.next
453
	cmp	al, 2
453
	cmp	al, 2
454
	jbe	.end
454
	jbe	.end
455
	mov	ecx, eax
455
	mov	ecx, eax
456
	push	ecx
456
	push	ecx
457
@@:
457
@@:
458
	xor	eax, eax
458
	xor	eax, eax
459
	lodsb
459
	lodsb
460
	mov	eax, [ebx+eax*4]
460
	mov	eax, [ebx+eax*4]
461
	call	putpixel
461
	call	putpixel
462
	loop	@b
462
	loop	@b
463
	pop	ecx
463
	pop	ecx
464
	and	ecx, 1
464
	and	ecx, 1
465
	add	esi, ecx
465
	add	esi, ecx
466
	jmp	.loopi
466
	jmp	.loopi
467
.end:
467
.end:
468
	pop	edi
468
	pop	edi
469
	ret
469
	ret
470
convert4:
470
convert4:
471
	push	edi
471
	push	edi
472
	add	[esp], ebp
472
	add	[esp], ebp
473
.loopi:
473
.loopi:
474
	xor	eax, eax
474
	xor	eax, eax
475
	lodsb
475
	lodsb
476
	shr	eax, 4
476
	shr	eax, 4
477
	mov	eax, [ebx+eax*4]
477
	mov	eax, [ebx+eax*4]
478
	call	putpixel
478
	call	putpixel
479
	cmp	edi, [esp]
479
	cmp	edi, [esp]
480
	jz	.loopidone
480
	jz	.loopidone
481
	mov	al, [esi-1]
481
	mov	al, [esi-1]
482
	and	eax, 0xF
482
	and	eax, 0xF
483
	mov	eax, [ebx+eax*4]
483
	mov	eax, [ebx+eax*4]
484
	stosd
484
	stosd
485
	dec	edi
485
	dec	edi
486
	cmp	edi, [esp]
486
	cmp	edi, [esp]
487
	jnz	.loopi
487
	jnz	.loopi
488
.loopidone:
488
.loopidone:
489
	pop	edi
489
	pop	edi
490
	sub	edi, [delta]
490
	sub	edi, [delta]
491
	call	align_input
491
	call	align_input
492
	dec	edx
492
	dec	edx
493
	jnz	convert4
493
	jnz	convert4
494
	ret
494
	ret
495
convert1:
495
convert1:
496
	push	edi
496
	push	edi
497
	add	[esp], ebp
497
	add	[esp], ebp
498
.loopi:
498
.loopi:
499
	lodsb
499
	lodsb
500
	mov	ecx, 8
500
	mov	ecx, 8
501
.loopii:
501
.loopii:
502
	add	al, al
502
	add	al, al
503
	push	eax
503
	push	eax
504
	setc	al
504
	setc	al
505
	movzx	eax, al
505
	movzx	eax, al
506
	mov	eax, [ebx+eax*4]
506
	mov	eax, [ebx+eax*4]
507
	call	putpixel
507
	call	putpixel
508
	pop	eax
508
	pop	eax
509
	cmp	edi, [esp]
509
	cmp	edi, [esp]
510
	loopnz	.loopii
510
	loopnz	.loopii
511
	jnz	.loopi
511
	jnz	.loopi
512
	pop	edi
512
	pop	edi
513
	sub	edi, [delta]
513
	sub	edi, [delta]
514
	call	align_input
514
	call	align_input
515
	dec	edx
515
	dec	edx
516
	jnz	convert1
516
	jnz	convert1
517
	ret
517
	ret
518
 
518
 
519
align_input:
519
align_input:
520
	push	esi
520
	push	esi
521
	push	eax
521
	push	eax
522
	mov	eax,[image_file_1]
522
	mov	eax,[image_file_1]
523
	sub	esi,eax
523
	sub	esi,eax
524
	sub	esi,[eax+10]
524
	sub	esi,[eax+10]
525
	pop	eax
525
	pop	eax
526
	neg	esi
526
	neg	esi
527
	and	esi, 3
527
	and	esi, 3
528
	add	[esp], esi
528
	add	[esp], esi
529
	pop	esi
529
	pop	esi
530
	ret
530
	ret
531
 
531
 
532
putpixel:
532
putpixel:
533
	push	eax
533
	push	eax
534
	stosw
534
	stosw
535
	shr	eax, 16
535
	shr	eax, 16
536
	stosb
536
	stosb
537
	pop	eax
537
	pop	eax
538
	ret
538
	ret
539
 
539
 
540
;---------------------------------------------------------------------
540
;---------------------------------------------------------------------
541
get_window_param:
541
get_window_param:
542
    mcall 9, procinfo, -1
542
    mcall 9, procinfo, -1
543
    mov   eax,[ebx+46]
543
    mov   eax,[ebx+46]
544
    mov   [window_high],eax
544
    mov   [window_high],eax
545
    mov   eax,[ebx+42]
545
    mov   eax,[ebx+42]
546
    mov   [window_width],eax
546
    mov   [window_width],eax
547
    mcall 48,4
547
    mcall 48,4
548
    mov   [skin_high],eax
548
    mov   [skin_high],eax
549
    ret
549
    ret
550
;---------------------------------------------------------------------
550
;---------------------------------------------------------------------
551
 
551
 
552
;   *********************************************
552
;   *********************************************
553
;   *******  WINDOW DEFINITIONS AND DRAW ********
553
;   *******  WINDOW DEFINITIONS AND DRAW ********
554
;   *********************************************
554
;   *********************************************
555
 
555
 
556
 
556
 
557
draw_window:
557
draw_window:
558
    or	 [bWasDraw],1
558
    or	 [bWasDraw],1
559
 
559
 
560
    mov  eax,12 		   ; function 12:tell os about windowdraw
560
    mov  eax,12 		   ; function 12:tell os about windowdraw
561
    mov  ebx,1			   ; 1, start of draw
561
    mov  ebx,1			   ; 1, start of draw
562
    mcall
562
    mcall
563
 
563
 
564
				   ; DRAW WINDOW
564
				   ; DRAW WINDOW
565
    xor  eax,eax		   ; function 0 : define and draw window
565
    xor  eax,eax		   ; function 0 : define and draw window
566
;    mov  ebx,350                   ; [x start] *65536 + [x size]
566
;    mov  ebx,350                   ; [x start] *65536 + [x size]
567
;    mov  ecx,400                   ; [y start] *65536 + [y size]
567
;    mov  ecx,400                   ; [y start] *65536 + [y size]
568
    mov  ebx,0*65536
568
    mov  ebx,0*65536
569
    mov  ecx,0*65536
569
    mov  ecx,0*65536
570
    add  ebx,[wnd_width]
570
    add  ebx,[wnd_width]
571
    add  ecx,[wnd_height]
571
    add  ecx,[wnd_height]
572
    cmp  cx,55
572
    cmp  cx,55
573
    ja	 @f
573
    ja	 @f
574
    mov  cx,55
574
    mov  cx,55
575
@@:
575
@@:
576
    mov  edx,0x43ffffff 	   ; color of work area RRGGBB,8->color gl
576
    mov  edx,0x43ffffff 	   ; color of work area RRGGBB,8->color gl
577
    mcall
577
    mcall
578
 
578
 
579
    call get_window_param
579
    call get_window_param
580
 
580
 
581
    mov   ebx,5
581
    mov   ebx,5
582
    shl   ebx,16
582
    shl   ebx,16
583
    add   ebx,[window_width]
583
    add   ebx,[window_width]
584
    sub   ebx,9
584
    sub   ebx,9
585
    push  ebx
585
    push  ebx
586
    mov   ecx,[skin_high]
586
    mov   ecx,[skin_high]
587
    shl   ecx,16
587
    shl   ecx,16
588
    add   ecx,50
588
    add   ecx,50
589
    sub   ecx,[skin_high]
589
    sub   ecx,[skin_high]
590
    mcall 13, , ,0xffffff
590
    mcall 13, , ,0xffffff
591
    mov  eax,[image_file]
591
    mov  eax,[image_file]
592
    mov  ecx,[eax+22]
592
    mov  ecx,[eax+22]
593
    mov  ebx,[eax+18]
593
    mov  ebx,[eax+18]
594
    push ecx
594
    push ecx
595
    add  ebx,5
595
    add  ebx,5
596
    mov  ax,bx
596
    mov  ax,bx
597
    shl  ebx,16
597
    shl  ebx,16
598
    add  ebx,[window_width]
598
    add  ebx,[window_width]
599
    sub  ebx,4
599
    sub  ebx,4
600
    sub  bx,ax
600
    sub  bx,ax
601
    cmp  bx,0
601
    cmp  bx,0
602
    jbe  @f
602
    jbe  @f
603
    add  ecx,50 shl 16
603
    add  ecx,50 shl 16
604
    mcall 13, , ,0xffffff
604
    mcall 13, , ,0xffffff
605
@@:
605
@@:
606
    pop  ecx
606
    pop  ecx
607
    pop  ebx
607
    pop  ebx
608
    add  ecx,50
608
    add  ecx,50
609
    mov  ax,cx
609
    mov  ax,cx
610
    shl  ecx,16
610
    shl  ecx,16
611
    add  ecx,[window_high]
611
    add  ecx,[window_high]
612
    sub  cx,ax
612
    sub  cx,ax
613
    sub  ecx,4
613
    sub  ecx,4
614
    cmp  cx,0
614
    cmp  cx,0
615
    jbe  @f
615
    jbe  @f
616
    mcall 13, , ,0xffffff
616
    mcall 13, , ,0xffffff
617
@@:
617
@@:
618
    mov  eax,8
618
    mov  eax,8
619
    mov  ebx,10*65536+46
619
    mov  ebx,10*65536+46
620
    mov  ecx,25*65536+20
620
    mov  ecx,25*65536+20
621
    mov  edx,2
621
    mov  edx,2
622
    mov  esi,0x780078
622
    mov  esi,0x780078
623
  newbutton:
623
  newbutton:
624
    mcall
624
    mcall
625
    add  ebx,48*65536
625
    add  ebx,48*65536
626
    inc  edx
626
    inc  edx
627
    cmp  edx,6
627
    cmp  edx,6
628
    jb	 newbutton
628
    jb	 newbutton
629
 
629
 
630
				   ; WINDOW LABEL
630
				   ; WINDOW LABEL
631
    mov  eax,4			   ; function 4 : write text to window
631
    mov  eax,4			   ; function 4 : write text to window
632
    mov  ebx,8*65536+8		   ; [x start] *65536 + [y start]
632
    mov  ebx,8*65536+8		   ; [x start] *65536 + [y start]
633
    mov  ecx,0x10ddeeff 	   ; font 1 & color ( 0xF0RRGGBB )
633
    mov  ecx,0x10ddeeff 	   ; font 1 & color ( 0xF0RRGGBB )
634
    mov  edx,labelt		   ; pointer to text beginning
634
    mov  edx,labelt		   ; pointer to text beginning
635
    mov  esi,12 		   ; text length
635
    mov  esi,12 		   ; text length
636
    mcall
636
    mcall
637
 
637
 
638
    mov  ebx,14*65536+32
638
    mov  ebx,14*65536+32
639
    mov  edx,buttext
639
    mov  edx,buttext
640
    mov  esi,26
640
    mov  esi,26
641
    mcall
641
    mcall
642
 
642
 
643
    call drawimage
643
    call drawimage
644
 
644
 
645
    mov  eax,12 		   ; function 12:tell os about windowdraw
645
    mov  eax,12 		   ; function 12:tell os about windowdraw
646
    mov  ebx,2			   ; 2, end of draw
646
    mov  ebx,2			   ; 2, end of draw
647
    mcall
647
    mcall
648
 
648
 
649
    ret
649
    ret
650
 
650
 
651
 
651
 
652
; DATA AREA
652
; DATA AREA
653
 
653
 
654
labelt:
654
labelt:
655
	 db 'MeView v.0.4'
655
	 db 'MeView v.0.4'
656
 
656
 
657
lsz buttext,\
657
lsz buttext,\
658
    en,   ' FILE   OPEN   INFO   BGRD',\
658
    en,   ' FILE   OPEN   INFO   BGRD',\
659
    ru,   ' ”€‰‹  Ž’Š   ˆ”Ž   ”Ž  ',\
659
    ru,   ' ”€‰‹  Ž’Š   ˆ”Ž   ”Ž  ',\
660
    de,   'DATEI OEFNEN  INFO   HGRD'
660
    de,   'DATEI OEFNEN  INFO   HGRD'
661
 
661
 
662
thread1:			; start of thread1
662
thread1:			; start of thread1
663
 
663
 
664
	  mcall 40, 0x27
664
	  mcall 40, 0x27
665
 
665
 
666
   or  ecx,-1		; get information about me
666
   or  ecx,-1		; get information about me
667
   call getappinfo
667
   call getappinfo
668
 
668
 
669
    mov  esi,string
669
    mov  esi,string
670
@@:
670
@@:
671
    cld
671
    cld
672
    lodsb
672
    lodsb
673
    test al,al
673
    test al,al
674
    jne  @r
674
    jne  @r
675
    sub  esi,string
675
    sub  esi,string
676
    mov  eax,esi
676
    mov  eax,esi
677
    dec  eax
677
    dec  eax
678
    mov edi, edit1
678
    mov edi, edit1
679
    mov ed_size, eax
679
    mov ed_size, eax
680
    mov ed_pos, eax
680
    mov ed_pos, eax
681
red1:
681
red1:
682
    call draw_window1
682
    call draw_window1
683
 
683
 
684
still1:
684
still1:
685
 
685
 
686
    mcall 10		; wait here for event
686
    mcall 10		; wait here for event
687
 
687
 
688
    cmp  eax,1			; redraw request ?
688
    cmp  eax,1			; redraw request ?
689
    je	 red1
689
    je	 red1
690
    cmp  eax,2			; key in buffer ?
690
    cmp  eax,2			; key in buffer ?
691
    je	 key1
691
    je	 key1
692
    cmp  eax,3			; button in buffer ?
692
    cmp  eax,3			; button in buffer ?
693
    je	 button1
693
    je	 button1
694
 
694
 
695
	  mouse_edit_box name_editboxes
695
	  mouse_edit_box name_editboxes
696
    jmp  still1
696
    jmp  still1
697
 
697
 
698
  key1: 			; key
698
  key1: 			; key
699
    mcall 2
699
    mcall 2
700
    cmp ah,13
700
    cmp ah,13
701
    je	close1
701
    je	close1
702
    cmp ah,27
702
    cmp ah,27
703
    je	close1
703
    je	close1
704
 
704
 
705
    key_edit_box name_editboxes
705
    key_edit_box name_editboxes
706
    jmp  still1
706
    jmp  still1
707
 
707
 
708
  button1:			; button
708
  button1:			; button
709
    mov  eax,17 		; get id
709
    mov  eax,17 		; get id
710
    mcall
710
    mcall
711
 
711
 
712
    cmp  ah,1			; button id=1 ?
712
    cmp  ah,1			; button id=1 ?
713
    jne  still1
713
    jne  still1
714
  close1:
714
  close1:
715
    bts  dword [status],2
715
    bts  dword [status],2
716
    btr  dword [status],0
716
    btr  dword [status],0
717
    mov  eax,-1 		; close this program
717
    mov  eax,-1 		; close this program
718
    mcall
718
    mcall
719
 
719
 
720
    jmp  still1
720
    jmp  still1
721
 
721
 
722
;   *********************************************
722
;   *********************************************
723
;   *******  WINDOW DEFINITIONS AND DRAW ********
723
;   *******  WINDOW DEFINITIONS AND DRAW ********
724
;   *********************************************
724
;   *********************************************
725
 
725
 
726
 
726
 
727
draw_window1:
727
draw_window1:
728
 
728
 
729
 
729
 
730
    mov  eax,12 		   ; function 12:tell os about windowdraw
730
    mov  eax,12 		   ; function 12:tell os about windowdraw
731
    mov  ebx,1			   ; 1, start of draw
731
    mov  ebx,1			   ; 1, start of draw
732
    mcall
732
    mcall
733
 
733
 
734
				   ; DRAW WINDOW
734
				   ; DRAW WINDOW
735
    xor  eax,eax		   ; function 0 : define and draw window
735
    xor  eax,eax		   ; function 0 : define and draw window
736
    mov  ebx,100*65536+300	   ; [x start] *65536 + [x size]
736
    mov  ebx,100*65536+300	   ; [x start] *65536 + [x size]
737
    mov  ecx,100*65536+80	   ; [y start] *65536 + [y size]
737
    mov  ecx,100*65536+80	   ; [y start] *65536 + [y size]
738
    mov  edx,0x03780078 	   ; color of work area RRGGBB,8->color gl
738
    mov  edx,0x03780078 	   ; color of work area RRGGBB,8->color gl
739
    mcall
739
    mcall
740
 
740
 
741
				   ; WINDOW LABEL
741
				   ; WINDOW LABEL
742
    mov  eax,4			   ; function 4 : write text to window
742
    mov  eax,4			   ; function 4 : write text to window
743
    mov  ebx,8*65536+8		   ; [x start] *65536 + [y start]
743
    mov  ebx,8*65536+8		   ; [x start] *65536 + [y start]
744
    mov  ecx,0x10ddeeff 	   ; font 1 & color ( 0xF0RRGGBB )
744
    mov  ecx,0x10ddeeff 	   ; font 1 & color ( 0xF0RRGGBB )
745
    mov  edx,labelt1		   ; pointer to text beginning
745
    mov  edx,labelt1		   ; pointer to text beginning
746
    mov  esi,labelt1.size	   ; text length
746
    mov  esi,labelt1.size	   ; text length
747
    mcall
747
    mcall
748
 
748
 
749
;    call drawstring
749
;    call drawstring
750
	draw_edit_box name_editboxes
750
	draw_edit_box name_editboxes
751
 
751
 
752
    mov  eax,12 		   ; function 12:tell os about windowdraw
752
    mov  eax,12 		   ; function 12:tell os about windowdraw
753
    mov  ebx,2			   ; 2, end of draw
753
    mov  ebx,2			   ; 2, end of draw
754
    mcall
754
    mcall
755
 
755
 
756
    ret
756
    ret
757
 
757
 
758
 drawstring:
758
 drawstring:
759
    pusha
759
    pusha
760
    mov  eax,8		   ;invisible button
760
    mov  eax,8		   ;invisible button
761
    mov  ebx,21*65536+258
761
    mov  ebx,21*65536+258
762
    mov  ecx,40*65536+15
762
    mov  ecx,40*65536+15
763
    mov  edx,0x60000002
763
    mov  edx,0x60000002
764
    mcall
764
    mcall
765
 
765
 
766
    mov  eax,13 	    ;bar
766
    mov  eax,13 	    ;bar
767
    mov  edx,0xe0e0e0
767
    mov  edx,0xe0e0e0
768
    mcall
768
    mcall
769
    push eax		    ;cursor
769
    push eax		    ;cursor
770
    mov  eax,6*65536
770
    mov  eax,6*65536
771
    mul  dword [pos]
771
    mul  dword [pos]
772
    add  eax,21*65536+6
772
    add  eax,21*65536+6
773
    mov  ebx,eax
773
    mov  ebx,eax
774
    pop  eax
774
    pop  eax
775
    mov  edx,0x6a73d0
775
    mov  edx,0x6a73d0
776
    mcall
776
    mcall
777
    mov  eax,4		    ;path
777
    mov  eax,4		    ;path
778
    mov  ebx,21*65536+44
778
    mov  ebx,21*65536+44
779
    xor  ecx,ecx
779
    xor  ecx,ecx
780
    mov  edx,string
780
    mov  edx,string
781
    mov  esi,43
781
    mov  esi,43
782
    mcall
782
    mcall
783
 
783
 
784
 
784
 
785
    popa
785
    popa
786
    ret
786
    ret
787
 
787
 
788
; DATA AREA
788
; DATA AREA
789
 
789
 
790
lsz labelt1,\
790
lsz labelt1,\
791
   en,	'File',\
791
   en,	'File',\
792
   ru,	'” ©«',\
792
   ru,	'” ©«',\
793
   de,	'Datei'
793
   de,	'Datei'
794
 
794
 
795
thread2:			  ; start of info thread
795
thread2:			  ; start of info thread
796
 
796
 
797
     call draw_window2
797
     call draw_window2
798
 
798
 
799
still2:
799
still2:
800
 
800
 
801
    mov  eax,10 		; wait here for event
801
    mov  eax,10 		; wait here for event
802
    mcall
802
    mcall
803
 
803
 
804
    cmp  eax,1			; redraw request ?
804
    cmp  eax,1			; redraw request ?
805
    je	 thread2
805
    je	 thread2
806
    cmp  eax,2			; key in buffer ?
806
    cmp  eax,2			; key in buffer ?
807
    je	 close2
807
    je	 close2
808
    cmp  eax,3			; button in buffer ?
808
    cmp  eax,3			; button in buffer ?
809
    je	 button2
809
    je	 button2
810
 
810
 
811
    jmp  still2
811
    jmp  still2
812
 
812
 
813
  button2:			 ; button
813
  button2:			 ; button
814
    mov  eax,17 		; get id
814
    mov  eax,17 		; get id
815
    mcall
815
    mcall
816
 
816
 
817
    cmp  ah,1			; button id=1 ?
817
    cmp  ah,1			; button id=1 ?
818
    jne  noclose2
818
    jne  noclose2
819
  close2:
819
  close2:
820
    btr dword [status],1
820
    btr dword [status],1
821
    bts dword [status],2
821
    bts dword [status],2
822
    mov  eax,-1 		; close this program
822
    mov  eax,-1 		; close this program
823
    mcall
823
    mcall
824
  noclose2:
824
  noclose2:
825
 
825
 
826
    jmp  still2
826
    jmp  still2
827
 
827
 
828
 
828
 
829
 
829
 
830
 
830
 
831
;   *********************************************
831
;   *********************************************
832
;   *******  WINDOW DEFINITIONS AND DRAW ********
832
;   *******  WINDOW DEFINITIONS AND DRAW ********
833
;   *********************************************
833
;   *********************************************
834
 
834
 
835
 
835
 
836
draw_window2:
836
draw_window2:
837
 
837
 
838
 
838
 
839
    mov  eax,12 		   ; function 12:tell os about windowdraw
839
    mov  eax,12 		   ; function 12:tell os about windowdraw
840
    mov  ebx,1			   ; 1, start of draw
840
    mov  ebx,1			   ; 1, start of draw
841
    mcall
841
    mcall
842
 
842
 
843
				   ; DRAW WINDOW
843
				   ; DRAW WINDOW
844
    xor  eax,eax		   ; function 0 : define and draw window
844
    xor  eax,eax		   ; function 0 : define and draw window
845
    mov  ebx,100*65536+330	   ; [x start] *65536 + [x size]
845
    mov  ebx,100*65536+330	   ; [x start] *65536 + [x size]
846
    mov  ecx,100*65536+90	   ; [y start] *65536 + [y size]
846
    mov  ecx,100*65536+90	   ; [y start] *65536 + [y size]
847
    mov  edx,0x03780078 	   ; color of work area RRGGBB,8->color gl
847
    mov  edx,0x03780078 	   ; color of work area RRGGBB,8->color gl
848
    mcall
848
    mcall
849
 
849
 
850
				   ; WINDOW LABEL
850
				   ; WINDOW LABEL
851
    mov  eax,4			   ; function 4 : write text to window
851
    mov  eax,4			   ; function 4 : write text to window
852
    mov  ebx,8*65536+8		   ; [x start] *65536 + [y start]
852
    mov  ebx,8*65536+8		   ; [x start] *65536 + [y start]
853
    mov  ecx,0x10ddeeff 	   ; font 1 & color ( 0xF0RRGGBB )
853
    mov  ecx,0x10ddeeff 	   ; font 1 & color ( 0xF0RRGGBB )
854
    mov  edx,labelt2		   ; pointer to text beginning
854
    mov  edx,labelt2		   ; pointer to text beginning
855
    mov  esi,labelt2.size	   ; text length
855
    mov  esi,labelt2.size	   ; text length
856
    mcall
856
    mcall
857
 
857
 
858
    mov  ebx,10*65536+30
858
    mov  ebx,10*65536+30
859
    mov  edx,string
859
    mov  edx,string
860
    mov  esi,43
860
    mov  esi,43
861
    mcall
861
    mcall
862
    mov  edx,fitext
862
    mov  edx,fitext
863
    mov  esi,14
863
    mov  esi,14
864
    add  ebx,70*65536+10
864
    add  ebx,70*65536+10
865
 followstring:
865
 followstring:
866
    mcall
866
    mcall
867
    add  ebx,10
867
    add  ebx,10
868
    add  edx,esi
868
    add  edx,esi
869
    cmp  ebx,80*65536+70
869
    cmp  ebx,80*65536+70
870
    jbe  followstring
870
    jbe  followstring
871
    mov  eax,47
871
    mov  eax,47
872
    mov  edx,200*65536+40
872
    mov  edx,200*65536+40
873
    mov  esi,ecx
873
    mov  esi,ecx
874
    mov  ecx,[image_file]
874
    mov  ecx,[image_file]
875
    push ecx
875
    push ecx
876
    mov  ecx, [ecx+2]
876
    mov  ecx, [ecx+2]
877
    call digitcorrect
877
    call digitcorrect
878
    mcall
878
    mcall
879
    add  edx,10
879
    add  edx,10
880
    pop  ecx
880
    pop  ecx
881
    push ecx
881
    push ecx
882
    mov  ecx, [ecx+18]
882
    mov  ecx, [ecx+18]
883
    call digitcorrect
883
    call digitcorrect
884
    mcall
884
    mcall
885
    add  edx,10
885
    add  edx,10
886
    pop  ecx
886
    pop  ecx
887
    push ecx
887
    push ecx
888
    mov  ecx, [ecx+22]
888
    mov  ecx, [ecx+22]
889
    call digitcorrect
889
    call digitcorrect
890
    mcall
890
    mcall
891
    add  edx,10
891
    add  edx,10
892
    pop  ecx
892
    pop  ecx
893
    movzx ecx,word [ecx+28]
893
    movzx ecx,word [ecx+28]
894
    call digitcorrect
894
    call digitcorrect
895
    mcall
895
    mcall
896
 
896
 
897
    mov  eax,12 		   ; function 12:tell os about windowdraw
897
    mov  eax,12 		   ; function 12:tell os about windowdraw
898
    mov  ebx,2			   ; 2, end of draw
898
    mov  ebx,2			   ; 2, end of draw
899
    mcall
899
    mcall
900
 
900
 
901
    ret
901
    ret
902
 
902
 
903
 digitcorrect:
903
 digitcorrect:
904
    xor  ebx,ebx
904
    xor  ebx,ebx
905
    mov  bh,6
905
    mov  bh,6
906
    cmp  ecx,99999
906
    cmp  ecx,99999
907
    ja	 c_end
907
    ja	 c_end
908
    dec  bh
908
    dec  bh
909
    cmp  ecx,9999
909
    cmp  ecx,9999
910
    ja	 c_end
910
    ja	 c_end
911
    dec  bh
911
    dec  bh
912
    cmp  ecx,999
912
    cmp  ecx,999
913
    ja	 c_end
913
    ja	 c_end
914
    dec  bh
914
    dec  bh
915
    cmp  ecx,99
915
    cmp  ecx,99
916
    ja	 c_end
916
    ja	 c_end
917
    dec  bh
917
    dec  bh
918
    cmp  ecx,9
918
    cmp  ecx,9
919
    ja	 c_end
919
    ja	 c_end
920
    dec  bh
920
    dec  bh
921
 c_end:
921
 c_end:
922
    bswap ebx
922
    bswap ebx
923
    ret
923
    ret
924
 
924
 
925
 
925
 
926
; DATA AREA
926
; DATA AREA
927
 
927
 
928
lsz labelt2,\
928
lsz labelt2,\
929
    en,   'File info',\
929
    en,   'File info',\
930
    ru,   'ˆ­ä®à¬ æ¨ï ® ä ©«¥',\
930
    ru,   'ˆ­ä®à¬ æ¨ï ® ä ©«¥',\
931
    de,   'Dateiinfo'
931
    de,   'Dateiinfo'
932
 
932
 
933
lsz fitext,\
933
lsz fitext,\
934
     en, 'FILE SIZE     ',\
934
     en, 'FILE SIZE     ',\
935
     en, 'X SIZE        ',\
935
     en, 'X SIZE        ',\
936
     en, 'Y SIZE        ',\
936
     en, 'Y SIZE        ',\
937
     en, 'BITS PER PIXEL',\
937
     en, 'BITS PER PIXEL',\
938
			  \
938
			  \
939
     ru, ' §¬¥à ä ©«   ',\
939
     ru, ' §¬¥à ä ©«   ',\
940
     ru, '˜¨à¨­         ',\
940
     ru, '˜¨à¨­         ',\
941
     ru, '‚ëá®â         ',\
941
     ru, '‚ëá®â         ',\
942
     ru, '¨â ­  ¯¨ªá¥« ',\
942
     ru, '¨â ­  ¯¨ªá¥« ',\
943
			  \
943
			  \
944
     de, 'FATEIGROESSE  ',\
944
     de, 'FATEIGROESSE  ',\
945
     de, 'X GROESSE     ',\
945
     de, 'X GROESSE     ',\
946
     de, 'Y GROESSE     ',\
946
     de, 'Y GROESSE     ',\
947
     de, 'BITS PER PIXEL'
947
     de, 'BITS PER PIXEL'
948
 
948
 
949
thread3:			  ; start of bgrd thread
949
thread3:			  ; start of bgrd thread
950
 
950
 
951
     call draw_window3
951
     call draw_window3
952
 
952
 
953
still3:
953
still3:
954
 
954
 
955
    mov  eax,10 		; wait here for event
955
    mov  eax,10 		; wait here for event
956
    mcall
956
    mcall
957
 
957
 
958
    cmp  eax,1			; redraw request ?
958
    cmp  eax,1			; redraw request ?
959
    je	 thread3
959
    je	 thread3
960
    cmp  eax,2			; key in buffer ?
960
    cmp  eax,2			; key in buffer ?
961
    je	 key3
961
    je	 key3
962
    cmp  eax,3			; button in buffer ?
962
    cmp  eax,3			; button in buffer ?
963
    je	 button3
963
    je	 button3
964
 
964
 
965
    jmp  still3
965
    jmp  still3
966
 
966
 
967
  key3:
967
  key3:
968
    mcall
968
    mcall
969
    cmp  ah,27
969
    cmp  ah,27
970
    je	 close3
970
    je	 close3
971
    cmp  ah,13
971
    cmp  ah,13
972
    je	 kok
972
    je	 kok
973
    cmp  ah,178 ;up
973
    cmp  ah,178 ;up
974
    jne  nofup
974
    jne  nofup
975
    cmp  dword [bgrmode],1
975
    cmp  dword [bgrmode],1
976
    je	 fdn
976
    je	 fdn
977
  fup:
977
  fup:
978
    dec dword [bgrmode]
978
    dec dword [bgrmode]
979
    jmp  flagcont
979
    jmp  flagcont
980
  nofup:
980
  nofup:
981
    cmp  ah,177 ;down
981
    cmp  ah,177 ;down
982
    jne  still3
982
    jne  still3
983
    cmp dword [bgrmode],2
983
    cmp dword [bgrmode],2
984
    je	 fup
984
    je	 fup
985
  fdn:
985
  fdn:
986
    inc dword [bgrmode]
986
    inc dword [bgrmode]
987
    jmp  flagcont
987
    jmp  flagcont
988
 
988
 
989
 
989
 
990
  button3:			 ; button
990
  button3:			 ; button
991
    mov  eax,17 		; get id
991
    mov  eax,17 		; get id
992
    mcall
992
    mcall
993
 
993
 
994
    cmp  ah,1			; button id=1 ?
994
    cmp  ah,1			; button id=1 ?
995
    jne  noclose3
995
    jne  noclose3
996
  close3:
996
  close3:
997
    btr dword [status],3
997
    btr dword [status],3
998
    bts dword [status],2
998
    bts dword [status],2
999
    mov  eax,-1 		; close this program
999
    mov  eax,-1 		; close this program
1000
    mcall
1000
    mcall
1001
  noclose3:
1001
  noclose3:
1002
    cmp  ah,4
1002
    cmp  ah,4
1003
    jne  nook
1003
    jne  nook
1004
   kok:
1004
   kok:
1005
    call background
1005
    call background
1006
    jmp  close3
1006
    jmp  close3
1007
  nook:
1007
  nook:
1008
    cmp  ah,2
1008
    cmp  ah,2
1009
    jb	 still3
1009
    jb	 still3
1010
    cmp  ah,3
1010
    cmp  ah,3
1011
    ja	 still3
1011
    ja	 still3
1012
    dec  ah
1012
    dec  ah
1013
    mov byte [bgrmode],ah
1013
    mov byte [bgrmode],ah
1014
   flagcont:
1014
   flagcont:
1015
    call drawflags
1015
    call drawflags
1016
    jmp  still3
1016
    jmp  still3
1017
 
1017
 
1018
 
1018
 
1019
 
1019
 
1020
 
1020
 
1021
;   *********************************************
1021
;   *********************************************
1022
;   *******  WINDOW DEFINITIONS AND DRAW ********
1022
;   *******  WINDOW DEFINITIONS AND DRAW ********
1023
;   *********************************************
1023
;   *********************************************
1024
 
1024
 
1025
 
1025
 
1026
draw_window3:
1026
draw_window3:
1027
 
1027
 
1028
 
1028
 
1029
    mov  eax,12 		   ; function 12:tell os about windowdraw
1029
    mov  eax,12 		   ; function 12:tell os about windowdraw
1030
    mov  ebx,1			   ; 1, start of draw
1030
    mov  ebx,1			   ; 1, start of draw
1031
    mcall
1031
    mcall
1032
 
1032
 
1033
				   ; DRAW WINDOW
1033
				   ; DRAW WINDOW
1034
    xor  eax,eax		   ; function 0 : define and draw window
1034
    xor  eax,eax		   ; function 0 : define and draw window
1035
    mov  ebx,100*65536+200	   ; [x start] *65536 + [x size]
1035
    mov  ebx,100*65536+200	   ; [x start] *65536 + [x size]
1036
    mov  ecx,100*65536+100	   ; [y start] *65536 + [y size]
1036
    mov  ecx,100*65536+100	   ; [y start] *65536 + [y size]
1037
    mov  edx,0x03780078 	   ; color of work area RRGGBB,8->color gl
1037
    mov  edx,0x03780078 	   ; color of work area RRGGBB,8->color gl
1038
    mcall
1038
    mcall
1039
 
1039
 
1040
    mov  eax,8
1040
    mov  eax,8
1041
    mov  ebx,70*65536+40
1041
    mov  ebx,70*65536+40
1042
    mov  ecx,70*65536+20
1042
    mov  ecx,70*65536+20
1043
    mov  edx,4
1043
    mov  edx,4
1044
    mov  esi,0xac0000
1044
    mov  esi,0xac0000
1045
    mcall
1045
    mcall
1046
 
1046
 
1047
				   ; WINDOW LABEL
1047
				   ; WINDOW LABEL
1048
    mov  eax,4			   ; function 4 : write text to window
1048
    mov  eax,4			   ; function 4 : write text to window
1049
    mov  ebx,8*65536+8		   ; [x start] *65536 + [y start]
1049
    mov  ebx,8*65536+8		   ; [x start] *65536 + [y start]
1050
    mov  ecx,0x10ddeeff 	   ; font 1 & color ( 0xF0RRGGBB )
1050
    mov  ecx,0x10ddeeff 	   ; font 1 & color ( 0xF0RRGGBB )
1051
    mov  edx,labelt3		   ; pointer to text beginning
1051
    mov  edx,labelt3		   ; pointer to text beginning
1052
    mov  esi,labelt3.size	   ; text length
1052
    mov  esi,labelt3.size	   ; text length
1053
    mcall
1053
    mcall
1054
    add  ebx,38*65536+20
1054
    add  ebx,38*65536+20
1055
    mov  ecx,0xddeeff
1055
    mov  ecx,0xddeeff
1056
    mov  edx, bgrdtext
1056
    mov  edx, bgrdtext
1057
    mov  esi, bgrdtext.size
1057
    mov  esi, bgrdtext.size
1058
    mcall
1058
    mcall
1059
    add  ebx,40*65536+15
1059
    add  ebx,40*65536+15
1060
    mov  edx, tiled
1060
    mov  edx, tiled
1061
    mov  esi, tiled.size
1061
    mov  esi, tiled.size
1062
    mcall
1062
    mcall
1063
    add  ebx,15
1063
    add  ebx,15
1064
    mov  edx, stretch
1064
    mov  edx, stretch
1065
    mov  esi, stretch.size ;7
1065
    mov  esi, stretch.size ;7
1066
    mcall
1066
    mcall
1067
    add  ebx,18
1067
    add  ebx,18
1068
    mov  edx, ok_btn
1068
    mov  edx, ok_btn
1069
    mov  esi, ok_btn.size ;2
1069
    mov  esi, ok_btn.size ;2
1070
    mcall
1070
    mcall
1071
 
1071
 
1072
    call drawflags
1072
    call drawflags
1073
 
1073
 
1074
    mov  eax,12 		   ; function 12:tell os about windowdraw
1074
    mov  eax,12 		   ; function 12:tell os about windowdraw
1075
    mov  ebx,2			   ; 2, end of draw
1075
    mov  ebx,2			   ; 2, end of draw
1076
    mcall
1076
    mcall
1077
 
1077
 
1078
    ret
1078
    ret
1079
 
1079
 
1080
 drawflags:
1080
 drawflags:
1081
    mov  eax,8
1081
    mov  eax,8
1082
    mov  ebx,70*65536+10
1082
    mov  ebx,70*65536+10
1083
    mov  ecx,40*65536+10
1083
    mov  ecx,40*65536+10
1084
    mov  edx,2
1084
    mov  edx,2
1085
    mov  esi,0xe0e0e0
1085
    mov  esi,0xe0e0e0
1086
    mcall
1086
    mcall
1087
    add  ecx,15*65536
1087
    add  ecx,15*65536
1088
    inc  edx
1088
    inc  edx
1089
    mcall
1089
    mcall
1090
    mov  eax,4
1090
    mov  eax,4
1091
    mov  ebx,73*65536+42
1091
    mov  ebx,73*65536+42
1092
    xor  ecx,ecx
1092
    xor  ecx,ecx
1093
    mov  edx,vflag
1093
    mov  edx,vflag
1094
    mov  esi,1
1094
    mov  esi,1
1095
    cmp  dword [bgrmode],1
1095
    cmp  dword [bgrmode],1
1096
    je	 nodownflag
1096
    je	 nodownflag
1097
    add  ebx,15
1097
    add  ebx,15
1098
 nodownflag:
1098
 nodownflag:
1099
    mcall
1099
    mcall
1100
    ret
1100
    ret
1101
 
1101
 
1102
 
1102
 
1103
; DATA AREA
1103
; DATA AREA
1104
status	 dd 0  ;bit0=1 if file thread is created
1104
status	 dd 0  ;bit0=1 if file thread is created
1105
soi	 dd 0
1105
soi	 dd 0
1106
delta	dd	0
1106
delta	dd	0
1107
process  dd 0
1107
process  dd 0
1108
 
1108
 
1109
bWasDraw db 0
1109
bWasDraw db 0
1110
vflag: db 'x'
1110
vflag: db 'x'
1111
bgrmode: dd 1
1111
bgrmode: dd 1
1112
 
1112
 
1113
wnd_width dd 210
1113
wnd_width dd 210
1114
wnd_height dd 53
1114
wnd_height dd 53
1115
 
1115
 
1116
lsz labelt3,\
1116
lsz labelt3,\
1117
    en,   'Background set',\
1117
    en,   'Background set',\
1118
    ru,   "“áâ ­®¢ª  ä®­ ",\
1118
    ru,   "“áâ ­®¢ª  ä®­ ",\
1119
    de,   'Hintergrund gesetzt'
1119
    de,   'Hintergrund gesetzt'
1120
 
1120
 
1121
lsz bgrdtext,\
1121
lsz bgrdtext,\
1122
    en, 'SET AS BACKGROUND:',\
1122
    en, 'SET AS BACKGROUND:',\
1123
    ru, '’¨¯ ®¡®¥¢:',\
1123
    ru, '’¨¯ ®¡®¥¢:',\
1124
    de, 'ALS HINTERGRUND'
1124
    de, 'ALS HINTERGRUND'
1125
 
1125
 
1126
lsz tiled,\
1126
lsz tiled,\
1127
    en, 'TILED',\
1127
    en, 'TILED',\
1128
    ru, '§ ¬®áâ¨âì',\
1128
    ru, '§ ¬®áâ¨âì',\
1129
    de, 'GEKACHELT'
1129
    de, 'GEKACHELT'
1130
 
1130
 
1131
lsz stretch,\
1131
lsz stretch,\
1132
    en, 'STRETCH',\
1132
    en, 'STRETCH',\
1133
    ru, 'à áâï­ãâì',\
1133
    ru, 'à áâï­ãâì',\
1134
    de, 'GESTRECKT'
1134
    de, 'GESTRECKT'
1135
 
1135
 
1136
lsz ok_btn,\
1136
lsz ok_btn,\
1137
    en, 'Ok',\
1137
    en, 'Ok',\
1138
    ru, 'Ok',\
1138
    ru, 'Ok',\
1139
    de, 'Ok'
1139
    de, 'Ok'
1140
 
1140
 
1141
image_file dd 0
1141
image_file dd 0
1142
image_file_1 dd 0
1142
image_file_1 dd 0
1143
 
1143
 
1144
pos: dd 6
1144
pos: dd 6
1145
 
1145
 
1146
window_high dd 0
1146
window_high dd 0
1147
window_width dd 0
1147
window_width dd 0
1148
skin_high dd 0
1148
skin_high dd 0
1149
;---------------------------------------------------------------------
1149
;---------------------------------------------------------------------
1150
; for EDITBOX
1150
; for EDITBOX
1151
name_editboxes:
1151
name_editboxes:
1152
edit1 edit_box 200,10,30,0xffffff,0xbbddff,0,0,0,255,string,ed_focus+ed_always_focus,0
1152
edit1 edit_box 200,10,30,0xffffff,0xbbddff,0,0,0,255,string,ed_focus+ed_always_focus,0
1153
name_editboxes_end:
1153
name_editboxes_end:
1154
 
1154
 
1155
mouse_flag: dd 0x0
1155
mouse_flag: dd 0x0
1156
;---------------------------------------------------------------------
1156
;---------------------------------------------------------------------
1157
fileinfo:
1157
fileinfo:
1158
     dd 5
1158
     dd 5
1159
     dd 0
1159
     dd 0
1160
     dd 0
1160
     dd 0
1161
     dd 0
1161
     dd 0
1162
     dd process_info
1162
     dd process_info
1163
string:
1163
string:
1164
	db	'/sys/bgr.bmp',0
1164
	db	'/sys/bgr.bmp',0
1165
 
1165
 
1166
IM_END:
1166
IM_END:
1167
	rb	string+257-$
1167
	rb	string+257-$
1168
 
1168
 
1169
temp_area:
1169
temp_area:
1170
procinfo:
1170
procinfo:
1171
process_info:
1171
process_info:
1172
rb 1024*4
1172
rb 1024*4
1173
rb 1024*2
1173
rb 1024*2
1174
thread:
1174
thread:
1175
rb 512
1175
rb 512
1176
I_END:
1176
I_END: