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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? lkey.cpp

?? ldraw_DOS游戲開發(fā)包
?? CPP
字號(hào):
#include <lkey.h>
#include <dos.h>
#include <i86.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
////////////////////////////////////////////////////////////////////////////
static void __interrupt __far NewInt9();
static void __interrupt __far (*OldInt9)();
static char  install=0, lklist[128];
short lk_sb_port=0x220, lk_fm_port=-1, lk_fm_delay1=6, lk_fm_delay2=35;
short lk_dsp_ver=-1, lk_sb_irq=-1,  lk_sb_dma=-1;
short lk_sb_stereo=0,   lk_sb_16bit=0;
void lkInitKey();
void lkRestKey();
char lKeyOn(char key);
////////////////////////////////////////////////////////////////////////////
/////////////////////////////////
#define KEYBUF_LEN 10
extern "C" void cdecl LFGetSum(short *result,char *res,short len);
static uchar key_buf[KEYBUF_LEN][2],kpp=0,kpr=0,kpd,kpc,emu_int9=0;
static unsigned char key_map[128]={
0,27,49,50,51,52,53,54,55,56,57,48,45,61,8,9,113,119,101,114,116,121,117,
105,111,112,91,93,10,0,97,115,100,102,103,104,106,107,108,59,39,96,0,92,
122,120,99,118,98,110,109,44,46,47,0,42,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,45,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
static unsigned char key_map_shift[128]={
0,27,33,64,35,36,37,94,38,42,40,41,95,43,8,0,81,87,69,82,84,89,85,73,79,80,123,
125,10,0,65,83,68,70,71,72,74,75,76,58,34,126,0,124,90,88,67,86,66,78,77,60,62,
63,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
/////////////////////////////////
void lkInitKey()
{ short i;
  if (install==1) return;
  for (i=0;i<128;i++) lklist[i]=0;
  OldInt9=_dos_getvect(0x09);
  _disable();
  _dos_setvect(0x09,NewInt9);
  _enable();
  install=1;
}
void lkRestKey()
{ if (install==0) return;
  _disable();
  _dos_setvect(0x09,OldInt9);
  _enable();
  install=0; 
}
char lKeyOn(char key)
{ return lklist[key];
}
char lkbhit()
{ static short add=0;
  LFGetSum(&add,lklist,128);
  return add;
}
/////////////////////////////////
static void __interrupt __far NewInt9()
{ register unsigned char key=inp(0x60);
  if (key<0x80) lklist[key]=1;
    else lklist[key-0x80]=0;
  if (emu_int9) if (key<0x80&&key!=KEY_LSHIFT&&key!=KEY_RSHIFT) {
     kpd=kpp; if (++kpd>=KEYBUF_LEN) kpd=0;
     if (kpd!=kpr) {
        key_buf[kpp][0]=key; 
        kpc=key_map[key];
        if (lklist[KEY_RSHIFT]||lklist[KEY_LSHIFT]) 
           kpc=key_map_shift[key];
        if (emu_int9==2&&kpc>='a'&&kpc<='z') kpc=kpc-'a'+'A';
        key_buf[kpp][1]=kpc;
        kpp=kpd;
     }
  }
  key=inp(0x61); key|=0x80; 
  outp(0x61,key); outp(0x61,key&0x7f); 
  outp(0x20,0x20);
}
/////////////////////////////////
void  lk_emu_old9(char mode)
{ emu_int9=mode;
}
char lkpressed()
{ if (!install) return kbhit();
  if (kpp!=kpr) return 1;
  else return 0;
}
short lkgetch(short *code)
{ union REGS regs;
  uchar key=0;
  regs.w.ax=0;
  if (!install) {
   int386(0x16,&regs,&regs);
   if (code) *code=regs.h.ah;
   return regs.h.al;
  }
  while (!lkpressed());
  key=key_buf[kpr][0]; kpc=key_buf[kpr][1];
  kpd=kpr; if (++kpd>=KEYBUF_LEN) kpd=0;
  kpr=kpd; if (code) *code=key;
  return kpc;
}
void lkungetch(char i)
{
}
/**************************************************************************/
/*                          Sound    Blaster                              */
/**************************************************************************/
/********* Sound Blaster **********/
char  lsWritePortC(uchar value)
{ int i;
  for (i=0;i<0xffff ;i++ )
  { if (!(inp(0x0C+lk_sb_port) & 0x80)) {
       outp(lk_sb_port+0x0c,value);
	   return 0;
    }
  } return -1;
}
uchar lsReadPortC()
{ short b;
  for (b=50;b>0&&inp(lk_sb_port+0x0e)<128;b--);
  return inp(lk_sb_port+0x0a);
}
short lsResetDsp(short data)
{  int x;
   outp(0x06+lk_sb_port, data);
   for (x=0; x<8; x++) inp(0x06+lk_sb_port);
   outp(0x06+lk_sb_port, 0);
   if (lsReadPortC() != 0xAA) return -1;
   return 0;
}
short lsGetDspVersion()
{ short c;
  if (lk_dsp_ver>0) return lk_dsp_ver;
  lsWritePortC(0xe1); c=lsReadPortC();
  lk_dsp_ver=((unsigned)c<<8) + lsReadPortC();
  return lk_dsp_ver;
}
short lsAutoDetect()
{ short found=0, i=10, b;
  static detect=0;
  if (detect) return lk_sb_port;

  for (lk_sb_port=0x210;lk_sb_port<=0x260&&!found;)
   { outp(lk_sb_port+0x6,1);
     delay(3); for (b=3;b>=0;b--);
     outp(lk_sb_port+0x06,0);
     for (b=50;b>0&&inp(lk_sb_port+0x0e)<128;b--);
     if ((b==0)||inp(lk_sb_port+0x0a)!=0xaa)
      { i--;
	if (!i); {i=10; lk_sb_port+=0x10; }
      }
     else { found=1; detect=1; }
   }
  return ((found==1)?lk_sb_port:0);
}
void  lsMixerWrite(short reg,short data)
{ outp(lk_sb_port+4, reg);
  outp(lk_sb_port+5, data);
}
short lsMixerRead(short reg)
{ outp(lk_sb_port+4, reg);
  return inp(lk_sb_port+5);
}
short lsSetMixer(int digi_volume, int midi_volume)
{  short _sb_port=lk_sb_port;
   if (lsGetDspVersion() < 0x300)  return -1;

   if (digi_volume >= 0) {                   /* set DAC level */
      outp(_sb_port+4, 4);
      outp(_sb_port+5, (digi_volume & 0xF0) | (digi_volume >> 4));
   }

   if (midi_volume >= 0) {                   /* set FM level */
      outp(_sb_port+4, 0x26);
      outp(_sb_port+5, (midi_volume & 0xF0) | (midi_volume >> 4));
   }

   return 0;
}
short lsGetBlasterEnv(short *_sb_port,short *_sb_dma8,short *_sb_dma16,short *_sb_irq)
{  char *blaster=getenv("BLASTER");
   *_sb_port=*_sb_dma8=*_sb_dma16=*_sb_irq=-1;
   if (blaster) { 
      while (*blaster) {
	 while ((*blaster == ' ') || (*blaster == '\t'))
	    blaster++;

	 if (*blaster) {
	    switch (*blaster) {

	       case 'a': case 'A':
		     *_sb_port = strtol(blaster+1, NULL, 16);
		  break;

	       case 'i': case 'I':
		     *_sb_irq = strtol(blaster+1, NULL, 10);
		  break;

	       case 'd': case 'D':
		  *_sb_dma8 = strtol(blaster+1, NULL, 10);
		  break;

	       case 'h': case 'H':
		  *_sb_dma16 = strtol(blaster+1, NULL, 10);
		  break;
	    }

	    while ((*blaster) && (*blaster != ' ') && (*blaster != '\t'))
	       blaster++;
	 }
      }
      return 1;
   }
  return 0;
}

///////////////////////////////////////////////
void lsFMWrite(unsigned short reg, uchar data)
{ 
   short i;
   short port = (reg & 0x100) ? lk_fm_port+2 : lk_fm_port;

   outp(port, reg & 0xFF);      
   for (i=0; i<lk_fm_delay1; i++) inp(port);
   outp(port+1, data);         
   for (i=0; i<lk_fm_delay2; i++) inp(port);
}
uchar lsFMRead()
{ return (inp(lk_fm_port)); }
void lsFMInit()
{ lsFMWrite(1,0);
  lsFMWrite(8,0);
  lsFMWrite(0xbd,0x00);
  lsFMWrite(0x20+0,0x21);
  lsFMWrite(0x20+3,0x11);
  lsFMWrite(0x40+0,0x4c);
  lsFMWrite(0x40+3,0x00);
  lsFMWrite(0x60+0,0xd2);
  lsFMWrite(0x60+3,0xd2);
  lsFMWrite(0x80+0,0x32);
  lsFMWrite(0x80+3,0x11);
  lsFMWrite(0xe0+0,0x00);
  lsFMWrite(0xe0+3,0x00);
  lsFMWrite(0xc0+0,0x04);
  lsFMWrite(0x01,0x20);           /* turn on wave form control */
  lsFMWrite(0xBD, 0x0c);          /* set AM and vibrato to high */
}
/////////////////////////////////////
void lsFMSound(short frequency,short block)
{ short fnh, fnl, blfnh, kblfnh;
  fnl = frequency&0x00ff;
  fnh = frequency>>8;
  blfnh = fnh|(block<<2);
  kblfnh = blfnh|0x20;
  lsFMWrite(0xa0,fnl);
  lsFMWrite(0xb0,kblfnh);
}
void lsFMSoundOff(short frequency,short block)
{ short fnh, blfnh, kblfnh;
  fnh = frequency>>8;
  blfnh = fnh|(block<<2);
  kblfnh = blfnh|0x00;
  lsFMWrite(0xb0,kblfnh);
}
void lsFM(short frequency,short block)
{ lsFMSoundOff(frequency,block);
  lsFMSound(frequency,block);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合999| 日本不卡一区二区三区高清视频| 日韩欧美国产成人一区二区| 欧美日韩国产一二三| 色哟哟在线观看一区二区三区| 成人的网站免费观看| 精品在线你懂的| 国产黑丝在线一区二区三区| 国产91精品精华液一区二区三区| 国产黄色精品视频| av不卡在线观看| 日韩午夜在线观看视频| 日韩视频免费直播| 中文字幕不卡三区| 亚洲最新视频在线观看| 偷拍一区二区三区| 国产91精品入口| 91麻豆精品视频| 欧美人伦禁忌dvd放荡欲情| 精品美女一区二区三区| 精品久久久久久无| 中文字幕日韩一区二区| 亚洲国产欧美在线| 国产精品一区二区在线观看不卡 | 精品中文字幕一区二区小辣椒| 国产一区欧美一区| 色视频欧美一区二区三区| 日韩精品中午字幕| 中文字幕日韩精品一区 | 国产一区二区h| 欧美自拍丝袜亚洲| 国产精品高潮久久久久无| 久久69国产一区二区蜜臀| 久久99久久99| 欧美日韩精品一二三区| 樱花草国产18久久久久| 国产精品1区2区3区| 久久久久国色av免费看影院| 污片在线观看一区二区| 欧美三级一区二区| 亚洲人成影院在线观看| 91亚洲男人天堂| 国产精品久久久久天堂| 成人黄页毛片网站| 中文字幕一区二| 91在线视频官网| 亚洲大片一区二区三区| 欧美欧美午夜aⅴ在线观看| 午夜电影网亚洲视频| 欧美日韩性生活| 免费高清视频精品| 国产视频一区在线播放| 国产精品影视网| 亚洲欧美日韩电影| 欧美日韩国产综合视频在线观看| 日韩高清一区在线| 欧美精品一区二区三| 成人91在线观看| 一级特黄大欧美久久久| 欧美日韩国产成人在线免费| 美女视频网站黄色亚洲| 久久久久久久久99精品| 色哟哟亚洲精品| 热久久一区二区| 亚洲国产精品99久久久久久久久| 91天堂素人约啪| 免费欧美在线视频| 亚洲桃色在线一区| 日韩视频一区二区在线观看| 91在线云播放| 国产精品中文有码| 午夜视频在线观看一区| 国产精品久久久一本精品| 欧美日韩一区三区四区| proumb性欧美在线观看| 爽爽淫人综合网网站| 亚洲国产精品v| 6080国产精品一区二区| 91尤物视频在线观看| 蜜桃av一区二区三区电影| 亚洲色图视频免费播放| 久久伊人中文字幕| 欧美日韩国产电影| 在线亚洲+欧美+日本专区| 国产精品一区二区你懂的| 免费三级欧美电影| 丝袜美腿成人在线| 亚洲高清免费一级二级三级| 亚洲天堂2016| 亚洲欧美日韩中文播放| 亚洲欧洲色图综合| 亚洲精品一区二区三区99 | 欧美日韩高清一区二区不卡 | 国产成人精品亚洲午夜麻豆| 日韩高清电影一区| 石原莉奈在线亚洲二区| 午夜一区二区三区视频| 亚洲国产一区二区三区 | 久久久久久久网| 国产女人aaa级久久久级| 精品国产乱码91久久久久久网站| 制服丝袜亚洲播放| 欧美一级在线免费| 日韩免费电影一区| 久久久久久久久99精品| 国产日韩欧美不卡| 中文字幕一区av| 亚洲综合一区在线| 日韩av一区二区在线影视| 久久精品久久99精品久久| 黑人巨大精品欧美一区| 激情五月婷婷综合| 国产suv一区二区三区88区| 大白屁股一区二区视频| 91精彩视频在线| 日韩一区二区视频| 国产精品久久久久7777按摩 | 久久99精品视频| 99久久精品国产精品久久| 91精品国产综合久久精品性色| 欧美电影免费观看高清完整版在 | 国产成人在线网站| 在线观看av一区二区| 久久夜色精品国产欧美乱极品| 中文字幕综合网| 美国欧美日韩国产在线播放| 91在线国产观看| 欧美精品xxxxbbbb| 亚洲欧洲av另类| 久久精品国产成人一区二区三区 | 成人福利电影精品一区二区在线观看| 色哦色哦哦色天天综合| 2017欧美狠狠色| 亚洲一区二区在线播放相泽| 丁香桃色午夜亚洲一区二区三区| 欧美丝袜第三区| 国产欧美视频一区二区| 亚洲国产精品久久久久秋霞影院 | 欧美偷拍一区二区| 国产欧美精品区一区二区三区| 毛片av一区二区| 日韩一区二区三区在线观看 | 亚洲一区二区高清| 91一区二区在线| 精品福利二区三区| 免费观看一级特黄欧美大片| 69久久夜色精品国产69蝌蚪网| 亚洲色图视频网| 色综合色综合色综合| 成人免费小视频| 99精品国产热久久91蜜凸| 成人欧美一区二区三区小说| jlzzjlzz国产精品久久| 国产精品久久久久久久久搜平片 | 欧美群妇大交群中文字幕| 亚洲午夜av在线| 91.麻豆视频| 激情文学综合插| 国产欧美精品国产国产专区| 国产乱子伦视频一区二区三区 | 日韩午夜激情电影| 日韩精品一级二级| 国产亚洲精品久| av中文字幕不卡| 亚洲在线免费播放| 精品免费99久久| 国产精品69久久久久水密桃| 亚洲欧洲美洲综合色网| 欧美视频在线观看一区| 免费人成在线不卡| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 久久久99精品免费观看| 99精品黄色片免费大全| 日韩av一二三| 国产欧美日韩亚州综合 | 免费人成精品欧美精品| 国产日韩av一区二区| 欧美日韩黄色一区二区| 久久成人精品无人区| 亚洲精品美国一| 欧美一级黄色录像| 国产v日产∨综合v精品视频| 一区二区三区免费观看| 欧美成人bangbros| 91久久人澡人人添人人爽欧美| 美女一区二区三区在线观看| 国产精品午夜在线| 亚洲精品一线二线三线| 色av综合在线| 高清日韩电视剧大全免费| 天天影视网天天综合色在线播放| 亚洲图片你懂的| 久久久五月婷婷| 精品国产亚洲在线| 3751色影院一区二区三区| 在线观看av一区二区| 99精品国产视频| 93久久精品日日躁夜夜躁欧美| 国产精品91一区二区| 国产一区二区美女诱惑|