Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 531 → Rev 532

/programs/media/jpegview/trunk/jpegview.asm
33,7 → 33,7
PARAMS = memsize - 1024
 
appname equ 'Jpegview '
version equ '0.15'
version equ '0.16'
 
use32
 
132,6 → 132,8
cmp [PARAMS+2], byte "L"
je boot_set_background
@@:
cmp byte [PARAMS], 1
jz ipc_service
mov edi, name_string ; clear string with file name
mov al, 0
mov ecx, 100
250,6 → 252,110
 
;******************************************************************************
 
ipc_service:
mcall 68, 11
mov esi, PARAMS+1
xor eax, eax
xor ecx, ecx
@@:
lodsb
test al, al
jz @f
lea ecx, [ecx*5]
lea ecx, [ecx*2+eax-'0']
jmp @b
@@:
add ecx, 16
mov edx, ecx
mcall 68, 12
test eax, eax
jnz @f
.exit:
mcall -1
@@:
mov ecx, eax
and dword [ecx], 0
mov dword [ecx+4], 8
mov [ipc_mem], ecx
mcall 60, 1
mcall 40, 1 shl 6
mcall 23, 500 ; wait up to 5 seconds for IPC message
test eax, eax
jz .exit
; we got message with JPEG data, now decode it
mov eax, [ecx+12]
mov [ipc_mem_size], eax
; init JPEG decoder
mov ecx,memsize-fin-stack_size ; size
mov edi,fin ; pointer
call add_mem ; mark memory from fin to 0x100000-1024 as free
call colorprecalc ; calculate colors
; hook file functions
mov ecx, 4
call malloc
and dword [edi], 0
lea eax, [edi-file_handler.position]
mov byte [read], 0xE9
mov dword [read+1], read_from_mem - (read+5)
; decode
call jpeg_info
mov dword [jpeg_st],ebp
test ebp,ebp
jz .end
 
mov eax, [ebp + x_size]
mul dword [ebp + y_size]
lea eax, [eax*3+8]
mov ecx, eax
mcall 68, 12
test eax, eax
jz .end
mov [ipc_mem_out], eax
mov ebx, [ebp + x_size]
mov [eax], ebx
mov ebx, [ebp + y_size]
mov [eax+4], ebx
 
mov dword [ebp+draw_ptr],put_chunk_to_mem
call jpeg_display
 
; IPC response
mov esi, [ebp + x_size]
imul esi, [ebp + y_size]
lea esi, [esi*3+8]
mov edx, [ipc_mem_out]
.response:
mov ecx, [ipc_mem]
mov ecx, [ecx+8]
mcall 60,2
 
jmp close_program ; close the program right now
 
.end:
mov esi, 8
mov edx, x_pointer ; points to 2 null dwords
jmp .response
 
read_from_mem:
; in: eax=handle, ecx=size, edi=pointer to buffer
; out: ecx=number of read bytes, buffer filled
pushad
mov esi, [ipc_mem]
add esi, 16
add esi, [eax+file_handler.position]
add ecx, [eax+file_handler.position]
cmp ecx, [ipc_mem_size]
jb @f
mov ecx, [ipc_mem_size]
@@:
sub ecx, [eax+file_handler.position]
add [eax+file_handler.position], ecx
rep movsb
popad
ret
 
;******************************************************************************
 
put_chunk_to_bgr:
pushad
 
285,8 → 391,34
 
;******************************************************************************
 
put_chunk_to_mem:
; in: (eax,ebx) = start coordinates of chunk
; (ecx,edx) = sizes of chunk
; edi -> chunk data
push esi edi edx
mov esi, edi
mov edi, ebx
imul edi, [ebp + x_size]
add edi, eax
lea edi, [edi*3+8]
add edi, [ipc_mem_out]
@@:
push ecx edi
lea ecx, [ecx*3]
rep movsb
pop edi ecx
add edi, [ebp + x_size]
add edi, [ebp + x_size]
add edi, [ebp + x_size]
dec edx
jnz @b
pop edx edi esi
ret
 
;******************************************************************************
 
 
 
; *********************************************
; ******* WINDOW DEFINITIONS AND DRAW ********
; *********************************************
597,8 → 729,11
dd -(iniciomemoria+4),-(iniciomemoria+4),(iniciomemoria+4),.l1,0
.l1 dd 0
 
