[Oberon] Degeneration via proprietry software

Chris Glur easlab at absamail.co.za
Tue Jan 3 07:21:20 CET 2012

>   I have the A2 up and running under the  VMWare (4.0.1 build-528992, Win7
> 64bit home premium). 

] After many years out of the Oberon world, I'd like to return (ideally
] through VMWare).
] Can someone on this list give me a hand getting A2 (or Native Oberon) up
] and running under VMWare?

How we have degenerated, from the 1M4 floppy based ETH:N-O
to '64bit home premium:VMWare' based poor imitation.
My Win7 netbook is remarkable hardware, with facilities to
block me from doing anything more usefull than a twittering

The reason for using the original 1M4 based version
is grounded in our evolution as humans. 
If we were horses we'd be comfortable standing for hours.
So, mobile devices are only valuable toys.

Other creatures may be evolved to not need to be seated,
with arms resting on an optimally positioned table,
head-up, viewing an optimally positioned view-frame;
with the ability to open multiple frame/files,
so that eg. any reasonably complex task needing reference 
[i.e. copy-paste & text-stretch hi-lite/colouring] to:
 the progressLog/Notes & USEnetArticle/S & email/S
& googSearches & ... can be coordinated ALL TOGETHER.

For analysing complex text, the heads-up: no need to
look away from the viewer facility seems never to have been

== Chris Glur.


Newsgroups: comp.software-eng,comp.theory
Subject: weird string search algorithm?

Wanting to just modify some existing code, to find and delete
text-strings, I came across this weird 'algorithm' in my system.
And google:'search+string'+'displacement+vector'  doesn't lead
to Knuth, which my gut told it it would.

Pasting the code verbatim:--
VAR tF: TextFrames.Frame;
			Texts.OpenReader(R, text, beg); <-read the selected pattern into sPat[i]
			i := 0; pos := beg;
			REPEAT Texts.Read(R, sPat[i]); INC(i); INC(pos) UNTIL (i = MaxPatLen) OR (pos = end);
			sPatLen := i; CalcDispVec(time)	(* calculate displacement vector *) <-what's this?!
		IF tF.car > 0 THEN pos := tF.carloc.pos ELSE pos := 0 END;
		IF SPatFound(tF, tF.text, pos) THEN MarkPatPos(tF, pos)
	PROCEDURE CalcDispVec(time: LONGINT);
		VAR i, j, d: INTEGER;
		lTime := time;
		i := 1; d := 1;	(* calculate displacement vector *)
		WHILE i <= sPatLen DO
			j := 0; WHILE (j + d < sPatLen) & (sPat[j] = sPat[j + d]) DO INC(j) END;
			WHILE i <= j + d DO sDv[i] := d; INC(i) END;
	END CalcDispVec;

Can someone point me to an explanation of this algorithm?

== TIA.

PSS. this is in ET.Mod & our other <editors>.
If CalcDispVec want's the time, it's perhaps random-generating,
or checking <event sequences> ??

PSS. how can we handle complex ideas without being able to
cutNpaste [without losing sight by switching screens] of:
mail, Usenet, general text ...etc.

More information about the Oberon mailing list