User guide
Chapter 2 - Hardware Resources
12 FT 3120 / FT 3150 Smart Transceiver Data Book
Table 2.3 Program Control Instructions
Table 2.4 Memory/Stack Instructions
Mnemonic Cycles Size (bytes) Description Comments
NOP 1 1 No operation
SBR 1 1 Short unconditional branch Offset 0 to 15
BR/BRC/
BRNC
2 2 Branch, branch on (not) carry Offset -128 to +127
SBRZ/SBRNZ 3 1 Short branch on TOS (not)
zero
Offset 0 to 15. Drops TOS
BRF 4 3 Unconditional branch far Absolute address
BRZ/BRNZ 4 2 Branch on TOS (not) zero Offset -128 to +127. Drops TOS
RET 4 1 Return from subroutine Drops two bytes from return
stack
BRNEQ 4/6 3 Branch if TOS not equal
(taken/not taken)
Offset -128 to +127. Drops TOS
if equal
DBRNZ 5 2 Decrement [RSP] and branch
if not zero
Offset -128 to +127. If not
taken, drops one byte from
return stack
CALLR 5 2 Call subroutine relative Offset -128 to +127. Pushes two
bytes to return stack
CALL 6 2 Call subroutine Address in low 8KB. Pushes
two bytes to return stack
CALLF 7 3 Call subroutine far Absolute address. Pushes two
bytes to return stack
Mnemonic Cycles Size (bytes) Comments / Effective Address (EA)
PUSH TOS 3 1 Increment DSP, duplicate TOS into NEXT
DROP TOS 3 1 Move NEXT to TOS, decrement DSP
DROP_R TOS 6 1 Move NEXT to TOS, decrement DSP, return from
call
PUSH (NEXT, DSP, RSP,
FLAGS)
4 1 Push processor register
POP (DSP, RSP, FLAGS) 4 1 Pop processor register
DROP NEXT 2 1 Decrement DSP
DROP_R NEXT 5 1 Decrement DSP and return from call
PUSH/POP !D 4 1 Byte register [8 to 23]
PUSH !TOS 4 1 EA = BP + TOS, push byte to NEXT
POP !TOS 4 1 EA = BP + TOS, pop byte from NEXT
PUSH [RSP] 4 1 Push from return stack to data stack, RSP
unchanged
DROP [RSP] 2 1 Increment RSP
PUSHS #literal 4 1 Push short literal value [0 to 7]
PUSH #literal 4 2 Push 8-bit literal value [0 to 255]
PUSHPOP 5 1 Pop from return stack, push to data stack
POPPUSH 5 1 Pop from data stack, push to return stack
LDBP address 5 3 Load base page pointer with 16-bit value
PUSH/POP [DSP][-D] 5 1 EA = BP + DSP - displacement [1 to 8]
PUSHD #literal 6 3 16-bit literal value (high byte first)
PUSHD [PTR] 6 1 Push from 16-bit pointer [0 to 3], high byte first