第二卷
第一章 一小步

“你们从老板手里领的工资一分不少不说。”范含说,“还整天无所事事地在我家晃悠,就当是疗养度假了?”
范含的计算机上,有许多软件都属于必备,每台机器都会率先安装。能够摆脱运行环境的困扰,“超越了系统”的还真不多,Emacs就算是一个。
然后下一个。
“别谢我,你还是去谢摩西吧。”巴杜瓦说,“是他接通的。”
“啊……我知道。”女接线员说,“就是拍A片的那个范含吧。”
“呃……是啊……怎么每个人都记着这种事呢……咳!”范含很郁闷,“我还干过别的呢!”
不优秀才怪,范含想,绝对的经典游戏,哼!
“这是我个人的一小步。”范含抬起右脚踩在机箱上面,“却是电子行业发展历程的一大步!”
“帮我订机票。”范含说,“你也听见了,我要去波士顿。”
在Windows默认安装的“C:\Program Files\XEmacs\xemacs-packages\lisp\games\”目录下面,有个“tetris.el”,就是用Emacs Lisp写的俄罗斯方块游戏,旁边的“tetris.elc”是预编译的代码,调用的时候直接执行这个。
“你听见了?最近我就过去,时间确定了再和你联系。”
接下来的一个星期里,范含有了一种返老还童的感觉。
音乐响起,范含兴高采烈地鼓掌,蓝蓝没精打采地鼓掌,各种彩带漫天飞舞,一时间机房内热闹非凡。
“那是当然,那是当然。”
必须自己打穿孔纸带或者卡片。
※※※
注1:1963年,CDC公司推出了CDC6600,是当时最强大的计算机,售价却只有750万美元。1969年推出改进型CDC7600,公认是第一台超级计算机,售价同样只有750万美元。由于CDC公司的这两种重头产品均为巨型机天才塞缪尔克雷(Seymour Cray)设计,整个六十年代,IBM在高端市场只能退避三舍。1972年克雷离开CDC,建立自己的公司,只生产巨型机,同样是世界顶尖水平,IBM所不能及也。
内存有“4k”,也就是4096个12位的字,最大可以寻址“32k”。
“预备……”摄影师喊,“……一……二……三!”
太小了。
注4:俄罗斯方块是苏联人阿列克谢·帕基特诺夫(Alexey Pazhitnov)于1985年6月在莫斯科科学计算机中心工作的时候发明的,当时率先在一台Electronica 60计算机上实现的,后来由瓦丁·格拉西莫夫(Vadim Gerasimov)移植到PC上……这些大家可能都知道。
不管怎么说,当时的大环境还是很有利于计算机知识的普及,至少领导们表面上还都是给娃娃们创造好了许多有利的条件。范含当年可是没闲着,眼看手敲了不少“趣味小程序”这类东西。
※※※
开始的时候,Basic也用过一阵子,后来主要是蓝蓝在用,自己有事就用Focal了。
早期机器的构造都比较随意,或者说另类。
每个指令字也是12位,7位地址,两个1位的标志,3位的操作符。
“好吧。”范含说,“我就想随便找个人问一下,上星期寄给你们的东西收到了么?”
仔细再看看,其他的都是一些鸡毛蒜皮的小事,再也挖不出什么令人兴奋的功能了。
中国大陆80年代的计算机热,可能如今的许多程序员都有所体验。各种报刊杂志上面到处都是代码片断和评注,还有满地的小技巧、小诀窍什么的。不光是专业期刊,一般的面向青少年的科普画报上面都有不少,毕竟有一位老人家说过:“计算机要从娃娃抓起嘛”!
“这件事最有名啊。”女接线员笑了,“我们都知道你干过许多别的事。”
“嘿嘿,呵呵。”范含回答。
这台PDP-8也类似,Basic和Focal也都是在内存里面执行的解释器,内存里面只能有一个程序。唯一的区别就是PDP-8有操作系统,不需要调用解释器就可以从外部设备上读和-图-书取程序载入内存。
怎么才能把写好的代码弄进计算机?
计分方式很简单,每出现一个方块组件加一分,每同时消掉n行加2的n次方分……一行两分,两行四分,三行八分,四行十六分。每消掉一百行算过一关,时间间隔会缩短一点。
没过多久,一个男声出现了。
“下回来别忘了带点东西。”范含说,“空着手上门像话么?”
“可能是哪里看的,也可能是别人说的,我听一耳朵就记住了。”范含说,“先让我玩会儿吧。”
“喂!我还在。”电话那边回答。
只有打着“改进游戏”的旗号才能坐在打字机前面,蓝蓝站在后面盯着,保证范含只是改而不是玩。
“呃……没想到你还懂希腊文?”
在这个年代,无论谁想买一台计算机,只会想到三个公司:CDC、IBM和DEC。他们占据的主要市场分别是巨型机、大型机和小型机(注1)。
“我一张,蓝小姐一张。”范含解释,“你们俩两张。”
“过奖,过奖。”范含回答。
范含用过的第一台计算机是苹果二,Apple Ⅱ,4k字节内存。当时用的时候不觉得多难受,后来偶尔怀旧的时候,找个模拟器试图重温旧梦,才觉得不爽。
※※※
送走公证员,还剩下一个摄影师。
类似的话还有不少,比如当时的“足球要从娃娃抓起”,最近的“性教育要从娃娃抓起”等等。说归说,做归做,效果如何大家心里有数。这些都是提高人口素质的东西,不是“阶级斗争,一抓就灵”。搞得好不好还得看“娃娃”们自己,光着急是不管用的。
“最近就行,具体时间随你便。”范含说,“只要在一架飞机上就成,订四张票。”
太弱了,太弱了!
别的,也没什么了。
“啊……您好您好。”范含等两个人说完,赶紧去搭理接线员,“我是范含,洛杉矶的范含。”
“看来我就不该写这个东西出来!”
机器嗡嗡作响。
“哈哈,哈哈。”范含口风一转,“如此说来,我寄过去的那份东西肯定是收到了吧?”
“喂?是你么?艾萨克?”范含问,“帮忙接通一下,长途话费很贵的。”
“贵公司的悲天悯人的胸怀才是令人钦佩啊!”范含反过来拍马屁,“贵公司真是急群众所急,想群众所想啊!能让全天下穷苦人圆了计算机的梦,这份功德实在是造多少层浮屠都比不了的啊!”
“干哈?”巴杜瓦说。
“喂?”女接线员很奇怪。
只不过,CPU只有三个寄存器,确切地说,两个寄存器零一位。
DEC的PDP系列中,最便宜的应该是PDP-11,1970年制造,只卖一万美元多一点,它也是销量最大的一种,总共卖出去超过六十万台。真可惜,现在赶不上。PDP-11是DEC第一种,也是唯一的一种16位的计算机。第一台运行“真正的”Unix的计算机就是一台PDP-11。到底是PDP-11的流行带动了Unix的流行还是Unix的流行带动了PDP-11的流行,谁也说不清。
“喂喂喂。”范含说蓝蓝,“工作时间怎么不干正事。”
“行。”佛赫热说,“订好了就和你联系。”
“不懂,我就知道这一个词。”范含说,“先让我玩会儿。”
“呵呵呵……嘿嘿嘿……”范含说,“那就是很优秀了?”
范含冥思苦想,也琢磨不出能干些什么,看来自己已经被惯坏了。由俭入奢易,由奢入俭难啊!到了现在应该艰苦奋斗的时候,只有束手无策的份了。
“说实在的,当我知道您买了一台PDP-8的时候,确实是非常吃惊。”
CPU构造不复杂,其汇编语言也复杂不到哪里去。
Fortran很少碰,汇编更别提了。
“因为我正在构思几篇科幻小说,里面涉及到计算机的内容。”范含回答,“以前没写过这类题材,害怕写出硬伤,丢人现眼。”
“闭嘴,艾萨克!”
启动Apple Ⅱ之后就直接进入了ROM Basic环境,可以直接写Basic代码,输入个“Run”就能运行内存中的程序。当然,内存里一共只有一个程序。当然也www•hetushu.com•com可以读软盘驱动器,只不过对于外部设备的操作都是包含在Apple Basic内部的函数。
以范含的经济实力,CDC和IBM是别想了,也就能在DEC的PDP系列里面找找。实际上这也是现在美国绝大多数公司、学校、医院等机构——或者用国内通常的说法“企事业单位”——的财务情况。看准这一部分市场,正是DEC成功的原因。
范含深以为然。
“喂?”女接线员继续奇怪。
没人说话。
蓝蓝成天目瞪口呆,对于范含的“数学水平”提高之快,只有佩服的份了。只不过,“眉眼含情,芳心暗许”的情况没有出现,毕竟都老夫老妻了,范含到底是什么货色早就清清楚楚。
八条基本指令里面有一条“IOT”,输入输出的操作,对于不同的设备,又有一些不同的子操作。这些都是用来转移数据,和用户交互的,对于软件功能的作用不大。还有一条“OPR”——操作符为“111”——用来执行一些扩展操作,或者说是“微代码操作”(Microcoded Operations)。根据一个标志位的不同,分为两个指令组,共十九条。
“呃……为什么这个游戏要叫‘Tetris’呢?”蓝蓝顾左右而言他。
现在本来就是斤斤计较的年代。地球照样转,生活照样得继续。
如今统统回忆起来,一个一个地在PDP-8上面实现一遍。当然,机器不一样,具体的细节当然也不一样,这也是唯一有挑战性的部分。
俄罗斯方块,简约而不简单……
范含平时用的是最流行的版本:“XEmacs”,在自己的Windows、Linux、还有Mac OS X上都装了Xemacs的移植版本。
“呃……你怎么就偏偏知道这一个词呢?”
算了,不管汇编了,谁也不是上来就先学汇编。
“收到了,收到了。前几天就收到了。”
※※※
“喂!我是PDP-8的产品经理。”电话那边说(注3)。
“有什么正事好干?”蓝蓝手不离打字机,“啊!看你!一说话我这局死了吧!”
PDP-8带了几个游戏,都是名叫汉诺塔,足球,高尔夫什么的字符游戏,运行起来满屏幕全是加号、减号、星号、井号。
好在范含并不是一根筋,立刻就拿定主意——升级硬件!
高中的时候,数学老师曾经在课堂上评价过那些技巧性很强的三角函数变换题和平面/立体几何证明题:“没用,就是什么用也没有,纯粹是数学游戏,练练脑子,算着玩。不过,你们要是没练过这么一回,以后碰上有用的东西也不会用。”
“喂?”范含打招呼。
“当然了,代码嘛,有一行不对不就不能运行了嘛!”范含说,“说到底这也是我的心血结晶嘛!我这一阵子头悬梁,锥刺股,三更灯火五更鸡,真是相当辛苦啊!”
有什么用?这些东西能有什么用?
范含就算明知道这是事实,仍然挡不住这种巨大的心里落差,接下来的一段时间极为消沉,最初启动机器的兴奋已经烟消云散。
这倒不是说PDP-8的汇编语言有多难,恰恰相反,就是由于它不难。
※※※
别的……Basic,这时候还非常简单;Focal,另一种解释语言,比Basic强一点,是主要开发语言。还有就是Fortran了。范含是数学系的人,一年级的时候第一门程序设计语言课就是Fortran 77,不像其他专业的学生先学的C。虽然这里的Fortran II和Fortran IV稍微老了点,不过还是能用。
不过敲打这些东西的过程确实很有意义,至少对于现在的蓝蓝很有意义。
所谓Electronica 60计算机是苏联制造的,其实就是DEC PDP-11的克隆机种……呵呵,这个知道的人不太多吧……
除了字长以外,二十一世纪的微波炉里面的芯片都比PDP-8的CPU要复杂。
PDP-8是12位的机器,就是说,每个字(word)有12个bit。
再读一遍说明书,发现事情并不算太坏。
一个是“AChttps://m.hetushu.com.com”,the Accumulator,累加器,也是12位。
那怎么办?
“喂?”
“别问我。”蓝蓝没回头,“我不想夸你。”
“别谢我。”佛赫热说,“这种场合我就是一跟班。”
范含实在是按捺不住心中的怒火。这台机器简直就是垃圾!
巴杜瓦和佛赫热成天往这里跑,范含也不在意,每次都兴致勃勃地让蓝蓝演示自己最近回忆起来的代码,然后在二人组言不由衷地称赞之后,很没风度地纵声狂笑。
电话通了,一个悦耳的女声传来:“您好,DEC。”
蓝蓝成天霸着机器不让范含用,为了自己玩游戏。
和MM是没有道理可讲的,范含深刻地认识到了这一点。
“真搞不懂你这么小题大做干什么。”蓝蓝说,“还非得请个公证员过来。”
“反正你们也得跟着去。”范含说,“一次都订了就得了,省得麻烦。”
还不够塞牙缝的。
“这是希腊文,意思是‘四’,一二三四的四。”范含说,“让我玩会怎么样?”
“让我玩会儿。”范含可怜巴巴地说。
“您好!您好!”
“呃……这个嘛……会有一个圆满的结果的……您什么时候来波士顿一趟?咱们好好谈谈?”
配套的技术资料倒是不少,除了用户指南、使用手册、各种说明书之外,就是几本教材,关于PDP-8上的Basic、Fortran II/IV,Focal,以及汇编语言的教材。
“我们的也管?”巴杜瓦问。
※※※
说是吻,这遣词造句太温和了点。实际上,范含如此用力以至于将蓝蓝腮帮子上的肉嘬起一块。
“为什么是四张?”佛赫热问。
“好吧好吧。”佛赫热说,“下不为例。”
“喂?艾萨克?在么?要在的话就说句话。”
差不多看完,范含心里有了底,还能玩得转。
送走摄影师,机房里就剩下男一号和女一号两个人。
于是,这一张载入史册流传千古的照片,包括范含猥琐的动作、蓝蓝扭曲的面孔以及一台PDP-8的照片,就这样诞生了。
嗯,现在舒服多了。
每个程序基本上不超过一百行,完成一些有趣的事。
对于搞嵌入式开发的朋友们来说,这种情况司空见惯。但是嵌入式开发面对的都是一些例行公事,不需要实现多复杂的功能。范含买的PDP-8是一台真正的通用计算机,正充满了雄心壮志打算大干一番事业。这下恐怕又要回到斤斤计较的场合斤斤计较地写代码了。
上门安装调试的工作人员也是非常奇怪,从来也没有人买一台计算机放在家里。本来装好之后应该对相应的操作员进行培训的,没想到范含边上看他们操作,看着看着就会了。系统操作本来就没什么,一些命令,有的命令有一些选项什么的,比起范含用过的系统而言,相当简单,很快就成了熟练工种。
“不扯上你怎么录音?”巴杜瓦说,“让国会知道了又是一场麻烦。”
这也太简约了吧!
况且PDP-8根本没有图形模式,想要单独点亮某些像素,非得用汇编钻进系统内部才行。这一点就排除了范含想到的大部分的候选者。
“为什么?”
“啊……多谢多谢!”范含笑容可掬,“真是麻烦您了!”
不需要动多少脑筋,就能下决心:俄罗斯方块。
——————————
又花了几千美元,把内存加满——32k,还买了电传打字机,冒充键盘用。
“谢谢你啊,艾萨克。”范含说,“有空请你吃饭。”
“你去找摩西吧。”巴杜瓦说,“我不管。”
“谢谢你啊,摩西。”范含说,“有空请你吃饭。”
“是啊,是啊。”范含回答,“虽然说我的名声不怎么样,但是小小的名声也是名声嘛。随随便便就败坏了实在是不大好嘛。”
“哼!”
自己写!好歹自己也算是个程序员。
第二便宜的,也是销量第二的,就是这种PDP-8了,售价一万八千五百美元,一共售出五万台以上。范含一眼就看上了这种当时极为火爆的世界上第一台小型机,准备买来当PC用。虽然功能有点太弱了,不过考虑到如今的历史局限性,还是委屈委屈,将就些吧。
“太棒和-图-书了,不光PDP-8的工作人员,就连其他生产线上也知道了。全公司有几百号人都在使用您的程序啊,上班也用,下班也用,甚至惊动了公司高层呢!”
“找我干嘛?”佛赫热说,“这种场合我就是一跟班。”
范含在听到“二”的时候,伸左手搂住蓝蓝,把嘴撅过去在蓝蓝右脸上一吻。
运行通过了就把源代码打印出来,有的还做成纸带或卡片,贴个标签塞进箱子里。
回顾半个月的生活,基本上就是练练Focal,毕竟这是新的东西,以前从来没用过的。
正统的“GNU Emacs”版本中,运行的俄罗斯方块看起来就像是范含写的第一个实现,“方块”看起来是长方形的。因为范含用一个全白的字符表示一个方块,字符么,当然是长的。旋转的时候看着比较别扭,不像正方形的那么爽。
“OK。”范含等着。
“OK。”范含说。
这个游戏有多经典不用说了,实现起来有多简单也不用说了,对系统配置的要求有多低更是不用说了。
所谓改进,就是用并排的两个字符表示一个方块,仅此而已。别的根本没有什么改进的余地。
“喂?”范含叫那个经理。
“那就好。”范含说,“我去邮局的时候,还被人骂了一顿呢。”
每次二人组都假惺惺地表示抱歉,范含也每次都假惺惺地表示大人不记小人过。
该干的准备工作都干完了,条件已经优厚得让其他程序员眼红了,再做不出东西来,绝对是自己不灵,怨天尤人也没用。
“呃……你怎么就这么虚荣呢?嗯?刚知道一个词就拿出来显摆?嗯?名字多难听?嗯?就不会换个好听点儿的?嗯?比如‘范含方块’什么的……”
启动Xemacs,按“Alt+x”,然后输入“tetris”,呵呵,俄罗斯方块运行了。
“好啊,我这就过去。”范含一口答应,“艾萨克?你在么?”
PDP-8,简约而不简单……
终于,范含终于想不起什么东西了,这意味着,“儿童计算机冬令营”的活动到此结束。
“你们学语文,包括外语,只不过听、说、读、写,四种本事而已。听别人说话好听,自己未必说得出来;看别人文章好看,自己未必写得出来。”
即便如此,范含还是被自己的这个简陋的,拿到二十一世纪会被同行嘲笑的作品赶出了机房。
不过,PDP-8毕竟还有“全屏幕文本”的显示方式,可以在20行80列的显示器的任意一行一列显示任意一个字符。自带的那些字符游戏全部都是这么实现的。
3位的操作符,最多也只能有8条指令(注2)。
“范先生的创作态度还真是认真啊。”
“那就是一人一顿了。”巴杜瓦说。
注3:DEC火起来之后,像许多新兴公司那样遇到了管理瓶颈,一段时间非常混乱。总瓢把子奥尔森决定开始改革,推行了一种“矩阵理论”的管理模式:每条生产线由一名经理负责,开发、销售、盈亏都是经理的事;所有生产线共享公司的销售渠道、生产资源等等。改革的春风吹到之处,DEC一片欣欣向荣。
“本来我们早就知道范先生是出色的作家,实在是太出色了,诺贝尔奖指日可待呀。”
“呵呵,嘿嘿。”范含回答。
“世界上第一台个人计算机,啊不,第一位使用计算机的个人,啊也不,第一台由个人使用的计算机……”范含说,“……就要启动了!”
“范先生还真是小心谨慎啊。”对方说,“对打印出来的程序代码还这样重视。”
“干嘛?”蓝蓝问。
“行,知道了。”
“因为我拿着几页纸也让人家打包裹。”范含说,“还挂号,还加急,邮局差点就不同意呢。”
“红袖添香夜编程”的美梦破灭之后,范含决定拉蓝蓝下水。在“名师”的言传身教之下,很快世界上就又多了一位“女数学家”。
“几百号人嘛……呵呵。”范含说,“那可是几百份许可证哟!”
这下子能干的事多了一些,范含心情稍微好了点。
“现在看来,范先生的数学天赋也是非常了得,真是能者无所不能啊。”
“你觉得这个游戏怎么样啊?”范含拖长声用期待肯定回答的口气问蓝蓝。
和-图-书“嗨、嗨、别大言不惭了。”蓝蓝一边记录一边说,“这种废话也值得我记录?”
太有个性了。
想找一个这种机器能跑得起来的,并且自己也喜欢玩的游戏确实有点困难。这类游戏一般都得到一个很高,同时也是很俗的评语:超越了时代。
除了培养娃娃们对计算机的兴趣之外,确实什么用也没有。
“是我,是我。”范含回答。
“您就是范先生吧。”
“喂?”女接线员更奇怪。
干什么事都得劳逸结合,编程也不例外。况且这一阵子的“冬令营”,对于蓝蓝还是很有吸引力的,一直抱着打字机敲啊敲啊的不觉得累,但是范含却一点也兴奋不起来,毕竟这些程序太幼稚了。
“合起来请一顿也成。”范含说,“我当然没意见。”
这些都是传统游戏的“电子版”,而不是“电子游戏”。
注2:现在搞嵌入式开发的朋友们都听说过PIC芯片吧,能耗超低,就是——只有一个累加器。稍微复杂点的功能就会写的头大如斗,呵呵。PDP-8也是只有一个累加器,程序计数器是用来存放指令的,主角想拿汇编干点什么也是头大如斗,不过比起用PIC来要好多了,毕竟指令多了不少。
“再见。”
“咦?这个?”对方显然是没听懂这个典故,不过无所谓,只要知道是好话就行了,“真是惭愧啊,惶恐啊,我们做得还不够好啊,今后还需要继续努力啊!”
“那才难听呢。”范含说,本来“俄罗斯方块”就是俗称,因为是苏联人发明的(注4),“先让我玩会儿,马上就还给你。”
“少说废话吧。”佛赫热说,“哪天?”
一个是“PC”,the Program Counter,程序计数器,12位。
“来来来。”范含扯着蓝蓝站在机器旁边,“咱们合影留念。”
太少了。
“差不多也没我事了吧。”公证员说,“过来签个字我就闪人了。”
范含算是见过“大场面”的人,对这些游戏根本就看不上眼。
“当时我就纳闷,为什么您会想起买一台计算机呢?”
“应该是已经寄到了吧……”女接线员说,“经理说过,一旦接到你的电话就直接转过去。请稍候……”
“赶紧,赶紧。”蓝蓝说,同时继续记录,“早点说正事。”
电话里什么声音都没有,连忙音都没有。
这些都不是问题,范含早就有了心理准备了。
还有一个“L”,Link,只有一位,通常用来当作AC的前缀,共同表示一个13位的值。
“哪里,哪里。”范含回答。
“再见。”
“没想到啊,范先生还是个出色的数学家。”
作者不知道当时PDP-8的经理是谁,也不想知道。本书不是网游类型,不需要满世界找活人,必须满足条件剧情才出现。今后的创作也尽量不涉及历史人物,一旦涉及了也尽量不改变其命运。毕竟现在看起来,IT发展史就是这么回事:大家自由竞争,看谁少犯错误了……随便什么人抖起来都有可能。
“不扯上你怎么办事?”巴杜瓦说,“我们是不对内的。”
别的都好说,除了汇编,看的范含心直往下沉。
“有烟抽,有茶喝,偶尔还能蹭顿饭。”范含说,“这种好事上哪儿去找?”
“今天,1967年1月1日,星期日,丙午年庚子月乙丑日。”范含继续说,“是一个值得后世历史学家大写特写的日子。”
4k内存能干什么?
“你们对我的程序感觉怎么样啊?”范含问。
“很遗憾,你已经写出来了。”蓝蓝重新启动游戏,“刚才电话里不是还打算拿出去卖钱么?”
要是二十一世纪,一万八千美元可以攒一个什么样的系统呢?(留给读者的课外练习:第一题,当时的一万八千美元相当于现在的多少美元?第二题,这些美元可以采购什么样的软硬件组成什么样的系统?——没有标准答案,请大家敞开了胡思乱想……呵呵呵……嘿嘿嘿……)
“范先生的职业道德还真是令人钦佩啊!”
“呃……我还没说完呢!你这种不求甚解的学习态度很是不端正嘛!嗯?去!外边反省去!我先玩会儿!”蓝蓝说,“……啊对了,拿瓶Tittel进来。刚才说这么多话,我渴了!”
上一页