手机分类
  导航: 电脑时代在线 · 程序设计 · C语言 · C语言编程实例
有问题吗?看 疑难解答 电脑术语

EMS在C里面地运用一例

 
硬件盘点
手机推荐
 
『EMS在C里面地运用一例』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2005-6-28 

#include <process.h>
#include <stdio.h>
#include <dos.h>
#include <io.h>
#include <mem.h>
#include <conio.h>
#include <string.h>
#include <dir.h>
#include <math.h>
char EMS=0;
unsigned  PHYMEMADDR;
unsigned  handle;
unsigned char sbyt0(int n)
{switch(n)
 { case 0:return 0x00;
   case 1:return 0x80;
   case 2:return 0xc0;
   case 3:return 0xe0;
   case 4:return 0xf0;
   case 5:return 0xf8;
   case 6:return 0xfc;
   case 7:return 0xfe;
 }
}
unsigned char cbyt0(int n)
{switch(n)
 { case 0:return 0xff;
   case 1:return 0x7f;
   case 2:return 0x3f;
   case 3:return 0x1f;
   case 4:return 0x0f;
   case 5:return 0x07;
   case 6:return 0x03;
   case 7:return 0x01;
 }
}
unsigned char sbyt1(int n)
{switch(n)
 { case 0:return 0x00;
   case 1:return 0x01;
   case 2:return 0x03;
   case 3:return 0x07;
   case 4:return 0x0f;
   case 5:return 0x1f;
   case 6:return 0x3f;
   case 7:return 0x7f;
 }
}
unsigned char cbyt1(int n)
{switch(n)
 { case 0:return 0xff;
   case 1:return 0xfe;
   case 2:return 0xfc;
   case 3:return 0xf8;
   case 4:return 0xf0;
   case 5:return 0xe0;
   case 6:return 0xc0;
   case 7:return 0x80;
 }
}
char test_ems()
{ int i;
  union REGS inregs,outregs;
  struct SREGS segs;
  struct DeviceHeader {
  struct DeviceHeader far *link;
  unsigned attributes;
  unsigned strategy_offset;
  unsigned interrupt_offset;
  char name_of_number_of_units[8];
  } far *dev;
  unsigned char major,minor,c[13];
  inregs.x.ax=0x3001;
  intdos(&inregs,&outregs);
  major=outregs.h.al;
  minor=outregs.h.ah;
  if (major<2) return(0);
  else
  {
     inregs.h.ah=0x52;
     intdosx(&inregs,&outregs,&segs);
     if (major==2)
       dev=(struct DeviceHeader far *)MK_FP(segs.es+1,outregs.x.bx+7);
     else
       if ((major==3) && (minor==0))
     dev=(struct DeviceHeader far *)MK_FP(segs.es+2,outregs.x.bx+8);
       else
     dev=(struct DeviceHeader far *)MK_FP(segs.es+2,outregs.x.bx+2);
     c[8]=NULL;
     while (FP_OFF(dev)!=0xffff)
     {
       if (dev->attributes & 0x8000)
       {
     for (i=0;i<8;i++)
       c[i]=dev->name_of_number_of_units[i];
       }
       if (!strcmp(c,"EMMXXXX0"))
       {
     EMS=1;
     return(1);
       }
       dev=dev->link;
     }
  }
  return(0);
}

char get_EMS_status()
{ union REGS  regs;
  char tmp=0xff;
  if (EMS)
  { regs.h.ah=0x40;
    int86(0x67,&regs,&regs);

[1] [2] [3] [4] 下一页  


如果您有什么疑问,可以至论坛提出或者解答他人的疑问   返回页面顶部

】【关闭窗口
·上一篇教程:
·下一篇教程:
·导航: 电脑时代在线 · 程序设计 · C语言 · C语言编程实例
相关文章
 
搞笑自拍|图片故事|美女图库|体坛宝贝|明星爆料|世界奇观|风光摄影|历史回忆|大千世界
Photshop超炫图片
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部  
网站文本地图
  版权所有:电脑时代在线 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright © 2005-2007 www.PCvz.com online services. all rights reserved. 蜀ICP备05015578
Template designed by LaoJiang. Optimized for 1024x768 to Firefox,Opera and MS-IE. Site powered by EQL.
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光