smashtv/MACROS.HDR

237 lines
4.3 KiB
Plaintext
Raw Normal View History

2021-04-06 15:09:56 -07:00
*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