This is Linux Native Oberon (TM) Version 0.8.a Linux Native Oberon (LNO) is a port of ETH Native Oberon (TM) System 3 Release 2.2 to the GGI-Linux kernel. The goal is to be as compatible with PCNO as possible. Only Kernel functions ( INT 80H ) are used and no libraries. This is an alfa release. It should run with GGI 0.0.8. On GGI 0.0.9 the keyboard input does't work. Depending on the driver for your card, Display.SetColor and Display.GetColor might not work. The lno.tgz archive includes all files that are on the installation disk of PCNO. This includes the Active-Oberon Compiler. The Active-Oberon runtime environment is not implemented ( and will not be until a public PCNO release). For the complete windows based system with draw and paint programs, Oberon-2 compiler and more get Gadgets.Arc, Books.Arc, Draw.Arc, Pr3Fonts.Arc, Oberon2.Arc, Docu.Arc, Network.Arc ( for the browser to read the Docu) and Develop.Arc. All packages are binary compatible with PCNO. What is ETH Native Oberon? For information about ETH Native Oberon see http://www-cs.inf.ethz.ch/~muller/Native. The packages are available at ftp://ftp.inf.ethz.ch/pub/software/Oberon/System3/Native/System/ the source is available at ftp://ftp.inf.ethz.ch/pub/software/Oberon/System3/Native/Source/ What is GGI-Linux? GGI-Linux is the known Linux kernel expanded with interfaces for mice, keyboard and display. Only the linear framebuffer is currently used by LNO. While keeping the kernel sufficiently small, it allows the use of grafic functions from user space. No library is needed to run LNO. GGI is in alfa status. This means that it has only support for a very limited amount of hardware. For information about the GGI- Project see http://synergy.caltech.edu/~ggi . What are the advantages of using the linux Kernel? * all Linux drivers can be used from Oberon * only few configuration of linux native oberon is neccessary * Oberon can run at the same time with linux programs * Lilo always starts the right operating system * Oberon starts very fast, typically 2 seconds for the original system and 2 seconds for gadgets * virtual memory is used * dynamic stack size * free memory is automatically used as buffer for the filesystem * debug output can go to a file How do i install LNO? You need 11 MB free disk space. after installing ggi and testing its 8bpp mode: * execute "tar xzf lno.tgz" , this will expand to cp2o, cp2u, Oberon, oberon.dsk, config.txt * edit config.txt to set your MouseType, display size, heap size and display color * you need read/write access to /dev/tty?, /dev/graph?, /dev/mouse, current directory, oberon.dsk * execute "Oberon" * read UserGuide.Text * now you can install the Gadgets (TM) and Network packages. * ctrl-c breaks a running program, ctrl-#, ctrl-4 or PrintScreen stop Oberon * if something went wrong, trace.log should give a hint How to make oberon.dsk larger or smaller: It is recommended to keep a copy of oberon.dsk. * to enlage oberon.dsk, copy it to oberon.dsk.inst, start Oberon, execute Install.Expand oberon.dsk.inst 2048 ( 2048 is the size at which oberon.dsk will be expanded in KB ), quit Oberon and move oberon.dsk.inst to oberon.dsk * to shrink it, make a new Oberon.dsk.inst with 2MB more than the disired size: with Install.Expand Oberon.dsk.inst 20480, execute InstFileDir.Init, copy the desired files with Install.CopyAll or Install.CopyFiles file ~ System.Quit Oberon and mv oberon.dsk.inst to oberon.dsk. If you want to use all Oberon related stuff, you shoud expand it to at least 30 MB. How to use a native partition: ( not tested ) * set Disk=/dev/mypartition in config.txt * copy oberon.dsk to it with cat oberon.dsk > /dev/mypartition Remember: This is alfa code that relies on alfa code. You can compile and link native Linux programs. See Linux.cp2o.Mod for an example. The goal of this port is to be binary compatible with PCNO. No Interface of any module was changed! Gadgets runs without any change! Only hardware driver modules had to be ported ( and Diskette due to an ugly Diskette0 Interface and iOPL to remove a change for an experimental Garbage Collector). Differences to the original system: * Centronics.LPT1 LPT2, LPT3 are mapped to /dev/lp0 lp1, lp2 and not to the first available printer. * printing is possible by using the Unix lpr command with "Desktops.PrintDoc lpr *" and the Postscript driver ( default ) or by using one of the Native Oberon Printer drivers * the heapsize is configurable * the stacksize is dynamic up to 8MB * some Procedures are not implemented; they will trap with code 101 * Traps with a negative number are negated Linux signals Well, some code is not very nice in a preemptive multitasking environment: * Centronics.Close( Centronics.LPT?) is missing. Once opened, it isn't accessable from linux any more * Oberon.Loop and the task system are inefficient * the mouse cursor drawing should go to Display * it shouldn't be allowed to write to non visible screen area * System.Directory *xx\d scans the sizes and dates of ALL files Supported drivers are: Kernel, Disk, ( native partition or filesystem in a file ) Input ( only MouseMan mice tested), Display ( using GGI-Linux ), Diskette0, Diskette, Centronics, Printer, V24 ( not tested much), CD, Sound ( dummy module to allow CD playing without soundcard) InstDisk, Scavenger ( not tested in emergency; didn't need it up to now :-) Added Modules: Linux: interface to the Linux Kernel Unix: copy files from and to Unix cp2o: Native Linux command to copy files from the current directory to oberon.dsk cp2u: a link to cp2o; copies files from oberon.dsk to the current directory VTX: teletext driver vText3: a simple teletext programm for gadgets ELFLinker: static linker with ELF output, not ABI compatible Install: copy files from oberon.dsk to oberon.dsk.inst . enlarge/generate files to be used as oberon.dsk Not needed: DMA, DOS, DosDisk Not supported: DSP, FTP, Network, ... Known Bugs: Oberon is killed on stack overflow ( stack size is 8 MB, so this shouldn't occour often) Nearly all PCNO source is available. All Linux related source but the Kernel source will be made avaiable later. 14.05.97 Peter Matthias