
出人意料的是,Apple II的诞生,也许只是开发者头脑中的一个不经意的想法。只要还有改进的空间,创客们对自己手头的项目就永远不会完全满意。沃兹尼亚克(Wozniak)在完成 Apple-1 的设计后,脑海中已经有了能让这台计算机运行更快、功能更强的改进方案。他想让它能显示彩色画面。他努力将 Apple-1 的终端功能和内存功能结合起来,把显示内容移入主内存,从而实现屏幕的即时刷新。这些修改并不是为了刻意打造一款更好的产品,或者为了让顾客更愿意掏钱购买。

沃兹尼亚克曾表示:“Apple II 的许多特性之所以被加入,是因为我之前为雅达利(Atari)设计过《打砖块》(Breakout)游戏。我是用硬件设计的它,现在我想用软件来写这个游戏。所以这就是Apple II最初加入色彩功能的原因——为了让游戏可以用程序来重新编写。有天晚上我坐下来,试着把它加入 BASIC。幸运的是,BASIC 是我自己写的,所以我只是烧录了一些新的 ROM,加入了画线命令、变色命令以及各种用色彩绘图的 BASIC 命令。我让一个小球在屏幕上弹跳,然后我说‘嗯,它需要声音’,于是我不得不给 Apple II 加了一个扬声器。这一切都不是预先计划好的,纯属偶然…… 显然你还需要游戏手柄(paddles),所以我得绞尽脑汁设计一个最简单的、芯片最少的手柄电路,并接上了手柄。所以,Apple II 当年许多真正让它脱颖而出的特性,其实都源于一个游戏,这些内置的有趣功能最初只是为了完成一个个人项目,也就是用 BASIC 编写一个《打砖块》软件版本,并在创客俱乐部里炫耀一下。

沃兹尼亚克还加入了一些他认为对一台实用的计算机(也是他自己想拥有的计算机)至关重要的其他特性。由于 6502 处理器总共能寻址 64K 的内存,他设计的计算机既能使用 4K 的内存芯片,也能使用更新(也更贵)的 16K 内存芯片。最早的 Apple II 计算机标配 4K 内存,用户可以增加内存,最大容量取决于芯片类型:如果使用 4K 芯片,最大为 12K;如果使用 16K 芯片,最大为 48K。连接到主板上的特殊接线跳线模块(strapping blocks)告诉 Apple II 系统有多少内存以及内存的位置。根据 1981 年版的《Apple II 参考手册》,Apple II 的内存大小可以是以下规格:4K、8K、12K、16K、20K、24K、32K、36K 或完整的 48K。(这些大小取决于安装三块 RAM 芯片的不同方式)。即使在没有 RAM 芯片填充的情况下,跳线模块的设计也具有足够的灵活性,允许内存芯片座存在空白区域。


Apple II 标准内存芯片座阵列
图片来源:Scot Krayenhagen
必需安装最低要求的 4K RAM内存 ,因为它被 6502 处理器、ROM 例程和文本屏幕显示所使用。例如,如果你只有两块 4K RAM 芯片可供安装,并且你想显示高分辨率图形,你可以将一块芯片跳线到高分辨率内存的低半部分(地址 2000−2000− 2FFF),另一块跳线到高分辨率内存的高半部分(地址 3000−3000− 3FFF)。由于沃兹尼亚克设计 Apple II 时,16K RAM 芯片的价格约为 500 美元,大多数用户都负担不起。相比之下,Commodore PET 和 Radio Shack TRS-80 无法轻易扩展超过其自带的 4K 内存,而 Apple II 从一开始就是为扩展而设计的。

那一排八个扩展槽是 Apple II 的另一个强大卖点。与 TRS-80 或 PET 不同,你只需将一张卡插入其中一个插槽,就可以轻松扩展 Apple II。然而,这种高度的可扩展性也使得制造成本更高。史蒂夫·乔布斯(Steve Jobs)认为,没人会需要超过两个插槽,一个用于打印机,另一个可能用于调制解调器。沃兹尼亚克凭借在惠普(Hewlett-Packard)使用计算机的经验知道,用户总会找到东西来填满那些额外的插槽,因此他坚持保留了八个插槽的数量。
监控程序 ROM (MONITOR ROM)
沃兹尼亚克为 Apple-1 配备的内置 ROM 监控程序,让这台计算机比其他第一代微型计算机更容易开箱即用。他希望增强这一功能,因此提供了额外的命令来管理特定内存位置的字节。
沃兹尼亚克的朋友艾伦·鲍姆(Allen Baum)帮助编写了更多增强代码,以完善内置的 ROM 例程。其中包括处理屏幕文本显示的代码,以及创建和处理不同大小文本窗口的能力(即在标准的 24x40 文本屏幕内,创建一个或多个用户自定义的文本空间,文本仅在该空间内滚动)。监控程序还整合了盒式磁带输入/输出例程,因为 Apple II 本身就包含了支持该功能的硬件。
鲍姆和沃兹尼亚克此前曾在 1976 年 9 月号的《Interface Age》杂志上发表过一个 6502 反汇编程序的代码。这使得检查和调试代码变得更加容易,它本身也是“家酿计算机俱乐部”(Homebrew Club)哲学的延伸——让所有计算机知识为每个人所共享。这篇已发表的文章是苹果公司提供“免费或极低收费”软件文化的一部分。Apple II 监控程序中包含了一个改进版的反汇编程序。它成为了 Apple II 最重要、最独特的特性之一,也是其开放式设计的重要组成部分;它允许任何人查看任何程序使用的 6502 代码。监控程序最终代码的功能增强使其大小从 Apple-1 上的 256 字节增加到了 2048 字节(2K)。
键盘 (KEYBOARD)
在 Apple-1 上,用户必须自己提供键盘。苹果公司向其客户推荐的一款特定键盘是由位于加利福尼亚州喷泉谷(Fountain Valley)的 Datanetics 公司制造的。该公司自 1964 年起就开始为收银机和加法机制造键盘。Datanetics 生产的这款计算机键盘,其键帽形状手感类似于流行的 IBM Selectric 打字机。至于键盘布局,它是以经典的 Teletype ASR-33 型号键盘为模型的。
(注:Datanetics 键盘仅支持大写。用于 Apple-1 和 Apple II 的版本非常相似,唯一的区别是键盘上印有的 Teletype 控制键名称;只有“BELL”(响铃)这个词印在 G 键上,最终出现在了 Apple II 的版本中。)
史蒂夫·乔布斯要求 Datanetics 为 Apple II 制造键盘,该公司在 1977 年春季努力生产,以满足当年夏天这款新计算机发布时的需求。键帽的形状和印刷几乎与 Apple-1 上早期使用的 Datanetics 键盘完全相同,只有一些细微差别。增加了一个 RESET(重置)键,在右 Shift 键正上方增加了箭头键,RETURN(回车)键被加宽了。除了 G 键上的 BELL 外,所有 Teletype 遗留下来的控制代码名称都被移除了。一个未标记的特殊字符是右方括号“]”,通过按 SHIFT-M 键输入。

Teletype 35AST 键盘
图片来源:Marc Francisco

