时刻

创建Commodore64工程师们的故事

创建Commodore64工程师们的故事

1981年1月,位于宾夕法尼亚州西切斯特的MOS技术公司(Commodore International Ltd.的子公司)的少数半导体工程师开始设计一个图形芯片和一个声音芯片,以出售给任何想制作 “世界上最好的视频游戏 “的人。1982年1月,在内华达州拉斯维加斯举行的冬季消费电子展上推出了装有这些芯片的家用电脑。通过使用内部集成电路制造设施进行原型设计,工程师们将每个芯片的设计时间缩短到9个月以内,他们在不到5周的时间内为展会设计和制造了5台原型计算机。然而,最让家用电脑行业的其他成员感到惊讶的是Commodore 64的介绍性价格:595美元的设备包括一个键盘、一个中央处理器、图形和声音芯片,以及64千字节的内存,而不是当时被认为是标准的16或32。

当芯片开发项目开始时,Commodore 64根本不是设计师所想的那样。MOS技术公司是一家商业性的半导体公司。它的LSI集团,当时由阿尔伯特-查朋蒂埃领导,曾负责为Commodore公司的VIC-20家用电脑提供一些芯片,但该项目已进入生产阶段。”我们对世界上其他地方可能要我们做的任何芯片都没有想法,”查朋蒂埃说,”所以我们决定为世界上下一个伟大的视频游戏生产最先进的视频和声音芯片。”

这篇文章最初以 “设计案例史:Commodore 64 “发表。它出现在1985年3月的IEEE Spectrum杂志上。PDF版本可在IEEE Xplore上找到。芯片、电路板和屏幕的图表和照片出现在原始印刷版本中。

查尔斯-温特伯(Charles Winterble),当时是Commodore公司的全球工程总监,为芯片工作开了个头,查朋蒂埃的小组相当独立地工作,直到1981年11月中旬完成这两个芯片。

在当月末与查朋蒂埃和温特布尔的一次会议上,当时的Commodore公司总裁杰克-特拉米尔决定不继续进行视频游戏的开发。相反,他决定,这些芯片将用于一台64千字节的家用电脑,将在1982年1月第二周的拉斯维加斯消费电子展上推出。这台电脑还没有设计出来,但这很容易补救。

在两天内,工程师们在纸上列出了机器的基本结构。就在新年前,他们完成了五个工作原型。同时,从VIC-20上复制和重写了足够的操作系统软件,为新机器的功能提供了合格的示范。在消费电子展上受到热烈欢迎之后,Commodore 64被匆忙投入生产;1982年8月开始批量出货,并且有增无减。

尽管人们对质量控制和业界最慢的磁盘驱动器有所抱怨,但Commodore 64取得了无可比拟的成功,将其许多竞争对手挤出了市场。其成功的部分原因是价格不断下降—从推出时的595美元降至目前的149美元,消费者得到的图形和声音相当于或优于价格是其五倍的机器所提供的。

设计下一个伟大的芯片

在20世纪70年代末,MOS科技公司是一家成功的半导体公司;它的工程师设计了流行的6502微处理器,并生产了其他一些销量很好的产品。当时西海岸的Commodore公司在1976年接管了MOS—当他们的股票被以一美元10美分的价格收购时,导致许多MOS的工程师辞职,但MOS被允许相当自主地运作。

Charpentier回忆说,在1979年和1980年,MOS技术公司开发了6510微处理器—6502的小改版,增加了一个输入输出端口,6526外围控制器,大量的只读存储器(ROM)芯片,以及一个4千字节的随机存取存储器(RAM)芯片。当时,MOS正在向Atari公司、通用电气公司、惠普公司和其他一些客户以及Commodore公司提供设备。

术语的定义

位图

一种显示系统,其中屏幕上的每一个点都由计算机内存中的一个特定位的值控制。每个点有多个比特,允许有多种颜色和阴影。
字符图

一种显示系统,其中屏幕上的一组点由计算机内存中的一个字定义,该字指向包含每个点的数值的微型位图。由于许多图案在一个典型的屏幕上被重复使用,字符图比位图使用更少的内存。

颜色时钟

国家电视系统委员会(NTSC)标准中用于传输彩色信息的载波信号的频率;3.58兆赫兹。

DOS

磁盘操作系统;一组功能,如打开、关闭、重命名和删除文件,这是计算机有效利用磁盘驱动器所需要的。

领域

在NTSC标准中,一组262.5条电视扫描线,以每秒60条的速度传输。两个交错的场构成了一个525线的单帧。

中断

导致计算机停止其正在进行的任何工作并调用一个特殊程序的信号。中断允许计算机在处理数据的同时对来自外围设备的不可预测的输入做出反应。

精灵图

一种可移动的图形对象,用于家用电脑和视频游戏机的动画。一个精灵可以通过改变控制其位置的寄存器来移动,而在位映射内存中绘制的对象只能通过将其复制到一组新的内存位置来移动。

当决定设计最新的高级图形和声音芯片时,第一步是显而易见的:找到目前高质量的芯片能做什么。在组建他的设计团队时,Charpentier招募了Robert Yannes,一位在1979年加入MOS的年轻工程师,他曾在家里用一块备用的原型板设计过VIC-20。该团队花了大约两周时间研究整个行业的可比芯片。

“我们大量研究了美泰公司的Intellivision,”Winterble回忆道。”我们还研究了德州仪器99/4A和Atari 800。我们试图从这些公司目前的技术中推断出它们在未来能做什么。这使我们很清楚我们的机器的图形能力必须是什么。”

MOS的设计者们自由地借用了他们喜欢的想法—TI机器的文字,Intellivision的碰撞检测技术和字符映射图形,以及他们自己的VIC-20的位图。然后,他们将这些想法尽可能多地装入预先定义的硅片区域。

“阿尔[查朋蒂埃]被赋予了自由,在一定的芯片尺寸内,他可以把所有的东西都放进去,在我们计划的尺寸内向后工作。当他的寄存器用完时,他就停止了,”温特伯说。”我们提前定义了硅片的尺寸,以获得我们愿意接受的产量;当时,在5微米技术中合理的芯片尺寸是小于200密耳。然后,我们对愿望清单进行了优先排序,从必须有的到应该有的,再到我们希望有的,因此,在不同阶段需要的决定变得相当自动。

