DSP ASSEMBLER
$nolist
r0 equ 0
r1 equ 1
r2 equ 2
r3 equ 3
a0 equ 0
a1 equ 1
a2 equ 2
a3 equ 3
orig macro addr
cseg at 8000h
base equ $
cseg at 8000h+addr
LED equ base+4000h
endm
;------- ALU FUNCTIONS (2-op) ------------
zadd macro a,ab
dcb 00h
dcb 00h+(a SHL 6)+ (ab SHL 4)
endm
zsub macro a,ab
dcb 01h
dcb 00h+(a SHL 6)+ (ab SHL 4)
endm
zand macro a,ab
dcb 02h
dcb 00h+(a SHL 6)+ (ab SHL 4)
endm
zor macro a,ab
dcb 03h
dcb 00h+(a SHL 6)+ (ab SHL 4)
endm
zxor macro a,ab
dcb 04h
dcb 00h+(a SHL 6)+ (ab SHL 4)
endm
zcmp macro a,ab
dcb 05h
dcb 00h+(a SHL 6)+ (ab SHL 4)
endm
;------- ALU FUNCTIONS (1-op)IMMEDIATE ------------
zaddi macro a,i
dcb 10h
dcb 00h+(a SHL 6)+ i
endm
zsubi macro a,i
dcb 11h
dcb 00h+(a SHL 6)+ i
endm
zandi macro a,i
dcb 12h
dcb 00h+(a SHL 6)+ i
endm
zori macro a,i
dcb 13h
dcb 00h+(a SHL 6)+ i
endm
zxori macro a,i
dcb 14h
dcb 00h+(a SHL 6)+ i
endm
;------- ALU FUNCTIONS (1-op)ARITHMETIC ------------
znot macro a
dcb 16h
dcb 00h+(a SHL 6)
endm
zinc macro a
dcb 17h
dcb 00h+(a SHL 6)
endm
zdec macro a
dcb 18h
dcb 00h+(a SHL 6)
endm
zzero macro a
dcb 19h
dcb 00h+(a SHL 6)
endm
zpass macro a
dcb 1fh
dcb 00h+(a SHL 6)
endm
;------- SPECIAL FUNCTIONS (0-op)------------
znop macro
dcb 0e0h
endm
zstop macro
dcb 0ffh
endm
zsetc macro
dcb 0e1h
endm
zclrc macro
dcb 0f1h
endm
zsetn macro
dcb 0e2h
endm
zclrn macro
dcb 0f2h
endm
zsetz macro
dcb 0e3h
endm
zclrz macro
dcb 0f3h
endm
;------ BRANCH FUNCTIONS (normal)-----------
zbr macro addr
dcw 0060h
dcw (addr - base)
endm
zbeq macro addr
dcw 0061h
dcw (addr - base)
endm
zbne macro addr
dcw 0062h
dcw (addr - base)
endm
zblt macro addr
dcw 0063h
dcw (addr - base)
endm
zbgt macro addr
dcw 0064h
dcw (addr - base)
endm
;------ BRANCH FUNCTIONS (subroutine)-----------
zcall macro addr
dcw 0068h
dcw (addr - base)
endm
zretn macro
dcb 6fh
endm
;------ BRANCH FUNCTIONS (special)-----------
zbbs macro addr
dcw 0070h
dcw (addr - base)
endm
zbbc macro addr
dcw 0071h
dcw (addr - base)
endm
zrpt macro addr
dcw 007fh
dcw (addr - base)
endm
;------ MULT FUNCTIONS-----------
zmult macro a,ra,rb
dcb 20h
dcb 00h+(a SHL 6)+ (ra SHL 4)+(rb SHL 2)
endm
zmulti macro a,ra,i
dcb 30h
dcb 00h+(a SHL 6)+ (ra SHL 4)+ i
endm
zsqr macro a,ra
dcb 21h
dcb 00h+(a SHL 6)+ (ra SHL 4)
endm
;------ SHIFT FUNCTIONS (1-op) -----------
zasl macro a
dcb 5fh
dcb 00h+(a SHL 6)+ 0
endm
zasr macro a
dcb 5fh
dcb 00h+(a SHL 6)+ 1
endm
zlsr macro a
dcb 5fh
dcb 00h+(a SHL 6)+ 2
endm
zrol macro a
dcb 5fh
dcb 00h+(a SHL 6)+ 3
endm
zror macro a
dcb 5fh
dcb 00h+(a SHL 6)+ 4
endm
zrnd macro a
dcb 5fh
dcb 00h+(a SHL 6)+ 5
endm
ztnk macro a
dcb 5fh
dcb 00h+(a SHL 6)+ 6
endm
;------ SHIFT FUNCTIONS (to mem) -----------
zrnda macro a,addr
dcb 4000h+(a SHL 6)+ 0dh
dcw (addr - base)
endm
ztnka macro a,addr
dcb 4000h+(a SHL 6)+ 0eh
dcw (addr - base)
endm
;------ SHIFT FUNCTIONS (with ALU) -----------
zaslk macro alu,a
dcb 40h+alu
dcb 00h+(a SHL 6)+ 0
endm
zasrk macro alu,a
dcb 40h+alu
dcb 00h+(a SHL 6)+ 1
endm
zlsrk macro alu,a
dcb 40h+alu
dcb 00h+(a SHL 6)+ 2
endm
zrolk macro alu,a
dcb 40h+alu
dcb 00h+(a SHL 6)+ 3
endm
zrork macro alu,a
dcb 40h+alu
dcb 00h+(a SHL 6)+ 4
endm
zrndk macro alu,a
dcb 40h+alu
dcb 00h+(a SHL 6)+ 5
endm
ztnkk macro alu,a
dcb 40h+alu
dcb 00h+(a SHL 6)+ 6
endm
;------- LOAD FUNCTIONS --------
zldd macro r,rb
dcb 88h
dcb 00h+ (r SHL 4) + (rb SHL 2)
endm
zldi macro r,i
dcb 82h
dcb 00h + (r SHL 4)+ i
endm
zld macro r,addr
dcb 80h
dcb 00h+ (r SHL 4)
dcw (addr - base)
endm
zlda macro r,a
dcb 84h
dcb 00h+ (a SHL 6) + (a SHL 4)
endm
zsta macro a,addr
dcb 90h
dcb 00h+ (a SHL 6)
dcw (addr - base)
endm
$list