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

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

?? zmisc.c

?? zmodem文件傳輸協議的源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*--------------------------------------------------------------------------*/
/* FILE: zmisc.c    (Opus zmodem routines used by send and receive)         */
/*                                                                          */
/*                                                                          */
/*               The Opus Computer-Based Conversation System                */
/*       (c) Copyright 1986, Wynn Wagner III, All Rights Reserved           */
/*                                                                          */
/*      This implementation of Chuck Forsberg's ZMODEM protocol was         */
/*              for Opus by Rick Huebner and Wynn Wagner III                */
/*                                                                          */
/* (MSC/4 with /Zp /Ox)                                                     */
/*                                                                          */
/*                                                                          */
/*                                                                          */
/*                                                                          */
/*  This module is similar to a routine used by Opus-Cbcs (1.00).  It is    */
/*  provided for your information only.  You will find routines that need   */
/*  to be coded and identifiers to be resolved.                             */
/*                                                                          */
/*  There is absolutely no guarantee that anything here will work.  If you  */
/*  break this routine, you own both pieces.                                */
/*                                                                          */
/*  USAGE:  You may use this material in any program with no obligation     */
/*          as long as there is no charge for your program.  For more       */
/*          information about commercial use, contact the "OPUSinfo HERE"   */
/*          BBS (124/111).                                                  */
/*                                                                          */
/*  NOTE:   There are a couple of things the Opus implementation does that  */
/*          aren't part of the original ZModem protocol.  They all deal     */
/*          with WaZOO type ("ZedZap") netmail and should only show up when */
/*          used under that condition.                                      */
/*                                                                          */
/*             * The maximum packet size can grow larger than 1k.  It is    */
/*               sensitive to the baud rate.  (2400b=2048k; 9600b=8192k)    */
/*             * The sender must be able to send nothing.  In other words,  */
/*               the sending system must be able to initiate and terminate  */
/*               a zmodem send session without having to actually send a    */
/*               file.  Normally this kind of thing would never happen in   */
/*               zmodem.                                                    */
/*                                                                          */
/*                                                                          */
/*--------------------------------------------------------------------------*/
#include "zmodem.h"



static int Rxtype;               /* Type of header received                 */
static int Rxframeind;           /* ZBIN ZBIN32,ZHEX type of frame received */

static char hex[] = "0123456789abcdef";

/* Send a byte as two hex digits */
#define Z_PUTHEX(i,c) {i=(c);SENDBYTE(hex[((i)&0xF0)>>4]);SENDBYTE(hex[(i)&0xF]);}



/*--------------------------------------------------------------------------*/
/* Routines used by other ZModem modules...                                 */
/*--------------------------------------------------------------------------*/
int  pascal Z_GetByte(int);
void pascal Z_PutString(unsigned char *);
void pascal Z_SendHexHeader(unsigned short,unsigned char *);
int  pascal Z_GetHeader(unsigned char *);
int  pascal Z_GetZDL(void);
void pascal Z_PutLongIntoHeader(long);
unsigned short pascal Z_UpdateCRC(unsigned short,unsigned short);


/*--------------------------------------------------------------------------*/
/* Private routines                                                         */
/*--------------------------------------------------------------------------*/
static int  pascal _Z_qk_read(void);
static int  pascal _Z_GetBinaryHeader(unsigned char *);
static int  pascal _Z_GetHexHeader(unsigned char *);
static int  pascal _Z_GetHex(void);
static int  pascal _Z_TimedRead(void);
static long pascal _Z_PullLongFromHeader(unsigned char *);



extern byte *local_CEOL;
extern char *KBD_msg;


void pascal z_message( s )
   byte *s;
   begin
   	gotoxy( locate_x+20, locate_y );
      if (s) cputs(s);
      cputs( local_CEOL );
   end


void z_log(s)
   byte *s;
   begin
      word x, y;

      z_message(s);

      x  = locate_x;
      y  = locate_y;
      status_line(s); /* also does disk file logging */
      locate_x = x;
      locate_y = y;

   end