九个月的时间完成了第一道硅片

在9个月的时间里,夏彭蒂埃与两名绘图员和一名计算机辅助设计操作员一起工作在图形芯片上,而扬尼斯与另外两名绘图员和一名CAD操作员一起工作在声音芯片上。他们完全缺乏今天工程工作站的复杂设计工具,但他们有一个现成的设计工具,这在家用电脑行业中几乎是绝无仅有的:在厂房内有一条芯片制造线。温特伯解释说,有了这个,埋藏在芯片深处的电路就可以被抬出来,作为测试芯片运行,从而可以进行彻底的调试,而不必担心电路的其他部分。David A. Ziembicki,当时是Commodore公司的生产工程师,他回忆说,典型的制造时间是几周,在紧急情况下,封闭式制造设施可以在短短四天内完成设计。

开发Commodore 64的成本。没有人知道。

开发Commodore 64的成本。没有人知道。温特伯说:”我没有正式的预算,””除了杰克[特拉米尔]看着我之外。杰克说,预算是一种偷窃的许可。” 由于MOS技术公司的制造厂没有满负荷运转,用于C-64测试芯片和多道硅的设备本来是闲置的。”我们正在使用那些反正也在那里的人,”Ziembicki说。”你浪费了一点硅,但硅是很便宜的。这只是沙子而已。”

虽然定制芯片通常被认为是昂贵的,但C-64芯片并不昂贵。不仅开发成本被吸收在公司的管理费用中,而且没有加价,因为如果芯片是由其他公司制造的,就没有加价。而且产量很高,因为这些芯片是为成熟的半导体制造工艺设计的。

声音芯片是用7微米的技术设计的,在某些地方可以缩小到6微米。(相比之下,雅达利的视频计算机系统的定制芯片,在四年前制造,是用6微米的技术制造的)。Commodore公司的视频芯片是用5微米的特性设计的。

由于设计时间而不是硅的重要性,芯片的布局很简单而不是很紧凑。”扬尼斯说:”我们以一种非常模块化的方式来做。例如,他指出,”建造振荡器的标准方法是建造一个,然后复用它,直到你有你需要的数量。我们只是建立了一个振荡器模块并重复它,因为这比为多路复用器制定所有的时间要快得多。”

特写:Vic II芯片

(A)字符指针存储
(B)精灵地址计数器
(C)字符地址计数器
(D)时钟发生器
(E)精灵垂直比较器
(F)垂直定时控制
(G)精灵水平比较器
(H)水平定时控制
(I)精灵和字符移位寄存器
(J)显示优先级编码器
(K)颜色寄存器
(L)精灵-字符碰撞检测
(M)视频输出

Commodore 64视频芯片VIC II的大部分面积都用于八个精灵(B、E-H、L)。时钟生成电路(D)为整个系统服务。唯一完全用于生成字符的电路是存储阵列,它保存了每一行要显示的字符(A)和地址计数器,它为字符显示的每一行光栅线获取适当的ROM数据。三个模块(I,J,L)负责将精灵和字符数据以适当的顺序发送到屏幕上,并报告精灵和字符数据之间的任何碰撞。芯片的中央部分由电路组成,用于在正确的水平和垂直位置显示精灵,以及从存储器中获取它们的数据。各种芯片功能的计时,如为精灵获取数据,是由一个计数器和一个ROM组合完成的。计数器通过ROM的地址进行计数,每个ROM地址的内容驱动相应的控制线。在芯片的左边缘附近可以看到MOS技术的标志以及设计者和起草者的姓名缩写。

“了不起的是,”Winterble补充说,”9个月后,当我们拿出第一张通行证时,除了一个坏的精灵外,它还能运作。”

1981年11月,芯片完成了。最初的意图是一台游戏机,但在这一点上,个人电脑市场开始变得很有前景。在夏彭蒂埃、温特布尔和特拉米尔的会议上,决定采用个人计算机。据查朋蒂埃说,下一个选择是在16千字节和64千字节的机器之间做出,因为定制的芯片被设计成可以处理任何一种选择。

“杰克[特拉米尔]打赌,当我们准备生产产品时,64K公羊将足够便宜,我们可以使用,”查朋蒂埃说。

当开始设计Commodore 64时,压倒一切的目标是简单性和低成本。Commodore 64的初始生产成本定在130美元,结果是135美元。该计算机将使用与VIC-20相同的外壳和同样大小的电路板,以加快开发速度。”这甚至不是一个决定,”查朋蒂埃说。”这只是常识。如果你已经有了一个成功的产品,为什么要改变它?” 为了从VIC-20转换到Commodore 64,生产小组只需要把卡带槽变小,改变外壳的颜色,并设计一个新的标签。

此外,Commodore公司的小型设计团队从一开始就考虑到了成本问题,而不是像许多工程师所做的那样,先设计性能,后设计价格。例如,当扬尼斯还是一个穷困潦倒的高中生,为制造一台声音合成器寻找零件时,他就把经济作为他的信条。”在我设计东西的时候,我想尽可能使用最少的部件。这是一个个人挑战。如果一个门包里有一个备用的[逻辑]门,我会努力摆脱整个门包,因为在使用一定数量的芯片时,我应该能用完其中的所有东西。Commodore 64是我试图建立一个绝对最小的系统,可以用视频和声音芯片放在一起建立。”

1982年新年快乐!

在消费电子行业,传统上每年两次向分销商、经销商、媒体和竞争者介绍新产品—在1月的第一个周末和6月的第一个周末,在冬季和夏季消费电子展(CESs)。

“当你为Commodore工作时,”Yannes说,”你总是要为冬季CES准备一些东西。” C-64在1982年的冬季展会上并没有什么竞争。雅达利公司仍然在播种它的400/800电脑。美泰公司推出了水瓶座电脑,Spectravideo公司推出了其电脑/游戏机,两者的内存和功能都很有限。

齐恩比基回忆说:”我们在展台上看到的都是雅达利公司的人,他们张大了嘴巴,说:’你们怎么能用595美元做这个?

