[Oberon] PO2013 - SD Image Tool

Tomas Kral thomas.kral at email.cz
Wed May 20 18:38:13 CEST 2020


On Wed, 20 May 2020 13:11:14 +0100
Paul Reed <paulreed at paddedcell.com> wrote:

> maybe try loading System manually

Well, loading Oberon, looks as it starts the whole system.
Not in my build though :-)

Looking at Modules.Mod

MODULE Modules
...
PROCEDURE Init*;
  BEGIN Files.Init; MTOrg := SYSTEM.REG(MT);
    SYSTEM.GET(16, AllocPtr); SYSTEM.GET(20, root); SYSTEM.GET(24,
limit); DEC(limit, 8000H) END Init;

BEGIN Init; Load("Oberon", M);
    LED(res); REPEAT UNTIL FALSE  (*only if load fails*)
END Modules.

Linker.Link fills branch (B R0 absolute ???) to Modules.Init at code[0]

Files.Init => Kernel.Init => FileDir.Init  

But is it really procedure Modules.Init() or Module's body BEGIN END, that linker fills???

Why limit is decremented by 8000H???

MODULE Oberon
...
  (* I may be getting here, since screen is blanked *) 
  OpenDisplay(DW DIV 8 * 5, DW DIV 8 * 3, DH);
  FocusViewer := Viewers.This(0, 0);
  CurFnt := Fonts.Default; CurCol := Display.white; CurOff := 0;

  ActCnt := 0; CurTask := NewTask(GC, 1000); Install(CurTask);

  (* ... but never getting here *)
  Modules.Load("System", Mod); Mod := NIL; Loop
END Oberon.

-- 
Tomas Kral <thomas.kral at email.cz>


More information about the Oberon mailing list