[comp.sys.handhelds] Star... The ultimate assembler?

TNAN0@CCVAX.IASTATE.EDU (02/01/91)

Hello Everybody...

   I just finished falling in love with Star 1.04.1 - it is a beautiful piece
of work.  I had 1.03 on my Unix machine, but I don't have a convenient method
of transferring the object files from there to my HP.  [Also, I HATE using vi,
and the system administrator refuses to add anything else.]  But, anyway...
Star 1.04.1 came with a pre-compiled MSDOS version (I had never tried to
compile it myself because of my failures using Turbo C with SAD).  I put it
on my IBM-compat last night and transferred over a few programs that I had
written in SASS.  The only changes were "da" -> "data.a" (which I could have
just made into a macro, but I prefer data.a myself).

   Some [and there are many more] of the features I LOVE:
   - Star is a macro assembler (obviously)
   - Star has local symbols.  VERY few assemblers I have seen for my MS-DOS
     machine have this feature.  This means that I can stop using infinite
     variations of "loop", "loopy", "loopus", "loopum", "loopalot", etc...
   - Star has many pre-defined macros in hp48.star that allow you to build
     RPL objects, Code objects, Reals, Complexes, Strings, etc...
   - Star is VERY versatile.  Although there are some constructs that you
     cannot nest, it is very compatible with the needs of Saturn programmers.
     
   I like to write stand-alone code that doesn't use the RPL stack, or any
RPL commands, but variable storage is difficult because all code must be
relocatable.  The way I HAVE been doing it is to set d0 pointing to my data
area, and then adding and subtracting from d0 to position it at different
variables.  This is time consuming for me as a programmer.  SASS did not allow
me to compute the difference between two symbols' addresses.  Not only does
Star allow me to do this, but it even has a macro, "addr address, register"
that automatically computes the difference, subtracts it from the program
counter and loads the answer into a register.  So, effectively this simply
stores the address of any symbol in your program in the register you choose.
I went through a program of mine that had 10 to 12 different 5 nibble variables
and replaced all "add d0,#" and "sub d0,#" with "addr varname,d0".  When I ran
it, something VERY interesting happened.  Even though I replaced single
instructions with a macro that generates 5 or 6, the macro version ran
.3% faster.  Admittedly, that is not MUCH faster, but the fact that it is
faster AT ALL impressed me - I was expecting a slow-down.

   I highly suggest that anyone who wishes to dabble or seriously program
in machine code on their HPs get Star - it is simply incredible...

You can FTP Star from trix.ai.mit.edu using the name ANONYMOUS.  It is stored
in .tar.Z format which means you need to use the Unix commands uncompress and
tar to extract the files.  If anyone is interested in STAR.EXE for MS-DOS and
cannot un-tar and uncompress this file, I will upload it (and supporting files)
to wuarchive.wustl.edu.  I believe that Star is stored as pub/star-1.04.1.tar.Z
on trix.ai.mit.edu.

Thank you, Jan Brittenson, for an excellent assembler...


---- Xeno ----

akcs.guenter@hpcvbbs.UUCP (Marko Siladin) (02/16/91)

I'd love to see this MS-DOS version of STAR. So please upload it.
ThanX.
Guenter