Sun May 24 09:27:03 CEST 2009

order of instantiation

It is important to:

1. keep assembler-like behaviour for low-level things without actually
   going to the assembler.

2. keep high-level module behaviour.

So, how can this be made more painless?

Now wait. There is nowhere in the assembler where "org-pop" is
actually executed.  Ok, it's in "with-pointer".

The problem seems to be here:

#x0040 org-push    : boot-40 warm ;  org-pop

The ":" messes up the chain..

Since I can't get this right and can't see the error straight away,
there is probably something wrong with the architecture.

Ok. Removing the ':' fixes the problem:

#x0000 org-push    #x0020 jw ; org-pop
#x0040 org-push    warm ;  org-pop

So, this worked with "org" but not with "org-push".  Can't use "org"
any more because the order of instantiation is not predictable.  The
initial compilation point is defined in pic18.ss and can essentially
not be changed.

Ok, so I'm going to take the "org!" out of the code: only relative
access allowed.

OK.  Now, why doesn't ':' work inside an org-begin .. org-end ?
It calls make-target-split.

No idea.. I've eliminated the problem by generating labels dynamically
using ">label" and "label:", which fixes the problem.