237 lines
4.3 KiB
Plaintext
237 lines
4.3 KiB
Plaintext
|
*DEFS FOR SYMBOLS REFERENCED FROM MACROS
|
|||
|
.GLOBL ERRORLOG
|
|||
|
|
|||
|
*------- Macros for TMS34010 assembly language programs ----------------
|
|||
|
* Swap contents of two registers that reside in same file
|
|||
|
SWAP $MACRO R1,R2
|
|||
|
XOR :R1.S:,:R2.S:
|
|||
|
XOR :R2.S:,:R1.S:
|
|||
|
XOR :R1.S:,:R2.S:
|
|||
|
$END
|
|||
|
|
|||
|
* Test a register for zero
|
|||
|
TEST $MACRO R1
|
|||
|
MOVE :R1.S:,:R1.S:
|
|||
|
$END
|
|||
|
|
|||
|
*EQUATES FOR XY COMPARES(MOTOLORA STYLE)
|
|||
|
JRXEQ $MACRO P1
|
|||
|
JRXZ P1.S
|
|||
|
$END
|
|||
|
JRXNE $MACRO P1
|
|||
|
JRXNZ P1.S
|
|||
|
$END
|
|||
|
JRXGE $MACRO P1
|
|||
|
JRXNN P1.S
|
|||
|
$END
|
|||
|
JRXLT $MACRO P1
|
|||
|
JRXN P1.S
|
|||
|
$END
|
|||
|
JRYEQ $MACRO P1
|
|||
|
JRYZ P1.S
|
|||
|
$END
|
|||
|
JRYNE $MACRO P1
|
|||
|
JRYNZ P1.S
|
|||
|
$END
|
|||
|
JRYGE $MACRO P1
|
|||
|
JRYNN P1.S
|
|||
|
$END
|
|||
|
JRYLT $MACRO P1
|
|||
|
JRYN P1.S
|
|||
|
$END
|
|||
|
|
|||
|
*
|
|||
|
*SUBTRACT REGISTER FROM MEMORY
|
|||
|
* SUBRM REG,ADDR,FIELD SIZE
|
|||
|
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
|
|||
|
*
|
|||
|
SUBRM $MACRO P1,P2,P3
|
|||
|
MOVE :P2:,A14,:P3:
|
|||
|
SUB :P1:,A14
|
|||
|
MOVE A14,:P2:,:P3:
|
|||
|
$END
|
|||
|
*
|
|||
|
*ADD REGISTER TO MEMORY
|
|||
|
* ADDRM REG,ADDR,FIELD SIZE
|
|||
|
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
|
|||
|
*
|
|||
|
ADDRM $MACRO P1,P2,P3
|
|||
|
MOVE :P2:,A14,:P3:
|
|||
|
ADD :P1:,A14
|
|||
|
MOVE A14,:P2:,:P3:
|
|||
|
$END
|
|||
|
|
|||
|
*INCREMENT LOCATION
|
|||
|
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
|
|||
|
**
|
|||
|
INCW $MACRO P1
|
|||
|
MOVE :P1:,A14
|
|||
|
INC A14
|
|||
|
MOVE A14,:P1:
|
|||
|
$END
|
|||
|
|
|||
|
*
|
|||
|
*DECREMENT WORD
|
|||
|
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
|
|||
|
**
|
|||
|
DECW $MACRO P1
|
|||
|
MOVE :P1:,A14
|
|||
|
DEC A14
|
|||
|
MOVE A14,:P1:
|
|||
|
$END
|
|||
|
|
|||
|
*
|
|||
|
*SUBTRACT MEMORY
|
|||
|
* SUBM ADDR,REG,FIELD SIZE
|
|||
|
*SUBTRACTS ADDRESS FROM REGISTER
|
|||
|
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
|
|||
|
*
|
|||
|
SUBM $MACRO P1,P2,P3
|
|||
|
MOVE :P1:,A14,:P3:
|
|||
|
SUB A14,:P2:
|
|||
|
$END
|
|||
|
*
|
|||
|
*ADD MEMORY
|
|||
|
* ADDM ADDR,REG,FIELD SIZE
|
|||
|
*ADDS ADDRESS FROM REGISTER
|
|||
|
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
|
|||
|
*
|
|||
|
ADDM $MACRO P1,P2,P3
|
|||
|
MOVE :P1:,A14,:P3:
|
|||
|
ADD A14,:P2:
|
|||
|
$END
|
|||
|
*
|
|||
|
*NEGATE MEMORY
|
|||
|
* NEGM ADDR,FIELD SIZE
|
|||
|
*NEGATES ADDRESS CONTENTS
|
|||
|
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
|
|||
|
*
|
|||
|
NEGM $MACRO P1,P2
|
|||
|
MOVE :P1:,A14,:P2:
|
|||
|
NEG A14
|
|||
|
MOVE A14,:P1:,:P2:
|
|||
|
$END
|
|||
|
*
|
|||
|
*COMPARE MEMORY
|
|||
|
* CMPM ADDR,REG,FIELD SIZE
|
|||
|
*COMPARES ADDRESS TO REGISTER
|
|||
|
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
|
|||
|
*
|
|||
|
CMPM $MACRO P1,P2,P3
|
|||
|
MOVE :P1:,A14,:P3:
|
|||
|
CMP A14,:P2:
|
|||
|
$END
|
|||
|
*
|
|||
|
*CLEAR MEMORY
|
|||
|
* CLRM ADDR,FIELD SIZE
|
|||
|
*CLEARS ADDRESS CONTENTS
|
|||
|
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
|
|||
|
*
|
|||
|
CLRM $MACRO P1,P2
|
|||
|
CLR A14
|
|||
|
MOVE A14,:P1:,:P2:
|
|||
|
$END
|
|||
|
*
|
|||
|
*COMPLEMENT MEMORY
|
|||
|
* COMM ADDR,FIELD SIZE
|
|||
|
*COMPLEMENTS ADDRESS CONTENTS
|
|||
|
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
|
|||
|
*
|
|||
|
COMM $MACRO P1,P2
|
|||
|
MOVE :P1:,A14,:P2:
|
|||
|
NOT A14
|
|||
|
MOVE A14,:P1:,:P2:
|
|||
|
$END
|
|||
|
*
|
|||
|
*SHIFT LEFT MEMORY
|
|||
|
* SLLM SHIFT COUNT,ADDR,FIELD SIZE
|
|||
|
*SHIFTS ADDRESS CONTENTS
|
|||
|
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
|
|||
|
*
|
|||
|
SLLM $MACRO P1,P2,P3
|
|||
|
MOVE :P2:,A14,:P3:
|
|||
|
SLL :P1:,A14
|
|||
|
MOVE A14,:P2:,:P3:
|
|||
|
$END
|
|||
|
*
|
|||
|
*SHIFT RIGHT ARITHMETIC MEMORY
|
|||
|
* SRAM SHIFT COUNT,ADDR,FIELD SIZE
|
|||
|
*SHIFTS ADDRESS CONTENTS
|
|||
|
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
|
|||
|
*
|
|||
|
SRAM $MACRO P1,P2,P3
|
|||
|
MOVE :P2:,A14,:P3:
|
|||
|
SEXT A14,:P3:
|
|||
|
SRA :P1:,A14
|
|||
|
MOVE A14,:P2:,:P3:
|
|||
|
$END
|
|||
|
*
|
|||
|
*SHIFT RIGHT LOGICAL MEMORY
|
|||
|
* SRLM SHIFT COUNT,ADDR,FIELD SIZE
|
|||
|
*SHIFTS ADDRESS CONTENTS
|
|||
|
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
|
|||
|
*
|
|||
|
SRLM $MACRO P1,P2,P3
|
|||
|
MOVE :P2:,A14,:P3:
|
|||
|
ZEXT A14,:P3:
|
|||
|
SRL :P1:,A14
|
|||
|
MOVE A14,:P2:,:P3:
|
|||
|
$END
|
|||
|
|
|||
|
*PUSH REGISTER(S) ONTO THE STACK
|
|||
|
*USAGE: ONE OPERAND -> PUSH OP 2 OR MORE OPS -> PUSH (OP1,OP2,...,OPN)
|
|||
|
PUSH $MACRO REG
|
|||
|
MOVE :REG:,-*SP,1
|
|||
|
$END
|
|||
|
|
|||
|
*PULL REGISTER(S) OFF OF THE STACK
|
|||
|
*USAGE: ONE REGISTER -> PULL REG 2 OR MORE REGS -> PULL (REG1,REG2,...,REGN)
|
|||
|
PULL $MACRO REG
|
|||
|
MMFM SP,:REG:
|
|||
|
$END
|
|||
|
|
|||
|
*PUSH LOW WORD OF REGISTER ON TO STACK
|
|||
|
*ONE REGISTER ONLY!
|
|||
|
*USAGE: PUSHW REG
|
|||
|
PUSHW $MACRO REG
|
|||
|
MOVE :REG:,-*SP,0
|
|||
|
$END
|
|||
|
|
|||
|
*PULL LOW WORD OF REGISTER OFF OF STACK
|
|||
|
*ONE REGISTER ONLY!
|
|||
|
*USAGE: PULLW REG
|
|||
|
PULLW $MACRO REG
|
|||
|
MOVE *SP+,:REG:,0
|
|||
|
$END
|
|||
|
|
|||
|
*MAKE A SINGLE SOUND USING THE GSP SOUND PROCESSOR
|
|||
|
SOUND1 $MACRO SNDNUM
|
|||
|
MOVI :SNDNUM:,A0
|
|||
|
CALLA ONESND
|
|||
|
$END
|
|||
|
|
|||
|
*NULL LONG WORD
|
|||
|
LONGNULL:$MACRO
|
|||
|
.LONG 0
|
|||
|
$END
|
|||
|
*
|
|||
|
*LOCKUP MACRO
|
|||
|
*
|
|||
|
LOCKUP $MACRO
|
|||
|
DINT
|
|||
|
JRUC $
|
|||
|
$END
|
|||
|
|
|||
|
*
|
|||
|
*CALLERR - CALL THE ERROR LOG MACRO
|
|||
|
*REGS = # OF REGISTERS PUSHED ON THE STACK BY THIS SUBROUTINE
|
|||
|
*
|
|||
|
CALLERR $MACRO NUM,REGS
|
|||
|
MMTM SP,A1,A2
|
|||
|
MOVE *SP((:REGS:+2)*20H),A1,L
|
|||
|
MOVI :NUM:,A2
|
|||
|
CALLA ERRORLOG
|
|||
|
MMFM SP,A1,A2
|
|||
|
$END
|
|||
|
|
|||
|
|