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

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

?? comm.cpp

?? 支持XMODEM,YMODEM,FAX協議的串口通信軟件包
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
for (; *s;)                                 // for each char in the string
    Write(*s++);                            // write to the output queue

}



/* ******************************************************************** *
 *
 *  Write -- write a block of characters to output queue
 *
 * ******************************************************************** */

void    Comm::Write(char *s,                // block of chars to output
                    int  l)                 // length of block
{

for (; l--;)                                // for each char in the block
    Write(*s++);                            // write to the output queue

}



/* ******************************************************************** **
 *
 *    IClear -- clear input queue of unread characters
 *
 * ******************************************************************** */

void    Comm::IClear(void)
{

__asm   cli                                 // stop interrupts
i_get = i_put = i_buf;                      // reset buffer pointers
i_count = 0;                                // ..and queue count
__asm   sti                                 // ..and re-enable interrupts

}




/* ******************************************************************** **
 *
 *    OClear -- clear output queue of unsent characters
 *
 * ******************************************************************** */

void    Comm::OClear(void)
{

__asm   cli                                 // stop interrupts
o_get = o_put = o_buf;                      // reset buffer pointers
o_count = 0;                                // ..and queue count
__asm   sti                                 // ..and re-enable interrupts

}



/* ******************************************************************** *
 *
 *  Queue -- put a character into the input queue
 *
 * ******************************************************************** */

void    Comm::Queue(int c,                  // character to store
                   int m,                   // modem status register
                   int l)                   // line status register
{

if (flow && (ICount() >= i_stop) &&         // q. flow control needed?
            NOT i_flow)                     // ..and not already on
    RTS(0);                                 // a. yes .. clear RTS line

switch (IFree())                            // based on avail queue space
    {
    case 0:                                 // full input queue
        if (i_of)                           // q. in overflow?
            {                               // a. yes .. count lost chars
            if (*(UINT *) i_last < 65534U)  // q. within lost count range?
                (*(UINT *) i_last)++;       // a. yes .. tally another one
            }
         else
            {
            i_of = 1;                       // set overflow flag
            *(UINT *) i_last = 2;           // init counter to 2
            i_last[2] = 0xff;               // ..and set error flag in lsr
            }
        break;                              // ..and return to caller

    case 1:                                 // almost full
        i_last = i_put;                     // save last saved addr
        i_of = 0;                           // clear overflow flag

    default:                                // from empty to almost full
        i_count++;                          // count characters in queue
        *i_put++ = c;                       // save character in queue
        *i_put++ = m;                       // ..and modem status register
        *i_put++ = l;                       // ..and line status register

        if (i_put > i_limit)                // q. reach end of buffer?
            i_put = i_buf;                  // a. yes .. set to beginning
    }
}



/* ******************************************************************** *
 *
 *  Deque -- get a character from the output queue
 *
 * ******************************************************************** */

UINT    Comm::Deque(void)
{
char    c;                                  // work character


if (o_count == 0)                           // q. output queue empty?
    return(-1);                             // a. yes .. rtn empty handed

c = *o_get++;                               // get char from output queue
o_count--;                                  // show character being removed

if (o_get > o_limit)                        // q. reached end of buffer?
    o_get = o_buf;                          // a. yes .. set to beginning

return(c & 0xff);                           // ..and rtn with char to send

}



/* ******************************************************************** **
 *
 *    ~Comm -- destructor
 *
 * ******************************************************************** */

Comm::~Comm(void)
{

OUT(MCR, 0);                                // take down DTR and RTS
DeInstallInt();                             // remove interrupt service
delete i_buf;                               // free input
delete o_buf;                               // ..and output queues

}



/* ******************************************************************** *
 *
 *  DTR -- cycle DTR modem signal
 *
 * ******************************************************************** */

void    Comm::DTR(long t)                   // time to hold DTR low
{

OUT(MCR, MCR_DO & ~MCR_DTR);                // set off DTR control line
wait_ms(t);                                 // wait a little bit
OUT(MCR, MCR_DO);                           // ..and restore DTR

}



/* ******************************************************************** *
 *
 *  RTS -- control RTS modem signal
 *
 * ******************************************************************** */

void    Comm::RTS(int f)                    // RTS enable/disable flag
{

OUT(MCR, MCR_DO - (f ? 0 : MCR_RTS));       // set mcr register
i_flow = NOT f;                             // ..and set flow ctl'd flag

}



/* ******************************************************************** **
 *
 *    IntRoutine -- communications port interrupt service routine
 *
 * ******************************************************************** */

