This article has not yet been rated on Wikipedia's
content assessment scale. It is of interest to the following WikiProjects: | |||||||||||
|
The main article says there was a rare and uncommon instruction called "X" - used for executing an instruction that is pointed to, by another register. After the instruction, program flow resumes where the Program Counter used to be.
What is the object code for this instruction?
The main article could be improved by explaining which engineers came up with this instruction. Its probable use appears to be fairly obvious. It appears to facilitate distributed processing.
Were there any other microprocessors that use this kind of instruction? 216.99.198.99 ( talk) 01:34, 21 August 2009 (UTC)
Without having to download and study the TMS9900 instruction set, can anybody brief me on what the RSET instruction did? Was it a software interrupt like the 6502 BRK, but uninterruptible, like an NMI triggered by software?
The main article could be improved by describing the RSET instruction, and noting whether it could bring about a restart, or was it more like a "clear" the bit instruction, similar to RCLR in some microprocessors like the 68000? 216.99.198.28 ( talk) 23:12, 6 September 2009 (UTC)
- RSET ($0360) %0000 0011 0110 0000
- IDLE ($0340) %0000 0011 0100 0000
- LREX ($03E0) %0000 0011 1110 0000
- CKOF ($03C0) %0000 0011 1100 0000
- CKON ($03A0) %0000 0011 0110 0000
Endianness is one of the most misunderstood things among software developers. The reason is that people get hung up on terminology and lose sight of what is really happening at the hardware level.
First, the TMS9900 is a Big Endian processor. Which bit is called A0 has nothing to do with endianness. There does seem to be some consistency among chip manufacturers regarding this labeling, but that is merely coincidental. For the TMS9900, TI chose A0 to represent the most significant address bit and A14 to be the least significant address bit. They could have labeled them in the reverse order without changing the endianness.
Second, when a RSET instruction executes, the 3 most significant address lines (A0, A1, and A2) are driven Low, High, High, respectively, and the CRUCLK line is pulsed. This combination of signals causes the CRU bus to reset, but does not invoke a memory access. Then the 9900 loads the contents of memory at address 0000 into the Workspace Pointer (WP) register and address 0002 is loaded into the program counter (PC). After this, execution continues at the address loaded into the PC.
If you look at the object code on a Little Endian computer (such as a PC), the RSET instruction may look like 60 03, but on a big endian machine (or with SW that compensates for endianness) you would see 03 60. Because the 9900 is a 16 bit device, the opcode is stored in memory as 0360. Jimwilliams57 ( talk) 05:09, 14 September 2009 (UTC)
You should keep in mind that the so called external instructions, with the mnemonics LREX, RSET, CKON, CKOF and IDLE have their names from their use in the TM 990 mini computers. In addition to their meaning inside the CPU, their full function relies on specific hardware to decode these instructions. What happens when they are executed depends upon that hardware. It is for example possible to include hardware that will decode the RSET instruction to also do a hardware reset of chips in the computer, including the CPU itself. Without such hardware, the only thing that happens is that the CPU disables interrupts, by loading zeroes into ST12-ST15, which is equivalent to executing LIMI 0. The IDLE instruction could turn on an indicator LED, to tell the user the CPU is idle (as was done by the Cortex computer). That computer also took benefit from the CKON and CKOF instructions, but used them to enable and disable a memory mapper circuitry. LREX cause a delayed interrupt after two instructions, by clocking a row of flip-flops with the IAQ signal. By loading proper values into R13-R15, then executing LREX RTWP, the computer would "return" to the desired instruction, execute that one, then come back to a debugger by the interrupt.
But without this external logic, these instructions do nothing, or very little. —Preceding unsigned comment added by 79.102.250.184 ( talk) 22:03, 3 January 2010 (UTC)
There's a neutrality disputed tag on the main page, but no discussion of neutrality in the talk page - what's up? At first reading, the article feels like it's been written by an enthusiast of the chip, but it doesn't seem wildly at variance with NPOV. Rob Burbidge ( talk) 12:16, 16 September 2009 (UTC)
Major Parts of the page are copied from http://www.cpushack.com/CPU/cpu3.html. Perhaps thats the reason.... —Preceding unsigned comment added by 78.42.111.234 ( talk) 10:31, 29 October 2010 (UTC)
the page is full of speculation and inaccurate information. coming from someone who owned nearly every micro-processor available in 1978 - 1988 and memorized their instruction sets.
just some examples:
I may take a try at cleanup with cites. Techguru99 ( talk) 13:41, 18 June 2010 (UTC)
what is the neutrality issue? whoever initiated the claim should at least discuss it, or remove it. it is distracting .
also, the list of 'inaccuracies' is really a list of statements, mostly not even addressing any inaccuracies in the article. i don't understand point 2, the 'ripoff' statement. the opcodes are NOT the same as the PDP11. eg; mov is 001 for the PDP, but 110 in the TMS. similarly, 010/100 for com, 011/110 for subtract, etc.
the article IS very sparse for a chip this powerful and popular, though 96.8.145.192 ( talk) 09:35, 23 April 2011 (UTC)
It would be nice to add an example subroutine, such as the strtolower()
example used for some of the other microprocessors (e.g.,
6502,
80386,
68000, etc.). —
Loadmaster (
talk)
17:38, 22 May 2018 (UTC)
This article has not yet been rated on Wikipedia's
content assessment scale. It is of interest to the following WikiProjects: | |||||||||||
|
The main article says there was a rare and uncommon instruction called "X" - used for executing an instruction that is pointed to, by another register. After the instruction, program flow resumes where the Program Counter used to be.
What is the object code for this instruction?
The main article could be improved by explaining which engineers came up with this instruction. Its probable use appears to be fairly obvious. It appears to facilitate distributed processing.
Were there any other microprocessors that use this kind of instruction? 216.99.198.99 ( talk) 01:34, 21 August 2009 (UTC)
Without having to download and study the TMS9900 instruction set, can anybody brief me on what the RSET instruction did? Was it a software interrupt like the 6502 BRK, but uninterruptible, like an NMI triggered by software?
The main article could be improved by describing the RSET instruction, and noting whether it could bring about a restart, or was it more like a "clear" the bit instruction, similar to RCLR in some microprocessors like the 68000? 216.99.198.28 ( talk) 23:12, 6 September 2009 (UTC)
- RSET ($0360) %0000 0011 0110 0000
- IDLE ($0340) %0000 0011 0100 0000
- LREX ($03E0) %0000 0011 1110 0000
- CKOF ($03C0) %0000 0011 1100 0000
- CKON ($03A0) %0000 0011 0110 0000
Endianness is one of the most misunderstood things among software developers. The reason is that people get hung up on terminology and lose sight of what is really happening at the hardware level.
First, the TMS9900 is a Big Endian processor. Which bit is called A0 has nothing to do with endianness. There does seem to be some consistency among chip manufacturers regarding this labeling, but that is merely coincidental. For the TMS9900, TI chose A0 to represent the most significant address bit and A14 to be the least significant address bit. They could have labeled them in the reverse order without changing the endianness.
Second, when a RSET instruction executes, the 3 most significant address lines (A0, A1, and A2) are driven Low, High, High, respectively, and the CRUCLK line is pulsed. This combination of signals causes the CRU bus to reset, but does not invoke a memory access. Then the 9900 loads the contents of memory at address 0000 into the Workspace Pointer (WP) register and address 0002 is loaded into the program counter (PC). After this, execution continues at the address loaded into the PC.
If you look at the object code on a Little Endian computer (such as a PC), the RSET instruction may look like 60 03, but on a big endian machine (or with SW that compensates for endianness) you would see 03 60. Because the 9900 is a 16 bit device, the opcode is stored in memory as 0360. Jimwilliams57 ( talk) 05:09, 14 September 2009 (UTC)
You should keep in mind that the so called external instructions, with the mnemonics LREX, RSET, CKON, CKOF and IDLE have their names from their use in the TM 990 mini computers. In addition to their meaning inside the CPU, their full function relies on specific hardware to decode these instructions. What happens when they are executed depends upon that hardware. It is for example possible to include hardware that will decode the RSET instruction to also do a hardware reset of chips in the computer, including the CPU itself. Without such hardware, the only thing that happens is that the CPU disables interrupts, by loading zeroes into ST12-ST15, which is equivalent to executing LIMI 0. The IDLE instruction could turn on an indicator LED, to tell the user the CPU is idle (as was done by the Cortex computer). That computer also took benefit from the CKON and CKOF instructions, but used them to enable and disable a memory mapper circuitry. LREX cause a delayed interrupt after two instructions, by clocking a row of flip-flops with the IAQ signal. By loading proper values into R13-R15, then executing LREX RTWP, the computer would "return" to the desired instruction, execute that one, then come back to a debugger by the interrupt.
But without this external logic, these instructions do nothing, or very little. —Preceding unsigned comment added by 79.102.250.184 ( talk) 22:03, 3 January 2010 (UTC)
There's a neutrality disputed tag on the main page, but no discussion of neutrality in the talk page - what's up? At first reading, the article feels like it's been written by an enthusiast of the chip, but it doesn't seem wildly at variance with NPOV. Rob Burbidge ( talk) 12:16, 16 September 2009 (UTC)
Major Parts of the page are copied from http://www.cpushack.com/CPU/cpu3.html. Perhaps thats the reason.... —Preceding unsigned comment added by 78.42.111.234 ( talk) 10:31, 29 October 2010 (UTC)
the page is full of speculation and inaccurate information. coming from someone who owned nearly every micro-processor available in 1978 - 1988 and memorized their instruction sets.
just some examples:
I may take a try at cleanup with cites. Techguru99 ( talk) 13:41, 18 June 2010 (UTC)
what is the neutrality issue? whoever initiated the claim should at least discuss it, or remove it. it is distracting .
also, the list of 'inaccuracies' is really a list of statements, mostly not even addressing any inaccuracies in the article. i don't understand point 2, the 'ripoff' statement. the opcodes are NOT the same as the PDP11. eg; mov is 001 for the PDP, but 110 in the TMS. similarly, 010/100 for com, 011/110 for subtract, etc.
the article IS very sparse for a chip this powerful and popular, though 96.8.145.192 ( talk) 09:35, 23 April 2011 (UTC)
It would be nice to add an example subroutine, such as the strtolower()
example used for some of the other microprocessors (e.g.,
6502,
80386,
68000, etc.). —
Loadmaster (
talk)
17:38, 22 May 2018 (UTC)