标题:关于DJGPP和RHIDE的入门级问题
取消只看楼主
灭火的风
Rank: 2
来 自:杭州
等 级:论坛游民
帖 子:161
专家分:10
注 册:2006-6-15
 问题点数:0 回复次数:7 
关于DJGPP和RHIDE的入门级问题

我下载了DJGPP还带了RHIDE环境;
但是以前的一些程序都不能通过编译
里面似乎没有REGS这个联合,我开始以为这是因为GCC是标准C的关系,但是后来发现像getch()这样的一些不标准的函数居然可以用.......
这是为什么呢?
我该怎样才能调用系统中断呢?

搜索更多相关主题的帖子: DJGPP RHIDE 入门 REGS GCC 
2006-06-19 17:38
灭火的风
Rank: 2
来 自:杭州
等 级:论坛游民
帖 子:161
专家分:10
注 册:2006-6-15
得分:0 
嗯,谢谢斑竹。刚才REGS用不来是因为我自己没包含dos.h........
2006-06-19 20:26
灭火的风
Rank: 2
来 自:杭州
等 级:论坛游民
帖 子:161
专家分:10
注 册:2006-6-15
得分:0 

又有问题了......
#include <stdlib.h>
#include <conio.h>

#include <dos.h>
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <sys/nearptr.h>

#define VEDIO_ACCESS (0xA0000+__djgpp_conventional_base)

int main()
{
union REGS r;
__djgpp_nearptr_enable();
r.x.ax = 0x13;
int86(0x10,&r,&r);
*((char *)VEDIO_ACCESS) = 4;
getch();
r.x.ax = 0x03;
int86(0x10,&r,&r);
__djgpp_nearptr_disable();
}


这个在RHIDE里通不过.....为什么会这样?

2006-06-20 00:52
灭火的风
Rank: 2
来 自:杭州
等 级:论坛游民
帖 子:161
专家分:10
注 册:2006-6-15
得分:0 
刚刚在国外网站上看到一种访问系统内存的方法,如下

#include <sys/farptr.h>
#include <go32.h>
...
farsetsel(_dos_ds);
farnspokeb(0xA0000+offset,color);

这样就可以了,但是斑竹说的方法为什么通不过呢?
2006-06-20 01:41
灭火的风
Rank: 2
来 自:杭州
等 级:论坛游民
帖 子:161
专家分:10
注 册:2006-6-15
得分:0 
我的__djgpp_nearptr_enable()返回的是NULL.....
2006-06-20 02:15
灭火的风
Rank: 2
来 自:杭州
等 级:论坛游民
帖 子:161
专家分:10
注 册:2006-6-15
得分:0 
你说的那个方法我在国外站点上也看见了,他说要测试那个enable函数的返回值,如果为零的话就调用失败了,并说这是有可能发生的,但是就是没有说这是为什么,以及如何解决.....
2006-06-20 22:32
灭火的风
Rank: 2
来 自:杭州
等 级:论坛游民
帖 子:161
专家分:10
注 册:2006-6-15
得分:0 
顺便再问以下斑竹啊,和farnspokeb对应的有没有读系统内存的方法的?还有就是在保护模式下,ASCII码点阵的地址是多少呀?
2006-06-20 22:35
灭火的风
Rank: 2
来 自:杭州
等 级:论坛游民
帖 子:161
专家分:10
注 册:2006-6-15
得分:0 

我知道方法了
dosmemget函数就可以读取系统内存中的数据了

2006-06-24 03:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-73406-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.072469 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved