avatar_TFM

The Future-CPC# - CPC reborn - this is dedicated to the new CPC computer series.

Started by TFM, 18:01, 29 March 12

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

TotO

Nice work in progress! :)
Joystick pin5 look to not be wired.... It's fire 3 or middle mouse button on CPC old.
(may be, missing common lines too)
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

steve

Quote from: ralferoo on 20:03, 02 April 12
Well, I seem to be going in a completely different direction to your vision, but anyway, here's a picture of what I've been working on for the last couple of weeks... ;)


http://ranulf.net/homeboard28.png

I'm about to get a couple of boards made up to test, I'll obviously post pictures here when it's all up and running. :)

That is excellent, what are the specs? if you can attach a CPC keyboard, I would use it to replace the mainboard in a '464, although if it is the same as a '6128 then I have plenty of them already.

ralferoo

The specs are still a bit in-flux at the moment as it'll largely be a case of what I manage to get it to do. Basically, I "needed" to build my own board because I ran out of gates on my Actel evaluation board. On that, in 250K gates I had equivalent to a 464 and the off the FPGA, I had a 512KB memory chip providing 256KB RAM and 8 ROMs. Sadly, I ran out of gates before I could do a disk interface or any "plus" features. The gate counts are a bit lower than some of the other CPC implementations on FPGA because I decided to do it all myself apart from the T80 core and I was treating this project as a learning exercise in how to write efficient VHDL.

This board has 400K gate Xilinx FPGA, a SCART socket, an SD socket on the underside, 2 seperately wired joystick ports (so no clash), 2MB flash and 512KB RAM, tape in, 14 GPIO pins, 12 IO pins wired directly between FPGA and AVR and an additional 4 FPGA and 4 AVR pins that I thought could be jumpered together together to allow AVR access to the SD card or provide a header to a different SD card socket or just used as more GPIO. Additionally, as I'm still experimenting, the AVR clock can be jumpered to run from an FPGA output and vice-versa.

Connecting a standard CPC keyboard directly would be possible because there are just about enough GPIO pins available, but I'll probably make a breakout board that somehow multiplexes the 10+8 keyboard lines to the 8 GPIO header next to the joystick ports. I must admit, putting this thing inside a real CPC keyboard is something I'd like to do too... :)

Regarding the pin 5 (and also pin 9) on the joystick ports - I thought about what to do about these, whether to make them IO, put 3.3V out on one, etc but I decided it was best to just to stick to Atari joystick with second button. I don't think I've ever seen a 3 button joystick. The only thing I could think of would be the AMX mouse, but that'd probably require 5V and level converting all the lines, so it'd be easier just to implement mouse via the PS/2 socket (and maybe do a second PS/2 socket on a later version of the board).

In terms of features I intend to use the AVR for are: JTAG programming of FPGA PROM, JTAG programming of FPGA (for development), serial port to CPC and a PC side debugger.

Despite it's CPC bias, I guess it could also be used as a generic FPGA development board that just happens to have 2 joystick ports, PS/2 keyboard and a SCART socket with 3x 2 bit DAC.

In terms of CPC "hardware" features I want to add, the 2 main features I want are hardware emulation of the CTM monitor so that horizontal smooth scrolling works on LCD TVs, and saving the last frame to memory so that the display can be "paused" when debugging, like the software emulators do. Basically, I'd like it to be as nice to develop on this hardware as it is with a software emulator. Additionally, I believe I can get the SPI chip running quickly enough to to random access, which would allow 128 ROMs.

I was also working on a simple software flash filesystem that operated like |DISC, although I put that on hold while I designed the PCB.

So, all in all, it's a bit ambitious... :)

TFM

TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

Sykobee (Briggsy)

Whilst I think the best route is based around an FPGA implementation like the FPGAArcade, the best bet for anyone creating a "CPC 2012" is to just get on with it and not get too distracted by forums where every design concept is turned inside-out until you feel it isn't worthwhile continuing!


It would be neat to see an eZ80 system coupled to an FPGA that implements the CPC Plus specification along with whatever else is needed to make it become an 8-bit super-CPC/demo target for 2012.


