wOberon10.Scn.Fnt ZParcElemsAlloc Oberon14b.Scn.Fnt Oberon8b.Scn.Fnt Oberon12.Scn.Fnt6 Oberon12b.Scn.Fnt  Oberon8.Scn.Fnt w  Oberon10i.Scn.FntnO^\webV ,Oberon12i.Scn.Fnt%">Dm : u  7  -sI )- C xr N) < C OX !o$zu  !    +  !?_ 1: g ; us, 4u   J U #8m 3 Oberon10b.Scn.Fntd Ќn'HP_OberonTM User's Guide Release 4.3 (19 October 1995) Jacques Supcik Copyright (c) ETH Zrich, 1990- 1995 Introduction HP_OberonTM is an implementation of Oberon for Hewlett_Packard Apollo Serie 700 workstations. Both the programming language Oberon_2 and the Oberon System have been implemented. For a complete description of the Language and of the System, one should read the following books:  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. Mssenbck: Object_Oriented Programming in Oberon_2 Springer_Verlag, 1993, ISBN 0_387_56411_X. Principles and applications of object_oriented programming with examples in Oberon_2.  The technical report 160 by H. Mssenbck, Differences between Oberon and Oberon_2, The Programming Language Oberon_2, is recommended too. It is present as on_line documentation: Edit.Open Oberon2.Differences.Text Edit.Open Oberon2.Report.Text If you want deeper information about the implementation of HP_Oberon, the technical report 212 by J. Supcik, HP-OberonTM, The Oberon Implementation for Hewlett-Packard Series 700, is recommended. The following short tutorial describes the differences to the original implementation from a user's point of view. HP_Oberon runs as a single HP_UX process on a color or monochrom Apollo Serie 700. It has the form of an X Windows application using only one X window covering the whole screen. This window can be controlled by the Window Manager, i.e. it can be pushed, moved, resized or iconized, but the WM has no control on the internal layout of the window (tracks and viewers are not X windows). The dimensions of the user track and ther system track are automatically defined when starting HP_Oberon and cannot be changed until the Oberon process terminates, even if the window is resized. Since HP_Oberon is a normal X application, it can be used remotely over a network. Required architecture  - HP_oberon should work on any HP 9000 Series 700 workstation with HP_UX 9.01 or higher, X11R5 and a 3_buttons mouse. It has been successfully tested on 715/33, 712/60 * and 745/99. - Printing requires a Postscript printer.  * On early 712 workstations you may encounter problem with the DIN mouse driver. If two buttons released at the same time, the driver may think one button is still down. If this is the case, ask your HP_Support Center for the patch PHSS_3707 (or equivalent). Installation HP_Oberon is distributed as a compressed tar file. It can be either installed automatically by the Oberon.Install shell script or by manually extracting the differents filesets. Even if you can install HP_Oberon in any directory you want, we recomende you (if you have the right to) to install it in /usr/local/Oberon. This directory should me made readonly, in order to avoid accidental removal of files. The environment variable OBERON is used, when defined, as search path for files. Its default setting is '.:/usr/local/Oberon'. Each user can define OBERON in his .login file (e.g. setenv OBERON '.:MyLib:/usr/local/Oberon'). The environment variable APATH is used as path for audio files (used by the ALib module). The environment variable SHLPATH is used, when defined, as search path for HP_UX shared libraries (.sl files). the default is '/lib:/usr/lib:/usr/lib/X11R5:/usr/lib/X11R4' To improve the character drawing speed on the screen, the Oberon fonts should be installed as X fonts. This installation has to be done only once. You can either extract the OBERON-X-FONTS subset from the Package or convert the Oberon fonts. See the text file InstallXFonts.Tool and follow the instructions in that tool. Once the X-Fonts are installed you need to extend the X fontpath by the new directory (I suppose that your X-Fonts are in /usr/local/Oberon/XFonts): % xset +fp /usr/local/Oberon/XFonts This command can also be entered in the .login file of Oberon users: % xset -fp /usr/local/Oberon/XFonts % xset +fp /usr/local/Oberon/XFonts The first line avoids a repetition of the fontpath, if already present. Note that the font path must be absolute. On some machines it must also be terminated by "/". Starting HP_Oberon HP_Oberon is started from a terminal window using the executable oberon. The syntax is: oberon [-h heapsizeinMB] [-x module command] [-b bootfile] [-f fontmapfile] [-d displayname] [-g geometry] [-c] where - heapsizeinMB is the size of the allocated Oberon heap in MB (default: -h 4) - the command module.command is executed (default: -x Oberon Loop) - bootfilename is the name of the boot file (default: -b HPoberon.Boot) - fontmapfile is the name of the Font Mapping File (default: -f "Fonts.Map") - displayname is the name of the X server display used, e.g. -d name:0.0 (default: -d "") - geometry gives the position and dimensions of the Oberon window, e.g. -g 800x600+100+100 (the default depends on the dimensions of the screen) - the option -c allocates a private colormap of 256 colors (default: not set, 16 colors from 0 to 15) As in all X applications, the window needs to get the focus before being able to receive input from the keyboard. Just click the left mouse button with the pointer in the HP_Oberon window. If HP_Oberon gets out of control (e.g. because of a looping command), press Ctrl_C in the terminal window (do not forget to set the focus first). Xlib is not reentrant, and hence should not be interrupted. To avoid this problem, the Ctrl_C is ineffective if pressed while the Oberon process is executing outside an Oberon procedure, else a trap viewer should appear and execution will resume in the central Oberon loop. If the system does not react on that interrupt after several tries, one can kill HP_Oberon by pressing Ctrl_\ in the terminal window. System.Quit terminates the oberon process. It is the normal way to leave HP_Oberon. Differences to the Original Oberon The differences are due to the underlying hardware and software. Here follows a list of modules containing differences:  System New commands: - Quit to leave HP-Oberon - Execute command to execute a (non_interactive) shell command - ChangeDirectory newdir to change the working directory Compiler Supports the Oberon_2 language. Implements fine_grained consistency checking of separately compiled modules, which allows module interfaces to be extended without requiring a recompilation of client modules (Object Model). See Compiler.Tool for options. X11 New module acting as interface to Xlib. Display Imports X11. Procedures DefCC, DefCP, DrawCX, FadeCX, InitCC, InitCP, SetCursor are not implemented. Procedure SetMode has no effect. The display bitmap is not directly accessible (Map returns 0). The cursor is controlled by the window manager and is still active when a command is executing. Pattern format is different, use Display.NewPattern to define a pattern. image[1] defines the bottom line of the pattern. image[0] is not used. Display1 Module exporting additional drawing procedures. Unix New module acting as interface to Unix (system calls). Unix.Result() may be called immediately after a non function system call. If not zero, it gives the error number. Unix.Done() may be called immediately after a system call, first call Unix.Result() if the error number is needed. Do not use function system calls as parameters of calls. Pointer to array in Oberon_2 is not compatible with pointer to array in C; if compatibility is required, use pointer to record a: array end Input Input events are puffered. Special keys:  F1 mark viewer F2 or Esc escape F3 break F4 init colors F5 Diacritics combine key F6..F12 Programmable function keys Select line feed Ctrl_L redraw screen Prev (also ) redraw for Draw Ctrl_Prev (also ) home for Draw Input.Time() returns the real time in milliseconds since HP_Oberon has been started. Files Exports ChangeDirectory. Types New interface module to the type system. Necessary to implement persistent objects. Oberon Time() returns Input.Time() Printer generates a postscript file named Oberon.Printfile.ps and sends it to the printer if the printer name is not none. Kernel GC may be called at any time, since local pointers (on the stack or in registers) are used as roots during the mark phase of the garbage collection. Garbage collection is done on (open) array elements too. Font Mapping File Since Oberon fonts may be too small for high resolution displays, several font mapping files are provided : Normal.Map, Medium.Map and Big.Map. (See option -f above). Normal.Map should be preferred for better printing results. International Characters On an ITF Keyboard, international characters can be typed using + + and then the base letter of the diacritical character. The supported diacriticKeys are r (acute), t (grave), y (circumflex), u (diaeresis) and i (tilde). For example : to obtain a '', press + + and then type "A". Another way to obtain diacritical character is to first type the base character, then the diacritic and then pres in order to combine the two symbols into a single diacritical character. Valid diacritics are : { ' ` " ^ , ~ } For example : to obtain a '', type "e'" and then press . The option character is "\" instead of "/". This allows to use "/" in file names (Unix path names).  The Secretary Institut fr Computersysteme ETH Zentrum Tel: (+41_1) 632 7311 CH_8092 Zrich Fax: (+41_1) 632 1307 Switzerland e_mail: oberon@inf.ethz.ch