[Oberon] Module Display: ReplPatternC (with clipping)?

Till Oliver Knoll till.oliver.knoll at gmail.com
Tue Feb 26 20:10:39 CET 2019

Hello all,

As indicated in my first post I am porting our "GigaDraw" exercise that
we wrote as an exercise during the "Systemprogrammierung" in winter
semester 98/99.

I stumbled over missing functions in module Display, specifically the
copy/replicate pattern functions with their "clipping" variants, as they
were available in OberonV4 (I think) at the time. E.g. as still found here:


For instance this function dodes not exist anymore in the current
Display Module:

  PROCEDURE ReplPatternC*(F: Frame; col: INTEGER; pat: Pattern; x, y, w,
h, xp, yp, mode: INTEGER); END ReplPatternC;

The only discussion i found in the list archive around "ReplPattern" is


That discussion seems to confirm that the "clipping variants" are indeed
not available anymore (and that discussion mostly is about "4bit
displays" and how to write "concurrent display drivers" implementing
Module Display).

When I quickly replace my "line drawing code" which for instance is (in
its original form):

  Display.ReplPatternC(msg.f, line.col, Display.grey0, u, v, w, h, u, v,

with the corresponding call like

  Display.ReplPattern(line.col, Display.grey, u, v, w, h, Display.replace)

then I do get a dotted line, but as expected I scribble all over the
screen, especially across Frame boundaries (when I move the line near
the Frame border).

(And yes, apparently in the first "Lines" module of ours we were only
able to either draw horizontal or vertical lines - no Bresenham
algorithm yet ;)).

So my question: is there a "higher level" drawing module available (I am
using "Oberon Core", as available in the Mac App Store), possibly in
other Oberon variants these days (e.g. "Experimental Oberon")? Or is one
supposed to write your own "Drawing API", doing the "bit fiddling"
clipping yourself?

Sorry for the noob question or if this has been asked before, but I did
not find much in the archive (except the above discussion). And yes, a
pointer to a RTFM is perfectly fine :)

Best regards,

More information about the Oberon mailing list