9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
* [9fans] sb16
@ 2008-01-26  0:01 gas
  2008-01-26  0:07 ` Pietro Gagliardi
  2008-01-26 14:28 ` Russ Cox
  0 siblings, 2 replies; 11+ messages in thread
From: gas @ 2008-01-26  0:01 UTC (permalink / raw)
  To: 9fans

I have an old ISA sound card, identified by win98 as "creative sound
blaster 16 plug and play".
So, I added the line
        audio0=type=sb16 port=0x220 irq=5 dma=1
to plan9.ini and 'bind #A' to termrc, but I got the error
        #A: no response #ff
With the if-statement surrounding that print commented out of
devaudio.c, the next try failed with
        #A: model 0xff 0xff; not SB 16 compatible
I commented out that too and got another pair of error messages:
        i8259enable: irq 2 shared but not level
        intrenable: couldn't enable irq 2, tbdf 0xFFFFFFFF for audio

By then I had /dev/audio etc., but no sound. Any ideas?

/ greger


      __________________________________________________________
Låna pengar utan säkerhet. Jämför vilkor online hos Yahoo!
http://shopping.yahoo.se/c-100390123-lan-utan-sakerhet.html?partnerId=96915014


^ permalink raw reply	[flat|nested] 11+ messages in thread
* Re: [9fans] SB16
@ 2001-11-02 15:22 Richard Miller
  0 siblings, 0 replies; 11+ messages in thread
From: Richard Miller @ 2001-11-02 15:22 UTC (permalink / raw)
  To: 9fans