fin:
I_END:
sc system_colors
ipc_mem dd ?
ipc_mem_size dd ?
ipc_mem_out dd ?
fileattr: rb 40
dirinfo: rb 32+304
fin:
/programs/media/mixer/trunk/mixer.asm
59,15 → 59,7
 
cmp ah,101
jnz nochange
mov al,byte [usecard]
cld
inc al
and al,3
cmp al,0
jnz nozer
mov al,1
nozer:
mov byte [usecard],al
xor byte [usecard], 3 ; 1 <-> 2
 
call drawusedcard
 
74,28 → 66,13
nochange:
 
cmp byte [usecard],byte 1
jz usesb16
jnz usesb16II
 
cmp byte [usecard],byte 2
jnz nousesb16II
jmp usesb16II
nousesb16II:
 
cmp byte [usecard],byte 3
jnz nousewss
jmp usewss
nousewss:
 
 
 
; SOUND BLASTER 16
 
 
usesb16:
 
 
cld
 
mov al,20
cmp ah,al
jge nomain
235,85 → 212,6
 
 
 
 
 
 
 
 
 
; WINDOWS SOUND SYSTEM
 
usewss:
 
cld
 
mov al,20
cmp ah,al
jge wnomain
 
mov ecx,255
cmp ah,12
jnz wnomain12
mov ecx,200
wnomain12:
cmp ah,13
jnz wnomain13
mov ecx,150
wnomain13:
cmp ah,14
jnz wnomain14
mov ecx,70
wnomain14:
cmp ah,15
jnz wnomain15
mov ecx,0
wnomain15:
 
mov eax,27
mov ebx,1
mcall
 
jmp still
 
wnomain:
 
mov al,30
cmp ah,al
jge wnocd
 
mov ecx,255
 
cmp ah,22
jnz wnocd12
mov ecx,200
wnocd12:
cmp ah,23
jnz wnocd13
mov ecx,150
wnocd13:
cmp ah,24
jnz wnocd14
mov ecx,70
wnocd14:
cmp ah,25
jnz wnocd15
mov ecx,0
wnocd15:
 
mov eax,27
mov ebx,2
mcall
 
jmp still
 
wnocd:
 
 
jmp still
 
 
 
 
; *********************************************
; ******* WINDOW DEFINITIONS AND DRAW ********
; *********************************************
335,38 → 233,31
 
 
mov edx,16 ; button id
mov ebx,10*65536
mov ebx,10*65536+22
 
newbut:
 
push edx
push ebx
 
mov esi,[bcolor]
 
mov eax,8 ; function 8 : define and draw button
mov bx,22 ; [x start] *65536 + [x size]
mov ecx,35*65536+8 ; [y start] *65536 + [y size]
dec edx
mcall
mov bx,22 ; [x start] *65536 + [x size]
mov ecx,45*65536+8 ; [y start] *65536 + [y size]
dec edx
mcall
mov bx,22 ; [x start] *65536 + [x size]
mov ecx,55*65536+8 ; [y start] *65536 + [y size]
dec edx
mcall
mov bx,22 ; [x start] *65536 + [x size]
mov ecx,65*65536+8 ; [y start] *65536 + [y size]
dec edx
mcall
mov bx,22 ; [x start] *65536 + [x size]
mov ecx,75*65536+8 ; [y start] *65536 + [y size]
dec edx
mcall
 
pop ebx
pop edx
 
add ebx,30*65536
373,13 → 264,9
add edx,10
 
cmp edx,16+6*10
jz butdone
jnz newbut
 
jmp newbut
 
butdone:
 
 
mov eax,4 ; function 4 : write text to window
mov ebx,10*65536+104 ; [x start] *65536 + [y start]
mov ecx,0x00ffffff ; color of text RRGGBB
413,21 → 300,12
mov edx,[bcolor]
mcall
 
mov eax,[usecard]
mov edx,c3
mov edx,c1
 
cmp al,1
jnz nosbc
mov edx,c1
nosbc:
cmp al,2
cmp [usecard],2
jnz nosbcII
mov edx,c2
nosbcII:
cmp al,3
jnz nowssc
mov edx,c3
nowssc:
 
mov eax,4
mov ebx,14*65536+123
453,14 → 331,10
 
c1 db 'SOUND BLASTER 16 - MIXER I '
c2 db 'SOUND BLASTER 16 - MIXER II '
c3 db 'WINDOWS SOUND SYSTEM '
 
 
usecard dd 0x1
usecard db 0x1
 