“我们很受欢迎,”温特伯补充说。

展会结束后,因有时展示的产品不再出现而享有声誉的Commodore公司,不得不迅速将64投入生产。只做了一些设计上的改变,以使机器准备投入生产。Yannes说:”64中的功能就是我想要的东西。”声音芯片中的内容是我想要的,视频芯片中的内容是阿尔[查朋蒂埃]想要的。”

事实上,Ziembicki说,”在它最终投入生产后,我们回过头来问,为什么我们要在一月后费力地改变它?它不会少卖一个单位,而且我们会在开发成本上节省很多钱”。

一些变化是相当重要的,但它们可能造成了与它们所解决的一样多的问题。最大的改进是弥补了视频芯片中的 “一个小插曲”,温特布尔说。

他解释说,当Charpentier第一次设计视频芯片时,他的目标是在黑白和彩色方面都达到最佳性能。以前的视频芯片,如用于雅达利和苹果的芯片,其黑白频率为7.16兆赫,是电视彩色时钟频率3.58兆赫的两倍,但这无法在一行中挤下足够多的字符,而且还会引起两个信号之间的串扰,导致一个物体根据其颜色在屏幕上向左或向右轻微移动。在1982年1月的CES上,当他看到40个字符不能完全容纳在电视屏幕上时,查朋蒂埃加快了黑白时钟速率,并使两个时钟完全异步。但是,由于彩色和黑白信息集相对于彼此的相位不断变化,”色彩过渡非常好,但有一个整体的游泳效果,”他回忆说。解决办法是在系统中加入一个锁相环,使颜色和黑白信息有一个恒定的关系。Charpentier承认,这是一个 “创可贴式的解决方案”。

加利福尼亚州桑尼维尔市Epyx计算机软件公司的产品开发总监Craig Nelson说,这就是它的样子。他说:”这是一个非常优雅的电路,”他说,”除了锁相环,它只是卡在它的中间。” (Commodore现在说它已经重新设计了芯片以消除这个问题)。

为Commodore64编程

作为 “创可贴 “的结果,彩色信息和黑白信息在连续的视频场上相互转换180度的相位,而不是不可预测地改变相位。这更符合国家电视系统委员会(NTSC)的标准,该标准要求黑白信息的时钟速率是彩色时钟速率的奇数谐波,因此,每隔一个场,两者就会自动颠倒关系,一个场是相位,下一个场是不相位。(在NTSC标准中,颜色是由颜色信号和每行开始时传输的颜色参考信号之间的相位差决定的)。

在制定该标准时,一般可用的电路无法将黑白信息与颜色完全分开:颜色的变化会导致亮度的变化,反之亦然。正是为了使这些变化随着时间的推移而平均化,NTSC制式规定两个信号的相对相位反转可以发生在连续的区域。其结果是更令人愉快的颜色过渡,但相位转换使静止的数字出现抖动。抖动在细的垂直线上特别明显,如字母数字字符中的那些。但在构思Commodore 64时,它主要是一台游戏机,而不是一台电脑。

以8-MHz的时钟频率运行一个5微米技术的芯片,导致它耗散了大量的功率—接近1.5瓦。不仅芯片运行速度快,而且为了防止颜色被洗掉,就像在VIC-20中那样,”我们用12伏的电压来驱动颜色信号,”Winterble回忆说。”我们知道我们会有一个热量问题”。

在这一点上,Winterble做了另一个设计修复—在视频芯片周围的屏蔽外壳的盖子内侧焊接一个小金属片。当计算机被组装起来时,标签压在芯片封装的顶部,形成一个导热路径,并将屏蔽罩变成一个散热器。

一些可能改进机器的变化在匆忙的生产过程中没有得到实现。例如,Yannes说,印刷电路板上声音输出的电线与视频信号的电线并行。因此,声音输出会发出恼人的15,750赫兹的噪音。重新布置电路需要时间,”我们有一块可以工作的电路板,”他解释说。”在那个时候,如果你有工作的东西,你就不会去改变它。” Commodore说,从那时起,对电路板进行了修改,重新布置了这些线路。

但事实上,设计者确实改变了一些有效的东西—包括一个降低机器性能的修改。

但事实上,设计者确实改变了一些有效的东西—包括一个使机器性能下降的修改。最初的设计规定使用高质量的射频调制器将信号传输到电视机上,但后来用一个更便宜的调制器代替了。”Charpentier说:”一个好的调制器需要6.25到6.5美元,而我们最后花了大约3美元。

温特伯对3美元的调制器有不同的看法。他说:”我们在VIC-20上使用的5毛钱的调制器不够好,”他说,”所以我们去找一个更贵的。”

电子设计并不是Commodore 64从原型开发到生产的唯一困难领域,物流也构成了一个复杂的问题。C-64是在宾夕法尼亚州的诺里斯敦(Norristown)设计的。开始生产C-64的VIC-20装配线在加利福尼亚州的圣克拉拉。随着C-64的投入生产,Commodore公司也在宾夕法尼亚州的西切斯特开设了一条新的装配线。在日本有额外的VIC-20装配设施,C-64的磁盘驱动器将在那里生产。而C-64的电路板正在香港制造。

“这很有趣,”齐姆比奇说。”设计人员会选择一个英文螺丝。生产端会选择公制的。但他们选择了他们所拥有的。Commodore公司的生产部门非常善于使东西适合,无论它们是否打算这样做。他们的章程是 “运送他们”。

“这需要一个非常强硬的人,”Charpentier解释说,”说’我不运这些东西,因为它们没有那么好’—特别是当人们吵着要买它们的时候。“

在生产过程中继续改变

1982年春天,Commodore 64开始生产,但这并不意味着争论的结束。”关键是要能在运行中解决你的问题,”齐姆比奇说。

据沙彭蒂埃回忆,最初的争论之一是印刷电路板的布局问题。Commodore公司在美国的装配厂使用了自动元件插入设备,但它在日本的工厂没有,而且两种装配技术要求不同的元件间距。最后,C-64的电路板被布置成自动插入,生产被转移到香港的一家拥有自动工具的新工厂。

一些问题也困扰着一些元件,例如开关。”你挑选一个被列为消费者开关的开关,”Ziembicki说。”你把它设计进去。你给制造商打电话,得到一个听起来合理的估计。然后,加利福尼亚[生产部门]想每周生产5万个,但制造商说,’我们不能做这个。这是一个消费者开关,但我们不适合消费者的数量。在这一点上,你就被挂了。”

由于Commodore公司刚刚将其工程人员从加利福尼亚搬到宾夕法尼亚州,设计工程师和生产设施之间的沟通不是很好,Ziembicki解释说。”到了这种地步,即使你没有得到答案,你也不能停止工作—你只能继续使用你认为生产端可以得到的部件。“

而外部供应商并不总是可靠的。Ziembicki回忆说:”有一家公司提供了一个电源供工程部门批准,”他说。”它得到了批准,然后供应商改变了设计,没有告诉任何人。

在超过500万台的生产过程中,Commodore 64内部设计的微小变化将制造成本削减到最初135美元的三分之一。增加产量是节约成本的一种方式。(点击箭头查看修改后的电路板)。

Charpentier说,他与生产小组的关系相当融洽。温特伯与他们的关系没有那么融洽,但他认为这可以接受。他说:”我个人不得不在很多事情上扮演重要角色,”他说。”然后阿尔会进去做一些好事。这种技术缓解了很多紧张,这是一种完成工作的方式。”

最臭名昭著的问题是 “火花”,这是一个缺陷,导致显示屏上出现小光点。这个问题在1982年9月查朋蒂埃离开公司之前就已经解决了,但是关于这个缺陷的报道一直持续到圣诞节期间,媒体报道称这是Commodore公司质量控制不佳的一个例子。狡猾的消费者利用它作为借口,在90天的保修期内退回完全好的Commodore 64s。由于机器的价格在推出后的两个月内下降了200美元,这个诡计使所有者能够获得购买价格的退款并以较低的价格购买另一台C-64。

Sparkle被广泛地归咎于作为系统核心的视频芯片的错误,但事实上它是由一个ROM芯片引起的,其中300万个芯片在其他系统中使用时没有问题,包括热门街机视频游戏Asteroids。Commodore公司的工程师们首先在视频芯片中寻找问题。他们花了三个星期才发现ROM芯片是缺陷的源头,查彭蒂埃说。”这个问题是一个随机事件—它并不总是发生。我们认为视频芯片由于某种原因看到了错误的数据。我们甚至没有怀疑这可能是ROM的问题。最后我们把逻辑分析仪放在上面,并追踪到了它。” Charpentier和他的小组多年前设计的ROM有一个特殊的预充电电路,以使它运行得更快,但该电路使它对假信号敏感。视频电路和6510微处理器交替控制系统总线,当控制权从一个传到另一个时,有时会产生电压尖峰。

Charpentier说:”我们恰好碰到了准确的时间,”。”如果这个尖峰短一点或长一点,就不会有问题。这个尖峰的宽度刚好足以让ROM将其视为一个有效的地址。它将忽略下一个地址请求,并给视频芯片提供错误的数据。” 由于ROM包含C-64字符集,屏幕显示将充满随机的字符片。

据Epyx的Nelson说:”屏幕上这种看起来像纸屑的干扰物,发光地被称为火花,有一个极其不好的特性:它导致硬件碰撞—精灵们相信它真的存在。” 由于火花是由输入视频芯片的不适当的数据引起的,它触发了负责检查可移动显示物体—小精灵—是否在屏幕上覆盖背景物体的电路。因此,依靠碰撞感应来控制屏幕上物体运动的软件,在遇到火花时就会变得很疯狂。

ROM中的错误被纠正了,尽管Commodore公司在扩大其新的生产线时不得不依赖外部供应商一段时间。只有最初出货的几十万台有这个缺陷。但是,纳尔逊指出,”对程序员来说,它被修复并不重要。我们的软件必须能在每台机器上运行。他解释说,对程序员来说,最好的解决方案是将ROM的内容复制到RAM中,这很可靠。但这浪费了2千字节的RAM。

“我的时间上的一个错误”

除了ROM的困难之外,”我还犯了一个逻辑错误,”夏朋蒂埃回忆说。这个错误在夏鹏飞离开Commodore公司后有时会被纠正,导致早期的C-64在每条水平视频线上产生错误的时钟周期数。他说:”它偏离了一个,”他说。他说:”每行不是65个时钟周期,而是64个”。

因此,黑白和彩色信息之间的180度相位转移没有发生,而这种相位转移可以消除色彩转换问题。根据它们的颜色和背景的颜色,屏幕上一些物体的边缘会出现轻微的不一致。这个问题在生产的大约五个月后得到了纠正。

但是前缘仍然是C-64的一个问题。在屏幕上任何一点显示精灵信息或背景信息的电路有时反应缓慢,在错过了几个像素后才将精灵信息叠加在背景信息上。

C-64的设计师并不是唯一在修改他们的机器的人;甚至一些装配线工人也加入了这个行列。

C-64的设计者并不是唯一修改他们机器的人;甚至一些装配线工人也加入了这一行动。由于自动测试色彩质量几乎是不可能的,装配线工人被指示转动一个控制彩色和黑白信号的电位器,直到他们看到彩色。据查朋蒂埃回忆,工人们很快发现,如果他们尽可能地转动电位器,就会产生饱和的色彩,但同时也会使黑白信号消失。在装配线工人的 “修正 “被注意到之前,已经有几千台电脑被运出;那时,一些评论家正在抨击C-64的 “花哨 “颜色。

质量仍然不足

尽管自C-64问世以来已经进行了这些修改,但为该机器编写商业软件的设计者们还希望看到更多的修改。其中一个变化是充分的质量控制。”他们不进行测试,”Epyx的Nelson说。”我曾打开全新的Commodores,发现有痕迹被切断。他们显然是用一把电动螺丝刀来组装C-64,有时会漏掉螺丝,然后砍断线路。你可能会问,这怎么可能通过最终检查?好吧,这些线路是连接到磁盘驱动器连接器上的,他们显然没有测试。

事后看来,查朋蒂埃称Commodore公司的错误之一是 “没有在质量上更近一步”。

