Designing and building the KCC plus, a new, enhanced CPC6128 compatible computer

Started by Benedikt, 12:01, 12 May 24

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

Benedikt

This thread is about my recently started long-term project: The construction of a new, enhanced CPC6128 compatible computer that is loosely based on the schematics of the KC compact.

The rationale behind basing the new machine on the KC compact is that it managed to achieve a very high level of compatibility exclusively with standard components from that era.
There is therefore no need to slaughter a CPC for its gate array, nor is there any need to resort to spooky alien technology from the future, such as FPGAs or 32-bit microcontrollers.

My ideas for the for the system's overall specifications are that

  • Everything should feel like a well-balanced, natural evolution from the classic CPC product line
  • The system should be roughly twice as good in every way, possibly better

I therefore came up with the following goals

  • Between 256 KiB and 1024 KiB of RAM, ideally as a pair of SRAM chips
  • Two AY-2-8910 PSGs for additional polyphony and additional control lines, on-board Digiblaster
  • 16 bit data path for pixel generation and duplication of the relevant logic for twice the color depth
  • Bypassable EGA-like latch in the second RAM chip's data path to keep block fill/copy operations fast
  • At least one attribute mode, e.g. for colorful high-res pseudo text modes
  • The Plus-series' connectivity, but keep the KC compact's SCART port and bi-directional 8-bit printer port
  • Ideally some way to optionally double the CPU clock and/or FDC clock, if feasible
  • Internal IDE and Serial ports, if it fits
  • The CPC6128's form factor: System board should fit inside a German CPC6128 case
  • High quality keyboard with n-key rollover
  • Design for a laser-cut case, e.g. for a painted plywood case

To maximize the benefit for the broader CPC community, as many parts as possible should also be usable to fix or enhance existing CPCs.

The current state of affairs is that the keyboard assembly for the KCC plus is ready. It will get its own thread, because I reckon that it will be particularly useful for CPC users.

The next step is to design evaluation boards for various parts of the system, such as clock generation, audio, RAM, pixel generation, storage etc.
These will initially connect to a CPC and, where feasible, will be designed to be usable as CPC expansions.

Please share your thoughts!

cwpab

While I'm not among the potential customers for this kind of things, I love to follow the news on them as after all, they're pretty cool.

So a few months ago, I created a topic on this forum that can be very interesting to you, as it has a lot of ideas from fans like me and true experts:

Amstrad CPCnext: Would you buy one?

Also, it's great (and unusual) that you're "relatively new to the CPC world". Can you elaborate on that? I mean, you need to really like the CPC to create your project, but you apparently didn't have one in the 80s or 90s. What is exactly your story? What made you interested in Amstrad's machine? What is... the magic of the CPC? 8)

(As a general comment, the Amstrad-related scene is amazing these days: several mdoern games look like Amiga games, one single Spanish guy created a Sensible Soccer clone, a GTA clone and a mode-7 demo, two more Spanish guys have just created a point & click graphic adventure... and now someone "new to the CPC" wants to build a CPC Next... what does the CPC have?).

eto

I love the idea. I'm personally looking forward to the new keyboard. 

The expansions should best be compatibly with already existing hardware, like the additional sound chip could e.g. be compatible to the PlayCity expansion. 

Richard_Lloyd

Richard
CPC464, CPC6128, PCW8512, PCW10, BSA & NSP

Benedikt

Quote from: cwpab on 13:56, 12 May 24While I'm not among the potential customers for this kind of things, I love to follow the news on them as after all, they're pretty cool.
To clarify something that must have gotten lost when I wrote the initial post:
For both, bureaucratic and logistical reasons, I will not be selling any hardware, except for the occasional spare PCB, perhaps.
The goal is a publicly available, free design that anyone who can hold a soldering iron can build.
The goal is less that people admire my work, and more that people can replicate my work.

