Close
0%
0%

Recreating the Jupiter Ace

Recreation of the 'Fastest computer in the Universe' that runs FORTH.

Public Chat
Similar projects worth following
The Jupiter ACE was introduced in 1982 by a company named 'Jupiter Cantab' as 'probably the fastest computer in the universe'. Mainly because it was the first (and only) home computer at the time that ran Forth as it's main operating system. Since every other computer ran BASIC this was a remarkable choice, and it turned out to be a bad one. Only hardcore programmers dared to take up FORTH, and in the end only 8000 units were ever sold. Making them very rare and expensive nowadays so creating a replica is the closest I will ever get to owning one.

Building a replica of the Jupiter ACE  has been done before, and the super accurate replication of the PCB by Grant Searle is probably the best example. The schematics were redrawn later by Bodo Wenzel in ORCAD, and a modified version was made by Isidro Nuñez Blanco De Arenas. Both builds were done 2003-2006 ( which shows if you look at the design of their websites), and things have changed a bit since then. PCB manufacturing is much cheaper now, and it's also easier to create custom plastic parts. Because what's lacking in all these rebuilds is the actual housing, which to me is a huge part of the charm of this machine. And using a 3D printer it cannot be too hard to replicate this.

Actually, since I started creating this, some others have popped up (or I just did not find them at the time). There used to be a kit sold from Bulgaria by 'oricfan' but that one is hard to find these days. The most recent 'ACE' compatible kit is called the 'Minstrel 4th' by Tynemouth Software. Which is probably good, but (as mentioned on the site) is just a board, and will not fit the original Jupiter ACE housing.

There is the Jupiter-II, a beautiful version consisting of two separate PCBs. Which (as far as I can see) was created somewhere 2019-2020.

And of course I recently discovered that  people on the Jupiter ACE section of the K? Forum have created an almost identical board, in about the same time-span (2019/2020). They chose to use Cherry keys for the keyboard, which definitely will be a huge improvement in usability, but does not really add to the authentic look and feel.

The Housing

To my surprise there are also no 3D models available , apart from the 'mini Jupiter ACE', which obviously it too inaccurate to use as a basis for a real housing.

So I started out to do this myself, using my favourite 3D modelling software: 'DesignSpark Mechanical' (DSM). I used Grant's PCB layout, made it into a .png image and imported that into DSM. Since the drawing includes millimetre marks on the edge it was easy to scale it to exactly 100%.

The Keys

That's a hard one. Getting a custom made rubber key-mat is beyond my financial capacity so that's not an option. I'll try to make them using my 3D printer. The main problem here is  to get the text on the keys. I considered printing this on adhesive film and just stick it on top of the key. Then I thought I could also print the keys in white, with the text sticking out. Then if I spray painted them black and sand the top it would reveal the text again. 

 Looks great in my 3D software !. But how would it turn out in reality ?

The PCB

Though it's possible to create the exact PCB replica using Grant Searle's PCB foils, that is not what I wanted. I did want to make some minor changes on the EPROM and RAM connections, and use standard mini switches for the keyboard. Also if the PCBs have to be made by a cheap Chinese shop, it's essential to have Gerber files. So, all in all a good incentive to replicate the schematics again, but now in KiCad. For years KiCad has been a bit troublesome to use, but over the last few years it has improved significantly and is now a serious EDA package. It's free, open source and multi-platform so it is becoming the de-facto standard for all open-source hardware projects.

KiCad 3D view of the (nearly finished) board.

Details on the Jupiter ACE are scattered around the net, but these sites are very useful:
The Jupiter ACE archives
Rather basic page with a lot of hardware specs
German ZX80/81 forum with Jupiter ACE section



Jupiter ACE.rsdoc

DesignSpark 3D file for the complete Jupiter ACE. Housing, PCB, Keys.

rsdoc - 32.68 MB - 11/07/2020 at 22:15

Download

jupiter-ace.zip

KiCad files. V1.0 All routed, including edge connector. With added diode, LED etc. This is the board as ordered, but it is not tested. UPDATE: There is an error in the RAM footprint. Can be solved using the RAM adapter that I've made, but it is NOT correct!

