FAQ on ETH Oberon - current release (2.3.6)

Download by anonymous FTP
from: ftp://ftp.ethoberon.ethz.ch/ETHOberon/



  1. Where can I obtain the latest ETH Oberon System version?
    Access ftp://ftp.ethoberon.ethz.ch/Oberon/ETHOberon/ and read the Welcome text in 00README in order to select the implementation which suits your platform at best. Then, proceed with the installation. Depending on your geographical location and preferences, you might as well access a mirror site. The DOS-based version of Native Oberon is also available on a double CD-ROM and on-line from the Brighton University as Brighton University Resource Kit.

  2. Where can I obtain other Oberon systems, such as Oberon V4?
    For obtaining the latest version of Oberon V4, access the server of the University of Linz at ftp://ftp.ssw.uni-linz.ac.at/pub/Oberon/. For obtaining informations on Oberon developments outside of the ETH, you may elect to access:

  3. Who is responsible for maintaining the system?
    Professor Jürg Gutknecht's group - http://www.cs.inf.ethz.ch/group/gutknecht/ - conducts the research and development work and maintains the ETH Oberon System. An overview of the different implementations is found in ETH Oberon System - and details on each are found in the installation instructions.

  4. How and where can I obtain support?

    Your text may include any blending of:
  5. What kind of support can I obtain from there?
    Correction of software and documentation errors. Implementation of suggested improvements which do not require changes to the module interfaces and do not require a lot of manpower. The simplest approach is to submit a tentative solution with the suggestion.

  6. Where can I submit my own software extensions as contributions to the Oberon users community?
    Upload your contributions to ftp://ftp.inf.ethz.ch/incoming/ and follow the guidelines in ftp://ftp.ethoberon.ethz.ch/Oberon/ETHOberon/Contrib/readme.txt.

  7. Where can I find others contributions, and mine?
    Download them from ftp://ftp.ethoberon.ethz.ch/Oberon/ETHOberon/Contrib/.

  8. Any suggestions for contributions?
    In the first place, contributions related to PC Native Oberon. See the rapidly expanding list of projects.

  9. How can I be kept informed on new developments?
    You may request to be included in the Oberon Developers mailing list. Information on new developments and changes in the infrastructure (e.g. ftp site) are dispatched at intervals, event driven. Users may also request to be included in a Native Oberon mailing list which specifically addresses that implementation. The next item explains how this is done.

    Alternatively, consult the HTML documents on this site - http://www.ethoberon.ethz.ch. Ben Smith-Mannschott wrote a summary of the Oberon evening that took place in Zürich on May 7, 1999. The page also has links to some pictures and screen snapshots of the demos.


Installation- All implementations

[ Native | Windows | Linux | MacOberon ]

Note: These installation sections act as breaking news for the current public release 2.3.4. The follow-up release will be accompanied by a new install.txt incorporating most of the information which arouse from user questions. Questions related to problems will be moved to a special section, if the problem solutions have been integrated in a new release.

  1. What are the overall system requirements?
    Hardware requirements (processor, main storage, external storage) are specified at the beginning of the installation instructions documents - see below.
    In general, Oberon is so tiny that it will easily fit on any up-to-date platform. For Native Oberon, one has to determine if the hardware components at hand are supported - see below.

  2. What are the specific system requirements with respect to hardware components and peripheral units? In particular, which video cards will PC Native Oberon work?
    The ETH Oberon System for Windows and the Linux implementations do not have special requirements beyond those of the underlying operating system. The PC Native Oberon implementation requirements are found in http://www.ethoberon.ethz.ch/hcl.html

  3. Does a Native Oberon exist for the iMac, running without MacOS on the bare hardware?
    No, unfortunately not. Because of Apple's proprietary hardware, this will probably never exist. There is a slightly outdated version of the ETH System for MacOS. It will probably run on the iMac.

  4. Can Oberon co-exist with my installed software?
    Yes, it can in various combinations. Here is a working example:
       Device Id Num Part   Size    System 
         hda1  6  0    6    400 MB  C:DOS FAT16 - DOS 6.21 
         hda2  6  1    6  2.040 MB  E:DOS FAT16 - Win NT & Oberon for Windows 
         hda3 4f  2   79    196 MB  Native Oberon or QNX Posix 
         hda4  5  3    5            Extended 
         hda5 50  4   80    196 MB  | Native Oberon (alt) or Lynx RTOS / DM 
         hda6 83  5  131  1,004 MB  | Linux fs - SuSE 6.1 & Linux-based Oberon 
         hda7 82  6  130    119 MB  | Linux swap 
         hda8  6  7    6  1,004 MB  | D:DOS FAT16 - Native Oberon in a file
    In all, four Native Oberon and one Oberon for Windows.
    The Win NT Bootmanager is used and is defined as:
    DOS booting is controlled by a boot menu:
    and Linux booting is controlled by LILO with a menu defined as:
    Linux Native Oberon is also installed and working under X11. The other two Stand-Alone Oberon systems can also be started under X11.
    All these systems, except Linux Oberon, can be started with boot diskettes.

  5. How different are the various ETH Oberon System implementations offered on the site?
    In essence, the development team is striving after the ultimate goal of producing a universally portable system. In practice, this goal is beyond reach but what has been achieved up to now is quite impressive. The majority of modules are portable and those which are not are easily identified in two ways: The various implementations also show differences in their release levels since the concurrent maintenance of that many ports consumes a manpower which exceeds the manpower available in the group. Some ports are necessarily lagging behind. Presently, Native Oberon (all variants) and Oberon for Windows are in unison.

  6. Among the different PC Native Oberon implementations, one is "Linux-based". If it's "Native", doesn't that mean that it doesn't run on top of another OS at all, but under its own steam? Yet, there's "Linux" in its name, so it can't be so --- please explain!
    Linux Native Oberon is an emulation of Native Oberon running on Linux with X11. It works by replacing a handful (8 in all) of low-level modules with implementations for Linux. The interfaces of these modules are exactly the same as those of Native Oberon, so the rest of the Native Oberon modules are loaded unchanged on this base. Any modules you write, are also binary compatible with Native Oberon. You can even set up Linux Native and real Native to boot interchangably from the same disk partition.

  7. What is the correct procedure for installing Oberon in my environment?
    Installation instructions are contained in readme.txt files found in each of the implementation directories.

  8. What is the correct procedure for updating/upgrading an existing, running Oberon system?
    Apply the recipe described in the section RE-INSTALLATION OF OBERON in the readme.txt file corresponding to your implementation. Special instructions for Native Oberon are given below.

  9. What kind of troubleshooting information is available before seeking support from oberon@inf.ethz.ch?
    The install.txt of the stand-alone Native Oberon features a TROUBLESHOOTING section which should help in many circumstances.
    This FAQ document is destined to document other frequently encountered problems.

  10. I have the CHIP CD 3/99 with Oberon. What should I pay attention to?
    One detail escaped the attention of the producers: three files are not ASCII files, namely Oberon\00README.txt, Oberon\license.txt and Oberon\Win95NT\00README.txt. Open them with Quick View instead of using the Notepad by default.
    The .Arc files in Oberon\Native\StdAlone\ are Oberon files for use after the Oberon installation.

Installation - Native

Installation instructions are found in:

  1. I installed the DOS-based Native Oberon but I can't get it to boot: it either freezes or starts to beep wildly. Can you help?
    Hint: The beta release 2.3.4b has been corrected.
    Yes, sometimes the installation program operates with wrong drive letters, that is, it does not name the drives in the same order as DOS will do when it is used to bootstrap Oberon. When you used install.exe to install DOS-based Native Oberon in a large file on a FAT16 partition, or used config.exe to re-configure the system, the drive may have been given the name d:. This information will be recorded in the native.par file, constructed automatically, as:
    and later on, when DOS is bootet, the loader will be confused because DOS knows that drive as C: for instance. If the TRAP information is obtained for that case, it will show TRAP=8, meaning: the wrong disk is used.

    Temporary fix: change the drive letter in native.par with an editor. The next release will be corrected.

    A2: Yes, when the system is installed in a logical partition, this symptom may appear. If the TRAP information is obtained for that case, it will show TRAP=15 and the line above says: Error: ~16-bit FAT. The next release will be corrected.
    No such problem exists when the system is installed in a primary partition. The partition should however be at least 16 MB large. Smaller partitions/logical drives are formatted with 12-bit FAT, which is currently not supported by the module Disk.

  2. CDAudio does not work in this version 2.3.4b, but was working in 2.3.2 and 2.3.0.?
    There is a known incompatibility between the new ATADisk driver (Standard ATA/EIDE) and the Atapi CD driver, that will be fixed later.

  3. I can open a zip archive, but at times a file extraction falters. What is wrong?
    Yes, we have seen intermittent problems with UnZip. UnZip was removed and replaced by zlib in the beta version.

  4. Dynamic arrays with an even number of dimensions do misbehave. What is wrong?
    A patch for PC Native Oberon 2.3.5b is to be found on ftp://ftp.ethoberon.ethz.ch/Oberon/ETHOberon/Native/Update/patches/CompilerPatch235.Arc. The bug was found by Alan Freed and fixed by Patrik Reali.

  5. I'm having a heck of a time downloading the DosBased files. When I assemble the pieces using the copy /b dosbased.aa+... etc. to get a dosbased.zip, the resulting zip file appears corrupted? Any ideas?
    It turns out that the downloads seem to have been fine, but the copy /b in an NT DOS box may have been the problem. When I did the copy in real DOS 6.22, it all worked. (Reported by Mark Woodworth).

    A2: To get the fuzzy copy command out of the way, a combined dosbased.zip is now uploaded to ftp.inf.ethz.ch. The subdirectories ETHOberon/Native/DosBased/Full/ and ETHOberon/Native/Update/v236/DosBased/Full/ each contain such a combined dosbased.zip.


  6. My BIOS has a setting "Plug & Play OS Yes/No". How should this be set?
    Set it to "No", so that the BIOS enables all Plug & Play devices.
    Boot manager

  7. I am using BootMagic. Are there any special settings required for Native Oberon?
    Yes, disable the "hide partitions from operating system" setting in the boot menu setup. Otherwise, BootMagic will hide FAT partitions from Oberon.

  8. I am not sure which mouse driver I should select in the prompt line? Any hint?
    The latest beta release (and prior betas) allows you to interactively select the mouse driver. Things are now much simpler.

  9. I am having a problem installing Native Oberon 2.3.6. I cannot get past the Mouse Configuration Screen because the PS/2 probe seems to hang my AT keyboard interface. The mouse is a Logitech serial mouse. Is there some way to specify the mouse at the boot prompt like we used to do and bypass the Mouse Configuration screen?
    This problem was fixed in subsequent releases.

  10. When installing a serial mouse for Native Oberon by pressing "M" at the mouse configuration screen of Oberon-0, many trap viewers appear. What can be wrong?
    Check if the COM ports are configured to their standard settings in the BIOS. COM1 should be at 3F8H, IRQ 4 and COM2 at 2F8H, IRQ 3.

  11. I have a Logitech Trackman (M/N T-CC2-9F, S/N LU469200987). The trackman works when configured as MT="LM1"(type = > LogiMan = 5) - and it does not work when configured as any other type - but it does not produce middle button clicks, so the left hand must press the Ctrl key instead. What should I do? Sent by baslepoly@bluemail.ch
    The originator changed the Input.Mod and managed to make the middle button work. The modification will be studied and included in the next release.
    Display / video card / chip set

  12. If I acquire an S3-Virge card with AGP, will it work with Native Oberon?
    This kind of question is difficult to answer, because the only real way to know is to try it. If the card supports Vesa 2.0, chances are very good that the Native Vesa 2.0 driver will work. Read on to the next question.

  13. When configuring Native Oberon, looking at the video options, I see a list of card resolution combinations, and each combination also appears with "VESA2.0". Does it mean that only VESA2.0 compatible cards can be used that are listed? I.e., not -all- VESA2.0 cards???
    The Vesa 2.0 driver uses the Vesa BIOS services to initialize the card with a linear frame buffer. So, yes, it should work with all Vesa 2.0 cards.

    However, some cards only support Vesa 2.0 for a few modes, e.g. the Diamond FireGL only has Vesa 2.0 support for 640x480 modes! Run the vesainfo.exe utility available from ftp://ftp.ethoberon.ethz.ch/Oberon/ETHOberon/Contrib/Native/ under DOS (without loading any TSRs or drivers) to see which modes your Vesa 2.0 bios supports. As an example, running this utility against the Intel 740 AGP video card shows that the card supports all these VESA 2.0 modes:

    VESA 2.0 8192kb Intel740 Super VGA

       100 C000:3165 A000 RW 64K 64K E7000000 640x400x8 
       101 C000:3165 A000 RW 64K 64K E7000000 640x480x8 
       103 C000:3165 A000 RW 64K 64K E7000000 800x600x8 
       105 C000:3165 A000 RW 64K 64K E7000000 1024x768x8 
       107 C000:3165 A000 RW 64K 64K E7000000 1280x1024x8 
       11C C000:3165 A000 RW 64K 64K E7000000 1600x1200x8 
       11D C000:3165 A000 RW 64K 64K E7000000 320x200x8 
       11E C000:3165 A000 RW 64K 64K E7000000 320x240x8 
       121 C000:3165 A000 RW 64K 64K E7000000 400x300x8 
       124 C000:3165 A000 RW 64K 64K E7000000 512x384x8 
       136 C000:3165 A000 RW 64K 64K E7000000 1152x864x8
  14. How can I adjust the display refresh rate?
    The display refresh rate can be changed by executing a DOS refresh command immediately before starting Native Oberon. The most immediate solution is to insert the refresh command in the AUTOEXEC.BAT file used to start Oberon:
    rem The display refresh rate can be adjusted now before starting Oberon 
    rem The DOS command is usually provided by the video card manufacturer 
    rem s3refrsh applies to the S3 Trio64V+ chip set 
    rem The x and y values are obtained by executing: s3refrsh /? 
    c:\dos\s3refrsh x y >nul 
    cd native 
    oberon.bat would start Native Oberon with:
    noboot native.bin oberon.par

    Hard disk / controller

  15. I tried to install Oberon to my hard disk. The jumper is set to "slave mode". When I clicked the command that displays the disk partitions, the mouse pointer jammed for a while and then a Trap viewer appeared to the right-bottom corner?
    With a single disk, that disk must be a "master". When two disks are installed, one master and one slave, you can install Oberon on any of them.

  16. How do I get ETH Native Oberon release 2.3.6 to run off a SyQuest SparQ removable cartridge drive attached to an IDE (ATAPI 1.2) controller?
    When booting from Oberon-0, at the OBL> prompt enter ATABM=0 and execute Config.Disk Standard ATA/EIDE. Peter Percival experienced that it is necessary to disable bus-mastering with ATABM=0 in this case. If it is enabled, a TRAP is raised:
         TRAP 17 Disk error 
         ATADisk.Report PC=9213 
    Partition.Show reports
       Disk 0 956 Mb 
       Num  Disk  Mb  Typ  Description 
       0    0     956   6  C:DOS FAT16 >= 32M
    and System.OpenKernelLog produces the following Kernel.Log information (extract):
    ETH Oberon System 3 / PC Native 2.3.6 (13 May 1999) 
    Disk0: IDE1.0, 957Mb, 1945*16*63, removable, SyQuest SparQ, ver 4.23 
    Disk1: IDE1.1, 0Mb, 0*0*0,  
    Disk2: IDE0.0, packet, removable, ASUS CD-S340
    Native Oberon can be installed on the removable disk.

  17. My PC has a 3Com 509B card. The green light on the 509B illuminates when the system starts up. When executing 'Desktops.OpenDoc "ftp://.host./"', after a few seconds the System.Log reports 'ftp://.host./ loading document failed' and the light extinguishes. Any hint?
    Check your card configuration with a configuration program supplied by the card vendor. The program 3C5X9CFG.EXE is located on the second diskette of the latest drivers, which can be downloaded from support.3com.com/infodeli/tools/nic/3c509b.htm. Use it to configure (IRQ, I/O base, ...) and test your card. DO NOT choose Auto Select mode.

    More generally, if you have a 3Com card and you don't know exactly which one, run 3LINK-ID.EXE.

  18. When I try to use PPP, I get the following trap:
         TRAP 99  HALT statement 
         PPPMain.SendPacket  PC = 808
    How do I get around this problem?
    Check that NetSystem.Route0.Mode = "" in Oberon.Text

  19. Can I use an ISDN adapter card?
    This has not been tried here, but it might be possible with some ISDN adapters, if the adapter has a serial interface similar to a modem. Paul Provoost has a ZYXEL ISDN adapter that has a COMx interface. It works!

    Citing him: Using an ISDN adapter with a serial interface like a modem is just like using a modem. However you must pay attention to the CHAP and PAP way of identifying yourself. I use PAP, and this means that I must fill in the PAPname and PAPPassword strings in Oberon.Text. The relevant part of my Oberon.Text is:

    DIAL = { 
         Host = { "<slipserver>" }     {* SLIP only *} 
         Init = { COM2 57600 }     {* modem port and speed *} 
         PAPName = { "provo005@tref.nl" }     {* if using PAP only *} 
         PAPPassword = { "............" }     {* if using PAP only *} 
         Dial = { 
              10 "OK" 
              "ATD 2301333" 
              60 "CONNECT" 
              CALL PPPMain.StartInst 

    Notice that immediately following the "CONNECT" PPPMain.Startinst is called.

    End of citation

    Watch out of cards that require special Windows drivers to function, they will not work with Native. Perhaps Edgar Schwarz knows more about this.

  20. I understand that I must supply interrupt and i/o address values to the operating system, but how?
    If this is the case, the card probably requires a special driver.

  21. I want to use other fonts than those provided by the basic system. How do I proceed?
    The OpenType for Oberon package allows you to convert TrueType fonts to Oberon raster fonts in two ways: Installation and usage information are found in OType.Text -> access Contributions - ftp://ftp.ethoberon.ethz.ch/Oberon/ETHOberon/Contrib/

  22. What does Native Oberon do when it is performing "garbage collection" on the harddisk?
    The Disk module keeps track of which sectors are in use by using a bitmap. This map is saved to disk when the system exits cleanly (System.Quit or System.Reboot). When the system starts, the map is read from disk. If the map is more than 90% full (i.e. less than 10% of the sectors are free), a garbage collection is performed. This starts with an empty map, and then all registered files are found and their sectors added to the map. All sectors that are left over are then freed up for re-use. System.Watch can be used to see how much space is currently free. The threshold value (here 10%) is obtained from the OBL configuration string DiskGC documented in http://www.ethoberon.ethz.ch/native/Tech.html#defs.
    Low-level tracing

  23. Oberon-0 does not boot. Can I follow the boot process in detail?
    Low-level tracing of Oberon can be performed by connecting two PCs with the following set-up: The trace output of the Oberon test PC will be sent over the serial cable for display on the other PC's terminal program.


Installation - Native on Mac

  1. Can I run Native Oberon on a Motorola Starmax PPC (Mac clone) using BlueLabel (a new PC emulator allowing to "compose" a virtual PC with lots of freedom in setup) - See report?
    Citation: "Native Oberon 2.3.4 runs now on an emulated Pentium PC on Mac (Motorola Starmax 5000, PowerPC 603/275MHz, Mac OS 8.1, BlueLabel 1.0.5). Two known follow-up problems remain to be solved." - Patrick Hunziker - hunzikerpa@ubaclu.unibas.ch. For Mac-related questions you may also contact Ben Smith-Mannschott - smithmab@student.ethz.ch, who has also been playing with Native on a Mac using VirtualPC. He had problems with the boot diskette, but got it running by using a diskette image file instead of a real diskette.


Installation - Windows

  1. NetSystem does not work on some Windows systems. Why?
    The most recent version on ftp.inf.ethz.ch has been corrected. Some patient work was needed until the problem could be reproduced here.
    Temporary fix: use the command: System.Set NetSystem Async := No ~ to change a registry entry.

  2. I have installed the ETH Oberon System for Windows NT. When starting Oberon, it appears in a normal window, approximately 760 x 550 pixels, which cannot be maximized. What is wrong?
    Locate the Oberon shortcut on the desktop. Position the mouse focus on it and click the right mouse key. Select Properties in the menu. Now select the Shortcut tab. Finally, select Maximized for the Run text field and finalize the new setting.

  3. I want to specifiy the working directory in a shortcut to oberon.exe ("Start in" property). Why does this not work?
    Oberon uses the registry entry System\Work for the working directory. If you want to use the "Start in" directory of the shortcut set the registry entry "Work" to an empty string. ( System.Set System Work := "" )

  4. I have installed the ETH Oberon System for Windows NT. When I try to print a document using the default Windows printer, all I get is what appears to be very tiny, unreadable text. What is wrong?
    Open the PrinterInfo.Panel and click the Update Button to display the current setting. If your printer is set to 600 dpi, install the corresponding fonts with Installer.Install Pr6Fnt.Arc or set your printer to accept 300 dpi fonts, which are installed by default.

  5. I have installed the ETH Oberon System for Windows NT. Reading Printers.Tool, two different printer drivers are offered and the Windows print manager is installed by default. Which is the best choice?
    We recommend to use the PSPrinter if the documents to print only use the Oberon raster fonts (Syntax, Oberon, Courier, Math or Greek). Make sure that these fonts are available as Pr2, Pr3 or Pr6 fonts in the Oberon system directory as need be. If other fonts happen to have been used, you have to specify a font mapping. For viewing and printing PS files, we recommend to use Ghostscript.

    Another variant may be used if you have access to a network PS printer. You may then choose to install the LPRPrinter, which is found among the applications (LPRPrinter.Arc).

    WinPrinter prints Oberon fonts as bitmaps (for each character). Thus, the resulting page can get very complex. Most cheap printers do not have enough printer memory to print complex pages with this printer driver. In that case, the output will get messed up. To print with 300 DPI resolution at least 1 MB of printer memory is needed, to print with 600 DPI resolution at least 4 MB are needed. WinPrinter has proven to work with the following printers:


Installation - Linux

  1. I have installed the ETH Oberon System for Linux with KDE. How can I control that system with a 2-button mouse? Neither the Ctrl nor the Alt key activate a command.
    A 2-button mouse is unsuitable. It would be possible to emulate the MM button using the keyboard Ctrl key, but the Input.Mod would have to be modified for this implementation.

  2. I tried to install the ETH Oberon System on a x86 SuSE 6.2 Linux system. Although I exactly followed the installation instructions the system crashes every time I try to execute it. There's a X-window and even an Oberon-trap-window.
    This may happen if Oberon gets out of file handles during initialization. When the initialization is done, the garbage collector prevents such situations. The Oberon system has been tested on RedHat Linux systems where this never happened. Here is a work-around:
    in Oberon.Text remove or comment out the line:     { TextDocs.ReplaceSystemEditor }
    and change the line:     { System.Open System3.Tool }     to     { System.Open System.Tool }

    A2: The Oberon startscript contains an error.
    Replace the line:     xset fp+ /usr/local/X11/lib/fonts/OberonXFonts
    by:     xset fp+ ${ohome}/XFonts

    Information supplied by Guenter Feldmann


Installation - MacOberon

  1. Is there no way to use a 3-button mouse with MacOberon, instead using the ctrl and alt/option keys?
    Patrick Hunziker recently found out that the 3-button mouse Microspeed Mac Mouse Deluxe can easily be configured to work with MacOberon, using the Microspeed Mac Mouse Deluxe driver 3.4. Note that this product is now discontinued. Consult Microspeed for an alternative.

Getting started and beyond

  1. Now that my system is installed, how do I familiarize with its specialities?
    Each implementation features a text document GettingStarted.Text. To many, the graphical user interface is unusual (compared to that of commercial software) and the manipulation of the mouse is considered as awkward at the beginning. The text mentioned contain sandboxes which help overwinding that difficulty.

  2. I became aware that Native was case sensitive with respect to its file names. What are the rules?
    All Native Oberon systems are case sensitive with respect to file names. Case sensitivity in the file system is consistent with case sensitivity in the Oberon language. Windows Oberon is not case sensitive. In MacOberon using a file name with the "wrong case" will result in a trap:
         F := Files.New("ABC"); 
         Files.Old("abc"); --> trap
  3. Native Oberon users generate many files which all land into the same directory, some of them short-lived or redundant, others not-to-be-remembered-by-name. How do other users clean out redundant files or find the others using information other than the file name?
    Here is what we suggest to do:

    For temporary files, always prepend "Temp", so you can easily delete them.

    For retrieving a file by theme/subject, use the following methods, in order:

    Seeing a list of files, N days old, would help to find a file quickly. This is not possible at present but someone could take ftp://ftp.ethoberon.ethz.ch/Oberon/ETHOberon/Contrib/Native/TestDir.Mod and make such a tool out of it.

    Here is another "Clean up" recipe brought forward by Peter Easthope:

    After installing the system do: System.Directory ^ ... *\d .This gives a complete list of files. Store it in a file named Directory.

    When you want to tidy the file system do: System.Directory ^ ... *\d again and store it in Directory.new. Do Diff.Do Directory Directory.new . The new files appear in the right viewer of the comparator in blue and are easy to find. Step through the viewers and copy the file names you wish to delete into the argument of System.DeleteFiles ~ . Once the argument is assembled, execute System.DeleteFiles.

    Some will object that they did not do "System.Directory ^ ... *\d" after system installation and hence can not use this technique. Oberon occupies so little space that two or more partitions can be allocated for it at very little cost. In about 30 minutes the system can be installed in a spare partition and the directory listing can be obtained.

  4. A timer overflow occurs when a machine runs long enough. How long is this period and how can I work around any possible problem?
    The period is approximately 24 days.

    A2: To ascertain that a task runs correctly:

    1. initialize the T.time field with Input.Time or Oberon.Time when the task is established and at every call of the Handle procedure.
    2. test for (time2-time1) < 0 and NOT (time1 > time2) (it is better to substract the timer values).

    A3: To ascertain that a selection is correctly handled (the Display.SelectMsg or the Oberon.SelectMsg are involved):

    1. initialize the M.time field with -1
    2. a selection exists if (M.time # -1)
    3. after calling Oberon.GetSelection or Gadgets.GetSelection, test if (M.time # -1)
    4. test for (time2-time1) < 0 and NOT (time1 > time2) (it is better to substract the timer values). It may also be necessary to test if (M.time1 # -1) or (M.time2 # -1) depending on the situation.

    For an example of the use of modular arithmetic comparisons on signed numbers, see "TCP/IP Illustrated, Vol. 2: The Implementation" by Wright and Stevens, pp. 810-812.

  5. I am often missing a way to move text, instead just copy it. Any good idea?
    A cut-and-paste facility was added in release 2.3.6. Proceed in two steps:

    Make sure no other selection exists, otherwise it will be copied instead.

    Note: Currently this works only with the TextGadgets editor, but in the next release it will also work with TextFrames and ScriptFrames (editors Edit, Script, ET).

  6. Is there a way to operate in single track, so both tools and documents would open in a single track using the whole screen width? The problem is that the text viewer does not automatically "word wrap" the texts. It concerns low resolution (VGA) monitors, which are still quite common on laptops. So, one must choose a very small font to be able to read a whole line in either track.
    With Native Oberon, edit Oberon.Text as follows:

       System = { 
          InitCommands = { 
             { System.Open System.Tool } 
             { Configuration.Marker set system} 
             { System.Grow } 
             { System.OpenLog } 

    With Oberon for Windows, edit Configuration.Text as follows:

       Configuration.Marker set system 

    This will start Oberon in single-track, but this setting can be left at any time with System.Close, and resumed with System.Grow.

  7. My e-mail correspondant alarms me: "What was all that junk at the bottom of your post? about 60 lines of rubbish, like an attachment, encryption, or uuencode". What do I tell him/her?
    You, as an Oberon user, sent a mail with embedded Oberon objects. You should not send oberonish stuff in your mail if the addressees are not Oberon users or perhaps don't read their mail with Oberon. To make sure that no such "rubbish" is not sent by mistake, set the Content type (in your Mail.Panel Settings Iconizer - bottom right!) to "ASCII" or "ISO-8859-1". The Oberon mailer will remove all the Oberon objects on-the-fly, replacing then by a space. If Content type is set to "Auto", the mail will only be Oberon-encoded if it contains at least one Gadget.

    As an Oberon user, you can view the source of a message (use the [Source] Button in the menu bar). The line after "--- start of oberon mail ---" marks the beginning of the mail with encoded Oberon objects, perceived as junk. You can also view it by selecting this beginning and executing AsciiCoder.DecodeText % @

  8. Can I send prepared e-mail in batch mode?
    No, that is not foreseen in the current layout of the Mail.Panel.

  9. Is there a short way to delete read messages from mail panel? I know I can delete them from the list by RM + LM clicking, but this way of deleting does not delete from the file "MailMessages". I do not want to edit this file.
    Use the Mail.Collect command. This renames MailMessages to MailMessages.Bak, and copies the non-deleted messages to a new MailMessages file. So all messages you have deleted with MR+ML interclicks will disappear.

    Note that the current file size limit of Native Oberon is about 12Mb, so it is a good idea to periodically collect your mail, not using Mail.Collect, but rather starting "afresh" with an empty "MailMessages" file.

  10. How should one organize the correspondence exchanged with different correspondents?
    Peter Easthope submitted a case study entitled "A gadget for correspondence" providing a workable answer.

  11. Which word processor is available?
    Edit is the simplest possible text editor common to all implementations and the text editor ET is offered as an application (ET.Arc). None of them have text formatting capabilities.

    In the basic Native Oberon system one can use Script. Open its documentation with Script.Open ScriptGuide.Text. In the Windows, Linux and Macintosh implementations, Script is an application which must be installed (Script.Arc).

    If Gadgets is installed on top of the basic system, you can compose TextDocs documents. See TextDocs.Tool and EditTools.Tool. Open a document with Desktops.OpenDoc <name>.

    Script and the editor of TextDocs documents are formatting document editors that allows arbitrary objects like graphics or pictures to flow within the text stream. Mouse events are forwarded to objects when the mouse cursor resides within their screen area, so the object's content can be manipulated and edited in-place. TextStyle gadgets control the look of the text following their occurrence. TextStyle attributes cover formatting modes, widths of the left and right margins, tabulator stops, line spacing and page break at the style location. When made visible, a TextStyle displays as a "ruler" at the style location showing its current state. The most important style attributes can be set directly at the ruler with mouse commands.

    The text editor TGX, an extension of ET, is offered as a contribution by Christian Hoffmann - christian.hoffmann@wsl.ch.

    Other Oberon systems have their own brand editor(s) / word processor(s).

  12. Which document processing sytem is available?
    OberonTeX is a port of TeX and LaTeX for the ETH Oberon System. The beta version is available as a contribution. Note that this is a work-in-progress, and updates will be made continuously. Beta testers/developers are sought.

    A2: The module HTML.Mod can be used to convert an Oberon text to HTML. The text must be composed according to a small number of rules enabling the compiler to recognize headings, normal text, italic text, preformatted text, lists and horizontal rulers. Though very rudimentary, it covers basic needs. The HTML document you are reading now has been prepared with that tool.

  13. Is there a way to use a different default font family or size for all documents I open?
    Write a command My.DefaultFont to modify Fonts.Default, e.g.
         MODULE My; 
         IMPORT Fonts; 
         PROCEDURE DefaultFont*; 
           Fonts.Default := Fonts.This("Oberon12.Scn.Fnt") 
         END DefaultFont; 
         END My.
    This will only affect new texts that you create. Existing texts have their font stored with them.

    A2: Select the most suitable command among those offered in the EditTools module: EditTools.IncSize, EditTools.ChangeSize, etc. (open EditTools.Tools to be informed). These command operate on the selected text. To make a large selection, Copy the viewer, select the top in the top viewer, and select the bottom in the bottom viewer while holding down the SHIFT key.

  14. Is there a way to convert Oberon *.Text files to DOS *.txt?
    For all implementations, open the text in a viewer with Desktops.OpenDoc <filename>, mark the text with F1 (*) and execute EditTools.StoreAscii *
    In Native Oberon, you can convert several files in one go with:     Miscellaneous.MakeDOSText { oberonfile => dosfile } ~

  15. How would you transfer big files between Linux and Native Oberon?
    1. If you have Linux on the same machine, we suggest creating a FAT16 partition to transfer files between Linux and Oberon. On Linux, you can mount the FAT partition directly, and on Oberon, you can access it with the DOS module.

      To transfer a whole directory structure, build a "command script" using Unix.

      In Linux:

      find /some/dir -type f > Temp.Script     # list all files into Temp.Script 
      vi Temp.Script     # edit script 
      :%s/$/" => /     # append " => to every line 
      :%s/^/"/     # prepend " to every line 
      Go~<ESC>     # append ~ at end of file 
      :1     # go to first line 
      ODOS.Copy<ESC>     # prepend DOS.Copy command 
      ZZ     # save and exit
      In Oberon:
      DOS.Copy "/some/dir/Temp.Script" => Temp.Script ~ 
      Desktops.OpenDoc Temp.Script
      and add the Oberon file name at the end of every line. Execute the command and voilà!

    2. Use Linux Oberon or Linux Native Oberon to compress the files first, using the Compress utility of Oberon. Then transfer these compressed files via diskette.

    3. If you have a LAN, transfer the files with FTP.

  16. How far ist Oberon insensitive against the Y2K problem?
    We believe the date routines in the system will continue to function correctly after 2000. If problems are detected, they will be fixed speedily.

  17. Can a virus like Melissa affect an Oberon system?
    No, but only until an evil person finds a breach in the Mail system. Mail messages with attachments can not even affect an Oberon system running under Windows. Morality: use plain text when sending e-mail. Refrain from using attachments. Use only the Oberon Mail system for receiving mail.

  18. Can I program in Oberon-2 under ETH Oberon System?
    Yes, the compiler is an Oberon-2 compiler but the option \2 must be specified in the Compiler.Compile command. The system is however entirely programmed in the original Oberon language.

  19. Does Native Oberon use Slim binaries or purely "native" binaries?
    It does not use slim binaries, the .Obj and .Sym file formats are used. This applies to the latest SharkOberon implementation too - see next question.

  20. How much manpower was needed for porting the system to the DNARD Network Computer (SharkOberon)?
    Four man-months were enough to write a backend for the compiler and to port the system for which a few drivers had to be written: display, keyboard, mouse (2-button mouse) and Ethernet driver. The kernel includes its custom memory management and trap handler. Floating-point is emulated. An assembler has been added to the compiler in order to support low level programming.
    The compiler is based on the original Wirth compiler from Project Oberon. This is probably one of the reasons why the project could be done in only 4 months by a graduate student. As far as is known, the only extensions are the FOR statement and pointer to open array.

  21. Can I use that system for developing Windows software with the ETH Oberon System for Windows?
    Yes, EXE and DLL executable files can be built with the PELinker described in the UserGuide.Text document included. But do that may not be the wisest thing to do. There exist also other Oberon-based development systems offering this capability.

    More generally, to be informed on Oberon-based programming environments related to Oberon, consult Guy Laden's Oberon System Implementation List - http://www.math.tau.ac.il/~guy/Oberon/systems.html and the associated Oberon Compiler List - http://www.math.tau.ac.il/~guy/Oberon/compilers.html

  22. Can I call Windows API or DLL functions in the ETH Oberon System for Windows?
    Yes. Details on how to achieve that are found in the UserGuide.Text document included.

  23. How can I control I/O ports of a PC?
    Serial port: Use the facilities provided in the V24 module found in all the ETH Oberon System implementations. PC Native Oberon supports a serial mouse.

    A2: Parallel port: Use the facilities provided in the Centronics module of PC Native Oberon. It is limited to output only, i.e. a bi-directional protocol is not supported. This subject is treated more generally in Parallel Port Central - http://www.lvr.com/parport.htm.

    A3: Sound card: Get some inspiration by looking at the source text in the Sound module of PC Native Oberon or in Win.Audio.Arc for the ETH Oberon System for Windows. These support the Soundblaster compatible cards. Watch this: some of the modules used in the Windows implementation are not portable (compile with option \N).

  24. Has Oberon, in the widest sense, been documented in English only?
    Not quite true. Four books in German have been published, but extremely few papers or articles document Oberon in German (mostly), French, Dutch or Russian. Consult http://www.ethoberon.ethz.ch/books.html

  25. Some of the key books describing the Oberon language and the Oberon operating system cannot be ordered anymore. To cut short on all rumors, what is the final word on their availability?
    With the help of many participants, the current status is summarized in the Oberon Books section of the bibliography.

  26. Where can I find introduction material, or even better, an introductory course to the ETH Oberon System?
    Access the An Introduction to Oberon by Günther Sawitzki - http://www.statlab.uni-heidelberg.de/projects/oberon/Ito/
    The german version Einführung in die Programmiersprache Oberon is accessible from there.

  27. I wonder if anybody has worked answers to the exercises in the books

Applications and Programming

  1. What are the pros and contras of Native Oberon?



  2. Can you give example(s) of its use as a software development platform?
    Padded Cell Software Ltd develop custom 32-bit Windows applications with their Oberon cross-compiler and linker working under PC Native Oberon or DOS. See the screenshot from the recent Oberon Evening in Zurich - Section 4.1.

    Citation: "Being able to cross-compile from ETH Oberon System to Win32 means that we are totally independent of Microsoft for our production of software. Even if the target is Windows, there's a world of difference between getting a system working for a user, and getting it working smoothly as a development machine - now we don't have to!" - Paul Reed, Managing Director, Padded Cell Software Ltd

  3. Is the Oberon system effectively useable for anything else than software development?
    Here is an example of industrial application which we have visited recently.

  4. Where do I find mathematical routines for Oberon?

  5. I want to build some drivers. Version 2.3.2 had several *.Mod with examples of 'i386' code. It's not clear to me how to pass parameters and return values from i386 code PROCEDUREs. Is there formal 'i386 code' syntax, on line?
    Patrik Reali documented this on his OP2 for PC Native Oberon pages.

  6. What is your response to having a CLI (Command Line Interface) viewer as an extension to Oberon?
    Command Line Interface (CLI) compared to TUI


Legal matter, copyright

  1. In which legal terms is the ETH Oberon System copyright protected?
    It is permitted to use, copy, modify or distribute the system software according to the terms contained in the Legal information section of the Install.txt file distributed with PC Native Oberon and of the Distribution.Text file distributed with ETH Oberon System for Windows.

    The source code is copyright-protected as specified by the license terms in ftp://ftp.ethoberon.ethz.ch/Oberon/ETHOberon/license.txt. An excerpt of the license text appears as comment at the beginning of each source module text as a reminder.


Background information

  1. How different is the ETH Oberon System compared to other Oberon systems?
    The Oberon sytems ancestry at the ETH is as follows:

        Oberon system = V1 ( V2 V4 | ETH Oberon ).

    The main difference between V1 and V2 is the introduction of an extensible text model and the text editor Write.

    The main difference betwen V2 and V4 is the unification of the two text editors Edit and Write. In order to avoid confusion with ETH Oberon (which was then called "System 3"), the direct successor of V2 was named V4.

    The main difference between V2 and ETH Oberon System is that the ETH Oberon, which emerged approximately one year later, introduced a more general object model, not restricted to text elements, and the notion of persistent object libraries.

    Citation of Josef Templ - approx. 1994

    At present, the Oberon System V4 is maintained by the System Software Group of the University of Linz which has developed it considerably.

    In the mean time, several other Oberon systems have appeared.


9 Dec 2002 - Copyright © 2002 ETH Zürich. All rights reserved.
E-Mail: oberon at inf.ethz.ch
Homepage: www.ethoberon.ethz.ch/