<*PRAGMA LL*> MODULE Track EXPORTS Main; IMPORT VBT, Trestle, TextVBT, Fmt; TYPE TrackVBT = TextVBT.T OBJECT METHODS init(): TrackVBT := Init OVERRIDES position := Position END; PROCEDURE Init(v: TrackVBT): TrackVBT = BEGIN EVAL TextVBT.T.init(v, "Cursor gone"); RETURN v END Init; PROCEDURE Position(v: TrackVBT; READONLY cd: VBT.PositionRec) = BEGIN IF cd.cp.gone THEN TextVBT.Put(v, "Cursor gone"); ELSE TextVBT.Put(v, Fmt.F("Cursor (h, v) = (%s, %s)", Fmt.Int(cd.cp.pt.h), Fmt.Int(cd.cp.pt.v))); END; VBT.SetCage(v, VBT.CageFromPosition(cd.cp)) END Position; VAR v := NEW(TrackVBT).init(); BEGIN Trestle.Install(v); Trestle.AwaitDelete(v) END Track.