[Oberon] FPGA - Bitmaps.Mod
Tomas Kral
thomas.kral at email.cz
Wed Apr 5 17:59:27 CEST 2017
Hi Wojciech,
Yes, I agree.
But, I do not know, how to allocate dynamic structures on Oberon
V07. As an example I am looking into the `Pictures.Mod' code, taken from
ETH Oberon.
This dynamic allocation.
...
TYPE Addr = POINTER TO RECORD END;
refr : Addr;
VAR size: LONGINT;
...
size := P.wth * P.height;
SYSTEM.NEW(P.refr, size+10);
P.address := SYSTEM.VAL(ADDRESS,P.refr);
NEW(P.bitmap);
Bitmaps.Define(P.bitmap,P.width,P.height,P.depth,P.address);
...
How I could allocate dynamically in Oberon07, NEW(v) allows for v as
variable?
Tomas
On Wed, 5 Apr 2017 12:16:29 +0000
"Skulski, Wojciech" <skulski at pas.rochester.edu> wrote:
> > I am looking for a better way, as I believe the size needed can be
> > calculated from Width, Height of the bitmap.
>
> Yes. The size of the display should not be fixed with inline numbers.
> I am thinking that a usable System can be deployed with 800x600
> display. In general, the size of the display can/ should be changed
> either on the fly or during compilation, which probably is not very
> difficult to implement in a simple design which the FPGA Oberon
> really is.
>
> W.
> ________________________________________
> From: Oberon [oberon-bounces at lists.inf.ethz.ch] on behalf of Tomas
> Kral [thomas.kral at email.cz] Sent: Wednesday, April 5, 2017 5:26 AM
> To: Oberon at lists.inf.ethz.ch
> Subject: [Oberon] FPGA - Bitmaps.Mod
>
> Hi,
>
> As part of my exercise I have converted ETH `Bitmaps.Mod' to V07. It
> should be the basis for a bit map editor - `Paint.Mod' - next exercise
> of mine.
>
> It is far from perfect, just made it to compile under V07, without
> much thoughts.
>
> Few notes>>>
>
> [a] Bitmaps.DisplayBlock* is just copied from Display.CopyBlock*
> with source and destination addresses modified as thus:
>
> sa := B.address + u0*4 + sy*128; da := Display.Base + v0*4 + dy*128;
>
> I am looking for a better idea, as I believe bitmap needs to be
> clipped to fit into a visible area of a target frame.
>
> [b] New bitmap is allocated as a constant buffer
> CONST
> BufSize = 10000H;
> ...
> BEGIN
> NEW(buffer)
> END Bitmaps.
>
> I am looking for a better way, as I believe the size needed can be
> calculated from Width, Height of the bitmap.
>
> TYPE
> Bitmap* = POINTER TO BitmapDesc;
> BitmapDesc* = RECORD (* cf. Display.DisplayBlock *)
> width*, height*, depth*: INTEGER; (* offset 0, 2, 4 *)
> wth*, address*: LONGINT; (* offset 8, 12 *)
> size: LONGINT
> END;
>
> [c] Bitmaps are allocated as an array of CHAR's. Is it a good idea to
> use BYTE's instead?
>
> P.S. I could enclose the whole module, but I am not sure if it is
> allowed by the list server.
>
> Many thanks
> Tomas
> --
> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related
> systems
> https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.inf.ethz.ch_mailman_listinfo_oberon&d=DwICAg&c=kbmfwr1Yojg42sGEpaQh5ofMHBeTl9EI2eaqQZhHbOU&r=uUiA_zLpwaGJIlq-_BM9w1wVOuyqPwHi3XzJRa-ybV0&m=DvMJJZHAOKHy3Hs2z-YZccHRjLN1IHNBtOGNQLn5RlM&s=F7FNN9bt9xLyOvUo8KvsencklngbrOcpcuN-9SYl_Gk&e=
> -- Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related
> systems https://lists.inf.ethz.ch/mailman/listinfo/oberon
More information about the Oberon
mailing list