Jump to content
IGNORED

A8PicoCart - UnoCart on a Raspberry Pi Pico


Recommended Posts

Hi everybody,

 

If you have your Purple Pico clones in hand, a quick way to test your boards prior to soldering is to run a "blink" demo.

 

The Purple Pico clones have a green LED hooked up to GPIO pin 25 of the RP2040 microprocessor, which is the same GPIO pin as the "official" Raspberry Pi Pico boards (but NOT the Pico W boards). Any Pico "blinky" demo out there that blinks GPIO pin 25 will also work with these Purple Pico clones.

 

purple_pico_clone_blink.gif.83292439fd993480fd52ca015eb867e9.gif

The blink.uf2 demo is available in the Raspberry Pi Foundation's pico-examples Git repo, however, there is also a direct download link for the file here: https://rptl.io/pico-blink

 

If the blinking becomes too obnoxious, you can use the flash_nuke.uf2 UF2 file (also from The Raspberry Pi foundation) to wipe the board and bring it back to the "factory defaults".  The download for flash_nuke.uf2 is linked at the bottom of the Raspberry Pi Pico documentation page, it's the UF2 file in the "Resetting Flash memory" section.

 

To flash a UF2 file to a brand-new Pico:

  1. Plug your Pico into a computer using a "power+data" USB-C cable
    1. A new drive called "RPI-RP2" should appear; if the drive DOES NOT APPEAR, then you are probably using a "power-only" USB-C cable, try another one
  2. Drag and drop the UF2 file onto the "RPI-RP2" drive when it appears
  3. When the UF2 file copy is finished, the Pico will automatically unmount itself from the computer, causing your computer to complain that the storage device was not ejected correctly

I've also attached the blink.uf2 and flash_nuke.uf2 files to this post, if you don't want to download them from the RPI website and/or GitHub.

 

Thanks!

flash_nuke.uf2

blink.uf2

Edited by spicyjack
Clarified flash process is only for "new" Pico boards
  • Like 2
  • Thanks 3
Link to comment
Share on other sites

Sorry, I forgot one bit of info when flashing UF2 files onto a Pico.

 

If you've already flashed a UF2 file to your Pico(s), and you want to flash a different one, unplug the Pico from power, press and hold down the BOOTSEL button, then plug the Pico back in to power.

 

Holding down BOOTSEL and applying power will cause the Pico to start up in "USB Mass Storage Mode", which allows you to drop a new UF2 file on to the device in order to program it.

  • Like 1
Link to comment
Share on other sites

33 minutes ago, spicyjack said:

Pico to start up in "USB Mass Storage Mode"

Slight correction - both modes are forms of Mass Storage.

Holding BOOTSEL mounts as RPI-RP2 against which the UF2 reflash will occur.

Once flashed with the A8Pico firmware the usual, non-BOOTSEL, will mount as A8-PICOCART.

  • Thanks 1
Link to comment
Share on other sites

19 hours ago, spicyjack said:

Sorry, I forgot one bit of info when flashing UF2 files onto a Pico.

 

If you've already flashed a UF2 file to your Pico(s), and you want to flash a different one, unplug the Pico from power, press and hold down the BOOTSEL button, then plug the Pico back in to power.

 

Holding down BOOTSEL and applying power will cause the Pico to start up in "USB Mass Storage Mode", which allows you to drop a new UF2 file on to the device in order to program it.

Yeah, something about that flash_nuke didn't quite work with mine. I made up all of my A8PicoCarts and the one I kept for myself isn't wanting to work for some reason. I was trying to narrow the problem down to the Pico clone or the PCB or my soldering job. These came at a perfect time to help me. The blink firmware flashed perfectly and worked, so my Pico clone appears to be good. The problem came in when I tried the flash_nuke. It appeared to work properly, unmounting itself after flashing, but upon reconnecting the Pico clone and trying to flash with the A8PicoCart firmware, it wouldn't flash. The copy would only make it over to about 57% and then it would hang and eventually fail. If I just went straight from the blink firmware to the A8PicoCart firmware without nuking in between, it seemed to work just fine.

 

Has anyone else tried these and ran into something similar?

 

Link to comment
Share on other sites

On 10/3/2023 at 6:14 AM, bfollowell said:

Yeah, something about that flash_nuke didn't quite work with mine. I made up all of my A8PicoCarts and the one I kept for myself isn't wanting to work for some reason. I was trying to narrow the problem down to the Pico clone or the PCB or my soldering job. These came at a perfect time to help me. The blink firmware flashed perfectly and worked, so my Pico clone appears to be good. The problem came in when I tried the flash_nuke. It appeared to work properly, unmounting itself after flashing, but upon reconnecting the Pico clone and trying to flash with the A8PicoCart firmware, it wouldn't flash. The copy would only make it over to about 57% and then it would hang and eventually fail. If I just went straight from the blink firmware to the A8PicoCart firmware without nuking in between, it seemed to work just fine.

 

Has anyone else tried these and ran into something similar?

 

I'm not sure why the flash_nuke program seemed to cause issues with the re-flashing of the A8PicoCart firmware afterwards, but I did find out that the original problem I was using it to try and diagnose wasn't with my Pico clone or my soldering. The problem appears to be just a little sloppy play in the PCB/cartridge slot on the 600XL I was using to check it out. I have to have it entered just right for it to pickup the cartridge properly. If I don't, it will typically just not pick it up at all and will boot straight into BASIC, but occasionally the computer will lockup. Hopefully, getting it installed in the case I've had printed and is on the way will help with that. Anyway, it looks like, other than not being a 100% perfect fit for this particular cartridge slot, my A8PicoCart is fine.

 

Link to comment
Share on other sites

Updated version of PCB & 3d Print files now uploaded to the github site:

 

https://github.com/robinhedwards/A8PicoCart

 

This rotates the purple pico by 90 degrees to make it physically impossible to connect USB when the cartridge is inserted in an Atari. This removes any risk of accidental damage to the Atari by back-powering via USB.

 

I've also updated the firmware (& source code) to support Microcalc (Car type 52). Manual also revised slightly.

 

Anything confusing or missing, let me know.

 

Robin

 

  • Like 4
  • Thanks 2
Link to comment
Share on other sites

PCB-bevel.jpg.0d5a2a595ff8fd8092920895fa

 

As a general advisement to those who might not know: Bevel your card edges for your PCB to reduce wear and tear on your cartridge port, especially considering this is something you'll be apt to pull and insert several times to load different software via the USB port. The ideal time to do this would be before you solder anything to the board but you can probably ground a steel handfile to mitigate ESD.

 

Quote

...a standard steel handfile, gently rubbing at a 45 degree angle and checking after a few strokes to gauge the edge. Belt sander would certainly work, as would dragging the edge against a piece of sandpaper taped to a flat surface, but you'd want to use a fine grit.

 

  • Like 5
Link to comment
Share on other sites

I finally received the case I'd had printed. Purple like Robin's was crazy expensive and being from Kentucky originally, Wildcat Blue is my favorite color anyway, so blue it was. I decided to use a uni-bit to drill an access hole for the BOOTSEL button so that I don't have to disassemble the cart every time I want to update firmware. My only mixed feelings are about the characters on the label piece. Robin's looked so good.  I'd thought I'd take a small model paintbrush and lightly go over the characters on mine, but they're barely raised. The hairy strands on the characters showing in this image rubbed off fairly well but the characters are barely raised, so I'm not sure how they'd turn out. I've not made my mind up if I want to chance bodging it up or not.

 

IMG_2374.thumb.jpeg.741a833da07ac0c12c1c95ca351cb66f.jpegIMG_2375.thumb.jpeg.e6d4e65e4924a81eb3bf58c87594a5d2.jpegIMG_2377.thumb.jpeg.03155227712ea303b809d19f2f946135.jpeg

Link to comment
Share on other sites

i think it is because they printed the case with the case lying flat on the bed where the text is. it ain't not easy for a printer to do an overhang like this. printing upside down would require supports and longer print time, but the letters would look nicer I guess.

Link to comment
Share on other sites

21 minutes ago, pirx said:

i think it is because they printed the case with the case lying flat on the bed where the text is. it ain't not easy for a printer to do an overhang like this. printing upside down would require supports and longer print time, but the letters would look nicer I guess.

The case as designed has the front shell and the logo printed as separate pieces, so it looks like this printing service combined the two into a single 3D print.

 

The case front has a rectangular void missing from it, which is the same size as the logo piece; you glue the logo piece into the void on the front shell once the logo piece is printed.  I'm just about to print the case front and logo, I will post pictures when it's done.

Link to comment
Share on other sites

5 minutes ago, spicyjack said:

The case as designed has the front shell and the logo printed as separate pieces, so it looks like this printing service combined the two into a single 3D print.

 

The case front has a rectangular void missing from it, which is the same size as the logo piece; you glue the logo piece into the void on the front shell once the logo piece is printed.  I'm just about to print the case front and logo, I will post pictures when it's done.

 

Yes, that is how mine is. The picture just shows the label piece in place. The front half of the case and the label are two separate pieces though.

 

Link to comment
Share on other sites

I'll call this one the "Orange Creamsicle A8PicoCart".

 

The white was the test filament that came with the printer, so not the greatest stuff out there.

 

I got too happy with the superglue 😐

 

This 3D print shows the updated rear shell, so that the updated PCBs, with the USB port of the Purple Pico board pointing "down" towards the cartridge connector, can be plugged in to USB only when you remove the cart.  My PCBs should be here in 2 weeks or so.

 

Usually, to print in multiple colors, you tell your slicer program to insert codes into the 3D printer file (*.gcode) which tells the printer to pause printing and move the printhead away from the print bed, so you can swap filament.  The default "logo" file that comes in the repo doesn't have the pause codes, because they can be different for different makes/models of 3D printers, you have to add them for your printer when you slice up the model to be printed.

 

I've attached the logo file that I created for my Creality Ender 3D printer; if your printer is an Ender 3D or compatible with it, then the attached CE3E3V2_a8pico_logo.gcode file (below) should work for you too.  You'll know when it's time to swap filament, the printer gets very loud and beepy, probably about 10 minutes after starting to print.

 

img_9478.printed_a8picocart.unassembled.thumb.jpg.9a4467adb0c77b8ea20134765bccb709.jpg

img_9479.printed_a8picocart.assembled.thumb.jpg.9bc75fa1ec1013f243d6234201f3c926.jpg

CE3E3V2_a8pico_logo.gcode

Edited by spicyjack
  • Like 2
Link to comment
Share on other sites

9 hours ago, Retrocactus said:

I wanted to print the case on my resin printer so I modified the case to delete the insert for the logo and then simply added a sticker with the logo on it.

 

image.thumb.jpeg.94a91e2dd0d262c314a65663f6f2ea88.jpeg

I can post the edited STL file if anyone wants it.

Please post this edited STL.

Link to comment
Share on other sites

18 hours ago, spicyjack said:

I'll call this one the "Orange Creamsicle A8PicoCart".

 

The white was the test filament that came with the printer, so not the greatest stuff out there.

 

I got too happy with the superglue 😐

 

This 3D print shows the updated rear shell, so that the updated PCBs, with the USB port of the Purple Pico board pointing "down" towards the cartridge connector, can be plugged in to USB only when you remove the cart.  My PCBs should be here in 2 weeks or so.

 

Usually, to print in multiple colors, you tell your slicer program to insert codes into the 3D printer file (*.gcode) which tells the printer to pause printing and move the printhead away from the print bed, so you can swap filament.  The default "logo" file that comes in the repo doesn't have the pause codes, because they can be different for different makes/models of 3D printers, you have to add them for your printer when you slice up the model to be printed.

 

I've attached the logo file that I created for my Creality Ender 3D printer; if your printer is an Ender 3D or compatible with it, then the attached CE3E3V2_a8pico_logo.gcode file (below) should work for you too.  You'll know when it's time to swap filament, the printer gets very loud and beepy, probably about 10 minutes after starting to print.

 

img_9478.printed_a8picocart.unassembled.thumb.jpg.9a4467adb0c77b8ea20134765bccb709.jpg

img_9479.printed_a8picocart.assembled.thumb.jpg.9bc75fa1ec1013f243d6234201f3c926.jpg

CE3E3V2_a8pico_logo.gcode 89.19 kB · 1 download

Just putting it out there, could someone redesign the logo and make it more of an imprint/embossed, then possibly embed it into the cart front, this way it can be printed face down?

Like this?

 

image.thumb.png.6de148561f919883eff413d9e19b31b3.pngimage.png.6858345db4cc86a2a53606530929b78a.png

Edited by Overange
added images
Link to comment
Share on other sites

@Overange That's a perfectly do-able approach.

 

The reason I designed it with a seperate logo piece was because I wanted the logo picked out in white against a different coloured background, which can be done by changing the filament at a specificed z level. But there's no way to do that with the imprint approach you suggest.

 

Robin

 

Link to comment
Share on other sites

1 hour ago, electrotrains said:

@Overange That's a perfectly do-able approach.

 

The reason I designed it with a seperate logo piece was because I wanted the logo picked out in white against a different coloured background, which can be done by changing the filament at a specificed z level. But there's no way to do that with the imprint approach you suggest.

 

Robin

 

Or give multiple options:-

 

One is to have a another logo STL badge of which is imprinted, and you could print your first layers with say white then the last few layers are substituted with cart colours, giving that embossed look.

 

The other is the one piece cart STL with with the imprinted logo merged into the cart.

 

One thing i have done is started to print with those funky coloured samples they give away, then after a few layers swapped filament out with another colour, the effect is pretty cool.

I tried this as I had a filament that was being an absolute sh!t to stick the bed with out it warping or coming unstuck etc etc, you know those days, as not to waste it, I tried the above and yeah, used up the shit filament ;)

 

  • Like 1
Link to comment
Share on other sites

