Banner

MOS 6502 诞生前的故事

2019 年 12 月 15 日,82 岁的 Chuck Peddle 在加利福尼亚州圣塔克鲁兹市的家中悄然离世,享年 82 岁。当我们谈论个人计算机的时候,也许我们的讨论会始于 Datapoint 2200,仿佛整个个人计算机的历史,就是 Intel 的辉煌发家史。但实际上,在个人计算机发展的早年,一些其它架构的产品在不断冲击着个人计算机的市场,才让个人计算机发展成了今天的样子。而今天我们所要说的,就是对个人计算机普及起到了极大作用的 MOS 6502 芯片,而这款芯片,就和这位刚刚离世的老人有着密不可分的关系。

摩托罗拉曾是功能手机的顶尖企业,但是随着 iPhone 的推出,以及摩托罗拉一系列延后的决策,摩托罗拉的辉煌史落下了帷幕。但是,这已经不是这家公司第一次做出葬送自己前途的决策了。早在上世纪 70 年代,摩托罗拉的一次挤牙膏式的错误决策,就葬送了其在计算机领域的地位。

1973 年,36 岁的 Chuck Peddle 是一名摩托罗拉的电气工程师。那一年他正在设计一款 8 位 CPU,Motorola 6800,简称 M6800。主频 1MHz,16 位选址,支持高达 64KB 的内存。那一年 Intel 也才刚刚推出世界上第一款 8 位 CPU Intel 8008。这款 M6800 CPU 于 1974 年上市,M6800 是一款和 Intel 8080 完全对标的产品,除了在性能上,也在价格上。他们的价格都是 360 美金。以消费物价指数来计算的话相当于今天的 1881 美元,这还只是 CPU 的价格,不包括电脑其他部件的价格。

但是就在这时候,Chuck Peddle 有一个疯狂的想法。他发现 M6800 有着巨大的改进空间,可以在不影响价格的情况下,大幅降低售价。当他给上司提出这个建议的时候,上司对这个想法根本不感冒。360 美金卖得好好的,为什么要自砍身价啊?

更糟糕的是,不久之后,Chuck Peddle 所在的工厂将迁移到德克萨斯州,而老工厂的员工正面临着裁员危机。迈入中年的 Chuck Peddle 正是合适的被裁员对象。被 Motorola 裁员的 Chuck Peddle 带领着同样被裁员的许多 Motorola 老员工加入了一家名叫 MOS 的公司。成立于 1969 年的 MOS 最早是生产计算器的,不过计算器的 CPU 并不是 MOS 自己生产的,而是由 TI 德州仪器供货的。如果说 MOS 在当时行业最大的名气,那就和 Atari 有关了。Atari 在 1972 年发布了世界上第一个电子游戏:Pong。Pong 的早期机型并不是使用单一的 CPU 来运算的,而是一些 TTL 芯片的组合。MOS 是 Atari Pong 后续机型的供应商,它将这些 TTL 芯片封装设计成单一芯片 CPU。

加入 MOS 的 Chuck Peddle 开始了一个项目。这时候的 Chuck Peddle 恐怕还不知道,这个项目即将彻底改变个人计算机的历史。这个项目的目的非常简单「我们要生产一款和 M6800 功能相似,但价格只要 25 美金的 CPU。」

法律风险

MOS 6502 和 M6800 有着相同的指令集,有着相同的主频,一样支持 64KB 内存的寻址。但是由于 MOS 6502 加入了简单的指令预先读取的优化,MOS 6502 在同主频下的性能甚至优于 M6800。1975 年下半年,6502 正式发售,正式定价 25 美金。是 Motorola 6800 价格的 7%。

MOS 6502 的出现使得 Intel 和 Motorola 措手不及,双方轮番来了价格大跳水。在 MOS 生产出 6502 开始,M6800 率先降价到 300 美金,此后再降价到 175 美金。到 1976 年,M6800 被迫降价到 35 美元,利润几乎为零。

但是 Motorola 不是傻子,怎么可能容许一款和自己功能如此相近的产品上市呢?难道不会使用法律的武器来保护自己吗?事实上,Motorola 做了。如果我们重新思考一下 MOS 6502 这款 CPU,这里结尾的 2 到底代表什么呢?其实它代表了其是另一款 CPU,MOS 6501 的下一代产品。

MOS 6501 是一款很少有人听闻的 CPU,事实上,它在上市不久后就被下架了。MOS 6501 是一款和摩托罗拉 M6800 CPU 完全兼容的 CPU。这意味着,客户为摩托罗拉 CPU 设计的主板,可以直接使用更便宜的 MOS 6501 来替代。1976 年,Motorola 将 MOS 告上法庭,声称其侵犯了 Motorola 的专利,要求其赔偿超过 100 万美金的损失。由于 MOS 6501 和 Motorola 6800 的引脚定义互相兼容,经过协商,MOS 下架了全部 6501 产品。但是这次法院的交锋却为摩托罗拉的未来留下了祸根。因为 Motorola 的主张 MOS 6501 的引脚定义完全相同,那如果功能上完全相同,只是引脚上稍有变动的产品是不是就变成了法院认证的合法产品了呢?

