跳转到内容

Oberon/ETH Oberon/教程/应用

来自 Wikibooks,开放世界的开放书籍

这些教程页面由 André Fischer (afi) 编写,并由Hannes Marais提供编辑协助,托管在ETHZ,并保留在ETH 许可证下。相关内容可通过 Book.Tool 在系统中找到。扩展内容也可在纸质版上找到。一些教程页面位于WayBack 档案中。

Oberon 系统 3 应用程序

此版本附带了一组应用程序,更准确地说,是系统扩展。原则上,这些应用程序包含在当前 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 的字符集。

使用鼠标中键单击任何表格元素将在插入符号处插入表示的符号(如果设置了插入符号,当然)。

可以通过修改表格的字体属性中的字体名称来更改字体。

Oberon 桌面计算器

[编辑 | 编辑源代码]

组件: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 发行版包含三款纸牌游戏:纸牌接龙、蜘蛛纸牌和空当接龙,以及另外四款游戏:扫雷、文字接龙、推箱子以及俄罗斯方块。它们在游戏中进行了描述。

惠普计算器 - 版本 1.2

[编辑 | 编辑源代码]

组件: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) - 开启或关闭打印作业完成后发送电子邮件消息。默认情况下发送消息关闭。

图片到 PostScript 转换器

[编辑 | 编辑源代码]

组件: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 - 仅保留唯一行,即丢弃重复行。

Oberon V4 文本文件转换器 - WTS

[编辑 | 编辑源代码]

组件: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

阅读 字体编辑器用户指南 中的描述。

PolyWorlds

[编辑 | 编辑源代码]

组件:Desktops.OpenDoc Win.PolyWorld.Arc

PolyWorlds 是一个用于快速显示多边形世界的工具,即仅由多边形表面组成的三维场景。

Poly 面板

[编辑 | 编辑源代码]

提供了一个名为“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 | C | G | H | L | P | R | S | T | W ]

A

应用程序
ASCII 表
ASCIITab.NewFrame

C

Calc.Char
Calc.Dec
Calc.Hex
Calc.List
Calc.Real
Calc.Reset
Calc.Set
计算器:桌面
计算器:惠普

G

游戏

H

惠普计算器
HPCalc.Panel

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

写入脚本
WTS.Convert
WTS.Tool
WTS

  1. a b 创建一个名为 B2 的目录。打开 https://riskfive.com/,在左侧边栏找到两个 B2 链接。在“B2 overview”中找到下载链接,并将 7z 压缩文件解压到刚刚创建的 B2 目录中。确保系统已安装 7z 解压缩工具。例如,在 Linux Debian 系统中,需要安装 p7zip-full 包。使用命令“7z e B2_v086_cleaned.7z”解压压缩文件。阅读 README.txt 文件。
华夏公益教科书