[-- Attachment #1: Type: text/plain, Size: 470 bytes --]

> There's an sbpro driver for 2nd Edition on Charles Forsyth's Plan 9 software
> page.  It may be a SMOP to port it to 3rd Edition.

Here's an update to the 3rd edition version of /sys/src/9/port/devaudio.c for
sbpro support.  It's been found to work on a real sbpro and at least two
impostors; it doesn't work on the Thinkpad T21.

I think my resampling of sound data in b8to16() and b16to8() isn't quite right.
Would somebody like to comment?

-- Richard


[-- Attachment #2: devaudio.bod --]
[-- Type: text/plain, Size: 5196 bytes --]

#!/bin/rc
#
# command: /bin/boddle /sys/src/9/port/devaudio.c devaudio.c
# srcdir: /sys/src/9/port
# version: 1004714078
# date: Fri Nov 2 15:14:38 GMT 2001
#
myname=$0
doextract=no

fn usage{
  echo $myname: usage: $myname '[-X] [src-directory]' >[1=2]
  exit usage
}

fn sigint{
  rm -rf 1004714078
  exit interrupt
}

while(~ $1 -*){
  switch($1){
  case -X
          doextract=yes
  case -*
          usage
  }
  shift
}

switch($#*){
case 0
  srcdir=/sys/src/9/port
case 1
  srcdir=$1
case *
  usage
}

if(! ~ $doextract yes){
  echo This shell file contains a bundle of diffs representing changes
  echo to original source files in the Plan 9 distribution. It will run
  echo against the files in
  echo ' ' $srcdir
  echo '(unless overridden by the optional source directory argument)'
  echo and create a directory 1004714078 containing the updated files.
  echo It will NOT automatically update the original files.
  echo
  echo Invoke with argument -X to perform the actual extraction.
  exit 0
}

rm -rf 1004714078
mkdir 1004714078

target=1004714078/devaudio.c
echo -n '1004714078/devaudio.c: '
if(! test -f $srcdir/devaudio.c || ! test -r $srcdir/devaudio.c){
  echo $srcdir/devaudio.c unreadable
  exit unreadable
}
sum=`{sum < $srcdir/devaudio.c}
if(! ~ 010c638720395  $sum(1)^$sum(2)){
  echo $srcdir/devaudio.c is not the original distribution file
  exit original
}
cp $srcdir/devaudio.c 1004714078/devaudio.c
sed s/.// <<'//GO.SYSIN DD VADIM devaudio.c' | ed 1004714078/devaudio.c >/dev/null >[2=1]
-1203a
-}
-
-static void
-b8to16(uchar *a)
-{
-	uchar *p, *q;
-
-	p = a + Bufsize/2;
-	q = a + Bufsize - 2;
-	do {
-		q[1] = (*--p)^0x80;
-		q[0] = 0;
-	} while ((q -= 2) >= a);
-}
-
-static void
-b16to8(uchar *a)
-{
-	uchar *p, *ep, *q;
-
-	p = a + 1;
-	ep = a + Bufsize;
-	q = a - 1;
-	do
-		*++q = *p^0x80;
-	while ((p += 2) < ep);
-.
-1175c
-				if(audio.major == 3)
-					b16to8(b->virt);
-				else
-					swab(b->virt);
-.
-987c
-				if(audio.major == 3)
-					b8to16(b->virt);
-				else
-					swab(b->virt);
-.
-928c
-					if(audio.major == 3)
-						b16to8(b->virt);
-					else
-						swab(b->virt);
-.
-861c
-	if(audio.major != 4 && audio.major != 3)
-.
-833a
-	}
-
-.
-819a
-	if(audio.major == 4) {
-
-.
-793d
-788,789c
-		if(audio.major == 3) {
-			if(audio.minor == 1 && !ess1688(&sbconf))
-				audio.major = 4;
-			else
-				blaster.startdma = sbprostartdma;
-		} else {
-			print("#A: model 0x%.2x 0x%.2x; not SB 16/PRO compatible\n",
-.
-730c
-	if(cistrcmp(sbconf.type, "sbpro") == 0)
-		sbconf.dma = 1;
-	else if((cistrcmp(sbconf.type, "sb16") != 0) && (cistrcmp(sbconf.type, "ess1688") != 0))
-.
-410a
-static	void
-sbprostartdma(void)
-{
-	ulong count;
-	int speed;
-
-	ilock(&blaster);
-	dmaend(blaster.dma);
-	if(audio.amode == Aread) {
-		sbcmd(0xd3);			/* speaker off */
-		speed = audio.livol[Vspeed];
-	} else {
-		sbcmd(0xd1);			/* speaker on */
-		speed = audio.lovol[Vspeed];
-	}
-	speed *= 2;
-	sbcmd(0x40);
-	sbcmd((65536 - 256000000/speed) >> 8);
-
-	count = (Bufsize >> 1) - 1;
-	sbcmd(0x48);				/* block size */
-	sbcmd(count);
-	sbcmd(count>>8);
-	if(audio.amode == Aread) {
-		sbcmd(0xa8);			/* stereo */
-		sbcmd(0x98);			/* high speed input, autoinit */
-	} else {
-		mxcmd(0x0e, mxread(0x0e)|0x22);	/* stereo, no output filter */
-		sbcmd(0x90);			/* high speed output, autoinit */
-	}
-
-	audio.active = 1;
-	audio.tottime = todget(nil);
-	contindma();
-	iunlock(&blaster);
-}
-
-.
-369a
-	}
-.
-367a
-	if(audio.major == 3) {		/* sbpro */
-		outb(blaster.reset, 1);
-		microdelay(3);
-		outb(blaster.reset, 0);
-	} else {					/* sb16 */
-.
-361c
-	if(dmasetup(blaster.dma, b->virt, (audio.major == 3? Bufsize/2 : Bufsize), audio.amode == Aread) >= 0)
-.
-304a
-	break;
-
-	case 3:		/* sbpro */
-
-	mxcmd(0x22, 255);		/* left/right master */
-	mxcmds2(0x04, left[Vaudio], right[Vaudio]);
-	mxcmds2(0x26, left[Vsynth], right[Vsynth]);
-	mxcmds2(0x28, left[Vcd], right[Vcd]);
-	mxcmds2(0x2e, left[Vline], right[Vline]);
-	mxcmdss(0x0a, left[Vmic]);
-
-	source = 0;
-	if(audio.livol[Vcd])
-		source = 2;
-	else if(audio.livol[Vline])
-		source = 6;
-	mxcmd(0x0c, 0x20|source);	/* no input filter */
-	break;
-	}
-
-.
-255a
-	switch (audio.major) {
-	case 4:		/* sb16 */
-
-.
-229a
-mxcmds2(int s, int v, int w)
-{
-
-	if(v > 100)
-		v = 100;
-	if(v < 0)
-		v = 0;
-	if(w > 100)
-		w = 100;
-	if(w < 0)
-		w = 0;
-	mxcmd(s, (((v*15)/100)<<4) | ((w*15)/100));
-}
-
-static	void
-mxcmdss(int s, int v)
-{
-	if(v > 100)
-		v = 100;
-	if(v < 0)
-		v = 0;
-	mxcmd(s, (v*7)/100);
-}
-
-static	void
-.
-132a
-static	void	b16to8(uchar*);
-static	void	b8to16(uchar*);
-.
-79,80c
-	int	major;		/* SB major version number (sb16=4, sbpro=3) */
-	int	minor;		/* SB minor version number */
-.
-wq
//GO.SYSIN DD VADIM devaudio.c
sum=`{sum < 1004714078/devaudio.c}
if(~ 0d74360d22810  $sum(1)^$sum(2))
  echo
if not{
  echo 1004714078/devaudio.c checksum error creating updated file
  exit checksum
}

^ permalink raw reply	[flat|nested] 11+ messages in thread
* [9fans] SB16
@ 2001-11-01  3:42 Carlos Eduardo Lenz
  0 siblings, 0 replies; 11+ messages in thread
From: Carlos Eduardo Lenz @ 2001-11-01  3:42 UTC (permalink / raw)
  To: 9fans

My laptop allows to enable SB16 compatibility for the VIA soundcard in
the bios.
I enabled it in plan9.ini, with the dma,irq, etc set in the bios.
But it gives the error msg:
#A: model 0x03 0x02: not SB16 compatible (or something similar).

Found that devsound.c tests for major=0x03 and minor=0x01.
So I need to know if I can just add another test that fits my config or
my card isn't really supported?

thanks,

Carlos E Lenz
lenz@inf.ufsc.br



^ permalink raw reply	[flat|nested] 11+ messages in thread
* Re: [9fans] SB16
@ 2001-11-01  2:57 okamoto
  2001-11-01 13:31 ` plan9
  0 siblings, 1 reply; 11+ messages in thread
From: okamoto @ 2001-11-01  2:57 UTC (permalink / raw)
  To: 9fans

[-- Attachment #1: Type: text/plain, Size: 132 bytes --]

>My laptop allows to enable SB16 compatibility for the VIA soundcard in

Is that really sb16 compatible, not 'sbpro'?

Kenji


[-- Attachment #2: Type: message/rfc822, Size: 2123 bytes --]

From: Carlos Eduardo Lenz <lenz@inf.ufsc.br>
To: 9fans@cse.psu.edu
Subject: [9fans] SB16
Date: Thu, 1 Nov 2001 01:42:14 -0200 (EDT)
Message-ID: <Pine.GSO.4.10.10111010138100.6897-100000@juno>

My laptop allows to enable SB16 compatibility for the VIA soundcard in
the bios.
I enabled it in plan9.ini, with the dma,irq, etc set in the bios.
But it gives the error msg:
#A: model 0x03 0x02: not SB16 compatible (or something similar).

Found that devsound.c tests for major=0x03 and minor=0x01.
So I need to know if I can just add another test that fits my config or
my card isn't really supported?

thanks,

Carlos E Lenz
lenz@inf.ufsc.br

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2008-01-26 16:16 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-01-26  0:01 [9fans] sb16 gas
2008-01-26  0:07 ` Pietro Gagliardi
2008-01-26  0:25   ` gas
2008-01-26  0:40     ` Tharaneedharan Vilwanathan
2008-01-26 14:28 ` Russ Cox
2008-01-26 16:16   ` gas
  -- strict thread matches above, loose matches on Subject: below --
2001-11-02 15:22 [9fans] SB16 Richard Miller
2001-11-01  3:42 Carlos Eduardo Lenz
2001-11-01  2:57 okamoto
2001-11-01 13:31 ` plan9
2001-11-02  3:54   ` Carlos Eduardo Lenz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).