MOS 6502 紧接着就上市了,它有着不同的引脚定义,内置了一个晶振,其它和 MOS 6501 并没有什么区别。MOS 6501 和 MOS 6502 的发售时间非常接近,这起诉讼几乎没有对 MOS 造成严重的影响。甚至我们有理由怀疑,在 MOS 6501 上市前,MOS 早就为可能的法律纠纷在准备 MOS 6502 了。而这使得 Motorola 不得不依靠降价策略继续与 MOS 6502 竞争。这个世界的曙光并没有因为法律原因被抹杀。

个人计算机

如果我们说到个人计算机,一些早年的案例虽然很有名,但并不一定成功。比如 1971 年发售的 Kenbak-1 和 Datapoint 2200。

Kenbak-1 设计的售价是 5000 美金,相当于今天的 30330 美金。如果不是有钱疯了,实在是难以想象谁会买这台机器。于是这台跨时代的产品最终只卖出了 40 台。

而 Datapoint 2200 虽然之后催生出了 x86 架构,但是其自己商业上也并不成功。归根究底还是同一个原因:贵!

但现在不一样了,MOS 生产出了 1/15 原先价格的 CPU,那个人计算机是不是有希望了?Peddle 进一步在 MOS 设计了一款叫 KIM-1 的开发版,可以认为是一种个人计算机了。但之所以叫它开发版,因为它连塑料外壳都没有,单纯是一块主板。售价 245 美金。虽然 KIM-1 更像是一个试验性产品。之后 Commodore 收购了 MOS。收购 MOS 的次年,Commodore 公司根据 KIM-1 原型设计出了 PET 2001 个人计算机,售价 795 美元。同时,苹果也基于 MOS 6502 开发出了畅销的 Apple II 计算机,售价 1298 美金,这款计算机可以说是苹果早年最辉煌的产品,其衍生机型一直生产到了 1996 年。再往后一年,搭载 Intel 8080 的改进型 Zilog Z80 的 TRS-80 也正式发布,售价 600 美金。

个人计算机彻底迎来井喷式的发展。这种势头一路冲到了 1982 年 Commodore 推出的 Commodore 64,这几乎是 8 位机的巅峰之作,曾以一己之力占全美市场的 30%-40% 的市场份额。售价 595 美金,相当于今天的 1528 美金,也就是 10000 人民币。这对于许多中产家庭来说,已经是完全可以接受的价格了。

Commodore 64 使用的是 MOS 6502 的改进型 MOS 6510 CPU。其和 MOS 6502 并没有太大的性能区别,主要是接口上有一些不同。其搭载了 64KB 内存。可以通过转接口直接接在电视上使用,而无需购买专业的监视器。还有多个扩展卡槽,可以接扩展内存的内存卡、磁带机、磁盘机、游戏手柄等外设。内置 BASIC 语言,只需要一点点学习就可以简单上手编程。这台机器几乎美国人尽皆知,就连 1995 年美国俄克拉荷马爆炸案的主谋也是 Commodore 64 的编程高手,在他念高中的时候就用 Commodore 64 骇入了政府系统。可以说 MOS 6502 虽然不是世界上第一台个人计算机的选择,但是却是个人计算机时代的选择。

这款计算机的出色之处不但在于其启蒙了许多人的编程,更是在于其丰富的图形和声音处理能力。虽然世界上最早的家用游戏机之一的 Atari 2600 也使用了 MOS 6502 芯片,但是其没有配备单独的图形和声音芯片。这使得开发者不得不使用 CPU 来进行图形和声音的渲染。导致雅达利危机的 E.T. 的故事在这几年变得广为人知,但 Atari 2600 上的烂游戏,绝不止这一款。另一款被赋予很大期待的 PAC-MAN 吃豆人,也是很著名的烂作。街机上的吃豆人在当时已经非常有名了,移植到 Atari 2600 的家用版本自然就被赋予了很高的期待。但是受限于 Atari 2600 的机能,以及非常紧凑的开发时间,开发人员还没有对游戏做好优化就被迫上市。整个渲染流程没有办法支撑屏幕上同时渲染那么多敌人,于是这款游戏选择每一帧交替显示一个敌人的方式进行渲染,把当时美国孩子的眼睛都要闪瞎了。虽然之后推出的 MS.PAC-MAN 修正了这一问题,但这也充分暴露了 Atari 2600 的性能问题。

但是搭配了 VIC-20 图像处理芯片和 SID 声音处理芯片的 Commodore 64 就没有这些问题,Commodore 一系列基于 MOS 6502 的电脑极大改变了个人计算机行业。我们知道,后来的任天堂的社长岩田聪的第一台电脑,就是 Commodore 的 PET 2001,其在 PET 上的编程经验非常丰富。当任天堂红白机也选择基于了 MOS 6502 芯片的方案设计了它们的第一款家用游戏机 —— 红白机 Famicom 的时候,就是因为岩田聪对于这个架构的熟悉,才促成当时所在的 HAL 公司与任天堂的合作,从而开启了另一段游戏业界的佳话。

