<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://rs-485.com/index.php?action=history&amp;feed=atom&amp;title=Signetics_2650</id>
	<title>Signetics 2650 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://rs-485.com/index.php?action=history&amp;feed=atom&amp;title=Signetics_2650"/>
	<link rel="alternate" type="text/html" href="https://rs-485.com/index.php?title=Signetics_2650&amp;action=history"/>
	<updated>2026-05-03T15:27:08Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://rs-485.com/index.php?title=Signetics_2650&amp;diff=1427&amp;oldid=prev</id>
		<title>RS-485: Imported from Wikipedia (overwrite)</title>
		<link rel="alternate" type="text/html" href="https://rs-485.com/index.php?title=Signetics_2650&amp;diff=1427&amp;oldid=prev"/>
		<updated>2026-05-03T12:40:46Z</updated>

		<summary type="html">&lt;p&gt;Imported from Wikipedia (overwrite)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{short description|8-bit microprocessor}}&lt;br /&gt;
{{Infobox CPU&lt;br /&gt;
|name           = Signetics 2650&lt;br /&gt;
|image          = KL Signetics 2650AN.jpg&lt;br /&gt;
|caption        = Signetics 2650AN&lt;br /&gt;
|produced-start = {{Start date and age|1975}}&lt;br /&gt;
|produced-end   = &lt;br /&gt;
|slowest        = 1.2 | slow-unit = MHz&lt;br /&gt;
|fastest        = &lt;br /&gt;
|manuf1         = [[Signetics]], [[Philips]]&lt;br /&gt;
|arch           = &lt;br /&gt;
|transistors    = &lt;br /&gt;
|instructions   = &lt;br /&gt;
|data-width     = 8&lt;br /&gt;
|address-width  = 15&lt;br /&gt;
|pack1          = 40-pin [[Dual in-line package|DIP]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Signetics 2650&amp;#039;&amp;#039;&amp;#039; was an [[8-bit]] [[microprocessor]] introduced in July 1975.&amp;lt;ref&amp;gt;{{Cite web |url=http://bitsavers.trailing-edge.com/pdf/microcomputerAssociates/Microcomputer_Digest_v02n01_Jul75.pdf |title=Microcomputer Digest Vol. 2 No. 1 July 1975 |access-date=1 February 2014 |archive-url=https://web.archive.org/web/20140201234414/http://bitsavers.trailing-edge.com/pdf/microcomputerAssociates/Microcomputer_Digest_v02n01_Jul75.pdf |archive-date=1 February 2014 |url-status=live }}&amp;lt;/ref&amp;gt; According to [[Adam Osborne]]&amp;#039;s book &amp;#039;&amp;#039;An Introduction to Microprocessors Vol 2: Some Real Products&amp;#039;&amp;#039;, it was &amp;quot;the most [[minicomputer]]-like&amp;quot; of the microprocessors available at the time.  A combination of missing features and odd memory access limited its appeal, and the system saw little use in the market.&lt;br /&gt;
&lt;br /&gt;
==Development==&lt;br /&gt;
[[File:Locale_RS6_Signetics 2650 microprocessor October 1975.jpg|thumb|300px|right|Signetics 2650 introductory ad, October 30, 1975]]&lt;br /&gt;
&lt;br /&gt;
In 1972, Signetics&amp;#039; Jack Curtis{{efn|Best known for his joke article on [[Write-only_memory_(joke)|write-only memory]].}} hired John Kessler of [[IBM]] to lead the design of a new single-chip CPU intended to compete with [[minicomputer]] systems. Kessler selected the [[IBM 1130]] as the model for the new design. The 1130, released in 1965, was a [[16-bit]] [[minicomputer]] that shared many design features with other minis of the era.&amp;lt;ref name=shack/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While Kessler designed the architecture, Kent Andreas laid out the CPU using a recently developed [[ion implantation]] [[NMOS logic|NMOS]] process. In contrast to the far more common [[PMOS logic|PMOS]] process of the era, NMOS used less power and dissipated less heat. This allowed the chip to be run at higher speeds than PMOS CPU designs, and the first 2650&amp;#039;s ran at the same 1.25&amp;amp;nbsp;MHz speed as the contemporary models of the 1130.&amp;lt;ref name=shack/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When it was designed in 1972, the 2650 was among the most advanced designs on the market, easily outperforming and out-featuring the [[Intel 4004]] and [[Intel 8008|8008]] of the same era. Despite this, the design was not released to production. At the time, Signetics was heavily involved with [[Dolby Laboratories]], developing [[integrated circuit]]s that implemented Dolby&amp;#039;s suite of [[Dolby noise-reduction system|noise-reduction system]]s. Production of the 2650 was pushed back, and the CPU was not formally introduced until July 1975. By 1975, several new CPUs had been introduced, designed from the start to be 8-bit machines rather than mimicking an older design, and the 2650&amp;#039;s advantages were no longer as compelling.&amp;lt;ref name=shack/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In 1975, [[Philips]] purchased Signetics, and from that point versions of the 2650 can be found with both Signetics or Philips branding.&amp;lt;ref name=shack/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In March 1976, Signetics reached a second-source agreement with [[Advanced Memory Systems]] (AMS). At that time, most CPU firms were very small and no one would buy a design from a company that might go bankrupt. Second-sourcing was an important guarantee that the design would remain available in this eventuality. AMS was already acting as a second-source for the [[RCA 1802]], an advanced [[CMOS]] design. The NMOS 2650 was seen as a useful adjunct that would not directly compete with the 1802. Unfortunately, in November AMS was purchased by [[Intersil]], who had their own [[Intersil 6100]], a single-chip version of the [[PDP-8]] mini. Intersil dropped production of the 2650.&amp;lt;ref name=shack/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Signetics tried again with [[National Semiconductor]] in 1977, who planned to introduce versions in the last quarter of the year. For unknown reasons, this appears to have never happened, and only a single example of an NS version, from France, has ever been found.&amp;lt;ref name=shack/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Signetics continued the development of the 2650, introducing two new models in 1977. The 2650A was a reworked version of the original layout intended to improve yield, and thus reduce cost. Speed remained unchanged at 1.25&amp;amp;nbsp;MHz for the base model and 2&amp;amp;nbsp;MHz for the -1 versions. The 2650B was based on the A, added two new instructions, and improved the performance of a number of existing instructions.&amp;lt;ref name=shack/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
[[File:Locale_RS6_Signetics 2650A die.JPG|thumb|right|Signetics 2650A chip magnified.]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;infobox&amp;quot; style=&amp;quot;font-size:88%;width:31em;&amp;quot;&lt;br /&gt;
|+ Signetics 2650 registers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| &amp;lt;sup&amp;gt;0&amp;lt;/sup&amp;gt;&amp;lt;sub&amp;gt;9&amp;lt;/sub&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| &amp;lt;sup&amp;gt;0&amp;lt;/sup&amp;gt;&amp;lt;sub&amp;gt;8&amp;lt;/sub&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| &amp;lt;sup&amp;gt;0&amp;lt;/sup&amp;gt;&amp;lt;sub&amp;gt;7&amp;lt;/sub&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| &amp;lt;sup&amp;gt;0&amp;lt;/sup&amp;gt;&amp;lt;sub&amp;gt;6&amp;lt;/sub&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| &amp;lt;sup&amp;gt;0&amp;lt;/sup&amp;gt;&amp;lt;sub&amp;gt;5&amp;lt;/sub&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| &amp;lt;sup&amp;gt;0&amp;lt;/sup&amp;gt;&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| &amp;lt;sup&amp;gt;0&amp;lt;/sup&amp;gt;&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| &amp;lt;sup&amp;gt;0&amp;lt;/sup&amp;gt;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| &amp;lt;sup&amp;gt;0&amp;lt;/sup&amp;gt;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| &amp;lt;sup&amp;gt;0&amp;lt;/sup&amp;gt;&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;(bit position)&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;16&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Main general purpose registers&amp;#039;&amp;#039;&amp;#039; &amp;lt;br/&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background:silver;color:black&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center; background:white&amp;quot; colspan=&amp;quot;7&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; colspan=&amp;quot;8&amp;quot;| REG0&lt;br /&gt;
|- style=&amp;quot;background:silver;color:black&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center; background:white&amp;quot; colspan=&amp;quot;7&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; colspan=&amp;quot;8&amp;quot;| REG1&lt;br /&gt;
|- style=&amp;quot;background:silver;color:black&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center; background:white&amp;quot; colspan=&amp;quot;7&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; colspan=&amp;quot;8&amp;quot;| REG2&lt;br /&gt;
|- style=&amp;quot;background:silver;color:black&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center; background:white&amp;quot; colspan=&amp;quot;7&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; colspan=&amp;quot;8&amp;quot;| REG3&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;16&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Alternate general purpose registers&amp;#039;&amp;#039;&amp;#039; &amp;lt;br/&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background:silver;color:black&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center;  background:white&amp;quot; colspan=&amp;quot;7&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; colspan=&amp;quot;8&amp;quot;| REG1&amp;#039;&lt;br /&gt;
|- style=&amp;quot;background:silver;color:black&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center; background:white&amp;quot; colspan=&amp;quot;7&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; colspan=&amp;quot;8&amp;quot;| REG2&amp;#039;&lt;br /&gt;
|- style=&amp;quot;background:silver;color:black&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center; background:white&amp;quot; colspan=&amp;quot;7&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; colspan=&amp;quot;8&amp;quot;| REG3&amp;#039;&lt;br /&gt;
|- &lt;br /&gt;
|colspan=&amp;quot;16&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Instruction Address register&amp;#039;&amp;#039;&amp;#039; &amp;lt;br/&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background:silver;color:black&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; colspan=&amp;quot;2&amp;quot;| Page&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; colspan=&amp;quot;13&amp;quot;| &lt;br /&gt;
|- &lt;br /&gt;
|colspan=&amp;quot;16&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Subroutine return address stack&amp;#039;&amp;#039;&amp;#039; &amp;lt;br/&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background:silver;color:black&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; colspan=&amp;quot;15&amp;quot;| S0&lt;br /&gt;
|- &lt;br /&gt;
|- style=&amp;quot;background:silver;color:black&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; colspan=&amp;quot;15&amp;quot;| S1&lt;br /&gt;
|- &lt;br /&gt;
|- style=&amp;quot;background:silver;color:black&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; colspan=&amp;quot;15&amp;quot;| S2&lt;br /&gt;
|- &lt;br /&gt;
|- style=&amp;quot;background:silver;color:black&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; colspan=&amp;quot;15&amp;quot;| S2&lt;br /&gt;
|- &lt;br /&gt;
|- style=&amp;quot;background:silver;color:black&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; colspan=&amp;quot;15&amp;quot;| S4&lt;br /&gt;
|- &lt;br /&gt;
|- style=&amp;quot;background:silver;color:black&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; colspan=&amp;quot;15&amp;quot;| S5&lt;br /&gt;
|- &lt;br /&gt;
|- style=&amp;quot;background:silver;color:black&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; colspan=&amp;quot;15&amp;quot;| S6&lt;br /&gt;
|- &lt;br /&gt;
|- style=&amp;quot;background:silver;color:black&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; colspan=&amp;quot;15&amp;quot;| S7&lt;br /&gt;
|- &lt;br /&gt;
|colspan=&amp;quot;16&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Program Status Words&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|- style=&amp;quot;background:silver;color:black&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center; background:white&amp;quot; colspan=&amp;quot;7&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| S&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| F&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| II&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; colspan=&amp;quot;2&amp;quot;| &lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; colspan=&amp;quot;3&amp;quot;| Stack Ptr&lt;br /&gt;
| style=&amp;quot;background:white; color:black&amp;quot; | PSU&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background:silver;color:black&amp;quot;&lt;br /&gt;
| style=&amp;quot;text-align:center; background:white&amp;quot; colspan=&amp;quot;7&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; colspan=&amp;quot;2&amp;quot;| CC&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| ID&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| RS&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| WC&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| OV&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| CM&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot;| C&lt;br /&gt;
| style=&amp;quot;background:white; color:black&amp;quot; | PSL&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The overall design of the 2650 was based on the [[IBM 1130]]. As such, the 2650 has a number of features that were common on 1960s [[minicomputer]]s, but rarely found on newly designed microprocessors of the 1970s. Among these, for instance, were processor status bits that were used to track the status of [[input/output]] devices, which makes it simpler to write interfacing code.&amp;lt;ref name=shack&amp;gt;{{cite web |title=Signetics 2650: An IBM on a Chip |website=CPU Shack |date=16 October 2016 |url=http://www.cpushack.com/2016/10/16/signetics-2650-an-ibm-on-a-chip/}}&amp;lt;/ref&amp;gt; Another mini-like feature was its use of [[vectored interrupt]]s, which allowed devices to call the correct [[interrupt handler]] code by putting its memory location on the data bus and then forcing an interrupt. This avoids the need to write a centralized interrupt handler that reads additional data from the bus, determines which [[device driver]] is being invoked and then calls it; the 2650 can jump directly to the correct code, potentially stored on the device itself.&lt;br /&gt;
&lt;br /&gt;
The 2650&amp;#039;s [[processor register]]s were divided into sets, with a single global register R0 used as the [[Accumulator (computing)|accumulator]], and two sets of three [[index register]]s, both named R1, R2 and R3, for a total of seven registers.{{sfn|Rowe|1976}} For clarity, the second set was sometimes referred to as R1&amp;#039;, R2&amp;#039; and R3&amp;#039; (&amp;quot;prime&amp;quot;). At any one time, one of the two sets of indexes were visible to the CPU. Which set was visible was controlled by a bit in the [[status register]], PSW. One could easily switch between the two sets of registers with a single instruction.&amp;lt;ref name=world&amp;gt;{{cite web |website=CPU World |title= Signetics 2650 family |url=https://www.cpu-world.com/CPUs/2650/index.html |date=11 February 2014 }}&amp;lt;/ref&amp;gt; This allowed rapid switching of values during subroutine calls, [[operating system]] switches, or handling interrupts. Unlike the 1130, the registers were only 8-bit wide rather than 16-bit, but there were two sets in the 2650 rather than one in the 1130.&amp;lt;ref name=shack/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another of its mini-like features was the extensive support for [[indirect addressing]] on most instructions. Many instructions require data to be read from a location in memory, in most CPUs of the era that would be a single byte of data that is stored in memory referred to by a 16-bit location. In the 2650, the high-bit of that 16-bit location indicated indirection, meaning that the data was not located at this location in memory, but the one encoded in the remaining 15 bits of the address.&amp;lt;ref name=world/&amp;gt; This style of access allowed blocks of data to be more easily accessed than in systems that provided indirection solely through special instructions or index registers. One could step through memory by incrementing the address value stored in that single location in memory. This also resulted in considerable numbers of math instructions being applied to addresses, and to improve the performance of these operations, the 2650 included a second [[arithmetic logic unit]] just for address calculations.{{sfn|Rowe|1976}}&lt;br /&gt;
&lt;br /&gt;
The downside to this approach was that the high-bit was no longer part of the address, meaning the [[address space]] was only 15 bits, and the machine could access only a total of 32&amp;amp;nbsp;KB of memory. The address space was further limited by the use of another two bits of the address to indicate the indexing mode for all logical and arithmetic (i.e. non-branch) instructions. These bits controlled functions like whether the address should be post-incremented or pre-decremented, which is extremely useful for constructing loops. But with all of these bits already accounted for, only 13 were available for addresses in these instructions, meaning only 8&amp;amp;nbsp;KB could be addressed directly. This meant the main memory was broken up as four 8&amp;amp;nbsp;KB blocks.{{sfn|Rowe|1976}} To access memory outside the 8&amp;amp;nbsp;KB where the instruction was located, the data bytes being pointed to had to contain an indirect address, pointing to some other location in memory.&amp;lt;ref name=world/&amp;gt; Doing so forced another memory read cycle, slowing performance.&lt;br /&gt;
&lt;br /&gt;
When the 2650 was designed in 1972, these limitations on address space were not significant due to the small size and high cost of the [[static RAM]] memory typically used with these processors. At the time, machines typically contained 2 or 4&amp;amp;nbsp;KB of RAM. But with the increasing use of [[dynamic RAM]] from the mid-1970s, machines with 8 and 16&amp;amp;nbsp;KB of RAM, and ultimately 64&amp;amp;nbsp;KB, became common and the addressing system on the 2650 became a significant hindrance.&lt;br /&gt;
&lt;br /&gt;
The 2650 also contained an on-die [[call stack]], rather than the more common solution that sets aside a location in memory to hold the stack. The [[stack pointer]] was held in three bits in the PSW. An on-die stack is much faster, as the data can be accessed directly without waiting for it to be read from external memory, but it also takes up room on the die and is always limited in size as a result of practical tradeoffs. In the 2650, the return address stack was eight 15-bit entries deep.{{sfn|Rowe|1976}} This allowed programs to nest subroutines to eight levels.&lt;br /&gt;
&lt;br /&gt;
While there were nine different [[addressing mode]]s, the lack of 16-bit registers and the 13–15-bit address space prevented widespread use. Despite this, an [[operating system]] (&amp;quot;2650 DOS&amp;quot;)&amp;lt;ref&amp;gt;[https://ztpe.nl/2650/software/disk-operating-system/ 2650 DOS]&amp;lt;/ref&amp;gt; was available, along with 8&amp;amp;nbsp;KB and 12&amp;amp;nbsp;KB [[BASIC]] interpreters (sold by Central Data Corporation USA), and many games of the &amp;#039;&amp;#039;[[Hunt the Wumpus]]&amp;#039;&amp;#039; style. Most programs were written in [[assembly language]].&lt;br /&gt;
&lt;br /&gt;
==Uses==&lt;br /&gt;
[[File:Locale_RS6_Signetics PC1001.jpg|thumb|right|PC1001 evaluation board]]&lt;br /&gt;
&lt;br /&gt;
Signetics sold 2650-based [[microprocessor development board]]s, first the PC1001&amp;lt;ref&amp;gt;Signetics Technical Note SP50; 2650 evaluation printed circuit board level system PC1001&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Signetics Technical Note SS50; PC1001 monitor program &amp;quot;PIPBUG&amp;quot;&amp;lt;/ref&amp;gt; and then its successor, the PC1500 &amp;quot;Adaptable Board Computer&amp;quot;, ranging in price from A$165 to A$400. The chip by itself sold for around A$20. Several hardware construction projects and programming articles were published in magazines such as &amp;#039;&amp;#039;[[Electronics Australia]]&amp;#039;&amp;#039; and &amp;#039;&amp;#039;[[Elektor]]&amp;#039;&amp;#039; and related kits were sold by electronics stores. These factors led to its use by a number of [[hobby]]ists in many countries such as Australia, U.S.A.,&amp;lt;ref&amp;gt;Build a 2650 Microcomputer system, Radio Electronics magazine: April, May, June 1977&amp;lt;/ref&amp;gt; United Kingdom, the Netherlands&amp;lt;ref&amp;gt;[[Hobby Computer Club]] (HCC) 2650 user group&amp;lt;/ref&amp;gt; and Germany.&amp;lt;ref&amp;gt;Programmierbeispiele mit dem Mikroprozessor 2650, Johann Hatzenbichler, 1978 {{oclc|74475572}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Two types of [[video game console]] used the Signetics 2650 or 2650A. The first group of consoles are based on the  [[Signetics 2636]] [[video display controller]]; the [[Interton Video Computer 4000]] (1978) and variants of the [[1292 Advanced Programmable Video System]] (1979) belong to this group. The second group of consoles were based on the [[Signetics 2637]] as a [[video display controller]]; [[Emerson Radio|Emerson]] [[Arcadia 2001]] which was released in 1982 and which used a Signetics 2650 running at 0.895&amp;amp;nbsp;[[Hertz|MHz]] as a [[Central processing unit|CPU]] belong to this group together with many other ones software-compatible (Leonardo, [[Hanimex]] MPT-03 etc.).&amp;lt;ref&amp;gt;{{cite web |url=https://www.digitpress.com/the_digs/arcadia/texts/2001-faq.htm#warning |title=Arcadia 2001: Frequently Asked Questions |date=4 June 2002 |access-date=26 December 2023 |first=Ward |last=Sharke |display-authors=etal |others=See &amp;quot;Credits and contributions&amp;quot; section for authors.}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Locale_RS6_Photo Aug 31, 10 32 33 PM.jpg|thumb|Signetics 2650 Microprocessor Kit]]&lt;br /&gt;
&lt;br /&gt;
At least six coin-operated video games were released in the 1970s which used the 2650 CPU:  [[Atari, Inc.|Atari&amp;#039;s]] &amp;#039;&amp;#039;[[Quiz Show (video game)|Quiz Show]]&amp;#039;&amp;#039;, Meadows Games &amp;#039;&amp;#039;3D Bowling&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Gypsy Juggler&amp;#039;&amp;#039; and &amp;#039;&amp;#039;Lazer Command&amp;#039;&amp;#039;, [[Cinematronics]] &amp;#039;&amp;#039;Embargo&amp;#039;&amp;#039;, and a 1978 clone of &amp;#039;&amp;#039;[[Space Invaders]]&amp;#039;&amp;#039; by Italian company [[Zaccaria (company)|Zaccaria]] called &amp;#039;&amp;#039;The Invaders&amp;#039;&amp;#039; (the original by [[Taito]] uses an [[Intel 8080]] CPU). At least two coin-operated video games were released in the 1980s using the 2650. &amp;#039;&amp;#039;[[Hunchback (video game)|Hunchback]]&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;[[Hunchback Olympic]]&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Zaccaria also released 28 pinball machines based on the 2650 CPU. Their successor company, MrGame, released four additional pinball machines using the 2650. Zaccaria seems to have licensed its design to Technoplay as well, and several more pinball machines were released using variations of Zaccaria circuit board designs.&lt;br /&gt;
&lt;br /&gt;
The processor was also used in the [[Signetics Instructor 50]], which was a small computer designed to teach the use and programming of the 2650 CPU.&lt;br /&gt;
&lt;br /&gt;
The 2650 was also used in some large items of equipment such as the Tektronix 8540, a microprocessor software development system which supported various [[in-circuit emulator]], trace memory and logic analyser cards for real-time debugging of microprocessor systems, as practiced in the 1980s. The 2650 provided the base operating system functions, data transfer, and interface to a host computer or serial computer terminal.&lt;br /&gt;
&lt;br /&gt;
The processor was most suited as a microcontroller, due to its extensive I/O support:&lt;br /&gt;
&lt;br /&gt;
* Single bit i/o pins on the processor (sense/flag bits)&lt;br /&gt;
* Signals to directly address two 8-bit I/O ports (control and data ports) using single byte instructions ([[Port I/O|port i/o]]). This circumvented the elaborate hardware other systems needed for [[memory-mapped I/O]]&lt;br /&gt;
* Signals to address another 256 I/O ports using an 8-bit address and two byte instructions, again, limiting the amount of hardware (address decoding) required. Philips emphasized this use as a micro-controller with a demonstration program showing the 2650 controlling an intelligent elevator system. Also, at trade fairs they showed the 2650 controlling a miniature &amp;#039;sort and stack&amp;#039; robot&lt;br /&gt;
&lt;br /&gt;
==Industrial Microcomputer System – IMS==&lt;br /&gt;
[[File:Locale_RS6_IMS001b.jpg|thumb|Philips IMS 2650 Eurocard computer system]]&lt;br /&gt;
For a short time starting 1979, Philips sold a modular 2650 computer called the &amp;#039;IMS&amp;#039;{{snd}} Industrial Microcomputer System,&amp;lt;ref&amp;gt;Industrial Microcomputer System; System Specification, Philips Electronic Components and materials,  1980&amp;lt;/ref&amp;gt; based on the [[Eurocard (printed circuit board)|Eurocard]] format in a 19&amp;quot; rack. It included [[CPU]], PROM, [[Random-access memory|RAM]], input, output and teletype modules. This system was meant as a more intelligent [[programmable logic controller]]. For development, they later added DEBUG, DISPLAY, INTERRUPT and MODEST ((E)PROM programmer) modules.&lt;br /&gt;
&lt;br /&gt;
==Architecture==&lt;br /&gt;
The 2650 was supplied in a 40 pin plastic or ceramic [[Dual in-line package|DIL]] enclosure. An external single phase clock signal and a single 5V supply were needed.&lt;br /&gt;
&lt;br /&gt;
The 2650 had many unusual features when compared to other microprocessors of the time:&lt;br /&gt;
&lt;br /&gt;
*It was a fully static NMOS 8-bit microprocessor. The static nature was unusual for the time, and meant that the processor could be halted simply by stopping the clock signal. Programmers made grateful use of this feature to &amp;quot;single step&amp;#039; through a program using a push-button switch to generate the clock pulses.&lt;br /&gt;
*Unique was the 8-level 15-bit wide stack for the subroutine and interrupt return addresses which was integrated into the processor. The stack pointer used 3 bits of the upper status register. This meant subroutines and interrupts could only be nested 8 levels deep.&lt;br /&gt;
*The processor had only 13 real address lines, a further 2 address lines were connected to a 2-bit &amp;#039;page register&amp;#039;, resulting in a 32 KB address space. The page register was set when an absolute (direct) branch instruction, which used a full 15-bit address, was executed. All logical and arithmetic instructions used a 13-bit address augmented by the contents of the page register, thereby limiting their scope to an 8 KB page. These 2 upper address lines were also used (multiplexed) to select the appropriate I/O port during I/O operations (Control port, Data port or Extended port).&lt;br /&gt;
*Although the 2650 had only one interrupt input, this was a &amp;#039;vectored&amp;#039; interrupt – the interrupting device needed to put a zero-relative displacement on the data bus, that would be used as the operand of a ZBSR (zero branch to subroutine relative) instruction to branch to the specified interrupt routine. Therefore, using indirect addressing, a maximum of 30 interrupt vectors could be stored in the first 64 bytes of memory. (The first three bytes were needed to hold an unconditional branch to the &amp;#039;reset&amp;#039; routine). This vectored interrupt is also reminiscent of the [[PDP-11]] [[minicomputer]].&lt;br /&gt;
&lt;br /&gt;
==Instruction set==&lt;br /&gt;
Although the 2650 is basically an 8-bit microprocessor, up to three bits of the addresses were also used with the 8-bit instruction to form longer opcodes. 64 opcodes are 9-bits long, and another 32 opcodes are 11-bit. Of the remaining 128 8-bit opcodes, 124 (126 in the 2650B) are implemented, giving a total of 444 (446) instructions.&lt;br /&gt;
&lt;br /&gt;
Many more instructions are available as the behavior of the standard instructions can be modified by setting or clearing status bits: WC (with or without carry) and COM (logical or arithmetic compare). This doubled the number of rotate, add, subtract and compare instructions.&lt;br /&gt;
&lt;br /&gt;
The instruction set is strongly [[orthogonal instruction set|orthogonal]]: all logic and arithmetic instructions can use all nine addressing modes:&lt;br /&gt;
&lt;br /&gt;
* register&lt;br /&gt;
* immediate&lt;br /&gt;
* PC relative and PC relative indirect&lt;br /&gt;
* absolute and absolute indirect&lt;br /&gt;
* absolute indexed, absolute indexed with auto-increment, and absolute indexed with auto-decrement, both direct and indirect&lt;br /&gt;
&lt;br /&gt;
The most significant bit of all relative and absolute addresses is used to indicate [[indirection]].&lt;br /&gt;
&lt;br /&gt;
The only exceptions are where the opcodes of meaningless operations are used for other purposes:&lt;br /&gt;
&lt;br /&gt;
* the opcode for AND register zero with register zero is used for the HALT instruction.&lt;br /&gt;
* the opcode for STORE register zero into register zero is used for the [[NOP (code)|NOP]] instruction.&lt;br /&gt;
&lt;br /&gt;
Although the &amp;lt;code&amp;gt;LODZ R0&amp;lt;/code&amp;gt; (load register zero with register zero) instruction is supported by the Signetics assembler, its binary encoding is not allowed. The assembler substitutes the binary for the semantically equivalent instruction &amp;lt;code&amp;gt;IORZ R0&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
&lt;br /&gt;
===Indexing===&lt;br /&gt;
With all arithmetic and logical instructions using absolute (direct) addressing, bits 14 and 13 of the address field are used to indicate the indexing mode as follows:&lt;br /&gt;
&lt;br /&gt;
* 00 no indexing&lt;br /&gt;
* 01 indexing with auto increment&lt;br /&gt;
* 10 indexing with auto decrement&lt;br /&gt;
* 11 indexing only&lt;br /&gt;
&lt;br /&gt;
When indexing is specified, the register defined in the instruction becomes the index register, and the source/destination is implicitly Register zero.  For indirect indexing, Post indexing is used, i.e. the indirect address is first fetched from memory and then the index is added to it.&lt;br /&gt;
&lt;br /&gt;
===Branching===&lt;br /&gt;
Probably the most mini-computer like aspect of the 2650 is the enormous number (62) of branch (jump) instructions; all these instructions could also use indirection:&lt;br /&gt;
&lt;br /&gt;
* BIRR and BIRA: Increment register and branch if non-zero (R0, R1, R2 or R3) with relative or absolute addressing&lt;br /&gt;
* BDRR and BDRA: Decrement register and branch if non-zero (R0, R1, R2 or R3) with relative or absolute addressing&lt;br /&gt;
* BRNR and BRNA: branch if register non-zero (R0, R1, R2 or R3) with relative or absolute addressing&lt;br /&gt;
* BCTR and BCTA: branch on condition True (zero, greater-than, less-than or unconditional) with relative or absolute addressing&lt;br /&gt;
* BCFR and BCFA: branch on condition False (zero, greater-than or less-than) with relative or absolute addressing.&lt;br /&gt;
* ZBRR: branch relative to address zero&lt;br /&gt;
* BXA: branch indexed&lt;br /&gt;
&lt;br /&gt;
Like the [[Intel 8080]], the 2650 had instructions to conditionally branch to, and return from, a subroutine:&lt;br /&gt;
&lt;br /&gt;
* BSTR and BSTA: branch to subroutine on condition True (zero, greater-than, less-than or unconditional) with relative or absolute addressing&lt;br /&gt;
* BSFR and BSFA: branch to subroutine on condition False (zero, greater-than or less-than) with relative or absolute addressing&lt;br /&gt;
* BSNR and BSNA: branch to subroutine if register non-zero (R0, R1, R2 or R3) with relative or absolute addressing&lt;br /&gt;
* RETC: return from subroutine on condition True (zero, greater-than, less-than or unconditional)&lt;br /&gt;
* RETE: return from interrupt on condition True (zero, greater-than, less-than or unconditional)&lt;br /&gt;
* ZBSR: branch to subroutine relative to address zero&lt;br /&gt;
* BSXA: branch to subroutine indexed&lt;br /&gt;
&lt;br /&gt;
Only the branch instructions using absolute addressing used all 15 bits of the address field as address. Using such a branch instruction was, therefore, the only way to set the two bits in the page register (controlling bits 14 and 13 of the address bus) and changing the current 8&amp;amp;nbsp;KB page.&lt;br /&gt;
&lt;br /&gt;
==Versions==&lt;br /&gt;
* 2650 original version with 1.25&amp;amp;nbsp;MHz maximum clock frequency&lt;br /&gt;
* 2650A improved version (minor fabrication changes to improve stability) 1.25&amp;amp;nbsp;MHz maximum clock frequency&lt;br /&gt;
* 2650A-1 as 2650A with 2&amp;amp;nbsp;MHz maximum clock frequency&lt;br /&gt;
* 2650B&lt;br /&gt;
* 2650B-1 as 2650B with 2&amp;amp;nbsp;MHz maximum clock frequency&lt;br /&gt;
&lt;br /&gt;
The 2650B had the following changes and improvements over the 2650A:&amp;lt;ref&amp;gt;Philips 2650 Series microprocessor short-form manual 02-1979; 9398 209 50011&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Two new signals{{snd}} &amp;quot;Bus Enable&amp;quot; on pin 15 and &amp;quot;Cycle Last&amp;quot; on pin 25, which marks the instruction fetch cycle.&amp;lt;ref&amp;gt;[https://ztpe.nl/2650/2650b/ 2650B]&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Program Status Word Upper bits 3 and 4 are settable and testable user flags (unused on the 2650A).&lt;br /&gt;
* Two new instructions STPL and LDPL to save and restore the lower status register from memory in order to simplify interrupt processing.&lt;br /&gt;
* Single byte register R0 instructions execute faster (one cycle rather than two).&lt;br /&gt;
&lt;br /&gt;
==Second sources==&lt;br /&gt;
[[File:Locale_RS6_KL Philips MAB2650.jpg|thumb|right|Philips MAB2650A]]&lt;br /&gt;
In 1975, Signetics was sold to [[Philips]] and the 2650 was later incorporated into the [[NXP Semiconductors|Philips Semiconductors]] line. They made a version of the 2650 called the MAB2650A. Valvo, a subsidiary of Philips, sold the 2650 in Germany. Valvo also sold the VA200 single board (Eurocard) 2650 computer with 4&amp;amp;nbsp;KB PROM/EPROM, 1&amp;amp;nbsp;KB RAM and four I/O ports.&amp;lt;ref&amp;gt;VALVO VA 200 Mikrocomputer im Europa-Format: VALVO Applikationslaboratorium März 1978&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other producers of licensed copies of the chip were [[Harris Corporation|Harris]] and [[Intersil]].{{Citation needed|date=September 2025}}&lt;br /&gt;
&lt;br /&gt;
==Peripheral chips==&lt;br /&gt;
The 2650 came with a full complement of peripheral chips:&lt;br /&gt;
&lt;br /&gt;
* 2621 Video Encoder (PAL)&lt;br /&gt;
* 2622 Video Encoder (NTSC)&lt;br /&gt;
* 2636 Programmable Video Interface&lt;br /&gt;
* 2637 Universal Video Interface&lt;br /&gt;
* 2651 Programmable Communication Interface&lt;br /&gt;
* 2652 Multi-Protocol Communications Circuit (incl. Synchronous Data Link Control (SDLC))&lt;br /&gt;
* 2653 Polynomial Generator / Checker&lt;br /&gt;
* 2655 Programmable Peripheral Interface&lt;br /&gt;
* 2656 SMI (System memory interface)&lt;br /&gt;
* 2657 Direct Memory Access&lt;br /&gt;
* 2661 Enhanced Programmable Communication Interface (EPCI)&lt;br /&gt;
* 2670 Display Character and Graphics Generator&lt;br /&gt;
* 2671 Programmable Keyboard and Communications Controller&lt;br /&gt;
* 2672 Programmable Video Timing Controller&lt;br /&gt;
* 2673 Video Attributes Controller&lt;br /&gt;
&lt;br /&gt;
Many of these peripheral chips were designed so they could also be used with other microprocessors, for example the datasheet of the [[SCN2672T|2672]] suggests using it with an [[Intel 8048]] [[microcontroller]].&lt;br /&gt;
&lt;br /&gt;
Philips Technical Note 083 describes how to interface the 2651 PCI to various other microprocessors, such as the 8080, 8085, Z80, 8048 and 6800&lt;br /&gt;
&lt;br /&gt;
Descendants of the 2651/2661 serial communications chips are still sold as the Philips SC26 series.&lt;br /&gt;
&lt;br /&gt;
==2656 System Memory Interface==&lt;br /&gt;
The 2656 was specifically designed to augment, and interface with, the 2650 and make a 2-chip computer possible. It contained everything the 2650 lacked to make a complete computer:&amp;lt;ref&amp;gt;2650PC-4000 memory interface emulator using PROM&amp;#039;s and FPLA&amp;#039;s&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2&amp;amp;nbsp;KB 8-bit mask-programmed ROM program memory&lt;br /&gt;
* 128 bytes 8-bit RAM memory&lt;br /&gt;
* Clock generator with crystal or RC network&lt;br /&gt;
* Power-on reset&lt;br /&gt;
* Eight general purpose I/O pins&lt;br /&gt;
&lt;br /&gt;
The I/O pins could be used as an 8-bit I/O port or programmed to generate enable signals for extra RAM, ROM or I/O ports. This was achieved by mask-programming a [[Programmable logic array|Programmable Logic Array]] in the 2656.&lt;br /&gt;
&lt;br /&gt;
To develop and test the design before committing it to production, Philips sold the PC4000, a 2656 emulator board using PROMs and FPLAs to emulate the ROM and PLA in the 2656.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
{{notelist}}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
===Citations===&lt;br /&gt;
{{Reflist|2}}&lt;br /&gt;
&lt;br /&gt;
===Bibliography===&lt;br /&gt;
* {{cite magazine |title=The Signetics 2650 |first=Jamieson |last=Rowe |magazine=Electronics Australia |date=September 1976 |url=http://messui.polygonal-moogle.com/comp/2650.pdf }}&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [https://amigan.1emu.net/releases/#amiarcadia 2650 Emulators]&lt;br /&gt;
* [http://datasheets.chipdb.org/Signetics/2650/2650UM.pdf Datasheet]&lt;br /&gt;
* [http://www.cpu-world.com/CPUs/2650/ Signetics 2650 family] CPU World&lt;br /&gt;
* [https://www.old-computers.com/museum/computer.asp?c=1029&amp;amp;st=1 Instructor 50] Old-computers.com&lt;br /&gt;
* [http://www.decodesystems.com/help-wanted/signetics-board.html Adaptable Board Computer] development system complete with 1 KiB PipBug [[Machine code monitor|monitor]] and 512 bytes of [[Random-access memory|RAM]]&lt;br /&gt;
* [https://web.archive.org/web/20110717055810/http://www.cpu-museum.com/2650_e.htm the 2650 at www.cpu-museum.com] (archived)&lt;br /&gt;
* [http://yesterdaystechnology.com/html/2650.html Electronics Australia 2650 board] at yesterdaystechnology.com&lt;br /&gt;
* [http://www.cpushack.com/2016/10/16/signetics-2650-an-ibm-on-a-chip/ Signetics 2650: An IBM on a Chip] retrospective at The CPUSHACK Museum (October 16, 2016)&lt;br /&gt;
* [https://www.arcade-museum.com/game_detail.php?game_id=8202 Zaccaria] The Invaders at Museum of the Game&lt;br /&gt;
* A 2650 cross assembler is available from https://shop-pdp.net/index.php&lt;br /&gt;
{{NXP Semiconductors}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Early microcomputers]]&lt;br /&gt;
[[Category:NXP Semiconductors]]&lt;br /&gt;
[[Category:8-bit microprocessors]]&lt;/div&gt;</summary>
		<author><name>RS-485</name></author>
	</entry>
</feed>