Category Archives: Helios NG

The Plan

There’s a rough schedule where this project should go, given there are enough clever people joining in or at least display a certain degree of interest. So there’s a skech of the main-phases, aka “The Plan”  (without dates):

Sköll

As said in the intro, Sköll is about “catching” the sun, i.e. get the original Helios 1.31 sources to compile on Solaris. This includes

  • cleaning up the code
  • weed out unneccesary parts (e.g. the TI DSP code)
  • smooth the edges (There are multiple strange code-constructs which should be cleaned)
  • get a general understanding of it all

Hati

Next phase/release/step after that will be “Hati”, the other wolf who chases the moon – less mystic, this means getting the “Helios-Sköll” sources to compile on Linux.
Some tools already do, e.g. the Transputer Assembler ‘as’… the Norcroft-C compiler is another story.

And as we all know, when Sköll and Hati finally managed to hunt down the sun and the moon, the world will be destroyed and reborn:

Ragnarök!

It’s certainly not the end of the world. I leave it open for now what that means in terms of Helios, but maybe there will be a critical mass of participants in the community to push “Helios-Hati” forward into version 1.4 running on x86 or current ARM implementations like Raspberry Pi and the like?

Secondary theater of War

Well, then there’s another part of Helios which needs some attention: The server.
This is the piece of software handling the communication between the Host (e.g. your DOS Box) and the connected Helios System (e.g. your Transputer(farm)).
There are several Server sources in the [HeliosRoot/]ioproc/server folder like DOS, Windows, RS6000, HP9000, Interactive UNIX, Sun3/4/i386, SCO etc… obviously all supporting very old versions of their OSes, e.g. Windows 3.x or Solaris 2.

So this part will need some love, too. I will mainly concentrate on DOS (that’s the [HeliosRoot/]ioproc/server/ibm folder), because that’s what I use to talk to Helios.
To support more recent ways of communication than ISA/SBUS/VME-cards, we have to create a new server, for example for Mikes USB-Link Interface.

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 the original source

100% done

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

5% done

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

0% done

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.

 

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!