From mboxrd@z Thu Jan 1 00:00:00 1970 From: xlp Subject: Re: sound Date: Mon, 24 Jun 2002 20:02:12 -0500 Sender: linux-assembly-owner@vger.kernel.org Message-ID: <20020624200212.A23265@nietzsche> References: <3D17944F.E391DBF4@freesurf.fr> Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Return-path: In-Reply-To: <3D17944F.E391DBF4@freesurf.fr>; from pvir@freesurf.fr on Mon, Jun 24, 2002 at 11:51:11PM +0200 Content-Disposition: inline List-Id: Content-Type: text/plain; charset="us-ascii" To: philippe Cc: Linux-assembly@vger.kernel.org On Mon, Jun 24, 2002 at 11:51:11PM +0200, philippe wrote: > hi > I am new on this list and my name is Philippe. > I used to make some programs on windows but wanted to trye on linux. > I have a problem with a small prog i had done for windows witch play > sounds on the fm chip of a sound card. > But when i translate it on linux, it doesn't work any more. > It compile and link correctly(nasm), but on execution it writes: > segmentation fault! > I post you the sources at the end of this message. > > I had an other question: > Where can I find bible of all the interruptions and what is the name of > it? > > > Philippe > > > > > ;************************************************ > ;* Ecriture sur SoundBlaster * > ;*1-ecrire dans le adresse port0x388 * > ;*2-attendre 12 cycles * > ;*3-ecrire dans le data port0x389 * > ;*4-attendre 84 cycles * > > ;compiler: > ; nasm -f elf SBB.asm > ; ld -s -o SBB SBB.o > > > section .text ;section declaration > > ;we must export the entry point to the ELF > linker or > global _start ;loader. They conventionally recognize _start as > their > ;entry point. Use ld -e foo to override the > default. > > _start: > > > ;mettre tous les registres SB a zero > mov edx,0x388 ;port adresse > mov eax,0x20 ;registre sb 20 > out dx,al > mov edx,0x389 ;data port > mov al,7 > out dx,al > > mov edx,0x388 ;port adresse > mov al,0x40 ;registre sb 40 > out dx,al > ;call WaitR > mov edx,0x389 ;data port > mov al,0x10 > out dx,al > ;call WaitR > > mov edx,0x388 ;port adresse > mov al,0x60 ;registre sb 20 > out dx,al > ;call WaitR > mov edx,0x389 ;data port > mov eax,0xf0 > out dx,al > ;call WaitR > > mov edx,0x388 ;port adresse > mov al,0x80 ;registre sb 20 > out dx,al > mov edx,0x389 ;data port > mov al,70 > out dx,al > > mov edx,0x388 ;port adresse > mov al,0x23 ;registre sb 20 > out dx,al > ;call WaitR > mov edx,0x389 ;data port > mov eax,1 > out dx,al > ;call WaitR > > mov edx,0x388 ;port adresse > mov eax,0x43 ;registre sb 20 > out dx,al > ;call WaitR > mov edx,0x389 ;data port > mov eax,00 > out dx,al > ;call WaitR > > mov edx,0x388 ;port adresse > mov eax,0x63 ;registre sb 20 > out dx,al > ;call WaitR > mov edx,0x389 ;data port > mov eax,0xf0 > out dx,al > ;call WaitR > > mov edx,0x388 ;port adresse > mov eax,0x83 ;registre sb 20 > out dx,al > ;call WaitR > mov edx,0x389 ;data port > mov eax,0x7f > out dx,al > dest3: > mov cx,0xff > dest2: > > mov edx,0x388 ;port adresse > mov al,0xa0 ;frequency > out dx,al > mov edx,0x389 ;data port > mov al,cl > xor al,dl > out dx,al > ;**send the sound now gogogogo go > mov edx,0x388 ;port adresse > mov eax,0xb0 ;registre sb 20 > out dx,al > mov edx,0x389 ;data port > mov eax,0x31 > out dx,al > call Waitc > call Waitc > call Waitc > call Waitc > > loop dest2 > ;******************************************************* > > mov edx,0x388 ;port adresse > mov eax,0xb0 ;registre sb 20 > out dx,al > ;CHK: ;attend qu'on appuye sur la touche espace***** > > ;mov ah,8 > ;mov dl,0xFF > ;int 0x21 > ;cmp al,' ' ;espace > ;je SUITE > ;jmp CHK > ;SUITE: > mov edx,0x389 ;data port > mov eax,0 > out dx,al > > ;mov ax,0x4c > ;int 0x21 > > mov ebx,0 ;first syscall argument: exit code > mov eax,1 ;system call number (sys_exit) > int 0x80 ;call kerne > > > > Waitc: > push ecx > mov ecx,0x8fff > W1: > nop > loop W1 > pop ecx > ret > Waitb: > push ecx > mov ecx,0x1fff > W2: > nop > loop W2 > pop ecx > ret > - > To unsubscribe from this list: send the line "unsubscribe linux-assembly" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >