第五章 计算机中的精灵 最早的操作系统
CP/M是个占用5K内存的操作系统,它为你提供的操作系统功能恰到好处,不多也不少。
——个人计算机软件的开拓者艾伦·库珀
在微机产业的形成过程中,可以称得上一种技术标准的最早的操作系统,实际上在Altair计算机问世之前就已经出现了。
CP/M操作系统并不是几十名软件专业人员经过多年有计划的呕心沥血研究而得出的成果。与早期开发的大多数重要软件一样,CP/M操作系统是根据一个人的思路开发而成的。
1972年中期,加利福尼亚州蒙特里的美国海军研究生院计算机学教授加里·基尔多尔在告示牌上看到一则广告,上面写着“出售微机,价格25美元”。广告中所说的产品是英特尔4004芯片,它实际上是个微处理器,它是世界上最早的微处理器,不过基尔多尔认为它的价格真便宜,于是决定买一个。
虽然许多微机公司的创始人并不具备业界领导者的典型形象,而加里·基尔多尔则根本不想成为这些人当中的一员。基尔多尔从华盛顿州立大学获得博士学位后,便移居加州的帕西菲克格罗夫市。他喜欢这个海滨城市的旖旎风光,那笼罩在薄雾蒙蒙之中的恬静环境使他感到非常舒适。基尔多尔说话温和,充满着令人敬佩的智慧,平时总是穿着随意的运动衫和牛仔裤。他是个嗜图如命的人。当他讲话时,如果想要解释某个观点,他常常会找出一支粉笔或铅笔,用画图来说明问题。70年代初,基尔多尔非常喜欢海军研究生院的工作。他喜欢从事教育工作,因为这项工作使他有时间从事编程工作。他没有特殊的经营技巧,也不想离开学校,比较完全安于现状。
加里·基尔多尔还喜欢摆弄计算机,他对计算机懂得很多,无论在理论上还是在实践上,都称得上是内行。在华盛顿州立大学时,他与另外一个人一直负责伯劳斯(Burroughs)公司的B5500计算机的运行和维护。后来,当该学校购买了新的CDC6400计算机时,由于基尔多尔具备丰富的计算机知识,受到了大家的尊重,因此由他担任采购该计算机的技术顾问。
另一位负责B5500计算机维护的人是迪克·哈姆雷特。他与另外3个人在西雅图创办了一家计算机分时服务公司,公司使用数字设备公司的PDP-10计算机和数字设备公司开发的新软件。开办这个公司的目的是让人们可以远程登录到PDP-10计算机,以便充分利用该计算机的功能。哈姆雷特创办的公司名叫计算机中心公司,即C立方公司(CCubed)。有一段时期,两位10几岁的孩子比尔·盖茨和保罗·艾伦在公司员工下班后就在那里工作,查找数字设备公司的软件中存在的错误。
英特尔4004芯片的25美元价格原来是批量购买价,而且微处理器本身并没有什么用处,它必须装入计算机后才能发挥其作用。基尔多尔买了一份英特尔4004微处理器的说明书,在学校里的大型计算机上编写了一个程序,来模拟4004的功能,然后开始编写和测试4004的代码,以便确定廉价买来的4004芯片究竟能够干什么。
基尔多尔回忆说,他的父亲在西雅图开办了一所导航学校,他总想有一台计算机能够计算导航三角课题。基尔多尔编写了一些在4004芯片上运行的算术运算程序,并且主观地认为他能提供一些父亲可以使用的程序。他摆弄了一下4004芯片,试图了解它究竟具备何种能力,可以达到什么样的运行速度和精度。他发现这种处理器的功能非常有限,但是他仍然喜欢使用它。此后不久他用一些4004程序向英特尔公司换回一个开发系统,也就是一台用4004芯片组装的小型计算机,它实际上是最早的真正微机之一,尽管它不是个商用产品。
1972年基尔多尔参观英特尔公司的微机业务部时,他惊奇地发现这家领先的半导体公司给整个微机业务部划出的一块地方还不到普通人家的厨房那么大。他在那里见到了一位非常聪明的编程员,名叫汤姆·皮特曼,他不是英特尔公司的雇员,与基尔多尔一样,他对4004芯片也很感兴趣,并且已经为它编写了软件。基尔多尔和皮特曼与英特尔公司的员工相处得很好,基尔多尔每周用一个休息日以顾问身份开始为英特尔公司工作。借助这个新职务,他对4004芯片软件又作了几个月的调整,直到他“对该芯片着迷到几乎不能自拔为止。”这时他意识到他将永远不会回去给大型计算机公司工作了。
不久基尔多尔又开始从事与英特尔公司开发的第一个8位微处理器8008相关的编程工作。他采取的仍然是二级软件开发方法,也就是在小型计算机上为微机处理器开发软件,这是盖茨和艾伦使用的方法。与保罗·艾伦一样,基尔多尔先在较大的计算机上编写模拟运行微处理器的程序,然后使用模拟的微处理器和它的模拟指令集,编写在微机上运行的程序。但是,与盖茨和艾伦不同的是,基尔多尔可以利用开发系统提供的方便,一边工作,一边在开发系统上进行测试,以检验自己开发的软件是否可行。
仅仅几个月时间,基尔多尔便在大型机语言PL/I的启发下,开发成功称为PL/M的语言,这是比BASIC更为复杂和巧妙的语言。基尔多尔在他的教室后面安装了软件开发系统,实际上建立了海军研究生院的第一个微机实验室。好奇的学生下课后常常走到教室后面,在开发系统上操作几个小时。当英特尔公司将Intellec-8系列芯片从8008升级为8080,并且为基尔多尔提供了一台监视器和高速纸带阅读机时,这位教授和他的学生便拥有了一台可以与早期Altair计算机相媲美的系统,而这时尚未有人提出Altair计算机的开发思路。
但是,基尔多尔意识到他仍然缺少成功的计算机系统所需的一个重要部件——有效的外部存储设备。当时大型计算机上常用的外存设备有两种,一是纸带阅读机,一是磁盘驱动器。鉴于微处理器的运行速度非常慢,因此纸带存储器就显得太笨拙,而且价格昂贵。基尔多尔打算买一台磁盘驱动器,并且编写一段小程序,以便从舒加特公司那里换取一台磁盘驱动器。这里有一个必须解决的问题,那就是为了使磁盘驱动器能够工作,需要有一个特殊的专门控制器,即一个电路板来处理计算机与磁盘驱动器进行通信的复杂任务。
基尔多尔曾经多次试图设计这样一个控制器。他还试图开发一个接口,使他的计算机系统能够与盒式录音机相连接。但是他发现他的编程能力已经不能解决两台机器之间接口的复杂工程设计问题。控制器的设计项目失败了,基尔多尔认为他完全不适合硬件的开发。尽管如此,在技术上仍然显示了他的远见卓识。直到许多年之后,磁盘驱动器方才普遍应用于微机。最后到了1973年底,基尔多尔找到了他在华盛顿州立大学的一位朋友约翰·托罗德(后来他成立了自己的微机公司),他对朋友说:“如果我们能够使磁盘驱动器运转起来,那么它将成为一个非常有用的设备。”托罗德果然使磁盘驱动器能够在微机上运行了。
与此同时,基尔多尔对软件作了进一步的改进。1973年底,正当他在磁盘驱动器问题上不知所措的这几个月中,基尔多尔花了几周时间用他的PL/M语言编写了一个简单的操作系统。他将它命名为CP/M操作系统,这是英文微机控制程序(Control Programfor Microcomputers)的缩写。虽然CP/M提供了将信息存储在磁盘上时所需的软件,但是它仍需作进一步的改进。
CP/M操作系统的某些改进是在好奇心的驱使下进行的。基尔多尔一方面继续从事教学工作,一方面参与了本·库珀从事的一个项目开发。库珀是旧金山的一位硬件设计师,他曾与乔治·莫罗共同开发了磁盘存储器系统,后来又创办了他自己的公司,即微型化公司。库珀想,他能够开发一种用于星占图的机器,并且一定可以赚大钱,于是他让基尔多尔来帮助从事这个项目的开发。两个人对星占学都没有兴趣,也不相信星占术,认为这都是无稽之谈,不过库珀对该产品已经形成了一定的思路,而基尔多尔则想做一些星宿位置的数学计算。他们也考虑这项产品的开发可能会在商业上取得成功。这样,库珀便开始进行硬件的设计,基尔多尔则负责编写程序,最后他们终于推出了所谓的“星占术机器”,它安放在杂货店里,像电子游戏机那样吃进两角五分钱硬币,然后打印出星占图。在基尔多尔看来,这种机器真是妙极了。
但是结果事与愿违,星占术机器在经营上一败涂地。制造商将这种机器放在旧金山的许多地方,基尔多尔与库珀两个人感到非常得意的机器上的漂亮旋钮和拨号盘却激怒了用户,原因很简单,用户把两角五分钱硬币放进机器,而打印星占图的纸却出不来。基尔多尔与库珀为了排除故障而疲于奔命。基尔多尔后来只能哀叹说,这是一次彻底的失败。
尽管星占术机器开发的结果令人失望,但是这使基尔多尔第一次有机会测试他的CP/M程序的各个部分。在编写星占术机器程序的过程中,他重新编写了调试程序和汇编程序,这是开发软件所用的两个工具,并且他着手开发了编辑器。这些程序是操作系统的基本组成部分。此外,他还编写了一个BASIC解释程序,可以用来为星占术机器编写各个程序。在开发BASIC软件中他学到了一些技巧,后来又将这些技巧教给了他的学生戈登·尤班克斯。
当基尔多尔与托罗德开发磁盘驱动器与计算机之间的接口时,他们交换了关于微处理器潜在应用的想法,但是没有更多地谈论微机的问题。他们与英特尔公司的设计人员仍然认为微处理器将可以用在榨汁机和汽车化油器等设备中。他们考虑推出一种综合性的硬件与软件开发系统,以便促进微处理器在各个领域中的推广应用。基尔多尔对未来微处理器的这些“嵌入式应用”思路无疑是受到了他在英特尔公司中许多同事的启发。在一段时期内,基尔多尔与另外几位编程员使用4004微处理器编写了一个简单的游戏软件。当他们向英特尔公司的头头罗伯特·诺伊斯建议销售这个软件时,诺伊斯拒绝了。他认为微处理器未来的应用领域不是游戏机,而应该用在手表中。
这样,托罗德和基尔多尔在没有创办公司的情况下,便一道销售他们的硬件和软件,他们不是将软硬件作为一个微机系统来销售,而是作为一个开发系统来销售。当基尔多尔在妻子多萝西的鼓励下终于开办了一家公司,并且开始销售CP/M操作系统时,他还根本不清楚自己编写的软件究竟值多少钱。他怎么会知道呢?当时微机软件开发商本来就很少。
起先,基尔多尔将他们的公司命名为星际空间数字研究公司。这个名字很快简化为数字研究公司,这时负责公司经营的多萝西开始使用她少女时的名字麦克尤恩作为公司的名字,因为她不希望客户把她看成“只是加里的妻子”。数字研究公司最早的客户与公司做成了几笔很合算的生意。例如,曾经创办最早的微机公司GNAT计算机公司的托马斯·拉夫勒尔最早购买了一批CP/M操作系统软件。他以90美元的价格获得了将CP/M作为他公司开发的任何产品上的操作系统来使用的权利。但一年之后,CP/M的使用许可证价格上升到了上万美元。
多萝西后来称,1977年与IMSAI公司签订的一个合同是个转折点。在此以前,IMSAI公司一直是以单拷贝方式购买CP/M操作系统的。由于该公司雄心勃勃计划销售数千台带有软盘的微机系统,因此促使它的市场部主任西摩·鲁宾斯坦与加里及多萝西展开了认真的洽谈。最后他以2.5万美元的价格购买了CP/M系统。这比GNAT公司支付的90美元高了不知多少倍,但是鲁宾斯坦却感到心满意足。他认为加里·基尔多尔是个出类拔萃的编程员,但是在经商上他还是个乳臭未干的婴儿。
鲁宾斯坦认为,他实际上从开发者那里偷到了CP/M操作系统。但是基尔多尔的观点却有所不同,他认为与IMSAI达成的交易使得数字研究公司成了一家从事软件开发的专门企业。在IMSAI公司购买CP/M后,其他许多公司也接踵而来。CP/M成了如此有用的一种软件,以至于在IBM公司于1982年推出配有另一种操作系统的微机之前,数字研究公司在软件领域成了打遍天下无敌手的强大公司。能够向数字研究公司发起挑战的编程员这时还在阿尔伯克基的MITS公司中默默无闻地干着自己的工作。