GeekLogic

苹果王朝的起点——Apple II

本来计划中Apple II这款机型是要排在后面介绍的,原因是我还没有收集到一台合适的苹果原装Apple II电脑。但是看着我收集的各种版本Apple II仿制机、原装的Apple IIe和Apple IIc,还是决定要先讲一下Apple II。

虽然Apple II并不是苹果公司生产的第一种计算机设备,但是它的出现是划时代的,Apple II和它的竞争对手们让计算机真正的像家电一样第一次走进了家庭,而不仅仅是一台放在实验室、科研单位的披着灰黑色外衣的冰冷的机器。Apple II在设计之初就对其使用成本进行了细致的考虑,用软件方式实现彩色显示、软件和控制卡外设结合来提供磁盘存储,这些沃兹尼亚克智慧的结晶使得使用者可以在当时以极低的使用成本来获得和竞争对手需要花费昂贵的金钱才能实现的一样的功能。除此以外,Apple II的8个扩展插槽提供了超强扩展能力。再加上以电子表格Visicalc为代表的众多的软件生态的支持,这些因素都使得Apple II系列成为了80年代销量最好的个人电脑之一,在其销量最高的1984年,销售了100万台,市占率达到15.82%(数据来源: Total Share: Personal Computer Market Share 1975-2010)。而整个系列的生命周期也在后续的Apple IIe / IIc /II GS等机型的更新下延续到了1993年才停产,整整生产销售了16年。

事实上Apple II的影响比看到的数字要广泛得多。除了苹果销售的Apple II电脑之外,据不完全统计,全球市场上有着超过190多种的Apple II仿制机。在国内的情况也一样,各大高校中的Apple II,大多是仿制机和兼容机(山寨机?),部分来自华南、香港以及日本。到了80年代后期,中华学习机 CEC-I成为了国内最有名的Apple II仿制机。那个年代学计算机的少年们,基本都知道使用PR#6命令来读取软盘进入游戏。可以说Apple II对我国的计算机普及教育事业也做出了巨大的贡献。

规格

型号Apple II
制造商
类型个人电脑
原产地美国
上市年份1977
内置语言Integer BASIC,在Apple II Plus中由AppleSoft BASIC取代,提供浮点计算能力
键盘QWERTY,53键
CPUMOS 6502
主频1.0Mhz
协处理器
RAM板载最低配置4KB,最高配置48KB,扩展槽可插内存扩展卡
显存
ROM12KB
文本模式24行40列,可通过加装80列卡支持80列模式
图形模式高分辨率:280×192 ;低分辨率: 40×48
最多颜色数高分辨率:6种颜色;低分辨率:4位色
声音1个单声道扬声器
尺寸/重量107mm (H) x 387mm (W) x 457mm (D) ,约5.21 KG
I/O端口8个扩展插槽,可扩展串口、打印并口、磁盘存储等等
DIP16游戏操纵杆接口
3.5mm磁带机输入输出音频接口
RCA视频输出接口
电源 C13电源接口,110V AC,后期推出的欧洲版 220V AC
价格1977年6月价格:US $1298 (4K RAM版本),US $2638 (48K RAM版本)

诞生和发售

提到Apple II,很多人的第一反应是史蒂夫·乔布斯(Steve Jobs),但事实上,Apple II电脑的真正创造者是和乔布斯一同创立了苹果公司的天才工程师史蒂芬·沃兹尼亚克(Stephen Wozniak)。正是沃兹尼亚克的天才发明加上乔布斯的商业鬼才,这样的黄金组合,才使得Apple II能够走向成功。

Apple II诞生的过程就是苹果公司的创立史。而说到Apple II的诞生,那一定要从Apple I开始说起。

沃兹尼亚克从小就是一个对电子工程着迷的孩子。1970年,在大二那年暑假,他在Tenet公司兼职打工的时候,就梦想着要DIY一台便宜实用的电脑。后来他搞到了一些逻辑芯片,于是和他的邻居比尔·费尔南德斯(Bill Fernandez)(后来成为了苹果公司第四号正式职员,负责过Apple I、Apple II、Macintosh等系统的开发)一起在车库里一边喝着奶油苏打汽水一边设计组装电脑,最终成功的组装了一台廉价的可以运行的电脑,他们把它命名为“奶油苏打电脑(Cream Soda Computer)”。这应该就是 Apple I的萌芽。也就是在这个期间,费尔南德斯把自己的朋友乔布斯介绍给了沃兹尼亚克,两位天才一见如故。

费尔南德斯和他的奶油苏打电脑,图源:apple.fandom.com

1972年,经好友艾伦·鲍姆(Allen Baum)介绍沃兹尼亚克加入了有硅谷发源地之称的惠普公司(Hewlett-Packard),负责计算器产品的研发。1975年,鲍姆又介绍他加入了后来著名的家庭自制电脑俱乐部(Homebrew Computer Club)。在俱乐部聚会时,沃兹尼亚克看到的Intel 8008芯片的技术规格文件激发了他再次做一台电脑的想法,而且这次他想要做的不再是像以前那样用指示灯而是要用屏幕来显示结果的方便个人使用的电脑。

于是,沃兹尼亚克便在下班时间在惠普办公室开始了他的设计和创造。一开始他想用摩托罗拉6800芯片来制作电脑,但后来发现MOS科技的6502芯片功能不差且价格只有一半时,就决定使用6502作为主控芯片。(6502芯片有着广泛的应用,大家熟知的任天堂红白机Nintedo FC也使用6502兼容芯片作为CPU,MOS科技后被Commodore收购,使用这一芯片架构的Commodore的C64后来成为了80年代中前期的传奇,世界上销量最高的单一型号电脑,这些后面我会一一写文来介绍。)在经过3个月的研发、组装、调试之后,在1975年6月29日,Apple I终于成功启动并运行了第一段代码。

