Oberon/ETH Oberon
LinksEdit
ETH Oberon Sitemap
ETH Oberon Tutorial
ETH Oberon White Paper
Contributions, formerly served from the ETHZ
InstallingEdit
Originally, Oberon was installed on a bare 32 bit i386 or i486 machine using an Oberon0 diskette. The procedure may still interest an enthusiast.
In a contemporary system the Oberon0 installer can run on a virtual machine. The virtual machine is installed once and can be used for any number of installations. With this method, no time is spent recording and booting from a diskette and the unreliability of diskettes and drives is avoided. The installer runs faster on the virtual machine than it does from a diskette. The method has proven successful in installing ETH Oberon to a variety of laptop and desktop machines including a Micron Trek 2, AGP laptop. Detailed instructions for installation with the QEMU hypervisor are provided and the instructions can be adapted to other virtual machines.
Andres Ramos describes a method where a FAT filesystem on a diskette is used to transfer installation files to the target machine.
System configuration notes in QEMU page are independent of method of installation. In the original installation notes, configuration is discussed under the heading Customization of the installed Native Oberon system. In the running ETH Oberon, Script.Open System.Text
allows access to section "4. Configuring the system".
After installation and configuration on a storage medium, the system can run directly on a native X86 PC. Alternatively, use can continue on the virtual machine. In the native case, a network connection will be over Ethernet or a serial crossover cable. In the virtual case, a network connection uses a TAP or bridge interface connected to the host system.
Adding a Calendar and ClockEdit
Open an empty Time document with MM on Desktops.OpenDoc Time ~.
Set the hook caret by ML in the document.
Insert a calendar with MM on Gadgets.Insert Clocks.NewCalendar ~.
Insert a clock with MM on Gadgets.Insert Clocks.NewClock ~.
MM on [Store].
MM on [Close].
MM on Edit.Open Oberon.Text ~. Alternatively ET.Open Oberon.Text ~.
Above the line { System.OpenLog } insert these two lines.
- { Desktops.OpenDoc Time ~ }
- { Configuration.Marker set 80% 92% }
MM on Edit.Store or ET.Store.
MM on System.Reboot.
TextEdit
These tables show the structure of records in memory representing a Text. When Texts.Store() records a Text in a file for a storage medium, the information in the record structure is serialized. In the inverse process, Texts.Load() deserializes the information to the record structure of the Text in memory.
TextDesc is an extension of Objects.ObjDesc. The fields added to make TextDesc are distinguished from the fields inherited from ObjDesc by a differing background color.
Type | Fields of TextDesc |
Types of Fields | Notes |
---|---|---|---|
Texts.Text, a pointer to a Texts.TextDesc | stamp | LONGINT | Integer |
dlink | Objects.Object | Pointer | |
slink | Objects.Object | Pointer | |
lib | Objects.Library | Pointer | |
ref | INTEGER | ||
handle | Objects.Handler | Pointer | |
len | LONGINT | Length of text. | |
obs | Objects.Library | Pointer | |
trailer | Texts.Piece | Pointer to Sentinel node in list of pieces. | |
org | LONGINT | Offset in [0,len) of first character in last found piece. | |
pce | Texts.Piece | Last found piece. |
Type | Fields of LibDesc | Types of Fields | Notes |
---|---|---|---|
Objects.Library, a pointer to a LibDesc | next | Objects.Library | Pointer |
ind | Objects.Index | Pointer | |
f | Files.File | Pointer | |
R | Files.Rider | Pointer | |
name | Objects.Name | ||
dict | Objects.Dictionary | Pointer | |
maxref | INTEGER | ||
GName | POINTER |
Type | Fields of PieceDesc | Types of Fields | Notes |
---|---|---|---|
Texts.Piece, a pointer to a Texts.PieceDesc | f | Files.File | Pointer |
off | LONGINT | Integer | |
len | LONGINT | ||
obj | Objects.Object | Pointer | |
lib | Objects.Library | Pointer | |
ref | INTEGER | ||
col | SHORTINT | ||
voff | SHORTINT | ||
prev | Piece | Pointer | |
next | Piece | Pointer |
Texts.FindPiece and the cacheEdit
For a given Text, T, and offset pos in [0, T.len), procedure Texts.FindPiece has the task of locating the piece containing pos. At each execution, FindPiece could begin at offset 0 and add lengths of pieces until the piece containing pos is located. A cache based upon T.pce and T.org allows better efficiency. When FindPiece completes a search, the pointer to the found piece is recorded in T.pce; the offset of the first character of that piece is recorded in T.org. The next execution of FindPiece begins at that cached location. With a result from FindPiece often being near the preceeding result, this strategy avoids repeated summation of lengths from the beginning of the first piece.
Text Dataflow in ETH OberonEdit
This dataflow example illustrates relationships between Oberon Text, HTML and ASCII text.
Oberon Text with non-text features |
Oberon Edit.StoreAscii command ⟶ |
Oberon Text with non -text features omitted |
Oberon Text with non -text features omitted |
|||||||||
|
|
|
||||||||||
MediaWiki markup with color and syle but hyperlinks and images omitted |
MediaWiki processor ⟶ |
HTML5 text with text color and style |
Web browser ⟶ |
browser text |
Clipboard or Save operation ⟶ |
ASCII text file |
Text color and style, images and hyperlinks are lost by conversion of browser text to ASCII. Consequently the rightmost Oberon Text has the same appearance as plain ASCII text. Text color and style can assist with reading and understanding a source but compilation is not influenced by color and style.
Module SourcesEdit
The last release of ETH_Oberon at the ETHZ was 2.3.7. At bootup, release date 2003-01-05[1] is announced in the System.Log. Sourceforge has the file "Native Oberon 2.3.7 Alpha/NativeOberon_2.3.7.tar.gz" and bootable installer images in "Oberon0 boot disk/". Package structure is in Native.Tool. Sources are also available at https://github.com/schierlm/NativeOberon-2.3.6-Extracted in the directory FullInstall_ASCII. Sources and Tools remain under the ETH Oberon License.
Module Sources in System PackageEdit
The System Package contains approximately 170 modules. Refer to Native.Tool.
Release 2.3.7 | Wikibook variant[2] | Notes |
---|---|---|
ATADisks.Mod | ATADisks.Mod | Support for Compact Flash added. |
Compiler.Mod | ||
Dialer.Mod | Dialer.Mod | Dialer.Dial modified to support the ringback protocol as provided by mgetty. Refer to the Dialer page. |
DisplayLinear.Mod | ||
Displays.Display.Mod | ||
Displays.Mod | ||
Empty.Display.Mod | ||
FTP.Mod | FTP.Mod | |
GD54xx.Display.Mod | ||
Input.Mod | Input.Mod | |
NetSystem.Mod | ||
OGLDisplay.Mod | ||
Objects.Mod | ||
PPPDebug.Mod | ||
PPPFSM.Mod | PPPFSM.Mod | |
PPPHDLC.Mod | PPPHDLC.Mod | |
PPPIPCP.Mod | PPPIPCP.Mod | |
PPPLCP.Mod | PPPLCP.Mod | |
PPPMain.Mod | PPPMain.Mod | |
PPPPAP.Mod | ||
PPPTest.Mod | ||
PPPTools.Mod | PPPTools.Mod | |
PSPrinter.Mod | ||
S3C805.Display.Mod | ||
S3C924.Display.Mod | ||
S3Trio.Display.Mod | ||
SVGA.Display.Mod | ||
Texts.Mod | ||
VGA.Display.Mod | ||
W32.Display.Mod |
Module Sources in Gadgets PackageEdit
Release 2.3.7 | Wikibook variant[2] | Notes |
---|---|---|
Display3.Mod | ||
Displays.Colors.Mod | ||
Mail.Mod | Mail.Mod | |
FTPDocs.Mod | ||
HTMLDocs.Mod |
Module Source in Apps1 PackageEdit
Release 2.3.7 | Wikibook variant[2] | Notes |
---|---|---|
GfxDisplay.Mod |
Module Sources in Apps2 PackageEdit
Release 2.3.7 | Wikibook variant[2] | Notes |
---|---|---|
HTML.Mod | HTML.Mod | |
Sort.Mod |
Module Sources in Documentation PackageEdit
Release 2.3.7 | Wikibook variant[2] | Notes |
---|---|---|
Examples.Mod |
Module Sources in Build PackageEdit
Release 2.3.7 | Wikibook variant[2] | Notes |
---|---|---|
DisplayMach64.Mod | ||
DisplayTool.Mod | ||
DisplayVGA4.Mod | ||
S3TrioC.Display.Mod | ||
SVGAH.Display.Mod | ||
SVGAL.Display.Mod | ||
Trace.Display.Mod |
Module Source in Lab PackageEdit
Release 2.3.7 | Wikibook variant[2] | Notes |
---|---|---|
DisplayBackdrop.Mod |
Source for Additional ModuleEdit
Release 2.3.7 | Wikibook variant[2] | Notes |
---|---|---|
MediaWiki.Mod | Translation of Oberon Text to MediaWiki markup. |
TextsEdit
Release 2.3.7 | Wikibook variant[2] | Notes |
---|---|---|
Oberon.Text | Oberon.Text | Edit according to local requirements and preferences. |
References.Text |
ToolsEdit
Release 2.3.7 | Wikibook variant[2] | Notes |
---|---|---|
Native.Tool | ||
PPP.Tool | ||
Sort.Tool | ||
Tutorials.Tool |