/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: |