x-zip-compressed - 884.68 kB - 10/19/2020 at 12:51

Download

  • It works.. (but only half)

    Cees Meijer11/16/2020 at 08:58 0 comments

    Th RAM adapter PCBs have arrived, and assembling was easy. So it's time for the next step. After inserting them, I switched on the power, and got this on my screen:

    Looks like the video circuit is working, but the content seems incorrect. Turns out the that Z80 does not get a clock, so the processor is not running at all. Which means that the video circuit on its own is capable of generating this pattern, which I did not expect.

    But why is there no clock? Tracing the signal from the oscillator, it seems to stop at the base of the transistor that should buffer the signal :

    I can see the signal on the base, but there is nothing on the collector. How can ? This is the most basic transistor circuit possible, it should work ! Turns out it doesn't, because I underestimated the frequency involved. 3.5 MHz does not sound like a a high frequency these days, but it is way beyond the capacity of a 2N2222. When used as a switching transistor, the switching times go up to 250nS, which is just too slow. That's why the original Jupiter uses a 2N2369 which has switching times of 12 nS. I did not have that available, so I decide to use a BS170, a N-Channel mosfet which should be capable of switching up to 200 MHz. And that works great. Now the clock on the Z80 is square and clean.

    After switching it on again it looks like something happens. The screen is now filled with a different pattern and there are some unrecognisable blobs at the bottom row. But typing on the keyboard does change the content of the bottom row, and when pressing enter I can see the screen scroll, although the general pattern changes. The fact that it responds to the keyboard, and that this changes the screen tells me that the processor is working (after all, it is scanning the keyboard). So the problem must be in the video circuit itself, or the connections to the video RAM chips. After meticulously checking all connections from ant to the RAM, and comparing them (again) with the original schematics I found no mistakes or missing connections. Probing around with the scope however shows a lot of noise an glitches, especially around the  74HC166 shift register. Extra decoupling does not change anything, so I was thinking adding some kind of filtering to the data lines.

    Then I realised that I used all 74HC series logic on my board, while every schematic (including mine) has the 74LS series. From my past experiences I do know that the HC and LS series are definitely different. The logic (obviously) is the same, but since the HC series are all CMOS, and the LS uses low power schottky their electronic behaviour may be different. It could well be that using the 1K series resistors in the data lines may not be a good idea for HC variants.

    So I could try to solve that, or simply order a full set of 74LS chips so I can simply exchange and compare. After all, these chips are very cheap (between 0.25 and 1 Euro a piece). It only means I have to wait another week before the next test run.

    Meanwhile, while going through the Jupiter ACE section on the K? Forum I also noticed that someone else had problems with the video, which were solved after removing C8. This capacitor is there to extend, or clean up , the 'WAIT' signal. Apparently a wrong WAIT signal can delay the Z80 too long so the timing for writing to the video memory is wrong, which could cause a screen similar to what I got. Maybe worth trying, if swapping the chips does not work.

  • Inserting the Chips, testing and ... Aargh !!

    Cees Meijer11/01/2020 at 12:53 0 comments

    After half a day of soldering, the board looks like this:

    Everything fits like a charm, and it really starts to look like a Jupiter ACE. So it's time to start testing, and carefully insert all chips.

    Step 1: Check what is + and - on the power connector. It turns out the Tip is ground, and the sleeve is +. Found myself a leftover power supply (12VDC/1.4A)  and mounted the 3.5 mm jack plug. Once connected the LED goes green ! This is always a good start. After that I measured the supply voltage on all main chips like the Z80 and some of the 74 series. All seems well.

    So I first mount U23 74HC86, which is part of the oscillator, so now we should the 6.5 MHz on pin 8.

    Which does not happen. There is a clear oscillator signal (with the right frequency) on pin 9, but its simply not big enough:

    The signal gets bigger if I replace R2 with  a 470K, just enough to get the signal on pin 8 going:

    Still looks a bit wacky, but I think that's also a limitation of my oscilloscope which has a maximum sampling rate of 25 MHz so there are only 4 samples per cycle.

    Inserting U9: This is the clock signal divider, so there should be a clock on pin3 of U9:

    Well, at least it starts looking like a square wave now. So lets insert the next two counters, U10 and U11. Which seems to work as well, so lets mount all other chips. All good, until I came to inserting the RAM chips:


    OH NO !! The footprint is wrong. It took me about half a second to realize what was wrong: I selected the DIP28 footprint for this DIP24 chip. Not something KiCad will warn you for, after all the DIP28 has plenty of pins for a DIP24. After about  10 minute of quiet contemplation (...) I decided that I would have to make some kind of adapter with 28 pins on one side and a 24 pin socket on the other so I could re-route all pins from 12 and up.


    Good plan, but after struggling with the first four wires, and realizing I would have to do 3 adapters in total I gave up. Opened KiCad again and designed an adapter PCB in about 30 minutes. Checked with the PCB manufacturer and found that it would cost €19,- to have 15 pcs manufactured.

    So we'll have to wait another week until these boards arrive and the testing can continue.

  • The PCBs are here !

    Cees Meijer10/27/2020 at 21:02 0 comments

    This is probably the most used title on all Hackaday, since it is something that happens to most of us at a certain moment in our project.

    Exactly 8 days after I sent my order, they actually arrived. And they are beautiful ! I chose the blue colour to set mine apart from all other Jupiter ACE clones. At least, that's what I thought until I realized that the Minstrel 4th is also blue, though mine have a more blue-greenish tint.

    What did struck me at first sight was how close the pads of a TO92 transistor are. I actually thought they were connected, but fortunately a continuity check shows they are not. And a very close inspection using a magnifier shows that there is indeed some separation between the pads.


    That will need some very careful soldering there.

  • The Power of Free

    Cees Meijer10/26/2020 at 20:16 0 comments

    While working on the Jupiter ACE project I was amazed, over and over again, by the power of the available free software tools.

    Housing drawn in DesignSpark, PCB imported from KiCad

    First there is DesignSpark Mechnical. An extremely powerful 3D CAD program from RS Components. It's a trimmed down version of SpaceClaim Engineer, a truly high-end CAD package. Which also means it misses some features, like directly placing texts, the option to mirror 3D objects, and the possibility to export to STEP files. Which sometimes makes makes it harder to get some things done, but usually there is a workaround. It does however support import of images or photo's. Which can be place and rotated in 3D space. Something that was tremendously helpful when drawing the Housing.

    Second, of course, there is KiCAD. The free, open source, multi platform, Electronics Design package. With the release of version 5 it has really become a serious piece of software. It works flawless, and I've not seen it crash anywhere during my whole design process. The work flow has significantly improved since the previous version, and the available libraries are extensive. OK, you still cannot drag a component on your PCB while keeping the traces connected, but that's my only (minor) complaint. Tools like 3D view and STEP export on the other hand are truly amazing, and the only reason I could make an image as shown above.

    And last, the PrusaSlicer. A fork of the (already pretty good) Slic3R. Since Prusa Printers forked it, and put a (full time) team of software engineers on it it has grown to be awesome. Adaptive layering, advanced move and align tools, customizable support, 3MF project support, its got it all.

  • Final Steps

    Cees Meijer10/17/2020 at 11:32 0 comments


    Now the routing is complete, and the moment where I have to send the design in for PCB production, it's time to go over the last details.

    Decoupling capacitors
    Someone mentioned that not all chips have a decoupling capacitor, and that could lead to problems. So I went over it and placed some extra 100nF wherever there was still space.

    Silkscreen
    Next, I added the letters / figures to the keys so they would be visible on the silkscreen. I first made all text in font-size 2x2, which seemed big enough on the screen. But when I printed the board 1:1, they appeared a bit small. So I found that the KiCad PCB file format is actually text, and that it was really simple to do a search / replace action to change the font size.

    Footprints doublecheck

    Checking the few footprints I was not sure of. Especially the transistors are notoriously difficult to get right. Countless are the boards where you have to mount the transistors backwards, on the bottom or worse: with two pins crossed. I also had my doubts about the 3.5 mm connectors for power and audio, but they matched perfectly on the paper printed layout,.

    Zone fill for Vcc and GND
    Added a few more 'zone fills' for VCC and GND. So far I routed all power lines using 1mm traces, but that is not much and could possibly cause problems with the (relatively) power hungry TLL chips. So adding a bit of copper here will definitely help.

    Check the outlines
    I found that I had two board outlines drawings. The first one was the one that I drawn by hand in KiCad itself on the Edge.cut layer, and the second one is the version that I imported from the mechanical drawing (which was more accurate) on the 'Dwgs.user' layer.  So I removed all lines from the 'Edge.Cut' layer, and moved all relevant lines from the Dwgs.user layer to Edge.cut.

    Add Diode and LED
    As someone mentioned that the power plug polarity on the Jupiter ACE is different from that on the ZX80/81, I suppose its a good idea to add a diode to the power line. And then, it's always good to have a LED on the board so you can immediately see if the power is actually present.

    So, finally, I think it's time to send it to China, and have some boards made. I chose Seeed Studio for that. I've used them a few times before, and the boards are always very nice. The whole process of sending the files and placing the order is described on their site, and it is super simple. And they have their own Gerber viewer, so you can quickly see exactly what the boards will look like.


    US$62 for 5 pcs. Not too bad. Unfortunately the shipment will be another US$23, so the total will be around US$85,- Still not too bad. Let's hope the board is 100%, and I might be able to sell the extra boards...

  • The Backporch

    Cees Meijer10/15/2020 at 18:56 0 comments

    Something that was pointed out to me in the comments by danjovic is that the video signal of the original ACE would probably need some additional conditioning. The signale misses something that is called 'backporch', which is essentially a short period following the sync pulse where the signal level is exacly 0V. The details are explained and shown in this nice video.

    It's something that is also often mentioned regarding the ZX8/81 and Spectrum and therefore there are many circuit designs available that solve this. The one I liked most is the one which is also referred to in the video. It uses a NE555 chip, which seems sufficiently retro to me.

    © Copyright 2015 Ziggurat Communications Ltd.

    (The document where I took this from says it could be freely copied, as long as it contains the copyright message)

    So I will add this to my schematic as well.

  • What ? It already exists ??

    Cees Meijer10/12/2020 at 09:39 0 comments

    Just as I'm finishing my PCB, and started looking for details on the one missing part (the edge connector), I found this forum:

    https://forum.tlienhard.com/phpBB3/viewtopic.php?f=15&t=3207

    With images like this:

    and this:

    Yes, they look very, very similar to what I'm doing. So how is it possible that all the time I was researching for my project I did not bump into this site before ? It could be due to the fact that it is German site, and it is (partially) in German, but still. The actual board was made by 'rune' who's actually from the UK so all his posts are in English. Apparently a project that is only on a forum does not get a very high ranking on Google.

    Digging through the forum, I eventually found the Schematic, layouts and BOM on this page. All very familiar. Now I have not (yet) engaged with this forum, but it looks like they have indeed been doing just about the same as me, over a similar timespan (2019-2020).

  • Routing Complete !

    Cees Meijer10/11/2020 at 20:34 0 comments

    Wait a minute !. Does it really say 0 (ZERO) unconnected ? YES ! It's been more than a year since I started this, and at least 2 times I considered giving up. But finally I completed the routing of the PCB !

    Still have to go inspect it carefully (I actually spotted one chip that was not connected to power today...) but it looks like there may be an end to this project after all.

    Oh, and I have not yet added the edge connectors :-( These are not supported as standard components by KiCad and so I'll have to make them manually. Which is probably going to take some time as well.

    (This 3D view in KiCad is such an awesome feature)

  • Slowly, but still making progress

    Cees Meijer10/11/2020 at 10:38 0 comments

    As mentioned before: the routing is getting harder and harder... A few months ago I nearly gave up as it sometimes took me a full evening to get even a single track routed. But after focussing on some other projects for a while I decided to give it another try. And it's still hard, but it looks like I'm finally getting there. Just another few weeks to go...

  • Housing

    Cees Meijer03/31/2020 at 14:53 0 comments

    As I'm still struggling with the PCB, I thought it was a good time to finish the housing. This worked out very nice. Printed both the top and bottom in two sections.

View all 17 project logs

Enjoy this project?

Share

Discussions

Michael Gardi wrote 05/23/2020 at 13:33 point

I know this is late in the game, but your keycaps could have been printed in 2 colors if your printer supports the ability to change filaments at a specific layer height.  I've used this to great effect in a number of my projects.

  Are you sure? yes | no

Cees Meijer wrote 05/23/2020 at 14:31 point

Could be an option. It would indeed just require 1 filament change at a specific hight so it should be doable. It's something I have not done before but definitely worth trying.

  Are you sure? yes | no

Michael Gardi wrote 05/23/2020 at 15:03 point

If you printer supports it it’s pretty easy to do. The Plug  Panel on my H-500 was done that way. 

  Are you sure? yes | no

Alexander R Pruss wrote 10/11/2020 at 14:42 point

Do you actually need any special printer support? Can't you just add a pause command to the gcode? I guess doing it for a lot of keys might call for some automation, like my python script (e.g., https://github.com/arpruss/miscellaneous-scad/blob/master/scripts/insert.py ).

  Are you sure? yes | no

Michael Gardi wrote 10/11/2020 at 15:16 point

You are right. All my slicer does is add a special pause code to which the Prusa will not only pause, but prompt to unload the current filament then prompt to load the new filament before proceeding. If you can switch filaments when paused on your printer you  can use this technique. 

  Are you sure? yes | no

Cees Meijer wrote 10/11/2020 at 20:23 point

I think that if I print all the keys at the same time, I only need a single pause to switch the filament since all 'white text' will start at exactly the same layer.

  Are you sure? yes | no

programmez wrote 02/15/2020 at 14:30 point

Have to create 2x4k rom ?

  Are you sure? yes | no

sjkelly36h wrote 09/05/2019 at 23:30 point

I would just like to wish you good luck with your interesting project.

Having looked at Grant Searle's projects, I was thinking of doing something similar, but unfortunately my skills are less than my enthusiasm at present.  

Then I saw your project.  If I can get one of the Chinese fabs to make me a decent pcb from your gerbers, then a new Ace becomes more of a possibility for me.

I had an original Ace back in the day and my recollections are that you couldn't do much with one without the RAM pack.  Have you considered adding a RAM expansion to your PCB design?  The Ace wasn't a sturdy unit and the keyboard wasn't very good.  Many times I remember pressing the keys a bit too hard, wobbling the RAM pack and resetting the machine.

That really is an original feature I could personally do without!

If this is of interest to you, there is a two chip design for a 96k ram expansion at https://www.jupiter-ace.co.uk/hardware_96kram_pack.html 

Obviously, it's your decision, but adding this to the pcb wouldn't detract too much from the originality IMHO.  It would give you a much more usable device, though.

Please keep up the good work.

I will continue to follow your project with much interest.

  Are you sure? yes | no

Cees Meijer wrote 09/06/2019 at 08:17 point

Thanks for your comment, and great to see you are actually considering building one yourself. As I am (very slowly) approaching the end of the routing process, there is not much left for changing the design. The RAM pack is indeed a interesting addition, but there certainly won't be room on the PCB to have that included.

The keyboard will hopefully be slightly better than the original. I have already done some tests using the miniswitches and 3D-printed keys, and it seems to work well. You still won't be able to write a novel on it, but it's an improvement.

Once I finished the PCB, I'll have a few made in China. Then I will of course test it first, but if it's OK, I will probably sell the remaining boards. Which then could be your chance to get one. But I will of course publish the final Gerbers here on Hackaday, so feel free to order your own. And with all the KiCad design files available as well you might even want to add some modifications of your own.

  Are you sure? yes | no

danjovic wrote 07/27/2019 at 14:45 point

Nice work you have been done so far! If you please allow me suggest you a couple of improvements:

# 60Hz support. It might require an extra 7400 and some solder jumpers 

# Backporch for video signal, which will also provide a signal that best matches voltage and output impedance of rs170 (ntsc) video. Backporch itself is not necessary with white characters ovet black background, but the impedance/voltage matching is just a matter of using three calculated resistors instead of the output transistor.

I can make some drawings and post them on a page after this weekend, and then you can look at that and see if my suggestions worth the effort...

  Are you sure? yes | no

Cees Meijer wrote 08/06/2019 at 07:10 point

Thanks for the comments. Just returned from my holidays so I only just saw them.

I considered 60Hz support, but I'm not sure if that is still required. I suppose most modern display devices do not have any problems with 50 or 60 Hz. But I could be wrong.

I read about the 'backporch' issue but never really understood it. Could be due to my 'European / 50 Hz / PAL ' view of the world. But if you can send be some drawings I'd be most happy to integrate them. I have only just started the actual routing so there is still plenty of time to incorporate some changes.

  Are you sure? yes | no

danjovic wrote 08/06/2019 at 22:16 point

You welcome! 

Backporch is necessary for the TVs to correctly detect the relative amplitude of the video signals. It consists of a period of time right after the sync tip when the amplitude of the video signal should be equal to the blank level. 
If you have white charactes over black background it will not be an issue, as the video signal will be normally black during backporch period.

To generate the backporch you can use a RC network that lingers the SYNC pulse and then use the "elongated" signal to blank the video signal. Using this principle you can take the links [1] and [2] as a reference to design the backporch circuit using spare gates.

The impedance/amplitude matching can be done with a bit of math considering the state of Sync and Video for the moments of SYNC TIP, VIDEO DARK, VIDEO WHITE for both open circuit and under 75 ohms load. The best part is that your backend video circuit consists of only 3 resistors. Please take a look at link [3]

[1] http://danjovic.blogspot.com/2015/07/tk85av-tetraloaded-corrigido.html
[2] https://hackaday.io/page/6345-backporch-for-zx97-lite
[3] https://hackaday.io/page/2434-generating-video-signals-on-a-microcontroller-with-correct-amplitude-and-impedance

  Are you sure? yes | no

Cees Meijer wrote 08/07/2019 at 20:11 point

Thanks again for your suggestions. I've just read all the info in your links, and it is an excellent explanation of the video signal generation. I'll certainly use this in my schematic.

  Are you sure? yes | no

johntkennedy wrote 06/21/2019 at 17:46 point

Oh, and check out "Forth Programming" - they republished the original manual a year or so ago, and it's on Amazon!

  Are you sure? yes | no

Cees Meijer wrote 06/24/2019 at 07:19 point

Yes, I've seen that. Haven't bought it (yet).

  Are you sure? yes | no

johntkennedy wrote 06/21/2019 at 17:45 point

I did have an Ace - it was cheaper than the Spectrums my friends had - and different. The build quality was awful but using FORTH was a really interesting thing to do. I'd love to create it (preferably with HDMI and a SD storage card) :-)

  Are you sure? yes | no

Cees Meijer wrote 06/24/2019 at 07:22 point

Nice! You have the first version with the vacuform housing) or the 'ACE4000' model ?

