ROP2 Changelog


Mature Changelog


  • ARM: OLR.OBC.Mod faster load/store of global variables
  • ARM: made DIV/MOD OBERON compatible; x86 version still gives wrong result for a DIV/MOD b if a and b are negative
  • system split to mature version (x86 and ARM) and ROP2 based version


  • RISC-V compiler: made all traps work like in MIPS with current qemu-risc32; Fixed condition code bug in compiler; no known bugs in compiler!


  • RISC-V compiler: removed compiler limitations.HALT(MAX(INTEGER)) does not work because of system limitation.


  • RISC-V compiler: no known bugs, but likely unknown bugs. Current compiler limitations are marked with warnings in the 900 range


  • OLR.Files.Mod: map old files shared so that close does not need to write the data
  • RISC-V: compiles Gadgets, but still has bugs
  • Display: Default X11 window size always smaller than display size
  • Kernel.GetConfig: fixed environment pointer; no trap at boot possible any more


  • OLR.Display.Mod, OLR.Input.Mod: Added HiDPI mode
  • Linux0: implemented Openat0, UTimensat0, Renameat0, UnLinkat0, FStatat0, removed Open0, UTimes0, Rename0, UnLink0, Stat0 (new versions are more up to date)
  • RISC-V backend: heavy changes


  • Texts.Mod: added "-" to nameChars
  • heavy internal compiler changes for MIPS
  • added RISC-V backend and decoder (VOPL.Mod VOPC.Mod VOPV.Mod VDecoder.Mod)
  • MBootLinker and Modules linking RISC-V files


  • OLR.System.Mod: converting CR/LF CopyClip and PasteClip



  • Added Input.Copy and Input.Paste to copy/paste to/from X11 clipboard. Input.Paste is called by pressing "Ctrl-v". For TextFrames, Input.Copy is called automatically when selecting text.
  • OLR.MIPS.Linux0.Mod: Fixed Open flags
  • OLR.*.Linux0.Mod: added ODSYNC* open flag


  • ARM: made Display.CopyBlock significantly faster on ARM for unknown reason by code change
  • MIPS: renamed compiler to RCompiler, compilecommand to CompileM
  • MIPS: now really using 2 FP registers for procedure argument passing


  • ARM compiler: made some optimizations (constant loading, loading of (long-) real variables, but benchmarks don't speed up


  • ARM compiler: using VFP registers directly, made hardware div instruction configurable ("OIDIV=True"); please test!


  • ARM compiler: removed SoftFloat, Hardfloat. Calling VFP directly
  • MIPS compiler: small changes (made ENTIER faster)


  • Split Kernel into Linux0 and Kernel
  • MIPS: Compiler internal changes


  • MIPS: merged MCompiler should now actually work, MCompiler.CompileT uses 14GPR registers (ARM32 offers 15 :-)
  • OLR.Kernel.Mod: dynamic heap allocation should work, but currently is not very useful as applications often check for available RAM and refuse to load if not enough RAM is available
  • OLR.Input.Mod: mouse does not lag on MIPS any more
  • OLR.Display.Mod: minor cosmetic changes


  • MIPS: Merged MTCompiler and M2Compiler to MCompiler


  • OLR.FileDir.Mod: using match procedure from Jan de Kruyf
  • OLR.X86.Kernel.Mod: Changed trap No. for SIGFPE to 10; trap numbering still needs re-work
  • MIPS: added test MTCompiler.CompileT for producing code without register parameters; M2BooltLinker option t links that file statically


  • fixed FileDir.Directory; respecting the path of the directory, pattern matching should find all matches
  • MIPS object files rename to *.Obj and moved to mips directory again as symbol files of experimental MIPS compiler differ


  • MIPS object files renamed to *.Obm; they reside flat in olr directory together with symbol files
  • MIPS compiler front end renamed to ROPx.Mod
  • MIPS compiler backend renamed to MOPx.Mod
  • MIPS compiler renamed M2Compiler, produces MIPS II code, better register allocation, peephole optimization not possible/necessary any more


  • Files.Old, Files.WriteBytes; made mmap MAPPRIVATE
  • OLR.Dim3Engine.Mod: set spec[n] :=0.0; in Clip for compatibility with MIPS, ARM
  • changed OLR.OPM.Mod to possibly support different architectures with same front end


  • OLR.?Kernel.Mod: exported NoOfArgs, GetArg, Static
  • set X (execute) flag on bootlinked files
  • using Kernel routines in FileTools.CopyTo


  • OLR.?BootLinker: Calling Oberon.Collect so that output file is not busy
  • added OLR.?Browser.Mod, OLR.Browser.Mod (wrapper for ?Browser.ShowdDef)
  • OLR.OPP.Mod: ProcedureDeclaration: initialized sysflag; XCompiler now works on MIPS


  • Lots of files were missing in OLR150701.tgz; added OPA.Data, Fonts, Tools, UserGuide.Text
  • OLR.MBootLinker, OLR.MIPS.Kernel, OLR.MIPS.Modules: static core initialization done in Kernel


  • made XCompiler compile on MIPS (but does not run)
  • OLR.MIPS.Kernel.Mod: Fixed NewArr for allocating ARRAY OF RECORD (thougt it were a compiler bug), removed OLR.Pictures.Mod
  • OLR.Asteroids.Mod: simplified Intersect call in IntersectMass for MIPS compiler compatibility
  • OLR.MPeephole.Mod: added OptimizeAll; increased Max* constants; fixed string termination


  • OLR.Input.Mod: Framebuffer by default uses input events; use OMEVENT=/dev/input/mice to get old behaviour and to circumvent qemu bug on framebuffer
  • OLR.MIPS.Kernel.Mod: fixed system call return codes
  • OLR.x.Kernel.Mod GetConfig using stack
  • OLR.Gadgets.Tool: Gadgets should be complete now, Asteroids.Mod and Swarm.Mod don't compile on MIPS; Leonardo fails on ARM
  • OLR.Compiler.Mod added wrapper module to call native compiler
  • OLR.Make.Tool cleaned up
  • OLR.MPeephole.Mod: added OptimizeAll; changed Max* constants


  • changed distribution, gadgets030105.tgz ist fixed original Gadgets distribution, olr150612.tgz is minimal system with compiler and Gadgets modules I changed
  • updated Texts.Mod to latest version, fixed Texts.Read
  • OLR.OBA.Mod, OLR.ADecoder.Mod: added SDIV, UDIV mnemonics
  • OLR.MIPS.Modules.Mod added error messages like ARM, X86


  • OLR.Files.Mod : made bsize = pagesize as files can only be mmapped until pagesize
  • OLR.Input.Mod : optimized X11 keyboard character setting (Caps-Lock, Numpad)
  • OLR.Display.Mod : changed GetAuth to use default .Xauthority file and use correct display inside .Xauthority


  • OLR.Input.Mod: ignore scroll-wheel turning on X11
  • OLR.Files.Mod: Close now flushes changed data
  • OLR.MIPS.Kernel.Mod: Fixed open flags for MIPS
  • OLR.MIPS.Kernel.Mod, OLR.System.Mod: implemented stack traversing on traps for MIPS; showing of variables still not working
  • OLR.Dim3Paint.Mod: fixed invalid CASE in GetColorSpecular for ARM and MIPS (why only there?)
  • OLR.OPP.Mod: added warnig 307 if no ELSE in CASE statement


  • Fixed Kernel.CacheFlush on ARM


  • made Gadgets compile on ARM
  • made HALT(MAX(INTEGER)) work on MIPS and ARM
  • made Xauth filename 256 chars
  • fixed Display.TransferBlock
  • trap on SIGPIPE instead of quit
  • regression: some trap numbers likely to be wrong


  • added Gadgets with some apps (for X86 and MIPS)
  • oberon.log renamed to Kernel.Log
  • implemented XAuth protocol in X11
  • made SHM default in X11
  • Display.UBottom defaults to 0
  • xDecoder uses correct directory
  • Bitmaps and Pictures now based on Native source


  • System.Mod unified; Traps and System.State only work on x86
  • Display works over network, default is without SHM, see comments in OLR.Display.Mod source
  • OWIDTH and OHEIGHT environment variables are evaluated for window size on X11
  • merged XBootlinker and ElfLinker
  • using correct color mask on framebuffer
  • fixed overflow bug in TextFrames
  • added del-key in TextFrames
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License