Quote from: cwpab on 13:56, 12 May 24Also, it's great (and unusual) that you're "relatively new to the CPC world". Can you elaborate on that? I mean, you need to really like the CPC to create your project, but you apparently didn't have one in the 80s or 90s. What is exactly your story? What made you interested in Amstrad's machine? What is... the magic of the CPC? 8)
My story is that I was not even around when any of the machines in question hit the market, but learned programing on the PC platform with a then decade-old IDE for MS-DOS.
What makes me interested in the CPC is its simplicity combined with its similarity to the original IBM PC platform, and ironically the absence of magic.
The engineers in Mühlhausen have shown that a CPC can essentially be built without any special components, as long as you can live with a somewhat larger chip count.

Quote from: eto on 14:39, 12 May 24I love the idea. I'm personally looking forward to the new keyboard.
I have to admit that I still have not made use of your second pair of adapter PCBs, but we will get there. :)

Quote from: eto on 14:39, 12 May 24The expansions should best be compatibly with already existing hardware, like the additional sound chip could e.g. be compatible to the PlayCity expansion.
That is the plan, but admittedly not in the case of the PlayCity expansion:

  • The first 320 KiB of RAM will be Dk'Tronics compatible, the first 576 KiB Dobbertin compatible, the full 1024 KiB will use RAM7's technique
  • The DAC will be a Digiblaster compatible Bourns SIL R2R resistor network
  • The AY-3-8910 PSGs will use the canonical multi-PSG addressing described in the data sheet, using external XOR gates to imitate the mask-programmed chip addresses
  • The RTC, if included, will be Dobbertin compatible, because only a single "phantom clock" chip is needed
  • The Serial Port, if included, will be Amstrad compatible
  • The IDE interface, if included, will be compatible with Yarek's IDE8255, because of that design's simplicity
  • The 8-bit bidirectional parallel port will be KC compact compatible, the 7-bit output Amstrad compatible
  • The expansion port itself will use the familiar 50-pin micro ribbon connector, i.e. no obscure Robotron part

McArti0

CPC 6128, Whole 6128 and Only 6128, with .....
NewPAL v3 for use all 128kB RAM by CRTC as VRAM
TYPICAL :) TV Funai 22FL532/10 with VGA-RGB-in.

Benedikt

Quote from: McArti0 on 22:13, 12 May 24and still only 64kB for CRTC?
Yes. The plan is to give the CRTC an unmodified address space of 64 KiB.
But I also plan to give the pixel generators a 16 bit wide data path to a pair of 64 KiB pages in RAM, which means that the total size of the frame buffer will be up to 128 KiB.
A 128 KiB frame buffer should be sufficient for a well-balanced CPC-like system without an intelligent GPU.
For instance, an interlaced 4-color mode with 640x400 pixels would use 64000 bytes and expanding it to 832x576 pixels would still only fill 119808 bytes and leave 11 KiB free.

McArti0

CPC 6128, Whole 6128 and Only 6128, with .....
NewPAL v3 for use all 128kB RAM by CRTC as VRAM
TYPICAL :) TV Funai 22FL532/10 with VGA-RGB-in.

Bread80

This sounds like a fascinating project.

Using SRAM in an Amstrad is non-straightforward due to timing issues, but it's not hard to fix. I haven't had a chance yet to publish any details of how I did it, but feel free to ask.

Also, if there's anything in my projects that's of use you're welcome to them. https://github.com/Bread80 

The CPC Modular repository is not up to date but may well be useful. I created the project to break out the CPC into parts which I could work on separately. I now have a functioning backplane which breaks out almost all the standard Amstrad signal lines (or they could be repurposed). I'm planning a new version which fixes some layout issues.

Benedikt

I have uploaded the keyboard design to GitHub and created a new thread for discussions related to the keyboard.

Quote from: McArti0 on 22:54, 12 May 24@Benedikt
and will it be possible to display something like this?

https://www.cpcwiki.eu/forum/index.php?msg=215472
The best answer I can give is that if the KC compact can do it, the KCC plus will be able to do it.

Quote from: Bread80 on 12:49, 13 May 24Using SRAM in an Amstrad is non-straightforward due to timing issues, but it's not hard to fix. I haven't had a chance yet to publish any details of how I did it, but feel free to ask.
Hopefully the absence of Amstrad's gate array makes this one aspect slightly easier. We will see. But thank you for pointing it out.