这些机器能「学习」又能玩游戏,岂不是鼓励家长买回家的好借口。事实上 Commodore 当时也是这么宣传的。「同样的价格,为什么要买给孩子一款游戏机;而不是一款能帮助他们学习的计算机呢?」这件事也是雅达利危机的一个外部因素。所以与其说,雅达利危机是由 E.T. 这样一款烂游戏引起的,不如说其时代背景下,Atari 有大量内部外部因素导致了其覆灭,而 E.T. 只是事情的导火索而已。说回这些个人计算机,虽然很多人买回来就沉溺在游戏中,但也有很多人的编程启蒙,都是从这些机器开始的。特别是一款机器,它不但是很多美国人编程的启蒙,还是很多中国人编程的启蒙。

Apple II

1977 年,苹果基于 MOS 6502 芯片推出了 Apple II 计算机。Apple II 的图形性能虽然没有后面的 Commodore 64 那么好,但是也是一款很平衡的个人计算机了。使得 Apple II 成为一款传奇计算机的关键,是 80 年代到 90 年代,Apple II 成为了美国教育系统采用的标准电脑。学校大量采购 Apple II,同时有大量计算机教材是围绕 Apple II 和 Apple BASIC 语言编写的。许多美国学生的编程启蒙都是从 Apple II 开始的。比如波斯王子系列的制作人 Jordan Mechner 的第一款游戏 Karateka 空手道,就是它在大学学习编程后,在 Apple II 上最早发行,后来再移植到各个平台的。

这时候,在大洋彼岸的中国,一些有识之士看不下去了。他们清楚的认识到,当美国的孩子的基础教育已经囊括了计算机教育后,中国如果不能跟进,那么中国学生和美国学生在基础科学领域的差距会被彻底拉开。当时的一台 Apple II 的价格是 $1298 美金,而 1977 年中国人均 GDP 只有 185 美金。和美国一样,给中国教育系统配 Apple II 的可能性几乎为零。买不起怎么办?抄。

中华学习机

那个时候的中国,已经有一定半导体产业的积累了。而那个时候半导体生产技术的壁垒也没有今天那么大。1981 年上海光学机械厂就已经研制成功了 2.5 微米制程的 JKG-3 型光刻机了。而在更早的 1958 年中国科学院计算所就已经研制成功 103 型小型通用电子计算机了。

电子工业部计算机与信息局组织,清华大学主持联合设计,有电子部六所、国营 734 厂、陕西省计算机厂以及华明计算机有限公司参与研制的中华学习机 CEC-I 在 1986 年研发成功上市。这款机型就是 Apple II 的仿制品。这款机器是芯片级仿制的 Apple II 计算机,如果你拆开机器,会发现除了某些早期试验型号,里面并没有使用 MOS 6502 CPU。而是一些标着 CH-6 CH-7 的芯片,而这些芯片就是对 Apple II 内部芯片的完全仿制,包括 MOS 6502。在那个靠 decapping 技术就可以了解 CPU 内部构造的年代,这款机器的诞生虽然不能说是容易的,但也是很神奇了。而且这款机器内置了汉卡和 80 列卡。这两款卡在一般 Apple II 上是需要单独购买的,有了这两块卡,不但可以显示和输入汉字,还可以显示更多的列数,让一行显示的字符数变多一倍,由于中文通常要占用两个字符宽度,这对于中文使用是非常重要的。

这款机器的价格大约是当时中产阶级家庭一年的收入,虽然并不能做到家用,但是很多学校都有一两台这个机器。至少让很多人从小接触到了计算机。不过这款机器也有一些缺点,比如其没有散热系统,在夏天长时间使用很容易导致烧毁。而当时,使用空调都是一件很奢侈的事情。就算给电脑房配了空调,也常常因为电力负载的原因,不允许使用。

MOS 6502 的没落

MOS 6502 虽然是一款成功的 CPU,但是其系列的命运却是昙花一现的。由于 Commodore 的几次人事变动,使得 Commodore 的产品开发陷入了混乱。其后续机型比如 Commodore Plus/4、Commodore 16、Commodore SX-64 都是非常不成功的。一直到 1987 年 Commodore 放弃了 MOS 系列芯片,改投入 IBM PC 兼容机的怀抱,从此个人计算机的时间线收束,合并到了我们熟悉的 x86 架构。而如果我们就算站在今天的上帝视角,也可以看出就算 Commodore 当时的决策正确,MOS 65 系列也很难逃过失败的命运。MOS 6502 支持的一些动态指令修改的特性虽然方便了汇编开发者,但是会使得现代 CPU 的常用优化,比如分支预测、指令流水线、乱序发射变得极难实现。

但无论如何,1973 一位服务于美国摩托罗拉的一名电气工程师的一个疯狂的想法,改变了 CPU 的成本、改变了个人计算机的命运、启蒙了无数人的编程教育、促成了繁荣的电子游戏业、让大洋彼岸的中国人决心重视计算机教育,真正地,改变了整个世界。

本期收听地址