Thursday, August 12, 2021

PiStorm Accelerator with AmigaOS 3.2 on Amiga 500

 Today I am taking a look at the PiStorm accelerator with RTG support on my Amiga 500, which is installed in a Checkmate A1500Plus case.

I read about the PiStorm online and became more and more curious about it, as the potential of it became clearer.

Basically the PiStorm is a Raspberry Pi 3A+ system board running PiStorm software to emulate the functionality of a 68020/030/040 CPU with 128MB fast memory, connected to a special hardware converter that fits on the 68000 CPU socket, in place of the normal 68000 CPU.

It also supports emulation of RTG graphics via the Raspberry Pi's HDMI output connector, WiFi internet access via the Pi, and HDF hard disk emulation via a pi-scsi.device driver using the 32GB MicroSD added to the Pi system. 

The upshot of the PiStorm is that I get an accelerated Amiga 500/1000/2000 with 128MB fast mem, HD, WiFi networking, and full RTG support for the fraction of the price of a new/old Accelerator board with 128MB memory, RTG graphics card with HDMI output, and a network card. No wonder people are so interested in this!

Before I get too far into it, I should stress that PiStorm is very new and very beta. There are plenty of things that don't work well or properly yet, but the things that do work have definitely got people excited to try it, including me. 

I know some people are self-assembling the 68000 cpu socket hardware converters via a publicly available PCB design, attaching the Pi and then setting up the Pi for the PiStorm setup config files, HDF setup and a load of other stuff themselves. Thats great if you have the time and skills to do that... 

Do I really know how this black magic PiStorm works? Nah, not really. Do I have the time to work it out? Not at all. That's why I bought it as a PiStorm bundle from, all setup, complete with AmigaOS 3.2 licensed hard disk setup, all ready to go. You can buy it here. You can choose what you want included with it, depending on how much hardware you have already, and how much setup work you want to do yourself.

Below is what I got - the 68000 socket converter with GPIO socket to connect the Raspberry Pi 3A+ to, the Raspberry Pi 3A+, a 32GB MicroSD (inside a SD Card converter) nicely labelled as AmigaOS3.2 (CD was included separately but not shown), and the 68000 relocator, just in case I needed it:

I wasn't sure if I would need the 68000 relocator, but since I have a number of upgrades on my Amiga 500 system already, I thought it better to order it with the rest and see if I needed it or not. I didn't want to wait another month and extra postage costs if I found it didn't fit...

Besides, I bought other bigger stuff with this order as an early birthday present for myself, some catch up Amiga Future magazine reading (been buying Amiga Addict too), and some other cool hardware which I will look at when I start a build with it in another future blog post - no prizes for guessing what that is :-)

Anyway, let's get back to the PiStorm! 

My Amiga 500 is housed in a Checkmate A1500 Plus case, with a ACE2 2MB Chip memory upgrade, Indivision ECS, ACA500, Gotek floppy drive emulator, floppy drive DF0 selector switch, and AmigaOS 3.1.4 kickstart ROM installed. 

I covered this build in previous blog posts I will link here if you want to review first to see the setup of this Amiga 500 in more detail. I also installed a Vampire 500 V2 in it previously, but went back to the ACA500 in frustration. All covered in these blog entries:

Here is the system internals of the Amiga 500 build. I opened the Checkmate A1500 plus case below to start work on the PiStorm upgrade:

One useful thing left over from the failed Vampire 500 build is the HDMI connector and cable I routed in the case to connect to the Vampire's HDMI output. I left it in the case, and can re-use this with the PiStorm HDMI connector!

First job is upgrading the kickstart ROM from 3.1.4 to the 3.2 rom, which I bought previously with the 3.2 ROM chips I ordered for the A1200, A2000, A4000 and A4000T. I previously covered the AmigaOS 3.2 on the Amiga 1200 here

Below you can see the old kickstart 3.1.4 rom (I covered the serial number to save me having to edit the image later):

I removed the ROM with a chip removal tool, ready for the new 3.2 rom chip.

I carefully installed the new AmigaOS 3.2 rom chip, ready to roll:

Before going further, I tested the system worked with the new 3.2 rom installed. It worked perfectly first time, showing the Boing Ball and AmigaOS3.2 insert disk screen.

I booted up a AmigaOS 3.2 Install floppy disk just to confirm 2MB chip memory and other items were still working as expected - all good:

Next step is to install the 32GB MicroSD card in the Raspberry Pi 3A+, which has been preloaded with the required Pi Linux and PiStorm configuration, plus the HDF hard disk file with AmigaOS 3.2 and RTG support preinstalled.

I strongly recommend at this point to backup the micro sd card using win32diskimager under Windows 10 (or other similar tool) so you can easily recover the MicroSD card if you screw something up.

In my case, I backed up the Micro SD card to an image file on my Windows 10 PC, and then wrote the image to a new spare 32GB MicroSD card and tested in the Pi 3A+ to make sure my backup worked...which it did! :-)

Reviewing the 68000 CPU socket location in the Checkmate A1500 plus case, I was a little concerned about whether the Pi 3A+ would fit on top of the socket converter hardware and still clear the ATX power connectors at the top end of the 68000 socket.

This is why I bought the 68000 relocation board, just in case it doesn't. So I removed the 68000 CPU next:

Here is a closer look at the 68000 CPU socket converter thingy. As mentioned there is a GPIO connector socket on it, which is where the Raspberry Pi 3A needs to be connected.

Here is the underside of the converter:

Installing the socket converter in the 68000 socket has to be done without the Pi attached, otherwise you can't see what you are doing!

After checking the pins are aligned correctly, I pushed it into place:

As you can see, the clearance from the GPIO socket to the power connectors above is potentially an issue - looks like it is going to be a tight squeeze for the Pi:

Fortunately the Pi 3A is a very slim board, with only one usb port, HDMI port, audio out and USB power connector, all of which are very slim height wise. Also, it gets it's power from the GPIO port when connected to the converter, so there is no need for a separate USB port cable to power the Pi:

However, I needed to remove the ATX power connector temporarily in order to fit the Pi 3A+ there.

Here is the Pi 3A now attached to the GPIO socket on the 68000 converter:

It was clear to me that if you wanted to change the kickstart rom in the future, you will need to remove the Pi first.

When I plugged the ATX power cables back in, I found the Pi 3A+ is *just* lower than the connector and cable - phew!

But yeah, it is a tight fit! But hey, it fits right? A miss is as good as a mile :-)

Next I plugged in the HDMI cable to the HDMI connector on the Pi 3A, which is connected to the external HDMI connector on the rear of the Checkmate A1500plus case, as covered in my previous blog posts on the Vampire 500 setup.

I think I need a right angle HDMI cable here though - it does push on the Ace2 expansion installed next to it and lifts the edge of the Pi slightly, but not enough to be a problem.

I think even my A600 Vampire right angle HDMI connector wouldn't fit in this gap though...

Temporarily, I connected a Raspberry Pi keyboard and mouse to the USB port on the PI in case I needed to do anything on the Pi itself.

Here is the setup, almost ready for power on. I connected a HDMI monitor to the Pi HDMI output, and the previous VGA TFT screen to the Indivision ECS as usual.

On power on, I get a definite long wait while the Pi boots up and runs the PiStorm software. Until then, there is no CPU for the Amiga to use, so it will just sit there until it PiStorm CPU emulation is running and can operate the computer - this takes around 30 seconds or so. Out of the box AmigaStore configured the PiStorm to run as a 020 CPU:

When the Pi finishes booting the CPU emulation is running and the Amiga boots from the HDF hard disk on the 32GB SD card on the Pi 3A. It works!

Intially, the HDF is setup to use a standard PAL screen mode, utilising the onboard video out on the Amiga. My 2MB chip from the Ace2 is working fine, and the 128MB memory is also visible:

There is a PiStorm drive visible, that contains all the drivers and utilities on the Amiga side of things. Very handy. I gather you can setup networking via the Pi too - I'll have to try that later!

I ran SysInfo, included on the drive also as delivered, and checked out the performance of the 020 CPU - not too shabby, faster than an 040-25Mhz in the Amiga 4000.

Checing the hard disks attached, they are formatted FFS but this being AmigaOS 3.2, we don't need to worry about the 2GB/4GB limits.

The emulated Zorro expansion cards for the CPU accelerator, memory, network card and rtg graphics card are also visible here.

To utilise the PiStorm RTG screen modes on the HDMI output we need to change the screenmode settings. As you can see, has already set up the required RTG drivers under AmigaOS 3.2 so you can start using the RTG screen modes:

Your mileage may vary but when I selected 1080p output I couldn't read the text on the screen.