void    Comm::IntRoutine(void)
{
int     c,                                  // output character
        cnt,                                // loop counter
        first_cycle;                        // first cycle flag
char    iir,                                // interrupt id register
        lsr;                                // working line status reg


while (((iir = IN(IIR)) & IIR_PEND) == 0)   // while there is work to do
    {
    switch (iir & IIR_II)                   // handle each interrupt
        {
        case IIR_MSI:                       // modem status interrupt
            msr_changed = 1;                // set msr changed flag

            if ((int_msr = IN(MSR)) &       // q. modem status register
                        MSR_CTS)            // ..ready for transmits?
                {
                if (o_flow ||               // q. flow controlled?
                        IN(LSR) & LSR_THRE) // ..or transmitter empty?
                    {
                    o_flow = 0;             // a. yes .. clear flag

                    if ((c = Deque()) == -1)// q. output queue empty?
                        empty_trans = 1;    // a. yes .. set flag
                     else
                        OUT(THR, c);        // else .. put out a character
                    }
                }
            continue;                       // ..and check next interrupt

        case IIR_LSI:                       // line status interrupt
            int_lsr = IN(LSR);              // read line status register
            continue;                       // ..and check again

        case IIR_TBE:                       // transmitter buffer empty
            cnt = fifo ? 15 : 1;            // set up output fifo size
            first_cycle = 1;                // ..and first cycle flag

            for (; cnt--;)                  // loop outputing characters
                {
                if (flow &&                 // q. flow control enabled
                    NOT (IN(MSR) & MSR_CTS))// ..and receiver not ready?
                    {
                    o_flow = first_cycle;   // a. yes .. show flow ctl'd
                                            // ..if nothing went out
                    break;                  // ..and check next interrupt
                    }

                if ((c = Deque()) == -1)    // q. output queue empty?
                    {
                    empty_trans = 1;        // a. yes .. set flag
                    break;                  // ..and exit this loop
                    }

                OUT(THR, c);                // put out another character
                first_cycle = 0;            // ..and clear flag
                }

            continue;                       // ..and check again

        case IIR_RBF:                       // receiver buffer full
            while ((lsr = IN(LSR)) & LSR_DR)// while data is available
                Queue(IN(RBR), int_msr,     // ..get and store
                        lsr);               // ..in the input queue

            continue;                       // check for next interrupt
        }
    }

__asm   mov     al, EOI                     // al = end of interrupt cmd
__asm   out     I8259, al                   // send EOI to int controller

}



/* ******************************************************************** *
 *
 *  comm_int() -- communications port interrupt service routine header
 *
 * ******************************************************************** */

#pragma option -O2-b-e                      // no global reg allocation
                                            // ..or dead code elimination

void    interrupt far comm_int(...)
{

__asm   sti                                 // re-enable interrupts
comm->IntRoutine();                         // use object's interrupt rtn

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久成人18免费观看| 欧美日韩国产片| 国产一区二区三区不卡在线观看| 亚洲大片精品永久免费| 亚洲精品国产高清久久伦理二区| 亚洲视频中文字幕| 国产精品美女视频| 国产精品青草综合久久久久99| 久久久久久亚洲综合影院红桃| 国产亚洲精品aa| 国产欧美一区二区在线观看| 国产精品美女www爽爽爽| 中文字幕一区二区三区av| 国产精品美女视频| 亚洲视频电影在线| 一区二区三区日韩欧美| 亚洲自拍欧美精品| 亚洲高清不卡在线| 日本视频一区二区三区| 精品一区二区三区在线观看国产| 国产在线精品一区二区三区不卡 | 最新日韩av在线| 国产又粗又猛又爽又黄91精品| 精品一区二区三区影院在线午夜| 国产综合色产在线精品| 成人午夜精品在线| av电影在线观看一区| 色哟哟精品一区| 6080日韩午夜伦伦午夜伦| 欧美成人video| 欧美国产日韩一二三区| 亚洲婷婷在线视频| 爽好多水快深点欧美视频| 另类小说一区二区三区| 国产一区美女在线| 91视频com| 欧美一区二区三区电影| 久久久久久综合| 一区二区国产视频| 美女国产一区二区| 成人免费看的视频| 欧美日韩一区二区欧美激情 | 亚洲制服丝袜av| 蜜桃视频在线观看一区| 国产91精品在线观看| 在线日韩av片| 久久精品日韩一区二区三区| 一区二区欧美在线观看| 九九国产精品视频| 色综合欧美在线| 精品成人一区二区三区| 亚洲欧洲综合另类在线| 日韩电影在线免费| www.久久精品| 精品国产成人系列| 一区二区三区欧美日| 狠狠色丁香婷综合久久| 欧美性大战久久久久久久| 久久天天做天天爱综合色| 一区二区国产盗摄色噜噜| 国产成人综合精品三级| 欧美精品一二三| 1000部国产精品成人观看| 久久9热精品视频| 欧美亚洲国产怡红院影院| 久久理论电影网| 人人狠狠综合久久亚洲| 色综合久久99| 国产精品视频免费| 看电视剧不卡顿的网站| 99riav久久精品riav| 精品久久久久久久久久久久久久久 | 国产精品国产三级国产有无不卡 | 亚洲香肠在线观看| 国产不卡一区视频| 日韩欧美一区二区久久婷婷| 亚洲美女淫视频| 国产成人免费视频| 欧美mv日韩mv国产网站app| 亚洲一区二区在线观看视频| 99re这里只有精品6| 国产拍揄自揄精品视频麻豆| 精品一区精品二区高清| 欧美肥胖老妇做爰| 一片黄亚洲嫩模| 99久久精品国产麻豆演员表| 久久久99久久| 精品一区二区三区在线播放视频| 宅男在线国产精品| 亚洲综合网站在线观看| 日本韩国一区二区| 亚洲欧美乱综合| 色综合久久天天| 中文字幕一区二区三| 成人深夜视频在线观看| 久久久久久久网| 国产一区中文字幕| 欧美草草影院在线视频| 日韩1区2区3区| 91精品国产麻豆国产自产在线| 亚洲成人自拍网| 欧美日本在线播放| 亚洲国产日韩一区二区| 91国模大尺度私拍在线视频| 一区二区三区精品| 在线免费观看不卡av| 日韩美女视频19| 91麻豆精品视频| 亚洲自拍与偷拍| 欧美丰满少妇xxxxx高潮对白| 日韩中文字幕91| 日韩免费在线观看| 久久国产日韩欧美精品| 精品国产乱子伦一区| 久久99精品久久久久久动态图| 欧美成人猛片aaaaaaa| 国模一区二区三区白浆| 国产三级一区二区三区| 成人午夜视频福利| 中文字幕亚洲区| 欧美羞羞免费网站| 亚洲成人动漫av| 日韩区在线观看| 国产很黄免费观看久久| 亚洲国产高清在线| 91在线观看视频| 亚洲3atv精品一区二区三区| 91精品国产综合久久蜜臀| 蜜桃视频在线观看一区| 国产日韩欧美激情| 91免费在线看| 欧美aaaaa成人免费观看视频| 精品国产91洋老外米糕| 粉嫩绯色av一区二区在线观看 | 日韩成人精品在线| 日韩精品中文字幕一区二区三区| 国产高清一区日本| 亚洲精品国产精华液| 日韩一级黄色片| 国产精品1区2区3区| 亚洲视频在线一区| 91精品婷婷国产综合久久竹菊| 国产精品一线二线三线| 亚洲欧美偷拍另类a∨色屁股| 69堂成人精品免费视频| 国产精品一二三| 亚洲一区二区三区四区在线观看| 欧美一卡2卡3卡4卡| 国产激情视频一区二区在线观看| 一区二区三区中文字幕精品精品 | 成人在线综合网| 亚洲成人午夜电影| 久久久蜜臀国产一区二区| 91蜜桃免费观看视频| 久久精品国产秦先生| 亚洲欧美日韩成人高清在线一区| 91精品国产综合久久小美女| 成人黄色免费短视频| 三级在线观看一区二区| 国产欧美一区二区三区在线老狼| 欧美三级乱人伦电影| 国产福利一区二区三区在线视频| 亚洲尤物在线视频观看| 久久美女高清视频| 欧美剧情片在线观看| eeuss鲁片一区二区三区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 成人午夜看片网址| 日本亚洲免费观看| 日韩美女精品在线| 久久久久久久久免费| 欧美性猛交xxxx黑人交| 国产99精品国产| 蜜桃av一区二区三区电影| 亚洲乱码国产乱码精品精可以看 | 日韩欧美自拍偷拍| 95精品视频在线| 国产伦理精品不卡| 天天爽夜夜爽夜夜爽精品视频| 国产精品高潮久久久久无| 欧美v日韩v国产v| 91 com成人网| 91福利资源站| 91亚洲精品久久久蜜桃| 国产精品一二三四| 狠狠色丁香婷综合久久| 视频在线观看91| 亚洲成人一二三| 亚洲一区二区四区蜜桃| 亚洲同性gay激情无套| 欧美国产日韩亚洲一区| 久久免费偷拍视频| 精品美女在线播放| 91麻豆精品国产91久久久久| 欧美日韩激情一区二区| 欧美亚州韩日在线看免费版国语版| 91丨九色porny丨蝌蚪| 成人av综合一区| 成人高清免费观看| 国产盗摄女厕一区二区三区|