[comp.sys.handhelds] Sass vs ASAP

jmorriso@snickers.ee.ubc.ca (John Paul Morrison) (11/16/90)

As far as I know, there are two assemblers for the Saturn processor:
Sass which I believe was the first, and ASAP which was written later.

Most people seem  to be posting code in ASAP form. Although the mnemonics
are the same, there might be differences in assembler directives.

Could someone mention why they are using ASAP instead of Sass? Is it better?
As far as I know it is written in PERL, and runs on  Unix workstations only.

Sass however is self contained. It is written in yacc and lex, and the c
source code generated compiles on anything . I know  that it runs on unix
and the  ibm pc.

gson@niksula.hut.fi (Andreas Gustafsson) (11/16/90)

In article <1442@fs1.ee.ubc.ca> jmorriso@snickers.ee.ubc.ca writes:
> As far as I know, there are two assemblers for the Saturn processor:
> Sass which I believe was the first, and ASAP which was written later.

Actually they were written roughly at the same time, but Sass was
published a bit before ASAP.

> Most people seem  to be posting code in ASAP form. Although the mnemonics
> are the same, there might be differences in assembler directives.
> Could someone mention why they are using ASAP instead of Sass? Is it better?
> As far as I know it is written in PERL, and runs on  Unix workstations only.
> Sass however is self contained. It is written in yacc and lex, and the c
> source code generated compiles on anything . I know  that it runs on unix
> and the  ibm pc.

I wrote ASAP as a quick hack just to get CHIP-48 assembled somehow,
because there was no other Saturn assembler available at the time.

Sass is certainly smaller, faster and more elegant, but the main
reason I haven't switched over to it is that when I last looked, it
lacked a crucial feature: it doesn't let you calculate an
assembly-time constant by subtracting two labels.  The CHIP-48 source
relies heavily on this construct to calculate the addresses of fixed
tables within a relocateable Code object.  Consider the following
example:

	move.a	pc,a			; get address of next instruction
ref17:	move.p5	hexfont-ref17,c		; Sass can't do this
	add.a	a,c			; calculate address of "hexfont"
	move.a	c,d1			; now d1 points to the hex patterns
	...

hexfont:
	data.5 #F999F
	data.5 #72262
	...

I think with Sass you need to either do the subtraction at runtime
(making the program bigger and slower) or keep the Code object load
address in a register (which could probably be put to better use).

If some later version of Sass supports this construct, I will probably
switch over to Sass.
-- 
Andreas Gustafsson
Internet: gson@niksula.hut.fi
Voice: +358 0 563 5592