Subversion Repositories Kolibri OS

Rev

Rev 552 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
31 halyavin 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;                                              ;
3
;   SYSTEM X-TREE BROWSER                      ;
4
;                                              ;
5
;   Author: Pavlushin Evgeni waptap@mail.ru    ;
6
;                   site: www.deck4.narod.ru   ;
7
;                                              ;
8
;   Compile with FASM for MenuetOS             ;
9
;                                              ;
10
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
11
 
12
;Bug report +bug deleted  -bug not deleted
13
;show/fade del notwork+
14
;64Ver Run file from HD bug deleted.
15
;65Ver The bad scroll realization
16
;66Ver The good scroll realization, url line anti-flick
17
;67Ver Url line monolith procedure
18
;68Ver Mini icon on left of file name
19
;69Ver Getimg proc size minus 900 bytes
20
;70Ver Del data area ramsize minus 140000 bytes
21
;72Ver Quick sort, ramsize minus 200000 bytes
22
;73Ver Url flick and out bugs delete
23
;74Ver scroll bug deleted
24
;75Ver hd partition fast change button. Add bmp,txt,exec,asm and inc icons.
25
; sort type in headmenu bug del
26
;78Ver directory extension bug fix by Asko Vuori
27
;79Ver Asko Vuori volume label add and "put in command line" bug fix
28
;80Ver prompt edit fatal bug deleted, antiflick when move list up/down
29
;81Ver Save Dialog bug deleted
134 diamond 30
;82Ver Rewritten to function 70. Corrected work with scrollbar.
156 diamond 31
;83Ver CD-ROM support
32
;84Ver URL line editor corrected
134 diamond 33
;1560000 bytes memory!
31 halyavin 34
 
35
;******************************************************************************
36
  use32
131 diamond 37
  org	   0x0
38
  db	 'MENUET01'   ; 8 byte id
39
  dd	 0x01		; header version
40
  dd	 START	      ; program start
41
  dd	 I_END	      ; program image size
42
  dd	 RAM_END      ; memory
43
  dd	 RAM_END      ; stack
44
  dd	 param_area ,0x0   ; param,icon
31 halyavin 45
;  dd 0,0
46
 
47
;******************************************************************************
993 Ataualpa 48
include 'macros.inc'
31 halyavin 49
include 'ascl.inc'
50
include 'ascgl.inc'
131 diamond 51
 
52
START:		    ; start of execution
31 halyavin 53
; //// Willow
131 diamond 54
;    mov eax,58
55
;    mov ebx,MRUfile
485 heavyiron 56
;    mcall
31 halyavin 57
; //// Willow
131 diamond 58
    mcall 18,11,1,table_area
134 diamond 59
    cmp [edx+2],byte 0
131 diamond 60
    je	  no_hdpartition_on_hd0
134 diamond 61
    mov [hdimg1], aHD0
131 diamond 62
 no_hdpartition_on_hd0:
134 diamond 63
    cmp [edx+3],byte 0
131 diamond 64
    je	  no_hdpartition_on_hd1
134 diamond 65
    mov [hdimg2], aHD1
131 diamond 66
 no_hdpartition_on_hd1:
134 diamond 67
    cmp [edx+4],byte 0
131 diamond 68
    je	  no_hdpartition_on_hd2
134 diamond 69
    mov [hdimg3], aHD2
131 diamond 70
 no_hdpartition_on_hd2:
134 diamond 71
    cmp [edx+5],byte 0
131 diamond 72
    je	  no_hdpartition_on_hd3
134 diamond 73
    mov [hdimg4], aHD3
131 diamond 74
 no_hdpartition_on_hd3:
993 Ataualpa 75
	test	byte [edx+1], 80h
76
	jz	@f
77
	mov	[hdimg1], aCD0
78
	mov	[hdimg1+4], 'CD-R'
79
	mov	[hdimg1+8], 'OM  '
156 diamond 80
@@:
993 Ataualpa 81
	test	byte [edx+1], 20h
82
	jz	@f
83
	mov	[hdimg2], aCD1
84
	mov	[hdimg2+4], 'CD-R'
85
	mov	[hdimg2+8], 'OM  '
156 diamond 86
@@:
993 Ataualpa 87
	test	byte [edx+1], 8
88
	jz	@f
89
	mov	[hdimg3], aCD2
90
	mov	[hdimg3+4], 'CD-R'
91
	mov	[hdimg3+8], 'OM  '
156 diamond 92
@@:
993 Ataualpa 93
	test	byte [edx+1], 2
94
	jz	@f
95
	mov	[hdimg4], aCD3
96
	mov	[hdimg4+4], 'CD-R'
97
	mov	[hdimg4+8], 'OM  '
156 diamond 98
@@:
31 halyavin 99
 
100
    mov eax,40
101
    mov ebx,0100111b
485 heavyiron 102
    mcall
31 halyavin 103
 
104
    cmp byte [param_area],0 ;test parameters line
131 diamond 105
    jne no_brow     ;it's dialog
134 diamond 106
    mov [browser], 1   ;it's browser
107
    jmp no_dlg
31 halyavin 108
no_brow:
109
 
110
    mov al,byte [param_area+5]
111
    mov [dlg_type],al
112
 
113
    mov eax,9
114
    mov ebx,procinfo
115
    mov ecx,-1
485 heavyiron 116
    mcall
31 halyavin 117
 
118
    mov eax,dword [procinfo+30]
119
    mov edi,MYPID+4-1
120
    mov ecx,4
121
    mov ebx,10
122
    cld
123
 
124
new_d:
125
    xor edx,edx
126
    div ebx
127
    add dl,'0'
128
    mov [edi],dl
129
    dec edi
130
    loop new_d
131
 
132
    movzx eax,byte [param_area]
133
    sub eax,48
134
    imul eax,10
135
    movzx ebx,byte [param_area+1]
136
    add eax,ebx
137
    sub eax,48
138
    imul eax,10
139
    movzx ebx,byte [param_area+2]
140
    add eax,ebx
141
    sub eax,48
142
    imul eax,10
143
    movzx ebx,byte [param_area+3]
144
    add eax,ebx
145
    sub eax,48
146
 
147
    mov ecx,eax ;pid to ecx
148
    mov eax,60
149
    mov ebx,2
150
    mov edx,MYPID
151
    mov esi,4
485 heavyiron 152
    mcall
31 halyavin 153
no_dlg:
154
 
155
    giftoimg but_file,tempimg
156
 
157
;************************
158
;      Get images
159
;************************
160
 
161
    mov eax,0  ;x
131 diamond 162
    mov ebx,0	    ;y
31 halyavin 163
    mov esi,286     ;xs
131 diamond 164
    mov edi,16		;ys
31 halyavin 165
    mov ecx,tempimg ;src
166
    mov edx,butimg   ;dest
167
    call getimgproc
168
    mov eax,288
169
    mov esi,60
170
    mov edx,logoimg  ;dest
171
    call getimgproc
172
    mov eax,0  ;x
131 diamond 173
    mov ebx,16	       ;y
174
    mov esi,51	       ;xs
31 halyavin 175
    mov edi,esi      ;ys
131 diamond 176
    mov edx,logoinfimg	     ;dest
31 halyavin 177
    call getimgproc
131 diamond 178
    mov eax,51	    ;x
179
    mov esi,8	    ;xs
180
    mov edi,9	     ;ys
31 halyavin 181
    mov edx,upsb   ;dest
182
    call getimgproc
183
    mov eax,51+8  ;x
184
    mov edx,dnsb   ;dest
185
    call getimgproc
186
 
187
    mov eax,51+16  ;x
131 diamond 188
    mov ebx,16	       ;y
189
    mov esi,12	       ;xs
190
    mov edi,9	     ;ys
31 halyavin 191
 
192
    mov ecx,tempimg ;src
193
    mov edx,hdico   ;dest
156 diamond 194
    mov ebp,10
31 halyavin 195
loogetimg:
196
    call getimgproc
197
    add edx,9*12*3+8
198
    add eax,12
199
    dec ebp
200
    jnz loogetimg
201
 
202
    call read_directory
203
;    call convertation
204
red:
131 diamond 205
    call draw_window	    ; at first, draw the window
31 halyavin 206
 
207
still:
208
    mov eax,9
209
    mov ebx,procinfo
210
    mov ecx,-1
485 heavyiron 211
    mcall
31 halyavin 212
 
213
    wtevent red,key,button
214
 
215
scrolltest:
216
    mov eax,37
217
    mov ebx,2
485 heavyiron 218
    mcall
134 diamond 219
    dec eax
31 halyavin 220
    jne still
221
 
222
scrl:
223
    mov eax,37
224
    mov ebx,1
485 heavyiron 225
    mcall
993 Ataualpa 226
	movzx	ebx, ax 	; y
227
	shr	eax, 16 	; x
31 halyavin 228
    mov ebp,eax
502 heavyiron 229
    sub ebp,[listx] ;[procinfo.box.width]
31 halyavin 230
    sub ebp,[listxsize]
231
    add ebp,[scrollsize]
232
    cmp ebp,dword [scrollsize] ;8
134 diamond 233
    jae menu_test ; still
31 halyavin 234
 
993 Ataualpa 235
	lea	ebp, [ebx-scrollbutsize]
236
	sub	ebp, [listy]	; up scroll
237
	jl	menu_test
238
	mov	ecx, [listysize]
239
	sub	ecx, 2*scrollbutsize
240
	mov	eax, [scroll_height]
241
	cmp	ebp, ecx
242
	jge	menu_test
243
	sub	ecx, eax
244
	shr	eax, 1
245
	sub	ebp, eax
246
	jge	@f
247
	xor	ebp, ebp
134 diamond 248
@@:
993 Ataualpa 249
	cmp	ebp, ecx
250
	jl	@f
251
	mov	ebp, ecx
134 diamond 252
@@:
993 Ataualpa 253
	xor	edx, edx
254
	mov	eax, [listysize]
255
	sub	eax, 2
256
	mov	ebx, 10
257
	div	ebx
258
	mov	ebx, eax
259
	cmp	ebx, [listsize]
260
	jae	notusescrl
261
	mov	eax, [listsize]
262
	sub	eax, ebx
263
	mul	ebp
264
	div	ecx
265
	cmp	eax, [filecursor]
266
	jz	still
267
	mov	[filecursor], eax
268
	jmp	usescrl
31 halyavin 269
notusescrl:
993 Ataualpa 270
	cmp	[filecursor], 0
271
	jz	still
31 halyavin 272
    mov [filecursor],0 ;ebp
273
usescrl:
274
 
275
    mov [flick],1
276
    jmp anti_flick ;red
277
 
278
menu_test:
279
    cmp [pmenu_draw],1 ;if menu is show, update all
280
    jne still
281
    mov [pmenu_draw],0
131 diamond 282
    jmp red	     ;update all window
31 halyavin 283
 
284
;this function not use in dialog when poup menu's is not used
285
;in dialog's
286
 
287
;===================
288
; Test keyboard
289
;===================
131 diamond 290
key:		  ; key
31 halyavin 291
    mov  eax,2
485 heavyiron 292
    mcall
31 halyavin 293
    cmp dword [focus],0
294
    jne con_edit
295
    cmp  ah,key_Up
296
    jne  no_upk
297
    mov  ebx,1
298
    jmp  up
299
no_upk:
300
    cmp  ah,key_Down
301
    jne  no_downk
302
    mov  ebx,1
303
    jmp  down
304
no_downk:
305
    cmp  ah,key_PgUp
306
    jne  no_pgup
307
    mov  ebx,10
308
    jmp  up
309
no_pgup:
310
    cmp  ah,key_PgDown
311
    jne  no_pgdown
312
    mov  ebx,10
313
    jmp  down
314
no_pgdown:
315
    cmp  ah,key_Enter
993 Ataualpa 316
    je	 kfad
31 halyavin 317
    cmp  ah,key_Bspace
131 diamond 318
    je	     back
31 halyavin 319
    cmp  ah,key_F2
131 diamond 320
    je	     viewset
31 halyavin 321
    cmp  ah,key_F3
131 diamond 322
    je	     textopen
31 halyavin 323
    cmp  ah,key_F5
131 diamond 324
    je	     copy_to_clip
31 halyavin 325
    cmp  ah,key_F6
131 diamond 326
    je	     paste_from_clip
31 halyavin 327
    cmp  ah,key_F11
131 diamond 328
    je	     edit_prompt
31 halyavin 329
    cmp  ah,key_F12
131 diamond 330
    je	     update
31 halyavin 331
    jmp  still
332
 
333
; test input string
334
con_edit:
335
    cmp  ah,key_Enter
336
    jne  no_con_ent
