Jack Gassett

Papilio DUO - Classic Computing Shield

37 posts in this topic

Excellent! Thank you for that. This is looking to be a really great project. :)

 

I've been thinking about a classic computing shield that will have all of the hardware we would want for projects like this. It would be targeted for the new Papilio DUO board and here's what I'm thinking so far. Any feedback on what else it would be nice to have on this board is appreciated. Maybe a serial port with a rs232 level shifter?

 

cb1b45d451e6957113eb045859f4c363_large.JClassic Computing Shield V1.0
Specifications
  • 4096 Color VGA
  • Audio Jack
  • Two PS/2 Jacks
  • Two Atari Style Joystick Ports
  • MicroSD Socket
  • Directional Control Buttons

 

The plan is to start with the never released Arcade Shield 1.0 and make it better. I'll move the two joystick ports to the right side of the board and make it so they can snap off, that way a different 16-bit Wing can be used if joysticks are not desirable. A microSD socket will be included, and I'm open to any further ideas...

 

Jack

Share this post


Link to post
Share on other sites

It probably depends upon what retro device in question but I'd look for

 

- some LEDs (for the front panel and for debugging)

- SD card (beats providing a real floppy drive interface or tape). Having the card change exposed would

 also be very useful because even the 8bit world supported disk change interrupts

- At least one RS232 level shifter

 

For emulating older 'serious' machines I'd look for

 

- at least a second RS232 level shifter set (possibly at the cost of the joystick)

- Real time clock (or perhaps just sneak a digital grove connector on it and avoid the costs/hassle for all), as they do an rtc

 

- S100 connector ;-)

 

When I think gaming I tend to think

 

- one or two joystick

- reset button

- leds

- video/keyboard/audio out, maybe audio in (for tape) but thats probably not a serious use case

- keyboard (but not really mouse... mouse came very late and devices with mouse tended to be a serial mouse anyway)

- RS232 level shifter (but much less important here)

 

And my personal wish list would also include some kind of networking as a lot of these older machines did have some weird and wonderful networking options often with insane hardware which nobody in their right mind would want to emulate. Things like CP/NET for CP/M could use serial but there was also stuff like the spectrum ZX-Net, Research Machines Link 480Z etc. I think that depends what you are anticipating the usage model to be. If it includes being a good basis for things like ZPUino hacking and the like then networking is a good thing to have, if it's just classic emulations then less so.

 

I don't know what the practicalities of making one or maybe both of the joystick ports jumperable as joystick or RS232 would be. Perhaps that would avoid all the problems around snap off bits.  I think that would work well because you'd effectively have a choice of

 

two joysticks, one serial (classic 8bit home micro etc)

one joystick, one serial mouse, one serial (8bit higher end system - eg emulating the PCW512 etc)

two serial, one joystick abused as four front panel switches (8bit era 'traditional' system)

 

 

Btw - I don't know if you are familiar with the PIC32 based retro-home computer platform ?

 

https://www.olimex.com/Products/Duino/Duinomite/DUINOMITE-MEGA/

 

but that's a fairly good example of the sort of ports that are useful.

Share this post


Link to post
Share on other sites

Jack,

 

if you come up with a completed design, i can get the manufacturing done. probably do a build of 250 pieces to get started...

 

Dave

 

 

Excellent! Thank you for that. This is looking to be a really great project. :)

 

I've been thinking about a classic computing shield that will have all of the hardware we would want for projects like this. It would be targeted for the new Papilio DUO board and here's what I'm thinking so far. Any feedback on what else it would be nice to have on this board is appreciated. Maybe a serial port with a rs232 level shifter?

 

cb1b45d451e6957113eb045859f4c363_large.JClassic Computing Shield V1.0
Specifications
  • 4096 Color VGA
  • Audio Jack
  • Two PS/2 Jacks
  • Two Atari Style Joystick Ports
  • MicroSD Socket
  • Directional Control Buttons

 