Quote from: Bread80 on 12:49, 13 May 24Also, if there's anything in my projects that's of use you're welcome to them. https://github.com/Bread80 

The CPC Modular repository is not up to date but may well be useful. I created the project to break out the CPC into parts which I could work on separately. I now have a functioning backplane which breaks out almost all the standard Amstrad signal lines (or they could be repurposed). I'm planning a new version which fixes some layout issues.
Sounds interesting. A bunch of them will definitely end up in my bookmarks.

Bryce

Hi Benedikt,
      some work in this direction has been done in the past. I know I've seen details of a modern KC Compact design using all western 74 Series IC's, complete with a PCB layout. This could save you a lot of the initial groundwork. Maybe someone here knows where it can be found. If not, I can check my archives too.

Bryce.

Benedikt

Quote from: Bryce on 12:18, 14 May 24some work in this direction has been done in the past. I know I've seen details of a modern KC Compact design using all western 74 Series IC's, complete with a PCB layout. This could save you a lot of the initial groundwork. Maybe someone here knows where it can be found. If not, I can check my archives too.
I am only aware of a modern redesign of the expansion unit that contains the floppy disk controller and the upper 64 KiB of RAM.
If there is a redesign of the system board, too, that could indeed be interesting.

zhulien


SerErris

Yes there is a commercial available GA alternative. But Benedicts approach is to use "old" 80s technology to achieve the same instead of a microcontroller.

Building the GA in TTL logic like the KC compact did will overcome this topic. 
Proud owner of 2 Schneider CPC 464, 1 Schneider CPC 6128, GT65 and lots of books
Still learning all the details on how things work.

Bryce

Quote from: Benedikt on 19:27, 14 May 24
Quote from: Bryce on 12:18, 14 May 24some work in this direction has been done in the past. I know I've seen details of a modern KC Compact design using all western 74 Series IC's, complete with a PCB layout. This could save you a lot of the initial groundwork. Maybe someone here knows where it can be found. If not, I can check my archives too.
I am only aware of a modern redesign of the expansion unit that contains the floppy disk controller and the upper 64 KiB of RAM.
If there is a redesign of the system board, too, that could indeed be interesting.

You're right. I was mixing it up with the Aleste 520 project. :(

Bryce.

McArti0

necessarily in the CPC6512 style, i.e. with 41256-70 (or 44256)
CPC 6128, Whole 6128 and Only 6128, with .....
NewPAL v3 for use all 128kB RAM by CRTC as VRAM
TYPICAL :) TV Funai 22FL532/10 with VGA-RGB-in.

Benedikt

Quote from: SerErris on 12:16, 18 May 24Building the GA in TTL logic like the KC compact did will overcome this topic.
And it makes pixel generation (almost) trivially expandable in some ways.

For instance, I would like to give the machine a 256 color hardware palette, and perhaps the possibility to select several variants of that hardware palette.
The KC compact's circuitry can be trivially expanded to 64 colors – it uses two bits per primary color – and most of the pixel generation data path is eight bits wide, already.

Since the KC compact's design uses SRAM chips for the palette entries, we could also add a line counter and implement separate palettes per scan line.
The rationale is that the smallest "modern" parallel SRAM chips have 8 KiB, anyway, and only using the first 16 bytes of 8 KiB would be a huge wasted opportunity.

The addition of video modes with doubled bit depth will be more involved, because the data path to the system RAM has to be widened to 16 bit, but the actual pixel generation should be simple.

All of the above would result in e.g. a "mode 1" variant with 320x200 pixels and 256 colors on screen, namely with a 16 color palette per scan line.
A true 256 color mode would also be possible, namely as "mode 0" that uses two RAM pages in parallel.

I also really want to squeeze in an attribute mode for colorful high-res "text modes", ideally with a backwards compatible RAM page for 1 bpp graphics and another RAM page for color attributes.
We will see how well that integrates with the rest.

Quote from: McArti0 on 18:49, 18 May 24necessarily in the CPC6512 style, i.e. with 41256-70 (or 44256)
A pair of big SRAM chips sounds more practical, these days.

McArti0

Quote from: Benedikt on 20:04, 18 May 24A pair of big SRAM chips sounds more practical, these days.
What I mean more is two banks of internal memory larger than 64kB
CPC 6128, Whole 6128 and Only 6128, with .....
NewPAL v3 for use all 128kB RAM by CRTC as VRAM
TYPICAL :) TV Funai 22FL532/10 with VGA-RGB-in.

GUNHED

A new KCc - great idea - please implement RAM configuration &C3 like it exists on CPC6128 computers. All 'RAM expansions' before were not made by Amstrad, so they lack the &C3 feature. That's fine for games and simple stuff, but not for serious software.  :)

And for ports: Please use these reliable Centronics connectors. PCB just suxx, because of its instability.
http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

Benedikt

Quote from: GUNHED on 17:09, 21 May 24A new KCc - great idea - please implement RAM configuration &C3 like it exists on CPC6128 computers. All 'RAM expansions' before were not made by Amstrad, so they lack the &C3 feature. That's fine for games and simple stuff, but not for serious software.  :)
Since the KCc, while modeled after the CPC6128, only had 64 KiB on its system board and the remaining 64 KiB in its external floppy disk controller, I am going to use an ATF16V8 with known-working configuration for RAM banking, i.e. copy this aspect of the CPC6128's design.

Quote from: GUNHED on 17:09, 21 May 24And for ports: Please use these reliable Centronics connectors. PCB just suxx, because of its instability.
As mentioned before, the expansion port will have exactly that 50-pin micro ribbon connector, but I will use a DB25 connector for the printer port.
If the FDC stays on the system board at all, there will only be an IDC pin header for it, because the position where the CPC6128 has its external floppy disk drive connector will already be occupied by the SCART socket.
However, the video logic will need an awful lot of space and has to be on the system board. I might therefore have to kick the FDC off the system board and put it in a KCc-like expansion.
On the bright side, a cartridge port – or a pin header for it – will then probably fit on the system board.
There is one alternative though, namely to switch to SMD logic to squeeze as much functionality as possible on the system board itself.

McArti0

Quote from: Benedikt on 18:03, 21 May 24I am going to use an ATF16V8 with known-working configuration for RAM banking, i.e. copy this aspect of the CPC6128's design.
But PAL produces CAS0, CAS1 signals for two parts of RAM. If you want to read 16bit from two banks, the CAS0,1 signals must be modified.
CPC 6128, Whole 6128 and Only 6128, with .....
NewPAL v3 for use all 128kB RAM by CRTC as VRAM
TYPICAL :) TV Funai 22FL532/10 with VGA-RGB-in.

GUNHED

Yes, the modern printer port is a good idea of course.  :) :) :)

Maybe some Mother MX4 slots? If space available on PCB?
http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

Benedikt

Quote from: McArti0 on Yesterday at 10:06
Quote from: Benedikt on 18:03, 21 May 24I am going to use an ATF16V8 with known-working configuration for RAM banking, i.e. copy this aspect of the CPC6128's design.
But PAL produces CAS0, CAS1 signals for two parts of RAM. If you want to read 16bit from two banks, the CAS0,1 signals must be modified.

Good point!

Quote from: GUNHED on Yesterday at 16:49Yes, the modern printer port is a good idea of course.  :) :) :)

Maybe some Mother MX4 slots? If space available on PCB?
The "modern" printer port... :laugh:
Both, the KCc and the 6128 Plus had DB25, already.

My current projection for the amount of space left on the system board is roughly -50%, so... no. ::)

BSC

Quote from: Benedikt on 20:51, 12 May 24The goal is a publicly available, free design that anyone who can hold a soldering iron can build.
That sounds like a really cool DIY project for me and Junior :)
** My SID player/tracker AYAY Kaeppttn! on github **  Some CPC music and experiments ** Other music ** More music on scenestream (former nectarine) ** Some shaders ** Some Soundtrakker tunes ** Some tunes in Javascript

My hardware: ** Schneider CPC 464 with colour screen, 64k extension, 3" and 5,25 drives and more ** Amstrad CPC 6128 with M4 board, GreaseWeazle.

Powered by SMFPacks Menu Editor Mod