用C语言在NDS上编写程序

作者:风风 发布于:2010年06月14日 19:50

在DS上进行开发是我一直的梦想,虽然有DSBasic, DSLua等解释器,但是总感觉很别扭,而且没有更多的语言支持。昨天偶然发现了一个DS上的x86虚拟机,我想在这上面测试一下。

我们需要以下组件:

**DSx86**
在DS上模拟x86环境的虚拟机
地址:http://dsx86.patrickaalto.com/,目前最新版本0.14Beta
需要的文件有:
DSx86.nds — 引导文件
DSx86.ini — 配置文件
DSx86Cfg — 配置设置工具
把下载的文件解压到/data/dsx86/就行了。
但是这只是x86虚拟机,我们还需要一个操作系统。(往下看)

**4DOS**
命令提示符外壳
地址:ftp://jpsoft.com/4dos/files/,目前最新版本7.2
这里需要的文件只有:
4dos.com
下载到/data/dsx86/4dos/, /data/dsx86/, /4dos/中任意一个文件夹都可以,其他的几个辅助文件也可以一并下载。

**Vim**
文本编辑工具
地址:http://www.vim.org/download.php#pc
我们需要的部分是:
vim71d16.zip — 16位dos下的可执行文件
vim72rt.zip — 所有版本vim所需要的运行时包,包括了文档,语法还有其他的配置文件
把上面的文件下载后解压到/vim/vim71/进行一些配置来时编辑器更加符合程序员的使用,在/vim/下创建_vimrc文件,内容为下面的语句
syntax enable
set smartindent
set tabstop=4
set shiftwidth=4
set nu!
这里面已经包括了设置语法高亮,自动缩进,行号等功能了。

**DJGPP**
一个GNU在DOS下的编译系统实现
地址:http://www.delorie.com/djgpp/
我们可以在他给出的ftp中找到需要的文件:
gccXXXb.zip — GNU C编译器
gppXXXb.zip — GNU C++编译器
bnuXXXb.zip — 链接库
djdevXXXb.zip — 库,头文件等
csdpmiXb.zip — DOS 保护模式方法接口
makXXXb.zip — GNU Make工具
注:以上的X替换为你能找到的最新版本。
把下载到的文件都解压到/djgpp/下

到此,我们已经完成了虚拟机,操作系统,编译环境,代码编辑工具的搭建。
现在我们来开发在DS上的第一个项目:Hello, World!

打开DS,从你烧录卡的引导器中找到/data/dsx86/DSx86.nds并启动,屏幕将会出现如下画面:
***** DSx86 v0.14 by Patrick Aalto *****

BIOS date: Jun 8 2010
Initializing llibDAT: Success!

/DATADSX86/DSX86.INI loaded!
Starting command shell:
Try C:\DATA\DSX86\4DOS\4DOS.COM …OK!

4DOS EMS swapping initialized (240K)

4DOS 7.50 DOS5.00
Copyright 1988-2004 Rex Conn & JP Software Inc. All Rights Reserved
C:\>_

这说明4DOS已经载入成功,可以开始运行DOS程序了。
进入Vim目录,并创建a.c源文件:
C:\>cd vim\vim71
C:\vim\vim71>vim a.c
按I进入插入模式,输入程序:
#include
int main()
{
printf(”Hello, world!\n”);
return 0;
}
按ESC返回普通模式,用ZZ命令保存并退出。

要得到可执行文件必须先编译,我们首先要设置编译器路径,在命令提示符下输入以下命令:
set PATH=C:\DJGPP\BIN;%PATH%
set DJGPP=c:/djgpp/djgpp.env
现在可以开始编译了,使用命令:
gcc -o a.c

这时屏幕提示错误并输出一堆乱码:
80386 required.

好,我们的工作到这里暂时告一段落,首先说明一下,为什么我们没有得到可执行文件。
根据DSx86主页上作者的说明,目前DSx86只能模拟到没有保护模式的80286,也就差不多等于80186。而我们的编译环境需要80386,当然就不能

进行编译了。
所以,如果我们需要用DJGPP完成开头提出的目标,比如等待作者继续更新DSx86,使它支持80386,或者自己重新编译gcc,让它支持80186实模

式。

没有合适的自由软件或免费软件,我们只能用商业软件代替了。一款古老的编译器,Turbo C将会帮助我们完成接下来的工作。

**Turbo C**
Borland的古老的C编译器,我们需要的是2.0版,虽然同时代同系列的最新版本是3.0,但是经测试,TC3.0需要的处理器最低为80386。
安装TC2.0后在PC上运行TC.EXE,依次展开Options-Directories菜单,将里面的路径设置为正确的,如:
Include directories: C:\TURBOC2\INCLUDE
Library directories: C:\TURBOC2\LIB
Output directories:
Turbo C directories: C:\TURBOC2
Pick file name:
设置完毕后使用Options-Save options命令保存刚才的设置。
并且在TC2目录下建立刚才的a.c文件。因为TC2年代久远,当时的C标准与现在不同,所以我们的程序需要修改一下才能运行。
把第一行的:#include
改为:#include “stdio.h”
重新启动DS,进入C:\TURBOC目录,执行编译命令:
tcc a.c
程序将会自动编译并链接为一个a.exe
然后输入a就可以看到效果了,屏幕打印一串字:

Hello, world!

作者:风风
来源:北风技术专栏
原文链接:http://column.ibeifeng.com/allg0/20100614361.shtml

( 内容完 )

添加收藏到:

您可能还对这些文章感兴趣:

  • 为什么我们要从现成的游戏引擎学习开始
  • 【翻译】Ant常用任务1-解压缩任务
  • 人月神话:编程之道和编程之禅摘录
  • Spring总结实例之消息与事件
  • 浅谈在Java语言中究竟是传值还是传引用
  • 简述WebS简述WebService与.NET Remoting的区别及适应场合
  • 敏捷将亡
  • 每日构建 Daily build
  • 用C语言在NDS上编写程序
  • struts2系列1:环境搭建(helloworld)
  • 没有评论, 我来评论

    小贴士:评论需要管理员审核后才会显示。请不要发布与国家法律相抵触的言论,北风网将保留追究责任的权利。
    类似“顶”、“沙发”、“支持”之类没有营养的文字,对勤劳贡献的作者来说是令人沮丧的反馈信息。
    请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
    如果您发现自己的评论没有被审核或者不见了,请参考以上三条。

    

    每周之星

    陈臣陈臣

    七年Java和JEE开发经验,JEE应用设计和高级架构师,拥有Sun的多项Java和J2EE方面的技能认证,多年项目经理、技术部经理的管理经验。拥有全面、扎实的Java和JEE理论知识,丰富的JEE应用开发经验。

    更多作者:

  • Adam
  • ikon999
  • jk1234
  • jk2345
  • libin_8745
  • lifengxing
  • taohuang100
  • xingkong
  • 北风
  • 呆子
  • 子晨
  • 小白
  • 张章
  • 张维亮
  • 陈臣
  • 陶宝哥
  • 风风
  • 最新内容

    推荐内容

    标签

    分类