查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

DOS编程技术

讨论在纯DOS下的编程技术

 
 
 
 
 
 

北京市 海淀区 双鱼座

 发消息  写留言

 
1984年大学毕业,1985年底有机会开始接触PC机,1986年开始在PC机上做开发工作,曾接触过MS-DOS、CP/M、UNIX、VMS、LINUX、iRMX等众多的操作系统并在上面从事技术开发,擅长做底层与硬件相关的软件开发,目前主要在DOS和LINUX平台下工作,主要从事软件,在硬件开发上也有一定造诣,亦有在8051系列、6502系列(凌阳)、z80系列、ARM、X86等各类平台下开发软硬件的经历。更详细情况可以参考http://resume.whowin.net
 
近期心愿大家都快快乐乐地活着
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 

日志分类

 
 
日志分类列表加载中...
 
 
 
 
 

友情链接

 
 
模块内容加载中...
 
 
 
 
 
 
 
列表加载中...
 
 
 
 
 
 
 
 

[置顶] 我要重新整理这个博客

2017-3-13 14:40:11 阅读366 评论0 132017/03 Mar13

  很高兴这个从2008年到2011年写的东西被网易给保留的如此完好;很抱歉其中的大部分链接已经失效,很多的资源已经无法获得,我还记得似乎这几年一直不断地收到读者的email要求我恢复这些资源的链接,其实我每次都想把这个工作做一下,但最终都因为忙和懒没有去做,再次表示歉意。

 我不一定还有时间和精力去写更多的内容,因为写这些东西的那几年我不怎么想工作,所以做了一些自己有兴趣的东西,但是现在由于一些原因,我可能还不得不工作一段时间,所以可能无法再写更多的东西了。

但是,我下决心尽可能地恢复这些博客中的所有资源的链接,昨天我翻箱倒柜已经找到了不知道多少年前的一张小光盘,上面有一个标签,写着”dos相关“,我还记得这张光盘,里面应该是关于这个博客中所有当年的记录,有了它,我希望真的能够把这件事做好。

整理完成列表:

2017年3月13日

《安装DJGPP》

《在DOS下的DJGPP+RHIDE安装实作》

作者  | 2017-3-13 14:40:11 | 阅读(366) |评论(0) | 阅读全文>>

[置顶] 所有文章分类列表

2017-3-15 11:46:40 阅读357 评论0 152017/03 Mar15

(原文莫名其妙地被网易标为违规,只好重新发布一次,以方便大家阅读)

DJGPP相关

关于构建DOS下编程平台的总结                        2008-05-15给ALLEGRO增加一个JPEG库                            2008-05-15在DOS+DJGPP下安装ALLEGRO                           2008-05-14DPMI下的硬件中断                                   2008-05-07在DOS下DJGPP+RHIDE安装实作                         2008-03-28安装DJGPP                                          2008-03-27

作者  | 2017-3-15 11:46:40 | 阅读(357) |评论(0) | 阅读全文>>

[置顶] 为什么我要写这个博客

2008-7-22 6:36:26 阅读3718 评论98 222008/07 July22

从一开始我就知道我会很孤独,我知道我写的东西不会有太多的人看,因为我写的这些东西太不入流,不仅生僻,而且有点深奥,对这些选题感兴趣的人少,看的明白的人也不多,即便有几个感兴趣的发现了这个地方,能一篇一篇地看完这些文章并看明白的确不是一件容易的事。

可是,我还是要不断地写下去,其实从一开始,我就没有准备给其它人看,全当是把自己的经验做一个总结,这其中的很多东西,对不需要的人来说一文不值,但对那个别的需要的人来说,他可能已经苦苦找寻了好久,或者为此苦恼了几天,我希望我能给他们带来一个惊喜,让他们忽然觉得,原来世界上还有另一个人曾经琢磨过他所苦恼的事情,仅此而已。

