[Oberon] PO2013 - SD Image Tool

Andreas Pirklbauer andreas_pirklbauer at yahoo.com
Sun May 17 07:33:24 CEST 2020

    > It doesn't have to be painful - it just depends on which tools you are using.
    > The Astrobe for RISC5 IDE Upload command uses an RS232 serial link
    > to real target hardware running at 115200 baud. It only takes about 40
    > seconds to upload a complete set of *.rsc files. 

Interesting. So about 10-15x slower than on the simulator. I remember on
Ceres (also via RS232), building also took (order of magnitude) ~1min.

So it looks like your “Upload” command essentially does in ONE command
what the following 4 (or 5) commands of my Build.Tool do, namely:

    ORC.Load Oberon0.bin   # load Oberon-0 cmd interpreter to targetsys
    ORC.SR 101 ~              # clear the file directory on the target system
    ORC.Send Modules.bin Oberon10.Scn.Fnt System.Tool Input.rsc
        Display.rsc Viewers.rsc Fonts.rsc Texts.rsc Oberon.rsc
        MenuViewers.rsc TextFrames.rsc System.rsc
        BootLoadDisk.rsc ORL.rsc RS232.rsc PCLink0.rsc
        Oberon0.rsc Oberon0Tool.rsc Edit.rsc PCLink1.rsc
        ORP.rsc ORG.rsc ORB.rsc ORS.rsc ORTool.rsc ~
    ORC.SR 100 Modules.bin ~   # load regular boot file onto boot area of target
    ORC.SR 102 BootLoadDisk.rsc ~   # reboot the target system from its local disk

I have to do 5 clicks (so.. not “really” painful, just a liitle). I could of course
combine them into a single “ORC.Upload" command or something..

    > Howvever, as the Astrobe Build command only recompiles whatever
    > it needs to, most of the time you only have to upload a few .rsc files.
    > When you click on the Upload menu, the Open File dialog box appears
    > and you just select the most recent ones at the top of the list.

That I can do too ("partial rebuild"). It is the reason why in the initialization
code of the top-level module of the command interpreter (Oberon0.Mod)
I don’t initialize the root directory unless it is not there yet.

    PROCEDURE Init*; (*establish a working file system (root page) if necessary*)
      VAR a: FileDir.DirPage;
    BEGIN Kernel.GetSector(FileDir.DirRootAdr, a);
      IF a.mark # FileDir.DirMark THEN
        a.mark := FileDir.DirMark; a.m := 0; a.p0 := 0; ...
        Kernel.PutSector(FileDir.DirRootAdr, a)
    END Init;

  BEGIN Init; … 
  END Oberon0.

So if I want to update only *some* .rsc files, but not all, I just don’t call
the command ORC.SR 101 and download only the *new* files.

Bottom line: I can further streamline my building tools similar to your
“Upload” in Astrobe. I may actually do that...

More information about the Oberon mailing list