为C-64设计附加硬件的设计师们提出的一个抱怨是,其简约的设计导致了硬件和软件部分之间不理想的相互作用。例如,用于控制操纵杆和游戏板端口的电路每1/60秒被借用一次,以扫描键盘上被按下的键。如果操纵杆开关关闭,键盘扫描软件将报告说有一个键被按下。连接到操纵杆端口的设备可能会导致不可预测的反应—如果为这两种功能使用了单独的硬件,就不会出现这种问题。

另一个缺陷是计算机的内部软件很粗糙。开机后,系统以Basic形式出现。这是Commodore公司生产的第一台Pet电脑时代的遗留问题,它没有磁盘操作系统,因为当时没有磁盘驱动器可言。”Charpentier说:”直到Pet Basic 4.0才开发出一个像样的磁盘操作系统。C-64没有使用这个高级版本的Basic,因为 “它需要的ROM比我们能放进去的多”。相反,这台机器使用的是更原始的Basic版本,是从VIC-20借来的。

“软件不是有形的,你不能拿着它,感觉它,或触摸它,所以它不值得花钱买。”

Commodore 64的Basic中最明显的遗漏是控制声音和图形芯片的命令。”Yannes说:”从来没有人打算让系统有内置软件来控制图形或声音。”这是Commodore哲学的一个明显部分;你不会把钱浪费在使产品更昂贵的东西上,而大多数买家是不会使用的。”

“Commodore公司一直在口头上为软件服务,”Charpentier说。”他们做的足够多,然后依靠外部资源来填补差距。Commodore是Jack Tramiel的延伸,对他来说,软件不是有形的,你不能拿着它,感觉它,或触摸它,所以它不值得花钱买。”

C-64的设计者们有自己的计划,进行尚未实施的改变。他们利用VIC-20的外壳来缩短开发时间,但他们确实设计了一个新的外壳,他们打算在8到10个月内将其替代。”它的前面更薄,而且更像一个楔形,”查朋蒂埃说。”我一直认为VIC-20的外壳看起来很笨重”。还有一些新的功能也将被添加到机器中。

加利福尼亚州伯克利的Berkeley Softworks公司的总裁Brian Dougherty断言,没有进行这些改变的事实并没有真正影响C-64的成功。”他说:”这台机器拥有迄今为止为电视屏幕所做的任何事情中最好的图形显示能力。”他说:”它接近于成为一个了不起的系统。

C-64的信条:其磁盘驱动器

C-64的一个主要缺陷不是机器本身,而是它的磁盘驱动器。如果有一个相当快的磁盘驱动器和一个适当的磁盘操作系统(DOS),C-64可以在商业市场上与苹果,也许还有其他商业计算机竞争。不过,就目前的磁盘驱动器而言,它很难摆脱作为玩具的形象。

“面向商业的软件在C-64上看起来并不那么好,”多尔蒂说,”不是因为基础系统不够好,而是因为磁盘驱动器的访问速度太慢;任何商业应用都需要大量的磁盘访问。” 而且,由于DOS是如此之弱,缺乏诸如自动创建和维护目录以及跟踪文件的功能,”为C-64开发商业软件要难得多”,他补充说。”像Lotus(开发公司,流行的综合商业软件包的制造商)这样的人在为IBM PC开发软件时面临的困难要比他们多得多,因为PC有一个操作系统结构,而这个产品却不存在。

“根据操作系统的原则,ROM中的基本输入输出系统做得相当干净。所有需要的程序都在那里,但也应该有一个自动读取磁盘第一轨道的设施,并将一个更复杂的操作系统启动到内存中。”

据Epyx的Nelson说,磁盘驱动器实际上有一个自动读取磁盘第一轨道的设施,但由于它没有被记录下来,所以没有被广泛使用。

Commodore公司的工程师们是如何搞砸磁盘驱动器的?

“磁盘驱动器?真是个血淋淋的故事!”

“磁盘驱动器?真是个血淋淋的故事!” Charpentier说。”这与我们接受的一个营销投入有关。市场部说C-64必须与VIC-20兼容。”

Charpentier解释说,VIC-20上的磁盘驱动器是Commodore Pet计算机上的驱动器的直接后裔。”我们有一个平行的IEEE-488总线用于Pet磁盘驱动器;而且我们在早期使用了一种奇怪的格式来打包数据:在外侧轨道上,磁盘的移动速度比内侧轨道快,所以数据速率会改变,以便在那里打包更多数据。这是一个很好的想法,但它是笨拙的,因为你与其他人不兼容。这就是这一切开始的螺母。”

VIC-20磁盘驱动器是在日本设计的,为了节约成本,总线从并行改为串行。该驱动器非常慢,因为VIC-20上使用的接口控制器(6522)的串行接口部分不起作用。因此,6502处理器在直接的软件控制下一次发出一个比特,而不是向外围控制器发送一个字节,让它来处理时钟、数据和手的抖动。

“我们为6526[C-64上用于取代6522的接口控制器]固定了串行移位寄存器,但我们不能使用它,因为磁盘驱动器必须是兼容的,”Charpentier继续说。”而且,由于C-64的处理器每隔512微秒就关闭40微秒,所以它总是错过控制磁盘接口的中断信号。解决办法是:进一步减慢驱动器的速度”。

速度是唯一可以改变的因素,而不需要承担彻底改变磁盘驱动器的成本;如果C-64的设计者能够放弃VIC-20的兼容性,他们可以做得更好。当然,到最后,C-64与IC-20的磁盘驱动器也不兼容。

这一切都源于6522串行接口不工作,”Charpentier总结说。

其他制造商正试图解决C-64的磁盘驱动器问题。一些人正在销售他们自己的磁盘驱动器,供C-64使用,但他们发现很难打入Commodore控制的市场。另一些人在销售可以装入RAM的程序,以加快磁盘传输速度,但这种选择只适用于使用C-64进行Basic编程;装入系统的预包装软件会将程序从RAM中剔除。Epyx已经发布了一个基于ROM的程序,可以将磁盘传输速度提高5倍。据Nelson说,该程序将与任何基于磁盘的软件一起工作。”这是有可能的,”查彭蒂尔说。”C-64磁盘驱动器有自己的微处理器和存储器,你可以向它运送信息,以改变操作系统并加快串行总线协议的速度。”

C-64磁盘驱动器的标准软件可以每2.5转磁盘读取一个256字节的扇区,或每秒钟512个byes。Epyx使用的编程技巧产生了每秒2.5千字节的传输率。(在其他慢速磁盘驱动器中,雅达利的810每秒传输1000字节,而苹果II磁盘驱动器的运行速度最高为每秒15000字节)。

巧妙的设计节省了一分钱

Commodore团队努力工作以确保C-64的初始生产成本低。垂直整合有助于降低零件成本,而且温特伯公司否决了增加功能的想法。设计师们自己也相信要精打细算;查朋蒂埃说他从杰克-特拉米尔那里学到了很多东西,他是 “一个真正的坚持成本的人。我们为每一个晶体管苦恼不已”。

在推出时,生产成本为135美元,零售价格为595美元,Commodore 64的零售价格将大大高于1比3的行业标准(当销量上升时,也许是1比2)。但是,Commodore公司一直在想办法降低零售价(现在是149美元)和生产成本(据信现在是35美元到50美元之间)。

Commodore公司不愿证实这一成本数字。Berkeley Softworks的Dougherty根据他在Mattel和Imagic的经验,估计了C-64部件的成本。

  • 三个ROMS,每个1美元。
  • 八个动态公羊,每个1.85美元。
  • SID(声音)芯片和VIC(图形)芯片,每个4美元。
  • 射频调制器包,3美元
  • 6510微处理器,1至2美元
  • 少量的TTL、缓冲器、电源稳压器和电容,共5美元
  • 键盘,不到10美元
  • PC板,1至2美元
  • 塑料外壳,1至2美元
  • 电源和各种连接器,5至10美元
  • 包装和手册,1至2美元

在进一步削减成本的行动中,Commodore公司已经用价格较低的定制芯片取代了TTL,并找到了提高声音和图形芯片产量的方法。

并非所有削减成本的步骤都对系统没有不利的影响。6567视频芯片最初是用陶瓷包装的,尽管塑料要便宜得多。Charpentier说:”我们尝试了各种方法,””铜铅框架,封装中的金属插入物,以及其他数量惊人的方法来获得塑料封装,因为陶瓷封装非常昂贵。但我们找不到一个运行温度足够高的封装。在我离开Commodore公司之前,我列出了一些降低功率的想法,但有一半的芯片仍在8MHz的频率下运行。如果不进行重大的重新设计,你就无法降低功率”。

设计团队是自主的—他们做了自己的市场研究,制定了自己的规格,并把他们的宝贝直接带到了生产中。

该芯片现在被包裹在塑料中。Commodore公司的工程师说,除了重新设计芯片外,他们还开发了一种塑料封装,可以像陶瓷一样散热。

自从改用塑料包装后,C-64的一些新问题被报道出来—这些问题是特定于机器的或与温度有关的。在整个软件行业中广为人知的一个故障是,当程序切换图形模式—从显示位图到显示字符—时,芯片容易锁定[见侧边栏,”丰富的图形模式集”]。”我们正在生产的一款游戏在生产线上开始出现故障,”Epyx的Nelson说。”然后我们会再次测试[有缺陷的磁盘],它们会正常工作。这取决于我们把它们放在哪台机器上以及温度是多少。” Charpentier推测,在最初的设计中,一些电路线是浮动的;不良的加工和高的操作温度会使芯片受到压力,从而导致故障。

在一些C-64中开始出现的另一个问题是位映射屏幕的水平滚动有问题。在最近对C-64的Epyx体育游戏《夏季运动会》的评论中,加州圣何塞批评了在游泳项目中明显的 “闪光灯效应”。尼尔森认为,这不是一个 “效果”—《水星报》评论员使用的C-64根本不能正确地进行水平滚动。

自由结束

尽管机器有其缺陷,但Commodore 64的设计者认为,由于他们在项目的早期阶段享有自由,所以他们取得了许多重大进展。设计团队是自主的—他们做了自己的市场研究,制定了自己的规格,并把他们的宝贝一直带到了生产。但是,一旦生产中的错误被解决,Commodore公司知道它有了一个赢家,公司的官僚机构就开始行动了,在此之前,他们一直在西海岸处理VIC-20和Pet电脑的问题。

“温特伯回忆说:”在那个时候,许多营销团体都来’帮助’我们。”下一个产品定义要由一个小组来想,另一个小组负责将东西投入生产,而阿尔的小组只做芯片的研发。”

“如果你让市场营销参与到产品定义中,你将永远无法快速完成它,”Yannes说。”而且你浪费了制造独特东西的能力,因为市场营销总是希望产品与其他东西兼容。”

Charpentier总结了他们的挫折感。”当你让许多人参与到一个项目中时,你最终所做的就是为自己辩护。我知道Commodore 64在技术上和当时可以制造的任何产品一样好,而且成本低,但现在我不得不听营销人员说,’它不会卖,因为它没有这个,它不能做那个。

“允许我们做C-64项目的自由,在那种环境下可能再也不会存在了”。

后记(截至1985年3月)

在最初的Commodore 64设计团队中,只有Robert Russell留在Commodore;他目前是一名设计经理。团队的其他成员—阿尔伯特-查朋蒂埃(Albert Charpentier)、罗伯特-扬尼斯(Robert Yannes)和查尔斯-温特伯(Charles Winterble),以及帮助调试项目并将其投入生产的大卫-齐姆比基(David Ziembicki)和布鲁斯-克罗克特(Bruce Crocket),于1983年春天离开Commodore,成立了Peripheral Visions公司。他们的计划是设计另一台电脑。为了获得周转资金,他们与雅达利公司签订了一份合同,为视频计算机系统设计一个键盘,该键盘已经试运行,但由于视频游戏市场崩溃,从未发布。周边视觉公司被Commodore公司起诉,后者说VCS键盘是属于Commodore公司的项目。在写这篇文章时,该诉讼还没有得到解决。

Peripheral Visions已经更名为Ensoniq,并将很快发布其第一个产品—音乐合成器。Albert Charpentier目前是Ensoniq公司的工程副总裁,Bob Yannes是高级设计师,David Ziembicki是生产控制部经理。Charles Winterble离开了Peripheral Visions,现在是康涅狄格州西哈特福德的Coleco Industries Inc.的电子组副总裁。而杰克-特拉米尔目前是雅达利公司的首席执行官,该公司曾是Commodore公司在家用电脑市场的主要竞争对手,在与C-64的竞争中损失了近10亿美元。

为了进一步探究

计算机书店有很多关于C-64的书籍可供选择。其中值得推荐的有比利时费内尔的DataCap公司出版的比尔顿-巴瑟斯特(Bilton Bathurst)撰写的《Commodore 64的真正内涵》,以及密歇根州大急流城的Abacus软件公司出版的洛塔尔-恩格利什(Lothar Englisch)和诺伯特-斯切潘斯基(Norbert Szczepanowski)撰写的《1541磁盘驱动器剖析》。计算机杂志如《创意计算》和《计算!》对软件进行评论,并出版了在C-64上运行的程序。Commodore 64本身可以在大多数大型零售商处找到。
丰富的图形模式集合
“我们并不打算做128种颜色,”作为Commodore 64的首席设计师,Albert Charpentier坚持说。”这在芯片上的面积太大了。

