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

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

?? zmisc.c

?? communication source code 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一区二区三区免费野_久草精品视频
国产精品18久久久久久久网站| 在线观看日韩电影| 91日韩在线专区| 欧美成人官网二区| 一区二区三区四区在线| 久久精品国产精品亚洲精品| 91精品视频网| 亚洲视频资源在线| 国产一区二区三区在线观看精品 | 色噜噜狠狠成人中文综合| 日韩视频免费直播| 亚洲永久免费av| 99在线精品免费| 日韩精品一区二| 三级亚洲高清视频| 91成人在线免费观看| 中文字幕在线观看一区二区| 国产综合色产在线精品| 91精选在线观看| 亚洲福利视频一区二区| www.亚洲在线| 亚洲国产成人在线| 国产呦精品一区二区三区网站| 欧美精品久久久久久久多人混战 | 亚洲另类中文字| 成人理论电影网| 国产精品情趣视频| 国产在线一区二区综合免费视频| 日韩欧美一级二级三级久久久| 舔着乳尖日韩一区| 欧美裸体一区二区三区| 天天综合色天天综合色h| 欧美日韩免费观看一区二区三区| 亚洲一区精品在线| 欧美日韩三级视频| 亚洲制服丝袜av| 色综合夜色一区| 国产精品私人影院| 国产麻豆精品theporn| 91精品国产高清一区二区三区| 亚洲欧洲在线观看av| 精品亚洲免费视频| 337p亚洲精品色噜噜噜| 亚洲国产精品一区二区www在线| av不卡一区二区三区| 日本一区二区电影| 国产精品一区二区在线看| 日韩精品一区二区三区在线观看 | 日韩一区二区电影在线| 天堂va蜜桃一区二区三区漫画版| 色女孩综合影院| 一区二区三区精品视频在线| 99久久99久久精品免费看蜜桃| 国产午夜精品久久久久久免费视| 免费高清视频精品| 久久综合久久综合九色| 国产精品一区二区不卡| 久久久精品2019中文字幕之3| 久久精品国产一区二区三 | 蜜臀a∨国产成人精品| 欧美顶级少妇做爰| 精品中文字幕一区二区| 久久久综合网站| 成人黄色片在线观看| 中文字幕永久在线不卡| 91丨九色丨尤物| 亚洲一区在线播放| 欧美一级黄色片| 紧缚奴在线一区二区三区| 日韩一区二区三| 日韩二区在线观看| 精品欧美乱码久久久久久 | 国产精品911| 国产精品亲子伦对白| 91黄色小视频| 图片区小说区区亚洲影院| 精品少妇一区二区三区免费观看 | 欧美大片在线观看| 国产福利一区二区三区视频| 欧美激情一区三区| 91久久久免费一区二区| 久久av资源站| 亚洲欧洲日韩在线| 91精品国产品国语在线不卡| 国产二区国产一区在线观看| 亚洲精品一二三| 日韩视频一区二区三区在线播放 | 精品国产乱码久久久久久免费| 国产成人精品综合在线观看 | 亚洲乱码中文字幕综合| 日本道免费精品一区二区三区| 麻豆一区二区三| 亚洲精品亚洲人成人网在线播放| 精品国产伦一区二区三区免费| 成人高清视频在线| 日本午夜一本久久久综合| 中文幕一区二区三区久久蜜桃| 欧美精品国产精品| 99久久夜色精品国产网站| 蜜桃视频在线一区| 一区二区视频在线看| 亚洲精品在线三区| 日本高清不卡aⅴ免费网站| 国产精一品亚洲二区在线视频| 亚洲精品国产一区二区精华液| 欧美本精品男人aⅴ天堂| 一本久久a久久精品亚洲| 精品一区二区三区免费播放| 一区二区在线电影| 日本一区二区免费在线| 日韩一区二区精品葵司在线| 欧美无砖砖区免费| zzijzzij亚洲日本少妇熟睡| 国产一区二区网址| 日本va欧美va精品| 夜夜嗨av一区二区三区网页 | 欧美aaa在线| 一区二区三区在线免费视频 | 精品成人a区在线观看| 欧美美女直播网站| 色国产综合视频| av激情亚洲男人天堂| 99久久婷婷国产综合精品电影| 国产九九视频一区二区三区| 久久国产日韩欧美精品| 日韩av在线发布| 首页亚洲欧美制服丝腿| 亚洲国产精品ⅴa在线观看| 久久精品日产第一区二区三区高清版| 日韩免费一区二区三区在线播放| 这里只有精品免费| 欧美区一区二区三区| 欧美美女直播网站| 91精品国产aⅴ一区二区| 91精品综合久久久久久| 欧美日韩视频在线一区二区| 在线这里只有精品| 日本韩国视频一区二区| 在线观看视频一区| 欧美午夜宅男影院| 欧美日韩久久不卡| 欧美日韩国产一二三| 欧美日韩精品一区二区天天拍小说| 欧美在线一区二区| 在线成人av网站| 日韩精品影音先锋| 国产精品三级久久久久三级| 中文字幕在线不卡国产视频| 一区二区三区高清在线| 午夜精品一区二区三区三上悠亚| 亚洲3atv精品一区二区三区| 亚洲第一综合色| 日本不卡高清视频| 国产麻豆成人精品| 91一区二区三区在线观看| 在线观看日韩毛片| 日韩午夜激情av| 国产亚洲成av人在线观看导航 | 97久久精品人人澡人人爽| 99久久99久久精品免费看蜜桃| 欧美电影一区二区三区| www久久久久| 亚洲视频一二三区| 五月天婷婷综合| 国产毛片一区二区| 国产精品一级在线| 色美美综合视频| 欧美va在线播放| 国产精品狼人久久影院观看方式| 一区二区三区四区在线免费观看 | 青青草一区二区三区| 福利一区二区在线| 精品视频资源站| 国产午夜久久久久| 日韩经典一区二区| 成人免费av在线| 69久久夜色精品国产69蝌蚪网| 久久精品人人爽人人爽| 亚洲国产精品久久久久婷婷884 | 欧美性色综合网| 国产午夜精品在线观看| 亚洲妇熟xx妇色黄| 成人美女视频在线观看18| 欧美一区二区视频免费观看| 亚洲欧洲另类国产综合| 伦理电影国产精品| 在线观看成人小视频| 中文字幕一区二区三区视频| 日韩国产在线一| 国产另类ts人妖一区二区| 日韩美女视频在线| 亚洲国产精品一区二区www在线 | 日韩欧美的一区| 亚洲国产日韩精品| 在线视频一区二区免费| 国产精品欧美综合在线| 韩国精品免费视频| 666欧美在线视频| 伊人婷婷欧美激情| 99免费精品在线观看|