337
    not  [focus]
338
    jmp  savetest
134 diamond 339
;    jmp  update
31 halyavin 340
no_con_ent:
341
    cmp  ah,key_Left
342
    jne  no_con_left
993 Ataualpa 343
	cmp	[cursor], 0
344
	jz	still
31 halyavin 345
    dec  [cursor]
346
    mov  [flick],2
347
    jmp  anti_flick ;red
348
no_con_left:
349
    cmp  ah,key_Right
350
    jne  no_con_right
993 Ataualpa 351
	mov	eax, [cursor]
352
	cmp	byte [path+eax], 0
353
	jz	still
31 halyavin 354
    inc  [cursor]
355
    mov  [flick],2
356
    jmp  anti_flick ;red
357
no_con_right:
358
    cmp  ah,key_Bspace
359
    jne  no_con_bspace
360
 
993 Ataualpa 361
	mov	ebp, [cursor]
362
	test	ebp, ebp
363
	jz	still
31 halyavin 364
lobsp:
365
    mov  bl,byte [path+ebp]
366
    mov  byte [path+ebp-1],bl
367
    inc  ebp
134 diamond 368
    cmp  ebp,1024
31 halyavin 369
    jne  lobsp
370
    dec  [cursor]
371
    mov  [flick],2
372
    jmp  anti_flick ;red
373
no_con_bspace:
374
 
375
    mov  ecx,[cursor]
134 diamond 376
    mov  ebp,1022
993 Ataualpa 377
	cmp	byte [path+ebp], 0
378
	jnz	still
31 halyavin 379
losx:
993 Ataualpa 380
	cmp	ebp, ecx
381
	jbe	@f
31 halyavin 382
    mov  bl,byte [path+ebp]
383
    mov  byte [path+ebp+1],bl
384
    dec  ebp
134 diamond 385
    jmp  losx
386
@@:
31 halyavin 387
 
388
    mov  byte [path+ebp],ah
389
    inc  dword [cursor]
390
 
391
    mov  [flick],2
392
    jmp  anti_flick
393
 
394
 
395
;----------------------------
396
;Test on mouse button
397
;-----------------------------
398
 
131 diamond 399
  button:	  ; button
31 halyavin 400
    mov eax,17
485 heavyiron 401
    mcall
31 halyavin 402
 
131 diamond 403
    cmp ah,2	       ;Edit prompt line?
404
    je	    edit_prompt
31 halyavin 405
 
406
    cmp ah,4
407
    jne no_filelist
408
 
409
mousetest:
410
    mov eax,37
411
    mov ebx,1
485 heavyiron 412
    mcall
31 halyavin 413
    mov ebx,eax
131 diamond 414
    shr eax,16		 ;x
31 halyavin 415
    and ebx,0xffff   ;y
416
 
417
    sub ebx,[listy] ;80
418
    mov [mousey],ebx
419
 
420
    mov ecx,[listx]
421
    cmp eax,ecx
131 diamond 422
    jl	    still
31 halyavin 423
    add ecx,[listxsize]
424
    cmp eax,ecx
131 diamond 425
    jg	    still
31 halyavin 426
 
427
filexadd:
428
 
429
; Enter in directory
430
file_add:
431
    mov edx,0  ;for div correct work div
432
    mov eax,dword [mousey]
433
    mov ebx,10
434
    div ebx
435
 
436
    add eax,[filecursor]
437
    jmp no_kfad
438
kfad:
439
    mov eax,[filecursor]
440
no_kfad:
134 diamond 441
    mov ebx,27
31 halyavin 442
    mul ebx
134 diamond 443
    lea ebp,[convinfo+eax]
444
    mov esi,[ebp]
445
    cmp esi,-1
993 Ataualpa 446
    jz	still
31 halyavin 447
 
448
    mov edi,paramtest ;clear param string
134 diamond 449
    mov ecx,1024/4
450
    xor eax,eax
451
    rep stosd
31 halyavin 452
 
993 Ataualpa 453
	mov	edi, path
454
	mov	ecx, 1024
455
	repnz	scasb
456
	dec	edi
457
	cmp	[ebp+15], dword 'FOL '
458
	jnz	openf
134 diamond 459
; open directory - append its name to path
993 Ataualpa 460
	cmp	ecx, 2
461
	jb	still
462
	push	edi
463
	mov	al, '/'
464
	stosb
465
	dec	ecx
134 diamond 466
@@:
993 Ataualpa 467
	lodsb
468
	stosb
469
	test	al, al
470
	jz	@f
471
	dec	ecx
472
	jnz	@b
134 diamond 473
; name is too long - do not do anything
993 Ataualpa 474
	pop	edi
475
	xor	eax, eax
476
	mov	ecx, path+1024
477
	sub	ecx, edi
478
	rep	stosb
479
	jmp	still
134 diamond 480
@@:
993 Ataualpa 481
	sub	edi, path+1
482
	mov	[cursor], edi
483
	pop	edi
134 diamond 484
; name appended, now read new directory
31 halyavin 485
    mov [filecursor],0
486
 
487
    call read_directory
488
;;    call convertation
489
    call draw_window
134 diamond 490
    jmp still
31 halyavin 491
 
492
;Savetest
493
savetest:
494
    cmp byte [dlg_type],'S'
134 diamond 495
    jne still
496
; always force open file - this is better
497
; because there exists files without extension and folders with extension
993 Ataualpa 498
	jmp	openf
134 diamond 499
;    mov ecx,100
500
;savetestloop:
501
;    cmp [path+ecx],byte 0
993 Ataualpa 502
;    je     next_byte
134 diamond 503
;    cmp [path+ecx],byte 32
993 Ataualpa 504
;    je     next_byte
134 diamond 505
;    cmp [path+ecx],byte '.'
993 Ataualpa 506
;    je     openf  ;it's file
134 diamond 507
;;    cmp [path+ecx],byte '/'
508
;;    je  no_save  ;it's dir
509
;next_byte:
510
;    dec ecx
511
;    jnz savetestloop
512
;    jmp still
31 halyavin 513
 
514
;Open/Run file
515
 
516
openf:
993 Ataualpa 517
	push	esi edi
518
	mov	esi, path
519
	mov	edi, paramtest
520
	mov	ecx, 1024/4
521
	rep	movsd
522
	pop	edi esi
523
	add	edi, paramtest-path
31 halyavin 524
 
525
    cmp dword [focus],0 ;if prompt line with focus no add file name from frame
526
    jne file_set
527
 
993 Ataualpa 528
	cmp	edi, paramtest+1022
529
	jae	still
530
	mov	al, '/'
531
	stosb
134 diamond 532
@@:
993 Ataualpa 533
	lodsb
534
	stosb
535
	test	al, al
536
	jz	file_set
537
	cmp	edi, paramtest+1024
538
	jb	@b
539
	jmp	still
134 diamond 540
 
31 halyavin 541
file_set:
542
 
543
    cmp [browser],0
544
    jne is_brow
545
 
546
    movzx eax,byte [param_area]
547
    sub eax,48
548
    imul eax,10
549
    movzx ebx,byte [param_area+1]
550
    add eax,ebx
551
    sub eax,48
552
    imul eax,10
553
    movzx ebx,byte [param_area+2]
554
    add eax,ebx
555
    sub eax,48
556
    imul eax,10
557
    movzx ebx,byte [param_area+3]
558
    add eax,ebx
559
    sub eax,48
560
 
561
    mov ecx,eax ;pid to ecx
562
    mov eax,60
563
    mov ebx,2
564
    mov edx,paramtest
134 diamond 565
    mov esi,1024
485 heavyiron 566
    mcall
31 halyavin 567
 
568
    jmp exit
569
 
570
is_brow:
571
 
572
;    cmp [convinfo+edi+26],dword 'Fvol'
573
;    je  edit
574
 
134 diamond 575
; find extension
993 Ataualpa 576
	mov	eax, paramtest+1023
134 diamond 577
@@:
993 Ataualpa 578
	dec	eax
579
	cmp	byte [eax+1], 0
580
	jz	@b
134 diamond 581
@@:
993 Ataualpa 582
	cmp	byte [eax], '/'
583
	jz	.noext
584
	cmp	byte [eax], '.'
585
	jz	.ext
586
	dec	eax
587
	cmp	eax, paramtest
588
	jae	@b
134 diamond 589
.noext:
590
; file has no extension
591
;        xor     ebx, ebx
993 Ataualpa 592
	jmp	execute
134 diamond 593
.ext:
993 Ataualpa 594
	inc	eax
134 diamond 595
; eax points to extension
993 Ataualpa 596
	cmp	byte [eax], 0
597
	jz	.noext
598
	mov	ecx, dword [eax]
599
	and	ecx, not 0x20202020
600
	mov	ebx, jpgview
601
	cmp	ecx, 'JPG'
602
	jz	run
603
	cmp	ecx, 'JPEG'	; note that it will select also *.JPEG*
604
	jz	run
605
	mov	ebx, bmpview
606
	cmp	ecx, 'GIF'
607
	jz	run
608
	mov	ebx, ac97
609
	cmp	ecx, 'WAV'
610
	jz	run
611
	cmp	ecx, 'MP3'
612
	jz	run
613
	cmp	ecx, 'XM'
614
	jz	run
615
	mov	ebx, midamp
616
	cmp	ecx, 'MID'
617
	jz	run
618
	mov	ebx, htmlv
619
	cmp	ecx, 'HTM'
620
	jz	run
621
	mov	ebx, bmpview
622
	cmp	ecx, 'BMP'
623
	jz	run
31 halyavin 624
; //// Willow
993 Ataualpa 625
	mov	ebx, pngview
626
	cmp	ecx, 'PNG'
627
	jz	run
31 halyavin 628
; //// Willow
993 Ataualpa 629
	mov	ebx, rtfread
630
	cmp	ecx, 'RTF'
631
	jz	run
632
	mov	ebx, editor
633
	cmp	ecx, 'ASM'
634
	jz	run
635
	cmp	ecx, 'TXT'
636
	jz	run
637
	cmp	ecx, 'INC'
638
	jz	run
639
	cmp	ecx, 'INI'
640
	jz	run
641
	cmp	ecx, 'LOG'
642
	jz	run
643
	cmp	ecx, 'CONF'
644
	jz	run
645
	mov	ebx, life2
646
	cmp	ecx, 'LIF'
647
	jz	run
648
	mov	ebx, view3ds
649
	cmp	ecx, '3DS' and not 0x20202020
650
	jz	run
651
	jmp	still
31 halyavin 652
 
653
execute:
993 Ataualpa 654
	mov	ebx, fileinfo_start
655
	and	dword [ebx+8], 0		; no parameters
656
	mov	dword [ebx+21], paramtest	; program name
134 diamond 657
.do:
993 Ataualpa 658
	mov	eax, 70
659
	mcall
660
	jmp	still
31 halyavin 661
 
662
run:
993 Ataualpa 663
	mov	[fileinfo_name], ebx		; program name
664
	mov	ebx, fileinfo_start
665
	mov	dword [ebx+8], paramtest	; parameters
666
	jmp	execute.do
31 halyavin 667
 
668
no_filelist:
669
 
131 diamond 670
    cmp ah,5	;OPEN/SAVE button
671
    je	    kfad
31 halyavin 672
 
131 diamond 673
    cmp ah,6	;Scroll up
31 halyavin 674
    jne no_scrlup
675
    mov ebx,1
676
    jmp up
677
no_scrlup:
678
 
131 diamond 679
    cmp ah,7	;Scroll down
31 halyavin 680
    jne no_scrldown
681
    mov ebx,1
682
    jmp down
683
no_scrldown:
684
 
685
    cmp ah,8
686
    jne no_update
687
update:
688
    call read_directory
689
;    call convertation
690
;    mov [filecursor],0
691
    call draw_window
692
no_update:
693
 
694
    cmp ah,9
695
    jne no_textopen
696
textopen:
993 Ataualpa 697
	mov	eax, 27
698
	mul	[filecursor]
699
	cmp	dword [eax+convinfo+15], 'FOL '
700
	jz	still
701
	push	eax
702
	mov	esi, path
703
	mov	edi, paramtest
134 diamond 704
@@:
993 Ataualpa 705
	lodsb
706
	test	al, al
707
	jz	@f
708
	stosb
709
	jmp	@b
134 diamond 710
@@:
993 Ataualpa 711
	mov	al, '/'
712
	stosb
713
	pop	eax
714
	mov	esi, [eax+convinfo]
715
	cmp	esi, -1
716
	jz	still
134 diamond 717
@@:
993 Ataualpa 718
	lodsb
719
	stosb
720
	test	al, al
721
	jz	@f