The plan is to start with the never released Arcade Shield 1.0 and make it better. I'll move the two joystick ports to the right side of the board and make it so they can snap off, that way a different 16-bit Wing can be used if joysticks are not desirable. A microSD socket will be included, and I'm open to any further ideas...

 

Jack

Share this post


Link to post
Share on other sites

It probably depends upon what retro device in question but I'd look for

 

- some LEDs (for the front panel and for debugging)

- SD card (beats providing a real floppy drive interface or tape). Having the card change exposed would

 also be very useful because even the 8bit world supported disk change interrupts

- At least one RS232 level shifter

 

For emulating older 'serious' machines I'd look for

 

- at least a second RS232 level shifter set (possibly at the cost of the joystick)

- Real time clock (or perhaps just sneak a digital grove connector on it and avoid the costs/hassle for all), as they do an rtc

 

- S100 connector ;-)

 

When I think gaming I tend to think

 

- one or two joystick

- reset button

- leds

- video/keyboard/audio out, maybe audio in (for tape) but thats probably not a serious use case

- keyboard (but not really mouse... mouse came very late and devices with mouse tended to be a serial mouse anyway)

- RS232 level shifter (but much less important here)

 

And my personal wish list would also include some kind of networking as a lot of these older machines did have some weird and wonderful networking options often with insane hardware which nobody in their right mind would want to emulate. Things like CP/NET for CP/M could use serial but there was also stuff like the spectrum ZX-Net, Research Machines Link 480Z etc. I think that depends what you are anticipating the usage model to be. If it includes being a good basis for things like ZPUino hacking and the like then networking is a good thing to have, if it's just classic emulations then less so.

 

I don't know what the practicalities of making one or maybe both of the joystick ports jumperable as joystick or RS232 would be. Perhaps that would avoid all the problems around snap off bits.  I think that would work well because you'd effectively have a choice of

 

two joysticks, one serial (classic 8bit home micro etc)

one joystick, one serial mouse, one serial (8bit higher end system - eg emulating the PCW512 etc)

two serial, one joystick abused as four front panel switches (8bit era 'traditional' system)

 

 

Btw - I don't know if you are familiar with the PIC32 based retro-home computer platform ?

 

https://www.olimex.com/Products/Duino/Duinomite/DUINOMITE-MEGA/

 

but that's a fairly good example of the sort of ports that are useful.

 

Thank you, this is really helpful. Once the Papilio DUO Kickstarter is launched and things calm down a bit I will start working on this design. Will see if I can make dual purpose Joy/rs232 ports and look at options for an ethernet chip. Whether that is leaving a wing slot open so the Ethernet Wing can be used, embedding an ethernet SPI chip, or a RMII Ethernet chip. They all have challenges and tradeoffs... It will be fun to work on though.

 

Thanks,

Jack.

Share this post


Link to post
Share on other sites

Jack,

 

if you come up with a completed design, i can get the manufacturing done. probably do a build of 250 pieces to get started...

 

Dave

 

Dave,

 

Thank you for the offer, lets talk more about it when I have the design completed. I'll start another thread when I start working on the board in earnest.

 

Thanks,

Jack.

Share this post


Link to post
Share on other sites

This was posted to the Papilio DUO Kickstarter:


Hello everyone,


I started reworking the Classic Computing shield yesterday and wanted to share the work so far. There was a great forum thread with some very helpful ideas I've tried to incorporate.


The two most important things are the addition of a RS232 serial port and an SD card. 


Here is the original Arcade Shield design that we are starting from:



 And here is the reworked design with the addition of the RS232 serial port, micro SD socket, and slimmed down audio jack:



 As you can see I dropped the second Joystick and PS/2 socket in order to make room for the new additions. This also had the huge benefit of freeing up 16 I/O pins on the right side of the board. I think one of the very important requirements for this classic computing shield is that it is extensible. Each classic computing project we encounter might have a unique set of requirements that we can never hope to account for with a single board. Having 16 I/O pins free (which are two 8 bit Wing slots) allows us to add an ethernet chip, extra serial port, extra SD card, or whatever might be unique to the project with no fuss or hassle, we can just drop on two Papilio Wings to get what we need. 


Now, if people really think the second Joystick and PS/2 sockets are important then I have a cool idea. Its kind of like getting a bonus 16-bit Wing with the board. What I can do is design the board with the free 16-bit Wing slot populated with a joystick and PS/2 socket, like so:



 The trick is that I will specify that the PCB manufacturer puts a V-Score on the line that divides the 16-bit Wing from the rest of the board. A V-Score allows you to easily snap a board into two parts. So the Classic Computing shield will be manufactured as a single board and you can plug it in and use it as a single board. But, if you ever need to free up the 16-bit Wing slot then you just snap the board  into two parts at the V-score line. If we run into a project that requires an extra SD card and extra serial port then we can snap off the 16-bit Wing and put two 8-bit Wings with just what we need there instead!


So that is my idea, I'd love to hear your thoughts and get feedback. Please respond here on Kickstarter or in the forum thread.


Thanks,


Jack.


Share this post


Link to post
Share on other sites

Hi! new forum member and project backer here, looking forward to December :)

 

A couple of things I wanted to suggest, based on what I personally want to do with my PD and classic computing shield (basically, put it in a nice enclosure to be a universal retro box):

 

  • If you look at computers that have had some media slot (floppy drives, CD ROMs, etc), you'll notice that these are always on the front or the side, because that way they're more easily accessible. The proposed design has the SD card slot on the same side as the VGA connector, which is usually at the back.  A way to address this could be to swap the positions of the SD card slot and the serial port, or maybe put the SD card slot on the 16 bit wing
  • If that's not possible (or even if it is), it may be a good idea to also route the SD card traces (including activity LED) to a header, either on a wing or a dedicated header so that we can use one of the many SD card breakout boards and put the card slot where it makes most sense for us.  Ditto the joystick.
  • It may be interesting to route the audio jack lines to the analog pins of the Arduino, that way the audio jack can be an input and we can load old games from the original casette tape.  Or maybe the best way to handle that would be to just plug in the audio input jack to the analog pins and not change the shield...
  • A cheap way to save some FPGA pins could be to connect the up/down/left/right buttons on the board to the equivalent lines on the joystick port

Love the idea of the 16 bit wing.

Share this post


Link to post
Share on other sites

Looks good to me - not so worried about where the SD ends up - if its got no media change then its not too good as removable media. Snap off bit seems a good compromise and leaves space for other oddments.

Share this post


Link to post
Share on other sites

Love the idea of the snap board !

 

Having 16 GPIO at your disposal is a great feature (you can virtually add everything you want).

 

Way to go, Jack.

Share this post


Link to post
Share on other sites

Not sure if this has been brought before. Why old Atari style joysticks? just because they are just switches and easier to implement (well other than debouncing the signal)

 

Wouldn't it make more sense to put a PC Game Port compatible connector with MIDI I/O support? not a lot of hardware for the Midi support and you can use available cables to split it into two joysticks and two midi connectors for input and output.

 

Just use 3.3V instead of 5V and attach the analog signals to the analog inputs of the arduino header.

A button direction will work as well just feeding 0 or 3.3V.

 

It will get rid of the 2nd joystick connector real estate, add analog stick support for steering wheels for example and give you a Midi in/out interface.

Share this post


Link to post
Share on other sites

Hi! new forum member and project backer here, looking forward to December :)

 

