[9fans] sb16 - Plan9

This is a discussion on [9fans] sb16 - Plan9 ; 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: ...

+ Reply to Thread
Results 1 to 6 of 6

Thread: [9fans] sb16

  1. [9fans] sb16

    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...nerId=96915014

  2. Re: [9fans] sb16

    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...sakerhet.html?
    > partnerId=96915014



  3. Re: [9fans] sb16

    OK, I tried ess1688 now but it's the same "#A: no response #ff".

    thanks,
    / greger
    --- Pietro Gagliardi 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...nerId=96914325


  4. Re: [9fans] sb16

    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 wrote:
    >
    > OK, I tried ess1688 now but it's the same "#A: no response #ff".
    >
    > thanks,
    > / greger
    > --- Pietro Gagliardi 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...nerId=96914325
    >
    >



  5. Re: [9fans] sb16

    > 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
    #include

    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");
    }


  6. Re: [9fans] sb16

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

+ Reply to Thread