title db 'MIXER',0
 
I_END:
 
 
 
/programs/media/pic4/trunk/pic4.asm
13,6 → 13,7
 
include 'lang.inc'
include '..\..\..\macros.inc'
purge mov ; decrease kpack'ed size
 
START:
mov eax,48
21,7 → 22,9
mov edx,sizeof.system_colors
mcall
 
call check_parameters
cmp dword [I_Param], 'BOOT'
jz OnBoot
 
call draw_window
 
call load_texture
53,51 → 56,41
 
shr eax,8
 
cmp eax,101 ; tiled
cmp al,101 ; tiled
jne no101
mov ecx,1
setbgrmode:
mov eax,15
mov ebx,4
mov ecx,1
mcall
mov eax,15
mov ebx,3
dec ebx
mcall
jmp still
no101:
 
cmp eax,102 ; stretch
jne no102
mov eax,15
mov ebx,4
mov ecx,2
mcall
mov eax,15
mov ebx,3
mcall
jmp still
cmp al, 102
jz setbgrmode
no102:
 
cmp eax,1 ; end program
cmp al,1 ; end program
jnz no_end
or eax,-1
mcall
no_end:
 
cmp eax,11
cmp al,11
jz bg
cmp eax,12
cmp al,12
jz bg
cmp eax,13
cmp al,13
jz bg
 
cmp eax,121
cmp al,121
jb no_bg_select
cmp eax,133
jg no_bg_select
sub eax,121
shl eax,2
add eax,arrays
mov eax,[eax]
cmp al,133
ja no_bg_select
mov eax,[arrays + (eax-121)*4]
mov [usearray],eax
call load_texture
call draw_image
104,19 → 97,14
jmp still
no_bg_select:
 
cmp eax,14+20
cmp al,14+20
jge bg4
 
jmp bg2
 
 
check_parameters:
OnBoot:
 
cmp [I_Param],dword 'BOOT'
je @f
ret
@@:
 
call load_texture
 
mov eax,15
125,7 → 113,6
mov edx,256
mcall
 
mov eax,15
mov ebx,5
mov ecx,0x40000 ; <<< 0x40000 for blue, 0x40000+1 for red,
; <<< 0x40000+2 for green background at boot
133,13 → 120,11
mov esi,256*3*256
mcall
 
mov eax,15
mov ebx,4
dec ebx
mov ecx,2
mcall
 
mov eax,15
mov ebx,3
dec ebx
mcall
 
mov eax,-1
178,13 → 163,13
 
mov edi,0x40000
 
cmp eax,12
cmp al,12
jnz bb1
mov edi,0x40000+1
inc edi
bb1:
cmp eax,13
cmp al,13
jnz bb2
mov edi,0x40000+2
inc edi
bb2:
 
mov eax,15
193,7 → 178,6
mov edx,256
mcall
 
mov eax,15
mov ebx,5
mov ecx,edi
mov edx,0
200,7 → 184,6
mov esi,256*256*3
mcall
 
mov eax,15
mov ebx,3
mcall
 
210,34 → 193,13
; colored background
 
bg2:
 
push eax
 
mov edi, eax
mcall 15,4,1
mcall ,1,,1
lea ecx, [(edi-14)*3+fill]
mcall ,5,,0,3*1*1
mcall ,3
 
mov eax,15
mov ebx,1
mov ecx,1
mov edx,1
mcall
 
pop eax
sub eax,14
imul eax,3
 
mov ecx,fill
add ecx,eax
 
mov eax,15
mov ebx,5
xor edx,edx
mov esi,3*1*1
mcall
 
mov eax,15
mov ebx,3
mcall
 
jmp still
 
 
245,9 → 207,8
 
bg4:
 
sub eax,14+20
shl eax,3
add eax,shape
add eax,shape - (14+20)*8
mov ecx,[eax+0]
mov edx,[eax+4]
 
255,7 → 216,6
mov ebx,1
mcall
 
mov eax,15
mov ebx,3
mcall
 
275,17 → 235,17
 
gentexture:
 
mov ecx,0 ; ycounter
mov edi,0 ; pixel counter
xor ecx,ecx ; ycounter
xor edi,edi ; pixel counter
 
mov ebp,[usearray]
 
ylup:
mov ebx,0
xor ebx,ebx
 
xlup:
push edi
mov edi, 0
xor edi, edi
mov esi, 512000000 ; abnormous initial value :)
 
pixlup: