TX-0放在26号楼,在二楼的电气研究实验室(RLE)里,RLE正好在一楼计算中心(这里放有IBM 704计算机)的上方。RLE很像一艘过时宇宙飞船的控制室。那台TX-0计算机(有时称为Tixo)在当时算是小型机,因为它是第一批使用手指大小的晶体管(而不是手掌大小的真空电子管)制造的计算机。尽管如此,它(还有与其配套的重达15吨的空调设备)还是占据了房间的一大半空间。TX-0系统连接到几根又高又细的架杆上,看上去好像是粗制滥造的书架一样,它的电线互相缠绕在一起,此外还有一排排整齐、如小瓶子般的容器,里面都插着晶体管。另一个架子上的固体金属门上,冷冰冰地标着各种规格。这几个架子对面是L型控制台,这是这艘H.G.Well宇宙飞船的控制面板,操作员可以把胳膊肘或资料放到它的蓝色台面上。L型控制台较短的一侧立着一台Flexowriter电传打字机,它很像专用打字机,其底部固定在军灰色的支架上。上方是一个个箱子形状、涂成公共设施那种黄颜色的控制面板。面向操作员的箱子侧面有几条标准刻度,还有几排四分之一英寸的灯闪烁不定,另外还有一些钢制拨动开关,大小要比米粒大一些。最妙的是,还有一台圆形、呈烟灰色的阴极射线管显示器。
TMRC的人一下子被震住了——这台机器不使用数据卡片。用户首先要用那台Flexowriter电传打字机(旁边的屋子里还有几台同样型号的电传打字机)将程序“打”到一根很长很细的纸带上,然后用读取器将纸带上的程序读入计算机,接着就可以坐在那里等着程序运行完。如果程序出了问题,你马上就会知道,并且可以利用某些开关或通过检查哪些灯正在闪烁来找到错误。这台计算机甚至还有一个音频输出装置:程序运行的时候,控制台下方的扬声器就好像一个未经调谐的电风琴,用带有杂音的音符播放一段乐曲。这件“乐器”上的和弦随着每一微秒读取的数据而变化:在熟悉了这段曲调之后,你甚至可以听出你的程序已经运行到哪一步了。即使Flexowriter打字机那噼噼啪啪的噪声再嘈杂(这些声音可能会让你觉得自己正置身于一场机枪激烈交火的战斗中),你也一定要辨别出那些声音。
更加令人惊喜的是,由于计算机提供了“交互式”的功能,并且用户似乎可以有一段时间自己操作这台TX-0,因此你甚至可以在计算机旁边修改程序。这太不可思议了!
世上绝对没有任何方法可以让考托克、桑德斯、萨姆森和其他黑客远离这台计算机。幸运的是,TX-0计算机旁边似乎没有像IBM704计算机周围弥漫的那种官僚作风。没有多管闲事的牧师。负责TX-0的技术员是一位精明、满头白发的苏格兰人,名叫约翰。麦肯锡。虽然他的职责是确保研究生和那些参与政府或企业资助项目的人能够正常上机,但他也默许TMRC那些开始在电器研究实验室转悠的人使用这里的TX-0。
萨姆森、考托克和一名叫鲍勃。瓦格纳的大一学生很快就发现,一天当中到26号楼来的最佳时间就是晚上,因为任何正常的人都不会按每周五贴在RLE实验室空调旁边的上机预约单所写的那样在这个时候跑来上机一个小时。针对TX-0计算机有一条规定,那就是要24小时开机——当年,如果计算机整晚闲置,就属于极大的浪费。此外,一旦关机,重新启动计算机的过程非常麻烦。于是TMRC的黑客(不久之后,他们就自称为TX-0黑客了)就改变了自己的生活方式来适应这台计算机。他们尽可能地占用所有大段上机时间,但同时也不放过“零星的时间”——他们在夜里也常常抱着一线希望到实验室来看看,希望某个预定了凌晨3点时间段上机的人还没来……
“哦!”假如到了上机时刻表上安排给某人的时间,但他还没有来,再过一两分钟后,萨姆森就会高兴地说:“这点时间绝不能浪费!”
这种时间好像从未浪费过,因为黑客们几乎无时无刻不在那里等待这样的机会。假如他们没有在RLE实验室等着天上掉馅饼,那么他们就会在TMRC隔壁的教室里(也就是Tool Room)玩萨姆森发明的有点类似于Hangman猜字的游戏,该游戏名为come Next Door。他们一边玩儿一边等待着在TX-0旁边的眼线来报告,看是否有人该来上机但却没来。黑客们建立了一个情报网,让这些眼线提前告诉他们哪段时间计算机可能会空闲。假如某个研究项目没有及时准备好程序,或者某位教授病了,那么这份情报就会被送到TMRC,而黑客们便可以坐到TX-0前,屏住呼吸,准备一头扎进控制台后面的世界里。
虽然杰克.丹尼斯原则上负责实验室的运转,但当时他还有教学任务,并且愿意将业余时间拿来编写TX-0运行的程序。丹尼斯扮演着黑客们慈祥的教父这样一个角色:他会亲自向他们简单地介绍一下这台计算机,指点他们朝着某个方向努力。每当看到黑客们异想天开的程序代码,他总是忍俊不禁。丹尼斯对管理工作一点也不感兴趣,因此他很高兴地把管理大权交给约翰。麦肯锡。麦肯锡早就看出,TX-0提供的交互式功能可以产生一种全新的编程方式,而黑客们正是摸着石头过河的那批先驱。因此他并没有制定太多的规矩去规范上机行为。
1959年宽松的氛围对那些迷途的人来说是非常宽容的。像彼得.萨姆森这样的科学迷,他们总是对一切东西都感到好奇,他们会探索MIT每间实验室中的未知迷宫。空调的噪声、声音输出装置以及Flexowriter电传打字机的声音都会吸引这些探索者,就好像小猫探头探脑地窥探篮子里的线团一样,他们也会伸长脖子朝实验室内东张西望,想探个究竟。
彼得.多伊奇就是这样的人之一,他不属于这个实验室。早在发现这里有台TX-0计算机前,多伊奇便已经对计算机深深地着迷了。最初,他随手捡了一本不知谁扔掉的手册,介绍的是一种专门用于计算的晦涩难懂的计算机语言。书中有关计算机指令的某些规律吸引了他:他后来说那种感觉就好像是艺术家发现了最最适合他的那种创作方法,那是一种自己也说不清楚的、超越一切的认知能力。这里就是多伊奇的舞台。多伊奇努力写出了一小段程序,并用某个牧师的名字预定了上机时间,在计算机上运行自己的程序。仅仅几周的时间,他的编程能力便已脱胎换骨了。那年他才仅仅12岁。
多伊奇性格内向,数学能力出众但对其他事情没有自信。他因缺乏运动而体重远远超过正常标准,但这并不妨碍他成为一名高智商的实干家。他的父亲就是MIT的一名教授,多伊奇正是利用这一点优势得以随意出入各个实验室。
他能对TX-0感兴趣确实让人觉得不可思议。他头一次踱进这间小小的“KlugeRoom”(“Kluge”是一件造得不怎么好看的设备,但是运转起来却没有问题,这让人觉得有些不合逻辑),这里有三台没有和计算机相连的Flexowriter电传打字机,可以用这几台打字机将程序“打”到纸带上以便随后输入到TX-0计算机中。多伊奇在旁边看了一会儿别人怎样将程序“打”到纸带上,然后连珠炮似地向这个可怜的家伙提了一连串的问题,都是关于隔壁房间看起来怪怪的那台小型计算机的。然后,多伊奇径直走向那台TX-0计算机并仔细地端详起来,还将它与其他计算机的不同之处记录了下来:这台计算机体积更小,它有一台CR T显示器以及其他精致的设备。于是他当即决定要做进一步的行动,就好像他理所当然应该这么做似的。多伊奇拿了一本手册,并且没有多久,他谈起计算机来便头头是道,让别人不得不刮目相看。最后,他终于获批可以在晚上和周末到此上机,编写他自己的程序了。
麦肯锡担心可能有些人会有不满情绪,抱怨他在举办某种夏令营活动:这个穿短裤的小孩,即使伸着脖子也还没有TX-0的终端机高呢,但他会盯着“官方授权用户”(也可能是一名高傲的研究生)用Flexowriter输入的代码,用自己尖声尖气、尚未发育到青春期的嗓音说着什么,如:“你把这里的贷方数据搞错了……你应该在那里用另外一条指令。”接着那位自以为是的研究生便会勃然大怒——这小孩是谁?然后朝着他厉声呵斥,让他出去到一边玩儿去。可每次彼得.多伊奇的忠告最后都证明是正确的。多伊奇也会不知天高地厚地宣称自己要着手写一个比当前正在使用的程序更好的程序,然后他还真的就去做了。
萨姆森、考托克和其他的黑客因彼得.多伊奇出众的计算机才能而最终接纳了他,他值得这些人平等相待。但多伊奇在“官方授权用户”中却不那么受欢迎,尤其是当他坐在那些人后面随时准备指出他们在Flexowriter上犯的每一处错误时,更是如此。
“官方授权用户”通常都乘坐班车来此地上机。他们运行的程序是有关统计分析交叉关联和细胞核内部构造模拟等课题的。这些都属于应用的范畴,对那些用户来说不是问题,但对黑客来说,绞尽脑汁考虑这样的问题毫无意义。黑客考虑的是转到TX-0控制台后面看个究竟,就像绕到飞机的节流阀后面看看其工作原理一样。或者,用喜爱古典音乐的彼得.萨姆森的话来说,用TX-0进行计算和弹奏一件乐器一样:你要用一件昂贵得离谱的乐器即兴创作、编排并(像1英里外哈佛广场上那些“垮掉的一代”那样)肆意地演奏。
杰克.丹尼斯和另外一位名叫汤姆。斯托克曼的教授共同设计的编程系统令黑客们得以充分发挥自己的能力。当这台TX-0被送到MIT的时候,它已非完璧,因为它在林肯实验室它就经过改装了:其内存锐减至4096个“字”,每个“字”有18位(一个“bit”就是二进制数字的一位,要么为0,要么为1。这些二进制数是计算机唯一能识别的内容。一串这样的二进制数便构成了一个“字”)。此外,这台TX-0几乎没有配备任何软件。因此,杰克.丹尼斯甚至早在他将这台TX-0介绍给TMRC成员之前就一直在编写“系统程序”,即帮助用户使用计算机的软件。
丹尼斯首先要编写的是汇编程序。这种软件是用来将汇编语言翻译成机器语言(由二进制数0和1组成)的工具软件,其中汇编语言用三个字母的缩写符号代表发送给机器的每条指令。TX-0计算机的汇编语言十分有限:由于在设计之初,每个18位的“字”只能使用其中两位表示指令,因此每个字最多只有4条指令可用(两位所有可能的变化为00、01、10和11,每种变化代表一条指令)。计算机所做的任何事都可以分解成执行这4条指令中的某一条:使用一条指令就能将两个数相加,但是要将两个数相乘,就需要一长串指令(也许是20条)才能完成。盯着用二进制数(如10011001100001)编写的长长的计算机命令清单,不用几分钟,你准会晕头转向。但是,用汇编语言编写同样的命令可能会是这种形式:ADDY。向计算机加载丹尼斯编写的汇编程序后,就可以用这种较为简单的符号形式编写软件,然后可以很有成就感地等着由汇编程序帮你将程序翻译成二进制代码。接着,你要将那二进制的“目标”代码送回计算机运行。汇编语言可谓无价之宝,它只是让程序员用看起来好像是代码的符号编写程序,而不是用无穷无尽、令人眼花缭乱的数字1和0去写。