A couple of things I wanted to suggest, based on what I personally want to do with my PD and classic computing shield (basically, put it in a nice enclosure to be a universal retro box):

 

  • If you look at computers that have had some media slot (floppy drives, CD ROMs, etc), you'll notice that these are always on the front or the side, because that way they're more easily accessible. The proposed design has the SD card slot on the same side as the VGA connector, which is usually at the back.  A way to address this could be to swap the positions of the SD card slot and the serial port, or maybe put the SD card slot on the 16 bit wing
  • If that's not possible (or even if it is), it may be a good idea to also route the SD card traces (including activity LED) to a header, either on a wing or a dedicated header so that we can use one of the many SD card breakout boards and put the card slot where it makes most sense for us.  Ditto the joystick.
  • It may be interesting to route the audio jack lines to the analog pins of the Arduino, that way the audio jack can be an input and we can load old games from the original casette tape.  Or maybe the best way to handle that would be to just plug in the audio input jack to the analog pins and not change the shield...
  • A cheap way to save some FPGA pins could be to connect the up/down/left/right buttons on the board to the equivalent lines on the joystick port

Love the idea of the 16 bit wing.

 

faybs,

 

Great ideas here! Thank you for coming online and posting. I'm going to look at what I can do, I especially like the idea of the audio jack on analog pins... Will see what I can do.

 

Jack.

Share this post


Link to post
Share on other sites

Not sure if this has been brought before. Why old Atari style joysticks? just because they are just switches and easier to implement (well other than debouncing the signal)

 

Wouldn't it make more sense to put a PC Game Port compatible connector with MIDI I/O support? not a lot of hardware for the Midi support and you can use available cables to split it into two joysticks and two midi connectors for input and output.

 

Just use 3.3V instead of 5V and attach the analog signals to the analog inputs of the arduino header.

A button direction will work as well just feeding 0 or 3.3V.

 

It will get rid of the 2nd joystick connector real estate, add analog stick support for steering wheels for example and give you a Midi in/out interface.

 

Hello miguelvp,

 

The biggest hurdle for using a PC style Game Port is that the pins are analog instead of digital... Since an FPGA does not have native support for analog signals it makes things much more complicated... The simplicity of the old Atari joysticks makes it a no brainer to use them in the old arcade projects... If we did the analog inputs it would require a lot of code to be added to the existing projects.

 

Jack.

Share this post


Link to post
Share on other sites

@miguelvp

I suspect it's because the Atari digital standard was the most popular in the machines of that period (Nintendo used a different digital system based on a shift register to save on cable costs). As far as I know, only the IBM PC/XT and the apple II used analog joysticks.

Share this post


Link to post
Share on other sites

I see, the connector has to be feed directly to the FPGA instead of the Arduino analog inputs. Maybe adding a ADC128S022 chip like the DE0-Nano has, might be an option Allowing 8 analogs, 4 for the two sticks, you can use a couple for the audio stereo input as well, leaving 2 spare ones. 12 bit ADC 50 ksps to 200ksps on a 16 pin TSSOP.

 

Just suggesting it as an idea, I understand the programming required to read the serial data might add complication to the module.

 

But the module schematic could be per channel and have options to switch between analog or digital output by the means of a threshold, that way the actual program doesn't have to deal with analog values if they don't want to (as in one wire output instead of 8 or 12) or even customize how many wires out from 1 to 12 per channel.

Share this post


Link to post
Share on other sites

@Jack

 

Thanks!  As I wrote on my post though, I'm not sure if wiring the jack to the analog pins is the right way to go.  Especially since that jack is the only way to get audio out of the shield and it would be annoying to have to unplug the speakers to load a game and switch back again afterwards.  Don't know if it would be cost effective to have two jacks, one for input and one for output. Do you expect to have many customers who want to sample audio (or some other single channel analog signal)?

Share this post


Link to post
Share on other sites

A lot of the tape input logic was basically digital. The spectrum for example is nothing more than a 100nF capacitor, a 10K resistor and a diode. Not sure in general that you need anything like an analogue input.

Share this post


Link to post
Share on other sites

Hehe, one could always trust Sinclair to come up with the cheapest solution to any problem. IIRC the c64 also treated the tape as a digital signal. No idea what the Tandy/dragon did for tape input though.

Share this post


Link to post
Share on other sites

