[Oberon] Re: Compiler differences

easlab at absamail.co.za easlab at absamail.co.za
Sun Sep 25 08:10:21 CEST 2005


Bob Walkden wrote:

> I have recently downloaded the SpreadSheets Gadget package from the 
> ETH FTP
> site. In ETH Plugin Oberon for Windows 2.4 it compiles and runs ok. On
> Native Oberon 2.3.6 running on a Thinkpad 760ED it compiles (with the \2
> switch) but Traps with an index overflow.
> 
> The source code is exactly the same on both machines, of course. It is
> failing in this bit:
> 
> PROCEDURE InitSpreadModel*(obj: SpreadModel);
> VAR
> 	i, j: INTEGER;
> BEGIN
> 	obj.handle := SpreadModelHandler;
> 	obj.width := 2;
> 	obj.height := 2;
> 	NEW(obj.table, obj.width + 1, obj.height + 1);
> 	FOR i := 0 TO obj.width DO
> 		FOR j := 0 TO obj.height DO
> 			obj.table[i, j] := NIL   <------ Trap here
> 		END
> 	END
> END InitSpreadModel;
> 
> This makes a 3x3 spreadsheet.
> Here this is the definition of SpreadModel:
> 
> TYPE
> 	Table = POINTER TO ARRAY OF ARRAY OF Cells.Cell;
> 
> 	(** Model for a SpreadSheet object *)
> 	SpreadModel* = POINTER TO SMDesc;
> 	SMDesc* = RECORD (Gadgets.ObjDesc)
> 		width, height: INTEGER;		(* width and height of the
> table *)
> 		table: Table		(* the table with the cells *)
> 	END;
> 
> As far as I can see, there is no way that code should cause a Trap, so I'm
> assuming there are some differences between the compilers that are causing
> the different behaviours, and that I perhaps need some switch to eliminate
> the differences. However, I can't trace such a switch (I don't want to
> compile without range checks).
> 
> Any ideas?

I don't [want to be forced to] use 'Windows'; but I see no reply
to your query yet.  I too don't remember any Traps from 'the 
SpreadSheets  Gadget package' under V 2.3.6 DOSbased or any 
NO-StandAlone version.

As I remember the trap trace shows the 'trap-cause'.
In your case, the simplistic/obvious suspect is "index out of range".

Do you know about Compiler.Tool >
	f	find error position (select PC line in Trap viewer)
?
Do you know how to trace down through the 
stack-of-proc-calls shown by the trap-trace ?

== Chris Glur.

PS. I worry that as NO forks, the remaining bugs will remain
forever unfixed.

Taking advantage of 'bad conditions' of many ISP fail-to-log-ons,
I've repeatedly confirmed that my previous [over years ?!]
complaint about ppp problems to re-dial when the previous
log-on fails, seems to be cause by the V24/Dialer rather than
the ppp facility.    This because the instruction:
  V24.Stop(1)
clears the inability to properly drive the modem.

As previously noted this same 'clear/reset action' is
needed to eg. use the 2nd ser-port to eg. communicate 
with another box, once the modem [on the same 2nd ser-port]
has been used.   I guess Win users would have no problems, they'd
just reboot ?

Unfortunately [perhaps - I'm not aware yet of problems] V24.Stop(1)
also causes a trap, thus:
TRAP -14  NIL reference ( 00000008H ) (PC Native 11.10.2001)
V24.Available  PC = 1804
	p =  00000000H
	port = 1
PPPMain.Connect  PC = 112
	item =  00000000H
	me =  0026E6A0H
	prno = 0
Oberon.Loop  PC = 8726
	M =  00000010H
	N =  0000000CH
	V =  0046EAA0H
	X = 101
	Y = 109
	ch =  00000000X
	keys = {}
	oldshift = {}
	shift = {}
---------
 which superficially looks related to the 'tasking', as I've previously
raised for this matter.






More information about the Oberon mailing list