I just discovered a problem when using the built-in A8Pico Cart on my 576NUC+ likely having to do with the virtual OS aspect.

 

Background...

The 576NUC+ has four 8KB language/game slots which are selectable via PS/2 keyboard short-cuts (ALT+1-4). This is done by manipulating a ROM banking bit on the 64KB OS/Language EEPROM, and the Game Enable (/GE) bit on the MMU as seen below. The MMU being used in the 576NUC+ is a copy of the original XEGS MMU so it's designed to accommodate the OS, BASIC, and the Missile Command game in normal usage. In the case of the 576NUC+ I've doubled the ROM size so that we can essentially select one of two System ROMs via the ROM banking bit (A15). This gives us 2 selectable OS's and 4 selectable 8Kbyte language/game slots.

 

Screenshotfrom2023-10-1011-43-32.thumb.png.76b82e983185d5c4cfca84f6406da955.png

Problem...

When trying to bank into what would normally be the game via the MMU game enable bit, the system will boot as if there is no language/game present. If I remove the Pi Pico, the system works as normal with all slots available.

 

I believe this is because the modified Altirra OS that was chosen for the A8Pico Cart firmware is not an XEGS variant.

 

EDIT: Its only the Game Slot that doesn't work when the /GE bit is brought low. The Basic slot works just fine.

 

@electrotrains Can this be corrected?

Link to comment
Share on other sites

20 minutes ago, mytek said:

I just discovered a problem when using the built-in A8Pico Cart on my 576NUC+ likely having to do with the virtual OS aspect.

 

@electrotrains Can this be corrected?

I'm not sure I fully understand (I've never had a XEGS).

 

The Altirra OS is used ONLY when an ATR is selected from the A8PicoCart menu - at all other points the system's OS is being used.

So during boot, menu display, XEX/CAR selected, or X - picocart disabled - its just using the system OS.

 

Are you saying that when you select the game slot (missile command) that the Pico menu is displayed instead, when the system boots?

Can this happen on a normal XEGS? i.e. playing missile command despite a different cart being inserted?

 

Or is it PicoCart ATR mode you are talking about?

 

Robin

Link to comment
Share on other sites

40 minutes ago, electrotrains said:

I'm not sure I fully understand (I've never had a XEGS).

Well here's the sequence of events that I'm seeing...

  • Pi Pico plugged in and ready to go.
  • Power-up system with slot 1 active (Altirra Basic) - ROM BANK = 0 - /GE = 1
  • The A8 Pico menu appears, but per usual pressing 'X' exits the menu and we boot into Altirra Basic
  • Same sequence of events work if we pick slot 2 (Fast Basic) - ROM BANK = 1 - /GE = 1
  • Power-up system with slot 3 active (Editor/Assembler) - ROM BANK = 0 - /GE = 0
  • The A8 Pico menu appears, pressing 'X' exits to essentially Self Test - Language slot NOT present
  • Same sequence with slot 4 selected instead (Speed Script) - ROM BANK = 1 - /GE = 0

If I remove the Pi Pico from the system, then all the slots work as expected.

 

In all these cases I'm not trying to run anything from the A8Pico Cart. Although when I do mount something it works as expected - no issues.

 

Edit: I just saw your newest post - give me a second and I'll respond with a schematic.

 

Link to comment
Share on other sites

The Pico Menu is itself an 8K cart image, so after boot it is asserting S5.
When the 'X' choice is made then the code informs the Pico to drop out of the menu and run a cart - however, as no cart is selected, S5 is set low and the pico simply goes into an infinite loop as no longer needing to sniff the bus.

At the same time the code below continues (as has been copied to RAM) and so a Cold Start is requested.

 

	lda #CART_CMD_ACTIVATE_CART	; tell the cart we're ready for it switch ROM
	sta $D5DF
	jmp COLDSV

 

Link to comment
Share on other sites

31 minutes ago, electrotrains said:

@mytek how are RD4/5 & S4/S5 connected to the MMU in your system? Just directly connected to the equivalent pins on the pico? Is there a schematic I can look at?

In the meantime to answer your questions...

 

S4 and S5 are directly connected, but RD4 and RD5 are going through an analog switch as part of a protection circuit (sometime earlier I did post something on this aspect).

 

I have an idea though that might help zero in on what's going on. If someone out there has an XEGS, can you please plug in your A8Pico Cart and see if the game still boots up when exiting by pressing 'X'.   EDIT: leave the XEGS keyboard disconnected for this test. EDIT2: Opps that means you won't have a keyboard to press 'X' on :lolblue:  --- Instead leave keyboard connected and press SELECT on power-up --- that should make the XEGS want to boot the game, but I would imagine that the A8Pico Cart menu will take over.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...