We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS

TCALL (SPC700): Difference between revisions

From SnesLab
Jump to: navigation, search
(added equation for effective address)
(1 byte Instructions)
 
(4 intermediate revisions by the same user not shown)
Line 6: Line 6:
|'''Length'''
|'''Length'''
|'''Speed'''
|'''Speed'''
|'''Target Address'''
|+
|+
|[[Implied]] (type 3)
|[[Implied]] (type 3)
Line 11: Line 12:
|1 byte
|1 byte
|8 cycles
|8 cycles
|$FFDE
|+
|+
|[[Implied]] (type 3)
|[[Implied]] (type 3)
Line 16: Line 18:
|1 byte
|1 byte
|8 cycles
|8 cycles
|$FFDC
|+
|+
|[[Implied]] (type 3)
|[[Implied]] (type 3)
Line 21: Line 24:
|1 byte
|1 byte
|8 cycles
|8 cycles
|$FFDA
|+
|+
|[[Implied]] (type 3)
|[[Implied]] (type 3)
Line 26: Line 30:
|1 byte
|1 byte
|8 cycles
|8 cycles
|$FFD8
|+
|+
|[[Implied]] (type 3)
|[[Implied]] (type 3)
Line 31: Line 36:
|1 byte
|1 byte
|8 cycles
|8 cycles
|$FFD6
|+
|+
|[[Implied]] (type 3)
|[[Implied]] (type 3)
Line 36: Line 42:
|1 byte
|1 byte
|8 cycles
|8 cycles
|$FFD4
|+
|+
|[[Implied]] (type 3)
|[[Implied]] (type 3)
Line 41: Line 48:
|1 byte
|1 byte
|8 cycles
|8 cycles
|$FFD2
|+
|+
|[[Implied]] (type 3)
|[[Implied]] (type 3)
Line 46: Line 54:
|1 byte
|1 byte
|8 cycles
|8 cycles
|$FFD0
|+
|+
|[[Implied]] (type 3)
|[[Implied]] (type 3)
Line 51: Line 60:
|1 byte
|1 byte
|8 cycles
|8 cycles
|$FFCE
|+
|+
|[[Implied]] (type 3)
|[[Implied]] (type 3)
Line 56: Line 66:
|1 byte
|1 byte
|8 cycles
|8 cycles
|$FFCC
|+
|+
|[[Implied]] (type 3)
|[[Implied]] (type 3)
Line 61: Line 72:
|1 byte
|1 byte
|8 cycles
|8 cycles
|$FFCA
|+
|+
|[[Implied]] (type 3)
|[[Implied]] (type 3)
Line 66: Line 78:
|1 byte
|1 byte
|8 cycles
|8 cycles
|$FFC8
|+
|+
|[[Implied]] (type 3)
|[[Implied]] (type 3)
Line 71: Line 84:
|1 byte
|1 byte
|8 cycles
|8 cycles
|$FFC6
|+
|+
|[[Implied]] (type 3)
|[[Implied]] (type 3)
Line 76: Line 90:
|1 byte
|1 byte
|8 cycles
|8 cycles
|$FFC4
|+
|+
|[[Implied]] (type 3)
|[[Implied]] (type 3)
Line 81: Line 96:
|1 byte
|1 byte
|8 cycles
|8 cycles
|$FFC2
|+
|+
|[[Implied]] (type 3)
|[[Implied]] (type 3)
Line 86: Line 102:
|1 byte
|1 byte
|8 cycles
|8 cycles
|$FFC0
|}
|}


Line 91: Line 108:
!colspan="8"|Flags Affected
!colspan="8"|Flags Affected
|+
|+
|N
|[[Negative Flag|N]]
|V
|[[Overflow Flag|V]]
|P
|[[Direct Page Flag|P]]
|B
|[[Break Flag|B]]
|H
|[[Half-Carry Flag|H]]
|I
|[[Interrupt Enable Flag|I]]
|Z
|[[Zero Flag|Z]]
|C
|[[Carry Flag|C]]
|+
|+
|.
|.
Line 111: Line 128:


'''TCALL''' (Table CALl) is an [[SPC700]] instruction that calls a subroutine in the [[uppermost page]].  The low byte of the effective address which is called is a function of the high nibble of the opcode, equal to $DE - nibble*2.  The high byte of the effective address is always $FF.
'''TCALL''' (Table CALl) is an [[SPC700]] instruction that calls a subroutine in the [[uppermost page]].  The low byte of the effective address which is called is a function of the high nibble of the opcode, equal to $DE - nibble*2.  The high byte of the effective address is always $FF.
=== Syntax ===
<pre>
TCALL n
</pre>
where n is decimal integer from 0 to 15, which becomes the high nibble of the opcode.


=== See Also ===
=== See Also ===
Line 117: Line 142:


=== External Links ===
=== External Links ===
* Official Nintendo documentation on TCALL: [https://archive.org/details/SNESDevManual/book1/page/n234 Appendix C-9]
* Official Nintendo documentation on TCALL: Table C-16 [https://archive.org/details/SNESDevManual/book1/page/n234 Appendix C-9]
* [https://www.romhacking.net/documents/197| anomie's SPC700 doc]
* [https://www.romhacking.net/documents/197| anomie's SPC700 doc]


Line 123: Line 148:
[[Category:SPC700]]
[[Category:SPC700]]
[[Category:Subroutine Call Return Commands]]
[[Category:Subroutine Call Return Commands]]
[[Category:One-byte Instructions]]

Latest revision as of 12:06, 28 November 2023

Basic Info
Addressing Mode Opcode Length Speed Target Address
Implied (type 3) 01 1 byte 8 cycles $FFDE
Implied (type 3) 11 1 byte 8 cycles $FFDC
Implied (type 3) 21 1 byte 8 cycles $FFDA
Implied (type 3) 31 1 byte 8 cycles $FFD8
Implied (type 3) 41 1 byte 8 cycles $FFD6
Implied (type 3) 51 1 byte 8 cycles $FFD4
Implied (type 3) 61 1 byte 8 cycles $FFD2
Implied (type 3) 71 1 byte 8 cycles $FFD0
Implied (type 3) 81 1 byte 8 cycles $FFCE
Implied (type 3) 91 1 byte 8 cycles $FFCC
Implied (type 3) A1 1 byte 8 cycles $FFCA
Implied (type 3) B1 1 byte 8 cycles $FFC8
Implied (type 3) C1 1 byte 8 cycles $FFC6
Implied (type 3) D1 1 byte 8 cycles $FFC4
Implied (type 3) E1 1 byte 8 cycles $FFC2
Implied (type 3) F1 1 byte 8 cycles $FFC0
Flags Affected
N V P B H I Z C
. . . . . . . .

TCALL (Table CALl) is an SPC700 instruction that calls a subroutine in the uppermost page. The low byte of the effective address which is called is a function of the high nibble of the opcode, equal to $DE - nibble*2. The high byte of the effective address is always $FF.

Syntax

TCALL n

where n is decimal integer from 0 to 15, which becomes the high nibble of the opcode.

See Also

External Links