The only thoughts I have is "would you design the CPC the way it was designed?" - for example, the display memory scheme, etc. What made those 8-bit micros interesting was that they made the most of very limited resources and limited transistor counts, and that led to very quirky hardware. Annoyingly the C64 VIC-II was well designed overall, except they forgot to include decent colours / a colour palette, and most of the programmability of the 6845.

ralferoo

Quote from: Briggsy on 00:46, 08 April 12
The only thoughts I have is "would you design the CPC the way it was designed?" - for example, the display memory scheme, etc. What made those 8-bit micros interesting was that they made the most of very limited resources and limited transistor counts, and that led to very quirky hardware. Annoyingly the C64 VIC-II was well designed overall, except they forgot to include decent colours / a colour palette, and most of the programmability of the 6845.
In a word, no. Well, maybe.

There are a lot of things they've done very well, but it's clear that Amstrad's really liked the 6502 and designed for that. The memory contention on the main RAM is every cycle, even though ROM access wouldn't contend the the databus in the current CPC design. Additionally, it'd require just a few gates to avoid contention during the border. Of course, that'd be a double edged sword because cycle counting would be a lot more complicated than now.

More significantly, this contention affects IO really badly and there's simply no reason for this at all as video memory access happens in T1 and T3 and IO data is sampled in T4. This extra cycle delay then forces an extra 3 cycles of wait, making IO really, really slow. And choosing to decode high bits in preference to the low bits makes most of the IO instructions significantly less useful. The MSX has almost the same hardware, but the designers seem to have mostly made better choices.

But generally, everything else is pretty well designed - the emphasis is on quality rather than cheap, as compared to the Speccy for instance.

qbert

My duty is obviously to acclaim this colossal project.


My only recommandation will be to stay humble and realistic in the realization and proceed step by step.
The most important feature to my sense is obviously full compatibility with CPC software, even if a part of emulation is needed. After all, history has proved with the Macintosh or the PC that new hardware could easily add a Virtual Machine over a modern OS to gain full compatibility with old software, especially taking charge of memory protection. On the other hand, the Commodore 128 is a concrete demonstration of full hardware compatibility (having different boot modes and a real switch for CPU speed).

TFM

I pretty much agree with the two last comments (and good the get ideas about CPU cycles btw.). But I don't want to have a virtual machine - for one reason: We do have that already, called CPC emulators ;-)

This project is about real hardware. And we want one mode compatible as much as possible to the CPC. And a second mode, still compatible to most software, but enhanced in speed and features.

From the hardware side: We want to provide the current CPC expansions as internal part of the CPC#
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

Badstarr

I really like the idea of this project! I have, for a long time, dreamed of what a CPC would be like if Amstrad had continued to develop the hardware and it had evolved into a contemporary machine. CPCNg looked quite interesting but I guess it got nowhere in the end which is a shame.


For what it's worth I feel that we should keep in mind the original CPC design philosophy. Each generation (In theory at least) was backwards compatible with the previous one, although in some cases bugs in the design were ironed out causing some programs to have problems with new hardware revisions where developers had used the bug in a creative, or as Amstrad sometimes claimed "lazy" way.


If we look at the historical road map of the CPC, the designers simplified the design and for example, combined discrete ICs into the Plus ASIC. We can see that Amstrad took advantage of new technologies as they became available (or more likely affordable). Therefore, it would seem fairly reasonable to conclude that if the CPC had continued to evolve, it would have eventually become, more or less, a system on a chip. So maybe a FPGA would be an acceptable choice for a sooped up Gate Array etc. For me though a real CPU is still needed. The eZ80 would be a perfect choice as this would likely be what would have been soldered into a modern CPC. This would keep in line with the current evolutionary status of the CPC, a discrete CPU and ASIC (FPGA in our case) incorporating more of the logic ICs etc.


The advantage of using an FPGA as I see it is that the specification of the CPC, its colour capability, sound etc can be improved while retaining compatibility much like Amstrad did with the Plus machines. Of course, the machine should be able to use original hardware, tape loading support, original expansion compatibility via an adaptor if need be as well as new, modern hardware expansions although I guess this could get a little complicated, so maybe some sort of USB implementation instead?


What would the new generation of CPC look like? Maybe we should start drawing up some mockups?


Should this project actually be a full production product or a schematic, a DIY kit?


I hope this project gains some genuine traction, it would be great to buy/build a genuine contemporary CPC! Heck, if it can supplant my Mac as far as email, surfing and word processing is concerned, that would be great! Then I can use my Mac for the creative stuff and my CPC for games and work. Great stuff!  ;D   
Proud owner of 464 GTM64 6128 GTM65, GX4128 and a 464/6128 Plus Hybrid a 20 year long ambition realised! :-)

TFM

TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

robcfg


TotO

Quote from: TFM/FS on 05:53, 10 April 12eZ80
I ear that CPU is not 100% Z80 compatible.
Is possible to reach that by doing a "wraper" ?

Else, a standard Z80@16MHz exist and was already a great improvement.
I will prefer that.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

Badstarr

A eZ80 powered PC. Yes you could say that, but equally you could say that the CPC is a Z80 powered PC designed and built in the 1980s. Its a philosophical question really, much like the debate about modern Macintosh Computers now that they use Intel based hardware.


(These are just my thoughts and I will digress a little here but there is a point...) I myself liked the fact that Macs used to use PowerPC CPUs as it was a distinction from the homogenous x86 market which for me symbolised the grip that Microsoft had over the industry at the time which seems to have been successfully challenged (to an extent) now by the popularity of Linux based netbooks and the trendiness of Apple products forcing Microsoft to up their game.


I wasn't sure I would be happy using a Mac with an Intel based CPU but I accepted the change and you know what? It's still a Mac! I still think of it as being different to a generic PC. Why? it's the OS and the physical design/appearance of the hardware. Like Lord Sugar said about the GX4000 (ok yes it was doomed) the end user doesn't care if it runs on steam as long as the user experience hits the mark.


If we can design a system that you switch on and it feels no different to switching on a classic CPC ie you get the blue and yellow screen, you can load classic CPC disks and tapes, but you fire up the new FutureCPC OS with 16 bit graphics, internet access etc you can do your word processing etc. Then the way I see it, it's still a CPC, all that has happened is that the features have been extended.


I think there are quite a few of us who would like to have a modern CPC to use for various every day tasks as well as the usual retro stuff. So, if the architecture of the machine is based on the original CPC with some big improvements and modern day hardware I think we could legitimately think of it as a CPC.
Proud owner of 464 GTM64 6128 GTM65, GX4128 and a 464/6128 Plus Hybrid a 20 year long ambition realised! :-)

robcfg

I think that if you manage to get better graphics and better sound it wouldn't feel like a CPC anymore.

TotO

Quote from: robcfg on 15:12, 10 April 12
I think that if you manage to get better graphics and better sound it wouldn't feel like a CPC anymore.
Sure, there is a balance. Some things can be improved, but not too much.
The CPC have it's own identity, and the line to not cross is very close.

It's why I speak about "the dreamed CPC in 80s" and not today.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

robcfg

Maybe something along the lines of an equivalent of the TurboR for the MSX computers would be the very best of a CPC.

Badstarr

I agree, we wouldn't want to take it too far, however, I think we should assume that various upgrades would have been bolted onto the CPC over the years to keep it competitive if it had been evolved in the way the Amiga did for example. The core architecture remains more or less the same but more beefed up. I like to think of it this way; if the CPC platform had not been abandoned due to the 16bit/32bit/PC market taking off, what would the CPC be like in a parallel dimension where the 16bits didn't kill it off.


The default mode of a new CPC in my opinion should be the Classic CPC, it should be very much like a Super Plus CPC where the snazzy new features don't reveal themselves until a code unlocks them and makes them available, how the hardware interacts should be based on the original CPC/Plus methods unless there is a reason to depart from them to make the new stuff work, but this should only be in "Super Plus Mode". I think this would satisfy the concept of an uber CPC dreamed up in the 80s. Kinda like the SamCoupe was thought of as a Super Spectrum.


