Oberon/ETH Oberon/教程/应用
这些教程页面由 André Fischer (afi) 编写,并由Hannes Marais提供编辑协助,托管在ETHZ,并保留在ETH 许可证下。相关内容可通过 Book.Tool 在系统中找到。扩展内容也可在纸质版上找到。一些教程页面位于WayBack 档案中。
此版本附带了一组应用程序,更准确地说,是系统扩展。原则上,这些应用程序包含在当前 Oberon 系统 3 的 APPS 子目录中的归档文件中。如果后者命名为“OBERON”,请使用System.Directory C:/OBERON/APPS/* ~列出它们。因此,要运行它们,必须先安装它们。
在下文中,我们将
- 逐一审查这些应用程序
- 提出一种安装程序,以便临时运行应用程序(外观和感觉),直到将其丢弃而不留下任何痕迹,或将其作为有价值的系统扩展采用到您的生产环境中。
组件:Desktops.OpenDoc ASCIITab.Arc。
您可以使用 ASCII 字符表将扩展字符插入文档中,这些扩展字符在大多数键盘上都找不到。这些包括出现在某些国家字母表中的重音字符,以及符号字体中提供的特殊字符,例如 Math12.Scn.Fnt。
此模块的主要功能是创建一个可视化小部件,该小部件表示一个 8 行 32 列的表格,其中包含 256 个 8 位组合的可打印字符,如 Oberon 中定义的那样。可视化小部件生成器是 ASCIITab.NewFrame。使用 Columbus 检查表明它具有名称和字体属性。
- 将插入符号设置在适当的位置,以插入表格。
- 使用Gadgets.Insert ASCIITab.NewFrame ~插入表格。默认情况下显示 Syntax10.Scn.Fnt 的字符集。
使用鼠标中键单击任何表格元素将在插入符号处插入表示的符号(如果设置了插入符号,当然)。
可以通过修改表格的字体属性中的字体名称来更改字体。
组件:Desktops.OpenDoc Calc.Arc。
计算器由在任何合适的 Oberon 文本查看器(文本小部件、文本文档)中编辑的一组 Oberon 命令控制。结果显示在系统日志中。计算器是由 cas 于 1993 年创建的一个旧应用程序。
- 打开Desktops.OpenDoc Calc.Tool以显示一些可以使用计算器执行的操作示例。
- 练习这些示例并在系统日志中观察结果。
- 在您选择的查看器中编辑您自己的操作并执行它们。
计算器使用以下命令控制
Calc.Reset - 重置计算器并删除所有由 Calc.Set 命令定义的用户定义变量。
Calc.Set name := expression ~ - 将表达式的值赋给命名局部变量。
Calc.List - 列出函子(作为提醒或帮助函数)、pi 和 e 的值,以及已使用的定义变量的名称和值。
接下来的四个命令都以表达式作为参数。表达式的语法由以下语法定义
Expr = Term {AddOp Term}. Term = Factor {MulOp Factor}. Factor = Atom {PowOp Atom}. Atom = Number | Functor Atom | ident | "(" Expr ")". PowOp = "^". MulOp = "*" | "/" | "%" | "<" | ">". -- % modulo, < shift left, > shift right AddOp = ["+" | "-"]. -- no add op: addition(!) Number = (digit {digit}) | (digit {hexDigit} "H") | (digit {hexDigit} "X") | (""" char """). Functor = "arccos" | "arcsin" | "arctan" | "cos" | "entier" | "exp" | "ln" | "short" | "sign" | "sin" | "sqrt" | "tan".
所有运算符都是左结合的,除了“^”是右结合的。
Calc.Char expression ~ -
Calc.Dec expression ~ -
Calc.Hex expression ~ -
Calc.Real expression ~ -
组件:Desktops.OpenDoc Games.Arc。
此 Oberon 系统 3 发行版包含三款纸牌游戏:纸牌接龙、蜘蛛纸牌和空当接龙,以及另外四款游戏:扫雷、文字接龙、推箱子以及俄罗斯方块。它们在游戏中进行了描述。
组件:Desktops.OpenDoc HPCalc.Arc。
惠普计算器仍在开发和改进中。
- 打开Desktops.OpenDoc HPCalc.Panel。
- 像使用任何其他手持式惠普计算器一样,使用逆波兰表示法直观地使用计算器。但是请注意,左下角的输入文本字段是一个真正的文本字段小部件,可以根据 Oberon 系统 3 原则进行操作。
计算器使用以下按钮控制
- ??
组件:Desktops.OpenDoc LPRPrinter.Arc。
远程打印机由在任何合适的 Oberon 文本查看器(文本小部件、文本文档)中编辑的一组 Oberon 命令控制。
- 打开Desktops.OpenDoc LPRPrinter.Tool以显示一些控制远程打印的操作示例。
- 在您选择的查看器中编辑您自己的操作并执行它们。
远程打印由以下命令控制:
LPRPrinter.Install - 安装打印机驱动程序。无需在需要时才安装打印机驱动程序,将此命令添加到 Configuration.Text 文件中即可从一开始就安装。
Desktops.PrintDoc queue@host * - 将标记的文档打印到指定主机上的指定队列,例如 lph1@lillian 或 "lph1-ds@lillian"。
LPRPrinter.PrintPSFile queue@host ps-file - 将 Postscript 文件打印到指定的队列。
LPRPrinter.ShowJobs queue@host - 列出队列中所有等待的作业。
LPRPrinter.RemoveJobs queue@host [jobno] ~ - 从指定主机上的指定队列中删除作业 jobno。如果没有给出数字,则删除所有作业。
LPRPrinter.BannerPage (on | off) - 开启或关闭打印横幅页面。默认情况下打印开启。
LPRPrinter.MailBack (on | off) - 开启或关闭打印作业完成后发送电子邮件消息。默认情况下发送消息关闭。
组件:Desktops.OpenDoc PS.Arc。
~PS 工具可以从 Oberon 图片文件创建 PostScript 文件。
PS 模块导出一个单一命令,该命令在 PS.Tool 中有文档记录,并在下面进行描述。
PS.PictToPost fileName [\[a][e][r][l | p]] [scaling] ~ 转换指定的 Oberon 图片文件(后缀为 .Pict)并创建一个后缀为 .ps 的 PostScript 文件。
这些选项可以以任意顺序指定:
- a - 创建 A3 页面
- e - 创建 EPS(封装的 PS)文件
- r - 使用行程长度编码
- l - 横向格式
- p - 纵向格式(默认)
scaling 因子的默认值为 1。
组件:Desktops.OpenDoc Sort.Arc。
文本行排序器会对文件或打开的文档中包含的(以回车符结尾的)行进行排序,并在新的文档查看器中显示结果。此功能有一些限制:
- 允许的最大长度为 256 个字符,包括结尾的 CR。
- 允许的最大行数为 2000 行。
- 文本中的浮动部件将被视为单个字符。
- 字体、文本颜色和垂直偏移不会保留。
如果超过上述任何限制,将发生陷阱。
Sort 模块导出一个单一命令,该命令在 Sort.Tool 中有文档记录,并在下面进行描述。
Sort.Sort (fileName | * | ^) [\[e][r][u]] ~ 对指定文件的行进行排序,并在文档查看器“Sorted.Text”中显示结果文本。系统日志中会显示排序的行总数。这些选项可以以任意顺序指定:
- e - 包括仅包含空格或制表符的空行。
- r - 以反向顺序排序。
- u - 仅保留唯一行,即丢弃重复行。
组件:Desktops.OpenDoc WTS.Arc。
用户开发的有趣的 Oberon 扩展程序定期发布并在许多 FTP 站点上提供。如果您也希望利用这些开发成果,以下是在您的 System 3 系统上安装有价值的 Oberon V4 材料的说明。
您可能在 FTP 目录中找到的一些文件是许多 Oberon V4 文本文件。由于它们的名称与 System 3 中使用的 .Text 或 .Mod 扩展名相同,因此乍一看无法区分它们。*.Text 文件是使用 V4 文字处理器创建的,包含字体、颜色、图片和其他文本控制元素。但是,目录路径或最终的 ReadMe 文件可能会提示 V4。无论如何,您必须使用 WTS 工具转换这些文本文件,该工具作为 归档应用程序 提供,必须先安装它。使用 System.Directory WTS* ~ 进行验证。
WTS 模块导出一个单一命令,该命令在 WTS.Tool 中有文档记录,并在下面进行描述。
WTS.Convert fileName [\[s][b]] 将指定的 Oberon V4 文本文件转换为 Oberon System 3 文本文件。字体也会被转换,同时保留文本的颜色和垂直偏移。此外,如果使用选项 \s,则包含的 Elems 将转换为相应的部件,即:
- FoldElems 转换为 Outline 部件(使用 WTSFold.Mod 的 Outlines.New)
- GraphicElems 转换为其 BasicFigures 元素(线、矩形、圆形、样条曲线)(使用 WTS.Draw.Mod)
- PictElems 转换为图片(使用 WTSPict.Mod 的 Pictures.NewPicture)
- StampElems 转换为 TimeStamp 部件(使用 WTSStamp.Mod 的 TimeStamps.New)
- ParcElems 和 StyleElems 转换为 TextStyle 部件(使用 WTSStamp.Mod 的 TextGadgets.NewStyleProc)。但是,源文档包含的(文本)样式不得超过 48 个。
如果使用选项 \b,则原始文件将重命名为 .Bak 名称。
练习
访问 ftp://nuchem.nsrl.rochester.edu/pub/Oberon/B2Project/ [失效链接][1] 并使用 FTP.Get 以二进制方式下载。提取 AnnualReport96.Text。使用 WTS.Convert AnnualReport96.Text \bs 进行转换,并打开最终文档 AnnualReport96.Text。
如果您没有可用的 V4,您仍然可以从此目录下载描述 B2 项目架构、状态等的 Postscript 文件。
另一个转换示例是模块 ftp://nuchem.nsrl.rochester.edu/pub/Oberon/Goodies/B2Out.Mod [失效链接][1]。
组件:Desktops.OpenDoc Win.FontTools.Arc。
阅读 字体编辑器用户指南 中的描述。
组件:Desktops.OpenDoc Win.PolyWorld.Arc。
PolyWorlds 是一个用于快速显示多边形世界的工具,即仅由多边形表面组成的三维场景。
提供了一个名为“Poly.Panel”的标准面板,可以在 Oberon System 3 的 Gadgets 环境中将其作为文档打开。其右侧是当前显示的多边形世界,左侧是几个标准界面元素。
世界数据
可用场景文件的列表位于左下角。使用鼠标中键 (MM) 单击其中一个条目将加载并显示相应的场景。在较慢的机器上,您可能需要等待几秒钟才能绘制新场景,具体取决于其复杂性。每次激活“显示”按钮时,名称列表都会更新。
世界
[清除] 清空当前世界。
[统计] 将当前的形状、点和多边形数量打印到系统日志。
Horizon 复选框启用或禁用地平线的显示。
查看 [重置] 返回到默认视图,观察者位于原点,沿着负 z 轴方向观看。
[对齐] 旋转当前视图,直到所选形状的局部坐标系与相机坐标系对齐。局部坐标系是在将形状变换到世界空间之前定义形状的坐标空间。
[基准测试] 显示一系列固定的相机视图,并将动画持续时间(以刻度数和近似秒数表示)打印到系统日志。
移动
在显示世界的框架框内按下鼠标左键 (ML) 会调用当前导航器。导航器将处理鼠标和键盘输入,直到释放鼠标键,并将这些输入映射到当前视图的变化。有两种导航器可供选择
[平面] 是默认导航器,在打开面板后处于活动状态。只要按下 ML,相机就会根据水平鼠标移动左右旋转。垂直鼠标移动会影响当前速度。键盘上的“a”和“z”键可上下移动观察者。
[飞行] 激活一个简单的飞行模型。鼠标移动会影响虚拟飞机的俯仰和横滚。前向速度由键盘上的“a”和“z”键控制。
视野
可以使用滑块以及下面的文本字段修改相机的焦距,从而放大或缩小。文本字段以度为单位显示相机视锥体的张角。
当鼠标箭头指向当前视图中显示的对象时,单击鼠标右键 (MR) 会选择指示的对象(也称为形状)。可以使用颜色选择器为所选形状选择新的颜色,并可以使用哥伦布检查和修改其属性。分配给形状(以及框架本身)的模型也可以进行检查,并显示不是特定于单个对象的属性,例如天空和地面颜色。
某些形状具有“Cmd”属性,该属性可以设置为任何 Oberon 命令。通过用鼠标中键单击相应的形状来激活该命令。
可以使用简单的文本编辑器创建多边形世界。PolyWorlds 与多个示例场景一起分发,这些场景可以作为场景生成的教程介绍。以下 EBNF 规则定义了 PolyWorlds 语法。
Scene = {ShapeDef} {"clear"|"horizon" ("yes"|"no")|"ambient" number|ShapeCmd}. ShapeDef = "shape" ident {"points" {Vector}} {"polygon" {number}|ShapeCmd} "end". ShapeCmd = ("add" ident|"light" Vector number|Attribute). Attribute = "color" number number number | "diffuse" number | "save" | ""restore" | "identity" | "matrix" Vector Vector Vector Vector | "translate" Vector | ""rotate" number Vector | "scale" Vector. Vector = "(" number number number ")".
注释以“#”开头,一直延续到行尾。有关命令的更详细说明,请参阅 E. Oswald,PolyWorlds,苏黎世联邦理工学院计算机系统研究所毕业论文,1994 年。
组件:Desktops.OpenDoc Win.Snapshot.Arc。
快照捕获指定 Oberon 显示框架(查看器、文档、视觉小部件甚至整个屏幕)中包含的位图,并将其转换为在伦勃朗框架中显示的图片对象。它的功能对于记录 Oberon 系统扩展非常有用。但是,您应该在文档中插入活动文档(Desktops.InsertDoc docName),而不是捕获的静态图片。快照是伦勃朗工具的扩展。
警告:请记住桌面有四个象限:如果捕获的框架在当前象限上不可见,则图片将变得模糊。
以下三个命令用于对标记的视觉对象进行快照。
Snapshot.Viewer * 打开一个名为“Snapshot”的伦勃朗文档,显示标记的查看器的快照。
Snapshot.Document * 打开一个名为“Snapshot”的伦勃朗文档,显示标记的文档的快照。
Snapshot.Gadget * 打开一个名为“Snapshot”的伦勃朗文档,显示标记的小部件的快照。
接下来的三个命令用于在插入点插入标记的视觉对象的快照。
Snapshot.InsertViewer * 在插入点插入一个伦勃朗框架,该框架显示标记的查看器的快照。
Snapshot.InsertDocument * 在插入点插入一个伦勃朗框架,该框架显示标记的文档的快照。
Snapshot.InsertGadget * 在插入点插入一个伦勃朗框架,该框架显示标记的小部件的快照。
最后两个命令用于对整个 Oberon 屏幕进行快照。
Snapshot.Screen 打开一个名为“Snapshot”的伦勃朗文档,显示整个屏幕的快照。不执行颜色映射以确保生成的图片中的颜色正确。
Snapshot.Screen2 打开一个名为“Snapshot”的伦勃朗文档,显示整个屏幕的快照。颜色映射到当前的 Oberon 调色板,并且调色板与图片一起存储。
1996 年 11 月 28 日修订
- Calc.Arc
- Calc.Char "j" + 1 的工作效果不符合预期。
- Hex.Arc 不得安装 - 它已安装。冗余。
- HPCalc.Mod:END HPCalc 之后末尾的文本必须修改
- Calc 现在是 HPCalc
- Calc.Input 不存在(在模块文本中已注释)
- MyBackup.Do 不存在,但似乎很有趣;参数“always”是什么?
-
- .Scn.Fnt .Pr2.Fnt .Pr3.Fnt .Pr6.Fnt
- 语法 8 8b 8i 8m
- 语法 10 10b 10i 10m
- 语法 12 12b 12i 12m
- 语法 14 14b 14i 14m
- 语法 16 16b 16i 16m
- 语法 20 20b 20i 20m
- 语法 24 24b 24i 24m
- Oberon 8 8b 8i
- Oberon 10 10b 10i
- Oberon 12 12b 12i
- Oberon 14 14b 14i
- Oberon 16 16b 16i
- Oberon 20 20b 20i
- Oberon 24 24b 24i
- Math 10
- Math 12
- Math 14
- Math 16
- Math 20
- Math 24
- Greek 10
- Greek 12
- Greek 14
- Greek 16
- Greek 20
- Greek 24
- Courier 8
- Courier 10
- Courier 12
- Math20.Pr3.Fnt 在分发版中缺失。
- Math20.Pr6.Fnt 和 Math20.Pr2.Fnt 缺失。
- Math24.Pr6.Fnt 和 Math24.Pr2.Fnt 缺失。
- Courier12.Pr6.Fnt 和 Courier12.Pr2.Fnt 缺失。
- 没有 Greek_.Pr2.Fnt 和 Greek_.Pr6.Fnt。
- PS.Tool:命令语法以上未显示选项 l 和 p。
- PS.Mod:Helv.ps 不存在 - 删除。
- Figure3.Pict 不存在,替换为 Clown.Pict 或删除 END PS 之后的所有内容。
- 这些行是什么
- (*PW = 576; PH = 792; *)
- PW = 580; PH = 820; (*dia*)
- pw0 = 550; ph0 = 800; (*laserwriter*)
- MaxN = 128;
- 在开头?只有第二个有意义!
- Inspectors.Arc
- Libraries.Mod 和 Libraries.Panel 必须重命名以避免与新版本冲突。新版本不得命名为 Libraries2。
- Poly.Arc
- TestEyePoly 中的 GPakToPoly 是什么?
- Snapshot.Arc
- Win.Snapshot.Mod 中的 Snaphot.Screen2 是什么?在 Snapshot.Tool 中未记录。
- PolyWorld.Arc
- PolyWorlds.Text 指向检查器:替换为指向哥伦布的引用。面板中没有“目录”按钮,但有一个“显示”按钮。
- Hex.Arc
- 错误,交付了旧组件(Hex.Mod 和 Hex.Tool)。新的 Hex.Mod 还需要模块 ListRiders,但该模块不存在!!
- Win.EditTools.Arc
- Win.FontRes.Mod 导入 Log,Log 位于 Log.Arc 中。!!!
- 哪个组件仅适用于 Windows?
- Win.FontRes.Mod 或/和 FontEditor.Mod?
1997 年 5 月 30 日安装
A
应用程序
ASCII 表
ASCIITab.NewFrame
C
Calc.Char
Calc.Dec
Calc.Hex
Calc.List
Calc.Real
Calc.Reset
Calc.Set
计算器:桌面
计算器:惠普
G
H
L
LPRPrinter.BannerPage
LPRPrinter.Install
LPRPrinter.MailBack
LPRPrinter.PrintPSFile
LPRPrinter.RemoveJobs
LPRPrinter.ShowJobs
P
Poly.Panel
PolyWorlds
PS 转换器
PS.PictToPost
PS.Tool
R
S
Snapshot.Document
Snapshot.Gadget
Snapshot.InsertDocument
Snapshot.InsertGadget
Snapshot.InsertViewer
Snapshot.Screen2
Snapshot.Screen
Snapshot.Viewer
快照
Sort.Sort
Sort.Tool
T
W
- ↑ a b 创建一个名为 B2 的目录。打开 https://riskfive.com/,在左侧边栏找到两个 B2 链接。在“B2 overview”中找到下载链接,并将 7z 压缩文件解压到刚刚创建的 B2 目录中。确保系统已安装 7z 解压缩工具。例如,在 Linux Debian 系统中,需要安装 p7zip-full 包。使用命令“7z e B2_v086_cleaned.7z”解压压缩文件。阅读 README.txt 文件。