722
	cmp	edi, paramtest+1024
723
	jb	@b
724
	jmp	still
134 diamond 725
@@:
993 Ataualpa 726
	mov	ebx, editor
727
	jmp	run
31 halyavin 728
 
729
no_textopen:
730
 
731
    cmp  ah,11
732
    jne  no_view
733
viewset:
993 Ataualpa 734
	inc	[viewmode]
735
	cmp	[viewmode], 4
736
	jb	@f
737
	mov	[viewmode], 0
134 diamond 738
@@:
31 halyavin 739
    call read_directory
740
;    call convertation
741
    mov [filecursor],0
742
    call draw_window
743
    jmp still
744
no_view:
745
 
131 diamond 746
    cmp  ah,12	      ;move back
31 halyavin 747
    jne  no_back
748
back:
993 Ataualpa 749
	mov	edi, path+1024
750
	mov	ecx, edi
134 diamond 751
@@:
993 Ataualpa 752
	dec	edi
753
	cmp	byte [edi], '/'
754
	jz	@f
755
	cmp	edi, path
756
	ja	@b
757
	jmp	still
134 diamond 758
@@:
993 Ataualpa 759
	sub	ecx, edi
760
	lea	eax, [edi-path]
761
	mov	[cursor], eax
762
	xor	eax, eax
763
	rep	stosb
31 halyavin 764
    mov [filecursor],0
765
    call read_directory
766
;    call convertation
767
    call draw_window
768
    jmp still
769
 
770
no_back:
131 diamond 771
    cmp  ah,13	      ;string up?
31 halyavin 772
    jne  no_up
131 diamond 773
    mov  ebx,1	      ;step
31 halyavin 774
up:
775
    mov  [downstop],0
776
    sub  [filecursor],ebx
777
    cmp  [filecursor],0
778
    jnl  cr_ok
779
    mov  [filecursor],0
780
cr_ok:
781
    jmp  draw_wd
782
no_up:
131 diamond 783
    cmp  ah,14		 ;string down?
31 halyavin 784
    jne  no_dn
131 diamond 785
    mov  ebx,1		 ;step
31 halyavin 786
down:
787
    cmp  [downstop],1
131 diamond 788
    je	     no_dn
31 halyavin 789
    add  [filecursor],ebx
790
    jmp  draw_wd
791
no_dn:
792
 
793
    cmp  ah,15
131 diamond 794
    jne  no_copyclip	;copy to clipboard
31 halyavin 795
copy_to_clip:
993 Ataualpa 796
	mov	eax, 27
797
	mul	[filecursor]
798
	cmp	dword [convinfo+eax+15], 'FOL '
799
	jz	still
800
	push	eax
801
	mov	esi, path
802
	mov	edi, paramtest
134 diamond 803
@@:
993 Ataualpa 804
	lodsb
805
	test	al, al
806
	jz	@f
807
	stosb
808
	jmp	@b
134 diamond 809
@@:
993 Ataualpa 810
	pop	eax
811
	mov	esi, [convinfo+eax]
812
	cmp	esi, -1
813
	jz	still
814
	mov	al, '/'
815
	stosb
134 diamond 816
@@:
993 Ataualpa 817
	lodsb
818
	stosb
819
	test	al, al
820
	jz	@f
821
	cmp	edi, paramtest+1024
822
	jb	@b
823
	jmp	still
134 diamond 824
@@:
993 Ataualpa 825
	sub	edi, paramtest+1
826
	mov	ebx, clipfile_info
827
	mov	byte [ebx], 2
828
	mov	[ebx+12], edi
829
	mov	eax, 70
830
	mcall
831
	jmp	still
31 halyavin 832
no_copyclip:
833
 
834
    cmp ah,16
835
    jne no_clippaste
836
paste_from_clip:
993 Ataualpa 837
	mov	ebx, clipfile_info
838
	mov	byte [ebx], 0
839
	mov	dword [ebx+12], 1023
840
	mov	eax, 70
841
	mcall
842
	cmp	ebx, 0
843
	jle	still
844
	mov	byte [paramtest+ebx], 0
134 diamond 845
; OS allows only 256 symbols in command line
993 Ataualpa 846
	cmp	ebx, 250
847
	jae	still
134 diamond 848
; we use Pascal-style strings for /RD/1/COPYR
849
; source file
993 Ataualpa 850
	mov	edi, copyr_param
851
	mov	al, bl
852
	stosb
853
	mov	ecx, ebx
854
	mov	esi, paramtest
855
	rep	movsb
134 diamond 856
; destination path
993 Ataualpa 857
	inc	edi
858
	mov	ebp, edi
859
	mov	esi, path
134 diamond 860
@@:
993 Ataualpa 861
	cmp	edi, copyr_param+255
862
	jae	still
863
	lodsb
864
	test	al, al
865
	jz	@f
866
	stosb
867
	jmp	@b
134 diamond 868
; destination file name
869
@@:
993 Ataualpa 870
	dec	ebx
871
	jz	still
872
	cmp	byte [paramtest+ebx], '/'
873
	jnz	@b
874
	lea	esi, [paramtest+ebx]
134 diamond 875
@@:
993 Ataualpa 876
	lodsb
877
	test	al, al
878
	jz	@f
879
	stosb
880
	cmp	edi, copyr_param+255
881
	jae	still
882
	jmp	@b
134 diamond 883
@@:
993 Ataualpa 884
	mov	byte [edi], 0
885
	sub	edi, ebp
886
	mov	eax, edi
887
	mov	[ebp-1], al
134 diamond 888
; display
889
    cmp [browser], 1
31 halyavin 890
    jne no_outpath
131 diamond 891
    mov  eax,4		   ; function 4 : write text to window
892
    mov  ebx,10*65536+67     ; [x start] *65536 + [y start]
31 halyavin 893
    mov  ecx,0x00000000 ;[sc.grab_text] ; color of text RRGGBB
993 Ataualpa 894
	mov	edx, copyr_param+1
895
	movzx	esi, byte [edx-1]
485 heavyiron 896
    mcall
131 diamond 897
    mov  ebx,250*65536+67	; [x start] *65536 + [y start]
31 halyavin 898
    mov  ecx,0x00000000 ;[sc.grab_text] ; color of text RRGGBB
993 Ataualpa 899
	mov	edx, ebp
900
	mov	esi, edi
485 heavyiron 901
    mcall
31 halyavin 902
no_outpath:
903
 
134 diamond 904
; run COPYR
993 Ataualpa 905
	mov	eax, 70
906
	mov	ebx, copyr_run
907
	mcall
31 halyavin 908
    delay 50   ;wait recoed file
909
    jmp update ;still
910
no_clippaste:
911
 
131 diamond 912
    cmp ah,19		;Delete from floppy
134 diamond 913
    jne no_delt
31 halyavin 914
delete_file:
134 diamond 915
; OS now do not support file delete
993 Ataualpa 916
	jmp	still
31 halyavin 917
no_delt:
918
 
131 diamond 919
    cmp ah,20		;I - Help
920
    je	    help_scr
31 halyavin 921
 
922
    cmp ah,22
923
    jne no_headfile
924
    mov [drawhf],1
925
    call draw_window
926
    mov [drawhf],0
927
    mov [pmenu_draw],1
928
    jmp still
929
no_headfile:
930
 
931
    cmp ah,23
932
    jne no_headview
933
    mov [drawhv],1
934
    call draw_window
935
    mov [drawhv],0
936
    mov [pmenu_draw],1
937
    jmp still
938
no_headview:
939
 
940
    cmp ah,24
941
    jne no_headinfo
942
    mov [drawhi],1
943
    call draw_window
944
    mov [drawhi],0
945
    mov [pmenu_draw],1
946
    jmp still
947
no_headinfo:
948
 
949
;FILE MENU
950
    cmp ah,30
951
    je kfad
952
 
953
    cmp ah,31
131 diamond 954
    je	    copy_to_clip      ;Copy
31 halyavin 955
 
956
    cmp ah,32
131 diamond 957
    je	    paste_from_clip ;Paste
31 halyavin 958
 
959
    cmp ah,33
131 diamond 960
    je	    delete_file     ;Delte
31 halyavin 961
 
962
    cmp ah,34
131 diamond 963
    je	    textopen	;Edit in Tinypad
31 halyavin 964
 
965
    cmp ah,37
131 diamond 966
    je	    exit
31 halyavin 967
 
968
;VIEW MENU
134 diamond 969
    cmp ah,40		;Sort by name
31 halyavin 970
    jne no_sn
993 Ataualpa 971
	mov	[viewmode], 0
31 halyavin 972
    jmp update
973
no_sn:
974
 
134 diamond 975
    cmp ah,41		;Sort by extension
31 halyavin 976
    jne no_se
993 Ataualpa 977
	mov	[viewmode], 1
31 halyavin 978
    jmp update
979
no_se:
980
 
134 diamond 981
    cmp ah,42		;Sort by size
31 halyavin 982
    jne no_ss
993 Ataualpa 983
	mov	[viewmode], 2
31 halyavin 984
    jmp update
985
no_ss:
986
 
134 diamond 987
    cmp ah,43		;Sort by date
31 halyavin 988
    jne no_sd
993 Ataualpa 989
	mov	[viewmode], 3
31 halyavin 990
    jmp update
991
no_sd:
992
 
993
;HELP MENU
131 diamond 994
    cmp ah,50		;Help?
995
    je	    help_scr
31 halyavin 996
 
131 diamond 997
    cmp ah,51		;Info?
998
    je	    info_scr
31 halyavin 999
 
131 diamond 1000
    cmp ah,1	       ; test on exit button
1001
    je	    exit
31 halyavin 1002
 
1003
    jmp still
1004
 
1005
exit:
1006
; //// Willow
131 diamond 1007
;    mov eax,58
1008
;    mov ebx,MRUfile
1009
;    mov dword[ebx+8],255
1010
;    inc dword[ebx]
485 heavyiron 1011
;    mcall
31 halyavin 1012
; //// Willow
1013
    mov eax,-1
485 heavyiron 1014
    mcall
31 halyavin 1015
 
1016
draw_wd:
1017
;    call draw_window
1018
;    jmp still
1019
    mov [flick],1
1020
    jmp anti_flick
1021
 
1022
edit_prompt:
1023
    not  [focus]
1024
    jmp  red
1025
 
1026
help_scr:
1027
    mov esi,14
1028
    mov ebp,help_text
1029
    jmp screen
1030
 
1031
info_scr:
1032
    mov esi,6
1033
    mov ebp,info_text
1034
    jmp screen
1035
 
1036
screen:
134 diamond 1037
    cmp [browser], 1 ;it's browser?
31 halyavin 1038
    jne dialogscr
1039
 
502 heavyiron 1040
    mov eax,[procinfo.box.height]
31 halyavin 1041
    sub eax,90
1042
    drawfbox 40,76,300,eax,0x00000000
502 heavyiron 1043
    mov eax,[procinfo.box.height]
31 halyavin 1044
    sub eax,92
1045
    drawfbox 41,77,298,eax,0x00ffffff
1046
    mov edi,esi ;14
1047
    mov ebx,(41+26)*65536+(77+20)
1048
    mov ecx,cl_Black
1049
    mov edx,ebp ;help_text
1050
    jmp outlab
1051
 
1052
dialogscr:
502 heavyiron 1053
    mov eax,[procinfo.box.height]
31 halyavin 1054
    sub eax,84
1055
    drawfbox 16,54,270,eax,0x00000000
502 heavyiron 1056
    mov eax,[procinfo.box.height]
31 halyavin 1057
    sub eax,86
1058
    drawfbox 17,55,268,eax,0x00ffffff
1059
    mov edi,esi ;14
1060
    mov ebx,(17+10)*65536+(55+1)
1061
    mov ecx,cl_Black
1062
    mov edx,ebp ;help_text
1063
 
131 diamond 1064
outlab:     ;out labels
31 halyavin 1065
    mov eax,4
1066
    mov esi,40
1067
helploo:
485 heavyiron 1068
    mcall
31 halyavin 1069
    add ebx,11
1070
    add edx,40
1071
    dec edi
1072
    jnz helploo
1073
 
1074
    setimg 48,84,logoinfimg
1075
 
1076
    jmp still
1077
 
134 diamond 1078
getimgproc:
1079
    pushad
1080
    mov dword [edx],esi ;xs
1081
    mov dword [edx+4],edi ;ys
1082
 
1083
    mov ebp,eax
1084
    mov eax,dword [ecx] ;getx size
1085
    push edx
1086
    push ecx
1087
    lea ecx,[eax+2*eax]
1088
 
1089
    mul ebx
1090
    add eax,ebp ;x
