ðP1Syntax10.Scn.Fntðÿÿÿðÿ7à¥ParcElemsAllocÀà ¼ýSyntax16b.Scn.FntSyntax14b.Scn.FntÏýÿÿÿÀ8'LineElemsAllocBýÿÿÿÀ8'ØSyntax12b.Scn.FntÜSyntax10i.Scn.Fnt1âSyntax10b.Scn.Fnt5Yp (• V¯þÿÿvXGraphicElemsAllocÐ0ÿ`Ð0ÿP 0ÿ`ÐÿPØ€ÿؘÿà€ÿØ€ÿô€ÿü€ÿô˜ÿô€ÿ€ÿ˜ÿ€ÿ€ÿSyntax10.Scn.FntÔ™ÿ MLð™ÿ MM ™ÿ MRÀ½ÿ Pointä½ÿ' Execute½ÿ Selectø¨ÿبÿ¨ÿÿ@ÿ7h}üÿÿ`M/."Syntax10.Scn.FntPQÿ ctrlP=ÿ keysH½ÿ' ExecuteHPÿHPÿ hPÿH`ÿ Peÿ MMXtÿHýþX two button mouse ÿX On systems with a½ÿ Select$¨ÿ™ÿ MR¨ÿø½ÿ Pointü™ÿ ML €ÿ ˜ÿ(€ÿ €ÿ˜ÿ€ÿ€ÿ€ÿô0ÿ`ô0ÿ@40ÿ`ôÿ@ø=ÿ keys°ýþa single button mouse´ ÿX On systems with atÿHðtÿHèeÿ MM eÿ MRàÁÿ' Execute Áÿ SelectTÿTÿ \ÿèQÿ ctrlPÿPÿ $Pÿ`ÿ à`ÿ PÿàPÿ àPÿ´™ÿ ML¬½ÿ Point¸¨ÿ´˜ÿÄ€ÿ´€ÿ´€ÿ¤ÿ0Ô0ÿ`¤0ÿ0¤0ÿ`ÀíþY(Macintosh only)ÿ ÿ3~Syntax12.Scn.Fnty;âÿÿÿðÿ7˜StyleElemsAllocÀ— €øÒ ¼ýÀ— IndentedUæÿÿÿðÿ7˜Àà ¼ýÀ— Normalâÿÿÿðÿ7˜À— €øÒ ¼ýÀ— IndentedJæÿÿÿðÿ7˜Àà ¼ýÀ— Normalâÿÿÿðÿ7˜À— €øÒ ¼ýÀ— Indented3 tæÿÿÿðÿ7˜Àà ¼ýÀ— Normalâÿÿÿðÿ7˜À— €øÒ ¼ýÀ— Indentedeæÿÿÿðÿ7˜Àà ¼ýÀ— Normal;âÿÿÿð¹õ˜À— €øÒ ¼ýÀ— Indented[æÿÿÿð¹õ˜Àà ¼ýÀ— Normalâÿÿÿð¹õ˜À— €øÒ ¼ýÀ— IndentedNæÿÿÿð¹õ˜Àà ¼ýÀ— NormalPÃþÿÿ°ò4äRectanglesNew˜ÿ° `ÿ°8 ÿ°8Xÿ° ÿ° àþ°8@˜ÿX@8ÿX`@0ÿX@àþXPSyntax10.Scn.FntÐuÿ! viewerÐ¥ÿ/ user trackP¥ÿ; system trackœÿ°™ÿ' title bar¨ÿ6 (menu bar)ÿpÿOš#gÿÿÿ€H(LRectanglesNew(0ÿ8Syntax10.Scn.Fnt˜Åÿ! viewer(hÿ(¨ÿ(pÿ8(°ÿ8(èÿÿØÿ8­Êäÿÿ'8qPElemsAllocBM66(pÿÿÿÿÿÿÿÿÿÿ÷÷÷€€€ðʦ€€ÀÀÀ¤  €€€?i“½ç???i?“?½?ç?i?iii“i½içi“?“i“““½“瓽?½i½“½½½ç½ç?çiç“ç½ççç???i?“?½?ç??????i??“??½??ç??i??i?ii?“i?½i?çi?“??“?i“?““?½“?ç“?½??½?i½?“½?½½?ç½?ç??ç?iç?“ç?½ç?çç?i?iii“i½içi?i??ii?i“?i½?iç?iii?iiiii“ii½iiçii“i?“ii“i““i½“iç“i½i?½ii½i“½i½½iç½içi?çiiçi“çi½çiççi“?“i“““½“ç“?“??“i?““?“½?“ç?“i“?i“ii““i“½i“çi“““?““i“““““½““ç““½“?½“i½““½“½½“罓ç“?ç“i瓓瓽ç“ç瓽?½i½“½½½ç½?½??½i?½“?½½?½ç?½i½?i½ii½“i½½i½çi½“½?“½i“½““½½“½ç“½½½?½½i½½“½½½½½ç½½ç½?ç½i罓罽ç½çç½ç?çiç“ç½ççç?ç??çi?ç“?ç½?çç?çiç?içiiç“iç½iççiç“ç?“çi“瓓罓çç“ç½ç?½çi½ç“½ç½½çç½ççç?ççiçç“çç½ççÿÿÿëëëëëë?j?j?j?j?j?j?j?j?j?j?j?j?j?j?j?ë?j?j?j?j?j?j?j?j?j?j?j?j?j?j?j?jë?j?j?j?j?j?j?j?j?j?j??j?j?jë?j?j?j?j?j?j?j?j?j?j?j?j??j?j?j?j?j?j?j?j?j?ë?j?j?j?j?j?j?j?j?j?j?j?j?j?j?j?j?jë?j?j?j?j?j?j?j?j?j?j?j?j?j?ë?j?j?j?j?j?j?j?j?j?j?j?j?j?j?j?j?j?j?j?ë?j?j?j?j?j?j?j?j?j?j?j?j?ëëëëë••••••••••••••••••••••••••••••jë•••••••••••••••••••••••••••••••jë••••••••••••••••••••••••••jë•••••••••••••••••••••••••••••••••••••••••••jë•••••••••••••••••••••••••••••••••jë••••••••••••••••••••••••••jë••••••••••••••••••••••••••••••••••••••jë••••••••••••••••••••••••jëëëëëëÀëëÀëëëëëëëëÀëëëëëëÀÀëëëëë••••••••••••••••••jë•••••••••••••••••••••jë••••••••••••••••••jë•••••••••••••••••••••••••••jë••••••••••••••••••••jë••••••••••••••••••jë•••••••••••••••••••••••jë••••••••••••••jëëëëëëëëëëëëëëëëëëëëëëëëëëë••À••••••••••••••••••••jë••À•••••••••••••••••••••jë••À•••••••••••••••••••jë••À•••••••••••••••••••••••••••••jë•••••••••••••••••••••••••jë•••••••••••••••••••jë•••••••••••••••••••••••••••jë•••••••••••••••••jëëëëëëëëëëëëëëëëëëëëëëë•••••••••••••••••••••••jë••••••••••••••••••••À•jë•••••••••••••••••••À•jë•••••••••••••••••••••••••••••••••jë•À•••••••••••••••••••••••jë•À•••À••••••••••••••jë•À••••••••••••••••••••••••••••jë•À•••••••••••••••••jëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë••••••••••••••••••À•jë••••••••••••••••••••••jë•••••••••••••••••••••jë••••••••••••••••••••••••••••À•jë••••••••••••••••••••••jë••••••••••••••••••••jë••••À•••••••••••••••••••••jë•••••••••••••••••••jëëëëëëëëëëëëëëëëëëëëëëëëëëëë•À••••À••••••••••••••••jë••••••••••••••••••••••jë•À••••À•••••••••••••jë•À••••À••••••••••••••••••••••jë••••••••••••••••••••jë••••••••••••••••jë••••••••••••••••••••À•••••jë••••••••••••••••jëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëë••••••••••••••••••••jë••••À•••••••••••••••••jë•••••••••••••••••••jë•••••••••••••••••••••••••••jë•••••••••••••••••••••jë•••••••••••••••jë••À••••••••••••••••••••jë•••••••••••••••jëëëëëëëëëëëë••••••••••••••••••••••••••••jë•••••••À••••••••••••••••••••••jë•••••••••••••••••••••••••••jë••••••••••••••••••••••••••••••••••••••••••jë•À•••••••••••••••••••••••••••••jë•À••••••••••••••••••••••jë••••••À•••••••••••••••••••••••••••••jë•À•••••••••••••••••••jëëëëëëëëëëëëëëëë••À•••••••••••À•••••••••••jë•À•••••••À••••••••À••À••À•••jë••À••••••••••••••••À••À••jë••À••••••••••••••••••À•••••À•••••••••••jë•••••••••••••••••••••À••••••jë•••••••••••••••••••••jë••••••••••••À•••••••À••••••••••À••jë•••••À•••••••••••jëëëëëë•••••••••••À•••À••••À••••À•••jë••••••••••À••••À•••À•••••••••••jë••••••••••À••À••À••À••••••••jë••••••••••À••À••À••À••À••••À•••••••À•••À•••jë•••••••••••À•••À••À••À••••••À•••jë•••••••••••À••À•À•••••••À•jë•À•••••••À•••À••••••À•••••À••••••••••jë•••••••••••••••••••••À•jëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëÀëëëëëëëëëëÀëëëëÀëëëëëëëëÀëëëëÀëëëëÀëëëëÀÀëëëëÀëÀëëëëëëëëëëÀëëëëÀëÀëëëëÀëÀëëëëëÀëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëëâÿÿÿðÿ7˜À— €øÒ ¼ýÀ— Indentediæÿÿÿðÿ7˜Àà ¼ýÀ— Normal#âÿÿÿðÿ7˜À— €øÒ ¼ýÀ— IndentedPæÿÿÿðÿ7˜Àà ¼ýÀ— Normal âÿÿÿðÿ7˜À— €øÒ ¼ýÀ— Indentedtæÿÿÿðÿ7˜Àà ¼ýÀ— Normal âÿÿÿðÿ7˜À— €øÒ ¼ýÀ— Indentedà Uæÿÿÿð¹õ˜Àà ¼ýÀ— Normal>r  ] nP LZ7,ì VSyntax14m.Scn.Fnt Syntax12i.Scn.FntY\yrkAIâÿÿÿðÿ7˜À— €øÒ ¼ýÀ— Indenteduæÿÿÿð¹õ˜Àà ¼ýÀ— Normal<âÿÿÿð¹õ˜À— €øÒ ¼ýÀ— IndentedQæÿÿÿð¹õ˜Àà ¼ýÀ— Normal(âÿÿÿð¹õ˜À— €øÒ ¼ýÀ— Indented;æÿÿÿð¹õ˜Àà ¼ýÀ— NormalR$âÿÿÿðÿ7˜À— €øÒ ¼ýÀ— Indented•æÿÿÿðÿ7˜Àà ¼ýÀ— Normal@âÿÿÿðÿ7˜À— €øÒ ¼ýÀ— Indented{æÿÿÿðÿ7˜Àà ¼ýÀ— Normal NHÿÿÿzP4PopupElemsAllocSystem#Syntax10.Scn.FntSystem.Directory ^ System.ShowDir System.Recall System.ShowModules System.ShowCommands ^ System.State ^ System.Watch System.Collect System.Time= NHÿÿÿÐlqEdit#Syntax10.Scn.Fnt‘‘Edit.Store Edit.Print QuickDraw * Edit.Recall Edit.Locate Edit.Show ^ Edit.Replace Edit.ReplaceAll Edit.Cut Edit.Copy Edit.Paste Edit.ClipboardP#jŸ,¤ÿÿÿÿÄ Ä IconElemsNewÿÿÿÿAAClockElemsNewÿÿÿÿÐN ÐN ÿÿÿÿ\ \ ®ðÿÿÿðÿ7à¥Àà ¼ýW}Rn^ŠgÌU [  H Öéÿÿÿð¹õीÝÛ ¼ý€Ê€òׇéÿÿÿð¹õीÝÛ ¼ý€Ê ¦Ñ’ o ¬ìÿÿÿ€î6ीÝÛ ¼ýÀÓöõÿÿÿpdðI StampElemsAlloc11 Aug 97}EWelcome to ETH Oberon <- This is the Scroll Bar In order to scroll forward, move the mouse into the scroll bar next to the line that you wish to move to the top of the window. Then click the left mouse button. Scroll backward by pressing the right mouse button while the mouse is in the scroll bar. Copyright (C) 1994 by ETH Zurich, Institute for Computer Systems. This version has been changed at the Institut f…r Praktische Informatik, Gruppe f…r Systemsoftware, Universitƒt Linz.  Permission to use, copy, modify and distribute this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of ETH not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. ETH makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. ETH DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ETH BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Syntax Font, Copyright (c) 1968 by Linotype AG Syntax is a registered trademark of Linotype AG. The Syntax font is owned and used by permission of Linotype AG. RASTER DATA DESCRIBING SEVERAL TYPEFACES OF THE SYNTAX FONT FAMILY IS SUPPLIED WITH THIS RELEASE OF OBERON AND MAY BE USED ONLY IN CONJUNCTION WITH THE OBERON SOFTWARE. ANY OTHER USE OF THE SYNTAX FONT REQUIRES A LICENSE FROM LINOTYPE AG. PostScript versions of the fonts in the Syntax family are available from Linotype, Inc. and its subsidiaries. Oberon is a trademark of Eidgen„ssische Technische Hochschule, Z…rich  Getting started with Oberon This is a quick overview of the Oberon system. For further questions please refer to the user manual: Reiser M.: The Oberon System - User Guide and Programmer's Manual. Addison-Wesley, 1991, ISBN 0-201-54422-9 Oberon is an extensible system. There is no difference between functions offered by the operating system and functions added by a user which enhance the basic system. As a matter of fact, Oberon abandons the notion of a Program altogether. Atomic actions in Oberon are called Commands. Commands are parameterless procedures which may be executed directly from the operating system interface. Procedures from anywhere in a module hierarchy may be called in this way and there is no need for a "top" module which distributes commands to other modules. Instead, command distribution is built into the operating system. When a command terminates, control is passed back to the operating system's main loop. However, the module that contained the last command remains loaded in the system and all of its global variables remain unaltered. Subsequent commands may reference these variables freely. The granularity of commands may be quite fine. Typical commands display the directory of a storage device, increase the font size of the text last selected or compile the contents of the active window. A user may execute commands in any sequence and may thus be working on completely different problems in different windows at the same time. We call this "one-process multitasking". Commands Instead of calling programs, an Oberon user executes commands. A command is simply a parameterless procedure exported from a module. It is written as Modulename.Procedurename (e.g. Edit.Open). A command can be invoked by clicking at it with the middle mouse button wherever it occurs on the screen. When a command is not already on the screen, it can be entered from the keyboard into any text viewer. Users normally collect frequently used commands in a text file to avoid having to re-enter them again and again. Examples for commands are Edit.Open which opens a text file for editing or System.Directory which displays some specified files of the directory. This document can be printed by executing the command: Edit.Print QuickDraw Welcome.Text ~ The Mouse Oberon assumes a three button mouse where the buttons have the following meaning:  On systems with a one or two button mouse the keyboard can be used to simulate the missing buttons:  If you use Oberon frequently, you might want to get a three-button mouse. For Macintosh users with three-button mice (we use the Logitech MouseMan for the Macintosh): just configure them so that the left button generates a mouse click, the middle button emulates the "control" key on the keyboard and the right button the "option" button, and you will have a true Oberon mouse. Note: There is also an Oberon version for a one button mouse. The single mouse button can be used there to set the caret, select text and scroll. The middle mouse button is only used to execute commands and to handle popup menus (see below). This version also provides scrollbars as on the Macintosh or under Windows. In order to use the one button version, simply rename the file TextFrames1.Obj to TextFrames.Obj (or execute the appropriate command from the Mouse.Text). Mouse Buttons and Special Keys Point Button = ML Sets the Caret: point to the desired character position with the mouse and click ML.  Execute Button = MM Executes a command M.P: point to the command with the mouse and click MM.  Select Button= MR Selects a contiguous stretch of text: move the mouse from the first character to the last character of the desired selection while holding down the MR button (this is called "dragging" the mouse). For selecting large portions of text that don't fit into a viewer, split the viewer by executing the command System.Copy, select the beginning of the text stretch in the upper viewer and the end of the text stretch in the lower viewer.  Cancel To cancel a mouse command that is just being initiated press all three mouse buttons simultaneously.  Mark Key = F1 key for PCs and PowerMacs, Enter key for Macs Set the star-shaped marker: move the mouse to the desired location and press the Mark key.  Neutralize Key = ESC key Remove all marks and selections on the screen by pressing the Neutralize key.  Viewers The Oberon screen is divided into a user track (for displaying and editing documents) and a system track (for system messages and command input). Each track may contain several viewers (windows). Viewers consist of a title bar showing menu commands or popup menus (see below) and a contents area where text or graphics is displayed.  If you work on a small screen (15" or less) you may prefer having just one track instead of two so that the viewers become larger. Execute the command Screen.OneTrack to get to the following layout:  You can get back to the previous layout by executing Screen.TwoTracks. The title bar of a viewer always contains the name of the viewer (i.e. the name of the document shown in the viewer) and a list of commands and popup menus (see below).  Resizing a Viewer = ML Extend or reduce a viewer by clicking ML in its title bar and dragging the viewer top to a new location.  Moving a Viewer = ML followed by MM Move a viewer to another track by interclicking MM during the Resize operation.  Text Editing Edit.Open Opens a new viewer and displays the contents of a file. If the file does not exist, an empty viewer will be opened.  Edit.Store When activated from a menu, it stores the contents of the viewer into a text file with the same name as the viewer name. A file may be saved under a different name simply by editing the viewer name in the menu and executing Edit.Store. CAUTION: CLOSING A VIEWER WITH System.Close WILL NOT SAVE THE TEXT IN THE VIEWER. Text can be inserted from the keyboard at the position of the caret (the hook that marks the insert position). The caret can be set with the ML button. Text can be deleted with the backspace key or the del key. For copying and deleting larger portions of text the following commands can be used: Clipboard.Cut (command-X on a Mac, F5 on a PC) Deletes the selected text and after having copied it to the clipboard Clipboard.Copy (command-C on a Mac, F6 on a PC) Copies the selected text to the clipboard Clipboard.Paste (command-V on a Mac, F7 on a PC) Inserts the clipboard contents at the Caret position For advanced users there are short-cuts invoked by interclicking a mouse button while another button is still pressed. These shortcuts can significantly speed up editing. Copy to Caret = MR followed by MM The selected text is copied to the caret position. Copy from Selection = ML followed by MM The most recent selection is copied to the new caret position. Delete = MR followed by ML The selected text is deleted. Apply Character Style at Caret to Selection = ML followed by MR The formatting (font and character style) at the caret position is applied to the most recent selection. The cursor keys can be used to move the caret to the left, to the right, one line up, and one line down. Scrolling In the Oberon System, scrolling is rather different from what you might be used to in other systems. Although it is unfamiliar in the beginning it offers faster and more exact scrolling to experienced users. Move the mouse into the scroll bar to the left of the text and press one of the mouse buttons to execute one of the following actions Scroll Forward = ML The line to which the mouse points will be moved to the top of the viewer. Scroll Backward = MR The line to which the mouse points will be moved to the bottom of the viewer. Absolute Positioning = MM Scroll to a part of the document that corresponds to the relative position of the mouse in the scroll bar. Scroll Forward to Top = MM followed by MR (interclick MR during Absolute Positioning) Scroll to the beginning of the document. Scroll Backward to Bottom = MM followed by ML (interclick the ML during Absolute Positioning) Scroll to the end of the document. Advanced Commands Copy attributes at the caret to the selection = ML followed by MR The font and style at the caret position is applied to the selection. Select to beginning of line Click MR twice at the same character. You may keep dragging from the second click in order to select multiple lines.  Unload module prior to command execution = MM followed by ML The command's module will be re-loaded from disk before the command is executed.  Open new edit viewer = MM followed by MR A new viewer is opened with the file with name clicked on.  Command Arguments There are several methods to specify the arguments of commands. We show them for Compiler.Compile as an example. Compiler.Compile P1.Mod P2.Mod ... ~ The arguments follow immediately after the command and are terminated with a "~" (a tilde). Here the command compiles the files P1.Mod, P2.Mod, etc.  Compiler.Compile ^ The arguments are taken from the most recent text selection. Compiler.Compile * The argument is the contents of the marked viewer (the viewer that contains the star-shaped marker, set with the Mark key)  Using commands with the "^" suffix is especially convenient. To open a text file just select its name and click "Edit.Open ^". To inspect a module interface just select the module name and click "Browser.ShowDef ^". It is sufficient to select the first character of the argument. Popup Menus The system tool contains a number of grey buttons like the following one:  These are popup menus. Click at them with the MM button and select a command by dragging the mouse. Try it now. You can edit the menu texts by clicking MM followed by MR at the popup menu. A text viewer will be opened in which you can add more commands or delete commands with the text editor. Execute the command PopupElems.Update from the menu bar of this viewer to make the modifications visible in the popup menu. A new popup menu may be inserted at the caret position with the command PopupElems.Insert "". The menu bar of viewers also may contain popup menus like the following:  A popup menu like this may be inserted at the caret position with the command PopupElems.InsertMenu "". You can configure the menu bars of your system by editing the contents of the following text files according to your needs. Edit.Menu.Text Text to be shown in menu bars of viewers opened with Edit.Open System.Menu.Text Text to be shown in menu bars of viewers opened with System.Open Log.Menu.Text Text to be shown in the menu bar of the Log Viewer Interrupting a running Command Under Windows 95 and Windows NT a running command can be interrupted by changing to the console window (which is automatically opened when starting Oberon with the option -l for logging enabled) and pressing Ctrl-C. Alternatively you can invoke the program CtrlC from outside of Oberon. Under Windows 3.1 this functionality is not available. Under PowerMac you have to press the "Apple" key and "." simultaneously. Extensibility The main feature of Oberon is extensibility. A user can add an arbitrary number of commands to the system at any time simply by writing a module and compiling it. There is no need to install the command (it may be activated as soon as compilation is completed) and modules containing commands are not added to the system until an actual call is made. Commands which are frequently used together are often collected in a text document. By displaying this document in a window the whole set of commands is immediately at hand. Such text documents are called Tools in Oberon (e.g., Edit.Tool). They play the role of editable menus. Even the basic resources of the system are extensible. For example, the editor you are just using supports "live" extensions of characters which are sent messages when editing operations occur. The moving objects that you see below are such "extensions" of characters. They float in the text just as characters, and may be cut, copied and pasted.  Documentation A lot of online documentation is supplied in this distribution. We have prepared a Tool that leads you to further documentation about different parts of the system. Please: System.Open Documentation.Tool A couple of books have been written on the design, use and implementation of Oberon: N. Wirth and M. Reiser: Programming in Oberon.Steps beyond Pascal and Modula-2. Addison Wesley, 1992, ISBN 0-201-56543-9. Tutorial for the Oberon programming language and concise language reference. M. Reiser: The Oberon System. User Guide and Programmer's Manual. Addison Wesley, 1991, ISBN 0-201-54422-9. User manual for the programming environment and reference for the standard module library. N. Wirth and J. Gutknecht: Project Oberon. The Design of an Operating System and Compiler. Addison Wesley, 1992, ISBN 0-201-54428-8. Program listings with explanations for the whole Oberon system, including the compiler for NS32000. H. M„ssenb„ck: Object-Oriented Programming in Oberon-2. Springer-Verlag, 1993, ISBN 3-540-56411-X. (German: Objektorientierte Programmierung in Oberon-2, Springer-Verlag, 1993, ISBN 3-540-57789-7) Foundations and applications of OOP with a realistic case study in source code. Portability Oberon is also available for Ceres, IBM PC (MS-Windows and Windows NT), Apple Macintosh (68020 and PowerMac), DECStation running ULTRIX, Sun SPARCStation, IBM RISC/System 6000, Silicon Graphics, Amiga, and HP PA-RISC machines. The Oberon libraries on those machines as well as the document architectures in all implementations are identical. For example, you could open this document on any of the machines mentioned above and see the same moving icon and clocks, despite even the fact that not all of the machines use the same byte ordering. Availability All Oberon implementations can be obtained via anonymous internet file transfer (ftp) at no charge, or on floppy disk for a fee of 50 Swiss Francs per implementation, which is about 35 US Dollars. We accept payment via Eurocard/Mastercard or VISA. To order by credit card, specify your card number, expiry date and your name exactly as it appears on the card. Please remember to specify your type of machine and operating system when ordering. The ftp connection is:  FTP Hostname: ftp.ssw.uni-linz.ac.at Internet Address: 140.78.145.1 FTP Directory: /pub/Oberon or FTP Hostname: neptune.inf.ethz.ch Internet Address: 129.132.101.33 FTP Directory: Oberon The source texts of the original Oberon system for the Ceres personal workstation, including the original NS 32000 Oberon compiler written in Oberon itself, have been published in the book:  Project Oberon. The Design of an Operating System and Compiler Niklaus Wirth and J…rg Gutknecht Addison-Wesley, 1992 ISBN 0-201-54428-8 Registration Oberon for Windows is free. However, we appreciate some user feedback. Please send a postcard with the words "I like Oberon" (or the opposite, if you don't) and your name and address on it to: Matthias Hausner ETH Z…rich Institut f…r Computersysteme CH-8092 Zurich, Switzerland E-mail: hausner@inf.ethz.ch or Markus Hof and Christoph Steindl Johannes Kepler Universitƒt Linz Abteilung f…r Systemsoftware A-4040 Linz, Austria E-mail: steindl@ssw.uni-linz.ac.at Picture postcards are preferred, because we can pin them to our wall... Enjoy! MaH, CS and MH