Okay, we are right on time.
Many thanks.
So Andrew with the Pistole.
Hello everyone.
I was stupid enough to do this from an Amiga 1200,
which is great because I don't have a screen in front of me,
so I'm going to try and see what I'm doing whilst I'm doing it.
But it'll make sense later.
So I'm here to talk about Pistole.
My name is Andrew Hutchings,
I'm also a learner at Linux Jedi.
During the day, I worked for a non-profit called the MariaDB Foundation.
And by night, I restore Commodore Amiga's,
Acorn computers, I design upgrades for them,
and I'm part of the Pistole community
and a whole bunch of other things.
I've also written for PixelAdex to go by that,
because the next issue's got a big article by me in it.
And I'm also going to plug...
The aperture there was made by Stu Cambridge,
who from Sensible Soccer fame,
he did cannon fodder and all of that lot.
And you can get him to do Doodles of You just like that from his site.
What's it called now? Design Droid.
He doesn't know I'm plugging it, but I love his work.
So anyway, about Pistole,
it was a project created by a guy called Claude Schwartz.
And if you've ever tried to use or upgrade Commodore Amiga today,
you need a processor like a 68030 or a 68060.
If you want a 68060 with a board and RAM and everything like that,
you need to sell a kidney, basically.
They are really rare, really expensive nowadays.
So the idea was to create a very fast budget accelerator.
And you can get a lot of compute resources from something called a Raspberry Pi,
which you probably all know about.
So what this essentially does is it emulates the 68000 processor
on a Raspberry Pi running Linux originally,
but the rest of the Amiga motherboard was used.
And then it adds things such as RTG.
Now, RTG stands for Retargetable Graphics.
And essentially, that means it's like a second graphics card for your Amiga.
So this is what I'm actually projecting from right now, is the RTG from my Amiga.
It has the native Amiga.
If I tried to run an old Amiga game on it,
you wouldn't see it on the screen right now,
because I haven't got the output for it.
I'm going to talk about that a little bit later.
It adds virtual scuzzies.
So the SD card on there is basically a driver for the Pi,
as the Pi Storm, to talk directly to the Raspberry Pi's SD card.
So it's rather than being emulated,
it's almost like a direct driver in a way.
And it also adds RAM.
So I've got a Raspberry Pi 4 in here.
So nearly 2 gig of RAM added to what is normally a 2Mega system.
So a little bit of a boost.
And everything is open source.
The boards are open hardware and stuff.
What we used to do is a group buy where you could come along
and say, I want to buy one of these,
and we'd all go to JLCPCB, buy loads of boards together,
and you just have to solder on the headers,
which were great until the chip shortage,
and then that kind of died off completely.
But back then, I said you can pay more than 20 bucks for a Pi Storm.
So about 18 pounds, it's probably about 20 odd US dollars, whatever.
So it was really, really cheap.
You just need a Raspberry Pi.
So this is what the first one looked like.
Now, you can see there's quite a few chips to it
on top of what is normally a Pi GPIO there.
So essentially the problem we have is the Pi GPIO is 40 pins,
but you only get about 26 GPIO lines from that.
And the Amiga, 16-bit Amiga has 16-bit data bus,
and then a 24-bit address bus,
and then control lines on top of that.
It's a lot more than you have IO lines.
So what we've got here is a CPLD chip,
a programmable logic chip essentially.
And we have in there basically this 6,000-8,000 state machine.
And that does all sorts of multiplexing communications to the Pi.
And then we have some buffers basically
because the voltage-total translation is needed
between the CPLD and the Raspberry Pi,
and then the external IO logic.
So it was nice and simple boards.
We could get JLCPCB to build all these originally
until the CPLD kind of ran out of stock,
and then that became difficult.
And the logic that we wrote for the CPLD
is enough to run it for an Amiga,
but it doesn't include some of the state control lines
that other systems use
because we were targeting an Amiga 500 at the time.
So this supports a 500.
It supports most of an Amiga 2000, the 1000, and the CDTB.
And then...
Oh, doing this on my clicker,
clicker and of course, I've got my clicker connected.
So it used to Raspberry Pi 3A originally.
You could have used the Raspberry Pi 3B,
but you'd have to raise the header a bit
because otherwise your Ethernet board smash into the board.
And that's not good.
You can take off the ports on the 3B if you don't want them,
or you can extend the header.
Also, Pi 0 2W will work.
If you don't know, Pi 0 2W is basically a Pi 3,
but in a much more compressed format.
We ran Mishashi 6800...
I hope I'm pronouncing it right.
6800 CPU emulator, which...
It was good.
It's a pretty good 6800 emulator,
and then there's some kind of glue code to make it work,
but it was basically an off-the-shelf emulator.
And most of that software was done by a guy called Bjorn.
He's not part of the project anymore,
but he's got a lot of great early work on it.
Again, I'm clicking on my clicker.
So, performance-wise, you can see here...
This is what's called SysInfo.
It's kind of a stock benchmarking software for an Amiga.
And an Amiga 600, which is same as an Amiga 500, roughly.
The original Pi Storm ran about 23 times faster,
which is pretty good acceleration.
You're getting even faster than what was called 6800, 25 MHz.
So you're getting about 50 MHz, 030 processor,
kind of speed out of it, which is pretty good performance
for something that costs a lot less than even the CPU for an 030.
How I got into Pi Storm?
I was designing some new hardware for a Commodore Amiga,
and the other advantage of having Mishashi on Pi Storm
is the fact that you can, on the fly,
change the entire configuration of the Amiga.
I want a different OS ROM to boot into,
different RAM configuration, different hardware configurations.
All that can be changed on the fly.
I started providing patches, helped build a community.
This was probably in September.
We had 7,000 members on Discord and 3,000 on Facebook.
So it's grown to a pretty big community.
Things I've done, I'm going to skip over this,
but I did a lot of the early work regarding bug fixing
and things like that for the original Mishashi Pi Storm.
Then we released a version for the Amiga 600 and Amiga 2000.
They are essentially basically the same thing,
but Amiga 2000 has a coprocessor slot,
so it's much easier to just debug it in the slot.
At Amiga 600, you have to do this hacky thing
where it sits on top of the PLCC CPU,
and then there's a little kind of thing in there
to tell that CPU to go to sleep,
and then that basically is identical after that.
So EMU68 came along.
EMU68 is a bare metal emulator for Raspberry Pi,
for the 6800, so it's much, much faster.
You don't have to boot into Linux anymore.
This is what this boot is from.
It became an option for Pi Storm in 2021,
and now it's pretty much de facto standard,
and it uses JIT-based emulation instead of table-based.
So performance-wise, it got a bit faster.
1,490 times faster, and this is just on the Amiga 500.
Then the Pi Storm 32 came along.
This project was scrapped.
So essentially, it's the same kind of thing,
but for the 32-bit Amigas like this one.
But it became very hard to build,
and it required a Pi CM4, which is a Pi without all the ports
and everything.
You just got these big connectors on the bottom,
and it became difficult and expensive to build,
so we gave up on that,
and instead built the Pi Storm 32 Lite,
which is Lite because it doesn't have all the ports on it.
But basically, it's the same kind of thing.
And we have a nice big FPGA on there instead of CPLD.
FPGA, just much more logic,
but you have to kind of flash it every time you turn it on.
And that was basically the start of what became the 8-200.
This is kind of the peak of Pi Storm right now.
We released that about a year ago,
and it's still going strong.
Performance-wise, we're now talking 3,052 times faster
than an Amiga 500, which is not too bad.
Even the Amiga 1200, which this is,
it's 1,326 times faster.
And you can get faster still if you overclock it.
I'm not going to overclock mine.
I've got a little fan running underneath it as it is.
And inside this Amiga, you can see this is what mine looks like inside.
So you've got the Pi Storm in here.
And then I've got a little cable running out of the HDMI port to the back,
and that's what's running as projector right now.
And then I 3D printed a kind of assembly with a fan in the net
just to keep everything nice and cool.
Demo time.
So, John Clarmac said the Amiga is not powerful enough to run do.
At the time, to be fair, he was right.
The de facto Amiga at the time was kind of Amiga 500,
my Amiga 600.
If you wanted one that could run do,
it would cost you thousands and thousands,
much more than the PC would at the time.
But today...
It's later we were running do.
Yes.
But I can do a bit better.
AmiQuake.
And I haven't got sound hooked up, unfortunately,
but what I can do...
Time demo, demo one.
It's slow, I know.
So we just got to wait for all this demo to finish
just to get a nice kind of benchmark out of it.
And there we go.
So we get 93 frames a second out of Quake
through the RTG.
If I run this through the AGA graphic, the built-in graphics instead,
we still get about 45 frames a second.
So it's a bit faster than native,
which would be a few frames a second at best.
Oh, there it goes, that window.
So...
If I use...
CandlebyeStorm modified chip RAM.
So chip RAM is chip set RAM.
It's the RAM that the entire chip set...
Can the Amiga talks to each other with?
So you've got like the audio chip, the graphics chip, etc.
That is capped at 2 megabytes by design, by Commodore.
They were trying to move it to 8 meg for the Amiga 4000,
but it never really hit there.
No, it can't because we don't modify the chip set.
We don't override the chip set,
so we can't increase the RAM that the chip set uses.
So whilst we have 2 gig of fast RAM,
we don't have any chip RAM.
Can you emulate a power PC?
Probably you can, but it's going to be a lot of work,
and we don't want to do it.
So if anyone wants to put a PC emulator in there,
it will probably work.
Can you use PySom in other 6,000-8,000-based machines?
Yes.
So someone's done a port,
I forget the name, they've done a port for the Atari,
which basically had to pretty much rewrite the firmware
to make it work because Atari actually uses all the 6,000-8,000,
instead of the hacky thing Amiga did.
I love Amiga, but Atari did that bit a bit better.
And similar problems with the Apple.
So there are projects where they're trying to get this running.
It's not going...
It's not all the way there yet, but they're working on it.
CD32, sorry, 3,000, 4,000 versions.
In theory, the one in this machine should work on CD32,
but it doesn't, and we don't know why yet.
We haven't had time to figure it out.
It shouldn't take much modification to make it work.
4,000, 4,000 versions are going to require a lot more bus arbitration work,
so it's just time to do that.
And then the really cool thing we're working on right now
is Amiga Native Video Injection Device,
which we haven't got a name for yet,
but essentially what it does is it captures the...
It sits in various places in Amiga, depending on the model,
captures the digital video before it gets converted to analog,
pipes it through the camera port in the Pi,
and then you can have both native video and the RTG video
through the HDMI on the Pi.
So, if you want to sponsor the Pi Storm development,
Claude has a donate button on his Pi Storm 32 Like GitHub page.
I'm just checking it out.
Mikal, who develops the EMU68 project,
has a Patreon to sponsor the development of it.
And if you have any questions at all about the project,
feel free to come to me.
I'm the Linux Jedi everywhere, pretty much,
and I'll be happy to answer them.
And that is it.
So we have time for questions.
Any questions?
Thanks a lot for your talk.
So according to the SIS info output,
it's not emulating a plain 68000,
but a 030 or 60 or 040?
So, Mishashi, you can choose which one you want to emulate.
The 020 and 030 were the most stable doing that.
For EMU68, it currently pretends it's an 040,
but will support the instructions set for 060.
Okay, so that's only about the instructions,
and it does not emulate the MMU, I guess.
Yeah, it's just saying, hey, I'm an 040,
but it doesn't really matter.
It will run 060 code, fine.
Hi.
I'm actually Debian's M68K maintainer,
and I'm wondering if there's plans to add MMU support,
so you can go to the Linux kernel.
Other plans for the MMU?
That is a good question.
Mishashi, no, we did have it to begin with,
and it was broken.
So we didn't.
EMU68, I believe, somewhat supports MMU,
but needs some work to support it properly.
It's at the moment a direct one.
It's basically given a block of RAM in the pie,
and just said, yeah, just use that.
So we could probably emulate MMU.
That's too much trouble there.
Thank you for your talk.
Just a quick question about the MMU68 variant.
Yep.
Does you need to maintain a second OS on the SD card
without, or is it effectively a persistent thing once it's on?
No, it's a system that boots on by itself completely.
There's a whole set of tools
that are out through Pi Foundation to create your own bare metal OS,
essentially, so it's an OS in its own right.
The downside to that is every part of hardware,
we have to write new drivers from scratch
to be able to talk to the hardware,
which is why if you want to use Ethernet or Wi-Fi or anything like that,
it becomes a much harder task for us to do that on MMU68,
and that isn't there yet.
So there's no USB host support.
You can't use USB keyboard.
I'm sorry, sir, again?
There's no USB host support for the Pi.
Not on MMU68, no.
Right.
There is a mishashi that will actually support
keyboard and mouse through Pi's USB, yeah.
Still time for one or two quick questions?
Yeah, one in the back.
Hi, quick one, I think.
Did you have to do anything special
to cope with the bring up time for the Pi,
because it's a lot slower than the CPU?
That's a really good question, the bring up time for the Pi.
So the CPLD versions hold down the reset,
until the Pi's booted.
So basically the machine's basically,
I'm resetting constantly, kind of thing.
The version in this, the Pi's on 32,
it will boot the native CPU first,
because the FPGA hasn't been flashed.
Once the FPGA is flashed, then the reset gets held down.
And it's a very short time.
You're talking like two or three seconds.
Still time for one question?
That will be the last one.
So I guess the problem with the CPLD version is that
AMD has announced that they're going to stop making those.
So AMD, old as iLinks, do you use it?
Yes, but iLinks is AMD, right?
Yeah, no, we're not using...
They announced like the last Pi's or something from now.
We're not using iLinks ones, so I...
Ah!
No, so we're using...
Yeah, I think we're using...
No, so we're using...
The CPLD is Oterra Max...
Max2, yeah.
Also as Intel.
And then the FPGA is Trian...
Maybe...
Ethnics, Ethnics Trian.
Ah, okay, maybe...
I thought it was iLinks in the first picture, but maybe that's wrong.
Yeah.
Or maybe that's a prototype.
The other projects I maintain, yes, they are all screwed
in regards to iLinks, but...
Good, that's it.
Many, many thanks, Andrew.
No problem, thank you very much.