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

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

?? vt.c

?? unix v7是最后一個廣泛發布的研究型UNIX版本
?? C
字號:
/* * Virtual tape driver - copyright 1998 Warren Toomey	wkt@cs.adfa.oz.au * * $Revision: 1.9 $ * $Date: 1998/02/01 00:49:15 $ */#include <sys/param.h>#include <sys/inode.h>#include "saio.h"/* Command sent to tape server */struct vtcmd {    char hdr1;			/* Header, 31 followed by 42 (decimal) */    char hdr2;    char cmd;			/* Command, one of VTC_XXX below */				/* Error comes back in top 4 bits */    char record;		/* Record we're accessing */    char blklo;			/* Block number, in lo/hi format */    char blkhi;    char sum0;			/* 16-bit checksum */    char sum1;};/* Header bytes */#define VT_HDR1		31#define VT_HDR2		42/* Commands available */#define VTC_QUICK	0	/* Quick read, no cksum sent */#define VTC_OPEN	1#define VTC_CLOSE	2#define VTC_READ	3	/* This file only uses READ and OPEN */#define VTC_WRITE	4/* Errors returned */#define VTE_NOREC	1	/* No such record available */#define VTE_OPEN	2	/* Can't open requested block */#define VTE_CLOSE	3	/* Can't close requested block */#define VTE_READ	4	/* Can't read requested block */#define VTE_WRITE	5	/* Can't write requested block */#define VTE_NOCMD       6       /* No such command */#define VTE_EOF         7       /* End of file: no blocks left to read */#define BLKSIZE         512/* Static things */struct vtcmd vtcmd;		/* Command buffer */struct vtcmd vtreply;		/* Reply from server */char *vtbuf;			/* Pointer to input buffer */unsigned int hitim, lotim;	/* Variables for delay loop */char oddeven=0;			/* Toggle status printing character */char *oddstr= ".*";char vtsendcmd();		/* Forward references */char vtgetc();/*** Standalone-dependent section *//* vtopen() is used to inform the server which record we'll be using */vtopen(io)register struct iob *io;{    register i;    vtcmd.record= io->i_boff; vtcmd.cmd= VTC_OPEN;    vtcmd.blklo=0; vtcmd.blkhi=0;    vtsendcmd();		/* Send the command to the server */}/* vtstrategy() must be called as a READ. We send a command * to the server, get a reply, and return the amount read * (even on EOF, which may be zero) or -1 on error. */vtstrategy(io, func)register struct iob *io;{    register error, i;    vtbuf= io->i_ma;    /* Assume record, blklo and blkhi are ok */    /* Assume i->i_cc is in multiples of BLKSIZE */    for (i=0; i<io->i_cc; i+=BLKSIZE, vtbuf+=BLKSIZE) {	vtcmd.cmd= VTC_READ;        error= vtsendcmd();		/* Send the command to the server */					/* Some programs rely on */					/* the buffer being cleared to */					/* indicate EOF, e.g cat */	if (error == VTE_EOF) { vtbuf[0]=0; return(i); }	if (error != 0) {	  printf("tape error %d", error);	  return(-1); 	}        			/* Increment block number for next time */	vtcmd.blklo++;	if (vtcmd.blklo==0) vtcmd.blkhi++;    }	return(io->i_cc);}/*** Protocol-specific stuff ***/char vtsendcmd(){    register i;    char error, cmd, sum0, sum1;			/* Build the checksum */    vtcmd.hdr1= VT_HDR1; vtcmd.hdr2= VT_HDR2;    vtcmd.sum0= VT_HDR1 ^ vtcmd.cmd ^ vtcmd.blklo;    vtcmd.sum1= VT_HDR2 ^ vtcmd.record ^ vtcmd.blkhi;			/* Send the command to the server */  sendcmd:    vtputc(vtcmd.hdr1);  vtputc(vtcmd.hdr2);    vtputc(vtcmd.cmd);   vtputc(vtcmd.record);    vtputc(vtcmd.blklo); vtputc(vtcmd.blkhi);    vtputc(vtcmd.sum0);  vtputc(vtcmd.sum1);  			/* Now get a valid reply from the server */  getreply:    vtreply.hdr1= vtgetc(); if (hitim==0) goto sendcmd;    if (vtreply.hdr1!=VT_HDR1) goto getreply;    vtreply.hdr2= vtgetc(); if (hitim==0) goto sendcmd;    if (vtreply.hdr2!=VT_HDR2) goto getreply;    vtreply.cmd= vtgetc(); if (hitim==0) goto sendcmd;    vtreply.record= vtgetc(); if (hitim==0) goto sendcmd;    vtreply.blklo= vtgetc(); if (hitim==0) goto sendcmd;    vtreply.blkhi= vtgetc(); if (hitim==0) goto sendcmd;			/* Calc. the cksum to date */    sum0= VT_HDR1 ^ vtreply.cmd ^ vtreply.blklo;    sum1= VT_HDR2 ^ vtreply.record ^ vtreply.blkhi;			/* Retrieve the block if no errs and a READ cmd */    if (vtreply.cmd==VTC_READ) {      for (i=0; i<BLKSIZE; i++) {	vtbuf[i]= vtgetc(); if (hitim==0) goto sendcmd;	sum0 ^= vtbuf[i]; i++;	vtbuf[i]= vtgetc(); if (hitim==0) goto sendcmd;	sum1 ^= vtbuf[i];      }    }			/* Get the checksum */    vtreply.sum0= vtgetc(); if (hitim==0) goto sendcmd;    vtreply.sum1= vtgetc(); if (hitim==0) goto sendcmd;			/* Try again on a bad checksum */    if ((sum0!=vtreply.sum0) || (sum1!=vtreply.sum1)) {	putchar('e'); goto sendcmd;    }    putchar(oddstr[oddeven]); oddeven= 1-oddeven;			/* Extract any error */    error= vtreply.cmd >> 4; return(error);}/*** Harware-specific stuff ***/struct  device  {        int     rcsr,rbuf;        int     tcsr,tbuf;};static struct  device *KL1= {0176500};		/* We use KL11 unit 1 *//* vtgetc() and vtputc(): A sort-of repeat of the getchar/putchar * code in prf.c, but without any console stuff *//* Get a character, or timeout and return with hitim zero */char vtgetc(){           register c;            KL1->rcsr = 1; hitim=3; lotim=65535;          while ((KL1->rcsr&0200)==0) {	   lotim--;	   if (lotim==0) hitim--;	   if (hitim==0) { putchar('t'); return(0); }	}        c = KL1->rbuf; return(c);}vtputc(c)register c;{        register s;        while((KL1->tcsr&0200) == 0) ;        s = KL1->tcsr;        KL1->tcsr = 0; KL1->tbuf = c; KL1->tcsr = s;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲高清一区| 国产成人综合网站| 亚洲免费大片在线观看| 国产精品福利在线播放| 欧美国产精品劲爆| 国产精品九色蝌蚪自拍| 日韩久久一区二区| 一区二区三区在线免费播放 | 欧美精品乱码久久久久久按摩| 色综合天天综合在线视频| 一本一本大道香蕉久在线精品 | 久久www免费人成看片高清| 毛片不卡一区二区| 国产乱码精品一区二区三区av| 国产69精品一区二区亚洲孕妇| 亚洲精品亚洲人成人网 | 国产麻豆成人精品| 精品午夜一区二区三区在线观看| 久久激情五月激情| 国产成人亚洲综合a∨婷婷图片| 国产成人精品午夜视频免费| 91麻豆国产自产在线观看| 欧美亚男人的天堂| 欧美xxxx在线观看| 国产嫩草影院久久久久| 亚洲嫩草精品久久| 免费在线成人网| 懂色av一区二区夜夜嗨| 色网站国产精品| 日韩欧美亚洲国产精品字幕久久久 | 久久天堂av综合合色蜜桃网| 国产精品免费视频网站| 亚洲国产精品视频| 国产精品1区二区.| 欧美伦理视频网站| 日韩一区在线播放| 日产精品久久久久久久性色| 国产精品资源站在线| 91同城在线观看| 精品区一区二区| 一区二区三区在线观看欧美| 麻豆国产精品一区二区三区| 色噜噜狠狠色综合欧洲selulu| 亚洲精品一区二区三区影院| 亚洲第一福利一区| 日本电影欧美片| 成人午夜视频网站| 欧美一卡2卡3卡4卡| 亚洲人成人一区二区在线观看| 日韩精品成人一区二区在线| 成人a免费在线看| 精品国产乱码久久久久久免费| 亚洲小说欧美激情另类| 91网址在线看| 日本一区二区免费在线| 伦理电影国产精品| 51精品秘密在线观看| 一区二区理论电影在线观看| 福利91精品一区二区三区| 欧美一区二区黄色| 午夜精品在线视频一区| 色欧美片视频在线观看在线视频| 国产网站一区二区| 麻豆专区一区二区三区四区五区| 欧美性猛交xxxxxxxx| 亚洲精品成人悠悠色影视| 粉嫩在线一区二区三区视频| 久久久久久久免费视频了| 裸体健美xxxx欧美裸体表演| 91精品国产综合久久蜜臀| 午夜精品123| 欧美日韩精品一区二区在线播放| 一区二区不卡在线视频 午夜欧美不卡在 | 精品国产免费一区二区三区香蕉 | 日韩精品一区二区三区蜜臀| 日日夜夜精品视频免费| 欧美日韩精品电影| 亚洲大尺度视频在线观看| 91久久精品网| 亚洲地区一二三色| 欧美一级生活片| 国内久久婷婷综合| ww亚洲ww在线观看国产| 精品一区二区在线看| 日韩一二三四区| 国产一区二区剧情av在线| 2021国产精品久久精品 | 日韩理论片在线| 91老师片黄在线观看| 亚洲免费观看高清完整版在线 | 麻豆成人在线观看| 精品国精品国产| 99久久婷婷国产综合精品电影| 17c精品麻豆一区二区免费| 在线观看www91| 久久精品99国产国产精| 中文字幕一区二区三区视频| 色欧美片视频在线观看| 日韩av电影免费观看高清完整版| 欧美www视频| 成人a区在线观看| 午夜亚洲福利老司机| 精品福利视频一区二区三区| av一区二区不卡| 免费一级片91| 亚洲四区在线观看| 精品黑人一区二区三区久久| 99精品久久久久久| 看电视剧不卡顿的网站| 国产精品久久久久久久久久久免费看 | 日韩区在线观看| 成人福利视频网站| 五月综合激情日本mⅴ| 国产欧美视频在线观看| 欧美日韩国产首页| 不卡的电影网站| 另类综合日韩欧美亚洲| 专区另类欧美日韩| 日韩欧美一区二区不卡| 色噜噜狠狠色综合欧洲selulu| 精品写真视频在线观看| 亚洲成人动漫精品| 国产精品久久久久毛片软件| 欧美成人伊人久久综合网| 色国产综合视频| 粉嫩一区二区三区性色av| 日本在线观看不卡视频| 亚洲精品欧美综合四区| 国产亚洲欧洲一区高清在线观看| 欧美一a一片一级一片| 成人爱爱电影网址| 国产麻豆精品在线观看| 奇米影视在线99精品| 亚洲一区二区三区在线| 国产精品视频观看| 国产日韩欧美精品一区| 日韩精品中文字幕在线不卡尤物 | 国产精品小仙女| 久久精品噜噜噜成人88aⅴ| 亚洲国产精品久久一线不卡| 成人欧美一区二区三区视频网页| 久久精品男人天堂av| 日韩欧美精品在线视频| 56国语精品自产拍在线观看| 在线视频亚洲一区| 欧美性猛交xxxxxxxx| 欧美最猛黑人xxxxx猛交| 色婷婷综合久久| 欧美中文字幕久久| 欧美日韩日日夜夜| 欧美日韩亚洲综合在线 | 日本韩国欧美一区| 99精品一区二区三区| 成人午夜免费视频| a4yy欧美一区二区三区| 本田岬高潮一区二区三区| 国产不卡视频在线播放| 成人免费视频app| 波多野结衣在线一区| 91蜜桃免费观看视频| 色婷婷激情综合| 51精品秘密在线观看| 日韩女优毛片在线| 国产亚洲欧美日韩日本| 国产精品网曝门| 一区二区三区在线看| 亚洲mv大片欧洲mv大片精品| 免费观看在线综合色| 高清在线成人网| 色婷婷国产精品| 日韩一区二区不卡| www亚洲一区| 日韩毛片在线免费观看| 午夜影院久久久| 国产精品一区专区| 一本一道波多野结衣一区二区| 欧美天堂亚洲电影院在线播放| 日韩一区二区三区精品视频| 国产欧美日韩一区二区三区在线观看 | 韩国中文字幕2020精品| 成人久久18免费网站麻豆| 欧美在线不卡视频| 精品999在线播放| 亚洲精品久久7777| 蜜桃精品视频在线| 色哟哟亚洲精品| 久久免费精品国产久精品久久久久| 中文字幕日韩av资源站| 蜜桃久久久久久久| 91浏览器在线视频| 久久久综合九色合综国产精品| 依依成人精品视频| 国产成人夜色高潮福利影视| 欧美日韩一区二区三区高清 | 欧美群妇大交群中文字幕| 久久久另类综合| 日韩av网站免费在线| 一本久久a久久精品亚洲| 精品国产亚洲一区二区三区在线观看| 亚洲欧洲成人av每日更新|