Hello!

c4ooo, adekto and I are working on a Z80 computer kit.

It will have:
- 128KB of static RAM,
- 10 MHz CMOS Z80 (Z84C0010),
- VGA (probably 800x600; 3 graphic modes [text, graphic using sprites and tilemaps and buffered]),
- mono audio,
- PS/2 (for connecting a keyboard; active and passive USB to PS/2 converters are available),
- SD card (SD card will be used to load the kernel into RAM, before the Z80 boots; the Z80 can also request files from the SD card to be copied into RAM and the other way round),
- Serial port (interface is 3.3v or 5V, UART; you can use a USB serial adapter if you want),
- GPIO (4 pins, 3.3v or 5v),
- HDMI (adding about 15 to the overall price; optional).

The Z80 is connected to a system management controller that we call PXA. It runs at 80 MHz, has 8 cores, 32 KB of builtin memory and is a 32-bit architecture. It will have 32-128 KB of flash for the firmware and can be programmed over the serial port. The PXA is connected with the Z80 through a 15 MHz interface and can be mapped into address space. It handles all IO, interfaces and the initial bootstrapping and has full control over the Z80 (interrupts, WAIT, bus and address control, etc.).
The PXA can be programmed to emulate many Z80 peripherals and provide an hardware emulator for many platforms, possibly even the TI-83+. Custom programs can be written for the PXA in C or in SPIN. The Z80 can be programmed in assembly, C or any other language you can come up with.
One cool feature is, that it has no ROM and the kernel is loaded into ram before the Z80 boots. Also can the frequency of the Z80 be adjusted on the fly up to 0.1 MHz accuracy (to a maximum of 10 MHz).

We will probably also do a case for it that will be made out of slotted together black, laser cut acrylic.
Here is an older drawing of it:


The official website is located here: http://zpx-128.ninjabyte.eu/

I hope you like this project and I appreciate and help. Currently we are working on the schematics, a breadboard setup, and the interface between the PXA and the Z80.
How much do you think this will end up costing?
slick1015 wrote:
How much do you think this will end up costing?

The bare PCB with all parts will be max. 50-60.
It depends on how many we sell. We need to sell 10 minimum.
If we sell 50, it's already 15 cheaper.
Thanks for sharing this with us, Muessigb! I'm afraid that it looks like the drawing image isn't visible for some reason? I'm definitely very interested in this; do you know how much shipping to the US would add to the price? A few questions:
1) How much do you anticipate the kit will be with the laser-cut acrylic case? Will you need a minimum number of people ordering the case for that part to be made?
2) How do you control the frequency in such precise increments?
3) What are you using for the video output?
KermMartian wrote:
Thanks for sharing this with us, Muessigb! I'm afraid that it looks like the drawing image isn't visible for some reason? I'm definitely very interested in this; do you know how much shipping to the US would add to the price? A few questions:
1) How much do you anticipate the kit will be with the laser-cut acrylic case? Will you need a minimum number of people ordering the case for that part to be made?
2) How do you control the frequency in such precise increments?
3) What are you using for the video output?

Thanks for letting me know; I just fixed it.

Yes, I will indeed ship to the US. I just calculated the price to be 19 for shipping to any address within the USA.

1) I guess the case can be made starting at 5 (unconfirmed) units, though more should reflect on the price. We need to sell at least 10 mainboards to be able to make it (discount wise).
2) An I/O register, that writing an unsigned byte (the frequency in MHz multiplied by 10 - so you can specify the first digit after the comma) to will instantly change the frequency to the specified one.
In a similar way, the paging is handled too.
3) The VGA video is generated by the PXA in hardware. It will probably be a native resolution of 800x600 px @ 64 colors (though the drawing modes will all only support 16 colors).
As the PXA is managing all peripherals, the clock and the RAM, composite video could be used too, though this would require you guys to do a small mod to the PCB and a lot of changes to the PXA's firmware. We all know that VGA is a lot better in quality than PAL / NTSC Wink
The PXA that handles all is an octacore, 32 bit, 80 MHz P8X32A-D40 in DIP form.

