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

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

?? ssd0323.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
字號:
/* * SSD0323 OLED controller with OSRAM Pictiva 128x64 display. * * Copyright (c) 2006-2007 CodeSourcery. * Written by Paul Brook * * This code is licenced under the GPL. *//* The controller can support a variety of different displays, but we only   implement one.  Most of the commends relating to brightness and geometry   setup are ignored. */#include "hw.h"#include "devices.h"#include "console.h"//#define DEBUG_SSD0323 1#ifdef DEBUG_SSD0323#define DPRINTF(fmt, args...) \do { printf("ssd0323: " fmt , ##args); } while (0)#define BADF(fmt, args...) \do { fprintf(stderr, "ssd0323: error: " fmt , ##args); exit(1);} while (0)#else#define DPRINTF(fmt, args...) do {} while(0)#define BADF(fmt, args...) \do { fprintf(stderr, "ssd0323: error: " fmt , ##args);} while (0)#endif/* Scaling factor for pixels.  */#define MAGNIFY 4#define REMAP_SWAP_COLUMN 0x01#define REMAP_SWAP_NYBBLE 0x02#define REMAP_VERTICAL    0x04#define REMAP_SWAP_COM    0x10#define REMAP_SPLIT_COM   0x40enum ssd0323_mode{    SSD0323_CMD,    SSD0323_DATA};typedef struct {    DisplayState *ds;    int cmd_len;    int cmd;    int cmd_data[8];    int row;    int row_start;    int row_end;    int col;    int col_start;    int col_end;    int redraw;    int remap;    enum ssd0323_mode mode;    uint8_t framebuffer[128 * 80 / 2];} ssd0323_state;int ssd0323_xfer_ssi(void *opaque, int data){    ssd0323_state *s = (ssd0323_state *)opaque;    switch (s->mode) {    case SSD0323_DATA:        DPRINTF("data 0x%02x\n", data);        s->framebuffer[s->col + s->row * 64] = data;        if (s->remap & REMAP_VERTICAL) {            s->row++;            if (s->row > s->row_end) {                s->row = s->row_start;                s->col++;            }            if (s->col > s->col_end) {                s->col = s->col_start;            }        } else {            s->col++;            if (s->col > s->col_end) {                s->row++;                s->col = s->col_start;            }            if (s->row > s->row_end) {                s->row = s->row_start;            }        }        s->redraw = 1;        break;    case SSD0323_CMD:        DPRINTF("cmd 0x%02x\n", data);        if (s->cmd_len == 0) {            s->cmd = data;        } else {            s->cmd_data[s->cmd_len - 1] = data;        }        s->cmd_len++;        switch (s->cmd) {#define DATA(x) if (s->cmd_len <= (x)) return 0        case 0x15: /* Set column.  */            DATA(2);            s->col = s->col_start = s->cmd_data[0] % 64;            s->col_end = s->cmd_data[1] % 64;            break;        case 0x75: /* Set row.  */            DATA(2);            s->row = s->row_start = s->cmd_data[0] % 80;            s->row_end = s->cmd_data[1] % 80;            break;        case 0x81: /* Set contrast */            DATA(1);            break;        case 0x84: case 0x85: case 0x86: /* Max current.  */            DATA(0);            break;        case 0xa0: /* Set remapping.  */            /* FIXME: Implement this.  */            DATA(1);            s->remap = s->cmd_data[0];            break;        case 0xa1: /* Set display start line.  */        case 0xa2: /* Set display offset.  */            /* FIXME: Implement these.  */            DATA(1);            break;        case 0xa4: /* Normal mode.  */        case 0xa5: /* All on.  */        case 0xa6: /* All off.  */        case 0xa7: /* Inverse.  */            /* FIXME: Implement these.  */            DATA(0);            break;        case 0xa8: /* Set multiplex ratio.  */        case 0xad: /* Set DC-DC converter.  */            DATA(1);            /* Ignored.  Don't care.  */            break;        case 0xae: /* Display off.  */        case 0xaf: /* Display on.  */            DATA(0);            /* TODO: Implement power control.  */            break;        case 0xb1: /* Set phase length.  */        case 0xb2: /* Set row period.  */        case 0xb3: /* Set clock rate.  */        case 0xbc: /* Set precharge.  */        case 0xbe: /* Set VCOMH.  */        case 0xbf: /* Set segment low.  */            DATA(1);            /* Ignored.  Don't care.  */            break;        case 0xb8: /* Set grey scale table.  */            /* FIXME: Implement this.  */            DATA(8);            break;        case 0xe3: /* NOP.  */            DATA(0);            break;        case 0xff: /* Nasty hack because we don't handle chip selects                      properly.  */            break;        default:            BADF("Unknown command: 0x%x\n", data);        }        s->cmd_len = 0;        return 0;    }    return 0;}static void ssd0323_update_display(void *opaque){    ssd0323_state *s = (ssd0323_state *)opaque;    uint8_t *dest;    uint8_t *src;    int x;    int y;    int i;    int line;    char *colors[16];    char colortab[MAGNIFY * 64];    char *p;    int dest_width;    if (s->redraw) {        switch (s->ds->depth) {        case 0:            return;        case 15:            dest_width = 2;            break;        case 16:            dest_width = 2;            break;        case 24:            dest_width = 3;            break;        case 32:            dest_width = 4;            break;        default:            BADF("Bad color depth\n");            return;        }        p = colortab;        for (i = 0; i < 16; i++) {            int n;            colors[i] = p;            switch (s->ds->depth) {            case 15:                n = i * 2 + (i >> 3);                p[0] = n | (n << 5);                p[1] = (n << 2) | (n >> 3);                break;            case 16:                n = i * 2 + (i >> 3);                p[0] = n | (n << 6) | ((n << 1) & 0x20);                p[1] = (n << 3) | (n >> 2);                break;            case 24:            case 32:                n = (i << 4) | i;                p[0] = p[1] = p[2] = n;                break;            default:                BADF("Bad color depth\n");                return;            }            p += dest_width;        }        /* TODO: Implement row/column remapping.  */        dest = s->ds->data;        for (y = 0; y < 64; y++) {            line = y;            src = s->framebuffer + 64 * line;            for (x = 0; x < 64; x++) {                int val;                val = *src >> 4;                for (i = 0; i < MAGNIFY; i++) {                    memcpy(dest, colors[val], dest_width);                    dest += dest_width;                }                val = *src & 0xf;                for (i = 0; i < MAGNIFY; i++) {                    memcpy(dest, colors[val], dest_width);                    dest += dest_width;                }                src++;            }            for (i = 1; i < MAGNIFY; i++) {                memcpy(dest, dest - dest_width * MAGNIFY * 128,                       dest_width * 128 * MAGNIFY);                dest += dest_width * 128 * MAGNIFY;            }        }    }    dpy_update(s->ds, 0, 0, 128 * MAGNIFY, 64 * MAGNIFY);}static void ssd0323_invalidate_display(void * opaque){    ssd0323_state *s = (ssd0323_state *)opaque;    s->redraw = 1;}/* Command/data input.  */static void ssd0323_cd(void *opaque, int n, int level){    ssd0323_state *s = (ssd0323_state *)opaque;    DPRINTF("%s mode\n", level ? "Data" : "Command");    s->mode = level ? SSD0323_DATA : SSD0323_CMD;}void *ssd0323_init(DisplayState *ds, qemu_irq *cmd_p){    ssd0323_state *s;    qemu_irq *cmd;    s = (ssd0323_state *)qemu_mallocz(sizeof(ssd0323_state));    s->ds = ds;    graphic_console_init(ds, ssd0323_update_display, ssd0323_invalidate_display,                         NULL, s);    dpy_resize(s->ds, 128 * MAGNIFY, 64 * MAGNIFY);    s->col_end = 63;    s->row_end = 79;    cmd = qemu_allocate_irqs(ssd0323_cd, s, 1);    *cmd_p = *cmd;    return s;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆精品一区二区av白丝在线| 91福利区一区二区三区| 一区二区在线看| 久久久综合激的五月天| 91精品国产丝袜白色高跟鞋| 91精品午夜视频| 国产精品久久久久久福利一牛影视 | 欧美高清在线精品一区| 亚洲人成在线播放网站岛国| 九色综合国产一区二区三区| 欧美亚州韩日在线看免费版国语版| 国产日韩欧美一区二区三区综合| 日韩在线播放一区二区| 色一情一乱一乱一91av| 久久久亚洲精品石原莉奈| 午夜精品福利在线| 99精品视频一区| 欧美国产激情一区二区三区蜜月| 麻豆国产精品官网| 欧美一区二区在线观看| 亚洲第一福利一区| 一本色道久久综合亚洲91| 国产精品免费网站在线观看| 国产麻豆成人传媒免费观看| 欧美成人精品1314www| 日韩av一区二区三区四区| 欧美三级欧美一级| 亚洲一区二区美女| 在线免费av一区| 亚洲国产精品欧美一二99| 91麻豆高清视频| 亚洲精品日韩专区silk| 91伊人久久大香线蕉| 中文字幕精品一区二区精品绿巨人 | 欧美在线观看一二区| 久久网站热最新地址| 麻豆成人综合网| 欧美不卡视频一区| 午夜不卡av免费| 91精品国产福利| 久色婷婷小香蕉久久| 欧美大片在线观看一区| 激情偷乱视频一区二区三区| 2023国产精华国产精品| 国产精品18久久久| 中文字幕一区二区在线播放| av在线不卡免费看| 一区二区视频在线| 欧美乱熟臀69xxxxxx| 日韩成人免费电影| 精品91自产拍在线观看一区| 国产风韵犹存在线视精品| 国产色综合久久| 91丝袜呻吟高潮美腿白嫩在线观看| 中文字幕在线观看一区| 日本久久电影网| 三级久久三级久久久| 精品粉嫩aⅴ一区二区三区四区 | 久久精品视频网| 成人av在线一区二区三区| 亚洲欧美日韩在线不卡| 欧美色网一区二区| 久久精品久久综合| 亚洲天堂成人在线观看| 欧美伦理电影网| 成人午夜av在线| 亚洲第一在线综合网站| 亚洲精品一区二区三区蜜桃下载 | 精品一区二区三区影院在线午夜| 久久久久久黄色| 欧美日韩在线播放三区四区| 狠狠色综合日日| 一区二区三区中文字幕在线观看| 日韩一本二本av| 成人精品gif动图一区| 五月婷婷激情综合| 国产欧美久久久精品影院| 在线观看av不卡| 国产不卡在线播放| 天堂在线亚洲视频| 国产精品色婷婷| 日韩一区二区三区视频在线观看| 成熟亚洲日本毛茸茸凸凹| 视频一区在线播放| 亚洲欧洲一区二区三区| 精品久久人人做人人爽| 欧美性做爰猛烈叫床潮| 不卡电影一区二区三区| 蜜桃视频一区二区三区在线观看| 自拍偷自拍亚洲精品播放| 久久亚洲免费视频| 日韩精品专区在线影院观看| 欧美亚洲日本国产| 成人av在线观| 国产精品白丝jk白祙喷水网站| 午夜精品一区在线观看| 综合中文字幕亚洲| 中文字幕视频一区| 久久精品一区二区三区不卡 | 欧美日韩国产一二三| 91网上在线视频| 成人18精品视频| 久久精品视频一区| 丰满放荡岳乱妇91ww| 久久国产免费看| 香蕉av福利精品导航| 亚洲美女免费视频| 亚洲视频图片小说| 亚洲欧美二区三区| 《视频一区视频二区| 国产精品国产三级国产aⅴ原创| 国产午夜精品在线观看| 欧美电影免费观看高清完整版在| 911精品国产一区二区在线| 欧美在线free| 欧美三片在线视频观看| 欧美乱熟臀69xxxxxx| 欧美一区二区久久| 欧美成人在线直播| 欧美videos中文字幕| 精品99一区二区| 久久精品欧美日韩| 国产精品美女久久久久久| 国产精品国产a| 亚洲精选免费视频| 一区二区三区在线看| 亚洲伊人伊色伊影伊综合网| 亚洲综合一区二区精品导航| 亚洲欧美色图小说| 性欧美大战久久久久久久久| 亚洲444eee在线观看| 免费xxxx性欧美18vr| 捆绑调教美女网站视频一区| 看电视剧不卡顿的网站| 国产99精品国产| 91啪九色porn原创视频在线观看| 欧洲在线/亚洲| 欧美一二区视频| 久久精品视频网| 亚洲精品国产视频| 日韩精品电影在线| 国产河南妇女毛片精品久久久| 成人av电影在线网| 欧美日韩一本到| 久久久久一区二区三区四区| 亚洲图片你懂的| 蜜乳av一区二区| 99久久99久久精品免费看蜜桃 | 久久久午夜电影| 亚洲色图欧美激情| 日本va欧美va精品发布| 高清成人免费视频| 欧美一区二区三区婷婷月色| 久久久蜜桃精品| 天堂久久久久va久久久久| 国产一区二区三区久久悠悠色av| 97超碰欧美中文字幕| 欧美成人精精品一区二区频| 亚洲视频电影在线| 精品一区二区在线播放| 91黄色免费版| 国产网红主播福利一区二区| 亚洲自拍偷拍麻豆| 国产成人午夜精品5599| 欧美老年两性高潮| 国产精品女同一区二区三区| 轻轻草成人在线| 在线亚洲+欧美+日本专区| 一区二区三区四区亚洲| 亚洲无人区一区| 国产91精品久久久久久久网曝门| 欧美日韩国产精品成人| 综合色天天鬼久久鬼色| 国产一区二区三区视频在线播放| 欧美视频自拍偷拍| 亚洲天堂成人在线观看| 国产高清视频一区| 欧美一级理论片| 亚洲福利一二三区| 一本久道中文字幕精品亚洲嫩| 精品少妇一区二区三区日产乱码| 午夜婷婷国产麻豆精品| a级高清视频欧美日韩| 久久精品夜色噜噜亚洲aⅴ| 日产欧产美韩系列久久99| 欧美性感一类影片在线播放| 国产精品欧美一区喷水| 国产麻豆9l精品三级站| 日韩欧美一区中文| 视频一区视频二区在线观看| 色系网站成人免费| 亚洲色图在线视频| 91美女在线观看| 中文在线免费一区三区高中清不卡| 老司机午夜精品| 日韩天堂在线观看| 欧美a一区二区| 精品欧美一区二区三区精品久久| 三级精品在线观看| 欧美高清视频www夜色资源网|