这时候乔布斯的商业基因开始发挥作用,他说服了沃兹尼亚克不只是要自己玩儿,而是要把这玩意做成印刷电路板套件卖给其他发烧友。两人决定要开一家公司干这件大事,乔布斯把公司取名叫苹果,还找来了他在雅达利(Atari)公司的同事罗纳德·韦恩(Ronald Wayne)来负责公司的行政运作。韦恩成为了苹果公司的第三位员工,并设计了苹果公司的Logo。这时,沃兹尼亚克在家庭自制电脑俱乐部的朋友保罗·特里(Paul Terrell)正好在1975年12月在加州山景城(Mountain View)开设了他的第一家电脑商店Byte Shop,于是Byte Shop就成了Apple I的第一个销售通路。苹果公司负责提供做好的电路板,以666.66美元的价格(成本每台500美元)卖给特里的Byte Shop。特里还做了木头箱子,配上电源和键盘,把Apple I装进去,卖给最终用户。

乔布斯和沃兹尼亚克拿着Apple I的电路板,背后桌上有Aplle II的机箱,摄于1976年。图源/版权:Courtesy of Apple Computer, Inc.

特里向苹果下的第一笔订单是50台,但是乔布斯他们只借到了5000美元来买元件,资金缺口很大。但乔布斯凭借他的商业头脑,最终说服了供应商经理找了特里来确认Byte Shop给苹果的订单是真实的,从而获得了30天的账期。这也意味着苹果必须在30天内制造出这批电脑并完成交货。于是乔布斯和沃兹尼亚克找来了自己的亲戚朋友,一同在乔布斯的车库里组装电脑,终于顺利交货。

1976年4月到1977年9月,苹果公司一共生产了200台Apple I电脑,这也让他们获得了企业发展的第一笔资金。存世到现在并能正常使用的Apple I电脑已经非常稀少,Apple-1 Registry这个网站记录了已知的各台Apple I电脑的现状。一台能够开机的Apple I在二手市场的行情现在也都是天价,就连现代复制品电路板的价格也在上千RMB。

eBay上目前唯一在售的真品,不含税将近1000万RMB,是在Apple-1 Registry上注册的第79号Apple I

Apple I的成功使得乔布斯和沃兹尼亚克决定进一步完善产品,使其更商业化,要做成一台有着漂亮外壳能接显示器能够被更广泛人群接受的电脑整机,而不是原来面向极客发烧友的电路板原型机。1976年8月,沃兹尼亚克终于完成了Apple II的电路设计,他坚持在Apple I的基础上加上了8个扩展插槽,赋予了电脑更强的扩展能力,同时也实现了彩色显示和声音输出,在ROM中集成了BASIC解释器。正是这些特性,使得Apple II日后能在众多的竞争对手中突围,并将整个系列的生命周期延长到了惊人的16年。

乔布斯也没闲着,他找来了设计师杰瑞·马诺克(Jerry Manock)为Apple II设计了一个既简洁又非常前卫的与众不同的米白色机箱(后来马诺克在1979年也加入了苹果担任设计师)。这在当时一下子就把Apple II和其他灰黑色的冷冰冰的计算机设备区别开了。一台Apple II,放在使用者的办公桌、家里也不会显得格格不入,大家都很容易接受。同时,乔布斯还找来了他在雅达利(Atari)公司的同事罗德·贺特(Rod Hlot)为Apple II设计了一个开关电源,取代线性电源,以使电脑更加轻量化和解决发热严重的问题。后来贺特也加入了苹果公司,成为了第五号员工。

在设计Apple II的期间,1976年的夏天,乔布斯和沃兹尼亚克为了使Apple II能够顺利诞生,扩大公司的规模,不停寻找外部投资。这时他们找到了天使投资人迈克·马库拉(Mike Markkula)。他非常看好苹果公司,投资了现金9万1千美元以及个人担保信贷25万美元,成为当时苹果最大的股东,使得苹果公司在1977年1月3日成为了正式法人组织,并出任了苹果第二任CEO。马库拉在之后也一直非常支持乔布斯,为苹果公司的初期发展提供了很多建设性的意见。

这时,沃兹尼亚克也决定从惠普公司离职,正式成为了苹果公司的全职员工。

惠普非常鼓励工程师创新,它起家于比尔·休利特(Bill Hewlett)戴维·帕卡德(David Packard)租下的爱迪生大街367号的车库,这也被认定为是硅谷的发源地。美国很多科技企业,包括苹果公司的创立都与惠普相关,都受益于惠普的车库文化。我很荣幸能在这家伟大的公司供职八年,在我就职期间,公司仍有鼓励员工每周花费半天时间来创新学习的习惯。

硅谷的发源地,惠普公司的诞生地,爱迪生大街367号的车库我旅美期间摄于2018年10月。很难想象一个伟大的企业从这里诞生并影响了许多行业巨头,惠普的车库文化就是那一时代硅谷精神的缩影。

在1977年4月16日到17日由家庭自制电脑俱乐部的吉姆·沃伦(Jim Warren)创办举办的第一届西海岸电脑展上,22岁的乔布斯和26岁的沃兹尼亚克带着他们的Apple II电脑参展了。同时参展的还有Commodore的PET,它将成为Apple II的强劲对手,在后来Commodore、Apple以及RadioShack的TRS-80系列被称为80年代8位机三雄(欧洲的Sinclair在美国市场商业化并不是很成功)。在这次展会上,乔布斯还认识了一位日本人——水岛敏雄(Mizushima Satoshi),日后他成为了Apple II在日本的第一位代理商。正是在这次展会上,乔布斯开始树立起他独特的发布会的风格,这也是马库拉给他的建议:通过给人们留下深刻的印象从而把你和产品的卓越品质“灌输”给他们。通过这次展会,苹果公司获得了300台电脑的订单,从这以后,销量一路攀升,到1984年,Apple II系列的Apple IIe的销售达到顶峰,一年卖出了100万台Apple II(数据来源参考前文)。

1977年6月5日,Apple II正式上市。它的最初零售价是1298美元(4KB存储器)或2638美元(存储器上限可达48KB)。为了反映其彩色图像显示能力,机箱上的苹果图案着上了彩虹条纹,而这个图案随后成为苹果公司的代表图案,直到1998年初为止。最早的Apple II在硅谷组装,后来移到德州,印刷电路板则在爱尔兰与新加坡生产。

由于市场反应出乎意料的好,使得兼容Apple II的应用软件如雨后春笋的冒出,原来设计的磁带机存储系统难以满足用户快速妥善使用软件和存储数据的需求,而没有磁盘驱动器也成为了Apple II和其他竞争对手相比的一大软肋。

苹果公司开始着手开发磁盘驱动器和 DOS 系统来满足这一需求。磁盘驱动器项目于 1977 年底开始后不久,乔布斯多次前往驱动器硬件厂商舒加特(Shugart Associates)的办公室,和他们沟通驱动器的需求。在沃兹尼亚克完成对 IBM 磁盘控制器设计的研究并完善了自己的设计思路后,乔布斯要求舒加特为他们提供一个减配版(青春版?)的只需 100 美元的低成本磁盘驱动器。该磁盘驱动器没有控制器板、索引传感器、负载螺线管或磁道零传感器。尽管对这个要求感到困惑,舒加特还是遵守并向苹果提供了 25 种驱动器方案,他们可以将其用作为 Apple II 开发磁盘系统的原型。原型机获得了 SA-390 的名称。

沃兹尼亚克同时还研究了 North Star Computers 和其他更复杂的软盘控制器。他认为他的简单设计虽然会缺少一些功能,但这并不重要,因为有些复杂的功能并不需要,并可以用软件来实现。例如,在其他控制器需要大量芯片以在磁盘旋转时同步数据输入、输出、使读写头能正确寻轨及将数据编码转换成磁力信号时,沃兹尼亚克可以使用软件来执行这些操作。他设计的控制器使用的Group Code Recording比更常使用的MFM方式使得以软件实现上述功能更加容易,Group Code Recording可以容纳每个轨道 13 个扇区。沃兹尼亚克把这套磁盘控制器称为Disk II系统,他自称Disk II 系统是“我在 Apple 最令人难以置信的经历和我所做的最好的工作”,并将 Apple II 的成功归功于它和 VisiCalc。

最终沃兹尼亚克在 1977 年的圣诞节假期完成了他的磁盘控制器设计,与当时其他竞争对手的控制器相比,使用的芯片数量减少了 10 倍。但是Apple II仍然缺少DOS系统,而且沃兹尼亚克在操作系统设计方面缺乏经验,乔布斯就该项目与 Shepardson Microsystems 公司接洽。 1978 年 4 月 10 日,苹果与 Shepardson 签署了一份价值 13,000 美元的合同,以开发 DOS。仅用了35天,Shepardson就完成了开发,苹果获得了包括一个文件管理器、一个用于 Integer BASIC 和 Applesoft BASIC 的接口,以及磁盘备份、磁盘恢复和文件复制的实用工具在内的操作系统。

我收藏的一块DISK II 控制卡,这是沃兹尼亚克的得意之作

在1979年6月,Apple II的更新版本Apple II Plus上市了。它在ROM中包含了Applesoft BASIC编程语言。这个由微软编写的BASIC语言也被做成升级卡的形式作为一个升级包提供给Apple II的老用户。它支持浮点运算(但它明显比沃兹尼亚克的Integer BASIC要慢)并成为了后续Apple II系列的标准BASIC语言。Apple II Plus有48KB内存,可借由安装在第0槽的语言卡扩充至64KB。但是,除了48K内存以外,由于Apple II Plus还有12K ROM和4K的其他插槽占用的内存地址(内存映射见后文硬件章节),而Apple II所采用的MOS 6502 CPU支持最大的寻址空间只有64KB内存,因此Apple用地址选择器的方式使语言卡中的扩充内存可暂时“盖过”内置的ROM,并将代码读入该段内存,以使用ROM相同的方式使用它。借此,用户可将Integer BASIC从磁盘读入语言卡内存中,并使用DOS 3.3的INT和FP指令切换使用Integer BASIC或Applesoft BASIC“方言”,如同切换ROM扩充卡一般。

Apple II Plus 上市的价格是1195美元,是的,虽然内存大了,但是价格比Apple II首发价格还低了100多美元。

在第一款Apple II于美国市场获取胜利后,苹果公司于1978年开始将市场拓展到欧洲,发布了Apple II Europlus,并在Apple II Europlus上做了必要的软件、硬件与固件更改以符合美国以外地区的标准。电源供应器被修改过以支持240V电源输入,视频输出信号从NTSC改成PAL制式,键盘格式也作了更改以符合不同语言的需求。Apple II Europlus的生产持续到1983年才停止。

