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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? utility.cpp

?? 支持XMODEM,YMODEM,FAX協(xié)議的串口通信軟件包
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
}



/* ******************************************************************** *
 *
 *  elapsed_time() -- return elapsed time in ticks
 *
 * ******************************************************************** */

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

if (st > *timer)                            // q. start time greater?
   return((TICKS_DAY - st) + *timer);       // a. yes .. add in rollover;

else
   return(*timer - st);                     // return elapsed ticks
}



/* ******************************************************************** *
 *
 *  wait() -- wait for a given number of timer ticks
 *
 * ******************************************************************** */

void    wait(long n)                        // time to wait in ticks
{
long    far *timer = (long far *)           // BIOS timer tick counter
                        MK_FP(0x40, 0x6c),  // ..down in low memory
        start, work;                        // start tick count

start = *timer;                             // get current time

while (n > 0)                               // loop 'til n ticks past
    {
    if ((work = *timer) != start)           // q. time pass?
        {                                   // a. yes .. see how much
        if (work < start)                   // q. clock go past midnite?
            n--;                            // a. yes .. count as 1 tick
         else
            n -= (UINT)(work - start);      // else .. count everything

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

     else
        kbhit();                            // else .. check keyboard
    }
}



/* ******************************************************************** *
 *
 *  wait_ms() -- wait in milliseconds
 *
 * ******************************************************************** */

void    wait_ms(long ms)                    // milliseconds to wait
{

wait((ms + 54) / 55);                       // convert then wait in ticks

}



/* ******************************************************************** *
 *
 *  malloc_chk() -- allocate memory with error processing
 *
 * ******************************************************************** */

void    *malloc_chk(int s)                  // size to allocate
{
void    *p;                                 // work pointer

if ((p = malloc(s)) == 0)                   // q. out of memory?
    quit_with(no_memory, s);                // a. yes .. give error msg

return(p);                                  // finally rtn with pointer

}



/* ******************************************************************** *
 *
 *  field_edit() -- edit a string field in a window
 *
 * ******************************************************************** */

int     field_edit(Window *win,             // window to work in
                   int  c, int r,           // initial column and row
                   char **s,                // initial field data
                   int  m)                  // maximum field length
{
int     i,                                  // string index
        k,                                  // keyboard input
        x,                                  // current column
        ins;                                // insert flag
char   *org,                                // original string pointer
       *w,                                  // work string pointer
        b[80];                              // work buffer


org = *s;                                   // get initial field data
w = (char *) malloc_chk(m + 1);             // allocate work string
memset(w, ' ', m);                          // clear to blanks
w[m] = 0;                                   // ..and make a string
ins = 0;                                    // clear insert flag

if (org)                                    // q. orig data available?
    strncpy(w, org, strlen(org));           // a. yes .. copy to work

CURSOR();                                   // turn cursor on
win->AtSayReverse(c, r, w);                 // ..display field
win->GotoXY(x = c, r);                      // locate start of field

for(;;)                                     // loop till user quits
    {
    while (NOT (k = get_key(NO_ALT)))       // wait for a key
        ;                                   // ..before continuing

    switch (k)                              // handle user's input
        {
        case LEFT:                          // left key
            if (--x < c)                    // q. past left margin?
                x = c;                      // a. yes .. reset
            break;                          // ..then get next key

        case RIGHT:                         // right key
            if (++x >= (m + c - 1))         // q. past right margin?
                x = m + c - 1;              // a. yes .. reset
            break;                          // ..then get next key

        case BACKSPACE:                     // backspace
            if (x == c)                     // q. at top of window?
                {
                printf(BELL);               // a. yes .. give warning
                break;                      // ..and wait for another..
                }

            x--;                            // move left one character
                                            // ..and fall into delete key

        case DELETE:                        // delete key
            i = x - c;                      // set up string index
            strcpy(&w[i], &w[i + 1]);       // simulate delete
            w[m - 1] = ' ';                 // ..and put a blank at end
            sprintf(b, "%s", &w[i]);        // make into string
            win->AtSayReverse(x, r, b);     // ..display remainder
            break;                          // ..and wait for next key

        case HOME:                          // home key
            x = c;                          // reset pointer to start
            break;                          // ..and wait for next key

        case END:                           // end key
            x = c + m - 1;                  // reset pointer to end
            break;                          // ..and wait for next key

        case CR:                            // carriage return
        case UP:                            // up arrow key
        case DOWN:                          // down arrow key
            NOCURSOR();                     // turn cursor off
            free(org);                      // release original data
            *s = w;                         // store addr of new data
            win->AtSay(c, r, w);            // ..display field normally
            return(DOWN);                   // ..then return to caller

        case ESC:                           // escape key
            NOCURSOR();                     // turn cursor off
            win->AtSay(c, r, w);            // ..display field normally
            free(w);                        // release work copy
            return(0);                      // ..then return to caller

        case INSERT:                        // insert toggle
            if (ins)                        // q. insert mode active?
                {
                ins = 0;                    // a. yes .. turn it off
                CURSOR();                   // ..and use proper cursor
                }
             else
                {
                ins = 1;                    // else .. set on insert
                BIGCURSOR();                // ..and show insert cursor
                }
            break;                          // then wait for next key

        default:                            // error case
            if (k & 0xff00 ||               // q. function key..
                        k < ' ')            // ..or less than a blank?
                {
                printf(BELL);               // a. yes .. ring the bell
                break;                      // ..and wait for next key
                }

            i = x - c;                      // get string index

            if (ins)                        // q. insert mode active?
                {
                memmove(&w[i + 1], &w[i],   // a. yes .. move everything
                        m - i);             // ..for the remainder over
                w[m] = 0;                   // ..and overlay the overflow
                w[i] = (char) k;            // put new char its place
                sprintf(b, "%s", &w[i]);    // make into a displayable
                }
             else
                {
                w[i] = (char) k;            // save character in string
                sprintf(b, "%c", k);        // make into a string
                }

            win->AtSayReverse(x, r, b);     // display new char/string

            if (i < (m - 1))                // q. up to right margin?
                x++;                        // a. no .. advance one

            break;                          // ..then get next key
        }

    win->GotoXY(x, r);                      // ..then go there
    }
}



/* ******************************************************************** *
 *
 *  delete_file() -- delete file any way necessary
 *
 * ******************************************************************** */

int     delete_file(char *s)                // filename to delete
{
int     rc;                                 // return code, 0=ok


if ((rc = unlink(s)) != 0)                  // q. regular unlink work?
    {                                       // a. no .. change attributes
    if (NOT (rc = chmod(s, S_IWRITE)))      // q. change work?
        rc = unlink(s);                     // a. yes .. try delete again
    }

return(rc);                                 // return with final status

}



/* ******************************************************************** *
 *
 *  pad() -- pad a string to a length
 *
 * ******************************************************************** */

void    pad(char *s,                        // target string
            int len)                        // final length
{
int     i;                                  // calculated pad length


i = strlen(s);                              // get current length

if (i < len)                                // q. need padding?
    {
    len -= i;                               // a. yes .. get pad length
    memset(&s[i], ' ', len);                // ..blank out rest
    }

s[len] = 0;                                 // ..and terminate string

}



/* ******************************************************************** *
 *
 *  touppers() -- translate all characters to uppercase
 *
 * ******************************************************************** */

void    touppers(char *s)                   // string to translate
{

while (*s)                                  // for each char in string
      {
      *s = toupper(*s);                     // .. translate to uppercase
      s++;                                  // .. and go to next char
      }

}



/* ******************************************************************** *
 *
 *  control_break() -- control break intercept routine
 *
 * ******************************************************************** */

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

void    interrupt control_break(...)
{

 asm    mov al, 20                          // al = end of interrupt cmd
 asm    out 20, al                          // clear kb interrupt on 8259

}



/* ******************************************************************** *
 *
 *  critical_rtn() -- DOS critical error handler
 *
 * ******************************************************************** */

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

void    interrupt critical_routine(...)
{

if (_AX & 0x800)                            // q. fail allowed?
    _AX = (_AX & 0xff00) | 3;               // a. yes .. show failed
 else
    _AX = (_AX & 0xff00) | 2;               // else .. abort

}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品午夜久久福利影院| 国产麻豆视频精品| 久久久www免费人成精品| 在线一区二区观看| 国产精品一区一区三区| 亚洲v精品v日韩v欧美v专区 | 欧美撒尿777hd撒尿| 激情成人综合网| 亚洲成人久久影院| 中文字幕在线播放不卡一区| 日韩一区二区高清| 在线中文字幕不卡| 成人白浆超碰人人人人| 国产麻豆精品在线观看| 三级影片在线观看欧美日韩一区二区| 国产精品国产三级国产普通话99 | 免费的成人av| 一二三区精品福利视频| 欧美韩国日本不卡| 久久久久亚洲蜜桃| 精品久久人人做人人爽| 欧美一卡二卡三卡四卡| 9191成人精品久久| 欧美性受xxxx| 在线看国产一区二区| 一本大道久久a久久精二百 | 日韩精品一区二区三区中文精品| 欧美综合一区二区三区| 一本大道久久a久久综合| 91天堂素人约啪| 99九九99九九九视频精品| 粉嫩av一区二区三区| 风流少妇一区二区| 国产成人精品免费网站| 国产东北露脸精品视频| 国产不卡免费视频| 粉嫩蜜臀av国产精品网站| 成人亚洲一区二区一| 成人精品小蝌蚪| 成人午夜在线视频| 成人av综合一区| 99久久精品99国产精品| 99国产麻豆精品| 91丨九色丨国产丨porny| 91麻豆蜜桃一区二区三区| 91亚洲精品一区二区乱码| 日本黄色一区二区| 欧美日韩综合在线免费观看| 7777精品伊人久久久大香线蕉最新版| 51精品视频一区二区三区| 91精品国产福利在线观看| 精品久久久影院| 国产精品色呦呦| 一级日本不卡的影视| 丝袜美腿亚洲色图| 裸体健美xxxx欧美裸体表演| 国产一区二区在线观看视频| 国产成人啪午夜精品网站男同| eeuss鲁片一区二区三区在线看| av在线不卡观看免费观看| 日本乱人伦一区| 666欧美在线视频| 2023国产精品| 亚洲精品精品亚洲| 日韩电影在线一区| 国产精品影音先锋| 色噜噜狠狠成人中文综合 | 日韩三级中文字幕| 国产日韩欧美精品电影三级在线| 国产精品久久久久aaaa| 亚洲国产综合在线| 国产毛片精品一区| 在线观看日韩电影| 精品国产乱码久久久久久老虎| 亚洲国产经典视频| 午夜精品久久久久久久久| 国产美女在线观看一区| 色天天综合久久久久综合片| 欧美一区二区三区在线| 国产精品久久久久久久第一福利| 天堂资源在线中文精品| 国产aⅴ精品一区二区三区色成熟| av在线一区二区三区| 日韩西西人体444www| 亚洲欧美综合在线精品| 日韩va欧美va亚洲va久久| 成人黄色网址在线观看| 91精品婷婷国产综合久久性色| 国产亚洲精品免费| 午夜精品久久久久久久| 福利一区二区在线| 日韩欧美一二三| 亚洲免费观看高清在线观看| 久久激情五月激情| 欧美日韩精品欧美日韩精品| 中文字幕av资源一区| 日韩中文字幕1| 99精品热视频| www欧美成人18+| 日本va欧美va瓶| 欧美专区在线观看一区| 欧美国产精品一区二区三区| 视频在线观看91| 色av成人天堂桃色av| 国产精品久久一卡二卡| 久久99国产精品麻豆| 欧美性猛交xxxx乱大交退制版 | 久久久久久久久一| 午夜视频久久久久久| 91原创在线视频| 国产欧美中文在线| 免费人成网站在线观看欧美高清| 色婷婷激情久久| 国产精品福利一区| 国产a视频精品免费观看| 精品va天堂亚洲国产| 日本sm残虐另类| 欧美色爱综合网| 一区二区久久久久| 97精品超碰一区二区三区| 欧美激情在线一区二区| 国产主播一区二区| 日韩女优av电影在线观看| 亚洲成人第一页| 日本精品免费观看高清观看| 亚洲品质自拍视频| 色又黄又爽网站www久久| 1000部国产精品成人观看| 97成人超碰视| 亚洲欧美另类在线| 99精品偷自拍| 亚洲女同ⅹxx女同tv| 91视视频在线观看入口直接观看www| 国产日产精品一区| eeuss鲁片一区二区三区| 国产精品日日摸夜夜摸av| 成人精品免费视频| 亚洲欧洲成人精品av97| 色综合视频一区二区三区高清| 最近中文字幕一区二区三区| 91在线你懂得| 亚洲精品久久久久久国产精华液| 色婷婷一区二区三区四区| 亚洲视频每日更新| 欧洲精品一区二区三区在线观看| 亚洲第一av色| 在线综合+亚洲+欧美中文字幕| 青青青爽久久午夜综合久久午夜 | 日韩一区二区三区免费观看| 人人狠狠综合久久亚洲| 精品国产区一区| 国产aⅴ精品一区二区三区色成熟| 亚洲欧洲另类国产综合| 欧美性受xxxx| 日本不卡视频在线| 久久这里只有精品6| av不卡在线观看| 亚洲3atv精品一区二区三区| 欧美videossexotv100| 国产成人免费视频网站高清观看视频| 国产精品人人做人人爽人人添| 在线国产电影不卡| 美女视频第一区二区三区免费观看网站| 日韩欧美国产三级| 99精品国产99久久久久久白柏| 亚洲国产一区视频| 久久精品一二三| 色老汉一区二区三区| 美女www一区二区| 中文字幕在线一区免费| 欧美高清性hdvideosex| 国产福利一区二区三区视频| 亚洲综合区在线| 日韩精品专区在线| 色综合视频在线观看| 麻豆高清免费国产一区| 亚洲视频一区在线| 精品久久久久久久久久久久久久久 | aaa欧美大片| 午夜国产精品影院在线观看| 久久久五月婷婷| 日本丰满少妇一区二区三区| 麻豆91免费观看| 亚洲日本乱码在线观看| 精品噜噜噜噜久久久久久久久试看| 99久久精品国产精品久久| 伦理电影国产精品| 亚洲黄色av一区| 久久久久9999亚洲精品| 欧美片在线播放| www.欧美.com| 国产一区二区视频在线播放| 亚洲超碰精品一区二区| 国产精品久久一级| 精品日韩在线一区| 在线观看中文字幕不卡| 不卡一二三区首页| 激情五月激情综合网| 亚洲国产cao| 亚洲免费在线看|