If you want to know the exact specs, soon head over to our project page, where I will provide a chart Smile
Thank you for the clarifications, Muessigb! For (2), I was more asking what is setting the frequency. A crystal with a variable divider, for instance? I'd imagine that something like that would be very difficult to get 0..0.1..10 MHz out of, hence the question. And wow, 8 cores for peripherals is very exciting. Two additional questions that occurred to me while we talked about the project:
1) What inspired you to do this project? I'm also aiming that question at c4ooo and adekto.
2) I don't care a great deal one way or the other, as I'll be equally enthusiastic about the project either way, but are you planning to make this open hardware and publish the plans freely?
KermMartian wrote:
Thank you for the clarifications, Muessigb! For (2), I was more asking what is setting the frequency. A crystal with a variable divider, for instance? I'd imagine that something like that would be very difficult to get 0..0.1..10 MHz out of, hence the question. And wow, 8 cores for peripherals is very exciting. Two additional questions that occurred to me while we talked about the project:
1) What inspired you to do this project? I'm also aiming that question at c4ooo and adekto.
2) I don't care a great deal one way or the other, as I'll be equally enthusiastic about the project either way, but are you planning to make this open hardware and publish the plans freely?


Ah, the frequency is derived from the 80 MHz of the PXA (the 80 MHz are phase looped from the 5 MHz crystal). The Z80 will run at up to 10 MHz but it can be replaced by a 20 MHz one (by you guys; I will only ship a 10 MHz one and as I will include sockets for all Chips and the 20 MHz version is pin compatible, this should be no big deal).

1) I always wanted to build a Z80 machine myself, so I bought parts over the last year and a half. Finally I ended up wanting to make a PCB but I figured that others would maybe like such a project too, especially given the capabilities of the PXA that can also emulate legacy Z80 hardware.

2) In any case will I publish the schematics and possibly the PCB layout though I am not entirely sure about the PCB. I might just show it to a selected group to help me find misstakes.
About the software, c4ooo has to decide. For the PXA software, I plan doing it under the New 3 clause BSD licence.
/me wants to be bugged about this!

I didn't see any projected size of device; how big will this end up being? Will this come with a barebones kernel the user can add to? How will this be powered? also, with a resolution that high, how will anything be able to fit in ram (or does this device have seperate video ram)?
Luxen wrote:
/me wants to be bugged about this!

I didn't see any projected size of device; how big will this end up being? Will this come with a barebones kernel the user can add to? How will this be powered? also, with a resolution that high, how will anything be able to fit in ram (or does this device have seperate video ram)?

We don't know about the size yet, but I assume about 180x120mm. It will come with a small kernel and command line OS interface and maybe even with a Z80 assembler right in the kernel.
Power is supplied using a 5v power adapter that goes into a barrel jack connector on the back. The resolution is only the native resolution. Actual modes differ. The PXA has 16 KB of video RAM.

I just designed the external interface. It will have I2C, UART, 3.3v, GND and 3 gpio pins that can be used individually. The connector used is a female DB9 jack on the back.
Muessigb wrote:
Luxen wrote:
/me wants to be bugged about this!

I didn't see any projected size of device; how big will this end up being? Will this come with a barebones kernel the user can add to? How will this be powered? also, with a resolution that high, how will anything be able to fit in ram (or does this device have seperate video ram)?

We don't know about the size yet, but I assume about 180x120mm. It will come with a small kernel and command line OS interface and maybe even with a Z80 assembler right in the kernel.
Power is supplied using a 5v power adapter that goes into a barrel jack connector on the back. The resolution is only the native resolution. Actual modes differ. The PXA has 16 KB of video RAM.

I just designed the external interface. It will have I2C, UART, 3.3v, GND and 3 gpio pins that can be used individually. The connector used is a female DB9 jack on the back.


Will there also be headers available if we want to use those instead of some adapter?
Ivoah wrote:
Muessigb wrote:
Luxen wrote:
/me wants to be bugged about this!

I didn't see any projected size of device; how big will this end up being? Will this come with a barebones kernel the user can add to? How will this be powered? also, with a resolution that high, how will anything be able to fit in ram (or does this device have seperate video ram)?

We don't know about the size yet, but I assume about 180x120mm. It will come with a small kernel and command line OS interface and maybe even with a Z80 assembler right in the kernel.
Power is supplied using a 5v power adapter that goes into a barrel jack connector on the back. The resolution is only the native resolution. Actual modes differ. The PXA has 16 KB of video RAM.

I just designed the external interface. It will have I2C, UART, 3.3v, GND and 3 gpio pins that can be used individually. The connector used is a female DB9 jack on the back.


Will there also be headers available if we want to use those instead of some adapter?

