亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sb16.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 3 頁
字號:
        case 0x48:            s->needed_bytes = 2;            break;        case 0x74:            s->needed_bytes = 2; /* DMA DAC, 4-bit ADPCM */            dolog ("0x75 - DMA DAC, 4-bit ADPCM not implemented\n");            break;        case 0x75:              /* DMA DAC, 4-bit ADPCM Reference */            s->needed_bytes = 2;            dolog ("0x74 - DMA DAC, 4-bit ADPCM Reference not implemented\n");            break;        case 0x76:              /* DMA DAC, 2.6-bit ADPCM */            s->needed_bytes = 2;            dolog ("0x74 - DMA DAC, 2.6-bit ADPCM not implemented\n");            break;        case 0x77:              /* DMA DAC, 2.6-bit ADPCM Reference */            s->needed_bytes = 2;            dolog ("0x74 - DMA DAC, 2.6-bit ADPCM Reference not implemented\n");            break;        case 0x7d:            dolog ("0x7d - Autio-Initialize DMA DAC, 4-bit ADPCM Reference\n");            dolog ("not implemented\n");            break;        case 0x7f:            dolog (                "0x7d - Autio-Initialize DMA DAC, 2.6-bit ADPCM Reference\n"                );            dolog ("not implemented\n");            break;        case 0x80:            s->needed_bytes = 2;            break;        case 0x90:        case 0x91:            dma_cmd8 (s, ((cmd & 1) == 0) | DMA8_HIGH, -1);            break;        case 0xd0:              /* halt DMA operation. 8bit */            control (s, 0);            break;        case 0xd1:              /* speaker on */            speaker (s, 1);            break;        case 0xd3:              /* speaker off */            speaker (s, 0);            break;        case 0xd4:              /* continue DMA operation. 8bit */            /* KQ6 (or maybe Sierras audblst.drv in general) resets               the frequency between halt/continue */            continue_dma8 (s);            break;        case 0xd5:              /* halt DMA operation. 16bit */            control (s, 0);            break;        case 0xd6:              /* continue DMA operation. 16bit */            control (s, 1);            break;        case 0xd9:              /* exit auto-init DMA after this block. 16bit */            s->dma_auto = 0;            break;        case 0xda:              /* exit auto-init DMA after this block. 8bit */            s->dma_auto = 0;            break;        case 0xe0:              /* DSP identification */            s->needed_bytes = 1;            break;        case 0xe1:            dsp_out_data (s, s->ver & 0xff);            dsp_out_data (s, s->ver >> 8);            break;        case 0xe2:            s->needed_bytes = 1;            goto warn;        case 0xe3:            {                int i;                for (i = sizeof (e3) - 1; i >= 0; --i)                    dsp_out_data (s, e3[i]);            }            break;        case 0xe4:              /* write test reg */            s->needed_bytes = 1;            break;        case 0xe7:            dolog ("Attempt to probe for ESS (0xe7)?\n");            break;        case 0xe8:              /* read test reg */            dsp_out_data (s, s->test_reg);            break;        case 0xf2:        case 0xf3:            dsp_out_data (s, 0xaa);            s->mixer_regs[0x82] |= (cmd == 0xf2) ? 1 : 2;            qemu_irq_raise (s->pic[s->irq]);            break;        case 0xf9:            s->needed_bytes = 1;            goto warn;        case 0xfa:            dsp_out_data (s, 0);            goto warn;        case 0xfc:              /* FIXME */            dsp_out_data (s, 0);            goto warn;        default:            dolog ("Unrecognized command %#x\n", cmd);            break;        }    }    if (!s->needed_bytes) {        ldebug ("\n");    } exit:    if (!s->needed_bytes) {        s->cmd = -1;    }    else {        s->cmd = cmd;    }    return; warn:    dolog ("warning: command %#x,%d is not truly understood yet\n",           cmd, s->needed_bytes);    goto exit;}static uint16_t dsp_get_lohi (SB16State *s){    uint8_t hi = dsp_get_data (s);    uint8_t lo = dsp_get_data (s);    return (hi << 8) | lo;}static uint16_t dsp_get_hilo (SB16State *s){    uint8_t lo = dsp_get_data (s);    uint8_t hi = dsp_get_data (s);    return (hi << 8) | lo;}static void complete (SB16State *s){    int d0, d1, d2;    ldebug ("complete command %#x, in_index %d, needed_bytes %d\n",            s->cmd, s->in_index, s->needed_bytes);    if (s->cmd > 0xaf && s->cmd < 0xd0) {        d2 = dsp_get_data (s);        d1 = dsp_get_data (s);        d0 = dsp_get_data (s);        if (s->cmd & 8) {            dolog ("ADC params cmd = %#x d0 = %d, d1 = %d, d2 = %d\n",                   s->cmd, d0, d1, d2);        }        else {            ldebug ("cmd = %#x d0 = %d, d1 = %d, d2 = %d\n",                    s->cmd, d0, d1, d2);            dma_cmd (s, s->cmd, d0, d1 + (d2 << 8));        }    }    else {        switch (s->cmd) {        case 0x04:            s->csp_mode = dsp_get_data (s);            s->csp_reg83r = 0;            s->csp_reg83w = 0;            ldebug ("CSP command 0x04: mode=%#x\n", s->csp_mode);            break;        case 0x05:            s->csp_param = dsp_get_data (s);            s->csp_value = dsp_get_data (s);            ldebug ("CSP command 0x05: param=%#x value=%#x\n",                    s->csp_param,                    s->csp_value);            break;        case 0x0e:            d0 = dsp_get_data (s);            d1 = dsp_get_data (s);            ldebug ("write CSP register %d <- %#x\n", d1, d0);            if (d1 == 0x83) {                ldebug ("0x83[%d] <- %#x\n", s->csp_reg83r, d0);                s->csp_reg83[s->csp_reg83r % 4] = d0;                s->csp_reg83r += 1;            }            else {                s->csp_regs[d1] = d0;            }            break;        case 0x0f:            d0 = dsp_get_data (s);            ldebug ("read CSP register %#x -> %#x, mode=%#x\n",                    d0, s->csp_regs[d0], s->csp_mode);            if (d0 == 0x83) {                ldebug ("0x83[%d] -> %#x\n",                        s->csp_reg83w,                        s->csp_reg83[s->csp_reg83w % 4]);                dsp_out_data (s, s->csp_reg83[s->csp_reg83w % 4]);                s->csp_reg83w += 1;            }            else {                dsp_out_data (s, s->csp_regs[d0]);            }            break;        case 0x10:            d0 = dsp_get_data (s);            dolog ("cmd 0x10 d0=%#x\n", d0);            break;        case 0x14:            dma_cmd8 (s, 0, dsp_get_lohi (s) + 1);            break;        case 0x40:            s->time_const = dsp_get_data (s);            ldebug ("set time const %d\n", s->time_const);            break;        case 0x42:              /* FT2 sets output freq with this, go figure */#if 0            dolog ("cmd 0x42 might not do what it think it should\n");#endif        case 0x41:            s->freq = dsp_get_hilo (s);            ldebug ("set freq %d\n", s->freq);            break;        case 0x48:            s->block_size = dsp_get_lohi (s) + 1;            ldebug ("set dma block len %d\n", s->block_size);            break;        case 0x74:        case 0x75:        case 0x76:        case 0x77:            /* ADPCM stuff, ignore */            break;        case 0x80:            {                int freq, samples, bytes;                int64_t ticks;                freq = s->freq > 0 ? s->freq : 11025;                samples = dsp_get_lohi (s) + 1;                bytes = samples << s->fmt_stereo << (s->fmt_bits == 16);                ticks = (bytes * ticks_per_sec) / freq;                if (ticks < ticks_per_sec / 1024) {                    qemu_irq_raise (s->pic[s->irq]);                }                else {                    if (s->aux_ts) {                        qemu_mod_timer (                            s->aux_ts,                            qemu_get_clock (vm_clock) + ticks                            );                    }                }                ldebug ("mix silence %d %d %" PRId64 "\n", samples, bytes, ticks);            }            break;        case 0xe0:            d0 = dsp_get_data (s);            s->out_data_len = 0;            ldebug ("E0 data = %#x\n", d0);            dsp_out_data (s, ~d0);            break;        case 0xe2:            d0 = dsp_get_data (s);            ldebug ("E2 = %#x\n", d0);            break;        case 0xe4:            s->test_reg = dsp_get_data (s);            break;        case 0xf9:            d0 = dsp_get_data (s);            ldebug ("command 0xf9 with %#x\n", d0);            switch (d0) {            case 0x0e:                dsp_out_data (s, 0xff);                break;            case 0x0f:                dsp_out_data (s, 0x07);                break;            case 0x37:                dsp_out_data (s, 0x38);                break;            default:                dsp_out_data (s, 0x00);                break;            }            break;        default:            dolog ("complete: unrecognized command %#x\n", s->cmd);            return;        }    }    ldebug ("\n");    s->cmd = -1;    return;}static void legacy_reset (SB16State *s){    audsettings_t as;    s->freq = 11025;    s->fmt_signed = 0;    s->fmt_bits = 8;    s->fmt_stereo = 0;    as.freq = s->freq;    as.nchannels = 1;    as.fmt = AUD_FMT_U8;    as.endianness = 0;    s->voice = AUD_open_out (        &s->card,        s->voice,        "sb16",        s,        SB_audio_callback,        &as        );    /* Not sure about that... */    /* AUD_set_active_out (s->voice, 1); */}static void reset (SB16State *s){    qemu_irq_lower (s->pic[s->irq]);    if (s->dma_auto) {        qemu_irq_raise (s->pic[s->irq]);        qemu_irq_lower (s->pic[s->irq]);    }    s->mixer_regs[0x82] = 0;    s->dma_auto = 0;    s->in_index = 0;    s->out_data_len = 0;    s->left_till_irq = 0;    s->needed_bytes = 0;    s->block_size = -1;    s->nzero = 0;    s->highspeed = 0;    s->v2x6 = 0;    s->cmd = -1;    dsp_out_data(s, 0xaa);    speaker (s, 0);    control (s, 0);    legacy_reset (s);}static IO_WRITE_PROTO (dsp_write){    SB16State *s = opaque;    int iport;    iport = nport - s->port;    ldebug ("write %#x <- %#x\n", nport, val);    switch (iport) {    case 0x06:        switch (val) {        case 0x00:            if (s->v2x6 == 1) {                if (0 && s->highspeed) {                    s->highspeed = 0;                    qemu_irq_lower (s->pic[s->irq]);                    control (s, 0);                }                else {                    reset (s);                }            }            s->v2x6 = 0;            break;        case 0x01:        case 0x03:              /* FreeBSD kludge */            s->v2x6 = 1;            break;        case 0xc6:            s->v2x6 = 0;        /* Prince of Persia, csp.sys, diagnose.exe */            break;        case 0xb8:              /* Panic */            reset (s);            break;        case 0x39:            dsp_out_data (s, 0x38);            reset (s);            s->v2x6 = 0x39;            break;        default:            s->v2x6 = val;            break;        }        break;    case 0x0c:                  /* write data or command | write status *//*         if (s->highspeed) *//*             break; */        if (0 == s->needed_bytes) {            command (s, val);#if 0            if (0 == s->needed_bytes) {                log_dsp (s);            }#endif        }        else {            if (s->in_index == sizeof (s->in2_data)) {                dolog ("in data overrun\n");            }            else {                s->in2_data[s->in_index++] = val;                if (s->in_index == s->needed_bytes) {                    s->needed_bytes = 0;                    complete (s);#if 0                    log_dsp (s);#endif                }            }        }        break;    default:        ldebug ("(nport=%#x, val=%#x)\n", nport, val);        break;    }}static IO_READ_PROTO (dsp_read)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
制服.丝袜.亚洲.另类.中文| 国产欧美日韩在线| 国产成人三级在线观看| 一区二区三区国产| 久久色在线视频| 在线播放日韩导航| 色婷婷综合激情| 国产成人在线视频免费播放| 日韩综合小视频| 成人免费在线播放视频| 26uuu精品一区二区| 91精品国产色综合久久ai换脸| 成人av免费在线| 国产伦精一区二区三区| 日本欧美一区二区三区| 亚洲午夜视频在线| 亚洲日本中文字幕区| 国产日韩欧美激情| 精品久久久久久久久久久久包黑料 | 男女激情视频一区| 依依成人综合视频| 国产精品传媒在线| 久久女同互慰一区二区三区| 日韩欧美一级二级三级久久久| 欧美在线观看视频一区二区| 成人av电影观看| 欧美在线免费播放| 久久9热精品视频| 丝袜亚洲另类丝袜在线| 又紧又大又爽精品一区二区| 国产精品―色哟哟| 国内成人免费视频| 国产精品乱人伦| 日韩精品一区二区三区中文不卡| 欧美亚洲图片小说| 色先锋aa成人| 色婷婷国产精品综合在线观看| 99久久精品免费| 99精品视频一区| 99免费精品在线观看| 成人精品鲁一区一区二区| 国产精品影视网| 国产精品18久久久久久久网站| 韩国视频一区二区| 国产美女在线观看一区| 国产精品1区2区3区在线观看| 国产一区二区主播在线| 狠狠色丁香久久婷婷综| 国产成人高清视频| 成人黄色国产精品网站大全在线免费观看 | 欧美日韩在线综合| 欧美日韩激情一区| 日韩精品中午字幕| 欧美国产综合色视频| 中文字幕亚洲不卡| 亚洲夂夂婷婷色拍ww47 | 夜夜嗨av一区二区三区网页 | 日韩欧美一区二区三区在线| 欧美v国产在线一区二区三区| 久久久久97国产精华液好用吗| 久久久国产综合精品女国产盗摄| 国产欧美一区二区精品性| 亚洲欧洲av色图| 亚洲五码中文字幕| 久久99久久99小草精品免视看| 国产精品资源站在线| 日本精品一级二级| 制服丝袜av成人在线看| 久久九九久久九九| 亚洲欧洲99久久| 青草国产精品久久久久久| 国产一区免费电影| 色香色香欲天天天影视综合网| 制服视频三区第一页精品| 国产欧美视频在线观看| 一区av在线播放| 久久国产婷婷国产香蕉| 91免费国产在线| 日韩免费视频一区| 亚洲欧洲一区二区在线播放| 天天av天天翘天天综合网| 国产一区二区在线视频| 欧美在线高清视频| 国产丝袜美腿一区二区三区| 一区二区激情视频| 国产馆精品极品| 精品视频在线视频| 国产精品视频一二三| 婷婷夜色潮精品综合在线| 国产成a人无v码亚洲福利| 欧美色综合网站| 中文字幕免费不卡在线| 日本不卡123| 91丨九色丨国产丨porny| 日韩欧美专区在线| 亚洲综合精品久久| 国产精品99久久久久久久女警 | 国产传媒欧美日韩成人| 欧美视频一区二| 国产精品美女一区二区三区| 青青草97国产精品免费观看无弹窗版| jvid福利写真一区二区三区| 欧美一级高清片| 一区二区不卡在线播放| 成人晚上爱看视频| 精品国产髙清在线看国产毛片| 一区二区三区在线观看国产| 国产另类ts人妖一区二区| 制服.丝袜.亚洲.另类.中文| 亚洲另类中文字| 成人av在线资源网站| 精品国产免费一区二区三区四区 | 亚洲色图欧美在线| 国产老妇另类xxxxx| 欧美一卡二卡在线观看| 亚洲精品日韩专区silk| 成人亚洲一区二区一| 久久天堂av综合合色蜜桃网| 老司机一区二区| 日韩视频国产视频| 日韩成人午夜电影| 91精品在线麻豆| 午夜精品视频一区| 欧美乱妇一区二区三区不卡视频| 亚洲男同1069视频| 日本道色综合久久| 亚洲激情一二三区| 在线观看日产精品| 一区二区三区产品免费精品久久75| 99久久亚洲一区二区三区青草| 国产人伦精品一区二区| 国产成人综合自拍| 久久精品人人做人人爽97| 激情综合色综合久久| 亚洲精品一区在线观看| 麻豆高清免费国产一区| 日韩免费观看高清完整版在线观看| 天天综合色天天| 日韩免费看网站| 国产在线一区二区| 久久久久久久久久看片| 国产99久久久久| 亚洲国产激情av| www.在线欧美| 亚洲一区二区av在线| 欧美日免费三级在线| 一级特黄大欧美久久久| 欧美视频一区二区| 奇米精品一区二区三区四区| 91精品国产aⅴ一区二区| 日韩av中文字幕一区二区| 欧美一卡二卡三卡四卡| 国产一区在线精品| 亚洲欧美综合色| 欧美性生活久久| 精品在线观看视频| 中文字幕乱码久久午夜不卡| 91丨porny丨在线| 亚洲第一av色| 精品噜噜噜噜久久久久久久久试看| 国产精品99久久久久久久女警| 国产精品九色蝌蚪自拍| 欧美这里有精品| 人人精品人人爱| 欧美韩国一区二区| 精品99999| 99精品国产热久久91蜜凸| 亚洲国产成人高清精品| 日韩精品一区二区三区视频| 成人福利在线看| 香蕉乱码成人久久天堂爱免费| 精品久久久久久久久久久久久久久 | 日本成人在线电影网| 久久久久国产精品麻豆| 欧美曰成人黄网| 看国产成人h片视频| 成人欧美一区二区三区小说| 欧美放荡的少妇| 国产成人夜色高潮福利影视| 亚洲愉拍自拍另类高清精品| 日韩精品中文字幕在线一区| 99re热视频精品| 六月婷婷色综合| 亚洲色欲色欲www在线观看| 3atv在线一区二区三区| 99久久精品久久久久久清纯| 天天色 色综合| 国产精品久久久久久久裸模| 欧美精品久久久久久久多人混战| 国产成a人无v码亚洲福利| 亚洲第一二三四区| 国产欧美日韩综合| 4438x成人网最大色成网站| 成人av在线网站| 日韩精品一区第一页| 亚洲欧美影音先锋| 26uuuu精品一区二区| 欧美精品免费视频| 97久久超碰国产精品| 国产美女精品人人做人人爽|