尽管如此,Commodore 64可以显示的颜色远远超过其文件中列出的16种颜色,此外还有许多其他图形功能。加利福尼亚州伯克利的伯克利软件厂的总裁布莱恩-多尔蒂解释说。”每个像素的宽度几乎是NTSC颜色时钟的一半,所以当你交替使用两种不同颜色的像素时,不是得到你认为的两种颜色,而是得到一种全新的相位解释”。[见下图。”当然,新的相位解释产生了一种新的颜色。由于像素的宽度是彩色时钟的7/16,产生的颜色在屏幕上循环移动,使它们难以利用。

Charpentier回忆说,在他设计视频芯片之前,他花了几周时间研究竞争对手。除了德州仪器、雅达利和美泰的产品外,他还研究了自己以前的工作。”我记得我花了大约一个星期的时间来研究我们可以放入的图形模式。”

Commodore 64的位图与大多数计算机的位图不同,它的大部分电路来自于用于显示字符图形的电路。一个标准的位图会将上面的八点段按A,B,C,D的顺序存储在连续的内存字节中….。Commodore 64以A、E、I、M、Q、U、Y、CC、B、F的顺序存储它们….。这模拟了字符的八乘八点模式。

“那是工程升级的一个例子,”查尔斯-温特伯说,他在设计视频芯片时是Commodore的全球工程总监。”我们发现了奇怪的颜色模式。艾尔的想象力疯了;一些颜色模式被证明是没有用的,一些则被证明是非常聪明的。”

Commodore 64有两种基本模式:字符映射和比特映射。在字符映射模式中,屏幕由1000个指针组成,每个指针选择一个存储在ROM或RAM中的字符。由于每个指针包含8位,因此可以选择256个8乘8像素的字符。在位映射模式下,8000个内存位置被用来定义屏幕,一个位对应一个像素。位映射模式提供了最大的灵活性,但却吞噬了内存,尤其是在定义一个以上的屏幕时。字符映射模式并不像它看起来那样具有局限性,因为大多数图片是由重复的元素组成的。

字符映射模式有几种变化。在其标准形式下,它包含256个8×8像素的单元,分辨率为水平320像素,垂直20行。屏幕上1000个位置中的每一个都可以包含不同的前景色,但都使用相同的背景色。”当涉及到混合颜色时,这是一个限制,”多尔蒂说。文本通常使用标准的字符映射模式来显示。

在国家电视系统委员会的标准中,颜色是由彩色载波相对于每行开始时发送的彩色突发的相位决定的。根据该标准,上述正弦波是根据其相位来确定颜色的。从红色到橙色的变化是相对干净的,因为两个正弦波之间只有一个小的相位差。然而,从红色到蓝色的变化会在屏幕上造成边缘模糊,因为它使得从红色正弦波开始向上到蓝色正弦波到达底部的相位不确定,这个周期大约为300纳秒。这个问题在遵守NTSC标准的系统中是普遍存在的。

在多色字符模式下,每个单元有一种前景颜色和三种背景颜色可供选择。16种颜色中只有8种可用于前景;背景颜色由视频芯片的三个寄存器定义。两个比特(而不是一个)被用来定义单元中的每个像素,因此单元的分辨率为垂直八行,水平四像素,而不是标准的八乘八。每个像素是正常宽度的两倍,所以显示分辨率降低到160乘200。

在扩展颜色模式下,屏幕上的每个位置都有四种背景颜色可供选择,外加一种前景颜色。所有16种颜色都可以使用,而且屏幕是以全分辨率显示的。唯一的限制是字符数为64,而不是256,因为每个字符指针的两个比特专门用于颜色选择。

位映射模式是由字符映射模式改编而来的,这使得它的使用没有想象中那么直接。”大多数光栅扫描算法都希望内存是线性布局的,”Dougherty说,”所以很难使用很多已经为其他系统完成的软件。” 典型的位图的组织方式是将水平线上的连续像素放在连续的内存位置上,但C-64位图使用八个连续的内存位置来存储八个连续线的每个像素。后续的八个位置则从同样的八条线上再存储八个像素[见图]。这模拟了字符集的像素在ROM中的布局方式,允许两种模式使用相同的电路。

在标准的位映射模式中,一个 “1 “位显示在前景色中,一个 “0 “位显示在背景色中(每个八乘八的像素组有不同的前景色)。在多色位映射模式下,每个像素用两个比特来定义,因此可以从可能的16种颜色中选择4种颜色,尽管屏幕分辨率再次下降到160乘200。

程序员如何利用C-64的硬件(幻灯片)

Commodore 64硬件的各种功能可以单独或协同使用,以达到令人印象深刻的效果。在这里显示的屏幕中,Commodore 64的光栅中断功能被用来改变颜色和分辨率,增加可用精灵的数量,并在各种图形模式之间交替使用。在Epyx公司的夏季游戏视频游戏的这个开场画面中,两行标志之间的光栅中断被用来改变颜色寄存器,从而增加了这个多色字符映射显示中的可用颜色数量。Sprites也被用来添加颜色和复杂的细节。

1 / 7

Sprites。让动画变得简单

在Commodore 64项目的早期,精灵的加入—覆盖在背景显示上的独立可动对象—受到了极大的关注。事实上,用于操作和显示精灵的电路占据了机器的视频显示芯片的三分之二。

“事后看来,如果在机器中多放一点位图功能就更好了,但我们把重点放在了精灵上,”曾任Commodore 64计算机总设计师的阿尔伯特-查彭蒂埃说。”当时设计芯片的前提是一台游戏机”。

而一个好的游戏,当然会使用许多独立移动的物体。Robert Yannes也是C-64项目的设计师,他回忆起研究雅达利的所谓玩家导弹精灵。”它们很糟糕,”他说。”它们没有足够的颜色,它们不够大,而且它们不能做你想要的事情。” 他说,德州仪器99/4A上的精灵,”很好,但它们只有一种颜色,而且你必须把它们组合在一起才能做出足够大的物体。”

该小组决定,C-64精灵将是一个可在X轴和Y轴上独立移动的多色物体,其软件开销最小。

精灵图可以以四种尺寸中的任何一种显示:正常、垂直扩展、水平扩展、或双向扩展。它们也可以在多色模式下显示,在这种模式下,它们的分辨率更粗糙,但比例被保留。

“我们花了很多时间讨论精灵,”Charpentier说,”问:’它们应该有多大?他们是否应该在X和Y上扩展2倍?我们应该有碰撞检测吗?

他解释说,一系列的数学计算回答了许多这些问题。”在视频线上移动,你有63微秒的时间可以玩。我打算使用运行速度略低于2兆赫的存储器,这意味着每行只有114次存储器取数。不能再多了。我想,处理器至少需要40次提取;40是一个很好的架构数字,因为还有40个背景信息,所以背景信息和处理器的片断可以很容易地交错进行。

“因此,114减去处理器的40和背景的40,我只剩下34个取数。我需要8次取数来获取精灵指针[指示精灵信息在内存中的存储位置]。这样就剩下26次取数了。如果我有八个精灵,每个精灵就有三个取数。

Charpentier解释说,在屏幕显示期间,不需要额外的周期来刷新动态RAM,因为视频芯片已经步入了适当的行和列地址。只有在垂直闪烁期间才单独刷新内存。

他说:”当我使用我可以得到的每一个周期时,我每个精灵有3个字节,”。(后来时钟速度的改变使一条线上可用的周期数增加到126个,但那时已经来不及改变精灵的电路了)。

每个精灵的3个字节决定了精灵的水平尺寸-24像素。然后,夏彭蒂埃寻找3的倍数(字节),使之接近2的幂,这样就可以有效地存储精灵。”他说:”碰巧的是,24乘以21位可以得到63字节的信息。因此,每个精灵的高度为21行。

这些精灵不仅可以被放置在屏幕上或屏幕外的任何地方,而且它们还可以在水平或垂直方向上被拉伸到正常尺寸的两倍,产生一个大到48×42点的精灵(尽管分辨率并没有增加)。[见上图。]精灵也可以在多色模式下定义,在这种情况下,水平分辨率下降到12像素,但它们的尺寸不会改变。

Commodore 64的电路将其数据采集与CRT电视的扫描线相比较。

芯片上的合成器

“Commodore 64的声音芯片设计师和系统架构师Robert Yannes说:”我曾与合成器打过交道,我想要一个音乐合成器的芯片。他于1981年春天开始研究该芯片,由两名绘图员和一名CAD操作员协助工作。他说:”没有人知道我们在做什么,”他说。”除了基本的研究,我从高中起就开始做了,实际的设计只花了大约四五个月。”

Yannes解释说,他的芯片与典型的电子游戏声音芯片之间的主要区别是其更精确的频率控制和用于塑造声音强度的独立包络。”对于游戏中的大多数声音效果,要么是全音量,要么是完全没有音量。这真的使音乐变得不可能。没有办法用这种包络模拟任何乐器的声音,哪怕是模糊的,也许除了风琴。”

虽然理论上可以使用其他声音芯片的音量控制来塑造声音的包络,但很少有程序员处理过如此复杂的任务。为了使声音的塑造变得简单,Yannes将包络控制放在硬件中:每个声音有一个寄存器来决定声音建立的速度;两个寄存器来决定音符持续的水平和达到该水平的速度;一个寄存器来决定音符消失的速度。”人们花了很长时间才理解这一点,”他总结说。

Yannes还在硬件中放了一个查找表,将数据从音符转换为等效的频率,但这需要过多的硅。”在C-64设计期间担任Commodore公司全球工程总监的Charles Winterble说:”我把这个拿掉了。

即使在今天,声音芯片的精确功能也不清楚,主要是因为在芯片第一次设计时,写了不正确的规格。”Yannes说:”规格表被分发,被复制,被不同的人改写,直到它几乎没有意义了。错误文件的一个例子是,声称该芯片在逻辑上可以和几种波形结合。该芯片可以产生三角波、锯齿波或方波,这取决于它的一个控制寄存器中的哪个位被设置。”Yannes说:”没有联锁装置来确保如果一个位被打开,其他的就会被关闭。”那会占用太多的硅。” 因此,如果有一个以上的波形被选中,输出多路复用器的内部音符就会放电,而出现的是最小振幅。

规格表中的另一个错误涉及片上滤波器。”滤波器是最后一个工作的东西,”Yannes承认。”我没有时间了。计算机模拟说,’这不会工作得很好’—而且它没有。” Yannes回忆说,过滤器可能是平庸的,但描述它如何工作的方程式是完全错误的。”它们没有挂在一起。没有人给我一个机会来纠正它们。

面对这些不正确的方程式,大多数软件设计者只使用声音芯片。

一些为C-64编写早期游戏软件的日本程序员采取了不同的方法,Yannes指出。”他们按照规格来写。对他们来说,某样东西是否有效并不重要。结果是,程序做出了你听不到的声音效果。”

分享此文章