Intellivision's CP1610 CPU

Discussion of development of software for any "obsolete" computer or video game system.
Beeper
Posts: 39
Joined: Thu Dec 01, 2011 5:16 am

Intellivision's CP1610 CPU

Post by Beeper » Fri Dec 16, 2011 3:57 am

As we know, Intellivision has an General Instrument CP1610 16-bit CPU, although running at only 895 Khz. How does this CPU compare to the more common 6502 and Z80 processors?

tepples
Posts: 21839
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples » Fri Dec 16, 2011 8:08 am

CP1610 on Intellivision Wiki

Perhaps the closest comparison I can think of is a Z80 (lots of general-purpose registers, lots of Internal Operation cycles). The eight 16-bit registers can be thought of as four accumulators, X, Y, S, and PC. (Yes, PC is one of the numbered general-purpose registers, just as on ARM.)

User avatar
tokumaru
Posts: 11519
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Post by tokumaru » Fri Dec 16, 2011 10:38 am

With a higher clock rate, that might actually be a fun CPU to code for.

Wave
Posts: 110
Joined: Mon Nov 16, 2009 5:59 am

Post by Wave » Fri Dec 16, 2011 1:08 pm

tokumaru wrote:With a higher clock rate, that might actually be a fun CPU to code for.
Yeah, the autoincremented registers are cool.

mic_
Posts: 920
Joined: Thu Oct 05, 2006 6:29 am

Post by mic_ » Fri Dec 16, 2011 1:57 pm

If you want to try it out there's SDK-1600 site where you can find tools and code samples.

And for running stuff on an actual Intellivision there's the Cuttle Cart 3 (unless it's finally gone out of stock).

3gengames
Formerly 65024U
Posts: 2269
Joined: Sat Mar 27, 2010 12:57 pm

Post by 3gengames » Fri Dec 16, 2011 2:12 pm

Just from reading these posts it seems like some people want to program a 6809/6309 or even 68000 microprocessor.

Beeper
Posts: 39
Joined: Thu Dec 01, 2011 5:16 am

Post by Beeper » Mon Dec 19, 2011 12:25 am

How does the Intellivision's 894 Khz (NTSC)/1 Mhz (PAL) CP1610 CPU compare to a 1 Mhz MOS 6502 or 3.58 Mhz Z80?

User avatar
tokumaru
Posts: 11519
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Post by tokumaru » Mon Dec 19, 2011 4:38 am

mic_ wrote:And for running stuff on an actual Intellivision there's the Cuttle Cart 3 (unless it's finally gone out of stock).
Although I found the CPU somewhat interesting, I have no interest on the Intellivision itself. I have never seen one in person (I don't think it was even sold here officially), and from what I've seen online the games are not particularly interesting. I mean, it's interesting just for being a game console, but not "I want to code for it" interesting.
3gengames wrote:Just from reading these posts it seems like some people want to program a 6809/6309 or even 68000 microprocessor.
The Genesis/MD does interest me a lot, so yeah, I do want to program for the 68000 some day. And from what I understand you can even use the 68000 for music (like we use the CPU for music on the NES), you're not required to use the Z80. I would like to practice more Z80 though.

adam_smasher
Posts: 271
Joined: Sun Mar 27, 2011 10:49 am
Location: Seattle

Post by adam_smasher » Mon Dec 19, 2011 3:00 pm

I wish I'd had a Genesis rather than an SNES as a kid. The 68k looks like a lovely processor to work with (much nicer than the 65816), but the Genny just doesn't speak to me the way Nintendo's console does.

User avatar
kyuusaku
Posts: 1665
Joined: Mon Sep 27, 2004 2:13 pm

Post by kyuusaku » Mon Dec 19, 2011 3:54 pm

CP1610 doesn't look fun to me. Decles? EEk. The register layout seems nice, but the instruction set is really minimalistic. No inclusive OR???

I guess this is what you have to do to set some bits in memory:

load register from memory
load other register with precomplemented mask
AND data register with mask register
complement mask register
XOR data register with mask register
store register to memory

considering each one of those instructions is 6-10 cycles, that's REALLY slow. The 6502 at the same clock rate should be faster for just about any algorithm.


The 68k is easy to program, and powerful, but after trying to emulate it, I'm just not much of a fan. It has really obnoxious instruction encoding, and I was a little let down due to its reputation as being so elegant.

User avatar
cpow
NESICIDE developer
Posts: 1092
Joined: Mon Oct 13, 2008 7:55 pm
Location: Minneapolis, MN
Contact:

Post by cpow » Mon Dec 19, 2011 4:00 pm

kyuusaku wrote:The 68k is easy to program, and powerful, but after trying to emulate it, I'm just not much of a fan. It has really obnoxious instruction encoding, and I was a little let down due to its reputation as being so elegant.
What platform were you trying to emulate?

User avatar
kyuusaku
Posts: 1665
Joined: Mon Sep 27, 2004 2:13 pm

Post by kyuusaku » Mon Dec 19, 2011 7:51 pm

cpow wrote:What platform were you trying to emulate?
Neo Geo primarily, but the plan is for it to become multi-system like MAME/MESS (+computers).

psycopathicteen
Posts: 2911
Joined: Wed May 19, 2010 6:12 pm

Post by psycopathicteen » Mon Dec 19, 2011 10:00 pm

kyuusaku wrote:CP1610 doesn't look fun to me. Decles? EEk. The register layout seems nice, but the instruction set is really minimalistic. No inclusive OR???

I guess this is what you have to do to set some bits in memory:

load register from memory
load other register with precomplemented mask
AND data register with mask register
complement mask register
XOR data register with mask register
store register to memory

considering each one of those instructions is 6-10 cycles, that's REALLY slow. The 6502 at the same clock rate should be faster for just about any algorithm.


The 68k is easy to program, and powerful, but after trying to emulate it, I'm just not much of a fan. It has really obnoxious instruction encoding, and I was a little let down due to its reputation as being so elegant.
The 68000 only takes 8 cycles to load a VDP register with a value!

MOVE.W registerthatjustsohappenstohavetheneededvalue, (addressregsiterthatjustsohappenstohavetheneededdestinationaddress)

User avatar
kyuusaku
Posts: 1665
Joined: Mon Sep 27, 2004 2:13 pm

Post by kyuusaku » Mon Dec 19, 2011 10:38 pm

The 6502/NES only requires 4:

sta $2007 ; A happens to hold the value, instruction encodes the address to write to PPU

or also 8 for the 8086 when the VDP is port mapped:

out dx, ax ; AX happens to hold the value, DX happens to hold the port

One cool thing about the 68K is how easily you can maintain multiple stacks with the (A#)+ and -(A#) addressing modes. I kind of like the CP1610's approach better though forcing the SP to predecrement/postincrement on indirect writes/reads.

psycopathicteen
Posts: 2911
Joined: Wed May 19, 2010 6:12 pm

Post by psycopathicteen » Mon Dec 19, 2011 11:47 pm

My post was intended to be a joke.

Post Reply