1091
    mov edx,ecx
1092
    lea eax,[eax+2*eax]  ;eax=offset on imsrc
1093
 
1094
    mov ebp,esi ;xs
1095
    mov ebx,edi ;ys
1096
 
1097
    pop edi
1098
    lea esi,[eax+8+edi]
1099
 
1100
    pop edi
1101
    add edi,8
1102
 
1103
    cld
1104
cyc:
993 Ataualpa 1105
	push	esi
1106
	lea	ecx, [ebp+ebp*2]
1107
	rep	movsb
1108
	pop	esi
134 diamond 1109
    add esi,edx
1110
    dec ebx
1111
    jne cyc
1112
 
1113
    popad
1114
    ret
1115
 
552 diamond 1116
iglobal
31 halyavin 1117
;HELP TEXT
1118
help_text:
1119
       ;0123456789012345678901234567890123456789
1120
    db '        ~~~~~ SYSTEM X-TREE ~~~~~       '
1121
    db '                   HELP                 '
1122
    db '                                        '
1123
    db '                                        '
1124
    db 'F2 - CHANGE SORTMODE (name,ext,size,dat)'
1125
    db 'F3 - VIEW file in tinypad               '
1126
 
1127
    db 'F5 - COPY FILE to clipboard             '
1128
    db 'F6 - PASTE FILE from clipboard          '
1129
    db 'F11- EDIT PROMPT string                 '
1130
    db 'F12- UPDATE directory sources           '
1131
    db '                                        '
1132
 
1133
    db 'Enter - input to directory              '
1134
    db 'Backspace - back to previos directory   '
1135
    db 'PageDn/PageUp, Up/Down - move cursor    '
1136
 
1137
info_text:
1138
    db '        ~~~~~ SYSTEM X-TREE ~~~~~       '
156 diamond 1139
    db '               INFO 84 Ver              '
31 halyavin 1140
    db '                                        '
1141
    db '        Create by Pavlushin Evgeni      '
134 diamond 1142
    db 'with ASCL library special for Kolibri OS'
31 halyavin 1143
    db ' www.deck4.narod.ru      waptap@mail.ru '
552 diamond 1144
endg
31 halyavin 1145
 
1146
;   *********************************************
1147
;   *******  WINDOW DEFINITIONS AND DRAW ********
1148
;   ********    FILE BROWSER / DIALOG   *********
1149
 
1150
;draw_browser_window:
1151
 
1152
draw_window:
1153
 
1154
;    mov eax,9
1155
;    mov ebx,procinfo
1156
;    mov ecx,-1
485 heavyiron 1157
;    mcall
502 heavyiron 1158
;    mov  eax,[procinfo.box.width]
31 halyavin 1159
;    cmp  eax,66
1160
;    jg  temp12345
1161
;    ret
1162
; temp12345:
1163
    mov  eax,48
1164
    mov  ebx,3
1165
    mov  ecx,sc
1166
    mov  edx,sizeof.system_colors
485 heavyiron 1167
    mcall
31 halyavin 1168
 
1169
    mov  eax,[sc.work_button]
1170
    mov  [b_color],eax
1171
 
131 diamond 1172
    mov  eax,12        ; function 12:tell os about windowdraw
1173
    mov  ebx,1		   ; 1, start of draw
485 heavyiron 1174
    mcall
31 halyavin 1175
 
1176
;Window
1177
 
131 diamond 1178
    xor  eax,eax       ; function 0 : define and draw window
31 halyavin 1179
 
134 diamond 1180
    cmp  [browser], 1 ;it's browser
31 halyavin 1181
    jne  nob1
131 diamond 1182
    mov  ebx,140*65536+400     ; [x start] *65536 + [x size]
1183
    mov  ecx,160*65536+280     ; [y start] *65536 + [y size]
31 halyavin 1184
    jmp  isb1
1185
nob1:
131 diamond 1186
    mov  ebx,140*65536+320     ; [x start] *65536 + [x size]
1187
    mov  ecx,260*65536+240     ; [y start] *65536 + [y size]
31 halyavin 1188
isb1:
1189
;    mov  edx,[sc.work]             ; color of work area RRGGBB
131 diamond 1190
    or	     edx,0x03ffffff;000000
485 heavyiron 1191
    mcall
31 halyavin 1192
 
1193
;Get proc info
1194
    mov eax,9
1195
    mov ebx,procinfo
1196
    mov ecx,-1
485 heavyiron 1197
    mcall
31 halyavin 1198
 
502 heavyiron 1199
    mov  eax,[procinfo.box.width]
31 halyavin 1200
    cmp  eax,66
134 diamond 1201
    jg	 @f
1202
.ret:
31 halyavin 1203
    ret
134 diamond 1204
 @@:
502 heavyiron 1205
    cmp  [procinfo.box.height], 0x70
993 Ataualpa 1206
    jl	.ret
31 halyavin 1207
 
134 diamond 1208
    cmp  [browser], 1 ;it's browser
31 halyavin 1209
    jne  nob9
1210
    mov  [listx],120
502 heavyiron 1211
;    mov  eax,[procinfo.box.width]
134 diamond 1212
    sub  eax,127;[listx]+7
1213
    cmp  eax,10
993 Ataualpa 1214
    jl	 .ret
31 halyavin 1215
    mov  [listxsize],eax
1216
    mov  [listy],73
502 heavyiron 1217
    mov  eax,[procinfo.box.height]
134 diamond 1218
    sub  eax,73+7;[listy]+7
31 halyavin 1219
    mov  [listysize],eax
1220
    jmp isb9
1221
nob9:
1222
    mov  [listx],10
502 heavyiron 1223
;    mov  eax,[procinfo.box.width]
134 diamond 1224
    sub  eax,17 ;[listx]+7
31 halyavin 1225
    mov  [listxsize],eax
1226
    mov  [listy],54
502 heavyiron 1227
    mov  eax,[procinfo.box.height]
134 diamond 1228
    sub  eax,54+34;[listy]+34
31 halyavin 1229
    mov  [listysize],eax
1230
isb9:
1231
 
1232
 
1233
;Draw only browser components
134 diamond 1234
    cmp  [browser], 1 ;it's browser
31 halyavin 1235
    jne  nob2
1236
 
131 diamond 1237
    mov  eax,[sc.grab_text]	 ; color of text RRGGBB
1238
    or	     eax,0x10000000
1239
    glabel 8,8,'SYSTEM X-TREE FILE BROWSER',eax
31 halyavin 1240
 
1241
;Draw buttons headers
1242
    mov  eax,8
1243
    mov  ebx,8*65536+(6*8-1) ;start pos x
1244
    mov  ecx,23*65536+10      ;start pos y
1245
    mov  edx,22;+1000000000000000000000000000000b  ;spoke butt
131 diamond 1246
    mov  edi,3		  ;draw 13 button's
31 halyavin 1247
    mov  esi,0x00339933
485 heavyiron 1248
    mcall
31 halyavin 1249
    dec edi
1250
nexthbut:
1251
    add  ebx,(6*8)*65536
1252
    inc  edx
485 heavyiron 1253
    mcall
31 halyavin 1254
    dec  edi
1255
    jnz  nexthbut
1256
 
1257
;File STRING
134 diamond 1258
    glabel 8,25,'  FILE    VIEW    INFO  ',  cl_White ;Black
31 halyavin 1259
 
1260
;BlackLine
502 heavyiron 1261
    mov eax,[procinfo.box.width]
31 halyavin 1262
    sub eax,10
1263
    drawfbox 5,35, eax, 1, cl_Black
1264
 
1265
;BlackLine2
502 heavyiron 1266
    mov eax,[procinfo.box.width]
31 halyavin 1267
    sub eax,10
1268
    drawfbox 5,68, eax, 1, cl_Black
1269
 
1270
;BlackLine2 vertical
502 heavyiron 1271
;    mov eax,[procinfo.box.height]
31 halyavin 1272
;    sub eax,69+4
1273
;    drawfbox 115, 69, 1, eax, cl_Black
1274
 
1275
;Set logo img
1276
    setimg 34,88,logoinfimg
131 diamond 1277
    glabel 20,165,'SYSTEM X-TREE',cl_Black
31 halyavin 1278
    add  ebx,10
134 diamond 1279
    glabel ,,'FOR KolibriOS',
31 halyavin 1280
 
1281
    add  ebx,9*65536+20
131 diamond 1282
    glabel ,,'welcome to',cl_Green
31 halyavin 1283
    add  ebx,-15*65536+10
134 diamond 1284
    glabel ,,'www.kolibrios.org',cl_Green
31 halyavin 1285
 
131 diamond 1286
;    glabel ,,'Create by',cl_Green
31 halyavin 1287
;    add  ebx,10
131 diamond 1288
;    glabel ,,'   Pavlushin',
31 halyavin 1289
;    add  ebx,10
131 diamond 1290
;    glabel ,,'       Evgeni',
31 halyavin 1291
 
1292
 
1293
;Draw head->file buttons
1294
    cmp [drawhf],1
1295
    jne  no_drawhf
1296
    mov  ebx,8*65536+6*12 ;start pos x
1297
    mov  ecx,35*65536+10      ;start pos y
1298
    mov  edx,30  ;spoke butt
131 diamond 1299
    mov  edi,8		  ;draw 4 button's
31 halyavin 1300
    mov  esi,cl_Grey
1301
    call menubutton
1302
no_drawhf:
1303
 
1304
;Draw head->view buttons
1305
    cmp [drawhv],1
1306
    jne  no_drawhv
1307
    mov  ebx,(8+6*8)*65536+6*12 ;start pos x
1308
    mov  ecx,35*65536+10      ;start pos y
1309
    mov  edx,40  ;spoke butt
134 diamond 1310
    mov  edi,4		  ;draw 4 button's
31 halyavin 1311
    mov  esi,cl_Grey
1312
    call menubutton
1313
no_drawhv:
1314
 
1315
;Draw head->info buttons
1316
    cmp [drawhi],1
1317
    jne  no_drawhi
1318
    mov  ebx,(8+12*8)*65536+6*12 ;start pos x
1319
    mov  ecx,35*65536+10      ;start pos y
1320
    mov  edx,50  ;spoke butt
131 diamond 1321
    mov  edi,2		  ;draw 2 button's
31 halyavin 1322
    mov  esi,cl_Grey
1323
    call menubutton
1324
no_drawhi:
1325
 
1326
nob2:
1327
 
1328
;Draw buttons instruments
1329
    mov  eax,8
134 diamond 1330
    cmp  [browser], 1 ;it's browser
31 halyavin 1331
    jne  nob3
1332
    mov  ebx,10*65536+16+5 ;start pos x
1333
    mov  ecx,37*65536+15      ;start pos y
1334
    jmp isb3
1335
nob3:
1336
    mov  ebx,16*65536+16+5 ;start pos x
1337
    mov  ecx,29*65536+15      ;start pos y
1338
isb3:
1339
    mov  edx,8;+1000000000000000000000000000000b  ;spoke butt
131 diamond 1340
    mov  edi,13        ;draw 13 button's
31 halyavin 1341
    mov  esi,cl_Grey
485 heavyiron 1342
    mcall
31 halyavin 1343
    dec edi
1344
nextbut:
1345
    add  ebx,(16+6)*65536
1346
    inc  edx
485 heavyiron 1347
    mcall
31 halyavin 1348
    dec  edi
1349
    jnz  nextbut
1350
 
1351
 
134 diamond 1352
    cmp  [browser], 1 ;it's browser
31 halyavin 1353
    jne  nob4
1354
;But img browser
1355
    setimg 10,37,butimg
1356
;left logo
502 heavyiron 1357
    add eax,[procinfo.box.width]
31 halyavin 1358
    sub eax,80
1359
    mov [temp],eax
1360
    setimg [temp],37,logoimg
1361
    jmp isb4
1362
nob4:
1363
;But img dialog
1364
    setimg 16,29,butimg
1365
isb4:
1366
 
134 diamond 1367
    cmp  [browser], 1 ;it's browser
31 halyavin 1368
    jne  nob5
1369
 
1370
    mov [urlx],48
1371
    mov [urly],55
502 heavyiron 1372
    mov eax,[procinfo.box.width]
31 halyavin 1373
    sub eax,48+10
1374
    mov [urlxsize],eax
1375
    mov [urlysize],12
1376
 
131 diamond 1377
    glabel 20,57,"URL:",cl_Black
31 halyavin 1378
 
1379
;Out view mode info
993 Ataualpa 1380
	movzx	edx, [viewmode]
1381
	shl	edx, 4
31 halyavin 1382
    mov eax,4
1383
    mov ebx,180*65536+25
