Tag Archives: Helios NG

Hati

This is the 2nd phase following “Sköll”. Hati is the other wolf who chases the moon – less mystic, this means getting the “Helios-Sköll” sources to compile on Linux – still targeting Transputers, though.

Some tools already do compile, e.g. the Transputer Crosscompiler ‘nc’ (i.e Norcroft-C) but most others are still missing.

Status:

There’s a hati branch in the GitHub repository. I suggest to leave it branched until at least the hostutils are compiling fine.
NB: Because I really badly hacked the nc files to get them to compile I did not include the changes to the branch. If you’re getting to this part of the code, I’m happy to tell/send you what I did, but I assume there are people out there doing a better job than I did 😉

This branch only includes ‘makeinc/makelinux’ and ‘makeinc/LINUX.mak’ and a new makefile here and there.
For now calling ‘. makeinc/makelinux hostutil’ will get stuck in building ‘cmds/com/sysbuild.c’ because of some include-path mish-mash – that’s where we have to start working.

Rough todo:

  • Create a proper Makefile. e.g. LINUX.mak currently has a lame workaround to point to GCCs include path
  • Probably many optimisations for recent GCC and gMake versions ahead!

Sköll

This is the first and ongoing phase (as of Mar. 2014). While the main purpose of Sköll is to generally get the original source to compile on Solaris (v8) it also has several sub-tasks:

Compile
100%
Clean-up code
5%
Smooth edges
1%

Compile the original source

Several makefiles needed some adjustments to work with gcc (instead of suns own cc), also some tricky formatting f*ck ups needed to be corrected – (gnu)make is much more picky about this than whatever make they used back then.

Strip unnecessary parts

It’s not identified which parts are completely unnecessary, but the TI DSP code is something which can definitely go.
Other points might need to be discussed, e.g. what should happen to some very special servers (i.e. Terminalserver in Helios lingo) like SUN3 or ACORN R140?

Smoothing the edges

There are multiple strange code-constructs which should be cleaned – they lead back to buggy and awkward MSDOS compilers which needed some workarounds

Here are some examples:

The code is full of #define eq == defines. I was told that was a workaround for the “==” vs “=” issue in conditional expressions. Modern compilers warn you when a condition looks like an assignment, the Microsoft compiler they were using at the time didn’t.. Doh!

Then there’s #define elif(x) else if(x). WTF!? Well, this roots from BCPL, the ancestor of C. Most of the core-devs at Perihelion studied at Cambridge University where BCPL was invented and was used well into the 1980s. In addition to the standard if() and while() constructs, it also had unless() and until() statements, as well as elif().
To them used to these constructs, the code was more readable and boy, they do get used throughout the Helios sources way too much.