[Oberon] Oberon.OpenDisplay
eas lab
lab.eas at gmail.com
Sat May 17 05:45:01 CEST 2014
It just so happens, that I'm no longer able to ignore the details of
how-the-display works. So I'm lucky that you are investigating it.
> When a display is wider than 640 pixels, Oberon.OpenDisplay
> opens the left boundary of the displayed area a distance to the
> right of the y axis. Specifically, Oberon.Mod has
> W0 := DW DIV 8 * 5;
> IF W0 < 400 THEN W0 := 0 END;
> OpenDisplay(W0, DW - W0, DH);
>
> For example, if DW = 1024 and DH = 768
> then W0 = 640 and
> OpenDisplay(640, 380, 768);
> is executed.
>
Prose is unsuiatble for mathematic. "=>" means "implies".
DW = 1024 => W0=640 => ~(W0 < 400)
=> OpenDisplay(640,1024-640,DH)
=> OpenDisplay(640,384,768)
> Why not just
> OpenDisplay(0, 1024, 768);
Are my calculations: (640,384,768) wrong?
Using colors in ETHO, helps me a lot.
> or, in general,
> OpenDisplay(0, DW , DH);
> for any size of display?
>
> There must be a sound reason but it escapes me at present.
> Thanks, ... Peter E.
I think the underlying reason is that:
* NOT all integers in the 'range' are valid for DW , DH.
Examination of VESA/VGA settings shows that the hardware
has a set of valid W:H ratios.
So eg. 643:447 is not valid.
The horizontal & vertical sweep frequencies are continuously variable,
but the number of: pixel, chars, lines are discrete/integer.
So it's like a sequence of gear-wheels, which have a limited number of
syncronising combinations.
How would I get the font to display bigger, without increasing the
'frame size' to overflow the screen, and still use the default *12.Scn.Fnt
[for ALO:ARM linux Oberon / for rPi] ?
Let's solve this display mystery, and extract the fundamental rules, and
write them down. Or probably they are already wiki-ed?
== Chris Glur.
More information about the Oberon
mailing list