	title	"6805 Cross assembler"
;6805macs.asm Copyright 1986 Stuart Venters.

rdop	macro
	 if	"#" ? "$2"
	  db	$1,"#" ^ $2
	 else
	  wrop	$1,$2,$3
	 endif
	endm

wrop	macro
	 if	"" = "$3"
	  wrop2 $1,$2
	 else
	  if "$3" = "X"
	   wrop3	$1,$2
	  else
	   wrop3	$1,$2
	   error	"A"
	  endif
	 endif
	endm

wrop2	macro
	 if	"X" = "$2"
	  db	$1+0x50
	 else
	  if	($2) < 256
	   db	$1+0x10,$2
	  else
	   db	$1+0x20
	   dw	$2
	  endif
	 endif
	endm

wrop3	macro
	 if ($2) < 256
	  if	$2
	   db	$1+0x40,$2
	  else
	   db	$1+0x50
	  endif
	 else
	  db	$1+0x30
	  dw	$2
	 endif
	endm

lda	macro
	rdop	0xa6,$1,$2
	endm

ldx	macro
	rdop	0xae,$1,$2
	endm

sta	macro
	wrop	0xa7,$1,$2
	endm

stx	macro
	wrop	0xaf,$1,$2
	endm

add	macro
	rdop	0xab,$1,$2
	endm

adc	macro
	rdop	0xa9,$1,$2
	endm

sub	macro
	rdop	0xa0,$1,$2
	endm

sbc	macro
	rdop	0xa2,$1,$2
	endm

and	macro
	rdop	0xa4,$1,$2
	endm

ora	macro
	rdop	0xaa,$1,$2
	endm

eor	macro
	rdop	0xa8,$1,$2
	endm

cmp	macro
	rdop	0xa1,$1,$2
	endm

cpx	macro
	rdop	0xa3,$1,$2
	endm

bit	macro
	rdop	0xa5,$1,$2
	endm

jmp	macro
	wrop	0xac,$1,$2
	endm

jsr	macro
	wrop	0xad,$1,$2
	endm


rmwop	macro
	 if	"" = "$3"
	  rmwop2	$1,$2
	 else
	  rmwop3	$1,$2,$3
	 endif
	endm

rmwop2	macro
	 if	"A" = "$2"
	  db	$1+0x10
	 else
	  if	"X" = "$2"
	   db	$1+0x20
	  else
	   db	$1,$2
	  endif
	 endif
	endm

rmwop3	macro
	 if	"X" = "$3"
	  if	$2 = 0
	   db	$1+0x40
	  else
	   db	$1+0x30,$2
	  endif
	 else
	  error "A"
	  db	$1+0x30,0
	 endif
	endm

inc	macro
	rmwop	0x3c,$1,$2
	endm

dec	macro
	rmwop	0x3a,$1,$2
	endm

clr	macro
	rmwop	0x3f,$1,$2
	endm

com	macro
	rmwop	0x33,$1,$2
	endm

neg	macro
	rmwop	0x30,$1,$2
	endm

rol	macro
	rmwop	0x39,$1,$2
	endm

ror	macro
	rmwop	0x36,$1,$2
	endm

lsl	macro
	rmwop	0x38,$1,$2
	endm

lsr	macro
	rmwop	0x34,$1,$2
	endm

asr	macro
	rmwop	0x37,$1,$2
	endm

asl	macro
	rmwop	0x38,$1,$2
	endm

tst	macro
	rmwop	0x3d,$1,$2
	endm

dbr	macro
	iferr	"V",(($2)>127) & (($2)<256)
	db	$1,$2
	endm

bra	macro
	dbr	0x20,($1)-$-2
	endm

brn	macro
	dbr	0x21,($1)-$-2
	endm

bhi	macro
	dbr	0x22,($1)-$-2
	endm

bls	macro
	dbr	0x23,($1)-$-2
	endm

bcc	macro
	dbr	0x24,($1)-$-2
	endm

bhs	macro
	dbr	0x24,($1)-$-2
	endm

bcs	macro
	dbr	0x25,($1)-$-2
	endm

blo	macro
	dbr	0x25,($1)-$-2
	endm

bne	macro
	dbr	0x26,($1)-$-2
	endm

beq	macro
	dbr	0x27,($1)-$-2
	endm

bhcc	macro
	dbr	0x28,($1)-$-2
	endm

bhcs	macro
	dbr	0x29,($1)-$-2
	endm

bpl	macro
	dbr	0x2a,($1)-$-2
	endm

bmi	macro
	dbr	0x2b,($1)-$-2
	endm

bmc	macro
	dbr	0x2c,($1)-$-2
	endm

bms	macro
	dbr	0x2d,($1)-$-2
	endm

bil	macro
	dbr	0x2e,($1)-$-2
	endm

bih	macro
	dbr	0x2f,($1)-$-2
	endm

bsr	macro
	dbr	0xad,($1)-$-2
	endm

brset	macro
	db	($1)*2
	dbr	$2,($3)-$-3
	endm

brclr	macro
	db	1+(($1)*2)
	dbr	$2,($3)-$-3
	endm

bset	macro
	db	0x10+($1)+($1),$2
	endm

bclr	macro
	db	0x11+($1)+($1),$2
	endm

tax	macro
	db	0x97
	endm

txa	macro
	db	0x9f
	endm

sec	macro
	db	0x99
	endm

clc	macro
	db	0x98
	endm

sei	macro
	db	0x9B
	endm

cli	macro
	db	0x9A
	endm

swi	macro
	db	0x83
	endm

rts	macro
	db	0x81
	endm

rti	macro
	db	0x80
	endm

rsp	macro
	db	0x9c
	endm

nop	macro
	db	0x9D
	endm