Well, I probably will place some internal headers, though you can just plug normal jumper wires into the female socket on the back.
KermMartian wrote:
Thank you for the clarifications, Muessigb! For (2), I was more asking what is setting the frequency. A crystal with a variable divider, for instance? I'd imagine that something like that would be very difficult to get 0..0.1..10 MHz out of, hence the question. And wow, 8 cores for peripherals is very exciting. Two additional questions that occurred to me while we talked about the project:
1) What inspired you to do this project? I'm also aiming that question at c4ooo and adekto.
2) I don't care a great deal one way or the other, as I'll be equally enthusiastic about the project either way, but are you planning to make this open hardware and publish the plans freely?

IDK, i have always wanted to make a z80 computer, and when i heard Muessigb was making one i guess i just jumped aboard Razz
The OS will be open source, but the compiler might be closed Wink
KermMartian wrote:
A crystal with a variable divider, for instance? I'd imagine that something like that would be very difficult to get 0..0.1..10 MHz out of, hence the question.
A worthy point. this is probably a harder problem than you're anticipating. DDS comes to mind as a suitable solution, but may be more complex than you were counting on.

Quote:
And wow, 8 cores for peripherals is very exciting.
I'd be wary of actually having enough capability with a Propeller. The memory space seems pretty limiting (not having used one for anything but studied the architecture before); you only get 512 words of local RAM, and the entire chip has only 8 kilowords of ROM. Access to non-shared resources (such as for message passing) is limited to one eighth of the system clock under ideal conditions, and may be as bad as 1/15 of the system clock rate if your synchronization is bad.
Tari wrote:
KermMartian wrote:
A crystal with a variable divider, for instance? I'd imagine that something like that would be very difficult to get 0..0.1..10 MHz out of, hence the question.
A worthy point. this is probably a harder problem than you're anticipating. DDS comes to mind as a suitable solution, but may be more complex than you were counting on.

Luckily this part really is the easiest. I already found a way to derive the clock for the z80 from the PXA clock.

Tari wrote:

Quote:
And wow, 8 cores for peripherals is very exciting.
I'd be wary of actually having enough capability with a Propeller. The memory space seems pretty limiting (not having used one for anything but studied the architecture before); you only get 512 words of local RAM, and the entire chip has only 8 kilowords of ROM. Access to non-shared resources (such as for message passing) is limited to one eighth of the system clock under ideal conditions, and may be as bad as 1/15 of the system clock rate if your synchronization is bad.

The chip has no user ROM at all and 32 KB of shared RAM. Appeareantly I am fucked. You are so right ;(
We are switching to a different coprocessor. This time it's an ARMv7ME based, 74 MHz fast one with 64 KB RAM and 256 KB of flash. Firmware updating will be even easier now as it can be done using USB now.
Also a C64 SID clone is planned as the optional audio synthesizer.
For the SID chip emulation, you might want to contact the MEGA65 peoples, they would probably have some insight for you.
Ivoah wrote:
For the SID chip emulation, you might want to contact the MEGA65 peoples, they would probably have some insight for you.

Thanks for suggesting but i have already solved that myself Wink
I have no experience with VGA yet, but maybe a 48 MHz ARM would do just as well?
This would save about 10 and might be worth looking into.

EDIT #1: Probably not, as this coprocessor only has 8 KB RAM.
EDIT #2: The Teensy 3.2 devboard is now ordered thanks to a kind cash donation of a forum member.
Muessigb wrote:
We are switching to a different coprocessor. This time it's an ARMv7ME based, 74 MHz fast one with 64 KB RAM and 256 KB of flash. Firmware updating will be even easier now as it can be done using USB now.
Also a C64 SID clone is planned as the optional audio synthesizer.

Basicly that^
These numbers are not final, but there will be two graphics modes: text and graphical.
Text: 80*60 text buffer (each letter 10*10) I believe muessib wanted 16 foreground and background colours, but 64 are technically possible for both.

Graphical: ~160*~120 @8bpp (but once again only 6 of those bits have value, the color is rgb222)

The vRam (used in both modes) wont be directly writable to by programs; mostly because of how paging will work. To draw, you will need to use a set of API commands provided by the teensy. The OS, however, can directly manipulate vRam. When in text mode, you will be able to use an OS routine to copy text data to vRam.

These arnt meant to be final, but this is AFAIK, what the current plan is Wink
Hey, Interesting project !
Choosing an eZ80 would be more difficult ?
By the way, I found a site : http://retro.hansotten.nl/sample-page/z80/ (maybe useful ?)
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 2
» All times are GMT - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement