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