Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 109 → Rev 139

/programs/media/ac97wav/trunk/ac97wav.asm
11,8 → 11,9
; stops playing before closing a window
; 0.08 Nov 24, 2004 added support for 8bit and mono modes
; +variable rate for some chipsets
; 0.09 August 26, 2006 modified to use function 70
;
; Use [flat assembler 1.56] to compile.
; Use [flat assembler 1.64] to compile.
;
;---------------------------------------------------------------------
 
31,7 → 32,6
 
;---------------------------------------------------------------------
 
include "lang.inc"
include "macros.inc" ; standart macros & constants
include "meosfunc.inc" ; MenuetOS API functions names
include "debug.inc" ; printing to debug board
449,20 → 449,25
;; in: nothing
;; out: nothing (but sound :) !corrupts registers!
play:
; at first, reset file
mov [fileinfo.first_block], 0
; at first, reset file and get file size
mcall MF_SYSTREE, attrinfo
test eax, eax
jnz .notfound
mov eax, [fileattr+32]
mov [file_size], eax
mov [fileinfo.first_byte], 0
mcall MF_SYSTREE, fileinfo ; load a block, returns error code in eax
; and size of the file in ebx
test eax, eax ; 0 - successful
jz @f
cmp eax, 6 ; 6 = eof - successful too
jz @f
.notfound:
print "AC97: File not found!"
mov [status], ST_STOP
jmp .exit
@@:
shr ebx, 9 ; size_of_file / 512 = number_of_blocks
mov [file_size], ebx
 
 
mov al, [LOAD_BUFFER+32] ; bytes per sample
dec al
jz @f
608,7 → 613,7
 
movzx edx, byte [wav_mode]
mov ecx, [blocks + edx * 4]
mov [fileinfo.blocks], ecx
mov [fileinfo.bytes], ecx
 
mov esi, LOAD_BUFFER
mov edi, [buffers+eax*4]
617,14 → 622,16
mcall MF_SYSTREE, fileinfo
test eax, eax
jz @f
cmp eax, 6
jz @f
cmp [attempts],100
je @f
inc [attempts]
jmp start_attempts
dpd eax
newline
dpd [fileinfo.first_block]
newline
; dpd eax
; newline
; dpd [fileinfo.first_block]
; newline
@@:
; print " loaded!"
 
652,7 → 659,7
 
pop edx ebx
mov eax,[esp+4] ;restore buffer index
add [fileinfo.first_block], ecx ; +60Kb
add [fileinfo.first_byte], ecx ; +60Kb
call [convert + edx * 4]
;start fix for MM (4)
mov eax,[esp+4] ;restore buffer index
881,7 → 888,7
type_of_conversion db 0
 
convert dd c8mono, c8stereo, c16mono, c16stereo
blocks dd 30, 60, 60, 120
blocks dd 30*512, 60*512, 60*512, 120*512
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
993,20 → 1000,29
;---------------------------------------------------------------------
volume dd 15
 
attrinfo:
dd 5
dd 0
dd 0
dd 0
dd fileattr
db 0
dd textbox_string
 
fileinfo:
.mode dd 0 ; READ
.first_block dd 0
.blocks dd 120 ; 120 Kb
.first_byte dd 0
dd 0
.bytes dd 60*1024 ; 60 Kb
.dest dd LOAD_BUFFER ;file_data
.work dd work_area
; db "/HD/1/WINDOWS/MEDIA/WICEB7~1.WAV",0
;sz textbox_string, "/hd/1/testmuz/menuet11.wav",0
sz textbox_string, " ",0
; rb 256
textbox_string:
;---------------------------------------------------------------------
 
IMAGE_END: ; end of program's image
rb 100-textbox_string.size
rb 257
; rb 257-textbox_string.size
; textbox_string.size
 
;---------------------------------------------------------------------
1035,6 → 1051,8
 
status db ?
 
fileattr: rb 40
 
;---------------------------------------------------------------------
phys_bdl_buffer rd 1
phys_wav_buffer1 rd 1
/programs/media/ac97wav/trunk/frontend.inc
1,4 → 1,11
thread:
mov edi, textbox_string
or ecx, -1
xor eax, eax
repnz scasb
not ecx
dec ecx
mov [textbox_position], cl
call draw_window
call main_loop
mov [status], ST_EXIT
36,7 → 43,7
cmp ah, 8
je .backspace
movzx ecx, [textbox_position]
cmp ecx, 47
cmp ecx, 255
jae .enter
mov [textbox_string + ecx], ah
inc [textbox_position]
50,8 → 57,8
movzx ecx, [textbox_position]
test ecx, ecx
jz main_loop
mov [textbox_string + ecx], byte 0
dec [textbox_position]
mov [textbox_string + ecx - 1], byte 0
call textbox_draw
jmp main_loop
 
173,17 → 180,15
mcall MF_GETMOUSE, MS_COORDS_WINDOW
shr eax, 16 ; get mouse.x
sub eax, 7
test eax, eax
jz @f
imul eax, [file_size]
imul [file_size]
mov ebx, 286
cdq
div ebx
@@:
;dps "block: "
;dpd eax
;newline
mov [fileinfo.first_block], eax
mov [fileinfo.first_byte], eax
call draw_progress_bar
jmp main_loop
ret
244,8 → 249,8
draw_progress_bar:
pushad
 
imul eax, [fileinfo.first_block], PBAR_WIDTH
cdq
mov eax, PBAR_WIDTH
mul [fileinfo.first_byte]
div [file_size]
 
push eax
266,5 → 271,5
sz buttons_text, " Play Stop << >> Vol- Vol+"
 
textbox_active db 0
textbox_position db textbox_string.size-1
textbox_position db 0;textbox_string.size-1
file_size dd 100
/programs/media/ac97wav/trunk/macros.inc
143,6 → 143,8
 
 
 
; language for programs
lang fix ru ; ru en fr ge fi
 
 
 
/programs/media/ac97wav/trunk/meosfunc.inc
19,7 → 19,6
PRT_FREE = 1
MF_THREAD = 51
THR_CREATE = 1
MF_SYSTREE = 58
MF_PCI = 62
MF_EXIT = -1
MF_INTERNAL_SERVICES = 68
26,4 → 25,5
ALLOC_PHYS_MEM =5
FREE_PHYS_MEM =6
SET_PHYS_BUFFER =7
GET_PHYS_BUFFER =8
GET_PHYS_BUFFER =8
MF_SYSTREE = 70