除了进军欧洲,苹果同样也尝试开始拓展远东市场。还记得在西海岸电脑展上的那位日本人水岛敏雄吗?他是日本ESD会社(イーエスディラボラトリ社)的社长,在展会现场他就对乔布斯正在讲解演示的Apple II产生了浓厚的兴趣。1977年8月,他带着以前在东丽的同事曾田敦彦一同来到苹果总部,并以经销商的名义购买了一台Apple II带回了日本,这是出现在日本的第一台Apple II,最后这台电脑被卖给了日本工业大学的一位教授。通过ESD会社,Apple II在日本打开了销路,但ESD的规模过小,他并不是苹果最佳的选择。

1980 年 7 月 2 日 ,苹果与东丽举办了新闻发布会,正式宣告了两家公司的合作开始,当时签署的是有效期为一年的代理合同。东丽成为了苹果在日本的正式销售渠道。与此同时,为了更好地适应日本市场,苹果开发了Apple II J-plus这一型号,以支持片假名的输入与显示。但是由于与现有应用软件的兼容性造成的种种问题,以及市场上例如NEC、IBM等等竞争对手的强力挑战,同时还有来自香港、台湾的仿制机以不到三分之一的价格造成的冲击,Apple II J-plus在日本的销量并不出色。

在续签了一年合约后, 1982 年 6 月,由于无法盈利,东丽结束了两年的Apple II总代理合同,根据合同条款,苹果买下了所有库存(这居然使得东丽扭亏为盈)。后来,ESD会社又成为了Apple II在日本的独家总代,但好景不长,1983年苹果日本公司成立,1983年年底,ESD被单方面告知取消独家代理资格。

苹果公司为了拓展市场,将Apple II销售到教育市场,很早就与 教育设备供应商Bell & Howell 达成了一项营销协议,让他们销售带有 Bell & Howell 铭牌的 Apple II 和 II Plus,供学校使用。 Bell & Howell 长期以来一直通过其强大的电影放映机产品和其他视听设备与教育机构和美国各地的学校建立了良好的合作关系。 通过 Bell & Howell 销售的 Apple II 电脑是黑色的,而不是标准的米白色,在电脑爱好者中它们被称为“达斯·维达(Darth Vader)”Apple II(因为颜色与当年上映的影片星球大战中的帝国反派黑武士相似)。

Bell & Howell贴牌的“达斯·维达”Apple II,图源:www.macgeek.org

Apple II以及Apple II Plus机型在1983年被后续的Apple IIe机型取代。Apple II是苹果公司首款取得市场明星地位的产品,也是苹果王朝的起点。

硬件

事实上,到我写这篇文章的时候,我都还没有一台原装的Apple II或Apple II Plus,我收藏的是几台不同版本的Apple II仿制机以及Apple IIe和IIc。虽然Apple II的仿制机的主板和原装的几乎一致,但我还是从网络找了一张Apple II的主板的照片和仿制机的一起对比来给大家介绍。

Apple II Rev 3 主板

Apple II或II Plus的硬件有多个版本,常见的有 Rev 0、3、4、7这几个版本,它们之间的差别大同小异。可以从上图看到,Apple II的主板规划非常整齐,在主板左侧和下方,纵向用英文A-K(原装的主板没有G和I),横向用数字1-14标明了网格,方便用户很快的找到手册上标识的相应位置的芯片。例如键盘接口在A-7。

Apple II主板和其他同时代的8位电脑相比最大的差别在于上方的八个IO扩展插槽。从左到右依次是0到7号插槽。这一排整齐的八个扩展槽是 Apple II 的一个强大卖点。 与 TRS-80 或 PET 不同,用户只需将卡插入其中一个插槽即可轻松扩展 Apple II。 然而,这也使得Apple II的制造成本更高。 最初乔布斯不认为有人会需要两个以上的插槽(他设想两个插槽一个用于打印机,一个可能用于调制解调器),而沃兹尼亚克从他在惠普的工作经验中知道,计算机用户总是会找到一些额外的需求。于是他坚持一定要有八个插槽并和乔布斯发生了争吵,最终Apple II还是成功的拥有了八个扩展插槽。

插槽的左边是一个6Pin的电源插口,电源给主板供应了±12V和 ±5V的电压。 如同前文所讲,Apple II使用的电源是贺特专门设计的开关电源,取代了那个时代常见的线性电源。虽然很多文章中声称是Apple II引领了计算机电源的变革,发明了开关电源。但事实上,在Apple II之前的几年,已经有多种计算机使用了开关电源,包括 1969 年的 PDP-11/20 小型计算机,1970 年的 Datapoint 2200,1975 年的 IBM 5100 便携式计算机,以及 1976 年的 decsystem 20。当然不可否认的是,Apple II的市场占有率加速了开关电源推广的进程。

在扩展插槽的右侧主板顶端,则是音频输入输出以及视频输出端口。音频输入输出用来接磁带机,这也是Apple II刚上市时唯一存取数据的方式。视频输出使用的格式标准的RCA复合端口,可以连接监视器输出NTSC或PAL制式的图像。提到视频输出,即使按照 1970 年代末和 80 年代初的标准,Apple II 系列的图形模式也很奇特,这是沃兹尼亚克的节省芯片设计的直接结果。和同时代的其他大部分计算机不同,Apple II并没有专用的图形芯片,天才的沃兹尼亚克在ROM里用软件实现了图像和彩色处理,和后来的DISK II磁盘控制卡一样,这种做法大大降低了制造成本。Apple II 的视频输出实际上是基于视频内存(或像素)中的位模式的单色显示,而 这些像素与彩色突发信号正交组合,最终由复合视频监示器解释为彩色(这也是为什么我们看到图形边缘经常会有奇怪色彩条纹的原因)。沃兹尼亚克的巧妙设计为Apple II带来的彩色显示的能力,在当时的竞争对手中脱颖而出,苹果公司为了标榜自己产品的彩色显示,特地将苹果Logo穿上了彩色条纹,这个商标一直沿用到了1998年。