My second computer was the Spectrum, my first one the ZX-81.

I liked the Spectrum so much that I made an PC suite of code so I could read the tapes into the original IBM PC via the cassette DIN connector on the back.

The code for reading the tape was in assembly to respect the timings at the 4.77MHz of the PC and the rest in C to turn on the cassette tape and opening and writing the file or verify the file (Using Turbo C).

Also wrote an Z80 cross assembler and typed the whole "the complete spectrum rom disassembly" book (I used the that book also to derive the assembly code to read the tape) to get the rom (pre-internet that you can find things everywhere now). Also wrote a z80 emulator and an spectrum emulator. All unreleased since it was pre internet and there are many out there now, and I still have it somewhere in my drive, if anyone is interested on any of it.

I did get it to boot and the only lacking thing was the keyboard input and the display will convert to the hercules card (monochrome) so It's been shelved since then. Once I found spectrum emulators I did a binary compare of my rom and theirs and it was a match.

 

I know getting off topic. So even if I love the old stuff as much as the next. Analog inputs allow for digital ones as well, not the other way around. Also I know adding a chip increases cost but it gets rid off a connector and adds more functionality. The chip is probably around $3 or less in quantities, the supporting resistors and caps are minimum and the midi just takes 4 resistors a diode and an opto-coupler (6n138 at around 50 cents or less in quantities). So I'm thinking more of Amiga emulation with analog inputs and midi support. I think it's viable but not my call.

Share this post


Link to post
Share on other sites

Ok, I just finished up what will hopefully be the final cut. I still need to verify everything on Monday but here is a picture:

 

post-29509-0-01386500-1402702465_thumb.j

 

Here are the changes:

  • Moved the Joystick ports to the same side, I'm considering rotating the whole thing 180 degrees so the joysticks are on the bottom...
  • Added a second audio jack to the 16 bit Wing.
  • The first audio jack is now connected to the Analog input pins of the atmel chip and also to FPGA pins. This is for reading data off tape drives or recording audio.
  • Added mounting holes.

Everything is routed and just needs to be verified. I would like to send this out for manufacturing early next week so please take a look over the weekend. :)

 

The design can be found on Github.

 

Jack.

Share this post


Link to post
Share on other sites

Looking pretty good :)

 

Just one thing left - unless I'm mistaken, the shield covers all the headers of the Papilio, which means that functions like reset will be unavailable if the board is enclosed and it won't be possible to expand any further (eg adding a second SD card slot on a separate board).  Would it be possible to have some of the Papilio's headers pass through the shield so that they're usable even after the shield is plugged in?  One that should be simple is the header that has the power and reset signals in it, others will depend on how the various signals have been routed to the various resistor DACs etc.  Or maybe they could all be pass-through (they are wired to an FPGA after all), except for the one in front of the PS/2 socket - unless the socket can be moved or rotated to allow those pins to protrude through the shield as well.  That would also allow other Arduino shields to be stacked on top of this one.

Share this post


Link to post
Share on other sites

Is it too late for changes?

 

I'm not sure I'm a fan of the break off part. I like the idea of the 16 bit wing you can choose not to use, but I feel it might be difficult to break a fully populated PCB in the middle of a connector (I have no experience with that, though). Why not simple make them two separate PCBs from the start and sell them as a bundle? Would that increase manufacturing cost or be otherwise inconvenient?

Share this post


Link to post
Share on other sites

andreasb,

 

I just submitted the design yesterday... I have actually done this before and have boards on hand that prove out the idea. Here is a video that shows the idea in action:

http://www.gadgetfactory.net/2012/07/1st-retrocade-synth-prototypes-rectrocade-megawing-arcade-megawing-2-0-and-papilio-pro/

 

Making two separate boards will increase the cost and logistics of selling the board...

 

Jack.

Share this post


Link to post
Share on other sites

Yes, they are electrically independent. When you snap them apart it is just like having two boards.

 

Jack.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now