Blame ld10k1/setup/effects/emu_constants.asm

Packit Service b98cfc
;some hardware constants C_[n]<DecimalValue>, 'n' indicates negative value
Packit Service b98cfc
;		
Packit Service b98cfc
;these are in 2's complement representation
Packit Service b98cfc
 
Packit Service b98cfc
C_0	equ $040	;;00000000
Packit Service b98cfc
C_1	equ $041	;;00000001
Packit Service b98cfc
C_2	equ $042	;;00000002
Packit Service b98cfc
C_3	equ $043	;;00000003
Packit Service b98cfc
C_4	equ $044	;;00000004	
Packit Service b98cfc
C_8	equ $045	;;00000008
Packit Service b98cfc
C_16	equ $046	;;00000010
Packit Service b98cfc
C_32	equ $047	;;00000020
Packit Service b98cfc
C_256	equ $048	;;00000100
Packit Service b98cfc
C_65536 equ $049	;;00010000
Packit Service b98cfc
C_2^23 	equ $04A	;;00080000
Packit Service b98cfc
C_2^28	equ $04b	;;10000000
Packit Service b98cfc
C_2^29	equ $04c	;;20000000 (C_max /4) +1
Packit Service b98cfc
C_2^30	equ $04d	;;40000000 ( C_max / 2 ) + 1 (almost half)	
Packit Service b98cfc
C_nmax	equ $04e	;;80000000 most negative number
Packit Service b98cfc
C_max	equ $04f	;;7fffffff most positive number	
Packit Service b98cfc
C_n1	equ $050	;;ffffffff -1
Packit Service b98cfc
C_n2	equ $051	;;fffffffe -2
Packit Service b98cfc
C_n2^30	equ $052	;;c0000000 C_nmax /2
Packit Service b98cfc
Packit Service b98cfc
C_LSshift equ $55	;;to left shift an address by using macsints
Packit Service b98cfc
			;;for fractional addresses
Packit Service b98cfc
Packit Service b98cfc
Packit Service b98cfc
ZERO equ C_0;
Packit Service b98cfc
ONE equ	C_1;
Packit Service b98cfc
	
Packit Service b98cfc
;;; Hardware Registers:	
Packit Service b98cfc
		
Packit Service b98cfc
ACCUM	equ $56
Packit Service b98cfc
CCR	equ $57	
Packit Service b98cfc
NOISE1	equ $58
Packit Service b98cfc
NOISE2	equ $59	
Packit Service b98cfc
IRQ	equ $5A	
Packit Service b98cfc
DBAC	equ $5B	
Packit Service b98cfc
	
Packit Service b98cfc
and	macro	dest,srcA,srcB
Packit Service b98cfc
	andxor	dest,srcA,srcB,C_0
Packit Service b98cfc
	endm
Packit Service b98cfc
	
Packit Service b98cfc
xor	macro   dest,srcA,srcB
Packit Service b98cfc
	andxor	dest,C_n1,srcA,srcB
Packit Service b98cfc
	endm
Packit Service b98cfc
	
Packit Service b98cfc
not	macro	 dest,src
Packit Service b98cfc
	andxor   dest,src,C_n1,C_n1		
Packit Service b98cfc
	endm
Packit Service b98cfc
Packit Service b98cfc
nand	macro	dest,srcA,srcB	
Packit Service b98cfc
	andxor	dest,srcA,srcB,C_n1
Packit Service b98cfc
	endm
Packit Service b98cfc
	
Packit Service b98cfc
or	macro	 dest,srcA,srcB
Packit Service b98cfc
	not	 C_0,srcA
Packit Service b98cfc
	andxor	 dest,ACCUM,srcA,srcB	
Packit Service b98cfc
	endm	
Packit Service b98cfc
Packit Service b98cfc
nor	macro	dest,srcA,scrB
Packit Service b98cfc
	not	dest,srcA
Packit Service b98cfc
	andxor	dest,srcB,dest,srcA	
Packit Service b98cfc
	not	dest,dest
Packit Service b98cfc
	endm
Packit Service b98cfc
Packit Service b98cfc
Packit Service b98cfc
neg     macro   dest,src
Packit Service b98cfc
	macs1   dest,C_0,C_1,C_nmax 	
Packit Service b98cfc
	endm	
Packit Service b98cfc
	
Packit Service b98cfc
;;; branch on:
Packit Service b98cfc
;;; ==0
Packit Service b98cfc
beq	macro   count
Packit Service b98cfc
	skip	CCR,CCR,C_8,count	
Packit Service b98cfc
	endm
Packit Service b98cfc
;;; !=0
Packit Service b98cfc
bne	macro	count
Packit Service b98cfc
	skip	CCR,CCR,C_256,count
Packit Service b98cfc
	endm
Packit Service b98cfc
;;; <0
Packit Service b98cfc
blt	macro	count
Packit Service b98cfc
	skip	CCR,CCR,C_4,count
Packit Service b98cfc
	endm
Packit Service b98cfc
;;; <=0 
Packit Service b98cfc
ble	macro count
Packit Service b98cfc
C___1008 con $1008
Packit Service b98cfc
    skip CCR,CCR,C___1008,count
Packit Service b98cfc
    endm
Packit Service b98cfc
;;; always branch
Packit Service b98cfc
bra	macro	count
Packit Service b98cfc
	skip	C_0,C_max,C_max,count
Packit Service b98cfc
	endm
Packit Service b98cfc
;;; on saturation- for now - as10k1 can not handle more than 25 macros
Packit Service b98cfc
;bsa     macro count
Packit Service b98cfc
;	skip CCR,CCR,C_16,count
Packit Service b98cfc
;	endm
Packit Service b98cfc
bge	macro  count
Packit Service b98cfc
C___80	con $80
Packit Service b98cfc
	skip CCR,CCR,C___80,count	
Packit Service b98cfc
	endm
Packit Service b98cfc
		
Packit Service b98cfc
bgt	macro	count
Packit Service b98cfc
C___180	con $180
Packit Service b98cfc
	skip CCR,CCR,C___180,count
Packit Service b98cfc
	endm
Packit Service b98cfc
	
Packit Service b98cfc
move	macro dest,src
Packit Service b98cfc
	macs  dest,src,C_0,C_0
Packit Service b98cfc
	endm	 	
Packit Service b98cfc
fracmult macro dest, src1, src2 
Packit Service b98cfc
	macs  dest,$40, src1, src2
Packit Service b98cfc
	endm
Packit Service b98cfc
intmult macro dest, src1, src2
Packit Service b98cfc
	macints  dest, $40, src1, src2
Packit Service b98cfc
	endm
Packit Service b98cfc
add	macro dest, src1, src2
Packit Service b98cfc
	acc3 dest, $40, src1, src2 
Packit Service b98cfc
	endm
Packit Service b98cfc
		
Packit Service b98cfc
;;; usefull for testing values before a skip
Packit Service b98cfc
test	macro test
Packit Service b98cfc
	macs C_0,test,C_0,C_0
Packit Service b98cfc
	endm
Packit Service b98cfc
Packit Service b98cfc
cmp	macro src1,scr2
Packit Service b98cfc
	macints C_0,src1,C_n1,src2
Packit Service b98cfc
	endm
Packit Service b98cfc
Packit Service b98cfc
	
Packit Service b98cfc
;----------------------------------------
Packit Service b98cfc
;	dest = src1 - src2	
Packit Service b98cfc
sub	macro dest, src1, src2 
Packit Service b98cfc
	macints  dest, src1, src2, C_n1
Packit Service b98cfc
	endm
Packit Service b98cfc
Packit Service b98cfc
;----------------------------------------
Packit Service b98cfc
;	    LowPassFilter
Packit Service b98cfc
lpf	macro yy, mm, xx
Packit Service b98cfc
	interp yy, yy, mm, xx
Packit Service b98cfc
	endm
Packit Service b98cfc
Packit Service b98cfc
;----------------------------------------
Packit Service b98cfc
;	    HighPassFilter
Packit Service b98cfc
hpf	macro yy, ss, mm, xx
Packit Service b98cfc
	interp ss, ss, mm, xx
Packit Service b98cfc
	sub   yy, xx, ss
Packit Service b98cfc
	endm
Packit Service b98cfc
Packit Service b98cfc
	end