The Luddite in me would be over the moon if I could use a CPC for modern tasks, it would be my 'go to' machine unless I wanted to do some music production and this would be a better use of the CPU in my Mac, it just seems a little wasteful sometimes to have all that power (and power consumption) for a mundane tasks like word processing. Yes I could use a typewriter or 486sx but I would rather use a CPC with some mod cons.
Proud owner of 464 GTM64 6128 GTM65, GX4128 and a 464/6128 Plus Hybrid a 20 year long ambition realised! :-)

rpalmer

There is already a Z80 which can run at 20 MHz, so all we need is some way of making use of its capability to run at that speed so that the modern CPC can do more while still being backwards compatible with existing software.

Also I would like to see a better memory management where we could have 128 Mb (or more).

Next it would be nice if the graphics system could increase the number of available colours from the 27 (to say 256) via a lookup table attached to the advanced VGA chip and the VSYNC signal for each scan line (maybe this is how the ASIC achieves it?)

rpalmer

Badstarr

128 mb of RAM that sure would be nice! I would say that it would probably take a hell of a bank switching scheme to use it. Could a Z80 actually address that amount? I guess a FPGA could take care of that and maybe fill up the standard banks like a cache system and that feature could be switched off in standard mode.
Proud owner of 464 GTM64 6128 GTM65, GX4128 and a 464/6128 Plus Hybrid a 20 year long ambition realised! :-)

TFM

The Z80 can address 64 KB.

The eZ80 can address 16 MB in ADL mode.

For more a simple bank switching logic would do the job.


For the enhanced mode I suggest a kind of bank swtiching similar to the Z280 CPU, which allows to bank in RAM between defined addresses - and so it's quite flexible.

However, if you want that much RAM then one component is really REALLY needed:  A memory DMA processor which is capable of transferring data without using CPU cycles. Well, Zilog does not build the Z80-DMA any longer, but there are alternatives. Finally a DMA will add another level of complexity, that should be considered.
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

steve

Getting the z80 to address 16 MB should be quite simple, a 74LS612 was used in the Powertran Cortex to expand the 64KB address space to 1MB, I am going to have to read up on this device to see if it can be used to give a 16 MB address space, alternatively we may be able to use a microcontroller to handle the page management and switching.

As for DMA, we could use a Z180 as a dedicated intelligent DMA controller with a list of tasks to perform, it could handle serial and possibly network ports as well as disk transfers, screen blitting and DMA sound.

TotO

Don't forget that a CPU runing with high frequency, can run more as low one...
A eZ80@200MHz will never work if clocked at 4MHz, for compatibility. Wou will have to "emulate" the old CPU.

Like ColdFire for 68000, you will get more problems that you will solve.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

TFM

Well, that will lead us ultimately to the question if we want a system with 2 cpu's or if we are willing to accept some issues in full compatibility.

And if I think about it in some detail, then there rises up a third possibility: This would be an expansion card for the CPC. The original CPC will run in 100% compatibility mode (since it IS a CPC), but the card has a (for example) eZ80 CPU. Not the problem here is that both CPUs should be able to access the same RAM and ROM (which is a problem due to different cpu speeds). So back to a single eZ80 system?

Maybe we have to cope with the situation, that the CPC# will not be 100% CPC compatible. But is it needed? We all have CPCs and we can run demos on the real CPC. So maybe a more general level of compatibility is ok?

About DMA:
IMHO I wouldn't use a Z180 for DMA. Too slow, and it suxx as co-cpu, since it lacks a fair amount of undocumented opcodes (and all illlegals). IMHO a pure DMA chip would be better.
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

TotO

You already can build a eZ80 board with 256MB of memory for the CPC EXT slot, and you got it. :D
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

TFM

Well, personally I'm fine with 16 MB. But I don't mind if people want more, it's sooo cheap nowadays.

Memory thought, it's not everything. Also Video-, Sound-, and storage capabilities are of interrest.

And in a smart system the beloved (e)Z80 just has to tell the DMA device to directly transfer data from hard-disc or SD-card to the MP3 device. Or even to the Video-card / Video-RAM(better!). So Sound and Video-streaming is doable without bothering the CPU much.

We don't want to rebuilt the PC. We want to create a smarter system.
TFM of FutureSoft
Also visit the CPC and Plus users favorite OS: FutureOS - The Revolution on CPC6128 and 6128Plus

Powered by SMFPacks Menu Editor Mod