BUGS:

 - lexer doesn't impose limits on identifiers, this could lead
   to buffer overflows.
   So there are a bunch of unsafe strcats and sprintfs, some of them
   marked XXX.

 - IMCC does produce b0rken PASM files, when compiling .imc source
   files with duplicate local labels.
   Also label fixup handling is different so just don't compile
   PIR files to PASM except for debugging.

 - the parser doesn't like empty subs or compilation units:
   .sub _foo
   .end
   
   .emit
   .eom
   inserting a 'noop' helps.