void show_loc(l,w)
   unsigned long  l;
   unsigned int   w;
   begin
      gotoxy( locate_x+35, locate_y );
      cprintf("Ofs=%ld Retries=%d%s",l,w,local_CEOL);
   end


byte * pascal zalloc()
   begin
      byte *sptr;

      sptr  = malloc(WAZOOMAX);
      if (!sptr)
         begin
         	status_line("!Z-MEMOVFL");
            adios(2);
         end
      return sptr;
   end







/*--------------------------------------------------------------------------*/
/* Z GET BYTE                                                               */
/* Get a byte from the modem;                                               */
/* return TIMEOUT if no read within timeout tenths,                         */
/* return RCDO if carrier lost                                              */
/*--------------------------------------------------------------------------*/
int pascal Z_GetByte(tenths)
   register int tenths;
   begin
      register int i;

      i^=i;
      do
      	begin
            if (CHAR_AVAIL()) return MODEM_IN();
         end
      while((i++)<2000);


      i   = tenths/10;
      if (i<1)   i =  1;
      if (i>58)  i = 58;

      i = set_timer(i);

      while(!CHAR_AVAIL())
         begin
            if (!CARRIER)     return RCDO;

            time_release();
            if (time_gone(i)) return TIMEOUT;
         end

      return MODEM_IN();

   end







/*--------------------------------------------------------------------------*/
/* QK_READ  (like Z_GetByte, but assumes the time to be Rxtimeout)          */
/* Get a byte from the modem;                                               */
/* return TIMEOUT if no read within timeout tenths,                         */
/* return RCDO if carrier lost                                              */
/*--------------------------------------------------------------------------*/
static int pascal _Z_qk_read()
   begin
      register int i;
      register int time_val;

      time_val^=time_val;
      do
      	begin
            if ((i=MODEM_STATUS())&DATA_READY)  return MODEM_IN();
            if (!(i&ctl.carrier_mask))          return RCDO;
         end
      while((time_val++)<2000);

      time_val = set_timer(Rxtimeout);
      do
         begin
            if ((i=MODEM_STATUS())&DATA_READY)  return MODEM_IN();
            if (!(i&ctl.carrier_mask))          return RCDO;
            time_release();
         end
      while(time_left(time_val));

      return TIMEOUT;

   end







/*--------------------------------------------------------------------------*/
/* Z PUT STRING                                                             */
/* Send a string to the modem, processing for \336 (sleep 1 sec)            */
/* and \335 (break signal, ignored)                                         */
/*--------------------------------------------------------------------------*/
void pascal Z_PutString(s)
   register unsigned char *s;
   begin
      register int c;

      while (*s)
         begin
            switch (c = *s++)
               begin
                  case '\336':   big_pause(2);
                  case '\335':   break;
                  default:       SENDBYTE(c);
               end /* switch */

         end /* while */

   end /* Z_PutString */









/*--------------------------------------------------------------------------*/
/* Z UPDATE CRC                                                             */
/* update CRC                                                               */
/*--------------------------------------------------------------------------*/
unsigned short pascal Z_UpdateCRC(c, crc)
   unsigned short c;
   unsigned short crc;
   begin
      register int    count;
      register word   temp;

      temp   = crc;

      for (count=8; --count>=0; )
         begin
            if (temp & 0x8000)
               begin
                  temp <<= 1;
                  temp += (((c<<=1) & 0400)  !=  0);
                  temp ^= 0x1021;
               end
            else
               begin
                  temp <<= 1;
                  temp += (((c<<=1) & 0400)  !=  0);
               end
         end /* for */

      return temp;

   end /* z_crc update */