1384
    mov ecx,cl_Black
1385
    add edx,modetext
1386
    mov esi,16
485 heavyiron 1387
    mcall
31 halyavin 1388
 
1389
;List size
1390
    outcount [listsize],294,25,cl_Black,4*65536
1391
    jmp isb5
1392
 
552 diamond 1393
iglobal
31 halyavin 1394
head_dlg: db 'OPEN FILE'
131 diamond 1395
      db 'SAVE FILE'
31 halyavin 1396
but_dlg:  db 'OPEN'
131 diamond 1397
      db 'SAVE'
552 diamond 1398
endg
31 halyavin 1399
 
1400
nob5:
1401
 
1402
    mov [urlx],10
502 heavyiron 1403
    mov eax,[procinfo.box.height]
31 halyavin 1404
    sub eax,24
1405
    mov [urly],eax
502 heavyiron 1406
    mov eax,[procinfo.box.width]
31 halyavin 1407
    sub eax,80
1408
    mov [urlxsize],eax
1409
    mov [urlysize],12
1410
 
131 diamond 1411
    cmp byte [dlg_type],'O'    ;if byte O - is Open dialog
31 halyavin 1412
    jne no_openh
131 diamond 1413
    mov edx,head_dlg	      ;draw in head OPEN FILE
31 halyavin 1414
    jmp out_laby
1415
no_openh:
131 diamond 1416
    cmp byte [dlg_type],'S'    ;if byte S - is Save dialog
31 halyavin 1417
    jne no_saveh
131 diamond 1418
    mov edx,head_dlg+9	      ;draw in head SAVE FILE
31 halyavin 1419
out_laby:
1420
    mov ebx,8*65536+8
131 diamond 1421
    mov ecx,[sc.grab_text]    ; color of text RRGGBB
1422
    or	    ecx,0x10000000
31 halyavin 1423
    mov esi,9
1424
    mov eax,4
485 heavyiron 1425
    mcall
31 halyavin 1426
no_saveh:
1427
 
1428
 
1429
;Draw OPEN\SAVE button
1430
    mov ebx,0*65536+50
1431
    mov ecx,0*65536+12
502 heavyiron 1432
    mov eax,[procinfo.box.width]
31 halyavin 1433
    sub eax,63
1434
    shl eax,16
1435
    add ebx,eax
502 heavyiron 1436
    mov eax,[procinfo.box.height]
31 halyavin 1437
    sub eax,25
1438
    shl eax,16
1439
    add ecx,eax
1440
    mov  eax,8
1441
    mov  edx,5 ;button ID
1442
    mov  esi,0x006699aa  ;gradient!!!
485 heavyiron 1443
    mcall
31 halyavin 1444
 
1445
; label OPEN or SAVE
502 heavyiron 1446
    mov ebx,[procinfo.box.width]
31 halyavin 1447
    sub ebx,48
502 heavyiron 1448
    mov eax,[procinfo.box.height]
31 halyavin 1449
    sub eax,22
1450
    shl ebx,16
1451
    add ebx,eax
1452
 
131 diamond 1453
    cmp byte [dlg_type],'O'    ;if byte O - is Open dialog
31 halyavin 1454
    jne no_openb
131 diamond 1455
    mov edx,but_dlg	   ;draw in head OPEN FILE
31 halyavin 1456
    jmp out_labx
1457
no_openb:
131 diamond 1458
    cmp byte [dlg_type],'S'    ;if byte S - is Save dialog
31 halyavin 1459
    jne no_saveb
131 diamond 1460
    mov edx,but_dlg+4	       ;draw in head SAVE FILE
31 halyavin 1461
out_labx:
1462
    mov ecx,cl_White
1463
    mov esi,4
1464
    mov eax,4
485 heavyiron 1465
    mcall
31 halyavin 1466
no_saveb:
1467
 
1468
isb5:
1469
 
1470
anti_flick:
1471
 
1472
    cmp [flick],2
1473
    je draw_url
1474
    cmp [flick],0
1475
    jne no_flick_url
1476
 
1477
;***************************
1478
;    DRAW URL LINE
1479
;***************************
1480
draw_url:
1481
 
1482
;Draw URL focus button
1483
    mov ebx,[urlx]
1484
    shl ebx,16
1485
    add ebx,[urlxsize]
1486
    mov ecx,[urly]
1487
    shl ecx,16
1488
    add ecx,[urlysize]
1489
    dec ebx
1490
    dec ecx
1491
    mov  eax,8
1492
    mov  edx,2 ;button ID
1493
    mov  esi,0x00aaaaaa  ;gradient!!!
485 heavyiron 1494
    mcall
31 halyavin 1495
 
1496
;Draw URL String
1497
    mov eax,13
1498
    mov edx,cl_Black
485 heavyiron 1499
    mcall
31 halyavin 1500
    add ebx,1*65536-2+1
1501
    add ecx,1*65536-2+1
1502
    mov edx,cl_White
485 heavyiron 1503
    mcall
31 halyavin 1504
 
1505
;Draw URL Cursor
1506
    mov eax,6
1507
    mul [cursor]
1508
    mov ebx,[urlx]
1509
    add ebx,eax
1510
    shl ebx,16
1511
    add ebx,2*65536+1
1512
    mov ecx,[urly]
1513
    shl ecx,16
1514
    add ecx,[urlysize]
1515
    add ecx,2*65536-4
1516
    mov eax,13
1517
    mov edx,cl_Black
485 heavyiron 1518
    mcall
31 halyavin 1519
 
1520
; OUT TEXT
131 diamond 1521
    mov eax,[urlxsize]	    ;calculating text leight
31 halyavin 1522
    sub eax,8
1523
    mov ebx,6
1524
    div ebx
1525
    mov esi,eax
1526
 
1527
    mov  ebx,[urlx]
1528
    shl  ebx,16
1529
    add  ebx,[urly]
1530
    add  ebx,3*65536+2
131 diamond 1531
    mov  eax,4		   ; function 4 : write text to window
31 halyavin 1532
    mov  ecx,0x00000000 ;[sc.grab_text] ; color of text RRGGBB
131 diamond 1533
    mov  edx,path	 ; pointer to text beginning
485 heavyiron 1534
    mcall
31 halyavin 1535
 
1536
    cmp  [flick],2
1537
    jne  no_flick_url
1538
    mov  [flick],0
1539
    jmp  still
1540
no_flick_url:
1541
 
1542
 
1543
;***************************
1544
;    DRAW FILE LIST
1545
;***************************
1546
 
1547
;Draw Scroll Line
1548
    mov eax,13
1549
 
1550
    mov ebx,[listx]
1551
    add ebx,[listxsize]
1552
    sub ebx,[scrollsize]
1553
    shl ebx,16
1554
    add ebx,dword [scrollsize]
1555
    mov ecx,[listy]
134 diamond 1556
    add ecx,scrollbutsize
31 halyavin 1557
    shl ecx,16
1558
    add ecx,[listysize]
134 diamond 1559
    sub ecx,scrollbutsize*2
31 halyavin 1560
    mov edx,[scrollcolor] ;0x00006600
485 heavyiron 1561
    mcall
31 halyavin 1562
 
1563
;Draw Scroll Box
1564
    mov  edx,0
1565
    mov  eax,[listysize]
1566
    sub  eax,2
1567
    mov  ebx,dword 10
1568
    div  ebx
1569
 
1570
    mov ebx,eax
131 diamond 1571
    cmp ebx,[listsize]	    ;filelistsize in ebx
134 diamond 1572
    jae    notusescroll
31 halyavin 1573
;usescroll
134 diamond 1574
; calculate scroll size
993 Ataualpa 1575
	mov	eax, [listysize]
1576
	sub	eax, 2*scrollbutsize
1577
	push	eax
1578
	mul	ebx
1579
	div	[listsize]
1580
	cmp	eax, 5
1581
	jae	@f
1582
	mov	al, 5
134 diamond 1583
@@:
993 Ataualpa 1584
	mov	[scroll_height], eax
134 diamond 1585
; calculate scroll pos
993 Ataualpa 1586
	sub	[esp], eax
1587
	mov	eax, [listsize]
1588
	sub	eax, ebx
1589
	mov	ecx, eax
1590
	cmp	eax, [filecursor]
1591
	jb	@f
1592
	mov	eax, [filecursor]
134 diamond 1593
@@:
993 Ataualpa 1594
	mul	dword [esp]
1595
	div	ecx
1596
	mov	[scroll_pos], eax
1597
	pop	ecx
134 diamond 1598
; draw
993 Ataualpa 1599
	lea	ecx, [eax+scrollbutsize]
1600
	add	ecx, [listy]
1601
	shl	ecx, 16
1602
	mov	cx, word [scroll_height]
1603
	mov	eax, 13
1604
	mov	ebx, [listx]
1605
	add	ebx, [listxsize]
1606
	sub	ebx, [scrollsize]
1607
	shl	ebx, 16
1608
	mov	bx, word [scrollsize]
1609
	mov	edx, [scrollboxcol]
1610
	mcall
31 halyavin 1611
notusescroll:
1612
 
1613
 
1614
;Draw list button for get file name
1615
    mov  ebx,[listx]
1616
    shl  ebx,16
1617
    add  ebx,[listxsize]
131 diamond 1618
    sub  ebx,15      ;right free zone
31 halyavin 1619
    sub  ebx,[scrollsize]
1620
    mov  ecx,[listy]
1621
    shl  ecx,16
1622
    add  ecx,[listysize]
1623
 
1624
    mov  eax,8
1625
    mov  edx,4+1000000000000000000000000000000b  ;spoke butt
485 heavyiron 1626
    mcall
31 halyavin 1627
 
1628
    add  ebx,15
1629
    mov  eax,13
1630
    mov  edx,[listcolor] ;ffffff
485 heavyiron 1631
    mcall
31 halyavin 1632
 
1633
;Draw up/down buttons
1634
    mov  ebx,[listx]
1635
    add  ebx,[listxsize]
1636
    sub  ebx,[scrollsize]
1637
    shl  ebx,16
1638
    add  ebx,[scrollsize]
1639
    mov  ecx,[listy]
1640
    shl  ecx,16
134 diamond 1641
    add  ecx,scrollbutsize-1
31 halyavin 1642
    mov  eax,8
1643
    mov  edx,6+1000000000000000000000000000000b  ;spoke butt
485 heavyiron 1644
    mcall
31 halyavin 1645
 
1646
    inc  ecx
1647
    mov  eax,13
1648
    mov  edx,[scrollbutcol] ;ffffff
485 heavyiron 1649
    mcall
31 halyavin 1650
 
1651
; Draw image on up button
1652
    pushad
1653
    shr  ebx,16
1654
    mov  edx,ebx
1655
    shl  edx,16
1656
    shr  ecx,16
1657
    add  edx,ecx
1658
    mov  ecx,8*65536+9
1659
    mov  ebx,upsb+8
1660
    mov  eax,7
485 heavyiron 1661
    mcall
31 halyavin 1662
    popad
1663
 
1664
 
131 diamond 1665
    dec  ecx	 ;correction
31 halyavin 1666
    mov  edx,7+1000000000000000000000000000000b  ;spoke butt
1667
    mov  eax,[listysize]
134 diamond 1668
    sub  eax,scrollbutsize
31 halyavin 1669
    shl  eax,16
1670
    add  ecx,eax
1671
 
1672
    mov  eax,8
485 heavyiron 1673
    mcall
31 halyavin 1674
 
1675
    inc  ecx
1676
    mov  eax,13
1677
    mov  edx,[scrollbutcol] ;ffffff
485 heavyiron 1678
    mcall
31 halyavin 1679
 
1680
; Draw image on down button
1681
    pushad
1682
    shr  ebx,16
1683
    mov  edx,ebx
1684
    shl  edx,16
1685
    shr  ecx,16
1686
    add  edx,ecx
1687
    mov  ecx,8*65536+9
1688
    mov  ebx,dnsb+8
1689
    mov  eax,7
485 heavyiron 1690
    mcall
31 halyavin 1691
    popad
1692
 
1693
 
1694
; Draw text in file list
1695
 
134 diamond 1696
;    mov  eax,[listxsize]
1697
;    sub  eax,40*6  ;leight of string
1698
;    shr  eax,1
1699
;    add  eax,[listx]
993 Ataualpa 1700
	mov	eax, [listx]
1701
	add	eax, 12+4 ; for icons
31 halyavin 1702
    shl  eax,16
1703
    add  eax,[listy]
1704
    add  eax,2
1705
 
1706
    mov  [filelistxy],eax ;dword 19*65536+58
1707
 
1708
    mov  edx,0
1709
    mov  eax,[listysize]