Apple II 键盘
虽然 Teletype 标准允许从键盘输入左方括号、反斜杠和下划线字符(“[”、“\”和“_”),但 Apple II 并没有提供直接键入这三个字符的方法。
Apple BASIC 语言
拥有扩展的监控程序 ROM 和彩色图形并不是 Apple II 唯一的新特性。沃兹尼亚克在 ROM 中包含了一个更新版本的 Apple BASIC(被称为 Integer BASIC)。通电后即可立即使用,这让非硬件爱好者也能轻松编写使用彩色图形的程序。
苹果公司从来没有沃兹尼亚克 Integer BASIC 的汇编源代码清单。他是用机器语言编写的,并在纸上手工汇编: “我写了这个 BASIC 处理器,我还写了一个小小的 ALGOL 模拟器来运行它。看起来它能工作,但我忘了造机器了。我还没有汇编器,这是另一件事。要用汇编器,他们认为会有人买这个处理器给公司用,然后公司可以支付几千美元的分时费用,来使用分时系统上可用的汇编器。我没有那样的钱,所以一个朋友教我,你只需看看每条指令,把指令写在纸页的右边,在左边写上地址,然后查出每条指令的十六进制数据——你可以自己汇编。所以我就是坐在那里,自己手工汇编。我们随第一批 Apple II 发货的 BASIC,从来就没有被汇编过——从来没有。只有一份手写的副本,全部是手写的,全部是手工汇编的。所以我们处在一个买不起工具的时代。”
Apple 公司从未有过 Integer BASIC 的官方源代码清单。我所知道的 Integer 解释器中为数不多的错误之一涉及一个单字节错误。如果输入的行包含太多的括号,显示的错误信息是“TOO LONG”(太长),而不是“TOO MANY PARENS”(括号过多)。另一个错误涉及嵌套过深的 FOR-NEXT 循环(即在一个 FOR-NEXT 循环内又有一个 FOR-NEXT 循环)。如果程序在没有执行到 NEXT 语句的情况下反复进入循环开头,最终会导致系统崩溃。
其他设计特性 (OTHER DESIGN FEATURES)

Sup’R’Mod
Apple 必须面对的一个问题是获得 FCC(美国联邦通信委员会)的认证。设计好的 RF(射频)调制器发出的干扰太大,FCC 很可能不会批准。(RF 调制器允许用户将 Apple 连接到普通的电视机上,而不需要购买昂贵的计算机显示器)。为了避免因重新设计 RF 调制器以获得 FCC 认证而推迟 Apple II 的发布,Apple 将 RF 调制器的规格交给了 Marty Spergel。他经营着一家名为 M&R Electronics 的小公司,专门销售电子和计算机爱好者难以找到的零件。双方达成的协议允许 M&R 生产和销售 RF 调制器,而 Apple 则可以专注于生产和销售 Apple II。经销商如果买家想在彩色电视上看到图形,就会出售带有“Sup’R’Mod”(售价约 30 美元)的 Apple II。乔布斯向 Spergel 保证该产品会卖得很好,也许一个月能卖出五十台。(几年后,Spergel 估计他卖出了约四十万台 Sup’R’Mods。)
沃兹尼亚克(以及帮助他完成该项目的艾伦·鲍姆)包含在 Apple II ROM 中的其他特性包括:用于屏幕文本显示的终端软件、扩展的监控功能以及盒式磁带输入/输出例程。他们增加了将屏幕分割成不同大小窗口的能力。他们还编写了反汇编程序,这是 Apple II 从一开始就具备的最重要特性之一,也是其开放式设计的重要组成部分。它允许任何人查看任何程序使用的 6502 代码,这符合“家酿计算机俱乐部”让所有计算机知识为每个人所共享的哲学。在 Apple-1 时代,当 Apple 正在提供“免费或极低收费”软件时,沃兹尼亚克和鲍姆曾在黑客杂志上发表过他们 6502 反汇编程序的早期版本。该程序设计为从 Apple-1 的 800到800到 9D8 内存地址加载,用户可以从监控程序中执行该例程。这段早期的代码与后来包含在 Apple II ROM 中的反汇编程序非常相似。
拥有扩展的监控程序 ROM 和彩色图形并不是吸引人们购买 Apple II 的唯一特性。拥有沃兹尼亚克的 BASIC 语言 ROM,通电即可立即使用,这让非硬件爱好者也能编写使用 Apple II 彩色图形的程序。
内存映射 (MEMORY MAP)
沃兹尼亚克以 Apple-1 为模板,设计了 Apple II 的内存布局。就像 Apple-1 的盒式磁带接口卡从 100开始一样,在上,第一个插槽使用的内存也从同一位置开始。插槽2从C100开始一样,在AppleII上,第一个插槽使用的内存也从同一位置开始。插槽2从 C200 开始,以此类推。
与 Apple-1 一样,Apple II 的 Integer BASIC 在内存中从 000开始,一直覆盖到监控程序开始的E000开始,一直覆盖到监控程序开始的 F800 之前。监控程序下方的一些空间也被用于其他对汇编语言程序员有用的工具。

Apple II 编程
夜雨聆风