/*--------------------------------------------------------------------------*/
/* Z SEND HEX HEADER                                                        */
/* Send ZMODEM HEX header hdr of type type                                  */
/*--------------------------------------------------------------------------*/
void pascal Z_SendHexHeader(type, hdr)
   unsigned short type;
   unsigned char *hdr;
   begin
      register int   n;
      register int   i;
      unsigned short crc;

      SENDBYTE(ZPAD);
      SENDBYTE(ZPAD);
      SENDBYTE(ZDLE);
      SENDBYTE(ZHEX);
      Z_PUTHEX(i,type);

      crc = Z_UpdateCRC(type, 0);
      for (n=4; --n >= 0;)
         begin
            Z_PUTHEX(i,(*hdr));
            crc = Z_UpdateCRC(((unsigned short)(*hdr++)), crc);
         end
      crc = Z_UpdateCRC(0,crc);
      crc = Z_UpdateCRC(0,crc);
      Z_PUTHEX(i,(crc>>8));
      Z_PUTHEX(i,crc);

      /* Make it printable on remote machine */
      SENDBYTE('\r');
      SENDBYTE('\n');

      /* Uncork the remote in case a fake XOFF has stopped data flow */
      if (type != ZFIN) SENDBYTE(021);

      wait_for_clear();

   end /* Z_SendHexHeader */