彩虹色的Apple Logo

视频输出接口下方有一个5Pin的排针,这排针中有电源输出和视频输出,以供额外扩展使用。排针下方则是一个DIP16接口的游戏操纵杆接口。这个接口也是沃兹尼亚克在完成Apple II初步设计后添加进去的。当时他针对Atari的游戏机做了一些硬件扩展,于是很自然的,他就想着为自己的Apple II也加上这些功能,然后,这个接口就诞生了。

在八个扩展插槽的正下方就是大名鼎鼎的6502 CPU。这颗CPU是1975年由MOS科技所研发的8位微处理器。在6502刚问世时是当时性能最强的8位CPU,且价格只有大型业者(如Motorola、Intel)相近产品的六分之一甚至更低。低价也是苹果选择它的重要原因。6502和另一个8位CPU Z80一起在上世纪80年代几乎垄断了整个8位机市场,它们推动了整个计算机业的普及。Apple II的采用使得6502成了广为人知的CPU,而MOS科技后来的母公司Commodore发售的Commodore系列8位电脑也大量使用了6502系列CPU。家用游戏机任天堂红白机(使用6502兼容指令集的Ricoh 2A03)也采用它作为CPU。

CPU下方是6颗2KB的ROM芯片(仿制机大多用的EPROM)。ROM起始地址从右到左分别是$D000, $D800, $E000, $E800, $F000, $F800。根据资料,$E000、$E800和$F000的三颗ROM芯片中,装的是Integer BASIC;$F800那颗ROM芯片中则是Apple Monitor程序。关于BASIC和Apple Monitor将在后面详细展开。那么$D000和$D800两颗ROM中装的是什么呢?其实这两颗ROM在所有早期的 Apple II 计算机上都是空的, 主板上有两个空插槽,可供用户插入自己的 ROM 芯片。后来$D000芯片最常用于 Apple 销售的“程序员助手 #1”。 它包含适用于 Integer BASIC 程序员的各种实用工具,包括执行以下操作的机器语言例程:

  • 为BASIC 程序重编行号
  • 将一个 BASIC 程序附加到另一个程序的末尾
  • 验证已保存在磁带上的 BASIC 程序(以确认它是准确保存的)
  • 验证已保存在磁带上的非程序数据
  • 将汇编语言例程重定位到内存中的不同位置(大多数只会在内存中的一个位置运行)
  • Apple II自检程序,用于测试 Apple II RAM
  • 通过内置扬声器产生音乐音调
  • 处理来自 BASIC 的高分辨率图形,包括清除高分辨率屏幕、设置颜色、绘图点和线条、绘制形状和从磁带加载形状的代码

所有这些功能除了音乐例程是由 Gary Shannon 编写之外,都是沃兹尼亚克在 1977 年 6 月(自检程序,RAM 测试例程)到 1978 年 4 月(程序重新编号和追加)之间编写的。

程序员助手 #1

另一个空的 ROM 插槽(涵盖从 $D800 到 $DFFF 的内存)从未被 Apple 填满。 各种第三方供应商都为该插槽出售 ROM。

在ROM下方,一共有24颗芯片组成的RAM系统。这24颗芯片分成三排,每排八颗。由于 6502 处理器可以处理总共 64KB 的内存,因此除掉前文所讲的12KB的ROM空间以及给8个扩展插槽所插的板卡预留的4KB内存空间,剩余可用的空间为48KB。因此这些RAM芯片的插槽被设计为可以使用4K x 1bit 的 RAM 芯片或更新且更昂贵的 16K x 1bit的RAM 芯片(常见的4116芯片)。 第一批出货的 Apple II 计算机标配 4K 内存,最大为 12K(如果都使用 4K x 1bit 芯片,每排八颗正好是4KB,三排就是12KB)或 48K(如果都使用 16K x 1bit芯片,一排八颗就是16KB,三排48KB)。在上图主板上左侧标着16K的三个特殊跳线模块是用来告诉 Apple II 安装了什么型号的内存的(仿制机上貌似少了这个东西)。 根据 1981 年版的 Apple II 参考手册,Apple II可以通过不同的内存芯片搭配拥有以下大小的内存:4KB、8KB、12KB、16KB、20KB、24KB、32KB、36KB 或完整的 48KB。

RAM芯片下方右侧是一个2Pin的排针,用来接内置的扬声器。最下面一排横着的是一颗存储显示字形的ROM芯片,Apple II和Apple II Plus都只有大写字符,大部分仿制机却都有小写字符。苹果直到Apple IIe才引入了小写字符的输入和显示支持。此外,主板最下方还有一个DIP16的键盘接口,用来连接键盘PCB。

Apple II的键盘是由一家注册在加州的公司Datanetics制造的,Apple II键盘键帽的形状和印刷几乎与 Apple-1 上使用的早期 Datanetics 键盘相同。 相比之前的键盘,添加了 RESET 键,在右Shift键上方添加了左右方向键,并加宽了 RETURN 键。 除 G 键上的 BELL 外,所有设计键盘时参考的 Teletype 控制代码名称都已删除。 一个未标记的特殊字符是右方括号“]”,可通过按 SHIFT-M 输入。奇怪的是,虽然苹果官方常常用“Apple ][ ”来表示Apple II,但在Apple II的系统中却无法输入”[“以及”\”和”_”这三个字符。

我收藏的一台仿制机的主板,是否和原装的很像?主板上写着制造商是MCA,来自日本

内存映射

Apple II的这些硬件是如何组合在一起工作的呢?首先,扩展插槽、ROM、RAM、扬声器、音频输出(串口)等所有的硬件都在内存中映射有一个唯一的地址,就像门牌号那样,处理器要访问这些硬件就需要知道他们的地址。Apple II的内存映射表如下:

$0000-$00FF:6502 处理器使用它来存储可以快速访问的信息。 一般情况下很少开放给程序员使用这个内存区域。
$0100-$01FF:6502 将其作为“堆栈”用于内部操作。
$0200-$02FF:BASIC环境下键盘输入或向固件例程进行输入时,Apple II 固件将其用作输入缓冲区。
$0300-$03FF:通用存储区。从 $03D0 到 $03FF,磁盘操作系统和固件使用这些空间作为指向内部例程的指针。
$0400-$07FF:40列文本模式下的显存。
$0800-$BFFF:可供程序、操作系统和高分辨率图形使用。 在这个空间内,沃兹尼亚克指定页面 $08-$0A 作为辅助文本和低分辨率图形页面(固件不直接支持它,因此不容易直接使用),页面 $20-$3F 为高分辨率图形页面的第一页,高分辨率图形的第二页的地址为 $40-$5F。
$C000-$C0FF:内部 I/O 硬件和软开关的地址。
$C100-$C7FF:分配给扩展插槽的地址空间。
$C800-$CFFF: 分配给扩展插槽的额外可切换的地址空间。
$D000-$D7FF:空 ROM 插槽 #1,一般用于插苹果或第三方发行的扩展ROM模块。
$D800-$DFFF: 空 ROM 插槽 #2 ,一般用于插苹果或第三方发行的扩展ROM模块。
$E000-$F7FF:Integer BASIC ROM
$F800-$FFFF:Monitor ROM

总线架构

有了内存地址映射后,处理器就可以和这些硬件进行数据交换了。在Apple II的硬件设计中,处理器是通过地址总线和数据总线来和内存、ROM、扬声器、扩展插槽中的板卡等等硬件来协同工作的。通过Apple II的总线架构图就能一眼看明白这之间的关系和工作流了。下图是我从《Understanding the Apple II》这本书中摘取的Apple II总线架构图。

图片版权:《Understanding the Apple II》, Jim Sather, 1983 Quality Sofware

在图中红色的是地址总线,绿色的是数据总线。6502处理器(图中称为MPU)通过地址总线访问某一内存地址,通过指令控制读取或写入的动作,数据则通过数据总线读取或写入。值得注意的是图片的下方有一个地址解码器,它负责解析内部硬件和软开关所分配到的地址(上文中内存映射表中$C0开头的地址),并指向相应的硬件。以图中的例子为例,当我们把沃兹尼亚克的得意之作DISK II控制卡插在Slot 6插槽中时,这块卡的通信地址是$C0EX,其中输入端口为$C0EC、输出端口为$C0ED,除此以外还能通过$C0EX的其他地址来实现控制电机、选择驱动器、磁头定位、读写配置等等动作。DISK II控制卡上还有PROM芯片,里面存了256字节的固件程序数据,处理器也可以通过$C6XX的地址来访问这个ROM空间。DOS操作系统正是通过这种方式来读取卡中的固件程序从而使用驱动器的。

图中还有一个例子是音频输入输出。当我们通过磁带机来读取程序和数据时,系统实际上是通过接收串口来读取数据的。串口输入的地址是$C06X,事实上指向磁带机音频输入的串口地址是$C060。读取磁带机音频输入的工作状态就和读取ROM类似,只不过由于是串口输入,读取进来的八位数据只有D7(八位数据,D0-D7,最高位D7)是有效的,因此6502处理器只要通过数据总线读取并处理D7位的数据就可以了。

磁带机的音频输出却是有点特别,地址是$C020,但输出数据并不是我们想象那样是通过数据总线来输出(图上没有绿色的数据总线到$C02X),而是通过访问$C02X地址(通常是$C020)来告诉输出端切换电平状态,因此串口信号的输出方式是通过定期访问地址来改变电平状态实现的。

我再举一个图上没写的例子。主板上的扬声器的内存映射地址是$C030(十进制-16336),因此可以在BASIC程序中,通过SPEAKER=PEEK(-16336)的方法来使扬声器发出短促的声音。

我的仿制机一样可以PEEK扬声器的内存地址

BASIC

Apple II最初的BASIC是由沃兹尼亚克编写的,被称为Integer BASIC,储存在ROM中,开机即可使用。这个版本的BASIC提供了彩色支持。神奇的是,苹果公司从未拥有过这个版本的BASIC的汇编语言源代码,沃兹尼亚克是直接用机器语言开发的。根据沃兹尼亚克的自述,他不用汇编写的原因是没钱……因为汇编的编译器在当时要花几千美金,于是他从一个朋友(他的朋友个个都很厉害)那学了一招:拿出一张白纸,在纸的右侧写下指令,左侧写下地址,然后查找每条指令的十六进制数据,手动排序这些指令,进行手工汇编。就这样沃兹尼亚克的这个Integer BASIC就有了一个手抄本,机器语言的代码全部是手工写出来的。

虽然是纯手工用机器语言编写的,但这个 Integer BASIC 解释器Bug非常少。已知的少数错误之一是涉及单字节的处理错误。如果输入的一行括号过多,则会显示“TOO LONG”错误消息而不是“TOO MANY PARENS”消息。另一个错误涉及 FOR – NEXT 循环嵌套太深(即在一个 FOR – NEXT 循环内有另一个 FOR – NEXT 循环)。如果程序反复进入循环的开头而没有碰到 NEXT 语句,最终会导致程序崩溃。

在Apple II Plus推出后,沃兹尼亚克手工编写的 Integer BASIC 已经一去不复返了,取而代之的是更新的由微软(Microsoft)提供的 Applesoft BASIC(作者是 Marc McDonald 和 Ric Weiland,这两位也是微软的传奇人物)。 由于两个版本的 BASIC 使用相同的内存映射位置,因此它们不能同时使用。 随着Apple II Plus 的推出,Apple 还发布了 Applesoft 固件卡。 这张卡插入插槽 0,使以前的 Apple II 用户无需购买全新的计算机即可享受Apple II Plus 的一些好处。 但是,即使使用那张卡,也无法在另一个 BASIC 处于活动状态时使用其中一个 BASIC 的功能,并且从一个 BASIC 切换到另一个会删除当时正在编写或使用的任何程序。 用户可以通过它们使用的提示符来区分当前在使用哪个版本的BASIC: Integer BASIC 使用“>”字符,而 Applesoft BASIC使用“]”字符。

Apple Monitor 程序

Apple II的Monitor程序是基于沃兹尼亚克的Apple I中的Monitor程序改进而来的。沃兹尼亚克想增加一些功能,以便能够提供额外的命令来管理特定内存位置的数据。

事实上,Apple II中的Monitor程序是沃兹尼亚克的朋友 艾伦·鲍姆(Allen Baum) 帮忙改进的。还记得这位哥们么?正是他介绍沃兹尼亚克去惠普工作,又是他介绍沃兹尼亚克加入了家庭自制电脑俱乐部(我查了下鲍姆的Linkedin简历,发现他俩应该是在沃兹尼亚克大二暑假在Tenet公司实习时认识的)。 鲍姆帮助编写了处理屏幕文本显示的代码,以及创建和处理不同大小文本窗口的能力(即,在标准的 24 x 40 文本屏幕内创建一个或多个用户定义的文本空间,仅在该文本屏幕内滚动文本)。 Monitor 还集成了磁带输入/输出的例程,因为 Apple II 中包含了对这些硬件的支持。

鲍姆和沃兹尼亚克曾在 1976 年 9 月的 Interface Age 杂志上发表过 6502 反汇编程序的代码。这使得检查和调试代码变得更加容易,而且它本身也是家庭自制电脑俱乐部哲学的产物,即让所有人都可以使用所有的计算机知识。发表的文章是苹果“免费或以最低收费”提供软件文化的一部分。 Apple II Monitor 中包含此反汇编程序的改进版本。它成为 Apple II 最重要、最独特的功能之一,也是其开放式设计的重要组成部分。它允许任何人查看任何程序使用的 6502 代码。 最终由于功能的增加,Apple Monitor程序的大小从 256 字节(在 Apple I中)增加到 2,048 字节(2K, $F800-$FFFF , ROM F8)。

在开发Apple II Plus时,1978 年 11 月,苹果公司的约翰·阿克利(John Arkley)编写了对原始 Monitor ROM 的更改并创建了 Autostart ROM(他是 1981 年版 Apple II 参考手册中的源代码列表中提到的“John A”,苹果第88号员工)。在阿克利完成工作并创建 ROM 之后,Apple 开始着手编写新版本的参考手册以涵盖 Apple II Plus。较早的参考手册(被亲切地称为“红皮书”)包含了 Monitor ROM 的汇编语言源代码列表。他们想包含两个版本的 Monitor 的源代码,但出现了问题。在开发 Monitor 时,Apple 使用了一种称为“Call Computer”的本地大型计算机拨号服务(感觉类似现在的云计算啊)。他们在该计算机上使用交叉汇编器汇编代码,然后使用生成的目标代码创建 ROM。 (交叉汇编程序是为处理器创建目标代码的程序,而不是运行交叉汇编程序的处理器。例如,如果使用在基于 6502 的计算机上运行的汇编程序编写 8080 机器代码,这就是在使用一个交叉汇编器)。不幸的是,Call Computer 意外地在源磁盘和目标磁盘颠倒的情况下进行了系统备份,擦除了包含 Apple II Monitor源代码的所有文件。 Apple 没有提供 Autostart ROM 源代码的磁盘或磁带副本。根据红皮书中的源代码列表,阿克利为原始 Monitor 程序重新创建了源文件,然后为 II Plus 反汇编了他自己的修改并重新创建了他的 Autostart ROM 源文件。这些重建的列表出现在 1981 年版的 Apple II 参考手册中。

Apple DOS

当 Apple Computer 在 1977 年 4 月推出 Apple II 时,没有磁盘驱动器或磁盘操作系统 (DOS)。尽管苹果联合创始人沃兹尼亚克在那年晚些时候设计了 Disk II 控制器,但还缺少一个操作系统来支持。乔布斯决定外包这项任务。最开始苹果考虑使用 Digital ResearchCP/M,但沃兹尼亚克想寻求一种更易于使用的操作系统。 1978 年 4 月 10 日,苹果与 Shepardson Microsystems 签署了一份价值 13,000 美元的合同。Apple 提供了详细的规格,苹果员工 兰迪·惠金顿(Randy Wigginton) (他是苹果第六号正式员工)与 Shepardson 的 Paul Laughton 密切合作,最终在 35 天内成功交付了Apple DOS。

Apple DOS 没有版本1或版本2。版本 0.1 到 2.8 在开发过程中被连续修订。Apple DOS 3.0其实就是原来的2.8 版,仅仅是把版本号重新定义了而已,由于Bug较多也从未公开发布过。苹果在 3.2 版之前没有发布过任何官方文档。

Apple DOS 3.1 于 1978 年 6 月公开发布,比 Apple II 推出晚一年多一点,成为了 Apple 计算机的第一个基于磁盘的操作系统。后来发布过一个Bug修复版本,通过其 MASTER CREATE 实用工具解决了一个问题,该工具用于创建 Apple DOS 的可引导磁盘。内置的 INIT 命令创建的磁盘只能在至少具有与创建它时有相同数量内存的机器上启动,而MASTER CREATE创建的磁盘能在任何内存配置的 Apple II上启动。

Apple DOS 3.2 于 1979 年发布,以适应 Apple II 的后继产品 Apple II Plus 启动方法的变化。Apple II Plus的固件包括了一个Autostart ROM,它会在系统启动时自动找到磁盘控制器并从它启动。 1979 年 7 月发布了DOS 3.2.1, 修复了一些Bug。

Apple DOS 3.3 于 1980 年发布。它改进了 3.2 版的各种功能,同时也增加了软盘存储的空间。配套的DISK II磁盘控制器中较新的 P5A/P6A PROM (前文所提到的控制卡上的ROM)能够以更高的密度读取和写入数据,因此每个磁盘磁道可以存储 16 个扇区(4 KB)而不是 13 个扇区(3.25 KB)的数据,从而增加了每个磁盘的容量,从113.75 KB增加到了140 KB。其中 16 KB 用于文件系统开销和 DOS 副本,剩下的 124 KB 用于用户程序和数据。然而,DOS 3.3 不向下兼容,它无法读取或写入 DOS 3.2 磁盘。为了解决这个问题,苹果发布了一个名为“MUFFIN”的实用工具,用于将 Apple DOS 3.2 文件和程序迁移到 3.3 版磁盘。而为了将 Apple DOS 3.3 文件迁移回 3.2 版磁盘,有人编写了一个“NIFFUM”实用程序(这并非是苹果官方提供的)。还有一些商业工具(例如 Copy II Plus)可以从任何一种格式复制文件。如果计算机有语言卡(RAM 扩展)或固件卡,3.3 版还改进了在 Integer BASIC 和 Applesoft BASIC 之间切换的能力。

我的Apple II

前文也提到过,事实上,到我写这篇文章的时候为止,我还没有一台原装的Apple II或者Apple II Plus。我一直在eBay蹲点,期望能找到一台价格合适的购买后收藏。

我的Apple II系列收藏是从一台仿制机开始的。今年4月的时候我从闲鱼收到了一台仿制机。可是到货后却无法点亮。经过诊断,首先是发现开关电源电压输出不正常,于是我尝试更换了开关电源里的电容。但是电压是正常了,开机还是显示不正常。于是怀疑芯片和IC座接触不良导致问题,把所有芯片都插拔了一遍,但还是无法解决问题。最后只能耐心的用万用表测试每个芯片的每个引脚接触是否良好。最后发现BASIC ROM不管怎么插拔接触都有问题。仔细观察后发现由于存放时间久远芯片引脚已经氧化,于是用砂纸稍微打磨一下,终于成功点亮。

这台仿制机的机壳无论怎么洗也洗不干净,为了让它焕发新生,一不做二不休,我买来了喷漆罐,直接上喷漆。结果效果真的不错,就像台新的一样,太帅了。Apple II的Logo部分,我从网上下载了一个图片修改后用彩色打印机打印先凑合用着,后来群友@老谢 趁着天晴给我做了个金属版本的Logo,像真的一样,再次感谢 @老谢 的手艺!

后来机缘巧合我又收了一批Apple II仿制机,主板有多个版本,后面我会专门写一篇来介绍。

总有一天我会拥有自己的苹果原装Apple II的。

后记

写这篇文章断断续续花了我两个周末,期间查阅了很多资料,也了解学习了很多Apple II硬件相关的知识。感触最深的莫过于沃兹尼亚克和乔布斯的牛人朋友们(折腾来折腾去,就那么几个哥们一起快乐地干活),为了要做到一个共同的目标,在各自擅长的领域付出了万分努力。他们的成功固然有天赋、有机缘巧合的因素存在,但更重要的是,他们坚持自己的想法,并为之付出一切。真的,那个时代,硅谷的创新精神无出其右。相比现在,互联网时代的人们也许更多了一丝浮躁。让我们静下心,思考自己真正想要做什么,并坚持努力为之付出,一定会有好的结果。

参考

  • http://oldcomputers.net/appleii.html
  • https://apple2history.org/
  • https://zh.wikipedia.org/wiki/Apple_II
  • https://zh.wikipedia.org/wiki/斯蒂夫·沃兹尼亚克
  • 《Understanding the Apple II》, Jim Sather, Quality Sofware 1983年出版

链接

  • http://wiki.apple2.org/
  • https://apple2history.org/
  • https://www.callapple.org/
  • https://mirrors.apple2.org.za/
  • https://apple2online.com/
  • https://github.com/cbmeeks/Apple-II-Resources
  • http://6502.org/

One thought on “苹果王朝的起点——Apple II

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据