
		 AP V0.2 -- Amiga Assembler preprocessor

			   by Risto Paasivirta

		   Copyright © 1989, Risto Paasivirta	
		           All rights reserved.	
		

	This program, source and document can be freely used and copied
			    *spread and enjoy*


AP is a half-day-hack which I meant to be a tool for writing quick math
oriented routines in assembler. Version 0.2 (another half-day) implements
some control structures. If you need more, you have the source...

Version 0.2 features:
- 16-bit maths
- bit operations
- ifcc -- else -- then
- begin -- until
- begin -- while -- repeat
- horrible bug colony?

AP simply converts some RPN expressions to assembler source, error cheking
is let to assembler. Anything which is not an AP-operand is handled as an
assembler label/expression, and thus may generate illegal instructions.

exp:
d0 #45 + . generates add.w #45,d0 , which is legal but
#45 d0 + . generates add.w d0,#45 !!!

Syntax:

ap [<source.a] [>destination.a] [debug] 

AP reads source from stdin and outputs it to stdout, error messages go
to stderr.


Exprssions:

x y + .		x=x+y

x y - z + .	x=x-y+z

x y z - + .	x=x+(y=y-z)

x y *		x=x*y

z a + .		z=z+a (warning extra stuff: x)

etc...

Operations:

{		start to process AP code. Must be first char of line,
		rest of line is ignored.

}		pass stuff to assembler until next '{', rest of line ignored

.		end of exprssion.

Math:

x y +		add.w y,x

x y -		sub.w y,x

x y *		muls y,x

x y /		ext.l x
		divu y,x

x %		swap x

x y z */	muls y,x
		divs z,x

Bit opers:

x y &		and.w y,x

x y |		or.w y,x

x y ^		eor.w y,x

x ~ 		not.w x

x y <?		btst y,x

x y <^		bchg y,x

x y <0		bclr y,x

x y <1		bset y,x

x y <<		lsr.w y,x

x y >>		asl.w y,x

Tests:

x y ==		cmp.w y,x

x 0=		tst.w x

!		eor.w #4,CCR	(reverse Z flag, use as logigal not)

Moves:

x y =		move.w y,x

x y :=:		exg y,x

Controls:

ifcc ... then
		 __	
		bcc if.xxx
		...			
	if.xxx	

ifcc ... else ,,, then
		 __
		bcc if.xxx
		...
		bra if.yyy
	if.xxx
		,,,
	if.yyy

begin ... until

	beg.xxx	
		...
		beq beg.xxx

begin ... while ,,, repeat	

	beg.xxx
		...
		beq whl.yyy
		,,,
		bra beg.xxx
	whl.yyy

Comments:
	
; comment	; comment

BUGS:

- ifcc -- until and begin -- then constucts give no warnings...
- Programming style is't most clean.
- This stuff has not been throughly tested.
- This manual is written at finglish...
- I won't get any money from this stuff..
- There are no funny error messages (well, is 'too much stuff' funny?)

Author:

Risto Paasivirta
Ainolantie 2
40520 Jyväskylä
Finland

(paasivir@tukki.jyu.fi)

