中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » Djgpp 里无法调用中断 int13 ah=48h 苦恼~!
作者:
标题: Djgpp 里无法调用中断 int13 ah=48h 苦恼~! 上一主题 | 下一主题
BSLTT
初级用户





积分 59
发帖 18
注册 2005-12-25
状态 离线
『楼 主』:  Djgpp 里无法调用中断 int13 ah=48h 苦恼~!

Djgpp 里无法调用中断 int13 ah=48h 苦恼~!

//#define _BORLAND_DOS_REGS
#include <dos.h>
#include <math.h>
#include <stdio.h>
#include <sys/segments.h>
#include <go32.h>
#include <sys/movedata.h>

typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;

int main()
{
union REGS regs;
struct SREGS sregs;

struct{
            WORD size;
            WORD inforflags;
            DWORD cylns;
             DWORD heads;
            DWORD sects;
            DWORD tslow;
            DWORD tshi;
            WORD bps;
       }package;

regs.h.ah=0x48;
regs.h.dl=0x80;

//--- TC ---// TC用下面这两行传入段地址和偏移量就没有问题
//sregs.ds  =  FP_SEG(&package);
//regs.x.si =  FP_OFF(&package);

//--- DJGPP ---// 可在DJGPP里我就不知道怎么输入这个量了~!
sregs.ds  = _my_ds();
regs.x.si = _my_ds();

printf("ds=%x   si=%x \n",sregs.ds,regs.x.si);

printf("package= %x \n",&package);

int386x(0x13,&regs,&regs,&sregs);
printf("%d \n",regs.h.ah);

printf("cyliners  = %ld\n",package.cylns);
printf("heads     = %ld \n",package.heads);
printf("sect/cyln = %ld \n",package.sects);
printf("Lsectors  = %ld\n",package.tslow);
printf("Hsectors  = %ld\n",package.tshi);
printf("bytes     = %ld\n",package.bps);
printf("gb = %.f GB\n",(double)(package.tslow*512.0/pow(10,9)));
printf("-------------------------- \n \n \n");

}


高手显身吧~!快救救我~!

2005-12-26 23:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
darkradx
高级用户





积分 972
发帖 420
注册 2004-5-16
状态 离线
『第 2 楼』:  

BIOS issue



平生进退如飙风
2005-12-28 08:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
BSLTT
初级用户





积分 59
发帖 18
注册 2005-12-25
状态 离线
『第 3 楼』:  

楼上的兄弟,能不能给一个明白的答案呀?(请不要吐水哎~!)谢谢~!

2005-12-28 09:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
darkradx
高级用户





积分 972
发帖 420
注册 2004-5-16
状态 离线
『第 4 楼』:  

try __dpmi_int



平生进退如飙风
2005-12-28 21:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
BSLTT
初级用户





积分 59
发帖 18
注册 2005-12-25
状态 离线
『第 5 楼』:  

不知道是不是我笨, __dpmi_int(0x13,&r);

我怎么把sreg放进去呢????

2005-12-29 09:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
darkradx
高级用户





积分 972
发帖 420
注册 2004-5-16
状态 离线
『第 6 楼』:  

参数结构都不一样...



平生进退如飙风
2005-12-29 11:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
BSLTT
初级用户





积分 59
发帖 18
注册 2005-12-25
状态 离线
『第 7 楼』:  

麻烦你看清楚我的问题!

2005-12-29 23:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dos_jacky
初级用户




积分 124
发帖 10
注册 2004-10-9
状态 离线
『第 8 楼』:  

#include <sys/nearptr.h>
#include <crt0.h>

  void * MK_FP (unsigned short seg, unsigned short ofs)
  {
    if ( !(_crt0_startup_flags & _CRT0_FLAG_NEARPTR) )
      if (!__djgpp_nearptr_enable ())
        return (void *)0;
    return (void *) (seg*16 + ofs + __djgpp_conventional_base);
  }

2006-2-13 16:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: