News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu

The CPC Revision Zero (Article)

Started by Bread80, 17:29, 14 October 24

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Bread80

As you probably know the Amstrad CPC was originally going to be based around a 6502 processor but the designers couldn't deliver. Last year Roland Perry took a PCB of the prototype to a Spanish meetup where user Deepbf photographed it.

How did it work, what were is capabilities and, above all, can it be fixed? The short answer is that it has a *lot* of problems but it's still interesting to see what they did.

https://bread80.com/2024/10/14/amstrad-cpc-revision-zero-can-it-be-fixed/
 
A PCB in similar shape to that of an Amstrad CPC464.

Prodatron

Quote from: Bread80 on 17:29, 14 October 24originally going to be based around a 6502 processor but the designers couldn't deliver.
They couldn't deliver? In my memories they switched to the Z80 because of Locomotive Software with their great Basic (best decision anyway :) ) Or wasn't Locomotive Software the main reason?

GRAPHICAL Z80 MULTITASKING OPERATING SYSTEM

GUNHED

IIRC the main reason was the lack of power. So they switched to Z80.
http://futureos.de --> Get the revolutionary FutureOS (Update: 2024.10.27)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

andycadley

Various reasons have been cited over the years, quite which comes first isn't entirely clear and probably never will be. The 6502 hardware clearly wasn't ready and needed an overhaul and they didn't have working system software either. Locomotive could give them a Z80 BASIC, which solved half the problem and the design wasn't that difficult to rework into a Z80 based machine, fixing the rest.

andycadley

Quote from: GUNHED on 23:24, 14 October 24IIRC the main reason was the lack of power. So they switched to Z80.
That I'd doubt, a 2Mhz 6502 (which is what they were probably aiming at) would've out performed the 4Mhz Z80.

GUNHED

Quote from: andycadley on 23:29, 14 October 24
Quote from: GUNHED on 23:24, 14 October 24IIRC the main reason was the lack of power. So they switched to Z80.
That I'd doubt, a 2Mhz 6502 (which is what they were probably aiming at) would've out performed the 4Mhz Z80.
Have a look at Driller and lots of other stuff please.  :)
http://futureos.de --> Get the revolutionary FutureOS (Update: 2024.10.27)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

lmimmfn

For curiosity reasons I would love to see a working CPC with a 6592. Not with basic/ROM but just a demo to see what would be different. 
Would the CRTC refresh be the same?
Would the first 256 bytes fast access of the 6502 make a difference?
6128 for the win!!!

lmimmfn

6128 for the win!!!

andycadley

Quote from: GUNHED on 23:35, 14 October 24Have a look at Driller and lots of other stuff please.  :)
On what? As far as I'm aware the only 6502 version is on the C64, which not only has a slower 1Mhz CPU but also an absolutely terrible layout for the display in its "bitmap" mode, making it probably the worst of all three of the major 8-bits for 3D graphics (since you can't easily use it's tile mode for that either).

GUNHED

Well, then show something where the 6502 (2 MHz) is quicker than the Z80 (4 MHz). Guess you'll have a hard time searching.  ;) :)
http://futureos.de --> Get the revolutionary FutureOS (Update: 2024.10.27)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

ZorrO

BBC Micro with 6502 2MHz have twice fast Basic than CPC.
CPC+PSX 4ever

andycadley

Yeah, on average the 6502 would be about 2.5 times faster at the same clock speed, but is typically clocked lower.

https://retrocomputing.stackexchange.com/questions/5748/comparing-raw-performance-of-the-z80-and-the-6502

Dubliner

Quote from: andycadley on 23:27, 14 October 24Various reasons have been cited over the years, quite which comes first isn't entirely clear and probably never will be. The 6502 hardware clearly wasn't ready and needed an overhaul and they didn't have working system software either. Locomotive could give them a Z80 BASIC, which solved half the problem and the design wasn't that difficult to rework into a Z80 based machine, fixing the rest.
Actually, we know what came first. The first (external) development team delivered zero software and that motherboard that is now known as Prototype 0. Roland Perry tried to make it work but it was obvious it was absolute garbage. Mark-Eric Jones also though it was little chance to make that Prototype 0 to work. Since it was needed to start from zero, they used the Z80 because Locomotive Software had already support and other reasons. Extract from my interview to MEJ:

What help did you have from Amstrad and the other subcontractors? We worked very closely with our friends at Locomotive software who developed the operating software for the CPC464.  We were also in regular contact with Roland Perry who was managing the project overall.
 
What is your opinion about using the Z80 processor instead of the 6502 that was originally planned? Did you have any influence in this design change? We chose the Z80 rather than the 6502 for two main reasons: 1) It had good support for DRAM (which we also used for some video display functionality in the Gate Array) and 2) Our friends at Locomotive software had much better support for the Z80.

Prodatron

Quote from: andycadley on 19:18, 15 October 24Yeah, on average the 6502 would be about 2.5 times faster at the same clock speed, but is typically clocked lower.

https://retrocomputing.stackexchange.com/questions/5748/comparing-raw-performance-of-the-z80-and-the-6502
Very old discussion. Even the Atari8 guys say, that a 4MHz Z80 may be faster than their 2MHz 6502 if coded in a good way.
Anyway this always depends on what you are doing.
For simple stuff the 6502 is probably faster.
For calculations, 16bit etc stuff, the Z80 just wins.
But the differences are not that big. What really sucks with the 6502 is the fixed 256byte stack:
You can't do neither highlevel languages nor preemptive multitasking in a good way, for both you have to use tricks etc.

GRAPHICAL Z80 MULTITASKING OPERATING SYSTEM

GUNHED

Quote from: ZorrO on 18:15, 15 October 24BBC Micro with 6502 2MHz have twice fast Basic than CPC.
Well, you think so? It ain't that simple. Have a look here:


http://futureos.de --> Get the revolutionary FutureOS (Update: 2024.10.27)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

andycadley

Sure there are lots of factors. The supporting hardware can make a massive difference (the C64 is way faster at printing text characters, because it only has to update a single byte to do it). And certain algorithms suit certain architectures better.

For some things the 6502 will need three to four times less cycles, for others the Z80 will nudge ahead (16-bit maths being a common one). And implementations of things like BASIC will make a massive swing (Sinclair BASIC is massively slower than Locomotive BASIC, even though both machines have similar speed Z80s).

But, on average the 2.5 rule is about right. And it would've fitted better in the CPC design, since it's bus access patterns would've avoided the slowdown the Z80 has to deal with because it's bus access is less predictable. Personally I'm glad they switched, because I prefer Z80 coding, but I'm not daft enough to ignore that the design was obviously a bit compromised by the change (a 2Mhz 6502 without slowdown might've been a bit more capable of shifting a 16K bitmap about, for example).

lmimmfn

There was a similar conversation regarding 6502 use on the speccy - https://www.sinclairzxworld.com/viewtopic.php?t=4929

Interesting regarding dram refresh and the 6502s limitations regarding I/O.
I would be interesting if the 6502 if used on the CPC would result in a higher or lower bus sync and therefore CPU clock frequency.
6128 for the win!!!

eto

Quote from: GUNHED on 23:02, 15 October 24Well, you think so? It ain't that simple. Have a look here:
Oh that video... I love how they basically over-weighted the only category, where the BBC was superior... I mean, comparing the available hardware expansions of a totally new system to a years old system - and giving one system 22 points and the other 5 - and then the BBC wins by 15 points.  :laugh:

Generally speaking, don't trust a benchmark you didn't write yourself ;-) As long as there is no standardized benchmark suite with clear rules about "optimising" you will never be able to give a clear answer. And even then you will have some people come up with "but if I use that particular optimisation, then it's different".

And in the end it doesn't matter anyway as real-world performance is relevant. And there - as we all know - the CPU performance is in most cases just partially relevant for the user experience.

Shaun M. Neary

Quote from: GUNHED on 23:35, 14 October 24
Quote from: andycadley on 23:29, 14 October 24
Quote from: GUNHED on 23:24, 14 October 24IIRC the main reason was the lack of power. So they switched to Z80.
That I'd doubt, a 2Mhz 6502 (which is what they were probably aiming at) would've out performed the 4Mhz Z80.
Have a look at Driller and lots of other stuff please.  :)
Provide better examples please.

Sorry but Freescape games on the Z80 were slow, sluggish piles of crap.
Currently playing on: 2xCPC464, 1xCPC6128, 1x464Plus, 1x6128Plus, 2xGX4000. M4 board, ZMem 1MB and still forever playing Bruce Lee.
No cheats, snapshots or emulation. I play my games as they're intended to be played. What about you?

dodogildo

How about this, as a valid comparison:

Stunt Car Racer on C64's 1 MHz. 6502 vs CPC's 4 MHz. Z80

:picard:

andycadley

Quote from: dodogildo on 16:27, 16 October 24How about this, as a valid comparison:

Stunt Car Racer on C64's 1 MHz. 6502 vs CPC's 4 MHz. Z80

:picard:
Which demonstrates how silly it is to try and use a full blown commercial product as if it were a CPU benchmark. Everything from the supporting hardware, skill of the coder and different compromises made to produce something commercially viable on different platforms has an influence.

HAL6128

Hey gents, aren't we too old for such kind of "length" comparisons?
Our beloved homies are as they are for 40 years... Everything else is sugar-coating. :P

...let's continue the thread of @Bread80
...proudly supported Schnapps Demo, Pentomino and NQ-Music-Disc with GFX

ajcasado

Would it be possible to have an expansion interface with a 6502 or compatible, similar to the Z80 ones that existed for the Commodore and BBC Micro? This would allow compiling code for both targets and comparing the results on the same hardware, and perhaps make it easier to port software for machines with the 6502 (I'm thinking of Maniac Mansion for the C64). A WDC W65C816S could be used.
CPC 664

Empiezas a envejecer cuando dejas de aprender.
You start to get old when you stop learning.

Bread80

Quote from: lmimmfn on 02:13, 16 October 24I would be interesting if the 6502 if used on the CPC would result in a higher or lower bus sync and therefore CPU clock frequency.
If I understand the 6502 correctly, it makes a memory request on every clock cycle (depending on the opcode, of course). So a 6502 running at 2MHz generates two memory requests per microsecond whereas the Z80 generates a maximum of one request per microsecond. The CPC also requires two memory accesses per microsecond for reading video data.

The CPC specs 4164-20 DRAMs. These require 330nS for a read or write cycle. The CPC also uses the optimised sequential CAS cycles to read the two video data bytes.

Using the same scheme on a 6502 would require you to pause it for half of each microsecond. So, even if you ran it at 2MHz you'd only get an effective 1MHz clock speed. You could get clever and not pause it when not accessing RAM (Ie. for ROM, I/O or cycles which don't access RAM) but it's still not great.

The BBC got around that issue by using faster DRAMs - 4816A-3. If I'm not mistaken these require about 230nS for a read and 285nS for a write.

You could also use 4164-12 DRAMs which are 230nS for a read or write cycle. That would allow one CPU and one video access per CPU cycle.

Bread80

Quote from: HAL6128 on 19:48, 16 October 24Hey gents, aren't we too old for such kind of "length" comparisons?
Our beloved homies are as they are for 40 years... Everything else is sugar-coating. :P

...let's continue the thread of @Bread80
My opinion on the 'which is faster' debate is as follows: If we're still arguing about it forty years later then there's clearly no definitive answer and, therefore, the entire subject is pointless.

As for the thread, I was expecting an interesting discussion about what's actually on the board :shrug:

Powered by SMFPacks Menu Editor Mod