* 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 @ 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 2008-01-26 0:01 [9fans] sb16 gas @ 2008-01-26 0:07 ` Pietro Gagliardi 2008-01-26 0:25 ` gas 2008-01-26 14:28 ` Russ Cox 1 sibling, 1 reply; 11+ messages in thread From: Pietro Gagliardi @ 2008-01-26 0:07 UTC (permalink / raw) To: Fans of the OS Plan 9 from Bell Labs In plan9.ini(8) there should be another type - try that instead. If that doesn't work, I don't know. On Jan 25, 2008, at 7:01 PM, gas wrote: > 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 2008-01-26 0:07 ` Pietro Gagliardi @ 2008-01-26 0:25 ` gas 2008-01-26 0:40 ` Tharaneedharan Vilwanathan 0 siblings, 1 reply; 11+ messages in thread From: gas @ 2008-01-26 0:25 UTC (permalink / raw) To: Fans of the OS Plan 9 from Bell Labs OK, I tried ess1688 now but it's the same "#A: no response #ff". thanks, / greger --- Pietro Gagliardi <pietro10@mac.com> skrev: > In plan9.ini(8) there should be another type - try that instead. If > that doesn't work, I don't know. > __________________________________________________________ Går det långsamt? Skaffa dig en snabbare bredbandsuppkoppling. Sök och jämför hos Yahoo! Shopping. http://shopping.yahoo.se/c-100015813-bredband.html?partnerId=96914325 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [9fans] sb16 2008-01-26 0:25 ` gas @ 2008-01-26 0:40 ` Tharaneedharan Vilwanathan 0 siblings, 0 replies; 11+ messages in thread From: Tharaneedharan Vilwanathan @ 2008-01-26 0:40 UTC (permalink / raw) To: Fans of the OS Plan 9 from Bell Labs [-- Attachment #1: Type: text/plain, Size: 1332 bytes --] hi, if i remember correctly, there are multiple versions of SB16. Some work and some dont. I have both types. The one that didnt work had another name called Ensoniq I think (may be that company was bought by Creative). anyway, my usual suggestion is completely ignore sound cards since they are so confusing and it is difficult to get them up and running. instead, think of buying an USB audio device. I have several devices working fine: something like Edirol UA-1X, Xitel HiFi-Link AN1 and Xitel Pro HiFi-Link. There are also other devices that are known to work. here are some links that may be of use: http://www.tip9ug.jp/who/ziphos/edirol.tests http://www.infernopark.com/plan9/mad/mad.html hope this helps. regards dharani On 1/25/08, gas <smurfasmurf@yahoo.com> wrote: > > OK, I tried ess1688 now but it's the same "#A: no response #ff". > > thanks, > / greger > --- Pietro Gagliardi <pietro10@mac.com> skrev: > > > In plan9.ini(8) there should be another type - try that instead. If > > that doesn't work, I don't know. > > > > > > __________________________________________________________ > Går det långsamt? Skaffa dig en snabbare bredbandsuppkoppling. > Sök och jämför hos Yahoo! Shopping. > http://shopping.yahoo.se/c-100015813-bredband.html?partnerId=96914325 > > [-- Attachment #2: Type: text/html, Size: 2069 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [9fans] sb16 2008-01-26 0:01 [9fans] sb16 gas 2008-01-26 0:07 ` Pietro Gagliardi @ 2008-01-26 14:28 ` Russ Cox 2008-01-26 16:16 ` gas 1 sibling, 1 reply; 11+ messages in thread From: Russ Cox @ 2008-01-26 14:28 UTC (permalink / raw) To: 9fans > 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 If the driver says the card isn't responding, making it continue on blindly isn't likely to change the situation. Luckily, the card you have should work, as long as it is what Win98 says it is. On the sb16 plug-and-play, the important field is port=. The irq= and dma= actually get programmed into the card (or read from it, if you don't specify them), but the driver needs a correct port= to find the card in the first place. Below is a very old throwaway program I wrote called tsb.c. I haven't used it in 7+ years, but it looks like it should still work. It probes a given port to see if it finds a sb16 there. If it prints sensible numbers, then it did. 8c tsb.c 8l tsb.8 for(i in 0x220 0x240 0x260 0x280) echo -n 'port='$i && 8.out $i >[2]/dev/null For example, here's a run on a machine without a sb16. % for(i in 0x220 0x240 0x260 0x280) echo -n 'port='$i && 8.out >[2]/dev/null port=0x220 irq:#ff:10 dma:#ff:0 1 3 5 6 7 port=0x240 irq:#ff:10 dma:#ff:0 1 3 5 6 7 port=0x260 irq:#ff:10 dma:#ff:0 1 3 5 6 7 port=0x280 irq:#ff:10 dma:#ff:0 1 3 5 6 7 % On a machine with a sb16, one of those lines should have hex numbers other than #ff. Use that port number. If you run it without the >[2]/dev/null you'll get more debugging info than you could want to see. Russ --- tsb.c #include <u.h> #include <libc.h> int iobfd = -1; uchar inportb(long port) { uchar data; if(iobfd == -1) iobfd = open("#P/iob", ORDWR); seek(iobfd, port, 0); if(read(iobfd, &data, sizeof(data)) != sizeof(data)) fprint(2, "inportb(0x%4.4x): %r\n", port); return data; } void outportb(long port, uchar b) { if(iobfd == -1) iobfd = open("#P/iob", ORDWR); seek(iobfd, port, 0); if(write(iobfd, &b, sizeof(b)) != sizeof(b)) fprint(2, "outportb(0x%4.4x, %#x): %r\n", port); } int mixaddr, mixdata, rstatus, bread, bwrite, wstatus, reset; int sbread(void) { int i; int s; for(i=0;i<16;i++) { s=inportb(rstatus); fprint(2,"(rstat %#x)", s); if(s & 0x80) { return inportb(bread); } } return 0xbb; } int sbwrite(int d) { int i, s; for(i=0; i<16; i++) { s=inportb(rstatus); fprint(2,"(rstat %#x)", s); if((s & 0x80) == 0) { outportb(bwrite, d); return 0; } } return 1; } void main(int argc, char **argv) { int i, j, irq, dma; int base; base = argc > 1 ? atoi(argv[1]) : 0x220; fprint(2, "base 0x%x\n", base); mixaddr = base + 4; mixdata = base + 5; reset = base + 6; wstatus = base + 0xc; bread = base + 0xa; bwrite = base + 0xc; rstatus = base + 0xe; fprint(2, "testing...\n"); fprint(2, "reset..."); outportb(reset, 1); sleep(1); outportb(reset, 0); sleep(2); fprint(2, "read..."); fprint(2, "%#x...", inportb(bread)); fprint(2, "%#x...", inportb(bread)); fprint(2, "%#x...", inportb(bread)); fprint(2, "%#x...", inportb(bread)); fprint(2, "write e1..."); fprint(2, "%d...", sbwrite(0xe1)); fprint(2, "read..."); fprint(2, "%#x...", sbread()); fprint(2, "read..."); fprint(2, "%#x...", sbread()); fprint(2, "0x80: "); outportb(mixaddr, 0x80); fprint(2, "%#2.2x...", i=inportb(mixdata)); irq = 0; print(" irq:#%2.2x", i); if(i & 1) irq = 2; if(i & 2) irq = 5; if(i & 4) irq = 7; if(i & 8) irq = 10; print(":%d ", irq); fprint(2, "0x81: "); outportb(mixaddr, 0x81); fprint(2, "%#2.2x...", i=inportb(mixdata)); dma = 0; print("dma:#%2.2x:", i); for(j=0; j<8; j++) { if(i & (1 << j) && j != 2 && j != 4) { print("%d ", j); dma = j; } } fprint(2, "0x82: "); outportb(mixaddr, 0x82); fprint(2, "%#2.2x...", inportb(mixdata)); fprint(2, "\n"); print("\n"); } ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [9fans] sb16 2008-01-26 14:28 ` Russ Cox @ 2008-01-26 16:16 ` gas 0 siblings, 0 replies; 11+ messages in thread From: gas @ 2008-01-26 16:16 UTC (permalink / raw) To: Fans of the OS Plan 9 from Bell Labs Thanks Russ, great! My random fiddling led me to rip out the other isa card, an elnk3 just sitting there. That didn't help at first, all I got from your program was #ff. Anyway, after booting into windows, deleting the ethernet driver and rebooting, the program printed #02. Windows must have done some reshuffling magic, I suppose. Now it works with 0x220. / Greger --- Russ Cox <rsc@swtch.com> skrev: > If the driver says the card isn't responding, making it > continue on blindly isn't likely to change the situation. > Luckily, the card you have should work, as long as it > is what Win98 says it is. > > ... ___________________________________________________ Sök efter kärleken! Hitta din tvillingsjäl på Yahoo! Dejting: http://se.meetic.yahoo.net/index.php?mtcmk=148757 ^ 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
* Re: [9fans] SB16 2001-11-01 2:57 okamoto @ 2001-11-01 13:31 ` plan9 2001-11-02 3:54 ` Carlos Eduardo Lenz 0 siblings, 1 reply; 11+ messages in thread From: plan9 @ 2001-11-01 13:31 UTC (permalink / raw) To: 9fans On Thu, Nov 01, 2001 at 11:57:14AM +0900, okamoto@granite.cias.osakafu-u.ac.jp wrote: >> From: Carlos Eduardo Lenz <lenz@inf.ufsc.br> >> >> 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? > > Is that really sb16 compatible, not 'sbpro'? It's probably sbpro; I've never seen a card that emulated an sb16. You can't just bung in different major/minor numbers; the sbpro is only 8-bit, so you have to scale down the 16-bit samples first. 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. http://www.caldo.demon.co.uk/plan9/soft/index.html ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [9fans] SB16 2001-11-01 13:31 ` plan9 @ 2001-11-02 3:54 ` Carlos Eduardo Lenz 0 siblings, 0 replies; 11+ messages in thread From: Carlos Eduardo Lenz @ 2001-11-02 3:54 UTC (permalink / raw) To: 9fans It says in the bios setup it can emulate a sb16 (compaq 1200series)! So it's not true? Anyway, what are the major&minor about? My guess was that they are values set somewhere by a real sb16 (for detection). Carlos E Lenz lenz@inf.ufsc.br On Thu, 1 Nov 2001 plan9@sigint.cs.purdue.edu wrote: > On Thu, Nov 01, 2001 at 11:57:14AM +0900, okamoto@granite.cias.osakafu-u.ac.jp wrote: > >> From: Carlos Eduardo Lenz <lenz@inf.ufsc.br> > >> > >> 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? > > > > Is that really sb16 compatible, not 'sbpro'? > > It's probably sbpro; I've never seen a card that emulated an sb16. > > You can't just bung in different major/minor numbers; the sbpro is only > 8-bit, so you have to scale down the 16-bit samples first. > > 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. > > http://www.caldo.demon.co.uk/plan9/soft/index.html > ^ 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 -- 2001-11-02 15:22 [9fans] SB16 Richard Miller -- strict thread matches above, loose matches on Subject: below -- 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 2001-11-01 3:42 [9fans] SB16 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).