写着写着,我发现了写作的乐趣,有些事情,一旦写到纸上,你就不得不去面对它,把它搞清楚,否则你就无法面对你的文字里的漏洞,你就无法面对你的读者,因为做技术的人,不喜欢让人在后面说他“不求甚解”,所以,写博客还让我不得不解决一些以前懒得深究的遗留了几年甚至十几年的问题。

开始写博客,是因为发现脑袋不如以前了,很多事情开始不断地忘记,到了必须要把它用文字记录下来才能记住的地步,所以,把那些琢磨了很久才得到结果的东西写出来,完全是为了延伸自己的记忆,免得每次面对同样的问题都不得不从头学起。

但是,当发现自己写的东西并没有什么人关注的时候,确实也很失落,这时你会发现,其实你很虚伪,你写博客并不仅仅是为了延伸自己的记忆,你也希望被关注,你也希望你写的东西得到其它人的承认。

所以,当有人称你为“高人”的时候,你的内心深处还是挺愉悦的,其实,人家说你是“高人”你也未必就

作者  | 2008-7-22 6:36:26 | 阅读(3718) |评论(98) | 阅读全文>>

DOSUSB 2.0 免费版的限制原理

2011-7-12 23:17:25 阅读4398 评论13 122011/07 July12

    两年前,我在写USB的文章时,多次提到了DOSUSB这个东东,这两年也没有关注这方面的变化,最近,有机会重新进入DOSUSB的官方网站(www.dosusb.net)(2017年3月15日注:很高兴这个链接还健在),欣喜地发现,这个网站不仅依然存在,而且还有所发展,相继推出了DOSUSB 2.0和DOSUSB3.0,但是不再免费(以前,DOSUSB的二进制代码是免费的,但源代码收费),USB 3.0还不怎么常用(至少在运行DOS的机器上),所以,本文仅对DOSUSB 2.0的免费版做了一个简单的分析,介绍其限制方法,并提出了一个非常简单的破解方法。

    题外话,我觉着DOSUSB的收费稍微贵了点,一个单机授权要收取65欧元,无限量版本收费550欧元,源代码收费高达1000欧元。

整个二进制文件长度为34211字节,也不是很大,所以反编译跟踪并不是十分困难。

先要学习一下DOSUSB的文档,关于免费版的限制,有如下说明:

The free version for download on the internet is a demo version of DOSUSB. This version will stop working after 20 minutes of operation. Calls by an application program

作者  | 2011-7-12 23:17:25 | 阅读(4398) |评论(13) | 阅读全文>>

dos分区引导扇区分析

2011-5-15 13:16:56 阅读4544 评论3 152011/05 May15

    以前的文章里专门分析过DOS的主引导扇区,主引导扇区并不隶属于某个操作系统,尽管在不同的操作系统下对硬盘进行分区所得到的主引导分区时不同的,但在x86的架构下,其最终结果都是读出某一个活动的分区引导扇区,最后把控制权交给这个分区引导扇区,至于最后引导起来的是什么操作系统,则要看这个分区引导扇区了,所以说,分区引导扇区可是和操作系统密不可分的,不同的操作系统,其分区引导扇区肯定是不同的。

    简单地说,主引导扇区是在对磁盘进行分区时写在磁盘的0柱面(Cylinder)、0磁头(Head)、1扇区(Sector)上的,而分区引导扇区是在你对磁盘进行格式化时,写在磁盘上你所格式化的那个分区的逻辑扇区号为0的扇区上的,听起来有点绕口。

本文所载的分区引导扇区的代码取自DOS6.22格式化的一个实际硬盘,本文所有的分析过程在DOS 6.22下进行。

1、分区引导扇区的结构

分区引导程序占用一个扇区,通常是512个字节,可以分成如下6个部分

偏移:00h,长度:3字节,一条跳转指令,跳转到直接可以执行的代码上去偏移:03h,长度:8字节,厂商标识和DOS版本号偏移:0bh,长度:25字节,BPB(BIOS Parameter Block),BIOS参数块偏移:24h,长度:26字节,其他参数区偏移:3eh,长度:448字节,引导程序偏移:1feh,长度:2字节,结束标志,aa55h

2、分区引导扇区的读出

分区引导扇区属于该磁盘分区的一部分,所以在debug下使用debug的命令就可以很容易的读出:

作者  | 2011-5-15 13:16:56 | 阅读(4544) |评论(3) | 阅读全文>>

在DR-DOS下建立DJGPP的开发环境

2011-4-15 12:03:46 阅读3088 评论1 152011/04 Apr15

    前面的博文中,我们已经在虚拟机上安装了DR-DOS7.03,这篇文章里我们要在这个刚刚安装好的DR-DOS上建立DJGPP+RHIDE+ALLEGRO+WATTCP-32的开发环境。

    以前博文中的有关在DOS6.22下建立开发环境的文章完全适用,这些文章如下:

安装DJGPP在DOS下的DJGPP+RHIDE安装实作在DJGPP+DOS下安装ALLEGRO给ALLEGRO增加一个JPEG库在DOS下进行网络编程(上)

    下面是我在实际安装过程中遇到的一些麻烦,供大家借鉴。

在实际操作之前,应该先把光驱驱动起来,在DR-DOS中没有找到光驱的驱动程序,所以我们需要借助DOS6.22下的驱动,在我们驱动光驱的时候,我们只有软驱,所以只能通过软驱把这个驱动拷贝到DR-DOS中。

    在《在虚拟机下安装DOS 6.22(上)》这篇文章中,我们有一张DOS 6.22启动盘的镜像下载,这张盘上有我们需要的东西,这里重新写一下下载地址,以方便大家:http://blog.whowin.net/software/dos622.img(2017年3月17日注:这个链接已经修复)

作者  | 2011-4-15 12:03:46 | 阅读(3088) |评论(1) | 阅读全文>>

在虚拟机上安装DR-DOS 7.03

2011-4-12 11:27:44 阅读4029 评论1 122011/04 Apr12

几年前前,我介绍过使用sun公司开源的虚拟机软件VirtualBox安装DOS的过程,那个时候,VirtualBox的版本还只有2.1.0,在DOS下在一些细节上是有些问题的,如今,我使用的该软件的版本已经到了4.0.4,解决了以前版本中的一些问题,尽管还有一些细小的问题,但已经很好用了。

下载最新版本的VirtualBox,请访问请官方网站:http://www.virtualbox.org

该软件支持中文,截止到2011年4月12日,其最新版本是4.0.4。

本文介绍在虚拟机下安装DR-DOS的全过程,DR-DOS也是很有一些历史了,大概在MS-DOS3.3出现后就有了,后来一直发展到了7.03版,再后来就不见消息了,目前,仍然可以找到DR-DOS的官方网站:http://www.drdos.com(2017年3月17日注:这个链接已经失效了)

如果你去这个网站转转,你会发现,DR-DOS并不是开源的软件,这个事情说起来也很有意思,若干年以前,据说DR-DOS被Caldera给买断了,之后,Caldera公开了源代码,并且更名为openDOS,于是,我们就可以得到开源的DR-DOS了,但是,Caldera现在也不再维护DR-DOS了,这个重任落到了一个非官方的DR-DOS的肩上,能够找到比较详尽信息的网站是:

作者  | 2011-4-12 11:27:44 | 阅读(4029) |评论(1) | 阅读全文>>

DS3231控制寄存器的说明

2011-4-1 11:49:43 阅读3804 评论0 12011/04 Apr1

    DS3231是DALLAS生产的一个低功耗、低成本、高精度的实时时钟芯片,在0--40度的条件下,据说精度可以达到2PPM,DS3231内部共有19个寄存器,其中前14个都是用于存储时间信息和闹钟信息的,后面的5个用于控制这颗芯片,偏移地址从0eh开始,本文仅说明后面的5个控制寄存器的使用方法。

    该芯片的datasheet可以从下面地址下载:

http://blog.whowin.net/datasheet/DS3231.pdf(2017年3月22日注:链接已修复)

这篇博文本来不是一篇公开的文章,仅用于自己需要时查阅,不过也许有些人会需要,所以现在予以公开,其中的大部分内容来源于该芯片的datasheet。

这些寄存器的图表如下:

bit   |   7       6      5        4       3       2      1     0    |    Name

1、Control寄存器

作者  | 2011-4-1 11:49:43 | 阅读(3804) |评论(0) | 阅读全文>>

CS5536中SMB寄存器的说明

2011-3-31 15:11:16 阅读2429 评论0 312011/03 Mar31

在以前的博文中,提到过CS5536这颗芯片,该芯片的datasheet在下列地址可以下载到:

http://blog.whowin.net/datasheet/cs5536.pdf(2017年3月22日注:链接已修复)

这篇博文本来不是一篇公开的文章,仅用于自己需要时查阅,不过也许有些人会需要,所以现在予以公开,其中的大部分内容来源于该芯片的datasheet。

    SMB(System Management Bus)实际上就是常说的I2C总线,CS5536中有一组寄存器专门用于控制I2C总线。

1、SMB Serial Data (SMB_SDA)

偏移:00h  类型:R/W   缺省:00

这个移位寄存器用于发送和接收数据,先发送(接收)的数据放在高位(MSB),后发送(接收)的字节放在低位(LSB),只有当SDAST=1(SMB I/O 01h[6])时才可以读写该字节,或者在设置完START位后重复start时可以读写该字节,其他任何情况下读写该字节都可能发生不可预知的后果。

2、SMB Status (SMB_STS)

偏移:01h  类型:R/W   缺省:00h

所有状态寄存器的值,通过读或者写入1都会被清0,写入0无效。

作者  | 2011-3-31 15:11:16 | 阅读(2429) |评论(0) | 阅读全文>>

GRUB主引导扇区分析

2009-9-3 10:53:08 阅读4884 评论7 32009/09 Sept3

前一篇文章,我们一起分析了一下DOS的主引导扇区,在网上分析DOS主引导扇区的文章比较多,如果看我写的感觉有困难,到网上随便搜一下,应该一抓一大把。

写人家写过的东西,似乎不是我的风格,我写DOS主引导扇区的分析其实还是为了引出后面的两个主题,一个是GRUB主引导扇区的分析,还有就是主引导扇区的应用。

DOS的主引导程序,实际已经很少有地方用了,因为DOS的分区最大只能有2G,4个分区也只能是8G,大于8G以后的分区,DOS是引导不了的,个中原因,我不说,大家可以想一想。

百度了一下,好像分析GRUB主引导扇区的几乎没有,我这篇文章准备补一下这个空白。

GRUB是什么?可能有些人还不知道,它是一个Boot Loader,Linux下经常会用它引导(好像现在较高版本内核的发行Linux大多数都在用GRUB),GRUB其实分好几部分,其中一部分就放在主引导扇区中,今天我们就把它搞出来翻它个底儿掉。

其实不管是什么Boot Loader,其目的都是把分区引导扇区给读出来,然后稳稳地把控制权交给分区引导程序,至于你分区引导程序能不能引导起什么东东来,它不管,也管不了,GRUB的主引导程序也是一样,一定要记住,主引导程序的目的就是把分区引导扇区给读出来然后把控制权交给分区引导程序。

总在说主引导扇区和分区引导扇区,我怕有些读者可能会越来越乱,所以不妨再啰嗦几句。主引导扇区指的是硬盘上的0磁头、0磁道、1扇区,这个扇区是不属于任何分区的,不同的分区软件在实际进行分区时开始的位置不一样,但

作者  | 2009-9-3 10:53:08 | 阅读(4884) |评论(7) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 我要留言
 
 
 
留言列表加载中...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018

注册 登录  
 加关注