对大多数人来说,Amiga可能是Amiga 500的代名词,而该机器首先是一个视频游戏:您将3.5英寸的软盘插入其中,将您带入了奇特的,奇妙的世界和欢乐的时光。游戏玩家,操作系统并不重要,他们大概只启动了Workbench 1.3,仔细查看了华丽的蓝色和橙色界面,并决定足够了,然后再回击《蚕》中的敌人。
那么为何不?该机器非常适合游戏。关于Amiga具有突破性的音频和视频功能的大量精彩文章。
本文是关于Commodore生产的AmigaOS的更高版本,从2.0到3.1。虽然这些较新的版本(分别于1990年和1992年发行的专业)确实引以为傲,并且在很大程度上是向后兼容的,但AmigaOS 2.0的出现标志着范式的转变。最好的标志是这一转变,AmigaBASIC(任何自重的80年代家用计算机中普遍存在的强制性语言)已被ARexx取代并被ARexx取代,ARexx是一种没有任何图形或声音功能的专业脚本语言。
这种范式的转变也是为什么我们中有这么多有幸碰到这些版本的人如此绝望地依附在Amiga上的原因。在Commodore逝世数年后的90年代末,我们中的许多人坚持了下来。而且我们非常凶猛:如果您认为今天的Apple粉丝讨厌,请感到高兴,您1995年没有遇到Amiga狂热者。事情很快就变成了个人。这真是丑陋。
在家用PC是具有8个字符文件名的单任务DOS盒,而Ataris和Mac是单任务GUI盒的时代,这使任何黑客都明显缺乏CLI,这使Amiga成为了两个领域的拥护者: CLI和GUI充分利用了两者的优势,但除此之外,还有很多话很难传达。
很多次我遇到激怒的Amiga用户,他们在一些在线论坛上试图用几句话来解释Amiga操作系统的强大之处。可以理解的是,它通常可以归结为类似于“就像UNIX”的东西,我一直认为这对两个系统都不公平。
当然,这是一个具有功能强大的命令行的早期多任务处理系统。同时,它还是一个成熟且一致的桌面环境,其用户友好性水平比今天的MacOS X更像任何传统的UNIX。但是,与当今的MacOS相反,它从未使最终用户陷入困境。它打开机器,而不是关闭某些零件。
与UNIX不同,AmigaOS是一个为家用计算机设计的系统,缺少使UNIX如此流行的很多功能:内存保护,多用户支持,源代码可移植性和内置的网络支持。
但是,它们在一方面非常相似。像UNIX一样,Amiga的操作系统是许多小技巧的集合,这些技巧使它们变得比其各个部分的总和还要大。
我邀请您与我一起探索这种创造力。但是首先,让我们对术语进行排序。
Amiga的操作系统已被许多人称为很多事物,因为它包含许多组件,不同类型的用户或多或少与之交互。让我尝试清理一下:
在Commodore时代,这从来都不是正式名称,但是它是一种整体描述以下所有组件的便捷方法。
这基本上是Amiga的固件,位于ROM芯片中。在2.0版及更高版本中,ROM芯片的大小为512 kB,不仅包含用于自我测试和引导的代码,而且还包含AmigaOS其他部分的相当大的部分。
粗略地说,这是命令行界面,设备驱动程序,文件系统管理等。它最初是基于TRIPOS的,直到今天仍在显示。 (有比3.1版更高的AmigaOS,但本文仅涵盖Commodore发布的版本。)
与现代桌面合成器最相似,Intuition可以处理屏幕更新并管理窗口。 Amiga中的定制声音和视频芯片主要使用女性名称(Paula,Denise和后来的Alice),因此我认为Intuition是抽象层的合适名称,该抽象层允许OS与它们进行接口。
它通常与“ AmigaOS”互换使用,但实际上只是桌面环境的名称-它是一个工作台,而不是桌面:程序称为工具,文件夹称为抽屉,数据文件称为项目。
并不是操作系统本身的主要部分,请求者是Amiga对话框的名称。例如,“文件请求者”是文件选择对话框。我仍然经常用这个术语来描述任何平台上的任何对话,这使朋友和同事感到困惑。旧习难改。
设备(类似于UNIX)通常代表连接到计算机的外围设备,例如存储介质,打印机等。Amiga具有许多自动安装的内置设备,例如内部软盘驱动器DF0:和串行和并行端口,分别是SER:和PAR :。其他常见设备是DF1 :,第一个外部软盘驱动器,DH0 :,给可启动硬盘分区的通用设备名,以及CON :,文本控制台。还有一些不能挂载但只能通过编程访问的设备。语言,例如用于连接硬件时钟的timer.device。
安装的设备(例如DF0,DF1,DH0)可以包含一个卷。对于DH0:是可引导的硬盘驱动器分区,该卷是固定的,并由该分区的名称表示,例如System:或Boot:。如果将Deluxe Paint程序磁盘插入内部软盘驱动器,则设备DF0:中的当前音量将为DPaint:。
全新启动后,Amiga Workbench。左侧是设备图标,用于RAM磁盘和硬盘驱动器分区。其他图标代表各种应用程序,它们放置在桌面上以便于访问。单击图像可获得完整分辨率。
Amiga始终有一个可供使用的RAM磁盘,设备名称始终为RAM:。没有安装,没有第三方软件-它只是坐在那里等待。这本身很聪明,但是真正巧妙的地方在于它是动态分配的。这意味着RAM磁盘的大小与系统上当前可用的可用内存量相对应,并且它所占用的内存永远不会超过容纳当前存储在其上的文件所需的内存。
RAM磁盘在今天听起来可能有些深奥,但是在机械硬盘和软盘速度缓慢的日子里,它是解压缩档案,运行测试编译和存储临时工作文档的天赐之物。
缺点是每次重新启动计算机时,RAM磁盘的所有内容都会丢失。这带我们去...
RAD(以某种方式表示可恢复Ram磁盘)是AmigaOS灵活性和独创性的又一证明。 RAD磁盘是固定大小的RAM磁盘,它不仅可以在重新引导后幸存,而且还可以从中引导。它可以用作小型但非常快的微型硬盘驱动器,也可以将其提取到磁盘中以检查其内容。
比例滚动条是一种滚动条,它会根据其所代表的可滚动内容的大小而增长和收缩:
突出显示这样的功能似乎很愚蠢,因为今天所有滚动条都是成比例的。在糟糕的过去,情况并非如此:据我所知,直到Windows 95和Apple,Microsoft才实现它们,直到1999年,MacOS 9才实现。在计算机鼠标没有滚轮的时代,确实是一个不错的功能。
上面,Ed用于编辑S:Shell-Startup,相当于.bashrc forAmigaShell。编辑器当前处于命令模式,准备删除一行文本。单击图像可获得完整分辨率。
AmigaOS附带了三种不同的文本编辑器:Ed,Edit和MEmacs。您猜想后者是Micro Emacs的一部分,它当然会吸引Emacs粉丝。另外两个名称有点奇怪:Edit是一种行编辑器,与UNIX上的版本非常相似。另一方面,Amiga的Ed是全屏编辑器,具有鼠标支持和广泛的命令语言。 Amiga Ed可能最好与vi相提并论。
他们三者都是有能力的和强大的编辑器。 MEmacs和Ed都使用Amiga的下拉GUI菜单,并支持宏和广泛的配置。
如前所述,Ed的命令模式有点像vi。请考虑以下示例:
移动到文件顶部,重复(RP)用“ gubbe”替换“数据”,直到文件结尾:T; RP E / data / gubbe /
移动到文件顶部,找到所有出现的“ gubbe”,并在每次出现后插入三行空白行,重复直到文件结尾:T; RP(F / gubbe /; 3A //)
ARexx是IBM REXX语言的改良版和Amiga标准化版本。它是一种功能强大的(尽管有些时候已经过时了,但是)通用脚本语言,具有出色的功能,可轻松进行字符串解析。
通过进程间通信接口,它也可以充当带有所谓的ARexx端口的各种程序之间的“胶水”。例如,如果您的文本编辑器和Desktop Publishing软件包都具有ARexx端口,则可以编写一个脚本,通过使用ARexx与它们进行交互,将在编辑器中刚编写的文本自动插入到桌面发布程序中。
上面描述的编辑器Ed通过其ARexx端口公开了其命令语言,从而允许用户创建高度高级的文本处理脚本。
在上方,我们可以看到Ed编辑ARexx脚本。下面是一个使用Ed自己的ARexx端口向Ed发送指令的AmigaShell窗口。我刚刚发送了命令T; RP E /g./global./,将复合变量g重命名为更具描述性的global。单击该图像可获得全分辨率。
虽然AmigaDOS确实有CD命令,但通常不需要它。任何评估为有效路径的命令都会自动将当前工作目录更改为该路径:
OFS(旧文件系统)和FFS(快速文件系统)是Amiga的本机文件系统。由于操作系统具有模块化和独创性,Amiga可以像UNIX一样处理任意数量的文件系统。 CrossDOS附带的OS 3.0版是一种用于安装MS-DOS FAT卷的实用程序-但也弹出了很多其他版本,从第三方本地替代FFS到端口(例如EXT2)。
在上面的屏幕截图中,我使用了AmigaShell来安装CF0 :,这是一个紧凑型闪存卡读取器,我也可以双击设备驱动程序图标(在屏幕截图中标记)进行安装。我正在使用AmigaShell中的info命令来检查设备,它当前包含使用FAT32文件系统格式化的卡。
分配是一种伪逻辑卷,可以指向任何路径。这对于深度目录结构非常有用。假设您在Work:Code / ARexx / WebServer中有一个当前的编程项目,经常键入是很少的。通过创建ASSIGN wserv:Work:Code / ARexx / WebServer分配,现在可以通过引用wserv:将文件和CD访问到项目目录。
分配也可以跨越多个物理卷。 Amiga查找动态库的标准分配是LIBS :,它指向当前启动卷的Libraries目录。但是,如果您正在编写一个新的此类库,而又不想在测试时用您的系统开发版本乱丢系统目录,该怎么办?
上面我们可以看到在AmigaDOS中创建目录,输出重定向和分配的示例。注意SomeFiles:如何在两个不同的目录中分配点,让Ed使用一次分配就可以无缝地从两个目录中加载文件。单击图像以获得完整分辨率。
与UNIX中的库很像,这是在不同程序之间共享通用功能的一种方式。 Amiga库始终是动态链接的,但是由于某种原因,向后兼容性似乎从来没有任何问题。对于最终用户而言,通常情况下一切正常。
Commodore附带了AmigaOS带有库的功能,从数学函数到ASL(用于创建文件和字体请求者)的所有内容。
程序员要求用户选择文件或字体的最简单方法是通过ASL库。使用标准化的API,可以将用于保存或加载文档的请求者(对话框)呈现给用户。对话框具有模式匹配和键盘导航功能。
编辑路径,为其内容添加模式匹配(“ globbing”)。代字号(〜)用于排除匹配。单击图像可获得全分辨率。
从某种意义上说,数据类型有点像文件格式的动态库。如果它支持数据类型,而不是仅依靠图形程序的功能来实现每种可能的文件格式的加载程序,它就可以加载系统中安装了数据类型的任何格式的图像。
这是将来验证软件的一种好方法,可确保即使是较旧的程序也可以加载和显示较新的图像格式。当PNGformat于1996年创建时,许多早于几年的Amiga程序就可以使用作为免费软件发布的第三方PNG数据类型来加载这些图像。
在上面的屏幕截图中,Ed用于编辑ARexx脚本,该脚本利用共享库与数据类型接口以识别文件格式。该脚本用于为作为脚本参数的任意文件加载适当的文件查看器-如果需要的话,这是一种原始管道。单击图像可获得完整分辨率。
尽管AmigaOS没有像UNIX手册页这样的在线文档,但它确实具有CLI程序读取参数的标准化方法。 ReadArgs函数有助于实现这一点,该函数旨在帮助程序员实现这种读取参数的方式。
? (问号)参数始终生成命令的参数及其种类的列表,然后等待用户输入所述参数:
那么这是什么意思?这意味着FILE可以是多个字符串(/ M),并且是必需的参数(/ A);同时,ALL,QUIET和FORCE是布尔标志或开关(/ S)。
还有关键字(/ K),数字(/ N)等几种模式。一旦掌握了它,它就会成为刷新内存的非常有用的参考系统,并且参数名称往往具有奇怪的明智名称。
ReadArgs令人耳目一新,易于在Shell脚本中实现,即使在最简单的任务中也能确保符合标准。
在上面的屏幕截图中,我们可以看到使用.key FNAME / A将ReadArgs-stylearguments添加到shell脚本有多么容易。还要注意使用$ VER向文件添加版本信息是多么容易。最后,我们可以看到脚本运行了?参数,触发AmigaDOS列出脚本的参数。单击图像可获得完整分辨率。
AmigaGuide是一种早期的超文本格式,最初由Commodore用于其官方开发人员文档,但已作为AmigaOS 3.0及更高版本的标准组件提供。与现代HTML相比,它很简单:它无法显示嵌入式图像或播放背景声音,但是您可以创建指向任意文件的链接,然后分别显示这些文件。
它迅速流行起来,不久之后,大多数免费软件,共享软件和公共领域程序都随附有AmigaGuide文档。
最初,程序的硬盘驱动器安装是使用Shell脚本进行的。看到此类脚本造成的破坏,Commodore最终创建了一个标准化的软件安装程序。这是一个出色的小工具,用于选择安装路径,创建目录,比较文件版本,复制文件和修改启动脚本。
强大的安装程序。请注意进行空运行(“假装安装”)和记录安装过程的选项。单击图像可获得完整分辨率。
几乎所有开发人员都立即采用了此功能,包括PD /免费软件的编写者,这在最终用户中大受欢迎。直到今天,我笨拙的Amiga软件的安装程序仍然是我用纯功能语言编写的唯一真正有意义的事情:安装程序脚本完全用LISP编写。
由于具有LISP方言的强大功能以及可轻松访问Amiga的GUI小部件的子集,因此Installer也已用于创建简单的冒险游戏。
每个Amiga安装看起来基本相同,尤其是在真正重要的地方。我们已经介绍了共享库及其在LIBS中的位置:。其余系统文件使用相同的模式:设备驱动程序始终在DEVS:中,文件系统驱动程序和其他低级内容在L:中,AmigaDOS命令属于C:shell脚本(包括启动脚本,启动) -序列和用户启动)位于S:中,字体始终位于FONTS:中,依此类推。
某些程序(其中大多数是AmigaDOS命令)可以置于驻留状态-即,存储在内存中以备将来使用。这有助于避免执行某些任务时过多的磁盘访问。
AmigaDOS有一个用于询问用户“是/否”问题的简单命令,称为“询问”。在版本3.0中,Commodore引入了命令RequestChoice(用于创建多选GUI请求程序)和RequestFile(用于打开文件请求程序)。一个很好的示例,说明如何在AmigaOS上集成GUI和CLI环境。
有点像MacOS X,如果您将磁盘交给热情的Amiga新手,并要求在其上复制一些文件,则可能会发现磁盘上散布着毫无用处的奇怪文件。它们始终与另一个文件具有相同的名称,但以“ .info”结尾。
这些是Amiga的图标文件,不仅包含实际的图标图像,还包含一些元数据。对于数据文件,这可以是用来打开文件的程序,这意味着,如果双击使用Deluxe Paint创建的图片,则将启动Deluxe Paint,然后加载有问题的图片。这称为文件的“默认工具”。
.info文件还包含位置信息:图标在其父窗口中的所需坐标。对于抽屉(目录)图标,它还存储了打开的窗口的大小和位置以显示其内容。
其他值得注意的元数据由工具类型表示,可以描述为程序的设置或参数。例如,这种工具类型可用于控制Deluxe Paint是否应显示鼠标指针当前位置的坐标。
Deluxe Paint的文件和图标信息。除了图标图像和工具类型外,还提供了其他未存储在图标中的文件元数据:文件系统处理保护标志(模式位)脚本,已存档,可读等,并具有编写有关文件的注释的功能。我们还可以看到运行程序时使用的文件大小,日期戳和堆栈大小(以字节为单位)。
带有独立图标文件的系统在今天看起来可能很奇怪,但是这种方法除了具有集中的图标存储功能或将图标嵌入二进制文件之外,还意味着可以轻松地在系统之间传输工具类型,默认程序和位置信息。它还使用户可以自由修改或绘制新的程序图标,或者在希望节省磁盘空间的情况下完全删除它们。
虽然肯定不是UNIX的克隆,但Amiga仍然是进一步解决其他操作系统的一个很好的准备平台.1995年,当我第一次偶然发现Linux(和其他* nixes)时,很多本能
......