/*--------------------------------------------------------------------------*/
/* Z GET HEADER                                                             */
/* Read a ZMODEM header to hdr, either binary or hex.                       */
/*   On success, set Zmodem to 1 and return type of header.                 */
/*   Otherwise return negative on error                                     */
/*--------------------------------------------------------------------------*/
int pascal Z_GetHeader(hdr)
   byte *hdr;
   begin

      register int   c;
      register int   n;
      int            cancount;


      n        = cur_baud;   /* Max characters before start of frame */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久er热在这里只有精品66| 欧美日韩一级片网站| 在线观看91视频| 国产无一区二区| 奇米一区二区三区| 91热门视频在线观看| 日韩三级视频中文字幕| 樱花草国产18久久久久| 福利一区二区在线| 欧美成人一区二区三区片免费 | 亚洲国产成人tv| 国产精品99久久久| 91麻豆精品国产91久久久资源速度| 国产日韩欧美麻豆| 精品综合久久久久久8888| 欧美制服丝袜第一页| 成人免费在线播放视频| 国产iv一区二区三区| 精品国内片67194| 天天av天天翘天天综合网 | 欧美日本一区二区三区| 国产精品毛片久久久久久久| 激情综合五月婷婷| 欧美一区二区三区视频| 香蕉影视欧美成人| 欧美日韩aaaaaa| 五月激情综合婷婷| 欧美人妇做爰xxxⅹ性高电影| 一区二区视频在线看| 99精品久久99久久久久| 国产精品水嫩水嫩| 国产99久久久国产精品| 久久久久久久久久美女| 国产宾馆实践打屁股91| 久久精品在这里| 国产91综合网| 国产精品卡一卡二| 成人免费毛片片v| 中文字幕一区av| 一本高清dvd不卡在线观看| 亚洲欧美色图小说| 欧洲激情一区二区| 日韩精品亚洲一区| 久久综合给合久久狠狠狠97色69| 激情五月婷婷综合网| 2014亚洲片线观看视频免费| 国产一区二区三区在线观看免费 | 国产亚洲综合性久久久影院| 国产精品一区二区在线观看网站| 中文字幕高清一区| 色欧美乱欧美15图片| 亚洲成在人线免费| 日韩免费看网站| 国产98色在线|日韩| 一区二区三区精品| 欧美一区二区黄| 国产成人综合网站| 亚洲人成伊人成综合网小说| 欧美日韩国产大片| 国产成人亚洲精品狼色在线| 亚洲最大成人综合| 欧美精品一区二区不卡| 成人av一区二区三区| 亚洲国产欧美在线| 精品久久国产字幕高潮| 97久久超碰精品国产| 免费精品视频最新在线| 国产精品国产三级国产aⅴ入口 | 成人免费观看视频| 亚洲动漫第一页| 久久在线观看免费| 91国内精品野花午夜精品| 青青草成人在线观看| 国产精品久久久久一区二区三区 | 一本色道亚洲精品aⅴ| 五月天亚洲精品| 国产精品卡一卡二卡三| 4438x亚洲最大成人网| 成人午夜视频福利| 蜜臀久久久99精品久久久久久| 中文字幕中文在线不卡住| 欧美一区二区三区啪啪| hitomi一区二区三区精品| 久久99精品久久久久久国产越南| 亚洲精品成人在线| 久久久久久99精品| 91精品国产美女浴室洗澡无遮挡| 成人ar影院免费观看视频| 久久99精品国产麻豆不卡| 亚洲综合区在线| 中文字幕av一区二区三区高| 3d动漫精品啪啪一区二区竹菊| 日本精品一区二区三区四区的功能| 国产精品一区二区久久精品爱涩| 日韩精品色哟哟| 亚洲成人av免费| 综合久久国产九一剧情麻豆| 久久久精品日韩欧美| 精品美女在线观看| 制服视频三区第一页精品| 在线观看免费亚洲| 91免费观看视频| 波多野结衣在线aⅴ中文字幕不卡| 九色porny丨国产精品| 日韩主播视频在线| 亚洲成人av免费| 天涯成人国产亚洲精品一区av| 亚洲黄色av一区| 亚洲综合一区在线| 一区二区三区免费在线观看| 亚洲精品乱码久久久久久久久| 亚洲欧洲日韩综合一区二区| 国产精品家庭影院| 国产精品久久久久aaaa樱花 | 日韩精品一区二区三区蜜臀| 337p亚洲精品色噜噜| 欧美女孩性生活视频| 欧美老年两性高潮| 色婷婷av一区二区三区大白胸| 色哟哟一区二区| 在线免费观看日本欧美| 欧美综合在线视频| 欧美日韩一区二区三区在线看| 欧美性色aⅴ视频一区日韩精品| 在线视频欧美区| 欧美日韩国产片| 日韩免费电影网站| 国产欧美一区二区精品婷婷| 中文字幕不卡一区| 一区二区高清视频在线观看| 天堂影院一区二区| 久久超碰97中文字幕| 成人一级片网址| 欧美最猛黑人xxxxx猛交| 337p亚洲精品色噜噜噜| 久久欧美一区二区| 成人欧美一区二区三区小说 | 日韩视频永久免费| 国产人久久人人人人爽| 一区二区三区四区激情| 日韩av一级电影| 成人动漫在线一区| 欧美日韩综合色| 精品剧情在线观看| 日韩伦理电影网| 免费在线看成人av| 成人激情小说网站| 欧美日韩中文精品| 久久色在线观看| 亚洲国产日韩在线一区模特| 国产呦萝稀缺另类资源| 91丨九色丨尤物| 欧美第一区第二区| 亚洲日本在线看| 精品亚洲成a人| 色综合激情久久| 久久久国产精华| 亚洲电影在线免费观看| 大胆欧美人体老妇| 4438成人网| 亚洲欧洲av一区二区三区久久| 日韩精品免费专区| 97久久人人超碰| 精品国产精品网麻豆系列 | 中文字幕巨乱亚洲| 日本美女一区二区三区视频| 播五月开心婷婷综合| 精品久久免费看| 日韩国产精品久久| 91免费小视频| 国产精品久久夜| 国产乱子轮精品视频| 欧美探花视频资源| 亚洲丝袜精品丝袜在线| 精品一区二区三区免费| 欧美日本在线视频| 亚洲老妇xxxxxx| 99久久国产综合精品色伊| 久久久99精品免费观看| 美女精品自拍一二三四| 欧美图片一区二区三区| 亚洲精品一二三区| 成人av片在线观看| 国产日韩欧美精品在线| 久久激情综合网| 欧美一区二区视频观看视频 | 欧美精品粉嫩高潮一区二区| 亚洲人123区| 99视频有精品| 中文久久乱码一区二区| 国产麻豆精品视频| 精品少妇一区二区三区免费观看| 日韩精品电影在线| 3d成人动漫网站| 麻豆精品视频在线观看| 91精品国模一区二区三区| 日韩va欧美va亚洲va久久| 91精品国产乱码久久蜜臀| 日韩国产在线一| 精品久久久久久久久久久久久久久|