Good luck reading that!

Squinting I changed the RTG screenmode back to PAL:

Ah, I can see again!

Running RTG 32bit colour at 800x600 was perfect and displayed fine, as shown below. The higher modes I found the text too small to read. Probably I could adjust the font size to compensate. I might do this later.

With that done, I could now run AmigaOS 3.2 from RTG screenmode from boot up, no need for the native display unless running games, demos or requiring access to the early boot menu.

I still needed to adjust the fonts though. Seriously, I hate Topaz. It looks rubbish. For the next release of AmigaOS can we please change the default font to something nicer...

Looks a bit better now.

Having 32 bit colour means all the icons look great now.

I put the Checkmate A1500 Plus case back together and positioned the HDMI screen back on top. As this screen also has VGA and DVI inputs, I connected the native Amiga Indivision ECS output to the same screen, allowing me to switch modes easily as needed without a second screen. I also ran a USB extension cable from the Pi3A+ through the rear of the case so I can re-connect the Pi keyboard if needed.

Booting up an Amiga and getting a Pi booting prior to the CPU emulation taking over does feels strange.

I think I might switch the screen to native output and wait 30 seconds and switch back once the pi has booted up...feels less like I am using a Linux machine that way. 

It should be stressed PiStorm is still using the original Amiga hardware, with the Pi emulated CPU, graphics cards, network and memory features are now available to the system. 

I can hear the "It's not a real Amiga" comments coming already. I haven't read the forums but I imagine this is a common complaint of this solution from Amiga original hardware purists. 

Difficult one really, when FPGA and emulated solutions offer a much more cost effective way of upgrading Amiga hardware for those of us without deep pockets.

Unless you can afford to spend big money on RTG graphics, accelerator boards, network cards and memory cards, PiStorm is a great solution for upgraders on a budget, while still using your Classic Amiga hardware rather than a fully emulated platform.

That said, it would be nice to hide this output on boot somehow...anyone know how?

Once the Pi boots up and CPU emulation starts the Workbench booting from HDF appears almost instantly.

What I did want to do next is setup remote access to the Raspberry Pi 3A+ from my PC so I could transfer files more easily, and have a way to get those files from the Pi into the HDF file. 

Given the location of the Pi 3A+ inside the Checkmate A1500 plus case, it is annoying to have to open the case to get to the microSD card every time I want to copy something to it.

Fortunately there is a better way.

Let's look at accessing the Pi's file system from within the Amiga 500 environment. I read up on this and there is a good guide here that assists with this setup, and ethernet setup too.

On the included PiStorm disk, mounted on the Workbench as delivered on the SD Card, there is a number of utilities available. One of these is 314fs file system handler and a mount list entry. 

Reading up on this the A314 is a virtualised implementation of an expansion for the Amiga 500 using PiStorm, which can then be used to add things like the Pi file system mounting, ethernet device and other things too.

Note that as delivered, the Pi file system handler and mount list is not installed on the AmigaOS 3.2 HDF. This is how you do that:

copy pistorm:a314/a314fs l:

type pistorm:a314/a314-mountlist >> devs:mountlist

Doing this will copy the file system handler to l: and append the required mount list list entry for the Pi file system, which is setup to point to /home/pi/pistorm/data/a314-share

Here is that folder on the Pi 3A+

Please note that if you are using RTG mode under AmigaOS 3.2 to display the workbench via the Pi HDMI, you will need to change it back to PAL and power off/on to be able to interact with the normal Pi shell as above. 

This means being able to access the pi file system from the Amiga side, and being able to transfer files via the network to the Pi 3A+ more important, as having to do this step each time I want to do something on the Pi really sucks. I will do this shortly.

Now, if I go back to the AmigaOS 3.2 workbench and run mount Pi0: it will mount the folder above on the Pi to a drive available on the Amiga. Very cool:

I opened the PiDisk volume on the Workbench and there is a Readme.MD file in there already:

As a last step on this part, I added a mount pi0: command to the s:startup-sequence so it will be mounted automatically so it is available every time the Amiga 500 system boots up.

With that done, I copied Larn (one of my favourite PD games on the Amiga) from floppy disk to the hard disk on the Amiga 500 and played it for a bit before I moved on to the next step. Because I needed a break, and also, why not! :-)

Next I switched back to the Raspberry Pi console via the screenmode set to PAL and power off/on method. Hopefully the last time I ever have to do it. I ran sudo raspi-config to setup the networking:

As the Pi 3A+ has wireless LAN built in, I can proceed to set that up:

I bash in the WiFi SSID and password and we are good to go. I tested access to the internet to be sure - all good:

I then run ifconfig to check the ip address assigned to the Pi 3A+ as I will need this to connect to it remotely.

Next I went back into raspi-config and enabled the SSH server, so I can connect to the Pi 3A+ over the network from my PC.

All done.

I should mention that the Pi 3A+ keyboard mapping as delivered is odd out of the box, not using a standard US keyboard, which is a pain to enter \ / keys. You can change that here too.

With that setup done, I could put the screenmode of the AmigaOS 3.2 back to RTG again, and move to my recently rebuilt Windows 10 PC  for the next part.

I need freeware Putty and WinSCP installed on my PC for this. Putty for the SSH console access, and WinSCP for file transfer - although any SSH and SFTP client will do.

I setup Putty to connect via SSH to the ip address of the Pi 3A+ I learned earlier, and it connected first time and works great. I can now access the Pi when I need to make changes to it without impacting the Amiga 500 setup each time.

Next I configured WinSCP to connect to the Pi 3A+ via SFTP. I then selected the a314-share folder that is mapped to the Amiga 500 AmigaOS 3.2 hard disk setup via Pi0: so I can start to transfer files to the Pi 3A+

With that done, I can then switch back to the Amiga 500 and see those files under Pi0: and ready to copy to the HDF to use. 

The copy time from the Pi 3A+ share folder to the HDF itself is quite a bit slower than I thought it would be, so some patience is needed here. Actual it is REALLY slow. But it works, and I can now transfer my mods, games and applications more easily to the Amiga 500 to build out my AmigaOS 3.2 Workbench how I want to.

Some have suggested prepping a HDF with what you want to have on a linux machine, then copy it to the pi and mount it as a disk on the Amiga as a much faster method if you have a lot of data to transfer. I didn't try this but something I thought I should mention.

I set to work installing software! Listening to mods via Hippoplayer makes the transfer time fly by :-)

One thing I did have to do was turn on using MagicWB colours in the Workbench Prefs, as I have lots of MagicWB icons from stuff I am transferring across, and also programs like MUI, etc, use it:

EaglePlayer works well but I can't use the 24bit skins - it complains about guigfx library needing to be v11+, but actually it is version 20! Overwriting with an older version might break stuff in OS3.2 so I left Eagleplayer using lower colour skins for now. Anyone have a fix for this?

A cool feature I learned about while reading through the PiStorm Github documentation, is that you can run an Amiga command called "pi" which will connect to the console of the Pi 3A+ so you can run commands on the Pi while the Amiga 500 is running! 

"pi" is already copied onto this prebuilt HDF setup so I can just run it straight away:

It connects to the terminal console and you can run linux commands directly in the AmigaShell:

You can run commands to kill the emulation like "sudo pkill emulator" or reboot the Pi with "reboot" and even shut it off with "poweroff"

You can issue these commands as "pi" commands from the amiga side in sequence (as you would normally run these commands together) to avoid the need to type them each time. ie. create a Amiga executable script to do it, eg.

pi sudo pkill emulator
pi reboot
pi poweroff

Pretty neat. Also you can run Nano linux text editor in the pi connected session on the Amiga side to edit Pi 3A+ located config files on the fly.

I can use the AmigaOS "pi" command to run other linux commands on the Pi 3A+ like getting it's most recent dhcp ip address for access via SSH or WinSCP. Very nice.

Next up, I moved on to getting the internet working on the Amiga 500 using the PiStorm Ethernet passthrough functionality. I switched back to the Windows PC and Putty SSH session for this, as Nano text editor displays nicer here than in AmigaShell.

Following the instructions on Github Wiki, I installed the pre-requisite python2-pip and other related configurations.

I then copy the tap0 config for the pi 3A+ side:

More copying files and more installations:

I need to allowing ip forwarding next in /etc/sysctl.conf:

That done, I have finished the Pi 3A+ side of the configuration. Next I switched to the Amiga. I needed to install Roadshow, which is a commercial TCP stack offering that I have purchased. You can also download the demo version if you want to just try it out.

Yep, I want it all, thanks. :-)

I install the support docs, which are essential really, as configuring Roadshow sucks. Seriously. I have complained about this before. This is a commercial product - virtually every other Amiga TCP stack has a GUI to configure it. Give me a GUI please...

Amiga Reboot needed at the conclusion of the Roadshow install:

After rebooting, I open an Amiga Shell and browse to the PiStorm:a314/ drawer - I copy the a314eth.device file to DEVS:

I then copy the preconfigured roadshow files to their right places:

That done, I tested and yes! I can ping

It works! I then installed the iBrowse 2.5 web browser (updated 2020 commercial browser for classic Amiga) - which I have purchased:

With the install done, I also installed AmiSSL 4 latest version, which is needed for SSL enabled websites, which is most of them these days! I could then run iBrowse.

My first browse on the Amiga 500 using the updated iBrowse 2.5 web browser is of course to Aminet. It works!

Now I can download files directly from the internet to the Amiga 500 without transferring from another computer. Fantastic.

I finally installed sgrab at this point so I could get some better screengrabs on my Amiga 500 than using my iphone...

I got on with installing AHI on the system, as it is needed for a number of programs, including AmigaAmp, which is also on my to-do list:

AHI installed fine, just using the MUI prefs and standard Paula and Filesave devices. I noticed there is a PiAudio driver floating around which apparently is not working yet. Might have to play with that later...hmmm, hardware decoding mp3 playback, that would be a great add-on.... :-) 

I have to say, while going to Prefs for the AHI preferences, I think the AmigaOS 3.2 new icons really do look nice - having true bit colour means I can see them in their full glory:

I set about changing AHI settings to HiFi 8 bit stereo for Music Unit 0 - by default it is Mono:

That done, I could install AmigaAmp:

AmigaAmp's latest 68k version was released in March 2021 - it is great to see the ongoing development. I changed the Prefs in AmigaAmp to use low quality 22050 output. I am limited by the use of the 020 CPU and relatively slow speed for MP3 playback. I need a hardware solution. Might have to take the MAS Player hardware from my Amiga 3000 back to this machine!

I then used the new ADF mounting functionality in AmigaOS 3.2 to double click each adf to mount the Final Writer 97 ADF files and get the install underway. This is done while listening to mods in Eagleplayer and transferring mp3 files from the Pi0: disk to my Data drive. Multitasking is great isn't it?

With Final Writer installed, I opened up a full screen rtg instance and bashed out my first document with my PiStorm enabled Amiga 500!

I should warn though, as mentioned at the start of this post, that when moving from Workbench friendly applications to banging the hardware stuff like games and demos, there are issues with speed, affecting the running of most OCS/ECS games and demos on the PiStorm enabled Amiga system. 

The sped up CPU definitely causes plenty of problems, but I don't know if that is the only reason as WHDLoad games should be locked in their speed use and they are also impacted. Running native hard disk based games/demos or floppy based games is also impacted. 

Reading the FAQ in the PiStorm Discord channel, they acknowledge there are timing issues for games/demos, and there is no plans to emulate 68000 CPU, with the 32bit 68020, 68030 and 68040 the focus.

There is a lot of active development on the PiStorm software, and big improvements have already been made in this area and there are frequent updates.

I have found some demos work fine, others run way too fast and crash out. Every OCS/ECS game I tested runs too fast and some are quite glitchy with offset screen displays too. A good example to see all of these together is Psygnosis's game Agony.

Games have a lot cut off the bottom of the screen displays when they use the full screen size, like Pinball Dreams for example. The speed of the music and the main game is ok though. Note I adjusted the screen position further up to confirm but the actual screen bottom is exactly as shown below:

I noticed that sometimes I couldn't get physical floppy disks to boot up as they weren't detected correctly on a soft reset - requiring a hard power off/on to get the disks to work as expected. Not sure why that is.

I expect that anything using RTG graphics and playing nicely with the Amiga hardware speed will work ok, but I haven't started to test that yet. 

So is this PiStorm platform ready for normal Amiga use? No, definitely not yet, in my view. It is very Beta. But it is very promising indeed for what it offers Classic Amiga users for such a cheap cost of admission. If the issues impacting games and demos can be ironed out, this could potentially be a brilliant platform for the future.

For now though, it is more a curiosity and it is really is fun to play with. 

If you plan to get a PiStorm, make sure you have another Amiga to run games and demos on in the meantime while the emulation software is improved.

I expect I will do more with the PiStorm over the next few weeks, it is a very interesting new platform to explore!