As I am aiming for staying close to the original as much as possibe, there will not be a SD card or HDMI output, but I will include a standard Video output.

  Are you sure? yes | no

johntkennedy wrote 08/12/2019 at 04:22 point

The original "vacuform" aka yoghurt pot plastic :-)

How's your progress?

  Are you sure? yes | no

Cees Meijer wrote 08/12/2019 at 06:48 point

Well,  holidays got in the way, so progress has been slow for the past month. Still working on routing the PCB. Which, since I wanted to do it manually, is quite a lot of work.

  Are you sure? yes | no

Ken Yap wrote 06/05/2019 at 08:06 point

Nice that you're bringing this to life again. I remember seeing ads for this when I was in the UK in 82. I mentioned it to a friend of mine and he may have bought one, I seen to remember him complaining about the Chiclet keys; I'll have to ask him next time we meet. I admired Forth for what it could do with little resources as microprocessors were all I could afford, not Unix workstations like at work, but never got around to using it. I think I don't have enough brain cells left now to program in Forth, hahaha.

  Are you sure? yes | no

Cees Meijer wrote 06/05/2019 at 08:20 point

My experiences are similar. I also saw the ads, but never had one. And I'm not sure about my Forth capabilities either, but I expect it will take quite some time before I get to the actual programming....

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates