PC inspection and utility diskette

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

Download the material
Create the utility diskette
Run the utilities
Brief introduction to the textual interface of Oberon


Whether you are interested or not in using Oberon, there will be a moment in time where you will want to use some of the PC management facilities included in this diskette. The diskette contains a bootable all-terrain Oberon system with which you can inspect the PCI hardware components and the partition tables of a PC.

Creating and using the diskette can also be considered as a trial run for a complete ETH Oberon installation. If successful, some of the initial hurdles of a complete installation will have been overwhelmed already and you will acquire some first-hand experience with and grasp the concepts of the ETH Oberon textual user interface.

Download the material

Using your favorite operating system or Oberon, download these files by anonymous ftp from ftp://ftp.ethoberon.ethz.ch/Oberon/ETHOberon/Contrib/Util/ and save them in a directory of your choice. Note that the diskette image file, exceeds the capacity of a high capacity diskette, so you will have to download it to some other mass storage device. Make sure that your FTP client is set to "Binary" mode for receiving these files.

Create the utility diskette

Using your favorite operating system, create a bootable diskette from the image file util.dsk . All OSs will produce an identical diskette, but none of them, except Oberon, can read it because of its proprietary file system. Hence, clearly label the diskette as "Native Oberon utility diskette". Assuming that you have placed a formatted 1.44 MB diskette in a floppy drive, "a:" in the examples, select the procedure corresponding to your operating system (the entire diskette will be overwritten):
  1. Oberon (starting from release 20.03.00)
    Execute: Partitions.FileToPartition Diskette0#00 util.dsk ~
  2. DOS, Windows
    Run the DOS program rawrite.exe and enter the name of the image file (not the default oberon0.dsk) when prompted for it. When asked for a destination, enter the floppy drive's letter. The diskette is written and verified.
    Alternatively, execute: "loaddskf util.dsk a:" (DOS version of loaddskf)
  3. Linux, Unix - Execute: "dd bs=512 if=util.dsk of=/dev/fd0"
  4. BeOS - Execute: "dd bs=512 if=util.dsk of=/dev/disk/floppy/raw"
  5. OS/2 - Execute: "loaddskf util.dsk a:"

Run the utilities

Insert the diskette in a diskette drive and boot your PC from it. During booting, a black screen with a changing color border can be observed. After a minute or so, a mouse silhouette will appear in the middle of a full screen image with an invitation to select a mouse driver. A suitable mouse driver is selected by exploring a ring of mouse drivers. When the mouse is operational, enter 'c' to continue with booting. The screen will soon display two tracks. The track on the right (called system track) contains two text viewers. The top one is the System.Log, which is used to chronologically report activities and errors. The bottom one, is the Utility.Tool which displays a list of Oberon commands specially selected for the purpose of exploring a PC. The left-hand track (called user track) is empty. An all-terrain, tiny, RAM-based Oberon system is now active. The commands are used in a very direct and practical manner. The syntax and the semantic of these commands, and of a few more, are described in the Introduction to ETH Oberon / PC Native 20.03.2000 beta release.

If you have never used Oberon before, you will have to get used to its novel user interface. Oberon uses all combinations of the three mouse buttons heavily, so a three-button mouse is highly recommended. An introduction to the textual interface of the Oberon system is presented in the last section.

Inspection of a PC

To obtain the PCI devices information, execute PCITools.Scan . The PCI bus is scanned and all the devices found are listed, along with a textual description extracted from an ancillary PCITools.Data file. Here is a sample list:

Bus scan: 
  Bus 0, device 17, function 0, class 00020000, vendor 000010B7, 
  device 00009055, cmd 00000117, status 00000210 
    Ethernet controller: 3COM Corp 3C905B Fast Etherlink XL 10/100 (rev 36) 
      IRQ11, INTA 
      I/O at 0000DC00 
      Non-prefetchable 32-bit memory at FF020000 
      ROM at FB000000
  Bus 1, device 0, function 0, class 00030000, vendor 00001002, 
  device 00004742, cmd 00000087, status 00000290 
    VGA compatible controller: ATI Technologies Rage 3D Pro AGP 2x 
    (BGA Package) (rev 92) 
      IRQ10, INTA 
      Non-prefetchable 32-bit memory at FD000000 
      I/O at 0000EC00 
      Non-prefetchable 32-bit memory at FCFFF000
Execute OFSTools.Watch which issues these lines in the log:
RAM: N2KFS on RAM0 (boot) 
     936Kb of 2048Kb free
(boot) indicates wherefrom the system was booted. Indeed, at this time, the active Oberon system is located in a RAM file system. Alternatively, System.Watch produces a compact list of the mounted file systems (size only).

To access the hard disk(s), the correct disk driver must be installed. The commands are parameterless and produce no immediately visible result.

To obtain the information on the disk devices, execute System.OpenKernelLog . Here follows the information, extracted from a sample log, concerning an IDE controller and the attached devices:
IDE0, 8063Mb, 16383*16*63, LBA, Maxtor 90845D4, ver 4.23 
IDE2, packet12, removable, no DMA, NEC CD-ROM DRIVE:273 
Bus-master chipset not detected
The Kernel.Log text viewer has the same properties as the System.Log but it logs information on events related to the system kernel. Both logs accumulate information also whilst not visualized by a viewer.

To obtain the partition information, execute Partitions.Show [detail] . A text viewer is opened to display the information which resembles this sample:

Disk: Diskette0, GetSize: no media, removable
Disk: IDE0, 8063Mb, Maxtor 90845D4 
IDE0#00   8063Mb --- (Whole Disk) 
IDE0#01    400Mb   6 c:/ DOS FAT16 >= 32M 
IDE0#02   2039Mb   6 d:/ DOS FAT16 >= 32M 
IDE0#03    196Mb  79 Native Oberon or QNX Posix 
IDE0#04   5388Mb   5 Extended 
IDE0#05    196Mb  76 |Native Oberon, Aos 
IDE0#06   1004Mb 131 |Linux fs 
IDE0#07    117Mb 130 |Linux swap 
The amount of information produced is controlled with the optional parameter of the command.

To list file directories
RAM-disk files of the active Oberon system - execute System.Directory RAM:
Files of the mounted Oberon system - execute System.Directory USR:


In case booting does not evolve as described at the beginning, attempt to boot again and
  1. hold down the Shift key or press the ScrollLock key when booting starts. The purpose and the follow-up actions are described in the "Appendix D: How to change the configuration" of the installation instructions - http://www.ethoberon.ethz.ch/betainst.html

  2. at the OBL prompt, enter the string: "Init=9090"     (without the quotes)
    The system is set up for a US keyboard which is depicted at the end of this document.

  3. enter 'c' to continue booting.

Some trace information will appear on the screen. If a run-time error occurs, TRAP xx will be displayed followed by a list of module names with PC = nnn values. It might be possible to infer from this what is causing the problem. If not, please send the first few lines of the module name information, as well as the number of the TRAP to us. This will help us to pinpoint the error in the source code.

If no trace messages appear, it could mean that the CPU type detection is not functioning on your processor. Override the detection by entering the config string "CPU=n", where n is 3 for a 386, 4 for a 486 and 5 for a Pentium or compatible processor.

Brief introduction to the textual interface of Oberon

Command execution - MM
In Oberon, commands are of the written form M.P, where M designates a module (package) and P a procedure (operation) that is provided by the module, e.g. System.Watch . If you have a three-button mouse, commands are executed by moving the mouse cursor to the command text and pressing the middle mouse button (MM). If you only have a two-button mouse, the keyboard Ctrl key is used instead of the middle mouse button.

The execution of a command may have different results:
- the addition of a piece of text at the end of the System.Log
- the opening of a new text window displaying a text document

More often than not, the execution of a command is parameterized. For example, the opening of a document needs the specification of its name, which must appear after the command. Although typical, this is not by far the most general case of a parameter specification. Some commands accept an entire list of names following the command name and execute repeatedly for each member of the list. The list must be terminated by a symbol other than a name. By convention, Oberon uses the tilde character "~", which will be referred to as list terminator, for that purpose. This explains why a parameter must be enclosed in quotes when it contains a special symbol. Examples: "a:/" , "c:/*.bat"

Selection - MR
You can select a stretch of text by moving the mouse to the desired beginning, pressing the right mouse button (MR) and, while holding it down, extending or reducing the selection by moving the mouse. If you click twice at the beginning, the selection is automatically extended to the origin of that text line.

A "^" symbol following a command name is a parameter specification referring to the current text selection. Example: System.Directory ^

Placing the caret in a text - ML
The caret marks the position where text entry is to take place. To place the caret, move the mouse to the desired text, press the ML key, Then, while keeping the key down, move the caret to the desired position. Any subsequent characters typed on the keyboard are then inserted at this position. Experiment with entering and deleting text in the system log. Place the text cursor by clicking ML in the system log. Type some text into the log and use the backspace key to delete it.

There are interesting interclick variants of caret placing and text selection that combine these marking operations effectively with text editing:

Nullifying a mouse command
The current action is nullified, if all remaining mouse keys are interclicked during the action.

US 101-key keyboard

US keyboard

17 Jul 2002 - Copyright © 2002 ETH Zürich. All rights reserved.
E-Mail: oberon-web at inf.ethz.ch
Homepage: www.ethoberon.ethz.ch