GW-BASIC,当年许多在pc上学编程的人最初接触到的编程环境。
这是微软为IBM开发的BASIC,微软开发的BASIC解释器最大的特点是支持浮点数,苹果早期的BASIC解释器不支持浮点数,后来也花了不少钱从微软手上购买BASIC解释器。
这个BASIC解释器最初应该是放在主板的ROM里面的,如果开机找不到操作系统就会进入ROM的BASIC,后来主板不内置BASIC解释器了,这个程序被搬到磁盘上。
Dos下著名的debug软件,就叫DEBUG,可以直接在上面输入汇编指令并执行,也可以装载一个可执行程序到内存并用汇编指令修改这个文件,因此也可以用来杀毒,用来研究系统,还可以用来做许多事情。
由于DEBUG可以即时往内存中输入汇编指令和保存指定内存的数据到文件,于是在那个年代用汇编语言开发一个小的程序不需要编译器,有人用dos的通管道重定向输入一个文本文件就能生成完整的.com程序,国内DOS上最早的汉字系统之一的2.13汉字系统就是作者吴晓军先生用DEBUG开发出来的。
Unix上的gdb虽然功能很强大,但是我想没人会通过gbd去开发程序,在MMU及各种机制的作用下内存已经不是那么容易随便修改了。
pctools 5.0
早期dos的dir命令是无法显示磁盘里隐藏文件和系统文件的,虽然可以用attrib修改一个文件的属性,可是如果连文件名字都看不到所以也不好改啊;有了pctools这个工具后,查看系统的隐藏文件、把文件隐藏起来变得非常方便,早期的dos计算机病毒还没有太多伎俩通常要隐藏一些数据,就设一些隐藏文件,pctools比较容易发现和清理;pctools还可以恢复一些被删除的文件,简单修复系统、修改早期游戏的存档。
pctools还可以全屏编辑文本文件,修改配置文件非常方便,早期的dos是没有全屏文本编辑器的,只有一个叫 edlin 的行编辑器,不好形容其使用的体验,全屏文本编辑器edit 是后期的带qbases的dos才有。
在当时如果自己的软盘上有一个 pctools那就可以学雷锋为其他pc玩家修理电脑了。
DOS时代最强大的电脑工具软件:Norton,由于DOS和fat文件系统很脆弱,当时大部分严重的系统故障都是由文件系统损坏导致,即使没有计算机病毒破坏,分区表、fat文件系统、系统文件也很容易损坏,Norton工具箱最实用的就是NDD磁盘医生和磁盘编辑器可以修复许多故障和抢救数据。看资料介绍,作者norton被誉为那个年代最了解PC硬件的人。
如果细心观察,Norton的字符界面十分精美与平常看到字符界面不太一样但这确实是字符界面而且显示速度非常快,这里涉及到两个关键的技术:直接写屏与重定义字符集。
“直接写屏”在那个年代是很流行概念,资料比较多,简单说就是不通过调用系统的API(主板的BIOS int 10或dos的 int 21)直接去写显卡的显存实现字符的显示或绘制图形。当时中国的程序员把“直接写屏”这个技术研究得非常透彻,天汇汉字系统的用户应该还记得,天汇在屏幕上滚动输出大量汉字的速度非常快。
“重定义字符集”在当时的资料就比较少,为什么后期的Norton和pctools的字符界面跟平常字符界面不一样,为了说明这个问题,这里要先介绍一下VGA显卡的文本工作模式。
我们平常看到VGA的文本模式是用16bit保存一个屏幕上的字符:8bit设定符号显示的属性可以是闪烁、下划线、前景色、背景色,8bit保存符号的编码,这样的模式下可以表示256个符号,而这256个符号中还包括了一些终端控制符,因此只用这些符号来做用户界面不太够用。
后期的Norton和pctools的用一种当时被称为“512字符集”的办法在不切换到图形模式的情况下在字符界面显示更多的字符用以丰富界面,具体就是额外做了一套字体加载到显卡,占用了符号显示属性中前景色的一个bit用于表示用那个字体,这样就可以表示出最多51个符号,这都是根据VGA硬件规范来的;有了这个数量的符号用来做界面,于是我们可以看到 Norton 的字符做的UI很精致。
时至今日,我们可以在Linux、BSD、苹果的终端上输出 emoji ,合理使用这些符号,可以构建出很漂亮的字符界面而不再需要直接和硬件打交道。
Disk Editor,可以分区表,FAT
在DOS中后期的电脑病毒已经进化到不用文件保存自身和所需的数据而是隐藏在磁盘的扇区里面,这时用查看隐藏文件的方式已经不太容易发现这些病毒,用 Norton 工具箱比较容易发现一些蛛丝马迹,当然杀毒还是需要用杀毒软件。
Norton Disk Dortor (Norton 磁盘医生)
Norton工具箱可以生成一张修复软盘里面放有NDD等软件方便随身携带再加上一张装有杀毒软件的软盘,在那时就可以到处帮朋友修理电脑,只要不是硬件坏了都能让其重新工作起来,数据通常也能抢救回来很多,那时的电脑病毒一般都是破坏硬盘分区表和文件系统没有彻底抹掉用户的数据,不像没有现在的勒索软件那么狠,先加密然后抹掉用户的数据。
整理磁盘碎片的Seep Disk
后来,开发pctools的Central Point 和 norton公司后来被 symantec 并购。
这是norton commander简称nc(不是现在常说的netcat),用来管理文件很方便,Linux/BSD上的GNU Midnight Commander(mc) 的界面就是克隆自 norton commander。
玩游戏作弊用的FPE,虽然在Linux下用 ptrace 也可以修改另外一个进程的内存,但相对几乎没有任何内存保护的dos来说那个年代编程的自由度更高。
拷贝软盘,交换软件/游戏必备软件之一:HD-COPY;另外一个软件是arj,打包压缩,类似于今天的Linux下的tar。
HD-COPY最大的特色之一是读盘,据说能够轻松复制一些防盗版的软盘,当然这个功能对付不了我们中国的工程师,用HD-COPY来复制国产软件kv200这些软盘是不行的。
HD-COPY另外一个特色是把软盘多格式化一些扇区和磁道,这样可以把一张普通的1.44M软盘格式最高化为1.722M,虽然是多了200多k字节,在当时可是非常实用的功能。
据说HD-COPY的作者后来加入了FreeBSD成了大佬级人物。
dos后期的全屏文本编辑器EDIT
dos后期内置的QBasic,据说是微软创始人之一的Paul Gardner Allen退休前最后一个作品,前面的EDIT其实是QBasic其中一部分,至少是同一个框架开发出来的吧。
Norton desktop
谨以此文为本人的开源项目GNB还在开发中的字符管理界面作宣传并向前老一辈开发者致敬。
GNB是一个开源的去中心化的具有极致内网穿透能力的通过P2P进行三层网络交换的VPN。
来源:oschina
链接:https://my.oschina.net/gnbdev/blog/3191438