1710
    sub  eax,2
1711
    mov  ebx,dword 10
1712
    div  ebx
1713
    mov  [filelistsize],eax  ;dword 40
1714
 
1715
; OUT FILE DATA
131 diamond 1716
    mov  eax,[filecursor]     ;calc cursor position
134 diamond 1717
    mov  ebx,27
31 halyavin 1718
    mul  ebx
1719
 
1720
;OUT TEXT
1721
    mov  ebp,4096 ; 16             ;out strings process
1722
    sub  ebp,[filecursor]
1723
    mov  edx,convinfo ;fileinfo+11
1724
    add  edx,eax
1725
    mov  ebx,dword [filelistxy]
1726
loo:
993 Ataualpa 1727
	cmp	dword [edx], -1
1728
	jz	noout
31 halyavin 1729
    mov  ecx,0x00888888        ;for another file's color white
134 diamond 1730
    cmp  [edx+15],dword 'FOL ' ;folder yellow
31 halyavin 1731
    jne  nb
1732
    mov  ecx,0x00006666
1733
    jmp cset1
1734
nb:
993 Ataualpa 1735
	mov	eax, [edx]
1736
	xor	edi, edi
134 diamond 1737
; find extension and set color
1738
@@:
993 Ataualpa 1739
	inc	eax
1740
	cmp	byte [eax-1], 0
1741
	jz	@f
1742
	cmp	byte [eax-1], '.'
1743
	jnz	@b
1744
	mov	edi, eax
1745
	jmp	@b
134 diamond 1746
@@:
993 Ataualpa 1747
	test	edi, edi
1748
	jz	@f
1749
	mov	edi, [edi]
1750
	and	edi, not 0x20202020	; toupper
134 diamond 1751
@@:
31 halyavin 1752
;Color set
134 diamond 1753
; text's blue
993 Ataualpa 1754
	mov	ecx, 0x00446666
1755
	cmp	edi, 'TXT'
1756
	jz	cset
1757
	cmp	edi, 'INC'
1758
	jz	cset
1759
	cmp	edi, 'ASM'
1760
	jz	cset
1761
	cmp	edi, 'RTF'
1762
	jz	cset
134 diamond 1763
; picture's pure
993 Ataualpa 1764
	mov	ecx, 0x00226688
1765
	cmp	edi, 'BMP'
1766
	jz	cset
1767
	cmp	edi, 'JPG'
1768
	jz	cset
1769
	cmp	edi, 'JPEG'
1770
	jz	cset
1771
	cmp	edi, 'GIF'
1772
	jz	cset
1773
	cmp	edi, 'PNG'
1774
	jz	cset
1775
	cmp	edi, 'WAV'
1776
	jz	cset
1777
	cmp	edi, 'MID'
1778
	jz	cset
134 diamond 1779
; execute's green
993 Ataualpa 1780
	mov	ecx, 0x00008866
1781
	test	edi, edi
1782
	jz	cset
134 diamond 1783
; for another file's color white
993 Ataualpa 1784
	mov	ecx, 0x00888888
31 halyavin 1785
cset:
1786
 
1787
cset1:
134 diamond 1788
    push edx
1789
    mov  edx,[edx]
993 Ataualpa 1790
	push	ebx edx
1791
	mov	eax, [listxsize]
1792
	sub	eax, [scrollsize]
1793
	sub	eax, 12+4
1794
	xor	edx, edx
1795
	mov	ebx, 6
1796
	div	ebx
1797
	pop	edx ebx
1798
	sub	eax, 25
1799
	xor	esi, esi
134 diamond 1800
@@:
993 Ataualpa 1801
	cmp	byte [edx+esi], 0
1802
	jz	@f
1803
	inc	esi
1804
	cmp	esi, eax
1805
	jbe	@b
1806
	dec	esi
134 diamond 1807
@@:
993 Ataualpa 1808
	push	eax
31 halyavin 1809
    mov  eax,4
485 heavyiron 1810
    mcall
993 Ataualpa 1811
	cmp	byte [edx+esi], 0
1812
	jz	@f
1813
	pushad
1814
	mov	edx, more_char
1815
	mov	eax, esi
1816
	imul	eax, 6*65536
1817
	add	ebx, eax
1818
	mov	esi, 1
1819
	mov	eax, 4
1820
	mcall
1821
	popad
134 diamond 1822
@@:
993 Ataualpa 1823
	pop	eax
134 diamond 1824
    pop  edx
1825
    push ebx edx
993 Ataualpa 1826
	inc	eax
1827
	imul	eax, 6*65536
1828
	add	ebx, eax
134 diamond 1829
    add  edx,4
1830
    mov  esi,23
1831
    mov  eax,4
485 heavyiron 1832
    mcall
134 diamond 1833
    pop  edx ebx
31 halyavin 1834
 
134 diamond 1835
    pushad
1836
    cmp  [edx+15],dword 'Fvol' ;volume label
31 halyavin 1837
    jne  no_volico
1838
    push hdico+8
1839
    jmp out_ico
1840
no_volico:
134 diamond 1841
    cmp  [edx+15],dword 'FOL '
31 halyavin 1842
    jne  no_folico
134 diamond 1843
    cmp  [edx+4],dword 'HARD'
31 halyavin 1844
    jne  no_hdico
1845
    push hdico+8
1846
    jmp out_ico
1847
no_hdico:
134 diamond 1848
    cmp  [edx+4],dword 'RAMD'
31 halyavin 1849
    jne  no_rdico
1850
    push rdico+8
1851
    jmp out_ico
1852
no_rdico:
134 diamond 1853
    cmp  [edx+4],dword 'FLOP'
131 diamond 1854
    jne  no_fdico
1855
    push rdico+8
1856
    jmp out_ico
1857
no_fdico:
156 diamond 1858
    cmp  [edx+4],dword 'CD-R'
1859
    jne  no_cdico
1860
    push cdico+8
1861
    jmp out_ico
1862
no_cdico:
31 halyavin 1863
    push folico+8
1864
    jmp out_ico
1865
no_folico:
134 diamond 1866
    cmp  edi,dword 'BMP'
131 diamond 1867
    je	     is_imgico
134 diamond 1868
    cmp  edi,dword 'JPG'
131 diamond 1869
    je	     is_imgico
134 diamond 1870
    cmp  edi,dword 'JPEG'
131 diamond 1871
    je	     is_imgico
134 diamond 1872
    cmp  edi,dword 'GIF'
131 diamond 1873
    je	     is_imgico
31 halyavin 1874
; //// Willow
134 diamond 1875
    cmp  edi,dword 'PNG'
131 diamond 1876
    je	 is_imgico
31 halyavin 1877
; //// Willow
134 diamond 1878
    cmp  edi,dword 'WAV'
131 diamond 1879
    je	     is_imgico
134 diamond 1880
    cmp  edi,dword 'MID'
131 diamond 1881
    je	     is_imgico
993 Ataualpa 1882
    cmp  edi,dword 'MP3'
1883
    je	     is_imgico
1884
    cmp  edi,dword 'XM'
1885
    je	     is_imgico
31 halyavin 1886
    jmp  no_imgico
1887
is_imgico:
1888
    push imgico+8
1889
    jmp out_ico
1890
no_imgico:
134 diamond 1891
    cmp  edi,dword 'ASM'
131 diamond 1892
    je	     is_asmincico
134 diamond 1893
    cmp  edi,dword 'INC'
131 diamond 1894
    je	     is_asmincico
993 Ataualpa 1895
    cmp  edi,dword 'INI'
1896
    je	     is_asmincico
1897
    cmp  edi,dword 'CONF'
1898
    je	     is_asmincico
31 halyavin 1899
    jmp  no_asmincico
1900
is_asmincico:
1901
    push asmincico+8
1902
    jmp out_ico
1903
no_asmincico:
134 diamond 1904
    cmp  edi,dword 'RTF'
131 diamond 1905
    je	 @f
134 diamond 1906
    cmp  edi,dword 'TXT'
31 halyavin 1907
    jne  no_txtico
993 Ataualpa 1908
    cmp  edi,dword 'LOG'
1909
    jne  no_txtico
131 diamond 1910
 @@:
31 halyavin 1911
    push txtico+8
1912
    jmp out_ico
1913
no_txtico:
134 diamond 1914
    test edi,edi
31 halyavin 1915
    jne  no_execico
1916
    push execico+8
1917
    jmp out_ico
1918
no_execico:
134 diamond 1919
    cmp  [edx+15],dword 'DAT '
31 halyavin 1920
    jne  no_datico
1921
    push datico+8
1922
    jmp out_ico
1923
no_datico:
134 diamond 1924
    cmp  [edx+15],dword 'DEL '
31 halyavin 1925
    jne  no_out_ico
1926
    push delico+8
1927
    jmp out_ico
1928
out_ico:
1929
 
1930
    mov  edx,ebx
1931
    sub  edx,14*65536+1
1932
    mov  ecx,12*65536+9
1933
;    mov  ebx,upsb+8
1934
    pop  ebx
1935
    mov  eax,7
485 heavyiron 1936
    mcall
31 halyavin 1937
no_out_ico:
1938
    popad
1939
 
1940
 
1941
    add  ebx,10
1942
noout:
134 diamond 1943
    add  edx,27
31 halyavin 1944
 
1945
    dec  [filelistsize]
134 diamond 1946
    jz	     extloo
31 halyavin 1947
 
1948
    dec  ebp
1949
    jnz  loo
1950
dext:
1951
    mov [downstop],1
1952
 
1953
extloo:
1954
 
134 diamond 1955
    cmp  [browser], 1 ;it's browser
31 halyavin 1956
    jne  nob8
1957
 
1958
;Draw text for head->file buttons
1959
    cmp [drawhf],1
1960
    jne  no_drawhftext
1961
    drawfbox 8,35,(6*12)+1,11*8,0x00000000
1962
    drawfbox 9,36,(6*12)-1,(11*8)-2,0x00ffffff
1963
 
1964
    mov edi,8
1965
    mov ebx,9*65536+37
1966
    mov ecx,cl_Black
1967
    mov edx,file_text_label
1968
    call drawmenu
1969
 
552 diamond 1970
iglobal
31 halyavin 1971
file_text_label:
131 diamond 1972
    db	     '    Open    '
1973
    db	     '    Copy    '
1974
    db	     '    Paste   '
1975
    db	     '   Delete   '
1976
    db	     '   Tinypad  '
1977
    db	     '    Edit    '
1978
    db	     '            '
1979
    db	     '    Exit    '
552 diamond 1980
endg
31 halyavin 1981
 
1982
no_drawhftext:
1983
 
1984
;Draw text for head->view buttons
1985
    cmp [drawhv],1
1986
    jne  no_drawhvtext
134 diamond 1987
    drawfbox (8+6*8),35,(6*12)+1,(11*4),0x00000000
1988
    drawfbox (9+6*8),36,(6*12)-1,(11*4)-2,0x00ffffff
31 halyavin 1989
 
134 diamond 1990
    mov edi,4
31 halyavin 1991
    mov ebx,(9+6*8)*65536+37
1992
    mov ecx,cl_Black
1993
    mov edx,view_text_label
1994
    call drawmenu
1995
 
552 diamond 1996
iglobal
31 halyavin 1997
view_text_label:
131 diamond 1998
    db	     '  Name sort '
1999
    db	     '  Ext. sort '
2000
    db	     '  Size sort '
2001
    db	     '  Date sort '
552 diamond 2002
endg
31 halyavin 2003
 
2004
no_drawhvtext:
2005
 
2006
;Draw text for head->info buttons
2007
    cmp [drawhi],1
2008
    jne  no_drawhitext
2009
    drawfbox (8+12*8),35,(6*12)+1,(11*2),0x00000000
2010
    drawfbox (9+12*8),36,(6*12)-1,(11*2)-2,0x00ffffff
2011
 
2012
    mov edi,2
2013
    mov eax,4
2014
    mov ebx,(9+12*8)*65536+37
2015
    mov ecx,cl_Black
2016
    mov edx,info_text_label
2017
    call drawmenu
2018
 
552 diamond 2019
iglobal
31 halyavin 2020
info_text_label:
131 diamond 2021
    db	     '   Help     '
2022
    db	     '   About    '
552 diamond 2023
endg
31 halyavin 2024
 
2025
no_drawhitext:
2026
 
2027
nob8:
2028
    cmp  [flick],1
2029
    jne  no_flick
2030
    mov  [flick],0
2031
    jmp  still
2032
no_flick:
2033
 
131 diamond 2034
    mov  eax,12        ; function 12:tell os about windowdraw
2035
    mov  ebx,2		   ; 2, end of draw
485 heavyiron 2036
    mcall
31 halyavin 2037
 
2038
    ret
2039
 
2040
;FILE LIST PARAMETRS
2041
 
552 diamond 2042
iglobal
131 diamond 2043
listx	    dd 15
2044
listy	    dd 72
31 halyavin 2045
listxsize dd 350
2046
listysize dd 41
2047
 
2048
filelistxy    dd 0
2049
filelistsize  dd 0
2050
scrollsize    dd 8
2051
listcolor     dd 0xffffff ;0xeeeeee
2052
scrollcolor   dd 0x778877
2053
scrollboxcol  dd 0x335533
2054
scrollbutcol  dd 0x224422
134 diamond 2055
scrollbutsize = 9
31 halyavin 2056
 
2057
;URL LINE PARAMETRS
2058
 
131 diamond 2059
urlx	 dd 10
2060
urly	 dd 20
31 halyavin 2061
urlxsize dd 350
2062
urlysize dd 12
552 diamond 2063
endg
31 halyavin 2064
 
2065
drawmenu:
2066
    mov eax,4
2067
    mov esi,12
2068
menuloo:
485 heavyiron 2069
    mcall
31 halyavin 2070
    add ebx,11
2071
    add edx,12
2072
    dec edi
2073
    jnz menuloo
2074
    ret
2075
 
2076
menubutton:
2077
    mov  eax,8
2078
nextmenubut:
485 heavyiron 2079
    mcall
31 halyavin 2080
    add  ecx,11*65536
2081
    inc  edx
2082
    dec  edi
2083
    jnz  nextmenubut
2084
    ret
2085
 
2086
;*****************************
2087
; READ FILE STRUCTURE PROC
2088
;*****************************
2089
 
2090
read_directory:
2091
 
2092
;STEP 1 CLEAR CONVINFO
2093
    mov  edi,convinfo
2094
    mov  al,255
134 diamond 2095
    mov  ecx,4096*27
31 halyavin 2096
    cld
134 diamond 2097
    push edi
31 halyavin 2098
    rep  stosb
134 diamond 2099
    pop  edi
31 halyavin 2100
 
2101
;STEP 2 TEST ON HD OR PARTITION
2102
    cmp [path],byte '/'
2103
    je nstep
134 diamond 2104
; copy info on RD and FD
993 Ataualpa 2105
	mov	esi, hdimg
2106
	mov	ecx, 2*27
2107
	rep	movsb
134 diamond 2108
; hard disks
993 Ataualpa 2109
	mov	eax, 4
134 diamond 2110
.1:
993 Ataualpa 2111
	mov	ecx, 27
2112
	cmp	dword [esi], 0
2113
	jz	.2
2114
	rep	movsb
2115
	jmp	.3
134 diamond 2116
.2:
993 Ataualpa 2117
	add	esi, ecx
134 diamond 2118
.3:
993 Ataualpa 2119
	dec	eax
2120
	jnz	.1
2121
	mov	[listsize], 0
2122
	ret
31 halyavin 2123
nstep:
2124
    cmp [path+3],byte '/'
2125
    je nstep2
131 diamond 2126
    cmp [path+4],byte '/'
2127
    je nstep2
156 diamond 2128
    mov ecx,1
131 diamond 2129
    cmp [path+1],word 'RD'
993 Ataualpa 2130
    jz	loxpt
156 diamond 2131
    cmp [path+1],word 'CD'
993 Ataualpa 2132
    jz	loxpt
156 diamond 2133
    mov ecx,2
131 diamond 2134
    cmp [path+1],word 'FD'
993 Ataualpa 2135
    jz	loxpt
131 diamond 2136
    cmp [path+1],dword 'HD0'
2137
    jne nostep_HD0
134 diamond 2138
    movzx ecx,byte [table_area+2]
131 diamond 2139
    jmp loxpt
2140
nostep_HD0:
2141
    cmp [path+1],dword 'HD1'
2142
    jne nostep_HD1
134 diamond 2143
    movzx ecx,byte [table_area+3]
131 diamond 2144
    jmp loxpt
2145
nostep_HD1:
2146
    cmp [path+1],dword 'HD2'
2147
    jne nostep_HD2
134 diamond 2148
    movzx ecx,byte [table_area+4]
131 diamond 2149
    jmp loxpt
2150
nostep_HD2:
2151
    cmp [path+1],dword 'HD3'
2152
    jne nostep_HD3
134 diamond 2153
    movzx ecx,byte [table_area+5]
131 diamond 2154
    jmp loxpt
2155
nostep_HD3:
2156
 
134 diamond 2157
    mov ecx,2
131 diamond 2158
 
31 halyavin 2159
loxpt:
993 Ataualpa 2160
	cmp	ecx, 20
2161
	jbe	@f
2162
	mov	ecx, 20
134 diamond 2163
@@:
993 Ataualpa 2164
	mov	eax, a1
2165
	mov	esi, ptimg
134 diamond 2166
@@:
993 Ataualpa 2167
	stosd
2168
	add	eax, 3
2169
	push	ecx esi
2170
	mov	ecx, 23
2171
	rep	movsb
2172
	pop	esi ecx
2173
	loop	@b
31 halyavin 2174
    mov [listsize],0
2175
    ret
2176
nstep2:
2177
 
134 diamond 2178
;STEP 3 was deleted
31 halyavin 2179
 
2180
;STEP 4 READ DATA FROM HD
2181
 
2182
loorhd:
134 diamond 2183
    mov  eax,70
31 halyavin 2184
    mov  ebx,fileinfoblock
485 heavyiron 2185
    mcall
31 halyavin 2186
 
134 diamond 2187
    cmp eax,6
131 diamond 2188
    je	    end_of_dir
31 halyavin 2189
 
2190
;  It's erorr's test is poor code
2191
 
2192
    cmp eax,1
2193
    jne no_inv_part
131 diamond 2194
    glabel 10,10,'Invalid partition or hd base',cl_Red+font_Big
31 halyavin 2195
    jmp end_of_dir
2196
no_inv_part:
2197
    cmp eax,3
2198
    jne no_unk_fs
134 diamond 2199
    glabel 10,10,'Unknown file system',cl_Red+font_Big
31 halyavin 2200
    jmp end_of_dir
2201
no_unk_fs:
2202
 
2203
end_of_dir:
134 diamond 2204
; -1 -> 0
993 Ataualpa 2205
	cmp	ebx, -1
2206
	sbb	ebx, -1
31 halyavin 2207
    mov  [dirlen],ebx
2208
 
134 diamond 2209
    ; command successful
31 halyavin 2210
 
993 Ataualpa 2211
	mov	esi, outinfo+32
2212
	and	[listsize], 0
2213
	test	ebx, ebx
2214
	jz	nofiles
31 halyavin 2215
 
2216
  newlineb:
993 Ataualpa 2217
	push	ebx
31 halyavin 2218
 
993 Ataualpa 2219
	mov	edi, fileinfo
2220
	push	edi
2221
	mov	al, ' '
2222
	mov	ecx, 27
2223
	rep	stosb
2224
	pop	edi
2225
	push	esi
2226
	add	esi, 40
2227
	mov	[edi], esi
2228
	pop	esi
31 halyavin 2229
 
993 Ataualpa 2230
	mov	eax, 'DAT '	; data or ... ?
2231
	mov	cl, [esi]
2232
	test	cl, 0x10
2233
	jz	@f
2234
	mov	eax, 'FOL '
2235
	mov	[edi+15], eax
2236
	jmp	nosize
134 diamond 2237
@@:
993 Ataualpa 2238
	test	cl, 8
2239
	jz	novol
2240
	mov	eax, 'Fvol'
2241
	mov	[edi+15], eax
2242
	jmp	nosize
134 diamond 2243
novol:
993 Ataualpa 2244
	mov	[edi+15], eax
31 halyavin 2245
 
134 diamond 2246
; size
993 Ataualpa 2247
	mov	eax, [esi+32]
2248
	push	esi
2249
	lea	esi, [edi+26]
2250
	mov	ebx, 10
2251
	mov	ecx, 8
134 diamond 2252
newnum:
993 Ataualpa 2253
	xor	edx, edx
2254
	div	ebx
2255
	add	dl, '0'
2256
	mov	[esi], dl
2257
	test	eax, eax
2258
	jz	zernum
2259
	dec	esi
2260
	loop	newnum
134 diamond 2261
zernum:
993 Ataualpa 2262
	pop	esi
134 diamond 2263
nosize:
31 halyavin 2264
 
134 diamond 2265
; date
993 Ataualpa 2266
	mov	dword [edi+6], '.  .'
134 diamond 2267
; year
993 Ataualpa 2268
	movzx	eax, word [esi+28+2]
2269
	mov	ecx, 4
134 diamond 2270
newdel1:
993 Ataualpa 2271
	xor	edx, edx
2272
	mov	ebx, 10
2273
	div	ebx
2274
	add	edx, '0'
2275
	mov	[edi+ecx+9], dl
2276
	loop	newdel1
134 diamond 2277
; month
993 Ataualpa 2278
	movzx	eax, byte [esi+28+1]
2279
	xor	edx, edx
2280
	div	ebx
2281
	add	al, '0'
2282
	add	dl, '0'
2283
	mov	[edi+7], al
2284
	mov	[edi+8], dl
134 diamond 2285
; day
993 Ataualpa 2286
	movzx	eax, byte [esi+28]
2287
	xor	edx, edx
2288
	div	ebx
2289
	add	al, '0'
2290
	add	dl, '0'
2291
	mov	[edi+4], al
2292
	mov	[edi+5], dl
31 halyavin 2293
 
2294
;STEP 5 Test on WRITE OR NOTWRITE
993 Ataualpa 2295
	cmp	word [esi+40], '.'
2296
	jz	nextfl
2297
	cmp	word [esi+40], '..'
2298
	jnz	@f
2299
	cmp	byte [esi+42], 0
2300
	jz	nextfl
134 diamond 2301
@@:
31 halyavin 2302
 
134 diamond 2303
; STEP 6 SORT ALGORYTHM
31 halyavin 2304
 
993 Ataualpa 2305
	push	esi
2306
	xor	esi, esi
31 halyavin 2307
 
134 diamond 2308
; At first Fold after Dat
31 halyavin 2309
 
2310
ftestname:
993 Ataualpa 2311
	cmp	dword [convinfo+esi], -1
2312
	jz	writefile
134 diamond 2313
    cmp byte [fileinfo+15],'F'
131 diamond 2314
    je	    F
134 diamond 2315
    cmp byte [fileinfo+15],'D'
2316
    jne add_element
2317
D:  cmp byte [convinfo+esi+15],'D'
131 diamond 2318
    je	    add_element
134 diamond 2319
    cmp byte [convinfo+esi+15],'F'
131 diamond 2320
    je	    skipfile
31 halyavin 2321
    jmp add_element
134 diamond 2322
F:  cmp byte [convinfo+esi+15],'D'
31 halyavin 2323
    je writenow
134 diamond 2324
;    cmp byte [convinfo+esi+15],'F'
31 halyavin 2325
;    je  add_element
2326
;    jmp add_element
2327
 
2328
add_element:
134 diamond 2329
; compare items
993 Ataualpa 2330
	movzx	eax, [viewmode]
2331
	call	[compare+eax*4]
2332
	jb	writenow
31 halyavin 2333
skipfile:
134 diamond 2334
    add esi,27
31 halyavin 2335
    jmp ftestname
2336
 
2337
writenow:
134 diamond 2338
    mov ecx,4096*27-1
31 halyavin 2339
    sub ecx,esi
2340
ldloop:
2341
    mov al,[convinfo+ecx+esi]
134 diamond 2342
    mov [convinfo+ecx+esi+27],al
31 halyavin 2343
    dec ecx
2344
    jns ldloop
2345
 
2346
writefile:
134 diamond 2347
    mov ecx,26
31 halyavin 2348
wfloop:
134 diamond 2349
    mov al,[fileinfo+ecx]
31 halyavin 2350
    mov [convinfo+ecx+esi],al
2351
    dec ecx
2352
    jns wfloop
993 Ataualpa 2353
	inc	[listsize]
2354
	pop	esi
31 halyavin 2355
 
2356
nextfl:
993 Ataualpa 2357
	add	esi, 304
2358
	pop	ebx
2359
	dec	ebx
2360
	jnz	newlineb
31 halyavin 2361
 
134 diamond 2362
nofiles:
993 Ataualpa 2363
	ret
31 halyavin 2364
 
134 diamond 2365
toupper:
993 Ataualpa 2366
	cmp	al, 'a'
2367
	jb	.ret
2368
	cmp	al, 'z'
2369
	ja	@f
134 diamond 2370
.sub20:
993 Ataualpa 2371
	sub	al, 0x20
134 diamond 2372
.ret:
993 Ataualpa 2373
	ret
134 diamond 2374
@@:
993 Ataualpa 2375
	cmp	al, 0xA0
2376
	jb	.ret
2377
	cmp	al, 0xB0
2378
	jb	.sub20
2379
	cmp	al, 0xE0
2380
	jb	.ret
2381
	cmp	al, 0xF0
2382
	jae	@f
2383
	sub	al, 0xE0-0x90
2384
	ret
134 diamond 2385
@@:
993 Ataualpa 2386
	cmp	al, 0xF1
2387
	jnz	.ret
2388
	dec	eax
2389
	ret
31 halyavin 2390
 
134 diamond 2391
compare_date:
993 Ataualpa 2392
	pushad
2393
	mov	al, [fileinfo+10]
2394
	cmp	al, [convinfo+esi+10]
2395
	jnz	.ret
2396
	mov	al, [fileinfo+11]
2397
	cmp	al, [convinfo+esi+11]
2398
	jnz	.ret
2399
	mov	al, [fileinfo+12]
2400
	cmp	al, [convinfo+esi+12]
2401
	jnz	.ret
2402
	mov	al, [fileinfo+13]
2403
	cmp	al, [convinfo+esi+13]
2404
	jnz	.ret
2405
	mov	al, [fileinfo+7]
2406
	cmp	al, [convinfo+esi+7]
2407
	jnz	.ret
2408
	mov	al, [fileinfo+8]
2409
	cmp	al, [convinfo+esi+8]
2410
	jnz	.ret
2411
	mov	al, [fileinfo+4]
2412
	cmp	al, [convinfo+esi+4]
2413
	jnz	.ret
2414
	mov	al, [fileinfo+5]
2415
	cmp	al, [convinfo+esi+5]
2416
	jz	compare_name.1
134 diamond 2417
.ret:
993 Ataualpa 2418
	popad
2419
	ret
134 diamond 2420
compare_name:
993 Ataualpa 2421
	pushad
134 diamond 2422
.1:
993 Ataualpa 2423
	mov	edi, dword [convinfo+esi]
2424
	mov	esi, dword [fileinfo]
2425
	call	strcmpi
2426
	popad
2427
	ret
134 diamond 2428
compare_ext:
993 Ataualpa 2429
	pushad
2430
	mov	esi, dword [convinfo+esi]
2431
	mov	edi, dword [fileinfo]
2432
	call	find_ext
2433
	xchg	esi, edi
2434
	call	find_ext
2435
	call	strcmpi
2436
	popad
2437
	jz	compare_name
2438
	ret
134 diamond 2439
compare_size:
993 Ataualpa 2440
	pushad
2441
	lea	edi, [convinfo+esi+19]
2442
	lea	esi, [fileinfo+19]
2443
	mov	ecx, 8
2444
	repz	cmpsb
2445
	popad
2446
	jz	compare_name
2447
	ret
31 halyavin 2448
 
134 diamond 2449
strcmpi:
993 Ataualpa 2450
	lodsb
2451
	call	toupper
2452
	push	eax
2453
	mov	al, [edi]
2454
	inc	edi
2455
	call	toupper
2456
	cmp	[esp], al
2457
	pop	eax
2458
	jnz	@f
2459
	test	al, al
2460
	jnz	strcmpi
134 diamond 2461
@@:
993 Ataualpa 2462
	ret
134 diamond 2463
 
2464
find_ext:
993 Ataualpa 2465
	lodsb
2466
	test	al, al
2467
	jz	.noext
2468
	cmp	al, '.'
2469
	jnz	find_ext
2470
	ret
134 diamond 2471
.noext:
993 Ataualpa 2472
	dec	esi
2473
	ret
134 diamond 2474
 
31 halyavin 2475
;******************************************************************************
2476
 
2477
; DATA AREA
2478
pmenu_draw dd 0  ;if poup menu is draw,update all window
131 diamond 2479
flick	     dd 0  ;anti flick on ?
2480
drawhf	       dd 0  ;draw file menu?
2481
drawhv	       dd 0  ;draw view menu?
2482
drawhi	       dd 0  ;draw info menu?
2483
cursor	       dd 0  ;cursor in prompt line
2484
focus	     dd 0  ;prompt edit or window?
31 halyavin 2485
downstop   dd 0
2486
filecursor dd 0
131 diamond 2487
mousex	       dd 0
2488
mousey	       dd 0
31 halyavin 2489
blocksread dd 0
2490
listsize   dd 0  ;num of files in directory
131 diamond 2491
temp	   dd 0
31 halyavin 2492
readblock  dd 1
2493
dlg_type   db 0 ;S-save O-open
134 diamond 2494
browser    db 0  ;0-dialog, 1-browser
2495
viewmode   db 0  ;folder sort
31 halyavin 2496
 
993 Ataualpa 2497
compare dd	compare_name
2498
	dd	compare_ext
2499
	dd	compare_size
2500
	dd	compare_date
31 halyavin 2501
 
993 Ataualpa 2502
aRD	db	'RD',0
2503
aFD	db	'FD',0
2504
aHD0	db	'HD0',0
2505
aHD1	db	'HD1',0
2506
aHD2	db	'HD2',0
2507
aHD3	db	'HD3',0
2508
aCD0	db	'CD0',0
2509
aCD1	db	'CD1',0
2510
aCD2	db	'CD2',0
2511
aCD3	db	'CD3',0
2512
a1	db	'1',0,0
2513
a2	db	'2',0,0
2514
a3	db	'3',0,0
2515
a4	db	'4',0,0
2516
a5	db	'5',0,0
2517
a6	db	'6',0,0
2518
a7	db	'7',0,0
2519
a8	db	'8',0,0
2520
a9	db	'9',0,0
2521
a10	db	'10',0
2522
a11	db	'11',0
2523
a12	db	'12',0
2524
a13	db	'13',0
2525
a14	db	'14',0
2526
a15	db	'15',0
2527
a16	db	'16',0
2528
a17	db	'17',0
2529
a18	db	'18',0
2530
a19	db	'19',0
2531
a20	db	'20',0
131 diamond 2532
 
134 diamond 2533
hdimg:
993 Ataualpa 2534
	dd	aRD
2535
	db	'RAMDISK    FOL         '
2536
	dd	aFD
2537
	db	'FLOPPYDISK FOL         '
2538
hdimg1	dd	0
2539
	db	'HARDDISK   FOL         '
2540
hdimg2	dd	0
2541
	db	'HARDDISK   FOL         '
2542
hdimg3	dd	0
2543
	db	'HARDDISK   FOL         '
2544
hdimg4	dd	0
2545
	db	'HARDDISK   FOL         '
2546
ptimg	db	'PARTITION  FOL         '
31 halyavin 2547
 
2548
modetext:
2549
      ;0123456789012345
2550
   db 'SORT BY NAME   0'
2551
   db 'SORT BY EXT.   1'
2552
   db 'SORT BY SIZE   2' ;type sort
2553
   db 'SORT BY DATE   3'
2554
   db 'DEL SORT NAME  4'
2555
   db 'DEL SORT EXT.  5'
2556
   db 'DEL SORT SIZE  6' ;type sort
2557
   db 'DEL SORT DATE  7'
2558
 
131 diamond 2559
dirlen	      dd     0x1
31 halyavin 2560
b_color   dd   0x6677cc
2561
 
2562
; //// Willow
131 diamond 2563
;MRUfile:
2564
;   dd 0x0
2565
;   dd 0x0
2566
;   dd 0x1
2567
;   dd path
2568
;   dd tempzone
2569
;   db '/RD/1/MRU.LST',0
31 halyavin 2570
; //// Willow
2571
 
2572
;Name of programs
539 spraid 2573
editor	      db '/sys/TINYPAD',0
529 spraid 2574
bmpview   db '/sys/MV',0
2575
jpgview   db '/sys/JPEGVIEW',0
2576
gifview   db '/sys/GIFVIEW',0
993 Ataualpa 2577
ac97	  db '/sys/AC97SND',0
2578
htmlv	  db '/sys/NETWORK/HTMLV',0
539 spraid 2579
rtfread   db '/sys/RTFREAD',0
31 halyavin 2580
; //// Willow
529 spraid 2581
pngview   db '/sys/@RCHER',0
31 halyavin 2582
; //// Willow
539 spraid 2583
midamp	  db '/sys/MIDAMP',0
2584
view3ds   db '/sys/3D/VIEW3DS',0
993 Ataualpa 2585
life2	  db '/sys/DEMOS/LIFE2',0
31 halyavin 2586
 
134 diamond 2587
more_char db 10h
2588
 
552 diamond 2589
IncludeIGlobals
2590
 
31 halyavin 2591
fileinfo_start:
993 Ataualpa 2592
	dd	7
2593
	dd	0
134 diamond 2594
fileinfo_params:
993 Ataualpa 2595
	dd	0
2596
	dd	0
2597
	dd	0
2598
	db	0
134 diamond 2599
fileinfo_name:
993 Ataualpa 2600
	dd	0
31 halyavin 2601
 
134 diamond 2602
clipfile_info:
993 Ataualpa 2603
	dd	?
2604
	dd	0
2605
	dd	0
2606
	dd	?
2607
	dd	paramtest
2608
	db	'/SYS/CLIPFILE.TXT',0
134 diamond 2609
copyr_run:
993 Ataualpa 2610
	dd	7
2611
	dd	0
2612
	dd	copyr_param
2613
	dd	0
2614
	dd	0
2615
	db	'/SYS/COPYR',0
134 diamond 2616
 
31 halyavin 2617
fileinfoblock:
134 diamond 2618
   dd 0x1    ; read folder
131 diamond 2619
   dd 0x0    ; first block
134 diamond 2620
   dd 0x0    ; flags (ANSI names)
2621
   dd 4095   ; number of blocks to read
131 diamond 2622
   dd outinfo	  ; ret offset
31 halyavin 2623
path:
993 Ataualpa 2624
times 1024 db 0     ;path
131 diamond 2625
 
2626
table_area:
2627
rb 10
2628
 
31 halyavin 2629
;rb 256
2630
but_file:
2631
file 'systr12.GIF'
134 diamond 2632
 
2633
I_END:
2634
 
2635
scroll_height dd ?
2636
scroll_pos dd ?
2637
 
31 halyavin 2638
butimg:
131 diamond 2639
rb 400*16*3+8	  ;buttons (left pice of picture)
31 halyavin 2640
logoimg:
131 diamond 2641
rb 70*16*3+8	;logo (right pice of picture)
31 halyavin 2642
logoinfimg:
131 diamond 2643
rb 60*60*3+8	;logoinfo (right pice of picture)
31 halyavin 2644
upsb:
131 diamond 2645
rb 8*9*3+8    ;up scroll button
31 halyavin 2646
dnsb:
131 diamond 2647
rb 8*9*3+8    ;down scroll button
31 halyavin 2648
 
2649
;ICONS RESERVE AREA
2650
hdico:
2651
rb 12*9*3+8
2652
rdico:
2653
rb 12*9*3+8
2654
folico:
2655
rb 12*9*3+8
2656
datico:
2657
rb 12*9*3+8
2658
delico:
2659
rb 12*9*3+8
2660
imgico:
2661
rb 12*9*3+8
2662
txtico:
2663
rb 12*9*3+8
2664
asmincico:
2665
rb 12*9*3+8
2666
execico:
2667
rb 12*9*3+8
156 diamond 2668
cdico:
2669
rb 12*9*3+8
31 halyavin 2670
 
131 diamond 2671
tempimg:    ;reserve ram for images
2672
rb 400*100*3+8	     ;for picture
31 halyavin 2673
rb 8000
2674
 
2675
MYPID:
2676
rd 8
2677
 
2678
param_area:
2679
rb 256
2680
paramtest:
134 diamond 2681
rb 1024
31 halyavin 2682
filedir:
134 diamond 2683
rb 1024
31 halyavin 2684
 
552 diamond 2685
IncludeUGlobals
2686
 
31 halyavin 2687
procinfo process_information
2688
sc system_colors
2689
 
2690
fileinfo:
2691
rb 200 ;4096*62+1024
2692
 
993 Ataualpa 2693
copyr_param	rb	256
134 diamond 2694
 
31 halyavin 2695
outinfo:
134 diamond 2696
rb 32+4096*304
31 halyavin 2697
 
2698
convinfo:
134 diamond 2699
rb 4096*27
2700
; stack
993 Ataualpa 2701
	align 4
2702
	rb	1024
31 halyavin 2703
RAM_END: