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

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

?? utility.cpp

?? 支持XMODEM,YMODEM,FAX協議的串口通信軟件包
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// ******************************************************************** //
//                                                                      //
//      UTILITY.CPP                                                     //
//      Copyright (c) 1993, Michael Holmes and Bob Flanders             //
//      C++ Communication Utilities                                     //
//                                                                      //
//      Chapter 7: Receiving a FAX                                      //
//      Last changed in chapter 7                                       //
//                                                                      //
//      This file contains the following miscellaneous routines.        //
//          status_line()       update the status line                  //
//          build_comm()        build comm instance                     //
//          terminal_handler()  handle special terminal keys            //
//          terminal_display()  display comm input stream               //
//          first_nonblank()    find first non-blank character          //
//          ascii_encode()      encode string w/control characters      //
//          quit_with()         give an error message, then rtn to DOS  //
//          get_time()          retrieve time of day in ticks           //
//          elapsed_time()      calculate elapsed time in ticks         //
//          time_out()          check for a timeout situation           //
//          wait()              wait for a given number timer ticks     //
//          wait_ms()           wait in milliseconds                    //
//          malloc_chk()        allocate memory with error checks       //
//          field_edit()        edit a field in a window                //
//          delete_file()       delete file any way possible            //
//          pad()               pad a string to a length                //
//          touppers()          translate string to uppercase           //
//          control_break()     control break intercept routine         //
//          critical_rtn()      DOS critical error handler              //
//                                                                      //
// ******************************************************************** //

#define TICKS_DAY 1573040L                  // number of ticks per day

/* ******************************************************************** *
 *
 *  status_line() -- update the status line
 *
 * ******************************************************************** */

void    status_line(void)
{
char    msr;                                // modem status register


window(1, 25, 80, 25);                      // set up status window
_wscroll = 0;                               // disable scrolling
textcolor(FG(stat_cn));                     // set up foreground
textbackground(BG(stat_cn));                // ..and background colors

msr = comm->Modem();                        // get modem status register

cprintf(stat_format,                        // write current status line
    com_ports[comport].name,                // ..including selected port
    line[SPEED].lp->parm,                   // ..selected baud rate
    line[DATA].lp->parm,                    // ..data bits
    line[PARITY].lp->parm,                  // ..parity
    line[STOP].lp->parm,                    // ..and stop bits
    msr & MSR_CD  ? "CD" : "  ",            // ..carrier detect
    msr & MSR_CTS ? "CTS" : "   ",          // ..clear to send
    comm->IFlow() ? "   " : "RTS");         // ..request to send

last_window = 0;                            // clear last window accessed
window(1, 1, 80, 25);                       // ..and reset for full screen

}



/* ******************************************************************** *
 *
 *  build_comm() -- build comm instance with current parameters
 *
 * ******************************************************************** */

void    build_comm()
{

if (comm)                                   // q. using a port already?
    comm->~Comm();                          // a. yes .. close it down

comm = new Comm(                            // build a Comm instance
    com_ports[comport].port,                // ..with base port address
    com_ports[comport].irq,                 // ..and interrupt number
    line[SPEED].lp->value,                  // ..baud rate divisor
    line[PARITY].lp->value |                // ..line control values
    line[DATA].lp->value |                  // ..including parity,
    line[STOP].lp->value,                   // ..data and stop bits
    flowctl, 4096, 512);                    // ..and flow control flag

comm->Write(CMD_EXECUTE);                   // execute previous command
wait_ms(250);                               // .. let it execute
comm->Write(CMD_EXECUTE);                   // .. and.. kill it.

comm->Write(CMD_INIT);                      // send modem init string
comm->Write(CMD_EXECUTE);                   // .. execute init command

}



/* ******************************************************************** *
 *
 *  terminal_handler() -- handle terminal input
 *
 * ******************************************************************** */

void    terminal_handler(void)
{
int     key;                                // extended keyboard character


if (comm->ModemChanged())                   // q. time to update status?
    {
    status_line();                          // a. yes .. do a status update
    term->MakeCurrent();                    // ..and reposition cursor
    }

if ((key = get_key(ALLOW_ALT)) == 0)        // q. get a valid key?
    return;                                 // a. no .. just return

if (key >= 0x100)                           // q. alt or function key?
    {                                       // a. yes .. check validity
    if (main_menu.ValidateKey(key))         // q. valid for main menu?
        {
        main_menu.Display(key);             // a. yes .. display menu

        term->MakeCurrent();                // reposition cursor
        return;                             // ..then return to caller
        }
    }

switch (key)                                // handle special keys
    {
    case F1:                                // clear screen request
        term->Clear();                      // clear terminal window
        break;                              // ..and continue

    default:
        if (key >= 0x100)                   // q. special key?
            {
            printf(BELL);                   // a. yes .. give error beep
            break;                          // ..and continue
            }

        comm->Write(key);                   // else .. send out com port
    }
}



/* ******************************************************************** *
 *
 *  terminal_display() -- display comm input stream
 *
 * ******************************************************************** */

void    terminal_display(void)
{
int     i;                                  // loop counter
char    c,                                  // input character
        msr,                                // modem status register
        lsr,                                // line status register
        buf[40];                            // work buffer


if ((i = comm->Read(&c, &msr, &lsr)) == -1) // q. get a comm character?
    return;                                 // a. no .. just return

if (i)                                      // q. buffer overflow?
    {
    sprintf(buf, overflow_msg, i);          // a. yes .. prepare msg
    term->DisplayReverse(buf);              // ..and give to user
    return;                                 // ..then return to caller
    }

if ((lsr &= LSR_ERROR) != 0)                // q. any errors?
    for (i = 0, lsr >>= 1; lsr;             // a. yes .. loop thru and
            i++, lsr >>= 1)                 // ..display error messages
        if (lsr & 1)                        // q. recognize this error?
            term->DisplayReverse(           // a. yes .. display error msg
                    line_error[i]);         // ..from message table

if (c)                                      // q. null character?
    term->Display(c);                       // a. no .. display character

}



/* ******************************************************************** *
 *
 *  first_nonblank() -- find first non-blank character
 *
 * ******************************************************************** */

char    *first_nonblank(char *s)            // string to look through
{

for (; *s; s++)                             // loop thru string
    if (NOT isspace(*s))                    // q. find a non-blank char?
        return(s);                          // a. yes .. return w/address

return(0);                                  // else .. string is blank

}



/* ******************************************************************** *
 *
 *  ascii_encode() -- encode string w/control characters
 *
 * ******************************************************************** */

char    *ascii_encode(char *s)              // string to encode
{
char    *p, *q;                             // work pointers


for (p = q = s;                             // work across input string
             *s == ' ' || *s == '='; s++)   // ..skipping leading blanks
    ;                                       // ..and delimiting equals

for (; *s; s++)                             // work across rest of the
    {                                       // ..input string
    if (*s == ';')                          // q. hit start of comment?
        break;                              // a. yes .. exit loop

    if (*s != '^')                          // q. control character?
        {
        *p++ = *s;                          // a. no .. just copy
        continue;                           // ..and process next one
        }

    s++;                                    // move on to next input char

    if (*s == '^' || *s == ';')             // q. special characters?
        {
        *p++ = *s;                          // a. yes .. just copy
        continue;                           // ..and process next one
        }

    *p++ = *s & 0x1f;                       // make into control char
    }

*p = '\0';                                  // terminate encoded string
return(q);                                  // ..and return string addr

}



/* ******************************************************************** *
 *
 *  quit_with() -- give an error message, then return to DOS
 *
 * ******************************************************************** */

void    quit_with(char *msg, ...)           // quit with an error message
{
va_list list;                               // variable list


if (full_screen)                            // q. in full screen mode?
    {
    term->Close();                          // a. yes .. close term window
    window(1, 1, 80, max_lines);            // set up termination screen
    textcolor(FG(mono_1));                  // ..with foreground
    textbackground(BG(mono_1));             // ..and background colors
    clrscr();                               // ..and clear screen
    CURSOR();                               // ..and set cursor to normal
    printf(copyright);                      // display program banner
    }

if (comm)                                   // q. comm object created?
    comm->~Comm();                          // a. yes .. call destructor

_dos_setvect(0x1b, old_break);              // restore old ^break handler

va_start(list, msg);                        // set up variable list
vprintf(msg, list);                         // give error message ..
exit(rc);                                   // ..and then quit

}



/* ******************************************************************** *
 *
 *  time_out() -- check for a timeout event
 *
 * ******************************************************************** */

int     time_out(long *n)                   // time to wait in ticks
{
static  unsigned
long    far *timer = (unsigned long far *)  // BIOS timer tick counter
                        MK_FP(0x40, 0x6c),  // ..down in low memory
        last,                               // last accessed time
        work;                               // work variable


work = *timer;                              // get current time

if (*n > 0)                                 // q. first time call?
    {
    *n = -*n;                               // a. yes .. change sign
    last = work;                            // ..and initialize counters
    }

if (work != last)                           // q. time pass?
    {                                       // a. yes .. see how much
    if (work <= last)                       // q. clock go past midnite?
        (*n)++;                             // a. yes .. count as 1 tick
     else
        *n += (UINT)(work - last);          // else .. count everything

    last = work;                            // start again w/curr time
    }

return(*n >= 0L);                           // return TRUE at timeout time

}



/* ******************************************************************** *
 *
 *  get_time() -- retrieve the time in ticks
 *
 * ******************************************************************** */

ULONG   get_time(void)                      // retrieve time in ticks
{
static
ULONG   far *timer = (unsigned long far *)  // BIOS timer tick counter
                        MK_FP(0x40, 0x6c);  // ..down in low memory

return(*timer);                             // return current value

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲中国最大av网站| 国产精品网站在线| 欧美日韩一区二区不卡| 成人精品国产一区二区4080| 韩国av一区二区三区| 精品中文字幕一区二区小辣椒 | 成人性视频免费网站| 捆绑紧缚一区二区三区视频| 日韩成人一区二区| 欧美a级一区二区| 蜜桃精品视频在线观看| 久久97超碰色| 国产成人午夜视频| 不卡影院免费观看| 色婷婷久久久久swag精品| 欧美三级三级三级| 日韩一区二区三区免费看 | 成人av网站大全| 在线视频国内自拍亚洲视频| 欧美色视频一区| 日韩视频在线永久播放| 国产亚洲精品7777| 亚洲精品五月天| 日韩在线观看一区二区| 国产在线精品一区二区夜色| 不卡免费追剧大全电视剧网站| 91香蕉视频污| 911精品国产一区二区在线| 亚洲精品在线观| 国产精品久久久久婷婷| 午夜精品久久一牛影视| 久久精品国产999大香线蕉| 国产精品888| 色综合天天综合网天天狠天天 | 精品国产sm最大网站免费看| 亚洲国产精品成人久久综合一区| 一区二区三区在线看| 麻豆国产精品777777在线| 9色porny自拍视频一区二区| 欧美一级久久久| 亚洲三级免费电影| 黄色成人免费在线| 欧美日韩一区成人| 亚洲丝袜制服诱惑| 韩国欧美国产一区| 欧美日韩在线直播| 欧美激情自拍偷拍| 图片区小说区国产精品视频| av在线播放不卡| 欧美成人精品高清在线播放| 一区二区高清免费观看影视大全 | 久久不见久久见免费视频1| av午夜一区麻豆| 精品国产亚洲在线| 午夜激情一区二区三区| 91女厕偷拍女厕偷拍高清| 精品电影一区二区| 日韩成人精品在线| 在线欧美日韩精品| 中文字幕在线不卡| 国产成人av影院| 精品国产91久久久久久久妲己| 午夜欧美在线一二页| 91亚洲午夜精品久久久久久| 中文一区二区在线观看| 国产精品乡下勾搭老头1| 日韩美女一区二区三区| 日韩精品乱码免费| 欧美日韩国产综合视频在线观看| 亚洲欧美日韩国产成人精品影院 | 夜夜操天天操亚洲| 91丝袜美腿高跟国产极品老师| 中文字幕电影一区| 国产成人午夜视频| 国产精品久久久久永久免费观看| 国产激情偷乱视频一区二区三区| 久久蜜桃av一区二区天堂| 韩国在线一区二区| 国产亚洲欧美中文| 成人激情av网| **性色生活片久久毛片| 色老汉一区二区三区| 亚洲在线中文字幕| 欧美日韩一区二区欧美激情 | 久久综合九色综合久久久精品综合| 日韩av一区二区三区四区| 欧美另类高清zo欧美| 午夜欧美一区二区三区在线播放 | 麻豆视频一区二区| 精品国产三级a在线观看| 国产一区二区三区在线观看免费| 精品福利一区二区三区免费视频| 韩国女主播成人在线观看| 亚洲国产精品国自产拍av| av亚洲精华国产精华精| 一区二区三区精品在线| 精品视频在线看| 精品一区二区三区在线观看| 久久综合九色综合欧美就去吻| 国产成人精品一区二区三区网站观看| 国产精品美女久久久久久| 91福利社在线观看| 老司机精品视频导航| 最新热久久免费视频| 欧美视频中文字幕| 裸体歌舞表演一区二区| 国产精品美女久久久久久久久| 欧美制服丝袜第一页| 久久99精品国产.久久久久 | 亚洲图片一区二区| 久久众筹精品私拍模特| 一本久久综合亚洲鲁鲁五月天| 天天综合天天综合色| 欧美激情一区不卡| 欧美日韩精品一二三区| 懂色av一区二区三区免费观看| 亚洲成人一区二区在线观看| 亚洲精品在线电影| 欧美午夜精品一区二区蜜桃| 国产精品香蕉一区二区三区| 亚洲成人精品影院| 国产精品―色哟哟| 欧美一级xxx| 在线观看视频一区二区| 风间由美一区二区av101| 日韩国产在线一| 亚洲视频香蕉人妖| 久久午夜色播影院免费高清| 欧美日韩专区在线| 91丝袜美腿高跟国产极品老师| 国产一区二区精品久久91| 婷婷国产在线综合| 亚洲精选视频在线| 中文字幕欧美三区| 精品国产乱码久久久久久图片| 在线免费观看成人短视频| 成人性生交大片免费看中文| 激情成人综合网| 男女激情视频一区| 亚洲成人在线网站| 亚洲妇女屁股眼交7| 亚洲色图欧美激情| 国产精品三级av在线播放| 亚洲精品一区二区三区影院| 91精品久久久久久久99蜜桃| 欧美视频完全免费看| 在线免费观看一区| 91久久一区二区| 色婷婷av一区二区三区gif| va亚洲va日韩不卡在线观看| 国产一区二三区好的| 精品一区二区三区日韩| 精品综合免费视频观看| 国产一区二区免费视频| 久久99热这里只有精品| 玖玖九九国产精品| 美洲天堂一区二卡三卡四卡视频| 日韩av中文在线观看| 男男视频亚洲欧美| 麻豆国产91在线播放| 久久国产三级精品| 免费观看30秒视频久久| 精一区二区三区| 国产成人精品一区二| 91蝌蚪porny成人天涯| 99riav久久精品riav| 色婷婷av一区二区三区gif| 一本色道久久综合亚洲91 | 精品亚洲porn| 黄一区二区三区| 99视频精品免费视频| 精品视频在线免费看| 精品国产区一区| 国产喷白浆一区二区三区| 亚洲特黄一级片| 视频一区二区中文字幕| 久久精品99国产精品| 丁香婷婷综合五月| 91黄色免费网站| www国产精品av| 亚洲女性喷水在线观看一区| 亚洲高清视频的网址| 经典三级在线一区| 99久久精品免费精品国产| 欧美视频三区在线播放| 欧美精品一区二区三区蜜桃| 国产精品久久一级| 婷婷国产在线综合| 成人免费va视频| 欧美日韩免费一区二区三区视频| 精品日韩在线观看| 亚洲一级片在线观看| 精品写真视频在线观看| 色天使色偷偷av一区二区| 精品日本一线二线三线不卡| 亚洲欧洲av在线| 久色婷婷小香蕉久久| 欧洲一区二区三区在线| 久久久激情视频| 五月综合激情婷婷六月色窝|