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