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

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

?? sbpcd.c

?? linux 1.0 源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
}/*==========================================================================*/static u_char byt2bcd(u_char i){  return (((i/10)<<4)+i%10);}/*==========================================================================*/static u_char bcd2bin(u_char bcd){  return ((bcd>>4)*10+(bcd&0x0F));}/*==========================================================================*/static int msf2blk(int msfx){  MSF msf;  int i;  msf.n=msfx;  i=(msf.c[2] * CD_SECS + msf.c[1]) * CD_FRAMES + msf.c[0] - CD_BLOCK_OFFSET;  if (i<0) return (0);  return (i);}/*==========================================================================*//* evaluate xx_ReadError code (still mysterious) */ static int sta2err(int sta){  if (sta<=2) return (sta);  if (sta==0x05) return (-4);  if (sta==0x06) return (-6);  if (sta==0x0d) return (-6);  if (sta==0x0e) return (-3);  if (sta==0x14) return (-3);  if (sta==0x0c) return (-11);  if (sta==0x0f) return (-11);  if (sta==0x10) return (-11);  if (sta>=0x16) return (-12);  DS[d].CD_changed=0xFF;  if (sta==0x11) return (-15);  return (-2);}/*==========================================================================*/static void clr_cmdbuf(void){  int i;  for (i=0;i<7;i++) drvcmd[i]=0;  cmd_type=0;}/*==========================================================================*/static void mark_timeout(void){  timed_out=1;  DPRINTF((DBG_TIM,"SBPCD: timer stopped.\n"));}/*==========================================================================*/static void flush_status(void){#ifdef CDMKE  int i;  if (current == task[0])    for (i=maxtim02;i!=0;i--) inb(CDi_status);  else     {      sbp_sleep(150);      for (i=maxtim_data;i!=0;i--) inb(CDi_status);    }#else  timed_out=0;  SET_TIMER(mark_timeout,150);  do { }  while (!timed_out);  CLEAR_TIMER;  inb(CDi_status);#endif CDMKE}/*==========================================================================*/static int CDi_stat_loop(void){  int i,j;  u_long timeout;    if (current == task[0])    for(i=maxtim16;i!=0;i--)      {	j=inb(CDi_status);        if (!(j&s_not_data_ready)) return (j);        if (!(j&s_not_result_ready)) return (j);        if (!new_drive) if (j&s_attention) return (j);      }  else    for(timeout = jiffies + 1000, i=maxtim_data; timeout > jiffies; )      {	for ( ;i!=0;i--)	  {	    j=inb(CDi_status);	    if (!(j&s_not_data_ready)) return (j);	    if (!(j&s_not_result_ready)) return (j);	    if (!new_drive) if (j&s_attention) return (j);	  }	sbp_sleep(1);	i = 1;      }  return (-1);}/*==========================================================================*/static int ResponseInfo(void){  int i,j, st=0;  u_long timeout;  if (current == task[0])    for (i=0;i<response_count;i++)      {	for (j=maxtim_8;j!=0;j--)	  {	    st=inb(CDi_status);	    if (!(st&s_not_result_ready)) break;	  }	if (j==0) return (-1);	infobuf[i]=inb(CDi_info);      }  else     {      for (i=0, timeout = jiffies + 100; i < response_count; i++) 	{	  for (j=maxtim_data; ; )	    {	      for ( ;j!=0;j-- )		{		  st=inb(CDi_status);		  if (!(st&s_not_result_ready)) break;		}	      if (j != 0 || timeout <= jiffies) break;	      sbp_sleep(0);	      j = 1;	    }	  if (timeout <= jiffies) return (-1);	  infobuf[i]=inb(CDi_info);	}    }  return (0);}/*==========================================================================*/static int EvaluateStatus(int st){  if (!new_drive)    {      DS[d].status_byte=0;      if (st&p_caddin_old) DS[d].status_byte |= p_door_closed|p_caddy_in;      if (st&p_spinning) DS[d].status_byte |= p_spinning;      if (st&p_check) DS[d].status_byte |= p_check;      if (st&p_busy_old) DS[d].status_byte |= p_busy_new;      if (st&p_disk_ok) DS[d].status_byte |= p_disk_ok;    }  else { DS[d].status_byte=st;	 st=p_success_old; /* for new drives: fake "successful" bit of old drives */       }  return (st);}/*==========================================================================*/static int ResponseStatus(void){  int i,j;  u_long timeout;  DPRINTF((DBG_STA,"SBPCD: doing ResponseStatus...\n"));  if (current == task[0])    {      if (flags_cmd_out & f_respo3) j = maxtim_8;      else if (flags_cmd_out&f_respo2) j=maxtim16;      else j=maxtim04;      for (;j!=0;j--)	{	  i=inb(CDi_status);	  if (!(i&s_not_result_ready)) break;	}    }  else    {      if (flags_cmd_out & f_respo3) timeout = jiffies;      else if (flags_cmd_out & f_respo2) timeout = jiffies + 1600;      else timeout = jiffies + 400;      j=maxtim_8;      do	{	  for ( ;j!=0;j--)	    { 	      i=inb(CDi_status);	      if (!(i&s_not_result_ready)) break;	    }	  if (j != 0 || timeout <= jiffies) break;	  sbp_sleep(0);	  j = 1;	}      while (1);    }  if (j==0)     { if ((flags_cmd_out & f_respo3) == 0)	DPRINTF((DBG_STA,"SBPCD: ResponseStatus: timeout.\n"));      EvaluateStatus(0);      return (-1);    }  i=inb(CDi_info);  i=EvaluateStatus(i);  return (i);}/*==========================================================================*/static void xx_ReadStatus(void){  int i;  DPRINTF((DBG_STA,"SBPCD: giving xx_ReadStatus command\n"));  if (!new_drive) OUT(CDo_command,0x81);  else    {#if SBPCD_DIS_IRQ      cli();#endif SBPCD_DIS_IRQ      OUT(CDo_command,0x05);      for (i=0;i<6;i++) OUT(CDo_command,0);#if SBPCD_DIS_IRQ      sti();#endif SBPCD_DIS_IRQ    }}/*==========================================================================*/int xx_ReadError(void){  int cmd_out(void);  int i;  clr_cmdbuf();  DPRINTF((DBG_ERR,"SBPCD: giving xx_ReadError command.\n"));  if (new_drive)    {      drvcmd[0]=0x82;      response_count=8;      flags_cmd_out=f_putcmd|f_ResponseStatus;    }  else    {      drvcmd[0]=0x82;      response_count=6;      flags_cmd_out=f_putcmd|f_getsta|f_ResponseStatus;    }  i=cmd_out();  DS[d].error_byte=0;  DPRINTF((DBG_ERR,"SBPCD: xx_ReadError: cmd_out(82) returns %d (%02X)\n",i,i));  if (i<0) return (i);  if (new_drive) i=2;  else i=1;  DS[d].error_byte=infobuf[i];  DPRINTF((DBG_ERR,"SBPCD: xx_ReadError: infobuf[%d] is %d (%02X)\n",i,DS[d].error_byte,DS[d].error_byte));  i=sta2err(infobuf[i]);  return (i);}/*==========================================================================*/int cmd_out(void){  int i=0;  if (flags_cmd_out&f_putcmd)    {       DPRINTF((DBG_CMD,"SBPCD: cmd_out: put"));      for (i=0;i<7;i++) DPRINTF((DBG_CMD," %02X",drvcmd[i]));      DPRINTF((DBG_CMD,"\n"));#if SBPCD_DIS_IRQ      cli();#endif SBPCD_DIS_IRQ      for (i=0;i<7;i++) OUT(CDo_command,drvcmd[i]);#if SBPCD_DIS_IRQ      sti();#endif SBPCD_DIS_IRQ    }  if (response_count!=0)    {      if (cmd_type!=0)	{	  if (sbpro_type) OUT(CDo_sel_d_i,0x01);	  DPRINTF((DBG_INF,"SBPCD: misleaded to try ResponseData.\n"));	  if (sbpro_type) OUT(CDo_sel_d_i,0x00);	}      else i=ResponseInfo();      if (i<0) return (-9);    }  if (DS[d].in_SpinUp != 0) DPRINTF((DBG_SPI,"SBPCD: to CDi_stat_loop.\n"));  if (flags_cmd_out&f_lopsta)    {      i=CDi_stat_loop();      if ((i<0)||!(i&s_attention)) return (-9);    }  if (!(flags_cmd_out&f_getsta)) goto LOC_229;  LOC_228:  if (DS[d].in_SpinUp != 0) DPRINTF((DBG_SPI,"SBPCD: to xx_ReadStatus.\n"));  xx_ReadStatus();LOC_229:  if (flags_cmd_out&f_ResponseStatus)     {      if (DS[d].in_SpinUp != 0) DPRINTF((DBG_SPI,"SBPCD: to ResponseStatus.\n"));      i=ResponseStatus();                   /* builds status_byte, returns orig. status or p_busy_new */      if (i<0) return (-9);      if (flags_cmd_out&(f_bit1|f_wait_if_busy))	{	  if (!st_check)	    {	      if (flags_cmd_out&f_bit1) if (i&p_success_old) goto LOC_232;	      if (!(flags_cmd_out&f_wait_if_busy)) goto LOC_228;	      if (!st_busy) goto LOC_228;	    }	}    }LOC_232:  if (!(flags_cmd_out&f_obey_p_check)) return (0);  if (!st_check) return (0);  if (DS[d].in_SpinUp != 0) DPRINTF((DBG_SPI,"SBPCD: to xx_ReadError.\n"));  i=xx_ReadError();  if (DS[d].in_SpinUp != 0) DPRINTF((DBG_SPI,"SBPCD: to cmd_out OK.\n"));  return (i);}/*==========================================================================*/static int xx_Seek(u_int pos, char f_blk_msf){  int i;  clr_cmdbuf();  if (f_blk_msf>1) return (-3);  if (!new_drive)    {      if (f_blk_msf==1) pos=msf2blk(pos);      drvcmd[2]=(pos>>16)&0x00FF;      drvcmd[3]=(pos>>8)&0x00FF;      drvcmd[4]=pos&0x00FF;      flags_cmd_out = f_putcmd | f_respo2 | f_lopsta | f_getsta |	               f_ResponseStatus | f_obey_p_check | f_bit1;    }  else    {      if (f_blk_msf==0) pos=blk2msf(pos);      drvcmd[1]=(pos>>16)&0x00FF;      drvcmd[2]=(pos>>8)&0x00FF;      drvcmd[3]=pos&0x00FF;      flags_cmd_out=f_putcmd|f_respo2|f_ResponseStatus|f_obey_p_check;    }  drvcmd[0]=0x01;  response_count=0;  i=cmd_out();  return (i);}/*==========================================================================*/static int xx_SpinUp(void){  int i;  DPRINTF((DBG_SPI,"SBPCD: SpinUp.\n"));  DS[d].in_SpinUp = 1;  clr_cmdbuf();  if (!new_drive)    {      drvcmd[0]=0x05;      flags_cmd_out=f_putcmd|f_respo2|f_lopsta|f_getsta|f_ResponseStatus|f_obey_p_check|f_bit1;    }  else    {      drvcmd[0]=0x02;      flags_cmd_out=f_putcmd|f_respo2|f_ResponseStatus|f_obey_p_check;    }  response_count=0;  i=cmd_out();  DS[d].in_SpinUp = 0;  return (i);}/*==========================================================================*/static int yy_SpinDown(void){  int i;  if (!new_drive) return (-3);  clr_cmdbuf();  drvcmd[0]=0x06;  flags_cmd_out=f_putcmd|f_respo2|f_ResponseStatus|f_obey_p_check;  response_count=0;  i=cmd_out();  return (i);}/*==========================================================================*/static int yy_SetSpeed(u_char speed, u_char x1, u_char x2){  int i;  if (!new_drive) return (-3);  clr_cmdbuf();  drvcmd[0]=0x09;  drvcmd[1]=0x03;  drvcmd[2]=speed;  drvcmd[3]=x1;  drvcmd[4]=x2;  flags_cmd_out=f_putcmd|f_ResponseStatus|f_obey_p_check;  response_count=0;  i=cmd_out();  return (i);}/*==========================================================================*/static int xx_SetVolume(void){  int i;  u_char channel0,channel1,volume0,volume1;  u_char control0,value0,control1,value1;  DS[d].diskstate_flags &= ~volume_bit;  clr_cmdbuf();  channel0=DS[d].vol_chan0;  volume0=DS[d].vol_ctrl0;  channel1=control1=DS[d].vol_chan1;  volume1=value1=DS[d].vol_ctrl1;  control0=value0=0;  if (((DS[d].drv_options&sax_a)!=0)&&(DS[d].drv_type>=drv_211))    {      if ((volume0!=0)&&(volume1==0))	{	  volume1=volume0;	  channel1=channel0;	}      else if ((volume0==0)&&(volume1!=0))	{	  volume0=volume1;	  channel0=channel1;	}    }  if (channel0>1)    {      channel0=0;      volume0=0;    }  if (channel1>1)    {      channel1=1;      volume1=0;    }    if (new_drive)    {      control0=channel0+1;      control1=channel1+1;      value0=(volume0>volume1)?volume0:volume1;      value1=value0;      if (volume0==0) control0=0;      if (volume1==0) control1=0;      drvcmd[0]=0x09;      drvcmd[1]=0x05;      drvcmd[3]=control0;      drvcmd[4]=value0;      drvcmd[5]=control1;      drvcmd[6]=value1;      flags_cmd_out=f_putcmd|f_ResponseStatus|f_obey_p_check;    }  else     {      if (DS[d].drv_type>=drv_300)	{	  control0=volume0&0xFC;	  value0=volume1&0xFC;	  if ((volume0!=0)&&(volume0<4)) control0 |= 0x04;	  if ((volume1!=0)&&(volume1<4)) value0 |= 0x04;	  if (channel0!=0) control0 |= 0x01;	  if (channel1==1) value0 |= 0x01;	}      else	{	  value0=(volume0>volume1)?volume0:volume1;	  if (DS[d].drv_type<drv_211)	    {	      if (channel0!=0)		{		  i=channel1;		  channel1=channel0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人亚洲精品青草天美| 精品在线一区二区三区| 国产欧美日韩在线看| 日韩午夜激情免费电影| 欧美三级日本三级少妇99| 在线亚洲高清视频| 一本到不卡免费一区二区| 不卡的av网站| 色综合久久综合| 在线区一区二视频| 欧美日韩一区久久| 欧美美女一区二区三区| 91精品国产一区二区人妖| 欧美狂野另类xxxxoooo| 欧美一级高清大全免费观看| 日韩精品一区二区三区在线播放| 欧美一级二级三级乱码| 久久天天做天天爱综合色| 久久噜噜亚洲综合| 国产精品不卡在线| 亚洲成人777| 麻豆freexxxx性91精品| 极品销魂美女一区二区三区| 国产高清在线观看免费不卡| av不卡免费电影| 欧美性xxxxxx少妇| 日韩欧美的一区| 亚洲国产精品精华液2区45| 成人欧美一区二区三区白人| 天天综合网 天天综合色| 麻豆免费精品视频| 91视频在线观看免费| 欧美精品视频www在线观看| 精品国产一区久久| 亚洲欧美日韩精品久久久久| 视频一区二区三区在线| 国产91色综合久久免费分享| 欧美怡红院视频| 国产视频亚洲色图| 亚洲一卡二卡三卡四卡无卡久久 | 日本最新不卡在线| 国产精品一区二区免费不卡| 91视频91自| 精品日韩一区二区三区免费视频| 国产精品久久久久久久久晋中| 亚洲国产婷婷综合在线精品| 久久精品国产99| 在线视频一区二区免费| 国产欧美精品在线观看| 午夜亚洲国产au精品一区二区| 国内外成人在线| 在线91免费看| 亚洲精品成人a在线观看| 国产高清亚洲一区| 日韩免费观看高清完整版| 亚洲激情中文1区| 国产酒店精品激情| 日韩欧美中文字幕精品| 亚洲成人一区二区| 91丝袜美腿高跟国产极品老师 | 91美女片黄在线观看| 26uuu色噜噜精品一区二区| 亚洲国产精品综合小说图片区| 国产成人av一区二区三区在线 | 午夜久久久影院| 99精品国产热久久91蜜凸| 日韩精品一区二区三区蜜臀| 亚洲国产精品一区二区久久恐怖片| 国产mv日韩mv欧美| 精品久久久久久久久久久久久久久| 亚洲国产精品一区二区www| 91丨porny丨户外露出| 国产精品免费av| 丁香另类激情小说| 国产日产欧美一区| 国产精品羞羞答答xxdd| 久久久五月婷婷| 青椒成人免费视频| 日韩女优av电影| 蜜桃视频第一区免费观看| 欧美日韩卡一卡二| 午夜国产精品一区| 欧美放荡的少妇| 免费在线观看视频一区| 精品国偷自产国产一区| 精品一区二区免费看| 精品久久久久久无| 国产成人亚洲综合a∨婷婷图片| 亚洲国产精品二十页| 99v久久综合狠狠综合久久| 亚洲视频 欧洲视频| 在线免费观看日本欧美| 视频一区中文字幕国产| 日韩一区二区在线观看| 久久精品国产精品青草| 欧美国产欧美亚州国产日韩mv天天看完整 | 欧美精品丝袜中出| 久久av资源网| 国产精品美女www爽爽爽| 97久久精品人人做人人爽| 一区二区三区在线播放| 欧美日本视频在线| 国产成人亚洲综合a∨婷婷图片| 综合电影一区二区三区| 欧美色图片你懂的| 久久99九九99精品| 国产精品成人免费精品自在线观看| 成人午夜激情片| 午夜国产精品影院在线观看| 久久久久国产精品人| 99re热这里只有精品免费视频| 一区二区三区欧美亚洲| 日韩午夜小视频| 99视频在线精品| 麻豆精品国产传媒mv男同| 国产精品免费网站在线观看| 欧美日韩在线观看一区二区| 狠狠色丁香婷婷综合| 亚洲美腿欧美偷拍| 亚洲精品一区二区三区蜜桃下载| 99久久夜色精品国产网站| 日韩av在线播放中文字幕| 国产精品日韩成人| 日韩三级中文字幕| 欧美在线制服丝袜| 国产很黄免费观看久久| 日本色综合中文字幕| 亚洲视频免费在线观看| 久久亚洲欧美国产精品乐播| 欧美日韩中文字幕一区| 成人综合日日夜夜| 捆绑紧缚一区二区三区视频| 亚洲精品v日韩精品| 国产日韩欧美综合在线| 欧美电影免费提供在线观看| 欧美三级中文字幕在线观看| 丁香六月综合激情| 国产一区二区调教| 日本sm残虐另类| 亚洲韩国一区二区三区| 国产精品女同互慰在线看| 精品福利一二区| 3d动漫精品啪啪1区2区免费 | 国产精品一区久久久久| 美女一区二区三区| 日韩精品一卡二卡三卡四卡无卡| 国产精品麻豆久久久| 国产日韩视频一区二区三区| 精品不卡在线视频| 久久蜜臀精品av| 国产午夜精品一区二区三区四区| 欧美精品一区视频| 国产亚洲一区二区三区在线观看| 欧美不卡在线视频| 欧美精品一区二区三区久久久| 久久综合网色—综合色88| 欧美一个色资源| 极品销魂美女一区二区三区| 夜夜精品视频一区二区 | 中文字幕乱码一区二区免费| 欧美浪妇xxxx高跟鞋交| 欧美日韩精品欧美日韩精品一| 亚洲三级视频在线观看| 日韩经典一区二区| 粉嫩高潮美女一区二区三区| 欧美精品高清视频| 中文字幕在线不卡国产视频| 青草av.久久免费一区| 一本一本大道香蕉久在线精品| 欧美精品一区二区三区很污很色的 | 婷婷国产在线综合| 天天色天天爱天天射综合| 国产精品一区二区在线观看网站| 99久久精品国产麻豆演员表| 在线观看日韩av先锋影音电影院| 欧美日韩情趣电影| 亚洲免费电影在线| 另类小说一区二区三区| 成人精品视频.| 精品国产免费一区二区三区四区 | 国产精品久久久久久久久果冻传媒| 亚洲图片欧美一区| 国产91精品露脸国语对白| 欧美视频中文一区二区三区在线观看| 欧美自拍偷拍午夜视频| 1区2区3区国产精品| 韩国一区二区三区| 欧美日韩国产综合久久| 一区二区三区在线视频免费| 国产精品18久久久久久久久久久久| 91久久香蕉国产日韩欧美9色| 久久影院视频免费| 日韩av一区二区在线影视| 91搞黄在线观看| 中文字幕一区二区三区蜜月| 日本人妖一区二区| 欧美videossexotv100| 亚洲地区一二三色| 91国偷自产一区二区三区成为亚洲经典 | 色综合天天综合色综合av |